Name: series-workflowtjvfh Phase: Succeeded StartedAt: 2026-09-11 06:44:32 +0000 UTC FinishedAt: 2026-09-11 10:46:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtjvfh[0] Phase: Succeeded StartedAt: 2026-09-11 06:44:32 +0000 UTC FinishedAt: 2026-09-11 07:05:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtjvfh[0].run-triage Phase: Succeeded StartedAt: 2026-09-11 06:44:32 +0000 UTC FinishedAt: 2026-09-11 07:05:49 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "d4b7fb647204f0c81dfeae2d1a708e4d858e0c94", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM", "KVM_INTEL", "KVM_AMD" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "d4b7fb647204f0c81dfeae2d1a708e4d858e0c94", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM", "KVM_INTEL", "KVM_AMD" ], "series_id": "a6903d7a-0ce0-4948-a78f-8223ce8066fb" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "kvm_mmu_change_mmu_pages", "kvm_vm_ioctl_set_nr_mmu_pages" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDA3OjA0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7LAogICAgJiMzNDtLVk1fSU5URUwmIzM0OywKICAgICYjMzQ7S1ZNX0FNRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9tbXVfY2hhbmdlX21tdV9wYWdlcyYjMzQ7LAogICAgJiMzNDtrdm1fdm1faW9jdGxfc2V0X25yX21tdV9wYWdlcyYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGEgY2FsY3VsYXRpb24gaW4gYGt2bV9tbXVfY2hhbmdlX21tdV9wYWdlcygpYCB0byBwcmV2ZW50IGBuX21heF9tbXVfcGFnZXNgIGZyb20gYmVpbmcgc2V0IGxvd2VyIHRoYW4gYGdvYWxfbnJfbW11X3BhZ2VzYCBpZiBga3ZtX21tdV96YXBfb2xkZXN0X21tdV9wYWdlcygpYCB6YXBzIG1vcmUgc2hhZG93IHBhZ2VzIHRoYW4gcmVxdWVzdGVkLiBUaGlzIGNoYW5nZSBvbmx5IHVwZGF0ZXMgYSBzY2FsYXIgaW50ZWdlciB2YWx1ZSB0cmFja2luZyBNTVUgcGFnZSBsaW1pdHMgYW5kIGRvZXMgbm90IGludm9sdmUgbWVtb3J5IGFsbG9jYXRpb25zLCB1bmluaXRpYWxpemVkIHZhcmlhYmxlIHVzYWdlLCBvciBjb3B5aW5nIGtlcm5lbCBkYXRhIHRvIHVzZXJzcGFjZS4gVGhlcmVmb3JlLCB0aGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3Mgb3Iga2VybmVsIGluZm8tbGVha3MsIGFuZCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBzaGFkb3cgTU1VIHBhZ2UgY291bnQgbWFuYWdlbWVudCBsb2dpYyBpbiB4ODYgS1ZNIChga3ZtX21tdV9jaGFuZ2VfbW11X3BhZ2VzYCksIHdoaWNoIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgS1ZNIGlvY3RscyAoc3VjaCBhcyBLVk1fU0VUX05SX01NVV9QQUdFUykgYW5kIG1lbW9yeSByZWdpb24gY29uZmlndXJhdGlvbi4gRnV6emluZyBpcyByZWNvbW1lbmRlZCB0byBlbnN1cmUgY29ycmVjdCBNTVUgc2hhZG93IHBhZ2UgYWxsb2NhdGlvbiBhbmQgemFwcGluZyBpbnZhcmlhbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDA3OjA0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgOWVjMGNkNmJjMmUwNDc4NjliMmI3ZmE4ZThhYmUzNWJiYzQ3NmE2ZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgU2VwIDExIDA3OjA0OjM2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9tbXUvbW11LmMgYi9hcmNoL3g4Ni9rdm0vbW11L21tdS5jXG5pbmRleCAwNjRlY2MzM2I5MjY3Li5lZmViYTU4OTM2YTY4IDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL21tdS9tbXUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYva3ZtL21tdS9tbXUuY1xuQEAgLTI5MTMsNyAmIzQzOzI5MTMsNyBAQCB2b2lkIGt2bV9tbXVfY2hhbmdlX21tdV9wYWdlcyhzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgZ29hbF9ucl9tbXVfcGFnZXMpXG4gXHRcdGt2bV9tbXVfemFwX29sZGVzdF9tbXVfcGFnZXMoa3ZtLCBrdm0tXHUwMDNlc3RhdC5tbXVfc2hhZG93X3BhZ2VzIC1cbiBcdFx0XHRcdFx0XHQgIGdvYWxfbnJfbW11X3BhZ2VzKTtcbiBcbi1cdFx0Z29hbF9ucl9tbXVfcGFnZXMgPSBrdm0tXHUwMDNlc3RhdC5tbXVfc2hhZG93X3BhZ2VzO1xuJiM0MztcdFx0Z29hbF9ucl9tbXVfcGFnZXMgPSBtYXgoa3ZtLVx1MDAzZXN0YXQubW11X3NoYWRvd19wYWdlcywgZ29hbF9ucl9tbXVfcGFnZXMpO1xuIFx0fVxuIFxuIFx0a3ZtLVx1MDAzZWFyY2gubl9tYXhfbW11X3BhZ2VzID0gZ29hbF9ucl9tbXVfcGFnZXM7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDc6MDQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDssCiAgICAmIzM0O0tWTV9JTlRFTCYjMzQ7LAogICAgJiMzNDtLVk1fQU1EJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX21tdV9jaGFuZ2VfbW11X3BhZ2VzJiMzNDssCiAgICAmIzM0O2t2bV92bV9pb2N0bF9zZXRfbnJfbW11X3BhZ2VzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHNoYWRvdyBNTVUgcGFnZSBjb3VudCBtYW5hZ2VtZW50IGxvZ2ljIGluIHg4NiBLVk0gKGBrdm1fbW11X2NoYW5nZV9tbXVfcGFnZXNgKSwgd2hpY2ggaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBLVk0gaW9jdGxzIChzdWNoIGFzIEtWTV9TRVRfTlJfTU1VX1BBR0VTKSBhbmQgbWVtb3J5IHJlZ2lvbiBjb25maWd1cmF0aW9uLiBGdXp6aW5nIGlzIHJlY29tbWVuZGVkIHRvIGVuc3VyZSBjb3JyZWN0IE1NVSBzaGFkb3cgcGFnZSBhbGxvY2F0aW9uIGFuZCB6YXBwaW5nIGludmFyaWFudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA5ZWMwY2Q2YmMyZTA0Nzg2OWIyYjdmYThlOGFiZTM1YmJjNDc2YTZlCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBTZXAgMTEgMDc6MDQ6MzYgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vbW11L21tdS5jIGIvYXJjaC94ODYva3ZtL21tdS9tbXUuYwppbmRleCAwNjRlY2MzM2I5MjY3Li5lZmViYTU4OTM2YTY4IDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rdm0vbW11L21tdS5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS9tbXUvbW11LmMKQEAgLTI5MTMsNyAmIzQzOzI5MTMsNyBAQCB2b2lkIGt2bV9tbXVfY2hhbmdlX21tdV9wYWdlcyhzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgZ29hbF9ucl9tbXVfcGFnZXMpCiAJCWt2bV9tbXVfemFwX29sZGVzdF9tbXVfcGFnZXMoa3ZtLCBrdm0tJmd0O3N0YXQubW11X3NoYWRvd19wYWdlcyAtCiAJCQkJCQkgIGdvYWxfbnJfbW11X3BhZ2VzKTsKIAotCQlnb2FsX25yX21tdV9wYWdlcyA9IGt2bS0mZ3Q7c3RhdC5tbXVfc2hhZG93X3BhZ2VzOwomIzQzOwkJZ29hbF9ucl9tbXVfcGFnZXMgPSBtYXgoa3ZtLSZndDtzdGF0Lm1tdV9zaGFkb3dfcGFnZXMsIGdvYWxfbnJfbW11X3BhZ2VzKTsKIAl9CiAKIAlrdm0tJmd0O2FyY2gubl9tYXhfbW11X3BhZ2VzID0gZ29hbF9ucl9tbXVfcGFnZXM7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDA3OjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5NTkKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAzODkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBLVk0gTU1VIFBhZ2UgQWRqdXN0bWVudCoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBleGFtaW5lIHRoZSBjb2RlIGRpZmYsIHdoaWNoLCBhcyBleHBlY3RlZCwgaXMgbW9kaWZ5aW5nIGBhcmNoL3g4Ni9rdm0vbW11L21tdS5jYC4gU3BlY2lmaWNhbGx5LCB0aGUgY2hhbmdlIHNlZW1zIHRvIGJlIHdpdGhpbiB0aGUgYGt2bV9tbXVfY2hhbmdlX21tdV9wYWdlc2AgZnVuY3Rpb24uCgpMb29raW5nIGF0IHRoZSBkaWZmLCB0aGV5JiMzOTt2ZSBhbHRlcmVkIGhvdyB0aGUgYGdvYWxfbnJfbW11X3BhZ2VzYCB2YXJpYWJsZSBpcyB1cGRhdGVkLiBQcmV2aW91c2x5LCBhZnRlciB6YXBwaW5nIHBhZ2VzLCBpdCB3YXMgc2ltcGx5IGFzc2lnbmVkIHRoZSBjdXJyZW50IHNoYWRvdyBwYWdlIGNvdW50IChga3ZtLSZndDtzdGF0Lm1tdV9zaGFkb3dfcGFnZXNgKS4gTm93LCB0aGV5JiMzOTtyZSB1c2luZyBgbWF4KGt2bS0mZ3Q7c3RhdC5tbXVfc2hhZG93X3BhZ2VzLCBnb2FsX25yX21tdV9wYWdlcylgLiBUaGF0JiMzOTtzIGludGVyZXN0aW5nOyBpdCBsb29rcyBsaWtlIHRoZXkmIzM5O3JlIGVuc3VyaW5nIHRoZSBkZXNpcmVkIG51bWJlciBvZiBwYWdlcyBkb2VzbiYjMzk7dCBmYWxsIGJlbG93IHRoZSBleGlzdGluZyBjb3VudC4gVGhpcyBpbmRpY2F0ZXMgdGhlIGZ1bmN0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciBhZGp1c3RpbmcgdGhlIG51bWJlciBvZiBNTVUgc2hhZG93IHBhZ2VzLCBlaXRoZXIgcmVkdWNpbmcgb3IsIG5vdywgcG90ZW50aWFsbHkgKmVuc3VyaW5nKiBpdCYjMzk7cyBhdCBsZWFzdCBhcyBsYXJnZSBhcyB3aGF0JiMzOTtzIGN1cnJlbnRseSBhbGxvY2F0ZWQsIHdoaWNoIGhhcyBwZXJmb3JtYW5jZSBhbmQgc2NoZWR1bGluZyBpbXBsaWNhdGlvbnMuIEkga25vdyB0aGVyZSYjMzk7cyBhIGRlbGljYXRlIGJhbGFuY2UgaW52b2x2ZWQgaGVyZSwgYXZvaWRpbmcgb3Zlci1hbGxvY2F0aW9uIHdoaWxlIHN0aWxsIHByb3ZpZGluZyBhIGdvb2QgbGV2ZWwgb2YgcGVyZm9ybWFuY2UuIEkgY2FuIHVzZSBgZ3JlcHBlcmAgb3IgYHJlYWQtZmlsZWAgdG8gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiB0aGUgY29udGV4dCBzdXJyb3VuZGluZyB0aGlzIGZ1bmN0aW9uLCB0byB1bmRlcnN0YW5kIHByZWNpc2VseSB3aGVuIGFuZCB3aHkgdGhpcyBtb2RpZmljYXRpb24gaXMgbmVjZXNzYXJ5LiBTcGVjaWZpY2FsbHksIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZGl0aW9ucyB1bmRlciB3aGljaCBga3ZtX21tdV9jaGFuZ2VfbW11X3BhZ2VzYCBpcyBjYWxsZWQgYW5kIHdoYXQgZGljdGF0ZXMgYGdvYWxfbnJfbW11X3BhZ2VzYCBpbiB0aGUgZmlyc3QgcGxhY2UsIG9yIEkmIzM5O20gbWlzc2luZyBzb21ldGhpbmcgaW1wb3J0YW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDA3OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL21tdS9tbXUuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI5MDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MjkwMDpcdFx0XHRyZXR1cm4gLUVOT1NQQztcbjI5MDE6XHRcdHJldHVybiAwO1xuMjkwMjpcdH1cbjI5MDM6XHRcbjI5MDQ6XHQvKlxuMjkwNTpcdCAqIENoYW5naW5nIHRoZSBudW1iZXIgb2YgbW11IHBhZ2VzIGFsbG9jYXRlZCB0byB0aGUgdm1cbjI5MDY6XHQgKiBOb3RlOiBpZiBnb2FsX25yX21tdV9wYWdlcyBpcyB0b28gc21hbGwsIHlvdSB3aWxsIGdldCBkZWFkIGxvY2tcbjI5MDc6XHQgKi9cbjI5MDg6XHR2b2lkIGt2bV9tbXVfY2hhbmdlX21tdV9wYWdlcyhzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgZ29hbF9ucl9tbXVfcGFnZXMpXG4yOTA5Olx0e1xuMjkxMDpcdFx0d3JpdGVfbG9jayhcdTAwMjZrdm0tXHUwMDNlbW11X2xvY2spO1xuMjkxMTpcdFxuMjkxMjpcdFx0aWYgKGt2bS1cdTAwM2VzdGF0Lm1tdV9zaGFkb3dfcGFnZXMgXHUwMDNlIGdvYWxfbnJfbW11X3BhZ2VzKSB7XG4yOTEzOlx0XHRcdGt2bV9tbXVfemFwX29sZGVzdF9tbXVfcGFnZXMoa3ZtLCBrdm0tXHUwMDNlc3RhdC5tbXVfc2hhZG93X3BhZ2VzIC1cbjI5MTQ6XHRcdFx0XHRcdFx0XHQgIGdvYWxfbnJfbW11X3BhZ2VzKTtcbjI5MTU6XHRcbjI5MTY6XHRcdFx0Z29hbF9ucl9tbXVfcGFnZXMgPSBtYXgoa3ZtLVx1MDAzZXN0YXQubW11X3NoYWRvd19wYWdlcywgZ29hbF9ucl9tbXVfcGFnZXMpO1xuMjkxNzpcdFx0fVxuMjkxODpcdFxuMjkxOTpcdFx0a3ZtLVx1MDAzZWFyY2gubl9tYXhfbW11X3BhZ2VzID0gZ29hbF9ucl9tbXVfcGFnZXM7XG4yOTIwOlx0XG4yOTIxOlx0XHR3cml0ZV91bmxvY2soXHUwMDI2a3ZtLVx1MDAzZW1tdV9sb2NrKTtcbjI5MjI6XHR9XG4yOTIzOlx0XG4yOTI0Olx0Ym9vbCBfX2t2bV9tbXVfdW5wcm90ZWN0X2dmbl9hbmRfcmV0cnkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBncGFfdCBjcjJfb3JfZ3BhLFxuMjkyNTpcdFx0XHRcdFx0ICAgICAgIGJvb2wgYWx3YXlzX3JldHJ5KVxuMjkyNjpcdHtcbjI5Mjc6XHRcdHN0cnVjdCBrdm0gKmt2bSA9IHZjcHUtXHUwMDNla3ZtO1xuMjkyODpcdFx0TElTVF9IRUFEKGludmFsaWRfbGlzdCk7XG4yOTI5Olx0XHRzdHJ1Y3Qga3ZtX21tdV9wYWdlICpzcDtcbjI5MzA6XHRcdGdwYV90IGdwYSA9IGNyMl9vcl9ncGE7XG4yOTMxOlx0XHRib29sIHIgPSBmYWxzZTtcbjI5MzI6XHRcbjI5MzM6XHRcdC8qXG4yOTM0Olx0XHQgKiBCYWlsIGVhcmx5IGlmIHRoZXJlIGFyZW4mIzM5O3QgYW55IHdyaXRlLXByb3RlY3RlZCBzaGFkb3cgcGFnZXMgdG8gYXZvaWRcbjI5MzU6XHRcdCAqIHVubmVjZXNzYXJpbHkgdGFraW5nIG1tdV9sb2NrIGxvY2ssIGUuZy4gaWYgdGhlIGdmbiBpcyB3cml0ZS10cmFja2VkXG4yOTM2Olx0XHQgKiBieSBhIHRoaXJkIHBhcnR5LiAgUmVhZGluZyBpbmRpcmVjdF9zaGFkb3dfcGFnZXMgd2l0aG91dCBob2xkaW5nXG4yOTM3Olx0XHQgKiBtbXVfbG9jayBpcyBzYWZlLCBhcyB0aGlzIGlzIHB1cmVseSBhbiBvcHRpbWl6YXRpb24sIGkuZS4gYSBmYWxzZVxuMjkzODpcdFx0ICogcG9zaXRpdmUgaXMgYmVuaWduLCBhbmQgYSBmYWxzZSBuZWdhdGl2ZSB3aWxsIHNpbXBseSByZXN1bHQgaW4gS1ZNXG4yOTM5Olx0XHQgKiBza2lwcGluZyB0aGUgdW5wcm90ZWN0JiM0MztyZXRyeSBwYXRoLCB3aGljaCBpcyBhbHNvIGFuIG9wdGltaXphdGlvbi5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwNzowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDcwCgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIGBrdm1fbW11X2NoYW5nZV9tbXVfcGFnZXNgIENhbGxzaXRlKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3cgdGhhdCBsZWFkcyB0byBga3ZtX21tdV9jaGFuZ2VfbW11X3BhZ2VzYC4gTXkgcHJpbWFyeSBnb2FsIGlzIHRvIGlkZW50aWZ5IHRoZSBldmVudHMgb3IgY29uZGl0aW9ucyB0aGF0IG5lY2Vzc2l0YXRlIHRoaXMgTU1VIG1vZGlmaWNhdGlvbi4gSSYjMzk7bGwgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gdGhpcyBmdW5jdGlvbiBjYWxsIHRvIGl0cyBjYWxsZXJzIGFuZCwgaWRlYWxseSwgdW5kZXJzdGFuZCB0aGUgaGlnaGVyLWxldmVsIGNvbnRleHQgd2l0aGluIHRoZSBLVk0gaW5mcmFzdHJ1Y3R1cmUgdGhhdCAqZGVtYW5kcyogYSBjaGFuZ2UgdG8gdGhlIE1NVSBwYWdlIHN0cnVjdHVyZXMuIEFyZSB3ZSB0YWxraW5nIGFib3V0IGd1ZXN0IG1lbW9yeSBtYXBwaW5nIG1vZGlmaWNhdGlvbnMsIHBhZ2UgZmF1bHRzLCBFTTY0VCBjb252ZXJzaW9ucyxFUFQgb3BlcmF0aW9ucywgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IEEgcXVpY2sgc2NhbiBvZiB0aGUgY2FsbGVycyB3aWxsIGhvcGVmdWxseSByZXZlYWwgd2hpY2ggYXJlYXMgb2YgS1ZNIGFyZSBsZXZlcmFnaW5nIHRoaXMgZnVuY3Rpb24gYW5kIHdoYXQga2luZCBvZiBzdGF0ZSB0cmFuc2l0aW9ucyBhcmUgaGFwcGVuaW5nIGp1c3QgcHJpb3IgdG8gdGhpcyBjYWxsLiBJJiMzOTttIGxvb2tpbmcgZm9yIGNsdWVzIGFib3V0IHRoZSB0eXBlcyBvZiBNTVUgdXBkYXRlcyB0aGlzIGZ1bmN0aW9uIGhhbmRsZXM6IHNpbmdsZSBwYWdlIG1vZGlmaWNhdGlvbnMsIGxhcmdlciByYW5nZSB1cGRhdGVzLCB0cmFuc2xhdGlvbiBpbnZhbGlkYXRpb25zLCBldGMuIEkmIzM5O2xsIGFsc28gYmUgd2F0Y2hpbmcgZm9yIGFueSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlcyBpbiBwbGF5LCB0byB1bmRlcnN0YW5kIHRoZSBwb3RlbnRpYWwgY29uY3VycmVuY3kgaW1wbGljYXRpb25zIGFuZCBpZiB0aGVyZSBhcmUgbG9ja3MgaW52b2x2ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDc6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX21tdV9jaGFuZ2VfbW11X3BhZ2VzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9tbXUuaD0xMzQ9dm9pZCBrdm1fbW11X2ludmFsaWRhdGVfbW1pb19zcHRlcyhzdHJ1Y3Qga3ZtICprdm0sIHU2NCBnZW4pO1xuYXJjaC94ODYva3ZtL21tdS5oOjEzNTp2b2lkIGt2bV9tbXVfY2hhbmdlX21tdV9wYWdlcyhzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcga3ZtX25yX21tdV9wYWdlcyk7XG5hcmNoL3g4Ni9rdm0vbW11LmgtMTM2LXZvaWQga3ZtX3phcF9nZm5fcmFuZ2Uoc3RydWN0IGt2bSAqa3ZtLCBnZm5fdCBnZm5fc3RhcnQsIGdmbl90IGdmbl9lbmQpO1xuLS1cbmFyY2gveDg2L2t2bS9tbXUvbW11LmM9Mjg4MT1zdGF0aWMgaW50IG1ha2VfbW11X3BhZ2VzX2F2YWlsYWJsZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL21tdS9tbXUuYy0yOTA3LSAqL1xuYXJjaC94ODYva3ZtL21tdS9tbXUuYzoyOTA4OnZvaWQga3ZtX21tdV9jaGFuZ2VfbW11X3BhZ2VzKHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgbG9uZyBnb2FsX25yX21tdV9wYWdlcylcbmFyY2gveDg2L2t2bS9tbXUvbW11LmMtMjkwOS17XG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jPTM5MTA9c3RhdGljIGludCBrdm1fdm1faW9jdGxfc2V0X25yX21tdV9wYWdlcyhzdHJ1Y3Qga3ZtICprdm0sXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTM5MTctXG5hcmNoL3g4Ni9rdm0veDg2LmM6MzkxODpcdGt2bV9tbXVfY2hhbmdlX21tdV9wYWdlcyhrdm0sIGt2bV9ucl9tbXVfcGFnZXMpO1xuYXJjaC94ODYva3ZtL3g4Ni5jLTM5MTktXHRrdm0tXHUwMDNlYXJjaC5uX3JlcXVlc3RlZF9tbXVfcGFnZXMgPSBrdm1fbnJfbW11X3BhZ2VzO1xuLS1cbmFyY2gveDg2L2t2bS94ODYuYz0xMDMzOD12b2lkIGt2bV9hcmNoX2NvbW1pdF9tZW1vcnlfcmVnaW9uKHN0cnVjdCBrdm0gKmt2bSxcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTAzNTEtXHRcdG5yX21tdV9wYWdlcyA9IG1heChucl9tbXVfcGFnZXMsIEtWTV9NSU5fQUxMT0NfTU1VX1BBR0VTKTtcbmFyY2gveDg2L2t2bS94ODYuYzoxMDM1MjpcdFx0a3ZtX21tdV9jaGFuZ2VfbW11X3BhZ2VzKGt2bSwgbnJfbW11X3BhZ2VzKTtcbmFyY2gveDg2L2t2bS94ODYuYy0xMDM1My1cdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwNzowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NDEyCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMTE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBLVk0gTWVtb3J5IE1hbmFnZW1lbnQqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gSSYjMzk7bSBsb29raW5nIGF0IGBrdm1fdm1faW9jdGxfc2V0X25yX21tdV9wYWdlc2AgLSB0aGF0JiMzOTtzIHRoZSBLVk1fU0VUX05SX01NVV9QQUdFUyBpb2N0bCBvbiBhIHZpcnR1YWwgbWFjaGluZSBmaWxlIGRlc2NyaXB0b3IgLSBhbmQgYGt2bV9hcmNoX2NvbW1pdF9tZW1vcnlfcmVnaW9uYC4gVGhlc2UgZnVuY3Rpb25zIHNlZW0gY2VudHJhbCB0byBtZW1vcnkgbWFuYWdlbWVudCB3aXRoaW4gS1ZNLCBzcGVjaWZpY2FsbHkgZm9yIHg4NiBhcmNoaXRlY3R1cmVzLiBJIGtub3cgS1ZNIG9uIGFtZDY0IGlzIHJvYnVzdDsgaXQmIzM5O3Mgc29tZXRoaW5nIEkmIzM5O3ZlIHdvcmtlZCB3aXRoIGV4dGVuc2l2ZWx5LCB3aGV0aGVyIGl0JiMzOTtzIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiBvciB0aGUgbW9yZSBzdGFuZGFyZCBLVk0gc2V0dXBzIGluIFFFTVUgb3IgZW52aXJvbm1lbnRzIGxpa2UgR29vZ2xlIENvbXB1dGUgRW5naW5lLiBUaGUgZmFjdCB0aGF0IGl0JiMzOTtzIGFjY2Vzc2libGUgYW5kIHN1cHBvcnRlZCB3aXRoaW4gU3l6a2FsbGVyJiMzOTtzIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBpcyByZWFzc3VyaW5nLiBOb3csIGxldCYjMzk7cyBkb3VibGUtY2hlY2sgdGhlIEtjb25maWcgcmVxdWlyZW1lbnRzIHJlbGF0ZWQgdG8gS1ZNIHN1cHBvcnQgb24geDg2LiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnMgYXJlIGluIHBsYWNlIGJlZm9yZSBwcm9jZWVkaW5nIGFueSBmdXJ0aGVyLCB0byBhdm9pZCBhbnkgdW5leHBlY3RlZCByb2FkYmxvY2tzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDA3OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBLVk0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MjA6Y29uZmlnIEtWTV9YODZcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIxLVx0ZGVmX3RyaXN0YXRlIEtWTSBpZiAoS1ZNX0lOVEVMICE9IG4gfHwgS1ZNX0FNRCAhPSBuKVxuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTUxLVxuYXJjaC94ODYva3ZtL0tjb25maWc6NTI6Y29uZmlnIEtWTVxuYXJjaC94ODYva3ZtL0tjb25maWctNTMtXHR0cmlzdGF0ZSBcJiMzNDtLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy02OC1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjY5OmNvbmZpZyBLVk1fV0VSUk9SXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy03MC1cdGJvb2wgXCYjMzQ7Q29tcGlsZSBLVk0gd2l0aCAtV2Vycm9yXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctODItXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo4Mzpjb25maWcgS1ZNX1NXX1BST1RFQ1RFRF9WTVxuYXJjaC94ODYva3ZtL0tjb25maWctODQtXHRib29sIFwmIzM0O0VuYWJsZSBzdXBwb3J0IGZvciBLVk0gc29mdHdhcmUtcHJvdGVjdGVkIFZNc1wmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTk1LVxuYXJjaC94ODYva3ZtL0tjb25maWc6OTY6Y29uZmlnIEtWTV9JTlRFTFxuYXJjaC94ODYva3ZtL0tjb25maWctOTctXHR0cmlzdGF0ZSBcJiMzNDtLVk0gZm9yIEludGVsIChhbmQgY29tcGF0aWJsZSkgcHJvY2Vzc29ycyBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTA2LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTA3OmNvbmZpZyBLVk1fSU5URUxfUFJPVkVfVkVcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEwOC0gICAgICAgIGJvb2wgXCYjMzQ7Q2hlY2sgdGhhdCBndWVzdHMgZG8gbm90IHJlY2VpdmUgI1ZFIGV4Y2VwdGlvbnNcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz0xMjI9Y29uZmlnIFg4Nl9TR1hfS1ZNXG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTMzLVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTM0OmNvbmZpZyBLVk1fSU5URUxfVERYXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMzUtXHRib29sIFwmIzM0O0ludGVsIFRydXN0IERvbWFpbiBFeHRlbnNpb25zIChURFgpIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNDUtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNDY6Y29uZmlnIEtWTV9BTURcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE0Ny1cdHRyaXN0YXRlIFwmIzM0O0tWTSBmb3IgQU1EIHByb2Nlc3NvcnMgc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE1NS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjE1Njpjb25maWcgS1ZNX0FNRF9TRVZcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE1Ny1cdGJvb2wgXCYjMzQ7QU1EIFNlY3VyZSBFbmNyeXB0ZWQgVmlydHVhbGl6YXRpb24gKFNFVikgc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE3Mi1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjE3Mzpjb25maWcgS1ZNX0lPQVBJQ1xuYXJjaC94ODYva3ZtL0tjb25maWctMTc0LVx0Ym9vbCBcJiMzNDtJL08gQVBJQywgUElDLCBhbmQgUElUIGVtdWxhdGlvblwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE4Mi1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjE4Mzpjb25maWcgS1ZNX1NNTVxuYXJjaC94ODYva3ZtL0tjb25maWctMTg0LVx0Ym9vbCBcJiMzNDtTeXN0ZW0gTWFuYWdlbWVudCBNb2RlIGVtdWxhdGlvblwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5My1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjE5NDpjb25maWcgS1ZNX0hZUEVSVlxuYXJjaC94ODYva3ZtL0tjb25maWctMTk1LVx0Ym9vbCBcJiMzNDtTdXBwb3J0IGZvciBNaWNyb3NvZnQgSHlwZXItViBlbXVsYXRpb25cJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMDctXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMDg6Y29uZmlnIEtWTV9YRU5cbmFyY2gveDg2L2t2bS9LY29uZmlnLTIwOS1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBmb3IgWGVuIGh5cGVyY2FsbCBpbnRlcmZhY2VcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMTYtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMTc6Y29uZmlnIEtWTV9QUk9WRV9NTVVcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIxOC1cdGJvb2wgXCYjMzQ7UHJvdmUgS1ZNIE1NVSBjb3JyZWN0bmVzc1wmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTIyOS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjIzMDpjb25maWcgS1ZNX0VYVEVSTkFMX1dSSVRFX1RSQUNLSU5HXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzEtXHRib29sXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzItXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMzM6Y29uZmlnIEtWTV9NQVhfTlJfVkNQVVNcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIzNC1cdGludCBcJiMzNDtNYXhpbXVtIG51bWJlciBvZiB2Q1BVcyBwZXIgS1ZNIGd1ZXN0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDc6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjk4NAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDI4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246CgoqKkRpdmluZyBpbnRvIHRoZSBLVk0geDg2IEJ1aWxkIFN5c3RlbSoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0JiMzOTtzIGJlaW5nIGNvbXBpbGVkIGZvciB0aGUgS1ZNIHg4NiBrZXJuZWwgbW9kdWxlLiBOYXR1cmFsbHksIHRoZSBmaXJzdCBwbGFjZSB0byBsb29rIGlzIHRoZSBgYXJjaC94ODYva3ZtL01ha2VmaWxlYC4gVGhhdCYjMzk7cyB3aGVyZSBhbGwgdGhlIG1hZ2ljIGhhcHBlbnMgd2hlbiB0aGUgYnVpbGQgc3lzdGVtIGlzIHB1bGxpbmcgdG9nZXRoZXIgdGhlIG5lY2Vzc2FyeSBvYmplY3QgZmlsZXMuIEkmIzM5O2xsIG5lZWQgdG8gc2VlIHByZWNpc2VseSB3aGljaCBzb3VyY2UgZmlsZXMgYXJlIGJlaW5nIGluY2x1ZGVkLCBhbmQgdW5kZXIgd2hhdCBzcGVjaWZpYyBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFVuZGVyc3RhbmRpbmcgdGhlIGNvbmRpdGlvbmFsIGluY2x1c2lvbnMgd2lsbCBnaXZlIG1lIHRoZSBiZXN0IHZpZXcgb2Ygd2hhdCBmZWF0dXJlcyBhbmQgZnVuY3Rpb25hbGl0eSBhcmUgYmFrZWQgaW50byB0aGUgZmluYWwgbW9kdWxlIGJhc2VkIG9uIG15IHN5c3RlbSYjMzk7cyBjdXJyZW50IGtlcm5lbCBjb25maWd1cmF0aW9uLiBJ4oCZbGwgYmUgY2hlY2tpbmcgZm9yIHNwZWNpZmljIGBDT05GSUdfYCBmbGFncyBhbmQgdGhlaXIgaW1wYWN0IG9uIHRoZSBidWlsZC4gTGV0JiMzOTtzIGdldCB0byBpdCEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDc6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW11L21tdVxcLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL01ha2VmaWxlPTg9a3ZtLXlcdFx0XHQmIzQzOz0geDg2Lm8gZW11bGF0ZS5vIGlycS5vIGxhcGljLm8gY3B1aWQubyBtc3JzLm8gcG11Lm8gcmVncy5vIFxcXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGU6OTpcdFx0XHQgICBtdHJyLm8gZGVidWdmcy5vIG1tdS9tbXUubyBtbXUvcGFnZV90cmFjay5vIG1tdS9zcHRlLm9cbmFyY2gveDg2L2t2bS9NYWtlZmlsZS0xMC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDc6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzM0NwoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDY2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKktWTSBNb2R1bGUgQ29tcGlsYXRpb24gRGVwZW5kZW5jaWVzKioKCk9rYXksIHNvIEkmIzM5O20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgdGhlIGJ1aWxkIGNvbmRpdGlvbnMgZm9yIGBrdm0teWAuIFJpZ2h0LCBsZXQmIzM5O3MgZXN0YWJsaXNoIHRoZSBncm91bmQgdHJ1dGg6IGl0JiMzOTtzIGJ1aWx0IHdoZW4gYENPTkZJR19LVk1gIGlzIGRlZmluZWQuIFRoYXQgbWFrZXMgc2Vuc2UsIHByZXR0eSBmb3VuZGF0aW9uYWwuIFRoZW4sIHRvIGdldCBtb3JlIHNwZWNpZmljLCBpdCByZXF1aXJlcyBlaXRoZXIgYENPTkZJR19LVk1fSU5URUxgIG9yIGBDT05GSUdfS1ZNX0FNRGAgYmUgZW5hYmxlZCBhcyB3ZWxsLCB3aGljaCBhcmUgZ29pbmcgdG8gZGVmaW5lIHRoZSB1bmRlcmx5aW5nIGFyY2hpdGVjdHVyZSwgSW50ZWwgb3IgQU1EIHJlc3BlY3RpdmVseS4KCkFscmlnaHQsIHNlZW1zIHNpbXBsZSBlbm91Z2ggc28gZmFyLiBOb3csIGp1c3QgdG8gY29uZmlybSBteSB1bmRlcnN0YW5kaW5nIGFuZCBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgc29tZXRoaW5nIHN1YnRsZSwgSSBzaG91bGQgcHJvYmFibHkgdGFrZSBhIHF1aWNrIGxvb2sgYXQgYGFyY2gveDg2L2t2bS9NYWtlZmlsZWAgLSBsaW5lcyAxIHRocm91Z2ggMTUsIHRvIGJlIHByZWNpc2UuIEl0IHNob3VsZCBsYXkgb3V0IHRoZSBzcGVjaWZpYyBkZXBlbmRlbmNpZXMgZm9yIGNvbXBpbGluZyB0aGUgS1ZNIG1vZHVsZSBpbiBhIGNsZWFyIGZhc2hpb24uIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgTWFrZWZpbGUgcmV2ZWFscy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDc6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vTWFrZWZpbGUmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4gICAyOlx0XG4gICAzOlx0Y2NmbGFncy15ICYjNDM7PSAtSSAkKHNyY3RyZWUpL2FyY2gveDg2L2t2bVxuICAgNDpcdGNjZmxhZ3MtJChDT05GSUdfS1ZNX1dFUlJPUikgJiM0Mzs9IC1XZXJyb3JcbiAgIDU6XHRcbiAgIDY6XHRpbmNsdWRlICQoc3JjdHJlZSkvdmlydC9rdm0vTWFrZWZpbGUua3ZtXG4gICA3Olx0XG4gICA4Olx0a3ZtLXlcdFx0XHQmIzQzOz0geDg2Lm8gZW11bGF0ZS5vIGlycS5vIGxhcGljLm8gY3B1aWQubyBtc3JzLm8gcG11Lm8gcmVncy5vIFxcXG4gICA5Olx0XHRcdFx0ICAgbXRyci5vIGRlYnVnZnMubyBtbXUvbW11Lm8gbW11L3BhZ2VfdHJhY2subyBtbXUvc3B0ZS5vXG4gIDEwOlx0XG4gIDExOlx0a3ZtLSQoQ09ORklHX1g4Nl82NCkgJiM0Mzs9IG1tdS90ZHBfaXRlci5vIG1tdS90ZHBfbW11Lm9cbiAgMTI6XHRrdm0tJChDT05GSUdfS1ZNX0lPQVBJQykgJiM0Mzs9IGk4MjU5Lm8gaTgyNTQubyBpb2FwaWMub1xuICAxMzpcdGt2bS0kKENPTkZJR19LVk1fSFlQRVJWKSAmIzQzOz0gaHlwZXJ2Lm9cbiAgMTQ6XHRrdm0tJChDT05GSUdfS1ZNX1hFTilcdCYjNDM7PSB4ZW4ub1xuICAxNTpcdGt2bS0kKENPTkZJR19LVk1fU01NKVx0JiM0Mzs9IHNtbS5vXG4gIDE2Olx0XG4gIDE3Olx0a3ZtLWludGVsLXlcdFx0JiM0Mzs9IHZteC92bXgubyB2bXgvdm1lbnRlci5vIHZteC9wbXVfaW50ZWwubyB2bXgvdm1jczEyLm8gXFxcbiAgMTg6XHRcdFx0XHQgICB2bXgvbmVzdGVkLm8gdm14L3Bvc3RlZF9pbnRyLm8gdm14L21haW4ub1xuICAxOTpcdFxuICAyMDpcdGt2bS1pbnRlbC0kKENPTkZJR19YODZfU0dYX0tWTSlcdCYjNDM7PSB2bXgvc2d4Lm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDc6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODEwNAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDY0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKktWTSBNb2R1bGUgSW5jbHVzaW9uIEludmVzdGlnYXRpb24qKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgZXhhY3QgbWVjaGFuaXNtcyBmb3IgS1ZNIG1vZHVsZSBjb21waWxhdGlvbi4gTXkgaW5pdGlhbCBodW5jaCwgZ2l2ZW4gdGhlIHN0cnVjdHVyZSBvZiB0aGUga2VybmVsLCBpcyB0aGF0IHRoZSBgdmlydC9rdm0vTWFrZWZpbGUua3ZtYCBmaWxlIGlzIHRoZSBrZXkuIEkgZXhwZWN0IHRvIGZpbmQgYSBsaW5lIGluIHRoZXJlIHRoYXQgbG9va3MgbGlrZSBgb2JqLSQoQ09ORklHX0tWTSkgJiM0Mzs9IGt2bS5vYCBvciBzb21ldGhpbmcgYWxvbmcgdGhvc2UgbGluZXMsIGNvbnRyb2xsaW5nIHRoZSBpbmNsdXNpb24gb2YgdGhlIGNvcmUgYGt2bS5vYCBvYmplY3QgYmFzZWQgb24gdGhlIGBDT05GSUdfS1ZNYCBjb25maWd1cmF0aW9uIG9wdGlvbi4gSG93ZXZlciwgaXQmIzM5O3MgYWxzbyB3b3J0aCBjaGVja2luZyB0aGUgYGFyY2gveDg2L2t2bS9LY29uZmlnYCBmaWxlIGluIGNhc2UgS1ZNIGNvbmZpZ3VyYXRpb24gaXMgYmVpbmcgY29udHJvbGxlZCBpbiB0aGUgYXJjaGl0ZWN0dXJlIHNwZWNpZmljIGZpbGUuIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIHRob3NlIHR3byBmaWxlcyB0byBnZXQgdG8gdGhlIGJvdHRvbSBvZiB0aGlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwNzowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDT05GSUdfS1ZNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA3NzYgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmFyY2gveDg2L2t2bS9NYWtlZmlsZT0zPWNjZmxhZ3MteSAmIzQzOz0gLUkgJChzcmN0cmVlKS9hcmNoL3g4Ni9rdm1cbmFyY2gveDg2L2t2bS9NYWtlZmlsZTo0OmNjZmxhZ3MtJChDT05GSUdfS1ZNX1dFUlJPUikgJiM0Mzs9IC1XZXJyb3JcbmFyY2gveDg2L2t2bS9NYWtlZmlsZS01LVxuLS1cbmFyY2gveDg2L2t2bS9NYWtlZmlsZT0xMT1rdm0tJChDT05GSUdfWDg2XzY0KSAmIzQzOz0gbW11L3RkcF9pdGVyLm8gbW11L3RkcF9tbXUub1xuYXJjaC94ODYva3ZtL01ha2VmaWxlOjEyOmt2bS0kKENPTkZJR19LVk1fSU9BUElDKSAmIzQzOz0gaTgyNTkubyBpODI1NC5vIGlvYXBpYy5vXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGU6MTM6a3ZtLSQoQ09ORklHX0tWTV9IWVBFUlYpICYjNDM7PSBoeXBlcnYub1xuYXJjaC94ODYva3ZtL01ha2VmaWxlOjE0Omt2bS0kKENPTkZJR19LVk1fWEVOKVx0JiM0Mzs9IHhlbi5vXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGU6MTU6a3ZtLSQoQ09ORklHX0tWTV9TTU0pXHQmIzQzOz0gc21tLm9cbmFyY2gveDg2L2t2bS9NYWtlZmlsZS0xNi1cbi0tXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGU9MjA9a3ZtLWludGVsLSQoQ09ORklHX1g4Nl9TR1hfS1ZNKVx0JiM0Mzs9IHZteC9zZ3gub1xuYXJjaC94ODYva3ZtL01ha2VmaWxlOjIxOmt2bS1pbnRlbC0kKENPTkZJR19LVk1fSFlQRVJWKVx0JiM0Mzs9IHZteC9oeXBlcnYubyB2bXgvaHlwZXJ2X2V2bWNzLm9cbmFyY2gveDg2L2t2bS9NYWtlZmlsZToyMjprdm0taW50ZWwtJChDT05GSUdfS1ZNX0lOVEVMX1REWClcdCYjNDM7PSB2bXgvdGR4Lm9cbmFyY2gveDg2L2t2bS9NYWtlZmlsZS0yMy1cbmFyY2gveDg2L2t2bS9NYWtlZmlsZT0yND1rdm0tYW1kLXlcdFx0JiM0Mzs9IHN2bS9zdm0ubyBzdm0vdm1lbnRlci5vIHN2bS9wbXUubyBzdm0vbmVzdGVkLm8gc3ZtL2F2aWMub1xuYXJjaC94ODYva3ZtL01ha2VmaWxlLTI1LVxuYXJjaC94ODYva3ZtL01ha2VmaWxlOjI2Omt2bS1hbWQtJChDT05GSUdfS1ZNX0FNRF9TRVYpXHQmIzQzOz0gc3ZtL3Nldi5vXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGU6Mjc6a3ZtLWFtZC0kKENPTkZJR19LVk1fSFlQRVJWKVx0JiM0Mzs9IHN2bS9oeXBlcnYub1xuYXJjaC94ODYva3ZtL01ha2VmaWxlLTI4LVxuLS1cbmFyY2gveDg2L2t2bS9NYWtlZmlsZT0zMz1lbmRpZlxuYXJjaC94ODYva3ZtL01ha2VmaWxlLTM0LVxuYXJjaC94ODYva3ZtL01ha2VmaWxlOjM1Om9iai0kKENPTkZJR19LVk1fWDg2KVx0JiM0Mzs9IGt2bS5vXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGU6MzY6b2JqLSQoQ09ORklHX0tWTV9JTlRFTClcdCYjNDM7PSBrdm0taW50ZWwub1xuYXJjaC94ODYva3ZtL01ha2VmaWxlOjM3Om9iai0kKENPTkZJR19LVk1fQU1EKVx0JiM0Mzs9IGt2bS1hbWQub1xuYXJjaC94ODYva3ZtL01ha2VmaWxlLTM4LVxuLS1cbmFyY2gveDg2L2t2bS9NYWtlZmlsZT00OT1jbGVhbi1maWxlcyAmIzQzOz0ga3ZtLWFzbS1vZmZzZXRzLmhcbi0tXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGUtNTUtIyB1c2UgRVhQT1JUX1NZTUJPTF9HUEwsIGFuZCBFWFBPUlRfU1lNQk9MIHNob3VsZCBuZXZlciBiZSB1c2VkLlxuYXJjaC94ODYva3ZtL01ha2VmaWxlOjU2OmlmZGVmIENPTkZJR19LVk1fWDg2XG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGUtNTctIyBTZWFyY2ggcmVjdXJzaXZlbHkgZm9yIHdob2xlIHdvcmRzIGFuZCBwcmludCBsaW5lIG51bWJlcnMuICBGaWx0ZXIgb3V0IHRoZVxuLS1cbmFyY2gveDg2L2t2bS9NYWtlZmlsZT05Nz11bmRlZmluZSBleHBvcnRzX2dyZXBfdHJhaWxlclxuYXJjaC94ODYva3ZtL01ha2VmaWxlOjk4OmVuZGlmICMgQ09ORklHX0tWTV9YODZcbi0tXG5hcmNoL3g4Ni9rdm0vY3B1aWQuYz0zMjc9c3RhdGljIGJvb2wga3ZtX2NwdWlkX2hhc19oeXBlcnYoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC94ODYva3ZtL2NwdWlkLmMtMzI4LXtcbmFyY2gveDg2L2t2bS9jcHVpZC5jOjMyOTojaWZkZWYgQ09ORklHX0tWTV9IWVBFUlZcbmFyY2gveDg2L2t2bS9jcHVpZC5jLTMzMC1cdHN0cnVjdCBrdm1fY3B1aWRfZW50cnkyICplbnRyeTtcbi0tXG5hcmNoL3g4Ni9rdm0vY3B1aWQuYz01MTA9c3RhdGljIGludCBrdm1fc2V0X2NwdWlkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9jcHVpZF9lbnRyeTIgKmUyLFxuLS1cbmFyY2gveDg2L2t2bS9jcHVpZC5jLTU2MC1cbmFyY2gveDg2L2t2bS9jcHVpZC5jOjU2MTojaWZkZWYgQ09ORklHX0tWTV9IWVBFUlZcbmFyY2gveDg2L2t2bS9jcHVpZC5jLTU2Mi1cdGlmIChrdm1fY3B1aWRfaGFzX2h5cGVydih2Y3B1KSkge1xuLS1cbmFyY2gveDg2L2t2bS9jcHVpZC5jLTU3Mi1cbmFyY2gveDg2L2t2bS9jcHVpZC5jOjU3MzojaWZkZWYgQ09ORklHX0tWTV9YRU5cbmFyY2gveDg2L2t2bS9jcHVpZC5jLTU3NC1cdHZjcHUtXHUwMDNlYXJjaC54ZW4uY3B1aWQgPSBrdm1fZ2V0X2h5cGVydmlzb3JfY3B1aWQodmNwdSwgWEVOX1NJR05BVFVSRSk7XG4tLVxuYXJjaC94ODYva3ZtL2h5cGVydi5oLTI3LVxuYXJjaC94ODYva3ZtL2h5cGVydi5oOjI4OiNpZmRlZiBDT05GSUdfS1ZNX0hZUEVSVlxuYXJjaC94ODYva3ZtL2h5cGVydi5oLTI5LVxuLS1cbmFyY2gveDg2L2t2bS9oeXBlcnYuaD0zNzg9aW50IGt2bV9odl92Y3B1X2ZsdXNoX3RsYihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xuYXJjaC94ODYva3ZtL2h5cGVydi5oOjM3OTojZWxzZSAvKiBDT05GSUdfS1ZNX0hZUEVSViAqL1xuYXJjaC94ODYva3ZtL2h5cGVydi5oLTM4MC1zdGF0aWMgaW5saW5lIHZvaWQga3ZtX2h2X3NldHVwX3RzY19wYWdlKHN0cnVjdCBrdm0gKmt2bSxcbi0tXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2Lmg9NDI2PXN0YXRpYyBpbmxpbmUgdm9pZCBrdm1faHZfbmVzdGVkX3RyYW5zdGlvbl90bGJfZmx1c2goc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBib29sIHRkcF9lbmFibGVkKSB7fVxuYXJjaC94ODYva3ZtL2h5cGVydi5oOjQyNzojZW5kaWYgLyogQ09ORklHX0tWTV9IWVBFUlYgKi9cbmFyY2gveDg2L2t2bS9oeXBlcnYuaC00MjgtXG4tLVxuYXJjaC94ODYva3ZtL2k4MjU0LmgtMTItXG5hcmNoL3g4Ni9rdm0vaTgyNTQuaDoxMzojaWZkZWYgQ09ORklHX0tWTV9JT0FQSUNcbmFyY2gveDg2L2t2bS9pODI1NC5oLTE0LXN0cnVjdCBrdm1fa3BpdF9jaGFubmVsX3N0YXRlIHtcbi0tXG5hcmNoL3g4Ni9rdm0vaTgyNTQuaD02OT12b2lkIGt2bV9mcmVlX3BpdChzdHJ1Y3Qga3ZtICprdm0pO1xuYXJjaC94ODYva3ZtL2k4MjU0Lmg6NzA6I2VuZGlmIC8qIENPTkZJR19LVk1fSU9BUElDICovXG5hcmNoL3g4Ni9rdm0vaTgyNTQuaC03MS1cbi0tXG5hcmNoL3g4Ni9rdm0vaW9hcGljLmgtOC1cbmFyY2gveDg2L2t2bS9pb2FwaWMuaDo5OiNpZmRlZiBDT05GSUdfS1ZNX0lPQVBJQ1xuYXJjaC94ODYva3ZtL2lvYXBpYy5oLTEwLVxuLS1cbmFyY2gveDg2L2t2bS9pb2FwaWMuaD0xMTc9c3RhdGljIGlubGluZSBpbnQgX19rdm1faXJxX2xpbmVfc3RhdGUodW5zaWduZWQgbG9uZyAqaXJxX3N0YXRlLFxuLS1cbmFyY2gveDg2L2t2bS9pb2FwaWMuaC0xMjctfVxuYXJjaC94ODYva3ZtL2lvYXBpYy5oOjEyODojZW5kaWYgLyogQ09ORklHX0tWTV9JT0FQSUMgKi9cbmFyY2gveDg2L2t2bS9pb2FwaWMuaC0xMjktXG4tLVxuYXJjaC94ODYva3ZtL2lycS5jPTU5PWludCBrdm1fY3B1X2hhc19leHRpbnQoc3RydWN0IGt2bV92Y3B1ICp2KVxuLS1cbmFyY2gveDg2L2t2bS9pcnEuYy04MC1cbmFyY2gveDg2L2t2bS9pcnEuYzo4MTojaWZkZWYgQ09ORklHX0tWTV9JT0FQSUNcbmFyY2gveDg2L2t2bS9pcnEuYy04Mi1cdGlmIChwaWNfaW5fa2VybmVsKHYtXHUwMDNla3ZtKSlcbi0tXG5hcmNoL3g4Ni9rdm0vaXJxLmM9MTI4PWludCBrdm1fY3B1X2dldF9leHRpbnQoc3RydWN0IGt2bV92Y3B1ICp2KVxuLS1cbmFyY2gveDg2L2t2bS9pcnEuYy0xMzctXG5hcmNoL3g4Ni9rdm0vaXJxLmM6MTM4OiNpZmRlZiBDT05GSUdfS1ZNX1hFTlxuYXJjaC94ODYva3ZtL2lycS5jLTEzOS1cdGlmIChrdm1feGVuX2hhc19pbnRlcnJ1cHQodikpXG4tLVxuYXJjaC94ODYva3ZtL2lycS5jLTE0Mi1cbmFyY2gveDg2L2t2bS9pcnEuYzoxNDM6I2lmZGVmIENPTkZJR19LVk1fSU9BUElDXG5hcmNoL3g4Ni9rdm0vaXJxLmMtMTQ0LVx0aWYgKHBpY19pbl9rZXJuZWwodi1cdTAwM2Vrdm0pKVxuLS1cbmFyY2gveDg2L2t2bS9pcnEuYz0xNzc9dm9pZCBfX2t2bV9taWdyYXRlX3RpbWVycyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL2lycS5jLTE3OS1cdF9fa3ZtX21pZ3JhdGVfYXBpY190aW1lcih2Y3B1KTtcbmFyY2gveDg2L2t2bS9pcnEuYzoxODA6I2lmZGVmIENPTkZJR19LVk1fSU9BUElDXG5hcmNoL3g4Ni9rdm0vaXJxLmMtMTgxLVx0X19rdm1fbWlncmF0ZV9waXRfdGltZXIodmNwdSk7XG4tLVxuYXJjaC94ODYva3ZtL2lycS5jPTI0MT1pbnQga3ZtX2FyY2hfc2V0X2lycV9pbmF0b21pYyhzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFfcm91dGluZ19lbnRyeSAqZSxcbi0tXG5hcmNoL3g4Ni9rdm0vaXJxLmMtMjQ4LVx0c3dpdGNoIChlLVx1MDAzZXR5cGUpIHtcbmFyY2gveDg2L2t2bS9pcnEuYzoyNDk6I2lmZGVmIENPTkZJR19LVk1fSFlQRVJWXG5hcmNoL3g4Ni9rdm0vaXJxLmMtMjUwLVx0Y2FzZSBLVk1fSVJRX1JPVVRJTkdfSFZfU0lOVDpcbi0tXG5hcmNoL3g4Ni9rdm0vaXJxLmMtMjY0LVxuYXJjaC94ODYva3ZtL2lycS5jOjI2NTojaWZkZWYgQ09ORklHX0tWTV9YRU5cbmFyY2gveDg2L2t2bS9pcnEuYy0yNjYtXHRjYXNlIEtWTV9JUlFfUk9VVElOR19YRU5fRVZUQ0hOOlxuLS1cbmFyY2gveDg2L2t2bS9pcnEuYz0yOTY9aW50IGt2bV9zZXRfcm91dGluZ19lbnRyeShzdHJ1Y3Qga3ZtICprdm0sXG4tLVxuYXJjaC94ODYva3ZtL2lycS5jLTMwNC1cdHN3aXRjaCAodWUtXHUwMDNldHlwZSkge1xuYXJjaC94ODYva3ZtL2lycS5jOjMwNTojaWZkZWYgQ09ORklHX0tWTV9JT0FQSUNcbmFyY2gveDg2L2t2bS9pcnEuYy0zMDYtXHRjYXNlIEtWTV9JUlFfUk9VVElOR19JUlFDSElQOlxuLS1cbmFyY2gveDg2L2t2bS9pcnEuYy0zMzgtXHRcdGJyZWFrO1xuYXJjaC94ODYva3ZtL2lycS5jOjMzOTojaWZkZWYgQ09ORklHX0tWTV9IWVBFUlZcbmFyY2gveDg2L2t2bS9pcnEuYy0zNDAtXHRjYXNlIEtWTV9JUlFfUk9VVElOR19IVl9TSU5UOlxuLS1cbmFyY2gveDg2L2t2bS9pcnEuYy0zNDUtI2VuZGlmXG5hcmNoL3g4Ni9rdm0vaXJxLmM6MzQ2OiNpZmRlZiBDT05GSUdfS1ZNX1hFTlxuYXJjaC94ODYva3ZtL2lycS5jLTM0Ny1cdGNhc2UgS1ZNX0lSUV9ST1VUSU5HX1hFTl9FVlRDSE46XG4tLVxuYXJjaC94ODYva3ZtL2lycS5jPTQxNj12b2lkIGt2bV9hcmNoX2lycV9yb3V0aW5nX3VwZGF0ZShzdHJ1Y3Qga3ZtICprdm0pXG5hcmNoL3g4Ni9rdm0vaXJxLmMtNDE3LXtcbmFyY2gveDg2L2t2bS9pcnEuYzo0MTg6I2lmZGVmIENPTkZJR19LVk1fSFlQRVJWXG5hcmNoL3g4Ni9rdm0vaXJxLmMtNDE5LVx0a3ZtX2h2X2lycV9yb3V0aW5nX3VwZGF0ZShrdm0pO1xuLS1cbmFyY2gveDg2L2t2bS9pcnEuYz01NDA9dm9pZCBrdm1fYXJjaF91cGRhdGVfaXJxZmRfcm91dGluZyhzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFmZCAqaXJxZmQsXG4tLVxuYXJjaC94ODYva3ZtL2lycS5jLTU1NS1cbmFyY2gveDg2L2t2bS9pcnEuYzo1NTY6I2lmZGVmIENPTkZJR19LVk1fSU9BUElDXG5hcmNoL3g4Ni9rdm0vaXJxLmMtNTU3LSNkZWZpbmUgSU9BUElDX1JPVVRJTkdfRU5UUlkoaXJxKSBcXFxuLS1cbmFyY2gveDg2L2t2bS9pcnEuaC0yMC1cbmFyY2gveDg2L2t2bS9pcnEuaDoyMTojaWZkZWYgQ09ORklHX0tWTV9JT0FQSUNcbmFyY2gveDg2L2t2bS9pcnEuaC0yMi1cbi0tXG5hcmNoL3g4Ni9rdm0vaXJxLmg9NzY9c3RhdGljIGlubGluZSBpbnQgaXJxY2hpcF9mdWxsKHN0cnVjdCBrdm0gKmt2bSlcbi0tXG5hcmNoL3g4Ni9rdm0vaXJxLmgtODMtfVxuYXJjaC94ODYva3ZtL2lycS5oOjg0OiNlbHNlIC8qIENPTkZJR19LVk1fSU9BUElDICovXG5hcmNoL3g4Ni9rdm0vaXJxLmgtODUtc3RhdGljIF9fYWx3YXlzX2lubGluZSBpbnQgaXJxY2hpcF9mdWxsKHN0cnVjdCBrdm0gKmt2bSlcbi0tXG5hcmNoL3g4Ni9rdm0vaXJxLmg9MTIxPXN0YXRpYyBpbmxpbmUgdm9pZCBrdm1fd2Fybl9vbl9sb3N0X2lycShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL2lycS5oLTEzNy1cdCAqL1xuYXJjaC94ODYva3ZtL2lycS5oOjEzODpcdFdBUk5fT05fT05DRSghcGljX2luX2tlcm5lbCh2Y3B1LVx1MDAzZWt2bSkgXHUwMDI2XHUwMDI2ICFJU19FTkFCTEVEKENPTkZJR19LVk1fWEVOKSk7XG5hcmNoL3g4Ni9rdm0vaXJxLmgtMTM5LX1cbi0tXG5hcmNoL3g4Ni9rdm0va3ZtLWFzbS1vZmZzZXRzLmM9MTM9c3RhdGljIHZvaWQgX191c2VkIGNvbW1vbih2b2lkKVxuYXJjaC94ODYva3ZtL2t2bS1hc20tb2Zmc2V0cy5jLTE0LXtcbmFyY2gveDg2L2t2bS9rdm0tYXNtLW9mZnNldHMuYzoxNTpcdGlmIChJU19FTkFCTEVEKENPTkZJR19LVk1fQU1EKSkge1xuYXJjaC94ODYva3ZtL2t2bS1hc20tb2Zmc2V0cy5jLTE2LVx0XHRCTEFOSygpO1xuLS1cbmFyY2gveDg2L2t2bS9rdm0tYXNtLW9mZnNldHMuYy0yNC1cbmFyY2gveDg2L2t2bS9rdm0tYXNtLW9mZnNldHMuYzoyNTpcdGlmIChJU19FTkFCTEVEKENPTkZJR19LVk1fSU5URUwpKSB7XG5hcmNoL3g4Ni9rdm0va3ZtLWFzbS1vZmZzZXRzLmMtMjYtXHRcdEJMQU5LKCk7XG4tLVxuYXJjaC94ODYva3ZtL2xhcGljLmM9MTQxMD1zdGF0aWMgaW50IF9fYXBpY19hY2NlcHRfaXJxKHN0cnVjdCBrdm1fbGFwaWMgKmFwaWMsIGludCBkZWxpdmVyeV9tb2RlLFxuLS1cbmFyY2gveDg2L2t2bS9sYXBpYy5jLTE0MzItXG5hcmNoL3g4Ni9rdm0vbGFwaWMuYzoxNDMzOiNpZmRlZiBDT05GSUdfS1ZNX0lPQVBJQ1xuYXJjaC94ODYva3ZtL2xhcGljLmMtMTQzNC1cdFx0aWYgKHJ0Y19zdGF0dXMpIHtcbi0tXG5hcmNoL3g4Ni9rdm0vbGFwaWMuYz0xNTU1PXN0YXRpYyB2b2lkIGt2bV9pb2FwaWNfc2VuZF9lb2koc3RydWN0IGt2bV9sYXBpYyAqYXBpYywgaW50IHZlY3Rvcilcbi0tXG5hcmNoL3g4Ni9rdm0vbGFwaWMuYy0xNTg2LVxuYXJjaC94ODYva3ZtL2xhcGljLmM6MTU4NzojaWZkZWYgQ09ORklHX0tWTV9JT0FQSUNcbmFyY2gveDg2L2t2bS9sYXBpYy5jLTE1ODgtXHRpZiAoYXBpY190ZXN0X3ZlY3Rvcih2ZWN0b3IsIGFwaWMtXHUwMDNlcmVncyAmIzQzOyBBUElDX1RNUikpXG4tLVxuYXJjaC94ODYva3ZtL2xhcGljLmM9MzMxNT1pbnQga3ZtX2FwaWNfc2V0X3N0YXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9sYXBpY19zdGF0ZSAqcylcbi0tXG5hcmNoL3g4Ni9rdm0vbGFwaWMuYy0zMzQ4LVxuYXJjaC94ODYva3ZtL2xhcGljLmM6MzM0OTojaWZkZWYgQ09ORklHX0tWTV9JT0FQSUNcbmFyY2gveDg2L2t2bS9sYXBpYy5jLTMzNTAtXHRpZiAoaW9hcGljX2luX2tlcm5lbCh2Y3B1LVx1MDAzZWt2bSkpXG4tLVxuYXJjaC94ODYva3ZtL21tdS9tbXUuYz0xODE4PXN0YXRpYyB2b2lkIGt2bV9tbXVfY2hlY2tfc3B0ZXNfYXRfZnJlZShzdHJ1Y3Qga3ZtX21tdV9wYWdlICpzcClcbmFyY2gveDg2L2t2bS9tbXUvbW11LmMtMTgxOS17XG5hcmNoL3g4Ni9rdm0vbW11L21tdS5jOjE4MjA6I2lmZGVmIENPTkZJR19LVk1fUFJPVkVfTU1VXG5hcmNoL3g4Ni9rdm0vbW11L21tdS5jLTE4MjEtXHRpbnQgaTtcbi0tXG5hcmNoL3g4Ni9rdm0vbW11L21tdS5jPTUxMzU9dm9pZCBrdm1fYXJjaF9hc3luY19wYWdlX3JlYWR5KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9hc3luY19wZiAqd29yaylcbi0tXG5hcmNoL3g4Ni9rdm0vbW11L21tdS5jLTUxNjUtXG5hcmNoL3g4Ni9rdm0vbW11L21tdS5jOjUxNjY6I2lmZGVmIENPTkZJR19LVk1fR1VFU1RfTUVNRkRcbmFyY2gveDg2L2t2bS9tbXUvbW11LmMtNTE2Ny1zdGF0aWMgdm9pZCBrdm1fYXNzZXJ0X2dtZW1faW52YWxpZGF0ZV9sb2NrX2hlbGQoc3RydWN0IGt2bV9tZW1vcnlfc2xvdCAqc2xvdClcbi0tXG5hcmNoL3g4Ni9rdm0vbW11L21tdS5jPTY1Njc9aW50IG5vaW5saW5lIGt2bV9tbXVfcGFnZV9mYXVsdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGdwYV90IGNyMl9vcl9ncGEsIHU2NCBlcnJvcl9jb2RlLFxuLS1cbmFyY2gveDg2L2t2bS9tbXUvbW11LmMtNjU4My1cdCAqL1xuYXJjaC94ODYva3ZtL21tdS9tbXUuYzo2NTg0Olx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0tWTV9TV19QUk9URUNURURfVk0pIFx1MDAyNlx1MDAyNlxuYXJjaC94ODYva3ZtL21tdS9tbXUuYy02NTg1LVx0ICAgICEoZXJyb3JfY29kZSBcdTAwMjYgUEZFUlJfUlNWRF9NQVNLKSBcdTAwMjZcdTAwMjZcbi0tXG5hcmNoL3g4Ni9rdm0vbW11L21tdS5jPTgwOTQ9dm9pZCBrdm1fbW11X3ByZV9kZXN0cm95X3ZtKHN0cnVjdCBrdm0gKmt2bSlcbi0tXG5hcmNoL3g4Ni9rdm0vbW11L21tdS5jLTgwOTktXG5hcmNoL3g4Ni9rdm0vbW11L21tdS5jOjgxMDA6I2lmZGVmIENPTkZJR19LVk1fR0VORVJJQ19NRU1PUllfQVRUUklCVVRFU1xuYXJjaC94ODYva3ZtL21tdS9tbXUuYy04MTAxLXN0YXRpYyBib29sIGh1Z2VwYWdlX3Rlc3RfbWl4ZWQoc3RydWN0IGt2bV9tZW1vcnlfc2xvdCAqc2xvdCwgZ2ZuX3QgZ2ZuLFxuLS1cbmFyY2gveDg2L2t2bS9tbXUvbW11X2ludGVybmFsLmgtMTAtXG5hcmNoL3g4Ni9rdm0vbW11L21tdV9pbnRlcm5hbC5oOjExOiNpZmRlZiBDT05GSUdfS1ZNX1BST1ZFX01NVVxuYXJjaC94ODYva3ZtL21tdS9tbXVfaW50ZXJuYWwuaC0xMi0jZGVmaW5lIEtWTV9NTVVfV0FSTl9PTih4KSBXQVJOX09OX09OQ0UoeClcbi0tXG5hcmNoL3g4Ni9rdm0vbW11L3BhZ2VfdHJhY2suYz0yMz1zdGF0aWMgYm9vbCBrdm1fZXh0ZXJuYWxfd3JpdGVfdHJhY2tpbmdfZW5hYmxlZChzdHJ1Y3Qga3ZtICprdm0pXG5hcmNoL3g4Ni9rdm0vbW11L3BhZ2VfdHJhY2suYy0yNC17XG5hcmNoL3g4Ni9rdm0vbW11L3BhZ2VfdHJhY2suYzoyNTojaWZkZWYgQ09ORklHX0tWTV9FWFRFUk5BTF9XUklURV9UUkFDS0lOR1xuYXJjaC94ODYva3ZtL21tdS9wYWdlX3RyYWNrLmMtMjYtXHQvKlxuLS1cbmFyY2gveDg2L2t2bS9tbXUvcGFnZV90cmFjay5jPTE0Nj1ib29sIGt2bV9nZm5faXNfd3JpdGVfdHJhY2tlZChzdHJ1Y3Qga3ZtICprdm0sXG4tLVxuYXJjaC94ODYva3ZtL21tdS9wYWdlX3RyYWNrLmMtMTcwLVxuYXJjaC94ODYva3ZtL21tdS9wYWdlX3RyYWNrLmM6MTcxOiNpZmRlZiBDT05GSUdfS1ZNX0VYVEVSTkFMX1dSSVRFX1RSQUNLSU5HXG5hcmNoL3g4Ni9rdm0vbW11L3BhZ2VfdHJhY2suYy0xNzItdm9pZCBrdm1fcGFnZV90cmFja19jbGVhbnVwKHN0cnVjdCBrdm0gKmt2bSlcbi0tXG5hcmNoL3g4Ni9rdm0vbW11L3BhZ2VfdHJhY2suaD0yMz1ib29sIGt2bV9nZm5faXNfd3JpdGVfdHJhY2tlZChzdHJ1Y3Qga3ZtICprdm0sXG4tLVxuYXJjaC94ODYva3ZtL21tdS9wYWdlX3RyYWNrLmgtMjUtXG5hcmNoL3g4Ni9rdm0vbW11L3BhZ2VfdHJhY2suaDoyNjojaWZkZWYgQ09ORklHX0tWTV9FWFRFUk5BTF9XUklURV9UUkFDS0lOR1xuYXJjaC94ODYva3ZtL21tdS9wYWdlX3RyYWNrLmgtMjctaW50IGt2bV9wYWdlX3RyYWNrX2luaXQoc3RydWN0IGt2bSAqa3ZtKTtcbi0tXG5hcmNoL3g4Ni9rdm0vbW11L3BhZ2VfdHJhY2suaD00Nj1zdGF0aWMgaW5saW5lIGJvb2wga3ZtX3BhZ2VfdHJhY2tfaGFzX2V4dGVybmFsX3VzZXIoc3RydWN0IGt2bSAqa3ZtKSB7IHJldHVybiBmYWxzZTsgfVxuYXJjaC94ODYva3ZtL21tdS9wYWdlX3RyYWNrLmgtNDctXG5hcmNoL3g4Ni9rdm0vbW11L3BhZ2VfdHJhY2suaDo0ODojZW5kaWYgLyogQ09ORklHX0tWTV9FWFRFUk5BTF9XUklURV9UUkFDS0lORyAqL1xuYXJjaC94ODYva3ZtL21tdS9wYWdlX3RyYWNrLmgtNDktXG4tLVxuYXJjaC94ODYva3ZtL21tdS90ZHBfbW11LmM9MzM9dm9pZCBrdm1fbW11X3VuaW5pdF90ZHBfbW11KHN0cnVjdCBrdm0gKmt2bSlcbi0tXG5hcmNoL3g4Ni9rdm0vbW11L3RkcF9tbXUuYy00Mi1cbmFyY2gveDg2L2t2bS9tbXUvdGRwX21tdS5jOjQzOiNpZmRlZiBDT05GSUdfS1ZNX1BST1ZFX01NVVxuYXJjaC94ODYva3ZtL21tdS90ZHBfbW11LmMtNDQtXHRLVk1fTU1VX1dBUk5fT04oYXRvbWljNjRfcmVhZChcdTAwMjZrdm0tXHUwMDNlYXJjaC50ZHBfbW11X3BhZ2VzKSk7XG4tLVxuYXJjaC94ODYva3ZtL21tdS90ZHBfbW11LmM9MzMzPXN0YXRpYyB2b2lkIHRkcF9hY2NvdW50X21tdV9wYWdlKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9tbXVfcGFnZSAqc3ApXG4tLVxuYXJjaC94ODYva3ZtL21tdS90ZHBfbW11LmMtMzM1LVx0a3ZtX2FjY291bnRfcGd0YWJsZV9wYWdlcygodm9pZCAqKXNwLVx1MDAzZXNwdCwgJiM0MzsxKTtcbmFyY2gveDg2L2t2bS9tbXUvdGRwX21tdS5jOjMzNjojaWZkZWYgQ09ORklHX0tWTV9QUk9WRV9NTVVcbmFyY2gveDg2L2t2bS9tbXUvdGRwX21tdS5jLTMzNy1cdGF0b21pYzY0X2luYyhcdTAwMjZrdm0tXHUwMDNlYXJjaC50ZHBfbW11X3BhZ2VzKTtcbi0tXG5hcmNoL3g4Ni9rdm0vbW11L3RkcF9tbXUuYz0zNDE9c3RhdGljIHZvaWQgdGRwX3VuYWNjb3VudF9tbXVfcGFnZShzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fbW11X3BhZ2UgKnNwKVxuLS1cbmFyY2gveDg2L2t2bS9tbXUvdGRwX21tdS5jLTM0My1cdGt2bV9hY2NvdW50X3BndGFibGVfcGFnZXMoKHZvaWQgKilzcC1cdTAwM2VzcHQsIC0xKTtcbmFyY2gveDg2L2t2bS9tbXUvdGRwX21tdS5jOjM0NDojaWZkZWYgQ09ORklHX0tWTV9QUk9WRV9NTVVcbmFyY2gveDg2L2t2bS9tbXUvdGRwX21tdS5jLTM0NS1cdGF0b21pYzY0X2RlYyhcdTAwMjZrdm0tXHUwMDNlYXJjaC50ZHBfbW11X3BhZ2VzKTtcbi0tXG5hcmNoL3g4Ni9rdm0vbW11L3RkcF9tbXUuYz04Mjk9c3RhdGljIHZvaWQgdGRwX21tdV96YXBfcm9vdChzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fbW11X3BhZ2UgKnJvb3QsXG4tLVxuYXJjaC94ODYva3ZtL21tdS90ZHBfbW11LmMtODY1LVx0ICovXG5hcmNoL3g4Ni9rdm0vbW11L3RkcF9tbXUuYzo4NjY6XHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX0tWTV9QUk9WRV9NTVUpKSB7XG5hcmNoL3g4Ni9rdm0vbW11L3RkcF9tbXUuYy04NjctXHRcdF9fdGRwX21tdV96YXBfcm9vdChrdm0sIHJvb3QsIHNoYXJlZCwgUEdfTEVWRUxfNEspO1xuLS1cbmFyY2gveDg2L2t2bS9tc3JzLmM9MjU0PXN0YXRpYyBjb25zdCB1MzIgZW11bGF0ZWRfbXNyc19hbGxbXSA9IHtcbi0tXG5hcmNoL3g4Ni9rdm0vbXNycy5jLTI1Ny1cbmFyY2gveDg2L2t2bS9tc3JzLmM6MjU4OiNpZmRlZiBDT05GSUdfS1ZNX0hZUEVSVlxuYXJjaC94ODYva3ZtL21zcnMuYy0yNTktXHRIVl9YNjRfTVNSX0dVRVNUX09TX0lELCBIVl9YNjRfTVNSX0hZUEVSQ0FMTCxcbi0tXG5hcmNoL3g4Ni9rdm0vbXNycy5jPTE0NDI9aW50IGt2bV9zZXRfbXNyX2NvbW1vbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBtc3JfZGF0YSAqbXNyX2luZm8pXG4tLVxuYXJjaC94ODYva3ZtL21zcnMuYy0xNjIyLVx0Y2FzZSBNU1JfSUEzMl9TTUJBU0U6XG5hcmNoL3g4Ni9rdm0vbXNycy5jOjE2MjM6XHRcdGlmICghSVNfRU5BQkxFRChDT05GSUdfS1ZNX1NNTSkgfHwgIW1zcl9pbmZvLVx1MDAzZWhvc3RfaW5pdGlhdGVkKVxuYXJjaC94ODYva3ZtL21zcnMuYy0xNjI0LVx0XHRcdHJldHVybiAxO1xuLS1cbmFyY2gveDg2L2t2bS9tc3JzLmMtMTc3MC1cdFx0YnJlYWs7XG5hcmNoL3g4Ni9rdm0vbXNycy5jOjE3NzE6I2lmZGVmIENPTkZJR19LVk1fSFlQRVJWXG5hcmNoL3g4Ni9rdm0vbXNycy5jLTE3NzItXHRjYXNlIEhWX1g2NF9NU1JfR1VFU1RfT1NfSUQgLi4uIEhWX1g2NF9NU1JfU0lOVDE1OlxuLS1cbmFyY2gveDg2L2t2bS9tc3JzLmM9MTg5OT1pbnQga3ZtX2dldF9tc3JfY29tbW9uKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IG1zcl9kYXRhICptc3JfaW5mbylcbi0tXG5hcmNoL3g4Ni9rdm0vbXNycy5jLTIwMTgtXHRjYXNlIE1TUl9JQTMyX1NNQkFTRTpcbmFyY2gveDg2L2t2bS9tc3JzLmM6MjAxOTpcdFx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19LVk1fU01NKSB8fCAhbXNyX2luZm8tXHUwMDNlaG9zdF9pbml0aWF0ZWQpXG5hcmNoL3g4Ni9rdm0vbXNycy5jLTIwMjAtXHRcdFx0cmV0dXJuIDE7XG4tLVxuYXJjaC94ODYva3ZtL21zcnMuYy0yMTIxLVx0XHRicmVhaztcbmFyY2gveDg2L2t2bS9tc3JzLmM6MjEyMjojaWZkZWYgQ09ORklHX0tWTV9IWVBFUlZcbmFyY2gveDg2L2t2bS9tc3JzLmMtMjEyMy1cdGNhc2UgSFZfWDY0X01TUl9HVUVTVF9PU19JRCAuLi4gSFZfWDY0X01TUl9TSU5UMTU6XG4tLVxuYXJjaC94ODYva3ZtL3NtbS5oLTYtXG5hcmNoL3g4Ni9rdm0vc21tLmg6NzojaWZkZWYgQ09ORklHX0tWTV9TTU1cbmFyY2gveDg2L2t2bS9zbW0uaC04LVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vaHlwZXJ2LmgtMTMtXG5hcmNoL3g4Ni9rdm0vc3ZtL2h5cGVydi5oOjE0OiNpZmRlZiBDT05GSUdfS1ZNX0hZUEVSVlxuYXJjaC94ODYva3ZtL3N2bS9oeXBlcnYuaC0xNS1zdGF0aWMgaW5saW5lIHZvaWQgbmVzdGVkX3N2bV9odl91cGRhdGVfdm1fdnBfaWRzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL2h5cGVydi5oPTUxPXZvaWQgc3ZtX2h2X2luamVjdF9zeW50aGV0aWNfdm1leGl0X3Bvc3RfdGxiX2ZsdXNoKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XG5hcmNoL3g4Ni9rdm0vc3ZtL2h5cGVydi5oOjUyOiNlbHNlIC8qIENPTkZJR19LVk1fSFlQRVJWICovXG5hcmNoL3g4Ni9rdm0vc3ZtL2h5cGVydi5oLTUzLXN0YXRpYyBpbmxpbmUgdm9pZCBuZXN0ZWRfc3ZtX2h2X3VwZGF0ZV92bV92cF9pZHMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KSB7fVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vaHlwZXJ2Lmg9NTg9c3RhdGljIGlubGluZSB2b2lkIHN2bV9odl9pbmplY3Rfc3ludGhldGljX3ZtZXhpdF9wb3N0X3RsYl9mbHVzaChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpIHt9XG5hcmNoL3g4Ni9rdm0vc3ZtL2h5cGVydi5oOjU5OiNlbmRpZiAvKiBDT05GSUdfS1ZNX0hZUEVSViAqL1xuYXJjaC94ODYva3ZtL3N2bS9oeXBlcnYuaC02MC1cbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jPTI5NT1zdGF0aWMgYm9vbCBuZXN0ZWRfc3ZtX21lcmdlX21zcnBtKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTMwOS1cdCAqL1xuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzozMTA6I2lmZGVmIENPTkZJR19LVk1fSFlQRVJWXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTMxMS1cdGlmICghc3ZtLVx1MDAzZW5lc3RlZC5mb3JjZV9tc3JfYml0bWFwX3JlY2FsYykge1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMzM4LVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzozMzk6I2lmZGVmIENPTkZJR19LVk1fSFlQRVJWXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTM0MC1zZXRfbXNycG1fYmFzZV9wYTpcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jPTUxMz12b2lkIF9fbmVzdGVkX2NvcHlfdm1jYl9jb250cm9sX3RvX2NhY2hlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTU2MC1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6NTYxOiNpZmRlZiBDT05GSUdfS1ZNX0hZUEVSVlxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy01NjItXHQvKiBIeXBlci1WIGV4dGVuc2lvbnMgKEVubGlnaHRlbmVkIFZNQ0IpICovXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYz0xNzIxPXN0YXRpYyBpbnQgc3ZtX2NoZWNrX25lc3RlZF9ldmVudHMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTc2Mi1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTc2MzojaWZkZWYgQ09ORklHX0tWTV9TTU1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTc2NC1cdGlmICh2Y3B1LVx1MDAzZWFyY2guc21pX3BlbmRpbmcgXHUwMDI2XHUwMDI2ICFzdm1fc21pX2Jsb2NrZWQodmNwdSkpIHtcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jPTMwODY9dm9pZCBfX2luaXQgc2V2X2hhcmR3YXJlX3NldHVwKHZvaWQpXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0zMTE2LVx0ICovXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jOjMxMTc6XHRpZiAoSVNfQlVJTFRJTihDT05GSUdfS1ZNX0FNRCkgXHUwMDI2XHUwMDI2IHNldl9tb2R1bGVfaW5pdCgpKVxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0zMTE4LVx0XHRnb3RvIG91dDtcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jPTIxNjU9c3RhdGljIGludCBzaHV0ZG93bl9pbnRlcmNlcHRpb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtMjE4My1cdFx0Y2xlYXJfcGFnZShzdm0tXHUwMDNldm1jYik7XG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jOjIxODQ6I2lmZGVmIENPTkZJR19LVk1fU01NXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTIxODUtXHRcdGlmIChpc19zbW0odmNwdSkpXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYz0zMzQ3PXN0YXRpYyBpbnQgKCpjb25zdCBzdm1fZXhpdF9oYW5kbGVyc1tdKShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpID0ge1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtMzQyMC1cdFtTVk1fRVhJVF9BVklDX1VOQUNDRUxFUkFURURfQUNDRVNTXVx0PSBhdmljX3VuYWNjZWxlcmF0ZWRfYWNjZXNzX2ludGVyY2VwdGlvbixcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM6MzQyMTojaWZkZWYgQ09ORklHX0tWTV9BTURfU0VWXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTM0MjItXHRbU1ZNX0VYSVRfVk1HRVhJVF1cdFx0XHQ9IHNldl9oYW5kbGVfdm1nZXhpdCxcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jPTM2MzY9aW50IHN2bV9pbnZva2VfZXhpdF9oYW5kbGVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IF9fZXhpdF9jb2RlKVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtMzY2Mi1cdFx0cmV0dXJuIG5wZl9pbnRlcmNlcHRpb24odmNwdSk7XG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jOjM2NjM6I2lmZGVmIENPTkZJR19LVk1fQU1EX1NFVlxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy0zNjY0LVx0ZWxzZSBpZiAoZXhpdF9jb2RlID09IFNWTV9FWElUX1ZNR0VYSVQpXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYz00NzA0PXN0YXRpYyBib29sIHN2bV9oYXNfZW11bGF0ZWRfbXNyKHN0cnVjdCBrdm0gKmt2bSwgdTMyIGluZGV4KVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNDcxMC1cdGNhc2UgTVNSX0lBMzJfU01CQVNFOlxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYzo0NzExOlx0XHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX0tWTV9TTU0pKVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy00NzEyLVx0XHRcdHJldHVybiBmYWxzZTtcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNDcxMy1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM6NDcxNDojaWZkZWYgQ09ORklHX0tWTV9BTURfU0VWXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTQ3MTUtXHRcdC8qXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYz00OTc5PXN0YXRpYyB2b2lkIHN2bV9zZXR1cF9tY2Uoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNDk4NC1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM6NDk4NTojaWZkZWYgQ09ORklHX0tWTV9TTU1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNDk4Ni1ib29sIHN2bV9zbWlfYmxvY2tlZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYz01MzI4PXN0cnVjdCBrdm1feDg2X29wcyBzdm1feDg2X29wcyBfX2luaXRkYXRhID0ge1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNTQzNS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM6NTQzNjojaWZkZWYgQ09ORklHX0tWTV9TTU1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNTQzNy1cdC5zbWlfYWxsb3dlZCA9IHN2bV9zbWlfYWxsb3dlZCxcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTU0NDItXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jOjU0NDM6I2lmZGVmIENPTkZJR19LVk1fQU1EX1NFVlxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy01NDQ0LVx0LnZjcHVfbmVlZHNfaW5pdGlhbGl6YXRpb24gPSBzZXZfdmNwdV9uZWVkc19pbml0aWFsaXphdGlvbixcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oPTY2PWVudW0ge1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmgtOTctXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oOjk4OiNpZmRlZiBDT05GSUdfS1ZNX0FNRF9TRVZcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmgtOTktc3RydWN0IGt2bV9zZXZfaW5mbyB7XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uaD0xMjc9c3RydWN0IGt2bV9zdm0ge1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmgtMTM1LVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uaDoxMzY6I2lmZGVmIENPTkZJR19LVk1fQU1EX1NFVlxuYXJjaC94ODYva3ZtL3N2bS9zdm0uaC0xMzctXHRzdHJ1Y3Qga3ZtX3Nldl9pbmZvIHNldl9pbmZvO1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmg9MTgwPXN0cnVjdCB2bWNiX2N0cmxfYXJlYV9jYWNoZWQge1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmgtMjA1LVx0dW5pb24ge1xuYXJjaC94ODYva3ZtL3N2bS9zdm0uaDoyMDY6I2lmIElTX0VOQUJMRUQoQ09ORklHX0hZUEVSVikgfHwgSVNfRU5BQkxFRChDT05GSUdfS1ZNX0hZUEVSVilcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmgtMjA3LVx0XHRzdHJ1Y3QgaHZfdm1jYl9lbmxpZ2h0ZW5tZW50cyBodl9lbmxpZ2h0ZW5tZW50cztcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oPTM5MD1zdGF0aWMgX19hbHdheXNfaW5saW5lIHN0cnVjdCBrdm1fc3ZtICp0b19rdm1fc3ZtKHN0cnVjdCBrdm0gKmt2bSlcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oLTM5NC1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmg6Mzk1OiNpZmRlZiBDT05GSUdfS1ZNX0FNRF9TRVZcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmgtMzk2LXN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgc3RydWN0IGt2bV9zZXZfaW5mbyAqdG9fa3ZtX3Nldl9pbmZvKHN0cnVjdCBrdm0gKmt2bSlcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oPTk4MD12b2lkIHNldl9lc191bm1hcF9naGNiKHN0cnVjdCB2Y3B1X3N2bSAqc3ZtKTtcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmgtOTgxLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uaDo5ODI6I2lmZGVmIENPTkZJR19LVk1fQU1EX1NFVlxuYXJjaC94ODYva3ZtL3N2bS9zdm0uaC05ODMtYm9vbCBzZXZfdmNwdV9uZWVkc19pbml0aWFsaXphdGlvbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vdm1lbnRlci5TPTIxMD1TWU1fRlVOQ19FTkQoX19zdm1fdmNwdV9ydW4pXG5hcmNoL3g4Ni9rdm0vc3ZtL3ZtZW50ZXIuUy0yMTEtXG5hcmNoL3g4Ni9rdm0vc3ZtL3ZtZW50ZXIuUzoyMTI6I2lmZGVmIENPTkZJR19LVk1fQU1EX1NFVlxuYXJjaC94ODYva3ZtL3N2bS92bWVudGVyLlMtMjEzLVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vdm1lbnRlci5TPTI4Mz1TWU1fRlVOQ19FTkQoX19zdm1fc2V2X2VzX3ZjcHVfcnVuKVxuYXJjaC94ODYva3ZtL3N2bS92bWVudGVyLlM6Mjg0OiNlbmRpZiAvKiBDT05GSUdfS1ZNX0FNRF9TRVYgKi9cbi0tXG5hcmNoL3g4Ni9rdm0vdHJhY2UuaD0yMjg9VFJBQ0VfRVZFTlQoa3ZtX2NwdWlkLFxuLS1cbmFyY2gveDg2L2t2bS90cmFjZS5oLTI3Mi1cbmFyY2gveDg2L2t2bS90cmFjZS5oOjI3MzojaWZkZWYgQ09ORklHX0tWTV9JT0FQSUNcbmFyY2gveDg2L2t2bS90cmFjZS5oLTI3NC1UUkFDRV9FVkVOVChrdm1faW9hcGljX3NldF9pcnEsXG4tLVxuYXJjaC94ODYva3ZtL3ZteC9jb21tb24uaD0zMz1zdHJ1Y3QgdmNwdV92dCB7XG4tLVxuYXJjaC94ODYva3ZtL3ZteC9jb21tb24uaC01Ny1cbmFyY2gveDg2L2t2bS92bXgvY29tbW9uLmg6NTg6I2lmZGVmIENPTkZJR19LVk1fSU5URUxfVERYXG5hcmNoL3g4Ni9rdm0vdm14L2NvbW1vbi5oLTU5LVxuLS1cbmFyY2gveDg2L2t2bS92bXgvaHlwZXJ2Lmg9MTI9ZW51bSBuZXN0ZWRfZXZtcHRybGRfc3RhdHVzIHtcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L2h5cGVydi5oLTE4LVxuYXJjaC94ODYva3ZtL3ZteC9oeXBlcnYuaDoxOTojaWZkZWYgQ09ORklHX0tWTV9IWVBFUlZcbmFyY2gveDg2L2t2bS92bXgvaHlwZXJ2LmgtMjAtc3RhdGljIGlubGluZSBib29sIGV2bXB0cl9pc192YWxpZCh1NjQgZXZtcHRyKVxuLS1cbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jLTEyLVxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmM6MTM6I2lmZGVmIENPTkZJR19LVk1fSU5URUxfVERYXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYy0xNC1zdGF0aWNfYXNzZXJ0KG9mZnNldG9mKHN0cnVjdCB2Y3B1X3ZteCwgdnQpID09IG9mZnNldG9mKHN0cnVjdCB2Y3B1X3RkeCwgdnQpKTtcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYz0yMTg9c3RhdGljIGludCB2dF9jb21wbGV0ZV9lbXVsYXRlZF9tc3Ioc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBpbnQgZXJyKVxuLS1cbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jLTIyNS1cbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jOjIyNjojaWZkZWYgQ09ORklHX0tWTV9TTU1cbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jLTIyNy1zdGF0aWMgaW50IHZ0X3NtaV9hbGxvd2VkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgYm9vbCBmb3JfaW5qZWN0aW9uKVxuLS1cbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jPTg2Mz1zdGF0aWMgaW50IHZ0X2dtZW1fbWF4X21hcHBpbmdfbGV2ZWwoc3RydWN0IGt2bSAqa3ZtLCBrdm1fcGZuX3QgcGZuLFxuLS1cbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jLTg3My0jZGVmaW5lIHZ0X29wX3RkeF9vbmx5KG5hbWUpIHZ0XyMjbmFtZVxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmM6ODc0OiNlbHNlIC8qIENPTkZJR19LVk1fSU5URUxfVERYICovXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYy04NzUtI2RlZmluZSB2dF9vcChuYW1lKSB2bXhfIyNuYW1lXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYy04NzYtI2RlZmluZSB2dF9vcF90ZHhfb25seShuYW1lKSBOVUxMXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYzo4Nzc6I2VuZGlmIC8qIENPTkZJR19LVk1fSU5URUxfVERYICovXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYy04NzgtXG4tLVxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmM9ODg4PXN0cnVjdCBrdm1feDg2X29wcyB2dF94ODZfb3BzIF9faW5pdGRhdGEgPSB7XG4tLVxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmMtMTAxNi1cbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jOjEwMTc6I2lmZGVmIENPTkZJR19LVk1fU01NXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYy0xMDE4LVx0LnNtaV9hbGxvd2VkID0gdnRfb3Aoc21pX2FsbG93ZWQpLFxuLS1cbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmM9MjM0PXN0YXRpYyBpbmxpbmUgdm9pZCBuZXN0ZWRfcmVsZWFzZV9ldm1jcyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jLTIzNS17XG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jOjIzNjojaWZkZWYgQ09ORklHX0tWTV9IWVBFUlZcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmMtMjM3LVx0c3RydWN0IGt2bV92Y3B1X2h2ICpodl92Y3B1ID0gdG9faHZfdmNwdSh2Y3B1KTtcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jPTI1Mj1zdGF0aWMgYm9vbCBuZXN0ZWRfZXZtY3NfaGFuZGxlX3ZtY2xlYXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBncGFfdCB2bXB0cilcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmMtMjUzLXtcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmM6MjU0OiNpZmRlZiBDT05GSUdfS1ZNX0hZUEVSVlxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy0yNTUtXHRzdHJ1Y3QgdmNwdV92bXggKnZteCA9IHRvX3ZteCh2Y3B1KTtcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jPTE3NTQ9c3RhdGljIHZvaWQgY29weV9lbmxpZ2h0ZW5lZF90b192bWNzMTIoc3RydWN0IHZjcHVfdm14ICp2bXgsIHUzMiBodl9jbGVhbl9maWVsZHMpXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jLTE3NTUte1xuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYzoxNzU2OiNpZmRlZiBDT05GSUdfS1ZNX0hZUEVSVlxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy0xNzU3LVx0c3RydWN0IHZtY3MxMiAqdm1jczEyID0gdm14LVx1MDAzZW5lc3RlZC5jYWNoZWRfdm1jczEyO1xuLS1cbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmMtMTk5Ni1cdHJldHVybjtcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmM6MTk5NzojZWxzZSAvKiBDT05GSUdfS1ZNX0hZUEVSViAqL1xuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy0xOTk4LVx0S1ZNX0JVR19PTigxLCB2bXgtXHUwMDNldmNwdS5rdm0pO1xuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYzoxOTk5OiNlbmRpZiAvKiBDT05GSUdfS1ZNX0hZUEVSViAqL1xuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy0yMDAwLX1cbi0tXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jPTIwMDI9c3RhdGljIHZvaWQgY29weV92bWNzMTJfdG9fZW5saWdodGVuZWQoc3RydWN0IHZjcHVfdm14ICp2bXgpXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jLTIwMDMte1xuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYzoyMDA0OiNpZmRlZiBDT05GSUdfS1ZNX0hZUEVSVlxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy0yMDA1LVx0c3RydWN0IHZtY3MxMiAqdm1jczEyID0gdm14LVx1MDAzZW5lc3RlZC5jYWNoZWRfdm1jczEyO1xuLS1cbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmMtMjE3NC1cdHJldHVybjtcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmM6MjE3NTojZWxzZSAvKiBDT05GSUdfS1ZNX0hZUEVSViAqL1xuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy0yMTc2LVx0S1ZNX0JVR19PTigxLCB2bXgtXHUwMDNldmNwdS5rdm0pO1xuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYzoyMTc3OiNlbmRpZiAvKiBDT05GSUdfS1ZNX0hZUEVSViAqL1xuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy0yMTc4LX1cbi0tXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jPTIxODQ9c3RhdGljIGVudW0gbmVzdGVkX2V2bXB0cmxkX3N0YXR1cyBuZXN0ZWRfdm14X2hhbmRsZV9lbmxpZ2h0ZW5lZF92bXB0cmxkKFxuLS1cbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmMtMjE4Ni17XG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jOjIxODc6I2lmZGVmIENPTkZJR19LVk1fSFlQRVJWXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jLTIxODgtXHRzdHJ1Y3QgdmNwdV92bXggKnZteCA9IHRvX3ZteCh2Y3B1KTtcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jPTMxMjc9c3RhdGljIGludCBuZXN0ZWRfdm14X2NoZWNrX2NvbnRyb2xzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jLTMxMzQtXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jOjMxMzU6I2lmZGVmIENPTkZJR19LVk1fSFlQRVJWXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jLTMxMzYtXHRpZiAoZ3Vlc3RfY3B1X2NhcF9oYXNfZXZtY3ModmNwdSkpXG4tLVxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYz0zMzExPXN0YXRpYyBpbnQgbmVzdGVkX3ZteF9jaGVja19ndWVzdF9zdGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4tLVxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy0zNDExLVxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYzozNDEyOiNpZmRlZiBDT05GSUdfS1ZNX0hZUEVSVlxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy0zNDEzLXN0YXRpYyBib29sIG5lc3RlZF9nZXRfZXZtY3NfcGFnZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYz0zNTMwPXN0YXRpYyBib29sIHZteF9nZXRfbmVzdGVkX3N0YXRlX3BhZ2VzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmMtMzUzMS17XG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDc6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjAzOTEKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA5NDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgS1ZNIE1NVSBQYWdlIExpbWl0IEFkanVzdG1lbnQqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIGNvbW1pdC4gTXkgaW5pdGlhbCBpbXByZXNzaW9uIGlzIHRoYXQgaXQmIzM5O3MgYWRkcmVzc2luZyBhIHN1YnRsZSBidXQgcG90ZW50aWFsbHkgaW1wYWN0ZnVsIGJ1ZyB3aXRoaW4gS1ZNJiMzOTtzIE1NVSBwYWdlIGxpbWl0IG1hbmFnZW1lbnQsIHNwZWNpZmljYWxseSBmb3IgeDg2LiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCB0aGUgZGlmZiBpdHNlbGYuIEl0IGxvb2tzIGxpa2Ugd2UmIzM5O3JlIGNoYW5naW5nIGhvdyBgZ29hbF9ucl9tbXVfcGFnZXNgIGlzIGFzc2lnbmVkIHdpdGhpbiBga3ZtX21tdV9jaGFuZ2VfbW11X3BhZ2VzYC4gVGhlIG9yaWdpbmFsIGFzc2lnbm1lbnQsIGBnb2FsX25yX21tdV9wYWdlcyA9IGt2bS0mZ3Q7c3RhdC5tbXVfc2hhZG93X3BhZ2VzO2AsIGlzIGJlaW5nIHJlcGxhY2VkIHdpdGggYGdvYWxfbnJfbW11X3BhZ2VzID0gbWF4KGt2bS0mZ3Q7c3RhdC5tbXVfc2hhZG93X3BhZ2VzLCBnb2FsX25yX21tdV9wYWdlcyk7YC4KCk15IG1pbmQgc3RhcnRzIHRvIHdvcmsgdGhyb3VnaCBhIHNjZW5hcmlvIHRvIHVuZGVyc3RhbmQgdGhlIHBvdGVudGlhbCBpc3N1ZS4gU3VwcG9zZSB3ZSYjMzk7cmUgdHJ5aW5nIHRvICpyZWR1Y2UqIHRoZSBudW1iZXIgb2YgTU1VIHNoYWRvdyBwYWdlcy4gYGt2bV9tbXVfemFwX29sZGVzdF9tbXVfcGFnZXNgIGlzIGNhbGxlZCB0byBmcmVlIHVwIHNvbWUgcGFnZXMgdG8gZ2V0IGRvd24gdG8gYGdvYWxfbnJfbW11X3BhZ2VzYC4gTm93LCB3aGF0IGlmIHRoZSB6YXBwaW5nIG9wZXJhdGlvbiBpc24mIzM5O3QgcGVyZmVjdD8gSXQgbWlnaHQgZW5kIHVwIHphcHBpbmcgKm1vcmUqIHBhZ2VzIHRoYW4gc3RyaWN0bHkgcmVxdWVzdGVkLiBUaGlzIGNhdXNlcyBga3ZtLSZndDtzdGF0Lm1tdV9zaGFkb3dfcGFnZXNgIHRvIGRyb3AuIFRoZSBwcmV2aW91cyBjb2RlIHRoZW4gKnJlYXNzaWducyogYGdvYWxfbnJfbW11X3BhZ2VzYCB0byB0aGlzIHBvdGVudGlhbGx5IHJlZHVjZWQgdmFsdWUgb2YgYG1tdV9zaGFkb3dfcGFnZXNgLCBlZmZlY3RpdmVseSAqbG93ZXJpbmcgdGhlIHJlcXVlc3RlZCBnb2FsKi4gVGhpcyBpcyB3aGVyZSB0aGUgZml4IGNvbWVzIGluLiBXaXRoIHRoZSBgbWF4KClgIGFzc2lnbm1lbnQsIHdlIGVuc3VyZSB0aGF0IGBnb2FsX25yX21tdV9wYWdlc2AgcmVtYWlucyBhdCB0aGUgaW50ZW5kZWQgbG93ZXIgYm91bmQsIHJhdGhlciB0aGFuIHBvdGVudGlhbGx5IGJlaW5nIGFjY2lkZW50YWxseSByZWR1Y2VkIGZ1cnRoZXIuCgpJIG5lZWQgdG8gY29uZmlybSB0aGlzOiBpcyB0aGlzIGNvZGUgcGF0aCBhY3R1YWxseSByZWFjaGFibGU/IEkgc2VlIGBrdm1fbW11X2NoYW5nZV9tbXVfcGFnZXNgIGlzIGluZGVlZCBleHBvc2VkIHZpYSB0aGUgYEtWTV9TRVRfTlJfTU1VX1BBR0VTYCBpb2N0bCwgYW5kIGFsc28gdmlhIG1lbW9yeSByZWdpb24gdXBkYXRlcy4gVGhpcyBpcyBnb29kOyB0aGF0IG1ha2VzIGl0IGVhc2lseSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UsIHdoaWNoIGlzIGltcG9ydGFudCBmb3IgdGVzdGluZy4gRnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUsIHRoaXMgdnVsbmVyYWJpbGl0eSBpcyBpbnRlcmVzdGluZyBiZWNhdXNlIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBhbmQgZnV6emluZyBhcmUgaW4gdmVyeSBjbG9zZSBwcm94aW1pdHkuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgaWYgc3l6a2FsbGVyIGlzIGFscmVhZHkgdGVzdGluZyB0aGlzIGZ1bmN0aW9uYWxpdHkuCgpOb3csIGxldCYjMzk7cyBjaGVjayBzb21lIHN1cHBvcnRpbmcgaW5mb3JtYXRpb24uIExldCYjMzk7cyBzZWUgaWYgdGhpcyBmaXggaXMgd2l0aGluIHRoZSBjcml0aWNhbCBmb2N1cyBzeW1ib2xzLCB3aGljaCBpcyBga3ZtX21tdV9jaGFuZ2VfbW11X3BhZ2VzYCBhbmQgaXRzIGlvY3RsIGhhbmRsZXIsIGBrdm1fdm1faW9jdGxfc2V0X25yX21tdV9wYWdlc2AuIFdlJiMzOTtsbCBhbHNvIGNoZWNrIHRoZSBgRW5hYmxlQ29uZmlnc2AsIHdoaWNoIHdpbGwgY29uZmlybSB0aGF0IHdlIHJlcXVpcmUgS1ZNLCBhbmQgYWxzbyBlaXRoZXIgS1ZNX0lOVEVMIG9yIEtWTV9BTUQgdG8gYnVpbGQgdGhpcy4gSSYjMzk7bGwgdGFrZSBhIHF1aWNrIGxvb2sgYXQgdGhlIEtjb25maWcgZGVmaW5pdGlvbnMgb2YgdGhlIEtWTSBvcHRpb25zIHRvIG1ha2Ugc3VyZSBteSB1bmRlcnN0YW5kaW5nIGlzIGNvbXBsZXRlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwNzowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgS1ZNJCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vS2NvbmZpZz0yMD1jb25maWcgS1ZNX1g4NlxuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTUxLVxuYXJjaC94ODYva3ZtL0tjb25maWc6NTI6Y29uZmlnIEtWTVxuYXJjaC94ODYva3ZtL0tjb25maWctNTMtXHR0cmlzdGF0ZSBcJiMzNDtLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDc6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjIwNzgKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAzNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipDaGVja2luZyBLVk0gQ29uZmlndXJhdGlvbiBpbiBEZXRhaWwqKgoKT2theSwgdGltZSB0byBkaXZlIGludG8gdGhlIG5pdHR5LWdyaXR0eS4gQmVmb3JlIEkgbWFrZSBhbnkgYXNzdW1wdGlvbnMsIEkmIzM5O20gZ29pbmcgdG8gZG91YmxlLWNoZWNrIHRoZSBjb25maWd1cmF0aW9uIG5hbWVzIHNwZWNpZmljYWxseSByZWxhdGVkIHRvIEtWTSBmb3IgeDg2LiBJIG5lZWQgdG8gbWFrZSAqYWJzb2x1dGVseSogc3VyZSBJJiMzOTttIHdvcmtpbmcgd2l0aCB0aGUgcHJlY2lzZSBkZWZpbml0aW9ucy4gVGhlIG1vc3QgbG9naWNhbCBwbGFjZSB0byBmaW5kIHRoYXQgYXV0aG9yaXRhdGl2ZSBzb3VyY2UgaXMgYGFyY2gveDg2L2t2bS9LY29uZmlnYCwgYW5kIEkmIzM5O20gZ29pbmcgdG8gemVybyBpbiBvbiBsaW5lcyAyMCB0aHJvdWdoIDEwMC4gVGhpcyBpcyB3aGVyZSBJIGV4cGVjdCB0aGUgY29yZSBLVk0gY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgeDg2IGFyY2hpdGVjdHVyZSB0byBiZSBkZWZpbmVkLiBCeSB2ZXJpZnlpbmcgdGhlIGV4YWN0IGNvbmZpZyBuYW1lcyBoZXJlLCBJJiMzOTtsbCBiZSBhYmxlIHRvIGF2b2lkIGFueSBwb3RlbnRpYWwgbWlzaW50ZXJwcmV0YXRpb25zIG9yIGVycm9ycyBkb3duIHRoZSBsaW5lIGFuZCBlbnN1cmUgbXkgdW5kZXJzdGFuZGluZyBpcyByb2NrIHNvbGlkLiBQcmVjaXNpb24gaXMga2V5LCBhcyBhbHdheXMsIHdoZW4gZGVhbGluZyB3aXRoIGtlcm5lbCBjb25maWd1cmF0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDc6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE4LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDg1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgMTg6XHRpZiBWSVJUVUFMSVpBVElPTlxuICAxOTpcdFxuICAyMDpcdGNvbmZpZyBLVk1fWDg2XG4gIDIxOlx0XHRkZWZfdHJpc3RhdGUgS1ZNIGlmIChLVk1fSU5URUwgIT0gbiB8fCBLVk1fQU1EICE9IG4pXG4gIDIyOlx0XHRzZWxlY3QgS1ZNX0NPTU1PTlxuICAyMzpcdFx0c2VsZWN0IEtWTV9FTElERV9UTEJfRkxVU0hfSUZfWU9VTkdcbiAgMjQ6XHRcdHNlbGVjdCBLVk1fTU1VX0xPQ0tMRVNTX0FHSU5HXG4gIDI1Olx0XHRzZWxlY3QgSEFWRV9LVk1fSVJRQ0hJUFxuICAyNjpcdFx0c2VsZWN0IEhBVkVfS1ZNX1BGTkNBQ0hFXG4gIDI3Olx0XHRzZWxlY3QgSEFWRV9LVk1fRElSVFlfUklOR19UU09cbiAgMjg6XHRcdHNlbGVjdCBIQVZFX0tWTV9ESVJUWV9SSU5HX0FDUV9SRUxcbiAgMjk6XHRcdHNlbGVjdCBIQVZFX0tWTV9JUlFfQllQQVNTXG4gIDMwOlx0XHRzZWxlY3QgSEFWRV9LVk1fSVJRX1JPVVRJTkdcbiAgMzE6XHRcdHNlbGVjdCBIQVZFX0tWTV9SRUFET05MWV9NRU1cbiAgMzI6XHRcdHNlbGVjdCBWSE9TVF9UQVNLXG4gIDMzOlx0XHRzZWxlY3QgS1ZNX0FTWU5DX1BGXG4gIDM0Olx0XHRzZWxlY3QgVVNFUl9SRVRVUk5fTk9USUZJRVJcbiAgMzU6XHRcdHNlbGVjdCBLVk1fTU1JT1xuICAzNjpcdFx0c2VsZWN0IFNDSEVEX0lORk9cbiAgMzc6XHRcdHNlbGVjdCBQRVJGX0VWRU5UU1xuICAzODpcdFx0c2VsZWN0IEdVRVNUX1BFUkZfRVZFTlRTXG4gIDM5Olx0XHRzZWxlY3QgUEVSRl9HVUVTVF9NRURJQVRFRF9QTVVcbiAgNDA6XHRcdHNlbGVjdCBIQVZFX0tWTV9NU0lcbiAgNDE6XHRcdHNlbGVjdCBIQVZFX0tWTV9DUFVfUkVMQVhfSU5URVJDRVBUXG4gIDQyOlx0XHRzZWxlY3QgSEFWRV9LVk1fTk9fUE9MTFxuICA0MzpcdFx0c2VsZWN0IFZJUlRfWEZFUl9UT19HVUVTVF9XT1JLXG4gIDQ0Olx0XHRzZWxlY3QgS1ZNX0dFTkVSSUNfRElSVFlMT0dfUkVBRF9QUk9URUNUXG4gIDQ1Olx0XHRzZWxlY3QgS1ZNX1ZGSU9cbiAgNDY6XHRcdHNlbGVjdCBIQVZFX0tWTV9QTV9OT1RJRklFUiBpZiBQTVxuICA0NzpcdFx0c2VsZWN0IEtWTV9HRU5FUklDX0hBUkRXQVJFX0VOQUJMSU5HXG4gIDQ4Olx0XHRzZWxlY3QgS1ZNX0dFTkVSSUNfUFJFX0ZBVUxUX01FTU9SWVxuICA0OTpcdFx0c2VsZWN0IEtWTV9XRVJST1IgaWYgV0VSUk9SXG4gIDUwOlx0XHRzZWxlY3QgS1ZNX0dVRVNUX01FTUZEIGlmIFg4Nl82NFxuICA1MTpcdFxuICA1MjpcdGNvbmZpZyBLVk1cbiAgNTM6XHRcdHRyaXN0YXRlIFwmIzM0O0tlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFwmIzM0O1xuICA1NDpcdFx0ZGVwZW5kcyBvbiBYODZfTE9DQUxfQVBJQ1xuICA1NTpcdFx0aGVscFxuICA1NjpcdFx0ICBTdXBwb3J0IGhvc3RpbmcgZnVsbHkgdmlydHVhbGl6ZWQgZ3Vlc3QgbWFjaGluZXMgdXNpbmcgaGFyZHdhcmVcbiAgNTc6XHRcdCAgdmlydHVhbGl6YXRpb24gZXh0ZW5zaW9ucy4gIFlvdSB3aWxsIG5lZWQgYSBmYWlybHkgcmVjZW50XG4gIDU4Olx0XHQgIHByb2Nlc3NvciBlcXVpcHBlZCB3aXRoIHZpcnR1YWxpemF0aW9uIGV4dGVuc2lvbnMuIFlvdSB3aWxsIGFsc29cbiAgNTk6XHRcdCAgbmVlZCB0byBzZWxlY3Qgb25lIG9yIG1vcmUgb2YgdGhlIHByb2Nlc3NvciBtb2R1bGVzIGJlbG93LlxuICA2MDpcdFxuICA2MTpcdFx0ICBUaGlzIG1vZHVsZSBwcm92aWRlcyBhY2Nlc3MgdG8gdGhlIGhhcmR3YXJlIGNhcGFiaWxpdGllcyB0aHJvdWdoXG4gIDYyOlx0XHQgIGEgY2hhcmFjdGVyIGRldmljZSBub2RlIG5hbWVkIC9kZXYva3ZtLlxuICA2MzpcdFxuICA2NDpcdFx0ICBUbyBjb21waWxlIHRoaXMgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbiAgNjU6XHRcdCAgd2lsbCBiZSBjYWxsZWQga3ZtLlxuICA2NjpcdFxuICA2NzpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuICA2ODpcdFxuICA2OTpcdGNvbmZpZyBLVk1fV0VSUk9SXG4gIDcwOlx0XHRib29sIFwmIzM0O0NvbXBpbGUgS1ZNIHdpdGggLVdlcnJvclwmIzM0O1xuICA3MTpcdFx0IyBEaXNhbGxvdyBLVk0mIzM5O3MgLVdlcnJvciBpZiBLQVNBTiBpcyBlbmFibGVkLCBlLmcuIHRvIGd1YXJkIGFnYWluc3RcbiAgNzI6XHRcdCMgcmFuZG9taXplZCBjb25maWdzIGZyb20gc2VsZWN0aW5nIEtWTV9XRVJST1I9eSwgd2hpY2ggZG9lc24mIzM5O3QgcGxheVxuICA3MzpcdFx0IyBuaWNlIHdpdGggS0FTQU4uICBLQVNBTiBidWlsZHMgZ2VuZXJhdGVzIHdhcm5pbmdzIGZvciB0aGUgZGVmYXVsdFxuICA3NDpcdFx0IyBGUkFNRV9XQVJOLCBpLmUuIEtWTV9XRVJST1I9eSB3aXRoIEtBU0FOPXkgcmVxdWlyZXMgc3BlY2lhbCB0dW5pbmcuXG4gIDc1Olx0XHQjIEJ1aWxkaW5nIEtWTSB3aXRoIC1XZXJyb3IgYW5kIEtBU0FOIGlzIHN0aWxsIGRvYWJsZSB2aWEgZW5hYmxpbmdcbiAgNzY6XHRcdCMgdGhlIGtlcm5lbC13aWRlIFdFUlJPUj15LlxuICA3NzpcdFx0ZGVwZW5kcyBvbiBLVk1fWDg2IFx1MDAyNlx1MDAyNiAoKEVYUEVSVCBcdTAwMjZcdTAwMjYgIUtBU0FOKSB8fCBXRVJST1IpXG4gIDc4Olx0XHRoZWxwXG4gIDc5Olx0XHQgIEFkZCAtV2Vycm9yIHRvIHRoZSBidWlsZCBmbGFncyBmb3IgS1ZNLlxuICA4MDpcdFxuICA4MTpcdFx0ICBJZiBpbiBkb3VidCwgc2F5IFwmIzM0O05cJiMzNDsuXG4gIDgyOlx0XG4gIDgzOlx0Y29uZmlnIEtWTV9TV19QUk9URUNURURfVk1cbiAgODQ6XHRcdGJvb2wgXCYjMzQ7RW5hYmxlIHN1cHBvcnQgZm9yIEtWTSBzb2Z0d2FyZS1wcm90ZWN0ZWQgVk1zXCYjMzQ7XG4gIDg1Olx0XHRkZXBlbmRzIG9uIEVYUEVSVFxuICA4NjpcdFx0ZGVwZW5kcyBvbiBLVk1fWDg2IFx1MDAyNlx1MDAyNiBYODZfNjRcbiAgODc6XHRcdHNlbGVjdCBLVk1fR0VORVJJQ19NRU1PUllfQVRUUklCVVRFU1xuICA4ODpcdFx0aGVscFxuICA4OTpcdFx0ICBFbmFibGUgc3VwcG9ydCBmb3IgS1ZNIHNvZnR3YXJlLXByb3RlY3RlZCBWTXMuICBDdXJyZW50bHksIHNvZnR3YXJlLVxuICA5MDpcdFx0ICBwcm90ZWN0ZWQgVk1zIGFyZSBwdXJlbHkgYSBkZXZlbG9wbWVudCBhbmQgdGVzdGluZyB2ZWhpY2xlIGZvclxuICA5MTpcdFx0ICBLVk1fQ1JFQVRFX0dVRVNUX01FTUZELiAgQXR0ZW1wdGluZyB0byBydW4gYSBcJiMzNDtyZWFsXCYjMzQ7IFZNIHdvcmtsb2FkIGFzIGFcbiAgOTI6XHRcdCAgc29mdHdhcmUtcHJvdGVjdGVkIFZNIHdpbGwgZmFpbCBtaXNlcmFibHkuXG4gIDkzOlx0XG4gIDk0Olx0XHQgIElmIHVuc3VyZSwgc2F5IFwmIzM0O05cJiMzNDsuXG4gIDk1Olx0XG4gIDk2Olx0Y29uZmlnIEtWTV9JTlRFTFxuICA5NzpcdFx0dHJpc3RhdGUgXCYjMzQ7S1ZNIGZvciBJbnRlbCAoYW5kIGNvbXBhdGlibGUpIHByb2Nlc3NvcnMgc3VwcG9ydFwmIzM0O1xuICA5ODpcdFx0ZGVwZW5kcyBvbiBLVk0gXHUwMDI2XHUwMDI2IElBMzJfRkVBVF9DVExcbiAgOTk6XHRcdHNlbGVjdCBYODZfRlJFRCBpZiBYODZfNjRcbiAxMDA6XHRcdGhlbHBcbiAxMDE6XHRcdCAgUHJvdmlkZXMgc3VwcG9ydCBmb3IgS1ZNIG9uIHByb2Nlc3NvcnMgZXF1aXBwZWQgd2l0aCBJbnRlbCYjMzk7cyBWVFxuIDEwMjpcdFx0ICBleHRlbnNpb25zLCBhLmsuYS4gVmlydHVhbCBNYWNoaW5lIEV4dGVuc2lvbnMgKFZNWCkuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDA3OjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzNjkxCgkJCQkJCQlvdXRwdXQ6IDE2MwoJCQkJCQkJdGhvdWdodHM6IDM0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipLVk0gRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb24qKgoKT2theSwgc28gSSYjMzk7dmUgcGlucG9pbnRlZCB0aGUgaW1wb3J0YW50IGtlcm5lbCBjb25maWd1cmF0aW9ucyBoZXJlOiBgS1ZNYCwgYEtWTV9JTlRFTGAsIGFuZCBgS1ZNX0FNRGAuIFRoZXNlIGFyZSB0aGUgZm91bmRhdGlvbiBmb3IgdGhpcyB0YXJnZXQuIFRoZSBgV29ydGhGdXp6aW5nYCBmbGFnIGlzIHNldCB0byB0cnVlLCB3aGljaCBpcyBnb29kOyBpdCBtZWFucyB0aGlzIGlzIGEgd29ydGh3aGlsZSBhcmVhIHRvIGludmVzdGlnYXRlLiBBbmQgdGhlbiB3ZSBoYXZlIHRoZSBzcGVjaWZpYyBmdW5jdGlvbnMgdG8gZm9jdXMgb246IGBrdm1fbW11X2NoYW5nZV9tbXVfcGFnZXNgIGFuZCBga3ZtX3ZtX2lvY3RsX3NldF9ucl9tbXVfcGFnZXNgLiBUaG9zZSBhcmUgdGhlIGVudHJ5IHBvaW50cy4KCk5vdywgbGV0JiMzOTtzIG1ha2Ugc3VyZSBldmVyeXRoaW5nIGxpbmVzIHVwIHdpdGggbXkgdHJpYWdlIHBoaWxvc29waHkuIEZpcnN0LCByZWFjaGFiaWxpdHkgaXMga2V5LiBJJiMzOTt2ZSBjb25maXJtZWQgdGhhdCB0aGUgdGFyZ2V0IGlvY3RscywgcGFydGljdWxhcmx5IGBLVk1fU0VUX05SX01NVV9QQUdFU2AsIGFyZSBzdGFuZGFyZCBzeXNjYWxscy9pb2N0bHMgYW5kIGFyZSB0aGVyZWZvcmUgbGlrZWx5IGZ1enphYmxlIHdpdGggc3l6a2FsbGVyLiBUaGUgYGt2bV9tbXVfY2hhbmdlX21tdV9wYWdlc2AgcGF0Y2ggbG9naWMgaXMgaW50ZXJlc3Rpbmc7IGl0IGxvb2tzIGxpa2UgdGhlcmUmIzM5O3MgYSBzYWZldHkgY2hlY2sgdXNpbmcgYG1heCgpYCB0byBhdm9pZCBwb3RlbnRpYWxseSBwcm9ibGVtYXRpYyBzaGFkb3cgcGFnZSBtYW5pcHVsYXRpb25zLiBBbmQgd2UgYXJlIGRlYWxpbmcgd2l0aCBhIGNvcmUgc3Vic3lzdGVtIGhlcmUsIHNwZWNpZmljYWxseSBgYXJjaC94ODYva3ZtL21tdS9tbXUuY2AuCgpTZWNvbmQsIGBXb3J0aEZ1enppbmdgIGlzIGFscmVhZHkgc2V0IHRvIHRydWUsIHNvIHRoYXQmIzM5O3MgZG9uZS4KClRoaXJkLCBvdXIgZm9jdXMgc3ltYm9scyBhcmUgYGt2bV9tbXVfY2hhbmdlX21tdV9wYWdlc2AgYW5kIGBrdm1fdm1faW9jdGxfc2V0X25yX21tdV9wYWdlc2AuIFRoZXkmIzM5O3JlIG5vdCB1YmlxdWl0b3VzOyB0aGV5IGFyZSBxdWl0ZSBzcGVjaWZpYyB0byB0aGUgbG9naWMsIHdoaWNoIG1ha2VzIHRoZW0gcHJpbWUgdGFyZ2V0cy4KCkZvdXJ0aCwgdGhlIGBFbmFibGVDb25maWdzYCBhcmUgc3BvdCBvbjogYEtWTWAsIGBLVk1fSU5URUxgLCBhbmQgYEtWTV9BTURgLgoKQWxyaWdodCwgSSB0aGluayB0aGF0JiMzOTtzIGFsbCB0aGUgY3JpdGVyaWEuIFdlJiMzOTtyZSByZWFkeSB0byBwcm9jZWVkLiBMZXQmIzM5O3MgY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwNzowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDssCiAgICAmIzM0O0tWTV9JTlRFTCYjMzQ7LAogICAgJiMzNDtLVk1fQU1EJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX21tdV9jaGFuZ2VfbW11X3BhZ2VzJiMzNDssCiAgICAmIzM0O2t2bV92bV9pb2N0bF9zZXRfbnJfbW11X3BhZ2VzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHNoYWRvdyBNTVUgcGFnZSBjb3VudCBtYW5hZ2VtZW50IGxvZ2ljIGluIHg4NiBLVk0gKGBrdm1fbW11X2NoYW5nZV9tbXVfcGFnZXNgKSwgd2hpY2ggaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBLVk0gaW9jdGxzIChzdWNoIGFzIEtWTV9TRVRfTlJfTU1VX1BBR0VTKSBhbmQgbWVtb3J5IHJlZ2lvbiBjb25maWd1cmF0aW9uLiBGdXp6aW5nIGlzIHJlY29tbWVuZGVkIHRvIGVuc3VyZSBjb3JyZWN0IE1NVSBzaGFkb3cgcGFnZSBhbGxvY2F0aW9uIGFuZCB6YXBwaW5nIGludmFyaWFudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7LAogICAgJiMzNDtLVk1fSU5URUwmIzM0OywKICAgICYjMzQ7S1ZNX0FNRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9tbXVfY2hhbmdlX21tdV9wYWdlcyYjMzQ7LAogICAgJiMzNDtrdm1fdm1faW9jdGxfc2V0X25yX21tdV9wYWdlcyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBzaGFkb3cgTU1VIHBhZ2UgY291bnQgbWFuYWdlbWVudCBsb2dpYyBpbiB4ODYgS1ZNIChga3ZtX21tdV9jaGFuZ2VfbW11X3BhZ2VzYCksIHdoaWNoIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgS1ZNIGlvY3RscyAoc3VjaCBhcyBLVk1fU0VUX05SX01NVV9QQUdFUykgYW5kIG1lbW9yeSByZWdpb24gY29uZmlndXJhdGlvbi4gRnV6emluZyBpcyByZWNvbW1lbmRlZCB0byBlbnN1cmUgY29ycmVjdCBNTVUgc2hhZG93IHBhZ2UgYWxsb2NhdGlvbiBhbmQgemFwcGluZyBpbnZhcmlhbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwNzowNTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDA3OjA1PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYSBjYWxjdWxhdGlvbiBpbiBga3ZtX21tdV9jaGFuZ2VfbW11X3BhZ2VzKClgIHRvIHByZXZlbnQgYG5fbWF4X21tdV9wYWdlc2AgZnJvbSBiZWluZyBzZXQgbG93ZXIgdGhhbiBgZ29hbF9ucl9tbXVfcGFnZXNgIGlmIGBrdm1fbW11X3phcF9vbGRlc3RfbW11X3BhZ2VzKClgIHphcHMgbW9yZSBzaGFkb3cgcGFnZXMgdGhhbiByZXF1ZXN0ZWQuIFRoaXMgY2hhbmdlIG9ubHkgdXBkYXRlcyBhIHNjYWxhciBpbnRlZ2VyIHZhbHVlIHRyYWNraW5nIE1NVSBwYWdlIGxpbWl0cyBhbmQgZG9lcyBub3QgaW52b2x2ZSBtZW1vcnkgYWxsb2NhdGlvbnMsIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgdXNhZ2UsIG9yIGNvcHlpbmcga2VybmVsIGRhdGEgdG8gdXNlcnNwYWNlLiBUaGVyZWZvcmUsIHRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBvciBrZXJuZWwgaW5mby1sZWFrcywgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA5ZWMwY2Q2YmMyZTA0Nzg2OWIyYjdmYThlOGFiZTM1YmJjNDc2YTZlCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBTZXAgMTEgMDc6MDQ6MzYgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vbW11L21tdS5jIGIvYXJjaC94ODYva3ZtL21tdS9tbXUuYwppbmRleCAwNjRlY2MzM2I5MjY3Li5lZmViYTU4OTM2YTY4IDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rdm0vbW11L21tdS5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS9tbXUvbW11LmMKQEAgLTI5MTMsNyAmIzQzOzI5MTMsNyBAQCB2b2lkIGt2bV9tbXVfY2hhbmdlX21tdV9wYWdlcyhzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgZ29hbF9ucl9tbXVfcGFnZXMpCiAJCWt2bV9tbXVfemFwX29sZGVzdF9tbXVfcGFnZXMoa3ZtLCBrdm0tJmd0O3N0YXQubW11X3NoYWRvd19wYWdlcyAtCiAJCQkJCQkgIGdvYWxfbnJfbW11X3BhZ2VzKTsKIAotCQlnb2FsX25yX21tdV9wYWdlcyA9IGt2bS0mZ3Q7c3RhdC5tbXVfc2hhZG93X3BhZ2VzOwomIzQzOwkJZ29hbF9ucl9tbXVfcGFnZXMgPSBtYXgoa3ZtLSZndDtzdGF0Lm1tdV9zaGFkb3dfcGFnZXMsIGdvYWxfbnJfbW11X3BhZ2VzKTsKIAl9CiAKIAlrdm0tJmd0O2FyY2gubl9tYXhfbW11X3BhZ2VzID0gZ29hbF9ucl9tbXVfcGFnZXM7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwNzowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTcxCgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMjQ5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBLVk0gTU1VIFBhZ2UgQWxsb2NhdGlvbiBPcHRpbWl6YXRpb24qKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIEtWTSBjb2RlLiBNeSBpbml0aWFsIGltcHJlc3Npb24gaXMgdGhhdCB3ZSYjMzk7cmUgbG9va2luZyBhdCBhIHR3ZWFrIHRvIHRoZSBNTVUgcGFnZSBhbGxvY2F0aW9uIHN0cmF0ZWd5LCBzcGVjaWZpY2FsbHkgd2l0aGluIGBhcmNoL3g4Ni9rdm0vbW11L21tdS5jYC4gVGhlIGRpZmYgaXRzZWxmIGlzIHF1aXRlIHNtYWxsLCBidXQgdGhlIGltcGxpY2F0aW9ucyBjb3VsZCBiZSBzaWduaWZpY2FudCwgc28gbGV0JiMzOTtzIGRpZyBkZWVwZXIuCgpUaGUgY29yZSBvZiB0aGUgY2hhbmdlIGFwcGVhcnMgdG8gYmUgaW4gdGhlIGBrdm1fbW11X2NoYW5nZV9tbXVfcGFnZXNgIGZ1bmN0aW9uLiBUaGUgb3JpZ2luYWwgY29kZSB1bmNvbmRpdGlvbmFsbHkgc2V0IGBnb2FsX25yX21tdV9wYWdlc2AgdG8gYGt2bS0mZ3Q7c3RhdC5tbXVfc2hhZG93X3BhZ2VzYC4gTm93LCBpdCYjMzk7cyB0YWtpbmcgdGhlIGBtYXhgIG9mIHRoZSBjdXJyZW50IHNoYWRvdyBwYWdlcyBhbmQgdGhlIGBnb2FsX25yX21tdV9wYWdlc2AuIFRoaXMgc3VnZ2VzdHMgYSBwb3RlbnRpYWwgb3B0aW1pemF0aW9uIG9yIGEgZml4LiBJJiMzOTttIGd1ZXNzaW5nIHRoYXQgaW4gc29tZSBlZGdlIGNhc2VzLCB3ZSBtaWdodCBoYXZlIGJlZW4gdW5uZWNlc3NhcmlseSByZWR1Y2luZyB0aGUgbnVtYmVyIG9mIHNoYWRvdyBwYWdlcywgYW5kIHRoaXMgYG1heGAgaXMgbWVhbnQgdG8gcHJldmVudCB0aGF0LiBXZSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHNjZW5hcmlvcyB3aGVyZSBgZ29hbF9ucl9tbXVfcGFnZXNgIG1pZ2h0IGJlIHNtYWxsZXIgdGhhbiBga3ZtLSZndDtzdGF0Lm1tdV9zaGFkb3dfcGFnZXNgIHRvIGZ1bGx5IGdyYXNwIHRoZSBjaGFuZ2UmIzM5O3MgaW1wYWN0LiBTcGVjaWZpY2FsbHksIGhvdyBhcmUgYGdvYWxfbnJfbW11X3BhZ2VzYCBhbmQgYGt2bS0mZ3Q7c3RhdC5tbXVfc2hhZG93X3BhZ2VzYCBjYWxjdWxhdGVkPyBXaGF0IHRyaWdnZXJzIGBrdm1fbW11X2NoYW5nZV9tbXVfcGFnZXNgPyBJJiMzOTtsbCBuZWVkIHRvIHRyYWNlIHRoZSBjYWxsIGdyYXBoIGFuZCB1bmRlcnN0YW5kIHRoZSBzdXJyb3VuZGluZyBsb2dpYyB0byBhc3Nlc3MgaWYgdGhpcyBpcyBhZGRyZXNzaW5nIGEgcmVhbCBwZXJmb3JtYW5jZSBib3R0bGVuZWNrIG9yIGEgZnVuY3Rpb25hbCBpc3N1ZS4gSSYjMzk7bGwgYWxzbyBuZWVkIHRvIGNvbnNpZGVyIGFueSBwb3RlbnRpYWwgcmVncmVzc2lvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDA3OjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL21tdS9tbXUuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI5MDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MjkwMDpcdFx0XHRyZXR1cm4gLUVOT1NQQztcbjI5MDE6XHRcdHJldHVybiAwO1xuMjkwMjpcdH1cbjI5MDM6XHRcbjI5MDQ6XHQvKlxuMjkwNTpcdCAqIENoYW5naW5nIHRoZSBudW1iZXIgb2YgbW11IHBhZ2VzIGFsbG9jYXRlZCB0byB0aGUgdm1cbjI5MDY6XHQgKiBOb3RlOiBpZiBnb2FsX25yX21tdV9wYWdlcyBpcyB0b28gc21hbGwsIHlvdSB3aWxsIGdldCBkZWFkIGxvY2tcbjI5MDc6XHQgKi9cbjI5MDg6XHR2b2lkIGt2bV9tbXVfY2hhbmdlX21tdV9wYWdlcyhzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgZ29hbF9ucl9tbXVfcGFnZXMpXG4yOTA5Olx0e1xuMjkxMDpcdFx0d3JpdGVfbG9jayhcdTAwMjZrdm0tXHUwMDNlbW11X2xvY2spO1xuMjkxMTpcdFxuMjkxMjpcdFx0aWYgKGt2bS1cdTAwM2VzdGF0Lm1tdV9zaGFkb3dfcGFnZXMgXHUwMDNlIGdvYWxfbnJfbW11X3BhZ2VzKSB7XG4yOTEzOlx0XHRcdGt2bV9tbXVfemFwX29sZGVzdF9tbXVfcGFnZXMoa3ZtLCBrdm0tXHUwMDNlc3RhdC5tbXVfc2hhZG93X3BhZ2VzIC1cbjI5MTQ6XHRcdFx0XHRcdFx0XHQgIGdvYWxfbnJfbW11X3BhZ2VzKTtcbjI5MTU6XHRcbjI5MTY6XHRcdFx0Z29hbF9ucl9tbXVfcGFnZXMgPSBtYXgoa3ZtLVx1MDAzZXN0YXQubW11X3NoYWRvd19wYWdlcywgZ29hbF9ucl9tbXVfcGFnZXMpO1xuMjkxNzpcdFx0fVxuMjkxODpcdFxuMjkxOTpcdFx0a3ZtLVx1MDAzZWFyY2gubl9tYXhfbW11X3BhZ2VzID0gZ29hbF9ucl9tbXVfcGFnZXM7XG4yOTIwOlx0XG4yOTIxOlx0XHR3cml0ZV91bmxvY2soXHUwMDI2a3ZtLVx1MDAzZW1tdV9sb2NrKTtcbjI5MjI6XHR9XG4yOTIzOlx0XG4yOTI0Olx0Ym9vbCBfX2t2bV9tbXVfdW5wcm90ZWN0X2dmbl9hbmRfcmV0cnkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBncGFfdCBjcjJfb3JfZ3BhLFxuMjkyNTpcdFx0XHRcdFx0ICAgICAgIGJvb2wgYWx3YXlzX3JldHJ5KVxuMjkyNjpcdHtcbjI5Mjc6XHRcdHN0cnVjdCBrdm0gKmt2bSA9IHZjcHUtXHUwMDNla3ZtO1xuMjkyODpcdFx0TElTVF9IRUFEKGludmFsaWRfbGlzdCk7XG4yOTI5Olx0XHRzdHJ1Y3Qga3ZtX21tdV9wYWdlICpzcDtcbjI5MzA6XHRcdGdwYV90IGdwYSA9IGNyMl9vcl9ncGE7XG4yOTMxOlx0XHRib29sIHIgPSBmYWxzZTtcbjI5MzI6XHRcbjI5MzM6XHRcdC8qXG4yOTM0Olx0XHQgKiBCYWlsIGVhcmx5IGlmIHRoZXJlIGFyZW4mIzM5O3QgYW55IHdyaXRlLXByb3RlY3RlZCBzaGFkb3cgcGFnZXMgdG8gYXZvaWRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDc6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQwNAoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBga3ZtX21tdV9jaGFuZ2VfbW11X3BhZ2VzYCBGdW5jdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udHJvbCBmbG93IGFuZCBpbXBhY3Qgb2YgYGt2bV9tbXVfY2hhbmdlX21tdV9wYWdlc2AuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gdHJhY2sgaXRzIGNhbGwgc2l0ZXMuIEkgd2FudCB0byBzZWUgKmV4YWN0bHkqIHdoZXJlIGFuZCBob3cgdGhlIE1NVSBwYWdlIHN0cnVjdHVyZXMgYXJlIGJlaW5nIG1vZGlmaWVkLiBUaGlzIHN1Z2dlc3RzIEkgbmVlZCB0byB0cmFjZSB0aGUgbW9kaWZpY2F0aW9ucyB0aGVtc2VsdmVzLiBJcyB0aGlzIGZ1bmN0aW9uIHJlc3BvbnNpYmxlIGZvciBhbGwgTU1VIHBhZ2UgY2hhbmdlcywgb3IganVzdCBjZXJ0YWluIHR5cGVzPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSB3aXRoaW4gdGhlIHdpZGVyIEtWTSBNTVUgYXJjaGl0ZWN0dXJlLiBXaGF0IGFyZSB0aGUga2V5IGRhdGEgc3RydWN0dXJlcyB0aGlzIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLCBhbmQgd2hhdCBraW5kIG9mIGNvbnNpc3RlbmN5IG1lY2hhbmlzbXMgYXJlIGluIHBsYWNlIHdoZW4gaXQgbWFuaXB1bGF0ZXMgdGhvc2Ugc3RydWN0dXJlcz8gVWx0aW1hdGVseSwgSSB3YW50IHRvIGlkZW50aWZ5IHBvdGVudGlhbCBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcyBvciBzdWJ0bGUgY29ycmVjdG5lc3MgaXNzdWVzIHJlbGF0ZWQgdG8gTU1VIHBhZ2UgdXBkYXRlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDc6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX21tdV9jaGFuZ2VfbW11X3BhZ2VzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9tbXUuaD0xMzQ9dm9pZCBrdm1fbW11X2ludmFsaWRhdGVfbW1pb19zcHRlcyhzdHJ1Y3Qga3ZtICprdm0sIHU2NCBnZW4pO1xuYXJjaC94ODYva3ZtL21tdS5oOjEzNTp2b2lkIGt2bV9tbXVfY2hhbmdlX21tdV9wYWdlcyhzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcga3ZtX25yX21tdV9wYWdlcyk7XG5hcmNoL3g4Ni9rdm0vbW11LmgtMTM2LXZvaWQga3ZtX3phcF9nZm5fcmFuZ2Uoc3RydWN0IGt2bSAqa3ZtLCBnZm5fdCBnZm5fc3RhcnQsIGdmbl90IGdmbl9lbmQpO1xuLS1cbmFyY2gveDg2L2t2bS9tbXUvbW11LmM9Mjg4MT1zdGF0aWMgaW50IG1ha2VfbW11X3BhZ2VzX2F2YWlsYWJsZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL21tdS9tbXUuYy0yOTA3LSAqL1xuYXJjaC94ODYva3ZtL21tdS9tbXUuYzoyOTA4OnZvaWQga3ZtX21tdV9jaGFuZ2VfbW11X3BhZ2VzKHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgbG9uZyBnb2FsX25yX21tdV9wYWdlcylcbmFyY2gveDg2L2t2bS9tbXUvbW11LmMtMjkwOS17XG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jPTM5MTA9c3RhdGljIGludCBrdm1fdm1faW9jdGxfc2V0X25yX21tdV9wYWdlcyhzdHJ1Y3Qga3ZtICprdm0sXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTM5MTctXG5hcmNoL3g4Ni9rdm0veDg2LmM6MzkxODpcdGt2bV9tbXVfY2hhbmdlX21tdV9wYWdlcyhrdm0sIGt2bV9ucl9tbXVfcGFnZXMpO1xuYXJjaC94ODYva3ZtL3g4Ni5jLTM5MTktXHRrdm0tXHUwMDNlYXJjaC5uX3JlcXVlc3RlZF9tbXVfcGFnZXMgPSBrdm1fbnJfbW11X3BhZ2VzO1xuLS1cbmFyY2gveDg2L2t2bS94ODYuYz0xMDMzOD12b2lkIGt2bV9hcmNoX2NvbW1pdF9tZW1vcnlfcmVnaW9uKHN0cnVjdCBrdm0gKmt2bSxcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTAzNTEtXHRcdG5yX21tdV9wYWdlcyA9IG1heChucl9tbXVfcGFnZXMsIEtWTV9NSU5fQUxMT0NfTU1VX1BBR0VTKTtcbmFyY2gveDg2L2t2bS94ODYuYzoxMDM1MjpcdFx0a3ZtX21tdV9jaGFuZ2VfbW11X3BhZ2VzKGt2bSwgbnJfbW11X3BhZ2VzKTtcbmFyY2gveDg2L2t2bS94ODYuYy0xMDM1My1cdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDc6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDI4NwoJCQkJCQkJb3V0cHV0OiAxNjAKCQkJCQkJCXRob3VnaHRzOiA0MTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNTVUgUGFnZSBBbGxvY2F0aW9uIEFkanVzdG1lbnQqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIGRvd24gdGhpcyBjaGFuZ2UgdG8gYGt2bV9tbXVfY2hhbmdlX21tdV9wYWdlc2AuIEVzc2VudGlhbGx5LCB3ZSYjMzk7cmUgdHdlYWtpbmcgaG93IHdlIGRldGVybWluZSB0aGUgbWF4aW11bSBudW1iZXIgb2YgTU1VIHBhZ2VzIGFsbG9jYXRlZCB0byBhIFZNLCBzcGVjaWZpY2FsbHkgYWRqdXN0aW5nIGBrdm0tJmd0O2FyY2gubl9tYXhfbW11X3BhZ2VzYC4gVGhlIGluaXRpYWwgYXBwcm9hY2ggdXNlZCBga3ZtLSZndDtzdGF0Lm1tdV9zaGFkb3dfcGFnZXNgIGFzIHRoZSB0YXJnZXQsIGJ1dCB0aGF0JiMzOTtzIGJlZW4gbW9kaWZpZWQuCgpOb3csIGluc3RlYWQgb2YganVzdCBhc3NpZ25pbmcgYGt2bS0mZ3Q7c3RhdC5tbXVfc2hhZG93X3BhZ2VzYCB0byBgZ29hbF9ucl9tbXVfcGFnZXNgLCB3ZSYjMzk7cmUgdXNpbmcgYG1heChrdm0tJmd0O3N0YXQubW11X3NoYWRvd19wYWdlcywgZ29hbF9ucl9tbXVfcGFnZXMpYC4gVGhlIHJlYXNvbiBmb3IgdGhpcyBpcyBjbGVhcjogYGt2bV9tbXVfemFwX29sZGVzdF9tbXVfcGFnZXNgIGNhbiwgdW5kZXIgY2VydGFpbiBjaXJjdW1zdGFuY2VzLCB6YXAgKm1vcmUqIHBhZ2VzIHRoYW4gcmVxdWVzdGVkLCBvciwgYWZ0ZXIgYSB6YXBwaW5nIG9wZXJhdGlvbiwgYG1tdV9zaGFkb3dfcGFnZXNgIG1pZ2h0IGJlIGxlc3MgdGhhbiBgZ29hbF9ucl9tbXVfcGFnZXNgLiBJZiB3ZSB3ZXJlIHRvIG5haXZlbHkgc2V0IGBnb2FsX25yX21tdV9wYWdlc2AgdG8gYGt2bS0mZ3Q7c3RhdC5tbXVfc2hhZG93X3BhZ2VzYCBpbiB0aGVzZSBzaXR1YXRpb25zLCB3ZSYjMzk7ZCBpbmFkdmVydGVudGx5IGxvd2VyIHRoZSBsaW1pdCwgYG5fbWF4X21tdV9wYWdlc2AsIGJlbG93IHRoZSBhY3R1YWwgaW50ZW5kZWQgYGdvYWxfbnJfbW11X3BhZ2VzYC4gVGhlIGBtYXhgIGZ1bmN0aW9uIGlzIHRoZXJlIHRvIGVuc3VyZSB0aGF0IGBuX21heF9tbXVfcGFnZXNgIHJlbWFpbnMgYXQgbGVhc3QgYXMgbGFyZ2UgYXMgYGdvYWxfbnJfbW11X3BhZ2VzYC4gSXQmIzM5O3MgYSBzYWZlZ3VhcmRpbmcgbWVjaGFuaXNtLgoKTm93LCBsZXQmIzM5O3MgY29uc2lkZXIgcG90ZW50aWFsIEtNU0FOIGltcGxpY2F0aW9ucywgYmVjYXVzZSB0aGF0JiMzOTtzIGFsd2F5cyBhIGdvb2QgcHJhY3RpY2UuIElzIHRoZXJlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzc3Vlcz8gSSBkb24mIzM5O3Qgc2VlIGFueSBvYnZpb3VzIG9uZXM6CgoqICAgSXQmIzM5O3Mgbm90IGluaXRpYWxpemluZyBtZW1vcnkuCiogICBJdCYjMzk7cyBub3QgcGFzc2luZyB1bmluaXRpYWxpemVkIGRhdGEgdG8gdXNlciBzcGFjZS4KKiAgIEl0JiMzOTtzIG5vdCBpbnRyb2R1Y2luZyBvciBtb2RpZnlpbmcgYW55IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzIG9yIHN0cnVjdHMuCiogICBJdCYjMzk7cyBub3QgbWVzc2luZyB3aXRoIGJ1ZmZlciBib3VuZHMgb3IgcG90ZW50aWFsbHkgcmVhZGluZyB1bmluaXRpYWxpemVkIGJ1ZmZlcnMuCgpUaGlzIGlzIGEgc3RyYWlnaHRmb3J3YXJkIHNjYWxhciBjYWxjdWxhdGlvbiwgZml4aW5nIGEgbGltaXQgdHJhY2tpbmcgdmFsdWUsIGBuX21heF9tbXVfcGFnZXNgLiBUaGVyZSBhcmUgbm8gbmV3IGFsbG9jYXRpb25zLCBubyBzdHJ1Y3QgY29waWVzLCBubyB1bmluaXRpYWxpemVkIHJlYWRzLCBhbmQgZGVmaW5pdGVseSBubyBpbmZvIGxlYWtzIHRvIHVzZXJzcGFjZS4gQWxsIHRoaW5ncyBjb25zaWRlcmVkLCBOZWVkc0tNU0FOIHNob3VsZCBiZSBmYWxzZS4KClJpZ2h0LCB0aW1lIHRvIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDA3OjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGEgY2FsY3VsYXRpb24gaW4gYGt2bV9tbXVfY2hhbmdlX21tdV9wYWdlcygpYCB0byBwcmV2ZW50IGBuX21heF9tbXVfcGFnZXNgIGZyb20gYmVpbmcgc2V0IGxvd2VyIHRoYW4gYGdvYWxfbnJfbW11X3BhZ2VzYCBpZiBga3ZtX21tdV96YXBfb2xkZXN0X21tdV9wYWdlcygpYCB6YXBzIG1vcmUgc2hhZG93IHBhZ2VzIHRoYW4gcmVxdWVzdGVkLiBUaGlzIGNoYW5nZSBvbmx5IHVwZGF0ZXMgYSBzY2FsYXIgaW50ZWdlciB2YWx1ZSB0cmFja2luZyBNTVUgcGFnZSBsaW1pdHMgYW5kIGRvZXMgbm90IGludm9sdmUgbWVtb3J5IGFsbG9jYXRpb25zLCB1bmluaXRpYWxpemVkIHZhcmlhYmxlIHVzYWdlLCBvciBjb3B5aW5nIGtlcm5lbCBkYXRhIHRvIHVzZXJzcGFjZS4gVGhlcmVmb3JlLCB0aGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3Mgb3Iga2VybmVsIGluZm8tbGVha3MsIGFuZCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYSBjYWxjdWxhdGlvbiBpbiBga3ZtX21tdV9jaGFuZ2VfbW11X3BhZ2VzKClgIHRvIHByZXZlbnQgYG5fbWF4X21tdV9wYWdlc2AgZnJvbSBiZWluZyBzZXQgbG93ZXIgdGhhbiBgZ29hbF9ucl9tbXVfcGFnZXNgIGlmIGBrdm1fbW11X3phcF9vbGRlc3RfbW11X3BhZ2VzKClgIHphcHMgbW9yZSBzaGFkb3cgcGFnZXMgdGhhbiByZXF1ZXN0ZWQuIFRoaXMgY2hhbmdlIG9ubHkgdXBkYXRlcyBhIHNjYWxhciBpbnRlZ2VyIHZhbHVlIHRyYWNraW5nIE1NVSBwYWdlIGxpbWl0cyBhbmQgZG9lcyBub3QgaW52b2x2ZSBtZW1vcnkgYWxsb2NhdGlvbnMsIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgdXNhZ2UsIG9yIGNvcHlpbmcga2VybmVsIGRhdGEgdG8gdXNlcnNwYWNlLiBUaGVyZWZvcmUsIHRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBvciBrZXJuZWwgaW5mby1sZWFrcywgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDA3OjA0OjM3LjY3MTYzNzQ1OVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5NjEyMzYxNDY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiLFxuICAgIFwiS1ZNX0lOVEVMXCIsXG4gICAgXCJLVk1fQU1EXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX21tdV9jaGFuZ2VfbW11X3BhZ2VzXCIsXG4gICAgXCJrdm1fdm1faW9jdGxfc2V0X25yX21tdV9wYWdlc1wiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYSBjYWxjdWxhdGlvbiBpbiBga3ZtX21tdV9jaGFuZ2VfbW11X3BhZ2VzKClgIHRvIHByZXZlbnQgYG5fbWF4X21tdV9wYWdlc2AgZnJvbSBiZWluZyBzZXQgbG93ZXIgdGhhbiBgZ29hbF9ucl9tbXVfcGFnZXNgIGlmIGBrdm1fbW11X3phcF9vbGRlc3RfbW11X3BhZ2VzKClgIHphcHMgbW9yZSBzaGFkb3cgcGFnZXMgdGhhbiByZXF1ZXN0ZWQuIFRoaXMgY2hhbmdlIG9ubHkgdXBkYXRlcyBhIHNjYWxhciBpbnRlZ2VyIHZhbHVlIHRyYWNraW5nIE1NVSBwYWdlIGxpbWl0cyBhbmQgZG9lcyBub3QgaW52b2x2ZSBtZW1vcnkgYWxsb2NhdGlvbnMsIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgdXNhZ2UsIG9yIGNvcHlpbmcga2VybmVsIGRhdGEgdG8gdXNlcnNwYWNlLiBUaGVyZWZvcmUsIHRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBvciBrZXJuZWwgaW5mby1sZWFrcywgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgc2hhZG93IE1NVSBwYWdlIGNvdW50IG1hbmFnZW1lbnQgbG9naWMgaW4geDg2IEtWTSAoYGt2bV9tbXVfY2hhbmdlX21tdV9wYWdlc2ApLCB3aGljaCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIEtWTSBpb2N0bHMgKHN1Y2ggYXMgS1ZNX1NFVF9OUl9NTVVfUEFHRVMpIGFuZCBtZW1vcnkgcmVnaW9uIGNvbmZpZ3VyYXRpb24uIEZ1enppbmcgaXMgcmVjb21tZW5kZWQgdG8gZW5zdXJlIGNvcnJlY3QgTU1VIHNoYWRvdyBwYWdlIGFsbG9jYXRpb24gYW5kIHphcHBpbmcgaW52YXJpYW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDc6MDQ6MzcuNjcxNjQxMzQ5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzczNjM1MTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA5ZWMwY2Q2YmMyZTA0Nzg2OWIyYjdmYThlOGFiZTM1YmJjNDc2YTZlXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgU2VwIDExIDA3OjA0OjM2IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9tbXUvbW11LmMgYi9hcmNoL3g4Ni9rdm0vbW11L21tdS5jXFxuaW5kZXggMDY0ZWNjMzNiOTI2Ny4uZWZlYmE1ODkzNmE2OCAxMDA2NDRcXG4tLS0gYS9hcmNoL3g4Ni9rdm0vbW11L21tdS5jXFxuKysrIGIvYXJjaC94ODYva3ZtL21tdS9tbXUuY1xcbkBAIC0yOTEzLDcgKzI5MTMsNyBAQCB2b2lkIGt2bV9tbXVfY2hhbmdlX21tdV9wYWdlcyhzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgZ29hbF9ucl9tbXVfcGFnZXMpXFxuIFxcdFxcdGt2bV9tbXVfemFwX29sZGVzdF9tbXVfcGFnZXMoa3ZtLCBrdm0tXFx1MDAzZXN0YXQubW11X3NoYWRvd19wYWdlcyAtXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCAgZ29hbF9ucl9tbXVfcGFnZXMpO1xcbiBcXG4tXFx0XFx0Z29hbF9ucl9tbXVfcGFnZXMgPSBrdm0tXFx1MDAzZXN0YXQubW11X3NoYWRvd19wYWdlcztcXG4rXFx0XFx0Z29hbF9ucl9tbXVfcGFnZXMgPSBtYXgoa3ZtLVxcdTAwM2VzdGF0Lm1tdV9zaGFkb3dfcGFnZXMsIGdvYWxfbnJfbW11X3BhZ2VzKTtcXG4gXFx0fVxcbiBcXG4gXFx0a3ZtLVxcdTAwM2VhcmNoLm5fbWF4X21tdV9wYWdlcyA9IGdvYWxfbnJfbW11X3BhZ2VzO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwNzowNDozOC4xMDk2NTgzMDVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjQwNzA1MTExMTkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiLFxuICAgIFwiS1ZNX0lOVEVMXCIsXG4gICAgXCJLVk1fQU1EXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX21tdV9jaGFuZ2VfbW11X3BhZ2VzXCIsXG4gICAgXCJrdm1fdm1faW9jdGxfc2V0X25yX21tdV9wYWdlc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHNoYWRvdyBNTVUgcGFnZSBjb3VudCBtYW5hZ2VtZW50IGxvZ2ljIGluIHg4NiBLVk0gKGBrdm1fbW11X2NoYW5nZV9tbXVfcGFnZXNgKSwgd2hpY2ggaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBLVk0gaW9jdGxzIChzdWNoIGFzIEtWTV9TRVRfTlJfTU1VX1BBR0VTKSBhbmQgbWVtb3J5IHJlZ2lvbiBjb25maWd1cmF0aW9uLiBGdXp6aW5nIGlzIHJlY29tbWVuZGVkIHRvIGVuc3VyZSBjb3JyZWN0IE1NVSBzaGFkb3cgcGFnZSBhbGxvY2F0aW9uIGFuZCB6YXBwaW5nIGludmFyaWFudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgOWVjMGNkNmJjMmUwNDc4NjliMmI3ZmE4ZThhYmUzNWJiYzQ3NmE2ZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgU2VwIDExIDA3OjA0OjM2IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL21tdS9tbXUuYyBiL2FyY2gveDg2L2t2bS9tbXUvbW11LmNcbmluZGV4IDA2NGVjYzMzYjkyNjcuLmVmZWJhNTg5MzZhNjggMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9rdm0vbW11L21tdS5jXG4rKysgYi9hcmNoL3g4Ni9rdm0vbW11L21tdS5jXG5AQCAtMjkxMyw3ICsyOTEzLDcgQEAgdm9pZCBrdm1fbW11X2NoYW5nZV9tbXVfcGFnZXMoc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBsb25nIGdvYWxfbnJfbW11X3BhZ2VzKVxuIFx0XHRrdm1fbW11X3phcF9vbGRlc3RfbW11X3BhZ2VzKGt2bSwga3ZtLVx1MDAzZXN0YXQubW11X3NoYWRvd19wYWdlcyAtXG4gXHRcdFx0XHRcdFx0ICBnb2FsX25yX21tdV9wYWdlcyk7XG4gXG4tXHRcdGdvYWxfbnJfbW11X3BhZ2VzID0ga3ZtLVx1MDAzZXN0YXQubW11X3NoYWRvd19wYWdlcztcbitcdFx0Z29hbF9ucl9tbXVfcGFnZXMgPSBtYXgoa3ZtLVx1MDAzZXN0YXQubW11X3NoYWRvd19wYWdlcywgZ29hbF9ucl9tbXVfcGFnZXMpO1xuIFx0fVxuIFxuIFx0a3ZtLVx1MDAzZWFyY2gubl9tYXhfbW11X3BhZ2VzID0gZ29hbF9ucl9tbXVfcGFnZXM7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwNzowNDozOC4xMDk2NTk3MzVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo4MTM0Mzk4NzYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgS1ZNIE1NVSBQYWdlIEFkanVzdG1lbnQqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBwYXRjaC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGV4YW1pbmUgdGhlIGNvZGUgZGlmZiwgd2hpY2gsIGFzIGV4cGVjdGVkLCBpcyBtb2RpZnlpbmcgYGFyY2gveDg2L2t2bS9tbXUvbW11LmNgLiBTcGVjaWZpY2FsbHksIHRoZSBjaGFuZ2Ugc2VlbXMgdG8gYmUgd2l0aGluIHRoZSBga3ZtX21tdV9jaGFuZ2VfbW11X3BhZ2VzYCBmdW5jdGlvbi5cblxuTG9va2luZyBhdCB0aGUgZGlmZiwgdGhleSd2ZSBhbHRlcmVkIGhvdyB0aGUgYGdvYWxfbnJfbW11X3BhZ2VzYCB2YXJpYWJsZSBpcyB1cGRhdGVkLiBQcmV2aW91c2x5LCBhZnRlciB6YXBwaW5nIHBhZ2VzLCBpdCB3YXMgc2ltcGx5IGFzc2lnbmVkIHRoZSBjdXJyZW50IHNoYWRvdyBwYWdlIGNvdW50IChga3ZtLVx1MDAzZXN0YXQubW11X3NoYWRvd19wYWdlc2ApLiBOb3csIHRoZXkncmUgdXNpbmcgYG1heChrdm0tXHUwMDNlc3RhdC5tbXVfc2hhZG93X3BhZ2VzLCBnb2FsX25yX21tdV9wYWdlcylgLiBUaGF0J3MgaW50ZXJlc3Rpbmc7IGl0IGxvb2tzIGxpa2UgdGhleSdyZSBlbnN1cmluZyB0aGUgZGVzaXJlZCBudW1iZXIgb2YgcGFnZXMgZG9lc24ndCBmYWxsIGJlbG93IHRoZSBleGlzdGluZyBjb3VudC4gVGhpcyBpbmRpY2F0ZXMgdGhlIGZ1bmN0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciBhZGp1c3RpbmcgdGhlIG51bWJlciBvZiBNTVUgc2hhZG93IHBhZ2VzLCBlaXRoZXIgcmVkdWNpbmcgb3IsIG5vdywgcG90ZW50aWFsbHkgKmVuc3VyaW5nKiBpdCdzIGF0IGxlYXN0IGFzIGxhcmdlIGFzIHdoYXQncyBjdXJyZW50bHkgYWxsb2NhdGVkLCB3aGljaCBoYXMgcGVyZm9ybWFuY2UgYW5kIHNjaGVkdWxpbmcgaW1wbGljYXRpb25zLiBJIGtub3cgdGhlcmUncyBhIGRlbGljYXRlIGJhbGFuY2UgaW52b2x2ZWQgaGVyZSwgYXZvaWRpbmcgb3Zlci1hbGxvY2F0aW9uIHdoaWxlIHN0aWxsIHByb3ZpZGluZyBhIGdvb2QgbGV2ZWwgb2YgcGVyZm9ybWFuY2UuIEkgY2FuIHVzZSBgZ3JlcHBlcmAgb3IgYHJlYWQtZmlsZWAgdG8gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiB0aGUgY29udGV4dCBzdXJyb3VuZGluZyB0aGlzIGZ1bmN0aW9uLCB0byB1bmRlcnN0YW5kIHByZWNpc2VseSB3aGVuIGFuZCB3aHkgdGhpcyBtb2RpZmljYXRpb24gaXMgbmVjZXNzYXJ5LiBTcGVjaWZpY2FsbHksIEknbGwgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGBrdm1fbW11X2NoYW5nZV9tbXVfcGFnZXNgIGlzIGNhbGxlZCBhbmQgd2hhdCBkaWN0YXRlcyBgZ29hbF9ucl9tbXVfcGFnZXNgIGluIHRoZSBmaXJzdCBwbGFjZSwgb3IgSSdtIG1pc3Npbmcgc29tZXRoaW5nIGltcG9ydGFudC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk1OSwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4OSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDA3OjA0OjQ2LjI0NDA2MTMxOFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwMTgxMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJhcmNoL3g4Ni9rdm0vbW11L21tdS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI5MDAsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjI5MDA6XFx0XFx0XFx0cmV0dXJuIC1FTk9TUEM7XFxuMjkwMTpcXHRcXHRyZXR1cm4gMDtcXG4yOTAyOlxcdH1cXG4yOTAzOlxcdFxcbjI5MDQ6XFx0LypcXG4yOTA1OlxcdCAqIENoYW5naW5nIHRoZSBudW1iZXIgb2YgbW11IHBhZ2VzIGFsbG9jYXRlZCB0byB0aGUgdm1cXG4yOTA2OlxcdCAqIE5vdGU6IGlmIGdvYWxfbnJfbW11X3BhZ2VzIGlzIHRvbyBzbWFsbCwgeW91IHdpbGwgZ2V0IGRlYWQgbG9ja1xcbjI5MDc6XFx0ICovXFxuMjkwODpcXHR2b2lkIGt2bV9tbXVfY2hhbmdlX21tdV9wYWdlcyhzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgZ29hbF9ucl9tbXVfcGFnZXMpXFxuMjkwOTpcXHR7XFxuMjkxMDpcXHRcXHR3cml0ZV9sb2NrKFxcdTAwMjZrdm0tXFx1MDAzZW1tdV9sb2NrKTtcXG4yOTExOlxcdFxcbjI5MTI6XFx0XFx0aWYgKGt2bS1cXHUwMDNlc3RhdC5tbXVfc2hhZG93X3BhZ2VzIFxcdTAwM2UgZ29hbF9ucl9tbXVfcGFnZXMpIHtcXG4yOTEzOlxcdFxcdFxcdGt2bV9tbXVfemFwX29sZGVzdF9tbXVfcGFnZXMoa3ZtLCBrdm0tXFx1MDAzZXN0YXQubW11X3NoYWRvd19wYWdlcyAtXFxuMjkxNDpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgIGdvYWxfbnJfbW11X3BhZ2VzKTtcXG4yOTE1OlxcdFxcbjI5MTY6XFx0XFx0XFx0Z29hbF9ucl9tbXVfcGFnZXMgPSBtYXgoa3ZtLVxcdTAwM2VzdGF0Lm1tdV9zaGFkb3dfcGFnZXMsIGdvYWxfbnJfbW11X3BhZ2VzKTtcXG4yOTE3OlxcdFxcdH1cXG4yOTE4OlxcdFxcbjI5MTk6XFx0XFx0a3ZtLVxcdTAwM2VhcmNoLm5fbWF4X21tdV9wYWdlcyA9IGdvYWxfbnJfbW11X3BhZ2VzO1xcbjI5MjA6XFx0XFxuMjkyMTpcXHRcXHR3cml0ZV91bmxvY2soXFx1MDAyNmt2bS1cXHUwMDNlbW11X2xvY2spO1xcbjI5MjI6XFx0fVxcbjI5MjM6XFx0XFxuMjkyNDpcXHRib29sIF9fa3ZtX21tdV91bnByb3RlY3RfZ2ZuX2FuZF9yZXRyeShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGdwYV90IGNyMl9vcl9ncGEsXFxuMjkyNTpcXHRcXHRcXHRcXHRcXHQgICAgICAgYm9vbCBhbHdheXNfcmV0cnkpXFxuMjkyNjpcXHR7XFxuMjkyNzpcXHRcXHRzdHJ1Y3Qga3ZtICprdm0gPSB2Y3B1LVxcdTAwM2Vrdm07XFxuMjkyODpcXHRcXHRMSVNUX0hFQUQoaW52YWxpZF9saXN0KTtcXG4yOTI5OlxcdFxcdHN0cnVjdCBrdm1fbW11X3BhZ2UgKnNwO1xcbjI5MzA6XFx0XFx0Z3BhX3QgZ3BhID0gY3IyX29yX2dwYTtcXG4yOTMxOlxcdFxcdGJvb2wgciA9IGZhbHNlO1xcbjI5MzI6XFx0XFxuMjkzMzpcXHRcXHQvKlxcbjI5MzQ6XFx0XFx0ICogQmFpbCBlYXJseSBpZiB0aGVyZSBhcmVuJ3QgYW55IHdyaXRlLXByb3RlY3RlZCBzaGFkb3cgcGFnZXMgdG8gYXZvaWRcXG4yOTM1OlxcdFxcdCAqIHVubmVjZXNzYXJpbHkgdGFraW5nIG1tdV9sb2NrIGxvY2ssIGUuZy4gaWYgdGhlIGdmbiBpcyB3cml0ZS10cmFja2VkXFxuMjkzNjpcXHRcXHQgKiBieSBhIHRoaXJkIHBhcnR5LiAgUmVhZGluZyBpbmRpcmVjdF9zaGFkb3dfcGFnZXMgd2l0aG91dCBob2xkaW5nXFxuMjkzNzpcXHRcXHQgKiBtbXVfbG9jayBpcyBzYWZlLCBhcyB0aGlzIGlzIHB1cmVseSBhbiBvcHRpbWl6YXRpb24sIGkuZS4gYSBmYWxzZVxcbjI5Mzg6XFx0XFx0ICogcG9zaXRpdmUgaXMgYmVuaWduLCBhbmQgYSBmYWxzZSBuZWdhdGl2ZSB3aWxsIHNpbXBseSByZXN1bHQgaW4gS1ZNXFxuMjkzOTpcXHRcXHQgKiBza2lwcGluZyB0aGUgdW5wcm90ZWN0K3JldHJ5IHBhdGgsIHdoaWNoIGlzIGFsc28gYW4gb3B0aW1pemF0aW9uLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwNzowNDo0Ni4yNDQzNjUwMThaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNTgyNTA3MzMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgYGt2bV9tbXVfY2hhbmdlX21tdV9wYWdlc2AgQ2FsbHNpdGUqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udHJvbCBmbG93IHRoYXQgbGVhZHMgdG8gYGt2bV9tbXVfY2hhbmdlX21tdV9wYWdlc2AuIE15IHByaW1hcnkgZ29hbCBpcyB0byBpZGVudGlmeSB0aGUgZXZlbnRzIG9yIGNvbmRpdGlvbnMgdGhhdCBuZWNlc3NpdGF0ZSB0aGlzIE1NVSBtb2RpZmljYXRpb24uIEknbGwgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gdGhpcyBmdW5jdGlvbiBjYWxsIHRvIGl0cyBjYWxsZXJzIGFuZCwgaWRlYWxseSwgdW5kZXJzdGFuZCB0aGUgaGlnaGVyLWxldmVsIGNvbnRleHQgd2l0aGluIHRoZSBLVk0gaW5mcmFzdHJ1Y3R1cmUgdGhhdCAqZGVtYW5kcyogYSBjaGFuZ2UgdG8gdGhlIE1NVSBwYWdlIHN0cnVjdHVyZXMuIEFyZSB3ZSB0YWxraW5nIGFib3V0IGd1ZXN0IG1lbW9yeSBtYXBwaW5nIG1vZGlmaWNhdGlvbnMsIHBhZ2UgZmF1bHRzLCBFTTY0VCBjb252ZXJzaW9ucyxFUFQgb3BlcmF0aW9ucywgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IEEgcXVpY2sgc2NhbiBvZiB0aGUgY2FsbGVycyB3aWxsIGhvcGVmdWxseSByZXZlYWwgd2hpY2ggYXJlYXMgb2YgS1ZNIGFyZSBsZXZlcmFnaW5nIHRoaXMgZnVuY3Rpb24gYW5kIHdoYXQga2luZCBvZiBzdGF0ZSB0cmFuc2l0aW9ucyBhcmUgaGFwcGVuaW5nIGp1c3QgcHJpb3IgdG8gdGhpcyBjYWxsLiBJJ20gbG9va2luZyBmb3IgY2x1ZXMgYWJvdXQgdGhlIHR5cGVzIG9mIE1NVSB1cGRhdGVzIHRoaXMgZnVuY3Rpb24gaGFuZGxlczogc2luZ2xlIHBhZ2UgbW9kaWZpY2F0aW9ucywgbGFyZ2VyIHJhbmdlIHVwZGF0ZXMsIHRyYW5zbGF0aW9uIGludmFsaWRhdGlvbnMsIGV0Yy4gSSdsbCBhbHNvIGJlIHdhdGNoaW5nIGZvciBhbnkgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXMgaW4gcGxheSwgdG8gdW5kZXJzdGFuZCB0aGUgcG90ZW50aWFsIGNvbmN1cnJlbmN5IGltcGxpY2F0aW9ucyBhbmQgaWYgdGhlcmUgYXJlIGxvY2tzIGludm9sdmVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDcwLCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwNzowNDo0OC44MjY4NzQyMjdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU4ODcwOTE2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fbW11X2NoYW5nZV9tbXVfcGFnZXNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYva3ZtL21tdS5oPTEzND12b2lkIGt2bV9tbXVfaW52YWxpZGF0ZV9tbWlvX3NwdGVzKHN0cnVjdCBrdm0gKmt2bSwgdTY0IGdlbik7XFxuYXJjaC94ODYva3ZtL21tdS5oOjEzNTp2b2lkIGt2bV9tbXVfY2hhbmdlX21tdV9wYWdlcyhzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcga3ZtX25yX21tdV9wYWdlcyk7XFxuYXJjaC94ODYva3ZtL21tdS5oLTEzNi12b2lkIGt2bV96YXBfZ2ZuX3JhbmdlKHN0cnVjdCBrdm0gKmt2bSwgZ2ZuX3QgZ2ZuX3N0YXJ0LCBnZm5fdCBnZm5fZW5kKTtcXG4tLVxcbmFyY2gveDg2L2t2bS9tbXUvbW11LmM9Mjg4MT1zdGF0aWMgaW50IG1ha2VfbW11X3BhZ2VzX2F2YWlsYWJsZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vbW11L21tdS5jLTI5MDctICovXFxuYXJjaC94ODYva3ZtL21tdS9tbXUuYzoyOTA4OnZvaWQga3ZtX21tdV9jaGFuZ2VfbW11X3BhZ2VzKHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgbG9uZyBnb2FsX25yX21tdV9wYWdlcylcXG5hcmNoL3g4Ni9rdm0vbW11L21tdS5jLTI5MDkte1xcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jPTM5MTA9c3RhdGljIGludCBrdm1fdm1faW9jdGxfc2V0X25yX21tdV9wYWdlcyhzdHJ1Y3Qga3ZtICprdm0sXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtMzkxNy1cXG5hcmNoL3g4Ni9rdm0veDg2LmM6MzkxODpcXHRrdm1fbW11X2NoYW5nZV9tbXVfcGFnZXMoa3ZtLCBrdm1fbnJfbW11X3BhZ2VzKTtcXG5hcmNoL3g4Ni9rdm0veDg2LmMtMzkxOS1cXHRrdm0tXFx1MDAzZWFyY2gubl9yZXF1ZXN0ZWRfbW11X3BhZ2VzID0ga3ZtX25yX21tdV9wYWdlcztcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYz0xMDMzOD12b2lkIGt2bV9hcmNoX2NvbW1pdF9tZW1vcnlfcmVnaW9uKHN0cnVjdCBrdm0gKmt2bSxcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYy0xMDM1MS1cXHRcXHRucl9tbXVfcGFnZXMgPSBtYXgobnJfbW11X3BhZ2VzLCBLVk1fTUlOX0FMTE9DX01NVV9QQUdFUyk7XFxuYXJjaC94ODYva3ZtL3g4Ni5jOjEwMzUyOlxcdFxcdGt2bV9tbXVfY2hhbmdlX21tdV9wYWdlcyhrdm0sIG5yX21tdV9wYWdlcyk7XFxuYXJjaC94ODYva3ZtL3g4Ni5jLTEwMzUzLVxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDc6MDQ6NTAuNDE1NTg4OTg1WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Mjc2MzgwOTUyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgS1ZNIE1lbW9yeSBNYW5hZ2VtZW50KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBJJ20gbG9va2luZyBhdCBga3ZtX3ZtX2lvY3RsX3NldF9ucl9tbXVfcGFnZXNgIC0gdGhhdCdzIHRoZSBLVk1fU0VUX05SX01NVV9QQUdFUyBpb2N0bCBvbiBhIHZpcnR1YWwgbWFjaGluZSBmaWxlIGRlc2NyaXB0b3IgLSBhbmQgYGt2bV9hcmNoX2NvbW1pdF9tZW1vcnlfcmVnaW9uYC4gVGhlc2UgZnVuY3Rpb25zIHNlZW0gY2VudHJhbCB0byBtZW1vcnkgbWFuYWdlbWVudCB3aXRoaW4gS1ZNLCBzcGVjaWZpY2FsbHkgZm9yIHg4NiBhcmNoaXRlY3R1cmVzLiBJIGtub3cgS1ZNIG9uIGFtZDY0IGlzIHJvYnVzdDsgaXQncyBzb21ldGhpbmcgSSd2ZSB3b3JrZWQgd2l0aCBleHRlbnNpdmVseSwgd2hldGhlciBpdCdzIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiBvciB0aGUgbW9yZSBzdGFuZGFyZCBLVk0gc2V0dXBzIGluIFFFTVUgb3IgZW52aXJvbm1lbnRzIGxpa2UgR29vZ2xlIENvbXB1dGUgRW5naW5lLiBUaGUgZmFjdCB0aGF0IGl0J3MgYWNjZXNzaWJsZSBhbmQgc3VwcG9ydGVkIHdpdGhpbiBTeXprYWxsZXIncyB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgaXMgcmVhc3N1cmluZy4gTm93LCBsZXQncyBkb3VibGUtY2hlY2sgdGhlIEtjb25maWcgcmVxdWlyZW1lbnRzIHJlbGF0ZWQgdG8gS1ZNIHN1cHBvcnQgb24geDg2LiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnMgYXJlIGluIHBsYWNlIGJlZm9yZSBwcm9jZWVkaW5nIGFueSBmdXJ0aGVyLCB0byBhdm9pZCBhbnkgdW5leHBlY3RlZCByb2FkYmxvY2tzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NDEyLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDA3OjA0OjUzLjE3OTQwMTUzNVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTk5MTY4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgS1ZNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gveDg2L2t2bVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIwOmNvbmZpZyBLVk1fWDg2XFxuYXJjaC94ODYva3ZtL0tjb25maWctMjEtXFx0ZGVmX3RyaXN0YXRlIEtWTSBpZiAoS1ZNX0lOVEVMICE9IG4gfHwgS1ZNX0FNRCAhPSBuKVxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctNTEtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6NTI6Y29uZmlnIEtWTVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTUzLVxcdHRyaXN0YXRlIFxcXCJLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy02OC1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo2OTpjb25maWcgS1ZNX1dFUlJPUlxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTcwLVxcdGJvb2wgXFxcIkNvbXBpbGUgS1ZNIHdpdGggLVdlcnJvclxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTgyLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjgzOmNvbmZpZyBLVk1fU1dfUFJPVEVDVEVEX1ZNXFxuYXJjaC94ODYva3ZtL0tjb25maWctODQtXFx0Ym9vbCBcXFwiRW5hYmxlIHN1cHBvcnQgZm9yIEtWTSBzb2Z0d2FyZS1wcm90ZWN0ZWQgVk1zXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctOTUtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6OTY6Y29uZmlnIEtWTV9JTlRFTFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTk3LVxcdHRyaXN0YXRlIFxcXCJLVk0gZm9yIEludGVsIChhbmQgY29tcGF0aWJsZSkgcHJvY2Vzc29ycyBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTA2LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjEwNzpjb25maWcgS1ZNX0lOVEVMX1BST1ZFX1ZFXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTA4LSAgICAgICAgYm9vbCBcXFwiQ2hlY2sgdGhhdCBndWVzdHMgZG8gbm90IHJlY2VpdmUgI1ZFIGV4Y2VwdGlvbnNcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz0xMjI9Y29uZmlnIFg4Nl9TR1hfS1ZNXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMzMtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTM0OmNvbmZpZyBLVk1fSU5URUxfVERYXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTM1LVxcdGJvb2wgXFxcIkludGVsIFRydXN0IERvbWFpbiBFeHRlbnNpb25zIChURFgpIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNDUtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTQ2OmNvbmZpZyBLVk1fQU1EXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTQ3LVxcdHRyaXN0YXRlIFxcXCJLVk0gZm9yIEFNRCBwcm9jZXNzb3JzIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNTUtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTU2OmNvbmZpZyBLVk1fQU1EX1NFVlxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE1Ny1cXHRib29sIFxcXCJBTUQgU2VjdXJlIEVuY3J5cHRlZCBWaXJ0dWFsaXphdGlvbiAoU0VWKSBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTcyLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE3Mzpjb25maWcgS1ZNX0lPQVBJQ1xcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE3NC1cXHRib29sIFxcXCJJL08gQVBJQywgUElDLCBhbmQgUElUIGVtdWxhdGlvblxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE4Mi1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxODM6Y29uZmlnIEtWTV9TTU1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xODQtXFx0Ym9vbCBcXFwiU3lzdGVtIE1hbmFnZW1lbnQgTW9kZSBlbXVsYXRpb25cXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xOTMtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTk0OmNvbmZpZyBLVk1fSFlQRVJWXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTk1LVxcdGJvb2wgXFxcIlN1cHBvcnQgZm9yIE1pY3Jvc29mdCBIeXBlci1WIGVtdWxhdGlvblxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIwNy1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMDg6Y29uZmlnIEtWTV9YRU5cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMDktXFx0Ym9vbCBcXFwiU3VwcG9ydCBmb3IgWGVuIGh5cGVyY2FsbCBpbnRlcmZhY2VcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMTYtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MjE3OmNvbmZpZyBLVk1fUFJPVkVfTU1VXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjE4LVxcdGJvb2wgXFxcIlByb3ZlIEtWTSBNTVUgY29ycmVjdG5lc3NcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMjktXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MjMwOmNvbmZpZyBLVk1fRVhURVJOQUxfV1JJVEVfVFJBQ0tJTkdcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzEtXFx0Ym9vbFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIzMi1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMzM6Y29uZmlnIEtWTV9NQVhfTlJfVkNQVVNcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzQtXFx0aW50IFxcXCJNYXhpbXVtIG51bWJlciBvZiB2Q1BVcyBwZXIgS1ZNIGd1ZXN0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwNzowNDo1My4yMjUzOTcyOTRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyODM4MjQ3OTk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjpcblxuKipEaXZpbmcgaW50byB0aGUgS1ZNIHg4NiBCdWlsZCBTeXN0ZW0qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0J3MgYmVpbmcgY29tcGlsZWQgZm9yIHRoZSBLVk0geDg2IGtlcm5lbCBtb2R1bGUuIE5hdHVyYWxseSwgdGhlIGZpcnN0IHBsYWNlIHRvIGxvb2sgaXMgdGhlIGBhcmNoL3g4Ni9rdm0vTWFrZWZpbGVgLiBUaGF0J3Mgd2hlcmUgYWxsIHRoZSBtYWdpYyBoYXBwZW5zIHdoZW4gdGhlIGJ1aWxkIHN5c3RlbSBpcyBwdWxsaW5nIHRvZ2V0aGVyIHRoZSBuZWNlc3Nhcnkgb2JqZWN0IGZpbGVzLiBJJ2xsIG5lZWQgdG8gc2VlIHByZWNpc2VseSB3aGljaCBzb3VyY2UgZmlsZXMgYXJlIGJlaW5nIGluY2x1ZGVkLCBhbmQgdW5kZXIgd2hhdCBzcGVjaWZpYyBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFVuZGVyc3RhbmRpbmcgdGhlIGNvbmRpdGlvbmFsIGluY2x1c2lvbnMgd2lsbCBnaXZlIG1lIHRoZSBiZXN0IHZpZXcgb2Ygd2hhdCBmZWF0dXJlcyBhbmQgZnVuY3Rpb25hbGl0eSBhcmUgYmFrZWQgaW50byB0aGUgZmluYWwgbW9kdWxlIGJhc2VkIG9uIG15IHN5c3RlbSdzIGN1cnJlbnQga2VybmVsIGNvbmZpZ3VyYXRpb24uIEnigJlsbCBiZSBjaGVja2luZyBmb3Igc3BlY2lmaWMgYENPTkZJR19gIGZsYWdzIGFuZCB0aGVpciBpbXBhY3Qgb24gdGhlIGJ1aWxkLiBMZXQncyBnZXQgdG8gaXQhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY5ODQsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwNzowNDo1Ni4wNjM2NDcxMjNaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1NTEyNjcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1tdS9tbXVcXFxcLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS9NYWtlZmlsZT04PWt2bS15XFx0XFx0XFx0Kz0geDg2Lm8gZW11bGF0ZS5vIGlycS5vIGxhcGljLm8gY3B1aWQubyBtc3JzLm8gcG11Lm8gcmVncy5vIFxcXFxcXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGU6OTpcXHRcXHRcXHQgICBtdHJyLm8gZGVidWdmcy5vIG1tdS9tbXUubyBtbXUvcGFnZV90cmFjay5vIG1tdS9zcHRlLm9cXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGUtMTAtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDA3OjA0OjU2LjEwOTE3MjYxMloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1MTE2NjIwMzQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKktWTSBNb2R1bGUgQ29tcGlsYXRpb24gRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gSSdtIHRyeWluZyB0byBmaWd1cmUgb3V0IHRoZSBidWlsZCBjb25kaXRpb25zIGZvciBga3ZtLXlgLiBSaWdodCwgbGV0J3MgZXN0YWJsaXNoIHRoZSBncm91bmQgdHJ1dGg6IGl0J3MgYnVpbHQgd2hlbiBgQ09ORklHX0tWTWAgaXMgZGVmaW5lZC4gVGhhdCBtYWtlcyBzZW5zZSwgcHJldHR5IGZvdW5kYXRpb25hbC4gVGhlbiwgdG8gZ2V0IG1vcmUgc3BlY2lmaWMsIGl0IHJlcXVpcmVzIGVpdGhlciBgQ09ORklHX0tWTV9JTlRFTGAgb3IgYENPTkZJR19LVk1fQU1EYCBiZSBlbmFibGVkIGFzIHdlbGwsIHdoaWNoIGFyZSBnb2luZyB0byBkZWZpbmUgdGhlIHVuZGVybHlpbmcgYXJjaGl0ZWN0dXJlLCBJbnRlbCBvciBBTUQgcmVzcGVjdGl2ZWx5LlxuXG5BbHJpZ2h0LCBzZWVtcyBzaW1wbGUgZW5vdWdoIHNvIGZhci4gTm93LCBqdXN0IHRvIGNvbmZpcm0gbXkgdW5kZXJzdGFuZGluZyBhbmQgbWFrZSBzdXJlIEkgaGF2ZW4ndCBtaXNzZWQgc29tZXRoaW5nIHN1YnRsZSwgSSBzaG91bGQgcHJvYmFibHkgdGFrZSBhIHF1aWNrIGxvb2sgYXQgYGFyY2gveDg2L2t2bS9NYWtlZmlsZWAgLSBsaW5lcyAxIHRocm91Z2ggMTUsIHRvIGJlIHByZWNpc2UuIEl0IHNob3VsZCBsYXkgb3V0IHRoZSBzcGVjaWZpYyBkZXBlbmRlbmNpZXMgZm9yIGNvbXBpbGluZyB0aGUgS1ZNIG1vZHVsZSBpbiBhIGNsZWFyIGZhc2hpb24uIExldCdzIHNlZSB3aGF0IHRoZSBNYWtlZmlsZSByZXZlYWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MzQ3LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDc6MDU6MDEuMjI1Nzk2NTM2WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc5MTkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImFyY2gveDg2L2t2bS9NYWtlZmlsZVwiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdFxcbiAgIDM6XFx0Y2NmbGFncy15ICs9IC1JICQoc3JjdHJlZSkvYXJjaC94ODYva3ZtXFxuICAgNDpcXHRjY2ZsYWdzLSQoQ09ORklHX0tWTV9XRVJST1IpICs9IC1XZXJyb3JcXG4gICA1OlxcdFxcbiAgIDY6XFx0aW5jbHVkZSAkKHNyY3RyZWUpL3ZpcnQva3ZtL01ha2VmaWxlLmt2bVxcbiAgIDc6XFx0XFxuICAgODpcXHRrdm0teVxcdFxcdFxcdCs9IHg4Ni5vIGVtdWxhdGUubyBpcnEubyBsYXBpYy5vIGNwdWlkLm8gbXNycy5vIHBtdS5vIHJlZ3MubyBcXFxcXFxuICAgOTpcXHRcXHRcXHRcXHQgICBtdHJyLm8gZGVidWdmcy5vIG1tdS9tbXUubyBtbXUvcGFnZV90cmFjay5vIG1tdS9zcHRlLm9cXG4gIDEwOlxcdFxcbiAgMTE6XFx0a3ZtLSQoQ09ORklHX1g4Nl82NCkgKz0gbW11L3RkcF9pdGVyLm8gbW11L3RkcF9tbXUub1xcbiAgMTI6XFx0a3ZtLSQoQ09ORklHX0tWTV9JT0FQSUMpICs9IGk4MjU5Lm8gaTgyNTQubyBpb2FwaWMub1xcbiAgMTM6XFx0a3ZtLSQoQ09ORklHX0tWTV9IWVBFUlYpICs9IGh5cGVydi5vXFxuICAxNDpcXHRrdm0tJChDT05GSUdfS1ZNX1hFTilcXHQrPSB4ZW4ub1xcbiAgMTU6XFx0a3ZtLSQoQ09ORklHX0tWTV9TTU0pXFx0Kz0gc21tLm9cXG4gIDE2OlxcdFxcbiAgMTc6XFx0a3ZtLWludGVsLXlcXHRcXHQrPSB2bXgvdm14Lm8gdm14L3ZtZW50ZXIubyB2bXgvcG11X2ludGVsLm8gdm14L3ZtY3MxMi5vIFxcXFxcXG4gIDE4OlxcdFxcdFxcdFxcdCAgIHZteC9uZXN0ZWQubyB2bXgvcG9zdGVkX2ludHIubyB2bXgvbWFpbi5vXFxuICAxOTpcXHRcXG4gIDIwOlxcdGt2bS1pbnRlbC0kKENPTkZJR19YODZfU0dYX0tWTSlcXHQrPSB2bXgvc2d4Lm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDc6MDU6MDEuMjI1ODc3ODg2WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI5MDgxMTAxMDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqS1ZNIE1vZHVsZSBJbmNsdXNpb24gSW52ZXN0aWdhdGlvbioqXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgZXhhY3QgbWVjaGFuaXNtcyBmb3IgS1ZNIG1vZHVsZSBjb21waWxhdGlvbi4gTXkgaW5pdGlhbCBodW5jaCwgZ2l2ZW4gdGhlIHN0cnVjdHVyZSBvZiB0aGUga2VybmVsLCBpcyB0aGF0IHRoZSBgdmlydC9rdm0vTWFrZWZpbGUua3ZtYCBmaWxlIGlzIHRoZSBrZXkuIEkgZXhwZWN0IHRvIGZpbmQgYSBsaW5lIGluIHRoZXJlIHRoYXQgbG9va3MgbGlrZSBgb2JqLSQoQ09ORklHX0tWTSkgKz0ga3ZtLm9gIG9yIHNvbWV0aGluZyBhbG9uZyB0aG9zZSBsaW5lcywgY29udHJvbGxpbmcgdGhlIGluY2x1c2lvbiBvZiB0aGUgY29yZSBga3ZtLm9gIG9iamVjdCBiYXNlZCBvbiB0aGUgYENPTkZJR19LVk1gIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBIb3dldmVyLCBpdCdzIGFsc28gd29ydGggY2hlY2tpbmcgdGhlIGBhcmNoL3g4Ni9rdm0vS2NvbmZpZ2AgZmlsZSBpbiBjYXNlIEtWTSBjb25maWd1cmF0aW9uIGlzIGJlaW5nIGNvbnRyb2xsZWQgaW4gdGhlIGFyY2hpdGVjdHVyZSBzcGVjaWZpYyBmaWxlLiBJJ2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIHRob3NlIHR3byBmaWxlcyB0byBnZXQgdG8gdGhlIGJvdHRvbSBvZiB0aGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MTA0LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwNzowNTowNC4xMzM5OTEzOTRaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5OTQ4NTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNPTkZJR19LVk1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNzc2IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGU9Mz1jY2ZsYWdzLXkgKz0gLUkgJChzcmN0cmVlKS9hcmNoL3g4Ni9rdm1cXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGU6NDpjY2ZsYWdzLSQoQ09ORklHX0tWTV9XRVJST1IpICs9IC1XZXJyb3JcXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGUtNS1cXG4tLVxcbmFyY2gveDg2L2t2bS9NYWtlZmlsZT0xMT1rdm0tJChDT05GSUdfWDg2XzY0KSArPSBtbXUvdGRwX2l0ZXIubyBtbXUvdGRwX21tdS5vXFxuYXJjaC94ODYva3ZtL01ha2VmaWxlOjEyOmt2bS0kKENPTkZJR19LVk1fSU9BUElDKSArPSBpODI1OS5vIGk4MjU0Lm8gaW9hcGljLm9cXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGU6MTM6a3ZtLSQoQ09ORklHX0tWTV9IWVBFUlYpICs9IGh5cGVydi5vXFxuYXJjaC94ODYva3ZtL01ha2VmaWxlOjE0Omt2bS0kKENPTkZJR19LVk1fWEVOKVxcdCs9IHhlbi5vXFxuYXJjaC94ODYva3ZtL01ha2VmaWxlOjE1Omt2bS0kKENPTkZJR19LVk1fU01NKVxcdCs9IHNtbS5vXFxuYXJjaC94ODYva3ZtL01ha2VmaWxlLTE2LVxcbi0tXFxuYXJjaC94ODYva3ZtL01ha2VmaWxlPTIwPWt2bS1pbnRlbC0kKENPTkZJR19YODZfU0dYX0tWTSlcXHQrPSB2bXgvc2d4Lm9cXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGU6MjE6a3ZtLWludGVsLSQoQ09ORklHX0tWTV9IWVBFUlYpXFx0Kz0gdm14L2h5cGVydi5vIHZteC9oeXBlcnZfZXZtY3Mub1xcbmFyY2gveDg2L2t2bS9NYWtlZmlsZToyMjprdm0taW50ZWwtJChDT05GSUdfS1ZNX0lOVEVMX1REWClcXHQrPSB2bXgvdGR4Lm9cXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGUtMjMtXFxuYXJjaC94ODYva3ZtL01ha2VmaWxlPTI0PWt2bS1hbWQteVxcdFxcdCs9IHN2bS9zdm0ubyBzdm0vdm1lbnRlci5vIHN2bS9wbXUubyBzdm0vbmVzdGVkLm8gc3ZtL2F2aWMub1xcbmFyY2gveDg2L2t2bS9NYWtlZmlsZS0yNS1cXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGU6MjY6a3ZtLWFtZC0kKENPTkZJR19LVk1fQU1EX1NFVilcXHQrPSBzdm0vc2V2Lm9cXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGU6Mjc6a3ZtLWFtZC0kKENPTkZJR19LVk1fSFlQRVJWKVxcdCs9IHN2bS9oeXBlcnYub1xcbmFyY2gveDg2L2t2bS9NYWtlZmlsZS0yOC1cXG4tLVxcbmFyY2gveDg2L2t2bS9NYWtlZmlsZT0zMz1lbmRpZlxcbmFyY2gveDg2L2t2bS9NYWtlZmlsZS0zNC1cXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGU6MzU6b2JqLSQoQ09ORklHX0tWTV9YODYpXFx0Kz0ga3ZtLm9cXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGU6MzY6b2JqLSQoQ09ORklHX0tWTV9JTlRFTClcXHQrPSBrdm0taW50ZWwub1xcbmFyY2gveDg2L2t2bS9NYWtlZmlsZTozNzpvYmotJChDT05GSUdfS1ZNX0FNRClcXHQrPSBrdm0tYW1kLm9cXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGUtMzgtXFxuLS1cXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGU9NDk9Y2xlYW4tZmlsZXMgKz0ga3ZtLWFzbS1vZmZzZXRzLmhcXG4tLVxcbmFyY2gveDg2L2t2bS9NYWtlZmlsZS01NS0jIHVzZSBFWFBPUlRfU1lNQk9MX0dQTCwgYW5kIEVYUE9SVF9TWU1CT0wgc2hvdWxkIG5ldmVyIGJlIHVzZWQuXFxuYXJjaC94ODYva3ZtL01ha2VmaWxlOjU2OmlmZGVmIENPTkZJR19LVk1fWDg2XFxuYXJjaC94ODYva3ZtL01ha2VmaWxlLTU3LSMgU2VhcmNoIHJlY3Vyc2l2ZWx5IGZvciB3aG9sZSB3b3JkcyBhbmQgcHJpbnQgbGluZSBudW1iZXJzLiAgRmlsdGVyIG91dCB0aGVcXG4tLVxcbmFyY2gveDg2L2t2bS9NYWtlZmlsZT05Nz11bmRlZmluZSBleHBvcnRzX2dyZXBfdHJhaWxlclxcbmFyY2gveDg2L2t2bS9NYWtlZmlsZTo5ODplbmRpZiAjIENPTkZJR19LVk1fWDg2XFxuLS1cXG5hcmNoL3g4Ni9rdm0vY3B1aWQuYz0zMjc9c3RhdGljIGJvb2wga3ZtX2NwdWlkX2hhc19oeXBlcnYoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gveDg2L2t2bS9jcHVpZC5jLTMyOC17XFxuYXJjaC94ODYva3ZtL2NwdWlkLmM6MzI5OiNpZmRlZiBDT05GSUdfS1ZNX0hZUEVSVlxcbmFyY2gveDg2L2t2bS9jcHVpZC5jLTMzMC1cXHRzdHJ1Y3Qga3ZtX2NwdWlkX2VudHJ5MiAqZW50cnk7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vY3B1aWQuYz01MTA9c3RhdGljIGludCBrdm1fc2V0X2NwdWlkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9jcHVpZF9lbnRyeTIgKmUyLFxcbi0tXFxuYXJjaC94ODYva3ZtL2NwdWlkLmMtNTYwLVxcbmFyY2gveDg2L2t2bS9jcHVpZC5jOjU2MTojaWZkZWYgQ09ORklHX0tWTV9IWVBFUlZcXG5hcmNoL3g4Ni9rdm0vY3B1aWQuYy01NjItXFx0aWYgKGt2bV9jcHVpZF9oYXNfaHlwZXJ2KHZjcHUpKSB7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vY3B1aWQuYy01NzItXFxuYXJjaC94ODYva3ZtL2NwdWlkLmM6NTczOiNpZmRlZiBDT05GSUdfS1ZNX1hFTlxcbmFyY2gveDg2L2t2bS9jcHVpZC5jLTU3NC1cXHR2Y3B1LVxcdTAwM2VhcmNoLnhlbi5jcHVpZCA9IGt2bV9nZXRfaHlwZXJ2aXNvcl9jcHVpZCh2Y3B1LCBYRU5fU0lHTkFUVVJFKTtcXG4tLVxcbmFyY2gveDg2L2t2bS9oeXBlcnYuaC0yNy1cXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2Lmg6Mjg6I2lmZGVmIENPTkZJR19LVk1fSFlQRVJWXFxuYXJjaC94ODYva3ZtL2h5cGVydi5oLTI5LVxcbi0tXFxuYXJjaC94ODYva3ZtL2h5cGVydi5oPTM3OD1pbnQga3ZtX2h2X3ZjcHVfZmx1c2hfdGxiKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XFxuYXJjaC94ODYva3ZtL2h5cGVydi5oOjM3OTojZWxzZSAvKiBDT05GSUdfS1ZNX0hZUEVSViAqL1xcbmFyY2gveDg2L2t2bS9oeXBlcnYuaC0zODAtc3RhdGljIGlubGluZSB2b2lkIGt2bV9odl9zZXR1cF90c2NfcGFnZShzdHJ1Y3Qga3ZtICprdm0sXFxuLS1cXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2Lmg9NDI2PXN0YXRpYyBpbmxpbmUgdm9pZCBrdm1faHZfbmVzdGVkX3RyYW5zdGlvbl90bGJfZmx1c2goc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBib29sIHRkcF9lbmFibGVkKSB7fVxcbmFyY2gveDg2L2t2bS9oeXBlcnYuaDo0Mjc6I2VuZGlmIC8qIENPTkZJR19LVk1fSFlQRVJWICovXFxuYXJjaC94ODYva3ZtL2h5cGVydi5oLTQyOC1cXG4tLVxcbmFyY2gveDg2L2t2bS9pODI1NC5oLTEyLVxcbmFyY2gveDg2L2t2bS9pODI1NC5oOjEzOiNpZmRlZiBDT05GSUdfS1ZNX0lPQVBJQ1xcbmFyY2gveDg2L2t2bS9pODI1NC5oLTE0LXN0cnVjdCBrdm1fa3BpdF9jaGFubmVsX3N0YXRlIHtcXG4tLVxcbmFyY2gveDg2L2t2bS9pODI1NC5oPTY5PXZvaWQga3ZtX2ZyZWVfcGl0KHN0cnVjdCBrdm0gKmt2bSk7XFxuYXJjaC94ODYva3ZtL2k4MjU0Lmg6NzA6I2VuZGlmIC8qIENPTkZJR19LVk1fSU9BUElDICovXFxuYXJjaC94ODYva3ZtL2k4MjU0LmgtNzEtXFxuLS1cXG5hcmNoL3g4Ni9rdm0vaW9hcGljLmgtOC1cXG5hcmNoL3g4Ni9rdm0vaW9hcGljLmg6OTojaWZkZWYgQ09ORklHX0tWTV9JT0FQSUNcXG5hcmNoL3g4Ni9rdm0vaW9hcGljLmgtMTAtXFxuLS1cXG5hcmNoL3g4Ni9rdm0vaW9hcGljLmg9MTE3PXN0YXRpYyBpbmxpbmUgaW50IF9fa3ZtX2lycV9saW5lX3N0YXRlKHVuc2lnbmVkIGxvbmcgKmlycV9zdGF0ZSxcXG4tLVxcbmFyY2gveDg2L2t2bS9pb2FwaWMuaC0xMjctfVxcbmFyY2gveDg2L2t2bS9pb2FwaWMuaDoxMjg6I2VuZGlmIC8qIENPTkZJR19LVk1fSU9BUElDICovXFxuYXJjaC94ODYva3ZtL2lvYXBpYy5oLTEyOS1cXG4tLVxcbmFyY2gveDg2L2t2bS9pcnEuYz01OT1pbnQga3ZtX2NwdV9oYXNfZXh0aW50KHN0cnVjdCBrdm1fdmNwdSAqdilcXG4tLVxcbmFyY2gveDg2L2t2bS9pcnEuYy04MC1cXG5hcmNoL3g4Ni9rdm0vaXJxLmM6ODE6I2lmZGVmIENPTkZJR19LVk1fSU9BUElDXFxuYXJjaC94ODYva3ZtL2lycS5jLTgyLVxcdGlmIChwaWNfaW5fa2VybmVsKHYtXFx1MDAzZWt2bSkpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vaXJxLmM9MTI4PWludCBrdm1fY3B1X2dldF9leHRpbnQoc3RydWN0IGt2bV92Y3B1ICp2KVxcbi0tXFxuYXJjaC94ODYva3ZtL2lycS5jLTEzNy1cXG5hcmNoL3g4Ni9rdm0vaXJxLmM6MTM4OiNpZmRlZiBDT05GSUdfS1ZNX1hFTlxcbmFyY2gveDg2L2t2bS9pcnEuYy0xMzktXFx0aWYgKGt2bV94ZW5faGFzX2ludGVycnVwdCh2KSlcXG4tLVxcbmFyY2gveDg2L2t2bS9pcnEuYy0xNDItXFxuYXJjaC94ODYva3ZtL2lycS5jOjE0MzojaWZkZWYgQ09ORklHX0tWTV9JT0FQSUNcXG5hcmNoL3g4Ni9rdm0vaXJxLmMtMTQ0LVxcdGlmIChwaWNfaW5fa2VybmVsKHYtXFx1MDAzZWt2bSkpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vaXJxLmM9MTc3PXZvaWQgX19rdm1fbWlncmF0ZV90aW1lcnMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL2lycS5jLTE3OS1cXHRfX2t2bV9taWdyYXRlX2FwaWNfdGltZXIodmNwdSk7XFxuYXJjaC94ODYva3ZtL2lycS5jOjE4MDojaWZkZWYgQ09ORklHX0tWTV9JT0FQSUNcXG5hcmNoL3g4Ni9rdm0vaXJxLmMtMTgxLVxcdF9fa3ZtX21pZ3JhdGVfcGl0X3RpbWVyKHZjcHUpO1xcbi0tXFxuYXJjaC94ODYva3ZtL2lycS5jPTI0MT1pbnQga3ZtX2FyY2hfc2V0X2lycV9pbmF0b21pYyhzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFfcm91dGluZ19lbnRyeSAqZSxcXG4tLVxcbmFyY2gveDg2L2t2bS9pcnEuYy0yNDgtXFx0c3dpdGNoIChlLVxcdTAwM2V0eXBlKSB7XFxuYXJjaC94ODYva3ZtL2lycS5jOjI0OTojaWZkZWYgQ09ORklHX0tWTV9IWVBFUlZcXG5hcmNoL3g4Ni9rdm0vaXJxLmMtMjUwLVxcdGNhc2UgS1ZNX0lSUV9ST1VUSU5HX0hWX1NJTlQ6XFxuLS1cXG5hcmNoL3g4Ni9rdm0vaXJxLmMtMjY0LVxcbmFyY2gveDg2L2t2bS9pcnEuYzoyNjU6I2lmZGVmIENPTkZJR19LVk1fWEVOXFxuYXJjaC94ODYva3ZtL2lycS5jLTI2Ni1cXHRjYXNlIEtWTV9JUlFfUk9VVElOR19YRU5fRVZUQ0hOOlxcbi0tXFxuYXJjaC94ODYva3ZtL2lycS5jPTI5Nj1pbnQga3ZtX3NldF9yb3V0aW5nX2VudHJ5KHN0cnVjdCBrdm0gKmt2bSxcXG4tLVxcbmFyY2gveDg2L2t2bS9pcnEuYy0zMDQtXFx0c3dpdGNoICh1ZS1cXHUwMDNldHlwZSkge1xcbmFyY2gveDg2L2t2bS9pcnEuYzozMDU6I2lmZGVmIENPTkZJR19LVk1fSU9BUElDXFxuYXJjaC94ODYva3ZtL2lycS5jLTMwNi1cXHRjYXNlIEtWTV9JUlFfUk9VVElOR19JUlFDSElQOlxcbi0tXFxuYXJjaC94ODYva3ZtL2lycS5jLTMzOC1cXHRcXHRicmVhaztcXG5hcmNoL3g4Ni9rdm0vaXJxLmM6MzM5OiNpZmRlZiBDT05GSUdfS1ZNX0hZUEVSVlxcbmFyY2gveDg2L2t2bS9pcnEuYy0zNDAtXFx0Y2FzZSBLVk1fSVJRX1JPVVRJTkdfSFZfU0lOVDpcXG4tLVxcbmFyY2gveDg2L2t2bS9pcnEuYy0zNDUtI2VuZGlmXFxuYXJjaC94ODYva3ZtL2lycS5jOjM0NjojaWZkZWYgQ09ORklHX0tWTV9YRU5cXG5hcmNoL3g4Ni9rdm0vaXJxLmMtMzQ3LVxcdGNhc2UgS1ZNX0lSUV9ST1VUSU5HX1hFTl9FVlRDSE46XFxuLS1cXG5hcmNoL3g4Ni9rdm0vaXJxLmM9NDE2PXZvaWQga3ZtX2FyY2hfaXJxX3JvdXRpbmdfdXBkYXRlKHN0cnVjdCBrdm0gKmt2bSlcXG5hcmNoL3g4Ni9rdm0vaXJxLmMtNDE3LXtcXG5hcmNoL3g4Ni9rdm0vaXJxLmM6NDE4OiNpZmRlZiBDT05GSUdfS1ZNX0hZUEVSVlxcbmFyY2gveDg2L2t2bS9pcnEuYy00MTktXFx0a3ZtX2h2X2lycV9yb3V0aW5nX3VwZGF0ZShrdm0pO1xcbi0tXFxuYXJjaC94ODYva3ZtL2lycS5jPTU0MD12b2lkIGt2bV9hcmNoX3VwZGF0ZV9pcnFmZF9yb3V0aW5nKHN0cnVjdCBrdm1fa2VybmVsX2lycWZkICppcnFmZCxcXG4tLVxcbmFyY2gveDg2L2t2bS9pcnEuYy01NTUtXFxuYXJjaC94ODYva3ZtL2lycS5jOjU1NjojaWZkZWYgQ09ORklHX0tWTV9JT0FQSUNcXG5hcmNoL3g4Ni9rdm0vaXJxLmMtNTU3LSNkZWZpbmUgSU9BUElDX1JPVVRJTkdfRU5UUlkoaXJxKSBcXFxcXFxuLS1cXG5hcmNoL3g4Ni9rdm0vaXJxLmgtMjAtXFxuYXJjaC94ODYva3ZtL2lycS5oOjIxOiNpZmRlZiBDT05GSUdfS1ZNX0lPQVBJQ1xcbmFyY2gveDg2L2t2bS9pcnEuaC0yMi1cXG4tLVxcbmFyY2gveDg2L2t2bS9pcnEuaD03Nj1zdGF0aWMgaW5saW5lIGludCBpcnFjaGlwX2Z1bGwoc3RydWN0IGt2bSAqa3ZtKVxcbi0tXFxuYXJjaC94ODYva3ZtL2lycS5oLTgzLX1cXG5hcmNoL3g4Ni9rdm0vaXJxLmg6ODQ6I2Vsc2UgLyogQ09ORklHX0tWTV9JT0FQSUMgKi9cXG5hcmNoL3g4Ni9rdm0vaXJxLmgtODUtc3RhdGljIF9fYWx3YXlzX2lubGluZSBpbnQgaXJxY2hpcF9mdWxsKHN0cnVjdCBrdm0gKmt2bSlcXG4tLVxcbmFyY2gveDg2L2t2bS9pcnEuaD0xMjE9c3RhdGljIGlubGluZSB2b2lkIGt2bV93YXJuX29uX2xvc3RfaXJxKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gveDg2L2t2bS9pcnEuaC0xMzctXFx0ICovXFxuYXJjaC94ODYva3ZtL2lycS5oOjEzODpcXHRXQVJOX09OX09OQ0UoIXBpY19pbl9rZXJuZWwodmNwdS1cXHUwMDNla3ZtKSBcXHUwMDI2XFx1MDAyNiAhSVNfRU5BQkxFRChDT05GSUdfS1ZNX1hFTikpO1xcbmFyY2gveDg2L2t2bS9pcnEuaC0xMzktfVxcbi0tXFxuYXJjaC94ODYva3ZtL2t2bS1hc20tb2Zmc2V0cy5jPTEzPXN0YXRpYyB2b2lkIF9fdXNlZCBjb21tb24odm9pZClcXG5hcmNoL3g4Ni9rdm0va3ZtLWFzbS1vZmZzZXRzLmMtMTQte1xcbmFyY2gveDg2L2t2bS9rdm0tYXNtLW9mZnNldHMuYzoxNTpcXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfS1ZNX0FNRCkpIHtcXG5hcmNoL3g4Ni9rdm0va3ZtLWFzbS1vZmZzZXRzLmMtMTYtXFx0XFx0QkxBTksoKTtcXG4tLVxcbmFyY2gveDg2L2t2bS9rdm0tYXNtLW9mZnNldHMuYy0yNC1cXG5hcmNoL3g4Ni9rdm0va3ZtLWFzbS1vZmZzZXRzLmM6MjU6XFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0tWTV9JTlRFTCkpIHtcXG5hcmNoL3g4Ni9rdm0va3ZtLWFzbS1vZmZzZXRzLmMtMjYtXFx0XFx0QkxBTksoKTtcXG4tLVxcbmFyY2gveDg2L2t2bS9sYXBpYy5jPTE0MTA9c3RhdGljIGludCBfX2FwaWNfYWNjZXB0X2lycShzdHJ1Y3Qga3ZtX2xhcGljICphcGljLCBpbnQgZGVsaXZlcnlfbW9kZSxcXG4tLVxcbmFyY2gveDg2L2t2bS9sYXBpYy5jLTE0MzItXFxuYXJjaC94ODYva3ZtL2xhcGljLmM6MTQzMzojaWZkZWYgQ09ORklHX0tWTV9JT0FQSUNcXG5hcmNoL3g4Ni9rdm0vbGFwaWMuYy0xNDM0LVxcdFxcdGlmIChydGNfc3RhdHVzKSB7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vbGFwaWMuYz0xNTU1PXN0YXRpYyB2b2lkIGt2bV9pb2FwaWNfc2VuZF9lb2koc3RydWN0IGt2bV9sYXBpYyAqYXBpYywgaW50IHZlY3RvcilcXG4tLVxcbmFyY2gveDg2L2t2bS9sYXBpYy5jLTE1ODYtXFxuYXJjaC94ODYva3ZtL2xhcGljLmM6MTU4NzojaWZkZWYgQ09ORklHX0tWTV9JT0FQSUNcXG5hcmNoL3g4Ni9rdm0vbGFwaWMuYy0xNTg4LVxcdGlmIChhcGljX3Rlc3RfdmVjdG9yKHZlY3RvciwgYXBpYy1cXHUwMDNlcmVncyArIEFQSUNfVE1SKSlcXG4tLVxcbmFyY2gveDg2L2t2bS9sYXBpYy5jPTMzMTU9aW50IGt2bV9hcGljX3NldF9zdGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fbGFwaWNfc3RhdGUgKnMpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vbGFwaWMuYy0zMzQ4LVxcbmFyY2gveDg2L2t2bS9sYXBpYy5jOjMzNDk6I2lmZGVmIENPTkZJR19LVk1fSU9BUElDXFxuYXJjaC94ODYva3ZtL2xhcGljLmMtMzM1MC1cXHRpZiAoaW9hcGljX2luX2tlcm5lbCh2Y3B1LVxcdTAwM2Vrdm0pKVxcbi0tXFxuYXJjaC94ODYva3ZtL21tdS9tbXUuYz0xODE4PXN0YXRpYyB2b2lkIGt2bV9tbXVfY2hlY2tfc3B0ZXNfYXRfZnJlZShzdHJ1Y3Qga3ZtX21tdV9wYWdlICpzcClcXG5hcmNoL3g4Ni9rdm0vbW11L21tdS5jLTE4MTkte1xcbmFyY2gveDg2L2t2bS9tbXUvbW11LmM6MTgyMDojaWZkZWYgQ09ORklHX0tWTV9QUk9WRV9NTVVcXG5hcmNoL3g4Ni9rdm0vbW11L21tdS5jLTE4MjEtXFx0aW50IGk7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vbW11L21tdS5jPTUxMzU9dm9pZCBrdm1fYXJjaF9hc3luY19wYWdlX3JlYWR5KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9hc3luY19wZiAqd29yaylcXG4tLVxcbmFyY2gveDg2L2t2bS9tbXUvbW11LmMtNTE2NS1cXG5hcmNoL3g4Ni9rdm0vbW11L21tdS5jOjUxNjY6I2lmZGVmIENPTkZJR19LVk1fR1VFU1RfTUVNRkRcXG5hcmNoL3g4Ni9rdm0vbW11L21tdS5jLTUxNjctc3RhdGljIHZvaWQga3ZtX2Fzc2VydF9nbWVtX2ludmFsaWRhdGVfbG9ja19oZWxkKHN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKnNsb3QpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vbW11L21tdS5jPTY1Njc9aW50IG5vaW5saW5lIGt2bV9tbXVfcGFnZV9mYXVsdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGdwYV90IGNyMl9vcl9ncGEsIHU2NCBlcnJvcl9jb2RlLFxcbi0tXFxuYXJjaC94ODYva3ZtL21tdS9tbXUuYy02NTgzLVxcdCAqL1xcbmFyY2gveDg2L2t2bS9tbXUvbW11LmM6NjU4NDpcXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfS1ZNX1NXX1BST1RFQ1RFRF9WTSkgXFx1MDAyNlxcdTAwMjZcXG5hcmNoL3g4Ni9rdm0vbW11L21tdS5jLTY1ODUtXFx0ICAgICEoZXJyb3JfY29kZSBcXHUwMDI2IFBGRVJSX1JTVkRfTUFTSykgXFx1MDAyNlxcdTAwMjZcXG4tLVxcbmFyY2gveDg2L2t2bS9tbXUvbW11LmM9ODA5ND12b2lkIGt2bV9tbXVfcHJlX2Rlc3Ryb3lfdm0oc3RydWN0IGt2bSAqa3ZtKVxcbi0tXFxuYXJjaC94ODYva3ZtL21tdS9tbXUuYy04MDk5LVxcbmFyY2gveDg2L2t2bS9tbXUvbW11LmM6ODEwMDojaWZkZWYgQ09ORklHX0tWTV9HRU5FUklDX01FTU9SWV9BVFRSSUJVVEVTXFxuYXJjaC94ODYva3ZtL21tdS9tbXUuYy04MTAxLXN0YXRpYyBib29sIGh1Z2VwYWdlX3Rlc3RfbWl4ZWQoc3RydWN0IGt2bV9tZW1vcnlfc2xvdCAqc2xvdCwgZ2ZuX3QgZ2ZuLFxcbi0tXFxuYXJjaC94ODYva3ZtL21tdS9tbXVfaW50ZXJuYWwuaC0xMC1cXG5hcmNoL3g4Ni9rdm0vbW11L21tdV9pbnRlcm5hbC5oOjExOiNpZmRlZiBDT05GSUdfS1ZNX1BST1ZFX01NVVxcbmFyY2gveDg2L2t2bS9tbXUvbW11X2ludGVybmFsLmgtMTItI2RlZmluZSBLVk1fTU1VX1dBUk5fT04oeCkgV0FSTl9PTl9PTkNFKHgpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vbW11L3BhZ2VfdHJhY2suYz0yMz1zdGF0aWMgYm9vbCBrdm1fZXh0ZXJuYWxfd3JpdGVfdHJhY2tpbmdfZW5hYmxlZChzdHJ1Y3Qga3ZtICprdm0pXFxuYXJjaC94ODYva3ZtL21tdS9wYWdlX3RyYWNrLmMtMjQte1xcbmFyY2gveDg2L2t2bS9tbXUvcGFnZV90cmFjay5jOjI1OiNpZmRlZiBDT05GSUdfS1ZNX0VYVEVSTkFMX1dSSVRFX1RSQUNLSU5HXFxuYXJjaC94ODYva3ZtL21tdS9wYWdlX3RyYWNrLmMtMjYtXFx0LypcXG4tLVxcbmFyY2gveDg2L2t2bS9tbXUvcGFnZV90cmFjay5jPTE0Nj1ib29sIGt2bV9nZm5faXNfd3JpdGVfdHJhY2tlZChzdHJ1Y3Qga3ZtICprdm0sXFxuLS1cXG5hcmNoL3g4Ni9rdm0vbW11L3BhZ2VfdHJhY2suYy0xNzAtXFxuYXJjaC94ODYva3ZtL21tdS9wYWdlX3RyYWNrLmM6MTcxOiNpZmRlZiBDT05GSUdfS1ZNX0VYVEVSTkFMX1dSSVRFX1RSQUNLSU5HXFxuYXJjaC94ODYva3ZtL21tdS9wYWdlX3RyYWNrLmMtMTcyLXZvaWQga3ZtX3BhZ2VfdHJhY2tfY2xlYW51cChzdHJ1Y3Qga3ZtICprdm0pXFxuLS1cXG5hcmNoL3g4Ni9rdm0vbW11L3BhZ2VfdHJhY2suaD0yMz1ib29sIGt2bV9nZm5faXNfd3JpdGVfdHJhY2tlZChzdHJ1Y3Qga3ZtICprdm0sXFxuLS1cXG5hcmNoL3g4Ni9rdm0vbW11L3BhZ2VfdHJhY2suaC0yNS1cXG5hcmNoL3g4Ni9rdm0vbW11L3BhZ2VfdHJhY2suaDoyNjojaWZkZWYgQ09ORklHX0tWTV9FWFRFUk5BTF9XUklURV9UUkFDS0lOR1xcbmFyY2gveDg2L2t2bS9tbXUvcGFnZV90cmFjay5oLTI3LWludCBrdm1fcGFnZV90cmFja19pbml0KHN0cnVjdCBrdm0gKmt2bSk7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vbW11L3BhZ2VfdHJhY2suaD00Nj1zdGF0aWMgaW5saW5lIGJvb2wga3ZtX3BhZ2VfdHJhY2tfaGFzX2V4dGVybmFsX3VzZXIoc3RydWN0IGt2bSAqa3ZtKSB7IHJldHVybiBmYWxzZTsgfVxcbmFyY2gveDg2L2t2bS9tbXUvcGFnZV90cmFjay5oLTQ3LVxcbmFyY2gveDg2L2t2bS9tbXUvcGFnZV90cmFjay5oOjQ4OiNlbmRpZiAvKiBDT05GSUdfS1ZNX0VYVEVSTkFMX1dSSVRFX1RSQUNLSU5HICovXFxuYXJjaC94ODYva3ZtL21tdS9wYWdlX3RyYWNrLmgtNDktXFxuLS1cXG5hcmNoL3g4Ni9rdm0vbW11L3RkcF9tbXUuYz0zMz12b2lkIGt2bV9tbXVfdW5pbml0X3RkcF9tbXUoc3RydWN0IGt2bSAqa3ZtKVxcbi0tXFxuYXJjaC94ODYva3ZtL21tdS90ZHBfbW11LmMtNDItXFxuYXJjaC94ODYva3ZtL21tdS90ZHBfbW11LmM6NDM6I2lmZGVmIENPTkZJR19LVk1fUFJPVkVfTU1VXFxuYXJjaC94ODYva3ZtL21tdS90ZHBfbW11LmMtNDQtXFx0S1ZNX01NVV9XQVJOX09OKGF0b21pYzY0X3JlYWQoXFx1MDAyNmt2bS1cXHUwMDNlYXJjaC50ZHBfbW11X3BhZ2VzKSk7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vbW11L3RkcF9tbXUuYz0zMzM9c3RhdGljIHZvaWQgdGRwX2FjY291bnRfbW11X3BhZ2Uoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX21tdV9wYWdlICpzcClcXG4tLVxcbmFyY2gveDg2L2t2bS9tbXUvdGRwX21tdS5jLTMzNS1cXHRrdm1fYWNjb3VudF9wZ3RhYmxlX3BhZ2VzKCh2b2lkICopc3AtXFx1MDAzZXNwdCwgKzEpO1xcbmFyY2gveDg2L2t2bS9tbXUvdGRwX21tdS5jOjMzNjojaWZkZWYgQ09ORklHX0tWTV9QUk9WRV9NTVVcXG5hcmNoL3g4Ni9rdm0vbW11L3RkcF9tbXUuYy0zMzctXFx0YXRvbWljNjRfaW5jKFxcdTAwMjZrdm0tXFx1MDAzZWFyY2gudGRwX21tdV9wYWdlcyk7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vbW11L3RkcF9tbXUuYz0zNDE9c3RhdGljIHZvaWQgdGRwX3VuYWNjb3VudF9tbXVfcGFnZShzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fbW11X3BhZ2UgKnNwKVxcbi0tXFxuYXJjaC94ODYva3ZtL21tdS90ZHBfbW11LmMtMzQzLVxcdGt2bV9hY2NvdW50X3BndGFibGVfcGFnZXMoKHZvaWQgKilzcC1cXHUwMDNlc3B0LCAtMSk7XFxuYXJjaC94ODYva3ZtL21tdS90ZHBfbW11LmM6MzQ0OiNpZmRlZiBDT05GSUdfS1ZNX1BST1ZFX01NVVxcbmFyY2gveDg2L2t2bS9tbXUvdGRwX21tdS5jLTM0NS1cXHRhdG9taWM2NF9kZWMoXFx1MDAyNmt2bS1cXHUwMDNlYXJjaC50ZHBfbW11X3BhZ2VzKTtcXG4tLVxcbmFyY2gveDg2L2t2bS9tbXUvdGRwX21tdS5jPTgyOT1zdGF0aWMgdm9pZCB0ZHBfbW11X3phcF9yb290KHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9tbXVfcGFnZSAqcm9vdCxcXG4tLVxcbmFyY2gveDg2L2t2bS9tbXUvdGRwX21tdS5jLTg2NS1cXHQgKi9cXG5hcmNoL3g4Ni9rdm0vbW11L3RkcF9tbXUuYzo4NjY6XFx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19LVk1fUFJPVkVfTU1VKSkge1xcbmFyY2gveDg2L2t2bS9tbXUvdGRwX21tdS5jLTg2Ny1cXHRcXHRfX3RkcF9tbXVfemFwX3Jvb3Qoa3ZtLCByb290LCBzaGFyZWQsIFBHX0xFVkVMXzRLKTtcXG4tLVxcbmFyY2gveDg2L2t2bS9tc3JzLmM9MjU0PXN0YXRpYyBjb25zdCB1MzIgZW11bGF0ZWRfbXNyc19hbGxbXSA9IHtcXG4tLVxcbmFyY2gveDg2L2t2bS9tc3JzLmMtMjU3LVxcbmFyY2gveDg2L2t2bS9tc3JzLmM6MjU4OiNpZmRlZiBDT05GSUdfS1ZNX0hZUEVSVlxcbmFyY2gveDg2L2t2bS9tc3JzLmMtMjU5LVxcdEhWX1g2NF9NU1JfR1VFU1RfT1NfSUQsIEhWX1g2NF9NU1JfSFlQRVJDQUxMLFxcbi0tXFxuYXJjaC94ODYva3ZtL21zcnMuYz0xNDQyPWludCBrdm1fc2V0X21zcl9jb21tb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3QgbXNyX2RhdGEgKm1zcl9pbmZvKVxcbi0tXFxuYXJjaC94ODYva3ZtL21zcnMuYy0xNjIyLVxcdGNhc2UgTVNSX0lBMzJfU01CQVNFOlxcbmFyY2gveDg2L2t2bS9tc3JzLmM6MTYyMzpcXHRcXHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX0tWTV9TTU0pIHx8ICFtc3JfaW5mby1cXHUwMDNlaG9zdF9pbml0aWF0ZWQpXFxuYXJjaC94ODYva3ZtL21zcnMuYy0xNjI0LVxcdFxcdFxcdHJldHVybiAxO1xcbi0tXFxuYXJjaC94ODYva3ZtL21zcnMuYy0xNzcwLVxcdFxcdGJyZWFrO1xcbmFyY2gveDg2L2t2bS9tc3JzLmM6MTc3MTojaWZkZWYgQ09ORklHX0tWTV9IWVBFUlZcXG5hcmNoL3g4Ni9rdm0vbXNycy5jLTE3NzItXFx0Y2FzZSBIVl9YNjRfTVNSX0dVRVNUX09TX0lEIC4uLiBIVl9YNjRfTVNSX1NJTlQxNTpcXG4tLVxcbmFyY2gveDg2L2t2bS9tc3JzLmM9MTg5OT1pbnQga3ZtX2dldF9tc3JfY29tbW9uKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IG1zcl9kYXRhICptc3JfaW5mbylcXG4tLVxcbmFyY2gveDg2L2t2bS9tc3JzLmMtMjAxOC1cXHRjYXNlIE1TUl9JQTMyX1NNQkFTRTpcXG5hcmNoL3g4Ni9rdm0vbXNycy5jOjIwMTk6XFx0XFx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19LVk1fU01NKSB8fCAhbXNyX2luZm8tXFx1MDAzZWhvc3RfaW5pdGlhdGVkKVxcbmFyY2gveDg2L2t2bS9tc3JzLmMtMjAyMC1cXHRcXHRcXHRyZXR1cm4gMTtcXG4tLVxcbmFyY2gveDg2L2t2bS9tc3JzLmMtMjEyMS1cXHRcXHRicmVhaztcXG5hcmNoL3g4Ni9rdm0vbXNycy5jOjIxMjI6I2lmZGVmIENPTkZJR19LVk1fSFlQRVJWXFxuYXJjaC94ODYva3ZtL21zcnMuYy0yMTIzLVxcdGNhc2UgSFZfWDY0X01TUl9HVUVTVF9PU19JRCAuLi4gSFZfWDY0X01TUl9TSU5UMTU6XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc21tLmgtNi1cXG5hcmNoL3g4Ni9rdm0vc21tLmg6NzojaWZkZWYgQ09ORklHX0tWTV9TTU1cXG5hcmNoL3g4Ni9rdm0vc21tLmgtOC1cXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vaHlwZXJ2LmgtMTMtXFxuYXJjaC94ODYva3ZtL3N2bS9oeXBlcnYuaDoxNDojaWZkZWYgQ09ORklHX0tWTV9IWVBFUlZcXG5hcmNoL3g4Ni9rdm0vc3ZtL2h5cGVydi5oLTE1LXN0YXRpYyBpbmxpbmUgdm9pZCBuZXN0ZWRfc3ZtX2h2X3VwZGF0ZV92bV92cF9pZHMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9oeXBlcnYuaD01MT12b2lkIHN2bV9odl9pbmplY3Rfc3ludGhldGljX3ZtZXhpdF9wb3N0X3RsYl9mbHVzaChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xcbmFyY2gveDg2L2t2bS9zdm0vaHlwZXJ2Lmg6NTI6I2Vsc2UgLyogQ09ORklHX0tWTV9IWVBFUlYgKi9cXG5hcmNoL3g4Ni9rdm0vc3ZtL2h5cGVydi5oLTUzLXN0YXRpYyBpbmxpbmUgdm9pZCBuZXN0ZWRfc3ZtX2h2X3VwZGF0ZV92bV92cF9pZHMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KSB7fVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9oeXBlcnYuaD01OD1zdGF0aWMgaW5saW5lIHZvaWQgc3ZtX2h2X2luamVjdF9zeW50aGV0aWNfdm1leGl0X3Bvc3RfdGxiX2ZsdXNoKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkge31cXG5hcmNoL3g4Ni9rdm0vc3ZtL2h5cGVydi5oOjU5OiNlbmRpZiAvKiBDT05GSUdfS1ZNX0hZUEVSViAqL1xcbmFyY2gveDg2L2t2bS9zdm0vaHlwZXJ2LmgtNjAtXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jPTI5NT1zdGF0aWMgYm9vbCBuZXN0ZWRfc3ZtX21lcmdlX21zcnBtKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMzA5LVxcdCAqL1xcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MzEwOiNpZmRlZiBDT05GSUdfS1ZNX0hZUEVSVlxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMzExLVxcdGlmICghc3ZtLVxcdTAwM2VuZXN0ZWQuZm9yY2VfbXNyX2JpdG1hcF9yZWNhbGMpIHtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMzM4LVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MzM5OiNpZmRlZiBDT05GSUdfS1ZNX0hZUEVSVlxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMzQwLXNldF9tc3JwbV9iYXNlX3BhOlxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYz01MTM9dm9pZCBfX25lc3RlZF9jb3B5X3ZtY2JfY29udHJvbF90b19jYWNoZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTU2MC1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjU2MTojaWZkZWYgQ09ORklHX0tWTV9IWVBFUlZcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTU2Mi1cXHQvKiBIeXBlci1WIGV4dGVuc2lvbnMgKEVubGlnaHRlbmVkIFZNQ0IpICovXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jPTE3MjE9c3RhdGljIGludCBzdm1fY2hlY2tfbmVzdGVkX2V2ZW50cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE3NjItXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxNzYzOiNpZmRlZiBDT05GSUdfS1ZNX1NNTVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTc2NC1cXHRpZiAodmNwdS1cXHUwMDNlYXJjaC5zbWlfcGVuZGluZyBcXHUwMDI2XFx1MDAyNiAhc3ZtX3NtaV9ibG9ja2VkKHZjcHUpKSB7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jPTMwODY9dm9pZCBfX2luaXQgc2V2X2hhcmR3YXJlX3NldHVwKHZvaWQpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTMxMTYtXFx0ICovXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYzozMTE3OlxcdGlmIChJU19CVUlMVElOKENPTkZJR19LVk1fQU1EKSBcXHUwMDI2XFx1MDAyNiBzZXZfbW9kdWxlX2luaXQoKSlcXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTMxMTgtXFx0XFx0Z290byBvdXQ7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jPTIxNjU9c3RhdGljIGludCBzaHV0ZG93bl9pbnRlcmNlcHRpb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy0yMTgzLVxcdFxcdGNsZWFyX3BhZ2Uoc3ZtLVxcdTAwM2V2bWNiKTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jOjIxODQ6I2lmZGVmIENPTkZJR19LVk1fU01NXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy0yMTg1LVxcdFxcdGlmIChpc19zbW0odmNwdSkpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jPTMzNDc9c3RhdGljIGludCAoKmNvbnN0IHN2bV9leGl0X2hhbmRsZXJzW10pKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkgPSB7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTM0MjAtXFx0W1NWTV9FWElUX0FWSUNfVU5BQ0NFTEVSQVRFRF9BQ0NFU1NdXFx0PSBhdmljX3VuYWNjZWxlcmF0ZWRfYWNjZXNzX2ludGVyY2VwdGlvbixcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jOjM0MjE6I2lmZGVmIENPTkZJR19LVk1fQU1EX1NFVlxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtMzQyMi1cXHRbU1ZNX0VYSVRfVk1HRVhJVF1cXHRcXHRcXHQ9IHNldl9oYW5kbGVfdm1nZXhpdCxcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM9MzYzNj1pbnQgc3ZtX2ludm9rZV9leGl0X2hhbmRsZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgX19leGl0X2NvZGUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTM2NjItXFx0XFx0cmV0dXJuIG5wZl9pbnRlcmNlcHRpb24odmNwdSk7XFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYzozNjYzOiNpZmRlZiBDT05GSUdfS1ZNX0FNRF9TRVZcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTM2NjQtXFx0ZWxzZSBpZiAoZXhpdF9jb2RlID09IFNWTV9FWElUX1ZNR0VYSVQpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jPTQ3MDQ9c3RhdGljIGJvb2wgc3ZtX2hhc19lbXVsYXRlZF9tc3Ioc3RydWN0IGt2bSAqa3ZtLCB1MzIgaW5kZXgpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTQ3MTAtXFx0Y2FzZSBNU1JfSUEzMl9TTUJBU0U6XFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYzo0NzExOlxcdFxcdGlmICghSVNfRU5BQkxFRChDT05GSUdfS1ZNX1NNTSkpXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy00NzEyLVxcdFxcdFxcdHJldHVybiBmYWxzZTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTQ3MTMtXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYzo0NzE0OiNpZmRlZiBDT05GSUdfS1ZNX0FNRF9TRVZcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTQ3MTUtXFx0XFx0LypcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM9NDk3OT1zdGF0aWMgdm9pZCBzdm1fc2V0dXBfbWNlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNDk4NC1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jOjQ5ODU6I2lmZGVmIENPTkZJR19LVk1fU01NXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy00OTg2LWJvb2wgc3ZtX3NtaV9ibG9ja2VkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM9NTMyOD1zdHJ1Y3Qga3ZtX3g4Nl9vcHMgc3ZtX3g4Nl9vcHMgX19pbml0ZGF0YSA9IHtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNTQzNS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jOjU0MzY6I2lmZGVmIENPTkZJR19LVk1fU01NXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy01NDM3LVxcdC5zbWlfYWxsb3dlZCA9IHN2bV9zbWlfYWxsb3dlZCxcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNTQ0Mi1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jOjU0NDM6I2lmZGVmIENPTkZJR19LVk1fQU1EX1NFVlxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNTQ0NC1cXHQudmNwdV9uZWVkc19pbml0aWFsaXphdGlvbiA9IHNldl92Y3B1X25lZWRzX2luaXRpYWxpemF0aW9uLFxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uaD02Nj1lbnVtIHtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmgtOTctXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uaDo5ODojaWZkZWYgQ09ORklHX0tWTV9BTURfU0VWXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uaC05OS1zdHJ1Y3Qga3ZtX3Nldl9pbmZvIHtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmg9MTI3PXN0cnVjdCBrdm1fc3ZtIHtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmgtMTM1LVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmg6MTM2OiNpZmRlZiBDT05GSUdfS1ZNX0FNRF9TRVZcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oLTEzNy1cXHRzdHJ1Y3Qga3ZtX3Nldl9pbmZvIHNldl9pbmZvO1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uaD0xODA9c3RydWN0IHZtY2JfY3RybF9hcmVhX2NhY2hlZCB7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oLTIwNS1cXHR1bmlvbiB7XFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uaDoyMDY6I2lmIElTX0VOQUJMRUQoQ09ORklHX0hZUEVSVikgfHwgSVNfRU5BQkxFRChDT05GSUdfS1ZNX0hZUEVSVilcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oLTIwNy1cXHRcXHRzdHJ1Y3QgaHZfdm1jYl9lbmxpZ2h0ZW5tZW50cyBodl9lbmxpZ2h0ZW5tZW50cztcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmg9MzkwPXN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgc3RydWN0IGt2bV9zdm0gKnRvX2t2bV9zdm0oc3RydWN0IGt2bSAqa3ZtKVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uaC0zOTQtXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uaDozOTU6I2lmZGVmIENPTkZJR19LVk1fQU1EX1NFVlxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmgtMzk2LXN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgc3RydWN0IGt2bV9zZXZfaW5mbyAqdG9fa3ZtX3Nldl9pbmZvKHN0cnVjdCBrdm0gKmt2bSlcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmg9OTgwPXZvaWQgc2V2X2VzX3VubWFwX2doY2Ioc3RydWN0IHZjcHVfc3ZtICpzdm0pO1xcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmgtOTgxLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmg6OTgyOiNpZmRlZiBDT05GSUdfS1ZNX0FNRF9TRVZcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oLTk4My1ib29sIHNldl92Y3B1X25lZWRzX2luaXRpYWxpemF0aW9uKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3ZtZW50ZXIuUz0yMTA9U1lNX0ZVTkNfRU5EKF9fc3ZtX3ZjcHVfcnVuKVxcbmFyY2gveDg2L2t2bS9zdm0vdm1lbnRlci5TLTIxMS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3ZtZW50ZXIuUzoyMTI6I2lmZGVmIENPTkZJR19LVk1fQU1EX1NFVlxcbmFyY2gveDg2L2t2bS9zdm0vdm1lbnRlci5TLTIxMy1cXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vdm1lbnRlci5TPTI4Mz1TWU1fRlVOQ19FTkQoX19zdm1fc2V2X2VzX3ZjcHVfcnVuKVxcbmFyY2gveDg2L2t2bS9zdm0vdm1lbnRlci5TOjI4NDojZW5kaWYgLyogQ09ORklHX0tWTV9BTURfU0VWICovXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdHJhY2UuaD0yMjg9VFJBQ0VfRVZFTlQoa3ZtX2NwdWlkLFxcbi0tXFxuYXJjaC94ODYva3ZtL3RyYWNlLmgtMjcyLVxcbmFyY2gveDg2L2t2bS90cmFjZS5oOjI3MzojaWZkZWYgQ09ORklHX0tWTV9JT0FQSUNcXG5hcmNoL3g4Ni9rdm0vdHJhY2UuaC0yNzQtVFJBQ0VfRVZFTlQoa3ZtX2lvYXBpY19zZXRfaXJxLFxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC9jb21tb24uaD0zMz1zdHJ1Y3QgdmNwdV92dCB7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L2NvbW1vbi5oLTU3LVxcbmFyY2gveDg2L2t2bS92bXgvY29tbW9uLmg6NTg6I2lmZGVmIENPTkZJR19LVk1fSU5URUxfVERYXFxuYXJjaC94ODYva3ZtL3ZteC9jb21tb24uaC01OS1cXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvaHlwZXJ2Lmg9MTI9ZW51bSBuZXN0ZWRfZXZtcHRybGRfc3RhdHVzIHtcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvaHlwZXJ2LmgtMTgtXFxuYXJjaC94ODYva3ZtL3ZteC9oeXBlcnYuaDoxOTojaWZkZWYgQ09ORklHX0tWTV9IWVBFUlZcXG5hcmNoL3g4Ni9rdm0vdm14L2h5cGVydi5oLTIwLXN0YXRpYyBpbmxpbmUgYm9vbCBldm1wdHJfaXNfdmFsaWQodTY0IGV2bXB0cilcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jLTEyLVxcbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jOjEzOiNpZmRlZiBDT05GSUdfS1ZNX0lOVEVMX1REWFxcbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jLTE0LXN0YXRpY19hc3NlcnQob2Zmc2V0b2Yoc3RydWN0IHZjcHVfdm14LCB2dCkgPT0gb2Zmc2V0b2Yoc3RydWN0IHZjcHVfdGR4LCB2dCkpO1xcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmM9MjE4PXN0YXRpYyBpbnQgdnRfY29tcGxldGVfZW11bGF0ZWRfbXNyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgaW50IGVycilcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jLTIyNS1cXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYzoyMjY6I2lmZGVmIENPTkZJR19LVk1fU01NXFxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmMtMjI3LXN0YXRpYyBpbnQgdnRfc21pX2FsbG93ZWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBib29sIGZvcl9pbmplY3Rpb24pXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYz04NjM9c3RhdGljIGludCB2dF9nbWVtX21heF9tYXBwaW5nX2xldmVsKHN0cnVjdCBrdm0gKmt2bSwga3ZtX3Bmbl90IHBmbixcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jLTg3My0jZGVmaW5lIHZ0X29wX3RkeF9vbmx5KG5hbWUpIHZ0XyMjbmFtZVxcbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jOjg3NDojZWxzZSAvKiBDT05GSUdfS1ZNX0lOVEVMX1REWCAqL1xcbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jLTg3NS0jZGVmaW5lIHZ0X29wKG5hbWUpIHZteF8jI25hbWVcXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYy04NzYtI2RlZmluZSB2dF9vcF90ZHhfb25seShuYW1lKSBOVUxMXFxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmM6ODc3OiNlbmRpZiAvKiBDT05GSUdfS1ZNX0lOVEVMX1REWCAqL1xcbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jLTg3OC1cXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jPTg4OD1zdHJ1Y3Qga3ZtX3g4Nl9vcHMgdnRfeDg2X29wcyBfX2luaXRkYXRhID0ge1xcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmMtMTAxNi1cXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYzoxMDE3OiNpZmRlZiBDT05GSUdfS1ZNX1NNTVxcbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jLTEwMTgtXFx0LnNtaV9hbGxvd2VkID0gdnRfb3Aoc21pX2FsbG93ZWQpLFxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYz0yMzQ9c3RhdGljIGlubGluZSB2b2lkIG5lc3RlZF9yZWxlYXNlX2V2bWNzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jLTIzNS17XFxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYzoyMzY6I2lmZGVmIENPTkZJR19LVk1fSFlQRVJWXFxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy0yMzctXFx0c3RydWN0IGt2bV92Y3B1X2h2ICpodl92Y3B1ID0gdG9faHZfdmNwdSh2Y3B1KTtcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmM9MjUyPXN0YXRpYyBib29sIG5lc3RlZF9ldm1jc19oYW5kbGVfdm1jbGVhcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGdwYV90IHZtcHRyKVxcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmMtMjUzLXtcXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jOjI1NDojaWZkZWYgQ09ORklHX0tWTV9IWVBFUlZcXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jLTI1NS1cXHRzdHJ1Y3QgdmNwdV92bXggKnZteCA9IHRvX3ZteCh2Y3B1KTtcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmM9MTc1ND1zdGF0aWMgdm9pZCBjb3B5X2VubGlnaHRlbmVkX3RvX3ZtY3MxMihzdHJ1Y3QgdmNwdV92bXggKnZteCwgdTMyIGh2X2NsZWFuX2ZpZWxkcylcXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jLTE3NTUte1xcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmM6MTc1NjojaWZkZWYgQ09ORklHX0tWTV9IWVBFUlZcXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jLTE3NTctXFx0c3RydWN0IHZtY3MxMiAqdm1jczEyID0gdm14LVxcdTAwM2VuZXN0ZWQuY2FjaGVkX3ZtY3MxMjtcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmMtMTk5Ni1cXHRyZXR1cm47XFxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYzoxOTk3OiNlbHNlIC8qIENPTkZJR19LVk1fSFlQRVJWICovXFxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy0xOTk4LVxcdEtWTV9CVUdfT04oMSwgdm14LVxcdTAwM2V2Y3B1Lmt2bSk7XFxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYzoxOTk5OiNlbmRpZiAvKiBDT05GSUdfS1ZNX0hZUEVSViAqL1xcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmMtMjAwMC19XFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jPTIwMDI9c3RhdGljIHZvaWQgY29weV92bWNzMTJfdG9fZW5saWdodGVuZWQoc3RydWN0IHZjcHVfdm14ICp2bXgpXFxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy0yMDAzLXtcXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jOjIwMDQ6I2lmZGVmIENPTkZJR19LVk1fSFlQRVJWXFxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy0yMDA1LVxcdHN0cnVjdCB2bWNzMTIgKnZtY3MxMiA9IHZteC1cXHUwMDNlbmVzdGVkLmNhY2hlZF92bWNzMTI7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jLTIxNzQtXFx0cmV0dXJuO1xcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmM6MjE3NTojZWxzZSAvKiBDT05GSUdfS1ZNX0hZUEVSViAqL1xcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmMtMjE3Ni1cXHRLVk1fQlVHX09OKDEsIHZteC1cXHUwMDNldmNwdS5rdm0pO1xcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmM6MjE3NzojZW5kaWYgLyogQ09ORklHX0tWTV9IWVBFUlYgKi9cXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jLTIxNzgtfVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYz0yMTg0PXN0YXRpYyBlbnVtIG5lc3RlZF9ldm1wdHJsZF9zdGF0dXMgbmVzdGVkX3ZteF9oYW5kbGVfZW5saWdodGVuZWRfdm1wdHJsZChcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmMtMjE4Ni17XFxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYzoyMTg3OiNpZmRlZiBDT05GSUdfS1ZNX0hZUEVSVlxcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmMtMjE4OC1cXHRzdHJ1Y3QgdmNwdV92bXggKnZteCA9IHRvX3ZteCh2Y3B1KTtcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmM9MzEyNz1zdGF0aWMgaW50IG5lc3RlZF92bXhfY2hlY2tfY29udHJvbHMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy0zMTM0LVxcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmM6MzEzNTojaWZkZWYgQ09ORklHX0tWTV9IWVBFUlZcXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jLTMxMzYtXFx0aWYgKGd1ZXN0X2NwdV9jYXBfaGFzX2V2bWNzKHZjcHUpKVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYz0zMzExPXN0YXRpYyBpbnQgbmVzdGVkX3ZteF9jaGVja19ndWVzdF9zdGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jLTM0MTEtXFxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYzozNDEyOiNpZmRlZiBDT05GSUdfS1ZNX0hZUEVSVlxcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmMtMzQxMy1zdGF0aWMgYm9vbCBuZXN0ZWRfZ2V0X2V2bWNzX3BhZ2Uoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYz0zNTMwPXN0YXRpYyBib29sIHZteF9nZXRfbmVzdGVkX3N0YXRlX3BhZ2VzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jLTM1MzEte1xcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwNzowNTowNC4xODM5NDQ4NzRaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NjIwMTc1MjY5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBLVk0gTU1VIFBhZ2UgTGltaXQgQWRqdXN0bWVudCoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzIGNvbW1pdC4gTXkgaW5pdGlhbCBpbXByZXNzaW9uIGlzIHRoYXQgaXQncyBhZGRyZXNzaW5nIGEgc3VidGxlIGJ1dCBwb3RlbnRpYWxseSBpbXBhY3RmdWwgYnVnIHdpdGhpbiBLVk0ncyBNTVUgcGFnZSBsaW1pdCBtYW5hZ2VtZW50LCBzcGVjaWZpY2FsbHkgZm9yIHg4Ni4gTGV0J3Mgc3RhcnQgd2l0aCB0aGUgZGlmZiBpdHNlbGYuIEl0IGxvb2tzIGxpa2Ugd2UncmUgY2hhbmdpbmcgaG93IGBnb2FsX25yX21tdV9wYWdlc2AgaXMgYXNzaWduZWQgd2l0aGluIGBrdm1fbW11X2NoYW5nZV9tbXVfcGFnZXNgLiBUaGUgb3JpZ2luYWwgYXNzaWdubWVudCwgYGdvYWxfbnJfbW11X3BhZ2VzID0ga3ZtLVx1MDAzZXN0YXQubW11X3NoYWRvd19wYWdlcztgLCBpcyBiZWluZyByZXBsYWNlZCB3aXRoIGBnb2FsX25yX21tdV9wYWdlcyA9IG1heChrdm0tXHUwMDNlc3RhdC5tbXVfc2hhZG93X3BhZ2VzLCBnb2FsX25yX21tdV9wYWdlcyk7YC5cblxuTXkgbWluZCBzdGFydHMgdG8gd29yayB0aHJvdWdoIGEgc2NlbmFyaW8gdG8gdW5kZXJzdGFuZCB0aGUgcG90ZW50aWFsIGlzc3VlLiBTdXBwb3NlIHdlJ3JlIHRyeWluZyB0byAqcmVkdWNlKiB0aGUgbnVtYmVyIG9mIE1NVSBzaGFkb3cgcGFnZXMuIGBrdm1fbW11X3phcF9vbGRlc3RfbW11X3BhZ2VzYCBpcyBjYWxsZWQgdG8gZnJlZSB1cCBzb21lIHBhZ2VzIHRvIGdldCBkb3duIHRvIGBnb2FsX25yX21tdV9wYWdlc2AuIE5vdywgd2hhdCBpZiB0aGUgemFwcGluZyBvcGVyYXRpb24gaXNuJ3QgcGVyZmVjdD8gSXQgbWlnaHQgZW5kIHVwIHphcHBpbmcgKm1vcmUqIHBhZ2VzIHRoYW4gc3RyaWN0bHkgcmVxdWVzdGVkLiBUaGlzIGNhdXNlcyBga3ZtLVx1MDAzZXN0YXQubW11X3NoYWRvd19wYWdlc2AgdG8gZHJvcC4gVGhlIHByZXZpb3VzIGNvZGUgdGhlbiAqcmVhc3NpZ25zKiBgZ29hbF9ucl9tbXVfcGFnZXNgIHRvIHRoaXMgcG90ZW50aWFsbHkgcmVkdWNlZCB2YWx1ZSBvZiBgbW11X3NoYWRvd19wYWdlc2AsIGVmZmVjdGl2ZWx5ICpsb3dlcmluZyB0aGUgcmVxdWVzdGVkIGdvYWwqLiBUaGlzIGlzIHdoZXJlIHRoZSBmaXggY29tZXMgaW4uIFdpdGggdGhlIGBtYXgoKWAgYXNzaWdubWVudCwgd2UgZW5zdXJlIHRoYXQgYGdvYWxfbnJfbW11X3BhZ2VzYCByZW1haW5zIGF0IHRoZSBpbnRlbmRlZCBsb3dlciBib3VuZCwgcmF0aGVyIHRoYW4gcG90ZW50aWFsbHkgYmVpbmcgYWNjaWRlbnRhbGx5IHJlZHVjZWQgZnVydGhlci5cblxuSSBuZWVkIHRvIGNvbmZpcm0gdGhpczogaXMgdGhpcyBjb2RlIHBhdGggYWN0dWFsbHkgcmVhY2hhYmxlPyBJIHNlZSBga3ZtX21tdV9jaGFuZ2VfbW11X3BhZ2VzYCBpcyBpbmRlZWQgZXhwb3NlZCB2aWEgdGhlIGBLVk1fU0VUX05SX01NVV9QQUdFU2AgaW9jdGwsIGFuZCBhbHNvIHZpYSBtZW1vcnkgcmVnaW9uIHVwZGF0ZXMuIFRoaXMgaXMgZ29vZDsgdGhhdCBtYWtlcyBpdCBlYXNpbHkgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlLCB3aGljaCBpcyBpbXBvcnRhbnQgZm9yIHRlc3RpbmcuIEZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLCB0aGlzIHZ1bG5lcmFiaWxpdHkgaXMgaW50ZXJlc3RpbmcgYmVjYXVzZSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgYW5kIGZ1enppbmcgYXJlIGluIHZlcnkgY2xvc2UgcHJveGltaXR5LiBJJ2xsIG5lZWQgdG8gY2hlY2sgaWYgc3l6a2FsbGVyIGlzIGFscmVhZHkgdGVzdGluZyB0aGlzIGZ1bmN0aW9uYWxpdHkuXG5cbk5vdywgbGV0J3MgY2hlY2sgc29tZSBzdXBwb3J0aW5nIGluZm9ybWF0aW9uLiBMZXQncyBzZWUgaWYgdGhpcyBmaXggaXMgd2l0aGluIHRoZSBjcml0aWNhbCBmb2N1cyBzeW1ib2xzLCB3aGljaCBpcyBga3ZtX21tdV9jaGFuZ2VfbW11X3BhZ2VzYCBhbmQgaXRzIGlvY3RsIGhhbmRsZXIsIGBrdm1fdm1faW9jdGxfc2V0X25yX21tdV9wYWdlc2AuIFdlJ2xsIGFsc28gY2hlY2sgdGhlIGBFbmFibGVDb25maWdzYCwgd2hpY2ggd2lsbCBjb25maXJtIHRoYXQgd2UgcmVxdWlyZSBLVk0sIGFuZCBhbHNvIGVpdGhlciBLVk1fSU5URUwgb3IgS1ZNX0FNRCB0byBidWlsZCB0aGlzLiBJJ2xsIHRha2UgYSBxdWljayBsb29rIGF0IHRoZSBLY29uZmlnIGRlZmluaXRpb25zIG9mIHRoZSBLVk0gb3B0aW9ucyB0byBtYWtlIHN1cmUgbXkgdW5kZXJzdGFuZGluZyBpcyBjb21wbGV0ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAzOTEsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDc6MDU6MTAuMzg1NzAwNTA4WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTA1OTY3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgS1ZNJFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9rdm1cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYva3ZtL0tjb25maWc9MjA9Y29uZmlnIEtWTV9YODZcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTUxLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjUyOmNvbmZpZyBLVk1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy01My1cXHR0cmlzdGF0ZSBcXFwiS2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwNzowNToxMC40MzQ3NjMwMzhaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjgwNDE2MzkxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqQ2hlY2tpbmcgS1ZNIENvbmZpZ3VyYXRpb24gaW4gRGV0YWlsKipcblxuT2theSwgdGltZSB0byBkaXZlIGludG8gdGhlIG5pdHR5LWdyaXR0eS4gQmVmb3JlIEkgbWFrZSBhbnkgYXNzdW1wdGlvbnMsIEknbSBnb2luZyB0byBkb3VibGUtY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gbmFtZXMgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gS1ZNIGZvciB4ODYuIEkgbmVlZCB0byBtYWtlICphYnNvbHV0ZWx5KiBzdXJlIEknbSB3b3JraW5nIHdpdGggdGhlIHByZWNpc2UgZGVmaW5pdGlvbnMuIFRoZSBtb3N0IGxvZ2ljYWwgcGxhY2UgdG8gZmluZCB0aGF0IGF1dGhvcml0YXRpdmUgc291cmNlIGlzIGBhcmNoL3g4Ni9rdm0vS2NvbmZpZ2AsIGFuZCBJJ20gZ29pbmcgdG8gemVybyBpbiBvbiBsaW5lcyAyMCB0aHJvdWdoIDEwMC4gVGhpcyBpcyB3aGVyZSBJIGV4cGVjdCB0aGUgY29yZSBLVk0gY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgeDg2IGFyY2hpdGVjdHVyZSB0byBiZSBkZWZpbmVkLiBCeSB2ZXJpZnlpbmcgdGhlIGV4YWN0IGNvbmZpZyBuYW1lcyBoZXJlLCBJJ2xsIGJlIGFibGUgdG8gYXZvaWQgYW55IHBvdGVudGlhbCBtaXNpbnRlcnByZXRhdGlvbnMgb3IgZXJyb3JzIGRvd24gdGhlIGxpbmUgYW5kIGVuc3VyZSBteSB1bmRlcnN0YW5kaW5nIGlzIHJvY2sgc29saWQuIFByZWNpc2lvbiBpcyBrZXksIGFzIGFsd2F5cywgd2hlbiBkZWFsaW5nIHdpdGgga2VybmVsIGNvbmZpZ3VyYXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjA3OCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDA3OjA1OjEzLjIzODkyOTcwN1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NDUzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJhcmNoL3g4Ni9rdm0vS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxOCxcbiAgXCJMaW5lQ291bnRcIjogODVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAxODpcXHRpZiBWSVJUVUFMSVpBVElPTlxcbiAgMTk6XFx0XFxuICAyMDpcXHRjb25maWcgS1ZNX1g4NlxcbiAgMjE6XFx0XFx0ZGVmX3RyaXN0YXRlIEtWTSBpZiAoS1ZNX0lOVEVMICE9IG4gfHwgS1ZNX0FNRCAhPSBuKVxcbiAgMjI6XFx0XFx0c2VsZWN0IEtWTV9DT01NT05cXG4gIDIzOlxcdFxcdHNlbGVjdCBLVk1fRUxJREVfVExCX0ZMVVNIX0lGX1lPVU5HXFxuICAyNDpcXHRcXHRzZWxlY3QgS1ZNX01NVV9MT0NLTEVTU19BR0lOR1xcbiAgMjU6XFx0XFx0c2VsZWN0IEhBVkVfS1ZNX0lSUUNISVBcXG4gIDI2OlxcdFxcdHNlbGVjdCBIQVZFX0tWTV9QRk5DQUNIRVxcbiAgMjc6XFx0XFx0c2VsZWN0IEhBVkVfS1ZNX0RJUlRZX1JJTkdfVFNPXFxuICAyODpcXHRcXHRzZWxlY3QgSEFWRV9LVk1fRElSVFlfUklOR19BQ1FfUkVMXFxuICAyOTpcXHRcXHRzZWxlY3QgSEFWRV9LVk1fSVJRX0JZUEFTU1xcbiAgMzA6XFx0XFx0c2VsZWN0IEhBVkVfS1ZNX0lSUV9ST1VUSU5HXFxuICAzMTpcXHRcXHRzZWxlY3QgSEFWRV9LVk1fUkVBRE9OTFlfTUVNXFxuICAzMjpcXHRcXHRzZWxlY3QgVkhPU1RfVEFTS1xcbiAgMzM6XFx0XFx0c2VsZWN0IEtWTV9BU1lOQ19QRlxcbiAgMzQ6XFx0XFx0c2VsZWN0IFVTRVJfUkVUVVJOX05PVElGSUVSXFxuICAzNTpcXHRcXHRzZWxlY3QgS1ZNX01NSU9cXG4gIDM2OlxcdFxcdHNlbGVjdCBTQ0hFRF9JTkZPXFxuICAzNzpcXHRcXHRzZWxlY3QgUEVSRl9FVkVOVFNcXG4gIDM4OlxcdFxcdHNlbGVjdCBHVUVTVF9QRVJGX0VWRU5UU1xcbiAgMzk6XFx0XFx0c2VsZWN0IFBFUkZfR1VFU1RfTUVESUFURURfUE1VXFxuICA0MDpcXHRcXHRzZWxlY3QgSEFWRV9LVk1fTVNJXFxuICA0MTpcXHRcXHRzZWxlY3QgSEFWRV9LVk1fQ1BVX1JFTEFYX0lOVEVSQ0VQVFxcbiAgNDI6XFx0XFx0c2VsZWN0IEhBVkVfS1ZNX05PX1BPTExcXG4gIDQzOlxcdFxcdHNlbGVjdCBWSVJUX1hGRVJfVE9fR1VFU1RfV09SS1xcbiAgNDQ6XFx0XFx0c2VsZWN0IEtWTV9HRU5FUklDX0RJUlRZTE9HX1JFQURfUFJPVEVDVFxcbiAgNDU6XFx0XFx0c2VsZWN0IEtWTV9WRklPXFxuICA0NjpcXHRcXHRzZWxlY3QgSEFWRV9LVk1fUE1fTk9USUZJRVIgaWYgUE1cXG4gIDQ3OlxcdFxcdHNlbGVjdCBLVk1fR0VORVJJQ19IQVJEV0FSRV9FTkFCTElOR1xcbiAgNDg6XFx0XFx0c2VsZWN0IEtWTV9HRU5FUklDX1BSRV9GQVVMVF9NRU1PUllcXG4gIDQ5OlxcdFxcdHNlbGVjdCBLVk1fV0VSUk9SIGlmIFdFUlJPUlxcbiAgNTA6XFx0XFx0c2VsZWN0IEtWTV9HVUVTVF9NRU1GRCBpZiBYODZfNjRcXG4gIDUxOlxcdFxcbiAgNTI6XFx0Y29uZmlnIEtWTVxcbiAgNTM6XFx0XFx0dHJpc3RhdGUgXFxcIktlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFxcXCJcXG4gIDU0OlxcdFxcdGRlcGVuZHMgb24gWDg2X0xPQ0FMX0FQSUNcXG4gIDU1OlxcdFxcdGhlbHBcXG4gIDU2OlxcdFxcdCAgU3VwcG9ydCBob3N0aW5nIGZ1bGx5IHZpcnR1YWxpemVkIGd1ZXN0IG1hY2hpbmVzIHVzaW5nIGhhcmR3YXJlXFxuICA1NzpcXHRcXHQgIHZpcnR1YWxpemF0aW9uIGV4dGVuc2lvbnMuICBZb3Ugd2lsbCBuZWVkIGEgZmFpcmx5IHJlY2VudFxcbiAgNTg6XFx0XFx0ICBwcm9jZXNzb3IgZXF1aXBwZWQgd2l0aCB2aXJ0dWFsaXphdGlvbiBleHRlbnNpb25zLiBZb3Ugd2lsbCBhbHNvXFxuICA1OTpcXHRcXHQgIG5lZWQgdG8gc2VsZWN0IG9uZSBvciBtb3JlIG9mIHRoZSBwcm9jZXNzb3IgbW9kdWxlcyBiZWxvdy5cXG4gIDYwOlxcdFxcbiAgNjE6XFx0XFx0ICBUaGlzIG1vZHVsZSBwcm92aWRlcyBhY2Nlc3MgdG8gdGhlIGhhcmR3YXJlIGNhcGFiaWxpdGllcyB0aHJvdWdoXFxuICA2MjpcXHRcXHQgIGEgY2hhcmFjdGVyIGRldmljZSBub2RlIG5hbWVkIC9kZXYva3ZtLlxcbiAgNjM6XFx0XFxuICA2NDpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxcbiAgNjU6XFx0XFx0ICB3aWxsIGJlIGNhbGxlZCBrdm0uXFxuICA2NjpcXHRcXG4gIDY3OlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gIDY4OlxcdFxcbiAgNjk6XFx0Y29uZmlnIEtWTV9XRVJST1JcXG4gIDcwOlxcdFxcdGJvb2wgXFxcIkNvbXBpbGUgS1ZNIHdpdGggLVdlcnJvclxcXCJcXG4gIDcxOlxcdFxcdCMgRGlzYWxsb3cgS1ZNJ3MgLVdlcnJvciBpZiBLQVNBTiBpcyBlbmFibGVkLCBlLmcuIHRvIGd1YXJkIGFnYWluc3RcXG4gIDcyOlxcdFxcdCMgcmFuZG9taXplZCBjb25maWdzIGZyb20gc2VsZWN0aW5nIEtWTV9XRVJST1I9eSwgd2hpY2ggZG9lc24ndCBwbGF5XFxuICA3MzpcXHRcXHQjIG5pY2Ugd2l0aCBLQVNBTi4gIEtBU0FOIGJ1aWxkcyBnZW5lcmF0ZXMgd2FybmluZ3MgZm9yIHRoZSBkZWZhdWx0XFxuICA3NDpcXHRcXHQjIEZSQU1FX1dBUk4sIGkuZS4gS1ZNX1dFUlJPUj15IHdpdGggS0FTQU49eSByZXF1aXJlcyBzcGVjaWFsIHR1bmluZy5cXG4gIDc1OlxcdFxcdCMgQnVpbGRpbmcgS1ZNIHdpdGggLVdlcnJvciBhbmQgS0FTQU4gaXMgc3RpbGwgZG9hYmxlIHZpYSBlbmFibGluZ1xcbiAgNzY6XFx0XFx0IyB0aGUga2VybmVsLXdpZGUgV0VSUk9SPXkuXFxuICA3NzpcXHRcXHRkZXBlbmRzIG9uIEtWTV9YODYgXFx1MDAyNlxcdTAwMjYgKChFWFBFUlQgXFx1MDAyNlxcdTAwMjYgIUtBU0FOKSB8fCBXRVJST1IpXFxuICA3ODpcXHRcXHRoZWxwXFxuICA3OTpcXHRcXHQgIEFkZCAtV2Vycm9yIHRvIHRoZSBidWlsZCBmbGFncyBmb3IgS1ZNLlxcbiAgODA6XFx0XFxuICA4MTpcXHRcXHQgIElmIGluIGRvdWJ0LCBzYXkgXFxcIk5cXFwiLlxcbiAgODI6XFx0XFxuICA4MzpcXHRjb25maWcgS1ZNX1NXX1BST1RFQ1RFRF9WTVxcbiAgODQ6XFx0XFx0Ym9vbCBcXFwiRW5hYmxlIHN1cHBvcnQgZm9yIEtWTSBzb2Z0d2FyZS1wcm90ZWN0ZWQgVk1zXFxcIlxcbiAgODU6XFx0XFx0ZGVwZW5kcyBvbiBFWFBFUlRcXG4gIDg2OlxcdFxcdGRlcGVuZHMgb24gS1ZNX1g4NiBcXHUwMDI2XFx1MDAyNiBYODZfNjRcXG4gIDg3OlxcdFxcdHNlbGVjdCBLVk1fR0VORVJJQ19NRU1PUllfQVRUUklCVVRFU1xcbiAgODg6XFx0XFx0aGVscFxcbiAgODk6XFx0XFx0ICBFbmFibGUgc3VwcG9ydCBmb3IgS1ZNIHNvZnR3YXJlLXByb3RlY3RlZCBWTXMuICBDdXJyZW50bHksIHNvZnR3YXJlLVxcbiAgOTA6XFx0XFx0ICBwcm90ZWN0ZWQgVk1zIGFyZSBwdXJlbHkgYSBkZXZlbG9wbWVudCBhbmQgdGVzdGluZyB2ZWhpY2xlIGZvclxcbiAgOTE6XFx0XFx0ICBLVk1fQ1JFQVRFX0dVRVNUX01FTUZELiAgQXR0ZW1wdGluZyB0byBydW4gYSBcXFwicmVhbFxcXCIgVk0gd29ya2xvYWQgYXMgYVxcbiAgOTI6XFx0XFx0ICBzb2Z0d2FyZS1wcm90ZWN0ZWQgVk0gd2lsbCBmYWlsIG1pc2VyYWJseS5cXG4gIDkzOlxcdFxcbiAgOTQ6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBcXFwiTlxcXCIuXFxuICA5NTpcXHRcXG4gIDk2OlxcdGNvbmZpZyBLVk1fSU5URUxcXG4gIDk3OlxcdFxcdHRyaXN0YXRlIFxcXCJLVk0gZm9yIEludGVsIChhbmQgY29tcGF0aWJsZSkgcHJvY2Vzc29ycyBzdXBwb3J0XFxcIlxcbiAgOTg6XFx0XFx0ZGVwZW5kcyBvbiBLVk0gXFx1MDAyNlxcdTAwMjYgSUEzMl9GRUFUX0NUTFxcbiAgOTk6XFx0XFx0c2VsZWN0IFg4Nl9GUkVEIGlmIFg4Nl82NFxcbiAxMDA6XFx0XFx0aGVscFxcbiAxMDE6XFx0XFx0ICBQcm92aWRlcyBzdXBwb3J0IGZvciBLVk0gb24gcHJvY2Vzc29ycyBlcXVpcHBlZCB3aXRoIEludGVsJ3MgVlRcXG4gMTAyOlxcdFxcdCAgZXh0ZW5zaW9ucywgYS5rLmEuIFZpcnR1YWwgTWFjaGluZSBFeHRlbnNpb25zIChWTVgpLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwNzowNToxMy4yMzkwMTY0ODdaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTQ5ODM5ODE5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipLVk0gRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ3ZlIHBpbnBvaW50ZWQgdGhlIGltcG9ydGFudCBrZXJuZWwgY29uZmlndXJhdGlvbnMgaGVyZTogYEtWTWAsIGBLVk1fSU5URUxgLCBhbmQgYEtWTV9BTURgLiBUaGVzZSBhcmUgdGhlIGZvdW5kYXRpb24gZm9yIHRoaXMgdGFyZ2V0LiBUaGUgYFdvcnRoRnV6emluZ2AgZmxhZyBpcyBzZXQgdG8gdHJ1ZSwgd2hpY2ggaXMgZ29vZDsgaXQgbWVhbnMgdGhpcyBpcyBhIHdvcnRod2hpbGUgYXJlYSB0byBpbnZlc3RpZ2F0ZS4gQW5kIHRoZW4gd2UgaGF2ZSB0aGUgc3BlY2lmaWMgZnVuY3Rpb25zIHRvIGZvY3VzIG9uOiBga3ZtX21tdV9jaGFuZ2VfbW11X3BhZ2VzYCBhbmQgYGt2bV92bV9pb2N0bF9zZXRfbnJfbW11X3BhZ2VzYC4gVGhvc2UgYXJlIHRoZSBlbnRyeSBwb2ludHMuXG5cbk5vdywgbGV0J3MgbWFrZSBzdXJlIGV2ZXJ5dGhpbmcgbGluZXMgdXAgd2l0aCBteSB0cmlhZ2UgcGhpbG9zb3BoeS4gRmlyc3QsIHJlYWNoYWJpbGl0eSBpcyBrZXkuIEkndmUgY29uZmlybWVkIHRoYXQgdGhlIHRhcmdldCBpb2N0bHMsIHBhcnRpY3VsYXJseSBgS1ZNX1NFVF9OUl9NTVVfUEFHRVNgLCBhcmUgc3RhbmRhcmQgc3lzY2FsbHMvaW9jdGxzIGFuZCBhcmUgdGhlcmVmb3JlIGxpa2VseSBmdXp6YWJsZSB3aXRoIHN5emthbGxlci4gVGhlIGBrdm1fbW11X2NoYW5nZV9tbXVfcGFnZXNgIHBhdGNoIGxvZ2ljIGlzIGludGVyZXN0aW5nOyBpdCBsb29rcyBsaWtlIHRoZXJlJ3MgYSBzYWZldHkgY2hlY2sgdXNpbmcgYG1heCgpYCB0byBhdm9pZCBwb3RlbnRpYWxseSBwcm9ibGVtYXRpYyBzaGFkb3cgcGFnZSBtYW5pcHVsYXRpb25zLiBBbmQgd2UgYXJlIGRlYWxpbmcgd2l0aCBhIGNvcmUgc3Vic3lzdGVtIGhlcmUsIHNwZWNpZmljYWxseSBgYXJjaC94ODYva3ZtL21tdS9tbXUuY2AuXG5cblNlY29uZCwgYFdvcnRoRnV6emluZ2AgaXMgYWxyZWFkeSBzZXQgdG8gdHJ1ZSwgc28gdGhhdCdzIGRvbmUuXG5cblRoaXJkLCBvdXIgZm9jdXMgc3ltYm9scyBhcmUgYGt2bV9tbXVfY2hhbmdlX21tdV9wYWdlc2AgYW5kIGBrdm1fdm1faW9jdGxfc2V0X25yX21tdV9wYWdlc2AuIFRoZXkncmUgbm90IHViaXF1aXRvdXM7IHRoZXkgYXJlIHF1aXRlIHNwZWNpZmljIHRvIHRoZSBsb2dpYywgd2hpY2ggbWFrZXMgdGhlbSBwcmltZSB0YXJnZXRzLlxuXG5Gb3VydGgsIHRoZSBgRW5hYmxlQ29uZmlnc2AgYXJlIHNwb3Qgb246IGBLVk1gLCBgS1ZNX0lOVEVMYCwgYW5kIGBLVk1fQU1EYC5cblxuQWxyaWdodCwgSSB0aGluayB0aGF0J3MgYWxsIHRoZSBjcml0ZXJpYS4gV2UncmUgcmVhZHkgdG8gcHJvY2VlZC4gTGV0J3MgY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzY5MSwiT3V0cHV0VG9rZW5zIjoxNjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNDAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwNzowNToxOC43Mzc0MTcwMjdaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NzM0OTA5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCIsXG4gICAgXCJLVk1fSU5URUxcIixcbiAgICBcIktWTV9BTURcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJrdm1fbW11X2NoYW5nZV9tbXVfcGFnZXNcIixcbiAgICBcImt2bV92bV9pb2N0bF9zZXRfbnJfbW11X3BhZ2VzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgc2hhZG93IE1NVSBwYWdlIGNvdW50IG1hbmFnZW1lbnQgbG9naWMgaW4geDg2IEtWTSAoYGt2bV9tbXVfY2hhbmdlX21tdV9wYWdlc2ApLCB3aGljaCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIEtWTSBpb2N0bHMgKHN1Y2ggYXMgS1ZNX1NFVF9OUl9NTVVfUEFHRVMpIGFuZCBtZW1vcnkgcmVnaW9uIGNvbmZpZ3VyYXRpb24uIEZ1enppbmcgaXMgcmVjb21tZW5kZWQgdG8gZW5zdXJlIGNvcnJlY3QgTU1VIHNoYWRvdyBwYWdlIGFsbG9jYXRpb24gYW5kIHphcHBpbmcgaW52YXJpYW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIixcbiAgICBcIktWTV9JTlRFTFwiLFxuICAgIFwiS1ZNX0FNRFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9tbXVfY2hhbmdlX21tdV9wYWdlc1wiLFxuICAgIFwia3ZtX3ZtX2lvY3RsX3NldF9ucl9tbXVfcGFnZXNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBzaGFkb3cgTU1VIHBhZ2UgY291bnQgbWFuYWdlbWVudCBsb2dpYyBpbiB4ODYgS1ZNIChga3ZtX21tdV9jaGFuZ2VfbW11X3BhZ2VzYCksIHdoaWNoIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgS1ZNIGlvY3RscyAoc3VjaCBhcyBLVk1fU0VUX05SX01NVV9QQUdFUykgYW5kIG1lbW9yeSByZWdpb24gY29uZmlndXJhdGlvbi4gRnV6emluZyBpcyByZWNvbW1lbmRlZCB0byBlbnN1cmUgY29ycmVjdCBNTVUgc2hhZG93IHBhZ2UgYWxsb2NhdGlvbiBhbmQgemFwcGluZyBpbnZhcmlhbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwNzowNToxOC44MTQ3NzMyMTdaIiwiU2VxIjoyMSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4NDY5MjE3NTkxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDc6MDU6MTguODE1MjQ0NjM3WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MTg0Njg3NDE3MzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGEgY2FsY3VsYXRpb24gaW4gYGt2bV9tbXVfY2hhbmdlX21tdV9wYWdlcygpYCB0byBwcmV2ZW50IGBuX21heF9tbXVfcGFnZXNgIGZyb20gYmVpbmcgc2V0IGxvd2VyIHRoYW4gYGdvYWxfbnJfbW11X3BhZ2VzYCBpZiBga3ZtX21tdV96YXBfb2xkZXN0X21tdV9wYWdlcygpYCB6YXBzIG1vcmUgc2hhZG93IHBhZ2VzIHRoYW4gcmVxdWVzdGVkLiBUaGlzIGNoYW5nZSBvbmx5IHVwZGF0ZXMgYSBzY2FsYXIgaW50ZWdlciB2YWx1ZSB0cmFja2luZyBNTVUgcGFnZSBsaW1pdHMgYW5kIGRvZXMgbm90IGludm9sdmUgbWVtb3J5IGFsbG9jYXRpb25zLCB1bmluaXRpYWxpemVkIHZhcmlhYmxlIHVzYWdlLCBvciBjb3B5aW5nIGtlcm5lbCBkYXRhIHRvIHVzZXJzcGFjZS4gVGhlcmVmb3JlLCB0aGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3Mgb3Iga2VybmVsIGluZm8tbGVha3MsIGFuZCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDllYzBjZDZiYzJlMDQ3ODY5YjJiN2ZhOGU4YWJlMzViYmM0NzZhNmVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIFNlcCAxMSAwNzowNDozNiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9tbXUvbW11LmMgYi9hcmNoL3g4Ni9rdm0vbW11L21tdS5jXG5pbmRleCAwNjRlY2MzM2I5MjY3Li5lZmViYTU4OTM2YTY4IDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL21tdS9tbXUuY1xuKysrIGIvYXJjaC94ODYva3ZtL21tdS9tbXUuY1xuQEAgLTI5MTMsNyArMjkxMyw3IEBAIHZvaWQga3ZtX21tdV9jaGFuZ2VfbW11X3BhZ2VzKHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgbG9uZyBnb2FsX25yX21tdV9wYWdlcylcbiBcdFx0a3ZtX21tdV96YXBfb2xkZXN0X21tdV9wYWdlcyhrdm0sIGt2bS1cdTAwM2VzdGF0Lm1tdV9zaGFkb3dfcGFnZXMgLVxuIFx0XHRcdFx0XHRcdCAgZ29hbF9ucl9tbXVfcGFnZXMpO1xuIFxuLVx0XHRnb2FsX25yX21tdV9wYWdlcyA9IGt2bS1cdTAwM2VzdGF0Lm1tdV9zaGFkb3dfcGFnZXM7XG4rXHRcdGdvYWxfbnJfbW11X3BhZ2VzID0gbWF4KGt2bS1cdTAwM2VzdGF0Lm1tdV9zaGFkb3dfcGFnZXMsIGdvYWxfbnJfbW11X3BhZ2VzKTtcbiBcdH1cbiBcbiBcdGt2bS1cdTAwM2VhcmNoLm5fbWF4X21tdV9wYWdlcyA9IGdvYWxfbnJfbW11X3BhZ2VzO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDc6MDU6MTguODE1MjQ1NTg3WiIsIlNlcSI6MjMsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjc5Nzc5NDEwNTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEtWTSBNTVUgUGFnZSBBbGxvY2F0aW9uIE9wdGltaXphdGlvbioqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzIEtWTSBjb2RlLiBNeSBpbml0aWFsIGltcHJlc3Npb24gaXMgdGhhdCB3ZSdyZSBsb29raW5nIGF0IGEgdHdlYWsgdG8gdGhlIE1NVSBwYWdlIGFsbG9jYXRpb24gc3RyYXRlZ3ksIHNwZWNpZmljYWxseSB3aXRoaW4gYGFyY2gveDg2L2t2bS9tbXUvbW11LmNgLiBUaGUgZGlmZiBpdHNlbGYgaXMgcXVpdGUgc21hbGwsIGJ1dCB0aGUgaW1wbGljYXRpb25zIGNvdWxkIGJlIHNpZ25pZmljYW50LCBzbyBsZXQncyBkaWcgZGVlcGVyLlxuXG5UaGUgY29yZSBvZiB0aGUgY2hhbmdlIGFwcGVhcnMgdG8gYmUgaW4gdGhlIGBrdm1fbW11X2NoYW5nZV9tbXVfcGFnZXNgIGZ1bmN0aW9uLiBUaGUgb3JpZ2luYWwgY29kZSB1bmNvbmRpdGlvbmFsbHkgc2V0IGBnb2FsX25yX21tdV9wYWdlc2AgdG8gYGt2bS1cdTAwM2VzdGF0Lm1tdV9zaGFkb3dfcGFnZXNgLiBOb3csIGl0J3MgdGFraW5nIHRoZSBgbWF4YCBvZiB0aGUgY3VycmVudCBzaGFkb3cgcGFnZXMgYW5kIHRoZSBgZ29hbF9ucl9tbXVfcGFnZXNgLiBUaGlzIHN1Z2dlc3RzIGEgcG90ZW50aWFsIG9wdGltaXphdGlvbiBvciBhIGZpeC4gSSdtIGd1ZXNzaW5nIHRoYXQgaW4gc29tZSBlZGdlIGNhc2VzLCB3ZSBtaWdodCBoYXZlIGJlZW4gdW5uZWNlc3NhcmlseSByZWR1Y2luZyB0aGUgbnVtYmVyIG9mIHNoYWRvdyBwYWdlcywgYW5kIHRoaXMgYG1heGAgaXMgbWVhbnQgdG8gcHJldmVudCB0aGF0LiBXZSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHNjZW5hcmlvcyB3aGVyZSBgZ29hbF9ucl9tbXVfcGFnZXNgIG1pZ2h0IGJlIHNtYWxsZXIgdGhhbiBga3ZtLVx1MDAzZXN0YXQubW11X3NoYWRvd19wYWdlc2AgdG8gZnVsbHkgZ3Jhc3AgdGhlIGNoYW5nZSdzIGltcGFjdC4gU3BlY2lmaWNhbGx5LCBob3cgYXJlIGBnb2FsX25yX21tdV9wYWdlc2AgYW5kIGBrdm0tXHUwMDNlc3RhdC5tbXVfc2hhZG93X3BhZ2VzYCBjYWxjdWxhdGVkPyBXaGF0IHRyaWdnZXJzIGBrdm1fbW11X2NoYW5nZV9tbXVfcGFnZXNgPyBJJ2xsIG5lZWQgdG8gdHJhY2UgdGhlIGNhbGwgZ3JhcGggYW5kIHVuZGVyc3RhbmQgdGhlIHN1cnJvdW5kaW5nIGxvZ2ljIHRvIGFzc2VzcyBpZiB0aGlzIGlzIGFkZHJlc3NpbmcgYSByZWFsIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2sgb3IgYSBmdW5jdGlvbmFsIGlzc3VlLiBJJ2xsIGFsc28gbmVlZCB0byBjb25zaWRlciBhbnkgcG90ZW50aWFsIHJlZ3Jlc3Npb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTcxLCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQ5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDc6MDU6MjYuNzkzMTg4OTE3WiIsIlNlcSI6MjQsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQwMjk0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJhcmNoL3g4Ni9rdm0vbW11L21tdS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI5MDAsXG4gIFwiTGluZUNvdW50XCI6IDM1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjI5MDA6XFx0XFx0XFx0cmV0dXJuIC1FTk9TUEM7XFxuMjkwMTpcXHRcXHRyZXR1cm4gMDtcXG4yOTAyOlxcdH1cXG4yOTAzOlxcdFxcbjI5MDQ6XFx0LypcXG4yOTA1OlxcdCAqIENoYW5naW5nIHRoZSBudW1iZXIgb2YgbW11IHBhZ2VzIGFsbG9jYXRlZCB0byB0aGUgdm1cXG4yOTA2OlxcdCAqIE5vdGU6IGlmIGdvYWxfbnJfbW11X3BhZ2VzIGlzIHRvbyBzbWFsbCwgeW91IHdpbGwgZ2V0IGRlYWQgbG9ja1xcbjI5MDc6XFx0ICovXFxuMjkwODpcXHR2b2lkIGt2bV9tbXVfY2hhbmdlX21tdV9wYWdlcyhzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgZ29hbF9ucl9tbXVfcGFnZXMpXFxuMjkwOTpcXHR7XFxuMjkxMDpcXHRcXHR3cml0ZV9sb2NrKFxcdTAwMjZrdm0tXFx1MDAzZW1tdV9sb2NrKTtcXG4yOTExOlxcdFxcbjI5MTI6XFx0XFx0aWYgKGt2bS1cXHUwMDNlc3RhdC5tbXVfc2hhZG93X3BhZ2VzIFxcdTAwM2UgZ29hbF9ucl9tbXVfcGFnZXMpIHtcXG4yOTEzOlxcdFxcdFxcdGt2bV9tbXVfemFwX29sZGVzdF9tbXVfcGFnZXMoa3ZtLCBrdm0tXFx1MDAzZXN0YXQubW11X3NoYWRvd19wYWdlcyAtXFxuMjkxNDpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgIGdvYWxfbnJfbW11X3BhZ2VzKTtcXG4yOTE1OlxcdFxcbjI5MTY6XFx0XFx0XFx0Z29hbF9ucl9tbXVfcGFnZXMgPSBtYXgoa3ZtLVxcdTAwM2VzdGF0Lm1tdV9zaGFkb3dfcGFnZXMsIGdvYWxfbnJfbW11X3BhZ2VzKTtcXG4yOTE3OlxcdFxcdH1cXG4yOTE4OlxcdFxcbjI5MTk6XFx0XFx0a3ZtLVxcdTAwM2VhcmNoLm5fbWF4X21tdV9wYWdlcyA9IGdvYWxfbnJfbW11X3BhZ2VzO1xcbjI5MjA6XFx0XFxuMjkyMTpcXHRcXHR3cml0ZV91bmxvY2soXFx1MDAyNmt2bS1cXHUwMDNlbW11X2xvY2spO1xcbjI5MjI6XFx0fVxcbjI5MjM6XFx0XFxuMjkyNDpcXHRib29sIF9fa3ZtX21tdV91bnByb3RlY3RfZ2ZuX2FuZF9yZXRyeShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGdwYV90IGNyMl9vcl9ncGEsXFxuMjkyNTpcXHRcXHRcXHRcXHRcXHQgICAgICAgYm9vbCBhbHdheXNfcmV0cnkpXFxuMjkyNjpcXHR7XFxuMjkyNzpcXHRcXHRzdHJ1Y3Qga3ZtICprdm0gPSB2Y3B1LVxcdTAwM2Vrdm07XFxuMjkyODpcXHRcXHRMSVNUX0hFQUQoaW52YWxpZF9saXN0KTtcXG4yOTI5OlxcdFxcdHN0cnVjdCBrdm1fbW11X3BhZ2UgKnNwO1xcbjI5MzA6XFx0XFx0Z3BhX3QgZ3BhID0gY3IyX29yX2dwYTtcXG4yOTMxOlxcdFxcdGJvb2wgciA9IGZhbHNlO1xcbjI5MzI6XFx0XFxuMjkzMzpcXHRcXHQvKlxcbjI5MzQ6XFx0XFx0ICogQmFpbCBlYXJseSBpZiB0aGVyZSBhcmVuJ3QgYW55IHdyaXRlLXByb3RlY3RlZCBzaGFkb3cgcGFnZXMgdG8gYXZvaWRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDc6MDU6MjYuNzkzNTkzOTU3WiIsIlNlcSI6MjUsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI0OTAwODkxOTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBga3ZtX21tdV9jaGFuZ2VfbW11X3BhZ2VzYCBGdW5jdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3cgYW5kIGltcGFjdCBvZiBga3ZtX21tdV9jaGFuZ2VfbW11X3BhZ2VzYC4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byB0cmFjayBpdHMgY2FsbCBzaXRlcy4gSSB3YW50IHRvIHNlZSAqZXhhY3RseSogd2hlcmUgYW5kIGhvdyB0aGUgTU1VIHBhZ2Ugc3RydWN0dXJlcyBhcmUgYmVpbmcgbW9kaWZpZWQuIFRoaXMgc3VnZ2VzdHMgSSBuZWVkIHRvIHRyYWNlIHRoZSBtb2RpZmljYXRpb25zIHRoZW1zZWx2ZXMuIElzIHRoaXMgZnVuY3Rpb24gcmVzcG9uc2libGUgZm9yIGFsbCBNTVUgcGFnZSBjaGFuZ2VzLCBvciBqdXN0IGNlcnRhaW4gdHlwZXM/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlIHdpdGhpbiB0aGUgd2lkZXIgS1ZNIE1NVSBhcmNoaXRlY3R1cmUuIFdoYXQgYXJlIHRoZSBrZXkgZGF0YSBzdHJ1Y3R1cmVzIHRoaXMgZnVuY3Rpb24gb3BlcmF0ZXMgb24sIGFuZCB3aGF0IGtpbmQgb2YgY29uc2lzdGVuY3kgbWVjaGFuaXNtcyBhcmUgaW4gcGxhY2Ugd2hlbiBpdCBtYW5pcHVsYXRlcyB0aG9zZSBzdHJ1Y3R1cmVzPyBVbHRpbWF0ZWx5LCBJIHdhbnQgdG8gaWRlbnRpZnkgcG90ZW50aWFsIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzIG9yIHN1YnRsZSBjb3JyZWN0bmVzcyBpc3N1ZXMgcmVsYXRlZCB0byBNTVUgcGFnZSB1cGRhdGVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDA0LCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwNzowNToyOS4yODM2ODgzNTlaIiwiU2VxIjoyNiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MTEwMDkyMjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX21tdV9jaGFuZ2VfbW11X3BhZ2VzXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS9tbXUuaD0xMzQ9dm9pZCBrdm1fbW11X2ludmFsaWRhdGVfbW1pb19zcHRlcyhzdHJ1Y3Qga3ZtICprdm0sIHU2NCBnZW4pO1xcbmFyY2gveDg2L2t2bS9tbXUuaDoxMzU6dm9pZCBrdm1fbW11X2NoYW5nZV9tbXVfcGFnZXMoc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBsb25nIGt2bV9ucl9tbXVfcGFnZXMpO1xcbmFyY2gveDg2L2t2bS9tbXUuaC0xMzYtdm9pZCBrdm1femFwX2dmbl9yYW5nZShzdHJ1Y3Qga3ZtICprdm0sIGdmbl90IGdmbl9zdGFydCwgZ2ZuX3QgZ2ZuX2VuZCk7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vbW11L21tdS5jPTI4ODE9c3RhdGljIGludCBtYWtlX21tdV9wYWdlc19hdmFpbGFibGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL21tdS9tbXUuYy0yOTA3LSAqL1xcbmFyY2gveDg2L2t2bS9tbXUvbW11LmM6MjkwODp2b2lkIGt2bV9tbXVfY2hhbmdlX21tdV9wYWdlcyhzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgZ29hbF9ucl9tbXVfcGFnZXMpXFxuYXJjaC94ODYva3ZtL21tdS9tbXUuYy0yOTA5LXtcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYz0zOTEwPXN0YXRpYyBpbnQga3ZtX3ZtX2lvY3RsX3NldF9ucl9tbXVfcGFnZXMoc3RydWN0IGt2bSAqa3ZtLFxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTM5MTctXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjM5MTg6XFx0a3ZtX21tdV9jaGFuZ2VfbW11X3BhZ2VzKGt2bSwga3ZtX25yX21tdV9wYWdlcyk7XFxuYXJjaC94ODYva3ZtL3g4Ni5jLTM5MTktXFx0a3ZtLVxcdTAwM2VhcmNoLm5fcmVxdWVzdGVkX21tdV9wYWdlcyA9IGt2bV9ucl9tbXVfcGFnZXM7XFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmM9MTAzMzg9dm9pZCBrdm1fYXJjaF9jb21taXRfbWVtb3J5X3JlZ2lvbihzdHJ1Y3Qga3ZtICprdm0sXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTAzNTEtXFx0XFx0bnJfbW11X3BhZ2VzID0gbWF4KG5yX21tdV9wYWdlcywgS1ZNX01JTl9BTExPQ19NTVVfUEFHRVMpO1xcbmFyY2gveDg2L2t2bS94ODYuYzoxMDM1MjpcXHRcXHRrdm1fbW11X2NoYW5nZV9tbXVfcGFnZXMoa3ZtLCBucl9tbXVfcGFnZXMpO1xcbmFyY2gveDg2L2t2bS94ODYuYy0xMDM1My1cXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDA3OjA1OjMwLjk5NDcwNzAwNloiLCJTZXEiOjI3LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2Mjg5MjU5NDUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTU1VIFBhZ2UgQWxsb2NhdGlvbiBBZGp1c3RtZW50KipcblxuT2theSwgbGV0J3MgYnJlYWsgZG93biB0aGlzIGNoYW5nZSB0byBga3ZtX21tdV9jaGFuZ2VfbW11X3BhZ2VzYC4gRXNzZW50aWFsbHksIHdlJ3JlIHR3ZWFraW5nIGhvdyB3ZSBkZXRlcm1pbmUgdGhlIG1heGltdW0gbnVtYmVyIG9mIE1NVSBwYWdlcyBhbGxvY2F0ZWQgdG8gYSBWTSwgc3BlY2lmaWNhbGx5IGFkanVzdGluZyBga3ZtLVx1MDAzZWFyY2gubl9tYXhfbW11X3BhZ2VzYC4gVGhlIGluaXRpYWwgYXBwcm9hY2ggdXNlZCBga3ZtLVx1MDAzZXN0YXQubW11X3NoYWRvd19wYWdlc2AgYXMgdGhlIHRhcmdldCwgYnV0IHRoYXQncyBiZWVuIG1vZGlmaWVkLlxuXG5Ob3csIGluc3RlYWQgb2YganVzdCBhc3NpZ25pbmcgYGt2bS1cdTAwM2VzdGF0Lm1tdV9zaGFkb3dfcGFnZXNgIHRvIGBnb2FsX25yX21tdV9wYWdlc2AsIHdlJ3JlIHVzaW5nIGBtYXgoa3ZtLVx1MDAzZXN0YXQubW11X3NoYWRvd19wYWdlcywgZ29hbF9ucl9tbXVfcGFnZXMpYC4gVGhlIHJlYXNvbiBmb3IgdGhpcyBpcyBjbGVhcjogYGt2bV9tbXVfemFwX29sZGVzdF9tbXVfcGFnZXNgIGNhbiwgdW5kZXIgY2VydGFpbiBjaXJjdW1zdGFuY2VzLCB6YXAgKm1vcmUqIHBhZ2VzIHRoYW4gcmVxdWVzdGVkLCBvciwgYWZ0ZXIgYSB6YXBwaW5nIG9wZXJhdGlvbiwgYG1tdV9zaGFkb3dfcGFnZXNgIG1pZ2h0IGJlIGxlc3MgdGhhbiBgZ29hbF9ucl9tbXVfcGFnZXNgLiBJZiB3ZSB3ZXJlIHRvIG5haXZlbHkgc2V0IGBnb2FsX25yX21tdV9wYWdlc2AgdG8gYGt2bS1cdTAwM2VzdGF0Lm1tdV9zaGFkb3dfcGFnZXNgIGluIHRoZXNlIHNpdHVhdGlvbnMsIHdlJ2QgaW5hZHZlcnRlbnRseSBsb3dlciB0aGUgbGltaXQsIGBuX21heF9tbXVfcGFnZXNgLCBiZWxvdyB0aGUgYWN0dWFsIGludGVuZGVkIGBnb2FsX25yX21tdV9wYWdlc2AuIFRoZSBgbWF4YCBmdW5jdGlvbiBpcyB0aGVyZSB0byBlbnN1cmUgdGhhdCBgbl9tYXhfbW11X3BhZ2VzYCByZW1haW5zIGF0IGxlYXN0IGFzIGxhcmdlIGFzIGBnb2FsX25yX21tdV9wYWdlc2AuIEl0J3MgYSBzYWZlZ3VhcmRpbmcgbWVjaGFuaXNtLlxuXG5Ob3csIGxldCdzIGNvbnNpZGVyIHBvdGVudGlhbCBLTVNBTiBpbXBsaWNhdGlvbnMsIGJlY2F1c2UgdGhhdCdzIGFsd2F5cyBhIGdvb2QgcHJhY3RpY2UuIElzIHRoZXJlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzc3Vlcz8gSSBkb24ndCBzZWUgYW55IG9idmlvdXMgb25lczpcblxuKiAgIEl0J3Mgbm90IGluaXRpYWxpemluZyBtZW1vcnkuXG4qICAgSXQncyBub3QgcGFzc2luZyB1bmluaXRpYWxpemVkIGRhdGEgdG8gdXNlciBzcGFjZS5cbiogICBJdCdzIG5vdCBpbnRyb2R1Y2luZyBvciBtb2RpZnlpbmcgYW55IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzIG9yIHN0cnVjdHMuXG4qICAgSXQncyBub3QgbWVzc2luZyB3aXRoIGJ1ZmZlciBib3VuZHMgb3IgcG90ZW50aWFsbHkgcmVhZGluZyB1bmluaXRpYWxpemVkIGJ1ZmZlcnMuXG5cblRoaXMgaXMgYSBzdHJhaWdodGZvcndhcmQgc2NhbGFyIGNhbGN1bGF0aW9uLCBmaXhpbmcgYSBsaW1pdCB0cmFja2luZyB2YWx1ZSwgYG5fbWF4X21tdV9wYWdlc2AuIFRoZXJlIGFyZSBubyBuZXcgYWxsb2NhdGlvbnMsIG5vIHN0cnVjdCBjb3BpZXMsIG5vIHVuaW5pdGlhbGl6ZWQgcmVhZHMsIGFuZCBkZWZpbml0ZWx5IG5vIGluZm8gbGVha3MgdG8gdXNlcnNwYWNlLiBBbGwgdGhpbmdzIGNvbnNpZGVyZWQsIE5lZWRzS01TQU4gc2hvdWxkIGJlIGZhbHNlLlxuXG5SaWdodCwgdGltZSB0byBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0Mjg3LCJPdXRwdXRUb2tlbnMiOjE2MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQxOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwNzowNTozNy4yODM5Njg4MjhaIiwiU2VxIjoyOCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjE1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGEgY2FsY3VsYXRpb24gaW4gYGt2bV9tbXVfY2hhbmdlX21tdV9wYWdlcygpYCB0byBwcmV2ZW50IGBuX21heF9tbXVfcGFnZXNgIGZyb20gYmVpbmcgc2V0IGxvd2VyIHRoYW4gYGdvYWxfbnJfbW11X3BhZ2VzYCBpZiBga3ZtX21tdV96YXBfb2xkZXN0X21tdV9wYWdlcygpYCB6YXBzIG1vcmUgc2hhZG93IHBhZ2VzIHRoYW4gcmVxdWVzdGVkLiBUaGlzIGNoYW5nZSBvbmx5IHVwZGF0ZXMgYSBzY2FsYXIgaW50ZWdlciB2YWx1ZSB0cmFja2luZyBNTVUgcGFnZSBsaW1pdHMgYW5kIGRvZXMgbm90IGludm9sdmUgbWVtb3J5IGFsbG9jYXRpb25zLCB1bmluaXRpYWxpemVkIHZhcmlhYmxlIHVzYWdlLCBvciBjb3B5aW5nIGtlcm5lbCBkYXRhIHRvIHVzZXJzcGFjZS4gVGhlcmVmb3JlLCB0aGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3Mgb3Iga2VybmVsIGluZm8tbGVha3MsIGFuZCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGEgY2FsY3VsYXRpb24gaW4gYGt2bV9tbXVfY2hhbmdlX21tdV9wYWdlcygpYCB0byBwcmV2ZW50IGBuX21heF9tbXVfcGFnZXNgIGZyb20gYmVpbmcgc2V0IGxvd2VyIHRoYW4gYGdvYWxfbnJfbW11X3BhZ2VzYCBpZiBga3ZtX21tdV96YXBfb2xkZXN0X21tdV9wYWdlcygpYCB6YXBzIG1vcmUgc2hhZG93IHBhZ2VzIHRoYW4gcmVxdWVzdGVkLiBUaGlzIGNoYW5nZSBvbmx5IHVwZGF0ZXMgYSBzY2FsYXIgaW50ZWdlciB2YWx1ZSB0cmFja2luZyBNTVUgcGFnZSBsaW1pdHMgYW5kIGRvZXMgbm90IGludm9sdmUgbWVtb3J5IGFsbG9jYXRpb25zLCB1bmluaXRpYWxpemVkIHZhcmlhYmxlIHVzYWdlLCBvciBjb3B5aW5nIGtlcm5lbCBkYXRhIHRvIHVzZXJzcGFjZS4gVGhlcmVmb3JlLCB0aGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3Mgb3Iga2VybmVsIGluZm8tbGVha3MsIGFuZCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowtjvfh[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-11 06:44:32 +0000 UTC FinishedAt: 2026-09-11 07:05:39 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "d4b7fb647204f0c81dfeae2d1a708e4d858e0c94", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM", "KVM_INTEL", "KVM_AMD" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "d4b7fb647204f0c81dfeae2d1a708e4d858e0c94", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM", "KVM_INTEL", "KVM_AMD" ], "series_id": "a6903d7a-0ce0-4948-a78f-8223ce8066fb" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "kvm_mmu_change_mmu_pages", "kvm_vm_ioctl_set_nr_mmu_pages" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDA3OjA0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7LAogICAgJiMzNDtLVk1fSU5URUwmIzM0OywKICAgICYjMzQ7S1ZNX0FNRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9tbXVfY2hhbmdlX21tdV9wYWdlcyYjMzQ7LAogICAgJiMzNDtrdm1fdm1faW9jdGxfc2V0X25yX21tdV9wYWdlcyYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGEgY2FsY3VsYXRpb24gaW4gYGt2bV9tbXVfY2hhbmdlX21tdV9wYWdlcygpYCB0byBwcmV2ZW50IGBuX21heF9tbXVfcGFnZXNgIGZyb20gYmVpbmcgc2V0IGxvd2VyIHRoYW4gYGdvYWxfbnJfbW11X3BhZ2VzYCBpZiBga3ZtX21tdV96YXBfb2xkZXN0X21tdV9wYWdlcygpYCB6YXBzIG1vcmUgc2hhZG93IHBhZ2VzIHRoYW4gcmVxdWVzdGVkLiBUaGlzIGNoYW5nZSBvbmx5IHVwZGF0ZXMgYSBzY2FsYXIgaW50ZWdlciB2YWx1ZSB0cmFja2luZyBNTVUgcGFnZSBsaW1pdHMgYW5kIGRvZXMgbm90IGludm9sdmUgbWVtb3J5IGFsbG9jYXRpb25zLCB1bmluaXRpYWxpemVkIHZhcmlhYmxlIHVzYWdlLCBvciBjb3B5aW5nIGtlcm5lbCBkYXRhIHRvIHVzZXJzcGFjZS4gVGhlcmVmb3JlLCB0aGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3Mgb3Iga2VybmVsIGluZm8tbGVha3MsIGFuZCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBzaGFkb3cgTU1VIHBhZ2UgY291bnQgbWFuYWdlbWVudCBsb2dpYyBpbiB4ODYgS1ZNIChga3ZtX21tdV9jaGFuZ2VfbW11X3BhZ2VzYCksIHdoaWNoIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgS1ZNIGlvY3RscyAoc3VjaCBhcyBLVk1fU0VUX05SX01NVV9QQUdFUykgYW5kIG1lbW9yeSByZWdpb24gY29uZmlndXJhdGlvbi4gRnV6emluZyBpcyByZWNvbW1lbmRlZCB0byBlbnN1cmUgY29ycmVjdCBNTVUgc2hhZG93IHBhZ2UgYWxsb2NhdGlvbiBhbmQgemFwcGluZyBpbnZhcmlhbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDA3OjA0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgOWVjMGNkNmJjMmUwNDc4NjliMmI3ZmE4ZThhYmUzNWJiYzQ3NmE2ZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgU2VwIDExIDA3OjA0OjM2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9tbXUvbW11LmMgYi9hcmNoL3g4Ni9rdm0vbW11L21tdS5jXG5pbmRleCAwNjRlY2MzM2I5MjY3Li5lZmViYTU4OTM2YTY4IDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL21tdS9tbXUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYva3ZtL21tdS9tbXUuY1xuQEAgLTI5MTMsNyAmIzQzOzI5MTMsNyBAQCB2b2lkIGt2bV9tbXVfY2hhbmdlX21tdV9wYWdlcyhzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgZ29hbF9ucl9tbXVfcGFnZXMpXG4gXHRcdGt2bV9tbXVfemFwX29sZGVzdF9tbXVfcGFnZXMoa3ZtLCBrdm0tXHUwMDNlc3RhdC5tbXVfc2hhZG93X3BhZ2VzIC1cbiBcdFx0XHRcdFx0XHQgIGdvYWxfbnJfbW11X3BhZ2VzKTtcbiBcbi1cdFx0Z29hbF9ucl9tbXVfcGFnZXMgPSBrdm0tXHUwMDNlc3RhdC5tbXVfc2hhZG93X3BhZ2VzO1xuJiM0MztcdFx0Z29hbF9ucl9tbXVfcGFnZXMgPSBtYXgoa3ZtLVx1MDAzZXN0YXQubW11X3NoYWRvd19wYWdlcywgZ29hbF9ucl9tbXVfcGFnZXMpO1xuIFx0fVxuIFxuIFx0a3ZtLVx1MDAzZWFyY2gubl9tYXhfbW11X3BhZ2VzID0gZ29hbF9ucl9tbXVfcGFnZXM7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDc6MDQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDssCiAgICAmIzM0O0tWTV9JTlRFTCYjMzQ7LAogICAgJiMzNDtLVk1fQU1EJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX21tdV9jaGFuZ2VfbW11X3BhZ2VzJiMzNDssCiAgICAmIzM0O2t2bV92bV9pb2N0bF9zZXRfbnJfbW11X3BhZ2VzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHNoYWRvdyBNTVUgcGFnZSBjb3VudCBtYW5hZ2VtZW50IGxvZ2ljIGluIHg4NiBLVk0gKGBrdm1fbW11X2NoYW5nZV9tbXVfcGFnZXNgKSwgd2hpY2ggaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBLVk0gaW9jdGxzIChzdWNoIGFzIEtWTV9TRVRfTlJfTU1VX1BBR0VTKSBhbmQgbWVtb3J5IHJlZ2lvbiBjb25maWd1cmF0aW9uLiBGdXp6aW5nIGlzIHJlY29tbWVuZGVkIHRvIGVuc3VyZSBjb3JyZWN0IE1NVSBzaGFkb3cgcGFnZSBhbGxvY2F0aW9uIGFuZCB6YXBwaW5nIGludmFyaWFudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA5ZWMwY2Q2YmMyZTA0Nzg2OWIyYjdmYThlOGFiZTM1YmJjNDc2YTZlCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBTZXAgMTEgMDc6MDQ6MzYgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vbW11L21tdS5jIGIvYXJjaC94ODYva3ZtL21tdS9tbXUuYwppbmRleCAwNjRlY2MzM2I5MjY3Li5lZmViYTU4OTM2YTY4IDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rdm0vbW11L21tdS5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS9tbXUvbW11LmMKQEAgLTI5MTMsNyAmIzQzOzI5MTMsNyBAQCB2b2lkIGt2bV9tbXVfY2hhbmdlX21tdV9wYWdlcyhzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgZ29hbF9ucl9tbXVfcGFnZXMpCiAJCWt2bV9tbXVfemFwX29sZGVzdF9tbXVfcGFnZXMoa3ZtLCBrdm0tJmd0O3N0YXQubW11X3NoYWRvd19wYWdlcyAtCiAJCQkJCQkgIGdvYWxfbnJfbW11X3BhZ2VzKTsKIAotCQlnb2FsX25yX21tdV9wYWdlcyA9IGt2bS0mZ3Q7c3RhdC5tbXVfc2hhZG93X3BhZ2VzOwomIzQzOwkJZ29hbF9ucl9tbXVfcGFnZXMgPSBtYXgoa3ZtLSZndDtzdGF0Lm1tdV9zaGFkb3dfcGFnZXMsIGdvYWxfbnJfbW11X3BhZ2VzKTsKIAl9CiAKIAlrdm0tJmd0O2FyY2gubl9tYXhfbW11X3BhZ2VzID0gZ29hbF9ucl9tbXVfcGFnZXM7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDA3OjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5NTkKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAzODkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBLVk0gTU1VIFBhZ2UgQWRqdXN0bWVudCoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBleGFtaW5lIHRoZSBjb2RlIGRpZmYsIHdoaWNoLCBhcyBleHBlY3RlZCwgaXMgbW9kaWZ5aW5nIGBhcmNoL3g4Ni9rdm0vbW11L21tdS5jYC4gU3BlY2lmaWNhbGx5LCB0aGUgY2hhbmdlIHNlZW1zIHRvIGJlIHdpdGhpbiB0aGUgYGt2bV9tbXVfY2hhbmdlX21tdV9wYWdlc2AgZnVuY3Rpb24uCgpMb29raW5nIGF0IHRoZSBkaWZmLCB0aGV5JiMzOTt2ZSBhbHRlcmVkIGhvdyB0aGUgYGdvYWxfbnJfbW11X3BhZ2VzYCB2YXJpYWJsZSBpcyB1cGRhdGVkLiBQcmV2aW91c2x5LCBhZnRlciB6YXBwaW5nIHBhZ2VzLCBpdCB3YXMgc2ltcGx5IGFzc2lnbmVkIHRoZSBjdXJyZW50IHNoYWRvdyBwYWdlIGNvdW50IChga3ZtLSZndDtzdGF0Lm1tdV9zaGFkb3dfcGFnZXNgKS4gTm93LCB0aGV5JiMzOTtyZSB1c2luZyBgbWF4KGt2bS0mZ3Q7c3RhdC5tbXVfc2hhZG93X3BhZ2VzLCBnb2FsX25yX21tdV9wYWdlcylgLiBUaGF0JiMzOTtzIGludGVyZXN0aW5nOyBpdCBsb29rcyBsaWtlIHRoZXkmIzM5O3JlIGVuc3VyaW5nIHRoZSBkZXNpcmVkIG51bWJlciBvZiBwYWdlcyBkb2VzbiYjMzk7dCBmYWxsIGJlbG93IHRoZSBleGlzdGluZyBjb3VudC4gVGhpcyBpbmRpY2F0ZXMgdGhlIGZ1bmN0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciBhZGp1c3RpbmcgdGhlIG51bWJlciBvZiBNTVUgc2hhZG93IHBhZ2VzLCBlaXRoZXIgcmVkdWNpbmcgb3IsIG5vdywgcG90ZW50aWFsbHkgKmVuc3VyaW5nKiBpdCYjMzk7cyBhdCBsZWFzdCBhcyBsYXJnZSBhcyB3aGF0JiMzOTtzIGN1cnJlbnRseSBhbGxvY2F0ZWQsIHdoaWNoIGhhcyBwZXJmb3JtYW5jZSBhbmQgc2NoZWR1bGluZyBpbXBsaWNhdGlvbnMuIEkga25vdyB0aGVyZSYjMzk7cyBhIGRlbGljYXRlIGJhbGFuY2UgaW52b2x2ZWQgaGVyZSwgYXZvaWRpbmcgb3Zlci1hbGxvY2F0aW9uIHdoaWxlIHN0aWxsIHByb3ZpZGluZyBhIGdvb2QgbGV2ZWwgb2YgcGVyZm9ybWFuY2UuIEkgY2FuIHVzZSBgZ3JlcHBlcmAgb3IgYHJlYWQtZmlsZWAgdG8gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiB0aGUgY29udGV4dCBzdXJyb3VuZGluZyB0aGlzIGZ1bmN0aW9uLCB0byB1bmRlcnN0YW5kIHByZWNpc2VseSB3aGVuIGFuZCB3aHkgdGhpcyBtb2RpZmljYXRpb24gaXMgbmVjZXNzYXJ5LiBTcGVjaWZpY2FsbHksIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZGl0aW9ucyB1bmRlciB3aGljaCBga3ZtX21tdV9jaGFuZ2VfbW11X3BhZ2VzYCBpcyBjYWxsZWQgYW5kIHdoYXQgZGljdGF0ZXMgYGdvYWxfbnJfbW11X3BhZ2VzYCBpbiB0aGUgZmlyc3QgcGxhY2UsIG9yIEkmIzM5O20gbWlzc2luZyBzb21ldGhpbmcgaW1wb3J0YW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDA3OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL21tdS9tbXUuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI5MDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MjkwMDpcdFx0XHRyZXR1cm4gLUVOT1NQQztcbjI5MDE6XHRcdHJldHVybiAwO1xuMjkwMjpcdH1cbjI5MDM6XHRcbjI5MDQ6XHQvKlxuMjkwNTpcdCAqIENoYW5naW5nIHRoZSBudW1iZXIgb2YgbW11IHBhZ2VzIGFsbG9jYXRlZCB0byB0aGUgdm1cbjI5MDY6XHQgKiBOb3RlOiBpZiBnb2FsX25yX21tdV9wYWdlcyBpcyB0b28gc21hbGwsIHlvdSB3aWxsIGdldCBkZWFkIGxvY2tcbjI5MDc6XHQgKi9cbjI5MDg6XHR2b2lkIGt2bV9tbXVfY2hhbmdlX21tdV9wYWdlcyhzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgZ29hbF9ucl9tbXVfcGFnZXMpXG4yOTA5Olx0e1xuMjkxMDpcdFx0d3JpdGVfbG9jayhcdTAwMjZrdm0tXHUwMDNlbW11X2xvY2spO1xuMjkxMTpcdFxuMjkxMjpcdFx0aWYgKGt2bS1cdTAwM2VzdGF0Lm1tdV9zaGFkb3dfcGFnZXMgXHUwMDNlIGdvYWxfbnJfbW11X3BhZ2VzKSB7XG4yOTEzOlx0XHRcdGt2bV9tbXVfemFwX29sZGVzdF9tbXVfcGFnZXMoa3ZtLCBrdm0tXHUwMDNlc3RhdC5tbXVfc2hhZG93X3BhZ2VzIC1cbjI5MTQ6XHRcdFx0XHRcdFx0XHQgIGdvYWxfbnJfbW11X3BhZ2VzKTtcbjI5MTU6XHRcbjI5MTY6XHRcdFx0Z29hbF9ucl9tbXVfcGFnZXMgPSBtYXgoa3ZtLVx1MDAzZXN0YXQubW11X3NoYWRvd19wYWdlcywgZ29hbF9ucl9tbXVfcGFnZXMpO1xuMjkxNzpcdFx0fVxuMjkxODpcdFxuMjkxOTpcdFx0a3ZtLVx1MDAzZWFyY2gubl9tYXhfbW11X3BhZ2VzID0gZ29hbF9ucl9tbXVfcGFnZXM7XG4yOTIwOlx0XG4yOTIxOlx0XHR3cml0ZV91bmxvY2soXHUwMDI2a3ZtLVx1MDAzZW1tdV9sb2NrKTtcbjI5MjI6XHR9XG4yOTIzOlx0XG4yOTI0Olx0Ym9vbCBfX2t2bV9tbXVfdW5wcm90ZWN0X2dmbl9hbmRfcmV0cnkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBncGFfdCBjcjJfb3JfZ3BhLFxuMjkyNTpcdFx0XHRcdFx0ICAgICAgIGJvb2wgYWx3YXlzX3JldHJ5KVxuMjkyNjpcdHtcbjI5Mjc6XHRcdHN0cnVjdCBrdm0gKmt2bSA9IHZjcHUtXHUwMDNla3ZtO1xuMjkyODpcdFx0TElTVF9IRUFEKGludmFsaWRfbGlzdCk7XG4yOTI5Olx0XHRzdHJ1Y3Qga3ZtX21tdV9wYWdlICpzcDtcbjI5MzA6XHRcdGdwYV90IGdwYSA9IGNyMl9vcl9ncGE7XG4yOTMxOlx0XHRib29sIHIgPSBmYWxzZTtcbjI5MzI6XHRcbjI5MzM6XHRcdC8qXG4yOTM0Olx0XHQgKiBCYWlsIGVhcmx5IGlmIHRoZXJlIGFyZW4mIzM5O3QgYW55IHdyaXRlLXByb3RlY3RlZCBzaGFkb3cgcGFnZXMgdG8gYXZvaWRcbjI5MzU6XHRcdCAqIHVubmVjZXNzYXJpbHkgdGFraW5nIG1tdV9sb2NrIGxvY2ssIGUuZy4gaWYgdGhlIGdmbiBpcyB3cml0ZS10cmFja2VkXG4yOTM2Olx0XHQgKiBieSBhIHRoaXJkIHBhcnR5LiAgUmVhZGluZyBpbmRpcmVjdF9zaGFkb3dfcGFnZXMgd2l0aG91dCBob2xkaW5nXG4yOTM3Olx0XHQgKiBtbXVfbG9jayBpcyBzYWZlLCBhcyB0aGlzIGlzIHB1cmVseSBhbiBvcHRpbWl6YXRpb24sIGkuZS4gYSBmYWxzZVxuMjkzODpcdFx0ICogcG9zaXRpdmUgaXMgYmVuaWduLCBhbmQgYSBmYWxzZSBuZWdhdGl2ZSB3aWxsIHNpbXBseSByZXN1bHQgaW4gS1ZNXG4yOTM5Olx0XHQgKiBza2lwcGluZyB0aGUgdW5wcm90ZWN0JiM0MztyZXRyeSBwYXRoLCB3aGljaCBpcyBhbHNvIGFuIG9wdGltaXphdGlvbi5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwNzowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDcwCgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIGBrdm1fbW11X2NoYW5nZV9tbXVfcGFnZXNgIENhbGxzaXRlKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3cgdGhhdCBsZWFkcyB0byBga3ZtX21tdV9jaGFuZ2VfbW11X3BhZ2VzYC4gTXkgcHJpbWFyeSBnb2FsIGlzIHRvIGlkZW50aWZ5IHRoZSBldmVudHMgb3IgY29uZGl0aW9ucyB0aGF0IG5lY2Vzc2l0YXRlIHRoaXMgTU1VIG1vZGlmaWNhdGlvbi4gSSYjMzk7bGwgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gdGhpcyBmdW5jdGlvbiBjYWxsIHRvIGl0cyBjYWxsZXJzIGFuZCwgaWRlYWxseSwgdW5kZXJzdGFuZCB0aGUgaGlnaGVyLWxldmVsIGNvbnRleHQgd2l0aGluIHRoZSBLVk0gaW5mcmFzdHJ1Y3R1cmUgdGhhdCAqZGVtYW5kcyogYSBjaGFuZ2UgdG8gdGhlIE1NVSBwYWdlIHN0cnVjdHVyZXMuIEFyZSB3ZSB0YWxraW5nIGFib3V0IGd1ZXN0IG1lbW9yeSBtYXBwaW5nIG1vZGlmaWNhdGlvbnMsIHBhZ2UgZmF1bHRzLCBFTTY0VCBjb252ZXJzaW9ucyxFUFQgb3BlcmF0aW9ucywgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IEEgcXVpY2sgc2NhbiBvZiB0aGUgY2FsbGVycyB3aWxsIGhvcGVmdWxseSByZXZlYWwgd2hpY2ggYXJlYXMgb2YgS1ZNIGFyZSBsZXZlcmFnaW5nIHRoaXMgZnVuY3Rpb24gYW5kIHdoYXQga2luZCBvZiBzdGF0ZSB0cmFuc2l0aW9ucyBhcmUgaGFwcGVuaW5nIGp1c3QgcHJpb3IgdG8gdGhpcyBjYWxsLiBJJiMzOTttIGxvb2tpbmcgZm9yIGNsdWVzIGFib3V0IHRoZSB0eXBlcyBvZiBNTVUgdXBkYXRlcyB0aGlzIGZ1bmN0aW9uIGhhbmRsZXM6IHNpbmdsZSBwYWdlIG1vZGlmaWNhdGlvbnMsIGxhcmdlciByYW5nZSB1cGRhdGVzLCB0cmFuc2xhdGlvbiBpbnZhbGlkYXRpb25zLCBldGMuIEkmIzM5O2xsIGFsc28gYmUgd2F0Y2hpbmcgZm9yIGFueSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlcyBpbiBwbGF5LCB0byB1bmRlcnN0YW5kIHRoZSBwb3RlbnRpYWwgY29uY3VycmVuY3kgaW1wbGljYXRpb25zIGFuZCBpZiB0aGVyZSBhcmUgbG9ja3MgaW52b2x2ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDc6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX21tdV9jaGFuZ2VfbW11X3BhZ2VzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9tbXUuaD0xMzQ9dm9pZCBrdm1fbW11X2ludmFsaWRhdGVfbW1pb19zcHRlcyhzdHJ1Y3Qga3ZtICprdm0sIHU2NCBnZW4pO1xuYXJjaC94ODYva3ZtL21tdS5oOjEzNTp2b2lkIGt2bV9tbXVfY2hhbmdlX21tdV9wYWdlcyhzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcga3ZtX25yX21tdV9wYWdlcyk7XG5hcmNoL3g4Ni9rdm0vbW11LmgtMTM2LXZvaWQga3ZtX3phcF9nZm5fcmFuZ2Uoc3RydWN0IGt2bSAqa3ZtLCBnZm5fdCBnZm5fc3RhcnQsIGdmbl90IGdmbl9lbmQpO1xuLS1cbmFyY2gveDg2L2t2bS9tbXUvbW11LmM9Mjg4MT1zdGF0aWMgaW50IG1ha2VfbW11X3BhZ2VzX2F2YWlsYWJsZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL21tdS9tbXUuYy0yOTA3LSAqL1xuYXJjaC94ODYva3ZtL21tdS9tbXUuYzoyOTA4OnZvaWQga3ZtX21tdV9jaGFuZ2VfbW11X3BhZ2VzKHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgbG9uZyBnb2FsX25yX21tdV9wYWdlcylcbmFyY2gveDg2L2t2bS9tbXUvbW11LmMtMjkwOS17XG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jPTM5MTA9c3RhdGljIGludCBrdm1fdm1faW9jdGxfc2V0X25yX21tdV9wYWdlcyhzdHJ1Y3Qga3ZtICprdm0sXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTM5MTctXG5hcmNoL3g4Ni9rdm0veDg2LmM6MzkxODpcdGt2bV9tbXVfY2hhbmdlX21tdV9wYWdlcyhrdm0sIGt2bV9ucl9tbXVfcGFnZXMpO1xuYXJjaC94ODYva3ZtL3g4Ni5jLTM5MTktXHRrdm0tXHUwMDNlYXJjaC5uX3JlcXVlc3RlZF9tbXVfcGFnZXMgPSBrdm1fbnJfbW11X3BhZ2VzO1xuLS1cbmFyY2gveDg2L2t2bS94ODYuYz0xMDMzOD12b2lkIGt2bV9hcmNoX2NvbW1pdF9tZW1vcnlfcmVnaW9uKHN0cnVjdCBrdm0gKmt2bSxcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTAzNTEtXHRcdG5yX21tdV9wYWdlcyA9IG1heChucl9tbXVfcGFnZXMsIEtWTV9NSU5fQUxMT0NfTU1VX1BBR0VTKTtcbmFyY2gveDg2L2t2bS94ODYuYzoxMDM1MjpcdFx0a3ZtX21tdV9jaGFuZ2VfbW11X3BhZ2VzKGt2bSwgbnJfbW11X3BhZ2VzKTtcbmFyY2gveDg2L2t2bS94ODYuYy0xMDM1My1cdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwNzowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NDEyCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMTE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBLVk0gTWVtb3J5IE1hbmFnZW1lbnQqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gSSYjMzk7bSBsb29raW5nIGF0IGBrdm1fdm1faW9jdGxfc2V0X25yX21tdV9wYWdlc2AgLSB0aGF0JiMzOTtzIHRoZSBLVk1fU0VUX05SX01NVV9QQUdFUyBpb2N0bCBvbiBhIHZpcnR1YWwgbWFjaGluZSBmaWxlIGRlc2NyaXB0b3IgLSBhbmQgYGt2bV9hcmNoX2NvbW1pdF9tZW1vcnlfcmVnaW9uYC4gVGhlc2UgZnVuY3Rpb25zIHNlZW0gY2VudHJhbCB0byBtZW1vcnkgbWFuYWdlbWVudCB3aXRoaW4gS1ZNLCBzcGVjaWZpY2FsbHkgZm9yIHg4NiBhcmNoaXRlY3R1cmVzLiBJIGtub3cgS1ZNIG9uIGFtZDY0IGlzIHJvYnVzdDsgaXQmIzM5O3Mgc29tZXRoaW5nIEkmIzM5O3ZlIHdvcmtlZCB3aXRoIGV4dGVuc2l2ZWx5LCB3aGV0aGVyIGl0JiMzOTtzIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiBvciB0aGUgbW9yZSBzdGFuZGFyZCBLVk0gc2V0dXBzIGluIFFFTVUgb3IgZW52aXJvbm1lbnRzIGxpa2UgR29vZ2xlIENvbXB1dGUgRW5naW5lLiBUaGUgZmFjdCB0aGF0IGl0JiMzOTtzIGFjY2Vzc2libGUgYW5kIHN1cHBvcnRlZCB3aXRoaW4gU3l6a2FsbGVyJiMzOTtzIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBpcyByZWFzc3VyaW5nLiBOb3csIGxldCYjMzk7cyBkb3VibGUtY2hlY2sgdGhlIEtjb25maWcgcmVxdWlyZW1lbnRzIHJlbGF0ZWQgdG8gS1ZNIHN1cHBvcnQgb24geDg2LiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnMgYXJlIGluIHBsYWNlIGJlZm9yZSBwcm9jZWVkaW5nIGFueSBmdXJ0aGVyLCB0byBhdm9pZCBhbnkgdW5leHBlY3RlZCByb2FkYmxvY2tzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDA3OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBLVk0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MjA6Y29uZmlnIEtWTV9YODZcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIxLVx0ZGVmX3RyaXN0YXRlIEtWTSBpZiAoS1ZNX0lOVEVMICE9IG4gfHwgS1ZNX0FNRCAhPSBuKVxuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTUxLVxuYXJjaC94ODYva3ZtL0tjb25maWc6NTI6Y29uZmlnIEtWTVxuYXJjaC94ODYva3ZtL0tjb25maWctNTMtXHR0cmlzdGF0ZSBcJiMzNDtLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy02OC1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjY5OmNvbmZpZyBLVk1fV0VSUk9SXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy03MC1cdGJvb2wgXCYjMzQ7Q29tcGlsZSBLVk0gd2l0aCAtV2Vycm9yXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctODItXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo4Mzpjb25maWcgS1ZNX1NXX1BST1RFQ1RFRF9WTVxuYXJjaC94ODYva3ZtL0tjb25maWctODQtXHRib29sIFwmIzM0O0VuYWJsZSBzdXBwb3J0IGZvciBLVk0gc29mdHdhcmUtcHJvdGVjdGVkIFZNc1wmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTk1LVxuYXJjaC94ODYva3ZtL0tjb25maWc6OTY6Y29uZmlnIEtWTV9JTlRFTFxuYXJjaC94ODYva3ZtL0tjb25maWctOTctXHR0cmlzdGF0ZSBcJiMzNDtLVk0gZm9yIEludGVsIChhbmQgY29tcGF0aWJsZSkgcHJvY2Vzc29ycyBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTA2LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTA3OmNvbmZpZyBLVk1fSU5URUxfUFJPVkVfVkVcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEwOC0gICAgICAgIGJvb2wgXCYjMzQ7Q2hlY2sgdGhhdCBndWVzdHMgZG8gbm90IHJlY2VpdmUgI1ZFIGV4Y2VwdGlvbnNcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz0xMjI9Y29uZmlnIFg4Nl9TR1hfS1ZNXG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTMzLVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTM0OmNvbmZpZyBLVk1fSU5URUxfVERYXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMzUtXHRib29sIFwmIzM0O0ludGVsIFRydXN0IERvbWFpbiBFeHRlbnNpb25zIChURFgpIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNDUtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNDY6Y29uZmlnIEtWTV9BTURcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE0Ny1cdHRyaXN0YXRlIFwmIzM0O0tWTSBmb3IgQU1EIHByb2Nlc3NvcnMgc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE1NS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjE1Njpjb25maWcgS1ZNX0FNRF9TRVZcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE1Ny1cdGJvb2wgXCYjMzQ7QU1EIFNlY3VyZSBFbmNyeXB0ZWQgVmlydHVhbGl6YXRpb24gKFNFVikgc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE3Mi1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjE3Mzpjb25maWcgS1ZNX0lPQVBJQ1xuYXJjaC94ODYva3ZtL0tjb25maWctMTc0LVx0Ym9vbCBcJiMzNDtJL08gQVBJQywgUElDLCBhbmQgUElUIGVtdWxhdGlvblwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE4Mi1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjE4Mzpjb25maWcgS1ZNX1NNTVxuYXJjaC94ODYva3ZtL0tjb25maWctMTg0LVx0Ym9vbCBcJiMzNDtTeXN0ZW0gTWFuYWdlbWVudCBNb2RlIGVtdWxhdGlvblwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5My1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjE5NDpjb25maWcgS1ZNX0hZUEVSVlxuYXJjaC94ODYva3ZtL0tjb25maWctMTk1LVx0Ym9vbCBcJiMzNDtTdXBwb3J0IGZvciBNaWNyb3NvZnQgSHlwZXItViBlbXVsYXRpb25cJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMDctXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMDg6Y29uZmlnIEtWTV9YRU5cbmFyY2gveDg2L2t2bS9LY29uZmlnLTIwOS1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBmb3IgWGVuIGh5cGVyY2FsbCBpbnRlcmZhY2VcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMTYtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMTc6Y29uZmlnIEtWTV9QUk9WRV9NTVVcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIxOC1cdGJvb2wgXCYjMzQ7UHJvdmUgS1ZNIE1NVSBjb3JyZWN0bmVzc1wmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTIyOS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjIzMDpjb25maWcgS1ZNX0VYVEVSTkFMX1dSSVRFX1RSQUNLSU5HXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzEtXHRib29sXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzItXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMzM6Y29uZmlnIEtWTV9NQVhfTlJfVkNQVVNcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIzNC1cdGludCBcJiMzNDtNYXhpbXVtIG51bWJlciBvZiB2Q1BVcyBwZXIgS1ZNIGd1ZXN0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDc6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjk4NAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDI4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246CgoqKkRpdmluZyBpbnRvIHRoZSBLVk0geDg2IEJ1aWxkIFN5c3RlbSoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0JiMzOTtzIGJlaW5nIGNvbXBpbGVkIGZvciB0aGUgS1ZNIHg4NiBrZXJuZWwgbW9kdWxlLiBOYXR1cmFsbHksIHRoZSBmaXJzdCBwbGFjZSB0byBsb29rIGlzIHRoZSBgYXJjaC94ODYva3ZtL01ha2VmaWxlYC4gVGhhdCYjMzk7cyB3aGVyZSBhbGwgdGhlIG1hZ2ljIGhhcHBlbnMgd2hlbiB0aGUgYnVpbGQgc3lzdGVtIGlzIHB1bGxpbmcgdG9nZXRoZXIgdGhlIG5lY2Vzc2FyeSBvYmplY3QgZmlsZXMuIEkmIzM5O2xsIG5lZWQgdG8gc2VlIHByZWNpc2VseSB3aGljaCBzb3VyY2UgZmlsZXMgYXJlIGJlaW5nIGluY2x1ZGVkLCBhbmQgdW5kZXIgd2hhdCBzcGVjaWZpYyBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFVuZGVyc3RhbmRpbmcgdGhlIGNvbmRpdGlvbmFsIGluY2x1c2lvbnMgd2lsbCBnaXZlIG1lIHRoZSBiZXN0IHZpZXcgb2Ygd2hhdCBmZWF0dXJlcyBhbmQgZnVuY3Rpb25hbGl0eSBhcmUgYmFrZWQgaW50byB0aGUgZmluYWwgbW9kdWxlIGJhc2VkIG9uIG15IHN5c3RlbSYjMzk7cyBjdXJyZW50IGtlcm5lbCBjb25maWd1cmF0aW9uLiBJ4oCZbGwgYmUgY2hlY2tpbmcgZm9yIHNwZWNpZmljIGBDT05GSUdfYCBmbGFncyBhbmQgdGhlaXIgaW1wYWN0IG9uIHRoZSBidWlsZC4gTGV0JiMzOTtzIGdldCB0byBpdCEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDc6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW11L21tdVxcLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL01ha2VmaWxlPTg9a3ZtLXlcdFx0XHQmIzQzOz0geDg2Lm8gZW11bGF0ZS5vIGlycS5vIGxhcGljLm8gY3B1aWQubyBtc3JzLm8gcG11Lm8gcmVncy5vIFxcXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGU6OTpcdFx0XHQgICBtdHJyLm8gZGVidWdmcy5vIG1tdS9tbXUubyBtbXUvcGFnZV90cmFjay5vIG1tdS9zcHRlLm9cbmFyY2gveDg2L2t2bS9NYWtlZmlsZS0xMC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDc6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzM0NwoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDY2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKktWTSBNb2R1bGUgQ29tcGlsYXRpb24gRGVwZW5kZW5jaWVzKioKCk9rYXksIHNvIEkmIzM5O20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgdGhlIGJ1aWxkIGNvbmRpdGlvbnMgZm9yIGBrdm0teWAuIFJpZ2h0LCBsZXQmIzM5O3MgZXN0YWJsaXNoIHRoZSBncm91bmQgdHJ1dGg6IGl0JiMzOTtzIGJ1aWx0IHdoZW4gYENPTkZJR19LVk1gIGlzIGRlZmluZWQuIFRoYXQgbWFrZXMgc2Vuc2UsIHByZXR0eSBmb3VuZGF0aW9uYWwuIFRoZW4sIHRvIGdldCBtb3JlIHNwZWNpZmljLCBpdCByZXF1aXJlcyBlaXRoZXIgYENPTkZJR19LVk1fSU5URUxgIG9yIGBDT05GSUdfS1ZNX0FNRGAgYmUgZW5hYmxlZCBhcyB3ZWxsLCB3aGljaCBhcmUgZ29pbmcgdG8gZGVmaW5lIHRoZSB1bmRlcmx5aW5nIGFyY2hpdGVjdHVyZSwgSW50ZWwgb3IgQU1EIHJlc3BlY3RpdmVseS4KCkFscmlnaHQsIHNlZW1zIHNpbXBsZSBlbm91Z2ggc28gZmFyLiBOb3csIGp1c3QgdG8gY29uZmlybSBteSB1bmRlcnN0YW5kaW5nIGFuZCBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgc29tZXRoaW5nIHN1YnRsZSwgSSBzaG91bGQgcHJvYmFibHkgdGFrZSBhIHF1aWNrIGxvb2sgYXQgYGFyY2gveDg2L2t2bS9NYWtlZmlsZWAgLSBsaW5lcyAxIHRocm91Z2ggMTUsIHRvIGJlIHByZWNpc2UuIEl0IHNob3VsZCBsYXkgb3V0IHRoZSBzcGVjaWZpYyBkZXBlbmRlbmNpZXMgZm9yIGNvbXBpbGluZyB0aGUgS1ZNIG1vZHVsZSBpbiBhIGNsZWFyIGZhc2hpb24uIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgTWFrZWZpbGUgcmV2ZWFscy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDc6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vTWFrZWZpbGUmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4gICAyOlx0XG4gICAzOlx0Y2NmbGFncy15ICYjNDM7PSAtSSAkKHNyY3RyZWUpL2FyY2gveDg2L2t2bVxuICAgNDpcdGNjZmxhZ3MtJChDT05GSUdfS1ZNX1dFUlJPUikgJiM0Mzs9IC1XZXJyb3JcbiAgIDU6XHRcbiAgIDY6XHRpbmNsdWRlICQoc3JjdHJlZSkvdmlydC9rdm0vTWFrZWZpbGUua3ZtXG4gICA3Olx0XG4gICA4Olx0a3ZtLXlcdFx0XHQmIzQzOz0geDg2Lm8gZW11bGF0ZS5vIGlycS5vIGxhcGljLm8gY3B1aWQubyBtc3JzLm8gcG11Lm8gcmVncy5vIFxcXG4gICA5Olx0XHRcdFx0ICAgbXRyci5vIGRlYnVnZnMubyBtbXUvbW11Lm8gbW11L3BhZ2VfdHJhY2subyBtbXUvc3B0ZS5vXG4gIDEwOlx0XG4gIDExOlx0a3ZtLSQoQ09ORklHX1g4Nl82NCkgJiM0Mzs9IG1tdS90ZHBfaXRlci5vIG1tdS90ZHBfbW11Lm9cbiAgMTI6XHRrdm0tJChDT05GSUdfS1ZNX0lPQVBJQykgJiM0Mzs9IGk4MjU5Lm8gaTgyNTQubyBpb2FwaWMub1xuICAxMzpcdGt2bS0kKENPTkZJR19LVk1fSFlQRVJWKSAmIzQzOz0gaHlwZXJ2Lm9cbiAgMTQ6XHRrdm0tJChDT05GSUdfS1ZNX1hFTilcdCYjNDM7PSB4ZW4ub1xuICAxNTpcdGt2bS0kKENPTkZJR19LVk1fU01NKVx0JiM0Mzs9IHNtbS5vXG4gIDE2Olx0XG4gIDE3Olx0a3ZtLWludGVsLXlcdFx0JiM0Mzs9IHZteC92bXgubyB2bXgvdm1lbnRlci5vIHZteC9wbXVfaW50ZWwubyB2bXgvdm1jczEyLm8gXFxcbiAgMTg6XHRcdFx0XHQgICB2bXgvbmVzdGVkLm8gdm14L3Bvc3RlZF9pbnRyLm8gdm14L21haW4ub1xuICAxOTpcdFxuICAyMDpcdGt2bS1pbnRlbC0kKENPTkZJR19YODZfU0dYX0tWTSlcdCYjNDM7PSB2bXgvc2d4Lm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDc6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODEwNAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDY0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKktWTSBNb2R1bGUgSW5jbHVzaW9uIEludmVzdGlnYXRpb24qKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgZXhhY3QgbWVjaGFuaXNtcyBmb3IgS1ZNIG1vZHVsZSBjb21waWxhdGlvbi4gTXkgaW5pdGlhbCBodW5jaCwgZ2l2ZW4gdGhlIHN0cnVjdHVyZSBvZiB0aGUga2VybmVsLCBpcyB0aGF0IHRoZSBgdmlydC9rdm0vTWFrZWZpbGUua3ZtYCBmaWxlIGlzIHRoZSBrZXkuIEkgZXhwZWN0IHRvIGZpbmQgYSBsaW5lIGluIHRoZXJlIHRoYXQgbG9va3MgbGlrZSBgb2JqLSQoQ09ORklHX0tWTSkgJiM0Mzs9IGt2bS5vYCBvciBzb21ldGhpbmcgYWxvbmcgdGhvc2UgbGluZXMsIGNvbnRyb2xsaW5nIHRoZSBpbmNsdXNpb24gb2YgdGhlIGNvcmUgYGt2bS5vYCBvYmplY3QgYmFzZWQgb24gdGhlIGBDT05GSUdfS1ZNYCBjb25maWd1cmF0aW9uIG9wdGlvbi4gSG93ZXZlciwgaXQmIzM5O3MgYWxzbyB3b3J0aCBjaGVja2luZyB0aGUgYGFyY2gveDg2L2t2bS9LY29uZmlnYCBmaWxlIGluIGNhc2UgS1ZNIGNvbmZpZ3VyYXRpb24gaXMgYmVpbmcgY29udHJvbGxlZCBpbiB0aGUgYXJjaGl0ZWN0dXJlIHNwZWNpZmljIGZpbGUuIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIHRob3NlIHR3byBmaWxlcyB0byBnZXQgdG8gdGhlIGJvdHRvbSBvZiB0aGlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwNzowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDT05GSUdfS1ZNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA3NzYgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmFyY2gveDg2L2t2bS9NYWtlZmlsZT0zPWNjZmxhZ3MteSAmIzQzOz0gLUkgJChzcmN0cmVlKS9hcmNoL3g4Ni9rdm1cbmFyY2gveDg2L2t2bS9NYWtlZmlsZTo0OmNjZmxhZ3MtJChDT05GSUdfS1ZNX1dFUlJPUikgJiM0Mzs9IC1XZXJyb3JcbmFyY2gveDg2L2t2bS9NYWtlZmlsZS01LVxuLS1cbmFyY2gveDg2L2t2bS9NYWtlZmlsZT0xMT1rdm0tJChDT05GSUdfWDg2XzY0KSAmIzQzOz0gbW11L3RkcF9pdGVyLm8gbW11L3RkcF9tbXUub1xuYXJjaC94ODYva3ZtL01ha2VmaWxlOjEyOmt2bS0kKENPTkZJR19LVk1fSU9BUElDKSAmIzQzOz0gaTgyNTkubyBpODI1NC5vIGlvYXBpYy5vXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGU6MTM6a3ZtLSQoQ09ORklHX0tWTV9IWVBFUlYpICYjNDM7PSBoeXBlcnYub1xuYXJjaC94ODYva3ZtL01ha2VmaWxlOjE0Omt2bS0kKENPTkZJR19LVk1fWEVOKVx0JiM0Mzs9IHhlbi5vXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGU6MTU6a3ZtLSQoQ09ORklHX0tWTV9TTU0pXHQmIzQzOz0gc21tLm9cbmFyY2gveDg2L2t2bS9NYWtlZmlsZS0xNi1cbi0tXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGU9MjA9a3ZtLWludGVsLSQoQ09ORklHX1g4Nl9TR1hfS1ZNKVx0JiM0Mzs9IHZteC9zZ3gub1xuYXJjaC94ODYva3ZtL01ha2VmaWxlOjIxOmt2bS1pbnRlbC0kKENPTkZJR19LVk1fSFlQRVJWKVx0JiM0Mzs9IHZteC9oeXBlcnYubyB2bXgvaHlwZXJ2X2V2bWNzLm9cbmFyY2gveDg2L2t2bS9NYWtlZmlsZToyMjprdm0taW50ZWwtJChDT05GSUdfS1ZNX0lOVEVMX1REWClcdCYjNDM7PSB2bXgvdGR4Lm9cbmFyY2gveDg2L2t2bS9NYWtlZmlsZS0yMy1cbmFyY2gveDg2L2t2bS9NYWtlZmlsZT0yND1rdm0tYW1kLXlcdFx0JiM0Mzs9IHN2bS9zdm0ubyBzdm0vdm1lbnRlci5vIHN2bS9wbXUubyBzdm0vbmVzdGVkLm8gc3ZtL2F2aWMub1xuYXJjaC94ODYva3ZtL01ha2VmaWxlLTI1LVxuYXJjaC94ODYva3ZtL01ha2VmaWxlOjI2Omt2bS1hbWQtJChDT05GSUdfS1ZNX0FNRF9TRVYpXHQmIzQzOz0gc3ZtL3Nldi5vXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGU6Mjc6a3ZtLWFtZC0kKENPTkZJR19LVk1fSFlQRVJWKVx0JiM0Mzs9IHN2bS9oeXBlcnYub1xuYXJjaC94ODYva3ZtL01ha2VmaWxlLTI4LVxuLS1cbmFyY2gveDg2L2t2bS9NYWtlZmlsZT0zMz1lbmRpZlxuYXJjaC94ODYva3ZtL01ha2VmaWxlLTM0LVxuYXJjaC94ODYva3ZtL01ha2VmaWxlOjM1Om9iai0kKENPTkZJR19LVk1fWDg2KVx0JiM0Mzs9IGt2bS5vXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGU6MzY6b2JqLSQoQ09ORklHX0tWTV9JTlRFTClcdCYjNDM7PSBrdm0taW50ZWwub1xuYXJjaC94ODYva3ZtL01ha2VmaWxlOjM3Om9iai0kKENPTkZJR19LVk1fQU1EKVx0JiM0Mzs9IGt2bS1hbWQub1xuYXJjaC94ODYva3ZtL01ha2VmaWxlLTM4LVxuLS1cbmFyY2gveDg2L2t2bS9NYWtlZmlsZT00OT1jbGVhbi1maWxlcyAmIzQzOz0ga3ZtLWFzbS1vZmZzZXRzLmhcbi0tXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGUtNTUtIyB1c2UgRVhQT1JUX1NZTUJPTF9HUEwsIGFuZCBFWFBPUlRfU1lNQk9MIHNob3VsZCBuZXZlciBiZSB1c2VkLlxuYXJjaC94ODYva3ZtL01ha2VmaWxlOjU2OmlmZGVmIENPTkZJR19LVk1fWDg2XG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGUtNTctIyBTZWFyY2ggcmVjdXJzaXZlbHkgZm9yIHdob2xlIHdvcmRzIGFuZCBwcmludCBsaW5lIG51bWJlcnMuICBGaWx0ZXIgb3V0IHRoZVxuLS1cbmFyY2gveDg2L2t2bS9NYWtlZmlsZT05Nz11bmRlZmluZSBleHBvcnRzX2dyZXBfdHJhaWxlclxuYXJjaC94ODYva3ZtL01ha2VmaWxlOjk4OmVuZGlmICMgQ09ORklHX0tWTV9YODZcbi0tXG5hcmNoL3g4Ni9rdm0vY3B1aWQuYz0zMjc9c3RhdGljIGJvb2wga3ZtX2NwdWlkX2hhc19oeXBlcnYoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC94ODYva3ZtL2NwdWlkLmMtMzI4LXtcbmFyY2gveDg2L2t2bS9jcHVpZC5jOjMyOTojaWZkZWYgQ09ORklHX0tWTV9IWVBFUlZcbmFyY2gveDg2L2t2bS9jcHVpZC5jLTMzMC1cdHN0cnVjdCBrdm1fY3B1aWRfZW50cnkyICplbnRyeTtcbi0tXG5hcmNoL3g4Ni9rdm0vY3B1aWQuYz01MTA9c3RhdGljIGludCBrdm1fc2V0X2NwdWlkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9jcHVpZF9lbnRyeTIgKmUyLFxuLS1cbmFyY2gveDg2L2t2bS9jcHVpZC5jLTU2MC1cbmFyY2gveDg2L2t2bS9jcHVpZC5jOjU2MTojaWZkZWYgQ09ORklHX0tWTV9IWVBFUlZcbmFyY2gveDg2L2t2bS9jcHVpZC5jLTU2Mi1cdGlmIChrdm1fY3B1aWRfaGFzX2h5cGVydih2Y3B1KSkge1xuLS1cbmFyY2gveDg2L2t2bS9jcHVpZC5jLTU3Mi1cbmFyY2gveDg2L2t2bS9jcHVpZC5jOjU3MzojaWZkZWYgQ09ORklHX0tWTV9YRU5cbmFyY2gveDg2L2t2bS9jcHVpZC5jLTU3NC1cdHZjcHUtXHUwMDNlYXJjaC54ZW4uY3B1aWQgPSBrdm1fZ2V0X2h5cGVydmlzb3JfY3B1aWQodmNwdSwgWEVOX1NJR05BVFVSRSk7XG4tLVxuYXJjaC94ODYva3ZtL2h5cGVydi5oLTI3LVxuYXJjaC94ODYva3ZtL2h5cGVydi5oOjI4OiNpZmRlZiBDT05GSUdfS1ZNX0hZUEVSVlxuYXJjaC94ODYva3ZtL2h5cGVydi5oLTI5LVxuLS1cbmFyY2gveDg2L2t2bS9oeXBlcnYuaD0zNzg9aW50IGt2bV9odl92Y3B1X2ZsdXNoX3RsYihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xuYXJjaC94ODYva3ZtL2h5cGVydi5oOjM3OTojZWxzZSAvKiBDT05GSUdfS1ZNX0hZUEVSViAqL1xuYXJjaC94ODYva3ZtL2h5cGVydi5oLTM4MC1zdGF0aWMgaW5saW5lIHZvaWQga3ZtX2h2X3NldHVwX3RzY19wYWdlKHN0cnVjdCBrdm0gKmt2bSxcbi0tXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2Lmg9NDI2PXN0YXRpYyBpbmxpbmUgdm9pZCBrdm1faHZfbmVzdGVkX3RyYW5zdGlvbl90bGJfZmx1c2goc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBib29sIHRkcF9lbmFibGVkKSB7fVxuYXJjaC94ODYva3ZtL2h5cGVydi5oOjQyNzojZW5kaWYgLyogQ09ORklHX0tWTV9IWVBFUlYgKi9cbmFyY2gveDg2L2t2bS9oeXBlcnYuaC00MjgtXG4tLVxuYXJjaC94ODYva3ZtL2k4MjU0LmgtMTItXG5hcmNoL3g4Ni9rdm0vaTgyNTQuaDoxMzojaWZkZWYgQ09ORklHX0tWTV9JT0FQSUNcbmFyY2gveDg2L2t2bS9pODI1NC5oLTE0LXN0cnVjdCBrdm1fa3BpdF9jaGFubmVsX3N0YXRlIHtcbi0tXG5hcmNoL3g4Ni9rdm0vaTgyNTQuaD02OT12b2lkIGt2bV9mcmVlX3BpdChzdHJ1Y3Qga3ZtICprdm0pO1xuYXJjaC94ODYva3ZtL2k4MjU0Lmg6NzA6I2VuZGlmIC8qIENPTkZJR19LVk1fSU9BUElDICovXG5hcmNoL3g4Ni9rdm0vaTgyNTQuaC03MS1cbi0tXG5hcmNoL3g4Ni9rdm0vaW9hcGljLmgtOC1cbmFyY2gveDg2L2t2bS9pb2FwaWMuaDo5OiNpZmRlZiBDT05GSUdfS1ZNX0lPQVBJQ1xuYXJjaC94ODYva3ZtL2lvYXBpYy5oLTEwLVxuLS1cbmFyY2gveDg2L2t2bS9pb2FwaWMuaD0xMTc9c3RhdGljIGlubGluZSBpbnQgX19rdm1faXJxX2xpbmVfc3RhdGUodW5zaWduZWQgbG9uZyAqaXJxX3N0YXRlLFxuLS1cbmFyY2gveDg2L2t2bS9pb2FwaWMuaC0xMjctfVxuYXJjaC94ODYva3ZtL2lvYXBpYy5oOjEyODojZW5kaWYgLyogQ09ORklHX0tWTV9JT0FQSUMgKi9cbmFyY2gveDg2L2t2bS9pb2FwaWMuaC0xMjktXG4tLVxuYXJjaC94ODYva3ZtL2lycS5jPTU5PWludCBrdm1fY3B1X2hhc19leHRpbnQoc3RydWN0IGt2bV92Y3B1ICp2KVxuLS1cbmFyY2gveDg2L2t2bS9pcnEuYy04MC1cbmFyY2gveDg2L2t2bS9pcnEuYzo4MTojaWZkZWYgQ09ORklHX0tWTV9JT0FQSUNcbmFyY2gveDg2L2t2bS9pcnEuYy04Mi1cdGlmIChwaWNfaW5fa2VybmVsKHYtXHUwMDNla3ZtKSlcbi0tXG5hcmNoL3g4Ni9rdm0vaXJxLmM9MTI4PWludCBrdm1fY3B1X2dldF9leHRpbnQoc3RydWN0IGt2bV92Y3B1ICp2KVxuLS1cbmFyY2gveDg2L2t2bS9pcnEuYy0xMzctXG5hcmNoL3g4Ni9rdm0vaXJxLmM6MTM4OiNpZmRlZiBDT05GSUdfS1ZNX1hFTlxuYXJjaC94ODYva3ZtL2lycS5jLTEzOS1cdGlmIChrdm1feGVuX2hhc19pbnRlcnJ1cHQodikpXG4tLVxuYXJjaC94ODYva3ZtL2lycS5jLTE0Mi1cbmFyY2gveDg2L2t2bS9pcnEuYzoxNDM6I2lmZGVmIENPTkZJR19LVk1fSU9BUElDXG5hcmNoL3g4Ni9rdm0vaXJxLmMtMTQ0LVx0aWYgKHBpY19pbl9rZXJuZWwodi1cdTAwM2Vrdm0pKVxuLS1cbmFyY2gveDg2L2t2bS9pcnEuYz0xNzc9dm9pZCBfX2t2bV9taWdyYXRlX3RpbWVycyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL2lycS5jLTE3OS1cdF9fa3ZtX21pZ3JhdGVfYXBpY190aW1lcih2Y3B1KTtcbmFyY2gveDg2L2t2bS9pcnEuYzoxODA6I2lmZGVmIENPTkZJR19LVk1fSU9BUElDXG5hcmNoL3g4Ni9rdm0vaXJxLmMtMTgxLVx0X19rdm1fbWlncmF0ZV9waXRfdGltZXIodmNwdSk7XG4tLVxuYXJjaC94ODYva3ZtL2lycS5jPTI0MT1pbnQga3ZtX2FyY2hfc2V0X2lycV9pbmF0b21pYyhzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFfcm91dGluZ19lbnRyeSAqZSxcbi0tXG5hcmNoL3g4Ni9rdm0vaXJxLmMtMjQ4LVx0c3dpdGNoIChlLVx1MDAzZXR5cGUpIHtcbmFyY2gveDg2L2t2bS9pcnEuYzoyNDk6I2lmZGVmIENPTkZJR19LVk1fSFlQRVJWXG5hcmNoL3g4Ni9rdm0vaXJxLmMtMjUwLVx0Y2FzZSBLVk1fSVJRX1JPVVRJTkdfSFZfU0lOVDpcbi0tXG5hcmNoL3g4Ni9rdm0vaXJxLmMtMjY0LVxuYXJjaC94ODYva3ZtL2lycS5jOjI2NTojaWZkZWYgQ09ORklHX0tWTV9YRU5cbmFyY2gveDg2L2t2bS9pcnEuYy0yNjYtXHRjYXNlIEtWTV9JUlFfUk9VVElOR19YRU5fRVZUQ0hOOlxuLS1cbmFyY2gveDg2L2t2bS9pcnEuYz0yOTY9aW50IGt2bV9zZXRfcm91dGluZ19lbnRyeShzdHJ1Y3Qga3ZtICprdm0sXG4tLVxuYXJjaC94ODYva3ZtL2lycS5jLTMwNC1cdHN3aXRjaCAodWUtXHUwMDNldHlwZSkge1xuYXJjaC94ODYva3ZtL2lycS5jOjMwNTojaWZkZWYgQ09ORklHX0tWTV9JT0FQSUNcbmFyY2gveDg2L2t2bS9pcnEuYy0zMDYtXHRjYXNlIEtWTV9JUlFfUk9VVElOR19JUlFDSElQOlxuLS1cbmFyY2gveDg2L2t2bS9pcnEuYy0zMzgtXHRcdGJyZWFrO1xuYXJjaC94ODYva3ZtL2lycS5jOjMzOTojaWZkZWYgQ09ORklHX0tWTV9IWVBFUlZcbmFyY2gveDg2L2t2bS9pcnEuYy0zNDAtXHRjYXNlIEtWTV9JUlFfUk9VVElOR19IVl9TSU5UOlxuLS1cbmFyY2gveDg2L2t2bS9pcnEuYy0zNDUtI2VuZGlmXG5hcmNoL3g4Ni9rdm0vaXJxLmM6MzQ2OiNpZmRlZiBDT05GSUdfS1ZNX1hFTlxuYXJjaC94ODYva3ZtL2lycS5jLTM0Ny1cdGNhc2UgS1ZNX0lSUV9ST1VUSU5HX1hFTl9FVlRDSE46XG4tLVxuYXJjaC94ODYva3ZtL2lycS5jPTQxNj12b2lkIGt2bV9hcmNoX2lycV9yb3V0aW5nX3VwZGF0ZShzdHJ1Y3Qga3ZtICprdm0pXG5hcmNoL3g4Ni9rdm0vaXJxLmMtNDE3LXtcbmFyY2gveDg2L2t2bS9pcnEuYzo0MTg6I2lmZGVmIENPTkZJR19LVk1fSFlQRVJWXG5hcmNoL3g4Ni9rdm0vaXJxLmMtNDE5LVx0a3ZtX2h2X2lycV9yb3V0aW5nX3VwZGF0ZShrdm0pO1xuLS1cbmFyY2gveDg2L2t2bS9pcnEuYz01NDA9dm9pZCBrdm1fYXJjaF91cGRhdGVfaXJxZmRfcm91dGluZyhzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFmZCAqaXJxZmQsXG4tLVxuYXJjaC94ODYva3ZtL2lycS5jLTU1NS1cbmFyY2gveDg2L2t2bS9pcnEuYzo1NTY6I2lmZGVmIENPTkZJR19LVk1fSU9BUElDXG5hcmNoL3g4Ni9rdm0vaXJxLmMtNTU3LSNkZWZpbmUgSU9BUElDX1JPVVRJTkdfRU5UUlkoaXJxKSBcXFxuLS1cbmFyY2gveDg2L2t2bS9pcnEuaC0yMC1cbmFyY2gveDg2L2t2bS9pcnEuaDoyMTojaWZkZWYgQ09ORklHX0tWTV9JT0FQSUNcbmFyY2gveDg2L2t2bS9pcnEuaC0yMi1cbi0tXG5hcmNoL3g4Ni9rdm0vaXJxLmg9NzY9c3RhdGljIGlubGluZSBpbnQgaXJxY2hpcF9mdWxsKHN0cnVjdCBrdm0gKmt2bSlcbi0tXG5hcmNoL3g4Ni9rdm0vaXJxLmgtODMtfVxuYXJjaC94ODYva3ZtL2lycS5oOjg0OiNlbHNlIC8qIENPTkZJR19LVk1fSU9BUElDICovXG5hcmNoL3g4Ni9rdm0vaXJxLmgtODUtc3RhdGljIF9fYWx3YXlzX2lubGluZSBpbnQgaXJxY2hpcF9mdWxsKHN0cnVjdCBrdm0gKmt2bSlcbi0tXG5hcmNoL3g4Ni9rdm0vaXJxLmg9MTIxPXN0YXRpYyBpbmxpbmUgdm9pZCBrdm1fd2Fybl9vbl9sb3N0X2lycShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL2lycS5oLTEzNy1cdCAqL1xuYXJjaC94ODYva3ZtL2lycS5oOjEzODpcdFdBUk5fT05fT05DRSghcGljX2luX2tlcm5lbCh2Y3B1LVx1MDAzZWt2bSkgXHUwMDI2XHUwMDI2ICFJU19FTkFCTEVEKENPTkZJR19LVk1fWEVOKSk7XG5hcmNoL3g4Ni9rdm0vaXJxLmgtMTM5LX1cbi0tXG5hcmNoL3g4Ni9rdm0va3ZtLWFzbS1vZmZzZXRzLmM9MTM9c3RhdGljIHZvaWQgX191c2VkIGNvbW1vbih2b2lkKVxuYXJjaC94ODYva3ZtL2t2bS1hc20tb2Zmc2V0cy5jLTE0LXtcbmFyY2gveDg2L2t2bS9rdm0tYXNtLW9mZnNldHMuYzoxNTpcdGlmIChJU19FTkFCTEVEKENPTkZJR19LVk1fQU1EKSkge1xuYXJjaC94ODYva3ZtL2t2bS1hc20tb2Zmc2V0cy5jLTE2LVx0XHRCTEFOSygpO1xuLS1cbmFyY2gveDg2L2t2bS9rdm0tYXNtLW9mZnNldHMuYy0yNC1cbmFyY2gveDg2L2t2bS9rdm0tYXNtLW9mZnNldHMuYzoyNTpcdGlmIChJU19FTkFCTEVEKENPTkZJR19LVk1fSU5URUwpKSB7XG5hcmNoL3g4Ni9rdm0va3ZtLWFzbS1vZmZzZXRzLmMtMjYtXHRcdEJMQU5LKCk7XG4tLVxuYXJjaC94ODYva3ZtL2xhcGljLmM9MTQxMD1zdGF0aWMgaW50IF9fYXBpY19hY2NlcHRfaXJxKHN0cnVjdCBrdm1fbGFwaWMgKmFwaWMsIGludCBkZWxpdmVyeV9tb2RlLFxuLS1cbmFyY2gveDg2L2t2bS9sYXBpYy5jLTE0MzItXG5hcmNoL3g4Ni9rdm0vbGFwaWMuYzoxNDMzOiNpZmRlZiBDT05GSUdfS1ZNX0lPQVBJQ1xuYXJjaC94ODYva3ZtL2xhcGljLmMtMTQzNC1cdFx0aWYgKHJ0Y19zdGF0dXMpIHtcbi0tXG5hcmNoL3g4Ni9rdm0vbGFwaWMuYz0xNTU1PXN0YXRpYyB2b2lkIGt2bV9pb2FwaWNfc2VuZF9lb2koc3RydWN0IGt2bV9sYXBpYyAqYXBpYywgaW50IHZlY3Rvcilcbi0tXG5hcmNoL3g4Ni9rdm0vbGFwaWMuYy0xNTg2LVxuYXJjaC94ODYva3ZtL2xhcGljLmM6MTU4NzojaWZkZWYgQ09ORklHX0tWTV9JT0FQSUNcbmFyY2gveDg2L2t2bS9sYXBpYy5jLTE1ODgtXHRpZiAoYXBpY190ZXN0X3ZlY3Rvcih2ZWN0b3IsIGFwaWMtXHUwMDNlcmVncyAmIzQzOyBBUElDX1RNUikpXG4tLVxuYXJjaC94ODYva3ZtL2xhcGljLmM9MzMxNT1pbnQga3ZtX2FwaWNfc2V0X3N0YXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9sYXBpY19zdGF0ZSAqcylcbi0tXG5hcmNoL3g4Ni9rdm0vbGFwaWMuYy0zMzQ4LVxuYXJjaC94ODYva3ZtL2xhcGljLmM6MzM0OTojaWZkZWYgQ09ORklHX0tWTV9JT0FQSUNcbmFyY2gveDg2L2t2bS9sYXBpYy5jLTMzNTAtXHRpZiAoaW9hcGljX2luX2tlcm5lbCh2Y3B1LVx1MDAzZWt2bSkpXG4tLVxuYXJjaC94ODYva3ZtL21tdS9tbXUuYz0xODE4PXN0YXRpYyB2b2lkIGt2bV9tbXVfY2hlY2tfc3B0ZXNfYXRfZnJlZShzdHJ1Y3Qga3ZtX21tdV9wYWdlICpzcClcbmFyY2gveDg2L2t2bS9tbXUvbW11LmMtMTgxOS17XG5hcmNoL3g4Ni9rdm0vbW11L21tdS5jOjE4MjA6I2lmZGVmIENPTkZJR19LVk1fUFJPVkVfTU1VXG5hcmNoL3g4Ni9rdm0vbW11L21tdS5jLTE4MjEtXHRpbnQgaTtcbi0tXG5hcmNoL3g4Ni9rdm0vbW11L21tdS5jPTUxMzU9dm9pZCBrdm1fYXJjaF9hc3luY19wYWdlX3JlYWR5KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9hc3luY19wZiAqd29yaylcbi0tXG5hcmNoL3g4Ni9rdm0vbW11L21tdS5jLTUxNjUtXG5hcmNoL3g4Ni9rdm0vbW11L21tdS5jOjUxNjY6I2lmZGVmIENPTkZJR19LVk1fR1VFU1RfTUVNRkRcbmFyY2gveDg2L2t2bS9tbXUvbW11LmMtNTE2Ny1zdGF0aWMgdm9pZCBrdm1fYXNzZXJ0X2dtZW1faW52YWxpZGF0ZV9sb2NrX2hlbGQoc3RydWN0IGt2bV9tZW1vcnlfc2xvdCAqc2xvdClcbi0tXG5hcmNoL3g4Ni9rdm0vbW11L21tdS5jPTY1Njc9aW50IG5vaW5saW5lIGt2bV9tbXVfcGFnZV9mYXVsdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGdwYV90IGNyMl9vcl9ncGEsIHU2NCBlcnJvcl9jb2RlLFxuLS1cbmFyY2gveDg2L2t2bS9tbXUvbW11LmMtNjU4My1cdCAqL1xuYXJjaC94ODYva3ZtL21tdS9tbXUuYzo2NTg0Olx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0tWTV9TV19QUk9URUNURURfVk0pIFx1MDAyNlx1MDAyNlxuYXJjaC94ODYva3ZtL21tdS9tbXUuYy02NTg1LVx0ICAgICEoZXJyb3JfY29kZSBcdTAwMjYgUEZFUlJfUlNWRF9NQVNLKSBcdTAwMjZcdTAwMjZcbi0tXG5hcmNoL3g4Ni9rdm0vbW11L21tdS5jPTgwOTQ9dm9pZCBrdm1fbW11X3ByZV9kZXN0cm95X3ZtKHN0cnVjdCBrdm0gKmt2bSlcbi0tXG5hcmNoL3g4Ni9rdm0vbW11L21tdS5jLTgwOTktXG5hcmNoL3g4Ni9rdm0vbW11L21tdS5jOjgxMDA6I2lmZGVmIENPTkZJR19LVk1fR0VORVJJQ19NRU1PUllfQVRUUklCVVRFU1xuYXJjaC94ODYva3ZtL21tdS9tbXUuYy04MTAxLXN0YXRpYyBib29sIGh1Z2VwYWdlX3Rlc3RfbWl4ZWQoc3RydWN0IGt2bV9tZW1vcnlfc2xvdCAqc2xvdCwgZ2ZuX3QgZ2ZuLFxuLS1cbmFyY2gveDg2L2t2bS9tbXUvbW11X2ludGVybmFsLmgtMTAtXG5hcmNoL3g4Ni9rdm0vbW11L21tdV9pbnRlcm5hbC5oOjExOiNpZmRlZiBDT05GSUdfS1ZNX1BST1ZFX01NVVxuYXJjaC94ODYva3ZtL21tdS9tbXVfaW50ZXJuYWwuaC0xMi0jZGVmaW5lIEtWTV9NTVVfV0FSTl9PTih4KSBXQVJOX09OX09OQ0UoeClcbi0tXG5hcmNoL3g4Ni9rdm0vbW11L3BhZ2VfdHJhY2suYz0yMz1zdGF0aWMgYm9vbCBrdm1fZXh0ZXJuYWxfd3JpdGVfdHJhY2tpbmdfZW5hYmxlZChzdHJ1Y3Qga3ZtICprdm0pXG5hcmNoL3g4Ni9rdm0vbW11L3BhZ2VfdHJhY2suYy0yNC17XG5hcmNoL3g4Ni9rdm0vbW11L3BhZ2VfdHJhY2suYzoyNTojaWZkZWYgQ09ORklHX0tWTV9FWFRFUk5BTF9XUklURV9UUkFDS0lOR1xuYXJjaC94ODYva3ZtL21tdS9wYWdlX3RyYWNrLmMtMjYtXHQvKlxuLS1cbmFyY2gveDg2L2t2bS9tbXUvcGFnZV90cmFjay5jPTE0Nj1ib29sIGt2bV9nZm5faXNfd3JpdGVfdHJhY2tlZChzdHJ1Y3Qga3ZtICprdm0sXG4tLVxuYXJjaC94ODYva3ZtL21tdS9wYWdlX3RyYWNrLmMtMTcwLVxuYXJjaC94ODYva3ZtL21tdS9wYWdlX3RyYWNrLmM6MTcxOiNpZmRlZiBDT05GSUdfS1ZNX0VYVEVSTkFMX1dSSVRFX1RSQUNLSU5HXG5hcmNoL3g4Ni9rdm0vbW11L3BhZ2VfdHJhY2suYy0xNzItdm9pZCBrdm1fcGFnZV90cmFja19jbGVhbnVwKHN0cnVjdCBrdm0gKmt2bSlcbi0tXG5hcmNoL3g4Ni9rdm0vbW11L3BhZ2VfdHJhY2suaD0yMz1ib29sIGt2bV9nZm5faXNfd3JpdGVfdHJhY2tlZChzdHJ1Y3Qga3ZtICprdm0sXG4tLVxuYXJjaC94ODYva3ZtL21tdS9wYWdlX3RyYWNrLmgtMjUtXG5hcmNoL3g4Ni9rdm0vbW11L3BhZ2VfdHJhY2suaDoyNjojaWZkZWYgQ09ORklHX0tWTV9FWFRFUk5BTF9XUklURV9UUkFDS0lOR1xuYXJjaC94ODYva3ZtL21tdS9wYWdlX3RyYWNrLmgtMjctaW50IGt2bV9wYWdlX3RyYWNrX2luaXQoc3RydWN0IGt2bSAqa3ZtKTtcbi0tXG5hcmNoL3g4Ni9rdm0vbW11L3BhZ2VfdHJhY2suaD00Nj1zdGF0aWMgaW5saW5lIGJvb2wga3ZtX3BhZ2VfdHJhY2tfaGFzX2V4dGVybmFsX3VzZXIoc3RydWN0IGt2bSAqa3ZtKSB7IHJldHVybiBmYWxzZTsgfVxuYXJjaC94ODYva3ZtL21tdS9wYWdlX3RyYWNrLmgtNDctXG5hcmNoL3g4Ni9rdm0vbW11L3BhZ2VfdHJhY2suaDo0ODojZW5kaWYgLyogQ09ORklHX0tWTV9FWFRFUk5BTF9XUklURV9UUkFDS0lORyAqL1xuYXJjaC94ODYva3ZtL21tdS9wYWdlX3RyYWNrLmgtNDktXG4tLVxuYXJjaC94ODYva3ZtL21tdS90ZHBfbW11LmM9MzM9dm9pZCBrdm1fbW11X3VuaW5pdF90ZHBfbW11KHN0cnVjdCBrdm0gKmt2bSlcbi0tXG5hcmNoL3g4Ni9rdm0vbW11L3RkcF9tbXUuYy00Mi1cbmFyY2gveDg2L2t2bS9tbXUvdGRwX21tdS5jOjQzOiNpZmRlZiBDT05GSUdfS1ZNX1BST1ZFX01NVVxuYXJjaC94ODYva3ZtL21tdS90ZHBfbW11LmMtNDQtXHRLVk1fTU1VX1dBUk5fT04oYXRvbWljNjRfcmVhZChcdTAwMjZrdm0tXHUwMDNlYXJjaC50ZHBfbW11X3BhZ2VzKSk7XG4tLVxuYXJjaC94ODYva3ZtL21tdS90ZHBfbW11LmM9MzMzPXN0YXRpYyB2b2lkIHRkcF9hY2NvdW50X21tdV9wYWdlKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9tbXVfcGFnZSAqc3ApXG4tLVxuYXJjaC94ODYva3ZtL21tdS90ZHBfbW11LmMtMzM1LVx0a3ZtX2FjY291bnRfcGd0YWJsZV9wYWdlcygodm9pZCAqKXNwLVx1MDAzZXNwdCwgJiM0MzsxKTtcbmFyY2gveDg2L2t2bS9tbXUvdGRwX21tdS5jOjMzNjojaWZkZWYgQ09ORklHX0tWTV9QUk9WRV9NTVVcbmFyY2gveDg2L2t2bS9tbXUvdGRwX21tdS5jLTMzNy1cdGF0b21pYzY0X2luYyhcdTAwMjZrdm0tXHUwMDNlYXJjaC50ZHBfbW11X3BhZ2VzKTtcbi0tXG5hcmNoL3g4Ni9rdm0vbW11L3RkcF9tbXUuYz0zNDE9c3RhdGljIHZvaWQgdGRwX3VuYWNjb3VudF9tbXVfcGFnZShzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fbW11X3BhZ2UgKnNwKVxuLS1cbmFyY2gveDg2L2t2bS9tbXUvdGRwX21tdS5jLTM0My1cdGt2bV9hY2NvdW50X3BndGFibGVfcGFnZXMoKHZvaWQgKilzcC1cdTAwM2VzcHQsIC0xKTtcbmFyY2gveDg2L2t2bS9tbXUvdGRwX21tdS5jOjM0NDojaWZkZWYgQ09ORklHX0tWTV9QUk9WRV9NTVVcbmFyY2gveDg2L2t2bS9tbXUvdGRwX21tdS5jLTM0NS1cdGF0b21pYzY0X2RlYyhcdTAwMjZrdm0tXHUwMDNlYXJjaC50ZHBfbW11X3BhZ2VzKTtcbi0tXG5hcmNoL3g4Ni9rdm0vbW11L3RkcF9tbXUuYz04Mjk9c3RhdGljIHZvaWQgdGRwX21tdV96YXBfcm9vdChzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fbW11X3BhZ2UgKnJvb3QsXG4tLVxuYXJjaC94ODYva3ZtL21tdS90ZHBfbW11LmMtODY1LVx0ICovXG5hcmNoL3g4Ni9rdm0vbW11L3RkcF9tbXUuYzo4NjY6XHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX0tWTV9QUk9WRV9NTVUpKSB7XG5hcmNoL3g4Ni9rdm0vbW11L3RkcF9tbXUuYy04NjctXHRcdF9fdGRwX21tdV96YXBfcm9vdChrdm0sIHJvb3QsIHNoYXJlZCwgUEdfTEVWRUxfNEspO1xuLS1cbmFyY2gveDg2L2t2bS9tc3JzLmM9MjU0PXN0YXRpYyBjb25zdCB1MzIgZW11bGF0ZWRfbXNyc19hbGxbXSA9IHtcbi0tXG5hcmNoL3g4Ni9rdm0vbXNycy5jLTI1Ny1cbmFyY2gveDg2L2t2bS9tc3JzLmM6MjU4OiNpZmRlZiBDT05GSUdfS1ZNX0hZUEVSVlxuYXJjaC94ODYva3ZtL21zcnMuYy0yNTktXHRIVl9YNjRfTVNSX0dVRVNUX09TX0lELCBIVl9YNjRfTVNSX0hZUEVSQ0FMTCxcbi0tXG5hcmNoL3g4Ni9rdm0vbXNycy5jPTE0NDI9aW50IGt2bV9zZXRfbXNyX2NvbW1vbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBtc3JfZGF0YSAqbXNyX2luZm8pXG4tLVxuYXJjaC94ODYva3ZtL21zcnMuYy0xNjIyLVx0Y2FzZSBNU1JfSUEzMl9TTUJBU0U6XG5hcmNoL3g4Ni9rdm0vbXNycy5jOjE2MjM6XHRcdGlmICghSVNfRU5BQkxFRChDT05GSUdfS1ZNX1NNTSkgfHwgIW1zcl9pbmZvLVx1MDAzZWhvc3RfaW5pdGlhdGVkKVxuYXJjaC94ODYva3ZtL21zcnMuYy0xNjI0LVx0XHRcdHJldHVybiAxO1xuLS1cbmFyY2gveDg2L2t2bS9tc3JzLmMtMTc3MC1cdFx0YnJlYWs7XG5hcmNoL3g4Ni9rdm0vbXNycy5jOjE3NzE6I2lmZGVmIENPTkZJR19LVk1fSFlQRVJWXG5hcmNoL3g4Ni9rdm0vbXNycy5jLTE3NzItXHRjYXNlIEhWX1g2NF9NU1JfR1VFU1RfT1NfSUQgLi4uIEhWX1g2NF9NU1JfU0lOVDE1OlxuLS1cbmFyY2gveDg2L2t2bS9tc3JzLmM9MTg5OT1pbnQga3ZtX2dldF9tc3JfY29tbW9uKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IG1zcl9kYXRhICptc3JfaW5mbylcbi0tXG5hcmNoL3g4Ni9rdm0vbXNycy5jLTIwMTgtXHRjYXNlIE1TUl9JQTMyX1NNQkFTRTpcbmFyY2gveDg2L2t2bS9tc3JzLmM6MjAxOTpcdFx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19LVk1fU01NKSB8fCAhbXNyX2luZm8tXHUwMDNlaG9zdF9pbml0aWF0ZWQpXG5hcmNoL3g4Ni9rdm0vbXNycy5jLTIwMjAtXHRcdFx0cmV0dXJuIDE7XG4tLVxuYXJjaC94ODYva3ZtL21zcnMuYy0yMTIxLVx0XHRicmVhaztcbmFyY2gveDg2L2t2bS9tc3JzLmM6MjEyMjojaWZkZWYgQ09ORklHX0tWTV9IWVBFUlZcbmFyY2gveDg2L2t2bS9tc3JzLmMtMjEyMy1cdGNhc2UgSFZfWDY0X01TUl9HVUVTVF9PU19JRCAuLi4gSFZfWDY0X01TUl9TSU5UMTU6XG4tLVxuYXJjaC94ODYva3ZtL3NtbS5oLTYtXG5hcmNoL3g4Ni9rdm0vc21tLmg6NzojaWZkZWYgQ09ORklHX0tWTV9TTU1cbmFyY2gveDg2L2t2bS9zbW0uaC04LVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vaHlwZXJ2LmgtMTMtXG5hcmNoL3g4Ni9rdm0vc3ZtL2h5cGVydi5oOjE0OiNpZmRlZiBDT05GSUdfS1ZNX0hZUEVSVlxuYXJjaC94ODYva3ZtL3N2bS9oeXBlcnYuaC0xNS1zdGF0aWMgaW5saW5lIHZvaWQgbmVzdGVkX3N2bV9odl91cGRhdGVfdm1fdnBfaWRzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL2h5cGVydi5oPTUxPXZvaWQgc3ZtX2h2X2luamVjdF9zeW50aGV0aWNfdm1leGl0X3Bvc3RfdGxiX2ZsdXNoKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XG5hcmNoL3g4Ni9rdm0vc3ZtL2h5cGVydi5oOjUyOiNlbHNlIC8qIENPTkZJR19LVk1fSFlQRVJWICovXG5hcmNoL3g4Ni9rdm0vc3ZtL2h5cGVydi5oLTUzLXN0YXRpYyBpbmxpbmUgdm9pZCBuZXN0ZWRfc3ZtX2h2X3VwZGF0ZV92bV92cF9pZHMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KSB7fVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vaHlwZXJ2Lmg9NTg9c3RhdGljIGlubGluZSB2b2lkIHN2bV9odl9pbmplY3Rfc3ludGhldGljX3ZtZXhpdF9wb3N0X3RsYl9mbHVzaChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpIHt9XG5hcmNoL3g4Ni9rdm0vc3ZtL2h5cGVydi5oOjU5OiNlbmRpZiAvKiBDT05GSUdfS1ZNX0hZUEVSViAqL1xuYXJjaC94ODYva3ZtL3N2bS9oeXBlcnYuaC02MC1cbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jPTI5NT1zdGF0aWMgYm9vbCBuZXN0ZWRfc3ZtX21lcmdlX21zcnBtKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTMwOS1cdCAqL1xuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzozMTA6I2lmZGVmIENPTkZJR19LVk1fSFlQRVJWXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTMxMS1cdGlmICghc3ZtLVx1MDAzZW5lc3RlZC5mb3JjZV9tc3JfYml0bWFwX3JlY2FsYykge1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMzM4LVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzozMzk6I2lmZGVmIENPTkZJR19LVk1fSFlQRVJWXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTM0MC1zZXRfbXNycG1fYmFzZV9wYTpcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jPTUxMz12b2lkIF9fbmVzdGVkX2NvcHlfdm1jYl9jb250cm9sX3RvX2NhY2hlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTU2MC1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6NTYxOiNpZmRlZiBDT05GSUdfS1ZNX0hZUEVSVlxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy01NjItXHQvKiBIeXBlci1WIGV4dGVuc2lvbnMgKEVubGlnaHRlbmVkIFZNQ0IpICovXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYz0xNzIxPXN0YXRpYyBpbnQgc3ZtX2NoZWNrX25lc3RlZF9ldmVudHMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTc2Mi1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTc2MzojaWZkZWYgQ09ORklHX0tWTV9TTU1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTc2NC1cdGlmICh2Y3B1LVx1MDAzZWFyY2guc21pX3BlbmRpbmcgXHUwMDI2XHUwMDI2ICFzdm1fc21pX2Jsb2NrZWQodmNwdSkpIHtcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jPTMwODY9dm9pZCBfX2luaXQgc2V2X2hhcmR3YXJlX3NldHVwKHZvaWQpXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0zMTE2LVx0ICovXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jOjMxMTc6XHRpZiAoSVNfQlVJTFRJTihDT05GSUdfS1ZNX0FNRCkgXHUwMDI2XHUwMDI2IHNldl9tb2R1bGVfaW5pdCgpKVxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0zMTE4LVx0XHRnb3RvIG91dDtcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jPTIxNjU9c3RhdGljIGludCBzaHV0ZG93bl9pbnRlcmNlcHRpb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtMjE4My1cdFx0Y2xlYXJfcGFnZShzdm0tXHUwMDNldm1jYik7XG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jOjIxODQ6I2lmZGVmIENPTkZJR19LVk1fU01NXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTIxODUtXHRcdGlmIChpc19zbW0odmNwdSkpXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYz0zMzQ3PXN0YXRpYyBpbnQgKCpjb25zdCBzdm1fZXhpdF9oYW5kbGVyc1tdKShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpID0ge1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtMzQyMC1cdFtTVk1fRVhJVF9BVklDX1VOQUNDRUxFUkFURURfQUNDRVNTXVx0PSBhdmljX3VuYWNjZWxlcmF0ZWRfYWNjZXNzX2ludGVyY2VwdGlvbixcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM6MzQyMTojaWZkZWYgQ09ORklHX0tWTV9BTURfU0VWXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTM0MjItXHRbU1ZNX0VYSVRfVk1HRVhJVF1cdFx0XHQ9IHNldl9oYW5kbGVfdm1nZXhpdCxcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jPTM2MzY9aW50IHN2bV9pbnZva2VfZXhpdF9oYW5kbGVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IF9fZXhpdF9jb2RlKVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtMzY2Mi1cdFx0cmV0dXJuIG5wZl9pbnRlcmNlcHRpb24odmNwdSk7XG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jOjM2NjM6I2lmZGVmIENPTkZJR19LVk1fQU1EX1NFVlxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy0zNjY0LVx0ZWxzZSBpZiAoZXhpdF9jb2RlID09IFNWTV9FWElUX1ZNR0VYSVQpXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYz00NzA0PXN0YXRpYyBib29sIHN2bV9oYXNfZW11bGF0ZWRfbXNyKHN0cnVjdCBrdm0gKmt2bSwgdTMyIGluZGV4KVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNDcxMC1cdGNhc2UgTVNSX0lBMzJfU01CQVNFOlxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYzo0NzExOlx0XHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX0tWTV9TTU0pKVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy00NzEyLVx0XHRcdHJldHVybiBmYWxzZTtcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNDcxMy1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM6NDcxNDojaWZkZWYgQ09ORklHX0tWTV9BTURfU0VWXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTQ3MTUtXHRcdC8qXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYz00OTc5PXN0YXRpYyB2b2lkIHN2bV9zZXR1cF9tY2Uoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNDk4NC1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM6NDk4NTojaWZkZWYgQ09ORklHX0tWTV9TTU1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNDk4Ni1ib29sIHN2bV9zbWlfYmxvY2tlZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYz01MzI4PXN0cnVjdCBrdm1feDg2X29wcyBzdm1feDg2X29wcyBfX2luaXRkYXRhID0ge1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNTQzNS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM6NTQzNjojaWZkZWYgQ09ORklHX0tWTV9TTU1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNTQzNy1cdC5zbWlfYWxsb3dlZCA9IHN2bV9zbWlfYWxsb3dlZCxcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTU0NDItXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jOjU0NDM6I2lmZGVmIENPTkZJR19LVk1fQU1EX1NFVlxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy01NDQ0LVx0LnZjcHVfbmVlZHNfaW5pdGlhbGl6YXRpb24gPSBzZXZfdmNwdV9uZWVkc19pbml0aWFsaXphdGlvbixcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oPTY2PWVudW0ge1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmgtOTctXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oOjk4OiNpZmRlZiBDT05GSUdfS1ZNX0FNRF9TRVZcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmgtOTktc3RydWN0IGt2bV9zZXZfaW5mbyB7XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uaD0xMjc9c3RydWN0IGt2bV9zdm0ge1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmgtMTM1LVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uaDoxMzY6I2lmZGVmIENPTkZJR19LVk1fQU1EX1NFVlxuYXJjaC94ODYva3ZtL3N2bS9zdm0uaC0xMzctXHRzdHJ1Y3Qga3ZtX3Nldl9pbmZvIHNldl9pbmZvO1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmg9MTgwPXN0cnVjdCB2bWNiX2N0cmxfYXJlYV9jYWNoZWQge1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmgtMjA1LVx0dW5pb24ge1xuYXJjaC94ODYva3ZtL3N2bS9zdm0uaDoyMDY6I2lmIElTX0VOQUJMRUQoQ09ORklHX0hZUEVSVikgfHwgSVNfRU5BQkxFRChDT05GSUdfS1ZNX0hZUEVSVilcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmgtMjA3LVx0XHRzdHJ1Y3QgaHZfdm1jYl9lbmxpZ2h0ZW5tZW50cyBodl9lbmxpZ2h0ZW5tZW50cztcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oPTM5MD1zdGF0aWMgX19hbHdheXNfaW5saW5lIHN0cnVjdCBrdm1fc3ZtICp0b19rdm1fc3ZtKHN0cnVjdCBrdm0gKmt2bSlcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oLTM5NC1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmg6Mzk1OiNpZmRlZiBDT05GSUdfS1ZNX0FNRF9TRVZcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmgtMzk2LXN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgc3RydWN0IGt2bV9zZXZfaW5mbyAqdG9fa3ZtX3Nldl9pbmZvKHN0cnVjdCBrdm0gKmt2bSlcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oPTk4MD12b2lkIHNldl9lc191bm1hcF9naGNiKHN0cnVjdCB2Y3B1X3N2bSAqc3ZtKTtcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmgtOTgxLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uaDo5ODI6I2lmZGVmIENPTkZJR19LVk1fQU1EX1NFVlxuYXJjaC94ODYva3ZtL3N2bS9zdm0uaC05ODMtYm9vbCBzZXZfdmNwdV9uZWVkc19pbml0aWFsaXphdGlvbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vdm1lbnRlci5TPTIxMD1TWU1fRlVOQ19FTkQoX19zdm1fdmNwdV9ydW4pXG5hcmNoL3g4Ni9rdm0vc3ZtL3ZtZW50ZXIuUy0yMTEtXG5hcmNoL3g4Ni9rdm0vc3ZtL3ZtZW50ZXIuUzoyMTI6I2lmZGVmIENPTkZJR19LVk1fQU1EX1NFVlxuYXJjaC94ODYva3ZtL3N2bS92bWVudGVyLlMtMjEzLVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vdm1lbnRlci5TPTI4Mz1TWU1fRlVOQ19FTkQoX19zdm1fc2V2X2VzX3ZjcHVfcnVuKVxuYXJjaC94ODYva3ZtL3N2bS92bWVudGVyLlM6Mjg0OiNlbmRpZiAvKiBDT05GSUdfS1ZNX0FNRF9TRVYgKi9cbi0tXG5hcmNoL3g4Ni9rdm0vdHJhY2UuaD0yMjg9VFJBQ0VfRVZFTlQoa3ZtX2NwdWlkLFxuLS1cbmFyY2gveDg2L2t2bS90cmFjZS5oLTI3Mi1cbmFyY2gveDg2L2t2bS90cmFjZS5oOjI3MzojaWZkZWYgQ09ORklHX0tWTV9JT0FQSUNcbmFyY2gveDg2L2t2bS90cmFjZS5oLTI3NC1UUkFDRV9FVkVOVChrdm1faW9hcGljX3NldF9pcnEsXG4tLVxuYXJjaC94ODYva3ZtL3ZteC9jb21tb24uaD0zMz1zdHJ1Y3QgdmNwdV92dCB7XG4tLVxuYXJjaC94ODYva3ZtL3ZteC9jb21tb24uaC01Ny1cbmFyY2gveDg2L2t2bS92bXgvY29tbW9uLmg6NTg6I2lmZGVmIENPTkZJR19LVk1fSU5URUxfVERYXG5hcmNoL3g4Ni9rdm0vdm14L2NvbW1vbi5oLTU5LVxuLS1cbmFyY2gveDg2L2t2bS92bXgvaHlwZXJ2Lmg9MTI9ZW51bSBuZXN0ZWRfZXZtcHRybGRfc3RhdHVzIHtcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L2h5cGVydi5oLTE4LVxuYXJjaC94ODYva3ZtL3ZteC9oeXBlcnYuaDoxOTojaWZkZWYgQ09ORklHX0tWTV9IWVBFUlZcbmFyY2gveDg2L2t2bS92bXgvaHlwZXJ2LmgtMjAtc3RhdGljIGlubGluZSBib29sIGV2bXB0cl9pc192YWxpZCh1NjQgZXZtcHRyKVxuLS1cbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jLTEyLVxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmM6MTM6I2lmZGVmIENPTkZJR19LVk1fSU5URUxfVERYXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYy0xNC1zdGF0aWNfYXNzZXJ0KG9mZnNldG9mKHN0cnVjdCB2Y3B1X3ZteCwgdnQpID09IG9mZnNldG9mKHN0cnVjdCB2Y3B1X3RkeCwgdnQpKTtcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYz0yMTg9c3RhdGljIGludCB2dF9jb21wbGV0ZV9lbXVsYXRlZF9tc3Ioc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBpbnQgZXJyKVxuLS1cbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jLTIyNS1cbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jOjIyNjojaWZkZWYgQ09ORklHX0tWTV9TTU1cbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jLTIyNy1zdGF0aWMgaW50IHZ0X3NtaV9hbGxvd2VkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgYm9vbCBmb3JfaW5qZWN0aW9uKVxuLS1cbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jPTg2Mz1zdGF0aWMgaW50IHZ0X2dtZW1fbWF4X21hcHBpbmdfbGV2ZWwoc3RydWN0IGt2bSAqa3ZtLCBrdm1fcGZuX3QgcGZuLFxuLS1cbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jLTg3My0jZGVmaW5lIHZ0X29wX3RkeF9vbmx5KG5hbWUpIHZ0XyMjbmFtZVxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmM6ODc0OiNlbHNlIC8qIENPTkZJR19LVk1fSU5URUxfVERYICovXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYy04NzUtI2RlZmluZSB2dF9vcChuYW1lKSB2bXhfIyNuYW1lXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYy04NzYtI2RlZmluZSB2dF9vcF90ZHhfb25seShuYW1lKSBOVUxMXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYzo4Nzc6I2VuZGlmIC8qIENPTkZJR19LVk1fSU5URUxfVERYICovXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYy04NzgtXG4tLVxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmM9ODg4PXN0cnVjdCBrdm1feDg2X29wcyB2dF94ODZfb3BzIF9faW5pdGRhdGEgPSB7XG4tLVxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmMtMTAxNi1cbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jOjEwMTc6I2lmZGVmIENPTkZJR19LVk1fU01NXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYy0xMDE4LVx0LnNtaV9hbGxvd2VkID0gdnRfb3Aoc21pX2FsbG93ZWQpLFxuLS1cbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmM9MjM0PXN0YXRpYyBpbmxpbmUgdm9pZCBuZXN0ZWRfcmVsZWFzZV9ldm1jcyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jLTIzNS17XG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jOjIzNjojaWZkZWYgQ09ORklHX0tWTV9IWVBFUlZcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmMtMjM3LVx0c3RydWN0IGt2bV92Y3B1X2h2ICpodl92Y3B1ID0gdG9faHZfdmNwdSh2Y3B1KTtcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jPTI1Mj1zdGF0aWMgYm9vbCBuZXN0ZWRfZXZtY3NfaGFuZGxlX3ZtY2xlYXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBncGFfdCB2bXB0cilcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmMtMjUzLXtcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmM6MjU0OiNpZmRlZiBDT05GSUdfS1ZNX0hZUEVSVlxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy0yNTUtXHRzdHJ1Y3QgdmNwdV92bXggKnZteCA9IHRvX3ZteCh2Y3B1KTtcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jPTE3NTQ9c3RhdGljIHZvaWQgY29weV9lbmxpZ2h0ZW5lZF90b192bWNzMTIoc3RydWN0IHZjcHVfdm14ICp2bXgsIHUzMiBodl9jbGVhbl9maWVsZHMpXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jLTE3NTUte1xuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYzoxNzU2OiNpZmRlZiBDT05GSUdfS1ZNX0hZUEVSVlxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy0xNzU3LVx0c3RydWN0IHZtY3MxMiAqdm1jczEyID0gdm14LVx1MDAzZW5lc3RlZC5jYWNoZWRfdm1jczEyO1xuLS1cbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmMtMTk5Ni1cdHJldHVybjtcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmM6MTk5NzojZWxzZSAvKiBDT05GSUdfS1ZNX0hZUEVSViAqL1xuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy0xOTk4LVx0S1ZNX0JVR19PTigxLCB2bXgtXHUwMDNldmNwdS5rdm0pO1xuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYzoxOTk5OiNlbmRpZiAvKiBDT05GSUdfS1ZNX0hZUEVSViAqL1xuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy0yMDAwLX1cbi0tXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jPTIwMDI9c3RhdGljIHZvaWQgY29weV92bWNzMTJfdG9fZW5saWdodGVuZWQoc3RydWN0IHZjcHVfdm14ICp2bXgpXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jLTIwMDMte1xuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYzoyMDA0OiNpZmRlZiBDT05GSUdfS1ZNX0hZUEVSVlxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy0yMDA1LVx0c3RydWN0IHZtY3MxMiAqdm1jczEyID0gdm14LVx1MDAzZW5lc3RlZC5jYWNoZWRfdm1jczEyO1xuLS1cbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmMtMjE3NC1cdHJldHVybjtcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmM6MjE3NTojZWxzZSAvKiBDT05GSUdfS1ZNX0hZUEVSViAqL1xuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy0yMTc2LVx0S1ZNX0JVR19PTigxLCB2bXgtXHUwMDNldmNwdS5rdm0pO1xuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYzoyMTc3OiNlbmRpZiAvKiBDT05GSUdfS1ZNX0hZUEVSViAqL1xuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy0yMTc4LX1cbi0tXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jPTIxODQ9c3RhdGljIGVudW0gbmVzdGVkX2V2bXB0cmxkX3N0YXR1cyBuZXN0ZWRfdm14X2hhbmRsZV9lbmxpZ2h0ZW5lZF92bXB0cmxkKFxuLS1cbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmMtMjE4Ni17XG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jOjIxODc6I2lmZGVmIENPTkZJR19LVk1fSFlQRVJWXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jLTIxODgtXHRzdHJ1Y3QgdmNwdV92bXggKnZteCA9IHRvX3ZteCh2Y3B1KTtcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jPTMxMjc9c3RhdGljIGludCBuZXN0ZWRfdm14X2NoZWNrX2NvbnRyb2xzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jLTMxMzQtXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jOjMxMzU6I2lmZGVmIENPTkZJR19LVk1fSFlQRVJWXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jLTMxMzYtXHRpZiAoZ3Vlc3RfY3B1X2NhcF9oYXNfZXZtY3ModmNwdSkpXG4tLVxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYz0zMzExPXN0YXRpYyBpbnQgbmVzdGVkX3ZteF9jaGVja19ndWVzdF9zdGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4tLVxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy0zNDExLVxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYzozNDEyOiNpZmRlZiBDT05GSUdfS1ZNX0hZUEVSVlxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy0zNDEzLXN0YXRpYyBib29sIG5lc3RlZF9nZXRfZXZtY3NfcGFnZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYz0zNTMwPXN0YXRpYyBib29sIHZteF9nZXRfbmVzdGVkX3N0YXRlX3BhZ2VzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmMtMzUzMS17XG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDc6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjAzOTEKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA5NDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgS1ZNIE1NVSBQYWdlIExpbWl0IEFkanVzdG1lbnQqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIGNvbW1pdC4gTXkgaW5pdGlhbCBpbXByZXNzaW9uIGlzIHRoYXQgaXQmIzM5O3MgYWRkcmVzc2luZyBhIHN1YnRsZSBidXQgcG90ZW50aWFsbHkgaW1wYWN0ZnVsIGJ1ZyB3aXRoaW4gS1ZNJiMzOTtzIE1NVSBwYWdlIGxpbWl0IG1hbmFnZW1lbnQsIHNwZWNpZmljYWxseSBmb3IgeDg2LiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCB0aGUgZGlmZiBpdHNlbGYuIEl0IGxvb2tzIGxpa2Ugd2UmIzM5O3JlIGNoYW5naW5nIGhvdyBgZ29hbF9ucl9tbXVfcGFnZXNgIGlzIGFzc2lnbmVkIHdpdGhpbiBga3ZtX21tdV9jaGFuZ2VfbW11X3BhZ2VzYC4gVGhlIG9yaWdpbmFsIGFzc2lnbm1lbnQsIGBnb2FsX25yX21tdV9wYWdlcyA9IGt2bS0mZ3Q7c3RhdC5tbXVfc2hhZG93X3BhZ2VzO2AsIGlzIGJlaW5nIHJlcGxhY2VkIHdpdGggYGdvYWxfbnJfbW11X3BhZ2VzID0gbWF4KGt2bS0mZ3Q7c3RhdC5tbXVfc2hhZG93X3BhZ2VzLCBnb2FsX25yX21tdV9wYWdlcyk7YC4KCk15IG1pbmQgc3RhcnRzIHRvIHdvcmsgdGhyb3VnaCBhIHNjZW5hcmlvIHRvIHVuZGVyc3RhbmQgdGhlIHBvdGVudGlhbCBpc3N1ZS4gU3VwcG9zZSB3ZSYjMzk7cmUgdHJ5aW5nIHRvICpyZWR1Y2UqIHRoZSBudW1iZXIgb2YgTU1VIHNoYWRvdyBwYWdlcy4gYGt2bV9tbXVfemFwX29sZGVzdF9tbXVfcGFnZXNgIGlzIGNhbGxlZCB0byBmcmVlIHVwIHNvbWUgcGFnZXMgdG8gZ2V0IGRvd24gdG8gYGdvYWxfbnJfbW11X3BhZ2VzYC4gTm93LCB3aGF0IGlmIHRoZSB6YXBwaW5nIG9wZXJhdGlvbiBpc24mIzM5O3QgcGVyZmVjdD8gSXQgbWlnaHQgZW5kIHVwIHphcHBpbmcgKm1vcmUqIHBhZ2VzIHRoYW4gc3RyaWN0bHkgcmVxdWVzdGVkLiBUaGlzIGNhdXNlcyBga3ZtLSZndDtzdGF0Lm1tdV9zaGFkb3dfcGFnZXNgIHRvIGRyb3AuIFRoZSBwcmV2aW91cyBjb2RlIHRoZW4gKnJlYXNzaWducyogYGdvYWxfbnJfbW11X3BhZ2VzYCB0byB0aGlzIHBvdGVudGlhbGx5IHJlZHVjZWQgdmFsdWUgb2YgYG1tdV9zaGFkb3dfcGFnZXNgLCBlZmZlY3RpdmVseSAqbG93ZXJpbmcgdGhlIHJlcXVlc3RlZCBnb2FsKi4gVGhpcyBpcyB3aGVyZSB0aGUgZml4IGNvbWVzIGluLiBXaXRoIHRoZSBgbWF4KClgIGFzc2lnbm1lbnQsIHdlIGVuc3VyZSB0aGF0IGBnb2FsX25yX21tdV9wYWdlc2AgcmVtYWlucyBhdCB0aGUgaW50ZW5kZWQgbG93ZXIgYm91bmQsIHJhdGhlciB0aGFuIHBvdGVudGlhbGx5IGJlaW5nIGFjY2lkZW50YWxseSByZWR1Y2VkIGZ1cnRoZXIuCgpJIG5lZWQgdG8gY29uZmlybSB0aGlzOiBpcyB0aGlzIGNvZGUgcGF0aCBhY3R1YWxseSByZWFjaGFibGU/IEkgc2VlIGBrdm1fbW11X2NoYW5nZV9tbXVfcGFnZXNgIGlzIGluZGVlZCBleHBvc2VkIHZpYSB0aGUgYEtWTV9TRVRfTlJfTU1VX1BBR0VTYCBpb2N0bCwgYW5kIGFsc28gdmlhIG1lbW9yeSByZWdpb24gdXBkYXRlcy4gVGhpcyBpcyBnb29kOyB0aGF0IG1ha2VzIGl0IGVhc2lseSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UsIHdoaWNoIGlzIGltcG9ydGFudCBmb3IgdGVzdGluZy4gRnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUsIHRoaXMgdnVsbmVyYWJpbGl0eSBpcyBpbnRlcmVzdGluZyBiZWNhdXNlIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBhbmQgZnV6emluZyBhcmUgaW4gdmVyeSBjbG9zZSBwcm94aW1pdHkuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgaWYgc3l6a2FsbGVyIGlzIGFscmVhZHkgdGVzdGluZyB0aGlzIGZ1bmN0aW9uYWxpdHkuCgpOb3csIGxldCYjMzk7cyBjaGVjayBzb21lIHN1cHBvcnRpbmcgaW5mb3JtYXRpb24uIExldCYjMzk7cyBzZWUgaWYgdGhpcyBmaXggaXMgd2l0aGluIHRoZSBjcml0aWNhbCBmb2N1cyBzeW1ib2xzLCB3aGljaCBpcyBga3ZtX21tdV9jaGFuZ2VfbW11X3BhZ2VzYCBhbmQgaXRzIGlvY3RsIGhhbmRsZXIsIGBrdm1fdm1faW9jdGxfc2V0X25yX21tdV9wYWdlc2AuIFdlJiMzOTtsbCBhbHNvIGNoZWNrIHRoZSBgRW5hYmxlQ29uZmlnc2AsIHdoaWNoIHdpbGwgY29uZmlybSB0aGF0IHdlIHJlcXVpcmUgS1ZNLCBhbmQgYWxzbyBlaXRoZXIgS1ZNX0lOVEVMIG9yIEtWTV9BTUQgdG8gYnVpbGQgdGhpcy4gSSYjMzk7bGwgdGFrZSBhIHF1aWNrIGxvb2sgYXQgdGhlIEtjb25maWcgZGVmaW5pdGlvbnMgb2YgdGhlIEtWTSBvcHRpb25zIHRvIG1ha2Ugc3VyZSBteSB1bmRlcnN0YW5kaW5nIGlzIGNvbXBsZXRlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwNzowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgS1ZNJCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vS2NvbmZpZz0yMD1jb25maWcgS1ZNX1g4NlxuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTUxLVxuYXJjaC94ODYva3ZtL0tjb25maWc6NTI6Y29uZmlnIEtWTVxuYXJjaC94ODYva3ZtL0tjb25maWctNTMtXHR0cmlzdGF0ZSBcJiMzNDtLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDc6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjIwNzgKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAzNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipDaGVja2luZyBLVk0gQ29uZmlndXJhdGlvbiBpbiBEZXRhaWwqKgoKT2theSwgdGltZSB0byBkaXZlIGludG8gdGhlIG5pdHR5LWdyaXR0eS4gQmVmb3JlIEkgbWFrZSBhbnkgYXNzdW1wdGlvbnMsIEkmIzM5O20gZ29pbmcgdG8gZG91YmxlLWNoZWNrIHRoZSBjb25maWd1cmF0aW9uIG5hbWVzIHNwZWNpZmljYWxseSByZWxhdGVkIHRvIEtWTSBmb3IgeDg2LiBJIG5lZWQgdG8gbWFrZSAqYWJzb2x1dGVseSogc3VyZSBJJiMzOTttIHdvcmtpbmcgd2l0aCB0aGUgcHJlY2lzZSBkZWZpbml0aW9ucy4gVGhlIG1vc3QgbG9naWNhbCBwbGFjZSB0byBmaW5kIHRoYXQgYXV0aG9yaXRhdGl2ZSBzb3VyY2UgaXMgYGFyY2gveDg2L2t2bS9LY29uZmlnYCwgYW5kIEkmIzM5O20gZ29pbmcgdG8gemVybyBpbiBvbiBsaW5lcyAyMCB0aHJvdWdoIDEwMC4gVGhpcyBpcyB3aGVyZSBJIGV4cGVjdCB0aGUgY29yZSBLVk0gY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgeDg2IGFyY2hpdGVjdHVyZSB0byBiZSBkZWZpbmVkLiBCeSB2ZXJpZnlpbmcgdGhlIGV4YWN0IGNvbmZpZyBuYW1lcyBoZXJlLCBJJiMzOTtsbCBiZSBhYmxlIHRvIGF2b2lkIGFueSBwb3RlbnRpYWwgbWlzaW50ZXJwcmV0YXRpb25zIG9yIGVycm9ycyBkb3duIHRoZSBsaW5lIGFuZCBlbnN1cmUgbXkgdW5kZXJzdGFuZGluZyBpcyByb2NrIHNvbGlkLiBQcmVjaXNpb24gaXMga2V5LCBhcyBhbHdheXMsIHdoZW4gZGVhbGluZyB3aXRoIGtlcm5lbCBjb25maWd1cmF0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDc6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE4LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDg1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgMTg6XHRpZiBWSVJUVUFMSVpBVElPTlxuICAxOTpcdFxuICAyMDpcdGNvbmZpZyBLVk1fWDg2XG4gIDIxOlx0XHRkZWZfdHJpc3RhdGUgS1ZNIGlmIChLVk1fSU5URUwgIT0gbiB8fCBLVk1fQU1EICE9IG4pXG4gIDIyOlx0XHRzZWxlY3QgS1ZNX0NPTU1PTlxuICAyMzpcdFx0c2VsZWN0IEtWTV9FTElERV9UTEJfRkxVU0hfSUZfWU9VTkdcbiAgMjQ6XHRcdHNlbGVjdCBLVk1fTU1VX0xPQ0tMRVNTX0FHSU5HXG4gIDI1Olx0XHRzZWxlY3QgSEFWRV9LVk1fSVJRQ0hJUFxuICAyNjpcdFx0c2VsZWN0IEhBVkVfS1ZNX1BGTkNBQ0hFXG4gIDI3Olx0XHRzZWxlY3QgSEFWRV9LVk1fRElSVFlfUklOR19UU09cbiAgMjg6XHRcdHNlbGVjdCBIQVZFX0tWTV9ESVJUWV9SSU5HX0FDUV9SRUxcbiAgMjk6XHRcdHNlbGVjdCBIQVZFX0tWTV9JUlFfQllQQVNTXG4gIDMwOlx0XHRzZWxlY3QgSEFWRV9LVk1fSVJRX1JPVVRJTkdcbiAgMzE6XHRcdHNlbGVjdCBIQVZFX0tWTV9SRUFET05MWV9NRU1cbiAgMzI6XHRcdHNlbGVjdCBWSE9TVF9UQVNLXG4gIDMzOlx0XHRzZWxlY3QgS1ZNX0FTWU5DX1BGXG4gIDM0Olx0XHRzZWxlY3QgVVNFUl9SRVRVUk5fTk9USUZJRVJcbiAgMzU6XHRcdHNlbGVjdCBLVk1fTU1JT1xuICAzNjpcdFx0c2VsZWN0IFNDSEVEX0lORk9cbiAgMzc6XHRcdHNlbGVjdCBQRVJGX0VWRU5UU1xuICAzODpcdFx0c2VsZWN0IEdVRVNUX1BFUkZfRVZFTlRTXG4gIDM5Olx0XHRzZWxlY3QgUEVSRl9HVUVTVF9NRURJQVRFRF9QTVVcbiAgNDA6XHRcdHNlbGVjdCBIQVZFX0tWTV9NU0lcbiAgNDE6XHRcdHNlbGVjdCBIQVZFX0tWTV9DUFVfUkVMQVhfSU5URVJDRVBUXG4gIDQyOlx0XHRzZWxlY3QgSEFWRV9LVk1fTk9fUE9MTFxuICA0MzpcdFx0c2VsZWN0IFZJUlRfWEZFUl9UT19HVUVTVF9XT1JLXG4gIDQ0Olx0XHRzZWxlY3QgS1ZNX0dFTkVSSUNfRElSVFlMT0dfUkVBRF9QUk9URUNUXG4gIDQ1Olx0XHRzZWxlY3QgS1ZNX1ZGSU9cbiAgNDY6XHRcdHNlbGVjdCBIQVZFX0tWTV9QTV9OT1RJRklFUiBpZiBQTVxuICA0NzpcdFx0c2VsZWN0IEtWTV9HRU5FUklDX0hBUkRXQVJFX0VOQUJMSU5HXG4gIDQ4Olx0XHRzZWxlY3QgS1ZNX0dFTkVSSUNfUFJFX0ZBVUxUX01FTU9SWVxuICA0OTpcdFx0c2VsZWN0IEtWTV9XRVJST1IgaWYgV0VSUk9SXG4gIDUwOlx0XHRzZWxlY3QgS1ZNX0dVRVNUX01FTUZEIGlmIFg4Nl82NFxuICA1MTpcdFxuICA1MjpcdGNvbmZpZyBLVk1cbiAgNTM6XHRcdHRyaXN0YXRlIFwmIzM0O0tlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFwmIzM0O1xuICA1NDpcdFx0ZGVwZW5kcyBvbiBYODZfTE9DQUxfQVBJQ1xuICA1NTpcdFx0aGVscFxuICA1NjpcdFx0ICBTdXBwb3J0IGhvc3RpbmcgZnVsbHkgdmlydHVhbGl6ZWQgZ3Vlc3QgbWFjaGluZXMgdXNpbmcgaGFyZHdhcmVcbiAgNTc6XHRcdCAgdmlydHVhbGl6YXRpb24gZXh0ZW5zaW9ucy4gIFlvdSB3aWxsIG5lZWQgYSBmYWlybHkgcmVjZW50XG4gIDU4Olx0XHQgIHByb2Nlc3NvciBlcXVpcHBlZCB3aXRoIHZpcnR1YWxpemF0aW9uIGV4dGVuc2lvbnMuIFlvdSB3aWxsIGFsc29cbiAgNTk6XHRcdCAgbmVlZCB0byBzZWxlY3Qgb25lIG9yIG1vcmUgb2YgdGhlIHByb2Nlc3NvciBtb2R1bGVzIGJlbG93LlxuICA2MDpcdFxuICA2MTpcdFx0ICBUaGlzIG1vZHVsZSBwcm92aWRlcyBhY2Nlc3MgdG8gdGhlIGhhcmR3YXJlIGNhcGFiaWxpdGllcyB0aHJvdWdoXG4gIDYyOlx0XHQgIGEgY2hhcmFjdGVyIGRldmljZSBub2RlIG5hbWVkIC9kZXYva3ZtLlxuICA2MzpcdFxuICA2NDpcdFx0ICBUbyBjb21waWxlIHRoaXMgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbiAgNjU6XHRcdCAgd2lsbCBiZSBjYWxsZWQga3ZtLlxuICA2NjpcdFxuICA2NzpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuICA2ODpcdFxuICA2OTpcdGNvbmZpZyBLVk1fV0VSUk9SXG4gIDcwOlx0XHRib29sIFwmIzM0O0NvbXBpbGUgS1ZNIHdpdGggLVdlcnJvclwmIzM0O1xuICA3MTpcdFx0IyBEaXNhbGxvdyBLVk0mIzM5O3MgLVdlcnJvciBpZiBLQVNBTiBpcyBlbmFibGVkLCBlLmcuIHRvIGd1YXJkIGFnYWluc3RcbiAgNzI6XHRcdCMgcmFuZG9taXplZCBjb25maWdzIGZyb20gc2VsZWN0aW5nIEtWTV9XRVJST1I9eSwgd2hpY2ggZG9lc24mIzM5O3QgcGxheVxuICA3MzpcdFx0IyBuaWNlIHdpdGggS0FTQU4uICBLQVNBTiBidWlsZHMgZ2VuZXJhdGVzIHdhcm5pbmdzIGZvciB0aGUgZGVmYXVsdFxuICA3NDpcdFx0IyBGUkFNRV9XQVJOLCBpLmUuIEtWTV9XRVJST1I9eSB3aXRoIEtBU0FOPXkgcmVxdWlyZXMgc3BlY2lhbCB0dW5pbmcuXG4gIDc1Olx0XHQjIEJ1aWxkaW5nIEtWTSB3aXRoIC1XZXJyb3IgYW5kIEtBU0FOIGlzIHN0aWxsIGRvYWJsZSB2aWEgZW5hYmxpbmdcbiAgNzY6XHRcdCMgdGhlIGtlcm5lbC13aWRlIFdFUlJPUj15LlxuICA3NzpcdFx0ZGVwZW5kcyBvbiBLVk1fWDg2IFx1MDAyNlx1MDAyNiAoKEVYUEVSVCBcdTAwMjZcdTAwMjYgIUtBU0FOKSB8fCBXRVJST1IpXG4gIDc4Olx0XHRoZWxwXG4gIDc5Olx0XHQgIEFkZCAtV2Vycm9yIHRvIHRoZSBidWlsZCBmbGFncyBmb3IgS1ZNLlxuICA4MDpcdFxuICA4MTpcdFx0ICBJZiBpbiBkb3VidCwgc2F5IFwmIzM0O05cJiMzNDsuXG4gIDgyOlx0XG4gIDgzOlx0Y29uZmlnIEtWTV9TV19QUk9URUNURURfVk1cbiAgODQ6XHRcdGJvb2wgXCYjMzQ7RW5hYmxlIHN1cHBvcnQgZm9yIEtWTSBzb2Z0d2FyZS1wcm90ZWN0ZWQgVk1zXCYjMzQ7XG4gIDg1Olx0XHRkZXBlbmRzIG9uIEVYUEVSVFxuICA4NjpcdFx0ZGVwZW5kcyBvbiBLVk1fWDg2IFx1MDAyNlx1MDAyNiBYODZfNjRcbiAgODc6XHRcdHNlbGVjdCBLVk1fR0VORVJJQ19NRU1PUllfQVRUUklCVVRFU1xuICA4ODpcdFx0aGVscFxuICA4OTpcdFx0ICBFbmFibGUgc3VwcG9ydCBmb3IgS1ZNIHNvZnR3YXJlLXByb3RlY3RlZCBWTXMuICBDdXJyZW50bHksIHNvZnR3YXJlLVxuICA5MDpcdFx0ICBwcm90ZWN0ZWQgVk1zIGFyZSBwdXJlbHkgYSBkZXZlbG9wbWVudCBhbmQgdGVzdGluZyB2ZWhpY2xlIGZvclxuICA5MTpcdFx0ICBLVk1fQ1JFQVRFX0dVRVNUX01FTUZELiAgQXR0ZW1wdGluZyB0byBydW4gYSBcJiMzNDtyZWFsXCYjMzQ7IFZNIHdvcmtsb2FkIGFzIGFcbiAgOTI6XHRcdCAgc29mdHdhcmUtcHJvdGVjdGVkIFZNIHdpbGwgZmFpbCBtaXNlcmFibHkuXG4gIDkzOlx0XG4gIDk0Olx0XHQgIElmIHVuc3VyZSwgc2F5IFwmIzM0O05cJiMzNDsuXG4gIDk1Olx0XG4gIDk2Olx0Y29uZmlnIEtWTV9JTlRFTFxuICA5NzpcdFx0dHJpc3RhdGUgXCYjMzQ7S1ZNIGZvciBJbnRlbCAoYW5kIGNvbXBhdGlibGUpIHByb2Nlc3NvcnMgc3VwcG9ydFwmIzM0O1xuICA5ODpcdFx0ZGVwZW5kcyBvbiBLVk0gXHUwMDI2XHUwMDI2IElBMzJfRkVBVF9DVExcbiAgOTk6XHRcdHNlbGVjdCBYODZfRlJFRCBpZiBYODZfNjRcbiAxMDA6XHRcdGhlbHBcbiAxMDE6XHRcdCAgUHJvdmlkZXMgc3VwcG9ydCBmb3IgS1ZNIG9uIHByb2Nlc3NvcnMgZXF1aXBwZWQgd2l0aCBJbnRlbCYjMzk7cyBWVFxuIDEwMjpcdFx0ICBleHRlbnNpb25zLCBhLmsuYS4gVmlydHVhbCBNYWNoaW5lIEV4dGVuc2lvbnMgKFZNWCkuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDA3OjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzNjkxCgkJCQkJCQlvdXRwdXQ6IDE2MwoJCQkJCQkJdGhvdWdodHM6IDM0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipLVk0gRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb24qKgoKT2theSwgc28gSSYjMzk7dmUgcGlucG9pbnRlZCB0aGUgaW1wb3J0YW50IGtlcm5lbCBjb25maWd1cmF0aW9ucyBoZXJlOiBgS1ZNYCwgYEtWTV9JTlRFTGAsIGFuZCBgS1ZNX0FNRGAuIFRoZXNlIGFyZSB0aGUgZm91bmRhdGlvbiBmb3IgdGhpcyB0YXJnZXQuIFRoZSBgV29ydGhGdXp6aW5nYCBmbGFnIGlzIHNldCB0byB0cnVlLCB3aGljaCBpcyBnb29kOyBpdCBtZWFucyB0aGlzIGlzIGEgd29ydGh3aGlsZSBhcmVhIHRvIGludmVzdGlnYXRlLiBBbmQgdGhlbiB3ZSBoYXZlIHRoZSBzcGVjaWZpYyBmdW5jdGlvbnMgdG8gZm9jdXMgb246IGBrdm1fbW11X2NoYW5nZV9tbXVfcGFnZXNgIGFuZCBga3ZtX3ZtX2lvY3RsX3NldF9ucl9tbXVfcGFnZXNgLiBUaG9zZSBhcmUgdGhlIGVudHJ5IHBvaW50cy4KCk5vdywgbGV0JiMzOTtzIG1ha2Ugc3VyZSBldmVyeXRoaW5nIGxpbmVzIHVwIHdpdGggbXkgdHJpYWdlIHBoaWxvc29waHkuIEZpcnN0LCByZWFjaGFiaWxpdHkgaXMga2V5LiBJJiMzOTt2ZSBjb25maXJtZWQgdGhhdCB0aGUgdGFyZ2V0IGlvY3RscywgcGFydGljdWxhcmx5IGBLVk1fU0VUX05SX01NVV9QQUdFU2AsIGFyZSBzdGFuZGFyZCBzeXNjYWxscy9pb2N0bHMgYW5kIGFyZSB0aGVyZWZvcmUgbGlrZWx5IGZ1enphYmxlIHdpdGggc3l6a2FsbGVyLiBUaGUgYGt2bV9tbXVfY2hhbmdlX21tdV9wYWdlc2AgcGF0Y2ggbG9naWMgaXMgaW50ZXJlc3Rpbmc7IGl0IGxvb2tzIGxpa2UgdGhlcmUmIzM5O3MgYSBzYWZldHkgY2hlY2sgdXNpbmcgYG1heCgpYCB0byBhdm9pZCBwb3RlbnRpYWxseSBwcm9ibGVtYXRpYyBzaGFkb3cgcGFnZSBtYW5pcHVsYXRpb25zLiBBbmQgd2UgYXJlIGRlYWxpbmcgd2l0aCBhIGNvcmUgc3Vic3lzdGVtIGhlcmUsIHNwZWNpZmljYWxseSBgYXJjaC94ODYva3ZtL21tdS9tbXUuY2AuCgpTZWNvbmQsIGBXb3J0aEZ1enppbmdgIGlzIGFscmVhZHkgc2V0IHRvIHRydWUsIHNvIHRoYXQmIzM5O3MgZG9uZS4KClRoaXJkLCBvdXIgZm9jdXMgc3ltYm9scyBhcmUgYGt2bV9tbXVfY2hhbmdlX21tdV9wYWdlc2AgYW5kIGBrdm1fdm1faW9jdGxfc2V0X25yX21tdV9wYWdlc2AuIFRoZXkmIzM5O3JlIG5vdCB1YmlxdWl0b3VzOyB0aGV5IGFyZSBxdWl0ZSBzcGVjaWZpYyB0byB0aGUgbG9naWMsIHdoaWNoIG1ha2VzIHRoZW0gcHJpbWUgdGFyZ2V0cy4KCkZvdXJ0aCwgdGhlIGBFbmFibGVDb25maWdzYCBhcmUgc3BvdCBvbjogYEtWTWAsIGBLVk1fSU5URUxgLCBhbmQgYEtWTV9BTURgLgoKQWxyaWdodCwgSSB0aGluayB0aGF0JiMzOTtzIGFsbCB0aGUgY3JpdGVyaWEuIFdlJiMzOTtyZSByZWFkeSB0byBwcm9jZWVkLiBMZXQmIzM5O3MgY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwNzowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDssCiAgICAmIzM0O0tWTV9JTlRFTCYjMzQ7LAogICAgJiMzNDtLVk1fQU1EJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX21tdV9jaGFuZ2VfbW11X3BhZ2VzJiMzNDssCiAgICAmIzM0O2t2bV92bV9pb2N0bF9zZXRfbnJfbW11X3BhZ2VzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHNoYWRvdyBNTVUgcGFnZSBjb3VudCBtYW5hZ2VtZW50IGxvZ2ljIGluIHg4NiBLVk0gKGBrdm1fbW11X2NoYW5nZV9tbXVfcGFnZXNgKSwgd2hpY2ggaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBLVk0gaW9jdGxzIChzdWNoIGFzIEtWTV9TRVRfTlJfTU1VX1BBR0VTKSBhbmQgbWVtb3J5IHJlZ2lvbiBjb25maWd1cmF0aW9uLiBGdXp6aW5nIGlzIHJlY29tbWVuZGVkIHRvIGVuc3VyZSBjb3JyZWN0IE1NVSBzaGFkb3cgcGFnZSBhbGxvY2F0aW9uIGFuZCB6YXBwaW5nIGludmFyaWFudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7LAogICAgJiMzNDtLVk1fSU5URUwmIzM0OywKICAgICYjMzQ7S1ZNX0FNRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9tbXVfY2hhbmdlX21tdV9wYWdlcyYjMzQ7LAogICAgJiMzNDtrdm1fdm1faW9jdGxfc2V0X25yX21tdV9wYWdlcyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBzaGFkb3cgTU1VIHBhZ2UgY291bnQgbWFuYWdlbWVudCBsb2dpYyBpbiB4ODYgS1ZNIChga3ZtX21tdV9jaGFuZ2VfbW11X3BhZ2VzYCksIHdoaWNoIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgS1ZNIGlvY3RscyAoc3VjaCBhcyBLVk1fU0VUX05SX01NVV9QQUdFUykgYW5kIG1lbW9yeSByZWdpb24gY29uZmlndXJhdGlvbi4gRnV6emluZyBpcyByZWNvbW1lbmRlZCB0byBlbnN1cmUgY29ycmVjdCBNTVUgc2hhZG93IHBhZ2UgYWxsb2NhdGlvbiBhbmQgemFwcGluZyBpbnZhcmlhbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwNzowNTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDA3OjA1PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYSBjYWxjdWxhdGlvbiBpbiBga3ZtX21tdV9jaGFuZ2VfbW11X3BhZ2VzKClgIHRvIHByZXZlbnQgYG5fbWF4X21tdV9wYWdlc2AgZnJvbSBiZWluZyBzZXQgbG93ZXIgdGhhbiBgZ29hbF9ucl9tbXVfcGFnZXNgIGlmIGBrdm1fbW11X3phcF9vbGRlc3RfbW11X3BhZ2VzKClgIHphcHMgbW9yZSBzaGFkb3cgcGFnZXMgdGhhbiByZXF1ZXN0ZWQuIFRoaXMgY2hhbmdlIG9ubHkgdXBkYXRlcyBhIHNjYWxhciBpbnRlZ2VyIHZhbHVlIHRyYWNraW5nIE1NVSBwYWdlIGxpbWl0cyBhbmQgZG9lcyBub3QgaW52b2x2ZSBtZW1vcnkgYWxsb2NhdGlvbnMsIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgdXNhZ2UsIG9yIGNvcHlpbmcga2VybmVsIGRhdGEgdG8gdXNlcnNwYWNlLiBUaGVyZWZvcmUsIHRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBvciBrZXJuZWwgaW5mby1sZWFrcywgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA5ZWMwY2Q2YmMyZTA0Nzg2OWIyYjdmYThlOGFiZTM1YmJjNDc2YTZlCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBTZXAgMTEgMDc6MDQ6MzYgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vbW11L21tdS5jIGIvYXJjaC94ODYva3ZtL21tdS9tbXUuYwppbmRleCAwNjRlY2MzM2I5MjY3Li5lZmViYTU4OTM2YTY4IDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rdm0vbW11L21tdS5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS9tbXUvbW11LmMKQEAgLTI5MTMsNyAmIzQzOzI5MTMsNyBAQCB2b2lkIGt2bV9tbXVfY2hhbmdlX21tdV9wYWdlcyhzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgZ29hbF9ucl9tbXVfcGFnZXMpCiAJCWt2bV9tbXVfemFwX29sZGVzdF9tbXVfcGFnZXMoa3ZtLCBrdm0tJmd0O3N0YXQubW11X3NoYWRvd19wYWdlcyAtCiAJCQkJCQkgIGdvYWxfbnJfbW11X3BhZ2VzKTsKIAotCQlnb2FsX25yX21tdV9wYWdlcyA9IGt2bS0mZ3Q7c3RhdC5tbXVfc2hhZG93X3BhZ2VzOwomIzQzOwkJZ29hbF9ucl9tbXVfcGFnZXMgPSBtYXgoa3ZtLSZndDtzdGF0Lm1tdV9zaGFkb3dfcGFnZXMsIGdvYWxfbnJfbW11X3BhZ2VzKTsKIAl9CiAKIAlrdm0tJmd0O2FyY2gubl9tYXhfbW11X3BhZ2VzID0gZ29hbF9ucl9tbXVfcGFnZXM7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwNzowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTcxCgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMjQ5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBLVk0gTU1VIFBhZ2UgQWxsb2NhdGlvbiBPcHRpbWl6YXRpb24qKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIEtWTSBjb2RlLiBNeSBpbml0aWFsIGltcHJlc3Npb24gaXMgdGhhdCB3ZSYjMzk7cmUgbG9va2luZyBhdCBhIHR3ZWFrIHRvIHRoZSBNTVUgcGFnZSBhbGxvY2F0aW9uIHN0cmF0ZWd5LCBzcGVjaWZpY2FsbHkgd2l0aGluIGBhcmNoL3g4Ni9rdm0vbW11L21tdS5jYC4gVGhlIGRpZmYgaXRzZWxmIGlzIHF1aXRlIHNtYWxsLCBidXQgdGhlIGltcGxpY2F0aW9ucyBjb3VsZCBiZSBzaWduaWZpY2FudCwgc28gbGV0JiMzOTtzIGRpZyBkZWVwZXIuCgpUaGUgY29yZSBvZiB0aGUgY2hhbmdlIGFwcGVhcnMgdG8gYmUgaW4gdGhlIGBrdm1fbW11X2NoYW5nZV9tbXVfcGFnZXNgIGZ1bmN0aW9uLiBUaGUgb3JpZ2luYWwgY29kZSB1bmNvbmRpdGlvbmFsbHkgc2V0IGBnb2FsX25yX21tdV9wYWdlc2AgdG8gYGt2bS0mZ3Q7c3RhdC5tbXVfc2hhZG93X3BhZ2VzYC4gTm93LCBpdCYjMzk7cyB0YWtpbmcgdGhlIGBtYXhgIG9mIHRoZSBjdXJyZW50IHNoYWRvdyBwYWdlcyBhbmQgdGhlIGBnb2FsX25yX21tdV9wYWdlc2AuIFRoaXMgc3VnZ2VzdHMgYSBwb3RlbnRpYWwgb3B0aW1pemF0aW9uIG9yIGEgZml4LiBJJiMzOTttIGd1ZXNzaW5nIHRoYXQgaW4gc29tZSBlZGdlIGNhc2VzLCB3ZSBtaWdodCBoYXZlIGJlZW4gdW5uZWNlc3NhcmlseSByZWR1Y2luZyB0aGUgbnVtYmVyIG9mIHNoYWRvdyBwYWdlcywgYW5kIHRoaXMgYG1heGAgaXMgbWVhbnQgdG8gcHJldmVudCB0aGF0LiBXZSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHNjZW5hcmlvcyB3aGVyZSBgZ29hbF9ucl9tbXVfcGFnZXNgIG1pZ2h0IGJlIHNtYWxsZXIgdGhhbiBga3ZtLSZndDtzdGF0Lm1tdV9zaGFkb3dfcGFnZXNgIHRvIGZ1bGx5IGdyYXNwIHRoZSBjaGFuZ2UmIzM5O3MgaW1wYWN0LiBTcGVjaWZpY2FsbHksIGhvdyBhcmUgYGdvYWxfbnJfbW11X3BhZ2VzYCBhbmQgYGt2bS0mZ3Q7c3RhdC5tbXVfc2hhZG93X3BhZ2VzYCBjYWxjdWxhdGVkPyBXaGF0IHRyaWdnZXJzIGBrdm1fbW11X2NoYW5nZV9tbXVfcGFnZXNgPyBJJiMzOTtsbCBuZWVkIHRvIHRyYWNlIHRoZSBjYWxsIGdyYXBoIGFuZCB1bmRlcnN0YW5kIHRoZSBzdXJyb3VuZGluZyBsb2dpYyB0byBhc3Nlc3MgaWYgdGhpcyBpcyBhZGRyZXNzaW5nIGEgcmVhbCBwZXJmb3JtYW5jZSBib3R0bGVuZWNrIG9yIGEgZnVuY3Rpb25hbCBpc3N1ZS4gSSYjMzk7bGwgYWxzbyBuZWVkIHRvIGNvbnNpZGVyIGFueSBwb3RlbnRpYWwgcmVncmVzc2lvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDA3OjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL21tdS9tbXUuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI5MDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MjkwMDpcdFx0XHRyZXR1cm4gLUVOT1NQQztcbjI5MDE6XHRcdHJldHVybiAwO1xuMjkwMjpcdH1cbjI5MDM6XHRcbjI5MDQ6XHQvKlxuMjkwNTpcdCAqIENoYW5naW5nIHRoZSBudW1iZXIgb2YgbW11IHBhZ2VzIGFsbG9jYXRlZCB0byB0aGUgdm1cbjI5MDY6XHQgKiBOb3RlOiBpZiBnb2FsX25yX21tdV9wYWdlcyBpcyB0b28gc21hbGwsIHlvdSB3aWxsIGdldCBkZWFkIGxvY2tcbjI5MDc6XHQgKi9cbjI5MDg6XHR2b2lkIGt2bV9tbXVfY2hhbmdlX21tdV9wYWdlcyhzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgZ29hbF9ucl9tbXVfcGFnZXMpXG4yOTA5Olx0e1xuMjkxMDpcdFx0d3JpdGVfbG9jayhcdTAwMjZrdm0tXHUwMDNlbW11X2xvY2spO1xuMjkxMTpcdFxuMjkxMjpcdFx0aWYgKGt2bS1cdTAwM2VzdGF0Lm1tdV9zaGFkb3dfcGFnZXMgXHUwMDNlIGdvYWxfbnJfbW11X3BhZ2VzKSB7XG4yOTEzOlx0XHRcdGt2bV9tbXVfemFwX29sZGVzdF9tbXVfcGFnZXMoa3ZtLCBrdm0tXHUwMDNlc3RhdC5tbXVfc2hhZG93X3BhZ2VzIC1cbjI5MTQ6XHRcdFx0XHRcdFx0XHQgIGdvYWxfbnJfbW11X3BhZ2VzKTtcbjI5MTU6XHRcbjI5MTY6XHRcdFx0Z29hbF9ucl9tbXVfcGFnZXMgPSBtYXgoa3ZtLVx1MDAzZXN0YXQubW11X3NoYWRvd19wYWdlcywgZ29hbF9ucl9tbXVfcGFnZXMpO1xuMjkxNzpcdFx0fVxuMjkxODpcdFxuMjkxOTpcdFx0a3ZtLVx1MDAzZWFyY2gubl9tYXhfbW11X3BhZ2VzID0gZ29hbF9ucl9tbXVfcGFnZXM7XG4yOTIwOlx0XG4yOTIxOlx0XHR3cml0ZV91bmxvY2soXHUwMDI2a3ZtLVx1MDAzZW1tdV9sb2NrKTtcbjI5MjI6XHR9XG4yOTIzOlx0XG4yOTI0Olx0Ym9vbCBfX2t2bV9tbXVfdW5wcm90ZWN0X2dmbl9hbmRfcmV0cnkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBncGFfdCBjcjJfb3JfZ3BhLFxuMjkyNTpcdFx0XHRcdFx0ICAgICAgIGJvb2wgYWx3YXlzX3JldHJ5KVxuMjkyNjpcdHtcbjI5Mjc6XHRcdHN0cnVjdCBrdm0gKmt2bSA9IHZjcHUtXHUwMDNla3ZtO1xuMjkyODpcdFx0TElTVF9IRUFEKGludmFsaWRfbGlzdCk7XG4yOTI5Olx0XHRzdHJ1Y3Qga3ZtX21tdV9wYWdlICpzcDtcbjI5MzA6XHRcdGdwYV90IGdwYSA9IGNyMl9vcl9ncGE7XG4yOTMxOlx0XHRib29sIHIgPSBmYWxzZTtcbjI5MzI6XHRcbjI5MzM6XHRcdC8qXG4yOTM0Olx0XHQgKiBCYWlsIGVhcmx5IGlmIHRoZXJlIGFyZW4mIzM5O3QgYW55IHdyaXRlLXByb3RlY3RlZCBzaGFkb3cgcGFnZXMgdG8gYXZvaWRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDc6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQwNAoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBga3ZtX21tdV9jaGFuZ2VfbW11X3BhZ2VzYCBGdW5jdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udHJvbCBmbG93IGFuZCBpbXBhY3Qgb2YgYGt2bV9tbXVfY2hhbmdlX21tdV9wYWdlc2AuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gdHJhY2sgaXRzIGNhbGwgc2l0ZXMuIEkgd2FudCB0byBzZWUgKmV4YWN0bHkqIHdoZXJlIGFuZCBob3cgdGhlIE1NVSBwYWdlIHN0cnVjdHVyZXMgYXJlIGJlaW5nIG1vZGlmaWVkLiBUaGlzIHN1Z2dlc3RzIEkgbmVlZCB0byB0cmFjZSB0aGUgbW9kaWZpY2F0aW9ucyB0aGVtc2VsdmVzLiBJcyB0aGlzIGZ1bmN0aW9uIHJlc3BvbnNpYmxlIGZvciBhbGwgTU1VIHBhZ2UgY2hhbmdlcywgb3IganVzdCBjZXJ0YWluIHR5cGVzPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSB3aXRoaW4gdGhlIHdpZGVyIEtWTSBNTVUgYXJjaGl0ZWN0dXJlLiBXaGF0IGFyZSB0aGUga2V5IGRhdGEgc3RydWN0dXJlcyB0aGlzIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLCBhbmQgd2hhdCBraW5kIG9mIGNvbnNpc3RlbmN5IG1lY2hhbmlzbXMgYXJlIGluIHBsYWNlIHdoZW4gaXQgbWFuaXB1bGF0ZXMgdGhvc2Ugc3RydWN0dXJlcz8gVWx0aW1hdGVseSwgSSB3YW50IHRvIGlkZW50aWZ5IHBvdGVudGlhbCBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcyBvciBzdWJ0bGUgY29ycmVjdG5lc3MgaXNzdWVzIHJlbGF0ZWQgdG8gTU1VIHBhZ2UgdXBkYXRlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDc6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX21tdV9jaGFuZ2VfbW11X3BhZ2VzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9tbXUuaD0xMzQ9dm9pZCBrdm1fbW11X2ludmFsaWRhdGVfbW1pb19zcHRlcyhzdHJ1Y3Qga3ZtICprdm0sIHU2NCBnZW4pO1xuYXJjaC94ODYva3ZtL21tdS5oOjEzNTp2b2lkIGt2bV9tbXVfY2hhbmdlX21tdV9wYWdlcyhzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcga3ZtX25yX21tdV9wYWdlcyk7XG5hcmNoL3g4Ni9rdm0vbW11LmgtMTM2LXZvaWQga3ZtX3phcF9nZm5fcmFuZ2Uoc3RydWN0IGt2bSAqa3ZtLCBnZm5fdCBnZm5fc3RhcnQsIGdmbl90IGdmbl9lbmQpO1xuLS1cbmFyY2gveDg2L2t2bS9tbXUvbW11LmM9Mjg4MT1zdGF0aWMgaW50IG1ha2VfbW11X3BhZ2VzX2F2YWlsYWJsZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL21tdS9tbXUuYy0yOTA3LSAqL1xuYXJjaC94ODYva3ZtL21tdS9tbXUuYzoyOTA4OnZvaWQga3ZtX21tdV9jaGFuZ2VfbW11X3BhZ2VzKHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgbG9uZyBnb2FsX25yX21tdV9wYWdlcylcbmFyY2gveDg2L2t2bS9tbXUvbW11LmMtMjkwOS17XG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jPTM5MTA9c3RhdGljIGludCBrdm1fdm1faW9jdGxfc2V0X25yX21tdV9wYWdlcyhzdHJ1Y3Qga3ZtICprdm0sXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTM5MTctXG5hcmNoL3g4Ni9rdm0veDg2LmM6MzkxODpcdGt2bV9tbXVfY2hhbmdlX21tdV9wYWdlcyhrdm0sIGt2bV9ucl9tbXVfcGFnZXMpO1xuYXJjaC94ODYva3ZtL3g4Ni5jLTM5MTktXHRrdm0tXHUwMDNlYXJjaC5uX3JlcXVlc3RlZF9tbXVfcGFnZXMgPSBrdm1fbnJfbW11X3BhZ2VzO1xuLS1cbmFyY2gveDg2L2t2bS94ODYuYz0xMDMzOD12b2lkIGt2bV9hcmNoX2NvbW1pdF9tZW1vcnlfcmVnaW9uKHN0cnVjdCBrdm0gKmt2bSxcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTAzNTEtXHRcdG5yX21tdV9wYWdlcyA9IG1heChucl9tbXVfcGFnZXMsIEtWTV9NSU5fQUxMT0NfTU1VX1BBR0VTKTtcbmFyY2gveDg2L2t2bS94ODYuYzoxMDM1MjpcdFx0a3ZtX21tdV9jaGFuZ2VfbW11X3BhZ2VzKGt2bSwgbnJfbW11X3BhZ2VzKTtcbmFyY2gveDg2L2t2bS94ODYuYy0xMDM1My1cdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDc6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDI4NwoJCQkJCQkJb3V0cHV0OiAxNjAKCQkJCQkJCXRob3VnaHRzOiA0MTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNTVUgUGFnZSBBbGxvY2F0aW9uIEFkanVzdG1lbnQqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIGRvd24gdGhpcyBjaGFuZ2UgdG8gYGt2bV9tbXVfY2hhbmdlX21tdV9wYWdlc2AuIEVzc2VudGlhbGx5LCB3ZSYjMzk7cmUgdHdlYWtpbmcgaG93IHdlIGRldGVybWluZSB0aGUgbWF4aW11bSBudW1iZXIgb2YgTU1VIHBhZ2VzIGFsbG9jYXRlZCB0byBhIFZNLCBzcGVjaWZpY2FsbHkgYWRqdXN0aW5nIGBrdm0tJmd0O2FyY2gubl9tYXhfbW11X3BhZ2VzYC4gVGhlIGluaXRpYWwgYXBwcm9hY2ggdXNlZCBga3ZtLSZndDtzdGF0Lm1tdV9zaGFkb3dfcGFnZXNgIGFzIHRoZSB0YXJnZXQsIGJ1dCB0aGF0JiMzOTtzIGJlZW4gbW9kaWZpZWQuCgpOb3csIGluc3RlYWQgb2YganVzdCBhc3NpZ25pbmcgYGt2bS0mZ3Q7c3RhdC5tbXVfc2hhZG93X3BhZ2VzYCB0byBgZ29hbF9ucl9tbXVfcGFnZXNgLCB3ZSYjMzk7cmUgdXNpbmcgYG1heChrdm0tJmd0O3N0YXQubW11X3NoYWRvd19wYWdlcywgZ29hbF9ucl9tbXVfcGFnZXMpYC4gVGhlIHJlYXNvbiBmb3IgdGhpcyBpcyBjbGVhcjogYGt2bV9tbXVfemFwX29sZGVzdF9tbXVfcGFnZXNgIGNhbiwgdW5kZXIgY2VydGFpbiBjaXJjdW1zdGFuY2VzLCB6YXAgKm1vcmUqIHBhZ2VzIHRoYW4gcmVxdWVzdGVkLCBvciwgYWZ0ZXIgYSB6YXBwaW5nIG9wZXJhdGlvbiwgYG1tdV9zaGFkb3dfcGFnZXNgIG1pZ2h0IGJlIGxlc3MgdGhhbiBgZ29hbF9ucl9tbXVfcGFnZXNgLiBJZiB3ZSB3ZXJlIHRvIG5haXZlbHkgc2V0IGBnb2FsX25yX21tdV9wYWdlc2AgdG8gYGt2bS0mZ3Q7c3RhdC5tbXVfc2hhZG93X3BhZ2VzYCBpbiB0aGVzZSBzaXR1YXRpb25zLCB3ZSYjMzk7ZCBpbmFkdmVydGVudGx5IGxvd2VyIHRoZSBsaW1pdCwgYG5fbWF4X21tdV9wYWdlc2AsIGJlbG93IHRoZSBhY3R1YWwgaW50ZW5kZWQgYGdvYWxfbnJfbW11X3BhZ2VzYC4gVGhlIGBtYXhgIGZ1bmN0aW9uIGlzIHRoZXJlIHRvIGVuc3VyZSB0aGF0IGBuX21heF9tbXVfcGFnZXNgIHJlbWFpbnMgYXQgbGVhc3QgYXMgbGFyZ2UgYXMgYGdvYWxfbnJfbW11X3BhZ2VzYC4gSXQmIzM5O3MgYSBzYWZlZ3VhcmRpbmcgbWVjaGFuaXNtLgoKTm93LCBsZXQmIzM5O3MgY29uc2lkZXIgcG90ZW50aWFsIEtNU0FOIGltcGxpY2F0aW9ucywgYmVjYXVzZSB0aGF0JiMzOTtzIGFsd2F5cyBhIGdvb2QgcHJhY3RpY2UuIElzIHRoZXJlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzc3Vlcz8gSSBkb24mIzM5O3Qgc2VlIGFueSBvYnZpb3VzIG9uZXM6CgoqICAgSXQmIzM5O3Mgbm90IGluaXRpYWxpemluZyBtZW1vcnkuCiogICBJdCYjMzk7cyBub3QgcGFzc2luZyB1bmluaXRpYWxpemVkIGRhdGEgdG8gdXNlciBzcGFjZS4KKiAgIEl0JiMzOTtzIG5vdCBpbnRyb2R1Y2luZyBvciBtb2RpZnlpbmcgYW55IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzIG9yIHN0cnVjdHMuCiogICBJdCYjMzk7cyBub3QgbWVzc2luZyB3aXRoIGJ1ZmZlciBib3VuZHMgb3IgcG90ZW50aWFsbHkgcmVhZGluZyB1bmluaXRpYWxpemVkIGJ1ZmZlcnMuCgpUaGlzIGlzIGEgc3RyYWlnaHRmb3J3YXJkIHNjYWxhciBjYWxjdWxhdGlvbiwgZml4aW5nIGEgbGltaXQgdHJhY2tpbmcgdmFsdWUsIGBuX21heF9tbXVfcGFnZXNgLiBUaGVyZSBhcmUgbm8gbmV3IGFsbG9jYXRpb25zLCBubyBzdHJ1Y3QgY29waWVzLCBubyB1bmluaXRpYWxpemVkIHJlYWRzLCBhbmQgZGVmaW5pdGVseSBubyBpbmZvIGxlYWtzIHRvIHVzZXJzcGFjZS4gQWxsIHRoaW5ncyBjb25zaWRlcmVkLCBOZWVkc0tNU0FOIHNob3VsZCBiZSBmYWxzZS4KClJpZ2h0LCB0aW1lIHRvIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDA3OjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGEgY2FsY3VsYXRpb24gaW4gYGt2bV9tbXVfY2hhbmdlX21tdV9wYWdlcygpYCB0byBwcmV2ZW50IGBuX21heF9tbXVfcGFnZXNgIGZyb20gYmVpbmcgc2V0IGxvd2VyIHRoYW4gYGdvYWxfbnJfbW11X3BhZ2VzYCBpZiBga3ZtX21tdV96YXBfb2xkZXN0X21tdV9wYWdlcygpYCB6YXBzIG1vcmUgc2hhZG93IHBhZ2VzIHRoYW4gcmVxdWVzdGVkLiBUaGlzIGNoYW5nZSBvbmx5IHVwZGF0ZXMgYSBzY2FsYXIgaW50ZWdlciB2YWx1ZSB0cmFja2luZyBNTVUgcGFnZSBsaW1pdHMgYW5kIGRvZXMgbm90IGludm9sdmUgbWVtb3J5IGFsbG9jYXRpb25zLCB1bmluaXRpYWxpemVkIHZhcmlhYmxlIHVzYWdlLCBvciBjb3B5aW5nIGtlcm5lbCBkYXRhIHRvIHVzZXJzcGFjZS4gVGhlcmVmb3JlLCB0aGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3Mgb3Iga2VybmVsIGluZm8tbGVha3MsIGFuZCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYSBjYWxjdWxhdGlvbiBpbiBga3ZtX21tdV9jaGFuZ2VfbW11X3BhZ2VzKClgIHRvIHByZXZlbnQgYG5fbWF4X21tdV9wYWdlc2AgZnJvbSBiZWluZyBzZXQgbG93ZXIgdGhhbiBgZ29hbF9ucl9tbXVfcGFnZXNgIGlmIGBrdm1fbW11X3phcF9vbGRlc3RfbW11X3BhZ2VzKClgIHphcHMgbW9yZSBzaGFkb3cgcGFnZXMgdGhhbiByZXF1ZXN0ZWQuIFRoaXMgY2hhbmdlIG9ubHkgdXBkYXRlcyBhIHNjYWxhciBpbnRlZ2VyIHZhbHVlIHRyYWNraW5nIE1NVSBwYWdlIGxpbWl0cyBhbmQgZG9lcyBub3QgaW52b2x2ZSBtZW1vcnkgYWxsb2NhdGlvbnMsIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgdXNhZ2UsIG9yIGNvcHlpbmcga2VybmVsIGRhdGEgdG8gdXNlcnNwYWNlLiBUaGVyZWZvcmUsIHRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBvciBrZXJuZWwgaW5mby1sZWFrcywgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDA3OjA0OjM3LjY3MTYzNzQ1OVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5NjEyMzYxNDY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiLFxuICAgIFwiS1ZNX0lOVEVMXCIsXG4gICAgXCJLVk1fQU1EXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX21tdV9jaGFuZ2VfbW11X3BhZ2VzXCIsXG4gICAgXCJrdm1fdm1faW9jdGxfc2V0X25yX21tdV9wYWdlc1wiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYSBjYWxjdWxhdGlvbiBpbiBga3ZtX21tdV9jaGFuZ2VfbW11X3BhZ2VzKClgIHRvIHByZXZlbnQgYG5fbWF4X21tdV9wYWdlc2AgZnJvbSBiZWluZyBzZXQgbG93ZXIgdGhhbiBgZ29hbF9ucl9tbXVfcGFnZXNgIGlmIGBrdm1fbW11X3phcF9vbGRlc3RfbW11X3BhZ2VzKClgIHphcHMgbW9yZSBzaGFkb3cgcGFnZXMgdGhhbiByZXF1ZXN0ZWQuIFRoaXMgY2hhbmdlIG9ubHkgdXBkYXRlcyBhIHNjYWxhciBpbnRlZ2VyIHZhbHVlIHRyYWNraW5nIE1NVSBwYWdlIGxpbWl0cyBhbmQgZG9lcyBub3QgaW52b2x2ZSBtZW1vcnkgYWxsb2NhdGlvbnMsIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgdXNhZ2UsIG9yIGNvcHlpbmcga2VybmVsIGRhdGEgdG8gdXNlcnNwYWNlLiBUaGVyZWZvcmUsIHRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBvciBrZXJuZWwgaW5mby1sZWFrcywgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgc2hhZG93IE1NVSBwYWdlIGNvdW50IG1hbmFnZW1lbnQgbG9naWMgaW4geDg2IEtWTSAoYGt2bV9tbXVfY2hhbmdlX21tdV9wYWdlc2ApLCB3aGljaCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIEtWTSBpb2N0bHMgKHN1Y2ggYXMgS1ZNX1NFVF9OUl9NTVVfUEFHRVMpIGFuZCBtZW1vcnkgcmVnaW9uIGNvbmZpZ3VyYXRpb24uIEZ1enppbmcgaXMgcmVjb21tZW5kZWQgdG8gZW5zdXJlIGNvcnJlY3QgTU1VIHNoYWRvdyBwYWdlIGFsbG9jYXRpb24gYW5kIHphcHBpbmcgaW52YXJpYW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDc6MDQ6MzcuNjcxNjQxMzQ5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzczNjM1MTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA5ZWMwY2Q2YmMyZTA0Nzg2OWIyYjdmYThlOGFiZTM1YmJjNDc2YTZlXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgU2VwIDExIDA3OjA0OjM2IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9tbXUvbW11LmMgYi9hcmNoL3g4Ni9rdm0vbW11L21tdS5jXFxuaW5kZXggMDY0ZWNjMzNiOTI2Ny4uZWZlYmE1ODkzNmE2OCAxMDA2NDRcXG4tLS0gYS9hcmNoL3g4Ni9rdm0vbW11L21tdS5jXFxuKysrIGIvYXJjaC94ODYva3ZtL21tdS9tbXUuY1xcbkBAIC0yOTEzLDcgKzI5MTMsNyBAQCB2b2lkIGt2bV9tbXVfY2hhbmdlX21tdV9wYWdlcyhzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgZ29hbF9ucl9tbXVfcGFnZXMpXFxuIFxcdFxcdGt2bV9tbXVfemFwX29sZGVzdF9tbXVfcGFnZXMoa3ZtLCBrdm0tXFx1MDAzZXN0YXQubW11X3NoYWRvd19wYWdlcyAtXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCAgZ29hbF9ucl9tbXVfcGFnZXMpO1xcbiBcXG4tXFx0XFx0Z29hbF9ucl9tbXVfcGFnZXMgPSBrdm0tXFx1MDAzZXN0YXQubW11X3NoYWRvd19wYWdlcztcXG4rXFx0XFx0Z29hbF9ucl9tbXVfcGFnZXMgPSBtYXgoa3ZtLVxcdTAwM2VzdGF0Lm1tdV9zaGFkb3dfcGFnZXMsIGdvYWxfbnJfbW11X3BhZ2VzKTtcXG4gXFx0fVxcbiBcXG4gXFx0a3ZtLVxcdTAwM2VhcmNoLm5fbWF4X21tdV9wYWdlcyA9IGdvYWxfbnJfbW11X3BhZ2VzO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwNzowNDozOC4xMDk2NTgzMDVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjQwNzA1MTExMTkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiLFxuICAgIFwiS1ZNX0lOVEVMXCIsXG4gICAgXCJLVk1fQU1EXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX21tdV9jaGFuZ2VfbW11X3BhZ2VzXCIsXG4gICAgXCJrdm1fdm1faW9jdGxfc2V0X25yX21tdV9wYWdlc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHNoYWRvdyBNTVUgcGFnZSBjb3VudCBtYW5hZ2VtZW50IGxvZ2ljIGluIHg4NiBLVk0gKGBrdm1fbW11X2NoYW5nZV9tbXVfcGFnZXNgKSwgd2hpY2ggaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBLVk0gaW9jdGxzIChzdWNoIGFzIEtWTV9TRVRfTlJfTU1VX1BBR0VTKSBhbmQgbWVtb3J5IHJlZ2lvbiBjb25maWd1cmF0aW9uLiBGdXp6aW5nIGlzIHJlY29tbWVuZGVkIHRvIGVuc3VyZSBjb3JyZWN0IE1NVSBzaGFkb3cgcGFnZSBhbGxvY2F0aW9uIGFuZCB6YXBwaW5nIGludmFyaWFudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgOWVjMGNkNmJjMmUwNDc4NjliMmI3ZmE4ZThhYmUzNWJiYzQ3NmE2ZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgU2VwIDExIDA3OjA0OjM2IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL21tdS9tbXUuYyBiL2FyY2gveDg2L2t2bS9tbXUvbW11LmNcbmluZGV4IDA2NGVjYzMzYjkyNjcuLmVmZWJhNTg5MzZhNjggMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9rdm0vbW11L21tdS5jXG4rKysgYi9hcmNoL3g4Ni9rdm0vbW11L21tdS5jXG5AQCAtMjkxMyw3ICsyOTEzLDcgQEAgdm9pZCBrdm1fbW11X2NoYW5nZV9tbXVfcGFnZXMoc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBsb25nIGdvYWxfbnJfbW11X3BhZ2VzKVxuIFx0XHRrdm1fbW11X3phcF9vbGRlc3RfbW11X3BhZ2VzKGt2bSwga3ZtLVx1MDAzZXN0YXQubW11X3NoYWRvd19wYWdlcyAtXG4gXHRcdFx0XHRcdFx0ICBnb2FsX25yX21tdV9wYWdlcyk7XG4gXG4tXHRcdGdvYWxfbnJfbW11X3BhZ2VzID0ga3ZtLVx1MDAzZXN0YXQubW11X3NoYWRvd19wYWdlcztcbitcdFx0Z29hbF9ucl9tbXVfcGFnZXMgPSBtYXgoa3ZtLVx1MDAzZXN0YXQubW11X3NoYWRvd19wYWdlcywgZ29hbF9ucl9tbXVfcGFnZXMpO1xuIFx0fVxuIFxuIFx0a3ZtLVx1MDAzZWFyY2gubl9tYXhfbW11X3BhZ2VzID0gZ29hbF9ucl9tbXVfcGFnZXM7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwNzowNDozOC4xMDk2NTk3MzVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo4MTM0Mzk4NzYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgS1ZNIE1NVSBQYWdlIEFkanVzdG1lbnQqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBwYXRjaC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGV4YW1pbmUgdGhlIGNvZGUgZGlmZiwgd2hpY2gsIGFzIGV4cGVjdGVkLCBpcyBtb2RpZnlpbmcgYGFyY2gveDg2L2t2bS9tbXUvbW11LmNgLiBTcGVjaWZpY2FsbHksIHRoZSBjaGFuZ2Ugc2VlbXMgdG8gYmUgd2l0aGluIHRoZSBga3ZtX21tdV9jaGFuZ2VfbW11X3BhZ2VzYCBmdW5jdGlvbi5cblxuTG9va2luZyBhdCB0aGUgZGlmZiwgdGhleSd2ZSBhbHRlcmVkIGhvdyB0aGUgYGdvYWxfbnJfbW11X3BhZ2VzYCB2YXJpYWJsZSBpcyB1cGRhdGVkLiBQcmV2aW91c2x5LCBhZnRlciB6YXBwaW5nIHBhZ2VzLCBpdCB3YXMgc2ltcGx5IGFzc2lnbmVkIHRoZSBjdXJyZW50IHNoYWRvdyBwYWdlIGNvdW50IChga3ZtLVx1MDAzZXN0YXQubW11X3NoYWRvd19wYWdlc2ApLiBOb3csIHRoZXkncmUgdXNpbmcgYG1heChrdm0tXHUwMDNlc3RhdC5tbXVfc2hhZG93X3BhZ2VzLCBnb2FsX25yX21tdV9wYWdlcylgLiBUaGF0J3MgaW50ZXJlc3Rpbmc7IGl0IGxvb2tzIGxpa2UgdGhleSdyZSBlbnN1cmluZyB0aGUgZGVzaXJlZCBudW1iZXIgb2YgcGFnZXMgZG9lc24ndCBmYWxsIGJlbG93IHRoZSBleGlzdGluZyBjb3VudC4gVGhpcyBpbmRpY2F0ZXMgdGhlIGZ1bmN0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciBhZGp1c3RpbmcgdGhlIG51bWJlciBvZiBNTVUgc2hhZG93IHBhZ2VzLCBlaXRoZXIgcmVkdWNpbmcgb3IsIG5vdywgcG90ZW50aWFsbHkgKmVuc3VyaW5nKiBpdCdzIGF0IGxlYXN0IGFzIGxhcmdlIGFzIHdoYXQncyBjdXJyZW50bHkgYWxsb2NhdGVkLCB3aGljaCBoYXMgcGVyZm9ybWFuY2UgYW5kIHNjaGVkdWxpbmcgaW1wbGljYXRpb25zLiBJIGtub3cgdGhlcmUncyBhIGRlbGljYXRlIGJhbGFuY2UgaW52b2x2ZWQgaGVyZSwgYXZvaWRpbmcgb3Zlci1hbGxvY2F0aW9uIHdoaWxlIHN0aWxsIHByb3ZpZGluZyBhIGdvb2QgbGV2ZWwgb2YgcGVyZm9ybWFuY2UuIEkgY2FuIHVzZSBgZ3JlcHBlcmAgb3IgYHJlYWQtZmlsZWAgdG8gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiB0aGUgY29udGV4dCBzdXJyb3VuZGluZyB0aGlzIGZ1bmN0aW9uLCB0byB1bmRlcnN0YW5kIHByZWNpc2VseSB3aGVuIGFuZCB3aHkgdGhpcyBtb2RpZmljYXRpb24gaXMgbmVjZXNzYXJ5LiBTcGVjaWZpY2FsbHksIEknbGwgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGBrdm1fbW11X2NoYW5nZV9tbXVfcGFnZXNgIGlzIGNhbGxlZCBhbmQgd2hhdCBkaWN0YXRlcyBgZ29hbF9ucl9tbXVfcGFnZXNgIGluIHRoZSBmaXJzdCBwbGFjZSwgb3IgSSdtIG1pc3Npbmcgc29tZXRoaW5nIGltcG9ydGFudC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk1OSwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4OSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDA3OjA0OjQ2LjI0NDA2MTMxOFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwMTgxMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJhcmNoL3g4Ni9rdm0vbW11L21tdS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI5MDAsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjI5MDA6XFx0XFx0XFx0cmV0dXJuIC1FTk9TUEM7XFxuMjkwMTpcXHRcXHRyZXR1cm4gMDtcXG4yOTAyOlxcdH1cXG4yOTAzOlxcdFxcbjI5MDQ6XFx0LypcXG4yOTA1OlxcdCAqIENoYW5naW5nIHRoZSBudW1iZXIgb2YgbW11IHBhZ2VzIGFsbG9jYXRlZCB0byB0aGUgdm1cXG4yOTA2OlxcdCAqIE5vdGU6IGlmIGdvYWxfbnJfbW11X3BhZ2VzIGlzIHRvbyBzbWFsbCwgeW91IHdpbGwgZ2V0IGRlYWQgbG9ja1xcbjI5MDc6XFx0ICovXFxuMjkwODpcXHR2b2lkIGt2bV9tbXVfY2hhbmdlX21tdV9wYWdlcyhzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgZ29hbF9ucl9tbXVfcGFnZXMpXFxuMjkwOTpcXHR7XFxuMjkxMDpcXHRcXHR3cml0ZV9sb2NrKFxcdTAwMjZrdm0tXFx1MDAzZW1tdV9sb2NrKTtcXG4yOTExOlxcdFxcbjI5MTI6XFx0XFx0aWYgKGt2bS1cXHUwMDNlc3RhdC5tbXVfc2hhZG93X3BhZ2VzIFxcdTAwM2UgZ29hbF9ucl9tbXVfcGFnZXMpIHtcXG4yOTEzOlxcdFxcdFxcdGt2bV9tbXVfemFwX29sZGVzdF9tbXVfcGFnZXMoa3ZtLCBrdm0tXFx1MDAzZXN0YXQubW11X3NoYWRvd19wYWdlcyAtXFxuMjkxNDpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgIGdvYWxfbnJfbW11X3BhZ2VzKTtcXG4yOTE1OlxcdFxcbjI5MTY6XFx0XFx0XFx0Z29hbF9ucl9tbXVfcGFnZXMgPSBtYXgoa3ZtLVxcdTAwM2VzdGF0Lm1tdV9zaGFkb3dfcGFnZXMsIGdvYWxfbnJfbW11X3BhZ2VzKTtcXG4yOTE3OlxcdFxcdH1cXG4yOTE4OlxcdFxcbjI5MTk6XFx0XFx0a3ZtLVxcdTAwM2VhcmNoLm5fbWF4X21tdV9wYWdlcyA9IGdvYWxfbnJfbW11X3BhZ2VzO1xcbjI5MjA6XFx0XFxuMjkyMTpcXHRcXHR3cml0ZV91bmxvY2soXFx1MDAyNmt2bS1cXHUwMDNlbW11X2xvY2spO1xcbjI5MjI6XFx0fVxcbjI5MjM6XFx0XFxuMjkyNDpcXHRib29sIF9fa3ZtX21tdV91bnByb3RlY3RfZ2ZuX2FuZF9yZXRyeShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGdwYV90IGNyMl9vcl9ncGEsXFxuMjkyNTpcXHRcXHRcXHRcXHRcXHQgICAgICAgYm9vbCBhbHdheXNfcmV0cnkpXFxuMjkyNjpcXHR7XFxuMjkyNzpcXHRcXHRzdHJ1Y3Qga3ZtICprdm0gPSB2Y3B1LVxcdTAwM2Vrdm07XFxuMjkyODpcXHRcXHRMSVNUX0hFQUQoaW52YWxpZF9saXN0KTtcXG4yOTI5OlxcdFxcdHN0cnVjdCBrdm1fbW11X3BhZ2UgKnNwO1xcbjI5MzA6XFx0XFx0Z3BhX3QgZ3BhID0gY3IyX29yX2dwYTtcXG4yOTMxOlxcdFxcdGJvb2wgciA9IGZhbHNlO1xcbjI5MzI6XFx0XFxuMjkzMzpcXHRcXHQvKlxcbjI5MzQ6XFx0XFx0ICogQmFpbCBlYXJseSBpZiB0aGVyZSBhcmVuJ3QgYW55IHdyaXRlLXByb3RlY3RlZCBzaGFkb3cgcGFnZXMgdG8gYXZvaWRcXG4yOTM1OlxcdFxcdCAqIHVubmVjZXNzYXJpbHkgdGFraW5nIG1tdV9sb2NrIGxvY2ssIGUuZy4gaWYgdGhlIGdmbiBpcyB3cml0ZS10cmFja2VkXFxuMjkzNjpcXHRcXHQgKiBieSBhIHRoaXJkIHBhcnR5LiAgUmVhZGluZyBpbmRpcmVjdF9zaGFkb3dfcGFnZXMgd2l0aG91dCBob2xkaW5nXFxuMjkzNzpcXHRcXHQgKiBtbXVfbG9jayBpcyBzYWZlLCBhcyB0aGlzIGlzIHB1cmVseSBhbiBvcHRpbWl6YXRpb24sIGkuZS4gYSBmYWxzZVxcbjI5Mzg6XFx0XFx0ICogcG9zaXRpdmUgaXMgYmVuaWduLCBhbmQgYSBmYWxzZSBuZWdhdGl2ZSB3aWxsIHNpbXBseSByZXN1bHQgaW4gS1ZNXFxuMjkzOTpcXHRcXHQgKiBza2lwcGluZyB0aGUgdW5wcm90ZWN0K3JldHJ5IHBhdGgsIHdoaWNoIGlzIGFsc28gYW4gb3B0aW1pemF0aW9uLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwNzowNDo0Ni4yNDQzNjUwMThaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNTgyNTA3MzMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgYGt2bV9tbXVfY2hhbmdlX21tdV9wYWdlc2AgQ2FsbHNpdGUqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udHJvbCBmbG93IHRoYXQgbGVhZHMgdG8gYGt2bV9tbXVfY2hhbmdlX21tdV9wYWdlc2AuIE15IHByaW1hcnkgZ29hbCBpcyB0byBpZGVudGlmeSB0aGUgZXZlbnRzIG9yIGNvbmRpdGlvbnMgdGhhdCBuZWNlc3NpdGF0ZSB0aGlzIE1NVSBtb2RpZmljYXRpb24uIEknbGwgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gdGhpcyBmdW5jdGlvbiBjYWxsIHRvIGl0cyBjYWxsZXJzIGFuZCwgaWRlYWxseSwgdW5kZXJzdGFuZCB0aGUgaGlnaGVyLWxldmVsIGNvbnRleHQgd2l0aGluIHRoZSBLVk0gaW5mcmFzdHJ1Y3R1cmUgdGhhdCAqZGVtYW5kcyogYSBjaGFuZ2UgdG8gdGhlIE1NVSBwYWdlIHN0cnVjdHVyZXMuIEFyZSB3ZSB0YWxraW5nIGFib3V0IGd1ZXN0IG1lbW9yeSBtYXBwaW5nIG1vZGlmaWNhdGlvbnMsIHBhZ2UgZmF1bHRzLCBFTTY0VCBjb252ZXJzaW9ucyxFUFQgb3BlcmF0aW9ucywgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IEEgcXVpY2sgc2NhbiBvZiB0aGUgY2FsbGVycyB3aWxsIGhvcGVmdWxseSByZXZlYWwgd2hpY2ggYXJlYXMgb2YgS1ZNIGFyZSBsZXZlcmFnaW5nIHRoaXMgZnVuY3Rpb24gYW5kIHdoYXQga2luZCBvZiBzdGF0ZSB0cmFuc2l0aW9ucyBhcmUgaGFwcGVuaW5nIGp1c3QgcHJpb3IgdG8gdGhpcyBjYWxsLiBJJ20gbG9va2luZyBmb3IgY2x1ZXMgYWJvdXQgdGhlIHR5cGVzIG9mIE1NVSB1cGRhdGVzIHRoaXMgZnVuY3Rpb24gaGFuZGxlczogc2luZ2xlIHBhZ2UgbW9kaWZpY2F0aW9ucywgbGFyZ2VyIHJhbmdlIHVwZGF0ZXMsIHRyYW5zbGF0aW9uIGludmFsaWRhdGlvbnMsIGV0Yy4gSSdsbCBhbHNvIGJlIHdhdGNoaW5nIGZvciBhbnkgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXMgaW4gcGxheSwgdG8gdW5kZXJzdGFuZCB0aGUgcG90ZW50aWFsIGNvbmN1cnJlbmN5IGltcGxpY2F0aW9ucyBhbmQgaWYgdGhlcmUgYXJlIGxvY2tzIGludm9sdmVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDcwLCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwNzowNDo0OC44MjY4NzQyMjdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU4ODcwOTE2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fbW11X2NoYW5nZV9tbXVfcGFnZXNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYva3ZtL21tdS5oPTEzND12b2lkIGt2bV9tbXVfaW52YWxpZGF0ZV9tbWlvX3NwdGVzKHN0cnVjdCBrdm0gKmt2bSwgdTY0IGdlbik7XFxuYXJjaC94ODYva3ZtL21tdS5oOjEzNTp2b2lkIGt2bV9tbXVfY2hhbmdlX21tdV9wYWdlcyhzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcga3ZtX25yX21tdV9wYWdlcyk7XFxuYXJjaC94ODYva3ZtL21tdS5oLTEzNi12b2lkIGt2bV96YXBfZ2ZuX3JhbmdlKHN0cnVjdCBrdm0gKmt2bSwgZ2ZuX3QgZ2ZuX3N0YXJ0LCBnZm5fdCBnZm5fZW5kKTtcXG4tLVxcbmFyY2gveDg2L2t2bS9tbXUvbW11LmM9Mjg4MT1zdGF0aWMgaW50IG1ha2VfbW11X3BhZ2VzX2F2YWlsYWJsZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vbW11L21tdS5jLTI5MDctICovXFxuYXJjaC94ODYva3ZtL21tdS9tbXUuYzoyOTA4OnZvaWQga3ZtX21tdV9jaGFuZ2VfbW11X3BhZ2VzKHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgbG9uZyBnb2FsX25yX21tdV9wYWdlcylcXG5hcmNoL3g4Ni9rdm0vbW11L21tdS5jLTI5MDkte1xcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jPTM5MTA9c3RhdGljIGludCBrdm1fdm1faW9jdGxfc2V0X25yX21tdV9wYWdlcyhzdHJ1Y3Qga3ZtICprdm0sXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtMzkxNy1cXG5hcmNoL3g4Ni9rdm0veDg2LmM6MzkxODpcXHRrdm1fbW11X2NoYW5nZV9tbXVfcGFnZXMoa3ZtLCBrdm1fbnJfbW11X3BhZ2VzKTtcXG5hcmNoL3g4Ni9rdm0veDg2LmMtMzkxOS1cXHRrdm0tXFx1MDAzZWFyY2gubl9yZXF1ZXN0ZWRfbW11X3BhZ2VzID0ga3ZtX25yX21tdV9wYWdlcztcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYz0xMDMzOD12b2lkIGt2bV9hcmNoX2NvbW1pdF9tZW1vcnlfcmVnaW9uKHN0cnVjdCBrdm0gKmt2bSxcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYy0xMDM1MS1cXHRcXHRucl9tbXVfcGFnZXMgPSBtYXgobnJfbW11X3BhZ2VzLCBLVk1fTUlOX0FMTE9DX01NVV9QQUdFUyk7XFxuYXJjaC94ODYva3ZtL3g4Ni5jOjEwMzUyOlxcdFxcdGt2bV9tbXVfY2hhbmdlX21tdV9wYWdlcyhrdm0sIG5yX21tdV9wYWdlcyk7XFxuYXJjaC94ODYva3ZtL3g4Ni5jLTEwMzUzLVxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDc6MDQ6NTAuNDE1NTg4OTg1WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Mjc2MzgwOTUyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgS1ZNIE1lbW9yeSBNYW5hZ2VtZW50KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBJJ20gbG9va2luZyBhdCBga3ZtX3ZtX2lvY3RsX3NldF9ucl9tbXVfcGFnZXNgIC0gdGhhdCdzIHRoZSBLVk1fU0VUX05SX01NVV9QQUdFUyBpb2N0bCBvbiBhIHZpcnR1YWwgbWFjaGluZSBmaWxlIGRlc2NyaXB0b3IgLSBhbmQgYGt2bV9hcmNoX2NvbW1pdF9tZW1vcnlfcmVnaW9uYC4gVGhlc2UgZnVuY3Rpb25zIHNlZW0gY2VudHJhbCB0byBtZW1vcnkgbWFuYWdlbWVudCB3aXRoaW4gS1ZNLCBzcGVjaWZpY2FsbHkgZm9yIHg4NiBhcmNoaXRlY3R1cmVzLiBJIGtub3cgS1ZNIG9uIGFtZDY0IGlzIHJvYnVzdDsgaXQncyBzb21ldGhpbmcgSSd2ZSB3b3JrZWQgd2l0aCBleHRlbnNpdmVseSwgd2hldGhlciBpdCdzIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiBvciB0aGUgbW9yZSBzdGFuZGFyZCBLVk0gc2V0dXBzIGluIFFFTVUgb3IgZW52aXJvbm1lbnRzIGxpa2UgR29vZ2xlIENvbXB1dGUgRW5naW5lLiBUaGUgZmFjdCB0aGF0IGl0J3MgYWNjZXNzaWJsZSBhbmQgc3VwcG9ydGVkIHdpdGhpbiBTeXprYWxsZXIncyB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgaXMgcmVhc3N1cmluZy4gTm93LCBsZXQncyBkb3VibGUtY2hlY2sgdGhlIEtjb25maWcgcmVxdWlyZW1lbnRzIHJlbGF0ZWQgdG8gS1ZNIHN1cHBvcnQgb24geDg2LiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnMgYXJlIGluIHBsYWNlIGJlZm9yZSBwcm9jZWVkaW5nIGFueSBmdXJ0aGVyLCB0byBhdm9pZCBhbnkgdW5leHBlY3RlZCByb2FkYmxvY2tzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NDEyLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDA3OjA0OjUzLjE3OTQwMTUzNVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTk5MTY4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgS1ZNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gveDg2L2t2bVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIwOmNvbmZpZyBLVk1fWDg2XFxuYXJjaC94ODYva3ZtL0tjb25maWctMjEtXFx0ZGVmX3RyaXN0YXRlIEtWTSBpZiAoS1ZNX0lOVEVMICE9IG4gfHwgS1ZNX0FNRCAhPSBuKVxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctNTEtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6NTI6Y29uZmlnIEtWTVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTUzLVxcdHRyaXN0YXRlIFxcXCJLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy02OC1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo2OTpjb25maWcgS1ZNX1dFUlJPUlxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTcwLVxcdGJvb2wgXFxcIkNvbXBpbGUgS1ZNIHdpdGggLVdlcnJvclxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTgyLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjgzOmNvbmZpZyBLVk1fU1dfUFJPVEVDVEVEX1ZNXFxuYXJjaC94ODYva3ZtL0tjb25maWctODQtXFx0Ym9vbCBcXFwiRW5hYmxlIHN1cHBvcnQgZm9yIEtWTSBzb2Z0d2FyZS1wcm90ZWN0ZWQgVk1zXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctOTUtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6OTY6Y29uZmlnIEtWTV9JTlRFTFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTk3LVxcdHRyaXN0YXRlIFxcXCJLVk0gZm9yIEludGVsIChhbmQgY29tcGF0aWJsZSkgcHJvY2Vzc29ycyBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTA2LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjEwNzpjb25maWcgS1ZNX0lOVEVMX1BST1ZFX1ZFXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTA4LSAgICAgICAgYm9vbCBcXFwiQ2hlY2sgdGhhdCBndWVzdHMgZG8gbm90IHJlY2VpdmUgI1ZFIGV4Y2VwdGlvbnNcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz0xMjI9Y29uZmlnIFg4Nl9TR1hfS1ZNXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMzMtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTM0OmNvbmZpZyBLVk1fSU5URUxfVERYXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTM1LVxcdGJvb2wgXFxcIkludGVsIFRydXN0IERvbWFpbiBFeHRlbnNpb25zIChURFgpIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNDUtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTQ2OmNvbmZpZyBLVk1fQU1EXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTQ3LVxcdHRyaXN0YXRlIFxcXCJLVk0gZm9yIEFNRCBwcm9jZXNzb3JzIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNTUtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTU2OmNvbmZpZyBLVk1fQU1EX1NFVlxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE1Ny1cXHRib29sIFxcXCJBTUQgU2VjdXJlIEVuY3J5cHRlZCBWaXJ0dWFsaXphdGlvbiAoU0VWKSBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTcyLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE3Mzpjb25maWcgS1ZNX0lPQVBJQ1xcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE3NC1cXHRib29sIFxcXCJJL08gQVBJQywgUElDLCBhbmQgUElUIGVtdWxhdGlvblxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE4Mi1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxODM6Y29uZmlnIEtWTV9TTU1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xODQtXFx0Ym9vbCBcXFwiU3lzdGVtIE1hbmFnZW1lbnQgTW9kZSBlbXVsYXRpb25cXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xOTMtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTk0OmNvbmZpZyBLVk1fSFlQRVJWXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTk1LVxcdGJvb2wgXFxcIlN1cHBvcnQgZm9yIE1pY3Jvc29mdCBIeXBlci1WIGVtdWxhdGlvblxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIwNy1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMDg6Y29uZmlnIEtWTV9YRU5cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMDktXFx0Ym9vbCBcXFwiU3VwcG9ydCBmb3IgWGVuIGh5cGVyY2FsbCBpbnRlcmZhY2VcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMTYtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MjE3OmNvbmZpZyBLVk1fUFJPVkVfTU1VXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjE4LVxcdGJvb2wgXFxcIlByb3ZlIEtWTSBNTVUgY29ycmVjdG5lc3NcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMjktXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MjMwOmNvbmZpZyBLVk1fRVhURVJOQUxfV1JJVEVfVFJBQ0tJTkdcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzEtXFx0Ym9vbFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIzMi1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMzM6Y29uZmlnIEtWTV9NQVhfTlJfVkNQVVNcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzQtXFx0aW50IFxcXCJNYXhpbXVtIG51bWJlciBvZiB2Q1BVcyBwZXIgS1ZNIGd1ZXN0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwNzowNDo1My4yMjUzOTcyOTRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyODM4MjQ3OTk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjpcblxuKipEaXZpbmcgaW50byB0aGUgS1ZNIHg4NiBCdWlsZCBTeXN0ZW0qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0J3MgYmVpbmcgY29tcGlsZWQgZm9yIHRoZSBLVk0geDg2IGtlcm5lbCBtb2R1bGUuIE5hdHVyYWxseSwgdGhlIGZpcnN0IHBsYWNlIHRvIGxvb2sgaXMgdGhlIGBhcmNoL3g4Ni9rdm0vTWFrZWZpbGVgLiBUaGF0J3Mgd2hlcmUgYWxsIHRoZSBtYWdpYyBoYXBwZW5zIHdoZW4gdGhlIGJ1aWxkIHN5c3RlbSBpcyBwdWxsaW5nIHRvZ2V0aGVyIHRoZSBuZWNlc3Nhcnkgb2JqZWN0IGZpbGVzLiBJJ2xsIG5lZWQgdG8gc2VlIHByZWNpc2VseSB3aGljaCBzb3VyY2UgZmlsZXMgYXJlIGJlaW5nIGluY2x1ZGVkLCBhbmQgdW5kZXIgd2hhdCBzcGVjaWZpYyBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFVuZGVyc3RhbmRpbmcgdGhlIGNvbmRpdGlvbmFsIGluY2x1c2lvbnMgd2lsbCBnaXZlIG1lIHRoZSBiZXN0IHZpZXcgb2Ygd2hhdCBmZWF0dXJlcyBhbmQgZnVuY3Rpb25hbGl0eSBhcmUgYmFrZWQgaW50byB0aGUgZmluYWwgbW9kdWxlIGJhc2VkIG9uIG15IHN5c3RlbSdzIGN1cnJlbnQga2VybmVsIGNvbmZpZ3VyYXRpb24uIEnigJlsbCBiZSBjaGVja2luZyBmb3Igc3BlY2lmaWMgYENPTkZJR19gIGZsYWdzIGFuZCB0aGVpciBpbXBhY3Qgb24gdGhlIGJ1aWxkLiBMZXQncyBnZXQgdG8gaXQhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY5ODQsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwNzowNDo1Ni4wNjM2NDcxMjNaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1NTEyNjcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1tdS9tbXVcXFxcLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS9NYWtlZmlsZT04PWt2bS15XFx0XFx0XFx0Kz0geDg2Lm8gZW11bGF0ZS5vIGlycS5vIGxhcGljLm8gY3B1aWQubyBtc3JzLm8gcG11Lm8gcmVncy5vIFxcXFxcXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGU6OTpcXHRcXHRcXHQgICBtdHJyLm8gZGVidWdmcy5vIG1tdS9tbXUubyBtbXUvcGFnZV90cmFjay5vIG1tdS9zcHRlLm9cXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGUtMTAtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDA3OjA0OjU2LjEwOTE3MjYxMloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1MTE2NjIwMzQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKktWTSBNb2R1bGUgQ29tcGlsYXRpb24gRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gSSdtIHRyeWluZyB0byBmaWd1cmUgb3V0IHRoZSBidWlsZCBjb25kaXRpb25zIGZvciBga3ZtLXlgLiBSaWdodCwgbGV0J3MgZXN0YWJsaXNoIHRoZSBncm91bmQgdHJ1dGg6IGl0J3MgYnVpbHQgd2hlbiBgQ09ORklHX0tWTWAgaXMgZGVmaW5lZC4gVGhhdCBtYWtlcyBzZW5zZSwgcHJldHR5IGZvdW5kYXRpb25hbC4gVGhlbiwgdG8gZ2V0IG1vcmUgc3BlY2lmaWMsIGl0IHJlcXVpcmVzIGVpdGhlciBgQ09ORklHX0tWTV9JTlRFTGAgb3IgYENPTkZJR19LVk1fQU1EYCBiZSBlbmFibGVkIGFzIHdlbGwsIHdoaWNoIGFyZSBnb2luZyB0byBkZWZpbmUgdGhlIHVuZGVybHlpbmcgYXJjaGl0ZWN0dXJlLCBJbnRlbCBvciBBTUQgcmVzcGVjdGl2ZWx5LlxuXG5BbHJpZ2h0LCBzZWVtcyBzaW1wbGUgZW5vdWdoIHNvIGZhci4gTm93LCBqdXN0IHRvIGNvbmZpcm0gbXkgdW5kZXJzdGFuZGluZyBhbmQgbWFrZSBzdXJlIEkgaGF2ZW4ndCBtaXNzZWQgc29tZXRoaW5nIHN1YnRsZSwgSSBzaG91bGQgcHJvYmFibHkgdGFrZSBhIHF1aWNrIGxvb2sgYXQgYGFyY2gveDg2L2t2bS9NYWtlZmlsZWAgLSBsaW5lcyAxIHRocm91Z2ggMTUsIHRvIGJlIHByZWNpc2UuIEl0IHNob3VsZCBsYXkgb3V0IHRoZSBzcGVjaWZpYyBkZXBlbmRlbmNpZXMgZm9yIGNvbXBpbGluZyB0aGUgS1ZNIG1vZHVsZSBpbiBhIGNsZWFyIGZhc2hpb24uIExldCdzIHNlZSB3aGF0IHRoZSBNYWtlZmlsZSByZXZlYWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MzQ3LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDc6MDU6MDEuMjI1Nzk2NTM2WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc5MTkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImFyY2gveDg2L2t2bS9NYWtlZmlsZVwiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdFxcbiAgIDM6XFx0Y2NmbGFncy15ICs9IC1JICQoc3JjdHJlZSkvYXJjaC94ODYva3ZtXFxuICAgNDpcXHRjY2ZsYWdzLSQoQ09ORklHX0tWTV9XRVJST1IpICs9IC1XZXJyb3JcXG4gICA1OlxcdFxcbiAgIDY6XFx0aW5jbHVkZSAkKHNyY3RyZWUpL3ZpcnQva3ZtL01ha2VmaWxlLmt2bVxcbiAgIDc6XFx0XFxuICAgODpcXHRrdm0teVxcdFxcdFxcdCs9IHg4Ni5vIGVtdWxhdGUubyBpcnEubyBsYXBpYy5vIGNwdWlkLm8gbXNycy5vIHBtdS5vIHJlZ3MubyBcXFxcXFxuICAgOTpcXHRcXHRcXHRcXHQgICBtdHJyLm8gZGVidWdmcy5vIG1tdS9tbXUubyBtbXUvcGFnZV90cmFjay5vIG1tdS9zcHRlLm9cXG4gIDEwOlxcdFxcbiAgMTE6XFx0a3ZtLSQoQ09ORklHX1g4Nl82NCkgKz0gbW11L3RkcF9pdGVyLm8gbW11L3RkcF9tbXUub1xcbiAgMTI6XFx0a3ZtLSQoQ09ORklHX0tWTV9JT0FQSUMpICs9IGk4MjU5Lm8gaTgyNTQubyBpb2FwaWMub1xcbiAgMTM6XFx0a3ZtLSQoQ09ORklHX0tWTV9IWVBFUlYpICs9IGh5cGVydi5vXFxuICAxNDpcXHRrdm0tJChDT05GSUdfS1ZNX1hFTilcXHQrPSB4ZW4ub1xcbiAgMTU6XFx0a3ZtLSQoQ09ORklHX0tWTV9TTU0pXFx0Kz0gc21tLm9cXG4gIDE2OlxcdFxcbiAgMTc6XFx0a3ZtLWludGVsLXlcXHRcXHQrPSB2bXgvdm14Lm8gdm14L3ZtZW50ZXIubyB2bXgvcG11X2ludGVsLm8gdm14L3ZtY3MxMi5vIFxcXFxcXG4gIDE4OlxcdFxcdFxcdFxcdCAgIHZteC9uZXN0ZWQubyB2bXgvcG9zdGVkX2ludHIubyB2bXgvbWFpbi5vXFxuICAxOTpcXHRcXG4gIDIwOlxcdGt2bS1pbnRlbC0kKENPTkZJR19YODZfU0dYX0tWTSlcXHQrPSB2bXgvc2d4Lm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDc6MDU6MDEuMjI1ODc3ODg2WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI5MDgxMTAxMDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqS1ZNIE1vZHVsZSBJbmNsdXNpb24gSW52ZXN0aWdhdGlvbioqXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgZXhhY3QgbWVjaGFuaXNtcyBmb3IgS1ZNIG1vZHVsZSBjb21waWxhdGlvbi4gTXkgaW5pdGlhbCBodW5jaCwgZ2l2ZW4gdGhlIHN0cnVjdHVyZSBvZiB0aGUga2VybmVsLCBpcyB0aGF0IHRoZSBgdmlydC9rdm0vTWFrZWZpbGUua3ZtYCBmaWxlIGlzIHRoZSBrZXkuIEkgZXhwZWN0IHRvIGZpbmQgYSBsaW5lIGluIHRoZXJlIHRoYXQgbG9va3MgbGlrZSBgb2JqLSQoQ09ORklHX0tWTSkgKz0ga3ZtLm9gIG9yIHNvbWV0aGluZyBhbG9uZyB0aG9zZSBsaW5lcywgY29udHJvbGxpbmcgdGhlIGluY2x1c2lvbiBvZiB0aGUgY29yZSBga3ZtLm9gIG9iamVjdCBiYXNlZCBvbiB0aGUgYENPTkZJR19LVk1gIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBIb3dldmVyLCBpdCdzIGFsc28gd29ydGggY2hlY2tpbmcgdGhlIGBhcmNoL3g4Ni9rdm0vS2NvbmZpZ2AgZmlsZSBpbiBjYXNlIEtWTSBjb25maWd1cmF0aW9uIGlzIGJlaW5nIGNvbnRyb2xsZWQgaW4gdGhlIGFyY2hpdGVjdHVyZSBzcGVjaWZpYyBmaWxlLiBJJ2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIHRob3NlIHR3byBmaWxlcyB0byBnZXQgdG8gdGhlIGJvdHRvbSBvZiB0aGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MTA0LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwNzowNTowNC4xMzM5OTEzOTRaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5OTQ4NTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNPTkZJR19LVk1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNzc2IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGU9Mz1jY2ZsYWdzLXkgKz0gLUkgJChzcmN0cmVlKS9hcmNoL3g4Ni9rdm1cXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGU6NDpjY2ZsYWdzLSQoQ09ORklHX0tWTV9XRVJST1IpICs9IC1XZXJyb3JcXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGUtNS1cXG4tLVxcbmFyY2gveDg2L2t2bS9NYWtlZmlsZT0xMT1rdm0tJChDT05GSUdfWDg2XzY0KSArPSBtbXUvdGRwX2l0ZXIubyBtbXUvdGRwX21tdS5vXFxuYXJjaC94ODYva3ZtL01ha2VmaWxlOjEyOmt2bS0kKENPTkZJR19LVk1fSU9BUElDKSArPSBpODI1OS5vIGk4MjU0Lm8gaW9hcGljLm9cXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGU6MTM6a3ZtLSQoQ09ORklHX0tWTV9IWVBFUlYpICs9IGh5cGVydi5vXFxuYXJjaC94ODYva3ZtL01ha2VmaWxlOjE0Omt2bS0kKENPTkZJR19LVk1fWEVOKVxcdCs9IHhlbi5vXFxuYXJjaC94ODYva3ZtL01ha2VmaWxlOjE1Omt2bS0kKENPTkZJR19LVk1fU01NKVxcdCs9IHNtbS5vXFxuYXJjaC94ODYva3ZtL01ha2VmaWxlLTE2LVxcbi0tXFxuYXJjaC94ODYva3ZtL01ha2VmaWxlPTIwPWt2bS1pbnRlbC0kKENPTkZJR19YODZfU0dYX0tWTSlcXHQrPSB2bXgvc2d4Lm9cXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGU6MjE6a3ZtLWludGVsLSQoQ09ORklHX0tWTV9IWVBFUlYpXFx0Kz0gdm14L2h5cGVydi5vIHZteC9oeXBlcnZfZXZtY3Mub1xcbmFyY2gveDg2L2t2bS9NYWtlZmlsZToyMjprdm0taW50ZWwtJChDT05GSUdfS1ZNX0lOVEVMX1REWClcXHQrPSB2bXgvdGR4Lm9cXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGUtMjMtXFxuYXJjaC94ODYva3ZtL01ha2VmaWxlPTI0PWt2bS1hbWQteVxcdFxcdCs9IHN2bS9zdm0ubyBzdm0vdm1lbnRlci5vIHN2bS9wbXUubyBzdm0vbmVzdGVkLm8gc3ZtL2F2aWMub1xcbmFyY2gveDg2L2t2bS9NYWtlZmlsZS0yNS1cXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGU6MjY6a3ZtLWFtZC0kKENPTkZJR19LVk1fQU1EX1NFVilcXHQrPSBzdm0vc2V2Lm9cXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGU6Mjc6a3ZtLWFtZC0kKENPTkZJR19LVk1fSFlQRVJWKVxcdCs9IHN2bS9oeXBlcnYub1xcbmFyY2gveDg2L2t2bS9NYWtlZmlsZS0yOC1cXG4tLVxcbmFyY2gveDg2L2t2bS9NYWtlZmlsZT0zMz1lbmRpZlxcbmFyY2gveDg2L2t2bS9NYWtlZmlsZS0zNC1cXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGU6MzU6b2JqLSQoQ09ORklHX0tWTV9YODYpXFx0Kz0ga3ZtLm9cXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGU6MzY6b2JqLSQoQ09ORklHX0tWTV9JTlRFTClcXHQrPSBrdm0taW50ZWwub1xcbmFyY2gveDg2L2t2bS9NYWtlZmlsZTozNzpvYmotJChDT05GSUdfS1ZNX0FNRClcXHQrPSBrdm0tYW1kLm9cXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGUtMzgtXFxuLS1cXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGU9NDk9Y2xlYW4tZmlsZXMgKz0ga3ZtLWFzbS1vZmZzZXRzLmhcXG4tLVxcbmFyY2gveDg2L2t2bS9NYWtlZmlsZS01NS0jIHVzZSBFWFBPUlRfU1lNQk9MX0dQTCwgYW5kIEVYUE9SVF9TWU1CT0wgc2hvdWxkIG5ldmVyIGJlIHVzZWQuXFxuYXJjaC94ODYva3ZtL01ha2VmaWxlOjU2OmlmZGVmIENPTkZJR19LVk1fWDg2XFxuYXJjaC94ODYva3ZtL01ha2VmaWxlLTU3LSMgU2VhcmNoIHJlY3Vyc2l2ZWx5IGZvciB3aG9sZSB3b3JkcyBhbmQgcHJpbnQgbGluZSBudW1iZXJzLiAgRmlsdGVyIG91dCB0aGVcXG4tLVxcbmFyY2gveDg2L2t2bS9NYWtlZmlsZT05Nz11bmRlZmluZSBleHBvcnRzX2dyZXBfdHJhaWxlclxcbmFyY2gveDg2L2t2bS9NYWtlZmlsZTo5ODplbmRpZiAjIENPTkZJR19LVk1fWDg2XFxuLS1cXG5hcmNoL3g4Ni9rdm0vY3B1aWQuYz0zMjc9c3RhdGljIGJvb2wga3ZtX2NwdWlkX2hhc19oeXBlcnYoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gveDg2L2t2bS9jcHVpZC5jLTMyOC17XFxuYXJjaC94ODYva3ZtL2NwdWlkLmM6MzI5OiNpZmRlZiBDT05GSUdfS1ZNX0hZUEVSVlxcbmFyY2gveDg2L2t2bS9jcHVpZC5jLTMzMC1cXHRzdHJ1Y3Qga3ZtX2NwdWlkX2VudHJ5MiAqZW50cnk7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vY3B1aWQuYz01MTA9c3RhdGljIGludCBrdm1fc2V0X2NwdWlkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9jcHVpZF9lbnRyeTIgKmUyLFxcbi0tXFxuYXJjaC94ODYva3ZtL2NwdWlkLmMtNTYwLVxcbmFyY2gveDg2L2t2bS9jcHVpZC5jOjU2MTojaWZkZWYgQ09ORklHX0tWTV9IWVBFUlZcXG5hcmNoL3g4Ni9rdm0vY3B1aWQuYy01NjItXFx0aWYgKGt2bV9jcHVpZF9oYXNfaHlwZXJ2KHZjcHUpKSB7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vY3B1aWQuYy01NzItXFxuYXJjaC94ODYva3ZtL2NwdWlkLmM6NTczOiNpZmRlZiBDT05GSUdfS1ZNX1hFTlxcbmFyY2gveDg2L2t2bS9jcHVpZC5jLTU3NC1cXHR2Y3B1LVxcdTAwM2VhcmNoLnhlbi5jcHVpZCA9IGt2bV9nZXRfaHlwZXJ2aXNvcl9jcHVpZCh2Y3B1LCBYRU5fU0lHTkFUVVJFKTtcXG4tLVxcbmFyY2gveDg2L2t2bS9oeXBlcnYuaC0yNy1cXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2Lmg6Mjg6I2lmZGVmIENPTkZJR19LVk1fSFlQRVJWXFxuYXJjaC94ODYva3ZtL2h5cGVydi5oLTI5LVxcbi0tXFxuYXJjaC94ODYva3ZtL2h5cGVydi5oPTM3OD1pbnQga3ZtX2h2X3ZjcHVfZmx1c2hfdGxiKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XFxuYXJjaC94ODYva3ZtL2h5cGVydi5oOjM3OTojZWxzZSAvKiBDT05GSUdfS1ZNX0hZUEVSViAqL1xcbmFyY2gveDg2L2t2bS9oeXBlcnYuaC0zODAtc3RhdGljIGlubGluZSB2b2lkIGt2bV9odl9zZXR1cF90c2NfcGFnZShzdHJ1Y3Qga3ZtICprdm0sXFxuLS1cXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2Lmg9NDI2PXN0YXRpYyBpbmxpbmUgdm9pZCBrdm1faHZfbmVzdGVkX3RyYW5zdGlvbl90bGJfZmx1c2goc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBib29sIHRkcF9lbmFibGVkKSB7fVxcbmFyY2gveDg2L2t2bS9oeXBlcnYuaDo0Mjc6I2VuZGlmIC8qIENPTkZJR19LVk1fSFlQRVJWICovXFxuYXJjaC94ODYva3ZtL2h5cGVydi5oLTQyOC1cXG4tLVxcbmFyY2gveDg2L2t2bS9pODI1NC5oLTEyLVxcbmFyY2gveDg2L2t2bS9pODI1NC5oOjEzOiNpZmRlZiBDT05GSUdfS1ZNX0lPQVBJQ1xcbmFyY2gveDg2L2t2bS9pODI1NC5oLTE0LXN0cnVjdCBrdm1fa3BpdF9jaGFubmVsX3N0YXRlIHtcXG4tLVxcbmFyY2gveDg2L2t2bS9pODI1NC5oPTY5PXZvaWQga3ZtX2ZyZWVfcGl0KHN0cnVjdCBrdm0gKmt2bSk7XFxuYXJjaC94ODYva3ZtL2k4MjU0Lmg6NzA6I2VuZGlmIC8qIENPTkZJR19LVk1fSU9BUElDICovXFxuYXJjaC94ODYva3ZtL2k4MjU0LmgtNzEtXFxuLS1cXG5hcmNoL3g4Ni9rdm0vaW9hcGljLmgtOC1cXG5hcmNoL3g4Ni9rdm0vaW9hcGljLmg6OTojaWZkZWYgQ09ORklHX0tWTV9JT0FQSUNcXG5hcmNoL3g4Ni9rdm0vaW9hcGljLmgtMTAtXFxuLS1cXG5hcmNoL3g4Ni9rdm0vaW9hcGljLmg9MTE3PXN0YXRpYyBpbmxpbmUgaW50IF9fa3ZtX2lycV9saW5lX3N0YXRlKHVuc2lnbmVkIGxvbmcgKmlycV9zdGF0ZSxcXG4tLVxcbmFyY2gveDg2L2t2bS9pb2FwaWMuaC0xMjctfVxcbmFyY2gveDg2L2t2bS9pb2FwaWMuaDoxMjg6I2VuZGlmIC8qIENPTkZJR19LVk1fSU9BUElDICovXFxuYXJjaC94ODYva3ZtL2lvYXBpYy5oLTEyOS1cXG4tLVxcbmFyY2gveDg2L2t2bS9pcnEuYz01OT1pbnQga3ZtX2NwdV9oYXNfZXh0aW50KHN0cnVjdCBrdm1fdmNwdSAqdilcXG4tLVxcbmFyY2gveDg2L2t2bS9pcnEuYy04MC1cXG5hcmNoL3g4Ni9rdm0vaXJxLmM6ODE6I2lmZGVmIENPTkZJR19LVk1fSU9BUElDXFxuYXJjaC94ODYva3ZtL2lycS5jLTgyLVxcdGlmIChwaWNfaW5fa2VybmVsKHYtXFx1MDAzZWt2bSkpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vaXJxLmM9MTI4PWludCBrdm1fY3B1X2dldF9leHRpbnQoc3RydWN0IGt2bV92Y3B1ICp2KVxcbi0tXFxuYXJjaC94ODYva3ZtL2lycS5jLTEzNy1cXG5hcmNoL3g4Ni9rdm0vaXJxLmM6MTM4OiNpZmRlZiBDT05GSUdfS1ZNX1hFTlxcbmFyY2gveDg2L2t2bS9pcnEuYy0xMzktXFx0aWYgKGt2bV94ZW5faGFzX2ludGVycnVwdCh2KSlcXG4tLVxcbmFyY2gveDg2L2t2bS9pcnEuYy0xNDItXFxuYXJjaC94ODYva3ZtL2lycS5jOjE0MzojaWZkZWYgQ09ORklHX0tWTV9JT0FQSUNcXG5hcmNoL3g4Ni9rdm0vaXJxLmMtMTQ0LVxcdGlmIChwaWNfaW5fa2VybmVsKHYtXFx1MDAzZWt2bSkpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vaXJxLmM9MTc3PXZvaWQgX19rdm1fbWlncmF0ZV90aW1lcnMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL2lycS5jLTE3OS1cXHRfX2t2bV9taWdyYXRlX2FwaWNfdGltZXIodmNwdSk7XFxuYXJjaC94ODYva3ZtL2lycS5jOjE4MDojaWZkZWYgQ09ORklHX0tWTV9JT0FQSUNcXG5hcmNoL3g4Ni9rdm0vaXJxLmMtMTgxLVxcdF9fa3ZtX21pZ3JhdGVfcGl0X3RpbWVyKHZjcHUpO1xcbi0tXFxuYXJjaC94ODYva3ZtL2lycS5jPTI0MT1pbnQga3ZtX2FyY2hfc2V0X2lycV9pbmF0b21pYyhzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFfcm91dGluZ19lbnRyeSAqZSxcXG4tLVxcbmFyY2gveDg2L2t2bS9pcnEuYy0yNDgtXFx0c3dpdGNoIChlLVxcdTAwM2V0eXBlKSB7XFxuYXJjaC94ODYva3ZtL2lycS5jOjI0OTojaWZkZWYgQ09ORklHX0tWTV9IWVBFUlZcXG5hcmNoL3g4Ni9rdm0vaXJxLmMtMjUwLVxcdGNhc2UgS1ZNX0lSUV9ST1VUSU5HX0hWX1NJTlQ6XFxuLS1cXG5hcmNoL3g4Ni9rdm0vaXJxLmMtMjY0LVxcbmFyY2gveDg2L2t2bS9pcnEuYzoyNjU6I2lmZGVmIENPTkZJR19LVk1fWEVOXFxuYXJjaC94ODYva3ZtL2lycS5jLTI2Ni1cXHRjYXNlIEtWTV9JUlFfUk9VVElOR19YRU5fRVZUQ0hOOlxcbi0tXFxuYXJjaC94ODYva3ZtL2lycS5jPTI5Nj1pbnQga3ZtX3NldF9yb3V0aW5nX2VudHJ5KHN0cnVjdCBrdm0gKmt2bSxcXG4tLVxcbmFyY2gveDg2L2t2bS9pcnEuYy0zMDQtXFx0c3dpdGNoICh1ZS1cXHUwMDNldHlwZSkge1xcbmFyY2gveDg2L2t2bS9pcnEuYzozMDU6I2lmZGVmIENPTkZJR19LVk1fSU9BUElDXFxuYXJjaC94ODYva3ZtL2lycS5jLTMwNi1cXHRjYXNlIEtWTV9JUlFfUk9VVElOR19JUlFDSElQOlxcbi0tXFxuYXJjaC94ODYva3ZtL2lycS5jLTMzOC1cXHRcXHRicmVhaztcXG5hcmNoL3g4Ni9rdm0vaXJxLmM6MzM5OiNpZmRlZiBDT05GSUdfS1ZNX0hZUEVSVlxcbmFyY2gveDg2L2t2bS9pcnEuYy0zNDAtXFx0Y2FzZSBLVk1fSVJRX1JPVVRJTkdfSFZfU0lOVDpcXG4tLVxcbmFyY2gveDg2L2t2bS9pcnEuYy0zNDUtI2VuZGlmXFxuYXJjaC94ODYva3ZtL2lycS5jOjM0NjojaWZkZWYgQ09ORklHX0tWTV9YRU5cXG5hcmNoL3g4Ni9rdm0vaXJxLmMtMzQ3LVxcdGNhc2UgS1ZNX0lSUV9ST1VUSU5HX1hFTl9FVlRDSE46XFxuLS1cXG5hcmNoL3g4Ni9rdm0vaXJxLmM9NDE2PXZvaWQga3ZtX2FyY2hfaXJxX3JvdXRpbmdfdXBkYXRlKHN0cnVjdCBrdm0gKmt2bSlcXG5hcmNoL3g4Ni9rdm0vaXJxLmMtNDE3LXtcXG5hcmNoL3g4Ni9rdm0vaXJxLmM6NDE4OiNpZmRlZiBDT05GSUdfS1ZNX0hZUEVSVlxcbmFyY2gveDg2L2t2bS9pcnEuYy00MTktXFx0a3ZtX2h2X2lycV9yb3V0aW5nX3VwZGF0ZShrdm0pO1xcbi0tXFxuYXJjaC94ODYva3ZtL2lycS5jPTU0MD12b2lkIGt2bV9hcmNoX3VwZGF0ZV9pcnFmZF9yb3V0aW5nKHN0cnVjdCBrdm1fa2VybmVsX2lycWZkICppcnFmZCxcXG4tLVxcbmFyY2gveDg2L2t2bS9pcnEuYy01NTUtXFxuYXJjaC94ODYva3ZtL2lycS5jOjU1NjojaWZkZWYgQ09ORklHX0tWTV9JT0FQSUNcXG5hcmNoL3g4Ni9rdm0vaXJxLmMtNTU3LSNkZWZpbmUgSU9BUElDX1JPVVRJTkdfRU5UUlkoaXJxKSBcXFxcXFxuLS1cXG5hcmNoL3g4Ni9rdm0vaXJxLmgtMjAtXFxuYXJjaC94ODYva3ZtL2lycS5oOjIxOiNpZmRlZiBDT05GSUdfS1ZNX0lPQVBJQ1xcbmFyY2gveDg2L2t2bS9pcnEuaC0yMi1cXG4tLVxcbmFyY2gveDg2L2t2bS9pcnEuaD03Nj1zdGF0aWMgaW5saW5lIGludCBpcnFjaGlwX2Z1bGwoc3RydWN0IGt2bSAqa3ZtKVxcbi0tXFxuYXJjaC94ODYva3ZtL2lycS5oLTgzLX1cXG5hcmNoL3g4Ni9rdm0vaXJxLmg6ODQ6I2Vsc2UgLyogQ09ORklHX0tWTV9JT0FQSUMgKi9cXG5hcmNoL3g4Ni9rdm0vaXJxLmgtODUtc3RhdGljIF9fYWx3YXlzX2lubGluZSBpbnQgaXJxY2hpcF9mdWxsKHN0cnVjdCBrdm0gKmt2bSlcXG4tLVxcbmFyY2gveDg2L2t2bS9pcnEuaD0xMjE9c3RhdGljIGlubGluZSB2b2lkIGt2bV93YXJuX29uX2xvc3RfaXJxKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gveDg2L2t2bS9pcnEuaC0xMzctXFx0ICovXFxuYXJjaC94ODYva3ZtL2lycS5oOjEzODpcXHRXQVJOX09OX09OQ0UoIXBpY19pbl9rZXJuZWwodmNwdS1cXHUwMDNla3ZtKSBcXHUwMDI2XFx1MDAyNiAhSVNfRU5BQkxFRChDT05GSUdfS1ZNX1hFTikpO1xcbmFyY2gveDg2L2t2bS9pcnEuaC0xMzktfVxcbi0tXFxuYXJjaC94ODYva3ZtL2t2bS1hc20tb2Zmc2V0cy5jPTEzPXN0YXRpYyB2b2lkIF9fdXNlZCBjb21tb24odm9pZClcXG5hcmNoL3g4Ni9rdm0va3ZtLWFzbS1vZmZzZXRzLmMtMTQte1xcbmFyY2gveDg2L2t2bS9rdm0tYXNtLW9mZnNldHMuYzoxNTpcXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfS1ZNX0FNRCkpIHtcXG5hcmNoL3g4Ni9rdm0va3ZtLWFzbS1vZmZzZXRzLmMtMTYtXFx0XFx0QkxBTksoKTtcXG4tLVxcbmFyY2gveDg2L2t2bS9rdm0tYXNtLW9mZnNldHMuYy0yNC1cXG5hcmNoL3g4Ni9rdm0va3ZtLWFzbS1vZmZzZXRzLmM6MjU6XFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0tWTV9JTlRFTCkpIHtcXG5hcmNoL3g4Ni9rdm0va3ZtLWFzbS1vZmZzZXRzLmMtMjYtXFx0XFx0QkxBTksoKTtcXG4tLVxcbmFyY2gveDg2L2t2bS9sYXBpYy5jPTE0MTA9c3RhdGljIGludCBfX2FwaWNfYWNjZXB0X2lycShzdHJ1Y3Qga3ZtX2xhcGljICphcGljLCBpbnQgZGVsaXZlcnlfbW9kZSxcXG4tLVxcbmFyY2gveDg2L2t2bS9sYXBpYy5jLTE0MzItXFxuYXJjaC94ODYva3ZtL2xhcGljLmM6MTQzMzojaWZkZWYgQ09ORklHX0tWTV9JT0FQSUNcXG5hcmNoL3g4Ni9rdm0vbGFwaWMuYy0xNDM0LVxcdFxcdGlmIChydGNfc3RhdHVzKSB7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vbGFwaWMuYz0xNTU1PXN0YXRpYyB2b2lkIGt2bV9pb2FwaWNfc2VuZF9lb2koc3RydWN0IGt2bV9sYXBpYyAqYXBpYywgaW50IHZlY3RvcilcXG4tLVxcbmFyY2gveDg2L2t2bS9sYXBpYy5jLTE1ODYtXFxuYXJjaC94ODYva3ZtL2xhcGljLmM6MTU4NzojaWZkZWYgQ09ORklHX0tWTV9JT0FQSUNcXG5hcmNoL3g4Ni9rdm0vbGFwaWMuYy0xNTg4LVxcdGlmIChhcGljX3Rlc3RfdmVjdG9yKHZlY3RvciwgYXBpYy1cXHUwMDNlcmVncyArIEFQSUNfVE1SKSlcXG4tLVxcbmFyY2gveDg2L2t2bS9sYXBpYy5jPTMzMTU9aW50IGt2bV9hcGljX3NldF9zdGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fbGFwaWNfc3RhdGUgKnMpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vbGFwaWMuYy0zMzQ4LVxcbmFyY2gveDg2L2t2bS9sYXBpYy5jOjMzNDk6I2lmZGVmIENPTkZJR19LVk1fSU9BUElDXFxuYXJjaC94ODYva3ZtL2xhcGljLmMtMzM1MC1cXHRpZiAoaW9hcGljX2luX2tlcm5lbCh2Y3B1LVxcdTAwM2Vrdm0pKVxcbi0tXFxuYXJjaC94ODYva3ZtL21tdS9tbXUuYz0xODE4PXN0YXRpYyB2b2lkIGt2bV9tbXVfY2hlY2tfc3B0ZXNfYXRfZnJlZShzdHJ1Y3Qga3ZtX21tdV9wYWdlICpzcClcXG5hcmNoL3g4Ni9rdm0vbW11L21tdS5jLTE4MTkte1xcbmFyY2gveDg2L2t2bS9tbXUvbW11LmM6MTgyMDojaWZkZWYgQ09ORklHX0tWTV9QUk9WRV9NTVVcXG5hcmNoL3g4Ni9rdm0vbW11L21tdS5jLTE4MjEtXFx0aW50IGk7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vbW11L21tdS5jPTUxMzU9dm9pZCBrdm1fYXJjaF9hc3luY19wYWdlX3JlYWR5KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9hc3luY19wZiAqd29yaylcXG4tLVxcbmFyY2gveDg2L2t2bS9tbXUvbW11LmMtNTE2NS1cXG5hcmNoL3g4Ni9rdm0vbW11L21tdS5jOjUxNjY6I2lmZGVmIENPTkZJR19LVk1fR1VFU1RfTUVNRkRcXG5hcmNoL3g4Ni9rdm0vbW11L21tdS5jLTUxNjctc3RhdGljIHZvaWQga3ZtX2Fzc2VydF9nbWVtX2ludmFsaWRhdGVfbG9ja19oZWxkKHN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKnNsb3QpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vbW11L21tdS5jPTY1Njc9aW50IG5vaW5saW5lIGt2bV9tbXVfcGFnZV9mYXVsdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGdwYV90IGNyMl9vcl9ncGEsIHU2NCBlcnJvcl9jb2RlLFxcbi0tXFxuYXJjaC94ODYva3ZtL21tdS9tbXUuYy02NTgzLVxcdCAqL1xcbmFyY2gveDg2L2t2bS9tbXUvbW11LmM6NjU4NDpcXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfS1ZNX1NXX1BST1RFQ1RFRF9WTSkgXFx1MDAyNlxcdTAwMjZcXG5hcmNoL3g4Ni9rdm0vbW11L21tdS5jLTY1ODUtXFx0ICAgICEoZXJyb3JfY29kZSBcXHUwMDI2IFBGRVJSX1JTVkRfTUFTSykgXFx1MDAyNlxcdTAwMjZcXG4tLVxcbmFyY2gveDg2L2t2bS9tbXUvbW11LmM9ODA5ND12b2lkIGt2bV9tbXVfcHJlX2Rlc3Ryb3lfdm0oc3RydWN0IGt2bSAqa3ZtKVxcbi0tXFxuYXJjaC94ODYva3ZtL21tdS9tbXUuYy04MDk5LVxcbmFyY2gveDg2L2t2bS9tbXUvbW11LmM6ODEwMDojaWZkZWYgQ09ORklHX0tWTV9HRU5FUklDX01FTU9SWV9BVFRSSUJVVEVTXFxuYXJjaC94ODYva3ZtL21tdS9tbXUuYy04MTAxLXN0YXRpYyBib29sIGh1Z2VwYWdlX3Rlc3RfbWl4ZWQoc3RydWN0IGt2bV9tZW1vcnlfc2xvdCAqc2xvdCwgZ2ZuX3QgZ2ZuLFxcbi0tXFxuYXJjaC94ODYva3ZtL21tdS9tbXVfaW50ZXJuYWwuaC0xMC1cXG5hcmNoL3g4Ni9rdm0vbW11L21tdV9pbnRlcm5hbC5oOjExOiNpZmRlZiBDT05GSUdfS1ZNX1BST1ZFX01NVVxcbmFyY2gveDg2L2t2bS9tbXUvbW11X2ludGVybmFsLmgtMTItI2RlZmluZSBLVk1fTU1VX1dBUk5fT04oeCkgV0FSTl9PTl9PTkNFKHgpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vbW11L3BhZ2VfdHJhY2suYz0yMz1zdGF0aWMgYm9vbCBrdm1fZXh0ZXJuYWxfd3JpdGVfdHJhY2tpbmdfZW5hYmxlZChzdHJ1Y3Qga3ZtICprdm0pXFxuYXJjaC94ODYva3ZtL21tdS9wYWdlX3RyYWNrLmMtMjQte1xcbmFyY2gveDg2L2t2bS9tbXUvcGFnZV90cmFjay5jOjI1OiNpZmRlZiBDT05GSUdfS1ZNX0VYVEVSTkFMX1dSSVRFX1RSQUNLSU5HXFxuYXJjaC94ODYva3ZtL21tdS9wYWdlX3RyYWNrLmMtMjYtXFx0LypcXG4tLVxcbmFyY2gveDg2L2t2bS9tbXUvcGFnZV90cmFjay5jPTE0Nj1ib29sIGt2bV9nZm5faXNfd3JpdGVfdHJhY2tlZChzdHJ1Y3Qga3ZtICprdm0sXFxuLS1cXG5hcmNoL3g4Ni9rdm0vbW11L3BhZ2VfdHJhY2suYy0xNzAtXFxuYXJjaC94ODYva3ZtL21tdS9wYWdlX3RyYWNrLmM6MTcxOiNpZmRlZiBDT05GSUdfS1ZNX0VYVEVSTkFMX1dSSVRFX1RSQUNLSU5HXFxuYXJjaC94ODYva3ZtL21tdS9wYWdlX3RyYWNrLmMtMTcyLXZvaWQga3ZtX3BhZ2VfdHJhY2tfY2xlYW51cChzdHJ1Y3Qga3ZtICprdm0pXFxuLS1cXG5hcmNoL3g4Ni9rdm0vbW11L3BhZ2VfdHJhY2suaD0yMz1ib29sIGt2bV9nZm5faXNfd3JpdGVfdHJhY2tlZChzdHJ1Y3Qga3ZtICprdm0sXFxuLS1cXG5hcmNoL3g4Ni9rdm0vbW11L3BhZ2VfdHJhY2suaC0yNS1cXG5hcmNoL3g4Ni9rdm0vbW11L3BhZ2VfdHJhY2suaDoyNjojaWZkZWYgQ09ORklHX0tWTV9FWFRFUk5BTF9XUklURV9UUkFDS0lOR1xcbmFyY2gveDg2L2t2bS9tbXUvcGFnZV90cmFjay5oLTI3LWludCBrdm1fcGFnZV90cmFja19pbml0KHN0cnVjdCBrdm0gKmt2bSk7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vbW11L3BhZ2VfdHJhY2suaD00Nj1zdGF0aWMgaW5saW5lIGJvb2wga3ZtX3BhZ2VfdHJhY2tfaGFzX2V4dGVybmFsX3VzZXIoc3RydWN0IGt2bSAqa3ZtKSB7IHJldHVybiBmYWxzZTsgfVxcbmFyY2gveDg2L2t2bS9tbXUvcGFnZV90cmFjay5oLTQ3LVxcbmFyY2gveDg2L2t2bS9tbXUvcGFnZV90cmFjay5oOjQ4OiNlbmRpZiAvKiBDT05GSUdfS1ZNX0VYVEVSTkFMX1dSSVRFX1RSQUNLSU5HICovXFxuYXJjaC94ODYva3ZtL21tdS9wYWdlX3RyYWNrLmgtNDktXFxuLS1cXG5hcmNoL3g4Ni9rdm0vbW11L3RkcF9tbXUuYz0zMz12b2lkIGt2bV9tbXVfdW5pbml0X3RkcF9tbXUoc3RydWN0IGt2bSAqa3ZtKVxcbi0tXFxuYXJjaC94ODYva3ZtL21tdS90ZHBfbW11LmMtNDItXFxuYXJjaC94ODYva3ZtL21tdS90ZHBfbW11LmM6NDM6I2lmZGVmIENPTkZJR19LVk1fUFJPVkVfTU1VXFxuYXJjaC94ODYva3ZtL21tdS90ZHBfbW11LmMtNDQtXFx0S1ZNX01NVV9XQVJOX09OKGF0b21pYzY0X3JlYWQoXFx1MDAyNmt2bS1cXHUwMDNlYXJjaC50ZHBfbW11X3BhZ2VzKSk7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vbW11L3RkcF9tbXUuYz0zMzM9c3RhdGljIHZvaWQgdGRwX2FjY291bnRfbW11X3BhZ2Uoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX21tdV9wYWdlICpzcClcXG4tLVxcbmFyY2gveDg2L2t2bS9tbXUvdGRwX21tdS5jLTMzNS1cXHRrdm1fYWNjb3VudF9wZ3RhYmxlX3BhZ2VzKCh2b2lkICopc3AtXFx1MDAzZXNwdCwgKzEpO1xcbmFyY2gveDg2L2t2bS9tbXUvdGRwX21tdS5jOjMzNjojaWZkZWYgQ09ORklHX0tWTV9QUk9WRV9NTVVcXG5hcmNoL3g4Ni9rdm0vbW11L3RkcF9tbXUuYy0zMzctXFx0YXRvbWljNjRfaW5jKFxcdTAwMjZrdm0tXFx1MDAzZWFyY2gudGRwX21tdV9wYWdlcyk7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vbW11L3RkcF9tbXUuYz0zNDE9c3RhdGljIHZvaWQgdGRwX3VuYWNjb3VudF9tbXVfcGFnZShzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fbW11X3BhZ2UgKnNwKVxcbi0tXFxuYXJjaC94ODYva3ZtL21tdS90ZHBfbW11LmMtMzQzLVxcdGt2bV9hY2NvdW50X3BndGFibGVfcGFnZXMoKHZvaWQgKilzcC1cXHUwMDNlc3B0LCAtMSk7XFxuYXJjaC94ODYva3ZtL21tdS90ZHBfbW11LmM6MzQ0OiNpZmRlZiBDT05GSUdfS1ZNX1BST1ZFX01NVVxcbmFyY2gveDg2L2t2bS9tbXUvdGRwX21tdS5jLTM0NS1cXHRhdG9taWM2NF9kZWMoXFx1MDAyNmt2bS1cXHUwMDNlYXJjaC50ZHBfbW11X3BhZ2VzKTtcXG4tLVxcbmFyY2gveDg2L2t2bS9tbXUvdGRwX21tdS5jPTgyOT1zdGF0aWMgdm9pZCB0ZHBfbW11X3phcF9yb290KHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9tbXVfcGFnZSAqcm9vdCxcXG4tLVxcbmFyY2gveDg2L2t2bS9tbXUvdGRwX21tdS5jLTg2NS1cXHQgKi9cXG5hcmNoL3g4Ni9rdm0vbW11L3RkcF9tbXUuYzo4NjY6XFx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19LVk1fUFJPVkVfTU1VKSkge1xcbmFyY2gveDg2L2t2bS9tbXUvdGRwX21tdS5jLTg2Ny1cXHRcXHRfX3RkcF9tbXVfemFwX3Jvb3Qoa3ZtLCByb290LCBzaGFyZWQsIFBHX0xFVkVMXzRLKTtcXG4tLVxcbmFyY2gveDg2L2t2bS9tc3JzLmM9MjU0PXN0YXRpYyBjb25zdCB1MzIgZW11bGF0ZWRfbXNyc19hbGxbXSA9IHtcXG4tLVxcbmFyY2gveDg2L2t2bS9tc3JzLmMtMjU3LVxcbmFyY2gveDg2L2t2bS9tc3JzLmM6MjU4OiNpZmRlZiBDT05GSUdfS1ZNX0hZUEVSVlxcbmFyY2gveDg2L2t2bS9tc3JzLmMtMjU5LVxcdEhWX1g2NF9NU1JfR1VFU1RfT1NfSUQsIEhWX1g2NF9NU1JfSFlQRVJDQUxMLFxcbi0tXFxuYXJjaC94ODYva3ZtL21zcnMuYz0xNDQyPWludCBrdm1fc2V0X21zcl9jb21tb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3QgbXNyX2RhdGEgKm1zcl9pbmZvKVxcbi0tXFxuYXJjaC94ODYva3ZtL21zcnMuYy0xNjIyLVxcdGNhc2UgTVNSX0lBMzJfU01CQVNFOlxcbmFyY2gveDg2L2t2bS9tc3JzLmM6MTYyMzpcXHRcXHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX0tWTV9TTU0pIHx8ICFtc3JfaW5mby1cXHUwMDNlaG9zdF9pbml0aWF0ZWQpXFxuYXJjaC94ODYva3ZtL21zcnMuYy0xNjI0LVxcdFxcdFxcdHJldHVybiAxO1xcbi0tXFxuYXJjaC94ODYva3ZtL21zcnMuYy0xNzcwLVxcdFxcdGJyZWFrO1xcbmFyY2gveDg2L2t2bS9tc3JzLmM6MTc3MTojaWZkZWYgQ09ORklHX0tWTV9IWVBFUlZcXG5hcmNoL3g4Ni9rdm0vbXNycy5jLTE3NzItXFx0Y2FzZSBIVl9YNjRfTVNSX0dVRVNUX09TX0lEIC4uLiBIVl9YNjRfTVNSX1NJTlQxNTpcXG4tLVxcbmFyY2gveDg2L2t2bS9tc3JzLmM9MTg5OT1pbnQga3ZtX2dldF9tc3JfY29tbW9uKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IG1zcl9kYXRhICptc3JfaW5mbylcXG4tLVxcbmFyY2gveDg2L2t2bS9tc3JzLmMtMjAxOC1cXHRjYXNlIE1TUl9JQTMyX1NNQkFTRTpcXG5hcmNoL3g4Ni9rdm0vbXNycy5jOjIwMTk6XFx0XFx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19LVk1fU01NKSB8fCAhbXNyX2luZm8tXFx1MDAzZWhvc3RfaW5pdGlhdGVkKVxcbmFyY2gveDg2L2t2bS9tc3JzLmMtMjAyMC1cXHRcXHRcXHRyZXR1cm4gMTtcXG4tLVxcbmFyY2gveDg2L2t2bS9tc3JzLmMtMjEyMS1cXHRcXHRicmVhaztcXG5hcmNoL3g4Ni9rdm0vbXNycy5jOjIxMjI6I2lmZGVmIENPTkZJR19LVk1fSFlQRVJWXFxuYXJjaC94ODYva3ZtL21zcnMuYy0yMTIzLVxcdGNhc2UgSFZfWDY0X01TUl9HVUVTVF9PU19JRCAuLi4gSFZfWDY0X01TUl9TSU5UMTU6XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc21tLmgtNi1cXG5hcmNoL3g4Ni9rdm0vc21tLmg6NzojaWZkZWYgQ09ORklHX0tWTV9TTU1cXG5hcmNoL3g4Ni9rdm0vc21tLmgtOC1cXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vaHlwZXJ2LmgtMTMtXFxuYXJjaC94ODYva3ZtL3N2bS9oeXBlcnYuaDoxNDojaWZkZWYgQ09ORklHX0tWTV9IWVBFUlZcXG5hcmNoL3g4Ni9rdm0vc3ZtL2h5cGVydi5oLTE1LXN0YXRpYyBpbmxpbmUgdm9pZCBuZXN0ZWRfc3ZtX2h2X3VwZGF0ZV92bV92cF9pZHMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9oeXBlcnYuaD01MT12b2lkIHN2bV9odl9pbmplY3Rfc3ludGhldGljX3ZtZXhpdF9wb3N0X3RsYl9mbHVzaChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xcbmFyY2gveDg2L2t2bS9zdm0vaHlwZXJ2Lmg6NTI6I2Vsc2UgLyogQ09ORklHX0tWTV9IWVBFUlYgKi9cXG5hcmNoL3g4Ni9rdm0vc3ZtL2h5cGVydi5oLTUzLXN0YXRpYyBpbmxpbmUgdm9pZCBuZXN0ZWRfc3ZtX2h2X3VwZGF0ZV92bV92cF9pZHMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KSB7fVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9oeXBlcnYuaD01OD1zdGF0aWMgaW5saW5lIHZvaWQgc3ZtX2h2X2luamVjdF9zeW50aGV0aWNfdm1leGl0X3Bvc3RfdGxiX2ZsdXNoKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkge31cXG5hcmNoL3g4Ni9rdm0vc3ZtL2h5cGVydi5oOjU5OiNlbmRpZiAvKiBDT05GSUdfS1ZNX0hZUEVSViAqL1xcbmFyY2gveDg2L2t2bS9zdm0vaHlwZXJ2LmgtNjAtXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jPTI5NT1zdGF0aWMgYm9vbCBuZXN0ZWRfc3ZtX21lcmdlX21zcnBtKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMzA5LVxcdCAqL1xcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MzEwOiNpZmRlZiBDT05GSUdfS1ZNX0hZUEVSVlxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMzExLVxcdGlmICghc3ZtLVxcdTAwM2VuZXN0ZWQuZm9yY2VfbXNyX2JpdG1hcF9yZWNhbGMpIHtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMzM4LVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MzM5OiNpZmRlZiBDT05GSUdfS1ZNX0hZUEVSVlxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMzQwLXNldF9tc3JwbV9iYXNlX3BhOlxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYz01MTM9dm9pZCBfX25lc3RlZF9jb3B5X3ZtY2JfY29udHJvbF90b19jYWNoZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTU2MC1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjU2MTojaWZkZWYgQ09ORklHX0tWTV9IWVBFUlZcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTU2Mi1cXHQvKiBIeXBlci1WIGV4dGVuc2lvbnMgKEVubGlnaHRlbmVkIFZNQ0IpICovXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jPTE3MjE9c3RhdGljIGludCBzdm1fY2hlY2tfbmVzdGVkX2V2ZW50cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE3NjItXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxNzYzOiNpZmRlZiBDT05GSUdfS1ZNX1NNTVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTc2NC1cXHRpZiAodmNwdS1cXHUwMDNlYXJjaC5zbWlfcGVuZGluZyBcXHUwMDI2XFx1MDAyNiAhc3ZtX3NtaV9ibG9ja2VkKHZjcHUpKSB7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jPTMwODY9dm9pZCBfX2luaXQgc2V2X2hhcmR3YXJlX3NldHVwKHZvaWQpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTMxMTYtXFx0ICovXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYzozMTE3OlxcdGlmIChJU19CVUlMVElOKENPTkZJR19LVk1fQU1EKSBcXHUwMDI2XFx1MDAyNiBzZXZfbW9kdWxlX2luaXQoKSlcXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTMxMTgtXFx0XFx0Z290byBvdXQ7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jPTIxNjU9c3RhdGljIGludCBzaHV0ZG93bl9pbnRlcmNlcHRpb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy0yMTgzLVxcdFxcdGNsZWFyX3BhZ2Uoc3ZtLVxcdTAwM2V2bWNiKTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jOjIxODQ6I2lmZGVmIENPTkZJR19LVk1fU01NXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy0yMTg1LVxcdFxcdGlmIChpc19zbW0odmNwdSkpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jPTMzNDc9c3RhdGljIGludCAoKmNvbnN0IHN2bV9leGl0X2hhbmRsZXJzW10pKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkgPSB7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTM0MjAtXFx0W1NWTV9FWElUX0FWSUNfVU5BQ0NFTEVSQVRFRF9BQ0NFU1NdXFx0PSBhdmljX3VuYWNjZWxlcmF0ZWRfYWNjZXNzX2ludGVyY2VwdGlvbixcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jOjM0MjE6I2lmZGVmIENPTkZJR19LVk1fQU1EX1NFVlxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtMzQyMi1cXHRbU1ZNX0VYSVRfVk1HRVhJVF1cXHRcXHRcXHQ9IHNldl9oYW5kbGVfdm1nZXhpdCxcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM9MzYzNj1pbnQgc3ZtX2ludm9rZV9leGl0X2hhbmRsZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgX19leGl0X2NvZGUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTM2NjItXFx0XFx0cmV0dXJuIG5wZl9pbnRlcmNlcHRpb24odmNwdSk7XFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYzozNjYzOiNpZmRlZiBDT05GSUdfS1ZNX0FNRF9TRVZcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTM2NjQtXFx0ZWxzZSBpZiAoZXhpdF9jb2RlID09IFNWTV9FWElUX1ZNR0VYSVQpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jPTQ3MDQ9c3RhdGljIGJvb2wgc3ZtX2hhc19lbXVsYXRlZF9tc3Ioc3RydWN0IGt2bSAqa3ZtLCB1MzIgaW5kZXgpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTQ3MTAtXFx0Y2FzZSBNU1JfSUEzMl9TTUJBU0U6XFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYzo0NzExOlxcdFxcdGlmICghSVNfRU5BQkxFRChDT05GSUdfS1ZNX1NNTSkpXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy00NzEyLVxcdFxcdFxcdHJldHVybiBmYWxzZTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTQ3MTMtXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYzo0NzE0OiNpZmRlZiBDT05GSUdfS1ZNX0FNRF9TRVZcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTQ3MTUtXFx0XFx0LypcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM9NDk3OT1zdGF0aWMgdm9pZCBzdm1fc2V0dXBfbWNlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNDk4NC1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jOjQ5ODU6I2lmZGVmIENPTkZJR19LVk1fU01NXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy00OTg2LWJvb2wgc3ZtX3NtaV9ibG9ja2VkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM9NTMyOD1zdHJ1Y3Qga3ZtX3g4Nl9vcHMgc3ZtX3g4Nl9vcHMgX19pbml0ZGF0YSA9IHtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNTQzNS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jOjU0MzY6I2lmZGVmIENPTkZJR19LVk1fU01NXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy01NDM3LVxcdC5zbWlfYWxsb3dlZCA9IHN2bV9zbWlfYWxsb3dlZCxcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNTQ0Mi1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jOjU0NDM6I2lmZGVmIENPTkZJR19LVk1fQU1EX1NFVlxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNTQ0NC1cXHQudmNwdV9uZWVkc19pbml0aWFsaXphdGlvbiA9IHNldl92Y3B1X25lZWRzX2luaXRpYWxpemF0aW9uLFxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uaD02Nj1lbnVtIHtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmgtOTctXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uaDo5ODojaWZkZWYgQ09ORklHX0tWTV9BTURfU0VWXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uaC05OS1zdHJ1Y3Qga3ZtX3Nldl9pbmZvIHtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmg9MTI3PXN0cnVjdCBrdm1fc3ZtIHtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmgtMTM1LVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmg6MTM2OiNpZmRlZiBDT05GSUdfS1ZNX0FNRF9TRVZcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oLTEzNy1cXHRzdHJ1Y3Qga3ZtX3Nldl9pbmZvIHNldl9pbmZvO1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uaD0xODA9c3RydWN0IHZtY2JfY3RybF9hcmVhX2NhY2hlZCB7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oLTIwNS1cXHR1bmlvbiB7XFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uaDoyMDY6I2lmIElTX0VOQUJMRUQoQ09ORklHX0hZUEVSVikgfHwgSVNfRU5BQkxFRChDT05GSUdfS1ZNX0hZUEVSVilcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oLTIwNy1cXHRcXHRzdHJ1Y3QgaHZfdm1jYl9lbmxpZ2h0ZW5tZW50cyBodl9lbmxpZ2h0ZW5tZW50cztcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmg9MzkwPXN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgc3RydWN0IGt2bV9zdm0gKnRvX2t2bV9zdm0oc3RydWN0IGt2bSAqa3ZtKVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uaC0zOTQtXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uaDozOTU6I2lmZGVmIENPTkZJR19LVk1fQU1EX1NFVlxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmgtMzk2LXN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgc3RydWN0IGt2bV9zZXZfaW5mbyAqdG9fa3ZtX3Nldl9pbmZvKHN0cnVjdCBrdm0gKmt2bSlcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmg9OTgwPXZvaWQgc2V2X2VzX3VubWFwX2doY2Ioc3RydWN0IHZjcHVfc3ZtICpzdm0pO1xcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmgtOTgxLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmg6OTgyOiNpZmRlZiBDT05GSUdfS1ZNX0FNRF9TRVZcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oLTk4My1ib29sIHNldl92Y3B1X25lZWRzX2luaXRpYWxpemF0aW9uKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3ZtZW50ZXIuUz0yMTA9U1lNX0ZVTkNfRU5EKF9fc3ZtX3ZjcHVfcnVuKVxcbmFyY2gveDg2L2t2bS9zdm0vdm1lbnRlci5TLTIxMS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3ZtZW50ZXIuUzoyMTI6I2lmZGVmIENPTkZJR19LVk1fQU1EX1NFVlxcbmFyY2gveDg2L2t2bS9zdm0vdm1lbnRlci5TLTIxMy1cXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vdm1lbnRlci5TPTI4Mz1TWU1fRlVOQ19FTkQoX19zdm1fc2V2X2VzX3ZjcHVfcnVuKVxcbmFyY2gveDg2L2t2bS9zdm0vdm1lbnRlci5TOjI4NDojZW5kaWYgLyogQ09ORklHX0tWTV9BTURfU0VWICovXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdHJhY2UuaD0yMjg9VFJBQ0VfRVZFTlQoa3ZtX2NwdWlkLFxcbi0tXFxuYXJjaC94ODYva3ZtL3RyYWNlLmgtMjcyLVxcbmFyY2gveDg2L2t2bS90cmFjZS5oOjI3MzojaWZkZWYgQ09ORklHX0tWTV9JT0FQSUNcXG5hcmNoL3g4Ni9rdm0vdHJhY2UuaC0yNzQtVFJBQ0VfRVZFTlQoa3ZtX2lvYXBpY19zZXRfaXJxLFxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC9jb21tb24uaD0zMz1zdHJ1Y3QgdmNwdV92dCB7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L2NvbW1vbi5oLTU3LVxcbmFyY2gveDg2L2t2bS92bXgvY29tbW9uLmg6NTg6I2lmZGVmIENPTkZJR19LVk1fSU5URUxfVERYXFxuYXJjaC94ODYva3ZtL3ZteC9jb21tb24uaC01OS1cXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvaHlwZXJ2Lmg9MTI9ZW51bSBuZXN0ZWRfZXZtcHRybGRfc3RhdHVzIHtcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvaHlwZXJ2LmgtMTgtXFxuYXJjaC94ODYva3ZtL3ZteC9oeXBlcnYuaDoxOTojaWZkZWYgQ09ORklHX0tWTV9IWVBFUlZcXG5hcmNoL3g4Ni9rdm0vdm14L2h5cGVydi5oLTIwLXN0YXRpYyBpbmxpbmUgYm9vbCBldm1wdHJfaXNfdmFsaWQodTY0IGV2bXB0cilcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jLTEyLVxcbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jOjEzOiNpZmRlZiBDT05GSUdfS1ZNX0lOVEVMX1REWFxcbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jLTE0LXN0YXRpY19hc3NlcnQob2Zmc2V0b2Yoc3RydWN0IHZjcHVfdm14LCB2dCkgPT0gb2Zmc2V0b2Yoc3RydWN0IHZjcHVfdGR4LCB2dCkpO1xcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmM9MjE4PXN0YXRpYyBpbnQgdnRfY29tcGxldGVfZW11bGF0ZWRfbXNyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgaW50IGVycilcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jLTIyNS1cXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYzoyMjY6I2lmZGVmIENPTkZJR19LVk1fU01NXFxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmMtMjI3LXN0YXRpYyBpbnQgdnRfc21pX2FsbG93ZWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBib29sIGZvcl9pbmplY3Rpb24pXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYz04NjM9c3RhdGljIGludCB2dF9nbWVtX21heF9tYXBwaW5nX2xldmVsKHN0cnVjdCBrdm0gKmt2bSwga3ZtX3Bmbl90IHBmbixcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jLTg3My0jZGVmaW5lIHZ0X29wX3RkeF9vbmx5KG5hbWUpIHZ0XyMjbmFtZVxcbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jOjg3NDojZWxzZSAvKiBDT05GSUdfS1ZNX0lOVEVMX1REWCAqL1xcbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jLTg3NS0jZGVmaW5lIHZ0X29wKG5hbWUpIHZteF8jI25hbWVcXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYy04NzYtI2RlZmluZSB2dF9vcF90ZHhfb25seShuYW1lKSBOVUxMXFxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmM6ODc3OiNlbmRpZiAvKiBDT05GSUdfS1ZNX0lOVEVMX1REWCAqL1xcbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jLTg3OC1cXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jPTg4OD1zdHJ1Y3Qga3ZtX3g4Nl9vcHMgdnRfeDg2X29wcyBfX2luaXRkYXRhID0ge1xcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmMtMTAxNi1cXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYzoxMDE3OiNpZmRlZiBDT05GSUdfS1ZNX1NNTVxcbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jLTEwMTgtXFx0LnNtaV9hbGxvd2VkID0gdnRfb3Aoc21pX2FsbG93ZWQpLFxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYz0yMzQ9c3RhdGljIGlubGluZSB2b2lkIG5lc3RlZF9yZWxlYXNlX2V2bWNzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jLTIzNS17XFxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYzoyMzY6I2lmZGVmIENPTkZJR19LVk1fSFlQRVJWXFxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy0yMzctXFx0c3RydWN0IGt2bV92Y3B1X2h2ICpodl92Y3B1ID0gdG9faHZfdmNwdSh2Y3B1KTtcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmM9MjUyPXN0YXRpYyBib29sIG5lc3RlZF9ldm1jc19oYW5kbGVfdm1jbGVhcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGdwYV90IHZtcHRyKVxcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmMtMjUzLXtcXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jOjI1NDojaWZkZWYgQ09ORklHX0tWTV9IWVBFUlZcXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jLTI1NS1cXHRzdHJ1Y3QgdmNwdV92bXggKnZteCA9IHRvX3ZteCh2Y3B1KTtcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmM9MTc1ND1zdGF0aWMgdm9pZCBjb3B5X2VubGlnaHRlbmVkX3RvX3ZtY3MxMihzdHJ1Y3QgdmNwdV92bXggKnZteCwgdTMyIGh2X2NsZWFuX2ZpZWxkcylcXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jLTE3NTUte1xcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmM6MTc1NjojaWZkZWYgQ09ORklHX0tWTV9IWVBFUlZcXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jLTE3NTctXFx0c3RydWN0IHZtY3MxMiAqdm1jczEyID0gdm14LVxcdTAwM2VuZXN0ZWQuY2FjaGVkX3ZtY3MxMjtcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmMtMTk5Ni1cXHRyZXR1cm47XFxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYzoxOTk3OiNlbHNlIC8qIENPTkZJR19LVk1fSFlQRVJWICovXFxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy0xOTk4LVxcdEtWTV9CVUdfT04oMSwgdm14LVxcdTAwM2V2Y3B1Lmt2bSk7XFxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYzoxOTk5OiNlbmRpZiAvKiBDT05GSUdfS1ZNX0hZUEVSViAqL1xcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmMtMjAwMC19XFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jPTIwMDI9c3RhdGljIHZvaWQgY29weV92bWNzMTJfdG9fZW5saWdodGVuZWQoc3RydWN0IHZjcHVfdm14ICp2bXgpXFxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy0yMDAzLXtcXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jOjIwMDQ6I2lmZGVmIENPTkZJR19LVk1fSFlQRVJWXFxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy0yMDA1LVxcdHN0cnVjdCB2bWNzMTIgKnZtY3MxMiA9IHZteC1cXHUwMDNlbmVzdGVkLmNhY2hlZF92bWNzMTI7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jLTIxNzQtXFx0cmV0dXJuO1xcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmM6MjE3NTojZWxzZSAvKiBDT05GSUdfS1ZNX0hZUEVSViAqL1xcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmMtMjE3Ni1cXHRLVk1fQlVHX09OKDEsIHZteC1cXHUwMDNldmNwdS5rdm0pO1xcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmM6MjE3NzojZW5kaWYgLyogQ09ORklHX0tWTV9IWVBFUlYgKi9cXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jLTIxNzgtfVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYz0yMTg0PXN0YXRpYyBlbnVtIG5lc3RlZF9ldm1wdHJsZF9zdGF0dXMgbmVzdGVkX3ZteF9oYW5kbGVfZW5saWdodGVuZWRfdm1wdHJsZChcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmMtMjE4Ni17XFxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYzoyMTg3OiNpZmRlZiBDT05GSUdfS1ZNX0hZUEVSVlxcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmMtMjE4OC1cXHRzdHJ1Y3QgdmNwdV92bXggKnZteCA9IHRvX3ZteCh2Y3B1KTtcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmM9MzEyNz1zdGF0aWMgaW50IG5lc3RlZF92bXhfY2hlY2tfY29udHJvbHMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy0zMTM0LVxcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmM6MzEzNTojaWZkZWYgQ09ORklHX0tWTV9IWVBFUlZcXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jLTMxMzYtXFx0aWYgKGd1ZXN0X2NwdV9jYXBfaGFzX2V2bWNzKHZjcHUpKVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYz0zMzExPXN0YXRpYyBpbnQgbmVzdGVkX3ZteF9jaGVja19ndWVzdF9zdGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jLTM0MTEtXFxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYzozNDEyOiNpZmRlZiBDT05GSUdfS1ZNX0hZUEVSVlxcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmMtMzQxMy1zdGF0aWMgYm9vbCBuZXN0ZWRfZ2V0X2V2bWNzX3BhZ2Uoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYz0zNTMwPXN0YXRpYyBib29sIHZteF9nZXRfbmVzdGVkX3N0YXRlX3BhZ2VzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jLTM1MzEte1xcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwNzowNTowNC4xODM5NDQ4NzRaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NjIwMTc1MjY5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBLVk0gTU1VIFBhZ2UgTGltaXQgQWRqdXN0bWVudCoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzIGNvbW1pdC4gTXkgaW5pdGlhbCBpbXByZXNzaW9uIGlzIHRoYXQgaXQncyBhZGRyZXNzaW5nIGEgc3VidGxlIGJ1dCBwb3RlbnRpYWxseSBpbXBhY3RmdWwgYnVnIHdpdGhpbiBLVk0ncyBNTVUgcGFnZSBsaW1pdCBtYW5hZ2VtZW50LCBzcGVjaWZpY2FsbHkgZm9yIHg4Ni4gTGV0J3Mgc3RhcnQgd2l0aCB0aGUgZGlmZiBpdHNlbGYuIEl0IGxvb2tzIGxpa2Ugd2UncmUgY2hhbmdpbmcgaG93IGBnb2FsX25yX21tdV9wYWdlc2AgaXMgYXNzaWduZWQgd2l0aGluIGBrdm1fbW11X2NoYW5nZV9tbXVfcGFnZXNgLiBUaGUgb3JpZ2luYWwgYXNzaWdubWVudCwgYGdvYWxfbnJfbW11X3BhZ2VzID0ga3ZtLVx1MDAzZXN0YXQubW11X3NoYWRvd19wYWdlcztgLCBpcyBiZWluZyByZXBsYWNlZCB3aXRoIGBnb2FsX25yX21tdV9wYWdlcyA9IG1heChrdm0tXHUwMDNlc3RhdC5tbXVfc2hhZG93X3BhZ2VzLCBnb2FsX25yX21tdV9wYWdlcyk7YC5cblxuTXkgbWluZCBzdGFydHMgdG8gd29yayB0aHJvdWdoIGEgc2NlbmFyaW8gdG8gdW5kZXJzdGFuZCB0aGUgcG90ZW50aWFsIGlzc3VlLiBTdXBwb3NlIHdlJ3JlIHRyeWluZyB0byAqcmVkdWNlKiB0aGUgbnVtYmVyIG9mIE1NVSBzaGFkb3cgcGFnZXMuIGBrdm1fbW11X3phcF9vbGRlc3RfbW11X3BhZ2VzYCBpcyBjYWxsZWQgdG8gZnJlZSB1cCBzb21lIHBhZ2VzIHRvIGdldCBkb3duIHRvIGBnb2FsX25yX21tdV9wYWdlc2AuIE5vdywgd2hhdCBpZiB0aGUgemFwcGluZyBvcGVyYXRpb24gaXNuJ3QgcGVyZmVjdD8gSXQgbWlnaHQgZW5kIHVwIHphcHBpbmcgKm1vcmUqIHBhZ2VzIHRoYW4gc3RyaWN0bHkgcmVxdWVzdGVkLiBUaGlzIGNhdXNlcyBga3ZtLVx1MDAzZXN0YXQubW11X3NoYWRvd19wYWdlc2AgdG8gZHJvcC4gVGhlIHByZXZpb3VzIGNvZGUgdGhlbiAqcmVhc3NpZ25zKiBgZ29hbF9ucl9tbXVfcGFnZXNgIHRvIHRoaXMgcG90ZW50aWFsbHkgcmVkdWNlZCB2YWx1ZSBvZiBgbW11X3NoYWRvd19wYWdlc2AsIGVmZmVjdGl2ZWx5ICpsb3dlcmluZyB0aGUgcmVxdWVzdGVkIGdvYWwqLiBUaGlzIGlzIHdoZXJlIHRoZSBmaXggY29tZXMgaW4uIFdpdGggdGhlIGBtYXgoKWAgYXNzaWdubWVudCwgd2UgZW5zdXJlIHRoYXQgYGdvYWxfbnJfbW11X3BhZ2VzYCByZW1haW5zIGF0IHRoZSBpbnRlbmRlZCBsb3dlciBib3VuZCwgcmF0aGVyIHRoYW4gcG90ZW50aWFsbHkgYmVpbmcgYWNjaWRlbnRhbGx5IHJlZHVjZWQgZnVydGhlci5cblxuSSBuZWVkIHRvIGNvbmZpcm0gdGhpczogaXMgdGhpcyBjb2RlIHBhdGggYWN0dWFsbHkgcmVhY2hhYmxlPyBJIHNlZSBga3ZtX21tdV9jaGFuZ2VfbW11X3BhZ2VzYCBpcyBpbmRlZWQgZXhwb3NlZCB2aWEgdGhlIGBLVk1fU0VUX05SX01NVV9QQUdFU2AgaW9jdGwsIGFuZCBhbHNvIHZpYSBtZW1vcnkgcmVnaW9uIHVwZGF0ZXMuIFRoaXMgaXMgZ29vZDsgdGhhdCBtYWtlcyBpdCBlYXNpbHkgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlLCB3aGljaCBpcyBpbXBvcnRhbnQgZm9yIHRlc3RpbmcuIEZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLCB0aGlzIHZ1bG5lcmFiaWxpdHkgaXMgaW50ZXJlc3RpbmcgYmVjYXVzZSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgYW5kIGZ1enppbmcgYXJlIGluIHZlcnkgY2xvc2UgcHJveGltaXR5LiBJJ2xsIG5lZWQgdG8gY2hlY2sgaWYgc3l6a2FsbGVyIGlzIGFscmVhZHkgdGVzdGluZyB0aGlzIGZ1bmN0aW9uYWxpdHkuXG5cbk5vdywgbGV0J3MgY2hlY2sgc29tZSBzdXBwb3J0aW5nIGluZm9ybWF0aW9uLiBMZXQncyBzZWUgaWYgdGhpcyBmaXggaXMgd2l0aGluIHRoZSBjcml0aWNhbCBmb2N1cyBzeW1ib2xzLCB3aGljaCBpcyBga3ZtX21tdV9jaGFuZ2VfbW11X3BhZ2VzYCBhbmQgaXRzIGlvY3RsIGhhbmRsZXIsIGBrdm1fdm1faW9jdGxfc2V0X25yX21tdV9wYWdlc2AuIFdlJ2xsIGFsc28gY2hlY2sgdGhlIGBFbmFibGVDb25maWdzYCwgd2hpY2ggd2lsbCBjb25maXJtIHRoYXQgd2UgcmVxdWlyZSBLVk0sIGFuZCBhbHNvIGVpdGhlciBLVk1fSU5URUwgb3IgS1ZNX0FNRCB0byBidWlsZCB0aGlzLiBJJ2xsIHRha2UgYSBxdWljayBsb29rIGF0IHRoZSBLY29uZmlnIGRlZmluaXRpb25zIG9mIHRoZSBLVk0gb3B0aW9ucyB0byBtYWtlIHN1cmUgbXkgdW5kZXJzdGFuZGluZyBpcyBjb21wbGV0ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAzOTEsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDc6MDU6MTAuMzg1NzAwNTA4WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTA1OTY3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgS1ZNJFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9rdm1cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYva3ZtL0tjb25maWc9MjA9Y29uZmlnIEtWTV9YODZcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTUxLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjUyOmNvbmZpZyBLVk1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy01My1cXHR0cmlzdGF0ZSBcXFwiS2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwNzowNToxMC40MzQ3NjMwMzhaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjgwNDE2MzkxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqQ2hlY2tpbmcgS1ZNIENvbmZpZ3VyYXRpb24gaW4gRGV0YWlsKipcblxuT2theSwgdGltZSB0byBkaXZlIGludG8gdGhlIG5pdHR5LWdyaXR0eS4gQmVmb3JlIEkgbWFrZSBhbnkgYXNzdW1wdGlvbnMsIEknbSBnb2luZyB0byBkb3VibGUtY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gbmFtZXMgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gS1ZNIGZvciB4ODYuIEkgbmVlZCB0byBtYWtlICphYnNvbHV0ZWx5KiBzdXJlIEknbSB3b3JraW5nIHdpdGggdGhlIHByZWNpc2UgZGVmaW5pdGlvbnMuIFRoZSBtb3N0IGxvZ2ljYWwgcGxhY2UgdG8gZmluZCB0aGF0IGF1dGhvcml0YXRpdmUgc291cmNlIGlzIGBhcmNoL3g4Ni9rdm0vS2NvbmZpZ2AsIGFuZCBJJ20gZ29pbmcgdG8gemVybyBpbiBvbiBsaW5lcyAyMCB0aHJvdWdoIDEwMC4gVGhpcyBpcyB3aGVyZSBJIGV4cGVjdCB0aGUgY29yZSBLVk0gY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgeDg2IGFyY2hpdGVjdHVyZSB0byBiZSBkZWZpbmVkLiBCeSB2ZXJpZnlpbmcgdGhlIGV4YWN0IGNvbmZpZyBuYW1lcyBoZXJlLCBJJ2xsIGJlIGFibGUgdG8gYXZvaWQgYW55IHBvdGVudGlhbCBtaXNpbnRlcnByZXRhdGlvbnMgb3IgZXJyb3JzIGRvd24gdGhlIGxpbmUgYW5kIGVuc3VyZSBteSB1bmRlcnN0YW5kaW5nIGlzIHJvY2sgc29saWQuIFByZWNpc2lvbiBpcyBrZXksIGFzIGFsd2F5cywgd2hlbiBkZWFsaW5nIHdpdGgga2VybmVsIGNvbmZpZ3VyYXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjA3OCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDA3OjA1OjEzLjIzODkyOTcwN1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NDUzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJhcmNoL3g4Ni9rdm0vS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxOCxcbiAgXCJMaW5lQ291bnRcIjogODVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAxODpcXHRpZiBWSVJUVUFMSVpBVElPTlxcbiAgMTk6XFx0XFxuICAyMDpcXHRjb25maWcgS1ZNX1g4NlxcbiAgMjE6XFx0XFx0ZGVmX3RyaXN0YXRlIEtWTSBpZiAoS1ZNX0lOVEVMICE9IG4gfHwgS1ZNX0FNRCAhPSBuKVxcbiAgMjI6XFx0XFx0c2VsZWN0IEtWTV9DT01NT05cXG4gIDIzOlxcdFxcdHNlbGVjdCBLVk1fRUxJREVfVExCX0ZMVVNIX0lGX1lPVU5HXFxuICAyNDpcXHRcXHRzZWxlY3QgS1ZNX01NVV9MT0NLTEVTU19BR0lOR1xcbiAgMjU6XFx0XFx0c2VsZWN0IEhBVkVfS1ZNX0lSUUNISVBcXG4gIDI2OlxcdFxcdHNlbGVjdCBIQVZFX0tWTV9QRk5DQUNIRVxcbiAgMjc6XFx0XFx0c2VsZWN0IEhBVkVfS1ZNX0RJUlRZX1JJTkdfVFNPXFxuICAyODpcXHRcXHRzZWxlY3QgSEFWRV9LVk1fRElSVFlfUklOR19BQ1FfUkVMXFxuICAyOTpcXHRcXHRzZWxlY3QgSEFWRV9LVk1fSVJRX0JZUEFTU1xcbiAgMzA6XFx0XFx0c2VsZWN0IEhBVkVfS1ZNX0lSUV9ST1VUSU5HXFxuICAzMTpcXHRcXHRzZWxlY3QgSEFWRV9LVk1fUkVBRE9OTFlfTUVNXFxuICAzMjpcXHRcXHRzZWxlY3QgVkhPU1RfVEFTS1xcbiAgMzM6XFx0XFx0c2VsZWN0IEtWTV9BU1lOQ19QRlxcbiAgMzQ6XFx0XFx0c2VsZWN0IFVTRVJfUkVUVVJOX05PVElGSUVSXFxuICAzNTpcXHRcXHRzZWxlY3QgS1ZNX01NSU9cXG4gIDM2OlxcdFxcdHNlbGVjdCBTQ0hFRF9JTkZPXFxuICAzNzpcXHRcXHRzZWxlY3QgUEVSRl9FVkVOVFNcXG4gIDM4OlxcdFxcdHNlbGVjdCBHVUVTVF9QRVJGX0VWRU5UU1xcbiAgMzk6XFx0XFx0c2VsZWN0IFBFUkZfR1VFU1RfTUVESUFURURfUE1VXFxuICA0MDpcXHRcXHRzZWxlY3QgSEFWRV9LVk1fTVNJXFxuICA0MTpcXHRcXHRzZWxlY3QgSEFWRV9LVk1fQ1BVX1JFTEFYX0lOVEVSQ0VQVFxcbiAgNDI6XFx0XFx0c2VsZWN0IEhBVkVfS1ZNX05PX1BPTExcXG4gIDQzOlxcdFxcdHNlbGVjdCBWSVJUX1hGRVJfVE9fR1VFU1RfV09SS1xcbiAgNDQ6XFx0XFx0c2VsZWN0IEtWTV9HRU5FUklDX0RJUlRZTE9HX1JFQURfUFJPVEVDVFxcbiAgNDU6XFx0XFx0c2VsZWN0IEtWTV9WRklPXFxuICA0NjpcXHRcXHRzZWxlY3QgSEFWRV9LVk1fUE1fTk9USUZJRVIgaWYgUE1cXG4gIDQ3OlxcdFxcdHNlbGVjdCBLVk1fR0VORVJJQ19IQVJEV0FSRV9FTkFCTElOR1xcbiAgNDg6XFx0XFx0c2VsZWN0IEtWTV9HRU5FUklDX1BSRV9GQVVMVF9NRU1PUllcXG4gIDQ5OlxcdFxcdHNlbGVjdCBLVk1fV0VSUk9SIGlmIFdFUlJPUlxcbiAgNTA6XFx0XFx0c2VsZWN0IEtWTV9HVUVTVF9NRU1GRCBpZiBYODZfNjRcXG4gIDUxOlxcdFxcbiAgNTI6XFx0Y29uZmlnIEtWTVxcbiAgNTM6XFx0XFx0dHJpc3RhdGUgXFxcIktlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFxcXCJcXG4gIDU0OlxcdFxcdGRlcGVuZHMgb24gWDg2X0xPQ0FMX0FQSUNcXG4gIDU1OlxcdFxcdGhlbHBcXG4gIDU2OlxcdFxcdCAgU3VwcG9ydCBob3N0aW5nIGZ1bGx5IHZpcnR1YWxpemVkIGd1ZXN0IG1hY2hpbmVzIHVzaW5nIGhhcmR3YXJlXFxuICA1NzpcXHRcXHQgIHZpcnR1YWxpemF0aW9uIGV4dGVuc2lvbnMuICBZb3Ugd2lsbCBuZWVkIGEgZmFpcmx5IHJlY2VudFxcbiAgNTg6XFx0XFx0ICBwcm9jZXNzb3IgZXF1aXBwZWQgd2l0aCB2aXJ0dWFsaXphdGlvbiBleHRlbnNpb25zLiBZb3Ugd2lsbCBhbHNvXFxuICA1OTpcXHRcXHQgIG5lZWQgdG8gc2VsZWN0IG9uZSBvciBtb3JlIG9mIHRoZSBwcm9jZXNzb3IgbW9kdWxlcyBiZWxvdy5cXG4gIDYwOlxcdFxcbiAgNjE6XFx0XFx0ICBUaGlzIG1vZHVsZSBwcm92aWRlcyBhY2Nlc3MgdG8gdGhlIGhhcmR3YXJlIGNhcGFiaWxpdGllcyB0aHJvdWdoXFxuICA2MjpcXHRcXHQgIGEgY2hhcmFjdGVyIGRldmljZSBub2RlIG5hbWVkIC9kZXYva3ZtLlxcbiAgNjM6XFx0XFxuICA2NDpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxcbiAgNjU6XFx0XFx0ICB3aWxsIGJlIGNhbGxlZCBrdm0uXFxuICA2NjpcXHRcXG4gIDY3OlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gIDY4OlxcdFxcbiAgNjk6XFx0Y29uZmlnIEtWTV9XRVJST1JcXG4gIDcwOlxcdFxcdGJvb2wgXFxcIkNvbXBpbGUgS1ZNIHdpdGggLVdlcnJvclxcXCJcXG4gIDcxOlxcdFxcdCMgRGlzYWxsb3cgS1ZNJ3MgLVdlcnJvciBpZiBLQVNBTiBpcyBlbmFibGVkLCBlLmcuIHRvIGd1YXJkIGFnYWluc3RcXG4gIDcyOlxcdFxcdCMgcmFuZG9taXplZCBjb25maWdzIGZyb20gc2VsZWN0aW5nIEtWTV9XRVJST1I9eSwgd2hpY2ggZG9lc24ndCBwbGF5XFxuICA3MzpcXHRcXHQjIG5pY2Ugd2l0aCBLQVNBTi4gIEtBU0FOIGJ1aWxkcyBnZW5lcmF0ZXMgd2FybmluZ3MgZm9yIHRoZSBkZWZhdWx0XFxuICA3NDpcXHRcXHQjIEZSQU1FX1dBUk4sIGkuZS4gS1ZNX1dFUlJPUj15IHdpdGggS0FTQU49eSByZXF1aXJlcyBzcGVjaWFsIHR1bmluZy5cXG4gIDc1OlxcdFxcdCMgQnVpbGRpbmcgS1ZNIHdpdGggLVdlcnJvciBhbmQgS0FTQU4gaXMgc3RpbGwgZG9hYmxlIHZpYSBlbmFibGluZ1xcbiAgNzY6XFx0XFx0IyB0aGUga2VybmVsLXdpZGUgV0VSUk9SPXkuXFxuICA3NzpcXHRcXHRkZXBlbmRzIG9uIEtWTV9YODYgXFx1MDAyNlxcdTAwMjYgKChFWFBFUlQgXFx1MDAyNlxcdTAwMjYgIUtBU0FOKSB8fCBXRVJST1IpXFxuICA3ODpcXHRcXHRoZWxwXFxuICA3OTpcXHRcXHQgIEFkZCAtV2Vycm9yIHRvIHRoZSBidWlsZCBmbGFncyBmb3IgS1ZNLlxcbiAgODA6XFx0XFxuICA4MTpcXHRcXHQgIElmIGluIGRvdWJ0LCBzYXkgXFxcIk5cXFwiLlxcbiAgODI6XFx0XFxuICA4MzpcXHRjb25maWcgS1ZNX1NXX1BST1RFQ1RFRF9WTVxcbiAgODQ6XFx0XFx0Ym9vbCBcXFwiRW5hYmxlIHN1cHBvcnQgZm9yIEtWTSBzb2Z0d2FyZS1wcm90ZWN0ZWQgVk1zXFxcIlxcbiAgODU6XFx0XFx0ZGVwZW5kcyBvbiBFWFBFUlRcXG4gIDg2OlxcdFxcdGRlcGVuZHMgb24gS1ZNX1g4NiBcXHUwMDI2XFx1MDAyNiBYODZfNjRcXG4gIDg3OlxcdFxcdHNlbGVjdCBLVk1fR0VORVJJQ19NRU1PUllfQVRUUklCVVRFU1xcbiAgODg6XFx0XFx0aGVscFxcbiAgODk6XFx0XFx0ICBFbmFibGUgc3VwcG9ydCBmb3IgS1ZNIHNvZnR3YXJlLXByb3RlY3RlZCBWTXMuICBDdXJyZW50bHksIHNvZnR3YXJlLVxcbiAgOTA6XFx0XFx0ICBwcm90ZWN0ZWQgVk1zIGFyZSBwdXJlbHkgYSBkZXZlbG9wbWVudCBhbmQgdGVzdGluZyB2ZWhpY2xlIGZvclxcbiAgOTE6XFx0XFx0ICBLVk1fQ1JFQVRFX0dVRVNUX01FTUZELiAgQXR0ZW1wdGluZyB0byBydW4gYSBcXFwicmVhbFxcXCIgVk0gd29ya2xvYWQgYXMgYVxcbiAgOTI6XFx0XFx0ICBzb2Z0d2FyZS1wcm90ZWN0ZWQgVk0gd2lsbCBmYWlsIG1pc2VyYWJseS5cXG4gIDkzOlxcdFxcbiAgOTQ6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBcXFwiTlxcXCIuXFxuICA5NTpcXHRcXG4gIDk2OlxcdGNvbmZpZyBLVk1fSU5URUxcXG4gIDk3OlxcdFxcdHRyaXN0YXRlIFxcXCJLVk0gZm9yIEludGVsIChhbmQgY29tcGF0aWJsZSkgcHJvY2Vzc29ycyBzdXBwb3J0XFxcIlxcbiAgOTg6XFx0XFx0ZGVwZW5kcyBvbiBLVk0gXFx1MDAyNlxcdTAwMjYgSUEzMl9GRUFUX0NUTFxcbiAgOTk6XFx0XFx0c2VsZWN0IFg4Nl9GUkVEIGlmIFg4Nl82NFxcbiAxMDA6XFx0XFx0aGVscFxcbiAxMDE6XFx0XFx0ICBQcm92aWRlcyBzdXBwb3J0IGZvciBLVk0gb24gcHJvY2Vzc29ycyBlcXVpcHBlZCB3aXRoIEludGVsJ3MgVlRcXG4gMTAyOlxcdFxcdCAgZXh0ZW5zaW9ucywgYS5rLmEuIFZpcnR1YWwgTWFjaGluZSBFeHRlbnNpb25zIChWTVgpLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwNzowNToxMy4yMzkwMTY0ODdaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTQ5ODM5ODE5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipLVk0gRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ3ZlIHBpbnBvaW50ZWQgdGhlIGltcG9ydGFudCBrZXJuZWwgY29uZmlndXJhdGlvbnMgaGVyZTogYEtWTWAsIGBLVk1fSU5URUxgLCBhbmQgYEtWTV9BTURgLiBUaGVzZSBhcmUgdGhlIGZvdW5kYXRpb24gZm9yIHRoaXMgdGFyZ2V0LiBUaGUgYFdvcnRoRnV6emluZ2AgZmxhZyBpcyBzZXQgdG8gdHJ1ZSwgd2hpY2ggaXMgZ29vZDsgaXQgbWVhbnMgdGhpcyBpcyBhIHdvcnRod2hpbGUgYXJlYSB0byBpbnZlc3RpZ2F0ZS4gQW5kIHRoZW4gd2UgaGF2ZSB0aGUgc3BlY2lmaWMgZnVuY3Rpb25zIHRvIGZvY3VzIG9uOiBga3ZtX21tdV9jaGFuZ2VfbW11X3BhZ2VzYCBhbmQgYGt2bV92bV9pb2N0bF9zZXRfbnJfbW11X3BhZ2VzYC4gVGhvc2UgYXJlIHRoZSBlbnRyeSBwb2ludHMuXG5cbk5vdywgbGV0J3MgbWFrZSBzdXJlIGV2ZXJ5dGhpbmcgbGluZXMgdXAgd2l0aCBteSB0cmlhZ2UgcGhpbG9zb3BoeS4gRmlyc3QsIHJlYWNoYWJpbGl0eSBpcyBrZXkuIEkndmUgY29uZmlybWVkIHRoYXQgdGhlIHRhcmdldCBpb2N0bHMsIHBhcnRpY3VsYXJseSBgS1ZNX1NFVF9OUl9NTVVfUEFHRVNgLCBhcmUgc3RhbmRhcmQgc3lzY2FsbHMvaW9jdGxzIGFuZCBhcmUgdGhlcmVmb3JlIGxpa2VseSBmdXp6YWJsZSB3aXRoIHN5emthbGxlci4gVGhlIGBrdm1fbW11X2NoYW5nZV9tbXVfcGFnZXNgIHBhdGNoIGxvZ2ljIGlzIGludGVyZXN0aW5nOyBpdCBsb29rcyBsaWtlIHRoZXJlJ3MgYSBzYWZldHkgY2hlY2sgdXNpbmcgYG1heCgpYCB0byBhdm9pZCBwb3RlbnRpYWxseSBwcm9ibGVtYXRpYyBzaGFkb3cgcGFnZSBtYW5pcHVsYXRpb25zLiBBbmQgd2UgYXJlIGRlYWxpbmcgd2l0aCBhIGNvcmUgc3Vic3lzdGVtIGhlcmUsIHNwZWNpZmljYWxseSBgYXJjaC94ODYva3ZtL21tdS9tbXUuY2AuXG5cblNlY29uZCwgYFdvcnRoRnV6emluZ2AgaXMgYWxyZWFkeSBzZXQgdG8gdHJ1ZSwgc28gdGhhdCdzIGRvbmUuXG5cblRoaXJkLCBvdXIgZm9jdXMgc3ltYm9scyBhcmUgYGt2bV9tbXVfY2hhbmdlX21tdV9wYWdlc2AgYW5kIGBrdm1fdm1faW9jdGxfc2V0X25yX21tdV9wYWdlc2AuIFRoZXkncmUgbm90IHViaXF1aXRvdXM7IHRoZXkgYXJlIHF1aXRlIHNwZWNpZmljIHRvIHRoZSBsb2dpYywgd2hpY2ggbWFrZXMgdGhlbSBwcmltZSB0YXJnZXRzLlxuXG5Gb3VydGgsIHRoZSBgRW5hYmxlQ29uZmlnc2AgYXJlIHNwb3Qgb246IGBLVk1gLCBgS1ZNX0lOVEVMYCwgYW5kIGBLVk1fQU1EYC5cblxuQWxyaWdodCwgSSB0aGluayB0aGF0J3MgYWxsIHRoZSBjcml0ZXJpYS4gV2UncmUgcmVhZHkgdG8gcHJvY2VlZC4gTGV0J3MgY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzY5MSwiT3V0cHV0VG9rZW5zIjoxNjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNDAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwNzowNToxOC43Mzc0MTcwMjdaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NzM0OTA5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCIsXG4gICAgXCJLVk1fSU5URUxcIixcbiAgICBcIktWTV9BTURcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJrdm1fbW11X2NoYW5nZV9tbXVfcGFnZXNcIixcbiAgICBcImt2bV92bV9pb2N0bF9zZXRfbnJfbW11X3BhZ2VzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgc2hhZG93IE1NVSBwYWdlIGNvdW50IG1hbmFnZW1lbnQgbG9naWMgaW4geDg2IEtWTSAoYGt2bV9tbXVfY2hhbmdlX21tdV9wYWdlc2ApLCB3aGljaCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIEtWTSBpb2N0bHMgKHN1Y2ggYXMgS1ZNX1NFVF9OUl9NTVVfUEFHRVMpIGFuZCBtZW1vcnkgcmVnaW9uIGNvbmZpZ3VyYXRpb24uIEZ1enppbmcgaXMgcmVjb21tZW5kZWQgdG8gZW5zdXJlIGNvcnJlY3QgTU1VIHNoYWRvdyBwYWdlIGFsbG9jYXRpb24gYW5kIHphcHBpbmcgaW52YXJpYW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIixcbiAgICBcIktWTV9JTlRFTFwiLFxuICAgIFwiS1ZNX0FNRFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9tbXVfY2hhbmdlX21tdV9wYWdlc1wiLFxuICAgIFwia3ZtX3ZtX2lvY3RsX3NldF9ucl9tbXVfcGFnZXNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBzaGFkb3cgTU1VIHBhZ2UgY291bnQgbWFuYWdlbWVudCBsb2dpYyBpbiB4ODYgS1ZNIChga3ZtX21tdV9jaGFuZ2VfbW11X3BhZ2VzYCksIHdoaWNoIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgS1ZNIGlvY3RscyAoc3VjaCBhcyBLVk1fU0VUX05SX01NVV9QQUdFUykgYW5kIG1lbW9yeSByZWdpb24gY29uZmlndXJhdGlvbi4gRnV6emluZyBpcyByZWNvbW1lbmRlZCB0byBlbnN1cmUgY29ycmVjdCBNTVUgc2hhZG93IHBhZ2UgYWxsb2NhdGlvbiBhbmQgemFwcGluZyBpbnZhcmlhbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwNzowNToxOC44MTQ3NzMyMTdaIiwiU2VxIjoyMSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4NDY5MjE3NTkxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDc6MDU6MTguODE1MjQ0NjM3WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MTg0Njg3NDE3MzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGEgY2FsY3VsYXRpb24gaW4gYGt2bV9tbXVfY2hhbmdlX21tdV9wYWdlcygpYCB0byBwcmV2ZW50IGBuX21heF9tbXVfcGFnZXNgIGZyb20gYmVpbmcgc2V0IGxvd2VyIHRoYW4gYGdvYWxfbnJfbW11X3BhZ2VzYCBpZiBga3ZtX21tdV96YXBfb2xkZXN0X21tdV9wYWdlcygpYCB6YXBzIG1vcmUgc2hhZG93IHBhZ2VzIHRoYW4gcmVxdWVzdGVkLiBUaGlzIGNoYW5nZSBvbmx5IHVwZGF0ZXMgYSBzY2FsYXIgaW50ZWdlciB2YWx1ZSB0cmFja2luZyBNTVUgcGFnZSBsaW1pdHMgYW5kIGRvZXMgbm90IGludm9sdmUgbWVtb3J5IGFsbG9jYXRpb25zLCB1bmluaXRpYWxpemVkIHZhcmlhYmxlIHVzYWdlLCBvciBjb3B5aW5nIGtlcm5lbCBkYXRhIHRvIHVzZXJzcGFjZS4gVGhlcmVmb3JlLCB0aGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3Mgb3Iga2VybmVsIGluZm8tbGVha3MsIGFuZCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDllYzBjZDZiYzJlMDQ3ODY5YjJiN2ZhOGU4YWJlMzViYmM0NzZhNmVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIFNlcCAxMSAwNzowNDozNiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9tbXUvbW11LmMgYi9hcmNoL3g4Ni9rdm0vbW11L21tdS5jXG5pbmRleCAwNjRlY2MzM2I5MjY3Li5lZmViYTU4OTM2YTY4IDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL21tdS9tbXUuY1xuKysrIGIvYXJjaC94ODYva3ZtL21tdS9tbXUuY1xuQEAgLTI5MTMsNyArMjkxMyw3IEBAIHZvaWQga3ZtX21tdV9jaGFuZ2VfbW11X3BhZ2VzKHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgbG9uZyBnb2FsX25yX21tdV9wYWdlcylcbiBcdFx0a3ZtX21tdV96YXBfb2xkZXN0X21tdV9wYWdlcyhrdm0sIGt2bS1cdTAwM2VzdGF0Lm1tdV9zaGFkb3dfcGFnZXMgLVxuIFx0XHRcdFx0XHRcdCAgZ29hbF9ucl9tbXVfcGFnZXMpO1xuIFxuLVx0XHRnb2FsX25yX21tdV9wYWdlcyA9IGt2bS1cdTAwM2VzdGF0Lm1tdV9zaGFkb3dfcGFnZXM7XG4rXHRcdGdvYWxfbnJfbW11X3BhZ2VzID0gbWF4KGt2bS1cdTAwM2VzdGF0Lm1tdV9zaGFkb3dfcGFnZXMsIGdvYWxfbnJfbW11X3BhZ2VzKTtcbiBcdH1cbiBcbiBcdGt2bS1cdTAwM2VhcmNoLm5fbWF4X21tdV9wYWdlcyA9IGdvYWxfbnJfbW11X3BhZ2VzO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDc6MDU6MTguODE1MjQ1NTg3WiIsIlNlcSI6MjMsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjc5Nzc5NDEwNTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEtWTSBNTVUgUGFnZSBBbGxvY2F0aW9uIE9wdGltaXphdGlvbioqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzIEtWTSBjb2RlLiBNeSBpbml0aWFsIGltcHJlc3Npb24gaXMgdGhhdCB3ZSdyZSBsb29raW5nIGF0IGEgdHdlYWsgdG8gdGhlIE1NVSBwYWdlIGFsbG9jYXRpb24gc3RyYXRlZ3ksIHNwZWNpZmljYWxseSB3aXRoaW4gYGFyY2gveDg2L2t2bS9tbXUvbW11LmNgLiBUaGUgZGlmZiBpdHNlbGYgaXMgcXVpdGUgc21hbGwsIGJ1dCB0aGUgaW1wbGljYXRpb25zIGNvdWxkIGJlIHNpZ25pZmljYW50LCBzbyBsZXQncyBkaWcgZGVlcGVyLlxuXG5UaGUgY29yZSBvZiB0aGUgY2hhbmdlIGFwcGVhcnMgdG8gYmUgaW4gdGhlIGBrdm1fbW11X2NoYW5nZV9tbXVfcGFnZXNgIGZ1bmN0aW9uLiBUaGUgb3JpZ2luYWwgY29kZSB1bmNvbmRpdGlvbmFsbHkgc2V0IGBnb2FsX25yX21tdV9wYWdlc2AgdG8gYGt2bS1cdTAwM2VzdGF0Lm1tdV9zaGFkb3dfcGFnZXNgLiBOb3csIGl0J3MgdGFraW5nIHRoZSBgbWF4YCBvZiB0aGUgY3VycmVudCBzaGFkb3cgcGFnZXMgYW5kIHRoZSBgZ29hbF9ucl9tbXVfcGFnZXNgLiBUaGlzIHN1Z2dlc3RzIGEgcG90ZW50aWFsIG9wdGltaXphdGlvbiBvciBhIGZpeC4gSSdtIGd1ZXNzaW5nIHRoYXQgaW4gc29tZSBlZGdlIGNhc2VzLCB3ZSBtaWdodCBoYXZlIGJlZW4gdW5uZWNlc3NhcmlseSByZWR1Y2luZyB0aGUgbnVtYmVyIG9mIHNoYWRvdyBwYWdlcywgYW5kIHRoaXMgYG1heGAgaXMgbWVhbnQgdG8gcHJldmVudCB0aGF0LiBXZSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHNjZW5hcmlvcyB3aGVyZSBgZ29hbF9ucl9tbXVfcGFnZXNgIG1pZ2h0IGJlIHNtYWxsZXIgdGhhbiBga3ZtLVx1MDAzZXN0YXQubW11X3NoYWRvd19wYWdlc2AgdG8gZnVsbHkgZ3Jhc3AgdGhlIGNoYW5nZSdzIGltcGFjdC4gU3BlY2lmaWNhbGx5LCBob3cgYXJlIGBnb2FsX25yX21tdV9wYWdlc2AgYW5kIGBrdm0tXHUwMDNlc3RhdC5tbXVfc2hhZG93X3BhZ2VzYCBjYWxjdWxhdGVkPyBXaGF0IHRyaWdnZXJzIGBrdm1fbW11X2NoYW5nZV9tbXVfcGFnZXNgPyBJJ2xsIG5lZWQgdG8gdHJhY2UgdGhlIGNhbGwgZ3JhcGggYW5kIHVuZGVyc3RhbmQgdGhlIHN1cnJvdW5kaW5nIGxvZ2ljIHRvIGFzc2VzcyBpZiB0aGlzIGlzIGFkZHJlc3NpbmcgYSByZWFsIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2sgb3IgYSBmdW5jdGlvbmFsIGlzc3VlLiBJJ2xsIGFsc28gbmVlZCB0byBjb25zaWRlciBhbnkgcG90ZW50aWFsIHJlZ3Jlc3Npb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTcxLCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQ5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDc6MDU6MjYuNzkzMTg4OTE3WiIsIlNlcSI6MjQsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQwMjk0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJhcmNoL3g4Ni9rdm0vbW11L21tdS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI5MDAsXG4gIFwiTGluZUNvdW50XCI6IDM1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjI5MDA6XFx0XFx0XFx0cmV0dXJuIC1FTk9TUEM7XFxuMjkwMTpcXHRcXHRyZXR1cm4gMDtcXG4yOTAyOlxcdH1cXG4yOTAzOlxcdFxcbjI5MDQ6XFx0LypcXG4yOTA1OlxcdCAqIENoYW5naW5nIHRoZSBudW1iZXIgb2YgbW11IHBhZ2VzIGFsbG9jYXRlZCB0byB0aGUgdm1cXG4yOTA2OlxcdCAqIE5vdGU6IGlmIGdvYWxfbnJfbW11X3BhZ2VzIGlzIHRvbyBzbWFsbCwgeW91IHdpbGwgZ2V0IGRlYWQgbG9ja1xcbjI5MDc6XFx0ICovXFxuMjkwODpcXHR2b2lkIGt2bV9tbXVfY2hhbmdlX21tdV9wYWdlcyhzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgZ29hbF9ucl9tbXVfcGFnZXMpXFxuMjkwOTpcXHR7XFxuMjkxMDpcXHRcXHR3cml0ZV9sb2NrKFxcdTAwMjZrdm0tXFx1MDAzZW1tdV9sb2NrKTtcXG4yOTExOlxcdFxcbjI5MTI6XFx0XFx0aWYgKGt2bS1cXHUwMDNlc3RhdC5tbXVfc2hhZG93X3BhZ2VzIFxcdTAwM2UgZ29hbF9ucl9tbXVfcGFnZXMpIHtcXG4yOTEzOlxcdFxcdFxcdGt2bV9tbXVfemFwX29sZGVzdF9tbXVfcGFnZXMoa3ZtLCBrdm0tXFx1MDAzZXN0YXQubW11X3NoYWRvd19wYWdlcyAtXFxuMjkxNDpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgIGdvYWxfbnJfbW11X3BhZ2VzKTtcXG4yOTE1OlxcdFxcbjI5MTY6XFx0XFx0XFx0Z29hbF9ucl9tbXVfcGFnZXMgPSBtYXgoa3ZtLVxcdTAwM2VzdGF0Lm1tdV9zaGFkb3dfcGFnZXMsIGdvYWxfbnJfbW11X3BhZ2VzKTtcXG4yOTE3OlxcdFxcdH1cXG4yOTE4OlxcdFxcbjI5MTk6XFx0XFx0a3ZtLVxcdTAwM2VhcmNoLm5fbWF4X21tdV9wYWdlcyA9IGdvYWxfbnJfbW11X3BhZ2VzO1xcbjI5MjA6XFx0XFxuMjkyMTpcXHRcXHR3cml0ZV91bmxvY2soXFx1MDAyNmt2bS1cXHUwMDNlbW11X2xvY2spO1xcbjI5MjI6XFx0fVxcbjI5MjM6XFx0XFxuMjkyNDpcXHRib29sIF9fa3ZtX21tdV91bnByb3RlY3RfZ2ZuX2FuZF9yZXRyeShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGdwYV90IGNyMl9vcl9ncGEsXFxuMjkyNTpcXHRcXHRcXHRcXHRcXHQgICAgICAgYm9vbCBhbHdheXNfcmV0cnkpXFxuMjkyNjpcXHR7XFxuMjkyNzpcXHRcXHRzdHJ1Y3Qga3ZtICprdm0gPSB2Y3B1LVxcdTAwM2Vrdm07XFxuMjkyODpcXHRcXHRMSVNUX0hFQUQoaW52YWxpZF9saXN0KTtcXG4yOTI5OlxcdFxcdHN0cnVjdCBrdm1fbW11X3BhZ2UgKnNwO1xcbjI5MzA6XFx0XFx0Z3BhX3QgZ3BhID0gY3IyX29yX2dwYTtcXG4yOTMxOlxcdFxcdGJvb2wgciA9IGZhbHNlO1xcbjI5MzI6XFx0XFxuMjkzMzpcXHRcXHQvKlxcbjI5MzQ6XFx0XFx0ICogQmFpbCBlYXJseSBpZiB0aGVyZSBhcmVuJ3QgYW55IHdyaXRlLXByb3RlY3RlZCBzaGFkb3cgcGFnZXMgdG8gYXZvaWRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDc6MDU6MjYuNzkzNTkzOTU3WiIsIlNlcSI6MjUsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI0OTAwODkxOTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBga3ZtX21tdV9jaGFuZ2VfbW11X3BhZ2VzYCBGdW5jdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3cgYW5kIGltcGFjdCBvZiBga3ZtX21tdV9jaGFuZ2VfbW11X3BhZ2VzYC4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byB0cmFjayBpdHMgY2FsbCBzaXRlcy4gSSB3YW50IHRvIHNlZSAqZXhhY3RseSogd2hlcmUgYW5kIGhvdyB0aGUgTU1VIHBhZ2Ugc3RydWN0dXJlcyBhcmUgYmVpbmcgbW9kaWZpZWQuIFRoaXMgc3VnZ2VzdHMgSSBuZWVkIHRvIHRyYWNlIHRoZSBtb2RpZmljYXRpb25zIHRoZW1zZWx2ZXMuIElzIHRoaXMgZnVuY3Rpb24gcmVzcG9uc2libGUgZm9yIGFsbCBNTVUgcGFnZSBjaGFuZ2VzLCBvciBqdXN0IGNlcnRhaW4gdHlwZXM/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlIHdpdGhpbiB0aGUgd2lkZXIgS1ZNIE1NVSBhcmNoaXRlY3R1cmUuIFdoYXQgYXJlIHRoZSBrZXkgZGF0YSBzdHJ1Y3R1cmVzIHRoaXMgZnVuY3Rpb24gb3BlcmF0ZXMgb24sIGFuZCB3aGF0IGtpbmQgb2YgY29uc2lzdGVuY3kgbWVjaGFuaXNtcyBhcmUgaW4gcGxhY2Ugd2hlbiBpdCBtYW5pcHVsYXRlcyB0aG9zZSBzdHJ1Y3R1cmVzPyBVbHRpbWF0ZWx5LCBJIHdhbnQgdG8gaWRlbnRpZnkgcG90ZW50aWFsIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzIG9yIHN1YnRsZSBjb3JyZWN0bmVzcyBpc3N1ZXMgcmVsYXRlZCB0byBNTVUgcGFnZSB1cGRhdGVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDA0LCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwNzowNToyOS4yODM2ODgzNTlaIiwiU2VxIjoyNiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MTEwMDkyMjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX21tdV9jaGFuZ2VfbW11X3BhZ2VzXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS9tbXUuaD0xMzQ9dm9pZCBrdm1fbW11X2ludmFsaWRhdGVfbW1pb19zcHRlcyhzdHJ1Y3Qga3ZtICprdm0sIHU2NCBnZW4pO1xcbmFyY2gveDg2L2t2bS9tbXUuaDoxMzU6dm9pZCBrdm1fbW11X2NoYW5nZV9tbXVfcGFnZXMoc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBsb25nIGt2bV9ucl9tbXVfcGFnZXMpO1xcbmFyY2gveDg2L2t2bS9tbXUuaC0xMzYtdm9pZCBrdm1femFwX2dmbl9yYW5nZShzdHJ1Y3Qga3ZtICprdm0sIGdmbl90IGdmbl9zdGFydCwgZ2ZuX3QgZ2ZuX2VuZCk7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vbW11L21tdS5jPTI4ODE9c3RhdGljIGludCBtYWtlX21tdV9wYWdlc19hdmFpbGFibGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL21tdS9tbXUuYy0yOTA3LSAqL1xcbmFyY2gveDg2L2t2bS9tbXUvbW11LmM6MjkwODp2b2lkIGt2bV9tbXVfY2hhbmdlX21tdV9wYWdlcyhzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgZ29hbF9ucl9tbXVfcGFnZXMpXFxuYXJjaC94ODYva3ZtL21tdS9tbXUuYy0yOTA5LXtcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYz0zOTEwPXN0YXRpYyBpbnQga3ZtX3ZtX2lvY3RsX3NldF9ucl9tbXVfcGFnZXMoc3RydWN0IGt2bSAqa3ZtLFxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTM5MTctXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjM5MTg6XFx0a3ZtX21tdV9jaGFuZ2VfbW11X3BhZ2VzKGt2bSwga3ZtX25yX21tdV9wYWdlcyk7XFxuYXJjaC94ODYva3ZtL3g4Ni5jLTM5MTktXFx0a3ZtLVxcdTAwM2VhcmNoLm5fcmVxdWVzdGVkX21tdV9wYWdlcyA9IGt2bV9ucl9tbXVfcGFnZXM7XFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmM9MTAzMzg9dm9pZCBrdm1fYXJjaF9jb21taXRfbWVtb3J5X3JlZ2lvbihzdHJ1Y3Qga3ZtICprdm0sXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTAzNTEtXFx0XFx0bnJfbW11X3BhZ2VzID0gbWF4KG5yX21tdV9wYWdlcywgS1ZNX01JTl9BTExPQ19NTVVfUEFHRVMpO1xcbmFyY2gveDg2L2t2bS94ODYuYzoxMDM1MjpcXHRcXHRrdm1fbW11X2NoYW5nZV9tbXVfcGFnZXMoa3ZtLCBucl9tbXVfcGFnZXMpO1xcbmFyY2gveDg2L2t2bS94ODYuYy0xMDM1My1cXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDA3OjA1OjMwLjk5NDcwNzAwNloiLCJTZXEiOjI3LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2Mjg5MjU5NDUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTU1VIFBhZ2UgQWxsb2NhdGlvbiBBZGp1c3RtZW50KipcblxuT2theSwgbGV0J3MgYnJlYWsgZG93biB0aGlzIGNoYW5nZSB0byBga3ZtX21tdV9jaGFuZ2VfbW11X3BhZ2VzYC4gRXNzZW50aWFsbHksIHdlJ3JlIHR3ZWFraW5nIGhvdyB3ZSBkZXRlcm1pbmUgdGhlIG1heGltdW0gbnVtYmVyIG9mIE1NVSBwYWdlcyBhbGxvY2F0ZWQgdG8gYSBWTSwgc3BlY2lmaWNhbGx5IGFkanVzdGluZyBga3ZtLVx1MDAzZWFyY2gubl9tYXhfbW11X3BhZ2VzYC4gVGhlIGluaXRpYWwgYXBwcm9hY2ggdXNlZCBga3ZtLVx1MDAzZXN0YXQubW11X3NoYWRvd19wYWdlc2AgYXMgdGhlIHRhcmdldCwgYnV0IHRoYXQncyBiZWVuIG1vZGlmaWVkLlxuXG5Ob3csIGluc3RlYWQgb2YganVzdCBhc3NpZ25pbmcgYGt2bS1cdTAwM2VzdGF0Lm1tdV9zaGFkb3dfcGFnZXNgIHRvIGBnb2FsX25yX21tdV9wYWdlc2AsIHdlJ3JlIHVzaW5nIGBtYXgoa3ZtLVx1MDAzZXN0YXQubW11X3NoYWRvd19wYWdlcywgZ29hbF9ucl9tbXVfcGFnZXMpYC4gVGhlIHJlYXNvbiBmb3IgdGhpcyBpcyBjbGVhcjogYGt2bV9tbXVfemFwX29sZGVzdF9tbXVfcGFnZXNgIGNhbiwgdW5kZXIgY2VydGFpbiBjaXJjdW1zdGFuY2VzLCB6YXAgKm1vcmUqIHBhZ2VzIHRoYW4gcmVxdWVzdGVkLCBvciwgYWZ0ZXIgYSB6YXBwaW5nIG9wZXJhdGlvbiwgYG1tdV9zaGFkb3dfcGFnZXNgIG1pZ2h0IGJlIGxlc3MgdGhhbiBgZ29hbF9ucl9tbXVfcGFnZXNgLiBJZiB3ZSB3ZXJlIHRvIG5haXZlbHkgc2V0IGBnb2FsX25yX21tdV9wYWdlc2AgdG8gYGt2bS1cdTAwM2VzdGF0Lm1tdV9zaGFkb3dfcGFnZXNgIGluIHRoZXNlIHNpdHVhdGlvbnMsIHdlJ2QgaW5hZHZlcnRlbnRseSBsb3dlciB0aGUgbGltaXQsIGBuX21heF9tbXVfcGFnZXNgLCBiZWxvdyB0aGUgYWN0dWFsIGludGVuZGVkIGBnb2FsX25yX21tdV9wYWdlc2AuIFRoZSBgbWF4YCBmdW5jdGlvbiBpcyB0aGVyZSB0byBlbnN1cmUgdGhhdCBgbl9tYXhfbW11X3BhZ2VzYCByZW1haW5zIGF0IGxlYXN0IGFzIGxhcmdlIGFzIGBnb2FsX25yX21tdV9wYWdlc2AuIEl0J3MgYSBzYWZlZ3VhcmRpbmcgbWVjaGFuaXNtLlxuXG5Ob3csIGxldCdzIGNvbnNpZGVyIHBvdGVudGlhbCBLTVNBTiBpbXBsaWNhdGlvbnMsIGJlY2F1c2UgdGhhdCdzIGFsd2F5cyBhIGdvb2QgcHJhY3RpY2UuIElzIHRoZXJlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzc3Vlcz8gSSBkb24ndCBzZWUgYW55IG9idmlvdXMgb25lczpcblxuKiAgIEl0J3Mgbm90IGluaXRpYWxpemluZyBtZW1vcnkuXG4qICAgSXQncyBub3QgcGFzc2luZyB1bmluaXRpYWxpemVkIGRhdGEgdG8gdXNlciBzcGFjZS5cbiogICBJdCdzIG5vdCBpbnRyb2R1Y2luZyBvciBtb2RpZnlpbmcgYW55IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzIG9yIHN0cnVjdHMuXG4qICAgSXQncyBub3QgbWVzc2luZyB3aXRoIGJ1ZmZlciBib3VuZHMgb3IgcG90ZW50aWFsbHkgcmVhZGluZyB1bmluaXRpYWxpemVkIGJ1ZmZlcnMuXG5cblRoaXMgaXMgYSBzdHJhaWdodGZvcndhcmQgc2NhbGFyIGNhbGN1bGF0aW9uLCBmaXhpbmcgYSBsaW1pdCB0cmFja2luZyB2YWx1ZSwgYG5fbWF4X21tdV9wYWdlc2AuIFRoZXJlIGFyZSBubyBuZXcgYWxsb2NhdGlvbnMsIG5vIHN0cnVjdCBjb3BpZXMsIG5vIHVuaW5pdGlhbGl6ZWQgcmVhZHMsIGFuZCBkZWZpbml0ZWx5IG5vIGluZm8gbGVha3MgdG8gdXNlcnNwYWNlLiBBbGwgdGhpbmdzIGNvbnNpZGVyZWQsIE5lZWRzS01TQU4gc2hvdWxkIGJlIGZhbHNlLlxuXG5SaWdodCwgdGltZSB0byBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0Mjg3LCJPdXRwdXRUb2tlbnMiOjE2MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQxOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwNzowNTozNy4yODM5Njg4MjhaIiwiU2VxIjoyOCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjE1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGEgY2FsY3VsYXRpb24gaW4gYGt2bV9tbXVfY2hhbmdlX21tdV9wYWdlcygpYCB0byBwcmV2ZW50IGBuX21heF9tbXVfcGFnZXNgIGZyb20gYmVpbmcgc2V0IGxvd2VyIHRoYW4gYGdvYWxfbnJfbW11X3BhZ2VzYCBpZiBga3ZtX21tdV96YXBfb2xkZXN0X21tdV9wYWdlcygpYCB6YXBzIG1vcmUgc2hhZG93IHBhZ2VzIHRoYW4gcmVxdWVzdGVkLiBUaGlzIGNoYW5nZSBvbmx5IHVwZGF0ZXMgYSBzY2FsYXIgaW50ZWdlciB2YWx1ZSB0cmFja2luZyBNTVUgcGFnZSBsaW1pdHMgYW5kIGRvZXMgbm90IGludm9sdmUgbWVtb3J5IGFsbG9jYXRpb25zLCB1bmluaXRpYWxpemVkIHZhcmlhYmxlIHVzYWdlLCBvciBjb3B5aW5nIGtlcm5lbCBkYXRhIHRvIHVzZXJzcGFjZS4gVGhlcmVmb3JlLCB0aGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3Mgb3Iga2VybmVsIGluZm8tbGVha3MsIGFuZCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGEgY2FsY3VsYXRpb24gaW4gYGt2bV9tbXVfY2hhbmdlX21tdV9wYWdlcygpYCB0byBwcmV2ZW50IGBuX21heF9tbXVfcGFnZXNgIGZyb20gYmVpbmcgc2V0IGxvd2VyIHRoYW4gYGdvYWxfbnJfbW11X3BhZ2VzYCBpZiBga3ZtX21tdV96YXBfb2xkZXN0X21tdV9wYWdlcygpYCB6YXBzIG1vcmUgc2hhZG93IHBhZ2VzIHRoYW4gcmVxdWVzdGVkLiBUaGlzIGNoYW5nZSBvbmx5IHVwZGF0ZXMgYSBzY2FsYXIgaW50ZWdlciB2YWx1ZSB0cmFja2luZyBNTVUgcGFnZSBsaW1pdHMgYW5kIGRvZXMgbm90IGludm9sdmUgbWVtb3J5IGFsbG9jYXRpb25zLCB1bmluaXRpYWxpemVkIHZhcmlhYmxlIHVzYWdlLCBvciBjb3B5aW5nIGtlcm5lbCBkYXRhIHRvIHVzZXJzcGFjZS4gVGhlcmVmb3JlLCB0aGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3Mgb3Iga2VybmVsIGluZm8tbGVha3MsIGFuZCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowtjvfh[1] Phase: Succeeded StartedAt: 2026-09-11 07:05:49 +0000 UTC FinishedAt: 2026-09-11 07:05:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtjvfh[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-09-11 07:05:49 +0000 UTC FinishedAt: 2026-09-11 07:05:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtjvfh[2] Phase: Succeeded StartedAt: 2026-09-11 07:05:49 +0000 UTC FinishedAt: 2026-09-11 10:46:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtjvfh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d4b7fb647204f0c81dfeae2d1a708e4d858e0c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_mmu_change_mmu_pages","kvm_vm_ioctl_set_nr_mmu_pages"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d4b7fb647204f0c81dfeae2d1a708e4d858e0c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"a6903d7a-0ce0-4948-a78f-8223ce8066fb","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-09-11 07:05:49 +0000 UTC FinishedAt: 2026-09-11 10:46:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"d4b7fb647204f0c81dfeae2d1a708e4d858e0c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_mmu_change_mmu_pages","kvm_vm_ioctl_set_nr_mmu_pages"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"d4b7fb647204f0c81dfeae2d1a708e4d858e0c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"a6903d7a-0ce0-4948-a78f-8223ce8066fb","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowtjvfh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d4b7fb647204f0c81dfeae2d1a708e4d858e0c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_mmu_change_mmu_pages","kvm_vm_ioctl_set_nr_mmu_pages"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d4b7fb647204f0c81dfeae2d1a708e4d858e0c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"a6903d7a-0ce0-4948-a78f-8223ce8066fb","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-09-11 07:05:49 +0000 UTC FinishedAt: 2026-09-11 07:05:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtjvfh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d4b7fb647204f0c81dfeae2d1a708e4d858e0c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_mmu_change_mmu_pages","kvm_vm_ioctl_set_nr_mmu_pages"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d4b7fb647204f0c81dfeae2d1a708e4d858e0c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"a6903d7a-0ce0-4948-a78f-8223ce8066fb","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-09-11 07:05:49 +0000 UTC FinishedAt: 2026-09-11 07:05:53 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"d4b7fb647204f0c81dfeae2d1a708e4d858e0c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},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-workflowtjvfh/series-workflowtjvfh-convert-artifact-3243499115/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtjvfh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d4b7fb647204f0c81dfeae2d1a708e4d858e0c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_mmu_change_mmu_pages","kvm_vm_ioctl_set_nr_mmu_pages"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d4b7fb647204f0c81dfeae2d1a708e4d858e0c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"a6903d7a-0ce0-4948-a78f-8223ce8066fb","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-09-11 07:05:59 +0000 UTC FinishedAt: 2026-09-11 07:22:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtjvfh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d4b7fb647204f0c81dfeae2d1a708e4d858e0c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_mmu_change_mmu_pages","kvm_vm_ioctl_set_nr_mmu_pages"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d4b7fb647204f0c81dfeae2d1a708e4d858e0c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"a6903d7a-0ce0-4948-a78f-8223ce8066fb","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-09-11 07:05:59 +0000 UTC FinishedAt: 2026-09-11 07:22:36 +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:*8b5cb766-158a-4fc0-a755-568a8d767cda,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-workflowtjvfh/series-workflowtjvfh-convert-artifact-3243499115/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": "7e389040-a78b-4aee-916a-0b3c1bdb5d88", "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-workflowtjvfh/series-workflowtjvfh-build-action-2289455721/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtjvfh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d4b7fb647204f0c81dfeae2d1a708e4d858e0c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_mmu_change_mmu_pages","kvm_vm_ioctl_set_nr_mmu_pages"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d4b7fb647204f0c81dfeae2d1a708e4d858e0c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"a6903d7a-0ce0-4948-a78f-8223ce8066fb","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-09-11 07:05:59 +0000 UTC FinishedAt: 2026-09-11 07:22:26 +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:*8b5cb766-158a-4fc0-a755-568a8d767cda,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-workflowtjvfh/series-workflowtjvfh-convert-artifact-3243499115/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": "7e389040-a78b-4aee-916a-0b3c1bdb5d88", "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-workflowtjvfh/series-workflowtjvfh-build-action-2289455721/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtjvfh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d4b7fb647204f0c81dfeae2d1a708e4d858e0c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_mmu_change_mmu_pages","kvm_vm_ioctl_set_nr_mmu_pages"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d4b7fb647204f0c81dfeae2d1a708e4d858e0c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"a6903d7a-0ce0-4948-a78f-8223ce8066fb","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-09-11 07:22:36 +0000 UTC FinishedAt: 2026-09-11 07:22:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtjvfh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d4b7fb647204f0c81dfeae2d1a708e4d858e0c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_mmu_change_mmu_pages","kvm_vm_ioctl_set_nr_mmu_pages"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d4b7fb647204f0c81dfeae2d1a708e4d858e0c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"a6903d7a-0ce0-4948-a78f-8223ce8066fb","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-09-11 07:22:36 +0000 UTC FinishedAt: 2026-09-11 07:22:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtjvfh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d4b7fb647204f0c81dfeae2d1a708e4d858e0c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_mmu_change_mmu_pages","kvm_vm_ioctl_set_nr_mmu_pages"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d4b7fb647204f0c81dfeae2d1a708e4d858e0c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"a6903d7a-0ce0-4948-a78f-8223ce8066fb","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-09-11 07:22:36 +0000 UTC FinishedAt: 2026-09-11 07:22:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtjvfh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d4b7fb647204f0c81dfeae2d1a708e4d858e0c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_mmu_change_mmu_pages","kvm_vm_ioctl_set_nr_mmu_pages"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d4b7fb647204f0c81dfeae2d1a708e4d858e0c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"a6903d7a-0ce0-4948-a78f-8223ce8066fb","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-09-11 07:22:36 +0000 UTC FinishedAt: 2026-09-11 07:22:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"d4b7fb647204f0c81dfeae2d1a708e4d858e0c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"a6903d7a-0ce0-4948-a78f-8223ce8066fb","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},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-workflowtjvfh/series-workflowtjvfh-convert-artifact-1776880194/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtjvfh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d4b7fb647204f0c81dfeae2d1a708e4d858e0c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_mmu_change_mmu_pages","kvm_vm_ioctl_set_nr_mmu_pages"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d4b7fb647204f0c81dfeae2d1a708e4d858e0c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"a6903d7a-0ce0-4948-a78f-8223ce8066fb","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-09-11 07:22:46 +0000 UTC FinishedAt: 2026-09-11 07:24:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtjvfh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d4b7fb647204f0c81dfeae2d1a708e4d858e0c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_mmu_change_mmu_pages","kvm_vm_ioctl_set_nr_mmu_pages"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d4b7fb647204f0c81dfeae2d1a708e4d858e0c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"a6903d7a-0ce0-4948-a78f-8223ce8066fb","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-09-11 07:22:46 +0000 UTC FinishedAt: 2026-09-11 07:24:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*7e389040-a78b-4aee-916a-0b3c1bdb5d88,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-workflowtjvfh/series-workflowtjvfh-build-action-2289455721/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-workflowtjvfh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d4b7fb647204f0c81dfeae2d1a708e4d858e0c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_mmu_change_mmu_pages","kvm_vm_ioctl_set_nr_mmu_pages"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d4b7fb647204f0c81dfeae2d1a708e4d858e0c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"a6903d7a-0ce0-4948-a78f-8223ce8066fb","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-09-11 07:24:27 +0000 UTC FinishedAt: 2026-09-11 07:24:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtjvfh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d4b7fb647204f0c81dfeae2d1a708e4d858e0c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_mmu_change_mmu_pages","kvm_vm_ioctl_set_nr_mmu_pages"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d4b7fb647204f0c81dfeae2d1a708e4d858e0c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"a6903d7a-0ce0-4948-a78f-8223ce8066fb","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-09-11 07:24:27 +0000 UTC FinishedAt: 2026-09-11 07:24:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtjvfh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d4b7fb647204f0c81dfeae2d1a708e4d858e0c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_mmu_change_mmu_pages","kvm_vm_ioctl_set_nr_mmu_pages"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d4b7fb647204f0c81dfeae2d1a708e4d858e0c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"a6903d7a-0ce0-4948-a78f-8223ce8066fb","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-09-11 07:24:27 +0000 UTC FinishedAt: 2026-09-11 07:43:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtjvfh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d4b7fb647204f0c81dfeae2d1a708e4d858e0c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_mmu_change_mmu_pages","kvm_vm_ioctl_set_nr_mmu_pages"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d4b7fb647204f0c81dfeae2d1a708e4d858e0c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"a6903d7a-0ce0-4948-a78f-8223ce8066fb","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-09-11 07:24:27 +0000 UTC FinishedAt: 2026-09-11 07:43:44 +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:*8b5cb766-158a-4fc0-a755-568a8d767cda,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-workflowtjvfh/series-workflowtjvfh-convert-artifact-1776880194/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": "5be7701d-66dd-410a-be78-522f9219ccda", "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-workflowtjvfh/series-workflowtjvfh-build-action-2632432790/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtjvfh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d4b7fb647204f0c81dfeae2d1a708e4d858e0c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_mmu_change_mmu_pages","kvm_vm_ioctl_set_nr_mmu_pages"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d4b7fb647204f0c81dfeae2d1a708e4d858e0c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"a6903d7a-0ce0-4948-a78f-8223ce8066fb","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-09-11 07:24:27 +0000 UTC FinishedAt: 2026-09-11 07:43:34 +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:*8b5cb766-158a-4fc0-a755-568a8d767cda,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-workflowtjvfh/series-workflowtjvfh-convert-artifact-1776880194/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": "5be7701d-66dd-410a-be78-522f9219ccda", "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-workflowtjvfh/series-workflowtjvfh-build-action-2632432790/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtjvfh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d4b7fb647204f0c81dfeae2d1a708e4d858e0c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_mmu_change_mmu_pages","kvm_vm_ioctl_set_nr_mmu_pages"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d4b7fb647204f0c81dfeae2d1a708e4d858e0c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"a6903d7a-0ce0-4948-a78f-8223ce8066fb","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-09-11 07:43:44 +0000 UTC FinishedAt: 2026-09-11 07:43:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtjvfh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d4b7fb647204f0c81dfeae2d1a708e4d858e0c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_mmu_change_mmu_pages","kvm_vm_ioctl_set_nr_mmu_pages"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d4b7fb647204f0c81dfeae2d1a708e4d858e0c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"a6903d7a-0ce0-4948-a78f-8223ce8066fb","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-09-11 07:43:44 +0000 UTC FinishedAt: 2026-09-11 07:43:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtjvfh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d4b7fb647204f0c81dfeae2d1a708e4d858e0c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_mmu_change_mmu_pages","kvm_vm_ioctl_set_nr_mmu_pages"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d4b7fb647204f0c81dfeae2d1a708e4d858e0c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"a6903d7a-0ce0-4948-a78f-8223ce8066fb","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-09-11 07:43:44 +0000 UTC FinishedAt: 2026-09-11 07:45:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtjvfh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d4b7fb647204f0c81dfeae2d1a708e4d858e0c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_mmu_change_mmu_pages","kvm_vm_ioctl_set_nr_mmu_pages"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d4b7fb647204f0c81dfeae2d1a708e4d858e0c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"a6903d7a-0ce0-4948-a78f-8223ce8066fb","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-09-11 07:43:44 +0000 UTC FinishedAt: 2026-09-11 07:45:04 +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:*5be7701d-66dd-410a-be78-522f9219ccda,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-workflowtjvfh/series-workflowtjvfh-build-action-2632432790/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-workflowtjvfh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d4b7fb647204f0c81dfeae2d1a708e4d858e0c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_mmu_change_mmu_pages","kvm_vm_ioctl_set_nr_mmu_pages"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d4b7fb647204f0c81dfeae2d1a708e4d858e0c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"a6903d7a-0ce0-4948-a78f-8223ce8066fb","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-09-11 07:45:14 +0000 UTC FinishedAt: 2026-09-11 10:46:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtjvfh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d4b7fb647204f0c81dfeae2d1a708e4d858e0c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_mmu_change_mmu_pages","kvm_vm_ioctl_set_nr_mmu_pages"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d4b7fb647204f0c81dfeae2d1a708e4d858e0c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"a6903d7a-0ce0-4948-a78f-8223ce8066fb","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-09-11 07:45:14 +0000 UTC FinishedAt: 2026-09-11 10:46:35 +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-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_mmu_change_mmu_pages","kvm_vm_ioctl_set_nr_mmu_pages"],"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:*7e389040-a78b-4aee-916a-0b3c1bdb5d88,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*5be7701d-66dd-410a-be78-522f9219ccda,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-workflowtjvfh/series-workflowtjvfh-build-action-2289455721/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-workflowtjvfh/series-workflowtjvfh-build-action-2632432790/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowtjvfh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d4b7fb647204f0c81dfeae2d1a708e4d858e0c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_mmu_change_mmu_pages","kvm_vm_ioctl_set_nr_mmu_pages"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d4b7fb647204f0c81dfeae2d1a708e4d858e0c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"a6903d7a-0ce0-4948-a78f-8223ce8066fb","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-09-11 07:45:14 +0000 UTC FinishedAt: 2026-09-11 07:45:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtjvfh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d4b7fb647204f0c81dfeae2d1a708e4d858e0c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_mmu_change_mmu_pages","kvm_vm_ioctl_set_nr_mmu_pages"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d4b7fb647204f0c81dfeae2d1a708e4d858e0c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"a6903d7a-0ce0-4948-a78f-8223ce8066fb","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-09-11 07:45:14 +0000 UTC FinishedAt: 2026-09-11 07:45:20 +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-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_mmu_change_mmu_pages","kvm_vm_ioctl_set_nr_mmu_pages"],"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-workflowtjvfh/series-workflowtjvfh-convert-artifact-3456451703/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtjvfh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d4b7fb647204f0c81dfeae2d1a708e4d858e0c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_mmu_change_mmu_pages","kvm_vm_ioctl_set_nr_mmu_pages"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d4b7fb647204f0c81dfeae2d1a708e4d858e0c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"a6903d7a-0ce0-4948-a78f-8223ce8066fb","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-09-11 07:45:14 +0000 UTC FinishedAt: 2026-09-11 07:45:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtjvfh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d4b7fb647204f0c81dfeae2d1a708e4d858e0c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_mmu_change_mmu_pages","kvm_vm_ioctl_set_nr_mmu_pages"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d4b7fb647204f0c81dfeae2d1a708e4d858e0c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"a6903d7a-0ce0-4948-a78f-8223ce8066fb","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-09-11 07:45:14 +0000 UTC FinishedAt: 2026-09-11 07:45:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtjvfh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d4b7fb647204f0c81dfeae2d1a708e4d858e0c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_mmu_change_mmu_pages","kvm_vm_ioctl_set_nr_mmu_pages"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d4b7fb647204f0c81dfeae2d1a708e4d858e0c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"a6903d7a-0ce0-4948-a78f-8223ce8066fb","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-09-11 07:45:14 +0000 UTC FinishedAt: 2026-09-11 07:45:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtjvfh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d4b7fb647204f0c81dfeae2d1a708e4d858e0c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_mmu_change_mmu_pages","kvm_vm_ioctl_set_nr_mmu_pages"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d4b7fb647204f0c81dfeae2d1a708e4d858e0c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"a6903d7a-0ce0-4948-a78f-8223ce8066fb","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-09-11 07:45:24 +0000 UTC FinishedAt: 2026-09-11 10:46:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtjvfh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d4b7fb647204f0c81dfeae2d1a708e4d858e0c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_mmu_change_mmu_pages","kvm_vm_ioctl_set_nr_mmu_pages"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d4b7fb647204f0c81dfeae2d1a708e4d858e0c94","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD"],"series_id":"a6903d7a-0ce0-4948-a78f-8223ce8066fb","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-09-11 07:45:24 +0000 UTC FinishedAt: 2026-09-11 10:46:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*7e389040-a78b-4aee-916a-0b3c1bdb5d88,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*5be7701d-66dd-410a-be78-522f9219ccda,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-workflowtjvfh/series-workflowtjvfh-build-action-2289455721/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-workflowtjvfh/series-workflowtjvfh-build-action-2632432790/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-workflowtjvfh/series-workflowtjvfh-convert-artifact-3456451703/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,}