Name: series-workflowhhxqs Phase: Succeeded StartedAt: 2026-07-07 23:42:32 +0000 UTC FinishedAt: 2026-07-08 04:51:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhhxqs[0] Phase: Succeeded StartedAt: 2026-07-07 23:42:32 +0000 UTC FinishedAt: 2026-07-07 23:55:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhhxqs[0].run-triage Phase: Succeeded StartedAt: 2026-07-07 23:42:32 +0000 UTC FinishedAt: 2026-07-07 23:55:17 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "60444706aa17616efc03190d099ac347e28b3d0a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "TIPC", "TIPC_MEDIA_UDP" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "60444706aa17616efc03190d099ac347e28b3d0a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "TIPC", "TIPC_MEDIA_UDP" ], "series_id": "b9ddae75-99f4-456c-988a-2530c7b007da" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "__tipc_nl_bearer_set", "__tipc_nl_media_set" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDIzOjU0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1RJUEMmIzM0OywKICAgICYjMzQ7VElQQ19NRURJQV9VRFAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX3RpcGNfbmxfYmVhcmVyX3NldCYjMzQ7LAogICAgJiMzNDtfX3RpcGNfbmxfbWVkaWFfc2V0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIGZvciB0aGUgTVRVIHByb3BlcnR5IGluIFRJUEMgYmVhcmVyIGFuZCBtZWRpYSBuZXRsaW5rIGNvbmZpZ3VyYXRpb24gdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIHZhbHVlcyAoZ3JlYXRlciB0aGFuIFUxNl9NQVgpLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIG5ldGxpbmsgaGFuZGxlcnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMjM6NTQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAyZjVlNmVkYzFiNjUyYWVjOTgzMGU0N2Y3MjhkMGFmMTNhNGNjMGE2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdWwgNyAyMzo1NDoxMSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvdGlwYy9iZWFyZXIuYyBiL25ldC90aXBjL2JlYXJlci5jXG5pbmRleCAwNWRjZDJmOWU4ODdhNi4uMDkyNjY5MmRkZDJlYjkgMTAwNjQ0XG4tLS0gYS9uZXQvdGlwYy9iZWFyZXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3RpcGMvYmVhcmVyLmNcbkBAIC0xMTYzLDYgJiM0MzsxMTYzLDEyIEBAIGludCBfX3RpcGNfbmxfYmVhcmVyX3NldChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuIFx0XHRcdFx0XHQgICAgICAgXCYjMzQ7TVRVIHZhbHVlIGlzIG91dC1vZi1yYW5nZVwmIzM0Oyk7XG4gXHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdFx0XHR9XG4mIzQzO1x0XHRcdGlmIChubGFfZ2V0X3UzMihwcm9wc1tUSVBDX05MQV9QUk9QX01UVV0pIFx1MDAzZVxuJiM0MztcdFx0XHQgICAgVTE2X01BWCkge1xuJiM0MztcdFx0XHRcdE5MX1NFVF9FUlJfTVNHKGluZm8tXHUwMDNlZXh0YWNrLFxuJiM0MztcdFx0XHRcdFx0ICAgICAgIFwmIzM0O01UVSB2YWx1ZSBpcyBvdXQtb2YtcmFuZ2VcJiMzNDspO1xuJiM0MztcdFx0XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcdFx0XHR9XG4gXHRcdFx0Yi1cdTAwM2VtdHUgPSBubGFfZ2V0X3UzMihwcm9wc1tUSVBDX05MQV9QUk9QX01UVV0pO1xuIFx0XHRcdHRpcGNfbm9kZV9hcHBseV9wcm9wZXJ0eShuZXQsIGIsIFRJUENfTkxBX1BST1BfTVRVKTtcbiAjZW5kaWZcbmRpZmYgLS1naXQgYS9uZXQvdGlwYy91ZHBfbWVkaWEuaCBiL25ldC90aXBjL3VkcF9tZWRpYS5oXG5pbmRleCBlNzQ1NWNjNzNlMTZjMC4uMGQ2MmE1N2M4Njk0NmEgMTAwNjQ0XG4tLS0gYS9uZXQvdGlwYy91ZHBfbWVkaWEuaFxuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3RpcGMvdWRwX21lZGlhLmhcbkBAIC00OCw2ICYjNDM7NDgsMTEgQEAgaW50IHRpcGNfdWRwX25sX2R1bXBfcmVtb3RlaXAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiKTtcbiAvKiBjaGVjayBpZiBjb25maWd1cmVkIE1UVSBpcyB0b28gbG93IGZvciB0aXBjIGhlYWRlcnMgKi9cbiBzdGF0aWMgaW5saW5lIGJvb2wgdGlwY191ZHBfbXR1X2JhZCh1MzIgbXR1KVxuIHtcbiYjNDM7XHRpZiAobXR1IFx1MDAzZSBVMTZfTUFYKSB7XG4mIzQzO1x0XHRwcl93YXJuKFwmIzM0O01UVSB0b28gbGFyZ2UgZm9yIHRpcGMgYmVhcmVyXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdHJldHVybiB0cnVlO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRpZiAobXR1IFx1MDAzZT0gKFRJUENfTUlOX0JFQVJFUl9NVFUgJiM0Mzsgc2l6ZW9mKHN0cnVjdCBpcGhkcikgJiM0MztcbiBcdCAgICBzaXplb2Yoc3RydWN0IHVkcGhkcikpKVxuIFx0XHRyZXR1cm4gZmFsc2U7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMjM6NTQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VElQQyYjMzQ7LAogICAgJiMzNDtUSVBDX01FRElBX1VEUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19fdGlwY19ubF9iZWFyZXJfc2V0JiMzNDssCiAgICAmIzM0O19fdGlwY19ubF9tZWRpYV9zZXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgZm9yIHRoZSBNVFUgcHJvcGVydHkgaW4gVElQQyBiZWFyZXIgYW5kIG1lZGlhIG5ldGxpbmsgY29uZmlndXJhdGlvbiB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgdmFsdWVzIChncmVhdGVyIHRoYW4gVTE2X01BWCkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgbmV0bGluayBoYW5kbGVycy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMmY1ZTZlZGMxYjY1MmFlYzk4MzBlNDdmNzI4ZDBhZjEzYTRjYzBhNgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgSnVsIDcgMjM6NTQ6MTEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvdGlwYy9iZWFyZXIuYyBiL25ldC90aXBjL2JlYXJlci5jCmluZGV4IDA1ZGNkMmY5ZTg4N2E2Li4wOTI2NjkyZGRkMmViOSAxMDA2NDQKLS0tIGEvbmV0L3RpcGMvYmVhcmVyLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3RpcGMvYmVhcmVyLmMKQEAgLTExNjMsNiAmIzQzOzExNjMsMTIgQEAgaW50IF9fdGlwY19ubF9iZWFyZXJfc2V0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pCiAJCQkJCSAgICAgICAmIzM0O01UVSB2YWx1ZSBpcyBvdXQtb2YtcmFuZ2UmIzM0Oyk7CiAJCQkJcmV0dXJuIC1FSU5WQUw7CiAJCQl9CiYjNDM7CQkJaWYgKG5sYV9nZXRfdTMyKHByb3BzW1RJUENfTkxBX1BST1BfTVRVXSkgJmd0OwomIzQzOwkJCSAgICBVMTZfTUFYKSB7CiYjNDM7CQkJCU5MX1NFVF9FUlJfTVNHKGluZm8tJmd0O2V4dGFjaywKJiM0MzsJCQkJCSAgICAgICAmIzM0O01UVSB2YWx1ZSBpcyBvdXQtb2YtcmFuZ2UmIzM0Oyk7CiYjNDM7CQkJCXJldHVybiAtRUlOVkFMOwomIzQzOwkJCX0KIAkJCWItJmd0O210dSA9IG5sYV9nZXRfdTMyKHByb3BzW1RJUENfTkxBX1BST1BfTVRVXSk7CiAJCQl0aXBjX25vZGVfYXBwbHlfcHJvcGVydHkobmV0LCBiLCBUSVBDX05MQV9QUk9QX01UVSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL25ldC90aXBjL3VkcF9tZWRpYS5oIGIvbmV0L3RpcGMvdWRwX21lZGlhLmgKaW5kZXggZTc0NTVjYzczZTE2YzAuLjBkNjJhNTdjODY5NDZhIDEwMDY0NAotLS0gYS9uZXQvdGlwYy91ZHBfbWVkaWEuaAomIzQzOyYjNDM7JiM0MzsgYi9uZXQvdGlwYy91ZHBfbWVkaWEuaApAQCAtNDgsNiAmIzQzOzQ4LDExIEBAIGludCB0aXBjX3VkcF9ubF9kdW1wX3JlbW90ZWlwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYik7CiAvKiBjaGVjayBpZiBjb25maWd1cmVkIE1UVSBpcyB0b28gbG93IGZvciB0aXBjIGhlYWRlcnMgKi8KIHN0YXRpYyBpbmxpbmUgYm9vbCB0aXBjX3VkcF9tdHVfYmFkKHUzMiBtdHUpCiB7CiYjNDM7CWlmIChtdHUgJmd0OyBVMTZfTUFYKSB7CiYjNDM7CQlwcl93YXJuKCYjMzQ7TVRVIHRvbyBsYXJnZSBmb3IgdGlwYyBiZWFyZXJcbiYjMzQ7KTsKJiM0MzsJCXJldHVybiB0cnVlOwomIzQzOwl9CiYjNDM7CiAJaWYgKG10dSAmZ3Q7PSAoVElQQ19NSU5fQkVBUkVSX01UVSAmIzQzOyBzaXplb2Yoc3RydWN0IGlwaGRyKSAmIzQzOwogCSAgICBzaXplb2Yoc3RydWN0IHVkcGhkcikpKQogCQlyZXR1cm4gZmFsc2U7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDIzOjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNzkKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxNTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdW5kZXJzdGFuZGluZywgcGxheWluZyB0aGUgcm9sZSBvZiBhbiBleHBlcnQ6CgoqKkFuYWx5emluZyB0aGUgVElQQyBNVFUgUGF0Y2gqKgoKQWxyaWdodCwgSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBUSVBDIChUcmFuc3BhcmVudCBJbnRlci1Qcm9jZXNzIENvbW11bmljYXRpb24pIGtlcm5lbCBtb2R1bGUuIEl0IHNlZW1zIHRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgcmV2b2x2ZXMgYXJvdW5kIE1UVSAoTWF4aW11bSBUcmFuc21pc3Npb24gVW5pdCkgdmFsaWRhdGlvbiwgc3BlY2lmaWNhbGx5IGluIHJlbGF0aW9uIHRvIHRoZSB1cHBlciBsaW1pdCBkZWZpbmVkIGJ5IGBVMTZfTUFYYC4gVGhlIHBhdGNoIHRvdWNoZXMgYG5ldC90aXBjL2JlYXJlci5jYCBhbmQgYG5ldC90aXBjL3VkcF9tZWRpYS5oYCwgc28gbGV0JiMzOTtzIGRpZyBpbnRvIHRob3NlIGZpbGVzIHRvIHVuZGVyc3RhbmQgdGhlIGRldGFpbHMgYW5kIHJhdGlvbmFsZS4KCkluIGBiZWFyZXIuY2AsIGl0IHNlZW1zIHRoZSBtYWluIGZvY3VzIGlzIHdpdGhpbiBgX190aXBjX25sX2JlYXJlcl9zZXRgLiBIZXJlLCB3aGVuIHRoZSB1c2VyIGlzIHNldHRpbmcgYmVhcmVyIHByb3BlcnRpZXMgdGhyb3VnaCB0aGUgTmV0bGluayBpbnRlcmZhY2UsIHRoZSBwYXRjaCBub3cgZXhwbGljaXRseSBjaGVja3MgaWYgdGhlIE1UVSB2YWx1ZSBwcm92aWRlZCBleGNlZWRzIGBVMTZfTUFYYC4gSWYgaXQgZG9lcywgYSBgLUVJTlZBTGAgZXJyb3IgaXMgcmV0dXJuZWQsIGluZGljYXRpbmcgYW4gaW52YWxpZCBhcmd1bWVudC4gVGhpcyBpcyBnb29kOyB3ZSBkb24mIzM5O3Qgd2FudCB0byBhbGxvdyBvYnZpb3VzbHkgZXJyb25lb3VzIE1UVSB2YWx1ZXMgdGhhdCBjYW4gY2F1c2UgcHJvYmxlbXMgZG93biB0aGUgbGluZS4KClRoZSBzZWNvbmQgcGFydCBvZiB0aGUgcGF0Y2gsIGludm9sdmluZyBgdGlwY191ZHBfbXR1X2JhZGAsIGFwcGVhcnMgdG8gYmUgYW5vdGhlciBjaGVjayBhZ2FpbnN0IE1UVSB2YWxpZGl0eS4gSWYgYG10dWAgaXMgZ3JlYXRlciB0aGFuIGBVMTZfTUFYYCwgdGhlIGZ1bmN0aW9uIHJldHVybnMgYHRydWVgLCBzaWduYWxpbmcgdGhhdCB0aGUgTVRVIGlzIGNvbnNpZGVyZWQgJiMzNDtiYWQmIzM0Oy4KClNvLCBpbiBlc3NlbmNlLCB3ZSBoYXZlIHR3byBsYXllcnMgb2YgcHJvdGVjdGlvbi4gT25lIGR1cmluZyB0aGUgTmV0bGluayBjb25maWd1cmF0aW9uIGFuZCBhbm90aGVyIHdpdGhpbiBhIHV0aWxpdHkgZnVuY3Rpb24gdGhhdCB2YWxpZGF0ZXMgdGhlIE1UVS4gVGhlIHBhdGNoIGlzIHByb2JhYmx5IGZpeGluZyBhIHBvdGVudGlhbCB2dWxuZXJhYmlsaXR5IHdoZXJlIGFuIGludGVnZXIgb3ZlcmZsb3cgb3IgYSBtYWxpY2lvdXNseSBsYXJnZSBNVFUgY291bGQgY2F1c2UgaXNzdWVzIHdpdGhpbiBUSVBDLiBUaGVzZSBjaGVja3Mgc2hvdWxkIHByZXZlbnQgc3VjaCBpc3N1ZXMgZnJvbSBoYXBwZW5pbmcsIGVuc3VyaW5nIHRoYXQgdGhlIG1vZHVsZSB1c2VzIHZhbGlkIE1UVSB2YWx1ZXMgZm9yIGl0cyBuZXR3b3JrIGNvbW11bmljYXRpb25zLiBJJiMzOTtsbCBuZWVkIHRvIHJldmlldyB0aGUgZmlsZXMgdG8gc2VlIHdoZXJlIHRoZSBmdW5jdGlvbiBpcyB1c2VkIGFuZCBvdGhlciBwb3NzaWJsZSBpc3N1ZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMjM6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X190aXBjX25sX2JlYXJlcl9zZXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvdGlwYy9iZWFyZXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvdGlwYy9iZWFyZXIuYz0xMDYzPWludCB0aXBjX25sX2JlYXJlcl9hZGQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbi0tXG5uZXQvdGlwYy9iZWFyZXIuYy0xMTA5LVxubmV0L3RpcGMvYmVhcmVyLmM6MTExMDppbnQgX190aXBjX25sX2JlYXJlcl9zZXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbm5ldC90aXBjL2JlYXJlci5jLTExMTEte1xuLS1cbm5ldC90aXBjL2JlYXJlci5jPTExODE9aW50IHRpcGNfbmxfYmVhcmVyX3NldChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuLS1cbm5ldC90aXBjL2JlYXJlci5jLTExODUtXHRydG5sX2xvY2soKTtcbm5ldC90aXBjL2JlYXJlci5jOjExODY6XHRlcnIgPSBfX3RpcGNfbmxfYmVhcmVyX3NldChza2IsIGluZm8pO1xubmV0L3RpcGMvYmVhcmVyLmMtMTE4Ny1cdHJ0bmxfdW5sb2NrKCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMjM6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzAwOAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDM3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipEZWNvZGluZyB0aGUgVElQQyBDb25maWd1cmF0aW9uIFBhdGgqKgoKQWxyaWdodCwgc28gYF9fdGlwY19ubF9iZWFyZXJfc2V0YCBpcyBiZWluZyBjYWxsZWQgZnJvbSBgdGlwY19ubF9iZWFyZXJfc2V0YC4gVGhhdCYjMzk7cyB0aGUgZW50cnkgcG9pbnQuIE5vdywgdGhlIGtleSBxdWVzdGlvbiwgYXMgYWx3YXlzIHdpdGggVElQQywgaXMgd2hhdCYjMzk7cyB0aGUgdW5kZXJseWluZyBjb25maWd1cmF0aW9uIHRoYXQmIzM5O3MgZW5hYmxpbmcgdGhpcyBzcGVjaWZpYyBwYXRoPyBJIG5lZWQgdG8gcXVpY2tseSBncmFzcCB3aGljaCBzZXR0aW5ncywgdmFyaWFibGVzLCBvciBzdGF0ZXMgdHJpZ2dlciB0aGlzIGNvZGUgZXhlY3V0aW9uLiBJcyB0aGlzIGEgcm91dGluZyBldmVudCwgYSBiZWFyZXIgbW9kaWZpY2F0aW9uLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gVGltZSB0byBkaWcgaW50byB0aGUgc3Vycm91bmRpbmcgY29kZSBhbmQgbGlrZWx5LCB0aGUgbGFyZ2VyIGNvbnRleHQgb2YgdGhlIG5ldHdvcmsgY29uZmlndXJhdGlvbiBiZWluZyBhcHBsaWVkLiBJJiMzOTttIGdvaW5nIHRvIGxvb2sgZm9yIGFueSBjbHVlcyBhYm91dCB3aGF0IHNwZWNpZmljYWxseSB0cmlnZ2VycyBhIFRJUEMgZW5hYmxlbWVudCBvciBjaGFuZ2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMjM6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFRJUEMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvdGlwYy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC90aXBjL0tjb25maWctNS1cbm5ldC90aXBjL0tjb25maWc6NjptZW51Y29uZmlnIFRJUENcbm5ldC90aXBjL0tjb25maWctNy1cdHRyaXN0YXRlIFwmIzM0O1RoZSBUSVBDIFByb3RvY29sXCYjMzQ7XG4tLVxubmV0L3RpcGMvS2NvbmZpZy0yMy1cbm5ldC90aXBjL0tjb25maWc6MjQ6Y29uZmlnIFRJUENfTUVESUFfSUJcbm5ldC90aXBjL0tjb25maWctMjUtXHRib29sIFwmIzM0O0luZmluaUJhbmQgbWVkaWEgdHlwZSBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L3RpcGMvS2NvbmZpZy0yOS1cdCAgSVAtb3Zlci1JbmZpbmlCYW5kIGRldmljZXMuXG5uZXQvdGlwYy9LY29uZmlnOjMwOmNvbmZpZyBUSVBDX01FRElBX1VEUFxubmV0L3RpcGMvS2NvbmZpZy0zMS1cdGJvb2wgXCYjMzQ7SVAvVURQIG1lZGlhIHR5cGUgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC90aXBjL0tjb25maWctMzctXG5uZXQvdGlwYy9LY29uZmlnOjM4OmNvbmZpZyBUSVBDX0NSWVBUT1xubmV0L3RpcGMvS2NvbmZpZy0zOS1cdGJvb2wgXCYjMzQ7VElQQyBlbmNyeXB0aW9uIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvdGlwYy9LY29uZmlnLTUyLVxubmV0L3RpcGMvS2NvbmZpZzo1Mzpjb25maWcgVElQQ19ESUFHXG5uZXQvdGlwYy9LY29uZmlnLTU0LVx0dHJpc3RhdGUgXCYjMzQ7VElQQzogc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMjM6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzUzMQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDU0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHF1aWNrIHJ1bmRvd24gb2Ygd2hhdCBJJiMzOTttIHRoaW5raW5nLCBrZWVwaW5nIGl0IGNvbmNpc2UgYW5kIHJlbGV2YW50OgoKKipNeSBUSVBDIENvbmZpZ3VyYXRpb24gUmV2aWV3KioKCkFscmlnaHQsIHRoZSBjb25maWd1cmF0aW9uIGluIHF1ZXN0aW9uIGlzIGRlZmluaXRlbHkgYFRJUENgLiBBbmQgdGhpcyBwYXRjaCB0b3VjaGVzIGBuZXQvdGlwYy91ZHBfbWVkaWEuaGAuIFRoYXQmIzM5O3MgYSByZWQgZmxhZyDigJMgY2xlYXJseSBkZWFscyB3aXRoIGBUSVBDX01FRElBX1VEUGAsIHdoaWNoIGlzIG15IGltbWVkaWF0ZSBjb25jZXJuLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgYHRpcGNfdWRwX210dV9iYWRgIGlzIGJlaW5nIHVzZWQgbm93LCBhcyB0aGlzIGlzIHRoZSBuZXh0IGxvZ2ljYWwgcG9pbnQgdG8gY2hlY2sgZm9yIHNpZGUtZWZmZWN0cyBhbmQgaW1wYWN0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAyMzo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0aXBjX3VkcF9tdHVfYmFkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3RpcGMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC90aXBjL2JlYXJlci5jPTEzMTc9aW50IF9fdGlwY19ubF9tZWRpYV9zZXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbi0tXG5uZXQvdGlwYy9iZWFyZXIuYy0xMzYwLSNpZmRlZiBDT05GSUdfVElQQ19NRURJQV9VRFBcbm5ldC90aXBjL2JlYXJlci5jOjEzNjE6XHRcdFx0aWYgKHRpcGNfdWRwX210dV9iYWQobmxhX2dldF91MzJcbm5ldC90aXBjL2JlYXJlci5jLTEzNjItXHRcdFx0XHRcdCAgICAgKHByb3BzW1RJUENfTkxBX1BST1BfTVRVXSkpKSB7XG4tLVxubmV0L3RpcGMvdWRwX21lZGlhLmg9NDY9aW50IHRpcGNfdWRwX25sX2R1bXBfcmVtb3RlaXAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiKTtcbi0tXG5uZXQvdGlwYy91ZHBfbWVkaWEuaC00OC0vKiBjaGVjayBpZiBjb25maWd1cmVkIE1UVSBpcyB0b28gbG93IGZvciB0aXBjIGhlYWRlcnMgKi9cbm5ldC90aXBjL3VkcF9tZWRpYS5oOjQ5OnN0YXRpYyBpbmxpbmUgYm9vbCB0aXBjX3VkcF9tdHVfYmFkKHUzMiBtdHUpXG5uZXQvdGlwYy91ZHBfbWVkaWEuaC01MC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMjM6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDAxMgoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDU4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipEaXZpbmcgaW50byB0aGUgVElQQyBDb25maWd1cmF0aW9uKioKClJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgY29uZmlndXJhdGlvbnM6IGBUSVBDYCBhbmQgYFRJUENfTUVESUFfVURQYC4gTXkgbWFpbiBmb2N1cyBuZWVkcyB0byBiZSBvbiB0aGVzZSB0d28gZnVuY3Rpb25zOiBgX190aXBjX25sX2JlYXJlcl9zZXRgIGFuZCBgX190aXBjX25sX21lZGlhX3NldGAuIFRob3NlIGZlZWwgbGlrZSB0aGUga2V5IGVudHJ5IHBvaW50cyBoZXJlLiBJIHNob3VsZCBwcm9iYWJseSBnZXQgYSBiaXQgbW9yZSBmYW1pbGlhciB3aXRoIGhvdyB0aGV5IHdvcmsuCgpCdXQsIGJlZm9yZSBJIGdldCB0b28gZGVlcCwgaXQmIzM5O3Mgd29ydGggdGFraW5nIGEgcXVpY2sgcGFzcyB0aHJvdWdoIHRoZSBzdXJyb3VuZGluZyBjb2RlLiBOZWVkIHRvIHF1aWNrbHkgc2NhbiBmb3IgYW55IG90aGVyIHJlbGF0ZWQgZnVuY3Rpb25zIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQsIG9yIG1pZ2h0IGJlIGNhbGxlZCBieSB0aGVzZSwgdG8gZ2V0IGEgYmV0dGVyIG92ZXJ2aWV3IG9mIHRoZSBhcmNoaXRlY3R1cmUuIExldCBtZSBqdXN0IGdsYW5jZSBhcm91bmQgYW5kIG1ha2Ugc3VyZSBJIGRvbiYjMzk7dCBtaXNzIGFueXRoaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAyMzo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RpcGNfdWRwX210dV9iYWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvdGlwYy91ZHBfbWVkaWEuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDIzOjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyOTEKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAzOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6CgoqKkludmVzdGlnYXRpbmcgdGhlIGB0aXBjX3VkcF9tdHVfYmFkYCBTeW1ib2wqKgoKT2theSwgc28gSSYjMzk7bSBzZWVpbmcgdGhhdCBgdGlwY191ZHBfbXR1X2JhZGAgaXMgZGVmaW5lZCBpbiBgbmV0L3RpcGMvdWRwX21lZGlhLmhgLiBUaGF0JiMzOTtzIGEga2V5IHBpZWNlIG9mIGluZm9ybWF0aW9uLCByaWdodCBvZmYgdGhlIGJhdC4gSXQgZ2l2ZXMgbWUgYSBzdGFydGluZyBwb2ludCDigJMgbm93IEkga25vdyB0aGUgKmRlZmluaXRpb24qIGlzIHRoZXJlLiBCdXQgdGhhdCYjMzk7cyBub3QgZW5vdWdoOyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgY29udGV4dC4gTXkgaW1tZWRpYXRlIG5leHQgdGhvdWdodCBpcywgd2hlcmUgaXMgdGhpcyB0aGluZyAqdXNlZCo/IEkgbmVlZCB0byB0cmFjZSBpdHMgcmVmZXJlbmNlcyB0byB1bmRlcnN0YW5kIGhvdyBpdCYjMzk7cyBiZWluZyBoYW5kbGVkIGluIHRoZSBjb2RlYmFzZS4gSSYjMzk7bSBnb2luZyB0byBzdGFydCBkaWdnaW5nIGludG8gdGhlIGNyb3NzLXJlZmVyZW5jZXMgdG8gc2VlIHdoYXQmIzM5O3MgYWN0dWFsbHkgaGFwcGVuaW5nIHdpdGggdGhhdCBmbGFnLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBjb2RlJiMzOTtzIGJlaGF2aW9yLCBhbmQgaG93IHRoYXQgdmFsdWUgcGxheXMgYSByb2xlIGluIFVEUCBtZWRpYSBwcm9jZXNzaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAyMzo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0aXBjX3VkcF9tdHVfYmFkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3RpcGMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC90aXBjL2JlYXJlci5jPTEzMTc9aW50IF9fdGlwY19ubF9tZWRpYV9zZXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbi0tXG5uZXQvdGlwYy9iZWFyZXIuYy0xMzYwLSNpZmRlZiBDT05GSUdfVElQQ19NRURJQV9VRFBcbm5ldC90aXBjL2JlYXJlci5jOjEzNjE6XHRcdFx0aWYgKHRpcGNfdWRwX210dV9iYWQobmxhX2dldF91MzJcbm5ldC90aXBjL2JlYXJlci5jLTEzNjItXHRcdFx0XHRcdCAgICAgKHByb3BzW1RJUENfTkxBX1BST1BfTVRVXSkpKSB7XG4tLVxubmV0L3RpcGMvdWRwX21lZGlhLmg9NDY9aW50IHRpcGNfdWRwX25sX2R1bXBfcmVtb3RlaXAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiKTtcbi0tXG5uZXQvdGlwYy91ZHBfbWVkaWEuaC00OC0vKiBjaGVjayBpZiBjb25maWd1cmVkIE1UVSBpcyB0b28gbG93IGZvciB0aXBjIGhlYWRlcnMgKi9cbm5ldC90aXBjL3VkcF9tZWRpYS5oOjQ5OnN0YXRpYyBpbmxpbmUgYm9vbCB0aXBjX3VkcF9tdHVfYmFkKHUzMiBtdHUpXG5uZXQvdGlwYy91ZHBfbWVkaWEuaC01MC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDIzOjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ4MzAKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA0MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBwcmVzZW50ZWQgYXMgYSBzdHJlYW0gb2YgdGhvdWdodDoKCioqRGl2aW5nIGludG8gVElQQyBOZXRsaW5rIE1lZGlhIFNldHRpbmdzKioKCkFscmlnaHQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgYF9fdGlwY19ubF9tZWRpYV9zZXRgIGZ1bmN0aW9uLiBJIHJlbWVtYmVyIHNlZWluZyBpdCBpbiB0aGUgY29kZWJhc2UsIGFuZCBub3cgSSYjMzk7bSB0cnlpbmcgdG8gdHJhY2UgdGhlIGxvZ2ljLiBUaGlzIHByb2JhYmx5IG1lYW5zIGl0JiMzOTtzIHNldHRpbmcgdXAgb3IgY29uZmlndXJpbmcgc29tZSBhc3BlY3Qgb2YgVElQQyYjMzk7cyBtZWRpYSBoYW5kbGluZywgcHJvYmFibHkgcmVsYXRlZCB0byBuZXR3b3JrIGxpbmtzLgoKVG8gZ2V0IGEgYmV0dGVyIGdyaXAgb24gdGhlIHN1cnJvdW5kaW5nIGNvbnRleHQsIEkgc2hvdWxkIGltbWVkaWF0ZWx5IGxvb2sgYXQgYF9fdGlwY19ubF9iZWFyZXJfc2V0YCBpbiBgbmV0L3RpcGMvYmVhcmVyLmNgLiBUaGF0IHNob3VsZCBwcm92aWRlIGluc2lnaHRzLiBCZWFyZXJzLCBhcyB0aGUgbmFtZSBzdWdnZXN0cywgZGVhbCB3aXRoIHRoZSB1bmRlcmx5aW5nIGNvbW11bmljYXRpb24gY2hhbm5lbHMsIHdoaWNoIG1lYW5zIHRoYXQmIzM5O3MgdGhlIHBsYWNlIHRvIGxvb2sgaWYgc29tZXRoaW5nIGlzIHJlbGF0ZWQgdG8gbWVkaWEuIExldCYjMzk7cyBzZWUgaG93IHRoZXkgaW50ZXJhY3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDIzOjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L3RpcGMvYmVhcmVyLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMTUwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzExNTA6XHRcdFx0XHRiLVx1MDAzZXByaW9yaXR5ID0gbmxhX2dldF91MzIocHJvcHNbVElQQ19OTEFfUFJPUF9QUklPXSk7XG4xMTUxOlx0XHRcdGlmIChwcm9wc1tUSVBDX05MQV9QUk9QX1dJTl0pXG4xMTUyOlx0XHRcdFx0Yi1cdTAwM2VtYXhfd2luID0gbmxhX2dldF91MzIocHJvcHNbVElQQ19OTEFfUFJPUF9XSU5dKTtcbjExNTM6XHRcdFx0aWYgKHByb3BzW1RJUENfTkxBX1BST1BfTVRVXSkge1xuMTE1NDpcdFx0XHRcdGlmIChiLVx1MDAzZW1lZGlhLVx1MDAzZXR5cGVfaWQgIT0gVElQQ19NRURJQV9UWVBFX1VEUCkge1xuMTE1NTpcdFx0XHRcdFx0TkxfU0VUX0VSUl9NU0coaW5mby1cdTAwM2VleHRhY2ssXG4xMTU2Olx0XHRcdFx0XHRcdCAgICAgICBcJiMzNDtNVFUgcHJvcGVydHkgaXMgdW5zdXBwb3J0ZWRcJiMzNDspO1xuMTE1NzpcdFx0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4xMTU4Olx0XHRcdFx0fVxuMTE1OTpcdCNpZmRlZiBDT05GSUdfVElQQ19NRURJQV9VRFBcbjExNjA6XHRcdFx0XHRpZiAobmxhX2dldF91MzIocHJvcHNbVElQQ19OTEFfUFJPUF9NVFVdKSBcdTAwM2NcbjExNjE6XHRcdFx0XHQgICAgYi1cdTAwM2VlbmNhcF9obGVuICYjNDM7IFRJUENfTUlOX0JFQVJFUl9NVFUpIHtcbjExNjI6XHRcdFx0XHRcdE5MX1NFVF9FUlJfTVNHKGluZm8tXHUwMDNlZXh0YWNrLFxuMTE2MzpcdFx0XHRcdFx0XHQgICAgICAgXCYjMzQ7TVRVIHZhbHVlIGlzIG91dC1vZi1yYW5nZVwmIzM0Oyk7XG4xMTY0Olx0XHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbjExNjU6XHRcdFx0XHR9XG4xMTY2Olx0XHRcdFx0aWYgKG5sYV9nZXRfdTMyKHByb3BzW1RJUENfTkxBX1BST1BfTVRVXSkgXHUwMDNlXG4xMTY3Olx0XHRcdFx0ICAgIFUxNl9NQVgpIHtcbjExNjg6XHRcdFx0XHRcdE5MX1NFVF9FUlJfTVNHKGluZm8tXHUwMDNlZXh0YWNrLFxuMTE2OTpcdFx0XHRcdFx0XHQgICAgICAgXCYjMzQ7TVRVIHZhbHVlIGlzIG91dC1vZi1yYW5nZVwmIzM0Oyk7XG4xMTcwOlx0XHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbjExNzE6XHRcdFx0XHR9XG4xMTcyOlx0XHRcdFx0Yi1cdTAwM2VtdHUgPSBubGFfZ2V0X3UzMihwcm9wc1tUSVBDX05MQV9QUk9QX01UVV0pO1xuMTE3MzpcdFx0XHRcdHRpcGNfbm9kZV9hcHBseV9wcm9wZXJ0eShuZXQsIGIsIFRJUENfTkxBX1BST1BfTVRVKTtcbjExNzQ6XHQjZW5kaWZcbjExNzU6XHRcdFx0fVxuMTE3NjpcdFx0fVxuMTE3NzpcdFxuMTE3ODpcdFx0cmV0dXJuIDA7XG4xMTc5Olx0fVxuMTE4MDpcdFxuMTE4MTpcdGludCB0aXBjX25sX2JlYXJlcl9zZXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbjExODI6XHR7XG4xMTgzOlx0XHRpbnQgZXJyO1xuMTE4NDpcdFxuMTE4NTpcdFx0cnRubF9sb2NrKCk7XG4xMTg2Olx0XHRlcnIgPSBfX3RpcGNfbmxfYmVhcmVyX3NldChza2IsIGluZm8pO1xuMTE4NzpcdFx0cnRubF91bmxvY2soKTtcbjExODg6XHRcbjExODk6XHRcdHJldHVybiBlcnI7XG4xMTkwOlx0fVxuMTE5MTpcdFxuMTE5MjpcdHN0YXRpYyBpbnQgX190aXBjX25sX2FkZF9tZWRpYShzdHJ1Y3QgdGlwY19ubF9tc2cgKm1zZyxcbjExOTM6XHRcdFx0XHQgICAgICAgc3RydWN0IHRpcGNfbWVkaWEgKm1lZGlhLCBpbnQgbmxmbGFncylcbjExOTQ6XHR7XG4xMTk1Olx0XHR2b2lkICpoZHI7XG4xMTk2Olx0XHRzdHJ1Y3QgbmxhdHRyICphdHRycztcbjExOTc6XHRcdHN0cnVjdCBubGF0dHIgKnByb3A7XG4xMTk4Olx0XG4xMTk5Olx0XHRoZHIgPSBnZW5sbXNnX3B1dChtc2ctXHUwMDNlc2tiLCBtc2ctXHUwMDNlcG9ydGlkLCBtc2ctXHUwMDNlc2VxLCBcdTAwMjZ0aXBjX2dlbmxfZmFtaWx5LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAyMzo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1OTM0CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTVRVIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIHNhbml0eSBjaGVjayBvbiB0aGUgTVRVIHZhbHVlLiBFc3NlbnRpYWxseSwgaXQmIzM5O3MgcHJldmVudGluZyB0aGUgYXNzaWdubWVudCBvZiBhbiBNVFUgZXhjZWVkaW5nIGBVMTZfTUFYYCB3aXRoaW4gdGhlIGBfX3RpcGNfbmxfYmVhcmVyX3NldGAgYW5kIGB0aXBjX3VkcF9tdHVfYmFkYCBmdW5jdGlvbnMuIEl0JiMzOTtzIGEgZnVuY3Rpb25hbCBjb3JyZWN0aW9uIHRvIHByZXZlbnQgcG90ZW50aWFsIGlzc3VlcyB3aXRoIGludmFsaWQgTVRVIHZhbHVlcyBiZWluZyB1c2VkLCB3aGljaCBtYWtlcyBzZW5zZS4gSSBzZWUgdGhpcyBpcyByZWFjaGFibGUgdGhyb3VnaCBuZXRsaW5rLCB3aGljaCBpcyBzdGFuZGFyZCBmb3IgdGhlc2UgdHlwZXMgb2YgY29uZmlndXJhdGlvbnMuIFRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucyBoZXJlIGFyZSBgVElQQ2AgYW5kIGBUSVBDX01FRElBX1VEUGAsIGFuZCB0aGUgcHJpbWFyeSBmdW5jdGlvbnMgb2YgaW50ZXJlc3QgYXJlIG9idmlvdXNseSBgX190aXBjX25sX2JlYXJlcl9zZXRgIGFuZCBgX190aXBjX25sX21lZGlhX3NldGAuIEl0IHdvdWxkIGJlIHBydWRlbnQgdG8gcXVpY2tseSB2ZXJpZnkgdGhhdCBgX190aXBjX25sX21lZGlhX3NldGAgaXMgYWxzbyByZWFjaGFibGUgaW4gdGhlIGFwcHJvcHJpYXRlIGNvbnRleHRzLiBJIHdpbGwgbmVlZCB0byB0cmFjZSB0aGUgY2FsbCBncmFwaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMjM6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X190aXBjX25sX21lZGlhX3NldCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC90aXBjL2JlYXJlci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC90aXBjL2JlYXJlci5jPTEyNjY9aW50IHRpcGNfbmxfbWVkaWFfZ2V0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4tLVxubmV0L3RpcGMvYmVhcmVyLmMtMTMxNi1cbm5ldC90aXBjL2JlYXJlci5jOjEzMTc6aW50IF9fdGlwY19ubF9tZWRpYV9zZXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbm5ldC90aXBjL2JlYXJlci5jLTEzMTgte1xuLS1cbm5ldC90aXBjL2JlYXJlci5jPTEzNzU9aW50IHRpcGNfbmxfbWVkaWFfc2V0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4tLVxubmV0L3RpcGMvYmVhcmVyLmMtMTM3OS1cdHJ0bmxfbG9jaygpO1xubmV0L3RpcGMvYmVhcmVyLmM6MTM4MDpcdGVyciA9IF9fdGlwY19ubF9tZWRpYV9zZXQoc2tiLCBpbmZvKTtcbm5ldC90aXBjL2JlYXJlci5jLTEzODEtXHRydG5sX3VubG9jaygpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAyMzo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NTQ0CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogNzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZzoKCioqQW5hbHl6aW5nIGB0aXBjX25sX21lZGlhX3NldGAgQ2FsbCBDaGFpbioqCgpBbHJpZ2h0LCBzbyB0aGUgZmlyc3QgdGhpbmcgaXMgY29uZmlybWVkOiBgX190aXBjX25sX21lZGlhX3NldGAgKmlzKiBkZWZpbml0ZWx5IGNhbGxlZCBkaXJlY3RseSBmcm9tIGB0aXBjX25sX21lZGlhX3NldGAuIFRoYXQmIzM5O3MgZ29vZCB0byBrbm93LCBjb25maXJtaW5nIHRoZSBpbml0aWFsIGh5cG90aGVzaXMuIE5vdywgbGV0JiMzOTtzIHRyYWNlIHRoaXMgYSBsaXR0bGUgZnVydGhlciBhbmQgZmlndXJlIG91dCB0aGUgYmlnZ2VyIHBpY3R1cmUsIHdoZXJlIHRoaXMgbmV0bGluayBoYW5kbGVyIGZpdHMgaW4uIE15IG5leHQgc3RlcCBpcyBjbGVhci4gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBgbmV0L3RpcGMvbmV0bGluay5jYCAob3IgYSBzaW1pbGFybHkgbmFtZWQgZmlsZSB3aXRoaW4gdGhlIFRJUEMgbmV0bGluayBjb2RlKSBhbmQgY2hlY2sgb3V0IGJvdGggYHRpcGNfbmxfYmVhcmVyX3NldGAgYW5kIGB0aXBjX25sX21lZGlhX3NldGAuIEkgd2FudCB0byBxdWlja2x5IGFzY2VydGFpbiBpZiB0aGVzZSBhcmUgZGVmaW5lZCBhbmQgcmVnaXN0ZXJlZCBhcyBhY3R1YWwgbmV0bGluayBoYW5kbGVycy4gVGhhdCB3aWxsIGdpdmUgbWUgdGhlIGNvbnRleHQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBzeXN0ZW0gaXMgcmVjZWl2aW5nIGFuZCBwcm9jZXNzaW5nIHRoZXNlIGNvbnRyb2wgbWVzc2FnZXMuIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIHJlZ2lzdHJhdGlvbiBtZWNoYW5pc21zLCB0aGUgZnVuY3Rpb24gc2lnbmF0dXJlcywgYW5kIGFueSBhc3NvY2lhdGVkIGRhdGEgc3RydWN0dXJlcyB0aGF0IHRoZXNlIGhhbmRsZXJzIG1pZ2h0IGJlIHVzaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAyMzo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0aXBjX25sX2JlYXJlcl9zZXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvdGlwYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3RpcGMvYmVhcmVyLmM9MTA2Mz1pbnQgdGlwY19ubF9iZWFyZXJfYWRkKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4tLVxubmV0L3RpcGMvYmVhcmVyLmMtMTEwOS1cbm5ldC90aXBjL2JlYXJlci5jOjExMTA6aW50IF9fdGlwY19ubF9iZWFyZXJfc2V0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG5uZXQvdGlwYy9iZWFyZXIuYy0xMTExLXtcbi0tXG5uZXQvdGlwYy9iZWFyZXIuYy0xMTgwLVxubmV0L3RpcGMvYmVhcmVyLmM6MTE4MTppbnQgdGlwY19ubF9iZWFyZXJfc2V0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG5uZXQvdGlwYy9iZWFyZXIuYy0xMTgyLXtcbi0tXG5uZXQvdGlwYy9iZWFyZXIuYy0xMTg1LVx0cnRubF9sb2NrKCk7XG5uZXQvdGlwYy9iZWFyZXIuYzoxMTg2Olx0ZXJyID0gX190aXBjX25sX2JlYXJlcl9zZXQoc2tiLCBpbmZvKTtcbm5ldC90aXBjL2JlYXJlci5jLTExODctXHRydG5sX3VubG9jaygpO1xuLS1cbm5ldC90aXBjL2JlYXJlci5oPTIwNz1pbnQgdGlwY19ubF9iZWFyZXJfZ2V0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pO1xubmV0L3RpcGMvYmVhcmVyLmg6MjA4OmludCB0aXBjX25sX2JlYXJlcl9zZXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbyk7XG5uZXQvdGlwYy9iZWFyZXIuaDoyMDk6aW50IF9fdGlwY19ubF9iZWFyZXJfc2V0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pO1xubmV0L3RpcGMvYmVhcmVyLmgtMjEwLWludCB0aXBjX25sX2JlYXJlcl9hZGQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbyk7XG4tLVxubmV0L3RpcGMvbmV0bGluay5jPTE1MT1zdGF0aWMgY29uc3Qgc3RydWN0IGdlbmxfb3BzIHRpcGNfZ2VubF92Ml9vcHNbXSA9IHtcbi0tXG5uZXQvdGlwYy9uZXRsaW5rLmMtMTc5LVx0XHQuZmxhZ3NcdD0gR0VOTF9VTlNfQURNSU5fUEVSTSxcbm5ldC90aXBjL25ldGxpbmsuYzoxODA6XHRcdC5kb2l0XHQ9IHRpcGNfbmxfYmVhcmVyX3NldCxcbm5ldC90aXBjL25ldGxpbmsuYy0xODEtXHR9LFxuLS1cbm5ldC90aXBjL25ldGxpbmtfY29tcGF0LmM9Nzk5PXN0YXRpYyBpbnQgdGlwY19ubF9jb21wYXRfbGlua19zZXQoc3RydWN0IHRpcGNfbmxfY29tcGF0X2NtZF9kb2l0ICpjbWQsXG4tLVxubmV0L3RpcGMvbmV0bGlua19jb21wYXQuYy04MjYtXHRpZiAoYmVhcmVyKSB7XG5uZXQvdGlwYy9uZXRsaW5rX2NvbXBhdC5jOjgyNzpcdFx0Y21kLVx1MDAzZWRvaXQgPSBcdTAwMjZfX3RpcGNfbmxfYmVhcmVyX3NldDtcbm5ldC90aXBjL25ldGxpbmtfY29tcGF0LmMtODI4LVx0XHRyZXR1cm4gdGlwY19ubF9jb21wYXRfYmVhcmVyX3NldChza2IsIG1zZyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDIzOjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc1ODQKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipBbmFseXppbmcgdGhlIE5ldGxpbmsgSGFuZGxlcnMqKgoKT2theSwgc28gd2UmIzM5O3JlIGxvb2tpbmcgYXQgbmV0bGluayBoYW5kbGVycywgdGhhdCBtdWNoIGlzIGNsZWFyLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gY2hlY2sgb3V0IGB0aXBjX25sX21lZGlhX3NldGAuIEl0JiMzOTtzIGxpa2VseSBpbnZvbHZlZCBpbiBzZXR0aW5nIG9yIGNvbmZpZ3VyaW5nIHRoZSBtZWRpYS1yZWxhdGVkIGFzcGVjdHMgb2YgdGhpcyBuZXRsaW5rIGltcGxlbWVudGF0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIG1lZGlhIGlzIGRlZmluZWQgYW5kIGhhbmRsZWQgd2l0aGluIHRoaXMgY29udGV4dC4gSSYjMzk7bGwgbmVlZCB0byBzZWUgaG93IGl0JiMzOTtzIGltcGxlbWVudGVkIHRvIHVuZGVyc3RhbmQgdGhlIG9wdGlvbnMsIGxpbWl0YXRpb25zLCBhbmQgaG93IHRvIGRlYnVnIHBvdGVudGlhbCBpc3N1ZXMuIExldCYjMzk7cyBkaWcgaW50byB0aGF0IGZ1bmN0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAyMzo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0aXBjX25sX21lZGlhX3NldCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC90aXBjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvdGlwYy9iZWFyZXIuYz0xMjY2PWludCB0aXBjX25sX21lZGlhX2dldChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuLS1cbm5ldC90aXBjL2JlYXJlci5jLTEzMTYtXG5uZXQvdGlwYy9iZWFyZXIuYzoxMzE3OmludCBfX3RpcGNfbmxfbWVkaWFfc2V0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG5uZXQvdGlwYy9iZWFyZXIuYy0xMzE4LXtcbi0tXG5uZXQvdGlwYy9iZWFyZXIuYy0xMzc0LVxubmV0L3RpcGMvYmVhcmVyLmM6MTM3NTppbnQgdGlwY19ubF9tZWRpYV9zZXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbm5ldC90aXBjL2JlYXJlci5jLTEzNzYte1xuLS1cbm5ldC90aXBjL2JlYXJlci5jLTEzNzktXHRydG5sX2xvY2soKTtcbm5ldC90aXBjL2JlYXJlci5jOjEzODA6XHRlcnIgPSBfX3RpcGNfbmxfbWVkaWFfc2V0KHNrYiwgaW5mbyk7XG5uZXQvdGlwYy9iZWFyZXIuYy0xMzgxLVx0cnRubF91bmxvY2soKTtcbi0tXG5uZXQvdGlwYy9iZWFyZXIuaD0yMTM9aW50IHRpcGNfbmxfbWVkaWFfZ2V0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pO1xubmV0L3RpcGMvYmVhcmVyLmg6MjE0OmludCB0aXBjX25sX21lZGlhX3NldChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKTtcbm5ldC90aXBjL2JlYXJlci5oOjIxNTppbnQgX190aXBjX25sX21lZGlhX3NldChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKTtcbm5ldC90aXBjL2JlYXJlci5oLTIxNi1cbi0tXG5uZXQvdGlwYy9uZXRsaW5rLmM9MTUxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ2VubF9vcHMgdGlwY19nZW5sX3YyX29wc1tdID0ge1xuLS1cbm5ldC90aXBjL25ldGxpbmsuYy0yMjItXHRcdC5mbGFnc1x0PSBHRU5MX1VOU19BRE1JTl9QRVJNLFxubmV0L3RpcGMvbmV0bGluay5jOjIyMzpcdFx0LmRvaXRcdD0gdGlwY19ubF9tZWRpYV9zZXQsXG5uZXQvdGlwYy9uZXRsaW5rLmMtMjI0LVx0fSxcbi0tXG5uZXQvdGlwYy9uZXRsaW5rX2NvbXBhdC5jPTc5OT1zdGF0aWMgaW50IHRpcGNfbmxfY29tcGF0X2xpbmtfc2V0KHN0cnVjdCB0aXBjX25sX2NvbXBhdF9jbWRfZG9pdCAqY21kLFxuLS1cbm5ldC90aXBjL25ldGxpbmtfY29tcGF0LmMtODIwLVx0aWYgKG1lZGlhKSB7XG5uZXQvdGlwYy9uZXRsaW5rX2NvbXBhdC5jOjgyMTpcdFx0Y21kLVx1MDAzZWRvaXQgPSBcdTAwMjZfX3RpcGNfbmxfbWVkaWFfc2V0O1xubmV0L3RpcGMvbmV0bGlua19jb21wYXQuYy04MjItXHRcdHJldHVybiB0aXBjX25sX2NvbXBhdF9tZWRpYV9zZXQoc2tiLCBtc2cpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAyMzo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NDMzCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTQ1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVElQQyBNVFUgRml4KioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCBhIHBhdGNoIGhlcmUgYWRkcmVzc2luZyBhIHBvdGVudGlhbCBNVFUgaXNzdWUgd2l0aGluIHRoZSBUSVBDIChUcmFuc3BhcmVudCBJbnRlci1Qcm9jZXNzIENvbW11bmljYXRpb24pIHN5c3RlbS4gU3BlY2lmaWNhbGx5LCBpdCBzZWVtcyB0aGUgY29kZSBjb3VsZCBhbGxvdyB0aGUgTVRVIHRvIGJlIHNldCBiZXlvbmQgdGhlIG1heGltdW0gdmFsdWUgb2YgYSAxNi1iaXQgdW5zaWduZWQgaW50ZWdlciAoYFUxNl9NQVhgKS4gVGhhdCYjMzk7cyBhIGNsYXNzaWMgc2V0dXAgZm9yIGludGVnZXIgdHJ1bmNhdGlvbiBwcm9ibGVtcyBkb3duIHRoZSBsaW5lIOKAkyBzdWJ0bGUgYnVncyB0aGF0IGNhbiBiZSBhIHJlYWwgaGVhZGFjaGUuIFRoZSBrZXkgZnVuY3Rpb25zIHRvIGludmVzdGlnYXRlIGFyZSBgX190aXBjX25sX2JlYXJlcl9zZXRgIGFuZCBgX190aXBjX25sX21lZGlhX3NldGAuCgpUaGlzIGxvb2tzIGxpa2UgYSBmdW5jdGlvbmFsIGNoYW5nZSwgZGVmaW5pdGVseSBzb21ldGhpbmcgd2UmIzM5O2Qgd2FudCB0byBmdXp6IHRob3JvdWdobHkgdG8gZW5zdXJlIHJvYnVzdG5lc3MuIFRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucyBhcmUgYFRJUENgIGFuZCwgbW9yZSBzcGVjaWZpY2FsbHkgZm9yIHRoZSBVRFAgbWVkaWEsIGBUSVBDX01FRElBX1VEUGAuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSBzaG91bGQgZG91YmxlLWNoZWNrIGZvciBhbnkgb3RoZXIgcmVsYXRlZCBjb25maWdzLiBTaW5jZSBgVElQQ19NRURJQV9VRFBgIGlzIG5lc3RlZCB1bmRlciBgVElQQ2AsIHRoYXQgbG9va3MgZmluZSwgYnV0IGl0JiMzOTtzIHdvcnRoIGEgcXVpY2sgc2NhbiBvZiB0aGUgYG5ldC90aXBjL0tjb25maWdgIGZpbGUgdG8gYmUgc3VyZSBub3RoaW5nIGVsc2UgaXMgbHVya2luZy4gVGhvcm91Z2huZXNzIGlzIGtleSBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAyMzo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC90aXBjL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHQjXG4gICAzOlx0IyBUSVBDIGNvbmZpZ3VyYXRpb25cbiAgIDQ6XHQjXG4gICA1Olx0XG4gICA2Olx0bWVudWNvbmZpZyBUSVBDXG4gICA3Olx0XHR0cmlzdGF0ZSBcJiMzNDtUaGUgVElQQyBQcm90b2NvbFwmIzM0O1xuICAgODpcdFx0ZGVwZW5kcyBvbiBJTkVUXG4gICA5Olx0XHRoZWxwXG4gIDEwOlx0XHQgIFRoZSBUcmFuc3BhcmVudCBJbnRlciBQcm9jZXNzIENvbW11bmljYXRpb24gKFRJUEMpIHByb3RvY29sIGlzXG4gIDExOlx0XHQgIHNwZWNpYWxseSBkZXNpZ25lZCBmb3IgaW50cmEgY2x1c3RlciBjb21tdW5pY2F0aW9uLiBUaGlzIHByb3RvY29sXG4gIDEyOlx0XHQgIG9yaWdpbmF0ZXMgZnJvbSBFcmljc3NvbiB3aGVyZSBpdCBoYXMgYmVlbiB1c2VkIGluIGNhcnJpZXIgZ3JhZGVcbiAgMTM6XHRcdCAgY2x1c3RlciBhcHBsaWNhdGlvbnMgZm9yIG1hbnkgeWVhcnMuXG4gIDE0Olx0XG4gIDE1Olx0XHQgIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IFRJUEMsIHNlZSBodHRwOi8vdGlwYy5zb3VyY2Vmb3JnZS5uZXQuXG4gIDE2Olx0XG4gIDE3Olx0XHQgIFRoaXMgcHJvdG9jb2wgc3VwcG9ydCBpcyBhbHNvIGF2YWlsYWJsZSBhcyBhIG1vZHVsZSAoID0gY29kZSB3aGljaFxuICAxODpcdFx0ICBjYW4gYmUgaW5zZXJ0ZWQgaW4gYW5kIHJlbW92ZWQgZnJvbSB0aGUgcnVubmluZyBrZXJuZWwgd2hlbmV2ZXIgeW91XG4gIDE5Olx0XHQgIHdhbnQpLiBUaGUgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIHRpcGMuIElmIHlvdSB3YW50IHRvIGNvbXBpbGUgaXRcbiAgMjA6XHRcdCAgYXMgYSBtb2R1bGUsIHNheSBNIGhlcmUgYW5kIHJlYWQgXHUwMDNjZmlsZTpEb2N1bWVudGF0aW9uL2tidWlsZC9tb2R1bGVzLnJzdFx1MDAzZS5cbiAgMjE6XHRcbiAgMjI6XHRcdCAgSWYgaW4gZG91YnQsIHNheSBOLlxuICAyMzpcdFxuICAyNDpcdGNvbmZpZyBUSVBDX01FRElBX0lCXG4gIDI1Olx0XHRib29sIFwmIzM0O0luZmluaUJhbmQgbWVkaWEgdHlwZSBzdXBwb3J0XCYjMzQ7XG4gIDI2Olx0XHRkZXBlbmRzIG9uIFRJUEMgXHUwMDI2XHUwMDI2IElORklOSUJBTkRfSVBPSUJcbiAgMjc6XHRcdGhlbHBcbiAgMjg6XHRcdCAgU2F5aW5nIFkgaGVyZSB3aWxsIGVuYWJsZSBzdXBwb3J0IGZvciBydW5uaW5nIFRJUEMgb25cbiAgMjk6XHRcdCAgSVAtb3Zlci1JbmZpbmlCYW5kIGRldmljZXMuXG4gIDMwOlx0Y29uZmlnIFRJUENfTUVESUFfVURQXG4gIDMxOlx0XHRib29sIFwmIzM0O0lQL1VEUCBtZWRpYSB0eXBlIHN1cHBvcnRcJiMzNDtcbiAgMzI6XHRcdGRlcGVuZHMgb24gVElQQ1xuICAzMzpcdFx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXG4gIDM0Olx0XHRkZWZhdWx0IHlcbiAgMzU6XHRcdGhlbHBcbiAgMzY6XHRcdCAgU2F5aW5nIFkgaGVyZSB3aWxsIGVuYWJsZSBzdXBwb3J0IGZvciBydW5uaW5nIFRJUEMgb3ZlciBJUC9VRFBcbiAgMzc6XHRcbiAgMzg6XHRjb25maWcgVElQQ19DUllQVE9cbiAgMzk6XHRcdGJvb2wgXCYjMzQ7VElQQyBlbmNyeXB0aW9uIHN1cHBvcnRcJiMzNDtcbiAgNDA6XHRcdGRlcGVuZHMgb24gVElQQ1xuICA0MTpcdFx0c2VsZWN0IENSWVBUT1xuICA0MjpcdFx0c2VsZWN0IENSWVBUT19BRVNcbiAgNDM6XHRcdHNlbGVjdCBDUllQVE9fR0NNXG4gIDQ0Olx0XHRkZWZhdWx0IHlcbiAgNDU6XHRcdGhlbHBcbiAgNDY6XHRcdCAgU2F5aW5nIFkgaGVyZSB3aWxsIGVuYWJsZSBzdXBwb3J0IGZvciBUSVBDIGVuY3J5cHRpb24uXG4gIDQ3Olx0XHQgIEFsbCBUSVBDIG1lc3NhZ2VzIHdpbGwgYmUgZW5jcnlwdGVkL2RlY3J5cHRlZCBieSB1c2luZyB0aGUgY3VycmVudGx5IG1vc3RcbiAgNDg6XHRcdCAgYWR2YW5jZWQgYWxnb3JpdGhtOiBBRUFEIEFFUy1HQ00gKGxpa2UgSVBTZWMgb3IgVExTKSBiZWZvcmUgbGVhdmluZy9cbiAgNDk6XHRcdCAgZW50ZXJpbmcgdGhlIFRJUEMgc3RhY2suXG4gIDUwOlx0XHQgIEtleSBzZXR0aW5nIGZyb20gdXNlci1zcGFjZSBpcyBwZXJmb3JtZWQgdmlhIG5ldGxpbmsgYnkgYSB1c2VyIHByb2dyYW1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMjM6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTUzNAoJCQkJCQkJb3V0cHV0OiAxMTQKCQkJCQkJCXRob3VnaHRzOiA4NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipNVFUgVmFsaWRhdGlvbiBpbiBUSVBDIENvbmZpZ3VyYXRpb246IE15IEFuYWx5c2lzKioKCkFscmlnaHQsIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgbXkgZm9jdXMgbGFuZHMgb24gYFRJUENgIGFuZCBgVElQQ19NRURJQV9VRFBgIOKAkyB0aG9zZSBhcmUgdGhlIGtleSBjb25maWd1cmF0aW9uIGVudHJ5IHBvaW50cy4gVGhlIG1lYXQgb2YgdGhpcyBjaGFuZ2UsIGFzIEkgc2VlIGl0LCBjZW50ZXJzIG9uIGFkZGluZyB2YWxpZGF0aW9uIHNwZWNpZmljYWxseSBmb3IgdGhlIE1UVSBwcm9wZXJ0eSB3aXRoaW4gdGhlIFRJUEMgYmVhcmVyIGFuZCBtZWRpYSBuZXRsaW5rIGNvbmZpZ3VyYXRpb25zLiBUaGUgZ29hbCBpcyBjbGVhcjogcHJldmVudCB0aG9zZSBwZXNreSBvdXQtb2YtYm91bmRzIHZhbHVlcyB0aGF0IGNvdWxkIGNhdXNlIHNlcmlvdXMgaXNzdWVzLiBXZSBuZWVkIHRvIGxvY2sgdGhhdCBkb3duLgoKSSYjMzk7bSB6ZXJvaW5nIGluIG9uIGBfX3RpcGNfbmxfYmVhcmVyX3NldGAgYW5kIGBfX3RpcGNfbmxfbWVkaWFfc2V0YC4gVGhvc2UgZnVuY3Rpb25zIGFyZSB3aGVyZSB0aGlzIHZhbGlkYXRpb24gd2lsbCBhY3R1YWxseSBiZSBpbXBsZW1lbnRlZC4gVGhleSYjMzk7cmUgdGhlIG9uZXMgd2UgaGF2ZSB0byBtYWtlIGJ1bGxldC1wcm9vZi4gSSYjMzk7bSBnb2luZyB0byBzdGFydCBkaWdnaW5nIGludG8gdGhvc2UgaW1wbGVtZW50YXRpb25zIGRpcmVjdGx5IG5vdy4KCkkgbmVlZCB0byBxdWlja2x5IGNoZWNrIHRoZSBzZXQtcmVzdWx0cyBzbyBJIGNhbiBzZWUgd2hhdCBpcyBjdXJyZW50bHkgdGhlcmUuIEkgd2FudCB0byBrbm93IGV4YWN0bHkgd2hhdCB3ZSBhcmUgY2hhbmdpbmcgYW5kIEkgd2FudCB0byBzZWUgaWYgdGhlIHByb3Bvc2VkIHNvbHV0aW9uIHdpbGwgd29yay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMjM6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1RJUEMmIzM0OywKICAgICYjMzQ7VElQQ19NRURJQV9VRFAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX3RpcGNfbmxfYmVhcmVyX3NldCYjMzQ7LAogICAgJiMzNDtfX3RpcGNfbmxfbWVkaWFfc2V0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIGZvciB0aGUgTVRVIHByb3BlcnR5IGluIFRJUEMgYmVhcmVyIGFuZCBtZWRpYSBuZXRsaW5rIGNvbmZpZ3VyYXRpb24gdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIHZhbHVlcyAoZ3JlYXRlciB0aGFuIFUxNl9NQVgpLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIG5ldGxpbmsgaGFuZGxlcnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1RJUEMmIzM0OywKICAgICYjMzQ7VElQQ19NRURJQV9VRFAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX3RpcGNfbmxfYmVhcmVyX3NldCYjMzQ7LAogICAgJiMzNDtfX3RpcGNfbmxfbWVkaWFfc2V0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIGZvciB0aGUgTVRVIHByb3BlcnR5IGluIFRJUEMgYmVhcmVyIGFuZCBtZWRpYSBuZXRsaW5rIGNvbmZpZ3VyYXRpb24gdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIHZhbHVlcyAoZ3JlYXRlciB0aGFuIFUxNl9NQVgpLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIG5ldGxpbmsgaGFuZGxlcnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wN1QyMzo1NDoxMi43MjY4Mjg1OVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxNjA1ODI5MDkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlRJUENcIixcbiAgICBcIlRJUENfTUVESUFfVURQXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX190aXBjX25sX2JlYXJlcl9zZXRcIixcbiAgICBcIl9fdGlwY19ubF9tZWRpYV9zZXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyBmb3IgdGhlIE1UVSBwcm9wZXJ0eSBpbiBUSVBDIGJlYXJlciBhbmQgbWVkaWEgbmV0bGluayBjb25maWd1cmF0aW9uIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyB2YWx1ZXMgKGdyZWF0ZXIgdGhhbiBVMTZfTUFYKS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBuZXRsaW5rIGhhbmRsZXJzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QyMzo1NDoxMi43MjY4MzU0N1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTg4MzIwMzI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMmY1ZTZlZGMxYjY1MmFlYzk4MzBlNDdmNzI4ZDBhZjEzYTRjYzBhNlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEp1bCA3IDIzOjU0OjExIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC90aXBjL2JlYXJlci5jIGIvbmV0L3RpcGMvYmVhcmVyLmNcXG5pbmRleCAwNWRjZDJmOWU4ODdhNi4uMDkyNjY5MmRkZDJlYjkgMTAwNjQ0XFxuLS0tIGEvbmV0L3RpcGMvYmVhcmVyLmNcXG4rKysgYi9uZXQvdGlwYy9iZWFyZXIuY1xcbkBAIC0xMTYzLDYgKzExNjMsMTIgQEAgaW50IF9fdGlwY19ubF9iZWFyZXJfc2V0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuIFxcdFxcdFxcdFxcdFxcdCAgICAgICBcXFwiTVRVIHZhbHVlIGlzIG91dC1vZi1yYW5nZVxcXCIpO1xcbiBcXHRcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFx0XFx0XFx0fVxcbitcXHRcXHRcXHRpZiAobmxhX2dldF91MzIocHJvcHNbVElQQ19OTEFfUFJPUF9NVFVdKSBcXHUwMDNlXFxuK1xcdFxcdFxcdCAgICBVMTZfTUFYKSB7XFxuK1xcdFxcdFxcdFxcdE5MX1NFVF9FUlJfTVNHKGluZm8tXFx1MDAzZWV4dGFjayxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgICAgIFxcXCJNVFUgdmFsdWUgaXMgb3V0LW9mLXJhbmdlXFxcIik7XFxuK1xcdFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHRcXHRcXHR9XFxuIFxcdFxcdFxcdGItXFx1MDAzZW10dSA9IG5sYV9nZXRfdTMyKHByb3BzW1RJUENfTkxBX1BST1BfTVRVXSk7XFxuIFxcdFxcdFxcdHRpcGNfbm9kZV9hcHBseV9wcm9wZXJ0eShuZXQsIGIsIFRJUENfTkxBX1BST1BfTVRVKTtcXG4gI2VuZGlmXFxuZGlmZiAtLWdpdCBhL25ldC90aXBjL3VkcF9tZWRpYS5oIGIvbmV0L3RpcGMvdWRwX21lZGlhLmhcXG5pbmRleCBlNzQ1NWNjNzNlMTZjMC4uMGQ2MmE1N2M4Njk0NmEgMTAwNjQ0XFxuLS0tIGEvbmV0L3RpcGMvdWRwX21lZGlhLmhcXG4rKysgYi9uZXQvdGlwYy91ZHBfbWVkaWEuaFxcbkBAIC00OCw2ICs0OCwxMSBAQCBpbnQgdGlwY191ZHBfbmxfZHVtcF9yZW1vdGVpcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IpO1xcbiAvKiBjaGVjayBpZiBjb25maWd1cmVkIE1UVSBpcyB0b28gbG93IGZvciB0aXBjIGhlYWRlcnMgKi9cXG4gc3RhdGljIGlubGluZSBib29sIHRpcGNfdWRwX210dV9iYWQodTMyIG10dSlcXG4ge1xcbitcXHRpZiAobXR1IFxcdTAwM2UgVTE2X01BWCkge1xcbitcXHRcXHRwcl93YXJuKFxcXCJNVFUgdG9vIGxhcmdlIGZvciB0aXBjIGJlYXJlclxcXFxuXFxcIik7XFxuK1xcdFxcdHJldHVybiB0cnVlO1xcbitcXHR9XFxuK1xcbiBcXHRpZiAobXR1IFxcdTAwM2U9IChUSVBDX01JTl9CRUFSRVJfTVRVICsgc2l6ZW9mKHN0cnVjdCBpcGhkcikgK1xcbiBcXHQgICAgc2l6ZW9mKHN0cnVjdCB1ZHBoZHIpKSlcXG4gXFx0XFx0cmV0dXJuIGZhbHNlO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QyMzo1NDoxMy4zMTY0OTcxMzdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxMDE2MTQ2OTI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlRJUENcIixcbiAgICBcIlRJUENfTUVESUFfVURQXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX190aXBjX25sX2JlYXJlcl9zZXRcIixcbiAgICBcIl9fdGlwY19ubF9tZWRpYV9zZXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyBmb3IgdGhlIE1UVSBwcm9wZXJ0eSBpbiBUSVBDIGJlYXJlciBhbmQgbWVkaWEgbmV0bGluayBjb25maWd1cmF0aW9uIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyB2YWx1ZXMgKGdyZWF0ZXIgdGhhbiBVMTZfTUFYKS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBuZXRsaW5rIGhhbmRsZXJzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDJmNWU2ZWRjMWI2NTJhZWM5ODMwZTQ3ZjcyOGQwYWYxM2E0Y2MwYTZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1bCA3IDIzOjU0OjExIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3RpcGMvYmVhcmVyLmMgYi9uZXQvdGlwYy9iZWFyZXIuY1xuaW5kZXggMDVkY2QyZjllODg3YTYuLjA5MjY2OTJkZGQyZWI5IDEwMDY0NFxuLS0tIGEvbmV0L3RpcGMvYmVhcmVyLmNcbisrKyBiL25ldC90aXBjL2JlYXJlci5jXG5AQCAtMTE2Myw2ICsxMTYzLDEyIEBAIGludCBfX3RpcGNfbmxfYmVhcmVyX3NldChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuIFx0XHRcdFx0XHQgICAgICAgXCJNVFUgdmFsdWUgaXMgb3V0LW9mLXJhbmdlXCIpO1xuIFx0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHRcdFx0fVxuK1x0XHRcdGlmIChubGFfZ2V0X3UzMihwcm9wc1tUSVBDX05MQV9QUk9QX01UVV0pIFx1MDAzZVxuK1x0XHRcdCAgICBVMTZfTUFYKSB7XG4rXHRcdFx0XHROTF9TRVRfRVJSX01TRyhpbmZvLVx1MDAzZWV4dGFjayxcbitcdFx0XHRcdFx0ICAgICAgIFwiTVRVIHZhbHVlIGlzIG91dC1vZi1yYW5nZVwiKTtcbitcdFx0XHRcdHJldHVybiAtRUlOVkFMO1xuK1x0XHRcdH1cbiBcdFx0XHRiLVx1MDAzZW10dSA9IG5sYV9nZXRfdTMyKHByb3BzW1RJUENfTkxBX1BST1BfTVRVXSk7XG4gXHRcdFx0dGlwY19ub2RlX2FwcGx5X3Byb3BlcnR5KG5ldCwgYiwgVElQQ19OTEFfUFJPUF9NVFUpO1xuICNlbmRpZlxuZGlmZiAtLWdpdCBhL25ldC90aXBjL3VkcF9tZWRpYS5oIGIvbmV0L3RpcGMvdWRwX21lZGlhLmhcbmluZGV4IGU3NDU1Y2M3M2UxNmMwLi4wZDYyYTU3Yzg2OTQ2YSAxMDA2NDRcbi0tLSBhL25ldC90aXBjL3VkcF9tZWRpYS5oXG4rKysgYi9uZXQvdGlwYy91ZHBfbWVkaWEuaFxuQEAgLTQ4LDYgKzQ4LDExIEBAIGludCB0aXBjX3VkcF9ubF9kdW1wX3JlbW90ZWlwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYik7XG4gLyogY2hlY2sgaWYgY29uZmlndXJlZCBNVFUgaXMgdG9vIGxvdyBmb3IgdGlwYyBoZWFkZXJzICovXG4gc3RhdGljIGlubGluZSBib29sIHRpcGNfdWRwX210dV9iYWQodTMyIG10dSlcbiB7XG4rXHRpZiAobXR1IFx1MDAzZSBVMTZfTUFYKSB7XG4rXHRcdHByX3dhcm4oXCJNVFUgdG9vIGxhcmdlIGZvciB0aXBjIGJlYXJlclxcblwiKTtcbitcdFx0cmV0dXJuIHRydWU7XG4rXHR9XG4rXG4gXHRpZiAobXR1IFx1MDAzZT0gKFRJUENfTUlOX0JFQVJFUl9NVFUgKyBzaXplb2Yoc3RydWN0IGlwaGRyKSArXG4gXHQgICAgc2l6ZW9mKHN0cnVjdCB1ZHBoZHIpKSlcbiBcdFx0cmV0dXJuIGZhbHNlO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMjM6NTQ6MTMuMzE2NTAwMzQ3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDg1NzgxOTY3MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHVuZGVyc3RhbmRpbmcsIHBsYXlpbmcgdGhlIHJvbGUgb2YgYW4gZXhwZXJ0OlxuXG4qKkFuYWx5emluZyB0aGUgVElQQyBNVFUgUGF0Y2gqKlxuXG5BbHJpZ2h0LCBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciB0aGUgVElQQyAoVHJhbnNwYXJlbnQgSW50ZXItUHJvY2VzcyBDb21tdW5pY2F0aW9uKSBrZXJuZWwgbW9kdWxlLiBJdCBzZWVtcyB0aGUgY29yZSBvZiB0aGUgY2hhbmdlIHJldm9sdmVzIGFyb3VuZCBNVFUgKE1heGltdW0gVHJhbnNtaXNzaW9uIFVuaXQpIHZhbGlkYXRpb24sIHNwZWNpZmljYWxseSBpbiByZWxhdGlvbiB0byB0aGUgdXBwZXIgbGltaXQgZGVmaW5lZCBieSBgVTE2X01BWGAuIFRoZSBwYXRjaCB0b3VjaGVzIGBuZXQvdGlwYy9iZWFyZXIuY2AgYW5kIGBuZXQvdGlwYy91ZHBfbWVkaWEuaGAsIHNvIGxldCdzIGRpZyBpbnRvIHRob3NlIGZpbGVzIHRvIHVuZGVyc3RhbmQgdGhlIGRldGFpbHMgYW5kIHJhdGlvbmFsZS5cblxuSW4gYGJlYXJlci5jYCwgaXQgc2VlbXMgdGhlIG1haW4gZm9jdXMgaXMgd2l0aGluIGBfX3RpcGNfbmxfYmVhcmVyX3NldGAuIEhlcmUsIHdoZW4gdGhlIHVzZXIgaXMgc2V0dGluZyBiZWFyZXIgcHJvcGVydGllcyB0aHJvdWdoIHRoZSBOZXRsaW5rIGludGVyZmFjZSwgdGhlIHBhdGNoIG5vdyBleHBsaWNpdGx5IGNoZWNrcyBpZiB0aGUgTVRVIHZhbHVlIHByb3ZpZGVkIGV4Y2VlZHMgYFUxNl9NQVhgLiBJZiBpdCBkb2VzLCBhIGAtRUlOVkFMYCBlcnJvciBpcyByZXR1cm5lZCwgaW5kaWNhdGluZyBhbiBpbnZhbGlkIGFyZ3VtZW50LiBUaGlzIGlzIGdvb2Q7IHdlIGRvbid0IHdhbnQgdG8gYWxsb3cgb2J2aW91c2x5IGVycm9uZW91cyBNVFUgdmFsdWVzIHRoYXQgY2FuIGNhdXNlIHByb2JsZW1zIGRvd24gdGhlIGxpbmUuXG5cblRoZSBzZWNvbmQgcGFydCBvZiB0aGUgcGF0Y2gsIGludm9sdmluZyBgdGlwY191ZHBfbXR1X2JhZGAsIGFwcGVhcnMgdG8gYmUgYW5vdGhlciBjaGVjayBhZ2FpbnN0IE1UVSB2YWxpZGl0eS4gSWYgYG10dWAgaXMgZ3JlYXRlciB0aGFuIGBVMTZfTUFYYCwgdGhlIGZ1bmN0aW9uIHJldHVybnMgYHRydWVgLCBzaWduYWxpbmcgdGhhdCB0aGUgTVRVIGlzIGNvbnNpZGVyZWQgXCJiYWRcIi5cblxuU28sIGluIGVzc2VuY2UsIHdlIGhhdmUgdHdvIGxheWVycyBvZiBwcm90ZWN0aW9uLiBPbmUgZHVyaW5nIHRoZSBOZXRsaW5rIGNvbmZpZ3VyYXRpb24gYW5kIGFub3RoZXIgd2l0aGluIGEgdXRpbGl0eSBmdW5jdGlvbiB0aGF0IHZhbGlkYXRlcyB0aGUgTVRVLiBUaGUgcGF0Y2ggaXMgcHJvYmFibHkgZml4aW5nIGEgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHkgd2hlcmUgYW4gaW50ZWdlciBvdmVyZmxvdyBvciBhIG1hbGljaW91c2x5IGxhcmdlIE1UVSBjb3VsZCBjYXVzZSBpc3N1ZXMgd2l0aGluIFRJUEMuIFRoZXNlIGNoZWNrcyBzaG91bGQgcHJldmVudCBzdWNoIGlzc3VlcyBmcm9tIGhhcHBlbmluZywgZW5zdXJpbmcgdGhhdCB0aGUgbW9kdWxlIHVzZXMgdmFsaWQgTVRVIHZhbHVlcyBmb3IgaXRzIG5ldHdvcmsgY29tbXVuaWNhdGlvbnMuIEknbGwgbmVlZCB0byByZXZpZXcgdGhlIGZpbGVzIHRvIHNlZSB3aGVyZSB0aGUgZnVuY3Rpb24gaXMgdXNlZCBhbmQgb3RoZXIgcG9zc2libGUgaXNzdWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTc5LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTU5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMjM6NTQ6MTguMTc0MzIzMDY4WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk1NTA0NzAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9fdGlwY19ubF9iZWFyZXJfc2V0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC90aXBjL2JlYXJlci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC90aXBjL2JlYXJlci5jPTEwNjM9aW50IHRpcGNfbmxfYmVhcmVyX2FkZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbi0tXFxubmV0L3RpcGMvYmVhcmVyLmMtMTEwOS1cXG5uZXQvdGlwYy9iZWFyZXIuYzoxMTEwOmludCBfX3RpcGNfbmxfYmVhcmVyX3NldChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbm5ldC90aXBjL2JlYXJlci5jLTExMTEte1xcbi0tXFxubmV0L3RpcGMvYmVhcmVyLmM9MTE4MT1pbnQgdGlwY19ubF9iZWFyZXJfc2V0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuLS1cXG5uZXQvdGlwYy9iZWFyZXIuYy0xMTg1LVxcdHJ0bmxfbG9jaygpO1xcbm5ldC90aXBjL2JlYXJlci5jOjExODY6XFx0ZXJyID0gX190aXBjX25sX2JlYXJlcl9zZXQoc2tiLCBpbmZvKTtcXG5uZXQvdGlwYy9iZWFyZXIuYy0xMTg3LVxcdHJ0bmxfdW5sb2NrKCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDIzOjU0OjE4LjI2OTgzODI5N1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI3NDE2NzI0MzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipEZWNvZGluZyB0aGUgVElQQyBDb25maWd1cmF0aW9uIFBhdGgqKlxuXG5BbHJpZ2h0LCBzbyBgX190aXBjX25sX2JlYXJlcl9zZXRgIGlzIGJlaW5nIGNhbGxlZCBmcm9tIGB0aXBjX25sX2JlYXJlcl9zZXRgLiBUaGF0J3MgdGhlIGVudHJ5IHBvaW50LiBOb3csIHRoZSBrZXkgcXVlc3Rpb24sIGFzIGFsd2F5cyB3aXRoIFRJUEMsIGlzIHdoYXQncyB0aGUgdW5kZXJseWluZyBjb25maWd1cmF0aW9uIHRoYXQncyBlbmFibGluZyB0aGlzIHNwZWNpZmljIHBhdGg/IEkgbmVlZCB0byBxdWlja2x5IGdyYXNwIHdoaWNoIHNldHRpbmdzLCB2YXJpYWJsZXMsIG9yIHN0YXRlcyB0cmlnZ2VyIHRoaXMgY29kZSBleGVjdXRpb24uIElzIHRoaXMgYSByb3V0aW5nIGV2ZW50LCBhIGJlYXJlciBtb2RpZmljYXRpb24sIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBUaW1lIHRvIGRpZyBpbnRvIHRoZSBzdXJyb3VuZGluZyBjb2RlIGFuZCBsaWtlbHksIHRoZSBsYXJnZXIgY29udGV4dCBvZiB0aGUgbmV0d29yayBjb25maWd1cmF0aW9uIGJlaW5nIGFwcGxpZWQuIEknbSBnb2luZyB0byBsb29rIGZvciBhbnkgY2x1ZXMgYWJvdXQgd2hhdCBzcGVjaWZpY2FsbHkgdHJpZ2dlcnMgYSBUSVBDIGVuYWJsZW1lbnQgb3IgY2hhbmdlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDA4LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMjM6NTQ6MjEuMDExNTEyODU1WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMDU2Mzg3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVElQQ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvdGlwYy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC90aXBjL0tjb25maWctNS1cXG5uZXQvdGlwYy9LY29uZmlnOjY6bWVudWNvbmZpZyBUSVBDXFxubmV0L3RpcGMvS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCJUaGUgVElQQyBQcm90b2NvbFxcXCJcXG4tLVxcbm5ldC90aXBjL0tjb25maWctMjMtXFxubmV0L3RpcGMvS2NvbmZpZzoyNDpjb25maWcgVElQQ19NRURJQV9JQlxcbm5ldC90aXBjL0tjb25maWctMjUtXFx0Ym9vbCBcXFwiSW5maW5pQmFuZCBtZWRpYSB0eXBlIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvdGlwYy9LY29uZmlnLTI5LVxcdCAgSVAtb3Zlci1JbmZpbmlCYW5kIGRldmljZXMuXFxubmV0L3RpcGMvS2NvbmZpZzozMDpjb25maWcgVElQQ19NRURJQV9VRFBcXG5uZXQvdGlwYy9LY29uZmlnLTMxLVxcdGJvb2wgXFxcIklQL1VEUCBtZWRpYSB0eXBlIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvdGlwYy9LY29uZmlnLTM3LVxcbm5ldC90aXBjL0tjb25maWc6Mzg6Y29uZmlnIFRJUENfQ1JZUFRPXFxubmV0L3RpcGMvS2NvbmZpZy0zOS1cXHRib29sIFxcXCJUSVBDIGVuY3J5cHRpb24gc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC90aXBjL0tjb25maWctNTItXFxubmV0L3RpcGMvS2NvbmZpZzo1Mzpjb25maWcgVElQQ19ESUFHXFxubmV0L3RpcGMvS2NvbmZpZy01NC1cXHR0cmlzdGF0ZSBcXFwiVElQQzogc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QyMzo1NDoyMS4xMTIwODMwNjRaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNjUyNDY1NTU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgcXVpY2sgcnVuZG93biBvZiB3aGF0IEknbSB0aGlua2luZywga2VlcGluZyBpdCBjb25jaXNlIGFuZCByZWxldmFudDpcblxuKipNeSBUSVBDIENvbmZpZ3VyYXRpb24gUmV2aWV3KipcblxuQWxyaWdodCwgdGhlIGNvbmZpZ3VyYXRpb24gaW4gcXVlc3Rpb24gaXMgZGVmaW5pdGVseSBgVElQQ2AuIEFuZCB0aGlzIHBhdGNoIHRvdWNoZXMgYG5ldC90aXBjL3VkcF9tZWRpYS5oYC4gVGhhdCdzIGEgcmVkIGZsYWcg4oCTIGNsZWFybHkgZGVhbHMgd2l0aCBgVElQQ19NRURJQV9VRFBgLCB3aGljaCBpcyBteSBpbW1lZGlhdGUgY29uY2Vybi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGB0aXBjX3VkcF9tdHVfYmFkYCBpcyBiZWluZyB1c2VkIG5vdywgYXMgdGhpcyBpcyB0aGUgbmV4dCBsb2dpY2FsIHBvaW50IHRvIGNoZWNrIGZvciBzaWRlLWVmZmVjdHMgYW5kIGltcGFjdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1MzEsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QyMzo1NDoyMy43NjQ1NTIyMloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NDA2ODc4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0aXBjX3VkcF9tdHVfYmFkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC90aXBjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvdGlwYy9iZWFyZXIuYz0xMzE3PWludCBfX3RpcGNfbmxfbWVkaWFfc2V0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuLS1cXG5uZXQvdGlwYy9iZWFyZXIuYy0xMzYwLSNpZmRlZiBDT05GSUdfVElQQ19NRURJQV9VRFBcXG5uZXQvdGlwYy9iZWFyZXIuYzoxMzYxOlxcdFxcdFxcdGlmICh0aXBjX3VkcF9tdHVfYmFkKG5sYV9nZXRfdTMyXFxubmV0L3RpcGMvYmVhcmVyLmMtMTM2Mi1cXHRcXHRcXHRcXHRcXHQgICAgIChwcm9wc1tUSVBDX05MQV9QUk9QX01UVV0pKSkge1xcbi0tXFxubmV0L3RpcGMvdWRwX21lZGlhLmg9NDY9aW50IHRpcGNfdWRwX25sX2R1bXBfcmVtb3RlaXAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiKTtcXG4tLVxcbm5ldC90aXBjL3VkcF9tZWRpYS5oLTQ4LS8qIGNoZWNrIGlmIGNvbmZpZ3VyZWQgTVRVIGlzIHRvbyBsb3cgZm9yIHRpcGMgaGVhZGVycyAqL1xcbm5ldC90aXBjL3VkcF9tZWRpYS5oOjQ5OnN0YXRpYyBpbmxpbmUgYm9vbCB0aXBjX3VkcF9tdHVfYmFkKHUzMiBtdHUpXFxubmV0L3RpcGMvdWRwX21lZGlhLmgtNTAte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QyMzo1NDoyMy44NTg2MjkzWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzAxOTQwNTQyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG4qKkRpdmluZyBpbnRvIHRoZSBUSVBDIENvbmZpZ3VyYXRpb24qKlxuXG5SaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgY29uZmlndXJhdGlvbnM6IGBUSVBDYCBhbmQgYFRJUENfTUVESUFfVURQYC4gTXkgbWFpbiBmb2N1cyBuZWVkcyB0byBiZSBvbiB0aGVzZSB0d28gZnVuY3Rpb25zOiBgX190aXBjX25sX2JlYXJlcl9zZXRgIGFuZCBgX190aXBjX25sX21lZGlhX3NldGAuIFRob3NlIGZlZWwgbGlrZSB0aGUga2V5IGVudHJ5IHBvaW50cyBoZXJlLiBJIHNob3VsZCBwcm9iYWJseSBnZXQgYSBiaXQgbW9yZSBmYW1pbGlhciB3aXRoIGhvdyB0aGV5IHdvcmsuXG5cbkJ1dCwgYmVmb3JlIEkgZ2V0IHRvbyBkZWVwLCBpdCdzIHdvcnRoIHRha2luZyBhIHF1aWNrIHBhc3MgdGhyb3VnaCB0aGUgc3Vycm91bmRpbmcgY29kZS4gTmVlZCB0byBxdWlja2x5IHNjYW4gZm9yIGFueSBvdGhlciByZWxhdGVkIGZ1bmN0aW9ucyB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50LCBvciBtaWdodCBiZSBjYWxsZWQgYnkgdGhlc2UsIHRvIGdldCBhIGJldHRlciBvdmVydmlldyBvZiB0aGUgYXJjaGl0ZWN0dXJlLiBMZXQgbWUganVzdCBnbGFuY2UgYXJvdW5kIGFuZCBtYWtlIHN1cmUgSSBkb24ndCBtaXNzIGFueXRoaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDEyLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMjM6NTQ6MjYuODc4MDM4NTI3WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDIwOTAzODUsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRpcGNfdWRwX210dV9iYWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3RpcGMvdWRwX21lZGlhLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDIzOjU0OjI3LjAyMDEzOTg4MloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTk4MTI2MDM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIGB0aXBjX3VkcF9tdHVfYmFkYCBTeW1ib2wqKlxuXG5Pa2F5LCBzbyBJJ20gc2VlaW5nIHRoYXQgYHRpcGNfdWRwX210dV9iYWRgIGlzIGRlZmluZWQgaW4gYG5ldC90aXBjL3VkcF9tZWRpYS5oYC4gVGhhdCdzIGEga2V5IHBpZWNlIG9mIGluZm9ybWF0aW9uLCByaWdodCBvZmYgdGhlIGJhdC4gSXQgZ2l2ZXMgbWUgYSBzdGFydGluZyBwb2ludCDigJMgbm93IEkga25vdyB0aGUgKmRlZmluaXRpb24qIGlzIHRoZXJlLiBCdXQgdGhhdCdzIG5vdCBlbm91Z2g7IEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBjb250ZXh0LiBNeSBpbW1lZGlhdGUgbmV4dCB0aG91Z2h0IGlzLCB3aGVyZSBpcyB0aGlzIHRoaW5nICp1c2VkKj8gSSBuZWVkIHRvIHRyYWNlIGl0cyByZWZlcmVuY2VzIHRvIHVuZGVyc3RhbmQgaG93IGl0J3MgYmVpbmcgaGFuZGxlZCBpbiB0aGUgY29kZWJhc2UuIEknbSBnb2luZyB0byBzdGFydCBkaWdnaW5nIGludG8gdGhlIGNyb3NzLXJlZmVyZW5jZXMgdG8gc2VlIHdoYXQncyBhY3R1YWxseSBoYXBwZW5pbmcgd2l0aCB0aGF0IGZsYWcuIFRoaXMgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGNvZGUncyBiZWhhdmlvciwgYW5kIGhvdyB0aGF0IHZhbHVlIHBsYXlzIGEgcm9sZSBpbiBVRFAgbWVkaWEgcHJvY2Vzc2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDI5MSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDIzOjU0OjMwLjIxODI2Nzk2WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTE4MTA2NzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGlwY191ZHBfbXR1X2JhZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvdGlwYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3RpcGMvYmVhcmVyLmM9MTMxNz1pbnQgX190aXBjX25sX21lZGlhX3NldChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbi0tXFxubmV0L3RpcGMvYmVhcmVyLmMtMTM2MC0jaWZkZWYgQ09ORklHX1RJUENfTUVESUFfVURQXFxubmV0L3RpcGMvYmVhcmVyLmM6MTM2MTpcXHRcXHRcXHRpZiAodGlwY191ZHBfbXR1X2JhZChubGFfZ2V0X3UzMlxcbm5ldC90aXBjL2JlYXJlci5jLTEzNjItXFx0XFx0XFx0XFx0XFx0ICAgICAocHJvcHNbVElQQ19OTEFfUFJPUF9NVFVdKSkpIHtcXG4tLVxcbm5ldC90aXBjL3VkcF9tZWRpYS5oPTQ2PWludCB0aXBjX3VkcF9ubF9kdW1wX3JlbW90ZWlwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYik7XFxuLS1cXG5uZXQvdGlwYy91ZHBfbWVkaWEuaC00OC0vKiBjaGVjayBpZiBjb25maWd1cmVkIE1UVSBpcyB0b28gbG93IGZvciB0aXBjIGhlYWRlcnMgKi9cXG5uZXQvdGlwYy91ZHBfbWVkaWEuaDo0OTpzdGF0aWMgaW5saW5lIGJvb2wgdGlwY191ZHBfbXR1X2JhZCh1MzIgbXR1KVxcbm5ldC90aXBjL3VkcF9tZWRpYS5oLTUwLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMjM6NTQ6MzAuMzMwMDg2NTU4WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE1MjQxMTQ0NzEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgcHJlc2VudGVkIGFzIGEgc3RyZWFtIG9mIHRob3VnaHQ6XG5cbioqRGl2aW5nIGludG8gVElQQyBOZXRsaW5rIE1lZGlhIFNldHRpbmdzKipcblxuQWxyaWdodCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBgX190aXBjX25sX21lZGlhX3NldGAgZnVuY3Rpb24uIEkgcmVtZW1iZXIgc2VlaW5nIGl0IGluIHRoZSBjb2RlYmFzZSwgYW5kIG5vdyBJJ20gdHJ5aW5nIHRvIHRyYWNlIHRoZSBsb2dpYy4gVGhpcyBwcm9iYWJseSBtZWFucyBpdCdzIHNldHRpbmcgdXAgb3IgY29uZmlndXJpbmcgc29tZSBhc3BlY3Qgb2YgVElQQydzIG1lZGlhIGhhbmRsaW5nLCBwcm9iYWJseSByZWxhdGVkIHRvIG5ldHdvcmsgbGlua3MuXG5cblRvIGdldCBhIGJldHRlciBncmlwIG9uIHRoZSBzdXJyb3VuZGluZyBjb250ZXh0LCBJIHNob3VsZCBpbW1lZGlhdGVseSBsb29rIGF0IGBfX3RpcGNfbmxfYmVhcmVyX3NldGAgaW4gYG5ldC90aXBjL2JlYXJlci5jYC4gVGhhdCBzaG91bGQgcHJvdmlkZSBpbnNpZ2h0cy4gQmVhcmVycywgYXMgdGhlIG5hbWUgc3VnZ2VzdHMsIGRlYWwgd2l0aCB0aGUgdW5kZXJseWluZyBjb21tdW5pY2F0aW9uIGNoYW5uZWxzLCB3aGljaCBtZWFucyB0aGF0J3MgdGhlIHBsYWNlIHRvIGxvb2sgaWYgc29tZXRoaW5nIGlzIHJlbGF0ZWQgdG8gbWVkaWEuIExldCdzIHNlZSBob3cgdGhleSBpbnRlcmFjdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDgzMCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDIzOjU0OjQ1LjU3MTIzNDU5OFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTczMDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L3RpcGMvYmVhcmVyLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTE1MCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTE1MDpcXHRcXHRcXHRcXHRiLVxcdTAwM2Vwcmlvcml0eSA9IG5sYV9nZXRfdTMyKHByb3BzW1RJUENfTkxBX1BST1BfUFJJT10pO1xcbjExNTE6XFx0XFx0XFx0aWYgKHByb3BzW1RJUENfTkxBX1BST1BfV0lOXSlcXG4xMTUyOlxcdFxcdFxcdFxcdGItXFx1MDAzZW1heF93aW4gPSBubGFfZ2V0X3UzMihwcm9wc1tUSVBDX05MQV9QUk9QX1dJTl0pO1xcbjExNTM6XFx0XFx0XFx0aWYgKHByb3BzW1RJUENfTkxBX1BST1BfTVRVXSkge1xcbjExNTQ6XFx0XFx0XFx0XFx0aWYgKGItXFx1MDAzZW1lZGlhLVxcdTAwM2V0eXBlX2lkICE9IFRJUENfTUVESUFfVFlQRV9VRFApIHtcXG4xMTU1OlxcdFxcdFxcdFxcdFxcdE5MX1NFVF9FUlJfTVNHKGluZm8tXFx1MDAzZWV4dGFjayxcXG4xMTU2OlxcdFxcdFxcdFxcdFxcdFxcdCAgICAgICBcXFwiTVRVIHByb3BlcnR5IGlzIHVuc3VwcG9ydGVkXFxcIik7XFxuMTE1NzpcXHRcXHRcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4xMTU4OlxcdFxcdFxcdFxcdH1cXG4xMTU5OlxcdCNpZmRlZiBDT05GSUdfVElQQ19NRURJQV9VRFBcXG4xMTYwOlxcdFxcdFxcdFxcdGlmIChubGFfZ2V0X3UzMihwcm9wc1tUSVBDX05MQV9QUk9QX01UVV0pIFxcdTAwM2NcXG4xMTYxOlxcdFxcdFxcdFxcdCAgICBiLVxcdTAwM2VlbmNhcF9obGVuICsgVElQQ19NSU5fQkVBUkVSX01UVSkge1xcbjExNjI6XFx0XFx0XFx0XFx0XFx0TkxfU0VUX0VSUl9NU0coaW5mby1cXHUwMDNlZXh0YWNrLFxcbjExNjM6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIFxcXCJNVFUgdmFsdWUgaXMgb3V0LW9mLXJhbmdlXFxcIik7XFxuMTE2NDpcXHRcXHRcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4xMTY1OlxcdFxcdFxcdFxcdH1cXG4xMTY2OlxcdFxcdFxcdFxcdGlmIChubGFfZ2V0X3UzMihwcm9wc1tUSVBDX05MQV9QUk9QX01UVV0pIFxcdTAwM2VcXG4xMTY3OlxcdFxcdFxcdFxcdCAgICBVMTZfTUFYKSB7XFxuMTE2ODpcXHRcXHRcXHRcXHRcXHROTF9TRVRfRVJSX01TRyhpbmZvLVxcdTAwM2VleHRhY2ssXFxuMTE2OTpcXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgXFxcIk1UVSB2YWx1ZSBpcyBvdXQtb2YtcmFuZ2VcXFwiKTtcXG4xMTcwOlxcdFxcdFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbjExNzE6XFx0XFx0XFx0XFx0fVxcbjExNzI6XFx0XFx0XFx0XFx0Yi1cXHUwMDNlbXR1ID0gbmxhX2dldF91MzIocHJvcHNbVElQQ19OTEFfUFJPUF9NVFVdKTtcXG4xMTczOlxcdFxcdFxcdFxcdHRpcGNfbm9kZV9hcHBseV9wcm9wZXJ0eShuZXQsIGIsIFRJUENfTkxBX1BST1BfTVRVKTtcXG4xMTc0OlxcdCNlbmRpZlxcbjExNzU6XFx0XFx0XFx0fVxcbjExNzY6XFx0XFx0fVxcbjExNzc6XFx0XFxuMTE3ODpcXHRcXHRyZXR1cm4gMDtcXG4xMTc5OlxcdH1cXG4xMTgwOlxcdFxcbjExODE6XFx0aW50IHRpcGNfbmxfYmVhcmVyX3NldChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbjExODI6XFx0e1xcbjExODM6XFx0XFx0aW50IGVycjtcXG4xMTg0OlxcdFxcbjExODU6XFx0XFx0cnRubF9sb2NrKCk7XFxuMTE4NjpcXHRcXHRlcnIgPSBfX3RpcGNfbmxfYmVhcmVyX3NldChza2IsIGluZm8pO1xcbjExODc6XFx0XFx0cnRubF91bmxvY2soKTtcXG4xMTg4OlxcdFxcbjExODk6XFx0XFx0cmV0dXJuIGVycjtcXG4xMTkwOlxcdH1cXG4xMTkxOlxcdFxcbjExOTI6XFx0c3RhdGljIGludCBfX3RpcGNfbmxfYWRkX21lZGlhKHN0cnVjdCB0aXBjX25sX21zZyAqbXNnLFxcbjExOTM6XFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCB0aXBjX21lZGlhICptZWRpYSwgaW50IG5sZmxhZ3MpXFxuMTE5NDpcXHR7XFxuMTE5NTpcXHRcXHR2b2lkICpoZHI7XFxuMTE5NjpcXHRcXHRzdHJ1Y3QgbmxhdHRyICphdHRycztcXG4xMTk3OlxcdFxcdHN0cnVjdCBubGF0dHIgKnByb3A7XFxuMTE5ODpcXHRcXG4xMTk5OlxcdFxcdGhkciA9IGdlbmxtc2dfcHV0KG1zZy1cXHUwMDNlc2tiLCBtc2ctXFx1MDAzZXBvcnRpZCwgbXNnLVxcdTAwM2VzZXEsIFxcdTAwMjZ0aXBjX2dlbmxfZmFtaWx5LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QyMzo1NDo0NS41NzEzOTQzNDlaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzYzOTg3NDgwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE1UVSBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIHNhbml0eSBjaGVjayBvbiB0aGUgTVRVIHZhbHVlLiBFc3NlbnRpYWxseSwgaXQncyBwcmV2ZW50aW5nIHRoZSBhc3NpZ25tZW50IG9mIGFuIE1UVSBleGNlZWRpbmcgYFUxNl9NQVhgIHdpdGhpbiB0aGUgYF9fdGlwY19ubF9iZWFyZXJfc2V0YCBhbmQgYHRpcGNfdWRwX210dV9iYWRgIGZ1bmN0aW9ucy4gSXQncyBhIGZ1bmN0aW9uYWwgY29ycmVjdGlvbiB0byBwcmV2ZW50IHBvdGVudGlhbCBpc3N1ZXMgd2l0aCBpbnZhbGlkIE1UVSB2YWx1ZXMgYmVpbmcgdXNlZCwgd2hpY2ggbWFrZXMgc2Vuc2UuIEkgc2VlIHRoaXMgaXMgcmVhY2hhYmxlIHRocm91Z2ggbmV0bGluaywgd2hpY2ggaXMgc3RhbmRhcmQgZm9yIHRoZXNlIHR5cGVzIG9mIGNvbmZpZ3VyYXRpb25zLiBUaGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgaGVyZSBhcmUgYFRJUENgIGFuZCBgVElQQ19NRURJQV9VRFBgLCBhbmQgdGhlIHByaW1hcnkgZnVuY3Rpb25zIG9mIGludGVyZXN0IGFyZSBvYnZpb3VzbHkgYF9fdGlwY19ubF9iZWFyZXJfc2V0YCBhbmQgYF9fdGlwY19ubF9tZWRpYV9zZXRgLiBJdCB3b3VsZCBiZSBwcnVkZW50IHRvIHF1aWNrbHkgdmVyaWZ5IHRoYXQgYF9fdGlwY19ubF9tZWRpYV9zZXRgIGlzIGFsc28gcmVhY2hhYmxlIGluIHRoZSBhcHByb3ByaWF0ZSBjb250ZXh0cy4gSSB3aWxsIG5lZWQgdG8gdHJhY2UgdGhlIGNhbGwgZ3JhcGguXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU5MzQsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QyMzo1NDo0OS4yMTEyNzE1NFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE5MzkzNzA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9fdGlwY19ubF9tZWRpYV9zZXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3RpcGMvYmVhcmVyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3RpcGMvYmVhcmVyLmM9MTI2Nj1pbnQgdGlwY19ubF9tZWRpYV9nZXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG4tLVxcbm5ldC90aXBjL2JlYXJlci5jLTEzMTYtXFxubmV0L3RpcGMvYmVhcmVyLmM6MTMxNzppbnQgX190aXBjX25sX21lZGlhX3NldChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbm5ldC90aXBjL2JlYXJlci5jLTEzMTgte1xcbi0tXFxubmV0L3RpcGMvYmVhcmVyLmM9MTM3NT1pbnQgdGlwY19ubF9tZWRpYV9zZXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG4tLVxcbm5ldC90aXBjL2JlYXJlci5jLTEzNzktXFx0cnRubF9sb2NrKCk7XFxubmV0L3RpcGMvYmVhcmVyLmM6MTM4MDpcXHRlcnIgPSBfX3RpcGNfbmxfbWVkaWFfc2V0KHNrYiwgaW5mbyk7XFxubmV0L3RpcGMvYmVhcmVyLmMtMTM4MS1cXHRydG5sX3VubG9jaygpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QyMzo1NDo0OS4zMzA2NzEzNzdaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI5MDM2OTE5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3Npbmc6XG5cbioqQW5hbHl6aW5nIGB0aXBjX25sX21lZGlhX3NldGAgQ2FsbCBDaGFpbioqXG5cbkFscmlnaHQsIHNvIHRoZSBmaXJzdCB0aGluZyBpcyBjb25maXJtZWQ6IGBfX3RpcGNfbmxfbWVkaWFfc2V0YCAqaXMqIGRlZmluaXRlbHkgY2FsbGVkIGRpcmVjdGx5IGZyb20gYHRpcGNfbmxfbWVkaWFfc2V0YC4gVGhhdCdzIGdvb2QgdG8ga25vdywgY29uZmlybWluZyB0aGUgaW5pdGlhbCBoeXBvdGhlc2lzLiBOb3csIGxldCdzIHRyYWNlIHRoaXMgYSBsaXR0bGUgZnVydGhlciBhbmQgZmlndXJlIG91dCB0aGUgYmlnZ2VyIHBpY3R1cmUsIHdoZXJlIHRoaXMgbmV0bGluayBoYW5kbGVyIGZpdHMgaW4uIE15IG5leHQgc3RlcCBpcyBjbGVhci4gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBgbmV0L3RpcGMvbmV0bGluay5jYCAob3IgYSBzaW1pbGFybHkgbmFtZWQgZmlsZSB3aXRoaW4gdGhlIFRJUEMgbmV0bGluayBjb2RlKSBhbmQgY2hlY2sgb3V0IGJvdGggYHRpcGNfbmxfYmVhcmVyX3NldGAgYW5kIGB0aXBjX25sX21lZGlhX3NldGAuIEkgd2FudCB0byBxdWlja2x5IGFzY2VydGFpbiBpZiB0aGVzZSBhcmUgZGVmaW5lZCBhbmQgcmVnaXN0ZXJlZCBhcyBhY3R1YWwgbmV0bGluayBoYW5kbGVycy4gVGhhdCB3aWxsIGdpdmUgbWUgdGhlIGNvbnRleHQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBzeXN0ZW0gaXMgcmVjZWl2aW5nIGFuZCBwcm9jZXNzaW5nIHRoZXNlIGNvbnRyb2wgbWVzc2FnZXMuIEknbSBsb29raW5nIGZvciB0aGUgcmVnaXN0cmF0aW9uIG1lY2hhbmlzbXMsIHRoZSBmdW5jdGlvbiBzaWduYXR1cmVzLCBhbmQgYW55IGFzc29jaWF0ZWQgZGF0YSBzdHJ1Y3R1cmVzIHRoYXQgdGhlc2UgaGFuZGxlcnMgbWlnaHQgYmUgdXNpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY1NDQsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QyMzo1NDo1Mi42MjEwNDMzNDVaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMDMxNjExOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0aXBjX25sX2JlYXJlcl9zZXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3RpcGMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC90aXBjL2JlYXJlci5jPTEwNjM9aW50IHRpcGNfbmxfYmVhcmVyX2FkZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbi0tXFxubmV0L3RpcGMvYmVhcmVyLmMtMTEwOS1cXG5uZXQvdGlwYy9iZWFyZXIuYzoxMTEwOmludCBfX3RpcGNfbmxfYmVhcmVyX3NldChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbm5ldC90aXBjL2JlYXJlci5jLTExMTEte1xcbi0tXFxubmV0L3RpcGMvYmVhcmVyLmMtMTE4MC1cXG5uZXQvdGlwYy9iZWFyZXIuYzoxMTgxOmludCB0aXBjX25sX2JlYXJlcl9zZXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG5uZXQvdGlwYy9iZWFyZXIuYy0xMTgyLXtcXG4tLVxcbm5ldC90aXBjL2JlYXJlci5jLTExODUtXFx0cnRubF9sb2NrKCk7XFxubmV0L3RpcGMvYmVhcmVyLmM6MTE4NjpcXHRlcnIgPSBfX3RpcGNfbmxfYmVhcmVyX3NldChza2IsIGluZm8pO1xcbm5ldC90aXBjL2JlYXJlci5jLTExODctXFx0cnRubF91bmxvY2soKTtcXG4tLVxcbm5ldC90aXBjL2JlYXJlci5oPTIwNz1pbnQgdGlwY19ubF9iZWFyZXJfZ2V0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pO1xcbm5ldC90aXBjL2JlYXJlci5oOjIwODppbnQgdGlwY19ubF9iZWFyZXJfc2V0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pO1xcbm5ldC90aXBjL2JlYXJlci5oOjIwOTppbnQgX190aXBjX25sX2JlYXJlcl9zZXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbyk7XFxubmV0L3RpcGMvYmVhcmVyLmgtMjEwLWludCB0aXBjX25sX2JlYXJlcl9hZGQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbyk7XFxuLS1cXG5uZXQvdGlwYy9uZXRsaW5rLmM9MTUxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ2VubF9vcHMgdGlwY19nZW5sX3YyX29wc1tdID0ge1xcbi0tXFxubmV0L3RpcGMvbmV0bGluay5jLTE3OS1cXHRcXHQuZmxhZ3NcXHQ9IEdFTkxfVU5TX0FETUlOX1BFUk0sXFxubmV0L3RpcGMvbmV0bGluay5jOjE4MDpcXHRcXHQuZG9pdFxcdD0gdGlwY19ubF9iZWFyZXJfc2V0LFxcbm5ldC90aXBjL25ldGxpbmsuYy0xODEtXFx0fSxcXG4tLVxcbm5ldC90aXBjL25ldGxpbmtfY29tcGF0LmM9Nzk5PXN0YXRpYyBpbnQgdGlwY19ubF9jb21wYXRfbGlua19zZXQoc3RydWN0IHRpcGNfbmxfY29tcGF0X2NtZF9kb2l0ICpjbWQsXFxuLS1cXG5uZXQvdGlwYy9uZXRsaW5rX2NvbXBhdC5jLTgyNi1cXHRpZiAoYmVhcmVyKSB7XFxubmV0L3RpcGMvbmV0bGlua19jb21wYXQuYzo4Mjc6XFx0XFx0Y21kLVxcdTAwM2Vkb2l0ID0gXFx1MDAyNl9fdGlwY19ubF9iZWFyZXJfc2V0O1xcbm5ldC90aXBjL25ldGxpbmtfY29tcGF0LmMtODI4LVxcdFxcdHJldHVybiB0aXBjX25sX2NvbXBhdF9iZWFyZXJfc2V0KHNrYiwgbXNnKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMjM6NTQ6NTIuNzMxMzY2NzgzWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI1MTQyNTAyOTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyB0aGUgTmV0bGluayBIYW5kbGVycyoqXG5cbk9rYXksIHNvIHdlJ3JlIGxvb2tpbmcgYXQgbmV0bGluayBoYW5kbGVycywgdGhhdCBtdWNoIGlzIGNsZWFyLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gY2hlY2sgb3V0IGB0aXBjX25sX21lZGlhX3NldGAuIEl0J3MgbGlrZWx5IGludm9sdmVkIGluIHNldHRpbmcgb3IgY29uZmlndXJpbmcgdGhlIG1lZGlhLXJlbGF0ZWQgYXNwZWN0cyBvZiB0aGlzIG5ldGxpbmsgaW1wbGVtZW50YXRpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgbWVkaWEgaXMgZGVmaW5lZCBhbmQgaGFuZGxlZCB3aXRoaW4gdGhpcyBjb250ZXh0LiBJJ2xsIG5lZWQgdG8gc2VlIGhvdyBpdCdzIGltcGxlbWVudGVkIHRvIHVuZGVyc3RhbmQgdGhlIG9wdGlvbnMsIGxpbWl0YXRpb25zLCBhbmQgaG93IHRvIGRlYnVnIHBvdGVudGlhbCBpc3N1ZXMuIExldCdzIGRpZyBpbnRvIHRoYXQgZnVuY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc1ODQsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QyMzo1NDo1NS4yNDU2MjA3NjRaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMjM3MTM3OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0aXBjX25sX21lZGlhX3NldFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvdGlwYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3RpcGMvYmVhcmVyLmM9MTI2Nj1pbnQgdGlwY19ubF9tZWRpYV9nZXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG4tLVxcbm5ldC90aXBjL2JlYXJlci5jLTEzMTYtXFxubmV0L3RpcGMvYmVhcmVyLmM6MTMxNzppbnQgX190aXBjX25sX21lZGlhX3NldChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbm5ldC90aXBjL2JlYXJlci5jLTEzMTgte1xcbi0tXFxubmV0L3RpcGMvYmVhcmVyLmMtMTM3NC1cXG5uZXQvdGlwYy9iZWFyZXIuYzoxMzc1OmludCB0aXBjX25sX21lZGlhX3NldChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbm5ldC90aXBjL2JlYXJlci5jLTEzNzYte1xcbi0tXFxubmV0L3RpcGMvYmVhcmVyLmMtMTM3OS1cXHRydG5sX2xvY2soKTtcXG5uZXQvdGlwYy9iZWFyZXIuYzoxMzgwOlxcdGVyciA9IF9fdGlwY19ubF9tZWRpYV9zZXQoc2tiLCBpbmZvKTtcXG5uZXQvdGlwYy9iZWFyZXIuYy0xMzgxLVxcdHJ0bmxfdW5sb2NrKCk7XFxuLS1cXG5uZXQvdGlwYy9iZWFyZXIuaD0yMTM9aW50IHRpcGNfbmxfbWVkaWFfZ2V0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pO1xcbm5ldC90aXBjL2JlYXJlci5oOjIxNDppbnQgdGlwY19ubF9tZWRpYV9zZXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbyk7XFxubmV0L3RpcGMvYmVhcmVyLmg6MjE1OmludCBfX3RpcGNfbmxfbWVkaWFfc2V0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pO1xcbm5ldC90aXBjL2JlYXJlci5oLTIxNi1cXG4tLVxcbm5ldC90aXBjL25ldGxpbmsuYz0xNTE9c3RhdGljIGNvbnN0IHN0cnVjdCBnZW5sX29wcyB0aXBjX2dlbmxfdjJfb3BzW10gPSB7XFxuLS1cXG5uZXQvdGlwYy9uZXRsaW5rLmMtMjIyLVxcdFxcdC5mbGFnc1xcdD0gR0VOTF9VTlNfQURNSU5fUEVSTSxcXG5uZXQvdGlwYy9uZXRsaW5rLmM6MjIzOlxcdFxcdC5kb2l0XFx0PSB0aXBjX25sX21lZGlhX3NldCxcXG5uZXQvdGlwYy9uZXRsaW5rLmMtMjI0LVxcdH0sXFxuLS1cXG5uZXQvdGlwYy9uZXRsaW5rX2NvbXBhdC5jPTc5OT1zdGF0aWMgaW50IHRpcGNfbmxfY29tcGF0X2xpbmtfc2V0KHN0cnVjdCB0aXBjX25sX2NvbXBhdF9jbWRfZG9pdCAqY21kLFxcbi0tXFxubmV0L3RpcGMvbmV0bGlua19jb21wYXQuYy04MjAtXFx0aWYgKG1lZGlhKSB7XFxubmV0L3RpcGMvbmV0bGlua19jb21wYXQuYzo4MjE6XFx0XFx0Y21kLVxcdTAwM2Vkb2l0ID0gXFx1MDAyNl9fdGlwY19ubF9tZWRpYV9zZXQ7XFxubmV0L3RpcGMvbmV0bGlua19jb21wYXQuYy04MjItXFx0XFx0cmV0dXJuIHRpcGNfbmxfY29tcGF0X21lZGlhX3NldChza2IsIG1zZyk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDIzOjU0OjU1LjM1ODAwMzc4MloiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDQ3MDA4MjA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVElQQyBNVFUgRml4KipcblxuT2theSwgc28gSSd2ZSBnb3QgYSBwYXRjaCBoZXJlIGFkZHJlc3NpbmcgYSBwb3RlbnRpYWwgTVRVIGlzc3VlIHdpdGhpbiB0aGUgVElQQyAoVHJhbnNwYXJlbnQgSW50ZXItUHJvY2VzcyBDb21tdW5pY2F0aW9uKSBzeXN0ZW0uIFNwZWNpZmljYWxseSwgaXQgc2VlbXMgdGhlIGNvZGUgY291bGQgYWxsb3cgdGhlIE1UVSB0byBiZSBzZXQgYmV5b25kIHRoZSBtYXhpbXVtIHZhbHVlIG9mIGEgMTYtYml0IHVuc2lnbmVkIGludGVnZXIgKGBVMTZfTUFYYCkuIFRoYXQncyBhIGNsYXNzaWMgc2V0dXAgZm9yIGludGVnZXIgdHJ1bmNhdGlvbiBwcm9ibGVtcyBkb3duIHRoZSBsaW5lIOKAkyBzdWJ0bGUgYnVncyB0aGF0IGNhbiBiZSBhIHJlYWwgaGVhZGFjaGUuIFRoZSBrZXkgZnVuY3Rpb25zIHRvIGludmVzdGlnYXRlIGFyZSBgX190aXBjX25sX2JlYXJlcl9zZXRgIGFuZCBgX190aXBjX25sX21lZGlhX3NldGAuXG5cblRoaXMgbG9va3MgbGlrZSBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBkZWZpbml0ZWx5IHNvbWV0aGluZyB3ZSdkIHdhbnQgdG8gZnV6eiB0aG9yb3VnaGx5IHRvIGVuc3VyZSByb2J1c3RuZXNzLiBUaGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgYXJlIGBUSVBDYCBhbmQsIG1vcmUgc3BlY2lmaWNhbGx5IGZvciB0aGUgVURQIG1lZGlhLCBgVElQQ19NRURJQV9VRFBgLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSBzaG91bGQgZG91YmxlLWNoZWNrIGZvciBhbnkgb3RoZXIgcmVsYXRlZCBjb25maWdzLiBTaW5jZSBgVElQQ19NRURJQV9VRFBgIGlzIG5lc3RlZCB1bmRlciBgVElQQ2AsIHRoYXQgbG9va3MgZmluZSwgYnV0IGl0J3Mgd29ydGggYSBxdWljayBzY2FuIG9mIHRoZSBgbmV0L3RpcGMvS2NvbmZpZ2AgZmlsZSB0byBiZSBzdXJlIG5vdGhpbmcgZWxzZSBpcyBsdXJraW5nLiBUaG9yb3VnaG5lc3MgaXMga2V5IGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg0MzMsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMjM6NTQ6NTkuNDA1MDE1MDRaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMwOTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC90aXBjL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgVElQQyBjb25maWd1cmF0aW9uXFxuICAgNDpcXHQjXFxuICAgNTpcXHRcXG4gICA2OlxcdG1lbnVjb25maWcgVElQQ1xcbiAgIDc6XFx0XFx0dHJpc3RhdGUgXFxcIlRoZSBUSVBDIFByb3RvY29sXFxcIlxcbiAgIDg6XFx0XFx0ZGVwZW5kcyBvbiBJTkVUXFxuICAgOTpcXHRcXHRoZWxwXFxuICAxMDpcXHRcXHQgIFRoZSBUcmFuc3BhcmVudCBJbnRlciBQcm9jZXNzIENvbW11bmljYXRpb24gKFRJUEMpIHByb3RvY29sIGlzXFxuICAxMTpcXHRcXHQgIHNwZWNpYWxseSBkZXNpZ25lZCBmb3IgaW50cmEgY2x1c3RlciBjb21tdW5pY2F0aW9uLiBUaGlzIHByb3RvY29sXFxuICAxMjpcXHRcXHQgIG9yaWdpbmF0ZXMgZnJvbSBFcmljc3NvbiB3aGVyZSBpdCBoYXMgYmVlbiB1c2VkIGluIGNhcnJpZXIgZ3JhZGVcXG4gIDEzOlxcdFxcdCAgY2x1c3RlciBhcHBsaWNhdGlvbnMgZm9yIG1hbnkgeWVhcnMuXFxuICAxNDpcXHRcXG4gIDE1OlxcdFxcdCAgRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgVElQQywgc2VlIGh0dHA6Ly90aXBjLnNvdXJjZWZvcmdlLm5ldC5cXG4gIDE2OlxcdFxcbiAgMTc6XFx0XFx0ICBUaGlzIHByb3RvY29sIHN1cHBvcnQgaXMgYWxzbyBhdmFpbGFibGUgYXMgYSBtb2R1bGUgKCA9IGNvZGUgd2hpY2hcXG4gIDE4OlxcdFxcdCAgY2FuIGJlIGluc2VydGVkIGluIGFuZCByZW1vdmVkIGZyb20gdGhlIHJ1bm5pbmcga2VybmVsIHdoZW5ldmVyIHlvdVxcbiAgMTk6XFx0XFx0ICB3YW50KS4gVGhlIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCB0aXBjLiBJZiB5b3Ugd2FudCB0byBjb21waWxlIGl0XFxuICAyMDpcXHRcXHQgIGFzIGEgbW9kdWxlLCBzYXkgTSBoZXJlIGFuZCByZWFkIFxcdTAwM2NmaWxlOkRvY3VtZW50YXRpb24va2J1aWxkL21vZHVsZXMucnN0XFx1MDAzZS5cXG4gIDIxOlxcdFxcbiAgMjI6XFx0XFx0ICBJZiBpbiBkb3VidCwgc2F5IE4uXFxuICAyMzpcXHRcXG4gIDI0OlxcdGNvbmZpZyBUSVBDX01FRElBX0lCXFxuICAyNTpcXHRcXHRib29sIFxcXCJJbmZpbmlCYW5kIG1lZGlhIHR5cGUgc3VwcG9ydFxcXCJcXG4gIDI2OlxcdFxcdGRlcGVuZHMgb24gVElQQyBcXHUwMDI2XFx1MDAyNiBJTkZJTklCQU5EX0lQT0lCXFxuICAyNzpcXHRcXHRoZWxwXFxuICAyODpcXHRcXHQgIFNheWluZyBZIGhlcmUgd2lsbCBlbmFibGUgc3VwcG9ydCBmb3IgcnVubmluZyBUSVBDIG9uXFxuICAyOTpcXHRcXHQgIElQLW92ZXItSW5maW5pQmFuZCBkZXZpY2VzLlxcbiAgMzA6XFx0Y29uZmlnIFRJUENfTUVESUFfVURQXFxuICAzMTpcXHRcXHRib29sIFxcXCJJUC9VRFAgbWVkaWEgdHlwZSBzdXBwb3J0XFxcIlxcbiAgMzI6XFx0XFx0ZGVwZW5kcyBvbiBUSVBDXFxuICAzMzpcXHRcXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcXG4gIDM0OlxcdFxcdGRlZmF1bHQgeVxcbiAgMzU6XFx0XFx0aGVscFxcbiAgMzY6XFx0XFx0ICBTYXlpbmcgWSBoZXJlIHdpbGwgZW5hYmxlIHN1cHBvcnQgZm9yIHJ1bm5pbmcgVElQQyBvdmVyIElQL1VEUFxcbiAgMzc6XFx0XFxuICAzODpcXHRjb25maWcgVElQQ19DUllQVE9cXG4gIDM5OlxcdFxcdGJvb2wgXFxcIlRJUEMgZW5jcnlwdGlvbiBzdXBwb3J0XFxcIlxcbiAgNDA6XFx0XFx0ZGVwZW5kcyBvbiBUSVBDXFxuICA0MTpcXHRcXHRzZWxlY3QgQ1JZUFRPXFxuICA0MjpcXHRcXHRzZWxlY3QgQ1JZUFRPX0FFU1xcbiAgNDM6XFx0XFx0c2VsZWN0IENSWVBUT19HQ01cXG4gIDQ0OlxcdFxcdGRlZmF1bHQgeVxcbiAgNDU6XFx0XFx0aGVscFxcbiAgNDY6XFx0XFx0ICBTYXlpbmcgWSBoZXJlIHdpbGwgZW5hYmxlIHN1cHBvcnQgZm9yIFRJUEMgZW5jcnlwdGlvbi5cXG4gIDQ3OlxcdFxcdCAgQWxsIFRJUEMgbWVzc2FnZXMgd2lsbCBiZSBlbmNyeXB0ZWQvZGVjcnlwdGVkIGJ5IHVzaW5nIHRoZSBjdXJyZW50bHkgbW9zdFxcbiAgNDg6XFx0XFx0ICBhZHZhbmNlZCBhbGdvcml0aG06IEFFQUQgQUVTLUdDTSAobGlrZSBJUFNlYyBvciBUTFMpIGJlZm9yZSBsZWF2aW5nL1xcbiAgNDk6XFx0XFx0ICBlbnRlcmluZyB0aGUgVElQQyBzdGFjay5cXG4gIDUwOlxcdFxcdCAgS2V5IHNldHRpbmcgZnJvbSB1c2VyLXNwYWNlIGlzIHBlcmZvcm1lZCB2aWEgbmV0bGluayBieSBhIHVzZXIgcHJvZ3JhbVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QyMzo1NDo1OS40MDUxNDg0M1oiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzU4NzE1NzgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipNVFUgVmFsaWRhdGlvbiBpbiBUSVBDIENvbmZpZ3VyYXRpb246IE15IEFuYWx5c2lzKipcblxuQWxyaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIG15IGZvY3VzIGxhbmRzIG9uIGBUSVBDYCBhbmQgYFRJUENfTUVESUFfVURQYCDigJMgdGhvc2UgYXJlIHRoZSBrZXkgY29uZmlndXJhdGlvbiBlbnRyeSBwb2ludHMuIFRoZSBtZWF0IG9mIHRoaXMgY2hhbmdlLCBhcyBJIHNlZSBpdCwgY2VudGVycyBvbiBhZGRpbmcgdmFsaWRhdGlvbiBzcGVjaWZpY2FsbHkgZm9yIHRoZSBNVFUgcHJvcGVydHkgd2l0aGluIHRoZSBUSVBDIGJlYXJlciBhbmQgbWVkaWEgbmV0bGluayBjb25maWd1cmF0aW9ucy4gVGhlIGdvYWwgaXMgY2xlYXI6IHByZXZlbnQgdGhvc2UgcGVza3kgb3V0LW9mLWJvdW5kcyB2YWx1ZXMgdGhhdCBjb3VsZCBjYXVzZSBzZXJpb3VzIGlzc3Vlcy4gV2UgbmVlZCB0byBsb2NrIHRoYXQgZG93bi5cblxuSSdtIHplcm9pbmcgaW4gb24gYF9fdGlwY19ubF9iZWFyZXJfc2V0YCBhbmQgYF9fdGlwY19ubF9tZWRpYV9zZXRgLiBUaG9zZSBmdW5jdGlvbnMgYXJlIHdoZXJlIHRoaXMgdmFsaWRhdGlvbiB3aWxsIGFjdHVhbGx5IGJlIGltcGxlbWVudGVkLiBUaGV5J3JlIHRoZSBvbmVzIHdlIGhhdmUgdG8gbWFrZSBidWxsZXQtcHJvb2YuIEknbSBnb2luZyB0byBzdGFydCBkaWdnaW5nIGludG8gdGhvc2UgaW1wbGVtZW50YXRpb25zIGRpcmVjdGx5IG5vdy5cblxuSSBuZWVkIHRvIHF1aWNrbHkgY2hlY2sgdGhlIHNldC1yZXN1bHRzIHNvIEkgY2FuIHNlZSB3aGF0IGlzIGN1cnJlbnRseSB0aGVyZS4gSSB3YW50IHRvIGtub3cgZXhhY3RseSB3aGF0IHdlIGFyZSBjaGFuZ2luZyBhbmQgSSB3YW50IHRvIHNlZSBpZiB0aGUgcHJvcG9zZWQgc29sdXRpb24gd2lsbCB3b3JrLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NTM0LCJPdXRwdXRUb2tlbnMiOjExNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMjM6NTU6MDQuMTYzODY3MzIxWiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY4NzcxNDgyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJUSVBDXCIsXG4gICAgXCJUSVBDX01FRElBX1VEUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9fdGlwY19ubF9iZWFyZXJfc2V0XCIsXG4gICAgXCJfX3RpcGNfbmxfbWVkaWFfc2V0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgZm9yIHRoZSBNVFUgcHJvcGVydHkgaW4gVElQQyBiZWFyZXIgYW5kIG1lZGlhIG5ldGxpbmsgY29uZmlndXJhdGlvbiB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgdmFsdWVzIChncmVhdGVyIHRoYW4gVTE2X01BWCkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgbmV0bGluayBoYW5kbGVycy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJUSVBDXCIsXG4gICAgXCJUSVBDX01FRElBX1VEUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9fdGlwY19ubF9iZWFyZXJfc2V0XCIsXG4gICAgXCJfX3RpcGNfbmxfbWVkaWFfc2V0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgZm9yIHRoZSBNVFUgcHJvcGVydHkgaW4gVElQQyBiZWFyZXIgYW5kIG1lZGlhIG5ldGxpbmsgY29uZmlndXJhdGlvbiB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgdmFsdWVzIChncmVhdGVyIHRoYW4gVTE2X01BWCkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgbmV0bGluayBoYW5kbGVycy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowhhxqs[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-07 23:42:32 +0000 UTC FinishedAt: 2026-07-07 23:55:05 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "60444706aa17616efc03190d099ac347e28b3d0a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "TIPC", "TIPC_MEDIA_UDP" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "60444706aa17616efc03190d099ac347e28b3d0a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "TIPC", "TIPC_MEDIA_UDP" ], "series_id": "b9ddae75-99f4-456c-988a-2530c7b007da" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "__tipc_nl_bearer_set", "__tipc_nl_media_set" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDIzOjU0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1RJUEMmIzM0OywKICAgICYjMzQ7VElQQ19NRURJQV9VRFAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX3RpcGNfbmxfYmVhcmVyX3NldCYjMzQ7LAogICAgJiMzNDtfX3RpcGNfbmxfbWVkaWFfc2V0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIGZvciB0aGUgTVRVIHByb3BlcnR5IGluIFRJUEMgYmVhcmVyIGFuZCBtZWRpYSBuZXRsaW5rIGNvbmZpZ3VyYXRpb24gdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIHZhbHVlcyAoZ3JlYXRlciB0aGFuIFUxNl9NQVgpLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIG5ldGxpbmsgaGFuZGxlcnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMjM6NTQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAyZjVlNmVkYzFiNjUyYWVjOTgzMGU0N2Y3MjhkMGFmMTNhNGNjMGE2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdWwgNyAyMzo1NDoxMSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvdGlwYy9iZWFyZXIuYyBiL25ldC90aXBjL2JlYXJlci5jXG5pbmRleCAwNWRjZDJmOWU4ODdhNi4uMDkyNjY5MmRkZDJlYjkgMTAwNjQ0XG4tLS0gYS9uZXQvdGlwYy9iZWFyZXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3RpcGMvYmVhcmVyLmNcbkBAIC0xMTYzLDYgJiM0MzsxMTYzLDEyIEBAIGludCBfX3RpcGNfbmxfYmVhcmVyX3NldChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuIFx0XHRcdFx0XHQgICAgICAgXCYjMzQ7TVRVIHZhbHVlIGlzIG91dC1vZi1yYW5nZVwmIzM0Oyk7XG4gXHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdFx0XHR9XG4mIzQzO1x0XHRcdGlmIChubGFfZ2V0X3UzMihwcm9wc1tUSVBDX05MQV9QUk9QX01UVV0pIFx1MDAzZVxuJiM0MztcdFx0XHQgICAgVTE2X01BWCkge1xuJiM0MztcdFx0XHRcdE5MX1NFVF9FUlJfTVNHKGluZm8tXHUwMDNlZXh0YWNrLFxuJiM0MztcdFx0XHRcdFx0ICAgICAgIFwmIzM0O01UVSB2YWx1ZSBpcyBvdXQtb2YtcmFuZ2VcJiMzNDspO1xuJiM0MztcdFx0XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcdFx0XHR9XG4gXHRcdFx0Yi1cdTAwM2VtdHUgPSBubGFfZ2V0X3UzMihwcm9wc1tUSVBDX05MQV9QUk9QX01UVV0pO1xuIFx0XHRcdHRpcGNfbm9kZV9hcHBseV9wcm9wZXJ0eShuZXQsIGIsIFRJUENfTkxBX1BST1BfTVRVKTtcbiAjZW5kaWZcbmRpZmYgLS1naXQgYS9uZXQvdGlwYy91ZHBfbWVkaWEuaCBiL25ldC90aXBjL3VkcF9tZWRpYS5oXG5pbmRleCBlNzQ1NWNjNzNlMTZjMC4uMGQ2MmE1N2M4Njk0NmEgMTAwNjQ0XG4tLS0gYS9uZXQvdGlwYy91ZHBfbWVkaWEuaFxuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3RpcGMvdWRwX21lZGlhLmhcbkBAIC00OCw2ICYjNDM7NDgsMTEgQEAgaW50IHRpcGNfdWRwX25sX2R1bXBfcmVtb3RlaXAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiKTtcbiAvKiBjaGVjayBpZiBjb25maWd1cmVkIE1UVSBpcyB0b28gbG93IGZvciB0aXBjIGhlYWRlcnMgKi9cbiBzdGF0aWMgaW5saW5lIGJvb2wgdGlwY191ZHBfbXR1X2JhZCh1MzIgbXR1KVxuIHtcbiYjNDM7XHRpZiAobXR1IFx1MDAzZSBVMTZfTUFYKSB7XG4mIzQzO1x0XHRwcl93YXJuKFwmIzM0O01UVSB0b28gbGFyZ2UgZm9yIHRpcGMgYmVhcmVyXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdHJldHVybiB0cnVlO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRpZiAobXR1IFx1MDAzZT0gKFRJUENfTUlOX0JFQVJFUl9NVFUgJiM0Mzsgc2l6ZW9mKHN0cnVjdCBpcGhkcikgJiM0MztcbiBcdCAgICBzaXplb2Yoc3RydWN0IHVkcGhkcikpKVxuIFx0XHRyZXR1cm4gZmFsc2U7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMjM6NTQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VElQQyYjMzQ7LAogICAgJiMzNDtUSVBDX01FRElBX1VEUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19fdGlwY19ubF9iZWFyZXJfc2V0JiMzNDssCiAgICAmIzM0O19fdGlwY19ubF9tZWRpYV9zZXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgZm9yIHRoZSBNVFUgcHJvcGVydHkgaW4gVElQQyBiZWFyZXIgYW5kIG1lZGlhIG5ldGxpbmsgY29uZmlndXJhdGlvbiB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgdmFsdWVzIChncmVhdGVyIHRoYW4gVTE2X01BWCkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgbmV0bGluayBoYW5kbGVycy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMmY1ZTZlZGMxYjY1MmFlYzk4MzBlNDdmNzI4ZDBhZjEzYTRjYzBhNgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgSnVsIDcgMjM6NTQ6MTEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvdGlwYy9iZWFyZXIuYyBiL25ldC90aXBjL2JlYXJlci5jCmluZGV4IDA1ZGNkMmY5ZTg4N2E2Li4wOTI2NjkyZGRkMmViOSAxMDA2NDQKLS0tIGEvbmV0L3RpcGMvYmVhcmVyLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3RpcGMvYmVhcmVyLmMKQEAgLTExNjMsNiAmIzQzOzExNjMsMTIgQEAgaW50IF9fdGlwY19ubF9iZWFyZXJfc2V0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pCiAJCQkJCSAgICAgICAmIzM0O01UVSB2YWx1ZSBpcyBvdXQtb2YtcmFuZ2UmIzM0Oyk7CiAJCQkJcmV0dXJuIC1FSU5WQUw7CiAJCQl9CiYjNDM7CQkJaWYgKG5sYV9nZXRfdTMyKHByb3BzW1RJUENfTkxBX1BST1BfTVRVXSkgJmd0OwomIzQzOwkJCSAgICBVMTZfTUFYKSB7CiYjNDM7CQkJCU5MX1NFVF9FUlJfTVNHKGluZm8tJmd0O2V4dGFjaywKJiM0MzsJCQkJCSAgICAgICAmIzM0O01UVSB2YWx1ZSBpcyBvdXQtb2YtcmFuZ2UmIzM0Oyk7CiYjNDM7CQkJCXJldHVybiAtRUlOVkFMOwomIzQzOwkJCX0KIAkJCWItJmd0O210dSA9IG5sYV9nZXRfdTMyKHByb3BzW1RJUENfTkxBX1BST1BfTVRVXSk7CiAJCQl0aXBjX25vZGVfYXBwbHlfcHJvcGVydHkobmV0LCBiLCBUSVBDX05MQV9QUk9QX01UVSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL25ldC90aXBjL3VkcF9tZWRpYS5oIGIvbmV0L3RpcGMvdWRwX21lZGlhLmgKaW5kZXggZTc0NTVjYzczZTE2YzAuLjBkNjJhNTdjODY5NDZhIDEwMDY0NAotLS0gYS9uZXQvdGlwYy91ZHBfbWVkaWEuaAomIzQzOyYjNDM7JiM0MzsgYi9uZXQvdGlwYy91ZHBfbWVkaWEuaApAQCAtNDgsNiAmIzQzOzQ4LDExIEBAIGludCB0aXBjX3VkcF9ubF9kdW1wX3JlbW90ZWlwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYik7CiAvKiBjaGVjayBpZiBjb25maWd1cmVkIE1UVSBpcyB0b28gbG93IGZvciB0aXBjIGhlYWRlcnMgKi8KIHN0YXRpYyBpbmxpbmUgYm9vbCB0aXBjX3VkcF9tdHVfYmFkKHUzMiBtdHUpCiB7CiYjNDM7CWlmIChtdHUgJmd0OyBVMTZfTUFYKSB7CiYjNDM7CQlwcl93YXJuKCYjMzQ7TVRVIHRvbyBsYXJnZSBmb3IgdGlwYyBiZWFyZXJcbiYjMzQ7KTsKJiM0MzsJCXJldHVybiB0cnVlOwomIzQzOwl9CiYjNDM7CiAJaWYgKG10dSAmZ3Q7PSAoVElQQ19NSU5fQkVBUkVSX01UVSAmIzQzOyBzaXplb2Yoc3RydWN0IGlwaGRyKSAmIzQzOwogCSAgICBzaXplb2Yoc3RydWN0IHVkcGhkcikpKQogCQlyZXR1cm4gZmFsc2U7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDIzOjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNzkKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxNTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdW5kZXJzdGFuZGluZywgcGxheWluZyB0aGUgcm9sZSBvZiBhbiBleHBlcnQ6CgoqKkFuYWx5emluZyB0aGUgVElQQyBNVFUgUGF0Y2gqKgoKQWxyaWdodCwgSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBUSVBDIChUcmFuc3BhcmVudCBJbnRlci1Qcm9jZXNzIENvbW11bmljYXRpb24pIGtlcm5lbCBtb2R1bGUuIEl0IHNlZW1zIHRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgcmV2b2x2ZXMgYXJvdW5kIE1UVSAoTWF4aW11bSBUcmFuc21pc3Npb24gVW5pdCkgdmFsaWRhdGlvbiwgc3BlY2lmaWNhbGx5IGluIHJlbGF0aW9uIHRvIHRoZSB1cHBlciBsaW1pdCBkZWZpbmVkIGJ5IGBVMTZfTUFYYC4gVGhlIHBhdGNoIHRvdWNoZXMgYG5ldC90aXBjL2JlYXJlci5jYCBhbmQgYG5ldC90aXBjL3VkcF9tZWRpYS5oYCwgc28gbGV0JiMzOTtzIGRpZyBpbnRvIHRob3NlIGZpbGVzIHRvIHVuZGVyc3RhbmQgdGhlIGRldGFpbHMgYW5kIHJhdGlvbmFsZS4KCkluIGBiZWFyZXIuY2AsIGl0IHNlZW1zIHRoZSBtYWluIGZvY3VzIGlzIHdpdGhpbiBgX190aXBjX25sX2JlYXJlcl9zZXRgLiBIZXJlLCB3aGVuIHRoZSB1c2VyIGlzIHNldHRpbmcgYmVhcmVyIHByb3BlcnRpZXMgdGhyb3VnaCB0aGUgTmV0bGluayBpbnRlcmZhY2UsIHRoZSBwYXRjaCBub3cgZXhwbGljaXRseSBjaGVja3MgaWYgdGhlIE1UVSB2YWx1ZSBwcm92aWRlZCBleGNlZWRzIGBVMTZfTUFYYC4gSWYgaXQgZG9lcywgYSBgLUVJTlZBTGAgZXJyb3IgaXMgcmV0dXJuZWQsIGluZGljYXRpbmcgYW4gaW52YWxpZCBhcmd1bWVudC4gVGhpcyBpcyBnb29kOyB3ZSBkb24mIzM5O3Qgd2FudCB0byBhbGxvdyBvYnZpb3VzbHkgZXJyb25lb3VzIE1UVSB2YWx1ZXMgdGhhdCBjYW4gY2F1c2UgcHJvYmxlbXMgZG93biB0aGUgbGluZS4KClRoZSBzZWNvbmQgcGFydCBvZiB0aGUgcGF0Y2gsIGludm9sdmluZyBgdGlwY191ZHBfbXR1X2JhZGAsIGFwcGVhcnMgdG8gYmUgYW5vdGhlciBjaGVjayBhZ2FpbnN0IE1UVSB2YWxpZGl0eS4gSWYgYG10dWAgaXMgZ3JlYXRlciB0aGFuIGBVMTZfTUFYYCwgdGhlIGZ1bmN0aW9uIHJldHVybnMgYHRydWVgLCBzaWduYWxpbmcgdGhhdCB0aGUgTVRVIGlzIGNvbnNpZGVyZWQgJiMzNDtiYWQmIzM0Oy4KClNvLCBpbiBlc3NlbmNlLCB3ZSBoYXZlIHR3byBsYXllcnMgb2YgcHJvdGVjdGlvbi4gT25lIGR1cmluZyB0aGUgTmV0bGluayBjb25maWd1cmF0aW9uIGFuZCBhbm90aGVyIHdpdGhpbiBhIHV0aWxpdHkgZnVuY3Rpb24gdGhhdCB2YWxpZGF0ZXMgdGhlIE1UVS4gVGhlIHBhdGNoIGlzIHByb2JhYmx5IGZpeGluZyBhIHBvdGVudGlhbCB2dWxuZXJhYmlsaXR5IHdoZXJlIGFuIGludGVnZXIgb3ZlcmZsb3cgb3IgYSBtYWxpY2lvdXNseSBsYXJnZSBNVFUgY291bGQgY2F1c2UgaXNzdWVzIHdpdGhpbiBUSVBDLiBUaGVzZSBjaGVja3Mgc2hvdWxkIHByZXZlbnQgc3VjaCBpc3N1ZXMgZnJvbSBoYXBwZW5pbmcsIGVuc3VyaW5nIHRoYXQgdGhlIG1vZHVsZSB1c2VzIHZhbGlkIE1UVSB2YWx1ZXMgZm9yIGl0cyBuZXR3b3JrIGNvbW11bmljYXRpb25zLiBJJiMzOTtsbCBuZWVkIHRvIHJldmlldyB0aGUgZmlsZXMgdG8gc2VlIHdoZXJlIHRoZSBmdW5jdGlvbiBpcyB1c2VkIGFuZCBvdGhlciBwb3NzaWJsZSBpc3N1ZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMjM6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X190aXBjX25sX2JlYXJlcl9zZXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvdGlwYy9iZWFyZXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvdGlwYy9iZWFyZXIuYz0xMDYzPWludCB0aXBjX25sX2JlYXJlcl9hZGQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbi0tXG5uZXQvdGlwYy9iZWFyZXIuYy0xMTA5LVxubmV0L3RpcGMvYmVhcmVyLmM6MTExMDppbnQgX190aXBjX25sX2JlYXJlcl9zZXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbm5ldC90aXBjL2JlYXJlci5jLTExMTEte1xuLS1cbm5ldC90aXBjL2JlYXJlci5jPTExODE9aW50IHRpcGNfbmxfYmVhcmVyX3NldChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuLS1cbm5ldC90aXBjL2JlYXJlci5jLTExODUtXHRydG5sX2xvY2soKTtcbm5ldC90aXBjL2JlYXJlci5jOjExODY6XHRlcnIgPSBfX3RpcGNfbmxfYmVhcmVyX3NldChza2IsIGluZm8pO1xubmV0L3RpcGMvYmVhcmVyLmMtMTE4Ny1cdHJ0bmxfdW5sb2NrKCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMjM6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzAwOAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDM3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipEZWNvZGluZyB0aGUgVElQQyBDb25maWd1cmF0aW9uIFBhdGgqKgoKQWxyaWdodCwgc28gYF9fdGlwY19ubF9iZWFyZXJfc2V0YCBpcyBiZWluZyBjYWxsZWQgZnJvbSBgdGlwY19ubF9iZWFyZXJfc2V0YC4gVGhhdCYjMzk7cyB0aGUgZW50cnkgcG9pbnQuIE5vdywgdGhlIGtleSBxdWVzdGlvbiwgYXMgYWx3YXlzIHdpdGggVElQQywgaXMgd2hhdCYjMzk7cyB0aGUgdW5kZXJseWluZyBjb25maWd1cmF0aW9uIHRoYXQmIzM5O3MgZW5hYmxpbmcgdGhpcyBzcGVjaWZpYyBwYXRoPyBJIG5lZWQgdG8gcXVpY2tseSBncmFzcCB3aGljaCBzZXR0aW5ncywgdmFyaWFibGVzLCBvciBzdGF0ZXMgdHJpZ2dlciB0aGlzIGNvZGUgZXhlY3V0aW9uLiBJcyB0aGlzIGEgcm91dGluZyBldmVudCwgYSBiZWFyZXIgbW9kaWZpY2F0aW9uLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gVGltZSB0byBkaWcgaW50byB0aGUgc3Vycm91bmRpbmcgY29kZSBhbmQgbGlrZWx5LCB0aGUgbGFyZ2VyIGNvbnRleHQgb2YgdGhlIG5ldHdvcmsgY29uZmlndXJhdGlvbiBiZWluZyBhcHBsaWVkLiBJJiMzOTttIGdvaW5nIHRvIGxvb2sgZm9yIGFueSBjbHVlcyBhYm91dCB3aGF0IHNwZWNpZmljYWxseSB0cmlnZ2VycyBhIFRJUEMgZW5hYmxlbWVudCBvciBjaGFuZ2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMjM6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFRJUEMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvdGlwYy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC90aXBjL0tjb25maWctNS1cbm5ldC90aXBjL0tjb25maWc6NjptZW51Y29uZmlnIFRJUENcbm5ldC90aXBjL0tjb25maWctNy1cdHRyaXN0YXRlIFwmIzM0O1RoZSBUSVBDIFByb3RvY29sXCYjMzQ7XG4tLVxubmV0L3RpcGMvS2NvbmZpZy0yMy1cbm5ldC90aXBjL0tjb25maWc6MjQ6Y29uZmlnIFRJUENfTUVESUFfSUJcbm5ldC90aXBjL0tjb25maWctMjUtXHRib29sIFwmIzM0O0luZmluaUJhbmQgbWVkaWEgdHlwZSBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L3RpcGMvS2NvbmZpZy0yOS1cdCAgSVAtb3Zlci1JbmZpbmlCYW5kIGRldmljZXMuXG5uZXQvdGlwYy9LY29uZmlnOjMwOmNvbmZpZyBUSVBDX01FRElBX1VEUFxubmV0L3RpcGMvS2NvbmZpZy0zMS1cdGJvb2wgXCYjMzQ7SVAvVURQIG1lZGlhIHR5cGUgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC90aXBjL0tjb25maWctMzctXG5uZXQvdGlwYy9LY29uZmlnOjM4OmNvbmZpZyBUSVBDX0NSWVBUT1xubmV0L3RpcGMvS2NvbmZpZy0zOS1cdGJvb2wgXCYjMzQ7VElQQyBlbmNyeXB0aW9uIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvdGlwYy9LY29uZmlnLTUyLVxubmV0L3RpcGMvS2NvbmZpZzo1Mzpjb25maWcgVElQQ19ESUFHXG5uZXQvdGlwYy9LY29uZmlnLTU0LVx0dHJpc3RhdGUgXCYjMzQ7VElQQzogc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMjM6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzUzMQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDU0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHF1aWNrIHJ1bmRvd24gb2Ygd2hhdCBJJiMzOTttIHRoaW5raW5nLCBrZWVwaW5nIGl0IGNvbmNpc2UgYW5kIHJlbGV2YW50OgoKKipNeSBUSVBDIENvbmZpZ3VyYXRpb24gUmV2aWV3KioKCkFscmlnaHQsIHRoZSBjb25maWd1cmF0aW9uIGluIHF1ZXN0aW9uIGlzIGRlZmluaXRlbHkgYFRJUENgLiBBbmQgdGhpcyBwYXRjaCB0b3VjaGVzIGBuZXQvdGlwYy91ZHBfbWVkaWEuaGAuIFRoYXQmIzM5O3MgYSByZWQgZmxhZyDigJMgY2xlYXJseSBkZWFscyB3aXRoIGBUSVBDX01FRElBX1VEUGAsIHdoaWNoIGlzIG15IGltbWVkaWF0ZSBjb25jZXJuLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgYHRpcGNfdWRwX210dV9iYWRgIGlzIGJlaW5nIHVzZWQgbm93LCBhcyB0aGlzIGlzIHRoZSBuZXh0IGxvZ2ljYWwgcG9pbnQgdG8gY2hlY2sgZm9yIHNpZGUtZWZmZWN0cyBhbmQgaW1wYWN0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAyMzo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0aXBjX3VkcF9tdHVfYmFkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3RpcGMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC90aXBjL2JlYXJlci5jPTEzMTc9aW50IF9fdGlwY19ubF9tZWRpYV9zZXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbi0tXG5uZXQvdGlwYy9iZWFyZXIuYy0xMzYwLSNpZmRlZiBDT05GSUdfVElQQ19NRURJQV9VRFBcbm5ldC90aXBjL2JlYXJlci5jOjEzNjE6XHRcdFx0aWYgKHRpcGNfdWRwX210dV9iYWQobmxhX2dldF91MzJcbm5ldC90aXBjL2JlYXJlci5jLTEzNjItXHRcdFx0XHRcdCAgICAgKHByb3BzW1RJUENfTkxBX1BST1BfTVRVXSkpKSB7XG4tLVxubmV0L3RpcGMvdWRwX21lZGlhLmg9NDY9aW50IHRpcGNfdWRwX25sX2R1bXBfcmVtb3RlaXAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiKTtcbi0tXG5uZXQvdGlwYy91ZHBfbWVkaWEuaC00OC0vKiBjaGVjayBpZiBjb25maWd1cmVkIE1UVSBpcyB0b28gbG93IGZvciB0aXBjIGhlYWRlcnMgKi9cbm5ldC90aXBjL3VkcF9tZWRpYS5oOjQ5OnN0YXRpYyBpbmxpbmUgYm9vbCB0aXBjX3VkcF9tdHVfYmFkKHUzMiBtdHUpXG5uZXQvdGlwYy91ZHBfbWVkaWEuaC01MC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMjM6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDAxMgoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDU4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipEaXZpbmcgaW50byB0aGUgVElQQyBDb25maWd1cmF0aW9uKioKClJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgY29uZmlndXJhdGlvbnM6IGBUSVBDYCBhbmQgYFRJUENfTUVESUFfVURQYC4gTXkgbWFpbiBmb2N1cyBuZWVkcyB0byBiZSBvbiB0aGVzZSB0d28gZnVuY3Rpb25zOiBgX190aXBjX25sX2JlYXJlcl9zZXRgIGFuZCBgX190aXBjX25sX21lZGlhX3NldGAuIFRob3NlIGZlZWwgbGlrZSB0aGUga2V5IGVudHJ5IHBvaW50cyBoZXJlLiBJIHNob3VsZCBwcm9iYWJseSBnZXQgYSBiaXQgbW9yZSBmYW1pbGlhciB3aXRoIGhvdyB0aGV5IHdvcmsuCgpCdXQsIGJlZm9yZSBJIGdldCB0b28gZGVlcCwgaXQmIzM5O3Mgd29ydGggdGFraW5nIGEgcXVpY2sgcGFzcyB0aHJvdWdoIHRoZSBzdXJyb3VuZGluZyBjb2RlLiBOZWVkIHRvIHF1aWNrbHkgc2NhbiBmb3IgYW55IG90aGVyIHJlbGF0ZWQgZnVuY3Rpb25zIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQsIG9yIG1pZ2h0IGJlIGNhbGxlZCBieSB0aGVzZSwgdG8gZ2V0IGEgYmV0dGVyIG92ZXJ2aWV3IG9mIHRoZSBhcmNoaXRlY3R1cmUuIExldCBtZSBqdXN0IGdsYW5jZSBhcm91bmQgYW5kIG1ha2Ugc3VyZSBJIGRvbiYjMzk7dCBtaXNzIGFueXRoaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAyMzo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RpcGNfdWRwX210dV9iYWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvdGlwYy91ZHBfbWVkaWEuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDIzOjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyOTEKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAzOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6CgoqKkludmVzdGlnYXRpbmcgdGhlIGB0aXBjX3VkcF9tdHVfYmFkYCBTeW1ib2wqKgoKT2theSwgc28gSSYjMzk7bSBzZWVpbmcgdGhhdCBgdGlwY191ZHBfbXR1X2JhZGAgaXMgZGVmaW5lZCBpbiBgbmV0L3RpcGMvdWRwX21lZGlhLmhgLiBUaGF0JiMzOTtzIGEga2V5IHBpZWNlIG9mIGluZm9ybWF0aW9uLCByaWdodCBvZmYgdGhlIGJhdC4gSXQgZ2l2ZXMgbWUgYSBzdGFydGluZyBwb2ludCDigJMgbm93IEkga25vdyB0aGUgKmRlZmluaXRpb24qIGlzIHRoZXJlLiBCdXQgdGhhdCYjMzk7cyBub3QgZW5vdWdoOyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgY29udGV4dC4gTXkgaW1tZWRpYXRlIG5leHQgdGhvdWdodCBpcywgd2hlcmUgaXMgdGhpcyB0aGluZyAqdXNlZCo/IEkgbmVlZCB0byB0cmFjZSBpdHMgcmVmZXJlbmNlcyB0byB1bmRlcnN0YW5kIGhvdyBpdCYjMzk7cyBiZWluZyBoYW5kbGVkIGluIHRoZSBjb2RlYmFzZS4gSSYjMzk7bSBnb2luZyB0byBzdGFydCBkaWdnaW5nIGludG8gdGhlIGNyb3NzLXJlZmVyZW5jZXMgdG8gc2VlIHdoYXQmIzM5O3MgYWN0dWFsbHkgaGFwcGVuaW5nIHdpdGggdGhhdCBmbGFnLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBjb2RlJiMzOTtzIGJlaGF2aW9yLCBhbmQgaG93IHRoYXQgdmFsdWUgcGxheXMgYSByb2xlIGluIFVEUCBtZWRpYSBwcm9jZXNzaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAyMzo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0aXBjX3VkcF9tdHVfYmFkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3RpcGMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC90aXBjL2JlYXJlci5jPTEzMTc9aW50IF9fdGlwY19ubF9tZWRpYV9zZXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbi0tXG5uZXQvdGlwYy9iZWFyZXIuYy0xMzYwLSNpZmRlZiBDT05GSUdfVElQQ19NRURJQV9VRFBcbm5ldC90aXBjL2JlYXJlci5jOjEzNjE6XHRcdFx0aWYgKHRpcGNfdWRwX210dV9iYWQobmxhX2dldF91MzJcbm5ldC90aXBjL2JlYXJlci5jLTEzNjItXHRcdFx0XHRcdCAgICAgKHByb3BzW1RJUENfTkxBX1BST1BfTVRVXSkpKSB7XG4tLVxubmV0L3RpcGMvdWRwX21lZGlhLmg9NDY9aW50IHRpcGNfdWRwX25sX2R1bXBfcmVtb3RlaXAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiKTtcbi0tXG5uZXQvdGlwYy91ZHBfbWVkaWEuaC00OC0vKiBjaGVjayBpZiBjb25maWd1cmVkIE1UVSBpcyB0b28gbG93IGZvciB0aXBjIGhlYWRlcnMgKi9cbm5ldC90aXBjL3VkcF9tZWRpYS5oOjQ5OnN0YXRpYyBpbmxpbmUgYm9vbCB0aXBjX3VkcF9tdHVfYmFkKHUzMiBtdHUpXG5uZXQvdGlwYy91ZHBfbWVkaWEuaC01MC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDIzOjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ4MzAKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA0MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBwcmVzZW50ZWQgYXMgYSBzdHJlYW0gb2YgdGhvdWdodDoKCioqRGl2aW5nIGludG8gVElQQyBOZXRsaW5rIE1lZGlhIFNldHRpbmdzKioKCkFscmlnaHQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgYF9fdGlwY19ubF9tZWRpYV9zZXRgIGZ1bmN0aW9uLiBJIHJlbWVtYmVyIHNlZWluZyBpdCBpbiB0aGUgY29kZWJhc2UsIGFuZCBub3cgSSYjMzk7bSB0cnlpbmcgdG8gdHJhY2UgdGhlIGxvZ2ljLiBUaGlzIHByb2JhYmx5IG1lYW5zIGl0JiMzOTtzIHNldHRpbmcgdXAgb3IgY29uZmlndXJpbmcgc29tZSBhc3BlY3Qgb2YgVElQQyYjMzk7cyBtZWRpYSBoYW5kbGluZywgcHJvYmFibHkgcmVsYXRlZCB0byBuZXR3b3JrIGxpbmtzLgoKVG8gZ2V0IGEgYmV0dGVyIGdyaXAgb24gdGhlIHN1cnJvdW5kaW5nIGNvbnRleHQsIEkgc2hvdWxkIGltbWVkaWF0ZWx5IGxvb2sgYXQgYF9fdGlwY19ubF9iZWFyZXJfc2V0YCBpbiBgbmV0L3RpcGMvYmVhcmVyLmNgLiBUaGF0IHNob3VsZCBwcm92aWRlIGluc2lnaHRzLiBCZWFyZXJzLCBhcyB0aGUgbmFtZSBzdWdnZXN0cywgZGVhbCB3aXRoIHRoZSB1bmRlcmx5aW5nIGNvbW11bmljYXRpb24gY2hhbm5lbHMsIHdoaWNoIG1lYW5zIHRoYXQmIzM5O3MgdGhlIHBsYWNlIHRvIGxvb2sgaWYgc29tZXRoaW5nIGlzIHJlbGF0ZWQgdG8gbWVkaWEuIExldCYjMzk7cyBzZWUgaG93IHRoZXkgaW50ZXJhY3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDIzOjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L3RpcGMvYmVhcmVyLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMTUwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzExNTA6XHRcdFx0XHRiLVx1MDAzZXByaW9yaXR5ID0gbmxhX2dldF91MzIocHJvcHNbVElQQ19OTEFfUFJPUF9QUklPXSk7XG4xMTUxOlx0XHRcdGlmIChwcm9wc1tUSVBDX05MQV9QUk9QX1dJTl0pXG4xMTUyOlx0XHRcdFx0Yi1cdTAwM2VtYXhfd2luID0gbmxhX2dldF91MzIocHJvcHNbVElQQ19OTEFfUFJPUF9XSU5dKTtcbjExNTM6XHRcdFx0aWYgKHByb3BzW1RJUENfTkxBX1BST1BfTVRVXSkge1xuMTE1NDpcdFx0XHRcdGlmIChiLVx1MDAzZW1lZGlhLVx1MDAzZXR5cGVfaWQgIT0gVElQQ19NRURJQV9UWVBFX1VEUCkge1xuMTE1NTpcdFx0XHRcdFx0TkxfU0VUX0VSUl9NU0coaW5mby1cdTAwM2VleHRhY2ssXG4xMTU2Olx0XHRcdFx0XHRcdCAgICAgICBcJiMzNDtNVFUgcHJvcGVydHkgaXMgdW5zdXBwb3J0ZWRcJiMzNDspO1xuMTE1NzpcdFx0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4xMTU4Olx0XHRcdFx0fVxuMTE1OTpcdCNpZmRlZiBDT05GSUdfVElQQ19NRURJQV9VRFBcbjExNjA6XHRcdFx0XHRpZiAobmxhX2dldF91MzIocHJvcHNbVElQQ19OTEFfUFJPUF9NVFVdKSBcdTAwM2NcbjExNjE6XHRcdFx0XHQgICAgYi1cdTAwM2VlbmNhcF9obGVuICYjNDM7IFRJUENfTUlOX0JFQVJFUl9NVFUpIHtcbjExNjI6XHRcdFx0XHRcdE5MX1NFVF9FUlJfTVNHKGluZm8tXHUwMDNlZXh0YWNrLFxuMTE2MzpcdFx0XHRcdFx0XHQgICAgICAgXCYjMzQ7TVRVIHZhbHVlIGlzIG91dC1vZi1yYW5nZVwmIzM0Oyk7XG4xMTY0Olx0XHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbjExNjU6XHRcdFx0XHR9XG4xMTY2Olx0XHRcdFx0aWYgKG5sYV9nZXRfdTMyKHByb3BzW1RJUENfTkxBX1BST1BfTVRVXSkgXHUwMDNlXG4xMTY3Olx0XHRcdFx0ICAgIFUxNl9NQVgpIHtcbjExNjg6XHRcdFx0XHRcdE5MX1NFVF9FUlJfTVNHKGluZm8tXHUwMDNlZXh0YWNrLFxuMTE2OTpcdFx0XHRcdFx0XHQgICAgICAgXCYjMzQ7TVRVIHZhbHVlIGlzIG91dC1vZi1yYW5nZVwmIzM0Oyk7XG4xMTcwOlx0XHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbjExNzE6XHRcdFx0XHR9XG4xMTcyOlx0XHRcdFx0Yi1cdTAwM2VtdHUgPSBubGFfZ2V0X3UzMihwcm9wc1tUSVBDX05MQV9QUk9QX01UVV0pO1xuMTE3MzpcdFx0XHRcdHRpcGNfbm9kZV9hcHBseV9wcm9wZXJ0eShuZXQsIGIsIFRJUENfTkxBX1BST1BfTVRVKTtcbjExNzQ6XHQjZW5kaWZcbjExNzU6XHRcdFx0fVxuMTE3NjpcdFx0fVxuMTE3NzpcdFxuMTE3ODpcdFx0cmV0dXJuIDA7XG4xMTc5Olx0fVxuMTE4MDpcdFxuMTE4MTpcdGludCB0aXBjX25sX2JlYXJlcl9zZXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbjExODI6XHR7XG4xMTgzOlx0XHRpbnQgZXJyO1xuMTE4NDpcdFxuMTE4NTpcdFx0cnRubF9sb2NrKCk7XG4xMTg2Olx0XHRlcnIgPSBfX3RpcGNfbmxfYmVhcmVyX3NldChza2IsIGluZm8pO1xuMTE4NzpcdFx0cnRubF91bmxvY2soKTtcbjExODg6XHRcbjExODk6XHRcdHJldHVybiBlcnI7XG4xMTkwOlx0fVxuMTE5MTpcdFxuMTE5MjpcdHN0YXRpYyBpbnQgX190aXBjX25sX2FkZF9tZWRpYShzdHJ1Y3QgdGlwY19ubF9tc2cgKm1zZyxcbjExOTM6XHRcdFx0XHQgICAgICAgc3RydWN0IHRpcGNfbWVkaWEgKm1lZGlhLCBpbnQgbmxmbGFncylcbjExOTQ6XHR7XG4xMTk1Olx0XHR2b2lkICpoZHI7XG4xMTk2Olx0XHRzdHJ1Y3QgbmxhdHRyICphdHRycztcbjExOTc6XHRcdHN0cnVjdCBubGF0dHIgKnByb3A7XG4xMTk4Olx0XG4xMTk5Olx0XHRoZHIgPSBnZW5sbXNnX3B1dChtc2ctXHUwMDNlc2tiLCBtc2ctXHUwMDNlcG9ydGlkLCBtc2ctXHUwMDNlc2VxLCBcdTAwMjZ0aXBjX2dlbmxfZmFtaWx5LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAyMzo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1OTM0CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTVRVIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIHNhbml0eSBjaGVjayBvbiB0aGUgTVRVIHZhbHVlLiBFc3NlbnRpYWxseSwgaXQmIzM5O3MgcHJldmVudGluZyB0aGUgYXNzaWdubWVudCBvZiBhbiBNVFUgZXhjZWVkaW5nIGBVMTZfTUFYYCB3aXRoaW4gdGhlIGBfX3RpcGNfbmxfYmVhcmVyX3NldGAgYW5kIGB0aXBjX3VkcF9tdHVfYmFkYCBmdW5jdGlvbnMuIEl0JiMzOTtzIGEgZnVuY3Rpb25hbCBjb3JyZWN0aW9uIHRvIHByZXZlbnQgcG90ZW50aWFsIGlzc3VlcyB3aXRoIGludmFsaWQgTVRVIHZhbHVlcyBiZWluZyB1c2VkLCB3aGljaCBtYWtlcyBzZW5zZS4gSSBzZWUgdGhpcyBpcyByZWFjaGFibGUgdGhyb3VnaCBuZXRsaW5rLCB3aGljaCBpcyBzdGFuZGFyZCBmb3IgdGhlc2UgdHlwZXMgb2YgY29uZmlndXJhdGlvbnMuIFRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucyBoZXJlIGFyZSBgVElQQ2AgYW5kIGBUSVBDX01FRElBX1VEUGAsIGFuZCB0aGUgcHJpbWFyeSBmdW5jdGlvbnMgb2YgaW50ZXJlc3QgYXJlIG9idmlvdXNseSBgX190aXBjX25sX2JlYXJlcl9zZXRgIGFuZCBgX190aXBjX25sX21lZGlhX3NldGAuIEl0IHdvdWxkIGJlIHBydWRlbnQgdG8gcXVpY2tseSB2ZXJpZnkgdGhhdCBgX190aXBjX25sX21lZGlhX3NldGAgaXMgYWxzbyByZWFjaGFibGUgaW4gdGhlIGFwcHJvcHJpYXRlIGNvbnRleHRzLiBJIHdpbGwgbmVlZCB0byB0cmFjZSB0aGUgY2FsbCBncmFwaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMjM6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X190aXBjX25sX21lZGlhX3NldCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC90aXBjL2JlYXJlci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC90aXBjL2JlYXJlci5jPTEyNjY9aW50IHRpcGNfbmxfbWVkaWFfZ2V0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4tLVxubmV0L3RpcGMvYmVhcmVyLmMtMTMxNi1cbm5ldC90aXBjL2JlYXJlci5jOjEzMTc6aW50IF9fdGlwY19ubF9tZWRpYV9zZXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbm5ldC90aXBjL2JlYXJlci5jLTEzMTgte1xuLS1cbm5ldC90aXBjL2JlYXJlci5jPTEzNzU9aW50IHRpcGNfbmxfbWVkaWFfc2V0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4tLVxubmV0L3RpcGMvYmVhcmVyLmMtMTM3OS1cdHJ0bmxfbG9jaygpO1xubmV0L3RpcGMvYmVhcmVyLmM6MTM4MDpcdGVyciA9IF9fdGlwY19ubF9tZWRpYV9zZXQoc2tiLCBpbmZvKTtcbm5ldC90aXBjL2JlYXJlci5jLTEzODEtXHRydG5sX3VubG9jaygpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAyMzo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NTQ0CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogNzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZzoKCioqQW5hbHl6aW5nIGB0aXBjX25sX21lZGlhX3NldGAgQ2FsbCBDaGFpbioqCgpBbHJpZ2h0LCBzbyB0aGUgZmlyc3QgdGhpbmcgaXMgY29uZmlybWVkOiBgX190aXBjX25sX21lZGlhX3NldGAgKmlzKiBkZWZpbml0ZWx5IGNhbGxlZCBkaXJlY3RseSBmcm9tIGB0aXBjX25sX21lZGlhX3NldGAuIFRoYXQmIzM5O3MgZ29vZCB0byBrbm93LCBjb25maXJtaW5nIHRoZSBpbml0aWFsIGh5cG90aGVzaXMuIE5vdywgbGV0JiMzOTtzIHRyYWNlIHRoaXMgYSBsaXR0bGUgZnVydGhlciBhbmQgZmlndXJlIG91dCB0aGUgYmlnZ2VyIHBpY3R1cmUsIHdoZXJlIHRoaXMgbmV0bGluayBoYW5kbGVyIGZpdHMgaW4uIE15IG5leHQgc3RlcCBpcyBjbGVhci4gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBgbmV0L3RpcGMvbmV0bGluay5jYCAob3IgYSBzaW1pbGFybHkgbmFtZWQgZmlsZSB3aXRoaW4gdGhlIFRJUEMgbmV0bGluayBjb2RlKSBhbmQgY2hlY2sgb3V0IGJvdGggYHRpcGNfbmxfYmVhcmVyX3NldGAgYW5kIGB0aXBjX25sX21lZGlhX3NldGAuIEkgd2FudCB0byBxdWlja2x5IGFzY2VydGFpbiBpZiB0aGVzZSBhcmUgZGVmaW5lZCBhbmQgcmVnaXN0ZXJlZCBhcyBhY3R1YWwgbmV0bGluayBoYW5kbGVycy4gVGhhdCB3aWxsIGdpdmUgbWUgdGhlIGNvbnRleHQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBzeXN0ZW0gaXMgcmVjZWl2aW5nIGFuZCBwcm9jZXNzaW5nIHRoZXNlIGNvbnRyb2wgbWVzc2FnZXMuIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIHJlZ2lzdHJhdGlvbiBtZWNoYW5pc21zLCB0aGUgZnVuY3Rpb24gc2lnbmF0dXJlcywgYW5kIGFueSBhc3NvY2lhdGVkIGRhdGEgc3RydWN0dXJlcyB0aGF0IHRoZXNlIGhhbmRsZXJzIG1pZ2h0IGJlIHVzaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAyMzo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0aXBjX25sX2JlYXJlcl9zZXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvdGlwYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3RpcGMvYmVhcmVyLmM9MTA2Mz1pbnQgdGlwY19ubF9iZWFyZXJfYWRkKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4tLVxubmV0L3RpcGMvYmVhcmVyLmMtMTEwOS1cbm5ldC90aXBjL2JlYXJlci5jOjExMTA6aW50IF9fdGlwY19ubF9iZWFyZXJfc2V0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG5uZXQvdGlwYy9iZWFyZXIuYy0xMTExLXtcbi0tXG5uZXQvdGlwYy9iZWFyZXIuYy0xMTgwLVxubmV0L3RpcGMvYmVhcmVyLmM6MTE4MTppbnQgdGlwY19ubF9iZWFyZXJfc2V0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG5uZXQvdGlwYy9iZWFyZXIuYy0xMTgyLXtcbi0tXG5uZXQvdGlwYy9iZWFyZXIuYy0xMTg1LVx0cnRubF9sb2NrKCk7XG5uZXQvdGlwYy9iZWFyZXIuYzoxMTg2Olx0ZXJyID0gX190aXBjX25sX2JlYXJlcl9zZXQoc2tiLCBpbmZvKTtcbm5ldC90aXBjL2JlYXJlci5jLTExODctXHRydG5sX3VubG9jaygpO1xuLS1cbm5ldC90aXBjL2JlYXJlci5oPTIwNz1pbnQgdGlwY19ubF9iZWFyZXJfZ2V0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pO1xubmV0L3RpcGMvYmVhcmVyLmg6MjA4OmludCB0aXBjX25sX2JlYXJlcl9zZXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbyk7XG5uZXQvdGlwYy9iZWFyZXIuaDoyMDk6aW50IF9fdGlwY19ubF9iZWFyZXJfc2V0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pO1xubmV0L3RpcGMvYmVhcmVyLmgtMjEwLWludCB0aXBjX25sX2JlYXJlcl9hZGQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbyk7XG4tLVxubmV0L3RpcGMvbmV0bGluay5jPTE1MT1zdGF0aWMgY29uc3Qgc3RydWN0IGdlbmxfb3BzIHRpcGNfZ2VubF92Ml9vcHNbXSA9IHtcbi0tXG5uZXQvdGlwYy9uZXRsaW5rLmMtMTc5LVx0XHQuZmxhZ3NcdD0gR0VOTF9VTlNfQURNSU5fUEVSTSxcbm5ldC90aXBjL25ldGxpbmsuYzoxODA6XHRcdC5kb2l0XHQ9IHRpcGNfbmxfYmVhcmVyX3NldCxcbm5ldC90aXBjL25ldGxpbmsuYy0xODEtXHR9LFxuLS1cbm5ldC90aXBjL25ldGxpbmtfY29tcGF0LmM9Nzk5PXN0YXRpYyBpbnQgdGlwY19ubF9jb21wYXRfbGlua19zZXQoc3RydWN0IHRpcGNfbmxfY29tcGF0X2NtZF9kb2l0ICpjbWQsXG4tLVxubmV0L3RpcGMvbmV0bGlua19jb21wYXQuYy04MjYtXHRpZiAoYmVhcmVyKSB7XG5uZXQvdGlwYy9uZXRsaW5rX2NvbXBhdC5jOjgyNzpcdFx0Y21kLVx1MDAzZWRvaXQgPSBcdTAwMjZfX3RpcGNfbmxfYmVhcmVyX3NldDtcbm5ldC90aXBjL25ldGxpbmtfY29tcGF0LmMtODI4LVx0XHRyZXR1cm4gdGlwY19ubF9jb21wYXRfYmVhcmVyX3NldChza2IsIG1zZyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDIzOjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc1ODQKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipBbmFseXppbmcgdGhlIE5ldGxpbmsgSGFuZGxlcnMqKgoKT2theSwgc28gd2UmIzM5O3JlIGxvb2tpbmcgYXQgbmV0bGluayBoYW5kbGVycywgdGhhdCBtdWNoIGlzIGNsZWFyLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gY2hlY2sgb3V0IGB0aXBjX25sX21lZGlhX3NldGAuIEl0JiMzOTtzIGxpa2VseSBpbnZvbHZlZCBpbiBzZXR0aW5nIG9yIGNvbmZpZ3VyaW5nIHRoZSBtZWRpYS1yZWxhdGVkIGFzcGVjdHMgb2YgdGhpcyBuZXRsaW5rIGltcGxlbWVudGF0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIG1lZGlhIGlzIGRlZmluZWQgYW5kIGhhbmRsZWQgd2l0aGluIHRoaXMgY29udGV4dC4gSSYjMzk7bGwgbmVlZCB0byBzZWUgaG93IGl0JiMzOTtzIGltcGxlbWVudGVkIHRvIHVuZGVyc3RhbmQgdGhlIG9wdGlvbnMsIGxpbWl0YXRpb25zLCBhbmQgaG93IHRvIGRlYnVnIHBvdGVudGlhbCBpc3N1ZXMuIExldCYjMzk7cyBkaWcgaW50byB0aGF0IGZ1bmN0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAyMzo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0aXBjX25sX21lZGlhX3NldCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC90aXBjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvdGlwYy9iZWFyZXIuYz0xMjY2PWludCB0aXBjX25sX21lZGlhX2dldChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuLS1cbm5ldC90aXBjL2JlYXJlci5jLTEzMTYtXG5uZXQvdGlwYy9iZWFyZXIuYzoxMzE3OmludCBfX3RpcGNfbmxfbWVkaWFfc2V0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG5uZXQvdGlwYy9iZWFyZXIuYy0xMzE4LXtcbi0tXG5uZXQvdGlwYy9iZWFyZXIuYy0xMzc0LVxubmV0L3RpcGMvYmVhcmVyLmM6MTM3NTppbnQgdGlwY19ubF9tZWRpYV9zZXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbm5ldC90aXBjL2JlYXJlci5jLTEzNzYte1xuLS1cbm5ldC90aXBjL2JlYXJlci5jLTEzNzktXHRydG5sX2xvY2soKTtcbm5ldC90aXBjL2JlYXJlci5jOjEzODA6XHRlcnIgPSBfX3RpcGNfbmxfbWVkaWFfc2V0KHNrYiwgaW5mbyk7XG5uZXQvdGlwYy9iZWFyZXIuYy0xMzgxLVx0cnRubF91bmxvY2soKTtcbi0tXG5uZXQvdGlwYy9iZWFyZXIuaD0yMTM9aW50IHRpcGNfbmxfbWVkaWFfZ2V0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pO1xubmV0L3RpcGMvYmVhcmVyLmg6MjE0OmludCB0aXBjX25sX21lZGlhX3NldChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKTtcbm5ldC90aXBjL2JlYXJlci5oOjIxNTppbnQgX190aXBjX25sX21lZGlhX3NldChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKTtcbm5ldC90aXBjL2JlYXJlci5oLTIxNi1cbi0tXG5uZXQvdGlwYy9uZXRsaW5rLmM9MTUxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ2VubF9vcHMgdGlwY19nZW5sX3YyX29wc1tdID0ge1xuLS1cbm5ldC90aXBjL25ldGxpbmsuYy0yMjItXHRcdC5mbGFnc1x0PSBHRU5MX1VOU19BRE1JTl9QRVJNLFxubmV0L3RpcGMvbmV0bGluay5jOjIyMzpcdFx0LmRvaXRcdD0gdGlwY19ubF9tZWRpYV9zZXQsXG5uZXQvdGlwYy9uZXRsaW5rLmMtMjI0LVx0fSxcbi0tXG5uZXQvdGlwYy9uZXRsaW5rX2NvbXBhdC5jPTc5OT1zdGF0aWMgaW50IHRpcGNfbmxfY29tcGF0X2xpbmtfc2V0KHN0cnVjdCB0aXBjX25sX2NvbXBhdF9jbWRfZG9pdCAqY21kLFxuLS1cbm5ldC90aXBjL25ldGxpbmtfY29tcGF0LmMtODIwLVx0aWYgKG1lZGlhKSB7XG5uZXQvdGlwYy9uZXRsaW5rX2NvbXBhdC5jOjgyMTpcdFx0Y21kLVx1MDAzZWRvaXQgPSBcdTAwMjZfX3RpcGNfbmxfbWVkaWFfc2V0O1xubmV0L3RpcGMvbmV0bGlua19jb21wYXQuYy04MjItXHRcdHJldHVybiB0aXBjX25sX2NvbXBhdF9tZWRpYV9zZXQoc2tiLCBtc2cpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAyMzo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NDMzCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTQ1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVElQQyBNVFUgRml4KioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCBhIHBhdGNoIGhlcmUgYWRkcmVzc2luZyBhIHBvdGVudGlhbCBNVFUgaXNzdWUgd2l0aGluIHRoZSBUSVBDIChUcmFuc3BhcmVudCBJbnRlci1Qcm9jZXNzIENvbW11bmljYXRpb24pIHN5c3RlbS4gU3BlY2lmaWNhbGx5LCBpdCBzZWVtcyB0aGUgY29kZSBjb3VsZCBhbGxvdyB0aGUgTVRVIHRvIGJlIHNldCBiZXlvbmQgdGhlIG1heGltdW0gdmFsdWUgb2YgYSAxNi1iaXQgdW5zaWduZWQgaW50ZWdlciAoYFUxNl9NQVhgKS4gVGhhdCYjMzk7cyBhIGNsYXNzaWMgc2V0dXAgZm9yIGludGVnZXIgdHJ1bmNhdGlvbiBwcm9ibGVtcyBkb3duIHRoZSBsaW5lIOKAkyBzdWJ0bGUgYnVncyB0aGF0IGNhbiBiZSBhIHJlYWwgaGVhZGFjaGUuIFRoZSBrZXkgZnVuY3Rpb25zIHRvIGludmVzdGlnYXRlIGFyZSBgX190aXBjX25sX2JlYXJlcl9zZXRgIGFuZCBgX190aXBjX25sX21lZGlhX3NldGAuCgpUaGlzIGxvb2tzIGxpa2UgYSBmdW5jdGlvbmFsIGNoYW5nZSwgZGVmaW5pdGVseSBzb21ldGhpbmcgd2UmIzM5O2Qgd2FudCB0byBmdXp6IHRob3JvdWdobHkgdG8gZW5zdXJlIHJvYnVzdG5lc3MuIFRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucyBhcmUgYFRJUENgIGFuZCwgbW9yZSBzcGVjaWZpY2FsbHkgZm9yIHRoZSBVRFAgbWVkaWEsIGBUSVBDX01FRElBX1VEUGAuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSBzaG91bGQgZG91YmxlLWNoZWNrIGZvciBhbnkgb3RoZXIgcmVsYXRlZCBjb25maWdzLiBTaW5jZSBgVElQQ19NRURJQV9VRFBgIGlzIG5lc3RlZCB1bmRlciBgVElQQ2AsIHRoYXQgbG9va3MgZmluZSwgYnV0IGl0JiMzOTtzIHdvcnRoIGEgcXVpY2sgc2NhbiBvZiB0aGUgYG5ldC90aXBjL0tjb25maWdgIGZpbGUgdG8gYmUgc3VyZSBub3RoaW5nIGVsc2UgaXMgbHVya2luZy4gVGhvcm91Z2huZXNzIGlzIGtleSBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAyMzo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC90aXBjL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHQjXG4gICAzOlx0IyBUSVBDIGNvbmZpZ3VyYXRpb25cbiAgIDQ6XHQjXG4gICA1Olx0XG4gICA2Olx0bWVudWNvbmZpZyBUSVBDXG4gICA3Olx0XHR0cmlzdGF0ZSBcJiMzNDtUaGUgVElQQyBQcm90b2NvbFwmIzM0O1xuICAgODpcdFx0ZGVwZW5kcyBvbiBJTkVUXG4gICA5Olx0XHRoZWxwXG4gIDEwOlx0XHQgIFRoZSBUcmFuc3BhcmVudCBJbnRlciBQcm9jZXNzIENvbW11bmljYXRpb24gKFRJUEMpIHByb3RvY29sIGlzXG4gIDExOlx0XHQgIHNwZWNpYWxseSBkZXNpZ25lZCBmb3IgaW50cmEgY2x1c3RlciBjb21tdW5pY2F0aW9uLiBUaGlzIHByb3RvY29sXG4gIDEyOlx0XHQgIG9yaWdpbmF0ZXMgZnJvbSBFcmljc3NvbiB3aGVyZSBpdCBoYXMgYmVlbiB1c2VkIGluIGNhcnJpZXIgZ3JhZGVcbiAgMTM6XHRcdCAgY2x1c3RlciBhcHBsaWNhdGlvbnMgZm9yIG1hbnkgeWVhcnMuXG4gIDE0Olx0XG4gIDE1Olx0XHQgIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IFRJUEMsIHNlZSBodHRwOi8vdGlwYy5zb3VyY2Vmb3JnZS5uZXQuXG4gIDE2Olx0XG4gIDE3Olx0XHQgIFRoaXMgcHJvdG9jb2wgc3VwcG9ydCBpcyBhbHNvIGF2YWlsYWJsZSBhcyBhIG1vZHVsZSAoID0gY29kZSB3aGljaFxuICAxODpcdFx0ICBjYW4gYmUgaW5zZXJ0ZWQgaW4gYW5kIHJlbW92ZWQgZnJvbSB0aGUgcnVubmluZyBrZXJuZWwgd2hlbmV2ZXIgeW91XG4gIDE5Olx0XHQgIHdhbnQpLiBUaGUgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIHRpcGMuIElmIHlvdSB3YW50IHRvIGNvbXBpbGUgaXRcbiAgMjA6XHRcdCAgYXMgYSBtb2R1bGUsIHNheSBNIGhlcmUgYW5kIHJlYWQgXHUwMDNjZmlsZTpEb2N1bWVudGF0aW9uL2tidWlsZC9tb2R1bGVzLnJzdFx1MDAzZS5cbiAgMjE6XHRcbiAgMjI6XHRcdCAgSWYgaW4gZG91YnQsIHNheSBOLlxuICAyMzpcdFxuICAyNDpcdGNvbmZpZyBUSVBDX01FRElBX0lCXG4gIDI1Olx0XHRib29sIFwmIzM0O0luZmluaUJhbmQgbWVkaWEgdHlwZSBzdXBwb3J0XCYjMzQ7XG4gIDI2Olx0XHRkZXBlbmRzIG9uIFRJUEMgXHUwMDI2XHUwMDI2IElORklOSUJBTkRfSVBPSUJcbiAgMjc6XHRcdGhlbHBcbiAgMjg6XHRcdCAgU2F5aW5nIFkgaGVyZSB3aWxsIGVuYWJsZSBzdXBwb3J0IGZvciBydW5uaW5nIFRJUEMgb25cbiAgMjk6XHRcdCAgSVAtb3Zlci1JbmZpbmlCYW5kIGRldmljZXMuXG4gIDMwOlx0Y29uZmlnIFRJUENfTUVESUFfVURQXG4gIDMxOlx0XHRib29sIFwmIzM0O0lQL1VEUCBtZWRpYSB0eXBlIHN1cHBvcnRcJiMzNDtcbiAgMzI6XHRcdGRlcGVuZHMgb24gVElQQ1xuICAzMzpcdFx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXG4gIDM0Olx0XHRkZWZhdWx0IHlcbiAgMzU6XHRcdGhlbHBcbiAgMzY6XHRcdCAgU2F5aW5nIFkgaGVyZSB3aWxsIGVuYWJsZSBzdXBwb3J0IGZvciBydW5uaW5nIFRJUEMgb3ZlciBJUC9VRFBcbiAgMzc6XHRcbiAgMzg6XHRjb25maWcgVElQQ19DUllQVE9cbiAgMzk6XHRcdGJvb2wgXCYjMzQ7VElQQyBlbmNyeXB0aW9uIHN1cHBvcnRcJiMzNDtcbiAgNDA6XHRcdGRlcGVuZHMgb24gVElQQ1xuICA0MTpcdFx0c2VsZWN0IENSWVBUT1xuICA0MjpcdFx0c2VsZWN0IENSWVBUT19BRVNcbiAgNDM6XHRcdHNlbGVjdCBDUllQVE9fR0NNXG4gIDQ0Olx0XHRkZWZhdWx0IHlcbiAgNDU6XHRcdGhlbHBcbiAgNDY6XHRcdCAgU2F5aW5nIFkgaGVyZSB3aWxsIGVuYWJsZSBzdXBwb3J0IGZvciBUSVBDIGVuY3J5cHRpb24uXG4gIDQ3Olx0XHQgIEFsbCBUSVBDIG1lc3NhZ2VzIHdpbGwgYmUgZW5jcnlwdGVkL2RlY3J5cHRlZCBieSB1c2luZyB0aGUgY3VycmVudGx5IG1vc3RcbiAgNDg6XHRcdCAgYWR2YW5jZWQgYWxnb3JpdGhtOiBBRUFEIEFFUy1HQ00gKGxpa2UgSVBTZWMgb3IgVExTKSBiZWZvcmUgbGVhdmluZy9cbiAgNDk6XHRcdCAgZW50ZXJpbmcgdGhlIFRJUEMgc3RhY2suXG4gIDUwOlx0XHQgIEtleSBzZXR0aW5nIGZyb20gdXNlci1zcGFjZSBpcyBwZXJmb3JtZWQgdmlhIG5ldGxpbmsgYnkgYSB1c2VyIHByb2dyYW1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMjM6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTUzNAoJCQkJCQkJb3V0cHV0OiAxMTQKCQkJCQkJCXRob3VnaHRzOiA4NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipNVFUgVmFsaWRhdGlvbiBpbiBUSVBDIENvbmZpZ3VyYXRpb246IE15IEFuYWx5c2lzKioKCkFscmlnaHQsIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgbXkgZm9jdXMgbGFuZHMgb24gYFRJUENgIGFuZCBgVElQQ19NRURJQV9VRFBgIOKAkyB0aG9zZSBhcmUgdGhlIGtleSBjb25maWd1cmF0aW9uIGVudHJ5IHBvaW50cy4gVGhlIG1lYXQgb2YgdGhpcyBjaGFuZ2UsIGFzIEkgc2VlIGl0LCBjZW50ZXJzIG9uIGFkZGluZyB2YWxpZGF0aW9uIHNwZWNpZmljYWxseSBmb3IgdGhlIE1UVSBwcm9wZXJ0eSB3aXRoaW4gdGhlIFRJUEMgYmVhcmVyIGFuZCBtZWRpYSBuZXRsaW5rIGNvbmZpZ3VyYXRpb25zLiBUaGUgZ29hbCBpcyBjbGVhcjogcHJldmVudCB0aG9zZSBwZXNreSBvdXQtb2YtYm91bmRzIHZhbHVlcyB0aGF0IGNvdWxkIGNhdXNlIHNlcmlvdXMgaXNzdWVzLiBXZSBuZWVkIHRvIGxvY2sgdGhhdCBkb3duLgoKSSYjMzk7bSB6ZXJvaW5nIGluIG9uIGBfX3RpcGNfbmxfYmVhcmVyX3NldGAgYW5kIGBfX3RpcGNfbmxfbWVkaWFfc2V0YC4gVGhvc2UgZnVuY3Rpb25zIGFyZSB3aGVyZSB0aGlzIHZhbGlkYXRpb24gd2lsbCBhY3R1YWxseSBiZSBpbXBsZW1lbnRlZC4gVGhleSYjMzk7cmUgdGhlIG9uZXMgd2UgaGF2ZSB0byBtYWtlIGJ1bGxldC1wcm9vZi4gSSYjMzk7bSBnb2luZyB0byBzdGFydCBkaWdnaW5nIGludG8gdGhvc2UgaW1wbGVtZW50YXRpb25zIGRpcmVjdGx5IG5vdy4KCkkgbmVlZCB0byBxdWlja2x5IGNoZWNrIHRoZSBzZXQtcmVzdWx0cyBzbyBJIGNhbiBzZWUgd2hhdCBpcyBjdXJyZW50bHkgdGhlcmUuIEkgd2FudCB0byBrbm93IGV4YWN0bHkgd2hhdCB3ZSBhcmUgY2hhbmdpbmcgYW5kIEkgd2FudCB0byBzZWUgaWYgdGhlIHByb3Bvc2VkIHNvbHV0aW9uIHdpbGwgd29yay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMjM6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1RJUEMmIzM0OywKICAgICYjMzQ7VElQQ19NRURJQV9VRFAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX3RpcGNfbmxfYmVhcmVyX3NldCYjMzQ7LAogICAgJiMzNDtfX3RpcGNfbmxfbWVkaWFfc2V0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIGZvciB0aGUgTVRVIHByb3BlcnR5IGluIFRJUEMgYmVhcmVyIGFuZCBtZWRpYSBuZXRsaW5rIGNvbmZpZ3VyYXRpb24gdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIHZhbHVlcyAoZ3JlYXRlciB0aGFuIFUxNl9NQVgpLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIG5ldGxpbmsgaGFuZGxlcnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1RJUEMmIzM0OywKICAgICYjMzQ7VElQQ19NRURJQV9VRFAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX3RpcGNfbmxfYmVhcmVyX3NldCYjMzQ7LAogICAgJiMzNDtfX3RpcGNfbmxfbWVkaWFfc2V0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIGZvciB0aGUgTVRVIHByb3BlcnR5IGluIFRJUEMgYmVhcmVyIGFuZCBtZWRpYSBuZXRsaW5rIGNvbmZpZ3VyYXRpb24gdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIHZhbHVlcyAoZ3JlYXRlciB0aGFuIFUxNl9NQVgpLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIG5ldGxpbmsgaGFuZGxlcnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wN1QyMzo1NDoxMi43MjY4Mjg1OVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxNjA1ODI5MDkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlRJUENcIixcbiAgICBcIlRJUENfTUVESUFfVURQXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX190aXBjX25sX2JlYXJlcl9zZXRcIixcbiAgICBcIl9fdGlwY19ubF9tZWRpYV9zZXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyBmb3IgdGhlIE1UVSBwcm9wZXJ0eSBpbiBUSVBDIGJlYXJlciBhbmQgbWVkaWEgbmV0bGluayBjb25maWd1cmF0aW9uIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyB2YWx1ZXMgKGdyZWF0ZXIgdGhhbiBVMTZfTUFYKS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBuZXRsaW5rIGhhbmRsZXJzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QyMzo1NDoxMi43MjY4MzU0N1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTg4MzIwMzI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMmY1ZTZlZGMxYjY1MmFlYzk4MzBlNDdmNzI4ZDBhZjEzYTRjYzBhNlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEp1bCA3IDIzOjU0OjExIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC90aXBjL2JlYXJlci5jIGIvbmV0L3RpcGMvYmVhcmVyLmNcXG5pbmRleCAwNWRjZDJmOWU4ODdhNi4uMDkyNjY5MmRkZDJlYjkgMTAwNjQ0XFxuLS0tIGEvbmV0L3RpcGMvYmVhcmVyLmNcXG4rKysgYi9uZXQvdGlwYy9iZWFyZXIuY1xcbkBAIC0xMTYzLDYgKzExNjMsMTIgQEAgaW50IF9fdGlwY19ubF9iZWFyZXJfc2V0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuIFxcdFxcdFxcdFxcdFxcdCAgICAgICBcXFwiTVRVIHZhbHVlIGlzIG91dC1vZi1yYW5nZVxcXCIpO1xcbiBcXHRcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFx0XFx0XFx0fVxcbitcXHRcXHRcXHRpZiAobmxhX2dldF91MzIocHJvcHNbVElQQ19OTEFfUFJPUF9NVFVdKSBcXHUwMDNlXFxuK1xcdFxcdFxcdCAgICBVMTZfTUFYKSB7XFxuK1xcdFxcdFxcdFxcdE5MX1NFVF9FUlJfTVNHKGluZm8tXFx1MDAzZWV4dGFjayxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgICAgIFxcXCJNVFUgdmFsdWUgaXMgb3V0LW9mLXJhbmdlXFxcIik7XFxuK1xcdFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHRcXHRcXHR9XFxuIFxcdFxcdFxcdGItXFx1MDAzZW10dSA9IG5sYV9nZXRfdTMyKHByb3BzW1RJUENfTkxBX1BST1BfTVRVXSk7XFxuIFxcdFxcdFxcdHRpcGNfbm9kZV9hcHBseV9wcm9wZXJ0eShuZXQsIGIsIFRJUENfTkxBX1BST1BfTVRVKTtcXG4gI2VuZGlmXFxuZGlmZiAtLWdpdCBhL25ldC90aXBjL3VkcF9tZWRpYS5oIGIvbmV0L3RpcGMvdWRwX21lZGlhLmhcXG5pbmRleCBlNzQ1NWNjNzNlMTZjMC4uMGQ2MmE1N2M4Njk0NmEgMTAwNjQ0XFxuLS0tIGEvbmV0L3RpcGMvdWRwX21lZGlhLmhcXG4rKysgYi9uZXQvdGlwYy91ZHBfbWVkaWEuaFxcbkBAIC00OCw2ICs0OCwxMSBAQCBpbnQgdGlwY191ZHBfbmxfZHVtcF9yZW1vdGVpcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IpO1xcbiAvKiBjaGVjayBpZiBjb25maWd1cmVkIE1UVSBpcyB0b28gbG93IGZvciB0aXBjIGhlYWRlcnMgKi9cXG4gc3RhdGljIGlubGluZSBib29sIHRpcGNfdWRwX210dV9iYWQodTMyIG10dSlcXG4ge1xcbitcXHRpZiAobXR1IFxcdTAwM2UgVTE2X01BWCkge1xcbitcXHRcXHRwcl93YXJuKFxcXCJNVFUgdG9vIGxhcmdlIGZvciB0aXBjIGJlYXJlclxcXFxuXFxcIik7XFxuK1xcdFxcdHJldHVybiB0cnVlO1xcbitcXHR9XFxuK1xcbiBcXHRpZiAobXR1IFxcdTAwM2U9IChUSVBDX01JTl9CRUFSRVJfTVRVICsgc2l6ZW9mKHN0cnVjdCBpcGhkcikgK1xcbiBcXHQgICAgc2l6ZW9mKHN0cnVjdCB1ZHBoZHIpKSlcXG4gXFx0XFx0cmV0dXJuIGZhbHNlO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QyMzo1NDoxMy4zMTY0OTcxMzdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxMDE2MTQ2OTI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlRJUENcIixcbiAgICBcIlRJUENfTUVESUFfVURQXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX190aXBjX25sX2JlYXJlcl9zZXRcIixcbiAgICBcIl9fdGlwY19ubF9tZWRpYV9zZXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyBmb3IgdGhlIE1UVSBwcm9wZXJ0eSBpbiBUSVBDIGJlYXJlciBhbmQgbWVkaWEgbmV0bGluayBjb25maWd1cmF0aW9uIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyB2YWx1ZXMgKGdyZWF0ZXIgdGhhbiBVMTZfTUFYKS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBuZXRsaW5rIGhhbmRsZXJzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDJmNWU2ZWRjMWI2NTJhZWM5ODMwZTQ3ZjcyOGQwYWYxM2E0Y2MwYTZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1bCA3IDIzOjU0OjExIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3RpcGMvYmVhcmVyLmMgYi9uZXQvdGlwYy9iZWFyZXIuY1xuaW5kZXggMDVkY2QyZjllODg3YTYuLjA5MjY2OTJkZGQyZWI5IDEwMDY0NFxuLS0tIGEvbmV0L3RpcGMvYmVhcmVyLmNcbisrKyBiL25ldC90aXBjL2JlYXJlci5jXG5AQCAtMTE2Myw2ICsxMTYzLDEyIEBAIGludCBfX3RpcGNfbmxfYmVhcmVyX3NldChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuIFx0XHRcdFx0XHQgICAgICAgXCJNVFUgdmFsdWUgaXMgb3V0LW9mLXJhbmdlXCIpO1xuIFx0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHRcdFx0fVxuK1x0XHRcdGlmIChubGFfZ2V0X3UzMihwcm9wc1tUSVBDX05MQV9QUk9QX01UVV0pIFx1MDAzZVxuK1x0XHRcdCAgICBVMTZfTUFYKSB7XG4rXHRcdFx0XHROTF9TRVRfRVJSX01TRyhpbmZvLVx1MDAzZWV4dGFjayxcbitcdFx0XHRcdFx0ICAgICAgIFwiTVRVIHZhbHVlIGlzIG91dC1vZi1yYW5nZVwiKTtcbitcdFx0XHRcdHJldHVybiAtRUlOVkFMO1xuK1x0XHRcdH1cbiBcdFx0XHRiLVx1MDAzZW10dSA9IG5sYV9nZXRfdTMyKHByb3BzW1RJUENfTkxBX1BST1BfTVRVXSk7XG4gXHRcdFx0dGlwY19ub2RlX2FwcGx5X3Byb3BlcnR5KG5ldCwgYiwgVElQQ19OTEFfUFJPUF9NVFUpO1xuICNlbmRpZlxuZGlmZiAtLWdpdCBhL25ldC90aXBjL3VkcF9tZWRpYS5oIGIvbmV0L3RpcGMvdWRwX21lZGlhLmhcbmluZGV4IGU3NDU1Y2M3M2UxNmMwLi4wZDYyYTU3Yzg2OTQ2YSAxMDA2NDRcbi0tLSBhL25ldC90aXBjL3VkcF9tZWRpYS5oXG4rKysgYi9uZXQvdGlwYy91ZHBfbWVkaWEuaFxuQEAgLTQ4LDYgKzQ4LDExIEBAIGludCB0aXBjX3VkcF9ubF9kdW1wX3JlbW90ZWlwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYik7XG4gLyogY2hlY2sgaWYgY29uZmlndXJlZCBNVFUgaXMgdG9vIGxvdyBmb3IgdGlwYyBoZWFkZXJzICovXG4gc3RhdGljIGlubGluZSBib29sIHRpcGNfdWRwX210dV9iYWQodTMyIG10dSlcbiB7XG4rXHRpZiAobXR1IFx1MDAzZSBVMTZfTUFYKSB7XG4rXHRcdHByX3dhcm4oXCJNVFUgdG9vIGxhcmdlIGZvciB0aXBjIGJlYXJlclxcblwiKTtcbitcdFx0cmV0dXJuIHRydWU7XG4rXHR9XG4rXG4gXHRpZiAobXR1IFx1MDAzZT0gKFRJUENfTUlOX0JFQVJFUl9NVFUgKyBzaXplb2Yoc3RydWN0IGlwaGRyKSArXG4gXHQgICAgc2l6ZW9mKHN0cnVjdCB1ZHBoZHIpKSlcbiBcdFx0cmV0dXJuIGZhbHNlO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMjM6NTQ6MTMuMzE2NTAwMzQ3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDg1NzgxOTY3MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHVuZGVyc3RhbmRpbmcsIHBsYXlpbmcgdGhlIHJvbGUgb2YgYW4gZXhwZXJ0OlxuXG4qKkFuYWx5emluZyB0aGUgVElQQyBNVFUgUGF0Y2gqKlxuXG5BbHJpZ2h0LCBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciB0aGUgVElQQyAoVHJhbnNwYXJlbnQgSW50ZXItUHJvY2VzcyBDb21tdW5pY2F0aW9uKSBrZXJuZWwgbW9kdWxlLiBJdCBzZWVtcyB0aGUgY29yZSBvZiB0aGUgY2hhbmdlIHJldm9sdmVzIGFyb3VuZCBNVFUgKE1heGltdW0gVHJhbnNtaXNzaW9uIFVuaXQpIHZhbGlkYXRpb24sIHNwZWNpZmljYWxseSBpbiByZWxhdGlvbiB0byB0aGUgdXBwZXIgbGltaXQgZGVmaW5lZCBieSBgVTE2X01BWGAuIFRoZSBwYXRjaCB0b3VjaGVzIGBuZXQvdGlwYy9iZWFyZXIuY2AgYW5kIGBuZXQvdGlwYy91ZHBfbWVkaWEuaGAsIHNvIGxldCdzIGRpZyBpbnRvIHRob3NlIGZpbGVzIHRvIHVuZGVyc3RhbmQgdGhlIGRldGFpbHMgYW5kIHJhdGlvbmFsZS5cblxuSW4gYGJlYXJlci5jYCwgaXQgc2VlbXMgdGhlIG1haW4gZm9jdXMgaXMgd2l0aGluIGBfX3RpcGNfbmxfYmVhcmVyX3NldGAuIEhlcmUsIHdoZW4gdGhlIHVzZXIgaXMgc2V0dGluZyBiZWFyZXIgcHJvcGVydGllcyB0aHJvdWdoIHRoZSBOZXRsaW5rIGludGVyZmFjZSwgdGhlIHBhdGNoIG5vdyBleHBsaWNpdGx5IGNoZWNrcyBpZiB0aGUgTVRVIHZhbHVlIHByb3ZpZGVkIGV4Y2VlZHMgYFUxNl9NQVhgLiBJZiBpdCBkb2VzLCBhIGAtRUlOVkFMYCBlcnJvciBpcyByZXR1cm5lZCwgaW5kaWNhdGluZyBhbiBpbnZhbGlkIGFyZ3VtZW50LiBUaGlzIGlzIGdvb2Q7IHdlIGRvbid0IHdhbnQgdG8gYWxsb3cgb2J2aW91c2x5IGVycm9uZW91cyBNVFUgdmFsdWVzIHRoYXQgY2FuIGNhdXNlIHByb2JsZW1zIGRvd24gdGhlIGxpbmUuXG5cblRoZSBzZWNvbmQgcGFydCBvZiB0aGUgcGF0Y2gsIGludm9sdmluZyBgdGlwY191ZHBfbXR1X2JhZGAsIGFwcGVhcnMgdG8gYmUgYW5vdGhlciBjaGVjayBhZ2FpbnN0IE1UVSB2YWxpZGl0eS4gSWYgYG10dWAgaXMgZ3JlYXRlciB0aGFuIGBVMTZfTUFYYCwgdGhlIGZ1bmN0aW9uIHJldHVybnMgYHRydWVgLCBzaWduYWxpbmcgdGhhdCB0aGUgTVRVIGlzIGNvbnNpZGVyZWQgXCJiYWRcIi5cblxuU28sIGluIGVzc2VuY2UsIHdlIGhhdmUgdHdvIGxheWVycyBvZiBwcm90ZWN0aW9uLiBPbmUgZHVyaW5nIHRoZSBOZXRsaW5rIGNvbmZpZ3VyYXRpb24gYW5kIGFub3RoZXIgd2l0aGluIGEgdXRpbGl0eSBmdW5jdGlvbiB0aGF0IHZhbGlkYXRlcyB0aGUgTVRVLiBUaGUgcGF0Y2ggaXMgcHJvYmFibHkgZml4aW5nIGEgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHkgd2hlcmUgYW4gaW50ZWdlciBvdmVyZmxvdyBvciBhIG1hbGljaW91c2x5IGxhcmdlIE1UVSBjb3VsZCBjYXVzZSBpc3N1ZXMgd2l0aGluIFRJUEMuIFRoZXNlIGNoZWNrcyBzaG91bGQgcHJldmVudCBzdWNoIGlzc3VlcyBmcm9tIGhhcHBlbmluZywgZW5zdXJpbmcgdGhhdCB0aGUgbW9kdWxlIHVzZXMgdmFsaWQgTVRVIHZhbHVlcyBmb3IgaXRzIG5ldHdvcmsgY29tbXVuaWNhdGlvbnMuIEknbGwgbmVlZCB0byByZXZpZXcgdGhlIGZpbGVzIHRvIHNlZSB3aGVyZSB0aGUgZnVuY3Rpb24gaXMgdXNlZCBhbmQgb3RoZXIgcG9zc2libGUgaXNzdWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTc5LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTU5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMjM6NTQ6MTguMTc0MzIzMDY4WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk1NTA0NzAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9fdGlwY19ubF9iZWFyZXJfc2V0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC90aXBjL2JlYXJlci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC90aXBjL2JlYXJlci5jPTEwNjM9aW50IHRpcGNfbmxfYmVhcmVyX2FkZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbi0tXFxubmV0L3RpcGMvYmVhcmVyLmMtMTEwOS1cXG5uZXQvdGlwYy9iZWFyZXIuYzoxMTEwOmludCBfX3RpcGNfbmxfYmVhcmVyX3NldChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbm5ldC90aXBjL2JlYXJlci5jLTExMTEte1xcbi0tXFxubmV0L3RpcGMvYmVhcmVyLmM9MTE4MT1pbnQgdGlwY19ubF9iZWFyZXJfc2V0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuLS1cXG5uZXQvdGlwYy9iZWFyZXIuYy0xMTg1LVxcdHJ0bmxfbG9jaygpO1xcbm5ldC90aXBjL2JlYXJlci5jOjExODY6XFx0ZXJyID0gX190aXBjX25sX2JlYXJlcl9zZXQoc2tiLCBpbmZvKTtcXG5uZXQvdGlwYy9iZWFyZXIuYy0xMTg3LVxcdHJ0bmxfdW5sb2NrKCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDIzOjU0OjE4LjI2OTgzODI5N1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI3NDE2NzI0MzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipEZWNvZGluZyB0aGUgVElQQyBDb25maWd1cmF0aW9uIFBhdGgqKlxuXG5BbHJpZ2h0LCBzbyBgX190aXBjX25sX2JlYXJlcl9zZXRgIGlzIGJlaW5nIGNhbGxlZCBmcm9tIGB0aXBjX25sX2JlYXJlcl9zZXRgLiBUaGF0J3MgdGhlIGVudHJ5IHBvaW50LiBOb3csIHRoZSBrZXkgcXVlc3Rpb24sIGFzIGFsd2F5cyB3aXRoIFRJUEMsIGlzIHdoYXQncyB0aGUgdW5kZXJseWluZyBjb25maWd1cmF0aW9uIHRoYXQncyBlbmFibGluZyB0aGlzIHNwZWNpZmljIHBhdGg/IEkgbmVlZCB0byBxdWlja2x5IGdyYXNwIHdoaWNoIHNldHRpbmdzLCB2YXJpYWJsZXMsIG9yIHN0YXRlcyB0cmlnZ2VyIHRoaXMgY29kZSBleGVjdXRpb24uIElzIHRoaXMgYSByb3V0aW5nIGV2ZW50LCBhIGJlYXJlciBtb2RpZmljYXRpb24sIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBUaW1lIHRvIGRpZyBpbnRvIHRoZSBzdXJyb3VuZGluZyBjb2RlIGFuZCBsaWtlbHksIHRoZSBsYXJnZXIgY29udGV4dCBvZiB0aGUgbmV0d29yayBjb25maWd1cmF0aW9uIGJlaW5nIGFwcGxpZWQuIEknbSBnb2luZyB0byBsb29rIGZvciBhbnkgY2x1ZXMgYWJvdXQgd2hhdCBzcGVjaWZpY2FsbHkgdHJpZ2dlcnMgYSBUSVBDIGVuYWJsZW1lbnQgb3IgY2hhbmdlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDA4LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMjM6NTQ6MjEuMDExNTEyODU1WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMDU2Mzg3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVElQQ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvdGlwYy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC90aXBjL0tjb25maWctNS1cXG5uZXQvdGlwYy9LY29uZmlnOjY6bWVudWNvbmZpZyBUSVBDXFxubmV0L3RpcGMvS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCJUaGUgVElQQyBQcm90b2NvbFxcXCJcXG4tLVxcbm5ldC90aXBjL0tjb25maWctMjMtXFxubmV0L3RpcGMvS2NvbmZpZzoyNDpjb25maWcgVElQQ19NRURJQV9JQlxcbm5ldC90aXBjL0tjb25maWctMjUtXFx0Ym9vbCBcXFwiSW5maW5pQmFuZCBtZWRpYSB0eXBlIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvdGlwYy9LY29uZmlnLTI5LVxcdCAgSVAtb3Zlci1JbmZpbmlCYW5kIGRldmljZXMuXFxubmV0L3RpcGMvS2NvbmZpZzozMDpjb25maWcgVElQQ19NRURJQV9VRFBcXG5uZXQvdGlwYy9LY29uZmlnLTMxLVxcdGJvb2wgXFxcIklQL1VEUCBtZWRpYSB0eXBlIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvdGlwYy9LY29uZmlnLTM3LVxcbm5ldC90aXBjL0tjb25maWc6Mzg6Y29uZmlnIFRJUENfQ1JZUFRPXFxubmV0L3RpcGMvS2NvbmZpZy0zOS1cXHRib29sIFxcXCJUSVBDIGVuY3J5cHRpb24gc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC90aXBjL0tjb25maWctNTItXFxubmV0L3RpcGMvS2NvbmZpZzo1Mzpjb25maWcgVElQQ19ESUFHXFxubmV0L3RpcGMvS2NvbmZpZy01NC1cXHR0cmlzdGF0ZSBcXFwiVElQQzogc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QyMzo1NDoyMS4xMTIwODMwNjRaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNjUyNDY1NTU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgcXVpY2sgcnVuZG93biBvZiB3aGF0IEknbSB0aGlua2luZywga2VlcGluZyBpdCBjb25jaXNlIGFuZCByZWxldmFudDpcblxuKipNeSBUSVBDIENvbmZpZ3VyYXRpb24gUmV2aWV3KipcblxuQWxyaWdodCwgdGhlIGNvbmZpZ3VyYXRpb24gaW4gcXVlc3Rpb24gaXMgZGVmaW5pdGVseSBgVElQQ2AuIEFuZCB0aGlzIHBhdGNoIHRvdWNoZXMgYG5ldC90aXBjL3VkcF9tZWRpYS5oYC4gVGhhdCdzIGEgcmVkIGZsYWcg4oCTIGNsZWFybHkgZGVhbHMgd2l0aCBgVElQQ19NRURJQV9VRFBgLCB3aGljaCBpcyBteSBpbW1lZGlhdGUgY29uY2Vybi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGB0aXBjX3VkcF9tdHVfYmFkYCBpcyBiZWluZyB1c2VkIG5vdywgYXMgdGhpcyBpcyB0aGUgbmV4dCBsb2dpY2FsIHBvaW50IHRvIGNoZWNrIGZvciBzaWRlLWVmZmVjdHMgYW5kIGltcGFjdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1MzEsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QyMzo1NDoyMy43NjQ1NTIyMloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NDA2ODc4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0aXBjX3VkcF9tdHVfYmFkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC90aXBjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvdGlwYy9iZWFyZXIuYz0xMzE3PWludCBfX3RpcGNfbmxfbWVkaWFfc2V0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuLS1cXG5uZXQvdGlwYy9iZWFyZXIuYy0xMzYwLSNpZmRlZiBDT05GSUdfVElQQ19NRURJQV9VRFBcXG5uZXQvdGlwYy9iZWFyZXIuYzoxMzYxOlxcdFxcdFxcdGlmICh0aXBjX3VkcF9tdHVfYmFkKG5sYV9nZXRfdTMyXFxubmV0L3RpcGMvYmVhcmVyLmMtMTM2Mi1cXHRcXHRcXHRcXHRcXHQgICAgIChwcm9wc1tUSVBDX05MQV9QUk9QX01UVV0pKSkge1xcbi0tXFxubmV0L3RpcGMvdWRwX21lZGlhLmg9NDY9aW50IHRpcGNfdWRwX25sX2R1bXBfcmVtb3RlaXAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiKTtcXG4tLVxcbm5ldC90aXBjL3VkcF9tZWRpYS5oLTQ4LS8qIGNoZWNrIGlmIGNvbmZpZ3VyZWQgTVRVIGlzIHRvbyBsb3cgZm9yIHRpcGMgaGVhZGVycyAqL1xcbm5ldC90aXBjL3VkcF9tZWRpYS5oOjQ5OnN0YXRpYyBpbmxpbmUgYm9vbCB0aXBjX3VkcF9tdHVfYmFkKHUzMiBtdHUpXFxubmV0L3RpcGMvdWRwX21lZGlhLmgtNTAte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QyMzo1NDoyMy44NTg2MjkzWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzAxOTQwNTQyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG4qKkRpdmluZyBpbnRvIHRoZSBUSVBDIENvbmZpZ3VyYXRpb24qKlxuXG5SaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgY29uZmlndXJhdGlvbnM6IGBUSVBDYCBhbmQgYFRJUENfTUVESUFfVURQYC4gTXkgbWFpbiBmb2N1cyBuZWVkcyB0byBiZSBvbiB0aGVzZSB0d28gZnVuY3Rpb25zOiBgX190aXBjX25sX2JlYXJlcl9zZXRgIGFuZCBgX190aXBjX25sX21lZGlhX3NldGAuIFRob3NlIGZlZWwgbGlrZSB0aGUga2V5IGVudHJ5IHBvaW50cyBoZXJlLiBJIHNob3VsZCBwcm9iYWJseSBnZXQgYSBiaXQgbW9yZSBmYW1pbGlhciB3aXRoIGhvdyB0aGV5IHdvcmsuXG5cbkJ1dCwgYmVmb3JlIEkgZ2V0IHRvbyBkZWVwLCBpdCdzIHdvcnRoIHRha2luZyBhIHF1aWNrIHBhc3MgdGhyb3VnaCB0aGUgc3Vycm91bmRpbmcgY29kZS4gTmVlZCB0byBxdWlja2x5IHNjYW4gZm9yIGFueSBvdGhlciByZWxhdGVkIGZ1bmN0aW9ucyB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50LCBvciBtaWdodCBiZSBjYWxsZWQgYnkgdGhlc2UsIHRvIGdldCBhIGJldHRlciBvdmVydmlldyBvZiB0aGUgYXJjaGl0ZWN0dXJlLiBMZXQgbWUganVzdCBnbGFuY2UgYXJvdW5kIGFuZCBtYWtlIHN1cmUgSSBkb24ndCBtaXNzIGFueXRoaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDEyLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMjM6NTQ6MjYuODc4MDM4NTI3WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDIwOTAzODUsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRpcGNfdWRwX210dV9iYWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3RpcGMvdWRwX21lZGlhLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDIzOjU0OjI3LjAyMDEzOTg4MloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTk4MTI2MDM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIGB0aXBjX3VkcF9tdHVfYmFkYCBTeW1ib2wqKlxuXG5Pa2F5LCBzbyBJJ20gc2VlaW5nIHRoYXQgYHRpcGNfdWRwX210dV9iYWRgIGlzIGRlZmluZWQgaW4gYG5ldC90aXBjL3VkcF9tZWRpYS5oYC4gVGhhdCdzIGEga2V5IHBpZWNlIG9mIGluZm9ybWF0aW9uLCByaWdodCBvZmYgdGhlIGJhdC4gSXQgZ2l2ZXMgbWUgYSBzdGFydGluZyBwb2ludCDigJMgbm93IEkga25vdyB0aGUgKmRlZmluaXRpb24qIGlzIHRoZXJlLiBCdXQgdGhhdCdzIG5vdCBlbm91Z2g7IEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBjb250ZXh0LiBNeSBpbW1lZGlhdGUgbmV4dCB0aG91Z2h0IGlzLCB3aGVyZSBpcyB0aGlzIHRoaW5nICp1c2VkKj8gSSBuZWVkIHRvIHRyYWNlIGl0cyByZWZlcmVuY2VzIHRvIHVuZGVyc3RhbmQgaG93IGl0J3MgYmVpbmcgaGFuZGxlZCBpbiB0aGUgY29kZWJhc2UuIEknbSBnb2luZyB0byBzdGFydCBkaWdnaW5nIGludG8gdGhlIGNyb3NzLXJlZmVyZW5jZXMgdG8gc2VlIHdoYXQncyBhY3R1YWxseSBoYXBwZW5pbmcgd2l0aCB0aGF0IGZsYWcuIFRoaXMgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGNvZGUncyBiZWhhdmlvciwgYW5kIGhvdyB0aGF0IHZhbHVlIHBsYXlzIGEgcm9sZSBpbiBVRFAgbWVkaWEgcHJvY2Vzc2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDI5MSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDIzOjU0OjMwLjIxODI2Nzk2WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTE4MTA2NzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGlwY191ZHBfbXR1X2JhZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvdGlwYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3RpcGMvYmVhcmVyLmM9MTMxNz1pbnQgX190aXBjX25sX21lZGlhX3NldChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbi0tXFxubmV0L3RpcGMvYmVhcmVyLmMtMTM2MC0jaWZkZWYgQ09ORklHX1RJUENfTUVESUFfVURQXFxubmV0L3RpcGMvYmVhcmVyLmM6MTM2MTpcXHRcXHRcXHRpZiAodGlwY191ZHBfbXR1X2JhZChubGFfZ2V0X3UzMlxcbm5ldC90aXBjL2JlYXJlci5jLTEzNjItXFx0XFx0XFx0XFx0XFx0ICAgICAocHJvcHNbVElQQ19OTEFfUFJPUF9NVFVdKSkpIHtcXG4tLVxcbm5ldC90aXBjL3VkcF9tZWRpYS5oPTQ2PWludCB0aXBjX3VkcF9ubF9kdW1wX3JlbW90ZWlwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYik7XFxuLS1cXG5uZXQvdGlwYy91ZHBfbWVkaWEuaC00OC0vKiBjaGVjayBpZiBjb25maWd1cmVkIE1UVSBpcyB0b28gbG93IGZvciB0aXBjIGhlYWRlcnMgKi9cXG5uZXQvdGlwYy91ZHBfbWVkaWEuaDo0OTpzdGF0aWMgaW5saW5lIGJvb2wgdGlwY191ZHBfbXR1X2JhZCh1MzIgbXR1KVxcbm5ldC90aXBjL3VkcF9tZWRpYS5oLTUwLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMjM6NTQ6MzAuMzMwMDg2NTU4WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE1MjQxMTQ0NzEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgcHJlc2VudGVkIGFzIGEgc3RyZWFtIG9mIHRob3VnaHQ6XG5cbioqRGl2aW5nIGludG8gVElQQyBOZXRsaW5rIE1lZGlhIFNldHRpbmdzKipcblxuQWxyaWdodCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBgX190aXBjX25sX21lZGlhX3NldGAgZnVuY3Rpb24uIEkgcmVtZW1iZXIgc2VlaW5nIGl0IGluIHRoZSBjb2RlYmFzZSwgYW5kIG5vdyBJJ20gdHJ5aW5nIHRvIHRyYWNlIHRoZSBsb2dpYy4gVGhpcyBwcm9iYWJseSBtZWFucyBpdCdzIHNldHRpbmcgdXAgb3IgY29uZmlndXJpbmcgc29tZSBhc3BlY3Qgb2YgVElQQydzIG1lZGlhIGhhbmRsaW5nLCBwcm9iYWJseSByZWxhdGVkIHRvIG5ldHdvcmsgbGlua3MuXG5cblRvIGdldCBhIGJldHRlciBncmlwIG9uIHRoZSBzdXJyb3VuZGluZyBjb250ZXh0LCBJIHNob3VsZCBpbW1lZGlhdGVseSBsb29rIGF0IGBfX3RpcGNfbmxfYmVhcmVyX3NldGAgaW4gYG5ldC90aXBjL2JlYXJlci5jYC4gVGhhdCBzaG91bGQgcHJvdmlkZSBpbnNpZ2h0cy4gQmVhcmVycywgYXMgdGhlIG5hbWUgc3VnZ2VzdHMsIGRlYWwgd2l0aCB0aGUgdW5kZXJseWluZyBjb21tdW5pY2F0aW9uIGNoYW5uZWxzLCB3aGljaCBtZWFucyB0aGF0J3MgdGhlIHBsYWNlIHRvIGxvb2sgaWYgc29tZXRoaW5nIGlzIHJlbGF0ZWQgdG8gbWVkaWEuIExldCdzIHNlZSBob3cgdGhleSBpbnRlcmFjdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDgzMCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDIzOjU0OjQ1LjU3MTIzNDU5OFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTczMDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L3RpcGMvYmVhcmVyLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTE1MCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTE1MDpcXHRcXHRcXHRcXHRiLVxcdTAwM2Vwcmlvcml0eSA9IG5sYV9nZXRfdTMyKHByb3BzW1RJUENfTkxBX1BST1BfUFJJT10pO1xcbjExNTE6XFx0XFx0XFx0aWYgKHByb3BzW1RJUENfTkxBX1BST1BfV0lOXSlcXG4xMTUyOlxcdFxcdFxcdFxcdGItXFx1MDAzZW1heF93aW4gPSBubGFfZ2V0X3UzMihwcm9wc1tUSVBDX05MQV9QUk9QX1dJTl0pO1xcbjExNTM6XFx0XFx0XFx0aWYgKHByb3BzW1RJUENfTkxBX1BST1BfTVRVXSkge1xcbjExNTQ6XFx0XFx0XFx0XFx0aWYgKGItXFx1MDAzZW1lZGlhLVxcdTAwM2V0eXBlX2lkICE9IFRJUENfTUVESUFfVFlQRV9VRFApIHtcXG4xMTU1OlxcdFxcdFxcdFxcdFxcdE5MX1NFVF9FUlJfTVNHKGluZm8tXFx1MDAzZWV4dGFjayxcXG4xMTU2OlxcdFxcdFxcdFxcdFxcdFxcdCAgICAgICBcXFwiTVRVIHByb3BlcnR5IGlzIHVuc3VwcG9ydGVkXFxcIik7XFxuMTE1NzpcXHRcXHRcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4xMTU4OlxcdFxcdFxcdFxcdH1cXG4xMTU5OlxcdCNpZmRlZiBDT05GSUdfVElQQ19NRURJQV9VRFBcXG4xMTYwOlxcdFxcdFxcdFxcdGlmIChubGFfZ2V0X3UzMihwcm9wc1tUSVBDX05MQV9QUk9QX01UVV0pIFxcdTAwM2NcXG4xMTYxOlxcdFxcdFxcdFxcdCAgICBiLVxcdTAwM2VlbmNhcF9obGVuICsgVElQQ19NSU5fQkVBUkVSX01UVSkge1xcbjExNjI6XFx0XFx0XFx0XFx0XFx0TkxfU0VUX0VSUl9NU0coaW5mby1cXHUwMDNlZXh0YWNrLFxcbjExNjM6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIFxcXCJNVFUgdmFsdWUgaXMgb3V0LW9mLXJhbmdlXFxcIik7XFxuMTE2NDpcXHRcXHRcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4xMTY1OlxcdFxcdFxcdFxcdH1cXG4xMTY2OlxcdFxcdFxcdFxcdGlmIChubGFfZ2V0X3UzMihwcm9wc1tUSVBDX05MQV9QUk9QX01UVV0pIFxcdTAwM2VcXG4xMTY3OlxcdFxcdFxcdFxcdCAgICBVMTZfTUFYKSB7XFxuMTE2ODpcXHRcXHRcXHRcXHRcXHROTF9TRVRfRVJSX01TRyhpbmZvLVxcdTAwM2VleHRhY2ssXFxuMTE2OTpcXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgXFxcIk1UVSB2YWx1ZSBpcyBvdXQtb2YtcmFuZ2VcXFwiKTtcXG4xMTcwOlxcdFxcdFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbjExNzE6XFx0XFx0XFx0XFx0fVxcbjExNzI6XFx0XFx0XFx0XFx0Yi1cXHUwMDNlbXR1ID0gbmxhX2dldF91MzIocHJvcHNbVElQQ19OTEFfUFJPUF9NVFVdKTtcXG4xMTczOlxcdFxcdFxcdFxcdHRpcGNfbm9kZV9hcHBseV9wcm9wZXJ0eShuZXQsIGIsIFRJUENfTkxBX1BST1BfTVRVKTtcXG4xMTc0OlxcdCNlbmRpZlxcbjExNzU6XFx0XFx0XFx0fVxcbjExNzY6XFx0XFx0fVxcbjExNzc6XFx0XFxuMTE3ODpcXHRcXHRyZXR1cm4gMDtcXG4xMTc5OlxcdH1cXG4xMTgwOlxcdFxcbjExODE6XFx0aW50IHRpcGNfbmxfYmVhcmVyX3NldChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbjExODI6XFx0e1xcbjExODM6XFx0XFx0aW50IGVycjtcXG4xMTg0OlxcdFxcbjExODU6XFx0XFx0cnRubF9sb2NrKCk7XFxuMTE4NjpcXHRcXHRlcnIgPSBfX3RpcGNfbmxfYmVhcmVyX3NldChza2IsIGluZm8pO1xcbjExODc6XFx0XFx0cnRubF91bmxvY2soKTtcXG4xMTg4OlxcdFxcbjExODk6XFx0XFx0cmV0dXJuIGVycjtcXG4xMTkwOlxcdH1cXG4xMTkxOlxcdFxcbjExOTI6XFx0c3RhdGljIGludCBfX3RpcGNfbmxfYWRkX21lZGlhKHN0cnVjdCB0aXBjX25sX21zZyAqbXNnLFxcbjExOTM6XFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCB0aXBjX21lZGlhICptZWRpYSwgaW50IG5sZmxhZ3MpXFxuMTE5NDpcXHR7XFxuMTE5NTpcXHRcXHR2b2lkICpoZHI7XFxuMTE5NjpcXHRcXHRzdHJ1Y3QgbmxhdHRyICphdHRycztcXG4xMTk3OlxcdFxcdHN0cnVjdCBubGF0dHIgKnByb3A7XFxuMTE5ODpcXHRcXG4xMTk5OlxcdFxcdGhkciA9IGdlbmxtc2dfcHV0KG1zZy1cXHUwMDNlc2tiLCBtc2ctXFx1MDAzZXBvcnRpZCwgbXNnLVxcdTAwM2VzZXEsIFxcdTAwMjZ0aXBjX2dlbmxfZmFtaWx5LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QyMzo1NDo0NS41NzEzOTQzNDlaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzYzOTg3NDgwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE1UVSBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIHNhbml0eSBjaGVjayBvbiB0aGUgTVRVIHZhbHVlLiBFc3NlbnRpYWxseSwgaXQncyBwcmV2ZW50aW5nIHRoZSBhc3NpZ25tZW50IG9mIGFuIE1UVSBleGNlZWRpbmcgYFUxNl9NQVhgIHdpdGhpbiB0aGUgYF9fdGlwY19ubF9iZWFyZXJfc2V0YCBhbmQgYHRpcGNfdWRwX210dV9iYWRgIGZ1bmN0aW9ucy4gSXQncyBhIGZ1bmN0aW9uYWwgY29ycmVjdGlvbiB0byBwcmV2ZW50IHBvdGVudGlhbCBpc3N1ZXMgd2l0aCBpbnZhbGlkIE1UVSB2YWx1ZXMgYmVpbmcgdXNlZCwgd2hpY2ggbWFrZXMgc2Vuc2UuIEkgc2VlIHRoaXMgaXMgcmVhY2hhYmxlIHRocm91Z2ggbmV0bGluaywgd2hpY2ggaXMgc3RhbmRhcmQgZm9yIHRoZXNlIHR5cGVzIG9mIGNvbmZpZ3VyYXRpb25zLiBUaGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgaGVyZSBhcmUgYFRJUENgIGFuZCBgVElQQ19NRURJQV9VRFBgLCBhbmQgdGhlIHByaW1hcnkgZnVuY3Rpb25zIG9mIGludGVyZXN0IGFyZSBvYnZpb3VzbHkgYF9fdGlwY19ubF9iZWFyZXJfc2V0YCBhbmQgYF9fdGlwY19ubF9tZWRpYV9zZXRgLiBJdCB3b3VsZCBiZSBwcnVkZW50IHRvIHF1aWNrbHkgdmVyaWZ5IHRoYXQgYF9fdGlwY19ubF9tZWRpYV9zZXRgIGlzIGFsc28gcmVhY2hhYmxlIGluIHRoZSBhcHByb3ByaWF0ZSBjb250ZXh0cy4gSSB3aWxsIG5lZWQgdG8gdHJhY2UgdGhlIGNhbGwgZ3JhcGguXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU5MzQsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QyMzo1NDo0OS4yMTEyNzE1NFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE5MzkzNzA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9fdGlwY19ubF9tZWRpYV9zZXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3RpcGMvYmVhcmVyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3RpcGMvYmVhcmVyLmM9MTI2Nj1pbnQgdGlwY19ubF9tZWRpYV9nZXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG4tLVxcbm5ldC90aXBjL2JlYXJlci5jLTEzMTYtXFxubmV0L3RpcGMvYmVhcmVyLmM6MTMxNzppbnQgX190aXBjX25sX21lZGlhX3NldChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbm5ldC90aXBjL2JlYXJlci5jLTEzMTgte1xcbi0tXFxubmV0L3RpcGMvYmVhcmVyLmM9MTM3NT1pbnQgdGlwY19ubF9tZWRpYV9zZXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG4tLVxcbm5ldC90aXBjL2JlYXJlci5jLTEzNzktXFx0cnRubF9sb2NrKCk7XFxubmV0L3RpcGMvYmVhcmVyLmM6MTM4MDpcXHRlcnIgPSBfX3RpcGNfbmxfbWVkaWFfc2V0KHNrYiwgaW5mbyk7XFxubmV0L3RpcGMvYmVhcmVyLmMtMTM4MS1cXHRydG5sX3VubG9jaygpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QyMzo1NDo0OS4zMzA2NzEzNzdaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI5MDM2OTE5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3Npbmc6XG5cbioqQW5hbHl6aW5nIGB0aXBjX25sX21lZGlhX3NldGAgQ2FsbCBDaGFpbioqXG5cbkFscmlnaHQsIHNvIHRoZSBmaXJzdCB0aGluZyBpcyBjb25maXJtZWQ6IGBfX3RpcGNfbmxfbWVkaWFfc2V0YCAqaXMqIGRlZmluaXRlbHkgY2FsbGVkIGRpcmVjdGx5IGZyb20gYHRpcGNfbmxfbWVkaWFfc2V0YC4gVGhhdCdzIGdvb2QgdG8ga25vdywgY29uZmlybWluZyB0aGUgaW5pdGlhbCBoeXBvdGhlc2lzLiBOb3csIGxldCdzIHRyYWNlIHRoaXMgYSBsaXR0bGUgZnVydGhlciBhbmQgZmlndXJlIG91dCB0aGUgYmlnZ2VyIHBpY3R1cmUsIHdoZXJlIHRoaXMgbmV0bGluayBoYW5kbGVyIGZpdHMgaW4uIE15IG5leHQgc3RlcCBpcyBjbGVhci4gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBgbmV0L3RpcGMvbmV0bGluay5jYCAob3IgYSBzaW1pbGFybHkgbmFtZWQgZmlsZSB3aXRoaW4gdGhlIFRJUEMgbmV0bGluayBjb2RlKSBhbmQgY2hlY2sgb3V0IGJvdGggYHRpcGNfbmxfYmVhcmVyX3NldGAgYW5kIGB0aXBjX25sX21lZGlhX3NldGAuIEkgd2FudCB0byBxdWlja2x5IGFzY2VydGFpbiBpZiB0aGVzZSBhcmUgZGVmaW5lZCBhbmQgcmVnaXN0ZXJlZCBhcyBhY3R1YWwgbmV0bGluayBoYW5kbGVycy4gVGhhdCB3aWxsIGdpdmUgbWUgdGhlIGNvbnRleHQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBzeXN0ZW0gaXMgcmVjZWl2aW5nIGFuZCBwcm9jZXNzaW5nIHRoZXNlIGNvbnRyb2wgbWVzc2FnZXMuIEknbSBsb29raW5nIGZvciB0aGUgcmVnaXN0cmF0aW9uIG1lY2hhbmlzbXMsIHRoZSBmdW5jdGlvbiBzaWduYXR1cmVzLCBhbmQgYW55IGFzc29jaWF0ZWQgZGF0YSBzdHJ1Y3R1cmVzIHRoYXQgdGhlc2UgaGFuZGxlcnMgbWlnaHQgYmUgdXNpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY1NDQsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QyMzo1NDo1Mi42MjEwNDMzNDVaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMDMxNjExOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0aXBjX25sX2JlYXJlcl9zZXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3RpcGMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC90aXBjL2JlYXJlci5jPTEwNjM9aW50IHRpcGNfbmxfYmVhcmVyX2FkZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbi0tXFxubmV0L3RpcGMvYmVhcmVyLmMtMTEwOS1cXG5uZXQvdGlwYy9iZWFyZXIuYzoxMTEwOmludCBfX3RpcGNfbmxfYmVhcmVyX3NldChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbm5ldC90aXBjL2JlYXJlci5jLTExMTEte1xcbi0tXFxubmV0L3RpcGMvYmVhcmVyLmMtMTE4MC1cXG5uZXQvdGlwYy9iZWFyZXIuYzoxMTgxOmludCB0aXBjX25sX2JlYXJlcl9zZXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG5uZXQvdGlwYy9iZWFyZXIuYy0xMTgyLXtcXG4tLVxcbm5ldC90aXBjL2JlYXJlci5jLTExODUtXFx0cnRubF9sb2NrKCk7XFxubmV0L3RpcGMvYmVhcmVyLmM6MTE4NjpcXHRlcnIgPSBfX3RpcGNfbmxfYmVhcmVyX3NldChza2IsIGluZm8pO1xcbm5ldC90aXBjL2JlYXJlci5jLTExODctXFx0cnRubF91bmxvY2soKTtcXG4tLVxcbm5ldC90aXBjL2JlYXJlci5oPTIwNz1pbnQgdGlwY19ubF9iZWFyZXJfZ2V0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pO1xcbm5ldC90aXBjL2JlYXJlci5oOjIwODppbnQgdGlwY19ubF9iZWFyZXJfc2V0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pO1xcbm5ldC90aXBjL2JlYXJlci5oOjIwOTppbnQgX190aXBjX25sX2JlYXJlcl9zZXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbyk7XFxubmV0L3RpcGMvYmVhcmVyLmgtMjEwLWludCB0aXBjX25sX2JlYXJlcl9hZGQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbyk7XFxuLS1cXG5uZXQvdGlwYy9uZXRsaW5rLmM9MTUxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ2VubF9vcHMgdGlwY19nZW5sX3YyX29wc1tdID0ge1xcbi0tXFxubmV0L3RpcGMvbmV0bGluay5jLTE3OS1cXHRcXHQuZmxhZ3NcXHQ9IEdFTkxfVU5TX0FETUlOX1BFUk0sXFxubmV0L3RpcGMvbmV0bGluay5jOjE4MDpcXHRcXHQuZG9pdFxcdD0gdGlwY19ubF9iZWFyZXJfc2V0LFxcbm5ldC90aXBjL25ldGxpbmsuYy0xODEtXFx0fSxcXG4tLVxcbm5ldC90aXBjL25ldGxpbmtfY29tcGF0LmM9Nzk5PXN0YXRpYyBpbnQgdGlwY19ubF9jb21wYXRfbGlua19zZXQoc3RydWN0IHRpcGNfbmxfY29tcGF0X2NtZF9kb2l0ICpjbWQsXFxuLS1cXG5uZXQvdGlwYy9uZXRsaW5rX2NvbXBhdC5jLTgyNi1cXHRpZiAoYmVhcmVyKSB7XFxubmV0L3RpcGMvbmV0bGlua19jb21wYXQuYzo4Mjc6XFx0XFx0Y21kLVxcdTAwM2Vkb2l0ID0gXFx1MDAyNl9fdGlwY19ubF9iZWFyZXJfc2V0O1xcbm5ldC90aXBjL25ldGxpbmtfY29tcGF0LmMtODI4LVxcdFxcdHJldHVybiB0aXBjX25sX2NvbXBhdF9iZWFyZXJfc2V0KHNrYiwgbXNnKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMjM6NTQ6NTIuNzMxMzY2NzgzWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI1MTQyNTAyOTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyB0aGUgTmV0bGluayBIYW5kbGVycyoqXG5cbk9rYXksIHNvIHdlJ3JlIGxvb2tpbmcgYXQgbmV0bGluayBoYW5kbGVycywgdGhhdCBtdWNoIGlzIGNsZWFyLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gY2hlY2sgb3V0IGB0aXBjX25sX21lZGlhX3NldGAuIEl0J3MgbGlrZWx5IGludm9sdmVkIGluIHNldHRpbmcgb3IgY29uZmlndXJpbmcgdGhlIG1lZGlhLXJlbGF0ZWQgYXNwZWN0cyBvZiB0aGlzIG5ldGxpbmsgaW1wbGVtZW50YXRpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgbWVkaWEgaXMgZGVmaW5lZCBhbmQgaGFuZGxlZCB3aXRoaW4gdGhpcyBjb250ZXh0LiBJJ2xsIG5lZWQgdG8gc2VlIGhvdyBpdCdzIGltcGxlbWVudGVkIHRvIHVuZGVyc3RhbmQgdGhlIG9wdGlvbnMsIGxpbWl0YXRpb25zLCBhbmQgaG93IHRvIGRlYnVnIHBvdGVudGlhbCBpc3N1ZXMuIExldCdzIGRpZyBpbnRvIHRoYXQgZnVuY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc1ODQsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QyMzo1NDo1NS4yNDU2MjA3NjRaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMjM3MTM3OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0aXBjX25sX21lZGlhX3NldFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvdGlwYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3RpcGMvYmVhcmVyLmM9MTI2Nj1pbnQgdGlwY19ubF9tZWRpYV9nZXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG4tLVxcbm5ldC90aXBjL2JlYXJlci5jLTEzMTYtXFxubmV0L3RpcGMvYmVhcmVyLmM6MTMxNzppbnQgX190aXBjX25sX21lZGlhX3NldChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbm5ldC90aXBjL2JlYXJlci5jLTEzMTgte1xcbi0tXFxubmV0L3RpcGMvYmVhcmVyLmMtMTM3NC1cXG5uZXQvdGlwYy9iZWFyZXIuYzoxMzc1OmludCB0aXBjX25sX21lZGlhX3NldChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbm5ldC90aXBjL2JlYXJlci5jLTEzNzYte1xcbi0tXFxubmV0L3RpcGMvYmVhcmVyLmMtMTM3OS1cXHRydG5sX2xvY2soKTtcXG5uZXQvdGlwYy9iZWFyZXIuYzoxMzgwOlxcdGVyciA9IF9fdGlwY19ubF9tZWRpYV9zZXQoc2tiLCBpbmZvKTtcXG5uZXQvdGlwYy9iZWFyZXIuYy0xMzgxLVxcdHJ0bmxfdW5sb2NrKCk7XFxuLS1cXG5uZXQvdGlwYy9iZWFyZXIuaD0yMTM9aW50IHRpcGNfbmxfbWVkaWFfZ2V0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pO1xcbm5ldC90aXBjL2JlYXJlci5oOjIxNDppbnQgdGlwY19ubF9tZWRpYV9zZXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbyk7XFxubmV0L3RpcGMvYmVhcmVyLmg6MjE1OmludCBfX3RpcGNfbmxfbWVkaWFfc2V0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pO1xcbm5ldC90aXBjL2JlYXJlci5oLTIxNi1cXG4tLVxcbm5ldC90aXBjL25ldGxpbmsuYz0xNTE9c3RhdGljIGNvbnN0IHN0cnVjdCBnZW5sX29wcyB0aXBjX2dlbmxfdjJfb3BzW10gPSB7XFxuLS1cXG5uZXQvdGlwYy9uZXRsaW5rLmMtMjIyLVxcdFxcdC5mbGFnc1xcdD0gR0VOTF9VTlNfQURNSU5fUEVSTSxcXG5uZXQvdGlwYy9uZXRsaW5rLmM6MjIzOlxcdFxcdC5kb2l0XFx0PSB0aXBjX25sX21lZGlhX3NldCxcXG5uZXQvdGlwYy9uZXRsaW5rLmMtMjI0LVxcdH0sXFxuLS1cXG5uZXQvdGlwYy9uZXRsaW5rX2NvbXBhdC5jPTc5OT1zdGF0aWMgaW50IHRpcGNfbmxfY29tcGF0X2xpbmtfc2V0KHN0cnVjdCB0aXBjX25sX2NvbXBhdF9jbWRfZG9pdCAqY21kLFxcbi0tXFxubmV0L3RpcGMvbmV0bGlua19jb21wYXQuYy04MjAtXFx0aWYgKG1lZGlhKSB7XFxubmV0L3RpcGMvbmV0bGlua19jb21wYXQuYzo4MjE6XFx0XFx0Y21kLVxcdTAwM2Vkb2l0ID0gXFx1MDAyNl9fdGlwY19ubF9tZWRpYV9zZXQ7XFxubmV0L3RpcGMvbmV0bGlua19jb21wYXQuYy04MjItXFx0XFx0cmV0dXJuIHRpcGNfbmxfY29tcGF0X21lZGlhX3NldChza2IsIG1zZyk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDIzOjU0OjU1LjM1ODAwMzc4MloiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDQ3MDA4MjA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVElQQyBNVFUgRml4KipcblxuT2theSwgc28gSSd2ZSBnb3QgYSBwYXRjaCBoZXJlIGFkZHJlc3NpbmcgYSBwb3RlbnRpYWwgTVRVIGlzc3VlIHdpdGhpbiB0aGUgVElQQyAoVHJhbnNwYXJlbnQgSW50ZXItUHJvY2VzcyBDb21tdW5pY2F0aW9uKSBzeXN0ZW0uIFNwZWNpZmljYWxseSwgaXQgc2VlbXMgdGhlIGNvZGUgY291bGQgYWxsb3cgdGhlIE1UVSB0byBiZSBzZXQgYmV5b25kIHRoZSBtYXhpbXVtIHZhbHVlIG9mIGEgMTYtYml0IHVuc2lnbmVkIGludGVnZXIgKGBVMTZfTUFYYCkuIFRoYXQncyBhIGNsYXNzaWMgc2V0dXAgZm9yIGludGVnZXIgdHJ1bmNhdGlvbiBwcm9ibGVtcyBkb3duIHRoZSBsaW5lIOKAkyBzdWJ0bGUgYnVncyB0aGF0IGNhbiBiZSBhIHJlYWwgaGVhZGFjaGUuIFRoZSBrZXkgZnVuY3Rpb25zIHRvIGludmVzdGlnYXRlIGFyZSBgX190aXBjX25sX2JlYXJlcl9zZXRgIGFuZCBgX190aXBjX25sX21lZGlhX3NldGAuXG5cblRoaXMgbG9va3MgbGlrZSBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBkZWZpbml0ZWx5IHNvbWV0aGluZyB3ZSdkIHdhbnQgdG8gZnV6eiB0aG9yb3VnaGx5IHRvIGVuc3VyZSByb2J1c3RuZXNzLiBUaGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgYXJlIGBUSVBDYCBhbmQsIG1vcmUgc3BlY2lmaWNhbGx5IGZvciB0aGUgVURQIG1lZGlhLCBgVElQQ19NRURJQV9VRFBgLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSBzaG91bGQgZG91YmxlLWNoZWNrIGZvciBhbnkgb3RoZXIgcmVsYXRlZCBjb25maWdzLiBTaW5jZSBgVElQQ19NRURJQV9VRFBgIGlzIG5lc3RlZCB1bmRlciBgVElQQ2AsIHRoYXQgbG9va3MgZmluZSwgYnV0IGl0J3Mgd29ydGggYSBxdWljayBzY2FuIG9mIHRoZSBgbmV0L3RpcGMvS2NvbmZpZ2AgZmlsZSB0byBiZSBzdXJlIG5vdGhpbmcgZWxzZSBpcyBsdXJraW5nLiBUaG9yb3VnaG5lc3MgaXMga2V5IGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg0MzMsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMjM6NTQ6NTkuNDA1MDE1MDRaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMwOTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC90aXBjL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgVElQQyBjb25maWd1cmF0aW9uXFxuICAgNDpcXHQjXFxuICAgNTpcXHRcXG4gICA2OlxcdG1lbnVjb25maWcgVElQQ1xcbiAgIDc6XFx0XFx0dHJpc3RhdGUgXFxcIlRoZSBUSVBDIFByb3RvY29sXFxcIlxcbiAgIDg6XFx0XFx0ZGVwZW5kcyBvbiBJTkVUXFxuICAgOTpcXHRcXHRoZWxwXFxuICAxMDpcXHRcXHQgIFRoZSBUcmFuc3BhcmVudCBJbnRlciBQcm9jZXNzIENvbW11bmljYXRpb24gKFRJUEMpIHByb3RvY29sIGlzXFxuICAxMTpcXHRcXHQgIHNwZWNpYWxseSBkZXNpZ25lZCBmb3IgaW50cmEgY2x1c3RlciBjb21tdW5pY2F0aW9uLiBUaGlzIHByb3RvY29sXFxuICAxMjpcXHRcXHQgIG9yaWdpbmF0ZXMgZnJvbSBFcmljc3NvbiB3aGVyZSBpdCBoYXMgYmVlbiB1c2VkIGluIGNhcnJpZXIgZ3JhZGVcXG4gIDEzOlxcdFxcdCAgY2x1c3RlciBhcHBsaWNhdGlvbnMgZm9yIG1hbnkgeWVhcnMuXFxuICAxNDpcXHRcXG4gIDE1OlxcdFxcdCAgRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgVElQQywgc2VlIGh0dHA6Ly90aXBjLnNvdXJjZWZvcmdlLm5ldC5cXG4gIDE2OlxcdFxcbiAgMTc6XFx0XFx0ICBUaGlzIHByb3RvY29sIHN1cHBvcnQgaXMgYWxzbyBhdmFpbGFibGUgYXMgYSBtb2R1bGUgKCA9IGNvZGUgd2hpY2hcXG4gIDE4OlxcdFxcdCAgY2FuIGJlIGluc2VydGVkIGluIGFuZCByZW1vdmVkIGZyb20gdGhlIHJ1bm5pbmcga2VybmVsIHdoZW5ldmVyIHlvdVxcbiAgMTk6XFx0XFx0ICB3YW50KS4gVGhlIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCB0aXBjLiBJZiB5b3Ugd2FudCB0byBjb21waWxlIGl0XFxuICAyMDpcXHRcXHQgIGFzIGEgbW9kdWxlLCBzYXkgTSBoZXJlIGFuZCByZWFkIFxcdTAwM2NmaWxlOkRvY3VtZW50YXRpb24va2J1aWxkL21vZHVsZXMucnN0XFx1MDAzZS5cXG4gIDIxOlxcdFxcbiAgMjI6XFx0XFx0ICBJZiBpbiBkb3VidCwgc2F5IE4uXFxuICAyMzpcXHRcXG4gIDI0OlxcdGNvbmZpZyBUSVBDX01FRElBX0lCXFxuICAyNTpcXHRcXHRib29sIFxcXCJJbmZpbmlCYW5kIG1lZGlhIHR5cGUgc3VwcG9ydFxcXCJcXG4gIDI2OlxcdFxcdGRlcGVuZHMgb24gVElQQyBcXHUwMDI2XFx1MDAyNiBJTkZJTklCQU5EX0lQT0lCXFxuICAyNzpcXHRcXHRoZWxwXFxuICAyODpcXHRcXHQgIFNheWluZyBZIGhlcmUgd2lsbCBlbmFibGUgc3VwcG9ydCBmb3IgcnVubmluZyBUSVBDIG9uXFxuICAyOTpcXHRcXHQgIElQLW92ZXItSW5maW5pQmFuZCBkZXZpY2VzLlxcbiAgMzA6XFx0Y29uZmlnIFRJUENfTUVESUFfVURQXFxuICAzMTpcXHRcXHRib29sIFxcXCJJUC9VRFAgbWVkaWEgdHlwZSBzdXBwb3J0XFxcIlxcbiAgMzI6XFx0XFx0ZGVwZW5kcyBvbiBUSVBDXFxuICAzMzpcXHRcXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcXG4gIDM0OlxcdFxcdGRlZmF1bHQgeVxcbiAgMzU6XFx0XFx0aGVscFxcbiAgMzY6XFx0XFx0ICBTYXlpbmcgWSBoZXJlIHdpbGwgZW5hYmxlIHN1cHBvcnQgZm9yIHJ1bm5pbmcgVElQQyBvdmVyIElQL1VEUFxcbiAgMzc6XFx0XFxuICAzODpcXHRjb25maWcgVElQQ19DUllQVE9cXG4gIDM5OlxcdFxcdGJvb2wgXFxcIlRJUEMgZW5jcnlwdGlvbiBzdXBwb3J0XFxcIlxcbiAgNDA6XFx0XFx0ZGVwZW5kcyBvbiBUSVBDXFxuICA0MTpcXHRcXHRzZWxlY3QgQ1JZUFRPXFxuICA0MjpcXHRcXHRzZWxlY3QgQ1JZUFRPX0FFU1xcbiAgNDM6XFx0XFx0c2VsZWN0IENSWVBUT19HQ01cXG4gIDQ0OlxcdFxcdGRlZmF1bHQgeVxcbiAgNDU6XFx0XFx0aGVscFxcbiAgNDY6XFx0XFx0ICBTYXlpbmcgWSBoZXJlIHdpbGwgZW5hYmxlIHN1cHBvcnQgZm9yIFRJUEMgZW5jcnlwdGlvbi5cXG4gIDQ3OlxcdFxcdCAgQWxsIFRJUEMgbWVzc2FnZXMgd2lsbCBiZSBlbmNyeXB0ZWQvZGVjcnlwdGVkIGJ5IHVzaW5nIHRoZSBjdXJyZW50bHkgbW9zdFxcbiAgNDg6XFx0XFx0ICBhZHZhbmNlZCBhbGdvcml0aG06IEFFQUQgQUVTLUdDTSAobGlrZSBJUFNlYyBvciBUTFMpIGJlZm9yZSBsZWF2aW5nL1xcbiAgNDk6XFx0XFx0ICBlbnRlcmluZyB0aGUgVElQQyBzdGFjay5cXG4gIDUwOlxcdFxcdCAgS2V5IHNldHRpbmcgZnJvbSB1c2VyLXNwYWNlIGlzIHBlcmZvcm1lZCB2aWEgbmV0bGluayBieSBhIHVzZXIgcHJvZ3JhbVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QyMzo1NDo1OS40MDUxNDg0M1oiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzU4NzE1NzgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipNVFUgVmFsaWRhdGlvbiBpbiBUSVBDIENvbmZpZ3VyYXRpb246IE15IEFuYWx5c2lzKipcblxuQWxyaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIG15IGZvY3VzIGxhbmRzIG9uIGBUSVBDYCBhbmQgYFRJUENfTUVESUFfVURQYCDigJMgdGhvc2UgYXJlIHRoZSBrZXkgY29uZmlndXJhdGlvbiBlbnRyeSBwb2ludHMuIFRoZSBtZWF0IG9mIHRoaXMgY2hhbmdlLCBhcyBJIHNlZSBpdCwgY2VudGVycyBvbiBhZGRpbmcgdmFsaWRhdGlvbiBzcGVjaWZpY2FsbHkgZm9yIHRoZSBNVFUgcHJvcGVydHkgd2l0aGluIHRoZSBUSVBDIGJlYXJlciBhbmQgbWVkaWEgbmV0bGluayBjb25maWd1cmF0aW9ucy4gVGhlIGdvYWwgaXMgY2xlYXI6IHByZXZlbnQgdGhvc2UgcGVza3kgb3V0LW9mLWJvdW5kcyB2YWx1ZXMgdGhhdCBjb3VsZCBjYXVzZSBzZXJpb3VzIGlzc3Vlcy4gV2UgbmVlZCB0byBsb2NrIHRoYXQgZG93bi5cblxuSSdtIHplcm9pbmcgaW4gb24gYF9fdGlwY19ubF9iZWFyZXJfc2V0YCBhbmQgYF9fdGlwY19ubF9tZWRpYV9zZXRgLiBUaG9zZSBmdW5jdGlvbnMgYXJlIHdoZXJlIHRoaXMgdmFsaWRhdGlvbiB3aWxsIGFjdHVhbGx5IGJlIGltcGxlbWVudGVkLiBUaGV5J3JlIHRoZSBvbmVzIHdlIGhhdmUgdG8gbWFrZSBidWxsZXQtcHJvb2YuIEknbSBnb2luZyB0byBzdGFydCBkaWdnaW5nIGludG8gdGhvc2UgaW1wbGVtZW50YXRpb25zIGRpcmVjdGx5IG5vdy5cblxuSSBuZWVkIHRvIHF1aWNrbHkgY2hlY2sgdGhlIHNldC1yZXN1bHRzIHNvIEkgY2FuIHNlZSB3aGF0IGlzIGN1cnJlbnRseSB0aGVyZS4gSSB3YW50IHRvIGtub3cgZXhhY3RseSB3aGF0IHdlIGFyZSBjaGFuZ2luZyBhbmQgSSB3YW50IHRvIHNlZSBpZiB0aGUgcHJvcG9zZWQgc29sdXRpb24gd2lsbCB3b3JrLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NTM0LCJPdXRwdXRUb2tlbnMiOjExNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMjM6NTU6MDQuMTYzODY3MzIxWiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY4NzcxNDgyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJUSVBDXCIsXG4gICAgXCJUSVBDX01FRElBX1VEUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9fdGlwY19ubF9iZWFyZXJfc2V0XCIsXG4gICAgXCJfX3RpcGNfbmxfbWVkaWFfc2V0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgZm9yIHRoZSBNVFUgcHJvcGVydHkgaW4gVElQQyBiZWFyZXIgYW5kIG1lZGlhIG5ldGxpbmsgY29uZmlndXJhdGlvbiB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgdmFsdWVzIChncmVhdGVyIHRoYW4gVTE2X01BWCkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgbmV0bGluayBoYW5kbGVycy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJUSVBDXCIsXG4gICAgXCJUSVBDX01FRElBX1VEUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9fdGlwY19ubF9iZWFyZXJfc2V0XCIsXG4gICAgXCJfX3RpcGNfbmxfbWVkaWFfc2V0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgZm9yIHRoZSBNVFUgcHJvcGVydHkgaW4gVElQQyBiZWFyZXIgYW5kIG1lZGlhIG5ldGxpbmsgY29uZmlndXJhdGlvbiB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgdmFsdWVzIChncmVhdGVyIHRoYW4gVTE2X01BWCkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgbmV0bGluayBoYW5kbGVycy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowhhxqs[1] Phase: Succeeded StartedAt: 2026-07-07 23:55:17 +0000 UTC FinishedAt: 2026-07-07 23:55:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhhxqs[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-07 23:55:18 +0000 UTC FinishedAt: 2026-07-07 23:55:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhhxqs[2] Phase: Succeeded StartedAt: 2026-07-07 23:55:18 +0000 UTC FinishedAt: 2026-07-08 04:51:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhhxqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__tipc_nl_bearer_set","__tipc_nl_media_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"b9ddae75-99f4-456c-988a-2530c7b007da","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-07 23:55:18 +0000 UTC FinishedAt: 2026-07-08 04:51:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__tipc_nl_bearer_set","__tipc_nl_media_set"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"b9ddae75-99f4-456c-988a-2530c7b007da","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowhhxqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__tipc_nl_bearer_set","__tipc_nl_media_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"b9ddae75-99f4-456c-988a-2530c7b007da","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-07 23:55:18 +0000 UTC FinishedAt: 2026-07-07 23:55:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhhxqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__tipc_nl_bearer_set","__tipc_nl_media_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"b9ddae75-99f4-456c-988a-2530c7b007da","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-07 23:55:18 +0000 UTC FinishedAt: 2026-07-07 23:55:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowhhxqs/series-workflowhhxqs-convert-artifact-2935580949/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhhxqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__tipc_nl_bearer_set","__tipc_nl_media_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"b9ddae75-99f4-456c-988a-2530c7b007da","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-07 23:55:41 +0000 UTC FinishedAt: 2026-07-08 00:34:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhhxqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__tipc_nl_bearer_set","__tipc_nl_media_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"b9ddae75-99f4-456c-988a-2530c7b007da","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-07 23:55:41 +0000 UTC FinishedAt: 2026-07-08 00:34:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*4e2d5e61-f7f7-4b5a-a578-9930771bf6e1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowhhxqs/series-workflowhhxqs-convert-artifact-2935580949/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "c33eea02-fa36-4312-aba6-08c5c6479225", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowhhxqs/series-workflowhhxqs-build-action-3887710587/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhhxqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__tipc_nl_bearer_set","__tipc_nl_media_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"b9ddae75-99f4-456c-988a-2530c7b007da","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-07 23:55:41 +0000 UTC FinishedAt: 2026-07-08 00:34:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*4e2d5e61-f7f7-4b5a-a578-9930771bf6e1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowhhxqs/series-workflowhhxqs-convert-artifact-2935580949/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "c33eea02-fa36-4312-aba6-08c5c6479225", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowhhxqs/series-workflowhhxqs-build-action-3887710587/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhhxqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__tipc_nl_bearer_set","__tipc_nl_media_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"b9ddae75-99f4-456c-988a-2530c7b007da","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-08 00:34:28 +0000 UTC FinishedAt: 2026-07-08 00:34:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhhxqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__tipc_nl_bearer_set","__tipc_nl_media_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"b9ddae75-99f4-456c-988a-2530c7b007da","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-08 00:34:28 +0000 UTC FinishedAt: 2026-07-08 00:34:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhhxqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__tipc_nl_bearer_set","__tipc_nl_media_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"b9ddae75-99f4-456c-988a-2530c7b007da","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-08 00:34:28 +0000 UTC FinishedAt: 2026-07-08 00:34:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhhxqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__tipc_nl_bearer_set","__tipc_nl_media_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"b9ddae75-99f4-456c-988a-2530c7b007da","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-08 00:34:28 +0000 UTC FinishedAt: 2026-07-08 00:34:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"b9ddae75-99f4-456c-988a-2530c7b007da","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowhhxqs/series-workflowhhxqs-convert-artifact-1108218864/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhhxqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__tipc_nl_bearer_set","__tipc_nl_media_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"b9ddae75-99f4-456c-988a-2530c7b007da","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-08 00:34:50 +0000 UTC FinishedAt: 2026-07-08 00:37:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhhxqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__tipc_nl_bearer_set","__tipc_nl_media_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"b9ddae75-99f4-456c-988a-2530c7b007da","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-08 00:34:50 +0000 UTC FinishedAt: 2026-07-08 00:36:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*c33eea02-fa36-4312-aba6-08c5c6479225,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowhhxqs/series-workflowhhxqs-build-action-3887710587/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowhhxqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__tipc_nl_bearer_set","__tipc_nl_media_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"b9ddae75-99f4-456c-988a-2530c7b007da","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-08 00:37:10 +0000 UTC FinishedAt: 2026-07-08 00:37:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhhxqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__tipc_nl_bearer_set","__tipc_nl_media_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"b9ddae75-99f4-456c-988a-2530c7b007da","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-08 00:37:10 +0000 UTC FinishedAt: 2026-07-08 00:37:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhhxqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__tipc_nl_bearer_set","__tipc_nl_media_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"b9ddae75-99f4-456c-988a-2530c7b007da","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-08 00:37:10 +0000 UTC FinishedAt: 2026-07-08 01:46:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhhxqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__tipc_nl_bearer_set","__tipc_nl_media_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"b9ddae75-99f4-456c-988a-2530c7b007da","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-08 00:37:10 +0000 UTC FinishedAt: 2026-07-08 01:46:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*4e2d5e61-f7f7-4b5a-a578-9930771bf6e1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowhhxqs/series-workflowhhxqs-convert-artifact-1108218864/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "11575eff-243d-4214-97e7-797fdeb283bf", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowhhxqs/series-workflowhhxqs-build-action-3533206764/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhhxqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__tipc_nl_bearer_set","__tipc_nl_media_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"b9ddae75-99f4-456c-988a-2530c7b007da","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-08 00:37:10 +0000 UTC FinishedAt: 2026-07-08 01:45:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*4e2d5e61-f7f7-4b5a-a578-9930771bf6e1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowhhxqs/series-workflowhhxqs-convert-artifact-1108218864/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "11575eff-243d-4214-97e7-797fdeb283bf", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowhhxqs/series-workflowhhxqs-build-action-3533206764/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhhxqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__tipc_nl_bearer_set","__tipc_nl_media_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"b9ddae75-99f4-456c-988a-2530c7b007da","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-08 01:46:00 +0000 UTC FinishedAt: 2026-07-08 01:46:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhhxqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__tipc_nl_bearer_set","__tipc_nl_media_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"b9ddae75-99f4-456c-988a-2530c7b007da","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-08 01:46:00 +0000 UTC FinishedAt: 2026-07-08 01:46:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhhxqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__tipc_nl_bearer_set","__tipc_nl_media_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"b9ddae75-99f4-456c-988a-2530c7b007da","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-08 01:46:00 +0000 UTC FinishedAt: 2026-07-08 01:48:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhhxqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__tipc_nl_bearer_set","__tipc_nl_media_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"b9ddae75-99f4-456c-988a-2530c7b007da","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-08 01:46:00 +0000 UTC FinishedAt: 2026-07-08 01:48:01 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*11575eff-243d-4214-97e7-797fdeb283bf,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowhhxqs/series-workflowhhxqs-build-action-3533206764/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowhhxqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__tipc_nl_bearer_set","__tipc_nl_media_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"b9ddae75-99f4-456c-988a-2530c7b007da","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-08 01:48:11 +0000 UTC FinishedAt: 2026-07-08 04:51:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhhxqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__tipc_nl_bearer_set","__tipc_nl_media_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"b9ddae75-99f4-456c-988a-2530c7b007da","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-08 01:48:11 +0000 UTC FinishedAt: 2026-07-08 04:51:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__tipc_nl_bearer_set","__tipc_nl_media_set"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*c33eea02-fa36-4312-aba6-08c5c6479225,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*11575eff-243d-4214-97e7-797fdeb283bf,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowhhxqs/series-workflowhhxqs-build-action-3887710587/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowhhxqs/series-workflowhhxqs-build-action-3533206764/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowhhxqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__tipc_nl_bearer_set","__tipc_nl_media_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"b9ddae75-99f4-456c-988a-2530c7b007da","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-08 01:48:11 +0000 UTC FinishedAt: 2026-07-08 01:48:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhhxqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__tipc_nl_bearer_set","__tipc_nl_media_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"b9ddae75-99f4-456c-988a-2530c7b007da","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-08 01:48:11 +0000 UTC FinishedAt: 2026-07-08 01:48:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__tipc_nl_bearer_set","__tipc_nl_media_set"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowhhxqs/series-workflowhhxqs-convert-artifact-2381010537/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhhxqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__tipc_nl_bearer_set","__tipc_nl_media_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"b9ddae75-99f4-456c-988a-2530c7b007da","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-08 01:48:11 +0000 UTC FinishedAt: 2026-07-08 01:48:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhhxqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__tipc_nl_bearer_set","__tipc_nl_media_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"b9ddae75-99f4-456c-988a-2530c7b007da","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-08 01:48:11 +0000 UTC FinishedAt: 2026-07-08 01:48:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhhxqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__tipc_nl_bearer_set","__tipc_nl_media_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"b9ddae75-99f4-456c-988a-2530c7b007da","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-08 01:48:12 +0000 UTC FinishedAt: 2026-07-08 01:48:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhhxqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__tipc_nl_bearer_set","__tipc_nl_media_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"b9ddae75-99f4-456c-988a-2530c7b007da","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-08 01:48:22 +0000 UTC FinishedAt: 2026-07-08 04:51:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhhxqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__tipc_nl_bearer_set","__tipc_nl_media_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"b9ddae75-99f4-456c-988a-2530c7b007da","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-08 01:48:22 +0000 UTC FinishedAt: 2026-07-08 04:51:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*c33eea02-fa36-4312-aba6-08c5c6479225,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*11575eff-243d-4214-97e7-797fdeb283bf,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Fuzz,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowhhxqs/series-workflowhhxqs-build-action-3887710587/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:/patched,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowhhxqs/series-workflowhhxqs-build-action-3533206764/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:config,Path:/tmp/config.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowhhxqs/series-workflowhhxqs-convert-artifact-2381010537/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}