Name: series-workflowcj2f2 Phase: Succeeded StartedAt: 2026-08-14 10:49:09 +0000 UTC FinishedAt: 2026-08-14 11:49:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcj2f2[0] Phase: Succeeded StartedAt: 2026-08-14 10:49:09 +0000 UTC FinishedAt: 2026-08-14 11:06:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcj2f2[0].run-triage Phase: Succeeded StartedAt: 2026-08-14 10:49:09 +0000 UTC FinishedAt: 2026-08-14 11:06:41 +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": "a204badd8432f93b7e862e7dac6db0fe3d65f370", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "a204badd8432f93b7e862e7dac6db0fe3d65f370", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "bbc324d3-5785-4dc5-8fe4-73d0219fcc79" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "kvm_arch_vcpu_ioctl", "kvm_arch_init_vm" ], "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+CgkJCTx0ZD4yMDI2LzA4LzE0IDExOjA1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9hcmNoX3ZjcHVfaW9jdGwmIzM0OywKICAgICYjMzQ7a3ZtX2FyY2hfaW5pdF92bSYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBzcGlubG9jayAoYHB2X3NldHRpbmdfbG9ja2ApIHRvIHByb3RlY3QgdGhlIGBwdl9mZWF0dXJlc2AgZmllbGQgaW4gYHN0cnVjdCBrdm1fYXJjaGAgZnJvbSBjb25jdXJyZW50IG1vZGlmaWNhdGlvbnMgZHVyaW5nIHZDUFUgY29uZmlndXJhdGlvbi4gVGhpcyBpcyBhIGNvbmN1cnJlbmN5L2xvY2tpbmcgZml4IGFpbWVkIGF0IHByZXZlbnRpbmcgZGF0YSByYWNlcyBvciBpbmNvbnNpc3RlbnQgc3RhdGVzIGFjcm9zcyB2Q1BVcy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSwgb3IgY2hhbmdlcyB0byBib3VuZHMgY2hlY2tpbmcgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIENvbmN1cnJlbmN5IGlzc3VlcyBhbmQgZGF0YSByYWNlcyBhcmUgYmVzdCBkZXRlY3RlZCBieSB0b29scyBsaWtlIEtDU0FOIG9yIExPQ0tERVAsIHdoaWxlIEtBU0FOIGhhbmRsZXMgbWVtb3J5IGNvcnJ1cHRpb24uIEtNU0FOIGlzIHNwZWNpZmljYWxseSBmb3IgZGV0ZWN0aW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlLCB3aGljaCBpcyBub3QgcmVsZXZhbnQgdG8gdGhpcyBwYXRjaC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiBMb29uZ0FyY2ggS1ZNIENQVSBjb25maWd1cmF0aW9uIGJ5IGludHJvZHVjaW5nIGEgbmV3IHNwaW5sb2NrIGBwdl9zZXR0aW5nX2xvY2tgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIEtWTSBzdWJzeXN0ZW0gdGhhdCBpcyByZWFjaGFibGUgdmlhIFZDUFUgaW9jdGxzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDExOjA1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgM2NlN2YzZTc2MTM2MTVmYTQ4MDAwOGI3MzE4NWFlMmZlMTg3YTFiYVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDE0IDExOjA1OjM0IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmggYi9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXG5pbmRleCAyM2NmYmVjZWJiZDc5Li4zNTM4YTE5OWFhYzYyIDEwMDY0NFxuLS0tIGEvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2hvc3QuaFxuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2hvc3QuaFxuQEAgLTEyNSw2ICYjNDM7MTI1LDcgQEAgc3RydWN0IGt2bV9hcmNoIHtcbiBcdHVuc2lnbmVkIGludCAgcHRlX3NoaWZ0c1tNQVhfUEdUQUJMRV9MRVZFTFNdO1xuIFx0dW5zaWduZWQgaW50ICByb290X2xldmVsO1xuIFx0c3BpbmxvY2tfdCAgICBwaHlpZF9tYXBfbG9jaztcbiYjNDM7XHRzcGlubG9ja190ICAgIHB2X3NldHRpbmdfbG9jaztcbiBcdHN0cnVjdCBrdm1fcGh5aWRfbWFwICAqcGh5aWRfbWFwO1xuIFx0LyogRW5hYmxlZCBQViBmZWF0dXJlcyAqL1xuIFx0dW5zaWduZWQgbG9uZyBwdl9mZWF0dXJlcztcbmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jIGIvYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuY1xuaW5kZXggMjBjMjA3ZDgwZTMxYS4uZTQ3ZmE0NjNhOGJlYyAxMDA2NDRcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmNcbkBAIC0xMTY1LDEwICYjNDM7MTE2NSwxNCBAQCBzdGF0aWMgaW50IGt2bV9sb29uZ2FyY2hfY3B1Y2ZnX3NldF9hdHRyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbiBcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbiBcdFx0LyogQWxsIHZDUFVzIG5lZWQgc2V0IHRoZSBzYW1lIFBWIGZlYXR1cmVzICovXG4mIzQzO1x0XHRzcGluX2xvY2soXHUwMDI2a3ZtLVx1MDAzZWFyY2gucHZfc2V0dGluZ19sb2NrKTtcbiBcdFx0aWYgKChrdm0tXHUwMDNlYXJjaC5wdl9mZWF0dXJlcyBcdTAwMjYgTE9PTkdBUkNIX1BWX0ZFQVRfVVBEQVRFRClcbi1cdFx0XHRcdFx1MDAyNlx1MDAyNiAoKGt2bS1cdTAwM2VhcmNoLnB2X2ZlYXR1cmVzIFx1MDAyNiB2YWxpZCkgIT0gdmFsKSlcbiYjNDM7XHRcdFx0XHRcdTAwMjZcdTAwMjYgKChrdm0tXHUwMDNlYXJjaC5wdl9mZWF0dXJlcyBcdTAwMjYgdmFsaWQpICE9IHZhbCkpIHtcbiYjNDM7XHRcdFx0c3Bpbl91bmxvY2soXHUwMDI2a3ZtLVx1MDAzZWFyY2gucHZfc2V0dGluZ19sb2NrKTtcbiBcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHRcdH1cbiBcdFx0a3ZtLVx1MDAzZWFyY2gucHZfZmVhdHVyZXMgPSB2YWwgfCBMT09OR0FSQ0hfUFZfRkVBVF9VUERBVEVEO1xuJiM0MztcdFx0c3Bpbl91bmxvY2soXHUwMDI2a3ZtLVx1MDAzZWFyY2gucHZfc2V0dGluZ19sb2NrKTtcbiBcdFx0cmV0dXJuIDA7XG4gXHRkZWZhdWx0OlxuIFx0XHRyZXR1cm4gLUVOWElPO1xuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2t2bS92bS5jIGIvYXJjaC9sb29uZ2FyY2gva3ZtL3ZtLmNcbmluZGV4IDEzMTdjNzE4Zjg5NmEuLjg2YmE3ZDU0ZTgxZjggMTAwNjQ0XG4tLS0gYS9hcmNoL2xvb25nYXJjaC9rdm0vdm0uY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9sb29uZ2FyY2gva3ZtL3ZtLmNcbkBAIC03Niw2ICYjNDM7NzYsNyBAQCBpbnQga3ZtX2FyY2hfaW5pdF92bShzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgdHlwZSlcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXHR9XG4gXHRzcGluX2xvY2tfaW5pdChcdTAwMjZrdm0tXHUwMDNlYXJjaC5waHlpZF9tYXBfbG9jayk7XG4mIzQzO1x0c3Bpbl9sb2NrX2luaXQoXHUwMDI2a3ZtLVx1MDAzZWFyY2gucHZfc2V0dGluZ19sb2NrKTtcbiBcbiBcdGt2bV9pbml0X3ZtY3Moa3ZtKTtcbiBcdGt2bV92bV9pbml0X2ZlYXR1cmVzKGt2bSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTE6MDU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9hcmNoX3ZjcHVfaW9jdGwmIzM0OywKICAgICYjMzQ7a3ZtX2FyY2hfaW5pdF92bSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGluIExvb25nQXJjaCBLVk0gQ1BVIGNvbmZpZ3VyYXRpb24gYnkgaW50cm9kdWNpbmcgYSBuZXcgc3BpbmxvY2sgYHB2X3NldHRpbmdfbG9ja2AuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgS1ZNIHN1YnN5c3RlbSB0aGF0IGlzIHJlYWNoYWJsZSB2aWEgVkNQVSBpb2N0bHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAzY2U3ZjNlNzYxMzYxNWZhNDgwMDA4YjczMTg1YWUyZmUxODdhMWJhCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBBdWcgMTQgMTE6MDU6MzQgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oIGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2hvc3QuaAppbmRleCAyM2NmYmVjZWJiZDc5Li4zNTM4YTE5OWFhYzYyIDEwMDY0NAotLS0gYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgKQEAgLTEyNSw2ICYjNDM7MTI1LDcgQEAgc3RydWN0IGt2bV9hcmNoIHsKIAl1bnNpZ25lZCBpbnQgIHB0ZV9zaGlmdHNbTUFYX1BHVEFCTEVfTEVWRUxTXTsKIAl1bnNpZ25lZCBpbnQgIHJvb3RfbGV2ZWw7CiAJc3BpbmxvY2tfdCAgICBwaHlpZF9tYXBfbG9jazsKJiM0MzsJc3BpbmxvY2tfdCAgICBwdl9zZXR0aW5nX2xvY2s7CiAJc3RydWN0IGt2bV9waHlpZF9tYXAgICpwaHlpZF9tYXA7CiAJLyogRW5hYmxlZCBQViBmZWF0dXJlcyAqLwogCXVuc2lnbmVkIGxvbmcgcHZfZmVhdHVyZXM7CmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jIGIvYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYwppbmRleCAyMGMyMDdkODBlMzFhLi5lNDdmYTQ2M2E4YmVjIDEwMDY0NAotLS0gYS9hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMKQEAgLTExNjUsMTAgJiM0MzsxMTY1LDE0IEBAIHN0YXRpYyBpbnQga3ZtX2xvb25nYXJjaF9jcHVjZmdfc2V0X2F0dHIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LAogCQkJcmV0dXJuIC1FSU5WQUw7CiAKIAkJLyogQWxsIHZDUFVzIG5lZWQgc2V0IHRoZSBzYW1lIFBWIGZlYXR1cmVzICovCiYjNDM7CQlzcGluX2xvY2soJmFtcDtrdm0tJmd0O2FyY2gucHZfc2V0dGluZ19sb2NrKTsKIAkJaWYgKChrdm0tJmd0O2FyY2gucHZfZmVhdHVyZXMgJmFtcDsgTE9PTkdBUkNIX1BWX0ZFQVRfVVBEQVRFRCkKLQkJCQkmYW1wOyZhbXA7ICgoa3ZtLSZndDthcmNoLnB2X2ZlYXR1cmVzICZhbXA7IHZhbGlkKSAhPSB2YWwpKQomIzQzOwkJCQkmYW1wOyZhbXA7ICgoa3ZtLSZndDthcmNoLnB2X2ZlYXR1cmVzICZhbXA7IHZhbGlkKSAhPSB2YWwpKSB7CiYjNDM7CQkJc3Bpbl91bmxvY2soJmFtcDtrdm0tJmd0O2FyY2gucHZfc2V0dGluZ19sb2NrKTsKIAkJCXJldHVybiAtRUlOVkFMOwomIzQzOwkJfQogCQlrdm0tJmd0O2FyY2gucHZfZmVhdHVyZXMgPSB2YWwgfCBMT09OR0FSQ0hfUFZfRkVBVF9VUERBVEVEOwomIzQzOwkJc3Bpbl91bmxvY2soJmFtcDtrdm0tJmd0O2FyY2gucHZfc2V0dGluZ19sb2NrKTsKIAkJcmV0dXJuIDA7CiAJZGVmYXVsdDoKIAkJcmV0dXJuIC1FTlhJTzsKZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2t2bS92bS5jIGIvYXJjaC9sb29uZ2FyY2gva3ZtL3ZtLmMKaW5kZXggMTMxN2M3MThmODk2YS4uODZiYTdkNTRlODFmOCAxMDA2NDQKLS0tIGEvYXJjaC9sb29uZ2FyY2gva3ZtL3ZtLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9sb29uZ2FyY2gva3ZtL3ZtLmMKQEAgLTc2LDYgJiM0Mzs3Niw3IEBAIGludCBrdm1fYXJjaF9pbml0X3ZtKHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgbG9uZyB0eXBlKQogCQlyZXR1cm4gLUVOT01FTTsKIAl9CiAJc3Bpbl9sb2NrX2luaXQoJmFtcDtrdm0tJmd0O2FyY2gucGh5aWRfbWFwX2xvY2spOwomIzQzOwlzcGluX2xvY2tfaW5pdCgmYW1wO2t2bS0mZ3Q7YXJjaC5wdl9zZXR0aW5nX2xvY2spOwogCiAJa3ZtX2luaXRfdm1jcyhrdm0pOwogCWt2bV92bV9pbml0X2ZlYXR1cmVzKGt2bSk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDExOjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1NzEKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAzMDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgTG9vbmdBcmNoIEtWTSBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBhZmZlY3RpbmcgYGFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmhgLCBgYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuY2AsIGFuZCBgYXJjaC9sb29uZ2FyY2gva3ZtL3ZtLmNgLiBJdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIHNwaW5sb2NrIChgcHZfc2V0dGluZ19sb2NrYCkgcHJvdGVjdGluZyBga3ZtLSZndDthcmNoLnB2X2ZlYXR1cmVzYCBpbiBga3ZtX2xvb25nYXJjaF9jcHVjZmdfc2V0X2F0dHIoKWAuIEl0JiMzOTtzIGZpeGluZyBhIHJhY2UgY29uZGl0aW9uIGluIHRoZSBMb29uZ0FyY2ggS1ZNIGltcGxlbWVudGF0aW9uLiBIbW0sIGlzIHRoaXMgc29tZXRoaW5nIHdlIHNob3VsZCBiZSBmdXp6aW5nPwoKQWJzb2x1dGVseS4gSXQmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZSAqaW4gS1ZNKiBvbiAqTG9vbmdBcmNoKi4gVGhhdCYjMzk7cyBhIHRhcmdldC1yaWNoIGVudmlyb25tZW50IGZvciBmdXp6aW5nLCBpZiB3ZSBjYW4gcmVhY2ggaXQuCgpXYWl0LCB0aGUgYmlnZ2VyIHF1ZXN0aW9uIGlzLCBjYW4gd2UgKmFjdHVhbGx5KiBmdXp6IExvb25nQXJjaCBLVk0gd2l0aCBzb21ldGhpbmcgbGlrZSBzeXprYWxsZXI/IFN5emthbGxlciBpcyBwcmV0dHkgdmVyc2F0aWxlLCBzdXBwb3J0cyBzZXZlcmFsIGFyY2hpdGVjdHVyZXMsIGJ1dCBJIHVzdWFsbHkgc2VlIGZ1enppbmcgb24geDg2XzY0LCBBUk02NCwgUklTQy1WLCBldGMuCgpCdXQgdGhpcyBpcyBLVk0sIGEgY29yZSBrZXJuZWwgZmVhdHVyZSwgYW5kIHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGEgc3BlY2lmaWMgYXJjaGl0ZWN0dXJlLiBJdCYjMzk7cyB3b3J0aCBwdXJzdWluZy4gTGV0JiMzOTtzIHNlZSBpZiB3ZSBjYW4gcmVhY2ggaXQuIE15IGZpcnN0IGNoZWNrIGlzIGBrdm1fbG9vbmdhcmNoX2NwdWNmZ19zZXRfYXR0cmAuIE9rYXksIEkgcmVtZW1iZXIgaXQmIzM5O3MgY2FsbGVkIHRocm91Z2ggS1ZNIGlvY3Rscy4gR29vZCwgdGhhdCYjMzk7cyBhIGRlZmluZWQgYXR0YWNrIHN1cmZhY2UuCgpOb3csIGxldCYjMzk7cyBjb25maXJtIHRoZSByZWxldmFudCBjb25maWcgaXMgZW5hYmxlZDogYENPTkZJR19LVk1gIG9uIExvb25nQXJjaC4gQmluZ28uCgpMZXQgbWUgcmVmcmVzaCBteSBtZW1vcnkgb2Ygd2hhdCYjMzk7cyBoYXBwZW5pbmcgaW4gYGt2bV9sb29uZ2FyY2hfY3B1Y2ZnX3NldF9hdHRyYCBkaXJlY3RseSwgc28gSSYjMzk7bGwgcXVpY2tseSBsb29rIGF0IHRoZSBzb3VyY2UgaW4gYGFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDExOjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9sb29uZ2FyY2hfY3B1Y2ZnX3NldF9hdHRyJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM9MTEzMj1zdGF0aWMgaW50IGt2bV9sb29uZ2FyY2hfdmNwdV9nZXRfYXR0cihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMTUwLVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzoxMTUxOnN0YXRpYyBpbnQga3ZtX2xvb25nYXJjaF9jcHVjZmdfc2V0X2F0dHIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMTUyLVx0XHRcdFx0XHQgc3RydWN0IGt2bV9kZXZpY2VfYXR0ciAqYXR0cilcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jPTEyMTk9c3RhdGljIGludCBrdm1fbG9vbmdhcmNoX3ZjcHVfc2V0X2F0dHIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTIyNS1cdGNhc2UgS1ZNX0xPT05HQVJDSF9WQ1BVX0NQVUNGRzpcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6MTIyNjpcdFx0cmV0ID0ga3ZtX2xvb25nYXJjaF9jcHVjZmdfc2V0X2F0dHIodmNwdSwgYXR0cik7XG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEyMjctXHRcdGJyZWFrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDExOjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2MjMKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiA2MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipUcmFjaW5nIHRoZSBga3ZtX2xvb25nYXJjaF92Y3B1X3NldF9hdHRyYCBGdW5jdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYGt2bV9sb29uZ2FyY2hfdmNwdV9zZXRfYXR0cmAgYW5kIGltbWVkaWF0ZWx5IEkgc2VlIGl0JiMzOTtzIGNhbGxpbmcgYGt2bV9sb29uZ2FyY2hfY3B1Y2ZnX3NldF9hdHRyYC4gVGhhdCYjMzk7cyB0aGUgbGluayBJIG5lZWQgdG8gdW5kZXJzdGFuZC4gTXkgbmV4dCBzdGVwIGlzIGNsZWFyOiBJIG5lZWQgdG8gdHJhY2UgKndoZXJlKiBga3ZtX2xvb25nYXJjaF92Y3B1X3NldF9hdHRyYCBpdHNlbGYgaXMgYmVpbmcgY2FsbGVkLiBUaGF0JiMzOTtsbCBwcm92aWRlIHRoZSB1cHN0cmVhbSBjb250ZXh0IGFuZCB0ZWxsIG1lIHdoYXQmIzM5O3MgdHJpZ2dlcmluZyB0aGlzIHdob2xlIHByb2Nlc3MuIFdoZXJlIGRvZXMgdGhpcyBmdW5jdGlvbiBmaXQgaW50byB0aGUgbGFyZ2VyIEtWTSBvbiBMb29uZ0FyY2ggcGljdHVyZT8gTGV0JiMzOTtzIGdldCB0byB0aGUgY2FsbCBzaXRlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxMTowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1fbG9vbmdhcmNoX3ZjcHVfc2V0X2F0dHImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYz0xMTgyPXN0YXRpYyBpbnQga3ZtX2xvb25nYXJjaF9wdnRpbWVfc2V0X2F0dHIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTIxOC1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6MTIxOTpzdGF0aWMgaW50IGt2bV9sb29uZ2FyY2hfdmNwdV9zZXRfYXR0cihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEyMjAtXHRcdFx0XHQgICAgICAgc3RydWN0IGt2bV9kZXZpY2VfYXR0ciAqYXR0cilcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jPTEyMzg9bG9uZyBrdm1fYXJjaF92Y3B1X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLFxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTI5OS1cdFx0XHRicmVhaztcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6MTMwMDpcdFx0ciA9IGt2bV9sb29uZ2FyY2hfdmNwdV9zZXRfYXR0cih2Y3B1LCBcdTAwMjZhdHRyKTtcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTMwMS1cdFx0YnJlYWs7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTE6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDE1NAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDgyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKkFuYWx5emluZyB0aGUgS1ZNIExvb25nQXJjaCBWQ1BVIEF0dHJpYnV0ZSBTZXR0aW5nKioKCk9rYXksIHNvIEkmIzM5O20gdHJhY2luZyB0aHJvdWdoIHRoaXMgY29kZSwgYW5kIGl0IGxvb2tzIGxpa2UgYGt2bV9hcmNoX3ZjcHVfaW9jdGxgIGlzIHRoZSBlbnRyeSBwb2ludCwgdWx0aW1hdGVseSBsZWFkaW5nIHRvIGBrdm1fbG9vbmdhcmNoX3ZjcHVfc2V0X2F0dHJgLiAgVGhhdCBtYWtlcyBzZW5zZTsgYGlvY3RsYCBpcyB0aGUgY2xhc3NpYyB3YXkgdG8gY29udHJvbCB0aGluZ3MuIEFuZCB0aGlzLCBpbiB0dXJuLCBjYWxscyBga3ZtX2xvb25nYXJjaF9jcHVjZmdfc2V0X2F0dHJgLiBZZXAsIHRoYXQgc2VxdWVuY2UgY29uZmlybXMgdGhpcyAqaXMqIGEgcGF0aCBhY2Nlc3NpYmxlIHRocm91Z2ggS1ZNIGlvY3Rscy4gSSYjMzk7bSBzYXRpc2ZpZWQgdGhhdCYjMzk7cyB0aGUgbGluay4KCk5vdywgdG8gdW5kZXJzdGFuZCB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCBhbnkgcmVsYXRlZCBkZXBlbmRlbmNpZXMsIEkgbmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZyBmaWxlLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgaW4gYGFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnYC4gSXTigJlsbCBiZSBpbnRlcmVzdGluZyB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBjb21waWxlLXRpbWUgZmxhZ3MgZ292ZXJuaW5nIHRoaXMgZnVuY3Rpb25hbGl0eS4gVGhhdCBzaG91bGQgY2xlYXIgdXAgdGhlIGJ1aWxkIGNvbmRpdGlvbnMgZm9yIGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDExOjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBLVk0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxuYXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWctMTktXG5hcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZzoyMDpjb25maWcgS1ZNXG5hcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZy0yMS1cdHRyaXN0YXRlIFwmIzM0O0tlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDExOjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ1ODYKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipLVk0gQ29uZmlndXJhdGlvbiBBbmFseXNpcyoqCgpPa2F5LCBzbyB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uIGlzIGRlZmluaXRlbHkgS1ZNLiBCdXQgSSBuZWVkIHRvIGJlIHRob3JvdWdoLiBJcyB0aGVyZSAqYW55KiBvdGhlciBjb25maWd1cmF0aW9uIHBvc3NpYmx5IGFjdGl2ZT8gSSBuZWVkIHRvIHJ1bGUgdGhhdCBvdXQuIExldCYjMzk7cyBkaWcgaW4gYW5kIGV4YW1pbmUgdGhlIGRlcGVuZGVuY2llczsgSSYjMzk7bGwgc3RhcnQgYnkgY2hlY2tpbmcgdGhlIEtjb25maWcgZmlsZSBmb3IgdGhlIExvb25nQXJjaCBhcmNoaXRlY3R1cmUsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGt2bSBkaXJlY3RvcnkgYXQgYGFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnYC4gVGhpcyBzaG91bGQgcmV2ZWFsIGFueSBjb25kaXRpb25hbCBkZXBlbmRlbmNpZXMgb3Igb3B0aW9ucyB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50LiBJdCYjMzk7cyB0aW1lIHRvIHVuZGVyc3RhbmQgdGhlIGNvbXBsZXRlIHBpY3R1cmUgb2YgdGhpcyBrdm0gY29uZmlndXJhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTE6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDthcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiAgIDI6XHQjXG4gICAzOlx0IyBLVk0gY29uZmlndXJhdGlvblxuICAgNDpcdCNcbiAgIDU6XHRcbiAgIDY6XHRzb3VyY2UgXCYjMzQ7dmlydC9rdm0vS2NvbmZpZ1wmIzM0O1xuICAgNzpcdFxuICAgODpcdG1lbnVjb25maWcgVklSVFVBTElaQVRJT05cbiAgIDk6XHRcdGJvb2wgXCYjMzQ7VmlydHVhbGl6YXRpb25cJiMzNDtcbiAgMTA6XHRcdGhlbHBcbiAgMTE6XHRcdCAgU2F5IFkgaGVyZSB0byBnZXQgdG8gc2VlIG9wdGlvbnMgZm9yIHVzaW5nIHlvdXIgTGludXggaG9zdCB0byBydW5cbiAgMTI6XHRcdCAgb3RoZXIgb3BlcmF0aW5nIHN5c3RlbXMgaW5zaWRlIHZpcnR1YWwgbWFjaGluZXMgKGd1ZXN0cykuXG4gIDEzOlx0XHQgIFRoaXMgb3B0aW9uIGFsb25lIGRvZXMgbm90IGFkZCBhbnkga2VybmVsIGNvZGUuXG4gIDE0Olx0XG4gIDE1Olx0XHQgIElmIHlvdSBzYXkgTiwgYWxsIG9wdGlvbnMgaW4gdGhpcyBzdWJtZW51IHdpbGwgYmUgc2tpcHBlZCBhbmRcbiAgMTY6XHRcdCAgZGlzYWJsZWQuXG4gIDE3Olx0XG4gIDE4Olx0aWYgVklSVFVBTElaQVRJT05cbiAgMTk6XHRcbiAgMjA6XHRjb25maWcgS1ZNXG4gIDIxOlx0XHR0cmlzdGF0ZSBcJiMzNDtLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcJiMzNDtcbiAgMjI6XHRcdGRlcGVuZHMgb24gQVNfSEFTX0xWWl9FWFRFTlNJT04gXHUwMDI2XHUwMDI2IDY0QklUXG4gIDIzOlx0XHRzZWxlY3QgSEFWRV9LVk1fRElSVFlfUklOR19BQ1FfUkVMXG4gIDI0Olx0XHRzZWxlY3QgSEFWRV9LVk1fSVJRX1JPVVRJTkdcbiAgMjU6XHRcdHNlbGVjdCBIQVZFX0tWTV9JUlFDSElQXG4gIDI2Olx0XHRzZWxlY3QgSEFWRV9LVk1fTVNJXG4gIDI3Olx0XHRzZWxlY3QgSEFWRV9LVk1fUkVBRE9OTFlfTUVNXG4gIDI4Olx0XHRzZWxlY3QgS1ZNX0NPTU1PTlxuICAyOTpcdFx0c2VsZWN0IEtWTV9HRU5FUklDX0RJUlRZTE9HX1JFQURfUFJPVEVDVFxuICAzMDpcdFx0c2VsZWN0IEtWTV9HRU5FUklDX0hBUkRXQVJFX0VOQUJMSU5HXG4gIDMxOlx0XHRzZWxlY3QgS1ZNX01NSU9cbiAgMzI6XHRcdHNlbGVjdCBWSVJUX1hGRVJfVE9fR1VFU1RfV09SS1xuICAzMzpcdFx0c2VsZWN0IFNDSEVEX0lORk9cbiAgMzQ6XHRcdHNlbGVjdCBHVUVTVF9QRVJGX0VWRU5UUyBpZiBQRVJGX0VWRU5UU1xuICAzNTpcdFx0aGVscFxuICAzNjpcdFx0ICBTdXBwb3J0IGhvc3RpbmcgdmlydHVhbGl6ZWQgZ3Vlc3QgbWFjaGluZXMgdXNpbmdcbiAgMzc6XHRcdCAgaGFyZHdhcmUgdmlydHVhbGl6YXRpb24gZXh0ZW5zaW9ucy4gWW91IHdpbGwgbmVlZFxuICAzODpcdFx0ICBhIHByb2Nlc3NvciBlcXVpcHBlZCB3aXRoIHZpcnR1YWxpemF0aW9uIGV4dGVuc2lvbnMuXG4gIDM5Olx0XG4gIDQwOlx0XHQgIElmIHVuc3VyZSwgc2F5IE4uXG4gIDQxOlx0XG4gIDQyOlx0ZW5kaWYgIyBWSVJUVUFMSVpBVElPTlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxMTowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MzI1CgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogMjMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTG9vbmdBcmNoIEtWTSBQYXRjaCBmb3IgU3l6a2FsbGVyIEludGVncmF0aW9uKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgY2xlYXJseSByZWxhdGVkIHRvIEtWTSBjb25maWd1cmF0aW9uLCBteSBmaXJzdCB0aG91Z2h0IGlzIHRvIGVuc3VyZSB0aGUgY29uZmlndXJhdGlvbnMgYXJlIGNvcnJlY3QuIFRoaXMgaXMgZm9yIHRoZSBMb29uZ0FyY2ggYXJjaGl0ZWN0dXJlLCBzbyBJIG5lZWQgdG8gYXNzZXNzIHdoZXRoZXIgU3l6a2FsbGVyIGlzIGNhcGFibGUgb2YgZnV6emluZyB0aGlzIGFyY2hpdGVjdHVyZSBlZmZlY3RpdmVseS4gSSBrbm93IFN5emthbGxlciBoYXMgc29tZSBMb29uZ0FyY2ggc3VwcG9ydCwgYnV0IGl0JiMzOTtzIG9mdGVuIG1vcmUgYWJvdXQgdGhlIHByb3ZpZGVkIGNvbmZpZ3MgYW5kIHN5bWJvbHM7IHRoZSBmdXp6aW5nIGluZnJhc3RydWN0dXJlIHRha2VzIG92ZXIgZnJvbSB0aGVyZSwgYXNzdW1pbmcgaXQgaGFzIHRoZSBidWlsdC1pbiBhYmlsaXR5LiBUaGUga2V5IGNvbmZpZ3VyYXRpb25zIEkgbmVlZCB0byBmb2N1cyBvbiBhcmUgdGhlIEtWTSBzZXR0aW5ncy4KCk5vdywgSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgc3BlY2lmaWMgZnVuY3Rpb25zIGltcGxpY2F0ZWQgYnkgdGhlIHBhdGNoOiBga3ZtX2xvb25nYXJjaF92Y3B1X3NldF9hdHRyYCBhbmQgYGt2bV9sb29uZ2FyY2hfY3B1Y2ZnX3NldF9hdHRyYC4gTXkgYXBwcm9hY2ggaXMgdG8gc2VlIHdoaWNoIGZ1bmN0aW9uIEkgY2FuIHVzZSBpbiB0aGUgZnV6emluZyBwcm9jZXNzLiBga3ZtX2xvb25nYXJjaF9jcHVjZmdfc2V0X2F0dHJgIGxvb2tzIHN0YXRpYywgd2hpY2ggbWVhbnMgSSBjYW4mIzM5O3QgZGlyZWN0bHkgdXNlIGl0LiBUaGlzIGJyaW5ncyBtZSB0byBlaXRoZXIgYGt2bV9hcmNoX3ZjcHVfaW9jdGxgIG9yLCBpZiBga3ZtX2xvb25nYXJjaF92Y3B1X3NldF9hdHRyYCB3YXNuJiMzOTt0IGlubGluZWQsIEkgd291bGQgdHJ5IGl0LiBJIG5lZWQgdG8gcXVpY2tseSBjb25maXJtIHRoYXQgYGt2bV9sb29uZ2FyY2hfdmNwdV9zZXRfYXR0cmAgaXMgaW5kZWVkIHN0YXRpYy4gQWgsIHllcywgaXQgaXMuCgpUaGF0IGxlYXZlcyBga3ZtX2FyY2hfdmNwdV9pb2N0bGAgYXMgdGhlIHByaW1hcnkgY2FuZGlkYXRlLiBMZXQgbWUgdmVyaWZ5IGl0JiMzOTtzIG5vdCBzdGF0aWMuIEdvb2QsIGl0IGlzIG5vbi1zdGF0aWMuIFRoaXMgbG9va3MgbGlrZSB0aGUgbWFpbiBlbnRyeSBwb2ludCB0byBmb2N1cyBvbiBmb3IgdGhpcyBmdXp6aW5nIGVmZm9ydC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTE6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX2FyY2hfdmNwdV9pb2N0bCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNjQzIGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5hcmNoL2FybTY0L2t2bS9hcm0uYz03ODE9c3RhdGljIGJvb2wga3ZtX2FybV92Y3B1X3N1c3BlbmRlZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9hcm02NC9rdm0vYXJtLmMtNzg1LVxuYXJjaC9hcm02NC9rdm0vYXJtLmM6Nzg2OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9tcHN0YXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvYXJtNjQva3ZtL2FybS5jLTc4Ny1cdFx0XHRcdCAgICBzdHJ1Y3Qga3ZtX21wX3N0YXRlICptcF9zdGF0ZSlcbi0tXG5hcmNoL2FybTY0L2t2bS9hcm0uYy03OTMtXG5hcmNoL2FybTY0L2t2bS9hcm0uYzo3OTQ6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X21wc3RhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9hcm02NC9rdm0vYXJtLmMtNzk1LVx0XHRcdFx0ICAgIHN0cnVjdCBrdm1fbXBfc3RhdGUgKm1wX3N0YXRlKVxuLS1cbmFyY2gvYXJtNjQva3ZtL2FybS5jPTEwNjY9c3RhdGljIGludCBrdm1fdmNwdV9zdXNwZW5kKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL2FybTY0L2t2bS9hcm0uYy0xMDkyLVx0ICogT3RoZXJ3aXNlLCB3ZSB3ZXJlIHVuYmxvY2tlZCB0byBwcm9jZXNzIGEgZGlmZmVyZW50IGV2ZW50LCBzdWNoIGFzIGFcbmFyY2gvYXJtNjQva3ZtL2FybS5jOjEwOTM6XHQgKiBwZW5kaW5nIHNpZ25hbC4gUmV0dXJuIDEgYW5kIGFsbG93IGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuKCkgdG9cbmFyY2gvYXJtNjQva3ZtL2FybS5jLTEwOTQtXHQgKiBwcm9jZXNzIHRoZSBldmVudC5cbi0tXG5hcmNoL2FybTY0L2t2bS9hcm0uYz0xMjMwPXN0YXRpYyBpbnQgbm9pbnN0ciBrdm1fYXJtX3ZjcHVfZW50ZXJfZXhpdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9hcm02NC9rdm0vYXJtLmMtMTI0MS0vKipcbmFyY2gvYXJtNjQva3ZtL2FybS5jOjEyNDI6ICoga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW4gLSB0aGUgbWFpbiBWQ1BVIHJ1biBmdW5jdGlvbiB0byBleGVjdXRlIGd1ZXN0IGNvZGVcbmFyY2gvYXJtNjQva3ZtL2FybS5jLTEyNDMtICogQHZjcHU6XHRUaGUgVkNQVSBwb2ludGVyXG4tLVxuYXJjaC9hcm02NC9rdm0vYXJtLmMtMTI1MC0gKi9cbmFyY2gvYXJtNjQva3ZtL2FybS5jOjEyNTE6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbmFyY2gvYXJtNjQva3ZtL2FybS5jLTEyNTIte1xuLS1cbmFyY2gvYXJtNjQva3ZtL2FybS5jPTE2ODA9c3RhdGljIGludCBrdm1fdmNwdV9zZXRfdGFyZ2V0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbi0tXG5hcmNoL2FybTY0L2t2bS9hcm0uYy0xNzAyLVxuYXJjaC9hcm02NC9rdm0vYXJtLmM6MTcwMzpzdGF0aWMgaW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfdmNwdV9pbml0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvYXJtNjQva3ZtL2FybS5jLTE3MDQtXHRcdFx0XHRcdCBzdHJ1Y3Qga3ZtX3ZjcHVfaW5pdCAqaW5pdClcbi0tXG5hcmNoL2FybTY0L2t2bS9hcm0uYz0xODA2PXN0YXRpYyBpbnQga3ZtX2FybV92Y3B1X3NldF9ldmVudHMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuLS1cbmFyY2gvYXJtNjQva3ZtL2FybS5jLTE4MjMtXG5hcmNoL2FybTY0L2t2bS9hcm0uYzoxODI0Omxvbmcga3ZtX2FyY2hfdmNwdV9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCxcbmFyY2gvYXJtNjQva3ZtL2FybS5jLTE4MjUtXHRcdFx0IHVuc2lnbmVkIGludCBpb2N0bCwgdW5zaWduZWQgbG9uZyBhcmcpXG4tLVxuYXJjaC9hcm02NC9rdm0vYXJtLmMtMTgzOS1cbmFyY2gvYXJtNjQva3ZtL2FybS5jOjE4NDA6XHRcdHIgPSBrdm1fYXJjaF92Y3B1X2lvY3RsX3ZjcHVfaW5pdCh2Y3B1LCBcdTAwMjZpbml0KTtcbmFyY2gvYXJtNjQva3ZtL2FybS5jLTE4NDEtXHRcdGJyZWFrO1xuLS1cbmFyY2gvYXJtNjQva3ZtL2d1ZXN0LmM9NTExPXN0YXRpYyBpbnQgc2V0X3N2ZV9yZWcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBjb25zdCBzdHJ1Y3Qga3ZtX29uZV9yZWcgKnJlZylcbi0tXG5hcmNoL2FybTY0L2t2bS9ndWVzdC5jLTUzNS1cbmFyY2gvYXJtNjQva3ZtL2d1ZXN0LmM6NTM2OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9yZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9yZWdzICpyZWdzKVxuYXJjaC9hcm02NC9rdm0vZ3Vlc3QuYy01Mzcte1xuLS1cbmFyY2gvYXJtNjQva3ZtL2d1ZXN0LmMtNTQwLVxuYXJjaC9hcm02NC9rdm0vZ3Vlc3QuYzo1NDE6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3JlZ3MgKnJlZ3MpXG5hcmNoL2FybTY0L2t2bS9ndWVzdC5jLTU0Mi17XG4tLVxuYXJjaC9hcm02NC9rdm0vZ3Vlc3QuYz03MTk9aW50IGt2bV9hcm1fc2V0X3JlZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGNvbnN0IHN0cnVjdCBrdm1fb25lX3JlZyAqcmVnKVxuLS1cbmFyY2gvYXJtNjQva3ZtL2d1ZXN0LmMtNzM1LVxuYXJjaC9hcm02NC9rdm0vZ3Vlc3QuYzo3MzY6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvYXJtNjQva3ZtL2d1ZXN0LmMtNzM3LVx0XHRcdFx0ICBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncylcbi0tXG5hcmNoL2FybTY0L2t2bS9ndWVzdC5jLTc0MS1cbmFyY2gvYXJtNjQva3ZtL2d1ZXN0LmM6NzQyOmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL2FybTY0L2t2bS9ndWVzdC5jLTc0My1cdFx0XHRcdCAgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXG4tLVxuYXJjaC9hcm02NC9rdm0vZ3Vlc3QuYz04MjU9dTMyIF9fYXR0cmlidXRlX2NvbnN0X18ga3ZtX3RhcmdldF9jcHUodm9pZClcbi0tXG5hcmNoL2FybTY0L2t2bS9ndWVzdC5jLTg1NC1cbmFyY2gvYXJtNjQva3ZtL2d1ZXN0LmM6ODU1OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9mcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX2ZwdSAqZnB1KVxuYXJjaC9hcm02NC9rdm0vZ3Vlc3QuYy04NTYte1xuLS1cbmFyY2gvYXJtNjQva3ZtL2d1ZXN0LmMtODU5LVxuYXJjaC9hcm02NC9rdm0vZ3Vlc3QuYzo4NjA6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X2ZwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fZnB1ICpmcHUpXG5hcmNoL2FybTY0L2t2bS9ndWVzdC5jLTg2MS17XG4tLVxuYXJjaC9hcm02NC9rdm0vZ3Vlc3QuYy04NjQtXG5hcmNoL2FybTY0L2t2bS9ndWVzdC5jOjg2NTppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF90cmFuc2xhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9hcm02NC9rdm0vZ3Vlc3QuYy04NjYtXHRcdFx0XHQgIHN0cnVjdCBrdm1fdHJhbnNsYXRpb24gKnRyKVxuLS1cbmFyY2gvYXJtNjQva3ZtL2d1ZXN0LmMtODcxLS8qKlxuYXJjaC9hcm02NC9rdm0vZ3Vlc3QuYzo4NzI6ICoga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfZ3Vlc3RfZGVidWcgLSBzZXQgdXAgZ3Vlc3QgZGVidWdnaW5nXG5hcmNoL2FybTY0L2t2bS9ndWVzdC5jLTg3My0gKiBAdmNwdTogdGhlIHZDUFUgcG9pbnRlclxuLS1cbmFyY2gvYXJtNjQva3ZtL2d1ZXN0LmMtODgwLSAqL1xuYXJjaC9hcm02NC9rdm0vZ3Vlc3QuYzo4ODE6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X2d1ZXN0X2RlYnVnKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvYXJtNjQva3ZtL2d1ZXN0LmMtODgyLVx0XHRcdFx0XHRzdHJ1Y3Qga3ZtX2d1ZXN0X2RlYnVnICpkYmcpXG4tLVxuYXJjaC9hcm02NC9rdm0vaHlwL252aGUvc3dpdGNoLmM9MjI2PXN0YXRpYyBpbmxpbmUgYm9vbCBmaXh1cF9ndWVzdF9leGl0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0ICpleGl0X2NvZGUpXG4tLVxuYXJjaC9hcm02NC9rdm0vaHlwL252aGUvc3dpdGNoLmMtMjM4LVx0ICogaXQuICBUaGUgY2hlY2sgYmVsb3cgaXMgYmFzZWQgb24gdGhlIG9uZSBpblxuYXJjaC9hcm02NC9rdm0vaHlwL252aGUvc3dpdGNoLmM6MjM5Olx0ICoga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW4oKS5cbmFyY2gvYXJtNjQva3ZtL2h5cC9udmhlL3N3aXRjaC5jLTI0MC1cdCAqL1xuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM9NDIwPXZtX2ZhdWx0X3Qga3ZtX2FyY2hfdmNwdV9mYXVsdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCB2bV9mYXVsdCAqdm1mKVxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtNDI0LVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzo0MjU6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfdHJhbnNsYXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtNDI2LVx0XHRcdFx0ICBzdHJ1Y3Qga3ZtX3RyYW5zbGF0aW9uICp0cilcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jPTQ0ND1pbnQga3ZtX2FyY2hfdmNwdV9kdW1wX3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtNDY2LVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzo0Njc6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X21wc3RhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy00NjgtXHRcdFx0XHRzdHJ1Y3Qga3ZtX21wX3N0YXRlICptcF9zdGF0ZSlcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTQ3NC1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6NDc1OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9tcHN0YXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtNDc2LVx0XHRcdFx0c3RydWN0IGt2bV9tcF9zdGF0ZSAqbXBfc3RhdGUpXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy00OTAtXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jOjQ5MTppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfZ3Vlc3RfZGVidWcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy00OTItXHRcdFx0XHRcdHN0cnVjdCBrdm1fZ3Vlc3RfZGVidWcgKmRiZylcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jPTk4ND1zdGF0aWMgaW50IGt2bV9zZXRfcmVnKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgY29uc3Qgc3RydWN0IGt2bV9vbmVfcmVnICpyZWcpXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMDAxLVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzoxMDAyOmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMDAzLXtcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEwMDYtXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jOjEwMDc6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEwMDgte1xuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTAxMS1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6MTAxMjppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcmVncyAqcmVncylcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTAxMy17XG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMDIzLVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzoxMDI0OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9yZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9yZWdzICpyZWdzKVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMDI1LXtcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jPTEyMTk9c3RhdGljIGludCBrdm1fbG9vbmdhcmNoX3ZjcHVfc2V0X2F0dHIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTIzNy1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6MTIzODpsb25nIGt2bV9hcmNoX3ZjcHVfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEyMzktXHRcdFx0IHVuc2lnbmVkIGludCBpb2N0bCwgdW5zaWduZWQgbG9uZyBhcmcpXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMzEwLVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzoxMzExOmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9mcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX2ZwdSAqZnB1KVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMzEyLXtcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEzMjItXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jOjEzMjM6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X2ZwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fZnB1ICpmcHUpXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEzMjQte1xuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM9MTgyOT12b2lkIGt2bV9hcmNoX3ZjcHVfcHV0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTE4NTItXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jOjE4NTM6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTg1NC17XG4tLVxuYXJjaC9taXBzL2t2bS9taXBzLmM9Mzg2PXZvaWQga3ZtX2FyY2hfdmNwdV9kZXN0cm95KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL21pcHMva3ZtL21pcHMuYy0zOTctXG5hcmNoL21pcHMva3ZtL21pcHMuYzozOTg6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X2d1ZXN0X2RlYnVnKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvbWlwcy9rdm0vbWlwcy5jLTM5OS1cdFx0XHRcdFx0c3RydWN0IGt2bV9ndWVzdF9kZWJ1ZyAqZGJnKVxuLS1cbmFyY2gvbWlwcy9rdm0vbWlwcy5jPTQxMT1zdGF0aWMgaW50IG5vaW5zdHIga3ZtX21pcHNfdmNwdV9lbnRlcl9leGl0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL21pcHMva3ZtL21pcHMuYy00MjEtXG5hcmNoL21pcHMva3ZtL21pcHMuYzo0MjI6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbmFyY2gvbWlwcy9rdm0vbWlwcy5jLTQyMy17XG4tLVxuYXJjaC9taXBzL2t2bS9taXBzLmM9NDc5PWludCBrdm1fdmNwdV9pb2N0bF9pbnRlcnJ1cHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuLS1cbmFyY2gvbWlwcy9rdm0vbWlwcy5jLTUxNC1cbmFyY2gvbWlwcy9rdm0vbWlwcy5jOjUxNTppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfbXBzdGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL21pcHMva3ZtL21pcHMuYy01MTYtXHRcdFx0XHQgICAgc3RydWN0IGt2bV9tcF9zdGF0ZSAqbXBfc3RhdGUpXG4tLVxuYXJjaC9taXBzL2t2bS9taXBzLmMtNTIwLVxuYXJjaC9taXBzL2t2bS9taXBzLmM6NTIxOmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9tcHN0YXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvbWlwcy9rdm0vbWlwcy5jLTUyMi1cdFx0XHRcdCAgICBzdHJ1Y3Qga3ZtX21wX3N0YXRlICptcF9zdGF0ZSlcbi0tXG5hcmNoL21pcHMva3ZtL21pcHMuYz04OTg9bG9uZyBrdm1fYXJjaF92Y3B1X3VubG9ja2VkX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLCB1bnNpZ25lZCBpbnQgaW9jdGwsXG4tLVxuYXJjaC9taXBzL2t2bS9taXBzLmMtOTE3LVxuYXJjaC9taXBzL2t2bS9taXBzLmM6OTE4Omxvbmcga3ZtX2FyY2hfdmNwdV9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCwgdW5zaWduZWQgaW50IGlvY3RsLFxuYXJjaC9taXBzL2t2bS9taXBzLmMtOTE5LVx0XHRcdCB1bnNpZ25lZCBsb25nIGFyZylcbi0tXG5hcmNoL21pcHMva3ZtL21pcHMuYz05ODc9aW50IGt2bV9hcmNoX3ZtX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLCB1bnNpZ25lZCBpbnQgaW9jdGwsIHVuc2lnbmVkIGxvbmcgYXJnKVxuLS1cbmFyY2gvbWlwcy9rdm0vbWlwcy5jLTk5OC1cbmFyY2gvbWlwcy9rdm0vbWlwcy5jOjk5OTppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfc3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9taXBzL2t2bS9taXBzLmMtMTAwMC1cdFx0XHRcdCAgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXG4tLVxuYXJjaC9taXBzL2t2bS9taXBzLmMtMTAwNC1cbmFyY2gvbWlwcy9rdm0vbWlwcy5jOjEwMDU6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvbWlwcy9rdm0vbWlwcy5jLTEwMDYtXHRcdFx0XHQgIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxuLS1cbmFyY2gvbWlwcy9rdm0vbWlwcy5jPTEwMTE9dm9pZCBrdm1fYXJjaF92Y3B1X3Bvc3RjcmVhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gvbWlwcy9rdm0vbWlwcy5jLTEwMTQtXG5hcmNoL21pcHMva3ZtL21pcHMuYzoxMDE1OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9mcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX2ZwdSAqZnB1KVxuYXJjaC9taXBzL2t2bS9taXBzLmMtMTAxNi17XG4tLVxuYXJjaC9taXBzL2t2bS9taXBzLmMtMTAxOS1cbmFyY2gvbWlwcy9rdm0vbWlwcy5jOjEwMjA6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X2ZwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fZnB1ICpmcHUpXG5hcmNoL21pcHMva3ZtL21pcHMuYy0xMDIxLXtcbi0tXG5hcmNoL21pcHMva3ZtL21pcHMuYz0xMDgyPWludCBrdm1fYXJjaF92Y3B1X2R1bXBfcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9taXBzL2t2bS9taXBzLmMtMTExMi1cbmFyY2gvbWlwcy9rdm0vbWlwcy5jOjExMTM6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3JlZ3MgKnJlZ3MpXG5hcmNoL21pcHMva3ZtL21pcHMuYy0xMTE0LXtcbi0tXG5hcmNoL21pcHMva3ZtL21pcHMuYy0xMTI5LVxuYXJjaC9taXBzL2t2bS9taXBzLmM6MTEzMDppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcmVncyAqcmVncylcbmFyY2gvbWlwcy9rdm0vbWlwcy5jLTExMzEte1xuLS1cbmFyY2gvbWlwcy9rdm0vbWlwcy5jLTExNDYtXG5hcmNoL21pcHMva3ZtL21pcHMuYzoxMTQ3OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3RyYW5zbGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL21pcHMva3ZtL21pcHMuYy0xMTQ4LVx0XHRcdFx0ICBzdHJ1Y3Qga3ZtX3RyYW5zbGF0aW9uICp0cilcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szcy5jPTUyNT12b2lkIGt2bXBwY19zdWJhcmNoX3ZjcHVfdW5pbml0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szcy5jLTUyOC1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzLmM6NTI5OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szcy5jLTUzMC1cdFx0XHRcdCAgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYy01NDAtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szcy5jOjU0MTppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYy01NDItXHRcdFx0XHQgIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzLmMtNTUyLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYzo1NTM6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3JlZ3MgKnJlZ3MpXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szcy5jLTU1NC17XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYy01ODAtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szcy5jOjU4MTppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcmVncyAqcmVncylcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzLmMtNTgyLXtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szcy5jLTYwNy1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzLmM6NjA4OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9mcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX2ZwdSAqZnB1KVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYy02MDkte1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzLmMtNjEyLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYzo2MTM6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X2ZwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fZnB1ICpmcHUpXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szcy5jLTYxNC17XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYz04MDc9aW50IGt2bXBwY192Y3B1X3J1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYy04MTEtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szcy5jOjgxMjppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF90cmFuc2xhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYy04MTMtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBrdm1fdHJhbnNsYXRpb24gKnRyKVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzLmMtODE3LVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYzo4MTg6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X2d1ZXN0X2RlYnVnKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzLmMtODE5LVx0XHRcdFx0XHRzdHJ1Y3Qga3ZtX2d1ZXN0X2RlYnVnICpkYmcpXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYz0xOTY4PXN0YXRpYyBpbnQga3ZtcHBjX2hhbmRsZV9uZXN0ZWRfZXhpdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yMDk5LVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyMTAwOnN0YXRpYyBpbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfc3JlZ3NfaHYoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yMTAxLVx0XHRcdFx0XHQgICAgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yMTE0LVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyMTE1OnN0YXRpYyBpbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3NfaHYoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yMTE2LVx0XHRcdFx0XHQgICAgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYz02NTEzPXN0YXRpYyBzdHJ1Y3Qga3ZtcHBjX29wcyBrdm1fb3BzX2h2ID0ge1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo2NTE0Olx0LmdldF9zcmVncyA9IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3NyZWdzX2h2LFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo2NTE1Olx0LnNldF9zcmVncyA9IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3NyZWdzX2h2LFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy02NTE2LVx0LmdldF9vbmVfcmVnID0ga3ZtcHBjX2dldF9vbmVfcmVnX2h2LFxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX3ByLmM9MTEzNT1pbnQga3ZtcHBjX2hhbmRsZV9leGl0X3ByKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgaW50IGV4aXRfbnIpXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfcHIuYy0xNDU0LVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfcHIuYzoxNDU1OnN0YXRpYyBpbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfc3JlZ3NfcHIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfcHIuYy0xNDU2LVx0XHRcdFx0XHQgICAgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfcHIuYy0xNDgxLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfcHIuYzoxNDgyOnN0YXRpYyBpbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3NfcHIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfcHIuYy0xNDgzLVx0XHRcdFx0XHQgICAgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfcHIuYz0yMDQ1PXN0YXRpYyBzdHJ1Y3Qga3ZtcHBjX29wcyBrdm1fb3BzX3ByID0ge1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfcHIuYzoyMDQ2Olx0LmdldF9zcmVncyA9IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3NyZWdzX3ByLFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfcHIuYzoyMDQ3Olx0LnNldF9zcmVncyA9IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3NyZWdzX3ByLFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfcHIuYy0yMDQ4LVx0LmdldF9vbmVfcmVnID0ga3ZtcHBjX2dldF9vbmVfcmVnX3ByLFxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9va2UuYz0xNDQyPXZvaWQga3ZtcHBjX3N1YmFyY2hfdmNwdV91bmluaXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9va2UuYy0xNDQ2LVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rZS5jOjE0NDc6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3JlZ3MgKnJlZ3MpXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmMtMTQ0OC17XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rZS5jLTE0NzctXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmM6MTQ3ODppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcmVncyAqcmVncylcbmFyY2gvcG93ZXJwYy9rdm0vYm9va2UuYy0xNDc5LXtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmM9MTYwNT1pbnQga3ZtcHBjX3NldF9zcmVnc19pdm9yKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rZS5jLTE2MjktXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmM6MTYzMDppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfc3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rZS5jLTE2MzEtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9va2UuYy0xNjQ2LVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rZS5jOjE2NDc6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvcG93ZXJwYy9rdm0vYm9va2UuYy0xNjQ4LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncylcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmM9MTcyNz1pbnQga3ZtcHBjX3NldF9vbmVfcmVnKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGlkLFxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9va2UuYy0xNzk1LVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rZS5jOjE3OTY6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X2ZwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fZnB1ICpmcHUpXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmMtMTc5Ny17XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rZS5jLTE4MDAtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmM6MTgwMTppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfZnB1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9mcHUgKmZwdSlcbmFyY2gvcG93ZXJwYy9rdm0vYm9va2UuYy0xODAyLXtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmMtMTgwNS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9va2UuYzoxODA2OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3RyYW5zbGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmMtMTgwNy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGt2bV90cmFuc2xhdGlvbiAqdHIpXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rZS5jPTE5ODA9aW50IGt2bXBwY194bGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVsb25nIGVhZGRyLCBlbnVtIHhsYXRlX2luc3RkYXRhIHhsaWQsXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rZS5jLTIwMzAtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmM6MjAzMTppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfZ3Vlc3RfZGVidWcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rZS5jLTIwMzItXHRcdFx0XHRcdCBzdHJ1Y3Qga3ZtX2d1ZXN0X2RlYnVnICpkYmcpXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9wb3dlcnBjLmM9MTczMj1pbnQga3ZtX3ZjcHVfaW9jdGxfc2V0X29uZV9yZWcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX29uZV9yZWcgKnJlZylcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL3Bvd2VycGMuYy0xNzgwLVxuYXJjaC9wb3dlcnBjL2t2bS9wb3dlcnBjLmM6MTc4MTppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC9wb3dlcnBjL2t2bS9wb3dlcnBjLmMtMTc4Mi17XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9wb3dlcnBjLmM9MjAwMD1ib29sIGt2bV9hcmNoX2ludGNfaW5pdGlhbGl6ZWQoc3RydWN0IGt2bSAqa3ZtKVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vcG93ZXJwYy5jLTIwMTItXG5hcmNoL3Bvd2VycGMva3ZtL3Bvd2VycGMuYzoyMDEzOmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9tcHN0YXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvcG93ZXJwYy9rdm0vcG93ZXJwYy5jLTIwMTQtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGt2bV9tcF9zdGF0ZSAqbXBfc3RhdGUpXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9wb3dlcnBjLmMtMjAxOC1cbmFyY2gvcG93ZXJwYy9rdm0vcG93ZXJwYy5jOjIwMTk6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X21wc3RhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9wb3dlcnBjL2t2bS9wb3dlcnBjLmMtMjAyMC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qga3ZtX21wX3N0YXRlICptcF9zdGF0ZSlcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL3Bvd2VycGMuYz0yMDI1PWxvbmcga3ZtX2FyY2hfdmNwdV91bmxvY2tlZF9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCwgdW5zaWduZWQgaW50IGlvY3RsLFxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vcG93ZXJwYy5jLTIwMzktXG5hcmNoL3Bvd2VycGMva3ZtL3Bvd2VycGMuYzoyMDQwOmxvbmcga3ZtX2FyY2hfdmNwdV9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCxcbmFyY2gvcG93ZXJwYy9rdm0vcG93ZXJwYy5jLTIwNDEtICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBpb2N0bCwgdW5zaWduZWQgbG9uZyBhcmcpXG4tLVxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jPTI0NT1sb25nIGt2bV9hcmNoX3ZjcHVfdW5sb2NrZWRfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsIHVuc2lnbmVkIGludCBpb2N0bCxcbi0tXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmMtMjY1LVxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jOjI2Njpsb25nIGt2bV9hcmNoX3ZjcHVfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmMtMjY3LVx0XHRcdCB1bnNpZ25lZCBpbnQgaW9jdGwsIHVuc2lnbmVkIGxvbmcgYXJnKVxuLS1cbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy0zMTItXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmM6MzEzOmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmMtMzE0LVx0XHRcdFx0ICBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncylcbi0tXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmMtMzE4LVxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jOjMxOTppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jLTMyMC1cdFx0XHRcdCAgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXG4tLVxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jLTMyNC1cbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYzozMjU6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X2ZwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fZnB1ICpmcHUpXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmMtMzI2LXtcbi0tXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmMtMzI5LVxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jOjMzMDppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfZnB1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9mcHUgKmZwdSlcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy0zMzEte1xuLS1cbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy0zMzQtXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmM6MzM1OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3RyYW5zbGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmMtMzM2LVx0XHRcdFx0ICBzdHJ1Y3Qga3ZtX3RyYW5zbGF0aW9uICp0cilcbi0tXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmMtMzQwLVxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jOjM0MTppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcmVncyAqcmVncylcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy0zNDIte1xuLS1cbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy0zNDUtXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmM6MzQ2OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9yZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9yZWdzICpyZWdzKVxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jLTM0Ny17XG4tLVxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jPTQ5MT1ib29sIGt2bV9yaXNjdl92Y3B1X3N0b3BwZWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy00OTUtXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmM6NDk2OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9tcHN0YXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy00OTctXHRcdFx0XHQgICAgc3RydWN0IGt2bV9tcF9zdGF0ZSAqbXBfc3RhdGUpXG4tLVxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jLTUwMy1cbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYzo1MDQ6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X21wc3RhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jLTUwNS1cdFx0XHRcdCAgICBzdHJ1Y3Qga3ZtX21wX3N0YXRlICptcF9zdGF0ZSlcbi0tXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmMtNTMyLVxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jOjUzMzppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfZ3Vlc3RfZGVidWcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jLTUzNC1cdFx0XHRcdFx0c3RydWN0IGt2bV9ndWVzdF9kZWJ1ZyAqZGJnKVxuLS1cbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYz03NTA9c3RhdGljIHZvaWQgbm9pbnN0ciBrdm1fcmlzY3ZfdmNwdV9lbnRlcl9leGl0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbi0tXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmMtNzU5LVx0ICogSFRJTlNUKSBoZXJlIGJlY2F1c2Ugd2UgZG8gbG9jYWxfaXJxX2VuYWJsZSgpIGFmdGVyIHRoaXNcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYzo3NjA6XHQgKiBmdW5jdGlvbiBpbiBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bigpIHdoaWNoIGNhbiByZXN1bHQgaW5cbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy03NjEtXHQgKiBhbiBpbnRlcnJ1cHQgaW1tZWRpYXRlbHkgYWZ0ZXIgbG9jYWxfaXJxX2VuYWJsZSgpIGFuZCBjYW5cbi0tXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmMtODI5LVxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jOjgzMDppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jLTgzMS17XG4tLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jPTM5NDU9aW50IGt2bV9hcmNoX3ZjcHVfc2hvdWxkX2tpY2soc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0zOTUxLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjM5NTI6c3RhdGljIGludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9vbmVfcmVnKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0zOTUzLVx0XHRcdFx0XHQgICBzdHJ1Y3Qga3ZtX29uZV9yZWcgKnJlZylcbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNDAwMC1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzo0MDAxOnN0YXRpYyBpbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfb25lX3JlZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNDAwMi1cdFx0XHRcdFx0ICAgc3RydWN0IGt2bV9vbmVfcmVnICpyZWcpXG4tLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTQwNTMtXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6NDA1NDpzdGF0aWMgdm9pZCBrdm1fYXJjaF92Y3B1X2lvY3RsX25vcm1hbF9yZXNldChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNDA1NS17XG4tLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTQwNjUtXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6NDA2NjpzdGF0aWMgdm9pZCBrdm1fYXJjaF92Y3B1X2lvY3RsX2luaXRpYWxfcmVzZXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTQwNjcte1xuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTQwNjgtXHQvKiBJbml0aWFsIHJlc2V0IGlzIGEgc3VwZXJzZXQgb2YgdGhlIG5vcm1hbCByZXNldCAqL1xuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjQwNjk6XHRrdm1fYXJjaF92Y3B1X2lvY3RsX25vcm1hbF9yZXNldCh2Y3B1KTtcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy00MDcwLVxuLS1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy00MTA5LVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjQxMTA6c3RhdGljIHZvaWQga3ZtX2FyY2hfdmNwdV9pb2N0bF9jbGVhcl9yZXNldChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNDExMS17XG4tLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTQxMTQtXHQvKiBDbGVhciByZXNldCBpcyBhIHN1cGVyc2V0IG9mIHRoZSBpbml0aWFsIHJlc2V0ICovXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6NDExNTpcdGt2bV9hcmNoX3ZjcHVfaW9jdGxfaW5pdGlhbF9yZXNldCh2Y3B1KTtcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy00MTE2LVxuLS1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy00MTI1LVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjQxMjY6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3JlZ3MgKnJlZ3MpXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNDEyNy17XG4tLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTQxMzMtXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6NDEzNDppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcmVncyAqcmVncylcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy00MTM1LXtcbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNDE0MS1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzo0MTQyOmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNDE0My1cdFx0XHRcdCAgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXG4tLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTQxNTMtXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6NDE1NDppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfc3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTQxNTUtXHRcdFx0XHQgIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxuLS1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy00MTY1LVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjQxNjY6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X2ZwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fZnB1ICpmcHUpXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNDE2Ny17XG4tLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTQxODAtXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6NDE4MTppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfZnB1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9mcHUgKmZwdSlcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy00MTgyLXtcbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNDE5NS1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzo0MTk2OnN0YXRpYyBpbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfaW5pdGlhbF9wc3coc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBwc3dfdCBwc3cpXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNDE5Ny17XG4tLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTQyMDgtXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6NDIwOTppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF90cmFuc2xhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTQyMTAtXHRcdFx0XHQgIHN0cnVjdCBrdm1fdHJhbnNsYXRpb24gKnRyKVxuLS1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy00MjE4LVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjQyMTk6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X2d1ZXN0X2RlYnVnKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy00MjIwLVx0XHRcdFx0XHRzdHJ1Y3Qga3ZtX2d1ZXN0X2RlYnVnICpkYmcpXG4tLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTQyNjAtXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6NDI2MTppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfbXBzdGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNDI2Mi1cdFx0XHRcdCAgICBzdHJ1Y3Qga3ZtX21wX3N0YXRlICptcF9zdGF0ZSlcbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNDI3NS1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzo0Mjc2OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9tcHN0YXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy00Mjc3LVx0XHRcdFx0ICAgIHN0cnVjdCBrdm1fbXBfc3RhdGUgKm1wX3N0YXRlKVxuLS1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYz00OTk3PXN0YXRpYyB2b2lkIHN0b3JlX3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy01MDE3LVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjUwMTg6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy01MDE5LXtcbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM9NTQ3Mz1zdGF0aWMgaW50IGt2bV9zMzkwX2hhbmRsZV9wdl92Y3B1X2R1bXAoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuLS1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy01NTE0LVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjU1MTU6bG9uZyBrdm1fYXJjaF92Y3B1X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTU1MTYtXHRcdFx0IHVuc2lnbmVkIGludCBpb2N0bCwgdW5zaWduZWQgbG9uZyBhcmcpXG4tLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTU1MzctXHRcdFx0YnJlYWs7XG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6NTUzODpcdFx0ciA9IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X2luaXRpYWxfcHN3KHZjcHUsIHBzdyk7XG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNTUzOS1cdFx0YnJlYWs7XG4tLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTU1NDItXHRcdHIgPSAwO1xuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjU1NDM6XHRcdGt2bV9hcmNoX3ZjcHVfaW9jdGxfY2xlYXJfcmVzZXQodmNwdSk7XG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNTU0NC1cdFx0aWYgKGt2bV9zMzkwX3B2X2NwdV9pc19wcm90ZWN0ZWQodmNwdSkpIHtcbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNTU1Mi1cdFx0ciA9IDA7XG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6NTU1MzpcdFx0a3ZtX2FyY2hfdmNwdV9pb2N0bF9pbml0aWFsX3Jlc2V0KHZjcHUpO1xuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTU1NTQtXHRcdGlmIChrdm1fczM5MF9wdl9jcHVfaXNfcHJvdGVjdGVkKHZjcHUpKSB7XG4tLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTU1NjMtXHRcdHIgPSAwO1xuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjU1NjQ6XHRcdGt2bV9hcmNoX3ZjcHVfaW9jdGxfbm9ybWFsX3Jlc2V0KHZjcHUpO1xuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTU1NjUtXHRcdGlmIChrdm1fczM5MF9wdl9jcHVfaXNfcHJvdGVjdGVkKHZjcHUpKSB7XG4tLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTU1ODEtXHRcdGlmIChpb2N0bCA9PSBLVk1fU0VUX09ORV9SRUcpXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6NTU4MjpcdFx0XHRyID0ga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfb25lX3JlZyh2Y3B1LCBcdTAwMjZyZWcpO1xuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTU1ODMtXHRcdGVsc2VcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxMTowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODM5NAoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDE3NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGb2N1c2luZyBGdXp6aW5nIG9uIExvb25nQXJjaCBLVk0gVkNQVSBDb250cm9sKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgdG8gZGlyZWN0IGZ1enppbmcgZWZmb3J0cyByZWxhdGVkIHRvIHRoZSBMb29uZ0FyY2ggS1ZNIFZDUFUuIFRoZSBjdXJyZW50IHRob3VnaHQgaXMgdGhhdCBga3ZtX2FyY2hfdmNwdV9pb2N0bGAgaXMgYSBnb29kIGNhbmRpZGF0ZSwgc2luY2UgaXQmIzM5O3Mgbm9uLXN0YXRpYyBhbmQgYWNjZXNzaWJsZSBhcyBhIGdlbmVyYWwgS1ZNIEFQSSBmdW5jdGlvbi4gQnV0LCBpZiBJIHB1dCB0aGF0IGludG8gYEZvY3VzU3ltYm9sc2AsIGl0JiMzOTtzIGdvaW5nIHRvIGFmZmVjdCAqYWxsKiBhcmNoaXRlY3R1cmVzLCBub3QganVzdCBMb29uZ0FyY2guIFRoYXQmIzM5O3Mgbm90IGlkZWFsIGZvciB0YXJnZXRlZCBmdXp6aW5nLiBJJiMzOTttIHdvbmRlcmluZyBpZiB0aGVyZSYjMzk7cyBhIExvb25nQXJjaC1zcGVjaWZpYyBmdW5jdGlvbiB0aGF0IHdvdWxkIGJlIGJldHRlci4gSG1tLCBga3ZtX2xvb25nYXJjaF92Y3B1X3NldF9hdHRyYCBhbmQgYGt2bV9sb29uZ2FyY2hfY3B1Y2ZnX3NldF9hdHRyYCBsb29rIHByb21pc2luZywgYnV0IHRoZXkmIzM5O3JlIGJvdGggc3RhdGljLiBUaGF0JiMzOTtzIGEgZGVhbCBicmVha2VyLiBTbywgd2hpbGUgSSAqY291bGQqIHVzZSBga3ZtX2FyY2hfdmNwdV9pb2N0bGAsIGl0JiMzOTtzIHRvbyBnZW5lcmljLiBJJiMzOTttIHRoaW5raW5nLCB0aGUgYmVzdCBhcHByb2FjaCBpcyB0byBjaGVjayBgYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuY2AgZm9yIGFueSBvdGhlciBub24tc3RhdGljIGZ1bmN0aW9ucyByZWxhdGVkIHRvIFZDUFUgY29uZmlndXJhdGlvbiBvciBjb250cm9sLiBUaGF0IHdpbGwgZW5zdXJlIHRoYXQgSSYjMzk7bSBmb2N1c2luZyB0aGUgZnV6emluZyBvbiB0aGUgbW9zdCByZWxldmFudCBjb2RlIGZvciB0aGlzIHNwZWNpZmljIGFyY2hpdGVjdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTE6MDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XmludCBrdm1fYXJjaF92Y3B1X2lvY3RsXyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYz00MjA9dm1fZmF1bHRfdCBrdm1fYXJjaF92Y3B1X2ZhdWx0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IHZtX2ZhdWx0ICp2bWYpXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy00MjQtXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jOjQyNTppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF90cmFuc2xhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy00MjYtXHRcdFx0XHQgIHN0cnVjdCBrdm1fdHJhbnNsYXRpb24gKnRyKVxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM9NDQ0PWludCBrdm1fYXJjaF92Y3B1X2R1bXBfcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy00NjYtXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jOjQ2NzppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfbXBzdGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTQ2OC1cdFx0XHRcdHN0cnVjdCBrdm1fbXBfc3RhdGUgKm1wX3N0YXRlKVxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtNDc0LVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzo0NzU6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X21wc3RhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy00NzYtXHRcdFx0XHRzdHJ1Y3Qga3ZtX21wX3N0YXRlICptcF9zdGF0ZSlcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTQ5MC1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6NDkxOmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9ndWVzdF9kZWJ1ZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTQ5Mi1cdFx0XHRcdFx0c3RydWN0IGt2bV9ndWVzdF9kZWJ1ZyAqZGJnKVxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM9OTg0PXN0YXRpYyBpbnQga3ZtX3NldF9yZWcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBjb25zdCBzdHJ1Y3Qga3ZtX29uZV9yZWcgKnJlZylcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEwMDEtXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jOjEwMDI6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEwMDMte1xuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTAwNi1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6MTAwNzppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncylcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTAwOC17XG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMDExLVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzoxMDEyOmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9yZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9yZWdzICpyZWdzKVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMDEzLXtcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEwMjMtXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jOjEwMjQ6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3JlZ3MgKnJlZ3MpXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEwMjUte1xuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM9MTIzOD1sb25nIGt2bV9hcmNoX3ZjcHVfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMzEwLVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzoxMzExOmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9mcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX2ZwdSAqZnB1KVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMzEyLXtcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEzMjItXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jOjEzMjM6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X2ZwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fZnB1ICpmcHUpXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEzMjQte1xuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM9MTgyOT12b2lkIGt2bV9hcmNoX3ZjcHVfcHV0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTE4NTItXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jOjE4NTM6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTg1NC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDExOjA2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMTg1CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMTUyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTG9vbmdBcmNoIEtWTSBJbXBsZW1lbnRhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYGt2bV9hcmNoX3ZjcHVfaW9jdGxgLiBJdCYjMzk7cyBsb2NhdGVkIGluIGBhcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jYCwgd2hpY2ggbWFrZXMgc2Vuc2U7IHRoaXMgaXMgdGhlIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgbW9yZSBnZW5lcmFsIEtWTSBpbnRlcmZhY2UuIFJpZ2h0LCBzbyBpZiBJIGNhbGwgYGt2bV9hcmNoX3ZjcHVfaW9jdGxgLCBpdCBzaG91bGQgcmVzb2x2ZSB0byB0aGUgTG9vbmdBcmNoIHZlcnNpb24gKmlmKiB0aGUgZnV6emVyIGlzIHRhcmdldGluZyBMb29uZ0FyY2gsIHdoaWNoIGl0IHNob3VsZCBiZSBpbiB0aGlzIGNhc2UuCgpCdXQgd2FpdCwgSSBuZWVkIHRvIHJlbWVtYmVyIHdoYXQgKnRoaXMqIGZ1bmN0aW9uIGFjdHVhbGx5IGRvZXMuIEFoLCByaWdodCEgYGt2bV9hcmNoX3ZjcHVfaW9jdGxgIGhhbmRsZXMgYEtWTV9TRVRfREVWSUNFX0FUVFJgIGFuZCBgS1ZNX0hBU19ERVZJQ0VfQVRUUmAgY2FsbHMgcmVsYXRlZCB0byB0aGUgVkNQVS4gU28sIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIHRoZSBzb3VyY2UgY29kZSBpbiBgYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuY2AgdG8gc2VlICpleGFjdGx5KiBob3cgaXQmIzM5O3MgaGFuZGxpbmcgdGhvc2Ugc3BlY2lmaWMgaW9jdGxzLiBUaW1lIHRvIGRpZyBpbiB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTE6MDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bG9uZyBrdm1fYXJjaF92Y3B1X2lvY3RsJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jPTEyMTk9c3RhdGljIGludCBrdm1fbG9vbmdhcmNoX3ZjcHVfc2V0X2F0dHIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTIzNy1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6MTIzODpsb25nIGt2bV9hcmNoX3ZjcHVfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEyMzktXHRcdFx0IHVuc2lnbmVkIGludCBpb2N0bCwgdW5zaWduZWQgbG9uZyBhcmcpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDExOjA2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNzUxCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogNjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTG9vbmdBcmNoIEtWTSBOb24tU3RhdGljIEZ1bmN0aW9uIENoZWNrKioKCk9rYXksIHNvIGBrdm1fYXJjaF92Y3B1X2lvY3RsYCBpcyBkZWZpbml0ZWx5IG5vdCBzdGF0aWMsIGdvdCBpdC4gTm93LCB0aGUgbmV4dCBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoZXJlIGFyZSAqYW55KiBvdGhlciBMb29uZ0FyY2gtc3BlY2lmaWMgZnVuY3Rpb25zIHdpdGhpbiB0aGUgS1ZNIGFyY2hpdGVjdHVyZSB0aGF0IGFyZW4mIzM5O3QgZGVjbGFyZWQgYXMgc3RhdGljLiBUaGlzIGlzIHNvbWV0aGluZyBJIG5lZWQgdG8gcXVpY2tseSBhc2NlcnRhaW4uIExldCYjMzk7cyBzZWUuLi5JIHNob3VsZCBwcm9iYWJseSBjaGVjayBgYXJjaC9sb29uZ2FyY2gva3ZtL3ZtLmNgLiBJJiMzOTtsbCB6ZXJvIGluIG9uIGBrdm1fYXJjaF9pbml0X3ZtYCBhbmQgc2VlIHdoYXQgdGhlIGRlY2xhcmF0aW9uIHRlbGxzIG1lLiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBhbnN3ZXIgSSBuZWVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxMTowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1fYXJjaF9pbml0X3ZtJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9sb29uZ2FyY2gva3ZtL3ZtLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9sb29uZ2FyY2gva3ZtL3ZtLmM9Mjg9c3RhdGljIHZvaWQga3ZtX3ZtX2luaXRfZmVhdHVyZXMoc3RydWN0IGt2bSAqa3ZtKVxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS92bS5jLTYxLVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZtLmM6NjI6aW50IGt2bV9hcmNoX2luaXRfdm0oc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBsb25nIHR5cGUpXG5hcmNoL2xvb25nYXJjaC9rdm0vdm0uYy02My17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDExOjA2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxMTA5CgkJCQkJCQlvdXRwdXQ6IDEwNAoJCQkJCQkJdGhvdWdodHM6IDM3OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBGdXp6aW5nIFN0cmF0ZWd5IGZvciB0aGUgTG9vbmdBcmNoIEtWTSBSYWNlIENvbmRpdGlvbiBGaXgqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGZpZ3VyaW5nIG91dCB0aGUgYmVzdCB3YXkgdG8gZnV6eiBpdC4gYGt2bV9hcmNoX2luaXRfdm1gIGlzIGEgcHJldHR5IGdlbmVyaWMgZnVuY3Rpb24sIGp1c3QgbGlrZSBga3ZtX2FyY2hfdmNwdV9pb2N0bGAsIHNvIEkgbmVlZCB0byBjaG9vc2UgY2FyZWZ1bGx5LiBTaW5jZSB0aGlzIHBhdGNoIHRhcmdldHMgdGhlIExvb25nQXJjaCBhcmNoaXRlY3R1cmUgc3BlY2lmaWNhbGx5LCB0aGUgZmFjdCB0aGF0IGBrdm1fYXJjaF92Y3B1X2lvY3RsYCBpcyBicm9hZCBpcyBsZXNzIG9mIGEgY29uY2Vybi4gSXQgbG9va3MgbGlrZSB0aGUgcGF0Y2ggbW9kaWZpZXMgYGt2bV9sb29uZ2FyY2hfY3B1Y2ZnX3NldF9hdHRyYCwgd2hpY2ggaXMgdGhlbiBjYWxsZWQgZnJvbSBga3ZtX2xvb25nYXJjaF92Y3B1X3NldF9hdHRyYCBhbmQgdGhlbiB1bHRpbWF0ZWx5IGBrdm1fYXJjaF92Y3B1X2lvY3RsYC4gSXQgbWlnaHQgYmUgdGVtcHRpbmcgdG8gZHJpbGwgZG93biBmdXJ0aGVyLCBidXQgc2luY2Ugd2UmIzM5O3JlIHRhcmdldGluZyBhIHZlcnkgc3BlY2lmaWMgYXJjaGl0ZWN0dXJlIEkgc2hvdWxkIHN0aWNrIHdpdGggdGhlIG1vc3QgZ2VuZXJpYyBlbnRyeSBwb2ludC4KCkkgY2hlY2tlZCBpZiBga3ZtX2xvb25nYXJjaF9jcHVjZmdfc2V0X2F0dHJgIHdhcyBleHBvcnRhYmxlIG9yIG5vbi1zdGF0aWMsIGJ1dCBpdCYjMzk7cyBpbnRlcm5hbC4gYGt2bV9hcmNoX3ZjcHVfaW9jdGxgIHNlZW1zIHRvIGJlIHRoZSBiZXN0IGVudHJ5IHBvaW50IGZvciBmdXp6aW5nLCBnaXZlbiBpdHMgY29ubmVjdGl2aXR5LgoKTm93IEkgbmVlZCB0byBtYWtlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBhbnl0aGluZy4gSSBkb24mIzM5O3Qgc2VlIGFueSBvdGhlciBvYnZpb3VzIGNvbmZpZ3VyYXRpb24gcG9pbnRzIG91dHNpZGUgb2YgYEtWTWAuCgpJIGFsc28gbmVlZCB0byB2ZXJpZnkgdGhpcyBpcyBhY3R1YWxseSBhIHdvcnRod2hpbGUgdGFyZ2V0LiBga3ZtX2FyY2hfdmNwdV9pb2N0bGAgaXMgYW4gaW9jdGwsIG5vdCBhIGhvdCBwYXRoLCBzbyB0aGF0JiMzOTtzIGdvb2QuIEFuZCB5ZXMsIGl0IGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gS1ZNIGZvciBMb29uZ0FyY2gsIHNvIGl0IGlzIGEgZ29vZCB0YXJnZXQuCgpJbiBzdW1tYXJ5LCB0aGUgaW1wb3J0YW50IHBvaW50cyBhcmU6CgoqICAgKipXb3J0aEZ1enppbmcqKjogdHJ1ZQoqICAgKipGb2N1c1N5bWJvbHMqKjogYGt2bV9hcmNoX3ZjcHVfaW9jdGxgLCBga3ZtX2FyY2hfaW5pdF92bWAKKiAgICoqRW5hYmxlQ29uZmlncyoqOiBgS1ZNYAoqICAgKipSZWFzb25pbmcqKjogVGhpcyBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGluIExvb25nQXJjaCBLVk0gQ1BVIGNvbmZpZ3VyYXRpb24gdXNpbmcgYSBuZXcgc3BpbmxvY2sgKGBwdl9zZXR0aW5nX2xvY2tgKS4gSXQgZGlyZWN0bHkgbW9kaWZpZXMgS1ZNIGZ1bmN0aW9uYWxpdHksIHJlYWNoYWJsZSB2aWEgVkNQVSBpb2N0bHMsIG1ha2luZyBpdCBhIGdvb2QgdGFyZ2V0IGZvciBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxMTowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX2FyY2hfdmNwdV9pb2N0bCYjMzQ7LAogICAgJiMzNDtrdm1fYXJjaF9pbml0X3ZtJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gTG9vbmdBcmNoIEtWTSBDUFUgY29uZmlndXJhdGlvbiBieSBpbnRyb2R1Y2luZyBhIG5ldyBzcGlubG9jayBgcHZfc2V0dGluZ19sb2NrYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBLVk0gc3Vic3lzdGVtIHRoYXQgaXMgcmVhY2hhYmxlIHZpYSBWQ1BVIGlvY3Rscy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX2FyY2hfdmNwdV9pb2N0bCYjMzQ7LAogICAgJiMzNDtrdm1fYXJjaF9pbml0X3ZtJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gTG9vbmdBcmNoIEtWTSBDUFUgY29uZmlndXJhdGlvbiBieSBpbnRyb2R1Y2luZyBhIG5ldyBzcGlubG9jayBgcHZfc2V0dGluZ19sb2NrYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBLVk0gc3Vic3lzdGVtIHRoYXQgaXMgcmVhY2hhYmxlIHZpYSBWQ1BVIGlvY3Rscy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTE6MDY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxMTowNjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgc3BpbmxvY2sgKGBwdl9zZXR0aW5nX2xvY2tgKSB0byBwcm90ZWN0IHRoZSBgcHZfZmVhdHVyZXNgIGZpZWxkIGluIGBzdHJ1Y3Qga3ZtX2FyY2hgIGZyb20gY29uY3VycmVudCBtb2RpZmljYXRpb25zIGR1cmluZyB2Q1BVIGNvbmZpZ3VyYXRpb24uIFRoaXMgaXMgYSBjb25jdXJyZW5jeS9sb2NraW5nIGZpeCBhaW1lZCBhdCBwcmV2ZW50aW5nIGRhdGEgcmFjZXMgb3IgaW5jb25zaXN0ZW50IHN0YXRlcyBhY3Jvc3MgdkNQVXMuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UsIG9yIGNoYW5nZXMgdG8gYm91bmRzIGNoZWNraW5nIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBDb25jdXJyZW5jeSBpc3N1ZXMgYW5kIGRhdGEgcmFjZXMgYXJlIGJlc3QgZGV0ZWN0ZWQgYnkgdG9vbHMgbGlrZSBLQ1NBTiBvciBMT0NLREVQLCB3aGlsZSBLQVNBTiBoYW5kbGVzIG1lbW9yeSBjb3JydXB0aW9uLiBLTVNBTiBpcyBzcGVjaWZpY2FsbHkgZm9yIGRldGVjdGluZyB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSwgd2hpY2ggaXMgbm90IHJlbGV2YW50IHRvIHRoaXMgcGF0Y2guJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDNjZTdmM2U3NjEzNjE1ZmE0ODAwMDhiNzMxODVhZTJmZTE4N2ExYmEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEF1ZyAxNCAxMTowNTozNCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmggYi9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oCmluZGV4IDIzY2ZiZWNlYmJkNzkuLjM1MzhhMTk5YWFjNjIgMTAwNjQ0Ci0tLSBhL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2hvc3QuaApAQCAtMTI1LDYgJiM0MzsxMjUsNyBAQCBzdHJ1Y3Qga3ZtX2FyY2ggewogCXVuc2lnbmVkIGludCAgcHRlX3NoaWZ0c1tNQVhfUEdUQUJMRV9MRVZFTFNdOwogCXVuc2lnbmVkIGludCAgcm9vdF9sZXZlbDsKIAlzcGlubG9ja190ICAgIHBoeWlkX21hcF9sb2NrOwomIzQzOwlzcGlubG9ja190ICAgIHB2X3NldHRpbmdfbG9jazsKIAlzdHJ1Y3Qga3ZtX3BoeWlkX21hcCAgKnBoeWlkX21hcDsKIAkvKiBFbmFibGVkIFBWIGZlYXR1cmVzICovCiAJdW5zaWduZWQgbG9uZyBwdl9mZWF0dXJlczsKZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMgYi9hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jCmluZGV4IDIwYzIwN2Q4MGUzMWEuLmU0N2ZhNDYzYThiZWMgMTAwNjQ0Ci0tLSBhL2FyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYwpAQCAtMTE2NSwxMCAmIzQzOzExNjUsMTQgQEAgc3RhdGljIGludCBrdm1fbG9vbmdhcmNoX2NwdWNmZ19zZXRfYXR0cihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsCiAJCQlyZXR1cm4gLUVJTlZBTDsKIAogCQkvKiBBbGwgdkNQVXMgbmVlZCBzZXQgdGhlIHNhbWUgUFYgZmVhdHVyZXMgKi8KJiM0MzsJCXNwaW5fbG9jaygmYW1wO2t2bS0mZ3Q7YXJjaC5wdl9zZXR0aW5nX2xvY2spOwogCQlpZiAoKGt2bS0mZ3Q7YXJjaC5wdl9mZWF0dXJlcyAmYW1wOyBMT09OR0FSQ0hfUFZfRkVBVF9VUERBVEVEKQotCQkJCSZhbXA7JmFtcDsgKChrdm0tJmd0O2FyY2gucHZfZmVhdHVyZXMgJmFtcDsgdmFsaWQpICE9IHZhbCkpCiYjNDM7CQkJCSZhbXA7JmFtcDsgKChrdm0tJmd0O2FyY2gucHZfZmVhdHVyZXMgJmFtcDsgdmFsaWQpICE9IHZhbCkpIHsKJiM0MzsJCQlzcGluX3VubG9jaygmYW1wO2t2bS0mZ3Q7YXJjaC5wdl9zZXR0aW5nX2xvY2spOwogCQkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CQl9CiAJCWt2bS0mZ3Q7YXJjaC5wdl9mZWF0dXJlcyA9IHZhbCB8IExPT05HQVJDSF9QVl9GRUFUX1VQREFURUQ7CiYjNDM7CQlzcGluX3VubG9jaygmYW1wO2t2bS0mZ3Q7YXJjaC5wdl9zZXR0aW5nX2xvY2spOwogCQlyZXR1cm4gMDsKIAlkZWZhdWx0OgogCQlyZXR1cm4gLUVOWElPOwpkaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gva3ZtL3ZtLmMgYi9hcmNoL2xvb25nYXJjaC9rdm0vdm0uYwppbmRleCAxMzE3YzcxOGY4OTZhLi44NmJhN2Q1NGU4MWY4IDEwMDY0NAotLS0gYS9hcmNoL2xvb25nYXJjaC9rdm0vdm0uYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2xvb25nYXJjaC9rdm0vdm0uYwpAQCAtNzYsNiAmIzQzOzc2LDcgQEAgaW50IGt2bV9hcmNoX2luaXRfdm0oc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBsb25nIHR5cGUpCiAJCXJldHVybiAtRU5PTUVNOwogCX0KIAlzcGluX2xvY2tfaW5pdCgmYW1wO2t2bS0mZ3Q7YXJjaC5waHlpZF9tYXBfbG9jayk7CiYjNDM7CXNwaW5fbG9ja19pbml0KCZhbXA7a3ZtLSZndDthcmNoLnB2X3NldHRpbmdfbG9jayk7CiAKIAlrdm1faW5pdF92bWNzKGt2bSk7CiAJa3ZtX3ZtX2luaXRfZmVhdHVyZXMoa3ZtKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDExOjA2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1NjgKCQkJCQkJCW91dHB1dDogMTU3CgkJCQkJCQl0aG91Z2h0czogMzE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEtWTSBMb29uZ2FyY2ggUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBzdHJhaWdodGZvcndhcmQuIEl0JiMzOTtzIGFkZGluZyBhIG5ldyBzcGlubG9jaywgYHB2X3NldHRpbmdfbG9ja2AsIHRvIHRoZSBga3ZtX2FyY2hgIHN0cnVjdCBpbiB0aGUgTG9vbmdBcmNoIEtWTSBpbXBsZW1lbnRhdGlvbi4gRnJvbSB3aGF0IEkgY2FuIHNlZSwgaXQmIzM5O3MgaW5pdGlhbGl6ZWQgZHVyaW5nIFZNIGluaXRpYWxpemF0aW9uIGluIGBrdm1fYXJjaF9pbml0X3ZtYCBhbmQgdGhlbiB1c2VkIHRvIHByb3RlY3QgdGhlIGBrdm0tJmd0O2FyY2gucHZfZmVhdHVyZXNgIHZhcmlhYmxlIHdpdGhpbiBga3ZtX2xvb25nYXJjaF9jcHVjZmdfc2V0X2F0dHJgLgoKRXNzZW50aWFsbHksIHRoaXMgaXMgYSBjbGFzc2ljIGxvY2tpbmcgZml4IHRvIHJlc29sdmUgYSBjb25jdXJyZW5jeSBpc3N1ZSwgbGlrZWx5IGEgZGF0YSByYWNlLiBUaGUgY29kZSBjbGVhcmx5IG91dGxpbmVzIGEgcGF0dGVybjogbG9jaywgY2hlY2sgYSBjb25kaXRpb24sIG1vZGlmeSBkYXRhLCBhbmQgdW5sb2NrLCB3aXRoIGFuIGVhcmx5IGV4aXQgYW5kIHVubG9jayBvbiBmYWlsdXJlLiBUaGUgY29kZSBpcyBjbGVhbiBhbmQgYWRkcmVzc2VzIGEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uIHdoZW4gc2V0dGluZyB0aGUgYHB2X2ZlYXR1cmVzYC4KClRoZSBwYXRjaCBkb2VzbiYjMzk7dCBpbnZvbHZlIGFueSBjaGFuZ2VzIHRvIGhvdyBkYXRhIGlzIGV4cG9zZWQgdG8gdXNlcnNwYWNlLCBubyBtb2RpZmljYXRpb25zIHRvIGV4aXN0aW5nIGJvdW5kcyBjaGVja3MsIGFuZCBubyBhbGxvY2F0aW9uIG9mIGFueSBjb21wbGV4IHN0cnVjdHVyZXMuIFNpbmNlIHRoZSBidWcgdGhpcyBpcyBhZGRyZXNzaW5nIGlzIGEgY29uY3VycmVuY3kgaXNzdWUgYW5kIGl0JiMzOTtzIGJlaW5nIGNhdWdodCBieSBLQ1NBTiBvciBMT0NLREVQLCB0aGVyZSYjMzk7cyBubyBuZWVkIGZvciBLTVNBTiB0byBiZSBpbnZvbHZlZC4gSSBjYW4gY29uZmlkZW50bHkgYXNzZXNzIHRoaXMgYXMgYSBzdGFuZGFyZCBsb2NraW5nIGZpeCwgYW5kIHRoZXJlIGFyZSBubyBuZXcgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgaW50cm9kdWNlZC4KClRoZXJlZm9yZSwgSSYjMzk7bSBjb21mb3J0YWJsZSBzZXR0aW5nIGBOZWVkc0tNU0FOYCB0byBmYWxzZS4gVGhlIHBhdGNoIGlzIHNvdW5kIGFuZCBhZGRyZXNzZXMgYSByZWFsIGNvbmN1cnJlbmN5IGNvbmNlcm4sIHByZXZlbnRpbmcgcG90ZW50aWFsIGRhdGEgY29ycnVwdGlvbiBpbiB0aGUgS1ZNIExvb25nQXJjaCBpbXBsZW1lbnRhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTE6MDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIHNwaW5sb2NrIChgcHZfc2V0dGluZ19sb2NrYCkgdG8gcHJvdGVjdCB0aGUgYHB2X2ZlYXR1cmVzYCBmaWVsZCBpbiBgc3RydWN0IGt2bV9hcmNoYCBmcm9tIGNvbmN1cnJlbnQgbW9kaWZpY2F0aW9ucyBkdXJpbmcgdkNQVSBjb25maWd1cmF0aW9uLiBUaGlzIGlzIGEgY29uY3VycmVuY3kvbG9ja2luZyBmaXggYWltZWQgYXQgcHJldmVudGluZyBkYXRhIHJhY2VzIG9yIGluY29uc2lzdGVudCBzdGF0ZXMgYWNyb3NzIHZDUFVzLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlLCBvciBjaGFuZ2VzIHRvIGJvdW5kcyBjaGVja2luZyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gQ29uY3VycmVuY3kgaXNzdWVzIGFuZCBkYXRhIHJhY2VzIGFyZSBiZXN0IGRldGVjdGVkIGJ5IHRvb2xzIGxpa2UgS0NTQU4gb3IgTE9DS0RFUCwgd2hpbGUgS0FTQU4gaGFuZGxlcyBtZW1vcnkgY29ycnVwdGlvbi4gS01TQU4gaXMgc3BlY2lmaWNhbGx5IGZvciBkZXRlY3RpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UsIHdoaWNoIGlzIG5vdCByZWxldmFudCB0byB0aGlzIHBhdGNoLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIHNwaW5sb2NrIChgcHZfc2V0dGluZ19sb2NrYCkgdG8gcHJvdGVjdCB0aGUgYHB2X2ZlYXR1cmVzYCBmaWVsZCBpbiBgc3RydWN0IGt2bV9hcmNoYCBmcm9tIGNvbmN1cnJlbnQgbW9kaWZpY2F0aW9ucyBkdXJpbmcgdkNQVSBjb25maWd1cmF0aW9uLiBUaGlzIGlzIGEgY29uY3VycmVuY3kvbG9ja2luZyBmaXggYWltZWQgYXQgcHJldmVudGluZyBkYXRhIHJhY2VzIG9yIGluY29uc2lzdGVudCBzdGF0ZXMgYWNyb3NzIHZDUFVzLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlLCBvciBjaGFuZ2VzIHRvIGJvdW5kcyBjaGVja2luZyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gQ29uY3VycmVuY3kgaXNzdWVzIGFuZCBkYXRhIHJhY2VzIGFyZSBiZXN0IGRldGVjdGVkIGJ5IHRvb2xzIGxpa2UgS0NTQU4gb3IgTE9DS0RFUCwgd2hpbGUgS0FTQU4gaGFuZGxlcyBtZW1vcnkgY29ycnVwdGlvbi4gS01TQU4gaXMgc3BlY2lmaWNhbGx5IGZvciBkZXRlY3RpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UsIHdoaWNoIGlzIG5vdCByZWxldmFudCB0byB0aGlzIHBhdGNoLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMTowNTozNS41ODA4OTcxMjZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDE2ODE5MDM2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJrdm1fYXJjaF92Y3B1X2lvY3RsXCIsXG4gICAgXCJrdm1fYXJjaF9pbml0X3ZtXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgc3BpbmxvY2sgKGBwdl9zZXR0aW5nX2xvY2tgKSB0byBwcm90ZWN0IHRoZSBgcHZfZmVhdHVyZXNgIGZpZWxkIGluIGBzdHJ1Y3Qga3ZtX2FyY2hgIGZyb20gY29uY3VycmVudCBtb2RpZmljYXRpb25zIGR1cmluZyB2Q1BVIGNvbmZpZ3VyYXRpb24uIFRoaXMgaXMgYSBjb25jdXJyZW5jeS9sb2NraW5nIGZpeCBhaW1lZCBhdCBwcmV2ZW50aW5nIGRhdGEgcmFjZXMgb3IgaW5jb25zaXN0ZW50IHN0YXRlcyBhY3Jvc3MgdkNQVXMuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UsIG9yIGNoYW5nZXMgdG8gYm91bmRzIGNoZWNraW5nIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBDb25jdXJyZW5jeSBpc3N1ZXMgYW5kIGRhdGEgcmFjZXMgYXJlIGJlc3QgZGV0ZWN0ZWQgYnkgdG9vbHMgbGlrZSBLQ1NBTiBvciBMT0NLREVQLCB3aGlsZSBLQVNBTiBoYW5kbGVzIG1lbW9yeSBjb3JydXB0aW9uLiBLTVNBTiBpcyBzcGVjaWZpY2FsbHkgZm9yIGRldGVjdGluZyB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSwgd2hpY2ggaXMgbm90IHJlbGV2YW50IHRvIHRoaXMgcGF0Y2guXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiBMb29uZ0FyY2ggS1ZNIENQVSBjb25maWd1cmF0aW9uIGJ5IGludHJvZHVjaW5nIGEgbmV3IHNwaW5sb2NrIGBwdl9zZXR0aW5nX2xvY2tgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIEtWTSBzdWJzeXN0ZW0gdGhhdCBpcyByZWFjaGFibGUgdmlhIFZDUFUgaW9jdGxzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMTowNTozNS41ODA5MDQ2MzZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyOTQwMzAwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDNjZTdmM2U3NjEzNjE1ZmE0ODAwMDhiNzMxODVhZTJmZTE4N2ExYmFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBBdWcgMTQgMTE6MDU6MzQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2hvc3QuaCBiL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmhcXG5pbmRleCAyM2NmYmVjZWJiZDc5Li4zNTM4YTE5OWFhYzYyIDEwMDY0NFxcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmhcXG4rKysgYi9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXFxuQEAgLTEyNSw2ICsxMjUsNyBAQCBzdHJ1Y3Qga3ZtX2FyY2gge1xcbiBcXHR1bnNpZ25lZCBpbnQgIHB0ZV9zaGlmdHNbTUFYX1BHVEFCTEVfTEVWRUxTXTtcXG4gXFx0dW5zaWduZWQgaW50ICByb290X2xldmVsO1xcbiBcXHRzcGlubG9ja190ICAgIHBoeWlkX21hcF9sb2NrO1xcbitcXHRzcGlubG9ja190ICAgIHB2X3NldHRpbmdfbG9jaztcXG4gXFx0c3RydWN0IGt2bV9waHlpZF9tYXAgICpwaHlpZF9tYXA7XFxuIFxcdC8qIEVuYWJsZWQgUFYgZmVhdHVyZXMgKi9cXG4gXFx0dW5zaWduZWQgbG9uZyBwdl9mZWF0dXJlcztcXG5kaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYyBiL2FyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmNcXG5pbmRleCAyMGMyMDdkODBlMzFhLi5lNDdmYTQ2M2E4YmVjIDEwMDY0NFxcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmNcXG4rKysgYi9hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jXFxuQEAgLTExNjUsMTAgKzExNjUsMTQgQEAgc3RhdGljIGludCBrdm1fbG9vbmdhcmNoX2NwdWNmZ19zZXRfYXR0cihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuIFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXG4gXFx0XFx0LyogQWxsIHZDUFVzIG5lZWQgc2V0IHRoZSBzYW1lIFBWIGZlYXR1cmVzICovXFxuK1xcdFxcdHNwaW5fbG9jayhcXHUwMDI2a3ZtLVxcdTAwM2VhcmNoLnB2X3NldHRpbmdfbG9jayk7XFxuIFxcdFxcdGlmICgoa3ZtLVxcdTAwM2VhcmNoLnB2X2ZlYXR1cmVzIFxcdTAwMjYgTE9PTkdBUkNIX1BWX0ZFQVRfVVBEQVRFRClcXG4tXFx0XFx0XFx0XFx0XFx1MDAyNlxcdTAwMjYgKChrdm0tXFx1MDAzZWFyY2gucHZfZmVhdHVyZXMgXFx1MDAyNiB2YWxpZCkgIT0gdmFsKSlcXG4rXFx0XFx0XFx0XFx0XFx1MDAyNlxcdTAwMjYgKChrdm0tXFx1MDAzZWFyY2gucHZfZmVhdHVyZXMgXFx1MDAyNiB2YWxpZCkgIT0gdmFsKSkge1xcbitcXHRcXHRcXHRzcGluX3VubG9jayhcXHUwMDI2a3ZtLVxcdTAwM2VhcmNoLnB2X3NldHRpbmdfbG9jayk7XFxuIFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHRcXHR9XFxuIFxcdFxcdGt2bS1cXHUwMDNlYXJjaC5wdl9mZWF0dXJlcyA9IHZhbCB8IExPT05HQVJDSF9QVl9GRUFUX1VQREFURUQ7XFxuK1xcdFxcdHNwaW5fdW5sb2NrKFxcdTAwMjZrdm0tXFx1MDAzZWFyY2gucHZfc2V0dGluZ19sb2NrKTtcXG4gXFx0XFx0cmV0dXJuIDA7XFxuIFxcdGRlZmF1bHQ6XFxuIFxcdFxcdHJldHVybiAtRU5YSU87XFxuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2t2bS92bS5jIGIvYXJjaC9sb29uZ2FyY2gva3ZtL3ZtLmNcXG5pbmRleCAxMzE3YzcxOGY4OTZhLi44NmJhN2Q1NGU4MWY4IDEwMDY0NFxcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL2t2bS92bS5jXFxuKysrIGIvYXJjaC9sb29uZ2FyY2gva3ZtL3ZtLmNcXG5AQCAtNzYsNiArNzYsNyBAQCBpbnQga3ZtX2FyY2hfaW5pdF92bShzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgdHlwZSlcXG4gXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIFxcdH1cXG4gXFx0c3Bpbl9sb2NrX2luaXQoXFx1MDAyNmt2bS1cXHUwMDNlYXJjaC5waHlpZF9tYXBfbG9jayk7XFxuK1xcdHNwaW5fbG9ja19pbml0KFxcdTAwMjZrdm0tXFx1MDAzZWFyY2gucHZfc2V0dGluZ19sb2NrKTtcXG4gXFxuIFxcdGt2bV9pbml0X3ZtY3Moa3ZtKTtcXG4gXFx0a3ZtX3ZtX2luaXRfZmVhdHVyZXMoa3ZtKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTE6MDU6MzYuMDExMjE3NDQzWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NDcxOTM1MjQ0MTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX2FyY2hfdmNwdV9pb2N0bFwiLFxuICAgIFwia3ZtX2FyY2hfaW5pdF92bVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gTG9vbmdBcmNoIEtWTSBDUFUgY29uZmlndXJhdGlvbiBieSBpbnRyb2R1Y2luZyBhIG5ldyBzcGlubG9jayBgcHZfc2V0dGluZ19sb2NrYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBLVk0gc3Vic3lzdGVtIHRoYXQgaXMgcmVhY2hhYmxlIHZpYSBWQ1BVIGlvY3Rscy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgM2NlN2YzZTc2MTM2MTVmYTQ4MDAwOGI3MzE4NWFlMmZlMTg3YTFiYVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDE0IDExOjA1OjM0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2hvc3QuaCBiL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmhcbmluZGV4IDIzY2ZiZWNlYmJkNzkuLjM1MzhhMTk5YWFjNjIgMTAwNjQ0XG4tLS0gYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXG4rKysgYi9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXG5AQCAtMTI1LDYgKzEyNSw3IEBAIHN0cnVjdCBrdm1fYXJjaCB7XG4gXHR1bnNpZ25lZCBpbnQgIHB0ZV9zaGlmdHNbTUFYX1BHVEFCTEVfTEVWRUxTXTtcbiBcdHVuc2lnbmVkIGludCAgcm9vdF9sZXZlbDtcbiBcdHNwaW5sb2NrX3QgICAgcGh5aWRfbWFwX2xvY2s7XG4rXHRzcGlubG9ja190ICAgIHB2X3NldHRpbmdfbG9jaztcbiBcdHN0cnVjdCBrdm1fcGh5aWRfbWFwICAqcGh5aWRfbWFwO1xuIFx0LyogRW5hYmxlZCBQViBmZWF0dXJlcyAqL1xuIFx0dW5zaWduZWQgbG9uZyBwdl9mZWF0dXJlcztcbmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jIGIvYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuY1xuaW5kZXggMjBjMjA3ZDgwZTMxYS4uZTQ3ZmE0NjNhOGJlYyAxMDA2NDRcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmNcbisrKyBiL2FyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmNcbkBAIC0xMTY1LDEwICsxMTY1LDE0IEBAIHN0YXRpYyBpbnQga3ZtX2xvb25nYXJjaF9jcHVjZmdfc2V0X2F0dHIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuIFx0XHRcdHJldHVybiAtRUlOVkFMO1xuIFxuIFx0XHQvKiBBbGwgdkNQVXMgbmVlZCBzZXQgdGhlIHNhbWUgUFYgZmVhdHVyZXMgKi9cbitcdFx0c3Bpbl9sb2NrKFx1MDAyNmt2bS1cdTAwM2VhcmNoLnB2X3NldHRpbmdfbG9jayk7XG4gXHRcdGlmICgoa3ZtLVx1MDAzZWFyY2gucHZfZmVhdHVyZXMgXHUwMDI2IExPT05HQVJDSF9QVl9GRUFUX1VQREFURUQpXG4tXHRcdFx0XHRcdTAwMjZcdTAwMjYgKChrdm0tXHUwMDNlYXJjaC5wdl9mZWF0dXJlcyBcdTAwMjYgdmFsaWQpICE9IHZhbCkpXG4rXHRcdFx0XHRcdTAwMjZcdTAwMjYgKChrdm0tXHUwMDNlYXJjaC5wdl9mZWF0dXJlcyBcdTAwMjYgdmFsaWQpICE9IHZhbCkpIHtcbitcdFx0XHRzcGluX3VubG9jayhcdTAwMjZrdm0tXHUwMDNlYXJjaC5wdl9zZXR0aW5nX2xvY2spO1xuIFx0XHRcdHJldHVybiAtRUlOVkFMO1xuK1x0XHR9XG4gXHRcdGt2bS1cdTAwM2VhcmNoLnB2X2ZlYXR1cmVzID0gdmFsIHwgTE9PTkdBUkNIX1BWX0ZFQVRfVVBEQVRFRDtcbitcdFx0c3Bpbl91bmxvY2soXHUwMDI2a3ZtLVx1MDAzZWFyY2gucHZfc2V0dGluZ19sb2NrKTtcbiBcdFx0cmV0dXJuIDA7XG4gXHRkZWZhdWx0OlxuIFx0XHRyZXR1cm4gLUVOWElPO1xuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2t2bS92bS5jIGIvYXJjaC9sb29uZ2FyY2gva3ZtL3ZtLmNcbmluZGV4IDEzMTdjNzE4Zjg5NmEuLjg2YmE3ZDU0ZTgxZjggMTAwNjQ0XG4tLS0gYS9hcmNoL2xvb25nYXJjaC9rdm0vdm0uY1xuKysrIGIvYXJjaC9sb29uZ2FyY2gva3ZtL3ZtLmNcbkBAIC03Niw2ICs3Niw3IEBAIGludCBrdm1fYXJjaF9pbml0X3ZtKHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgbG9uZyB0eXBlKVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcdH1cbiBcdHNwaW5fbG9ja19pbml0KFx1MDAyNmt2bS1cdTAwM2VhcmNoLnBoeWlkX21hcF9sb2NrKTtcbitcdHNwaW5fbG9ja19pbml0KFx1MDAyNmt2bS1cdTAwM2VhcmNoLnB2X3NldHRpbmdfbG9jayk7XG4gXG4gXHRrdm1faW5pdF92bWNzKGt2bSk7XG4gXHRrdm1fdm1faW5pdF9mZWF0dXJlcyhrdm0pO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTE6MDU6MzYuMDExMjE4OTQzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTU2NTEzODQ2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIHRoZSBMb29uZ0FyY2ggS1ZNIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCBhZmZlY3RpbmcgYGFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmhgLCBgYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuY2AsIGFuZCBgYXJjaC9sb29uZ2FyY2gva3ZtL3ZtLmNgLiBJdCdzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGEgc3BpbmxvY2sgKGBwdl9zZXR0aW5nX2xvY2tgKSBwcm90ZWN0aW5nIGBrdm0tXHUwMDNlYXJjaC5wdl9mZWF0dXJlc2AgaW4gYGt2bV9sb29uZ2FyY2hfY3B1Y2ZnX3NldF9hdHRyKClgLiBJdCdzIGZpeGluZyBhIHJhY2UgY29uZGl0aW9uIGluIHRoZSBMb29uZ0FyY2ggS1ZNIGltcGxlbWVudGF0aW9uLiBIbW0sIGlzIHRoaXMgc29tZXRoaW5nIHdlIHNob3VsZCBiZSBmdXp6aW5nP1xuXG5BYnNvbHV0ZWx5LiBJdCdzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgKmluIEtWTSogb24gKkxvb25nQXJjaCouIFRoYXQncyBhIHRhcmdldC1yaWNoIGVudmlyb25tZW50IGZvciBmdXp6aW5nLCBpZiB3ZSBjYW4gcmVhY2ggaXQuXG5cbldhaXQsIHRoZSBiaWdnZXIgcXVlc3Rpb24gaXMsIGNhbiB3ZSAqYWN0dWFsbHkqIGZ1enogTG9vbmdBcmNoIEtWTSB3aXRoIHNvbWV0aGluZyBsaWtlIHN5emthbGxlcj8gU3l6a2FsbGVyIGlzIHByZXR0eSB2ZXJzYXRpbGUsIHN1cHBvcnRzIHNldmVyYWwgYXJjaGl0ZWN0dXJlcywgYnV0IEkgdXN1YWxseSBzZWUgZnV6emluZyBvbiB4ODZfNjQsIEFSTTY0LCBSSVNDLVYsIGV0Yy5cblxuQnV0IHRoaXMgaXMgS1ZNLCBhIGNvcmUga2VybmVsIGZlYXR1cmUsIGFuZCB3ZSdyZSB0YWxraW5nIGFib3V0IGEgc3BlY2lmaWMgYXJjaGl0ZWN0dXJlLiBJdCdzIHdvcnRoIHB1cnN1aW5nLiBMZXQncyBzZWUgaWYgd2UgY2FuIHJlYWNoIGl0LiBNeSBmaXJzdCBjaGVjayBpcyBga3ZtX2xvb25nYXJjaF9jcHVjZmdfc2V0X2F0dHJgLiBPa2F5LCBJIHJlbWVtYmVyIGl0J3MgY2FsbGVkIHRocm91Z2ggS1ZNIGlvY3Rscy4gR29vZCwgdGhhdCdzIGEgZGVmaW5lZCBhdHRhY2sgc3VyZmFjZS5cblxuTm93LCBsZXQncyBjb25maXJtIHRoZSByZWxldmFudCBjb25maWcgaXMgZW5hYmxlZDogYENPTkZJR19LVk1gIG9uIExvb25nQXJjaC4gQmluZ28uXG5cbkxldCBtZSByZWZyZXNoIG15IG1lbW9yeSBvZiB3aGF0J3MgaGFwcGVuaW5nIGluIGBrdm1fbG9vbmdhcmNoX2NwdWNmZ19zZXRfYXR0cmAgZGlyZWN0bHksIHNvIEknbGwgcXVpY2tseSBsb29rIGF0IHRoZSBzb3VyY2UgaW4gYGFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTcxLCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzA1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTE6MDU6NDEuNTc2MzYwNjA4WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwODkxOTUyMDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX2xvb25nYXJjaF9jcHVjZmdfc2V0X2F0dHJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYz0xMTMyPXN0YXRpYyBpbnQga3ZtX2xvb25nYXJjaF92Y3B1X2dldF9hdHRyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTE1MC1cXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jOjExNTE6c3RhdGljIGludCBrdm1fbG9vbmdhcmNoX2NwdWNmZ19zZXRfYXR0cihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMTUyLVxcdFxcdFxcdFxcdFxcdCBzdHJ1Y3Qga3ZtX2RldmljZV9hdHRyICphdHRyKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYz0xMjE5PXN0YXRpYyBpbnQga3ZtX2xvb25nYXJjaF92Y3B1X3NldF9hdHRyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTIyNS1cXHRjYXNlIEtWTV9MT09OR0FSQ0hfVkNQVV9DUFVDRkc6XFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzoxMjI2OlxcdFxcdHJldCA9IGt2bV9sb29uZ2FyY2hfY3B1Y2ZnX3NldF9hdHRyKHZjcHUsIGF0dHIpO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTIyNy1cXHRcXHRicmVhaztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTE6MDU6NDMuNjY1NTYyMDM2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjg3MzEyMDcxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipUcmFjaW5nIHRoZSBga3ZtX2xvb25nYXJjaF92Y3B1X3NldF9hdHRyYCBGdW5jdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBrdm1fbG9vbmdhcmNoX3ZjcHVfc2V0X2F0dHJgIGFuZCBpbW1lZGlhdGVseSBJIHNlZSBpdCdzIGNhbGxpbmcgYGt2bV9sb29uZ2FyY2hfY3B1Y2ZnX3NldF9hdHRyYC4gVGhhdCdzIHRoZSBsaW5rIEkgbmVlZCB0byB1bmRlcnN0YW5kLiBNeSBuZXh0IHN0ZXAgaXMgY2xlYXI6IEkgbmVlZCB0byB0cmFjZSAqd2hlcmUqIGBrdm1fbG9vbmdhcmNoX3ZjcHVfc2V0X2F0dHJgIGl0c2VsZiBpcyBiZWluZyBjYWxsZWQuIFRoYXQnbGwgcHJvdmlkZSB0aGUgdXBzdHJlYW0gY29udGV4dCBhbmQgdGVsbCBtZSB3aGF0J3MgdHJpZ2dlcmluZyB0aGlzIHdob2xlIHByb2Nlc3MuIFdoZXJlIGRvZXMgdGhpcyBmdW5jdGlvbiBmaXQgaW50byB0aGUgbGFyZ2VyIEtWTSBvbiBMb29uZ0FyY2ggcGljdHVyZT8gTGV0J3MgZ2V0IHRvIHRoZSBjYWxsIHNpdGVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjIzLCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTE6MDU6NDYuNTM4Njg1MzMxWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MjUwNjUzMjMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX2xvb25nYXJjaF92Y3B1X3NldF9hdHRyXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM9MTE4Mj1zdGF0aWMgaW50IGt2bV9sb29uZ2FyY2hfcHZ0aW1lX3NldF9hdHRyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTIxOC1cXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jOjEyMTk6c3RhdGljIGludCBrdm1fbG9vbmdhcmNoX3ZjcHVfc2V0X2F0dHIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTIyMC1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IGt2bV9kZXZpY2VfYXR0ciAqYXR0cilcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM9MTIzOD1sb25nIGt2bV9hcmNoX3ZjcHVfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEyOTktXFx0XFx0XFx0YnJlYWs7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzoxMzAwOlxcdFxcdHIgPSBrdm1fbG9vbmdhcmNoX3ZjcHVfc2V0X2F0dHIodmNwdSwgXFx1MDAyNmF0dHIpO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTMwMS1cXHRcXHRicmVhaztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTE6MDU6NDguNDYzNzU2NTc0WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzIwMTY2OTIwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIHRoZSBLVk0gTG9vbmdBcmNoIFZDUFUgQXR0cmlidXRlIFNldHRpbmcqKlxuXG5Pa2F5LCBzbyBJJ20gdHJhY2luZyB0aHJvdWdoIHRoaXMgY29kZSwgYW5kIGl0IGxvb2tzIGxpa2UgYGt2bV9hcmNoX3ZjcHVfaW9jdGxgIGlzIHRoZSBlbnRyeSBwb2ludCwgdWx0aW1hdGVseSBsZWFkaW5nIHRvIGBrdm1fbG9vbmdhcmNoX3ZjcHVfc2V0X2F0dHJgLiAgVGhhdCBtYWtlcyBzZW5zZTsgYGlvY3RsYCBpcyB0aGUgY2xhc3NpYyB3YXkgdG8gY29udHJvbCB0aGluZ3MuIEFuZCB0aGlzLCBpbiB0dXJuLCBjYWxscyBga3ZtX2xvb25nYXJjaF9jcHVjZmdfc2V0X2F0dHJgLiBZZXAsIHRoYXQgc2VxdWVuY2UgY29uZmlybXMgdGhpcyAqaXMqIGEgcGF0aCBhY2Nlc3NpYmxlIHRocm91Z2ggS1ZNIGlvY3Rscy4gSSdtIHNhdGlzZmllZCB0aGF0J3MgdGhlIGxpbmsuXG5cbk5vdywgdG8gdW5kZXJzdGFuZCB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCBhbnkgcmVsYXRlZCBkZXBlbmRlbmNpZXMsIEkgbmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZyBmaWxlLiBMZXQncyBzZWUgd2hhdCdzIGluIGBhcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZ2AuIEl04oCZbGwgYmUgaW50ZXJlc3RpbmcgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgY29tcGlsZS10aW1lIGZsYWdzIGdvdmVybmluZyB0aGlzIGZ1bmN0aW9uYWxpdHkuIFRoYXQgc2hvdWxkIGNsZWFyIHVwIHRoZSBidWlsZCBjb25kaXRpb25zIGZvciBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDE1NCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDExOjA1OjUxLjY2NTQyODUxOFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTEyMDk0NzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEtWTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxcbmFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnLTE5LVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnOjIwOmNvbmZpZyBLVk1cXG5hcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZy0yMS1cXHR0cmlzdGF0ZSBcXFwiS2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMTowNTo1MS44MTY2NDQ1MDRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNjQ2NjMzNjQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKktWTSBDb25maWd1cmF0aW9uIEFuYWx5c2lzKipcblxuT2theSwgc28gdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiBpcyBkZWZpbml0ZWx5IEtWTS4gQnV0IEkgbmVlZCB0byBiZSB0aG9yb3VnaC4gSXMgdGhlcmUgKmFueSogb3RoZXIgY29uZmlndXJhdGlvbiBwb3NzaWJseSBhY3RpdmU/IEkgbmVlZCB0byBydWxlIHRoYXQgb3V0LiBMZXQncyBkaWcgaW4gYW5kIGV4YW1pbmUgdGhlIGRlcGVuZGVuY2llczsgSSdsbCBzdGFydCBieSBjaGVja2luZyB0aGUgS2NvbmZpZyBmaWxlIGZvciB0aGUgTG9vbmdBcmNoIGFyY2hpdGVjdHVyZSwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUga3ZtIGRpcmVjdG9yeSBhdCBgYXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWdgLiBUaGlzIHNob3VsZCByZXZlYWwgYW55IGNvbmRpdGlvbmFsIGRlcGVuZGVuY2llcyBvciBvcHRpb25zIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQuIEl0J3MgdGltZSB0byB1bmRlcnN0YW5kIHRoZSBjb21wbGV0ZSBwaWN0dXJlIG9mIHRoaXMga3ZtIGNvbmZpZ3VyYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ1ODYsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMTowNTo1NC40NjMyODIyNjVaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODA3MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiYXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIEtWTSBjb25maWd1cmF0aW9uXFxuICAgNDpcXHQjXFxuICAgNTpcXHRcXG4gICA2OlxcdHNvdXJjZSBcXFwidmlydC9rdm0vS2NvbmZpZ1xcXCJcXG4gICA3OlxcdFxcbiAgIDg6XFx0bWVudWNvbmZpZyBWSVJUVUFMSVpBVElPTlxcbiAgIDk6XFx0XFx0Ym9vbCBcXFwiVmlydHVhbGl6YXRpb25cXFwiXFxuICAxMDpcXHRcXHRoZWxwXFxuICAxMTpcXHRcXHQgIFNheSBZIGhlcmUgdG8gZ2V0IHRvIHNlZSBvcHRpb25zIGZvciB1c2luZyB5b3VyIExpbnV4IGhvc3QgdG8gcnVuXFxuICAxMjpcXHRcXHQgIG90aGVyIG9wZXJhdGluZyBzeXN0ZW1zIGluc2lkZSB2aXJ0dWFsIG1hY2hpbmVzIChndWVzdHMpLlxcbiAgMTM6XFx0XFx0ICBUaGlzIG9wdGlvbiBhbG9uZSBkb2VzIG5vdCBhZGQgYW55IGtlcm5lbCBjb2RlLlxcbiAgMTQ6XFx0XFxuICAxNTpcXHRcXHQgIElmIHlvdSBzYXkgTiwgYWxsIG9wdGlvbnMgaW4gdGhpcyBzdWJtZW51IHdpbGwgYmUgc2tpcHBlZCBhbmRcXG4gIDE2OlxcdFxcdCAgZGlzYWJsZWQuXFxuICAxNzpcXHRcXG4gIDE4OlxcdGlmIFZJUlRVQUxJWkFUSU9OXFxuICAxOTpcXHRcXG4gIDIwOlxcdGNvbmZpZyBLVk1cXG4gIDIxOlxcdFxcdHRyaXN0YXRlIFxcXCJLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcXFwiXFxuICAyMjpcXHRcXHRkZXBlbmRzIG9uIEFTX0hBU19MVlpfRVhURU5TSU9OIFxcdTAwMjZcXHUwMDI2IDY0QklUXFxuICAyMzpcXHRcXHRzZWxlY3QgSEFWRV9LVk1fRElSVFlfUklOR19BQ1FfUkVMXFxuICAyNDpcXHRcXHRzZWxlY3QgSEFWRV9LVk1fSVJRX1JPVVRJTkdcXG4gIDI1OlxcdFxcdHNlbGVjdCBIQVZFX0tWTV9JUlFDSElQXFxuICAyNjpcXHRcXHRzZWxlY3QgSEFWRV9LVk1fTVNJXFxuICAyNzpcXHRcXHRzZWxlY3QgSEFWRV9LVk1fUkVBRE9OTFlfTUVNXFxuICAyODpcXHRcXHRzZWxlY3QgS1ZNX0NPTU1PTlxcbiAgMjk6XFx0XFx0c2VsZWN0IEtWTV9HRU5FUklDX0RJUlRZTE9HX1JFQURfUFJPVEVDVFxcbiAgMzA6XFx0XFx0c2VsZWN0IEtWTV9HRU5FUklDX0hBUkRXQVJFX0VOQUJMSU5HXFxuICAzMTpcXHRcXHRzZWxlY3QgS1ZNX01NSU9cXG4gIDMyOlxcdFxcdHNlbGVjdCBWSVJUX1hGRVJfVE9fR1VFU1RfV09SS1xcbiAgMzM6XFx0XFx0c2VsZWN0IFNDSEVEX0lORk9cXG4gIDM0OlxcdFxcdHNlbGVjdCBHVUVTVF9QRVJGX0VWRU5UUyBpZiBQRVJGX0VWRU5UU1xcbiAgMzU6XFx0XFx0aGVscFxcbiAgMzY6XFx0XFx0ICBTdXBwb3J0IGhvc3RpbmcgdmlydHVhbGl6ZWQgZ3Vlc3QgbWFjaGluZXMgdXNpbmdcXG4gIDM3OlxcdFxcdCAgaGFyZHdhcmUgdmlydHVhbGl6YXRpb24gZXh0ZW5zaW9ucy4gWW91IHdpbGwgbmVlZFxcbiAgMzg6XFx0XFx0ICBhIHByb2Nlc3NvciBlcXVpcHBlZCB3aXRoIHZpcnR1YWxpemF0aW9uIGV4dGVuc2lvbnMuXFxuICAzOTpcXHRcXG4gIDQwOlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gIDQxOlxcdFxcbiAgNDI6XFx0ZW5kaWYgIyBWSVJUVUFMSVpBVElPTlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMTowNTo1NC40NjMzNjQ5NzVaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDc3MDc1NTA5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIExvb25nQXJjaCBLVk0gUGF0Y2ggZm9yIFN5emthbGxlciBJbnRlZ3JhdGlvbioqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgY2xlYXJseSByZWxhdGVkIHRvIEtWTSBjb25maWd1cmF0aW9uLCBteSBmaXJzdCB0aG91Z2h0IGlzIHRvIGVuc3VyZSB0aGUgY29uZmlndXJhdGlvbnMgYXJlIGNvcnJlY3QuIFRoaXMgaXMgZm9yIHRoZSBMb29uZ0FyY2ggYXJjaGl0ZWN0dXJlLCBzbyBJIG5lZWQgdG8gYXNzZXNzIHdoZXRoZXIgU3l6a2FsbGVyIGlzIGNhcGFibGUgb2YgZnV6emluZyB0aGlzIGFyY2hpdGVjdHVyZSBlZmZlY3RpdmVseS4gSSBrbm93IFN5emthbGxlciBoYXMgc29tZSBMb29uZ0FyY2ggc3VwcG9ydCwgYnV0IGl0J3Mgb2Z0ZW4gbW9yZSBhYm91dCB0aGUgcHJvdmlkZWQgY29uZmlncyBhbmQgc3ltYm9sczsgdGhlIGZ1enppbmcgaW5mcmFzdHJ1Y3R1cmUgdGFrZXMgb3ZlciBmcm9tIHRoZXJlLCBhc3N1bWluZyBpdCBoYXMgdGhlIGJ1aWx0LWluIGFiaWxpdHkuIFRoZSBrZXkgY29uZmlndXJhdGlvbnMgSSBuZWVkIHRvIGZvY3VzIG9uIGFyZSB0aGUgS1ZNIHNldHRpbmdzLlxuXG5Ob3csIEknbSB0aGlua2luZyBhYm91dCB0aGUgc3BlY2lmaWMgZnVuY3Rpb25zIGltcGxpY2F0ZWQgYnkgdGhlIHBhdGNoOiBga3ZtX2xvb25nYXJjaF92Y3B1X3NldF9hdHRyYCBhbmQgYGt2bV9sb29uZ2FyY2hfY3B1Y2ZnX3NldF9hdHRyYC4gTXkgYXBwcm9hY2ggaXMgdG8gc2VlIHdoaWNoIGZ1bmN0aW9uIEkgY2FuIHVzZSBpbiB0aGUgZnV6emluZyBwcm9jZXNzLiBga3ZtX2xvb25nYXJjaF9jcHVjZmdfc2V0X2F0dHJgIGxvb2tzIHN0YXRpYywgd2hpY2ggbWVhbnMgSSBjYW4ndCBkaXJlY3RseSB1c2UgaXQuIFRoaXMgYnJpbmdzIG1lIHRvIGVpdGhlciBga3ZtX2FyY2hfdmNwdV9pb2N0bGAgb3IsIGlmIGBrdm1fbG9vbmdhcmNoX3ZjcHVfc2V0X2F0dHJgIHdhc24ndCBpbmxpbmVkLCBJIHdvdWxkIHRyeSBpdC4gSSBuZWVkIHRvIHF1aWNrbHkgY29uZmlybSB0aGF0IGBrdm1fbG9vbmdhcmNoX3ZjcHVfc2V0X2F0dHJgIGlzIGluZGVlZCBzdGF0aWMuIEFoLCB5ZXMsIGl0IGlzLlxuXG5UaGF0IGxlYXZlcyBga3ZtX2FyY2hfdmNwdV9pb2N0bGAgYXMgdGhlIHByaW1hcnkgY2FuZGlkYXRlLiBMZXQgbWUgdmVyaWZ5IGl0J3Mgbm90IHN0YXRpYy4gR29vZCwgaXQgaXMgbm9uLXN0YXRpYy4gVGhpcyBsb29rcyBsaWtlIHRoZSBtYWluIGVudHJ5IHBvaW50IHRvIGZvY3VzIG9uIGZvciB0aGlzIGZ1enppbmcgZWZmb3J0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MzI1LCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTE6MDU6NTkuMjM0MTIzNTE0WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzQzNDY4ODA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bV9hcmNoX3ZjcHVfaW9jdGxcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA2NDMgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmFyY2gvYXJtNjQva3ZtL2FybS5jPTc4MT1zdGF0aWMgYm9vbCBrdm1fYXJtX3ZjcHVfc3VzcGVuZGVkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL2FybS5jLTc4NS1cXG5hcmNoL2FybTY0L2t2bS9hcm0uYzo3ODY6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X21wc3RhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvYXJtNjQva3ZtL2FybS5jLTc4Ny1cXHRcXHRcXHRcXHQgICAgc3RydWN0IGt2bV9tcF9zdGF0ZSAqbXBfc3RhdGUpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS9hcm0uYy03OTMtXFxuYXJjaC9hcm02NC9rdm0vYXJtLmM6Nzk0OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9tcHN0YXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL2FybTY0L2t2bS9hcm0uYy03OTUtXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBrdm1fbXBfc3RhdGUgKm1wX3N0YXRlKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vYXJtLmM9MTA2Nj1zdGF0aWMgaW50IGt2bV92Y3B1X3N1c3BlbmQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vYXJtLmMtMTA5Mi1cXHQgKiBPdGhlcndpc2UsIHdlIHdlcmUgdW5ibG9ja2VkIHRvIHByb2Nlc3MgYSBkaWZmZXJlbnQgZXZlbnQsIHN1Y2ggYXMgYVxcbmFyY2gvYXJtNjQva3ZtL2FybS5jOjEwOTM6XFx0ICogcGVuZGluZyBzaWduYWwuIFJldHVybiAxIGFuZCBhbGxvdyBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bigpIHRvXFxuYXJjaC9hcm02NC9rdm0vYXJtLmMtMTA5NC1cXHQgKiBwcm9jZXNzIHRoZSBldmVudC5cXG4tLVxcbmFyY2gvYXJtNjQva3ZtL2FybS5jPTEyMzA9c3RhdGljIGludCBub2luc3RyIGt2bV9hcm1fdmNwdV9lbnRlcl9leGl0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL2FybS5jLTEyNDEtLyoqXFxuYXJjaC9hcm02NC9rdm0vYXJtLmM6MTI0MjogKiBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1biAtIHRoZSBtYWluIFZDUFUgcnVuIGZ1bmN0aW9uIHRvIGV4ZWN1dGUgZ3Vlc3QgY29kZVxcbmFyY2gvYXJtNjQva3ZtL2FybS5jLTEyNDMtICogQHZjcHU6XFx0VGhlIFZDUFUgcG9pbnRlclxcbi0tXFxuYXJjaC9hcm02NC9rdm0vYXJtLmMtMTI1MC0gKi9cXG5hcmNoL2FybTY0L2t2bS9hcm0uYzoxMjUxOmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuYXJjaC9hcm02NC9rdm0vYXJtLmMtMTI1Mi17XFxuLS1cXG5hcmNoL2FybTY0L2t2bS9hcm0uYz0xNjgwPXN0YXRpYyBpbnQga3ZtX3ZjcHVfc2V0X3RhcmdldChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS9hcm0uYy0xNzAyLVxcbmFyY2gvYXJtNjQva3ZtL2FybS5jOjE3MDM6c3RhdGljIGludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3ZjcHVfaW5pdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC9hcm02NC9rdm0vYXJtLmMtMTcwNC1cXHRcXHRcXHRcXHRcXHQgc3RydWN0IGt2bV92Y3B1X2luaXQgKmluaXQpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS9hcm0uYz0xODA2PXN0YXRpYyBpbnQga3ZtX2FybV92Y3B1X3NldF9ldmVudHMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vYXJtLmMtMTgyMy1cXG5hcmNoL2FybTY0L2t2bS9hcm0uYzoxODI0Omxvbmcga3ZtX2FyY2hfdmNwdV9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCxcXG5hcmNoL2FybTY0L2t2bS9hcm0uYy0xODI1LVxcdFxcdFxcdCB1bnNpZ25lZCBpbnQgaW9jdGwsIHVuc2lnbmVkIGxvbmcgYXJnKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vYXJtLmMtMTgzOS1cXG5hcmNoL2FybTY0L2t2bS9hcm0uYzoxODQwOlxcdFxcdHIgPSBrdm1fYXJjaF92Y3B1X2lvY3RsX3ZjcHVfaW5pdCh2Y3B1LCBcXHUwMDI2aW5pdCk7XFxuYXJjaC9hcm02NC9rdm0vYXJtLmMtMTg0MS1cXHRcXHRicmVhaztcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL2d1ZXN0LmM9NTExPXN0YXRpYyBpbnQgc2V0X3N2ZV9yZWcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBjb25zdCBzdHJ1Y3Qga3ZtX29uZV9yZWcgKnJlZylcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL2d1ZXN0LmMtNTM1LVxcbmFyY2gvYXJtNjQva3ZtL2d1ZXN0LmM6NTM2OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9yZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9yZWdzICpyZWdzKVxcbmFyY2gvYXJtNjQva3ZtL2d1ZXN0LmMtNTM3LXtcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL2d1ZXN0LmMtNTQwLVxcbmFyY2gvYXJtNjQva3ZtL2d1ZXN0LmM6NTQxOmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9yZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9yZWdzICpyZWdzKVxcbmFyY2gvYXJtNjQva3ZtL2d1ZXN0LmMtNTQyLXtcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL2d1ZXN0LmM9NzE5PWludCBrdm1fYXJtX3NldF9yZWcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBjb25zdCBzdHJ1Y3Qga3ZtX29uZV9yZWcgKnJlZylcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL2d1ZXN0LmMtNzM1LVxcbmFyY2gvYXJtNjQva3ZtL2d1ZXN0LmM6NzM2OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC9hcm02NC9rdm0vZ3Vlc3QuYy03MzctXFx0XFx0XFx0XFx0ICBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncylcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL2d1ZXN0LmMtNzQxLVxcbmFyY2gvYXJtNjQva3ZtL2d1ZXN0LmM6NzQyOmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC9hcm02NC9rdm0vZ3Vlc3QuYy03NDMtXFx0XFx0XFx0XFx0ICBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncylcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL2d1ZXN0LmM9ODI1PXUzMiBfX2F0dHJpYnV0ZV9jb25zdF9fIGt2bV90YXJnZXRfY3B1KHZvaWQpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS9ndWVzdC5jLTg1NC1cXG5hcmNoL2FybTY0L2t2bS9ndWVzdC5jOjg1NTppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfZnB1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9mcHUgKmZwdSlcXG5hcmNoL2FybTY0L2t2bS9ndWVzdC5jLTg1Ni17XFxuLS1cXG5hcmNoL2FybTY0L2t2bS9ndWVzdC5jLTg1OS1cXG5hcmNoL2FybTY0L2t2bS9ndWVzdC5jOjg2MDppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfZnB1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9mcHUgKmZwdSlcXG5hcmNoL2FybTY0L2t2bS9ndWVzdC5jLTg2MS17XFxuLS1cXG5hcmNoL2FybTY0L2t2bS9ndWVzdC5jLTg2NC1cXG5hcmNoL2FybTY0L2t2bS9ndWVzdC5jOjg2NTppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF90cmFuc2xhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvYXJtNjQva3ZtL2d1ZXN0LmMtODY2LVxcdFxcdFxcdFxcdCAgc3RydWN0IGt2bV90cmFuc2xhdGlvbiAqdHIpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS9ndWVzdC5jLTg3MS0vKipcXG5hcmNoL2FybTY0L2t2bS9ndWVzdC5jOjg3MjogKiBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9ndWVzdF9kZWJ1ZyAtIHNldCB1cCBndWVzdCBkZWJ1Z2dpbmdcXG5hcmNoL2FybTY0L2t2bS9ndWVzdC5jLTg3My0gKiBAdmNwdTogdGhlIHZDUFUgcG9pbnRlclxcbi0tXFxuYXJjaC9hcm02NC9rdm0vZ3Vlc3QuYy04ODAtICovXFxuYXJjaC9hcm02NC9rdm0vZ3Vlc3QuYzo4ODE6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X2d1ZXN0X2RlYnVnKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL2FybTY0L2t2bS9ndWVzdC5jLTg4Mi1cXHRcXHRcXHRcXHRcXHRzdHJ1Y3Qga3ZtX2d1ZXN0X2RlYnVnICpkYmcpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS9oeXAvbnZoZS9zd2l0Y2guYz0yMjY9c3RhdGljIGlubGluZSBib29sIGZpeHVwX2d1ZXN0X2V4aXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgKmV4aXRfY29kZSlcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL2h5cC9udmhlL3N3aXRjaC5jLTIzOC1cXHQgKiBpdC4gIFRoZSBjaGVjayBiZWxvdyBpcyBiYXNlZCBvbiB0aGUgb25lIGluXFxuYXJjaC9hcm02NC9rdm0vaHlwL252aGUvc3dpdGNoLmM6MjM5OlxcdCAqIGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuKCkuXFxuYXJjaC9hcm02NC9rdm0vaHlwL252aGUvc3dpdGNoLmMtMjQwLVxcdCAqL1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYz00MjA9dm1fZmF1bHRfdCBrdm1fYXJjaF92Y3B1X2ZhdWx0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IHZtX2ZhdWx0ICp2bWYpXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTQyNC1cXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jOjQyNTppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF90cmFuc2xhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtNDI2LVxcdFxcdFxcdFxcdCAgc3RydWN0IGt2bV90cmFuc2xhdGlvbiAqdHIpXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jPTQ0ND1pbnQga3ZtX2FyY2hfdmNwdV9kdW1wX3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy00NjYtXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzo0Njc6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X21wc3RhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtNDY4LVxcdFxcdFxcdFxcdHN0cnVjdCBrdm1fbXBfc3RhdGUgKm1wX3N0YXRlKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy00NzQtXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzo0NzU6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X21wc3RhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtNDc2LVxcdFxcdFxcdFxcdHN0cnVjdCBrdm1fbXBfc3RhdGUgKm1wX3N0YXRlKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy00OTAtXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzo0OTE6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X2d1ZXN0X2RlYnVnKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTQ5Mi1cXHRcXHRcXHRcXHRcXHRzdHJ1Y3Qga3ZtX2d1ZXN0X2RlYnVnICpkYmcpXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jPTk4ND1zdGF0aWMgaW50IGt2bV9zZXRfcmVnKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgY29uc3Qgc3RydWN0IGt2bV9vbmVfcmVnICpyZWcpXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEwMDEtXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzoxMDAyOmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTAwMy17XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEwMDYtXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzoxMDA3OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTAwOC17XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEwMTEtXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzoxMDEyOmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9yZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9yZWdzICpyZWdzKVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTAxMy17XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEwMjMtXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzoxMDI0OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9yZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9yZWdzICpyZWdzKVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTAyNS17XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jPTEyMTk9c3RhdGljIGludCBrdm1fbG9vbmdhcmNoX3ZjcHVfc2V0X2F0dHIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMjM3LVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6MTIzODpsb25nIGt2bV9hcmNoX3ZjcHVfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMjM5LVxcdFxcdFxcdCB1bnNpZ25lZCBpbnQgaW9jdGwsIHVuc2lnbmVkIGxvbmcgYXJnKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMzEwLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6MTMxMTppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfZnB1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9mcHUgKmZwdSlcXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEzMTIte1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMzIyLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6MTMyMzppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfZnB1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9mcHUgKmZwdSlcXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEzMjQte1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYz0xODI5PXZvaWQga3ZtX2FyY2hfdmNwdV9wdXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xODUyLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6MTg1MzppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTg1NC17XFxuLS1cXG5hcmNoL21pcHMva3ZtL21pcHMuYz0zODY9dm9pZCBrdm1fYXJjaF92Y3B1X2Rlc3Ryb3koc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9taXBzL2t2bS9taXBzLmMtMzk3LVxcbmFyY2gvbWlwcy9rdm0vbWlwcy5jOjM5ODppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfZ3Vlc3RfZGVidWcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvbWlwcy9rdm0vbWlwcy5jLTM5OS1cXHRcXHRcXHRcXHRcXHRzdHJ1Y3Qga3ZtX2d1ZXN0X2RlYnVnICpkYmcpXFxuLS1cXG5hcmNoL21pcHMva3ZtL21pcHMuYz00MTE9c3RhdGljIGludCBub2luc3RyIGt2bV9taXBzX3ZjcHVfZW50ZXJfZXhpdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL21pcHMva3ZtL21pcHMuYy00MjEtXFxuYXJjaC9taXBzL2t2bS9taXBzLmM6NDIyOmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuYXJjaC9taXBzL2t2bS9taXBzLmMtNDIzLXtcXG4tLVxcbmFyY2gvbWlwcy9rdm0vbWlwcy5jPTQ3OT1pbnQga3ZtX3ZjcHVfaW9jdGxfaW50ZXJydXB0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG4tLVxcbmFyY2gvbWlwcy9rdm0vbWlwcy5jLTUxNC1cXG5hcmNoL21pcHMva3ZtL21pcHMuYzo1MTU6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X21wc3RhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvbWlwcy9rdm0vbWlwcy5jLTUxNi1cXHRcXHRcXHRcXHQgICAgc3RydWN0IGt2bV9tcF9zdGF0ZSAqbXBfc3RhdGUpXFxuLS1cXG5hcmNoL21pcHMva3ZtL21pcHMuYy01MjAtXFxuYXJjaC9taXBzL2t2bS9taXBzLmM6NTIxOmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9tcHN0YXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL21pcHMva3ZtL21pcHMuYy01MjItXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBrdm1fbXBfc3RhdGUgKm1wX3N0YXRlKVxcbi0tXFxuYXJjaC9taXBzL2t2bS9taXBzLmM9ODk4PWxvbmcga3ZtX2FyY2hfdmNwdV91bmxvY2tlZF9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCwgdW5zaWduZWQgaW50IGlvY3RsLFxcbi0tXFxuYXJjaC9taXBzL2t2bS9taXBzLmMtOTE3LVxcbmFyY2gvbWlwcy9rdm0vbWlwcy5jOjkxODpsb25nIGt2bV9hcmNoX3ZjcHVfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsIHVuc2lnbmVkIGludCBpb2N0bCxcXG5hcmNoL21pcHMva3ZtL21pcHMuYy05MTktXFx0XFx0XFx0IHVuc2lnbmVkIGxvbmcgYXJnKVxcbi0tXFxuYXJjaC9taXBzL2t2bS9taXBzLmM9OTg3PWludCBrdm1fYXJjaF92bV9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCwgdW5zaWduZWQgaW50IGlvY3RsLCB1bnNpZ25lZCBsb25nIGFyZylcXG4tLVxcbmFyY2gvbWlwcy9rdm0vbWlwcy5jLTk5OC1cXG5hcmNoL21pcHMva3ZtL21pcHMuYzo5OTk6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL21pcHMva3ZtL21pcHMuYy0xMDAwLVxcdFxcdFxcdFxcdCAgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXFxuLS1cXG5hcmNoL21pcHMva3ZtL21pcHMuYy0xMDA0LVxcbmFyY2gvbWlwcy9rdm0vbWlwcy5jOjEwMDU6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL21pcHMva3ZtL21pcHMuYy0xMDA2LVxcdFxcdFxcdFxcdCAgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXFxuLS1cXG5hcmNoL21pcHMva3ZtL21pcHMuYz0xMDExPXZvaWQga3ZtX2FyY2hfdmNwdV9wb3N0Y3JlYXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gvbWlwcy9rdm0vbWlwcy5jLTEwMTQtXFxuYXJjaC9taXBzL2t2bS9taXBzLmM6MTAxNTppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfZnB1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9mcHUgKmZwdSlcXG5hcmNoL21pcHMva3ZtL21pcHMuYy0xMDE2LXtcXG4tLVxcbmFyY2gvbWlwcy9rdm0vbWlwcy5jLTEwMTktXFxuYXJjaC9taXBzL2t2bS9taXBzLmM6MTAyMDppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfZnB1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9mcHUgKmZwdSlcXG5hcmNoL21pcHMva3ZtL21pcHMuYy0xMDIxLXtcXG4tLVxcbmFyY2gvbWlwcy9rdm0vbWlwcy5jPTEwODI9aW50IGt2bV9hcmNoX3ZjcHVfZHVtcF9yZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gvbWlwcy9rdm0vbWlwcy5jLTExMTItXFxuYXJjaC9taXBzL2t2bS9taXBzLmM6MTExMzppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcmVncyAqcmVncylcXG5hcmNoL21pcHMva3ZtL21pcHMuYy0xMTE0LXtcXG4tLVxcbmFyY2gvbWlwcy9rdm0vbWlwcy5jLTExMjktXFxuYXJjaC9taXBzL2t2bS9taXBzLmM6MTEzMDppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcmVncyAqcmVncylcXG5hcmNoL21pcHMva3ZtL21pcHMuYy0xMTMxLXtcXG4tLVxcbmFyY2gvbWlwcy9rdm0vbWlwcy5jLTExNDYtXFxuYXJjaC9taXBzL2t2bS9taXBzLmM6MTE0NzppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF90cmFuc2xhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvbWlwcy9rdm0vbWlwcy5jLTExNDgtXFx0XFx0XFx0XFx0ICBzdHJ1Y3Qga3ZtX3RyYW5zbGF0aW9uICp0cilcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzLmM9NTI1PXZvaWQga3ZtcHBjX3N1YmFyY2hfdmNwdV91bmluaXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYy01MjgtXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYzo1Mjk6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szcy5jLTUzMC1cXHRcXHRcXHRcXHQgIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYy01NDAtXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYzo1NDE6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szcy5jLTU0Mi1cXHRcXHRcXHRcXHQgIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYy01NTItXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYzo1NTM6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3JlZ3MgKnJlZ3MpXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYy01NTQte1xcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYy01ODAtXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYzo1ODE6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3JlZ3MgKnJlZ3MpXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYy01ODIte1xcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYy02MDctXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYzo2MDg6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X2ZwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fZnB1ICpmcHUpXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYy02MDkte1xcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYy02MTItXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYzo2MTM6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X2ZwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fZnB1ICpmcHUpXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYy02MTQte1xcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYz04MDc9aW50IGt2bXBwY192Y3B1X3J1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szcy5jLTgxMS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szcy5jOjgxMjppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF90cmFuc2xhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzLmMtODEzLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qga3ZtX3RyYW5zbGF0aW9uICp0cilcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzLmMtODE3LVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzLmM6ODE4OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9ndWVzdF9kZWJ1ZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYy04MTktXFx0XFx0XFx0XFx0XFx0c3RydWN0IGt2bV9ndWVzdF9kZWJ1ZyAqZGJnKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYz0xOTY4PXN0YXRpYyBpbnQga3ZtcHBjX2hhbmRsZV9uZXN0ZWRfZXhpdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTIwOTktXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyMTAwOnN0YXRpYyBpbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfc3JlZ3NfaHYoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjEwMS1cXHRcXHRcXHRcXHRcXHQgICAgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTIxMTQtXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyMTE1OnN0YXRpYyBpbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3NfaHYoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjExNi1cXHRcXHRcXHRcXHRcXHQgICAgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jPTY1MTM9c3RhdGljIHN0cnVjdCBrdm1wcGNfb3BzIGt2bV9vcHNfaHYgPSB7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo2NTE0OlxcdC5nZXRfc3JlZ3MgPSBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9zcmVnc19odixcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjY1MTU6XFx0LnNldF9zcmVncyA9IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3NyZWdzX2h2LFxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjUxNi1cXHQuZ2V0X29uZV9yZWcgPSBrdm1wcGNfZ2V0X29uZV9yZWdfaHYsXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19wci5jPTExMzU9aW50IGt2bXBwY19oYW5kbGVfZXhpdF9wcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGludCBleGl0X25yKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfcHIuYy0xNDU0LVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX3ByLmM6MTQ1NTpzdGF0aWMgaW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3NyZWdzX3ByKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19wci5jLTE0NTYtXFx0XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfcHIuYy0xNDgxLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX3ByLmM6MTQ4MjpzdGF0aWMgaW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3NyZWdzX3ByKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19wci5jLTE0ODMtXFx0XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfcHIuYz0yMDQ1PXN0YXRpYyBzdHJ1Y3Qga3ZtcHBjX29wcyBrdm1fb3BzX3ByID0ge1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX3ByLmM6MjA0NjpcXHQuZ2V0X3NyZWdzID0ga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfc3JlZ3NfcHIsXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfcHIuYzoyMDQ3OlxcdC5zZXRfc3JlZ3MgPSBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9zcmVnc19wcixcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19wci5jLTIwNDgtXFx0LmdldF9vbmVfcmVnID0ga3ZtcHBjX2dldF9vbmVfcmVnX3ByLFxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rZS5jPTE0NDI9dm9pZCBrdm1wcGNfc3ViYXJjaF92Y3B1X3VuaW5pdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmMtMTQ0Ni1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmM6MTQ0NzppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcmVncyAqcmVncylcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmMtMTQ0OC17XFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmMtMTQ3Ny1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmM6MTQ3ODppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcmVncyAqcmVncylcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmMtMTQ3OS17XFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmM9MTYwNT1pbnQga3ZtcHBjX3NldF9zcmVnc19pdm9yKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmMtMTYyOS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmM6MTYzMDppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfc3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvcG93ZXJwYy9rdm0vYm9va2UuYy0xNjMxLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncylcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9va2UuYy0xNjQ2LVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9va2UuYzoxNjQ3OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rZS5jLTE2NDgtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rZS5jPTE3Mjc9aW50IGt2bXBwY19zZXRfb25lX3JlZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBpZCxcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9va2UuYy0xNzk1LVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9va2UuYzoxNzk2OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9mcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX2ZwdSAqZnB1KVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9va2UuYy0xNzk3LXtcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9va2UuYy0xODAwLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9va2UuYzoxODAxOmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9mcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX2ZwdSAqZnB1KVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9va2UuYy0xODAyLXtcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9va2UuYy0xODA1LVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9va2UuYzoxODA2OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3RyYW5zbGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rZS5jLTE4MDctICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBrdm1fdHJhbnNsYXRpb24gKnRyKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rZS5jPTE5ODA9aW50IGt2bXBwY194bGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVsb25nIGVhZGRyLCBlbnVtIHhsYXRlX2luc3RkYXRhIHhsaWQsXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmMtMjAzMC1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmM6MjAzMTppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfZ3Vlc3RfZGVidWcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvcG93ZXJwYy9rdm0vYm9va2UuYy0yMDMyLVxcdFxcdFxcdFxcdFxcdCBzdHJ1Y3Qga3ZtX2d1ZXN0X2RlYnVnICpkYmcpXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL3Bvd2VycGMuYz0xNzMyPWludCBrdm1fdmNwdV9pb2N0bF9zZXRfb25lX3JlZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fb25lX3JlZyAqcmVnKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9wb3dlcnBjLmMtMTc4MC1cXG5hcmNoL3Bvd2VycGMva3ZtL3Bvd2VycGMuYzoxNzgxOmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuYXJjaC9wb3dlcnBjL2t2bS9wb3dlcnBjLmMtMTc4Mi17XFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL3Bvd2VycGMuYz0yMDAwPWJvb2wga3ZtX2FyY2hfaW50Y19pbml0aWFsaXplZChzdHJ1Y3Qga3ZtICprdm0pXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL3Bvd2VycGMuYy0yMDEyLVxcbmFyY2gvcG93ZXJwYy9rdm0vcG93ZXJwYy5jOjIwMTM6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X21wc3RhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvcG93ZXJwYy9rdm0vcG93ZXJwYy5jLTIwMTQtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGt2bV9tcF9zdGF0ZSAqbXBfc3RhdGUpXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL3Bvd2VycGMuYy0yMDE4LVxcbmFyY2gvcG93ZXJwYy9rdm0vcG93ZXJwYy5jOjIwMTk6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X21wc3RhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvcG93ZXJwYy9rdm0vcG93ZXJwYy5jLTIwMjAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGt2bV9tcF9zdGF0ZSAqbXBfc3RhdGUpXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL3Bvd2VycGMuYz0yMDI1PWxvbmcga3ZtX2FyY2hfdmNwdV91bmxvY2tlZF9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCwgdW5zaWduZWQgaW50IGlvY3RsLFxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9wb3dlcnBjLmMtMjAzOS1cXG5hcmNoL3Bvd2VycGMva3ZtL3Bvd2VycGMuYzoyMDQwOmxvbmcga3ZtX2FyY2hfdmNwdV9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCxcXG5hcmNoL3Bvd2VycGMva3ZtL3Bvd2VycGMuYy0yMDQxLSAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgaW9jdGwsIHVuc2lnbmVkIGxvbmcgYXJnKVxcbi0tXFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jPTI0NT1sb25nIGt2bV9hcmNoX3ZjcHVfdW5sb2NrZWRfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsIHVuc2lnbmVkIGludCBpb2N0bCxcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy0yNjUtXFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jOjI2Njpsb25nIGt2bV9hcmNoX3ZjcHVfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsXFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jLTI2Ny1cXHRcXHRcXHQgdW5zaWduZWQgaW50IGlvY3RsLCB1bnNpZ25lZCBsb25nIGFyZylcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy0zMTItXFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jOjMxMzppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfc3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy0zMTQtXFx0XFx0XFx0XFx0ICBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncylcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy0zMTgtXFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jOjMxOTppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy0zMjAtXFx0XFx0XFx0XFx0ICBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncylcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy0zMjQtXFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jOjMyNTppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfZnB1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9mcHUgKmZwdSlcXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmMtMzI2LXtcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy0zMjktXFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jOjMzMDppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfZnB1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9mcHUgKmZwdSlcXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmMtMzMxLXtcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy0zMzQtXFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jOjMzNTppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF90cmFuc2xhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy0zMzYtXFx0XFx0XFx0XFx0ICBzdHJ1Y3Qga3ZtX3RyYW5zbGF0aW9uICp0cilcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy0zNDAtXFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jOjM0MTppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcmVncyAqcmVncylcXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmMtMzQyLXtcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy0zNDUtXFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jOjM0NjppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcmVncyAqcmVncylcXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmMtMzQ3LXtcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYz00OTE9Ym9vbCBrdm1fcmlzY3ZfdmNwdV9zdG9wcGVkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy00OTUtXFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jOjQ5NjppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfbXBzdGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jLTQ5Ny1cXHRcXHRcXHRcXHQgICAgc3RydWN0IGt2bV9tcF9zdGF0ZSAqbXBfc3RhdGUpXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmMtNTAzLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYzo1MDQ6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X21wc3RhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy01MDUtXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBrdm1fbXBfc3RhdGUgKm1wX3N0YXRlKVxcbi0tXFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jLTUzMi1cXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmM6NTMzOmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9ndWVzdF9kZWJ1ZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jLTUzNC1cXHRcXHRcXHRcXHRcXHRzdHJ1Y3Qga3ZtX2d1ZXN0X2RlYnVnICpkYmcpXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmM9NzUwPXN0YXRpYyB2b2lkIG5vaW5zdHIga3ZtX3Jpc2N2X3ZjcHVfZW50ZXJfZXhpdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmMtNzU5LVxcdCAqIEhUSU5TVCkgaGVyZSBiZWNhdXNlIHdlIGRvIGxvY2FsX2lycV9lbmFibGUoKSBhZnRlciB0aGlzXFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jOjc2MDpcXHQgKiBmdW5jdGlvbiBpbiBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bigpIHdoaWNoIGNhbiByZXN1bHQgaW5cXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmMtNzYxLVxcdCAqIGFuIGludGVycnVwdCBpbW1lZGlhdGVseSBhZnRlciBsb2NhbF9pcnFfZW5hYmxlKCkgYW5kIGNhblxcbi0tXFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jLTgyOS1cXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmM6ODMwOmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jLTgzMS17XFxuLS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM9Mzk0NT1pbnQga3ZtX2FyY2hfdmNwdV9zaG91bGRfa2ljayhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMzk1MS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6Mzk1MjpzdGF0aWMgaW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X29uZV9yZWcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0zOTUzLVxcdFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBrdm1fb25lX3JlZyAqcmVnKVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTQwMDAtXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjQwMDE6c3RhdGljIGludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9vbmVfcmVnKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNDAwMi1cXHRcXHRcXHRcXHRcXHQgICBzdHJ1Y3Qga3ZtX29uZV9yZWcgKnJlZylcXG4tLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy00MDUzLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzo0MDU0OnN0YXRpYyB2b2lkIGt2bV9hcmNoX3ZjcHVfaW9jdGxfbm9ybWFsX3Jlc2V0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNDA1NS17XFxuLS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNDA2NS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6NDA2NjpzdGF0aWMgdm9pZCBrdm1fYXJjaF92Y3B1X2lvY3RsX2luaXRpYWxfcmVzZXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy00MDY3LXtcXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNDA2OC1cXHQvKiBJbml0aWFsIHJlc2V0IGlzIGEgc3VwZXJzZXQgb2YgdGhlIG5vcm1hbCByZXNldCAqL1xcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzo0MDY5OlxcdGt2bV9hcmNoX3ZjcHVfaW9jdGxfbm9ybWFsX3Jlc2V0KHZjcHUpO1xcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy00MDcwLVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTQxMDktXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjQxMTA6c3RhdGljIHZvaWQga3ZtX2FyY2hfdmNwdV9pb2N0bF9jbGVhcl9yZXNldChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTQxMTEte1xcbi0tXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTQxMTQtXFx0LyogQ2xlYXIgcmVzZXQgaXMgYSBzdXBlcnNldCBvZiB0aGUgaW5pdGlhbCByZXNldCAqL1xcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzo0MTE1OlxcdGt2bV9hcmNoX3ZjcHVfaW9jdGxfaW5pdGlhbF9yZXNldCh2Y3B1KTtcXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNDExNi1cXG4tLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy00MTI1LVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzo0MTI2OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9yZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9yZWdzICpyZWdzKVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy00MTI3LXtcXG4tLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy00MTMzLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzo0MTM0OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9yZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9yZWdzICpyZWdzKVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy00MTM1LXtcXG4tLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy00MTQxLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzo0MTQyOmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTQxNDMtXFx0XFx0XFx0XFx0ICBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncylcXG4tLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy00MTUzLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzo0MTU0OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTQxNTUtXFx0XFx0XFx0XFx0ICBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncylcXG4tLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy00MTY1LVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzo0MTY2OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9mcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX2ZwdSAqZnB1KVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy00MTY3LXtcXG4tLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy00MTgwLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzo0MTgxOmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9mcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX2ZwdSAqZnB1KVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy00MTgyLXtcXG4tLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy00MTk1LVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzo0MTk2OnN0YXRpYyBpbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfaW5pdGlhbF9wc3coc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBwc3dfdCBwc3cpXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTQxOTcte1xcbi0tXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTQyMDgtXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjQyMDk6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfdHJhbnNsYXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNDIxMC1cXHRcXHRcXHRcXHQgIHN0cnVjdCBrdm1fdHJhbnNsYXRpb24gKnRyKVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTQyMTgtXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjQyMTk6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X2d1ZXN0X2RlYnVnKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNDIyMC1cXHRcXHRcXHRcXHRcXHRzdHJ1Y3Qga3ZtX2d1ZXN0X2RlYnVnICpkYmcpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNDI2MC1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6NDI2MTppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfbXBzdGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTQyNjItXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBrdm1fbXBfc3RhdGUgKm1wX3N0YXRlKVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTQyNzUtXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjQyNzY6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X21wc3RhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy00Mjc3LVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3Qga3ZtX21wX3N0YXRlICptcF9zdGF0ZSlcXG4tLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYz00OTk3PXN0YXRpYyB2b2lkIHN0b3JlX3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTUwMTctXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjUwMTg6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNTAxOS17XFxuLS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM9NTQ3Mz1zdGF0aWMgaW50IGt2bV9zMzkwX2hhbmRsZV9wdl92Y3B1X2R1bXAoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbi0tXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTU1MTQtXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjU1MTU6bG9uZyBrdm1fYXJjaF92Y3B1X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLFxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy01NTE2LVxcdFxcdFxcdCB1bnNpZ25lZCBpbnQgaW9jdGwsIHVuc2lnbmVkIGxvbmcgYXJnKVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTU1MzctXFx0XFx0XFx0YnJlYWs7XFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjU1Mzg6XFx0XFx0ciA9IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X2luaXRpYWxfcHN3KHZjcHUsIHBzdyk7XFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTU1MzktXFx0XFx0YnJlYWs7XFxuLS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNTU0Mi1cXHRcXHRyID0gMDtcXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6NTU0MzpcXHRcXHRrdm1fYXJjaF92Y3B1X2lvY3RsX2NsZWFyX3Jlc2V0KHZjcHUpO1xcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy01NTQ0LVxcdFxcdGlmIChrdm1fczM5MF9wdl9jcHVfaXNfcHJvdGVjdGVkKHZjcHUpKSB7XFxuLS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNTU1Mi1cXHRcXHRyID0gMDtcXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6NTU1MzpcXHRcXHRrdm1fYXJjaF92Y3B1X2lvY3RsX2luaXRpYWxfcmVzZXQodmNwdSk7XFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTU1NTQtXFx0XFx0aWYgKGt2bV9zMzkwX3B2X2NwdV9pc19wcm90ZWN0ZWQodmNwdSkpIHtcXG4tLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy01NTYzLVxcdFxcdHIgPSAwO1xcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzo1NTY0OlxcdFxcdGt2bV9hcmNoX3ZjcHVfaW9jdGxfbm9ybWFsX3Jlc2V0KHZjcHUpO1xcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy01NTY1LVxcdFxcdGlmIChrdm1fczM5MF9wdl9jcHVfaXNfcHJvdGVjdGVkKHZjcHUpKSB7XFxuLS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNTU4MS1cXHRcXHRpZiAoaW9jdGwgPT0gS1ZNX1NFVF9PTkVfUkVHKVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzo1NTgyOlxcdFxcdFxcdHIgPSBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9vbmVfcmVnKHZjcHUsIFxcdTAwMjZyZWcpO1xcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy01NTgzLVxcdFxcdGVsc2VcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTE6MDY6MDAuOTc3NTk5MjAyWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxNjgwNjc3MTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRm9jdXNpbmcgRnV6emluZyBvbiBMb29uZ0FyY2ggS1ZNIFZDUFUgQ29udHJvbCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGhvdyB0byBkaXJlY3QgZnV6emluZyBlZmZvcnRzIHJlbGF0ZWQgdG8gdGhlIExvb25nQXJjaCBLVk0gVkNQVS4gVGhlIGN1cnJlbnQgdGhvdWdodCBpcyB0aGF0IGBrdm1fYXJjaF92Y3B1X2lvY3RsYCBpcyBhIGdvb2QgY2FuZGlkYXRlLCBzaW5jZSBpdCdzIG5vbi1zdGF0aWMgYW5kIGFjY2Vzc2libGUgYXMgYSBnZW5lcmFsIEtWTSBBUEkgZnVuY3Rpb24uIEJ1dCwgaWYgSSBwdXQgdGhhdCBpbnRvIGBGb2N1c1N5bWJvbHNgLCBpdCdzIGdvaW5nIHRvIGFmZmVjdCAqYWxsKiBhcmNoaXRlY3R1cmVzLCBub3QganVzdCBMb29uZ0FyY2guIFRoYXQncyBub3QgaWRlYWwgZm9yIHRhcmdldGVkIGZ1enppbmcuIEknbSB3b25kZXJpbmcgaWYgdGhlcmUncyBhIExvb25nQXJjaC1zcGVjaWZpYyBmdW5jdGlvbiB0aGF0IHdvdWxkIGJlIGJldHRlci4gSG1tLCBga3ZtX2xvb25nYXJjaF92Y3B1X3NldF9hdHRyYCBhbmQgYGt2bV9sb29uZ2FyY2hfY3B1Y2ZnX3NldF9hdHRyYCBsb29rIHByb21pc2luZywgYnV0IHRoZXkncmUgYm90aCBzdGF0aWMuIFRoYXQncyBhIGRlYWwgYnJlYWtlci4gU28sIHdoaWxlIEkgKmNvdWxkKiB1c2UgYGt2bV9hcmNoX3ZjcHVfaW9jdGxgLCBpdCdzIHRvbyBnZW5lcmljLiBJJ20gdGhpbmtpbmcsIHRoZSBiZXN0IGFwcHJvYWNoIGlzIHRvIGNoZWNrIGBhcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jYCBmb3IgYW55IG90aGVyIG5vbi1zdGF0aWMgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gVkNQVSBjb25maWd1cmF0aW9uIG9yIGNvbnRyb2wuIFRoYXQgd2lsbCBlbnN1cmUgdGhhdCBJJ20gZm9jdXNpbmcgdGhlIGZ1enppbmcgb24gdGhlIG1vc3QgcmVsZXZhbnQgY29kZSBmb3IgdGhpcyBzcGVjaWZpYyBhcmNoaXRlY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4Mzk0LCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTc2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDExOjA2OjA2LjE0NTY2OTc4OVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDgxODI2NDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM9NDIwPXZtX2ZhdWx0X3Qga3ZtX2FyY2hfdmNwdV9mYXVsdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCB2bV9mYXVsdCAqdm1mKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy00MjQtXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzo0MjU6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfdHJhbnNsYXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTQyNi1cXHRcXHRcXHRcXHQgIHN0cnVjdCBrdm1fdHJhbnNsYXRpb24gKnRyKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYz00NDQ9aW50IGt2bV9hcmNoX3ZjcHVfZHVtcF9yZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtNDY2LVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6NDY3OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9tcHN0YXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTQ2OC1cXHRcXHRcXHRcXHRzdHJ1Y3Qga3ZtX21wX3N0YXRlICptcF9zdGF0ZSlcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtNDc0LVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6NDc1OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9tcHN0YXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTQ3Ni1cXHRcXHRcXHRcXHRzdHJ1Y3Qga3ZtX21wX3N0YXRlICptcF9zdGF0ZSlcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtNDkwLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6NDkxOmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9ndWVzdF9kZWJ1ZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy00OTItXFx0XFx0XFx0XFx0XFx0c3RydWN0IGt2bV9ndWVzdF9kZWJ1ZyAqZGJnKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYz05ODQ9c3RhdGljIGludCBrdm1fc2V0X3JlZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGNvbnN0IHN0cnVjdCBrdm1fb25lX3JlZyAqcmVnKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMDAxLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6MTAwMjppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfc3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncylcXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEwMDMte1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMDA2LVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6MTAwNzppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncylcXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEwMDgte1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMDExLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6MTAxMjppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcmVncyAqcmVncylcXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEwMTMte1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMDIzLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6MTAyNDppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcmVncyAqcmVncylcXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEwMjUte1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYz0xMjM4PWxvbmcga3ZtX2FyY2hfdmNwdV9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCxcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTMxMC1cXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jOjEzMTE6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X2ZwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fZnB1ICpmcHUpXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMzEyLXtcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTMyMi1cXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jOjEzMjM6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X2ZwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fZnB1ICpmcHUpXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMzI0LXtcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM9MTgyOT12b2lkIGt2bV9hcmNoX3ZjcHVfcHV0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTg1Mi1cXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jOjE4NTM6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTE4NTQte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMTowNjowNi4xOTM4NTcxNDdaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU0OTQ0NTQ4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIExvb25nQXJjaCBLVk0gSW1wbGVtZW50YXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBga3ZtX2FyY2hfdmNwdV9pb2N0bGAuIEl0J3MgbG9jYXRlZCBpbiBgYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuY2AsIHdoaWNoIG1ha2VzIHNlbnNlOyB0aGlzIGlzIHRoZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgaW1wbGVtZW50YXRpb24gb2YgdGhlIG1vcmUgZ2VuZXJhbCBLVk0gaW50ZXJmYWNlLiBSaWdodCwgc28gaWYgSSBjYWxsIGBrdm1fYXJjaF92Y3B1X2lvY3RsYCwgaXQgc2hvdWxkIHJlc29sdmUgdG8gdGhlIExvb25nQXJjaCB2ZXJzaW9uICppZiogdGhlIGZ1enplciBpcyB0YXJnZXRpbmcgTG9vbmdBcmNoLCB3aGljaCBpdCBzaG91bGQgYmUgaW4gdGhpcyBjYXNlLlxuXG5CdXQgd2FpdCwgSSBuZWVkIHRvIHJlbWVtYmVyIHdoYXQgKnRoaXMqIGZ1bmN0aW9uIGFjdHVhbGx5IGRvZXMuIEFoLCByaWdodCEgYGt2bV9hcmNoX3ZjcHVfaW9jdGxgIGhhbmRsZXMgYEtWTV9TRVRfREVWSUNFX0FUVFJgIGFuZCBgS1ZNX0hBU19ERVZJQ0VfQVRUUmAgY2FsbHMgcmVsYXRlZCB0byB0aGUgVkNQVS4gU28sIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIHRoZSBzb3VyY2UgY29kZSBpbiBgYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuY2AgdG8gc2VlICpleGFjdGx5KiBob3cgaXQncyBoYW5kbGluZyB0aG9zZSBzcGVjaWZpYyBpb2N0bHMuIFRpbWUgdG8gZGlnIGluIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDE4NSwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMTowNjoxMC43NDMzMDYzMjJaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3NzcyODk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImxvbmcga3ZtX2FyY2hfdmNwdV9pb2N0bFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM9MTIxOT1zdGF0aWMgaW50IGt2bV9sb29uZ2FyY2hfdmNwdV9zZXRfYXR0cihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEyMzctXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzoxMjM4Omxvbmcga3ZtX2FyY2hfdmNwdV9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCxcXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEyMzktXFx0XFx0XFx0IHVuc2lnbmVkIGludCBpb2N0bCwgdW5zaWduZWQgbG9uZyBhcmcpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDExOjA2OjEwLjc5MTA4NTQxMVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTIxOTE2NzM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkxvb25nQXJjaCBLVk0gTm9uLVN0YXRpYyBGdW5jdGlvbiBDaGVjayoqXG5cbk9rYXksIHNvIGBrdm1fYXJjaF92Y3B1X2lvY3RsYCBpcyBkZWZpbml0ZWx5IG5vdCBzdGF0aWMsIGdvdCBpdC4gTm93LCB0aGUgbmV4dCBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoZXJlIGFyZSAqYW55KiBvdGhlciBMb29uZ0FyY2gtc3BlY2lmaWMgZnVuY3Rpb25zIHdpdGhpbiB0aGUgS1ZNIGFyY2hpdGVjdHVyZSB0aGF0IGFyZW4ndCBkZWNsYXJlZCBhcyBzdGF0aWMuIFRoaXMgaXMgc29tZXRoaW5nIEkgbmVlZCB0byBxdWlja2x5IGFzY2VydGFpbi4gTGV0J3Mgc2VlLi4uSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgYGFyY2gvbG9vbmdhcmNoL2t2bS92bS5jYC4gSSdsbCB6ZXJvIGluIG9uIGBrdm1fYXJjaF9pbml0X3ZtYCBhbmQgc2VlIHdoYXQgdGhlIGRlY2xhcmF0aW9uIHRlbGxzIG1lLiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBhbnN3ZXIgSSBuZWVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDc1MSwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDExOjA2OjE0LjkxMzAwNjM1OFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQ0NDk3MjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX2FyY2hfaW5pdF92bVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL2xvb25nYXJjaC9rdm0vdm0uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2xvb25nYXJjaC9rdm0vdm0uYz0yOD1zdGF0aWMgdm9pZCBrdm1fdm1faW5pdF9mZWF0dXJlcyhzdHJ1Y3Qga3ZtICprdm0pXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vdm0uYy02MS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vdm0uYzo2MjppbnQga3ZtX2FyY2hfaW5pdF92bShzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgdHlwZSlcXG5hcmNoL2xvb25nYXJjaC9rdm0vdm0uYy02My17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDExOjA2OjE0Ljk2NzQ2NzgyN1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MTUyNTI2MDY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEZ1enppbmcgU3RyYXRlZ3kgZm9yIHRoZSBMb29uZ0FyY2ggS1ZNIFJhY2UgQ29uZGl0aW9uIEZpeCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGZpZ3VyaW5nIG91dCB0aGUgYmVzdCB3YXkgdG8gZnV6eiBpdC4gYGt2bV9hcmNoX2luaXRfdm1gIGlzIGEgcHJldHR5IGdlbmVyaWMgZnVuY3Rpb24sIGp1c3QgbGlrZSBga3ZtX2FyY2hfdmNwdV9pb2N0bGAsIHNvIEkgbmVlZCB0byBjaG9vc2UgY2FyZWZ1bGx5LiBTaW5jZSB0aGlzIHBhdGNoIHRhcmdldHMgdGhlIExvb25nQXJjaCBhcmNoaXRlY3R1cmUgc3BlY2lmaWNhbGx5LCB0aGUgZmFjdCB0aGF0IGBrdm1fYXJjaF92Y3B1X2lvY3RsYCBpcyBicm9hZCBpcyBsZXNzIG9mIGEgY29uY2Vybi4gSXQgbG9va3MgbGlrZSB0aGUgcGF0Y2ggbW9kaWZpZXMgYGt2bV9sb29uZ2FyY2hfY3B1Y2ZnX3NldF9hdHRyYCwgd2hpY2ggaXMgdGhlbiBjYWxsZWQgZnJvbSBga3ZtX2xvb25nYXJjaF92Y3B1X3NldF9hdHRyYCBhbmQgdGhlbiB1bHRpbWF0ZWx5IGBrdm1fYXJjaF92Y3B1X2lvY3RsYC4gSXQgbWlnaHQgYmUgdGVtcHRpbmcgdG8gZHJpbGwgZG93biBmdXJ0aGVyLCBidXQgc2luY2Ugd2UncmUgdGFyZ2V0aW5nIGEgdmVyeSBzcGVjaWZpYyBhcmNoaXRlY3R1cmUgSSBzaG91bGQgc3RpY2sgd2l0aCB0aGUgbW9zdCBnZW5lcmljIGVudHJ5IHBvaW50LlxuXG5JIGNoZWNrZWQgaWYgYGt2bV9sb29uZ2FyY2hfY3B1Y2ZnX3NldF9hdHRyYCB3YXMgZXhwb3J0YWJsZSBvciBub24tc3RhdGljLCBidXQgaXQncyBpbnRlcm5hbC4gYGt2bV9hcmNoX3ZjcHVfaW9jdGxgIHNlZW1zIHRvIGJlIHRoZSBiZXN0IGVudHJ5IHBvaW50IGZvciBmdXp6aW5nLCBnaXZlbiBpdHMgY29ubmVjdGl2aXR5LlxuXG5Ob3cgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJ20gbm90IG1pc3NpbmcgYW55dGhpbmcuIEkgZG9uJ3Qgc2VlIGFueSBvdGhlciBvYnZpb3VzIGNvbmZpZ3VyYXRpb24gcG9pbnRzIG91dHNpZGUgb2YgYEtWTWAuXG5cbkkgYWxzbyBuZWVkIHRvIHZlcmlmeSB0aGlzIGlzIGFjdHVhbGx5IGEgd29ydGh3aGlsZSB0YXJnZXQuIGBrdm1fYXJjaF92Y3B1X2lvY3RsYCBpcyBhbiBpb2N0bCwgbm90IGEgaG90IHBhdGgsIHNvIHRoYXQncyBnb29kLiBBbmQgeWVzLCBpdCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGluIEtWTSBmb3IgTG9vbmdBcmNoLCBzbyBpdCBpcyBhIGdvb2QgdGFyZ2V0LlxuXG5JbiBzdW1tYXJ5LCB0aGUgaW1wb3J0YW50IHBvaW50cyBhcmU6XG5cbiogICAqKldvcnRoRnV6emluZyoqOiB0cnVlXG4qICAgKipGb2N1c1N5bWJvbHMqKjogYGt2bV9hcmNoX3ZjcHVfaW9jdGxgLCBga3ZtX2FyY2hfaW5pdF92bWBcbiogICAqKkVuYWJsZUNvbmZpZ3MqKjogYEtWTWBcbiogICAqKlJlYXNvbmluZyoqOiBUaGlzIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gTG9vbmdBcmNoIEtWTSBDUFUgY29uZmlndXJhdGlvbiB1c2luZyBhIG5ldyBzcGlubG9jayAoYHB2X3NldHRpbmdfbG9ja2ApLiBJdCBkaXJlY3RseSBtb2RpZmllcyBLVk0gZnVuY3Rpb25hbGl0eSwgcmVhY2hhYmxlIHZpYSBWQ1BVIGlvY3RscywgbWFraW5nIGl0IGEgZ29vZCB0YXJnZXQgZm9yIGZ1enppbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMTA5LCJPdXRwdXRUb2tlbnMiOjEwNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMTowNjoyMy4xMTk5OTc4NjVaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NDczOTE0NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX2FyY2hfdmNwdV9pb2N0bFwiLFxuICAgIFwia3ZtX2FyY2hfaW5pdF92bVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gTG9vbmdBcmNoIEtWTSBDUFUgY29uZmlndXJhdGlvbiBieSBpbnRyb2R1Y2luZyBhIG5ldyBzcGlubG9jayBgcHZfc2V0dGluZ19sb2NrYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBLVk0gc3Vic3lzdGVtIHRoYXQgaXMgcmVhY2hhYmxlIHZpYSBWQ1BVIGlvY3Rscy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJrdm1fYXJjaF92Y3B1X2lvY3RsXCIsXG4gICAgXCJrdm1fYXJjaF9pbml0X3ZtXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiBMb29uZ0FyY2ggS1ZNIENQVSBjb25maWd1cmF0aW9uIGJ5IGludHJvZHVjaW5nIGEgbmV3IHNwaW5sb2NrIGBwdl9zZXR0aW5nX2xvY2tgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIEtWTSBzdWJzeXN0ZW0gdGhhdCBpcyByZWFjaGFibGUgdmlhIFZDUFUgaW9jdGxzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMTowNjoyMy4yMDQ3NDgyOTJaIiwiU2VxIjoyMSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY1NDQzMjczNTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMTowNjoyMy4yMDU0NTUxNTJaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NjU0MzYxNTYwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIHNwaW5sb2NrIChgcHZfc2V0dGluZ19sb2NrYCkgdG8gcHJvdGVjdCB0aGUgYHB2X2ZlYXR1cmVzYCBmaWVsZCBpbiBgc3RydWN0IGt2bV9hcmNoYCBmcm9tIGNvbmN1cnJlbnQgbW9kaWZpY2F0aW9ucyBkdXJpbmcgdkNQVSBjb25maWd1cmF0aW9uLiBUaGlzIGlzIGEgY29uY3VycmVuY3kvbG9ja2luZyBmaXggYWltZWQgYXQgcHJldmVudGluZyBkYXRhIHJhY2VzIG9yIGluY29uc2lzdGVudCBzdGF0ZXMgYWNyb3NzIHZDUFVzLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlLCBvciBjaGFuZ2VzIHRvIGJvdW5kcyBjaGVja2luZyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gQ29uY3VycmVuY3kgaXNzdWVzIGFuZCBkYXRhIHJhY2VzIGFyZSBiZXN0IGRldGVjdGVkIGJ5IHRvb2xzIGxpa2UgS0NTQU4gb3IgTE9DS0RFUCwgd2hpbGUgS0FTQU4gaGFuZGxlcyBtZW1vcnkgY29ycnVwdGlvbi4gS01TQU4gaXMgc3BlY2lmaWNhbGx5IGZvciBkZXRlY3RpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UsIHdoaWNoIGlzIG5vdCByZWxldmFudCB0byB0aGlzIHBhdGNoLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDNjZTdmM2U3NjEzNjE1ZmE0ODAwMDhiNzMxODVhZTJmZTE4N2ExYmFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEF1ZyAxNCAxMTowNTozNCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmggYi9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXG5pbmRleCAyM2NmYmVjZWJiZDc5Li4zNTM4YTE5OWFhYzYyIDEwMDY0NFxuLS0tIGEvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2hvc3QuaFxuKysrIGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2hvc3QuaFxuQEAgLTEyNSw2ICsxMjUsNyBAQCBzdHJ1Y3Qga3ZtX2FyY2gge1xuIFx0dW5zaWduZWQgaW50ICBwdGVfc2hpZnRzW01BWF9QR1RBQkxFX0xFVkVMU107XG4gXHR1bnNpZ25lZCBpbnQgIHJvb3RfbGV2ZWw7XG4gXHRzcGlubG9ja190ICAgIHBoeWlkX21hcF9sb2NrO1xuK1x0c3BpbmxvY2tfdCAgICBwdl9zZXR0aW5nX2xvY2s7XG4gXHRzdHJ1Y3Qga3ZtX3BoeWlkX21hcCAgKnBoeWlkX21hcDtcbiBcdC8qIEVuYWJsZWQgUFYgZmVhdHVyZXMgKi9cbiBcdHVuc2lnbmVkIGxvbmcgcHZfZmVhdHVyZXM7XG5kaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYyBiL2FyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmNcbmluZGV4IDIwYzIwN2Q4MGUzMWEuLmU0N2ZhNDYzYThiZWMgMTAwNjQ0XG4tLS0gYS9hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jXG4rKysgYi9hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jXG5AQCAtMTE2NSwxMCArMTE2NSwxNCBAQCBzdGF0aWMgaW50IGt2bV9sb29uZ2FyY2hfY3B1Y2ZnX3NldF9hdHRyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbiBcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbiBcdFx0LyogQWxsIHZDUFVzIG5lZWQgc2V0IHRoZSBzYW1lIFBWIGZlYXR1cmVzICovXG4rXHRcdHNwaW5fbG9jayhcdTAwMjZrdm0tXHUwMDNlYXJjaC5wdl9zZXR0aW5nX2xvY2spO1xuIFx0XHRpZiAoKGt2bS1cdTAwM2VhcmNoLnB2X2ZlYXR1cmVzIFx1MDAyNiBMT09OR0FSQ0hfUFZfRkVBVF9VUERBVEVEKVxuLVx0XHRcdFx0XHUwMDI2XHUwMDI2ICgoa3ZtLVx1MDAzZWFyY2gucHZfZmVhdHVyZXMgXHUwMDI2IHZhbGlkKSAhPSB2YWwpKVxuK1x0XHRcdFx0XHUwMDI2XHUwMDI2ICgoa3ZtLVx1MDAzZWFyY2gucHZfZmVhdHVyZXMgXHUwMDI2IHZhbGlkKSAhPSB2YWwpKSB7XG4rXHRcdFx0c3Bpbl91bmxvY2soXHUwMDI2a3ZtLVx1MDAzZWFyY2gucHZfc2V0dGluZ19sb2NrKTtcbiBcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbitcdFx0fVxuIFx0XHRrdm0tXHUwMDNlYXJjaC5wdl9mZWF0dXJlcyA9IHZhbCB8IExPT05HQVJDSF9QVl9GRUFUX1VQREFURUQ7XG4rXHRcdHNwaW5fdW5sb2NrKFx1MDAyNmt2bS1cdTAwM2VhcmNoLnB2X3NldHRpbmdfbG9jayk7XG4gXHRcdHJldHVybiAwO1xuIFx0ZGVmYXVsdDpcbiBcdFx0cmV0dXJuIC1FTlhJTztcbmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9rdm0vdm0uYyBiL2FyY2gvbG9vbmdhcmNoL2t2bS92bS5jXG5pbmRleCAxMzE3YzcxOGY4OTZhLi44NmJhN2Q1NGU4MWY4IDEwMDY0NFxuLS0tIGEvYXJjaC9sb29uZ2FyY2gva3ZtL3ZtLmNcbisrKyBiL2FyY2gvbG9vbmdhcmNoL2t2bS92bS5jXG5AQCAtNzYsNiArNzYsNyBAQCBpbnQga3ZtX2FyY2hfaW5pdF92bShzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgdHlwZSlcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXHR9XG4gXHRzcGluX2xvY2tfaW5pdChcdTAwMjZrdm0tXHUwMDNlYXJjaC5waHlpZF9tYXBfbG9jayk7XG4rXHRzcGluX2xvY2tfaW5pdChcdTAwMjZrdm0tXHUwMDNlYXJjaC5wdl9zZXR0aW5nX2xvY2spO1xuIFxuIFx0a3ZtX2luaXRfdm1jcyhrdm0pO1xuIFx0a3ZtX3ZtX2luaXRfZmVhdHVyZXMoa3ZtKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDExOjA2OjIzLjIwNTQ1NjI4MloiLCJTZXEiOjIzLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NTQzNTg2NDU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEtWTSBMb29uZ2FyY2ggUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHN0cmFpZ2h0Zm9yd2FyZC4gSXQncyBhZGRpbmcgYSBuZXcgc3BpbmxvY2ssIGBwdl9zZXR0aW5nX2xvY2tgLCB0byB0aGUgYGt2bV9hcmNoYCBzdHJ1Y3QgaW4gdGhlIExvb25nQXJjaCBLVk0gaW1wbGVtZW50YXRpb24uIEZyb20gd2hhdCBJIGNhbiBzZWUsIGl0J3MgaW5pdGlhbGl6ZWQgZHVyaW5nIFZNIGluaXRpYWxpemF0aW9uIGluIGBrdm1fYXJjaF9pbml0X3ZtYCBhbmQgdGhlbiB1c2VkIHRvIHByb3RlY3QgdGhlIGBrdm0tXHUwMDNlYXJjaC5wdl9mZWF0dXJlc2AgdmFyaWFibGUgd2l0aGluIGBrdm1fbG9vbmdhcmNoX2NwdWNmZ19zZXRfYXR0cmAuXG5cbkVzc2VudGlhbGx5LCB0aGlzIGlzIGEgY2xhc3NpYyBsb2NraW5nIGZpeCB0byByZXNvbHZlIGEgY29uY3VycmVuY3kgaXNzdWUsIGxpa2VseSBhIGRhdGEgcmFjZS4gVGhlIGNvZGUgY2xlYXJseSBvdXRsaW5lcyBhIHBhdHRlcm46IGxvY2ssIGNoZWNrIGEgY29uZGl0aW9uLCBtb2RpZnkgZGF0YSwgYW5kIHVubG9jaywgd2l0aCBhbiBlYXJseSBleGl0IGFuZCB1bmxvY2sgb24gZmFpbHVyZS4gVGhlIGNvZGUgaXMgY2xlYW4gYW5kIGFkZHJlc3NlcyBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiB3aGVuIHNldHRpbmcgdGhlIGBwdl9mZWF0dXJlc2AuXG5cblRoZSBwYXRjaCBkb2Vzbid0IGludm9sdmUgYW55IGNoYW5nZXMgdG8gaG93IGRhdGEgaXMgZXhwb3NlZCB0byB1c2Vyc3BhY2UsIG5vIG1vZGlmaWNhdGlvbnMgdG8gZXhpc3RpbmcgYm91bmRzIGNoZWNrcywgYW5kIG5vIGFsbG9jYXRpb24gb2YgYW55IGNvbXBsZXggc3RydWN0dXJlcy4gU2luY2UgdGhlIGJ1ZyB0aGlzIGlzIGFkZHJlc3NpbmcgaXMgYSBjb25jdXJyZW5jeSBpc3N1ZSBhbmQgaXQncyBiZWluZyBjYXVnaHQgYnkgS0NTQU4gb3IgTE9DS0RFUCwgdGhlcmUncyBubyBuZWVkIGZvciBLTVNBTiB0byBiZSBpbnZvbHZlZC4gSSBjYW4gY29uZmlkZW50bHkgYXNzZXNzIHRoaXMgYXMgYSBzdGFuZGFyZCBsb2NraW5nIGZpeCwgYW5kIHRoZXJlIGFyZSBubyBuZXcgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgaW50cm9kdWNlZC5cblxuVGhlcmVmb3JlLCBJJ20gY29tZm9ydGFibGUgc2V0dGluZyBgTmVlZHNLTVNBTmAgdG8gZmFsc2UuIFRoZSBwYXRjaCBpcyBzb3VuZCBhbmQgYWRkcmVzc2VzIGEgcmVhbCBjb25jdXJyZW5jeSBjb25jZXJuLCBwcmV2ZW50aW5nIHBvdGVudGlhbCBkYXRhIGNvcnJ1cHRpb24gaW4gdGhlIEtWTSBMb29uZ0FyY2ggaW1wbGVtZW50YXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1NjgsIk91dHB1dFRva2VucyI6MTU3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzE1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTE6MDY6MjkuNzQ5MDQ2NzA4WiIsIlNlcSI6MjQsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE3ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgc3BpbmxvY2sgKGBwdl9zZXR0aW5nX2xvY2tgKSB0byBwcm90ZWN0IHRoZSBgcHZfZmVhdHVyZXNgIGZpZWxkIGluIGBzdHJ1Y3Qga3ZtX2FyY2hgIGZyb20gY29uY3VycmVudCBtb2RpZmljYXRpb25zIGR1cmluZyB2Q1BVIGNvbmZpZ3VyYXRpb24uIFRoaXMgaXMgYSBjb25jdXJyZW5jeS9sb2NraW5nIGZpeCBhaW1lZCBhdCBwcmV2ZW50aW5nIGRhdGEgcmFjZXMgb3IgaW5jb25zaXN0ZW50IHN0YXRlcyBhY3Jvc3MgdkNQVXMuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UsIG9yIGNoYW5nZXMgdG8gYm91bmRzIGNoZWNraW5nIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBDb25jdXJyZW5jeSBpc3N1ZXMgYW5kIGRhdGEgcmFjZXMgYXJlIGJlc3QgZGV0ZWN0ZWQgYnkgdG9vbHMgbGlrZSBLQ1NBTiBvciBMT0NLREVQLCB3aGlsZSBLQVNBTiBoYW5kbGVzIG1lbW9yeSBjb3JydXB0aW9uLiBLTVNBTiBpcyBzcGVjaWZpY2FsbHkgZm9yIGRldGVjdGluZyB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSwgd2hpY2ggaXMgbm90IHJlbGV2YW50IHRvIHRoaXMgcGF0Y2guXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIHNwaW5sb2NrIChgcHZfc2V0dGluZ19sb2NrYCkgdG8gcHJvdGVjdCB0aGUgYHB2X2ZlYXR1cmVzYCBmaWVsZCBpbiBgc3RydWN0IGt2bV9hcmNoYCBmcm9tIGNvbmN1cnJlbnQgbW9kaWZpY2F0aW9ucyBkdXJpbmcgdkNQVSBjb25maWd1cmF0aW9uLiBUaGlzIGlzIGEgY29uY3VycmVuY3kvbG9ja2luZyBmaXggYWltZWQgYXQgcHJldmVudGluZyBkYXRhIHJhY2VzIG9yIGluY29uc2lzdGVudCBzdGF0ZXMgYWNyb3NzIHZDUFVzLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlLCBvciBjaGFuZ2VzIHRvIGJvdW5kcyBjaGVja2luZyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gQ29uY3VycmVuY3kgaXNzdWVzIGFuZCBkYXRhIHJhY2VzIGFyZSBiZXN0IGRldGVjdGVkIGJ5IHRvb2xzIGxpa2UgS0NTQU4gb3IgTE9DS0RFUCwgd2hpbGUgS0FTQU4gaGFuZGxlcyBtZW1vcnkgY29ycnVwdGlvbi4gS01TQU4gaXMgc3BlY2lmaWNhbGx5IGZvciBkZXRlY3RpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UsIHdoaWNoIGlzIG5vdCByZWxldmFudCB0byB0aGlzIHBhdGNoLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowcj2f2[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-14 10:49:09 +0000 UTC FinishedAt: 2026-08-14 11:06:31 +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": "a204badd8432f93b7e862e7dac6db0fe3d65f370", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "a204badd8432f93b7e862e7dac6db0fe3d65f370", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "bbc324d3-5785-4dc5-8fe4-73d0219fcc79" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "kvm_arch_vcpu_ioctl", "kvm_arch_init_vm" ], "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+CgkJCTx0ZD4yMDI2LzA4LzE0IDExOjA1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9hcmNoX3ZjcHVfaW9jdGwmIzM0OywKICAgICYjMzQ7a3ZtX2FyY2hfaW5pdF92bSYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBzcGlubG9jayAoYHB2X3NldHRpbmdfbG9ja2ApIHRvIHByb3RlY3QgdGhlIGBwdl9mZWF0dXJlc2AgZmllbGQgaW4gYHN0cnVjdCBrdm1fYXJjaGAgZnJvbSBjb25jdXJyZW50IG1vZGlmaWNhdGlvbnMgZHVyaW5nIHZDUFUgY29uZmlndXJhdGlvbi4gVGhpcyBpcyBhIGNvbmN1cnJlbmN5L2xvY2tpbmcgZml4IGFpbWVkIGF0IHByZXZlbnRpbmcgZGF0YSByYWNlcyBvciBpbmNvbnNpc3RlbnQgc3RhdGVzIGFjcm9zcyB2Q1BVcy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSwgb3IgY2hhbmdlcyB0byBib3VuZHMgY2hlY2tpbmcgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIENvbmN1cnJlbmN5IGlzc3VlcyBhbmQgZGF0YSByYWNlcyBhcmUgYmVzdCBkZXRlY3RlZCBieSB0b29scyBsaWtlIEtDU0FOIG9yIExPQ0tERVAsIHdoaWxlIEtBU0FOIGhhbmRsZXMgbWVtb3J5IGNvcnJ1cHRpb24uIEtNU0FOIGlzIHNwZWNpZmljYWxseSBmb3IgZGV0ZWN0aW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlLCB3aGljaCBpcyBub3QgcmVsZXZhbnQgdG8gdGhpcyBwYXRjaC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiBMb29uZ0FyY2ggS1ZNIENQVSBjb25maWd1cmF0aW9uIGJ5IGludHJvZHVjaW5nIGEgbmV3IHNwaW5sb2NrIGBwdl9zZXR0aW5nX2xvY2tgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIEtWTSBzdWJzeXN0ZW0gdGhhdCBpcyByZWFjaGFibGUgdmlhIFZDUFUgaW9jdGxzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDExOjA1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgM2NlN2YzZTc2MTM2MTVmYTQ4MDAwOGI3MzE4NWFlMmZlMTg3YTFiYVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDE0IDExOjA1OjM0IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmggYi9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXG5pbmRleCAyM2NmYmVjZWJiZDc5Li4zNTM4YTE5OWFhYzYyIDEwMDY0NFxuLS0tIGEvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2hvc3QuaFxuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2hvc3QuaFxuQEAgLTEyNSw2ICYjNDM7MTI1LDcgQEAgc3RydWN0IGt2bV9hcmNoIHtcbiBcdHVuc2lnbmVkIGludCAgcHRlX3NoaWZ0c1tNQVhfUEdUQUJMRV9MRVZFTFNdO1xuIFx0dW5zaWduZWQgaW50ICByb290X2xldmVsO1xuIFx0c3BpbmxvY2tfdCAgICBwaHlpZF9tYXBfbG9jaztcbiYjNDM7XHRzcGlubG9ja190ICAgIHB2X3NldHRpbmdfbG9jaztcbiBcdHN0cnVjdCBrdm1fcGh5aWRfbWFwICAqcGh5aWRfbWFwO1xuIFx0LyogRW5hYmxlZCBQViBmZWF0dXJlcyAqL1xuIFx0dW5zaWduZWQgbG9uZyBwdl9mZWF0dXJlcztcbmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jIGIvYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuY1xuaW5kZXggMjBjMjA3ZDgwZTMxYS4uZTQ3ZmE0NjNhOGJlYyAxMDA2NDRcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmNcbkBAIC0xMTY1LDEwICYjNDM7MTE2NSwxNCBAQCBzdGF0aWMgaW50IGt2bV9sb29uZ2FyY2hfY3B1Y2ZnX3NldF9hdHRyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbiBcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbiBcdFx0LyogQWxsIHZDUFVzIG5lZWQgc2V0IHRoZSBzYW1lIFBWIGZlYXR1cmVzICovXG4mIzQzO1x0XHRzcGluX2xvY2soXHUwMDI2a3ZtLVx1MDAzZWFyY2gucHZfc2V0dGluZ19sb2NrKTtcbiBcdFx0aWYgKChrdm0tXHUwMDNlYXJjaC5wdl9mZWF0dXJlcyBcdTAwMjYgTE9PTkdBUkNIX1BWX0ZFQVRfVVBEQVRFRClcbi1cdFx0XHRcdFx1MDAyNlx1MDAyNiAoKGt2bS1cdTAwM2VhcmNoLnB2X2ZlYXR1cmVzIFx1MDAyNiB2YWxpZCkgIT0gdmFsKSlcbiYjNDM7XHRcdFx0XHRcdTAwMjZcdTAwMjYgKChrdm0tXHUwMDNlYXJjaC5wdl9mZWF0dXJlcyBcdTAwMjYgdmFsaWQpICE9IHZhbCkpIHtcbiYjNDM7XHRcdFx0c3Bpbl91bmxvY2soXHUwMDI2a3ZtLVx1MDAzZWFyY2gucHZfc2V0dGluZ19sb2NrKTtcbiBcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHRcdH1cbiBcdFx0a3ZtLVx1MDAzZWFyY2gucHZfZmVhdHVyZXMgPSB2YWwgfCBMT09OR0FSQ0hfUFZfRkVBVF9VUERBVEVEO1xuJiM0MztcdFx0c3Bpbl91bmxvY2soXHUwMDI2a3ZtLVx1MDAzZWFyY2gucHZfc2V0dGluZ19sb2NrKTtcbiBcdFx0cmV0dXJuIDA7XG4gXHRkZWZhdWx0OlxuIFx0XHRyZXR1cm4gLUVOWElPO1xuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2t2bS92bS5jIGIvYXJjaC9sb29uZ2FyY2gva3ZtL3ZtLmNcbmluZGV4IDEzMTdjNzE4Zjg5NmEuLjg2YmE3ZDU0ZTgxZjggMTAwNjQ0XG4tLS0gYS9hcmNoL2xvb25nYXJjaC9rdm0vdm0uY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9sb29uZ2FyY2gva3ZtL3ZtLmNcbkBAIC03Niw2ICYjNDM7NzYsNyBAQCBpbnQga3ZtX2FyY2hfaW5pdF92bShzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgdHlwZSlcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXHR9XG4gXHRzcGluX2xvY2tfaW5pdChcdTAwMjZrdm0tXHUwMDNlYXJjaC5waHlpZF9tYXBfbG9jayk7XG4mIzQzO1x0c3Bpbl9sb2NrX2luaXQoXHUwMDI2a3ZtLVx1MDAzZWFyY2gucHZfc2V0dGluZ19sb2NrKTtcbiBcbiBcdGt2bV9pbml0X3ZtY3Moa3ZtKTtcbiBcdGt2bV92bV9pbml0X2ZlYXR1cmVzKGt2bSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTE6MDU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9hcmNoX3ZjcHVfaW9jdGwmIzM0OywKICAgICYjMzQ7a3ZtX2FyY2hfaW5pdF92bSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGluIExvb25nQXJjaCBLVk0gQ1BVIGNvbmZpZ3VyYXRpb24gYnkgaW50cm9kdWNpbmcgYSBuZXcgc3BpbmxvY2sgYHB2X3NldHRpbmdfbG9ja2AuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgS1ZNIHN1YnN5c3RlbSB0aGF0IGlzIHJlYWNoYWJsZSB2aWEgVkNQVSBpb2N0bHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAzY2U3ZjNlNzYxMzYxNWZhNDgwMDA4YjczMTg1YWUyZmUxODdhMWJhCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBBdWcgMTQgMTE6MDU6MzQgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oIGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2hvc3QuaAppbmRleCAyM2NmYmVjZWJiZDc5Li4zNTM4YTE5OWFhYzYyIDEwMDY0NAotLS0gYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgKQEAgLTEyNSw2ICYjNDM7MTI1LDcgQEAgc3RydWN0IGt2bV9hcmNoIHsKIAl1bnNpZ25lZCBpbnQgIHB0ZV9zaGlmdHNbTUFYX1BHVEFCTEVfTEVWRUxTXTsKIAl1bnNpZ25lZCBpbnQgIHJvb3RfbGV2ZWw7CiAJc3BpbmxvY2tfdCAgICBwaHlpZF9tYXBfbG9jazsKJiM0MzsJc3BpbmxvY2tfdCAgICBwdl9zZXR0aW5nX2xvY2s7CiAJc3RydWN0IGt2bV9waHlpZF9tYXAgICpwaHlpZF9tYXA7CiAJLyogRW5hYmxlZCBQViBmZWF0dXJlcyAqLwogCXVuc2lnbmVkIGxvbmcgcHZfZmVhdHVyZXM7CmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jIGIvYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYwppbmRleCAyMGMyMDdkODBlMzFhLi5lNDdmYTQ2M2E4YmVjIDEwMDY0NAotLS0gYS9hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMKQEAgLTExNjUsMTAgJiM0MzsxMTY1LDE0IEBAIHN0YXRpYyBpbnQga3ZtX2xvb25nYXJjaF9jcHVjZmdfc2V0X2F0dHIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LAogCQkJcmV0dXJuIC1FSU5WQUw7CiAKIAkJLyogQWxsIHZDUFVzIG5lZWQgc2V0IHRoZSBzYW1lIFBWIGZlYXR1cmVzICovCiYjNDM7CQlzcGluX2xvY2soJmFtcDtrdm0tJmd0O2FyY2gucHZfc2V0dGluZ19sb2NrKTsKIAkJaWYgKChrdm0tJmd0O2FyY2gucHZfZmVhdHVyZXMgJmFtcDsgTE9PTkdBUkNIX1BWX0ZFQVRfVVBEQVRFRCkKLQkJCQkmYW1wOyZhbXA7ICgoa3ZtLSZndDthcmNoLnB2X2ZlYXR1cmVzICZhbXA7IHZhbGlkKSAhPSB2YWwpKQomIzQzOwkJCQkmYW1wOyZhbXA7ICgoa3ZtLSZndDthcmNoLnB2X2ZlYXR1cmVzICZhbXA7IHZhbGlkKSAhPSB2YWwpKSB7CiYjNDM7CQkJc3Bpbl91bmxvY2soJmFtcDtrdm0tJmd0O2FyY2gucHZfc2V0dGluZ19sb2NrKTsKIAkJCXJldHVybiAtRUlOVkFMOwomIzQzOwkJfQogCQlrdm0tJmd0O2FyY2gucHZfZmVhdHVyZXMgPSB2YWwgfCBMT09OR0FSQ0hfUFZfRkVBVF9VUERBVEVEOwomIzQzOwkJc3Bpbl91bmxvY2soJmFtcDtrdm0tJmd0O2FyY2gucHZfc2V0dGluZ19sb2NrKTsKIAkJcmV0dXJuIDA7CiAJZGVmYXVsdDoKIAkJcmV0dXJuIC1FTlhJTzsKZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2t2bS92bS5jIGIvYXJjaC9sb29uZ2FyY2gva3ZtL3ZtLmMKaW5kZXggMTMxN2M3MThmODk2YS4uODZiYTdkNTRlODFmOCAxMDA2NDQKLS0tIGEvYXJjaC9sb29uZ2FyY2gva3ZtL3ZtLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9sb29uZ2FyY2gva3ZtL3ZtLmMKQEAgLTc2LDYgJiM0Mzs3Niw3IEBAIGludCBrdm1fYXJjaF9pbml0X3ZtKHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgbG9uZyB0eXBlKQogCQlyZXR1cm4gLUVOT01FTTsKIAl9CiAJc3Bpbl9sb2NrX2luaXQoJmFtcDtrdm0tJmd0O2FyY2gucGh5aWRfbWFwX2xvY2spOwomIzQzOwlzcGluX2xvY2tfaW5pdCgmYW1wO2t2bS0mZ3Q7YXJjaC5wdl9zZXR0aW5nX2xvY2spOwogCiAJa3ZtX2luaXRfdm1jcyhrdm0pOwogCWt2bV92bV9pbml0X2ZlYXR1cmVzKGt2bSk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDExOjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1NzEKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAzMDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgTG9vbmdBcmNoIEtWTSBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBhZmZlY3RpbmcgYGFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmhgLCBgYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuY2AsIGFuZCBgYXJjaC9sb29uZ2FyY2gva3ZtL3ZtLmNgLiBJdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIHNwaW5sb2NrIChgcHZfc2V0dGluZ19sb2NrYCkgcHJvdGVjdGluZyBga3ZtLSZndDthcmNoLnB2X2ZlYXR1cmVzYCBpbiBga3ZtX2xvb25nYXJjaF9jcHVjZmdfc2V0X2F0dHIoKWAuIEl0JiMzOTtzIGZpeGluZyBhIHJhY2UgY29uZGl0aW9uIGluIHRoZSBMb29uZ0FyY2ggS1ZNIGltcGxlbWVudGF0aW9uLiBIbW0sIGlzIHRoaXMgc29tZXRoaW5nIHdlIHNob3VsZCBiZSBmdXp6aW5nPwoKQWJzb2x1dGVseS4gSXQmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZSAqaW4gS1ZNKiBvbiAqTG9vbmdBcmNoKi4gVGhhdCYjMzk7cyBhIHRhcmdldC1yaWNoIGVudmlyb25tZW50IGZvciBmdXp6aW5nLCBpZiB3ZSBjYW4gcmVhY2ggaXQuCgpXYWl0LCB0aGUgYmlnZ2VyIHF1ZXN0aW9uIGlzLCBjYW4gd2UgKmFjdHVhbGx5KiBmdXp6IExvb25nQXJjaCBLVk0gd2l0aCBzb21ldGhpbmcgbGlrZSBzeXprYWxsZXI/IFN5emthbGxlciBpcyBwcmV0dHkgdmVyc2F0aWxlLCBzdXBwb3J0cyBzZXZlcmFsIGFyY2hpdGVjdHVyZXMsIGJ1dCBJIHVzdWFsbHkgc2VlIGZ1enppbmcgb24geDg2XzY0LCBBUk02NCwgUklTQy1WLCBldGMuCgpCdXQgdGhpcyBpcyBLVk0sIGEgY29yZSBrZXJuZWwgZmVhdHVyZSwgYW5kIHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGEgc3BlY2lmaWMgYXJjaGl0ZWN0dXJlLiBJdCYjMzk7cyB3b3J0aCBwdXJzdWluZy4gTGV0JiMzOTtzIHNlZSBpZiB3ZSBjYW4gcmVhY2ggaXQuIE15IGZpcnN0IGNoZWNrIGlzIGBrdm1fbG9vbmdhcmNoX2NwdWNmZ19zZXRfYXR0cmAuIE9rYXksIEkgcmVtZW1iZXIgaXQmIzM5O3MgY2FsbGVkIHRocm91Z2ggS1ZNIGlvY3Rscy4gR29vZCwgdGhhdCYjMzk7cyBhIGRlZmluZWQgYXR0YWNrIHN1cmZhY2UuCgpOb3csIGxldCYjMzk7cyBjb25maXJtIHRoZSByZWxldmFudCBjb25maWcgaXMgZW5hYmxlZDogYENPTkZJR19LVk1gIG9uIExvb25nQXJjaC4gQmluZ28uCgpMZXQgbWUgcmVmcmVzaCBteSBtZW1vcnkgb2Ygd2hhdCYjMzk7cyBoYXBwZW5pbmcgaW4gYGt2bV9sb29uZ2FyY2hfY3B1Y2ZnX3NldF9hdHRyYCBkaXJlY3RseSwgc28gSSYjMzk7bGwgcXVpY2tseSBsb29rIGF0IHRoZSBzb3VyY2UgaW4gYGFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDExOjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9sb29uZ2FyY2hfY3B1Y2ZnX3NldF9hdHRyJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM9MTEzMj1zdGF0aWMgaW50IGt2bV9sb29uZ2FyY2hfdmNwdV9nZXRfYXR0cihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMTUwLVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzoxMTUxOnN0YXRpYyBpbnQga3ZtX2xvb25nYXJjaF9jcHVjZmdfc2V0X2F0dHIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMTUyLVx0XHRcdFx0XHQgc3RydWN0IGt2bV9kZXZpY2VfYXR0ciAqYXR0cilcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jPTEyMTk9c3RhdGljIGludCBrdm1fbG9vbmdhcmNoX3ZjcHVfc2V0X2F0dHIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTIyNS1cdGNhc2UgS1ZNX0xPT05HQVJDSF9WQ1BVX0NQVUNGRzpcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6MTIyNjpcdFx0cmV0ID0ga3ZtX2xvb25nYXJjaF9jcHVjZmdfc2V0X2F0dHIodmNwdSwgYXR0cik7XG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEyMjctXHRcdGJyZWFrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDExOjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2MjMKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiA2MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipUcmFjaW5nIHRoZSBga3ZtX2xvb25nYXJjaF92Y3B1X3NldF9hdHRyYCBGdW5jdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYGt2bV9sb29uZ2FyY2hfdmNwdV9zZXRfYXR0cmAgYW5kIGltbWVkaWF0ZWx5IEkgc2VlIGl0JiMzOTtzIGNhbGxpbmcgYGt2bV9sb29uZ2FyY2hfY3B1Y2ZnX3NldF9hdHRyYC4gVGhhdCYjMzk7cyB0aGUgbGluayBJIG5lZWQgdG8gdW5kZXJzdGFuZC4gTXkgbmV4dCBzdGVwIGlzIGNsZWFyOiBJIG5lZWQgdG8gdHJhY2UgKndoZXJlKiBga3ZtX2xvb25nYXJjaF92Y3B1X3NldF9hdHRyYCBpdHNlbGYgaXMgYmVpbmcgY2FsbGVkLiBUaGF0JiMzOTtsbCBwcm92aWRlIHRoZSB1cHN0cmVhbSBjb250ZXh0IGFuZCB0ZWxsIG1lIHdoYXQmIzM5O3MgdHJpZ2dlcmluZyB0aGlzIHdob2xlIHByb2Nlc3MuIFdoZXJlIGRvZXMgdGhpcyBmdW5jdGlvbiBmaXQgaW50byB0aGUgbGFyZ2VyIEtWTSBvbiBMb29uZ0FyY2ggcGljdHVyZT8gTGV0JiMzOTtzIGdldCB0byB0aGUgY2FsbCBzaXRlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxMTowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1fbG9vbmdhcmNoX3ZjcHVfc2V0X2F0dHImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYz0xMTgyPXN0YXRpYyBpbnQga3ZtX2xvb25nYXJjaF9wdnRpbWVfc2V0X2F0dHIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTIxOC1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6MTIxOTpzdGF0aWMgaW50IGt2bV9sb29uZ2FyY2hfdmNwdV9zZXRfYXR0cihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEyMjAtXHRcdFx0XHQgICAgICAgc3RydWN0IGt2bV9kZXZpY2VfYXR0ciAqYXR0cilcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jPTEyMzg9bG9uZyBrdm1fYXJjaF92Y3B1X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLFxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTI5OS1cdFx0XHRicmVhaztcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6MTMwMDpcdFx0ciA9IGt2bV9sb29uZ2FyY2hfdmNwdV9zZXRfYXR0cih2Y3B1LCBcdTAwMjZhdHRyKTtcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTMwMS1cdFx0YnJlYWs7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTE6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDE1NAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDgyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKkFuYWx5emluZyB0aGUgS1ZNIExvb25nQXJjaCBWQ1BVIEF0dHJpYnV0ZSBTZXR0aW5nKioKCk9rYXksIHNvIEkmIzM5O20gdHJhY2luZyB0aHJvdWdoIHRoaXMgY29kZSwgYW5kIGl0IGxvb2tzIGxpa2UgYGt2bV9hcmNoX3ZjcHVfaW9jdGxgIGlzIHRoZSBlbnRyeSBwb2ludCwgdWx0aW1hdGVseSBsZWFkaW5nIHRvIGBrdm1fbG9vbmdhcmNoX3ZjcHVfc2V0X2F0dHJgLiAgVGhhdCBtYWtlcyBzZW5zZTsgYGlvY3RsYCBpcyB0aGUgY2xhc3NpYyB3YXkgdG8gY29udHJvbCB0aGluZ3MuIEFuZCB0aGlzLCBpbiB0dXJuLCBjYWxscyBga3ZtX2xvb25nYXJjaF9jcHVjZmdfc2V0X2F0dHJgLiBZZXAsIHRoYXQgc2VxdWVuY2UgY29uZmlybXMgdGhpcyAqaXMqIGEgcGF0aCBhY2Nlc3NpYmxlIHRocm91Z2ggS1ZNIGlvY3Rscy4gSSYjMzk7bSBzYXRpc2ZpZWQgdGhhdCYjMzk7cyB0aGUgbGluay4KCk5vdywgdG8gdW5kZXJzdGFuZCB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCBhbnkgcmVsYXRlZCBkZXBlbmRlbmNpZXMsIEkgbmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZyBmaWxlLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgaW4gYGFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnYC4gSXTigJlsbCBiZSBpbnRlcmVzdGluZyB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBjb21waWxlLXRpbWUgZmxhZ3MgZ292ZXJuaW5nIHRoaXMgZnVuY3Rpb25hbGl0eS4gVGhhdCBzaG91bGQgY2xlYXIgdXAgdGhlIGJ1aWxkIGNvbmRpdGlvbnMgZm9yIGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDExOjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBLVk0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxuYXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWctMTktXG5hcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZzoyMDpjb25maWcgS1ZNXG5hcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZy0yMS1cdHRyaXN0YXRlIFwmIzM0O0tlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDExOjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ1ODYKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipLVk0gQ29uZmlndXJhdGlvbiBBbmFseXNpcyoqCgpPa2F5LCBzbyB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uIGlzIGRlZmluaXRlbHkgS1ZNLiBCdXQgSSBuZWVkIHRvIGJlIHRob3JvdWdoLiBJcyB0aGVyZSAqYW55KiBvdGhlciBjb25maWd1cmF0aW9uIHBvc3NpYmx5IGFjdGl2ZT8gSSBuZWVkIHRvIHJ1bGUgdGhhdCBvdXQuIExldCYjMzk7cyBkaWcgaW4gYW5kIGV4YW1pbmUgdGhlIGRlcGVuZGVuY2llczsgSSYjMzk7bGwgc3RhcnQgYnkgY2hlY2tpbmcgdGhlIEtjb25maWcgZmlsZSBmb3IgdGhlIExvb25nQXJjaCBhcmNoaXRlY3R1cmUsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGt2bSBkaXJlY3RvcnkgYXQgYGFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnYC4gVGhpcyBzaG91bGQgcmV2ZWFsIGFueSBjb25kaXRpb25hbCBkZXBlbmRlbmNpZXMgb3Igb3B0aW9ucyB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50LiBJdCYjMzk7cyB0aW1lIHRvIHVuZGVyc3RhbmQgdGhlIGNvbXBsZXRlIHBpY3R1cmUgb2YgdGhpcyBrdm0gY29uZmlndXJhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTE6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDthcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiAgIDI6XHQjXG4gICAzOlx0IyBLVk0gY29uZmlndXJhdGlvblxuICAgNDpcdCNcbiAgIDU6XHRcbiAgIDY6XHRzb3VyY2UgXCYjMzQ7dmlydC9rdm0vS2NvbmZpZ1wmIzM0O1xuICAgNzpcdFxuICAgODpcdG1lbnVjb25maWcgVklSVFVBTElaQVRJT05cbiAgIDk6XHRcdGJvb2wgXCYjMzQ7VmlydHVhbGl6YXRpb25cJiMzNDtcbiAgMTA6XHRcdGhlbHBcbiAgMTE6XHRcdCAgU2F5IFkgaGVyZSB0byBnZXQgdG8gc2VlIG9wdGlvbnMgZm9yIHVzaW5nIHlvdXIgTGludXggaG9zdCB0byBydW5cbiAgMTI6XHRcdCAgb3RoZXIgb3BlcmF0aW5nIHN5c3RlbXMgaW5zaWRlIHZpcnR1YWwgbWFjaGluZXMgKGd1ZXN0cykuXG4gIDEzOlx0XHQgIFRoaXMgb3B0aW9uIGFsb25lIGRvZXMgbm90IGFkZCBhbnkga2VybmVsIGNvZGUuXG4gIDE0Olx0XG4gIDE1Olx0XHQgIElmIHlvdSBzYXkgTiwgYWxsIG9wdGlvbnMgaW4gdGhpcyBzdWJtZW51IHdpbGwgYmUgc2tpcHBlZCBhbmRcbiAgMTY6XHRcdCAgZGlzYWJsZWQuXG4gIDE3Olx0XG4gIDE4Olx0aWYgVklSVFVBTElaQVRJT05cbiAgMTk6XHRcbiAgMjA6XHRjb25maWcgS1ZNXG4gIDIxOlx0XHR0cmlzdGF0ZSBcJiMzNDtLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcJiMzNDtcbiAgMjI6XHRcdGRlcGVuZHMgb24gQVNfSEFTX0xWWl9FWFRFTlNJT04gXHUwMDI2XHUwMDI2IDY0QklUXG4gIDIzOlx0XHRzZWxlY3QgSEFWRV9LVk1fRElSVFlfUklOR19BQ1FfUkVMXG4gIDI0Olx0XHRzZWxlY3QgSEFWRV9LVk1fSVJRX1JPVVRJTkdcbiAgMjU6XHRcdHNlbGVjdCBIQVZFX0tWTV9JUlFDSElQXG4gIDI2Olx0XHRzZWxlY3QgSEFWRV9LVk1fTVNJXG4gIDI3Olx0XHRzZWxlY3QgSEFWRV9LVk1fUkVBRE9OTFlfTUVNXG4gIDI4Olx0XHRzZWxlY3QgS1ZNX0NPTU1PTlxuICAyOTpcdFx0c2VsZWN0IEtWTV9HRU5FUklDX0RJUlRZTE9HX1JFQURfUFJPVEVDVFxuICAzMDpcdFx0c2VsZWN0IEtWTV9HRU5FUklDX0hBUkRXQVJFX0VOQUJMSU5HXG4gIDMxOlx0XHRzZWxlY3QgS1ZNX01NSU9cbiAgMzI6XHRcdHNlbGVjdCBWSVJUX1hGRVJfVE9fR1VFU1RfV09SS1xuICAzMzpcdFx0c2VsZWN0IFNDSEVEX0lORk9cbiAgMzQ6XHRcdHNlbGVjdCBHVUVTVF9QRVJGX0VWRU5UUyBpZiBQRVJGX0VWRU5UU1xuICAzNTpcdFx0aGVscFxuICAzNjpcdFx0ICBTdXBwb3J0IGhvc3RpbmcgdmlydHVhbGl6ZWQgZ3Vlc3QgbWFjaGluZXMgdXNpbmdcbiAgMzc6XHRcdCAgaGFyZHdhcmUgdmlydHVhbGl6YXRpb24gZXh0ZW5zaW9ucy4gWW91IHdpbGwgbmVlZFxuICAzODpcdFx0ICBhIHByb2Nlc3NvciBlcXVpcHBlZCB3aXRoIHZpcnR1YWxpemF0aW9uIGV4dGVuc2lvbnMuXG4gIDM5Olx0XG4gIDQwOlx0XHQgIElmIHVuc3VyZSwgc2F5IE4uXG4gIDQxOlx0XG4gIDQyOlx0ZW5kaWYgIyBWSVJUVUFMSVpBVElPTlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxMTowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MzI1CgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogMjMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTG9vbmdBcmNoIEtWTSBQYXRjaCBmb3IgU3l6a2FsbGVyIEludGVncmF0aW9uKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgY2xlYXJseSByZWxhdGVkIHRvIEtWTSBjb25maWd1cmF0aW9uLCBteSBmaXJzdCB0aG91Z2h0IGlzIHRvIGVuc3VyZSB0aGUgY29uZmlndXJhdGlvbnMgYXJlIGNvcnJlY3QuIFRoaXMgaXMgZm9yIHRoZSBMb29uZ0FyY2ggYXJjaGl0ZWN0dXJlLCBzbyBJIG5lZWQgdG8gYXNzZXNzIHdoZXRoZXIgU3l6a2FsbGVyIGlzIGNhcGFibGUgb2YgZnV6emluZyB0aGlzIGFyY2hpdGVjdHVyZSBlZmZlY3RpdmVseS4gSSBrbm93IFN5emthbGxlciBoYXMgc29tZSBMb29uZ0FyY2ggc3VwcG9ydCwgYnV0IGl0JiMzOTtzIG9mdGVuIG1vcmUgYWJvdXQgdGhlIHByb3ZpZGVkIGNvbmZpZ3MgYW5kIHN5bWJvbHM7IHRoZSBmdXp6aW5nIGluZnJhc3RydWN0dXJlIHRha2VzIG92ZXIgZnJvbSB0aGVyZSwgYXNzdW1pbmcgaXQgaGFzIHRoZSBidWlsdC1pbiBhYmlsaXR5LiBUaGUga2V5IGNvbmZpZ3VyYXRpb25zIEkgbmVlZCB0byBmb2N1cyBvbiBhcmUgdGhlIEtWTSBzZXR0aW5ncy4KCk5vdywgSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgc3BlY2lmaWMgZnVuY3Rpb25zIGltcGxpY2F0ZWQgYnkgdGhlIHBhdGNoOiBga3ZtX2xvb25nYXJjaF92Y3B1X3NldF9hdHRyYCBhbmQgYGt2bV9sb29uZ2FyY2hfY3B1Y2ZnX3NldF9hdHRyYC4gTXkgYXBwcm9hY2ggaXMgdG8gc2VlIHdoaWNoIGZ1bmN0aW9uIEkgY2FuIHVzZSBpbiB0aGUgZnV6emluZyBwcm9jZXNzLiBga3ZtX2xvb25nYXJjaF9jcHVjZmdfc2V0X2F0dHJgIGxvb2tzIHN0YXRpYywgd2hpY2ggbWVhbnMgSSBjYW4mIzM5O3QgZGlyZWN0bHkgdXNlIGl0LiBUaGlzIGJyaW5ncyBtZSB0byBlaXRoZXIgYGt2bV9hcmNoX3ZjcHVfaW9jdGxgIG9yLCBpZiBga3ZtX2xvb25nYXJjaF92Y3B1X3NldF9hdHRyYCB3YXNuJiMzOTt0IGlubGluZWQsIEkgd291bGQgdHJ5IGl0LiBJIG5lZWQgdG8gcXVpY2tseSBjb25maXJtIHRoYXQgYGt2bV9sb29uZ2FyY2hfdmNwdV9zZXRfYXR0cmAgaXMgaW5kZWVkIHN0YXRpYy4gQWgsIHllcywgaXQgaXMuCgpUaGF0IGxlYXZlcyBga3ZtX2FyY2hfdmNwdV9pb2N0bGAgYXMgdGhlIHByaW1hcnkgY2FuZGlkYXRlLiBMZXQgbWUgdmVyaWZ5IGl0JiMzOTtzIG5vdCBzdGF0aWMuIEdvb2QsIGl0IGlzIG5vbi1zdGF0aWMuIFRoaXMgbG9va3MgbGlrZSB0aGUgbWFpbiBlbnRyeSBwb2ludCB0byBmb2N1cyBvbiBmb3IgdGhpcyBmdXp6aW5nIGVmZm9ydC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTE6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX2FyY2hfdmNwdV9pb2N0bCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNjQzIGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5hcmNoL2FybTY0L2t2bS9hcm0uYz03ODE9c3RhdGljIGJvb2wga3ZtX2FybV92Y3B1X3N1c3BlbmRlZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9hcm02NC9rdm0vYXJtLmMtNzg1LVxuYXJjaC9hcm02NC9rdm0vYXJtLmM6Nzg2OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9tcHN0YXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvYXJtNjQva3ZtL2FybS5jLTc4Ny1cdFx0XHRcdCAgICBzdHJ1Y3Qga3ZtX21wX3N0YXRlICptcF9zdGF0ZSlcbi0tXG5hcmNoL2FybTY0L2t2bS9hcm0uYy03OTMtXG5hcmNoL2FybTY0L2t2bS9hcm0uYzo3OTQ6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X21wc3RhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9hcm02NC9rdm0vYXJtLmMtNzk1LVx0XHRcdFx0ICAgIHN0cnVjdCBrdm1fbXBfc3RhdGUgKm1wX3N0YXRlKVxuLS1cbmFyY2gvYXJtNjQva3ZtL2FybS5jPTEwNjY9c3RhdGljIGludCBrdm1fdmNwdV9zdXNwZW5kKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL2FybTY0L2t2bS9hcm0uYy0xMDkyLVx0ICogT3RoZXJ3aXNlLCB3ZSB3ZXJlIHVuYmxvY2tlZCB0byBwcm9jZXNzIGEgZGlmZmVyZW50IGV2ZW50LCBzdWNoIGFzIGFcbmFyY2gvYXJtNjQva3ZtL2FybS5jOjEwOTM6XHQgKiBwZW5kaW5nIHNpZ25hbC4gUmV0dXJuIDEgYW5kIGFsbG93IGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuKCkgdG9cbmFyY2gvYXJtNjQva3ZtL2FybS5jLTEwOTQtXHQgKiBwcm9jZXNzIHRoZSBldmVudC5cbi0tXG5hcmNoL2FybTY0L2t2bS9hcm0uYz0xMjMwPXN0YXRpYyBpbnQgbm9pbnN0ciBrdm1fYXJtX3ZjcHVfZW50ZXJfZXhpdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9hcm02NC9rdm0vYXJtLmMtMTI0MS0vKipcbmFyY2gvYXJtNjQva3ZtL2FybS5jOjEyNDI6ICoga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW4gLSB0aGUgbWFpbiBWQ1BVIHJ1biBmdW5jdGlvbiB0byBleGVjdXRlIGd1ZXN0IGNvZGVcbmFyY2gvYXJtNjQva3ZtL2FybS5jLTEyNDMtICogQHZjcHU6XHRUaGUgVkNQVSBwb2ludGVyXG4tLVxuYXJjaC9hcm02NC9rdm0vYXJtLmMtMTI1MC0gKi9cbmFyY2gvYXJtNjQva3ZtL2FybS5jOjEyNTE6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbmFyY2gvYXJtNjQva3ZtL2FybS5jLTEyNTIte1xuLS1cbmFyY2gvYXJtNjQva3ZtL2FybS5jPTE2ODA9c3RhdGljIGludCBrdm1fdmNwdV9zZXRfdGFyZ2V0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbi0tXG5hcmNoL2FybTY0L2t2bS9hcm0uYy0xNzAyLVxuYXJjaC9hcm02NC9rdm0vYXJtLmM6MTcwMzpzdGF0aWMgaW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfdmNwdV9pbml0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvYXJtNjQva3ZtL2FybS5jLTE3MDQtXHRcdFx0XHRcdCBzdHJ1Y3Qga3ZtX3ZjcHVfaW5pdCAqaW5pdClcbi0tXG5hcmNoL2FybTY0L2t2bS9hcm0uYz0xODA2PXN0YXRpYyBpbnQga3ZtX2FybV92Y3B1X3NldF9ldmVudHMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuLS1cbmFyY2gvYXJtNjQva3ZtL2FybS5jLTE4MjMtXG5hcmNoL2FybTY0L2t2bS9hcm0uYzoxODI0Omxvbmcga3ZtX2FyY2hfdmNwdV9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCxcbmFyY2gvYXJtNjQva3ZtL2FybS5jLTE4MjUtXHRcdFx0IHVuc2lnbmVkIGludCBpb2N0bCwgdW5zaWduZWQgbG9uZyBhcmcpXG4tLVxuYXJjaC9hcm02NC9rdm0vYXJtLmMtMTgzOS1cbmFyY2gvYXJtNjQva3ZtL2FybS5jOjE4NDA6XHRcdHIgPSBrdm1fYXJjaF92Y3B1X2lvY3RsX3ZjcHVfaW5pdCh2Y3B1LCBcdTAwMjZpbml0KTtcbmFyY2gvYXJtNjQva3ZtL2FybS5jLTE4NDEtXHRcdGJyZWFrO1xuLS1cbmFyY2gvYXJtNjQva3ZtL2d1ZXN0LmM9NTExPXN0YXRpYyBpbnQgc2V0X3N2ZV9yZWcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBjb25zdCBzdHJ1Y3Qga3ZtX29uZV9yZWcgKnJlZylcbi0tXG5hcmNoL2FybTY0L2t2bS9ndWVzdC5jLTUzNS1cbmFyY2gvYXJtNjQva3ZtL2d1ZXN0LmM6NTM2OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9yZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9yZWdzICpyZWdzKVxuYXJjaC9hcm02NC9rdm0vZ3Vlc3QuYy01Mzcte1xuLS1cbmFyY2gvYXJtNjQva3ZtL2d1ZXN0LmMtNTQwLVxuYXJjaC9hcm02NC9rdm0vZ3Vlc3QuYzo1NDE6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3JlZ3MgKnJlZ3MpXG5hcmNoL2FybTY0L2t2bS9ndWVzdC5jLTU0Mi17XG4tLVxuYXJjaC9hcm02NC9rdm0vZ3Vlc3QuYz03MTk9aW50IGt2bV9hcm1fc2V0X3JlZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGNvbnN0IHN0cnVjdCBrdm1fb25lX3JlZyAqcmVnKVxuLS1cbmFyY2gvYXJtNjQva3ZtL2d1ZXN0LmMtNzM1LVxuYXJjaC9hcm02NC9rdm0vZ3Vlc3QuYzo3MzY6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvYXJtNjQva3ZtL2d1ZXN0LmMtNzM3LVx0XHRcdFx0ICBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncylcbi0tXG5hcmNoL2FybTY0L2t2bS9ndWVzdC5jLTc0MS1cbmFyY2gvYXJtNjQva3ZtL2d1ZXN0LmM6NzQyOmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL2FybTY0L2t2bS9ndWVzdC5jLTc0My1cdFx0XHRcdCAgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXG4tLVxuYXJjaC9hcm02NC9rdm0vZ3Vlc3QuYz04MjU9dTMyIF9fYXR0cmlidXRlX2NvbnN0X18ga3ZtX3RhcmdldF9jcHUodm9pZClcbi0tXG5hcmNoL2FybTY0L2t2bS9ndWVzdC5jLTg1NC1cbmFyY2gvYXJtNjQva3ZtL2d1ZXN0LmM6ODU1OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9mcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX2ZwdSAqZnB1KVxuYXJjaC9hcm02NC9rdm0vZ3Vlc3QuYy04NTYte1xuLS1cbmFyY2gvYXJtNjQva3ZtL2d1ZXN0LmMtODU5LVxuYXJjaC9hcm02NC9rdm0vZ3Vlc3QuYzo4NjA6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X2ZwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fZnB1ICpmcHUpXG5hcmNoL2FybTY0L2t2bS9ndWVzdC5jLTg2MS17XG4tLVxuYXJjaC9hcm02NC9rdm0vZ3Vlc3QuYy04NjQtXG5hcmNoL2FybTY0L2t2bS9ndWVzdC5jOjg2NTppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF90cmFuc2xhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9hcm02NC9rdm0vZ3Vlc3QuYy04NjYtXHRcdFx0XHQgIHN0cnVjdCBrdm1fdHJhbnNsYXRpb24gKnRyKVxuLS1cbmFyY2gvYXJtNjQva3ZtL2d1ZXN0LmMtODcxLS8qKlxuYXJjaC9hcm02NC9rdm0vZ3Vlc3QuYzo4NzI6ICoga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfZ3Vlc3RfZGVidWcgLSBzZXQgdXAgZ3Vlc3QgZGVidWdnaW5nXG5hcmNoL2FybTY0L2t2bS9ndWVzdC5jLTg3My0gKiBAdmNwdTogdGhlIHZDUFUgcG9pbnRlclxuLS1cbmFyY2gvYXJtNjQva3ZtL2d1ZXN0LmMtODgwLSAqL1xuYXJjaC9hcm02NC9rdm0vZ3Vlc3QuYzo4ODE6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X2d1ZXN0X2RlYnVnKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvYXJtNjQva3ZtL2d1ZXN0LmMtODgyLVx0XHRcdFx0XHRzdHJ1Y3Qga3ZtX2d1ZXN0X2RlYnVnICpkYmcpXG4tLVxuYXJjaC9hcm02NC9rdm0vaHlwL252aGUvc3dpdGNoLmM9MjI2PXN0YXRpYyBpbmxpbmUgYm9vbCBmaXh1cF9ndWVzdF9leGl0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0ICpleGl0X2NvZGUpXG4tLVxuYXJjaC9hcm02NC9rdm0vaHlwL252aGUvc3dpdGNoLmMtMjM4LVx0ICogaXQuICBUaGUgY2hlY2sgYmVsb3cgaXMgYmFzZWQgb24gdGhlIG9uZSBpblxuYXJjaC9hcm02NC9rdm0vaHlwL252aGUvc3dpdGNoLmM6MjM5Olx0ICoga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW4oKS5cbmFyY2gvYXJtNjQva3ZtL2h5cC9udmhlL3N3aXRjaC5jLTI0MC1cdCAqL1xuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM9NDIwPXZtX2ZhdWx0X3Qga3ZtX2FyY2hfdmNwdV9mYXVsdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCB2bV9mYXVsdCAqdm1mKVxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtNDI0LVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzo0MjU6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfdHJhbnNsYXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtNDI2LVx0XHRcdFx0ICBzdHJ1Y3Qga3ZtX3RyYW5zbGF0aW9uICp0cilcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jPTQ0ND1pbnQga3ZtX2FyY2hfdmNwdV9kdW1wX3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtNDY2LVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzo0Njc6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X21wc3RhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy00NjgtXHRcdFx0XHRzdHJ1Y3Qga3ZtX21wX3N0YXRlICptcF9zdGF0ZSlcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTQ3NC1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6NDc1OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9tcHN0YXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtNDc2LVx0XHRcdFx0c3RydWN0IGt2bV9tcF9zdGF0ZSAqbXBfc3RhdGUpXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy00OTAtXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jOjQ5MTppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfZ3Vlc3RfZGVidWcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy00OTItXHRcdFx0XHRcdHN0cnVjdCBrdm1fZ3Vlc3RfZGVidWcgKmRiZylcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jPTk4ND1zdGF0aWMgaW50IGt2bV9zZXRfcmVnKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgY29uc3Qgc3RydWN0IGt2bV9vbmVfcmVnICpyZWcpXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMDAxLVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzoxMDAyOmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMDAzLXtcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEwMDYtXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jOjEwMDc6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEwMDgte1xuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTAxMS1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6MTAxMjppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcmVncyAqcmVncylcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTAxMy17XG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMDIzLVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzoxMDI0OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9yZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9yZWdzICpyZWdzKVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMDI1LXtcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jPTEyMTk9c3RhdGljIGludCBrdm1fbG9vbmdhcmNoX3ZjcHVfc2V0X2F0dHIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTIzNy1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6MTIzODpsb25nIGt2bV9hcmNoX3ZjcHVfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEyMzktXHRcdFx0IHVuc2lnbmVkIGludCBpb2N0bCwgdW5zaWduZWQgbG9uZyBhcmcpXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMzEwLVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzoxMzExOmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9mcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX2ZwdSAqZnB1KVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMzEyLXtcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEzMjItXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jOjEzMjM6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X2ZwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fZnB1ICpmcHUpXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEzMjQte1xuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM9MTgyOT12b2lkIGt2bV9hcmNoX3ZjcHVfcHV0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTE4NTItXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jOjE4NTM6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTg1NC17XG4tLVxuYXJjaC9taXBzL2t2bS9taXBzLmM9Mzg2PXZvaWQga3ZtX2FyY2hfdmNwdV9kZXN0cm95KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL21pcHMva3ZtL21pcHMuYy0zOTctXG5hcmNoL21pcHMva3ZtL21pcHMuYzozOTg6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X2d1ZXN0X2RlYnVnKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvbWlwcy9rdm0vbWlwcy5jLTM5OS1cdFx0XHRcdFx0c3RydWN0IGt2bV9ndWVzdF9kZWJ1ZyAqZGJnKVxuLS1cbmFyY2gvbWlwcy9rdm0vbWlwcy5jPTQxMT1zdGF0aWMgaW50IG5vaW5zdHIga3ZtX21pcHNfdmNwdV9lbnRlcl9leGl0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL21pcHMva3ZtL21pcHMuYy00MjEtXG5hcmNoL21pcHMva3ZtL21pcHMuYzo0MjI6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbmFyY2gvbWlwcy9rdm0vbWlwcy5jLTQyMy17XG4tLVxuYXJjaC9taXBzL2t2bS9taXBzLmM9NDc5PWludCBrdm1fdmNwdV9pb2N0bF9pbnRlcnJ1cHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuLS1cbmFyY2gvbWlwcy9rdm0vbWlwcy5jLTUxNC1cbmFyY2gvbWlwcy9rdm0vbWlwcy5jOjUxNTppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfbXBzdGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL21pcHMva3ZtL21pcHMuYy01MTYtXHRcdFx0XHQgICAgc3RydWN0IGt2bV9tcF9zdGF0ZSAqbXBfc3RhdGUpXG4tLVxuYXJjaC9taXBzL2t2bS9taXBzLmMtNTIwLVxuYXJjaC9taXBzL2t2bS9taXBzLmM6NTIxOmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9tcHN0YXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvbWlwcy9rdm0vbWlwcy5jLTUyMi1cdFx0XHRcdCAgICBzdHJ1Y3Qga3ZtX21wX3N0YXRlICptcF9zdGF0ZSlcbi0tXG5hcmNoL21pcHMva3ZtL21pcHMuYz04OTg9bG9uZyBrdm1fYXJjaF92Y3B1X3VubG9ja2VkX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLCB1bnNpZ25lZCBpbnQgaW9jdGwsXG4tLVxuYXJjaC9taXBzL2t2bS9taXBzLmMtOTE3LVxuYXJjaC9taXBzL2t2bS9taXBzLmM6OTE4Omxvbmcga3ZtX2FyY2hfdmNwdV9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCwgdW5zaWduZWQgaW50IGlvY3RsLFxuYXJjaC9taXBzL2t2bS9taXBzLmMtOTE5LVx0XHRcdCB1bnNpZ25lZCBsb25nIGFyZylcbi0tXG5hcmNoL21pcHMva3ZtL21pcHMuYz05ODc9aW50IGt2bV9hcmNoX3ZtX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLCB1bnNpZ25lZCBpbnQgaW9jdGwsIHVuc2lnbmVkIGxvbmcgYXJnKVxuLS1cbmFyY2gvbWlwcy9rdm0vbWlwcy5jLTk5OC1cbmFyY2gvbWlwcy9rdm0vbWlwcy5jOjk5OTppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfc3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9taXBzL2t2bS9taXBzLmMtMTAwMC1cdFx0XHRcdCAgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXG4tLVxuYXJjaC9taXBzL2t2bS9taXBzLmMtMTAwNC1cbmFyY2gvbWlwcy9rdm0vbWlwcy5jOjEwMDU6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvbWlwcy9rdm0vbWlwcy5jLTEwMDYtXHRcdFx0XHQgIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxuLS1cbmFyY2gvbWlwcy9rdm0vbWlwcy5jPTEwMTE9dm9pZCBrdm1fYXJjaF92Y3B1X3Bvc3RjcmVhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gvbWlwcy9rdm0vbWlwcy5jLTEwMTQtXG5hcmNoL21pcHMva3ZtL21pcHMuYzoxMDE1OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9mcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX2ZwdSAqZnB1KVxuYXJjaC9taXBzL2t2bS9taXBzLmMtMTAxNi17XG4tLVxuYXJjaC9taXBzL2t2bS9taXBzLmMtMTAxOS1cbmFyY2gvbWlwcy9rdm0vbWlwcy5jOjEwMjA6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X2ZwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fZnB1ICpmcHUpXG5hcmNoL21pcHMva3ZtL21pcHMuYy0xMDIxLXtcbi0tXG5hcmNoL21pcHMva3ZtL21pcHMuYz0xMDgyPWludCBrdm1fYXJjaF92Y3B1X2R1bXBfcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9taXBzL2t2bS9taXBzLmMtMTExMi1cbmFyY2gvbWlwcy9rdm0vbWlwcy5jOjExMTM6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3JlZ3MgKnJlZ3MpXG5hcmNoL21pcHMva3ZtL21pcHMuYy0xMTE0LXtcbi0tXG5hcmNoL21pcHMva3ZtL21pcHMuYy0xMTI5LVxuYXJjaC9taXBzL2t2bS9taXBzLmM6MTEzMDppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcmVncyAqcmVncylcbmFyY2gvbWlwcy9rdm0vbWlwcy5jLTExMzEte1xuLS1cbmFyY2gvbWlwcy9rdm0vbWlwcy5jLTExNDYtXG5hcmNoL21pcHMva3ZtL21pcHMuYzoxMTQ3OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3RyYW5zbGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL21pcHMva3ZtL21pcHMuYy0xMTQ4LVx0XHRcdFx0ICBzdHJ1Y3Qga3ZtX3RyYW5zbGF0aW9uICp0cilcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szcy5jPTUyNT12b2lkIGt2bXBwY19zdWJhcmNoX3ZjcHVfdW5pbml0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szcy5jLTUyOC1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzLmM6NTI5OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szcy5jLTUzMC1cdFx0XHRcdCAgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYy01NDAtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szcy5jOjU0MTppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYy01NDItXHRcdFx0XHQgIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzLmMtNTUyLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYzo1NTM6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3JlZ3MgKnJlZ3MpXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szcy5jLTU1NC17XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYy01ODAtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szcy5jOjU4MTppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcmVncyAqcmVncylcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzLmMtNTgyLXtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szcy5jLTYwNy1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzLmM6NjA4OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9mcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX2ZwdSAqZnB1KVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYy02MDkte1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzLmMtNjEyLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYzo2MTM6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X2ZwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fZnB1ICpmcHUpXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szcy5jLTYxNC17XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYz04MDc9aW50IGt2bXBwY192Y3B1X3J1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYy04MTEtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szcy5jOjgxMjppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF90cmFuc2xhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYy04MTMtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBrdm1fdHJhbnNsYXRpb24gKnRyKVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzLmMtODE3LVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYzo4MTg6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X2d1ZXN0X2RlYnVnKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzLmMtODE5LVx0XHRcdFx0XHRzdHJ1Y3Qga3ZtX2d1ZXN0X2RlYnVnICpkYmcpXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYz0xOTY4PXN0YXRpYyBpbnQga3ZtcHBjX2hhbmRsZV9uZXN0ZWRfZXhpdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yMDk5LVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyMTAwOnN0YXRpYyBpbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfc3JlZ3NfaHYoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yMTAxLVx0XHRcdFx0XHQgICAgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yMTE0LVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyMTE1OnN0YXRpYyBpbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3NfaHYoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy0yMTE2LVx0XHRcdFx0XHQgICAgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYz02NTEzPXN0YXRpYyBzdHJ1Y3Qga3ZtcHBjX29wcyBrdm1fb3BzX2h2ID0ge1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo2NTE0Olx0LmdldF9zcmVncyA9IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3NyZWdzX2h2LFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo2NTE1Olx0LnNldF9zcmVncyA9IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3NyZWdzX2h2LFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYy02NTE2LVx0LmdldF9vbmVfcmVnID0ga3ZtcHBjX2dldF9vbmVfcmVnX2h2LFxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX3ByLmM9MTEzNT1pbnQga3ZtcHBjX2hhbmRsZV9leGl0X3ByKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgaW50IGV4aXRfbnIpXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfcHIuYy0xNDU0LVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfcHIuYzoxNDU1OnN0YXRpYyBpbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfc3JlZ3NfcHIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfcHIuYy0xNDU2LVx0XHRcdFx0XHQgICAgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfcHIuYy0xNDgxLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfcHIuYzoxNDgyOnN0YXRpYyBpbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3NfcHIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfcHIuYy0xNDgzLVx0XHRcdFx0XHQgICAgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfcHIuYz0yMDQ1PXN0YXRpYyBzdHJ1Y3Qga3ZtcHBjX29wcyBrdm1fb3BzX3ByID0ge1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfcHIuYzoyMDQ2Olx0LmdldF9zcmVncyA9IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3NyZWdzX3ByLFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfcHIuYzoyMDQ3Olx0LnNldF9zcmVncyA9IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3NyZWdzX3ByLFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfcHIuYy0yMDQ4LVx0LmdldF9vbmVfcmVnID0ga3ZtcHBjX2dldF9vbmVfcmVnX3ByLFxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9va2UuYz0xNDQyPXZvaWQga3ZtcHBjX3N1YmFyY2hfdmNwdV91bmluaXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9va2UuYy0xNDQ2LVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rZS5jOjE0NDc6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3JlZ3MgKnJlZ3MpXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmMtMTQ0OC17XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rZS5jLTE0NzctXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmM6MTQ3ODppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcmVncyAqcmVncylcbmFyY2gvcG93ZXJwYy9rdm0vYm9va2UuYy0xNDc5LXtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmM9MTYwNT1pbnQga3ZtcHBjX3NldF9zcmVnc19pdm9yKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rZS5jLTE2MjktXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmM6MTYzMDppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfc3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rZS5jLTE2MzEtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9va2UuYy0xNjQ2LVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rZS5jOjE2NDc6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvcG93ZXJwYy9rdm0vYm9va2UuYy0xNjQ4LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncylcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmM9MTcyNz1pbnQga3ZtcHBjX3NldF9vbmVfcmVnKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGlkLFxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9va2UuYy0xNzk1LVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rZS5jOjE3OTY6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X2ZwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fZnB1ICpmcHUpXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmMtMTc5Ny17XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rZS5jLTE4MDAtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmM6MTgwMTppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfZnB1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9mcHUgKmZwdSlcbmFyY2gvcG93ZXJwYy9rdm0vYm9va2UuYy0xODAyLXtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmMtMTgwNS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9va2UuYzoxODA2OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3RyYW5zbGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmMtMTgwNy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGt2bV90cmFuc2xhdGlvbiAqdHIpXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rZS5jPTE5ODA9aW50IGt2bXBwY194bGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVsb25nIGVhZGRyLCBlbnVtIHhsYXRlX2luc3RkYXRhIHhsaWQsXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rZS5jLTIwMzAtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmM6MjAzMTppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfZ3Vlc3RfZGVidWcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rZS5jLTIwMzItXHRcdFx0XHRcdCBzdHJ1Y3Qga3ZtX2d1ZXN0X2RlYnVnICpkYmcpXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9wb3dlcnBjLmM9MTczMj1pbnQga3ZtX3ZjcHVfaW9jdGxfc2V0X29uZV9yZWcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX29uZV9yZWcgKnJlZylcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL3Bvd2VycGMuYy0xNzgwLVxuYXJjaC9wb3dlcnBjL2t2bS9wb3dlcnBjLmM6MTc4MTppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC9wb3dlcnBjL2t2bS9wb3dlcnBjLmMtMTc4Mi17XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9wb3dlcnBjLmM9MjAwMD1ib29sIGt2bV9hcmNoX2ludGNfaW5pdGlhbGl6ZWQoc3RydWN0IGt2bSAqa3ZtKVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vcG93ZXJwYy5jLTIwMTItXG5hcmNoL3Bvd2VycGMva3ZtL3Bvd2VycGMuYzoyMDEzOmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9tcHN0YXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvcG93ZXJwYy9rdm0vcG93ZXJwYy5jLTIwMTQtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGt2bV9tcF9zdGF0ZSAqbXBfc3RhdGUpXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9wb3dlcnBjLmMtMjAxOC1cbmFyY2gvcG93ZXJwYy9rdm0vcG93ZXJwYy5jOjIwMTk6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X21wc3RhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9wb3dlcnBjL2t2bS9wb3dlcnBjLmMtMjAyMC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qga3ZtX21wX3N0YXRlICptcF9zdGF0ZSlcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL3Bvd2VycGMuYz0yMDI1PWxvbmcga3ZtX2FyY2hfdmNwdV91bmxvY2tlZF9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCwgdW5zaWduZWQgaW50IGlvY3RsLFxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vcG93ZXJwYy5jLTIwMzktXG5hcmNoL3Bvd2VycGMva3ZtL3Bvd2VycGMuYzoyMDQwOmxvbmcga3ZtX2FyY2hfdmNwdV9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCxcbmFyY2gvcG93ZXJwYy9rdm0vcG93ZXJwYy5jLTIwNDEtICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBpb2N0bCwgdW5zaWduZWQgbG9uZyBhcmcpXG4tLVxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jPTI0NT1sb25nIGt2bV9hcmNoX3ZjcHVfdW5sb2NrZWRfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsIHVuc2lnbmVkIGludCBpb2N0bCxcbi0tXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmMtMjY1LVxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jOjI2Njpsb25nIGt2bV9hcmNoX3ZjcHVfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmMtMjY3LVx0XHRcdCB1bnNpZ25lZCBpbnQgaW9jdGwsIHVuc2lnbmVkIGxvbmcgYXJnKVxuLS1cbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy0zMTItXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmM6MzEzOmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmMtMzE0LVx0XHRcdFx0ICBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncylcbi0tXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmMtMzE4LVxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jOjMxOTppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jLTMyMC1cdFx0XHRcdCAgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXG4tLVxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jLTMyNC1cbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYzozMjU6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X2ZwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fZnB1ICpmcHUpXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmMtMzI2LXtcbi0tXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmMtMzI5LVxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jOjMzMDppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfZnB1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9mcHUgKmZwdSlcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy0zMzEte1xuLS1cbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy0zMzQtXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmM6MzM1OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3RyYW5zbGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmMtMzM2LVx0XHRcdFx0ICBzdHJ1Y3Qga3ZtX3RyYW5zbGF0aW9uICp0cilcbi0tXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmMtMzQwLVxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jOjM0MTppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcmVncyAqcmVncylcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy0zNDIte1xuLS1cbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy0zNDUtXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmM6MzQ2OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9yZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9yZWdzICpyZWdzKVxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jLTM0Ny17XG4tLVxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jPTQ5MT1ib29sIGt2bV9yaXNjdl92Y3B1X3N0b3BwZWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy00OTUtXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmM6NDk2OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9tcHN0YXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy00OTctXHRcdFx0XHQgICAgc3RydWN0IGt2bV9tcF9zdGF0ZSAqbXBfc3RhdGUpXG4tLVxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jLTUwMy1cbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYzo1MDQ6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X21wc3RhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jLTUwNS1cdFx0XHRcdCAgICBzdHJ1Y3Qga3ZtX21wX3N0YXRlICptcF9zdGF0ZSlcbi0tXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmMtNTMyLVxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jOjUzMzppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfZ3Vlc3RfZGVidWcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jLTUzNC1cdFx0XHRcdFx0c3RydWN0IGt2bV9ndWVzdF9kZWJ1ZyAqZGJnKVxuLS1cbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYz03NTA9c3RhdGljIHZvaWQgbm9pbnN0ciBrdm1fcmlzY3ZfdmNwdV9lbnRlcl9leGl0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbi0tXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmMtNzU5LVx0ICogSFRJTlNUKSBoZXJlIGJlY2F1c2Ugd2UgZG8gbG9jYWxfaXJxX2VuYWJsZSgpIGFmdGVyIHRoaXNcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYzo3NjA6XHQgKiBmdW5jdGlvbiBpbiBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bigpIHdoaWNoIGNhbiByZXN1bHQgaW5cbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy03NjEtXHQgKiBhbiBpbnRlcnJ1cHQgaW1tZWRpYXRlbHkgYWZ0ZXIgbG9jYWxfaXJxX2VuYWJsZSgpIGFuZCBjYW5cbi0tXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmMtODI5LVxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jOjgzMDppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jLTgzMS17XG4tLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jPTM5NDU9aW50IGt2bV9hcmNoX3ZjcHVfc2hvdWxkX2tpY2soc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0zOTUxLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjM5NTI6c3RhdGljIGludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9vbmVfcmVnKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0zOTUzLVx0XHRcdFx0XHQgICBzdHJ1Y3Qga3ZtX29uZV9yZWcgKnJlZylcbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNDAwMC1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzo0MDAxOnN0YXRpYyBpbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfb25lX3JlZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNDAwMi1cdFx0XHRcdFx0ICAgc3RydWN0IGt2bV9vbmVfcmVnICpyZWcpXG4tLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTQwNTMtXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6NDA1NDpzdGF0aWMgdm9pZCBrdm1fYXJjaF92Y3B1X2lvY3RsX25vcm1hbF9yZXNldChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNDA1NS17XG4tLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTQwNjUtXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6NDA2NjpzdGF0aWMgdm9pZCBrdm1fYXJjaF92Y3B1X2lvY3RsX2luaXRpYWxfcmVzZXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTQwNjcte1xuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTQwNjgtXHQvKiBJbml0aWFsIHJlc2V0IGlzIGEgc3VwZXJzZXQgb2YgdGhlIG5vcm1hbCByZXNldCAqL1xuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjQwNjk6XHRrdm1fYXJjaF92Y3B1X2lvY3RsX25vcm1hbF9yZXNldCh2Y3B1KTtcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy00MDcwLVxuLS1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy00MTA5LVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjQxMTA6c3RhdGljIHZvaWQga3ZtX2FyY2hfdmNwdV9pb2N0bF9jbGVhcl9yZXNldChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNDExMS17XG4tLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTQxMTQtXHQvKiBDbGVhciByZXNldCBpcyBhIHN1cGVyc2V0IG9mIHRoZSBpbml0aWFsIHJlc2V0ICovXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6NDExNTpcdGt2bV9hcmNoX3ZjcHVfaW9jdGxfaW5pdGlhbF9yZXNldCh2Y3B1KTtcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy00MTE2LVxuLS1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy00MTI1LVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjQxMjY6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3JlZ3MgKnJlZ3MpXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNDEyNy17XG4tLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTQxMzMtXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6NDEzNDppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcmVncyAqcmVncylcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy00MTM1LXtcbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNDE0MS1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzo0MTQyOmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNDE0My1cdFx0XHRcdCAgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXG4tLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTQxNTMtXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6NDE1NDppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfc3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTQxNTUtXHRcdFx0XHQgIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxuLS1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy00MTY1LVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjQxNjY6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X2ZwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fZnB1ICpmcHUpXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNDE2Ny17XG4tLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTQxODAtXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6NDE4MTppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfZnB1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9mcHUgKmZwdSlcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy00MTgyLXtcbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNDE5NS1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzo0MTk2OnN0YXRpYyBpbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfaW5pdGlhbF9wc3coc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBwc3dfdCBwc3cpXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNDE5Ny17XG4tLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTQyMDgtXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6NDIwOTppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF90cmFuc2xhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTQyMTAtXHRcdFx0XHQgIHN0cnVjdCBrdm1fdHJhbnNsYXRpb24gKnRyKVxuLS1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy00MjE4LVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjQyMTk6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X2d1ZXN0X2RlYnVnKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy00MjIwLVx0XHRcdFx0XHRzdHJ1Y3Qga3ZtX2d1ZXN0X2RlYnVnICpkYmcpXG4tLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTQyNjAtXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6NDI2MTppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfbXBzdGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNDI2Mi1cdFx0XHRcdCAgICBzdHJ1Y3Qga3ZtX21wX3N0YXRlICptcF9zdGF0ZSlcbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNDI3NS1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzo0Mjc2OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9tcHN0YXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy00Mjc3LVx0XHRcdFx0ICAgIHN0cnVjdCBrdm1fbXBfc3RhdGUgKm1wX3N0YXRlKVxuLS1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYz00OTk3PXN0YXRpYyB2b2lkIHN0b3JlX3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy01MDE3LVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjUwMTg6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy01MDE5LXtcbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM9NTQ3Mz1zdGF0aWMgaW50IGt2bV9zMzkwX2hhbmRsZV9wdl92Y3B1X2R1bXAoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuLS1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy01NTE0LVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjU1MTU6bG9uZyBrdm1fYXJjaF92Y3B1X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTU1MTYtXHRcdFx0IHVuc2lnbmVkIGludCBpb2N0bCwgdW5zaWduZWQgbG9uZyBhcmcpXG4tLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTU1MzctXHRcdFx0YnJlYWs7XG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6NTUzODpcdFx0ciA9IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X2luaXRpYWxfcHN3KHZjcHUsIHBzdyk7XG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNTUzOS1cdFx0YnJlYWs7XG4tLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTU1NDItXHRcdHIgPSAwO1xuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjU1NDM6XHRcdGt2bV9hcmNoX3ZjcHVfaW9jdGxfY2xlYXJfcmVzZXQodmNwdSk7XG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNTU0NC1cdFx0aWYgKGt2bV9zMzkwX3B2X2NwdV9pc19wcm90ZWN0ZWQodmNwdSkpIHtcbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNTU1Mi1cdFx0ciA9IDA7XG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6NTU1MzpcdFx0a3ZtX2FyY2hfdmNwdV9pb2N0bF9pbml0aWFsX3Jlc2V0KHZjcHUpO1xuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTU1NTQtXHRcdGlmIChrdm1fczM5MF9wdl9jcHVfaXNfcHJvdGVjdGVkKHZjcHUpKSB7XG4tLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTU1NjMtXHRcdHIgPSAwO1xuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjU1NjQ6XHRcdGt2bV9hcmNoX3ZjcHVfaW9jdGxfbm9ybWFsX3Jlc2V0KHZjcHUpO1xuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTU1NjUtXHRcdGlmIChrdm1fczM5MF9wdl9jcHVfaXNfcHJvdGVjdGVkKHZjcHUpKSB7XG4tLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTU1ODEtXHRcdGlmIChpb2N0bCA9PSBLVk1fU0VUX09ORV9SRUcpXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6NTU4MjpcdFx0XHRyID0ga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfb25lX3JlZyh2Y3B1LCBcdTAwMjZyZWcpO1xuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTU1ODMtXHRcdGVsc2VcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxMTowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODM5NAoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDE3NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGb2N1c2luZyBGdXp6aW5nIG9uIExvb25nQXJjaCBLVk0gVkNQVSBDb250cm9sKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgdG8gZGlyZWN0IGZ1enppbmcgZWZmb3J0cyByZWxhdGVkIHRvIHRoZSBMb29uZ0FyY2ggS1ZNIFZDUFUuIFRoZSBjdXJyZW50IHRob3VnaHQgaXMgdGhhdCBga3ZtX2FyY2hfdmNwdV9pb2N0bGAgaXMgYSBnb29kIGNhbmRpZGF0ZSwgc2luY2UgaXQmIzM5O3Mgbm9uLXN0YXRpYyBhbmQgYWNjZXNzaWJsZSBhcyBhIGdlbmVyYWwgS1ZNIEFQSSBmdW5jdGlvbi4gQnV0LCBpZiBJIHB1dCB0aGF0IGludG8gYEZvY3VzU3ltYm9sc2AsIGl0JiMzOTtzIGdvaW5nIHRvIGFmZmVjdCAqYWxsKiBhcmNoaXRlY3R1cmVzLCBub3QganVzdCBMb29uZ0FyY2guIFRoYXQmIzM5O3Mgbm90IGlkZWFsIGZvciB0YXJnZXRlZCBmdXp6aW5nLiBJJiMzOTttIHdvbmRlcmluZyBpZiB0aGVyZSYjMzk7cyBhIExvb25nQXJjaC1zcGVjaWZpYyBmdW5jdGlvbiB0aGF0IHdvdWxkIGJlIGJldHRlci4gSG1tLCBga3ZtX2xvb25nYXJjaF92Y3B1X3NldF9hdHRyYCBhbmQgYGt2bV9sb29uZ2FyY2hfY3B1Y2ZnX3NldF9hdHRyYCBsb29rIHByb21pc2luZywgYnV0IHRoZXkmIzM5O3JlIGJvdGggc3RhdGljLiBUaGF0JiMzOTtzIGEgZGVhbCBicmVha2VyLiBTbywgd2hpbGUgSSAqY291bGQqIHVzZSBga3ZtX2FyY2hfdmNwdV9pb2N0bGAsIGl0JiMzOTtzIHRvbyBnZW5lcmljLiBJJiMzOTttIHRoaW5raW5nLCB0aGUgYmVzdCBhcHByb2FjaCBpcyB0byBjaGVjayBgYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuY2AgZm9yIGFueSBvdGhlciBub24tc3RhdGljIGZ1bmN0aW9ucyByZWxhdGVkIHRvIFZDUFUgY29uZmlndXJhdGlvbiBvciBjb250cm9sLiBUaGF0IHdpbGwgZW5zdXJlIHRoYXQgSSYjMzk7bSBmb2N1c2luZyB0aGUgZnV6emluZyBvbiB0aGUgbW9zdCByZWxldmFudCBjb2RlIGZvciB0aGlzIHNwZWNpZmljIGFyY2hpdGVjdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTE6MDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XmludCBrdm1fYXJjaF92Y3B1X2lvY3RsXyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYz00MjA9dm1fZmF1bHRfdCBrdm1fYXJjaF92Y3B1X2ZhdWx0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IHZtX2ZhdWx0ICp2bWYpXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy00MjQtXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jOjQyNTppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF90cmFuc2xhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy00MjYtXHRcdFx0XHQgIHN0cnVjdCBrdm1fdHJhbnNsYXRpb24gKnRyKVxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM9NDQ0PWludCBrdm1fYXJjaF92Y3B1X2R1bXBfcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy00NjYtXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jOjQ2NzppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfbXBzdGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTQ2OC1cdFx0XHRcdHN0cnVjdCBrdm1fbXBfc3RhdGUgKm1wX3N0YXRlKVxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtNDc0LVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzo0NzU6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X21wc3RhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy00NzYtXHRcdFx0XHRzdHJ1Y3Qga3ZtX21wX3N0YXRlICptcF9zdGF0ZSlcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTQ5MC1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6NDkxOmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9ndWVzdF9kZWJ1ZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTQ5Mi1cdFx0XHRcdFx0c3RydWN0IGt2bV9ndWVzdF9kZWJ1ZyAqZGJnKVxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM9OTg0PXN0YXRpYyBpbnQga3ZtX3NldF9yZWcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBjb25zdCBzdHJ1Y3Qga3ZtX29uZV9yZWcgKnJlZylcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEwMDEtXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jOjEwMDI6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEwMDMte1xuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTAwNi1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6MTAwNzppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncylcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTAwOC17XG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMDExLVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzoxMDEyOmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9yZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9yZWdzICpyZWdzKVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMDEzLXtcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEwMjMtXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jOjEwMjQ6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3JlZ3MgKnJlZ3MpXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEwMjUte1xuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM9MTIzOD1sb25nIGt2bV9hcmNoX3ZjcHVfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMzEwLVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzoxMzExOmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9mcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX2ZwdSAqZnB1KVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMzEyLXtcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEzMjItXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jOjEzMjM6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X2ZwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fZnB1ICpmcHUpXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEzMjQte1xuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM9MTgyOT12b2lkIGt2bV9hcmNoX3ZjcHVfcHV0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTE4NTItXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jOjE4NTM6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTg1NC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDExOjA2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMTg1CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMTUyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTG9vbmdBcmNoIEtWTSBJbXBsZW1lbnRhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYGt2bV9hcmNoX3ZjcHVfaW9jdGxgLiBJdCYjMzk7cyBsb2NhdGVkIGluIGBhcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jYCwgd2hpY2ggbWFrZXMgc2Vuc2U7IHRoaXMgaXMgdGhlIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgbW9yZSBnZW5lcmFsIEtWTSBpbnRlcmZhY2UuIFJpZ2h0LCBzbyBpZiBJIGNhbGwgYGt2bV9hcmNoX3ZjcHVfaW9jdGxgLCBpdCBzaG91bGQgcmVzb2x2ZSB0byB0aGUgTG9vbmdBcmNoIHZlcnNpb24gKmlmKiB0aGUgZnV6emVyIGlzIHRhcmdldGluZyBMb29uZ0FyY2gsIHdoaWNoIGl0IHNob3VsZCBiZSBpbiB0aGlzIGNhc2UuCgpCdXQgd2FpdCwgSSBuZWVkIHRvIHJlbWVtYmVyIHdoYXQgKnRoaXMqIGZ1bmN0aW9uIGFjdHVhbGx5IGRvZXMuIEFoLCByaWdodCEgYGt2bV9hcmNoX3ZjcHVfaW9jdGxgIGhhbmRsZXMgYEtWTV9TRVRfREVWSUNFX0FUVFJgIGFuZCBgS1ZNX0hBU19ERVZJQ0VfQVRUUmAgY2FsbHMgcmVsYXRlZCB0byB0aGUgVkNQVS4gU28sIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIHRoZSBzb3VyY2UgY29kZSBpbiBgYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuY2AgdG8gc2VlICpleGFjdGx5KiBob3cgaXQmIzM5O3MgaGFuZGxpbmcgdGhvc2Ugc3BlY2lmaWMgaW9jdGxzLiBUaW1lIHRvIGRpZyBpbiB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTE6MDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bG9uZyBrdm1fYXJjaF92Y3B1X2lvY3RsJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jPTEyMTk9c3RhdGljIGludCBrdm1fbG9vbmdhcmNoX3ZjcHVfc2V0X2F0dHIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTIzNy1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6MTIzODpsb25nIGt2bV9hcmNoX3ZjcHVfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEyMzktXHRcdFx0IHVuc2lnbmVkIGludCBpb2N0bCwgdW5zaWduZWQgbG9uZyBhcmcpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDExOjA2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNzUxCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogNjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTG9vbmdBcmNoIEtWTSBOb24tU3RhdGljIEZ1bmN0aW9uIENoZWNrKioKCk9rYXksIHNvIGBrdm1fYXJjaF92Y3B1X2lvY3RsYCBpcyBkZWZpbml0ZWx5IG5vdCBzdGF0aWMsIGdvdCBpdC4gTm93LCB0aGUgbmV4dCBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoZXJlIGFyZSAqYW55KiBvdGhlciBMb29uZ0FyY2gtc3BlY2lmaWMgZnVuY3Rpb25zIHdpdGhpbiB0aGUgS1ZNIGFyY2hpdGVjdHVyZSB0aGF0IGFyZW4mIzM5O3QgZGVjbGFyZWQgYXMgc3RhdGljLiBUaGlzIGlzIHNvbWV0aGluZyBJIG5lZWQgdG8gcXVpY2tseSBhc2NlcnRhaW4uIExldCYjMzk7cyBzZWUuLi5JIHNob3VsZCBwcm9iYWJseSBjaGVjayBgYXJjaC9sb29uZ2FyY2gva3ZtL3ZtLmNgLiBJJiMzOTtsbCB6ZXJvIGluIG9uIGBrdm1fYXJjaF9pbml0X3ZtYCBhbmQgc2VlIHdoYXQgdGhlIGRlY2xhcmF0aW9uIHRlbGxzIG1lLiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBhbnN3ZXIgSSBuZWVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxMTowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1fYXJjaF9pbml0X3ZtJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9sb29uZ2FyY2gva3ZtL3ZtLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9sb29uZ2FyY2gva3ZtL3ZtLmM9Mjg9c3RhdGljIHZvaWQga3ZtX3ZtX2luaXRfZmVhdHVyZXMoc3RydWN0IGt2bSAqa3ZtKVxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS92bS5jLTYxLVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZtLmM6NjI6aW50IGt2bV9hcmNoX2luaXRfdm0oc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBsb25nIHR5cGUpXG5hcmNoL2xvb25nYXJjaC9rdm0vdm0uYy02My17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDExOjA2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxMTA5CgkJCQkJCQlvdXRwdXQ6IDEwNAoJCQkJCQkJdGhvdWdodHM6IDM3OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBGdXp6aW5nIFN0cmF0ZWd5IGZvciB0aGUgTG9vbmdBcmNoIEtWTSBSYWNlIENvbmRpdGlvbiBGaXgqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGZpZ3VyaW5nIG91dCB0aGUgYmVzdCB3YXkgdG8gZnV6eiBpdC4gYGt2bV9hcmNoX2luaXRfdm1gIGlzIGEgcHJldHR5IGdlbmVyaWMgZnVuY3Rpb24sIGp1c3QgbGlrZSBga3ZtX2FyY2hfdmNwdV9pb2N0bGAsIHNvIEkgbmVlZCB0byBjaG9vc2UgY2FyZWZ1bGx5LiBTaW5jZSB0aGlzIHBhdGNoIHRhcmdldHMgdGhlIExvb25nQXJjaCBhcmNoaXRlY3R1cmUgc3BlY2lmaWNhbGx5LCB0aGUgZmFjdCB0aGF0IGBrdm1fYXJjaF92Y3B1X2lvY3RsYCBpcyBicm9hZCBpcyBsZXNzIG9mIGEgY29uY2Vybi4gSXQgbG9va3MgbGlrZSB0aGUgcGF0Y2ggbW9kaWZpZXMgYGt2bV9sb29uZ2FyY2hfY3B1Y2ZnX3NldF9hdHRyYCwgd2hpY2ggaXMgdGhlbiBjYWxsZWQgZnJvbSBga3ZtX2xvb25nYXJjaF92Y3B1X3NldF9hdHRyYCBhbmQgdGhlbiB1bHRpbWF0ZWx5IGBrdm1fYXJjaF92Y3B1X2lvY3RsYC4gSXQgbWlnaHQgYmUgdGVtcHRpbmcgdG8gZHJpbGwgZG93biBmdXJ0aGVyLCBidXQgc2luY2Ugd2UmIzM5O3JlIHRhcmdldGluZyBhIHZlcnkgc3BlY2lmaWMgYXJjaGl0ZWN0dXJlIEkgc2hvdWxkIHN0aWNrIHdpdGggdGhlIG1vc3QgZ2VuZXJpYyBlbnRyeSBwb2ludC4KCkkgY2hlY2tlZCBpZiBga3ZtX2xvb25nYXJjaF9jcHVjZmdfc2V0X2F0dHJgIHdhcyBleHBvcnRhYmxlIG9yIG5vbi1zdGF0aWMsIGJ1dCBpdCYjMzk7cyBpbnRlcm5hbC4gYGt2bV9hcmNoX3ZjcHVfaW9jdGxgIHNlZW1zIHRvIGJlIHRoZSBiZXN0IGVudHJ5IHBvaW50IGZvciBmdXp6aW5nLCBnaXZlbiBpdHMgY29ubmVjdGl2aXR5LgoKTm93IEkgbmVlZCB0byBtYWtlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBhbnl0aGluZy4gSSBkb24mIzM5O3Qgc2VlIGFueSBvdGhlciBvYnZpb3VzIGNvbmZpZ3VyYXRpb24gcG9pbnRzIG91dHNpZGUgb2YgYEtWTWAuCgpJIGFsc28gbmVlZCB0byB2ZXJpZnkgdGhpcyBpcyBhY3R1YWxseSBhIHdvcnRod2hpbGUgdGFyZ2V0LiBga3ZtX2FyY2hfdmNwdV9pb2N0bGAgaXMgYW4gaW9jdGwsIG5vdCBhIGhvdCBwYXRoLCBzbyB0aGF0JiMzOTtzIGdvb2QuIEFuZCB5ZXMsIGl0IGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gS1ZNIGZvciBMb29uZ0FyY2gsIHNvIGl0IGlzIGEgZ29vZCB0YXJnZXQuCgpJbiBzdW1tYXJ5LCB0aGUgaW1wb3J0YW50IHBvaW50cyBhcmU6CgoqICAgKipXb3J0aEZ1enppbmcqKjogdHJ1ZQoqICAgKipGb2N1c1N5bWJvbHMqKjogYGt2bV9hcmNoX3ZjcHVfaW9jdGxgLCBga3ZtX2FyY2hfaW5pdF92bWAKKiAgICoqRW5hYmxlQ29uZmlncyoqOiBgS1ZNYAoqICAgKipSZWFzb25pbmcqKjogVGhpcyBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGluIExvb25nQXJjaCBLVk0gQ1BVIGNvbmZpZ3VyYXRpb24gdXNpbmcgYSBuZXcgc3BpbmxvY2sgKGBwdl9zZXR0aW5nX2xvY2tgKS4gSXQgZGlyZWN0bHkgbW9kaWZpZXMgS1ZNIGZ1bmN0aW9uYWxpdHksIHJlYWNoYWJsZSB2aWEgVkNQVSBpb2N0bHMsIG1ha2luZyBpdCBhIGdvb2QgdGFyZ2V0IGZvciBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxMTowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX2FyY2hfdmNwdV9pb2N0bCYjMzQ7LAogICAgJiMzNDtrdm1fYXJjaF9pbml0X3ZtJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gTG9vbmdBcmNoIEtWTSBDUFUgY29uZmlndXJhdGlvbiBieSBpbnRyb2R1Y2luZyBhIG5ldyBzcGlubG9jayBgcHZfc2V0dGluZ19sb2NrYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBLVk0gc3Vic3lzdGVtIHRoYXQgaXMgcmVhY2hhYmxlIHZpYSBWQ1BVIGlvY3Rscy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX2FyY2hfdmNwdV9pb2N0bCYjMzQ7LAogICAgJiMzNDtrdm1fYXJjaF9pbml0X3ZtJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gTG9vbmdBcmNoIEtWTSBDUFUgY29uZmlndXJhdGlvbiBieSBpbnRyb2R1Y2luZyBhIG5ldyBzcGlubG9jayBgcHZfc2V0dGluZ19sb2NrYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBLVk0gc3Vic3lzdGVtIHRoYXQgaXMgcmVhY2hhYmxlIHZpYSBWQ1BVIGlvY3Rscy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTE6MDY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxMTowNjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgc3BpbmxvY2sgKGBwdl9zZXR0aW5nX2xvY2tgKSB0byBwcm90ZWN0IHRoZSBgcHZfZmVhdHVyZXNgIGZpZWxkIGluIGBzdHJ1Y3Qga3ZtX2FyY2hgIGZyb20gY29uY3VycmVudCBtb2RpZmljYXRpb25zIGR1cmluZyB2Q1BVIGNvbmZpZ3VyYXRpb24uIFRoaXMgaXMgYSBjb25jdXJyZW5jeS9sb2NraW5nIGZpeCBhaW1lZCBhdCBwcmV2ZW50aW5nIGRhdGEgcmFjZXMgb3IgaW5jb25zaXN0ZW50IHN0YXRlcyBhY3Jvc3MgdkNQVXMuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UsIG9yIGNoYW5nZXMgdG8gYm91bmRzIGNoZWNraW5nIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBDb25jdXJyZW5jeSBpc3N1ZXMgYW5kIGRhdGEgcmFjZXMgYXJlIGJlc3QgZGV0ZWN0ZWQgYnkgdG9vbHMgbGlrZSBLQ1NBTiBvciBMT0NLREVQLCB3aGlsZSBLQVNBTiBoYW5kbGVzIG1lbW9yeSBjb3JydXB0aW9uLiBLTVNBTiBpcyBzcGVjaWZpY2FsbHkgZm9yIGRldGVjdGluZyB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSwgd2hpY2ggaXMgbm90IHJlbGV2YW50IHRvIHRoaXMgcGF0Y2guJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDNjZTdmM2U3NjEzNjE1ZmE0ODAwMDhiNzMxODVhZTJmZTE4N2ExYmEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEF1ZyAxNCAxMTowNTozNCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmggYi9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oCmluZGV4IDIzY2ZiZWNlYmJkNzkuLjM1MzhhMTk5YWFjNjIgMTAwNjQ0Ci0tLSBhL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2hvc3QuaApAQCAtMTI1LDYgJiM0MzsxMjUsNyBAQCBzdHJ1Y3Qga3ZtX2FyY2ggewogCXVuc2lnbmVkIGludCAgcHRlX3NoaWZ0c1tNQVhfUEdUQUJMRV9MRVZFTFNdOwogCXVuc2lnbmVkIGludCAgcm9vdF9sZXZlbDsKIAlzcGlubG9ja190ICAgIHBoeWlkX21hcF9sb2NrOwomIzQzOwlzcGlubG9ja190ICAgIHB2X3NldHRpbmdfbG9jazsKIAlzdHJ1Y3Qga3ZtX3BoeWlkX21hcCAgKnBoeWlkX21hcDsKIAkvKiBFbmFibGVkIFBWIGZlYXR1cmVzICovCiAJdW5zaWduZWQgbG9uZyBwdl9mZWF0dXJlczsKZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMgYi9hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jCmluZGV4IDIwYzIwN2Q4MGUzMWEuLmU0N2ZhNDYzYThiZWMgMTAwNjQ0Ci0tLSBhL2FyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYwpAQCAtMTE2NSwxMCAmIzQzOzExNjUsMTQgQEAgc3RhdGljIGludCBrdm1fbG9vbmdhcmNoX2NwdWNmZ19zZXRfYXR0cihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsCiAJCQlyZXR1cm4gLUVJTlZBTDsKIAogCQkvKiBBbGwgdkNQVXMgbmVlZCBzZXQgdGhlIHNhbWUgUFYgZmVhdHVyZXMgKi8KJiM0MzsJCXNwaW5fbG9jaygmYW1wO2t2bS0mZ3Q7YXJjaC5wdl9zZXR0aW5nX2xvY2spOwogCQlpZiAoKGt2bS0mZ3Q7YXJjaC5wdl9mZWF0dXJlcyAmYW1wOyBMT09OR0FSQ0hfUFZfRkVBVF9VUERBVEVEKQotCQkJCSZhbXA7JmFtcDsgKChrdm0tJmd0O2FyY2gucHZfZmVhdHVyZXMgJmFtcDsgdmFsaWQpICE9IHZhbCkpCiYjNDM7CQkJCSZhbXA7JmFtcDsgKChrdm0tJmd0O2FyY2gucHZfZmVhdHVyZXMgJmFtcDsgdmFsaWQpICE9IHZhbCkpIHsKJiM0MzsJCQlzcGluX3VubG9jaygmYW1wO2t2bS0mZ3Q7YXJjaC5wdl9zZXR0aW5nX2xvY2spOwogCQkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CQl9CiAJCWt2bS0mZ3Q7YXJjaC5wdl9mZWF0dXJlcyA9IHZhbCB8IExPT05HQVJDSF9QVl9GRUFUX1VQREFURUQ7CiYjNDM7CQlzcGluX3VubG9jaygmYW1wO2t2bS0mZ3Q7YXJjaC5wdl9zZXR0aW5nX2xvY2spOwogCQlyZXR1cm4gMDsKIAlkZWZhdWx0OgogCQlyZXR1cm4gLUVOWElPOwpkaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gva3ZtL3ZtLmMgYi9hcmNoL2xvb25nYXJjaC9rdm0vdm0uYwppbmRleCAxMzE3YzcxOGY4OTZhLi44NmJhN2Q1NGU4MWY4IDEwMDY0NAotLS0gYS9hcmNoL2xvb25nYXJjaC9rdm0vdm0uYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2xvb25nYXJjaC9rdm0vdm0uYwpAQCAtNzYsNiAmIzQzOzc2LDcgQEAgaW50IGt2bV9hcmNoX2luaXRfdm0oc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBsb25nIHR5cGUpCiAJCXJldHVybiAtRU5PTUVNOwogCX0KIAlzcGluX2xvY2tfaW5pdCgmYW1wO2t2bS0mZ3Q7YXJjaC5waHlpZF9tYXBfbG9jayk7CiYjNDM7CXNwaW5fbG9ja19pbml0KCZhbXA7a3ZtLSZndDthcmNoLnB2X3NldHRpbmdfbG9jayk7CiAKIAlrdm1faW5pdF92bWNzKGt2bSk7CiAJa3ZtX3ZtX2luaXRfZmVhdHVyZXMoa3ZtKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDExOjA2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1NjgKCQkJCQkJCW91dHB1dDogMTU3CgkJCQkJCQl0aG91Z2h0czogMzE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEtWTSBMb29uZ2FyY2ggUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBzdHJhaWdodGZvcndhcmQuIEl0JiMzOTtzIGFkZGluZyBhIG5ldyBzcGlubG9jaywgYHB2X3NldHRpbmdfbG9ja2AsIHRvIHRoZSBga3ZtX2FyY2hgIHN0cnVjdCBpbiB0aGUgTG9vbmdBcmNoIEtWTSBpbXBsZW1lbnRhdGlvbi4gRnJvbSB3aGF0IEkgY2FuIHNlZSwgaXQmIzM5O3MgaW5pdGlhbGl6ZWQgZHVyaW5nIFZNIGluaXRpYWxpemF0aW9uIGluIGBrdm1fYXJjaF9pbml0X3ZtYCBhbmQgdGhlbiB1c2VkIHRvIHByb3RlY3QgdGhlIGBrdm0tJmd0O2FyY2gucHZfZmVhdHVyZXNgIHZhcmlhYmxlIHdpdGhpbiBga3ZtX2xvb25nYXJjaF9jcHVjZmdfc2V0X2F0dHJgLgoKRXNzZW50aWFsbHksIHRoaXMgaXMgYSBjbGFzc2ljIGxvY2tpbmcgZml4IHRvIHJlc29sdmUgYSBjb25jdXJyZW5jeSBpc3N1ZSwgbGlrZWx5IGEgZGF0YSByYWNlLiBUaGUgY29kZSBjbGVhcmx5IG91dGxpbmVzIGEgcGF0dGVybjogbG9jaywgY2hlY2sgYSBjb25kaXRpb24sIG1vZGlmeSBkYXRhLCBhbmQgdW5sb2NrLCB3aXRoIGFuIGVhcmx5IGV4aXQgYW5kIHVubG9jayBvbiBmYWlsdXJlLiBUaGUgY29kZSBpcyBjbGVhbiBhbmQgYWRkcmVzc2VzIGEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uIHdoZW4gc2V0dGluZyB0aGUgYHB2X2ZlYXR1cmVzYC4KClRoZSBwYXRjaCBkb2VzbiYjMzk7dCBpbnZvbHZlIGFueSBjaGFuZ2VzIHRvIGhvdyBkYXRhIGlzIGV4cG9zZWQgdG8gdXNlcnNwYWNlLCBubyBtb2RpZmljYXRpb25zIHRvIGV4aXN0aW5nIGJvdW5kcyBjaGVja3MsIGFuZCBubyBhbGxvY2F0aW9uIG9mIGFueSBjb21wbGV4IHN0cnVjdHVyZXMuIFNpbmNlIHRoZSBidWcgdGhpcyBpcyBhZGRyZXNzaW5nIGlzIGEgY29uY3VycmVuY3kgaXNzdWUgYW5kIGl0JiMzOTtzIGJlaW5nIGNhdWdodCBieSBLQ1NBTiBvciBMT0NLREVQLCB0aGVyZSYjMzk7cyBubyBuZWVkIGZvciBLTVNBTiB0byBiZSBpbnZvbHZlZC4gSSBjYW4gY29uZmlkZW50bHkgYXNzZXNzIHRoaXMgYXMgYSBzdGFuZGFyZCBsb2NraW5nIGZpeCwgYW5kIHRoZXJlIGFyZSBubyBuZXcgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgaW50cm9kdWNlZC4KClRoZXJlZm9yZSwgSSYjMzk7bSBjb21mb3J0YWJsZSBzZXR0aW5nIGBOZWVkc0tNU0FOYCB0byBmYWxzZS4gVGhlIHBhdGNoIGlzIHNvdW5kIGFuZCBhZGRyZXNzZXMgYSByZWFsIGNvbmN1cnJlbmN5IGNvbmNlcm4sIHByZXZlbnRpbmcgcG90ZW50aWFsIGRhdGEgY29ycnVwdGlvbiBpbiB0aGUgS1ZNIExvb25nQXJjaCBpbXBsZW1lbnRhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTE6MDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIHNwaW5sb2NrIChgcHZfc2V0dGluZ19sb2NrYCkgdG8gcHJvdGVjdCB0aGUgYHB2X2ZlYXR1cmVzYCBmaWVsZCBpbiBgc3RydWN0IGt2bV9hcmNoYCBmcm9tIGNvbmN1cnJlbnQgbW9kaWZpY2F0aW9ucyBkdXJpbmcgdkNQVSBjb25maWd1cmF0aW9uLiBUaGlzIGlzIGEgY29uY3VycmVuY3kvbG9ja2luZyBmaXggYWltZWQgYXQgcHJldmVudGluZyBkYXRhIHJhY2VzIG9yIGluY29uc2lzdGVudCBzdGF0ZXMgYWNyb3NzIHZDUFVzLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlLCBvciBjaGFuZ2VzIHRvIGJvdW5kcyBjaGVja2luZyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gQ29uY3VycmVuY3kgaXNzdWVzIGFuZCBkYXRhIHJhY2VzIGFyZSBiZXN0IGRldGVjdGVkIGJ5IHRvb2xzIGxpa2UgS0NTQU4gb3IgTE9DS0RFUCwgd2hpbGUgS0FTQU4gaGFuZGxlcyBtZW1vcnkgY29ycnVwdGlvbi4gS01TQU4gaXMgc3BlY2lmaWNhbGx5IGZvciBkZXRlY3RpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UsIHdoaWNoIGlzIG5vdCByZWxldmFudCB0byB0aGlzIHBhdGNoLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIHNwaW5sb2NrIChgcHZfc2V0dGluZ19sb2NrYCkgdG8gcHJvdGVjdCB0aGUgYHB2X2ZlYXR1cmVzYCBmaWVsZCBpbiBgc3RydWN0IGt2bV9hcmNoYCBmcm9tIGNvbmN1cnJlbnQgbW9kaWZpY2F0aW9ucyBkdXJpbmcgdkNQVSBjb25maWd1cmF0aW9uLiBUaGlzIGlzIGEgY29uY3VycmVuY3kvbG9ja2luZyBmaXggYWltZWQgYXQgcHJldmVudGluZyBkYXRhIHJhY2VzIG9yIGluY29uc2lzdGVudCBzdGF0ZXMgYWNyb3NzIHZDUFVzLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlLCBvciBjaGFuZ2VzIHRvIGJvdW5kcyBjaGVja2luZyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gQ29uY3VycmVuY3kgaXNzdWVzIGFuZCBkYXRhIHJhY2VzIGFyZSBiZXN0IGRldGVjdGVkIGJ5IHRvb2xzIGxpa2UgS0NTQU4gb3IgTE9DS0RFUCwgd2hpbGUgS0FTQU4gaGFuZGxlcyBtZW1vcnkgY29ycnVwdGlvbi4gS01TQU4gaXMgc3BlY2lmaWNhbGx5IGZvciBkZXRlY3RpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UsIHdoaWNoIGlzIG5vdCByZWxldmFudCB0byB0aGlzIHBhdGNoLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMTowNTozNS41ODA4OTcxMjZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDE2ODE5MDM2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJrdm1fYXJjaF92Y3B1X2lvY3RsXCIsXG4gICAgXCJrdm1fYXJjaF9pbml0X3ZtXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgc3BpbmxvY2sgKGBwdl9zZXR0aW5nX2xvY2tgKSB0byBwcm90ZWN0IHRoZSBgcHZfZmVhdHVyZXNgIGZpZWxkIGluIGBzdHJ1Y3Qga3ZtX2FyY2hgIGZyb20gY29uY3VycmVudCBtb2RpZmljYXRpb25zIGR1cmluZyB2Q1BVIGNvbmZpZ3VyYXRpb24uIFRoaXMgaXMgYSBjb25jdXJyZW5jeS9sb2NraW5nIGZpeCBhaW1lZCBhdCBwcmV2ZW50aW5nIGRhdGEgcmFjZXMgb3IgaW5jb25zaXN0ZW50IHN0YXRlcyBhY3Jvc3MgdkNQVXMuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UsIG9yIGNoYW5nZXMgdG8gYm91bmRzIGNoZWNraW5nIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBDb25jdXJyZW5jeSBpc3N1ZXMgYW5kIGRhdGEgcmFjZXMgYXJlIGJlc3QgZGV0ZWN0ZWQgYnkgdG9vbHMgbGlrZSBLQ1NBTiBvciBMT0NLREVQLCB3aGlsZSBLQVNBTiBoYW5kbGVzIG1lbW9yeSBjb3JydXB0aW9uLiBLTVNBTiBpcyBzcGVjaWZpY2FsbHkgZm9yIGRldGVjdGluZyB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSwgd2hpY2ggaXMgbm90IHJlbGV2YW50IHRvIHRoaXMgcGF0Y2guXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiBMb29uZ0FyY2ggS1ZNIENQVSBjb25maWd1cmF0aW9uIGJ5IGludHJvZHVjaW5nIGEgbmV3IHNwaW5sb2NrIGBwdl9zZXR0aW5nX2xvY2tgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIEtWTSBzdWJzeXN0ZW0gdGhhdCBpcyByZWFjaGFibGUgdmlhIFZDUFUgaW9jdGxzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMTowNTozNS41ODA5MDQ2MzZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyOTQwMzAwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDNjZTdmM2U3NjEzNjE1ZmE0ODAwMDhiNzMxODVhZTJmZTE4N2ExYmFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBBdWcgMTQgMTE6MDU6MzQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2hvc3QuaCBiL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmhcXG5pbmRleCAyM2NmYmVjZWJiZDc5Li4zNTM4YTE5OWFhYzYyIDEwMDY0NFxcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmhcXG4rKysgYi9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXFxuQEAgLTEyNSw2ICsxMjUsNyBAQCBzdHJ1Y3Qga3ZtX2FyY2gge1xcbiBcXHR1bnNpZ25lZCBpbnQgIHB0ZV9zaGlmdHNbTUFYX1BHVEFCTEVfTEVWRUxTXTtcXG4gXFx0dW5zaWduZWQgaW50ICByb290X2xldmVsO1xcbiBcXHRzcGlubG9ja190ICAgIHBoeWlkX21hcF9sb2NrO1xcbitcXHRzcGlubG9ja190ICAgIHB2X3NldHRpbmdfbG9jaztcXG4gXFx0c3RydWN0IGt2bV9waHlpZF9tYXAgICpwaHlpZF9tYXA7XFxuIFxcdC8qIEVuYWJsZWQgUFYgZmVhdHVyZXMgKi9cXG4gXFx0dW5zaWduZWQgbG9uZyBwdl9mZWF0dXJlcztcXG5kaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYyBiL2FyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmNcXG5pbmRleCAyMGMyMDdkODBlMzFhLi5lNDdmYTQ2M2E4YmVjIDEwMDY0NFxcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmNcXG4rKysgYi9hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jXFxuQEAgLTExNjUsMTAgKzExNjUsMTQgQEAgc3RhdGljIGludCBrdm1fbG9vbmdhcmNoX2NwdWNmZ19zZXRfYXR0cihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuIFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXG4gXFx0XFx0LyogQWxsIHZDUFVzIG5lZWQgc2V0IHRoZSBzYW1lIFBWIGZlYXR1cmVzICovXFxuK1xcdFxcdHNwaW5fbG9jayhcXHUwMDI2a3ZtLVxcdTAwM2VhcmNoLnB2X3NldHRpbmdfbG9jayk7XFxuIFxcdFxcdGlmICgoa3ZtLVxcdTAwM2VhcmNoLnB2X2ZlYXR1cmVzIFxcdTAwMjYgTE9PTkdBUkNIX1BWX0ZFQVRfVVBEQVRFRClcXG4tXFx0XFx0XFx0XFx0XFx1MDAyNlxcdTAwMjYgKChrdm0tXFx1MDAzZWFyY2gucHZfZmVhdHVyZXMgXFx1MDAyNiB2YWxpZCkgIT0gdmFsKSlcXG4rXFx0XFx0XFx0XFx0XFx1MDAyNlxcdTAwMjYgKChrdm0tXFx1MDAzZWFyY2gucHZfZmVhdHVyZXMgXFx1MDAyNiB2YWxpZCkgIT0gdmFsKSkge1xcbitcXHRcXHRcXHRzcGluX3VubG9jayhcXHUwMDI2a3ZtLVxcdTAwM2VhcmNoLnB2X3NldHRpbmdfbG9jayk7XFxuIFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHRcXHR9XFxuIFxcdFxcdGt2bS1cXHUwMDNlYXJjaC5wdl9mZWF0dXJlcyA9IHZhbCB8IExPT05HQVJDSF9QVl9GRUFUX1VQREFURUQ7XFxuK1xcdFxcdHNwaW5fdW5sb2NrKFxcdTAwMjZrdm0tXFx1MDAzZWFyY2gucHZfc2V0dGluZ19sb2NrKTtcXG4gXFx0XFx0cmV0dXJuIDA7XFxuIFxcdGRlZmF1bHQ6XFxuIFxcdFxcdHJldHVybiAtRU5YSU87XFxuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2t2bS92bS5jIGIvYXJjaC9sb29uZ2FyY2gva3ZtL3ZtLmNcXG5pbmRleCAxMzE3YzcxOGY4OTZhLi44NmJhN2Q1NGU4MWY4IDEwMDY0NFxcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL2t2bS92bS5jXFxuKysrIGIvYXJjaC9sb29uZ2FyY2gva3ZtL3ZtLmNcXG5AQCAtNzYsNiArNzYsNyBAQCBpbnQga3ZtX2FyY2hfaW5pdF92bShzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgdHlwZSlcXG4gXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIFxcdH1cXG4gXFx0c3Bpbl9sb2NrX2luaXQoXFx1MDAyNmt2bS1cXHUwMDNlYXJjaC5waHlpZF9tYXBfbG9jayk7XFxuK1xcdHNwaW5fbG9ja19pbml0KFxcdTAwMjZrdm0tXFx1MDAzZWFyY2gucHZfc2V0dGluZ19sb2NrKTtcXG4gXFxuIFxcdGt2bV9pbml0X3ZtY3Moa3ZtKTtcXG4gXFx0a3ZtX3ZtX2luaXRfZmVhdHVyZXMoa3ZtKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTE6MDU6MzYuMDExMjE3NDQzWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NDcxOTM1MjQ0MTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX2FyY2hfdmNwdV9pb2N0bFwiLFxuICAgIFwia3ZtX2FyY2hfaW5pdF92bVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gTG9vbmdBcmNoIEtWTSBDUFUgY29uZmlndXJhdGlvbiBieSBpbnRyb2R1Y2luZyBhIG5ldyBzcGlubG9jayBgcHZfc2V0dGluZ19sb2NrYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBLVk0gc3Vic3lzdGVtIHRoYXQgaXMgcmVhY2hhYmxlIHZpYSBWQ1BVIGlvY3Rscy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgM2NlN2YzZTc2MTM2MTVmYTQ4MDAwOGI3MzE4NWFlMmZlMTg3YTFiYVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDE0IDExOjA1OjM0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2hvc3QuaCBiL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmhcbmluZGV4IDIzY2ZiZWNlYmJkNzkuLjM1MzhhMTk5YWFjNjIgMTAwNjQ0XG4tLS0gYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXG4rKysgYi9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXG5AQCAtMTI1LDYgKzEyNSw3IEBAIHN0cnVjdCBrdm1fYXJjaCB7XG4gXHR1bnNpZ25lZCBpbnQgIHB0ZV9zaGlmdHNbTUFYX1BHVEFCTEVfTEVWRUxTXTtcbiBcdHVuc2lnbmVkIGludCAgcm9vdF9sZXZlbDtcbiBcdHNwaW5sb2NrX3QgICAgcGh5aWRfbWFwX2xvY2s7XG4rXHRzcGlubG9ja190ICAgIHB2X3NldHRpbmdfbG9jaztcbiBcdHN0cnVjdCBrdm1fcGh5aWRfbWFwICAqcGh5aWRfbWFwO1xuIFx0LyogRW5hYmxlZCBQViBmZWF0dXJlcyAqL1xuIFx0dW5zaWduZWQgbG9uZyBwdl9mZWF0dXJlcztcbmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jIGIvYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuY1xuaW5kZXggMjBjMjA3ZDgwZTMxYS4uZTQ3ZmE0NjNhOGJlYyAxMDA2NDRcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmNcbisrKyBiL2FyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmNcbkBAIC0xMTY1LDEwICsxMTY1LDE0IEBAIHN0YXRpYyBpbnQga3ZtX2xvb25nYXJjaF9jcHVjZmdfc2V0X2F0dHIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuIFx0XHRcdHJldHVybiAtRUlOVkFMO1xuIFxuIFx0XHQvKiBBbGwgdkNQVXMgbmVlZCBzZXQgdGhlIHNhbWUgUFYgZmVhdHVyZXMgKi9cbitcdFx0c3Bpbl9sb2NrKFx1MDAyNmt2bS1cdTAwM2VhcmNoLnB2X3NldHRpbmdfbG9jayk7XG4gXHRcdGlmICgoa3ZtLVx1MDAzZWFyY2gucHZfZmVhdHVyZXMgXHUwMDI2IExPT05HQVJDSF9QVl9GRUFUX1VQREFURUQpXG4tXHRcdFx0XHRcdTAwMjZcdTAwMjYgKChrdm0tXHUwMDNlYXJjaC5wdl9mZWF0dXJlcyBcdTAwMjYgdmFsaWQpICE9IHZhbCkpXG4rXHRcdFx0XHRcdTAwMjZcdTAwMjYgKChrdm0tXHUwMDNlYXJjaC5wdl9mZWF0dXJlcyBcdTAwMjYgdmFsaWQpICE9IHZhbCkpIHtcbitcdFx0XHRzcGluX3VubG9jayhcdTAwMjZrdm0tXHUwMDNlYXJjaC5wdl9zZXR0aW5nX2xvY2spO1xuIFx0XHRcdHJldHVybiAtRUlOVkFMO1xuK1x0XHR9XG4gXHRcdGt2bS1cdTAwM2VhcmNoLnB2X2ZlYXR1cmVzID0gdmFsIHwgTE9PTkdBUkNIX1BWX0ZFQVRfVVBEQVRFRDtcbitcdFx0c3Bpbl91bmxvY2soXHUwMDI2a3ZtLVx1MDAzZWFyY2gucHZfc2V0dGluZ19sb2NrKTtcbiBcdFx0cmV0dXJuIDA7XG4gXHRkZWZhdWx0OlxuIFx0XHRyZXR1cm4gLUVOWElPO1xuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2t2bS92bS5jIGIvYXJjaC9sb29uZ2FyY2gva3ZtL3ZtLmNcbmluZGV4IDEzMTdjNzE4Zjg5NmEuLjg2YmE3ZDU0ZTgxZjggMTAwNjQ0XG4tLS0gYS9hcmNoL2xvb25nYXJjaC9rdm0vdm0uY1xuKysrIGIvYXJjaC9sb29uZ2FyY2gva3ZtL3ZtLmNcbkBAIC03Niw2ICs3Niw3IEBAIGludCBrdm1fYXJjaF9pbml0X3ZtKHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgbG9uZyB0eXBlKVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcdH1cbiBcdHNwaW5fbG9ja19pbml0KFx1MDAyNmt2bS1cdTAwM2VhcmNoLnBoeWlkX21hcF9sb2NrKTtcbitcdHNwaW5fbG9ja19pbml0KFx1MDAyNmt2bS1cdTAwM2VhcmNoLnB2X3NldHRpbmdfbG9jayk7XG4gXG4gXHRrdm1faW5pdF92bWNzKGt2bSk7XG4gXHRrdm1fdm1faW5pdF9mZWF0dXJlcyhrdm0pO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTE6MDU6MzYuMDExMjE4OTQzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTU2NTEzODQ2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIHRoZSBMb29uZ0FyY2ggS1ZNIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCBhZmZlY3RpbmcgYGFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmhgLCBgYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuY2AsIGFuZCBgYXJjaC9sb29uZ2FyY2gva3ZtL3ZtLmNgLiBJdCdzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGEgc3BpbmxvY2sgKGBwdl9zZXR0aW5nX2xvY2tgKSBwcm90ZWN0aW5nIGBrdm0tXHUwMDNlYXJjaC5wdl9mZWF0dXJlc2AgaW4gYGt2bV9sb29uZ2FyY2hfY3B1Y2ZnX3NldF9hdHRyKClgLiBJdCdzIGZpeGluZyBhIHJhY2UgY29uZGl0aW9uIGluIHRoZSBMb29uZ0FyY2ggS1ZNIGltcGxlbWVudGF0aW9uLiBIbW0sIGlzIHRoaXMgc29tZXRoaW5nIHdlIHNob3VsZCBiZSBmdXp6aW5nP1xuXG5BYnNvbHV0ZWx5LiBJdCdzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgKmluIEtWTSogb24gKkxvb25nQXJjaCouIFRoYXQncyBhIHRhcmdldC1yaWNoIGVudmlyb25tZW50IGZvciBmdXp6aW5nLCBpZiB3ZSBjYW4gcmVhY2ggaXQuXG5cbldhaXQsIHRoZSBiaWdnZXIgcXVlc3Rpb24gaXMsIGNhbiB3ZSAqYWN0dWFsbHkqIGZ1enogTG9vbmdBcmNoIEtWTSB3aXRoIHNvbWV0aGluZyBsaWtlIHN5emthbGxlcj8gU3l6a2FsbGVyIGlzIHByZXR0eSB2ZXJzYXRpbGUsIHN1cHBvcnRzIHNldmVyYWwgYXJjaGl0ZWN0dXJlcywgYnV0IEkgdXN1YWxseSBzZWUgZnV6emluZyBvbiB4ODZfNjQsIEFSTTY0LCBSSVNDLVYsIGV0Yy5cblxuQnV0IHRoaXMgaXMgS1ZNLCBhIGNvcmUga2VybmVsIGZlYXR1cmUsIGFuZCB3ZSdyZSB0YWxraW5nIGFib3V0IGEgc3BlY2lmaWMgYXJjaGl0ZWN0dXJlLiBJdCdzIHdvcnRoIHB1cnN1aW5nLiBMZXQncyBzZWUgaWYgd2UgY2FuIHJlYWNoIGl0LiBNeSBmaXJzdCBjaGVjayBpcyBga3ZtX2xvb25nYXJjaF9jcHVjZmdfc2V0X2F0dHJgLiBPa2F5LCBJIHJlbWVtYmVyIGl0J3MgY2FsbGVkIHRocm91Z2ggS1ZNIGlvY3Rscy4gR29vZCwgdGhhdCdzIGEgZGVmaW5lZCBhdHRhY2sgc3VyZmFjZS5cblxuTm93LCBsZXQncyBjb25maXJtIHRoZSByZWxldmFudCBjb25maWcgaXMgZW5hYmxlZDogYENPTkZJR19LVk1gIG9uIExvb25nQXJjaC4gQmluZ28uXG5cbkxldCBtZSByZWZyZXNoIG15IG1lbW9yeSBvZiB3aGF0J3MgaGFwcGVuaW5nIGluIGBrdm1fbG9vbmdhcmNoX2NwdWNmZ19zZXRfYXR0cmAgZGlyZWN0bHksIHNvIEknbGwgcXVpY2tseSBsb29rIGF0IHRoZSBzb3VyY2UgaW4gYGFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTcxLCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzA1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTE6MDU6NDEuNTc2MzYwNjA4WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwODkxOTUyMDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX2xvb25nYXJjaF9jcHVjZmdfc2V0X2F0dHJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYz0xMTMyPXN0YXRpYyBpbnQga3ZtX2xvb25nYXJjaF92Y3B1X2dldF9hdHRyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTE1MC1cXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jOjExNTE6c3RhdGljIGludCBrdm1fbG9vbmdhcmNoX2NwdWNmZ19zZXRfYXR0cihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMTUyLVxcdFxcdFxcdFxcdFxcdCBzdHJ1Y3Qga3ZtX2RldmljZV9hdHRyICphdHRyKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYz0xMjE5PXN0YXRpYyBpbnQga3ZtX2xvb25nYXJjaF92Y3B1X3NldF9hdHRyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTIyNS1cXHRjYXNlIEtWTV9MT09OR0FSQ0hfVkNQVV9DUFVDRkc6XFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzoxMjI2OlxcdFxcdHJldCA9IGt2bV9sb29uZ2FyY2hfY3B1Y2ZnX3NldF9hdHRyKHZjcHUsIGF0dHIpO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTIyNy1cXHRcXHRicmVhaztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTE6MDU6NDMuNjY1NTYyMDM2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjg3MzEyMDcxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipUcmFjaW5nIHRoZSBga3ZtX2xvb25nYXJjaF92Y3B1X3NldF9hdHRyYCBGdW5jdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBrdm1fbG9vbmdhcmNoX3ZjcHVfc2V0X2F0dHJgIGFuZCBpbW1lZGlhdGVseSBJIHNlZSBpdCdzIGNhbGxpbmcgYGt2bV9sb29uZ2FyY2hfY3B1Y2ZnX3NldF9hdHRyYC4gVGhhdCdzIHRoZSBsaW5rIEkgbmVlZCB0byB1bmRlcnN0YW5kLiBNeSBuZXh0IHN0ZXAgaXMgY2xlYXI6IEkgbmVlZCB0byB0cmFjZSAqd2hlcmUqIGBrdm1fbG9vbmdhcmNoX3ZjcHVfc2V0X2F0dHJgIGl0c2VsZiBpcyBiZWluZyBjYWxsZWQuIFRoYXQnbGwgcHJvdmlkZSB0aGUgdXBzdHJlYW0gY29udGV4dCBhbmQgdGVsbCBtZSB3aGF0J3MgdHJpZ2dlcmluZyB0aGlzIHdob2xlIHByb2Nlc3MuIFdoZXJlIGRvZXMgdGhpcyBmdW5jdGlvbiBmaXQgaW50byB0aGUgbGFyZ2VyIEtWTSBvbiBMb29uZ0FyY2ggcGljdHVyZT8gTGV0J3MgZ2V0IHRvIHRoZSBjYWxsIHNpdGVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjIzLCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTE6MDU6NDYuNTM4Njg1MzMxWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MjUwNjUzMjMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX2xvb25nYXJjaF92Y3B1X3NldF9hdHRyXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM9MTE4Mj1zdGF0aWMgaW50IGt2bV9sb29uZ2FyY2hfcHZ0aW1lX3NldF9hdHRyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTIxOC1cXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jOjEyMTk6c3RhdGljIGludCBrdm1fbG9vbmdhcmNoX3ZjcHVfc2V0X2F0dHIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTIyMC1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IGt2bV9kZXZpY2VfYXR0ciAqYXR0cilcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM9MTIzOD1sb25nIGt2bV9hcmNoX3ZjcHVfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEyOTktXFx0XFx0XFx0YnJlYWs7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzoxMzAwOlxcdFxcdHIgPSBrdm1fbG9vbmdhcmNoX3ZjcHVfc2V0X2F0dHIodmNwdSwgXFx1MDAyNmF0dHIpO1xcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTMwMS1cXHRcXHRicmVhaztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTE6MDU6NDguNDYzNzU2NTc0WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzIwMTY2OTIwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIHRoZSBLVk0gTG9vbmdBcmNoIFZDUFUgQXR0cmlidXRlIFNldHRpbmcqKlxuXG5Pa2F5LCBzbyBJJ20gdHJhY2luZyB0aHJvdWdoIHRoaXMgY29kZSwgYW5kIGl0IGxvb2tzIGxpa2UgYGt2bV9hcmNoX3ZjcHVfaW9jdGxgIGlzIHRoZSBlbnRyeSBwb2ludCwgdWx0aW1hdGVseSBsZWFkaW5nIHRvIGBrdm1fbG9vbmdhcmNoX3ZjcHVfc2V0X2F0dHJgLiAgVGhhdCBtYWtlcyBzZW5zZTsgYGlvY3RsYCBpcyB0aGUgY2xhc3NpYyB3YXkgdG8gY29udHJvbCB0aGluZ3MuIEFuZCB0aGlzLCBpbiB0dXJuLCBjYWxscyBga3ZtX2xvb25nYXJjaF9jcHVjZmdfc2V0X2F0dHJgLiBZZXAsIHRoYXQgc2VxdWVuY2UgY29uZmlybXMgdGhpcyAqaXMqIGEgcGF0aCBhY2Nlc3NpYmxlIHRocm91Z2ggS1ZNIGlvY3Rscy4gSSdtIHNhdGlzZmllZCB0aGF0J3MgdGhlIGxpbmsuXG5cbk5vdywgdG8gdW5kZXJzdGFuZCB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCBhbnkgcmVsYXRlZCBkZXBlbmRlbmNpZXMsIEkgbmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZyBmaWxlLiBMZXQncyBzZWUgd2hhdCdzIGluIGBhcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZ2AuIEl04oCZbGwgYmUgaW50ZXJlc3RpbmcgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgY29tcGlsZS10aW1lIGZsYWdzIGdvdmVybmluZyB0aGlzIGZ1bmN0aW9uYWxpdHkuIFRoYXQgc2hvdWxkIGNsZWFyIHVwIHRoZSBidWlsZCBjb25kaXRpb25zIGZvciBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDE1NCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDExOjA1OjUxLjY2NTQyODUxOFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTEyMDk0NzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEtWTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxcbmFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnLTE5LVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnOjIwOmNvbmZpZyBLVk1cXG5hcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZy0yMS1cXHR0cmlzdGF0ZSBcXFwiS2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMTowNTo1MS44MTY2NDQ1MDRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNjQ2NjMzNjQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKktWTSBDb25maWd1cmF0aW9uIEFuYWx5c2lzKipcblxuT2theSwgc28gdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiBpcyBkZWZpbml0ZWx5IEtWTS4gQnV0IEkgbmVlZCB0byBiZSB0aG9yb3VnaC4gSXMgdGhlcmUgKmFueSogb3RoZXIgY29uZmlndXJhdGlvbiBwb3NzaWJseSBhY3RpdmU/IEkgbmVlZCB0byBydWxlIHRoYXQgb3V0LiBMZXQncyBkaWcgaW4gYW5kIGV4YW1pbmUgdGhlIGRlcGVuZGVuY2llczsgSSdsbCBzdGFydCBieSBjaGVja2luZyB0aGUgS2NvbmZpZyBmaWxlIGZvciB0aGUgTG9vbmdBcmNoIGFyY2hpdGVjdHVyZSwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUga3ZtIGRpcmVjdG9yeSBhdCBgYXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWdgLiBUaGlzIHNob3VsZCByZXZlYWwgYW55IGNvbmRpdGlvbmFsIGRlcGVuZGVuY2llcyBvciBvcHRpb25zIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQuIEl0J3MgdGltZSB0byB1bmRlcnN0YW5kIHRoZSBjb21wbGV0ZSBwaWN0dXJlIG9mIHRoaXMga3ZtIGNvbmZpZ3VyYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ1ODYsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMTowNTo1NC40NjMyODIyNjVaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODA3MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiYXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIEtWTSBjb25maWd1cmF0aW9uXFxuICAgNDpcXHQjXFxuICAgNTpcXHRcXG4gICA2OlxcdHNvdXJjZSBcXFwidmlydC9rdm0vS2NvbmZpZ1xcXCJcXG4gICA3OlxcdFxcbiAgIDg6XFx0bWVudWNvbmZpZyBWSVJUVUFMSVpBVElPTlxcbiAgIDk6XFx0XFx0Ym9vbCBcXFwiVmlydHVhbGl6YXRpb25cXFwiXFxuICAxMDpcXHRcXHRoZWxwXFxuICAxMTpcXHRcXHQgIFNheSBZIGhlcmUgdG8gZ2V0IHRvIHNlZSBvcHRpb25zIGZvciB1c2luZyB5b3VyIExpbnV4IGhvc3QgdG8gcnVuXFxuICAxMjpcXHRcXHQgIG90aGVyIG9wZXJhdGluZyBzeXN0ZW1zIGluc2lkZSB2aXJ0dWFsIG1hY2hpbmVzIChndWVzdHMpLlxcbiAgMTM6XFx0XFx0ICBUaGlzIG9wdGlvbiBhbG9uZSBkb2VzIG5vdCBhZGQgYW55IGtlcm5lbCBjb2RlLlxcbiAgMTQ6XFx0XFxuICAxNTpcXHRcXHQgIElmIHlvdSBzYXkgTiwgYWxsIG9wdGlvbnMgaW4gdGhpcyBzdWJtZW51IHdpbGwgYmUgc2tpcHBlZCBhbmRcXG4gIDE2OlxcdFxcdCAgZGlzYWJsZWQuXFxuICAxNzpcXHRcXG4gIDE4OlxcdGlmIFZJUlRVQUxJWkFUSU9OXFxuICAxOTpcXHRcXG4gIDIwOlxcdGNvbmZpZyBLVk1cXG4gIDIxOlxcdFxcdHRyaXN0YXRlIFxcXCJLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcXFwiXFxuICAyMjpcXHRcXHRkZXBlbmRzIG9uIEFTX0hBU19MVlpfRVhURU5TSU9OIFxcdTAwMjZcXHUwMDI2IDY0QklUXFxuICAyMzpcXHRcXHRzZWxlY3QgSEFWRV9LVk1fRElSVFlfUklOR19BQ1FfUkVMXFxuICAyNDpcXHRcXHRzZWxlY3QgSEFWRV9LVk1fSVJRX1JPVVRJTkdcXG4gIDI1OlxcdFxcdHNlbGVjdCBIQVZFX0tWTV9JUlFDSElQXFxuICAyNjpcXHRcXHRzZWxlY3QgSEFWRV9LVk1fTVNJXFxuICAyNzpcXHRcXHRzZWxlY3QgSEFWRV9LVk1fUkVBRE9OTFlfTUVNXFxuICAyODpcXHRcXHRzZWxlY3QgS1ZNX0NPTU1PTlxcbiAgMjk6XFx0XFx0c2VsZWN0IEtWTV9HRU5FUklDX0RJUlRZTE9HX1JFQURfUFJPVEVDVFxcbiAgMzA6XFx0XFx0c2VsZWN0IEtWTV9HRU5FUklDX0hBUkRXQVJFX0VOQUJMSU5HXFxuICAzMTpcXHRcXHRzZWxlY3QgS1ZNX01NSU9cXG4gIDMyOlxcdFxcdHNlbGVjdCBWSVJUX1hGRVJfVE9fR1VFU1RfV09SS1xcbiAgMzM6XFx0XFx0c2VsZWN0IFNDSEVEX0lORk9cXG4gIDM0OlxcdFxcdHNlbGVjdCBHVUVTVF9QRVJGX0VWRU5UUyBpZiBQRVJGX0VWRU5UU1xcbiAgMzU6XFx0XFx0aGVscFxcbiAgMzY6XFx0XFx0ICBTdXBwb3J0IGhvc3RpbmcgdmlydHVhbGl6ZWQgZ3Vlc3QgbWFjaGluZXMgdXNpbmdcXG4gIDM3OlxcdFxcdCAgaGFyZHdhcmUgdmlydHVhbGl6YXRpb24gZXh0ZW5zaW9ucy4gWW91IHdpbGwgbmVlZFxcbiAgMzg6XFx0XFx0ICBhIHByb2Nlc3NvciBlcXVpcHBlZCB3aXRoIHZpcnR1YWxpemF0aW9uIGV4dGVuc2lvbnMuXFxuICAzOTpcXHRcXG4gIDQwOlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gIDQxOlxcdFxcbiAgNDI6XFx0ZW5kaWYgIyBWSVJUVUFMSVpBVElPTlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMTowNTo1NC40NjMzNjQ5NzVaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDc3MDc1NTA5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIExvb25nQXJjaCBLVk0gUGF0Y2ggZm9yIFN5emthbGxlciBJbnRlZ3JhdGlvbioqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgY2xlYXJseSByZWxhdGVkIHRvIEtWTSBjb25maWd1cmF0aW9uLCBteSBmaXJzdCB0aG91Z2h0IGlzIHRvIGVuc3VyZSB0aGUgY29uZmlndXJhdGlvbnMgYXJlIGNvcnJlY3QuIFRoaXMgaXMgZm9yIHRoZSBMb29uZ0FyY2ggYXJjaGl0ZWN0dXJlLCBzbyBJIG5lZWQgdG8gYXNzZXNzIHdoZXRoZXIgU3l6a2FsbGVyIGlzIGNhcGFibGUgb2YgZnV6emluZyB0aGlzIGFyY2hpdGVjdHVyZSBlZmZlY3RpdmVseS4gSSBrbm93IFN5emthbGxlciBoYXMgc29tZSBMb29uZ0FyY2ggc3VwcG9ydCwgYnV0IGl0J3Mgb2Z0ZW4gbW9yZSBhYm91dCB0aGUgcHJvdmlkZWQgY29uZmlncyBhbmQgc3ltYm9sczsgdGhlIGZ1enppbmcgaW5mcmFzdHJ1Y3R1cmUgdGFrZXMgb3ZlciBmcm9tIHRoZXJlLCBhc3N1bWluZyBpdCBoYXMgdGhlIGJ1aWx0LWluIGFiaWxpdHkuIFRoZSBrZXkgY29uZmlndXJhdGlvbnMgSSBuZWVkIHRvIGZvY3VzIG9uIGFyZSB0aGUgS1ZNIHNldHRpbmdzLlxuXG5Ob3csIEknbSB0aGlua2luZyBhYm91dCB0aGUgc3BlY2lmaWMgZnVuY3Rpb25zIGltcGxpY2F0ZWQgYnkgdGhlIHBhdGNoOiBga3ZtX2xvb25nYXJjaF92Y3B1X3NldF9hdHRyYCBhbmQgYGt2bV9sb29uZ2FyY2hfY3B1Y2ZnX3NldF9hdHRyYC4gTXkgYXBwcm9hY2ggaXMgdG8gc2VlIHdoaWNoIGZ1bmN0aW9uIEkgY2FuIHVzZSBpbiB0aGUgZnV6emluZyBwcm9jZXNzLiBga3ZtX2xvb25nYXJjaF9jcHVjZmdfc2V0X2F0dHJgIGxvb2tzIHN0YXRpYywgd2hpY2ggbWVhbnMgSSBjYW4ndCBkaXJlY3RseSB1c2UgaXQuIFRoaXMgYnJpbmdzIG1lIHRvIGVpdGhlciBga3ZtX2FyY2hfdmNwdV9pb2N0bGAgb3IsIGlmIGBrdm1fbG9vbmdhcmNoX3ZjcHVfc2V0X2F0dHJgIHdhc24ndCBpbmxpbmVkLCBJIHdvdWxkIHRyeSBpdC4gSSBuZWVkIHRvIHF1aWNrbHkgY29uZmlybSB0aGF0IGBrdm1fbG9vbmdhcmNoX3ZjcHVfc2V0X2F0dHJgIGlzIGluZGVlZCBzdGF0aWMuIEFoLCB5ZXMsIGl0IGlzLlxuXG5UaGF0IGxlYXZlcyBga3ZtX2FyY2hfdmNwdV9pb2N0bGAgYXMgdGhlIHByaW1hcnkgY2FuZGlkYXRlLiBMZXQgbWUgdmVyaWZ5IGl0J3Mgbm90IHN0YXRpYy4gR29vZCwgaXQgaXMgbm9uLXN0YXRpYy4gVGhpcyBsb29rcyBsaWtlIHRoZSBtYWluIGVudHJ5IHBvaW50IHRvIGZvY3VzIG9uIGZvciB0aGlzIGZ1enppbmcgZWZmb3J0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MzI1LCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTE6MDU6NTkuMjM0MTIzNTE0WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzQzNDY4ODA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bV9hcmNoX3ZjcHVfaW9jdGxcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA2NDMgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmFyY2gvYXJtNjQva3ZtL2FybS5jPTc4MT1zdGF0aWMgYm9vbCBrdm1fYXJtX3ZjcHVfc3VzcGVuZGVkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL2FybS5jLTc4NS1cXG5hcmNoL2FybTY0L2t2bS9hcm0uYzo3ODY6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X21wc3RhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvYXJtNjQva3ZtL2FybS5jLTc4Ny1cXHRcXHRcXHRcXHQgICAgc3RydWN0IGt2bV9tcF9zdGF0ZSAqbXBfc3RhdGUpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS9hcm0uYy03OTMtXFxuYXJjaC9hcm02NC9rdm0vYXJtLmM6Nzk0OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9tcHN0YXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL2FybTY0L2t2bS9hcm0uYy03OTUtXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBrdm1fbXBfc3RhdGUgKm1wX3N0YXRlKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vYXJtLmM9MTA2Nj1zdGF0aWMgaW50IGt2bV92Y3B1X3N1c3BlbmQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vYXJtLmMtMTA5Mi1cXHQgKiBPdGhlcndpc2UsIHdlIHdlcmUgdW5ibG9ja2VkIHRvIHByb2Nlc3MgYSBkaWZmZXJlbnQgZXZlbnQsIHN1Y2ggYXMgYVxcbmFyY2gvYXJtNjQva3ZtL2FybS5jOjEwOTM6XFx0ICogcGVuZGluZyBzaWduYWwuIFJldHVybiAxIGFuZCBhbGxvdyBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bigpIHRvXFxuYXJjaC9hcm02NC9rdm0vYXJtLmMtMTA5NC1cXHQgKiBwcm9jZXNzIHRoZSBldmVudC5cXG4tLVxcbmFyY2gvYXJtNjQva3ZtL2FybS5jPTEyMzA9c3RhdGljIGludCBub2luc3RyIGt2bV9hcm1fdmNwdV9lbnRlcl9leGl0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL2FybS5jLTEyNDEtLyoqXFxuYXJjaC9hcm02NC9rdm0vYXJtLmM6MTI0MjogKiBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1biAtIHRoZSBtYWluIFZDUFUgcnVuIGZ1bmN0aW9uIHRvIGV4ZWN1dGUgZ3Vlc3QgY29kZVxcbmFyY2gvYXJtNjQva3ZtL2FybS5jLTEyNDMtICogQHZjcHU6XFx0VGhlIFZDUFUgcG9pbnRlclxcbi0tXFxuYXJjaC9hcm02NC9rdm0vYXJtLmMtMTI1MC0gKi9cXG5hcmNoL2FybTY0L2t2bS9hcm0uYzoxMjUxOmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuYXJjaC9hcm02NC9rdm0vYXJtLmMtMTI1Mi17XFxuLS1cXG5hcmNoL2FybTY0L2t2bS9hcm0uYz0xNjgwPXN0YXRpYyBpbnQga3ZtX3ZjcHVfc2V0X3RhcmdldChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS9hcm0uYy0xNzAyLVxcbmFyY2gvYXJtNjQva3ZtL2FybS5jOjE3MDM6c3RhdGljIGludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3ZjcHVfaW5pdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC9hcm02NC9rdm0vYXJtLmMtMTcwNC1cXHRcXHRcXHRcXHRcXHQgc3RydWN0IGt2bV92Y3B1X2luaXQgKmluaXQpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS9hcm0uYz0xODA2PXN0YXRpYyBpbnQga3ZtX2FybV92Y3B1X3NldF9ldmVudHMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vYXJtLmMtMTgyMy1cXG5hcmNoL2FybTY0L2t2bS9hcm0uYzoxODI0Omxvbmcga3ZtX2FyY2hfdmNwdV9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCxcXG5hcmNoL2FybTY0L2t2bS9hcm0uYy0xODI1LVxcdFxcdFxcdCB1bnNpZ25lZCBpbnQgaW9jdGwsIHVuc2lnbmVkIGxvbmcgYXJnKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vYXJtLmMtMTgzOS1cXG5hcmNoL2FybTY0L2t2bS9hcm0uYzoxODQwOlxcdFxcdHIgPSBrdm1fYXJjaF92Y3B1X2lvY3RsX3ZjcHVfaW5pdCh2Y3B1LCBcXHUwMDI2aW5pdCk7XFxuYXJjaC9hcm02NC9rdm0vYXJtLmMtMTg0MS1cXHRcXHRicmVhaztcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL2d1ZXN0LmM9NTExPXN0YXRpYyBpbnQgc2V0X3N2ZV9yZWcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBjb25zdCBzdHJ1Y3Qga3ZtX29uZV9yZWcgKnJlZylcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL2d1ZXN0LmMtNTM1LVxcbmFyY2gvYXJtNjQva3ZtL2d1ZXN0LmM6NTM2OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9yZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9yZWdzICpyZWdzKVxcbmFyY2gvYXJtNjQva3ZtL2d1ZXN0LmMtNTM3LXtcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL2d1ZXN0LmMtNTQwLVxcbmFyY2gvYXJtNjQva3ZtL2d1ZXN0LmM6NTQxOmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9yZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9yZWdzICpyZWdzKVxcbmFyY2gvYXJtNjQva3ZtL2d1ZXN0LmMtNTQyLXtcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL2d1ZXN0LmM9NzE5PWludCBrdm1fYXJtX3NldF9yZWcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBjb25zdCBzdHJ1Y3Qga3ZtX29uZV9yZWcgKnJlZylcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL2d1ZXN0LmMtNzM1LVxcbmFyY2gvYXJtNjQva3ZtL2d1ZXN0LmM6NzM2OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC9hcm02NC9rdm0vZ3Vlc3QuYy03MzctXFx0XFx0XFx0XFx0ICBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncylcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL2d1ZXN0LmMtNzQxLVxcbmFyY2gvYXJtNjQva3ZtL2d1ZXN0LmM6NzQyOmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC9hcm02NC9rdm0vZ3Vlc3QuYy03NDMtXFx0XFx0XFx0XFx0ICBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncylcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL2d1ZXN0LmM9ODI1PXUzMiBfX2F0dHJpYnV0ZV9jb25zdF9fIGt2bV90YXJnZXRfY3B1KHZvaWQpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS9ndWVzdC5jLTg1NC1cXG5hcmNoL2FybTY0L2t2bS9ndWVzdC5jOjg1NTppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfZnB1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9mcHUgKmZwdSlcXG5hcmNoL2FybTY0L2t2bS9ndWVzdC5jLTg1Ni17XFxuLS1cXG5hcmNoL2FybTY0L2t2bS9ndWVzdC5jLTg1OS1cXG5hcmNoL2FybTY0L2t2bS9ndWVzdC5jOjg2MDppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfZnB1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9mcHUgKmZwdSlcXG5hcmNoL2FybTY0L2t2bS9ndWVzdC5jLTg2MS17XFxuLS1cXG5hcmNoL2FybTY0L2t2bS9ndWVzdC5jLTg2NC1cXG5hcmNoL2FybTY0L2t2bS9ndWVzdC5jOjg2NTppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF90cmFuc2xhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvYXJtNjQva3ZtL2d1ZXN0LmMtODY2LVxcdFxcdFxcdFxcdCAgc3RydWN0IGt2bV90cmFuc2xhdGlvbiAqdHIpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS9ndWVzdC5jLTg3MS0vKipcXG5hcmNoL2FybTY0L2t2bS9ndWVzdC5jOjg3MjogKiBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9ndWVzdF9kZWJ1ZyAtIHNldCB1cCBndWVzdCBkZWJ1Z2dpbmdcXG5hcmNoL2FybTY0L2t2bS9ndWVzdC5jLTg3My0gKiBAdmNwdTogdGhlIHZDUFUgcG9pbnRlclxcbi0tXFxuYXJjaC9hcm02NC9rdm0vZ3Vlc3QuYy04ODAtICovXFxuYXJjaC9hcm02NC9rdm0vZ3Vlc3QuYzo4ODE6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X2d1ZXN0X2RlYnVnKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL2FybTY0L2t2bS9ndWVzdC5jLTg4Mi1cXHRcXHRcXHRcXHRcXHRzdHJ1Y3Qga3ZtX2d1ZXN0X2RlYnVnICpkYmcpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS9oeXAvbnZoZS9zd2l0Y2guYz0yMjY9c3RhdGljIGlubGluZSBib29sIGZpeHVwX2d1ZXN0X2V4aXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgKmV4aXRfY29kZSlcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL2h5cC9udmhlL3N3aXRjaC5jLTIzOC1cXHQgKiBpdC4gIFRoZSBjaGVjayBiZWxvdyBpcyBiYXNlZCBvbiB0aGUgb25lIGluXFxuYXJjaC9hcm02NC9rdm0vaHlwL252aGUvc3dpdGNoLmM6MjM5OlxcdCAqIGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuKCkuXFxuYXJjaC9hcm02NC9rdm0vaHlwL252aGUvc3dpdGNoLmMtMjQwLVxcdCAqL1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYz00MjA9dm1fZmF1bHRfdCBrdm1fYXJjaF92Y3B1X2ZhdWx0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IHZtX2ZhdWx0ICp2bWYpXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTQyNC1cXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jOjQyNTppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF90cmFuc2xhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtNDI2LVxcdFxcdFxcdFxcdCAgc3RydWN0IGt2bV90cmFuc2xhdGlvbiAqdHIpXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jPTQ0ND1pbnQga3ZtX2FyY2hfdmNwdV9kdW1wX3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy00NjYtXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzo0Njc6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X21wc3RhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtNDY4LVxcdFxcdFxcdFxcdHN0cnVjdCBrdm1fbXBfc3RhdGUgKm1wX3N0YXRlKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy00NzQtXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzo0NzU6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X21wc3RhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtNDc2LVxcdFxcdFxcdFxcdHN0cnVjdCBrdm1fbXBfc3RhdGUgKm1wX3N0YXRlKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy00OTAtXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzo0OTE6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X2d1ZXN0X2RlYnVnKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTQ5Mi1cXHRcXHRcXHRcXHRcXHRzdHJ1Y3Qga3ZtX2d1ZXN0X2RlYnVnICpkYmcpXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jPTk4ND1zdGF0aWMgaW50IGt2bV9zZXRfcmVnKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgY29uc3Qgc3RydWN0IGt2bV9vbmVfcmVnICpyZWcpXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEwMDEtXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzoxMDAyOmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTAwMy17XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEwMDYtXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzoxMDA3OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTAwOC17XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEwMTEtXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzoxMDEyOmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9yZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9yZWdzICpyZWdzKVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTAxMy17XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEwMjMtXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzoxMDI0OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9yZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9yZWdzICpyZWdzKVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTAyNS17XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jPTEyMTk9c3RhdGljIGludCBrdm1fbG9vbmdhcmNoX3ZjcHVfc2V0X2F0dHIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMjM3LVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6MTIzODpsb25nIGt2bV9hcmNoX3ZjcHVfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMjM5LVxcdFxcdFxcdCB1bnNpZ25lZCBpbnQgaW9jdGwsIHVuc2lnbmVkIGxvbmcgYXJnKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMzEwLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6MTMxMTppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfZnB1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9mcHUgKmZwdSlcXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEzMTIte1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMzIyLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6MTMyMzppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfZnB1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9mcHUgKmZwdSlcXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEzMjQte1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYz0xODI5PXZvaWQga3ZtX2FyY2hfdmNwdV9wdXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xODUyLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6MTg1MzppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTg1NC17XFxuLS1cXG5hcmNoL21pcHMva3ZtL21pcHMuYz0zODY9dm9pZCBrdm1fYXJjaF92Y3B1X2Rlc3Ryb3koc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9taXBzL2t2bS9taXBzLmMtMzk3LVxcbmFyY2gvbWlwcy9rdm0vbWlwcy5jOjM5ODppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfZ3Vlc3RfZGVidWcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvbWlwcy9rdm0vbWlwcy5jLTM5OS1cXHRcXHRcXHRcXHRcXHRzdHJ1Y3Qga3ZtX2d1ZXN0X2RlYnVnICpkYmcpXFxuLS1cXG5hcmNoL21pcHMva3ZtL21pcHMuYz00MTE9c3RhdGljIGludCBub2luc3RyIGt2bV9taXBzX3ZjcHVfZW50ZXJfZXhpdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL21pcHMva3ZtL21pcHMuYy00MjEtXFxuYXJjaC9taXBzL2t2bS9taXBzLmM6NDIyOmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuYXJjaC9taXBzL2t2bS9taXBzLmMtNDIzLXtcXG4tLVxcbmFyY2gvbWlwcy9rdm0vbWlwcy5jPTQ3OT1pbnQga3ZtX3ZjcHVfaW9jdGxfaW50ZXJydXB0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG4tLVxcbmFyY2gvbWlwcy9rdm0vbWlwcy5jLTUxNC1cXG5hcmNoL21pcHMva3ZtL21pcHMuYzo1MTU6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X21wc3RhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvbWlwcy9rdm0vbWlwcy5jLTUxNi1cXHRcXHRcXHRcXHQgICAgc3RydWN0IGt2bV9tcF9zdGF0ZSAqbXBfc3RhdGUpXFxuLS1cXG5hcmNoL21pcHMva3ZtL21pcHMuYy01MjAtXFxuYXJjaC9taXBzL2t2bS9taXBzLmM6NTIxOmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9tcHN0YXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL21pcHMva3ZtL21pcHMuYy01MjItXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBrdm1fbXBfc3RhdGUgKm1wX3N0YXRlKVxcbi0tXFxuYXJjaC9taXBzL2t2bS9taXBzLmM9ODk4PWxvbmcga3ZtX2FyY2hfdmNwdV91bmxvY2tlZF9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCwgdW5zaWduZWQgaW50IGlvY3RsLFxcbi0tXFxuYXJjaC9taXBzL2t2bS9taXBzLmMtOTE3LVxcbmFyY2gvbWlwcy9rdm0vbWlwcy5jOjkxODpsb25nIGt2bV9hcmNoX3ZjcHVfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsIHVuc2lnbmVkIGludCBpb2N0bCxcXG5hcmNoL21pcHMva3ZtL21pcHMuYy05MTktXFx0XFx0XFx0IHVuc2lnbmVkIGxvbmcgYXJnKVxcbi0tXFxuYXJjaC9taXBzL2t2bS9taXBzLmM9OTg3PWludCBrdm1fYXJjaF92bV9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCwgdW5zaWduZWQgaW50IGlvY3RsLCB1bnNpZ25lZCBsb25nIGFyZylcXG4tLVxcbmFyY2gvbWlwcy9rdm0vbWlwcy5jLTk5OC1cXG5hcmNoL21pcHMva3ZtL21pcHMuYzo5OTk6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL21pcHMva3ZtL21pcHMuYy0xMDAwLVxcdFxcdFxcdFxcdCAgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXFxuLS1cXG5hcmNoL21pcHMva3ZtL21pcHMuYy0xMDA0LVxcbmFyY2gvbWlwcy9rdm0vbWlwcy5jOjEwMDU6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL21pcHMva3ZtL21pcHMuYy0xMDA2LVxcdFxcdFxcdFxcdCAgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXFxuLS1cXG5hcmNoL21pcHMva3ZtL21pcHMuYz0xMDExPXZvaWQga3ZtX2FyY2hfdmNwdV9wb3N0Y3JlYXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gvbWlwcy9rdm0vbWlwcy5jLTEwMTQtXFxuYXJjaC9taXBzL2t2bS9taXBzLmM6MTAxNTppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfZnB1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9mcHUgKmZwdSlcXG5hcmNoL21pcHMva3ZtL21pcHMuYy0xMDE2LXtcXG4tLVxcbmFyY2gvbWlwcy9rdm0vbWlwcy5jLTEwMTktXFxuYXJjaC9taXBzL2t2bS9taXBzLmM6MTAyMDppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfZnB1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9mcHUgKmZwdSlcXG5hcmNoL21pcHMva3ZtL21pcHMuYy0xMDIxLXtcXG4tLVxcbmFyY2gvbWlwcy9rdm0vbWlwcy5jPTEwODI9aW50IGt2bV9hcmNoX3ZjcHVfZHVtcF9yZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gvbWlwcy9rdm0vbWlwcy5jLTExMTItXFxuYXJjaC9taXBzL2t2bS9taXBzLmM6MTExMzppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcmVncyAqcmVncylcXG5hcmNoL21pcHMva3ZtL21pcHMuYy0xMTE0LXtcXG4tLVxcbmFyY2gvbWlwcy9rdm0vbWlwcy5jLTExMjktXFxuYXJjaC9taXBzL2t2bS9taXBzLmM6MTEzMDppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcmVncyAqcmVncylcXG5hcmNoL21pcHMva3ZtL21pcHMuYy0xMTMxLXtcXG4tLVxcbmFyY2gvbWlwcy9rdm0vbWlwcy5jLTExNDYtXFxuYXJjaC9taXBzL2t2bS9taXBzLmM6MTE0NzppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF90cmFuc2xhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvbWlwcy9rdm0vbWlwcy5jLTExNDgtXFx0XFx0XFx0XFx0ICBzdHJ1Y3Qga3ZtX3RyYW5zbGF0aW9uICp0cilcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzLmM9NTI1PXZvaWQga3ZtcHBjX3N1YmFyY2hfdmNwdV91bmluaXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYy01MjgtXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYzo1Mjk6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szcy5jLTUzMC1cXHRcXHRcXHRcXHQgIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYy01NDAtXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYzo1NDE6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3NyZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szcy5jLTU0Mi1cXHRcXHRcXHRcXHQgIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYy01NTItXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYzo1NTM6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3JlZ3MgKnJlZ3MpXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYy01NTQte1xcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYy01ODAtXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYzo1ODE6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3JlZ3MgKnJlZ3MpXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYy01ODIte1xcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYy02MDctXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYzo2MDg6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X2ZwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fZnB1ICpmcHUpXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYy02MDkte1xcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYy02MTItXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYzo2MTM6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X2ZwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fZnB1ICpmcHUpXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYy02MTQte1xcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYz04MDc9aW50IGt2bXBwY192Y3B1X3J1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szcy5jLTgxMS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szcy5jOjgxMjppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF90cmFuc2xhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzLmMtODEzLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qga3ZtX3RyYW5zbGF0aW9uICp0cilcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzLmMtODE3LVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzLmM6ODE4OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9ndWVzdF9kZWJ1ZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYy04MTktXFx0XFx0XFx0XFx0XFx0c3RydWN0IGt2bV9ndWVzdF9kZWJ1ZyAqZGJnKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYz0xOTY4PXN0YXRpYyBpbnQga3ZtcHBjX2hhbmRsZV9uZXN0ZWRfZXhpdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTIwOTktXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyMTAwOnN0YXRpYyBpbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfc3JlZ3NfaHYoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjEwMS1cXHRcXHRcXHRcXHRcXHQgICAgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jLTIxMTQtXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzoyMTE1OnN0YXRpYyBpbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3NfaHYoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtMjExNi1cXHRcXHRcXHRcXHRcXHQgICAgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jPTY1MTM9c3RhdGljIHN0cnVjdCBrdm1wcGNfb3BzIGt2bV9vcHNfaHYgPSB7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYzo2NTE0OlxcdC5nZXRfc3JlZ3MgPSBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9zcmVnc19odixcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odi5jOjY1MTU6XFx0LnNldF9zcmVncyA9IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3NyZWdzX2h2LFxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMtNjUxNi1cXHQuZ2V0X29uZV9yZWcgPSBrdm1wcGNfZ2V0X29uZV9yZWdfaHYsXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19wci5jPTExMzU9aW50IGt2bXBwY19oYW5kbGVfZXhpdF9wcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGludCBleGl0X25yKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfcHIuYy0xNDU0LVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX3ByLmM6MTQ1NTpzdGF0aWMgaW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X3NyZWdzX3ByKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19wci5jLTE0NTYtXFx0XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfcHIuYy0xNDgxLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX3ByLmM6MTQ4MjpzdGF0aWMgaW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X3NyZWdzX3ByKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19wci5jLTE0ODMtXFx0XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfcHIuYz0yMDQ1PXN0YXRpYyBzdHJ1Y3Qga3ZtcHBjX29wcyBrdm1fb3BzX3ByID0ge1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX3ByLmM6MjA0NjpcXHQuZ2V0X3NyZWdzID0ga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfc3JlZ3NfcHIsXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfcHIuYzoyMDQ3OlxcdC5zZXRfc3JlZ3MgPSBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9zcmVnc19wcixcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19wci5jLTIwNDgtXFx0LmdldF9vbmVfcmVnID0ga3ZtcHBjX2dldF9vbmVfcmVnX3ByLFxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rZS5jPTE0NDI9dm9pZCBrdm1wcGNfc3ViYXJjaF92Y3B1X3VuaW5pdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmMtMTQ0Ni1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmM6MTQ0NzppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcmVncyAqcmVncylcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmMtMTQ0OC17XFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmMtMTQ3Ny1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmM6MTQ3ODppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcmVncyAqcmVncylcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmMtMTQ3OS17XFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmM9MTYwNT1pbnQga3ZtcHBjX3NldF9zcmVnc19pdm9yKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9zcmVncyAqc3JlZ3MpXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmMtMTYyOS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmM6MTYzMDppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfc3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvcG93ZXJwYy9rdm0vYm9va2UuYy0xNjMxLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncylcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9va2UuYy0xNjQ2LVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9va2UuYzoxNjQ3OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rZS5jLTE2NDgtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rZS5jPTE3Mjc9aW50IGt2bXBwY19zZXRfb25lX3JlZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBpZCxcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9va2UuYy0xNzk1LVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9va2UuYzoxNzk2OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9mcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX2ZwdSAqZnB1KVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9va2UuYy0xNzk3LXtcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9va2UuYy0xODAwLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9va2UuYzoxODAxOmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9mcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX2ZwdSAqZnB1KVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9va2UuYy0xODAyLXtcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9va2UuYy0xODA1LVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9va2UuYzoxODA2OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3RyYW5zbGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rZS5jLTE4MDctICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBrdm1fdHJhbnNsYXRpb24gKnRyKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rZS5jPTE5ODA9aW50IGt2bXBwY194bGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVsb25nIGVhZGRyLCBlbnVtIHhsYXRlX2luc3RkYXRhIHhsaWQsXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmMtMjAzMC1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2tlLmM6MjAzMTppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfZ3Vlc3RfZGVidWcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvcG93ZXJwYy9rdm0vYm9va2UuYy0yMDMyLVxcdFxcdFxcdFxcdFxcdCBzdHJ1Y3Qga3ZtX2d1ZXN0X2RlYnVnICpkYmcpXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL3Bvd2VycGMuYz0xNzMyPWludCBrdm1fdmNwdV9pb2N0bF9zZXRfb25lX3JlZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fb25lX3JlZyAqcmVnKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9wb3dlcnBjLmMtMTc4MC1cXG5hcmNoL3Bvd2VycGMva3ZtL3Bvd2VycGMuYzoxNzgxOmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuYXJjaC9wb3dlcnBjL2t2bS9wb3dlcnBjLmMtMTc4Mi17XFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL3Bvd2VycGMuYz0yMDAwPWJvb2wga3ZtX2FyY2hfaW50Y19pbml0aWFsaXplZChzdHJ1Y3Qga3ZtICprdm0pXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL3Bvd2VycGMuYy0yMDEyLVxcbmFyY2gvcG93ZXJwYy9rdm0vcG93ZXJwYy5jOjIwMTM6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X21wc3RhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvcG93ZXJwYy9rdm0vcG93ZXJwYy5jLTIwMTQtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGt2bV9tcF9zdGF0ZSAqbXBfc3RhdGUpXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL3Bvd2VycGMuYy0yMDE4LVxcbmFyY2gvcG93ZXJwYy9rdm0vcG93ZXJwYy5jOjIwMTk6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X21wc3RhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvcG93ZXJwYy9rdm0vcG93ZXJwYy5jLTIwMjAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGt2bV9tcF9zdGF0ZSAqbXBfc3RhdGUpXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL3Bvd2VycGMuYz0yMDI1PWxvbmcga3ZtX2FyY2hfdmNwdV91bmxvY2tlZF9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCwgdW5zaWduZWQgaW50IGlvY3RsLFxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9wb3dlcnBjLmMtMjAzOS1cXG5hcmNoL3Bvd2VycGMva3ZtL3Bvd2VycGMuYzoyMDQwOmxvbmcga3ZtX2FyY2hfdmNwdV9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCxcXG5hcmNoL3Bvd2VycGMva3ZtL3Bvd2VycGMuYy0yMDQxLSAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgaW9jdGwsIHVuc2lnbmVkIGxvbmcgYXJnKVxcbi0tXFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jPTI0NT1sb25nIGt2bV9hcmNoX3ZjcHVfdW5sb2NrZWRfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsIHVuc2lnbmVkIGludCBpb2N0bCxcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy0yNjUtXFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jOjI2Njpsb25nIGt2bV9hcmNoX3ZjcHVfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsXFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jLTI2Ny1cXHRcXHRcXHQgdW5zaWduZWQgaW50IGlvY3RsLCB1bnNpZ25lZCBsb25nIGFyZylcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy0zMTItXFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jOjMxMzppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfc3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy0zMTQtXFx0XFx0XFx0XFx0ICBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncylcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy0zMTgtXFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jOjMxOTppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy0zMjAtXFx0XFx0XFx0XFx0ICBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncylcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy0zMjQtXFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jOjMyNTppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfZnB1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9mcHUgKmZwdSlcXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmMtMzI2LXtcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy0zMjktXFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jOjMzMDppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfZnB1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9mcHUgKmZwdSlcXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmMtMzMxLXtcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy0zMzQtXFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jOjMzNTppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF90cmFuc2xhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy0zMzYtXFx0XFx0XFx0XFx0ICBzdHJ1Y3Qga3ZtX3RyYW5zbGF0aW9uICp0cilcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy0zNDAtXFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jOjM0MTppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcmVncyAqcmVncylcXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmMtMzQyLXtcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy0zNDUtXFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jOjM0NjppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcmVncyAqcmVncylcXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmMtMzQ3LXtcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYz00OTE9Ym9vbCBrdm1fcmlzY3ZfdmNwdV9zdG9wcGVkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy00OTUtXFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jOjQ5NjppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfbXBzdGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jLTQ5Ny1cXHRcXHRcXHRcXHQgICAgc3RydWN0IGt2bV9tcF9zdGF0ZSAqbXBfc3RhdGUpXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmMtNTAzLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYzo1MDQ6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X21wc3RhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHUuYy01MDUtXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBrdm1fbXBfc3RhdGUgKm1wX3N0YXRlKVxcbi0tXFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jLTUzMi1cXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmM6NTMzOmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9ndWVzdF9kZWJ1ZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jLTUzNC1cXHRcXHRcXHRcXHRcXHRzdHJ1Y3Qga3ZtX2d1ZXN0X2RlYnVnICpkYmcpXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmM9NzUwPXN0YXRpYyB2b2lkIG5vaW5zdHIga3ZtX3Jpc2N2X3ZjcHVfZW50ZXJfZXhpdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmMtNzU5LVxcdCAqIEhUSU5TVCkgaGVyZSBiZWNhdXNlIHdlIGRvIGxvY2FsX2lycV9lbmFibGUoKSBhZnRlciB0aGlzXFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jOjc2MDpcXHQgKiBmdW5jdGlvbiBpbiBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bigpIHdoaWNoIGNhbiByZXN1bHQgaW5cXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmMtNzYxLVxcdCAqIGFuIGludGVycnVwdCBpbW1lZGlhdGVseSBhZnRlciBsb2NhbF9pcnFfZW5hYmxlKCkgYW5kIGNhblxcbi0tXFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jLTgyOS1cXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmM6ODMwOmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jLTgzMS17XFxuLS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM9Mzk0NT1pbnQga3ZtX2FyY2hfdmNwdV9zaG91bGRfa2ljayhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMzk1MS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6Mzk1MjpzdGF0aWMgaW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X29uZV9yZWcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0zOTUzLVxcdFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBrdm1fb25lX3JlZyAqcmVnKVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTQwMDAtXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjQwMDE6c3RhdGljIGludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9vbmVfcmVnKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNDAwMi1cXHRcXHRcXHRcXHRcXHQgICBzdHJ1Y3Qga3ZtX29uZV9yZWcgKnJlZylcXG4tLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy00MDUzLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzo0MDU0OnN0YXRpYyB2b2lkIGt2bV9hcmNoX3ZjcHVfaW9jdGxfbm9ybWFsX3Jlc2V0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNDA1NS17XFxuLS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNDA2NS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6NDA2NjpzdGF0aWMgdm9pZCBrdm1fYXJjaF92Y3B1X2lvY3RsX2luaXRpYWxfcmVzZXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy00MDY3LXtcXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNDA2OC1cXHQvKiBJbml0aWFsIHJlc2V0IGlzIGEgc3VwZXJzZXQgb2YgdGhlIG5vcm1hbCByZXNldCAqL1xcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzo0MDY5OlxcdGt2bV9hcmNoX3ZjcHVfaW9jdGxfbm9ybWFsX3Jlc2V0KHZjcHUpO1xcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy00MDcwLVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTQxMDktXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjQxMTA6c3RhdGljIHZvaWQga3ZtX2FyY2hfdmNwdV9pb2N0bF9jbGVhcl9yZXNldChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTQxMTEte1xcbi0tXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTQxMTQtXFx0LyogQ2xlYXIgcmVzZXQgaXMgYSBzdXBlcnNldCBvZiB0aGUgaW5pdGlhbCByZXNldCAqL1xcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzo0MTE1OlxcdGt2bV9hcmNoX3ZjcHVfaW9jdGxfaW5pdGlhbF9yZXNldCh2Y3B1KTtcXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNDExNi1cXG4tLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy00MTI1LVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzo0MTI2OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9yZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9yZWdzICpyZWdzKVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy00MTI3LXtcXG4tLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy00MTMzLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzo0MTM0OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9yZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9yZWdzICpyZWdzKVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy00MTM1LXtcXG4tLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy00MTQxLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzo0MTQyOmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTQxNDMtXFx0XFx0XFx0XFx0ICBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncylcXG4tLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy00MTUzLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzo0MTU0OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9zcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTQxNTUtXFx0XFx0XFx0XFx0ICBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncylcXG4tLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy00MTY1LVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzo0MTY2OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9mcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX2ZwdSAqZnB1KVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy00MTY3LXtcXG4tLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy00MTgwLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzo0MTgxOmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9mcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX2ZwdSAqZnB1KVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy00MTgyLXtcXG4tLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy00MTk1LVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzo0MTk2OnN0YXRpYyBpbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfaW5pdGlhbF9wc3coc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBwc3dfdCBwc3cpXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTQxOTcte1xcbi0tXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTQyMDgtXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjQyMDk6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfdHJhbnNsYXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNDIxMC1cXHRcXHRcXHRcXHQgIHN0cnVjdCBrdm1fdHJhbnNsYXRpb24gKnRyKVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTQyMTgtXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjQyMTk6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X2d1ZXN0X2RlYnVnKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNDIyMC1cXHRcXHRcXHRcXHRcXHRzdHJ1Y3Qga3ZtX2d1ZXN0X2RlYnVnICpkYmcpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNDI2MC1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6NDI2MTppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfbXBzdGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTQyNjItXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBrdm1fbXBfc3RhdGUgKm1wX3N0YXRlKVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTQyNzUtXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjQyNzY6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X21wc3RhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy00Mjc3LVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3Qga3ZtX21wX3N0YXRlICptcF9zdGF0ZSlcXG4tLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYz00OTk3PXN0YXRpYyB2b2lkIHN0b3JlX3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTUwMTctXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjUwMTg6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNTAxOS17XFxuLS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM9NTQ3Mz1zdGF0aWMgaW50IGt2bV9zMzkwX2hhbmRsZV9wdl92Y3B1X2R1bXAoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbi0tXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTU1MTQtXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjU1MTU6bG9uZyBrdm1fYXJjaF92Y3B1X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLFxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy01NTE2LVxcdFxcdFxcdCB1bnNpZ25lZCBpbnQgaW9jdGwsIHVuc2lnbmVkIGxvbmcgYXJnKVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTU1MzctXFx0XFx0XFx0YnJlYWs7XFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjU1Mzg6XFx0XFx0ciA9IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X2luaXRpYWxfcHN3KHZjcHUsIHBzdyk7XFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTU1MzktXFx0XFx0YnJlYWs7XFxuLS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNTU0Mi1cXHRcXHRyID0gMDtcXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6NTU0MzpcXHRcXHRrdm1fYXJjaF92Y3B1X2lvY3RsX2NsZWFyX3Jlc2V0KHZjcHUpO1xcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy01NTQ0LVxcdFxcdGlmIChrdm1fczM5MF9wdl9jcHVfaXNfcHJvdGVjdGVkKHZjcHUpKSB7XFxuLS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNTU1Mi1cXHRcXHRyID0gMDtcXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6NTU1MzpcXHRcXHRrdm1fYXJjaF92Y3B1X2lvY3RsX2luaXRpYWxfcmVzZXQodmNwdSk7XFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTU1NTQtXFx0XFx0aWYgKGt2bV9zMzkwX3B2X2NwdV9pc19wcm90ZWN0ZWQodmNwdSkpIHtcXG4tLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy01NTYzLVxcdFxcdHIgPSAwO1xcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzo1NTY0OlxcdFxcdGt2bV9hcmNoX3ZjcHVfaW9jdGxfbm9ybWFsX3Jlc2V0KHZjcHUpO1xcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy01NTY1LVxcdFxcdGlmIChrdm1fczM5MF9wdl9jcHVfaXNfcHJvdGVjdGVkKHZjcHUpKSB7XFxuLS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNTU4MS1cXHRcXHRpZiAoaW9jdGwgPT0gS1ZNX1NFVF9PTkVfUkVHKVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzo1NTgyOlxcdFxcdFxcdHIgPSBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9vbmVfcmVnKHZjcHUsIFxcdTAwMjZyZWcpO1xcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy01NTgzLVxcdFxcdGVsc2VcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTE6MDY6MDAuOTc3NTk5MjAyWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxNjgwNjc3MTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRm9jdXNpbmcgRnV6emluZyBvbiBMb29uZ0FyY2ggS1ZNIFZDUFUgQ29udHJvbCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGhvdyB0byBkaXJlY3QgZnV6emluZyBlZmZvcnRzIHJlbGF0ZWQgdG8gdGhlIExvb25nQXJjaCBLVk0gVkNQVS4gVGhlIGN1cnJlbnQgdGhvdWdodCBpcyB0aGF0IGBrdm1fYXJjaF92Y3B1X2lvY3RsYCBpcyBhIGdvb2QgY2FuZGlkYXRlLCBzaW5jZSBpdCdzIG5vbi1zdGF0aWMgYW5kIGFjY2Vzc2libGUgYXMgYSBnZW5lcmFsIEtWTSBBUEkgZnVuY3Rpb24uIEJ1dCwgaWYgSSBwdXQgdGhhdCBpbnRvIGBGb2N1c1N5bWJvbHNgLCBpdCdzIGdvaW5nIHRvIGFmZmVjdCAqYWxsKiBhcmNoaXRlY3R1cmVzLCBub3QganVzdCBMb29uZ0FyY2guIFRoYXQncyBub3QgaWRlYWwgZm9yIHRhcmdldGVkIGZ1enppbmcuIEknbSB3b25kZXJpbmcgaWYgdGhlcmUncyBhIExvb25nQXJjaC1zcGVjaWZpYyBmdW5jdGlvbiB0aGF0IHdvdWxkIGJlIGJldHRlci4gSG1tLCBga3ZtX2xvb25nYXJjaF92Y3B1X3NldF9hdHRyYCBhbmQgYGt2bV9sb29uZ2FyY2hfY3B1Y2ZnX3NldF9hdHRyYCBsb29rIHByb21pc2luZywgYnV0IHRoZXkncmUgYm90aCBzdGF0aWMuIFRoYXQncyBhIGRlYWwgYnJlYWtlci4gU28sIHdoaWxlIEkgKmNvdWxkKiB1c2UgYGt2bV9hcmNoX3ZjcHVfaW9jdGxgLCBpdCdzIHRvbyBnZW5lcmljLiBJJ20gdGhpbmtpbmcsIHRoZSBiZXN0IGFwcHJvYWNoIGlzIHRvIGNoZWNrIGBhcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jYCBmb3IgYW55IG90aGVyIG5vbi1zdGF0aWMgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gVkNQVSBjb25maWd1cmF0aW9uIG9yIGNvbnRyb2wuIFRoYXQgd2lsbCBlbnN1cmUgdGhhdCBJJ20gZm9jdXNpbmcgdGhlIGZ1enppbmcgb24gdGhlIG1vc3QgcmVsZXZhbnQgY29kZSBmb3IgdGhpcyBzcGVjaWZpYyBhcmNoaXRlY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4Mzk0LCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTc2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDExOjA2OjA2LjE0NTY2OTc4OVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDgxODI2NDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM9NDIwPXZtX2ZhdWx0X3Qga3ZtX2FyY2hfdmNwdV9mYXVsdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCB2bV9mYXVsdCAqdm1mKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy00MjQtXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzo0MjU6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfdHJhbnNsYXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTQyNi1cXHRcXHRcXHRcXHQgIHN0cnVjdCBrdm1fdHJhbnNsYXRpb24gKnRyKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYz00NDQ9aW50IGt2bV9hcmNoX3ZjcHVfZHVtcF9yZWdzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtNDY2LVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6NDY3OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX2dldF9tcHN0YXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTQ2OC1cXHRcXHRcXHRcXHRzdHJ1Y3Qga3ZtX21wX3N0YXRlICptcF9zdGF0ZSlcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtNDc0LVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6NDc1OmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9tcHN0YXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTQ3Ni1cXHRcXHRcXHRcXHRzdHJ1Y3Qga3ZtX21wX3N0YXRlICptcF9zdGF0ZSlcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtNDkwLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6NDkxOmludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3NldF9ndWVzdF9kZWJ1ZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy00OTItXFx0XFx0XFx0XFx0XFx0c3RydWN0IGt2bV9ndWVzdF9kZWJ1ZyAqZGJnKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYz05ODQ9c3RhdGljIGludCBrdm1fc2V0X3JlZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGNvbnN0IHN0cnVjdCBrdm1fb25lX3JlZyAqcmVnKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMDAxLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6MTAwMjppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfc3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncylcXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEwMDMte1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMDA2LVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6MTAwNzppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfc3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncylcXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEwMDgte1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMDExLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6MTAxMjppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9nZXRfcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcmVncyAqcmVncylcXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEwMTMte1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMDIzLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM6MTAyNDppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9zZXRfcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcmVncyAqcmVncylcXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEwMjUte1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYz0xMjM4PWxvbmcga3ZtX2FyY2hfdmNwdV9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCxcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTMxMC1cXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jOjEzMTE6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfZ2V0X2ZwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fZnB1ICpmcHUpXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMzEyLXtcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTMyMi1cXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jOjEzMjM6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X2ZwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fZnB1ICpmcHUpXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xMzI0LXtcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM9MTgyOT12b2lkIGt2bV9hcmNoX3ZjcHVfcHV0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTg1Mi1cXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jOjE4NTM6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTE4NTQte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMTowNjowNi4xOTM4NTcxNDdaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU0OTQ0NTQ4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIExvb25nQXJjaCBLVk0gSW1wbGVtZW50YXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBga3ZtX2FyY2hfdmNwdV9pb2N0bGAuIEl0J3MgbG9jYXRlZCBpbiBgYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuY2AsIHdoaWNoIG1ha2VzIHNlbnNlOyB0aGlzIGlzIHRoZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgaW1wbGVtZW50YXRpb24gb2YgdGhlIG1vcmUgZ2VuZXJhbCBLVk0gaW50ZXJmYWNlLiBSaWdodCwgc28gaWYgSSBjYWxsIGBrdm1fYXJjaF92Y3B1X2lvY3RsYCwgaXQgc2hvdWxkIHJlc29sdmUgdG8gdGhlIExvb25nQXJjaCB2ZXJzaW9uICppZiogdGhlIGZ1enplciBpcyB0YXJnZXRpbmcgTG9vbmdBcmNoLCB3aGljaCBpdCBzaG91bGQgYmUgaW4gdGhpcyBjYXNlLlxuXG5CdXQgd2FpdCwgSSBuZWVkIHRvIHJlbWVtYmVyIHdoYXQgKnRoaXMqIGZ1bmN0aW9uIGFjdHVhbGx5IGRvZXMuIEFoLCByaWdodCEgYGt2bV9hcmNoX3ZjcHVfaW9jdGxgIGhhbmRsZXMgYEtWTV9TRVRfREVWSUNFX0FUVFJgIGFuZCBgS1ZNX0hBU19ERVZJQ0VfQVRUUmAgY2FsbHMgcmVsYXRlZCB0byB0aGUgVkNQVS4gU28sIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIHRoZSBzb3VyY2UgY29kZSBpbiBgYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuY2AgdG8gc2VlICpleGFjdGx5KiBob3cgaXQncyBoYW5kbGluZyB0aG9zZSBzcGVjaWZpYyBpb2N0bHMuIFRpbWUgdG8gZGlnIGluIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDE4NSwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMTowNjoxMC43NDMzMDYzMjJaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3NzcyODk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImxvbmcga3ZtX2FyY2hfdmNwdV9pb2N0bFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM9MTIxOT1zdGF0aWMgaW50IGt2bV9sb29uZ2FyY2hfdmNwdV9zZXRfYXR0cihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEyMzctXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzoxMjM4Omxvbmcga3ZtX2FyY2hfdmNwdV9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCxcXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTEyMzktXFx0XFx0XFx0IHVuc2lnbmVkIGludCBpb2N0bCwgdW5zaWduZWQgbG9uZyBhcmcpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDExOjA2OjEwLjc5MTA4NTQxMVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTIxOTE2NzM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkxvb25nQXJjaCBLVk0gTm9uLVN0YXRpYyBGdW5jdGlvbiBDaGVjayoqXG5cbk9rYXksIHNvIGBrdm1fYXJjaF92Y3B1X2lvY3RsYCBpcyBkZWZpbml0ZWx5IG5vdCBzdGF0aWMsIGdvdCBpdC4gTm93LCB0aGUgbmV4dCBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoZXJlIGFyZSAqYW55KiBvdGhlciBMb29uZ0FyY2gtc3BlY2lmaWMgZnVuY3Rpb25zIHdpdGhpbiB0aGUgS1ZNIGFyY2hpdGVjdHVyZSB0aGF0IGFyZW4ndCBkZWNsYXJlZCBhcyBzdGF0aWMuIFRoaXMgaXMgc29tZXRoaW5nIEkgbmVlZCB0byBxdWlja2x5IGFzY2VydGFpbi4gTGV0J3Mgc2VlLi4uSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgYGFyY2gvbG9vbmdhcmNoL2t2bS92bS5jYC4gSSdsbCB6ZXJvIGluIG9uIGBrdm1fYXJjaF9pbml0X3ZtYCBhbmQgc2VlIHdoYXQgdGhlIGRlY2xhcmF0aW9uIHRlbGxzIG1lLiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBhbnN3ZXIgSSBuZWVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDc1MSwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDExOjA2OjE0LjkxMzAwNjM1OFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQ0NDk3MjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX2FyY2hfaW5pdF92bVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL2xvb25nYXJjaC9rdm0vdm0uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2xvb25nYXJjaC9rdm0vdm0uYz0yOD1zdGF0aWMgdm9pZCBrdm1fdm1faW5pdF9mZWF0dXJlcyhzdHJ1Y3Qga3ZtICprdm0pXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vdm0uYy02MS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vdm0uYzo2MjppbnQga3ZtX2FyY2hfaW5pdF92bShzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgdHlwZSlcXG5hcmNoL2xvb25nYXJjaC9rdm0vdm0uYy02My17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDExOjA2OjE0Ljk2NzQ2NzgyN1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MTUyNTI2MDY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEZ1enppbmcgU3RyYXRlZ3kgZm9yIHRoZSBMb29uZ0FyY2ggS1ZNIFJhY2UgQ29uZGl0aW9uIEZpeCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGZpZ3VyaW5nIG91dCB0aGUgYmVzdCB3YXkgdG8gZnV6eiBpdC4gYGt2bV9hcmNoX2luaXRfdm1gIGlzIGEgcHJldHR5IGdlbmVyaWMgZnVuY3Rpb24sIGp1c3QgbGlrZSBga3ZtX2FyY2hfdmNwdV9pb2N0bGAsIHNvIEkgbmVlZCB0byBjaG9vc2UgY2FyZWZ1bGx5LiBTaW5jZSB0aGlzIHBhdGNoIHRhcmdldHMgdGhlIExvb25nQXJjaCBhcmNoaXRlY3R1cmUgc3BlY2lmaWNhbGx5LCB0aGUgZmFjdCB0aGF0IGBrdm1fYXJjaF92Y3B1X2lvY3RsYCBpcyBicm9hZCBpcyBsZXNzIG9mIGEgY29uY2Vybi4gSXQgbG9va3MgbGlrZSB0aGUgcGF0Y2ggbW9kaWZpZXMgYGt2bV9sb29uZ2FyY2hfY3B1Y2ZnX3NldF9hdHRyYCwgd2hpY2ggaXMgdGhlbiBjYWxsZWQgZnJvbSBga3ZtX2xvb25nYXJjaF92Y3B1X3NldF9hdHRyYCBhbmQgdGhlbiB1bHRpbWF0ZWx5IGBrdm1fYXJjaF92Y3B1X2lvY3RsYC4gSXQgbWlnaHQgYmUgdGVtcHRpbmcgdG8gZHJpbGwgZG93biBmdXJ0aGVyLCBidXQgc2luY2Ugd2UncmUgdGFyZ2V0aW5nIGEgdmVyeSBzcGVjaWZpYyBhcmNoaXRlY3R1cmUgSSBzaG91bGQgc3RpY2sgd2l0aCB0aGUgbW9zdCBnZW5lcmljIGVudHJ5IHBvaW50LlxuXG5JIGNoZWNrZWQgaWYgYGt2bV9sb29uZ2FyY2hfY3B1Y2ZnX3NldF9hdHRyYCB3YXMgZXhwb3J0YWJsZSBvciBub24tc3RhdGljLCBidXQgaXQncyBpbnRlcm5hbC4gYGt2bV9hcmNoX3ZjcHVfaW9jdGxgIHNlZW1zIHRvIGJlIHRoZSBiZXN0IGVudHJ5IHBvaW50IGZvciBmdXp6aW5nLCBnaXZlbiBpdHMgY29ubmVjdGl2aXR5LlxuXG5Ob3cgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJ20gbm90IG1pc3NpbmcgYW55dGhpbmcuIEkgZG9uJ3Qgc2VlIGFueSBvdGhlciBvYnZpb3VzIGNvbmZpZ3VyYXRpb24gcG9pbnRzIG91dHNpZGUgb2YgYEtWTWAuXG5cbkkgYWxzbyBuZWVkIHRvIHZlcmlmeSB0aGlzIGlzIGFjdHVhbGx5IGEgd29ydGh3aGlsZSB0YXJnZXQuIGBrdm1fYXJjaF92Y3B1X2lvY3RsYCBpcyBhbiBpb2N0bCwgbm90IGEgaG90IHBhdGgsIHNvIHRoYXQncyBnb29kLiBBbmQgeWVzLCBpdCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGluIEtWTSBmb3IgTG9vbmdBcmNoLCBzbyBpdCBpcyBhIGdvb2QgdGFyZ2V0LlxuXG5JbiBzdW1tYXJ5LCB0aGUgaW1wb3J0YW50IHBvaW50cyBhcmU6XG5cbiogICAqKldvcnRoRnV6emluZyoqOiB0cnVlXG4qICAgKipGb2N1c1N5bWJvbHMqKjogYGt2bV9hcmNoX3ZjcHVfaW9jdGxgLCBga3ZtX2FyY2hfaW5pdF92bWBcbiogICAqKkVuYWJsZUNvbmZpZ3MqKjogYEtWTWBcbiogICAqKlJlYXNvbmluZyoqOiBUaGlzIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gTG9vbmdBcmNoIEtWTSBDUFUgY29uZmlndXJhdGlvbiB1c2luZyBhIG5ldyBzcGlubG9jayAoYHB2X3NldHRpbmdfbG9ja2ApLiBJdCBkaXJlY3RseSBtb2RpZmllcyBLVk0gZnVuY3Rpb25hbGl0eSwgcmVhY2hhYmxlIHZpYSBWQ1BVIGlvY3RscywgbWFraW5nIGl0IGEgZ29vZCB0YXJnZXQgZm9yIGZ1enppbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMTA5LCJPdXRwdXRUb2tlbnMiOjEwNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMTowNjoyMy4xMTk5OTc4NjVaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NDczOTE0NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX2FyY2hfdmNwdV9pb2N0bFwiLFxuICAgIFwia3ZtX2FyY2hfaW5pdF92bVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gTG9vbmdBcmNoIEtWTSBDUFUgY29uZmlndXJhdGlvbiBieSBpbnRyb2R1Y2luZyBhIG5ldyBzcGlubG9jayBgcHZfc2V0dGluZ19sb2NrYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBLVk0gc3Vic3lzdGVtIHRoYXQgaXMgcmVhY2hhYmxlIHZpYSBWQ1BVIGlvY3Rscy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJrdm1fYXJjaF92Y3B1X2lvY3RsXCIsXG4gICAgXCJrdm1fYXJjaF9pbml0X3ZtXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiBMb29uZ0FyY2ggS1ZNIENQVSBjb25maWd1cmF0aW9uIGJ5IGludHJvZHVjaW5nIGEgbmV3IHNwaW5sb2NrIGBwdl9zZXR0aW5nX2xvY2tgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIEtWTSBzdWJzeXN0ZW0gdGhhdCBpcyByZWFjaGFibGUgdmlhIFZDUFUgaW9jdGxzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMTowNjoyMy4yMDQ3NDgyOTJaIiwiU2VxIjoyMSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY1NDQzMjczNTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMTowNjoyMy4yMDU0NTUxNTJaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NjU0MzYxNTYwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIHNwaW5sb2NrIChgcHZfc2V0dGluZ19sb2NrYCkgdG8gcHJvdGVjdCB0aGUgYHB2X2ZlYXR1cmVzYCBmaWVsZCBpbiBgc3RydWN0IGt2bV9hcmNoYCBmcm9tIGNvbmN1cnJlbnQgbW9kaWZpY2F0aW9ucyBkdXJpbmcgdkNQVSBjb25maWd1cmF0aW9uLiBUaGlzIGlzIGEgY29uY3VycmVuY3kvbG9ja2luZyBmaXggYWltZWQgYXQgcHJldmVudGluZyBkYXRhIHJhY2VzIG9yIGluY29uc2lzdGVudCBzdGF0ZXMgYWNyb3NzIHZDUFVzLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlLCBvciBjaGFuZ2VzIHRvIGJvdW5kcyBjaGVja2luZyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gQ29uY3VycmVuY3kgaXNzdWVzIGFuZCBkYXRhIHJhY2VzIGFyZSBiZXN0IGRldGVjdGVkIGJ5IHRvb2xzIGxpa2UgS0NTQU4gb3IgTE9DS0RFUCwgd2hpbGUgS0FTQU4gaGFuZGxlcyBtZW1vcnkgY29ycnVwdGlvbi4gS01TQU4gaXMgc3BlY2lmaWNhbGx5IGZvciBkZXRlY3RpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UsIHdoaWNoIGlzIG5vdCByZWxldmFudCB0byB0aGlzIHBhdGNoLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDNjZTdmM2U3NjEzNjE1ZmE0ODAwMDhiNzMxODVhZTJmZTE4N2ExYmFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEF1ZyAxNCAxMTowNTozNCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmggYi9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXG5pbmRleCAyM2NmYmVjZWJiZDc5Li4zNTM4YTE5OWFhYzYyIDEwMDY0NFxuLS0tIGEvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2hvc3QuaFxuKysrIGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2hvc3QuaFxuQEAgLTEyNSw2ICsxMjUsNyBAQCBzdHJ1Y3Qga3ZtX2FyY2gge1xuIFx0dW5zaWduZWQgaW50ICBwdGVfc2hpZnRzW01BWF9QR1RBQkxFX0xFVkVMU107XG4gXHR1bnNpZ25lZCBpbnQgIHJvb3RfbGV2ZWw7XG4gXHRzcGlubG9ja190ICAgIHBoeWlkX21hcF9sb2NrO1xuK1x0c3BpbmxvY2tfdCAgICBwdl9zZXR0aW5nX2xvY2s7XG4gXHRzdHJ1Y3Qga3ZtX3BoeWlkX21hcCAgKnBoeWlkX21hcDtcbiBcdC8qIEVuYWJsZWQgUFYgZmVhdHVyZXMgKi9cbiBcdHVuc2lnbmVkIGxvbmcgcHZfZmVhdHVyZXM7XG5kaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYyBiL2FyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmNcbmluZGV4IDIwYzIwN2Q4MGUzMWEuLmU0N2ZhNDYzYThiZWMgMTAwNjQ0XG4tLS0gYS9hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jXG4rKysgYi9hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jXG5AQCAtMTE2NSwxMCArMTE2NSwxNCBAQCBzdGF0aWMgaW50IGt2bV9sb29uZ2FyY2hfY3B1Y2ZnX3NldF9hdHRyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbiBcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbiBcdFx0LyogQWxsIHZDUFVzIG5lZWQgc2V0IHRoZSBzYW1lIFBWIGZlYXR1cmVzICovXG4rXHRcdHNwaW5fbG9jayhcdTAwMjZrdm0tXHUwMDNlYXJjaC5wdl9zZXR0aW5nX2xvY2spO1xuIFx0XHRpZiAoKGt2bS1cdTAwM2VhcmNoLnB2X2ZlYXR1cmVzIFx1MDAyNiBMT09OR0FSQ0hfUFZfRkVBVF9VUERBVEVEKVxuLVx0XHRcdFx0XHUwMDI2XHUwMDI2ICgoa3ZtLVx1MDAzZWFyY2gucHZfZmVhdHVyZXMgXHUwMDI2IHZhbGlkKSAhPSB2YWwpKVxuK1x0XHRcdFx0XHUwMDI2XHUwMDI2ICgoa3ZtLVx1MDAzZWFyY2gucHZfZmVhdHVyZXMgXHUwMDI2IHZhbGlkKSAhPSB2YWwpKSB7XG4rXHRcdFx0c3Bpbl91bmxvY2soXHUwMDI2a3ZtLVx1MDAzZWFyY2gucHZfc2V0dGluZ19sb2NrKTtcbiBcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbitcdFx0fVxuIFx0XHRrdm0tXHUwMDNlYXJjaC5wdl9mZWF0dXJlcyA9IHZhbCB8IExPT05HQVJDSF9QVl9GRUFUX1VQREFURUQ7XG4rXHRcdHNwaW5fdW5sb2NrKFx1MDAyNmt2bS1cdTAwM2VhcmNoLnB2X3NldHRpbmdfbG9jayk7XG4gXHRcdHJldHVybiAwO1xuIFx0ZGVmYXVsdDpcbiBcdFx0cmV0dXJuIC1FTlhJTztcbmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9rdm0vdm0uYyBiL2FyY2gvbG9vbmdhcmNoL2t2bS92bS5jXG5pbmRleCAxMzE3YzcxOGY4OTZhLi44NmJhN2Q1NGU4MWY4IDEwMDY0NFxuLS0tIGEvYXJjaC9sb29uZ2FyY2gva3ZtL3ZtLmNcbisrKyBiL2FyY2gvbG9vbmdhcmNoL2t2bS92bS5jXG5AQCAtNzYsNiArNzYsNyBAQCBpbnQga3ZtX2FyY2hfaW5pdF92bShzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgdHlwZSlcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXHR9XG4gXHRzcGluX2xvY2tfaW5pdChcdTAwMjZrdm0tXHUwMDNlYXJjaC5waHlpZF9tYXBfbG9jayk7XG4rXHRzcGluX2xvY2tfaW5pdChcdTAwMjZrdm0tXHUwMDNlYXJjaC5wdl9zZXR0aW5nX2xvY2spO1xuIFxuIFx0a3ZtX2luaXRfdm1jcyhrdm0pO1xuIFx0a3ZtX3ZtX2luaXRfZmVhdHVyZXMoa3ZtKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDExOjA2OjIzLjIwNTQ1NjI4MloiLCJTZXEiOjIzLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NTQzNTg2NDU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEtWTSBMb29uZ2FyY2ggUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHN0cmFpZ2h0Zm9yd2FyZC4gSXQncyBhZGRpbmcgYSBuZXcgc3BpbmxvY2ssIGBwdl9zZXR0aW5nX2xvY2tgLCB0byB0aGUgYGt2bV9hcmNoYCBzdHJ1Y3QgaW4gdGhlIExvb25nQXJjaCBLVk0gaW1wbGVtZW50YXRpb24uIEZyb20gd2hhdCBJIGNhbiBzZWUsIGl0J3MgaW5pdGlhbGl6ZWQgZHVyaW5nIFZNIGluaXRpYWxpemF0aW9uIGluIGBrdm1fYXJjaF9pbml0X3ZtYCBhbmQgdGhlbiB1c2VkIHRvIHByb3RlY3QgdGhlIGBrdm0tXHUwMDNlYXJjaC5wdl9mZWF0dXJlc2AgdmFyaWFibGUgd2l0aGluIGBrdm1fbG9vbmdhcmNoX2NwdWNmZ19zZXRfYXR0cmAuXG5cbkVzc2VudGlhbGx5LCB0aGlzIGlzIGEgY2xhc3NpYyBsb2NraW5nIGZpeCB0byByZXNvbHZlIGEgY29uY3VycmVuY3kgaXNzdWUsIGxpa2VseSBhIGRhdGEgcmFjZS4gVGhlIGNvZGUgY2xlYXJseSBvdXRsaW5lcyBhIHBhdHRlcm46IGxvY2ssIGNoZWNrIGEgY29uZGl0aW9uLCBtb2RpZnkgZGF0YSwgYW5kIHVubG9jaywgd2l0aCBhbiBlYXJseSBleGl0IGFuZCB1bmxvY2sgb24gZmFpbHVyZS4gVGhlIGNvZGUgaXMgY2xlYW4gYW5kIGFkZHJlc3NlcyBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiB3aGVuIHNldHRpbmcgdGhlIGBwdl9mZWF0dXJlc2AuXG5cblRoZSBwYXRjaCBkb2Vzbid0IGludm9sdmUgYW55IGNoYW5nZXMgdG8gaG93IGRhdGEgaXMgZXhwb3NlZCB0byB1c2Vyc3BhY2UsIG5vIG1vZGlmaWNhdGlvbnMgdG8gZXhpc3RpbmcgYm91bmRzIGNoZWNrcywgYW5kIG5vIGFsbG9jYXRpb24gb2YgYW55IGNvbXBsZXggc3RydWN0dXJlcy4gU2luY2UgdGhlIGJ1ZyB0aGlzIGlzIGFkZHJlc3NpbmcgaXMgYSBjb25jdXJyZW5jeSBpc3N1ZSBhbmQgaXQncyBiZWluZyBjYXVnaHQgYnkgS0NTQU4gb3IgTE9DS0RFUCwgdGhlcmUncyBubyBuZWVkIGZvciBLTVNBTiB0byBiZSBpbnZvbHZlZC4gSSBjYW4gY29uZmlkZW50bHkgYXNzZXNzIHRoaXMgYXMgYSBzdGFuZGFyZCBsb2NraW5nIGZpeCwgYW5kIHRoZXJlIGFyZSBubyBuZXcgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgaW50cm9kdWNlZC5cblxuVGhlcmVmb3JlLCBJJ20gY29tZm9ydGFibGUgc2V0dGluZyBgTmVlZHNLTVNBTmAgdG8gZmFsc2UuIFRoZSBwYXRjaCBpcyBzb3VuZCBhbmQgYWRkcmVzc2VzIGEgcmVhbCBjb25jdXJyZW5jeSBjb25jZXJuLCBwcmV2ZW50aW5nIHBvdGVudGlhbCBkYXRhIGNvcnJ1cHRpb24gaW4gdGhlIEtWTSBMb29uZ0FyY2ggaW1wbGVtZW50YXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1NjgsIk91dHB1dFRva2VucyI6MTU3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzE1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTE6MDY6MjkuNzQ5MDQ2NzA4WiIsIlNlcSI6MjQsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE3ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgc3BpbmxvY2sgKGBwdl9zZXR0aW5nX2xvY2tgKSB0byBwcm90ZWN0IHRoZSBgcHZfZmVhdHVyZXNgIGZpZWxkIGluIGBzdHJ1Y3Qga3ZtX2FyY2hgIGZyb20gY29uY3VycmVudCBtb2RpZmljYXRpb25zIGR1cmluZyB2Q1BVIGNvbmZpZ3VyYXRpb24uIFRoaXMgaXMgYSBjb25jdXJyZW5jeS9sb2NraW5nIGZpeCBhaW1lZCBhdCBwcmV2ZW50aW5nIGRhdGEgcmFjZXMgb3IgaW5jb25zaXN0ZW50IHN0YXRlcyBhY3Jvc3MgdkNQVXMuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UsIG9yIGNoYW5nZXMgdG8gYm91bmRzIGNoZWNraW5nIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBDb25jdXJyZW5jeSBpc3N1ZXMgYW5kIGRhdGEgcmFjZXMgYXJlIGJlc3QgZGV0ZWN0ZWQgYnkgdG9vbHMgbGlrZSBLQ1NBTiBvciBMT0NLREVQLCB3aGlsZSBLQVNBTiBoYW5kbGVzIG1lbW9yeSBjb3JydXB0aW9uLiBLTVNBTiBpcyBzcGVjaWZpY2FsbHkgZm9yIGRldGVjdGluZyB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSwgd2hpY2ggaXMgbm90IHJlbGV2YW50IHRvIHRoaXMgcGF0Y2guXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIHNwaW5sb2NrIChgcHZfc2V0dGluZ19sb2NrYCkgdG8gcHJvdGVjdCB0aGUgYHB2X2ZlYXR1cmVzYCBmaWVsZCBpbiBgc3RydWN0IGt2bV9hcmNoYCBmcm9tIGNvbmN1cnJlbnQgbW9kaWZpY2F0aW9ucyBkdXJpbmcgdkNQVSBjb25maWd1cmF0aW9uLiBUaGlzIGlzIGEgY29uY3VycmVuY3kvbG9ja2luZyBmaXggYWltZWQgYXQgcHJldmVudGluZyBkYXRhIHJhY2VzIG9yIGluY29uc2lzdGVudCBzdGF0ZXMgYWNyb3NzIHZDUFVzLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlLCBvciBjaGFuZ2VzIHRvIGJvdW5kcyBjaGVja2luZyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gQ29uY3VycmVuY3kgaXNzdWVzIGFuZCBkYXRhIHJhY2VzIGFyZSBiZXN0IGRldGVjdGVkIGJ5IHRvb2xzIGxpa2UgS0NTQU4gb3IgTE9DS0RFUCwgd2hpbGUgS0FTQU4gaGFuZGxlcyBtZW1vcnkgY29ycnVwdGlvbi4gS01TQU4gaXMgc3BlY2lmaWNhbGx5IGZvciBkZXRlY3RpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UsIHdoaWNoIGlzIG5vdCByZWxldmFudCB0byB0aGlzIHBhdGNoLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowcj2f2[1] Phase: Succeeded StartedAt: 2026-08-14 11:06:41 +0000 UTC FinishedAt: 2026-08-14 11:06:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcj2f2[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-14 11:06:41 +0000 UTC FinishedAt: 2026-08-14 11:06:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcj2f2[2] Phase: Succeeded StartedAt: 2026-08-14 11:06:41 +0000 UTC FinishedAt: 2026-08-14 11:49:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcj2f2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"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_arch_vcpu_ioctl","kvm_arch_init_vm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"bbc324d3-5785-4dc5-8fe4-73d0219fcc79","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-14 11:06:41 +0000 UTC FinishedAt: 2026-08-14 11:49:40 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"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_arch_vcpu_ioctl","kvm_arch_init_vm"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"bbc324d3-5785-4dc5-8fe4-73d0219fcc79","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-workflowcj2f2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"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_arch_vcpu_ioctl","kvm_arch_init_vm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"bbc324d3-5785-4dc5-8fe4-73d0219fcc79","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-14 11:06:41 +0000 UTC FinishedAt: 2026-08-14 11:06:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcj2f2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"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_arch_vcpu_ioctl","kvm_arch_init_vm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"bbc324d3-5785-4dc5-8fe4-73d0219fcc79","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-08-14 11:06:41 +0000 UTC FinishedAt: 2026-08-14 11:06:45 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"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-workflowcj2f2/series-workflowcj2f2-convert-artifact-2388073105/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcj2f2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"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_arch_vcpu_ioctl","kvm_arch_init_vm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"bbc324d3-5785-4dc5-8fe4-73d0219fcc79","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-14 11:06:51 +0000 UTC FinishedAt: 2026-08-14 11:25:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcj2f2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"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_arch_vcpu_ioctl","kvm_arch_init_vm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"bbc324d3-5785-4dc5-8fe4-73d0219fcc79","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-08-14 11:06:51 +0000 UTC FinishedAt: 2026-08-14 11:25:14 +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:*9549620c-ef55-4e37-b08d-f7bde4cab09d,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-workflowcj2f2/series-workflowcj2f2-convert-artifact-2388073105/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": "62f7b2db-45fa-486c-94ff-b6e660df9011", "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-workflowcj2f2/series-workflowcj2f2-build-action-2609445951/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcj2f2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"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_arch_vcpu_ioctl","kvm_arch_init_vm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"bbc324d3-5785-4dc5-8fe4-73d0219fcc79","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-08-14 11:06:51 +0000 UTC FinishedAt: 2026-08-14 11:25:04 +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:*9549620c-ef55-4e37-b08d-f7bde4cab09d,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-workflowcj2f2/series-workflowcj2f2-convert-artifact-2388073105/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": "62f7b2db-45fa-486c-94ff-b6e660df9011", "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-workflowcj2f2/series-workflowcj2f2-build-action-2609445951/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcj2f2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"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_arch_vcpu_ioctl","kvm_arch_init_vm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"bbc324d3-5785-4dc5-8fe4-73d0219fcc79","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-14 11:25:14 +0000 UTC FinishedAt: 2026-08-14 11:25:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcj2f2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"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_arch_vcpu_ioctl","kvm_arch_init_vm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"bbc324d3-5785-4dc5-8fe4-73d0219fcc79","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-08-14 11:25:14 +0000 UTC FinishedAt: 2026-08-14 11:25:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcj2f2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"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_arch_vcpu_ioctl","kvm_arch_init_vm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"bbc324d3-5785-4dc5-8fe4-73d0219fcc79","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-14 11:25:14 +0000 UTC FinishedAt: 2026-08-14 11:25:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcj2f2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"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_arch_vcpu_ioctl","kvm_arch_init_vm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"bbc324d3-5785-4dc5-8fe4-73d0219fcc79","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-08-14 11:25:14 +0000 UTC FinishedAt: 2026-08-14 11:25:19 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"bbc324d3-5785-4dc5-8fe4-73d0219fcc79","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-workflowcj2f2/series-workflowcj2f2-convert-artifact-1017829476/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcj2f2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"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_arch_vcpu_ioctl","kvm_arch_init_vm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"bbc324d3-5785-4dc5-8fe4-73d0219fcc79","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-14 11:25:24 +0000 UTC FinishedAt: 2026-08-14 11:27:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcj2f2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"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_arch_vcpu_ioctl","kvm_arch_init_vm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"bbc324d3-5785-4dc5-8fe4-73d0219fcc79","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-08-14 11:25:24 +0000 UTC FinishedAt: 2026-08-14 11:27:15 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*62f7b2db-45fa-486c-94ff-b6e660df9011,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-workflowcj2f2/series-workflowcj2f2-build-action-2609445951/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-workflowcj2f2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"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_arch_vcpu_ioctl","kvm_arch_init_vm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"bbc324d3-5785-4dc5-8fe4-73d0219fcc79","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-14 11:27:25 +0000 UTC FinishedAt: 2026-08-14 11:27:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcj2f2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"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_arch_vcpu_ioctl","kvm_arch_init_vm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"bbc324d3-5785-4dc5-8fe4-73d0219fcc79","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-08-14 11:27:25 +0000 UTC FinishedAt: 2026-08-14 11:27:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcj2f2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"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_arch_vcpu_ioctl","kvm_arch_init_vm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"bbc324d3-5785-4dc5-8fe4-73d0219fcc79","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-14 11:27:25 +0000 UTC FinishedAt: 2026-08-14 11:45:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcj2f2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"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_arch_vcpu_ioctl","kvm_arch_init_vm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"bbc324d3-5785-4dc5-8fe4-73d0219fcc79","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-08-14 11:27:25 +0000 UTC FinishedAt: 2026-08-14 11:45:02 +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:*9549620c-ef55-4e37-b08d-f7bde4cab09d,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-workflowcj2f2/series-workflowcj2f2-convert-artifact-1017829476/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": "ef63fe42-dc6e-4b1d-b688-60e841aa87ae", "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-workflowcj2f2/series-workflowcj2f2-build-action-464052720/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcj2f2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"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_arch_vcpu_ioctl","kvm_arch_init_vm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"bbc324d3-5785-4dc5-8fe4-73d0219fcc79","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-08-14 11:27:25 +0000 UTC FinishedAt: 2026-08-14 11:44:52 +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:*9549620c-ef55-4e37-b08d-f7bde4cab09d,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-workflowcj2f2/series-workflowcj2f2-convert-artifact-1017829476/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": "ef63fe42-dc6e-4b1d-b688-60e841aa87ae", "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-workflowcj2f2/series-workflowcj2f2-build-action-464052720/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcj2f2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"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_arch_vcpu_ioctl","kvm_arch_init_vm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"bbc324d3-5785-4dc5-8fe4-73d0219fcc79","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-14 11:45:02 +0000 UTC FinishedAt: 2026-08-14 11:45:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcj2f2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"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_arch_vcpu_ioctl","kvm_arch_init_vm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"bbc324d3-5785-4dc5-8fe4-73d0219fcc79","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-08-14 11:45:02 +0000 UTC FinishedAt: 2026-08-14 11:45:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcj2f2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"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_arch_vcpu_ioctl","kvm_arch_init_vm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"bbc324d3-5785-4dc5-8fe4-73d0219fcc79","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-14 11:45:02 +0000 UTC FinishedAt: 2026-08-14 11:46:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcj2f2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"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_arch_vcpu_ioctl","kvm_arch_init_vm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"bbc324d3-5785-4dc5-8fe4-73d0219fcc79","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-08-14 11:45:02 +0000 UTC FinishedAt: 2026-08-14 11:46:45 +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:*ef63fe42-dc6e-4b1d-b688-60e841aa87ae,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-workflowcj2f2/series-workflowcj2f2-build-action-464052720/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-workflowcj2f2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"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_arch_vcpu_ioctl","kvm_arch_init_vm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"bbc324d3-5785-4dc5-8fe4-73d0219fcc79","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-14 11:46:55 +0000 UTC FinishedAt: 2026-08-14 11:49:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcj2f2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"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_arch_vcpu_ioctl","kvm_arch_init_vm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"bbc324d3-5785-4dc5-8fe4-73d0219fcc79","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-08-14 11:46:55 +0000 UTC FinishedAt: 2026-08-14 11:49:40 +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_arch_vcpu_ioctl","kvm_arch_init_vm"],"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:*62f7b2db-45fa-486c-94ff-b6e660df9011,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*ef63fe42-dc6e-4b1d-b688-60e841aa87ae,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-workflowcj2f2/series-workflowcj2f2-build-action-2609445951/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-workflowcj2f2/series-workflowcj2f2-build-action-464052720/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowcj2f2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"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_arch_vcpu_ioctl","kvm_arch_init_vm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"bbc324d3-5785-4dc5-8fe4-73d0219fcc79","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-08-14 11:46:55 +0000 UTC FinishedAt: 2026-08-14 11:47:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcj2f2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"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_arch_vcpu_ioctl","kvm_arch_init_vm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"bbc324d3-5785-4dc5-8fe4-73d0219fcc79","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-08-14 11:46:55 +0000 UTC FinishedAt: 2026-08-14 11:47:00 +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_arch_vcpu_ioctl","kvm_arch_init_vm"],"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-workflowcj2f2/series-workflowcj2f2-convert-artifact-1418170861/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcj2f2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"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_arch_vcpu_ioctl","kvm_arch_init_vm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"bbc324d3-5785-4dc5-8fe4-73d0219fcc79","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-08-14 11:46:55 +0000 UTC FinishedAt: 2026-08-14 11:46:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcj2f2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"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_arch_vcpu_ioctl","kvm_arch_init_vm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"bbc324d3-5785-4dc5-8fe4-73d0219fcc79","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-14 11:46:55 +0000 UTC FinishedAt: 2026-08-14 11:46:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcj2f2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"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_arch_vcpu_ioctl","kvm_arch_init_vm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"bbc324d3-5785-4dc5-8fe4-73d0219fcc79","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-08-14 11:46:55 +0000 UTC FinishedAt: 2026-08-14 11:46:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcj2f2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"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_arch_vcpu_ioctl","kvm_arch_init_vm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"bbc324d3-5785-4dc5-8fe4-73d0219fcc79","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-08-14 11:47:05 +0000 UTC FinishedAt: 2026-08-14 11:49:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcj2f2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"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_arch_vcpu_ioctl","kvm_arch_init_vm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"bbc324d3-5785-4dc5-8fe4-73d0219fcc79","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-08-14 11:47:05 +0000 UTC FinishedAt: 2026-08-14 11:49:19 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*62f7b2db-45fa-486c-94ff-b6e660df9011,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*ef63fe42-dc6e-4b1d-b688-60e841aa87ae,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-workflowcj2f2/series-workflowcj2f2-build-action-2609445951/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-workflowcj2f2/series-workflowcj2f2-build-action-464052720/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-workflowcj2f2/series-workflowcj2f2-convert-artifact-1418170861/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,}