Name: series-workflowvm8rn Phase: Succeeded StartedAt: 2026-09-06 22:13:11 +0000 UTC FinishedAt: 2026-09-06 23:18:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvm8rn[0] Phase: Succeeded StartedAt: 2026-09-06 22:13:11 +0000 UTC FinishedAt: 2026-09-06 22:36:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvm8rn[0].run-triage Phase: Succeeded StartedAt: 2026-09-06 22:13:11 +0000 UTC FinishedAt: 2026-09-06 22:36:01 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "1b60ed34f712e9f606d80951f1586f4274ebadf1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "P54_COMMON", "P54_USB", "MAC80211", "USB" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "1b60ed34f712e9f606d80951f1586f4274ebadf1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "P54_COMMON", "P54_USB", "MAC80211", "USB" ], "series_id": "cd518fb1-7904-4199-bf48-a6dcad792fa7" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "p54_parse_firmware", "p54u_start_ops" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIyOjM1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1A1NF9DT01NT04mIzM0OywKICAgICYjMzQ7UDU0X1VTQiYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtwNTRfcGFyc2VfZmlybXdhcmUmIzM0OywKICAgICYjMzQ7cDU0dV9zdGFydF9vcHMmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGlucHV0IHZhbGlkYXRpb24gYW5kIGJvdW5kcyBjaGVja2luZyBmb3IgZmlybXdhcmUgYm9vdCByZWNvcmQgZGVzY3JpcHRvcnMgaW4gcDU0X3BhcnNlX2Zpcm13YXJlKCkuIFNwZWNpZmljYWxseSwgaXQgdmFsaWRhdGVzIHRoYXQgdGhlIGJvb3QgcmVjb3JkIGxlbmd0aCBpcyBzdWZmaWNpZW50IHRvIGNvdmVyIHN0cnVjdCBib290cmVjX2Rlc2MgZmllbGRzIChwcmV2ZW50aW5nIG91dC1vZi1ib3VuZHMgcmVhZHMgb24gdHJ1bmNhdGVkIGZpcm13YXJlIGJ1ZmZlcnMsIGRldGVjdGFibGUgYnkgS0FTQU4pIGFuZCBlbnN1cmVzIHRoYXQgcnhfZW5kIFx1MDAzZT0gMHgzNTAwIGFuZCByeF9lbmQgLSAweDM1MDAgXHUwMDNlIHJ4X3N0YXJ0IHRvIHByZXZlbnQgaW50ZWdlciB1bmRlcmZsb3cgYW5kIGludmFsaWQgYnVmZmVyIHJhbmdlcy5cblxuTm8gdW5pbml0aWFsaXplZCBtZW1vcnkgaXMgYWxsb2NhdGVkLCByZWFkLCBvciBleHBvc2VkLiBMb2NhbCB2YXJpYWJsZXMgKHJ4X3N0YXJ0LCByeF9lbmQpIGFyZSBleHBsaWNpdGx5IGluaXRpYWxpemVkIGZyb20gdGhlIGZpcm13YXJlIGRlc2NyaXB0b3IgYmVmb3JlIGJlaW5nIGNoZWNrZWQgYW5kIHN0b3JlZC4gTm8gZGF0YSBpcyBjb3BpZWQgdG8gdXNlcnNwYWNlIHdpdGhvdXQgaW5pdGlhbGl6YXRpb24uIFRoZXJlZm9yZSwgc3RhbmRhcmQgS0FTQU4gYnVpbGRzIGFyZSBzdWZmaWNpZW50IGFuZCBLTVNBTiBmdXp6aW5nIGlzIG5vdCBuZWVkZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYm91bmRzIGFuZCByYW5nZSB2YWxpZGF0aW9uIGNoZWNrcyBmb3IgZmlybXdhcmUgZGVzY3JpcHRvcnMgaW4gcDU0X3BhcnNlX2Zpcm13YXJlKCkuIFRoaXMgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHZpYSB0aGUgcDU0dXNiIGRyaXZlciB3aGljaCBjYW4gYmUgZnV6emVkIHVzaW5nIFVTQiBlbXVsYXRpb24gKGUuZy4gUmF3IEdhZGdldCkuIEZ1enppbmcgaXMgd2FycmFudGVkIHRvIHZlcmlmeSB0aGF0IG1hbGZvcm1lZCBmaXJtd2FyZSBpbWFnZXMgYW5kIGVkZ2UgY2FzZXMgYXJlIGhhbmRsZWQgc2FmZWx5LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIyOjM1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZTcwM2MwMzQ2YmNmZDlmZDVmMWU0NGU5Mzk5OGYxYmVmZGIxMzI2M1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gU2VwIDYgMjI6MzU6MDkgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmNcbmluZGV4IGEzZDkwNTNmMDQzYzYuLjVkODJlMGE0MzgzNTggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jXG5AQCAtNzksOSAmIzQzOzc5LDI2IEBAIGludCBwNTRfcGFyc2VfZmlybXdhcmUoc3RydWN0IGllZWU4MDIxMV9odyAqZGV2LCBjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3KVxuIFx0XHRjYXNlIEJSX0NPREVfREVTQ1I6IHtcbiBcdFx0XHRzdHJ1Y3QgYm9vdHJlY19kZXNjICpkZXNjID1cbiBcdFx0XHRcdChzdHJ1Y3QgYm9vdHJlY19kZXNjICopYm9vdHJlYy1cdTAwM2VkYXRhO1xuLVx0XHRcdHByaXYtXHUwMDNlcnhfc3RhcnQgPSBsZTMyX3RvX2NwdShkZXNjLVx1MDAzZXJ4X3N0YXJ0KTtcbi1cdFx0XHQvKiBGSVhNRSBhZGQgc2FuaXR5IGNoZWNraW5nICovXG4tXHRcdFx0cHJpdi1cdTAwM2VyeF9lbmQgPSBsZTMyX3RvX2NwdShkZXNjLVx1MDAzZXJ4X2VuZCkgLSAweDM1MDA7XG4mIzQzO1x0XHRcdHUzMiByeF9zdGFydCwgcnhfZW5kO1xuJiM0MztcbiYjNDM7XHRcdFx0aWYgKGxlbiBcdTAwM2MgRElWX1JPVU5EX1VQKG9mZnNldG9mZW5kKHN0cnVjdCBib290cmVjX2Rlc2MsXG4mIzQzO1x0XHRcdFx0XHRcdFx0ICAgcnhfa2V5Y2FjaGVfc2l6ZSksXG4mIzQzO1x0XHRcdFx0XHRcdCAgICAgICBzaXplb2YoKmJvb3RyZWMtXHUwMDNlZGF0YSkpKSB7XG4mIzQzO1x0XHRcdFx0d2lwaHlfZXJyKHByaXYtXHUwMDNlaHctXHUwMDNld2lwaHksXG4mIzQzO1x0XHRcdFx0XHQgIFwmIzM0O2Zpcm13YXJlIGRlc2NyaXB0b3IgaXMgdG9vIHNob3J0XFxuXCYjMzQ7KTtcbiYjNDM7XHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHRcdFx0fVxuJiM0MztcbiYjNDM7XHRcdFx0cnhfc3RhcnQgPSBsZTMyX3RvX2NwdShkZXNjLVx1MDAzZXJ4X3N0YXJ0KTtcbiYjNDM7XHRcdFx0cnhfZW5kID0gbGUzMl90b19jcHUoZGVzYy1cdTAwM2VyeF9lbmQpO1xuJiM0MztcdFx0XHRpZiAocnhfZW5kIFx1MDAzYyAweDM1MDAgfHwgcnhfZW5kIC0gMHgzNTAwIFx1MDAzYz0gcnhfc3RhcnQpIHtcbiYjNDM7XHRcdFx0XHR3aXBoeV9lcnIocHJpdi1cdTAwM2Vody1cdTAwM2V3aXBoeSxcbiYjNDM7XHRcdFx0XHRcdCAgXCYjMzQ7ZmlybXdhcmUgZGVzY3JpcHRvciBoYXMgaW52YWxpZCBSWCByYW5nZVxcblwmIzM0Oyk7XG4mIzQzO1x0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1x0XHRcdH1cbiYjNDM7XG4mIzQzO1x0XHRcdHByaXYtXHUwMDNlcnhfc3RhcnQgPSByeF9zdGFydDtcbiYjNDM7XHRcdFx0cHJpdi1cdTAwM2VyeF9lbmQgPSByeF9lbmQgLSAweDM1MDA7XG4gXHRcdFx0cHJpdi1cdTAwM2VoZWFkcm9vbSA9IGRlc2MtXHUwMDNlaGVhZHJvb207XG4gXHRcdFx0cHJpdi1cdTAwM2V0YWlscm9vbSA9IGRlc2MtXHUwMDNldGFpbHJvb207XG4gXHRcdFx0cHJpdi1cdTAwM2Vwcml2YWN5X2NhcHMgPSBkZXNjLVx1MDAzZXByaXZhY3lfY2FwcztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAyMjozNTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtQNTRfQ09NTU9OJiMzNDssCiAgICAmIzM0O1A1NF9VU0ImIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7VVNCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cDU0X3BhcnNlX2Zpcm13YXJlJiMzNDssCiAgICAmIzM0O3A1NHVfc3RhcnRfb3BzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYm91bmRzIGFuZCByYW5nZSB2YWxpZGF0aW9uIGNoZWNrcyBmb3IgZmlybXdhcmUgZGVzY3JpcHRvcnMgaW4gcDU0X3BhcnNlX2Zpcm13YXJlKCkuIFRoaXMgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHZpYSB0aGUgcDU0dXNiIGRyaXZlciB3aGljaCBjYW4gYmUgZnV6emVkIHVzaW5nIFVTQiBlbXVsYXRpb24gKGUuZy4gUmF3IEdhZGdldCkuIEZ1enppbmcgaXMgd2FycmFudGVkIHRvIHZlcmlmeSB0aGF0IG1hbGZvcm1lZCBmaXJtd2FyZSBpbWFnZXMgYW5kIGVkZ2UgY2FzZXMgYXJlIGhhbmRsZWQgc2FmZWx5LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZTcwM2MwMzQ2YmNmZDlmZDVmMWU0NGU5Mzk5OGYxYmVmZGIxMzI2MwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTdW4gU2VwIDYgMjI6MzU6MDkgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYwppbmRleCBhM2Q5MDUzZjA0M2M2Li41ZDgyZTBhNDM4MzU4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMKQEAgLTc5LDkgJiM0Mzs3OSwyNiBAQCBpbnQgcDU0X3BhcnNlX2Zpcm13YXJlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmRldiwgY29uc3Qgc3RydWN0IGZpcm13YXJlICpmdykKIAkJY2FzZSBCUl9DT0RFX0RFU0NSOiB7CiAJCQlzdHJ1Y3QgYm9vdHJlY19kZXNjICpkZXNjID0KIAkJCQkoc3RydWN0IGJvb3RyZWNfZGVzYyAqKWJvb3RyZWMtJmd0O2RhdGE7Ci0JCQlwcml2LSZndDtyeF9zdGFydCA9IGxlMzJfdG9fY3B1KGRlc2MtJmd0O3J4X3N0YXJ0KTsKLQkJCS8qIEZJWE1FIGFkZCBzYW5pdHkgY2hlY2tpbmcgKi8KLQkJCXByaXYtJmd0O3J4X2VuZCA9IGxlMzJfdG9fY3B1KGRlc2MtJmd0O3J4X2VuZCkgLSAweDM1MDA7CiYjNDM7CQkJdTMyIHJ4X3N0YXJ0LCByeF9lbmQ7CiYjNDM7CiYjNDM7CQkJaWYgKGxlbiAmbHQ7IERJVl9ST1VORF9VUChvZmZzZXRvZmVuZChzdHJ1Y3QgYm9vdHJlY19kZXNjLAomIzQzOwkJCQkJCQkgICByeF9rZXljYWNoZV9zaXplKSwKJiM0MzsJCQkJCQkgICAgICAgc2l6ZW9mKCpib290cmVjLSZndDtkYXRhKSkpIHsKJiM0MzsJCQkJd2lwaHlfZXJyKHByaXYtJmd0O2h3LSZndDt3aXBoeSwKJiM0MzsJCQkJCSAgJiMzNDtmaXJtd2FyZSBkZXNjcmlwdG9yIGlzIHRvbyBzaG9ydFxuJiMzNDspOwomIzQzOwkJCQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJCQl9CiYjNDM7CiYjNDM7CQkJcnhfc3RhcnQgPSBsZTMyX3RvX2NwdShkZXNjLSZndDtyeF9zdGFydCk7CiYjNDM7CQkJcnhfZW5kID0gbGUzMl90b19jcHUoZGVzYy0mZ3Q7cnhfZW5kKTsKJiM0MzsJCQlpZiAocnhfZW5kICZsdDsgMHgzNTAwIHx8IHJ4X2VuZCAtIDB4MzUwMCAmbHQ7PSByeF9zdGFydCkgewomIzQzOwkJCQl3aXBoeV9lcnIocHJpdi0mZ3Q7aHctJmd0O3dpcGh5LAomIzQzOwkJCQkJICAmIzM0O2Zpcm13YXJlIGRlc2NyaXB0b3IgaGFzIGludmFsaWQgUlggcmFuZ2VcbiYjMzQ7KTsKJiM0MzsJCQkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CQkJfQomIzQzOwomIzQzOwkJCXByaXYtJmd0O3J4X3N0YXJ0ID0gcnhfc3RhcnQ7CiYjNDM7CQkJcHJpdi0mZ3Q7cnhfZW5kID0gcnhfZW5kIC0gMHgzNTAwOwogCQkJcHJpdi0mZ3Q7aGVhZHJvb20gPSBkZXNjLSZndDtoZWFkcm9vbTsKIAkJCXByaXYtJmd0O3RhaWxyb29tID0gZGVzYy0mZ3Q7dGFpbHJvb207CiAJCQlwcml2LSZndDtwcml2YWN5X2NhcHMgPSBkZXNjLSZndDtwcml2YWN5X2NhcHM7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIyOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyMjMKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxNTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaCBmb3IgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW4uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IGlmIHRoaXMgcGF0Y2ggaXMgZXZlbiB3b3J0aCBvdXIgZnV6emluZyBlZmZvcnRzLCBhbmQgaWYgc28sIGhvdyB0byBhcHByb2FjaCBpdCBzdHJhdGVnaWNhbGx5LiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucyBhbmQgcGlucG9pbnQgdGhlIG1vc3QgaW1wYWN0ZnVsIHN5bWJvbHMuCgpUaGUgdGFyZ2V0IGlzIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jYCwgYW5kIHRoZSBmdW5jdGlvbiBvZiBpbnRlcmVzdCBpcyBgcDU0X3BhcnNlX2Zpcm13YXJlYC4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gZ2V0IHRoZSBsYXkgb2YgdGhlIGxhbmQuIEkmIzM5O2xsIHVzZSBgZ3JlcHBlcmAgKG9yIG15IHRydXN0eSBmaWxlIHJlYWRlcikgdG8gZ2V0IHRoZSBicm9hZGVyIGNvbnRleHQgb2YgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmNgLiBVbmRlcnN0YW5kaW5nIGhvdyB0aGlzIGZpbGUgZml0cyBpbnRvIHRoZSBsYXJnZXIgcGljdHVyZSBvZiB0aGUgYHA1NGAgbW9kdWxlIGlzIGNydWNpYWwuCgpOZXh0LCBJIG5lZWQgdG8ga25vdyBob3cgdGhlIGBwNTRgIG1vZHVsZSBpcyB1c2VkLiBJcyB0aGlzIGEgVVNCLCBQQ0ksIG9yIFNQSSBkZXZpY2U/IFRoZSBoYXJkd2FyZSBpbnRlcmZhY2Ugc2lnbmlmaWNhbnRseSBpbXBhY3RzIHBvdGVudGlhbCBhdHRhY2sgc3VyZmFjZXMgYW5kIGZ1enppbmcgc3RyYXRlZ2llcy4gSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50byB0aGUgcmVsZXZhbnQgS2NvbmZpZyBhbmQgdGhlIHNvdXJjZSBmaWxlcyBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2AgdG8gZGV0ZXJtaW5lIHRoYXQuIFRoaXMgaW5mb3JtYXRpb24gd2lsbCBoZWxwIG1lIGRldGVybWluZSB3aGljaCBpbnRlcmFjdGlvbnMgY291bGQgbGVhZCB0byBpbnRlcmVzdGluZyBhbmQgY29tcGxleCBzdGF0ZSBjaGFuZ2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIyOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Y29kZXNlYXJjaC1kaXItaW5kZXg8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0RpciYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlcyYjMzQ7OiBbCiAgICAmIzM0O2VlcHJvbS5jJiMzNDssCiAgICAmIzM0O2VlcHJvbS5oJiMzNDssCiAgICAmIzM0O2Z3aW8uYyYjMzQ7LAogICAgJiMzNDtsZWQuYyYjMzQ7LAogICAgJiMzNDtsbWFjLmgmIzM0OywKICAgICYjMzQ7bWFpbi5jJiMzNDssCiAgICAmIzM0O3A1NC5oJiMzNDssCiAgICAmIzM0O3A1NHBjaS5jJiMzNDssCiAgICAmIzM0O3A1NHBjaS5oJiMzNDssCiAgICAmIzM0O3A1NHNwaS5jJiMzNDssCiAgICAmIzM0O3A1NHNwaS5oJiMzNDssCiAgICAmIzM0O3A1NHNwaV9lZXByb20uaCYjMzQ7LAogICAgJiMzNDtwNTR1c2IuYyYjMzQ7LAogICAgJiMzNDtwNTR1c2IuaCYjMzQ7LAogICAgJiMzNDt0eHJ4LmMmIzM0OwogIF0sCiAgJiMzNDtTdWJkaXJzJiMzNDs6IG51bGwKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIyOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4MDgKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiA5MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIHA1NHVzYiBEcml2ZXIgYW5kIEVtdWxhdGlvbiBQb3NzaWJpbGl0aWVzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgcDU0dXNiLmNgLCB3aGljaCwgYXMgZXhwZWN0ZWQsIHJlc2lkZXMgd2l0aGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvYC4gTXkgaW50ZXJlc3QgaXMgcGlxdWVkIGJlY2F1c2UgSSYjMzk7bSB0aGlua2luZyBhYm91dCBVU0IgZGV2aWNlIGVtdWxhdGlvbiBhbmQgaG93IHRoaXMgZHJpdmVyIG1pZ2h0IGludGVyYWN0IHdpdGggaXQuIFRoZSBVU0IgUmF3IEdhZGdldCBhbmQgc3l6a2FsbGVyJiMzOTtzIFVTQiBlbXVsYXRpb24gYXJlIHBhcnRpY3VsYXJseSByZWxldmFudCBoZXJlLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSBpbnRlcmVzdGluZyBwb3NzaWJpbGl0aWVzIGxpZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhpcyBkcml2ZXIgdG8gZmlndXJlIG91dCB0aGUgYmVzdCB3YXkgdG8gaW50ZXJhY3Qgd2l0aCBpdCwgc28gSSYjMzk7bGwgZ28gZGlnZ2luZyBpbnRvIGVpdGhlciBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L0tjb25maWdgIG9yLCBpZiB0aGF0JiMzOTtzIG5vdCBzcGVjaWZpYyBlbm91Z2gsIHRoZSBtb3JlIGdlbmVyYWwgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL0tjb25maWdgIGZpbGUuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIEtjb25maWcgZmlsZXMgZm9yIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gVGhhdCYjMzk7cyB0aGUgbG9naWNhbCBuZXh0IHN0ZXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjI6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7UDU0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDEzMDcgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9NYWtlZmlsZToyOm9iai0kKENPTkZJR19QNTRfQ09NTU9OKVx0JiM0Mzs9IHA1NC9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L0tjb25maWc6Mjpjb25maWcgUDU0X0NPTU1PTlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1NvZnRtYWMgUHJpc201NCBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L0tjb25maWctMTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvS2NvbmZpZzoxNzpjb25maWcgUDU0X1VTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L0tjb25maWctMTgtXHR0cmlzdGF0ZSBcJiMzNDtQcmlzbTU0IFVTQiBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvS2NvbmZpZzoxOTpcdGRlcGVuZHMgb24gUDU0X0NPTU1PTiBcdTAwMjZcdTAwMjYgVVNCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvS2NvbmZpZy0yMC1cdHNlbGVjdCBDUkMzMlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9LY29uZmlnLTI4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L0tjb25maWc6Mjk6Y29uZmlnIFA1NF9QQ0lcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9LY29uZmlnLTMwLVx0dHJpc3RhdGUgXCYjMzQ7UHJpc201NCBQQ0kgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L0tjb25maWc6MzE6XHRkZXBlbmRzIG9uIFA1NF9DT01NT04gXHUwMDI2XHUwMDI2IFBDSVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L0tjb25maWctMzItXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L0tjb25maWctNDItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvS2NvbmZpZzo0Mzpjb25maWcgUDU0X1NQSVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L0tjb25maWctNDQtXHR0cmlzdGF0ZSBcJiMzNDtQcmlzbTU0IFNQSSAoc3RsYzQ1eHgpIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9LY29uZmlnOjQ1Olx0ZGVwZW5kcyBvbiBQNTRfQ09NTU9OIFx1MDAyNlx1MDAyNiBTUElfTUFTVEVSXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvS2NvbmZpZy00Ni1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvS2NvbmZpZy01MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9LY29uZmlnOjUyOmNvbmZpZyBQNTRfU1BJX0RFRkFVTFRfRUVQUk9NXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvS2NvbmZpZy01My1cdGJvb2wgXCYjMzQ7SW5jbHVkZSBmYWxsYmFjayBFRVBST00gYmxvYlwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L0tjb25maWc6NTQ6XHRkZXBlbmRzIG9uIFA1NF9TUElcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9LY29uZmlnLTU1LVx0ZGVmYXVsdCBuXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L0tjb25maWctNjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvS2NvbmZpZzo2OTpjb25maWcgUDU0X0xFRFNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9LY29uZmlnLTcwLVx0Ym9vbFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L0tjb25maWc6NzE6XHRkZXBlbmRzIG9uIFA1NF9DT01NT04gXHUwMDI2XHUwMDI2IE1BQzgwMjExX0xFRFMgXHUwMDI2XHUwMDI2IChMRURTX0NMQVNTID0geSB8fCBMRURTX0NMQVNTID0gUDU0X0NPTU1PTilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9LY29uZmlnLTcyLVx0ZGVmYXVsdCB5XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L01ha2VmaWxlPTI9cDU0Y29tbW9uLW9ianNcdFx0XHQ6PSBlZXByb20ubyBmd2lvLm8gdHhyeC5vIG1haW4ub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L01ha2VmaWxlOjM6cDU0Y29tbW9uLSQoQ09ORklHX1A1NF9MRURTKVx0JiM0Mzs9IGxlZC5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvTWFrZWZpbGUtNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9NYWtlZmlsZTo1Om9iai0kKENPTkZJR19QNTRfQ09NTU9OKVx0JiM0Mzs9IHA1NGNvbW1vbi5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfUDU0X1VTQilcdFx0JiM0Mzs9IHA1NHVzYi5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvTWFrZWZpbGU6NzpvYmotJChDT05GSUdfUDU0X1BDSSlcdFx0JiM0Mzs9IHA1NHBjaS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvTWFrZWZpbGU6ODpvYmotJChDT05GSUdfUDU0X1NQSSlcdFx0JiM0Mzs9IHA1NHNwaS5vXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYz0yNz1pbnQgcDU0X3BhcnNlX2Zpcm13YXJlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmRldiwgY29uc3Qgc3RydWN0IGZpcm13YXJlICpmdylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTE1Ni1cdFx0aWYgKHByaXYtXHUwMDNlZndfdmFyIFx1MDAzZT0gMHg1MDApIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM6MTU3Olx0XHRcdHByaXYtXHUwMDNldHhfc3RhdHNbUDU0X1FVRVVFX0FDX1ZPXS5saW1pdCA9IDE2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYzoxNTg6XHRcdFx0cHJpdi1cdTAwM2V0eF9zdGF0c1tQNTRfUVVFVUVfQUNfVkldLmxpbWl0ID0gMTY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jOjE1OTpcdFx0XHRwcml2LVx1MDAzZXR4X3N0YXRzW1A1NF9RVUVVRV9BQ19CRV0ubGltaXQgPSAxNjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM6MTYwOlx0XHRcdHByaXYtXHUwMDNldHhfc3RhdHNbUDU0X1FVRVVFX0FDX0JLXS5saW1pdCA9IDE2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy0xNjEtXHRcdH0gZWxzZSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jOjE2MjpcdFx0XHRwcml2LVx1MDAzZXR4X3N0YXRzW1A1NF9RVUVVRV9BQ19WT10ubGltaXQgPSAzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYzoxNjM6XHRcdFx0cHJpdi1cdTAwM2V0eF9zdGF0c1tQNTRfUVVFVUVfQUNfVkldLmxpbWl0ID0gNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM6MTY0Olx0XHRcdHByaXYtXHUwMDNldHhfc3RhdHNbUDU0X1FVRVVFX0FDX0JFXS5saW1pdCA9IDM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jOjE2NTpcdFx0XHRwcml2LVx1MDAzZXR4X3N0YXRzW1A1NF9RVUVVRV9BQ19CS10ubGltaXQgPSAyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy0xNjYtXHRcdH1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM6MTY3Olx0XHRwcml2LVx1MDAzZWh3LVx1MDAzZXF1ZXVlcyA9IFA1NF9RVUVVRV9BQ19OVU07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTE2OC1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jPTIwMT1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnA1NF9hbGxvY19za2Ioc3RydWN0IHA1NF9jb21tb24gKnByaXYsIHUxNiBoZHJfZmxhZ3MsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy0yMDctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jOjIwODpcdGlmIChmcmFtZV9sZW4gXHUwMDNlIFA1NF9NQVhfQ1RSTF9GUkFNRV9MRU4pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTIwOS1cdFx0cmV0dXJuIE5VTEw7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYz0yMjc9aW50IHA1NF9kb3dubG9hZF9lZXByb20oc3RydWN0IHA1NF9jb21tb24gKnByaXYsIHZvaWQgKmJ1Zixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTI0MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM6MjQxOlx0c2tiID0gcDU0X2FsbG9jX3NrYihwcml2LCBQNTRfSERSX0ZMQUdfQ09OVFJPTCwgZWVwcm9tX2hkcl9zaXplICYjNDM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jOjI0MjpcdFx0XHQgICAgbGVuLCBQNTRfQ09OVFJPTF9UWVBFX0VFUFJPTV9SRUFEQkFDSyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtMjQzLVx0XHRcdCAgICBHRlBfS0VSTkVMKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jPTI3Nz1pbnQgcDU0X3VwZGF0ZV9iZWFjb25fdGltKHN0cnVjdCBwNTRfY29tbW9uICpwcml2LCB1MTYgYWlkLCBib29sIHNldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTI4MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM6MjgyOlx0c2tiID0gcDU0X2FsbG9jX3NrYihwcml2LCBQNTRfSERSX0ZMQUdfQ09OVFJPTF9PUFNFVCwgc2l6ZW9mKCp0aW0pLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYzoyODM6XHRcdFx0ICAgIFA1NF9DT05UUk9MX1RZUEVfVElNLCBHRlBfQVRPTUlDKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtMjg0LVx0aWYgKHVubGlrZWx5KCFza2IpKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM9Mjk0PWludCBwNTRfc3RhX3VubG9jayhzdHJ1Y3QgcDU0X2NvbW1vbiAqcHJpdiwgdTggKmFkZHIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy0yOTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jOjI5OTpcdHNrYiA9IHA1NF9hbGxvY19za2IocHJpdiwgUDU0X0hEUl9GTEFHX0NPTlRST0xfT1BTRVQsIHNpemVvZigqc3RhKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM6MzAwOlx0XHRcdCAgICBQNTRfQ09OVFJPTF9UWVBFX1BTTV9TVEFfVU5MT0NLLCBHRlBfQVRPTUlDKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtMzAxLVx0aWYgKHVubGlrZWx5KCFza2IpKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM9MzEwPWludCBwNTRfdHhfY2FuY2VsKHN0cnVjdCBwNTRfY29tbW9uICpwcml2LCBfX2xlMzIgcmVxX2lkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtMzE4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYzozMTk6XHRza2IgPSBwNTRfYWxsb2Nfc2tiKHByaXYsIFA1NF9IRFJfRkxBR19DT05UUk9MX09QU0VULCBzaXplb2YoKmNhbmNlbCksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jOjMyMDpcdFx0XHQgICAgUDU0X0NPTlRST0xfVFlQRV9UWENBTkNFTCwgR0ZQX0FUT01JQyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTMyMS1cdGlmICh1bmxpa2VseSghc2tiKSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jPTMzMD1pbnQgcDU0X3NldHVwX21hYyhzdHJ1Y3QgcDU0X2NvbW1vbiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTMzNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM6MzM2Olx0c2tiID0gcDU0X2FsbG9jX3NrYihwcml2LCBQNTRfSERSX0ZMQUdfQ09OVFJPTF9PUFNFVCwgc2l6ZW9mKCpzZXR1cCksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jOjMzNzpcdFx0XHQgICAgUDU0X0NPTlRST0xfVFlQRV9TRVRVUCwgR0ZQX0FUT01JQyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTMzOC1cdGlmICghc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtMzQ0LVx0XHRjYXNlIE5MODAyMTFfSUZUWVBFX1NUQVRJT046XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jOjM0NTpcdFx0XHRtb2RlID0gUDU0X0ZJTFRFUl9UWVBFX1NUQVRJT047XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTM0Ni1cdFx0XHRicmVhaztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtMzQ3LVx0XHRjYXNlIE5MODAyMTFfSUZUWVBFX0FQOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYzozNDg6XHRcdFx0bW9kZSA9IFA1NF9GSUxURVJfVFlQRV9BUDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtMzQ5LVx0XHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtMzUxLVx0XHRjYXNlIE5MODAyMTFfSUZUWVBFX01FU0hfUE9JTlQ6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jOjM1MjpcdFx0XHRtb2RlID0gUDU0X0ZJTFRFUl9UWVBFX0lCU1M7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTM1My1cdFx0XHRicmVhaztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtMzU0LVx0XHRjYXNlIE5MODAyMTFfSUZUWVBFX01PTklUT1I6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jOjM1NTpcdFx0XHRtb2RlID0gUDU0X0ZJTFRFUl9UWVBFX1BST01JU0NVT1VTO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy0zNTYtXHRcdFx0YnJlYWs7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTM1Ny1cdFx0ZGVmYXVsdDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM6MzU4Olx0XHRcdG1vZGUgPSBQNTRfRklMVEVSX1RZUEVfSElCRVJOQVRFO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy0zNTktXHRcdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy0zNjYtXHRcdGlmIChwcml2LVx1MDAzZWZpbHRlcl9mbGFncyBcdTAwMjYgRklGX09USEVSX0JTUyBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM6MzY3Olx0XHQgICAgKG1vZGUgIT0gUDU0X0ZJTFRFUl9UWVBFX1BST01JU0NVT1VTKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM6MzY4Olx0XHRcdG1vZGUgfD0gUDU0X0ZJTFRFUl9UWVBFX1RSQU5TUEFSRU5UO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy0zNjktXHR9IGVsc2Uge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYzozNzA6XHRcdG1vZGUgPSBQNTRfRklMVEVSX1RZUEVfSElCRVJOQVRFO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy0zNzEtXHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy00MDEtXHRwNTRfdHgocHJpdiwgc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM6NDAyOlx0cHJpdi1cdTAwM2VwaHlfaWRsZSA9IG1vZGUgPT0gUDU0X0ZJTFRFUl9UWVBFX0hJQkVSTkFURTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtNDAzLVx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYz00MDY9aW50IHA1NF9zY2FuKHN0cnVjdCBwNTRfY29tbW9uICpwcml2LCB1MTYgbW9kZSwgdTE2IGR3ZWxsKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtNDE5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYzo0MjA6XHRza2IgPSBwNTRfYWxsb2Nfc2tiKHByaXYsIFA1NF9IRFJfRkxBR19DT05UUk9MX09QU0VULCBzaXplb2YoKmhlYWQpICYjNDM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTQyMS1cdFx0XHQgICAgMiAmIzQzOyBzaXplb2YoKmlxX2F1dG9jYWwpICYjNDM7IHNpemVvZigqYm9keSkgJiM0MztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtNDIyLVx0XHRcdCAgICBzaXplb2YoKnJhdGUpICYjNDM7IDIgKiBzaXplb2YoKnJzc2kpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYzo0MjM6XHRcdFx0ICAgIFA1NF9DT05UUk9MX1RZUEVfU0NBTiwgR0ZQX0FUT01JQyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTQyNC1cdGlmICghc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM9NTU0PWludCBwNTRfc2V0X2xlZHMoc3RydWN0IHA1NF9jb21tb24gKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy01NTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jOjU1OTpcdHNrYiA9IHA1NF9hbGxvY19za2IocHJpdiwgUDU0X0hEUl9GTEFHX0NPTlRST0xfT1BTRVQsIHNpemVvZigqbGVkKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM6NTYwOlx0XHRcdCAgICBQNTRfQ09OVFJPTF9UWVBFX0xFRCwgR0ZQX0FUT01JQyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTU2MS1cdGlmICh1bmxpa2VseSghc2tiKSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jPTU3Mz1pbnQgcDU0X3NldF9lZGNmKHN0cnVjdCBwNTRfY29tbW9uICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtNTc4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYzo1Nzk6XHRza2IgPSBwNTRfYWxsb2Nfc2tiKHByaXYsIFA1NF9IRFJfRkxBR19DT05UUk9MX09QU0VULCBzaXplb2YoKmVkY2YpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYzo1ODA6XHRcdFx0ICAgIFA1NF9DT05UUk9MX1RZUEVfRENGSU5JVCwgR0ZQX0FUT01JQyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTU4MS1cdGlmICh1bmxpa2VseSghc2tiKSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jPTYxMD1pbnQgcDU0X3NldF9wcyhzdHJ1Y3QgcDU0X2NvbW1vbiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTYxOC1cdCAgICAhcHJpdi1cdTAwM2Vwb3dlcnNhdmVfb3ZlcnJpZGUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jOjYxOTpcdFx0bW9kZSA9IFA1NF9QU00gfCBQNTRfUFNNX0JFQUNPTl9USU1FT1VUIHwgUDU0X1BTTV9EVElNIHxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM6NjIwOlx0XHQgICAgICAgUDU0X1BTTV9DSEVDS1NVTSB8IFA1NF9QU01fTUNCQztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtNjIxLVx0ZWxzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYzo2MjI6XHRcdG1vZGUgPSBQNTRfUFNNX0NBTTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtNjIzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYzo2MjQ6XHRza2IgPSBwNTRfYWxsb2Nfc2tiKHByaXYsIFA1NF9IRFJfRkxBR19DT05UUk9MX09QU0VULCBzaXplb2YoKnBzbSksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jOjYyNTpcdFx0XHQgICAgUDU0X0NPTlRST0xfVFlQRV9QU00sIEdGUF9BVE9NSUMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy02MjYtXHRpZiAoIXNrYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTY0My1cdHA1NF90eChwcml2LCBza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYzo2NDQ6XHRwcml2LVx1MDAzZXBoeV9wcyA9IG1vZGUgIT0gUDU0X1BTTV9DQU07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTY0NS1cdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM9NjQ4PWludCBwNTRfaW5pdF94Ym93X3N5bnRoKHN0cnVjdCBwNTRfY29tbW9uICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtNjUyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYzo2NTM6XHRza2IgPSBwNTRfYWxsb2Nfc2tiKHByaXYsIFA1NF9IRFJfRkxBR19DT05UUk9MX09QU0VULCBzaXplb2YoKnhib3cpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYzo2NTQ6XHRcdFx0ICAgIFA1NF9DT05UUk9MX1RZUEVfWEJPV19TWU5USF9DRkcsIEdGUF9LRVJORUwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy02NTUtXHRpZiAodW5saWtlbHkoIXNrYikpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYz02Njc9aW50IHA1NF91cGxvYWRfa2V5KHN0cnVjdCBwNTRfY29tbW9uICpwcml2LCB1OCBhbGdvLCBpbnQgc2xvdCwgdTggaWR4LCB1OCBsZW4sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy02NzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jOjY3MzpcdHNrYiA9IHA1NF9hbGxvY19za2IocHJpdiwgUDU0X0hEUl9GTEFHX0NPTlRST0xfT1BTRVQsIHNpemVvZigqcnhrZXkpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYzo2NzQ6XHRcdFx0ICAgIFA1NF9DT05UUk9MX1RZUEVfUlhfS0VZQ0FDSEUsIEdGUF9LRVJORUwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy02NzUtXHRpZiAodW5saWtlbHkoIXNrYikpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy02ODctXHRzd2l0Y2ggKGFsZ28pIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM6Njg4Olx0Y2FzZSBQNTRfQ1JZUFRPX1dFUDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM6Njg5Olx0Y2FzZSBQNTRfQ1JZUFRPX0FFU0NDTVA6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTY5MC1cdFx0cnhrZXktXHUwMDNla2V5X2xlbiA9IG1pbl90KHU4LCAxNiwgbGVuKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTY5My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM6Njk0Olx0Y2FzZSBQNTRfQ1JZUFRPX1RLSVBNSUNIQUVMOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy02OTUtXHRcdHJ4a2V5LVx1MDAzZWtleV9sZW4gPSAyNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTcwMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM6NzAxOlx0Y2FzZSBQNTRfQ1JZUFRPX05PTkU6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTcwMi1cdFx0cnhrZXktXHUwMDNla2V5X2xlbiA9IDA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYz03MTc9aW50IHA1NF9mZXRjaF9zdGF0aXN0aWNzKHN0cnVjdCBwNTRfY29tbW9uICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtNzIyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYzo3MjM6XHRza2IgPSBwNTRfYWxsb2Nfc2tiKHByaXYsIFA1NF9IRFJfRkxBR19DT05UUk9MLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy03MjQtXHRcdFx0ICAgIHNpemVvZihzdHJ1Y3QgcDU0X3N0YXRpc3RpY3MpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYzo3MjU6XHRcdFx0ICAgIFA1NF9DT05UUk9MX1RZUEVfU1RBVF9SRUFEQkFDSywgR0ZQX0tFUk5FTCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTcyNi1cdGlmICghc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM9NzQ3PWludCBwNTRfc2V0X2dyb3VwZmlsdGVyKHN0cnVjdCBwNTRfY29tbW9uICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtNzUyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYzo3NTM6XHRza2IgPSBwNTRfYWxsb2Nfc2tiKHByaXYsIFA1NF9IRFJfRkxBR19DT05UUk9MX09QU0VULCBzaXplb2YoKmdycCksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jOjc1NDpcdFx0XHQgICAgUDU0X0NPTlRST0xfVFlQRV9HUk9VUF9BRERSRVNTX1RBQkxFLCBHRlBfS0VSTkVMKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtNzU1LVx0aWYgKCFza2IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xlZC5jLTE5LSNpbmNsdWRlIFx1MDAzY25ldC9tYWM4MDIxMS5oXHUwMDNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbGVkLmM6MjA6I2lmZGVmIENPTkZJR19QNTRfTEVEU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xlZC5jLTIxLSNpbmNsdWRlIFx1MDAzY2xpbnV4L2xlZHMuaFx1MDAzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xlZC5jOjIyOiNlbmRpZiAvKiBDT05GSUdfUDU0X0xFRFMgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sZWQuYy0yMy1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oPTE5PWVudW0gcDU0X2NvbnRyb2xfZnJhbWVfdHlwZXMge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoyMDpcdFA1NF9DT05UUk9MX1RZUEVfU0VUVVAgPSAwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoyMTpcdFA1NF9DT05UUk9MX1RZUEVfU0NBTixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MjI6XHRQNTRfQ09OVFJPTF9UWVBFX1RSQVAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjIzOlx0UDU0X0NPTlRST0xfVFlQRV9EQ0ZJTklULFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoyNDpcdFA1NF9DT05UUk9MX1RZUEVfUlhfS0VZQ0FDSEUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjI1Olx0UDU0X0NPTlRST0xfVFlQRV9USU0sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjI2Olx0UDU0X0NPTlRST0xfVFlQRV9QU00sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjI3Olx0UDU0X0NPTlRST0xfVFlQRV9UWENBTkNFTCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6Mjg6XHRQNTRfQ09OVFJPTF9UWVBFX1RYRE9ORSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6Mjk6XHRQNTRfQ09OVFJPTF9UWVBFX0JVUlNULFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDozMDpcdFA1NF9DT05UUk9MX1RZUEVfU1RBVF9SRUFEQkFDSyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MzE6XHRQNTRfQ09OVFJPTF9UWVBFX0JCUCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MzI6XHRQNTRfQ09OVFJPTF9UWVBFX0VFUFJPTV9SRUFEQkFDSyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MzM6XHRQNTRfQ09OVFJPTF9UWVBFX0xFRCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MzQ6XHRQNTRfQ09OVFJPTF9UWVBFX0dQSU8sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjM1Olx0UDU0X0NPTlRST0xfVFlQRV9USU1FUixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MzY6XHRQNTRfQ09OVFJPTF9UWVBFX01PRFVMQVRJT04sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjM3Olx0UDU0X0NPTlRST0xfVFlQRV9TWU5USF9DT05GSUcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjM4Olx0UDU0X0NPTlRST0xfVFlQRV9ERVRFQ1RPUl9WQUxVRSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6Mzk6XHRQNTRfQ09OVFJPTF9UWVBFX1hCT1dfU1lOVEhfQ0ZHLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDo0MDpcdFA1NF9DT05UUk9MX1RZUEVfQ0NFX1FVSUVULFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDo0MTpcdFA1NF9DT05UUk9MX1RZUEVfUFNNX1NUQV9VTkxPQ0ssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjQyOlx0UDU0X0NPTlRST0xfVFlQRV9QQ1MsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjQzOlx0UDU0X0NPTlRST0xfVFlQRV9CVF9CQUxBTkNFUiA9IDI4LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDo0NDpcdFA1NF9DT05UUk9MX1RZUEVfR1JPVVBfQUREUkVTU19UQUJMRSA9IDMwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDo0NTpcdFA1NF9DT05UUk9MX1RZUEVfQVJQVEFCTEUgPSAzMSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6NDY6XHRQNTRfQ09OVFJPTF9UWVBFX0JUX09QVElPTlMgPSAzNSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmgtNDctfTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmgtNDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjQ5OiNkZWZpbmUgUDU0X0hEUl9GTEFHX0NPTlRST0xcdFx0QklUKDE1KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDo1MDojZGVmaW5lIFA1NF9IRFJfRkxBR19DT05UUk9MX09QU0VUXHQoQklUKDE1KSAmIzQzOyBCSVQoMCkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjUxOiNkZWZpbmUgUDU0X0hEUl9GTEFHX0RBVEFfQUxJR05cdFx0QklUKDE0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaC01Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6NTM6I2RlZmluZSBQNTRfSERSX0ZMQUdfREFUQV9PVVRfUFJPTUlTQ1x0XHRCSVQoMClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6NTQ6I2RlZmluZSBQNTRfSERSX0ZMQUdfREFUQV9PVVRfVElNRVNUQU1QXHRcdEJJVCgxKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDo1NTojZGVmaW5lIFA1NF9IRFJfRkxBR19EQVRBX09VVF9TRVFOUlx0XHRCSVQoMilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6NTY6I2RlZmluZSBQNTRfSERSX0ZMQUdfREFUQV9PVVRfQklUM1x0XHRCSVQoMylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6NTc6I2RlZmluZSBQNTRfSERSX0ZMQUdfREFUQV9PVVRfQlVSU1RcdFx0QklUKDQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjU4OiNkZWZpbmUgUDU0X0hEUl9GTEFHX0RBVEFfT1VUX05PQ0FOQ0VMXHRcdEJJVCg1KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDo1OTojZGVmaW5lIFA1NF9IRFJfRkxBR19EQVRBX09VVF9DTEVBUlRJTVx0XHRCSVQoNilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6NjA6I2RlZmluZSBQNTRfSERSX0ZMQUdfREFUQV9PVVRfSElUQ0hISUtFXHRcdEJJVCg3KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDo2MTojZGVmaW5lIFA1NF9IRFJfRkxBR19EQVRBX09VVF9DT01QUkVTU1x0XHRCSVQoOClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6NjI6I2RlZmluZSBQNTRfSERSX0ZMQUdfREFUQV9PVVRfQ09OQ0FUXHRcdEJJVCg5KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDo2MzojZGVmaW5lIFA1NF9IRFJfRkxBR19EQVRBX09VVF9QQ1NfQUNDRVBUXHRCSVQoMTApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjY0OiNkZWZpbmUgUDU0X0hEUl9GTEFHX0RBVEFfT1VUX1dBSVRFT1NQXHRcdEJJVCgxMSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmgtNjUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjY2OiNkZWZpbmUgUDU0X0hEUl9GTEFHX0RBVEFfSU5fRkNTX0dPT0RcdFx0QklUKDApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjY3OiNkZWZpbmUgUDU0X0hEUl9GTEFHX0RBVEFfSU5fTUFUQ0hfTUFDXHRcdEJJVCgxKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDo2ODojZGVmaW5lIFA1NF9IRFJfRkxBR19EQVRBX0lOX01DQkNcdFx0QklUKDIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjY5OiNkZWZpbmUgUDU0X0hEUl9GTEFHX0RBVEFfSU5fQkVBQ09OXHRcdEJJVCgzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDo3MDojZGVmaW5lIFA1NF9IRFJfRkxBR19EQVRBX0lOX01BVENIX0JTU1x0XHRCSVQoNClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6NzE6I2RlZmluZSBQNTRfSERSX0ZMQUdfREFUQV9JTl9CQ0FTVF9CU1NcdFx0QklUKDUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjcyOiNkZWZpbmUgUDU0X0hEUl9GTEFHX0RBVEFfSU5fREFUQVx0XHRCSVQoNilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6NzM6I2RlZmluZSBQNTRfSERSX0ZMQUdfREFUQV9JTl9UUlVOQ0FURURcdFx0QklUKDcpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjc0OiNkZWZpbmUgUDU0X0hEUl9GTEFHX0RBVEFfSU5fQklUOFx0XHRCSVQoOClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6NzU6I2RlZmluZSBQNTRfSERSX0ZMQUdfREFUQV9JTl9UUkFOU1BBUkVOVFx0QklUKDkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oLTc2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaD03Nz1zdHJ1Y3QgcDU0X2hkciB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaC05MS1cdCgoKChzdHJ1Y3QgcDU0X2hkciAqKSAoKHN0cnVjdCBza19idWZmICopIHNrYiktXHUwMDNlZGF0YSktXHUwMDNlXHRcdFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjkyOlx0ZmxhZ3MpID09IGNwdV90b19sZTE2KFA1NF9IRFJfRkxBR19DT05UUk9MX09QU0VUKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmgtOTMtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaC05NS1cdCghKCgoKHN0cnVjdCBwNTRfaGRyICopICgoc3RydWN0IHNrX2J1ZmYgKikgc2tiKS1cdTAwM2VkYXRhKS1cdTAwM2VcdFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjk2Olx0ZmxhZ3MpIFx1MDAyNiBjcHVfdG9fbGUxNihQNTRfSERSX0ZMQUdfQ09OVFJPTCkpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaC05Ny1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oPTE1Mz1lbnVtIHA1NF9yeF9kZWNyeXB0X3N0YXR1cyB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjE1NDpcdFA1NF9ERUNSWVBUX05PTkUgPSAwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoxNTU6XHRQNTRfREVDUllQVF9PSyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MTU2Olx0UDU0X0RFQ1JZUFRfTk9LRVksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjE1NzpcdFA1NF9ERUNSWVBUX05PTUlDSEFFTCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MTU4Olx0UDU0X0RFQ1JZUFRfTk9DS0lQTUlDLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoxNTk6XHRQNTRfREVDUllQVF9GQUlMX1dFUCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MTYwOlx0UDU0X0RFQ1JZUFRfRkFJTF9US0lQLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoxNjE6XHRQNTRfREVDUllQVF9GQUlMX01JQ0hBRUwsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjE2MjpcdFA1NF9ERUNSWVBUX0ZBSUxfQ0tJUEtQLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoxNjM6XHRQNTRfREVDUllQVF9GQUlMX0NLSVBNSUMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjE2NDpcdFA1NF9ERUNSWVBUX0ZBSUxfQUVTQ0NNUFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaC0xNjUtfTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oPTE4Mj1lbnVtIHA1NF90cmFwX3R5cGUge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoxODM6XHRQNTRfVFJBUF9TQ0FOID0gMCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MTg0Olx0UDU0X1RSQVBfVElNRVIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjE4NTpcdFA1NF9UUkFQX0JFQUNPTl9UWCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MTg2Olx0UDU0X1RSQVBfRkFBX1JBRElPX09OLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoxODc6XHRQNTRfVFJBUF9GQUFfUkFESU9fT0ZGLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoxODg6XHRQNTRfVFJBUF9SQURBUixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MTg5Olx0UDU0X1RSQVBfTk9fQkVBQ09OLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoxOTA6XHRQNTRfVFJBUF9UQlRULFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoxOTE6XHRQNTRfVFJBUF9TQ09fRU5URVIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjE5MjpcdFA1NF9UUkFQX1NDT19FWElUXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oLTE5My19O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg9MjAwPWVudW0gcDU0X2ZyYW1lX3NlbnRfc3RhdHVzIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MjAxOlx0UDU0X1RYX09LID0gMCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MjAyOlx0UDU0X1RYX0ZBSUxFRCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MjAzOlx0UDU0X1RYX1BTTSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MjA0Olx0UDU0X1RYX1BTTV9DQU5DRUxMRUQgPSA0XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oLTIwNS19O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg9MjE3PWVudW0gcDU0X3R4X2RhdGFfY3J5cHQge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoyMTg6XHRQNTRfQ1JZUFRPX05PTkUgPSAwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoyMTk6XHRQNTRfQ1JZUFRPX1dFUCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MjIwOlx0UDU0X0NSWVBUT19US0lQLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoyMjE6XHRQNTRfQ1JZUFRPX1RLSVBNSUNIQUVMLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoyMjI6XHRQNTRfQ1JZUFRPX0NDWF9XRVBNSUMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjIyMzpcdFA1NF9DUllQVE9fQ0NYX0tQTUlDLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoyMjQ6XHRQNTRfQ1JZUFRPX0NDWF9LUCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MjI1Olx0UDU0X0NSWVBUT19BRVNDQ01QXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oLTIyNi19O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg9MjI4PWVudW0gcDU0X3R4X2RhdGFfcXVldWUge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoyMjk6XHRQNTRfUVVFVUVfQkVBQ09OXHQ9IDAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjIzMDpcdFA1NF9RVUVVRV9GV1NDQU5cdD0gMSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MjMxOlx0UDU0X1FVRVVFX01HTVRcdFx0PSAyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoyMzI6XHRQNTRfUVVFVUVfQ0FCXHRcdD0gMyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MjMzOlx0UDU0X1FVRVVFX0RBVEFcdFx0PSA0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaC0yMzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjIzNTpcdFA1NF9RVUVVRV9BQ19OVU1cdD0gNCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MjM2Olx0UDU0X1FVRVVFX0FDX1ZPXHRcdD0gNCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MjM3Olx0UDU0X1FVRVVFX0FDX1ZJXHRcdD0gNSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MjM4Olx0UDU0X1FVRVVFX0FDX0JFXHRcdD0gNixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MjM5Olx0UDU0X1FVRVVFX0FDX0JLXHRcdD0gNyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmgtMjQwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaC0yNDEtXHQvKiBrZWVwIGxhc3QgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MjQyOlx0UDU0X1FVRVVFX05VTVx0XHQ9IDgsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oLTI0My19O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaC0yNDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjI0NTojZGVmaW5lIElTX1FPU19RVUVVRShuKVx0KG4gXHUwMDNlPSBQNTRfUVVFVUVfREFUQSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmgtMjQ2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaD0yNDc9c3RydWN0IHA1NF90eF9kYXRhIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oLTI3My0vKiB1bml0IGlzIG1zICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjI3NDojZGVmaW5lIFA1NF9UWF9GUkFNRV9MSUZFVElNRSAyMDAwXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjI3NTojZGVmaW5lIFA1NF9UWF9USU1FT1VUIDQwMDBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6Mjc2OiNkZWZpbmUgUDU0X1NUQVRJU1RJQ1NfVVBEQVRFIDUwMDBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmgtMjc3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoyNzg6I2RlZmluZSBQNTRfRklMVEVSX1RZUEVfTk9ORVx0XHQwXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjI3OTojZGVmaW5lIFA1NF9GSUxURVJfVFlQRV9TVEFUSU9OXHRcdEJJVCgwKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoyODA6I2RlZmluZSBQNTRfRklMVEVSX1RZUEVfSUJTU1x0XHRCSVQoMSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MjgxOiNkZWZpbmUgUDU0X0ZJTFRFUl9UWVBFX0FQXHRcdEJJVCgyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoyODI6I2RlZmluZSBQNTRfRklMVEVSX1RZUEVfVFJBTlNQQVJFTlRcdEJJVCgzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoyODM6I2RlZmluZSBQNTRfRklMVEVSX1RZUEVfUFJPTUlTQ1VPVVNcdEJJVCg0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoyODQ6I2RlZmluZSBQNTRfRklMVEVSX1RZUEVfSElCRVJOQVRFXHRCSVQoNSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6Mjg1OiNkZWZpbmUgUDU0X0ZJTFRFUl9UWVBFX05PQUNLXHRcdEJJVCg2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoyODY6I2RlZmluZSBQNTRfRklMVEVSX1RZUEVfUlhfRElTQUJMRURcdEJJVCg3KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaC0yODctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oPTI4OD1zdHJ1Y3QgcDU0X3NldHVwX21hYyB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaC0zMjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjMyMjojZGVmaW5lIFA1NF9TRVRVUF9WMV9MRU4gNDBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MzIzOiNkZWZpbmUgUDU0X1NFVFVQX1YyX0xFTiAoc2l6ZW9mKHN0cnVjdCBwNTRfc2V0dXBfbWFjKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmgtMzI0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDozMjU6I2RlZmluZSBQNTRfU0NBTl9FWElUXHRCSVQoMClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MzI2OiNkZWZpbmUgUDU0X1NDQU5fVFJBUFx0QklUKDEpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjMyNzojZGVmaW5lIFA1NF9TQ0FOX0FDVElWRSBCSVQoMilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MzI4OiNkZWZpbmUgUDU0X1NDQU5fRklMVEVSIEJJVCgzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaC0zMjktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaD00NTQ9c3RydWN0IHA1NF9wc21faW50ZXJ2YWwge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmgtNDU4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDo0NTk6I2RlZmluZSBQNTRfUFNNX0NBTVx0XHRcdDBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6NDYwOiNkZWZpbmUgUDU0X1BTTVx0XHRcdFx0QklUKDApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjQ2MTojZGVmaW5lIFA1NF9QU01fRFRJTVx0XHRcdEJJVCgxKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDo0NjI6I2RlZmluZSBQNTRfUFNNX01DQkNcdFx0XHRCSVQoMilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6NDYzOiNkZWZpbmUgUDU0X1BTTV9DSEVDS1NVTVx0XHRCSVQoMylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6NDY0OiNkZWZpbmUgUDU0X1BTTV9TS0lQX01PUkVfREFUQVx0XHRCSVQoNClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6NDY1OiNkZWZpbmUgUDU0X1BTTV9CRUFDT05fVElNRU9VVFx0XHRCSVQoNSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6NDY2OiNkZWZpbmUgUDU0X1BTTV9IRk9TTEVFUFx0XHRCSVQoNilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6NDY3OiNkZWZpbmUgUDU0X1BTTV9BVVRPU1dJVENIX1NMRUVQXHRCSVQoNylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6NDY4OiNkZWZpbmUgUDU0X1BTTV9MUElUXHRcdFx0QklUKDgpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjQ2OTojZGVmaW5lIFA1NF9QU01fQkZfVUNBU1RfU0tJUFx0XHRCSVQoOSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6NDcwOiNkZWZpbmUgUDU0X1BTTV9CRl9NQ0FTVF9TS0lQXHRcdEJJVCgxMClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmgtNDcxLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg9NDk0PXN0cnVjdCBwNTRfc3RhX3VubG9jayB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaC00OTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjQ5OTojZGVmaW5lIFA1NF9USU1fQ0xFQVIgQklUKDE1KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaC01MDAtc3RydWN0IHA1NF90aW0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmM9MTY3PXN0YXRpYyBpbnQgcDU0X3N0YXJ0KHN0cnVjdCBpZWVlODAyMTFfaHcgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jLTE3NS1cdFx0Z290byBvdXQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jOjE3NjpcdFA1NF9TRVRfUVVFVUUocHJpdi1cdTAwM2Vxb3NfcGFyYW1zWzBdLCAweDAwMDIsIDB4MDAwMywgMHgwMDA3LCA0Nyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jOjE3NzpcdFA1NF9TRVRfUVVFVUUocHJpdi1cdTAwM2Vxb3NfcGFyYW1zWzFdLCAweDAwMDIsIDB4MDAwNywgMHgwMDBmLCA5NCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jOjE3ODpcdFA1NF9TRVRfUVVFVUUocHJpdi1cdTAwM2Vxb3NfcGFyYW1zWzJdLCAweDAwMDMsIDB4MDAwZiwgMHgwM2ZmLCAwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmM6MTc5Olx0UDU0X1NFVF9RVUVVRShwcml2LVx1MDAzZXFvc19wYXJhbXNbM10sIDB4MDAwNywgMHgwMDBmLCAweDAzZmYsIDApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYy0xODAtXHRlcnIgPSBwNTRfc2V0X2VkY2YocHJpdik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYz0yMDI9c3RhdGljIHZvaWQgcDU0X3N0b3Aoc3RydWN0IGllZWU4MDIxMV9odyAqZGV2LCBib29sIHN1c3BlbmQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYy0yMTQtXHRza2JfcXVldWVfcHVyZ2UoXHUwMDI2cHJpdi1cdTAwM2V0eF9xdWV1ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jOjIxNTpcdGZvciAoaSA9IDA7IGkgXHUwMDNjIFA1NF9RVUVVRV9OVU07IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jLTIxNi1cdFx0cHJpdi1cdTAwM2V0eF9zdGF0c1tpXS5jb3VudCA9IDA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYz0zMTg9c3RhdGljIGludCBwNTRfY29uZmlnKHN0cnVjdCBpZWVlODAyMTFfaHcgKmRldiwgaW50IHJhZGlvX2lkeCwgdTMyIGNoYW5nZWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYy0zMzEtXHRcdHByaXYtXHUwMDNlY3VyY2hhbiA9IE5VTEw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jOjMzMjpcdFx0cmV0ID0gcDU0X3NjYW4ocHJpdiwgUDU0X1NDQU5fRVhJVCwgMCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jLTMzMy1cdFx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmM9NDA4PXN0YXRpYyBpbnQgcDU0X2NvbmZfdHgoc3RydWN0IGllZWU4MDIxMV9odyAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmMtNDE2LVx0bXV0ZXhfbG9jayhcdTAwMjZwcml2LVx1MDAzZWNvbmZfbXV0ZXgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYzo0MTc6XHRQNTRfU0VUX1FVRVVFKHByaXYtXHUwMDNlcW9zX3BhcmFtc1txdWV1ZV0sIHBhcmFtcy1cdTAwM2VhaWZzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYy00MTgtXHRcdCAgICAgIHBhcmFtcy1cdTAwM2Vjd19taW4sIHBhcmFtcy1cdTAwM2Vjd19tYXgsIHBhcmFtcy1cdTAwM2V0eG9wKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jPTQ1Mj1zdGF0aWMgdm9pZCBwNTRfYnNzX2luZm9fY2hhbmdlZChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYy00NjUtXHRpZiAoY2hhbmdlZCBcdTAwMjYgQlNTX0NIQU5HRURfQkVBQ09OKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jOjQ2NjpcdFx0cDU0X3NjYW4ocHJpdiwgUDU0X1NDQU5fRVhJVCwgMCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jLTQ2Ny1cdFx0cDU0X3NldHVwX21hYyhwcml2KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jLTQ4Mi1cdFx0aWYgKHByaXYtXHUwMDNlZndfdmFyIFx1MDAzZT0gMHg1MDApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jOjQ4MzpcdFx0XHRwNTRfc2Nhbihwcml2LCBQNTRfU0NBTl9FWElULCAwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmMtNDg0LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmM9NTAwPXN0YXRpYyBpbnQgcDU0X3NldF9rZXkoc3RydWN0IGllZWU4MDIxMV9odyAqZGV2LCBlbnVtIHNldF9rZXlfY21kIGNtZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jLTUzMi1cdFx0XHRrZXktXHUwMDNlZmxhZ3MgfD0gSUVFRTgwMjExX0tFWV9GTEFHX0dFTkVSQVRFX0lWO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYzo1MzM6XHRcdFx0YWxnbyA9IFA1NF9DUllQVE9fVEtJUE1JQ0hBRUw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jLTUzNC1cdFx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jLTU0MS1cdFx0XHRrZXktXHUwMDNlZmxhZ3MgfD0gSUVFRTgwMjExX0tFWV9GTEFHX0dFTkVSQVRFX0lWO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYzo1NDI6XHRcdFx0YWxnbyA9IFA1NF9DUllQVE9fV0VQO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYy01NDMtXHRcdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYy01NDktXHRcdFx0a2V5LVx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9LRVlfRkxBR19HRU5FUkFURV9JVjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmM6NTUwOlx0XHRcdGFsZ28gPSBQNTRfQ1JZUFRPX0FFU0NDTVA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jLTU1MS1cdFx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jPTY1Mz1zdGF0aWMgdW5zaWduZWQgaW50IHA1NF9mbHVzaF9jb3VudChzdHJ1Y3QgcDU0X2NvbW1vbiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jLTY1Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmM6NjU3Olx0QlVJTERfQlVHX09OKFA1NF9RVUVVRV9OVU0gXHUwMDNlIEFSUkFZX1NJWkUocHJpdi1cdTAwM2V0eF9zdGF0cykpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYy02NTgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYy02NjAtXHQgKiBCZWNhdXNlIHRoZSBmaXJtd2FyZSBoYXMgdGhlIHNvbGUgY29udHJvbCBvdmVyIGFueSBmcmFtZXNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmM6NjYxOlx0ICogaW4gdGhlIFA1NF9RVUVVRV9CRUFDT04gb3IgUDU0X1FVRVVFX1NDQU4gcXVldWVzLCB0aGV5XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jLTY2Mi1cdCAqIGRvbiYjMzk7dCByZWFsbHkgY291bnQgYXMgcGVuZGluZyBvciBhY3RpdmUuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jLTY2My1cdCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYzo2NjQ6XHRmb3IgKGkgPSBQNTRfUVVFVUVfTUdNVDsgaSBcdTAwM2MgUDU0X1FVRVVFX05VTTsgaSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jLTY2NS1cdFx0dG90YWwgJiM0Mzs9IHByaXYtXHUwMDNldHhfc3RhdHNbaV0ubGVuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmM9NjY5PXN0YXRpYyB2b2lkIHA1NF9mbHVzaChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpkZXYsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYy02ODAtXHQgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmM6NjgxOlx0aSA9IFA1NF9TVEFUSVNUSUNTX1VQREFURSAqIDIgLyAyMDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmMtNjgyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmM9NzM2PXN0cnVjdCBpZWVlODAyMTFfaHcgKnA1NF9pbml0X2NvbW1vbihzaXplX3QgcHJpdl9kYXRhX2xlbilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jLTc2NC1cdHByaXYtXHUwMDNlYmVhY29uX3JlcV9pZCA9IGNwdV90b19sZTMyKDApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYzo3NjU6XHRwcml2LVx1MDAzZXR4X3N0YXRzW1A1NF9RVUVVRV9CRUFDT05dLmxpbWl0ID0gMTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmM6NzY2Olx0cHJpdi1cdTAwM2V0eF9zdGF0c1tQNTRfUVVFVUVfRldTQ0FOXS5saW1pdCA9IDE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jOjc2NzpcdHByaXYtXHUwMDNldHhfc3RhdHNbUDU0X1FVRVVFX01HTVRdLmxpbWl0ID0gMztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmM6NzY4Olx0cHJpdi1cdTAwM2V0eF9zdGF0c1tQNTRfUVVFVUVfQ0FCXS5saW1pdCA9IDM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jOjc2OTpcdHByaXYtXHUwMDNldHhfc3RhdHNbUDU0X1FVRVVFX0RBVEFdLmxpbWl0ID0gNTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmMtNzcwLVx0ZGV2LVx1MDAzZXF1ZXVlcyA9IDE7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYz04MDU9aW50IHA1NF9yZWdpc3Rlcl9jb21tb24oc3RydWN0IGllZWU4MDIxMV9odyAqZGV2LCBzdHJ1Y3QgZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmMtODE2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYzo4MTc6I2lmZGVmIENPTkZJR19QNTRfTEVEU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYy04MTgtXHRlcnIgPSBwNTRfaW5pdF9sZWRzKHByaXYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmMtODIyLVx0fVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYzo4MjM6I2VuZGlmIC8qIENPTkZJR19QNTRfTEVEUyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYy04MjQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYz04NTQ9dm9pZCBwNTRfdW5yZWdpc3Rlcl9jb21tb24oc3RydWN0IGllZWU4MDIxMV9odyAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmMtODU5LVx0XHRwcml2LVx1MDAzZXJlZ2lzdGVyZWQgPSBmYWxzZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmM6ODYwOiNpZmRlZiBDT05GSUdfUDU0X0xFRFNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmMtODYxLVx0XHRwNTRfdW5yZWdpc3Rlcl9sZWRzKHByaXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYzo4NjI6I2VuZGlmIC8qIENPTkZJR19QNTRfTEVEUyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYy04NjMtXHRcdGllZWU4MDIxMV91bnJlZ2lzdGVyX2h3KGRldik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3A1NC5oLTEwLVxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjI6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTkxNjQKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipUcmFjaW5nIHRoZSBGaXJtd2FyZSBQYXJzaW5nIEZ1bmN0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjYWxsIHN0cnVjdHVyZSBvZiBgcDU0X3BhcnNlX2Zpcm13YXJlYC4gVGhpcyBpcyB1c3VhbGx5IHRoZSBmaXJzdCBzdGVwIHdoZW4gSSYjMzk7bSBkaXZpbmcgaW50byBhIGZpcm13YXJlIGFuYWx5c2lzIG9yIHJldmVyc2UgZW5naW5lZXJpbmcgdGFzay4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGVudHJ5IHBvaW50cyB0byB0aGF0IGZ1bmN0aW9uLiBXaGVyZSBpcyBpdCBiZWluZyAqdXNlZCo/IEZpbmRpbmcgdGhlIGNhbGxlcnMgd2lsbCBnaXZlIG1lIGNyaXRpY2FsIGNvbnRleHQ6IHdoYXQmIzM5O3MgZmVlZGluZyBkYXRhIGludG8gdGhpcyBmdW5jdGlvbiwgdW5kZXIgd2hhdCBjb25kaXRpb25zIGRvZXMgaXQgZXhlY3V0ZSwgYW5kIHdoYXQgb3RoZXIgY29tcG9uZW50cyBhcmUgaW52b2x2ZWQgaW4gdGhpcyBjcml0aWNhbCBwcm9jZXNzPyBXaXRoIHRoaXMsIEkgY2FuIGJlZ2luIHRvIGdyYXNwIHRoZSBiaWdnZXIgcGljdHVyZSDigJMgd2hpY2ggaXMgZXNzZW50aWFsIGZvciBhbnkgZGVlcCBkaXZlIG9yIGRlYnVnZ2luZyBlZmZvcnQgaW4gdGhpcyBmaXJtd2FyZSBzcGFjZS4gRmluZGluZyB0aGUgY2FsbHNpdGVzIGZvciB0aGlzIHBhcnRpY3VsYXIgZnVuY3Rpb24gaXMgdGhlIGZpcnN0LCBuZWNlc3Nhcnkgc3RlcC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAyMjozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwNTRfcGFyc2VfZmlybXdhcmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy0yNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM6Mjc6aW50IHA1NF9wYXJzZV9maXJtd2FyZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpkZXYsIGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZncpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTI4LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTE5OC19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jOjE5OTpFWFBPUlRfU1lNQk9MX0dQTChwNTRfcGFyc2VfZmlybXdhcmUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy0yMDAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3A1NC5oPTI2OD12b2lkIHA1NF9mcmVlX3NrYihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3A1NC5oOjI2OTppbnQgcDU0X3BhcnNlX2Zpcm13YXJlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmRldiwgY29uc3Qgc3RydWN0IGZpcm13YXJlICpmdyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvcDU0LmgtMjcwLWludCBwNTRfcGFyc2VfZWVwcm9tKHN0cnVjdCBpZWVlODAyMTFfaHcgKmRldiwgdm9pZCAqZWVwcm9tLCBpbnQgbGVuKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvcDU0cGNpLmM9NDg9c3RhdGljIGludCBwNTRwX3VwbG9hZF9maXJtd2FyZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3A1NHBjaS5jLTc4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3A1NHBjaS5jOjc5Olx0ZXJyID0gcDU0X3BhcnNlX2Zpcm13YXJlKGRldiwgcHJpdi1cdTAwM2VmaXJtd2FyZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvcDU0cGNpLmMtODAtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9wNTRzcGkuYz0xNDA9c3RhdGljIGludCBwNTRzcGlfcmVxdWVzdF9maXJtd2FyZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3A1NHNwaS5jLTE1Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9wNTRzcGkuYzoxNTM6XHRyZXQgPSBwNTRfcGFyc2VfZmlybXdhcmUoZGV2LCBwcml2LVx1MDAzZWZpcm13YXJlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9wNTRzcGkuYy0xNTQtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3A1NHVzYi5jPTg2Nz1zdGF0aWMgaW50IHA1NHVfc3RhcnRfb3BzKHN0cnVjdCBwNTR1X3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3A1NHVzYi5jLTg3MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9wNTR1c2IuYzo4NzI6XHRyZXQgPSBwNTRfcGFyc2VfZmlybXdhcmUoZGV2LCBwcml2LVx1MDAzZWZ3KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9wNTR1c2IuYy04NzMtXHRpZiAocmV0KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIyOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMTk1CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgcDU0dXNiIERyaXZlcioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW5pdGlhdGlvbiBvZiB0aGUgcDU0dXNiIGRldmljZSBhbmQgaG93IHRoZSBmaXJtd2FyZSBsb2FkaW5nIGdldHMga2lja2VkIG9mZi4gVGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgZGlnZ2luZyBpcyBgcDU0dXNiLmNgLiBJJiMzOTttIHNwZWNpZmljYWxseSBsb29raW5nIGZvciB3aGVyZSBgcDU0dV9zdGFydF9vcHNgIGdldHMgY2FsbGVkLCBvciBtb3JlIGdlbmVyYWxseSwgaG93IHRoZSBmaXJtd2FyZSBpbWFnZSBnZXRzIGxvYWRlZCBpbnRvIHRoZSBkZXZpY2UuIFRoYXQgZnVuY3Rpb24gY2FsbCB3aWxsIGJlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBjb250cm9sIGZsb3cuIEl0IGhhcyB0byBiZSBpbiB0aGlzIGRyaXZlciBzb21ld2hlcmUuIFRpbWUgdG8gZ2V0IHRvIHdvcmsuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIyOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3A1NHVfc3RhcnRfb3BzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9wNTR1c2IuYz04NTQ9c3RhdGljIGludCBwNTRfZmluZF90eXBlKHN0cnVjdCBwNTR1X3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3A1NHVzYi5jLTg2Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9wNTR1c2IuYzo4Njc6c3RhdGljIGludCBwNTR1X3N0YXJ0X29wcyhzdHJ1Y3QgcDU0dV9wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3A1NHVzYi5jLTg2OC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3A1NHVzYi5jPTkxOT1zdGF0aWMgdm9pZCBwNTR1X2xvYWRfZmlybXdhcmVfY2IoY29uc3Qgc3RydWN0IGZpcm13YXJlICpmaXJtd2FyZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvcDU0dXNiLmMtOTI4LVx0XHRwcml2LVx1MDAzZWZ3ID0gZmlybXdhcmU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvcDU0dXNiLmM6OTI5Olx0XHRlcnIgPSBwNTR1X3N0YXJ0X29wcyhwcml2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9wNTR1c2IuYy05MzAtXHR9IGVsc2Uge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAyMjozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDcwMwoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDc0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKkFuYWx5emluZyB0aGUgRmlybXdhcmUgTG9hZGluZyBDYWxsYmFjayoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYHA1NHVfbG9hZF9maXJtd2FyZV9jYmAsIGFuZCBJIGtub3cgcmlnaHQgYXdheSB0aGF0IGl0JiMzOTtzIGFuIGFzeW5jaHJvbm91cyBjYWxsYmFjayBzcGVjaWZpY2FsbHkgZm9yIGhhbmRsaW5nIGZpcm13YXJlIHJlcXVlc3RzLiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBjb250ZXh0IHdpdGhpbiB0aGUgYnJvYWRlciBgcDU0YCBVU0IgZHJpdmVyLiBUbyBkbyB0aGF0IGVmZmVjdGl2ZWx5LCBJJiMzOTttIGdvaW5nIHRvIGRpdmUgaW50byB0aGUgc291cmNlIGNvZGUsIHNwZWNpZmljYWxseSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3A1NHVzYi5jYC4gSSYjMzk7bGwgd2FudCB0byBmb2N1cyBvbiB0aGUgYXJlYSBhcm91bmQgYHA1NHVfcHJvYmVgLCBhcyB0aGF0JiMzOTtzIHdoZXJlIHRoZSBkZXZpY2UgaW5pdGlhbGl6YXRpb24gdHlwaWNhbGx5IGhhcHBlbnMsIGFuZCB0aGVuIHRyYWNlIHRoZSBmbG93IGludG8gYHA1NHVfbG9hZF9maXJtd2FyZV9jYmAuIEJ5IHVuZGVyc3RhbmRpbmcgaG93IHRoZSBwcm9iZSBmdW5jdGlvbiBpbnRlcmZhY2VzIHdpdGggdGhlIGZpcm13YXJlIGxvYWRpbmcgY2FsbGJhY2ssIEkgY2FuIG1vcmUgY2xlYXJseSB1bmRlcnN0YW5kIGhvdyB0aGUgZmlybXdhcmUgaXMgbG9hZGVkIGFuZCBoYW5kbGVkIGJ5IHRoZSBkcml2ZXIuIFRoaXMgYXBwcm9hY2ggd2lsbCBnaXZlIG1lIGEgc29saWQgZ3Jhc3Agb2YgdGhlIG92ZXJhbGwgZmlybXdhcmUgbG9hZGluZyBzZXF1ZW5jZSB3aXRoaW4gdGhpcyB3aXJlbGVzcyBkcml2ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIyOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3A1NHVzYi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogOTEwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDkwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA5MTA6XHRcbiA5MTE6XHRlcnJfb3V0OlxuIDkxMjpcdFx0LypcbiA5MTM6XHRcdCAqIHA1NHVfZGlzY29ubmVjdCB3aWxsIGRvIHRoZSByZXN0IG9mIHRoZVxuIDkxNDpcdFx0ICogY2xlYW51cFxuIDkxNTpcdFx0ICovXG4gOTE2Olx0XHRyZXR1cm4gcmV0O1xuIDkxNzpcdH1cbiA5MTg6XHRcbiA5MTk6XHRzdGF0aWMgdm9pZCBwNTR1X2xvYWRfZmlybXdhcmVfY2IoY29uc3Qgc3RydWN0IGZpcm13YXJlICpmaXJtd2FyZSxcbiA5MjA6XHRcdFx0XHRcdCAgdm9pZCAqY29udGV4dClcbiA5MjE6XHR7XG4gOTIyOlx0XHRzdHJ1Y3QgcDU0dV9wcml2ICpwcml2ID0gY29udGV4dDtcbiA5MjM6XHRcdHN0cnVjdCB1c2JfZGV2aWNlICp1ZGV2ID0gcHJpdi1cdTAwM2V1ZGV2O1xuIDkyNDpcdFx0c3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYgPSBwcml2LVx1MDAzZWludGY7XG4gOTI1Olx0XHRpbnQgZXJyO1xuIDkyNjpcdFxuIDkyNzpcdFx0aWYgKGZpcm13YXJlKSB7XG4gOTI4Olx0XHRcdHByaXYtXHUwMDNlZncgPSBmaXJtd2FyZTtcbiA5Mjk6XHRcdFx0ZXJyID0gcDU0dV9zdGFydF9vcHMocHJpdik7XG4gOTMwOlx0XHR9IGVsc2Uge1xuIDkzMTpcdFx0XHRlcnIgPSAtRU5PRU5UO1xuIDkzMjpcdFx0XHRkZXZfZXJyKFx1MDAyNnVkZXYtXHUwMDNlZGV2LCBcJiMzNDtGaXJtd2FyZSBub3QgZm91bmQuXFxuXCYjMzQ7KTtcbiA5MzM6XHRcdH1cbiA5MzQ6XHRcbiA5MzU6XHRcdGNvbXBsZXRlKFx1MDAyNnByaXYtXHUwMDNlZndfd2FpdF9sb2FkKTtcbiA5MzY6XHRcdC8qXG4gOTM3Olx0XHQgKiBBdCB0aGlzIHBvaW50IHA1NHVfZGlzY29ubmVjdCBtYXkgaGF2ZSBhbHJlYWR5IGZyZWVkXG4gOTM4Olx0XHQgKiB0aGUgXCYjMzQ7cHJpdlwmIzM0OyBjb250ZXh0LiBEbyBub3QgdXNlIGl0IGFueW1vcmUhXG4gOTM5Olx0XHQgKi9cbiA5NDA6XHRcdHByaXYgPSBOVUxMO1xuIDk0MTpcdFxuIDk0MjpcdFx0aWYgKGVycikge1xuIDk0MzpcdFx0XHRkZXZfZXJyKFx1MDAyNmludGYtXHUwMDNlZGV2LCBcJiMzNDtmYWlsZWQgdG8gaW5pdGlhbGl6ZSBkZXZpY2UgKCVkKVxcblwmIzM0OywgZXJyKTtcbiA5NDQ6XHRcbiA5NDU6XHRcdFx0dXNiX2xvY2tfZGV2aWNlKHVkZXYpO1xuIDk0NjpcdFx0XHR1c2JfZHJpdmVyX3JlbGVhc2VfaW50ZXJmYWNlKFx1MDAyNnA1NHVfZHJpdmVyLCBpbnRmKTtcbiA5NDc6XHRcdFx0dXNiX3VubG9ja19kZXZpY2UodWRldik7XG4gOTQ4Olx0XHR9XG4gOTQ5Olx0XG4gOTUwOlx0XHR1c2JfcHV0X2ludGYoaW50Zik7XG4gOTUxOlx0fVxuIDk1MjpcdFxuIDk1MzpcdHN0YXRpYyBpbnQgcDU0dV9sb2FkX2Zpcm13YXJlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmRldixcbiA5NTQ6XHRcdFx0XHQgICAgICBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcbiA5NTU6XHR7XG4gOTU2Olx0XHRzdHJ1Y3QgdXNiX2RldmljZSAqdWRldiA9IGludGVyZmFjZV90b191c2JkZXYoaW50Zik7XG4gOTU3Olx0XHRzdHJ1Y3QgcDU0dV9wcml2ICpwcml2ID0gZGV2LVx1MDAzZXByaXY7XG4gOTU4Olx0XHRzdHJ1Y3QgZGV2aWNlICpkZXZpY2UgPSBcdTAwMjZ1ZGV2LVx1MDAzZWRldjtcbiA5NTk6XHRcdGludCBlcnIsIGk7XG4gOTYwOlx0XG4gOTYxOlx0XHRCVUlMRF9CVUdfT04oQVJSQVlfU0laRShwNTR1X2Z3bGlzdCkgIT0gX19OVU1fUDU0VV9IV1RZUEVTKTtcbiA5NjI6XHRcbiA5NjM6XHRcdGluaXRfY29tcGxldGlvbihcdTAwMjZwcml2LVx1MDAzZWZ3X3dhaXRfbG9hZCk7XG4gOTY0Olx0XHRpID0gcDU0X2ZpbmRfdHlwZShwcml2KTtcbiA5NjU6XHRcdGlmIChpIFx1MDAzYyAwKVxuIDk2NjpcdFx0XHRyZXR1cm4gaTtcbiA5Njc6XHRcbiA5Njg6XHRcdGRldl9pbmZvKFx1MDAyNnByaXYtXHUwMDNldWRldi1cdTAwM2VkZXYsIFwmIzM0O0xvYWRpbmcgZmlybXdhcmUgZmlsZSAlc1xcblwmIzM0OyxcbiA5Njk6XHRcdCAgICAgICBwNTR1X2Z3bGlzdFtpXS5mdyk7XG4gOTcwOlx0XG4gOTcxOlx0XHR1c2JfZ2V0X2ludGYoaW50Zik7XG4gOTcyOlx0XHRlcnIgPSByZXF1ZXN0X2Zpcm13YXJlX25vd2FpdChUSElTX01PRFVMRSwgMSwgcDU0dV9md2xpc3RbaV0uZncsXG4gOTczOlx0XHRcdFx0XHQgICAgICBkZXZpY2UsIEdGUF9LRVJORUwsIHByaXYsXG4gOTc0Olx0XHRcdFx0XHQgICAgICBwNTR1X2xvYWRfZmlybXdhcmVfY2IpO1xuIDk3NTpcdFx0aWYgKGVycikge1xuIDk3NjpcdFx0XHRkZXZfZXJyKFx1MDAyNnByaXYtXHUwMDNldWRldi1cdTAwM2VkZXYsIFwmIzM0OyhwNTR1c2IpIGNhbm5vdCBsb2FkIGZpcm13YXJlICVzIFwmIzM0O1xuIDk3NzpcdFx0XHRcdFx0XHQgIFwmIzM0OyglZCkhXFxuXCYjMzQ7LCBwNTR1X2Z3bGlzdFtpXS5mdywgZXJyKTtcbiA5Nzg6XHRcdFx0dXNiX3B1dF9pbnRmKGludGYpO1xuIDk3OTpcdFx0fVxuIDk4MDpcdFxuIDk4MTpcdFx0cmV0dXJuIGVycjtcbiA5ODI6XHR9XG4gOTgzOlx0XG4gOTg0Olx0c3RhdGljIGludCBwNTR1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxuIDk4NTpcdFx0XHRcdFx0Y29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKVxuIDk4NjpcdHtcbiA5ODc6XHRcdHN0cnVjdCB1c2JfZGV2aWNlICp1ZGV2ID0gaW50ZXJmYWNlX3RvX3VzYmRldihpbnRmKTtcbiA5ODg6XHRcdHN0cnVjdCBpZWVlODAyMTFfaHcgKmRldjtcbiA5ODk6XHRcdHN0cnVjdCBwNTR1X3ByaXYgKnByaXY7XG4gOTkwOlx0XHRpbnQgZXJyO1xuIDk5MTpcdFx0dW5zaWduZWQgaW50IGksIHJlY29nbml6ZWRfcGlwZXM7XG4gOTkyOlx0XG4gOTkzOlx0XHRkZXYgPSBwNTRfaW5pdF9jb21tb24oc2l6ZW9mKCpwcml2KSk7XG4gOTk0Olx0XG4gOTk1Olx0XHRpZiAoIWRldikge1xuIDk5NjpcdFx0XHRkZXZfZXJyKFx1MDAyNnVkZXYtXHUwMDNlZGV2LCBcJiMzNDsocDU0dXNiKSBpZWVlODAyMTEgYWxsb2MgZmFpbGVkXFxuXCYjMzQ7KTtcbiA5OTc6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4gOTk4Olx0XHR9XG4gOTk5Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIyOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyMzY4CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogNTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGBmd2lvLmNgIGluIHRoZSBJbnRlcnNpbCBQNTQgV2lyZWxlc3MgRHJpdmVyKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jYCBmaWxlLiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHdoYXQmIzM5O3MgY2hhbmdlZCBhbmQgaG93IGl0IGltcGFjdHMgdGhlIG92ZXJhbGwgZHJpdmVyIGZ1bmN0aW9uYWxpdHkuIFNwZWNpZmljYWxseSwgSSYjMzk7bSBnb2luZyB0byBzdGFydCBieSByZXZpZXdpbmcgbGluZXMgMSB0aHJvdWdoIDEyMC4gVGhpcyBzZWN0aW9uIGlzIGxpa2VseSB0aGUgaW5pdGlhbGl6YXRpb24gYW5kIHNldHVwLCBvciBwZXJoYXBzIHNvbWUga2V5IGZ1bmN0aW9uIGRlZmluaXRpb25zIHJlbGF0ZWQgdG8gZmlybXdhcmUgaW50ZXJhY3Rpb24g4oCTIHRoYXQmIzM5O3MgbXkgaHVuY2gsIGdpdmVuIHRoZSAmIzM0O2Z3aW8mIzM0OyBpbiB0aGUgZmlsZW5hbWUuIFVuZGVyc3RhbmRpbmcgdGhlIGluaXRpYWwgY29udGV4dCBpcyBjcml0aWNhbCBiZWZvcmUgZGlnZ2luZyBkZWVwZXIgaW50byBhbnkgc3BlY2lmaWMgbW9kaWZpY2F0aW9ucy4gTGV0JiMzOTtzIHNlZSB3aGF0IGdlbXMgYXJlIGhpZGRlbiBpbiB0aGlzIGluaXRpYWwgc2VjdGlvbi4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgZGF0YSBzdHJ1Y3R1cmVzLCBmdW5jdGlvbiBwcm90b3R5cGVzLCBtYWNybyBkZWZpbml0aW9ucywgYW5kIGFueSBnbG9iYWwgdmFyaWFibGVzIHRoYXQgc2VlbSBpbXBvcnRhbnQgZm9yIGZpcm13YXJlIGNvbW11bmljYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIyOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0LypcbiAgIDM6XHQgKiBGaXJtd2FyZSBJL08gY29kZSBmb3IgbWFjODAyMTEgUHJpc201NCBkcml2ZXJzXG4gICA0Olx0ICpcbiAgIDU6XHQgKiBDb3B5cmlnaHQgKGMpIDIwMDYsIE1pY2hhZWwgV3UgXHUwMDNjZmxhbWluZ2ljZUBzb3VybWlsay5uZXRcdTAwM2VcbiAgIDY6XHQgKiBDb3B5cmlnaHQgKGMpIDIwMDctMjAwOSwgQ2hyaXN0aWFuIExhbXBhcnRlciBcdTAwM2NjaHVua2VleUB3ZWIuZGVcdTAwM2VcbiAgIDc6XHQgKiBDb3B5cmlnaHQgMjAwOCwgSm9oYW5uZXMgQmVyZyBcdTAwM2Nqb2hhbm5lc0BzaXBzb2x1dGlvbnMubmV0XHUwMDNlXG4gICA4Olx0ICpcbiAgIDk6XHQgKiBCYXNlZCBvbjpcbiAgMTA6XHQgKiAtIHRoZSBpc2xzbSAoc29mdG1hYyBwcmlzbTU0KSBkcml2ZXIsIHdoaWNoIGlzOlxuICAxMTpcdCAqICAgQ29weXJpZ2h0IDIwMDQtMjAwNiBKZWFuLUJhcHRpc3RlIE5vdGUgXHUwMDNjamJub3RlQGdtYWlsLmNvbVx1MDAzZSwgZXQgYWwuXG4gIDEyOlx0ICogLSBzdGxjNDV4eCBkcml2ZXJcbiAgMTM6XHQgKiAgIENvcHlyaWdodCAoQykgMjAwOCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuXG4gIDE0Olx0ICovXG4gIDE1Olx0XG4gIDE2Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvc2xhYi5oXHUwMDNlXG4gIDE3Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvZmlybXdhcmUuaFx1MDAzZVxuICAxODpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L2V0aGVyZGV2aWNlLmhcdTAwM2VcbiAgMTk6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9leHBvcnQuaFx1MDAzZVxuICAyMDpcdFxuICAyMTpcdCNpbmNsdWRlIFx1MDAzY25ldC9tYWM4MDIxMS5oXHUwMDNlXG4gIDIyOlx0XG4gIDIzOlx0I2luY2x1ZGUgXCYjMzQ7cDU0LmhcJiMzNDtcbiAgMjQ6XHQjaW5jbHVkZSBcJiMzNDtlZXByb20uaFwmIzM0O1xuICAyNTpcdCNpbmNsdWRlIFwmIzM0O2xtYWMuaFwmIzM0O1xuICAyNjpcdFxuICAyNzpcdGludCBwNTRfcGFyc2VfZmlybXdhcmUoc3RydWN0IGllZWU4MDIxMV9odyAqZGV2LCBjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3KVxuICAyODpcdHtcbiAgMjk6XHRcdHN0cnVjdCBwNTRfY29tbW9uICpwcml2ID0gZGV2LVx1MDAzZXByaXY7XG4gIDMwOlx0XHRzdHJ1Y3QgZXhwX2lmICpleHBfaWY7XG4gIDMxOlx0XHRzdHJ1Y3QgYm9vdHJlYyAqYm9vdHJlYztcbiAgMzI6XHRcdHUzMiAqZGF0YSA9ICh1MzIgKilmdy1cdTAwM2VkYXRhO1xuICAzMzpcdFx0dTMyICplbmRfZGF0YSA9ICh1MzIgKilmdy1cdTAwM2VkYXRhICYjNDM7IChmdy1cdTAwM2VzaXplIFx1MDAzZVx1MDAzZSAyKTtcbiAgMzQ6XHRcdHU4ICpmd192ZXJzaW9uID0gTlVMTDtcbiAgMzU6XHRcdHNpemVfdCBsZW47XG4gIDM2Olx0XHRpbnQgaTtcbiAgMzc6XHRcdGludCBtYXhsZW47XG4gIDM4Olx0XG4gIDM5Olx0XHRpZiAocHJpdi1cdTAwM2VyeF9zdGFydClcbiAgNDA6XHRcdFx0cmV0dXJuIDA7XG4gIDQxOlx0XG4gIDQyOlx0XHR3aGlsZSAoZGF0YSBcdTAwM2MgZW5kX2RhdGEgXHUwMDI2XHUwMDI2ICpkYXRhKVxuICA0MzpcdFx0XHRkYXRhJiM0MzsmIzQzOztcbiAgNDQ6XHRcbiAgNDU6XHRcdHdoaWxlIChkYXRhIFx1MDAzYyBlbmRfZGF0YSBcdTAwMjZcdTAwMjYgISpkYXRhKVxuICA0NjpcdFx0XHRkYXRhJiM0MzsmIzQzOztcbiAgNDc6XHRcbiAgNDg6XHRcdGJvb3RyZWMgPSAoc3RydWN0IGJvb3RyZWMgKikgZGF0YTtcbiAgNDk6XHRcbiAgNTA6XHRcdHdoaWxlIChib290cmVjLVx1MDAzZWRhdGEgXHUwMDNjPSBlbmRfZGF0YSBcdTAwMjZcdTAwMjYgKGJvb3RyZWMtXHUwMDNlZGF0YSAmIzQzO1xuICA1MTpcdFx0ICAgICAgIChsZW4gPSBsZTMyX3RvX2NwdShib290cmVjLVx1MDAzZWxlbikpKSBcdTAwM2M9IGVuZF9kYXRhKSB7XG4gIDUyOlx0XHRcdHUzMiBjb2RlID0gbGUzMl90b19jcHUoYm9vdHJlYy1cdTAwM2Vjb2RlKTtcbiAgNTM6XHRcdFx0c3dpdGNoIChjb2RlKSB7XG4gIDU0Olx0XHRcdGNhc2UgQlJfQ09ERV9DT01QT05FTlRfSUQ6XG4gIDU1Olx0XHRcdFx0cHJpdi1cdTAwM2Vmd19pbnRlcmZhY2UgPSBiZTMyX3RvX2NwdXAoKF9fYmUzMiAqKVxuICA1NjpcdFx0XHRcdFx0XHQgICAgIGJvb3RyZWMtXHUwMDNlZGF0YSk7XG4gIDU3Olx0XHRcdFx0c3dpdGNoIChwcml2LVx1MDAzZWZ3X2ludGVyZmFjZSkge1xuICA1ODpcdFx0XHRcdGNhc2UgRldfTE04NjpcbiAgNTk6XHRcdFx0XHRjYXNlIEZXX0xNMjA6XG4gIDYwOlx0XHRcdFx0Y2FzZSBGV19MTTg3OiB7XG4gIDYxOlx0XHRcdFx0XHRjaGFyICppZnR5cGUgPSAoY2hhciAqKWJvb3RyZWMtXHUwMDNlZGF0YTtcbiAgNjI6XHRcdFx0XHRcdHdpcGh5X2luZm8ocHJpdi1cdTAwM2Vody1cdTAwM2V3aXBoeSxcbiAgNjM6XHRcdFx0XHRcdFx0ICAgXCYjMzQ7cDU0IGRldGVjdGVkIGEgTE0lYyVjIGZpcm13YXJlXFxuXCYjMzQ7LFxuICA2NDpcdFx0XHRcdFx0XHQgICBpZnR5cGVbMl0sIGlmdHlwZVszXSk7XG4gIDY1Olx0XHRcdFx0XHRicmVhaztcbiAgNjY6XHRcdFx0XHRcdH1cbiAgNjc6XHRcdFx0XHRjYXNlIEZXX0ZNQUM6XG4gIDY4Olx0XHRcdFx0ZGVmYXVsdDpcbiAgNjk6XHRcdFx0XHRcdHdpcGh5X2Vycihwcml2LVx1MDAzZWh3LVx1MDAzZXdpcGh5LFxuICA3MDpcdFx0XHRcdFx0XHQgIFwmIzM0O3Vuc3VwcG9ydGVkIGZpcm13YXJlXFxuXCYjMzQ7KTtcbiAgNzE6XHRcdFx0XHRcdHJldHVybiAtRU5PREVWO1xuICA3MjpcdFx0XHRcdH1cbiAgNzM6XHRcdFx0XHRicmVhaztcbiAgNzQ6XHRcdFx0Y2FzZSBCUl9DT0RFX0NPTVBPTkVOVF9WRVJTSU9OOlxuICA3NTpcdFx0XHRcdC8qIDI0IGJ5dGVzIHNob3VsZCBiZSBlbm91Z2ggZm9yIGFsbCBmaXJtd2FyZXMgKi9cbiAgNzY6XHRcdFx0XHRpZiAoc3RybmxlbigodW5zaWduZWQgY2hhciAqKSBib290cmVjLVx1MDAzZWRhdGEsIDI0KSBcdTAwM2MgMjQpXG4gIDc3Olx0XHRcdFx0XHRmd192ZXJzaW9uID0gKHVuc2lnbmVkIGNoYXIgKikgYm9vdHJlYy1cdTAwM2VkYXRhO1xuICA3ODpcdFx0XHRcdGJyZWFrO1xuICA3OTpcdFx0XHRjYXNlIEJSX0NPREVfREVTQ1I6IHtcbiAgODA6XHRcdFx0XHRzdHJ1Y3QgYm9vdHJlY19kZXNjICpkZXNjID1cbiAgODE6XHRcdFx0XHRcdChzdHJ1Y3QgYm9vdHJlY19kZXNjICopYm9vdHJlYy1cdTAwM2VkYXRhO1xuICA4MjpcdFx0XHRcdHUzMiByeF9zdGFydCwgcnhfZW5kO1xuICA4MzpcdFxuICA4NDpcdFx0XHRcdGlmIChsZW4gXHUwMDNjIERJVl9ST1VORF9VUChvZmZzZXRvZmVuZChzdHJ1Y3QgYm9vdHJlY19kZXNjLFxuICA4NTpcdFx0XHRcdFx0XHRcdFx0ICAgcnhfa2V5Y2FjaGVfc2l6ZSksXG4gIDg2Olx0XHRcdFx0XHRcdFx0ICAgICAgIHNpemVvZigqYm9vdHJlYy1cdTAwM2VkYXRhKSkpIHtcbiAgODc6XHRcdFx0XHRcdHdpcGh5X2Vycihwcml2LVx1MDAzZWh3LVx1MDAzZXdpcGh5LFxuICA4ODpcdFx0XHRcdFx0XHQgIFwmIzM0O2Zpcm13YXJlIGRlc2NyaXB0b3IgaXMgdG9vIHNob3J0XFxuXCYjMzQ7KTtcbiAgODk6XHRcdFx0XHRcdHJldHVybiAtRUlOVkFMO1xuICA5MDpcdFx0XHRcdH1cbiAgOTE6XHRcbiAgOTI6XHRcdFx0XHRyeF9zdGFydCA9IGxlMzJfdG9fY3B1KGRlc2MtXHUwMDNlcnhfc3RhcnQpO1xuICA5MzpcdFx0XHRcdHJ4X2VuZCA9IGxlMzJfdG9fY3B1KGRlc2MtXHUwMDNlcnhfZW5kKTtcbiAgOTQ6XHRcdFx0XHRpZiAocnhfZW5kIFx1MDAzYyAweDM1MDAgfHwgcnhfZW5kIC0gMHgzNTAwIFx1MDAzYz0gcnhfc3RhcnQpIHtcbiAgOTU6XHRcdFx0XHRcdHdpcGh5X2Vycihwcml2LVx1MDAzZWh3LVx1MDAzZXdpcGh5LFxuICA5NjpcdFx0XHRcdFx0XHQgIFwmIzM0O2Zpcm13YXJlIGRlc2NyaXB0b3IgaGFzIGludmFsaWQgUlggcmFuZ2VcXG5cJiMzNDspO1xuICA5NzpcdFx0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gIDk4Olx0XHRcdFx0fVxuICA5OTpcdFxuIDEwMDpcdFx0XHRcdHByaXYtXHUwMDNlcnhfc3RhcnQgPSByeF9zdGFydDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjI6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQxODAKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA5OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipFeGFtaW5pbmcgdGhlIHA1NCBEcml2ZXImIzM5O3MgQ29uZmlndXJhdGlvbiBPcHRpb25zKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBpbnRvIHRoZSBgcDU0YCBkcml2ZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBVU0Igc3VwcG9ydCwgYW5kIHRoYXQmIzM5O3MgdGllZCB0byBgQ09ORklHX1A1NF9VU0JgLiBSaWdodCwgbWFrZXMgc2Vuc2UuIEJ1dCBJIGtub3cgYmV0dGVyIHRoYW4gdG8ganVzdCBsb29rIGF0IG9uZSBvcHRpb24gaW4gaXNvbGF0aW9uLiBJIG5lZWQgdG8gdHJhY2UgdGhlIGRlcGVuZGVuY2llcy4gVGhpcyBtZWFucyBJIG5lZWQgdG8gZGlnIGludG8gdGhlIEtjb25maWcgZmlsZXMgZm9yIGBDT05GSUdfUDU0X0NPTU1PTmAsIGBDT05GSUdfUDU0X1VTQmAsIGBDT05GSUdfUDU0X1BDSWAsIGFuZCBgQ09ORklHX1A1NF9TUElgIHRvIGZ1bGx5IGdyYXNwIHRoZSByZXF1aXJlbWVudHMgYW5kIHBvdGVudGlhbCBjb25mbGljdHMuIFRpbWUgdG8gc2VlIHdoYXQgY29uZGl0aW9ucyBuZWVkIHRvIGJlIG1ldCBmb3IgdGhlc2UgdG8gYmUgZW5hYmxlZCBjb3JyZWN0bHkuIFRoaXMgaXMgd2hlcmUgdGhlIGRldmlsIGlzIGluIHRoZSBkZXRhaWxzLiBJIGhhdmUgdG8gbWFrZSBzdXJlIGV2ZXJ5dGhpbmcgaXMgcHJvcGVybHkgc2V0LiBUaGlzIGlzIG5vdCB0aGUgd2hvbGUgcGljdHVyZSwgYnV0IGl0JiMzOTtzIGEgc3RhcnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIyOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBQNTQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9LY29uZmlnOjI6Y29uZmlnIFA1NF9DT01NT05cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtTb2Z0bWFjIFByaXNtNTQgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9LY29uZmlnLTE2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L0tjb25maWc6MTc6Y29uZmlnIFA1NF9VU0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9LY29uZmlnLTE4LVx0dHJpc3RhdGUgXCYjMzQ7UHJpc201NCBVU0Igc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9LY29uZmlnLTI4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L0tjb25maWc6Mjk6Y29uZmlnIFA1NF9QQ0lcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9LY29uZmlnLTMwLVx0dHJpc3RhdGUgXCYjMzQ7UHJpc201NCBQQ0kgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9LY29uZmlnLTQyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L0tjb25maWc6NDM6Y29uZmlnIFA1NF9TUElcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9LY29uZmlnLTQ0LVx0dHJpc3RhdGUgXCYjMzQ7UHJpc201NCBTUEkgKHN0bGM0NXh4KSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L0tjb25maWctNTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvS2NvbmZpZzo1Mjpjb25maWcgUDU0X1NQSV9ERUZBVUxUX0VFUFJPTVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L0tjb25maWctNTMtXHRib29sIFwmIzM0O0luY2x1ZGUgZmFsbGJhY2sgRUVQUk9NIGJsb2JcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvS2NvbmZpZy02OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9LY29uZmlnOjY5OmNvbmZpZyBQNTRfTEVEU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L0tjb25maWctNzAtXHRib29sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIyOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1MDAzCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgcmVhZGluZyB0aGUgS2NvbmZpZywgYXNzdW1pbmcgSSYjMzk7bSB3ZWxsLXZlcnNlZCBpbiBrZXJuZWwgY29uZmlndXJhdGlvbjoKCioqRGl2aW5nIGludG8gdGhlIFA1NCBLY29uZmlnKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcyBhbmQgZGlzc2VjdCB0aGUgS2NvbmZpZyBmaWxlIGZvciB0aGUgSW50ZXJzaWwgcDU0IHdpcmVsZXNzIGRyaXZlciwgc3BlY2lmaWNhbGx5IHVuZGVyIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvS2NvbmZpZ2AuIFRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgY29uZmlndXJhdGlvbiBkZWNpc2lvbnMgZm9yIHRoaXMgZHJpdmVyIGFyZSBtYWRlLCBhbmQgdW5kZXJzdGFuZGluZyBpdCBpcyBjcnVjaWFsIGZvciBwcm9wZXIgaW50ZWdyYXRpb24uIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHNldmVyYWwgdGhpbmdzOiB0aGUgb3ZlcmFsbCBzdHJ1Y3R1cmUsIGFueSBkZXBlbmRlbmNpZXMgb24gb3RoZXIga2VybmVsIHN1YnN5c3RlbXMsIHdoYXQgZmVhdHVyZXMgYXJlIGV4cG9zZWQgZm9yIHRoZSB1c2VyLCBhbmQgYW55IHBvdGVudGlhbCBjYXZlYXRzIG9yIHdhcm5pbmdzLiBJIGV4cGVjdCB0byBzZWUgdGhlIHVzdWFsIHN1c3BlY3RzOiBtb2R1bGUgdnMuIGJ1aWx0LWluIG9wdGlvbnMsIGhhcmR3YXJlIHZhcmlhbnRzLCBwb3dlciBtYW5hZ2VtZW50IGNvbnNpZGVyYXRpb25zLCBwZXJoYXBzIGV2ZW4gZGVidWdnaW5nIGZsYWdzLiBJJiMzOTtsbCBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBkZWZhdWx0cywgYXMgdGhlc2UgYXJlIHdoYXQgdGhlIHN5c3RlbSB3aWxsIHRyeSB0byB1c2UgaWYgdGhlIHVzZXIgZG9lc24mIzM5O3Qgc3BlY2lmeSBvdGhlcndpc2UuIEEgd2VsbC13cml0dGVuIEtjb25maWcgd2lsbCBoYXZlIGNsZWFyIGhlbHAgdGV4dCB0byBndWlkZSB0aGUgdXNlciBhbmQgZXhwbGFpbiB0aGUgaW1wbGljYXRpb25zIG9mIGVhY2ggb3B0aW9uLiBMZXQmIzM5O3Mgc2VlIGlmIHRoaXMgb25lIGhvbGRzIHVwIHRvIG15IGV4cGVjdGF0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjI6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogODAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBQNTRfQ09NTU9OXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtTb2Z0bWFjIFByaXNtNTQgc3VwcG9ydFwmIzM0O1xuICAgNDpcdFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxuICAgNTpcdFx0c2VsZWN0IEZXX0xPQURFUlxuICAgNjpcdFx0c2VsZWN0IENSQ19DQ0lUVFxuICAgNzpcdFx0aGVscFxuICAgODpcdFx0ICBUaGlzIGlzIGNvbW1vbiBjb2RlIGZvciBpc2wzOHh4L3N0bGM0NXh4IGJhc2VkIG1vZHVsZXMuXG4gICA5Olx0XHQgIFRoaXMgbW9kdWxlIGRvZXMgbm90aGluZyBieSBpdHNlbGYgLSB0aGUgVVNCL1BDSS9TUEkgZnJvbnQtZW5kc1xuICAxMDpcdFx0ICBhbHNvIG5lZWQgdG8gYmUgZW5hYmxlZCBpbiBvcmRlciB0byBzdXBwb3J0IGFueSBkZXZpY2VzLlxuICAxMTpcdFxuICAxMjpcdFx0ICBUaGVzZSBkZXZpY2VzIHJlcXVpcmUgc29mdG1hYyBmaXJtd2FyZSB3aGljaCBjYW4gYmUgZm91bmQgYXRcbiAgMTM6XHRcdCAgXHUwMDNjaHR0cHM6Ly93aXJlbGVzcy5kb2NzLmtlcm5lbC5vcmcvZW4vbGF0ZXN0L2VuL3VzZXJzL2RyaXZlcnMvcDU0Lmh0bWxcdTAwM2VcbiAgMTQ6XHRcbiAgMTU6XHRcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBhIG1vZHVsZSwgaXQmIzM5O2xsIGJlIGNhbGxlZCBwNTRjb21tb24uXG4gIDE2Olx0XG4gIDE3Olx0Y29uZmlnIFA1NF9VU0JcbiAgMTg6XHRcdHRyaXN0YXRlIFwmIzM0O1ByaXNtNTQgVVNCIHN1cHBvcnRcJiMzNDtcbiAgMTk6XHRcdGRlcGVuZHMgb24gUDU0X0NPTU1PTiBcdTAwMjZcdTAwMjYgVVNCXG4gIDIwOlx0XHRzZWxlY3QgQ1JDMzJcbiAgMjE6XHRcdGhlbHBcbiAgMjI6XHRcdCAgVGhpcyBkcml2ZXIgaXMgZm9yIFVTQiBpc2wzOHh4IGJhc2VkIHdpcmVsZXNzIGNhcmRzLlxuICAyMzpcdFxuICAyNDpcdFx0ICBUaGVzZSBkZXZpY2VzIHJlcXVpcmUgc29mdG1hYyBmaXJtd2FyZSB3aGljaCBjYW4gYmUgZm91bmQgYXRcbiAgMjU6XHRcdCAgXHUwMDNjaHR0cHM6Ly93aXJlbGVzcy5kb2NzLmtlcm5lbC5vcmcvZW4vbGF0ZXN0L2VuL3VzZXJzL2RyaXZlcnMvcDU0Lmh0bWxcdTAwM2VcbiAgMjY6XHRcbiAgMjc6XHRcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBhIG1vZHVsZSwgaXQmIzM5O2xsIGJlIGNhbGxlZCBwNTR1c2IuXG4gIDI4Olx0XG4gIDI5Olx0Y29uZmlnIFA1NF9QQ0lcbiAgMzA6XHRcdHRyaXN0YXRlIFwmIzM0O1ByaXNtNTQgUENJIHN1cHBvcnRcJiMzNDtcbiAgMzE6XHRcdGRlcGVuZHMgb24gUDU0X0NPTU1PTiBcdTAwMjZcdTAwMjYgUENJXG4gIDMyOlx0XHRoZWxwXG4gIDMzOlx0XHQgIFRoaXMgZHJpdmVyIGlzIGZvciBQQ0kgaXNsMzh4eCBiYXNlZCB3aXJlbGVzcyBjYXJkcy5cbiAgMzQ6XHRcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgbW9zdCBkZXZpY2VzIHRoYXQgYXJlIHN1cHBvcnRlZCBieSB0aGVcbiAgMzU6XHRcdCAgZnVsbG1hYyBwcmlzbTU0IGRyaXZlciBwbHVzIG1hbnkgZGV2aWNlcyB3aGljaCBhcmUgbm90XG4gIDM2Olx0XHQgIHN1cHBvcnRlZCBieSB0aGUgZnVsbG1hYyBkcml2ZXIvZmlybXdhcmUuXG4gIDM3Olx0XG4gIDM4Olx0XHQgIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHNvZnRtYWMgZmlybXdhcmUgd2hpY2ggY2FuIGJlIGZvdW5kIGF0XG4gIDM5Olx0XHQgIFx1MDAzY2h0dHBzOi8vd2lyZWxlc3MuZG9jcy5rZXJuZWwub3JnL2VuL2xhdGVzdC9lbi91c2Vycy9kcml2ZXJzL3A1NC5odG1sXHUwMDNlXG4gIDQwOlx0XG4gIDQxOlx0XHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgYSBtb2R1bGUsIGl0JiMzOTtsbCBiZSBjYWxsZWQgcDU0cGNpLlxuICA0MjpcdFxuICA0MzpcdGNvbmZpZyBQNTRfU1BJXG4gIDQ0Olx0XHR0cmlzdGF0ZSBcJiMzNDtQcmlzbTU0IFNQSSAoc3RsYzQ1eHgpIHN1cHBvcnRcJiMzNDtcbiAgNDU6XHRcdGRlcGVuZHMgb24gUDU0X0NPTU1PTiBcdTAwMjZcdTAwMjYgU1BJX01BU1RFUlxuICA0NjpcdFx0aGVscFxuICA0NzpcdFx0ICBUaGlzIGRyaXZlciBpcyBmb3Igc3RsYzQ1NTAgb3Igc3RsYzQ1NjAgYmFzZWQgd2lyZWxlc3MgY2hpcHNcbiAgNDg6XHRcdCAgc3VjaCBhcyBOb2tpYSYjMzk7cyBOODAwL044MTAgUG9ydGFibGUgSW50ZXJuZXQgVGFibGV0LlxuICA0OTpcdFxuICA1MDpcdFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGEgbW9kdWxlLCBpdCYjMzk7bGwgYmUgY2FsbGVkIHA1NHNwaS5cbiAgNTE6XHRcbiAgNTI6XHRjb25maWcgUDU0X1NQSV9ERUZBVUxUX0VFUFJPTVxuICA1MzpcdFx0Ym9vbCBcJiMzNDtJbmNsdWRlIGZhbGxiYWNrIEVFUFJPTSBibG9iXCYjMzQ7XG4gIDU0Olx0XHRkZXBlbmRzIG9uIFA1NF9TUElcbiAgNTU6XHRcdGRlZmF1bHQgblxuICA1NjpcdFx0aGVscFxuICA1NzpcdFx0IFVubGlrZSB0aGUgUENJIG9yIFVTQiBkZXZpY2VzLCB0aGUgU1BJIHZhcmlhbnRzIGRvbiYjMzk7dCBoYXZlXG4gIDU4Olx0XHQgYSBkZWRpY2F0ZWQgRUVQUk9NIGNoaXAgdG8gc3RvcmUgYWxsIGRldmljZSBzcGVjaWZpYyB2YWx1ZXNcbiAgNTk6XHRcdCBmb3IgY2FsaWJyYXRpb24sIGNvdW50cnkgYW5kIGludGVyZmFjZSBzZXR0aW5ncy5cbiAgNjA6XHRcbiAgNjE6XHRcdCBUaGUgZHJpdmVyIHdpbGwgdHJ5IHRvIGxvYWQgdGhlIGltYWdlIFwmIzM0OzM4MjYuZWVwcm9tXCYjMzQ7LCBpZiB0aGVcbiAgNjI6XHRcdCBmaWxlIGlzIHB1dCBhdCB0aGUgcmlnaHQgcGxhY2UuICh1c3VhbGx5IC9saWIvZmlybXdhcmUuKVxuICA2MzpcdFxuICA2NDpcdFx0IE9ubHkgaWYgdGhpcyByZXF1ZXN0IGZhaWxzLCB0aGlzIG9wdGlvbiB3aWxsIHByb3ZpZGUgYVxuICA2NTpcdFx0IGJhY2t1cCBzZXQgb2YgZ2VuZXJpYyB2YWx1ZXMgdG8gZ2V0IHRoZSBkZXZpY2Ugd29ya2luZy5cbiAgNjY6XHRcbiAgNjc6XHRcdCBFbmFibGluZyB0aGlzIG9wdGlvbiBhZGRzIGFib3V0IDRrIHRvIHA1NHNwaS5cbiAgNjg6XHRcbiAgNjk6XHRjb25maWcgUDU0X0xFRFNcbiAgNzA6XHRcdGJvb2xcbiAgNzE6XHRcdGRlcGVuZHMgb24gUDU0X0NPTU1PTiBcdTAwMjZcdTAwMjYgTUFDODAyMTFfTEVEUyBcdTAwMjZcdTAwMjYgKExFRFNfQ0xBU1MgPSB5IHx8IExFRFNfQ0xBU1MgPSBQNTRfQ09NTU9OKVxuICA3MjpcdFx0ZGVmYXVsdCB5XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIyOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2NDE0CgkJCQkJCQlvdXRwdXQ6IDE0OQoJCQkJCQkJdGhvdWdodHM6IDExMDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBUYXJnZXQgQW5hbHlzaXM6IHA1NCBGaXJtd2FyZSBQYXJzaW5nKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBhbmFseXplIHRoaXMgcGF0Y2ggdGFyZ2V0aW5nIGZpcm13YXJlIHBhcnNpbmcgd2l0aGluIHRoZSBwNTQgd2lyZWxlc3MgZHJpdmVyLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gYHA1NF9wYXJzZV9maXJtd2FyZWAgaW4gYGZ3aW8uY2AuIFRoaXMgZnVuY3Rpb24gaXMgcGl2b3RhbCBhcyBpdCYjMzk7cyB0aGUgY29yZSBvZiBwYXJzaW5nIHRoZSBmaXJtd2FyZSBmb3IgcDU0IGRldmljZXMsIGFuZCBjcnVjaWFsIGZvciBVU0IsIFBDSSwgYW5kIFNQSS4gVGhlIGNvbm5lY3Rpb24gdG8gVVNCIGlzIHBhcnRpY3VsYXJseSBpbnRlcmVzdGluZyBiZWNhdXNlIHdlIGhhdmUgVVNCIFJhdyBHYWRnZXQgYW5kIHN5emthbGxlciBlbXVsYXRpb24gb3B0aW9ucywgb2ZmZXJpbmcgdmlhYmxlIGZ1enppbmcgcGF0aHdheXMuIE1vcmVvdmVyLCB0aGUgZmxleGliaWxpdHkgdG8gbG9hZCBmaXJtd2FyZSBmcm9tIHVzZXJzcGFjZSwgc3lzZnMsIHJvb3Rmcywgb3IgZXZlbiB2aWEgZW11bGF0aW9uIG1lYW5zIGEgd2lkZSBhdHRhY2sgc3VyZmFjZS4KCk5vdywgbGV0JiMzOTtzIGRpdmUgaW50byB0aGUgcGF0Y2gmIzM5O3Mgc3BlY2lmaWNzLiBCZWZvcmUgdGhlIHBhdGNoLCB0aGUgY29kZSB3YXMgYSBiaXQgbGF4LCBjYWxjdWxhdGluZyBgcnhfZW5kYCB3aXRoIGEgaGFyZGNvZGVkIG9mZnNldC4gVGhlIHVwZGF0ZWQgY29kZSBpbnRyb2R1Y2VzIGEgKmNyaXRpY2FsKiBzYW5pdHkgY2hlY2suIEl0IGVuc3VyZXMgdGhlIGZpcm13YXJlIGRlc2NyaXB0b3IgaGFzIGEgc3VmZmljaWVudCBsZW5ndGggYW5kIHJpZ29yb3VzbHkgdmFsaWRhdGVzIHRoZSBgcnhfZW5kYCBhbmQgYHJ4X3N0YXJ0YCB2YWx1ZXMsIHByZXZlbnRpbmcgdGhlIHBvdGVudGlhbCBmb3IgaW50ZWdlciBvdmVyZmxvd3MgYW5kIHJlbGF0ZWQgdnVsbmVyYWJpbGl0aWVzLgoKVGhpcyBkaXJlY3RseSB0cmFuc2xhdGVzIGludG8gZnV6emluZyBwb3RlbnRpYWwhIFRoaXMgaXMgZXhlY3V0YWJsZSBjb2RlIHdpdGhpbiBhIHJlYWNoYWJsZSBkcml2ZXIuIFRoZSBwYXRjaCBtb2RpZmllcyBjcnVjaWFsIGlucHV0IHZhbGlkYXRpb24gYW5kIHNhbml0eSBjaGVja2luZyBsb2dpYyB3aGVuIHBhcnNpbmcgZmlybXdhcmUgZm9yIGBwNTRgLiBUaGVyZWZvcmUsIGl0JiMzOTtzIGRlZmluaXRpdmVseSBXb3J0aEZ1enppbmc9dHJ1ZS4KCk15IHByaW1hcnkgYEZvY3VzU3ltYm9sc2AgYXJlIGNsZWFybHkgYHA1NF9wYXJzZV9maXJtd2FyZWAuIEFsc28sIEkmIzM5O2xsIGxpa2VseSBuZWVkIHRvIGNvbnNpZGVyIHJlbGF0ZWQgZnVuY3Rpb25zIGFzIGVudHJ5IHBvaW50cywgc3VjaCBhcyBgcDU0dV9zdGFydF9vcHNgLCBgcDU0dV9sb2FkX2Zpcm13YXJlX2NiYCwgYW5kIGBwNTR1X3Byb2JlYC4gVGhlc2UgYXJlIGFsbCByZWxhdGVkIHRvIGZpcm13YXJlIGxvYWRpbmcgYW5kIGRldmljZSBpbml0aWFsaXphdGlvbi4KClJlZ2FyZGluZyB0aGUgcmVxdWlyZWQga2VybmVsIGNvbmZpZ3MsIEkgbmVlZCB0byBlbmFibGUgYFA1NF9DT01NT05gLCBgUDU0X1VTQmAsIGBNQUM4MDIxMWAsIGFuZCBgVVNCYC4gVGhlc2UgYXJlIGVzc2VudGlhbCBmb3IgYnVpbGRpbmcgdGhlIHJlbGV2YW50IGRyaXZlcnMgYW5kIHN1cHBvcnRpbmcgVVNCIGVtdWxhdGlvbi4gYFA1NF9DT01NT05gIGlzIHJlcXVpcmVkLCBhbmQgYFA1NF9VU0JgIGluIHR1cm4gZGVwZW5kcyBvbiB0aGVzZS4KCkkmIzM5O3ZlIHJldmlld2VkIGFsbCBpbnN0cnVjdGlvbnMgYW5kIGd1aWRlbGluZXMgYW5kIHZhbGlkYXRlZCB0aGUgYW5hbHlzaXMuIFRoaXMgaXMgYSBzb2xpZCBmdXp6aW5nIHRhcmdldCBiYXNlZCBvbiByZWFjaGFibGUgZHJpdmVyIGNvZGUsIHdpdGggYSBoaWdoIHByb2JhYmlsaXR5IG9mIGZpbmRpbmcgYnVncyBkdWUgdG8gdGhlIGNoYW5nZWQgaW5wdXQgdmFsaWRhdGlvbiBsb2dpYy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjI6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1A1NF9DT01NT04mIzM0OywKICAgICYjMzQ7UDU0X1VTQiYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtwNTRfcGFyc2VfZmlybXdhcmUmIzM0OywKICAgICYjMzQ7cDU0dV9zdGFydF9vcHMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBib3VuZHMgYW5kIHJhbmdlIHZhbGlkYXRpb24gY2hlY2tzIGZvciBmaXJtd2FyZSBkZXNjcmlwdG9ycyBpbiBwNTRfcGFyc2VfZmlybXdhcmUoKS4gVGhpcyBmdW5jdGlvbiBpcyByZWFjaGFibGUgdmlhIHRoZSBwNTR1c2IgZHJpdmVyIHdoaWNoIGNhbiBiZSBmdXp6ZWQgdXNpbmcgVVNCIGVtdWxhdGlvbiAoZS5nLiBSYXcgR2FkZ2V0KS4gRnV6emluZyBpcyB3YXJyYW50ZWQgdG8gdmVyaWZ5IHRoYXQgbWFsZm9ybWVkIGZpcm13YXJlIGltYWdlcyBhbmQgZWRnZSBjYXNlcyBhcmUgaGFuZGxlZCBzYWZlbHkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1A1NF9DT01NT04mIzM0OywKICAgICYjMzQ7UDU0X1VTQiYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtwNTRfcGFyc2VfZmlybXdhcmUmIzM0OywKICAgICYjMzQ7cDU0dV9zdGFydF9vcHMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBib3VuZHMgYW5kIHJhbmdlIHZhbGlkYXRpb24gY2hlY2tzIGZvciBmaXJtd2FyZSBkZXNjcmlwdG9ycyBpbiBwNTRfcGFyc2VfZmlybXdhcmUoKS4gVGhpcyBmdW5jdGlvbiBpcyByZWFjaGFibGUgdmlhIHRoZSBwNTR1c2IgZHJpdmVyIHdoaWNoIGNhbiBiZSBmdXp6ZWQgdXNpbmcgVVNCIGVtdWxhdGlvbiAoZS5nLiBSYXcgR2FkZ2V0KS4gRnV6emluZyBpcyB3YXJyYW50ZWQgdG8gdmVyaWZ5IHRoYXQgbWFsZm9ybWVkIGZpcm13YXJlIGltYWdlcyBhbmQgZWRnZSBjYXNlcyBhcmUgaGFuZGxlZCBzYWZlbHkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIyOjM1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjI6MzU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGlucHV0IHZhbGlkYXRpb24gYW5kIGJvdW5kcyBjaGVja2luZyBmb3IgZmlybXdhcmUgYm9vdCByZWNvcmQgZGVzY3JpcHRvcnMgaW4gcDU0X3BhcnNlX2Zpcm13YXJlKCkuIFNwZWNpZmljYWxseSwgaXQgdmFsaWRhdGVzIHRoYXQgdGhlIGJvb3QgcmVjb3JkIGxlbmd0aCBpcyBzdWZmaWNpZW50IHRvIGNvdmVyIHN0cnVjdCBib290cmVjX2Rlc2MgZmllbGRzIChwcmV2ZW50aW5nIG91dC1vZi1ib3VuZHMgcmVhZHMgb24gdHJ1bmNhdGVkIGZpcm13YXJlIGJ1ZmZlcnMsIGRldGVjdGFibGUgYnkgS0FTQU4pIGFuZCBlbnN1cmVzIHRoYXQgcnhfZW5kIFx1MDAzZT0gMHgzNTAwIGFuZCByeF9lbmQgLSAweDM1MDAgXHUwMDNlIHJ4X3N0YXJ0IHRvIHByZXZlbnQgaW50ZWdlciB1bmRlcmZsb3cgYW5kIGludmFsaWQgYnVmZmVyIHJhbmdlcy5cblxuTm8gdW5pbml0aWFsaXplZCBtZW1vcnkgaXMgYWxsb2NhdGVkLCByZWFkLCBvciBleHBvc2VkLiBMb2NhbCB2YXJpYWJsZXMgKHJ4X3N0YXJ0LCByeF9lbmQpIGFyZSBleHBsaWNpdGx5IGluaXRpYWxpemVkIGZyb20gdGhlIGZpcm13YXJlIGRlc2NyaXB0b3IgYmVmb3JlIGJlaW5nIGNoZWNrZWQgYW5kIHN0b3JlZC4gTm8gZGF0YSBpcyBjb3BpZWQgdG8gdXNlcnNwYWNlIHdpdGhvdXQgaW5pdGlhbGl6YXRpb24uIFRoZXJlZm9yZSwgc3RhbmRhcmQgS0FTQU4gYnVpbGRzIGFyZSBzdWZmaWNpZW50IGFuZCBLTVNBTiBmdXp6aW5nIGlzIG5vdCBuZWVkZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBlNzAzYzAzNDZiY2ZkOWZkNWYxZTQ0ZTkzOTk4ZjFiZWZkYjEzMjYzCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBTZXAgNiAyMjozNTowOSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jCmluZGV4IGEzZDkwNTNmMDQzYzYuLjVkODJlMGE0MzgzNTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYwpAQCAtNzksOSAmIzQzOzc5LDI2IEBAIGludCBwNTRfcGFyc2VfZmlybXdhcmUoc3RydWN0IGllZWU4MDIxMV9odyAqZGV2LCBjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3KQogCQljYXNlIEJSX0NPREVfREVTQ1I6IHsKIAkJCXN0cnVjdCBib290cmVjX2Rlc2MgKmRlc2MgPQogCQkJCShzdHJ1Y3QgYm9vdHJlY19kZXNjICopYm9vdHJlYy0mZ3Q7ZGF0YTsKLQkJCXByaXYtJmd0O3J4X3N0YXJ0ID0gbGUzMl90b19jcHUoZGVzYy0mZ3Q7cnhfc3RhcnQpOwotCQkJLyogRklYTUUgYWRkIHNhbml0eSBjaGVja2luZyAqLwotCQkJcHJpdi0mZ3Q7cnhfZW5kID0gbGUzMl90b19jcHUoZGVzYy0mZ3Q7cnhfZW5kKSAtIDB4MzUwMDsKJiM0MzsJCQl1MzIgcnhfc3RhcnQsIHJ4X2VuZDsKJiM0MzsKJiM0MzsJCQlpZiAobGVuICZsdDsgRElWX1JPVU5EX1VQKG9mZnNldG9mZW5kKHN0cnVjdCBib290cmVjX2Rlc2MsCiYjNDM7CQkJCQkJCSAgIHJ4X2tleWNhY2hlX3NpemUpLAomIzQzOwkJCQkJCSAgICAgICBzaXplb2YoKmJvb3RyZWMtJmd0O2RhdGEpKSkgewomIzQzOwkJCQl3aXBoeV9lcnIocHJpdi0mZ3Q7aHctJmd0O3dpcGh5LAomIzQzOwkJCQkJICAmIzM0O2Zpcm13YXJlIGRlc2NyaXB0b3IgaXMgdG9vIHNob3J0XG4mIzM0Oyk7CiYjNDM7CQkJCXJldHVybiAtRUlOVkFMOwomIzQzOwkJCX0KJiM0MzsKJiM0MzsJCQlyeF9zdGFydCA9IGxlMzJfdG9fY3B1KGRlc2MtJmd0O3J4X3N0YXJ0KTsKJiM0MzsJCQlyeF9lbmQgPSBsZTMyX3RvX2NwdShkZXNjLSZndDtyeF9lbmQpOwomIzQzOwkJCWlmIChyeF9lbmQgJmx0OyAweDM1MDAgfHwgcnhfZW5kIC0gMHgzNTAwICZsdDs9IHJ4X3N0YXJ0KSB7CiYjNDM7CQkJCXdpcGh5X2Vycihwcml2LSZndDtody0mZ3Q7d2lwaHksCiYjNDM7CQkJCQkgICYjMzQ7ZmlybXdhcmUgZGVzY3JpcHRvciBoYXMgaW52YWxpZCBSWCByYW5nZVxuJiMzNDspOwomIzQzOwkJCQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJCQl9CiYjNDM7CiYjNDM7CQkJcHJpdi0mZ3Q7cnhfc3RhcnQgPSByeF9zdGFydDsKJiM0MzsJCQlwcml2LSZndDtyeF9lbmQgPSByeF9lbmQgLSAweDM1MDA7CiAJCQlwcml2LSZndDtoZWFkcm9vbSA9IGRlc2MtJmd0O2hlYWRyb29tOwogCQkJcHJpdi0mZ3Q7dGFpbHJvb20gPSBkZXNjLSZndDt0YWlscm9vbTsKIAkJCXByaXYtJmd0O3ByaXZhY3lfY2FwcyA9IGRlc2MtJmd0O3ByaXZhY3lfY2FwczsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIyOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0MzUKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiA2NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhpbmdzOgoKKipBbmFseXppbmcgdGhlIEZpcm13YXJlIEkvTyBDb2RlKioKCk9rYXksIHRpbWUgdG8gZGl2ZSBpbnRvIHRoaXMuIFRoZSBkaWZmIHBvaW50cyBtZSB0b3dhcmRzIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jYCwgc28gdGhhdCYjMzk7cyB3aGVyZSBJIG5lZWQgdG8gZm9jdXMuIExldCYjMzk7cyBzdGFydCB3aXRoIGEgdGhvcm91Z2ggZXhhbWluYXRpb24gb2YgdGhlIGNoYW5nZXMuIEkmIzM5O2xsIG5lZWQgdG8gcmVhZCB0aGUgc3Vycm91bmRpbmcgY29kZSBpbiB0aGF0IGZpbGUsIHRvbywgdG8gZ2V0IHRoZSBjb21wbGV0ZSBwaWN0dXJlLiBUaGUgYmVzdCB3YXkgdG8gYmVnaW4gdGhlIGludmVzdGlnYXRpb24gaXMgdXNpbmcgYHJlYWQtZmlsZWAgdG8gZ2V0IHRoZSBjb250ZXh0IGluIHRoZSBmaWxlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jYC4gVGhpcyB3aWxsIGdpdmUgbWUgZXZlcnl0aGluZyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY2hhbmdlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAyMjozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA1MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDUwOlx0XHR3aGlsZSAoYm9vdHJlYy1cdTAwM2VkYXRhIFx1MDAzYz0gZW5kX2RhdGEgXHUwMDI2XHUwMDI2IChib290cmVjLVx1MDAzZWRhdGEgJiM0MztcbiAgNTE6XHRcdCAgICAgICAobGVuID0gbGUzMl90b19jcHUoYm9vdHJlYy1cdTAwM2VsZW4pKSkgXHUwMDNjPSBlbmRfZGF0YSkge1xuICA1MjpcdFx0XHR1MzIgY29kZSA9IGxlMzJfdG9fY3B1KGJvb3RyZWMtXHUwMDNlY29kZSk7XG4gIDUzOlx0XHRcdHN3aXRjaCAoY29kZSkge1xuICA1NDpcdFx0XHRjYXNlIEJSX0NPREVfQ09NUE9ORU5UX0lEOlxuICA1NTpcdFx0XHRcdHByaXYtXHUwMDNlZndfaW50ZXJmYWNlID0gYmUzMl90b19jcHVwKChfX2JlMzIgKilcbiAgNTY6XHRcdFx0XHRcdFx0ICAgICBib290cmVjLVx1MDAzZWRhdGEpO1xuICA1NzpcdFx0XHRcdHN3aXRjaCAocHJpdi1cdTAwM2Vmd19pbnRlcmZhY2UpIHtcbiAgNTg6XHRcdFx0XHRjYXNlIEZXX0xNODY6XG4gIDU5Olx0XHRcdFx0Y2FzZSBGV19MTTIwOlxuICA2MDpcdFx0XHRcdGNhc2UgRldfTE04Nzoge1xuICA2MTpcdFx0XHRcdFx0Y2hhciAqaWZ0eXBlID0gKGNoYXIgKilib290cmVjLVx1MDAzZWRhdGE7XG4gIDYyOlx0XHRcdFx0XHR3aXBoeV9pbmZvKHByaXYtXHUwMDNlaHctXHUwMDNld2lwaHksXG4gIDYzOlx0XHRcdFx0XHRcdCAgIFwmIzM0O3A1NCBkZXRlY3RlZCBhIExNJWMlYyBmaXJtd2FyZVxcblwmIzM0OyxcbiAgNjQ6XHRcdFx0XHRcdFx0ICAgaWZ0eXBlWzJdLCBpZnR5cGVbM10pO1xuICA2NTpcdFx0XHRcdFx0YnJlYWs7XG4gIDY2Olx0XHRcdFx0XHR9XG4gIDY3Olx0XHRcdFx0Y2FzZSBGV19GTUFDOlxuICA2ODpcdFx0XHRcdGRlZmF1bHQ6XG4gIDY5Olx0XHRcdFx0XHR3aXBoeV9lcnIocHJpdi1cdTAwM2Vody1cdTAwM2V3aXBoeSxcbiAgNzA6XHRcdFx0XHRcdFx0ICBcJiMzNDt1bnN1cHBvcnRlZCBmaXJtd2FyZVxcblwmIzM0Oyk7XG4gIDcxOlx0XHRcdFx0XHRyZXR1cm4gLUVOT0RFVjtcbiAgNzI6XHRcdFx0XHR9XG4gIDczOlx0XHRcdFx0YnJlYWs7XG4gIDc0Olx0XHRcdGNhc2UgQlJfQ09ERV9DT01QT05FTlRfVkVSU0lPTjpcbiAgNzU6XHRcdFx0XHQvKiAyNCBieXRlcyBzaG91bGQgYmUgZW5vdWdoIGZvciBhbGwgZmlybXdhcmVzICovXG4gIDc2Olx0XHRcdFx0aWYgKHN0cm5sZW4oKHVuc2lnbmVkIGNoYXIgKikgYm9vdHJlYy1cdTAwM2VkYXRhLCAyNCkgXHUwMDNjIDI0KVxuICA3NzpcdFx0XHRcdFx0ZndfdmVyc2lvbiA9ICh1bnNpZ25lZCBjaGFyICopIGJvb3RyZWMtXHUwMDNlZGF0YTtcbiAgNzg6XHRcdFx0XHRicmVhaztcbiAgNzk6XHRcdFx0Y2FzZSBCUl9DT0RFX0RFU0NSOiB7XG4gIDgwOlx0XHRcdFx0c3RydWN0IGJvb3RyZWNfZGVzYyAqZGVzYyA9XG4gIDgxOlx0XHRcdFx0XHQoc3RydWN0IGJvb3RyZWNfZGVzYyAqKWJvb3RyZWMtXHUwMDNlZGF0YTtcbiAgODI6XHRcdFx0XHR1MzIgcnhfc3RhcnQsIHJ4X2VuZDtcbiAgODM6XHRcbiAgODQ6XHRcdFx0XHRpZiAobGVuIFx1MDAzYyBESVZfUk9VTkRfVVAob2Zmc2V0b2ZlbmQoc3RydWN0IGJvb3RyZWNfZGVzYyxcbiAgODU6XHRcdFx0XHRcdFx0XHRcdCAgIHJ4X2tleWNhY2hlX3NpemUpLFxuICA4NjpcdFx0XHRcdFx0XHRcdCAgICAgICBzaXplb2YoKmJvb3RyZWMtXHUwMDNlZGF0YSkpKSB7XG4gIDg3Olx0XHRcdFx0XHR3aXBoeV9lcnIocHJpdi1cdTAwM2Vody1cdTAwM2V3aXBoeSxcbiAgODg6XHRcdFx0XHRcdFx0ICBcJiMzNDtmaXJtd2FyZSBkZXNjcmlwdG9yIGlzIHRvbyBzaG9ydFxcblwmIzM0Oyk7XG4gIDg5Olx0XHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiAgOTA6XHRcdFx0XHR9XG4gIDkxOlx0XG4gIDkyOlx0XHRcdFx0cnhfc3RhcnQgPSBsZTMyX3RvX2NwdShkZXNjLVx1MDAzZXJ4X3N0YXJ0KTtcbiAgOTM6XHRcdFx0XHRyeF9lbmQgPSBsZTMyX3RvX2NwdShkZXNjLVx1MDAzZXJ4X2VuZCk7XG4gIDk0Olx0XHRcdFx0aWYgKHJ4X2VuZCBcdTAwM2MgMHgzNTAwIHx8IHJ4X2VuZCAtIDB4MzUwMCBcdTAwM2M9IHJ4X3N0YXJ0KSB7XG4gIDk1Olx0XHRcdFx0XHR3aXBoeV9lcnIocHJpdi1cdTAwM2Vody1cdTAwM2V3aXBoeSxcbiAgOTY6XHRcdFx0XHRcdFx0ICBcJiMzNDtmaXJtd2FyZSBkZXNjcmlwdG9yIGhhcyBpbnZhbGlkIFJYIHJhbmdlXFxuXCYjMzQ7KTtcbiAgOTc6XHRcdFx0XHRcdHJldHVybiAtRUlOVkFMO1xuICA5ODpcdFx0XHRcdH1cbiAgOTk6XHRcbiAxMDA6XHRcdFx0XHRwcml2LVx1MDAzZXJ4X3N0YXJ0ID0gcnhfc3RhcnQ7XG4gMTAxOlx0XHRcdFx0cHJpdi1cdTAwM2VyeF9lbmQgPSByeF9lbmQgLSAweDM1MDA7XG4gMTAyOlx0XHRcdFx0cHJpdi1cdTAwM2VoZWFkcm9vbSA9IGRlc2MtXHUwMDNlaGVhZHJvb207XG4gMTAzOlx0XHRcdFx0cHJpdi1cdTAwM2V0YWlscm9vbSA9IGRlc2MtXHUwMDNldGFpbHJvb207XG4gMTA0Olx0XHRcdFx0cHJpdi1cdTAwM2Vwcml2YWN5X2NhcHMgPSBkZXNjLVx1MDAzZXByaXZhY3lfY2FwcztcbiAxMDU6XHRcdFx0XHRwcml2LVx1MDAzZXJ4X2tleWNhY2hlX3NpemUgPSBkZXNjLVx1MDAzZXJ4X2tleWNhY2hlX3NpemU7XG4gMTA2Olx0XHRcdFx0aWYgKGxlMzJfdG9fY3B1KGJvb3RyZWMtXHUwMDNlbGVuKSA9PSAxMSlcbiAxMDc6XHRcdFx0XHRcdHByaXYtXHUwMDNlcnhfbXR1ID0gbGUxNl90b19jcHUoZGVzYy1cdTAwM2VyeF9tdHUpO1xuIDEwODpcdFx0XHRcdGVsc2VcbiAxMDk6XHRcdFx0XHRcdHByaXYtXHUwMDNlcnhfbXR1ID0gKHNpemVfdClcbiAxMTA6XHRcdFx0XHRcdFx0MHg2MjAgLSBwcml2LVx1MDAzZXR4X2hkcl9sZW47XG4gMTExOlx0XHRcdFx0bWF4bGVuID0gcHJpdi1cdTAwM2V0eF9oZHJfbGVuICYjNDM7IC8qIFVTQiBkZXZpY2VzICovXG4gMTEyOlx0XHRcdFx0XHQgc2l6ZW9mKHN0cnVjdCBwNTRfcnhfZGF0YSkgJiM0MztcbiAxMTM6XHRcdFx0XHRcdCA0ICYjNDM7IC8qIHJ4IGFsaWdubWVudCAqL1xuIDExNDpcdFx0XHRcdFx0IElFRUU4MDIxMV9NQVhfRlJBR19USFJFU0hPTEQ7XG4gMTE1Olx0XHRcdFx0aWYgKHByaXYtXHUwMDNlcnhfbXR1IFx1MDAzZSBtYXhsZW4gXHUwMDI2XHUwMDI2IFBBR0VfU0laRSA9PSA0MDk2KSB7XG4gMTE2Olx0XHRcdFx0XHRwcmludGsoS0VSTl9JTkZPIFwmIzM0O3A1NDogcnhfbXR1IHJlZHVjZWQgZnJvbSAlZCBcJiMzNDtcbiAxMTc6XHRcdFx0XHRcdCAgICAgICBcJiMzNDt0byAlZFxcblwmIzM0OywgcHJpdi1cdTAwM2VyeF9tdHUsIG1heGxlbik7XG4gMTE4Olx0XHRcdFx0XHRwcml2LVx1MDAzZXJ4X210dSA9IG1heGxlbjtcbiAxMTk6XHRcdFx0XHR9XG4gMTIwOlx0XHRcdFx0YnJlYWs7XG4gMTIxOlx0XHRcdFx0fVxuIDEyMjpcdFx0XHRjYXNlIEJSX0NPREVfRVhQT1NFRF9JRjpcbiAxMjM6XHRcdFx0XHRleHBfaWYgPSAoc3RydWN0IGV4cF9pZiAqKSBib290cmVjLVx1MDAzZWRhdGE7XG4gMTI0Olx0XHRcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgKGxlbiAqIHNpemVvZigqZXhwX2lmKSAvIDQpOyBpJiM0MzsmIzQzOylcbiAxMjU6XHRcdFx0XHRcdGlmIChleHBfaWZbaV0uaWZfaWQgPT0gY3B1X3RvX2xlMTYoSUZfSURfTE1BQykpXG4gMTI2Olx0XHRcdFx0XHRcdHByaXYtXHUwMDNlZndfdmFyID0gbGUxNl90b19jcHUoZXhwX2lmW2ldLnZhcmlhbnQpO1xuIDEyNzpcdFx0XHRcdGJyZWFrO1xuIDEyODpcdFx0XHRjYXNlIEJSX0NPREVfREVQRU5ERU5UX0lGOlxuIDEyOTpcdFx0XHRcdGJyZWFrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAyMjozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDgyCgkJCQkJCQlvdXRwdXQ6IDE5MwoJCQkJCQkJdGhvdWdodHM6IDg1MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipLTVNBTiBBc3Nlc3NtZW50OiBGaXJtd2FyZSBQYXJzaW5nIFZhbGlkYXRpb24qKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IG9mIHRoaXMgcGF0Y2gsIHdoaWNoIG1vZGlmaWVzIGBwNTRfcGFyc2VfZmlybXdhcmVgLCBpbnZvbHZlcyBhIGNyaXRpY2FsIHJldmlldyBvZiBpdHMgaW1wbGljYXRpb25zIGZvciBtZW1vcnkgc2FmZXR5LCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gdGhlIEtNU0FOIGFuZ2xlLiBJJiMzOTt2ZSBnb3QgdG8gZW5zdXJlIHRoZXJlIGFyZSBubyB2dWxuZXJhYmlsaXRpZXMgcmVsYXRlZCB0byB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2Ugd2l0aGluIHRoZSBrZXJuZWwuCgpMb29raW5nIGF0IHRoZSBjb2RlLCBpdCYjMzk7cyBjbGVhciB0aGUgcGF0Y2ggaXMgYmVlZmluZyB1cCB0aGUgaW5wdXQgdmFsaWRhdGlvbiB3aGVuIGhhbmRsaW5nIHRoZSBgQlJfQ09ERV9ERVNDUmAgY2FzZS4gUHJldmlvdXNseSwgdGhlIGNvZGUgd2FzIHZ1bG5lcmFibGUgYmVjYXVzZSBpdCB3YXMgcmVhZGluZyBkYXRhIGZyb20gdGhlIGBib290cmVjLSZndDtkYXRhYCBidWZmZXIgd2l0aG91dCBzdWZmaWNpZW50IGJvdW5kcyBjaGVja2luZy4gU3BlY2lmaWNhbGx5LCBpdCBsYWNrZWQgY2hlY2tzIG9uIHRoZSByZWNvcmQgbGVuZ3RoLCBwb3RlbnRpYWxseSBsZWFkaW5nIHRvIG91dC1vZi1ib3VuZHMgcmVhZHMgaWYgdGhlIGZpcm13YXJlIGRhdGEgd2FzIHRydW5jYXRlZCDigJMgYSBjbGFzc2ljIEtBU0FOIGlzc3VlLiBUaGUgcGF0Y2ggYWRkcmVzc2VzIHRoaXMgYnkgYWRkaW5nIGEgY3J1Y2lhbCBjaGVjayB0byBlbnN1cmUgdGhlIHJlY29yZCBgbGVuYCBpcyBsYXJnZSBlbm91Z2ggdG8gY29udGFpbiB0aGUgYGJvb3RyZWNfZGVzY2Agc3RydWN0dXJlIHVwIHRvIGByeF9rZXljYWNoZV9zaXplYCwgYXMgd2VsbCBhcyB2YWxpZGF0aW5nIHRoYXQgYHJ4X2VuZGAgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIGAweDM1MDBgIGFuZCBgcnhfZW5kIC0gMHgzNTAwYCBpcyBncmVhdGVyIHRoYW4gYHJ4X3N0YXJ0YC4gVGhpcyBlZmZlY3RpdmVseSBwcmV2ZW50cyBhbiBpbnRlZ2VyIHVuZGVyZmxvdyBvciBhbiBpbnZhbGlkIFJYIGJ1ZmZlciByYW5nZSBjYWxjdWxhdGlvbi4KCk5vdywgdGhlIGltcG9ydGFudCBxdWVzdGlvbjogZG9lcyB0aGlzIGludHJvZHVjZSBvciBleGFjZXJiYXRlIGFueSBLTVNBTiBjb25jZXJucz8gVG8gYXNzZXNzIHRoaXMsIEkmIzM5O3ZlIGdvdCB0byByaWdvcm91c2x5IGV4YW1pbmUgaWYgdGhlIHBhdGNoIGludHJvZHVjZXMgYW55IG9mIHRoZSBmb2xsb3dpbmcgS01TQU4tcmVsZXZhbnQgc2NlbmFyaW9zOgoxLiAgS2VybmVsIGRhdGEgc3RydWN0dXJlcyBwYXNzZWQgdG8gdXNlciBzcGFjZSB3aXRoIHVuaW5pdGlhbGl6ZWQgZmllbGRzLgoyLiAgQ29uZGl0aW9uYWwgbG9naWMgcmVseWluZyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcy4KMy4gIENvbXBsZXggZGF0YSBzdHJ1Y3R1cmUgYWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcyBtaWdodCBiZSBhY2Nlc3NlZCBsYXRlci4KNC4gIEJvdW5kcyBjaGVja3Mgb3IgbGVuZ3RoIGNhbGN1bGF0aW9ucyB0aGF0IGNvdWxkIGVuYWJsZSBhY2Nlc3MgdG8gdW5pbml0aWFsaXplZCBieXRlcyBpbiBleGlzdGluZyBidWZmZXJzLgoKR29pbmcgdGhyb3VnaCB0aGUgY2hlY2tsaXN0LCBpdCYjMzk7cyBwcmV0dHkgY2xlYXIgdGhhdCB0aGlzIHBhdGNoIGRvZXMgbm90IGZhbGwgaW50byBhbnkgb2YgdGhlc2UgY2F0ZWdvcmllcy4gVGhlIHBhdGNoICoqb25seSoqIHZhbGlkYXRlcyBpbnB1dCBmcm9tIHRoZSBmaXJtd2FyZSBidWZmZXIuIFRoZSB2YXJpYWJsZXMgYHJ4X3N0YXJ0YCBhbmQgYHJ4X2VuZGAgYXJlIGFsd2F5cyBleHBsaWNpdGx5IGluaXRpYWxpemVkIGZyb20gdmFsdWVzIHJlYWQgZnJvbSBgYm9vdHJlYy0mZ3Q7ZGF0YWAgYmVmb3JlIGJlaW5nIHVzZWQuIE5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzIGludHJvZHVjZWQsIGFsbG9jYXRlZCwgb3IgY29waWVkIHRvIHVzZXIgc3BhY2UuIEl0IHRpZ2h0ZW5zIHRoZSBib3VuZHMgY2hlY2tzIGFuZCByZWplY3RzIGludmFsaWQvc2hvcnQgZGVzY3JpcHRvcnMuCgpUaGVyZWZvcmUsIHRoZSBmaXggaXMgc29sZWx5IGFib3V0IHN0YW5kYXJkIGlucHV0IHZhbGlkYXRpb24gYW5kIHNhbml0aXphdGlvbiwgd2hpY2ggYXJlIEtBU0FOIHByb2JsZW1zLiBUaGUgS01TQU4gZnV6emluZyBtZXRob2RvbG9neSBkb2VzbiYjMzk7dCBwcm92aWRlIGFueSBhZGRpdGlvbmFsIGJlbmVmaXQgaGVyZS4gVGhlIGlzc3VlIGZpeGVkIGlzIHByZXZlbnRpbmcgb3V0LW9mLWJvdW5kcyByZWFkcyBhbmQgaW50ZWdlciB1bmRlcmZsb3cuIFRoZXNlIGFyZSBzdGFuZGFyZCBLQVNBTiBhbmQgbG9naWMgaXNzdWVzIGFuZCBub3QgS01TQU4tc3BlY2lmaWMuCgpTbywgaW4gY29uY2x1c2lvbiwgdGhlIHBhdGNoIHByaW1hcmlseSBhZGRyZXNzZXMgS0FTQU4gdnVsbmVyYWJpbGl0aWVzIGJ5IHZhbGlkYXRpbmcgZmlybXdhcmUgZGF0YSwgbWFraW5nIGl0IHNhZmUgdG8gc2F5IHRoYXQgYE5lZWRzS01TQU4gPSBmYWxzZWAuIEkmIzM5O2xsIGNhbGwgYHNldC1yZXN1bHRzYCB3aXRoIHRoaXMgYXNzZXNzbWVudCwgY29uZmlkZW50IGluIHRoZSByZWFzb25pbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIyOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgaW5wdXQgdmFsaWRhdGlvbiBhbmQgYm91bmRzIGNoZWNraW5nIGZvciBmaXJtd2FyZSBib290IHJlY29yZCBkZXNjcmlwdG9ycyBpbiBwNTRfcGFyc2VfZmlybXdhcmUoKS4gU3BlY2lmaWNhbGx5LCBpdCB2YWxpZGF0ZXMgdGhhdCB0aGUgYm9vdCByZWNvcmQgbGVuZ3RoIGlzIHN1ZmZpY2llbnQgdG8gY292ZXIgc3RydWN0IGJvb3RyZWNfZGVzYyBmaWVsZHMgKHByZXZlbnRpbmcgb3V0LW9mLWJvdW5kcyByZWFkcyBvbiB0cnVuY2F0ZWQgZmlybXdhcmUgYnVmZmVycywgZGV0ZWN0YWJsZSBieSBLQVNBTikgYW5kIGVuc3VyZXMgdGhhdCByeF9lbmQgXHUwMDNlPSAweDM1MDAgYW5kIHJ4X2VuZCAtIDB4MzUwMCBcdTAwM2Ugcnhfc3RhcnQgdG8gcHJldmVudCBpbnRlZ2VyIHVuZGVyZmxvdyBhbmQgaW52YWxpZCBidWZmZXIgcmFuZ2VzLlxuXG5ObyB1bmluaXRpYWxpemVkIG1lbW9yeSBpcyBhbGxvY2F0ZWQsIHJlYWQsIG9yIGV4cG9zZWQuIExvY2FsIHZhcmlhYmxlcyAocnhfc3RhcnQsIHJ4X2VuZCkgYXJlIGV4cGxpY2l0bHkgaW5pdGlhbGl6ZWQgZnJvbSB0aGUgZmlybXdhcmUgZGVzY3JpcHRvciBiZWZvcmUgYmVpbmcgY2hlY2tlZCBhbmQgc3RvcmVkLiBObyBkYXRhIGlzIGNvcGllZCB0byB1c2Vyc3BhY2Ugd2l0aG91dCBpbml0aWFsaXphdGlvbi4gVGhlcmVmb3JlLCBzdGFuZGFyZCBLQVNBTiBidWlsZHMgYXJlIHN1ZmZpY2llbnQgYW5kIEtNU0FOIGZ1enppbmcgaXMgbm90IG5lZWRlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgaW5wdXQgdmFsaWRhdGlvbiBhbmQgYm91bmRzIGNoZWNraW5nIGZvciBmaXJtd2FyZSBib290IHJlY29yZCBkZXNjcmlwdG9ycyBpbiBwNTRfcGFyc2VfZmlybXdhcmUoKS4gU3BlY2lmaWNhbGx5LCBpdCB2YWxpZGF0ZXMgdGhhdCB0aGUgYm9vdCByZWNvcmQgbGVuZ3RoIGlzIHN1ZmZpY2llbnQgdG8gY292ZXIgc3RydWN0IGJvb3RyZWNfZGVzYyBmaWVsZHMgKHByZXZlbnRpbmcgb3V0LW9mLWJvdW5kcyByZWFkcyBvbiB0cnVuY2F0ZWQgZmlybXdhcmUgYnVmZmVycywgZGV0ZWN0YWJsZSBieSBLQVNBTikgYW5kIGVuc3VyZXMgdGhhdCByeF9lbmQgXHUwMDNlPSAweDM1MDAgYW5kIHJ4X2VuZCAtIDB4MzUwMCBcdTAwM2Ugcnhfc3RhcnQgdG8gcHJldmVudCBpbnRlZ2VyIHVuZGVyZmxvdyBhbmQgaW52YWxpZCBidWZmZXIgcmFuZ2VzLlxuXG5ObyB1bmluaXRpYWxpemVkIG1lbW9yeSBpcyBhbGxvY2F0ZWQsIHJlYWQsIG9yIGV4cG9zZWQuIExvY2FsIHZhcmlhYmxlcyAocnhfc3RhcnQsIHJ4X2VuZCkgYXJlIGV4cGxpY2l0bHkgaW5pdGlhbGl6ZWQgZnJvbSB0aGUgZmlybXdhcmUgZGVzY3JpcHRvciBiZWZvcmUgYmVpbmcgY2hlY2tlZCBhbmQgc3RvcmVkLiBObyBkYXRhIGlzIGNvcGllZCB0byB1c2Vyc3BhY2Ugd2l0aG91dCBpbml0aWFsaXphdGlvbi4gVGhlcmVmb3JlLCBzdGFuZGFyZCBLQVNBTiBidWlsZHMgYXJlIHN1ZmZpY2llbnQgYW5kIEtNU0FOIGZ1enppbmcgaXMgbm90IG5lZWRlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDZUMjI6MzU6MTAuMDcxMTkwOTYzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDAzMTE3MjA5MDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUDU0X0NPTU1PTlwiLFxuICAgIFwiUDU0X1VTQlwiLFxuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIlVTQlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInA1NF9wYXJzZV9maXJtd2FyZVwiLFxuICAgIFwicDU0dV9zdGFydF9vcHNcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgaW5wdXQgdmFsaWRhdGlvbiBhbmQgYm91bmRzIGNoZWNraW5nIGZvciBmaXJtd2FyZSBib290IHJlY29yZCBkZXNjcmlwdG9ycyBpbiBwNTRfcGFyc2VfZmlybXdhcmUoKS4gU3BlY2lmaWNhbGx5LCBpdCB2YWxpZGF0ZXMgdGhhdCB0aGUgYm9vdCByZWNvcmQgbGVuZ3RoIGlzIHN1ZmZpY2llbnQgdG8gY292ZXIgc3RydWN0IGJvb3RyZWNfZGVzYyBmaWVsZHMgKHByZXZlbnRpbmcgb3V0LW9mLWJvdW5kcyByZWFkcyBvbiB0cnVuY2F0ZWQgZmlybXdhcmUgYnVmZmVycywgZGV0ZWN0YWJsZSBieSBLQVNBTikgYW5kIGVuc3VyZXMgdGhhdCByeF9lbmQgXFx1MDAzZT0gMHgzNTAwIGFuZCByeF9lbmQgLSAweDM1MDAgXFx1MDAzZSByeF9zdGFydCB0byBwcmV2ZW50IGludGVnZXIgdW5kZXJmbG93IGFuZCBpbnZhbGlkIGJ1ZmZlciByYW5nZXMuXFxuXFxuTm8gdW5pbml0aWFsaXplZCBtZW1vcnkgaXMgYWxsb2NhdGVkLCByZWFkLCBvciBleHBvc2VkLiBMb2NhbCB2YXJpYWJsZXMgKHJ4X3N0YXJ0LCByeF9lbmQpIGFyZSBleHBsaWNpdGx5IGluaXRpYWxpemVkIGZyb20gdGhlIGZpcm13YXJlIGRlc2NyaXB0b3IgYmVmb3JlIGJlaW5nIGNoZWNrZWQgYW5kIHN0b3JlZC4gTm8gZGF0YSBpcyBjb3BpZWQgdG8gdXNlcnNwYWNlIHdpdGhvdXQgaW5pdGlhbGl6YXRpb24uIFRoZXJlZm9yZSwgc3RhbmRhcmQgS0FTQU4gYnVpbGRzIGFyZSBzdWZmaWNpZW50IGFuZCBLTVNBTiBmdXp6aW5nIGlzIG5vdCBuZWVkZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBib3VuZHMgYW5kIHJhbmdlIHZhbGlkYXRpb24gY2hlY2tzIGZvciBmaXJtd2FyZSBkZXNjcmlwdG9ycyBpbiBwNTRfcGFyc2VfZmlybXdhcmUoKS4gVGhpcyBmdW5jdGlvbiBpcyByZWFjaGFibGUgdmlhIHRoZSBwNTR1c2IgZHJpdmVyIHdoaWNoIGNhbiBiZSBmdXp6ZWQgdXNpbmcgVVNCIGVtdWxhdGlvbiAoZS5nLiBSYXcgR2FkZ2V0KS4gRnV6emluZyBpcyB3YXJyYW50ZWQgdG8gdmVyaWZ5IHRoYXQgbWFsZm9ybWVkIGZpcm13YXJlIGltYWdlcyBhbmQgZWRnZSBjYXNlcyBhcmUgaGFuZGxlZCBzYWZlbHkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIyOjM1OjEwLjA3MTE5Nzg3M1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQwNTY5MzcxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZTcwM2MwMzQ2YmNmZDlmZDVmMWU0NGU5Mzk5OGYxYmVmZGIxMzI2M1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIFNlcCA2IDIyOjM1OjA5IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jXFxuaW5kZXggYTNkOTA1M2YwNDNjNi4uNWQ4MmUwYTQzODM1OCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uY1xcbkBAIC03OSw5ICs3OSwyNiBAQCBpbnQgcDU0X3BhcnNlX2Zpcm13YXJlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmRldiwgY29uc3Qgc3RydWN0IGZpcm13YXJlICpmdylcXG4gXFx0XFx0Y2FzZSBCUl9DT0RFX0RFU0NSOiB7XFxuIFxcdFxcdFxcdHN0cnVjdCBib290cmVjX2Rlc2MgKmRlc2MgPVxcbiBcXHRcXHRcXHRcXHQoc3RydWN0IGJvb3RyZWNfZGVzYyAqKWJvb3RyZWMtXFx1MDAzZWRhdGE7XFxuLVxcdFxcdFxcdHByaXYtXFx1MDAzZXJ4X3N0YXJ0ID0gbGUzMl90b19jcHUoZGVzYy1cXHUwMDNlcnhfc3RhcnQpO1xcbi1cXHRcXHRcXHQvKiBGSVhNRSBhZGQgc2FuaXR5IGNoZWNraW5nICovXFxuLVxcdFxcdFxcdHByaXYtXFx1MDAzZXJ4X2VuZCA9IGxlMzJfdG9fY3B1KGRlc2MtXFx1MDAzZXJ4X2VuZCkgLSAweDM1MDA7XFxuK1xcdFxcdFxcdHUzMiByeF9zdGFydCwgcnhfZW5kO1xcbitcXG4rXFx0XFx0XFx0aWYgKGxlbiBcXHUwMDNjIERJVl9ST1VORF9VUChvZmZzZXRvZmVuZChzdHJ1Y3QgYm9vdHJlY19kZXNjLFxcbitcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICByeF9rZXljYWNoZV9zaXplKSxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIHNpemVvZigqYm9vdHJlYy1cXHUwMDNlZGF0YSkpKSB7XFxuK1xcdFxcdFxcdFxcdHdpcGh5X2Vycihwcml2LVxcdTAwM2Vody1cXHUwMDNld2lwaHksXFxuK1xcdFxcdFxcdFxcdFxcdCAgXFxcImZpcm13YXJlIGRlc2NyaXB0b3IgaXMgdG9vIHNob3J0XFxcXG5cXFwiKTtcXG4rXFx0XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcdFxcdFxcdH1cXG4rXFxuK1xcdFxcdFxcdHJ4X3N0YXJ0ID0gbGUzMl90b19jcHUoZGVzYy1cXHUwMDNlcnhfc3RhcnQpO1xcbitcXHRcXHRcXHRyeF9lbmQgPSBsZTMyX3RvX2NwdShkZXNjLVxcdTAwM2VyeF9lbmQpO1xcbitcXHRcXHRcXHRpZiAocnhfZW5kIFxcdTAwM2MgMHgzNTAwIHx8IHJ4X2VuZCAtIDB4MzUwMCBcXHUwMDNjPSByeF9zdGFydCkge1xcbitcXHRcXHRcXHRcXHR3aXBoeV9lcnIocHJpdi1cXHUwMDNlaHctXFx1MDAzZXdpcGh5LFxcbitcXHRcXHRcXHRcXHRcXHQgIFxcXCJmaXJtd2FyZSBkZXNjcmlwdG9yIGhhcyBpbnZhbGlkIFJYIHJhbmdlXFxcXG5cXFwiKTtcXG4rXFx0XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcdFxcdFxcdH1cXG4rXFxuK1xcdFxcdFxcdHByaXYtXFx1MDAzZXJ4X3N0YXJ0ID0gcnhfc3RhcnQ7XFxuK1xcdFxcdFxcdHByaXYtXFx1MDAzZXJ4X2VuZCA9IHJ4X2VuZCAtIDB4MzUwMDtcXG4gXFx0XFx0XFx0cHJpdi1cXHUwMDNlaGVhZHJvb20gPSBkZXNjLVxcdTAwM2VoZWFkcm9vbTtcXG4gXFx0XFx0XFx0cHJpdi1cXHUwMDNldGFpbHJvb20gPSBkZXNjLVxcdTAwM2V0YWlscm9vbTtcXG4gXFx0XFx0XFx0cHJpdi1cXHUwMDNlcHJpdmFjeV9jYXBzID0gZGVzYy1cXHUwMDNlcHJpdmFjeV9jYXBzO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMjozNToxMC42MTI2OTcyNzVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjI4MTAyNDY1Mzg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlA1NF9DT01NT05cIixcbiAgICBcIlA1NF9VU0JcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJVU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwNTRfcGFyc2VfZmlybXdhcmVcIixcbiAgICBcInA1NHVfc3RhcnRfb3BzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBib3VuZHMgYW5kIHJhbmdlIHZhbGlkYXRpb24gY2hlY2tzIGZvciBmaXJtd2FyZSBkZXNjcmlwdG9ycyBpbiBwNTRfcGFyc2VfZmlybXdhcmUoKS4gVGhpcyBmdW5jdGlvbiBpcyByZWFjaGFibGUgdmlhIHRoZSBwNTR1c2IgZHJpdmVyIHdoaWNoIGNhbiBiZSBmdXp6ZWQgdXNpbmcgVVNCIGVtdWxhdGlvbiAoZS5nLiBSYXcgR2FkZ2V0KS4gRnV6emluZyBpcyB3YXJyYW50ZWQgdG8gdmVyaWZ5IHRoYXQgbWFsZm9ybWVkIGZpcm13YXJlIGltYWdlcyBhbmQgZWRnZSBjYXNlcyBhcmUgaGFuZGxlZCBzYWZlbHkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZTcwM2MwMzQ2YmNmZDlmZDVmMWU0NGU5Mzk5OGYxYmVmZGIxMzI2M1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gU2VwIDYgMjI6MzU6MDkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uY1xuaW5kZXggYTNkOTA1M2YwNDNjNi4uNWQ4MmUwYTQzODM1OCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmNcbkBAIC03OSw5ICs3OSwyNiBAQCBpbnQgcDU0X3BhcnNlX2Zpcm13YXJlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmRldiwgY29uc3Qgc3RydWN0IGZpcm13YXJlICpmdylcbiBcdFx0Y2FzZSBCUl9DT0RFX0RFU0NSOiB7XG4gXHRcdFx0c3RydWN0IGJvb3RyZWNfZGVzYyAqZGVzYyA9XG4gXHRcdFx0XHQoc3RydWN0IGJvb3RyZWNfZGVzYyAqKWJvb3RyZWMtXHUwMDNlZGF0YTtcbi1cdFx0XHRwcml2LVx1MDAzZXJ4X3N0YXJ0ID0gbGUzMl90b19jcHUoZGVzYy1cdTAwM2VyeF9zdGFydCk7XG4tXHRcdFx0LyogRklYTUUgYWRkIHNhbml0eSBjaGVja2luZyAqL1xuLVx0XHRcdHByaXYtXHUwMDNlcnhfZW5kID0gbGUzMl90b19jcHUoZGVzYy1cdTAwM2VyeF9lbmQpIC0gMHgzNTAwO1xuK1x0XHRcdHUzMiByeF9zdGFydCwgcnhfZW5kO1xuK1xuK1x0XHRcdGlmIChsZW4gXHUwMDNjIERJVl9ST1VORF9VUChvZmZzZXRvZmVuZChzdHJ1Y3QgYm9vdHJlY19kZXNjLFxuK1x0XHRcdFx0XHRcdFx0ICAgcnhfa2V5Y2FjaGVfc2l6ZSksXG4rXHRcdFx0XHRcdFx0ICAgICAgIHNpemVvZigqYm9vdHJlYy1cdTAwM2VkYXRhKSkpIHtcbitcdFx0XHRcdHdpcGh5X2Vycihwcml2LVx1MDAzZWh3LVx1MDAzZXdpcGh5LFxuK1x0XHRcdFx0XHQgIFwiZmlybXdhcmUgZGVzY3JpcHRvciBpcyB0b28gc2hvcnRcXG5cIik7XG4rXHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbitcdFx0XHR9XG4rXG4rXHRcdFx0cnhfc3RhcnQgPSBsZTMyX3RvX2NwdShkZXNjLVx1MDAzZXJ4X3N0YXJ0KTtcbitcdFx0XHRyeF9lbmQgPSBsZTMyX3RvX2NwdShkZXNjLVx1MDAzZXJ4X2VuZCk7XG4rXHRcdFx0aWYgKHJ4X2VuZCBcdTAwM2MgMHgzNTAwIHx8IHJ4X2VuZCAtIDB4MzUwMCBcdTAwM2M9IHJ4X3N0YXJ0KSB7XG4rXHRcdFx0XHR3aXBoeV9lcnIocHJpdi1cdTAwM2Vody1cdTAwM2V3aXBoeSxcbitcdFx0XHRcdFx0ICBcImZpcm13YXJlIGRlc2NyaXB0b3IgaGFzIGludmFsaWQgUlggcmFuZ2VcXG5cIik7XG4rXHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbitcdFx0XHR9XG4rXG4rXHRcdFx0cHJpdi1cdTAwM2VyeF9zdGFydCA9IHJ4X3N0YXJ0O1xuK1x0XHRcdHByaXYtXHUwMDNlcnhfZW5kID0gcnhfZW5kIC0gMHgzNTAwO1xuIFx0XHRcdHByaXYtXHUwMDNlaGVhZHJvb20gPSBkZXNjLVx1MDAzZWhlYWRyb29tO1xuIFx0XHRcdHByaXYtXHUwMDNldGFpbHJvb20gPSBkZXNjLVx1MDAzZXRhaWxyb29tO1xuIFx0XHRcdHByaXYtXHUwMDNlcHJpdmFjeV9jYXBzID0gZGVzYy1cdTAwM2Vwcml2YWN5X2NhcHM7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMjozNToxMC42MTI2OTk1ODRaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1MzE0MjE2MzU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2ggZm9yIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBwYXRjaCBpcyBldmVuIHdvcnRoIG91ciBmdXp6aW5nIGVmZm9ydHMsIGFuZCBpZiBzbywgaG93IHRvIGFwcHJvYWNoIGl0IHN0cmF0ZWdpY2FsbHkuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIGFuZCBwaW5wb2ludCB0aGUgbW9zdCBpbXBhY3RmdWwgc3ltYm9scy5cblxuVGhlIHRhcmdldCBpcyBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uY2AsIGFuZCB0aGUgZnVuY3Rpb24gb2YgaW50ZXJlc3QgaXMgYHA1NF9wYXJzZV9maXJtd2FyZWAuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGdldCB0aGUgbGF5IG9mIHRoZSBsYW5kLiBJJ2xsIHVzZSBgZ3JlcHBlcmAgKG9yIG15IHRydXN0eSBmaWxlIHJlYWRlcikgdG8gZ2V0IHRoZSBicm9hZGVyIGNvbnRleHQgb2YgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmNgLiBVbmRlcnN0YW5kaW5nIGhvdyB0aGlzIGZpbGUgZml0cyBpbnRvIHRoZSBsYXJnZXIgcGljdHVyZSBvZiB0aGUgYHA1NGAgbW9kdWxlIGlzIGNydWNpYWwuXG5cbk5leHQsIEkgbmVlZCB0byBrbm93IGhvdyB0aGUgYHA1NGAgbW9kdWxlIGlzIHVzZWQuIElzIHRoaXMgYSBVU0IsIFBDSSwgb3IgU1BJIGRldmljZT8gVGhlIGhhcmR3YXJlIGludGVyZmFjZSBzaWduaWZpY2FudGx5IGltcGFjdHMgcG90ZW50aWFsIGF0dGFjayBzdXJmYWNlcyBhbmQgZnV6emluZyBzdHJhdGVnaWVzLiBJJ2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIHJlbGV2YW50IEtjb25maWcgYW5kIHRoZSBzb3VyY2UgZmlsZXMgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9gIHRvIGRldGVybWluZSB0aGF0LiBUaGlzIGluZm9ybWF0aW9uIHdpbGwgaGVscCBtZSBkZXRlcm1pbmUgd2hpY2ggaW50ZXJhY3Rpb25zIGNvdWxkIGxlYWQgdG8gaW50ZXJlc3RpbmcgYW5kIGNvbXBsZXggc3RhdGUgY2hhbmdlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzIyMywiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIyOjM1OjE1LjkyNjkxODA2MloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImNvZGVzZWFyY2gtZGlyLWluZGV4IiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTgzNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJEaXJcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRmlsZXNcIjogW1xuICAgIFwiZWVwcm9tLmNcIixcbiAgICBcImVlcHJvbS5oXCIsXG4gICAgXCJmd2lvLmNcIixcbiAgICBcImxlZC5jXCIsXG4gICAgXCJsbWFjLmhcIixcbiAgICBcIm1haW4uY1wiLFxuICAgIFwicDU0LmhcIixcbiAgICBcInA1NHBjaS5jXCIsXG4gICAgXCJwNTRwY2kuaFwiLFxuICAgIFwicDU0c3BpLmNcIixcbiAgICBcInA1NHNwaS5oXCIsXG4gICAgXCJwNTRzcGlfZWVwcm9tLmhcIixcbiAgICBcInA1NHVzYi5jXCIsXG4gICAgXCJwNTR1c2IuaFwiLFxuICAgIFwidHhyeC5jXCJcbiAgXSxcbiAgXCJTdWJkaXJzXCI6IG51bGxcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIyOjM1OjE1LjkyNjk3ODQ3MloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIwNTcxNjA1MTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBwNTR1c2IgRHJpdmVyIGFuZCBFbXVsYXRpb24gUG9zc2liaWxpdGllcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBwNTR1c2IuY2AsIHdoaWNoLCBhcyBleHBlY3RlZCwgcmVzaWRlcyB3aXRoaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9gLiBNeSBpbnRlcmVzdCBpcyBwaXF1ZWQgYmVjYXVzZSBJJ20gdGhpbmtpbmcgYWJvdXQgVVNCIGRldmljZSBlbXVsYXRpb24gYW5kIGhvdyB0aGlzIGRyaXZlciBtaWdodCBpbnRlcmFjdCB3aXRoIGl0LiBUaGUgVVNCIFJhdyBHYWRnZXQgYW5kIHN5emthbGxlcidzIFVTQiBlbXVsYXRpb24gYXJlIHBhcnRpY3VsYXJseSByZWxldmFudCBoZXJlLiBUaGF0J3Mgd2hlcmUgdGhlIGludGVyZXN0aW5nIHBvc3NpYmlsaXRpZXMgbGllLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGlzIGRyaXZlciB0byBmaWd1cmUgb3V0IHRoZSBiZXN0IHdheSB0byBpbnRlcmFjdCB3aXRoIGl0LCBzbyBJJ2xsIGdvIGRpZ2dpbmcgaW50byBlaXRoZXIgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9LY29uZmlnYCBvciwgaWYgdGhhdCdzIG5vdCBzcGVjaWZpYyBlbm91Z2gsIHRoZSBtb3JlIGdlbmVyYWwgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL0tjb25maWdgIGZpbGUuIEknbGwgbmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZyBmaWxlcyBmb3IgY29uZmlndXJhdGlvbiBvcHRpb25zLiBUaGF0J3MgdGhlIGxvZ2ljYWwgbmV4dCBzdGVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjozODA4LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTEsIlRvb2xDYWxscyI6WyJjb2Rlc2VhcmNoLWRpci1pbmRleCJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIyOjM1OjE3Ljk4NDE0MTM3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwMDQ0MzQwNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJQNTRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWxcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxMzA3IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL01ha2VmaWxlOjI6b2JqLSQoQ09ORklHX1A1NF9DT01NT04pXFx0Kz0gcDU0L1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvS2NvbmZpZzoyOmNvbmZpZyBQNTRfQ09NTU9OXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiU29mdG1hYyBQcmlzbTU0IHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvS2NvbmZpZy0xNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvS2NvbmZpZzoxNzpjb25maWcgUDU0X1VTQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9LY29uZmlnLTE4LVxcdHRyaXN0YXRlIFxcXCJQcmlzbTU0IFVTQiBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9LY29uZmlnOjE5OlxcdGRlcGVuZHMgb24gUDU0X0NPTU1PTiBcXHUwMDI2XFx1MDAyNiBVU0JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvS2NvbmZpZy0yMC1cXHRzZWxlY3QgQ1JDMzJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9LY29uZmlnLTI4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9LY29uZmlnOjI5OmNvbmZpZyBQNTRfUENJXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L0tjb25maWctMzAtXFx0dHJpc3RhdGUgXFxcIlByaXNtNTQgUENJIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L0tjb25maWc6MzE6XFx0ZGVwZW5kcyBvbiBQNTRfQ09NTU9OIFxcdTAwMjZcXHUwMDI2IFBDSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9LY29uZmlnLTMyLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9LY29uZmlnLTQyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9LY29uZmlnOjQzOmNvbmZpZyBQNTRfU1BJXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L0tjb25maWctNDQtXFx0dHJpc3RhdGUgXFxcIlByaXNtNTQgU1BJIChzdGxjNDV4eCkgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvS2NvbmZpZzo0NTpcXHRkZXBlbmRzIG9uIFA1NF9DT01NT04gXFx1MDAyNlxcdTAwMjYgU1BJX01BU1RFUlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9LY29uZmlnLTQ2LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9LY29uZmlnLTUxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9LY29uZmlnOjUyOmNvbmZpZyBQNTRfU1BJX0RFRkFVTFRfRUVQUk9NXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L0tjb25maWctNTMtXFx0Ym9vbCBcXFwiSW5jbHVkZSBmYWxsYmFjayBFRVBST00gYmxvYlxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvS2NvbmZpZzo1NDpcXHRkZXBlbmRzIG9uIFA1NF9TUElcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvS2NvbmZpZy01NS1cXHRkZWZhdWx0IG5cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9LY29uZmlnLTY4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9LY29uZmlnOjY5OmNvbmZpZyBQNTRfTEVEU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9LY29uZmlnLTcwLVxcdGJvb2xcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvS2NvbmZpZzo3MTpcXHRkZXBlbmRzIG9uIFA1NF9DT01NT04gXFx1MDAyNlxcdTAwMjYgTUFDODAyMTFfTEVEUyBcXHUwMDI2XFx1MDAyNiAoTEVEU19DTEFTUyA9IHkgfHwgTEVEU19DTEFTUyA9IFA1NF9DT01NT04pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L0tjb25maWctNzItXFx0ZGVmYXVsdCB5XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvTWFrZWZpbGU9Mj1wNTRjb21tb24tb2Jqc1xcdFxcdFxcdDo9IGVlcHJvbS5vIGZ3aW8ubyB0eHJ4Lm8gbWFpbi5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L01ha2VmaWxlOjM6cDU0Y29tbW9uLSQoQ09ORklHX1A1NF9MRURTKVxcdCs9IGxlZC5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L01ha2VmaWxlLTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L01ha2VmaWxlOjU6b2JqLSQoQ09ORklHX1A1NF9DT01NT04pXFx0Kz0gcDU0Y29tbW9uLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfUDU0X1VTQilcXHRcXHQrPSBwNTR1c2Iub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9NYWtlZmlsZTo3Om9iai0kKENPTkZJR19QNTRfUENJKVxcdFxcdCs9IHA1NHBjaS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L01ha2VmaWxlOjg6b2JqLSQoQ09ORklHX1A1NF9TUEkpXFx0XFx0Kz0gcDU0c3BpLm9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM9Mjc9aW50IHA1NF9wYXJzZV9maXJtd2FyZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpkZXYsIGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZncpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTE1Ni1cXHRcXHRpZiAocHJpdi1cXHUwMDNlZndfdmFyIFxcdTAwM2U9IDB4NTAwKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYzoxNTc6XFx0XFx0XFx0cHJpdi1cXHUwMDNldHhfc3RhdHNbUDU0X1FVRVVFX0FDX1ZPXS5saW1pdCA9IDE2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM6MTU4OlxcdFxcdFxcdHByaXYtXFx1MDAzZXR4X3N0YXRzW1A1NF9RVUVVRV9BQ19WSV0ubGltaXQgPSAxNjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jOjE1OTpcXHRcXHRcXHRwcml2LVxcdTAwM2V0eF9zdGF0c1tQNTRfUVVFVUVfQUNfQkVdLmxpbWl0ID0gMTY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYzoxNjA6XFx0XFx0XFx0cHJpdi1cXHUwMDNldHhfc3RhdHNbUDU0X1FVRVVFX0FDX0JLXS5saW1pdCA9IDE2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtMTYxLVxcdFxcdH0gZWxzZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYzoxNjI6XFx0XFx0XFx0cHJpdi1cXHUwMDNldHhfc3RhdHNbUDU0X1FVRVVFX0FDX1ZPXS5saW1pdCA9IDM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYzoxNjM6XFx0XFx0XFx0cHJpdi1cXHUwMDNldHhfc3RhdHNbUDU0X1FVRVVFX0FDX1ZJXS5saW1pdCA9IDQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYzoxNjQ6XFx0XFx0XFx0cHJpdi1cXHUwMDNldHhfc3RhdHNbUDU0X1FVRVVFX0FDX0JFXS5saW1pdCA9IDM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYzoxNjU6XFx0XFx0XFx0cHJpdi1cXHUwMDNldHhfc3RhdHNbUDU0X1FVRVVFX0FDX0JLXS5saW1pdCA9IDI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy0xNjYtXFx0XFx0fVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM6MTY3OlxcdFxcdHByaXYtXFx1MDAzZWh3LVxcdTAwM2VxdWV1ZXMgPSBQNTRfUVVFVUVfQUNfTlVNO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtMTY4LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM9MjAxPXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqcDU0X2FsbG9jX3NrYihzdHJ1Y3QgcDU0X2NvbW1vbiAqcHJpdiwgdTE2IGhkcl9mbGFncyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtMjA3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM6MjA4OlxcdGlmIChmcmFtZV9sZW4gXFx1MDAzZSBQNTRfTUFYX0NUUkxfRlJBTUVfTEVOKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtMjA5LVxcdFxcdHJldHVybiBOVUxMO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYz0yMjc9aW50IHA1NF9kb3dubG9hZF9lZXByb20oc3RydWN0IHA1NF9jb21tb24gKnByaXYsIHZvaWQgKmJ1ZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtMjQwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM6MjQxOlxcdHNrYiA9IHA1NF9hbGxvY19za2IocHJpdiwgUDU0X0hEUl9GTEFHX0NPTlRST0wsIGVlcHJvbV9oZHJfc2l6ZSArXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYzoyNDI6XFx0XFx0XFx0ICAgIGxlbiwgUDU0X0NPTlRST0xfVFlQRV9FRVBST01fUkVBREJBQ0ssXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy0yNDMtXFx0XFx0XFx0ICAgIEdGUF9LRVJORUwpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYz0yNzc9aW50IHA1NF91cGRhdGVfYmVhY29uX3RpbShzdHJ1Y3QgcDU0X2NvbW1vbiAqcHJpdiwgdTE2IGFpZCwgYm9vbCBzZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTI4MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jOjI4MjpcXHRza2IgPSBwNTRfYWxsb2Nfc2tiKHByaXYsIFA1NF9IRFJfRkxBR19DT05UUk9MX09QU0VULCBzaXplb2YoKnRpbSksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYzoyODM6XFx0XFx0XFx0ICAgIFA1NF9DT05UUk9MX1RZUEVfVElNLCBHRlBfQVRPTUlDKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTI4NC1cXHRpZiAodW5saWtlbHkoIXNrYikpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jPTI5ND1pbnQgcDU0X3N0YV91bmxvY2soc3RydWN0IHA1NF9jb21tb24gKnByaXYsIHU4ICphZGRyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy0yOTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYzoyOTk6XFx0c2tiID0gcDU0X2FsbG9jX3NrYihwcml2LCBQNTRfSERSX0ZMQUdfQ09OVFJPTF9PUFNFVCwgc2l6ZW9mKCpzdGEpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM6MzAwOlxcdFxcdFxcdCAgICBQNTRfQ09OVFJPTF9UWVBFX1BTTV9TVEFfVU5MT0NLLCBHRlBfQVRPTUlDKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTMwMS1cXHRpZiAodW5saWtlbHkoIXNrYikpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jPTMxMD1pbnQgcDU0X3R4X2NhbmNlbChzdHJ1Y3QgcDU0X2NvbW1vbiAqcHJpdiwgX19sZTMyIHJlcV9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtMzE4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM6MzE5OlxcdHNrYiA9IHA1NF9hbGxvY19za2IocHJpdiwgUDU0X0hEUl9GTEFHX0NPTlRST0xfT1BTRVQsIHNpemVvZigqY2FuY2VsKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jOjMyMDpcXHRcXHRcXHQgICAgUDU0X0NPTlRST0xfVFlQRV9UWENBTkNFTCwgR0ZQX0FUT01JQyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy0zMjEtXFx0aWYgKHVubGlrZWx5KCFza2IpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYz0zMzA9aW50IHA1NF9zZXR1cF9tYWMoc3RydWN0IHA1NF9jb21tb24gKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTMzNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jOjMzNjpcXHRza2IgPSBwNTRfYWxsb2Nfc2tiKHByaXYsIFA1NF9IRFJfRkxBR19DT05UUk9MX09QU0VULCBzaXplb2YoKnNldHVwKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jOjMzNzpcXHRcXHRcXHQgICAgUDU0X0NPTlRST0xfVFlQRV9TRVRVUCwgR0ZQX0FUT01JQyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy0zMzgtXFx0aWYgKCFza2IpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTM0NC1cXHRcXHRjYXNlIE5MODAyMTFfSUZUWVBFX1NUQVRJT046XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYzozNDU6XFx0XFx0XFx0bW9kZSA9IFA1NF9GSUxURVJfVFlQRV9TVEFUSU9OO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtMzQ2LVxcdFxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtMzQ3LVxcdFxcdGNhc2UgTkw4MDIxMV9JRlRZUEVfQVA6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYzozNDg6XFx0XFx0XFx0bW9kZSA9IFA1NF9GSUxURVJfVFlQRV9BUDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTM0OS1cXHRcXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtMzUxLVxcdFxcdGNhc2UgTkw4MDIxMV9JRlRZUEVfTUVTSF9QT0lOVDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jOjM1MjpcXHRcXHRcXHRtb2RlID0gUDU0X0ZJTFRFUl9UWVBFX0lCU1M7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy0zNTMtXFx0XFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy0zNTQtXFx0XFx0Y2FzZSBOTDgwMjExX0lGVFlQRV9NT05JVE9SOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM6MzU1OlxcdFxcdFxcdG1vZGUgPSBQNTRfRklMVEVSX1RZUEVfUFJPTUlTQ1VPVVM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy0zNTYtXFx0XFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy0zNTctXFx0XFx0ZGVmYXVsdDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jOjM1ODpcXHRcXHRcXHRtb2RlID0gUDU0X0ZJTFRFUl9UWVBFX0hJQkVSTkFURTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTM1OS1cXHRcXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtMzY2LVxcdFxcdGlmIChwcml2LVxcdTAwM2VmaWx0ZXJfZmxhZ3MgXFx1MDAyNiBGSUZfT1RIRVJfQlNTIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYzozNjc6XFx0XFx0ICAgIChtb2RlICE9IFA1NF9GSUxURVJfVFlQRV9QUk9NSVNDVU9VUykpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYzozNjg6XFx0XFx0XFx0bW9kZSB8PSBQNTRfRklMVEVSX1RZUEVfVFJBTlNQQVJFTlQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy0zNjktXFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jOjM3MDpcXHRcXHRtb2RlID0gUDU0X0ZJTFRFUl9UWVBFX0hJQkVSTkFURTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTM3MS1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTQwMS1cXHRwNTRfdHgocHJpdiwgc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jOjQwMjpcXHRwcml2LVxcdTAwM2VwaHlfaWRsZSA9IG1vZGUgPT0gUDU0X0ZJTFRFUl9UWVBFX0hJQkVSTkFURTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTQwMy1cXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM9NDA2PWludCBwNTRfc2NhbihzdHJ1Y3QgcDU0X2NvbW1vbiAqcHJpdiwgdTE2IG1vZGUsIHUxNiBkd2VsbClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtNDE5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM6NDIwOlxcdHNrYiA9IHA1NF9hbGxvY19za2IocHJpdiwgUDU0X0hEUl9GTEFHX0NPTlRST0xfT1BTRVQsIHNpemVvZigqaGVhZCkgK1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtNDIxLVxcdFxcdFxcdCAgICAyICsgc2l6ZW9mKCppcV9hdXRvY2FsKSArIHNpemVvZigqYm9keSkgK1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtNDIyLVxcdFxcdFxcdCAgICBzaXplb2YoKnJhdGUpICsgMiAqIHNpemVvZigqcnNzaSksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYzo0MjM6XFx0XFx0XFx0ICAgIFA1NF9DT05UUk9MX1RZUEVfU0NBTiwgR0ZQX0FUT01JQyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy00MjQtXFx0aWYgKCFza2IpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jPTU1ND1pbnQgcDU0X3NldF9sZWRzKHN0cnVjdCBwNTRfY29tbW9uICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy01NTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYzo1NTk6XFx0c2tiID0gcDU0X2FsbG9jX3NrYihwcml2LCBQNTRfSERSX0ZMQUdfQ09OVFJPTF9PUFNFVCwgc2l6ZW9mKCpsZWQpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM6NTYwOlxcdFxcdFxcdCAgICBQNTRfQ09OVFJPTF9UWVBFX0xFRCwgR0ZQX0FUT01JQyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy01NjEtXFx0aWYgKHVubGlrZWx5KCFza2IpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYz01NzM9aW50IHA1NF9zZXRfZWRjZihzdHJ1Y3QgcDU0X2NvbW1vbiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtNTc4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM6NTc5OlxcdHNrYiA9IHA1NF9hbGxvY19za2IocHJpdiwgUDU0X0hEUl9GTEFHX0NPTlRST0xfT1BTRVQsIHNpemVvZigqZWRjZiksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYzo1ODA6XFx0XFx0XFx0ICAgIFA1NF9DT05UUk9MX1RZUEVfRENGSU5JVCwgR0ZQX0FUT01JQyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy01ODEtXFx0aWYgKHVubGlrZWx5KCFza2IpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYz02MTA9aW50IHA1NF9zZXRfcHMoc3RydWN0IHA1NF9jb21tb24gKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTYxOC1cXHQgICAgIXByaXYtXFx1MDAzZXBvd2Vyc2F2ZV9vdmVycmlkZSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jOjYxOTpcXHRcXHRtb2RlID0gUDU0X1BTTSB8IFA1NF9QU01fQkVBQ09OX1RJTUVPVVQgfCBQNTRfUFNNX0RUSU0gfFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM6NjIwOlxcdFxcdCAgICAgICBQNTRfUFNNX0NIRUNLU1VNIHwgUDU0X1BTTV9NQ0JDO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtNjIxLVxcdGVsc2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jOjYyMjpcXHRcXHRtb2RlID0gUDU0X1BTTV9DQU07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy02MjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYzo2MjQ6XFx0c2tiID0gcDU0X2FsbG9jX3NrYihwcml2LCBQNTRfSERSX0ZMQUdfQ09OVFJPTF9PUFNFVCwgc2l6ZW9mKCpwc20pLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM6NjI1OlxcdFxcdFxcdCAgICBQNTRfQ09OVFJPTF9UWVBFX1BTTSwgR0ZQX0FUT01JQyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy02MjYtXFx0aWYgKCFza2IpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTY0My1cXHRwNTRfdHgocHJpdiwgc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jOjY0NDpcXHRwcml2LVxcdTAwM2VwaHlfcHMgPSBtb2RlICE9IFA1NF9QU01fQ0FNO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtNjQ1LVxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYz02NDg9aW50IHA1NF9pbml0X3hib3dfc3ludGgoc3RydWN0IHA1NF9jb21tb24gKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTY1Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jOjY1MzpcXHRza2IgPSBwNTRfYWxsb2Nfc2tiKHByaXYsIFA1NF9IRFJfRkxBR19DT05UUk9MX09QU0VULCBzaXplb2YoKnhib3cpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM6NjU0OlxcdFxcdFxcdCAgICBQNTRfQ09OVFJPTF9UWVBFX1hCT1dfU1lOVEhfQ0ZHLCBHRlBfS0VSTkVMKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTY1NS1cXHRpZiAodW5saWtlbHkoIXNrYikpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jPTY2Nz1pbnQgcDU0X3VwbG9hZF9rZXkoc3RydWN0IHA1NF9jb21tb24gKnByaXYsIHU4IGFsZ28sIGludCBzbG90LCB1OCBpZHgsIHU4IGxlbixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtNjcyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM6NjczOlxcdHNrYiA9IHA1NF9hbGxvY19za2IocHJpdiwgUDU0X0hEUl9GTEFHX0NPTlRST0xfT1BTRVQsIHNpemVvZigqcnhrZXkpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM6Njc0OlxcdFxcdFxcdCAgICBQNTRfQ09OVFJPTF9UWVBFX1JYX0tFWUNBQ0hFLCBHRlBfS0VSTkVMKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTY3NS1cXHRpZiAodW5saWtlbHkoIXNrYikpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTY4Ny1cXHRzd2l0Y2ggKGFsZ28pIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jOjY4ODpcXHRjYXNlIFA1NF9DUllQVE9fV0VQOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM6Njg5OlxcdGNhc2UgUDU0X0NSWVBUT19BRVNDQ01QOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtNjkwLVxcdFxcdHJ4a2V5LVxcdTAwM2VrZXlfbGVuID0gbWluX3QodTgsIDE2LCBsZW4pO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy02OTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYzo2OTQ6XFx0Y2FzZSBQNTRfQ1JZUFRPX1RLSVBNSUNIQUVMOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtNjk1LVxcdFxcdHJ4a2V5LVxcdTAwM2VrZXlfbGVuID0gMjQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTcwMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jOjcwMTpcXHRjYXNlIFA1NF9DUllQVE9fTk9ORTpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTcwMi1cXHRcXHRyeGtleS1cXHUwMDNla2V5X2xlbiA9IDA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jPTcxNz1pbnQgcDU0X2ZldGNoX3N0YXRpc3RpY3Moc3RydWN0IHA1NF9jb21tb24gKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTcyMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jOjcyMzpcXHRza2IgPSBwNTRfYWxsb2Nfc2tiKHByaXYsIFA1NF9IRFJfRkxBR19DT05UUk9MLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtNzI0LVxcdFxcdFxcdCAgICBzaXplb2Yoc3RydWN0IHA1NF9zdGF0aXN0aWNzKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jOjcyNTpcXHRcXHRcXHQgICAgUDU0X0NPTlRST0xfVFlQRV9TVEFUX1JFQURCQUNLLCBHRlBfS0VSTkVMKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTcyNi1cXHRpZiAoIXNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM9NzQ3PWludCBwNTRfc2V0X2dyb3VwZmlsdGVyKHN0cnVjdCBwNTRfY29tbW9uICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy03NTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYzo3NTM6XFx0c2tiID0gcDU0X2FsbG9jX3NrYihwcml2LCBQNTRfSERSX0ZMQUdfQ09OVFJPTF9PUFNFVCwgc2l6ZW9mKCpncnApLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM6NzU0OlxcdFxcdFxcdCAgICBQNTRfQ09OVFJPTF9UWVBFX0dST1VQX0FERFJFU1NfVEFCTEUsIEdGUF9LRVJORUwpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtNzU1LVxcdGlmICghc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xlZC5jLTE5LSNpbmNsdWRlIFxcdTAwM2NuZXQvbWFjODAyMTEuaFxcdTAwM2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbGVkLmM6MjA6I2lmZGVmIENPTkZJR19QNTRfTEVEU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sZWQuYy0yMS0jaW5jbHVkZSBcXHUwMDNjbGludXgvbGVkcy5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sZWQuYzoyMjojZW5kaWYgLyogQ09ORklHX1A1NF9MRURTICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xlZC5jLTIzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaD0xOT1lbnVtIHA1NF9jb250cm9sX2ZyYW1lX3R5cGVzIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjIwOlxcdFA1NF9DT05UUk9MX1RZUEVfU0VUVVAgPSAwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MjE6XFx0UDU0X0NPTlRST0xfVFlQRV9TQ0FOLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MjI6XFx0UDU0X0NPTlRST0xfVFlQRV9UUkFQLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MjM6XFx0UDU0X0NPTlRST0xfVFlQRV9EQ0ZJTklULFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MjQ6XFx0UDU0X0NPTlRST0xfVFlQRV9SWF9LRVlDQUNIRSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjI1OlxcdFA1NF9DT05UUk9MX1RZUEVfVElNLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MjY6XFx0UDU0X0NPTlRST0xfVFlQRV9QU00sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoyNzpcXHRQNTRfQ09OVFJPTF9UWVBFX1RYQ0FOQ0VMLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6Mjg6XFx0UDU0X0NPTlRST0xfVFlQRV9UWERPTkUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoyOTpcXHRQNTRfQ09OVFJPTF9UWVBFX0JVUlNULFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MzA6XFx0UDU0X0NPTlRST0xfVFlQRV9TVEFUX1JFQURCQUNLLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MzE6XFx0UDU0X0NPTlRST0xfVFlQRV9CQlAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDozMjpcXHRQNTRfQ09OVFJPTF9UWVBFX0VFUFJPTV9SRUFEQkFDSyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjMzOlxcdFA1NF9DT05UUk9MX1RZUEVfTEVELFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MzQ6XFx0UDU0X0NPTlRST0xfVFlQRV9HUElPLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MzU6XFx0UDU0X0NPTlRST0xfVFlQRV9USU1FUixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjM2OlxcdFA1NF9DT05UUk9MX1RZUEVfTU9EVUxBVElPTixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjM3OlxcdFA1NF9DT05UUk9MX1RZUEVfU1lOVEhfQ09ORklHLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6Mzg6XFx0UDU0X0NPTlRST0xfVFlQRV9ERVRFQ1RPUl9WQUxVRSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjM5OlxcdFA1NF9DT05UUk9MX1RZUEVfWEJPV19TWU5USF9DRkcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDo0MDpcXHRQNTRfQ09OVFJPTF9UWVBFX0NDRV9RVUlFVCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjQxOlxcdFA1NF9DT05UUk9MX1RZUEVfUFNNX1NUQV9VTkxPQ0ssXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDo0MjpcXHRQNTRfQ09OVFJPTF9UWVBFX1BDUyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjQzOlxcdFA1NF9DT05UUk9MX1RZUEVfQlRfQkFMQU5DRVIgPSAyOCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjQ0OlxcdFA1NF9DT05UUk9MX1RZUEVfR1JPVVBfQUREUkVTU19UQUJMRSA9IDMwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6NDU6XFx0UDU0X0NPTlRST0xfVFlQRV9BUlBUQUJMRSA9IDMxLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6NDY6XFx0UDU0X0NPTlRST0xfVFlQRV9CVF9PUFRJT05TID0gMzUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaC00Ny19O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmgtNDgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDo0OTojZGVmaW5lIFA1NF9IRFJfRkxBR19DT05UUk9MXFx0XFx0QklUKDE1KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6NTA6I2RlZmluZSBQNTRfSERSX0ZMQUdfQ09OVFJPTF9PUFNFVFxcdChCSVQoMTUpICsgQklUKDApKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6NTE6I2RlZmluZSBQNTRfSERSX0ZMQUdfREFUQV9BTElHTlxcdFxcdEJJVCgxNClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oLTUyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6NTM6I2RlZmluZSBQNTRfSERSX0ZMQUdfREFUQV9PVVRfUFJPTUlTQ1xcdFxcdEJJVCgwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6NTQ6I2RlZmluZSBQNTRfSERSX0ZMQUdfREFUQV9PVVRfVElNRVNUQU1QXFx0XFx0QklUKDEpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDo1NTojZGVmaW5lIFA1NF9IRFJfRkxBR19EQVRBX09VVF9TRVFOUlxcdFxcdEJJVCgyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6NTY6I2RlZmluZSBQNTRfSERSX0ZMQUdfREFUQV9PVVRfQklUM1xcdFxcdEJJVCgzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6NTc6I2RlZmluZSBQNTRfSERSX0ZMQUdfREFUQV9PVVRfQlVSU1RcXHRcXHRCSVQoNClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjU4OiNkZWZpbmUgUDU0X0hEUl9GTEFHX0RBVEFfT1VUX05PQ0FOQ0VMXFx0XFx0QklUKDUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDo1OTojZGVmaW5lIFA1NF9IRFJfRkxBR19EQVRBX09VVF9DTEVBUlRJTVxcdFxcdEJJVCg2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6NjA6I2RlZmluZSBQNTRfSERSX0ZMQUdfREFUQV9PVVRfSElUQ0hISUtFXFx0XFx0QklUKDcpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDo2MTojZGVmaW5lIFA1NF9IRFJfRkxBR19EQVRBX09VVF9DT01QUkVTU1xcdFxcdEJJVCg4KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6NjI6I2RlZmluZSBQNTRfSERSX0ZMQUdfREFUQV9PVVRfQ09OQ0FUXFx0XFx0QklUKDkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDo2MzojZGVmaW5lIFA1NF9IRFJfRkxBR19EQVRBX09VVF9QQ1NfQUNDRVBUXFx0QklUKDEwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6NjQ6I2RlZmluZSBQNTRfSERSX0ZMQUdfREFUQV9PVVRfV0FJVEVPU1BcXHRcXHRCSVQoMTEpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaC02NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjY2OiNkZWZpbmUgUDU0X0hEUl9GTEFHX0RBVEFfSU5fRkNTX0dPT0RcXHRcXHRCSVQoMClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjY3OiNkZWZpbmUgUDU0X0hEUl9GTEFHX0RBVEFfSU5fTUFUQ0hfTUFDXFx0XFx0QklUKDEpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDo2ODojZGVmaW5lIFA1NF9IRFJfRkxBR19EQVRBX0lOX01DQkNcXHRcXHRCSVQoMilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjY5OiNkZWZpbmUgUDU0X0hEUl9GTEFHX0RBVEFfSU5fQkVBQ09OXFx0XFx0QklUKDMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDo3MDojZGVmaW5lIFA1NF9IRFJfRkxBR19EQVRBX0lOX01BVENIX0JTU1xcdFxcdEJJVCg0KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6NzE6I2RlZmluZSBQNTRfSERSX0ZMQUdfREFUQV9JTl9CQ0FTVF9CU1NcXHRcXHRCSVQoNSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjcyOiNkZWZpbmUgUDU0X0hEUl9GTEFHX0RBVEFfSU5fREFUQVxcdFxcdEJJVCg2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6NzM6I2RlZmluZSBQNTRfSERSX0ZMQUdfREFUQV9JTl9UUlVOQ0FURURcXHRcXHRCSVQoNylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjc0OiNkZWZpbmUgUDU0X0hEUl9GTEFHX0RBVEFfSU5fQklUOFxcdFxcdEJJVCg4KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6NzU6I2RlZmluZSBQNTRfSERSX0ZMQUdfREFUQV9JTl9UUkFOU1BBUkVOVFxcdEJJVCg5KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmgtNzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaD03Nz1zdHJ1Y3QgcDU0X2hkciB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oLTkxLVxcdCgoKChzdHJ1Y3QgcDU0X2hkciAqKSAoKHN0cnVjdCBza19idWZmICopIHNrYiktXFx1MDAzZWRhdGEpLVxcdTAwM2VcXHRcXHRcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDo5MjpcXHRmbGFncykgPT0gY3B1X3RvX2xlMTYoUDU0X0hEUl9GTEFHX0NPTlRST0xfT1BTRVQpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmgtOTMtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oLTk1LVxcdCghKCgoKHN0cnVjdCBwNTRfaGRyICopICgoc3RydWN0IHNrX2J1ZmYgKikgc2tiKS1cXHUwMDNlZGF0YSktXFx1MDAzZVxcdFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjk2OlxcdGZsYWdzKSBcXHUwMDI2IGNwdV90b19sZTE2KFA1NF9IRFJfRkxBR19DT05UUk9MKSkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaC05Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg9MTUzPWVudW0gcDU0X3J4X2RlY3J5cHRfc3RhdHVzIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjE1NDpcXHRQNTRfREVDUllQVF9OT05FID0gMCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjE1NTpcXHRQNTRfREVDUllQVF9PSyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjE1NjpcXHRQNTRfREVDUllQVF9OT0tFWSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjE1NzpcXHRQNTRfREVDUllQVF9OT01JQ0hBRUwsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoxNTg6XFx0UDU0X0RFQ1JZUFRfTk9DS0lQTUlDLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MTU5OlxcdFA1NF9ERUNSWVBUX0ZBSUxfV0VQLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MTYwOlxcdFA1NF9ERUNSWVBUX0ZBSUxfVEtJUCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjE2MTpcXHRQNTRfREVDUllQVF9GQUlMX01JQ0hBRUwsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoxNjI6XFx0UDU0X0RFQ1JZUFRfRkFJTF9DS0lQS1AsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoxNjM6XFx0UDU0X0RFQ1JZUFRfRkFJTF9DS0lQTUlDLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MTY0OlxcdFA1NF9ERUNSWVBUX0ZBSUxfQUVTQ0NNUFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmgtMTY1LX07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oPTE4Mj1lbnVtIHA1NF90cmFwX3R5cGUge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MTgzOlxcdFA1NF9UUkFQX1NDQU4gPSAwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MTg0OlxcdFA1NF9UUkFQX1RJTUVSLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MTg1OlxcdFA1NF9UUkFQX0JFQUNPTl9UWCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjE4NjpcXHRQNTRfVFJBUF9GQUFfUkFESU9fT04sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoxODc6XFx0UDU0X1RSQVBfRkFBX1JBRElPX09GRixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjE4ODpcXHRQNTRfVFJBUF9SQURBUixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjE4OTpcXHRQNTRfVFJBUF9OT19CRUFDT04sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoxOTA6XFx0UDU0X1RSQVBfVEJUVCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjE5MTpcXHRQNTRfVFJBUF9TQ09fRU5URVIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoxOTI6XFx0UDU0X1RSQVBfU0NPX0VYSVRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oLTE5My19O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaD0yMDA9ZW51bSBwNTRfZnJhbWVfc2VudF9zdGF0dXMge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MjAxOlxcdFA1NF9UWF9PSyA9IDAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoyMDI6XFx0UDU0X1RYX0ZBSUxFRCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjIwMzpcXHRQNTRfVFhfUFNNLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MjA0OlxcdFA1NF9UWF9QU01fQ0FOQ0VMTEVEID0gNFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmgtMjA1LX07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oPTIxNz1lbnVtIHA1NF90eF9kYXRhX2NyeXB0IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjIxODpcXHRQNTRfQ1JZUFRPX05PTkUgPSAwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MjE5OlxcdFA1NF9DUllQVE9fV0VQLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MjIwOlxcdFA1NF9DUllQVE9fVEtJUCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjIyMTpcXHRQNTRfQ1JZUFRPX1RLSVBNSUNIQUVMLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MjIyOlxcdFA1NF9DUllQVE9fQ0NYX1dFUE1JQyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjIyMzpcXHRQNTRfQ1JZUFRPX0NDWF9LUE1JQyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjIyNDpcXHRQNTRfQ1JZUFRPX0NDWF9LUCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjIyNTpcXHRQNTRfQ1JZUFRPX0FFU0NDTVBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oLTIyNi19O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaD0yMjg9ZW51bSBwNTRfdHhfZGF0YV9xdWV1ZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoyMjk6XFx0UDU0X1FVRVVFX0JFQUNPTlxcdD0gMCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjIzMDpcXHRQNTRfUVVFVUVfRldTQ0FOXFx0PSAxLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MjMxOlxcdFA1NF9RVUVVRV9NR01UXFx0XFx0PSAyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MjMyOlxcdFA1NF9RVUVVRV9DQUJcXHRcXHQ9IDMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoyMzM6XFx0UDU0X1FVRVVFX0RBVEFcXHRcXHQ9IDQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaC0yMzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoyMzU6XFx0UDU0X1FVRVVFX0FDX05VTVxcdD0gNCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjIzNjpcXHRQNTRfUVVFVUVfQUNfVk9cXHRcXHQ9IDQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoyMzc6XFx0UDU0X1FVRVVFX0FDX1ZJXFx0XFx0PSA1LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MjM4OlxcdFA1NF9RVUVVRV9BQ19CRVxcdFxcdD0gNixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjIzOTpcXHRQNTRfUVVFVUVfQUNfQktcXHRcXHQ9IDcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaC0yNDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaC0yNDEtXFx0Lyoga2VlcCBsYXN0ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoyNDI6XFx0UDU0X1FVRVVFX05VTVxcdFxcdD0gOCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oLTI0My19O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmgtMjQ0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MjQ1OiNkZWZpbmUgSVNfUU9TX1FVRVVFKG4pXFx0KG4gXFx1MDAzZT0gUDU0X1FVRVVFX0RBVEEpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaC0yNDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaD0yNDc9c3RydWN0IHA1NF90eF9kYXRhIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmgtMjczLS8qIHVuaXQgaXMgbXMgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjI3NDojZGVmaW5lIFA1NF9UWF9GUkFNRV9MSUZFVElNRSAyMDAwXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoyNzU6I2RlZmluZSBQNTRfVFhfVElNRU9VVCA0MDAwXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoyNzY6I2RlZmluZSBQNTRfU1RBVElTVElDU19VUERBVEUgNTAwMFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmgtMjc3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6Mjc4OiNkZWZpbmUgUDU0X0ZJTFRFUl9UWVBFX05PTkVcXHRcXHQwXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoyNzk6I2RlZmluZSBQNTRfRklMVEVSX1RZUEVfU1RBVElPTlxcdFxcdEJJVCgwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MjgwOiNkZWZpbmUgUDU0X0ZJTFRFUl9UWVBFX0lCU1NcXHRcXHRCSVQoMSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjI4MTojZGVmaW5lIFA1NF9GSUxURVJfVFlQRV9BUFxcdFxcdEJJVCgyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MjgyOiNkZWZpbmUgUDU0X0ZJTFRFUl9UWVBFX1RSQU5TUEFSRU5UXFx0QklUKDMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoyODM6I2RlZmluZSBQNTRfRklMVEVSX1RZUEVfUFJPTUlTQ1VPVVNcXHRCSVQoNClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjI4NDojZGVmaW5lIFA1NF9GSUxURVJfVFlQRV9ISUJFUk5BVEVcXHRCSVQoNSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjI4NTojZGVmaW5lIFA1NF9GSUxURVJfVFlQRV9OT0FDS1xcdFxcdEJJVCg2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6Mjg2OiNkZWZpbmUgUDU0X0ZJTFRFUl9UWVBFX1JYX0RJU0FCTEVEXFx0QklUKDcpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaC0yODctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaD0yODg9c3RydWN0IHA1NF9zZXR1cF9tYWMge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaC0zMjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDozMjI6I2RlZmluZSBQNTRfU0VUVVBfVjFfTEVOIDQwXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDozMjM6I2RlZmluZSBQNTRfU0VUVVBfVjJfTEVOIChzaXplb2Yoc3RydWN0IHA1NF9zZXR1cF9tYWMpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmgtMzI0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MzI1OiNkZWZpbmUgUDU0X1NDQU5fRVhJVFxcdEJJVCgwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MzI2OiNkZWZpbmUgUDU0X1NDQU5fVFJBUFxcdEJJVCgxKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MzI3OiNkZWZpbmUgUDU0X1NDQU5fQUNUSVZFIEJJVCgyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MzI4OiNkZWZpbmUgUDU0X1NDQU5fRklMVEVSIEJJVCgzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmgtMzI5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaD00NTQ9c3RydWN0IHA1NF9wc21faW50ZXJ2YWwge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaC00NTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDo0NTk6I2RlZmluZSBQNTRfUFNNX0NBTVxcdFxcdFxcdDBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjQ2MDojZGVmaW5lIFA1NF9QU01cXHRcXHRcXHRcXHRCSVQoMClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjQ2MTojZGVmaW5lIFA1NF9QU01fRFRJTVxcdFxcdFxcdEJJVCgxKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6NDYyOiNkZWZpbmUgUDU0X1BTTV9NQ0JDXFx0XFx0XFx0QklUKDIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDo0NjM6I2RlZmluZSBQNTRfUFNNX0NIRUNLU1VNXFx0XFx0QklUKDMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDo0NjQ6I2RlZmluZSBQNTRfUFNNX1NLSVBfTU9SRV9EQVRBXFx0XFx0QklUKDQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDo0NjU6I2RlZmluZSBQNTRfUFNNX0JFQUNPTl9USU1FT1VUXFx0XFx0QklUKDUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDo0NjY6I2RlZmluZSBQNTRfUFNNX0hGT1NMRUVQXFx0XFx0QklUKDYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDo0Njc6I2RlZmluZSBQNTRfUFNNX0FVVE9TV0lUQ0hfU0xFRVBcXHRCSVQoNylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjQ2ODojZGVmaW5lIFA1NF9QU01fTFBJVFxcdFxcdFxcdEJJVCg4KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6NDY5OiNkZWZpbmUgUDU0X1BTTV9CRl9VQ0FTVF9TS0lQXFx0XFx0QklUKDkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDo0NzA6I2RlZmluZSBQNTRfUFNNX0JGX01DQVNUX1NLSVBcXHRcXHRCSVQoMTApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaC00NzEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oPTQ5ND1zdHJ1Y3QgcDU0X3N0YV91bmxvY2sge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaC00OTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDo0OTk6I2RlZmluZSBQNTRfVElNX0NMRUFSIEJJVCgxNSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oLTUwMC1zdHJ1Y3QgcDU0X3RpbSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jPTE2Nz1zdGF0aWMgaW50IHA1NF9zdGFydChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jLTE3NS1cXHRcXHRnb3RvIG91dDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jOjE3NjpcXHRQNTRfU0VUX1FVRVVFKHByaXYtXFx1MDAzZXFvc19wYXJhbXNbMF0sIDB4MDAwMiwgMHgwMDAzLCAweDAwMDcsIDQ3KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jOjE3NzpcXHRQNTRfU0VUX1FVRVVFKHByaXYtXFx1MDAzZXFvc19wYXJhbXNbMV0sIDB4MDAwMiwgMHgwMDA3LCAweDAwMGYsIDk0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jOjE3ODpcXHRQNTRfU0VUX1FVRVVFKHByaXYtXFx1MDAzZXFvc19wYXJhbXNbMl0sIDB4MDAwMywgMHgwMDBmLCAweDAzZmYsIDApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmM6MTc5OlxcdFA1NF9TRVRfUVVFVUUocHJpdi1cXHUwMDNlcW9zX3BhcmFtc1szXSwgMHgwMDA3LCAweDAwMGYsIDB4MDNmZiwgMCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYy0xODAtXFx0ZXJyID0gcDU0X3NldF9lZGNmKHByaXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYz0yMDI9c3RhdGljIHZvaWQgcDU0X3N0b3Aoc3RydWN0IGllZWU4MDIxMV9odyAqZGV2LCBib29sIHN1c3BlbmQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jLTIxNC1cXHRza2JfcXVldWVfcHVyZ2UoXFx1MDAyNnByaXYtXFx1MDAzZXR4X3F1ZXVlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jOjIxNTpcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgUDU0X1FVRVVFX05VTTsgaSsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYy0yMTYtXFx0XFx0cHJpdi1cXHUwMDNldHhfc3RhdHNbaV0uY291bnQgPSAwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYz0zMTg9c3RhdGljIGludCBwNTRfY29uZmlnKHN0cnVjdCBpZWVlODAyMTFfaHcgKmRldiwgaW50IHJhZGlvX2lkeCwgdTMyIGNoYW5nZWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jLTMzMS1cXHRcXHRwcml2LVxcdTAwM2VjdXJjaGFuID0gTlVMTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jOjMzMjpcXHRcXHRyZXQgPSBwNTRfc2Nhbihwcml2LCBQNTRfU0NBTl9FWElULCAwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jLTMzMy1cXHRcXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jPTQwOD1zdGF0aWMgaW50IHA1NF9jb25mX3R4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmMtNDE2LVxcdG11dGV4X2xvY2soXFx1MDAyNnByaXYtXFx1MDAzZWNvbmZfbXV0ZXgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmM6NDE3OlxcdFA1NF9TRVRfUVVFVUUocHJpdi1cXHUwMDNlcW9zX3BhcmFtc1txdWV1ZV0sIHBhcmFtcy1cXHUwMDNlYWlmcyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jLTQxOC1cXHRcXHQgICAgICBwYXJhbXMtXFx1MDAzZWN3X21pbiwgcGFyYW1zLVxcdTAwM2Vjd19tYXgsIHBhcmFtcy1cXHUwMDNldHhvcCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jPTQ1Mj1zdGF0aWMgdm9pZCBwNTRfYnNzX2luZm9fY2hhbmdlZChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jLTQ2NS1cXHRpZiAoY2hhbmdlZCBcXHUwMDI2IEJTU19DSEFOR0VEX0JFQUNPTikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmM6NDY2OlxcdFxcdHA1NF9zY2FuKHByaXYsIFA1NF9TQ0FOX0VYSVQsIDApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmMtNDY3LVxcdFxcdHA1NF9zZXR1cF9tYWMocHJpdik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jLTQ4Mi1cXHRcXHRpZiAocHJpdi1cXHUwMDNlZndfdmFyIFxcdTAwM2U9IDB4NTAwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmM6NDgzOlxcdFxcdFxcdHA1NF9zY2FuKHByaXYsIFA1NF9TQ0FOX0VYSVQsIDApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmMtNDg0LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmM9NTAwPXN0YXRpYyBpbnQgcDU0X3NldF9rZXkoc3RydWN0IGllZWU4MDIxMV9odyAqZGV2LCBlbnVtIHNldF9rZXlfY21kIGNtZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmMtNTMyLVxcdFxcdFxcdGtleS1cXHUwMDNlZmxhZ3MgfD0gSUVFRTgwMjExX0tFWV9GTEFHX0dFTkVSQVRFX0lWO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmM6NTMzOlxcdFxcdFxcdGFsZ28gPSBQNTRfQ1JZUFRPX1RLSVBNSUNIQUVMO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmMtNTM0LVxcdFxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYy01NDEtXFx0XFx0XFx0a2V5LVxcdTAwM2VmbGFncyB8PSBJRUVFODAyMTFfS0VZX0ZMQUdfR0VORVJBVEVfSVY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYzo1NDI6XFx0XFx0XFx0YWxnbyA9IFA1NF9DUllQVE9fV0VQO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmMtNTQzLVxcdFxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYy01NDktXFx0XFx0XFx0a2V5LVxcdTAwM2VmbGFncyB8PSBJRUVFODAyMTFfS0VZX0ZMQUdfR0VORVJBVEVfSVY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYzo1NTA6XFx0XFx0XFx0YWxnbyA9IFA1NF9DUllQVE9fQUVTQ0NNUDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jLTU1MS1cXHRcXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmM9NjUzPXN0YXRpYyB1bnNpZ25lZCBpbnQgcDU0X2ZsdXNoX2NvdW50KHN0cnVjdCBwNTRfY29tbW9uICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYy02NTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYzo2NTc6XFx0QlVJTERfQlVHX09OKFA1NF9RVUVVRV9OVU0gXFx1MDAzZSBBUlJBWV9TSVpFKHByaXYtXFx1MDAzZXR4X3N0YXRzKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYy02NTgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jLTY2MC1cXHQgKiBCZWNhdXNlIHRoZSBmaXJtd2FyZSBoYXMgdGhlIHNvbGUgY29udHJvbCBvdmVyIGFueSBmcmFtZXNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jOjY2MTpcXHQgKiBpbiB0aGUgUDU0X1FVRVVFX0JFQUNPTiBvciBQNTRfUVVFVUVfU0NBTiBxdWV1ZXMsIHRoZXlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jLTY2Mi1cXHQgKiBkb24ndCByZWFsbHkgY291bnQgYXMgcGVuZGluZyBvciBhY3RpdmUuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYy02NjMtXFx0ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYzo2NjQ6XFx0Zm9yIChpID0gUDU0X1FVRVVFX01HTVQ7IGkgXFx1MDAzYyBQNTRfUVVFVUVfTlVNOyBpKyspXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYy02NjUtXFx0XFx0dG90YWwgKz0gcHJpdi1cXHUwMDNldHhfc3RhdHNbaV0ubGVuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYz02Njk9c3RhdGljIHZvaWQgcDU0X2ZsdXNoKHN0cnVjdCBpZWVlODAyMTFfaHcgKmRldiwgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmMtNjgwLVxcdCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmM6NjgxOlxcdGkgPSBQNTRfU1RBVElTVElDU19VUERBVEUgKiAyIC8gMjA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYy02ODItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jPTczNj1zdHJ1Y3QgaWVlZTgwMjExX2h3ICpwNTRfaW5pdF9jb21tb24oc2l6ZV90IHByaXZfZGF0YV9sZW4pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jLTc2NC1cXHRwcml2LVxcdTAwM2ViZWFjb25fcmVxX2lkID0gY3B1X3RvX2xlMzIoMCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYzo3NjU6XFx0cHJpdi1cXHUwMDNldHhfc3RhdHNbUDU0X1FVRVVFX0JFQUNPTl0ubGltaXQgPSAxO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmM6NzY2OlxcdHByaXYtXFx1MDAzZXR4X3N0YXRzW1A1NF9RVUVVRV9GV1NDQU5dLmxpbWl0ID0gMTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jOjc2NzpcXHRwcml2LVxcdTAwM2V0eF9zdGF0c1tQNTRfUVVFVUVfTUdNVF0ubGltaXQgPSAzO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmM6NzY4OlxcdHByaXYtXFx1MDAzZXR4X3N0YXRzW1A1NF9RVUVVRV9DQUJdLmxpbWl0ID0gMztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jOjc2OTpcXHRwcml2LVxcdTAwM2V0eF9zdGF0c1tQNTRfUVVFVUVfREFUQV0ubGltaXQgPSA1O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmMtNzcwLVxcdGRldi1cXHUwMDNlcXVldWVzID0gMTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmM9ODA1PWludCBwNTRfcmVnaXN0ZXJfY29tbW9uKHN0cnVjdCBpZWVlODAyMTFfaHcgKmRldiwgc3RydWN0IGRldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmMtODE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmM6ODE3OiNpZmRlZiBDT05GSUdfUDU0X0xFRFNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jLTgxOC1cXHRlcnIgPSBwNTRfaW5pdF9sZWRzKHByaXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYy04MjItXFx0fVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmM6ODIzOiNlbmRpZiAvKiBDT05GSUdfUDU0X0xFRFMgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jLTgyNC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmM9ODU0PXZvaWQgcDU0X3VucmVnaXN0ZXJfY29tbW9uKHN0cnVjdCBpZWVlODAyMTFfaHcgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmMtODU5LVxcdFxcdHByaXYtXFx1MDAzZXJlZ2lzdGVyZWQgPSBmYWxzZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jOjg2MDojaWZkZWYgQ09ORklHX1A1NF9MRURTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYy04NjEtXFx0XFx0cDU0X3VucmVnaXN0ZXJfbGVkcyhwcml2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jOjg2MjojZW5kaWYgLyogQ09ORklHX1A1NF9MRURTICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYy04NjMtXFx0XFx0aWVlZTgwMjExX3VucmVnaXN0ZXJfaHcoZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9wNTQuaC0xMC1cXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjI6MzU6MTguMjg0NTg5ODI2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjE3MDAyODY1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqVHJhY2luZyB0aGUgRmlybXdhcmUgUGFyc2luZyBGdW5jdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjYWxsIHN0cnVjdHVyZSBvZiBgcDU0X3BhcnNlX2Zpcm13YXJlYC4gVGhpcyBpcyB1c3VhbGx5IHRoZSBmaXJzdCBzdGVwIHdoZW4gSSdtIGRpdmluZyBpbnRvIGEgZmlybXdhcmUgYW5hbHlzaXMgb3IgcmV2ZXJzZSBlbmdpbmVlcmluZyB0YXNrLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgZW50cnkgcG9pbnRzIHRvIHRoYXQgZnVuY3Rpb24uIFdoZXJlIGlzIGl0IGJlaW5nICp1c2VkKj8gRmluZGluZyB0aGUgY2FsbGVycyB3aWxsIGdpdmUgbWUgY3JpdGljYWwgY29udGV4dDogd2hhdCdzIGZlZWRpbmcgZGF0YSBpbnRvIHRoaXMgZnVuY3Rpb24sIHVuZGVyIHdoYXQgY29uZGl0aW9ucyBkb2VzIGl0IGV4ZWN1dGUsIGFuZCB3aGF0IG90aGVyIGNvbXBvbmVudHMgYXJlIGludm9sdmVkIGluIHRoaXMgY3JpdGljYWwgcHJvY2Vzcz8gV2l0aCB0aGlzLCBJIGNhbiBiZWdpbiB0byBncmFzcCB0aGUgYmlnZ2VyIHBpY3R1cmUg4oCTIHdoaWNoIGlzIGVzc2VudGlhbCBmb3IgYW55IGRlZXAgZGl2ZSBvciBkZWJ1Z2dpbmcgZWZmb3J0IGluIHRoaXMgZmlybXdhcmUgc3BhY2UuIEZpbmRpbmcgdGhlIGNhbGxzaXRlcyBmb3IgdGhpcyBwYXJ0aWN1bGFyIGZ1bmN0aW9uIGlzIHRoZSBmaXJzdCwgbmVjZXNzYXJ5IHN0ZXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5MTY0LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjI6MzU6MjAuNDU0NjIxMzMyWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3Nzg3NzIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInA1NF9wYXJzZV9maXJtd2FyZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy0yNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jOjI3OmludCBwNTRfcGFyc2VfZmlybXdhcmUoc3RydWN0IGllZWU4MDIxMV9odyAqZGV2LCBjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtMjgte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy0xOTgtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM6MTk5OkVYUE9SVF9TWU1CT0xfR1BMKHA1NF9wYXJzZV9maXJtd2FyZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy0yMDAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvcDU0Lmg9MjY4PXZvaWQgcDU0X2ZyZWVfc2tiKHN0cnVjdCBpZWVlODAyMTFfaHcgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3A1NC5oOjI2OTppbnQgcDU0X3BhcnNlX2Zpcm13YXJlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmRldiwgY29uc3Qgc3RydWN0IGZpcm13YXJlICpmdyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3A1NC5oLTI3MC1pbnQgcDU0X3BhcnNlX2VlcHJvbShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpkZXYsIHZvaWQgKmVlcHJvbSwgaW50IGxlbik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvcDU0cGNpLmM9NDg9c3RhdGljIGludCBwNTRwX3VwbG9hZF9maXJtd2FyZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvcDU0cGNpLmMtNzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3A1NHBjaS5jOjc5OlxcdGVyciA9IHA1NF9wYXJzZV9maXJtd2FyZShkZXYsIHByaXYtXFx1MDAzZWZpcm13YXJlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvcDU0cGNpLmMtODAtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9wNTRzcGkuYz0xNDA9c3RhdGljIGludCBwNTRzcGlfcmVxdWVzdF9maXJtd2FyZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvcDU0c3BpLmMtMTUyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9wNTRzcGkuYzoxNTM6XFx0cmV0ID0gcDU0X3BhcnNlX2Zpcm13YXJlKGRldiwgcHJpdi1cXHUwMDNlZmlybXdhcmUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9wNTRzcGkuYy0xNTQtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3A1NHVzYi5jPTg2Nz1zdGF0aWMgaW50IHA1NHVfc3RhcnRfb3BzKHN0cnVjdCBwNTR1X3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvcDU0dXNiLmMtODcxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9wNTR1c2IuYzo4NzI6XFx0cmV0ID0gcDU0X3BhcnNlX2Zpcm13YXJlKGRldiwgcHJpdi1cXHUwMDNlZncpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9wNTR1c2IuYy04NzMtXFx0aWYgKHJldClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjI6MzU6MjAuNTAyNDE0MDUxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTU3MzAwNjAwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgcDU0dXNiIERyaXZlcioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbml0aWF0aW9uIG9mIHRoZSBwNTR1c2IgZGV2aWNlIGFuZCBob3cgdGhlIGZpcm13YXJlIGxvYWRpbmcgZ2V0cyBraWNrZWQgb2ZmLiBUaGUgbG9naWNhbCBwbGFjZSB0byBzdGFydCBkaWdnaW5nIGlzIGBwNTR1c2IuY2AuIEknbSBzcGVjaWZpY2FsbHkgbG9va2luZyBmb3Igd2hlcmUgYHA1NHVfc3RhcnRfb3BzYCBnZXRzIGNhbGxlZCwgb3IgbW9yZSBnZW5lcmFsbHksIGhvdyB0aGUgZmlybXdhcmUgaW1hZ2UgZ2V0cyBsb2FkZWQgaW50byB0aGUgZGV2aWNlLiBUaGF0IGZ1bmN0aW9uIGNhbGwgd2lsbCBiZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgY29udHJvbCBmbG93LiBJdCBoYXMgdG8gYmUgaW4gdGhpcyBkcml2ZXIgc29tZXdoZXJlLiBUaW1lIHRvIGdldCB0byB3b3JrLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDE5NSwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIyOjM1OjIyLjA3NTQyMjExN1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDc0NjgwMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicDU0dV9zdGFydF9vcHNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9wNTR1c2IuYz04NTQ9c3RhdGljIGludCBwNTRfZmluZF90eXBlKHN0cnVjdCBwNTR1X3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvcDU0dXNiLmMtODY2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9wNTR1c2IuYzo4Njc6c3RhdGljIGludCBwNTR1X3N0YXJ0X29wcyhzdHJ1Y3QgcDU0dV9wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9wNTR1c2IuYy04Njgte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3A1NHVzYi5jPTkxOT1zdGF0aWMgdm9pZCBwNTR1X2xvYWRfZmlybXdhcmVfY2IoY29uc3Qgc3RydWN0IGZpcm13YXJlICpmaXJtd2FyZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9wNTR1c2IuYy05MjgtXFx0XFx0cHJpdi1cXHUwMDNlZncgPSBmaXJtd2FyZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvcDU0dXNiLmM6OTI5OlxcdFxcdGVyciA9IHA1NHVfc3RhcnRfb3BzKHByaXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9wNTR1c2IuYy05MzAtXFx0fSBlbHNlIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjI6MzU6MjIuMTIyODk2NTc3WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIxNDA5ODU5NTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyB0aGUgRmlybXdhcmUgTG9hZGluZyBDYWxsYmFjayoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBwNTR1X2xvYWRfZmlybXdhcmVfY2JgLCBhbmQgSSBrbm93IHJpZ2h0IGF3YXkgdGhhdCBpdCdzIGFuIGFzeW5jaHJvbm91cyBjYWxsYmFjayBzcGVjaWZpY2FsbHkgZm9yIGhhbmRsaW5nIGZpcm13YXJlIHJlcXVlc3RzLiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBjb250ZXh0IHdpdGhpbiB0aGUgYnJvYWRlciBgcDU0YCBVU0IgZHJpdmVyLiBUbyBkbyB0aGF0IGVmZmVjdGl2ZWx5LCBJJ20gZ29pbmcgdG8gZGl2ZSBpbnRvIHRoZSBzb3VyY2UgY29kZSwgc3BlY2lmaWNhbGx5IGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvcDU0dXNiLmNgLiBJJ2xsIHdhbnQgdG8gZm9jdXMgb24gdGhlIGFyZWEgYXJvdW5kIGBwNTR1X3Byb2JlYCwgYXMgdGhhdCdzIHdoZXJlIHRoZSBkZXZpY2UgaW5pdGlhbGl6YXRpb24gdHlwaWNhbGx5IGhhcHBlbnMsIGFuZCB0aGVuIHRyYWNlIHRoZSBmbG93IGludG8gYHA1NHVfbG9hZF9maXJtd2FyZV9jYmAuIEJ5IHVuZGVyc3RhbmRpbmcgaG93IHRoZSBwcm9iZSBmdW5jdGlvbiBpbnRlcmZhY2VzIHdpdGggdGhlIGZpcm13YXJlIGxvYWRpbmcgY2FsbGJhY2ssIEkgY2FuIG1vcmUgY2xlYXJseSB1bmRlcnN0YW5kIGhvdyB0aGUgZmlybXdhcmUgaXMgbG9hZGVkIGFuZCBoYW5kbGVkIGJ5IHRoZSBkcml2ZXIuIFRoaXMgYXBwcm9hY2ggd2lsbCBnaXZlIG1lIGEgc29saWQgZ3Jhc3Agb2YgdGhlIG92ZXJhbGwgZmlybXdhcmUgbG9hZGluZyBzZXF1ZW5jZSB3aXRoaW4gdGhpcyB3aXJlbGVzcyBkcml2ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNzAzLCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjI6MzU6MjQuMjYzODg2NDUzWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMTA5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvcDU0dXNiLmNcIixcbiAgXCJGaXJzdExpbmVcIjogOTEwLFxuICBcIkxpbmVDb3VudFwiOiA5MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgOTEwOlxcdFxcbiA5MTE6XFx0ZXJyX291dDpcXG4gOTEyOlxcdFxcdC8qXFxuIDkxMzpcXHRcXHQgKiBwNTR1X2Rpc2Nvbm5lY3Qgd2lsbCBkbyB0aGUgcmVzdCBvZiB0aGVcXG4gOTE0OlxcdFxcdCAqIGNsZWFudXBcXG4gOTE1OlxcdFxcdCAqL1xcbiA5MTY6XFx0XFx0cmV0dXJuIHJldDtcXG4gOTE3OlxcdH1cXG4gOTE4OlxcdFxcbiA5MTk6XFx0c3RhdGljIHZvaWQgcDU0dV9sb2FkX2Zpcm13YXJlX2NiKGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZmlybXdhcmUsXFxuIDkyMDpcXHRcXHRcXHRcXHRcXHQgIHZvaWQgKmNvbnRleHQpXFxuIDkyMTpcXHR7XFxuIDkyMjpcXHRcXHRzdHJ1Y3QgcDU0dV9wcml2ICpwcml2ID0gY29udGV4dDtcXG4gOTIzOlxcdFxcdHN0cnVjdCB1c2JfZGV2aWNlICp1ZGV2ID0gcHJpdi1cXHUwMDNldWRldjtcXG4gOTI0OlxcdFxcdHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmID0gcHJpdi1cXHUwMDNlaW50ZjtcXG4gOTI1OlxcdFxcdGludCBlcnI7XFxuIDkyNjpcXHRcXG4gOTI3OlxcdFxcdGlmIChmaXJtd2FyZSkge1xcbiA5Mjg6XFx0XFx0XFx0cHJpdi1cXHUwMDNlZncgPSBmaXJtd2FyZTtcXG4gOTI5OlxcdFxcdFxcdGVyciA9IHA1NHVfc3RhcnRfb3BzKHByaXYpO1xcbiA5MzA6XFx0XFx0fSBlbHNlIHtcXG4gOTMxOlxcdFxcdFxcdGVyciA9IC1FTk9FTlQ7XFxuIDkzMjpcXHRcXHRcXHRkZXZfZXJyKFxcdTAwMjZ1ZGV2LVxcdTAwM2VkZXYsIFxcXCJGaXJtd2FyZSBub3QgZm91bmQuXFxcXG5cXFwiKTtcXG4gOTMzOlxcdFxcdH1cXG4gOTM0OlxcdFxcbiA5MzU6XFx0XFx0Y29tcGxldGUoXFx1MDAyNnByaXYtXFx1MDAzZWZ3X3dhaXRfbG9hZCk7XFxuIDkzNjpcXHRcXHQvKlxcbiA5Mzc6XFx0XFx0ICogQXQgdGhpcyBwb2ludCBwNTR1X2Rpc2Nvbm5lY3QgbWF5IGhhdmUgYWxyZWFkeSBmcmVlZFxcbiA5Mzg6XFx0XFx0ICogdGhlIFxcXCJwcml2XFxcIiBjb250ZXh0LiBEbyBub3QgdXNlIGl0IGFueW1vcmUhXFxuIDkzOTpcXHRcXHQgKi9cXG4gOTQwOlxcdFxcdHByaXYgPSBOVUxMO1xcbiA5NDE6XFx0XFxuIDk0MjpcXHRcXHRpZiAoZXJyKSB7XFxuIDk0MzpcXHRcXHRcXHRkZXZfZXJyKFxcdTAwMjZpbnRmLVxcdTAwM2VkZXYsIFxcXCJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBkZXZpY2UgKCVkKVxcXFxuXFxcIiwgZXJyKTtcXG4gOTQ0OlxcdFxcbiA5NDU6XFx0XFx0XFx0dXNiX2xvY2tfZGV2aWNlKHVkZXYpO1xcbiA5NDY6XFx0XFx0XFx0dXNiX2RyaXZlcl9yZWxlYXNlX2ludGVyZmFjZShcXHUwMDI2cDU0dV9kcml2ZXIsIGludGYpO1xcbiA5NDc6XFx0XFx0XFx0dXNiX3VubG9ja19kZXZpY2UodWRldik7XFxuIDk0ODpcXHRcXHR9XFxuIDk0OTpcXHRcXG4gOTUwOlxcdFxcdHVzYl9wdXRfaW50ZihpbnRmKTtcXG4gOTUxOlxcdH1cXG4gOTUyOlxcdFxcbiA5NTM6XFx0c3RhdGljIGludCBwNTR1X2xvYWRfZmlybXdhcmUoc3RydWN0IGllZWU4MDIxMV9odyAqZGV2LFxcbiA5NTQ6XFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuIDk1NTpcXHR7XFxuIDk1NjpcXHRcXHRzdHJ1Y3QgdXNiX2RldmljZSAqdWRldiA9IGludGVyZmFjZV90b191c2JkZXYoaW50Zik7XFxuIDk1NzpcXHRcXHRzdHJ1Y3QgcDU0dV9wcml2ICpwcml2ID0gZGV2LVxcdTAwM2Vwcml2O1xcbiA5NTg6XFx0XFx0c3RydWN0IGRldmljZSAqZGV2aWNlID0gXFx1MDAyNnVkZXYtXFx1MDAzZWRldjtcXG4gOTU5OlxcdFxcdGludCBlcnIsIGk7XFxuIDk2MDpcXHRcXG4gOTYxOlxcdFxcdEJVSUxEX0JVR19PTihBUlJBWV9TSVpFKHA1NHVfZndsaXN0KSAhPSBfX05VTV9QNTRVX0hXVFlQRVMpO1xcbiA5NjI6XFx0XFxuIDk2MzpcXHRcXHRpbml0X2NvbXBsZXRpb24oXFx1MDAyNnByaXYtXFx1MDAzZWZ3X3dhaXRfbG9hZCk7XFxuIDk2NDpcXHRcXHRpID0gcDU0X2ZpbmRfdHlwZShwcml2KTtcXG4gOTY1OlxcdFxcdGlmIChpIFxcdTAwM2MgMClcXG4gOTY2OlxcdFxcdFxcdHJldHVybiBpO1xcbiA5Njc6XFx0XFxuIDk2ODpcXHRcXHRkZXZfaW5mbyhcXHUwMDI2cHJpdi1cXHUwMDNldWRldi1cXHUwMDNlZGV2LCBcXFwiTG9hZGluZyBmaXJtd2FyZSBmaWxlICVzXFxcXG5cXFwiLFxcbiA5Njk6XFx0XFx0ICAgICAgIHA1NHVfZndsaXN0W2ldLmZ3KTtcXG4gOTcwOlxcdFxcbiA5NzE6XFx0XFx0dXNiX2dldF9pbnRmKGludGYpO1xcbiA5NzI6XFx0XFx0ZXJyID0gcmVxdWVzdF9maXJtd2FyZV9ub3dhaXQoVEhJU19NT0RVTEUsIDEsIHA1NHVfZndsaXN0W2ldLmZ3LFxcbiA5NzM6XFx0XFx0XFx0XFx0XFx0ICAgICAgZGV2aWNlLCBHRlBfS0VSTkVMLCBwcml2LFxcbiA5NzQ6XFx0XFx0XFx0XFx0XFx0ICAgICAgcDU0dV9sb2FkX2Zpcm13YXJlX2NiKTtcXG4gOTc1OlxcdFxcdGlmIChlcnIpIHtcXG4gOTc2OlxcdFxcdFxcdGRldl9lcnIoXFx1MDAyNnByaXYtXFx1MDAzZXVkZXYtXFx1MDAzZWRldiwgXFxcIihwNTR1c2IpIGNhbm5vdCBsb2FkIGZpcm13YXJlICVzIFxcXCJcXG4gOTc3OlxcdFxcdFxcdFxcdFxcdFxcdCAgXFxcIiglZCkhXFxcXG5cXFwiLCBwNTR1X2Z3bGlzdFtpXS5mdywgZXJyKTtcXG4gOTc4OlxcdFxcdFxcdHVzYl9wdXRfaW50ZihpbnRmKTtcXG4gOTc5OlxcdFxcdH1cXG4gOTgwOlxcdFxcbiA5ODE6XFx0XFx0cmV0dXJuIGVycjtcXG4gOTgyOlxcdH1cXG4gOTgzOlxcdFxcbiA5ODQ6XFx0c3RhdGljIGludCBwNTR1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxcbiA5ODU6XFx0XFx0XFx0XFx0XFx0Y29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKVxcbiA5ODY6XFx0e1xcbiA5ODc6XFx0XFx0c3RydWN0IHVzYl9kZXZpY2UgKnVkZXYgPSBpbnRlcmZhY2VfdG9fdXNiZGV2KGludGYpO1xcbiA5ODg6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9odyAqZGV2O1xcbiA5ODk6XFx0XFx0c3RydWN0IHA1NHVfcHJpdiAqcHJpdjtcXG4gOTkwOlxcdFxcdGludCBlcnI7XFxuIDk5MTpcXHRcXHR1bnNpZ25lZCBpbnQgaSwgcmVjb2duaXplZF9waXBlcztcXG4gOTkyOlxcdFxcbiA5OTM6XFx0XFx0ZGV2ID0gcDU0X2luaXRfY29tbW9uKHNpemVvZigqcHJpdikpO1xcbiA5OTQ6XFx0XFxuIDk5NTpcXHRcXHRpZiAoIWRldikge1xcbiA5OTY6XFx0XFx0XFx0ZGV2X2VycihcXHUwMDI2dWRldi1cXHUwMDNlZGV2LCBcXFwiKHA1NHVzYikgaWVlZTgwMjExIGFsbG9jIGZhaWxlZFxcXFxuXFxcIik7XFxuIDk5NzpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gOTk4OlxcdFxcdH1cXG4gOTk5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMjozNToyNC4yNjQwMTk4OTNaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzI5ODI3NDc0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYGZ3aW8uY2AgaW4gdGhlIEludGVyc2lsIFA1NCBXaXJlbGVzcyBEcml2ZXIqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jYCBmaWxlLiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHdoYXQncyBjaGFuZ2VkIGFuZCBob3cgaXQgaW1wYWN0cyB0aGUgb3ZlcmFsbCBkcml2ZXIgZnVuY3Rpb25hbGl0eS4gU3BlY2lmaWNhbGx5LCBJJ20gZ29pbmcgdG8gc3RhcnQgYnkgcmV2aWV3aW5nIGxpbmVzIDEgdGhyb3VnaCAxMjAuIFRoaXMgc2VjdGlvbiBpcyBsaWtlbHkgdGhlIGluaXRpYWxpemF0aW9uIGFuZCBzZXR1cCwgb3IgcGVyaGFwcyBzb21lIGtleSBmdW5jdGlvbiBkZWZpbml0aW9ucyByZWxhdGVkIHRvIGZpcm13YXJlIGludGVyYWN0aW9uIOKAkyB0aGF0J3MgbXkgaHVuY2gsIGdpdmVuIHRoZSBcImZ3aW9cIiBpbiB0aGUgZmlsZW5hbWUuIFVuZGVyc3RhbmRpbmcgdGhlIGluaXRpYWwgY29udGV4dCBpcyBjcml0aWNhbCBiZWZvcmUgZGlnZ2luZyBkZWVwZXIgaW50byBhbnkgc3BlY2lmaWMgbW9kaWZpY2F0aW9ucy4gTGV0J3Mgc2VlIHdoYXQgZ2VtcyBhcmUgaGlkZGVuIGluIHRoaXMgaW5pdGlhbCBzZWN0aW9uLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIGRhdGEgc3RydWN0dXJlcywgZnVuY3Rpb24gcHJvdG90eXBlcywgbWFjcm8gZGVmaW5pdGlvbnMsIGFuZCBhbnkgZ2xvYmFsIHZhcmlhYmxlcyB0aGF0IHNlZW0gaW1wb3J0YW50IGZvciBmaXJtd2FyZSBjb21tdW5pY2F0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjM2OCwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjI6MzU6MjcuNTYyMjk4MzcyWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMjkwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDEyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdC8qXFxuICAgMzpcXHQgKiBGaXJtd2FyZSBJL08gY29kZSBmb3IgbWFjODAyMTEgUHJpc201NCBkcml2ZXJzXFxuICAgNDpcXHQgKlxcbiAgIDU6XFx0ICogQ29weXJpZ2h0IChjKSAyMDA2LCBNaWNoYWVsIFd1IFxcdTAwM2NmbGFtaW5naWNlQHNvdXJtaWxrLm5ldFxcdTAwM2VcXG4gICA2OlxcdCAqIENvcHlyaWdodCAoYykgMjAwNy0yMDA5LCBDaHJpc3RpYW4gTGFtcGFydGVyIFxcdTAwM2NjaHVua2VleUB3ZWIuZGVcXHUwMDNlXFxuICAgNzpcXHQgKiBDb3B5cmlnaHQgMjAwOCwgSm9oYW5uZXMgQmVyZyBcXHUwMDNjam9oYW5uZXNAc2lwc29sdXRpb25zLm5ldFxcdTAwM2VcXG4gICA4OlxcdCAqXFxuICAgOTpcXHQgKiBCYXNlZCBvbjpcXG4gIDEwOlxcdCAqIC0gdGhlIGlzbHNtIChzb2Z0bWFjIHByaXNtNTQpIGRyaXZlciwgd2hpY2ggaXM6XFxuICAxMTpcXHQgKiAgIENvcHlyaWdodCAyMDA0LTIwMDYgSmVhbi1CYXB0aXN0ZSBOb3RlIFxcdTAwM2NqYm5vdGVAZ21haWwuY29tXFx1MDAzZSwgZXQgYWwuXFxuICAxMjpcXHQgKiAtIHN0bGM0NXh4IGRyaXZlclxcbiAgMTM6XFx0ICogICBDb3B5cmlnaHQgKEMpIDIwMDggTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLlxcbiAgMTQ6XFx0ICovXFxuICAxNTpcXHRcXG4gIDE2OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9zbGFiLmhcXHUwMDNlXFxuICAxNzpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvZmlybXdhcmUuaFxcdTAwM2VcXG4gIDE4OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9ldGhlcmRldmljZS5oXFx1MDAzZVxcbiAgMTk6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2V4cG9ydC5oXFx1MDAzZVxcbiAgMjA6XFx0XFxuICAyMTpcXHQjaW5jbHVkZSBcXHUwMDNjbmV0L21hYzgwMjExLmhcXHUwMDNlXFxuICAyMjpcXHRcXG4gIDIzOlxcdCNpbmNsdWRlIFxcXCJwNTQuaFxcXCJcXG4gIDI0OlxcdCNpbmNsdWRlIFxcXCJlZXByb20uaFxcXCJcXG4gIDI1OlxcdCNpbmNsdWRlIFxcXCJsbWFjLmhcXFwiXFxuICAyNjpcXHRcXG4gIDI3OlxcdGludCBwNTRfcGFyc2VfZmlybXdhcmUoc3RydWN0IGllZWU4MDIxMV9odyAqZGV2LCBjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3KVxcbiAgMjg6XFx0e1xcbiAgMjk6XFx0XFx0c3RydWN0IHA1NF9jb21tb24gKnByaXYgPSBkZXYtXFx1MDAzZXByaXY7XFxuICAzMDpcXHRcXHRzdHJ1Y3QgZXhwX2lmICpleHBfaWY7XFxuICAzMTpcXHRcXHRzdHJ1Y3QgYm9vdHJlYyAqYm9vdHJlYztcXG4gIDMyOlxcdFxcdHUzMiAqZGF0YSA9ICh1MzIgKilmdy1cXHUwMDNlZGF0YTtcXG4gIDMzOlxcdFxcdHUzMiAqZW5kX2RhdGEgPSAodTMyICopZnctXFx1MDAzZWRhdGEgKyAoZnctXFx1MDAzZXNpemUgXFx1MDAzZVxcdTAwM2UgMik7XFxuICAzNDpcXHRcXHR1OCAqZndfdmVyc2lvbiA9IE5VTEw7XFxuICAzNTpcXHRcXHRzaXplX3QgbGVuO1xcbiAgMzY6XFx0XFx0aW50IGk7XFxuICAzNzpcXHRcXHRpbnQgbWF4bGVuO1xcbiAgMzg6XFx0XFxuICAzOTpcXHRcXHRpZiAocHJpdi1cXHUwMDNlcnhfc3RhcnQpXFxuICA0MDpcXHRcXHRcXHRyZXR1cm4gMDtcXG4gIDQxOlxcdFxcbiAgNDI6XFx0XFx0d2hpbGUgKGRhdGEgXFx1MDAzYyBlbmRfZGF0YSBcXHUwMDI2XFx1MDAyNiAqZGF0YSlcXG4gIDQzOlxcdFxcdFxcdGRhdGErKztcXG4gIDQ0OlxcdFxcbiAgNDU6XFx0XFx0d2hpbGUgKGRhdGEgXFx1MDAzYyBlbmRfZGF0YSBcXHUwMDI2XFx1MDAyNiAhKmRhdGEpXFxuICA0NjpcXHRcXHRcXHRkYXRhKys7XFxuICA0NzpcXHRcXG4gIDQ4OlxcdFxcdGJvb3RyZWMgPSAoc3RydWN0IGJvb3RyZWMgKikgZGF0YTtcXG4gIDQ5OlxcdFxcbiAgNTA6XFx0XFx0d2hpbGUgKGJvb3RyZWMtXFx1MDAzZWRhdGEgXFx1MDAzYz0gZW5kX2RhdGEgXFx1MDAyNlxcdTAwMjYgKGJvb3RyZWMtXFx1MDAzZWRhdGEgK1xcbiAgNTE6XFx0XFx0ICAgICAgIChsZW4gPSBsZTMyX3RvX2NwdShib290cmVjLVxcdTAwM2VsZW4pKSkgXFx1MDAzYz0gZW5kX2RhdGEpIHtcXG4gIDUyOlxcdFxcdFxcdHUzMiBjb2RlID0gbGUzMl90b19jcHUoYm9vdHJlYy1cXHUwMDNlY29kZSk7XFxuICA1MzpcXHRcXHRcXHRzd2l0Y2ggKGNvZGUpIHtcXG4gIDU0OlxcdFxcdFxcdGNhc2UgQlJfQ09ERV9DT01QT05FTlRfSUQ6XFxuICA1NTpcXHRcXHRcXHRcXHRwcml2LVxcdTAwM2Vmd19pbnRlcmZhY2UgPSBiZTMyX3RvX2NwdXAoKF9fYmUzMiAqKVxcbiAgNTY6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICBib290cmVjLVxcdTAwM2VkYXRhKTtcXG4gIDU3OlxcdFxcdFxcdFxcdHN3aXRjaCAocHJpdi1cXHUwMDNlZndfaW50ZXJmYWNlKSB7XFxuICA1ODpcXHRcXHRcXHRcXHRjYXNlIEZXX0xNODY6XFxuICA1OTpcXHRcXHRcXHRcXHRjYXNlIEZXX0xNMjA6XFxuICA2MDpcXHRcXHRcXHRcXHRjYXNlIEZXX0xNODc6IHtcXG4gIDYxOlxcdFxcdFxcdFxcdFxcdGNoYXIgKmlmdHlwZSA9IChjaGFyICopYm9vdHJlYy1cXHUwMDNlZGF0YTtcXG4gIDYyOlxcdFxcdFxcdFxcdFxcdHdpcGh5X2luZm8ocHJpdi1cXHUwMDNlaHctXFx1MDAzZXdpcGh5LFxcbiAgNjM6XFx0XFx0XFx0XFx0XFx0XFx0ICAgXFxcInA1NCBkZXRlY3RlZCBhIExNJWMlYyBmaXJtd2FyZVxcXFxuXFxcIixcXG4gIDY0OlxcdFxcdFxcdFxcdFxcdFxcdCAgIGlmdHlwZVsyXSwgaWZ0eXBlWzNdKTtcXG4gIDY1OlxcdFxcdFxcdFxcdFxcdGJyZWFrO1xcbiAgNjY6XFx0XFx0XFx0XFx0XFx0fVxcbiAgNjc6XFx0XFx0XFx0XFx0Y2FzZSBGV19GTUFDOlxcbiAgNjg6XFx0XFx0XFx0XFx0ZGVmYXVsdDpcXG4gIDY5OlxcdFxcdFxcdFxcdFxcdHdpcGh5X2Vycihwcml2LVxcdTAwM2Vody1cXHUwMDNld2lwaHksXFxuICA3MDpcXHRcXHRcXHRcXHRcXHRcXHQgIFxcXCJ1bnN1cHBvcnRlZCBmaXJtd2FyZVxcXFxuXFxcIik7XFxuICA3MTpcXHRcXHRcXHRcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4gIDcyOlxcdFxcdFxcdFxcdH1cXG4gIDczOlxcdFxcdFxcdFxcdGJyZWFrO1xcbiAgNzQ6XFx0XFx0XFx0Y2FzZSBCUl9DT0RFX0NPTVBPTkVOVF9WRVJTSU9OOlxcbiAgNzU6XFx0XFx0XFx0XFx0LyogMjQgYnl0ZXMgc2hvdWxkIGJlIGVub3VnaCBmb3IgYWxsIGZpcm13YXJlcyAqL1xcbiAgNzY6XFx0XFx0XFx0XFx0aWYgKHN0cm5sZW4oKHVuc2lnbmVkIGNoYXIgKikgYm9vdHJlYy1cXHUwMDNlZGF0YSwgMjQpIFxcdTAwM2MgMjQpXFxuICA3NzpcXHRcXHRcXHRcXHRcXHRmd192ZXJzaW9uID0gKHVuc2lnbmVkIGNoYXIgKikgYm9vdHJlYy1cXHUwMDNlZGF0YTtcXG4gIDc4OlxcdFxcdFxcdFxcdGJyZWFrO1xcbiAgNzk6XFx0XFx0XFx0Y2FzZSBCUl9DT0RFX0RFU0NSOiB7XFxuICA4MDpcXHRcXHRcXHRcXHRzdHJ1Y3QgYm9vdHJlY19kZXNjICpkZXNjID1cXG4gIDgxOlxcdFxcdFxcdFxcdFxcdChzdHJ1Y3QgYm9vdHJlY19kZXNjICopYm9vdHJlYy1cXHUwMDNlZGF0YTtcXG4gIDgyOlxcdFxcdFxcdFxcdHUzMiByeF9zdGFydCwgcnhfZW5kO1xcbiAgODM6XFx0XFxuICA4NDpcXHRcXHRcXHRcXHRpZiAobGVuIFxcdTAwM2MgRElWX1JPVU5EX1VQKG9mZnNldG9mZW5kKHN0cnVjdCBib290cmVjX2Rlc2MsXFxuICA4NTpcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICByeF9rZXljYWNoZV9zaXplKSxcXG4gIDg2OlxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgICBzaXplb2YoKmJvb3RyZWMtXFx1MDAzZWRhdGEpKSkge1xcbiAgODc6XFx0XFx0XFx0XFx0XFx0d2lwaHlfZXJyKHByaXYtXFx1MDAzZWh3LVxcdTAwM2V3aXBoeSxcXG4gIDg4OlxcdFxcdFxcdFxcdFxcdFxcdCAgXFxcImZpcm13YXJlIGRlc2NyaXB0b3IgaXMgdG9vIHNob3J0XFxcXG5cXFwiKTtcXG4gIDg5OlxcdFxcdFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiAgOTA6XFx0XFx0XFx0XFx0fVxcbiAgOTE6XFx0XFxuICA5MjpcXHRcXHRcXHRcXHRyeF9zdGFydCA9IGxlMzJfdG9fY3B1KGRlc2MtXFx1MDAzZXJ4X3N0YXJ0KTtcXG4gIDkzOlxcdFxcdFxcdFxcdHJ4X2VuZCA9IGxlMzJfdG9fY3B1KGRlc2MtXFx1MDAzZXJ4X2VuZCk7XFxuICA5NDpcXHRcXHRcXHRcXHRpZiAocnhfZW5kIFxcdTAwM2MgMHgzNTAwIHx8IHJ4X2VuZCAtIDB4MzUwMCBcXHUwMDNjPSByeF9zdGFydCkge1xcbiAgOTU6XFx0XFx0XFx0XFx0XFx0d2lwaHlfZXJyKHByaXYtXFx1MDAzZWh3LVxcdTAwM2V3aXBoeSxcXG4gIDk2OlxcdFxcdFxcdFxcdFxcdFxcdCAgXFxcImZpcm13YXJlIGRlc2NyaXB0b3IgaGFzIGludmFsaWQgUlggcmFuZ2VcXFxcblxcXCIpO1xcbiAgOTc6XFx0XFx0XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuICA5ODpcXHRcXHRcXHRcXHR9XFxuICA5OTpcXHRcXG4gMTAwOlxcdFxcdFxcdFxcdHByaXYtXFx1MDAzZXJ4X3N0YXJ0ID0gcnhfc3RhcnQ7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIyOjM1OjI3LjU2MjQyMzcyMloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMjE0MTY1MTc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV4YW1pbmluZyB0aGUgcDU0IERyaXZlcidzIENvbmZpZ3VyYXRpb24gT3B0aW9ucyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGludG8gdGhlIGBwNTRgIGRyaXZlci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIFVTQiBzdXBwb3J0LCBhbmQgdGhhdCdzIHRpZWQgdG8gYENPTkZJR19QNTRfVVNCYC4gUmlnaHQsIG1ha2VzIHNlbnNlLiBCdXQgSSBrbm93IGJldHRlciB0aGFuIHRvIGp1c3QgbG9vayBhdCBvbmUgb3B0aW9uIGluIGlzb2xhdGlvbi4gSSBuZWVkIHRvIHRyYWNlIHRoZSBkZXBlbmRlbmNpZXMuIFRoaXMgbWVhbnMgSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGZvciBgQ09ORklHX1A1NF9DT01NT05gLCBgQ09ORklHX1A1NF9VU0JgLCBgQ09ORklHX1A1NF9QQ0lgLCBhbmQgYENPTkZJR19QNTRfU1BJYCB0byBmdWxseSBncmFzcCB0aGUgcmVxdWlyZW1lbnRzIGFuZCBwb3RlbnRpYWwgY29uZmxpY3RzLiBUaW1lIHRvIHNlZSB3aGF0IGNvbmRpdGlvbnMgbmVlZCB0byBiZSBtZXQgZm9yIHRoZXNlIHRvIGJlIGVuYWJsZWQgY29ycmVjdGx5LiBUaGlzIGlzIHdoZXJlIHRoZSBkZXZpbCBpcyBpbiB0aGUgZGV0YWlscy4gSSBoYXZlIHRvIG1ha2Ugc3VyZSBldmVyeXRoaW5nIGlzIHByb3Blcmx5IHNldC4gVGhpcyBpcyBub3QgdGhlIHdob2xlIHBpY3R1cmUsIGJ1dCBpdCdzIGEgc3RhcnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0MTgwLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMjozNToyOS43NzY1OTI3NThaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MTU0ODkzOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUDU0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9LY29uZmlnOjI6Y29uZmlnIFA1NF9DT01NT05cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJTb2Z0bWFjIFByaXNtNTQgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9LY29uZmlnLTE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9LY29uZmlnOjE3OmNvbmZpZyBQNTRfVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L0tjb25maWctMTgtXFx0dHJpc3RhdGUgXFxcIlByaXNtNTQgVVNCIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvS2NvbmZpZy0yOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvS2NvbmZpZzoyOTpjb25maWcgUDU0X1BDSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9LY29uZmlnLTMwLVxcdHRyaXN0YXRlIFxcXCJQcmlzbTU0IFBDSSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L0tjb25maWctNDItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L0tjb25maWc6NDM6Y29uZmlnIFA1NF9TUElcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvS2NvbmZpZy00NC1cXHR0cmlzdGF0ZSBcXFwiUHJpc201NCBTUEkgKHN0bGM0NXh4KSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L0tjb25maWctNTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L0tjb25maWc6NTI6Y29uZmlnIFA1NF9TUElfREVGQVVMVF9FRVBST01cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvS2NvbmZpZy01My1cXHRib29sIFxcXCJJbmNsdWRlIGZhbGxiYWNrIEVFUFJPTSBibG9iXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L0tjb25maWctNjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L0tjb25maWc6Njk6Y29uZmlnIFA1NF9MRURTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L0tjb25maWctNzAtXFx0Ym9vbFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMjozNToyOS45MTgxNDc0NzZaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjMwMDk1OTE0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHJlYWRpbmcgdGhlIEtjb25maWcsIGFzc3VtaW5nIEknbSB3ZWxsLXZlcnNlZCBpbiBrZXJuZWwgY29uZmlndXJhdGlvbjpcblxuKipEaXZpbmcgaW50byB0aGUgUDU0IEtjb25maWcqKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcyBhbmQgZGlzc2VjdCB0aGUgS2NvbmZpZyBmaWxlIGZvciB0aGUgSW50ZXJzaWwgcDU0IHdpcmVsZXNzIGRyaXZlciwgc3BlY2lmaWNhbGx5IHVuZGVyIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvS2NvbmZpZ2AuIFRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgY29uZmlndXJhdGlvbiBkZWNpc2lvbnMgZm9yIHRoaXMgZHJpdmVyIGFyZSBtYWRlLCBhbmQgdW5kZXJzdGFuZGluZyBpdCBpcyBjcnVjaWFsIGZvciBwcm9wZXIgaW50ZWdyYXRpb24uIEknbGwgYmUgbG9va2luZyBmb3Igc2V2ZXJhbCB0aGluZ3M6IHRoZSBvdmVyYWxsIHN0cnVjdHVyZSwgYW55IGRlcGVuZGVuY2llcyBvbiBvdGhlciBrZXJuZWwgc3Vic3lzdGVtcywgd2hhdCBmZWF0dXJlcyBhcmUgZXhwb3NlZCBmb3IgdGhlIHVzZXIsIGFuZCBhbnkgcG90ZW50aWFsIGNhdmVhdHMgb3Igd2FybmluZ3MuIEkgZXhwZWN0IHRvIHNlZSB0aGUgdXN1YWwgc3VzcGVjdHM6IG1vZHVsZSB2cy4gYnVpbHQtaW4gb3B0aW9ucywgaGFyZHdhcmUgdmFyaWFudHMsIHBvd2VyIG1hbmFnZW1lbnQgY29uc2lkZXJhdGlvbnMsIHBlcmhhcHMgZXZlbiBkZWJ1Z2dpbmcgZmxhZ3MuIEknbGwgcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgZGVmYXVsdHMsIGFzIHRoZXNlIGFyZSB3aGF0IHRoZSBzeXN0ZW0gd2lsbCB0cnkgdG8gdXNlIGlmIHRoZSB1c2VyIGRvZXNuJ3Qgc3BlY2lmeSBvdGhlcndpc2UuIEEgd2VsbC13cml0dGVuIEtjb25maWcgd2lsbCBoYXZlIGNsZWFyIGhlbHAgdGV4dCB0byBndWlkZSB0aGUgdXNlciBhbmQgZXhwbGFpbiB0aGUgaW1wbGljYXRpb25zIG9mIGVhY2ggb3B0aW9uLiBMZXQncyBzZWUgaWYgdGhpcyBvbmUgaG9sZHMgdXAgdG8gbXkgZXhwZWN0YXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTAwMywiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIyOjM1OjMyLjIxOTExMTExWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MzAyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA4MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIFA1NF9DT01NT05cXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJTb2Z0bWFjIFByaXNtNTQgc3VwcG9ydFxcXCJcXG4gICA0OlxcdFxcdGRlcGVuZHMgb24gTUFDODAyMTFcXG4gICA1OlxcdFxcdHNlbGVjdCBGV19MT0FERVJcXG4gICA2OlxcdFxcdHNlbGVjdCBDUkNfQ0NJVFRcXG4gICA3OlxcdFxcdGhlbHBcXG4gICA4OlxcdFxcdCAgVGhpcyBpcyBjb21tb24gY29kZSBmb3IgaXNsMzh4eC9zdGxjNDV4eCBiYXNlZCBtb2R1bGVzLlxcbiAgIDk6XFx0XFx0ICBUaGlzIG1vZHVsZSBkb2VzIG5vdGhpbmcgYnkgaXRzZWxmIC0gdGhlIFVTQi9QQ0kvU1BJIGZyb250LWVuZHNcXG4gIDEwOlxcdFxcdCAgYWxzbyBuZWVkIHRvIGJlIGVuYWJsZWQgaW4gb3JkZXIgdG8gc3VwcG9ydCBhbnkgZGV2aWNlcy5cXG4gIDExOlxcdFxcbiAgMTI6XFx0XFx0ICBUaGVzZSBkZXZpY2VzIHJlcXVpcmUgc29mdG1hYyBmaXJtd2FyZSB3aGljaCBjYW4gYmUgZm91bmQgYXRcXG4gIDEzOlxcdFxcdCAgXFx1MDAzY2h0dHBzOi8vd2lyZWxlc3MuZG9jcy5rZXJuZWwub3JnL2VuL2xhdGVzdC9lbi91c2Vycy9kcml2ZXJzL3A1NC5odG1sXFx1MDAzZVxcbiAgMTQ6XFx0XFxuICAxNTpcXHRcXHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgYSBtb2R1bGUsIGl0J2xsIGJlIGNhbGxlZCBwNTRjb21tb24uXFxuICAxNjpcXHRcXG4gIDE3OlxcdGNvbmZpZyBQNTRfVVNCXFxuICAxODpcXHRcXHR0cmlzdGF0ZSBcXFwiUHJpc201NCBVU0Igc3VwcG9ydFxcXCJcXG4gIDE5OlxcdFxcdGRlcGVuZHMgb24gUDU0X0NPTU1PTiBcXHUwMDI2XFx1MDAyNiBVU0JcXG4gIDIwOlxcdFxcdHNlbGVjdCBDUkMzMlxcbiAgMjE6XFx0XFx0aGVscFxcbiAgMjI6XFx0XFx0ICBUaGlzIGRyaXZlciBpcyBmb3IgVVNCIGlzbDM4eHggYmFzZWQgd2lyZWxlc3MgY2FyZHMuXFxuICAyMzpcXHRcXG4gIDI0OlxcdFxcdCAgVGhlc2UgZGV2aWNlcyByZXF1aXJlIHNvZnRtYWMgZmlybXdhcmUgd2hpY2ggY2FuIGJlIGZvdW5kIGF0XFxuICAyNTpcXHRcXHQgIFxcdTAwM2NodHRwczovL3dpcmVsZXNzLmRvY3Mua2VybmVsLm9yZy9lbi9sYXRlc3QvZW4vdXNlcnMvZHJpdmVycy9wNTQuaHRtbFxcdTAwM2VcXG4gIDI2OlxcdFxcbiAgMjc6XFx0XFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGEgbW9kdWxlLCBpdCdsbCBiZSBjYWxsZWQgcDU0dXNiLlxcbiAgMjg6XFx0XFxuICAyOTpcXHRjb25maWcgUDU0X1BDSVxcbiAgMzA6XFx0XFx0dHJpc3RhdGUgXFxcIlByaXNtNTQgUENJIHN1cHBvcnRcXFwiXFxuICAzMTpcXHRcXHRkZXBlbmRzIG9uIFA1NF9DT01NT04gXFx1MDAyNlxcdTAwMjYgUENJXFxuICAzMjpcXHRcXHRoZWxwXFxuICAzMzpcXHRcXHQgIFRoaXMgZHJpdmVyIGlzIGZvciBQQ0kgaXNsMzh4eCBiYXNlZCB3aXJlbGVzcyBjYXJkcy5cXG4gIDM0OlxcdFxcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgbW9zdCBkZXZpY2VzIHRoYXQgYXJlIHN1cHBvcnRlZCBieSB0aGVcXG4gIDM1OlxcdFxcdCAgZnVsbG1hYyBwcmlzbTU0IGRyaXZlciBwbHVzIG1hbnkgZGV2aWNlcyB3aGljaCBhcmUgbm90XFxuICAzNjpcXHRcXHQgIHN1cHBvcnRlZCBieSB0aGUgZnVsbG1hYyBkcml2ZXIvZmlybXdhcmUuXFxuICAzNzpcXHRcXG4gIDM4OlxcdFxcdCAgVGhpcyBkcml2ZXIgcmVxdWlyZXMgc29mdG1hYyBmaXJtd2FyZSB3aGljaCBjYW4gYmUgZm91bmQgYXRcXG4gIDM5OlxcdFxcdCAgXFx1MDAzY2h0dHBzOi8vd2lyZWxlc3MuZG9jcy5rZXJuZWwub3JnL2VuL2xhdGVzdC9lbi91c2Vycy9kcml2ZXJzL3A1NC5odG1sXFx1MDAzZVxcbiAgNDA6XFx0XFxuICA0MTpcXHRcXHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgYSBtb2R1bGUsIGl0J2xsIGJlIGNhbGxlZCBwNTRwY2kuXFxuICA0MjpcXHRcXG4gIDQzOlxcdGNvbmZpZyBQNTRfU1BJXFxuICA0NDpcXHRcXHR0cmlzdGF0ZSBcXFwiUHJpc201NCBTUEkgKHN0bGM0NXh4KSBzdXBwb3J0XFxcIlxcbiAgNDU6XFx0XFx0ZGVwZW5kcyBvbiBQNTRfQ09NTU9OIFxcdTAwMjZcXHUwMDI2IFNQSV9NQVNURVJcXG4gIDQ2OlxcdFxcdGhlbHBcXG4gIDQ3OlxcdFxcdCAgVGhpcyBkcml2ZXIgaXMgZm9yIHN0bGM0NTUwIG9yIHN0bGM0NTYwIGJhc2VkIHdpcmVsZXNzIGNoaXBzXFxuICA0ODpcXHRcXHQgIHN1Y2ggYXMgTm9raWEncyBOODAwL044MTAgUG9ydGFibGUgSW50ZXJuZXQgVGFibGV0LlxcbiAgNDk6XFx0XFxuICA1MDpcXHRcXHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgYSBtb2R1bGUsIGl0J2xsIGJlIGNhbGxlZCBwNTRzcGkuXFxuICA1MTpcXHRcXG4gIDUyOlxcdGNvbmZpZyBQNTRfU1BJX0RFRkFVTFRfRUVQUk9NXFxuICA1MzpcXHRcXHRib29sIFxcXCJJbmNsdWRlIGZhbGxiYWNrIEVFUFJPTSBibG9iXFxcIlxcbiAgNTQ6XFx0XFx0ZGVwZW5kcyBvbiBQNTRfU1BJXFxuICA1NTpcXHRcXHRkZWZhdWx0IG5cXG4gIDU2OlxcdFxcdGhlbHBcXG4gIDU3OlxcdFxcdCBVbmxpa2UgdGhlIFBDSSBvciBVU0IgZGV2aWNlcywgdGhlIFNQSSB2YXJpYW50cyBkb24ndCBoYXZlXFxuICA1ODpcXHRcXHQgYSBkZWRpY2F0ZWQgRUVQUk9NIGNoaXAgdG8gc3RvcmUgYWxsIGRldmljZSBzcGVjaWZpYyB2YWx1ZXNcXG4gIDU5OlxcdFxcdCBmb3IgY2FsaWJyYXRpb24sIGNvdW50cnkgYW5kIGludGVyZmFjZSBzZXR0aW5ncy5cXG4gIDYwOlxcdFxcbiAgNjE6XFx0XFx0IFRoZSBkcml2ZXIgd2lsbCB0cnkgdG8gbG9hZCB0aGUgaW1hZ2UgXFxcIjM4MjYuZWVwcm9tXFxcIiwgaWYgdGhlXFxuICA2MjpcXHRcXHQgZmlsZSBpcyBwdXQgYXQgdGhlIHJpZ2h0IHBsYWNlLiAodXN1YWxseSAvbGliL2Zpcm13YXJlLilcXG4gIDYzOlxcdFxcbiAgNjQ6XFx0XFx0IE9ubHkgaWYgdGhpcyByZXF1ZXN0IGZhaWxzLCB0aGlzIG9wdGlvbiB3aWxsIHByb3ZpZGUgYVxcbiAgNjU6XFx0XFx0IGJhY2t1cCBzZXQgb2YgZ2VuZXJpYyB2YWx1ZXMgdG8gZ2V0IHRoZSBkZXZpY2Ugd29ya2luZy5cXG4gIDY2OlxcdFxcbiAgNjc6XFx0XFx0IEVuYWJsaW5nIHRoaXMgb3B0aW9uIGFkZHMgYWJvdXQgNGsgdG8gcDU0c3BpLlxcbiAgNjg6XFx0XFxuICA2OTpcXHRjb25maWcgUDU0X0xFRFNcXG4gIDcwOlxcdFxcdGJvb2xcXG4gIDcxOlxcdFxcdGRlcGVuZHMgb24gUDU0X0NPTU1PTiBcXHUwMDI2XFx1MDAyNiBNQUM4MDIxMV9MRURTIFxcdTAwMjZcXHUwMDI2IChMRURTX0NMQVNTID0geSB8fCBMRURTX0NMQVNTID0gUDU0X0NPTU1PTilcXG4gIDcyOlxcdFxcdGRlZmF1bHQgeVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMjozNTozMi4yMTkyNjk3WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjYzOTY2Njk1NzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBUYXJnZXQgQW5hbHlzaXM6IHA1NCBGaXJtd2FyZSBQYXJzaW5nKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gYW5hbHl6ZSB0aGlzIHBhdGNoIHRhcmdldGluZyBmaXJtd2FyZSBwYXJzaW5nIHdpdGhpbiB0aGUgcDU0IHdpcmVsZXNzIGRyaXZlciwgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIGBwNTRfcGFyc2VfZmlybXdhcmVgIGluIGBmd2lvLmNgLiBUaGlzIGZ1bmN0aW9uIGlzIHBpdm90YWwgYXMgaXQncyB0aGUgY29yZSBvZiBwYXJzaW5nIHRoZSBmaXJtd2FyZSBmb3IgcDU0IGRldmljZXMsIGFuZCBjcnVjaWFsIGZvciBVU0IsIFBDSSwgYW5kIFNQSS4gVGhlIGNvbm5lY3Rpb24gdG8gVVNCIGlzIHBhcnRpY3VsYXJseSBpbnRlcmVzdGluZyBiZWNhdXNlIHdlIGhhdmUgVVNCIFJhdyBHYWRnZXQgYW5kIHN5emthbGxlciBlbXVsYXRpb24gb3B0aW9ucywgb2ZmZXJpbmcgdmlhYmxlIGZ1enppbmcgcGF0aHdheXMuIE1vcmVvdmVyLCB0aGUgZmxleGliaWxpdHkgdG8gbG9hZCBmaXJtd2FyZSBmcm9tIHVzZXJzcGFjZSwgc3lzZnMsIHJvb3Rmcywgb3IgZXZlbiB2aWEgZW11bGF0aW9uIG1lYW5zIGEgd2lkZSBhdHRhY2sgc3VyZmFjZS5cblxuTm93LCBsZXQncyBkaXZlIGludG8gdGhlIHBhdGNoJ3Mgc3BlY2lmaWNzLiBCZWZvcmUgdGhlIHBhdGNoLCB0aGUgY29kZSB3YXMgYSBiaXQgbGF4LCBjYWxjdWxhdGluZyBgcnhfZW5kYCB3aXRoIGEgaGFyZGNvZGVkIG9mZnNldC4gVGhlIHVwZGF0ZWQgY29kZSBpbnRyb2R1Y2VzIGEgKmNyaXRpY2FsKiBzYW5pdHkgY2hlY2suIEl0IGVuc3VyZXMgdGhlIGZpcm13YXJlIGRlc2NyaXB0b3IgaGFzIGEgc3VmZmljaWVudCBsZW5ndGggYW5kIHJpZ29yb3VzbHkgdmFsaWRhdGVzIHRoZSBgcnhfZW5kYCBhbmQgYHJ4X3N0YXJ0YCB2YWx1ZXMsIHByZXZlbnRpbmcgdGhlIHBvdGVudGlhbCBmb3IgaW50ZWdlciBvdmVyZmxvd3MgYW5kIHJlbGF0ZWQgdnVsbmVyYWJpbGl0aWVzLlxuXG5UaGlzIGRpcmVjdGx5IHRyYW5zbGF0ZXMgaW50byBmdXp6aW5nIHBvdGVudGlhbCEgVGhpcyBpcyBleGVjdXRhYmxlIGNvZGUgd2l0aGluIGEgcmVhY2hhYmxlIGRyaXZlci4gVGhlIHBhdGNoIG1vZGlmaWVzIGNydWNpYWwgaW5wdXQgdmFsaWRhdGlvbiBhbmQgc2FuaXR5IGNoZWNraW5nIGxvZ2ljIHdoZW4gcGFyc2luZyBmaXJtd2FyZSBmb3IgYHA1NGAuIFRoZXJlZm9yZSwgaXQncyBkZWZpbml0aXZlbHkgV29ydGhGdXp6aW5nPXRydWUuXG5cbk15IHByaW1hcnkgYEZvY3VzU3ltYm9sc2AgYXJlIGNsZWFybHkgYHA1NF9wYXJzZV9maXJtd2FyZWAuIEFsc28sIEknbGwgbGlrZWx5IG5lZWQgdG8gY29uc2lkZXIgcmVsYXRlZCBmdW5jdGlvbnMgYXMgZW50cnkgcG9pbnRzLCBzdWNoIGFzIGBwNTR1X3N0YXJ0X29wc2AsIGBwNTR1X2xvYWRfZmlybXdhcmVfY2JgLCBhbmQgYHA1NHVfcHJvYmVgLiBUaGVzZSBhcmUgYWxsIHJlbGF0ZWQgdG8gZmlybXdhcmUgbG9hZGluZyBhbmQgZGV2aWNlIGluaXRpYWxpemF0aW9uLlxuXG5SZWdhcmRpbmcgdGhlIHJlcXVpcmVkIGtlcm5lbCBjb25maWdzLCBJIG5lZWQgdG8gZW5hYmxlIGBQNTRfQ09NTU9OYCwgYFA1NF9VU0JgLCBgTUFDODAyMTFgLCBhbmQgYFVTQmAuIFRoZXNlIGFyZSBlc3NlbnRpYWwgZm9yIGJ1aWxkaW5nIHRoZSByZWxldmFudCBkcml2ZXJzIGFuZCBzdXBwb3J0aW5nIFVTQiBlbXVsYXRpb24uIGBQNTRfQ09NTU9OYCBpcyByZXF1aXJlZCwgYW5kIGBQNTRfVVNCYCBpbiB0dXJuIGRlcGVuZHMgb24gdGhlc2UuXG5cbkkndmUgcmV2aWV3ZWQgYWxsIGluc3RydWN0aW9ucyBhbmQgZ3VpZGVsaW5lcyBhbmQgdmFsaWRhdGVkIHRoZSBhbmFseXNpcy4gVGhpcyBpcyBhIHNvbGlkIGZ1enppbmcgdGFyZ2V0IGJhc2VkIG9uIHJlYWNoYWJsZSBkcml2ZXIgY29kZSwgd2l0aCBhIGhpZ2ggcHJvYmFiaWxpdHkgb2YgZmluZGluZyBidWdzIGR1ZSB0byB0aGUgY2hhbmdlZCBpbnB1dCB2YWxpZGF0aW9uIGxvZ2ljLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjQxNCwiT3V0cHV0VG9rZW5zIjoxNDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTAwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjI6MzU6MzguNjE1OTQyODkxWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTkyMTYzNzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlA1NF9DT01NT05cIixcbiAgICBcIlA1NF9VU0JcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJVU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwNTRfcGFyc2VfZmlybXdhcmVcIixcbiAgICBcInA1NHVfc3RhcnRfb3BzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBib3VuZHMgYW5kIHJhbmdlIHZhbGlkYXRpb24gY2hlY2tzIGZvciBmaXJtd2FyZSBkZXNjcmlwdG9ycyBpbiBwNTRfcGFyc2VfZmlybXdhcmUoKS4gVGhpcyBmdW5jdGlvbiBpcyByZWFjaGFibGUgdmlhIHRoZSBwNTR1c2IgZHJpdmVyIHdoaWNoIGNhbiBiZSBmdXp6ZWQgdXNpbmcgVVNCIGVtdWxhdGlvbiAoZS5nLiBSYXcgR2FkZ2V0KS4gRnV6emluZyBpcyB3YXJyYW50ZWQgdG8gdmVyaWZ5IHRoYXQgbWFsZm9ybWVkIGZpcm13YXJlIGltYWdlcyBhbmQgZWRnZSBjYXNlcyBhcmUgaGFuZGxlZCBzYWZlbHkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUDU0X0NPTU1PTlwiLFxuICAgIFwiUDU0X1VTQlwiLFxuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIlVTQlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInA1NF9wYXJzZV9maXJtd2FyZVwiLFxuICAgIFwicDU0dV9zdGFydF9vcHNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGJvdW5kcyBhbmQgcmFuZ2UgdmFsaWRhdGlvbiBjaGVja3MgZm9yIGZpcm13YXJlIGRlc2NyaXB0b3JzIGluIHA1NF9wYXJzZV9maXJtd2FyZSgpLiBUaGlzIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSB2aWEgdGhlIHA1NHVzYiBkcml2ZXIgd2hpY2ggY2FuIGJlIGZ1enplZCB1c2luZyBVU0IgZW11bGF0aW9uIChlLmcuIFJhdyBHYWRnZXQpLiBGdXp6aW5nIGlzIHdhcnJhbnRlZCB0byB2ZXJpZnkgdGhhdCBtYWxmb3JtZWQgZmlybXdhcmUgaW1hZ2VzIGFuZCBlZGdlIGNhc2VzIGFyZSBoYW5kbGVkIHNhZmVseS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjI6MzU6MzguNzE1MTY3MTJaIiwiU2VxIjoyMSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNjY3NzIxNzEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjI6MzU6MzguNzE1NzAxOTlaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjoxMTY2NzE3NTk4MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBpbnB1dCB2YWxpZGF0aW9uIGFuZCBib3VuZHMgY2hlY2tpbmcgZm9yIGZpcm13YXJlIGJvb3QgcmVjb3JkIGRlc2NyaXB0b3JzIGluIHA1NF9wYXJzZV9maXJtd2FyZSgpLiBTcGVjaWZpY2FsbHksIGl0IHZhbGlkYXRlcyB0aGF0IHRoZSBib290IHJlY29yZCBsZW5ndGggaXMgc3VmZmljaWVudCB0byBjb3ZlciBzdHJ1Y3QgYm9vdHJlY19kZXNjIGZpZWxkcyAocHJldmVudGluZyBvdXQtb2YtYm91bmRzIHJlYWRzIG9uIHRydW5jYXRlZCBmaXJtd2FyZSBidWZmZXJzLCBkZXRlY3RhYmxlIGJ5IEtBU0FOKSBhbmQgZW5zdXJlcyB0aGF0IHJ4X2VuZCBcXHUwMDNlPSAweDM1MDAgYW5kIHJ4X2VuZCAtIDB4MzUwMCBcXHUwMDNlIHJ4X3N0YXJ0IHRvIHByZXZlbnQgaW50ZWdlciB1bmRlcmZsb3cgYW5kIGludmFsaWQgYnVmZmVyIHJhbmdlcy5cXG5cXG5ObyB1bmluaXRpYWxpemVkIG1lbW9yeSBpcyBhbGxvY2F0ZWQsIHJlYWQsIG9yIGV4cG9zZWQuIExvY2FsIHZhcmlhYmxlcyAocnhfc3RhcnQsIHJ4X2VuZCkgYXJlIGV4cGxpY2l0bHkgaW5pdGlhbGl6ZWQgZnJvbSB0aGUgZmlybXdhcmUgZGVzY3JpcHRvciBiZWZvcmUgYmVpbmcgY2hlY2tlZCBhbmQgc3RvcmVkLiBObyBkYXRhIGlzIGNvcGllZCB0byB1c2Vyc3BhY2Ugd2l0aG91dCBpbml0aWFsaXphdGlvbi4gVGhlcmVmb3JlLCBzdGFuZGFyZCBLQVNBTiBidWlsZHMgYXJlIHN1ZmZpY2llbnQgYW5kIEtNU0FOIGZ1enppbmcgaXMgbm90IG5lZWRlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBlNzAzYzAzNDZiY2ZkOWZkNWYxZTQ0ZTkzOTk4ZjFiZWZkYjEzMjYzXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBTZXAgNiAyMjozNTowOSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jXG5pbmRleCBhM2Q5MDUzZjA0M2M2Li41ZDgyZTBhNDM4MzU4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uY1xuQEAgLTc5LDkgKzc5LDI2IEBAIGludCBwNTRfcGFyc2VfZmlybXdhcmUoc3RydWN0IGllZWU4MDIxMV9odyAqZGV2LCBjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3KVxuIFx0XHRjYXNlIEJSX0NPREVfREVTQ1I6IHtcbiBcdFx0XHRzdHJ1Y3QgYm9vdHJlY19kZXNjICpkZXNjID1cbiBcdFx0XHRcdChzdHJ1Y3QgYm9vdHJlY19kZXNjICopYm9vdHJlYy1cdTAwM2VkYXRhO1xuLVx0XHRcdHByaXYtXHUwMDNlcnhfc3RhcnQgPSBsZTMyX3RvX2NwdShkZXNjLVx1MDAzZXJ4X3N0YXJ0KTtcbi1cdFx0XHQvKiBGSVhNRSBhZGQgc2FuaXR5IGNoZWNraW5nICovXG4tXHRcdFx0cHJpdi1cdTAwM2VyeF9lbmQgPSBsZTMyX3RvX2NwdShkZXNjLVx1MDAzZXJ4X2VuZCkgLSAweDM1MDA7XG4rXHRcdFx0dTMyIHJ4X3N0YXJ0LCByeF9lbmQ7XG4rXG4rXHRcdFx0aWYgKGxlbiBcdTAwM2MgRElWX1JPVU5EX1VQKG9mZnNldG9mZW5kKHN0cnVjdCBib290cmVjX2Rlc2MsXG4rXHRcdFx0XHRcdFx0XHQgICByeF9rZXljYWNoZV9zaXplKSxcbitcdFx0XHRcdFx0XHQgICAgICAgc2l6ZW9mKCpib290cmVjLVx1MDAzZWRhdGEpKSkge1xuK1x0XHRcdFx0d2lwaHlfZXJyKHByaXYtXHUwMDNlaHctXHUwMDNld2lwaHksXG4rXHRcdFx0XHRcdCAgXCJmaXJtd2FyZSBkZXNjcmlwdG9yIGlzIHRvbyBzaG9ydFxcblwiKTtcbitcdFx0XHRcdHJldHVybiAtRUlOVkFMO1xuK1x0XHRcdH1cbitcbitcdFx0XHRyeF9zdGFydCA9IGxlMzJfdG9fY3B1KGRlc2MtXHUwMDNlcnhfc3RhcnQpO1xuK1x0XHRcdHJ4X2VuZCA9IGxlMzJfdG9fY3B1KGRlc2MtXHUwMDNlcnhfZW5kKTtcbitcdFx0XHRpZiAocnhfZW5kIFx1MDAzYyAweDM1MDAgfHwgcnhfZW5kIC0gMHgzNTAwIFx1MDAzYz0gcnhfc3RhcnQpIHtcbitcdFx0XHRcdHdpcGh5X2Vycihwcml2LVx1MDAzZWh3LVx1MDAzZXdpcGh5LFxuK1x0XHRcdFx0XHQgIFwiZmlybXdhcmUgZGVzY3JpcHRvciBoYXMgaW52YWxpZCBSWCByYW5nZVxcblwiKTtcbitcdFx0XHRcdHJldHVybiAtRUlOVkFMO1xuK1x0XHRcdH1cbitcbitcdFx0XHRwcml2LVx1MDAzZXJ4X3N0YXJ0ID0gcnhfc3RhcnQ7XG4rXHRcdFx0cHJpdi1cdTAwM2VyeF9lbmQgPSByeF9lbmQgLSAweDM1MDA7XG4gXHRcdFx0cHJpdi1cdTAwM2VoZWFkcm9vbSA9IGRlc2MtXHUwMDNlaGVhZHJvb207XG4gXHRcdFx0cHJpdi1cdTAwM2V0YWlscm9vbSA9IGRlc2MtXHUwMDNldGFpbHJvb207XG4gXHRcdFx0cHJpdi1cdTAwM2Vwcml2YWN5X2NhcHMgPSBkZXNjLVx1MDAzZXByaXZhY3lfY2FwcztcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIyOjM1OjM4LjcxNTcwMzM2WiIsIlNlcSI6MjMsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjUzNDE3ODEyMDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhpbmdzOlxuXG4qKkFuYWx5emluZyB0aGUgRmlybXdhcmUgSS9PIENvZGUqKlxuXG5Pa2F5LCB0aW1lIHRvIGRpdmUgaW50byB0aGlzLiBUaGUgZGlmZiBwb2ludHMgbWUgdG93YXJkcyBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uY2AsIHNvIHRoYXQncyB3aGVyZSBJIG5lZWQgdG8gZm9jdXMuIExldCdzIHN0YXJ0IHdpdGggYSB0aG9yb3VnaCBleGFtaW5hdGlvbiBvZiB0aGUgY2hhbmdlcy4gSSdsbCBuZWVkIHRvIHJlYWQgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaW4gdGhhdCBmaWxlLCB0b28sIHRvIGdldCB0aGUgY29tcGxldGUgcGljdHVyZS4gVGhlIGJlc3Qgd2F5IHRvIGJlZ2luIHRoZSBpbnZlc3RpZ2F0aW9uIGlzIHVzaW5nIGByZWFkLWZpbGVgIHRvIGdldCB0aGUgY29udGV4dCBpbiB0aGUgZmlsZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uY2AuIFRoaXMgd2lsbCBnaXZlIG1lIGV2ZXJ5dGhpbmcgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNoYW5nZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQzNSwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjI6MzU6NDQuMDU3NDkxMzQ3WiIsIlNlcSI6MjQsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwNDA0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDUwLFxuICBcIkxpbmVDb3VudFwiOiA4MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDUwOlxcdFxcdHdoaWxlIChib290cmVjLVxcdTAwM2VkYXRhIFxcdTAwM2M9IGVuZF9kYXRhIFxcdTAwMjZcXHUwMDI2IChib290cmVjLVxcdTAwM2VkYXRhICtcXG4gIDUxOlxcdFxcdCAgICAgICAobGVuID0gbGUzMl90b19jcHUoYm9vdHJlYy1cXHUwMDNlbGVuKSkpIFxcdTAwM2M9IGVuZF9kYXRhKSB7XFxuICA1MjpcXHRcXHRcXHR1MzIgY29kZSA9IGxlMzJfdG9fY3B1KGJvb3RyZWMtXFx1MDAzZWNvZGUpO1xcbiAgNTM6XFx0XFx0XFx0c3dpdGNoIChjb2RlKSB7XFxuICA1NDpcXHRcXHRcXHRjYXNlIEJSX0NPREVfQ09NUE9ORU5UX0lEOlxcbiAgNTU6XFx0XFx0XFx0XFx0cHJpdi1cXHUwMDNlZndfaW50ZXJmYWNlID0gYmUzMl90b19jcHVwKChfX2JlMzIgKilcXG4gIDU2OlxcdFxcdFxcdFxcdFxcdFxcdCAgICAgYm9vdHJlYy1cXHUwMDNlZGF0YSk7XFxuICA1NzpcXHRcXHRcXHRcXHRzd2l0Y2ggKHByaXYtXFx1MDAzZWZ3X2ludGVyZmFjZSkge1xcbiAgNTg6XFx0XFx0XFx0XFx0Y2FzZSBGV19MTTg2OlxcbiAgNTk6XFx0XFx0XFx0XFx0Y2FzZSBGV19MTTIwOlxcbiAgNjA6XFx0XFx0XFx0XFx0Y2FzZSBGV19MTTg3OiB7XFxuICA2MTpcXHRcXHRcXHRcXHRcXHRjaGFyICppZnR5cGUgPSAoY2hhciAqKWJvb3RyZWMtXFx1MDAzZWRhdGE7XFxuICA2MjpcXHRcXHRcXHRcXHRcXHR3aXBoeV9pbmZvKHByaXYtXFx1MDAzZWh3LVxcdTAwM2V3aXBoeSxcXG4gIDYzOlxcdFxcdFxcdFxcdFxcdFxcdCAgIFxcXCJwNTQgZGV0ZWN0ZWQgYSBMTSVjJWMgZmlybXdhcmVcXFxcblxcXCIsXFxuICA2NDpcXHRcXHRcXHRcXHRcXHRcXHQgICBpZnR5cGVbMl0sIGlmdHlwZVszXSk7XFxuICA2NTpcXHRcXHRcXHRcXHRcXHRicmVhaztcXG4gIDY2OlxcdFxcdFxcdFxcdFxcdH1cXG4gIDY3OlxcdFxcdFxcdFxcdGNhc2UgRldfRk1BQzpcXG4gIDY4OlxcdFxcdFxcdFxcdGRlZmF1bHQ6XFxuICA2OTpcXHRcXHRcXHRcXHRcXHR3aXBoeV9lcnIocHJpdi1cXHUwMDNlaHctXFx1MDAzZXdpcGh5LFxcbiAgNzA6XFx0XFx0XFx0XFx0XFx0XFx0ICBcXFwidW5zdXBwb3J0ZWQgZmlybXdhcmVcXFxcblxcXCIpO1xcbiAgNzE6XFx0XFx0XFx0XFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuICA3MjpcXHRcXHRcXHRcXHR9XFxuICA3MzpcXHRcXHRcXHRcXHRicmVhaztcXG4gIDc0OlxcdFxcdFxcdGNhc2UgQlJfQ09ERV9DT01QT05FTlRfVkVSU0lPTjpcXG4gIDc1OlxcdFxcdFxcdFxcdC8qIDI0IGJ5dGVzIHNob3VsZCBiZSBlbm91Z2ggZm9yIGFsbCBmaXJtd2FyZXMgKi9cXG4gIDc2OlxcdFxcdFxcdFxcdGlmIChzdHJubGVuKCh1bnNpZ25lZCBjaGFyICopIGJvb3RyZWMtXFx1MDAzZWRhdGEsIDI0KSBcXHUwMDNjIDI0KVxcbiAgNzc6XFx0XFx0XFx0XFx0XFx0ZndfdmVyc2lvbiA9ICh1bnNpZ25lZCBjaGFyICopIGJvb3RyZWMtXFx1MDAzZWRhdGE7XFxuICA3ODpcXHRcXHRcXHRcXHRicmVhaztcXG4gIDc5OlxcdFxcdFxcdGNhc2UgQlJfQ09ERV9ERVNDUjoge1xcbiAgODA6XFx0XFx0XFx0XFx0c3RydWN0IGJvb3RyZWNfZGVzYyAqZGVzYyA9XFxuICA4MTpcXHRcXHRcXHRcXHRcXHQoc3RydWN0IGJvb3RyZWNfZGVzYyAqKWJvb3RyZWMtXFx1MDAzZWRhdGE7XFxuICA4MjpcXHRcXHRcXHRcXHR1MzIgcnhfc3RhcnQsIHJ4X2VuZDtcXG4gIDgzOlxcdFxcbiAgODQ6XFx0XFx0XFx0XFx0aWYgKGxlbiBcXHUwMDNjIERJVl9ST1VORF9VUChvZmZzZXRvZmVuZChzdHJ1Y3QgYm9vdHJlY19kZXNjLFxcbiAgODU6XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgcnhfa2V5Y2FjaGVfc2l6ZSksXFxuICA4NjpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgc2l6ZW9mKCpib290cmVjLVxcdTAwM2VkYXRhKSkpIHtcXG4gIDg3OlxcdFxcdFxcdFxcdFxcdHdpcGh5X2Vycihwcml2LVxcdTAwM2Vody1cXHUwMDNld2lwaHksXFxuICA4ODpcXHRcXHRcXHRcXHRcXHRcXHQgIFxcXCJmaXJtd2FyZSBkZXNjcmlwdG9yIGlzIHRvbyBzaG9ydFxcXFxuXFxcIik7XFxuICA4OTpcXHRcXHRcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gIDkwOlxcdFxcdFxcdFxcdH1cXG4gIDkxOlxcdFxcbiAgOTI6XFx0XFx0XFx0XFx0cnhfc3RhcnQgPSBsZTMyX3RvX2NwdShkZXNjLVxcdTAwM2VyeF9zdGFydCk7XFxuICA5MzpcXHRcXHRcXHRcXHRyeF9lbmQgPSBsZTMyX3RvX2NwdShkZXNjLVxcdTAwM2VyeF9lbmQpO1xcbiAgOTQ6XFx0XFx0XFx0XFx0aWYgKHJ4X2VuZCBcXHUwMDNjIDB4MzUwMCB8fCByeF9lbmQgLSAweDM1MDAgXFx1MDAzYz0gcnhfc3RhcnQpIHtcXG4gIDk1OlxcdFxcdFxcdFxcdFxcdHdpcGh5X2Vycihwcml2LVxcdTAwM2Vody1cXHUwMDNld2lwaHksXFxuICA5NjpcXHRcXHRcXHRcXHRcXHRcXHQgIFxcXCJmaXJtd2FyZSBkZXNjcmlwdG9yIGhhcyBpbnZhbGlkIFJYIHJhbmdlXFxcXG5cXFwiKTtcXG4gIDk3OlxcdFxcdFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiAgOTg6XFx0XFx0XFx0XFx0fVxcbiAgOTk6XFx0XFxuIDEwMDpcXHRcXHRcXHRcXHRwcml2LVxcdTAwM2VyeF9zdGFydCA9IHJ4X3N0YXJ0O1xcbiAxMDE6XFx0XFx0XFx0XFx0cHJpdi1cXHUwMDNlcnhfZW5kID0gcnhfZW5kIC0gMHgzNTAwO1xcbiAxMDI6XFx0XFx0XFx0XFx0cHJpdi1cXHUwMDNlaGVhZHJvb20gPSBkZXNjLVxcdTAwM2VoZWFkcm9vbTtcXG4gMTAzOlxcdFxcdFxcdFxcdHByaXYtXFx1MDAzZXRhaWxyb29tID0gZGVzYy1cXHUwMDNldGFpbHJvb207XFxuIDEwNDpcXHRcXHRcXHRcXHRwcml2LVxcdTAwM2Vwcml2YWN5X2NhcHMgPSBkZXNjLVxcdTAwM2Vwcml2YWN5X2NhcHM7XFxuIDEwNTpcXHRcXHRcXHRcXHRwcml2LVxcdTAwM2VyeF9rZXljYWNoZV9zaXplID0gZGVzYy1cXHUwMDNlcnhfa2V5Y2FjaGVfc2l6ZTtcXG4gMTA2OlxcdFxcdFxcdFxcdGlmIChsZTMyX3RvX2NwdShib290cmVjLVxcdTAwM2VsZW4pID09IDExKVxcbiAxMDc6XFx0XFx0XFx0XFx0XFx0cHJpdi1cXHUwMDNlcnhfbXR1ID0gbGUxNl90b19jcHUoZGVzYy1cXHUwMDNlcnhfbXR1KTtcXG4gMTA4OlxcdFxcdFxcdFxcdGVsc2VcXG4gMTA5OlxcdFxcdFxcdFxcdFxcdHByaXYtXFx1MDAzZXJ4X210dSA9IChzaXplX3QpXFxuIDExMDpcXHRcXHRcXHRcXHRcXHRcXHQweDYyMCAtIHByaXYtXFx1MDAzZXR4X2hkcl9sZW47XFxuIDExMTpcXHRcXHRcXHRcXHRtYXhsZW4gPSBwcml2LVxcdTAwM2V0eF9oZHJfbGVuICsgLyogVVNCIGRldmljZXMgKi9cXG4gMTEyOlxcdFxcdFxcdFxcdFxcdCBzaXplb2Yoc3RydWN0IHA1NF9yeF9kYXRhKSArXFxuIDExMzpcXHRcXHRcXHRcXHRcXHQgNCArIC8qIHJ4IGFsaWdubWVudCAqL1xcbiAxMTQ6XFx0XFx0XFx0XFx0XFx0IElFRUU4MDIxMV9NQVhfRlJBR19USFJFU0hPTEQ7XFxuIDExNTpcXHRcXHRcXHRcXHRpZiAocHJpdi1cXHUwMDNlcnhfbXR1IFxcdTAwM2UgbWF4bGVuIFxcdTAwMjZcXHUwMDI2IFBBR0VfU0laRSA9PSA0MDk2KSB7XFxuIDExNjpcXHRcXHRcXHRcXHRcXHRwcmludGsoS0VSTl9JTkZPIFxcXCJwNTQ6IHJ4X210dSByZWR1Y2VkIGZyb20gJWQgXFxcIlxcbiAxMTc6XFx0XFx0XFx0XFx0XFx0ICAgICAgIFxcXCJ0byAlZFxcXFxuXFxcIiwgcHJpdi1cXHUwMDNlcnhfbXR1LCBtYXhsZW4pO1xcbiAxMTg6XFx0XFx0XFx0XFx0XFx0cHJpdi1cXHUwMDNlcnhfbXR1ID0gbWF4bGVuO1xcbiAxMTk6XFx0XFx0XFx0XFx0fVxcbiAxMjA6XFx0XFx0XFx0XFx0YnJlYWs7XFxuIDEyMTpcXHRcXHRcXHRcXHR9XFxuIDEyMjpcXHRcXHRcXHRjYXNlIEJSX0NPREVfRVhQT1NFRF9JRjpcXG4gMTIzOlxcdFxcdFxcdFxcdGV4cF9pZiA9IChzdHJ1Y3QgZXhwX2lmICopIGJvb3RyZWMtXFx1MDAzZWRhdGE7XFxuIDEyNDpcXHRcXHRcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgKGxlbiAqIHNpemVvZigqZXhwX2lmKSAvIDQpOyBpKyspXFxuIDEyNTpcXHRcXHRcXHRcXHRcXHRpZiAoZXhwX2lmW2ldLmlmX2lkID09IGNwdV90b19sZTE2KElGX0lEX0xNQUMpKVxcbiAxMjY6XFx0XFx0XFx0XFx0XFx0XFx0cHJpdi1cXHUwMDNlZndfdmFyID0gbGUxNl90b19jcHUoZXhwX2lmW2ldLnZhcmlhbnQpO1xcbiAxMjc6XFx0XFx0XFx0XFx0YnJlYWs7XFxuIDEyODpcXHRcXHRcXHRjYXNlIEJSX0NPREVfREVQRU5ERU5UX0lGOlxcbiAxMjk6XFx0XFx0XFx0XFx0YnJlYWs7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIyOjM1OjQ0LjA1NzcwMDI5N1oiLCJTZXEiOjI1LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2MzI1MTI3NDgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKktNU0FOIEFzc2Vzc21lbnQ6IEZpcm13YXJlIFBhcnNpbmcgVmFsaWRhdGlvbioqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IG9mIHRoaXMgcGF0Y2gsIHdoaWNoIG1vZGlmaWVzIGBwNTRfcGFyc2VfZmlybXdhcmVgLCBpbnZvbHZlcyBhIGNyaXRpY2FsIHJldmlldyBvZiBpdHMgaW1wbGljYXRpb25zIGZvciBtZW1vcnkgc2FmZXR5LCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gdGhlIEtNU0FOIGFuZ2xlLiBJJ3ZlIGdvdCB0byBlbnN1cmUgdGhlcmUgYXJlIG5vIHZ1bG5lcmFiaWxpdGllcyByZWxhdGVkIHRvIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzZSB3aXRoaW4gdGhlIGtlcm5lbC5cblxuTG9va2luZyBhdCB0aGUgY29kZSwgaXQncyBjbGVhciB0aGUgcGF0Y2ggaXMgYmVlZmluZyB1cCB0aGUgaW5wdXQgdmFsaWRhdGlvbiB3aGVuIGhhbmRsaW5nIHRoZSBgQlJfQ09ERV9ERVNDUmAgY2FzZS4gUHJldmlvdXNseSwgdGhlIGNvZGUgd2FzIHZ1bG5lcmFibGUgYmVjYXVzZSBpdCB3YXMgcmVhZGluZyBkYXRhIGZyb20gdGhlIGBib290cmVjLVx1MDAzZWRhdGFgIGJ1ZmZlciB3aXRob3V0IHN1ZmZpY2llbnQgYm91bmRzIGNoZWNraW5nLiBTcGVjaWZpY2FsbHksIGl0IGxhY2tlZCBjaGVja3Mgb24gdGhlIHJlY29yZCBsZW5ndGgsIHBvdGVudGlhbGx5IGxlYWRpbmcgdG8gb3V0LW9mLWJvdW5kcyByZWFkcyBpZiB0aGUgZmlybXdhcmUgZGF0YSB3YXMgdHJ1bmNhdGVkIOKAkyBhIGNsYXNzaWMgS0FTQU4gaXNzdWUuIFRoZSBwYXRjaCBhZGRyZXNzZXMgdGhpcyBieSBhZGRpbmcgYSBjcnVjaWFsIGNoZWNrIHRvIGVuc3VyZSB0aGUgcmVjb3JkIGBsZW5gIGlzIGxhcmdlIGVub3VnaCB0byBjb250YWluIHRoZSBgYm9vdHJlY19kZXNjYCBzdHJ1Y3R1cmUgdXAgdG8gYHJ4X2tleWNhY2hlX3NpemVgLCBhcyB3ZWxsIGFzIHZhbGlkYXRpbmcgdGhhdCBgcnhfZW5kYCBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gYDB4MzUwMGAgYW5kIGByeF9lbmQgLSAweDM1MDBgIGlzIGdyZWF0ZXIgdGhhbiBgcnhfc3RhcnRgLiBUaGlzIGVmZmVjdGl2ZWx5IHByZXZlbnRzIGFuIGludGVnZXIgdW5kZXJmbG93IG9yIGFuIGludmFsaWQgUlggYnVmZmVyIHJhbmdlIGNhbGN1bGF0aW9uLlxuXG5Ob3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb246IGRvZXMgdGhpcyBpbnRyb2R1Y2Ugb3IgZXhhY2VyYmF0ZSBhbnkgS01TQU4gY29uY2VybnM/IFRvIGFzc2VzcyB0aGlzLCBJJ3ZlIGdvdCB0byByaWdvcm91c2x5IGV4YW1pbmUgaWYgdGhlIHBhdGNoIGludHJvZHVjZXMgYW55IG9mIHRoZSBmb2xsb3dpbmcgS01TQU4tcmVsZXZhbnQgc2NlbmFyaW9zOlxuMS4gIEtlcm5lbCBkYXRhIHN0cnVjdHVyZXMgcGFzc2VkIHRvIHVzZXIgc3BhY2Ugd2l0aCB1bmluaXRpYWxpemVkIGZpZWxkcy5cbjIuICBDb25kaXRpb25hbCBsb2dpYyByZWx5aW5nIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLlxuMy4gIENvbXBsZXggZGF0YSBzdHJ1Y3R1cmUgYWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcyBtaWdodCBiZSBhY2Nlc3NlZCBsYXRlci5cbjQuICBCb3VuZHMgY2hlY2tzIG9yIGxlbmd0aCBjYWxjdWxhdGlvbnMgdGhhdCBjb3VsZCBlbmFibGUgYWNjZXNzIHRvIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgaW4gZXhpc3RpbmcgYnVmZmVycy5cblxuR29pbmcgdGhyb3VnaCB0aGUgY2hlY2tsaXN0LCBpdCdzIHByZXR0eSBjbGVhciB0aGF0IHRoaXMgcGF0Y2ggZG9lcyBub3QgZmFsbCBpbnRvIGFueSBvZiB0aGVzZSBjYXRlZ29yaWVzLiBUaGUgcGF0Y2ggKipvbmx5KiogdmFsaWRhdGVzIGlucHV0IGZyb20gdGhlIGZpcm13YXJlIGJ1ZmZlci4gVGhlIHZhcmlhYmxlcyBgcnhfc3RhcnRgIGFuZCBgcnhfZW5kYCBhcmUgYWx3YXlzIGV4cGxpY2l0bHkgaW5pdGlhbGl6ZWQgZnJvbSB2YWx1ZXMgcmVhZCBmcm9tIGBib290cmVjLVx1MDAzZWRhdGFgIGJlZm9yZSBiZWluZyB1c2VkLiBObyB1bmluaXRpYWxpemVkIG1lbW9yeSBpcyBpbnRyb2R1Y2VkLCBhbGxvY2F0ZWQsIG9yIGNvcGllZCB0byB1c2VyIHNwYWNlLiBJdCB0aWdodGVucyB0aGUgYm91bmRzIGNoZWNrcyBhbmQgcmVqZWN0cyBpbnZhbGlkL3Nob3J0IGRlc2NyaXB0b3JzLlxuXG5UaGVyZWZvcmUsIHRoZSBmaXggaXMgc29sZWx5IGFib3V0IHN0YW5kYXJkIGlucHV0IHZhbGlkYXRpb24gYW5kIHNhbml0aXphdGlvbiwgd2hpY2ggYXJlIEtBU0FOIHByb2JsZW1zLiBUaGUgS01TQU4gZnV6emluZyBtZXRob2RvbG9neSBkb2Vzbid0IHByb3ZpZGUgYW55IGFkZGl0aW9uYWwgYmVuZWZpdCBoZXJlLiBUaGUgaXNzdWUgZml4ZWQgaXMgcHJldmVudGluZyBvdXQtb2YtYm91bmRzIHJlYWRzIGFuZCBpbnRlZ2VyIHVuZGVyZmxvdy4gVGhlc2UgYXJlIHN0YW5kYXJkIEtBU0FOIGFuZCBsb2dpYyBpc3N1ZXMgYW5kIG5vdCBLTVNBTi1zcGVjaWZpYy5cblxuU28sIGluIGNvbmNsdXNpb24sIHRoZSBwYXRjaCBwcmltYXJpbHkgYWRkcmVzc2VzIEtBU0FOIHZ1bG5lcmFiaWxpdGllcyBieSB2YWxpZGF0aW5nIGZpcm13YXJlIGRhdGEsIG1ha2luZyBpdCBzYWZlIHRvIHNheSB0aGF0IGBOZWVkc0tNU0FOID0gZmFsc2VgLiBJJ2xsIGNhbGwgYHNldC1yZXN1bHRzYCB3aXRoIHRoaXMgYXNzZXNzbWVudCwgY29uZmlkZW50IGluIHRoZSByZWFzb25pbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwODIsIk91dHB1dFRva2VucyI6MTkzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODUzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjI6MzU6NTAuMzgyODM0MTQ5WiIsIlNlcSI6MjYsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzg4MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGlucHV0IHZhbGlkYXRpb24gYW5kIGJvdW5kcyBjaGVja2luZyBmb3IgZmlybXdhcmUgYm9vdCByZWNvcmQgZGVzY3JpcHRvcnMgaW4gcDU0X3BhcnNlX2Zpcm13YXJlKCkuIFNwZWNpZmljYWxseSwgaXQgdmFsaWRhdGVzIHRoYXQgdGhlIGJvb3QgcmVjb3JkIGxlbmd0aCBpcyBzdWZmaWNpZW50IHRvIGNvdmVyIHN0cnVjdCBib290cmVjX2Rlc2MgZmllbGRzIChwcmV2ZW50aW5nIG91dC1vZi1ib3VuZHMgcmVhZHMgb24gdHJ1bmNhdGVkIGZpcm13YXJlIGJ1ZmZlcnMsIGRldGVjdGFibGUgYnkgS0FTQU4pIGFuZCBlbnN1cmVzIHRoYXQgcnhfZW5kIFxcdTAwM2U9IDB4MzUwMCBhbmQgcnhfZW5kIC0gMHgzNTAwIFxcdTAwM2Ugcnhfc3RhcnQgdG8gcHJldmVudCBpbnRlZ2VyIHVuZGVyZmxvdyBhbmQgaW52YWxpZCBidWZmZXIgcmFuZ2VzLlxcblxcbk5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzIGFsbG9jYXRlZCwgcmVhZCwgb3IgZXhwb3NlZC4gTG9jYWwgdmFyaWFibGVzIChyeF9zdGFydCwgcnhfZW5kKSBhcmUgZXhwbGljaXRseSBpbml0aWFsaXplZCBmcm9tIHRoZSBmaXJtd2FyZSBkZXNjcmlwdG9yIGJlZm9yZSBiZWluZyBjaGVja2VkIGFuZCBzdG9yZWQuIE5vIGRhdGEgaXMgY29waWVkIHRvIHVzZXJzcGFjZSB3aXRob3V0IGluaXRpYWxpemF0aW9uLiBUaGVyZWZvcmUsIHN0YW5kYXJkIEtBU0FOIGJ1aWxkcyBhcmUgc3VmZmljaWVudCBhbmQgS01TQU4gZnV6emluZyBpcyBub3QgbmVlZGVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgaW5wdXQgdmFsaWRhdGlvbiBhbmQgYm91bmRzIGNoZWNraW5nIGZvciBmaXJtd2FyZSBib290IHJlY29yZCBkZXNjcmlwdG9ycyBpbiBwNTRfcGFyc2VfZmlybXdhcmUoKS4gU3BlY2lmaWNhbGx5LCBpdCB2YWxpZGF0ZXMgdGhhdCB0aGUgYm9vdCByZWNvcmQgbGVuZ3RoIGlzIHN1ZmZpY2llbnQgdG8gY292ZXIgc3RydWN0IGJvb3RyZWNfZGVzYyBmaWVsZHMgKHByZXZlbnRpbmcgb3V0LW9mLWJvdW5kcyByZWFkcyBvbiB0cnVuY2F0ZWQgZmlybXdhcmUgYnVmZmVycywgZGV0ZWN0YWJsZSBieSBLQVNBTikgYW5kIGVuc3VyZXMgdGhhdCByeF9lbmQgXFx1MDAzZT0gMHgzNTAwIGFuZCByeF9lbmQgLSAweDM1MDAgXFx1MDAzZSByeF9zdGFydCB0byBwcmV2ZW50IGludGVnZXIgdW5kZXJmbG93IGFuZCBpbnZhbGlkIGJ1ZmZlciByYW5nZXMuXFxuXFxuTm8gdW5pbml0aWFsaXplZCBtZW1vcnkgaXMgYWxsb2NhdGVkLCByZWFkLCBvciBleHBvc2VkLiBMb2NhbCB2YXJpYWJsZXMgKHJ4X3N0YXJ0LCByeF9lbmQpIGFyZSBleHBsaWNpdGx5IGluaXRpYWxpemVkIGZyb20gdGhlIGZpcm13YXJlIGRlc2NyaXB0b3IgYmVmb3JlIGJlaW5nIGNoZWNrZWQgYW5kIHN0b3JlZC4gTm8gZGF0YSBpcyBjb3BpZWQgdG8gdXNlcnNwYWNlIHdpdGhvdXQgaW5pdGlhbGl6YXRpb24uIFRoZXJlZm9yZSwgc3RhbmRhcmQgS0FTQU4gYnVpbGRzIGFyZSBzdWZmaWNpZW50IGFuZCBLTVNBTiBmdXp6aW5nIGlzIG5vdCBuZWVkZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowvm8rn[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-06 22:13:11 +0000 UTC FinishedAt: 2026-09-06 22:35:51 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "1b60ed34f712e9f606d80951f1586f4274ebadf1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "P54_COMMON", "P54_USB", "MAC80211", "USB" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "1b60ed34f712e9f606d80951f1586f4274ebadf1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "P54_COMMON", "P54_USB", "MAC80211", "USB" ], "series_id": "cd518fb1-7904-4199-bf48-a6dcad792fa7" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "p54_parse_firmware", "p54u_start_ops" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIyOjM1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1A1NF9DT01NT04mIzM0OywKICAgICYjMzQ7UDU0X1VTQiYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtwNTRfcGFyc2VfZmlybXdhcmUmIzM0OywKICAgICYjMzQ7cDU0dV9zdGFydF9vcHMmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGlucHV0IHZhbGlkYXRpb24gYW5kIGJvdW5kcyBjaGVja2luZyBmb3IgZmlybXdhcmUgYm9vdCByZWNvcmQgZGVzY3JpcHRvcnMgaW4gcDU0X3BhcnNlX2Zpcm13YXJlKCkuIFNwZWNpZmljYWxseSwgaXQgdmFsaWRhdGVzIHRoYXQgdGhlIGJvb3QgcmVjb3JkIGxlbmd0aCBpcyBzdWZmaWNpZW50IHRvIGNvdmVyIHN0cnVjdCBib290cmVjX2Rlc2MgZmllbGRzIChwcmV2ZW50aW5nIG91dC1vZi1ib3VuZHMgcmVhZHMgb24gdHJ1bmNhdGVkIGZpcm13YXJlIGJ1ZmZlcnMsIGRldGVjdGFibGUgYnkgS0FTQU4pIGFuZCBlbnN1cmVzIHRoYXQgcnhfZW5kIFx1MDAzZT0gMHgzNTAwIGFuZCByeF9lbmQgLSAweDM1MDAgXHUwMDNlIHJ4X3N0YXJ0IHRvIHByZXZlbnQgaW50ZWdlciB1bmRlcmZsb3cgYW5kIGludmFsaWQgYnVmZmVyIHJhbmdlcy5cblxuTm8gdW5pbml0aWFsaXplZCBtZW1vcnkgaXMgYWxsb2NhdGVkLCByZWFkLCBvciBleHBvc2VkLiBMb2NhbCB2YXJpYWJsZXMgKHJ4X3N0YXJ0LCByeF9lbmQpIGFyZSBleHBsaWNpdGx5IGluaXRpYWxpemVkIGZyb20gdGhlIGZpcm13YXJlIGRlc2NyaXB0b3IgYmVmb3JlIGJlaW5nIGNoZWNrZWQgYW5kIHN0b3JlZC4gTm8gZGF0YSBpcyBjb3BpZWQgdG8gdXNlcnNwYWNlIHdpdGhvdXQgaW5pdGlhbGl6YXRpb24uIFRoZXJlZm9yZSwgc3RhbmRhcmQgS0FTQU4gYnVpbGRzIGFyZSBzdWZmaWNpZW50IGFuZCBLTVNBTiBmdXp6aW5nIGlzIG5vdCBuZWVkZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYm91bmRzIGFuZCByYW5nZSB2YWxpZGF0aW9uIGNoZWNrcyBmb3IgZmlybXdhcmUgZGVzY3JpcHRvcnMgaW4gcDU0X3BhcnNlX2Zpcm13YXJlKCkuIFRoaXMgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHZpYSB0aGUgcDU0dXNiIGRyaXZlciB3aGljaCBjYW4gYmUgZnV6emVkIHVzaW5nIFVTQiBlbXVsYXRpb24gKGUuZy4gUmF3IEdhZGdldCkuIEZ1enppbmcgaXMgd2FycmFudGVkIHRvIHZlcmlmeSB0aGF0IG1hbGZvcm1lZCBmaXJtd2FyZSBpbWFnZXMgYW5kIGVkZ2UgY2FzZXMgYXJlIGhhbmRsZWQgc2FmZWx5LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIyOjM1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZTcwM2MwMzQ2YmNmZDlmZDVmMWU0NGU5Mzk5OGYxYmVmZGIxMzI2M1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gU2VwIDYgMjI6MzU6MDkgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmNcbmluZGV4IGEzZDkwNTNmMDQzYzYuLjVkODJlMGE0MzgzNTggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jXG5AQCAtNzksOSAmIzQzOzc5LDI2IEBAIGludCBwNTRfcGFyc2VfZmlybXdhcmUoc3RydWN0IGllZWU4MDIxMV9odyAqZGV2LCBjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3KVxuIFx0XHRjYXNlIEJSX0NPREVfREVTQ1I6IHtcbiBcdFx0XHRzdHJ1Y3QgYm9vdHJlY19kZXNjICpkZXNjID1cbiBcdFx0XHRcdChzdHJ1Y3QgYm9vdHJlY19kZXNjICopYm9vdHJlYy1cdTAwM2VkYXRhO1xuLVx0XHRcdHByaXYtXHUwMDNlcnhfc3RhcnQgPSBsZTMyX3RvX2NwdShkZXNjLVx1MDAzZXJ4X3N0YXJ0KTtcbi1cdFx0XHQvKiBGSVhNRSBhZGQgc2FuaXR5IGNoZWNraW5nICovXG4tXHRcdFx0cHJpdi1cdTAwM2VyeF9lbmQgPSBsZTMyX3RvX2NwdShkZXNjLVx1MDAzZXJ4X2VuZCkgLSAweDM1MDA7XG4mIzQzO1x0XHRcdHUzMiByeF9zdGFydCwgcnhfZW5kO1xuJiM0MztcbiYjNDM7XHRcdFx0aWYgKGxlbiBcdTAwM2MgRElWX1JPVU5EX1VQKG9mZnNldG9mZW5kKHN0cnVjdCBib290cmVjX2Rlc2MsXG4mIzQzO1x0XHRcdFx0XHRcdFx0ICAgcnhfa2V5Y2FjaGVfc2l6ZSksXG4mIzQzO1x0XHRcdFx0XHRcdCAgICAgICBzaXplb2YoKmJvb3RyZWMtXHUwMDNlZGF0YSkpKSB7XG4mIzQzO1x0XHRcdFx0d2lwaHlfZXJyKHByaXYtXHUwMDNlaHctXHUwMDNld2lwaHksXG4mIzQzO1x0XHRcdFx0XHQgIFwmIzM0O2Zpcm13YXJlIGRlc2NyaXB0b3IgaXMgdG9vIHNob3J0XFxuXCYjMzQ7KTtcbiYjNDM7XHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHRcdFx0fVxuJiM0MztcbiYjNDM7XHRcdFx0cnhfc3RhcnQgPSBsZTMyX3RvX2NwdShkZXNjLVx1MDAzZXJ4X3N0YXJ0KTtcbiYjNDM7XHRcdFx0cnhfZW5kID0gbGUzMl90b19jcHUoZGVzYy1cdTAwM2VyeF9lbmQpO1xuJiM0MztcdFx0XHRpZiAocnhfZW5kIFx1MDAzYyAweDM1MDAgfHwgcnhfZW5kIC0gMHgzNTAwIFx1MDAzYz0gcnhfc3RhcnQpIHtcbiYjNDM7XHRcdFx0XHR3aXBoeV9lcnIocHJpdi1cdTAwM2Vody1cdTAwM2V3aXBoeSxcbiYjNDM7XHRcdFx0XHRcdCAgXCYjMzQ7ZmlybXdhcmUgZGVzY3JpcHRvciBoYXMgaW52YWxpZCBSWCByYW5nZVxcblwmIzM0Oyk7XG4mIzQzO1x0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1x0XHRcdH1cbiYjNDM7XG4mIzQzO1x0XHRcdHByaXYtXHUwMDNlcnhfc3RhcnQgPSByeF9zdGFydDtcbiYjNDM7XHRcdFx0cHJpdi1cdTAwM2VyeF9lbmQgPSByeF9lbmQgLSAweDM1MDA7XG4gXHRcdFx0cHJpdi1cdTAwM2VoZWFkcm9vbSA9IGRlc2MtXHUwMDNlaGVhZHJvb207XG4gXHRcdFx0cHJpdi1cdTAwM2V0YWlscm9vbSA9IGRlc2MtXHUwMDNldGFpbHJvb207XG4gXHRcdFx0cHJpdi1cdTAwM2Vwcml2YWN5X2NhcHMgPSBkZXNjLVx1MDAzZXByaXZhY3lfY2FwcztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAyMjozNTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtQNTRfQ09NTU9OJiMzNDssCiAgICAmIzM0O1A1NF9VU0ImIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7VVNCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cDU0X3BhcnNlX2Zpcm13YXJlJiMzNDssCiAgICAmIzM0O3A1NHVfc3RhcnRfb3BzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYm91bmRzIGFuZCByYW5nZSB2YWxpZGF0aW9uIGNoZWNrcyBmb3IgZmlybXdhcmUgZGVzY3JpcHRvcnMgaW4gcDU0X3BhcnNlX2Zpcm13YXJlKCkuIFRoaXMgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHZpYSB0aGUgcDU0dXNiIGRyaXZlciB3aGljaCBjYW4gYmUgZnV6emVkIHVzaW5nIFVTQiBlbXVsYXRpb24gKGUuZy4gUmF3IEdhZGdldCkuIEZ1enppbmcgaXMgd2FycmFudGVkIHRvIHZlcmlmeSB0aGF0IG1hbGZvcm1lZCBmaXJtd2FyZSBpbWFnZXMgYW5kIGVkZ2UgY2FzZXMgYXJlIGhhbmRsZWQgc2FmZWx5LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZTcwM2MwMzQ2YmNmZDlmZDVmMWU0NGU5Mzk5OGYxYmVmZGIxMzI2MwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTdW4gU2VwIDYgMjI6MzU6MDkgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYwppbmRleCBhM2Q5MDUzZjA0M2M2Li41ZDgyZTBhNDM4MzU4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMKQEAgLTc5LDkgJiM0Mzs3OSwyNiBAQCBpbnQgcDU0X3BhcnNlX2Zpcm13YXJlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmRldiwgY29uc3Qgc3RydWN0IGZpcm13YXJlICpmdykKIAkJY2FzZSBCUl9DT0RFX0RFU0NSOiB7CiAJCQlzdHJ1Y3QgYm9vdHJlY19kZXNjICpkZXNjID0KIAkJCQkoc3RydWN0IGJvb3RyZWNfZGVzYyAqKWJvb3RyZWMtJmd0O2RhdGE7Ci0JCQlwcml2LSZndDtyeF9zdGFydCA9IGxlMzJfdG9fY3B1KGRlc2MtJmd0O3J4X3N0YXJ0KTsKLQkJCS8qIEZJWE1FIGFkZCBzYW5pdHkgY2hlY2tpbmcgKi8KLQkJCXByaXYtJmd0O3J4X2VuZCA9IGxlMzJfdG9fY3B1KGRlc2MtJmd0O3J4X2VuZCkgLSAweDM1MDA7CiYjNDM7CQkJdTMyIHJ4X3N0YXJ0LCByeF9lbmQ7CiYjNDM7CiYjNDM7CQkJaWYgKGxlbiAmbHQ7IERJVl9ST1VORF9VUChvZmZzZXRvZmVuZChzdHJ1Y3QgYm9vdHJlY19kZXNjLAomIzQzOwkJCQkJCQkgICByeF9rZXljYWNoZV9zaXplKSwKJiM0MzsJCQkJCQkgICAgICAgc2l6ZW9mKCpib290cmVjLSZndDtkYXRhKSkpIHsKJiM0MzsJCQkJd2lwaHlfZXJyKHByaXYtJmd0O2h3LSZndDt3aXBoeSwKJiM0MzsJCQkJCSAgJiMzNDtmaXJtd2FyZSBkZXNjcmlwdG9yIGlzIHRvbyBzaG9ydFxuJiMzNDspOwomIzQzOwkJCQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJCQl9CiYjNDM7CiYjNDM7CQkJcnhfc3RhcnQgPSBsZTMyX3RvX2NwdShkZXNjLSZndDtyeF9zdGFydCk7CiYjNDM7CQkJcnhfZW5kID0gbGUzMl90b19jcHUoZGVzYy0mZ3Q7cnhfZW5kKTsKJiM0MzsJCQlpZiAocnhfZW5kICZsdDsgMHgzNTAwIHx8IHJ4X2VuZCAtIDB4MzUwMCAmbHQ7PSByeF9zdGFydCkgewomIzQzOwkJCQl3aXBoeV9lcnIocHJpdi0mZ3Q7aHctJmd0O3dpcGh5LAomIzQzOwkJCQkJICAmIzM0O2Zpcm13YXJlIGRlc2NyaXB0b3IgaGFzIGludmFsaWQgUlggcmFuZ2VcbiYjMzQ7KTsKJiM0MzsJCQkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CQkJfQomIzQzOwomIzQzOwkJCXByaXYtJmd0O3J4X3N0YXJ0ID0gcnhfc3RhcnQ7CiYjNDM7CQkJcHJpdi0mZ3Q7cnhfZW5kID0gcnhfZW5kIC0gMHgzNTAwOwogCQkJcHJpdi0mZ3Q7aGVhZHJvb20gPSBkZXNjLSZndDtoZWFkcm9vbTsKIAkJCXByaXYtJmd0O3RhaWxyb29tID0gZGVzYy0mZ3Q7dGFpbHJvb207CiAJCQlwcml2LSZndDtwcml2YWN5X2NhcHMgPSBkZXNjLSZndDtwcml2YWN5X2NhcHM7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIyOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyMjMKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxNTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaCBmb3IgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW4uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IGlmIHRoaXMgcGF0Y2ggaXMgZXZlbiB3b3J0aCBvdXIgZnV6emluZyBlZmZvcnRzLCBhbmQgaWYgc28sIGhvdyB0byBhcHByb2FjaCBpdCBzdHJhdGVnaWNhbGx5LiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucyBhbmQgcGlucG9pbnQgdGhlIG1vc3QgaW1wYWN0ZnVsIHN5bWJvbHMuCgpUaGUgdGFyZ2V0IGlzIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jYCwgYW5kIHRoZSBmdW5jdGlvbiBvZiBpbnRlcmVzdCBpcyBgcDU0X3BhcnNlX2Zpcm13YXJlYC4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gZ2V0IHRoZSBsYXkgb2YgdGhlIGxhbmQuIEkmIzM5O2xsIHVzZSBgZ3JlcHBlcmAgKG9yIG15IHRydXN0eSBmaWxlIHJlYWRlcikgdG8gZ2V0IHRoZSBicm9hZGVyIGNvbnRleHQgb2YgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmNgLiBVbmRlcnN0YW5kaW5nIGhvdyB0aGlzIGZpbGUgZml0cyBpbnRvIHRoZSBsYXJnZXIgcGljdHVyZSBvZiB0aGUgYHA1NGAgbW9kdWxlIGlzIGNydWNpYWwuCgpOZXh0LCBJIG5lZWQgdG8ga25vdyBob3cgdGhlIGBwNTRgIG1vZHVsZSBpcyB1c2VkLiBJcyB0aGlzIGEgVVNCLCBQQ0ksIG9yIFNQSSBkZXZpY2U/IFRoZSBoYXJkd2FyZSBpbnRlcmZhY2Ugc2lnbmlmaWNhbnRseSBpbXBhY3RzIHBvdGVudGlhbCBhdHRhY2sgc3VyZmFjZXMgYW5kIGZ1enppbmcgc3RyYXRlZ2llcy4gSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50byB0aGUgcmVsZXZhbnQgS2NvbmZpZyBhbmQgdGhlIHNvdXJjZSBmaWxlcyBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2AgdG8gZGV0ZXJtaW5lIHRoYXQuIFRoaXMgaW5mb3JtYXRpb24gd2lsbCBoZWxwIG1lIGRldGVybWluZSB3aGljaCBpbnRlcmFjdGlvbnMgY291bGQgbGVhZCB0byBpbnRlcmVzdGluZyBhbmQgY29tcGxleCBzdGF0ZSBjaGFuZ2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIyOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Y29kZXNlYXJjaC1kaXItaW5kZXg8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0RpciYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlcyYjMzQ7OiBbCiAgICAmIzM0O2VlcHJvbS5jJiMzNDssCiAgICAmIzM0O2VlcHJvbS5oJiMzNDssCiAgICAmIzM0O2Z3aW8uYyYjMzQ7LAogICAgJiMzNDtsZWQuYyYjMzQ7LAogICAgJiMzNDtsbWFjLmgmIzM0OywKICAgICYjMzQ7bWFpbi5jJiMzNDssCiAgICAmIzM0O3A1NC5oJiMzNDssCiAgICAmIzM0O3A1NHBjaS5jJiMzNDssCiAgICAmIzM0O3A1NHBjaS5oJiMzNDssCiAgICAmIzM0O3A1NHNwaS5jJiMzNDssCiAgICAmIzM0O3A1NHNwaS5oJiMzNDssCiAgICAmIzM0O3A1NHNwaV9lZXByb20uaCYjMzQ7LAogICAgJiMzNDtwNTR1c2IuYyYjMzQ7LAogICAgJiMzNDtwNTR1c2IuaCYjMzQ7LAogICAgJiMzNDt0eHJ4LmMmIzM0OwogIF0sCiAgJiMzNDtTdWJkaXJzJiMzNDs6IG51bGwKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIyOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4MDgKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiA5MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIHA1NHVzYiBEcml2ZXIgYW5kIEVtdWxhdGlvbiBQb3NzaWJpbGl0aWVzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgcDU0dXNiLmNgLCB3aGljaCwgYXMgZXhwZWN0ZWQsIHJlc2lkZXMgd2l0aGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvYC4gTXkgaW50ZXJlc3QgaXMgcGlxdWVkIGJlY2F1c2UgSSYjMzk7bSB0aGlua2luZyBhYm91dCBVU0IgZGV2aWNlIGVtdWxhdGlvbiBhbmQgaG93IHRoaXMgZHJpdmVyIG1pZ2h0IGludGVyYWN0IHdpdGggaXQuIFRoZSBVU0IgUmF3IEdhZGdldCBhbmQgc3l6a2FsbGVyJiMzOTtzIFVTQiBlbXVsYXRpb24gYXJlIHBhcnRpY3VsYXJseSByZWxldmFudCBoZXJlLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSBpbnRlcmVzdGluZyBwb3NzaWJpbGl0aWVzIGxpZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhpcyBkcml2ZXIgdG8gZmlndXJlIG91dCB0aGUgYmVzdCB3YXkgdG8gaW50ZXJhY3Qgd2l0aCBpdCwgc28gSSYjMzk7bGwgZ28gZGlnZ2luZyBpbnRvIGVpdGhlciBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L0tjb25maWdgIG9yLCBpZiB0aGF0JiMzOTtzIG5vdCBzcGVjaWZpYyBlbm91Z2gsIHRoZSBtb3JlIGdlbmVyYWwgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL0tjb25maWdgIGZpbGUuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIEtjb25maWcgZmlsZXMgZm9yIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gVGhhdCYjMzk7cyB0aGUgbG9naWNhbCBuZXh0IHN0ZXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjI6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7UDU0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDEzMDcgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9NYWtlZmlsZToyOm9iai0kKENPTkZJR19QNTRfQ09NTU9OKVx0JiM0Mzs9IHA1NC9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L0tjb25maWc6Mjpjb25maWcgUDU0X0NPTU1PTlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1NvZnRtYWMgUHJpc201NCBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L0tjb25maWctMTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvS2NvbmZpZzoxNzpjb25maWcgUDU0X1VTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L0tjb25maWctMTgtXHR0cmlzdGF0ZSBcJiMzNDtQcmlzbTU0IFVTQiBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvS2NvbmZpZzoxOTpcdGRlcGVuZHMgb24gUDU0X0NPTU1PTiBcdTAwMjZcdTAwMjYgVVNCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvS2NvbmZpZy0yMC1cdHNlbGVjdCBDUkMzMlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9LY29uZmlnLTI4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L0tjb25maWc6Mjk6Y29uZmlnIFA1NF9QQ0lcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9LY29uZmlnLTMwLVx0dHJpc3RhdGUgXCYjMzQ7UHJpc201NCBQQ0kgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L0tjb25maWc6MzE6XHRkZXBlbmRzIG9uIFA1NF9DT01NT04gXHUwMDI2XHUwMDI2IFBDSVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L0tjb25maWctMzItXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L0tjb25maWctNDItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvS2NvbmZpZzo0Mzpjb25maWcgUDU0X1NQSVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L0tjb25maWctNDQtXHR0cmlzdGF0ZSBcJiMzNDtQcmlzbTU0IFNQSSAoc3RsYzQ1eHgpIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9LY29uZmlnOjQ1Olx0ZGVwZW5kcyBvbiBQNTRfQ09NTU9OIFx1MDAyNlx1MDAyNiBTUElfTUFTVEVSXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvS2NvbmZpZy00Ni1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvS2NvbmZpZy01MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9LY29uZmlnOjUyOmNvbmZpZyBQNTRfU1BJX0RFRkFVTFRfRUVQUk9NXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvS2NvbmZpZy01My1cdGJvb2wgXCYjMzQ7SW5jbHVkZSBmYWxsYmFjayBFRVBST00gYmxvYlwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L0tjb25maWc6NTQ6XHRkZXBlbmRzIG9uIFA1NF9TUElcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9LY29uZmlnLTU1LVx0ZGVmYXVsdCBuXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L0tjb25maWctNjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvS2NvbmZpZzo2OTpjb25maWcgUDU0X0xFRFNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9LY29uZmlnLTcwLVx0Ym9vbFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L0tjb25maWc6NzE6XHRkZXBlbmRzIG9uIFA1NF9DT01NT04gXHUwMDI2XHUwMDI2IE1BQzgwMjExX0xFRFMgXHUwMDI2XHUwMDI2IChMRURTX0NMQVNTID0geSB8fCBMRURTX0NMQVNTID0gUDU0X0NPTU1PTilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9LY29uZmlnLTcyLVx0ZGVmYXVsdCB5XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L01ha2VmaWxlPTI9cDU0Y29tbW9uLW9ianNcdFx0XHQ6PSBlZXByb20ubyBmd2lvLm8gdHhyeC5vIG1haW4ub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L01ha2VmaWxlOjM6cDU0Y29tbW9uLSQoQ09ORklHX1A1NF9MRURTKVx0JiM0Mzs9IGxlZC5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvTWFrZWZpbGUtNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9NYWtlZmlsZTo1Om9iai0kKENPTkZJR19QNTRfQ09NTU9OKVx0JiM0Mzs9IHA1NGNvbW1vbi5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfUDU0X1VTQilcdFx0JiM0Mzs9IHA1NHVzYi5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvTWFrZWZpbGU6NzpvYmotJChDT05GSUdfUDU0X1BDSSlcdFx0JiM0Mzs9IHA1NHBjaS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvTWFrZWZpbGU6ODpvYmotJChDT05GSUdfUDU0X1NQSSlcdFx0JiM0Mzs9IHA1NHNwaS5vXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYz0yNz1pbnQgcDU0X3BhcnNlX2Zpcm13YXJlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmRldiwgY29uc3Qgc3RydWN0IGZpcm13YXJlICpmdylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTE1Ni1cdFx0aWYgKHByaXYtXHUwMDNlZndfdmFyIFx1MDAzZT0gMHg1MDApIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM6MTU3Olx0XHRcdHByaXYtXHUwMDNldHhfc3RhdHNbUDU0X1FVRVVFX0FDX1ZPXS5saW1pdCA9IDE2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYzoxNTg6XHRcdFx0cHJpdi1cdTAwM2V0eF9zdGF0c1tQNTRfUVVFVUVfQUNfVkldLmxpbWl0ID0gMTY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jOjE1OTpcdFx0XHRwcml2LVx1MDAzZXR4X3N0YXRzW1A1NF9RVUVVRV9BQ19CRV0ubGltaXQgPSAxNjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM6MTYwOlx0XHRcdHByaXYtXHUwMDNldHhfc3RhdHNbUDU0X1FVRVVFX0FDX0JLXS5saW1pdCA9IDE2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy0xNjEtXHRcdH0gZWxzZSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jOjE2MjpcdFx0XHRwcml2LVx1MDAzZXR4X3N0YXRzW1A1NF9RVUVVRV9BQ19WT10ubGltaXQgPSAzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYzoxNjM6XHRcdFx0cHJpdi1cdTAwM2V0eF9zdGF0c1tQNTRfUVVFVUVfQUNfVkldLmxpbWl0ID0gNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM6MTY0Olx0XHRcdHByaXYtXHUwMDNldHhfc3RhdHNbUDU0X1FVRVVFX0FDX0JFXS5saW1pdCA9IDM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jOjE2NTpcdFx0XHRwcml2LVx1MDAzZXR4X3N0YXRzW1A1NF9RVUVVRV9BQ19CS10ubGltaXQgPSAyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy0xNjYtXHRcdH1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM6MTY3Olx0XHRwcml2LVx1MDAzZWh3LVx1MDAzZXF1ZXVlcyA9IFA1NF9RVUVVRV9BQ19OVU07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTE2OC1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jPTIwMT1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnA1NF9hbGxvY19za2Ioc3RydWN0IHA1NF9jb21tb24gKnByaXYsIHUxNiBoZHJfZmxhZ3MsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy0yMDctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jOjIwODpcdGlmIChmcmFtZV9sZW4gXHUwMDNlIFA1NF9NQVhfQ1RSTF9GUkFNRV9MRU4pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTIwOS1cdFx0cmV0dXJuIE5VTEw7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYz0yMjc9aW50IHA1NF9kb3dubG9hZF9lZXByb20oc3RydWN0IHA1NF9jb21tb24gKnByaXYsIHZvaWQgKmJ1Zixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTI0MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM6MjQxOlx0c2tiID0gcDU0X2FsbG9jX3NrYihwcml2LCBQNTRfSERSX0ZMQUdfQ09OVFJPTCwgZWVwcm9tX2hkcl9zaXplICYjNDM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jOjI0MjpcdFx0XHQgICAgbGVuLCBQNTRfQ09OVFJPTF9UWVBFX0VFUFJPTV9SRUFEQkFDSyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtMjQzLVx0XHRcdCAgICBHRlBfS0VSTkVMKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jPTI3Nz1pbnQgcDU0X3VwZGF0ZV9iZWFjb25fdGltKHN0cnVjdCBwNTRfY29tbW9uICpwcml2LCB1MTYgYWlkLCBib29sIHNldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTI4MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM6MjgyOlx0c2tiID0gcDU0X2FsbG9jX3NrYihwcml2LCBQNTRfSERSX0ZMQUdfQ09OVFJPTF9PUFNFVCwgc2l6ZW9mKCp0aW0pLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYzoyODM6XHRcdFx0ICAgIFA1NF9DT05UUk9MX1RZUEVfVElNLCBHRlBfQVRPTUlDKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtMjg0LVx0aWYgKHVubGlrZWx5KCFza2IpKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM9Mjk0PWludCBwNTRfc3RhX3VubG9jayhzdHJ1Y3QgcDU0X2NvbW1vbiAqcHJpdiwgdTggKmFkZHIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy0yOTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jOjI5OTpcdHNrYiA9IHA1NF9hbGxvY19za2IocHJpdiwgUDU0X0hEUl9GTEFHX0NPTlRST0xfT1BTRVQsIHNpemVvZigqc3RhKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM6MzAwOlx0XHRcdCAgICBQNTRfQ09OVFJPTF9UWVBFX1BTTV9TVEFfVU5MT0NLLCBHRlBfQVRPTUlDKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtMzAxLVx0aWYgKHVubGlrZWx5KCFza2IpKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM9MzEwPWludCBwNTRfdHhfY2FuY2VsKHN0cnVjdCBwNTRfY29tbW9uICpwcml2LCBfX2xlMzIgcmVxX2lkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtMzE4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYzozMTk6XHRza2IgPSBwNTRfYWxsb2Nfc2tiKHByaXYsIFA1NF9IRFJfRkxBR19DT05UUk9MX09QU0VULCBzaXplb2YoKmNhbmNlbCksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jOjMyMDpcdFx0XHQgICAgUDU0X0NPTlRST0xfVFlQRV9UWENBTkNFTCwgR0ZQX0FUT01JQyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTMyMS1cdGlmICh1bmxpa2VseSghc2tiKSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jPTMzMD1pbnQgcDU0X3NldHVwX21hYyhzdHJ1Y3QgcDU0X2NvbW1vbiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTMzNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM6MzM2Olx0c2tiID0gcDU0X2FsbG9jX3NrYihwcml2LCBQNTRfSERSX0ZMQUdfQ09OVFJPTF9PUFNFVCwgc2l6ZW9mKCpzZXR1cCksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jOjMzNzpcdFx0XHQgICAgUDU0X0NPTlRST0xfVFlQRV9TRVRVUCwgR0ZQX0FUT01JQyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTMzOC1cdGlmICghc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtMzQ0LVx0XHRjYXNlIE5MODAyMTFfSUZUWVBFX1NUQVRJT046XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jOjM0NTpcdFx0XHRtb2RlID0gUDU0X0ZJTFRFUl9UWVBFX1NUQVRJT047XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTM0Ni1cdFx0XHRicmVhaztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtMzQ3LVx0XHRjYXNlIE5MODAyMTFfSUZUWVBFX0FQOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYzozNDg6XHRcdFx0bW9kZSA9IFA1NF9GSUxURVJfVFlQRV9BUDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtMzQ5LVx0XHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtMzUxLVx0XHRjYXNlIE5MODAyMTFfSUZUWVBFX01FU0hfUE9JTlQ6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jOjM1MjpcdFx0XHRtb2RlID0gUDU0X0ZJTFRFUl9UWVBFX0lCU1M7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTM1My1cdFx0XHRicmVhaztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtMzU0LVx0XHRjYXNlIE5MODAyMTFfSUZUWVBFX01PTklUT1I6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jOjM1NTpcdFx0XHRtb2RlID0gUDU0X0ZJTFRFUl9UWVBFX1BST01JU0NVT1VTO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy0zNTYtXHRcdFx0YnJlYWs7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTM1Ny1cdFx0ZGVmYXVsdDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM6MzU4Olx0XHRcdG1vZGUgPSBQNTRfRklMVEVSX1RZUEVfSElCRVJOQVRFO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy0zNTktXHRcdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy0zNjYtXHRcdGlmIChwcml2LVx1MDAzZWZpbHRlcl9mbGFncyBcdTAwMjYgRklGX09USEVSX0JTUyBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM6MzY3Olx0XHQgICAgKG1vZGUgIT0gUDU0X0ZJTFRFUl9UWVBFX1BST01JU0NVT1VTKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM6MzY4Olx0XHRcdG1vZGUgfD0gUDU0X0ZJTFRFUl9UWVBFX1RSQU5TUEFSRU5UO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy0zNjktXHR9IGVsc2Uge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYzozNzA6XHRcdG1vZGUgPSBQNTRfRklMVEVSX1RZUEVfSElCRVJOQVRFO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy0zNzEtXHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy00MDEtXHRwNTRfdHgocHJpdiwgc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM6NDAyOlx0cHJpdi1cdTAwM2VwaHlfaWRsZSA9IG1vZGUgPT0gUDU0X0ZJTFRFUl9UWVBFX0hJQkVSTkFURTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtNDAzLVx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYz00MDY9aW50IHA1NF9zY2FuKHN0cnVjdCBwNTRfY29tbW9uICpwcml2LCB1MTYgbW9kZSwgdTE2IGR3ZWxsKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtNDE5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYzo0MjA6XHRza2IgPSBwNTRfYWxsb2Nfc2tiKHByaXYsIFA1NF9IRFJfRkxBR19DT05UUk9MX09QU0VULCBzaXplb2YoKmhlYWQpICYjNDM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTQyMS1cdFx0XHQgICAgMiAmIzQzOyBzaXplb2YoKmlxX2F1dG9jYWwpICYjNDM7IHNpemVvZigqYm9keSkgJiM0MztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtNDIyLVx0XHRcdCAgICBzaXplb2YoKnJhdGUpICYjNDM7IDIgKiBzaXplb2YoKnJzc2kpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYzo0MjM6XHRcdFx0ICAgIFA1NF9DT05UUk9MX1RZUEVfU0NBTiwgR0ZQX0FUT01JQyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTQyNC1cdGlmICghc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM9NTU0PWludCBwNTRfc2V0X2xlZHMoc3RydWN0IHA1NF9jb21tb24gKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy01NTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jOjU1OTpcdHNrYiA9IHA1NF9hbGxvY19za2IocHJpdiwgUDU0X0hEUl9GTEFHX0NPTlRST0xfT1BTRVQsIHNpemVvZigqbGVkKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM6NTYwOlx0XHRcdCAgICBQNTRfQ09OVFJPTF9UWVBFX0xFRCwgR0ZQX0FUT01JQyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTU2MS1cdGlmICh1bmxpa2VseSghc2tiKSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jPTU3Mz1pbnQgcDU0X3NldF9lZGNmKHN0cnVjdCBwNTRfY29tbW9uICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtNTc4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYzo1Nzk6XHRza2IgPSBwNTRfYWxsb2Nfc2tiKHByaXYsIFA1NF9IRFJfRkxBR19DT05UUk9MX09QU0VULCBzaXplb2YoKmVkY2YpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYzo1ODA6XHRcdFx0ICAgIFA1NF9DT05UUk9MX1RZUEVfRENGSU5JVCwgR0ZQX0FUT01JQyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTU4MS1cdGlmICh1bmxpa2VseSghc2tiKSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jPTYxMD1pbnQgcDU0X3NldF9wcyhzdHJ1Y3QgcDU0X2NvbW1vbiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTYxOC1cdCAgICAhcHJpdi1cdTAwM2Vwb3dlcnNhdmVfb3ZlcnJpZGUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jOjYxOTpcdFx0bW9kZSA9IFA1NF9QU00gfCBQNTRfUFNNX0JFQUNPTl9USU1FT1VUIHwgUDU0X1BTTV9EVElNIHxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM6NjIwOlx0XHQgICAgICAgUDU0X1BTTV9DSEVDS1NVTSB8IFA1NF9QU01fTUNCQztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtNjIxLVx0ZWxzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYzo2MjI6XHRcdG1vZGUgPSBQNTRfUFNNX0NBTTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtNjIzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYzo2MjQ6XHRza2IgPSBwNTRfYWxsb2Nfc2tiKHByaXYsIFA1NF9IRFJfRkxBR19DT05UUk9MX09QU0VULCBzaXplb2YoKnBzbSksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jOjYyNTpcdFx0XHQgICAgUDU0X0NPTlRST0xfVFlQRV9QU00sIEdGUF9BVE9NSUMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy02MjYtXHRpZiAoIXNrYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTY0My1cdHA1NF90eChwcml2LCBza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYzo2NDQ6XHRwcml2LVx1MDAzZXBoeV9wcyA9IG1vZGUgIT0gUDU0X1BTTV9DQU07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTY0NS1cdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM9NjQ4PWludCBwNTRfaW5pdF94Ym93X3N5bnRoKHN0cnVjdCBwNTRfY29tbW9uICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtNjUyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYzo2NTM6XHRza2IgPSBwNTRfYWxsb2Nfc2tiKHByaXYsIFA1NF9IRFJfRkxBR19DT05UUk9MX09QU0VULCBzaXplb2YoKnhib3cpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYzo2NTQ6XHRcdFx0ICAgIFA1NF9DT05UUk9MX1RZUEVfWEJPV19TWU5USF9DRkcsIEdGUF9LRVJORUwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy02NTUtXHRpZiAodW5saWtlbHkoIXNrYikpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYz02Njc9aW50IHA1NF91cGxvYWRfa2V5KHN0cnVjdCBwNTRfY29tbW9uICpwcml2LCB1OCBhbGdvLCBpbnQgc2xvdCwgdTggaWR4LCB1OCBsZW4sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy02NzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jOjY3MzpcdHNrYiA9IHA1NF9hbGxvY19za2IocHJpdiwgUDU0X0hEUl9GTEFHX0NPTlRST0xfT1BTRVQsIHNpemVvZigqcnhrZXkpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYzo2NzQ6XHRcdFx0ICAgIFA1NF9DT05UUk9MX1RZUEVfUlhfS0VZQ0FDSEUsIEdGUF9LRVJORUwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy02NzUtXHRpZiAodW5saWtlbHkoIXNrYikpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy02ODctXHRzd2l0Y2ggKGFsZ28pIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM6Njg4Olx0Y2FzZSBQNTRfQ1JZUFRPX1dFUDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM6Njg5Olx0Y2FzZSBQNTRfQ1JZUFRPX0FFU0NDTVA6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTY5MC1cdFx0cnhrZXktXHUwMDNla2V5X2xlbiA9IG1pbl90KHU4LCAxNiwgbGVuKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTY5My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM6Njk0Olx0Y2FzZSBQNTRfQ1JZUFRPX1RLSVBNSUNIQUVMOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy02OTUtXHRcdHJ4a2V5LVx1MDAzZWtleV9sZW4gPSAyNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTcwMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM6NzAxOlx0Y2FzZSBQNTRfQ1JZUFRPX05PTkU6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTcwMi1cdFx0cnhrZXktXHUwMDNla2V5X2xlbiA9IDA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYz03MTc9aW50IHA1NF9mZXRjaF9zdGF0aXN0aWNzKHN0cnVjdCBwNTRfY29tbW9uICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtNzIyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYzo3MjM6XHRza2IgPSBwNTRfYWxsb2Nfc2tiKHByaXYsIFA1NF9IRFJfRkxBR19DT05UUk9MLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy03MjQtXHRcdFx0ICAgIHNpemVvZihzdHJ1Y3QgcDU0X3N0YXRpc3RpY3MpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYzo3MjU6XHRcdFx0ICAgIFA1NF9DT05UUk9MX1RZUEVfU1RBVF9SRUFEQkFDSywgR0ZQX0tFUk5FTCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTcyNi1cdGlmICghc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM9NzQ3PWludCBwNTRfc2V0X2dyb3VwZmlsdGVyKHN0cnVjdCBwNTRfY29tbW9uICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtNzUyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYzo3NTM6XHRza2IgPSBwNTRfYWxsb2Nfc2tiKHByaXYsIFA1NF9IRFJfRkxBR19DT05UUk9MX09QU0VULCBzaXplb2YoKmdycCksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jOjc1NDpcdFx0XHQgICAgUDU0X0NPTlRST0xfVFlQRV9HUk9VUF9BRERSRVNTX1RBQkxFLCBHRlBfS0VSTkVMKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtNzU1LVx0aWYgKCFza2IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xlZC5jLTE5LSNpbmNsdWRlIFx1MDAzY25ldC9tYWM4MDIxMS5oXHUwMDNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbGVkLmM6MjA6I2lmZGVmIENPTkZJR19QNTRfTEVEU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xlZC5jLTIxLSNpbmNsdWRlIFx1MDAzY2xpbnV4L2xlZHMuaFx1MDAzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xlZC5jOjIyOiNlbmRpZiAvKiBDT05GSUdfUDU0X0xFRFMgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sZWQuYy0yMy1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oPTE5PWVudW0gcDU0X2NvbnRyb2xfZnJhbWVfdHlwZXMge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoyMDpcdFA1NF9DT05UUk9MX1RZUEVfU0VUVVAgPSAwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoyMTpcdFA1NF9DT05UUk9MX1RZUEVfU0NBTixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MjI6XHRQNTRfQ09OVFJPTF9UWVBFX1RSQVAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjIzOlx0UDU0X0NPTlRST0xfVFlQRV9EQ0ZJTklULFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoyNDpcdFA1NF9DT05UUk9MX1RZUEVfUlhfS0VZQ0FDSEUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjI1Olx0UDU0X0NPTlRST0xfVFlQRV9USU0sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjI2Olx0UDU0X0NPTlRST0xfVFlQRV9QU00sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjI3Olx0UDU0X0NPTlRST0xfVFlQRV9UWENBTkNFTCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6Mjg6XHRQNTRfQ09OVFJPTF9UWVBFX1RYRE9ORSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6Mjk6XHRQNTRfQ09OVFJPTF9UWVBFX0JVUlNULFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDozMDpcdFA1NF9DT05UUk9MX1RZUEVfU1RBVF9SRUFEQkFDSyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MzE6XHRQNTRfQ09OVFJPTF9UWVBFX0JCUCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MzI6XHRQNTRfQ09OVFJPTF9UWVBFX0VFUFJPTV9SRUFEQkFDSyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MzM6XHRQNTRfQ09OVFJPTF9UWVBFX0xFRCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MzQ6XHRQNTRfQ09OVFJPTF9UWVBFX0dQSU8sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjM1Olx0UDU0X0NPTlRST0xfVFlQRV9USU1FUixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MzY6XHRQNTRfQ09OVFJPTF9UWVBFX01PRFVMQVRJT04sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjM3Olx0UDU0X0NPTlRST0xfVFlQRV9TWU5USF9DT05GSUcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjM4Olx0UDU0X0NPTlRST0xfVFlQRV9ERVRFQ1RPUl9WQUxVRSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6Mzk6XHRQNTRfQ09OVFJPTF9UWVBFX1hCT1dfU1lOVEhfQ0ZHLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDo0MDpcdFA1NF9DT05UUk9MX1RZUEVfQ0NFX1FVSUVULFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDo0MTpcdFA1NF9DT05UUk9MX1RZUEVfUFNNX1NUQV9VTkxPQ0ssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjQyOlx0UDU0X0NPTlRST0xfVFlQRV9QQ1MsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjQzOlx0UDU0X0NPTlRST0xfVFlQRV9CVF9CQUxBTkNFUiA9IDI4LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDo0NDpcdFA1NF9DT05UUk9MX1RZUEVfR1JPVVBfQUREUkVTU19UQUJMRSA9IDMwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDo0NTpcdFA1NF9DT05UUk9MX1RZUEVfQVJQVEFCTEUgPSAzMSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6NDY6XHRQNTRfQ09OVFJPTF9UWVBFX0JUX09QVElPTlMgPSAzNSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmgtNDctfTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmgtNDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjQ5OiNkZWZpbmUgUDU0X0hEUl9GTEFHX0NPTlRST0xcdFx0QklUKDE1KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDo1MDojZGVmaW5lIFA1NF9IRFJfRkxBR19DT05UUk9MX09QU0VUXHQoQklUKDE1KSAmIzQzOyBCSVQoMCkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjUxOiNkZWZpbmUgUDU0X0hEUl9GTEFHX0RBVEFfQUxJR05cdFx0QklUKDE0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaC01Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6NTM6I2RlZmluZSBQNTRfSERSX0ZMQUdfREFUQV9PVVRfUFJPTUlTQ1x0XHRCSVQoMClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6NTQ6I2RlZmluZSBQNTRfSERSX0ZMQUdfREFUQV9PVVRfVElNRVNUQU1QXHRcdEJJVCgxKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDo1NTojZGVmaW5lIFA1NF9IRFJfRkxBR19EQVRBX09VVF9TRVFOUlx0XHRCSVQoMilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6NTY6I2RlZmluZSBQNTRfSERSX0ZMQUdfREFUQV9PVVRfQklUM1x0XHRCSVQoMylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6NTc6I2RlZmluZSBQNTRfSERSX0ZMQUdfREFUQV9PVVRfQlVSU1RcdFx0QklUKDQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjU4OiNkZWZpbmUgUDU0X0hEUl9GTEFHX0RBVEFfT1VUX05PQ0FOQ0VMXHRcdEJJVCg1KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDo1OTojZGVmaW5lIFA1NF9IRFJfRkxBR19EQVRBX09VVF9DTEVBUlRJTVx0XHRCSVQoNilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6NjA6I2RlZmluZSBQNTRfSERSX0ZMQUdfREFUQV9PVVRfSElUQ0hISUtFXHRcdEJJVCg3KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDo2MTojZGVmaW5lIFA1NF9IRFJfRkxBR19EQVRBX09VVF9DT01QUkVTU1x0XHRCSVQoOClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6NjI6I2RlZmluZSBQNTRfSERSX0ZMQUdfREFUQV9PVVRfQ09OQ0FUXHRcdEJJVCg5KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDo2MzojZGVmaW5lIFA1NF9IRFJfRkxBR19EQVRBX09VVF9QQ1NfQUNDRVBUXHRCSVQoMTApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjY0OiNkZWZpbmUgUDU0X0hEUl9GTEFHX0RBVEFfT1VUX1dBSVRFT1NQXHRcdEJJVCgxMSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmgtNjUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjY2OiNkZWZpbmUgUDU0X0hEUl9GTEFHX0RBVEFfSU5fRkNTX0dPT0RcdFx0QklUKDApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjY3OiNkZWZpbmUgUDU0X0hEUl9GTEFHX0RBVEFfSU5fTUFUQ0hfTUFDXHRcdEJJVCgxKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDo2ODojZGVmaW5lIFA1NF9IRFJfRkxBR19EQVRBX0lOX01DQkNcdFx0QklUKDIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjY5OiNkZWZpbmUgUDU0X0hEUl9GTEFHX0RBVEFfSU5fQkVBQ09OXHRcdEJJVCgzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDo3MDojZGVmaW5lIFA1NF9IRFJfRkxBR19EQVRBX0lOX01BVENIX0JTU1x0XHRCSVQoNClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6NzE6I2RlZmluZSBQNTRfSERSX0ZMQUdfREFUQV9JTl9CQ0FTVF9CU1NcdFx0QklUKDUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjcyOiNkZWZpbmUgUDU0X0hEUl9GTEFHX0RBVEFfSU5fREFUQVx0XHRCSVQoNilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6NzM6I2RlZmluZSBQNTRfSERSX0ZMQUdfREFUQV9JTl9UUlVOQ0FURURcdFx0QklUKDcpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjc0OiNkZWZpbmUgUDU0X0hEUl9GTEFHX0RBVEFfSU5fQklUOFx0XHRCSVQoOClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6NzU6I2RlZmluZSBQNTRfSERSX0ZMQUdfREFUQV9JTl9UUkFOU1BBUkVOVFx0QklUKDkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oLTc2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaD03Nz1zdHJ1Y3QgcDU0X2hkciB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaC05MS1cdCgoKChzdHJ1Y3QgcDU0X2hkciAqKSAoKHN0cnVjdCBza19idWZmICopIHNrYiktXHUwMDNlZGF0YSktXHUwMDNlXHRcdFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjkyOlx0ZmxhZ3MpID09IGNwdV90b19sZTE2KFA1NF9IRFJfRkxBR19DT05UUk9MX09QU0VUKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmgtOTMtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaC05NS1cdCghKCgoKHN0cnVjdCBwNTRfaGRyICopICgoc3RydWN0IHNrX2J1ZmYgKikgc2tiKS1cdTAwM2VkYXRhKS1cdTAwM2VcdFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjk2Olx0ZmxhZ3MpIFx1MDAyNiBjcHVfdG9fbGUxNihQNTRfSERSX0ZMQUdfQ09OVFJPTCkpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaC05Ny1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oPTE1Mz1lbnVtIHA1NF9yeF9kZWNyeXB0X3N0YXR1cyB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjE1NDpcdFA1NF9ERUNSWVBUX05PTkUgPSAwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoxNTU6XHRQNTRfREVDUllQVF9PSyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MTU2Olx0UDU0X0RFQ1JZUFRfTk9LRVksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjE1NzpcdFA1NF9ERUNSWVBUX05PTUlDSEFFTCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MTU4Olx0UDU0X0RFQ1JZUFRfTk9DS0lQTUlDLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoxNTk6XHRQNTRfREVDUllQVF9GQUlMX1dFUCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MTYwOlx0UDU0X0RFQ1JZUFRfRkFJTF9US0lQLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoxNjE6XHRQNTRfREVDUllQVF9GQUlMX01JQ0hBRUwsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjE2MjpcdFA1NF9ERUNSWVBUX0ZBSUxfQ0tJUEtQLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoxNjM6XHRQNTRfREVDUllQVF9GQUlMX0NLSVBNSUMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjE2NDpcdFA1NF9ERUNSWVBUX0ZBSUxfQUVTQ0NNUFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaC0xNjUtfTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oPTE4Mj1lbnVtIHA1NF90cmFwX3R5cGUge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoxODM6XHRQNTRfVFJBUF9TQ0FOID0gMCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MTg0Olx0UDU0X1RSQVBfVElNRVIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjE4NTpcdFA1NF9UUkFQX0JFQUNPTl9UWCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MTg2Olx0UDU0X1RSQVBfRkFBX1JBRElPX09OLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoxODc6XHRQNTRfVFJBUF9GQUFfUkFESU9fT0ZGLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoxODg6XHRQNTRfVFJBUF9SQURBUixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MTg5Olx0UDU0X1RSQVBfTk9fQkVBQ09OLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoxOTA6XHRQNTRfVFJBUF9UQlRULFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoxOTE6XHRQNTRfVFJBUF9TQ09fRU5URVIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjE5MjpcdFA1NF9UUkFQX1NDT19FWElUXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oLTE5My19O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg9MjAwPWVudW0gcDU0X2ZyYW1lX3NlbnRfc3RhdHVzIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MjAxOlx0UDU0X1RYX09LID0gMCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MjAyOlx0UDU0X1RYX0ZBSUxFRCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MjAzOlx0UDU0X1RYX1BTTSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MjA0Olx0UDU0X1RYX1BTTV9DQU5DRUxMRUQgPSA0XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oLTIwNS19O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg9MjE3PWVudW0gcDU0X3R4X2RhdGFfY3J5cHQge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoyMTg6XHRQNTRfQ1JZUFRPX05PTkUgPSAwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoyMTk6XHRQNTRfQ1JZUFRPX1dFUCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MjIwOlx0UDU0X0NSWVBUT19US0lQLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoyMjE6XHRQNTRfQ1JZUFRPX1RLSVBNSUNIQUVMLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoyMjI6XHRQNTRfQ1JZUFRPX0NDWF9XRVBNSUMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjIyMzpcdFA1NF9DUllQVE9fQ0NYX0tQTUlDLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoyMjQ6XHRQNTRfQ1JZUFRPX0NDWF9LUCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MjI1Olx0UDU0X0NSWVBUT19BRVNDQ01QXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oLTIyNi19O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg9MjI4PWVudW0gcDU0X3R4X2RhdGFfcXVldWUge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoyMjk6XHRQNTRfUVVFVUVfQkVBQ09OXHQ9IDAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjIzMDpcdFA1NF9RVUVVRV9GV1NDQU5cdD0gMSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MjMxOlx0UDU0X1FVRVVFX01HTVRcdFx0PSAyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoyMzI6XHRQNTRfUVVFVUVfQ0FCXHRcdD0gMyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MjMzOlx0UDU0X1FVRVVFX0RBVEFcdFx0PSA0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaC0yMzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjIzNTpcdFA1NF9RVUVVRV9BQ19OVU1cdD0gNCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MjM2Olx0UDU0X1FVRVVFX0FDX1ZPXHRcdD0gNCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MjM3Olx0UDU0X1FVRVVFX0FDX1ZJXHRcdD0gNSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MjM4Olx0UDU0X1FVRVVFX0FDX0JFXHRcdD0gNixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MjM5Olx0UDU0X1FVRVVFX0FDX0JLXHRcdD0gNyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmgtMjQwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaC0yNDEtXHQvKiBrZWVwIGxhc3QgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MjQyOlx0UDU0X1FVRVVFX05VTVx0XHQ9IDgsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oLTI0My19O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaC0yNDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjI0NTojZGVmaW5lIElTX1FPU19RVUVVRShuKVx0KG4gXHUwMDNlPSBQNTRfUVVFVUVfREFUQSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmgtMjQ2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaD0yNDc9c3RydWN0IHA1NF90eF9kYXRhIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oLTI3My0vKiB1bml0IGlzIG1zICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjI3NDojZGVmaW5lIFA1NF9UWF9GUkFNRV9MSUZFVElNRSAyMDAwXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjI3NTojZGVmaW5lIFA1NF9UWF9USU1FT1VUIDQwMDBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6Mjc2OiNkZWZpbmUgUDU0X1NUQVRJU1RJQ1NfVVBEQVRFIDUwMDBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmgtMjc3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoyNzg6I2RlZmluZSBQNTRfRklMVEVSX1RZUEVfTk9ORVx0XHQwXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjI3OTojZGVmaW5lIFA1NF9GSUxURVJfVFlQRV9TVEFUSU9OXHRcdEJJVCgwKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoyODA6I2RlZmluZSBQNTRfRklMVEVSX1RZUEVfSUJTU1x0XHRCSVQoMSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MjgxOiNkZWZpbmUgUDU0X0ZJTFRFUl9UWVBFX0FQXHRcdEJJVCgyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoyODI6I2RlZmluZSBQNTRfRklMVEVSX1RZUEVfVFJBTlNQQVJFTlRcdEJJVCgzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoyODM6I2RlZmluZSBQNTRfRklMVEVSX1RZUEVfUFJPTUlTQ1VPVVNcdEJJVCg0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoyODQ6I2RlZmluZSBQNTRfRklMVEVSX1RZUEVfSElCRVJOQVRFXHRCSVQoNSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6Mjg1OiNkZWZpbmUgUDU0X0ZJTFRFUl9UWVBFX05PQUNLXHRcdEJJVCg2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoyODY6I2RlZmluZSBQNTRfRklMVEVSX1RZUEVfUlhfRElTQUJMRURcdEJJVCg3KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaC0yODctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oPTI4OD1zdHJ1Y3QgcDU0X3NldHVwX21hYyB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaC0zMjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjMyMjojZGVmaW5lIFA1NF9TRVRVUF9WMV9MRU4gNDBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MzIzOiNkZWZpbmUgUDU0X1NFVFVQX1YyX0xFTiAoc2l6ZW9mKHN0cnVjdCBwNTRfc2V0dXBfbWFjKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmgtMzI0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDozMjU6I2RlZmluZSBQNTRfU0NBTl9FWElUXHRCSVQoMClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MzI2OiNkZWZpbmUgUDU0X1NDQU5fVFJBUFx0QklUKDEpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjMyNzojZGVmaW5lIFA1NF9TQ0FOX0FDVElWRSBCSVQoMilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MzI4OiNkZWZpbmUgUDU0X1NDQU5fRklMVEVSIEJJVCgzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaC0zMjktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaD00NTQ9c3RydWN0IHA1NF9wc21faW50ZXJ2YWwge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmgtNDU4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDo0NTk6I2RlZmluZSBQNTRfUFNNX0NBTVx0XHRcdDBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6NDYwOiNkZWZpbmUgUDU0X1BTTVx0XHRcdFx0QklUKDApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjQ2MTojZGVmaW5lIFA1NF9QU01fRFRJTVx0XHRcdEJJVCgxKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDo0NjI6I2RlZmluZSBQNTRfUFNNX01DQkNcdFx0XHRCSVQoMilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6NDYzOiNkZWZpbmUgUDU0X1BTTV9DSEVDS1NVTVx0XHRCSVQoMylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6NDY0OiNkZWZpbmUgUDU0X1BTTV9TS0lQX01PUkVfREFUQVx0XHRCSVQoNClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6NDY1OiNkZWZpbmUgUDU0X1BTTV9CRUFDT05fVElNRU9VVFx0XHRCSVQoNSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6NDY2OiNkZWZpbmUgUDU0X1BTTV9IRk9TTEVFUFx0XHRCSVQoNilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6NDY3OiNkZWZpbmUgUDU0X1BTTV9BVVRPU1dJVENIX1NMRUVQXHRCSVQoNylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6NDY4OiNkZWZpbmUgUDU0X1BTTV9MUElUXHRcdFx0QklUKDgpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjQ2OTojZGVmaW5lIFA1NF9QU01fQkZfVUNBU1RfU0tJUFx0XHRCSVQoOSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6NDcwOiNkZWZpbmUgUDU0X1BTTV9CRl9NQ0FTVF9TS0lQXHRcdEJJVCgxMClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmgtNDcxLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg9NDk0PXN0cnVjdCBwNTRfc3RhX3VubG9jayB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaC00OTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjQ5OTojZGVmaW5lIFA1NF9USU1fQ0xFQVIgQklUKDE1KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaC01MDAtc3RydWN0IHA1NF90aW0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmM9MTY3PXN0YXRpYyBpbnQgcDU0X3N0YXJ0KHN0cnVjdCBpZWVlODAyMTFfaHcgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jLTE3NS1cdFx0Z290byBvdXQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jOjE3NjpcdFA1NF9TRVRfUVVFVUUocHJpdi1cdTAwM2Vxb3NfcGFyYW1zWzBdLCAweDAwMDIsIDB4MDAwMywgMHgwMDA3LCA0Nyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jOjE3NzpcdFA1NF9TRVRfUVVFVUUocHJpdi1cdTAwM2Vxb3NfcGFyYW1zWzFdLCAweDAwMDIsIDB4MDAwNywgMHgwMDBmLCA5NCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jOjE3ODpcdFA1NF9TRVRfUVVFVUUocHJpdi1cdTAwM2Vxb3NfcGFyYW1zWzJdLCAweDAwMDMsIDB4MDAwZiwgMHgwM2ZmLCAwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmM6MTc5Olx0UDU0X1NFVF9RVUVVRShwcml2LVx1MDAzZXFvc19wYXJhbXNbM10sIDB4MDAwNywgMHgwMDBmLCAweDAzZmYsIDApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYy0xODAtXHRlcnIgPSBwNTRfc2V0X2VkY2YocHJpdik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYz0yMDI9c3RhdGljIHZvaWQgcDU0X3N0b3Aoc3RydWN0IGllZWU4MDIxMV9odyAqZGV2LCBib29sIHN1c3BlbmQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYy0yMTQtXHRza2JfcXVldWVfcHVyZ2UoXHUwMDI2cHJpdi1cdTAwM2V0eF9xdWV1ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jOjIxNTpcdGZvciAoaSA9IDA7IGkgXHUwMDNjIFA1NF9RVUVVRV9OVU07IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jLTIxNi1cdFx0cHJpdi1cdTAwM2V0eF9zdGF0c1tpXS5jb3VudCA9IDA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYz0zMTg9c3RhdGljIGludCBwNTRfY29uZmlnKHN0cnVjdCBpZWVlODAyMTFfaHcgKmRldiwgaW50IHJhZGlvX2lkeCwgdTMyIGNoYW5nZWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYy0zMzEtXHRcdHByaXYtXHUwMDNlY3VyY2hhbiA9IE5VTEw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jOjMzMjpcdFx0cmV0ID0gcDU0X3NjYW4ocHJpdiwgUDU0X1NDQU5fRVhJVCwgMCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jLTMzMy1cdFx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmM9NDA4PXN0YXRpYyBpbnQgcDU0X2NvbmZfdHgoc3RydWN0IGllZWU4MDIxMV9odyAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmMtNDE2LVx0bXV0ZXhfbG9jayhcdTAwMjZwcml2LVx1MDAzZWNvbmZfbXV0ZXgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYzo0MTc6XHRQNTRfU0VUX1FVRVVFKHByaXYtXHUwMDNlcW9zX3BhcmFtc1txdWV1ZV0sIHBhcmFtcy1cdTAwM2VhaWZzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYy00MTgtXHRcdCAgICAgIHBhcmFtcy1cdTAwM2Vjd19taW4sIHBhcmFtcy1cdTAwM2Vjd19tYXgsIHBhcmFtcy1cdTAwM2V0eG9wKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jPTQ1Mj1zdGF0aWMgdm9pZCBwNTRfYnNzX2luZm9fY2hhbmdlZChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYy00NjUtXHRpZiAoY2hhbmdlZCBcdTAwMjYgQlNTX0NIQU5HRURfQkVBQ09OKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jOjQ2NjpcdFx0cDU0X3NjYW4ocHJpdiwgUDU0X1NDQU5fRVhJVCwgMCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jLTQ2Ny1cdFx0cDU0X3NldHVwX21hYyhwcml2KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jLTQ4Mi1cdFx0aWYgKHByaXYtXHUwMDNlZndfdmFyIFx1MDAzZT0gMHg1MDApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jOjQ4MzpcdFx0XHRwNTRfc2Nhbihwcml2LCBQNTRfU0NBTl9FWElULCAwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmMtNDg0LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmM9NTAwPXN0YXRpYyBpbnQgcDU0X3NldF9rZXkoc3RydWN0IGllZWU4MDIxMV9odyAqZGV2LCBlbnVtIHNldF9rZXlfY21kIGNtZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jLTUzMi1cdFx0XHRrZXktXHUwMDNlZmxhZ3MgfD0gSUVFRTgwMjExX0tFWV9GTEFHX0dFTkVSQVRFX0lWO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYzo1MzM6XHRcdFx0YWxnbyA9IFA1NF9DUllQVE9fVEtJUE1JQ0hBRUw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jLTUzNC1cdFx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jLTU0MS1cdFx0XHRrZXktXHUwMDNlZmxhZ3MgfD0gSUVFRTgwMjExX0tFWV9GTEFHX0dFTkVSQVRFX0lWO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYzo1NDI6XHRcdFx0YWxnbyA9IFA1NF9DUllQVE9fV0VQO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYy01NDMtXHRcdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYy01NDktXHRcdFx0a2V5LVx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9LRVlfRkxBR19HRU5FUkFURV9JVjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmM6NTUwOlx0XHRcdGFsZ28gPSBQNTRfQ1JZUFRPX0FFU0NDTVA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jLTU1MS1cdFx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jPTY1Mz1zdGF0aWMgdW5zaWduZWQgaW50IHA1NF9mbHVzaF9jb3VudChzdHJ1Y3QgcDU0X2NvbW1vbiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jLTY1Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmM6NjU3Olx0QlVJTERfQlVHX09OKFA1NF9RVUVVRV9OVU0gXHUwMDNlIEFSUkFZX1NJWkUocHJpdi1cdTAwM2V0eF9zdGF0cykpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYy02NTgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYy02NjAtXHQgKiBCZWNhdXNlIHRoZSBmaXJtd2FyZSBoYXMgdGhlIHNvbGUgY29udHJvbCBvdmVyIGFueSBmcmFtZXNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmM6NjYxOlx0ICogaW4gdGhlIFA1NF9RVUVVRV9CRUFDT04gb3IgUDU0X1FVRVVFX1NDQU4gcXVldWVzLCB0aGV5XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jLTY2Mi1cdCAqIGRvbiYjMzk7dCByZWFsbHkgY291bnQgYXMgcGVuZGluZyBvciBhY3RpdmUuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jLTY2My1cdCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYzo2NjQ6XHRmb3IgKGkgPSBQNTRfUVVFVUVfTUdNVDsgaSBcdTAwM2MgUDU0X1FVRVVFX05VTTsgaSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jLTY2NS1cdFx0dG90YWwgJiM0Mzs9IHByaXYtXHUwMDNldHhfc3RhdHNbaV0ubGVuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmM9NjY5PXN0YXRpYyB2b2lkIHA1NF9mbHVzaChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpkZXYsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYy02ODAtXHQgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmM6NjgxOlx0aSA9IFA1NF9TVEFUSVNUSUNTX1VQREFURSAqIDIgLyAyMDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmMtNjgyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmM9NzM2PXN0cnVjdCBpZWVlODAyMTFfaHcgKnA1NF9pbml0X2NvbW1vbihzaXplX3QgcHJpdl9kYXRhX2xlbilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jLTc2NC1cdHByaXYtXHUwMDNlYmVhY29uX3JlcV9pZCA9IGNwdV90b19sZTMyKDApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYzo3NjU6XHRwcml2LVx1MDAzZXR4X3N0YXRzW1A1NF9RVUVVRV9CRUFDT05dLmxpbWl0ID0gMTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmM6NzY2Olx0cHJpdi1cdTAwM2V0eF9zdGF0c1tQNTRfUVVFVUVfRldTQ0FOXS5saW1pdCA9IDE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jOjc2NzpcdHByaXYtXHUwMDNldHhfc3RhdHNbUDU0X1FVRVVFX01HTVRdLmxpbWl0ID0gMztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmM6NzY4Olx0cHJpdi1cdTAwM2V0eF9zdGF0c1tQNTRfUVVFVUVfQ0FCXS5saW1pdCA9IDM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jOjc2OTpcdHByaXYtXHUwMDNldHhfc3RhdHNbUDU0X1FVRVVFX0RBVEFdLmxpbWl0ID0gNTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmMtNzcwLVx0ZGV2LVx1MDAzZXF1ZXVlcyA9IDE7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYz04MDU9aW50IHA1NF9yZWdpc3Rlcl9jb21tb24oc3RydWN0IGllZWU4MDIxMV9odyAqZGV2LCBzdHJ1Y3QgZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmMtODE2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYzo4MTc6I2lmZGVmIENPTkZJR19QNTRfTEVEU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYy04MTgtXHRlcnIgPSBwNTRfaW5pdF9sZWRzKHByaXYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmMtODIyLVx0fVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYzo4MjM6I2VuZGlmIC8qIENPTkZJR19QNTRfTEVEUyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYy04MjQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYz04NTQ9dm9pZCBwNTRfdW5yZWdpc3Rlcl9jb21tb24oc3RydWN0IGllZWU4MDIxMV9odyAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmMtODU5LVx0XHRwcml2LVx1MDAzZXJlZ2lzdGVyZWQgPSBmYWxzZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmM6ODYwOiNpZmRlZiBDT05GSUdfUDU0X0xFRFNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmMtODYxLVx0XHRwNTRfdW5yZWdpc3Rlcl9sZWRzKHByaXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYzo4NjI6I2VuZGlmIC8qIENPTkZJR19QNTRfTEVEUyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYy04NjMtXHRcdGllZWU4MDIxMV91bnJlZ2lzdGVyX2h3KGRldik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3A1NC5oLTEwLVxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjI6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTkxNjQKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipUcmFjaW5nIHRoZSBGaXJtd2FyZSBQYXJzaW5nIEZ1bmN0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjYWxsIHN0cnVjdHVyZSBvZiBgcDU0X3BhcnNlX2Zpcm13YXJlYC4gVGhpcyBpcyB1c3VhbGx5IHRoZSBmaXJzdCBzdGVwIHdoZW4gSSYjMzk7bSBkaXZpbmcgaW50byBhIGZpcm13YXJlIGFuYWx5c2lzIG9yIHJldmVyc2UgZW5naW5lZXJpbmcgdGFzay4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGVudHJ5IHBvaW50cyB0byB0aGF0IGZ1bmN0aW9uLiBXaGVyZSBpcyBpdCBiZWluZyAqdXNlZCo/IEZpbmRpbmcgdGhlIGNhbGxlcnMgd2lsbCBnaXZlIG1lIGNyaXRpY2FsIGNvbnRleHQ6IHdoYXQmIzM5O3MgZmVlZGluZyBkYXRhIGludG8gdGhpcyBmdW5jdGlvbiwgdW5kZXIgd2hhdCBjb25kaXRpb25zIGRvZXMgaXQgZXhlY3V0ZSwgYW5kIHdoYXQgb3RoZXIgY29tcG9uZW50cyBhcmUgaW52b2x2ZWQgaW4gdGhpcyBjcml0aWNhbCBwcm9jZXNzPyBXaXRoIHRoaXMsIEkgY2FuIGJlZ2luIHRvIGdyYXNwIHRoZSBiaWdnZXIgcGljdHVyZSDigJMgd2hpY2ggaXMgZXNzZW50aWFsIGZvciBhbnkgZGVlcCBkaXZlIG9yIGRlYnVnZ2luZyBlZmZvcnQgaW4gdGhpcyBmaXJtd2FyZSBzcGFjZS4gRmluZGluZyB0aGUgY2FsbHNpdGVzIGZvciB0aGlzIHBhcnRpY3VsYXIgZnVuY3Rpb24gaXMgdGhlIGZpcnN0LCBuZWNlc3Nhcnkgc3RlcC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAyMjozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwNTRfcGFyc2VfZmlybXdhcmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy0yNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM6Mjc6aW50IHA1NF9wYXJzZV9maXJtd2FyZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpkZXYsIGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZncpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTI4LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTE5OC19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jOjE5OTpFWFBPUlRfU1lNQk9MX0dQTChwNTRfcGFyc2VfZmlybXdhcmUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy0yMDAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3A1NC5oPTI2OD12b2lkIHA1NF9mcmVlX3NrYihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3A1NC5oOjI2OTppbnQgcDU0X3BhcnNlX2Zpcm13YXJlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmRldiwgY29uc3Qgc3RydWN0IGZpcm13YXJlICpmdyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvcDU0LmgtMjcwLWludCBwNTRfcGFyc2VfZWVwcm9tKHN0cnVjdCBpZWVlODAyMTFfaHcgKmRldiwgdm9pZCAqZWVwcm9tLCBpbnQgbGVuKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvcDU0cGNpLmM9NDg9c3RhdGljIGludCBwNTRwX3VwbG9hZF9maXJtd2FyZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3A1NHBjaS5jLTc4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3A1NHBjaS5jOjc5Olx0ZXJyID0gcDU0X3BhcnNlX2Zpcm13YXJlKGRldiwgcHJpdi1cdTAwM2VmaXJtd2FyZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvcDU0cGNpLmMtODAtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9wNTRzcGkuYz0xNDA9c3RhdGljIGludCBwNTRzcGlfcmVxdWVzdF9maXJtd2FyZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3A1NHNwaS5jLTE1Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9wNTRzcGkuYzoxNTM6XHRyZXQgPSBwNTRfcGFyc2VfZmlybXdhcmUoZGV2LCBwcml2LVx1MDAzZWZpcm13YXJlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9wNTRzcGkuYy0xNTQtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3A1NHVzYi5jPTg2Nz1zdGF0aWMgaW50IHA1NHVfc3RhcnRfb3BzKHN0cnVjdCBwNTR1X3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3A1NHVzYi5jLTg3MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9wNTR1c2IuYzo4NzI6XHRyZXQgPSBwNTRfcGFyc2VfZmlybXdhcmUoZGV2LCBwcml2LVx1MDAzZWZ3KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9wNTR1c2IuYy04NzMtXHRpZiAocmV0KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIyOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMTk1CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgcDU0dXNiIERyaXZlcioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW5pdGlhdGlvbiBvZiB0aGUgcDU0dXNiIGRldmljZSBhbmQgaG93IHRoZSBmaXJtd2FyZSBsb2FkaW5nIGdldHMga2lja2VkIG9mZi4gVGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgZGlnZ2luZyBpcyBgcDU0dXNiLmNgLiBJJiMzOTttIHNwZWNpZmljYWxseSBsb29raW5nIGZvciB3aGVyZSBgcDU0dV9zdGFydF9vcHNgIGdldHMgY2FsbGVkLCBvciBtb3JlIGdlbmVyYWxseSwgaG93IHRoZSBmaXJtd2FyZSBpbWFnZSBnZXRzIGxvYWRlZCBpbnRvIHRoZSBkZXZpY2UuIFRoYXQgZnVuY3Rpb24gY2FsbCB3aWxsIGJlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBjb250cm9sIGZsb3cuIEl0IGhhcyB0byBiZSBpbiB0aGlzIGRyaXZlciBzb21ld2hlcmUuIFRpbWUgdG8gZ2V0IHRvIHdvcmsuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIyOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3A1NHVfc3RhcnRfb3BzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9wNTR1c2IuYz04NTQ9c3RhdGljIGludCBwNTRfZmluZF90eXBlKHN0cnVjdCBwNTR1X3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3A1NHVzYi5jLTg2Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9wNTR1c2IuYzo4Njc6c3RhdGljIGludCBwNTR1X3N0YXJ0X29wcyhzdHJ1Y3QgcDU0dV9wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3A1NHVzYi5jLTg2OC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3A1NHVzYi5jPTkxOT1zdGF0aWMgdm9pZCBwNTR1X2xvYWRfZmlybXdhcmVfY2IoY29uc3Qgc3RydWN0IGZpcm13YXJlICpmaXJtd2FyZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvcDU0dXNiLmMtOTI4LVx0XHRwcml2LVx1MDAzZWZ3ID0gZmlybXdhcmU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvcDU0dXNiLmM6OTI5Olx0XHRlcnIgPSBwNTR1X3N0YXJ0X29wcyhwcml2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9wNTR1c2IuYy05MzAtXHR9IGVsc2Uge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAyMjozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDcwMwoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDc0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKkFuYWx5emluZyB0aGUgRmlybXdhcmUgTG9hZGluZyBDYWxsYmFjayoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYHA1NHVfbG9hZF9maXJtd2FyZV9jYmAsIGFuZCBJIGtub3cgcmlnaHQgYXdheSB0aGF0IGl0JiMzOTtzIGFuIGFzeW5jaHJvbm91cyBjYWxsYmFjayBzcGVjaWZpY2FsbHkgZm9yIGhhbmRsaW5nIGZpcm13YXJlIHJlcXVlc3RzLiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBjb250ZXh0IHdpdGhpbiB0aGUgYnJvYWRlciBgcDU0YCBVU0IgZHJpdmVyLiBUbyBkbyB0aGF0IGVmZmVjdGl2ZWx5LCBJJiMzOTttIGdvaW5nIHRvIGRpdmUgaW50byB0aGUgc291cmNlIGNvZGUsIHNwZWNpZmljYWxseSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3A1NHVzYi5jYC4gSSYjMzk7bGwgd2FudCB0byBmb2N1cyBvbiB0aGUgYXJlYSBhcm91bmQgYHA1NHVfcHJvYmVgLCBhcyB0aGF0JiMzOTtzIHdoZXJlIHRoZSBkZXZpY2UgaW5pdGlhbGl6YXRpb24gdHlwaWNhbGx5IGhhcHBlbnMsIGFuZCB0aGVuIHRyYWNlIHRoZSBmbG93IGludG8gYHA1NHVfbG9hZF9maXJtd2FyZV9jYmAuIEJ5IHVuZGVyc3RhbmRpbmcgaG93IHRoZSBwcm9iZSBmdW5jdGlvbiBpbnRlcmZhY2VzIHdpdGggdGhlIGZpcm13YXJlIGxvYWRpbmcgY2FsbGJhY2ssIEkgY2FuIG1vcmUgY2xlYXJseSB1bmRlcnN0YW5kIGhvdyB0aGUgZmlybXdhcmUgaXMgbG9hZGVkIGFuZCBoYW5kbGVkIGJ5IHRoZSBkcml2ZXIuIFRoaXMgYXBwcm9hY2ggd2lsbCBnaXZlIG1lIGEgc29saWQgZ3Jhc3Agb2YgdGhlIG92ZXJhbGwgZmlybXdhcmUgbG9hZGluZyBzZXF1ZW5jZSB3aXRoaW4gdGhpcyB3aXJlbGVzcyBkcml2ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIyOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3A1NHVzYi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogOTEwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDkwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA5MTA6XHRcbiA5MTE6XHRlcnJfb3V0OlxuIDkxMjpcdFx0LypcbiA5MTM6XHRcdCAqIHA1NHVfZGlzY29ubmVjdCB3aWxsIGRvIHRoZSByZXN0IG9mIHRoZVxuIDkxNDpcdFx0ICogY2xlYW51cFxuIDkxNTpcdFx0ICovXG4gOTE2Olx0XHRyZXR1cm4gcmV0O1xuIDkxNzpcdH1cbiA5MTg6XHRcbiA5MTk6XHRzdGF0aWMgdm9pZCBwNTR1X2xvYWRfZmlybXdhcmVfY2IoY29uc3Qgc3RydWN0IGZpcm13YXJlICpmaXJtd2FyZSxcbiA5MjA6XHRcdFx0XHRcdCAgdm9pZCAqY29udGV4dClcbiA5MjE6XHR7XG4gOTIyOlx0XHRzdHJ1Y3QgcDU0dV9wcml2ICpwcml2ID0gY29udGV4dDtcbiA5MjM6XHRcdHN0cnVjdCB1c2JfZGV2aWNlICp1ZGV2ID0gcHJpdi1cdTAwM2V1ZGV2O1xuIDkyNDpcdFx0c3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYgPSBwcml2LVx1MDAzZWludGY7XG4gOTI1Olx0XHRpbnQgZXJyO1xuIDkyNjpcdFxuIDkyNzpcdFx0aWYgKGZpcm13YXJlKSB7XG4gOTI4Olx0XHRcdHByaXYtXHUwMDNlZncgPSBmaXJtd2FyZTtcbiA5Mjk6XHRcdFx0ZXJyID0gcDU0dV9zdGFydF9vcHMocHJpdik7XG4gOTMwOlx0XHR9IGVsc2Uge1xuIDkzMTpcdFx0XHRlcnIgPSAtRU5PRU5UO1xuIDkzMjpcdFx0XHRkZXZfZXJyKFx1MDAyNnVkZXYtXHUwMDNlZGV2LCBcJiMzNDtGaXJtd2FyZSBub3QgZm91bmQuXFxuXCYjMzQ7KTtcbiA5MzM6XHRcdH1cbiA5MzQ6XHRcbiA5MzU6XHRcdGNvbXBsZXRlKFx1MDAyNnByaXYtXHUwMDNlZndfd2FpdF9sb2FkKTtcbiA5MzY6XHRcdC8qXG4gOTM3Olx0XHQgKiBBdCB0aGlzIHBvaW50IHA1NHVfZGlzY29ubmVjdCBtYXkgaGF2ZSBhbHJlYWR5IGZyZWVkXG4gOTM4Olx0XHQgKiB0aGUgXCYjMzQ7cHJpdlwmIzM0OyBjb250ZXh0LiBEbyBub3QgdXNlIGl0IGFueW1vcmUhXG4gOTM5Olx0XHQgKi9cbiA5NDA6XHRcdHByaXYgPSBOVUxMO1xuIDk0MTpcdFxuIDk0MjpcdFx0aWYgKGVycikge1xuIDk0MzpcdFx0XHRkZXZfZXJyKFx1MDAyNmludGYtXHUwMDNlZGV2LCBcJiMzNDtmYWlsZWQgdG8gaW5pdGlhbGl6ZSBkZXZpY2UgKCVkKVxcblwmIzM0OywgZXJyKTtcbiA5NDQ6XHRcbiA5NDU6XHRcdFx0dXNiX2xvY2tfZGV2aWNlKHVkZXYpO1xuIDk0NjpcdFx0XHR1c2JfZHJpdmVyX3JlbGVhc2VfaW50ZXJmYWNlKFx1MDAyNnA1NHVfZHJpdmVyLCBpbnRmKTtcbiA5NDc6XHRcdFx0dXNiX3VubG9ja19kZXZpY2UodWRldik7XG4gOTQ4Olx0XHR9XG4gOTQ5Olx0XG4gOTUwOlx0XHR1c2JfcHV0X2ludGYoaW50Zik7XG4gOTUxOlx0fVxuIDk1MjpcdFxuIDk1MzpcdHN0YXRpYyBpbnQgcDU0dV9sb2FkX2Zpcm13YXJlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmRldixcbiA5NTQ6XHRcdFx0XHQgICAgICBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcbiA5NTU6XHR7XG4gOTU2Olx0XHRzdHJ1Y3QgdXNiX2RldmljZSAqdWRldiA9IGludGVyZmFjZV90b191c2JkZXYoaW50Zik7XG4gOTU3Olx0XHRzdHJ1Y3QgcDU0dV9wcml2ICpwcml2ID0gZGV2LVx1MDAzZXByaXY7XG4gOTU4Olx0XHRzdHJ1Y3QgZGV2aWNlICpkZXZpY2UgPSBcdTAwMjZ1ZGV2LVx1MDAzZWRldjtcbiA5NTk6XHRcdGludCBlcnIsIGk7XG4gOTYwOlx0XG4gOTYxOlx0XHRCVUlMRF9CVUdfT04oQVJSQVlfU0laRShwNTR1X2Z3bGlzdCkgIT0gX19OVU1fUDU0VV9IV1RZUEVTKTtcbiA5NjI6XHRcbiA5NjM6XHRcdGluaXRfY29tcGxldGlvbihcdTAwMjZwcml2LVx1MDAzZWZ3X3dhaXRfbG9hZCk7XG4gOTY0Olx0XHRpID0gcDU0X2ZpbmRfdHlwZShwcml2KTtcbiA5NjU6XHRcdGlmIChpIFx1MDAzYyAwKVxuIDk2NjpcdFx0XHRyZXR1cm4gaTtcbiA5Njc6XHRcbiA5Njg6XHRcdGRldl9pbmZvKFx1MDAyNnByaXYtXHUwMDNldWRldi1cdTAwM2VkZXYsIFwmIzM0O0xvYWRpbmcgZmlybXdhcmUgZmlsZSAlc1xcblwmIzM0OyxcbiA5Njk6XHRcdCAgICAgICBwNTR1X2Z3bGlzdFtpXS5mdyk7XG4gOTcwOlx0XG4gOTcxOlx0XHR1c2JfZ2V0X2ludGYoaW50Zik7XG4gOTcyOlx0XHRlcnIgPSByZXF1ZXN0X2Zpcm13YXJlX25vd2FpdChUSElTX01PRFVMRSwgMSwgcDU0dV9md2xpc3RbaV0uZncsXG4gOTczOlx0XHRcdFx0XHQgICAgICBkZXZpY2UsIEdGUF9LRVJORUwsIHByaXYsXG4gOTc0Olx0XHRcdFx0XHQgICAgICBwNTR1X2xvYWRfZmlybXdhcmVfY2IpO1xuIDk3NTpcdFx0aWYgKGVycikge1xuIDk3NjpcdFx0XHRkZXZfZXJyKFx1MDAyNnByaXYtXHUwMDNldWRldi1cdTAwM2VkZXYsIFwmIzM0OyhwNTR1c2IpIGNhbm5vdCBsb2FkIGZpcm13YXJlICVzIFwmIzM0O1xuIDk3NzpcdFx0XHRcdFx0XHQgIFwmIzM0OyglZCkhXFxuXCYjMzQ7LCBwNTR1X2Z3bGlzdFtpXS5mdywgZXJyKTtcbiA5Nzg6XHRcdFx0dXNiX3B1dF9pbnRmKGludGYpO1xuIDk3OTpcdFx0fVxuIDk4MDpcdFxuIDk4MTpcdFx0cmV0dXJuIGVycjtcbiA5ODI6XHR9XG4gOTgzOlx0XG4gOTg0Olx0c3RhdGljIGludCBwNTR1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxuIDk4NTpcdFx0XHRcdFx0Y29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKVxuIDk4NjpcdHtcbiA5ODc6XHRcdHN0cnVjdCB1c2JfZGV2aWNlICp1ZGV2ID0gaW50ZXJmYWNlX3RvX3VzYmRldihpbnRmKTtcbiA5ODg6XHRcdHN0cnVjdCBpZWVlODAyMTFfaHcgKmRldjtcbiA5ODk6XHRcdHN0cnVjdCBwNTR1X3ByaXYgKnByaXY7XG4gOTkwOlx0XHRpbnQgZXJyO1xuIDk5MTpcdFx0dW5zaWduZWQgaW50IGksIHJlY29nbml6ZWRfcGlwZXM7XG4gOTkyOlx0XG4gOTkzOlx0XHRkZXYgPSBwNTRfaW5pdF9jb21tb24oc2l6ZW9mKCpwcml2KSk7XG4gOTk0Olx0XG4gOTk1Olx0XHRpZiAoIWRldikge1xuIDk5NjpcdFx0XHRkZXZfZXJyKFx1MDAyNnVkZXYtXHUwMDNlZGV2LCBcJiMzNDsocDU0dXNiKSBpZWVlODAyMTEgYWxsb2MgZmFpbGVkXFxuXCYjMzQ7KTtcbiA5OTc6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4gOTk4Olx0XHR9XG4gOTk5Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIyOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyMzY4CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogNTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGBmd2lvLmNgIGluIHRoZSBJbnRlcnNpbCBQNTQgV2lyZWxlc3MgRHJpdmVyKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jYCBmaWxlLiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHdoYXQmIzM5O3MgY2hhbmdlZCBhbmQgaG93IGl0IGltcGFjdHMgdGhlIG92ZXJhbGwgZHJpdmVyIGZ1bmN0aW9uYWxpdHkuIFNwZWNpZmljYWxseSwgSSYjMzk7bSBnb2luZyB0byBzdGFydCBieSByZXZpZXdpbmcgbGluZXMgMSB0aHJvdWdoIDEyMC4gVGhpcyBzZWN0aW9uIGlzIGxpa2VseSB0aGUgaW5pdGlhbGl6YXRpb24gYW5kIHNldHVwLCBvciBwZXJoYXBzIHNvbWUga2V5IGZ1bmN0aW9uIGRlZmluaXRpb25zIHJlbGF0ZWQgdG8gZmlybXdhcmUgaW50ZXJhY3Rpb24g4oCTIHRoYXQmIzM5O3MgbXkgaHVuY2gsIGdpdmVuIHRoZSAmIzM0O2Z3aW8mIzM0OyBpbiB0aGUgZmlsZW5hbWUuIFVuZGVyc3RhbmRpbmcgdGhlIGluaXRpYWwgY29udGV4dCBpcyBjcml0aWNhbCBiZWZvcmUgZGlnZ2luZyBkZWVwZXIgaW50byBhbnkgc3BlY2lmaWMgbW9kaWZpY2F0aW9ucy4gTGV0JiMzOTtzIHNlZSB3aGF0IGdlbXMgYXJlIGhpZGRlbiBpbiB0aGlzIGluaXRpYWwgc2VjdGlvbi4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgZGF0YSBzdHJ1Y3R1cmVzLCBmdW5jdGlvbiBwcm90b3R5cGVzLCBtYWNybyBkZWZpbml0aW9ucywgYW5kIGFueSBnbG9iYWwgdmFyaWFibGVzIHRoYXQgc2VlbSBpbXBvcnRhbnQgZm9yIGZpcm13YXJlIGNvbW11bmljYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIyOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0LypcbiAgIDM6XHQgKiBGaXJtd2FyZSBJL08gY29kZSBmb3IgbWFjODAyMTEgUHJpc201NCBkcml2ZXJzXG4gICA0Olx0ICpcbiAgIDU6XHQgKiBDb3B5cmlnaHQgKGMpIDIwMDYsIE1pY2hhZWwgV3UgXHUwMDNjZmxhbWluZ2ljZUBzb3VybWlsay5uZXRcdTAwM2VcbiAgIDY6XHQgKiBDb3B5cmlnaHQgKGMpIDIwMDctMjAwOSwgQ2hyaXN0aWFuIExhbXBhcnRlciBcdTAwM2NjaHVua2VleUB3ZWIuZGVcdTAwM2VcbiAgIDc6XHQgKiBDb3B5cmlnaHQgMjAwOCwgSm9oYW5uZXMgQmVyZyBcdTAwM2Nqb2hhbm5lc0BzaXBzb2x1dGlvbnMubmV0XHUwMDNlXG4gICA4Olx0ICpcbiAgIDk6XHQgKiBCYXNlZCBvbjpcbiAgMTA6XHQgKiAtIHRoZSBpc2xzbSAoc29mdG1hYyBwcmlzbTU0KSBkcml2ZXIsIHdoaWNoIGlzOlxuICAxMTpcdCAqICAgQ29weXJpZ2h0IDIwMDQtMjAwNiBKZWFuLUJhcHRpc3RlIE5vdGUgXHUwMDNjamJub3RlQGdtYWlsLmNvbVx1MDAzZSwgZXQgYWwuXG4gIDEyOlx0ICogLSBzdGxjNDV4eCBkcml2ZXJcbiAgMTM6XHQgKiAgIENvcHlyaWdodCAoQykgMjAwOCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuXG4gIDE0Olx0ICovXG4gIDE1Olx0XG4gIDE2Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvc2xhYi5oXHUwMDNlXG4gIDE3Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvZmlybXdhcmUuaFx1MDAzZVxuICAxODpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L2V0aGVyZGV2aWNlLmhcdTAwM2VcbiAgMTk6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9leHBvcnQuaFx1MDAzZVxuICAyMDpcdFxuICAyMTpcdCNpbmNsdWRlIFx1MDAzY25ldC9tYWM4MDIxMS5oXHUwMDNlXG4gIDIyOlx0XG4gIDIzOlx0I2luY2x1ZGUgXCYjMzQ7cDU0LmhcJiMzNDtcbiAgMjQ6XHQjaW5jbHVkZSBcJiMzNDtlZXByb20uaFwmIzM0O1xuICAyNTpcdCNpbmNsdWRlIFwmIzM0O2xtYWMuaFwmIzM0O1xuICAyNjpcdFxuICAyNzpcdGludCBwNTRfcGFyc2VfZmlybXdhcmUoc3RydWN0IGllZWU4MDIxMV9odyAqZGV2LCBjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3KVxuICAyODpcdHtcbiAgMjk6XHRcdHN0cnVjdCBwNTRfY29tbW9uICpwcml2ID0gZGV2LVx1MDAzZXByaXY7XG4gIDMwOlx0XHRzdHJ1Y3QgZXhwX2lmICpleHBfaWY7XG4gIDMxOlx0XHRzdHJ1Y3QgYm9vdHJlYyAqYm9vdHJlYztcbiAgMzI6XHRcdHUzMiAqZGF0YSA9ICh1MzIgKilmdy1cdTAwM2VkYXRhO1xuICAzMzpcdFx0dTMyICplbmRfZGF0YSA9ICh1MzIgKilmdy1cdTAwM2VkYXRhICYjNDM7IChmdy1cdTAwM2VzaXplIFx1MDAzZVx1MDAzZSAyKTtcbiAgMzQ6XHRcdHU4ICpmd192ZXJzaW9uID0gTlVMTDtcbiAgMzU6XHRcdHNpemVfdCBsZW47XG4gIDM2Olx0XHRpbnQgaTtcbiAgMzc6XHRcdGludCBtYXhsZW47XG4gIDM4Olx0XG4gIDM5Olx0XHRpZiAocHJpdi1cdTAwM2VyeF9zdGFydClcbiAgNDA6XHRcdFx0cmV0dXJuIDA7XG4gIDQxOlx0XG4gIDQyOlx0XHR3aGlsZSAoZGF0YSBcdTAwM2MgZW5kX2RhdGEgXHUwMDI2XHUwMDI2ICpkYXRhKVxuICA0MzpcdFx0XHRkYXRhJiM0MzsmIzQzOztcbiAgNDQ6XHRcbiAgNDU6XHRcdHdoaWxlIChkYXRhIFx1MDAzYyBlbmRfZGF0YSBcdTAwMjZcdTAwMjYgISpkYXRhKVxuICA0NjpcdFx0XHRkYXRhJiM0MzsmIzQzOztcbiAgNDc6XHRcbiAgNDg6XHRcdGJvb3RyZWMgPSAoc3RydWN0IGJvb3RyZWMgKikgZGF0YTtcbiAgNDk6XHRcbiAgNTA6XHRcdHdoaWxlIChib290cmVjLVx1MDAzZWRhdGEgXHUwMDNjPSBlbmRfZGF0YSBcdTAwMjZcdTAwMjYgKGJvb3RyZWMtXHUwMDNlZGF0YSAmIzQzO1xuICA1MTpcdFx0ICAgICAgIChsZW4gPSBsZTMyX3RvX2NwdShib290cmVjLVx1MDAzZWxlbikpKSBcdTAwM2M9IGVuZF9kYXRhKSB7XG4gIDUyOlx0XHRcdHUzMiBjb2RlID0gbGUzMl90b19jcHUoYm9vdHJlYy1cdTAwM2Vjb2RlKTtcbiAgNTM6XHRcdFx0c3dpdGNoIChjb2RlKSB7XG4gIDU0Olx0XHRcdGNhc2UgQlJfQ09ERV9DT01QT05FTlRfSUQ6XG4gIDU1Olx0XHRcdFx0cHJpdi1cdTAwM2Vmd19pbnRlcmZhY2UgPSBiZTMyX3RvX2NwdXAoKF9fYmUzMiAqKVxuICA1NjpcdFx0XHRcdFx0XHQgICAgIGJvb3RyZWMtXHUwMDNlZGF0YSk7XG4gIDU3Olx0XHRcdFx0c3dpdGNoIChwcml2LVx1MDAzZWZ3X2ludGVyZmFjZSkge1xuICA1ODpcdFx0XHRcdGNhc2UgRldfTE04NjpcbiAgNTk6XHRcdFx0XHRjYXNlIEZXX0xNMjA6XG4gIDYwOlx0XHRcdFx0Y2FzZSBGV19MTTg3OiB7XG4gIDYxOlx0XHRcdFx0XHRjaGFyICppZnR5cGUgPSAoY2hhciAqKWJvb3RyZWMtXHUwMDNlZGF0YTtcbiAgNjI6XHRcdFx0XHRcdHdpcGh5X2luZm8ocHJpdi1cdTAwM2Vody1cdTAwM2V3aXBoeSxcbiAgNjM6XHRcdFx0XHRcdFx0ICAgXCYjMzQ7cDU0IGRldGVjdGVkIGEgTE0lYyVjIGZpcm13YXJlXFxuXCYjMzQ7LFxuICA2NDpcdFx0XHRcdFx0XHQgICBpZnR5cGVbMl0sIGlmdHlwZVszXSk7XG4gIDY1Olx0XHRcdFx0XHRicmVhaztcbiAgNjY6XHRcdFx0XHRcdH1cbiAgNjc6XHRcdFx0XHRjYXNlIEZXX0ZNQUM6XG4gIDY4Olx0XHRcdFx0ZGVmYXVsdDpcbiAgNjk6XHRcdFx0XHRcdHdpcGh5X2Vycihwcml2LVx1MDAzZWh3LVx1MDAzZXdpcGh5LFxuICA3MDpcdFx0XHRcdFx0XHQgIFwmIzM0O3Vuc3VwcG9ydGVkIGZpcm13YXJlXFxuXCYjMzQ7KTtcbiAgNzE6XHRcdFx0XHRcdHJldHVybiAtRU5PREVWO1xuICA3MjpcdFx0XHRcdH1cbiAgNzM6XHRcdFx0XHRicmVhaztcbiAgNzQ6XHRcdFx0Y2FzZSBCUl9DT0RFX0NPTVBPTkVOVF9WRVJTSU9OOlxuICA3NTpcdFx0XHRcdC8qIDI0IGJ5dGVzIHNob3VsZCBiZSBlbm91Z2ggZm9yIGFsbCBmaXJtd2FyZXMgKi9cbiAgNzY6XHRcdFx0XHRpZiAoc3RybmxlbigodW5zaWduZWQgY2hhciAqKSBib290cmVjLVx1MDAzZWRhdGEsIDI0KSBcdTAwM2MgMjQpXG4gIDc3Olx0XHRcdFx0XHRmd192ZXJzaW9uID0gKHVuc2lnbmVkIGNoYXIgKikgYm9vdHJlYy1cdTAwM2VkYXRhO1xuICA3ODpcdFx0XHRcdGJyZWFrO1xuICA3OTpcdFx0XHRjYXNlIEJSX0NPREVfREVTQ1I6IHtcbiAgODA6XHRcdFx0XHRzdHJ1Y3QgYm9vdHJlY19kZXNjICpkZXNjID1cbiAgODE6XHRcdFx0XHRcdChzdHJ1Y3QgYm9vdHJlY19kZXNjICopYm9vdHJlYy1cdTAwM2VkYXRhO1xuICA4MjpcdFx0XHRcdHUzMiByeF9zdGFydCwgcnhfZW5kO1xuICA4MzpcdFxuICA4NDpcdFx0XHRcdGlmIChsZW4gXHUwMDNjIERJVl9ST1VORF9VUChvZmZzZXRvZmVuZChzdHJ1Y3QgYm9vdHJlY19kZXNjLFxuICA4NTpcdFx0XHRcdFx0XHRcdFx0ICAgcnhfa2V5Y2FjaGVfc2l6ZSksXG4gIDg2Olx0XHRcdFx0XHRcdFx0ICAgICAgIHNpemVvZigqYm9vdHJlYy1cdTAwM2VkYXRhKSkpIHtcbiAgODc6XHRcdFx0XHRcdHdpcGh5X2Vycihwcml2LVx1MDAzZWh3LVx1MDAzZXdpcGh5LFxuICA4ODpcdFx0XHRcdFx0XHQgIFwmIzM0O2Zpcm13YXJlIGRlc2NyaXB0b3IgaXMgdG9vIHNob3J0XFxuXCYjMzQ7KTtcbiAgODk6XHRcdFx0XHRcdHJldHVybiAtRUlOVkFMO1xuICA5MDpcdFx0XHRcdH1cbiAgOTE6XHRcbiAgOTI6XHRcdFx0XHRyeF9zdGFydCA9IGxlMzJfdG9fY3B1KGRlc2MtXHUwMDNlcnhfc3RhcnQpO1xuICA5MzpcdFx0XHRcdHJ4X2VuZCA9IGxlMzJfdG9fY3B1KGRlc2MtXHUwMDNlcnhfZW5kKTtcbiAgOTQ6XHRcdFx0XHRpZiAocnhfZW5kIFx1MDAzYyAweDM1MDAgfHwgcnhfZW5kIC0gMHgzNTAwIFx1MDAzYz0gcnhfc3RhcnQpIHtcbiAgOTU6XHRcdFx0XHRcdHdpcGh5X2Vycihwcml2LVx1MDAzZWh3LVx1MDAzZXdpcGh5LFxuICA5NjpcdFx0XHRcdFx0XHQgIFwmIzM0O2Zpcm13YXJlIGRlc2NyaXB0b3IgaGFzIGludmFsaWQgUlggcmFuZ2VcXG5cJiMzNDspO1xuICA5NzpcdFx0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gIDk4Olx0XHRcdFx0fVxuICA5OTpcdFxuIDEwMDpcdFx0XHRcdHByaXYtXHUwMDNlcnhfc3RhcnQgPSByeF9zdGFydDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjI6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQxODAKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA5OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipFeGFtaW5pbmcgdGhlIHA1NCBEcml2ZXImIzM5O3MgQ29uZmlndXJhdGlvbiBPcHRpb25zKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBpbnRvIHRoZSBgcDU0YCBkcml2ZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBVU0Igc3VwcG9ydCwgYW5kIHRoYXQmIzM5O3MgdGllZCB0byBgQ09ORklHX1A1NF9VU0JgLiBSaWdodCwgbWFrZXMgc2Vuc2UuIEJ1dCBJIGtub3cgYmV0dGVyIHRoYW4gdG8ganVzdCBsb29rIGF0IG9uZSBvcHRpb24gaW4gaXNvbGF0aW9uLiBJIG5lZWQgdG8gdHJhY2UgdGhlIGRlcGVuZGVuY2llcy4gVGhpcyBtZWFucyBJIG5lZWQgdG8gZGlnIGludG8gdGhlIEtjb25maWcgZmlsZXMgZm9yIGBDT05GSUdfUDU0X0NPTU1PTmAsIGBDT05GSUdfUDU0X1VTQmAsIGBDT05GSUdfUDU0X1BDSWAsIGFuZCBgQ09ORklHX1A1NF9TUElgIHRvIGZ1bGx5IGdyYXNwIHRoZSByZXF1aXJlbWVudHMgYW5kIHBvdGVudGlhbCBjb25mbGljdHMuIFRpbWUgdG8gc2VlIHdoYXQgY29uZGl0aW9ucyBuZWVkIHRvIGJlIG1ldCBmb3IgdGhlc2UgdG8gYmUgZW5hYmxlZCBjb3JyZWN0bHkuIFRoaXMgaXMgd2hlcmUgdGhlIGRldmlsIGlzIGluIHRoZSBkZXRhaWxzLiBJIGhhdmUgdG8gbWFrZSBzdXJlIGV2ZXJ5dGhpbmcgaXMgcHJvcGVybHkgc2V0LiBUaGlzIGlzIG5vdCB0aGUgd2hvbGUgcGljdHVyZSwgYnV0IGl0JiMzOTtzIGEgc3RhcnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIyOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBQNTQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9LY29uZmlnOjI6Y29uZmlnIFA1NF9DT01NT05cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtTb2Z0bWFjIFByaXNtNTQgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9LY29uZmlnLTE2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L0tjb25maWc6MTc6Y29uZmlnIFA1NF9VU0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9LY29uZmlnLTE4LVx0dHJpc3RhdGUgXCYjMzQ7UHJpc201NCBVU0Igc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9LY29uZmlnLTI4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L0tjb25maWc6Mjk6Y29uZmlnIFA1NF9QQ0lcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9LY29uZmlnLTMwLVx0dHJpc3RhdGUgXCYjMzQ7UHJpc201NCBQQ0kgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9LY29uZmlnLTQyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L0tjb25maWc6NDM6Y29uZmlnIFA1NF9TUElcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9LY29uZmlnLTQ0LVx0dHJpc3RhdGUgXCYjMzQ7UHJpc201NCBTUEkgKHN0bGM0NXh4KSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L0tjb25maWctNTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvS2NvbmZpZzo1Mjpjb25maWcgUDU0X1NQSV9ERUZBVUxUX0VFUFJPTVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L0tjb25maWctNTMtXHRib29sIFwmIzM0O0luY2x1ZGUgZmFsbGJhY2sgRUVQUk9NIGJsb2JcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvS2NvbmZpZy02OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9LY29uZmlnOjY5OmNvbmZpZyBQNTRfTEVEU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L0tjb25maWctNzAtXHRib29sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIyOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1MDAzCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgcmVhZGluZyB0aGUgS2NvbmZpZywgYXNzdW1pbmcgSSYjMzk7bSB3ZWxsLXZlcnNlZCBpbiBrZXJuZWwgY29uZmlndXJhdGlvbjoKCioqRGl2aW5nIGludG8gdGhlIFA1NCBLY29uZmlnKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcyBhbmQgZGlzc2VjdCB0aGUgS2NvbmZpZyBmaWxlIGZvciB0aGUgSW50ZXJzaWwgcDU0IHdpcmVsZXNzIGRyaXZlciwgc3BlY2lmaWNhbGx5IHVuZGVyIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvS2NvbmZpZ2AuIFRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgY29uZmlndXJhdGlvbiBkZWNpc2lvbnMgZm9yIHRoaXMgZHJpdmVyIGFyZSBtYWRlLCBhbmQgdW5kZXJzdGFuZGluZyBpdCBpcyBjcnVjaWFsIGZvciBwcm9wZXIgaW50ZWdyYXRpb24uIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHNldmVyYWwgdGhpbmdzOiB0aGUgb3ZlcmFsbCBzdHJ1Y3R1cmUsIGFueSBkZXBlbmRlbmNpZXMgb24gb3RoZXIga2VybmVsIHN1YnN5c3RlbXMsIHdoYXQgZmVhdHVyZXMgYXJlIGV4cG9zZWQgZm9yIHRoZSB1c2VyLCBhbmQgYW55IHBvdGVudGlhbCBjYXZlYXRzIG9yIHdhcm5pbmdzLiBJIGV4cGVjdCB0byBzZWUgdGhlIHVzdWFsIHN1c3BlY3RzOiBtb2R1bGUgdnMuIGJ1aWx0LWluIG9wdGlvbnMsIGhhcmR3YXJlIHZhcmlhbnRzLCBwb3dlciBtYW5hZ2VtZW50IGNvbnNpZGVyYXRpb25zLCBwZXJoYXBzIGV2ZW4gZGVidWdnaW5nIGZsYWdzLiBJJiMzOTtsbCBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBkZWZhdWx0cywgYXMgdGhlc2UgYXJlIHdoYXQgdGhlIHN5c3RlbSB3aWxsIHRyeSB0byB1c2UgaWYgdGhlIHVzZXIgZG9lc24mIzM5O3Qgc3BlY2lmeSBvdGhlcndpc2UuIEEgd2VsbC13cml0dGVuIEtjb25maWcgd2lsbCBoYXZlIGNsZWFyIGhlbHAgdGV4dCB0byBndWlkZSB0aGUgdXNlciBhbmQgZXhwbGFpbiB0aGUgaW1wbGljYXRpb25zIG9mIGVhY2ggb3B0aW9uLiBMZXQmIzM5O3Mgc2VlIGlmIHRoaXMgb25lIGhvbGRzIHVwIHRvIG15IGV4cGVjdGF0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjI6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogODAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBQNTRfQ09NTU9OXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtTb2Z0bWFjIFByaXNtNTQgc3VwcG9ydFwmIzM0O1xuICAgNDpcdFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxuICAgNTpcdFx0c2VsZWN0IEZXX0xPQURFUlxuICAgNjpcdFx0c2VsZWN0IENSQ19DQ0lUVFxuICAgNzpcdFx0aGVscFxuICAgODpcdFx0ICBUaGlzIGlzIGNvbW1vbiBjb2RlIGZvciBpc2wzOHh4L3N0bGM0NXh4IGJhc2VkIG1vZHVsZXMuXG4gICA5Olx0XHQgIFRoaXMgbW9kdWxlIGRvZXMgbm90aGluZyBieSBpdHNlbGYgLSB0aGUgVVNCL1BDSS9TUEkgZnJvbnQtZW5kc1xuICAxMDpcdFx0ICBhbHNvIG5lZWQgdG8gYmUgZW5hYmxlZCBpbiBvcmRlciB0byBzdXBwb3J0IGFueSBkZXZpY2VzLlxuICAxMTpcdFxuICAxMjpcdFx0ICBUaGVzZSBkZXZpY2VzIHJlcXVpcmUgc29mdG1hYyBmaXJtd2FyZSB3aGljaCBjYW4gYmUgZm91bmQgYXRcbiAgMTM6XHRcdCAgXHUwMDNjaHR0cHM6Ly93aXJlbGVzcy5kb2NzLmtlcm5lbC5vcmcvZW4vbGF0ZXN0L2VuL3VzZXJzL2RyaXZlcnMvcDU0Lmh0bWxcdTAwM2VcbiAgMTQ6XHRcbiAgMTU6XHRcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBhIG1vZHVsZSwgaXQmIzM5O2xsIGJlIGNhbGxlZCBwNTRjb21tb24uXG4gIDE2Olx0XG4gIDE3Olx0Y29uZmlnIFA1NF9VU0JcbiAgMTg6XHRcdHRyaXN0YXRlIFwmIzM0O1ByaXNtNTQgVVNCIHN1cHBvcnRcJiMzNDtcbiAgMTk6XHRcdGRlcGVuZHMgb24gUDU0X0NPTU1PTiBcdTAwMjZcdTAwMjYgVVNCXG4gIDIwOlx0XHRzZWxlY3QgQ1JDMzJcbiAgMjE6XHRcdGhlbHBcbiAgMjI6XHRcdCAgVGhpcyBkcml2ZXIgaXMgZm9yIFVTQiBpc2wzOHh4IGJhc2VkIHdpcmVsZXNzIGNhcmRzLlxuICAyMzpcdFxuICAyNDpcdFx0ICBUaGVzZSBkZXZpY2VzIHJlcXVpcmUgc29mdG1hYyBmaXJtd2FyZSB3aGljaCBjYW4gYmUgZm91bmQgYXRcbiAgMjU6XHRcdCAgXHUwMDNjaHR0cHM6Ly93aXJlbGVzcy5kb2NzLmtlcm5lbC5vcmcvZW4vbGF0ZXN0L2VuL3VzZXJzL2RyaXZlcnMvcDU0Lmh0bWxcdTAwM2VcbiAgMjY6XHRcbiAgMjc6XHRcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBhIG1vZHVsZSwgaXQmIzM5O2xsIGJlIGNhbGxlZCBwNTR1c2IuXG4gIDI4Olx0XG4gIDI5Olx0Y29uZmlnIFA1NF9QQ0lcbiAgMzA6XHRcdHRyaXN0YXRlIFwmIzM0O1ByaXNtNTQgUENJIHN1cHBvcnRcJiMzNDtcbiAgMzE6XHRcdGRlcGVuZHMgb24gUDU0X0NPTU1PTiBcdTAwMjZcdTAwMjYgUENJXG4gIDMyOlx0XHRoZWxwXG4gIDMzOlx0XHQgIFRoaXMgZHJpdmVyIGlzIGZvciBQQ0kgaXNsMzh4eCBiYXNlZCB3aXJlbGVzcyBjYXJkcy5cbiAgMzQ6XHRcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgbW9zdCBkZXZpY2VzIHRoYXQgYXJlIHN1cHBvcnRlZCBieSB0aGVcbiAgMzU6XHRcdCAgZnVsbG1hYyBwcmlzbTU0IGRyaXZlciBwbHVzIG1hbnkgZGV2aWNlcyB3aGljaCBhcmUgbm90XG4gIDM2Olx0XHQgIHN1cHBvcnRlZCBieSB0aGUgZnVsbG1hYyBkcml2ZXIvZmlybXdhcmUuXG4gIDM3Olx0XG4gIDM4Olx0XHQgIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHNvZnRtYWMgZmlybXdhcmUgd2hpY2ggY2FuIGJlIGZvdW5kIGF0XG4gIDM5Olx0XHQgIFx1MDAzY2h0dHBzOi8vd2lyZWxlc3MuZG9jcy5rZXJuZWwub3JnL2VuL2xhdGVzdC9lbi91c2Vycy9kcml2ZXJzL3A1NC5odG1sXHUwMDNlXG4gIDQwOlx0XG4gIDQxOlx0XHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgYSBtb2R1bGUsIGl0JiMzOTtsbCBiZSBjYWxsZWQgcDU0cGNpLlxuICA0MjpcdFxuICA0MzpcdGNvbmZpZyBQNTRfU1BJXG4gIDQ0Olx0XHR0cmlzdGF0ZSBcJiMzNDtQcmlzbTU0IFNQSSAoc3RsYzQ1eHgpIHN1cHBvcnRcJiMzNDtcbiAgNDU6XHRcdGRlcGVuZHMgb24gUDU0X0NPTU1PTiBcdTAwMjZcdTAwMjYgU1BJX01BU1RFUlxuICA0NjpcdFx0aGVscFxuICA0NzpcdFx0ICBUaGlzIGRyaXZlciBpcyBmb3Igc3RsYzQ1NTAgb3Igc3RsYzQ1NjAgYmFzZWQgd2lyZWxlc3MgY2hpcHNcbiAgNDg6XHRcdCAgc3VjaCBhcyBOb2tpYSYjMzk7cyBOODAwL044MTAgUG9ydGFibGUgSW50ZXJuZXQgVGFibGV0LlxuICA0OTpcdFxuICA1MDpcdFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGEgbW9kdWxlLCBpdCYjMzk7bGwgYmUgY2FsbGVkIHA1NHNwaS5cbiAgNTE6XHRcbiAgNTI6XHRjb25maWcgUDU0X1NQSV9ERUZBVUxUX0VFUFJPTVxuICA1MzpcdFx0Ym9vbCBcJiMzNDtJbmNsdWRlIGZhbGxiYWNrIEVFUFJPTSBibG9iXCYjMzQ7XG4gIDU0Olx0XHRkZXBlbmRzIG9uIFA1NF9TUElcbiAgNTU6XHRcdGRlZmF1bHQgblxuICA1NjpcdFx0aGVscFxuICA1NzpcdFx0IFVubGlrZSB0aGUgUENJIG9yIFVTQiBkZXZpY2VzLCB0aGUgU1BJIHZhcmlhbnRzIGRvbiYjMzk7dCBoYXZlXG4gIDU4Olx0XHQgYSBkZWRpY2F0ZWQgRUVQUk9NIGNoaXAgdG8gc3RvcmUgYWxsIGRldmljZSBzcGVjaWZpYyB2YWx1ZXNcbiAgNTk6XHRcdCBmb3IgY2FsaWJyYXRpb24sIGNvdW50cnkgYW5kIGludGVyZmFjZSBzZXR0aW5ncy5cbiAgNjA6XHRcbiAgNjE6XHRcdCBUaGUgZHJpdmVyIHdpbGwgdHJ5IHRvIGxvYWQgdGhlIGltYWdlIFwmIzM0OzM4MjYuZWVwcm9tXCYjMzQ7LCBpZiB0aGVcbiAgNjI6XHRcdCBmaWxlIGlzIHB1dCBhdCB0aGUgcmlnaHQgcGxhY2UuICh1c3VhbGx5IC9saWIvZmlybXdhcmUuKVxuICA2MzpcdFxuICA2NDpcdFx0IE9ubHkgaWYgdGhpcyByZXF1ZXN0IGZhaWxzLCB0aGlzIG9wdGlvbiB3aWxsIHByb3ZpZGUgYVxuICA2NTpcdFx0IGJhY2t1cCBzZXQgb2YgZ2VuZXJpYyB2YWx1ZXMgdG8gZ2V0IHRoZSBkZXZpY2Ugd29ya2luZy5cbiAgNjY6XHRcbiAgNjc6XHRcdCBFbmFibGluZyB0aGlzIG9wdGlvbiBhZGRzIGFib3V0IDRrIHRvIHA1NHNwaS5cbiAgNjg6XHRcbiAgNjk6XHRjb25maWcgUDU0X0xFRFNcbiAgNzA6XHRcdGJvb2xcbiAgNzE6XHRcdGRlcGVuZHMgb24gUDU0X0NPTU1PTiBcdTAwMjZcdTAwMjYgTUFDODAyMTFfTEVEUyBcdTAwMjZcdTAwMjYgKExFRFNfQ0xBU1MgPSB5IHx8IExFRFNfQ0xBU1MgPSBQNTRfQ09NTU9OKVxuICA3MjpcdFx0ZGVmYXVsdCB5XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIyOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2NDE0CgkJCQkJCQlvdXRwdXQ6IDE0OQoJCQkJCQkJdGhvdWdodHM6IDExMDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBUYXJnZXQgQW5hbHlzaXM6IHA1NCBGaXJtd2FyZSBQYXJzaW5nKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBhbmFseXplIHRoaXMgcGF0Y2ggdGFyZ2V0aW5nIGZpcm13YXJlIHBhcnNpbmcgd2l0aGluIHRoZSBwNTQgd2lyZWxlc3MgZHJpdmVyLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gYHA1NF9wYXJzZV9maXJtd2FyZWAgaW4gYGZ3aW8uY2AuIFRoaXMgZnVuY3Rpb24gaXMgcGl2b3RhbCBhcyBpdCYjMzk7cyB0aGUgY29yZSBvZiBwYXJzaW5nIHRoZSBmaXJtd2FyZSBmb3IgcDU0IGRldmljZXMsIGFuZCBjcnVjaWFsIGZvciBVU0IsIFBDSSwgYW5kIFNQSS4gVGhlIGNvbm5lY3Rpb24gdG8gVVNCIGlzIHBhcnRpY3VsYXJseSBpbnRlcmVzdGluZyBiZWNhdXNlIHdlIGhhdmUgVVNCIFJhdyBHYWRnZXQgYW5kIHN5emthbGxlciBlbXVsYXRpb24gb3B0aW9ucywgb2ZmZXJpbmcgdmlhYmxlIGZ1enppbmcgcGF0aHdheXMuIE1vcmVvdmVyLCB0aGUgZmxleGliaWxpdHkgdG8gbG9hZCBmaXJtd2FyZSBmcm9tIHVzZXJzcGFjZSwgc3lzZnMsIHJvb3Rmcywgb3IgZXZlbiB2aWEgZW11bGF0aW9uIG1lYW5zIGEgd2lkZSBhdHRhY2sgc3VyZmFjZS4KCk5vdywgbGV0JiMzOTtzIGRpdmUgaW50byB0aGUgcGF0Y2gmIzM5O3Mgc3BlY2lmaWNzLiBCZWZvcmUgdGhlIHBhdGNoLCB0aGUgY29kZSB3YXMgYSBiaXQgbGF4LCBjYWxjdWxhdGluZyBgcnhfZW5kYCB3aXRoIGEgaGFyZGNvZGVkIG9mZnNldC4gVGhlIHVwZGF0ZWQgY29kZSBpbnRyb2R1Y2VzIGEgKmNyaXRpY2FsKiBzYW5pdHkgY2hlY2suIEl0IGVuc3VyZXMgdGhlIGZpcm13YXJlIGRlc2NyaXB0b3IgaGFzIGEgc3VmZmljaWVudCBsZW5ndGggYW5kIHJpZ29yb3VzbHkgdmFsaWRhdGVzIHRoZSBgcnhfZW5kYCBhbmQgYHJ4X3N0YXJ0YCB2YWx1ZXMsIHByZXZlbnRpbmcgdGhlIHBvdGVudGlhbCBmb3IgaW50ZWdlciBvdmVyZmxvd3MgYW5kIHJlbGF0ZWQgdnVsbmVyYWJpbGl0aWVzLgoKVGhpcyBkaXJlY3RseSB0cmFuc2xhdGVzIGludG8gZnV6emluZyBwb3RlbnRpYWwhIFRoaXMgaXMgZXhlY3V0YWJsZSBjb2RlIHdpdGhpbiBhIHJlYWNoYWJsZSBkcml2ZXIuIFRoZSBwYXRjaCBtb2RpZmllcyBjcnVjaWFsIGlucHV0IHZhbGlkYXRpb24gYW5kIHNhbml0eSBjaGVja2luZyBsb2dpYyB3aGVuIHBhcnNpbmcgZmlybXdhcmUgZm9yIGBwNTRgLiBUaGVyZWZvcmUsIGl0JiMzOTtzIGRlZmluaXRpdmVseSBXb3J0aEZ1enppbmc9dHJ1ZS4KCk15IHByaW1hcnkgYEZvY3VzU3ltYm9sc2AgYXJlIGNsZWFybHkgYHA1NF9wYXJzZV9maXJtd2FyZWAuIEFsc28sIEkmIzM5O2xsIGxpa2VseSBuZWVkIHRvIGNvbnNpZGVyIHJlbGF0ZWQgZnVuY3Rpb25zIGFzIGVudHJ5IHBvaW50cywgc3VjaCBhcyBgcDU0dV9zdGFydF9vcHNgLCBgcDU0dV9sb2FkX2Zpcm13YXJlX2NiYCwgYW5kIGBwNTR1X3Byb2JlYC4gVGhlc2UgYXJlIGFsbCByZWxhdGVkIHRvIGZpcm13YXJlIGxvYWRpbmcgYW5kIGRldmljZSBpbml0aWFsaXphdGlvbi4KClJlZ2FyZGluZyB0aGUgcmVxdWlyZWQga2VybmVsIGNvbmZpZ3MsIEkgbmVlZCB0byBlbmFibGUgYFA1NF9DT01NT05gLCBgUDU0X1VTQmAsIGBNQUM4MDIxMWAsIGFuZCBgVVNCYC4gVGhlc2UgYXJlIGVzc2VudGlhbCBmb3IgYnVpbGRpbmcgdGhlIHJlbGV2YW50IGRyaXZlcnMgYW5kIHN1cHBvcnRpbmcgVVNCIGVtdWxhdGlvbi4gYFA1NF9DT01NT05gIGlzIHJlcXVpcmVkLCBhbmQgYFA1NF9VU0JgIGluIHR1cm4gZGVwZW5kcyBvbiB0aGVzZS4KCkkmIzM5O3ZlIHJldmlld2VkIGFsbCBpbnN0cnVjdGlvbnMgYW5kIGd1aWRlbGluZXMgYW5kIHZhbGlkYXRlZCB0aGUgYW5hbHlzaXMuIFRoaXMgaXMgYSBzb2xpZCBmdXp6aW5nIHRhcmdldCBiYXNlZCBvbiByZWFjaGFibGUgZHJpdmVyIGNvZGUsIHdpdGggYSBoaWdoIHByb2JhYmlsaXR5IG9mIGZpbmRpbmcgYnVncyBkdWUgdG8gdGhlIGNoYW5nZWQgaW5wdXQgdmFsaWRhdGlvbiBsb2dpYy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjI6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1A1NF9DT01NT04mIzM0OywKICAgICYjMzQ7UDU0X1VTQiYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtwNTRfcGFyc2VfZmlybXdhcmUmIzM0OywKICAgICYjMzQ7cDU0dV9zdGFydF9vcHMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBib3VuZHMgYW5kIHJhbmdlIHZhbGlkYXRpb24gY2hlY2tzIGZvciBmaXJtd2FyZSBkZXNjcmlwdG9ycyBpbiBwNTRfcGFyc2VfZmlybXdhcmUoKS4gVGhpcyBmdW5jdGlvbiBpcyByZWFjaGFibGUgdmlhIHRoZSBwNTR1c2IgZHJpdmVyIHdoaWNoIGNhbiBiZSBmdXp6ZWQgdXNpbmcgVVNCIGVtdWxhdGlvbiAoZS5nLiBSYXcgR2FkZ2V0KS4gRnV6emluZyBpcyB3YXJyYW50ZWQgdG8gdmVyaWZ5IHRoYXQgbWFsZm9ybWVkIGZpcm13YXJlIGltYWdlcyBhbmQgZWRnZSBjYXNlcyBhcmUgaGFuZGxlZCBzYWZlbHkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1A1NF9DT01NT04mIzM0OywKICAgICYjMzQ7UDU0X1VTQiYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtwNTRfcGFyc2VfZmlybXdhcmUmIzM0OywKICAgICYjMzQ7cDU0dV9zdGFydF9vcHMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBib3VuZHMgYW5kIHJhbmdlIHZhbGlkYXRpb24gY2hlY2tzIGZvciBmaXJtd2FyZSBkZXNjcmlwdG9ycyBpbiBwNTRfcGFyc2VfZmlybXdhcmUoKS4gVGhpcyBmdW5jdGlvbiBpcyByZWFjaGFibGUgdmlhIHRoZSBwNTR1c2IgZHJpdmVyIHdoaWNoIGNhbiBiZSBmdXp6ZWQgdXNpbmcgVVNCIGVtdWxhdGlvbiAoZS5nLiBSYXcgR2FkZ2V0KS4gRnV6emluZyBpcyB3YXJyYW50ZWQgdG8gdmVyaWZ5IHRoYXQgbWFsZm9ybWVkIGZpcm13YXJlIGltYWdlcyBhbmQgZWRnZSBjYXNlcyBhcmUgaGFuZGxlZCBzYWZlbHkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIyOjM1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjI6MzU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGlucHV0IHZhbGlkYXRpb24gYW5kIGJvdW5kcyBjaGVja2luZyBmb3IgZmlybXdhcmUgYm9vdCByZWNvcmQgZGVzY3JpcHRvcnMgaW4gcDU0X3BhcnNlX2Zpcm13YXJlKCkuIFNwZWNpZmljYWxseSwgaXQgdmFsaWRhdGVzIHRoYXQgdGhlIGJvb3QgcmVjb3JkIGxlbmd0aCBpcyBzdWZmaWNpZW50IHRvIGNvdmVyIHN0cnVjdCBib290cmVjX2Rlc2MgZmllbGRzIChwcmV2ZW50aW5nIG91dC1vZi1ib3VuZHMgcmVhZHMgb24gdHJ1bmNhdGVkIGZpcm13YXJlIGJ1ZmZlcnMsIGRldGVjdGFibGUgYnkgS0FTQU4pIGFuZCBlbnN1cmVzIHRoYXQgcnhfZW5kIFx1MDAzZT0gMHgzNTAwIGFuZCByeF9lbmQgLSAweDM1MDAgXHUwMDNlIHJ4X3N0YXJ0IHRvIHByZXZlbnQgaW50ZWdlciB1bmRlcmZsb3cgYW5kIGludmFsaWQgYnVmZmVyIHJhbmdlcy5cblxuTm8gdW5pbml0aWFsaXplZCBtZW1vcnkgaXMgYWxsb2NhdGVkLCByZWFkLCBvciBleHBvc2VkLiBMb2NhbCB2YXJpYWJsZXMgKHJ4X3N0YXJ0LCByeF9lbmQpIGFyZSBleHBsaWNpdGx5IGluaXRpYWxpemVkIGZyb20gdGhlIGZpcm13YXJlIGRlc2NyaXB0b3IgYmVmb3JlIGJlaW5nIGNoZWNrZWQgYW5kIHN0b3JlZC4gTm8gZGF0YSBpcyBjb3BpZWQgdG8gdXNlcnNwYWNlIHdpdGhvdXQgaW5pdGlhbGl6YXRpb24uIFRoZXJlZm9yZSwgc3RhbmRhcmQgS0FTQU4gYnVpbGRzIGFyZSBzdWZmaWNpZW50IGFuZCBLTVNBTiBmdXp6aW5nIGlzIG5vdCBuZWVkZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBlNzAzYzAzNDZiY2ZkOWZkNWYxZTQ0ZTkzOTk4ZjFiZWZkYjEzMjYzCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBTZXAgNiAyMjozNTowOSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jCmluZGV4IGEzZDkwNTNmMDQzYzYuLjVkODJlMGE0MzgzNTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYwpAQCAtNzksOSAmIzQzOzc5LDI2IEBAIGludCBwNTRfcGFyc2VfZmlybXdhcmUoc3RydWN0IGllZWU4MDIxMV9odyAqZGV2LCBjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3KQogCQljYXNlIEJSX0NPREVfREVTQ1I6IHsKIAkJCXN0cnVjdCBib290cmVjX2Rlc2MgKmRlc2MgPQogCQkJCShzdHJ1Y3QgYm9vdHJlY19kZXNjICopYm9vdHJlYy0mZ3Q7ZGF0YTsKLQkJCXByaXYtJmd0O3J4X3N0YXJ0ID0gbGUzMl90b19jcHUoZGVzYy0mZ3Q7cnhfc3RhcnQpOwotCQkJLyogRklYTUUgYWRkIHNhbml0eSBjaGVja2luZyAqLwotCQkJcHJpdi0mZ3Q7cnhfZW5kID0gbGUzMl90b19jcHUoZGVzYy0mZ3Q7cnhfZW5kKSAtIDB4MzUwMDsKJiM0MzsJCQl1MzIgcnhfc3RhcnQsIHJ4X2VuZDsKJiM0MzsKJiM0MzsJCQlpZiAobGVuICZsdDsgRElWX1JPVU5EX1VQKG9mZnNldG9mZW5kKHN0cnVjdCBib290cmVjX2Rlc2MsCiYjNDM7CQkJCQkJCSAgIHJ4X2tleWNhY2hlX3NpemUpLAomIzQzOwkJCQkJCSAgICAgICBzaXplb2YoKmJvb3RyZWMtJmd0O2RhdGEpKSkgewomIzQzOwkJCQl3aXBoeV9lcnIocHJpdi0mZ3Q7aHctJmd0O3dpcGh5LAomIzQzOwkJCQkJICAmIzM0O2Zpcm13YXJlIGRlc2NyaXB0b3IgaXMgdG9vIHNob3J0XG4mIzM0Oyk7CiYjNDM7CQkJCXJldHVybiAtRUlOVkFMOwomIzQzOwkJCX0KJiM0MzsKJiM0MzsJCQlyeF9zdGFydCA9IGxlMzJfdG9fY3B1KGRlc2MtJmd0O3J4X3N0YXJ0KTsKJiM0MzsJCQlyeF9lbmQgPSBsZTMyX3RvX2NwdShkZXNjLSZndDtyeF9lbmQpOwomIzQzOwkJCWlmIChyeF9lbmQgJmx0OyAweDM1MDAgfHwgcnhfZW5kIC0gMHgzNTAwICZsdDs9IHJ4X3N0YXJ0KSB7CiYjNDM7CQkJCXdpcGh5X2Vycihwcml2LSZndDtody0mZ3Q7d2lwaHksCiYjNDM7CQkJCQkgICYjMzQ7ZmlybXdhcmUgZGVzY3JpcHRvciBoYXMgaW52YWxpZCBSWCByYW5nZVxuJiMzNDspOwomIzQzOwkJCQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJCQl9CiYjNDM7CiYjNDM7CQkJcHJpdi0mZ3Q7cnhfc3RhcnQgPSByeF9zdGFydDsKJiM0MzsJCQlwcml2LSZndDtyeF9lbmQgPSByeF9lbmQgLSAweDM1MDA7CiAJCQlwcml2LSZndDtoZWFkcm9vbSA9IGRlc2MtJmd0O2hlYWRyb29tOwogCQkJcHJpdi0mZ3Q7dGFpbHJvb20gPSBkZXNjLSZndDt0YWlscm9vbTsKIAkJCXByaXYtJmd0O3ByaXZhY3lfY2FwcyA9IGRlc2MtJmd0O3ByaXZhY3lfY2FwczsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIyOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0MzUKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiA2NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhpbmdzOgoKKipBbmFseXppbmcgdGhlIEZpcm13YXJlIEkvTyBDb2RlKioKCk9rYXksIHRpbWUgdG8gZGl2ZSBpbnRvIHRoaXMuIFRoZSBkaWZmIHBvaW50cyBtZSB0b3dhcmRzIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jYCwgc28gdGhhdCYjMzk7cyB3aGVyZSBJIG5lZWQgdG8gZm9jdXMuIExldCYjMzk7cyBzdGFydCB3aXRoIGEgdGhvcm91Z2ggZXhhbWluYXRpb24gb2YgdGhlIGNoYW5nZXMuIEkmIzM5O2xsIG5lZWQgdG8gcmVhZCB0aGUgc3Vycm91bmRpbmcgY29kZSBpbiB0aGF0IGZpbGUsIHRvbywgdG8gZ2V0IHRoZSBjb21wbGV0ZSBwaWN0dXJlLiBUaGUgYmVzdCB3YXkgdG8gYmVnaW4gdGhlIGludmVzdGlnYXRpb24gaXMgdXNpbmcgYHJlYWQtZmlsZWAgdG8gZ2V0IHRoZSBjb250ZXh0IGluIHRoZSBmaWxlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jYC4gVGhpcyB3aWxsIGdpdmUgbWUgZXZlcnl0aGluZyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY2hhbmdlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAyMjozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA1MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDUwOlx0XHR3aGlsZSAoYm9vdHJlYy1cdTAwM2VkYXRhIFx1MDAzYz0gZW5kX2RhdGEgXHUwMDI2XHUwMDI2IChib290cmVjLVx1MDAzZWRhdGEgJiM0MztcbiAgNTE6XHRcdCAgICAgICAobGVuID0gbGUzMl90b19jcHUoYm9vdHJlYy1cdTAwM2VsZW4pKSkgXHUwMDNjPSBlbmRfZGF0YSkge1xuICA1MjpcdFx0XHR1MzIgY29kZSA9IGxlMzJfdG9fY3B1KGJvb3RyZWMtXHUwMDNlY29kZSk7XG4gIDUzOlx0XHRcdHN3aXRjaCAoY29kZSkge1xuICA1NDpcdFx0XHRjYXNlIEJSX0NPREVfQ09NUE9ORU5UX0lEOlxuICA1NTpcdFx0XHRcdHByaXYtXHUwMDNlZndfaW50ZXJmYWNlID0gYmUzMl90b19jcHVwKChfX2JlMzIgKilcbiAgNTY6XHRcdFx0XHRcdFx0ICAgICBib290cmVjLVx1MDAzZWRhdGEpO1xuICA1NzpcdFx0XHRcdHN3aXRjaCAocHJpdi1cdTAwM2Vmd19pbnRlcmZhY2UpIHtcbiAgNTg6XHRcdFx0XHRjYXNlIEZXX0xNODY6XG4gIDU5Olx0XHRcdFx0Y2FzZSBGV19MTTIwOlxuICA2MDpcdFx0XHRcdGNhc2UgRldfTE04Nzoge1xuICA2MTpcdFx0XHRcdFx0Y2hhciAqaWZ0eXBlID0gKGNoYXIgKilib290cmVjLVx1MDAzZWRhdGE7XG4gIDYyOlx0XHRcdFx0XHR3aXBoeV9pbmZvKHByaXYtXHUwMDNlaHctXHUwMDNld2lwaHksXG4gIDYzOlx0XHRcdFx0XHRcdCAgIFwmIzM0O3A1NCBkZXRlY3RlZCBhIExNJWMlYyBmaXJtd2FyZVxcblwmIzM0OyxcbiAgNjQ6XHRcdFx0XHRcdFx0ICAgaWZ0eXBlWzJdLCBpZnR5cGVbM10pO1xuICA2NTpcdFx0XHRcdFx0YnJlYWs7XG4gIDY2Olx0XHRcdFx0XHR9XG4gIDY3Olx0XHRcdFx0Y2FzZSBGV19GTUFDOlxuICA2ODpcdFx0XHRcdGRlZmF1bHQ6XG4gIDY5Olx0XHRcdFx0XHR3aXBoeV9lcnIocHJpdi1cdTAwM2Vody1cdTAwM2V3aXBoeSxcbiAgNzA6XHRcdFx0XHRcdFx0ICBcJiMzNDt1bnN1cHBvcnRlZCBmaXJtd2FyZVxcblwmIzM0Oyk7XG4gIDcxOlx0XHRcdFx0XHRyZXR1cm4gLUVOT0RFVjtcbiAgNzI6XHRcdFx0XHR9XG4gIDczOlx0XHRcdFx0YnJlYWs7XG4gIDc0Olx0XHRcdGNhc2UgQlJfQ09ERV9DT01QT05FTlRfVkVSU0lPTjpcbiAgNzU6XHRcdFx0XHQvKiAyNCBieXRlcyBzaG91bGQgYmUgZW5vdWdoIGZvciBhbGwgZmlybXdhcmVzICovXG4gIDc2Olx0XHRcdFx0aWYgKHN0cm5sZW4oKHVuc2lnbmVkIGNoYXIgKikgYm9vdHJlYy1cdTAwM2VkYXRhLCAyNCkgXHUwMDNjIDI0KVxuICA3NzpcdFx0XHRcdFx0ZndfdmVyc2lvbiA9ICh1bnNpZ25lZCBjaGFyICopIGJvb3RyZWMtXHUwMDNlZGF0YTtcbiAgNzg6XHRcdFx0XHRicmVhaztcbiAgNzk6XHRcdFx0Y2FzZSBCUl9DT0RFX0RFU0NSOiB7XG4gIDgwOlx0XHRcdFx0c3RydWN0IGJvb3RyZWNfZGVzYyAqZGVzYyA9XG4gIDgxOlx0XHRcdFx0XHQoc3RydWN0IGJvb3RyZWNfZGVzYyAqKWJvb3RyZWMtXHUwMDNlZGF0YTtcbiAgODI6XHRcdFx0XHR1MzIgcnhfc3RhcnQsIHJ4X2VuZDtcbiAgODM6XHRcbiAgODQ6XHRcdFx0XHRpZiAobGVuIFx1MDAzYyBESVZfUk9VTkRfVVAob2Zmc2V0b2ZlbmQoc3RydWN0IGJvb3RyZWNfZGVzYyxcbiAgODU6XHRcdFx0XHRcdFx0XHRcdCAgIHJ4X2tleWNhY2hlX3NpemUpLFxuICA4NjpcdFx0XHRcdFx0XHRcdCAgICAgICBzaXplb2YoKmJvb3RyZWMtXHUwMDNlZGF0YSkpKSB7XG4gIDg3Olx0XHRcdFx0XHR3aXBoeV9lcnIocHJpdi1cdTAwM2Vody1cdTAwM2V3aXBoeSxcbiAgODg6XHRcdFx0XHRcdFx0ICBcJiMzNDtmaXJtd2FyZSBkZXNjcmlwdG9yIGlzIHRvbyBzaG9ydFxcblwmIzM0Oyk7XG4gIDg5Olx0XHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiAgOTA6XHRcdFx0XHR9XG4gIDkxOlx0XG4gIDkyOlx0XHRcdFx0cnhfc3RhcnQgPSBsZTMyX3RvX2NwdShkZXNjLVx1MDAzZXJ4X3N0YXJ0KTtcbiAgOTM6XHRcdFx0XHRyeF9lbmQgPSBsZTMyX3RvX2NwdShkZXNjLVx1MDAzZXJ4X2VuZCk7XG4gIDk0Olx0XHRcdFx0aWYgKHJ4X2VuZCBcdTAwM2MgMHgzNTAwIHx8IHJ4X2VuZCAtIDB4MzUwMCBcdTAwM2M9IHJ4X3N0YXJ0KSB7XG4gIDk1Olx0XHRcdFx0XHR3aXBoeV9lcnIocHJpdi1cdTAwM2Vody1cdTAwM2V3aXBoeSxcbiAgOTY6XHRcdFx0XHRcdFx0ICBcJiMzNDtmaXJtd2FyZSBkZXNjcmlwdG9yIGhhcyBpbnZhbGlkIFJYIHJhbmdlXFxuXCYjMzQ7KTtcbiAgOTc6XHRcdFx0XHRcdHJldHVybiAtRUlOVkFMO1xuICA5ODpcdFx0XHRcdH1cbiAgOTk6XHRcbiAxMDA6XHRcdFx0XHRwcml2LVx1MDAzZXJ4X3N0YXJ0ID0gcnhfc3RhcnQ7XG4gMTAxOlx0XHRcdFx0cHJpdi1cdTAwM2VyeF9lbmQgPSByeF9lbmQgLSAweDM1MDA7XG4gMTAyOlx0XHRcdFx0cHJpdi1cdTAwM2VoZWFkcm9vbSA9IGRlc2MtXHUwMDNlaGVhZHJvb207XG4gMTAzOlx0XHRcdFx0cHJpdi1cdTAwM2V0YWlscm9vbSA9IGRlc2MtXHUwMDNldGFpbHJvb207XG4gMTA0Olx0XHRcdFx0cHJpdi1cdTAwM2Vwcml2YWN5X2NhcHMgPSBkZXNjLVx1MDAzZXByaXZhY3lfY2FwcztcbiAxMDU6XHRcdFx0XHRwcml2LVx1MDAzZXJ4X2tleWNhY2hlX3NpemUgPSBkZXNjLVx1MDAzZXJ4X2tleWNhY2hlX3NpemU7XG4gMTA2Olx0XHRcdFx0aWYgKGxlMzJfdG9fY3B1KGJvb3RyZWMtXHUwMDNlbGVuKSA9PSAxMSlcbiAxMDc6XHRcdFx0XHRcdHByaXYtXHUwMDNlcnhfbXR1ID0gbGUxNl90b19jcHUoZGVzYy1cdTAwM2VyeF9tdHUpO1xuIDEwODpcdFx0XHRcdGVsc2VcbiAxMDk6XHRcdFx0XHRcdHByaXYtXHUwMDNlcnhfbXR1ID0gKHNpemVfdClcbiAxMTA6XHRcdFx0XHRcdFx0MHg2MjAgLSBwcml2LVx1MDAzZXR4X2hkcl9sZW47XG4gMTExOlx0XHRcdFx0bWF4bGVuID0gcHJpdi1cdTAwM2V0eF9oZHJfbGVuICYjNDM7IC8qIFVTQiBkZXZpY2VzICovXG4gMTEyOlx0XHRcdFx0XHQgc2l6ZW9mKHN0cnVjdCBwNTRfcnhfZGF0YSkgJiM0MztcbiAxMTM6XHRcdFx0XHRcdCA0ICYjNDM7IC8qIHJ4IGFsaWdubWVudCAqL1xuIDExNDpcdFx0XHRcdFx0IElFRUU4MDIxMV9NQVhfRlJBR19USFJFU0hPTEQ7XG4gMTE1Olx0XHRcdFx0aWYgKHByaXYtXHUwMDNlcnhfbXR1IFx1MDAzZSBtYXhsZW4gXHUwMDI2XHUwMDI2IFBBR0VfU0laRSA9PSA0MDk2KSB7XG4gMTE2Olx0XHRcdFx0XHRwcmludGsoS0VSTl9JTkZPIFwmIzM0O3A1NDogcnhfbXR1IHJlZHVjZWQgZnJvbSAlZCBcJiMzNDtcbiAxMTc6XHRcdFx0XHRcdCAgICAgICBcJiMzNDt0byAlZFxcblwmIzM0OywgcHJpdi1cdTAwM2VyeF9tdHUsIG1heGxlbik7XG4gMTE4Olx0XHRcdFx0XHRwcml2LVx1MDAzZXJ4X210dSA9IG1heGxlbjtcbiAxMTk6XHRcdFx0XHR9XG4gMTIwOlx0XHRcdFx0YnJlYWs7XG4gMTIxOlx0XHRcdFx0fVxuIDEyMjpcdFx0XHRjYXNlIEJSX0NPREVfRVhQT1NFRF9JRjpcbiAxMjM6XHRcdFx0XHRleHBfaWYgPSAoc3RydWN0IGV4cF9pZiAqKSBib290cmVjLVx1MDAzZWRhdGE7XG4gMTI0Olx0XHRcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgKGxlbiAqIHNpemVvZigqZXhwX2lmKSAvIDQpOyBpJiM0MzsmIzQzOylcbiAxMjU6XHRcdFx0XHRcdGlmIChleHBfaWZbaV0uaWZfaWQgPT0gY3B1X3RvX2xlMTYoSUZfSURfTE1BQykpXG4gMTI2Olx0XHRcdFx0XHRcdHByaXYtXHUwMDNlZndfdmFyID0gbGUxNl90b19jcHUoZXhwX2lmW2ldLnZhcmlhbnQpO1xuIDEyNzpcdFx0XHRcdGJyZWFrO1xuIDEyODpcdFx0XHRjYXNlIEJSX0NPREVfREVQRU5ERU5UX0lGOlxuIDEyOTpcdFx0XHRcdGJyZWFrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAyMjozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDgyCgkJCQkJCQlvdXRwdXQ6IDE5MwoJCQkJCQkJdGhvdWdodHM6IDg1MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipLTVNBTiBBc3Nlc3NtZW50OiBGaXJtd2FyZSBQYXJzaW5nIFZhbGlkYXRpb24qKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IG9mIHRoaXMgcGF0Y2gsIHdoaWNoIG1vZGlmaWVzIGBwNTRfcGFyc2VfZmlybXdhcmVgLCBpbnZvbHZlcyBhIGNyaXRpY2FsIHJldmlldyBvZiBpdHMgaW1wbGljYXRpb25zIGZvciBtZW1vcnkgc2FmZXR5LCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gdGhlIEtNU0FOIGFuZ2xlLiBJJiMzOTt2ZSBnb3QgdG8gZW5zdXJlIHRoZXJlIGFyZSBubyB2dWxuZXJhYmlsaXRpZXMgcmVsYXRlZCB0byB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2Ugd2l0aGluIHRoZSBrZXJuZWwuCgpMb29raW5nIGF0IHRoZSBjb2RlLCBpdCYjMzk7cyBjbGVhciB0aGUgcGF0Y2ggaXMgYmVlZmluZyB1cCB0aGUgaW5wdXQgdmFsaWRhdGlvbiB3aGVuIGhhbmRsaW5nIHRoZSBgQlJfQ09ERV9ERVNDUmAgY2FzZS4gUHJldmlvdXNseSwgdGhlIGNvZGUgd2FzIHZ1bG5lcmFibGUgYmVjYXVzZSBpdCB3YXMgcmVhZGluZyBkYXRhIGZyb20gdGhlIGBib290cmVjLSZndDtkYXRhYCBidWZmZXIgd2l0aG91dCBzdWZmaWNpZW50IGJvdW5kcyBjaGVja2luZy4gU3BlY2lmaWNhbGx5LCBpdCBsYWNrZWQgY2hlY2tzIG9uIHRoZSByZWNvcmQgbGVuZ3RoLCBwb3RlbnRpYWxseSBsZWFkaW5nIHRvIG91dC1vZi1ib3VuZHMgcmVhZHMgaWYgdGhlIGZpcm13YXJlIGRhdGEgd2FzIHRydW5jYXRlZCDigJMgYSBjbGFzc2ljIEtBU0FOIGlzc3VlLiBUaGUgcGF0Y2ggYWRkcmVzc2VzIHRoaXMgYnkgYWRkaW5nIGEgY3J1Y2lhbCBjaGVjayB0byBlbnN1cmUgdGhlIHJlY29yZCBgbGVuYCBpcyBsYXJnZSBlbm91Z2ggdG8gY29udGFpbiB0aGUgYGJvb3RyZWNfZGVzY2Agc3RydWN0dXJlIHVwIHRvIGByeF9rZXljYWNoZV9zaXplYCwgYXMgd2VsbCBhcyB2YWxpZGF0aW5nIHRoYXQgYHJ4X2VuZGAgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIGAweDM1MDBgIGFuZCBgcnhfZW5kIC0gMHgzNTAwYCBpcyBncmVhdGVyIHRoYW4gYHJ4X3N0YXJ0YC4gVGhpcyBlZmZlY3RpdmVseSBwcmV2ZW50cyBhbiBpbnRlZ2VyIHVuZGVyZmxvdyBvciBhbiBpbnZhbGlkIFJYIGJ1ZmZlciByYW5nZSBjYWxjdWxhdGlvbi4KCk5vdywgdGhlIGltcG9ydGFudCBxdWVzdGlvbjogZG9lcyB0aGlzIGludHJvZHVjZSBvciBleGFjZXJiYXRlIGFueSBLTVNBTiBjb25jZXJucz8gVG8gYXNzZXNzIHRoaXMsIEkmIzM5O3ZlIGdvdCB0byByaWdvcm91c2x5IGV4YW1pbmUgaWYgdGhlIHBhdGNoIGludHJvZHVjZXMgYW55IG9mIHRoZSBmb2xsb3dpbmcgS01TQU4tcmVsZXZhbnQgc2NlbmFyaW9zOgoxLiAgS2VybmVsIGRhdGEgc3RydWN0dXJlcyBwYXNzZWQgdG8gdXNlciBzcGFjZSB3aXRoIHVuaW5pdGlhbGl6ZWQgZmllbGRzLgoyLiAgQ29uZGl0aW9uYWwgbG9naWMgcmVseWluZyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcy4KMy4gIENvbXBsZXggZGF0YSBzdHJ1Y3R1cmUgYWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcyBtaWdodCBiZSBhY2Nlc3NlZCBsYXRlci4KNC4gIEJvdW5kcyBjaGVja3Mgb3IgbGVuZ3RoIGNhbGN1bGF0aW9ucyB0aGF0IGNvdWxkIGVuYWJsZSBhY2Nlc3MgdG8gdW5pbml0aWFsaXplZCBieXRlcyBpbiBleGlzdGluZyBidWZmZXJzLgoKR29pbmcgdGhyb3VnaCB0aGUgY2hlY2tsaXN0LCBpdCYjMzk7cyBwcmV0dHkgY2xlYXIgdGhhdCB0aGlzIHBhdGNoIGRvZXMgbm90IGZhbGwgaW50byBhbnkgb2YgdGhlc2UgY2F0ZWdvcmllcy4gVGhlIHBhdGNoICoqb25seSoqIHZhbGlkYXRlcyBpbnB1dCBmcm9tIHRoZSBmaXJtd2FyZSBidWZmZXIuIFRoZSB2YXJpYWJsZXMgYHJ4X3N0YXJ0YCBhbmQgYHJ4X2VuZGAgYXJlIGFsd2F5cyBleHBsaWNpdGx5IGluaXRpYWxpemVkIGZyb20gdmFsdWVzIHJlYWQgZnJvbSBgYm9vdHJlYy0mZ3Q7ZGF0YWAgYmVmb3JlIGJlaW5nIHVzZWQuIE5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzIGludHJvZHVjZWQsIGFsbG9jYXRlZCwgb3IgY29waWVkIHRvIHVzZXIgc3BhY2UuIEl0IHRpZ2h0ZW5zIHRoZSBib3VuZHMgY2hlY2tzIGFuZCByZWplY3RzIGludmFsaWQvc2hvcnQgZGVzY3JpcHRvcnMuCgpUaGVyZWZvcmUsIHRoZSBmaXggaXMgc29sZWx5IGFib3V0IHN0YW5kYXJkIGlucHV0IHZhbGlkYXRpb24gYW5kIHNhbml0aXphdGlvbiwgd2hpY2ggYXJlIEtBU0FOIHByb2JsZW1zLiBUaGUgS01TQU4gZnV6emluZyBtZXRob2RvbG9neSBkb2VzbiYjMzk7dCBwcm92aWRlIGFueSBhZGRpdGlvbmFsIGJlbmVmaXQgaGVyZS4gVGhlIGlzc3VlIGZpeGVkIGlzIHByZXZlbnRpbmcgb3V0LW9mLWJvdW5kcyByZWFkcyBhbmQgaW50ZWdlciB1bmRlcmZsb3cuIFRoZXNlIGFyZSBzdGFuZGFyZCBLQVNBTiBhbmQgbG9naWMgaXNzdWVzIGFuZCBub3QgS01TQU4tc3BlY2lmaWMuCgpTbywgaW4gY29uY2x1c2lvbiwgdGhlIHBhdGNoIHByaW1hcmlseSBhZGRyZXNzZXMgS0FTQU4gdnVsbmVyYWJpbGl0aWVzIGJ5IHZhbGlkYXRpbmcgZmlybXdhcmUgZGF0YSwgbWFraW5nIGl0IHNhZmUgdG8gc2F5IHRoYXQgYE5lZWRzS01TQU4gPSBmYWxzZWAuIEkmIzM5O2xsIGNhbGwgYHNldC1yZXN1bHRzYCB3aXRoIHRoaXMgYXNzZXNzbWVudCwgY29uZmlkZW50IGluIHRoZSByZWFzb25pbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIyOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgaW5wdXQgdmFsaWRhdGlvbiBhbmQgYm91bmRzIGNoZWNraW5nIGZvciBmaXJtd2FyZSBib290IHJlY29yZCBkZXNjcmlwdG9ycyBpbiBwNTRfcGFyc2VfZmlybXdhcmUoKS4gU3BlY2lmaWNhbGx5LCBpdCB2YWxpZGF0ZXMgdGhhdCB0aGUgYm9vdCByZWNvcmQgbGVuZ3RoIGlzIHN1ZmZpY2llbnQgdG8gY292ZXIgc3RydWN0IGJvb3RyZWNfZGVzYyBmaWVsZHMgKHByZXZlbnRpbmcgb3V0LW9mLWJvdW5kcyByZWFkcyBvbiB0cnVuY2F0ZWQgZmlybXdhcmUgYnVmZmVycywgZGV0ZWN0YWJsZSBieSBLQVNBTikgYW5kIGVuc3VyZXMgdGhhdCByeF9lbmQgXHUwMDNlPSAweDM1MDAgYW5kIHJ4X2VuZCAtIDB4MzUwMCBcdTAwM2Ugcnhfc3RhcnQgdG8gcHJldmVudCBpbnRlZ2VyIHVuZGVyZmxvdyBhbmQgaW52YWxpZCBidWZmZXIgcmFuZ2VzLlxuXG5ObyB1bmluaXRpYWxpemVkIG1lbW9yeSBpcyBhbGxvY2F0ZWQsIHJlYWQsIG9yIGV4cG9zZWQuIExvY2FsIHZhcmlhYmxlcyAocnhfc3RhcnQsIHJ4X2VuZCkgYXJlIGV4cGxpY2l0bHkgaW5pdGlhbGl6ZWQgZnJvbSB0aGUgZmlybXdhcmUgZGVzY3JpcHRvciBiZWZvcmUgYmVpbmcgY2hlY2tlZCBhbmQgc3RvcmVkLiBObyBkYXRhIGlzIGNvcGllZCB0byB1c2Vyc3BhY2Ugd2l0aG91dCBpbml0aWFsaXphdGlvbi4gVGhlcmVmb3JlLCBzdGFuZGFyZCBLQVNBTiBidWlsZHMgYXJlIHN1ZmZpY2llbnQgYW5kIEtNU0FOIGZ1enppbmcgaXMgbm90IG5lZWRlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgaW5wdXQgdmFsaWRhdGlvbiBhbmQgYm91bmRzIGNoZWNraW5nIGZvciBmaXJtd2FyZSBib290IHJlY29yZCBkZXNjcmlwdG9ycyBpbiBwNTRfcGFyc2VfZmlybXdhcmUoKS4gU3BlY2lmaWNhbGx5LCBpdCB2YWxpZGF0ZXMgdGhhdCB0aGUgYm9vdCByZWNvcmQgbGVuZ3RoIGlzIHN1ZmZpY2llbnQgdG8gY292ZXIgc3RydWN0IGJvb3RyZWNfZGVzYyBmaWVsZHMgKHByZXZlbnRpbmcgb3V0LW9mLWJvdW5kcyByZWFkcyBvbiB0cnVuY2F0ZWQgZmlybXdhcmUgYnVmZmVycywgZGV0ZWN0YWJsZSBieSBLQVNBTikgYW5kIGVuc3VyZXMgdGhhdCByeF9lbmQgXHUwMDNlPSAweDM1MDAgYW5kIHJ4X2VuZCAtIDB4MzUwMCBcdTAwM2Ugcnhfc3RhcnQgdG8gcHJldmVudCBpbnRlZ2VyIHVuZGVyZmxvdyBhbmQgaW52YWxpZCBidWZmZXIgcmFuZ2VzLlxuXG5ObyB1bmluaXRpYWxpemVkIG1lbW9yeSBpcyBhbGxvY2F0ZWQsIHJlYWQsIG9yIGV4cG9zZWQuIExvY2FsIHZhcmlhYmxlcyAocnhfc3RhcnQsIHJ4X2VuZCkgYXJlIGV4cGxpY2l0bHkgaW5pdGlhbGl6ZWQgZnJvbSB0aGUgZmlybXdhcmUgZGVzY3JpcHRvciBiZWZvcmUgYmVpbmcgY2hlY2tlZCBhbmQgc3RvcmVkLiBObyBkYXRhIGlzIGNvcGllZCB0byB1c2Vyc3BhY2Ugd2l0aG91dCBpbml0aWFsaXphdGlvbi4gVGhlcmVmb3JlLCBzdGFuZGFyZCBLQVNBTiBidWlsZHMgYXJlIHN1ZmZpY2llbnQgYW5kIEtNU0FOIGZ1enppbmcgaXMgbm90IG5lZWRlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDZUMjI6MzU6MTAuMDcxMTkwOTYzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDAzMTE3MjA5MDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUDU0X0NPTU1PTlwiLFxuICAgIFwiUDU0X1VTQlwiLFxuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIlVTQlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInA1NF9wYXJzZV9maXJtd2FyZVwiLFxuICAgIFwicDU0dV9zdGFydF9vcHNcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgaW5wdXQgdmFsaWRhdGlvbiBhbmQgYm91bmRzIGNoZWNraW5nIGZvciBmaXJtd2FyZSBib290IHJlY29yZCBkZXNjcmlwdG9ycyBpbiBwNTRfcGFyc2VfZmlybXdhcmUoKS4gU3BlY2lmaWNhbGx5LCBpdCB2YWxpZGF0ZXMgdGhhdCB0aGUgYm9vdCByZWNvcmQgbGVuZ3RoIGlzIHN1ZmZpY2llbnQgdG8gY292ZXIgc3RydWN0IGJvb3RyZWNfZGVzYyBmaWVsZHMgKHByZXZlbnRpbmcgb3V0LW9mLWJvdW5kcyByZWFkcyBvbiB0cnVuY2F0ZWQgZmlybXdhcmUgYnVmZmVycywgZGV0ZWN0YWJsZSBieSBLQVNBTikgYW5kIGVuc3VyZXMgdGhhdCByeF9lbmQgXFx1MDAzZT0gMHgzNTAwIGFuZCByeF9lbmQgLSAweDM1MDAgXFx1MDAzZSByeF9zdGFydCB0byBwcmV2ZW50IGludGVnZXIgdW5kZXJmbG93IGFuZCBpbnZhbGlkIGJ1ZmZlciByYW5nZXMuXFxuXFxuTm8gdW5pbml0aWFsaXplZCBtZW1vcnkgaXMgYWxsb2NhdGVkLCByZWFkLCBvciBleHBvc2VkLiBMb2NhbCB2YXJpYWJsZXMgKHJ4X3N0YXJ0LCByeF9lbmQpIGFyZSBleHBsaWNpdGx5IGluaXRpYWxpemVkIGZyb20gdGhlIGZpcm13YXJlIGRlc2NyaXB0b3IgYmVmb3JlIGJlaW5nIGNoZWNrZWQgYW5kIHN0b3JlZC4gTm8gZGF0YSBpcyBjb3BpZWQgdG8gdXNlcnNwYWNlIHdpdGhvdXQgaW5pdGlhbGl6YXRpb24uIFRoZXJlZm9yZSwgc3RhbmRhcmQgS0FTQU4gYnVpbGRzIGFyZSBzdWZmaWNpZW50IGFuZCBLTVNBTiBmdXp6aW5nIGlzIG5vdCBuZWVkZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBib3VuZHMgYW5kIHJhbmdlIHZhbGlkYXRpb24gY2hlY2tzIGZvciBmaXJtd2FyZSBkZXNjcmlwdG9ycyBpbiBwNTRfcGFyc2VfZmlybXdhcmUoKS4gVGhpcyBmdW5jdGlvbiBpcyByZWFjaGFibGUgdmlhIHRoZSBwNTR1c2IgZHJpdmVyIHdoaWNoIGNhbiBiZSBmdXp6ZWQgdXNpbmcgVVNCIGVtdWxhdGlvbiAoZS5nLiBSYXcgR2FkZ2V0KS4gRnV6emluZyBpcyB3YXJyYW50ZWQgdG8gdmVyaWZ5IHRoYXQgbWFsZm9ybWVkIGZpcm13YXJlIGltYWdlcyBhbmQgZWRnZSBjYXNlcyBhcmUgaGFuZGxlZCBzYWZlbHkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIyOjM1OjEwLjA3MTE5Nzg3M1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQwNTY5MzcxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZTcwM2MwMzQ2YmNmZDlmZDVmMWU0NGU5Mzk5OGYxYmVmZGIxMzI2M1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIFNlcCA2IDIyOjM1OjA5IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jXFxuaW5kZXggYTNkOTA1M2YwNDNjNi4uNWQ4MmUwYTQzODM1OCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uY1xcbkBAIC03OSw5ICs3OSwyNiBAQCBpbnQgcDU0X3BhcnNlX2Zpcm13YXJlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmRldiwgY29uc3Qgc3RydWN0IGZpcm13YXJlICpmdylcXG4gXFx0XFx0Y2FzZSBCUl9DT0RFX0RFU0NSOiB7XFxuIFxcdFxcdFxcdHN0cnVjdCBib290cmVjX2Rlc2MgKmRlc2MgPVxcbiBcXHRcXHRcXHRcXHQoc3RydWN0IGJvb3RyZWNfZGVzYyAqKWJvb3RyZWMtXFx1MDAzZWRhdGE7XFxuLVxcdFxcdFxcdHByaXYtXFx1MDAzZXJ4X3N0YXJ0ID0gbGUzMl90b19jcHUoZGVzYy1cXHUwMDNlcnhfc3RhcnQpO1xcbi1cXHRcXHRcXHQvKiBGSVhNRSBhZGQgc2FuaXR5IGNoZWNraW5nICovXFxuLVxcdFxcdFxcdHByaXYtXFx1MDAzZXJ4X2VuZCA9IGxlMzJfdG9fY3B1KGRlc2MtXFx1MDAzZXJ4X2VuZCkgLSAweDM1MDA7XFxuK1xcdFxcdFxcdHUzMiByeF9zdGFydCwgcnhfZW5kO1xcbitcXG4rXFx0XFx0XFx0aWYgKGxlbiBcXHUwMDNjIERJVl9ST1VORF9VUChvZmZzZXRvZmVuZChzdHJ1Y3QgYm9vdHJlY19kZXNjLFxcbitcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICByeF9rZXljYWNoZV9zaXplKSxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIHNpemVvZigqYm9vdHJlYy1cXHUwMDNlZGF0YSkpKSB7XFxuK1xcdFxcdFxcdFxcdHdpcGh5X2Vycihwcml2LVxcdTAwM2Vody1cXHUwMDNld2lwaHksXFxuK1xcdFxcdFxcdFxcdFxcdCAgXFxcImZpcm13YXJlIGRlc2NyaXB0b3IgaXMgdG9vIHNob3J0XFxcXG5cXFwiKTtcXG4rXFx0XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcdFxcdFxcdH1cXG4rXFxuK1xcdFxcdFxcdHJ4X3N0YXJ0ID0gbGUzMl90b19jcHUoZGVzYy1cXHUwMDNlcnhfc3RhcnQpO1xcbitcXHRcXHRcXHRyeF9lbmQgPSBsZTMyX3RvX2NwdShkZXNjLVxcdTAwM2VyeF9lbmQpO1xcbitcXHRcXHRcXHRpZiAocnhfZW5kIFxcdTAwM2MgMHgzNTAwIHx8IHJ4X2VuZCAtIDB4MzUwMCBcXHUwMDNjPSByeF9zdGFydCkge1xcbitcXHRcXHRcXHRcXHR3aXBoeV9lcnIocHJpdi1cXHUwMDNlaHctXFx1MDAzZXdpcGh5LFxcbitcXHRcXHRcXHRcXHRcXHQgIFxcXCJmaXJtd2FyZSBkZXNjcmlwdG9yIGhhcyBpbnZhbGlkIFJYIHJhbmdlXFxcXG5cXFwiKTtcXG4rXFx0XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcdFxcdFxcdH1cXG4rXFxuK1xcdFxcdFxcdHByaXYtXFx1MDAzZXJ4X3N0YXJ0ID0gcnhfc3RhcnQ7XFxuK1xcdFxcdFxcdHByaXYtXFx1MDAzZXJ4X2VuZCA9IHJ4X2VuZCAtIDB4MzUwMDtcXG4gXFx0XFx0XFx0cHJpdi1cXHUwMDNlaGVhZHJvb20gPSBkZXNjLVxcdTAwM2VoZWFkcm9vbTtcXG4gXFx0XFx0XFx0cHJpdi1cXHUwMDNldGFpbHJvb20gPSBkZXNjLVxcdTAwM2V0YWlscm9vbTtcXG4gXFx0XFx0XFx0cHJpdi1cXHUwMDNlcHJpdmFjeV9jYXBzID0gZGVzYy1cXHUwMDNlcHJpdmFjeV9jYXBzO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMjozNToxMC42MTI2OTcyNzVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjI4MTAyNDY1Mzg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlA1NF9DT01NT05cIixcbiAgICBcIlA1NF9VU0JcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJVU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwNTRfcGFyc2VfZmlybXdhcmVcIixcbiAgICBcInA1NHVfc3RhcnRfb3BzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBib3VuZHMgYW5kIHJhbmdlIHZhbGlkYXRpb24gY2hlY2tzIGZvciBmaXJtd2FyZSBkZXNjcmlwdG9ycyBpbiBwNTRfcGFyc2VfZmlybXdhcmUoKS4gVGhpcyBmdW5jdGlvbiBpcyByZWFjaGFibGUgdmlhIHRoZSBwNTR1c2IgZHJpdmVyIHdoaWNoIGNhbiBiZSBmdXp6ZWQgdXNpbmcgVVNCIGVtdWxhdGlvbiAoZS5nLiBSYXcgR2FkZ2V0KS4gRnV6emluZyBpcyB3YXJyYW50ZWQgdG8gdmVyaWZ5IHRoYXQgbWFsZm9ybWVkIGZpcm13YXJlIGltYWdlcyBhbmQgZWRnZSBjYXNlcyBhcmUgaGFuZGxlZCBzYWZlbHkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZTcwM2MwMzQ2YmNmZDlmZDVmMWU0NGU5Mzk5OGYxYmVmZGIxMzI2M1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gU2VwIDYgMjI6MzU6MDkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uY1xuaW5kZXggYTNkOTA1M2YwNDNjNi4uNWQ4MmUwYTQzODM1OCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmNcbkBAIC03OSw5ICs3OSwyNiBAQCBpbnQgcDU0X3BhcnNlX2Zpcm13YXJlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmRldiwgY29uc3Qgc3RydWN0IGZpcm13YXJlICpmdylcbiBcdFx0Y2FzZSBCUl9DT0RFX0RFU0NSOiB7XG4gXHRcdFx0c3RydWN0IGJvb3RyZWNfZGVzYyAqZGVzYyA9XG4gXHRcdFx0XHQoc3RydWN0IGJvb3RyZWNfZGVzYyAqKWJvb3RyZWMtXHUwMDNlZGF0YTtcbi1cdFx0XHRwcml2LVx1MDAzZXJ4X3N0YXJ0ID0gbGUzMl90b19jcHUoZGVzYy1cdTAwM2VyeF9zdGFydCk7XG4tXHRcdFx0LyogRklYTUUgYWRkIHNhbml0eSBjaGVja2luZyAqL1xuLVx0XHRcdHByaXYtXHUwMDNlcnhfZW5kID0gbGUzMl90b19jcHUoZGVzYy1cdTAwM2VyeF9lbmQpIC0gMHgzNTAwO1xuK1x0XHRcdHUzMiByeF9zdGFydCwgcnhfZW5kO1xuK1xuK1x0XHRcdGlmIChsZW4gXHUwMDNjIERJVl9ST1VORF9VUChvZmZzZXRvZmVuZChzdHJ1Y3QgYm9vdHJlY19kZXNjLFxuK1x0XHRcdFx0XHRcdFx0ICAgcnhfa2V5Y2FjaGVfc2l6ZSksXG4rXHRcdFx0XHRcdFx0ICAgICAgIHNpemVvZigqYm9vdHJlYy1cdTAwM2VkYXRhKSkpIHtcbitcdFx0XHRcdHdpcGh5X2Vycihwcml2LVx1MDAzZWh3LVx1MDAzZXdpcGh5LFxuK1x0XHRcdFx0XHQgIFwiZmlybXdhcmUgZGVzY3JpcHRvciBpcyB0b28gc2hvcnRcXG5cIik7XG4rXHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbitcdFx0XHR9XG4rXG4rXHRcdFx0cnhfc3RhcnQgPSBsZTMyX3RvX2NwdShkZXNjLVx1MDAzZXJ4X3N0YXJ0KTtcbitcdFx0XHRyeF9lbmQgPSBsZTMyX3RvX2NwdShkZXNjLVx1MDAzZXJ4X2VuZCk7XG4rXHRcdFx0aWYgKHJ4X2VuZCBcdTAwM2MgMHgzNTAwIHx8IHJ4X2VuZCAtIDB4MzUwMCBcdTAwM2M9IHJ4X3N0YXJ0KSB7XG4rXHRcdFx0XHR3aXBoeV9lcnIocHJpdi1cdTAwM2Vody1cdTAwM2V3aXBoeSxcbitcdFx0XHRcdFx0ICBcImZpcm13YXJlIGRlc2NyaXB0b3IgaGFzIGludmFsaWQgUlggcmFuZ2VcXG5cIik7XG4rXHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbitcdFx0XHR9XG4rXG4rXHRcdFx0cHJpdi1cdTAwM2VyeF9zdGFydCA9IHJ4X3N0YXJ0O1xuK1x0XHRcdHByaXYtXHUwMDNlcnhfZW5kID0gcnhfZW5kIC0gMHgzNTAwO1xuIFx0XHRcdHByaXYtXHUwMDNlaGVhZHJvb20gPSBkZXNjLVx1MDAzZWhlYWRyb29tO1xuIFx0XHRcdHByaXYtXHUwMDNldGFpbHJvb20gPSBkZXNjLVx1MDAzZXRhaWxyb29tO1xuIFx0XHRcdHByaXYtXHUwMDNlcHJpdmFjeV9jYXBzID0gZGVzYy1cdTAwM2Vwcml2YWN5X2NhcHM7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMjozNToxMC42MTI2OTk1ODRaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1MzE0MjE2MzU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2ggZm9yIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBwYXRjaCBpcyBldmVuIHdvcnRoIG91ciBmdXp6aW5nIGVmZm9ydHMsIGFuZCBpZiBzbywgaG93IHRvIGFwcHJvYWNoIGl0IHN0cmF0ZWdpY2FsbHkuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIGFuZCBwaW5wb2ludCB0aGUgbW9zdCBpbXBhY3RmdWwgc3ltYm9scy5cblxuVGhlIHRhcmdldCBpcyBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uY2AsIGFuZCB0aGUgZnVuY3Rpb24gb2YgaW50ZXJlc3QgaXMgYHA1NF9wYXJzZV9maXJtd2FyZWAuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGdldCB0aGUgbGF5IG9mIHRoZSBsYW5kLiBJJ2xsIHVzZSBgZ3JlcHBlcmAgKG9yIG15IHRydXN0eSBmaWxlIHJlYWRlcikgdG8gZ2V0IHRoZSBicm9hZGVyIGNvbnRleHQgb2YgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmNgLiBVbmRlcnN0YW5kaW5nIGhvdyB0aGlzIGZpbGUgZml0cyBpbnRvIHRoZSBsYXJnZXIgcGljdHVyZSBvZiB0aGUgYHA1NGAgbW9kdWxlIGlzIGNydWNpYWwuXG5cbk5leHQsIEkgbmVlZCB0byBrbm93IGhvdyB0aGUgYHA1NGAgbW9kdWxlIGlzIHVzZWQuIElzIHRoaXMgYSBVU0IsIFBDSSwgb3IgU1BJIGRldmljZT8gVGhlIGhhcmR3YXJlIGludGVyZmFjZSBzaWduaWZpY2FudGx5IGltcGFjdHMgcG90ZW50aWFsIGF0dGFjayBzdXJmYWNlcyBhbmQgZnV6emluZyBzdHJhdGVnaWVzLiBJJ2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIHJlbGV2YW50IEtjb25maWcgYW5kIHRoZSBzb3VyY2UgZmlsZXMgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9gIHRvIGRldGVybWluZSB0aGF0LiBUaGlzIGluZm9ybWF0aW9uIHdpbGwgaGVscCBtZSBkZXRlcm1pbmUgd2hpY2ggaW50ZXJhY3Rpb25zIGNvdWxkIGxlYWQgdG8gaW50ZXJlc3RpbmcgYW5kIGNvbXBsZXggc3RhdGUgY2hhbmdlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzIyMywiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIyOjM1OjE1LjkyNjkxODA2MloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImNvZGVzZWFyY2gtZGlyLWluZGV4IiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTgzNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJEaXJcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRmlsZXNcIjogW1xuICAgIFwiZWVwcm9tLmNcIixcbiAgICBcImVlcHJvbS5oXCIsXG4gICAgXCJmd2lvLmNcIixcbiAgICBcImxlZC5jXCIsXG4gICAgXCJsbWFjLmhcIixcbiAgICBcIm1haW4uY1wiLFxuICAgIFwicDU0LmhcIixcbiAgICBcInA1NHBjaS5jXCIsXG4gICAgXCJwNTRwY2kuaFwiLFxuICAgIFwicDU0c3BpLmNcIixcbiAgICBcInA1NHNwaS5oXCIsXG4gICAgXCJwNTRzcGlfZWVwcm9tLmhcIixcbiAgICBcInA1NHVzYi5jXCIsXG4gICAgXCJwNTR1c2IuaFwiLFxuICAgIFwidHhyeC5jXCJcbiAgXSxcbiAgXCJTdWJkaXJzXCI6IG51bGxcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIyOjM1OjE1LjkyNjk3ODQ3MloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIwNTcxNjA1MTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBwNTR1c2IgRHJpdmVyIGFuZCBFbXVsYXRpb24gUG9zc2liaWxpdGllcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBwNTR1c2IuY2AsIHdoaWNoLCBhcyBleHBlY3RlZCwgcmVzaWRlcyB3aXRoaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9gLiBNeSBpbnRlcmVzdCBpcyBwaXF1ZWQgYmVjYXVzZSBJJ20gdGhpbmtpbmcgYWJvdXQgVVNCIGRldmljZSBlbXVsYXRpb24gYW5kIGhvdyB0aGlzIGRyaXZlciBtaWdodCBpbnRlcmFjdCB3aXRoIGl0LiBUaGUgVVNCIFJhdyBHYWRnZXQgYW5kIHN5emthbGxlcidzIFVTQiBlbXVsYXRpb24gYXJlIHBhcnRpY3VsYXJseSByZWxldmFudCBoZXJlLiBUaGF0J3Mgd2hlcmUgdGhlIGludGVyZXN0aW5nIHBvc3NpYmlsaXRpZXMgbGllLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGlzIGRyaXZlciB0byBmaWd1cmUgb3V0IHRoZSBiZXN0IHdheSB0byBpbnRlcmFjdCB3aXRoIGl0LCBzbyBJJ2xsIGdvIGRpZ2dpbmcgaW50byBlaXRoZXIgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9LY29uZmlnYCBvciwgaWYgdGhhdCdzIG5vdCBzcGVjaWZpYyBlbm91Z2gsIHRoZSBtb3JlIGdlbmVyYWwgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL0tjb25maWdgIGZpbGUuIEknbGwgbmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZyBmaWxlcyBmb3IgY29uZmlndXJhdGlvbiBvcHRpb25zLiBUaGF0J3MgdGhlIGxvZ2ljYWwgbmV4dCBzdGVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjozODA4LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTEsIlRvb2xDYWxscyI6WyJjb2Rlc2VhcmNoLWRpci1pbmRleCJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIyOjM1OjE3Ljk4NDE0MTM3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwMDQ0MzQwNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJQNTRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWxcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxMzA3IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL01ha2VmaWxlOjI6b2JqLSQoQ09ORklHX1A1NF9DT01NT04pXFx0Kz0gcDU0L1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvS2NvbmZpZzoyOmNvbmZpZyBQNTRfQ09NTU9OXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiU29mdG1hYyBQcmlzbTU0IHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvS2NvbmZpZy0xNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvS2NvbmZpZzoxNzpjb25maWcgUDU0X1VTQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9LY29uZmlnLTE4LVxcdHRyaXN0YXRlIFxcXCJQcmlzbTU0IFVTQiBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9LY29uZmlnOjE5OlxcdGRlcGVuZHMgb24gUDU0X0NPTU1PTiBcXHUwMDI2XFx1MDAyNiBVU0JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvS2NvbmZpZy0yMC1cXHRzZWxlY3QgQ1JDMzJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9LY29uZmlnLTI4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9LY29uZmlnOjI5OmNvbmZpZyBQNTRfUENJXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L0tjb25maWctMzAtXFx0dHJpc3RhdGUgXFxcIlByaXNtNTQgUENJIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L0tjb25maWc6MzE6XFx0ZGVwZW5kcyBvbiBQNTRfQ09NTU9OIFxcdTAwMjZcXHUwMDI2IFBDSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9LY29uZmlnLTMyLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9LY29uZmlnLTQyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9LY29uZmlnOjQzOmNvbmZpZyBQNTRfU1BJXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L0tjb25maWctNDQtXFx0dHJpc3RhdGUgXFxcIlByaXNtNTQgU1BJIChzdGxjNDV4eCkgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvS2NvbmZpZzo0NTpcXHRkZXBlbmRzIG9uIFA1NF9DT01NT04gXFx1MDAyNlxcdTAwMjYgU1BJX01BU1RFUlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9LY29uZmlnLTQ2LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9LY29uZmlnLTUxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9LY29uZmlnOjUyOmNvbmZpZyBQNTRfU1BJX0RFRkFVTFRfRUVQUk9NXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L0tjb25maWctNTMtXFx0Ym9vbCBcXFwiSW5jbHVkZSBmYWxsYmFjayBFRVBST00gYmxvYlxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvS2NvbmZpZzo1NDpcXHRkZXBlbmRzIG9uIFA1NF9TUElcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvS2NvbmZpZy01NS1cXHRkZWZhdWx0IG5cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9LY29uZmlnLTY4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9LY29uZmlnOjY5OmNvbmZpZyBQNTRfTEVEU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9LY29uZmlnLTcwLVxcdGJvb2xcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvS2NvbmZpZzo3MTpcXHRkZXBlbmRzIG9uIFA1NF9DT01NT04gXFx1MDAyNlxcdTAwMjYgTUFDODAyMTFfTEVEUyBcXHUwMDI2XFx1MDAyNiAoTEVEU19DTEFTUyA9IHkgfHwgTEVEU19DTEFTUyA9IFA1NF9DT01NT04pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L0tjb25maWctNzItXFx0ZGVmYXVsdCB5XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvTWFrZWZpbGU9Mj1wNTRjb21tb24tb2Jqc1xcdFxcdFxcdDo9IGVlcHJvbS5vIGZ3aW8ubyB0eHJ4Lm8gbWFpbi5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L01ha2VmaWxlOjM6cDU0Y29tbW9uLSQoQ09ORklHX1A1NF9MRURTKVxcdCs9IGxlZC5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L01ha2VmaWxlLTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L01ha2VmaWxlOjU6b2JqLSQoQ09ORklHX1A1NF9DT01NT04pXFx0Kz0gcDU0Y29tbW9uLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfUDU0X1VTQilcXHRcXHQrPSBwNTR1c2Iub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9NYWtlZmlsZTo3Om9iai0kKENPTkZJR19QNTRfUENJKVxcdFxcdCs9IHA1NHBjaS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L01ha2VmaWxlOjg6b2JqLSQoQ09ORklHX1A1NF9TUEkpXFx0XFx0Kz0gcDU0c3BpLm9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM9Mjc9aW50IHA1NF9wYXJzZV9maXJtd2FyZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpkZXYsIGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZncpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTE1Ni1cXHRcXHRpZiAocHJpdi1cXHUwMDNlZndfdmFyIFxcdTAwM2U9IDB4NTAwKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYzoxNTc6XFx0XFx0XFx0cHJpdi1cXHUwMDNldHhfc3RhdHNbUDU0X1FVRVVFX0FDX1ZPXS5saW1pdCA9IDE2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM6MTU4OlxcdFxcdFxcdHByaXYtXFx1MDAzZXR4X3N0YXRzW1A1NF9RVUVVRV9BQ19WSV0ubGltaXQgPSAxNjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jOjE1OTpcXHRcXHRcXHRwcml2LVxcdTAwM2V0eF9zdGF0c1tQNTRfUVVFVUVfQUNfQkVdLmxpbWl0ID0gMTY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYzoxNjA6XFx0XFx0XFx0cHJpdi1cXHUwMDNldHhfc3RhdHNbUDU0X1FVRVVFX0FDX0JLXS5saW1pdCA9IDE2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtMTYxLVxcdFxcdH0gZWxzZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYzoxNjI6XFx0XFx0XFx0cHJpdi1cXHUwMDNldHhfc3RhdHNbUDU0X1FVRVVFX0FDX1ZPXS5saW1pdCA9IDM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYzoxNjM6XFx0XFx0XFx0cHJpdi1cXHUwMDNldHhfc3RhdHNbUDU0X1FVRVVFX0FDX1ZJXS5saW1pdCA9IDQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYzoxNjQ6XFx0XFx0XFx0cHJpdi1cXHUwMDNldHhfc3RhdHNbUDU0X1FVRVVFX0FDX0JFXS5saW1pdCA9IDM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYzoxNjU6XFx0XFx0XFx0cHJpdi1cXHUwMDNldHhfc3RhdHNbUDU0X1FVRVVFX0FDX0JLXS5saW1pdCA9IDI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy0xNjYtXFx0XFx0fVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM6MTY3OlxcdFxcdHByaXYtXFx1MDAzZWh3LVxcdTAwM2VxdWV1ZXMgPSBQNTRfUVVFVUVfQUNfTlVNO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtMTY4LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM9MjAxPXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqcDU0X2FsbG9jX3NrYihzdHJ1Y3QgcDU0X2NvbW1vbiAqcHJpdiwgdTE2IGhkcl9mbGFncyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtMjA3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM6MjA4OlxcdGlmIChmcmFtZV9sZW4gXFx1MDAzZSBQNTRfTUFYX0NUUkxfRlJBTUVfTEVOKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtMjA5LVxcdFxcdHJldHVybiBOVUxMO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYz0yMjc9aW50IHA1NF9kb3dubG9hZF9lZXByb20oc3RydWN0IHA1NF9jb21tb24gKnByaXYsIHZvaWQgKmJ1ZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtMjQwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM6MjQxOlxcdHNrYiA9IHA1NF9hbGxvY19za2IocHJpdiwgUDU0X0hEUl9GTEFHX0NPTlRST0wsIGVlcHJvbV9oZHJfc2l6ZSArXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYzoyNDI6XFx0XFx0XFx0ICAgIGxlbiwgUDU0X0NPTlRST0xfVFlQRV9FRVBST01fUkVBREJBQ0ssXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy0yNDMtXFx0XFx0XFx0ICAgIEdGUF9LRVJORUwpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYz0yNzc9aW50IHA1NF91cGRhdGVfYmVhY29uX3RpbShzdHJ1Y3QgcDU0X2NvbW1vbiAqcHJpdiwgdTE2IGFpZCwgYm9vbCBzZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTI4MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jOjI4MjpcXHRza2IgPSBwNTRfYWxsb2Nfc2tiKHByaXYsIFA1NF9IRFJfRkxBR19DT05UUk9MX09QU0VULCBzaXplb2YoKnRpbSksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYzoyODM6XFx0XFx0XFx0ICAgIFA1NF9DT05UUk9MX1RZUEVfVElNLCBHRlBfQVRPTUlDKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTI4NC1cXHRpZiAodW5saWtlbHkoIXNrYikpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jPTI5ND1pbnQgcDU0X3N0YV91bmxvY2soc3RydWN0IHA1NF9jb21tb24gKnByaXYsIHU4ICphZGRyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy0yOTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYzoyOTk6XFx0c2tiID0gcDU0X2FsbG9jX3NrYihwcml2LCBQNTRfSERSX0ZMQUdfQ09OVFJPTF9PUFNFVCwgc2l6ZW9mKCpzdGEpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM6MzAwOlxcdFxcdFxcdCAgICBQNTRfQ09OVFJPTF9UWVBFX1BTTV9TVEFfVU5MT0NLLCBHRlBfQVRPTUlDKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTMwMS1cXHRpZiAodW5saWtlbHkoIXNrYikpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jPTMxMD1pbnQgcDU0X3R4X2NhbmNlbChzdHJ1Y3QgcDU0X2NvbW1vbiAqcHJpdiwgX19sZTMyIHJlcV9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtMzE4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM6MzE5OlxcdHNrYiA9IHA1NF9hbGxvY19za2IocHJpdiwgUDU0X0hEUl9GTEFHX0NPTlRST0xfT1BTRVQsIHNpemVvZigqY2FuY2VsKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jOjMyMDpcXHRcXHRcXHQgICAgUDU0X0NPTlRST0xfVFlQRV9UWENBTkNFTCwgR0ZQX0FUT01JQyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy0zMjEtXFx0aWYgKHVubGlrZWx5KCFza2IpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYz0zMzA9aW50IHA1NF9zZXR1cF9tYWMoc3RydWN0IHA1NF9jb21tb24gKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTMzNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jOjMzNjpcXHRza2IgPSBwNTRfYWxsb2Nfc2tiKHByaXYsIFA1NF9IRFJfRkxBR19DT05UUk9MX09QU0VULCBzaXplb2YoKnNldHVwKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jOjMzNzpcXHRcXHRcXHQgICAgUDU0X0NPTlRST0xfVFlQRV9TRVRVUCwgR0ZQX0FUT01JQyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy0zMzgtXFx0aWYgKCFza2IpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTM0NC1cXHRcXHRjYXNlIE5MODAyMTFfSUZUWVBFX1NUQVRJT046XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYzozNDU6XFx0XFx0XFx0bW9kZSA9IFA1NF9GSUxURVJfVFlQRV9TVEFUSU9OO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtMzQ2LVxcdFxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtMzQ3LVxcdFxcdGNhc2UgTkw4MDIxMV9JRlRZUEVfQVA6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYzozNDg6XFx0XFx0XFx0bW9kZSA9IFA1NF9GSUxURVJfVFlQRV9BUDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTM0OS1cXHRcXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtMzUxLVxcdFxcdGNhc2UgTkw4MDIxMV9JRlRZUEVfTUVTSF9QT0lOVDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jOjM1MjpcXHRcXHRcXHRtb2RlID0gUDU0X0ZJTFRFUl9UWVBFX0lCU1M7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy0zNTMtXFx0XFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy0zNTQtXFx0XFx0Y2FzZSBOTDgwMjExX0lGVFlQRV9NT05JVE9SOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM6MzU1OlxcdFxcdFxcdG1vZGUgPSBQNTRfRklMVEVSX1RZUEVfUFJPTUlTQ1VPVVM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy0zNTYtXFx0XFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy0zNTctXFx0XFx0ZGVmYXVsdDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jOjM1ODpcXHRcXHRcXHRtb2RlID0gUDU0X0ZJTFRFUl9UWVBFX0hJQkVSTkFURTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTM1OS1cXHRcXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtMzY2LVxcdFxcdGlmIChwcml2LVxcdTAwM2VmaWx0ZXJfZmxhZ3MgXFx1MDAyNiBGSUZfT1RIRVJfQlNTIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYzozNjc6XFx0XFx0ICAgIChtb2RlICE9IFA1NF9GSUxURVJfVFlQRV9QUk9NSVNDVU9VUykpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYzozNjg6XFx0XFx0XFx0bW9kZSB8PSBQNTRfRklMVEVSX1RZUEVfVFJBTlNQQVJFTlQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy0zNjktXFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jOjM3MDpcXHRcXHRtb2RlID0gUDU0X0ZJTFRFUl9UWVBFX0hJQkVSTkFURTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTM3MS1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTQwMS1cXHRwNTRfdHgocHJpdiwgc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jOjQwMjpcXHRwcml2LVxcdTAwM2VwaHlfaWRsZSA9IG1vZGUgPT0gUDU0X0ZJTFRFUl9UWVBFX0hJQkVSTkFURTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTQwMy1cXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM9NDA2PWludCBwNTRfc2NhbihzdHJ1Y3QgcDU0X2NvbW1vbiAqcHJpdiwgdTE2IG1vZGUsIHUxNiBkd2VsbClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtNDE5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM6NDIwOlxcdHNrYiA9IHA1NF9hbGxvY19za2IocHJpdiwgUDU0X0hEUl9GTEFHX0NPTlRST0xfT1BTRVQsIHNpemVvZigqaGVhZCkgK1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtNDIxLVxcdFxcdFxcdCAgICAyICsgc2l6ZW9mKCppcV9hdXRvY2FsKSArIHNpemVvZigqYm9keSkgK1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtNDIyLVxcdFxcdFxcdCAgICBzaXplb2YoKnJhdGUpICsgMiAqIHNpemVvZigqcnNzaSksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYzo0MjM6XFx0XFx0XFx0ICAgIFA1NF9DT05UUk9MX1RZUEVfU0NBTiwgR0ZQX0FUT01JQyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy00MjQtXFx0aWYgKCFza2IpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jPTU1ND1pbnQgcDU0X3NldF9sZWRzKHN0cnVjdCBwNTRfY29tbW9uICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy01NTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYzo1NTk6XFx0c2tiID0gcDU0X2FsbG9jX3NrYihwcml2LCBQNTRfSERSX0ZMQUdfQ09OVFJPTF9PUFNFVCwgc2l6ZW9mKCpsZWQpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM6NTYwOlxcdFxcdFxcdCAgICBQNTRfQ09OVFJPTF9UWVBFX0xFRCwgR0ZQX0FUT01JQyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy01NjEtXFx0aWYgKHVubGlrZWx5KCFza2IpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYz01NzM9aW50IHA1NF9zZXRfZWRjZihzdHJ1Y3QgcDU0X2NvbW1vbiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtNTc4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM6NTc5OlxcdHNrYiA9IHA1NF9hbGxvY19za2IocHJpdiwgUDU0X0hEUl9GTEFHX0NPTlRST0xfT1BTRVQsIHNpemVvZigqZWRjZiksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYzo1ODA6XFx0XFx0XFx0ICAgIFA1NF9DT05UUk9MX1RZUEVfRENGSU5JVCwgR0ZQX0FUT01JQyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy01ODEtXFx0aWYgKHVubGlrZWx5KCFza2IpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYz02MTA9aW50IHA1NF9zZXRfcHMoc3RydWN0IHA1NF9jb21tb24gKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTYxOC1cXHQgICAgIXByaXYtXFx1MDAzZXBvd2Vyc2F2ZV9vdmVycmlkZSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jOjYxOTpcXHRcXHRtb2RlID0gUDU0X1BTTSB8IFA1NF9QU01fQkVBQ09OX1RJTUVPVVQgfCBQNTRfUFNNX0RUSU0gfFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM6NjIwOlxcdFxcdCAgICAgICBQNTRfUFNNX0NIRUNLU1VNIHwgUDU0X1BTTV9NQ0JDO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtNjIxLVxcdGVsc2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jOjYyMjpcXHRcXHRtb2RlID0gUDU0X1BTTV9DQU07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy02MjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYzo2MjQ6XFx0c2tiID0gcDU0X2FsbG9jX3NrYihwcml2LCBQNTRfSERSX0ZMQUdfQ09OVFJPTF9PUFNFVCwgc2l6ZW9mKCpwc20pLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM6NjI1OlxcdFxcdFxcdCAgICBQNTRfQ09OVFJPTF9UWVBFX1BTTSwgR0ZQX0FUT01JQyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy02MjYtXFx0aWYgKCFza2IpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTY0My1cXHRwNTRfdHgocHJpdiwgc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jOjY0NDpcXHRwcml2LVxcdTAwM2VwaHlfcHMgPSBtb2RlICE9IFA1NF9QU01fQ0FNO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtNjQ1LVxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYz02NDg9aW50IHA1NF9pbml0X3hib3dfc3ludGgoc3RydWN0IHA1NF9jb21tb24gKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTY1Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jOjY1MzpcXHRza2IgPSBwNTRfYWxsb2Nfc2tiKHByaXYsIFA1NF9IRFJfRkxBR19DT05UUk9MX09QU0VULCBzaXplb2YoKnhib3cpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM6NjU0OlxcdFxcdFxcdCAgICBQNTRfQ09OVFJPTF9UWVBFX1hCT1dfU1lOVEhfQ0ZHLCBHRlBfS0VSTkVMKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTY1NS1cXHRpZiAodW5saWtlbHkoIXNrYikpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jPTY2Nz1pbnQgcDU0X3VwbG9hZF9rZXkoc3RydWN0IHA1NF9jb21tb24gKnByaXYsIHU4IGFsZ28sIGludCBzbG90LCB1OCBpZHgsIHU4IGxlbixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtNjcyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM6NjczOlxcdHNrYiA9IHA1NF9hbGxvY19za2IocHJpdiwgUDU0X0hEUl9GTEFHX0NPTlRST0xfT1BTRVQsIHNpemVvZigqcnhrZXkpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM6Njc0OlxcdFxcdFxcdCAgICBQNTRfQ09OVFJPTF9UWVBFX1JYX0tFWUNBQ0hFLCBHRlBfS0VSTkVMKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTY3NS1cXHRpZiAodW5saWtlbHkoIXNrYikpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTY4Ny1cXHRzd2l0Y2ggKGFsZ28pIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jOjY4ODpcXHRjYXNlIFA1NF9DUllQVE9fV0VQOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM6Njg5OlxcdGNhc2UgUDU0X0NSWVBUT19BRVNDQ01QOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtNjkwLVxcdFxcdHJ4a2V5LVxcdTAwM2VrZXlfbGVuID0gbWluX3QodTgsIDE2LCBsZW4pO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy02OTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYzo2OTQ6XFx0Y2FzZSBQNTRfQ1JZUFRPX1RLSVBNSUNIQUVMOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtNjk1LVxcdFxcdHJ4a2V5LVxcdTAwM2VrZXlfbGVuID0gMjQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTcwMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jOjcwMTpcXHRjYXNlIFA1NF9DUllQVE9fTk9ORTpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTcwMi1cXHRcXHRyeGtleS1cXHUwMDNla2V5X2xlbiA9IDA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jPTcxNz1pbnQgcDU0X2ZldGNoX3N0YXRpc3RpY3Moc3RydWN0IHA1NF9jb21tb24gKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTcyMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jOjcyMzpcXHRza2IgPSBwNTRfYWxsb2Nfc2tiKHByaXYsIFA1NF9IRFJfRkxBR19DT05UUk9MLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtNzI0LVxcdFxcdFxcdCAgICBzaXplb2Yoc3RydWN0IHA1NF9zdGF0aXN0aWNzKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jOjcyNTpcXHRcXHRcXHQgICAgUDU0X0NPTlRST0xfVFlQRV9TVEFUX1JFQURCQUNLLCBHRlBfS0VSTkVMKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTcyNi1cXHRpZiAoIXNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM9NzQ3PWludCBwNTRfc2V0X2dyb3VwZmlsdGVyKHN0cnVjdCBwNTRfY29tbW9uICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy03NTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYzo3NTM6XFx0c2tiID0gcDU0X2FsbG9jX3NrYihwcml2LCBQNTRfSERSX0ZMQUdfQ09OVFJPTF9PUFNFVCwgc2l6ZW9mKCpncnApLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM6NzU0OlxcdFxcdFxcdCAgICBQNTRfQ09OVFJPTF9UWVBFX0dST1VQX0FERFJFU1NfVEFCTEUsIEdGUF9LRVJORUwpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtNzU1LVxcdGlmICghc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xlZC5jLTE5LSNpbmNsdWRlIFxcdTAwM2NuZXQvbWFjODAyMTEuaFxcdTAwM2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbGVkLmM6MjA6I2lmZGVmIENPTkZJR19QNTRfTEVEU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sZWQuYy0yMS0jaW5jbHVkZSBcXHUwMDNjbGludXgvbGVkcy5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sZWQuYzoyMjojZW5kaWYgLyogQ09ORklHX1A1NF9MRURTICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xlZC5jLTIzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaD0xOT1lbnVtIHA1NF9jb250cm9sX2ZyYW1lX3R5cGVzIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjIwOlxcdFA1NF9DT05UUk9MX1RZUEVfU0VUVVAgPSAwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MjE6XFx0UDU0X0NPTlRST0xfVFlQRV9TQ0FOLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MjI6XFx0UDU0X0NPTlRST0xfVFlQRV9UUkFQLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MjM6XFx0UDU0X0NPTlRST0xfVFlQRV9EQ0ZJTklULFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MjQ6XFx0UDU0X0NPTlRST0xfVFlQRV9SWF9LRVlDQUNIRSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjI1OlxcdFA1NF9DT05UUk9MX1RZUEVfVElNLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MjY6XFx0UDU0X0NPTlRST0xfVFlQRV9QU00sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoyNzpcXHRQNTRfQ09OVFJPTF9UWVBFX1RYQ0FOQ0VMLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6Mjg6XFx0UDU0X0NPTlRST0xfVFlQRV9UWERPTkUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoyOTpcXHRQNTRfQ09OVFJPTF9UWVBFX0JVUlNULFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MzA6XFx0UDU0X0NPTlRST0xfVFlQRV9TVEFUX1JFQURCQUNLLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MzE6XFx0UDU0X0NPTlRST0xfVFlQRV9CQlAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDozMjpcXHRQNTRfQ09OVFJPTF9UWVBFX0VFUFJPTV9SRUFEQkFDSyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjMzOlxcdFA1NF9DT05UUk9MX1RZUEVfTEVELFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MzQ6XFx0UDU0X0NPTlRST0xfVFlQRV9HUElPLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MzU6XFx0UDU0X0NPTlRST0xfVFlQRV9USU1FUixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjM2OlxcdFA1NF9DT05UUk9MX1RZUEVfTU9EVUxBVElPTixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjM3OlxcdFA1NF9DT05UUk9MX1RZUEVfU1lOVEhfQ09ORklHLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6Mzg6XFx0UDU0X0NPTlRST0xfVFlQRV9ERVRFQ1RPUl9WQUxVRSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjM5OlxcdFA1NF9DT05UUk9MX1RZUEVfWEJPV19TWU5USF9DRkcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDo0MDpcXHRQNTRfQ09OVFJPTF9UWVBFX0NDRV9RVUlFVCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjQxOlxcdFA1NF9DT05UUk9MX1RZUEVfUFNNX1NUQV9VTkxPQ0ssXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDo0MjpcXHRQNTRfQ09OVFJPTF9UWVBFX1BDUyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjQzOlxcdFA1NF9DT05UUk9MX1RZUEVfQlRfQkFMQU5DRVIgPSAyOCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjQ0OlxcdFA1NF9DT05UUk9MX1RZUEVfR1JPVVBfQUREUkVTU19UQUJMRSA9IDMwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6NDU6XFx0UDU0X0NPTlRST0xfVFlQRV9BUlBUQUJMRSA9IDMxLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6NDY6XFx0UDU0X0NPTlRST0xfVFlQRV9CVF9PUFRJT05TID0gMzUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaC00Ny19O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmgtNDgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDo0OTojZGVmaW5lIFA1NF9IRFJfRkxBR19DT05UUk9MXFx0XFx0QklUKDE1KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6NTA6I2RlZmluZSBQNTRfSERSX0ZMQUdfQ09OVFJPTF9PUFNFVFxcdChCSVQoMTUpICsgQklUKDApKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6NTE6I2RlZmluZSBQNTRfSERSX0ZMQUdfREFUQV9BTElHTlxcdFxcdEJJVCgxNClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oLTUyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6NTM6I2RlZmluZSBQNTRfSERSX0ZMQUdfREFUQV9PVVRfUFJPTUlTQ1xcdFxcdEJJVCgwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6NTQ6I2RlZmluZSBQNTRfSERSX0ZMQUdfREFUQV9PVVRfVElNRVNUQU1QXFx0XFx0QklUKDEpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDo1NTojZGVmaW5lIFA1NF9IRFJfRkxBR19EQVRBX09VVF9TRVFOUlxcdFxcdEJJVCgyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6NTY6I2RlZmluZSBQNTRfSERSX0ZMQUdfREFUQV9PVVRfQklUM1xcdFxcdEJJVCgzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6NTc6I2RlZmluZSBQNTRfSERSX0ZMQUdfREFUQV9PVVRfQlVSU1RcXHRcXHRCSVQoNClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjU4OiNkZWZpbmUgUDU0X0hEUl9GTEFHX0RBVEFfT1VUX05PQ0FOQ0VMXFx0XFx0QklUKDUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDo1OTojZGVmaW5lIFA1NF9IRFJfRkxBR19EQVRBX09VVF9DTEVBUlRJTVxcdFxcdEJJVCg2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6NjA6I2RlZmluZSBQNTRfSERSX0ZMQUdfREFUQV9PVVRfSElUQ0hISUtFXFx0XFx0QklUKDcpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDo2MTojZGVmaW5lIFA1NF9IRFJfRkxBR19EQVRBX09VVF9DT01QUkVTU1xcdFxcdEJJVCg4KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6NjI6I2RlZmluZSBQNTRfSERSX0ZMQUdfREFUQV9PVVRfQ09OQ0FUXFx0XFx0QklUKDkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDo2MzojZGVmaW5lIFA1NF9IRFJfRkxBR19EQVRBX09VVF9QQ1NfQUNDRVBUXFx0QklUKDEwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6NjQ6I2RlZmluZSBQNTRfSERSX0ZMQUdfREFUQV9PVVRfV0FJVEVPU1BcXHRcXHRCSVQoMTEpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaC02NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjY2OiNkZWZpbmUgUDU0X0hEUl9GTEFHX0RBVEFfSU5fRkNTX0dPT0RcXHRcXHRCSVQoMClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjY3OiNkZWZpbmUgUDU0X0hEUl9GTEFHX0RBVEFfSU5fTUFUQ0hfTUFDXFx0XFx0QklUKDEpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDo2ODojZGVmaW5lIFA1NF9IRFJfRkxBR19EQVRBX0lOX01DQkNcXHRcXHRCSVQoMilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjY5OiNkZWZpbmUgUDU0X0hEUl9GTEFHX0RBVEFfSU5fQkVBQ09OXFx0XFx0QklUKDMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDo3MDojZGVmaW5lIFA1NF9IRFJfRkxBR19EQVRBX0lOX01BVENIX0JTU1xcdFxcdEJJVCg0KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6NzE6I2RlZmluZSBQNTRfSERSX0ZMQUdfREFUQV9JTl9CQ0FTVF9CU1NcXHRcXHRCSVQoNSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjcyOiNkZWZpbmUgUDU0X0hEUl9GTEFHX0RBVEFfSU5fREFUQVxcdFxcdEJJVCg2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6NzM6I2RlZmluZSBQNTRfSERSX0ZMQUdfREFUQV9JTl9UUlVOQ0FURURcXHRcXHRCSVQoNylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjc0OiNkZWZpbmUgUDU0X0hEUl9GTEFHX0RBVEFfSU5fQklUOFxcdFxcdEJJVCg4KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6NzU6I2RlZmluZSBQNTRfSERSX0ZMQUdfREFUQV9JTl9UUkFOU1BBUkVOVFxcdEJJVCg5KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmgtNzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaD03Nz1zdHJ1Y3QgcDU0X2hkciB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oLTkxLVxcdCgoKChzdHJ1Y3QgcDU0X2hkciAqKSAoKHN0cnVjdCBza19idWZmICopIHNrYiktXFx1MDAzZWRhdGEpLVxcdTAwM2VcXHRcXHRcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDo5MjpcXHRmbGFncykgPT0gY3B1X3RvX2xlMTYoUDU0X0hEUl9GTEFHX0NPTlRST0xfT1BTRVQpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmgtOTMtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oLTk1LVxcdCghKCgoKHN0cnVjdCBwNTRfaGRyICopICgoc3RydWN0IHNrX2J1ZmYgKikgc2tiKS1cXHUwMDNlZGF0YSktXFx1MDAzZVxcdFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjk2OlxcdGZsYWdzKSBcXHUwMDI2IGNwdV90b19sZTE2KFA1NF9IRFJfRkxBR19DT05UUk9MKSkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaC05Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg9MTUzPWVudW0gcDU0X3J4X2RlY3J5cHRfc3RhdHVzIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjE1NDpcXHRQNTRfREVDUllQVF9OT05FID0gMCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjE1NTpcXHRQNTRfREVDUllQVF9PSyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjE1NjpcXHRQNTRfREVDUllQVF9OT0tFWSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjE1NzpcXHRQNTRfREVDUllQVF9OT01JQ0hBRUwsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoxNTg6XFx0UDU0X0RFQ1JZUFRfTk9DS0lQTUlDLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MTU5OlxcdFA1NF9ERUNSWVBUX0ZBSUxfV0VQLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MTYwOlxcdFA1NF9ERUNSWVBUX0ZBSUxfVEtJUCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjE2MTpcXHRQNTRfREVDUllQVF9GQUlMX01JQ0hBRUwsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoxNjI6XFx0UDU0X0RFQ1JZUFRfRkFJTF9DS0lQS1AsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoxNjM6XFx0UDU0X0RFQ1JZUFRfRkFJTF9DS0lQTUlDLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MTY0OlxcdFA1NF9ERUNSWVBUX0ZBSUxfQUVTQ0NNUFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmgtMTY1LX07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oPTE4Mj1lbnVtIHA1NF90cmFwX3R5cGUge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MTgzOlxcdFA1NF9UUkFQX1NDQU4gPSAwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MTg0OlxcdFA1NF9UUkFQX1RJTUVSLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MTg1OlxcdFA1NF9UUkFQX0JFQUNPTl9UWCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjE4NjpcXHRQNTRfVFJBUF9GQUFfUkFESU9fT04sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoxODc6XFx0UDU0X1RSQVBfRkFBX1JBRElPX09GRixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjE4ODpcXHRQNTRfVFJBUF9SQURBUixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjE4OTpcXHRQNTRfVFJBUF9OT19CRUFDT04sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoxOTA6XFx0UDU0X1RSQVBfVEJUVCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjE5MTpcXHRQNTRfVFJBUF9TQ09fRU5URVIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoxOTI6XFx0UDU0X1RSQVBfU0NPX0VYSVRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oLTE5My19O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaD0yMDA9ZW51bSBwNTRfZnJhbWVfc2VudF9zdGF0dXMge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MjAxOlxcdFA1NF9UWF9PSyA9IDAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoyMDI6XFx0UDU0X1RYX0ZBSUxFRCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjIwMzpcXHRQNTRfVFhfUFNNLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MjA0OlxcdFA1NF9UWF9QU01fQ0FOQ0VMTEVEID0gNFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmgtMjA1LX07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oPTIxNz1lbnVtIHA1NF90eF9kYXRhX2NyeXB0IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjIxODpcXHRQNTRfQ1JZUFRPX05PTkUgPSAwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MjE5OlxcdFA1NF9DUllQVE9fV0VQLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MjIwOlxcdFA1NF9DUllQVE9fVEtJUCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjIyMTpcXHRQNTRfQ1JZUFRPX1RLSVBNSUNIQUVMLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MjIyOlxcdFA1NF9DUllQVE9fQ0NYX1dFUE1JQyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjIyMzpcXHRQNTRfQ1JZUFRPX0NDWF9LUE1JQyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjIyNDpcXHRQNTRfQ1JZUFRPX0NDWF9LUCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjIyNTpcXHRQNTRfQ1JZUFRPX0FFU0NDTVBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oLTIyNi19O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaD0yMjg9ZW51bSBwNTRfdHhfZGF0YV9xdWV1ZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoyMjk6XFx0UDU0X1FVRVVFX0JFQUNPTlxcdD0gMCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjIzMDpcXHRQNTRfUVVFVUVfRldTQ0FOXFx0PSAxLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MjMxOlxcdFA1NF9RVUVVRV9NR01UXFx0XFx0PSAyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MjMyOlxcdFA1NF9RVUVVRV9DQUJcXHRcXHQ9IDMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoyMzM6XFx0UDU0X1FVRVVFX0RBVEFcXHRcXHQ9IDQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaC0yMzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoyMzU6XFx0UDU0X1FVRVVFX0FDX05VTVxcdD0gNCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjIzNjpcXHRQNTRfUVVFVUVfQUNfVk9cXHRcXHQ9IDQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoyMzc6XFx0UDU0X1FVRVVFX0FDX1ZJXFx0XFx0PSA1LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MjM4OlxcdFA1NF9RVUVVRV9BQ19CRVxcdFxcdD0gNixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjIzOTpcXHRQNTRfUVVFVUVfQUNfQktcXHRcXHQ9IDcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaC0yNDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaC0yNDEtXFx0Lyoga2VlcCBsYXN0ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoyNDI6XFx0UDU0X1FVRVVFX05VTVxcdFxcdD0gOCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oLTI0My19O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmgtMjQ0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MjQ1OiNkZWZpbmUgSVNfUU9TX1FVRVVFKG4pXFx0KG4gXFx1MDAzZT0gUDU0X1FVRVVFX0RBVEEpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaC0yNDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaD0yNDc9c3RydWN0IHA1NF90eF9kYXRhIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmgtMjczLS8qIHVuaXQgaXMgbXMgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjI3NDojZGVmaW5lIFA1NF9UWF9GUkFNRV9MSUZFVElNRSAyMDAwXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoyNzU6I2RlZmluZSBQNTRfVFhfVElNRU9VVCA0MDAwXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoyNzY6I2RlZmluZSBQNTRfU1RBVElTVElDU19VUERBVEUgNTAwMFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmgtMjc3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6Mjc4OiNkZWZpbmUgUDU0X0ZJTFRFUl9UWVBFX05PTkVcXHRcXHQwXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoyNzk6I2RlZmluZSBQNTRfRklMVEVSX1RZUEVfU1RBVElPTlxcdFxcdEJJVCgwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MjgwOiNkZWZpbmUgUDU0X0ZJTFRFUl9UWVBFX0lCU1NcXHRcXHRCSVQoMSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjI4MTojZGVmaW5lIFA1NF9GSUxURVJfVFlQRV9BUFxcdFxcdEJJVCgyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MjgyOiNkZWZpbmUgUDU0X0ZJTFRFUl9UWVBFX1RSQU5TUEFSRU5UXFx0QklUKDMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoyODM6I2RlZmluZSBQNTRfRklMVEVSX1RZUEVfUFJPTUlTQ1VPVVNcXHRCSVQoNClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjI4NDojZGVmaW5lIFA1NF9GSUxURVJfVFlQRV9ISUJFUk5BVEVcXHRCSVQoNSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjI4NTojZGVmaW5lIFA1NF9GSUxURVJfVFlQRV9OT0FDS1xcdFxcdEJJVCg2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6Mjg2OiNkZWZpbmUgUDU0X0ZJTFRFUl9UWVBFX1JYX0RJU0FCTEVEXFx0QklUKDcpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaC0yODctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaD0yODg9c3RydWN0IHA1NF9zZXR1cF9tYWMge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaC0zMjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDozMjI6I2RlZmluZSBQNTRfU0VUVVBfVjFfTEVOIDQwXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDozMjM6I2RlZmluZSBQNTRfU0VUVVBfVjJfTEVOIChzaXplb2Yoc3RydWN0IHA1NF9zZXR1cF9tYWMpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmgtMzI0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MzI1OiNkZWZpbmUgUDU0X1NDQU5fRVhJVFxcdEJJVCgwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MzI2OiNkZWZpbmUgUDU0X1NDQU5fVFJBUFxcdEJJVCgxKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MzI3OiNkZWZpbmUgUDU0X1NDQU5fQUNUSVZFIEJJVCgyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MzI4OiNkZWZpbmUgUDU0X1NDQU5fRklMVEVSIEJJVCgzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmgtMzI5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaD00NTQ9c3RydWN0IHA1NF9wc21faW50ZXJ2YWwge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaC00NTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDo0NTk6I2RlZmluZSBQNTRfUFNNX0NBTVxcdFxcdFxcdDBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjQ2MDojZGVmaW5lIFA1NF9QU01cXHRcXHRcXHRcXHRCSVQoMClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjQ2MTojZGVmaW5lIFA1NF9QU01fRFRJTVxcdFxcdFxcdEJJVCgxKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6NDYyOiNkZWZpbmUgUDU0X1BTTV9NQ0JDXFx0XFx0XFx0QklUKDIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDo0NjM6I2RlZmluZSBQNTRfUFNNX0NIRUNLU1VNXFx0XFx0QklUKDMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDo0NjQ6I2RlZmluZSBQNTRfUFNNX1NLSVBfTU9SRV9EQVRBXFx0XFx0QklUKDQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDo0NjU6I2RlZmluZSBQNTRfUFNNX0JFQUNPTl9USU1FT1VUXFx0XFx0QklUKDUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDo0NjY6I2RlZmluZSBQNTRfUFNNX0hGT1NMRUVQXFx0XFx0QklUKDYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDo0Njc6I2RlZmluZSBQNTRfUFNNX0FVVE9TV0lUQ0hfU0xFRVBcXHRCSVQoNylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjQ2ODojZGVmaW5lIFA1NF9QU01fTFBJVFxcdFxcdFxcdEJJVCg4KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6NDY5OiNkZWZpbmUgUDU0X1BTTV9CRl9VQ0FTVF9TS0lQXFx0XFx0QklUKDkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDo0NzA6I2RlZmluZSBQNTRfUFNNX0JGX01DQVNUX1NLSVBcXHRcXHRCSVQoMTApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaC00NzEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oPTQ5ND1zdHJ1Y3QgcDU0X3N0YV91bmxvY2sge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaC00OTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDo0OTk6I2RlZmluZSBQNTRfVElNX0NMRUFSIEJJVCgxNSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oLTUwMC1zdHJ1Y3QgcDU0X3RpbSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jPTE2Nz1zdGF0aWMgaW50IHA1NF9zdGFydChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jLTE3NS1cXHRcXHRnb3RvIG91dDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jOjE3NjpcXHRQNTRfU0VUX1FVRVVFKHByaXYtXFx1MDAzZXFvc19wYXJhbXNbMF0sIDB4MDAwMiwgMHgwMDAzLCAweDAwMDcsIDQ3KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jOjE3NzpcXHRQNTRfU0VUX1FVRVVFKHByaXYtXFx1MDAzZXFvc19wYXJhbXNbMV0sIDB4MDAwMiwgMHgwMDA3LCAweDAwMGYsIDk0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jOjE3ODpcXHRQNTRfU0VUX1FVRVVFKHByaXYtXFx1MDAzZXFvc19wYXJhbXNbMl0sIDB4MDAwMywgMHgwMDBmLCAweDAzZmYsIDApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmM6MTc5OlxcdFA1NF9TRVRfUVVFVUUocHJpdi1cXHUwMDNlcW9zX3BhcmFtc1szXSwgMHgwMDA3LCAweDAwMGYsIDB4MDNmZiwgMCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYy0xODAtXFx0ZXJyID0gcDU0X3NldF9lZGNmKHByaXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYz0yMDI9c3RhdGljIHZvaWQgcDU0X3N0b3Aoc3RydWN0IGllZWU4MDIxMV9odyAqZGV2LCBib29sIHN1c3BlbmQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jLTIxNC1cXHRza2JfcXVldWVfcHVyZ2UoXFx1MDAyNnByaXYtXFx1MDAzZXR4X3F1ZXVlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jOjIxNTpcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgUDU0X1FVRVVFX05VTTsgaSsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYy0yMTYtXFx0XFx0cHJpdi1cXHUwMDNldHhfc3RhdHNbaV0uY291bnQgPSAwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYz0zMTg9c3RhdGljIGludCBwNTRfY29uZmlnKHN0cnVjdCBpZWVlODAyMTFfaHcgKmRldiwgaW50IHJhZGlvX2lkeCwgdTMyIGNoYW5nZWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jLTMzMS1cXHRcXHRwcml2LVxcdTAwM2VjdXJjaGFuID0gTlVMTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jOjMzMjpcXHRcXHRyZXQgPSBwNTRfc2Nhbihwcml2LCBQNTRfU0NBTl9FWElULCAwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jLTMzMy1cXHRcXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jPTQwOD1zdGF0aWMgaW50IHA1NF9jb25mX3R4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmMtNDE2LVxcdG11dGV4X2xvY2soXFx1MDAyNnByaXYtXFx1MDAzZWNvbmZfbXV0ZXgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmM6NDE3OlxcdFA1NF9TRVRfUVVFVUUocHJpdi1cXHUwMDNlcW9zX3BhcmFtc1txdWV1ZV0sIHBhcmFtcy1cXHUwMDNlYWlmcyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jLTQxOC1cXHRcXHQgICAgICBwYXJhbXMtXFx1MDAzZWN3X21pbiwgcGFyYW1zLVxcdTAwM2Vjd19tYXgsIHBhcmFtcy1cXHUwMDNldHhvcCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jPTQ1Mj1zdGF0aWMgdm9pZCBwNTRfYnNzX2luZm9fY2hhbmdlZChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jLTQ2NS1cXHRpZiAoY2hhbmdlZCBcXHUwMDI2IEJTU19DSEFOR0VEX0JFQUNPTikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmM6NDY2OlxcdFxcdHA1NF9zY2FuKHByaXYsIFA1NF9TQ0FOX0VYSVQsIDApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmMtNDY3LVxcdFxcdHA1NF9zZXR1cF9tYWMocHJpdik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jLTQ4Mi1cXHRcXHRpZiAocHJpdi1cXHUwMDNlZndfdmFyIFxcdTAwM2U9IDB4NTAwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmM6NDgzOlxcdFxcdFxcdHA1NF9zY2FuKHByaXYsIFA1NF9TQ0FOX0VYSVQsIDApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmMtNDg0LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmM9NTAwPXN0YXRpYyBpbnQgcDU0X3NldF9rZXkoc3RydWN0IGllZWU4MDIxMV9odyAqZGV2LCBlbnVtIHNldF9rZXlfY21kIGNtZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmMtNTMyLVxcdFxcdFxcdGtleS1cXHUwMDNlZmxhZ3MgfD0gSUVFRTgwMjExX0tFWV9GTEFHX0dFTkVSQVRFX0lWO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmM6NTMzOlxcdFxcdFxcdGFsZ28gPSBQNTRfQ1JZUFRPX1RLSVBNSUNIQUVMO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmMtNTM0LVxcdFxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYy01NDEtXFx0XFx0XFx0a2V5LVxcdTAwM2VmbGFncyB8PSBJRUVFODAyMTFfS0VZX0ZMQUdfR0VORVJBVEVfSVY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYzo1NDI6XFx0XFx0XFx0YWxnbyA9IFA1NF9DUllQVE9fV0VQO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmMtNTQzLVxcdFxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYy01NDktXFx0XFx0XFx0a2V5LVxcdTAwM2VmbGFncyB8PSBJRUVFODAyMTFfS0VZX0ZMQUdfR0VORVJBVEVfSVY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYzo1NTA6XFx0XFx0XFx0YWxnbyA9IFA1NF9DUllQVE9fQUVTQ0NNUDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jLTU1MS1cXHRcXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmM9NjUzPXN0YXRpYyB1bnNpZ25lZCBpbnQgcDU0X2ZsdXNoX2NvdW50KHN0cnVjdCBwNTRfY29tbW9uICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYy02NTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYzo2NTc6XFx0QlVJTERfQlVHX09OKFA1NF9RVUVVRV9OVU0gXFx1MDAzZSBBUlJBWV9TSVpFKHByaXYtXFx1MDAzZXR4X3N0YXRzKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYy02NTgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jLTY2MC1cXHQgKiBCZWNhdXNlIHRoZSBmaXJtd2FyZSBoYXMgdGhlIHNvbGUgY29udHJvbCBvdmVyIGFueSBmcmFtZXNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jOjY2MTpcXHQgKiBpbiB0aGUgUDU0X1FVRVVFX0JFQUNPTiBvciBQNTRfUVVFVUVfU0NBTiBxdWV1ZXMsIHRoZXlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jLTY2Mi1cXHQgKiBkb24ndCByZWFsbHkgY291bnQgYXMgcGVuZGluZyBvciBhY3RpdmUuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYy02NjMtXFx0ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYzo2NjQ6XFx0Zm9yIChpID0gUDU0X1FVRVVFX01HTVQ7IGkgXFx1MDAzYyBQNTRfUVVFVUVfTlVNOyBpKyspXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYy02NjUtXFx0XFx0dG90YWwgKz0gcHJpdi1cXHUwMDNldHhfc3RhdHNbaV0ubGVuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYz02Njk9c3RhdGljIHZvaWQgcDU0X2ZsdXNoKHN0cnVjdCBpZWVlODAyMTFfaHcgKmRldiwgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmMtNjgwLVxcdCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmM6NjgxOlxcdGkgPSBQNTRfU1RBVElTVElDU19VUERBVEUgKiAyIC8gMjA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYy02ODItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jPTczNj1zdHJ1Y3QgaWVlZTgwMjExX2h3ICpwNTRfaW5pdF9jb21tb24oc2l6ZV90IHByaXZfZGF0YV9sZW4pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jLTc2NC1cXHRwcml2LVxcdTAwM2ViZWFjb25fcmVxX2lkID0gY3B1X3RvX2xlMzIoMCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYzo3NjU6XFx0cHJpdi1cXHUwMDNldHhfc3RhdHNbUDU0X1FVRVVFX0JFQUNPTl0ubGltaXQgPSAxO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmM6NzY2OlxcdHByaXYtXFx1MDAzZXR4X3N0YXRzW1A1NF9RVUVVRV9GV1NDQU5dLmxpbWl0ID0gMTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jOjc2NzpcXHRwcml2LVxcdTAwM2V0eF9zdGF0c1tQNTRfUVVFVUVfTUdNVF0ubGltaXQgPSAzO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmM6NzY4OlxcdHByaXYtXFx1MDAzZXR4X3N0YXRzW1A1NF9RVUVVRV9DQUJdLmxpbWl0ID0gMztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jOjc2OTpcXHRwcml2LVxcdTAwM2V0eF9zdGF0c1tQNTRfUVVFVUVfREFUQV0ubGltaXQgPSA1O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmMtNzcwLVxcdGRldi1cXHUwMDNlcXVldWVzID0gMTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmM9ODA1PWludCBwNTRfcmVnaXN0ZXJfY29tbW9uKHN0cnVjdCBpZWVlODAyMTFfaHcgKmRldiwgc3RydWN0IGRldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmMtODE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmM6ODE3OiNpZmRlZiBDT05GSUdfUDU0X0xFRFNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jLTgxOC1cXHRlcnIgPSBwNTRfaW5pdF9sZWRzKHByaXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYy04MjItXFx0fVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmM6ODIzOiNlbmRpZiAvKiBDT05GSUdfUDU0X0xFRFMgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jLTgyNC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmM9ODU0PXZvaWQgcDU0X3VucmVnaXN0ZXJfY29tbW9uKHN0cnVjdCBpZWVlODAyMTFfaHcgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmMtODU5LVxcdFxcdHByaXYtXFx1MDAzZXJlZ2lzdGVyZWQgPSBmYWxzZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jOjg2MDojaWZkZWYgQ09ORklHX1A1NF9MRURTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYy04NjEtXFx0XFx0cDU0X3VucmVnaXN0ZXJfbGVkcyhwcml2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jOjg2MjojZW5kaWYgLyogQ09ORklHX1A1NF9MRURTICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYy04NjMtXFx0XFx0aWVlZTgwMjExX3VucmVnaXN0ZXJfaHcoZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9wNTQuaC0xMC1cXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjI6MzU6MTguMjg0NTg5ODI2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjE3MDAyODY1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqVHJhY2luZyB0aGUgRmlybXdhcmUgUGFyc2luZyBGdW5jdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjYWxsIHN0cnVjdHVyZSBvZiBgcDU0X3BhcnNlX2Zpcm13YXJlYC4gVGhpcyBpcyB1c3VhbGx5IHRoZSBmaXJzdCBzdGVwIHdoZW4gSSdtIGRpdmluZyBpbnRvIGEgZmlybXdhcmUgYW5hbHlzaXMgb3IgcmV2ZXJzZSBlbmdpbmVlcmluZyB0YXNrLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgZW50cnkgcG9pbnRzIHRvIHRoYXQgZnVuY3Rpb24uIFdoZXJlIGlzIGl0IGJlaW5nICp1c2VkKj8gRmluZGluZyB0aGUgY2FsbGVycyB3aWxsIGdpdmUgbWUgY3JpdGljYWwgY29udGV4dDogd2hhdCdzIGZlZWRpbmcgZGF0YSBpbnRvIHRoaXMgZnVuY3Rpb24sIHVuZGVyIHdoYXQgY29uZGl0aW9ucyBkb2VzIGl0IGV4ZWN1dGUsIGFuZCB3aGF0IG90aGVyIGNvbXBvbmVudHMgYXJlIGludm9sdmVkIGluIHRoaXMgY3JpdGljYWwgcHJvY2Vzcz8gV2l0aCB0aGlzLCBJIGNhbiBiZWdpbiB0byBncmFzcCB0aGUgYmlnZ2VyIHBpY3R1cmUg4oCTIHdoaWNoIGlzIGVzc2VudGlhbCBmb3IgYW55IGRlZXAgZGl2ZSBvciBkZWJ1Z2dpbmcgZWZmb3J0IGluIHRoaXMgZmlybXdhcmUgc3BhY2UuIEZpbmRpbmcgdGhlIGNhbGxzaXRlcyBmb3IgdGhpcyBwYXJ0aWN1bGFyIGZ1bmN0aW9uIGlzIHRoZSBmaXJzdCwgbmVjZXNzYXJ5IHN0ZXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5MTY0LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjI6MzU6MjAuNDU0NjIxMzMyWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3Nzg3NzIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInA1NF9wYXJzZV9maXJtd2FyZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy0yNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jOjI3OmludCBwNTRfcGFyc2VfZmlybXdhcmUoc3RydWN0IGllZWU4MDIxMV9odyAqZGV2LCBjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtMjgte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy0xOTgtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM6MTk5OkVYUE9SVF9TWU1CT0xfR1BMKHA1NF9wYXJzZV9maXJtd2FyZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy0yMDAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvcDU0Lmg9MjY4PXZvaWQgcDU0X2ZyZWVfc2tiKHN0cnVjdCBpZWVlODAyMTFfaHcgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3A1NC5oOjI2OTppbnQgcDU0X3BhcnNlX2Zpcm13YXJlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmRldiwgY29uc3Qgc3RydWN0IGZpcm13YXJlICpmdyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3A1NC5oLTI3MC1pbnQgcDU0X3BhcnNlX2VlcHJvbShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpkZXYsIHZvaWQgKmVlcHJvbSwgaW50IGxlbik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvcDU0cGNpLmM9NDg9c3RhdGljIGludCBwNTRwX3VwbG9hZF9maXJtd2FyZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvcDU0cGNpLmMtNzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3A1NHBjaS5jOjc5OlxcdGVyciA9IHA1NF9wYXJzZV9maXJtd2FyZShkZXYsIHByaXYtXFx1MDAzZWZpcm13YXJlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvcDU0cGNpLmMtODAtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9wNTRzcGkuYz0xNDA9c3RhdGljIGludCBwNTRzcGlfcmVxdWVzdF9maXJtd2FyZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvcDU0c3BpLmMtMTUyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9wNTRzcGkuYzoxNTM6XFx0cmV0ID0gcDU0X3BhcnNlX2Zpcm13YXJlKGRldiwgcHJpdi1cXHUwMDNlZmlybXdhcmUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9wNTRzcGkuYy0xNTQtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3A1NHVzYi5jPTg2Nz1zdGF0aWMgaW50IHA1NHVfc3RhcnRfb3BzKHN0cnVjdCBwNTR1X3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvcDU0dXNiLmMtODcxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9wNTR1c2IuYzo4NzI6XFx0cmV0ID0gcDU0X3BhcnNlX2Zpcm13YXJlKGRldiwgcHJpdi1cXHUwMDNlZncpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9wNTR1c2IuYy04NzMtXFx0aWYgKHJldClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjI6MzU6MjAuNTAyNDE0MDUxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTU3MzAwNjAwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgcDU0dXNiIERyaXZlcioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbml0aWF0aW9uIG9mIHRoZSBwNTR1c2IgZGV2aWNlIGFuZCBob3cgdGhlIGZpcm13YXJlIGxvYWRpbmcgZ2V0cyBraWNrZWQgb2ZmLiBUaGUgbG9naWNhbCBwbGFjZSB0byBzdGFydCBkaWdnaW5nIGlzIGBwNTR1c2IuY2AuIEknbSBzcGVjaWZpY2FsbHkgbG9va2luZyBmb3Igd2hlcmUgYHA1NHVfc3RhcnRfb3BzYCBnZXRzIGNhbGxlZCwgb3IgbW9yZSBnZW5lcmFsbHksIGhvdyB0aGUgZmlybXdhcmUgaW1hZ2UgZ2V0cyBsb2FkZWQgaW50byB0aGUgZGV2aWNlLiBUaGF0IGZ1bmN0aW9uIGNhbGwgd2lsbCBiZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgY29udHJvbCBmbG93LiBJdCBoYXMgdG8gYmUgaW4gdGhpcyBkcml2ZXIgc29tZXdoZXJlLiBUaW1lIHRvIGdldCB0byB3b3JrLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDE5NSwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIyOjM1OjIyLjA3NTQyMjExN1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDc0NjgwMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicDU0dV9zdGFydF9vcHNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9wNTR1c2IuYz04NTQ9c3RhdGljIGludCBwNTRfZmluZF90eXBlKHN0cnVjdCBwNTR1X3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvcDU0dXNiLmMtODY2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9wNTR1c2IuYzo4Njc6c3RhdGljIGludCBwNTR1X3N0YXJ0X29wcyhzdHJ1Y3QgcDU0dV9wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9wNTR1c2IuYy04Njgte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3A1NHVzYi5jPTkxOT1zdGF0aWMgdm9pZCBwNTR1X2xvYWRfZmlybXdhcmVfY2IoY29uc3Qgc3RydWN0IGZpcm13YXJlICpmaXJtd2FyZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9wNTR1c2IuYy05MjgtXFx0XFx0cHJpdi1cXHUwMDNlZncgPSBmaXJtd2FyZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvcDU0dXNiLmM6OTI5OlxcdFxcdGVyciA9IHA1NHVfc3RhcnRfb3BzKHByaXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9wNTR1c2IuYy05MzAtXFx0fSBlbHNlIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjI6MzU6MjIuMTIyODk2NTc3WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIxNDA5ODU5NTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyB0aGUgRmlybXdhcmUgTG9hZGluZyBDYWxsYmFjayoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBwNTR1X2xvYWRfZmlybXdhcmVfY2JgLCBhbmQgSSBrbm93IHJpZ2h0IGF3YXkgdGhhdCBpdCdzIGFuIGFzeW5jaHJvbm91cyBjYWxsYmFjayBzcGVjaWZpY2FsbHkgZm9yIGhhbmRsaW5nIGZpcm13YXJlIHJlcXVlc3RzLiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBjb250ZXh0IHdpdGhpbiB0aGUgYnJvYWRlciBgcDU0YCBVU0IgZHJpdmVyLiBUbyBkbyB0aGF0IGVmZmVjdGl2ZWx5LCBJJ20gZ29pbmcgdG8gZGl2ZSBpbnRvIHRoZSBzb3VyY2UgY29kZSwgc3BlY2lmaWNhbGx5IGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvcDU0dXNiLmNgLiBJJ2xsIHdhbnQgdG8gZm9jdXMgb24gdGhlIGFyZWEgYXJvdW5kIGBwNTR1X3Byb2JlYCwgYXMgdGhhdCdzIHdoZXJlIHRoZSBkZXZpY2UgaW5pdGlhbGl6YXRpb24gdHlwaWNhbGx5IGhhcHBlbnMsIGFuZCB0aGVuIHRyYWNlIHRoZSBmbG93IGludG8gYHA1NHVfbG9hZF9maXJtd2FyZV9jYmAuIEJ5IHVuZGVyc3RhbmRpbmcgaG93IHRoZSBwcm9iZSBmdW5jdGlvbiBpbnRlcmZhY2VzIHdpdGggdGhlIGZpcm13YXJlIGxvYWRpbmcgY2FsbGJhY2ssIEkgY2FuIG1vcmUgY2xlYXJseSB1bmRlcnN0YW5kIGhvdyB0aGUgZmlybXdhcmUgaXMgbG9hZGVkIGFuZCBoYW5kbGVkIGJ5IHRoZSBkcml2ZXIuIFRoaXMgYXBwcm9hY2ggd2lsbCBnaXZlIG1lIGEgc29saWQgZ3Jhc3Agb2YgdGhlIG92ZXJhbGwgZmlybXdhcmUgbG9hZGluZyBzZXF1ZW5jZSB3aXRoaW4gdGhpcyB3aXJlbGVzcyBkcml2ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNzAzLCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjI6MzU6MjQuMjYzODg2NDUzWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMTA5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvcDU0dXNiLmNcIixcbiAgXCJGaXJzdExpbmVcIjogOTEwLFxuICBcIkxpbmVDb3VudFwiOiA5MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgOTEwOlxcdFxcbiA5MTE6XFx0ZXJyX291dDpcXG4gOTEyOlxcdFxcdC8qXFxuIDkxMzpcXHRcXHQgKiBwNTR1X2Rpc2Nvbm5lY3Qgd2lsbCBkbyB0aGUgcmVzdCBvZiB0aGVcXG4gOTE0OlxcdFxcdCAqIGNsZWFudXBcXG4gOTE1OlxcdFxcdCAqL1xcbiA5MTY6XFx0XFx0cmV0dXJuIHJldDtcXG4gOTE3OlxcdH1cXG4gOTE4OlxcdFxcbiA5MTk6XFx0c3RhdGljIHZvaWQgcDU0dV9sb2FkX2Zpcm13YXJlX2NiKGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZmlybXdhcmUsXFxuIDkyMDpcXHRcXHRcXHRcXHRcXHQgIHZvaWQgKmNvbnRleHQpXFxuIDkyMTpcXHR7XFxuIDkyMjpcXHRcXHRzdHJ1Y3QgcDU0dV9wcml2ICpwcml2ID0gY29udGV4dDtcXG4gOTIzOlxcdFxcdHN0cnVjdCB1c2JfZGV2aWNlICp1ZGV2ID0gcHJpdi1cXHUwMDNldWRldjtcXG4gOTI0OlxcdFxcdHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmID0gcHJpdi1cXHUwMDNlaW50ZjtcXG4gOTI1OlxcdFxcdGludCBlcnI7XFxuIDkyNjpcXHRcXG4gOTI3OlxcdFxcdGlmIChmaXJtd2FyZSkge1xcbiA5Mjg6XFx0XFx0XFx0cHJpdi1cXHUwMDNlZncgPSBmaXJtd2FyZTtcXG4gOTI5OlxcdFxcdFxcdGVyciA9IHA1NHVfc3RhcnRfb3BzKHByaXYpO1xcbiA5MzA6XFx0XFx0fSBlbHNlIHtcXG4gOTMxOlxcdFxcdFxcdGVyciA9IC1FTk9FTlQ7XFxuIDkzMjpcXHRcXHRcXHRkZXZfZXJyKFxcdTAwMjZ1ZGV2LVxcdTAwM2VkZXYsIFxcXCJGaXJtd2FyZSBub3QgZm91bmQuXFxcXG5cXFwiKTtcXG4gOTMzOlxcdFxcdH1cXG4gOTM0OlxcdFxcbiA5MzU6XFx0XFx0Y29tcGxldGUoXFx1MDAyNnByaXYtXFx1MDAzZWZ3X3dhaXRfbG9hZCk7XFxuIDkzNjpcXHRcXHQvKlxcbiA5Mzc6XFx0XFx0ICogQXQgdGhpcyBwb2ludCBwNTR1X2Rpc2Nvbm5lY3QgbWF5IGhhdmUgYWxyZWFkeSBmcmVlZFxcbiA5Mzg6XFx0XFx0ICogdGhlIFxcXCJwcml2XFxcIiBjb250ZXh0LiBEbyBub3QgdXNlIGl0IGFueW1vcmUhXFxuIDkzOTpcXHRcXHQgKi9cXG4gOTQwOlxcdFxcdHByaXYgPSBOVUxMO1xcbiA5NDE6XFx0XFxuIDk0MjpcXHRcXHRpZiAoZXJyKSB7XFxuIDk0MzpcXHRcXHRcXHRkZXZfZXJyKFxcdTAwMjZpbnRmLVxcdTAwM2VkZXYsIFxcXCJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBkZXZpY2UgKCVkKVxcXFxuXFxcIiwgZXJyKTtcXG4gOTQ0OlxcdFxcbiA5NDU6XFx0XFx0XFx0dXNiX2xvY2tfZGV2aWNlKHVkZXYpO1xcbiA5NDY6XFx0XFx0XFx0dXNiX2RyaXZlcl9yZWxlYXNlX2ludGVyZmFjZShcXHUwMDI2cDU0dV9kcml2ZXIsIGludGYpO1xcbiA5NDc6XFx0XFx0XFx0dXNiX3VubG9ja19kZXZpY2UodWRldik7XFxuIDk0ODpcXHRcXHR9XFxuIDk0OTpcXHRcXG4gOTUwOlxcdFxcdHVzYl9wdXRfaW50ZihpbnRmKTtcXG4gOTUxOlxcdH1cXG4gOTUyOlxcdFxcbiA5NTM6XFx0c3RhdGljIGludCBwNTR1X2xvYWRfZmlybXdhcmUoc3RydWN0IGllZWU4MDIxMV9odyAqZGV2LFxcbiA5NTQ6XFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuIDk1NTpcXHR7XFxuIDk1NjpcXHRcXHRzdHJ1Y3QgdXNiX2RldmljZSAqdWRldiA9IGludGVyZmFjZV90b191c2JkZXYoaW50Zik7XFxuIDk1NzpcXHRcXHRzdHJ1Y3QgcDU0dV9wcml2ICpwcml2ID0gZGV2LVxcdTAwM2Vwcml2O1xcbiA5NTg6XFx0XFx0c3RydWN0IGRldmljZSAqZGV2aWNlID0gXFx1MDAyNnVkZXYtXFx1MDAzZWRldjtcXG4gOTU5OlxcdFxcdGludCBlcnIsIGk7XFxuIDk2MDpcXHRcXG4gOTYxOlxcdFxcdEJVSUxEX0JVR19PTihBUlJBWV9TSVpFKHA1NHVfZndsaXN0KSAhPSBfX05VTV9QNTRVX0hXVFlQRVMpO1xcbiA5NjI6XFx0XFxuIDk2MzpcXHRcXHRpbml0X2NvbXBsZXRpb24oXFx1MDAyNnByaXYtXFx1MDAzZWZ3X3dhaXRfbG9hZCk7XFxuIDk2NDpcXHRcXHRpID0gcDU0X2ZpbmRfdHlwZShwcml2KTtcXG4gOTY1OlxcdFxcdGlmIChpIFxcdTAwM2MgMClcXG4gOTY2OlxcdFxcdFxcdHJldHVybiBpO1xcbiA5Njc6XFx0XFxuIDk2ODpcXHRcXHRkZXZfaW5mbyhcXHUwMDI2cHJpdi1cXHUwMDNldWRldi1cXHUwMDNlZGV2LCBcXFwiTG9hZGluZyBmaXJtd2FyZSBmaWxlICVzXFxcXG5cXFwiLFxcbiA5Njk6XFx0XFx0ICAgICAgIHA1NHVfZndsaXN0W2ldLmZ3KTtcXG4gOTcwOlxcdFxcbiA5NzE6XFx0XFx0dXNiX2dldF9pbnRmKGludGYpO1xcbiA5NzI6XFx0XFx0ZXJyID0gcmVxdWVzdF9maXJtd2FyZV9ub3dhaXQoVEhJU19NT0RVTEUsIDEsIHA1NHVfZndsaXN0W2ldLmZ3LFxcbiA5NzM6XFx0XFx0XFx0XFx0XFx0ICAgICAgZGV2aWNlLCBHRlBfS0VSTkVMLCBwcml2LFxcbiA5NzQ6XFx0XFx0XFx0XFx0XFx0ICAgICAgcDU0dV9sb2FkX2Zpcm13YXJlX2NiKTtcXG4gOTc1OlxcdFxcdGlmIChlcnIpIHtcXG4gOTc2OlxcdFxcdFxcdGRldl9lcnIoXFx1MDAyNnByaXYtXFx1MDAzZXVkZXYtXFx1MDAzZWRldiwgXFxcIihwNTR1c2IpIGNhbm5vdCBsb2FkIGZpcm13YXJlICVzIFxcXCJcXG4gOTc3OlxcdFxcdFxcdFxcdFxcdFxcdCAgXFxcIiglZCkhXFxcXG5cXFwiLCBwNTR1X2Z3bGlzdFtpXS5mdywgZXJyKTtcXG4gOTc4OlxcdFxcdFxcdHVzYl9wdXRfaW50ZihpbnRmKTtcXG4gOTc5OlxcdFxcdH1cXG4gOTgwOlxcdFxcbiA5ODE6XFx0XFx0cmV0dXJuIGVycjtcXG4gOTgyOlxcdH1cXG4gOTgzOlxcdFxcbiA5ODQ6XFx0c3RhdGljIGludCBwNTR1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxcbiA5ODU6XFx0XFx0XFx0XFx0XFx0Y29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKVxcbiA5ODY6XFx0e1xcbiA5ODc6XFx0XFx0c3RydWN0IHVzYl9kZXZpY2UgKnVkZXYgPSBpbnRlcmZhY2VfdG9fdXNiZGV2KGludGYpO1xcbiA5ODg6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9odyAqZGV2O1xcbiA5ODk6XFx0XFx0c3RydWN0IHA1NHVfcHJpdiAqcHJpdjtcXG4gOTkwOlxcdFxcdGludCBlcnI7XFxuIDk5MTpcXHRcXHR1bnNpZ25lZCBpbnQgaSwgcmVjb2duaXplZF9waXBlcztcXG4gOTkyOlxcdFxcbiA5OTM6XFx0XFx0ZGV2ID0gcDU0X2luaXRfY29tbW9uKHNpemVvZigqcHJpdikpO1xcbiA5OTQ6XFx0XFxuIDk5NTpcXHRcXHRpZiAoIWRldikge1xcbiA5OTY6XFx0XFx0XFx0ZGV2X2VycihcXHUwMDI2dWRldi1cXHUwMDNlZGV2LCBcXFwiKHA1NHVzYikgaWVlZTgwMjExIGFsbG9jIGZhaWxlZFxcXFxuXFxcIik7XFxuIDk5NzpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gOTk4OlxcdFxcdH1cXG4gOTk5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMjozNToyNC4yNjQwMTk4OTNaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzI5ODI3NDc0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYGZ3aW8uY2AgaW4gdGhlIEludGVyc2lsIFA1NCBXaXJlbGVzcyBEcml2ZXIqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jYCBmaWxlLiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHdoYXQncyBjaGFuZ2VkIGFuZCBob3cgaXQgaW1wYWN0cyB0aGUgb3ZlcmFsbCBkcml2ZXIgZnVuY3Rpb25hbGl0eS4gU3BlY2lmaWNhbGx5LCBJJ20gZ29pbmcgdG8gc3RhcnQgYnkgcmV2aWV3aW5nIGxpbmVzIDEgdGhyb3VnaCAxMjAuIFRoaXMgc2VjdGlvbiBpcyBsaWtlbHkgdGhlIGluaXRpYWxpemF0aW9uIGFuZCBzZXR1cCwgb3IgcGVyaGFwcyBzb21lIGtleSBmdW5jdGlvbiBkZWZpbml0aW9ucyByZWxhdGVkIHRvIGZpcm13YXJlIGludGVyYWN0aW9uIOKAkyB0aGF0J3MgbXkgaHVuY2gsIGdpdmVuIHRoZSBcImZ3aW9cIiBpbiB0aGUgZmlsZW5hbWUuIFVuZGVyc3RhbmRpbmcgdGhlIGluaXRpYWwgY29udGV4dCBpcyBjcml0aWNhbCBiZWZvcmUgZGlnZ2luZyBkZWVwZXIgaW50byBhbnkgc3BlY2lmaWMgbW9kaWZpY2F0aW9ucy4gTGV0J3Mgc2VlIHdoYXQgZ2VtcyBhcmUgaGlkZGVuIGluIHRoaXMgaW5pdGlhbCBzZWN0aW9uLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIGRhdGEgc3RydWN0dXJlcywgZnVuY3Rpb24gcHJvdG90eXBlcywgbWFjcm8gZGVmaW5pdGlvbnMsIGFuZCBhbnkgZ2xvYmFsIHZhcmlhYmxlcyB0aGF0IHNlZW0gaW1wb3J0YW50IGZvciBmaXJtd2FyZSBjb21tdW5pY2F0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjM2OCwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjI6MzU6MjcuNTYyMjk4MzcyWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMjkwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDEyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdC8qXFxuICAgMzpcXHQgKiBGaXJtd2FyZSBJL08gY29kZSBmb3IgbWFjODAyMTEgUHJpc201NCBkcml2ZXJzXFxuICAgNDpcXHQgKlxcbiAgIDU6XFx0ICogQ29weXJpZ2h0IChjKSAyMDA2LCBNaWNoYWVsIFd1IFxcdTAwM2NmbGFtaW5naWNlQHNvdXJtaWxrLm5ldFxcdTAwM2VcXG4gICA2OlxcdCAqIENvcHlyaWdodCAoYykgMjAwNy0yMDA5LCBDaHJpc3RpYW4gTGFtcGFydGVyIFxcdTAwM2NjaHVua2VleUB3ZWIuZGVcXHUwMDNlXFxuICAgNzpcXHQgKiBDb3B5cmlnaHQgMjAwOCwgSm9oYW5uZXMgQmVyZyBcXHUwMDNjam9oYW5uZXNAc2lwc29sdXRpb25zLm5ldFxcdTAwM2VcXG4gICA4OlxcdCAqXFxuICAgOTpcXHQgKiBCYXNlZCBvbjpcXG4gIDEwOlxcdCAqIC0gdGhlIGlzbHNtIChzb2Z0bWFjIHByaXNtNTQpIGRyaXZlciwgd2hpY2ggaXM6XFxuICAxMTpcXHQgKiAgIENvcHlyaWdodCAyMDA0LTIwMDYgSmVhbi1CYXB0aXN0ZSBOb3RlIFxcdTAwM2NqYm5vdGVAZ21haWwuY29tXFx1MDAzZSwgZXQgYWwuXFxuICAxMjpcXHQgKiAtIHN0bGM0NXh4IGRyaXZlclxcbiAgMTM6XFx0ICogICBDb3B5cmlnaHQgKEMpIDIwMDggTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLlxcbiAgMTQ6XFx0ICovXFxuICAxNTpcXHRcXG4gIDE2OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9zbGFiLmhcXHUwMDNlXFxuICAxNzpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvZmlybXdhcmUuaFxcdTAwM2VcXG4gIDE4OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9ldGhlcmRldmljZS5oXFx1MDAzZVxcbiAgMTk6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2V4cG9ydC5oXFx1MDAzZVxcbiAgMjA6XFx0XFxuICAyMTpcXHQjaW5jbHVkZSBcXHUwMDNjbmV0L21hYzgwMjExLmhcXHUwMDNlXFxuICAyMjpcXHRcXG4gIDIzOlxcdCNpbmNsdWRlIFxcXCJwNTQuaFxcXCJcXG4gIDI0OlxcdCNpbmNsdWRlIFxcXCJlZXByb20uaFxcXCJcXG4gIDI1OlxcdCNpbmNsdWRlIFxcXCJsbWFjLmhcXFwiXFxuICAyNjpcXHRcXG4gIDI3OlxcdGludCBwNTRfcGFyc2VfZmlybXdhcmUoc3RydWN0IGllZWU4MDIxMV9odyAqZGV2LCBjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3KVxcbiAgMjg6XFx0e1xcbiAgMjk6XFx0XFx0c3RydWN0IHA1NF9jb21tb24gKnByaXYgPSBkZXYtXFx1MDAzZXByaXY7XFxuICAzMDpcXHRcXHRzdHJ1Y3QgZXhwX2lmICpleHBfaWY7XFxuICAzMTpcXHRcXHRzdHJ1Y3QgYm9vdHJlYyAqYm9vdHJlYztcXG4gIDMyOlxcdFxcdHUzMiAqZGF0YSA9ICh1MzIgKilmdy1cXHUwMDNlZGF0YTtcXG4gIDMzOlxcdFxcdHUzMiAqZW5kX2RhdGEgPSAodTMyICopZnctXFx1MDAzZWRhdGEgKyAoZnctXFx1MDAzZXNpemUgXFx1MDAzZVxcdTAwM2UgMik7XFxuICAzNDpcXHRcXHR1OCAqZndfdmVyc2lvbiA9IE5VTEw7XFxuICAzNTpcXHRcXHRzaXplX3QgbGVuO1xcbiAgMzY6XFx0XFx0aW50IGk7XFxuICAzNzpcXHRcXHRpbnQgbWF4bGVuO1xcbiAgMzg6XFx0XFxuICAzOTpcXHRcXHRpZiAocHJpdi1cXHUwMDNlcnhfc3RhcnQpXFxuICA0MDpcXHRcXHRcXHRyZXR1cm4gMDtcXG4gIDQxOlxcdFxcbiAgNDI6XFx0XFx0d2hpbGUgKGRhdGEgXFx1MDAzYyBlbmRfZGF0YSBcXHUwMDI2XFx1MDAyNiAqZGF0YSlcXG4gIDQzOlxcdFxcdFxcdGRhdGErKztcXG4gIDQ0OlxcdFxcbiAgNDU6XFx0XFx0d2hpbGUgKGRhdGEgXFx1MDAzYyBlbmRfZGF0YSBcXHUwMDI2XFx1MDAyNiAhKmRhdGEpXFxuICA0NjpcXHRcXHRcXHRkYXRhKys7XFxuICA0NzpcXHRcXG4gIDQ4OlxcdFxcdGJvb3RyZWMgPSAoc3RydWN0IGJvb3RyZWMgKikgZGF0YTtcXG4gIDQ5OlxcdFxcbiAgNTA6XFx0XFx0d2hpbGUgKGJvb3RyZWMtXFx1MDAzZWRhdGEgXFx1MDAzYz0gZW5kX2RhdGEgXFx1MDAyNlxcdTAwMjYgKGJvb3RyZWMtXFx1MDAzZWRhdGEgK1xcbiAgNTE6XFx0XFx0ICAgICAgIChsZW4gPSBsZTMyX3RvX2NwdShib290cmVjLVxcdTAwM2VsZW4pKSkgXFx1MDAzYz0gZW5kX2RhdGEpIHtcXG4gIDUyOlxcdFxcdFxcdHUzMiBjb2RlID0gbGUzMl90b19jcHUoYm9vdHJlYy1cXHUwMDNlY29kZSk7XFxuICA1MzpcXHRcXHRcXHRzd2l0Y2ggKGNvZGUpIHtcXG4gIDU0OlxcdFxcdFxcdGNhc2UgQlJfQ09ERV9DT01QT05FTlRfSUQ6XFxuICA1NTpcXHRcXHRcXHRcXHRwcml2LVxcdTAwM2Vmd19pbnRlcmZhY2UgPSBiZTMyX3RvX2NwdXAoKF9fYmUzMiAqKVxcbiAgNTY6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICBib290cmVjLVxcdTAwM2VkYXRhKTtcXG4gIDU3OlxcdFxcdFxcdFxcdHN3aXRjaCAocHJpdi1cXHUwMDNlZndfaW50ZXJmYWNlKSB7XFxuICA1ODpcXHRcXHRcXHRcXHRjYXNlIEZXX0xNODY6XFxuICA1OTpcXHRcXHRcXHRcXHRjYXNlIEZXX0xNMjA6XFxuICA2MDpcXHRcXHRcXHRcXHRjYXNlIEZXX0xNODc6IHtcXG4gIDYxOlxcdFxcdFxcdFxcdFxcdGNoYXIgKmlmdHlwZSA9IChjaGFyICopYm9vdHJlYy1cXHUwMDNlZGF0YTtcXG4gIDYyOlxcdFxcdFxcdFxcdFxcdHdpcGh5X2luZm8ocHJpdi1cXHUwMDNlaHctXFx1MDAzZXdpcGh5LFxcbiAgNjM6XFx0XFx0XFx0XFx0XFx0XFx0ICAgXFxcInA1NCBkZXRlY3RlZCBhIExNJWMlYyBmaXJtd2FyZVxcXFxuXFxcIixcXG4gIDY0OlxcdFxcdFxcdFxcdFxcdFxcdCAgIGlmdHlwZVsyXSwgaWZ0eXBlWzNdKTtcXG4gIDY1OlxcdFxcdFxcdFxcdFxcdGJyZWFrO1xcbiAgNjY6XFx0XFx0XFx0XFx0XFx0fVxcbiAgNjc6XFx0XFx0XFx0XFx0Y2FzZSBGV19GTUFDOlxcbiAgNjg6XFx0XFx0XFx0XFx0ZGVmYXVsdDpcXG4gIDY5OlxcdFxcdFxcdFxcdFxcdHdpcGh5X2Vycihwcml2LVxcdTAwM2Vody1cXHUwMDNld2lwaHksXFxuICA3MDpcXHRcXHRcXHRcXHRcXHRcXHQgIFxcXCJ1bnN1cHBvcnRlZCBmaXJtd2FyZVxcXFxuXFxcIik7XFxuICA3MTpcXHRcXHRcXHRcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4gIDcyOlxcdFxcdFxcdFxcdH1cXG4gIDczOlxcdFxcdFxcdFxcdGJyZWFrO1xcbiAgNzQ6XFx0XFx0XFx0Y2FzZSBCUl9DT0RFX0NPTVBPTkVOVF9WRVJTSU9OOlxcbiAgNzU6XFx0XFx0XFx0XFx0LyogMjQgYnl0ZXMgc2hvdWxkIGJlIGVub3VnaCBmb3IgYWxsIGZpcm13YXJlcyAqL1xcbiAgNzY6XFx0XFx0XFx0XFx0aWYgKHN0cm5sZW4oKHVuc2lnbmVkIGNoYXIgKikgYm9vdHJlYy1cXHUwMDNlZGF0YSwgMjQpIFxcdTAwM2MgMjQpXFxuICA3NzpcXHRcXHRcXHRcXHRcXHRmd192ZXJzaW9uID0gKHVuc2lnbmVkIGNoYXIgKikgYm9vdHJlYy1cXHUwMDNlZGF0YTtcXG4gIDc4OlxcdFxcdFxcdFxcdGJyZWFrO1xcbiAgNzk6XFx0XFx0XFx0Y2FzZSBCUl9DT0RFX0RFU0NSOiB7XFxuICA4MDpcXHRcXHRcXHRcXHRzdHJ1Y3QgYm9vdHJlY19kZXNjICpkZXNjID1cXG4gIDgxOlxcdFxcdFxcdFxcdFxcdChzdHJ1Y3QgYm9vdHJlY19kZXNjICopYm9vdHJlYy1cXHUwMDNlZGF0YTtcXG4gIDgyOlxcdFxcdFxcdFxcdHUzMiByeF9zdGFydCwgcnhfZW5kO1xcbiAgODM6XFx0XFxuICA4NDpcXHRcXHRcXHRcXHRpZiAobGVuIFxcdTAwM2MgRElWX1JPVU5EX1VQKG9mZnNldG9mZW5kKHN0cnVjdCBib290cmVjX2Rlc2MsXFxuICA4NTpcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICByeF9rZXljYWNoZV9zaXplKSxcXG4gIDg2OlxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgICBzaXplb2YoKmJvb3RyZWMtXFx1MDAzZWRhdGEpKSkge1xcbiAgODc6XFx0XFx0XFx0XFx0XFx0d2lwaHlfZXJyKHByaXYtXFx1MDAzZWh3LVxcdTAwM2V3aXBoeSxcXG4gIDg4OlxcdFxcdFxcdFxcdFxcdFxcdCAgXFxcImZpcm13YXJlIGRlc2NyaXB0b3IgaXMgdG9vIHNob3J0XFxcXG5cXFwiKTtcXG4gIDg5OlxcdFxcdFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiAgOTA6XFx0XFx0XFx0XFx0fVxcbiAgOTE6XFx0XFxuICA5MjpcXHRcXHRcXHRcXHRyeF9zdGFydCA9IGxlMzJfdG9fY3B1KGRlc2MtXFx1MDAzZXJ4X3N0YXJ0KTtcXG4gIDkzOlxcdFxcdFxcdFxcdHJ4X2VuZCA9IGxlMzJfdG9fY3B1KGRlc2MtXFx1MDAzZXJ4X2VuZCk7XFxuICA5NDpcXHRcXHRcXHRcXHRpZiAocnhfZW5kIFxcdTAwM2MgMHgzNTAwIHx8IHJ4X2VuZCAtIDB4MzUwMCBcXHUwMDNjPSByeF9zdGFydCkge1xcbiAgOTU6XFx0XFx0XFx0XFx0XFx0d2lwaHlfZXJyKHByaXYtXFx1MDAzZWh3LVxcdTAwM2V3aXBoeSxcXG4gIDk2OlxcdFxcdFxcdFxcdFxcdFxcdCAgXFxcImZpcm13YXJlIGRlc2NyaXB0b3IgaGFzIGludmFsaWQgUlggcmFuZ2VcXFxcblxcXCIpO1xcbiAgOTc6XFx0XFx0XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuICA5ODpcXHRcXHRcXHRcXHR9XFxuICA5OTpcXHRcXG4gMTAwOlxcdFxcdFxcdFxcdHByaXYtXFx1MDAzZXJ4X3N0YXJ0ID0gcnhfc3RhcnQ7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIyOjM1OjI3LjU2MjQyMzcyMloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMjE0MTY1MTc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV4YW1pbmluZyB0aGUgcDU0IERyaXZlcidzIENvbmZpZ3VyYXRpb24gT3B0aW9ucyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGludG8gdGhlIGBwNTRgIGRyaXZlci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIFVTQiBzdXBwb3J0LCBhbmQgdGhhdCdzIHRpZWQgdG8gYENPTkZJR19QNTRfVVNCYC4gUmlnaHQsIG1ha2VzIHNlbnNlLiBCdXQgSSBrbm93IGJldHRlciB0aGFuIHRvIGp1c3QgbG9vayBhdCBvbmUgb3B0aW9uIGluIGlzb2xhdGlvbi4gSSBuZWVkIHRvIHRyYWNlIHRoZSBkZXBlbmRlbmNpZXMuIFRoaXMgbWVhbnMgSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGZvciBgQ09ORklHX1A1NF9DT01NT05gLCBgQ09ORklHX1A1NF9VU0JgLCBgQ09ORklHX1A1NF9QQ0lgLCBhbmQgYENPTkZJR19QNTRfU1BJYCB0byBmdWxseSBncmFzcCB0aGUgcmVxdWlyZW1lbnRzIGFuZCBwb3RlbnRpYWwgY29uZmxpY3RzLiBUaW1lIHRvIHNlZSB3aGF0IGNvbmRpdGlvbnMgbmVlZCB0byBiZSBtZXQgZm9yIHRoZXNlIHRvIGJlIGVuYWJsZWQgY29ycmVjdGx5LiBUaGlzIGlzIHdoZXJlIHRoZSBkZXZpbCBpcyBpbiB0aGUgZGV0YWlscy4gSSBoYXZlIHRvIG1ha2Ugc3VyZSBldmVyeXRoaW5nIGlzIHByb3Blcmx5IHNldC4gVGhpcyBpcyBub3QgdGhlIHdob2xlIHBpY3R1cmUsIGJ1dCBpdCdzIGEgc3RhcnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0MTgwLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMjozNToyOS43NzY1OTI3NThaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MTU0ODkzOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUDU0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9LY29uZmlnOjI6Y29uZmlnIFA1NF9DT01NT05cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJTb2Z0bWFjIFByaXNtNTQgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9LY29uZmlnLTE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9LY29uZmlnOjE3OmNvbmZpZyBQNTRfVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L0tjb25maWctMTgtXFx0dHJpc3RhdGUgXFxcIlByaXNtNTQgVVNCIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvS2NvbmZpZy0yOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvS2NvbmZpZzoyOTpjb25maWcgUDU0X1BDSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9LY29uZmlnLTMwLVxcdHRyaXN0YXRlIFxcXCJQcmlzbTU0IFBDSSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L0tjb25maWctNDItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L0tjb25maWc6NDM6Y29uZmlnIFA1NF9TUElcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvS2NvbmZpZy00NC1cXHR0cmlzdGF0ZSBcXFwiUHJpc201NCBTUEkgKHN0bGM0NXh4KSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L0tjb25maWctNTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L0tjb25maWc6NTI6Y29uZmlnIFA1NF9TUElfREVGQVVMVF9FRVBST01cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvS2NvbmZpZy01My1cXHRib29sIFxcXCJJbmNsdWRlIGZhbGxiYWNrIEVFUFJPTSBibG9iXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L0tjb25maWctNjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L0tjb25maWc6Njk6Y29uZmlnIFA1NF9MRURTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L0tjb25maWctNzAtXFx0Ym9vbFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMjozNToyOS45MTgxNDc0NzZaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjMwMDk1OTE0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHJlYWRpbmcgdGhlIEtjb25maWcsIGFzc3VtaW5nIEknbSB3ZWxsLXZlcnNlZCBpbiBrZXJuZWwgY29uZmlndXJhdGlvbjpcblxuKipEaXZpbmcgaW50byB0aGUgUDU0IEtjb25maWcqKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcyBhbmQgZGlzc2VjdCB0aGUgS2NvbmZpZyBmaWxlIGZvciB0aGUgSW50ZXJzaWwgcDU0IHdpcmVsZXNzIGRyaXZlciwgc3BlY2lmaWNhbGx5IHVuZGVyIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvS2NvbmZpZ2AuIFRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgY29uZmlndXJhdGlvbiBkZWNpc2lvbnMgZm9yIHRoaXMgZHJpdmVyIGFyZSBtYWRlLCBhbmQgdW5kZXJzdGFuZGluZyBpdCBpcyBjcnVjaWFsIGZvciBwcm9wZXIgaW50ZWdyYXRpb24uIEknbGwgYmUgbG9va2luZyBmb3Igc2V2ZXJhbCB0aGluZ3M6IHRoZSBvdmVyYWxsIHN0cnVjdHVyZSwgYW55IGRlcGVuZGVuY2llcyBvbiBvdGhlciBrZXJuZWwgc3Vic3lzdGVtcywgd2hhdCBmZWF0dXJlcyBhcmUgZXhwb3NlZCBmb3IgdGhlIHVzZXIsIGFuZCBhbnkgcG90ZW50aWFsIGNhdmVhdHMgb3Igd2FybmluZ3MuIEkgZXhwZWN0IHRvIHNlZSB0aGUgdXN1YWwgc3VzcGVjdHM6IG1vZHVsZSB2cy4gYnVpbHQtaW4gb3B0aW9ucywgaGFyZHdhcmUgdmFyaWFudHMsIHBvd2VyIG1hbmFnZW1lbnQgY29uc2lkZXJhdGlvbnMsIHBlcmhhcHMgZXZlbiBkZWJ1Z2dpbmcgZmxhZ3MuIEknbGwgcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgZGVmYXVsdHMsIGFzIHRoZXNlIGFyZSB3aGF0IHRoZSBzeXN0ZW0gd2lsbCB0cnkgdG8gdXNlIGlmIHRoZSB1c2VyIGRvZXNuJ3Qgc3BlY2lmeSBvdGhlcndpc2UuIEEgd2VsbC13cml0dGVuIEtjb25maWcgd2lsbCBoYXZlIGNsZWFyIGhlbHAgdGV4dCB0byBndWlkZSB0aGUgdXNlciBhbmQgZXhwbGFpbiB0aGUgaW1wbGljYXRpb25zIG9mIGVhY2ggb3B0aW9uLiBMZXQncyBzZWUgaWYgdGhpcyBvbmUgaG9sZHMgdXAgdG8gbXkgZXhwZWN0YXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTAwMywiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIyOjM1OjMyLjIxOTExMTExWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MzAyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA4MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIFA1NF9DT01NT05cXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJTb2Z0bWFjIFByaXNtNTQgc3VwcG9ydFxcXCJcXG4gICA0OlxcdFxcdGRlcGVuZHMgb24gTUFDODAyMTFcXG4gICA1OlxcdFxcdHNlbGVjdCBGV19MT0FERVJcXG4gICA2OlxcdFxcdHNlbGVjdCBDUkNfQ0NJVFRcXG4gICA3OlxcdFxcdGhlbHBcXG4gICA4OlxcdFxcdCAgVGhpcyBpcyBjb21tb24gY29kZSBmb3IgaXNsMzh4eC9zdGxjNDV4eCBiYXNlZCBtb2R1bGVzLlxcbiAgIDk6XFx0XFx0ICBUaGlzIG1vZHVsZSBkb2VzIG5vdGhpbmcgYnkgaXRzZWxmIC0gdGhlIFVTQi9QQ0kvU1BJIGZyb250LWVuZHNcXG4gIDEwOlxcdFxcdCAgYWxzbyBuZWVkIHRvIGJlIGVuYWJsZWQgaW4gb3JkZXIgdG8gc3VwcG9ydCBhbnkgZGV2aWNlcy5cXG4gIDExOlxcdFxcbiAgMTI6XFx0XFx0ICBUaGVzZSBkZXZpY2VzIHJlcXVpcmUgc29mdG1hYyBmaXJtd2FyZSB3aGljaCBjYW4gYmUgZm91bmQgYXRcXG4gIDEzOlxcdFxcdCAgXFx1MDAzY2h0dHBzOi8vd2lyZWxlc3MuZG9jcy5rZXJuZWwub3JnL2VuL2xhdGVzdC9lbi91c2Vycy9kcml2ZXJzL3A1NC5odG1sXFx1MDAzZVxcbiAgMTQ6XFx0XFxuICAxNTpcXHRcXHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgYSBtb2R1bGUsIGl0J2xsIGJlIGNhbGxlZCBwNTRjb21tb24uXFxuICAxNjpcXHRcXG4gIDE3OlxcdGNvbmZpZyBQNTRfVVNCXFxuICAxODpcXHRcXHR0cmlzdGF0ZSBcXFwiUHJpc201NCBVU0Igc3VwcG9ydFxcXCJcXG4gIDE5OlxcdFxcdGRlcGVuZHMgb24gUDU0X0NPTU1PTiBcXHUwMDI2XFx1MDAyNiBVU0JcXG4gIDIwOlxcdFxcdHNlbGVjdCBDUkMzMlxcbiAgMjE6XFx0XFx0aGVscFxcbiAgMjI6XFx0XFx0ICBUaGlzIGRyaXZlciBpcyBmb3IgVVNCIGlzbDM4eHggYmFzZWQgd2lyZWxlc3MgY2FyZHMuXFxuICAyMzpcXHRcXG4gIDI0OlxcdFxcdCAgVGhlc2UgZGV2aWNlcyByZXF1aXJlIHNvZnRtYWMgZmlybXdhcmUgd2hpY2ggY2FuIGJlIGZvdW5kIGF0XFxuICAyNTpcXHRcXHQgIFxcdTAwM2NodHRwczovL3dpcmVsZXNzLmRvY3Mua2VybmVsLm9yZy9lbi9sYXRlc3QvZW4vdXNlcnMvZHJpdmVycy9wNTQuaHRtbFxcdTAwM2VcXG4gIDI2OlxcdFxcbiAgMjc6XFx0XFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGEgbW9kdWxlLCBpdCdsbCBiZSBjYWxsZWQgcDU0dXNiLlxcbiAgMjg6XFx0XFxuICAyOTpcXHRjb25maWcgUDU0X1BDSVxcbiAgMzA6XFx0XFx0dHJpc3RhdGUgXFxcIlByaXNtNTQgUENJIHN1cHBvcnRcXFwiXFxuICAzMTpcXHRcXHRkZXBlbmRzIG9uIFA1NF9DT01NT04gXFx1MDAyNlxcdTAwMjYgUENJXFxuICAzMjpcXHRcXHRoZWxwXFxuICAzMzpcXHRcXHQgIFRoaXMgZHJpdmVyIGlzIGZvciBQQ0kgaXNsMzh4eCBiYXNlZCB3aXJlbGVzcyBjYXJkcy5cXG4gIDM0OlxcdFxcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgbW9zdCBkZXZpY2VzIHRoYXQgYXJlIHN1cHBvcnRlZCBieSB0aGVcXG4gIDM1OlxcdFxcdCAgZnVsbG1hYyBwcmlzbTU0IGRyaXZlciBwbHVzIG1hbnkgZGV2aWNlcyB3aGljaCBhcmUgbm90XFxuICAzNjpcXHRcXHQgIHN1cHBvcnRlZCBieSB0aGUgZnVsbG1hYyBkcml2ZXIvZmlybXdhcmUuXFxuICAzNzpcXHRcXG4gIDM4OlxcdFxcdCAgVGhpcyBkcml2ZXIgcmVxdWlyZXMgc29mdG1hYyBmaXJtd2FyZSB3aGljaCBjYW4gYmUgZm91bmQgYXRcXG4gIDM5OlxcdFxcdCAgXFx1MDAzY2h0dHBzOi8vd2lyZWxlc3MuZG9jcy5rZXJuZWwub3JnL2VuL2xhdGVzdC9lbi91c2Vycy9kcml2ZXJzL3A1NC5odG1sXFx1MDAzZVxcbiAgNDA6XFx0XFxuICA0MTpcXHRcXHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgYSBtb2R1bGUsIGl0J2xsIGJlIGNhbGxlZCBwNTRwY2kuXFxuICA0MjpcXHRcXG4gIDQzOlxcdGNvbmZpZyBQNTRfU1BJXFxuICA0NDpcXHRcXHR0cmlzdGF0ZSBcXFwiUHJpc201NCBTUEkgKHN0bGM0NXh4KSBzdXBwb3J0XFxcIlxcbiAgNDU6XFx0XFx0ZGVwZW5kcyBvbiBQNTRfQ09NTU9OIFxcdTAwMjZcXHUwMDI2IFNQSV9NQVNURVJcXG4gIDQ2OlxcdFxcdGhlbHBcXG4gIDQ3OlxcdFxcdCAgVGhpcyBkcml2ZXIgaXMgZm9yIHN0bGM0NTUwIG9yIHN0bGM0NTYwIGJhc2VkIHdpcmVsZXNzIGNoaXBzXFxuICA0ODpcXHRcXHQgIHN1Y2ggYXMgTm9raWEncyBOODAwL044MTAgUG9ydGFibGUgSW50ZXJuZXQgVGFibGV0LlxcbiAgNDk6XFx0XFxuICA1MDpcXHRcXHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgYSBtb2R1bGUsIGl0J2xsIGJlIGNhbGxlZCBwNTRzcGkuXFxuICA1MTpcXHRcXG4gIDUyOlxcdGNvbmZpZyBQNTRfU1BJX0RFRkFVTFRfRUVQUk9NXFxuICA1MzpcXHRcXHRib29sIFxcXCJJbmNsdWRlIGZhbGxiYWNrIEVFUFJPTSBibG9iXFxcIlxcbiAgNTQ6XFx0XFx0ZGVwZW5kcyBvbiBQNTRfU1BJXFxuICA1NTpcXHRcXHRkZWZhdWx0IG5cXG4gIDU2OlxcdFxcdGhlbHBcXG4gIDU3OlxcdFxcdCBVbmxpa2UgdGhlIFBDSSBvciBVU0IgZGV2aWNlcywgdGhlIFNQSSB2YXJpYW50cyBkb24ndCBoYXZlXFxuICA1ODpcXHRcXHQgYSBkZWRpY2F0ZWQgRUVQUk9NIGNoaXAgdG8gc3RvcmUgYWxsIGRldmljZSBzcGVjaWZpYyB2YWx1ZXNcXG4gIDU5OlxcdFxcdCBmb3IgY2FsaWJyYXRpb24sIGNvdW50cnkgYW5kIGludGVyZmFjZSBzZXR0aW5ncy5cXG4gIDYwOlxcdFxcbiAgNjE6XFx0XFx0IFRoZSBkcml2ZXIgd2lsbCB0cnkgdG8gbG9hZCB0aGUgaW1hZ2UgXFxcIjM4MjYuZWVwcm9tXFxcIiwgaWYgdGhlXFxuICA2MjpcXHRcXHQgZmlsZSBpcyBwdXQgYXQgdGhlIHJpZ2h0IHBsYWNlLiAodXN1YWxseSAvbGliL2Zpcm13YXJlLilcXG4gIDYzOlxcdFxcbiAgNjQ6XFx0XFx0IE9ubHkgaWYgdGhpcyByZXF1ZXN0IGZhaWxzLCB0aGlzIG9wdGlvbiB3aWxsIHByb3ZpZGUgYVxcbiAgNjU6XFx0XFx0IGJhY2t1cCBzZXQgb2YgZ2VuZXJpYyB2YWx1ZXMgdG8gZ2V0IHRoZSBkZXZpY2Ugd29ya2luZy5cXG4gIDY2OlxcdFxcbiAgNjc6XFx0XFx0IEVuYWJsaW5nIHRoaXMgb3B0aW9uIGFkZHMgYWJvdXQgNGsgdG8gcDU0c3BpLlxcbiAgNjg6XFx0XFxuICA2OTpcXHRjb25maWcgUDU0X0xFRFNcXG4gIDcwOlxcdFxcdGJvb2xcXG4gIDcxOlxcdFxcdGRlcGVuZHMgb24gUDU0X0NPTU1PTiBcXHUwMDI2XFx1MDAyNiBNQUM4MDIxMV9MRURTIFxcdTAwMjZcXHUwMDI2IChMRURTX0NMQVNTID0geSB8fCBMRURTX0NMQVNTID0gUDU0X0NPTU1PTilcXG4gIDcyOlxcdFxcdGRlZmF1bHQgeVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMjozNTozMi4yMTkyNjk3WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjYzOTY2Njk1NzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBUYXJnZXQgQW5hbHlzaXM6IHA1NCBGaXJtd2FyZSBQYXJzaW5nKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gYW5hbHl6ZSB0aGlzIHBhdGNoIHRhcmdldGluZyBmaXJtd2FyZSBwYXJzaW5nIHdpdGhpbiB0aGUgcDU0IHdpcmVsZXNzIGRyaXZlciwgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIGBwNTRfcGFyc2VfZmlybXdhcmVgIGluIGBmd2lvLmNgLiBUaGlzIGZ1bmN0aW9uIGlzIHBpdm90YWwgYXMgaXQncyB0aGUgY29yZSBvZiBwYXJzaW5nIHRoZSBmaXJtd2FyZSBmb3IgcDU0IGRldmljZXMsIGFuZCBjcnVjaWFsIGZvciBVU0IsIFBDSSwgYW5kIFNQSS4gVGhlIGNvbm5lY3Rpb24gdG8gVVNCIGlzIHBhcnRpY3VsYXJseSBpbnRlcmVzdGluZyBiZWNhdXNlIHdlIGhhdmUgVVNCIFJhdyBHYWRnZXQgYW5kIHN5emthbGxlciBlbXVsYXRpb24gb3B0aW9ucywgb2ZmZXJpbmcgdmlhYmxlIGZ1enppbmcgcGF0aHdheXMuIE1vcmVvdmVyLCB0aGUgZmxleGliaWxpdHkgdG8gbG9hZCBmaXJtd2FyZSBmcm9tIHVzZXJzcGFjZSwgc3lzZnMsIHJvb3Rmcywgb3IgZXZlbiB2aWEgZW11bGF0aW9uIG1lYW5zIGEgd2lkZSBhdHRhY2sgc3VyZmFjZS5cblxuTm93LCBsZXQncyBkaXZlIGludG8gdGhlIHBhdGNoJ3Mgc3BlY2lmaWNzLiBCZWZvcmUgdGhlIHBhdGNoLCB0aGUgY29kZSB3YXMgYSBiaXQgbGF4LCBjYWxjdWxhdGluZyBgcnhfZW5kYCB3aXRoIGEgaGFyZGNvZGVkIG9mZnNldC4gVGhlIHVwZGF0ZWQgY29kZSBpbnRyb2R1Y2VzIGEgKmNyaXRpY2FsKiBzYW5pdHkgY2hlY2suIEl0IGVuc3VyZXMgdGhlIGZpcm13YXJlIGRlc2NyaXB0b3IgaGFzIGEgc3VmZmljaWVudCBsZW5ndGggYW5kIHJpZ29yb3VzbHkgdmFsaWRhdGVzIHRoZSBgcnhfZW5kYCBhbmQgYHJ4X3N0YXJ0YCB2YWx1ZXMsIHByZXZlbnRpbmcgdGhlIHBvdGVudGlhbCBmb3IgaW50ZWdlciBvdmVyZmxvd3MgYW5kIHJlbGF0ZWQgdnVsbmVyYWJpbGl0aWVzLlxuXG5UaGlzIGRpcmVjdGx5IHRyYW5zbGF0ZXMgaW50byBmdXp6aW5nIHBvdGVudGlhbCEgVGhpcyBpcyBleGVjdXRhYmxlIGNvZGUgd2l0aGluIGEgcmVhY2hhYmxlIGRyaXZlci4gVGhlIHBhdGNoIG1vZGlmaWVzIGNydWNpYWwgaW5wdXQgdmFsaWRhdGlvbiBhbmQgc2FuaXR5IGNoZWNraW5nIGxvZ2ljIHdoZW4gcGFyc2luZyBmaXJtd2FyZSBmb3IgYHA1NGAuIFRoZXJlZm9yZSwgaXQncyBkZWZpbml0aXZlbHkgV29ydGhGdXp6aW5nPXRydWUuXG5cbk15IHByaW1hcnkgYEZvY3VzU3ltYm9sc2AgYXJlIGNsZWFybHkgYHA1NF9wYXJzZV9maXJtd2FyZWAuIEFsc28sIEknbGwgbGlrZWx5IG5lZWQgdG8gY29uc2lkZXIgcmVsYXRlZCBmdW5jdGlvbnMgYXMgZW50cnkgcG9pbnRzLCBzdWNoIGFzIGBwNTR1X3N0YXJ0X29wc2AsIGBwNTR1X2xvYWRfZmlybXdhcmVfY2JgLCBhbmQgYHA1NHVfcHJvYmVgLiBUaGVzZSBhcmUgYWxsIHJlbGF0ZWQgdG8gZmlybXdhcmUgbG9hZGluZyBhbmQgZGV2aWNlIGluaXRpYWxpemF0aW9uLlxuXG5SZWdhcmRpbmcgdGhlIHJlcXVpcmVkIGtlcm5lbCBjb25maWdzLCBJIG5lZWQgdG8gZW5hYmxlIGBQNTRfQ09NTU9OYCwgYFA1NF9VU0JgLCBgTUFDODAyMTFgLCBhbmQgYFVTQmAuIFRoZXNlIGFyZSBlc3NlbnRpYWwgZm9yIGJ1aWxkaW5nIHRoZSByZWxldmFudCBkcml2ZXJzIGFuZCBzdXBwb3J0aW5nIFVTQiBlbXVsYXRpb24uIGBQNTRfQ09NTU9OYCBpcyByZXF1aXJlZCwgYW5kIGBQNTRfVVNCYCBpbiB0dXJuIGRlcGVuZHMgb24gdGhlc2UuXG5cbkkndmUgcmV2aWV3ZWQgYWxsIGluc3RydWN0aW9ucyBhbmQgZ3VpZGVsaW5lcyBhbmQgdmFsaWRhdGVkIHRoZSBhbmFseXNpcy4gVGhpcyBpcyBhIHNvbGlkIGZ1enppbmcgdGFyZ2V0IGJhc2VkIG9uIHJlYWNoYWJsZSBkcml2ZXIgY29kZSwgd2l0aCBhIGhpZ2ggcHJvYmFiaWxpdHkgb2YgZmluZGluZyBidWdzIGR1ZSB0byB0aGUgY2hhbmdlZCBpbnB1dCB2YWxpZGF0aW9uIGxvZ2ljLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjQxNCwiT3V0cHV0VG9rZW5zIjoxNDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTAwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjI6MzU6MzguNjE1OTQyODkxWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTkyMTYzNzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlA1NF9DT01NT05cIixcbiAgICBcIlA1NF9VU0JcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJVU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwNTRfcGFyc2VfZmlybXdhcmVcIixcbiAgICBcInA1NHVfc3RhcnRfb3BzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBib3VuZHMgYW5kIHJhbmdlIHZhbGlkYXRpb24gY2hlY2tzIGZvciBmaXJtd2FyZSBkZXNjcmlwdG9ycyBpbiBwNTRfcGFyc2VfZmlybXdhcmUoKS4gVGhpcyBmdW5jdGlvbiBpcyByZWFjaGFibGUgdmlhIHRoZSBwNTR1c2IgZHJpdmVyIHdoaWNoIGNhbiBiZSBmdXp6ZWQgdXNpbmcgVVNCIGVtdWxhdGlvbiAoZS5nLiBSYXcgR2FkZ2V0KS4gRnV6emluZyBpcyB3YXJyYW50ZWQgdG8gdmVyaWZ5IHRoYXQgbWFsZm9ybWVkIGZpcm13YXJlIGltYWdlcyBhbmQgZWRnZSBjYXNlcyBhcmUgaGFuZGxlZCBzYWZlbHkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUDU0X0NPTU1PTlwiLFxuICAgIFwiUDU0X1VTQlwiLFxuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIlVTQlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInA1NF9wYXJzZV9maXJtd2FyZVwiLFxuICAgIFwicDU0dV9zdGFydF9vcHNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGJvdW5kcyBhbmQgcmFuZ2UgdmFsaWRhdGlvbiBjaGVja3MgZm9yIGZpcm13YXJlIGRlc2NyaXB0b3JzIGluIHA1NF9wYXJzZV9maXJtd2FyZSgpLiBUaGlzIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSB2aWEgdGhlIHA1NHVzYiBkcml2ZXIgd2hpY2ggY2FuIGJlIGZ1enplZCB1c2luZyBVU0IgZW11bGF0aW9uIChlLmcuIFJhdyBHYWRnZXQpLiBGdXp6aW5nIGlzIHdhcnJhbnRlZCB0byB2ZXJpZnkgdGhhdCBtYWxmb3JtZWQgZmlybXdhcmUgaW1hZ2VzIGFuZCBlZGdlIGNhc2VzIGFyZSBoYW5kbGVkIHNhZmVseS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjI6MzU6MzguNzE1MTY3MTJaIiwiU2VxIjoyMSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNjY3NzIxNzEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjI6MzU6MzguNzE1NzAxOTlaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjoxMTY2NzE3NTk4MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBpbnB1dCB2YWxpZGF0aW9uIGFuZCBib3VuZHMgY2hlY2tpbmcgZm9yIGZpcm13YXJlIGJvb3QgcmVjb3JkIGRlc2NyaXB0b3JzIGluIHA1NF9wYXJzZV9maXJtd2FyZSgpLiBTcGVjaWZpY2FsbHksIGl0IHZhbGlkYXRlcyB0aGF0IHRoZSBib290IHJlY29yZCBsZW5ndGggaXMgc3VmZmljaWVudCB0byBjb3ZlciBzdHJ1Y3QgYm9vdHJlY19kZXNjIGZpZWxkcyAocHJldmVudGluZyBvdXQtb2YtYm91bmRzIHJlYWRzIG9uIHRydW5jYXRlZCBmaXJtd2FyZSBidWZmZXJzLCBkZXRlY3RhYmxlIGJ5IEtBU0FOKSBhbmQgZW5zdXJlcyB0aGF0IHJ4X2VuZCBcXHUwMDNlPSAweDM1MDAgYW5kIHJ4X2VuZCAtIDB4MzUwMCBcXHUwMDNlIHJ4X3N0YXJ0IHRvIHByZXZlbnQgaW50ZWdlciB1bmRlcmZsb3cgYW5kIGludmFsaWQgYnVmZmVyIHJhbmdlcy5cXG5cXG5ObyB1bmluaXRpYWxpemVkIG1lbW9yeSBpcyBhbGxvY2F0ZWQsIHJlYWQsIG9yIGV4cG9zZWQuIExvY2FsIHZhcmlhYmxlcyAocnhfc3RhcnQsIHJ4X2VuZCkgYXJlIGV4cGxpY2l0bHkgaW5pdGlhbGl6ZWQgZnJvbSB0aGUgZmlybXdhcmUgZGVzY3JpcHRvciBiZWZvcmUgYmVpbmcgY2hlY2tlZCBhbmQgc3RvcmVkLiBObyBkYXRhIGlzIGNvcGllZCB0byB1c2Vyc3BhY2Ugd2l0aG91dCBpbml0aWFsaXphdGlvbi4gVGhlcmVmb3JlLCBzdGFuZGFyZCBLQVNBTiBidWlsZHMgYXJlIHN1ZmZpY2llbnQgYW5kIEtNU0FOIGZ1enppbmcgaXMgbm90IG5lZWRlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBlNzAzYzAzNDZiY2ZkOWZkNWYxZTQ0ZTkzOTk4ZjFiZWZkYjEzMjYzXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBTZXAgNiAyMjozNTowOSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jXG5pbmRleCBhM2Q5MDUzZjA0M2M2Li41ZDgyZTBhNDM4MzU4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uY1xuQEAgLTc5LDkgKzc5LDI2IEBAIGludCBwNTRfcGFyc2VfZmlybXdhcmUoc3RydWN0IGllZWU4MDIxMV9odyAqZGV2LCBjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3KVxuIFx0XHRjYXNlIEJSX0NPREVfREVTQ1I6IHtcbiBcdFx0XHRzdHJ1Y3QgYm9vdHJlY19kZXNjICpkZXNjID1cbiBcdFx0XHRcdChzdHJ1Y3QgYm9vdHJlY19kZXNjICopYm9vdHJlYy1cdTAwM2VkYXRhO1xuLVx0XHRcdHByaXYtXHUwMDNlcnhfc3RhcnQgPSBsZTMyX3RvX2NwdShkZXNjLVx1MDAzZXJ4X3N0YXJ0KTtcbi1cdFx0XHQvKiBGSVhNRSBhZGQgc2FuaXR5IGNoZWNraW5nICovXG4tXHRcdFx0cHJpdi1cdTAwM2VyeF9lbmQgPSBsZTMyX3RvX2NwdShkZXNjLVx1MDAzZXJ4X2VuZCkgLSAweDM1MDA7XG4rXHRcdFx0dTMyIHJ4X3N0YXJ0LCByeF9lbmQ7XG4rXG4rXHRcdFx0aWYgKGxlbiBcdTAwM2MgRElWX1JPVU5EX1VQKG9mZnNldG9mZW5kKHN0cnVjdCBib290cmVjX2Rlc2MsXG4rXHRcdFx0XHRcdFx0XHQgICByeF9rZXljYWNoZV9zaXplKSxcbitcdFx0XHRcdFx0XHQgICAgICAgc2l6ZW9mKCpib290cmVjLVx1MDAzZWRhdGEpKSkge1xuK1x0XHRcdFx0d2lwaHlfZXJyKHByaXYtXHUwMDNlaHctXHUwMDNld2lwaHksXG4rXHRcdFx0XHRcdCAgXCJmaXJtd2FyZSBkZXNjcmlwdG9yIGlzIHRvbyBzaG9ydFxcblwiKTtcbitcdFx0XHRcdHJldHVybiAtRUlOVkFMO1xuK1x0XHRcdH1cbitcbitcdFx0XHRyeF9zdGFydCA9IGxlMzJfdG9fY3B1KGRlc2MtXHUwMDNlcnhfc3RhcnQpO1xuK1x0XHRcdHJ4X2VuZCA9IGxlMzJfdG9fY3B1KGRlc2MtXHUwMDNlcnhfZW5kKTtcbitcdFx0XHRpZiAocnhfZW5kIFx1MDAzYyAweDM1MDAgfHwgcnhfZW5kIC0gMHgzNTAwIFx1MDAzYz0gcnhfc3RhcnQpIHtcbitcdFx0XHRcdHdpcGh5X2Vycihwcml2LVx1MDAzZWh3LVx1MDAzZXdpcGh5LFxuK1x0XHRcdFx0XHQgIFwiZmlybXdhcmUgZGVzY3JpcHRvciBoYXMgaW52YWxpZCBSWCByYW5nZVxcblwiKTtcbitcdFx0XHRcdHJldHVybiAtRUlOVkFMO1xuK1x0XHRcdH1cbitcbitcdFx0XHRwcml2LVx1MDAzZXJ4X3N0YXJ0ID0gcnhfc3RhcnQ7XG4rXHRcdFx0cHJpdi1cdTAwM2VyeF9lbmQgPSByeF9lbmQgLSAweDM1MDA7XG4gXHRcdFx0cHJpdi1cdTAwM2VoZWFkcm9vbSA9IGRlc2MtXHUwMDNlaGVhZHJvb207XG4gXHRcdFx0cHJpdi1cdTAwM2V0YWlscm9vbSA9IGRlc2MtXHUwMDNldGFpbHJvb207XG4gXHRcdFx0cHJpdi1cdTAwM2Vwcml2YWN5X2NhcHMgPSBkZXNjLVx1MDAzZXByaXZhY3lfY2FwcztcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIyOjM1OjM4LjcxNTcwMzM2WiIsIlNlcSI6MjMsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjUzNDE3ODEyMDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhpbmdzOlxuXG4qKkFuYWx5emluZyB0aGUgRmlybXdhcmUgSS9PIENvZGUqKlxuXG5Pa2F5LCB0aW1lIHRvIGRpdmUgaW50byB0aGlzLiBUaGUgZGlmZiBwb2ludHMgbWUgdG93YXJkcyBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uY2AsIHNvIHRoYXQncyB3aGVyZSBJIG5lZWQgdG8gZm9jdXMuIExldCdzIHN0YXJ0IHdpdGggYSB0aG9yb3VnaCBleGFtaW5hdGlvbiBvZiB0aGUgY2hhbmdlcy4gSSdsbCBuZWVkIHRvIHJlYWQgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaW4gdGhhdCBmaWxlLCB0b28sIHRvIGdldCB0aGUgY29tcGxldGUgcGljdHVyZS4gVGhlIGJlc3Qgd2F5IHRvIGJlZ2luIHRoZSBpbnZlc3RpZ2F0aW9uIGlzIHVzaW5nIGByZWFkLWZpbGVgIHRvIGdldCB0aGUgY29udGV4dCBpbiB0aGUgZmlsZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uY2AuIFRoaXMgd2lsbCBnaXZlIG1lIGV2ZXJ5dGhpbmcgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNoYW5nZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQzNSwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjI6MzU6NDQuMDU3NDkxMzQ3WiIsIlNlcSI6MjQsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwNDA0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDUwLFxuICBcIkxpbmVDb3VudFwiOiA4MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDUwOlxcdFxcdHdoaWxlIChib290cmVjLVxcdTAwM2VkYXRhIFxcdTAwM2M9IGVuZF9kYXRhIFxcdTAwMjZcXHUwMDI2IChib290cmVjLVxcdTAwM2VkYXRhICtcXG4gIDUxOlxcdFxcdCAgICAgICAobGVuID0gbGUzMl90b19jcHUoYm9vdHJlYy1cXHUwMDNlbGVuKSkpIFxcdTAwM2M9IGVuZF9kYXRhKSB7XFxuICA1MjpcXHRcXHRcXHR1MzIgY29kZSA9IGxlMzJfdG9fY3B1KGJvb3RyZWMtXFx1MDAzZWNvZGUpO1xcbiAgNTM6XFx0XFx0XFx0c3dpdGNoIChjb2RlKSB7XFxuICA1NDpcXHRcXHRcXHRjYXNlIEJSX0NPREVfQ09NUE9ORU5UX0lEOlxcbiAgNTU6XFx0XFx0XFx0XFx0cHJpdi1cXHUwMDNlZndfaW50ZXJmYWNlID0gYmUzMl90b19jcHVwKChfX2JlMzIgKilcXG4gIDU2OlxcdFxcdFxcdFxcdFxcdFxcdCAgICAgYm9vdHJlYy1cXHUwMDNlZGF0YSk7XFxuICA1NzpcXHRcXHRcXHRcXHRzd2l0Y2ggKHByaXYtXFx1MDAzZWZ3X2ludGVyZmFjZSkge1xcbiAgNTg6XFx0XFx0XFx0XFx0Y2FzZSBGV19MTTg2OlxcbiAgNTk6XFx0XFx0XFx0XFx0Y2FzZSBGV19MTTIwOlxcbiAgNjA6XFx0XFx0XFx0XFx0Y2FzZSBGV19MTTg3OiB7XFxuICA2MTpcXHRcXHRcXHRcXHRcXHRjaGFyICppZnR5cGUgPSAoY2hhciAqKWJvb3RyZWMtXFx1MDAzZWRhdGE7XFxuICA2MjpcXHRcXHRcXHRcXHRcXHR3aXBoeV9pbmZvKHByaXYtXFx1MDAzZWh3LVxcdTAwM2V3aXBoeSxcXG4gIDYzOlxcdFxcdFxcdFxcdFxcdFxcdCAgIFxcXCJwNTQgZGV0ZWN0ZWQgYSBMTSVjJWMgZmlybXdhcmVcXFxcblxcXCIsXFxuICA2NDpcXHRcXHRcXHRcXHRcXHRcXHQgICBpZnR5cGVbMl0sIGlmdHlwZVszXSk7XFxuICA2NTpcXHRcXHRcXHRcXHRcXHRicmVhaztcXG4gIDY2OlxcdFxcdFxcdFxcdFxcdH1cXG4gIDY3OlxcdFxcdFxcdFxcdGNhc2UgRldfRk1BQzpcXG4gIDY4OlxcdFxcdFxcdFxcdGRlZmF1bHQ6XFxuICA2OTpcXHRcXHRcXHRcXHRcXHR3aXBoeV9lcnIocHJpdi1cXHUwMDNlaHctXFx1MDAzZXdpcGh5LFxcbiAgNzA6XFx0XFx0XFx0XFx0XFx0XFx0ICBcXFwidW5zdXBwb3J0ZWQgZmlybXdhcmVcXFxcblxcXCIpO1xcbiAgNzE6XFx0XFx0XFx0XFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuICA3MjpcXHRcXHRcXHRcXHR9XFxuICA3MzpcXHRcXHRcXHRcXHRicmVhaztcXG4gIDc0OlxcdFxcdFxcdGNhc2UgQlJfQ09ERV9DT01QT05FTlRfVkVSU0lPTjpcXG4gIDc1OlxcdFxcdFxcdFxcdC8qIDI0IGJ5dGVzIHNob3VsZCBiZSBlbm91Z2ggZm9yIGFsbCBmaXJtd2FyZXMgKi9cXG4gIDc2OlxcdFxcdFxcdFxcdGlmIChzdHJubGVuKCh1bnNpZ25lZCBjaGFyICopIGJvb3RyZWMtXFx1MDAzZWRhdGEsIDI0KSBcXHUwMDNjIDI0KVxcbiAgNzc6XFx0XFx0XFx0XFx0XFx0ZndfdmVyc2lvbiA9ICh1bnNpZ25lZCBjaGFyICopIGJvb3RyZWMtXFx1MDAzZWRhdGE7XFxuICA3ODpcXHRcXHRcXHRcXHRicmVhaztcXG4gIDc5OlxcdFxcdFxcdGNhc2UgQlJfQ09ERV9ERVNDUjoge1xcbiAgODA6XFx0XFx0XFx0XFx0c3RydWN0IGJvb3RyZWNfZGVzYyAqZGVzYyA9XFxuICA4MTpcXHRcXHRcXHRcXHRcXHQoc3RydWN0IGJvb3RyZWNfZGVzYyAqKWJvb3RyZWMtXFx1MDAzZWRhdGE7XFxuICA4MjpcXHRcXHRcXHRcXHR1MzIgcnhfc3RhcnQsIHJ4X2VuZDtcXG4gIDgzOlxcdFxcbiAgODQ6XFx0XFx0XFx0XFx0aWYgKGxlbiBcXHUwMDNjIERJVl9ST1VORF9VUChvZmZzZXRvZmVuZChzdHJ1Y3QgYm9vdHJlY19kZXNjLFxcbiAgODU6XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgcnhfa2V5Y2FjaGVfc2l6ZSksXFxuICA4NjpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgc2l6ZW9mKCpib290cmVjLVxcdTAwM2VkYXRhKSkpIHtcXG4gIDg3OlxcdFxcdFxcdFxcdFxcdHdpcGh5X2Vycihwcml2LVxcdTAwM2Vody1cXHUwMDNld2lwaHksXFxuICA4ODpcXHRcXHRcXHRcXHRcXHRcXHQgIFxcXCJmaXJtd2FyZSBkZXNjcmlwdG9yIGlzIHRvbyBzaG9ydFxcXFxuXFxcIik7XFxuICA4OTpcXHRcXHRcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gIDkwOlxcdFxcdFxcdFxcdH1cXG4gIDkxOlxcdFxcbiAgOTI6XFx0XFx0XFx0XFx0cnhfc3RhcnQgPSBsZTMyX3RvX2NwdShkZXNjLVxcdTAwM2VyeF9zdGFydCk7XFxuICA5MzpcXHRcXHRcXHRcXHRyeF9lbmQgPSBsZTMyX3RvX2NwdShkZXNjLVxcdTAwM2VyeF9lbmQpO1xcbiAgOTQ6XFx0XFx0XFx0XFx0aWYgKHJ4X2VuZCBcXHUwMDNjIDB4MzUwMCB8fCByeF9lbmQgLSAweDM1MDAgXFx1MDAzYz0gcnhfc3RhcnQpIHtcXG4gIDk1OlxcdFxcdFxcdFxcdFxcdHdpcGh5X2Vycihwcml2LVxcdTAwM2Vody1cXHUwMDNld2lwaHksXFxuICA5NjpcXHRcXHRcXHRcXHRcXHRcXHQgIFxcXCJmaXJtd2FyZSBkZXNjcmlwdG9yIGhhcyBpbnZhbGlkIFJYIHJhbmdlXFxcXG5cXFwiKTtcXG4gIDk3OlxcdFxcdFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiAgOTg6XFx0XFx0XFx0XFx0fVxcbiAgOTk6XFx0XFxuIDEwMDpcXHRcXHRcXHRcXHRwcml2LVxcdTAwM2VyeF9zdGFydCA9IHJ4X3N0YXJ0O1xcbiAxMDE6XFx0XFx0XFx0XFx0cHJpdi1cXHUwMDNlcnhfZW5kID0gcnhfZW5kIC0gMHgzNTAwO1xcbiAxMDI6XFx0XFx0XFx0XFx0cHJpdi1cXHUwMDNlaGVhZHJvb20gPSBkZXNjLVxcdTAwM2VoZWFkcm9vbTtcXG4gMTAzOlxcdFxcdFxcdFxcdHByaXYtXFx1MDAzZXRhaWxyb29tID0gZGVzYy1cXHUwMDNldGFpbHJvb207XFxuIDEwNDpcXHRcXHRcXHRcXHRwcml2LVxcdTAwM2Vwcml2YWN5X2NhcHMgPSBkZXNjLVxcdTAwM2Vwcml2YWN5X2NhcHM7XFxuIDEwNTpcXHRcXHRcXHRcXHRwcml2LVxcdTAwM2VyeF9rZXljYWNoZV9zaXplID0gZGVzYy1cXHUwMDNlcnhfa2V5Y2FjaGVfc2l6ZTtcXG4gMTA2OlxcdFxcdFxcdFxcdGlmIChsZTMyX3RvX2NwdShib290cmVjLVxcdTAwM2VsZW4pID09IDExKVxcbiAxMDc6XFx0XFx0XFx0XFx0XFx0cHJpdi1cXHUwMDNlcnhfbXR1ID0gbGUxNl90b19jcHUoZGVzYy1cXHUwMDNlcnhfbXR1KTtcXG4gMTA4OlxcdFxcdFxcdFxcdGVsc2VcXG4gMTA5OlxcdFxcdFxcdFxcdFxcdHByaXYtXFx1MDAzZXJ4X210dSA9IChzaXplX3QpXFxuIDExMDpcXHRcXHRcXHRcXHRcXHRcXHQweDYyMCAtIHByaXYtXFx1MDAzZXR4X2hkcl9sZW47XFxuIDExMTpcXHRcXHRcXHRcXHRtYXhsZW4gPSBwcml2LVxcdTAwM2V0eF9oZHJfbGVuICsgLyogVVNCIGRldmljZXMgKi9cXG4gMTEyOlxcdFxcdFxcdFxcdFxcdCBzaXplb2Yoc3RydWN0IHA1NF9yeF9kYXRhKSArXFxuIDExMzpcXHRcXHRcXHRcXHRcXHQgNCArIC8qIHJ4IGFsaWdubWVudCAqL1xcbiAxMTQ6XFx0XFx0XFx0XFx0XFx0IElFRUU4MDIxMV9NQVhfRlJBR19USFJFU0hPTEQ7XFxuIDExNTpcXHRcXHRcXHRcXHRpZiAocHJpdi1cXHUwMDNlcnhfbXR1IFxcdTAwM2UgbWF4bGVuIFxcdTAwMjZcXHUwMDI2IFBBR0VfU0laRSA9PSA0MDk2KSB7XFxuIDExNjpcXHRcXHRcXHRcXHRcXHRwcmludGsoS0VSTl9JTkZPIFxcXCJwNTQ6IHJ4X210dSByZWR1Y2VkIGZyb20gJWQgXFxcIlxcbiAxMTc6XFx0XFx0XFx0XFx0XFx0ICAgICAgIFxcXCJ0byAlZFxcXFxuXFxcIiwgcHJpdi1cXHUwMDNlcnhfbXR1LCBtYXhsZW4pO1xcbiAxMTg6XFx0XFx0XFx0XFx0XFx0cHJpdi1cXHUwMDNlcnhfbXR1ID0gbWF4bGVuO1xcbiAxMTk6XFx0XFx0XFx0XFx0fVxcbiAxMjA6XFx0XFx0XFx0XFx0YnJlYWs7XFxuIDEyMTpcXHRcXHRcXHRcXHR9XFxuIDEyMjpcXHRcXHRcXHRjYXNlIEJSX0NPREVfRVhQT1NFRF9JRjpcXG4gMTIzOlxcdFxcdFxcdFxcdGV4cF9pZiA9IChzdHJ1Y3QgZXhwX2lmICopIGJvb3RyZWMtXFx1MDAzZWRhdGE7XFxuIDEyNDpcXHRcXHRcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgKGxlbiAqIHNpemVvZigqZXhwX2lmKSAvIDQpOyBpKyspXFxuIDEyNTpcXHRcXHRcXHRcXHRcXHRpZiAoZXhwX2lmW2ldLmlmX2lkID09IGNwdV90b19sZTE2KElGX0lEX0xNQUMpKVxcbiAxMjY6XFx0XFx0XFx0XFx0XFx0XFx0cHJpdi1cXHUwMDNlZndfdmFyID0gbGUxNl90b19jcHUoZXhwX2lmW2ldLnZhcmlhbnQpO1xcbiAxMjc6XFx0XFx0XFx0XFx0YnJlYWs7XFxuIDEyODpcXHRcXHRcXHRjYXNlIEJSX0NPREVfREVQRU5ERU5UX0lGOlxcbiAxMjk6XFx0XFx0XFx0XFx0YnJlYWs7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIyOjM1OjQ0LjA1NzcwMDI5N1oiLCJTZXEiOjI1LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2MzI1MTI3NDgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKktNU0FOIEFzc2Vzc21lbnQ6IEZpcm13YXJlIFBhcnNpbmcgVmFsaWRhdGlvbioqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IG9mIHRoaXMgcGF0Y2gsIHdoaWNoIG1vZGlmaWVzIGBwNTRfcGFyc2VfZmlybXdhcmVgLCBpbnZvbHZlcyBhIGNyaXRpY2FsIHJldmlldyBvZiBpdHMgaW1wbGljYXRpb25zIGZvciBtZW1vcnkgc2FmZXR5LCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gdGhlIEtNU0FOIGFuZ2xlLiBJJ3ZlIGdvdCB0byBlbnN1cmUgdGhlcmUgYXJlIG5vIHZ1bG5lcmFiaWxpdGllcyByZWxhdGVkIHRvIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzZSB3aXRoaW4gdGhlIGtlcm5lbC5cblxuTG9va2luZyBhdCB0aGUgY29kZSwgaXQncyBjbGVhciB0aGUgcGF0Y2ggaXMgYmVlZmluZyB1cCB0aGUgaW5wdXQgdmFsaWRhdGlvbiB3aGVuIGhhbmRsaW5nIHRoZSBgQlJfQ09ERV9ERVNDUmAgY2FzZS4gUHJldmlvdXNseSwgdGhlIGNvZGUgd2FzIHZ1bG5lcmFibGUgYmVjYXVzZSBpdCB3YXMgcmVhZGluZyBkYXRhIGZyb20gdGhlIGBib290cmVjLVx1MDAzZWRhdGFgIGJ1ZmZlciB3aXRob3V0IHN1ZmZpY2llbnQgYm91bmRzIGNoZWNraW5nLiBTcGVjaWZpY2FsbHksIGl0IGxhY2tlZCBjaGVja3Mgb24gdGhlIHJlY29yZCBsZW5ndGgsIHBvdGVudGlhbGx5IGxlYWRpbmcgdG8gb3V0LW9mLWJvdW5kcyByZWFkcyBpZiB0aGUgZmlybXdhcmUgZGF0YSB3YXMgdHJ1bmNhdGVkIOKAkyBhIGNsYXNzaWMgS0FTQU4gaXNzdWUuIFRoZSBwYXRjaCBhZGRyZXNzZXMgdGhpcyBieSBhZGRpbmcgYSBjcnVjaWFsIGNoZWNrIHRvIGVuc3VyZSB0aGUgcmVjb3JkIGBsZW5gIGlzIGxhcmdlIGVub3VnaCB0byBjb250YWluIHRoZSBgYm9vdHJlY19kZXNjYCBzdHJ1Y3R1cmUgdXAgdG8gYHJ4X2tleWNhY2hlX3NpemVgLCBhcyB3ZWxsIGFzIHZhbGlkYXRpbmcgdGhhdCBgcnhfZW5kYCBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gYDB4MzUwMGAgYW5kIGByeF9lbmQgLSAweDM1MDBgIGlzIGdyZWF0ZXIgdGhhbiBgcnhfc3RhcnRgLiBUaGlzIGVmZmVjdGl2ZWx5IHByZXZlbnRzIGFuIGludGVnZXIgdW5kZXJmbG93IG9yIGFuIGludmFsaWQgUlggYnVmZmVyIHJhbmdlIGNhbGN1bGF0aW9uLlxuXG5Ob3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb246IGRvZXMgdGhpcyBpbnRyb2R1Y2Ugb3IgZXhhY2VyYmF0ZSBhbnkgS01TQU4gY29uY2VybnM/IFRvIGFzc2VzcyB0aGlzLCBJJ3ZlIGdvdCB0byByaWdvcm91c2x5IGV4YW1pbmUgaWYgdGhlIHBhdGNoIGludHJvZHVjZXMgYW55IG9mIHRoZSBmb2xsb3dpbmcgS01TQU4tcmVsZXZhbnQgc2NlbmFyaW9zOlxuMS4gIEtlcm5lbCBkYXRhIHN0cnVjdHVyZXMgcGFzc2VkIHRvIHVzZXIgc3BhY2Ugd2l0aCB1bmluaXRpYWxpemVkIGZpZWxkcy5cbjIuICBDb25kaXRpb25hbCBsb2dpYyByZWx5aW5nIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLlxuMy4gIENvbXBsZXggZGF0YSBzdHJ1Y3R1cmUgYWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcyBtaWdodCBiZSBhY2Nlc3NlZCBsYXRlci5cbjQuICBCb3VuZHMgY2hlY2tzIG9yIGxlbmd0aCBjYWxjdWxhdGlvbnMgdGhhdCBjb3VsZCBlbmFibGUgYWNjZXNzIHRvIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgaW4gZXhpc3RpbmcgYnVmZmVycy5cblxuR29pbmcgdGhyb3VnaCB0aGUgY2hlY2tsaXN0LCBpdCdzIHByZXR0eSBjbGVhciB0aGF0IHRoaXMgcGF0Y2ggZG9lcyBub3QgZmFsbCBpbnRvIGFueSBvZiB0aGVzZSBjYXRlZ29yaWVzLiBUaGUgcGF0Y2ggKipvbmx5KiogdmFsaWRhdGVzIGlucHV0IGZyb20gdGhlIGZpcm13YXJlIGJ1ZmZlci4gVGhlIHZhcmlhYmxlcyBgcnhfc3RhcnRgIGFuZCBgcnhfZW5kYCBhcmUgYWx3YXlzIGV4cGxpY2l0bHkgaW5pdGlhbGl6ZWQgZnJvbSB2YWx1ZXMgcmVhZCBmcm9tIGBib290cmVjLVx1MDAzZWRhdGFgIGJlZm9yZSBiZWluZyB1c2VkLiBObyB1bmluaXRpYWxpemVkIG1lbW9yeSBpcyBpbnRyb2R1Y2VkLCBhbGxvY2F0ZWQsIG9yIGNvcGllZCB0byB1c2VyIHNwYWNlLiBJdCB0aWdodGVucyB0aGUgYm91bmRzIGNoZWNrcyBhbmQgcmVqZWN0cyBpbnZhbGlkL3Nob3J0IGRlc2NyaXB0b3JzLlxuXG5UaGVyZWZvcmUsIHRoZSBmaXggaXMgc29sZWx5IGFib3V0IHN0YW5kYXJkIGlucHV0IHZhbGlkYXRpb24gYW5kIHNhbml0aXphdGlvbiwgd2hpY2ggYXJlIEtBU0FOIHByb2JsZW1zLiBUaGUgS01TQU4gZnV6emluZyBtZXRob2RvbG9neSBkb2Vzbid0IHByb3ZpZGUgYW55IGFkZGl0aW9uYWwgYmVuZWZpdCBoZXJlLiBUaGUgaXNzdWUgZml4ZWQgaXMgcHJldmVudGluZyBvdXQtb2YtYm91bmRzIHJlYWRzIGFuZCBpbnRlZ2VyIHVuZGVyZmxvdy4gVGhlc2UgYXJlIHN0YW5kYXJkIEtBU0FOIGFuZCBsb2dpYyBpc3N1ZXMgYW5kIG5vdCBLTVNBTi1zcGVjaWZpYy5cblxuU28sIGluIGNvbmNsdXNpb24sIHRoZSBwYXRjaCBwcmltYXJpbHkgYWRkcmVzc2VzIEtBU0FOIHZ1bG5lcmFiaWxpdGllcyBieSB2YWxpZGF0aW5nIGZpcm13YXJlIGRhdGEsIG1ha2luZyBpdCBzYWZlIHRvIHNheSB0aGF0IGBOZWVkc0tNU0FOID0gZmFsc2VgLiBJJ2xsIGNhbGwgYHNldC1yZXN1bHRzYCB3aXRoIHRoaXMgYXNzZXNzbWVudCwgY29uZmlkZW50IGluIHRoZSByZWFzb25pbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwODIsIk91dHB1dFRva2VucyI6MTkzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODUzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjI6MzU6NTAuMzgyODM0MTQ5WiIsIlNlcSI6MjYsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzg4MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGlucHV0IHZhbGlkYXRpb24gYW5kIGJvdW5kcyBjaGVja2luZyBmb3IgZmlybXdhcmUgYm9vdCByZWNvcmQgZGVzY3JpcHRvcnMgaW4gcDU0X3BhcnNlX2Zpcm13YXJlKCkuIFNwZWNpZmljYWxseSwgaXQgdmFsaWRhdGVzIHRoYXQgdGhlIGJvb3QgcmVjb3JkIGxlbmd0aCBpcyBzdWZmaWNpZW50IHRvIGNvdmVyIHN0cnVjdCBib290cmVjX2Rlc2MgZmllbGRzIChwcmV2ZW50aW5nIG91dC1vZi1ib3VuZHMgcmVhZHMgb24gdHJ1bmNhdGVkIGZpcm13YXJlIGJ1ZmZlcnMsIGRldGVjdGFibGUgYnkgS0FTQU4pIGFuZCBlbnN1cmVzIHRoYXQgcnhfZW5kIFxcdTAwM2U9IDB4MzUwMCBhbmQgcnhfZW5kIC0gMHgzNTAwIFxcdTAwM2Ugcnhfc3RhcnQgdG8gcHJldmVudCBpbnRlZ2VyIHVuZGVyZmxvdyBhbmQgaW52YWxpZCBidWZmZXIgcmFuZ2VzLlxcblxcbk5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzIGFsbG9jYXRlZCwgcmVhZCwgb3IgZXhwb3NlZC4gTG9jYWwgdmFyaWFibGVzIChyeF9zdGFydCwgcnhfZW5kKSBhcmUgZXhwbGljaXRseSBpbml0aWFsaXplZCBmcm9tIHRoZSBmaXJtd2FyZSBkZXNjcmlwdG9yIGJlZm9yZSBiZWluZyBjaGVja2VkIGFuZCBzdG9yZWQuIE5vIGRhdGEgaXMgY29waWVkIHRvIHVzZXJzcGFjZSB3aXRob3V0IGluaXRpYWxpemF0aW9uLiBUaGVyZWZvcmUsIHN0YW5kYXJkIEtBU0FOIGJ1aWxkcyBhcmUgc3VmZmljaWVudCBhbmQgS01TQU4gZnV6emluZyBpcyBub3QgbmVlZGVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgaW5wdXQgdmFsaWRhdGlvbiBhbmQgYm91bmRzIGNoZWNraW5nIGZvciBmaXJtd2FyZSBib290IHJlY29yZCBkZXNjcmlwdG9ycyBpbiBwNTRfcGFyc2VfZmlybXdhcmUoKS4gU3BlY2lmaWNhbGx5LCBpdCB2YWxpZGF0ZXMgdGhhdCB0aGUgYm9vdCByZWNvcmQgbGVuZ3RoIGlzIHN1ZmZpY2llbnQgdG8gY292ZXIgc3RydWN0IGJvb3RyZWNfZGVzYyBmaWVsZHMgKHByZXZlbnRpbmcgb3V0LW9mLWJvdW5kcyByZWFkcyBvbiB0cnVuY2F0ZWQgZmlybXdhcmUgYnVmZmVycywgZGV0ZWN0YWJsZSBieSBLQVNBTikgYW5kIGVuc3VyZXMgdGhhdCByeF9lbmQgXFx1MDAzZT0gMHgzNTAwIGFuZCByeF9lbmQgLSAweDM1MDAgXFx1MDAzZSByeF9zdGFydCB0byBwcmV2ZW50IGludGVnZXIgdW5kZXJmbG93IGFuZCBpbnZhbGlkIGJ1ZmZlciByYW5nZXMuXFxuXFxuTm8gdW5pbml0aWFsaXplZCBtZW1vcnkgaXMgYWxsb2NhdGVkLCByZWFkLCBvciBleHBvc2VkLiBMb2NhbCB2YXJpYWJsZXMgKHJ4X3N0YXJ0LCByeF9lbmQpIGFyZSBleHBsaWNpdGx5IGluaXRpYWxpemVkIGZyb20gdGhlIGZpcm13YXJlIGRlc2NyaXB0b3IgYmVmb3JlIGJlaW5nIGNoZWNrZWQgYW5kIHN0b3JlZC4gTm8gZGF0YSBpcyBjb3BpZWQgdG8gdXNlcnNwYWNlIHdpdGhvdXQgaW5pdGlhbGl6YXRpb24uIFRoZXJlZm9yZSwgc3RhbmRhcmQgS0FTQU4gYnVpbGRzIGFyZSBzdWZmaWNpZW50IGFuZCBLTVNBTiBmdXp6aW5nIGlzIG5vdCBuZWVkZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowvm8rn[1] Phase: Succeeded StartedAt: 2026-09-06 22:36:01 +0000 UTC FinishedAt: 2026-09-06 22:36:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvm8rn[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-09-06 22:36:01 +0000 UTC FinishedAt: 2026-09-06 22:36:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvm8rn[2] Phase: Succeeded StartedAt: 2026-09-06 22:36:01 +0000 UTC FinishedAt: 2026-09-06 23:18:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvm8rn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p54_parse_firmware","p54u_start_ops"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","USB"],"series_id":"cd518fb1-7904-4199-bf48-a6dcad792fa7","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-09-06 22:36:01 +0000 UTC FinishedAt: 2026-09-06 23:18:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p54_parse_firmware","p54u_start_ops"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","USB"],"series_id":"cd518fb1-7904-4199-bf48-a6dcad792fa7","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowvm8rn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p54_parse_firmware","p54u_start_ops"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","USB"],"series_id":"cd518fb1-7904-4199-bf48-a6dcad792fa7","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-09-06 22:36:01 +0000 UTC FinishedAt: 2026-09-06 22:36:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvm8rn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p54_parse_firmware","p54u_start_ops"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","USB"],"series_id":"cd518fb1-7904-4199-bf48-a6dcad792fa7","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-09-06 22:36:01 +0000 UTC FinishedAt: 2026-09-06 22:36:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvm8rn/series-workflowvm8rn-convert-artifact-1627563491/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvm8rn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p54_parse_firmware","p54u_start_ops"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","USB"],"series_id":"cd518fb1-7904-4199-bf48-a6dcad792fa7","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-09-06 22:36:11 +0000 UTC FinishedAt: 2026-09-06 22:55:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvm8rn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p54_parse_firmware","p54u_start_ops"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","USB"],"series_id":"cd518fb1-7904-4199-bf48-a6dcad792fa7","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-09-06 22:36:11 +0000 UTC FinishedAt: 2026-09-06 22:55:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*aa5b81c5-c067-40b2-a34d-52a620c10593,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-workflowvm8rn/series-workflowvm8rn-convert-artifact-1627563491/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": "7440331a-a50c-4e23-98af-371a3bc66df7", "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-workflowvm8rn/series-workflowvm8rn-build-action-555663697/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvm8rn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p54_parse_firmware","p54u_start_ops"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","USB"],"series_id":"cd518fb1-7904-4199-bf48-a6dcad792fa7","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-09-06 22:36:11 +0000 UTC FinishedAt: 2026-09-06 22:55:04 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*aa5b81c5-c067-40b2-a34d-52a620c10593,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-workflowvm8rn/series-workflowvm8rn-convert-artifact-1627563491/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": "7440331a-a50c-4e23-98af-371a3bc66df7", "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-workflowvm8rn/series-workflowvm8rn-build-action-555663697/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvm8rn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p54_parse_firmware","p54u_start_ops"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","USB"],"series_id":"cd518fb1-7904-4199-bf48-a6dcad792fa7","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-09-06 22:55:14 +0000 UTC FinishedAt: 2026-09-06 22:55:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvm8rn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p54_parse_firmware","p54u_start_ops"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","USB"],"series_id":"cd518fb1-7904-4199-bf48-a6dcad792fa7","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-09-06 22:55:14 +0000 UTC FinishedAt: 2026-09-06 22:55:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvm8rn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p54_parse_firmware","p54u_start_ops"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","USB"],"series_id":"cd518fb1-7904-4199-bf48-a6dcad792fa7","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-09-06 22:55:14 +0000 UTC FinishedAt: 2026-09-06 22:55:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvm8rn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p54_parse_firmware","p54u_start_ops"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","USB"],"series_id":"cd518fb1-7904-4199-bf48-a6dcad792fa7","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-09-06 22:55:14 +0000 UTC FinishedAt: 2026-09-06 22:55:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","USB"],"series_id":"cd518fb1-7904-4199-bf48-a6dcad792fa7","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvm8rn/series-workflowvm8rn-convert-artifact-1038950682/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvm8rn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p54_parse_firmware","p54u_start_ops"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","USB"],"series_id":"cd518fb1-7904-4199-bf48-a6dcad792fa7","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-09-06 22:55:24 +0000 UTC FinishedAt: 2026-09-06 22:57:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvm8rn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p54_parse_firmware","p54u_start_ops"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","USB"],"series_id":"cd518fb1-7904-4199-bf48-a6dcad792fa7","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-09-06 22:55:24 +0000 UTC FinishedAt: 2026-09-06 22:57:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*7440331a-a50c-4e23-98af-371a3bc66df7,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-workflowvm8rn/series-workflowvm8rn-build-action-555663697/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-workflowvm8rn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p54_parse_firmware","p54u_start_ops"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","USB"],"series_id":"cd518fb1-7904-4199-bf48-a6dcad792fa7","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-09-06 22:57:32 +0000 UTC FinishedAt: 2026-09-06 22:57:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvm8rn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p54_parse_firmware","p54u_start_ops"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","USB"],"series_id":"cd518fb1-7904-4199-bf48-a6dcad792fa7","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-09-06 22:57:32 +0000 UTC FinishedAt: 2026-09-06 22:57:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvm8rn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p54_parse_firmware","p54u_start_ops"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","USB"],"series_id":"cd518fb1-7904-4199-bf48-a6dcad792fa7","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-09-06 22:57:32 +0000 UTC FinishedAt: 2026-09-06 23:13:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvm8rn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p54_parse_firmware","p54u_start_ops"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","USB"],"series_id":"cd518fb1-7904-4199-bf48-a6dcad792fa7","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-09-06 22:57:32 +0000 UTC FinishedAt: 2026-09-06 23:13:40 +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:*aa5b81c5-c067-40b2-a34d-52a620c10593,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-workflowvm8rn/series-workflowvm8rn-convert-artifact-1038950682/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": "f474bc67-6c00-40d3-8eb7-af5a9fbb72c7", "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-workflowvm8rn/series-workflowvm8rn-build-action-1416940798/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvm8rn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p54_parse_firmware","p54u_start_ops"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","USB"],"series_id":"cd518fb1-7904-4199-bf48-a6dcad792fa7","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-09-06 22:57:32 +0000 UTC FinishedAt: 2026-09-06 23:13:30 +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:*aa5b81c5-c067-40b2-a34d-52a620c10593,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-workflowvm8rn/series-workflowvm8rn-convert-artifact-1038950682/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": "f474bc67-6c00-40d3-8eb7-af5a9fbb72c7", "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-workflowvm8rn/series-workflowvm8rn-build-action-1416940798/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvm8rn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p54_parse_firmware","p54u_start_ops"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","USB"],"series_id":"cd518fb1-7904-4199-bf48-a6dcad792fa7","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-09-06 23:13:40 +0000 UTC FinishedAt: 2026-09-06 23:13:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvm8rn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p54_parse_firmware","p54u_start_ops"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","USB"],"series_id":"cd518fb1-7904-4199-bf48-a6dcad792fa7","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-09-06 23:13:40 +0000 UTC FinishedAt: 2026-09-06 23:13:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvm8rn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p54_parse_firmware","p54u_start_ops"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","USB"],"series_id":"cd518fb1-7904-4199-bf48-a6dcad792fa7","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-09-06 23:13:40 +0000 UTC FinishedAt: 2026-09-06 23:15:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvm8rn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p54_parse_firmware","p54u_start_ops"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","USB"],"series_id":"cd518fb1-7904-4199-bf48-a6dcad792fa7","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-09-06 23:13:40 +0000 UTC FinishedAt: 2026-09-06 23:15:40 +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:*f474bc67-6c00-40d3-8eb7-af5a9fbb72c7,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-workflowvm8rn/series-workflowvm8rn-build-action-1416940798/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-workflowvm8rn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p54_parse_firmware","p54u_start_ops"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","USB"],"series_id":"cd518fb1-7904-4199-bf48-a6dcad792fa7","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-09-06 23:15:50 +0000 UTC FinishedAt: 2026-09-06 23:18:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvm8rn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p54_parse_firmware","p54u_start_ops"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","USB"],"series_id":"cd518fb1-7904-4199-bf48-a6dcad792fa7","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-09-06 23:15:50 +0000 UTC FinishedAt: 2026-09-06 23:18:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p54_parse_firmware","p54u_start_ops"],"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:*7440331a-a50c-4e23-98af-371a3bc66df7,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*f474bc67-6c00-40d3-8eb7-af5a9fbb72c7,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-workflowvm8rn/series-workflowvm8rn-build-action-555663697/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-workflowvm8rn/series-workflowvm8rn-build-action-1416940798/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowvm8rn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p54_parse_firmware","p54u_start_ops"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","USB"],"series_id":"cd518fb1-7904-4199-bf48-a6dcad792fa7","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-09-06 23:15:50 +0000 UTC FinishedAt: 2026-09-06 23:16:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvm8rn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p54_parse_firmware","p54u_start_ops"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","USB"],"series_id":"cd518fb1-7904-4199-bf48-a6dcad792fa7","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-09-06 23:15:50 +0000 UTC FinishedAt: 2026-09-06 23:15:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p54_parse_firmware","p54u_start_ops"],"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-workflowvm8rn/series-workflowvm8rn-convert-artifact-3897939919/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvm8rn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p54_parse_firmware","p54u_start_ops"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","USB"],"series_id":"cd518fb1-7904-4199-bf48-a6dcad792fa7","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-09-06 23:15:50 +0000 UTC FinishedAt: 2026-09-06 23:15:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvm8rn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p54_parse_firmware","p54u_start_ops"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","USB"],"series_id":"cd518fb1-7904-4199-bf48-a6dcad792fa7","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-09-06 23:15:50 +0000 UTC FinishedAt: 2026-09-06 23:15:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvm8rn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p54_parse_firmware","p54u_start_ops"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","USB"],"series_id":"cd518fb1-7904-4199-bf48-a6dcad792fa7","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-09-06 23:15:50 +0000 UTC FinishedAt: 2026-09-06 23:15:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvm8rn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p54_parse_firmware","p54u_start_ops"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","USB"],"series_id":"cd518fb1-7904-4199-bf48-a6dcad792fa7","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-09-06 23:16:00 +0000 UTC FinishedAt: 2026-09-06 23:18:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvm8rn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p54_parse_firmware","p54u_start_ops"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","USB"],"series_id":"cd518fb1-7904-4199-bf48-a6dcad792fa7","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-09-06 23:16:00 +0000 UTC FinishedAt: 2026-09-06 23:18:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*7440331a-a50c-4e23-98af-371a3bc66df7,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*f474bc67-6c00-40d3-8eb7-af5a9fbb72c7,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-workflowvm8rn/series-workflowvm8rn-build-action-555663697/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-workflowvm8rn/series-workflowvm8rn-build-action-1416940798/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-workflowvm8rn/series-workflowvm8rn-convert-artifact-3897939919/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,}