Name: series-workflowsssxz Phase: Succeeded StartedAt: 2026-07-14 00:33:40 +0000 UTC FinishedAt: 2026-07-14 05:12:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsssxz[0] Phase: Succeeded StartedAt: 2026-07-14 00:33:40 +0000 UTC FinishedAt: 2026-07-14 00:44:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsssxz[0].run-triage Phase: Succeeded StartedAt: 2026-07-14 00:33:40 +0000 UTC FinishedAt: 2026-07-14 00:44:34 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "3aec122bdcaf6f8c4ecfc7f6adf6773015ced676", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM", "KVM_AMD", "KVM_INTEL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "3aec122bdcaf6f8c4ecfc7f6adf6773015ced676", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM", "KVM_AMD", "KVM_INTEL" ], "series_id": "f4243b36-4236-4dc6-9118-ce8ecc23e6fa" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "kvm_valid_efer", "set_efer", "kvm_setup_efer_caps" ], "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+CgkJCTx0ZD4yMDI2LzA3LzE0IDAwOjQzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7LAogICAgJiMzNDtLVk1fQU1EJiMzNDssCiAgICAmIzM0O0tWTV9JTlRFTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV92YWxpZF9lZmVyJiMzNDssCiAgICAmIzM0O3NldF9lZmVyJiMzNDssCiAgICAmIzM0O2t2bV9zZXR1cF9lZmVyX2NhcHMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgaG93IEtWTSB2YWxpZGF0ZXMgYW5kIHNldHMgdGhlIEVGRVIgTVNSIGJ5IHJlcGxhY2luZyBgZWZlcl9yZXNlcnZlZF9iaXRzYCB3aXRoIGBrdm1fY2Fwcy5zdXBwb3J0ZWRfZWZlcl9iaXRzYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgS1ZNIGxvZ2ljIHRoYXQgYWZmZWN0cyBndWVzdCBleGVjdXRpb24gYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDA6NDM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA0MjJlMzIwNmRmZjg1MjVjNzVmYWRjY2JiOWNlNGU5YzEyOWY5YTcyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdWwgMTQgMDA6NDM6NTMgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmhcbmluZGV4IDU4ZjE1NmFlMzFlNzUwLi44MGI5MmVkNDQwZmExOCAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmhcbkBAIC0yNzQsNiAmIzQzOzI3NCw4IEBAIHN0cnVjdCBrdm1fY2FwcyB7XG4gXHR1NjQgc3VwcG9ydGVkX3hzcztcbiBcdHU2NCBzdXBwb3J0ZWRfcGVyZl9jYXA7XG4gXG4mIzQzO1x0dTY0IHN1cHBvcnRlZF9lZmVyX2JpdHM7XG4mIzQzO1xuIFx0dTY0IHN1cHBvcnRlZF9xdWlya3M7XG4gXHR1NjQgaW5hcHBsaWNhYmxlX3F1aXJrcztcbiB9O1xuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9tc3JzLmMgYi9hcmNoL3g4Ni9rdm0vbXNycy5jXG5pbmRleCBjMjMwYjE4ZDg3ZTM4ZS4uNjZmYTcxNDBkNjVkOWIgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9rdm0vbXNycy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0vbXNycy5jXG5AQCAtMTksMTcgJiM0MzsxOSw2IEBAIGJvb2wgX19yZWFkX21vc3RseSByZXBvcnRfaWdub3JlZF9tc3JzID0gdHJ1ZTtcbiBtb2R1bGVfcGFyYW0ocmVwb3J0X2lnbm9yZWRfbXNycywgYm9vbCwgMDY0NCk7XG4gRVhQT1JUX1NZTUJPTF9GT1JfS1ZNX0lOVEVSTkFMKHJlcG9ydF9pZ25vcmVkX21zcnMpO1xuIFxuLS8qIEVGRVIgZGVmYXVsdHM6XG4tICogLSBlbmFibGUgc3lzY2FsbCBwZXIgZGVmYXVsdCBiZWNhdXNlIGl0cyBlbXVsYXRlZCBieSBLVk1cbi0gKiAtIGVuYWJsZSBMTUUgYW5kIExNQSBwZXIgZGVmYXVsdCBvbiA2NCBiaXQgS1ZNXG4tICovXG4tI2lmZGVmIENPTkZJR19YODZfNjRcbi1zdGF0aWNcbi11NjQgX19yZWFkX21vc3RseSBlZmVyX3Jlc2VydmVkX2JpdHMgPSB+KCh1NjQpKEVGRVJfU0NFIHwgRUZFUl9MTUUgfCBFRkVSX0xNQSkpO1xuLSNlbHNlXG4tc3RhdGljIHU2NCBfX3JlYWRfbW9zdGx5IGVmZXJfcmVzZXJ2ZWRfYml0cyA9IH4oKHU2NClFRkVSX1NDRSk7XG4tI2VuZGlmXG4tXG4gI2RlZmluZSBNQVhfSU9fTVNSUyAyNTZcbiBcbiBzdHJ1Y3QgbXNyX2JpdG1hcF9yYW5nZSB7XG5AQCAtNjE0LDcgJiM0Mzs2MDMsNyBAQCBzdGF0aWMgYm9vbCBfX2t2bV92YWxpZF9lZmVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGVmZXIpXG4gfVxuIGJvb2wga3ZtX3ZhbGlkX2VmZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgZWZlcilcbiB7XG4tXHRpZiAoZWZlciBcdTAwMjYgZWZlcl9yZXNlcnZlZF9iaXRzKVxuJiM0MztcdGlmIChlZmVyIFx1MDAyNiB+a3ZtX2NhcHMuc3VwcG9ydGVkX2VmZXJfYml0cylcbiBcdFx0cmV0dXJuIGZhbHNlO1xuIFxuIFx0cmV0dXJuIF9fa3ZtX3ZhbGlkX2VmZXIodmNwdSwgZWZlcik7XG5AQCAtNjI3LDcgJiM0Mzs2MTYsNyBAQCBzdGF0aWMgaW50IHNldF9lZmVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IG1zcl9kYXRhICptc3JfaW5mbylcbiBcdHU2NCBlZmVyID0gbXNyX2luZm8tXHUwMDNlZGF0YTtcbiBcdGludCByO1xuIFxuLVx0aWYgKGVmZXIgXHUwMDI2IGVmZXJfcmVzZXJ2ZWRfYml0cylcbiYjNDM7XHRpZiAoZWZlciBcdTAwMjYgfmt2bV9jYXBzLnN1cHBvcnRlZF9lZmVyX2JpdHMpXG4gXHRcdHJldHVybiAxO1xuIFxuIFx0aWYgKCFtc3JfaW5mby1cdTAwM2Vob3N0X2luaXRpYXRlZCkge1xuQEAgLTY1OCwxMiAmIzQzOzY0Nyw2IEBAIHN0YXRpYyBpbnQgc2V0X2VmZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3QgbXNyX2RhdGEgKm1zcl9pbmZvKVxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuLXZvaWQga3ZtX2VuYWJsZV9lZmVyX2JpdHModTY0IG1hc2spXG4te1xuLSAgICAgICBlZmVyX3Jlc2VydmVkX2JpdHMgXHUwMDI2PSB+bWFzaztcbi19XG4tRVhQT1JUX1NZTUJPTF9GT1JfS1ZNX0lOVEVSTkFMKGt2bV9lbmFibGVfZWZlcl9iaXRzKTtcbi1cbiBib29sIGt2bV9tc3JfYWxsb3dlZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBpbmRleCwgdTMyIHR5cGUpXG4ge1xuIFx0c3RydWN0IGt2bV94ODZfbXNyX2ZpbHRlciAqbXNyX2ZpbHRlcjtcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vbXNycy5oIGIvYXJjaC94ODYva3ZtL21zcnMuaFxuaW5kZXggOWM1YzZiMzNlNThmNTcuLjdjYzE4MmExNWIzYjNlIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL21zcnMuaFxuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYva3ZtL21zcnMuaFxuQEAgLTU4LDcgJiM0Mzs1OCw2IEBAIGludCBrdm1fZ2V0X3NldF9vbmVfcmVnKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgaW50IGlvY3RsLFxuIGludCBrdm1fZ2V0X3JlZ19saXN0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbiBcdFx0ICAgICBzdHJ1Y3Qga3ZtX3JlZ19saXN0IF9fdXNlciAqdXNlcl9saXN0KTtcbiBcbi12b2lkIGt2bV9lbmFibGVfZWZlcl9iaXRzKHU2NCk7XG4gYm9vbCBrdm1fdmFsaWRfZWZlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBlZmVyKTtcbiBpbnQga3ZtX2VtdWxhdGVfbXNyX3JlYWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgaW5kZXgsIHU2NCAqZGF0YSk7XG4gaW50IGt2bV9lbXVsYXRlX21zcl93cml0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBpbmRleCwgdTY0IGRhdGEpO1xuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmMgYi9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jXG5pbmRleCA5MTI4NmQ0NmQxM2FkYi4uMDk3OTlmZDhlZjM4ZjUgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jXG5AQCAtNTYyOCwxMCAmIzQzOzU2MjgsNiBAQCBzdGF0aWMgX19pbml0IGludCBzdm1faGFyZHdhcmVfc2V0dXAodm9pZClcbiBcbiBcdGlmIChuZXN0ZWQpIHtcbiBcdFx0cHJfaW5mbyhcJiMzNDtOZXN0ZWQgVmlydHVhbGl6YXRpb24gZW5hYmxlZFxcblwmIzM0Oyk7XG4tXHRcdGt2bV9lbmFibGVfZWZlcl9iaXRzKEVGRVJfU1ZNRSk7XG4tXHRcdGlmICghYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX0VGRVJfTE1TTEVfTUJaKSlcbi1cdFx0XHRrdm1fZW5hYmxlX2VmZXJfYml0cyhFRkVSX0xNU0xFKTtcbi1cbiBcdFx0ciA9IG5lc3RlZF9zdm1faW5pdF9tc3JwbV9tZXJnZV9vZmZzZXRzKCk7XG4gXHRcdGlmIChyKVxuIFx0XHRcdHJldHVybiByO1xuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS94ODYuYyBiL2FyY2gveDg2L2t2bS94ODYuY1xuaW5kZXggMWY1ZGM2ODVmMDQ5MGQuLmEwMjBiMWNiYjNmM2U4IDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL3g4Ni5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0veDg2LmNcbkBAIC02OTEzLDE0ICYjNDM7NjkxMywyNiBAQCBFWFBPUlRfU1lNQk9MX0ZPUl9LVk1fSU5URVJOQUwoa3ZtX3NldHVwX3hzc19jYXBzKTtcbiBcbiBzdGF0aWMgdm9pZCBrdm1fc2V0dXBfZWZlcl9jYXBzKHZvaWQpXG4ge1xuJiM0MztcdC8qIEVuYWJsZSBzeXNjYWxsIGJ5IGRlZmF1bHQgYmVjYXVzZSBpdHMgZW11bGF0ZWQgYnkgS1ZNICovXG4mIzQzO1x0a3ZtX2NhcHMuc3VwcG9ydGVkX2VmZXJfYml0cyA9ICh1NjQpRUZFUl9TQ0U7XG4mIzQzO1xuJiM0MztcdGlmIChrdm1fY3B1X2NhcF9oYXMoWDg2X0ZFQVRVUkVfTE0pKVxuJiM0MztcdFx0a3ZtX2NhcHMuc3VwcG9ydGVkX2VmZXJfYml0cyB8PSAoRUZFUl9MTUUgfCBFRkVSX0xNQSk7XG4mIzQzO1xuIFx0aWYgKGt2bV9jcHVfY2FwX2hhcyhYODZfRkVBVFVSRV9OWCkpXG4tXHRcdGt2bV9lbmFibGVfZWZlcl9iaXRzKEVGRVJfTlgpO1xuJiM0MztcdFx0a3ZtX2NhcHMuc3VwcG9ydGVkX2VmZXJfYml0cyB8PSBFRkVSX05YO1xuIFxuIFx0aWYgKGt2bV9jcHVfY2FwX2hhcyhYODZfRkVBVFVSRV9GWFNSX09QVCkpXG4tXHRcdGt2bV9lbmFibGVfZWZlcl9iaXRzKEVGRVJfRkZYU1IpO1xuJiM0MztcdFx0a3ZtX2NhcHMuc3VwcG9ydGVkX2VmZXJfYml0cyB8PSBFRkVSX0ZGWFNSO1xuIFxuIFx0aWYgKGt2bV9jcHVfY2FwX2hhcyhYODZfRkVBVFVSRV9BVVRPSUJSUykpXG4tXHRcdGt2bV9lbmFibGVfZWZlcl9iaXRzKEVGRVJfQVVUT0lCUlMpO1xuJiM0MztcdFx0a3ZtX2NhcHMuc3VwcG9ydGVkX2VmZXJfYml0cyB8PSBFRkVSX0FVVE9JQlJTO1xuJiM0MztcbiYjNDM7XHRpZiAoa3ZtX2NwdV9jYXBfaGFzKFg4Nl9GRUFUVVJFX1NWTSkpIHtcbiYjNDM7XHRcdGt2bV9jYXBzLnN1cHBvcnRlZF9lZmVyX2JpdHMgfD0gRUZFUl9TVk1FO1xuJiM0MztcdFx0aWYgKCFib290X2NwdV9oYXMoWDg2X0ZFQVRVUkVfRUZFUl9MTVNMRV9NQlopKVxuJiM0MztcdFx0XHRrdm1fY2Fwcy5zdXBwb3J0ZWRfZWZlcl9iaXRzIHw9IEVGRVJfTE1TTEU7XG4mIzQzO1x0fVxuIH1cbiBcbiBzdGF0aWMgdm9pZCBrdm1fbmVzdGVkX29wc191cGRhdGUoY29uc3Qgc3RydWN0IGt2bV94ODZfbmVzdGVkX29wcyAqbmVzdGVkX29wcylcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwMDo0MzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OywKICAgICYjMzQ7S1ZNX0FNRCYjMzQ7LAogICAgJiMzNDtLVk1fSU5URUwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1fdmFsaWRfZWZlciYjMzQ7LAogICAgJiMzNDtzZXRfZWZlciYjMzQ7LAogICAgJiMzNDtrdm1fc2V0dXBfZWZlcl9jYXBzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGhvdyBLVk0gdmFsaWRhdGVzIGFuZCBzZXRzIHRoZSBFRkVSIE1TUiBieSByZXBsYWNpbmcgYGVmZXJfcmVzZXJ2ZWRfYml0c2Agd2l0aCBga3ZtX2NhcHMuc3VwcG9ydGVkX2VmZXJfYml0c2AuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIEtWTSBsb2dpYyB0aGF0IGFmZmVjdHMgZ3Vlc3QgZXhlY3V0aW9uIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA0MjJlMzIwNmRmZjg1MjVjNzVmYWRjY2JiOWNlNGU5YzEyOWY5YTcyCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBKdWwgMTQgMDA6NDM6NTMgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaAppbmRleCA1OGYxNTZhZTMxZTc1MC4uODBiOTJlZDQ0MGZhMTggMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaApAQCAtMjc0LDYgJiM0MzsyNzQsOCBAQCBzdHJ1Y3Qga3ZtX2NhcHMgewogCXU2NCBzdXBwb3J0ZWRfeHNzOwogCXU2NCBzdXBwb3J0ZWRfcGVyZl9jYXA7CiAKJiM0MzsJdTY0IHN1cHBvcnRlZF9lZmVyX2JpdHM7CiYjNDM7CiAJdTY0IHN1cHBvcnRlZF9xdWlya3M7CiAJdTY0IGluYXBwbGljYWJsZV9xdWlya3M7CiB9OwpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL21zcnMuYyBiL2FyY2gveDg2L2t2bS9tc3JzLmMKaW5kZXggYzIzMGIxOGQ4N2UzOGUuLjY2ZmE3MTQwZDY1ZDliIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rdm0vbXNycy5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS9tc3JzLmMKQEAgLTE5LDE3ICYjNDM7MTksNiBAQCBib29sIF9fcmVhZF9tb3N0bHkgcmVwb3J0X2lnbm9yZWRfbXNycyA9IHRydWU7CiBtb2R1bGVfcGFyYW0ocmVwb3J0X2lnbm9yZWRfbXNycywgYm9vbCwgMDY0NCk7CiBFWFBPUlRfU1lNQk9MX0ZPUl9LVk1fSU5URVJOQUwocmVwb3J0X2lnbm9yZWRfbXNycyk7CiAKLS8qIEVGRVIgZGVmYXVsdHM6Ci0gKiAtIGVuYWJsZSBzeXNjYWxsIHBlciBkZWZhdWx0IGJlY2F1c2UgaXRzIGVtdWxhdGVkIGJ5IEtWTQotICogLSBlbmFibGUgTE1FIGFuZCBMTUEgcGVyIGRlZmF1bHQgb24gNjQgYml0IEtWTQotICovCi0jaWZkZWYgQ09ORklHX1g4Nl82NAotc3RhdGljCi11NjQgX19yZWFkX21vc3RseSBlZmVyX3Jlc2VydmVkX2JpdHMgPSB+KCh1NjQpKEVGRVJfU0NFIHwgRUZFUl9MTUUgfCBFRkVSX0xNQSkpOwotI2Vsc2UKLXN0YXRpYyB1NjQgX19yZWFkX21vc3RseSBlZmVyX3Jlc2VydmVkX2JpdHMgPSB+KCh1NjQpRUZFUl9TQ0UpOwotI2VuZGlmCi0KICNkZWZpbmUgTUFYX0lPX01TUlMgMjU2CiAKIHN0cnVjdCBtc3JfYml0bWFwX3JhbmdlIHsKQEAgLTYxNCw3ICYjNDM7NjAzLDcgQEAgc3RhdGljIGJvb2wgX19rdm1fdmFsaWRfZWZlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBlZmVyKQogfQogYm9vbCBrdm1fdmFsaWRfZWZlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBlZmVyKQogewotCWlmIChlZmVyICZhbXA7IGVmZXJfcmVzZXJ2ZWRfYml0cykKJiM0MzsJaWYgKGVmZXIgJmFtcDsgfmt2bV9jYXBzLnN1cHBvcnRlZF9lZmVyX2JpdHMpCiAJCXJldHVybiBmYWxzZTsKIAogCXJldHVybiBfX2t2bV92YWxpZF9lZmVyKHZjcHUsIGVmZXIpOwpAQCAtNjI3LDcgJiM0Mzs2MTYsNyBAQCBzdGF0aWMgaW50IHNldF9lZmVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IG1zcl9kYXRhICptc3JfaW5mbykKIAl1NjQgZWZlciA9IG1zcl9pbmZvLSZndDtkYXRhOwogCWludCByOwogCi0JaWYgKGVmZXIgJmFtcDsgZWZlcl9yZXNlcnZlZF9iaXRzKQomIzQzOwlpZiAoZWZlciAmYW1wOyB+a3ZtX2NhcHMuc3VwcG9ydGVkX2VmZXJfYml0cykKIAkJcmV0dXJuIDE7CiAKIAlpZiAoIW1zcl9pbmZvLSZndDtob3N0X2luaXRpYXRlZCkgewpAQCAtNjU4LDEyICYjNDM7NjQ3LDYgQEAgc3RhdGljIGludCBzZXRfZWZlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBtc3JfZGF0YSAqbXNyX2luZm8pCiAJcmV0dXJuIDA7CiB9CiAKLXZvaWQga3ZtX2VuYWJsZV9lZmVyX2JpdHModTY0IG1hc2spCi17Ci0gICAgICAgZWZlcl9yZXNlcnZlZF9iaXRzICZhbXA7PSB+bWFzazsKLX0KLUVYUE9SVF9TWU1CT0xfRk9SX0tWTV9JTlRFUk5BTChrdm1fZW5hYmxlX2VmZXJfYml0cyk7Ci0KIGJvb2wga3ZtX21zcl9hbGxvd2VkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTMyIGluZGV4LCB1MzIgdHlwZSkKIHsKIAlzdHJ1Y3Qga3ZtX3g4Nl9tc3JfZmlsdGVyICptc3JfZmlsdGVyOwpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL21zcnMuaCBiL2FyY2gveDg2L2t2bS9tc3JzLmgKaW5kZXggOWM1YzZiMzNlNThmNTcuLjdjYzE4MmExNWIzYjNlIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rdm0vbXNycy5oCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS9tc3JzLmgKQEAgLTU4LDcgJiM0Mzs1OCw2IEBAIGludCBrdm1fZ2V0X3NldF9vbmVfcmVnKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgaW50IGlvY3RsLAogaW50IGt2bV9nZXRfcmVnX2xpc3Qoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LAogCQkgICAgIHN0cnVjdCBrdm1fcmVnX2xpc3QgX191c2VyICp1c2VyX2xpc3QpOwogCi12b2lkIGt2bV9lbmFibGVfZWZlcl9iaXRzKHU2NCk7CiBib29sIGt2bV92YWxpZF9lZmVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGVmZXIpOwogaW50IGt2bV9lbXVsYXRlX21zcl9yZWFkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTMyIGluZGV4LCB1NjQgKmRhdGEpOwogaW50IGt2bV9lbXVsYXRlX21zcl93cml0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBpbmRleCwgdTY0IGRhdGEpOwpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3N2bS9zdm0uYyBiL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmMKaW5kZXggOTEyODZkNDZkMTNhZGIuLjA5Nzk5ZmQ4ZWYzOGY1IDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmMKQEAgLTU2MjgsMTAgJiM0Mzs1NjI4LDYgQEAgc3RhdGljIF9faW5pdCBpbnQgc3ZtX2hhcmR3YXJlX3NldHVwKHZvaWQpCiAKIAlpZiAobmVzdGVkKSB7CiAJCXByX2luZm8oJiMzNDtOZXN0ZWQgVmlydHVhbGl6YXRpb24gZW5hYmxlZFxuJiMzNDspOwotCQlrdm1fZW5hYmxlX2VmZXJfYml0cyhFRkVSX1NWTUUpOwotCQlpZiAoIWJvb3RfY3B1X2hhcyhYODZfRkVBVFVSRV9FRkVSX0xNU0xFX01CWikpCi0JCQlrdm1fZW5hYmxlX2VmZXJfYml0cyhFRkVSX0xNU0xFKTsKLQogCQlyID0gbmVzdGVkX3N2bV9pbml0X21zcnBtX21lcmdlX29mZnNldHMoKTsKIAkJaWYgKHIpCiAJCQlyZXR1cm4gcjsKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS94ODYuYyBiL2FyY2gveDg2L2t2bS94ODYuYwppbmRleCAxZjVkYzY4NWYwNDkwZC4uYTAyMGIxY2JiM2YzZTggMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS94ODYuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0veDg2LmMKQEAgLTY5MTMsMTQgJiM0Mzs2OTEzLDI2IEBAIEVYUE9SVF9TWU1CT0xfRk9SX0tWTV9JTlRFUk5BTChrdm1fc2V0dXBfeHNzX2NhcHMpOwogCiBzdGF0aWMgdm9pZCBrdm1fc2V0dXBfZWZlcl9jYXBzKHZvaWQpCiB7CiYjNDM7CS8qIEVuYWJsZSBzeXNjYWxsIGJ5IGRlZmF1bHQgYmVjYXVzZSBpdHMgZW11bGF0ZWQgYnkgS1ZNICovCiYjNDM7CWt2bV9jYXBzLnN1cHBvcnRlZF9lZmVyX2JpdHMgPSAodTY0KUVGRVJfU0NFOwomIzQzOwomIzQzOwlpZiAoa3ZtX2NwdV9jYXBfaGFzKFg4Nl9GRUFUVVJFX0xNKSkKJiM0MzsJCWt2bV9jYXBzLnN1cHBvcnRlZF9lZmVyX2JpdHMgfD0gKEVGRVJfTE1FIHwgRUZFUl9MTUEpOwomIzQzOwogCWlmIChrdm1fY3B1X2NhcF9oYXMoWDg2X0ZFQVRVUkVfTlgpKQotCQlrdm1fZW5hYmxlX2VmZXJfYml0cyhFRkVSX05YKTsKJiM0MzsJCWt2bV9jYXBzLnN1cHBvcnRlZF9lZmVyX2JpdHMgfD0gRUZFUl9OWDsKIAogCWlmIChrdm1fY3B1X2NhcF9oYXMoWDg2X0ZFQVRVUkVfRlhTUl9PUFQpKQotCQlrdm1fZW5hYmxlX2VmZXJfYml0cyhFRkVSX0ZGWFNSKTsKJiM0MzsJCWt2bV9jYXBzLnN1cHBvcnRlZF9lZmVyX2JpdHMgfD0gRUZFUl9GRlhTUjsKIAogCWlmIChrdm1fY3B1X2NhcF9oYXMoWDg2X0ZFQVRVUkVfQVVUT0lCUlMpKQotCQlrdm1fZW5hYmxlX2VmZXJfYml0cyhFRkVSX0FVVE9JQlJTKTsKJiM0MzsJCWt2bV9jYXBzLnN1cHBvcnRlZF9lZmVyX2JpdHMgfD0gRUZFUl9BVVRPSUJSUzsKJiM0MzsKJiM0MzsJaWYgKGt2bV9jcHVfY2FwX2hhcyhYODZfRkVBVFVSRV9TVk0pKSB7CiYjNDM7CQlrdm1fY2Fwcy5zdXBwb3J0ZWRfZWZlcl9iaXRzIHw9IEVGRVJfU1ZNRTsKJiM0MzsJCWlmICghYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX0VGRVJfTE1TTEVfTUJaKSkKJiM0MzsJCQlrdm1fY2Fwcy5zdXBwb3J0ZWRfZWZlcl9iaXRzIHw9IEVGRVJfTE1TTEU7CiYjNDM7CX0KIH0KIAogc3RhdGljIHZvaWQga3ZtX25lc3RlZF9vcHNfdXBkYXRlKGNvbnN0IHN0cnVjdCBrdm1feDg2X25lc3RlZF9vcHMgKm5lc3RlZF9vcHMpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDAwOjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3MzUKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAzMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBLVk0gRUZFUiBCaXQgSGFuZGxpbmcgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHg4NiBLVk0uIEl0JiMzOTtzIGFuIGludGVyZXN0aW5nIG9uZSDigJMgc2VlbXMgbGlrZSB0aGV5JiMzOTtyZSBzdHJlYW1saW5pbmcgaG93IEVGRVIgYml0cyBhcmUgaGFuZGxlZC4gU3BlY2lmaWNhbGx5LCB0aGV5JiMzOTt2ZSBkaXRjaGVkIHRoZSBvbGQgYGVmZXJfcmVzZXJ2ZWRfYml0c2AgYW5kIGBrdm1fZW5hYmxlX2VmZXJfYml0c2AgY29uc3RydWN0cy4gVGhleSYjMzk7dmUgcmVwbGFjZWQgdGhlbSB3aXRoIGEgc2luZ2xlIGBrdm1fY2Fwcy5zdXBwb3J0ZWRfZWZlcl9iaXRzYCB2YXJpYWJsZSwgYW5kIHRoZXkmIzM5O3ZlIGNvbnNvbGlkYXRlZCB0aGUgaW5pdGlhbGl6YXRpb24gb2YgRUZFUiBjYXBhYmlsaXRpZXMgd2l0aGluIGBrdm1fc2V0dXBfZWZlcl9jYXBzYCwgbW92aW5nIGl0IGZyb20gaXRzIHByZXZpb3VzIGxvY2F0aW9ucyBpbiBgc3ZtX2hhcmR3YXJlX3NldHVwYCBhbmQgYGt2bV9zZXR1cF9lZmVyX2NhcHNgLgoKRnVuY3Rpb25hbGx5LCB0aGlzIGRlZmluaXRlbHkgYWx0ZXJzIGhvdyB3ZSB2YWxpZGF0ZSBFRkVSIGJpdHMsIHdoaWNoIGlzIHNvbWV0aGluZyBJIG5lZWQgdG8gZnVsbHkgdW5kZXJzdGFuZC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBpcyBhIGNvcmUgS1ZNIGNoYW5nZSwgc28gcmVhY2hhYmlsaXR5IHNob3VsZG4mIzM5O3QgYmUgYW4gaXNzdWUuIEtWTSBpcyBmdW5kYW1lbnRhbCB0byB2aXJ0dWFsaXphdGlvbiBvbiB4ODYuIFRoaXMgYWxzbyBtZWFucyB0aGlzIG5lZWRzIHNvbWUgc2VyaW91cyBmdXp6aW5nLgoKTXkgaW1tZWRpYXRlIG5leHQgc3RlcHMgYXJlIHRvIG5haWwgZG93biB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBUaGUga2V5IGZpbGVzIGFwcGVhciB0byBiZSBgYXJjaC94ODYva3ZtL3g4Ni5jYCwgYGFyY2gveDg2L2t2bS9tc3JzLmNgLCBhbmQgYGFyY2gveDg2L2t2bS9zdm0vc3ZtLmNgLCBzbyBpdCYjMzk7cyBhbGwgeDg2IEtWTS4gVGhpcyBtZWFucyBteSBmb2N1cyB3aWxsIGJlIG9uIGBLVk1gLCBgS1ZNX0FNRGAsIGFuZCBgS1ZNX0lOVEVMYCBjb25maWd1cmF0aW9ucy4KCk5vdywgdG8gcHJlcGFyZSBmb3IgZnV6emluZywgSSBuZWVkIHRvIGlkZW50aWZ5IHRoZSBrZXkgZnVuY3Rpb25zIGludm9sdmVkLiBUaGUgZnVuY3Rpb25zIHRoYXQgYXJlIG1vc3QgbGlrZWx5IHRvIGJlIGFmZmVjdGVkIGJ5IHRoaXMgY2hhbmdlLCBhbmQgaGVuY2UgbXkgZnV6emluZyB0YXJnZXRzIGFyZTogYGt2bV92YWxpZF9lZmVyYCwgYHNldF9lZmVyYCwgYW5kIGBrdm1fc2V0dXBfZWZlcl9jYXBzYC4KCkZpbmFsbHksIHRvIGdldCBhIGJldHRlciBoYW5kbGUgb24gaG93IHRvIHRyaWdnZXIgdGhlc2UgZnVuY3Rpb25zLCBJJiMzOTtsbCB1c2UgYGdyZXBwZXJgIHRvIHNlZSB3aGVyZSBga3ZtX3NldHVwX2VmZXJfY2Fwc2AgaXMgYWN0dWFsbHkgY2FsbGVkIHdpdGhpbiB0aGUgY29kZWJhc2UuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGZvciBjb25zdHJ1Y3RpbmcgZWZmZWN0aXZlIGZ1enppbmcgaGFybmVzc2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDAwOjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9zZXR1cF9lZmVyX2NhcHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS94ODYuYz02OTEyPUVYUE9SVF9TWU1CT0xfRk9SX0tWTV9JTlRFUk5BTChrdm1fc2V0dXBfeHNzX2NhcHMpO1xuYXJjaC94ODYva3ZtL3g4Ni5jLTY5MTMtXG5hcmNoL3g4Ni9rdm0veDg2LmM6NjkxNDpzdGF0aWMgdm9pZCBrdm1fc2V0dXBfZWZlcl9jYXBzKHZvaWQpXG5hcmNoL3g4Ni9rdm0veDg2LmMtNjkxNS17XG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jPTY5OTk9aW50IGt2bV94ODZfdmVuZG9yX2luaXQoc3RydWN0IGt2bV94ODZfaW5pdF9vcHMgKm9wcylcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtNzA5MS1cbmFyY2gveDg2L2t2bS94ODYuYzo3MDkyOlx0a3ZtX3NldHVwX2VmZXJfY2FwcygpO1xuYXJjaC94ODYva3ZtL3g4Ni5jLTcwOTMtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDA6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDgwMgoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDU2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246CgoqKkludmVzdGlnYXRpbmcgdGhlIEVGRVIgQ29uZmlndXJhdGlvbiBpbiBLVk0qKgoKT2theSwgc28gYGt2bV9zZXR1cF9lZmVyX2NhcHNgIGlzIGRlZmluaXRlbHkgY2FsbGVkIGR1cmluZyB0aGUgaW5pdGlhbGl6YXRpb24gcGhhc2UsIHNwZWNpZmljYWxseSB3aXRoaW4gYGt2bV94ODZfdmVuZG9yX2luaXRgLiBUaGF0JiMzOTtzIHRoZSBzdGFydGluZyBwb2ludC4gTXkgcHJpbWFyeSBjb25jZXJuIGlzIGhvdyB0aGUgRXh0ZW5kZWQgRmVhdHVyZSBFbmFibGUgUmVnaXN0ZXIgKEVGRVIpIGdldHMgc2V0LCBzcGVjaWZpY2FsbHkgdGhlIG1lY2hhbmljcyBvZiBob3cgdGhlIGBzZXRfZWZlcmAgZnVuY3Rpb24gaXMgdHJpZ2dlcmVkLiBNeSBpbnN0aW5jdCwgYW5kIGJhc2VkIG9uIGV4cGVyaWVuY2UgSSBzdXNwZWN0IGl0IGdldHMgc2V0IGluIHRoZSBlbXVsYXRpb24gcGF0aC4gSSBuZWVkIHRvIHZlcmlmeSB3aGV0aGVyIHRoZSBgc2V0X2VmZXJgIGZ1bmN0aW9uIGlzIGNhbGxlZCBkaXJlY3RseSBmcm9tIHRoZSBlbXVsYXRpb24gb2YgTVNSIHdyaXRlcywgcGVyaGFwcyB3aXRoaW4gYGt2bV9lbXVsYXRlX21zcl93cml0ZWAgb3IgYSBzaW1pbGFyIGVtdWxhdGlvbiBmdW5jdGlvbi4gSSBuZWVkIHRvIGNvbmZpcm0gdGhpcyBhc3N1bXB0aW9uLiBMZXQgbWUgc3RhcnQgZGlnZ2luZyBpbnRvIHRoYXQgY29kZSBwYXRoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDAwOjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NldF9lZmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vbXNycy5jPTYxMT1FWFBPUlRfU1lNQk9MX0ZPUl9LVk1fSU5URVJOQUwoa3ZtX3ZhbGlkX2VmZXIpO1xuYXJjaC94ODYva3ZtL21zcnMuYy02MTItXG5hcmNoL3g4Ni9rdm0vbXNycy5jOjYxMzpzdGF0aWMgaW50IHNldF9lZmVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IG1zcl9kYXRhICptc3JfaW5mbylcbmFyY2gveDg2L2t2bS9tc3JzLmMtNjE0LXtcbi0tXG5hcmNoL3g4Ni9rdm0vbXNycy5jLTYzMy1cbmFyY2gveDg2L2t2bS9tc3JzLmM6NjM0Olx0ciA9IGt2bV94ODZfY2FsbChzZXRfZWZlcikodmNwdSwgZWZlcik7XG5hcmNoL3g4Ni9rdm0vbXNycy5jLTYzNS1cdGlmIChyKSB7XG4tLVxuYXJjaC94ODYva3ZtL21zcnMuYz0xNDQyPWludCBrdm1fc2V0X21zcl9jb21tb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3QgbXNyX2RhdGEgKm1zcl9pbmZvKVxuLS1cbmFyY2gveDg2L2t2bS9tc3JzLmMtMTUzOS1cdGNhc2UgTVNSX0VGRVI6XG5hcmNoL3g4Ni9rdm0vbXNycy5jOjE1NDA6XHRcdHJldHVybiBzZXRfZWZlcih2Y3B1LCBtc3JfaW5mbyk7XG5hcmNoL3g4Ni9rdm0vbXNycy5jLTE1NDEtXHRjYXNlIE1TUl9LN19IV0NSOiB7XG4tLVxuYXJjaC94ODYva3ZtL3JlZ3MuYz01NzA9c3RhdGljIGludCBfX3NldF9zcmVnc19jb21tb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncyxcbi0tXG5hcmNoL3g4Ni9rdm0vcmVncy5jLTU5OC1cdCptbXVfcmVzZXRfbmVlZGVkIHw9IHZjcHUtXHUwMDNlYXJjaC5lZmVyICE9IHNyZWdzLVx1MDAzZWVmZXI7XG5hcmNoL3g4Ni9rdm0vcmVncy5jOjU5OTpcdGt2bV94ODZfY2FsbChzZXRfZWZlcikodmNwdSwgc3JlZ3MtXHUwMDNlZWZlcik7XG5hcmNoL3g4Ni9rdm0vcmVncy5jLTYwMC1cbi0tXG5hcmNoL3g4Ni9rdm0vc21tLmM9Mjc5PXZvaWQgZW50ZXJfc21tKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3g4Ni9rdm0vc21tLmMtMzYxLVx0aWYgKGd1ZXN0X2NwdV9jYXBfaGFzKHZjcHUsIFg4Nl9GRUFUVVJFX0xNKSlcbmFyY2gveDg2L2t2bS9zbW0uYzozNjI6XHRcdGlmIChrdm1feDg2X2NhbGwoc2V0X2VmZXIpKHZjcHUsIDApKVxuYXJjaC94ODYva3ZtL3NtbS5jLTM2My1cdFx0XHRnb3RvIGVycm9yO1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM9NzQ0PXN0YXRpYyB2b2lkIG5lc3RlZF92bWNiMDJfcHJlcGFyZV9zYXZlKHN0cnVjdCB2Y3B1X3N2bSAqc3ZtKVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtNzkxLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzo3OTI6XHRzdm1fc2V0X2VmZXIodmNwdSwgc3ZtLVx1MDAzZW5lc3RlZC5zYXZlLmVmZXIpO1xuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy03OTMtXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYz0xMzIxPXZvaWQgbmVzdGVkX3N2bV92bWV4aXQoc3RydWN0IHZjcHVfc3ZtICpzdm0pXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xNDI2LVx0a3ZtX3NldF9yZmxhZ3ModmNwdSwgdm1jYjAxLVx1MDAzZXNhdmUucmZsYWdzKTtcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTQyNzpcdHN2bV9zZXRfZWZlcih2Y3B1LCB2bWNiMDEtXHUwMDNlc2F2ZS5lZmVyKTtcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTQyOC1cdHN2bV9zZXRfY3IwKHZjcHUsIHZtY2IwMS1cdTAwM2VzYXZlLmNyMCB8IFg4Nl9DUjBfUEUpO1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM9MjAxPXN0YXRpYyBpbnQgZ2V0X25wdF9sZXZlbCh2b2lkKVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtMjA5LVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYzoyMTA6aW50IHN2bV9zZXRfZWZlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBlZmVyKVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy0yMTEte1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM9MjczMj1zdGF0aWMgaW50IGVmZXJfdHJhcChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy0yNzM4LVx0ICogQ2xlYXIgdGhlIEVGRVJfU1ZNRSBiaXQgZnJvbSBFRkVSLiBUaGUgU1ZNIGNvZGUgYWx3YXlzIHNldHMgdGhpc1xuYXJjaC94ODYva3ZtL3N2bS9zdm0uYzoyNzM5Olx0ICogYml0IGluIHN2bV9zZXRfZWZlcigpLCBidXQgX19rdm1fdmFsaWRfZWZlcigpIGNoZWNrcyBpdCBhZ2FpbnN0XG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTI3NDAtXHQgKiB3aGV0aGVyIHRoZSBndWVzdCBoYXMgWDg2X0ZFQVRVUkVfU1ZNIC0gdGhpcyBhdm9pZHMgYSBmYWlsdXJlIGlmXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYz01MzE0PXN0cnVjdCBrdm1feDg2X29wcyBzdm1feDg2X29wcyBfX2luaXRkYXRhID0ge1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNTM1NS1cdC5zZXRfY3I0ID0gc3ZtX3NldF9jcjQsXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jOjUzNTY6XHQuc2V0X2VmZXIgPSBzdm1fc2V0X2VmZXIsXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTUzNTctXHQuZ2V0X2lkdCA9IHN2bV9nZXRfaWR0LFxuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmg9ODEwPXZvaWQgc3ZtX3VwZGF0ZV9sYnJ2KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oLTgxMS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmg6ODEyOmludCBzdm1fc2V0X2VmZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgZWZlcik7XG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oLTgxMy12b2lkIHN2bV9zZXRfY3IwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgbG9uZyBjcjApO1xuLS1cbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jPTQxMz1zdGF0aWMgdm9pZCB2dF9zZXRfY3I0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgbG9uZyBjcjQpXG4tLVxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmMtNDIwLVxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmM6NDIxOnN0YXRpYyBpbnQgdnRfc2V0X2VmZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgZWZlcilcbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jLTQyMi17XG4tLVxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmMtNDI1LVxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmM6NDI2Olx0cmV0dXJuIHZteF9zZXRfZWZlcih2Y3B1LCBlZmVyKTtcbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jLTQyNy19XG4tLVxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmM9ODgwPXN0cnVjdCBrdm1feDg2X29wcyB2dF94ODZfb3BzIF9faW5pdGRhdGEgPSB7XG4tLVxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmMtOTI0LVx0LnNldF9jcjQgPSB2dF9vcChzZXRfY3I0KSxcbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jOjkyNTpcdC5zZXRfZWZlciA9IHZ0X29wKHNldF9lZmVyKSxcbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jLTkyNi1cdC5nZXRfaWR0ID0gdnRfb3AoZ2V0X2lkdCksXG4tLVxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYz0yNDI2PXN0YXRpYyB2b2lkIHByZXBhcmVfdm1jczAyX2Vhcmx5KHN0cnVjdCB2Y3B1X3ZteCAqdm14LCBzdHJ1Y3QgbG9hZGVkX3ZtY3MgKnZtY3MwMSxcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jLTI1MzktXHQgKiB2bWNzMTImIzM5O3MgVk1fe0VOVFJZLEVYSVR9X0xPQURfSUEzMl9FRkVSIGFuZCBWTV9FTlRSWV9JQTMyRV9NT0RFXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jOjI1NDA6XHQgKiBhcmUgZW11bGF0ZWQgYnkgdm14X3NldF9lZmVyKCkgaW4gcHJlcGFyZV92bWNzMDIoKSwgYnV0IHNwZWN1bGF0ZVxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy0yNTQxLVx0ICogb24gdGhlIHJlbGF0ZWQgYml0cyAoaWYgc3VwcG9ydGVkIGJ5IHRoZSBDUFUpIGluIHRoZSBob3BlIHRoYXRcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmM6MjU0MjpcdCAqIHdlIGNhbiBhdm9pZCBWTVdyaXRlcyBkdXJpbmcgdm14X3NldF9lZmVyKCkuXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jLTI1NDMtXHQgKlxuLS1cbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmMtMjU2NC1cdCAqIHdlIHNob3VsZCB1c2UgaXRzIGV4aXQgY29udHJvbHMuIE5vdGUgdGhhdCBWTV9FWElUX0xPQURfSUEzMl9FRkVSXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jOjI1NjU6XHQgKiBiaXRzIG1heSBiZSBtb2RpZmllZCBieSB2bXhfc2V0X2VmZXIoKSBpbiBwcmVwYXJlX3ZtY3MwMigpLlxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy0yNTY2LVx0ICovXG4tLVxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYz0yNzU1PXN0YXRpYyBpbnQgcHJlcGFyZV92bWNzMDIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qgdm1jczEyICp2bWNzMTIsXG4tLVxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy0yODM4LVx0LyogTm90ZTogbWF5IG1vZGlmeSBWTV9FTlRSWS9FWElUX0NPTlRST0xTIGFuZCBHVUVTVC9IT1NUX0lBMzJfRUZFUiAqL1xuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYzoyODM5Olx0dm14X3NldF9lZmVyKHZjcHUsIHZjcHUtXHUwMDNlYXJjaC5lZmVyKTtcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmMtMjg0MC1cbi0tXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jPTQ3ODM9c3RhdGljIHZvaWQgbG9hZF92bWNzMTJfaG9zdF9zdGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4tLVxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy00Nzk0LVx0XHR2Y3B1LVx1MDAzZWFyY2guZWZlciBcdTAwMjY9IH4oRUZFUl9MTUEgfCBFRkVSX0xNRSk7XG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jOjQ3OTU6XHR2bXhfc2V0X2VmZXIodmNwdSwgdmNwdS1cdTAwM2VhcmNoLmVmZXIpO1xuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy00Nzk2LVxuLS1cbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmM9NDk0Mz1zdGF0aWMgdm9pZCBuZXN0ZWRfdm14X3Jlc3RvcmVfaG9zdF9zdGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy00OTcyLVx0ICovXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jOjQ5NzM6XHR2bXhfc2V0X2VmZXIodmNwdSwgbmVzdGVkX3ZteF9nZXRfdm1jczAxX2d1ZXN0X2VmZXIodm14KSk7XG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jLTQ5NzQtXG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYz0zMjAxPXN0YXRpYyB2b2lkIGVudGVyX3Jtb2RlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTMyNDgtXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjMyNDk6aW50IHZteF9zZXRfZWZlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBlZmVyKVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy0zMjUwLXtcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTMyNzQ9c3RhdGljIHZvaWQgZW50ZXJfbG1vZGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMzI4Ny1cdH1cbmFyY2gveDg2L2t2bS92bXgvdm14LmM6MzI4ODpcdHZteF9zZXRfZWZlcih2Y3B1LCB2Y3B1LVx1MDAzZWFyY2guZWZlciB8IEVGRVJfTE1BKTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMzI4OS19XG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYz0zMjkxPXN0YXRpYyB2b2lkIGV4aXRfbG1vZGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy0zMjkyLXtcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6MzI5MzpcdHZteF9zZXRfZWZlcih2Y3B1LCB2Y3B1LVx1MDAzZWFyY2guZWZlciBcdTAwMjYgfkVGRVJfTE1BKTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMzI5NC19XG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguaD0zNTc9dm9pZCB2bXhfc2V0X2ludGVycnVwdF9zaGFkb3coc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBpbnQgbWFzayk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5oOjM1ODppbnQgdm14X3NldF9lZmVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGVmZXIpO1xuYXJjaC94ODYva3ZtL3ZteC92bXguaC0zNTktdm9pZCB2bXhfc2V0X2NyMChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGxvbmcgY3IwKTtcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3g4Nl9vcHMuaD03MT1ib29sIHZteF9pc192YWxpZF9jcjQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBsb25nIGNyNCk7XG5hcmNoL3g4Ni9rdm0vdm14L3g4Nl9vcHMuaDo3MjppbnQgdm14X3NldF9lZmVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGVmZXIpO1xuYXJjaC94ODYva3ZtL3ZteC94ODZfb3BzLmgtNzMtdm9pZCB2bXhfZ2V0X2lkdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBkZXNjX3B0ciAqZHQpO1xuLS1cbmFyY2gveDg2L2t2bS94ODYuYz05NTE5PXZvaWQga3ZtX3ZjcHVfcmVzZXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBib29sIGluaXRfZXZlbnQpXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTk2MjUtXHRrdm1feDg2X2NhbGwoc2V0X2NyNCkodmNwdSwgMCk7XG5hcmNoL3g4Ni9rdm0veDg2LmM6OTYyNjpcdGt2bV94ODZfY2FsbChzZXRfZWZlcikodmNwdSwgMCk7XG5hcmNoL3g4Ni9rdm0veDg2LmMtOTYyNy1cdGt2bV94ODZfY2FsbCh1cGRhdGVfZXhjZXB0aW9uX2JpdG1hcCkodmNwdSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDA6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODczOQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE1NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEVGRVIgTVNSIE1vZGlmaWNhdGlvbiBpbiBLVk0qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCB0YXJnZXRzIGBhcmNoL3g4Ni9rdm0vbXNycy5jYCBzcGVjaWZpY2FsbHkuIEl0JiMzOTtzIGZvY3VzZWQgb24gdGhlIGBrdm1fdmFsaWRfZWZlcmAgYW5kIGBzZXRfZWZlcmAgZnVuY3Rpb25zLCB3aGljaCwgYXMgSSB1bmRlcnN0YW5kIGl0LCBhcmUgY3JpdGljYWwgZm9yIHZhbGlkYXRpbmcgYW5kIGFwcGx5aW5nIG1vZGlmaWNhdGlvbnMgdG8gdGhlIEV4dGVuZGVkIEZlYXR1cmUgRW5hYmxlIFJlZ2lzdGVyIChFRkVSKSBNU1IuIFRoaXMgaXMgYSBjcnVjaWFsIGFyZWEgZm9yIHZpcnR1YWxpemF0aW9uLCBhZmZlY3RpbmcgdGhpbmdzIGxpa2UgbG9uZyBtb2RlIGVudHJ5IGFuZCBlbmFibGluZyBzcGVjaWZpYyBDUFUgZmVhdHVyZXMgd2l0aGluIGEgdmlydHVhbCBtYWNoaW5lLgoKVGhlIGtleSBjaGFuZ2UgaGVyZSBpcyB0aGUgaW50cm9kdWN0aW9uIG9mIGNoZWNraW5nIGFnYWluc3QgYGt2bV9jYXBzLnN1cHBvcnRlZF9lZmVyX2JpdHNgIGluc3RlYWQgb2YgdGhlIG9sZGVyIGBlZmVyX3Jlc2VydmVkX2JpdHNgLiBFc3NlbnRpYWxseSwgd2UmIzM5O3JlIHNoaWZ0aW5nIGhvdyB3ZSB2YWxpZGF0ZSB0aGUgRUZFUiBNU1IgdXBkYXRlcy4gVGhpcyBpcyBhIGRlZmluaXRlIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiB0aGUgS1ZNIHN1YnN5c3RlbSwgYW5kIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhhdCBzaGlmdC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCB0aG9zZSBga3ZtX2NhcHNgIGFjdHVhbGx5ICphcmUqIGFuZCBob3cgdGhleSByZWxhdGUgdG8gdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUgY2FwYWJpbGl0aWVzLgoKSSBuZWVkIHRvIGNvbmZpcm0gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhdCBwbGF5IGhlcmUuIFRoaXMgbGlrZWx5IHRvdWNoZXMgdGhlIGBLVk1gLCBgS1ZNX0FNRGAsIGFuZCBgS1ZNX0lOVEVMYCBvcHRpb25zIHdpdGhpbiB0aGUga2VybmVsIGJ1aWxkIGNvbmZpZ3VyYXRpb24sIHdoaWNoIGlzIGltcG9ydGFudCB0byBmdWxseSBncmFzcCB0aGUgY2hhbmdlJiMzOTtzIGltcGFjdC4KCkkmIzM5O20gbWFraW5nIGEgbWVudGFsIG5vdGUgdG8gdmVyaWZ5IHRoZSBzdXJyb3VuZGluZyBjb250ZXh0OiBga3ZtX3NldHVwX2VmZXJfY2Fwc2AsIHdoaWNoIEkgZXhwZWN0IHNldHMgdXAgdGhlIHJlbGV2YW50IGZlYXR1cmUgbWFza3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDA6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEtWTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xOS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjIwOmNvbmZpZyBLVk1fWDg2XG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMS1cdGRlZl90cmlzdGF0ZSBLVk0gaWYgKEtWTV9JTlRFTCAhPSBuIHx8IEtWTV9BTUQgIT0gbilcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy01MS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjUyOmNvbmZpZyBLVk1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTUzLVx0dHJpc3RhdGUgXCYjMzQ7S2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctNjgtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo2OTpjb25maWcgS1ZNX1dFUlJPUlxuYXJjaC94ODYva3ZtL0tjb25maWctNzAtXHRib29sIFwmIzM0O0NvbXBpbGUgS1ZNIHdpdGggLVdlcnJvclwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTgyLVxuYXJjaC94ODYva3ZtL0tjb25maWc6ODM6Y29uZmlnIEtWTV9TV19QUk9URUNURURfVk1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTg0LVx0Ym9vbCBcJiMzNDtFbmFibGUgc3VwcG9ydCBmb3IgS1ZNIHNvZnR3YXJlLXByb3RlY3RlZCBWTXNcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy05NS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjk2OmNvbmZpZyBLVk1fSU5URUxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTk3LVx0dHJpc3RhdGUgXCYjMzQ7S1ZNIGZvciBJbnRlbCAoYW5kIGNvbXBhdGlibGUpIHByb2Nlc3NvcnMgc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTEwNi1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjEwNzpjb25maWcgS1ZNX0lOVEVMX1BST1ZFX1ZFXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMDgtICAgICAgICBib29sIFwmIzM0O0NoZWNrIHRoYXQgZ3Vlc3RzIGRvIG5vdCByZWNlaXZlICNWRSBleGNlcHRpb25zXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWc9MTIyPWNvbmZpZyBYODZfU0dYX0tWTVxuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTEzMy1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjEzNDpjb25maWcgS1ZNX0lOVEVMX1REWFxuYXJjaC94ODYva3ZtL0tjb25maWctMTM1LVx0Ym9vbCBcJiMzNDtJbnRlbCBUcnVzdCBEb21haW4gRXh0ZW5zaW9ucyAoVERYKSBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTQ1LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTQ2OmNvbmZpZyBLVk1fQU1EXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNDctXHR0cmlzdGF0ZSBcJiMzNDtLVk0gZm9yIEFNRCBwcm9jZXNzb3JzIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNTUtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNTY6Y29uZmlnIEtWTV9BTURfU0VWXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNTctXHRib29sIFwmIzM0O0FNRCBTZWN1cmUgRW5jcnlwdGVkIFZpcnR1YWxpemF0aW9uIChTRVYpIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNzEtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNzI6Y29uZmlnIEtWTV9JT0FQSUNcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE3My1cdGJvb2wgXCYjMzQ7SS9PIEFQSUMsIFBJQywgYW5kIFBJVCBlbXVsYXRpb25cJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xODEtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxODI6Y29uZmlnIEtWTV9TTU1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE4My1cdGJvb2wgXCYjMzQ7U3lzdGVtIE1hbmFnZW1lbnQgTW9kZSBlbXVsYXRpb25cJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xOTItXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxOTM6Y29uZmlnIEtWTV9IWVBFUlZcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5NC1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBmb3IgTWljcm9zb2Z0IEh5cGVyLVYgZW11bGF0aW9uXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMjA2LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MjA3OmNvbmZpZyBLVk1fWEVOXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMDgtXHRib29sIFwmIzM0O1N1cHBvcnQgZm9yIFhlbiBoeXBlcmNhbGwgaW50ZXJmYWNlXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMjE1LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MjE2OmNvbmZpZyBLVk1fUFJPVkVfTU1VXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMTctXHRib29sIFwmIzM0O1Byb3ZlIEtWTSBNTVUgY29ycmVjdG5lc3NcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMjgtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMjk6Y29uZmlnIEtWTV9FWFRFUk5BTF9XUklURV9UUkFDS0lOR1xuYXJjaC94ODYva3ZtL0tjb25maWctMjMwLVx0Ym9vbFxuYXJjaC94ODYva3ZtL0tjb25maWctMjMxLVxuYXJjaC94ODYva3ZtL0tjb25maWc6MjMyOmNvbmZpZyBLVk1fTUFYX05SX1ZDUFVTXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzMtXHRpbnQgXCYjMzQ7TWF4aW11bSBudW1iZXIgb2YgdkNQVXMgcGVyIEtWTSBndWVzdFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDAwOjQ0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNDUxCgkJCQkJCQlvdXRwdXQ6IDEzNwoJCQkJCQkJdGhvdWdodHM6IDIxMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEtWTSBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBLVk0gcGF0Y2gsIGFuZCB0aGUga2V5IGNvbmZpZ3VyYXRpb25zIGhlcmUgYXJlIG9idmlvdXNseSBgS1ZNYCwgYnV0IGFsc28gcG90ZW50aWFsbHkgYEtWTV9BTURgIGFuZCBgS1ZNX0lOVEVMYC4gSSYjMzk7bGwgZmlyc3QgY29uZmlybSB0aGF0IGp1c3QgYEtWTWAgaXRzZWxmIGlzIHN1ZmZpY2llbnQgZm9yIHRoaXMgcGFydGljdWxhciBjaGVjay4gQWxyaWdodCwgZ29vZCwgaXQgYXBwZWFycyB0aGF0IGBLVk1gIGlzIGluZGVlZCBlbm91Z2ggdG8gbW92ZSBmb3J3YXJkLgoKTm93LCBJJiMzOTttIGRpdmluZyBkZWVwZXIgaW50byB0aGUgaW1wbGVtZW50YXRpb24gZGV0YWlscy4gSSBuZWVkIHRvIHZlcmlmeSB0aGUgcHJlc2VuY2Ugb2YgYSBmZXcgY3JpdGljYWwgZnVuY3Rpb25zLiBGaXJzdCwgaXMgYGt2bV9zZXR1cF9lZmVyX2NhcHNgIGluIGBhcmNoL3g4Ni9rdm0veDg2LmNgPyBZZXMsIGl0JiMzOTtzIHRoZXJlLiBOZXh0LCBJJiMzOTtsbCBjaGVjayBmb3IgYGt2bV92YWxpZF9lZmVyYCBpbiBgYXJjaC94ODYva3ZtL21zcnMuY2Ag4oCTIHllcCwgdGhhdCBmdW5jdGlvbiBleGlzdHMgdG9vLiBBbmQgbGFzdGx5LCBJJiMzOTtsbCBjb25maXJtIHRoYXQgYHNldF9lZmVyYCBpcyBwcmVzZW50IGFsc28gaW4gYGFyY2gveDg2L2t2bS9tc3JzLmNgLiBHb29kLCBhbGwgdGhyZWUgYXJlIHByZXNlbnQgYXMgZXhwZWN0ZWQuCgpJdCYjMzk7cyBldmlkZW50IHRoYXQgdGhpcyBwYXRjaCBpcyBtYWtpbmcgYSBmdW5jdGlvbmFsIGNoYW5nZS4gSXQgc2VlbXMgdG8gYmUgcmVtb3ZpbmcgYGt2bV9lbmFibGVfZWZlcl9iaXRzYCBhbmQsIGluc3RlYWQsIGRpcmVjdGx5IG1vZGlmeWluZyBga3ZtX2NhcHMuc3VwcG9ydGVkX2VmZXJfYml0c2AuCgpBbHJpZ2h0LCBJJiMzOTttIHNhdGlzZmllZC4gTm93LCBpdCYjMzk7cyB0aW1lIHRvIGRvY3VtZW50IHRoZXNlIHJlc3VsdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDAwOjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OywKICAgICYjMzQ7S1ZNX0FNRCYjMzQ7LAogICAgJiMzNDtLVk1fSU5URUwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1fdmFsaWRfZWZlciYjMzQ7LAogICAgJiMzNDtzZXRfZWZlciYjMzQ7LAogICAgJiMzNDtrdm1fc2V0dXBfZWZlcl9jYXBzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGhvdyBLVk0gdmFsaWRhdGVzIGFuZCBzZXRzIHRoZSBFRkVSIE1TUiBieSByZXBsYWNpbmcgYGVmZXJfcmVzZXJ2ZWRfYml0c2Agd2l0aCBga3ZtX2NhcHMuc3VwcG9ydGVkX2VmZXJfYml0c2AuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIEtWTSBsb2dpYyB0aGF0IGFmZmVjdHMgZ3Vlc3QgZXhlY3V0aW9uIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OywKICAgICYjMzQ7S1ZNX0FNRCYjMzQ7LAogICAgJiMzNDtLVk1fSU5URUwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1fdmFsaWRfZWZlciYjMzQ7LAogICAgJiMzNDtzZXRfZWZlciYjMzQ7LAogICAgJiMzNDtrdm1fc2V0dXBfZWZlcl9jYXBzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGhvdyBLVk0gdmFsaWRhdGVzIGFuZCBzZXRzIHRoZSBFRkVSIE1TUiBieSByZXBsYWNpbmcgYGVmZXJfcmVzZXJ2ZWRfYml0c2Agd2l0aCBga3ZtX2NhcHMuc3VwcG9ydGVkX2VmZXJfYml0c2AuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIEtWTSBsb2dpYyB0aGF0IGFmZmVjdHMgZ3Vlc3QgZXhlY3V0aW9uIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMTRUMDA6NDM6NTQuNzI1Mzk1NDgyWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjgxMzQyMzUwNzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCIsXG4gICAgXCJLVk1fQU1EXCIsXG4gICAgXCJLVk1fSU5URUxcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJrdm1fdmFsaWRfZWZlclwiLFxuICAgIFwic2V0X2VmZXJcIixcbiAgICBcImt2bV9zZXR1cF9lZmVyX2NhcHNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBob3cgS1ZNIHZhbGlkYXRlcyBhbmQgc2V0cyB0aGUgRUZFUiBNU1IgYnkgcmVwbGFjaW5nIGBlZmVyX3Jlc2VydmVkX2JpdHNgIHdpdGggYGt2bV9jYXBzLnN1cHBvcnRlZF9lZmVyX2JpdHNgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBLVk0gbG9naWMgdGhhdCBhZmZlY3RzIGd1ZXN0IGV4ZWN1dGlvbiBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDA6NDM6NTQuNzI1NDAxNDQyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Nzk0MzMyNTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA0MjJlMzIwNmRmZjg1MjVjNzVmYWRjY2JiOWNlNGU5YzEyOWY5YTcyXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgSnVsIDE0IDAwOjQzOjUzIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXFxuaW5kZXggNThmMTU2YWUzMWU3NTAuLjgwYjkyZWQ0NDBmYTE4IDEwMDY0NFxcbi0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmhcXG4rKysgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXFxuQEAgLTI3NCw2ICsyNzQsOCBAQCBzdHJ1Y3Qga3ZtX2NhcHMge1xcbiBcXHR1NjQgc3VwcG9ydGVkX3hzcztcXG4gXFx0dTY0IHN1cHBvcnRlZF9wZXJmX2NhcDtcXG4gXFxuK1xcdHU2NCBzdXBwb3J0ZWRfZWZlcl9iaXRzO1xcbitcXG4gXFx0dTY0IHN1cHBvcnRlZF9xdWlya3M7XFxuIFxcdHU2NCBpbmFwcGxpY2FibGVfcXVpcmtzO1xcbiB9O1xcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vbXNycy5jIGIvYXJjaC94ODYva3ZtL21zcnMuY1xcbmluZGV4IGMyMzBiMThkODdlMzhlLi42NmZhNzE0MGQ2NWQ5YiAxMDA2NDRcXG4tLS0gYS9hcmNoL3g4Ni9rdm0vbXNycy5jXFxuKysrIGIvYXJjaC94ODYva3ZtL21zcnMuY1xcbkBAIC0xOSwxNyArMTksNiBAQCBib29sIF9fcmVhZF9tb3N0bHkgcmVwb3J0X2lnbm9yZWRfbXNycyA9IHRydWU7XFxuIG1vZHVsZV9wYXJhbShyZXBvcnRfaWdub3JlZF9tc3JzLCBib29sLCAwNjQ0KTtcXG4gRVhQT1JUX1NZTUJPTF9GT1JfS1ZNX0lOVEVSTkFMKHJlcG9ydF9pZ25vcmVkX21zcnMpO1xcbiBcXG4tLyogRUZFUiBkZWZhdWx0czpcXG4tICogLSBlbmFibGUgc3lzY2FsbCBwZXIgZGVmYXVsdCBiZWNhdXNlIGl0cyBlbXVsYXRlZCBieSBLVk1cXG4tICogLSBlbmFibGUgTE1FIGFuZCBMTUEgcGVyIGRlZmF1bHQgb24gNjQgYml0IEtWTVxcbi0gKi9cXG4tI2lmZGVmIENPTkZJR19YODZfNjRcXG4tc3RhdGljXFxuLXU2NCBfX3JlYWRfbW9zdGx5IGVmZXJfcmVzZXJ2ZWRfYml0cyA9IH4oKHU2NCkoRUZFUl9TQ0UgfCBFRkVSX0xNRSB8IEVGRVJfTE1BKSk7XFxuLSNlbHNlXFxuLXN0YXRpYyB1NjQgX19yZWFkX21vc3RseSBlZmVyX3Jlc2VydmVkX2JpdHMgPSB+KCh1NjQpRUZFUl9TQ0UpO1xcbi0jZW5kaWZcXG4tXFxuICNkZWZpbmUgTUFYX0lPX01TUlMgMjU2XFxuIFxcbiBzdHJ1Y3QgbXNyX2JpdG1hcF9yYW5nZSB7XFxuQEAgLTYxNCw3ICs2MDMsNyBAQCBzdGF0aWMgYm9vbCBfX2t2bV92YWxpZF9lZmVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGVmZXIpXFxuIH1cXG4gYm9vbCBrdm1fdmFsaWRfZWZlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBlZmVyKVxcbiB7XFxuLVxcdGlmIChlZmVyIFxcdTAwMjYgZWZlcl9yZXNlcnZlZF9iaXRzKVxcbitcXHRpZiAoZWZlciBcXHUwMDI2IH5rdm1fY2Fwcy5zdXBwb3J0ZWRfZWZlcl9iaXRzKVxcbiBcXHRcXHRyZXR1cm4gZmFsc2U7XFxuIFxcbiBcXHRyZXR1cm4gX19rdm1fdmFsaWRfZWZlcih2Y3B1LCBlZmVyKTtcXG5AQCAtNjI3LDcgKzYxNiw3IEBAIHN0YXRpYyBpbnQgc2V0X2VmZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3QgbXNyX2RhdGEgKm1zcl9pbmZvKVxcbiBcXHR1NjQgZWZlciA9IG1zcl9pbmZvLVxcdTAwM2VkYXRhO1xcbiBcXHRpbnQgcjtcXG4gXFxuLVxcdGlmIChlZmVyIFxcdTAwMjYgZWZlcl9yZXNlcnZlZF9iaXRzKVxcbitcXHRpZiAoZWZlciBcXHUwMDI2IH5rdm1fY2Fwcy5zdXBwb3J0ZWRfZWZlcl9iaXRzKVxcbiBcXHRcXHRyZXR1cm4gMTtcXG4gXFxuIFxcdGlmICghbXNyX2luZm8tXFx1MDAzZWhvc3RfaW5pdGlhdGVkKSB7XFxuQEAgLTY1OCwxMiArNjQ3LDYgQEAgc3RhdGljIGludCBzZXRfZWZlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBtc3JfZGF0YSAqbXNyX2luZm8pXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbi12b2lkIGt2bV9lbmFibGVfZWZlcl9iaXRzKHU2NCBtYXNrKVxcbi17XFxuLSAgICAgICBlZmVyX3Jlc2VydmVkX2JpdHMgXFx1MDAyNj0gfm1hc2s7XFxuLX1cXG4tRVhQT1JUX1NZTUJPTF9GT1JfS1ZNX0lOVEVSTkFMKGt2bV9lbmFibGVfZWZlcl9iaXRzKTtcXG4tXFxuIGJvb2wga3ZtX21zcl9hbGxvd2VkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTMyIGluZGV4LCB1MzIgdHlwZSlcXG4ge1xcbiBcXHRzdHJ1Y3Qga3ZtX3g4Nl9tc3JfZmlsdGVyICptc3JfZmlsdGVyO1xcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vbXNycy5oIGIvYXJjaC94ODYva3ZtL21zcnMuaFxcbmluZGV4IDljNWM2YjMzZTU4ZjU3Li43Y2MxODJhMTViM2IzZSAxMDA2NDRcXG4tLS0gYS9hcmNoL3g4Ni9rdm0vbXNycy5oXFxuKysrIGIvYXJjaC94ODYva3ZtL21zcnMuaFxcbkBAIC01OCw3ICs1OCw2IEBAIGludCBrdm1fZ2V0X3NldF9vbmVfcmVnKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgaW50IGlvY3RsLFxcbiBpbnQga3ZtX2dldF9yZWdfbGlzdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuIFxcdFxcdCAgICAgc3RydWN0IGt2bV9yZWdfbGlzdCBfX3VzZXIgKnVzZXJfbGlzdCk7XFxuIFxcbi12b2lkIGt2bV9lbmFibGVfZWZlcl9iaXRzKHU2NCk7XFxuIGJvb2wga3ZtX3ZhbGlkX2VmZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgZWZlcik7XFxuIGludCBrdm1fZW11bGF0ZV9tc3JfcmVhZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBpbmRleCwgdTY0ICpkYXRhKTtcXG4gaW50IGt2bV9lbXVsYXRlX21zcl93cml0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBpbmRleCwgdTY0IGRhdGEpO1xcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jIGIvYXJjaC94ODYva3ZtL3N2bS9zdm0uY1xcbmluZGV4IDkxMjg2ZDQ2ZDEzYWRiLi4wOTc5OWZkOGVmMzhmNSAxMDA2NDRcXG4tLS0gYS9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jXFxuKysrIGIvYXJjaC94ODYva3ZtL3N2bS9zdm0uY1xcbkBAIC01NjI4LDEwICs1NjI4LDYgQEAgc3RhdGljIF9faW5pdCBpbnQgc3ZtX2hhcmR3YXJlX3NldHVwKHZvaWQpXFxuIFxcbiBcXHRpZiAobmVzdGVkKSB7XFxuIFxcdFxcdHByX2luZm8oXFxcIk5lc3RlZCBWaXJ0dWFsaXphdGlvbiBlbmFibGVkXFxcXG5cXFwiKTtcXG4tXFx0XFx0a3ZtX2VuYWJsZV9lZmVyX2JpdHMoRUZFUl9TVk1FKTtcXG4tXFx0XFx0aWYgKCFib290X2NwdV9oYXMoWDg2X0ZFQVRVUkVfRUZFUl9MTVNMRV9NQlopKVxcbi1cXHRcXHRcXHRrdm1fZW5hYmxlX2VmZXJfYml0cyhFRkVSX0xNU0xFKTtcXG4tXFxuIFxcdFxcdHIgPSBuZXN0ZWRfc3ZtX2luaXRfbXNycG1fbWVyZ2Vfb2Zmc2V0cygpO1xcbiBcXHRcXHRpZiAocilcXG4gXFx0XFx0XFx0cmV0dXJuIHI7XFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS94ODYuYyBiL2FyY2gveDg2L2t2bS94ODYuY1xcbmluZGV4IDFmNWRjNjg1ZjA0OTBkLi5hMDIwYjFjYmIzZjNlOCAxMDA2NDRcXG4tLS0gYS9hcmNoL3g4Ni9rdm0veDg2LmNcXG4rKysgYi9hcmNoL3g4Ni9rdm0veDg2LmNcXG5AQCAtNjkxMywxNCArNjkxMywyNiBAQCBFWFBPUlRfU1lNQk9MX0ZPUl9LVk1fSU5URVJOQUwoa3ZtX3NldHVwX3hzc19jYXBzKTtcXG4gXFxuIHN0YXRpYyB2b2lkIGt2bV9zZXR1cF9lZmVyX2NhcHModm9pZClcXG4ge1xcbitcXHQvKiBFbmFibGUgc3lzY2FsbCBieSBkZWZhdWx0IGJlY2F1c2UgaXRzIGVtdWxhdGVkIGJ5IEtWTSAqL1xcbitcXHRrdm1fY2Fwcy5zdXBwb3J0ZWRfZWZlcl9iaXRzID0gKHU2NClFRkVSX1NDRTtcXG4rXFxuK1xcdGlmIChrdm1fY3B1X2NhcF9oYXMoWDg2X0ZFQVRVUkVfTE0pKVxcbitcXHRcXHRrdm1fY2Fwcy5zdXBwb3J0ZWRfZWZlcl9iaXRzIHw9IChFRkVSX0xNRSB8IEVGRVJfTE1BKTtcXG4rXFxuIFxcdGlmIChrdm1fY3B1X2NhcF9oYXMoWDg2X0ZFQVRVUkVfTlgpKVxcbi1cXHRcXHRrdm1fZW5hYmxlX2VmZXJfYml0cyhFRkVSX05YKTtcXG4rXFx0XFx0a3ZtX2NhcHMuc3VwcG9ydGVkX2VmZXJfYml0cyB8PSBFRkVSX05YO1xcbiBcXG4gXFx0aWYgKGt2bV9jcHVfY2FwX2hhcyhYODZfRkVBVFVSRV9GWFNSX09QVCkpXFxuLVxcdFxcdGt2bV9lbmFibGVfZWZlcl9iaXRzKEVGRVJfRkZYU1IpO1xcbitcXHRcXHRrdm1fY2Fwcy5zdXBwb3J0ZWRfZWZlcl9iaXRzIHw9IEVGRVJfRkZYU1I7XFxuIFxcbiBcXHRpZiAoa3ZtX2NwdV9jYXBfaGFzKFg4Nl9GRUFUVVJFX0FVVE9JQlJTKSlcXG4tXFx0XFx0a3ZtX2VuYWJsZV9lZmVyX2JpdHMoRUZFUl9BVVRPSUJSUyk7XFxuK1xcdFxcdGt2bV9jYXBzLnN1cHBvcnRlZF9lZmVyX2JpdHMgfD0gRUZFUl9BVVRPSUJSUztcXG4rXFxuK1xcdGlmIChrdm1fY3B1X2NhcF9oYXMoWDg2X0ZFQVRVUkVfU1ZNKSkge1xcbitcXHRcXHRrdm1fY2Fwcy5zdXBwb3J0ZWRfZWZlcl9iaXRzIHw9IEVGRVJfU1ZNRTtcXG4rXFx0XFx0aWYgKCFib290X2NwdV9oYXMoWDg2X0ZFQVRVUkVfRUZFUl9MTVNMRV9NQlopKVxcbitcXHRcXHRcXHRrdm1fY2Fwcy5zdXBwb3J0ZWRfZWZlcl9iaXRzIHw9IEVGRVJfTE1TTEU7XFxuK1xcdH1cXG4gfVxcbiBcXG4gc3RhdGljIHZvaWQga3ZtX25lc3RlZF9vcHNfdXBkYXRlKGNvbnN0IHN0cnVjdCBrdm1feDg2X25lc3RlZF9vcHMgKm5lc3RlZF9vcHMpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDAwOjQzOjU1LjMwNTY3ODAyWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzU1Mzk0Mjk4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIixcbiAgICBcIktWTV9BTURcIixcbiAgICBcIktWTV9JTlRFTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV92YWxpZF9lZmVyXCIsXG4gICAgXCJzZXRfZWZlclwiLFxuICAgIFwia3ZtX3NldHVwX2VmZXJfY2Fwc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGhvdyBLVk0gdmFsaWRhdGVzIGFuZCBzZXRzIHRoZSBFRkVSIE1TUiBieSByZXBsYWNpbmcgYGVmZXJfcmVzZXJ2ZWRfYml0c2Agd2l0aCBga3ZtX2NhcHMuc3VwcG9ydGVkX2VmZXJfYml0c2AuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIEtWTSBsb2dpYyB0aGF0IGFmZmVjdHMgZ3Vlc3QgZXhlY3V0aW9uIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDQyMmUzMjA2ZGZmODUyNWM3NWZhZGNjYmI5Y2U0ZTljMTI5ZjlhNzJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1bCAxNCAwMDo0Mzo1MyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXG5pbmRleCA1OGYxNTZhZTMxZTc1MC4uODBiOTJlZDQ0MGZhMTggMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXG4rKysgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXG5AQCAtMjc0LDYgKzI3NCw4IEBAIHN0cnVjdCBrdm1fY2FwcyB7XG4gXHR1NjQgc3VwcG9ydGVkX3hzcztcbiBcdHU2NCBzdXBwb3J0ZWRfcGVyZl9jYXA7XG4gXG4rXHR1NjQgc3VwcG9ydGVkX2VmZXJfYml0cztcbitcbiBcdHU2NCBzdXBwb3J0ZWRfcXVpcmtzO1xuIFx0dTY0IGluYXBwbGljYWJsZV9xdWlya3M7XG4gfTtcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vbXNycy5jIGIvYXJjaC94ODYva3ZtL21zcnMuY1xuaW5kZXggYzIzMGIxOGQ4N2UzOGUuLjY2ZmE3MTQwZDY1ZDliIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL21zcnMuY1xuKysrIGIvYXJjaC94ODYva3ZtL21zcnMuY1xuQEAgLTE5LDE3ICsxOSw2IEBAIGJvb2wgX19yZWFkX21vc3RseSByZXBvcnRfaWdub3JlZF9tc3JzID0gdHJ1ZTtcbiBtb2R1bGVfcGFyYW0ocmVwb3J0X2lnbm9yZWRfbXNycywgYm9vbCwgMDY0NCk7XG4gRVhQT1JUX1NZTUJPTF9GT1JfS1ZNX0lOVEVSTkFMKHJlcG9ydF9pZ25vcmVkX21zcnMpO1xuIFxuLS8qIEVGRVIgZGVmYXVsdHM6XG4tICogLSBlbmFibGUgc3lzY2FsbCBwZXIgZGVmYXVsdCBiZWNhdXNlIGl0cyBlbXVsYXRlZCBieSBLVk1cbi0gKiAtIGVuYWJsZSBMTUUgYW5kIExNQSBwZXIgZGVmYXVsdCBvbiA2NCBiaXQgS1ZNXG4tICovXG4tI2lmZGVmIENPTkZJR19YODZfNjRcbi1zdGF0aWNcbi11NjQgX19yZWFkX21vc3RseSBlZmVyX3Jlc2VydmVkX2JpdHMgPSB+KCh1NjQpKEVGRVJfU0NFIHwgRUZFUl9MTUUgfCBFRkVSX0xNQSkpO1xuLSNlbHNlXG4tc3RhdGljIHU2NCBfX3JlYWRfbW9zdGx5IGVmZXJfcmVzZXJ2ZWRfYml0cyA9IH4oKHU2NClFRkVSX1NDRSk7XG4tI2VuZGlmXG4tXG4gI2RlZmluZSBNQVhfSU9fTVNSUyAyNTZcbiBcbiBzdHJ1Y3QgbXNyX2JpdG1hcF9yYW5nZSB7XG5AQCAtNjE0LDcgKzYwMyw3IEBAIHN0YXRpYyBib29sIF9fa3ZtX3ZhbGlkX2VmZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgZWZlcilcbiB9XG4gYm9vbCBrdm1fdmFsaWRfZWZlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBlZmVyKVxuIHtcbi1cdGlmIChlZmVyIFx1MDAyNiBlZmVyX3Jlc2VydmVkX2JpdHMpXG4rXHRpZiAoZWZlciBcdTAwMjYgfmt2bV9jYXBzLnN1cHBvcnRlZF9lZmVyX2JpdHMpXG4gXHRcdHJldHVybiBmYWxzZTtcbiBcbiBcdHJldHVybiBfX2t2bV92YWxpZF9lZmVyKHZjcHUsIGVmZXIpO1xuQEAgLTYyNyw3ICs2MTYsNyBAQCBzdGF0aWMgaW50IHNldF9lZmVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IG1zcl9kYXRhICptc3JfaW5mbylcbiBcdHU2NCBlZmVyID0gbXNyX2luZm8tXHUwMDNlZGF0YTtcbiBcdGludCByO1xuIFxuLVx0aWYgKGVmZXIgXHUwMDI2IGVmZXJfcmVzZXJ2ZWRfYml0cylcbitcdGlmIChlZmVyIFx1MDAyNiB+a3ZtX2NhcHMuc3VwcG9ydGVkX2VmZXJfYml0cylcbiBcdFx0cmV0dXJuIDE7XG4gXG4gXHRpZiAoIW1zcl9pbmZvLVx1MDAzZWhvc3RfaW5pdGlhdGVkKSB7XG5AQCAtNjU4LDEyICs2NDcsNiBAQCBzdGF0aWMgaW50IHNldF9lZmVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IG1zcl9kYXRhICptc3JfaW5mbylcbiBcdHJldHVybiAwO1xuIH1cbiBcbi12b2lkIGt2bV9lbmFibGVfZWZlcl9iaXRzKHU2NCBtYXNrKVxuLXtcbi0gICAgICAgZWZlcl9yZXNlcnZlZF9iaXRzIFx1MDAyNj0gfm1hc2s7XG4tfVxuLUVYUE9SVF9TWU1CT0xfRk9SX0tWTV9JTlRFUk5BTChrdm1fZW5hYmxlX2VmZXJfYml0cyk7XG4tXG4gYm9vbCBrdm1fbXNyX2FsbG93ZWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgaW5kZXgsIHUzMiB0eXBlKVxuIHtcbiBcdHN0cnVjdCBrdm1feDg2X21zcl9maWx0ZXIgKm1zcl9maWx0ZXI7XG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL21zcnMuaCBiL2FyY2gveDg2L2t2bS9tc3JzLmhcbmluZGV4IDljNWM2YjMzZTU4ZjU3Li43Y2MxODJhMTViM2IzZSAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS9tc3JzLmhcbisrKyBiL2FyY2gveDg2L2t2bS9tc3JzLmhcbkBAIC01OCw3ICs1OCw2IEBAIGludCBrdm1fZ2V0X3NldF9vbmVfcmVnKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgaW50IGlvY3RsLFxuIGludCBrdm1fZ2V0X3JlZ19saXN0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbiBcdFx0ICAgICBzdHJ1Y3Qga3ZtX3JlZ19saXN0IF9fdXNlciAqdXNlcl9saXN0KTtcbiBcbi12b2lkIGt2bV9lbmFibGVfZWZlcl9iaXRzKHU2NCk7XG4gYm9vbCBrdm1fdmFsaWRfZWZlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBlZmVyKTtcbiBpbnQga3ZtX2VtdWxhdGVfbXNyX3JlYWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgaW5kZXgsIHU2NCAqZGF0YSk7XG4gaW50IGt2bV9lbXVsYXRlX21zcl93cml0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBpbmRleCwgdTY0IGRhdGEpO1xuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmMgYi9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jXG5pbmRleCA5MTI4NmQ0NmQxM2FkYi4uMDk3OTlmZDhlZjM4ZjUgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jXG4rKysgYi9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jXG5AQCAtNTYyOCwxMCArNTYyOCw2IEBAIHN0YXRpYyBfX2luaXQgaW50IHN2bV9oYXJkd2FyZV9zZXR1cCh2b2lkKVxuIFxuIFx0aWYgKG5lc3RlZCkge1xuIFx0XHRwcl9pbmZvKFwiTmVzdGVkIFZpcnR1YWxpemF0aW9uIGVuYWJsZWRcXG5cIik7XG4tXHRcdGt2bV9lbmFibGVfZWZlcl9iaXRzKEVGRVJfU1ZNRSk7XG4tXHRcdGlmICghYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX0VGRVJfTE1TTEVfTUJaKSlcbi1cdFx0XHRrdm1fZW5hYmxlX2VmZXJfYml0cyhFRkVSX0xNU0xFKTtcbi1cbiBcdFx0ciA9IG5lc3RlZF9zdm1faW5pdF9tc3JwbV9tZXJnZV9vZmZzZXRzKCk7XG4gXHRcdGlmIChyKVxuIFx0XHRcdHJldHVybiByO1xuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS94ODYuYyBiL2FyY2gveDg2L2t2bS94ODYuY1xuaW5kZXggMWY1ZGM2ODVmMDQ5MGQuLmEwMjBiMWNiYjNmM2U4IDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL3g4Ni5jXG4rKysgYi9hcmNoL3g4Ni9rdm0veDg2LmNcbkBAIC02OTEzLDE0ICs2OTEzLDI2IEBAIEVYUE9SVF9TWU1CT0xfRk9SX0tWTV9JTlRFUk5BTChrdm1fc2V0dXBfeHNzX2NhcHMpO1xuIFxuIHN0YXRpYyB2b2lkIGt2bV9zZXR1cF9lZmVyX2NhcHModm9pZClcbiB7XG4rXHQvKiBFbmFibGUgc3lzY2FsbCBieSBkZWZhdWx0IGJlY2F1c2UgaXRzIGVtdWxhdGVkIGJ5IEtWTSAqL1xuK1x0a3ZtX2NhcHMuc3VwcG9ydGVkX2VmZXJfYml0cyA9ICh1NjQpRUZFUl9TQ0U7XG4rXG4rXHRpZiAoa3ZtX2NwdV9jYXBfaGFzKFg4Nl9GRUFUVVJFX0xNKSlcbitcdFx0a3ZtX2NhcHMuc3VwcG9ydGVkX2VmZXJfYml0cyB8PSAoRUZFUl9MTUUgfCBFRkVSX0xNQSk7XG4rXG4gXHRpZiAoa3ZtX2NwdV9jYXBfaGFzKFg4Nl9GRUFUVVJFX05YKSlcbi1cdFx0a3ZtX2VuYWJsZV9lZmVyX2JpdHMoRUZFUl9OWCk7XG4rXHRcdGt2bV9jYXBzLnN1cHBvcnRlZF9lZmVyX2JpdHMgfD0gRUZFUl9OWDtcbiBcbiBcdGlmIChrdm1fY3B1X2NhcF9oYXMoWDg2X0ZFQVRVUkVfRlhTUl9PUFQpKVxuLVx0XHRrdm1fZW5hYmxlX2VmZXJfYml0cyhFRkVSX0ZGWFNSKTtcbitcdFx0a3ZtX2NhcHMuc3VwcG9ydGVkX2VmZXJfYml0cyB8PSBFRkVSX0ZGWFNSO1xuIFxuIFx0aWYgKGt2bV9jcHVfY2FwX2hhcyhYODZfRkVBVFVSRV9BVVRPSUJSUykpXG4tXHRcdGt2bV9lbmFibGVfZWZlcl9iaXRzKEVGRVJfQVVUT0lCUlMpO1xuK1x0XHRrdm1fY2Fwcy5zdXBwb3J0ZWRfZWZlcl9iaXRzIHw9IEVGRVJfQVVUT0lCUlM7XG4rXG4rXHRpZiAoa3ZtX2NwdV9jYXBfaGFzKFg4Nl9GRUFUVVJFX1NWTSkpIHtcbitcdFx0a3ZtX2NhcHMuc3VwcG9ydGVkX2VmZXJfYml0cyB8PSBFRkVSX1NWTUU7XG4rXHRcdGlmICghYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX0VGRVJfTE1TTEVfTUJaKSlcbitcdFx0XHRrdm1fY2Fwcy5zdXBwb3J0ZWRfZWZlcl9iaXRzIHw9IEVGRVJfTE1TTEU7XG4rXHR9XG4gfVxuIFxuIHN0YXRpYyB2b2lkIGt2bV9uZXN0ZWRfb3BzX3VwZGF0ZShjb25zdCBzdHJ1Y3Qga3ZtX3g4Nl9uZXN0ZWRfb3BzICpuZXN0ZWRfb3BzKVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDA6NDM6NTUuMzA1Njc5M1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc3ODY3NDE3MzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBLVk0gRUZFUiBCaXQgSGFuZGxpbmcgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciB4ODYgS1ZNLiBJdCdzIGFuIGludGVyZXN0aW5nIG9uZSDigJMgc2VlbXMgbGlrZSB0aGV5J3JlIHN0cmVhbWxpbmluZyBob3cgRUZFUiBiaXRzIGFyZSBoYW5kbGVkLiBTcGVjaWZpY2FsbHksIHRoZXkndmUgZGl0Y2hlZCB0aGUgb2xkIGBlZmVyX3Jlc2VydmVkX2JpdHNgIGFuZCBga3ZtX2VuYWJsZV9lZmVyX2JpdHNgIGNvbnN0cnVjdHMuIFRoZXkndmUgcmVwbGFjZWQgdGhlbSB3aXRoIGEgc2luZ2xlIGBrdm1fY2Fwcy5zdXBwb3J0ZWRfZWZlcl9iaXRzYCB2YXJpYWJsZSwgYW5kIHRoZXkndmUgY29uc29saWRhdGVkIHRoZSBpbml0aWFsaXphdGlvbiBvZiBFRkVSIGNhcGFiaWxpdGllcyB3aXRoaW4gYGt2bV9zZXR1cF9lZmVyX2NhcHNgLCBtb3ZpbmcgaXQgZnJvbSBpdHMgcHJldmlvdXMgbG9jYXRpb25zIGluIGBzdm1faGFyZHdhcmVfc2V0dXBgIGFuZCBga3ZtX3NldHVwX2VmZXJfY2Fwc2AuXG5cbkZ1bmN0aW9uYWxseSwgdGhpcyBkZWZpbml0ZWx5IGFsdGVycyBob3cgd2UgdmFsaWRhdGUgRUZFUiBiaXRzLCB3aGljaCBpcyBzb21ldGhpbmcgSSBuZWVkIHRvIGZ1bGx5IHVuZGVyc3RhbmQuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoaXMgaXMgYSBjb3JlIEtWTSBjaGFuZ2UsIHNvIHJlYWNoYWJpbGl0eSBzaG91bGRuJ3QgYmUgYW4gaXNzdWUuIEtWTSBpcyBmdW5kYW1lbnRhbCB0byB2aXJ0dWFsaXphdGlvbiBvbiB4ODYuIFRoaXMgYWxzbyBtZWFucyB0aGlzIG5lZWRzIHNvbWUgc2VyaW91cyBmdXp6aW5nLlxuXG5NeSBpbW1lZGlhdGUgbmV4dCBzdGVwcyBhcmUgdG8gbmFpbCBkb3duIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFRoZSBrZXkgZmlsZXMgYXBwZWFyIHRvIGJlIGBhcmNoL3g4Ni9rdm0veDg2LmNgLCBgYXJjaC94ODYva3ZtL21zcnMuY2AsIGFuZCBgYXJjaC94ODYva3ZtL3N2bS9zdm0uY2AsIHNvIGl0J3MgYWxsIHg4NiBLVk0uIFRoaXMgbWVhbnMgbXkgZm9jdXMgd2lsbCBiZSBvbiBgS1ZNYCwgYEtWTV9BTURgLCBhbmQgYEtWTV9JTlRFTGAgY29uZmlndXJhdGlvbnMuXG5cbk5vdywgdG8gcHJlcGFyZSBmb3IgZnV6emluZywgSSBuZWVkIHRvIGlkZW50aWZ5IHRoZSBrZXkgZnVuY3Rpb25zIGludm9sdmVkLiBUaGUgZnVuY3Rpb25zIHRoYXQgYXJlIG1vc3QgbGlrZWx5IHRvIGJlIGFmZmVjdGVkIGJ5IHRoaXMgY2hhbmdlLCBhbmQgaGVuY2UgbXkgZnV6emluZyB0YXJnZXRzIGFyZTogYGt2bV92YWxpZF9lZmVyYCwgYHNldF9lZmVyYCwgYW5kIGBrdm1fc2V0dXBfZWZlcl9jYXBzYC5cblxuRmluYWxseSwgdG8gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiBob3cgdG8gdHJpZ2dlciB0aGVzZSBmdW5jdGlvbnMsIEknbGwgdXNlIGBncmVwcGVyYCB0byBzZWUgd2hlcmUgYGt2bV9zZXR1cF9lZmVyX2NhcHNgIGlzIGFjdHVhbGx5IGNhbGxlZCB3aXRoaW4gdGhlIGNvZGViYXNlLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgY29uc3RydWN0aW5nIGVmZmVjdGl2ZSBmdXp6aW5nIGhhcm5lc3Nlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzczNSwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyMiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDAwOjQ0OjAzLjA5MjQyNDg4OFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5ODI5MDQ3MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fc2V0dXBfZWZlcl9jYXBzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gveDg2L2t2bS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYva3ZtL3g4Ni5jPTY5MTI9RVhQT1JUX1NZTUJPTF9GT1JfS1ZNX0lOVEVSTkFMKGt2bV9zZXR1cF94c3NfY2Fwcyk7XFxuYXJjaC94ODYva3ZtL3g4Ni5jLTY5MTMtXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjY5MTQ6c3RhdGljIHZvaWQga3ZtX3NldHVwX2VmZXJfY2Fwcyh2b2lkKVxcbmFyY2gveDg2L2t2bS94ODYuYy02OTE1LXtcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYz02OTk5PWludCBrdm1feDg2X3ZlbmRvcl9pbml0KHN0cnVjdCBrdm1feDg2X2luaXRfb3BzICpvcHMpXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtNzA5MS1cXG5hcmNoL3g4Ni9rdm0veDg2LmM6NzA5MjpcXHRrdm1fc2V0dXBfZWZlcl9jYXBzKCk7XFxuYXJjaC94ODYva3ZtL3g4Ni5jLTcwOTMtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDAwOjQ0OjAzLjE5MDcyMTAxMVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0NzI3MTExNjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIEVGRVIgQ29uZmlndXJhdGlvbiBpbiBLVk0qKlxuXG5Pa2F5LCBzbyBga3ZtX3NldHVwX2VmZXJfY2Fwc2AgaXMgZGVmaW5pdGVseSBjYWxsZWQgZHVyaW5nIHRoZSBpbml0aWFsaXphdGlvbiBwaGFzZSwgc3BlY2lmaWNhbGx5IHdpdGhpbiBga3ZtX3g4Nl92ZW5kb3JfaW5pdGAuIFRoYXQncyB0aGUgc3RhcnRpbmcgcG9pbnQuIE15IHByaW1hcnkgY29uY2VybiBpcyBob3cgdGhlIEV4dGVuZGVkIEZlYXR1cmUgRW5hYmxlIFJlZ2lzdGVyIChFRkVSKSBnZXRzIHNldCwgc3BlY2lmaWNhbGx5IHRoZSBtZWNoYW5pY3Mgb2YgaG93IHRoZSBgc2V0X2VmZXJgIGZ1bmN0aW9uIGlzIHRyaWdnZXJlZC4gTXkgaW5zdGluY3QsIGFuZCBiYXNlZCBvbiBleHBlcmllbmNlIEkgc3VzcGVjdCBpdCBnZXRzIHNldCBpbiB0aGUgZW11bGF0aW9uIHBhdGguIEkgbmVlZCB0byB2ZXJpZnkgd2hldGhlciB0aGUgYHNldF9lZmVyYCBmdW5jdGlvbiBpcyBjYWxsZWQgZGlyZWN0bHkgZnJvbSB0aGUgZW11bGF0aW9uIG9mIE1TUiB3cml0ZXMsIHBlcmhhcHMgd2l0aGluIGBrdm1fZW11bGF0ZV9tc3Jfd3JpdGVgIG9yIGEgc2ltaWxhciBlbXVsYXRpb24gZnVuY3Rpb24uIEkgbmVlZCB0byBjb25maXJtIHRoaXMgYXNzdW1wdGlvbi4gTGV0IG1lIHN0YXJ0IGRpZ2dpbmcgaW50byB0aGF0IGNvZGUgcGF0aC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDgwMiwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDAwOjQ0OjA2LjY2MzQzNDQzNloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4OTY4NDczMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZXRfZWZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9rdm0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS9tc3JzLmM9NjExPUVYUE9SVF9TWU1CT0xfRk9SX0tWTV9JTlRFUk5BTChrdm1fdmFsaWRfZWZlcik7XFxuYXJjaC94ODYva3ZtL21zcnMuYy02MTItXFxuYXJjaC94ODYva3ZtL21zcnMuYzo2MTM6c3RhdGljIGludCBzZXRfZWZlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBtc3JfZGF0YSAqbXNyX2luZm8pXFxuYXJjaC94ODYva3ZtL21zcnMuYy02MTQte1xcbi0tXFxuYXJjaC94ODYva3ZtL21zcnMuYy02MzMtXFxuYXJjaC94ODYva3ZtL21zcnMuYzo2MzQ6XFx0ciA9IGt2bV94ODZfY2FsbChzZXRfZWZlcikodmNwdSwgZWZlcik7XFxuYXJjaC94ODYva3ZtL21zcnMuYy02MzUtXFx0aWYgKHIpIHtcXG4tLVxcbmFyY2gveDg2L2t2bS9tc3JzLmM9MTQ0Mj1pbnQga3ZtX3NldF9tc3JfY29tbW9uKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IG1zcl9kYXRhICptc3JfaW5mbylcXG4tLVxcbmFyY2gveDg2L2t2bS9tc3JzLmMtMTUzOS1cXHRjYXNlIE1TUl9FRkVSOlxcbmFyY2gveDg2L2t2bS9tc3JzLmM6MTU0MDpcXHRcXHRyZXR1cm4gc2V0X2VmZXIodmNwdSwgbXNyX2luZm8pO1xcbmFyY2gveDg2L2t2bS9tc3JzLmMtMTU0MS1cXHRjYXNlIE1TUl9LN19IV0NSOiB7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vcmVncy5jPTU3MD1zdGF0aWMgaW50IF9fc2V0X3NyZWdzX2NvbW1vbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzLFxcbi0tXFxuYXJjaC94ODYva3ZtL3JlZ3MuYy01OTgtXFx0Km1tdV9yZXNldF9uZWVkZWQgfD0gdmNwdS1cXHUwMDNlYXJjaC5lZmVyICE9IHNyZWdzLVxcdTAwM2VlZmVyO1xcbmFyY2gveDg2L2t2bS9yZWdzLmM6NTk5OlxcdGt2bV94ODZfY2FsbChzZXRfZWZlcikodmNwdSwgc3JlZ3MtXFx1MDAzZWVmZXIpO1xcbmFyY2gveDg2L2t2bS9yZWdzLmMtNjAwLVxcbi0tXFxuYXJjaC94ODYva3ZtL3NtbS5jPTI3OT12b2lkIGVudGVyX3NtbShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc21tLmMtMzYxLVxcdGlmIChndWVzdF9jcHVfY2FwX2hhcyh2Y3B1LCBYODZfRkVBVFVSRV9MTSkpXFxuYXJjaC94ODYva3ZtL3NtbS5jOjM2MjpcXHRcXHRpZiAoa3ZtX3g4Nl9jYWxsKHNldF9lZmVyKSh2Y3B1LCAwKSlcXG5hcmNoL3g4Ni9rdm0vc21tLmMtMzYzLVxcdFxcdFxcdGdvdG8gZXJyb3I7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jPTc0ND1zdGF0aWMgdm9pZCBuZXN0ZWRfdm1jYjAyX3ByZXBhcmVfc2F2ZShzdHJ1Y3QgdmNwdV9zdm0gKnN2bSlcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtNzkxLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6NzkyOlxcdHN2bV9zZXRfZWZlcih2Y3B1LCBzdm0tXFx1MDAzZW5lc3RlZC5zYXZlLmVmZXIpO1xcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtNzkzLVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYz0xMzIxPXZvaWQgbmVzdGVkX3N2bV92bWV4aXQoc3RydWN0IHZjcHVfc3ZtICpzdm0pXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE0MjYtXFx0a3ZtX3NldF9yZmxhZ3ModmNwdSwgdm1jYjAxLVxcdTAwM2VzYXZlLnJmbGFncyk7XFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxNDI3OlxcdHN2bV9zZXRfZWZlcih2Y3B1LCB2bWNiMDEtXFx1MDAzZXNhdmUuZWZlcik7XFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xNDI4LVxcdHN2bV9zZXRfY3IwKHZjcHUsIHZtY2IwMS1cXHUwMDNlc2F2ZS5jcjAgfCBYODZfQ1IwX1BFKTtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM9MjAxPXN0YXRpYyBpbnQgZ2V0X25wdF9sZXZlbCh2b2lkKVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy0yMDktXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYzoyMTA6aW50IHN2bV9zZXRfZWZlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBlZmVyKVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtMjExLXtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM9MjczMj1zdGF0aWMgaW50IGVmZXJfdHJhcChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTI3MzgtXFx0ICogQ2xlYXIgdGhlIEVGRVJfU1ZNRSBiaXQgZnJvbSBFRkVSLiBUaGUgU1ZNIGNvZGUgYWx3YXlzIHNldHMgdGhpc1xcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM6MjczOTpcXHQgKiBiaXQgaW4gc3ZtX3NldF9lZmVyKCksIGJ1dCBfX2t2bV92YWxpZF9lZmVyKCkgY2hlY2tzIGl0IGFnYWluc3RcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTI3NDAtXFx0ICogd2hldGhlciB0aGUgZ3Vlc3QgaGFzIFg4Nl9GRUFUVVJFX1NWTSAtIHRoaXMgYXZvaWRzIGEgZmFpbHVyZSBpZlxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYz01MzE0PXN0cnVjdCBrdm1feDg2X29wcyBzdm1feDg2X29wcyBfX2luaXRkYXRhID0ge1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy01MzU1LVxcdC5zZXRfY3I0ID0gc3ZtX3NldF9jcjQsXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYzo1MzU2OlxcdC5zZXRfZWZlciA9IHN2bV9zZXRfZWZlcixcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTUzNTctXFx0LmdldF9pZHQgPSBzdm1fZ2V0X2lkdCxcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmg9ODEwPXZvaWQgc3ZtX3VwZGF0ZV9sYnJ2KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uaC04MTEtXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uaDo4MTI6aW50IHN2bV9zZXRfZWZlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBlZmVyKTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oLTgxMy12b2lkIHN2bV9zZXRfY3IwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgbG9uZyBjcjApO1xcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmM9NDEzPXN0YXRpYyB2b2lkIHZ0X3NldF9jcjQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBsb25nIGNyNClcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jLTQyMC1cXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYzo0MjE6c3RhdGljIGludCB2dF9zZXRfZWZlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBlZmVyKVxcbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jLTQyMi17XFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYy00MjUtXFxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmM6NDI2OlxcdHJldHVybiB2bXhfc2V0X2VmZXIodmNwdSwgZWZlcik7XFxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmMtNDI3LX1cXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jPTg4MD1zdHJ1Y3Qga3ZtX3g4Nl9vcHMgdnRfeDg2X29wcyBfX2luaXRkYXRhID0ge1xcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmMtOTI0LVxcdC5zZXRfY3I0ID0gdnRfb3Aoc2V0X2NyNCksXFxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmM6OTI1OlxcdC5zZXRfZWZlciA9IHZ0X29wKHNldF9lZmVyKSxcXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYy05MjYtXFx0LmdldF9pZHQgPSB2dF9vcChnZXRfaWR0KSxcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmM9MjQyNj1zdGF0aWMgdm9pZCBwcmVwYXJlX3ZtY3MwMl9lYXJseShzdHJ1Y3QgdmNwdV92bXggKnZteCwgc3RydWN0IGxvYWRlZF92bWNzICp2bWNzMDEsXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jLTI1MzktXFx0ICogdm1jczEyJ3MgVk1fe0VOVFJZLEVYSVR9X0xPQURfSUEzMl9FRkVSIGFuZCBWTV9FTlRSWV9JQTMyRV9NT0RFXFxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYzoyNTQwOlxcdCAqIGFyZSBlbXVsYXRlZCBieSB2bXhfc2V0X2VmZXIoKSBpbiBwcmVwYXJlX3ZtY3MwMigpLCBidXQgc3BlY3VsYXRlXFxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy0yNTQxLVxcdCAqIG9uIHRoZSByZWxhdGVkIGJpdHMgKGlmIHN1cHBvcnRlZCBieSB0aGUgQ1BVKSBpbiB0aGUgaG9wZSB0aGF0XFxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYzoyNTQyOlxcdCAqIHdlIGNhbiBhdm9pZCBWTVdyaXRlcyBkdXJpbmcgdm14X3NldF9lZmVyKCkuXFxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy0yNTQzLVxcdCAqXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jLTI1NjQtXFx0ICogd2Ugc2hvdWxkIHVzZSBpdHMgZXhpdCBjb250cm9scy4gTm90ZSB0aGF0IFZNX0VYSVRfTE9BRF9JQTMyX0VGRVJcXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jOjI1NjU6XFx0ICogYml0cyBtYXkgYmUgbW9kaWZpZWQgYnkgdm14X3NldF9lZmVyKCkgaW4gcHJlcGFyZV92bWNzMDIoKS5cXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jLTI1NjYtXFx0ICovXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jPTI3NTU9c3RhdGljIGludCBwcmVwYXJlX3ZtY3MwMihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCB2bWNzMTIgKnZtY3MxMixcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmMtMjgzOC1cXHQvKiBOb3RlOiBtYXkgbW9kaWZ5IFZNX0VOVFJZL0VYSVRfQ09OVFJPTFMgYW5kIEdVRVNUL0hPU1RfSUEzMl9FRkVSICovXFxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYzoyODM5OlxcdHZteF9zZXRfZWZlcih2Y3B1LCB2Y3B1LVxcdTAwM2VhcmNoLmVmZXIpO1xcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmMtMjg0MC1cXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmM9NDc4Mz1zdGF0aWMgdm9pZCBsb2FkX3ZtY3MxMl9ob3N0X3N0YXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmMtNDc5NC1cXHRcXHR2Y3B1LVxcdTAwM2VhcmNoLmVmZXIgXFx1MDAyNj0gfihFRkVSX0xNQSB8IEVGRVJfTE1FKTtcXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jOjQ3OTU6XFx0dm14X3NldF9lZmVyKHZjcHUsIHZjcHUtXFx1MDAzZWFyY2guZWZlcik7XFxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy00Nzk2LVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYz00OTQzPXN0YXRpYyB2b2lkIG5lc3RlZF92bXhfcmVzdG9yZV9ob3N0X3N0YXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmMtNDk3Mi1cXHQgKi9cXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jOjQ5NzM6XFx0dm14X3NldF9lZmVyKHZjcHUsIG5lc3RlZF92bXhfZ2V0X3ZtY3MwMV9ndWVzdF9lZmVyKHZteCkpO1xcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmMtNDk3NC1cXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM9MzIwMT1zdGF0aWMgdm9pZCBlbnRlcl9ybW9kZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTMyNDgtXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzozMjQ5OmludCB2bXhfc2V0X2VmZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgZWZlcilcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTMyNTAte1xcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYz0zMjc0PXN0YXRpYyB2b2lkIGVudGVyX2xtb2RlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMzI4Ny1cXHR9XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzozMjg4OlxcdHZteF9zZXRfZWZlcih2Y3B1LCB2Y3B1LVxcdTAwM2VhcmNoLmVmZXIgfCBFRkVSX0xNQSk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy0zMjg5LX1cXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM9MzI5MT1zdGF0aWMgdm9pZCBleGl0X2xtb2RlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTMyOTIte1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6MzI5MzpcXHR2bXhfc2V0X2VmZXIodmNwdSwgdmNwdS1cXHUwMDNlYXJjaC5lZmVyIFxcdTAwMjYgfkVGRVJfTE1BKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTMyOTQtfVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguaD0zNTc9dm9pZCB2bXhfc2V0X2ludGVycnVwdF9zaGFkb3coc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBpbnQgbWFzayk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguaDozNTg6aW50IHZteF9zZXRfZWZlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBlZmVyKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5oLTM1OS12b2lkIHZteF9zZXRfY3IwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgbG9uZyBjcjApO1xcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC94ODZfb3BzLmg9NzE9Ym9vbCB2bXhfaXNfdmFsaWRfY3I0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgbG9uZyBjcjQpO1xcbmFyY2gveDg2L2t2bS92bXgveDg2X29wcy5oOjcyOmludCB2bXhfc2V0X2VmZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgZWZlcik7XFxuYXJjaC94ODYva3ZtL3ZteC94ODZfb3BzLmgtNzMtdm9pZCB2bXhfZ2V0X2lkdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBkZXNjX3B0ciAqZHQpO1xcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jPTk1MTk9dm9pZCBrdm1fdmNwdV9yZXNldChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGJvb2wgaW5pdF9ldmVudClcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYy05NjI1LVxcdGt2bV94ODZfY2FsbChzZXRfY3I0KSh2Y3B1LCAwKTtcXG5hcmNoL3g4Ni9rdm0veDg2LmM6OTYyNjpcXHRrdm1feDg2X2NhbGwoc2V0X2VmZXIpKHZjcHUsIDApO1xcbmFyY2gveDg2L2t2bS94ODYuYy05NjI3LVxcdGt2bV94ODZfY2FsbCh1cGRhdGVfZXhjZXB0aW9uX2JpdG1hcCkodmNwdSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDAwOjQ0OjA2Ljc1MzEyMzgyOVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk4ODU0OTQ3MTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBFRkVSIE1TUiBNb2RpZmljYXRpb24gaW4gS1ZNKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0IHRhcmdldHMgYGFyY2gveDg2L2t2bS9tc3JzLmNgIHNwZWNpZmljYWxseS4gSXQncyBmb2N1c2VkIG9uIHRoZSBga3ZtX3ZhbGlkX2VmZXJgIGFuZCBgc2V0X2VmZXJgIGZ1bmN0aW9ucywgd2hpY2gsIGFzIEkgdW5kZXJzdGFuZCBpdCwgYXJlIGNyaXRpY2FsIGZvciB2YWxpZGF0aW5nIGFuZCBhcHBseWluZyBtb2RpZmljYXRpb25zIHRvIHRoZSBFeHRlbmRlZCBGZWF0dXJlIEVuYWJsZSBSZWdpc3RlciAoRUZFUikgTVNSLiBUaGlzIGlzIGEgY3J1Y2lhbCBhcmVhIGZvciB2aXJ0dWFsaXphdGlvbiwgYWZmZWN0aW5nIHRoaW5ncyBsaWtlIGxvbmcgbW9kZSBlbnRyeSBhbmQgZW5hYmxpbmcgc3BlY2lmaWMgQ1BVIGZlYXR1cmVzIHdpdGhpbiBhIHZpcnR1YWwgbWFjaGluZS5cblxuVGhlIGtleSBjaGFuZ2UgaGVyZSBpcyB0aGUgaW50cm9kdWN0aW9uIG9mIGNoZWNraW5nIGFnYWluc3QgYGt2bV9jYXBzLnN1cHBvcnRlZF9lZmVyX2JpdHNgIGluc3RlYWQgb2YgdGhlIG9sZGVyIGBlZmVyX3Jlc2VydmVkX2JpdHNgLiBFc3NlbnRpYWxseSwgd2UncmUgc2hpZnRpbmcgaG93IHdlIHZhbGlkYXRlIHRoZSBFRkVSIE1TUiB1cGRhdGVzLiBUaGlzIGlzIGEgZGVmaW5pdGUgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aGluIHRoZSBLVk0gc3Vic3lzdGVtLCBhbmQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGF0IHNoaWZ0LiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IHRob3NlIGBrdm1fY2Fwc2AgYWN0dWFsbHkgKmFyZSogYW5kIGhvdyB0aGV5IHJlbGF0ZSB0byB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSBjYXBhYmlsaXRpZXMuXG5cbkkgbmVlZCB0byBjb25maXJtIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXQgcGxheSBoZXJlLiBUaGlzIGxpa2VseSB0b3VjaGVzIHRoZSBgS1ZNYCwgYEtWTV9BTURgLCBhbmQgYEtWTV9JTlRFTGAgb3B0aW9ucyB3aXRoaW4gdGhlIGtlcm5lbCBidWlsZCBjb25maWd1cmF0aW9uLCB3aGljaCBpcyBpbXBvcnRhbnQgdG8gZnVsbHkgZ3Jhc3AgdGhlIGNoYW5nZSdzIGltcGFjdC5cblxuSSdtIG1ha2luZyBhIG1lbnRhbCBub3RlIHRvIHZlcmlmeSB0aGUgc3Vycm91bmRpbmcgY29udGV4dDogYGt2bV9zZXR1cF9lZmVyX2NhcHNgLCB3aGljaCBJIGV4cGVjdCBzZXRzIHVwIHRoZSByZWxldmFudCBmZWF0dXJlIG1hc2tzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NzM5LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTU0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDAwOjQ0OjE2LjYzODYyMDgyM1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjMzNzYxMDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEtWTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9rdm0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIwOmNvbmZpZyBLVk1fWDg2XFxuYXJjaC94ODYva3ZtL0tjb25maWctMjEtXFx0ZGVmX3RyaXN0YXRlIEtWTSBpZiAoS1ZNX0lOVEVMICE9IG4gfHwgS1ZNX0FNRCAhPSBuKVxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctNTEtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6NTI6Y29uZmlnIEtWTVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTUzLVxcdHRyaXN0YXRlIFxcXCJLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy02OC1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo2OTpjb25maWcgS1ZNX1dFUlJPUlxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTcwLVxcdGJvb2wgXFxcIkNvbXBpbGUgS1ZNIHdpdGggLVdlcnJvclxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTgyLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjgzOmNvbmZpZyBLVk1fU1dfUFJPVEVDVEVEX1ZNXFxuYXJjaC94ODYva3ZtL0tjb25maWctODQtXFx0Ym9vbCBcXFwiRW5hYmxlIHN1cHBvcnQgZm9yIEtWTSBzb2Z0d2FyZS1wcm90ZWN0ZWQgVk1zXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctOTUtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6OTY6Y29uZmlnIEtWTV9JTlRFTFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTk3LVxcdHRyaXN0YXRlIFxcXCJLVk0gZm9yIEludGVsIChhbmQgY29tcGF0aWJsZSkgcHJvY2Vzc29ycyBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTA2LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjEwNzpjb25maWcgS1ZNX0lOVEVMX1BST1ZFX1ZFXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTA4LSAgICAgICAgYm9vbCBcXFwiQ2hlY2sgdGhhdCBndWVzdHMgZG8gbm90IHJlY2VpdmUgI1ZFIGV4Y2VwdGlvbnNcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz0xMjI9Y29uZmlnIFg4Nl9TR1hfS1ZNXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMzMtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTM0OmNvbmZpZyBLVk1fSU5URUxfVERYXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTM1LVxcdGJvb2wgXFxcIkludGVsIFRydXN0IERvbWFpbiBFeHRlbnNpb25zIChURFgpIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNDUtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTQ2OmNvbmZpZyBLVk1fQU1EXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTQ3LVxcdHRyaXN0YXRlIFxcXCJLVk0gZm9yIEFNRCBwcm9jZXNzb3JzIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNTUtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTU2OmNvbmZpZyBLVk1fQU1EX1NFVlxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE1Ny1cXHRib29sIFxcXCJBTUQgU2VjdXJlIEVuY3J5cHRlZCBWaXJ0dWFsaXphdGlvbiAoU0VWKSBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTcxLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE3Mjpjb25maWcgS1ZNX0lPQVBJQ1xcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE3My1cXHRib29sIFxcXCJJL08gQVBJQywgUElDLCBhbmQgUElUIGVtdWxhdGlvblxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE4MS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxODI6Y29uZmlnIEtWTV9TTU1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xODMtXFx0Ym9vbCBcXFwiU3lzdGVtIE1hbmFnZW1lbnQgTW9kZSBlbXVsYXRpb25cXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xOTItXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTkzOmNvbmZpZyBLVk1fSFlQRVJWXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTk0LVxcdGJvb2wgXFxcIlN1cHBvcnQgZm9yIE1pY3Jvc29mdCBIeXBlci1WIGVtdWxhdGlvblxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIwNi1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMDc6Y29uZmlnIEtWTV9YRU5cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMDgtXFx0Ym9vbCBcXFwiU3VwcG9ydCBmb3IgWGVuIGh5cGVyY2FsbCBpbnRlcmZhY2VcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMTUtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MjE2OmNvbmZpZyBLVk1fUFJPVkVfTU1VXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjE3LVxcdGJvb2wgXFxcIlByb3ZlIEtWTSBNTVUgY29ycmVjdG5lc3NcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMjgtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MjI5OmNvbmZpZyBLVk1fRVhURVJOQUxfV1JJVEVfVFJBQ0tJTkdcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzAtXFx0Ym9vbFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIzMS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMzI6Y29uZmlnIEtWTV9NQVhfTlJfVkNQVVNcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzMtXFx0aW50IFxcXCJNYXhpbXVtIG51bWJlciBvZiB2Q1BVcyBwZXIgS1ZNIGd1ZXN0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwMDo0NDoxNi43NjIwMDI1MTRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1OTQ3NzIzNTQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgS1ZNIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBLVk0gcGF0Y2gsIGFuZCB0aGUga2V5IGNvbmZpZ3VyYXRpb25zIGhlcmUgYXJlIG9idmlvdXNseSBgS1ZNYCwgYnV0IGFsc28gcG90ZW50aWFsbHkgYEtWTV9BTURgIGFuZCBgS1ZNX0lOVEVMYC4gSSdsbCBmaXJzdCBjb25maXJtIHRoYXQganVzdCBgS1ZNYCBpdHNlbGYgaXMgc3VmZmljaWVudCBmb3IgdGhpcyBwYXJ0aWN1bGFyIGNoZWNrLiBBbHJpZ2h0LCBnb29kLCBpdCBhcHBlYXJzIHRoYXQgYEtWTWAgaXMgaW5kZWVkIGVub3VnaCB0byBtb3ZlIGZvcndhcmQuXG5cbk5vdywgSSdtIGRpdmluZyBkZWVwZXIgaW50byB0aGUgaW1wbGVtZW50YXRpb24gZGV0YWlscy4gSSBuZWVkIHRvIHZlcmlmeSB0aGUgcHJlc2VuY2Ugb2YgYSBmZXcgY3JpdGljYWwgZnVuY3Rpb25zLiBGaXJzdCwgaXMgYGt2bV9zZXR1cF9lZmVyX2NhcHNgIGluIGBhcmNoL3g4Ni9rdm0veDg2LmNgPyBZZXMsIGl0J3MgdGhlcmUuIE5leHQsIEknbGwgY2hlY2sgZm9yIGBrdm1fdmFsaWRfZWZlcmAgaW4gYGFyY2gveDg2L2t2bS9tc3JzLmNgIOKAkyB5ZXAsIHRoYXQgZnVuY3Rpb24gZXhpc3RzIHRvby4gQW5kIGxhc3RseSwgSSdsbCBjb25maXJtIHRoYXQgYHNldF9lZmVyYCBpcyBwcmVzZW50IGFsc28gaW4gYGFyY2gveDg2L2t2bS9tc3JzLmNgLiBHb29kLCBhbGwgdGhyZWUgYXJlIHByZXNlbnQgYXMgZXhwZWN0ZWQuXG5cbkl0J3MgZXZpZGVudCB0aGF0IHRoaXMgcGF0Y2ggaXMgbWFraW5nIGEgZnVuY3Rpb25hbCBjaGFuZ2UuIEl0IHNlZW1zIHRvIGJlIHJlbW92aW5nIGBrdm1fZW5hYmxlX2VmZXJfYml0c2AgYW5kLCBpbnN0ZWFkLCBkaXJlY3RseSBtb2RpZnlpbmcgYGt2bV9jYXBzLnN1cHBvcnRlZF9lZmVyX2JpdHNgLlxuXG5BbHJpZ2h0LCBJJ20gc2F0aXNmaWVkLiBOb3csIGl0J3MgdGltZSB0byBkb2N1bWVudCB0aGVzZSByZXN1bHRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDQ1MSwiT3V0cHV0VG9rZW5zIjoxMzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDA6NDQ6MjIuNzA5NzI4OTM3WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ5ODg3MDM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIixcbiAgICBcIktWTV9BTURcIixcbiAgICBcIktWTV9JTlRFTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV92YWxpZF9lZmVyXCIsXG4gICAgXCJzZXRfZWZlclwiLFxuICAgIFwia3ZtX3NldHVwX2VmZXJfY2Fwc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGhvdyBLVk0gdmFsaWRhdGVzIGFuZCBzZXRzIHRoZSBFRkVSIE1TUiBieSByZXBsYWNpbmcgYGVmZXJfcmVzZXJ2ZWRfYml0c2Agd2l0aCBga3ZtX2NhcHMuc3VwcG9ydGVkX2VmZXJfYml0c2AuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIEtWTSBsb2dpYyB0aGF0IGFmZmVjdHMgZ3Vlc3QgZXhlY3V0aW9uIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiLFxuICAgIFwiS1ZNX0FNRFwiLFxuICAgIFwiS1ZNX0lOVEVMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX3ZhbGlkX2VmZXJcIixcbiAgICBcInNldF9lZmVyXCIsXG4gICAgXCJrdm1fc2V0dXBfZWZlcl9jYXBzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgaG93IEtWTSB2YWxpZGF0ZXMgYW5kIHNldHMgdGhlIEVGRVIgTVNSIGJ5IHJlcGxhY2luZyBgZWZlcl9yZXNlcnZlZF9iaXRzYCB3aXRoIGBrdm1fY2Fwcy5zdXBwb3J0ZWRfZWZlcl9iaXRzYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgS1ZNIGxvZ2ljIHRoYXQgYWZmZWN0cyBndWVzdCBleGVjdXRpb24gYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowsssxz[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-14 00:33:40 +0000 UTC FinishedAt: 2026-07-14 00:44:24 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "3aec122bdcaf6f8c4ecfc7f6adf6773015ced676", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM", "KVM_AMD", "KVM_INTEL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "3aec122bdcaf6f8c4ecfc7f6adf6773015ced676", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM", "KVM_AMD", "KVM_INTEL" ], "series_id": "f4243b36-4236-4dc6-9118-ce8ecc23e6fa" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "kvm_valid_efer", "set_efer", "kvm_setup_efer_caps" ], "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+CgkJCTx0ZD4yMDI2LzA3LzE0IDAwOjQzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7LAogICAgJiMzNDtLVk1fQU1EJiMzNDssCiAgICAmIzM0O0tWTV9JTlRFTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV92YWxpZF9lZmVyJiMzNDssCiAgICAmIzM0O3NldF9lZmVyJiMzNDssCiAgICAmIzM0O2t2bV9zZXR1cF9lZmVyX2NhcHMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgaG93IEtWTSB2YWxpZGF0ZXMgYW5kIHNldHMgdGhlIEVGRVIgTVNSIGJ5IHJlcGxhY2luZyBgZWZlcl9yZXNlcnZlZF9iaXRzYCB3aXRoIGBrdm1fY2Fwcy5zdXBwb3J0ZWRfZWZlcl9iaXRzYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgS1ZNIGxvZ2ljIHRoYXQgYWZmZWN0cyBndWVzdCBleGVjdXRpb24gYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDA6NDM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA0MjJlMzIwNmRmZjg1MjVjNzVmYWRjY2JiOWNlNGU5YzEyOWY5YTcyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdWwgMTQgMDA6NDM6NTMgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmhcbmluZGV4IDU4ZjE1NmFlMzFlNzUwLi44MGI5MmVkNDQwZmExOCAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmhcbkBAIC0yNzQsNiAmIzQzOzI3NCw4IEBAIHN0cnVjdCBrdm1fY2FwcyB7XG4gXHR1NjQgc3VwcG9ydGVkX3hzcztcbiBcdHU2NCBzdXBwb3J0ZWRfcGVyZl9jYXA7XG4gXG4mIzQzO1x0dTY0IHN1cHBvcnRlZF9lZmVyX2JpdHM7XG4mIzQzO1xuIFx0dTY0IHN1cHBvcnRlZF9xdWlya3M7XG4gXHR1NjQgaW5hcHBsaWNhYmxlX3F1aXJrcztcbiB9O1xuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9tc3JzLmMgYi9hcmNoL3g4Ni9rdm0vbXNycy5jXG5pbmRleCBjMjMwYjE4ZDg3ZTM4ZS4uNjZmYTcxNDBkNjVkOWIgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9rdm0vbXNycy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0vbXNycy5jXG5AQCAtMTksMTcgJiM0MzsxOSw2IEBAIGJvb2wgX19yZWFkX21vc3RseSByZXBvcnRfaWdub3JlZF9tc3JzID0gdHJ1ZTtcbiBtb2R1bGVfcGFyYW0ocmVwb3J0X2lnbm9yZWRfbXNycywgYm9vbCwgMDY0NCk7XG4gRVhQT1JUX1NZTUJPTF9GT1JfS1ZNX0lOVEVSTkFMKHJlcG9ydF9pZ25vcmVkX21zcnMpO1xuIFxuLS8qIEVGRVIgZGVmYXVsdHM6XG4tICogLSBlbmFibGUgc3lzY2FsbCBwZXIgZGVmYXVsdCBiZWNhdXNlIGl0cyBlbXVsYXRlZCBieSBLVk1cbi0gKiAtIGVuYWJsZSBMTUUgYW5kIExNQSBwZXIgZGVmYXVsdCBvbiA2NCBiaXQgS1ZNXG4tICovXG4tI2lmZGVmIENPTkZJR19YODZfNjRcbi1zdGF0aWNcbi11NjQgX19yZWFkX21vc3RseSBlZmVyX3Jlc2VydmVkX2JpdHMgPSB+KCh1NjQpKEVGRVJfU0NFIHwgRUZFUl9MTUUgfCBFRkVSX0xNQSkpO1xuLSNlbHNlXG4tc3RhdGljIHU2NCBfX3JlYWRfbW9zdGx5IGVmZXJfcmVzZXJ2ZWRfYml0cyA9IH4oKHU2NClFRkVSX1NDRSk7XG4tI2VuZGlmXG4tXG4gI2RlZmluZSBNQVhfSU9fTVNSUyAyNTZcbiBcbiBzdHJ1Y3QgbXNyX2JpdG1hcF9yYW5nZSB7XG5AQCAtNjE0LDcgJiM0Mzs2MDMsNyBAQCBzdGF0aWMgYm9vbCBfX2t2bV92YWxpZF9lZmVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGVmZXIpXG4gfVxuIGJvb2wga3ZtX3ZhbGlkX2VmZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgZWZlcilcbiB7XG4tXHRpZiAoZWZlciBcdTAwMjYgZWZlcl9yZXNlcnZlZF9iaXRzKVxuJiM0MztcdGlmIChlZmVyIFx1MDAyNiB+a3ZtX2NhcHMuc3VwcG9ydGVkX2VmZXJfYml0cylcbiBcdFx0cmV0dXJuIGZhbHNlO1xuIFxuIFx0cmV0dXJuIF9fa3ZtX3ZhbGlkX2VmZXIodmNwdSwgZWZlcik7XG5AQCAtNjI3LDcgJiM0Mzs2MTYsNyBAQCBzdGF0aWMgaW50IHNldF9lZmVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IG1zcl9kYXRhICptc3JfaW5mbylcbiBcdHU2NCBlZmVyID0gbXNyX2luZm8tXHUwMDNlZGF0YTtcbiBcdGludCByO1xuIFxuLVx0aWYgKGVmZXIgXHUwMDI2IGVmZXJfcmVzZXJ2ZWRfYml0cylcbiYjNDM7XHRpZiAoZWZlciBcdTAwMjYgfmt2bV9jYXBzLnN1cHBvcnRlZF9lZmVyX2JpdHMpXG4gXHRcdHJldHVybiAxO1xuIFxuIFx0aWYgKCFtc3JfaW5mby1cdTAwM2Vob3N0X2luaXRpYXRlZCkge1xuQEAgLTY1OCwxMiAmIzQzOzY0Nyw2IEBAIHN0YXRpYyBpbnQgc2V0X2VmZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3QgbXNyX2RhdGEgKm1zcl9pbmZvKVxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuLXZvaWQga3ZtX2VuYWJsZV9lZmVyX2JpdHModTY0IG1hc2spXG4te1xuLSAgICAgICBlZmVyX3Jlc2VydmVkX2JpdHMgXHUwMDI2PSB+bWFzaztcbi19XG4tRVhQT1JUX1NZTUJPTF9GT1JfS1ZNX0lOVEVSTkFMKGt2bV9lbmFibGVfZWZlcl9iaXRzKTtcbi1cbiBib29sIGt2bV9tc3JfYWxsb3dlZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBpbmRleCwgdTMyIHR5cGUpXG4ge1xuIFx0c3RydWN0IGt2bV94ODZfbXNyX2ZpbHRlciAqbXNyX2ZpbHRlcjtcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vbXNycy5oIGIvYXJjaC94ODYva3ZtL21zcnMuaFxuaW5kZXggOWM1YzZiMzNlNThmNTcuLjdjYzE4MmExNWIzYjNlIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL21zcnMuaFxuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYva3ZtL21zcnMuaFxuQEAgLTU4LDcgJiM0Mzs1OCw2IEBAIGludCBrdm1fZ2V0X3NldF9vbmVfcmVnKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgaW50IGlvY3RsLFxuIGludCBrdm1fZ2V0X3JlZ19saXN0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbiBcdFx0ICAgICBzdHJ1Y3Qga3ZtX3JlZ19saXN0IF9fdXNlciAqdXNlcl9saXN0KTtcbiBcbi12b2lkIGt2bV9lbmFibGVfZWZlcl9iaXRzKHU2NCk7XG4gYm9vbCBrdm1fdmFsaWRfZWZlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBlZmVyKTtcbiBpbnQga3ZtX2VtdWxhdGVfbXNyX3JlYWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgaW5kZXgsIHU2NCAqZGF0YSk7XG4gaW50IGt2bV9lbXVsYXRlX21zcl93cml0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBpbmRleCwgdTY0IGRhdGEpO1xuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmMgYi9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jXG5pbmRleCA5MTI4NmQ0NmQxM2FkYi4uMDk3OTlmZDhlZjM4ZjUgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jXG5AQCAtNTYyOCwxMCAmIzQzOzU2MjgsNiBAQCBzdGF0aWMgX19pbml0IGludCBzdm1faGFyZHdhcmVfc2V0dXAodm9pZClcbiBcbiBcdGlmIChuZXN0ZWQpIHtcbiBcdFx0cHJfaW5mbyhcJiMzNDtOZXN0ZWQgVmlydHVhbGl6YXRpb24gZW5hYmxlZFxcblwmIzM0Oyk7XG4tXHRcdGt2bV9lbmFibGVfZWZlcl9iaXRzKEVGRVJfU1ZNRSk7XG4tXHRcdGlmICghYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX0VGRVJfTE1TTEVfTUJaKSlcbi1cdFx0XHRrdm1fZW5hYmxlX2VmZXJfYml0cyhFRkVSX0xNU0xFKTtcbi1cbiBcdFx0ciA9IG5lc3RlZF9zdm1faW5pdF9tc3JwbV9tZXJnZV9vZmZzZXRzKCk7XG4gXHRcdGlmIChyKVxuIFx0XHRcdHJldHVybiByO1xuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS94ODYuYyBiL2FyY2gveDg2L2t2bS94ODYuY1xuaW5kZXggMWY1ZGM2ODVmMDQ5MGQuLmEwMjBiMWNiYjNmM2U4IDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL3g4Ni5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0veDg2LmNcbkBAIC02OTEzLDE0ICYjNDM7NjkxMywyNiBAQCBFWFBPUlRfU1lNQk9MX0ZPUl9LVk1fSU5URVJOQUwoa3ZtX3NldHVwX3hzc19jYXBzKTtcbiBcbiBzdGF0aWMgdm9pZCBrdm1fc2V0dXBfZWZlcl9jYXBzKHZvaWQpXG4ge1xuJiM0MztcdC8qIEVuYWJsZSBzeXNjYWxsIGJ5IGRlZmF1bHQgYmVjYXVzZSBpdHMgZW11bGF0ZWQgYnkgS1ZNICovXG4mIzQzO1x0a3ZtX2NhcHMuc3VwcG9ydGVkX2VmZXJfYml0cyA9ICh1NjQpRUZFUl9TQ0U7XG4mIzQzO1xuJiM0MztcdGlmIChrdm1fY3B1X2NhcF9oYXMoWDg2X0ZFQVRVUkVfTE0pKVxuJiM0MztcdFx0a3ZtX2NhcHMuc3VwcG9ydGVkX2VmZXJfYml0cyB8PSAoRUZFUl9MTUUgfCBFRkVSX0xNQSk7XG4mIzQzO1xuIFx0aWYgKGt2bV9jcHVfY2FwX2hhcyhYODZfRkVBVFVSRV9OWCkpXG4tXHRcdGt2bV9lbmFibGVfZWZlcl9iaXRzKEVGRVJfTlgpO1xuJiM0MztcdFx0a3ZtX2NhcHMuc3VwcG9ydGVkX2VmZXJfYml0cyB8PSBFRkVSX05YO1xuIFxuIFx0aWYgKGt2bV9jcHVfY2FwX2hhcyhYODZfRkVBVFVSRV9GWFNSX09QVCkpXG4tXHRcdGt2bV9lbmFibGVfZWZlcl9iaXRzKEVGRVJfRkZYU1IpO1xuJiM0MztcdFx0a3ZtX2NhcHMuc3VwcG9ydGVkX2VmZXJfYml0cyB8PSBFRkVSX0ZGWFNSO1xuIFxuIFx0aWYgKGt2bV9jcHVfY2FwX2hhcyhYODZfRkVBVFVSRV9BVVRPSUJSUykpXG4tXHRcdGt2bV9lbmFibGVfZWZlcl9iaXRzKEVGRVJfQVVUT0lCUlMpO1xuJiM0MztcdFx0a3ZtX2NhcHMuc3VwcG9ydGVkX2VmZXJfYml0cyB8PSBFRkVSX0FVVE9JQlJTO1xuJiM0MztcbiYjNDM7XHRpZiAoa3ZtX2NwdV9jYXBfaGFzKFg4Nl9GRUFUVVJFX1NWTSkpIHtcbiYjNDM7XHRcdGt2bV9jYXBzLnN1cHBvcnRlZF9lZmVyX2JpdHMgfD0gRUZFUl9TVk1FO1xuJiM0MztcdFx0aWYgKCFib290X2NwdV9oYXMoWDg2X0ZFQVRVUkVfRUZFUl9MTVNMRV9NQlopKVxuJiM0MztcdFx0XHRrdm1fY2Fwcy5zdXBwb3J0ZWRfZWZlcl9iaXRzIHw9IEVGRVJfTE1TTEU7XG4mIzQzO1x0fVxuIH1cbiBcbiBzdGF0aWMgdm9pZCBrdm1fbmVzdGVkX29wc191cGRhdGUoY29uc3Qgc3RydWN0IGt2bV94ODZfbmVzdGVkX29wcyAqbmVzdGVkX29wcylcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwMDo0MzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OywKICAgICYjMzQ7S1ZNX0FNRCYjMzQ7LAogICAgJiMzNDtLVk1fSU5URUwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1fdmFsaWRfZWZlciYjMzQ7LAogICAgJiMzNDtzZXRfZWZlciYjMzQ7LAogICAgJiMzNDtrdm1fc2V0dXBfZWZlcl9jYXBzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGhvdyBLVk0gdmFsaWRhdGVzIGFuZCBzZXRzIHRoZSBFRkVSIE1TUiBieSByZXBsYWNpbmcgYGVmZXJfcmVzZXJ2ZWRfYml0c2Agd2l0aCBga3ZtX2NhcHMuc3VwcG9ydGVkX2VmZXJfYml0c2AuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIEtWTSBsb2dpYyB0aGF0IGFmZmVjdHMgZ3Vlc3QgZXhlY3V0aW9uIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA0MjJlMzIwNmRmZjg1MjVjNzVmYWRjY2JiOWNlNGU5YzEyOWY5YTcyCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBKdWwgMTQgMDA6NDM6NTMgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaAppbmRleCA1OGYxNTZhZTMxZTc1MC4uODBiOTJlZDQ0MGZhMTggMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaApAQCAtMjc0LDYgJiM0MzsyNzQsOCBAQCBzdHJ1Y3Qga3ZtX2NhcHMgewogCXU2NCBzdXBwb3J0ZWRfeHNzOwogCXU2NCBzdXBwb3J0ZWRfcGVyZl9jYXA7CiAKJiM0MzsJdTY0IHN1cHBvcnRlZF9lZmVyX2JpdHM7CiYjNDM7CiAJdTY0IHN1cHBvcnRlZF9xdWlya3M7CiAJdTY0IGluYXBwbGljYWJsZV9xdWlya3M7CiB9OwpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL21zcnMuYyBiL2FyY2gveDg2L2t2bS9tc3JzLmMKaW5kZXggYzIzMGIxOGQ4N2UzOGUuLjY2ZmE3MTQwZDY1ZDliIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rdm0vbXNycy5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS9tc3JzLmMKQEAgLTE5LDE3ICYjNDM7MTksNiBAQCBib29sIF9fcmVhZF9tb3N0bHkgcmVwb3J0X2lnbm9yZWRfbXNycyA9IHRydWU7CiBtb2R1bGVfcGFyYW0ocmVwb3J0X2lnbm9yZWRfbXNycywgYm9vbCwgMDY0NCk7CiBFWFBPUlRfU1lNQk9MX0ZPUl9LVk1fSU5URVJOQUwocmVwb3J0X2lnbm9yZWRfbXNycyk7CiAKLS8qIEVGRVIgZGVmYXVsdHM6Ci0gKiAtIGVuYWJsZSBzeXNjYWxsIHBlciBkZWZhdWx0IGJlY2F1c2UgaXRzIGVtdWxhdGVkIGJ5IEtWTQotICogLSBlbmFibGUgTE1FIGFuZCBMTUEgcGVyIGRlZmF1bHQgb24gNjQgYml0IEtWTQotICovCi0jaWZkZWYgQ09ORklHX1g4Nl82NAotc3RhdGljCi11NjQgX19yZWFkX21vc3RseSBlZmVyX3Jlc2VydmVkX2JpdHMgPSB+KCh1NjQpKEVGRVJfU0NFIHwgRUZFUl9MTUUgfCBFRkVSX0xNQSkpOwotI2Vsc2UKLXN0YXRpYyB1NjQgX19yZWFkX21vc3RseSBlZmVyX3Jlc2VydmVkX2JpdHMgPSB+KCh1NjQpRUZFUl9TQ0UpOwotI2VuZGlmCi0KICNkZWZpbmUgTUFYX0lPX01TUlMgMjU2CiAKIHN0cnVjdCBtc3JfYml0bWFwX3JhbmdlIHsKQEAgLTYxNCw3ICYjNDM7NjAzLDcgQEAgc3RhdGljIGJvb2wgX19rdm1fdmFsaWRfZWZlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBlZmVyKQogfQogYm9vbCBrdm1fdmFsaWRfZWZlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBlZmVyKQogewotCWlmIChlZmVyICZhbXA7IGVmZXJfcmVzZXJ2ZWRfYml0cykKJiM0MzsJaWYgKGVmZXIgJmFtcDsgfmt2bV9jYXBzLnN1cHBvcnRlZF9lZmVyX2JpdHMpCiAJCXJldHVybiBmYWxzZTsKIAogCXJldHVybiBfX2t2bV92YWxpZF9lZmVyKHZjcHUsIGVmZXIpOwpAQCAtNjI3LDcgJiM0Mzs2MTYsNyBAQCBzdGF0aWMgaW50IHNldF9lZmVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IG1zcl9kYXRhICptc3JfaW5mbykKIAl1NjQgZWZlciA9IG1zcl9pbmZvLSZndDtkYXRhOwogCWludCByOwogCi0JaWYgKGVmZXIgJmFtcDsgZWZlcl9yZXNlcnZlZF9iaXRzKQomIzQzOwlpZiAoZWZlciAmYW1wOyB+a3ZtX2NhcHMuc3VwcG9ydGVkX2VmZXJfYml0cykKIAkJcmV0dXJuIDE7CiAKIAlpZiAoIW1zcl9pbmZvLSZndDtob3N0X2luaXRpYXRlZCkgewpAQCAtNjU4LDEyICYjNDM7NjQ3LDYgQEAgc3RhdGljIGludCBzZXRfZWZlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBtc3JfZGF0YSAqbXNyX2luZm8pCiAJcmV0dXJuIDA7CiB9CiAKLXZvaWQga3ZtX2VuYWJsZV9lZmVyX2JpdHModTY0IG1hc2spCi17Ci0gICAgICAgZWZlcl9yZXNlcnZlZF9iaXRzICZhbXA7PSB+bWFzazsKLX0KLUVYUE9SVF9TWU1CT0xfRk9SX0tWTV9JTlRFUk5BTChrdm1fZW5hYmxlX2VmZXJfYml0cyk7Ci0KIGJvb2wga3ZtX21zcl9hbGxvd2VkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTMyIGluZGV4LCB1MzIgdHlwZSkKIHsKIAlzdHJ1Y3Qga3ZtX3g4Nl9tc3JfZmlsdGVyICptc3JfZmlsdGVyOwpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL21zcnMuaCBiL2FyY2gveDg2L2t2bS9tc3JzLmgKaW5kZXggOWM1YzZiMzNlNThmNTcuLjdjYzE4MmExNWIzYjNlIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rdm0vbXNycy5oCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS9tc3JzLmgKQEAgLTU4LDcgJiM0Mzs1OCw2IEBAIGludCBrdm1fZ2V0X3NldF9vbmVfcmVnKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgaW50IGlvY3RsLAogaW50IGt2bV9nZXRfcmVnX2xpc3Qoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LAogCQkgICAgIHN0cnVjdCBrdm1fcmVnX2xpc3QgX191c2VyICp1c2VyX2xpc3QpOwogCi12b2lkIGt2bV9lbmFibGVfZWZlcl9iaXRzKHU2NCk7CiBib29sIGt2bV92YWxpZF9lZmVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGVmZXIpOwogaW50IGt2bV9lbXVsYXRlX21zcl9yZWFkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTMyIGluZGV4LCB1NjQgKmRhdGEpOwogaW50IGt2bV9lbXVsYXRlX21zcl93cml0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBpbmRleCwgdTY0IGRhdGEpOwpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3N2bS9zdm0uYyBiL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmMKaW5kZXggOTEyODZkNDZkMTNhZGIuLjA5Nzk5ZmQ4ZWYzOGY1IDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmMKQEAgLTU2MjgsMTAgJiM0Mzs1NjI4LDYgQEAgc3RhdGljIF9faW5pdCBpbnQgc3ZtX2hhcmR3YXJlX3NldHVwKHZvaWQpCiAKIAlpZiAobmVzdGVkKSB7CiAJCXByX2luZm8oJiMzNDtOZXN0ZWQgVmlydHVhbGl6YXRpb24gZW5hYmxlZFxuJiMzNDspOwotCQlrdm1fZW5hYmxlX2VmZXJfYml0cyhFRkVSX1NWTUUpOwotCQlpZiAoIWJvb3RfY3B1X2hhcyhYODZfRkVBVFVSRV9FRkVSX0xNU0xFX01CWikpCi0JCQlrdm1fZW5hYmxlX2VmZXJfYml0cyhFRkVSX0xNU0xFKTsKLQogCQlyID0gbmVzdGVkX3N2bV9pbml0X21zcnBtX21lcmdlX29mZnNldHMoKTsKIAkJaWYgKHIpCiAJCQlyZXR1cm4gcjsKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS94ODYuYyBiL2FyY2gveDg2L2t2bS94ODYuYwppbmRleCAxZjVkYzY4NWYwNDkwZC4uYTAyMGIxY2JiM2YzZTggMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS94ODYuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0veDg2LmMKQEAgLTY5MTMsMTQgJiM0Mzs2OTEzLDI2IEBAIEVYUE9SVF9TWU1CT0xfRk9SX0tWTV9JTlRFUk5BTChrdm1fc2V0dXBfeHNzX2NhcHMpOwogCiBzdGF0aWMgdm9pZCBrdm1fc2V0dXBfZWZlcl9jYXBzKHZvaWQpCiB7CiYjNDM7CS8qIEVuYWJsZSBzeXNjYWxsIGJ5IGRlZmF1bHQgYmVjYXVzZSBpdHMgZW11bGF0ZWQgYnkgS1ZNICovCiYjNDM7CWt2bV9jYXBzLnN1cHBvcnRlZF9lZmVyX2JpdHMgPSAodTY0KUVGRVJfU0NFOwomIzQzOwomIzQzOwlpZiAoa3ZtX2NwdV9jYXBfaGFzKFg4Nl9GRUFUVVJFX0xNKSkKJiM0MzsJCWt2bV9jYXBzLnN1cHBvcnRlZF9lZmVyX2JpdHMgfD0gKEVGRVJfTE1FIHwgRUZFUl9MTUEpOwomIzQzOwogCWlmIChrdm1fY3B1X2NhcF9oYXMoWDg2X0ZFQVRVUkVfTlgpKQotCQlrdm1fZW5hYmxlX2VmZXJfYml0cyhFRkVSX05YKTsKJiM0MzsJCWt2bV9jYXBzLnN1cHBvcnRlZF9lZmVyX2JpdHMgfD0gRUZFUl9OWDsKIAogCWlmIChrdm1fY3B1X2NhcF9oYXMoWDg2X0ZFQVRVUkVfRlhTUl9PUFQpKQotCQlrdm1fZW5hYmxlX2VmZXJfYml0cyhFRkVSX0ZGWFNSKTsKJiM0MzsJCWt2bV9jYXBzLnN1cHBvcnRlZF9lZmVyX2JpdHMgfD0gRUZFUl9GRlhTUjsKIAogCWlmIChrdm1fY3B1X2NhcF9oYXMoWDg2X0ZFQVRVUkVfQVVUT0lCUlMpKQotCQlrdm1fZW5hYmxlX2VmZXJfYml0cyhFRkVSX0FVVE9JQlJTKTsKJiM0MzsJCWt2bV9jYXBzLnN1cHBvcnRlZF9lZmVyX2JpdHMgfD0gRUZFUl9BVVRPSUJSUzsKJiM0MzsKJiM0MzsJaWYgKGt2bV9jcHVfY2FwX2hhcyhYODZfRkVBVFVSRV9TVk0pKSB7CiYjNDM7CQlrdm1fY2Fwcy5zdXBwb3J0ZWRfZWZlcl9iaXRzIHw9IEVGRVJfU1ZNRTsKJiM0MzsJCWlmICghYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX0VGRVJfTE1TTEVfTUJaKSkKJiM0MzsJCQlrdm1fY2Fwcy5zdXBwb3J0ZWRfZWZlcl9iaXRzIHw9IEVGRVJfTE1TTEU7CiYjNDM7CX0KIH0KIAogc3RhdGljIHZvaWQga3ZtX25lc3RlZF9vcHNfdXBkYXRlKGNvbnN0IHN0cnVjdCBrdm1feDg2X25lc3RlZF9vcHMgKm5lc3RlZF9vcHMpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDAwOjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3MzUKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAzMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBLVk0gRUZFUiBCaXQgSGFuZGxpbmcgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHg4NiBLVk0uIEl0JiMzOTtzIGFuIGludGVyZXN0aW5nIG9uZSDigJMgc2VlbXMgbGlrZSB0aGV5JiMzOTtyZSBzdHJlYW1saW5pbmcgaG93IEVGRVIgYml0cyBhcmUgaGFuZGxlZC4gU3BlY2lmaWNhbGx5LCB0aGV5JiMzOTt2ZSBkaXRjaGVkIHRoZSBvbGQgYGVmZXJfcmVzZXJ2ZWRfYml0c2AgYW5kIGBrdm1fZW5hYmxlX2VmZXJfYml0c2AgY29uc3RydWN0cy4gVGhleSYjMzk7dmUgcmVwbGFjZWQgdGhlbSB3aXRoIGEgc2luZ2xlIGBrdm1fY2Fwcy5zdXBwb3J0ZWRfZWZlcl9iaXRzYCB2YXJpYWJsZSwgYW5kIHRoZXkmIzM5O3ZlIGNvbnNvbGlkYXRlZCB0aGUgaW5pdGlhbGl6YXRpb24gb2YgRUZFUiBjYXBhYmlsaXRpZXMgd2l0aGluIGBrdm1fc2V0dXBfZWZlcl9jYXBzYCwgbW92aW5nIGl0IGZyb20gaXRzIHByZXZpb3VzIGxvY2F0aW9ucyBpbiBgc3ZtX2hhcmR3YXJlX3NldHVwYCBhbmQgYGt2bV9zZXR1cF9lZmVyX2NhcHNgLgoKRnVuY3Rpb25hbGx5LCB0aGlzIGRlZmluaXRlbHkgYWx0ZXJzIGhvdyB3ZSB2YWxpZGF0ZSBFRkVSIGJpdHMsIHdoaWNoIGlzIHNvbWV0aGluZyBJIG5lZWQgdG8gZnVsbHkgdW5kZXJzdGFuZC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBpcyBhIGNvcmUgS1ZNIGNoYW5nZSwgc28gcmVhY2hhYmlsaXR5IHNob3VsZG4mIzM5O3QgYmUgYW4gaXNzdWUuIEtWTSBpcyBmdW5kYW1lbnRhbCB0byB2aXJ0dWFsaXphdGlvbiBvbiB4ODYuIFRoaXMgYWxzbyBtZWFucyB0aGlzIG5lZWRzIHNvbWUgc2VyaW91cyBmdXp6aW5nLgoKTXkgaW1tZWRpYXRlIG5leHQgc3RlcHMgYXJlIHRvIG5haWwgZG93biB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBUaGUga2V5IGZpbGVzIGFwcGVhciB0byBiZSBgYXJjaC94ODYva3ZtL3g4Ni5jYCwgYGFyY2gveDg2L2t2bS9tc3JzLmNgLCBhbmQgYGFyY2gveDg2L2t2bS9zdm0vc3ZtLmNgLCBzbyBpdCYjMzk7cyBhbGwgeDg2IEtWTS4gVGhpcyBtZWFucyBteSBmb2N1cyB3aWxsIGJlIG9uIGBLVk1gLCBgS1ZNX0FNRGAsIGFuZCBgS1ZNX0lOVEVMYCBjb25maWd1cmF0aW9ucy4KCk5vdywgdG8gcHJlcGFyZSBmb3IgZnV6emluZywgSSBuZWVkIHRvIGlkZW50aWZ5IHRoZSBrZXkgZnVuY3Rpb25zIGludm9sdmVkLiBUaGUgZnVuY3Rpb25zIHRoYXQgYXJlIG1vc3QgbGlrZWx5IHRvIGJlIGFmZmVjdGVkIGJ5IHRoaXMgY2hhbmdlLCBhbmQgaGVuY2UgbXkgZnV6emluZyB0YXJnZXRzIGFyZTogYGt2bV92YWxpZF9lZmVyYCwgYHNldF9lZmVyYCwgYW5kIGBrdm1fc2V0dXBfZWZlcl9jYXBzYC4KCkZpbmFsbHksIHRvIGdldCBhIGJldHRlciBoYW5kbGUgb24gaG93IHRvIHRyaWdnZXIgdGhlc2UgZnVuY3Rpb25zLCBJJiMzOTtsbCB1c2UgYGdyZXBwZXJgIHRvIHNlZSB3aGVyZSBga3ZtX3NldHVwX2VmZXJfY2Fwc2AgaXMgYWN0dWFsbHkgY2FsbGVkIHdpdGhpbiB0aGUgY29kZWJhc2UuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGZvciBjb25zdHJ1Y3RpbmcgZWZmZWN0aXZlIGZ1enppbmcgaGFybmVzc2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDAwOjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9zZXR1cF9lZmVyX2NhcHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS94ODYuYz02OTEyPUVYUE9SVF9TWU1CT0xfRk9SX0tWTV9JTlRFUk5BTChrdm1fc2V0dXBfeHNzX2NhcHMpO1xuYXJjaC94ODYva3ZtL3g4Ni5jLTY5MTMtXG5hcmNoL3g4Ni9rdm0veDg2LmM6NjkxNDpzdGF0aWMgdm9pZCBrdm1fc2V0dXBfZWZlcl9jYXBzKHZvaWQpXG5hcmNoL3g4Ni9rdm0veDg2LmMtNjkxNS17XG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jPTY5OTk9aW50IGt2bV94ODZfdmVuZG9yX2luaXQoc3RydWN0IGt2bV94ODZfaW5pdF9vcHMgKm9wcylcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtNzA5MS1cbmFyY2gveDg2L2t2bS94ODYuYzo3MDkyOlx0a3ZtX3NldHVwX2VmZXJfY2FwcygpO1xuYXJjaC94ODYva3ZtL3g4Ni5jLTcwOTMtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDA6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDgwMgoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDU2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246CgoqKkludmVzdGlnYXRpbmcgdGhlIEVGRVIgQ29uZmlndXJhdGlvbiBpbiBLVk0qKgoKT2theSwgc28gYGt2bV9zZXR1cF9lZmVyX2NhcHNgIGlzIGRlZmluaXRlbHkgY2FsbGVkIGR1cmluZyB0aGUgaW5pdGlhbGl6YXRpb24gcGhhc2UsIHNwZWNpZmljYWxseSB3aXRoaW4gYGt2bV94ODZfdmVuZG9yX2luaXRgLiBUaGF0JiMzOTtzIHRoZSBzdGFydGluZyBwb2ludC4gTXkgcHJpbWFyeSBjb25jZXJuIGlzIGhvdyB0aGUgRXh0ZW5kZWQgRmVhdHVyZSBFbmFibGUgUmVnaXN0ZXIgKEVGRVIpIGdldHMgc2V0LCBzcGVjaWZpY2FsbHkgdGhlIG1lY2hhbmljcyBvZiBob3cgdGhlIGBzZXRfZWZlcmAgZnVuY3Rpb24gaXMgdHJpZ2dlcmVkLiBNeSBpbnN0aW5jdCwgYW5kIGJhc2VkIG9uIGV4cGVyaWVuY2UgSSBzdXNwZWN0IGl0IGdldHMgc2V0IGluIHRoZSBlbXVsYXRpb24gcGF0aC4gSSBuZWVkIHRvIHZlcmlmeSB3aGV0aGVyIHRoZSBgc2V0X2VmZXJgIGZ1bmN0aW9uIGlzIGNhbGxlZCBkaXJlY3RseSBmcm9tIHRoZSBlbXVsYXRpb24gb2YgTVNSIHdyaXRlcywgcGVyaGFwcyB3aXRoaW4gYGt2bV9lbXVsYXRlX21zcl93cml0ZWAgb3IgYSBzaW1pbGFyIGVtdWxhdGlvbiBmdW5jdGlvbi4gSSBuZWVkIHRvIGNvbmZpcm0gdGhpcyBhc3N1bXB0aW9uLiBMZXQgbWUgc3RhcnQgZGlnZ2luZyBpbnRvIHRoYXQgY29kZSBwYXRoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDAwOjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NldF9lZmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vbXNycy5jPTYxMT1FWFBPUlRfU1lNQk9MX0ZPUl9LVk1fSU5URVJOQUwoa3ZtX3ZhbGlkX2VmZXIpO1xuYXJjaC94ODYva3ZtL21zcnMuYy02MTItXG5hcmNoL3g4Ni9rdm0vbXNycy5jOjYxMzpzdGF0aWMgaW50IHNldF9lZmVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IG1zcl9kYXRhICptc3JfaW5mbylcbmFyY2gveDg2L2t2bS9tc3JzLmMtNjE0LXtcbi0tXG5hcmNoL3g4Ni9rdm0vbXNycy5jLTYzMy1cbmFyY2gveDg2L2t2bS9tc3JzLmM6NjM0Olx0ciA9IGt2bV94ODZfY2FsbChzZXRfZWZlcikodmNwdSwgZWZlcik7XG5hcmNoL3g4Ni9rdm0vbXNycy5jLTYzNS1cdGlmIChyKSB7XG4tLVxuYXJjaC94ODYva3ZtL21zcnMuYz0xNDQyPWludCBrdm1fc2V0X21zcl9jb21tb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3QgbXNyX2RhdGEgKm1zcl9pbmZvKVxuLS1cbmFyY2gveDg2L2t2bS9tc3JzLmMtMTUzOS1cdGNhc2UgTVNSX0VGRVI6XG5hcmNoL3g4Ni9rdm0vbXNycy5jOjE1NDA6XHRcdHJldHVybiBzZXRfZWZlcih2Y3B1LCBtc3JfaW5mbyk7XG5hcmNoL3g4Ni9rdm0vbXNycy5jLTE1NDEtXHRjYXNlIE1TUl9LN19IV0NSOiB7XG4tLVxuYXJjaC94ODYva3ZtL3JlZ3MuYz01NzA9c3RhdGljIGludCBfX3NldF9zcmVnc19jb21tb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3NyZWdzICpzcmVncyxcbi0tXG5hcmNoL3g4Ni9rdm0vcmVncy5jLTU5OC1cdCptbXVfcmVzZXRfbmVlZGVkIHw9IHZjcHUtXHUwMDNlYXJjaC5lZmVyICE9IHNyZWdzLVx1MDAzZWVmZXI7XG5hcmNoL3g4Ni9rdm0vcmVncy5jOjU5OTpcdGt2bV94ODZfY2FsbChzZXRfZWZlcikodmNwdSwgc3JlZ3MtXHUwMDNlZWZlcik7XG5hcmNoL3g4Ni9rdm0vcmVncy5jLTYwMC1cbi0tXG5hcmNoL3g4Ni9rdm0vc21tLmM9Mjc5PXZvaWQgZW50ZXJfc21tKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3g4Ni9rdm0vc21tLmMtMzYxLVx0aWYgKGd1ZXN0X2NwdV9jYXBfaGFzKHZjcHUsIFg4Nl9GRUFUVVJFX0xNKSlcbmFyY2gveDg2L2t2bS9zbW0uYzozNjI6XHRcdGlmIChrdm1feDg2X2NhbGwoc2V0X2VmZXIpKHZjcHUsIDApKVxuYXJjaC94ODYva3ZtL3NtbS5jLTM2My1cdFx0XHRnb3RvIGVycm9yO1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM9NzQ0PXN0YXRpYyB2b2lkIG5lc3RlZF92bWNiMDJfcHJlcGFyZV9zYXZlKHN0cnVjdCB2Y3B1X3N2bSAqc3ZtKVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtNzkxLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzo3OTI6XHRzdm1fc2V0X2VmZXIodmNwdSwgc3ZtLVx1MDAzZW5lc3RlZC5zYXZlLmVmZXIpO1xuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy03OTMtXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYz0xMzIxPXZvaWQgbmVzdGVkX3N2bV92bWV4aXQoc3RydWN0IHZjcHVfc3ZtICpzdm0pXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xNDI2LVx0a3ZtX3NldF9yZmxhZ3ModmNwdSwgdm1jYjAxLVx1MDAzZXNhdmUucmZsYWdzKTtcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTQyNzpcdHN2bV9zZXRfZWZlcih2Y3B1LCB2bWNiMDEtXHUwMDNlc2F2ZS5lZmVyKTtcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTQyOC1cdHN2bV9zZXRfY3IwKHZjcHUsIHZtY2IwMS1cdTAwM2VzYXZlLmNyMCB8IFg4Nl9DUjBfUEUpO1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM9MjAxPXN0YXRpYyBpbnQgZ2V0X25wdF9sZXZlbCh2b2lkKVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtMjA5LVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYzoyMTA6aW50IHN2bV9zZXRfZWZlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBlZmVyKVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy0yMTEte1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM9MjczMj1zdGF0aWMgaW50IGVmZXJfdHJhcChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy0yNzM4LVx0ICogQ2xlYXIgdGhlIEVGRVJfU1ZNRSBiaXQgZnJvbSBFRkVSLiBUaGUgU1ZNIGNvZGUgYWx3YXlzIHNldHMgdGhpc1xuYXJjaC94ODYva3ZtL3N2bS9zdm0uYzoyNzM5Olx0ICogYml0IGluIHN2bV9zZXRfZWZlcigpLCBidXQgX19rdm1fdmFsaWRfZWZlcigpIGNoZWNrcyBpdCBhZ2FpbnN0XG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTI3NDAtXHQgKiB3aGV0aGVyIHRoZSBndWVzdCBoYXMgWDg2X0ZFQVRVUkVfU1ZNIC0gdGhpcyBhdm9pZHMgYSBmYWlsdXJlIGlmXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYz01MzE0PXN0cnVjdCBrdm1feDg2X29wcyBzdm1feDg2X29wcyBfX2luaXRkYXRhID0ge1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNTM1NS1cdC5zZXRfY3I0ID0gc3ZtX3NldF9jcjQsXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jOjUzNTY6XHQuc2V0X2VmZXIgPSBzdm1fc2V0X2VmZXIsXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTUzNTctXHQuZ2V0X2lkdCA9IHN2bV9nZXRfaWR0LFxuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmg9ODEwPXZvaWQgc3ZtX3VwZGF0ZV9sYnJ2KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oLTgxMS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmg6ODEyOmludCBzdm1fc2V0X2VmZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgZWZlcik7XG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oLTgxMy12b2lkIHN2bV9zZXRfY3IwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgbG9uZyBjcjApO1xuLS1cbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jPTQxMz1zdGF0aWMgdm9pZCB2dF9zZXRfY3I0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgbG9uZyBjcjQpXG4tLVxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmMtNDIwLVxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmM6NDIxOnN0YXRpYyBpbnQgdnRfc2V0X2VmZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgZWZlcilcbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jLTQyMi17XG4tLVxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmMtNDI1LVxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmM6NDI2Olx0cmV0dXJuIHZteF9zZXRfZWZlcih2Y3B1LCBlZmVyKTtcbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jLTQyNy19XG4tLVxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmM9ODgwPXN0cnVjdCBrdm1feDg2X29wcyB2dF94ODZfb3BzIF9faW5pdGRhdGEgPSB7XG4tLVxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmMtOTI0LVx0LnNldF9jcjQgPSB2dF9vcChzZXRfY3I0KSxcbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jOjkyNTpcdC5zZXRfZWZlciA9IHZ0X29wKHNldF9lZmVyKSxcbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jLTkyNi1cdC5nZXRfaWR0ID0gdnRfb3AoZ2V0X2lkdCksXG4tLVxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYz0yNDI2PXN0YXRpYyB2b2lkIHByZXBhcmVfdm1jczAyX2Vhcmx5KHN0cnVjdCB2Y3B1X3ZteCAqdm14LCBzdHJ1Y3QgbG9hZGVkX3ZtY3MgKnZtY3MwMSxcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jLTI1MzktXHQgKiB2bWNzMTImIzM5O3MgVk1fe0VOVFJZLEVYSVR9X0xPQURfSUEzMl9FRkVSIGFuZCBWTV9FTlRSWV9JQTMyRV9NT0RFXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jOjI1NDA6XHQgKiBhcmUgZW11bGF0ZWQgYnkgdm14X3NldF9lZmVyKCkgaW4gcHJlcGFyZV92bWNzMDIoKSwgYnV0IHNwZWN1bGF0ZVxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy0yNTQxLVx0ICogb24gdGhlIHJlbGF0ZWQgYml0cyAoaWYgc3VwcG9ydGVkIGJ5IHRoZSBDUFUpIGluIHRoZSBob3BlIHRoYXRcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmM6MjU0MjpcdCAqIHdlIGNhbiBhdm9pZCBWTVdyaXRlcyBkdXJpbmcgdm14X3NldF9lZmVyKCkuXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jLTI1NDMtXHQgKlxuLS1cbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmMtMjU2NC1cdCAqIHdlIHNob3VsZCB1c2UgaXRzIGV4aXQgY29udHJvbHMuIE5vdGUgdGhhdCBWTV9FWElUX0xPQURfSUEzMl9FRkVSXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jOjI1NjU6XHQgKiBiaXRzIG1heSBiZSBtb2RpZmllZCBieSB2bXhfc2V0X2VmZXIoKSBpbiBwcmVwYXJlX3ZtY3MwMigpLlxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy0yNTY2LVx0ICovXG4tLVxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYz0yNzU1PXN0YXRpYyBpbnQgcHJlcGFyZV92bWNzMDIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qgdm1jczEyICp2bWNzMTIsXG4tLVxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy0yODM4LVx0LyogTm90ZTogbWF5IG1vZGlmeSBWTV9FTlRSWS9FWElUX0NPTlRST0xTIGFuZCBHVUVTVC9IT1NUX0lBMzJfRUZFUiAqL1xuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYzoyODM5Olx0dm14X3NldF9lZmVyKHZjcHUsIHZjcHUtXHUwMDNlYXJjaC5lZmVyKTtcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmMtMjg0MC1cbi0tXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jPTQ3ODM9c3RhdGljIHZvaWQgbG9hZF92bWNzMTJfaG9zdF9zdGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4tLVxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy00Nzk0LVx0XHR2Y3B1LVx1MDAzZWFyY2guZWZlciBcdTAwMjY9IH4oRUZFUl9MTUEgfCBFRkVSX0xNRSk7XG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jOjQ3OTU6XHR2bXhfc2V0X2VmZXIodmNwdSwgdmNwdS1cdTAwM2VhcmNoLmVmZXIpO1xuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy00Nzk2LVxuLS1cbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmM9NDk0Mz1zdGF0aWMgdm9pZCBuZXN0ZWRfdm14X3Jlc3RvcmVfaG9zdF9zdGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy00OTcyLVx0ICovXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jOjQ5NzM6XHR2bXhfc2V0X2VmZXIodmNwdSwgbmVzdGVkX3ZteF9nZXRfdm1jczAxX2d1ZXN0X2VmZXIodm14KSk7XG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jLTQ5NzQtXG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYz0zMjAxPXN0YXRpYyB2b2lkIGVudGVyX3Jtb2RlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTMyNDgtXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjMyNDk6aW50IHZteF9zZXRfZWZlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBlZmVyKVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy0zMjUwLXtcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTMyNzQ9c3RhdGljIHZvaWQgZW50ZXJfbG1vZGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMzI4Ny1cdH1cbmFyY2gveDg2L2t2bS92bXgvdm14LmM6MzI4ODpcdHZteF9zZXRfZWZlcih2Y3B1LCB2Y3B1LVx1MDAzZWFyY2guZWZlciB8IEVGRVJfTE1BKTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMzI4OS19XG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYz0zMjkxPXN0YXRpYyB2b2lkIGV4aXRfbG1vZGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC94ODYva3ZtL3ZteC92bXguYy0zMjkyLXtcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6MzI5MzpcdHZteF9zZXRfZWZlcih2Y3B1LCB2Y3B1LVx1MDAzZWFyY2guZWZlciBcdTAwMjYgfkVGRVJfTE1BKTtcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMzI5NC19XG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguaD0zNTc9dm9pZCB2bXhfc2V0X2ludGVycnVwdF9zaGFkb3coc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBpbnQgbWFzayk7XG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5oOjM1ODppbnQgdm14X3NldF9lZmVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGVmZXIpO1xuYXJjaC94ODYva3ZtL3ZteC92bXguaC0zNTktdm9pZCB2bXhfc2V0X2NyMChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGxvbmcgY3IwKTtcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3g4Nl9vcHMuaD03MT1ib29sIHZteF9pc192YWxpZF9jcjQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBsb25nIGNyNCk7XG5hcmNoL3g4Ni9rdm0vdm14L3g4Nl9vcHMuaDo3MjppbnQgdm14X3NldF9lZmVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGVmZXIpO1xuYXJjaC94ODYva3ZtL3ZteC94ODZfb3BzLmgtNzMtdm9pZCB2bXhfZ2V0X2lkdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBkZXNjX3B0ciAqZHQpO1xuLS1cbmFyY2gveDg2L2t2bS94ODYuYz05NTE5PXZvaWQga3ZtX3ZjcHVfcmVzZXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBib29sIGluaXRfZXZlbnQpXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTk2MjUtXHRrdm1feDg2X2NhbGwoc2V0X2NyNCkodmNwdSwgMCk7XG5hcmNoL3g4Ni9rdm0veDg2LmM6OTYyNjpcdGt2bV94ODZfY2FsbChzZXRfZWZlcikodmNwdSwgMCk7XG5hcmNoL3g4Ni9rdm0veDg2LmMtOTYyNy1cdGt2bV94ODZfY2FsbCh1cGRhdGVfZXhjZXB0aW9uX2JpdG1hcCkodmNwdSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDA6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODczOQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE1NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEVGRVIgTVNSIE1vZGlmaWNhdGlvbiBpbiBLVk0qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCB0YXJnZXRzIGBhcmNoL3g4Ni9rdm0vbXNycy5jYCBzcGVjaWZpY2FsbHkuIEl0JiMzOTtzIGZvY3VzZWQgb24gdGhlIGBrdm1fdmFsaWRfZWZlcmAgYW5kIGBzZXRfZWZlcmAgZnVuY3Rpb25zLCB3aGljaCwgYXMgSSB1bmRlcnN0YW5kIGl0LCBhcmUgY3JpdGljYWwgZm9yIHZhbGlkYXRpbmcgYW5kIGFwcGx5aW5nIG1vZGlmaWNhdGlvbnMgdG8gdGhlIEV4dGVuZGVkIEZlYXR1cmUgRW5hYmxlIFJlZ2lzdGVyIChFRkVSKSBNU1IuIFRoaXMgaXMgYSBjcnVjaWFsIGFyZWEgZm9yIHZpcnR1YWxpemF0aW9uLCBhZmZlY3RpbmcgdGhpbmdzIGxpa2UgbG9uZyBtb2RlIGVudHJ5IGFuZCBlbmFibGluZyBzcGVjaWZpYyBDUFUgZmVhdHVyZXMgd2l0aGluIGEgdmlydHVhbCBtYWNoaW5lLgoKVGhlIGtleSBjaGFuZ2UgaGVyZSBpcyB0aGUgaW50cm9kdWN0aW9uIG9mIGNoZWNraW5nIGFnYWluc3QgYGt2bV9jYXBzLnN1cHBvcnRlZF9lZmVyX2JpdHNgIGluc3RlYWQgb2YgdGhlIG9sZGVyIGBlZmVyX3Jlc2VydmVkX2JpdHNgLiBFc3NlbnRpYWxseSwgd2UmIzM5O3JlIHNoaWZ0aW5nIGhvdyB3ZSB2YWxpZGF0ZSB0aGUgRUZFUiBNU1IgdXBkYXRlcy4gVGhpcyBpcyBhIGRlZmluaXRlIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiB0aGUgS1ZNIHN1YnN5c3RlbSwgYW5kIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhhdCBzaGlmdC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCB0aG9zZSBga3ZtX2NhcHNgIGFjdHVhbGx5ICphcmUqIGFuZCBob3cgdGhleSByZWxhdGUgdG8gdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUgY2FwYWJpbGl0aWVzLgoKSSBuZWVkIHRvIGNvbmZpcm0gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhdCBwbGF5IGhlcmUuIFRoaXMgbGlrZWx5IHRvdWNoZXMgdGhlIGBLVk1gLCBgS1ZNX0FNRGAsIGFuZCBgS1ZNX0lOVEVMYCBvcHRpb25zIHdpdGhpbiB0aGUga2VybmVsIGJ1aWxkIGNvbmZpZ3VyYXRpb24sIHdoaWNoIGlzIGltcG9ydGFudCB0byBmdWxseSBncmFzcCB0aGUgY2hhbmdlJiMzOTtzIGltcGFjdC4KCkkmIzM5O20gbWFraW5nIGEgbWVudGFsIG5vdGUgdG8gdmVyaWZ5IHRoZSBzdXJyb3VuZGluZyBjb250ZXh0OiBga3ZtX3NldHVwX2VmZXJfY2Fwc2AsIHdoaWNoIEkgZXhwZWN0IHNldHMgdXAgdGhlIHJlbGV2YW50IGZlYXR1cmUgbWFza3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDA6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEtWTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xOS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjIwOmNvbmZpZyBLVk1fWDg2XG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMS1cdGRlZl90cmlzdGF0ZSBLVk0gaWYgKEtWTV9JTlRFTCAhPSBuIHx8IEtWTV9BTUQgIT0gbilcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy01MS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjUyOmNvbmZpZyBLVk1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTUzLVx0dHJpc3RhdGUgXCYjMzQ7S2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctNjgtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo2OTpjb25maWcgS1ZNX1dFUlJPUlxuYXJjaC94ODYva3ZtL0tjb25maWctNzAtXHRib29sIFwmIzM0O0NvbXBpbGUgS1ZNIHdpdGggLVdlcnJvclwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTgyLVxuYXJjaC94ODYva3ZtL0tjb25maWc6ODM6Y29uZmlnIEtWTV9TV19QUk9URUNURURfVk1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTg0LVx0Ym9vbCBcJiMzNDtFbmFibGUgc3VwcG9ydCBmb3IgS1ZNIHNvZnR3YXJlLXByb3RlY3RlZCBWTXNcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy05NS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjk2OmNvbmZpZyBLVk1fSU5URUxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTk3LVx0dHJpc3RhdGUgXCYjMzQ7S1ZNIGZvciBJbnRlbCAoYW5kIGNvbXBhdGlibGUpIHByb2Nlc3NvcnMgc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTEwNi1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjEwNzpjb25maWcgS1ZNX0lOVEVMX1BST1ZFX1ZFXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMDgtICAgICAgICBib29sIFwmIzM0O0NoZWNrIHRoYXQgZ3Vlc3RzIGRvIG5vdCByZWNlaXZlICNWRSBleGNlcHRpb25zXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWc9MTIyPWNvbmZpZyBYODZfU0dYX0tWTVxuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTEzMy1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjEzNDpjb25maWcgS1ZNX0lOVEVMX1REWFxuYXJjaC94ODYva3ZtL0tjb25maWctMTM1LVx0Ym9vbCBcJiMzNDtJbnRlbCBUcnVzdCBEb21haW4gRXh0ZW5zaW9ucyAoVERYKSBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTQ1LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTQ2OmNvbmZpZyBLVk1fQU1EXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNDctXHR0cmlzdGF0ZSBcJiMzNDtLVk0gZm9yIEFNRCBwcm9jZXNzb3JzIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNTUtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNTY6Y29uZmlnIEtWTV9BTURfU0VWXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNTctXHRib29sIFwmIzM0O0FNRCBTZWN1cmUgRW5jcnlwdGVkIFZpcnR1YWxpemF0aW9uIChTRVYpIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNzEtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNzI6Y29uZmlnIEtWTV9JT0FQSUNcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE3My1cdGJvb2wgXCYjMzQ7SS9PIEFQSUMsIFBJQywgYW5kIFBJVCBlbXVsYXRpb25cJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xODEtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxODI6Y29uZmlnIEtWTV9TTU1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE4My1cdGJvb2wgXCYjMzQ7U3lzdGVtIE1hbmFnZW1lbnQgTW9kZSBlbXVsYXRpb25cJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xOTItXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxOTM6Y29uZmlnIEtWTV9IWVBFUlZcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5NC1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBmb3IgTWljcm9zb2Z0IEh5cGVyLVYgZW11bGF0aW9uXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMjA2LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MjA3OmNvbmZpZyBLVk1fWEVOXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMDgtXHRib29sIFwmIzM0O1N1cHBvcnQgZm9yIFhlbiBoeXBlcmNhbGwgaW50ZXJmYWNlXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMjE1LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MjE2OmNvbmZpZyBLVk1fUFJPVkVfTU1VXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMTctXHRib29sIFwmIzM0O1Byb3ZlIEtWTSBNTVUgY29ycmVjdG5lc3NcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMjgtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMjk6Y29uZmlnIEtWTV9FWFRFUk5BTF9XUklURV9UUkFDS0lOR1xuYXJjaC94ODYva3ZtL0tjb25maWctMjMwLVx0Ym9vbFxuYXJjaC94ODYva3ZtL0tjb25maWctMjMxLVxuYXJjaC94ODYva3ZtL0tjb25maWc6MjMyOmNvbmZpZyBLVk1fTUFYX05SX1ZDUFVTXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzMtXHRpbnQgXCYjMzQ7TWF4aW11bSBudW1iZXIgb2YgdkNQVXMgcGVyIEtWTSBndWVzdFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDAwOjQ0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNDUxCgkJCQkJCQlvdXRwdXQ6IDEzNwoJCQkJCQkJdGhvdWdodHM6IDIxMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEtWTSBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBLVk0gcGF0Y2gsIGFuZCB0aGUga2V5IGNvbmZpZ3VyYXRpb25zIGhlcmUgYXJlIG9idmlvdXNseSBgS1ZNYCwgYnV0IGFsc28gcG90ZW50aWFsbHkgYEtWTV9BTURgIGFuZCBgS1ZNX0lOVEVMYC4gSSYjMzk7bGwgZmlyc3QgY29uZmlybSB0aGF0IGp1c3QgYEtWTWAgaXRzZWxmIGlzIHN1ZmZpY2llbnQgZm9yIHRoaXMgcGFydGljdWxhciBjaGVjay4gQWxyaWdodCwgZ29vZCwgaXQgYXBwZWFycyB0aGF0IGBLVk1gIGlzIGluZGVlZCBlbm91Z2ggdG8gbW92ZSBmb3J3YXJkLgoKTm93LCBJJiMzOTttIGRpdmluZyBkZWVwZXIgaW50byB0aGUgaW1wbGVtZW50YXRpb24gZGV0YWlscy4gSSBuZWVkIHRvIHZlcmlmeSB0aGUgcHJlc2VuY2Ugb2YgYSBmZXcgY3JpdGljYWwgZnVuY3Rpb25zLiBGaXJzdCwgaXMgYGt2bV9zZXR1cF9lZmVyX2NhcHNgIGluIGBhcmNoL3g4Ni9rdm0veDg2LmNgPyBZZXMsIGl0JiMzOTtzIHRoZXJlLiBOZXh0LCBJJiMzOTtsbCBjaGVjayBmb3IgYGt2bV92YWxpZF9lZmVyYCBpbiBgYXJjaC94ODYva3ZtL21zcnMuY2Ag4oCTIHllcCwgdGhhdCBmdW5jdGlvbiBleGlzdHMgdG9vLiBBbmQgbGFzdGx5LCBJJiMzOTtsbCBjb25maXJtIHRoYXQgYHNldF9lZmVyYCBpcyBwcmVzZW50IGFsc28gaW4gYGFyY2gveDg2L2t2bS9tc3JzLmNgLiBHb29kLCBhbGwgdGhyZWUgYXJlIHByZXNlbnQgYXMgZXhwZWN0ZWQuCgpJdCYjMzk7cyBldmlkZW50IHRoYXQgdGhpcyBwYXRjaCBpcyBtYWtpbmcgYSBmdW5jdGlvbmFsIGNoYW5nZS4gSXQgc2VlbXMgdG8gYmUgcmVtb3ZpbmcgYGt2bV9lbmFibGVfZWZlcl9iaXRzYCBhbmQsIGluc3RlYWQsIGRpcmVjdGx5IG1vZGlmeWluZyBga3ZtX2NhcHMuc3VwcG9ydGVkX2VmZXJfYml0c2AuCgpBbHJpZ2h0LCBJJiMzOTttIHNhdGlzZmllZC4gTm93LCBpdCYjMzk7cyB0aW1lIHRvIGRvY3VtZW50IHRoZXNlIHJlc3VsdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDAwOjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OywKICAgICYjMzQ7S1ZNX0FNRCYjMzQ7LAogICAgJiMzNDtLVk1fSU5URUwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1fdmFsaWRfZWZlciYjMzQ7LAogICAgJiMzNDtzZXRfZWZlciYjMzQ7LAogICAgJiMzNDtrdm1fc2V0dXBfZWZlcl9jYXBzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGhvdyBLVk0gdmFsaWRhdGVzIGFuZCBzZXRzIHRoZSBFRkVSIE1TUiBieSByZXBsYWNpbmcgYGVmZXJfcmVzZXJ2ZWRfYml0c2Agd2l0aCBga3ZtX2NhcHMuc3VwcG9ydGVkX2VmZXJfYml0c2AuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIEtWTSBsb2dpYyB0aGF0IGFmZmVjdHMgZ3Vlc3QgZXhlY3V0aW9uIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OywKICAgICYjMzQ7S1ZNX0FNRCYjMzQ7LAogICAgJiMzNDtLVk1fSU5URUwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1fdmFsaWRfZWZlciYjMzQ7LAogICAgJiMzNDtzZXRfZWZlciYjMzQ7LAogICAgJiMzNDtrdm1fc2V0dXBfZWZlcl9jYXBzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGhvdyBLVk0gdmFsaWRhdGVzIGFuZCBzZXRzIHRoZSBFRkVSIE1TUiBieSByZXBsYWNpbmcgYGVmZXJfcmVzZXJ2ZWRfYml0c2Agd2l0aCBga3ZtX2NhcHMuc3VwcG9ydGVkX2VmZXJfYml0c2AuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIEtWTSBsb2dpYyB0aGF0IGFmZmVjdHMgZ3Vlc3QgZXhlY3V0aW9uIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMTRUMDA6NDM6NTQuNzI1Mzk1NDgyWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjgxMzQyMzUwNzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCIsXG4gICAgXCJLVk1fQU1EXCIsXG4gICAgXCJLVk1fSU5URUxcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJrdm1fdmFsaWRfZWZlclwiLFxuICAgIFwic2V0X2VmZXJcIixcbiAgICBcImt2bV9zZXR1cF9lZmVyX2NhcHNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBob3cgS1ZNIHZhbGlkYXRlcyBhbmQgc2V0cyB0aGUgRUZFUiBNU1IgYnkgcmVwbGFjaW5nIGBlZmVyX3Jlc2VydmVkX2JpdHNgIHdpdGggYGt2bV9jYXBzLnN1cHBvcnRlZF9lZmVyX2JpdHNgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBLVk0gbG9naWMgdGhhdCBhZmZlY3RzIGd1ZXN0IGV4ZWN1dGlvbiBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDA6NDM6NTQuNzI1NDAxNDQyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Nzk0MzMyNTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA0MjJlMzIwNmRmZjg1MjVjNzVmYWRjY2JiOWNlNGU5YzEyOWY5YTcyXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgSnVsIDE0IDAwOjQzOjUzIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXFxuaW5kZXggNThmMTU2YWUzMWU3NTAuLjgwYjkyZWQ0NDBmYTE4IDEwMDY0NFxcbi0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmhcXG4rKysgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXFxuQEAgLTI3NCw2ICsyNzQsOCBAQCBzdHJ1Y3Qga3ZtX2NhcHMge1xcbiBcXHR1NjQgc3VwcG9ydGVkX3hzcztcXG4gXFx0dTY0IHN1cHBvcnRlZF9wZXJmX2NhcDtcXG4gXFxuK1xcdHU2NCBzdXBwb3J0ZWRfZWZlcl9iaXRzO1xcbitcXG4gXFx0dTY0IHN1cHBvcnRlZF9xdWlya3M7XFxuIFxcdHU2NCBpbmFwcGxpY2FibGVfcXVpcmtzO1xcbiB9O1xcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vbXNycy5jIGIvYXJjaC94ODYva3ZtL21zcnMuY1xcbmluZGV4IGMyMzBiMThkODdlMzhlLi42NmZhNzE0MGQ2NWQ5YiAxMDA2NDRcXG4tLS0gYS9hcmNoL3g4Ni9rdm0vbXNycy5jXFxuKysrIGIvYXJjaC94ODYva3ZtL21zcnMuY1xcbkBAIC0xOSwxNyArMTksNiBAQCBib29sIF9fcmVhZF9tb3N0bHkgcmVwb3J0X2lnbm9yZWRfbXNycyA9IHRydWU7XFxuIG1vZHVsZV9wYXJhbShyZXBvcnRfaWdub3JlZF9tc3JzLCBib29sLCAwNjQ0KTtcXG4gRVhQT1JUX1NZTUJPTF9GT1JfS1ZNX0lOVEVSTkFMKHJlcG9ydF9pZ25vcmVkX21zcnMpO1xcbiBcXG4tLyogRUZFUiBkZWZhdWx0czpcXG4tICogLSBlbmFibGUgc3lzY2FsbCBwZXIgZGVmYXVsdCBiZWNhdXNlIGl0cyBlbXVsYXRlZCBieSBLVk1cXG4tICogLSBlbmFibGUgTE1FIGFuZCBMTUEgcGVyIGRlZmF1bHQgb24gNjQgYml0IEtWTVxcbi0gKi9cXG4tI2lmZGVmIENPTkZJR19YODZfNjRcXG4tc3RhdGljXFxuLXU2NCBfX3JlYWRfbW9zdGx5IGVmZXJfcmVzZXJ2ZWRfYml0cyA9IH4oKHU2NCkoRUZFUl9TQ0UgfCBFRkVSX0xNRSB8IEVGRVJfTE1BKSk7XFxuLSNlbHNlXFxuLXN0YXRpYyB1NjQgX19yZWFkX21vc3RseSBlZmVyX3Jlc2VydmVkX2JpdHMgPSB+KCh1NjQpRUZFUl9TQ0UpO1xcbi0jZW5kaWZcXG4tXFxuICNkZWZpbmUgTUFYX0lPX01TUlMgMjU2XFxuIFxcbiBzdHJ1Y3QgbXNyX2JpdG1hcF9yYW5nZSB7XFxuQEAgLTYxNCw3ICs2MDMsNyBAQCBzdGF0aWMgYm9vbCBfX2t2bV92YWxpZF9lZmVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGVmZXIpXFxuIH1cXG4gYm9vbCBrdm1fdmFsaWRfZWZlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBlZmVyKVxcbiB7XFxuLVxcdGlmIChlZmVyIFxcdTAwMjYgZWZlcl9yZXNlcnZlZF9iaXRzKVxcbitcXHRpZiAoZWZlciBcXHUwMDI2IH5rdm1fY2Fwcy5zdXBwb3J0ZWRfZWZlcl9iaXRzKVxcbiBcXHRcXHRyZXR1cm4gZmFsc2U7XFxuIFxcbiBcXHRyZXR1cm4gX19rdm1fdmFsaWRfZWZlcih2Y3B1LCBlZmVyKTtcXG5AQCAtNjI3LDcgKzYxNiw3IEBAIHN0YXRpYyBpbnQgc2V0X2VmZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3QgbXNyX2RhdGEgKm1zcl9pbmZvKVxcbiBcXHR1NjQgZWZlciA9IG1zcl9pbmZvLVxcdTAwM2VkYXRhO1xcbiBcXHRpbnQgcjtcXG4gXFxuLVxcdGlmIChlZmVyIFxcdTAwMjYgZWZlcl9yZXNlcnZlZF9iaXRzKVxcbitcXHRpZiAoZWZlciBcXHUwMDI2IH5rdm1fY2Fwcy5zdXBwb3J0ZWRfZWZlcl9iaXRzKVxcbiBcXHRcXHRyZXR1cm4gMTtcXG4gXFxuIFxcdGlmICghbXNyX2luZm8tXFx1MDAzZWhvc3RfaW5pdGlhdGVkKSB7XFxuQEAgLTY1OCwxMiArNjQ3LDYgQEAgc3RhdGljIGludCBzZXRfZWZlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBtc3JfZGF0YSAqbXNyX2luZm8pXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbi12b2lkIGt2bV9lbmFibGVfZWZlcl9iaXRzKHU2NCBtYXNrKVxcbi17XFxuLSAgICAgICBlZmVyX3Jlc2VydmVkX2JpdHMgXFx1MDAyNj0gfm1hc2s7XFxuLX1cXG4tRVhQT1JUX1NZTUJPTF9GT1JfS1ZNX0lOVEVSTkFMKGt2bV9lbmFibGVfZWZlcl9iaXRzKTtcXG4tXFxuIGJvb2wga3ZtX21zcl9hbGxvd2VkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTMyIGluZGV4LCB1MzIgdHlwZSlcXG4ge1xcbiBcXHRzdHJ1Y3Qga3ZtX3g4Nl9tc3JfZmlsdGVyICptc3JfZmlsdGVyO1xcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vbXNycy5oIGIvYXJjaC94ODYva3ZtL21zcnMuaFxcbmluZGV4IDljNWM2YjMzZTU4ZjU3Li43Y2MxODJhMTViM2IzZSAxMDA2NDRcXG4tLS0gYS9hcmNoL3g4Ni9rdm0vbXNycy5oXFxuKysrIGIvYXJjaC94ODYva3ZtL21zcnMuaFxcbkBAIC01OCw3ICs1OCw2IEBAIGludCBrdm1fZ2V0X3NldF9vbmVfcmVnKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgaW50IGlvY3RsLFxcbiBpbnQga3ZtX2dldF9yZWdfbGlzdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuIFxcdFxcdCAgICAgc3RydWN0IGt2bV9yZWdfbGlzdCBfX3VzZXIgKnVzZXJfbGlzdCk7XFxuIFxcbi12b2lkIGt2bV9lbmFibGVfZWZlcl9iaXRzKHU2NCk7XFxuIGJvb2wga3ZtX3ZhbGlkX2VmZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgZWZlcik7XFxuIGludCBrdm1fZW11bGF0ZV9tc3JfcmVhZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBpbmRleCwgdTY0ICpkYXRhKTtcXG4gaW50IGt2bV9lbXVsYXRlX21zcl93cml0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBpbmRleCwgdTY0IGRhdGEpO1xcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jIGIvYXJjaC94ODYva3ZtL3N2bS9zdm0uY1xcbmluZGV4IDkxMjg2ZDQ2ZDEzYWRiLi4wOTc5OWZkOGVmMzhmNSAxMDA2NDRcXG4tLS0gYS9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jXFxuKysrIGIvYXJjaC94ODYva3ZtL3N2bS9zdm0uY1xcbkBAIC01NjI4LDEwICs1NjI4LDYgQEAgc3RhdGljIF9faW5pdCBpbnQgc3ZtX2hhcmR3YXJlX3NldHVwKHZvaWQpXFxuIFxcbiBcXHRpZiAobmVzdGVkKSB7XFxuIFxcdFxcdHByX2luZm8oXFxcIk5lc3RlZCBWaXJ0dWFsaXphdGlvbiBlbmFibGVkXFxcXG5cXFwiKTtcXG4tXFx0XFx0a3ZtX2VuYWJsZV9lZmVyX2JpdHMoRUZFUl9TVk1FKTtcXG4tXFx0XFx0aWYgKCFib290X2NwdV9oYXMoWDg2X0ZFQVRVUkVfRUZFUl9MTVNMRV9NQlopKVxcbi1cXHRcXHRcXHRrdm1fZW5hYmxlX2VmZXJfYml0cyhFRkVSX0xNU0xFKTtcXG4tXFxuIFxcdFxcdHIgPSBuZXN0ZWRfc3ZtX2luaXRfbXNycG1fbWVyZ2Vfb2Zmc2V0cygpO1xcbiBcXHRcXHRpZiAocilcXG4gXFx0XFx0XFx0cmV0dXJuIHI7XFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS94ODYuYyBiL2FyY2gveDg2L2t2bS94ODYuY1xcbmluZGV4IDFmNWRjNjg1ZjA0OTBkLi5hMDIwYjFjYmIzZjNlOCAxMDA2NDRcXG4tLS0gYS9hcmNoL3g4Ni9rdm0veDg2LmNcXG4rKysgYi9hcmNoL3g4Ni9rdm0veDg2LmNcXG5AQCAtNjkxMywxNCArNjkxMywyNiBAQCBFWFBPUlRfU1lNQk9MX0ZPUl9LVk1fSU5URVJOQUwoa3ZtX3NldHVwX3hzc19jYXBzKTtcXG4gXFxuIHN0YXRpYyB2b2lkIGt2bV9zZXR1cF9lZmVyX2NhcHModm9pZClcXG4ge1xcbitcXHQvKiBFbmFibGUgc3lzY2FsbCBieSBkZWZhdWx0IGJlY2F1c2UgaXRzIGVtdWxhdGVkIGJ5IEtWTSAqL1xcbitcXHRrdm1fY2Fwcy5zdXBwb3J0ZWRfZWZlcl9iaXRzID0gKHU2NClFRkVSX1NDRTtcXG4rXFxuK1xcdGlmIChrdm1fY3B1X2NhcF9oYXMoWDg2X0ZFQVRVUkVfTE0pKVxcbitcXHRcXHRrdm1fY2Fwcy5zdXBwb3J0ZWRfZWZlcl9iaXRzIHw9IChFRkVSX0xNRSB8IEVGRVJfTE1BKTtcXG4rXFxuIFxcdGlmIChrdm1fY3B1X2NhcF9oYXMoWDg2X0ZFQVRVUkVfTlgpKVxcbi1cXHRcXHRrdm1fZW5hYmxlX2VmZXJfYml0cyhFRkVSX05YKTtcXG4rXFx0XFx0a3ZtX2NhcHMuc3VwcG9ydGVkX2VmZXJfYml0cyB8PSBFRkVSX05YO1xcbiBcXG4gXFx0aWYgKGt2bV9jcHVfY2FwX2hhcyhYODZfRkVBVFVSRV9GWFNSX09QVCkpXFxuLVxcdFxcdGt2bV9lbmFibGVfZWZlcl9iaXRzKEVGRVJfRkZYU1IpO1xcbitcXHRcXHRrdm1fY2Fwcy5zdXBwb3J0ZWRfZWZlcl9iaXRzIHw9IEVGRVJfRkZYU1I7XFxuIFxcbiBcXHRpZiAoa3ZtX2NwdV9jYXBfaGFzKFg4Nl9GRUFUVVJFX0FVVE9JQlJTKSlcXG4tXFx0XFx0a3ZtX2VuYWJsZV9lZmVyX2JpdHMoRUZFUl9BVVRPSUJSUyk7XFxuK1xcdFxcdGt2bV9jYXBzLnN1cHBvcnRlZF9lZmVyX2JpdHMgfD0gRUZFUl9BVVRPSUJSUztcXG4rXFxuK1xcdGlmIChrdm1fY3B1X2NhcF9oYXMoWDg2X0ZFQVRVUkVfU1ZNKSkge1xcbitcXHRcXHRrdm1fY2Fwcy5zdXBwb3J0ZWRfZWZlcl9iaXRzIHw9IEVGRVJfU1ZNRTtcXG4rXFx0XFx0aWYgKCFib290X2NwdV9oYXMoWDg2X0ZFQVRVUkVfRUZFUl9MTVNMRV9NQlopKVxcbitcXHRcXHRcXHRrdm1fY2Fwcy5zdXBwb3J0ZWRfZWZlcl9iaXRzIHw9IEVGRVJfTE1TTEU7XFxuK1xcdH1cXG4gfVxcbiBcXG4gc3RhdGljIHZvaWQga3ZtX25lc3RlZF9vcHNfdXBkYXRlKGNvbnN0IHN0cnVjdCBrdm1feDg2X25lc3RlZF9vcHMgKm5lc3RlZF9vcHMpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDAwOjQzOjU1LjMwNTY3ODAyWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzU1Mzk0Mjk4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIixcbiAgICBcIktWTV9BTURcIixcbiAgICBcIktWTV9JTlRFTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV92YWxpZF9lZmVyXCIsXG4gICAgXCJzZXRfZWZlclwiLFxuICAgIFwia3ZtX3NldHVwX2VmZXJfY2Fwc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGhvdyBLVk0gdmFsaWRhdGVzIGFuZCBzZXRzIHRoZSBFRkVSIE1TUiBieSByZXBsYWNpbmcgYGVmZXJfcmVzZXJ2ZWRfYml0c2Agd2l0aCBga3ZtX2NhcHMuc3VwcG9ydGVkX2VmZXJfYml0c2AuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIEtWTSBsb2dpYyB0aGF0IGFmZmVjdHMgZ3Vlc3QgZXhlY3V0aW9uIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDQyMmUzMjA2ZGZmODUyNWM3NWZhZGNjYmI5Y2U0ZTljMTI5ZjlhNzJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1bCAxNCAwMDo0Mzo1MyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXG5pbmRleCA1OGYxNTZhZTMxZTc1MC4uODBiOTJlZDQ0MGZhMTggMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXG4rKysgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXG5AQCAtMjc0LDYgKzI3NCw4IEBAIHN0cnVjdCBrdm1fY2FwcyB7XG4gXHR1NjQgc3VwcG9ydGVkX3hzcztcbiBcdHU2NCBzdXBwb3J0ZWRfcGVyZl9jYXA7XG4gXG4rXHR1NjQgc3VwcG9ydGVkX2VmZXJfYml0cztcbitcbiBcdHU2NCBzdXBwb3J0ZWRfcXVpcmtzO1xuIFx0dTY0IGluYXBwbGljYWJsZV9xdWlya3M7XG4gfTtcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vbXNycy5jIGIvYXJjaC94ODYva3ZtL21zcnMuY1xuaW5kZXggYzIzMGIxOGQ4N2UzOGUuLjY2ZmE3MTQwZDY1ZDliIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL21zcnMuY1xuKysrIGIvYXJjaC94ODYva3ZtL21zcnMuY1xuQEAgLTE5LDE3ICsxOSw2IEBAIGJvb2wgX19yZWFkX21vc3RseSByZXBvcnRfaWdub3JlZF9tc3JzID0gdHJ1ZTtcbiBtb2R1bGVfcGFyYW0ocmVwb3J0X2lnbm9yZWRfbXNycywgYm9vbCwgMDY0NCk7XG4gRVhQT1JUX1NZTUJPTF9GT1JfS1ZNX0lOVEVSTkFMKHJlcG9ydF9pZ25vcmVkX21zcnMpO1xuIFxuLS8qIEVGRVIgZGVmYXVsdHM6XG4tICogLSBlbmFibGUgc3lzY2FsbCBwZXIgZGVmYXVsdCBiZWNhdXNlIGl0cyBlbXVsYXRlZCBieSBLVk1cbi0gKiAtIGVuYWJsZSBMTUUgYW5kIExNQSBwZXIgZGVmYXVsdCBvbiA2NCBiaXQgS1ZNXG4tICovXG4tI2lmZGVmIENPTkZJR19YODZfNjRcbi1zdGF0aWNcbi11NjQgX19yZWFkX21vc3RseSBlZmVyX3Jlc2VydmVkX2JpdHMgPSB+KCh1NjQpKEVGRVJfU0NFIHwgRUZFUl9MTUUgfCBFRkVSX0xNQSkpO1xuLSNlbHNlXG4tc3RhdGljIHU2NCBfX3JlYWRfbW9zdGx5IGVmZXJfcmVzZXJ2ZWRfYml0cyA9IH4oKHU2NClFRkVSX1NDRSk7XG4tI2VuZGlmXG4tXG4gI2RlZmluZSBNQVhfSU9fTVNSUyAyNTZcbiBcbiBzdHJ1Y3QgbXNyX2JpdG1hcF9yYW5nZSB7XG5AQCAtNjE0LDcgKzYwMyw3IEBAIHN0YXRpYyBib29sIF9fa3ZtX3ZhbGlkX2VmZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgZWZlcilcbiB9XG4gYm9vbCBrdm1fdmFsaWRfZWZlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBlZmVyKVxuIHtcbi1cdGlmIChlZmVyIFx1MDAyNiBlZmVyX3Jlc2VydmVkX2JpdHMpXG4rXHRpZiAoZWZlciBcdTAwMjYgfmt2bV9jYXBzLnN1cHBvcnRlZF9lZmVyX2JpdHMpXG4gXHRcdHJldHVybiBmYWxzZTtcbiBcbiBcdHJldHVybiBfX2t2bV92YWxpZF9lZmVyKHZjcHUsIGVmZXIpO1xuQEAgLTYyNyw3ICs2MTYsNyBAQCBzdGF0aWMgaW50IHNldF9lZmVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IG1zcl9kYXRhICptc3JfaW5mbylcbiBcdHU2NCBlZmVyID0gbXNyX2luZm8tXHUwMDNlZGF0YTtcbiBcdGludCByO1xuIFxuLVx0aWYgKGVmZXIgXHUwMDI2IGVmZXJfcmVzZXJ2ZWRfYml0cylcbitcdGlmIChlZmVyIFx1MDAyNiB+a3ZtX2NhcHMuc3VwcG9ydGVkX2VmZXJfYml0cylcbiBcdFx0cmV0dXJuIDE7XG4gXG4gXHRpZiAoIW1zcl9pbmZvLVx1MDAzZWhvc3RfaW5pdGlhdGVkKSB7XG5AQCAtNjU4LDEyICs2NDcsNiBAQCBzdGF0aWMgaW50IHNldF9lZmVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IG1zcl9kYXRhICptc3JfaW5mbylcbiBcdHJldHVybiAwO1xuIH1cbiBcbi12b2lkIGt2bV9lbmFibGVfZWZlcl9iaXRzKHU2NCBtYXNrKVxuLXtcbi0gICAgICAgZWZlcl9yZXNlcnZlZF9iaXRzIFx1MDAyNj0gfm1hc2s7XG4tfVxuLUVYUE9SVF9TWU1CT0xfRk9SX0tWTV9JTlRFUk5BTChrdm1fZW5hYmxlX2VmZXJfYml0cyk7XG4tXG4gYm9vbCBrdm1fbXNyX2FsbG93ZWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgaW5kZXgsIHUzMiB0eXBlKVxuIHtcbiBcdHN0cnVjdCBrdm1feDg2X21zcl9maWx0ZXIgKm1zcl9maWx0ZXI7XG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL21zcnMuaCBiL2FyY2gveDg2L2t2bS9tc3JzLmhcbmluZGV4IDljNWM2YjMzZTU4ZjU3Li43Y2MxODJhMTViM2IzZSAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS9tc3JzLmhcbisrKyBiL2FyY2gveDg2L2t2bS9tc3JzLmhcbkBAIC01OCw3ICs1OCw2IEBAIGludCBrdm1fZ2V0X3NldF9vbmVfcmVnKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgaW50IGlvY3RsLFxuIGludCBrdm1fZ2V0X3JlZ19saXN0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbiBcdFx0ICAgICBzdHJ1Y3Qga3ZtX3JlZ19saXN0IF9fdXNlciAqdXNlcl9saXN0KTtcbiBcbi12b2lkIGt2bV9lbmFibGVfZWZlcl9iaXRzKHU2NCk7XG4gYm9vbCBrdm1fdmFsaWRfZWZlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBlZmVyKTtcbiBpbnQga3ZtX2VtdWxhdGVfbXNyX3JlYWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgaW5kZXgsIHU2NCAqZGF0YSk7XG4gaW50IGt2bV9lbXVsYXRlX21zcl93cml0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBpbmRleCwgdTY0IGRhdGEpO1xuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmMgYi9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jXG5pbmRleCA5MTI4NmQ0NmQxM2FkYi4uMDk3OTlmZDhlZjM4ZjUgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jXG4rKysgYi9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jXG5AQCAtNTYyOCwxMCArNTYyOCw2IEBAIHN0YXRpYyBfX2luaXQgaW50IHN2bV9oYXJkd2FyZV9zZXR1cCh2b2lkKVxuIFxuIFx0aWYgKG5lc3RlZCkge1xuIFx0XHRwcl9pbmZvKFwiTmVzdGVkIFZpcnR1YWxpemF0aW9uIGVuYWJsZWRcXG5cIik7XG4tXHRcdGt2bV9lbmFibGVfZWZlcl9iaXRzKEVGRVJfU1ZNRSk7XG4tXHRcdGlmICghYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX0VGRVJfTE1TTEVfTUJaKSlcbi1cdFx0XHRrdm1fZW5hYmxlX2VmZXJfYml0cyhFRkVSX0xNU0xFKTtcbi1cbiBcdFx0ciA9IG5lc3RlZF9zdm1faW5pdF9tc3JwbV9tZXJnZV9vZmZzZXRzKCk7XG4gXHRcdGlmIChyKVxuIFx0XHRcdHJldHVybiByO1xuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS94ODYuYyBiL2FyY2gveDg2L2t2bS94ODYuY1xuaW5kZXggMWY1ZGM2ODVmMDQ5MGQuLmEwMjBiMWNiYjNmM2U4IDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL3g4Ni5jXG4rKysgYi9hcmNoL3g4Ni9rdm0veDg2LmNcbkBAIC02OTEzLDE0ICs2OTEzLDI2IEBAIEVYUE9SVF9TWU1CT0xfRk9SX0tWTV9JTlRFUk5BTChrdm1fc2V0dXBfeHNzX2NhcHMpO1xuIFxuIHN0YXRpYyB2b2lkIGt2bV9zZXR1cF9lZmVyX2NhcHModm9pZClcbiB7XG4rXHQvKiBFbmFibGUgc3lzY2FsbCBieSBkZWZhdWx0IGJlY2F1c2UgaXRzIGVtdWxhdGVkIGJ5IEtWTSAqL1xuK1x0a3ZtX2NhcHMuc3VwcG9ydGVkX2VmZXJfYml0cyA9ICh1NjQpRUZFUl9TQ0U7XG4rXG4rXHRpZiAoa3ZtX2NwdV9jYXBfaGFzKFg4Nl9GRUFUVVJFX0xNKSlcbitcdFx0a3ZtX2NhcHMuc3VwcG9ydGVkX2VmZXJfYml0cyB8PSAoRUZFUl9MTUUgfCBFRkVSX0xNQSk7XG4rXG4gXHRpZiAoa3ZtX2NwdV9jYXBfaGFzKFg4Nl9GRUFUVVJFX05YKSlcbi1cdFx0a3ZtX2VuYWJsZV9lZmVyX2JpdHMoRUZFUl9OWCk7XG4rXHRcdGt2bV9jYXBzLnN1cHBvcnRlZF9lZmVyX2JpdHMgfD0gRUZFUl9OWDtcbiBcbiBcdGlmIChrdm1fY3B1X2NhcF9oYXMoWDg2X0ZFQVRVUkVfRlhTUl9PUFQpKVxuLVx0XHRrdm1fZW5hYmxlX2VmZXJfYml0cyhFRkVSX0ZGWFNSKTtcbitcdFx0a3ZtX2NhcHMuc3VwcG9ydGVkX2VmZXJfYml0cyB8PSBFRkVSX0ZGWFNSO1xuIFxuIFx0aWYgKGt2bV9jcHVfY2FwX2hhcyhYODZfRkVBVFVSRV9BVVRPSUJSUykpXG4tXHRcdGt2bV9lbmFibGVfZWZlcl9iaXRzKEVGRVJfQVVUT0lCUlMpO1xuK1x0XHRrdm1fY2Fwcy5zdXBwb3J0ZWRfZWZlcl9iaXRzIHw9IEVGRVJfQVVUT0lCUlM7XG4rXG4rXHRpZiAoa3ZtX2NwdV9jYXBfaGFzKFg4Nl9GRUFUVVJFX1NWTSkpIHtcbitcdFx0a3ZtX2NhcHMuc3VwcG9ydGVkX2VmZXJfYml0cyB8PSBFRkVSX1NWTUU7XG4rXHRcdGlmICghYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX0VGRVJfTE1TTEVfTUJaKSlcbitcdFx0XHRrdm1fY2Fwcy5zdXBwb3J0ZWRfZWZlcl9iaXRzIHw9IEVGRVJfTE1TTEU7XG4rXHR9XG4gfVxuIFxuIHN0YXRpYyB2b2lkIGt2bV9uZXN0ZWRfb3BzX3VwZGF0ZShjb25zdCBzdHJ1Y3Qga3ZtX3g4Nl9uZXN0ZWRfb3BzICpuZXN0ZWRfb3BzKVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDA6NDM6NTUuMzA1Njc5M1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc3ODY3NDE3MzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBLVk0gRUZFUiBCaXQgSGFuZGxpbmcgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciB4ODYgS1ZNLiBJdCdzIGFuIGludGVyZXN0aW5nIG9uZSDigJMgc2VlbXMgbGlrZSB0aGV5J3JlIHN0cmVhbWxpbmluZyBob3cgRUZFUiBiaXRzIGFyZSBoYW5kbGVkLiBTcGVjaWZpY2FsbHksIHRoZXkndmUgZGl0Y2hlZCB0aGUgb2xkIGBlZmVyX3Jlc2VydmVkX2JpdHNgIGFuZCBga3ZtX2VuYWJsZV9lZmVyX2JpdHNgIGNvbnN0cnVjdHMuIFRoZXkndmUgcmVwbGFjZWQgdGhlbSB3aXRoIGEgc2luZ2xlIGBrdm1fY2Fwcy5zdXBwb3J0ZWRfZWZlcl9iaXRzYCB2YXJpYWJsZSwgYW5kIHRoZXkndmUgY29uc29saWRhdGVkIHRoZSBpbml0aWFsaXphdGlvbiBvZiBFRkVSIGNhcGFiaWxpdGllcyB3aXRoaW4gYGt2bV9zZXR1cF9lZmVyX2NhcHNgLCBtb3ZpbmcgaXQgZnJvbSBpdHMgcHJldmlvdXMgbG9jYXRpb25zIGluIGBzdm1faGFyZHdhcmVfc2V0dXBgIGFuZCBga3ZtX3NldHVwX2VmZXJfY2Fwc2AuXG5cbkZ1bmN0aW9uYWxseSwgdGhpcyBkZWZpbml0ZWx5IGFsdGVycyBob3cgd2UgdmFsaWRhdGUgRUZFUiBiaXRzLCB3aGljaCBpcyBzb21ldGhpbmcgSSBuZWVkIHRvIGZ1bGx5IHVuZGVyc3RhbmQuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoaXMgaXMgYSBjb3JlIEtWTSBjaGFuZ2UsIHNvIHJlYWNoYWJpbGl0eSBzaG91bGRuJ3QgYmUgYW4gaXNzdWUuIEtWTSBpcyBmdW5kYW1lbnRhbCB0byB2aXJ0dWFsaXphdGlvbiBvbiB4ODYuIFRoaXMgYWxzbyBtZWFucyB0aGlzIG5lZWRzIHNvbWUgc2VyaW91cyBmdXp6aW5nLlxuXG5NeSBpbW1lZGlhdGUgbmV4dCBzdGVwcyBhcmUgdG8gbmFpbCBkb3duIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFRoZSBrZXkgZmlsZXMgYXBwZWFyIHRvIGJlIGBhcmNoL3g4Ni9rdm0veDg2LmNgLCBgYXJjaC94ODYva3ZtL21zcnMuY2AsIGFuZCBgYXJjaC94ODYva3ZtL3N2bS9zdm0uY2AsIHNvIGl0J3MgYWxsIHg4NiBLVk0uIFRoaXMgbWVhbnMgbXkgZm9jdXMgd2lsbCBiZSBvbiBgS1ZNYCwgYEtWTV9BTURgLCBhbmQgYEtWTV9JTlRFTGAgY29uZmlndXJhdGlvbnMuXG5cbk5vdywgdG8gcHJlcGFyZSBmb3IgZnV6emluZywgSSBuZWVkIHRvIGlkZW50aWZ5IHRoZSBrZXkgZnVuY3Rpb25zIGludm9sdmVkLiBUaGUgZnVuY3Rpb25zIHRoYXQgYXJlIG1vc3QgbGlrZWx5IHRvIGJlIGFmZmVjdGVkIGJ5IHRoaXMgY2hhbmdlLCBhbmQgaGVuY2UgbXkgZnV6emluZyB0YXJnZXRzIGFyZTogYGt2bV92YWxpZF9lZmVyYCwgYHNldF9lZmVyYCwgYW5kIGBrdm1fc2V0dXBfZWZlcl9jYXBzYC5cblxuRmluYWxseSwgdG8gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiBob3cgdG8gdHJpZ2dlciB0aGVzZSBmdW5jdGlvbnMsIEknbGwgdXNlIGBncmVwcGVyYCB0byBzZWUgd2hlcmUgYGt2bV9zZXR1cF9lZmVyX2NhcHNgIGlzIGFjdHVhbGx5IGNhbGxlZCB3aXRoaW4gdGhlIGNvZGViYXNlLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgY29uc3RydWN0aW5nIGVmZmVjdGl2ZSBmdXp6aW5nIGhhcm5lc3Nlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzczNSwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyMiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDAwOjQ0OjAzLjA5MjQyNDg4OFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5ODI5MDQ3MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fc2V0dXBfZWZlcl9jYXBzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gveDg2L2t2bS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYva3ZtL3g4Ni5jPTY5MTI9RVhQT1JUX1NZTUJPTF9GT1JfS1ZNX0lOVEVSTkFMKGt2bV9zZXR1cF94c3NfY2Fwcyk7XFxuYXJjaC94ODYva3ZtL3g4Ni5jLTY5MTMtXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjY5MTQ6c3RhdGljIHZvaWQga3ZtX3NldHVwX2VmZXJfY2Fwcyh2b2lkKVxcbmFyY2gveDg2L2t2bS94ODYuYy02OTE1LXtcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYz02OTk5PWludCBrdm1feDg2X3ZlbmRvcl9pbml0KHN0cnVjdCBrdm1feDg2X2luaXRfb3BzICpvcHMpXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtNzA5MS1cXG5hcmNoL3g4Ni9rdm0veDg2LmM6NzA5MjpcXHRrdm1fc2V0dXBfZWZlcl9jYXBzKCk7XFxuYXJjaC94ODYva3ZtL3g4Ni5jLTcwOTMtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDAwOjQ0OjAzLjE5MDcyMTAxMVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0NzI3MTExNjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIEVGRVIgQ29uZmlndXJhdGlvbiBpbiBLVk0qKlxuXG5Pa2F5LCBzbyBga3ZtX3NldHVwX2VmZXJfY2Fwc2AgaXMgZGVmaW5pdGVseSBjYWxsZWQgZHVyaW5nIHRoZSBpbml0aWFsaXphdGlvbiBwaGFzZSwgc3BlY2lmaWNhbGx5IHdpdGhpbiBga3ZtX3g4Nl92ZW5kb3JfaW5pdGAuIFRoYXQncyB0aGUgc3RhcnRpbmcgcG9pbnQuIE15IHByaW1hcnkgY29uY2VybiBpcyBob3cgdGhlIEV4dGVuZGVkIEZlYXR1cmUgRW5hYmxlIFJlZ2lzdGVyIChFRkVSKSBnZXRzIHNldCwgc3BlY2lmaWNhbGx5IHRoZSBtZWNoYW5pY3Mgb2YgaG93IHRoZSBgc2V0X2VmZXJgIGZ1bmN0aW9uIGlzIHRyaWdnZXJlZC4gTXkgaW5zdGluY3QsIGFuZCBiYXNlZCBvbiBleHBlcmllbmNlIEkgc3VzcGVjdCBpdCBnZXRzIHNldCBpbiB0aGUgZW11bGF0aW9uIHBhdGguIEkgbmVlZCB0byB2ZXJpZnkgd2hldGhlciB0aGUgYHNldF9lZmVyYCBmdW5jdGlvbiBpcyBjYWxsZWQgZGlyZWN0bHkgZnJvbSB0aGUgZW11bGF0aW9uIG9mIE1TUiB3cml0ZXMsIHBlcmhhcHMgd2l0aGluIGBrdm1fZW11bGF0ZV9tc3Jfd3JpdGVgIG9yIGEgc2ltaWxhciBlbXVsYXRpb24gZnVuY3Rpb24uIEkgbmVlZCB0byBjb25maXJtIHRoaXMgYXNzdW1wdGlvbi4gTGV0IG1lIHN0YXJ0IGRpZ2dpbmcgaW50byB0aGF0IGNvZGUgcGF0aC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDgwMiwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDAwOjQ0OjA2LjY2MzQzNDQzNloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4OTY4NDczMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZXRfZWZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9rdm0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS9tc3JzLmM9NjExPUVYUE9SVF9TWU1CT0xfRk9SX0tWTV9JTlRFUk5BTChrdm1fdmFsaWRfZWZlcik7XFxuYXJjaC94ODYva3ZtL21zcnMuYy02MTItXFxuYXJjaC94ODYva3ZtL21zcnMuYzo2MTM6c3RhdGljIGludCBzZXRfZWZlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBtc3JfZGF0YSAqbXNyX2luZm8pXFxuYXJjaC94ODYva3ZtL21zcnMuYy02MTQte1xcbi0tXFxuYXJjaC94ODYva3ZtL21zcnMuYy02MzMtXFxuYXJjaC94ODYva3ZtL21zcnMuYzo2MzQ6XFx0ciA9IGt2bV94ODZfY2FsbChzZXRfZWZlcikodmNwdSwgZWZlcik7XFxuYXJjaC94ODYva3ZtL21zcnMuYy02MzUtXFx0aWYgKHIpIHtcXG4tLVxcbmFyY2gveDg2L2t2bS9tc3JzLmM9MTQ0Mj1pbnQga3ZtX3NldF9tc3JfY29tbW9uKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IG1zcl9kYXRhICptc3JfaW5mbylcXG4tLVxcbmFyY2gveDg2L2t2bS9tc3JzLmMtMTUzOS1cXHRjYXNlIE1TUl9FRkVSOlxcbmFyY2gveDg2L2t2bS9tc3JzLmM6MTU0MDpcXHRcXHRyZXR1cm4gc2V0X2VmZXIodmNwdSwgbXNyX2luZm8pO1xcbmFyY2gveDg2L2t2bS9tc3JzLmMtMTU0MS1cXHRjYXNlIE1TUl9LN19IV0NSOiB7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vcmVncy5jPTU3MD1zdGF0aWMgaW50IF9fc2V0X3NyZWdzX2NvbW1vbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fc3JlZ3MgKnNyZWdzLFxcbi0tXFxuYXJjaC94ODYva3ZtL3JlZ3MuYy01OTgtXFx0Km1tdV9yZXNldF9uZWVkZWQgfD0gdmNwdS1cXHUwMDNlYXJjaC5lZmVyICE9IHNyZWdzLVxcdTAwM2VlZmVyO1xcbmFyY2gveDg2L2t2bS9yZWdzLmM6NTk5OlxcdGt2bV94ODZfY2FsbChzZXRfZWZlcikodmNwdSwgc3JlZ3MtXFx1MDAzZWVmZXIpO1xcbmFyY2gveDg2L2t2bS9yZWdzLmMtNjAwLVxcbi0tXFxuYXJjaC94ODYva3ZtL3NtbS5jPTI3OT12b2lkIGVudGVyX3NtbShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc21tLmMtMzYxLVxcdGlmIChndWVzdF9jcHVfY2FwX2hhcyh2Y3B1LCBYODZfRkVBVFVSRV9MTSkpXFxuYXJjaC94ODYva3ZtL3NtbS5jOjM2MjpcXHRcXHRpZiAoa3ZtX3g4Nl9jYWxsKHNldF9lZmVyKSh2Y3B1LCAwKSlcXG5hcmNoL3g4Ni9rdm0vc21tLmMtMzYzLVxcdFxcdFxcdGdvdG8gZXJyb3I7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jPTc0ND1zdGF0aWMgdm9pZCBuZXN0ZWRfdm1jYjAyX3ByZXBhcmVfc2F2ZShzdHJ1Y3QgdmNwdV9zdm0gKnN2bSlcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtNzkxLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6NzkyOlxcdHN2bV9zZXRfZWZlcih2Y3B1LCBzdm0tXFx1MDAzZW5lc3RlZC5zYXZlLmVmZXIpO1xcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtNzkzLVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYz0xMzIxPXZvaWQgbmVzdGVkX3N2bV92bWV4aXQoc3RydWN0IHZjcHVfc3ZtICpzdm0pXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE0MjYtXFx0a3ZtX3NldF9yZmxhZ3ModmNwdSwgdm1jYjAxLVxcdTAwM2VzYXZlLnJmbGFncyk7XFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxNDI3OlxcdHN2bV9zZXRfZWZlcih2Y3B1LCB2bWNiMDEtXFx1MDAzZXNhdmUuZWZlcik7XFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xNDI4LVxcdHN2bV9zZXRfY3IwKHZjcHUsIHZtY2IwMS1cXHUwMDNlc2F2ZS5jcjAgfCBYODZfQ1IwX1BFKTtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM9MjAxPXN0YXRpYyBpbnQgZ2V0X25wdF9sZXZlbCh2b2lkKVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy0yMDktXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYzoyMTA6aW50IHN2bV9zZXRfZWZlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBlZmVyKVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtMjExLXtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM9MjczMj1zdGF0aWMgaW50IGVmZXJfdHJhcChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTI3MzgtXFx0ICogQ2xlYXIgdGhlIEVGRVJfU1ZNRSBiaXQgZnJvbSBFRkVSLiBUaGUgU1ZNIGNvZGUgYWx3YXlzIHNldHMgdGhpc1xcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM6MjczOTpcXHQgKiBiaXQgaW4gc3ZtX3NldF9lZmVyKCksIGJ1dCBfX2t2bV92YWxpZF9lZmVyKCkgY2hlY2tzIGl0IGFnYWluc3RcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTI3NDAtXFx0ICogd2hldGhlciB0aGUgZ3Vlc3QgaGFzIFg4Nl9GRUFUVVJFX1NWTSAtIHRoaXMgYXZvaWRzIGEgZmFpbHVyZSBpZlxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYz01MzE0PXN0cnVjdCBrdm1feDg2X29wcyBzdm1feDg2X29wcyBfX2luaXRkYXRhID0ge1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy01MzU1LVxcdC5zZXRfY3I0ID0gc3ZtX3NldF9jcjQsXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYzo1MzU2OlxcdC5zZXRfZWZlciA9IHN2bV9zZXRfZWZlcixcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTUzNTctXFx0LmdldF9pZHQgPSBzdm1fZ2V0X2lkdCxcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmg9ODEwPXZvaWQgc3ZtX3VwZGF0ZV9sYnJ2KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uaC04MTEtXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uaDo4MTI6aW50IHN2bV9zZXRfZWZlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBlZmVyKTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oLTgxMy12b2lkIHN2bV9zZXRfY3IwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgbG9uZyBjcjApO1xcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmM9NDEzPXN0YXRpYyB2b2lkIHZ0X3NldF9jcjQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBsb25nIGNyNClcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jLTQyMC1cXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYzo0MjE6c3RhdGljIGludCB2dF9zZXRfZWZlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBlZmVyKVxcbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jLTQyMi17XFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYy00MjUtXFxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmM6NDI2OlxcdHJldHVybiB2bXhfc2V0X2VmZXIodmNwdSwgZWZlcik7XFxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmMtNDI3LX1cXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jPTg4MD1zdHJ1Y3Qga3ZtX3g4Nl9vcHMgdnRfeDg2X29wcyBfX2luaXRkYXRhID0ge1xcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmMtOTI0LVxcdC5zZXRfY3I0ID0gdnRfb3Aoc2V0X2NyNCksXFxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmM6OTI1OlxcdC5zZXRfZWZlciA9IHZ0X29wKHNldF9lZmVyKSxcXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYy05MjYtXFx0LmdldF9pZHQgPSB2dF9vcChnZXRfaWR0KSxcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmM9MjQyNj1zdGF0aWMgdm9pZCBwcmVwYXJlX3ZtY3MwMl9lYXJseShzdHJ1Y3QgdmNwdV92bXggKnZteCwgc3RydWN0IGxvYWRlZF92bWNzICp2bWNzMDEsXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jLTI1MzktXFx0ICogdm1jczEyJ3MgVk1fe0VOVFJZLEVYSVR9X0xPQURfSUEzMl9FRkVSIGFuZCBWTV9FTlRSWV9JQTMyRV9NT0RFXFxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYzoyNTQwOlxcdCAqIGFyZSBlbXVsYXRlZCBieSB2bXhfc2V0X2VmZXIoKSBpbiBwcmVwYXJlX3ZtY3MwMigpLCBidXQgc3BlY3VsYXRlXFxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy0yNTQxLVxcdCAqIG9uIHRoZSByZWxhdGVkIGJpdHMgKGlmIHN1cHBvcnRlZCBieSB0aGUgQ1BVKSBpbiB0aGUgaG9wZSB0aGF0XFxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYzoyNTQyOlxcdCAqIHdlIGNhbiBhdm9pZCBWTVdyaXRlcyBkdXJpbmcgdm14X3NldF9lZmVyKCkuXFxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy0yNTQzLVxcdCAqXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jLTI1NjQtXFx0ICogd2Ugc2hvdWxkIHVzZSBpdHMgZXhpdCBjb250cm9scy4gTm90ZSB0aGF0IFZNX0VYSVRfTE9BRF9JQTMyX0VGRVJcXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jOjI1NjU6XFx0ICogYml0cyBtYXkgYmUgbW9kaWZpZWQgYnkgdm14X3NldF9lZmVyKCkgaW4gcHJlcGFyZV92bWNzMDIoKS5cXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jLTI1NjYtXFx0ICovXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jPTI3NTU9c3RhdGljIGludCBwcmVwYXJlX3ZtY3MwMihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCB2bWNzMTIgKnZtY3MxMixcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmMtMjgzOC1cXHQvKiBOb3RlOiBtYXkgbW9kaWZ5IFZNX0VOVFJZL0VYSVRfQ09OVFJPTFMgYW5kIEdVRVNUL0hPU1RfSUEzMl9FRkVSICovXFxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYzoyODM5OlxcdHZteF9zZXRfZWZlcih2Y3B1LCB2Y3B1LVxcdTAwM2VhcmNoLmVmZXIpO1xcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmMtMjg0MC1cXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmM9NDc4Mz1zdGF0aWMgdm9pZCBsb2FkX3ZtY3MxMl9ob3N0X3N0YXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmMtNDc5NC1cXHRcXHR2Y3B1LVxcdTAwM2VhcmNoLmVmZXIgXFx1MDAyNj0gfihFRkVSX0xNQSB8IEVGRVJfTE1FKTtcXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jOjQ3OTU6XFx0dm14X3NldF9lZmVyKHZjcHUsIHZjcHUtXFx1MDAzZWFyY2guZWZlcik7XFxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYy00Nzk2LVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuYz00OTQzPXN0YXRpYyB2b2lkIG5lc3RlZF92bXhfcmVzdG9yZV9ob3N0X3N0YXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmMtNDk3Mi1cXHQgKi9cXG5hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5jOjQ5NzM6XFx0dm14X3NldF9lZmVyKHZjcHUsIG5lc3RlZF92bXhfZ2V0X3ZtY3MwMV9ndWVzdF9lZmVyKHZteCkpO1xcbmFyY2gveDg2L2t2bS92bXgvbmVzdGVkLmMtNDk3NC1cXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM9MzIwMT1zdGF0aWMgdm9pZCBlbnRlcl9ybW9kZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTMyNDgtXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzozMjQ5OmludCB2bXhfc2V0X2VmZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgZWZlcilcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTMyNTAte1xcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYz0zMjc0PXN0YXRpYyB2b2lkIGVudGVyX2xtb2RlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMzI4Ny1cXHR9XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYzozMjg4OlxcdHZteF9zZXRfZWZlcih2Y3B1LCB2Y3B1LVxcdTAwM2VhcmNoLmVmZXIgfCBFRkVSX0xNQSk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy0zMjg5LX1cXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM9MzI5MT1zdGF0aWMgdm9pZCBleGl0X2xtb2RlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTMyOTIte1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6MzI5MzpcXHR2bXhfc2V0X2VmZXIodmNwdSwgdmNwdS1cXHUwMDNlYXJjaC5lZmVyIFxcdTAwMjYgfkVGRVJfTE1BKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jLTMyOTQtfVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC92bXguaD0zNTc9dm9pZCB2bXhfc2V0X2ludGVycnVwdF9zaGFkb3coc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBpbnQgbWFzayk7XFxuYXJjaC94ODYva3ZtL3ZteC92bXguaDozNTg6aW50IHZteF9zZXRfZWZlcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBlZmVyKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5oLTM1OS12b2lkIHZteF9zZXRfY3IwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgbG9uZyBjcjApO1xcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC94ODZfb3BzLmg9NzE9Ym9vbCB2bXhfaXNfdmFsaWRfY3I0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgbG9uZyBjcjQpO1xcbmFyY2gveDg2L2t2bS92bXgveDg2X29wcy5oOjcyOmludCB2bXhfc2V0X2VmZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgZWZlcik7XFxuYXJjaC94ODYva3ZtL3ZteC94ODZfb3BzLmgtNzMtdm9pZCB2bXhfZ2V0X2lkdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBkZXNjX3B0ciAqZHQpO1xcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jPTk1MTk9dm9pZCBrdm1fdmNwdV9yZXNldChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGJvb2wgaW5pdF9ldmVudClcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYy05NjI1LVxcdGt2bV94ODZfY2FsbChzZXRfY3I0KSh2Y3B1LCAwKTtcXG5hcmNoL3g4Ni9rdm0veDg2LmM6OTYyNjpcXHRrdm1feDg2X2NhbGwoc2V0X2VmZXIpKHZjcHUsIDApO1xcbmFyY2gveDg2L2t2bS94ODYuYy05NjI3LVxcdGt2bV94ODZfY2FsbCh1cGRhdGVfZXhjZXB0aW9uX2JpdG1hcCkodmNwdSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDAwOjQ0OjA2Ljc1MzEyMzgyOVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk4ODU0OTQ3MTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBFRkVSIE1TUiBNb2RpZmljYXRpb24gaW4gS1ZNKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0IHRhcmdldHMgYGFyY2gveDg2L2t2bS9tc3JzLmNgIHNwZWNpZmljYWxseS4gSXQncyBmb2N1c2VkIG9uIHRoZSBga3ZtX3ZhbGlkX2VmZXJgIGFuZCBgc2V0X2VmZXJgIGZ1bmN0aW9ucywgd2hpY2gsIGFzIEkgdW5kZXJzdGFuZCBpdCwgYXJlIGNyaXRpY2FsIGZvciB2YWxpZGF0aW5nIGFuZCBhcHBseWluZyBtb2RpZmljYXRpb25zIHRvIHRoZSBFeHRlbmRlZCBGZWF0dXJlIEVuYWJsZSBSZWdpc3RlciAoRUZFUikgTVNSLiBUaGlzIGlzIGEgY3J1Y2lhbCBhcmVhIGZvciB2aXJ0dWFsaXphdGlvbiwgYWZmZWN0aW5nIHRoaW5ncyBsaWtlIGxvbmcgbW9kZSBlbnRyeSBhbmQgZW5hYmxpbmcgc3BlY2lmaWMgQ1BVIGZlYXR1cmVzIHdpdGhpbiBhIHZpcnR1YWwgbWFjaGluZS5cblxuVGhlIGtleSBjaGFuZ2UgaGVyZSBpcyB0aGUgaW50cm9kdWN0aW9uIG9mIGNoZWNraW5nIGFnYWluc3QgYGt2bV9jYXBzLnN1cHBvcnRlZF9lZmVyX2JpdHNgIGluc3RlYWQgb2YgdGhlIG9sZGVyIGBlZmVyX3Jlc2VydmVkX2JpdHNgLiBFc3NlbnRpYWxseSwgd2UncmUgc2hpZnRpbmcgaG93IHdlIHZhbGlkYXRlIHRoZSBFRkVSIE1TUiB1cGRhdGVzLiBUaGlzIGlzIGEgZGVmaW5pdGUgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aGluIHRoZSBLVk0gc3Vic3lzdGVtLCBhbmQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGF0IHNoaWZ0LiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IHRob3NlIGBrdm1fY2Fwc2AgYWN0dWFsbHkgKmFyZSogYW5kIGhvdyB0aGV5IHJlbGF0ZSB0byB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSBjYXBhYmlsaXRpZXMuXG5cbkkgbmVlZCB0byBjb25maXJtIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXQgcGxheSBoZXJlLiBUaGlzIGxpa2VseSB0b3VjaGVzIHRoZSBgS1ZNYCwgYEtWTV9BTURgLCBhbmQgYEtWTV9JTlRFTGAgb3B0aW9ucyB3aXRoaW4gdGhlIGtlcm5lbCBidWlsZCBjb25maWd1cmF0aW9uLCB3aGljaCBpcyBpbXBvcnRhbnQgdG8gZnVsbHkgZ3Jhc3AgdGhlIGNoYW5nZSdzIGltcGFjdC5cblxuSSdtIG1ha2luZyBhIG1lbnRhbCBub3RlIHRvIHZlcmlmeSB0aGUgc3Vycm91bmRpbmcgY29udGV4dDogYGt2bV9zZXR1cF9lZmVyX2NhcHNgLCB3aGljaCBJIGV4cGVjdCBzZXRzIHVwIHRoZSByZWxldmFudCBmZWF0dXJlIG1hc2tzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NzM5LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTU0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDAwOjQ0OjE2LjYzODYyMDgyM1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjMzNzYxMDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEtWTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9rdm0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIwOmNvbmZpZyBLVk1fWDg2XFxuYXJjaC94ODYva3ZtL0tjb25maWctMjEtXFx0ZGVmX3RyaXN0YXRlIEtWTSBpZiAoS1ZNX0lOVEVMICE9IG4gfHwgS1ZNX0FNRCAhPSBuKVxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctNTEtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6NTI6Y29uZmlnIEtWTVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTUzLVxcdHRyaXN0YXRlIFxcXCJLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy02OC1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo2OTpjb25maWcgS1ZNX1dFUlJPUlxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTcwLVxcdGJvb2wgXFxcIkNvbXBpbGUgS1ZNIHdpdGggLVdlcnJvclxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTgyLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjgzOmNvbmZpZyBLVk1fU1dfUFJPVEVDVEVEX1ZNXFxuYXJjaC94ODYva3ZtL0tjb25maWctODQtXFx0Ym9vbCBcXFwiRW5hYmxlIHN1cHBvcnQgZm9yIEtWTSBzb2Z0d2FyZS1wcm90ZWN0ZWQgVk1zXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctOTUtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6OTY6Y29uZmlnIEtWTV9JTlRFTFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTk3LVxcdHRyaXN0YXRlIFxcXCJLVk0gZm9yIEludGVsIChhbmQgY29tcGF0aWJsZSkgcHJvY2Vzc29ycyBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTA2LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjEwNzpjb25maWcgS1ZNX0lOVEVMX1BST1ZFX1ZFXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTA4LSAgICAgICAgYm9vbCBcXFwiQ2hlY2sgdGhhdCBndWVzdHMgZG8gbm90IHJlY2VpdmUgI1ZFIGV4Y2VwdGlvbnNcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz0xMjI9Y29uZmlnIFg4Nl9TR1hfS1ZNXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMzMtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTM0OmNvbmZpZyBLVk1fSU5URUxfVERYXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTM1LVxcdGJvb2wgXFxcIkludGVsIFRydXN0IERvbWFpbiBFeHRlbnNpb25zIChURFgpIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNDUtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTQ2OmNvbmZpZyBLVk1fQU1EXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTQ3LVxcdHRyaXN0YXRlIFxcXCJLVk0gZm9yIEFNRCBwcm9jZXNzb3JzIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNTUtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTU2OmNvbmZpZyBLVk1fQU1EX1NFVlxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE1Ny1cXHRib29sIFxcXCJBTUQgU2VjdXJlIEVuY3J5cHRlZCBWaXJ0dWFsaXphdGlvbiAoU0VWKSBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTcxLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE3Mjpjb25maWcgS1ZNX0lPQVBJQ1xcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE3My1cXHRib29sIFxcXCJJL08gQVBJQywgUElDLCBhbmQgUElUIGVtdWxhdGlvblxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE4MS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxODI6Y29uZmlnIEtWTV9TTU1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xODMtXFx0Ym9vbCBcXFwiU3lzdGVtIE1hbmFnZW1lbnQgTW9kZSBlbXVsYXRpb25cXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xOTItXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTkzOmNvbmZpZyBLVk1fSFlQRVJWXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTk0LVxcdGJvb2wgXFxcIlN1cHBvcnQgZm9yIE1pY3Jvc29mdCBIeXBlci1WIGVtdWxhdGlvblxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIwNi1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMDc6Y29uZmlnIEtWTV9YRU5cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMDgtXFx0Ym9vbCBcXFwiU3VwcG9ydCBmb3IgWGVuIGh5cGVyY2FsbCBpbnRlcmZhY2VcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMTUtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MjE2OmNvbmZpZyBLVk1fUFJPVkVfTU1VXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjE3LVxcdGJvb2wgXFxcIlByb3ZlIEtWTSBNTVUgY29ycmVjdG5lc3NcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMjgtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MjI5OmNvbmZpZyBLVk1fRVhURVJOQUxfV1JJVEVfVFJBQ0tJTkdcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzAtXFx0Ym9vbFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIzMS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMzI6Y29uZmlnIEtWTV9NQVhfTlJfVkNQVVNcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzMtXFx0aW50IFxcXCJNYXhpbXVtIG51bWJlciBvZiB2Q1BVcyBwZXIgS1ZNIGd1ZXN0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwMDo0NDoxNi43NjIwMDI1MTRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1OTQ3NzIzNTQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgS1ZNIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBLVk0gcGF0Y2gsIGFuZCB0aGUga2V5IGNvbmZpZ3VyYXRpb25zIGhlcmUgYXJlIG9idmlvdXNseSBgS1ZNYCwgYnV0IGFsc28gcG90ZW50aWFsbHkgYEtWTV9BTURgIGFuZCBgS1ZNX0lOVEVMYC4gSSdsbCBmaXJzdCBjb25maXJtIHRoYXQganVzdCBgS1ZNYCBpdHNlbGYgaXMgc3VmZmljaWVudCBmb3IgdGhpcyBwYXJ0aWN1bGFyIGNoZWNrLiBBbHJpZ2h0LCBnb29kLCBpdCBhcHBlYXJzIHRoYXQgYEtWTWAgaXMgaW5kZWVkIGVub3VnaCB0byBtb3ZlIGZvcndhcmQuXG5cbk5vdywgSSdtIGRpdmluZyBkZWVwZXIgaW50byB0aGUgaW1wbGVtZW50YXRpb24gZGV0YWlscy4gSSBuZWVkIHRvIHZlcmlmeSB0aGUgcHJlc2VuY2Ugb2YgYSBmZXcgY3JpdGljYWwgZnVuY3Rpb25zLiBGaXJzdCwgaXMgYGt2bV9zZXR1cF9lZmVyX2NhcHNgIGluIGBhcmNoL3g4Ni9rdm0veDg2LmNgPyBZZXMsIGl0J3MgdGhlcmUuIE5leHQsIEknbGwgY2hlY2sgZm9yIGBrdm1fdmFsaWRfZWZlcmAgaW4gYGFyY2gveDg2L2t2bS9tc3JzLmNgIOKAkyB5ZXAsIHRoYXQgZnVuY3Rpb24gZXhpc3RzIHRvby4gQW5kIGxhc3RseSwgSSdsbCBjb25maXJtIHRoYXQgYHNldF9lZmVyYCBpcyBwcmVzZW50IGFsc28gaW4gYGFyY2gveDg2L2t2bS9tc3JzLmNgLiBHb29kLCBhbGwgdGhyZWUgYXJlIHByZXNlbnQgYXMgZXhwZWN0ZWQuXG5cbkl0J3MgZXZpZGVudCB0aGF0IHRoaXMgcGF0Y2ggaXMgbWFraW5nIGEgZnVuY3Rpb25hbCBjaGFuZ2UuIEl0IHNlZW1zIHRvIGJlIHJlbW92aW5nIGBrdm1fZW5hYmxlX2VmZXJfYml0c2AgYW5kLCBpbnN0ZWFkLCBkaXJlY3RseSBtb2RpZnlpbmcgYGt2bV9jYXBzLnN1cHBvcnRlZF9lZmVyX2JpdHNgLlxuXG5BbHJpZ2h0LCBJJ20gc2F0aXNmaWVkLiBOb3csIGl0J3MgdGltZSB0byBkb2N1bWVudCB0aGVzZSByZXN1bHRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDQ1MSwiT3V0cHV0VG9rZW5zIjoxMzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDA6NDQ6MjIuNzA5NzI4OTM3WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ5ODg3MDM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIixcbiAgICBcIktWTV9BTURcIixcbiAgICBcIktWTV9JTlRFTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV92YWxpZF9lZmVyXCIsXG4gICAgXCJzZXRfZWZlclwiLFxuICAgIFwia3ZtX3NldHVwX2VmZXJfY2Fwc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGhvdyBLVk0gdmFsaWRhdGVzIGFuZCBzZXRzIHRoZSBFRkVSIE1TUiBieSByZXBsYWNpbmcgYGVmZXJfcmVzZXJ2ZWRfYml0c2Agd2l0aCBga3ZtX2NhcHMuc3VwcG9ydGVkX2VmZXJfYml0c2AuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIEtWTSBsb2dpYyB0aGF0IGFmZmVjdHMgZ3Vlc3QgZXhlY3V0aW9uIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiLFxuICAgIFwiS1ZNX0FNRFwiLFxuICAgIFwiS1ZNX0lOVEVMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX3ZhbGlkX2VmZXJcIixcbiAgICBcInNldF9lZmVyXCIsXG4gICAgXCJrdm1fc2V0dXBfZWZlcl9jYXBzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgaG93IEtWTSB2YWxpZGF0ZXMgYW5kIHNldHMgdGhlIEVGRVIgTVNSIGJ5IHJlcGxhY2luZyBgZWZlcl9yZXNlcnZlZF9iaXRzYCB3aXRoIGBrdm1fY2Fwcy5zdXBwb3J0ZWRfZWZlcl9iaXRzYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgS1ZNIGxvZ2ljIHRoYXQgYWZmZWN0cyBndWVzdCBleGVjdXRpb24gYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowsssxz[1] Phase: Succeeded StartedAt: 2026-07-14 00:44:34 +0000 UTC FinishedAt: 2026-07-14 00:44:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsssxz[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-14 00:44:34 +0000 UTC FinishedAt: 2026-07-14 00:44:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsssxz[2] Phase: Succeeded StartedAt: 2026-07-14 00:44:34 +0000 UTC FinishedAt: 2026-07-14 05:12:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsssxz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_valid_efer","set_efer","kvm_setup_efer_caps"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"f4243b36-4236-4dc6-9118-ce8ecc23e6fa","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-14 00:44:34 +0000 UTC FinishedAt: 2026-07-14 05:12:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_valid_efer","set_efer","kvm_setup_efer_caps"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"f4243b36-4236-4dc6-9118-ce8ecc23e6fa","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowsssxz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_valid_efer","set_efer","kvm_setup_efer_caps"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"f4243b36-4236-4dc6-9118-ce8ecc23e6fa","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-14 00:44:34 +0000 UTC FinishedAt: 2026-07-14 00:44:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsssxz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_valid_efer","set_efer","kvm_setup_efer_caps"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"f4243b36-4236-4dc6-9118-ce8ecc23e6fa","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-14 00:44:34 +0000 UTC FinishedAt: 2026-07-14 00:44:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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-workflowsssxz/series-workflowsssxz-convert-artifact-1815682107/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsssxz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_valid_efer","set_efer","kvm_setup_efer_caps"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"f4243b36-4236-4dc6-9118-ce8ecc23e6fa","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-14 00:44:44 +0000 UTC FinishedAt: 2026-07-14 01:17:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsssxz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_valid_efer","set_efer","kvm_setup_efer_caps"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"f4243b36-4236-4dc6-9118-ce8ecc23e6fa","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-14 00:44:44 +0000 UTC FinishedAt: 2026-07-14 01:17:45 +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:*a8fe3e32-2233-44b9-8fdf-c770708c0618,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-workflowsssxz/series-workflowsssxz-convert-artifact-1815682107/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": "993bb4e0-05ba-454c-8122-b58a65fddd02", "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-workflowsssxz/series-workflowsssxz-build-action-1007561337/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsssxz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_valid_efer","set_efer","kvm_setup_efer_caps"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"f4243b36-4236-4dc6-9118-ce8ecc23e6fa","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-14 00:44:44 +0000 UTC FinishedAt: 2026-07-14 01:17:35 +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:*a8fe3e32-2233-44b9-8fdf-c770708c0618,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-workflowsssxz/series-workflowsssxz-convert-artifact-1815682107/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": "993bb4e0-05ba-454c-8122-b58a65fddd02", "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-workflowsssxz/series-workflowsssxz-build-action-1007561337/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsssxz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_valid_efer","set_efer","kvm_setup_efer_caps"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"f4243b36-4236-4dc6-9118-ce8ecc23e6fa","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-14 01:17:45 +0000 UTC FinishedAt: 2026-07-14 01:17:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsssxz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_valid_efer","set_efer","kvm_setup_efer_caps"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"f4243b36-4236-4dc6-9118-ce8ecc23e6fa","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-14 01:17:45 +0000 UTC FinishedAt: 2026-07-14 01:17:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsssxz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_valid_efer","set_efer","kvm_setup_efer_caps"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"f4243b36-4236-4dc6-9118-ce8ecc23e6fa","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-14 01:17:45 +0000 UTC FinishedAt: 2026-07-14 01:17:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsssxz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_valid_efer","set_efer","kvm_setup_efer_caps"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"f4243b36-4236-4dc6-9118-ce8ecc23e6fa","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-14 01:17:45 +0000 UTC FinishedAt: 2026-07-14 01:17:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"f4243b36-4236-4dc6-9118-ce8ecc23e6fa","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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-workflowsssxz/series-workflowsssxz-convert-artifact-1737007250/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsssxz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_valid_efer","set_efer","kvm_setup_efer_caps"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"f4243b36-4236-4dc6-9118-ce8ecc23e6fa","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-14 01:17:55 +0000 UTC FinishedAt: 2026-07-14 01:19:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsssxz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_valid_efer","set_efer","kvm_setup_efer_caps"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"f4243b36-4236-4dc6-9118-ce8ecc23e6fa","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-14 01:17:55 +0000 UTC FinishedAt: 2026-07-14 01:19:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*993bb4e0-05ba-454c-8122-b58a65fddd02,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-workflowsssxz/series-workflowsssxz-build-action-1007561337/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-workflowsssxz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_valid_efer","set_efer","kvm_setup_efer_caps"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"f4243b36-4236-4dc6-9118-ce8ecc23e6fa","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-14 01:19:47 +0000 UTC FinishedAt: 2026-07-14 01:19:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsssxz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_valid_efer","set_efer","kvm_setup_efer_caps"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"f4243b36-4236-4dc6-9118-ce8ecc23e6fa","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-14 01:19:47 +0000 UTC FinishedAt: 2026-07-14 01:19:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsssxz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_valid_efer","set_efer","kvm_setup_efer_caps"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"f4243b36-4236-4dc6-9118-ce8ecc23e6fa","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-14 01:19:47 +0000 UTC FinishedAt: 2026-07-14 02:07:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsssxz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_valid_efer","set_efer","kvm_setup_efer_caps"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"f4243b36-4236-4dc6-9118-ce8ecc23e6fa","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-14 01:19:47 +0000 UTC FinishedAt: 2026-07-14 02:07:43 +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:*a8fe3e32-2233-44b9-8fdf-c770708c0618,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-workflowsssxz/series-workflowsssxz-convert-artifact-1737007250/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": "bd5a5c5e-6707-4cde-9743-3bf13a82abe6", "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-workflowsssxz/series-workflowsssxz-build-action-4209057062/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsssxz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_valid_efer","set_efer","kvm_setup_efer_caps"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"f4243b36-4236-4dc6-9118-ce8ecc23e6fa","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-14 01:19:47 +0000 UTC FinishedAt: 2026-07-14 02:07:17 +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:*a8fe3e32-2233-44b9-8fdf-c770708c0618,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-workflowsssxz/series-workflowsssxz-convert-artifact-1737007250/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": "bd5a5c5e-6707-4cde-9743-3bf13a82abe6", "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-workflowsssxz/series-workflowsssxz-build-action-4209057062/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsssxz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_valid_efer","set_efer","kvm_setup_efer_caps"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"f4243b36-4236-4dc6-9118-ce8ecc23e6fa","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-14 02:07:43 +0000 UTC FinishedAt: 2026-07-14 02:07:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsssxz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_valid_efer","set_efer","kvm_setup_efer_caps"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"f4243b36-4236-4dc6-9118-ce8ecc23e6fa","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-14 02:07:43 +0000 UTC FinishedAt: 2026-07-14 02:07:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsssxz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_valid_efer","set_efer","kvm_setup_efer_caps"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"f4243b36-4236-4dc6-9118-ce8ecc23e6fa","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-14 02:07:43 +0000 UTC FinishedAt: 2026-07-14 02:10:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsssxz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_valid_efer","set_efer","kvm_setup_efer_caps"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"f4243b36-4236-4dc6-9118-ce8ecc23e6fa","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-14 02:07:43 +0000 UTC FinishedAt: 2026-07-14 02:09:52 +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:*bd5a5c5e-6707-4cde-9743-3bf13a82abe6,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-workflowsssxz/series-workflowsssxz-build-action-4209057062/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-workflowsssxz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_valid_efer","set_efer","kvm_setup_efer_caps"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"f4243b36-4236-4dc6-9118-ce8ecc23e6fa","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-14 02:10:02 +0000 UTC FinishedAt: 2026-07-14 05:12:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsssxz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_valid_efer","set_efer","kvm_setup_efer_caps"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"f4243b36-4236-4dc6-9118-ce8ecc23e6fa","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-14 02:10:02 +0000 UTC FinishedAt: 2026-07-14 05:12:50 +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_valid_efer","set_efer","kvm_setup_efer_caps"],"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:*993bb4e0-05ba-454c-8122-b58a65fddd02,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*bd5a5c5e-6707-4cde-9743-3bf13a82abe6,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-workflowsssxz/series-workflowsssxz-build-action-1007561337/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-workflowsssxz/series-workflowsssxz-build-action-4209057062/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowsssxz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_valid_efer","set_efer","kvm_setup_efer_caps"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"f4243b36-4236-4dc6-9118-ce8ecc23e6fa","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-14 02:10:02 +0000 UTC FinishedAt: 2026-07-14 02:10:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsssxz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_valid_efer","set_efer","kvm_setup_efer_caps"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"f4243b36-4236-4dc6-9118-ce8ecc23e6fa","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-14 02:10:02 +0000 UTC FinishedAt: 2026-07-14 02:10:08 +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_valid_efer","set_efer","kvm_setup_efer_caps"],"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-workflowsssxz/series-workflowsssxz-convert-artifact-2304984807/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsssxz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_valid_efer","set_efer","kvm_setup_efer_caps"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"f4243b36-4236-4dc6-9118-ce8ecc23e6fa","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-14 02:10:02 +0000 UTC FinishedAt: 2026-07-14 02:10:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsssxz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_valid_efer","set_efer","kvm_setup_efer_caps"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"f4243b36-4236-4dc6-9118-ce8ecc23e6fa","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-14 02:10:02 +0000 UTC FinishedAt: 2026-07-14 02:10:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsssxz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_valid_efer","set_efer","kvm_setup_efer_caps"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"f4243b36-4236-4dc6-9118-ce8ecc23e6fa","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-14 02:10:02 +0000 UTC FinishedAt: 2026-07-14 02:10:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsssxz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_valid_efer","set_efer","kvm_setup_efer_caps"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"f4243b36-4236-4dc6-9118-ce8ecc23e6fa","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-14 02:10:12 +0000 UTC FinishedAt: 2026-07-14 05:12:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsssxz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_valid_efer","set_efer","kvm_setup_efer_caps"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD","KVM_INTEL"],"series_id":"f4243b36-4236-4dc6-9118-ce8ecc23e6fa","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-14 02:10:12 +0000 UTC FinishedAt: 2026-07-14 05:12:40 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*993bb4e0-05ba-454c-8122-b58a65fddd02,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*bd5a5c5e-6707-4cde-9743-3bf13a82abe6,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-workflowsssxz/series-workflowsssxz-build-action-1007561337/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-workflowsssxz/series-workflowsssxz-build-action-4209057062/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-workflowsssxz/series-workflowsssxz-convert-artifact-2304984807/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,}