Name: series-workflowbgh8v Phase: Succeeded StartedAt: 2026-09-06 05:45:15 +0000 UTC FinishedAt: 2026-09-06 07:31:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbgh8v[0] Phase: Succeeded StartedAt: 2026-09-06 05:45:15 +0000 UTC FinishedAt: 2026-09-06 05:49:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbgh8v[0].run-triage Phase: Succeeded StartedAt: 2026-09-06 05:45:15 +0000 UTC FinishedAt: 2026-09-06 05:49:42 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "1d8e73163ef933624341075f576e2f36ef9133f7", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ATH9K_COMMON_SPECTRAL", "ATH9K_HTC_DEBUGFS", "ATH9K_HTC", "ATH9K_DEBUGFS", "ATH9K" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "1d8e73163ef933624341075f576e2f36ef9133f7", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ATH9K_COMMON_SPECTRAL", "ATH9K_HTC_DEBUGFS", "ATH9K_HTC", "ATH9K_DEBUGFS", "ATH9K" ], "series_id": "06b6d6eb-5b97-40bf-aaf9-0586ee374725" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ath_cmn_process_fft", "ath9k_cmn_spectral_init_debug", "ath9k_htc_init_debug", "ath9k_init_debug" ], "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+CgkJCTx0ZD4yMDI2LzA5LzA2IDA1OjQ3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FUSDlLX0NPTU1PTl9TUEVDVFJBTCYjMzQ7LAogICAgJiMzNDtBVEg5S19IVENfREVCVUdGUyYjMzQ7LAogICAgJiMzNDtBVEg5S19IVEMmIzM0OywKICAgICYjMzQ7QVRIOUtfREVCVUdGUyYjMzQ7LAogICAgJiMzNDtBVEg5SyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2F0aF9jbW5fcHJvY2Vzc19mZnQmIzM0OywKICAgICYjMzQ7YXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcmIzM0OywKICAgICYjMzQ7YXRoOWtfaHRjX2luaXRfZGVidWcmIzM0OywKICAgICYjMzQ7YXRoOWtfaW5pdF9kZWJ1ZyYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgdHlwZSBjb25mdXNpb24gaXNzdWUgYmV0d2VlbiBhdGg5ayBhbmQgYXRoOWtfaHRjIGRyaXZlcnMgaW4gc2hhcmVkIHNwZWN0cmFsIHNjYW5uaW5nIGNvZGUgKGNvbW1vbi1zcGVjdHJhbC5jKSwgd2hlcmUgY29tbW9uLVx1MDAzZXByaXYgd2FzIHByZXZpb3VzbHkgY2FzdCB1bmNvbmRpdGlvbmFsbHkgdG8gc3RydWN0IGF0aF9zb2Z0YyAqLiBUaGUgZml4IHBhc3NlcyB0aGUgZHJpdmVyLXNwZWNpZmljIGF0aF9yeF9zdGF0cyBwb2ludGVyIGR1cmluZyBkZWJ1ZyBpbml0aWFsaXphdGlvbiBhbmQgaW5jcmVtZW50cyBzdGF0cyB0aHJvdWdoIHNwZWNfcHJpdi1cdTAwM2VyeF9zdGF0cyB3aXRoIGEgTlVMTCBjaGVjay5cblxuVGhpcyBjaGFuZ2Ugb25seSBhZmZlY3RzIHBvaW50ZXIgYXNzaWdubWVudCBhbmQgc3RhdGlzdGljIGNvdW50ZXIgaW5jcmVtZW50cy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSwgYWxsb2NhdGUgdW5pbml0aWFsaXplZCBidWZmZXJzLCBvciBwZXJmb3JtIGNvcGllcyB0byB1c2VyIHNwYWNlIG9mIHVuaW5pdGlhbGl6ZWQgZGF0YS4gQW55IG1lbW9yeSBzYWZldHkgY29uY2VybnMgKHN1Y2ggYXMgaW52YWxpZCBwb2ludGVyIGRlcmVmZXJlbmNlcyBvciB0eXBlIGNvbmZ1c2lvbikgYXJlIGFkZXF1YXRlbHkgY292ZXJlZCBieSBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHNwZWN0cmFsIHNjYW4gZGVidWcgaW5pdGlhbGl6YXRpb24gYW5kIEZGVCBzYW1wbGUgcHJvY2Vzc2luZyBpbiB0aGUgYXRoOWsgYW5kIGF0aDlrX2h0YyBkcml2ZXJzLiBhdGg5a19odGMgaXMgYSBVU0ItYmFzZWQgd2lyZWxlc3MgZHJpdmVyIGFjY2Vzc2libGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBVU0IgZW11bGF0aW9uLiBUaGUgY2hhbmdlcyBhbHRlciBob3cgc3BlY3RyYWwgc2FtcGxlIHN0YXRpc3RpY3MgYXJlIHRyYWNrZWQgYW5kIGluaXRpYWxpemVkIGFjcm9zcyBkcml2ZXJzIHNoYXJpbmcgY29tbW9uIHNwZWN0cmFsIHNjYW4gY29kZSwgbWFraW5nIGl0IHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDU6NDc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAyOTM3ZTg1NGI4NjU1YjEyZTViMmQxY2I3NjRkMDBhYmZlNGY5ZWIwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBTZXAgNiAwNTo0NzozMSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmNcbmluZGV4IGNhMDFhMDdmNjYzMGMuLmQ4YmUyNGViY2QyNDcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuY1xuQEAgLTQ2NSw2ICYjNDM7NDY1LDIwIEBAIGF0aF9jbW5faXNfZmZ0X2J1Zl9mdWxsKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdilcbiBcdFx0cmV0dXJuIDA7XG4gfVxuIFxuJiM0MztzdGF0aWMgdm9pZCBhdGhfY21uX2NvdW50X2ZmdF9zYW1wbGUoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LFxuJiM0MztcdFx0XHRcdCAgICAgaW50IHJldClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBhdGhfcnhfc3RhdHMgKnJ4X3N0YXRzID0gc3BlY19wcml2LVx1MDAzZXJ4X3N0YXRzO1xuJiM0MztcbiYjNDM7XHRpZiAoIXJ4X3N0YXRzKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiYjNDM7XHRpZiAocmV0ID09IDApXG4mIzQzO1x0XHRyeF9zdGF0cy1cdTAwM2VyeF9zcGVjdHJhbF9zYW1wbGVfZ29vZCYjNDM7JiM0Mzs7XG4mIzQzO1x0ZWxzZVxuJiM0MztcdFx0cnhfc3RhdHMtXHUwMDNlcnhfc3BlY3RyYWxfc2FtcGxlX2VyciYjNDM7JiM0Mzs7XG4mIzQzO31cbiYjNDM7XG4gLyogcmV0dXJucyAxIGlmIHRoaXMgd2FzIGEgc3BlY3RyYWwgZnJhbWUsIGV2ZW4gaWYgbm90IGhhbmRsZWQuICovXG4gaW50IGF0aF9jbW5fcHJvY2Vzc19mZnQoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LCBzdHJ1Y3QgaWVlZTgwMjExX2hkciAqaGRyLFxuIFx0XHQgICAgc3RydWN0IGF0aF9yeF9zdGF0dXMgKnJzLCB1NjQgdHNmKVxuQEAgLTQ3Miw3ICYjNDM7NDg2LDYgQEAgaW50IGF0aF9jbW5fcHJvY2Vzc19mZnQoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LCBzdHJ1Y3QgaWVlZTgwMjExX2hcbiBcdHU4IHNhbXBsZV9idWZbU1BFQ1RSQUxfU0FNUExFX01BWF9MRU5dID0gezB9O1xuIFx0c3RydWN0IGF0aF9odyAqYWggPSBzcGVjX3ByaXYtXHUwMDNlYWg7XG4gXHRzdHJ1Y3QgYXRoX2NvbW1vbiAqY29tbW9uID0gYXRoOWtfaHdfY29tbW9uKHNwZWNfcHJpdi1cdTAwM2VhaCk7XG4tXHRzdHJ1Y3QgYXRoX3NvZnRjICpzYyA9IGNvbW1vbi1cdTAwM2Vwcml2O1xuIFx0dTggbnVtX2JpbnMsICp2ZGF0YSA9ICh1OCAqKWhkcjtcbiBcdHN0cnVjdCBhdGhfcmFkYXJfaW5mbyAqcmFkYXJfaW5mbztcbiBcdGludCBsZW4gPSBycy1cdTAwM2Vyc19kYXRhbGVuO1xuQEAgLTYyNCwxMCAmIzQzOzYzNyw3IEBAIGludCBhdGhfY21uX3Byb2Nlc3NfZmZ0KHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiwgc3RydWN0IGllZWU4MDIxMV9oXG4gXHRcdFx0XHRyZXQgPSBmZnRfaGFuZGxlcihycywgc3BlY19wcml2LCBzYW1wbGVfYnVmLFxuIFx0XHRcdFx0XHRcdCAgdHNmLCBmcmVxLCBjaGFuX3R5cGUpO1xuIFxuLVx0XHRcdFx0aWYgKHJldCA9PSAwKVxuLVx0XHRcdFx0XHRSWF9TVEFUX0lOQyhzYywgcnhfc3BlY3RyYWxfc2FtcGxlX2dvb2QpO1xuLVx0XHRcdFx0ZWxzZVxuLVx0XHRcdFx0XHRSWF9TVEFUX0lOQyhzYywgcnhfc3BlY3RyYWxfc2FtcGxlX2Vycik7XG4mIzQzO1x0XHRcdFx0YXRoX2Ntbl9jb3VudF9mZnRfc2FtcGxlKHNwZWNfcHJpdiwgcmV0KTtcbiBcbiBcdFx0XHRcdC8qIE1peCB0aGUgcmVjZWl2ZWQgYmlucyB0byB0aGUgL2Rldi9yYW5kb21cbiBcdFx0XHRcdCAqIHBvb2xcbkBAIC02NDIsMTAgJiM0Mzs2NTIsNyBAQCBpbnQgYXRoX2Ntbl9wcm9jZXNzX2ZmdChzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsIHN0cnVjdCBpZWVlODAyMTFfaFxuIFx0XHRcdFx0cmV0ID0gZmZ0X2hhbmRsZXIocnMsIHNwZWNfcHJpdiwgc2FtcGxlX3N0YXJ0LFxuIFx0XHRcdFx0XHRcdCAgdHNmLCBmcmVxLCBjaGFuX3R5cGUpO1xuIFxuLVx0XHRcdFx0aWYgKHJldCA9PSAwKVxuLVx0XHRcdFx0XHRSWF9TVEFUX0lOQyhzYywgcnhfc3BlY3RyYWxfc2FtcGxlX2dvb2QpO1xuLVx0XHRcdFx0ZWxzZVxuLVx0XHRcdFx0XHRSWF9TVEFUX0lOQyhzYywgcnhfc3BlY3RyYWxfc2FtcGxlX2Vycik7XG4mIzQzO1x0XHRcdFx0YXRoX2Ntbl9jb3VudF9mZnRfc2FtcGxlKHNwZWNfcHJpdiwgcmV0KTtcbiBcbiBcdFx0XHRcdC8qIE1peCB0aGUgcmVjZWl2ZWQgYmlucyB0byB0aGUgL2Rldi9yYW5kb21cbiBcdFx0XHRcdCAqIHBvb2xcbkBAIC0xMDUyLDggJiM0MzsxMDU5LDEwIEBAIHZvaWQgYXRoOWtfY21uX3NwZWN0cmFsX2RlaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYpXG4gRVhQT1JUX1NZTUJPTChhdGg5a19jbW5fc3BlY3RyYWxfZGVpbml0X2RlYnVnKTtcbiBcbiB2b2lkIGF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdixcbi1cdFx0XHRcdCAgIHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcGh5KVxuJiM0MztcdFx0XHRcdCAgIHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcGh5LFxuJiM0MztcdFx0XHRcdCAgIHN0cnVjdCBhdGhfcnhfc3RhdHMgKnJ4X3N0YXRzKVxuIHtcbiYjNDM7XHRzcGVjX3ByaXYtXHUwMDNlcnhfc3RhdHMgPSByeF9zdGF0cztcbiBcdHNwZWNfcHJpdi1cdTAwM2VyZnNfY2hhbl9zcGVjX3NjYW4gPSByZWxheV9vcGVuKFwmIzM0O3NwZWN0cmFsX3NjYW5cJiMzNDssXG4gXHRcdFx0XHRcdCAgICBkZWJ1Z2ZzX3BoeSxcbiBcdFx0XHRcdFx0ICAgIDEwMjQsIDI1NiwgXHUwMDI2cmZzX3NwZWNfc2Nhbl9jYixcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmhcbmluZGV4IDAxMWQ4YWI4Yjk3NDQuLjBlMmM3ZDZkMzQ4NzQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaFxuQEAgLTk0LDEyICYjNDM7OTQsMTYgQEAgc3RydWN0IGF0aF9odDIwXzQwX2ZmdF9wYWNrZXQge1xuIFx0c3RydWN0IGF0aF9yYWRhcl9pbmZvIHJhZGFyX2luZm87XG4gfSBfX3BhY2tlZDtcbiBcbiYjNDM7c3RydWN0IGF0aF9yeF9zdGF0cztcbiYjNDM7XG4gc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiB7XG4gXHRzdHJ1Y3QgYXRoX2h3ICphaDtcbiBcdC8qIHJlbGF5KGZzKSBjaGFubmVsIGZvciBzcGVjdHJhbCBzY2FuICovXG4gXHRzdHJ1Y3QgcmNoYW4gKnJmc19jaGFuX3NwZWNfc2NhbjtcbiBcdGVudW0gc3BlY3RyYWxfbW9kZSBzcGVjdHJhbF9tb2RlO1xuIFx0c3RydWN0IGF0aF9zcGVjX3NjYW4gc3BlY19jb25maWc7XG4mIzQzO1x0LyogZHJpdmVyJiMzOTtzIFJYIHN0YXRpc3RpY3MgdG8gYWNjb3VudCBzYW1wbGVzIGludG8sIGlmIGFueSAqL1xuJiM0MztcdHN0cnVjdCBhdGhfcnhfc3RhdHMgKnJ4X3N0YXRzO1xuIH07XG4gXG4gI2RlZmluZSBTUEVDVFJBTF9IVDIwXzQwX1RPVEFMX0RBVEFfTEVOXHQoc2l6ZW9mKHN0cnVjdCBhdGhfaHQyMF80MF9mZnRfcGFja2V0KSlcbkBAIC0xNjksNyAmIzQzOzE3Myw5IEBAIHN0YXRpYyBpbmxpbmUgdTggc3BlY3RyYWxfYml0bWFwX3dlaWdodCh1OCAqYmlucylcbiB9XG4gXG4gI2lmZGVmIENPTkZJR19BVEg5S19DT01NT05fU1BFQ1RSQUxcbi12b2lkIGF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiwgc3RydWN0IGRlbnRyeSAqZGVidWdmc19waHkpO1xuJiM0Mzt2b2lkIGF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdixcbiYjNDM7XHRcdFx0XHQgICBzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX3BoeSxcbiYjNDM7XHRcdFx0XHQgICBzdHJ1Y3QgYXRoX3J4X3N0YXRzICpyeF9zdGF0cyk7XG4gdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfZGVpbml0X2RlYnVnKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdik7XG4gXG4gdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfc2Nhbl90cmlnZ2VyKHN0cnVjdCBhdGhfY29tbW9uICpjb21tb24sXG5AQCAtMTgxLDcgJiM0MzsxODcsOCBAQCBpbnQgYXRoX2Ntbl9wcm9jZXNzX2ZmdChzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsIHN0cnVjdCBpZWVlODAyMTFfaFxuIFx0XHQgICAgc3RydWN0IGF0aF9yeF9zdGF0dXMgKnJzLCB1NjQgdHNmKTtcbiAjZWxzZVxuIHN0YXRpYyBpbmxpbmUgdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsXG4tXHRcdFx0XHRcdFx0IHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcGh5KVxuJiM0MztcdFx0XHRcdFx0XHQgc3RydWN0IGRlbnRyeSAqZGVidWdmc19waHksXG4mIzQzO1x0XHRcdFx0XHRcdCBzdHJ1Y3QgYXRoX3J4X3N0YXRzICpyeF9zdGF0cylcbiB7XG4gfVxuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZWJ1Zy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2RlYnVnLmNcbmluZGV4IDc0YTAxMzQwNzVjZjkuLjA0MmE0ZjU0MmE5NDMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGVidWcuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2RlYnVnLmNcbkBAIC0xMzg5LDcgJiM0MzsxMzg5LDggQEAgaW50IGF0aDlrX2luaXRfZGVidWcoc3RydWN0IGF0aF9odyAqYWgpXG4gXG4gXHRhdGg5a19kZnNfaW5pdF9kZWJ1ZyhzYyk7XG4gXHRhdGg5a190eDk5X2luaXRfZGVidWcoc2MpO1xuLVx0YXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoXHUwMDI2c2MtXHUwMDNlc3BlY19wcml2LCBzYy1cdTAwM2VkZWJ1Zy5kZWJ1Z2ZzX3BoeSk7XG4mIzQzO1x0YXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoXHUwMDI2c2MtXHUwMDNlc3BlY19wcml2LCBzYy1cdTAwM2VkZWJ1Zy5kZWJ1Z2ZzX3BoeSxcbiYjNDM7XHRcdFx0XHQgICAgICBcdTAwMjZzYy1cdTAwM2VkZWJ1Zy5zdGF0cy5yeHN0YXRzKTtcbiBcbiBcdGRlYnVnZnNfY3JlYXRlX2Rldm1fc2VxZmlsZShzYy1cdTAwM2VkZXYsIFwmIzM0O2RtYVwmIzM0Oywgc2MtXHUwMDNlZGVidWcuZGVidWdmc19waHksXG4gXHRcdFx0XHQgICAgcmVhZF9maWxlX2RtYSk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmNcbmluZGV4IDk0MzdkNjk4NzdjYzUuLjlkMzU0YjFkOTI5YzggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jXG5AQCAtNDg3LDcgJiM0Mzs0ODcsOCBAQCBpbnQgYXRoOWtfaHRjX2luaXRfZGVidWcoc3RydWN0IGF0aF9odyAqYWgpXG4gXHRwcml2LVx1MDAzZWRlYnVnLmRlYnVnZnNfcGh5ID0gZGVidWdmc19jcmVhdGVfZGlyKEtCVUlMRF9NT0ROQU1FLFxuIFx0XHRcdFx0XHQgICAgIHByaXYtXHUwMDNlaHctXHUwMDNld2lwaHktXHUwMDNlZGVidWdmc2Rpcik7XG4gXG4tXHRhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhcdTAwMjZwcml2LVx1MDAzZXNwZWNfcHJpdiwgcHJpdi1cdTAwM2VkZWJ1Zy5kZWJ1Z2ZzX3BoeSk7XG4mIzQzO1x0YXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoXHUwMDI2cHJpdi1cdTAwM2VzcGVjX3ByaXYsIHByaXYtXHUwMDNlZGVidWcuZGVidWdmc19waHksXG4mIzQzO1x0XHRcdFx0ICAgICAgXHUwMDI2cHJpdi1cdTAwM2VkZWJ1Zy5yeF9zdGF0cyk7XG4gXG4gXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFwmIzM0O3RndF9pbnRfc3RhdHNcJiMzNDssIDA0MDAsIHByaXYtXHUwMDNlZGVidWcuZGVidWdmc19waHksXG4gXHRcdFx0ICAgIHByaXYsIFx1MDAyNmZvcHNfdGd0X2ludF9zdGF0cyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDU6NDc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QVRIOUtfQ09NTU9OX1NQRUNUUkFMJiMzNDssCiAgICAmIzM0O0FUSDlLX0hUQ19ERUJVR0ZTJiMzNDssCiAgICAmIzM0O0FUSDlLX0hUQyYjMzQ7LAogICAgJiMzNDtBVEg5S19ERUJVR0ZTJiMzNDssCiAgICAmIzM0O0FUSDlLJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YXRoX2Ntbl9wcm9jZXNzX2ZmdCYjMzQ7LAogICAgJiMzNDthdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyYjMzQ7LAogICAgJiMzNDthdGg5a19odGNfaW5pdF9kZWJ1ZyYjMzQ7LAogICAgJiMzNDthdGg5a19pbml0X2RlYnVnJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBzcGVjdHJhbCBzY2FuIGRlYnVnIGluaXRpYWxpemF0aW9uIGFuZCBGRlQgc2FtcGxlIHByb2Nlc3NpbmcgaW4gdGhlIGF0aDlrIGFuZCBhdGg5a19odGMgZHJpdmVycy4gYXRoOWtfaHRjIGlzIGEgVVNCLWJhc2VkIHdpcmVsZXNzIGRyaXZlciBhY2Nlc3NpYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgVVNCIGVtdWxhdGlvbi4gVGhlIGNoYW5nZXMgYWx0ZXIgaG93IHNwZWN0cmFsIHNhbXBsZSBzdGF0aXN0aWNzIGFyZSB0cmFja2VkIGFuZCBpbml0aWFsaXplZCBhY3Jvc3MgZHJpdmVycyBzaGFyaW5nIGNvbW1vbiBzcGVjdHJhbCBzY2FuIGNvZGUsIG1ha2luZyBpdCB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMjkzN2U4NTRiODY1NWIxMmU1YjJkMWNiNzY0ZDAwYWJmZTRmOWViMApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTdW4gU2VwIDYgMDU6NDc6MzEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMKaW5kZXggY2EwMWEwN2Y2NjMwYy4uZDhiZTI0ZWJjZDI0NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYwpAQCAtNDY1LDYgJiM0Mzs0NjUsMjAgQEAgYXRoX2Ntbl9pc19mZnRfYnVmX2Z1bGwoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2KQogCQlyZXR1cm4gMDsKIH0KIAomIzQzO3N0YXRpYyB2b2lkIGF0aF9jbW5fY291bnRfZmZ0X3NhbXBsZShzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsCiYjNDM7CQkJCSAgICAgaW50IHJldCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBhdGhfcnhfc3RhdHMgKnJ4X3N0YXRzID0gc3BlY19wcml2LSZndDtyeF9zdGF0czsKJiM0MzsKJiM0MzsJaWYgKCFyeF9zdGF0cykKJiM0MzsJCXJldHVybjsKJiM0MzsKJiM0MzsJaWYgKHJldCA9PSAwKQomIzQzOwkJcnhfc3RhdHMtJmd0O3J4X3NwZWN0cmFsX3NhbXBsZV9nb29kJiM0MzsmIzQzOzsKJiM0MzsJZWxzZQomIzQzOwkJcnhfc3RhdHMtJmd0O3J4X3NwZWN0cmFsX3NhbXBsZV9lcnImIzQzOyYjNDM7OwomIzQzO30KJiM0MzsKIC8qIHJldHVybnMgMSBpZiB0aGlzIHdhcyBhIHNwZWN0cmFsIGZyYW1lLCBldmVuIGlmIG5vdCBoYW5kbGVkLiAqLwogaW50IGF0aF9jbW5fcHJvY2Vzc19mZnQoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LCBzdHJ1Y3QgaWVlZTgwMjExX2hkciAqaGRyLAogCQkgICAgc3RydWN0IGF0aF9yeF9zdGF0dXMgKnJzLCB1NjQgdHNmKQpAQCAtNDcyLDcgJiM0Mzs0ODYsNiBAQCBpbnQgYXRoX2Ntbl9wcm9jZXNzX2ZmdChzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsIHN0cnVjdCBpZWVlODAyMTFfaAogCXU4IHNhbXBsZV9idWZbU1BFQ1RSQUxfU0FNUExFX01BWF9MRU5dID0gezB9OwogCXN0cnVjdCBhdGhfaHcgKmFoID0gc3BlY19wcml2LSZndDthaDsKIAlzdHJ1Y3QgYXRoX2NvbW1vbiAqY29tbW9uID0gYXRoOWtfaHdfY29tbW9uKHNwZWNfcHJpdi0mZ3Q7YWgpOwotCXN0cnVjdCBhdGhfc29mdGMgKnNjID0gY29tbW9uLSZndDtwcml2OwogCXU4IG51bV9iaW5zLCAqdmRhdGEgPSAodTggKiloZHI7CiAJc3RydWN0IGF0aF9yYWRhcl9pbmZvICpyYWRhcl9pbmZvOwogCWludCBsZW4gPSBycy0mZ3Q7cnNfZGF0YWxlbjsKQEAgLTYyNCwxMCAmIzQzOzYzNyw3IEBAIGludCBhdGhfY21uX3Byb2Nlc3NfZmZ0KHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiwgc3RydWN0IGllZWU4MDIxMV9oCiAJCQkJcmV0ID0gZmZ0X2hhbmRsZXIocnMsIHNwZWNfcHJpdiwgc2FtcGxlX2J1ZiwKIAkJCQkJCSAgdHNmLCBmcmVxLCBjaGFuX3R5cGUpOwogCi0JCQkJaWYgKHJldCA9PSAwKQotCQkJCQlSWF9TVEFUX0lOQyhzYywgcnhfc3BlY3RyYWxfc2FtcGxlX2dvb2QpOwotCQkJCWVsc2UKLQkJCQkJUlhfU1RBVF9JTkMoc2MsIHJ4X3NwZWN0cmFsX3NhbXBsZV9lcnIpOwomIzQzOwkJCQlhdGhfY21uX2NvdW50X2ZmdF9zYW1wbGUoc3BlY19wcml2LCByZXQpOwogCiAJCQkJLyogTWl4IHRoZSByZWNlaXZlZCBiaW5zIHRvIHRoZSAvZGV2L3JhbmRvbQogCQkJCSAqIHBvb2wKQEAgLTY0MiwxMCAmIzQzOzY1Miw3IEBAIGludCBhdGhfY21uX3Byb2Nlc3NfZmZ0KHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiwgc3RydWN0IGllZWU4MDIxMV9oCiAJCQkJcmV0ID0gZmZ0X2hhbmRsZXIocnMsIHNwZWNfcHJpdiwgc2FtcGxlX3N0YXJ0LAogCQkJCQkJICB0c2YsIGZyZXEsIGNoYW5fdHlwZSk7CiAKLQkJCQlpZiAocmV0ID09IDApCi0JCQkJCVJYX1NUQVRfSU5DKHNjLCByeF9zcGVjdHJhbF9zYW1wbGVfZ29vZCk7Ci0JCQkJZWxzZQotCQkJCQlSWF9TVEFUX0lOQyhzYywgcnhfc3BlY3RyYWxfc2FtcGxlX2Vycik7CiYjNDM7CQkJCWF0aF9jbW5fY291bnRfZmZ0X3NhbXBsZShzcGVjX3ByaXYsIHJldCk7CiAKIAkJCQkvKiBNaXggdGhlIHJlY2VpdmVkIGJpbnMgdG8gdGhlIC9kZXYvcmFuZG9tCiAJCQkJICogcG9vbApAQCAtMTA1Miw4ICYjNDM7MTA1OSwxMCBAQCB2b2lkIGF0aDlrX2Ntbl9zcGVjdHJhbF9kZWluaXRfZGVidWcoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2KQogRVhQT1JUX1NZTUJPTChhdGg5a19jbW5fc3BlY3RyYWxfZGVpbml0X2RlYnVnKTsKIAogdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsCi0JCQkJICAgc3RydWN0IGRlbnRyeSAqZGVidWdmc19waHkpCiYjNDM7CQkJCSAgIHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcGh5LAomIzQzOwkJCQkgICBzdHJ1Y3QgYXRoX3J4X3N0YXRzICpyeF9zdGF0cykKIHsKJiM0MzsJc3BlY19wcml2LSZndDtyeF9zdGF0cyA9IHJ4X3N0YXRzOwogCXNwZWNfcHJpdi0mZ3Q7cmZzX2NoYW5fc3BlY19zY2FuID0gcmVsYXlfb3BlbigmIzM0O3NwZWN0cmFsX3NjYW4mIzM0OywKIAkJCQkJICAgIGRlYnVnZnNfcGh5LAogCQkJCQkgICAgMTAyNCwgMjU2LCAmYW1wO3Jmc19zcGVjX3NjYW5fY2IsCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmgKaW5kZXggMDExZDhhYjhiOTc0NC4uMGUyYzdkNmQzNDg3NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaApAQCAtOTQsMTIgJiM0Mzs5NCwxNiBAQCBzdHJ1Y3QgYXRoX2h0MjBfNDBfZmZ0X3BhY2tldCB7CiAJc3RydWN0IGF0aF9yYWRhcl9pbmZvIHJhZGFyX2luZm87CiB9IF9fcGFja2VkOwogCiYjNDM7c3RydWN0IGF0aF9yeF9zdGF0czsKJiM0MzsKIHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgewogCXN0cnVjdCBhdGhfaHcgKmFoOwogCS8qIHJlbGF5KGZzKSBjaGFubmVsIGZvciBzcGVjdHJhbCBzY2FuICovCiAJc3RydWN0IHJjaGFuICpyZnNfY2hhbl9zcGVjX3NjYW47CiAJZW51bSBzcGVjdHJhbF9tb2RlIHNwZWN0cmFsX21vZGU7CiAJc3RydWN0IGF0aF9zcGVjX3NjYW4gc3BlY19jb25maWc7CiYjNDM7CS8qIGRyaXZlciYjMzk7cyBSWCBzdGF0aXN0aWNzIHRvIGFjY291bnQgc2FtcGxlcyBpbnRvLCBpZiBhbnkgKi8KJiM0MzsJc3RydWN0IGF0aF9yeF9zdGF0cyAqcnhfc3RhdHM7CiB9OwogCiAjZGVmaW5lIFNQRUNUUkFMX0hUMjBfNDBfVE9UQUxfREFUQV9MRU4JKHNpemVvZihzdHJ1Y3QgYXRoX2h0MjBfNDBfZmZ0X3BhY2tldCkpCkBAIC0xNjksNyAmIzQzOzE3Myw5IEBAIHN0YXRpYyBpbmxpbmUgdTggc3BlY3RyYWxfYml0bWFwX3dlaWdodCh1OCAqYmlucykKIH0KIAogI2lmZGVmIENPTkZJR19BVEg5S19DT01NT05fU1BFQ1RSQUwKLXZvaWQgYXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LCBzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX3BoeSk7CiYjNDM7dm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsCiYjNDM7CQkJCSAgIHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcGh5LAomIzQzOwkJCQkgICBzdHJ1Y3QgYXRoX3J4X3N0YXRzICpyeF9zdGF0cyk7CiB2b2lkIGF0aDlrX2Ntbl9zcGVjdHJhbF9kZWluaXRfZGVidWcoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2KTsKIAogdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfc2Nhbl90cmlnZ2VyKHN0cnVjdCBhdGhfY29tbW9uICpjb21tb24sCkBAIC0xODEsNyAmIzQzOzE4Nyw4IEBAIGludCBhdGhfY21uX3Byb2Nlc3NfZmZ0KHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiwgc3RydWN0IGllZWU4MDIxMV9oCiAJCSAgICBzdHJ1Y3QgYXRoX3J4X3N0YXR1cyAqcnMsIHU2NCB0c2YpOwogI2Vsc2UKIHN0YXRpYyBpbmxpbmUgdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsCi0JCQkJCQkgc3RydWN0IGRlbnRyeSAqZGVidWdmc19waHkpCiYjNDM7CQkJCQkJIHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcGh5LAomIzQzOwkJCQkJCSBzdHJ1Y3QgYXRoX3J4X3N0YXRzICpyeF9zdGF0cykKIHsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2RlYnVnLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGVidWcuYwppbmRleCA3NGEwMTM0MDc1Y2Y5Li4wNDJhNGY1NDJhOTQzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGVidWcuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGVidWcuYwpAQCAtMTM4OSw3ICYjNDM7MTM4OSw4IEBAIGludCBhdGg5a19pbml0X2RlYnVnKHN0cnVjdCBhdGhfaHcgKmFoKQogCiAJYXRoOWtfZGZzX2luaXRfZGVidWcoc2MpOwogCWF0aDlrX3R4OTlfaW5pdF9kZWJ1ZyhzYyk7Ci0JYXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoJmFtcDtzYy0mZ3Q7c3BlY19wcml2LCBzYy0mZ3Q7ZGVidWcuZGVidWdmc19waHkpOwomIzQzOwlhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZygmYW1wO3NjLSZndDtzcGVjX3ByaXYsIHNjLSZndDtkZWJ1Zy5kZWJ1Z2ZzX3BoeSwKJiM0MzsJCQkJICAgICAgJmFtcDtzYy0mZ3Q7ZGVidWcuc3RhdHMucnhzdGF0cyk7CiAKIAlkZWJ1Z2ZzX2NyZWF0ZV9kZXZtX3NlcWZpbGUoc2MtJmd0O2RldiwgJiMzNDtkbWEmIzM0Oywgc2MtJmd0O2RlYnVnLmRlYnVnZnNfcGh5LAogCQkJCSAgICByZWFkX2ZpbGVfZG1hKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jCmluZGV4IDk0MzdkNjk4NzdjYzUuLjlkMzU0YjFkOTI5YzggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYwpAQCAtNDg3LDcgJiM0Mzs0ODcsOCBAQCBpbnQgYXRoOWtfaHRjX2luaXRfZGVidWcoc3RydWN0IGF0aF9odyAqYWgpCiAJcHJpdi0mZ3Q7ZGVidWcuZGVidWdmc19waHkgPSBkZWJ1Z2ZzX2NyZWF0ZV9kaXIoS0JVSUxEX01PRE5BTUUsCiAJCQkJCSAgICAgcHJpdi0mZ3Q7aHctJmd0O3dpcGh5LSZndDtkZWJ1Z2ZzZGlyKTsKIAotCWF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnKCZhbXA7cHJpdi0mZ3Q7c3BlY19wcml2LCBwcml2LSZndDtkZWJ1Zy5kZWJ1Z2ZzX3BoeSk7CiYjNDM7CWF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnKCZhbXA7cHJpdi0mZ3Q7c3BlY19wcml2LCBwcml2LSZndDtkZWJ1Zy5kZWJ1Z2ZzX3BoeSwKJiM0MzsJCQkJICAgICAgJmFtcDtwcml2LSZndDtkZWJ1Zy5yeF9zdGF0cyk7CiAKIAlkZWJ1Z2ZzX2NyZWF0ZV9maWxlKCYjMzQ7dGd0X2ludF9zdGF0cyYjMzQ7LCAwNDAwLCBwcml2LSZndDtkZWJ1Zy5kZWJ1Z2ZzX3BoeSwKIAkJCSAgICBwcml2LCAmYW1wO2ZvcHNfdGd0X2ludF9zdGF0cyk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA1OjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUwNTcKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiAyMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaCBmb3IgU3l6a2FsbGVyIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IGlmIHRoaXMgcGF0Y2ggaXMgZXZlbiAqd29ydGgqIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuIFRoZSBwYXRjaCBpcyB0b3VjaGluZyBmaWxlcyBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2AsIHNwZWNpZmljYWxseSBgY29tbW9uLXNwZWN0cmFsLmNgLCBgY29tbW9uLXNwZWN0cmFsLmhgLCBgZGVidWcuY2AsIGFuZCBgaHRjX2Rydl9kZWJ1Zy5jYC4gQWxyaWdodCwgdGhhdCYjMzk7cyB0aGUgc2NvcGUuIE5vdywgdGhlIGtleSBxdWVzdGlvbjogaXMgYGF0aDlrYCBhY2Nlc3NpYmxlIHZpYSB0aGUgc3l6a2FsbGVyIGZyYW1ld29yaz8KCkZpcnN0LCBJIG5lZWQgdG8ga25vdyB0aGUgZHJpdmVyIHR5cGUuIElzIGl0IFBDSSwgVVNCLCBvciBib3RoPyBBIHF1aWNrIGNoZWNrIHJldmVhbHMgYGF0aDlrYCBpdHNlbGYgaXMgUENJL1NvQywgYnV0IGBhdGg5a19odGNgIGlzIFVTQiEgQmluZ28hIFVTQiBkcml2ZXJzIGFyZSBhYnNvbHV0ZWx5IHdpdGhpbiBzeXprYWxsZXImIzM5O3Mgd2hlZWxob3VzZSwgcGFydGljdWxhcmx5IHZpYSByYXdfZ2FkZ2V0LCBkdW1teV9oY2QsIG9yIHZoY2kgZm9yIGVtdWxhdGlvbi4gVGhpcyBsb29rcyBwcm9taXNpbmcuIFRoZSBmYWN0IHRoYXQgdGhlIHBhdGNoIHRvdWNoZXMgYGh0Y19kcnZfZGVidWcuY2AgZnVydGhlciByZWluZm9yY2VzIHRoZSBjb25uZWN0aW9uIHRvIFVTQi4KCk5vdywgSSYjMzk7bGwgbmVlZCB0byBkaWcgZGVlcGVyLiBJJiMzOTtsbCBuZWVkIHRvIGV4YW1pbmUgYGh0Y19kcnZfZGVidWcuY2Agc3BlY2lmaWNhbGx5LCBhbmQgaG93IHRoZSBgYXRoOWtfaHRjYCBkcml2ZXIgZnVuY3Rpb25zLiBJIGNhbiB1c2UgbXkgcHJlZmVycmVkIHRvb2xzLCBsaWtlIGdyZXBwZXIgb3IgcmVhZGluZyB0aGUgZmlsZSwgdG8gZmluZCBvdXQgaG93IGl0IHdpbGwgd29yayB3aXRoIHN5emthbGxlci4gTGV0JiMzOTtzIHN0YXJ0IHRoZSBzZWFyY2ggYW5kIHVuZGVyc3RhbmQgaWYgdGhlIGBhdGg5a19odGNgIGNhbiBiZSBmdXp6ZWQhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDU6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jPTEwNTk9RVhQT1JUX1NZTUJPTChhdGg5a19jbW5fc3BlY3RyYWxfZGVpbml0X2RlYnVnKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xMDYwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjEwNjE6dm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTA2Mi1cdFx0XHRcdCAgIHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcGh5LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xMDkzLX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzoxMDk0OkVYUE9SVF9TWU1CT0woYXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaD0xNzA9c3RhdGljIGlubGluZSB1OCBzcGVjdHJhbF9iaXRtYXBfd2VpZ2h0KHU4ICpiaW5zKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaC0xNzUtI2lmZGVmIENPTkZJR19BVEg5S19DT01NT05fU1BFQ1RSQUxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaDoxNzY6dm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmgtMTc3LVx0XHRcdFx0ICAgc3RydWN0IGRlbnRyeSAqZGVidWdmc19waHksXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oPTE4Nj1pbnQgYXRoX2Ntbl9wcm9jZXNzX2ZmdChzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsIHN0cnVjdCBpZWVlODAyMTFfaGRyICpoZHIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oLTE4OC0jZWxzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oOjE4OTpzdGF0aWMgaW5saW5lIHZvaWQgYXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oLTE5MC1cdFx0XHRcdFx0XHQgc3RydWN0IGRlbnRyeSAqZGVidWdmc19waHksXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2RlYnVnLmM9MTM3Nz1pbnQgYXRoOWtfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX2h3ICphaClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGVidWcuYy0xMzkxLVx0YXRoOWtfdHg5OV9pbml0X2RlYnVnKHNjKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZWJ1Zy5jOjEzOTI6XHRhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhcdTAwMjZzYy1cdTAwM2VzcGVjX3ByaXYsIHNjLVx1MDAzZWRlYnVnLmRlYnVnZnNfcGh5LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2RlYnVnLmMtMTM5My1cdFx0XHRcdCAgICAgIFx1MDAyNnNjLVx1MDAzZWRlYnVnLnN0YXRzLnJ4c3RhdHMpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM9NDgyPWludCBhdGg5a19odGNfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX2h3ICphaClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jLTQ4OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM6NDkwOlx0YXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoXHUwMDI2cHJpdi1cdTAwM2VzcGVjX3ByaXYsIHByaXYtXHUwMDNlZGVidWcuZGVidWdmc19waHksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jLTQ5MS1cdFx0XHRcdCAgICAgIFx1MDAyNnByaXYtXHUwMDNlZGVidWcucnhfc3RhdHMpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA1OjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY1MzUKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA1MjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUGF0Y2g6IEEgRGVlcCBEaXZlIGludG8gRHJpdmVyIERhdGEgU3RydWN0dXJlcyBhbmQgUG90ZW50aWFsIE1lbW9yeSBDb3JydXB0aW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXNzZWN0IHRoaXMgcGF0Y2ggYW5kIGZpZ3VyZSBvdXQgdGhlIHJlYXNvbmluZyBiZWhpbmQgdGhlIGNoYW5nZXMuIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGhhcHBlbmluZyB3aXRoaW4gdGhlIGBhdGhfY21uX3Byb2Nlc3NfZmZ0YCBmdW5jdGlvbi4gVGFraW5nIGEgbG9vayBhdCB0aGUgY29kZSBiZWZvcmUgdGhlIHBhdGNoLCBJIHNlZSBhbiBhY2Nlc3MgcGF0dGVybiB0aGF0IGltbWVkaWF0ZWx5IHJhaXNlcyBhIGZsYWc6CgpgYGBjCnN0cnVjdCBhdGhfaHcgKmFoID0gc3BlY19wcml2LSZndDthaDsKc3RydWN0IGF0aF9jb21tb24gKmNvbW1vbiA9IGF0aDlrX2h3X2NvbW1vbihzcGVjX3ByaXYtJmd0O2FoKTsKc3RydWN0IGF0aF9zb2Z0YyAqc2MgPSBjb21tb24tJmd0O3ByaXY7Ci4uLgppZiAocmV0ID09IDApCiAgICBSWF9TVEFUX0lOQyhzYywgcnhfc3BlY3RyYWxfc2FtcGxlX2dvb2QpOwplbHNlCiAgICBSWF9TVEFUX0lOQyhzYywgcnhfc3BlY3RyYWxfc2FtcGxlX2Vycik7CmBgYAoKU3BlY2lmaWNhbGx5LCB0aGUgbGluZSB3aGVyZSBgY29tbW9uLSZndDtwcml2YCBpcyBjYXN0IHRvIGEgYHN0cnVjdCBhdGhfc29mdGMgKnNjYC4gSSBrbm93LCBmcm9tIG15IGV4cGVyaWVuY2Ugd2l0aCB0aGUgYGF0aDlrYCBkcml2ZXIsIHRoYXQgYGNvbW1vbi0mZ3Q7cHJpdmAgaXMgaW5kZWVkIGEgYHN0cnVjdCBhdGhfc29mdGMgKmAuIEJ1dCwgdGhpcyBpcyBhIHNoYXJlZCBmaWxlIGJldHdlZW4gYGF0aDlrYCBhbmQgYGF0aDlrX2h0Y2AuIFdoYXQgaWYgdGhpcyBhY2Nlc3MgaXMgdXNlZCBpbiBgYXRoOWtfaHRjYCBhcyB3ZWxsPyBJIG5lZWQgdG8gY2hlY2sgd2hhdCBgYXRoOWtfaHRjYCBhY3R1YWxseSBzZXRzIGBjb21tb24tJmd0O3ByaXZgIHRvLiBPciwgcmF0aGVyLCB3aGF0IHRoZSB0eXBlIG9mIHRoZSBzdHJ1Y3QgcG9pbnRlZCB0byBieSBgY29tbW9uLSZndDtwcml2YCBpcy4KCkJpbmdvISBJbiBgYXRoOWtfaHRjYCwgYGNvbW1vbi0mZ3Q7cHJpdmAgaXMgYWN0dWFsbHkgYSBgc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2YC4gU28sIHRoZSBgUlhfU1RBVF9JTkMoc2MsIC4uLilgIG1hY3JvIGlzIGxpa2VseSBpbmNyZW1lbnRpbmcgYSBtZW1iZXIgb2YgYSBzdHJ1Y3R1cmUgcG9pbnRlZCB0byBieSBgc2NgLgoKVGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGFyZSBpbW1lZGlhdGUgYW5kIHNpZ25pZmljYW50LiBJZiBgc2NgIGlzIHRyZWF0ZWQgYXMgYSBgc3RydWN0IGF0aF9zb2Z0YyAqYCB3aGVuIGl0JiMzOTtzIGFjdHVhbGx5IGEgYHN0cnVjdCBhdGg5a19odGNfcHJpdiAqYCwgdGhlbiB3ZSBoYXZlIGEgY2xhc3NpYyBjYXNlIG9mIG1lbW9yeSBjb3JydXB0aW9uIG9yIGludmFsaWQgc3RydWN0IG1lbWJlciBhY2Nlc3MhIFRoaXMgd291bGQgZGVwZW5kIG9uIHRoZSBzaXplIG9mIHRoZSAyIHN0cnVjdHMsIGFuZCB3aGljaCBmaWVsZHMgdGhlIGluY3JlbWVudCB0YXJnZXRzLgoKVGhpcyBwYXRjaCwgdGhlbiwgaXMgYSBidWdmaXguIEl0IGFkZHJlc3NlcyBhIHNoYXJlZCBjb2RlIHByb2JsZW0gd2hlcmUgYGNvbW1vbi1zcGVjdHJhbC5jYCB3YXMgYmVpbmcgdXNlZCBieSBib3RoIGBhdGg5a2AgYW5kIGBhdGg5a19odGNgLCBidXQgYGF0aF9jbW5fcHJvY2Vzc19mZnRgIGFzc3VtZWQgYSBgc3RydWN0IGF0aF9zb2Z0YyAqYCBmb3IgYGNvbW1vbi0mZ3Q7cHJpdmAuCgpOb3csIEkgc2VlIHRoZSBjb3JyZWN0ZWQgY29kZS4gYGF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnYCBub3cgcmVjZWl2ZXMgYSBwb2ludGVyIHRvIGBzdHJ1Y3QgYXRoX3J4X3N0YXRzICpyeF9zdGF0c2AsIHN0b3JlZCBpbiBgc3BlY19wcml2LSZndDtyeF9zdGF0c2AuIENvbnNlcXVlbnRseSwgYGF0aF9jbW5fY291bnRfZmZ0X3NhbXBsZWAgc2FmZWx5IHVwZGF0ZXMgYHJ4X3N0YXRzLSZndDtyeF9zcGVjdHJhbF9zYW1wbGVfZ29vZCYjNDM7JiM0MztgIG9yIGByeF9zdGF0cy0mZ3Q7cnhfc3BlY3RyYWxfc2FtcGxlX2VyciYjNDM7JiM0MztgLiBUaGlzIGlzIGEgbXVjaCBjbGVhbmVyIGFuZCBzYWZlciBhcHByb2FjaCwgZWxpbWluYXRpbmcgdGhlIHBvdGVudGlhbCBmb3IgdGhvc2UgbmFzdHkgbWVtb3J5LXJlbGF0ZWQgYnVncy4KCkkmIzM5O20gY3VyaW91czogaXMgYGF0aDlrX2h0Y2AgYSBVU0IgZHJpdmVyPyBBbmQgZG9lcyBzeXprYWxsZXIgZnV6eiB0aGUgYGF0aDlrX2h0Y2AgZHJpdmVyLCBvciB0aGUgYGF0aDlrYCBkcml2ZXI/IEkmIzM5O2xsIGNoZWNrIHRoZSBLY29uZmlnIGZpbGVzIGZvciBib3RoIGBhdGg5a2AgYW5kIGBhdGg5a19odGNgIGp1c3QgdG8gc2VlIGlmIHRoZXJlIGlzIGFueSBpbnRlcmVzdGluZyBpbmZvcm1hdGlvbiBpbiB0aGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA1OjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0FUSDlLX0hUQyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZz0xMz1jb25maWcgQVRIOUtfQlRDT0VYX1NVUFBPUlRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE0LVx0Ym9vbCBcJiMzNDtBdGhlcm9zIGJsdWV0b290aCBjb2V4aXN0ZW5jZSBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxNTpcdGRlcGVuZHMgb24gKEFUSDlLIHx8IEFUSDlLX0hUQylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE2LVx0ZGVmYXVsdCB5XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc9MTU2PWNvbmZpZyBBVEg5S19QQ0lfTk9fRUVQUk9NXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTcxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTcyOmNvbmZpZyBBVEg5S19IVENcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE3My1cdHRyaXN0YXRlIFwmIzM0O0F0aGVyb3MgSFRDIGJhc2VkIHdpcmVsZXNzIGNhcmRzIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xODYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxODc6Y29uZmlnIEFUSDlLX0hUQ19ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xODgtXHRib29sIFwmIzM0O0F0aGVyb3MgYXRoOWtfaHRjIGRlYnVnZ2luZ1wmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTg5Olx0ZGVwZW5kcyBvbiBBVEg5S19IVEMgXHUwMDI2XHUwMDI2IERFQlVHX0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xOTAtXHRzZWxlY3QgQVRIOUtfQ09NTU9OX0RFQlVHXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc9MjA2PWNvbmZpZyBBVEg5S19DT01NT05fU1BFQ1RSQUxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTIwNy1cdGJvb2wgXCYjMzQ7QXRoZXJvcyBhdGg5ay9hdGg5a19odGMgc3BlY3RyYWwgc2NhbiBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoyMDg6XHRkZXBlbmRzIG9uIEFUSDlLX0RFQlVHRlMgfHwgQVRIOUtfSFRDX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTIwOS1cdHNlbGVjdCBSRUxBWVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZT02OD1hdGg5a19odGMteSAmIzQzOz1cdGh0Y19oc3QubyBcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS03Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZTo3NzphdGg5a19odGMtJChDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlMpICYjNDM7PSBodGNfZHJ2X2RlYnVnLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS03OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZTo3OTpvYmotJChDT05GSUdfQVRIOUtfSFRDKSAmIzQzOz0gYXRoOWtfaHRjLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS04MC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAzX2VlcHJvbS5jPTMzOTA9c3RhdGljIGJvb2wgYXRoOWtfaHdfYXI5MzAwX2ZpbGxfZWVwcm9tKHN0cnVjdCBhdGhfaHcgKmFoKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDNfZWVwcm9tLmMtMzQwMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDNfZWVwcm9tLmM6MzQwMTojaWYgZGVmaW5lZChDT05GSUdfQVRIOUtfREVCVUdGUykgfHwgZGVmaW5lZChDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAzX2VlcHJvbS5jLTM0MDItc3RhdGljIHUzMiBhcjkwMDNfZHVtcF9tb2RhbF9lZXByb20oY2hhciAqYnVmLCB1MzIgbGVuLCB1MzIgc2l6ZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jPTIzMj1zdGF0aWMgaW5saW5lIHZvaWQgYXRoOWtfc2tiX3F1ZXVlX2NvbXBsZXRlKHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2Rldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTIzOC1cdHdoaWxlICgoc2tiID0gX19za2JfZGVxdWV1ZShxdWV1ZSkpICE9IE5VTEwpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6MjM5OiNpZmRlZiBDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMjQwLVx0XHRpbnQgbG4gPSBza2ItXHUwMDNlbGVuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM9Mzc2PXN0YXRpYyBpbnQgaGlmX3VzYl9zZW5kX3R4KHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2Rldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTM5OS1cdC8qIE1nbXQvQmVhY29uIGZyYW1lcyBkb24mIzM5O3QgdXNlIHRoZSBUWCBidWZmZXIgcG9vbCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo0MDA6XHRpZiAoKHR4X2N0bC1cdTAwM2V0eXBlID09IEFUSDlLX0hUQ19NR01UKSB8fFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo0MDE6XHQgICAgKHR4X2N0bC1cdTAwM2V0eXBlID09IEFUSDlLX0hUQ19CRUFDT04pKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQwMi1cdFx0cmV0ID0gaGlmX3VzYl9zZW5kX21nbXQoaGlmX2Rldiwgc2tiKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQwNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NDA3Olx0aWYgKCh0eF9jdGwtXHUwMDNldHlwZSA9PSBBVEg5S19IVENfTk9STUFMKSB8fFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo0MDg6XHQgICAgKHR4X2N0bC1cdTAwM2V0eXBlID09IEFUSDlLX0hUQ19BTVBEVSkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNDA5LVx0XHRfX3NrYl9xdWV1ZV90YWlsKFx1MDAyNmhpZl9kZXYtXHUwMDNldHgudHhfc2tiX3F1ZXVlLCBza2IpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM9NDg3PXN0YXRpYyBpbmxpbmUgYm9vbCBjaGVja19pbmRleChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1OCBpZHgpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00OTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjQ5MzpcdGlmICgodHhfY3RsLVx1MDAzZXR5cGUgPT0gQVRIOUtfSFRDX0FNUERVKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNDk0LVx0ICAgICh0eF9jdGwtXHUwMDNlc3RhX2lkeCA9PSBpZHgpKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD01Nj1lbnVtIGh0Y19vcG1vZGUge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC02NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo2NTojZGVmaW5lIEFUSDlLX0hUQ19BTVBEVSAgMVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjY2OiNkZWZpbmUgQVRIOUtfSFRDX05PUk1BTCAyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6Njc6I2RlZmluZSBBVEg5S19IVENfQkVBQ09OIDNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo2ODojZGVmaW5lIEFUSDlLX0hUQ19NR01UICAgNFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTY5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjcwOiNkZWZpbmUgQVRIOUtfSFRDX1RYX0NUU09OTFkgICAgICAweDFcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo3MTojZGVmaW5lIEFUSDlLX0hUQ19UWF9SVFNDVFMgICAgICAgMHgyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9NzM9c3RydWN0IHR4X2ZyYW1lX2hkciB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTc3LVx0dTggdGlkbm87XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6Nzg6XHRfX2JlMzIgZmxhZ3M7IC8qIEFUSDlLX0hUQ19UWF8qICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNzktXHR1OCBrZXlfdHlwZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9MTk0PXN0cnVjdCBhdGg5a19odGNfdGFyZ2V0X3J4X3N0YXRzIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMTk5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjIwMDojZGVmaW5lIEFUSDlLX0hUQ19NQVhfVklGIDJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyMDE6I2RlZmluZSBBVEg5S19IVENfTUFYX0JDTl9WSUYgMlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTIwMi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9MjQ5PXN0cnVjdCBhdGg5a192aWZfaXRlcl9kYXRhIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMjUzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI1NDojZGVmaW5lIEFUSDlLX0hUQ19NQVhfU1RBIDhcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyNTU6I2RlZmluZSBBVEg5S19IVENfTUFYX1RJRCA4XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMjU2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD0yNjQ9c3RydWN0IGF0aDlrX2h0Y19zdGEge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI2NS1cdHU4IGluZGV4O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI2NjpcdGVudW0gdGlkX2FnZ3Jfc3RhdGUgdGlkX3N0YXRlW0FUSDlLX0hUQ19NQVhfVElEXTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0yNjctXHRzdHJ1Y3Qgd29ya19zdHJ1Y3QgcmNfdXBkYXRlX3dvcms7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI3MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyNzE6I2RlZmluZSBBVEg5S19IVENfUlhCVUYgMjU2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMjcyLSNkZWZpbmUgSFRDX1JYX0ZSQU1FX0hFQURFUl9TSVpFIDQwXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTI4MT1zdHJ1Y3QgYXRoOWtfaHRjX3J4IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMjg2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI4NzojZGVmaW5lIEFUSDlLX0hUQ19UWF9DTEVBTlVQX0lOVEVSVkFMIDUwIC8qIG1zICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6Mjg4OiNkZWZpbmUgQVRIOUtfSFRDX1RYX1RJTUVPVVRfSU5URVJWQUwgMzAwMCAvKiBtcyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI4OTojZGVmaW5lIEFUSDlLX0hUQ19UWF9SRVNFUlZFIDEwXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MjkwOiNkZWZpbmUgQVRIOUtfSFRDX1RYX1RJTUVPVVRfQ09VTlQgNDBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyOTE6I2RlZmluZSBBVEg5S19IVENfVFhfVEhSRVNIT0xEIChNQVhfVFhfQlVGX05VTSAtIEFUSDlLX0hUQ19UWF9SRVNFUlZFKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI5Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyOTM6I2RlZmluZSBBVEg5S19IVENfT1BfVFhfUVVFVUVTX1NUT1AgQklUKDApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6Mjk0OiNkZWZpbmUgQVRIOUtfSFRDX09QX1RYX0RSQUlOICAgICAgIEJJVCgxKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI5NS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9MzExPXN0cnVjdCBhdGg5a19odGNfdHhfY3RsIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDozMTI6XHR1OCB0eXBlOyAvKiBBVEg5S19IVENfKiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTMxMy1cdHU4IGVwaWQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTMxOT1zdGF0aWMgaW5saW5lIHN0cnVjdCBhdGg5a19odGNfdHhfY3RsICpIVENfU0tCX0NCKHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTMyNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDozMjg6I2lmZGVmIENPTkZJR19BVEg5S19IVENfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTMyOS0jZGVmaW5lIF9fU1RBVF9TQUZFKGhpZl9kZXYsIGV4cHIpXHRkbyB7ICgoaGlmX2RldiktXHUwMDNlaHRjX2hhbmRsZS1cdTAwM2VkcnZfcHJpdiA/IChleHByKSA6IDApOyB9IHdoaWxlICgwKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD0zODg9c3RhdGljIGlubGluZSB2b2lkIGF0aDlrX2h0Y19lcnJfc3RhdF9yeChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTM5Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDozOTM6I2VuZGlmIC8qIENPTkZJR19BVEg5S19IVENfREVCVUdGUyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTM5NC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9NDA5PXN0cnVjdCBodGNfYmVhY29uIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNDE1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjQxNjpcdHN0cnVjdCBpZWVlODAyMTFfdmlmICpic2xvdFtBVEg5S19IVENfTUFYX0JDTl9WSUZdO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTQxNy1cdHUzMiBibWlzc2NudDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9NDU2PXN0cnVjdCBhdGg5a19odGNfcHJpdiB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTQ3OC1cdHU4IHN0YV9zbG90O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjQ3OTpcdHU4IHZpZl9zdGFfcG9zW0FUSDlLX0hUQ19NQVhfVklGXTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC00ODAtXHR1OCBudW1faWJzc192aWY7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTUzNS1cdHN0cnVjdCBkZWxheWVkX3dvcmsgZHV0eV9jeWNsZV93b3JrO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjUzNjojaWZkZWYgQ09ORklHX0FUSDlLX0hUQ19ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNTM3LVx0c3RydWN0IGF0aDlrX2RlYnVnIGRlYnVnO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD02NDE9aW50IGF0aDlrX2h0Y19yZXN1bWUoc3RydWN0IGh0Y190YXJnZXQgKmh0Y19oYW5kbGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTY0Mi0jZW5kaWZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo2NDM6I2lmZGVmIENPTkZJR19BVEg5S19IVENfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTY0NC1pbnQgYXRoOWtfaHRjX2luaXRfZGVidWcoc3RydWN0IGF0aF9odyAqYWgpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD02NDg9c3RhdGljIGlubGluZSB2b2lkIGF0aDlrX2h0Y19kZWluaXRfZGVidWcoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC02NTAtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjY1MTojZW5kaWYgLyogQ09ORklHX0FUSDlLX0hUQ19ERUJVR0ZTICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNjUyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jPTExMT1zdGF0aWMgdm9pZCBhdGg5a19odGNfYmVhY29uX2NvbmZpZ19hcChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMTE2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmM6MTE3Olx0YXRoOWtfY21uX2JlYWNvbl9jb25maWdfYXAoYWgsIGNvbmYsIEFUSDlLX0hUQ19NQVhfQkNOX1ZJRik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYy0xMTgtXHRhdGg5a19odGNfYmVhY29uX2luaXQocHJpdiwgY29uZiwgZmFsc2UpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jPTE5MT1zdGF0aWMgdm9pZCBhdGg5a19odGNfc2VuZF9iZWFjb24oc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTI0Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jOjI0MzpcdHR4X2N0bC1cdTAwM2V0eXBlID0gQVRIOUtfSFRDX0JFQUNPTjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTI0NC1cdHR4X2N0bC1cdTAwM2VlcGlkID0gcHJpdi1cdTAwM2ViZWFjb25fZXA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmM9MjY0PXN0YXRpYyBpbnQgYXRoOWtfaHRjX2Nob29zZV9ic2xvdChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMjc2LVx0dHNmdHUgPSBUU0ZfVE9fVFUodHNmIFx1MDAzZVx1MDAzZSAzMiwgdHNmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jOjI3NzpcdHNsb3QgPSAoKHRzZnR1ICUgaW50dmFsKSAqIEFUSDlLX0hUQ19NQVhfQkNOX1ZJRikgLyBpbnR2YWw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYzoyNzg6XHRzbG90ID0gQVRIOUtfSFRDX01BWF9CQ05fVklGIC0gc2xvdCAtIDE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYy0yNzktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmM9MzI1PXZvaWQgYXRoOWtfaHRjX2Fzc2lnbl9ic2xvdChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMzMyLVx0c3Bpbl9sb2NrX2JoKFx1MDAyNnByaXYtXHUwMDNlYmVhY29uX2xvY2spO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmM6MzMzOlx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVRIOUtfSFRDX01BWF9CQ05fVklGOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMzM0LVx0XHRpZiAocHJpdi1cdTAwM2ViZWFjb24uYnNsb3RbaV0gPT0gTlVMTCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jPTM2NT12b2lkIGF0aDlrX2h0Y19zZXRfdHNmYWRqdXN0KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYy0zODAtXHQgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jOjM4MTpcdHRzZmFkanVzdCA9IGN1cl9jb25mLVx1MDAzZWJlYWNvbl9pbnRlcnZhbCAqIGF2cC1cdTAwM2Vic2xvdCAvIEFUSDlLX0hUQ19NQVhfQkNOX1ZJRjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTM4Mi1cdGF2cC1cdTAwM2V0c2ZhZGp1c3QgPSBjcHVfdG9fbGU2NChUVV9UT19VU0VDKHRzZmFkanVzdCkpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM9Mzk4PXN0YXRpYyBjb25zdCBjaGFyIGF0aDlrX2h0Y19nc3RyaW5nc19zdGF0c1tdW0VUSF9HU1RSSU5HX0xFTl0gPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYy00MTgtfTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM6NDE5OiNkZWZpbmUgQVRIOUtfSFRDX1NTVEFUU19MRU4gQVJSQVlfU0laRShhdGg5a19odGNfZ3N0cmluZ3Nfc3RhdHMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jLTQyMC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jPTQzMD1pbnQgYXRoOWtfaHRjX2dldF9ldF9zc2V0X2NvdW50KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMtNDMzLVx0aWYgKHNzZXQgPT0gRVRIX1NTX1NUQVRTKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYzo0MzQ6XHRcdHJldHVybiBBVEg5S19IVENfU1NUQVRTX0xFTjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMtNDM1LVx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYz00NDg9dm9pZCBhdGg5a19odGNfZ2V0X2V0X3N0YXRzKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMtNDczLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYzo0NzQ6XHRXQVJOX09OKGkgIT0gQVRIOUtfSFRDX1NTVEFUU19MRU4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYy00NzUtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYz02MDY9c3RhdGljIGludCBhdGg5a19pbml0X3ByaXYoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy02NzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM6Njc0Olx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVRIOUtfSFRDX01BWF9CQ05fVklGOyBpJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy02NzUtXHRcdHByaXYtXHUwMDNlYmVhY29uLmJzbG90W2ldID0gTlVMTDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM9MTg0PXZvaWQgYXRoOWtfaHRjX3Jlc2V0KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMjMzLVx0bW9kX3RpbWVyKFx1MDAyNnByaXYtXHUwMDNldHguY2xlYW51cF90aW1lcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzoyMzQ6XHRcdCAgamlmZmllcyAmIzQzOyBtc2Vjc190b19qaWZmaWVzKEFUSDlLX0hUQ19UWF9DTEVBTlVQX0lOVEVSVkFMKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMjM1LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYz0yNDA9c3RhdGljIGludCBhdGg5a19odGNfc2V0X2NoYW5uZWwoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0zMTEtXHRtb2RfdGltZXIoXHUwMDI2cHJpdi1cdTAwM2V0eC5jbGVhbnVwX3RpbWVyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjMxMjpcdFx0ICBqaWZmaWVzICYjNDM7IG1zZWNzX3RvX2ppZmZpZXMoQVRIOUtfSFRDX1RYX0NMRUFOVVBfSU5URVJWQUwpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0zMTMtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jPTM1MD1zdGF0aWMgaW50IGF0aDlrX2h0Y19hZGRfbW9uaXRvcl9pbnRlcmZhY2Uoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0zNTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6MzU4Olx0aWYgKChwcml2LVx1MDAzZW52aWZzIFx1MDAzZT0gQVRIOUtfSFRDX01BWF9WSUYpIHx8XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6MzU5Olx0ICAgIChwcml2LVx1MDAzZW5zdGF0aW9ucyBcdTAwM2U9IEFUSDlLX0hUQ19NQVhfU1RBKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTM2MC1cdFx0cmV0ID0gLUVOT0JVRlM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTM2NC1cdHN0YV9pZHggPSBmZnoocHJpdi1cdTAwM2VzdGFfc2xvdCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6MzY1Olx0aWYgKChzdGFfaWR4IFx1MDAzYyAwKSB8fCAoc3RhX2lkeCBcdTAwM2UgQVRIOUtfSFRDX01BWF9TVEEpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMzY2LVx0XHRyZXQgPSAtRU5PQlVGUztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM9NDY2PXN0YXRpYyBpbnQgYXRoOWtfaHRjX2FkZF9zdGF0aW9uKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtNDc3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjQ3ODpcdGlmIChwcml2LVx1MDAzZW5zdGF0aW9ucyBcdTAwM2U9IEFUSDlLX0hUQ19NQVhfU1RBKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTQ3OS1cdFx0cmV0dXJuIC1FTk9CVUZTO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy00ODEtXHRzdGFfaWR4ID0gZmZ6KHByaXYtXHUwMDNlc3RhX3Nsb3QpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjQ4MjpcdGlmICgoc3RhX2lkeCBcdTAwM2MgMCkgfHwgKHN0YV9pZHggXHUwMDNlIEFUSDlLX0hUQ19NQVhfU1RBKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy00ODMtXHRcdHJldHVybiAtRU5PQlVGUztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM9NzAyPXN0YXRpYyBpbnQgYXRoOWtfaHRjX3R4X2FnZ3Jfb3BlcihzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTcxMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzo3MTQ6XHRpZiAodGlkIFx1MDAzZT0gQVRIOUtfSFRDX01BWF9USUQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtNzE1LVx0XHRyZXR1cm4gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM9OTA3PXN0YXRpYyBpbnQgYXRoOWtfaHRjX3N0YXJ0KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy05NjAtXHRzcGluX2xvY2tfYmgoXHUwMDI2cHJpdi1cdTAwM2V0eC50eF9sb2NrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzo5NjE6XHRwcml2LVx1MDAzZXR4LmZsYWdzIFx1MDAyNj0gfkFUSDlLX0hUQ19PUF9UWF9RVUVVRVNfU1RPUDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy05NjItXHRzcGluX3VubG9ja19iaChcdTAwMjZwcml2LVx1MDAzZXR4LnR4X2xvY2spO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy05NjYtXHRtb2RfdGltZXIoXHUwMDI2cHJpdi1cdTAwM2V0eC5jbGVhbnVwX3RpbWVyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjk2NzpcdFx0ICBqaWZmaWVzICYjNDM7IG1zZWNzX3RvX2ppZmZpZXMoQVRIOUtfSFRDX1RYX0NMRUFOVVBfSU5URVJWQUwpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy05NjgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jPTE2NTg9c3RhdGljIGludCBhdGg5a19odGNfYW1wZHVfYWN0aW9uKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0xNjg4LVx0Y2FzZSBJRUVFODAyMTFfQU1QRFVfVFhfT1BFUkFUSU9OQUw6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6MTY4OTpcdFx0aWYgKHRpZCBcdTAwM2U9IEFUSDlLX0hUQ19NQVhfVElEKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMTY5MC1cdFx0XHRyZXQgPSAtRUlOVkFMO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYz0xODc0PXN0cnVjdCBpZWVlODAyMTFfb3BzIGF0aDlrX2h0Y19vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTE5MDYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6MTkwNzojaWZkZWYgQ09ORklHX0FUSDlLX0hUQ19ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMTkwOC1cdC5nZXRfZXRfc3NldF9jb3VudCAgPSBhdGg5a19odGNfZ2V0X2V0X3NzZXRfY291bnQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTIzPXN0YXRpYyBjb25zdCBpbnQgc3VidHlwZV90eHFfdG9faHdxW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTI5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjMwOiNkZWZpbmUgQVRIOUtfSFRDX0lOSVRfVFhRKHN1YnR5cGUpIGRvIHtcdFx0XHRcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTMxLVx0XHRxaS50cWlfc3VidHlwZSA9IHN1YnR5cGVfdHhxX3RvX2h3cVtzdWJ0eXBlXTtcdFxcXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTU2PXZvaWQgYXRoOWtfaHRjX2NoZWNrX3N0b3BfcXVldWVzKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNTktXHRwcml2LVx1MDAzZXR4LnF1ZXVlZF9jbnQmIzQzOyYjNDM7O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjYwOlx0aWYgKChwcml2LVx1MDAzZXR4LnF1ZXVlZF9jbnQgXHUwMDNlPSBBVEg5S19IVENfVFhfVEhSRVNIT0xEKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo2MTpcdCAgICAhKHByaXYtXHUwMDNldHguZmxhZ3MgXHUwMDI2IEFUSDlLX0hUQ19PUF9UWF9RVUVVRVNfU1RPUCkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo2MjpcdFx0cHJpdi1cdTAwM2V0eC5mbGFncyB8PSBBVEg5S19IVENfT1BfVFhfUVVFVUVTX1NUT1A7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNjMtXHRcdGllZWU4MDIxMV9zdG9wX3F1ZXVlcyhwcml2LVx1MDAzZWh3KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9Njg9dm9pZCBhdGg5a19odGNfY2hlY2tfd2FrZV9xdWV1ZXMoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy03MC1cdHNwaW5fbG9ja19iaChcdTAwMjZwcml2LVx1MDAzZXR4LnR4X2xvY2spO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjcxOlx0aWYgKChwcml2LVx1MDAzZXR4LnF1ZXVlZF9jbnQgXHUwMDNjIEFUSDlLX0hUQ19UWF9USFJFU0hPTEQpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjcyOlx0ICAgIChwcml2LVx1MDAzZXR4LmZsYWdzIFx1MDAyNiBBVEg5S19IVENfT1BfVFhfUVVFVUVTX1NUT1ApKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NzM6XHRcdHByaXYtXHUwMDNldHguZmxhZ3MgXHUwMDI2PSB+QVRIOUtfSFRDX09QX1RYX1FVRVVFU19TVE9QO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTc0LVx0XHRpZWVlODAyMTFfd2FrZV9xdWV1ZXMocHJpdi1cdTAwM2Vodyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTIxND1zdGF0aWMgdm9pZCBhdGg5a19odGNfdHhfbWdtdChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTI0MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzoyNDE6XHR0eF9jdGwtXHUwMDNldHlwZSA9IEFUSDlLX0hUQ19NR01UO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTI0Mi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9MjYwPXN0YXRpYyB2b2lkIGF0aDlrX2h0Y190eF9kYXRhKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMjkyLVx0aWYgKHR4X2luZm8tXHUwMDNlZmxhZ3MgXHUwMDI2IElFRUU4MDIxMV9UWF9DVExfQU1QRFUpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzoyOTM6XHRcdHR4X2N0bC1cdTAwM2V0eXBlID0gQVRIOUtfSFRDX0FNUERVO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjI5NDpcdFx0dHhfaGRyLmRhdGFfdHlwZSA9IEFUSDlLX0hUQ19BTVBEVTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0yOTUtXHR9IGVsc2Uge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjI5NjpcdFx0dHhfY3RsLVx1MDAzZXR5cGUgPSBBVEg5S19IVENfTk9STUFMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjI5NzpcdFx0dHhfaGRyLmRhdGFfdHlwZSA9IEFUSDlLX0hUQ19OT1JNQUw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMjk4LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0zMTItXHRcdGlmIChza2ItXHUwMDNlbGVuIFx1MDAzZSBwcml2LVx1MDAzZWh3LVx1MDAzZXdpcGh5LVx1MDAzZXJ0c190aHJlc2hvbGQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6MzEzOlx0XHRcdGZsYWdzIHw9IEFUSDlLX0hUQ19UWF9SVFNDVFM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMzE0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTMxNS1cdC8qIENUUy10by1zZWxmICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6MzE2Olx0aWYgKCEoZmxhZ3MgXHUwMDI2IEFUSDlLX0hUQ19UWF9SVFNDVFMpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTMxNy1cdCAgICAodmlmIFx1MDAyNlx1MDAyNiB2aWYtXHUwMDNlYnNzX2NvbmYudXNlX2N0c19wcm90KSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzozMTg6XHRcdGZsYWdzIHw9IEFUSDlLX0hUQ19UWF9DVFNPTkxZO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTMxOS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9MzkyPXN0YXRpYyBpbmxpbmUgYm9vbCBfX2F0aDlrX2h0Y19jaGVja190eF9hZ2dyKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMzk3LVx0c3Bpbl9sb2NrX2JoKFx1MDAyNnByaXYtXHUwMDNldHgudHhfbG9jayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6Mzk4Olx0aWYgKCh0aWQgXHUwMDNjIEFUSDlLX0hUQ19NQVhfVElEKSBcdTAwMjZcdTAwMjYgKGlzdGEtXHUwMDNldGlkX3N0YXRlW3RpZF0gPT0gQUdHUl9TVE9QKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0zOTktXHRcdHJldCA9IHRydWU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTQ0NT1zdGF0aWMgdm9pZCBhdGg5a19odGNfdHhfcHJvY2VzcyhzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ3OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo0Nzk6XHRpZiAodHhzLVx1MDAzZXRzX2ZsYWdzIFx1MDAyNiBBVEg5S19IVENfVFhTVEFUX0FDSykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ4MC1cdFx0dHhfaW5mby1cdTAwM2VmbGFncyB8PSBJRUVFODAyMTFfVFhfU1RBVF9BQ0s7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ4NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo0ODU6XHRpZiAodHhzLVx1MDAzZXRzX2ZsYWdzIFx1MDAyNiBBVEg5S19IVENfVFhTVEFUX0ZJTFQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDg2LVx0XHR0eF9pbmZvLVx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9UWF9TVEFUX1RYX0ZJTFRFUkVEO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ4Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo0ODg6XHRpZiAodHhzLVx1MDAzZXRzX2ZsYWdzIFx1MDAyNiBBVEg5S19IVENfVFhTVEFUX1JUQ19DVFMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDg5LVx0XHRyYXRlLVx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9UWF9SQ19VU0VfUlRTX0NUUztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDkxLVx0cmF0ZS1cdTAwM2Vjb3VudCA9IDE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NDkyOlx0cmF0ZS1cdTAwM2VpZHggPSBNUyh0eHMtXHUwMDNldHNfcmF0ZSwgQVRIOUtfSFRDX1RYU1RBVF9SQVRFKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00OTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NDk0Olx0aWYgKHR4cy1cdTAwM2V0c19mbGFncyBcdTAwMjYgQVRIOUtfSFRDX1RYU1RBVF9NQ1MpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00OTUtXHRcdHJhdGUtXHUwMDNlZmxhZ3MgfD0gSUVFRTgwMjExX1RYX1JDX01DUztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00OTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NDk3Olx0XHRpZiAodHhzLVx1MDAzZXRzX2ZsYWdzIFx1MDAyNiBBVEg5S19IVENfVFhTVEFUX0NXNDApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDk4LVx0XHRcdHJhdGUtXHUwMDNlZmxhZ3MgfD0gSUVFRTgwMjExX1RYX1JDXzQwX01IWl9XSURUSDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo0OTk6XHRcdGlmICh0eHMtXHUwMDNldHNfZmxhZ3MgXHUwMDI2IEFUSDlLX0hUQ19UWFNUQVRfU0dJKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTUwMC1cdFx0XHRyYXRlLVx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9UWF9SQ19TSE9SVF9HSTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9NTM5PXZvaWQgYXRoOWtfaHRjX3R4X2RyYWluKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNTQzLVx0c3Bpbl9sb2NrX2JoKFx1MDAyNnByaXYtXHUwMDNldHgudHhfbG9jayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NTQ0Olx0cHJpdi1cdTAwM2V0eC5mbGFncyB8PSBBVEg5S19IVENfT1BfVFhfRFJBSU47XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNTQ1LVx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2cHJpdi1cdTAwM2V0eC50eF9sb2NrKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNTczLVx0c3Bpbl9sb2NrX2JoKFx1MDAyNnByaXYtXHUwMDNldHgudHhfbG9jayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NTc0Olx0cHJpdi1cdTAwM2V0eC5mbGFncyBcdTAwMjY9IH5BVEg5S19IVENfT1BfVFhfRFJBSU47XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNTc1LVx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2cHJpdi1cdTAwM2V0eC50eF9sb2NrKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9NTc4PXZvaWQgYXRoOWtfdHhfZmFpbGVkX3Rhc2tsZXQoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy01ODItXHRzcGluX2xvY2soXHUwMDI2cHJpdi1cdTAwM2V0eC50eF9sb2NrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo1ODM6XHRpZiAocHJpdi1cdTAwM2V0eC5mbGFncyBcdTAwMjYgQVRIOUtfSFRDX09QX1RYX0RSQUlOKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNTg0LVx0XHRzcGluX3VubG9jayhcdTAwMjZwcml2LVx1MDAzZXR4LnR4X2xvY2spO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz02MTg9c3RhdGljIHN0cnVjdCBza19idWZmKiBhdGg5a19odGNfdHhfZ2V0X3BhY2tldChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTYyNC1cdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NjI1Olx0dTggZXBpZCA9IE1TKHR4cy1cdTAwM2V0c19yYXRlLCBBVEg5S19IVENfVFhTVEFUX0VQSUQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTYyNi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9NzE2PXN0YXRpYyBpbmxpbmUgYm9vbCBjaGVja19wYWNrZXQoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy03MjQtXHRcdCAgICAgICB0eF9jdGwtXHUwMDNldGltZXN0YW1wICYjNDM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NzI1Olx0XHQgICAgICAgbXNlY3NfdG9famlmZmllcyhBVEg5S19IVENfVFhfVElNRU9VVF9JTlRFUlZBTCkpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNzI2LVx0XHRhdGhfZGJnKGNvbW1vbiwgWE1JVCwgXCYjMzQ7RHJvcHBpbmcgYSBwYWNrZXQgZHVlIHRvIFRYIHRpbWVvdXRcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz03NjE9dm9pZCBhdGg5a19odGNfdHhfY2xlYW51cF90aW1lcihzdHJ1Y3QgdGltZXJfbGlzdCAqdClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNzc2LVx0XHRcdFx0ZXZlbnQtXHUwMDNldHhzLmNvb2tpZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo3Nzc6XHRcdFx0XHRNUyhldmVudC1cdTAwM2V0eHMudHNfcmF0ZSwgQVRIOUtfSFRDX1RYU1RBVF9FUElEKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNzc4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy03ODQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6Nzg1Olx0XHRpZiAoJiM0MzsmIzQzO2V2ZW50LVx1MDAzZWNvdW50IFx1MDAzZT0gQVRIOUtfSFRDX1RYX1RJTUVPVVRfQ09VTlQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy03ODYtXHRcdFx0bGlzdF9kZWwoXHUwMDI2ZXZlbnQtXHUwMDNlbGlzdCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTgwNS1cdG1vZF90aW1lcihcdTAwMjZwcml2LVx1MDAzZXR4LmNsZWFudXBfdGltZXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6ODA2Olx0XHQgIGppZmZpZXMgJiM0MzsgbXNlY3NfdG9famlmZmllcyhBVEg5S19IVENfVFhfQ0xFQU5VUF9JTlRFUlZBTCkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTgwNy19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTgyNz1ib29sIGF0aDlrX2h0Y190eHFfc2V0dXAoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LCBpbnQgc3VidHlwZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtODM0LVx0bWVtc2V0KFx1MDAyNnFpLCAwLCBzaXplb2YocWkpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo4MzU6XHRBVEg5S19IVENfSU5JVF9UWFEoc3VidHlwZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtODM2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz04NTI9aW50IGF0aDlrX2h0Y19jYWJxX3NldHVwKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtODU2LVx0bWVtc2V0KFx1MDAyNnFpLCAwLCBzaXplb2YocWkpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo4NTc6XHRBVEg5S19IVENfSU5JVF9UWFEoMCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtODU4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz0xMTg3PWludCBhdGg5a19yeF9pbml0KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMTE5My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzoxMTk0Olx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVRIOUtfSFRDX1JYQlVGOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTExOTUtXHRcdHN0cnVjdCBhdGg5a19odGNfcnhidWYgKnJ4YnVmID1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmM9MTM4PXZvaWQgYXRoOWtfd21pX2V2ZW50X3Rhc2tsZXQoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYy0xNzgtXHRcdFx0c3Bpbl9sb2NrX2JoKFx1MDAyNnByaXYtXHUwMDNldHgudHhfbG9jayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmM6MTc5Olx0XHRcdGlmIChwcml2LVx1MDAzZXR4LmZsYWdzIFx1MDAyNiBBVEg5S19IVENfT1BfVFhfRFJBSU4pIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYy0xODAtXHRcdFx0XHRzcGluX3VubG9ja19iaChcdTAwMjZwcml2LVx1MDAzZXR4LnR4X2xvY2spO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaD0zOT1zdHJ1Y3Qgd21pX2V2ZW50X3N3YmEge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaC01MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo1MTojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfQUNLICAgICAgICBCSVQoMClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo1MjojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfRklMVCAgICAgICBCSVQoMSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo1MzojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfUlRDX0NUUyAgICBCSVQoMilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo1NDojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfTUNTICAgICAgICBCSVQoMylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo1NTojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfQ1c0MCAgICAgICBCSVQoNClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo1NjojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfU0dJICAgICAgICBCSVQoNSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaC01Ny1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmgtNjMtICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6NjQ6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX1JBVEUgICAgICAgMHgwZlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oOjY1OiNkZWZpbmUgQVRIOUtfSFRDX1RYU1RBVF9SQVRFX1MgICAgIDBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaC02Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo2NzojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfRVBJRCAgICAgICAweGYwXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6Njg6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX0VQSURfUyAgICAgNFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oLTY5LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA1OjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMjc3CgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqQW5hbHl6aW5nIGBhdGhfY21uX3Byb2Nlc3NfZmZ0YCBDYWxscyBpbiBhdGg5ayBhbmQgYXRoOWtfaHRjKioKCk9rYXksIHNvIEkgbmVlZCB0byBkaWcgaW50byB0aGUgdXNhZ2Ugb2YgYGF0aF9jbW5fcHJvY2Vzc19mZnRgLiBNeSBpbml0aWFsIGdvYWwgaXMgdG8gdW5kZXJzdGFuZCBob3cgaXQmIzM5O3MgaW1wbGVtZW50ZWQgYW5kLCBtb3JlIGltcG9ydGFudGx5LCAqd2hlcmUqIGl0JiMzOTtzIGJlaW5nIGNhbGxlZCB3aXRoaW4gdGhlIGBhdGg5a2AgYW5kIGBhdGg5a19odGNgIGRyaXZlcnMuIEkgc3VzcGVjdCB0aGVyZSB3aWxsIGJlIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIHR3bywgZ2l2ZW4gdGhlIGFyY2hpdGVjdHVyYWwgZGlzdGluY3Rpb25zIChQQ0kgdnMuIFVTQikuIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgaXQmIzM5O3MgYmVpbmcgdXNlZCBmb3IgY2hhbm5lbCBlc3RpbWF0aW9uLCBkYXRhIGRlbW9kdWxhdGlvbiwgb3IgcGVyaGFwcyBzb21lIG90aGVyIHNpZ25hbCBwcm9jZXNzaW5nIHN0YWdlLiBJIHdpbGwgbG9vayBmb3IgY2FsbHMgdG8gdGhpcyBmdW5jdGlvbiwga2VlcGluZyBpbiBtaW5kIHRoZSBoYXJkd2FyZSBkaWZmZXJlbmNlcy4gSSBhbnRpY2lwYXRlIHRoZXJlIHdpbGwgYmUgZGlmZmVyZW5jZXMgaW4gdGhlIGNhbGxpbmcgY29udGV4dCBhbmQgcGFyYW1ldGVycyB1c2VkIGluIGVhY2ggZHJpdmVyLiBBcm1lZCB3aXRoIHRoaXMga25vd2xlZGdlLCBJIGNhbiBzdGFydCBmb3JtaW5nIGEgbW9yZSBob2xpc3RpYyB1bmRlcnN0YW5kaW5nIG9mIHRoZSByb2xlIGBhdGhfY21uX3Byb2Nlc3NfZmZ0YCBwbGF5cyBpbiB0aGVzZSBkcml2ZXJzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA1OjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2F0aF9jbW5fcHJvY2Vzc19mZnQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jPTQ2OD1zdGF0aWMgdm9pZCBhdGhfY21uX2NvdW50X2ZmdF9zYW1wbGUoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy00ODItLyogcmV0dXJucyAxIGlmIHRoaXMgd2FzIGEgc3BlY3RyYWwgZnJhbWUsIGV2ZW4gaWYgbm90IGhhbmRsZWQuICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6NDgzOmludCBhdGhfY21uX3Byb2Nlc3NfZmZ0KHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiwgc3RydWN0IGllZWU4MDIxMV9oZHIgKmhkcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy00ODQtXHRcdCAgICBzdHJ1Y3QgYXRoX3J4X3N0YXR1cyAqcnMsIHU2NCB0c2YpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTY5MC19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6NjkxOkVYUE9SVF9TWU1CT0woYXRoX2Ntbl9wcm9jZXNzX2ZmdCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNjkyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaD0xODM9aW50IGF0aDlrX2Ntbl9zcGVjdHJhbF9zY2FuX2NvbmZpZyhzdHJ1Y3QgYXRoX2NvbW1vbiAqY29tbW9uLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaC0xODUtXHRcdFx0ICAgICAgIGVudW0gc3BlY3RyYWxfbW9kZSBzcGVjdHJhbF9tb2RlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaDoxODY6aW50IGF0aF9jbW5fcHJvY2Vzc19mZnQoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LCBzdHJ1Y3QgaWVlZTgwMjExX2hkciAqaGRyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oLTE4Ny1cdFx0ICAgIHN0cnVjdCBhdGhfcnhfc3RhdHVzICpycywgdTY0IHRzZik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oPTE5OT1zdGF0aWMgaW5saW5lIHZvaWQgYXRoOWtfY21uX3NwZWN0cmFsX3NjYW5fdHJpZ2dlcihzdHJ1Y3QgYXRoX2NvbW1vbiAqY29tbW9uLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaC0yMDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmg6MjA0OnN0YXRpYyBpbmxpbmUgaW50IGF0aF9jbW5fcHJvY2Vzc19mZnQoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oLTIwNS1cdFx0XHRcdCAgICAgIHN0cnVjdCBpZWVlODAyMTFfaGRyICpoZHIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTk3Mj1zdGF0aWMgYm9vbCBhdGg5a19yeF9wcmVwYXJlKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMTA0Ny1cdFx0LyogVE9ETzogTm90IHVzaW5nIERGUyBwcm9jZXNzaW5nIG5vdy4gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzoxMDQ4Olx0XHRpZiAoYXRoX2Ntbl9wcm9jZXNzX2ZmdChcdTAwMjZwcml2LVx1MDAzZXNwZWNfcHJpdiwgaGRyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTEwNDktXHRcdFx0XHQgICAgXHUwMDI2cnhfc3RhdHMsIHJ4X3N0YXR1cy1cdTAwM2VtYWN0aW1lKSkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9yZWN2LmM9ODA2PXN0YXRpYyBpbnQgYXRoOWtfcnhfc2tiX3ByZXByb2Nlc3Moc3RydWN0IGF0aF9zb2Z0YyAqc2MsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3JlY3YuYy04ODMtXHRcdH0gZWxzZSBpZiAoc2MtXHUwMDNlc3BlY19wcml2LnNwZWN0cmFsX21vZGUgIT0gU1BFQ1RSQUxfRElTQUJMRUQgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvcmVjdi5jOjg4NDpcdFx0XHQgICBhdGhfY21uX3Byb2Nlc3NfZmZ0KFx1MDAyNnNjLVx1MDAzZXNwZWNfcHJpdiwgaGRyLCByeF9zdGF0cyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9yZWN2LmMtODg1LVx0XHRcdFx0XHQgICAgICAgcnhfc3RhdHVzLVx1MDAzZW1hY3RpbWUpKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDU6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE1MTAKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiA0MDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBgYXRoOWtfaHRjYCBVU0IgV2lyZWxlc3MgRHJpdmVyKioKCk9rYXksIHNvIGBhdGg5a19odGNgIOKAkyB0aGF0JiMzOTtzIGEgVVNCIHdpcmVsZXNzIGRyaXZlciwgcmlnaHQ/IEludGVyZXN0aW5nLiBUaGlzIG1lYW5zIEkgY2FuIHByb2JhYmx5IHJlYWNoIGl0IGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVGhpbmsgUUVNVSB3aXRoIFVTQiBlbXVsYXRpb24sIG9yIGV2ZW4gcmF3X2dhZGdldCBzZXR1cHMuIEFuZCBvZiBjb3Vyc2UsIHRoZXJlJiMzOTtzIHN5emthbGxlciB3aXRoIGl0cyBVU0IgZnV6emluZyBjYXBhYmlsaXRpZXMsIGVzcGVjaWFsbHkgdGhlIGBzeXpfdXNiX2Nvbm5lY3RgIGNhbGwuIE5vdywgdGhlIGtleSBxdWVzdGlvbiBpczogaGFzIHN5emthbGxlciBhY3R1YWxseSAqZnV6emVkKiBgYXRoOWtfaHRjYD8gSSBuZWVkIHRvIGNoZWNrIGlmIHN5emthbGxlciBoYXMgZGVzY3JpcHRpb25zIGZvciBpdC4gT3IsIGV2ZW4gc2ltcGxlciwgaWYgVVNCIGRldmljZXMgYXJlIGtub3duIHRvIHByb2JlIGBhdGg5a19odGNgLgoKUmlnaHQsIGxldCYjMzk7cyBzZWUuIEluIHRoZSBMaW51eCBrZXJuZWwsIEkga25vdyB0aGF0IGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jYCBpcyB0aGUgbGlrZWx5IGxvY2F0aW9uIGJlY2F1c2UgaXQgcmVnaXN0ZXJzIGEgYHVzYl9kcml2ZXJgLiBUaW1lIHRvIGRpZyBpbnRvIGBoaWZfdXNiLmNgLiBJJiMzOTttIGxvb2tpbmcgZm9yIFVTQiBJRHMg4oCTIHNwZWNpZmljIFZJRC9QSURzLiBBaCwgdGhlcmUgdGhleSBhcmU6IEFSOTI3MSwgQVI3MDEwLCB0aGUgdXN1YWwgc3VzcGVjdHMgKFVTQl9ERVZJQ0UoMHgwY2YzLCAweDkyNzEpLCBhbmQgc28gb24pLiBUaGF0JiMzOTtzIHRoZSBob29rLgoKU28sIHdoZW4gYSBVU0IgZGV2aWNlIG1hdGNoaW5nIHRob3NlIFZJRC9QSURzIGdldHMgY29ubmVjdGVkIOKAkyBsaWtlIHRocm91Z2ggc3l6a2FsbGVyJiMzOTtzIGBzeXpfdXNiX2Nvbm5lY3RgIOKAkyB0aGUgZHJpdmVyICpzaG91bGQqIHByb2JlLiBUaGVuLCBpdCBzZXRzIHVwIGBkZWJ1Z2ZzYCBpZiBgQ09ORklHX0FUSDlLX0hUQ19ERUJVR0ZTYCBvciBgQ09ORklHX0FUSDlLX0NPTU1PTl9TUEVDVFJBTGAgYXJlIGVuYWJsZWQuIEFuZCBmcm9tIHRoZXJlLCBpdCYjMzk7cyBhbGwgYWJvdXQgcmVjZWl2aW5nIHBhY2tldHMgdmlhIFVTQiBVUkJzIChgYXRoOWtfaHRjX3J4X21zZ2AsIGBhdGg5a19yeF9wcmVwYXJlYCksIGFuZCBwcm9jZXNzaW5nIHRob3NlIHNwZWN0cmFsIHNjYW4gRkZUIGZyYW1lcyAoYGF0aF9jbW5fcHJvY2Vzc19mZnRgKS4KCkhvbGQgb24uLi4gSSBqdXN0IHJlbWVtYmVyZWQgc29tZXRoaW5nIGltcG9ydGFudC4gU3BlY3RyYWwgc2NhbiBjb25maWd1cmF0aW9uIG9yIHJlbGF5IGZpbGVzIHdpdGhpbiBgZGVidWdmc2AgY2FuIGFsc28gYmUgZGlyZWN0bHkgdHJpZ2dlcmVkIGZyb20gdXNlciBzcGFjZS4gSSBuZWVkIHRvIGtlZXAgdGhhdCBpbiBtaW5kLgoKT2theSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnRzIGFuZCBkZXBlbmRlbmNpZXMgbW9yZS4gVGltZSB0byBkaXZlIGludG8gdGhlIEtjb25maWcgZm9yIGBhdGg5a2A6IGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZ2AuIEkmIzM5O2xsIGZvY3VzIG9uIGBDT05GSUdfQVRIOUtfQ09NTU9OX1NQRUNUUkFMYCwgYENPTkZJR19BVEg5S2AsIGBDT05GSUdfQVRIOUtfSFRDYCwgYENPTkZJR19BVEg5S19ERUJVR0ZTYCwgYW5kIGBDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlNgIHRvIGdldCB0aGUgZnVsbCBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwNTo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTY1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDU1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxNjU6XHRcdCAgb2YgcmVhY2ggZm9yIHRoZSBhdGg5ayBjaGlwLlxuIDE2NjpcdFxuIDE2NzpcdFx0ICBUaGVzZSBkZXZpY2VzIGFyZSB1c3VhbGx5IHZhcmlvdXMgbmV0d29yayBhcHBsaWFuY2VzLCByb3V0ZXJzIG9yXG4gMTY4Olx0XHQgIGFjY2VzcyBQb2ludHMgYW5kIHN1Y2guXG4gMTY5Olx0XG4gMTcwOlx0XHQgIElmIHVuc3VyZSBzYXkgTi5cbiAxNzE6XHRcbiAxNzI6XHRjb25maWcgQVRIOUtfSFRDXG4gMTczOlx0XHR0cmlzdGF0ZSBcJiMzNDtBdGhlcm9zIEhUQyBiYXNlZCB3aXJlbGVzcyBjYXJkcyBzdXBwb3J0XCYjMzQ7XG4gMTc0Olx0XHRkZXBlbmRzIG9uIFVTQiBcdTAwMjZcdTAwMjYgTUFDODAyMTFcbiAxNzU6XHRcdHNlbGVjdCBNQUM4MDIxMV9MRURTIGlmIExFRFNfQ0xBU1M9eSB8fCBMRURTX0NMQVNTPU1BQzgwMjExXG4gMTc2Olx0XHRzZWxlY3QgQVRIOUtfSFdcbiAxNzc6XHRcdHNlbGVjdCBBVEg5S19DT01NT05cbiAxNzg6XHRcdGhlbHBcbiAxNzk6XHRcdCAgU3VwcG9ydCBmb3IgQXRoZXJvcyBIVEMgYmFzZWQgY2FyZHMuXG4gMTgwOlx0XHQgIENoaXBzZXRzIHN1cHBvcnRlZDogQVI5MjcxXG4gMTgxOlx0XG4gMTgyOlx0XHQgIEZvciBtb3JlIGluZm9ybWF0aW9uOlxuIDE4MzpcdFx0ICBodHRwczovL3dpcmVsZXNzLndpa2kua2VybmVsLm9yZy9lbi91c2Vycy9Ecml2ZXJzL2F0aDlrX2h0Y1xuIDE4NDpcdFxuIDE4NTpcdFx0ICBUaGUgYnVpbHQgbW9kdWxlIHdpbGwgYmUgYXRoOWtfaHRjLlxuIDE4NjpcdFxuIDE4NzpcdGNvbmZpZyBBVEg5S19IVENfREVCVUdGU1xuIDE4ODpcdFx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDlrX2h0YyBkZWJ1Z2dpbmdcJiMzNDtcbiAxODk6XHRcdGRlcGVuZHMgb24gQVRIOUtfSFRDIFx1MDAyNlx1MDAyNiBERUJVR19GU1xuIDE5MDpcdFx0c2VsZWN0IEFUSDlLX0NPTU1PTl9ERUJVR1xuIDE5MTpcdFx0aGVscFxuIDE5MjpcdFx0ICBTYXkgWSwgaWYgeW91IG5lZWQgYWNjZXNzIHRvIGF0aDlrX2h0YyYjMzk7cyBzdGF0aXN0aWNzLlxuIDE5MzpcdFx0ICBBcyB3ZWxsIGFzIGFjY2VzcyB0byB0aGUgRkZUL3NwZWN0cmFsIGRhdGEuXG4gMTk0Olx0XG4gMTk1Olx0Y29uZmlnIEFUSDlLX0hXUk5HXG4gMTk2Olx0XHRib29sIFwmIzM0O1JhbmRvbSBudW1iZXIgZ2VuZXJhdG9yIHN1cHBvcnRcJiMzNDtcbiAxOTc6XHRcdGRlcGVuZHMgb24gQVRIOUsgXHUwMDI2XHUwMDI2IChIV19SQU5ET00gPSB5IHx8IEhXX1JBTkRPTSA9IEFUSDlLKVxuIDE5ODpcdFx0ZGVmYXVsdCBuXG4gMTk5Olx0XHRoZWxwXG4gMjAwOlx0XHQgIFRoaXMgb3B0aW9uIGluY29ycG9yYXRlcyB0aGUgQURDIHJlZ2lzdGVyIG91dHB1dCBhcyBhIHNvdXJjZSBvZlxuIDIwMTpcdFx0ICByYW5kb21uZXNzIGludG8gTGludXggZW50cm9weSBwb29sICgvZGV2L3VyYW5kb20gYW5kIC9kZXYvcmFuZG9tKVxuIDIwMjpcdFxuIDIwMzpcdFx0ICBTYXkgWSwgZmVlZHMgdGhlIGVudHJvcHkgZGlyZWN0bHkgZnJvbSB0aGUgV2lGaSBkcml2ZXIgdG8gdGhlIGlucHV0XG4gMjA0Olx0XHQgIHBvb2wuXG4gMjA1Olx0XG4gMjA2Olx0Y29uZmlnIEFUSDlLX0NPTU1PTl9TUEVDVFJBTFxuIDIwNzpcdFx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDlrL2F0aDlrX2h0YyBzcGVjdHJhbCBzY2FuIHN1cHBvcnRcJiMzNDtcbiAyMDg6XHRcdGRlcGVuZHMgb24gQVRIOUtfREVCVUdGUyB8fCBBVEg5S19IVENfREVCVUdGU1xuIDIwOTpcdFx0c2VsZWN0IFJFTEFZXG4gMjEwOlx0XHRkZWZhdWx0IG5cbiAyMTE6XHRcdGhlbHBcbiAyMTI6XHRcdCAgU2F5IFkgdG8gZW5hYmxlIGFjY2VzcyB0byB0aGUgRkZUL3NwZWN0cmFsIGRhdGEgdmlhIGRlYnVnZnMuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA1OjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzMjQ3CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhlIHRob3VnaHQgcHJvY2VzcyB1bmZvbGRzOgoKKipDaGVja2luZyB0aGUgS2NvbmZpZyBmb3IgYEFUSDlLX0RFQlVHRlNgKioKCk9rYXksIHNvIHdlJiMzOTtyZSBkaXZpbmcgaW50byB0aGlzIGlzc3VlLi4uIExldCYjMzk7cyBub3QganVzdCBhc3N1bWUgd2hlcmUgdGhlIHByb2JsZW0gbGllcy4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gZG91YmxlLWNoZWNrIHNvbWV0aGluZyB0aGF0IG1pZ2h0IGJlIGVhc2lseSBvdmVybG9va2VkLiBSaWdodCBub3csIEkmIzM5O20gdGhpbmtpbmcsICYjMzQ7RGlkIHdlIG1ha2Ugc3VyZSB0aGF0IGRlYnVnZ2luZyBpcyBlbmFibGVkPyYjMzQ7IExldCYjMzk7cyBzZWUgaWYgdGhlIGBBVEg5S19ERUJVR0ZTYCBjb25maWd1cmF0aW9uIG9wdGlvbiBpcyBlbmFibGVkIGluIHRoZSBLY29uZmlnLiBBIGxvdCBvZiB0aW1lcywgZGVidWdnaW5nIGZlYXR1cmVzIGFyZSBjb25kaXRpb25hbGx5IGNvbXBpbGVkLCBhbmQgaXQmIzM5O3MgZWFzeSB0byBtaXNzIHRoYXQgc3BlY2lmaWMgY29uZmlnLiBJdCYjMzk7cyBhIHF1aWNrIHNhbml0eSBjaGVjaywgYnV0IGltcG9ydGFudCBiZWNhdXNlIGlmIHRoYXQmIzM5O3Mgbm90IGVuYWJsZWQsIHdlJiMzOTtyZSBub3QgZ29pbmcgdG8gc2VlIGFueSByZWxldmFudCBkZWJ1ZyBpbmZvcm1hdGlvbiBmcm9tIHRoYXQgbW9kdWxlLiBJdCBtaWdodCBzZWVtIGJhc2ljLCBidXQgaXQmIzM5O3MgZXNzZW50aWFsIHRvIG5vdCBza2lwIHRoaXMgc3RlcC4gVGhpcyBjaGVjayBtYWtlcyBzZW5zZSBmcm9tIHRoZSBwZXJzcGVjdGl2ZSB0aGF0IGlmIHRoZSBmZWF0dXJlIGlzIG5vdCBjb25maWd1cmVkLCBpdCYjMzk7cyBhIGhhcmQgYmFycmllciB0byBzZWVpbmcgdGhlIGluZm9ybWF0aW9uIG5lZWRlZC4gSSYjMzk7bGwgc2VhcmNoIHRoYXQgS2NvbmZpZyBub3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA1OjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE0MDpcdFx0ICBhIHBsYXRmb3JtIHRoYXQgY2FuIHRvZ2dsZSB0aGUgUkYtS2lsbCBHUElPLlxuIDE0MTpcdFxuIDE0MjpcdGNvbmZpZyBBVEg5S19DSEFOTkVMX0NPTlRFWFRcbiAxNDM6XHRcdGJvb2wgXCYjMzQ7Q2hhbm5lbCBDb250ZXh0IHN1cHBvcnRcJiMzNDtcbiAxNDQ6XHRcdGRlcGVuZHMgb24gQVRIOUtcbiAxNDU6XHRcdGRlZmF1bHQgblxuIDE0NjpcdFx0aGVscFxuIDE0NzpcdFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIGNoYW5uZWwgY29udGV4dCBzdXBwb3J0IGluIGF0aDlrLCB3aGljaCBpcyBuZWVkZWRcbiAxNDg6XHRcdCAgZm9yIG11bHRpLWNoYW5uZWwgY29uY3VycmVuY3kuIEVuYWJsZSB0aGlzIGlmIFAyUCBQb3dlclNhdmUgc3VwcG9ydFxuIDE0OTpcdFx0ICBpcyByZXF1aXJlZC5cbiAxNTA6XHRcbiAxNTE6XHRjb25maWcgQVRIOUtfUENPRU1cbiAxNTI6XHRcdGJvb2wgXCYjMzQ7QXRoZXJvcyBhdGg5ayBzdXBwb3J0IGZvciBQQyBPRU0gY2FyZHNcJiMzNDsgaWYgRVhQRVJUXG4gMTUzOlx0XHRkZXBlbmRzIG9uIEFUSDlLXG4gMTU0Olx0XHRkZWZhdWx0IHlcbiAxNTU6XHRcbiAxNTY6XHRjb25maWcgQVRIOUtfUENJX05PX0VFUFJPTVxuIDE1NzpcdFx0dHJpc3RhdGUgXCYjMzQ7QXRoZXJvcyBhdGg5ayBwY2kgbG9hZGVyIGZvciBFRVBST00tbGVzcyBjaGlwc1wmIzM0O1xuIDE1ODpcdFx0ZGVwZW5kcyBvbiBBVEg5S19QQ0lcbiAxNTk6XHRcdGRlZmF1bHQgblxuIDE2MDpcdFx0aGVscFxuIDE2MTpcdFx0ICBUaGlzIHNlcGFyYXRlIGRyaXZlciBwcm92aWRlcyBhIGxvYWRlciBpbiBvcmRlciB0byBzdXBwb3J0IHRoZVxuIDE2MjpcdFx0ICBBUjUwMFggdG8gQVI5MlhYLWdlbmVyYXRpb24gb2YgYXRoOWsgUENJKGUpIFdpRmkgY2hpcHMsIHdoaWNoIGhhdmVcbiAxNjM6XHRcdCAgdGhlaXIgaW5pdGlhbGl6YXRpb24gZGF0YSAod2hpY2ggY29udGFpbnMgdGhlIHJlYWwgUENJIERldmljZSBJRFxuIDE2NDpcdFx0ICB0aGF0IGF0aDlrIHdpbGwgbmVlZCkgc3RvcmVkIHRvZ2V0aGVyIHdpdGggdGhlIGNhbGlicmF0aW9uIGRhdGEgb3V0XG4gMTY1Olx0XHQgIG9mIHJlYWNoIGZvciB0aGUgYXRoOWsgY2hpcC5cbiAxNjY6XHRcbiAxNjc6XHRcdCAgVGhlc2UgZGV2aWNlcyBhcmUgdXN1YWxseSB2YXJpb3VzIG5ldHdvcmsgYXBwbGlhbmNlcywgcm91dGVycyBvclxuIDE2ODpcdFx0ICBhY2Nlc3MgUG9pbnRzIGFuZCBzdWNoLlxuIDE2OTpcdFxuIDE3MDpcdFx0ICBJZiB1bnN1cmUgc2F5IE4uXG4gMTcxOlx0XG4gMTcyOlx0Y29uZmlnIEFUSDlLX0hUQ1xuIDE3MzpcdFx0dHJpc3RhdGUgXCYjMzQ7QXRoZXJvcyBIVEMgYmFzZWQgd2lyZWxlc3MgY2FyZHMgc3VwcG9ydFwmIzM0O1xuIDE3NDpcdFx0ZGVwZW5kcyBvbiBVU0IgXHUwMDI2XHUwMDI2IE1BQzgwMjExXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA1OjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0MDQ2CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipIdW50aW5nIERvd24gQVRIOUtfREVCVUdGUyoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdHJhY2sgZG93biB0aGUgYEFUSDlLX0RFQlVHRlNgIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBNeSBpbW1lZGlhdGUgc3RyYXRlZ3kgaXMgdG8ganVtcCBpbnRvIHRoZSBgS2NvbmZpZ2AgZmlsZXMg4oCTIHRoYXQmIzM5O3MgdGhlIGNhbm9uaWNhbCBwbGFjZSB0byBmaW5kIHRoZXNlIHNldHRpbmdzIGFuZCB0aGVpciBkZXBlbmRlbmNpZXMuIEkmIzM5O2xsIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0aGUgYGF0aDlrYCBkcml2ZXIgaXMgY29uZmlndXJlZCwgYW5kIGZyb20gdGhlcmUgbmF2aWdhdGUgdGhlIGRlcGVuZGVuY3kgY2hhaW4gdG8gbG9jYXRlIHRoZSByZWxldmFudCBvcHRpb24uIEhvcGVmdWxseSwgaXQmIzM5O3Mgbm90IGJ1cmllZCB0b28gZGVlcCB3aXRoaW4gYW4gb2JzY3VyZSBzdWItbWVudS4gVGltZSB0byBnZXQgdG8gd29yay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDU6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEFUSDlLX0RFQlVHRlMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc9NDg9Y29uZmlnIEFUSDlLX0FIQlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTU3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6NTg6Y29uZmlnIEFUSDlLX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTU5LVx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDlrIGRlYnVnZ2luZ1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwNTo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDMzOQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDMyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgaG93IEkmIzM5O2QgYXBwcm9hY2ggdGhhdDoKCioqSW52ZXN0aWdhdGluZyB0aGUgQnVpbGQgUHJvY2VzcyBmb3IgYGNvbW1vbi1zcGVjdHJhbC5vYCBpbiB0aGUgYXRoOWsgV2lyZWxlc3MgRHJpdmVyKioKClJpZ2h0LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCBleGFjdGx5IGhvdyBgY29tbW9uLXNwZWN0cmFsLm9gIGdldHMgY29tcGlsZWQgd2l0aGluIHRoZSBgYXRoOWtgIHdpcmVsZXNzIGRyaXZlci4gVGhlIG1vc3QgbG9naWNhbCBwbGFjZSB0byBzdGFydCBpcyB0aGUgYE1ha2VmaWxlYCB3aXRoaW4gdGhlIHJlbGV2YW50IGRpcmVjdG9yeS4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGdvaW5nIHRvIGxvb2sgYXQgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZWAuIFRoYXQgZmlsZSBpcyB0aGUgY2VudHJhbCBvcmNoZXN0cmF0b3IgZm9yIGhvdyBhbGwgdGhlIGNvbXBvbmVudHMgd2l0aGluIHRoYXQgc3BlY2lmaWMgbW9kdWxlIGFyZSBidWlsdC4gSXQgc2hvdWxkIGNvbnRhaW4gdGhlIHJ1bGVzIG9yIGluc3RydWN0aW9ucyBkZXRhaWxpbmcgdGhlIGNvbXBpbGF0aW9uIHByb2Nlc3MgZm9yIGFueSBvYmplY3QgZmlsZXMgd2l0aGluIHRoYXQgZGlyZWN0b3J5LiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIGVpdGhlciBhIGRpcmVjdCBydWxlIGZvciBgY29tbW9uLXNwZWN0cmFsLm9gIG9yLCBtb3JlIGxpa2VseSwgYSBzZXQgb2YgcnVsZXMgYW5kIGRlcGVuZGVuY2llcyB0aGF0IHdpbGwgdWx0aW1hdGVseSBsZWFkIHRvIGl0cyBjcmVhdGlvbi4gVGltZSB0byBjcmFjayBvcGVuIHRoYXQgTWFrZWZpbGUgYW5kIHNlZSB3aGF0JiMzOTtzIHdoYXQuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBjb21wbGV0ZSB2aWV3IG9mIGFsbCBkZXBlbmRlbmNpZXMgYW5kIGxpbmtpbmcgc3RyYXRlZ2llcyB0byBmb3JtIHRoZSBjb21waWxlZCBtb2R1bGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA1OjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbW1vbi1zcGVjdHJhbCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU9NjU9YXRoOWtfY29tbW9uLSQoQ09ORklHX0FUSDlLX0NPTU1PTl9ERUJVRykgJiM0Mzs9IGNvbW1vbi1kZWJ1Zy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6NjY6YXRoOWtfY29tbW9uLSQoQ09ORklHX0FUSDlLX0NPTU1PTl9TUEVDVFJBTCkgJiM0Mzs9IGNvbW1vbi1zcGVjdHJhbC5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtNjctXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi5oLTI2LSNpbmNsdWRlIFwmIzM0O2NvbW1vbi1kZWJ1Zy5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLmg6Mjc6I2luY2x1ZGUgXCYjMzQ7Y29tbW9uLXNwZWN0cmFsLmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24uaC0yOC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDU6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQ4MTYKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAyNDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgYXRoOWtfaHRjIERyaXZlciBmb3IgRnV6emluZyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgYGF0aDlrX2NvbW1vbmAgZ2V0cyBidWlsdCB3aGVuIGBBVEg5S19DT01NT05gIGlzIGVuYWJsZWQsIHdoaWNoIGlzIHRpZWQgdG8gZWl0aGVyIGBBVEg5S2Agb3IgYEFUSDlLX0hUQ2AuIE1ha2VzIHNlbnNlLiBJZiBgQVRIOUtfQ09NTU9OX1NQRUNUUkFMYCBpcyB0b2dnbGVkIG9uLCB0aGVuIGBjb21tb24tc3BlY3RyYWwub2AgZ2V0cyBpbmNsdWRlZCB3aXRoaW4gYGF0aDlrX2NvbW1vbmAuIEdvb2QsIHRoYXQmIzM5O3MgZXhwZWN0ZWQuCgpOb3csIGBhdGg5a19odGNgIGl0c2VsZiBpcyBhIFVTQiBkcml2ZXIsIHdoaWNoIG1lYW5zIGl0IGhpbmdlcyBvbiBgVVNCYCBhbmQgYE1BQzgwMjExYCwgb2J2aW91c2x5LiBUaGUgcmVhbCBxdWVzdGlvbiBpcywgY2FuIHdlIGFjdHVhbGx5IHJlYWNoIGBhdGg5a19odGNgIGVmZmVjdGl2ZWx5IGluIHN5emthbGxlciBmdXp6aW5nPyBJdCYjMzk7cyB0aGUgc3RhbmRhcmQgcXVlc3Rpb24gZm9yIHRoaXMgc29ydCBvZiBhbmFseXNpczogaG93IGFjY2Vzc2libGUgaXMgaXQ/CgpMZXQgbWUgcmVmZXIgYmFjayB0byB0aGUgU2VjdGlvbiAxLCAyLCAzIGNsYXNzaWZpY2F0aW9ucy4gRnJvbSB0aGUgZGVzY3JpcHRpb24sIGBhdGg5a19odGNgIGZhbGxzIHVuZGVyIHRoZSBjYXRlZ29yeSBvZiBkcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMsIHNwZWNpZmljYWxseSwgVVNCLiBUaGlzIHdvdWxkIG1lYW4gVVNCIGVtdWxhdGlvbiBsaWtlIHJhd19nYWRnZXQsIGR1bW15X2hjZCwgb3IsIGNydWNpYWxseSwgc3l6a2FsbGVyIFVTQiBmdXp6aW5nIGNhbiBiZSBsZXZlcmFnZWQuIEV4Y2VsbGVudCwgdGhhdCYjMzk7cyBhIHBvc2l0aXZlIHNpZ24uCgpCZXlvbmQgdGhhdCwgd2UgaGF2ZSBkZWJ1Z2ZzIGFuZCByZWxheSBpbnRlcmZhY2VzIHRvIGV4cGxvcmUuIFRoZSBzcGVjdHJhbCBzY2FuIGZ1bmN0aW9uYWxpdHkgd2l0aGluIHRoZSBkcml2ZXIgY3JlYXRlcyBkZWJ1Z2ZzIGVudHJpZXMgbGlrZSBgc3BlY3RyYWxfc2NhbmAsIGBzcGVjdHJhbF9zY2FuX2N0bGAsIGFuZCBgc3BlY3RyYWxfY291bnRgLiBJIG5lZWQgdG8gZGlnIGRlZXBlciBpbnRvIHdoYXQgZGVidWdmcyBmaWxlcyBzcGVjaWZpY2FsbHkgdGhlIGBjb21tb24tc3BlY3RyYWxgIGNvbXBvbmVudCBnZW5lcmF0ZXMuIFRoZXNlIGludGVyZmFjZXMgb2Z0ZW4gcHJvdmlkZSBhIHZhbHVhYmxlIHBvaW50IG9mIGludGVyYWN0aW9uIGZvciBmdXp6aW5nIGFuZCBidWcgZGV0ZWN0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwNTo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZWJ1Z2ZzX2NyZWF0ZV9maWxlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYz0xMDE5PXN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpjcmVhdGVfYnVmX2ZpbGVfaGFuZGxlcihjb25zdCBjaGFyICpmaWxlbmFtZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTAyNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzoxMDI3Olx0YnVmX2ZpbGUgPSBkZWJ1Z2ZzX2NyZWF0ZV9maWxlKGZpbGVuYW1lLCBtb2RlLCBwYXJlbnQsIGJ1ZixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xMDI4LVx0XHRcdFx0ICAgICAgIFx1MDAyNnJlbGF5X2ZpbGVfb3BlcmF0aW9ucyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jPTEwNjE9dm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTEwNzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6MTA3MzpcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXCYjMzQ7c3BlY3RyYWxfc2Nhbl9jdGxcJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTA3NC1cdFx0XHQgICAgMDYwMCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTA3Ni1cdFx0XHQgICAgXHUwMDI2Zm9wc19zcGVjX3NjYW5fY3RsKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzoxMDc3Olx0ZGVidWdmc19jcmVhdGVfZmlsZShcJiMzNDtzcGVjdHJhbF9zaG9ydF9yZXBlYXRcJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTA3OC1cdFx0XHQgICAgMDYwMCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTA4MC1cdFx0XHQgICAgXHUwMDI2Zm9wc19zcGVjdHJhbF9zaG9ydF9yZXBlYXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjEwODE6XHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFwmIzM0O3NwZWN0cmFsX2NvdW50XCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTEwODItXHRcdFx0ICAgIDA2MDAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTEwODQtXHRcdFx0ICAgIFx1MDAyNmZvcHNfc3BlY3RyYWxfY291bnQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjEwODU6XHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFwmIzM0O3NwZWN0cmFsX3BlcmlvZFwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xMDg2LVx0XHRcdCAgICAwNjAwLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xMDg4LVx0XHRcdCAgICBcdTAwMjZmb3BzX3NwZWN0cmFsX3BlcmlvZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6MTA4OTpcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXCYjMzQ7c3BlY3RyYWxfZmZ0X3BlcmlvZFwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xMDkwLVx0XHRcdCAgICAwNjAwLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwNTo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjE4MgoJCQkJCQkJb3V0cHV0OiAxOTUKCQkJCQkJCXRob3VnaHRzOiAzMjM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIFNwZWN0cmFsIFNjYW4gUGFja2V0IFByb2Nlc3NpbmcgaW4gYXRoOWsgYW5kIGF0aDlrX2h0YyBEcml2ZXJzKioKCk9rYXksIHNvIGhlcmUmIzM5O3MgdGhlIGRlYWwuIFdoZW4gc3BlY3RyYWwgc2Nhbm5pbmcgaXMgZW5hYmxlZCwgZWl0aGVyIHRocm91Z2ggdGhlIGBzcGVjdHJhbF9zY2FuX2N0bGAgb3IgbWFjODAyMTEgaW50ZXJmYWNlcywgYW5kIHBhY2tldHMgY29tZSBpbiAoc3BlY2lmaWNhbGx5IHZpYSBVU0IgaW4gdGhlIGBhdGg5a19odGNgIGRyaXZlciwgd2hpY2ggaXMgY3J1Y2lhbCBmb3Igb3VyIGZ1enppbmcgc3RyYXRlZ3kpLCBgYXRoX2Ntbl9wcm9jZXNzX2ZmdGAgZ2V0cyBjYWxsZWQuIFRoaXMgZnVuY3Rpb24sIGluIHR1cm4sIGNhbGxzIGBhdGhfY21uX2NvdW50X2ZmdF9zYW1wbGVgLiBJIG5lZWQgdG8gZW5zdXJlIHRoaXMgaXMgdW5kZXJzdG9vZCB3aXRoaW4gdGhlIGNvbnRleHQgb2YgZGVidWdmcyBmaWxlcywgd2hpY2ggYXJlIHByaW1lIHRhcmdldHMgZm9yIGZ1enppbmcuCgpNeSBwcmltYXJ5IGZvY3VzIGhlcmUgaXMgdW5kZXJzdGFuZGluZyB3aGF0IGNoYW5nZWQgaW4gdGhpcyBjb2RlLiBUaGUga2V5IGZ1bmN0aW9ucyBJJiMzOTttIHplcm9pbmcgaW4gb24gYXJlOiBgYXRoX2Ntbl9jb3VudF9mZnRfc2FtcGxlYCAoc3RhdGljIHdpdGhpbiBgY29tbW9uLXNwZWN0cmFsLmNgKSwgYGF0aF9jbW5fcHJvY2Vzc19mZnRgIChub24tc3RhdGljIGFuZCBhbiBleHBvcnRlZCBzeW1ib2wgaW4gYGNvbW1vbi1zcGVjdHJhbC5jYCksIGBhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1Z2AgKGFub3RoZXIgZXhwb3J0ZWQgc3ltYm9sIGZyb20gYGNvbW1vbi1zcGVjdHJhbC5jYCksIGBhdGg5a19pbml0X2RlYnVnYCAoaW4gYGRlYnVnLmNgKSwgYW5kIGBhdGg5a19odGNfaW5pdF9kZWJ1Z2AgKGluIGBodGNfZHJ2X2RlYnVnLmNgKS4gSSYjMzk7bSBsb29raW5nIGZvciBhbnkgYWRkZWQgb3IgbW9kaWZpZWQgZnVuY3Rpb24gY2FsbHMsIGFuZCB0aGUgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIHRoZW0uCgpUaGUgcGF0Y2ggaXRzZWxmIGlzIHRoZSBibHVlcHJpbnQgaGVyZS4gSXQgbG9va3MgbGlrZSBgYXRoX2Ntbl9jb3VudF9mZnRfc2FtcGxlYCBpcyBub3cgYmVpbmcgdXNlZCB0byBpbmNyZW1lbnQgYHJ4X3NwZWN0cmFsX3NhbXBsZV9nb29kYCBvciBgcnhfc3BlY3RyYWxfc2FtcGxlX2VycmAgd2l0aGluIGBhdGhfY21uX3Byb2Nlc3NfZmZ0YCBkZXBlbmRpbmcgb24gdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgRkZUIGhhbmRsZXIuIFRoaXMgaXMgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgYmVjYXVzZSB0aGF0IGxvZ2ljIGlzIGRpcmVjdGx5IGV4cG9zZWQgdG8gZnV6emluZy4gQSBrZXkgbW9kaWZpY2F0aW9uIHNlZW1zIHRvIGJlIHRoZSBhZGRpdGlvbiBvZiBhIGBzdHJ1Y3QgYXRoX3J4X3N0YXRzICpyeF9zdGF0c2AgcG9pbnRlci4gVGhpcyBnZXRzIHNldCB1cCB3aXRoaW4gZGVidWcgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb25zOiBzcGVjaWZpY2FsbHksIGBhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1Z2Agbm93IGFjY2VwdHMgYHJ4X3N0YXRzYCBhcyBhbiBhcmd1bWVudCBhbmQgaXQgbm93IHRha2VzIGFuZCBzZXRzIGBzcGVjX3ByaXYtJmd0O3J4X3N0YXRzYCBpbiBpdHMgaW5pdGlhbGl6YXRpb24gcm91dGluZSAod2hpY2ggaXMgYSBjb3JlIGNoYW5nZSkuIEl0IGlzIGFsc28gY2FsbGVkIGR1cmluZyBgYXRoOWtfaW5pdF9kZWJ1Z2AgYW5kIGBhdGg5a19odGNfaW5pdF9kZWJ1Z2AuCgpOb3csIHRoZSBpbXBvcnRhbnQgcGFydDogaXMgdGhpcyByZWFjaGFibGU/IFllcywgdXNpbmcgVVNCIGVtdWxhdGlvbiwgc3l6a2FsbGVyIGFuZCByYXdfZ2FkZ2V0LCBvciBkdW1teV9oY2Qgd2hpY2ggaXMgd2l0aGluIG91ciByZWFjaCBmb3IgdGhlIGBhdGg5a19odGNgIGRyaXZlci4gIFRoZSBjcml0aWNhbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVxdWlyZWQgYXJlIGBBVEg5S19IVENgLCBgQVRIOUtfSFRDX0RFQlVHRlNgLCBgQVRIOUtfQ09NTU9OX1NQRUNUUkFMYCwgYEFUSDlLYCwgYEFUSDlLX0RFQlVHRlNgLCBgVVNCYCwgYW5kIGBNQUM4MDIxMWAuCgpXZSBuZWVkIHRvIGVuc3VyZSB0aGF0IHRoZSBrZXkgZnVuY3Rpb25zIChgYXRoX2Ntbl9wcm9jZXNzX2ZmdGAsIGBhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1Z2AsIGBhdGg5a19odGNfaW5pdF9kZWJ1Z2AsIGFuZCBgYXRoOWtfaW5pdF9kZWJ1Z2ApIGFyZSBub3QgbGlmZWN5Y2xlIGZ1bmN0aW9ucywgYW5kIHNwZWNpZmljIHRvIHRoZSBoYW5kbGluZyBvZiBzcGVjdHJhbCBzY2FuIGFuZCBkZWJ1Z2ZzLiAgVGhpcyBkZXRhaWxlZCBhbmFseXNpcyBkZW1vbnN0cmF0ZXMgdGhhdCB0aGlzIGlzLCBpbiBmYWN0LCB0aGUgY2FzZS4gYGF0aF9jbW5fcHJvY2Vzc19mZnRgIGlzIGRpcmVjdGx5IGhhbmRsaW5nIEZGVCBmcmFtZXMsIGFuZCBkZWJ1ZyBpbml0aWFsaXphdGlvbiBmdW5jdGlvbnMgdGllIHRoaXMgcHJvY2VzcyB0byBkZWJ1ZyBpbnRlcmZhY2VzLiAgVGhlIHBhdGNoIG1vZGlmaWVzIHN0YXRzIHRyYWNraW5nIHdpdGggdGhlIGFkZGVkIHBvaW50ZXIsIGFuZCB0aGF0IGFkZHMgYSBzcGVjaWZpYyBmdXp6aW5nIHRhcmdldC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDU6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FUSDlLX0NPTU1PTl9TUEVDVFJBTCYjMzQ7LAogICAgJiMzNDtBVEg5S19IVENfREVCVUdGUyYjMzQ7LAogICAgJiMzNDtBVEg5S19IVEMmIzM0OywKICAgICYjMzQ7QVRIOUtfREVCVUdGUyYjMzQ7LAogICAgJiMzNDtBVEg5SyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2F0aF9jbW5fcHJvY2Vzc19mZnQmIzM0OywKICAgICYjMzQ7YXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcmIzM0OywKICAgICYjMzQ7YXRoOWtfaHRjX2luaXRfZGVidWcmIzM0OywKICAgICYjMzQ7YXRoOWtfaW5pdF9kZWJ1ZyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgc3BlY3RyYWwgc2NhbiBkZWJ1ZyBpbml0aWFsaXphdGlvbiBhbmQgRkZUIHNhbXBsZSBwcm9jZXNzaW5nIGluIHRoZSBhdGg5ayBhbmQgYXRoOWtfaHRjIGRyaXZlcnMuIGF0aDlrX2h0YyBpcyBhIFVTQi1iYXNlZCB3aXJlbGVzcyBkcml2ZXIgYWNjZXNzaWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIFVTQiBlbXVsYXRpb24uIFRoZSBjaGFuZ2VzIGFsdGVyIGhvdyBzcGVjdHJhbCBzYW1wbGUgc3RhdGlzdGljcyBhcmUgdHJhY2tlZCBhbmQgaW5pdGlhbGl6ZWQgYWNyb3NzIGRyaXZlcnMgc2hhcmluZyBjb21tb24gc3BlY3RyYWwgc2NhbiBjb2RlLCBtYWtpbmcgaXQgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QVRIOUtfQ09NTU9OX1NQRUNUUkFMJiMzNDssCiAgICAmIzM0O0FUSDlLX0hUQ19ERUJVR0ZTJiMzNDssCiAgICAmIzM0O0FUSDlLX0hUQyYjMzQ7LAogICAgJiMzNDtBVEg5S19ERUJVR0ZTJiMzNDssCiAgICAmIzM0O0FUSDlLJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YXRoX2Ntbl9wcm9jZXNzX2ZmdCYjMzQ7LAogICAgJiMzNDthdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyYjMzQ7LAogICAgJiMzNDthdGg5a19odGNfaW5pdF9kZWJ1ZyYjMzQ7LAogICAgJiMzNDthdGg5a19pbml0X2RlYnVnJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBzcGVjdHJhbCBzY2FuIGRlYnVnIGluaXRpYWxpemF0aW9uIGFuZCBGRlQgc2FtcGxlIHByb2Nlc3NpbmcgaW4gdGhlIGF0aDlrIGFuZCBhdGg5a19odGMgZHJpdmVycy4gYXRoOWtfaHRjIGlzIGEgVVNCLWJhc2VkIHdpcmVsZXNzIGRyaXZlciBhY2Nlc3NpYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgVVNCIGVtdWxhdGlvbi4gVGhlIGNoYW5nZXMgYWx0ZXIgaG93IHNwZWN0cmFsIHNhbXBsZSBzdGF0aXN0aWNzIGFyZSB0cmFja2VkIGFuZCBpbml0aWFsaXplZCBhY3Jvc3MgZHJpdmVycyBzaGFyaW5nIGNvbW1vbiBzcGVjdHJhbCBzY2FuIGNvZGUsIG1ha2luZyBpdCB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwNTo0OTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA1OjQ5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSB0eXBlIGNvbmZ1c2lvbiBpc3N1ZSBiZXR3ZWVuIGF0aDlrIGFuZCBhdGg5a19odGMgZHJpdmVycyBpbiBzaGFyZWQgc3BlY3RyYWwgc2Nhbm5pbmcgY29kZSAoY29tbW9uLXNwZWN0cmFsLmMpLCB3aGVyZSBjb21tb24tXHUwMDNlcHJpdiB3YXMgcHJldmlvdXNseSBjYXN0IHVuY29uZGl0aW9uYWxseSB0byBzdHJ1Y3QgYXRoX3NvZnRjICouIFRoZSBmaXggcGFzc2VzIHRoZSBkcml2ZXItc3BlY2lmaWMgYXRoX3J4X3N0YXRzIHBvaW50ZXIgZHVyaW5nIGRlYnVnIGluaXRpYWxpemF0aW9uIGFuZCBpbmNyZW1lbnRzIHN0YXRzIHRocm91Z2ggc3BlY19wcml2LVx1MDAzZXJ4X3N0YXRzIHdpdGggYSBOVUxMIGNoZWNrLlxuXG5UaGlzIGNoYW5nZSBvbmx5IGFmZmVjdHMgcG9pbnRlciBhc3NpZ25tZW50IGFuZCBzdGF0aXN0aWMgY291bnRlciBpbmNyZW1lbnRzLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBhbGxvY2F0ZSB1bmluaXRpYWxpemVkIGJ1ZmZlcnMsIG9yIHBlcmZvcm0gY29waWVzIHRvIHVzZXIgc3BhY2Ugb2YgdW5pbml0aWFsaXplZCBkYXRhLiBBbnkgbWVtb3J5IHNhZmV0eSBjb25jZXJucyAoc3VjaCBhcyBpbnZhbGlkIHBvaW50ZXIgZGVyZWZlcmVuY2VzIG9yIHR5cGUgY29uZnVzaW9uKSBhcmUgYWRlcXVhdGVseSBjb3ZlcmVkIGJ5IEtBU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMjkzN2U4NTRiODY1NWIxMmU1YjJkMWNiNzY0ZDAwYWJmZTRmOWViMApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTdW4gU2VwIDYgMDU6NDc6MzEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMKaW5kZXggY2EwMWEwN2Y2NjMwYy4uZDhiZTI0ZWJjZDI0NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYwpAQCAtNDY1LDYgJiM0Mzs0NjUsMjAgQEAgYXRoX2Ntbl9pc19mZnRfYnVmX2Z1bGwoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2KQogCQlyZXR1cm4gMDsKIH0KIAomIzQzO3N0YXRpYyB2b2lkIGF0aF9jbW5fY291bnRfZmZ0X3NhbXBsZShzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsCiYjNDM7CQkJCSAgICAgaW50IHJldCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBhdGhfcnhfc3RhdHMgKnJ4X3N0YXRzID0gc3BlY19wcml2LSZndDtyeF9zdGF0czsKJiM0MzsKJiM0MzsJaWYgKCFyeF9zdGF0cykKJiM0MzsJCXJldHVybjsKJiM0MzsKJiM0MzsJaWYgKHJldCA9PSAwKQomIzQzOwkJcnhfc3RhdHMtJmd0O3J4X3NwZWN0cmFsX3NhbXBsZV9nb29kJiM0MzsmIzQzOzsKJiM0MzsJZWxzZQomIzQzOwkJcnhfc3RhdHMtJmd0O3J4X3NwZWN0cmFsX3NhbXBsZV9lcnImIzQzOyYjNDM7OwomIzQzO30KJiM0MzsKIC8qIHJldHVybnMgMSBpZiB0aGlzIHdhcyBhIHNwZWN0cmFsIGZyYW1lLCBldmVuIGlmIG5vdCBoYW5kbGVkLiAqLwogaW50IGF0aF9jbW5fcHJvY2Vzc19mZnQoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LCBzdHJ1Y3QgaWVlZTgwMjExX2hkciAqaGRyLAogCQkgICAgc3RydWN0IGF0aF9yeF9zdGF0dXMgKnJzLCB1NjQgdHNmKQpAQCAtNDcyLDcgJiM0Mzs0ODYsNiBAQCBpbnQgYXRoX2Ntbl9wcm9jZXNzX2ZmdChzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsIHN0cnVjdCBpZWVlODAyMTFfaAogCXU4IHNhbXBsZV9idWZbU1BFQ1RSQUxfU0FNUExFX01BWF9MRU5dID0gezB9OwogCXN0cnVjdCBhdGhfaHcgKmFoID0gc3BlY19wcml2LSZndDthaDsKIAlzdHJ1Y3QgYXRoX2NvbW1vbiAqY29tbW9uID0gYXRoOWtfaHdfY29tbW9uKHNwZWNfcHJpdi0mZ3Q7YWgpOwotCXN0cnVjdCBhdGhfc29mdGMgKnNjID0gY29tbW9uLSZndDtwcml2OwogCXU4IG51bV9iaW5zLCAqdmRhdGEgPSAodTggKiloZHI7CiAJc3RydWN0IGF0aF9yYWRhcl9pbmZvICpyYWRhcl9pbmZvOwogCWludCBsZW4gPSBycy0mZ3Q7cnNfZGF0YWxlbjsKQEAgLTYyNCwxMCAmIzQzOzYzNyw3IEBAIGludCBhdGhfY21uX3Byb2Nlc3NfZmZ0KHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiwgc3RydWN0IGllZWU4MDIxMV9oCiAJCQkJcmV0ID0gZmZ0X2hhbmRsZXIocnMsIHNwZWNfcHJpdiwgc2FtcGxlX2J1ZiwKIAkJCQkJCSAgdHNmLCBmcmVxLCBjaGFuX3R5cGUpOwogCi0JCQkJaWYgKHJldCA9PSAwKQotCQkJCQlSWF9TVEFUX0lOQyhzYywgcnhfc3BlY3RyYWxfc2FtcGxlX2dvb2QpOwotCQkJCWVsc2UKLQkJCQkJUlhfU1RBVF9JTkMoc2MsIHJ4X3NwZWN0cmFsX3NhbXBsZV9lcnIpOwomIzQzOwkJCQlhdGhfY21uX2NvdW50X2ZmdF9zYW1wbGUoc3BlY19wcml2LCByZXQpOwogCiAJCQkJLyogTWl4IHRoZSByZWNlaXZlZCBiaW5zIHRvIHRoZSAvZGV2L3JhbmRvbQogCQkJCSAqIHBvb2wKQEAgLTY0MiwxMCAmIzQzOzY1Miw3IEBAIGludCBhdGhfY21uX3Byb2Nlc3NfZmZ0KHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiwgc3RydWN0IGllZWU4MDIxMV9oCiAJCQkJcmV0ID0gZmZ0X2hhbmRsZXIocnMsIHNwZWNfcHJpdiwgc2FtcGxlX3N0YXJ0LAogCQkJCQkJICB0c2YsIGZyZXEsIGNoYW5fdHlwZSk7CiAKLQkJCQlpZiAocmV0ID09IDApCi0JCQkJCVJYX1NUQVRfSU5DKHNjLCByeF9zcGVjdHJhbF9zYW1wbGVfZ29vZCk7Ci0JCQkJZWxzZQotCQkJCQlSWF9TVEFUX0lOQyhzYywgcnhfc3BlY3RyYWxfc2FtcGxlX2Vycik7CiYjNDM7CQkJCWF0aF9jbW5fY291bnRfZmZ0X3NhbXBsZShzcGVjX3ByaXYsIHJldCk7CiAKIAkJCQkvKiBNaXggdGhlIHJlY2VpdmVkIGJpbnMgdG8gdGhlIC9kZXYvcmFuZG9tCiAJCQkJICogcG9vbApAQCAtMTA1Miw4ICYjNDM7MTA1OSwxMCBAQCB2b2lkIGF0aDlrX2Ntbl9zcGVjdHJhbF9kZWluaXRfZGVidWcoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2KQogRVhQT1JUX1NZTUJPTChhdGg5a19jbW5fc3BlY3RyYWxfZGVpbml0X2RlYnVnKTsKIAogdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsCi0JCQkJICAgc3RydWN0IGRlbnRyeSAqZGVidWdmc19waHkpCiYjNDM7CQkJCSAgIHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcGh5LAomIzQzOwkJCQkgICBzdHJ1Y3QgYXRoX3J4X3N0YXRzICpyeF9zdGF0cykKIHsKJiM0MzsJc3BlY19wcml2LSZndDtyeF9zdGF0cyA9IHJ4X3N0YXRzOwogCXNwZWNfcHJpdi0mZ3Q7cmZzX2NoYW5fc3BlY19zY2FuID0gcmVsYXlfb3BlbigmIzM0O3NwZWN0cmFsX3NjYW4mIzM0OywKIAkJCQkJICAgIGRlYnVnZnNfcGh5LAogCQkJCQkgICAgMTAyNCwgMjU2LCAmYW1wO3Jmc19zcGVjX3NjYW5fY2IsCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmgKaW5kZXggMDExZDhhYjhiOTc0NC4uMGUyYzdkNmQzNDg3NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaApAQCAtOTQsMTIgJiM0Mzs5NCwxNiBAQCBzdHJ1Y3QgYXRoX2h0MjBfNDBfZmZ0X3BhY2tldCB7CiAJc3RydWN0IGF0aF9yYWRhcl9pbmZvIHJhZGFyX2luZm87CiB9IF9fcGFja2VkOwogCiYjNDM7c3RydWN0IGF0aF9yeF9zdGF0czsKJiM0MzsKIHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgewogCXN0cnVjdCBhdGhfaHcgKmFoOwogCS8qIHJlbGF5KGZzKSBjaGFubmVsIGZvciBzcGVjdHJhbCBzY2FuICovCiAJc3RydWN0IHJjaGFuICpyZnNfY2hhbl9zcGVjX3NjYW47CiAJZW51bSBzcGVjdHJhbF9tb2RlIHNwZWN0cmFsX21vZGU7CiAJc3RydWN0IGF0aF9zcGVjX3NjYW4gc3BlY19jb25maWc7CiYjNDM7CS8qIGRyaXZlciYjMzk7cyBSWCBzdGF0aXN0aWNzIHRvIGFjY291bnQgc2FtcGxlcyBpbnRvLCBpZiBhbnkgKi8KJiM0MzsJc3RydWN0IGF0aF9yeF9zdGF0cyAqcnhfc3RhdHM7CiB9OwogCiAjZGVmaW5lIFNQRUNUUkFMX0hUMjBfNDBfVE9UQUxfREFUQV9MRU4JKHNpemVvZihzdHJ1Y3QgYXRoX2h0MjBfNDBfZmZ0X3BhY2tldCkpCkBAIC0xNjksNyAmIzQzOzE3Myw5IEBAIHN0YXRpYyBpbmxpbmUgdTggc3BlY3RyYWxfYml0bWFwX3dlaWdodCh1OCAqYmlucykKIH0KIAogI2lmZGVmIENPTkZJR19BVEg5S19DT01NT05fU1BFQ1RSQUwKLXZvaWQgYXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LCBzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX3BoeSk7CiYjNDM7dm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsCiYjNDM7CQkJCSAgIHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcGh5LAomIzQzOwkJCQkgICBzdHJ1Y3QgYXRoX3J4X3N0YXRzICpyeF9zdGF0cyk7CiB2b2lkIGF0aDlrX2Ntbl9zcGVjdHJhbF9kZWluaXRfZGVidWcoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2KTsKIAogdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfc2Nhbl90cmlnZ2VyKHN0cnVjdCBhdGhfY29tbW9uICpjb21tb24sCkBAIC0xODEsNyAmIzQzOzE4Nyw4IEBAIGludCBhdGhfY21uX3Byb2Nlc3NfZmZ0KHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiwgc3RydWN0IGllZWU4MDIxMV9oCiAJCSAgICBzdHJ1Y3QgYXRoX3J4X3N0YXR1cyAqcnMsIHU2NCB0c2YpOwogI2Vsc2UKIHN0YXRpYyBpbmxpbmUgdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsCi0JCQkJCQkgc3RydWN0IGRlbnRyeSAqZGVidWdmc19waHkpCiYjNDM7CQkJCQkJIHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcGh5LAomIzQzOwkJCQkJCSBzdHJ1Y3QgYXRoX3J4X3N0YXRzICpyeF9zdGF0cykKIHsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2RlYnVnLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGVidWcuYwppbmRleCA3NGEwMTM0MDc1Y2Y5Li4wNDJhNGY1NDJhOTQzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGVidWcuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGVidWcuYwpAQCAtMTM4OSw3ICYjNDM7MTM4OSw4IEBAIGludCBhdGg5a19pbml0X2RlYnVnKHN0cnVjdCBhdGhfaHcgKmFoKQogCiAJYXRoOWtfZGZzX2luaXRfZGVidWcoc2MpOwogCWF0aDlrX3R4OTlfaW5pdF9kZWJ1ZyhzYyk7Ci0JYXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoJmFtcDtzYy0mZ3Q7c3BlY19wcml2LCBzYy0mZ3Q7ZGVidWcuZGVidWdmc19waHkpOwomIzQzOwlhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZygmYW1wO3NjLSZndDtzcGVjX3ByaXYsIHNjLSZndDtkZWJ1Zy5kZWJ1Z2ZzX3BoeSwKJiM0MzsJCQkJICAgICAgJmFtcDtzYy0mZ3Q7ZGVidWcuc3RhdHMucnhzdGF0cyk7CiAKIAlkZWJ1Z2ZzX2NyZWF0ZV9kZXZtX3NlcWZpbGUoc2MtJmd0O2RldiwgJiMzNDtkbWEmIzM0Oywgc2MtJmd0O2RlYnVnLmRlYnVnZnNfcGh5LAogCQkJCSAgICByZWFkX2ZpbGVfZG1hKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jCmluZGV4IDk0MzdkNjk4NzdjYzUuLjlkMzU0YjFkOTI5YzggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYwpAQCAtNDg3LDcgJiM0Mzs0ODcsOCBAQCBpbnQgYXRoOWtfaHRjX2luaXRfZGVidWcoc3RydWN0IGF0aF9odyAqYWgpCiAJcHJpdi0mZ3Q7ZGVidWcuZGVidWdmc19waHkgPSBkZWJ1Z2ZzX2NyZWF0ZV9kaXIoS0JVSUxEX01PRE5BTUUsCiAJCQkJCSAgICAgcHJpdi0mZ3Q7aHctJmd0O3dpcGh5LSZndDtkZWJ1Z2ZzZGlyKTsKIAotCWF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnKCZhbXA7cHJpdi0mZ3Q7c3BlY19wcml2LCBwcml2LSZndDtkZWJ1Zy5kZWJ1Z2ZzX3BoeSk7CiYjNDM7CWF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnKCZhbXA7cHJpdi0mZ3Q7c3BlY19wcml2LCBwcml2LSZndDtkZWJ1Zy5kZWJ1Z2ZzX3BoeSwKJiM0MzsJCQkJICAgICAgJmFtcDtwcml2LSZndDtkZWJ1Zy5yeF9zdGF0cyk7CiAKIAlkZWJ1Z2ZzX2NyZWF0ZV9maWxlKCYjMzQ7dGd0X2ludF9zdGF0cyYjMzQ7LCAwNDAwLCBwcml2LSZndDtkZWJ1Zy5kZWJ1Z2ZzX3BoeSwKIAkJCSAgICBwcml2LCAmYW1wO2ZvcHNfdGd0X2ludF9zdGF0cyk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwNTo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MjY5CgkJCQkJCQlvdXRwdXQ6IDE3OAoJCQkJCQkJdGhvdWdodHM6IDEyNDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgdGhlIFdpcmVsZXNzIFBhdGNoOiBLTVNBTiBBc3Nlc3NtZW50KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIHBhdGNoIGRvd24uIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgaXMgYSBmaXggcmVsYXRlZCB0byBzaGFyZWQgY29kZSBiZXR3ZWVuIHRoZSBgYXRoOWtgIGFuZCBgYXRoOWtfaHRjYCBkcml2ZXJzLiBUaGUgY29yZSBpc3N1ZSByZXZvbHZlcyBhcm91bmQgaG93IHRoZSBgY29tbW9uLXNwZWN0cmFsLmNgIG1vZHVsZSwgdXNlZCBieSBib3RoLCB3YXMgaW5jb3JyZWN0bHkgYXNzdW1pbmcgdGhlIHR5cGUgb2YgYGNvbW1vbi0mZ3Q7cHJpdmAuIFRoaXMgcG9pbnRlciB3YXMgYmVpbmcgY2FzdCB0byBgc3RydWN0IGF0aF9zb2Z0YyAqYCwgYnV0IGluIHRoZSBgYXRoOWtfaHRjYCBjYXNlLCBpdCYjMzk7cyBhY3R1YWxseSBzb21ldGhpbmcgZGlmZmVyZW50IChhIGBzdHJ1Y3QgYXRoOWtfaHRjX3ByaXZgIG9yIHNpbWlsYXIpLCBsZWFkaW5nIHRvIG91dC1vZi1ib3VuZHMgcmVhZHMvd3JpdGVzIHdoZW4gYWNjZXNzaW5nIHRoZSBzdGF0aXN0aWNzIHN0cnVjdHVyZS4gQmFzaWNhbGx5LCBhIGNsYXNzaWMgdHlwZSBjb25mdXNpb24gdnVsbmVyYWJpbGl0eS4KClRoZSBwYXRjaCByZXNvbHZlcyB0aGlzIGJ5IHBhc3NpbmcgdGhlIGBzdHJ1Y3QgYXRoX3J4X3N0YXRzICpgIHBvaW50ZXIgZGlyZWN0bHkgdG8gYGF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnYC4gIFRoaXMgcG9pbnRlciB0aGVuIGdldHMgc3RvcmVkIGluIGBzcGVjX3ByaXYtJmd0O3J4X3N0YXRzYCwgYW5kIHRoaXMgaXMgdXNlZCBmb3IgY291bnRlciBpbmNyZW1lbnRzIGluIGBhdGhfY21uX2NvdW50X2ZmdF9zYW1wbGVgLiBJbiBgYXRoOWtgLCB0aGlzIHBvaW50ZXIgY29tZXMgZnJvbSBgc2MtJmd0O2RlYnVnLnN0YXRzLnJ4c3RhdHNgLCBhbmQgaW4gYGF0aDlrX2h0Y2AsIGl0IGNvbWVzIGZyb20gYHByaXYtJmd0O2RlYnVnLnJ4X3N0YXRzYC4gVGhlIGNydWNpYWwgdGhpbmcgaGVyZSBpcyB0aGF0IHRoZSBwb2ludGVyIGlzIGV4cGxpY2l0bHkgcGFzc2VkLCBub3QgaW1wbGljaXRseSBkZXJpdmVkIHRocm91Z2ggYSBwb3RlbnRpYWxseSBpbmNvcnJlY3QgdHlwZSBjYXN0LgoKTXkgbWFpbiBmb2N1cyBub3cgaXMgb24gbWVtb3J5IHNhZmV0eS4gRG9lcyB0aGlzIGludHJvZHVjZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWVzPyAgSSYjMzk7dmUgY2hlY2tlZDogdGhpcyBwYXRjaCBkb2VzbiYjMzk7dCBjb3B5IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHRvIHVzZXIgc3BhY2UsIGl0IGRvZXNuJiMzOTt0IHJlYWQgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMgb3Igc3RydWN0IGZpZWxkcyAoYmVjYXVzZSBgcnhfc3RhdHNgIGlzIGluaXRpYWxpemVkIGFuZCBjaGVja2VkKS4gSXQgZG9lc24mIzM5O3QgbW9kaWZ5IGNvbmRpdGlvbmFsIGxvZ2ljIGJhc2VkIG9uIHVuaW5pdGlhbGl6ZWQgZGF0YS4gVGhlIGByeF9zdGF0c2AgcG9pbnRlciBpdHNlbGYgaXMgaW5pdGlhbGl6ZWQuIFRoaXMgaXMgYSB2ZXJ5IHRhcmdldGVkIGZpeCwgYW5kIHRoZXJlIGFyZSBubyBuZXcgcmlza3MgZnJvbSB1bmluaXRpYWxpemVkIGRhdGEuCgpMZXQgbWUgY29tcGFyZSB0aGUgYmVmb3JlIGFuZCBhZnRlciwgdG8gYmUgY2VydGFpbjogQmVmb3JlLCBgY29tbW9uLSZndDtwcml2YCB3YXMgYmVpbmcgY2FzdCB0byBgc3RydWN0IGF0aF9zb2Z0YyAqc2NgLCBhbmQgdGhlIGNvZGUgd291bGQgaW5jcmVtZW50IHRoZSBzdGF0aXN0aWNzIGRpcmVjdGx5LiBJbiBgYXRoOWtfaHRjYCwgdGhpcyBjYXVzZWQgYW4gaW52YWxpZCBtZW1vcnkgYWNjZXNzLiBOb3csIHdlJiMzOTtyZSBwYXNzaW5nIHRoZSBjb3JyZWN0IHBvaW50ZXIsIGByeF9zdGF0c2Agd2hpY2ggcG9pbnRzIHRvIGBzYy0mZ3Q7ZGVidWcuc3RhdHMucnhzdGF0c2Agb3IgYHByaXYtJmd0O2RlYnVnLnJ4X3N0YXRzYC4gVGhlIGNvcmUgZnVuY3Rpb25hbGl0eSAoaW5jcmVtZW50aW5nIGNvdW50ZXJzKSByZW1haW5zLCBidXQgdGhlIG1lbW9yeSBhY2Nlc3MgaXMgbm93IGRvbmUgd2l0aCBhIGNvcnJlY3QgcG9pbnRlci4KCk5vdywgbGV0JiMzOTtzIGFkZHJlc3MgS01TQU4gZGlyZWN0bHkuIFRoZSBgTmVlZHNLTVNBTmAgcnVsZSBzdGF0ZXMgaXQmIzM5O3MgKipmYWxzZSoqIGlmIHRoZSBwYXRjaCBwcmltYXJpbHkgZml4ZXMgaXNzdWVzIGxpa2Ugb3V0LW9mLWJvdW5kcyBhY2Nlc3MgKHdoaWNoIGl0IGRvZXMpLCBhbmQgaWYgYWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyBhcmUgaW5pdGlhbGl6ZWQuICBFdmVyeXRoaW5nIGhlcmUgKmlzKiBpbml0aWFsaXplZC4gV2UgYXJlbiYjMzk7dCByZWFkaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGVyZSYjMzk7cyBubyBpbmZvLWxlYWsgcmlzay4gU28sIHRoZSBwYXRjaCBtZWV0cyB0aGUgY29uZGl0aW9ucyBmb3IgYE5lZWRzS01TQU49ZmFsc2VgLiBTdGFuZGFyZCBzYW5pdGl6ZXJzIGFuZCBLQVNBTiB3aWxsIGNhdGNoIHRoZSBwcm9ibGVtcyBhZGRyZXNzZWQgYnkgdGhpcyBwYXRjaC4KCk15IGNvbmNsdXNpb24gaXMgY2xlYXI6IFRoaXMgcGF0Y2ggaXMgYSBtZW1vcnkgc2FmZXR5IGltcHJvdmVtZW50LiBJdCBmaXhlcyBhIHR5cGUgY29uZnVzaW9uLCBwcmV2ZW50aW5nIG91dC1vZi1ib3VuZHMgcmVhZHMvd3JpdGVzIGFuZCBwb3RlbnRpYWwgY3Jhc2hlcy4gIEtNU0FOIGlzbiYjMzk7dCBuZWNlc3NhcnkgaGVyZTsgS0FTQU4gYW5kIHN0YW5kYXJkIHNhbml0aXplcnMgaGFuZGxlIHRoZSByaXNrcy4gIExldCYjMzk7cyBzZXQgdGhlIHJlc3VsdHMgYW5kIG1vdmUgb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA1OjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgdHlwZSBjb25mdXNpb24gaXNzdWUgYmV0d2VlbiBhdGg5ayBhbmQgYXRoOWtfaHRjIGRyaXZlcnMgaW4gc2hhcmVkIHNwZWN0cmFsIHNjYW5uaW5nIGNvZGUgKGNvbW1vbi1zcGVjdHJhbC5jKSwgd2hlcmUgY29tbW9uLVx1MDAzZXByaXYgd2FzIHByZXZpb3VzbHkgY2FzdCB1bmNvbmRpdGlvbmFsbHkgdG8gc3RydWN0IGF0aF9zb2Z0YyAqLiBUaGUgZml4IHBhc3NlcyB0aGUgZHJpdmVyLXNwZWNpZmljIGF0aF9yeF9zdGF0cyBwb2ludGVyIGR1cmluZyBkZWJ1ZyBpbml0aWFsaXphdGlvbiBhbmQgaW5jcmVtZW50cyBzdGF0cyB0aHJvdWdoIHNwZWNfcHJpdi1cdTAwM2VyeF9zdGF0cyB3aXRoIGEgTlVMTCBjaGVjay5cblxuVGhpcyBjaGFuZ2Ugb25seSBhZmZlY3RzIHBvaW50ZXIgYXNzaWdubWVudCBhbmQgc3RhdGlzdGljIGNvdW50ZXIgaW5jcmVtZW50cy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSwgYWxsb2NhdGUgdW5pbml0aWFsaXplZCBidWZmZXJzLCBvciBwZXJmb3JtIGNvcGllcyB0byB1c2VyIHNwYWNlIG9mIHVuaW5pdGlhbGl6ZWQgZGF0YS4gQW55IG1lbW9yeSBzYWZldHkgY29uY2VybnMgKHN1Y2ggYXMgaW52YWxpZCBwb2ludGVyIGRlcmVmZXJlbmNlcyBvciB0eXBlIGNvbmZ1c2lvbikgYXJlIGFkZXF1YXRlbHkgY292ZXJlZCBieSBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgdHlwZSBjb25mdXNpb24gaXNzdWUgYmV0d2VlbiBhdGg5ayBhbmQgYXRoOWtfaHRjIGRyaXZlcnMgaW4gc2hhcmVkIHNwZWN0cmFsIHNjYW5uaW5nIGNvZGUgKGNvbW1vbi1zcGVjdHJhbC5jKSwgd2hlcmUgY29tbW9uLVx1MDAzZXByaXYgd2FzIHByZXZpb3VzbHkgY2FzdCB1bmNvbmRpdGlvbmFsbHkgdG8gc3RydWN0IGF0aF9zb2Z0YyAqLiBUaGUgZml4IHBhc3NlcyB0aGUgZHJpdmVyLXNwZWNpZmljIGF0aF9yeF9zdGF0cyBwb2ludGVyIGR1cmluZyBkZWJ1ZyBpbml0aWFsaXphdGlvbiBhbmQgaW5jcmVtZW50cyBzdGF0cyB0aHJvdWdoIHNwZWNfcHJpdi1cdTAwM2VyeF9zdGF0cyB3aXRoIGEgTlVMTCBjaGVjay5cblxuVGhpcyBjaGFuZ2Ugb25seSBhZmZlY3RzIHBvaW50ZXIgYXNzaWdubWVudCBhbmQgc3RhdGlzdGljIGNvdW50ZXIgaW5jcmVtZW50cy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSwgYWxsb2NhdGUgdW5pbml0aWFsaXplZCBidWZmZXJzLCBvciBwZXJmb3JtIGNvcGllcyB0byB1c2VyIHNwYWNlIG9mIHVuaW5pdGlhbGl6ZWQgZGF0YS4gQW55IG1lbW9yeSBzYWZldHkgY29uY2VybnMgKHN1Y2ggYXMgaW52YWxpZCBwb2ludGVyIGRlcmVmZXJlbmNlcyBvciB0eXBlIGNvbmZ1c2lvbikgYXJlIGFkZXF1YXRlbHkgY292ZXJlZCBieSBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDZUMDU6NDc6MzIuMDU1MjcwMTU2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAyMzcyNDE2ODA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkFUSDlLX0NPTU1PTl9TUEVDVFJBTFwiLFxuICAgIFwiQVRIOUtfSFRDX0RFQlVHRlNcIixcbiAgICBcIkFUSDlLX0hUQ1wiLFxuICAgIFwiQVRIOUtfREVCVUdGU1wiLFxuICAgIFwiQVRIOUtcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJhdGhfY21uX3Byb2Nlc3NfZmZ0XCIsXG4gICAgXCJhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1Z1wiLFxuICAgIFwiYXRoOWtfaHRjX2luaXRfZGVidWdcIixcbiAgICBcImF0aDlrX2luaXRfZGVidWdcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgdHlwZSBjb25mdXNpb24gaXNzdWUgYmV0d2VlbiBhdGg5ayBhbmQgYXRoOWtfaHRjIGRyaXZlcnMgaW4gc2hhcmVkIHNwZWN0cmFsIHNjYW5uaW5nIGNvZGUgKGNvbW1vbi1zcGVjdHJhbC5jKSwgd2hlcmUgY29tbW9uLVxcdTAwM2Vwcml2IHdhcyBwcmV2aW91c2x5IGNhc3QgdW5jb25kaXRpb25hbGx5IHRvIHN0cnVjdCBhdGhfc29mdGMgKi4gVGhlIGZpeCBwYXNzZXMgdGhlIGRyaXZlci1zcGVjaWZpYyBhdGhfcnhfc3RhdHMgcG9pbnRlciBkdXJpbmcgZGVidWcgaW5pdGlhbGl6YXRpb24gYW5kIGluY3JlbWVudHMgc3RhdHMgdGhyb3VnaCBzcGVjX3ByaXYtXFx1MDAzZXJ4X3N0YXRzIHdpdGggYSBOVUxMIGNoZWNrLlxcblxcblRoaXMgY2hhbmdlIG9ubHkgYWZmZWN0cyBwb2ludGVyIGFzc2lnbm1lbnQgYW5kIHN0YXRpc3RpYyBjb3VudGVyIGluY3JlbWVudHMuIEl0IGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnksIGFsbG9jYXRlIHVuaW5pdGlhbGl6ZWQgYnVmZmVycywgb3IgcGVyZm9ybSBjb3BpZXMgdG8gdXNlciBzcGFjZSBvZiB1bmluaXRpYWxpemVkIGRhdGEuIEFueSBtZW1vcnkgc2FmZXR5IGNvbmNlcm5zIChzdWNoIGFzIGludmFsaWQgcG9pbnRlciBkZXJlZmVyZW5jZXMgb3IgdHlwZSBjb25mdXNpb24pIGFyZSBhZGVxdWF0ZWx5IGNvdmVyZWQgYnkgS0FTQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHNwZWN0cmFsIHNjYW4gZGVidWcgaW5pdGlhbGl6YXRpb24gYW5kIEZGVCBzYW1wbGUgcHJvY2Vzc2luZyBpbiB0aGUgYXRoOWsgYW5kIGF0aDlrX2h0YyBkcml2ZXJzLiBhdGg5a19odGMgaXMgYSBVU0ItYmFzZWQgd2lyZWxlc3MgZHJpdmVyIGFjY2Vzc2libGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBVU0IgZW11bGF0aW9uLiBUaGUgY2hhbmdlcyBhbHRlciBob3cgc3BlY3RyYWwgc2FtcGxlIHN0YXRpc3RpY3MgYXJlIHRyYWNrZWQgYW5kIGluaXRpYWxpemVkIGFjcm9zcyBkcml2ZXJzIHNoYXJpbmcgY29tbW9uIHNwZWN0cmFsIHNjYW4gY29kZSwgbWFraW5nIGl0IHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDA1OjQ3OjMyLjA1NTI3ODIwNloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDk5NjkzNzY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMjkzN2U4NTRiODY1NWIxMmU1YjJkMWNiNzY0ZDAwYWJmZTRmOWViMFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIFNlcCA2IDA1OjQ3OjMxIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuY1xcbmluZGV4IGNhMDFhMDdmNjYzMGMuLmQ4YmUyNGViY2QyNDcgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jXFxuQEAgLTQ2NSw2ICs0NjUsMjAgQEAgYXRoX2Ntbl9pc19mZnRfYnVmX2Z1bGwoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2KVxcbiBcXHRcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4rc3RhdGljIHZvaWQgYXRoX2Ntbl9jb3VudF9mZnRfc2FtcGxlKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdixcXG4rXFx0XFx0XFx0XFx0ICAgICBpbnQgcmV0KVxcbit7XFxuK1xcdHN0cnVjdCBhdGhfcnhfc3RhdHMgKnJ4X3N0YXRzID0gc3BlY19wcml2LVxcdTAwM2VyeF9zdGF0cztcXG4rXFxuK1xcdGlmICghcnhfc3RhdHMpXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuK1xcdGlmIChyZXQgPT0gMClcXG4rXFx0XFx0cnhfc3RhdHMtXFx1MDAzZXJ4X3NwZWN0cmFsX3NhbXBsZV9nb29kKys7XFxuK1xcdGVsc2VcXG4rXFx0XFx0cnhfc3RhdHMtXFx1MDAzZXJ4X3NwZWN0cmFsX3NhbXBsZV9lcnIrKztcXG4rfVxcbitcXG4gLyogcmV0dXJucyAxIGlmIHRoaXMgd2FzIGEgc3BlY3RyYWwgZnJhbWUsIGV2ZW4gaWYgbm90IGhhbmRsZWQuICovXFxuIGludCBhdGhfY21uX3Byb2Nlc3NfZmZ0KHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiwgc3RydWN0IGllZWU4MDIxMV9oZHIgKmhkcixcXG4gXFx0XFx0ICAgIHN0cnVjdCBhdGhfcnhfc3RhdHVzICpycywgdTY0IHRzZilcXG5AQCAtNDcyLDcgKzQ4Niw2IEBAIGludCBhdGhfY21uX3Byb2Nlc3NfZmZ0KHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiwgc3RydWN0IGllZWU4MDIxMV9oXFxuIFxcdHU4IHNhbXBsZV9idWZbU1BFQ1RSQUxfU0FNUExFX01BWF9MRU5dID0gezB9O1xcbiBcXHRzdHJ1Y3QgYXRoX2h3ICphaCA9IHNwZWNfcHJpdi1cXHUwMDNlYWg7XFxuIFxcdHN0cnVjdCBhdGhfY29tbW9uICpjb21tb24gPSBhdGg5a19od19jb21tb24oc3BlY19wcml2LVxcdTAwM2VhaCk7XFxuLVxcdHN0cnVjdCBhdGhfc29mdGMgKnNjID0gY29tbW9uLVxcdTAwM2Vwcml2O1xcbiBcXHR1OCBudW1fYmlucywgKnZkYXRhID0gKHU4ICopaGRyO1xcbiBcXHRzdHJ1Y3QgYXRoX3JhZGFyX2luZm8gKnJhZGFyX2luZm87XFxuIFxcdGludCBsZW4gPSBycy1cXHUwMDNlcnNfZGF0YWxlbjtcXG5AQCAtNjI0LDEwICs2MzcsNyBAQCBpbnQgYXRoX2Ntbl9wcm9jZXNzX2ZmdChzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsIHN0cnVjdCBpZWVlODAyMTFfaFxcbiBcXHRcXHRcXHRcXHRyZXQgPSBmZnRfaGFuZGxlcihycywgc3BlY19wcml2LCBzYW1wbGVfYnVmLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHQgIHRzZiwgZnJlcSwgY2hhbl90eXBlKTtcXG4gXFxuLVxcdFxcdFxcdFxcdGlmIChyZXQgPT0gMClcXG4tXFx0XFx0XFx0XFx0XFx0UlhfU1RBVF9JTkMoc2MsIHJ4X3NwZWN0cmFsX3NhbXBsZV9nb29kKTtcXG4tXFx0XFx0XFx0XFx0ZWxzZVxcbi1cXHRcXHRcXHRcXHRcXHRSWF9TVEFUX0lOQyhzYywgcnhfc3BlY3RyYWxfc2FtcGxlX2Vycik7XFxuK1xcdFxcdFxcdFxcdGF0aF9jbW5fY291bnRfZmZ0X3NhbXBsZShzcGVjX3ByaXYsIHJldCk7XFxuIFxcbiBcXHRcXHRcXHRcXHQvKiBNaXggdGhlIHJlY2VpdmVkIGJpbnMgdG8gdGhlIC9kZXYvcmFuZG9tXFxuIFxcdFxcdFxcdFxcdCAqIHBvb2xcXG5AQCAtNjQyLDEwICs2NTIsNyBAQCBpbnQgYXRoX2Ntbl9wcm9jZXNzX2ZmdChzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsIHN0cnVjdCBpZWVlODAyMTFfaFxcbiBcXHRcXHRcXHRcXHRyZXQgPSBmZnRfaGFuZGxlcihycywgc3BlY19wcml2LCBzYW1wbGVfc3RhcnQsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCAgdHNmLCBmcmVxLCBjaGFuX3R5cGUpO1xcbiBcXG4tXFx0XFx0XFx0XFx0aWYgKHJldCA9PSAwKVxcbi1cXHRcXHRcXHRcXHRcXHRSWF9TVEFUX0lOQyhzYywgcnhfc3BlY3RyYWxfc2FtcGxlX2dvb2QpO1xcbi1cXHRcXHRcXHRcXHRlbHNlXFxuLVxcdFxcdFxcdFxcdFxcdFJYX1NUQVRfSU5DKHNjLCByeF9zcGVjdHJhbF9zYW1wbGVfZXJyKTtcXG4rXFx0XFx0XFx0XFx0YXRoX2Ntbl9jb3VudF9mZnRfc2FtcGxlKHNwZWNfcHJpdiwgcmV0KTtcXG4gXFxuIFxcdFxcdFxcdFxcdC8qIE1peCB0aGUgcmVjZWl2ZWQgYmlucyB0byB0aGUgL2Rldi9yYW5kb21cXG4gXFx0XFx0XFx0XFx0ICogcG9vbFxcbkBAIC0xMDUyLDggKzEwNTksMTAgQEAgdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfZGVpbml0X2RlYnVnKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdilcXG4gRVhQT1JUX1NZTUJPTChhdGg5a19jbW5fc3BlY3RyYWxfZGVpbml0X2RlYnVnKTtcXG4gXFxuIHZvaWQgYXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LFxcbi1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX3BoeSlcXG4rXFx0XFx0XFx0XFx0ICAgc3RydWN0IGRlbnRyeSAqZGVidWdmc19waHksXFxuK1xcdFxcdFxcdFxcdCAgIHN0cnVjdCBhdGhfcnhfc3RhdHMgKnJ4X3N0YXRzKVxcbiB7XFxuK1xcdHNwZWNfcHJpdi1cXHUwMDNlcnhfc3RhdHMgPSByeF9zdGF0cztcXG4gXFx0c3BlY19wcml2LVxcdTAwM2VyZnNfY2hhbl9zcGVjX3NjYW4gPSByZWxheV9vcGVuKFxcXCJzcGVjdHJhbF9zY2FuXFxcIixcXG4gXFx0XFx0XFx0XFx0XFx0ICAgIGRlYnVnZnNfcGh5LFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgMTAyNCwgMjU2LCBcXHUwMDI2cmZzX3NwZWNfc2Nhbl9jYixcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oXFxuaW5kZXggMDExZDhhYjhiOTc0NC4uMGUyYzdkNmQzNDg3NCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmhcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmhcXG5AQCAtOTQsMTIgKzk0LDE2IEBAIHN0cnVjdCBhdGhfaHQyMF80MF9mZnRfcGFja2V0IHtcXG4gXFx0c3RydWN0IGF0aF9yYWRhcl9pbmZvIHJhZGFyX2luZm87XFxuIH0gX19wYWNrZWQ7XFxuIFxcbitzdHJ1Y3QgYXRoX3J4X3N0YXRzO1xcbitcXG4gc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiB7XFxuIFxcdHN0cnVjdCBhdGhfaHcgKmFoO1xcbiBcXHQvKiByZWxheShmcykgY2hhbm5lbCBmb3Igc3BlY3RyYWwgc2NhbiAqL1xcbiBcXHRzdHJ1Y3QgcmNoYW4gKnJmc19jaGFuX3NwZWNfc2NhbjtcXG4gXFx0ZW51bSBzcGVjdHJhbF9tb2RlIHNwZWN0cmFsX21vZGU7XFxuIFxcdHN0cnVjdCBhdGhfc3BlY19zY2FuIHNwZWNfY29uZmlnO1xcbitcXHQvKiBkcml2ZXIncyBSWCBzdGF0aXN0aWNzIHRvIGFjY291bnQgc2FtcGxlcyBpbnRvLCBpZiBhbnkgKi9cXG4rXFx0c3RydWN0IGF0aF9yeF9zdGF0cyAqcnhfc3RhdHM7XFxuIH07XFxuIFxcbiAjZGVmaW5lIFNQRUNUUkFMX0hUMjBfNDBfVE9UQUxfREFUQV9MRU5cXHQoc2l6ZW9mKHN0cnVjdCBhdGhfaHQyMF80MF9mZnRfcGFja2V0KSlcXG5AQCAtMTY5LDcgKzE3Myw5IEBAIHN0YXRpYyBpbmxpbmUgdTggc3BlY3RyYWxfYml0bWFwX3dlaWdodCh1OCAqYmlucylcXG4gfVxcbiBcXG4gI2lmZGVmIENPTkZJR19BVEg5S19DT01NT05fU1BFQ1RSQUxcXG4tdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsIHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcGh5KTtcXG4rdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsXFxuK1xcdFxcdFxcdFxcdCAgIHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcGh5LFxcbitcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgYXRoX3J4X3N0YXRzICpyeF9zdGF0cyk7XFxuIHZvaWQgYXRoOWtfY21uX3NwZWN0cmFsX2RlaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYpO1xcbiBcXG4gdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfc2Nhbl90cmlnZ2VyKHN0cnVjdCBhdGhfY29tbW9uICpjb21tb24sXFxuQEAgLTE4MSw3ICsxODcsOCBAQCBpbnQgYXRoX2Ntbl9wcm9jZXNzX2ZmdChzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsIHN0cnVjdCBpZWVlODAyMTFfaFxcbiBcXHRcXHQgICAgc3RydWN0IGF0aF9yeF9zdGF0dXMgKnJzLCB1NjQgdHNmKTtcXG4gI2Vsc2VcXG4gc3RhdGljIGlubGluZSB2b2lkIGF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdixcXG4tXFx0XFx0XFx0XFx0XFx0XFx0IHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcGh5KVxcbitcXHRcXHRcXHRcXHRcXHRcXHQgc3RydWN0IGRlbnRyeSAqZGVidWdmc19waHksXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCBzdHJ1Y3QgYXRoX3J4X3N0YXRzICpyeF9zdGF0cylcXG4ge1xcbiB9XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGVidWcuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZWJ1Zy5jXFxuaW5kZXggNzRhMDEzNDA3NWNmOS4uMDQyYTRmNTQyYTk0MyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGVidWcuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZWJ1Zy5jXFxuQEAgLTEzODksNyArMTM4OSw4IEBAIGludCBhdGg5a19pbml0X2RlYnVnKHN0cnVjdCBhdGhfaHcgKmFoKVxcbiBcXG4gXFx0YXRoOWtfZGZzX2luaXRfZGVidWcoc2MpO1xcbiBcXHRhdGg5a190eDk5X2luaXRfZGVidWcoc2MpO1xcbi1cXHRhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhcXHUwMDI2c2MtXFx1MDAzZXNwZWNfcHJpdiwgc2MtXFx1MDAzZWRlYnVnLmRlYnVnZnNfcGh5KTtcXG4rXFx0YXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoXFx1MDAyNnNjLVxcdTAwM2VzcGVjX3ByaXYsIHNjLVxcdTAwM2VkZWJ1Zy5kZWJ1Z2ZzX3BoeSxcXG4rXFx0XFx0XFx0XFx0ICAgICAgXFx1MDAyNnNjLVxcdTAwM2VkZWJ1Zy5zdGF0cy5yeHN0YXRzKTtcXG4gXFxuIFxcdGRlYnVnZnNfY3JlYXRlX2Rldm1fc2VxZmlsZShzYy1cXHUwMDNlZGV2LCBcXFwiZG1hXFxcIiwgc2MtXFx1MDAzZWRlYnVnLmRlYnVnZnNfcGh5LFxcbiBcXHRcXHRcXHRcXHQgICAgcmVhZF9maWxlX2RtYSk7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jXFxuaW5kZXggOTQzN2Q2OTg3N2NjNS4uOWQzNTRiMWQ5MjljOCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuY1xcbkBAIC00ODcsNyArNDg3LDggQEAgaW50IGF0aDlrX2h0Y19pbml0X2RlYnVnKHN0cnVjdCBhdGhfaHcgKmFoKVxcbiBcXHRwcml2LVxcdTAwM2VkZWJ1Zy5kZWJ1Z2ZzX3BoeSA9IGRlYnVnZnNfY3JlYXRlX2RpcihLQlVJTERfTU9ETkFNRSxcXG4gXFx0XFx0XFx0XFx0XFx0ICAgICBwcml2LVxcdTAwM2Vody1cXHUwMDNld2lwaHktXFx1MDAzZWRlYnVnZnNkaXIpO1xcbiBcXG4tXFx0YXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoXFx1MDAyNnByaXYtXFx1MDAzZXNwZWNfcHJpdiwgcHJpdi1cXHUwMDNlZGVidWcuZGVidWdmc19waHkpO1xcbitcXHRhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhcXHUwMDI2cHJpdi1cXHUwMDNlc3BlY19wcml2LCBwcml2LVxcdTAwM2VkZWJ1Zy5kZWJ1Z2ZzX3BoeSxcXG4rXFx0XFx0XFx0XFx0ICAgICAgXFx1MDAyNnByaXYtXFx1MDAzZWRlYnVnLnJ4X3N0YXRzKTtcXG4gXFxuIFxcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXFxcInRndF9pbnRfc3RhdHNcXFwiLCAwNDAwLCBwcml2LVxcdTAwM2VkZWJ1Zy5kZWJ1Z2ZzX3BoeSxcXG4gXFx0XFx0XFx0ICAgIHByaXYsIFxcdTAwMjZmb3BzX3RndF9pbnRfc3RhdHMpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNTo0NzozMi41NTU5OTAxMjNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjkzODM5Njc5MjMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkFUSDlLX0NPTU1PTl9TUEVDVFJBTFwiLFxuICAgIFwiQVRIOUtfSFRDX0RFQlVHRlNcIixcbiAgICBcIkFUSDlLX0hUQ1wiLFxuICAgIFwiQVRIOUtfREVCVUdGU1wiLFxuICAgIFwiQVRIOUtcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJhdGhfY21uX3Byb2Nlc3NfZmZ0XCIsXG4gICAgXCJhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1Z1wiLFxuICAgIFwiYXRoOWtfaHRjX2luaXRfZGVidWdcIixcbiAgICBcImF0aDlrX2luaXRfZGVidWdcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgc3BlY3RyYWwgc2NhbiBkZWJ1ZyBpbml0aWFsaXphdGlvbiBhbmQgRkZUIHNhbXBsZSBwcm9jZXNzaW5nIGluIHRoZSBhdGg5ayBhbmQgYXRoOWtfaHRjIGRyaXZlcnMuIGF0aDlrX2h0YyBpcyBhIFVTQi1iYXNlZCB3aXJlbGVzcyBkcml2ZXIgYWNjZXNzaWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIFVTQiBlbXVsYXRpb24uIFRoZSBjaGFuZ2VzIGFsdGVyIGhvdyBzcGVjdHJhbCBzYW1wbGUgc3RhdGlzdGljcyBhcmUgdHJhY2tlZCBhbmQgaW5pdGlhbGl6ZWQgYWNyb3NzIGRyaXZlcnMgc2hhcmluZyBjb21tb24gc3BlY3RyYWwgc2NhbiBjb2RlLCBtYWtpbmcgaXQgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAyOTM3ZTg1NGI4NjU1YjEyZTViMmQxY2I3NjRkMDBhYmZlNGY5ZWIwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBTZXAgNiAwNTo0NzozMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuY1xuaW5kZXggY2EwMWEwN2Y2NjMwYy4uZDhiZTI0ZWJjZDI0NyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jXG5AQCAtNDY1LDYgKzQ2NSwyMCBAQCBhdGhfY21uX2lzX2ZmdF9idWZfZnVsbChzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYpXG4gXHRcdHJldHVybiAwO1xuIH1cbiBcbitzdGF0aWMgdm9pZCBhdGhfY21uX2NvdW50X2ZmdF9zYW1wbGUoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LFxuK1x0XHRcdFx0ICAgICBpbnQgcmV0KVxuK3tcbitcdHN0cnVjdCBhdGhfcnhfc3RhdHMgKnJ4X3N0YXRzID0gc3BlY19wcml2LVx1MDAzZXJ4X3N0YXRzO1xuK1xuK1x0aWYgKCFyeF9zdGF0cylcbitcdFx0cmV0dXJuO1xuK1xuK1x0aWYgKHJldCA9PSAwKVxuK1x0XHRyeF9zdGF0cy1cdTAwM2VyeF9zcGVjdHJhbF9zYW1wbGVfZ29vZCsrO1xuK1x0ZWxzZVxuK1x0XHRyeF9zdGF0cy1cdTAwM2VyeF9zcGVjdHJhbF9zYW1wbGVfZXJyKys7XG4rfVxuK1xuIC8qIHJldHVybnMgMSBpZiB0aGlzIHdhcyBhIHNwZWN0cmFsIGZyYW1lLCBldmVuIGlmIG5vdCBoYW5kbGVkLiAqL1xuIGludCBhdGhfY21uX3Byb2Nlc3NfZmZ0KHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiwgc3RydWN0IGllZWU4MDIxMV9oZHIgKmhkcixcbiBcdFx0ICAgIHN0cnVjdCBhdGhfcnhfc3RhdHVzICpycywgdTY0IHRzZilcbkBAIC00NzIsNyArNDg2LDYgQEAgaW50IGF0aF9jbW5fcHJvY2Vzc19mZnQoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LCBzdHJ1Y3QgaWVlZTgwMjExX2hcbiBcdHU4IHNhbXBsZV9idWZbU1BFQ1RSQUxfU0FNUExFX01BWF9MRU5dID0gezB9O1xuIFx0c3RydWN0IGF0aF9odyAqYWggPSBzcGVjX3ByaXYtXHUwMDNlYWg7XG4gXHRzdHJ1Y3QgYXRoX2NvbW1vbiAqY29tbW9uID0gYXRoOWtfaHdfY29tbW9uKHNwZWNfcHJpdi1cdTAwM2VhaCk7XG4tXHRzdHJ1Y3QgYXRoX3NvZnRjICpzYyA9IGNvbW1vbi1cdTAwM2Vwcml2O1xuIFx0dTggbnVtX2JpbnMsICp2ZGF0YSA9ICh1OCAqKWhkcjtcbiBcdHN0cnVjdCBhdGhfcmFkYXJfaW5mbyAqcmFkYXJfaW5mbztcbiBcdGludCBsZW4gPSBycy1cdTAwM2Vyc19kYXRhbGVuO1xuQEAgLTYyNCwxMCArNjM3LDcgQEAgaW50IGF0aF9jbW5fcHJvY2Vzc19mZnQoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LCBzdHJ1Y3QgaWVlZTgwMjExX2hcbiBcdFx0XHRcdHJldCA9IGZmdF9oYW5kbGVyKHJzLCBzcGVjX3ByaXYsIHNhbXBsZV9idWYsXG4gXHRcdFx0XHRcdFx0ICB0c2YsIGZyZXEsIGNoYW5fdHlwZSk7XG4gXG4tXHRcdFx0XHRpZiAocmV0ID09IDApXG4tXHRcdFx0XHRcdFJYX1NUQVRfSU5DKHNjLCByeF9zcGVjdHJhbF9zYW1wbGVfZ29vZCk7XG4tXHRcdFx0XHRlbHNlXG4tXHRcdFx0XHRcdFJYX1NUQVRfSU5DKHNjLCByeF9zcGVjdHJhbF9zYW1wbGVfZXJyKTtcbitcdFx0XHRcdGF0aF9jbW5fY291bnRfZmZ0X3NhbXBsZShzcGVjX3ByaXYsIHJldCk7XG4gXG4gXHRcdFx0XHQvKiBNaXggdGhlIHJlY2VpdmVkIGJpbnMgdG8gdGhlIC9kZXYvcmFuZG9tXG4gXHRcdFx0XHQgKiBwb29sXG5AQCAtNjQyLDEwICs2NTIsNyBAQCBpbnQgYXRoX2Ntbl9wcm9jZXNzX2ZmdChzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsIHN0cnVjdCBpZWVlODAyMTFfaFxuIFx0XHRcdFx0cmV0ID0gZmZ0X2hhbmRsZXIocnMsIHNwZWNfcHJpdiwgc2FtcGxlX3N0YXJ0LFxuIFx0XHRcdFx0XHRcdCAgdHNmLCBmcmVxLCBjaGFuX3R5cGUpO1xuIFxuLVx0XHRcdFx0aWYgKHJldCA9PSAwKVxuLVx0XHRcdFx0XHRSWF9TVEFUX0lOQyhzYywgcnhfc3BlY3RyYWxfc2FtcGxlX2dvb2QpO1xuLVx0XHRcdFx0ZWxzZVxuLVx0XHRcdFx0XHRSWF9TVEFUX0lOQyhzYywgcnhfc3BlY3RyYWxfc2FtcGxlX2Vycik7XG4rXHRcdFx0XHRhdGhfY21uX2NvdW50X2ZmdF9zYW1wbGUoc3BlY19wcml2LCByZXQpO1xuIFxuIFx0XHRcdFx0LyogTWl4IHRoZSByZWNlaXZlZCBiaW5zIHRvIHRoZSAvZGV2L3JhbmRvbVxuIFx0XHRcdFx0ICogcG9vbFxuQEAgLTEwNTIsOCArMTA1OSwxMCBAQCB2b2lkIGF0aDlrX2Ntbl9zcGVjdHJhbF9kZWluaXRfZGVidWcoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2KVxuIEVYUE9SVF9TWU1CT0woYXRoOWtfY21uX3NwZWN0cmFsX2RlaW5pdF9kZWJ1Zyk7XG4gXG4gdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsXG4tXHRcdFx0XHQgICBzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX3BoeSlcbitcdFx0XHRcdCAgIHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcGh5LFxuK1x0XHRcdFx0ICAgc3RydWN0IGF0aF9yeF9zdGF0cyAqcnhfc3RhdHMpXG4ge1xuK1x0c3BlY19wcml2LVx1MDAzZXJ4X3N0YXRzID0gcnhfc3RhdHM7XG4gXHRzcGVjX3ByaXYtXHUwMDNlcmZzX2NoYW5fc3BlY19zY2FuID0gcmVsYXlfb3BlbihcInNwZWN0cmFsX3NjYW5cIixcbiBcdFx0XHRcdFx0ICAgIGRlYnVnZnNfcGh5LFxuIFx0XHRcdFx0XHQgICAgMTAyNCwgMjU2LCBcdTAwMjZyZnNfc3BlY19zY2FuX2NiLFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaFxuaW5kZXggMDExZDhhYjhiOTc0NC4uMGUyYzdkNmQzNDg3NCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oXG5AQCAtOTQsMTIgKzk0LDE2IEBAIHN0cnVjdCBhdGhfaHQyMF80MF9mZnRfcGFja2V0IHtcbiBcdHN0cnVjdCBhdGhfcmFkYXJfaW5mbyByYWRhcl9pbmZvO1xuIH0gX19wYWNrZWQ7XG4gXG4rc3RydWN0IGF0aF9yeF9zdGF0cztcbitcbiBzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2IHtcbiBcdHN0cnVjdCBhdGhfaHcgKmFoO1xuIFx0LyogcmVsYXkoZnMpIGNoYW5uZWwgZm9yIHNwZWN0cmFsIHNjYW4gKi9cbiBcdHN0cnVjdCByY2hhbiAqcmZzX2NoYW5fc3BlY19zY2FuO1xuIFx0ZW51bSBzcGVjdHJhbF9tb2RlIHNwZWN0cmFsX21vZGU7XG4gXHRzdHJ1Y3QgYXRoX3NwZWNfc2NhbiBzcGVjX2NvbmZpZztcbitcdC8qIGRyaXZlcidzIFJYIHN0YXRpc3RpY3MgdG8gYWNjb3VudCBzYW1wbGVzIGludG8sIGlmIGFueSAqL1xuK1x0c3RydWN0IGF0aF9yeF9zdGF0cyAqcnhfc3RhdHM7XG4gfTtcbiBcbiAjZGVmaW5lIFNQRUNUUkFMX0hUMjBfNDBfVE9UQUxfREFUQV9MRU5cdChzaXplb2Yoc3RydWN0IGF0aF9odDIwXzQwX2ZmdF9wYWNrZXQpKVxuQEAgLTE2OSw3ICsxNzMsOSBAQCBzdGF0aWMgaW5saW5lIHU4IHNwZWN0cmFsX2JpdG1hcF93ZWlnaHQodTggKmJpbnMpXG4gfVxuIFxuICNpZmRlZiBDT05GSUdfQVRIOUtfQ09NTU9OX1NQRUNUUkFMXG4tdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsIHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcGh5KTtcbit2b2lkIGF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdixcbitcdFx0XHRcdCAgIHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcGh5LFxuK1x0XHRcdFx0ICAgc3RydWN0IGF0aF9yeF9zdGF0cyAqcnhfc3RhdHMpO1xuIHZvaWQgYXRoOWtfY21uX3NwZWN0cmFsX2RlaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYpO1xuIFxuIHZvaWQgYXRoOWtfY21uX3NwZWN0cmFsX3NjYW5fdHJpZ2dlcihzdHJ1Y3QgYXRoX2NvbW1vbiAqY29tbW9uLFxuQEAgLTE4MSw3ICsxODcsOCBAQCBpbnQgYXRoX2Ntbl9wcm9jZXNzX2ZmdChzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsIHN0cnVjdCBpZWVlODAyMTFfaFxuIFx0XHQgICAgc3RydWN0IGF0aF9yeF9zdGF0dXMgKnJzLCB1NjQgdHNmKTtcbiAjZWxzZVxuIHN0YXRpYyBpbmxpbmUgdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsXG4tXHRcdFx0XHRcdFx0IHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcGh5KVxuK1x0XHRcdFx0XHRcdCBzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX3BoeSxcbitcdFx0XHRcdFx0XHQgc3RydWN0IGF0aF9yeF9zdGF0cyAqcnhfc3RhdHMpXG4ge1xuIH1cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGVidWcuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZWJ1Zy5jXG5pbmRleCA3NGEwMTM0MDc1Y2Y5Li4wNDJhNGY1NDJhOTQzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2RlYnVnLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZWJ1Zy5jXG5AQCAtMTM4OSw3ICsxMzg5LDggQEAgaW50IGF0aDlrX2luaXRfZGVidWcoc3RydWN0IGF0aF9odyAqYWgpXG4gXG4gXHRhdGg5a19kZnNfaW5pdF9kZWJ1ZyhzYyk7XG4gXHRhdGg5a190eDk5X2luaXRfZGVidWcoc2MpO1xuLVx0YXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoXHUwMDI2c2MtXHUwMDNlc3BlY19wcml2LCBzYy1cdTAwM2VkZWJ1Zy5kZWJ1Z2ZzX3BoeSk7XG4rXHRhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhcdTAwMjZzYy1cdTAwM2VzcGVjX3ByaXYsIHNjLVx1MDAzZWRlYnVnLmRlYnVnZnNfcGh5LFxuK1x0XHRcdFx0ICAgICAgXHUwMDI2c2MtXHUwMDNlZGVidWcuc3RhdHMucnhzdGF0cyk7XG4gXG4gXHRkZWJ1Z2ZzX2NyZWF0ZV9kZXZtX3NlcWZpbGUoc2MtXHUwMDNlZGV2LCBcImRtYVwiLCBzYy1cdTAwM2VkZWJ1Zy5kZWJ1Z2ZzX3BoeSxcbiBcdFx0XHRcdCAgICByZWFkX2ZpbGVfZG1hKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuY1xuaW5kZXggOTQzN2Q2OTg3N2NjNS4uOWQzNTRiMWQ5MjljOCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmNcbkBAIC00ODcsNyArNDg3LDggQEAgaW50IGF0aDlrX2h0Y19pbml0X2RlYnVnKHN0cnVjdCBhdGhfaHcgKmFoKVxuIFx0cHJpdi1cdTAwM2VkZWJ1Zy5kZWJ1Z2ZzX3BoeSA9IGRlYnVnZnNfY3JlYXRlX2RpcihLQlVJTERfTU9ETkFNRSxcbiBcdFx0XHRcdFx0ICAgICBwcml2LVx1MDAzZWh3LVx1MDAzZXdpcGh5LVx1MDAzZWRlYnVnZnNkaXIpO1xuIFxuLVx0YXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoXHUwMDI2cHJpdi1cdTAwM2VzcGVjX3ByaXYsIHByaXYtXHUwMDNlZGVidWcuZGVidWdmc19waHkpO1xuK1x0YXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoXHUwMDI2cHJpdi1cdTAwM2VzcGVjX3ByaXYsIHByaXYtXHUwMDNlZGVidWcuZGVidWdmc19waHksXG4rXHRcdFx0XHQgICAgICBcdTAwMjZwcml2LVx1MDAzZWRlYnVnLnJ4X3N0YXRzKTtcbiBcbiBcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXCJ0Z3RfaW50X3N0YXRzXCIsIDA0MDAsIHByaXYtXHUwMDNlZGVidWcuZGVidWdmc19waHksXG4gXHRcdFx0ICAgIHByaXYsIFx1MDAyNmZvcHNfdGd0X2ludF9zdGF0cyk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNTo0NzozMi41NTU5OTI1NjNaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1MTM2NDU0Njg0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBhdGNoIGZvciBTeXprYWxsZXIgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IGlmIHRoaXMgcGF0Y2ggaXMgZXZlbiAqd29ydGgqIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuIFRoZSBwYXRjaCBpcyB0b3VjaGluZyBmaWxlcyBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2AsIHNwZWNpZmljYWxseSBgY29tbW9uLXNwZWN0cmFsLmNgLCBgY29tbW9uLXNwZWN0cmFsLmhgLCBgZGVidWcuY2AsIGFuZCBgaHRjX2Rydl9kZWJ1Zy5jYC4gQWxyaWdodCwgdGhhdCdzIHRoZSBzY29wZS4gTm93LCB0aGUga2V5IHF1ZXN0aW9uOiBpcyBgYXRoOWtgIGFjY2Vzc2libGUgdmlhIHRoZSBzeXprYWxsZXIgZnJhbWV3b3JrP1xuXG5GaXJzdCwgSSBuZWVkIHRvIGtub3cgdGhlIGRyaXZlciB0eXBlLiBJcyBpdCBQQ0ksIFVTQiwgb3IgYm90aD8gQSBxdWljayBjaGVjayByZXZlYWxzIGBhdGg5a2AgaXRzZWxmIGlzIFBDSS9Tb0MsIGJ1dCBgYXRoOWtfaHRjYCBpcyBVU0IhIEJpbmdvISBVU0IgZHJpdmVycyBhcmUgYWJzb2x1dGVseSB3aXRoaW4gc3l6a2FsbGVyJ3Mgd2hlZWxob3VzZSwgcGFydGljdWxhcmx5IHZpYSByYXdfZ2FkZ2V0LCBkdW1teV9oY2QsIG9yIHZoY2kgZm9yIGVtdWxhdGlvbi4gVGhpcyBsb29rcyBwcm9taXNpbmcuIFRoZSBmYWN0IHRoYXQgdGhlIHBhdGNoIHRvdWNoZXMgYGh0Y19kcnZfZGVidWcuY2AgZnVydGhlciByZWluZm9yY2VzIHRoZSBjb25uZWN0aW9uIHRvIFVTQi5cblxuTm93LCBJJ2xsIG5lZWQgdG8gZGlnIGRlZXBlci4gSSdsbCBuZWVkIHRvIGV4YW1pbmUgYGh0Y19kcnZfZGVidWcuY2Agc3BlY2lmaWNhbGx5LCBhbmQgaG93IHRoZSBgYXRoOWtfaHRjYCBkcml2ZXIgZnVuY3Rpb25zLiBJIGNhbiB1c2UgbXkgcHJlZmVycmVkIHRvb2xzLCBsaWtlIGdyZXBwZXIgb3IgcmVhZGluZyB0aGUgZmlsZSwgdG8gZmluZCBvdXQgaG93IGl0IHdpbGwgd29yayB3aXRoIHN5emthbGxlci4gTGV0J3Mgc3RhcnQgdGhlIHNlYXJjaCBhbmQgdW5kZXJzdGFuZCBpZiB0aGUgYGF0aDlrX2h0Y2AgY2FuIGJlIGZ1enplZCFcblxuXG4iLCJJbnB1dFRva2VucyI6NTA1NywiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzMSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDA1OjQ4OjIzLjkyMDU0NDY3NloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzAzNDAwNTgyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYz0xMDU5PUVYUE9SVF9TWU1CT0woYXRoOWtfY21uX3NwZWN0cmFsX2RlaW5pdF9kZWJ1Zyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTEwNjAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjEwNjE6dm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTEwNjItXFx0XFx0XFx0XFx0ICAgc3RydWN0IGRlbnRyeSAqZGVidWdmc19waHksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTA5My19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjEwOTQ6RVhQT1JUX1NZTUJPTChhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1Zyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmg9MTcwPXN0YXRpYyBpbmxpbmUgdTggc3BlY3RyYWxfYml0bWFwX3dlaWdodCh1OCAqYmlucylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaC0xNzUtI2lmZGVmIENPTkZJR19BVEg5S19DT01NT05fU1BFQ1RSQUxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmg6MTc2OnZvaWQgYXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaC0xNzctXFx0XFx0XFx0XFx0ICAgc3RydWN0IGRlbnRyeSAqZGVidWdmc19waHksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmg9MTg2PWludCBhdGhfY21uX3Byb2Nlc3NfZmZ0KHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiwgc3RydWN0IGllZWU4MDIxMV9oZHIgKmhkcixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaC0xODgtI2Vsc2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmg6MTg5OnN0YXRpYyBpbmxpbmUgdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oLTE5MC1cXHRcXHRcXHRcXHRcXHRcXHQgc3RydWN0IGRlbnRyeSAqZGVidWdmc19waHksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGVidWcuYz0xMzc3PWludCBhdGg5a19pbml0X2RlYnVnKHN0cnVjdCBhdGhfaHcgKmFoKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2RlYnVnLmMtMTM5MS1cXHRhdGg5a190eDk5X2luaXRfZGVidWcoc2MpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZWJ1Zy5jOjEzOTI6XFx0YXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoXFx1MDAyNnNjLVxcdTAwM2VzcGVjX3ByaXYsIHNjLVxcdTAwM2VkZWJ1Zy5kZWJ1Z2ZzX3BoeSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGVidWcuYy0xMzkzLVxcdFxcdFxcdFxcdCAgICAgIFxcdTAwMjZzYy1cXHUwMDNlZGVidWcuc3RhdHMucnhzdGF0cyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jPTQ4Mj1pbnQgYXRoOWtfaHRjX2luaXRfZGVidWcoc3RydWN0IGF0aF9odyAqYWgpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jLTQ4OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jOjQ5MDpcXHRhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhcXHUwMDI2cHJpdi1cXHUwMDNlc3BlY19wcml2LCBwcml2LVxcdTAwM2VkZWJ1Zy5kZWJ1Z2ZzX3BoeSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jLTQ5MS1cXHRcXHRcXHRcXHQgICAgICBcXHUwMDI2cHJpdi1cXHUwMDNlZGVidWcucnhfc3RhdHMpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNTo0ODoyNi42MjM5NTU0OThaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1NDA2NDYyNDk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFBhdGNoOiBBIERlZXAgRGl2ZSBpbnRvIERyaXZlciBEYXRhIFN0cnVjdHVyZXMgYW5kIFBvdGVudGlhbCBNZW1vcnkgQ29ycnVwdGlvbioqXG5cbkFscmlnaHQsIGxldCdzIGRpc3NlY3QgdGhpcyBwYXRjaCBhbmQgZmlndXJlIG91dCB0aGUgcmVhc29uaW5nIGJlaGluZCB0aGUgY2hhbmdlcy4gRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBoYXBwZW5pbmcgd2l0aGluIHRoZSBgYXRoX2Ntbl9wcm9jZXNzX2ZmdGAgZnVuY3Rpb24uIFRha2luZyBhIGxvb2sgYXQgdGhlIGNvZGUgYmVmb3JlIHRoZSBwYXRjaCwgSSBzZWUgYW4gYWNjZXNzIHBhdHRlcm4gdGhhdCBpbW1lZGlhdGVseSByYWlzZXMgYSBmbGFnOlxuXG5gYGBjXG5zdHJ1Y3QgYXRoX2h3ICphaCA9IHNwZWNfcHJpdi1cdTAwM2VhaDtcbnN0cnVjdCBhdGhfY29tbW9uICpjb21tb24gPSBhdGg5a19od19jb21tb24oc3BlY19wcml2LVx1MDAzZWFoKTtcbnN0cnVjdCBhdGhfc29mdGMgKnNjID0gY29tbW9uLVx1MDAzZXByaXY7XG4uLi5cbmlmIChyZXQgPT0gMClcbiAgICBSWF9TVEFUX0lOQyhzYywgcnhfc3BlY3RyYWxfc2FtcGxlX2dvb2QpO1xuZWxzZVxuICAgIFJYX1NUQVRfSU5DKHNjLCByeF9zcGVjdHJhbF9zYW1wbGVfZXJyKTtcbmBgYFxuXG5TcGVjaWZpY2FsbHksIHRoZSBsaW5lIHdoZXJlIGBjb21tb24tXHUwMDNlcHJpdmAgaXMgY2FzdCB0byBhIGBzdHJ1Y3QgYXRoX3NvZnRjICpzY2AuIEkga25vdywgZnJvbSBteSBleHBlcmllbmNlIHdpdGggdGhlIGBhdGg5a2AgZHJpdmVyLCB0aGF0IGBjb21tb24tXHUwMDNlcHJpdmAgaXMgaW5kZWVkIGEgYHN0cnVjdCBhdGhfc29mdGMgKmAuIEJ1dCwgdGhpcyBpcyBhIHNoYXJlZCBmaWxlIGJldHdlZW4gYGF0aDlrYCBhbmQgYGF0aDlrX2h0Y2AuIFdoYXQgaWYgdGhpcyBhY2Nlc3MgaXMgdXNlZCBpbiBgYXRoOWtfaHRjYCBhcyB3ZWxsPyBJIG5lZWQgdG8gY2hlY2sgd2hhdCBgYXRoOWtfaHRjYCBhY3R1YWxseSBzZXRzIGBjb21tb24tXHUwMDNlcHJpdmAgdG8uIE9yLCByYXRoZXIsIHdoYXQgdGhlIHR5cGUgb2YgdGhlIHN0cnVjdCBwb2ludGVkIHRvIGJ5IGBjb21tb24tXHUwMDNlcHJpdmAgaXMuXG5cbkJpbmdvISBJbiBgYXRoOWtfaHRjYCwgYGNvbW1vbi1cdTAwM2Vwcml2YCBpcyBhY3R1YWxseSBhIGBzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXZgLiBTbywgdGhlIGBSWF9TVEFUX0lOQyhzYywgLi4uKWAgbWFjcm8gaXMgbGlrZWx5IGluY3JlbWVudGluZyBhIG1lbWJlciBvZiBhIHN0cnVjdHVyZSBwb2ludGVkIHRvIGJ5IGBzY2AuXG5cblRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBhcmUgaW1tZWRpYXRlIGFuZCBzaWduaWZpY2FudC4gSWYgYHNjYCBpcyB0cmVhdGVkIGFzIGEgYHN0cnVjdCBhdGhfc29mdGMgKmAgd2hlbiBpdCdzIGFjdHVhbGx5IGEgYHN0cnVjdCBhdGg5a19odGNfcHJpdiAqYCwgdGhlbiB3ZSBoYXZlIGEgY2xhc3NpYyBjYXNlIG9mIG1lbW9yeSBjb3JydXB0aW9uIG9yIGludmFsaWQgc3RydWN0IG1lbWJlciBhY2Nlc3MhIFRoaXMgd291bGQgZGVwZW5kIG9uIHRoZSBzaXplIG9mIHRoZSAyIHN0cnVjdHMsIGFuZCB3aGljaCBmaWVsZHMgdGhlIGluY3JlbWVudCB0YXJnZXRzLlxuXG5UaGlzIHBhdGNoLCB0aGVuLCBpcyBhIGJ1Z2ZpeC4gSXQgYWRkcmVzc2VzIGEgc2hhcmVkIGNvZGUgcHJvYmxlbSB3aGVyZSBgY29tbW9uLXNwZWN0cmFsLmNgIHdhcyBiZWluZyB1c2VkIGJ5IGJvdGggYGF0aDlrYCBhbmQgYGF0aDlrX2h0Y2AsIGJ1dCBgYXRoX2Ntbl9wcm9jZXNzX2ZmdGAgYXNzdW1lZCBhIGBzdHJ1Y3QgYXRoX3NvZnRjICpgIGZvciBgY29tbW9uLVx1MDAzZXByaXZgLlxuXG5Ob3csIEkgc2VlIHRoZSBjb3JyZWN0ZWQgY29kZS4gYGF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnYCBub3cgcmVjZWl2ZXMgYSBwb2ludGVyIHRvIGBzdHJ1Y3QgYXRoX3J4X3N0YXRzICpyeF9zdGF0c2AsIHN0b3JlZCBpbiBgc3BlY19wcml2LVx1MDAzZXJ4X3N0YXRzYC4gQ29uc2VxdWVudGx5LCBgYXRoX2Ntbl9jb3VudF9mZnRfc2FtcGxlYCBzYWZlbHkgdXBkYXRlcyBgcnhfc3RhdHMtXHUwMDNlcnhfc3BlY3RyYWxfc2FtcGxlX2dvb2QrK2Agb3IgYHJ4X3N0YXRzLVx1MDAzZXJ4X3NwZWN0cmFsX3NhbXBsZV9lcnIrK2AuIFRoaXMgaXMgYSBtdWNoIGNsZWFuZXIgYW5kIHNhZmVyIGFwcHJvYWNoLCBlbGltaW5hdGluZyB0aGUgcG90ZW50aWFsIGZvciB0aG9zZSBuYXN0eSBtZW1vcnktcmVsYXRlZCBidWdzLlxuXG5JJ20gY3VyaW91czogaXMgYGF0aDlrX2h0Y2AgYSBVU0IgZHJpdmVyPyBBbmQgZG9lcyBzeXprYWxsZXIgZnV6eiB0aGUgYGF0aDlrX2h0Y2AgZHJpdmVyLCBvciB0aGUgYGF0aDlrYCBkcml2ZXI/IEknbGwgY2hlY2sgdGhlIEtjb25maWcgZmlsZXMgZm9yIGJvdGggYGF0aDlrYCBhbmQgYGF0aDlrX2h0Y2AganVzdCB0byBzZWUgaWYgdGhlcmUgaXMgYW55IGludGVyZXN0aW5nIGluZm9ybWF0aW9uIGluIHRoZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY1MzUsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDU6NDg6MzIuMDMwNDIyNTYzWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcyMjMwMzQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkFUSDlLX0hUQ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWtcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc9MTM9Y29uZmlnIEFUSDlLX0JUQ09FWF9TVVBQT1JUXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTQtXFx0Ym9vbCBcXFwiQXRoZXJvcyBibHVldG9vdGggY29leGlzdGVuY2Ugc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxNTpcXHRkZXBlbmRzIG9uIChBVEg5SyB8fCBBVEg5S19IVEMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTYtXFx0ZGVmYXVsdCB5XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZz0xNTY9Y29uZmlnIEFUSDlLX1BDSV9OT19FRVBST01cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE3MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxNzI6Y29uZmlnIEFUSDlLX0hUQ1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE3My1cXHR0cmlzdGF0ZSBcXFwiQXRoZXJvcyBIVEMgYmFzZWQgd2lyZWxlc3MgY2FyZHMgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE4Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxODc6Y29uZmlnIEFUSDlLX0hUQ19ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTg4LVxcdGJvb2wgXFxcIkF0aGVyb3MgYXRoOWtfaHRjIGRlYnVnZ2luZ1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxODk6XFx0ZGVwZW5kcyBvbiBBVEg5S19IVEMgXFx1MDAyNlxcdTAwMjYgREVCVUdfRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xOTAtXFx0c2VsZWN0IEFUSDlLX0NPTU1PTl9ERUJVR1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc9MjA2PWNvbmZpZyBBVEg5S19DT01NT05fU1BFQ1RSQUxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0yMDctXFx0Ym9vbCBcXFwiQXRoZXJvcyBhdGg5ay9hdGg5a19odGMgc3BlY3RyYWwgc2NhbiBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjIwODpcXHRkZXBlbmRzIG9uIEFUSDlLX0RFQlVHRlMgfHwgQVRIOUtfSFRDX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0yMDktXFx0c2VsZWN0IFJFTEFZXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU9Njg9YXRoOWtfaHRjLXkgKz1cXHRodGNfaHN0Lm8gXFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTc2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZTo3NzphdGg5a19odGMtJChDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlMpICs9IGh0Y19kcnZfZGVidWcub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS03OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6Nzk6b2JqLSQoQ09ORklHX0FUSDlLX0hUQykgKz0gYXRoOWtfaHRjLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtODAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAzX2VlcHJvbS5jPTMzOTA9c3RhdGljIGJvb2wgYXRoOWtfaHdfYXI5MzAwX2ZpbGxfZWVwcm9tKHN0cnVjdCBhdGhfaHcgKmFoKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwM19lZXByb20uYy0zNDAwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDNfZWVwcm9tLmM6MzQwMTojaWYgZGVmaW5lZChDT05GSUdfQVRIOUtfREVCVUdGUykgfHwgZGVmaW5lZChDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwM19lZXByb20uYy0zNDAyLXN0YXRpYyB1MzIgYXI5MDAzX2R1bXBfbW9kYWxfZWVwcm9tKGNoYXIgKmJ1ZiwgdTMyIGxlbiwgdTMyIHNpemUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jPTIzMj1zdGF0aWMgaW5saW5lIHZvaWQgYXRoOWtfc2tiX3F1ZXVlX2NvbXBsZXRlKHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMjM4LVxcdHdoaWxlICgoc2tiID0gX19za2JfZGVxdWV1ZShxdWV1ZSkpICE9IE5VTEwpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjIzOTojaWZkZWYgQ09ORklHX0FUSDlLX0hUQ19ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0yNDAtXFx0XFx0aW50IGxuID0gc2tiLVxcdTAwM2VsZW47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jPTM3Nj1zdGF0aWMgaW50IGhpZl91c2Jfc2VuZF90eChzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTM5OS1cXHQvKiBNZ210L0JlYWNvbiBmcmFtZXMgZG9uJ3QgdXNlIHRoZSBUWCBidWZmZXIgcG9vbCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NDAwOlxcdGlmICgodHhfY3RsLVxcdTAwM2V0eXBlID09IEFUSDlLX0hUQ19NR01UKSB8fFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NDAxOlxcdCAgICAodHhfY3RsLVxcdTAwM2V0eXBlID09IEFUSDlLX0hUQ19CRUFDT04pKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00MDItXFx0XFx0cmV0ID0gaGlmX3VzYl9zZW5kX21nbXQoaGlmX2Rldiwgc2tiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNDA2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NDA3OlxcdGlmICgodHhfY3RsLVxcdTAwM2V0eXBlID09IEFUSDlLX0hUQ19OT1JNQUwpIHx8XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo0MDg6XFx0ICAgICh0eF9jdGwtXFx1MDAzZXR5cGUgPT0gQVRIOUtfSFRDX0FNUERVKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNDA5LVxcdFxcdF9fc2tiX3F1ZXVlX3RhaWwoXFx1MDAyNmhpZl9kZXYtXFx1MDAzZXR4LnR4X3NrYl9xdWV1ZSwgc2tiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM9NDg3PXN0YXRpYyBpbmxpbmUgYm9vbCBjaGVja19pbmRleChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1OCBpZHgpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQ5Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjQ5MzpcXHRpZiAoKHR4X2N0bC1cXHUwMDNldHlwZSA9PSBBVEg5S19IVENfQU1QRFUpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00OTQtXFx0ICAgICh0eF9jdGwtXFx1MDAzZXN0YV9pZHggPT0gaWR4KSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD01Nj1lbnVtIGh0Y19vcG1vZGUge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTY0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo2NTojZGVmaW5lIEFUSDlLX0hUQ19BTVBEVSAgMVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo2NjojZGVmaW5lIEFUSDlLX0hUQ19OT1JNQUwgMlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo2NzojZGVmaW5lIEFUSDlLX0hUQ19CRUFDT04gM1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo2ODojZGVmaW5lIEFUSDlLX0hUQ19NR01UICAgNFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC02OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6NzA6I2RlZmluZSBBVEg5S19IVENfVFhfQ1RTT05MWSAgICAgIDB4MVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo3MTojZGVmaW5lIEFUSDlLX0hUQ19UWF9SVFNDVFMgICAgICAgMHgyXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTcyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD03Mz1zdHJ1Y3QgdHhfZnJhbWVfaGRyIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC03Ny1cXHR1OCB0aWRubztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6Nzg6XFx0X19iZTMyIGZsYWdzOyAvKiBBVEg5S19IVENfVFhfKiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC03OS1cXHR1OCBrZXlfdHlwZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD0xOTQ9c3RydWN0IGF0aDlrX2h0Y190YXJnZXRfcnhfc3RhdHMge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTE5OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MjAwOiNkZWZpbmUgQVRIOUtfSFRDX01BWF9WSUYgMlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyMDE6I2RlZmluZSBBVEg5S19IVENfTUFYX0JDTl9WSUYgMlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0yMDItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9MjQ5PXN0cnVjdCBhdGg5a192aWZfaXRlcl9kYXRhIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0yNTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI1NDojZGVmaW5lIEFUSDlLX0hUQ19NQVhfU1RBIDhcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MjU1OiNkZWZpbmUgQVRIOUtfSFRDX01BWF9USUQgOFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0yNTYtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9MjY0PXN0cnVjdCBhdGg5a19odGNfc3RhIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMjY1LVxcdHU4IGluZGV4O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyNjY6XFx0ZW51bSB0aWRfYWdncl9zdGF0ZSB0aWRfc3RhdGVbQVRIOUtfSFRDX01BWF9USURdO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0yNjctXFx0c3RydWN0IHdvcmtfc3RydWN0IHJjX3VwZGF0ZV93b3JrO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI3MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MjcxOiNkZWZpbmUgQVRIOUtfSFRDX1JYQlVGIDI1NlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0yNzItI2RlZmluZSBIVENfUlhfRlJBTUVfSEVBREVSX1NJWkUgNDBcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD0yODE9c3RydWN0IGF0aDlrX2h0Y19yeCB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMjg2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyODc6I2RlZmluZSBBVEg5S19IVENfVFhfQ0xFQU5VUF9JTlRFUlZBTCA1MCAvKiBtcyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyODg6I2RlZmluZSBBVEg5S19IVENfVFhfVElNRU9VVF9JTlRFUlZBTCAzMDAwIC8qIG1zICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI4OTojZGVmaW5lIEFUSDlLX0hUQ19UWF9SRVNFUlZFIDEwXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI5MDojZGVmaW5lIEFUSDlLX0hUQ19UWF9USU1FT1VUX0NPVU5UIDQwXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI5MTojZGVmaW5lIEFUSDlLX0hUQ19UWF9USFJFU0hPTEQgKE1BWF9UWF9CVUZfTlVNIC0gQVRIOUtfSFRDX1RYX1JFU0VSVkUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI5Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MjkzOiNkZWZpbmUgQVRIOUtfSFRDX09QX1RYX1FVRVVFU19TVE9QIEJJVCgwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyOTQ6I2RlZmluZSBBVEg5S19IVENfT1BfVFhfRFJBSU4gICAgICAgQklUKDEpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI5NS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD0zMTE9c3RydWN0IGF0aDlrX2h0Y190eF9jdGwge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDozMTI6XFx0dTggdHlwZTsgLyogQVRIOUtfSFRDXyogKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMzEzLVxcdHU4IGVwaWQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9MzE5PXN0YXRpYyBpbmxpbmUgc3RydWN0IGF0aDlrX2h0Y190eF9jdGwgKkhUQ19TS0JfQ0Ioc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0zMjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjMyODojaWZkZWYgQ09ORklHX0FUSDlLX0hUQ19ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTMyOS0jZGVmaW5lIF9fU1RBVF9TQUZFKGhpZl9kZXYsIGV4cHIpXFx0ZG8geyAoKGhpZl9kZXYpLVxcdTAwM2VodGNfaGFuZGxlLVxcdTAwM2VkcnZfcHJpdiA/IChleHByKSA6IDApOyB9IHdoaWxlICgwKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTM4OD1zdGF0aWMgaW5saW5lIHZvaWQgYXRoOWtfaHRjX2Vycl9zdGF0X3J4KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0zOTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjM5MzojZW5kaWYgLyogQ09ORklHX0FUSDlLX0hUQ19ERUJVR0ZTICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTM5NC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD00MDk9c3RydWN0IGh0Y19iZWFjb24ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTQxNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6NDE2OlxcdHN0cnVjdCBpZWVlODAyMTFfdmlmICpic2xvdFtBVEg5S19IVENfTUFYX0JDTl9WSUZdO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC00MTctXFx0dTMyIGJtaXNzY250O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTQ1Nj1zdHJ1Y3QgYXRoOWtfaHRjX3ByaXYge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTQ3OC1cXHR1OCBzdGFfc2xvdDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6NDc5OlxcdHU4IHZpZl9zdGFfcG9zW0FUSDlLX0hUQ19NQVhfVklGXTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNDgwLVxcdHU4IG51bV9pYnNzX3ZpZjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC01MzUtXFx0c3RydWN0IGRlbGF5ZWRfd29yayBkdXR5X2N5Y2xlX3dvcms7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjUzNjojaWZkZWYgQ09ORklHX0FUSDlLX0hUQ19ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTUzNy1cXHRzdHJ1Y3QgYXRoOWtfZGVidWcgZGVidWc7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9NjQxPWludCBhdGg5a19odGNfcmVzdW1lKHN0cnVjdCBodGNfdGFyZ2V0ICpodGNfaGFuZGxlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNjQyLSNlbmRpZlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo2NDM6I2lmZGVmIENPTkZJR19BVEg5S19IVENfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC02NDQtaW50IGF0aDlrX2h0Y19pbml0X2RlYnVnKHN0cnVjdCBhdGhfaHcgKmFoKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD02NDg9c3RhdGljIGlubGluZSB2b2lkIGF0aDlrX2h0Y19kZWluaXRfZGVidWcoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTY1MC19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjY1MTojZW5kaWYgLyogQ09ORklHX0FUSDlLX0hUQ19ERUJVR0ZTICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTY1Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jPTExMT1zdGF0aWMgdm9pZCBhdGg5a19odGNfYmVhY29uX2NvbmZpZ19hcChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYy0xMTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmM6MTE3OlxcdGF0aDlrX2Ntbl9iZWFjb25fY29uZmlnX2FwKGFoLCBjb25mLCBBVEg5S19IVENfTUFYX0JDTl9WSUYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTExOC1cXHRhdGg5a19odGNfYmVhY29uX2luaXQocHJpdiwgY29uZiwgZmFsc2UpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmM9MTkxPXN0YXRpYyB2b2lkIGF0aDlrX2h0Y19zZW5kX2JlYWNvbihzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYy0yNDItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmM6MjQzOlxcdHR4X2N0bC1cXHUwMDNldHlwZSA9IEFUSDlLX0hUQ19CRUFDT047XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMjQ0LVxcdHR4X2N0bC1cXHUwMDNlZXBpZCA9IHByaXYtXFx1MDAzZWJlYWNvbl9lcDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jPTI2ND1zdGF0aWMgaW50IGF0aDlrX2h0Y19jaG9vc2VfYnNsb3Qoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMjc2LVxcdHRzZnR1ID0gVFNGX1RPX1RVKHRzZiBcXHUwMDNlXFx1MDAzZSAzMiwgdHNmKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYzoyNzc6XFx0c2xvdCA9ICgodHNmdHUgJSBpbnR2YWwpICogQVRIOUtfSFRDX01BWF9CQ05fVklGKSAvIGludHZhbDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYzoyNzg6XFx0c2xvdCA9IEFUSDlLX0hUQ19NQVhfQkNOX1ZJRiAtIHNsb3QgLSAxO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTI3OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jPTMyNT12b2lkIGF0aDlrX2h0Y19hc3NpZ25fYnNsb3Qoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMzMyLVxcdHNwaW5fbG9ja19iaChcXHUwMDI2cHJpdi1cXHUwMDNlYmVhY29uX2xvY2spO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jOjMzMzpcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgQVRIOUtfSFRDX01BWF9CQ05fVklGOyBpKyspIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYy0zMzQtXFx0XFx0aWYgKHByaXYtXFx1MDAzZWJlYWNvbi5ic2xvdFtpXSA9PSBOVUxMKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYz0zNjU9dm9pZCBhdGg5a19odGNfc2V0X3RzZmFkanVzdChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYy0zODAtXFx0ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmM6MzgxOlxcdHRzZmFkanVzdCA9IGN1cl9jb25mLVxcdTAwM2ViZWFjb25faW50ZXJ2YWwgKiBhdnAtXFx1MDAzZWJzbG90IC8gQVRIOUtfSFRDX01BWF9CQ05fVklGO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTM4Mi1cXHRhdnAtXFx1MDAzZXRzZmFkanVzdCA9IGNwdV90b19sZTY0KFRVX1RPX1VTRUModHNmYWRqdXN0KSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jPTM5OD1zdGF0aWMgY29uc3QgY2hhciBhdGg5a19odGNfZ3N0cmluZ3Nfc3RhdHNbXVtFVEhfR1NUUklOR19MRU5dID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYy00MTgtfTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jOjQxOTojZGVmaW5lIEFUSDlLX0hUQ19TU1RBVFNfTEVOIEFSUkFZX1NJWkUoYXRoOWtfaHRjX2dzdHJpbmdzX3N0YXRzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMtNDIwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYz00MzA9aW50IGF0aDlrX2h0Y19nZXRfZXRfc3NldF9jb3VudChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMtNDMzLVxcdGlmIChzc2V0ID09IEVUSF9TU19TVEFUUylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jOjQzNDpcXHRcXHRyZXR1cm4gQVRIOUtfSFRDX1NTVEFUU19MRU47XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYy00MzUtXFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jPTQ0OD12b2lkIGF0aDlrX2h0Y19nZXRfZXRfc3RhdHMoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jLTQ3My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jOjQ3NDpcXHRXQVJOX09OKGkgIT0gQVRIOUtfSFRDX1NTVEFUU19MRU4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMtNDc1LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYz02MDY9c3RhdGljIGludCBhdGg5a19pbml0X3ByaXYoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jLTY3My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM6Njc0OlxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBVEg5S19IVENfTUFYX0JDTl9WSUY7IGkrKylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmMtNjc1LVxcdFxcdHByaXYtXFx1MDAzZWJlYWNvbi5ic2xvdFtpXSA9IE5VTEw7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM9MTg0PXZvaWQgYXRoOWtfaHRjX3Jlc2V0KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0yMzMtXFx0bW9kX3RpbWVyKFxcdTAwMjZwcml2LVxcdTAwM2V0eC5jbGVhbnVwX3RpbWVyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzoyMzQ6XFx0XFx0ICBqaWZmaWVzICsgbXNlY3NfdG9famlmZmllcyhBVEg5S19IVENfVFhfQ0xFQU5VUF9JTlRFUlZBTCkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0yMzUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM9MjQwPXN0YXRpYyBpbnQgYXRoOWtfaHRjX3NldF9jaGFubmVsKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0zMTEtXFx0bW9kX3RpbWVyKFxcdTAwMjZwcml2LVxcdTAwM2V0eC5jbGVhbnVwX3RpbWVyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzozMTI6XFx0XFx0ICBqaWZmaWVzICsgbXNlY3NfdG9famlmZmllcyhBVEg5S19IVENfVFhfQ0xFQU5VUF9JTlRFUlZBTCkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0zMTMtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM9MzUwPXN0YXRpYyBpbnQgYXRoOWtfaHRjX2FkZF9tb25pdG9yX2ludGVyZmFjZShzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMzU3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzozNTg6XFx0aWYgKChwcml2LVxcdTAwM2VudmlmcyBcXHUwMDNlPSBBVEg5S19IVENfTUFYX1ZJRikgfHxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6MzU5OlxcdCAgICAocHJpdi1cXHUwMDNlbnN0YXRpb25zIFxcdTAwM2U9IEFUSDlLX0hUQ19NQVhfU1RBKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0zNjAtXFx0XFx0cmV0ID0gLUVOT0JVRlM7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMzY0LVxcdHN0YV9pZHggPSBmZnoocHJpdi1cXHUwMDNlc3RhX3Nsb3QpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzozNjU6XFx0aWYgKChzdGFfaWR4IFxcdTAwM2MgMCkgfHwgKHN0YV9pZHggXFx1MDAzZSBBVEg5S19IVENfTUFYX1NUQSkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMzY2LVxcdFxcdHJldCA9IC1FTk9CVUZTO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jPTQ2Nj1zdGF0aWMgaW50IGF0aDlrX2h0Y19hZGRfc3RhdGlvbihzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtNDc3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzo0Nzg6XFx0aWYgKHByaXYtXFx1MDAzZW5zdGF0aW9ucyBcXHUwMDNlPSBBVEg5S19IVENfTUFYX1NUQSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtNDc5LVxcdFxcdHJldHVybiAtRU5PQlVGUztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy00ODEtXFx0c3RhX2lkeCA9IGZmeihwcml2LVxcdTAwM2VzdGFfc2xvdCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjQ4MjpcXHRpZiAoKHN0YV9pZHggXFx1MDAzYyAwKSB8fCAoc3RhX2lkeCBcXHUwMDNlIEFUSDlLX0hUQ19NQVhfU1RBKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtNDgzLVxcdFxcdHJldHVybiAtRU5PQlVGUztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYz03MDI9c3RhdGljIGludCBhdGg5a19odGNfdHhfYWdncl9vcGVyKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy03MTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjcxNDpcXHRpZiAodGlkIFxcdTAwM2U9IEFUSDlLX0hUQ19NQVhfVElEKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy03MTUtXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM9OTA3PXN0YXRpYyBpbnQgYXRoOWtfaHRjX3N0YXJ0KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTk2MC1cXHRzcGluX2xvY2tfYmgoXFx1MDAyNnByaXYtXFx1MDAzZXR4LnR4X2xvY2spO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzo5NjE6XFx0cHJpdi1cXHUwMDNldHguZmxhZ3MgXFx1MDAyNj0gfkFUSDlLX0hUQ19PUF9UWF9RVUVVRVNfU1RPUDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtOTYyLVxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZwcml2LVxcdTAwM2V0eC50eF9sb2NrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy05NjYtXFx0bW9kX3RpbWVyKFxcdTAwMjZwcml2LVxcdTAwM2V0eC5jbGVhbnVwX3RpbWVyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzo5Njc6XFx0XFx0ICBqaWZmaWVzICsgbXNlY3NfdG9famlmZmllcyhBVEg5S19IVENfVFhfQ0xFQU5VUF9JTlRFUlZBTCkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy05NjgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM9MTY1OD1zdGF0aWMgaW50IGF0aDlrX2h0Y19hbXBkdV9hY3Rpb24oc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMTY4OC1cXHRjYXNlIElFRUU4MDIxMV9BTVBEVV9UWF9PUEVSQVRJT05BTDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6MTY4OTpcXHRcXHRpZiAodGlkIFxcdTAwM2U9IEFUSDlLX0hUQ19NQVhfVElEKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTE2OTAtXFx0XFx0XFx0cmV0ID0gLUVJTlZBTDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYz0xODc0PXN0cnVjdCBpZWVlODAyMTFfb3BzIGF0aDlrX2h0Y19vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMTkwNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6MTkwNzojaWZkZWYgQ09ORklHX0FUSDlLX0hUQ19ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTE5MDgtXFx0LmdldF9ldF9zc2V0X2NvdW50ICA9IGF0aDlrX2h0Y19nZXRfZXRfc3NldF9jb3VudCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz0yMz1zdGF0aWMgY29uc3QgaW50IHN1YnR5cGVfdHhxX3RvX2h3cVtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTI5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzozMDojZGVmaW5lIEFUSDlLX0hUQ19JTklUX1RYUShzdWJ0eXBlKSBkbyB7XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0zMS1cXHRcXHRxaS50cWlfc3VidHlwZSA9IHN1YnR5cGVfdHhxX3RvX2h3cVtzdWJ0eXBlXTtcXHRcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9NTY9dm9pZCBhdGg5a19odGNfY2hlY2tfc3RvcF9xdWV1ZXMoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTU5LVxcdHByaXYtXFx1MDAzZXR4LnF1ZXVlZF9jbnQrKztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NjA6XFx0aWYgKChwcml2LVxcdTAwM2V0eC5xdWV1ZWRfY250IFxcdTAwM2U9IEFUSDlLX0hUQ19UWF9USFJFU0hPTEQpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjYxOlxcdCAgICAhKHByaXYtXFx1MDAzZXR4LmZsYWdzIFxcdTAwMjYgQVRIOUtfSFRDX09QX1RYX1FVRVVFU19TVE9QKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo2MjpcXHRcXHRwcml2LVxcdTAwM2V0eC5mbGFncyB8PSBBVEg5S19IVENfT1BfVFhfUVVFVUVTX1NUT1A7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTYzLVxcdFxcdGllZWU4MDIxMV9zdG9wX3F1ZXVlcyhwcml2LVxcdTAwM2Vodyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9Njg9dm9pZCBhdGg5a19odGNfY2hlY2tfd2FrZV9xdWV1ZXMoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTcwLVxcdHNwaW5fbG9ja19iaChcXHUwMDI2cHJpdi1cXHUwMDNldHgudHhfbG9jayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjcxOlxcdGlmICgocHJpdi1cXHUwMDNldHgucXVldWVkX2NudCBcXHUwMDNjIEFUSDlLX0hUQ19UWF9USFJFU0hPTEQpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjcyOlxcdCAgICAocHJpdi1cXHUwMDNldHguZmxhZ3MgXFx1MDAyNiBBVEg5S19IVENfT1BfVFhfUVVFVUVTX1NUT1ApKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjczOlxcdFxcdHByaXYtXFx1MDAzZXR4LmZsYWdzIFxcdTAwMjY9IH5BVEg5S19IVENfT1BfVFhfUVVFVUVTX1NUT1A7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTc0LVxcdFxcdGllZWU4MDIxMV93YWtlX3F1ZXVlcyhwcml2LVxcdTAwM2Vodyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9MjE0PXN0YXRpYyB2b2lkIGF0aDlrX2h0Y190eF9tZ210KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0yNDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjI0MTpcXHR0eF9jdGwtXFx1MDAzZXR5cGUgPSBBVEg5S19IVENfTUdNVDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMjQyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTI2MD1zdGF0aWMgdm9pZCBhdGg5a19odGNfdHhfZGF0YShzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMjkyLVxcdGlmICh0eF9pbmZvLVxcdTAwM2VmbGFncyBcXHUwMDI2IElFRUU4MDIxMV9UWF9DVExfQU1QRFUpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6MjkzOlxcdFxcdHR4X2N0bC1cXHUwMDNldHlwZSA9IEFUSDlLX0hUQ19BTVBEVTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6Mjk0OlxcdFxcdHR4X2hkci5kYXRhX3R5cGUgPSBBVEg5S19IVENfQU1QRFU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTI5NS1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzoyOTY6XFx0XFx0dHhfY3RsLVxcdTAwM2V0eXBlID0gQVRIOUtfSFRDX05PUk1BTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6Mjk3OlxcdFxcdHR4X2hkci5kYXRhX3R5cGUgPSBBVEg5S19IVENfTk9STUFMO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0yOTgtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTMxMi1cXHRcXHRpZiAoc2tiLVxcdTAwM2VsZW4gXFx1MDAzZSBwcml2LVxcdTAwM2Vody1cXHUwMDNld2lwaHktXFx1MDAzZXJ0c190aHJlc2hvbGQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjMxMzpcXHRcXHRcXHRmbGFncyB8PSBBVEg5S19IVENfVFhfUlRTQ1RTO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0zMTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTMxNS1cXHQvKiBDVFMtdG8tc2VsZiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzozMTY6XFx0aWYgKCEoZmxhZ3MgXFx1MDAyNiBBVEg5S19IVENfVFhfUlRTQ1RTKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0zMTctXFx0ICAgICh2aWYgXFx1MDAyNlxcdTAwMjYgdmlmLVxcdTAwM2Vic3NfY29uZi51c2VfY3RzX3Byb3QpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzozMTg6XFx0XFx0ZmxhZ3MgfD0gQVRIOUtfSFRDX1RYX0NUU09OTFk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTMxOS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz0zOTI9c3RhdGljIGlubGluZSBib29sIF9fYXRoOWtfaHRjX2NoZWNrX3R4X2FnZ3Ioc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTM5Ny1cXHRzcGluX2xvY2tfYmgoXFx1MDAyNnByaXYtXFx1MDAzZXR4LnR4X2xvY2spO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzozOTg6XFx0aWYgKCh0aWQgXFx1MDAzYyBBVEg5S19IVENfTUFYX1RJRCkgXFx1MDAyNlxcdTAwMjYgKGlzdGEtXFx1MDAzZXRpZF9zdGF0ZVt0aWRdID09IEFHR1JfU1RPUCkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTM5OS1cXHRcXHRyZXQgPSB0cnVlO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTQ0NT1zdGF0aWMgdm9pZCBhdGg5a19odGNfdHhfcHJvY2VzcyhzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDc4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo0Nzk6XFx0aWYgKHR4cy1cXHUwMDNldHNfZmxhZ3MgXFx1MDAyNiBBVEg5S19IVENfVFhTVEFUX0FDSykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00ODAtXFx0XFx0dHhfaW5mby1cXHUwMDNlZmxhZ3MgfD0gSUVFRTgwMjExX1RYX1NUQVRfQUNLO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ4NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NDg1OlxcdGlmICh0eHMtXFx1MDAzZXRzX2ZsYWdzIFxcdTAwMjYgQVRIOUtfSFRDX1RYU1RBVF9GSUxUKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00ODYtXFx0XFx0dHhfaW5mby1cXHUwMDNlZmxhZ3MgfD0gSUVFRTgwMjExX1RYX1NUQVRfVFhfRklMVEVSRUQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ4Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NDg4OlxcdGlmICh0eHMtXFx1MDAzZXRzX2ZsYWdzIFxcdTAwMjYgQVRIOUtfSFRDX1RYU1RBVF9SVENfQ1RTKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00ODktXFx0XFx0cmF0ZS1cXHUwMDNlZmxhZ3MgfD0gSUVFRTgwMjExX1RYX1JDX1VTRV9SVFNfQ1RTO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ5MS1cXHRyYXRlLVxcdTAwM2Vjb3VudCA9IDE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjQ5MjpcXHRyYXRlLVxcdTAwM2VpZHggPSBNUyh0eHMtXFx1MDAzZXRzX3JhdGUsIEFUSDlLX0hUQ19UWFNUQVRfUkFURSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ5My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NDk0OlxcdGlmICh0eHMtXFx1MDAzZXRzX2ZsYWdzIFxcdTAwMjYgQVRIOUtfSFRDX1RYU1RBVF9NQ1MpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDk1LVxcdFxcdHJhdGUtXFx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9UWF9SQ19NQ1M7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ5Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NDk3OlxcdFxcdGlmICh0eHMtXFx1MDAzZXRzX2ZsYWdzIFxcdTAwMjYgQVRIOUtfSFRDX1RYU1RBVF9DVzQwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00OTgtXFx0XFx0XFx0cmF0ZS1cXHUwMDNlZmxhZ3MgfD0gSUVFRTgwMjExX1RYX1JDXzQwX01IWl9XSURUSDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NDk5OlxcdFxcdGlmICh0eHMtXFx1MDAzZXRzX2ZsYWdzIFxcdTAwMjYgQVRIOUtfSFRDX1RYU1RBVF9TR0kpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTUwMC1cXHRcXHRcXHRyYXRlLVxcdTAwM2VmbGFncyB8PSBJRUVFODAyMTFfVFhfUkNfU0hPUlRfR0k7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9NTM5PXZvaWQgYXRoOWtfaHRjX3R4X2RyYWluKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy01NDMtXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZwcml2LVxcdTAwM2V0eC50eF9sb2NrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NTQ0OlxcdHByaXYtXFx1MDAzZXR4LmZsYWdzIHw9IEFUSDlLX0hUQ19PUF9UWF9EUkFJTjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNTQ1LVxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZwcml2LVxcdTAwM2V0eC50eF9sb2NrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy01NzMtXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZwcml2LVxcdTAwM2V0eC50eF9sb2NrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NTc0OlxcdHByaXYtXFx1MDAzZXR4LmZsYWdzIFxcdTAwMjY9IH5BVEg5S19IVENfT1BfVFhfRFJBSU47XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTU3NS1cXHRzcGluX3VubG9ja19iaChcXHUwMDI2cHJpdi1cXHUwMDNldHgudHhfbG9jayk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9NTc4PXZvaWQgYXRoOWtfdHhfZmFpbGVkX3Rhc2tsZXQoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTU4Mi1cXHRzcGluX2xvY2soXFx1MDAyNnByaXYtXFx1MDAzZXR4LnR4X2xvY2spO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo1ODM6XFx0aWYgKHByaXYtXFx1MDAzZXR4LmZsYWdzIFxcdTAwMjYgQVRIOUtfSFRDX09QX1RYX0RSQUlOKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTU4NC1cXHRcXHRzcGluX3VubG9jayhcXHUwMDI2cHJpdi1cXHUwMDNldHgudHhfbG9jayk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9NjE4PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiogYXRoOWtfaHRjX3R4X2dldF9wYWNrZXQoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTYyNC1cXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo2MjU6XFx0dTggZXBpZCA9IE1TKHR4cy1cXHUwMDNldHNfcmF0ZSwgQVRIOUtfSFRDX1RYU1RBVF9FUElEKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNjI2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTcxNj1zdGF0aWMgaW5saW5lIGJvb2wgY2hlY2tfcGFja2V0KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy03MjQtXFx0XFx0ICAgICAgIHR4X2N0bC1cXHUwMDNldGltZXN0YW1wICtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NzI1OlxcdFxcdCAgICAgICBtc2Vjc190b19qaWZmaWVzKEFUSDlLX0hUQ19UWF9USU1FT1VUX0lOVEVSVkFMKSkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNzI2LVxcdFxcdGF0aF9kYmcoY29tbW9uLCBYTUlULCBcXFwiRHJvcHBpbmcgYSBwYWNrZXQgZHVlIHRvIFRYIHRpbWVvdXRcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTc2MT12b2lkIGF0aDlrX2h0Y190eF9jbGVhbnVwX3RpbWVyKHN0cnVjdCB0aW1lcl9saXN0ICp0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTc3Ni1cXHRcXHRcXHRcXHRldmVudC1cXHUwMDNldHhzLmNvb2tpZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6Nzc3OlxcdFxcdFxcdFxcdE1TKGV2ZW50LVxcdTAwM2V0eHMudHNfcmF0ZSwgQVRIOUtfSFRDX1RYU1RBVF9FUElEKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTc3OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy03ODQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjc4NTpcXHRcXHRpZiAoKytldmVudC1cXHUwMDNlY291bnQgXFx1MDAzZT0gQVRIOUtfSFRDX1RYX1RJTUVPVVRfQ09VTlQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNzg2LVxcdFxcdFxcdGxpc3RfZGVsKFxcdTAwMjZldmVudC1cXHUwMDNlbGlzdCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtODA1LVxcdG1vZF90aW1lcihcXHUwMDI2cHJpdi1cXHUwMDNldHguY2xlYW51cF90aW1lcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6ODA2OlxcdFxcdCAgamlmZmllcyArIG1zZWNzX3RvX2ppZmZpZXMoQVRIOUtfSFRDX1RYX0NMRUFOVVBfSU5URVJWQUwpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtODA3LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz04Mjc9Ym9vbCBhdGg5a19odGNfdHhxX3NldHVwKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdiwgaW50IHN1YnR5cGUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtODM0LVxcdG1lbXNldChcXHUwMDI2cWksIDAsIHNpemVvZihxaSkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo4MzU6XFx0QVRIOUtfSFRDX0lOSVRfVFhRKHN1YnR5cGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy04MzYtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9ODUyPWludCBhdGg5a19odGNfY2FicV9zZXR1cChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtODU2LVxcdG1lbXNldChcXHUwMDI2cWksIDAsIHNpemVvZihxaSkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo4NTc6XFx0QVRIOUtfSFRDX0lOSVRfVFhRKDApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy04NTgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9MTE4Nz1pbnQgYXRoOWtfcnhfaW5pdChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMTE5My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6MTE5NDpcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgQVRIOUtfSFRDX1JYQlVGOyBpKyspIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMTE5NS1cXHRcXHRzdHJ1Y3QgYXRoOWtfaHRjX3J4YnVmICpyeGJ1ZiA9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmM9MTM4PXZvaWQgYXRoOWtfd21pX2V2ZW50X3Rhc2tsZXQoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jLTE3OC1cXHRcXHRcXHRzcGluX2xvY2tfYmgoXFx1MDAyNnByaXYtXFx1MDAzZXR4LnR4X2xvY2spO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYzoxNzk6XFx0XFx0XFx0aWYgKHByaXYtXFx1MDAzZXR4LmZsYWdzIFxcdTAwMjYgQVRIOUtfSFRDX09QX1RYX0RSQUlOKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jLTE4MC1cXHRcXHRcXHRcXHRzcGluX3VubG9ja19iaChcXHUwMDI2cHJpdi1cXHUwMDNldHgudHhfbG9jayk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg9Mzk9c3RydWN0IHdtaV9ldmVudF9zd2JhIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaC01MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6NTE6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX0FDSyAgICAgICAgQklUKDApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oOjUyOiNkZWZpbmUgQVRIOUtfSFRDX1RYU1RBVF9GSUxUICAgICAgIEJJVCgxKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo1MzojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfUlRDX0NUUyAgICBCSVQoMilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6NTQ6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX01DUyAgICAgICAgQklUKDMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oOjU1OiNkZWZpbmUgQVRIOUtfSFRDX1RYU1RBVF9DVzQwICAgICAgIEJJVCg0KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo1NjojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfU0dJICAgICAgICBCSVQoNSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmgtNTctXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmgtNjMtICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oOjY0OiNkZWZpbmUgQVRIOUtfSFRDX1RYU1RBVF9SQVRFICAgICAgIDB4MGZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6NjU6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX1JBVEVfUyAgICAgMFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaC02Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6Njc6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX0VQSUQgICAgICAgMHhmMFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo2ODojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfRVBJRF9TICAgICA0XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oLTY5LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNTo0ODozMi4xMDI2NjA2MzhaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMTc5NzQyNTY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipBbmFseXppbmcgYGF0aF9jbW5fcHJvY2Vzc19mZnRgIENhbGxzIGluIGF0aDlrIGFuZCBhdGg5a19odGMqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZGlnIGludG8gdGhlIHVzYWdlIG9mIGBhdGhfY21uX3Byb2Nlc3NfZmZ0YC4gTXkgaW5pdGlhbCBnb2FsIGlzIHRvIHVuZGVyc3RhbmQgaG93IGl0J3MgaW1wbGVtZW50ZWQgYW5kLCBtb3JlIGltcG9ydGFudGx5LCAqd2hlcmUqIGl0J3MgYmVpbmcgY2FsbGVkIHdpdGhpbiB0aGUgYGF0aDlrYCBhbmQgYGF0aDlrX2h0Y2AgZHJpdmVycy4gSSBzdXNwZWN0IHRoZXJlIHdpbGwgYmUgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUgdHdvLCBnaXZlbiB0aGUgYXJjaGl0ZWN0dXJhbCBkaXN0aW5jdGlvbnMgKFBDSSB2cy4gVVNCKS4gSSBuZWVkIHRvIGRldGVybWluZSBpZiBpdCdzIGJlaW5nIHVzZWQgZm9yIGNoYW5uZWwgZXN0aW1hdGlvbiwgZGF0YSBkZW1vZHVsYXRpb24sIG9yIHBlcmhhcHMgc29tZSBvdGhlciBzaWduYWwgcHJvY2Vzc2luZyBzdGFnZS4gSSB3aWxsIGxvb2sgZm9yIGNhbGxzIHRvIHRoaXMgZnVuY3Rpb24sIGtlZXBpbmcgaW4gbWluZCB0aGUgaGFyZHdhcmUgZGlmZmVyZW5jZXMuIEkgYW50aWNpcGF0ZSB0aGVyZSB3aWxsIGJlIGRpZmZlcmVuY2VzIGluIHRoZSBjYWxsaW5nIGNvbnRleHQgYW5kIHBhcmFtZXRlcnMgdXNlZCBpbiBlYWNoIGRyaXZlci4gQXJtZWQgd2l0aCB0aGlzIGtub3dsZWRnZSwgSSBjYW4gc3RhcnQgZm9ybWluZyBhIG1vcmUgaG9saXN0aWMgdW5kZXJzdGFuZGluZyBvZiB0aGUgcm9sZSBgYXRoX2Ntbl9wcm9jZXNzX2ZmdGAgcGxheXMgaW4gdGhlc2UgZHJpdmVycy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAyNzcsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNTo0ODozNC4yODI0MDQ5ODVaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjUwNTg5MTQ4NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhdGhfY21uX3Byb2Nlc3NfZmZ0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYz00Njg9c3RhdGljIHZvaWQgYXRoX2Ntbl9jb3VudF9mZnRfc2FtcGxlKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy00ODItLyogcmV0dXJucyAxIGlmIHRoaXMgd2FzIGEgc3BlY3RyYWwgZnJhbWUsIGV2ZW4gaWYgbm90IGhhbmRsZWQuICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjQ4MzppbnQgYXRoX2Ntbl9wcm9jZXNzX2ZmdChzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsIHN0cnVjdCBpZWVlODAyMTFfaGRyICpoZHIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTQ4NC1cXHRcXHQgICAgc3RydWN0IGF0aF9yeF9zdGF0dXMgKnJzLCB1NjQgdHNmKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTY5MC19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjY5MTpFWFBPUlRfU1lNQk9MKGF0aF9jbW5fcHJvY2Vzc19mZnQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy02OTItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmg9MTgzPWludCBhdGg5a19jbW5fc3BlY3RyYWxfc2Nhbl9jb25maWcoc3RydWN0IGF0aF9jb21tb24gKmNvbW1vbixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaC0xODUtXFx0XFx0XFx0ICAgICAgIGVudW0gc3BlY3RyYWxfbW9kZSBzcGVjdHJhbF9tb2RlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmg6MTg2OmludCBhdGhfY21uX3Byb2Nlc3NfZmZ0KHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiwgc3RydWN0IGllZWU4MDIxMV9oZHIgKmhkcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmgtMTg3LVxcdFxcdCAgICBzdHJ1Y3QgYXRoX3J4X3N0YXR1cyAqcnMsIHU2NCB0c2YpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oPTE5OT1zdGF0aWMgaW5saW5lIHZvaWQgYXRoOWtfY21uX3NwZWN0cmFsX3NjYW5fdHJpZ2dlcihzdHJ1Y3QgYXRoX2NvbW1vbiAqY29tbW9uLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oLTIwMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmg6MjA0OnN0YXRpYyBpbmxpbmUgaW50IGF0aF9jbW5fcHJvY2Vzc19mZnQoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaC0yMDUtXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV9oZHIgKmhkcixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz05NzI9c3RhdGljIGJvb2wgYXRoOWtfcnhfcHJlcGFyZShzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMTA0Ny1cXHRcXHQvKiBUT0RPOiBOb3QgdXNpbmcgREZTIHByb2Nlc3Npbmcgbm93LiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzoxMDQ4OlxcdFxcdGlmIChhdGhfY21uX3Byb2Nlc3NfZmZ0KFxcdTAwMjZwcml2LVxcdTAwM2VzcGVjX3ByaXYsIGhkcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMTA0OS1cXHRcXHRcXHRcXHQgICAgXFx1MDAyNnJ4X3N0YXRzLCByeF9zdGF0dXMtXFx1MDAzZW1hY3RpbWUpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvcmVjdi5jPTgwNj1zdGF0aWMgaW50IGF0aDlrX3J4X3NrYl9wcmVwcm9jZXNzKHN0cnVjdCBhdGhfc29mdGMgKnNjLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3JlY3YuYy04ODMtXFx0XFx0fSBlbHNlIGlmIChzYy1cXHUwMDNlc3BlY19wcml2LnNwZWN0cmFsX21vZGUgIT0gU1BFQ1RSQUxfRElTQUJMRUQgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvcmVjdi5jOjg4NDpcXHRcXHRcXHQgICBhdGhfY21uX3Byb2Nlc3NfZmZ0KFxcdTAwMjZzYy1cXHUwMDNlc3BlY19wcml2LCBoZHIsIHJ4X3N0YXRzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9yZWN2LmMtODg1LVxcdFxcdFxcdFxcdFxcdCAgICAgICByeF9zdGF0dXMtXFx1MDAzZW1hY3RpbWUpKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDA1OjQ4OjM2Ljc4ODMwMjU3WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTE3MDY4NjIyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGBhdGg5a19odGNgIFVTQiBXaXJlbGVzcyBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBgYXRoOWtfaHRjYCDigJMgdGhhdCdzIGEgVVNCIHdpcmVsZXNzIGRyaXZlciwgcmlnaHQ/IEludGVyZXN0aW5nLiBUaGlzIG1lYW5zIEkgY2FuIHByb2JhYmx5IHJlYWNoIGl0IGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVGhpbmsgUUVNVSB3aXRoIFVTQiBlbXVsYXRpb24sIG9yIGV2ZW4gcmF3X2dhZGdldCBzZXR1cHMuIEFuZCBvZiBjb3Vyc2UsIHRoZXJlJ3Mgc3l6a2FsbGVyIHdpdGggaXRzIFVTQiBmdXp6aW5nIGNhcGFiaWxpdGllcywgZXNwZWNpYWxseSB0aGUgYHN5el91c2JfY29ubmVjdGAgY2FsbC4gTm93LCB0aGUga2V5IHF1ZXN0aW9uIGlzOiBoYXMgc3l6a2FsbGVyIGFjdHVhbGx5ICpmdXp6ZWQqIGBhdGg5a19odGNgPyBJIG5lZWQgdG8gY2hlY2sgaWYgc3l6a2FsbGVyIGhhcyBkZXNjcmlwdGlvbnMgZm9yIGl0LiBPciwgZXZlbiBzaW1wbGVyLCBpZiBVU0IgZGV2aWNlcyBhcmUga25vd24gdG8gcHJvYmUgYGF0aDlrX2h0Y2AuXG5cblJpZ2h0LCBsZXQncyBzZWUuIEluIHRoZSBMaW51eCBrZXJuZWwsIEkga25vdyB0aGF0IGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jYCBpcyB0aGUgbGlrZWx5IGxvY2F0aW9uIGJlY2F1c2UgaXQgcmVnaXN0ZXJzIGEgYHVzYl9kcml2ZXJgLiBUaW1lIHRvIGRpZyBpbnRvIGBoaWZfdXNiLmNgLiBJJ20gbG9va2luZyBmb3IgVVNCIElEcyDigJMgc3BlY2lmaWMgVklEL1BJRHMuIEFoLCB0aGVyZSB0aGV5IGFyZTogQVI5MjcxLCBBUjcwMTAsIHRoZSB1c3VhbCBzdXNwZWN0cyAoVVNCX0RFVklDRSgweDBjZjMsIDB4OTI3MSksIGFuZCBzbyBvbikuIFRoYXQncyB0aGUgaG9vay5cblxuU28sIHdoZW4gYSBVU0IgZGV2aWNlIG1hdGNoaW5nIHRob3NlIFZJRC9QSURzIGdldHMgY29ubmVjdGVkIOKAkyBsaWtlIHRocm91Z2ggc3l6a2FsbGVyJ3MgYHN5el91c2JfY29ubmVjdGAg4oCTIHRoZSBkcml2ZXIgKnNob3VsZCogcHJvYmUuIFRoZW4sIGl0IHNldHMgdXAgYGRlYnVnZnNgIGlmIGBDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlNgIG9yIGBDT05GSUdfQVRIOUtfQ09NTU9OX1NQRUNUUkFMYCBhcmUgZW5hYmxlZC4gQW5kIGZyb20gdGhlcmUsIGl0J3MgYWxsIGFib3V0IHJlY2VpdmluZyBwYWNrZXRzIHZpYSBVU0IgVVJCcyAoYGF0aDlrX2h0Y19yeF9tc2dgLCBgYXRoOWtfcnhfcHJlcGFyZWApLCBhbmQgcHJvY2Vzc2luZyB0aG9zZSBzcGVjdHJhbCBzY2FuIEZGVCBmcmFtZXMgKGBhdGhfY21uX3Byb2Nlc3NfZmZ0YCkuXG5cbkhvbGQgb24uLi4gSSBqdXN0IHJlbWVtYmVyZWQgc29tZXRoaW5nIGltcG9ydGFudC4gU3BlY3RyYWwgc2NhbiBjb25maWd1cmF0aW9uIG9yIHJlbGF5IGZpbGVzIHdpdGhpbiBgZGVidWdmc2AgY2FuIGFsc28gYmUgZGlyZWN0bHkgdHJpZ2dlcmVkIGZyb20gdXNlciBzcGFjZS4gSSBuZWVkIHRvIGtlZXAgdGhhdCBpbiBtaW5kLlxuXG5Pa2F5LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiByZXF1aXJlbWVudHMgYW5kIGRlcGVuZGVuY2llcyBtb3JlLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgS2NvbmZpZyBmb3IgYGF0aDlrYDogYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnYC4gSSdsbCBmb2N1cyBvbiBgQ09ORklHX0FUSDlLX0NPTU1PTl9TUEVDVFJBTGAsIGBDT05GSUdfQVRIOUtgLCBgQ09ORklHX0FUSDlLX0hUQ2AsIGBDT05GSUdfQVRIOUtfREVCVUdGU2AsIGFuZCBgQ09ORklHX0FUSDlLX0hUQ19ERUJVR0ZTYCB0byBnZXQgdGhlIGZ1bGwgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE1MTAsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDU6NDg6NDEuOTU5MDAwNzNaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEzNjMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE2NSxcbiAgXCJMaW5lQ291bnRcIjogNTVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE2NTpcXHRcXHQgIG9mIHJlYWNoIGZvciB0aGUgYXRoOWsgY2hpcC5cXG4gMTY2OlxcdFxcbiAxNjc6XFx0XFx0ICBUaGVzZSBkZXZpY2VzIGFyZSB1c3VhbGx5IHZhcmlvdXMgbmV0d29yayBhcHBsaWFuY2VzLCByb3V0ZXJzIG9yXFxuIDE2ODpcXHRcXHQgIGFjY2VzcyBQb2ludHMgYW5kIHN1Y2guXFxuIDE2OTpcXHRcXG4gMTcwOlxcdFxcdCAgSWYgdW5zdXJlIHNheSBOLlxcbiAxNzE6XFx0XFxuIDE3MjpcXHRjb25maWcgQVRIOUtfSFRDXFxuIDE3MzpcXHRcXHR0cmlzdGF0ZSBcXFwiQXRoZXJvcyBIVEMgYmFzZWQgd2lyZWxlc3MgY2FyZHMgc3VwcG9ydFxcXCJcXG4gMTc0OlxcdFxcdGRlcGVuZHMgb24gVVNCIFxcdTAwMjZcXHUwMDI2IE1BQzgwMjExXFxuIDE3NTpcXHRcXHRzZWxlY3QgTUFDODAyMTFfTEVEUyBpZiBMRURTX0NMQVNTPXkgfHwgTEVEU19DTEFTUz1NQUM4MDIxMVxcbiAxNzY6XFx0XFx0c2VsZWN0IEFUSDlLX0hXXFxuIDE3NzpcXHRcXHRzZWxlY3QgQVRIOUtfQ09NTU9OXFxuIDE3ODpcXHRcXHRoZWxwXFxuIDE3OTpcXHRcXHQgIFN1cHBvcnQgZm9yIEF0aGVyb3MgSFRDIGJhc2VkIGNhcmRzLlxcbiAxODA6XFx0XFx0ICBDaGlwc2V0cyBzdXBwb3J0ZWQ6IEFSOTI3MVxcbiAxODE6XFx0XFxuIDE4MjpcXHRcXHQgIEZvciBtb3JlIGluZm9ybWF0aW9uOlxcbiAxODM6XFx0XFx0ICBodHRwczovL3dpcmVsZXNzLndpa2kua2VybmVsLm9yZy9lbi91c2Vycy9Ecml2ZXJzL2F0aDlrX2h0Y1xcbiAxODQ6XFx0XFxuIDE4NTpcXHRcXHQgIFRoZSBidWlsdCBtb2R1bGUgd2lsbCBiZSBhdGg5a19odGMuXFxuIDE4NjpcXHRcXG4gMTg3OlxcdGNvbmZpZyBBVEg5S19IVENfREVCVUdGU1xcbiAxODg6XFx0XFx0Ym9vbCBcXFwiQXRoZXJvcyBhdGg5a19odGMgZGVidWdnaW5nXFxcIlxcbiAxODk6XFx0XFx0ZGVwZW5kcyBvbiBBVEg5S19IVEMgXFx1MDAyNlxcdTAwMjYgREVCVUdfRlNcXG4gMTkwOlxcdFxcdHNlbGVjdCBBVEg5S19DT01NT05fREVCVUdcXG4gMTkxOlxcdFxcdGhlbHBcXG4gMTkyOlxcdFxcdCAgU2F5IFksIGlmIHlvdSBuZWVkIGFjY2VzcyB0byBhdGg5a19odGMncyBzdGF0aXN0aWNzLlxcbiAxOTM6XFx0XFx0ICBBcyB3ZWxsIGFzIGFjY2VzcyB0byB0aGUgRkZUL3NwZWN0cmFsIGRhdGEuXFxuIDE5NDpcXHRcXG4gMTk1OlxcdGNvbmZpZyBBVEg5S19IV1JOR1xcbiAxOTY6XFx0XFx0Ym9vbCBcXFwiUmFuZG9tIG51bWJlciBnZW5lcmF0b3Igc3VwcG9ydFxcXCJcXG4gMTk3OlxcdFxcdGRlcGVuZHMgb24gQVRIOUsgXFx1MDAyNlxcdTAwMjYgKEhXX1JBTkRPTSA9IHkgfHwgSFdfUkFORE9NID0gQVRIOUspXFxuIDE5ODpcXHRcXHRkZWZhdWx0IG5cXG4gMTk5OlxcdFxcdGhlbHBcXG4gMjAwOlxcdFxcdCAgVGhpcyBvcHRpb24gaW5jb3Jwb3JhdGVzIHRoZSBBREMgcmVnaXN0ZXIgb3V0cHV0IGFzIGEgc291cmNlIG9mXFxuIDIwMTpcXHRcXHQgIHJhbmRvbW5lc3MgaW50byBMaW51eCBlbnRyb3B5IHBvb2wgKC9kZXYvdXJhbmRvbSBhbmQgL2Rldi9yYW5kb20pXFxuIDIwMjpcXHRcXG4gMjAzOlxcdFxcdCAgU2F5IFksIGZlZWRzIHRoZSBlbnRyb3B5IGRpcmVjdGx5IGZyb20gdGhlIFdpRmkgZHJpdmVyIHRvIHRoZSBpbnB1dFxcbiAyMDQ6XFx0XFx0ICBwb29sLlxcbiAyMDU6XFx0XFxuIDIwNjpcXHRjb25maWcgQVRIOUtfQ09NTU9OX1NQRUNUUkFMXFxuIDIwNzpcXHRcXHRib29sIFxcXCJBdGhlcm9zIGF0aDlrL2F0aDlrX2h0YyBzcGVjdHJhbCBzY2FuIHN1cHBvcnRcXFwiXFxuIDIwODpcXHRcXHRkZXBlbmRzIG9uIEFUSDlLX0RFQlVHRlMgfHwgQVRIOUtfSFRDX0RFQlVHRlNcXG4gMjA5OlxcdFxcdHNlbGVjdCBSRUxBWVxcbiAyMTA6XFx0XFx0ZGVmYXVsdCBuXFxuIDIxMTpcXHRcXHRoZWxwXFxuIDIxMjpcXHRcXHQgIFNheSBZIHRvIGVuYWJsZSBhY2Nlc3MgdG8gdGhlIEZGVC9zcGVjdHJhbCBkYXRhIHZpYSBkZWJ1Z2ZzLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNTo0ODo0MS45NTkxMTcyOFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0NDYwMjUxMTM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhlIHRob3VnaHQgcHJvY2VzcyB1bmZvbGRzOlxuXG4qKkNoZWNraW5nIHRoZSBLY29uZmlnIGZvciBgQVRIOUtfREVCVUdGU2AqKlxuXG5Pa2F5LCBzbyB3ZSdyZSBkaXZpbmcgaW50byB0aGlzIGlzc3VlLi4uIExldCdzIG5vdCBqdXN0IGFzc3VtZSB3aGVyZSB0aGUgcHJvYmxlbSBsaWVzLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBkb3VibGUtY2hlY2sgc29tZXRoaW5nIHRoYXQgbWlnaHQgYmUgZWFzaWx5IG92ZXJsb29rZWQuIFJpZ2h0IG5vdywgSSdtIHRoaW5raW5nLCBcIkRpZCB3ZSBtYWtlIHN1cmUgdGhhdCBkZWJ1Z2dpbmcgaXMgZW5hYmxlZD9cIiBMZXQncyBzZWUgaWYgdGhlIGBBVEg5S19ERUJVR0ZTYCBjb25maWd1cmF0aW9uIG9wdGlvbiBpcyBlbmFibGVkIGluIHRoZSBLY29uZmlnLiBBIGxvdCBvZiB0aW1lcywgZGVidWdnaW5nIGZlYXR1cmVzIGFyZSBjb25kaXRpb25hbGx5IGNvbXBpbGVkLCBhbmQgaXQncyBlYXN5IHRvIG1pc3MgdGhhdCBzcGVjaWZpYyBjb25maWcuIEl0J3MgYSBxdWljayBzYW5pdHkgY2hlY2ssIGJ1dCBpbXBvcnRhbnQgYmVjYXVzZSBpZiB0aGF0J3Mgbm90IGVuYWJsZWQsIHdlJ3JlIG5vdCBnb2luZyB0byBzZWUgYW55IHJlbGV2YW50IGRlYnVnIGluZm9ybWF0aW9uIGZyb20gdGhhdCBtb2R1bGUuIEl0IG1pZ2h0IHNlZW0gYmFzaWMsIGJ1dCBpdCdzIGVzc2VudGlhbCB0byBub3Qgc2tpcCB0aGlzIHN0ZXAuIFRoaXMgY2hlY2sgbWFrZXMgc2Vuc2UgZnJvbSB0aGUgcGVyc3BlY3RpdmUgdGhhdCBpZiB0aGUgZmVhdHVyZSBpcyBub3QgY29uZmlndXJlZCwgaXQncyBhIGhhcmQgYmFycmllciB0byBzZWVpbmcgdGhlIGluZm9ybWF0aW9uIG5lZWRlZC4gSSdsbCBzZWFyY2ggdGhhdCBLY29uZmlnIG5vdy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjMyNDcsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDA1OjQ4OjQ2LjQxOTM3MjQ2N1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTMxMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMTQwLFxuICBcIkxpbmVDb3VudFwiOiAzNVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTQwOlxcdFxcdCAgYSBwbGF0Zm9ybSB0aGF0IGNhbiB0b2dnbGUgdGhlIFJGLUtpbGwgR1BJTy5cXG4gMTQxOlxcdFxcbiAxNDI6XFx0Y29uZmlnIEFUSDlLX0NIQU5ORUxfQ09OVEVYVFxcbiAxNDM6XFx0XFx0Ym9vbCBcXFwiQ2hhbm5lbCBDb250ZXh0IHN1cHBvcnRcXFwiXFxuIDE0NDpcXHRcXHRkZXBlbmRzIG9uIEFUSDlLXFxuIDE0NTpcXHRcXHRkZWZhdWx0IG5cXG4gMTQ2OlxcdFxcdGhlbHBcXG4gMTQ3OlxcdFxcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyBjaGFubmVsIGNvbnRleHQgc3VwcG9ydCBpbiBhdGg5aywgd2hpY2ggaXMgbmVlZGVkXFxuIDE0ODpcXHRcXHQgIGZvciBtdWx0aS1jaGFubmVsIGNvbmN1cnJlbmN5LiBFbmFibGUgdGhpcyBpZiBQMlAgUG93ZXJTYXZlIHN1cHBvcnRcXG4gMTQ5OlxcdFxcdCAgaXMgcmVxdWlyZWQuXFxuIDE1MDpcXHRcXG4gMTUxOlxcdGNvbmZpZyBBVEg5S19QQ09FTVxcbiAxNTI6XFx0XFx0Ym9vbCBcXFwiQXRoZXJvcyBhdGg5ayBzdXBwb3J0IGZvciBQQyBPRU0gY2FyZHNcXFwiIGlmIEVYUEVSVFxcbiAxNTM6XFx0XFx0ZGVwZW5kcyBvbiBBVEg5S1xcbiAxNTQ6XFx0XFx0ZGVmYXVsdCB5XFxuIDE1NTpcXHRcXG4gMTU2OlxcdGNvbmZpZyBBVEg5S19QQ0lfTk9fRUVQUk9NXFxuIDE1NzpcXHRcXHR0cmlzdGF0ZSBcXFwiQXRoZXJvcyBhdGg5ayBwY2kgbG9hZGVyIGZvciBFRVBST00tbGVzcyBjaGlwc1xcXCJcXG4gMTU4OlxcdFxcdGRlcGVuZHMgb24gQVRIOUtfUENJXFxuIDE1OTpcXHRcXHRkZWZhdWx0IG5cXG4gMTYwOlxcdFxcdGhlbHBcXG4gMTYxOlxcdFxcdCAgVGhpcyBzZXBhcmF0ZSBkcml2ZXIgcHJvdmlkZXMgYSBsb2FkZXIgaW4gb3JkZXIgdG8gc3VwcG9ydCB0aGVcXG4gMTYyOlxcdFxcdCAgQVI1MDBYIHRvIEFSOTJYWC1nZW5lcmF0aW9uIG9mIGF0aDlrIFBDSShlKSBXaUZpIGNoaXBzLCB3aGljaCBoYXZlXFxuIDE2MzpcXHRcXHQgIHRoZWlyIGluaXRpYWxpemF0aW9uIGRhdGEgKHdoaWNoIGNvbnRhaW5zIHRoZSByZWFsIFBDSSBEZXZpY2UgSURcXG4gMTY0OlxcdFxcdCAgdGhhdCBhdGg5ayB3aWxsIG5lZWQpIHN0b3JlZCB0b2dldGhlciB3aXRoIHRoZSBjYWxpYnJhdGlvbiBkYXRhIG91dFxcbiAxNjU6XFx0XFx0ICBvZiByZWFjaCBmb3IgdGhlIGF0aDlrIGNoaXAuXFxuIDE2NjpcXHRcXG4gMTY3OlxcdFxcdCAgVGhlc2UgZGV2aWNlcyBhcmUgdXN1YWxseSB2YXJpb3VzIG5ldHdvcmsgYXBwbGlhbmNlcywgcm91dGVycyBvclxcbiAxNjg6XFx0XFx0ICBhY2Nlc3MgUG9pbnRzIGFuZCBzdWNoLlxcbiAxNjk6XFx0XFxuIDE3MDpcXHRcXHQgIElmIHVuc3VyZSBzYXkgTi5cXG4gMTcxOlxcdFxcbiAxNzI6XFx0Y29uZmlnIEFUSDlLX0hUQ1xcbiAxNzM6XFx0XFx0dHJpc3RhdGUgXFxcIkF0aGVyb3MgSFRDIGJhc2VkIHdpcmVsZXNzIGNhcmRzIHN1cHBvcnRcXFwiXFxuIDE3NDpcXHRcXHRkZXBlbmRzIG9uIFVTQiBcXHUwMDI2XFx1MDAyNiBNQUM4MDIxMVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNTo0ODo0Ni40MTk1MjgyNzdaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzUxNjYyNTQ0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipIdW50aW5nIERvd24gQVRIOUtfREVCVUdGUyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB0cmFjayBkb3duIHRoZSBgQVRIOUtfREVCVUdGU2AgY29uZmlndXJhdGlvbiBvcHRpb24uIE15IGltbWVkaWF0ZSBzdHJhdGVneSBpcyB0byBqdW1wIGludG8gdGhlIGBLY29uZmlnYCBmaWxlcyDigJMgdGhhdCdzIHRoZSBjYW5vbmljYWwgcGxhY2UgdG8gZmluZCB0aGVzZSBzZXR0aW5ncyBhbmQgdGhlaXIgZGVwZW5kZW5jaWVzLiBJJ2xsIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0aGUgYGF0aDlrYCBkcml2ZXIgaXMgY29uZmlndXJlZCwgYW5kIGZyb20gdGhlcmUgbmF2aWdhdGUgdGhlIGRlcGVuZGVuY3kgY2hhaW4gdG8gbG9jYXRlIHRoZSByZWxldmFudCBvcHRpb24uIEhvcGVmdWxseSwgaXQncyBub3QgYnVyaWVkIHRvbyBkZWVwIHdpdGhpbiBhbiBvYnNjdXJlIHN1Yi1tZW51LiBUaW1lIHRvIGdldCB0byB3b3JrLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDA0NiwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDU6NDg6NDkuOTM2MTU3NjE1WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2ODgzMDQzNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQVRIOUtfREVCVUdGU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWtcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc9NDg9Y29uZmlnIEFUSDlLX0FIQlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6NTg6Y29uZmlnIEFUSDlLX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy01OS1cXHRib29sIFxcXCJBdGhlcm9zIGF0aDlrIGRlYnVnZ2luZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDU6NDg6NTAuMDA0OTkyMTcxWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIyMTQ3NzA0OTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgaG93IEknZCBhcHByb2FjaCB0aGF0OlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIEJ1aWxkIFByb2Nlc3MgZm9yIGBjb21tb24tc3BlY3RyYWwub2AgaW4gdGhlIGF0aDlrIFdpcmVsZXNzIERyaXZlcioqXG5cblJpZ2h0LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCBleGFjdGx5IGhvdyBgY29tbW9uLXNwZWN0cmFsLm9gIGdldHMgY29tcGlsZWQgd2l0aGluIHRoZSBgYXRoOWtgIHdpcmVsZXNzIGRyaXZlci4gVGhlIG1vc3QgbG9naWNhbCBwbGFjZSB0byBzdGFydCBpcyB0aGUgYE1ha2VmaWxlYCB3aXRoaW4gdGhlIHJlbGV2YW50IGRpcmVjdG9yeS4gU3BlY2lmaWNhbGx5LCBJJ20gZ29pbmcgdG8gbG9vayBhdCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlYC4gVGhhdCBmaWxlIGlzIHRoZSBjZW50cmFsIG9yY2hlc3RyYXRvciBmb3IgaG93IGFsbCB0aGUgY29tcG9uZW50cyB3aXRoaW4gdGhhdCBzcGVjaWZpYyBtb2R1bGUgYXJlIGJ1aWx0LiBJdCBzaG91bGQgY29udGFpbiB0aGUgcnVsZXMgb3IgaW5zdHJ1Y3Rpb25zIGRldGFpbGluZyB0aGUgY29tcGlsYXRpb24gcHJvY2VzcyBmb3IgYW55IG9iamVjdCBmaWxlcyB3aXRoaW4gdGhhdCBkaXJlY3RvcnkuIEknbSBleHBlY3RpbmcgdG8gZmluZCBlaXRoZXIgYSBkaXJlY3QgcnVsZSBmb3IgYGNvbW1vbi1zcGVjdHJhbC5vYCBvciwgbW9yZSBsaWtlbHksIGEgc2V0IG9mIHJ1bGVzIGFuZCBkZXBlbmRlbmNpZXMgdGhhdCB3aWxsIHVsdGltYXRlbHkgbGVhZCB0byBpdHMgY3JlYXRpb24uIFRpbWUgdG8gY3JhY2sgb3BlbiB0aGF0IE1ha2VmaWxlIGFuZCBzZWUgd2hhdCdzIHdoYXQuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBjb21wbGV0ZSB2aWV3IG9mIGFsbCBkZXBlbmRlbmNpZXMgYW5kIGxpbmtpbmcgc3RyYXRlZ2llcyB0byBmb3JtIHRoZSBjb21waWxlZCBtb2R1bGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0MzM5LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDU6NDg6NTIuMjE5NzY3MDE1WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MzI2NjcxNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb21tb24tc3BlY3RyYWxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZT02NT1hdGg5a19jb21tb24tJChDT05GSUdfQVRIOUtfQ09NTU9OX0RFQlVHKSArPSBjb21tb24tZGVidWcub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZTo2NjphdGg5a19jb21tb24tJChDT05GSUdfQVRIOUtfQ09NTU9OX1NQRUNUUkFMKSArPSBjb21tb24tc3BlY3RyYWwub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS02Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24uaC0yNi0jaW5jbHVkZSBcXFwiY29tbW9uLWRlYnVnLmhcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi5oOjI3OiNpbmNsdWRlIFxcXCJjb21tb24tc3BlY3RyYWwuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLmgtMjgtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDA1OjQ4OjUyLjI5MzAzODY0WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjMxMjY5OTAwMTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgYXRoOWtfaHRjIERyaXZlciBmb3IgRnV6emluZyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIGBhdGg5a19jb21tb25gIGdldHMgYnVpbHQgd2hlbiBgQVRIOUtfQ09NTU9OYCBpcyBlbmFibGVkLCB3aGljaCBpcyB0aWVkIHRvIGVpdGhlciBgQVRIOUtgIG9yIGBBVEg5S19IVENgLiBNYWtlcyBzZW5zZS4gSWYgYEFUSDlLX0NPTU1PTl9TUEVDVFJBTGAgaXMgdG9nZ2xlZCBvbiwgdGhlbiBgY29tbW9uLXNwZWN0cmFsLm9gIGdldHMgaW5jbHVkZWQgd2l0aGluIGBhdGg5a19jb21tb25gLiBHb29kLCB0aGF0J3MgZXhwZWN0ZWQuXG5cbk5vdywgYGF0aDlrX2h0Y2AgaXRzZWxmIGlzIGEgVVNCIGRyaXZlciwgd2hpY2ggbWVhbnMgaXQgaGluZ2VzIG9uIGBVU0JgIGFuZCBgTUFDODAyMTFgLCBvYnZpb3VzbHkuIFRoZSByZWFsIHF1ZXN0aW9uIGlzLCBjYW4gd2UgYWN0dWFsbHkgcmVhY2ggYGF0aDlrX2h0Y2AgZWZmZWN0aXZlbHkgaW4gc3l6a2FsbGVyIGZ1enppbmc/IEl0J3MgdGhlIHN0YW5kYXJkIHF1ZXN0aW9uIGZvciB0aGlzIHNvcnQgb2YgYW5hbHlzaXM6IGhvdyBhY2Nlc3NpYmxlIGlzIGl0P1xuXG5MZXQgbWUgcmVmZXIgYmFjayB0byB0aGUgU2VjdGlvbiAxLCAyLCAzIGNsYXNzaWZpY2F0aW9ucy4gRnJvbSB0aGUgZGVzY3JpcHRpb24sIGBhdGg5a19odGNgIGZhbGxzIHVuZGVyIHRoZSBjYXRlZ29yeSBvZiBkcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMsIHNwZWNpZmljYWxseSwgVVNCLiBUaGlzIHdvdWxkIG1lYW4gVVNCIGVtdWxhdGlvbiBsaWtlIHJhd19nYWRnZXQsIGR1bW15X2hjZCwgb3IsIGNydWNpYWxseSwgc3l6a2FsbGVyIFVTQiBmdXp6aW5nIGNhbiBiZSBsZXZlcmFnZWQuIEV4Y2VsbGVudCwgdGhhdCdzIGEgcG9zaXRpdmUgc2lnbi5cblxuQmV5b25kIHRoYXQsIHdlIGhhdmUgZGVidWdmcyBhbmQgcmVsYXkgaW50ZXJmYWNlcyB0byBleHBsb3JlLiBUaGUgc3BlY3RyYWwgc2NhbiBmdW5jdGlvbmFsaXR5IHdpdGhpbiB0aGUgZHJpdmVyIGNyZWF0ZXMgZGVidWdmcyBlbnRyaWVzIGxpa2UgYHNwZWN0cmFsX3NjYW5gLCBgc3BlY3RyYWxfc2Nhbl9jdGxgLCBhbmQgYHNwZWN0cmFsX2NvdW50YC4gSSBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byB3aGF0IGRlYnVnZnMgZmlsZXMgc3BlY2lmaWNhbGx5IHRoZSBgY29tbW9uLXNwZWN0cmFsYCBjb21wb25lbnQgZ2VuZXJhdGVzLiBUaGVzZSBpbnRlcmZhY2VzIG9mdGVuIHByb3ZpZGUgYSB2YWx1YWJsZSBwb2ludCBvZiBpbnRlcmFjdGlvbiBmb3IgZnV6emluZyBhbmQgYnVnIGRldGVjdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQ4MTYsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDU6NDg6NTUuNDIwMDMxOTI1WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MjcwNjc2NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZWJ1Z2ZzX2NyZWF0ZV9maWxlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM9MTAxOT1zdGF0aWMgc3RydWN0IGRlbnRyeSAqY3JlYXRlX2J1Zl9maWxlX2hhbmRsZXIoY29uc3QgY2hhciAqZmlsZW5hbWUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTAyNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6MTAyNzpcXHRidWZfZmlsZSA9IGRlYnVnZnNfY3JlYXRlX2ZpbGUoZmlsZW5hbWUsIG1vZGUsIHBhcmVudCwgYnVmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xMDI4LVxcdFxcdFxcdFxcdCAgICAgICBcXHUwMDI2cmVsYXlfZmlsZV9vcGVyYXRpb25zKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYz0xMDYxPXZvaWQgYXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTEwNzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjEwNzM6XFx0ZGVidWdmc19jcmVhdGVfZmlsZShcXFwic3BlY3RyYWxfc2Nhbl9jdGxcXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xMDc0LVxcdFxcdFxcdCAgICAwNjAwLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTEwNzYtXFx0XFx0XFx0ICAgIFxcdTAwMjZmb3BzX3NwZWNfc2Nhbl9jdGwpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzoxMDc3OlxcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXFxcInNwZWN0cmFsX3Nob3J0X3JlcGVhdFxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTEwNzgtXFx0XFx0XFx0ICAgIDA2MDAsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTA4MC1cXHRcXHRcXHQgICAgXFx1MDAyNmZvcHNfc3BlY3RyYWxfc2hvcnRfcmVwZWF0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6MTA4MTpcXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFxcXCJzcGVjdHJhbF9jb3VudFxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTEwODItXFx0XFx0XFx0ICAgIDA2MDAsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTA4NC1cXHRcXHRcXHQgICAgXFx1MDAyNmZvcHNfc3BlY3RyYWxfY291bnQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzoxMDg1OlxcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXFxcInNwZWN0cmFsX3BlcmlvZFxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTEwODYtXFx0XFx0XFx0ICAgIDA2MDAsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTA4OC1cXHRcXHRcXHQgICAgXFx1MDAyNmZvcHNfc3BlY3RyYWxfcGVyaW9kKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6MTA4OTpcXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFxcXCJzcGVjdHJhbF9mZnRfcGVyaW9kXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTA5MC1cXHRcXHRcXHQgICAgMDYwMCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDU6NDg6NTUuNTAyNzQ1NTY5WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjEwNzM5ODQ5MjE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIFNwZWN0cmFsIFNjYW4gUGFja2V0IFByb2Nlc3NpbmcgaW4gYXRoOWsgYW5kIGF0aDlrX2h0YyBEcml2ZXJzKipcblxuT2theSwgc28gaGVyZSdzIHRoZSBkZWFsLiBXaGVuIHNwZWN0cmFsIHNjYW5uaW5nIGlzIGVuYWJsZWQsIGVpdGhlciB0aHJvdWdoIHRoZSBgc3BlY3RyYWxfc2Nhbl9jdGxgIG9yIG1hYzgwMjExIGludGVyZmFjZXMsIGFuZCBwYWNrZXRzIGNvbWUgaW4gKHNwZWNpZmljYWxseSB2aWEgVVNCIGluIHRoZSBgYXRoOWtfaHRjYCBkcml2ZXIsIHdoaWNoIGlzIGNydWNpYWwgZm9yIG91ciBmdXp6aW5nIHN0cmF0ZWd5KSwgYGF0aF9jbW5fcHJvY2Vzc19mZnRgIGdldHMgY2FsbGVkLiBUaGlzIGZ1bmN0aW9uLCBpbiB0dXJuLCBjYWxscyBgYXRoX2Ntbl9jb3VudF9mZnRfc2FtcGxlYC4gSSBuZWVkIHRvIGVuc3VyZSB0aGlzIGlzIHVuZGVyc3Rvb2Qgd2l0aGluIHRoZSBjb250ZXh0IG9mIGRlYnVnZnMgZmlsZXMsIHdoaWNoIGFyZSBwcmltZSB0YXJnZXRzIGZvciBmdXp6aW5nLlxuXG5NeSBwcmltYXJ5IGZvY3VzIGhlcmUgaXMgdW5kZXJzdGFuZGluZyB3aGF0IGNoYW5nZWQgaW4gdGhpcyBjb2RlLiBUaGUga2V5IGZ1bmN0aW9ucyBJJ20gemVyb2luZyBpbiBvbiBhcmU6IGBhdGhfY21uX2NvdW50X2ZmdF9zYW1wbGVgIChzdGF0aWMgd2l0aGluIGBjb21tb24tc3BlY3RyYWwuY2ApLCBgYXRoX2Ntbl9wcm9jZXNzX2ZmdGAgKG5vbi1zdGF0aWMgYW5kIGFuIGV4cG9ydGVkIHN5bWJvbCBpbiBgY29tbW9uLXNwZWN0cmFsLmNgKSwgYGF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnYCAoYW5vdGhlciBleHBvcnRlZCBzeW1ib2wgZnJvbSBgY29tbW9uLXNwZWN0cmFsLmNgKSwgYGF0aDlrX2luaXRfZGVidWdgIChpbiBgZGVidWcuY2ApLCBhbmQgYGF0aDlrX2h0Y19pbml0X2RlYnVnYCAoaW4gYGh0Y19kcnZfZGVidWcuY2ApLiBJJ20gbG9va2luZyBmb3IgYW55IGFkZGVkIG9yIG1vZGlmaWVkIGZ1bmN0aW9uIGNhbGxzLCBhbmQgdGhlIHJlbGF0aW9uc2hpcHMgYmV0d2VlbiB0aGVtLlxuXG5UaGUgcGF0Y2ggaXRzZWxmIGlzIHRoZSBibHVlcHJpbnQgaGVyZS4gSXQgbG9va3MgbGlrZSBgYXRoX2Ntbl9jb3VudF9mZnRfc2FtcGxlYCBpcyBub3cgYmVpbmcgdXNlZCB0byBpbmNyZW1lbnQgYHJ4X3NwZWN0cmFsX3NhbXBsZV9nb29kYCBvciBgcnhfc3BlY3RyYWxfc2FtcGxlX2VycmAgd2l0aGluIGBhdGhfY21uX3Byb2Nlc3NfZmZ0YCBkZXBlbmRpbmcgb24gdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgRkZUIGhhbmRsZXIuIFRoaXMgaXMgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgYmVjYXVzZSB0aGF0IGxvZ2ljIGlzIGRpcmVjdGx5IGV4cG9zZWQgdG8gZnV6emluZy4gQSBrZXkgbW9kaWZpY2F0aW9uIHNlZW1zIHRvIGJlIHRoZSBhZGRpdGlvbiBvZiBhIGBzdHJ1Y3QgYXRoX3J4X3N0YXRzICpyeF9zdGF0c2AgcG9pbnRlci4gVGhpcyBnZXRzIHNldCB1cCB3aXRoaW4gZGVidWcgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb25zOiBzcGVjaWZpY2FsbHksIGBhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1Z2Agbm93IGFjY2VwdHMgYHJ4X3N0YXRzYCBhcyBhbiBhcmd1bWVudCBhbmQgaXQgbm93IHRha2VzIGFuZCBzZXRzIGBzcGVjX3ByaXYtXHUwMDNlcnhfc3RhdHNgIGluIGl0cyBpbml0aWFsaXphdGlvbiByb3V0aW5lICh3aGljaCBpcyBhIGNvcmUgY2hhbmdlKS4gSXQgaXMgYWxzbyBjYWxsZWQgZHVyaW5nIGBhdGg5a19pbml0X2RlYnVnYCBhbmQgYGF0aDlrX2h0Y19pbml0X2RlYnVnYC5cblxuTm93LCB0aGUgaW1wb3J0YW50IHBhcnQ6IGlzIHRoaXMgcmVhY2hhYmxlPyBZZXMsIHVzaW5nIFVTQiBlbXVsYXRpb24sIHN5emthbGxlciBhbmQgcmF3X2dhZGdldCwgb3IgZHVtbXlfaGNkIHdoaWNoIGlzIHdpdGhpbiBvdXIgcmVhY2ggZm9yIHRoZSBgYXRoOWtfaHRjYCBkcml2ZXIuICBUaGUgY3JpdGljYWwgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlcXVpcmVkIGFyZSBgQVRIOUtfSFRDYCwgYEFUSDlLX0hUQ19ERUJVR0ZTYCwgYEFUSDlLX0NPTU1PTl9TUEVDVFJBTGAsIGBBVEg5S2AsIGBBVEg5S19ERUJVR0ZTYCwgYFVTQmAsIGFuZCBgTUFDODAyMTFgLlxuXG5XZSBuZWVkIHRvIGVuc3VyZSB0aGF0IHRoZSBrZXkgZnVuY3Rpb25zIChgYXRoX2Ntbl9wcm9jZXNzX2ZmdGAsIGBhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1Z2AsIGBhdGg5a19odGNfaW5pdF9kZWJ1Z2AsIGFuZCBgYXRoOWtfaW5pdF9kZWJ1Z2ApIGFyZSBub3QgbGlmZWN5Y2xlIGZ1bmN0aW9ucywgYW5kIHNwZWNpZmljIHRvIHRoZSBoYW5kbGluZyBvZiBzcGVjdHJhbCBzY2FuIGFuZCBkZWJ1Z2ZzLiAgVGhpcyBkZXRhaWxlZCBhbmFseXNpcyBkZW1vbnN0cmF0ZXMgdGhhdCB0aGlzIGlzLCBpbiBmYWN0LCB0aGUgY2FzZS4gYGF0aF9jbW5fcHJvY2Vzc19mZnRgIGlzIGRpcmVjdGx5IGhhbmRsaW5nIEZGVCBmcmFtZXMsIGFuZCBkZWJ1ZyBpbml0aWFsaXphdGlvbiBmdW5jdGlvbnMgdGllIHRoaXMgcHJvY2VzcyB0byBkZWJ1ZyBpbnRlcmZhY2VzLiAgVGhlIHBhdGNoIG1vZGlmaWVzIHN0YXRzIHRyYWNraW5nIHdpdGggdGhlIGFkZGVkIHBvaW50ZXIsIGFuZCB0aGF0IGFkZHMgYSBzcGVjaWZpYyBmdXp6aW5nIHRhcmdldC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjYxODIsIk91dHB1dFRva2VucyI6MTk1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzIzNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNTo0OTowNi4yNDI1OTk1NzNaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTMwNjY1NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkFUSDlLX0NPTU1PTl9TUEVDVFJBTFwiLFxuICAgIFwiQVRIOUtfSFRDX0RFQlVHRlNcIixcbiAgICBcIkFUSDlLX0hUQ1wiLFxuICAgIFwiQVRIOUtfREVCVUdGU1wiLFxuICAgIFwiQVRIOUtcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJhdGhfY21uX3Byb2Nlc3NfZmZ0XCIsXG4gICAgXCJhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1Z1wiLFxuICAgIFwiYXRoOWtfaHRjX2luaXRfZGVidWdcIixcbiAgICBcImF0aDlrX2luaXRfZGVidWdcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgc3BlY3RyYWwgc2NhbiBkZWJ1ZyBpbml0aWFsaXphdGlvbiBhbmQgRkZUIHNhbXBsZSBwcm9jZXNzaW5nIGluIHRoZSBhdGg5ayBhbmQgYXRoOWtfaHRjIGRyaXZlcnMuIGF0aDlrX2h0YyBpcyBhIFVTQi1iYXNlZCB3aXJlbGVzcyBkcml2ZXIgYWNjZXNzaWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIFVTQiBlbXVsYXRpb24uIFRoZSBjaGFuZ2VzIGFsdGVyIGhvdyBzcGVjdHJhbCBzYW1wbGUgc3RhdGlzdGljcyBhcmUgdHJhY2tlZCBhbmQgaW5pdGlhbGl6ZWQgYWNyb3NzIGRyaXZlcnMgc2hhcmluZyBjb21tb24gc3BlY3RyYWwgc2NhbiBjb2RlLCBtYWtpbmcgaXQgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJBVEg5S19DT01NT05fU1BFQ1RSQUxcIixcbiAgICBcIkFUSDlLX0hUQ19ERUJVR0ZTXCIsXG4gICAgXCJBVEg5S19IVENcIixcbiAgICBcIkFUSDlLX0RFQlVHRlNcIixcbiAgICBcIkFUSDlLXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYXRoX2Ntbl9wcm9jZXNzX2ZmdFwiLFxuICAgIFwiYXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWdcIixcbiAgICBcImF0aDlrX2h0Y19pbml0X2RlYnVnXCIsXG4gICAgXCJhdGg5a19pbml0X2RlYnVnXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHNwZWN0cmFsIHNjYW4gZGVidWcgaW5pdGlhbGl6YXRpb24gYW5kIEZGVCBzYW1wbGUgcHJvY2Vzc2luZyBpbiB0aGUgYXRoOWsgYW5kIGF0aDlrX2h0YyBkcml2ZXJzLiBhdGg5a19odGMgaXMgYSBVU0ItYmFzZWQgd2lyZWxlc3MgZHJpdmVyIGFjY2Vzc2libGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBVU0IgZW11bGF0aW9uLiBUaGUgY2hhbmdlcyBhbHRlciBob3cgc3BlY3RyYWwgc2FtcGxlIHN0YXRpc3RpY3MgYXJlIHRyYWNrZWQgYW5kIGluaXRpYWxpemVkIGFjcm9zcyBkcml2ZXJzIHNoYXJpbmcgY29tbW9uIHNwZWN0cmFsIHNjYW4gY29kZSwgbWFraW5nIGl0IHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDA1OjQ5OjA2LjM5NTY3MzgzM1oiLCJTZXEiOjIxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODAzMTk5OTQ4MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDA1OjQ5OjA2LjM5NjI0ODg4M1oiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjgwMzE0MTkxNDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgdHlwZSBjb25mdXNpb24gaXNzdWUgYmV0d2VlbiBhdGg5ayBhbmQgYXRoOWtfaHRjIGRyaXZlcnMgaW4gc2hhcmVkIHNwZWN0cmFsIHNjYW5uaW5nIGNvZGUgKGNvbW1vbi1zcGVjdHJhbC5jKSwgd2hlcmUgY29tbW9uLVxcdTAwM2Vwcml2IHdhcyBwcmV2aW91c2x5IGNhc3QgdW5jb25kaXRpb25hbGx5IHRvIHN0cnVjdCBhdGhfc29mdGMgKi4gVGhlIGZpeCBwYXNzZXMgdGhlIGRyaXZlci1zcGVjaWZpYyBhdGhfcnhfc3RhdHMgcG9pbnRlciBkdXJpbmcgZGVidWcgaW5pdGlhbGl6YXRpb24gYW5kIGluY3JlbWVudHMgc3RhdHMgdGhyb3VnaCBzcGVjX3ByaXYtXFx1MDAzZXJ4X3N0YXRzIHdpdGggYSBOVUxMIGNoZWNrLlxcblxcblRoaXMgY2hhbmdlIG9ubHkgYWZmZWN0cyBwb2ludGVyIGFzc2lnbm1lbnQgYW5kIHN0YXRpc3RpYyBjb3VudGVyIGluY3JlbWVudHMuIEl0IGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnksIGFsbG9jYXRlIHVuaW5pdGlhbGl6ZWQgYnVmZmVycywgb3IgcGVyZm9ybSBjb3BpZXMgdG8gdXNlciBzcGFjZSBvZiB1bmluaXRpYWxpemVkIGRhdGEuIEFueSBtZW1vcnkgc2FmZXR5IGNvbmNlcm5zIChzdWNoIGFzIGludmFsaWQgcG9pbnRlciBkZXJlZmVyZW5jZXMgb3IgdHlwZSBjb25mdXNpb24pIGFyZSBhZGVxdWF0ZWx5IGNvdmVyZWQgYnkgS0FTQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMjkzN2U4NTRiODY1NWIxMmU1YjJkMWNiNzY0ZDAwYWJmZTRmOWViMFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gU2VwIDYgMDU6NDc6MzEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmNcbmluZGV4IGNhMDFhMDdmNjYzMGMuLmQ4YmUyNGViY2QyNDcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuY1xuQEAgLTQ2NSw2ICs0NjUsMjAgQEAgYXRoX2Ntbl9pc19mZnRfYnVmX2Z1bGwoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2KVxuIFx0XHRyZXR1cm4gMDtcbiB9XG4gXG4rc3RhdGljIHZvaWQgYXRoX2Ntbl9jb3VudF9mZnRfc2FtcGxlKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdixcbitcdFx0XHRcdCAgICAgaW50IHJldClcbit7XG4rXHRzdHJ1Y3QgYXRoX3J4X3N0YXRzICpyeF9zdGF0cyA9IHNwZWNfcHJpdi1cdTAwM2VyeF9zdGF0cztcbitcbitcdGlmICghcnhfc3RhdHMpXG4rXHRcdHJldHVybjtcbitcbitcdGlmIChyZXQgPT0gMClcbitcdFx0cnhfc3RhdHMtXHUwMDNlcnhfc3BlY3RyYWxfc2FtcGxlX2dvb2QrKztcbitcdGVsc2VcbitcdFx0cnhfc3RhdHMtXHUwMDNlcnhfc3BlY3RyYWxfc2FtcGxlX2VycisrO1xuK31cbitcbiAvKiByZXR1cm5zIDEgaWYgdGhpcyB3YXMgYSBzcGVjdHJhbCBmcmFtZSwgZXZlbiBpZiBub3QgaGFuZGxlZC4gKi9cbiBpbnQgYXRoX2Ntbl9wcm9jZXNzX2ZmdChzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsIHN0cnVjdCBpZWVlODAyMTFfaGRyICpoZHIsXG4gXHRcdCAgICBzdHJ1Y3QgYXRoX3J4X3N0YXR1cyAqcnMsIHU2NCB0c2YpXG5AQCAtNDcyLDcgKzQ4Niw2IEBAIGludCBhdGhfY21uX3Byb2Nlc3NfZmZ0KHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiwgc3RydWN0IGllZWU4MDIxMV9oXG4gXHR1OCBzYW1wbGVfYnVmW1NQRUNUUkFMX1NBTVBMRV9NQVhfTEVOXSA9IHswfTtcbiBcdHN0cnVjdCBhdGhfaHcgKmFoID0gc3BlY19wcml2LVx1MDAzZWFoO1xuIFx0c3RydWN0IGF0aF9jb21tb24gKmNvbW1vbiA9IGF0aDlrX2h3X2NvbW1vbihzcGVjX3ByaXYtXHUwMDNlYWgpO1xuLVx0c3RydWN0IGF0aF9zb2Z0YyAqc2MgPSBjb21tb24tXHUwMDNlcHJpdjtcbiBcdHU4IG51bV9iaW5zLCAqdmRhdGEgPSAodTggKiloZHI7XG4gXHRzdHJ1Y3QgYXRoX3JhZGFyX2luZm8gKnJhZGFyX2luZm87XG4gXHRpbnQgbGVuID0gcnMtXHUwMDNlcnNfZGF0YWxlbjtcbkBAIC02MjQsMTAgKzYzNyw3IEBAIGludCBhdGhfY21uX3Byb2Nlc3NfZmZ0KHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiwgc3RydWN0IGllZWU4MDIxMV9oXG4gXHRcdFx0XHRyZXQgPSBmZnRfaGFuZGxlcihycywgc3BlY19wcml2LCBzYW1wbGVfYnVmLFxuIFx0XHRcdFx0XHRcdCAgdHNmLCBmcmVxLCBjaGFuX3R5cGUpO1xuIFxuLVx0XHRcdFx0aWYgKHJldCA9PSAwKVxuLVx0XHRcdFx0XHRSWF9TVEFUX0lOQyhzYywgcnhfc3BlY3RyYWxfc2FtcGxlX2dvb2QpO1xuLVx0XHRcdFx0ZWxzZVxuLVx0XHRcdFx0XHRSWF9TVEFUX0lOQyhzYywgcnhfc3BlY3RyYWxfc2FtcGxlX2Vycik7XG4rXHRcdFx0XHRhdGhfY21uX2NvdW50X2ZmdF9zYW1wbGUoc3BlY19wcml2LCByZXQpO1xuIFxuIFx0XHRcdFx0LyogTWl4IHRoZSByZWNlaXZlZCBiaW5zIHRvIHRoZSAvZGV2L3JhbmRvbVxuIFx0XHRcdFx0ICogcG9vbFxuQEAgLTY0MiwxMCArNjUyLDcgQEAgaW50IGF0aF9jbW5fcHJvY2Vzc19mZnQoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LCBzdHJ1Y3QgaWVlZTgwMjExX2hcbiBcdFx0XHRcdHJldCA9IGZmdF9oYW5kbGVyKHJzLCBzcGVjX3ByaXYsIHNhbXBsZV9zdGFydCxcbiBcdFx0XHRcdFx0XHQgIHRzZiwgZnJlcSwgY2hhbl90eXBlKTtcbiBcbi1cdFx0XHRcdGlmIChyZXQgPT0gMClcbi1cdFx0XHRcdFx0UlhfU1RBVF9JTkMoc2MsIHJ4X3NwZWN0cmFsX3NhbXBsZV9nb29kKTtcbi1cdFx0XHRcdGVsc2Vcbi1cdFx0XHRcdFx0UlhfU1RBVF9JTkMoc2MsIHJ4X3NwZWN0cmFsX3NhbXBsZV9lcnIpO1xuK1x0XHRcdFx0YXRoX2Ntbl9jb3VudF9mZnRfc2FtcGxlKHNwZWNfcHJpdiwgcmV0KTtcbiBcbiBcdFx0XHRcdC8qIE1peCB0aGUgcmVjZWl2ZWQgYmlucyB0byB0aGUgL2Rldi9yYW5kb21cbiBcdFx0XHRcdCAqIHBvb2xcbkBAIC0xMDUyLDggKzEwNTksMTAgQEAgdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfZGVpbml0X2RlYnVnKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdilcbiBFWFBPUlRfU1lNQk9MKGF0aDlrX2Ntbl9zcGVjdHJhbF9kZWluaXRfZGVidWcpO1xuIFxuIHZvaWQgYXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LFxuLVx0XHRcdFx0ICAgc3RydWN0IGRlbnRyeSAqZGVidWdmc19waHkpXG4rXHRcdFx0XHQgICBzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX3BoeSxcbitcdFx0XHRcdCAgIHN0cnVjdCBhdGhfcnhfc3RhdHMgKnJ4X3N0YXRzKVxuIHtcbitcdHNwZWNfcHJpdi1cdTAwM2VyeF9zdGF0cyA9IHJ4X3N0YXRzO1xuIFx0c3BlY19wcml2LVx1MDAzZXJmc19jaGFuX3NwZWNfc2NhbiA9IHJlbGF5X29wZW4oXCJzcGVjdHJhbF9zY2FuXCIsXG4gXHRcdFx0XHRcdCAgICBkZWJ1Z2ZzX3BoeSxcbiBcdFx0XHRcdFx0ICAgIDEwMjQsIDI1NiwgXHUwMDI2cmZzX3NwZWNfc2Nhbl9jYixcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmhcbmluZGV4IDAxMWQ4YWI4Yjk3NDQuLjBlMmM3ZDZkMzQ4NzQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmhcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaFxuQEAgLTk0LDEyICs5NCwxNiBAQCBzdHJ1Y3QgYXRoX2h0MjBfNDBfZmZ0X3BhY2tldCB7XG4gXHRzdHJ1Y3QgYXRoX3JhZGFyX2luZm8gcmFkYXJfaW5mbztcbiB9IF9fcGFja2VkO1xuIFxuK3N0cnVjdCBhdGhfcnhfc3RhdHM7XG4rXG4gc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiB7XG4gXHRzdHJ1Y3QgYXRoX2h3ICphaDtcbiBcdC8qIHJlbGF5KGZzKSBjaGFubmVsIGZvciBzcGVjdHJhbCBzY2FuICovXG4gXHRzdHJ1Y3QgcmNoYW4gKnJmc19jaGFuX3NwZWNfc2NhbjtcbiBcdGVudW0gc3BlY3RyYWxfbW9kZSBzcGVjdHJhbF9tb2RlO1xuIFx0c3RydWN0IGF0aF9zcGVjX3NjYW4gc3BlY19jb25maWc7XG4rXHQvKiBkcml2ZXIncyBSWCBzdGF0aXN0aWNzIHRvIGFjY291bnQgc2FtcGxlcyBpbnRvLCBpZiBhbnkgKi9cbitcdHN0cnVjdCBhdGhfcnhfc3RhdHMgKnJ4X3N0YXRzO1xuIH07XG4gXG4gI2RlZmluZSBTUEVDVFJBTF9IVDIwXzQwX1RPVEFMX0RBVEFfTEVOXHQoc2l6ZW9mKHN0cnVjdCBhdGhfaHQyMF80MF9mZnRfcGFja2V0KSlcbkBAIC0xNjksNyArMTczLDkgQEAgc3RhdGljIGlubGluZSB1OCBzcGVjdHJhbF9iaXRtYXBfd2VpZ2h0KHU4ICpiaW5zKVxuIH1cbiBcbiAjaWZkZWYgQ09ORklHX0FUSDlLX0NPTU1PTl9TUEVDVFJBTFxuLXZvaWQgYXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LCBzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX3BoeSk7XG4rdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsXG4rXHRcdFx0XHQgICBzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX3BoeSxcbitcdFx0XHRcdCAgIHN0cnVjdCBhdGhfcnhfc3RhdHMgKnJ4X3N0YXRzKTtcbiB2b2lkIGF0aDlrX2Ntbl9zcGVjdHJhbF9kZWluaXRfZGVidWcoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2KTtcbiBcbiB2b2lkIGF0aDlrX2Ntbl9zcGVjdHJhbF9zY2FuX3RyaWdnZXIoc3RydWN0IGF0aF9jb21tb24gKmNvbW1vbixcbkBAIC0xODEsNyArMTg3LDggQEAgaW50IGF0aF9jbW5fcHJvY2Vzc19mZnQoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LCBzdHJ1Y3QgaWVlZTgwMjExX2hcbiBcdFx0ICAgIHN0cnVjdCBhdGhfcnhfc3RhdHVzICpycywgdTY0IHRzZik7XG4gI2Vsc2VcbiBzdGF0aWMgaW5saW5lIHZvaWQgYXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LFxuLVx0XHRcdFx0XHRcdCBzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX3BoeSlcbitcdFx0XHRcdFx0XHQgc3RydWN0IGRlbnRyeSAqZGVidWdmc19waHksXG4rXHRcdFx0XHRcdFx0IHN0cnVjdCBhdGhfcnhfc3RhdHMgKnJ4X3N0YXRzKVxuIHtcbiB9XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2RlYnVnLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGVidWcuY1xuaW5kZXggNzRhMDEzNDA3NWNmOS4uMDQyYTRmNTQyYTk0MyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZWJ1Zy5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGVidWcuY1xuQEAgLTEzODksNyArMTM4OSw4IEBAIGludCBhdGg5a19pbml0X2RlYnVnKHN0cnVjdCBhdGhfaHcgKmFoKVxuIFxuIFx0YXRoOWtfZGZzX2luaXRfZGVidWcoc2MpO1xuIFx0YXRoOWtfdHg5OV9pbml0X2RlYnVnKHNjKTtcbi1cdGF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnKFx1MDAyNnNjLVx1MDAzZXNwZWNfcHJpdiwgc2MtXHUwMDNlZGVidWcuZGVidWdmc19waHkpO1xuK1x0YXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoXHUwMDI2c2MtXHUwMDNlc3BlY19wcml2LCBzYy1cdTAwM2VkZWJ1Zy5kZWJ1Z2ZzX3BoeSxcbitcdFx0XHRcdCAgICAgIFx1MDAyNnNjLVx1MDAzZWRlYnVnLnN0YXRzLnJ4c3RhdHMpO1xuIFxuIFx0ZGVidWdmc19jcmVhdGVfZGV2bV9zZXFmaWxlKHNjLVx1MDAzZWRldiwgXCJkbWFcIiwgc2MtXHUwMDNlZGVidWcuZGVidWdmc19waHksXG4gXHRcdFx0XHQgICAgcmVhZF9maWxlX2RtYSk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmNcbmluZGV4IDk0MzdkNjk4NzdjYzUuLjlkMzU0YjFkOTI5YzggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jXG5AQCAtNDg3LDcgKzQ4Nyw4IEBAIGludCBhdGg5a19odGNfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX2h3ICphaClcbiBcdHByaXYtXHUwMDNlZGVidWcuZGVidWdmc19waHkgPSBkZWJ1Z2ZzX2NyZWF0ZV9kaXIoS0JVSUxEX01PRE5BTUUsXG4gXHRcdFx0XHRcdCAgICAgcHJpdi1cdTAwM2Vody1cdTAwM2V3aXBoeS1cdTAwM2VkZWJ1Z2ZzZGlyKTtcbiBcbi1cdGF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnKFx1MDAyNnByaXYtXHUwMDNlc3BlY19wcml2LCBwcml2LVx1MDAzZWRlYnVnLmRlYnVnZnNfcGh5KTtcbitcdGF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnKFx1MDAyNnByaXYtXHUwMDNlc3BlY19wcml2LCBwcml2LVx1MDAzZWRlYnVnLmRlYnVnZnNfcGh5LFxuK1x0XHRcdFx0ICAgICAgXHUwMDI2cHJpdi1cdTAwM2VkZWJ1Zy5yeF9zdGF0cyk7XG4gXG4gXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFwidGd0X2ludF9zdGF0c1wiLCAwNDAwLCBwcml2LVx1MDAzZWRlYnVnLmRlYnVnZnNfcGh5LFxuIFx0XHRcdCAgICBwcml2LCBcdTAwMjZmb3BzX3RndF9pbnRfc3RhdHMpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDU6NDk6MDYuMzk2MjQ5OTYzWiIsIlNlcSI6MjMsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjgwMzEzOTIzNzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgdGhlIFdpcmVsZXNzIFBhdGNoOiBLTVNBTiBBc3Nlc3NtZW50KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBwYXRjaCBkb3duLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCB0aGlzIGlzIGEgZml4IHJlbGF0ZWQgdG8gc2hhcmVkIGNvZGUgYmV0d2VlbiB0aGUgYGF0aDlrYCBhbmQgYGF0aDlrX2h0Y2AgZHJpdmVycy4gVGhlIGNvcmUgaXNzdWUgcmV2b2x2ZXMgYXJvdW5kIGhvdyB0aGUgYGNvbW1vbi1zcGVjdHJhbC5jYCBtb2R1bGUsIHVzZWQgYnkgYm90aCwgd2FzIGluY29ycmVjdGx5IGFzc3VtaW5nIHRoZSB0eXBlIG9mIGBjb21tb24tXHUwMDNlcHJpdmAuIFRoaXMgcG9pbnRlciB3YXMgYmVpbmcgY2FzdCB0byBgc3RydWN0IGF0aF9zb2Z0YyAqYCwgYnV0IGluIHRoZSBgYXRoOWtfaHRjYCBjYXNlLCBpdCdzIGFjdHVhbGx5IHNvbWV0aGluZyBkaWZmZXJlbnQgKGEgYHN0cnVjdCBhdGg5a19odGNfcHJpdmAgb3Igc2ltaWxhciksIGxlYWRpbmcgdG8gb3V0LW9mLWJvdW5kcyByZWFkcy93cml0ZXMgd2hlbiBhY2Nlc3NpbmcgdGhlIHN0YXRpc3RpY3Mgc3RydWN0dXJlLiBCYXNpY2FsbHksIGEgY2xhc3NpYyB0eXBlIGNvbmZ1c2lvbiB2dWxuZXJhYmlsaXR5LlxuXG5UaGUgcGF0Y2ggcmVzb2x2ZXMgdGhpcyBieSBwYXNzaW5nIHRoZSBgc3RydWN0IGF0aF9yeF9zdGF0cyAqYCBwb2ludGVyIGRpcmVjdGx5IHRvIGBhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1Z2AuICBUaGlzIHBvaW50ZXIgdGhlbiBnZXRzIHN0b3JlZCBpbiBgc3BlY19wcml2LVx1MDAzZXJ4X3N0YXRzYCwgYW5kIHRoaXMgaXMgdXNlZCBmb3IgY291bnRlciBpbmNyZW1lbnRzIGluIGBhdGhfY21uX2NvdW50X2ZmdF9zYW1wbGVgLiBJbiBgYXRoOWtgLCB0aGlzIHBvaW50ZXIgY29tZXMgZnJvbSBgc2MtXHUwMDNlZGVidWcuc3RhdHMucnhzdGF0c2AsIGFuZCBpbiBgYXRoOWtfaHRjYCwgaXQgY29tZXMgZnJvbSBgcHJpdi1cdTAwM2VkZWJ1Zy5yeF9zdGF0c2AuIFRoZSBjcnVjaWFsIHRoaW5nIGhlcmUgaXMgdGhhdCB0aGUgcG9pbnRlciBpcyBleHBsaWNpdGx5IHBhc3NlZCwgbm90IGltcGxpY2l0bHkgZGVyaXZlZCB0aHJvdWdoIGEgcG90ZW50aWFsbHkgaW5jb3JyZWN0IHR5cGUgY2FzdC5cblxuTXkgbWFpbiBmb2N1cyBub3cgaXMgb24gbWVtb3J5IHNhZmV0eS4gRG9lcyB0aGlzIGludHJvZHVjZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWVzPyAgSSd2ZSBjaGVja2VkOiB0aGlzIHBhdGNoIGRvZXNuJ3QgY29weSB1bmluaXRpYWxpemVkIG1lbW9yeSB0byB1c2VyIHNwYWNlLCBpdCBkb2Vzbid0IHJlYWQgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMgb3Igc3RydWN0IGZpZWxkcyAoYmVjYXVzZSBgcnhfc3RhdHNgIGlzIGluaXRpYWxpemVkIGFuZCBjaGVja2VkKS4gSXQgZG9lc24ndCBtb2RpZnkgY29uZGl0aW9uYWwgbG9naWMgYmFzZWQgb24gdW5pbml0aWFsaXplZCBkYXRhLiBUaGUgYHJ4X3N0YXRzYCBwb2ludGVyIGl0c2VsZiBpcyBpbml0aWFsaXplZC4gVGhpcyBpcyBhIHZlcnkgdGFyZ2V0ZWQgZml4LCBhbmQgdGhlcmUgYXJlIG5vIG5ldyByaXNrcyBmcm9tIHVuaW5pdGlhbGl6ZWQgZGF0YS5cblxuTGV0IG1lIGNvbXBhcmUgdGhlIGJlZm9yZSBhbmQgYWZ0ZXIsIHRvIGJlIGNlcnRhaW46IEJlZm9yZSwgYGNvbW1vbi1cdTAwM2Vwcml2YCB3YXMgYmVpbmcgY2FzdCB0byBgc3RydWN0IGF0aF9zb2Z0YyAqc2NgLCBhbmQgdGhlIGNvZGUgd291bGQgaW5jcmVtZW50IHRoZSBzdGF0aXN0aWNzIGRpcmVjdGx5LiBJbiBgYXRoOWtfaHRjYCwgdGhpcyBjYXVzZWQgYW4gaW52YWxpZCBtZW1vcnkgYWNjZXNzLiBOb3csIHdlJ3JlIHBhc3NpbmcgdGhlIGNvcnJlY3QgcG9pbnRlciwgYHJ4X3N0YXRzYCB3aGljaCBwb2ludHMgdG8gYHNjLVx1MDAzZWRlYnVnLnN0YXRzLnJ4c3RhdHNgIG9yIGBwcml2LVx1MDAzZWRlYnVnLnJ4X3N0YXRzYC4gVGhlIGNvcmUgZnVuY3Rpb25hbGl0eSAoaW5jcmVtZW50aW5nIGNvdW50ZXJzKSByZW1haW5zLCBidXQgdGhlIG1lbW9yeSBhY2Nlc3MgaXMgbm93IGRvbmUgd2l0aCBhIGNvcnJlY3QgcG9pbnRlci5cblxuTm93LCBsZXQncyBhZGRyZXNzIEtNU0FOIGRpcmVjdGx5LiBUaGUgYE5lZWRzS01TQU5gIHJ1bGUgc3RhdGVzIGl0J3MgKipmYWxzZSoqIGlmIHRoZSBwYXRjaCBwcmltYXJpbHkgZml4ZXMgaXNzdWVzIGxpa2Ugb3V0LW9mLWJvdW5kcyBhY2Nlc3MgKHdoaWNoIGl0IGRvZXMpLCBhbmQgaWYgYWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyBhcmUgaW5pdGlhbGl6ZWQuICBFdmVyeXRoaW5nIGhlcmUgKmlzKiBpbml0aWFsaXplZC4gV2UgYXJlbid0IHJlYWRpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZXJlJ3Mgbm8gaW5mby1sZWFrIHJpc2suIFNvLCB0aGUgcGF0Y2ggbWVldHMgdGhlIGNvbmRpdGlvbnMgZm9yIGBOZWVkc0tNU0FOPWZhbHNlYC4gU3RhbmRhcmQgc2FuaXRpemVycyBhbmQgS0FTQU4gd2lsbCBjYXRjaCB0aGUgcHJvYmxlbXMgYWRkcmVzc2VkIGJ5IHRoaXMgcGF0Y2guXG5cbk15IGNvbmNsdXNpb24gaXMgY2xlYXI6IFRoaXMgcGF0Y2ggaXMgYSBtZW1vcnkgc2FmZXR5IGltcHJvdmVtZW50LiBJdCBmaXhlcyBhIHR5cGUgY29uZnVzaW9uLCBwcmV2ZW50aW5nIG91dC1vZi1ib3VuZHMgcmVhZHMvd3JpdGVzIGFuZCBwb3RlbnRpYWwgY3Jhc2hlcy4gIEtNU0FOIGlzbid0IG5lY2Vzc2FyeSBoZXJlOyBLQVNBTiBhbmQgc3RhbmRhcmQgc2FuaXRpemVycyBoYW5kbGUgdGhlIHJpc2tzLiAgTGV0J3Mgc2V0IHRoZSByZXN1bHRzIGFuZCBtb3ZlIG9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjY5LCJPdXRwdXRUb2tlbnMiOjE3OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyNDEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNTo0OToxNC40Mjc2NDUzNTVaIiwiU2VxIjoyNCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTkxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgdHlwZSBjb25mdXNpb24gaXNzdWUgYmV0d2VlbiBhdGg5ayBhbmQgYXRoOWtfaHRjIGRyaXZlcnMgaW4gc2hhcmVkIHNwZWN0cmFsIHNjYW5uaW5nIGNvZGUgKGNvbW1vbi1zcGVjdHJhbC5jKSwgd2hlcmUgY29tbW9uLVxcdTAwM2Vwcml2IHdhcyBwcmV2aW91c2x5IGNhc3QgdW5jb25kaXRpb25hbGx5IHRvIHN0cnVjdCBhdGhfc29mdGMgKi4gVGhlIGZpeCBwYXNzZXMgdGhlIGRyaXZlci1zcGVjaWZpYyBhdGhfcnhfc3RhdHMgcG9pbnRlciBkdXJpbmcgZGVidWcgaW5pdGlhbGl6YXRpb24gYW5kIGluY3JlbWVudHMgc3RhdHMgdGhyb3VnaCBzcGVjX3ByaXYtXFx1MDAzZXJ4X3N0YXRzIHdpdGggYSBOVUxMIGNoZWNrLlxcblxcblRoaXMgY2hhbmdlIG9ubHkgYWZmZWN0cyBwb2ludGVyIGFzc2lnbm1lbnQgYW5kIHN0YXRpc3RpYyBjb3VudGVyIGluY3JlbWVudHMuIEl0IGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnksIGFsbG9jYXRlIHVuaW5pdGlhbGl6ZWQgYnVmZmVycywgb3IgcGVyZm9ybSBjb3BpZXMgdG8gdXNlciBzcGFjZSBvZiB1bmluaXRpYWxpemVkIGRhdGEuIEFueSBtZW1vcnkgc2FmZXR5IGNvbmNlcm5zIChzdWNoIGFzIGludmFsaWQgcG9pbnRlciBkZXJlZmVyZW5jZXMgb3IgdHlwZSBjb25mdXNpb24pIGFyZSBhZGVxdWF0ZWx5IGNvdmVyZWQgYnkgS0FTQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSB0eXBlIGNvbmZ1c2lvbiBpc3N1ZSBiZXR3ZWVuIGF0aDlrIGFuZCBhdGg5a19odGMgZHJpdmVycyBpbiBzaGFyZWQgc3BlY3RyYWwgc2Nhbm5pbmcgY29kZSAoY29tbW9uLXNwZWN0cmFsLmMpLCB3aGVyZSBjb21tb24tXFx1MDAzZXByaXYgd2FzIHByZXZpb3VzbHkgY2FzdCB1bmNvbmRpdGlvbmFsbHkgdG8gc3RydWN0IGF0aF9zb2Z0YyAqLiBUaGUgZml4IHBhc3NlcyB0aGUgZHJpdmVyLXNwZWNpZmljIGF0aF9yeF9zdGF0cyBwb2ludGVyIGR1cmluZyBkZWJ1ZyBpbml0aWFsaXphdGlvbiBhbmQgaW5jcmVtZW50cyBzdGF0cyB0aHJvdWdoIHNwZWNfcHJpdi1cXHUwMDNlcnhfc3RhdHMgd2l0aCBhIE5VTEwgY2hlY2suXFxuXFxuVGhpcyBjaGFuZ2Ugb25seSBhZmZlY3RzIHBvaW50ZXIgYXNzaWdubWVudCBhbmQgc3RhdGlzdGljIGNvdW50ZXIgaW5jcmVtZW50cy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSwgYWxsb2NhdGUgdW5pbml0aWFsaXplZCBidWZmZXJzLCBvciBwZXJmb3JtIGNvcGllcyB0byB1c2VyIHNwYWNlIG9mIHVuaW5pdGlhbGl6ZWQgZGF0YS4gQW55IG1lbW9yeSBzYWZldHkgY29uY2VybnMgKHN1Y2ggYXMgaW52YWxpZCBwb2ludGVyIGRlcmVmZXJlbmNlcyBvciB0eXBlIGNvbmZ1c2lvbikgYXJlIGFkZXF1YXRlbHkgY292ZXJlZCBieSBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowbgh8v[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-06 05:45:15 +0000 UTC FinishedAt: 2026-09-06 05:49:16 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "1d8e73163ef933624341075f576e2f36ef9133f7", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ATH9K_COMMON_SPECTRAL", "ATH9K_HTC_DEBUGFS", "ATH9K_HTC", "ATH9K_DEBUGFS", "ATH9K" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "1d8e73163ef933624341075f576e2f36ef9133f7", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ATH9K_COMMON_SPECTRAL", "ATH9K_HTC_DEBUGFS", "ATH9K_HTC", "ATH9K_DEBUGFS", "ATH9K" ], "series_id": "06b6d6eb-5b97-40bf-aaf9-0586ee374725" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ath_cmn_process_fft", "ath9k_cmn_spectral_init_debug", "ath9k_htc_init_debug", "ath9k_init_debug" ], "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+CgkJCTx0ZD4yMDI2LzA5LzA2IDA1OjQ3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FUSDlLX0NPTU1PTl9TUEVDVFJBTCYjMzQ7LAogICAgJiMzNDtBVEg5S19IVENfREVCVUdGUyYjMzQ7LAogICAgJiMzNDtBVEg5S19IVEMmIzM0OywKICAgICYjMzQ7QVRIOUtfREVCVUdGUyYjMzQ7LAogICAgJiMzNDtBVEg5SyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2F0aF9jbW5fcHJvY2Vzc19mZnQmIzM0OywKICAgICYjMzQ7YXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcmIzM0OywKICAgICYjMzQ7YXRoOWtfaHRjX2luaXRfZGVidWcmIzM0OywKICAgICYjMzQ7YXRoOWtfaW5pdF9kZWJ1ZyYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgdHlwZSBjb25mdXNpb24gaXNzdWUgYmV0d2VlbiBhdGg5ayBhbmQgYXRoOWtfaHRjIGRyaXZlcnMgaW4gc2hhcmVkIHNwZWN0cmFsIHNjYW5uaW5nIGNvZGUgKGNvbW1vbi1zcGVjdHJhbC5jKSwgd2hlcmUgY29tbW9uLVx1MDAzZXByaXYgd2FzIHByZXZpb3VzbHkgY2FzdCB1bmNvbmRpdGlvbmFsbHkgdG8gc3RydWN0IGF0aF9zb2Z0YyAqLiBUaGUgZml4IHBhc3NlcyB0aGUgZHJpdmVyLXNwZWNpZmljIGF0aF9yeF9zdGF0cyBwb2ludGVyIGR1cmluZyBkZWJ1ZyBpbml0aWFsaXphdGlvbiBhbmQgaW5jcmVtZW50cyBzdGF0cyB0aHJvdWdoIHNwZWNfcHJpdi1cdTAwM2VyeF9zdGF0cyB3aXRoIGEgTlVMTCBjaGVjay5cblxuVGhpcyBjaGFuZ2Ugb25seSBhZmZlY3RzIHBvaW50ZXIgYXNzaWdubWVudCBhbmQgc3RhdGlzdGljIGNvdW50ZXIgaW5jcmVtZW50cy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSwgYWxsb2NhdGUgdW5pbml0aWFsaXplZCBidWZmZXJzLCBvciBwZXJmb3JtIGNvcGllcyB0byB1c2VyIHNwYWNlIG9mIHVuaW5pdGlhbGl6ZWQgZGF0YS4gQW55IG1lbW9yeSBzYWZldHkgY29uY2VybnMgKHN1Y2ggYXMgaW52YWxpZCBwb2ludGVyIGRlcmVmZXJlbmNlcyBvciB0eXBlIGNvbmZ1c2lvbikgYXJlIGFkZXF1YXRlbHkgY292ZXJlZCBieSBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHNwZWN0cmFsIHNjYW4gZGVidWcgaW5pdGlhbGl6YXRpb24gYW5kIEZGVCBzYW1wbGUgcHJvY2Vzc2luZyBpbiB0aGUgYXRoOWsgYW5kIGF0aDlrX2h0YyBkcml2ZXJzLiBhdGg5a19odGMgaXMgYSBVU0ItYmFzZWQgd2lyZWxlc3MgZHJpdmVyIGFjY2Vzc2libGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBVU0IgZW11bGF0aW9uLiBUaGUgY2hhbmdlcyBhbHRlciBob3cgc3BlY3RyYWwgc2FtcGxlIHN0YXRpc3RpY3MgYXJlIHRyYWNrZWQgYW5kIGluaXRpYWxpemVkIGFjcm9zcyBkcml2ZXJzIHNoYXJpbmcgY29tbW9uIHNwZWN0cmFsIHNjYW4gY29kZSwgbWFraW5nIGl0IHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDU6NDc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAyOTM3ZTg1NGI4NjU1YjEyZTViMmQxY2I3NjRkMDBhYmZlNGY5ZWIwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBTZXAgNiAwNTo0NzozMSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmNcbmluZGV4IGNhMDFhMDdmNjYzMGMuLmQ4YmUyNGViY2QyNDcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuY1xuQEAgLTQ2NSw2ICYjNDM7NDY1LDIwIEBAIGF0aF9jbW5faXNfZmZ0X2J1Zl9mdWxsKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdilcbiBcdFx0cmV0dXJuIDA7XG4gfVxuIFxuJiM0MztzdGF0aWMgdm9pZCBhdGhfY21uX2NvdW50X2ZmdF9zYW1wbGUoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LFxuJiM0MztcdFx0XHRcdCAgICAgaW50IHJldClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBhdGhfcnhfc3RhdHMgKnJ4X3N0YXRzID0gc3BlY19wcml2LVx1MDAzZXJ4X3N0YXRzO1xuJiM0MztcbiYjNDM7XHRpZiAoIXJ4X3N0YXRzKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiYjNDM7XHRpZiAocmV0ID09IDApXG4mIzQzO1x0XHRyeF9zdGF0cy1cdTAwM2VyeF9zcGVjdHJhbF9zYW1wbGVfZ29vZCYjNDM7JiM0Mzs7XG4mIzQzO1x0ZWxzZVxuJiM0MztcdFx0cnhfc3RhdHMtXHUwMDNlcnhfc3BlY3RyYWxfc2FtcGxlX2VyciYjNDM7JiM0Mzs7XG4mIzQzO31cbiYjNDM7XG4gLyogcmV0dXJucyAxIGlmIHRoaXMgd2FzIGEgc3BlY3RyYWwgZnJhbWUsIGV2ZW4gaWYgbm90IGhhbmRsZWQuICovXG4gaW50IGF0aF9jbW5fcHJvY2Vzc19mZnQoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LCBzdHJ1Y3QgaWVlZTgwMjExX2hkciAqaGRyLFxuIFx0XHQgICAgc3RydWN0IGF0aF9yeF9zdGF0dXMgKnJzLCB1NjQgdHNmKVxuQEAgLTQ3Miw3ICYjNDM7NDg2LDYgQEAgaW50IGF0aF9jbW5fcHJvY2Vzc19mZnQoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LCBzdHJ1Y3QgaWVlZTgwMjExX2hcbiBcdHU4IHNhbXBsZV9idWZbU1BFQ1RSQUxfU0FNUExFX01BWF9MRU5dID0gezB9O1xuIFx0c3RydWN0IGF0aF9odyAqYWggPSBzcGVjX3ByaXYtXHUwMDNlYWg7XG4gXHRzdHJ1Y3QgYXRoX2NvbW1vbiAqY29tbW9uID0gYXRoOWtfaHdfY29tbW9uKHNwZWNfcHJpdi1cdTAwM2VhaCk7XG4tXHRzdHJ1Y3QgYXRoX3NvZnRjICpzYyA9IGNvbW1vbi1cdTAwM2Vwcml2O1xuIFx0dTggbnVtX2JpbnMsICp2ZGF0YSA9ICh1OCAqKWhkcjtcbiBcdHN0cnVjdCBhdGhfcmFkYXJfaW5mbyAqcmFkYXJfaW5mbztcbiBcdGludCBsZW4gPSBycy1cdTAwM2Vyc19kYXRhbGVuO1xuQEAgLTYyNCwxMCAmIzQzOzYzNyw3IEBAIGludCBhdGhfY21uX3Byb2Nlc3NfZmZ0KHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiwgc3RydWN0IGllZWU4MDIxMV9oXG4gXHRcdFx0XHRyZXQgPSBmZnRfaGFuZGxlcihycywgc3BlY19wcml2LCBzYW1wbGVfYnVmLFxuIFx0XHRcdFx0XHRcdCAgdHNmLCBmcmVxLCBjaGFuX3R5cGUpO1xuIFxuLVx0XHRcdFx0aWYgKHJldCA9PSAwKVxuLVx0XHRcdFx0XHRSWF9TVEFUX0lOQyhzYywgcnhfc3BlY3RyYWxfc2FtcGxlX2dvb2QpO1xuLVx0XHRcdFx0ZWxzZVxuLVx0XHRcdFx0XHRSWF9TVEFUX0lOQyhzYywgcnhfc3BlY3RyYWxfc2FtcGxlX2Vycik7XG4mIzQzO1x0XHRcdFx0YXRoX2Ntbl9jb3VudF9mZnRfc2FtcGxlKHNwZWNfcHJpdiwgcmV0KTtcbiBcbiBcdFx0XHRcdC8qIE1peCB0aGUgcmVjZWl2ZWQgYmlucyB0byB0aGUgL2Rldi9yYW5kb21cbiBcdFx0XHRcdCAqIHBvb2xcbkBAIC02NDIsMTAgJiM0Mzs2NTIsNyBAQCBpbnQgYXRoX2Ntbl9wcm9jZXNzX2ZmdChzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsIHN0cnVjdCBpZWVlODAyMTFfaFxuIFx0XHRcdFx0cmV0ID0gZmZ0X2hhbmRsZXIocnMsIHNwZWNfcHJpdiwgc2FtcGxlX3N0YXJ0LFxuIFx0XHRcdFx0XHRcdCAgdHNmLCBmcmVxLCBjaGFuX3R5cGUpO1xuIFxuLVx0XHRcdFx0aWYgKHJldCA9PSAwKVxuLVx0XHRcdFx0XHRSWF9TVEFUX0lOQyhzYywgcnhfc3BlY3RyYWxfc2FtcGxlX2dvb2QpO1xuLVx0XHRcdFx0ZWxzZVxuLVx0XHRcdFx0XHRSWF9TVEFUX0lOQyhzYywgcnhfc3BlY3RyYWxfc2FtcGxlX2Vycik7XG4mIzQzO1x0XHRcdFx0YXRoX2Ntbl9jb3VudF9mZnRfc2FtcGxlKHNwZWNfcHJpdiwgcmV0KTtcbiBcbiBcdFx0XHRcdC8qIE1peCB0aGUgcmVjZWl2ZWQgYmlucyB0byB0aGUgL2Rldi9yYW5kb21cbiBcdFx0XHRcdCAqIHBvb2xcbkBAIC0xMDUyLDggJiM0MzsxMDU5LDEwIEBAIHZvaWQgYXRoOWtfY21uX3NwZWN0cmFsX2RlaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYpXG4gRVhQT1JUX1NZTUJPTChhdGg5a19jbW5fc3BlY3RyYWxfZGVpbml0X2RlYnVnKTtcbiBcbiB2b2lkIGF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdixcbi1cdFx0XHRcdCAgIHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcGh5KVxuJiM0MztcdFx0XHRcdCAgIHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcGh5LFxuJiM0MztcdFx0XHRcdCAgIHN0cnVjdCBhdGhfcnhfc3RhdHMgKnJ4X3N0YXRzKVxuIHtcbiYjNDM7XHRzcGVjX3ByaXYtXHUwMDNlcnhfc3RhdHMgPSByeF9zdGF0cztcbiBcdHNwZWNfcHJpdi1cdTAwM2VyZnNfY2hhbl9zcGVjX3NjYW4gPSByZWxheV9vcGVuKFwmIzM0O3NwZWN0cmFsX3NjYW5cJiMzNDssXG4gXHRcdFx0XHRcdCAgICBkZWJ1Z2ZzX3BoeSxcbiBcdFx0XHRcdFx0ICAgIDEwMjQsIDI1NiwgXHUwMDI2cmZzX3NwZWNfc2Nhbl9jYixcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmhcbmluZGV4IDAxMWQ4YWI4Yjk3NDQuLjBlMmM3ZDZkMzQ4NzQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaFxuQEAgLTk0LDEyICYjNDM7OTQsMTYgQEAgc3RydWN0IGF0aF9odDIwXzQwX2ZmdF9wYWNrZXQge1xuIFx0c3RydWN0IGF0aF9yYWRhcl9pbmZvIHJhZGFyX2luZm87XG4gfSBfX3BhY2tlZDtcbiBcbiYjNDM7c3RydWN0IGF0aF9yeF9zdGF0cztcbiYjNDM7XG4gc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiB7XG4gXHRzdHJ1Y3QgYXRoX2h3ICphaDtcbiBcdC8qIHJlbGF5KGZzKSBjaGFubmVsIGZvciBzcGVjdHJhbCBzY2FuICovXG4gXHRzdHJ1Y3QgcmNoYW4gKnJmc19jaGFuX3NwZWNfc2NhbjtcbiBcdGVudW0gc3BlY3RyYWxfbW9kZSBzcGVjdHJhbF9tb2RlO1xuIFx0c3RydWN0IGF0aF9zcGVjX3NjYW4gc3BlY19jb25maWc7XG4mIzQzO1x0LyogZHJpdmVyJiMzOTtzIFJYIHN0YXRpc3RpY3MgdG8gYWNjb3VudCBzYW1wbGVzIGludG8sIGlmIGFueSAqL1xuJiM0MztcdHN0cnVjdCBhdGhfcnhfc3RhdHMgKnJ4X3N0YXRzO1xuIH07XG4gXG4gI2RlZmluZSBTUEVDVFJBTF9IVDIwXzQwX1RPVEFMX0RBVEFfTEVOXHQoc2l6ZW9mKHN0cnVjdCBhdGhfaHQyMF80MF9mZnRfcGFja2V0KSlcbkBAIC0xNjksNyAmIzQzOzE3Myw5IEBAIHN0YXRpYyBpbmxpbmUgdTggc3BlY3RyYWxfYml0bWFwX3dlaWdodCh1OCAqYmlucylcbiB9XG4gXG4gI2lmZGVmIENPTkZJR19BVEg5S19DT01NT05fU1BFQ1RSQUxcbi12b2lkIGF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiwgc3RydWN0IGRlbnRyeSAqZGVidWdmc19waHkpO1xuJiM0Mzt2b2lkIGF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdixcbiYjNDM7XHRcdFx0XHQgICBzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX3BoeSxcbiYjNDM7XHRcdFx0XHQgICBzdHJ1Y3QgYXRoX3J4X3N0YXRzICpyeF9zdGF0cyk7XG4gdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfZGVpbml0X2RlYnVnKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdik7XG4gXG4gdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfc2Nhbl90cmlnZ2VyKHN0cnVjdCBhdGhfY29tbW9uICpjb21tb24sXG5AQCAtMTgxLDcgJiM0MzsxODcsOCBAQCBpbnQgYXRoX2Ntbl9wcm9jZXNzX2ZmdChzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsIHN0cnVjdCBpZWVlODAyMTFfaFxuIFx0XHQgICAgc3RydWN0IGF0aF9yeF9zdGF0dXMgKnJzLCB1NjQgdHNmKTtcbiAjZWxzZVxuIHN0YXRpYyBpbmxpbmUgdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsXG4tXHRcdFx0XHRcdFx0IHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcGh5KVxuJiM0MztcdFx0XHRcdFx0XHQgc3RydWN0IGRlbnRyeSAqZGVidWdmc19waHksXG4mIzQzO1x0XHRcdFx0XHRcdCBzdHJ1Y3QgYXRoX3J4X3N0YXRzICpyeF9zdGF0cylcbiB7XG4gfVxuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZWJ1Zy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2RlYnVnLmNcbmluZGV4IDc0YTAxMzQwNzVjZjkuLjA0MmE0ZjU0MmE5NDMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGVidWcuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2RlYnVnLmNcbkBAIC0xMzg5LDcgJiM0MzsxMzg5LDggQEAgaW50IGF0aDlrX2luaXRfZGVidWcoc3RydWN0IGF0aF9odyAqYWgpXG4gXG4gXHRhdGg5a19kZnNfaW5pdF9kZWJ1ZyhzYyk7XG4gXHRhdGg5a190eDk5X2luaXRfZGVidWcoc2MpO1xuLVx0YXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoXHUwMDI2c2MtXHUwMDNlc3BlY19wcml2LCBzYy1cdTAwM2VkZWJ1Zy5kZWJ1Z2ZzX3BoeSk7XG4mIzQzO1x0YXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoXHUwMDI2c2MtXHUwMDNlc3BlY19wcml2LCBzYy1cdTAwM2VkZWJ1Zy5kZWJ1Z2ZzX3BoeSxcbiYjNDM7XHRcdFx0XHQgICAgICBcdTAwMjZzYy1cdTAwM2VkZWJ1Zy5zdGF0cy5yeHN0YXRzKTtcbiBcbiBcdGRlYnVnZnNfY3JlYXRlX2Rldm1fc2VxZmlsZShzYy1cdTAwM2VkZXYsIFwmIzM0O2RtYVwmIzM0Oywgc2MtXHUwMDNlZGVidWcuZGVidWdmc19waHksXG4gXHRcdFx0XHQgICAgcmVhZF9maWxlX2RtYSk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmNcbmluZGV4IDk0MzdkNjk4NzdjYzUuLjlkMzU0YjFkOTI5YzggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jXG5AQCAtNDg3LDcgJiM0Mzs0ODcsOCBAQCBpbnQgYXRoOWtfaHRjX2luaXRfZGVidWcoc3RydWN0IGF0aF9odyAqYWgpXG4gXHRwcml2LVx1MDAzZWRlYnVnLmRlYnVnZnNfcGh5ID0gZGVidWdmc19jcmVhdGVfZGlyKEtCVUlMRF9NT0ROQU1FLFxuIFx0XHRcdFx0XHQgICAgIHByaXYtXHUwMDNlaHctXHUwMDNld2lwaHktXHUwMDNlZGVidWdmc2Rpcik7XG4gXG4tXHRhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhcdTAwMjZwcml2LVx1MDAzZXNwZWNfcHJpdiwgcHJpdi1cdTAwM2VkZWJ1Zy5kZWJ1Z2ZzX3BoeSk7XG4mIzQzO1x0YXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoXHUwMDI2cHJpdi1cdTAwM2VzcGVjX3ByaXYsIHByaXYtXHUwMDNlZGVidWcuZGVidWdmc19waHksXG4mIzQzO1x0XHRcdFx0ICAgICAgXHUwMDI2cHJpdi1cdTAwM2VkZWJ1Zy5yeF9zdGF0cyk7XG4gXG4gXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFwmIzM0O3RndF9pbnRfc3RhdHNcJiMzNDssIDA0MDAsIHByaXYtXHUwMDNlZGVidWcuZGVidWdmc19waHksXG4gXHRcdFx0ICAgIHByaXYsIFx1MDAyNmZvcHNfdGd0X2ludF9zdGF0cyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDU6NDc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QVRIOUtfQ09NTU9OX1NQRUNUUkFMJiMzNDssCiAgICAmIzM0O0FUSDlLX0hUQ19ERUJVR0ZTJiMzNDssCiAgICAmIzM0O0FUSDlLX0hUQyYjMzQ7LAogICAgJiMzNDtBVEg5S19ERUJVR0ZTJiMzNDssCiAgICAmIzM0O0FUSDlLJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YXRoX2Ntbl9wcm9jZXNzX2ZmdCYjMzQ7LAogICAgJiMzNDthdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyYjMzQ7LAogICAgJiMzNDthdGg5a19odGNfaW5pdF9kZWJ1ZyYjMzQ7LAogICAgJiMzNDthdGg5a19pbml0X2RlYnVnJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBzcGVjdHJhbCBzY2FuIGRlYnVnIGluaXRpYWxpemF0aW9uIGFuZCBGRlQgc2FtcGxlIHByb2Nlc3NpbmcgaW4gdGhlIGF0aDlrIGFuZCBhdGg5a19odGMgZHJpdmVycy4gYXRoOWtfaHRjIGlzIGEgVVNCLWJhc2VkIHdpcmVsZXNzIGRyaXZlciBhY2Nlc3NpYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgVVNCIGVtdWxhdGlvbi4gVGhlIGNoYW5nZXMgYWx0ZXIgaG93IHNwZWN0cmFsIHNhbXBsZSBzdGF0aXN0aWNzIGFyZSB0cmFja2VkIGFuZCBpbml0aWFsaXplZCBhY3Jvc3MgZHJpdmVycyBzaGFyaW5nIGNvbW1vbiBzcGVjdHJhbCBzY2FuIGNvZGUsIG1ha2luZyBpdCB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMjkzN2U4NTRiODY1NWIxMmU1YjJkMWNiNzY0ZDAwYWJmZTRmOWViMApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTdW4gU2VwIDYgMDU6NDc6MzEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMKaW5kZXggY2EwMWEwN2Y2NjMwYy4uZDhiZTI0ZWJjZDI0NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYwpAQCAtNDY1LDYgJiM0Mzs0NjUsMjAgQEAgYXRoX2Ntbl9pc19mZnRfYnVmX2Z1bGwoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2KQogCQlyZXR1cm4gMDsKIH0KIAomIzQzO3N0YXRpYyB2b2lkIGF0aF9jbW5fY291bnRfZmZ0X3NhbXBsZShzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsCiYjNDM7CQkJCSAgICAgaW50IHJldCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBhdGhfcnhfc3RhdHMgKnJ4X3N0YXRzID0gc3BlY19wcml2LSZndDtyeF9zdGF0czsKJiM0MzsKJiM0MzsJaWYgKCFyeF9zdGF0cykKJiM0MzsJCXJldHVybjsKJiM0MzsKJiM0MzsJaWYgKHJldCA9PSAwKQomIzQzOwkJcnhfc3RhdHMtJmd0O3J4X3NwZWN0cmFsX3NhbXBsZV9nb29kJiM0MzsmIzQzOzsKJiM0MzsJZWxzZQomIzQzOwkJcnhfc3RhdHMtJmd0O3J4X3NwZWN0cmFsX3NhbXBsZV9lcnImIzQzOyYjNDM7OwomIzQzO30KJiM0MzsKIC8qIHJldHVybnMgMSBpZiB0aGlzIHdhcyBhIHNwZWN0cmFsIGZyYW1lLCBldmVuIGlmIG5vdCBoYW5kbGVkLiAqLwogaW50IGF0aF9jbW5fcHJvY2Vzc19mZnQoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LCBzdHJ1Y3QgaWVlZTgwMjExX2hkciAqaGRyLAogCQkgICAgc3RydWN0IGF0aF9yeF9zdGF0dXMgKnJzLCB1NjQgdHNmKQpAQCAtNDcyLDcgJiM0Mzs0ODYsNiBAQCBpbnQgYXRoX2Ntbl9wcm9jZXNzX2ZmdChzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsIHN0cnVjdCBpZWVlODAyMTFfaAogCXU4IHNhbXBsZV9idWZbU1BFQ1RSQUxfU0FNUExFX01BWF9MRU5dID0gezB9OwogCXN0cnVjdCBhdGhfaHcgKmFoID0gc3BlY19wcml2LSZndDthaDsKIAlzdHJ1Y3QgYXRoX2NvbW1vbiAqY29tbW9uID0gYXRoOWtfaHdfY29tbW9uKHNwZWNfcHJpdi0mZ3Q7YWgpOwotCXN0cnVjdCBhdGhfc29mdGMgKnNjID0gY29tbW9uLSZndDtwcml2OwogCXU4IG51bV9iaW5zLCAqdmRhdGEgPSAodTggKiloZHI7CiAJc3RydWN0IGF0aF9yYWRhcl9pbmZvICpyYWRhcl9pbmZvOwogCWludCBsZW4gPSBycy0mZ3Q7cnNfZGF0YWxlbjsKQEAgLTYyNCwxMCAmIzQzOzYzNyw3IEBAIGludCBhdGhfY21uX3Byb2Nlc3NfZmZ0KHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiwgc3RydWN0IGllZWU4MDIxMV9oCiAJCQkJcmV0ID0gZmZ0X2hhbmRsZXIocnMsIHNwZWNfcHJpdiwgc2FtcGxlX2J1ZiwKIAkJCQkJCSAgdHNmLCBmcmVxLCBjaGFuX3R5cGUpOwogCi0JCQkJaWYgKHJldCA9PSAwKQotCQkJCQlSWF9TVEFUX0lOQyhzYywgcnhfc3BlY3RyYWxfc2FtcGxlX2dvb2QpOwotCQkJCWVsc2UKLQkJCQkJUlhfU1RBVF9JTkMoc2MsIHJ4X3NwZWN0cmFsX3NhbXBsZV9lcnIpOwomIzQzOwkJCQlhdGhfY21uX2NvdW50X2ZmdF9zYW1wbGUoc3BlY19wcml2LCByZXQpOwogCiAJCQkJLyogTWl4IHRoZSByZWNlaXZlZCBiaW5zIHRvIHRoZSAvZGV2L3JhbmRvbQogCQkJCSAqIHBvb2wKQEAgLTY0MiwxMCAmIzQzOzY1Miw3IEBAIGludCBhdGhfY21uX3Byb2Nlc3NfZmZ0KHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiwgc3RydWN0IGllZWU4MDIxMV9oCiAJCQkJcmV0ID0gZmZ0X2hhbmRsZXIocnMsIHNwZWNfcHJpdiwgc2FtcGxlX3N0YXJ0LAogCQkJCQkJICB0c2YsIGZyZXEsIGNoYW5fdHlwZSk7CiAKLQkJCQlpZiAocmV0ID09IDApCi0JCQkJCVJYX1NUQVRfSU5DKHNjLCByeF9zcGVjdHJhbF9zYW1wbGVfZ29vZCk7Ci0JCQkJZWxzZQotCQkJCQlSWF9TVEFUX0lOQyhzYywgcnhfc3BlY3RyYWxfc2FtcGxlX2Vycik7CiYjNDM7CQkJCWF0aF9jbW5fY291bnRfZmZ0X3NhbXBsZShzcGVjX3ByaXYsIHJldCk7CiAKIAkJCQkvKiBNaXggdGhlIHJlY2VpdmVkIGJpbnMgdG8gdGhlIC9kZXYvcmFuZG9tCiAJCQkJICogcG9vbApAQCAtMTA1Miw4ICYjNDM7MTA1OSwxMCBAQCB2b2lkIGF0aDlrX2Ntbl9zcGVjdHJhbF9kZWluaXRfZGVidWcoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2KQogRVhQT1JUX1NZTUJPTChhdGg5a19jbW5fc3BlY3RyYWxfZGVpbml0X2RlYnVnKTsKIAogdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsCi0JCQkJICAgc3RydWN0IGRlbnRyeSAqZGVidWdmc19waHkpCiYjNDM7CQkJCSAgIHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcGh5LAomIzQzOwkJCQkgICBzdHJ1Y3QgYXRoX3J4X3N0YXRzICpyeF9zdGF0cykKIHsKJiM0MzsJc3BlY19wcml2LSZndDtyeF9zdGF0cyA9IHJ4X3N0YXRzOwogCXNwZWNfcHJpdi0mZ3Q7cmZzX2NoYW5fc3BlY19zY2FuID0gcmVsYXlfb3BlbigmIzM0O3NwZWN0cmFsX3NjYW4mIzM0OywKIAkJCQkJICAgIGRlYnVnZnNfcGh5LAogCQkJCQkgICAgMTAyNCwgMjU2LCAmYW1wO3Jmc19zcGVjX3NjYW5fY2IsCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmgKaW5kZXggMDExZDhhYjhiOTc0NC4uMGUyYzdkNmQzNDg3NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaApAQCAtOTQsMTIgJiM0Mzs5NCwxNiBAQCBzdHJ1Y3QgYXRoX2h0MjBfNDBfZmZ0X3BhY2tldCB7CiAJc3RydWN0IGF0aF9yYWRhcl9pbmZvIHJhZGFyX2luZm87CiB9IF9fcGFja2VkOwogCiYjNDM7c3RydWN0IGF0aF9yeF9zdGF0czsKJiM0MzsKIHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgewogCXN0cnVjdCBhdGhfaHcgKmFoOwogCS8qIHJlbGF5KGZzKSBjaGFubmVsIGZvciBzcGVjdHJhbCBzY2FuICovCiAJc3RydWN0IHJjaGFuICpyZnNfY2hhbl9zcGVjX3NjYW47CiAJZW51bSBzcGVjdHJhbF9tb2RlIHNwZWN0cmFsX21vZGU7CiAJc3RydWN0IGF0aF9zcGVjX3NjYW4gc3BlY19jb25maWc7CiYjNDM7CS8qIGRyaXZlciYjMzk7cyBSWCBzdGF0aXN0aWNzIHRvIGFjY291bnQgc2FtcGxlcyBpbnRvLCBpZiBhbnkgKi8KJiM0MzsJc3RydWN0IGF0aF9yeF9zdGF0cyAqcnhfc3RhdHM7CiB9OwogCiAjZGVmaW5lIFNQRUNUUkFMX0hUMjBfNDBfVE9UQUxfREFUQV9MRU4JKHNpemVvZihzdHJ1Y3QgYXRoX2h0MjBfNDBfZmZ0X3BhY2tldCkpCkBAIC0xNjksNyAmIzQzOzE3Myw5IEBAIHN0YXRpYyBpbmxpbmUgdTggc3BlY3RyYWxfYml0bWFwX3dlaWdodCh1OCAqYmlucykKIH0KIAogI2lmZGVmIENPTkZJR19BVEg5S19DT01NT05fU1BFQ1RSQUwKLXZvaWQgYXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LCBzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX3BoeSk7CiYjNDM7dm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsCiYjNDM7CQkJCSAgIHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcGh5LAomIzQzOwkJCQkgICBzdHJ1Y3QgYXRoX3J4X3N0YXRzICpyeF9zdGF0cyk7CiB2b2lkIGF0aDlrX2Ntbl9zcGVjdHJhbF9kZWluaXRfZGVidWcoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2KTsKIAogdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfc2Nhbl90cmlnZ2VyKHN0cnVjdCBhdGhfY29tbW9uICpjb21tb24sCkBAIC0xODEsNyAmIzQzOzE4Nyw4IEBAIGludCBhdGhfY21uX3Byb2Nlc3NfZmZ0KHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiwgc3RydWN0IGllZWU4MDIxMV9oCiAJCSAgICBzdHJ1Y3QgYXRoX3J4X3N0YXR1cyAqcnMsIHU2NCB0c2YpOwogI2Vsc2UKIHN0YXRpYyBpbmxpbmUgdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsCi0JCQkJCQkgc3RydWN0IGRlbnRyeSAqZGVidWdmc19waHkpCiYjNDM7CQkJCQkJIHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcGh5LAomIzQzOwkJCQkJCSBzdHJ1Y3QgYXRoX3J4X3N0YXRzICpyeF9zdGF0cykKIHsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2RlYnVnLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGVidWcuYwppbmRleCA3NGEwMTM0MDc1Y2Y5Li4wNDJhNGY1NDJhOTQzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGVidWcuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGVidWcuYwpAQCAtMTM4OSw3ICYjNDM7MTM4OSw4IEBAIGludCBhdGg5a19pbml0X2RlYnVnKHN0cnVjdCBhdGhfaHcgKmFoKQogCiAJYXRoOWtfZGZzX2luaXRfZGVidWcoc2MpOwogCWF0aDlrX3R4OTlfaW5pdF9kZWJ1ZyhzYyk7Ci0JYXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoJmFtcDtzYy0mZ3Q7c3BlY19wcml2LCBzYy0mZ3Q7ZGVidWcuZGVidWdmc19waHkpOwomIzQzOwlhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZygmYW1wO3NjLSZndDtzcGVjX3ByaXYsIHNjLSZndDtkZWJ1Zy5kZWJ1Z2ZzX3BoeSwKJiM0MzsJCQkJICAgICAgJmFtcDtzYy0mZ3Q7ZGVidWcuc3RhdHMucnhzdGF0cyk7CiAKIAlkZWJ1Z2ZzX2NyZWF0ZV9kZXZtX3NlcWZpbGUoc2MtJmd0O2RldiwgJiMzNDtkbWEmIzM0Oywgc2MtJmd0O2RlYnVnLmRlYnVnZnNfcGh5LAogCQkJCSAgICByZWFkX2ZpbGVfZG1hKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jCmluZGV4IDk0MzdkNjk4NzdjYzUuLjlkMzU0YjFkOTI5YzggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYwpAQCAtNDg3LDcgJiM0Mzs0ODcsOCBAQCBpbnQgYXRoOWtfaHRjX2luaXRfZGVidWcoc3RydWN0IGF0aF9odyAqYWgpCiAJcHJpdi0mZ3Q7ZGVidWcuZGVidWdmc19waHkgPSBkZWJ1Z2ZzX2NyZWF0ZV9kaXIoS0JVSUxEX01PRE5BTUUsCiAJCQkJCSAgICAgcHJpdi0mZ3Q7aHctJmd0O3dpcGh5LSZndDtkZWJ1Z2ZzZGlyKTsKIAotCWF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnKCZhbXA7cHJpdi0mZ3Q7c3BlY19wcml2LCBwcml2LSZndDtkZWJ1Zy5kZWJ1Z2ZzX3BoeSk7CiYjNDM7CWF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnKCZhbXA7cHJpdi0mZ3Q7c3BlY19wcml2LCBwcml2LSZndDtkZWJ1Zy5kZWJ1Z2ZzX3BoeSwKJiM0MzsJCQkJICAgICAgJmFtcDtwcml2LSZndDtkZWJ1Zy5yeF9zdGF0cyk7CiAKIAlkZWJ1Z2ZzX2NyZWF0ZV9maWxlKCYjMzQ7dGd0X2ludF9zdGF0cyYjMzQ7LCAwNDAwLCBwcml2LSZndDtkZWJ1Zy5kZWJ1Z2ZzX3BoeSwKIAkJCSAgICBwcml2LCAmYW1wO2ZvcHNfdGd0X2ludF9zdGF0cyk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA1OjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUwNTcKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiAyMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaCBmb3IgU3l6a2FsbGVyIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IGlmIHRoaXMgcGF0Y2ggaXMgZXZlbiAqd29ydGgqIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuIFRoZSBwYXRjaCBpcyB0b3VjaGluZyBmaWxlcyBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2AsIHNwZWNpZmljYWxseSBgY29tbW9uLXNwZWN0cmFsLmNgLCBgY29tbW9uLXNwZWN0cmFsLmhgLCBgZGVidWcuY2AsIGFuZCBgaHRjX2Rydl9kZWJ1Zy5jYC4gQWxyaWdodCwgdGhhdCYjMzk7cyB0aGUgc2NvcGUuIE5vdywgdGhlIGtleSBxdWVzdGlvbjogaXMgYGF0aDlrYCBhY2Nlc3NpYmxlIHZpYSB0aGUgc3l6a2FsbGVyIGZyYW1ld29yaz8KCkZpcnN0LCBJIG5lZWQgdG8ga25vdyB0aGUgZHJpdmVyIHR5cGUuIElzIGl0IFBDSSwgVVNCLCBvciBib3RoPyBBIHF1aWNrIGNoZWNrIHJldmVhbHMgYGF0aDlrYCBpdHNlbGYgaXMgUENJL1NvQywgYnV0IGBhdGg5a19odGNgIGlzIFVTQiEgQmluZ28hIFVTQiBkcml2ZXJzIGFyZSBhYnNvbHV0ZWx5IHdpdGhpbiBzeXprYWxsZXImIzM5O3Mgd2hlZWxob3VzZSwgcGFydGljdWxhcmx5IHZpYSByYXdfZ2FkZ2V0LCBkdW1teV9oY2QsIG9yIHZoY2kgZm9yIGVtdWxhdGlvbi4gVGhpcyBsb29rcyBwcm9taXNpbmcuIFRoZSBmYWN0IHRoYXQgdGhlIHBhdGNoIHRvdWNoZXMgYGh0Y19kcnZfZGVidWcuY2AgZnVydGhlciByZWluZm9yY2VzIHRoZSBjb25uZWN0aW9uIHRvIFVTQi4KCk5vdywgSSYjMzk7bGwgbmVlZCB0byBkaWcgZGVlcGVyLiBJJiMzOTtsbCBuZWVkIHRvIGV4YW1pbmUgYGh0Y19kcnZfZGVidWcuY2Agc3BlY2lmaWNhbGx5LCBhbmQgaG93IHRoZSBgYXRoOWtfaHRjYCBkcml2ZXIgZnVuY3Rpb25zLiBJIGNhbiB1c2UgbXkgcHJlZmVycmVkIHRvb2xzLCBsaWtlIGdyZXBwZXIgb3IgcmVhZGluZyB0aGUgZmlsZSwgdG8gZmluZCBvdXQgaG93IGl0IHdpbGwgd29yayB3aXRoIHN5emthbGxlci4gTGV0JiMzOTtzIHN0YXJ0IHRoZSBzZWFyY2ggYW5kIHVuZGVyc3RhbmQgaWYgdGhlIGBhdGg5a19odGNgIGNhbiBiZSBmdXp6ZWQhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDU6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jPTEwNTk9RVhQT1JUX1NZTUJPTChhdGg5a19jbW5fc3BlY3RyYWxfZGVpbml0X2RlYnVnKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xMDYwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjEwNjE6dm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTA2Mi1cdFx0XHRcdCAgIHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcGh5LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xMDkzLX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzoxMDk0OkVYUE9SVF9TWU1CT0woYXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaD0xNzA9c3RhdGljIGlubGluZSB1OCBzcGVjdHJhbF9iaXRtYXBfd2VpZ2h0KHU4ICpiaW5zKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaC0xNzUtI2lmZGVmIENPTkZJR19BVEg5S19DT01NT05fU1BFQ1RSQUxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaDoxNzY6dm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmgtMTc3LVx0XHRcdFx0ICAgc3RydWN0IGRlbnRyeSAqZGVidWdmc19waHksXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oPTE4Nj1pbnQgYXRoX2Ntbl9wcm9jZXNzX2ZmdChzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsIHN0cnVjdCBpZWVlODAyMTFfaGRyICpoZHIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oLTE4OC0jZWxzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oOjE4OTpzdGF0aWMgaW5saW5lIHZvaWQgYXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oLTE5MC1cdFx0XHRcdFx0XHQgc3RydWN0IGRlbnRyeSAqZGVidWdmc19waHksXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2RlYnVnLmM9MTM3Nz1pbnQgYXRoOWtfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX2h3ICphaClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGVidWcuYy0xMzkxLVx0YXRoOWtfdHg5OV9pbml0X2RlYnVnKHNjKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZWJ1Zy5jOjEzOTI6XHRhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhcdTAwMjZzYy1cdTAwM2VzcGVjX3ByaXYsIHNjLVx1MDAzZWRlYnVnLmRlYnVnZnNfcGh5LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2RlYnVnLmMtMTM5My1cdFx0XHRcdCAgICAgIFx1MDAyNnNjLVx1MDAzZWRlYnVnLnN0YXRzLnJ4c3RhdHMpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM9NDgyPWludCBhdGg5a19odGNfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX2h3ICphaClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jLTQ4OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM6NDkwOlx0YXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoXHUwMDI2cHJpdi1cdTAwM2VzcGVjX3ByaXYsIHByaXYtXHUwMDNlZGVidWcuZGVidWdmc19waHksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jLTQ5MS1cdFx0XHRcdCAgICAgIFx1MDAyNnByaXYtXHUwMDNlZGVidWcucnhfc3RhdHMpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA1OjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY1MzUKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA1MjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUGF0Y2g6IEEgRGVlcCBEaXZlIGludG8gRHJpdmVyIERhdGEgU3RydWN0dXJlcyBhbmQgUG90ZW50aWFsIE1lbW9yeSBDb3JydXB0aW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXNzZWN0IHRoaXMgcGF0Y2ggYW5kIGZpZ3VyZSBvdXQgdGhlIHJlYXNvbmluZyBiZWhpbmQgdGhlIGNoYW5nZXMuIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGhhcHBlbmluZyB3aXRoaW4gdGhlIGBhdGhfY21uX3Byb2Nlc3NfZmZ0YCBmdW5jdGlvbi4gVGFraW5nIGEgbG9vayBhdCB0aGUgY29kZSBiZWZvcmUgdGhlIHBhdGNoLCBJIHNlZSBhbiBhY2Nlc3MgcGF0dGVybiB0aGF0IGltbWVkaWF0ZWx5IHJhaXNlcyBhIGZsYWc6CgpgYGBjCnN0cnVjdCBhdGhfaHcgKmFoID0gc3BlY19wcml2LSZndDthaDsKc3RydWN0IGF0aF9jb21tb24gKmNvbW1vbiA9IGF0aDlrX2h3X2NvbW1vbihzcGVjX3ByaXYtJmd0O2FoKTsKc3RydWN0IGF0aF9zb2Z0YyAqc2MgPSBjb21tb24tJmd0O3ByaXY7Ci4uLgppZiAocmV0ID09IDApCiAgICBSWF9TVEFUX0lOQyhzYywgcnhfc3BlY3RyYWxfc2FtcGxlX2dvb2QpOwplbHNlCiAgICBSWF9TVEFUX0lOQyhzYywgcnhfc3BlY3RyYWxfc2FtcGxlX2Vycik7CmBgYAoKU3BlY2lmaWNhbGx5LCB0aGUgbGluZSB3aGVyZSBgY29tbW9uLSZndDtwcml2YCBpcyBjYXN0IHRvIGEgYHN0cnVjdCBhdGhfc29mdGMgKnNjYC4gSSBrbm93LCBmcm9tIG15IGV4cGVyaWVuY2Ugd2l0aCB0aGUgYGF0aDlrYCBkcml2ZXIsIHRoYXQgYGNvbW1vbi0mZ3Q7cHJpdmAgaXMgaW5kZWVkIGEgYHN0cnVjdCBhdGhfc29mdGMgKmAuIEJ1dCwgdGhpcyBpcyBhIHNoYXJlZCBmaWxlIGJldHdlZW4gYGF0aDlrYCBhbmQgYGF0aDlrX2h0Y2AuIFdoYXQgaWYgdGhpcyBhY2Nlc3MgaXMgdXNlZCBpbiBgYXRoOWtfaHRjYCBhcyB3ZWxsPyBJIG5lZWQgdG8gY2hlY2sgd2hhdCBgYXRoOWtfaHRjYCBhY3R1YWxseSBzZXRzIGBjb21tb24tJmd0O3ByaXZgIHRvLiBPciwgcmF0aGVyLCB3aGF0IHRoZSB0eXBlIG9mIHRoZSBzdHJ1Y3QgcG9pbnRlZCB0byBieSBgY29tbW9uLSZndDtwcml2YCBpcy4KCkJpbmdvISBJbiBgYXRoOWtfaHRjYCwgYGNvbW1vbi0mZ3Q7cHJpdmAgaXMgYWN0dWFsbHkgYSBgc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2YC4gU28sIHRoZSBgUlhfU1RBVF9JTkMoc2MsIC4uLilgIG1hY3JvIGlzIGxpa2VseSBpbmNyZW1lbnRpbmcgYSBtZW1iZXIgb2YgYSBzdHJ1Y3R1cmUgcG9pbnRlZCB0byBieSBgc2NgLgoKVGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGFyZSBpbW1lZGlhdGUgYW5kIHNpZ25pZmljYW50LiBJZiBgc2NgIGlzIHRyZWF0ZWQgYXMgYSBgc3RydWN0IGF0aF9zb2Z0YyAqYCB3aGVuIGl0JiMzOTtzIGFjdHVhbGx5IGEgYHN0cnVjdCBhdGg5a19odGNfcHJpdiAqYCwgdGhlbiB3ZSBoYXZlIGEgY2xhc3NpYyBjYXNlIG9mIG1lbW9yeSBjb3JydXB0aW9uIG9yIGludmFsaWQgc3RydWN0IG1lbWJlciBhY2Nlc3MhIFRoaXMgd291bGQgZGVwZW5kIG9uIHRoZSBzaXplIG9mIHRoZSAyIHN0cnVjdHMsIGFuZCB3aGljaCBmaWVsZHMgdGhlIGluY3JlbWVudCB0YXJnZXRzLgoKVGhpcyBwYXRjaCwgdGhlbiwgaXMgYSBidWdmaXguIEl0IGFkZHJlc3NlcyBhIHNoYXJlZCBjb2RlIHByb2JsZW0gd2hlcmUgYGNvbW1vbi1zcGVjdHJhbC5jYCB3YXMgYmVpbmcgdXNlZCBieSBib3RoIGBhdGg5a2AgYW5kIGBhdGg5a19odGNgLCBidXQgYGF0aF9jbW5fcHJvY2Vzc19mZnRgIGFzc3VtZWQgYSBgc3RydWN0IGF0aF9zb2Z0YyAqYCBmb3IgYGNvbW1vbi0mZ3Q7cHJpdmAuCgpOb3csIEkgc2VlIHRoZSBjb3JyZWN0ZWQgY29kZS4gYGF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnYCBub3cgcmVjZWl2ZXMgYSBwb2ludGVyIHRvIGBzdHJ1Y3QgYXRoX3J4X3N0YXRzICpyeF9zdGF0c2AsIHN0b3JlZCBpbiBgc3BlY19wcml2LSZndDtyeF9zdGF0c2AuIENvbnNlcXVlbnRseSwgYGF0aF9jbW5fY291bnRfZmZ0X3NhbXBsZWAgc2FmZWx5IHVwZGF0ZXMgYHJ4X3N0YXRzLSZndDtyeF9zcGVjdHJhbF9zYW1wbGVfZ29vZCYjNDM7JiM0MztgIG9yIGByeF9zdGF0cy0mZ3Q7cnhfc3BlY3RyYWxfc2FtcGxlX2VyciYjNDM7JiM0MztgLiBUaGlzIGlzIGEgbXVjaCBjbGVhbmVyIGFuZCBzYWZlciBhcHByb2FjaCwgZWxpbWluYXRpbmcgdGhlIHBvdGVudGlhbCBmb3IgdGhvc2UgbmFzdHkgbWVtb3J5LXJlbGF0ZWQgYnVncy4KCkkmIzM5O20gY3VyaW91czogaXMgYGF0aDlrX2h0Y2AgYSBVU0IgZHJpdmVyPyBBbmQgZG9lcyBzeXprYWxsZXIgZnV6eiB0aGUgYGF0aDlrX2h0Y2AgZHJpdmVyLCBvciB0aGUgYGF0aDlrYCBkcml2ZXI/IEkmIzM5O2xsIGNoZWNrIHRoZSBLY29uZmlnIGZpbGVzIGZvciBib3RoIGBhdGg5a2AgYW5kIGBhdGg5a19odGNgIGp1c3QgdG8gc2VlIGlmIHRoZXJlIGlzIGFueSBpbnRlcmVzdGluZyBpbmZvcm1hdGlvbiBpbiB0aGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA1OjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0FUSDlLX0hUQyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZz0xMz1jb25maWcgQVRIOUtfQlRDT0VYX1NVUFBPUlRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE0LVx0Ym9vbCBcJiMzNDtBdGhlcm9zIGJsdWV0b290aCBjb2V4aXN0ZW5jZSBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxNTpcdGRlcGVuZHMgb24gKEFUSDlLIHx8IEFUSDlLX0hUQylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE2LVx0ZGVmYXVsdCB5XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc9MTU2PWNvbmZpZyBBVEg5S19QQ0lfTk9fRUVQUk9NXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTcxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTcyOmNvbmZpZyBBVEg5S19IVENcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE3My1cdHRyaXN0YXRlIFwmIzM0O0F0aGVyb3MgSFRDIGJhc2VkIHdpcmVsZXNzIGNhcmRzIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xODYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxODc6Y29uZmlnIEFUSDlLX0hUQ19ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xODgtXHRib29sIFwmIzM0O0F0aGVyb3MgYXRoOWtfaHRjIGRlYnVnZ2luZ1wmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTg5Olx0ZGVwZW5kcyBvbiBBVEg5S19IVEMgXHUwMDI2XHUwMDI2IERFQlVHX0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xOTAtXHRzZWxlY3QgQVRIOUtfQ09NTU9OX0RFQlVHXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc9MjA2PWNvbmZpZyBBVEg5S19DT01NT05fU1BFQ1RSQUxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTIwNy1cdGJvb2wgXCYjMzQ7QXRoZXJvcyBhdGg5ay9hdGg5a19odGMgc3BlY3RyYWwgc2NhbiBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoyMDg6XHRkZXBlbmRzIG9uIEFUSDlLX0RFQlVHRlMgfHwgQVRIOUtfSFRDX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTIwOS1cdHNlbGVjdCBSRUxBWVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZT02OD1hdGg5a19odGMteSAmIzQzOz1cdGh0Y19oc3QubyBcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS03Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZTo3NzphdGg5a19odGMtJChDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlMpICYjNDM7PSBodGNfZHJ2X2RlYnVnLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS03OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZTo3OTpvYmotJChDT05GSUdfQVRIOUtfSFRDKSAmIzQzOz0gYXRoOWtfaHRjLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS04MC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAzX2VlcHJvbS5jPTMzOTA9c3RhdGljIGJvb2wgYXRoOWtfaHdfYXI5MzAwX2ZpbGxfZWVwcm9tKHN0cnVjdCBhdGhfaHcgKmFoKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDNfZWVwcm9tLmMtMzQwMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDNfZWVwcm9tLmM6MzQwMTojaWYgZGVmaW5lZChDT05GSUdfQVRIOUtfREVCVUdGUykgfHwgZGVmaW5lZChDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAzX2VlcHJvbS5jLTM0MDItc3RhdGljIHUzMiBhcjkwMDNfZHVtcF9tb2RhbF9lZXByb20oY2hhciAqYnVmLCB1MzIgbGVuLCB1MzIgc2l6ZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jPTIzMj1zdGF0aWMgaW5saW5lIHZvaWQgYXRoOWtfc2tiX3F1ZXVlX2NvbXBsZXRlKHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2Rldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTIzOC1cdHdoaWxlICgoc2tiID0gX19za2JfZGVxdWV1ZShxdWV1ZSkpICE9IE5VTEwpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6MjM5OiNpZmRlZiBDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMjQwLVx0XHRpbnQgbG4gPSBza2ItXHUwMDNlbGVuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM9Mzc2PXN0YXRpYyBpbnQgaGlmX3VzYl9zZW5kX3R4KHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2Rldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTM5OS1cdC8qIE1nbXQvQmVhY29uIGZyYW1lcyBkb24mIzM5O3QgdXNlIHRoZSBUWCBidWZmZXIgcG9vbCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo0MDA6XHRpZiAoKHR4X2N0bC1cdTAwM2V0eXBlID09IEFUSDlLX0hUQ19NR01UKSB8fFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo0MDE6XHQgICAgKHR4X2N0bC1cdTAwM2V0eXBlID09IEFUSDlLX0hUQ19CRUFDT04pKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQwMi1cdFx0cmV0ID0gaGlmX3VzYl9zZW5kX21nbXQoaGlmX2Rldiwgc2tiKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQwNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NDA3Olx0aWYgKCh0eF9jdGwtXHUwMDNldHlwZSA9PSBBVEg5S19IVENfTk9STUFMKSB8fFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo0MDg6XHQgICAgKHR4X2N0bC1cdTAwM2V0eXBlID09IEFUSDlLX0hUQ19BTVBEVSkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNDA5LVx0XHRfX3NrYl9xdWV1ZV90YWlsKFx1MDAyNmhpZl9kZXYtXHUwMDNldHgudHhfc2tiX3F1ZXVlLCBza2IpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM9NDg3PXN0YXRpYyBpbmxpbmUgYm9vbCBjaGVja19pbmRleChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1OCBpZHgpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00OTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjQ5MzpcdGlmICgodHhfY3RsLVx1MDAzZXR5cGUgPT0gQVRIOUtfSFRDX0FNUERVKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNDk0LVx0ICAgICh0eF9jdGwtXHUwMDNlc3RhX2lkeCA9PSBpZHgpKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD01Nj1lbnVtIGh0Y19vcG1vZGUge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC02NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo2NTojZGVmaW5lIEFUSDlLX0hUQ19BTVBEVSAgMVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjY2OiNkZWZpbmUgQVRIOUtfSFRDX05PUk1BTCAyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6Njc6I2RlZmluZSBBVEg5S19IVENfQkVBQ09OIDNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo2ODojZGVmaW5lIEFUSDlLX0hUQ19NR01UICAgNFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTY5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjcwOiNkZWZpbmUgQVRIOUtfSFRDX1RYX0NUU09OTFkgICAgICAweDFcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo3MTojZGVmaW5lIEFUSDlLX0hUQ19UWF9SVFNDVFMgICAgICAgMHgyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9NzM9c3RydWN0IHR4X2ZyYW1lX2hkciB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTc3LVx0dTggdGlkbm87XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6Nzg6XHRfX2JlMzIgZmxhZ3M7IC8qIEFUSDlLX0hUQ19UWF8qICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNzktXHR1OCBrZXlfdHlwZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9MTk0PXN0cnVjdCBhdGg5a19odGNfdGFyZ2V0X3J4X3N0YXRzIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMTk5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjIwMDojZGVmaW5lIEFUSDlLX0hUQ19NQVhfVklGIDJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyMDE6I2RlZmluZSBBVEg5S19IVENfTUFYX0JDTl9WSUYgMlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTIwMi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9MjQ5PXN0cnVjdCBhdGg5a192aWZfaXRlcl9kYXRhIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMjUzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI1NDojZGVmaW5lIEFUSDlLX0hUQ19NQVhfU1RBIDhcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyNTU6I2RlZmluZSBBVEg5S19IVENfTUFYX1RJRCA4XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMjU2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD0yNjQ9c3RydWN0IGF0aDlrX2h0Y19zdGEge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI2NS1cdHU4IGluZGV4O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI2NjpcdGVudW0gdGlkX2FnZ3Jfc3RhdGUgdGlkX3N0YXRlW0FUSDlLX0hUQ19NQVhfVElEXTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0yNjctXHRzdHJ1Y3Qgd29ya19zdHJ1Y3QgcmNfdXBkYXRlX3dvcms7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI3MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyNzE6I2RlZmluZSBBVEg5S19IVENfUlhCVUYgMjU2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMjcyLSNkZWZpbmUgSFRDX1JYX0ZSQU1FX0hFQURFUl9TSVpFIDQwXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTI4MT1zdHJ1Y3QgYXRoOWtfaHRjX3J4IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMjg2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI4NzojZGVmaW5lIEFUSDlLX0hUQ19UWF9DTEVBTlVQX0lOVEVSVkFMIDUwIC8qIG1zICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6Mjg4OiNkZWZpbmUgQVRIOUtfSFRDX1RYX1RJTUVPVVRfSU5URVJWQUwgMzAwMCAvKiBtcyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI4OTojZGVmaW5lIEFUSDlLX0hUQ19UWF9SRVNFUlZFIDEwXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MjkwOiNkZWZpbmUgQVRIOUtfSFRDX1RYX1RJTUVPVVRfQ09VTlQgNDBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyOTE6I2RlZmluZSBBVEg5S19IVENfVFhfVEhSRVNIT0xEIChNQVhfVFhfQlVGX05VTSAtIEFUSDlLX0hUQ19UWF9SRVNFUlZFKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI5Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyOTM6I2RlZmluZSBBVEg5S19IVENfT1BfVFhfUVVFVUVTX1NUT1AgQklUKDApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6Mjk0OiNkZWZpbmUgQVRIOUtfSFRDX09QX1RYX0RSQUlOICAgICAgIEJJVCgxKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI5NS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9MzExPXN0cnVjdCBhdGg5a19odGNfdHhfY3RsIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDozMTI6XHR1OCB0eXBlOyAvKiBBVEg5S19IVENfKiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTMxMy1cdHU4IGVwaWQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTMxOT1zdGF0aWMgaW5saW5lIHN0cnVjdCBhdGg5a19odGNfdHhfY3RsICpIVENfU0tCX0NCKHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTMyNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDozMjg6I2lmZGVmIENPTkZJR19BVEg5S19IVENfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTMyOS0jZGVmaW5lIF9fU1RBVF9TQUZFKGhpZl9kZXYsIGV4cHIpXHRkbyB7ICgoaGlmX2RldiktXHUwMDNlaHRjX2hhbmRsZS1cdTAwM2VkcnZfcHJpdiA/IChleHByKSA6IDApOyB9IHdoaWxlICgwKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD0zODg9c3RhdGljIGlubGluZSB2b2lkIGF0aDlrX2h0Y19lcnJfc3RhdF9yeChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTM5Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDozOTM6I2VuZGlmIC8qIENPTkZJR19BVEg5S19IVENfREVCVUdGUyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTM5NC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9NDA5PXN0cnVjdCBodGNfYmVhY29uIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNDE1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjQxNjpcdHN0cnVjdCBpZWVlODAyMTFfdmlmICpic2xvdFtBVEg5S19IVENfTUFYX0JDTl9WSUZdO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTQxNy1cdHUzMiBibWlzc2NudDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9NDU2PXN0cnVjdCBhdGg5a19odGNfcHJpdiB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTQ3OC1cdHU4IHN0YV9zbG90O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjQ3OTpcdHU4IHZpZl9zdGFfcG9zW0FUSDlLX0hUQ19NQVhfVklGXTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC00ODAtXHR1OCBudW1faWJzc192aWY7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTUzNS1cdHN0cnVjdCBkZWxheWVkX3dvcmsgZHV0eV9jeWNsZV93b3JrO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjUzNjojaWZkZWYgQ09ORklHX0FUSDlLX0hUQ19ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNTM3LVx0c3RydWN0IGF0aDlrX2RlYnVnIGRlYnVnO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD02NDE9aW50IGF0aDlrX2h0Y19yZXN1bWUoc3RydWN0IGh0Y190YXJnZXQgKmh0Y19oYW5kbGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTY0Mi0jZW5kaWZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo2NDM6I2lmZGVmIENPTkZJR19BVEg5S19IVENfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTY0NC1pbnQgYXRoOWtfaHRjX2luaXRfZGVidWcoc3RydWN0IGF0aF9odyAqYWgpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD02NDg9c3RhdGljIGlubGluZSB2b2lkIGF0aDlrX2h0Y19kZWluaXRfZGVidWcoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC02NTAtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjY1MTojZW5kaWYgLyogQ09ORklHX0FUSDlLX0hUQ19ERUJVR0ZTICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNjUyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jPTExMT1zdGF0aWMgdm9pZCBhdGg5a19odGNfYmVhY29uX2NvbmZpZ19hcChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMTE2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmM6MTE3Olx0YXRoOWtfY21uX2JlYWNvbl9jb25maWdfYXAoYWgsIGNvbmYsIEFUSDlLX0hUQ19NQVhfQkNOX1ZJRik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYy0xMTgtXHRhdGg5a19odGNfYmVhY29uX2luaXQocHJpdiwgY29uZiwgZmFsc2UpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jPTE5MT1zdGF0aWMgdm9pZCBhdGg5a19odGNfc2VuZF9iZWFjb24oc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTI0Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jOjI0MzpcdHR4X2N0bC1cdTAwM2V0eXBlID0gQVRIOUtfSFRDX0JFQUNPTjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTI0NC1cdHR4X2N0bC1cdTAwM2VlcGlkID0gcHJpdi1cdTAwM2ViZWFjb25fZXA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmM9MjY0PXN0YXRpYyBpbnQgYXRoOWtfaHRjX2Nob29zZV9ic2xvdChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMjc2LVx0dHNmdHUgPSBUU0ZfVE9fVFUodHNmIFx1MDAzZVx1MDAzZSAzMiwgdHNmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jOjI3NzpcdHNsb3QgPSAoKHRzZnR1ICUgaW50dmFsKSAqIEFUSDlLX0hUQ19NQVhfQkNOX1ZJRikgLyBpbnR2YWw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYzoyNzg6XHRzbG90ID0gQVRIOUtfSFRDX01BWF9CQ05fVklGIC0gc2xvdCAtIDE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYy0yNzktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmM9MzI1PXZvaWQgYXRoOWtfaHRjX2Fzc2lnbl9ic2xvdChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMzMyLVx0c3Bpbl9sb2NrX2JoKFx1MDAyNnByaXYtXHUwMDNlYmVhY29uX2xvY2spO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmM6MzMzOlx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVRIOUtfSFRDX01BWF9CQ05fVklGOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMzM0LVx0XHRpZiAocHJpdi1cdTAwM2ViZWFjb24uYnNsb3RbaV0gPT0gTlVMTCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jPTM2NT12b2lkIGF0aDlrX2h0Y19zZXRfdHNmYWRqdXN0KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYy0zODAtXHQgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jOjM4MTpcdHRzZmFkanVzdCA9IGN1cl9jb25mLVx1MDAzZWJlYWNvbl9pbnRlcnZhbCAqIGF2cC1cdTAwM2Vic2xvdCAvIEFUSDlLX0hUQ19NQVhfQkNOX1ZJRjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTM4Mi1cdGF2cC1cdTAwM2V0c2ZhZGp1c3QgPSBjcHVfdG9fbGU2NChUVV9UT19VU0VDKHRzZmFkanVzdCkpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM9Mzk4PXN0YXRpYyBjb25zdCBjaGFyIGF0aDlrX2h0Y19nc3RyaW5nc19zdGF0c1tdW0VUSF9HU1RSSU5HX0xFTl0gPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYy00MTgtfTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM6NDE5OiNkZWZpbmUgQVRIOUtfSFRDX1NTVEFUU19MRU4gQVJSQVlfU0laRShhdGg5a19odGNfZ3N0cmluZ3Nfc3RhdHMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jLTQyMC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jPTQzMD1pbnQgYXRoOWtfaHRjX2dldF9ldF9zc2V0X2NvdW50KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMtNDMzLVx0aWYgKHNzZXQgPT0gRVRIX1NTX1NUQVRTKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYzo0MzQ6XHRcdHJldHVybiBBVEg5S19IVENfU1NUQVRTX0xFTjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMtNDM1LVx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYz00NDg9dm9pZCBhdGg5a19odGNfZ2V0X2V0X3N0YXRzKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMtNDczLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYzo0NzQ6XHRXQVJOX09OKGkgIT0gQVRIOUtfSFRDX1NTVEFUU19MRU4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYy00NzUtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYz02MDY9c3RhdGljIGludCBhdGg5a19pbml0X3ByaXYoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy02NzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM6Njc0Olx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVRIOUtfSFRDX01BWF9CQ05fVklGOyBpJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy02NzUtXHRcdHByaXYtXHUwMDNlYmVhY29uLmJzbG90W2ldID0gTlVMTDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM9MTg0PXZvaWQgYXRoOWtfaHRjX3Jlc2V0KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMjMzLVx0bW9kX3RpbWVyKFx1MDAyNnByaXYtXHUwMDNldHguY2xlYW51cF90aW1lcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzoyMzQ6XHRcdCAgamlmZmllcyAmIzQzOyBtc2Vjc190b19qaWZmaWVzKEFUSDlLX0hUQ19UWF9DTEVBTlVQX0lOVEVSVkFMKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMjM1LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYz0yNDA9c3RhdGljIGludCBhdGg5a19odGNfc2V0X2NoYW5uZWwoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0zMTEtXHRtb2RfdGltZXIoXHUwMDI2cHJpdi1cdTAwM2V0eC5jbGVhbnVwX3RpbWVyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjMxMjpcdFx0ICBqaWZmaWVzICYjNDM7IG1zZWNzX3RvX2ppZmZpZXMoQVRIOUtfSFRDX1RYX0NMRUFOVVBfSU5URVJWQUwpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0zMTMtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jPTM1MD1zdGF0aWMgaW50IGF0aDlrX2h0Y19hZGRfbW9uaXRvcl9pbnRlcmZhY2Uoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0zNTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6MzU4Olx0aWYgKChwcml2LVx1MDAzZW52aWZzIFx1MDAzZT0gQVRIOUtfSFRDX01BWF9WSUYpIHx8XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6MzU5Olx0ICAgIChwcml2LVx1MDAzZW5zdGF0aW9ucyBcdTAwM2U9IEFUSDlLX0hUQ19NQVhfU1RBKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTM2MC1cdFx0cmV0ID0gLUVOT0JVRlM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTM2NC1cdHN0YV9pZHggPSBmZnoocHJpdi1cdTAwM2VzdGFfc2xvdCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6MzY1Olx0aWYgKChzdGFfaWR4IFx1MDAzYyAwKSB8fCAoc3RhX2lkeCBcdTAwM2UgQVRIOUtfSFRDX01BWF9TVEEpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMzY2LVx0XHRyZXQgPSAtRU5PQlVGUztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM9NDY2PXN0YXRpYyBpbnQgYXRoOWtfaHRjX2FkZF9zdGF0aW9uKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtNDc3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjQ3ODpcdGlmIChwcml2LVx1MDAzZW5zdGF0aW9ucyBcdTAwM2U9IEFUSDlLX0hUQ19NQVhfU1RBKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTQ3OS1cdFx0cmV0dXJuIC1FTk9CVUZTO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy00ODEtXHRzdGFfaWR4ID0gZmZ6KHByaXYtXHUwMDNlc3RhX3Nsb3QpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjQ4MjpcdGlmICgoc3RhX2lkeCBcdTAwM2MgMCkgfHwgKHN0YV9pZHggXHUwMDNlIEFUSDlLX0hUQ19NQVhfU1RBKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy00ODMtXHRcdHJldHVybiAtRU5PQlVGUztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM9NzAyPXN0YXRpYyBpbnQgYXRoOWtfaHRjX3R4X2FnZ3Jfb3BlcihzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTcxMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzo3MTQ6XHRpZiAodGlkIFx1MDAzZT0gQVRIOUtfSFRDX01BWF9USUQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtNzE1LVx0XHRyZXR1cm4gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM9OTA3PXN0YXRpYyBpbnQgYXRoOWtfaHRjX3N0YXJ0KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy05NjAtXHRzcGluX2xvY2tfYmgoXHUwMDI2cHJpdi1cdTAwM2V0eC50eF9sb2NrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzo5NjE6XHRwcml2LVx1MDAzZXR4LmZsYWdzIFx1MDAyNj0gfkFUSDlLX0hUQ19PUF9UWF9RVUVVRVNfU1RPUDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy05NjItXHRzcGluX3VubG9ja19iaChcdTAwMjZwcml2LVx1MDAzZXR4LnR4X2xvY2spO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy05NjYtXHRtb2RfdGltZXIoXHUwMDI2cHJpdi1cdTAwM2V0eC5jbGVhbnVwX3RpbWVyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjk2NzpcdFx0ICBqaWZmaWVzICYjNDM7IG1zZWNzX3RvX2ppZmZpZXMoQVRIOUtfSFRDX1RYX0NMRUFOVVBfSU5URVJWQUwpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy05NjgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jPTE2NTg9c3RhdGljIGludCBhdGg5a19odGNfYW1wZHVfYWN0aW9uKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0xNjg4LVx0Y2FzZSBJRUVFODAyMTFfQU1QRFVfVFhfT1BFUkFUSU9OQUw6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6MTY4OTpcdFx0aWYgKHRpZCBcdTAwM2U9IEFUSDlLX0hUQ19NQVhfVElEKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMTY5MC1cdFx0XHRyZXQgPSAtRUlOVkFMO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYz0xODc0PXN0cnVjdCBpZWVlODAyMTFfb3BzIGF0aDlrX2h0Y19vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTE5MDYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6MTkwNzojaWZkZWYgQ09ORklHX0FUSDlLX0hUQ19ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMTkwOC1cdC5nZXRfZXRfc3NldF9jb3VudCAgPSBhdGg5a19odGNfZ2V0X2V0X3NzZXRfY291bnQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTIzPXN0YXRpYyBjb25zdCBpbnQgc3VidHlwZV90eHFfdG9faHdxW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTI5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjMwOiNkZWZpbmUgQVRIOUtfSFRDX0lOSVRfVFhRKHN1YnR5cGUpIGRvIHtcdFx0XHRcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTMxLVx0XHRxaS50cWlfc3VidHlwZSA9IHN1YnR5cGVfdHhxX3RvX2h3cVtzdWJ0eXBlXTtcdFxcXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTU2PXZvaWQgYXRoOWtfaHRjX2NoZWNrX3N0b3BfcXVldWVzKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNTktXHRwcml2LVx1MDAzZXR4LnF1ZXVlZF9jbnQmIzQzOyYjNDM7O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjYwOlx0aWYgKChwcml2LVx1MDAzZXR4LnF1ZXVlZF9jbnQgXHUwMDNlPSBBVEg5S19IVENfVFhfVEhSRVNIT0xEKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo2MTpcdCAgICAhKHByaXYtXHUwMDNldHguZmxhZ3MgXHUwMDI2IEFUSDlLX0hUQ19PUF9UWF9RVUVVRVNfU1RPUCkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo2MjpcdFx0cHJpdi1cdTAwM2V0eC5mbGFncyB8PSBBVEg5S19IVENfT1BfVFhfUVVFVUVTX1NUT1A7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNjMtXHRcdGllZWU4MDIxMV9zdG9wX3F1ZXVlcyhwcml2LVx1MDAzZWh3KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9Njg9dm9pZCBhdGg5a19odGNfY2hlY2tfd2FrZV9xdWV1ZXMoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy03MC1cdHNwaW5fbG9ja19iaChcdTAwMjZwcml2LVx1MDAzZXR4LnR4X2xvY2spO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjcxOlx0aWYgKChwcml2LVx1MDAzZXR4LnF1ZXVlZF9jbnQgXHUwMDNjIEFUSDlLX0hUQ19UWF9USFJFU0hPTEQpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjcyOlx0ICAgIChwcml2LVx1MDAzZXR4LmZsYWdzIFx1MDAyNiBBVEg5S19IVENfT1BfVFhfUVVFVUVTX1NUT1ApKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NzM6XHRcdHByaXYtXHUwMDNldHguZmxhZ3MgXHUwMDI2PSB+QVRIOUtfSFRDX09QX1RYX1FVRVVFU19TVE9QO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTc0LVx0XHRpZWVlODAyMTFfd2FrZV9xdWV1ZXMocHJpdi1cdTAwM2Vodyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTIxND1zdGF0aWMgdm9pZCBhdGg5a19odGNfdHhfbWdtdChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTI0MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzoyNDE6XHR0eF9jdGwtXHUwMDNldHlwZSA9IEFUSDlLX0hUQ19NR01UO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTI0Mi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9MjYwPXN0YXRpYyB2b2lkIGF0aDlrX2h0Y190eF9kYXRhKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMjkyLVx0aWYgKHR4X2luZm8tXHUwMDNlZmxhZ3MgXHUwMDI2IElFRUU4MDIxMV9UWF9DVExfQU1QRFUpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzoyOTM6XHRcdHR4X2N0bC1cdTAwM2V0eXBlID0gQVRIOUtfSFRDX0FNUERVO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjI5NDpcdFx0dHhfaGRyLmRhdGFfdHlwZSA9IEFUSDlLX0hUQ19BTVBEVTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0yOTUtXHR9IGVsc2Uge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjI5NjpcdFx0dHhfY3RsLVx1MDAzZXR5cGUgPSBBVEg5S19IVENfTk9STUFMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjI5NzpcdFx0dHhfaGRyLmRhdGFfdHlwZSA9IEFUSDlLX0hUQ19OT1JNQUw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMjk4LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0zMTItXHRcdGlmIChza2ItXHUwMDNlbGVuIFx1MDAzZSBwcml2LVx1MDAzZWh3LVx1MDAzZXdpcGh5LVx1MDAzZXJ0c190aHJlc2hvbGQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6MzEzOlx0XHRcdGZsYWdzIHw9IEFUSDlLX0hUQ19UWF9SVFNDVFM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMzE0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTMxNS1cdC8qIENUUy10by1zZWxmICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6MzE2Olx0aWYgKCEoZmxhZ3MgXHUwMDI2IEFUSDlLX0hUQ19UWF9SVFNDVFMpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTMxNy1cdCAgICAodmlmIFx1MDAyNlx1MDAyNiB2aWYtXHUwMDNlYnNzX2NvbmYudXNlX2N0c19wcm90KSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzozMTg6XHRcdGZsYWdzIHw9IEFUSDlLX0hUQ19UWF9DVFNPTkxZO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTMxOS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9MzkyPXN0YXRpYyBpbmxpbmUgYm9vbCBfX2F0aDlrX2h0Y19jaGVja190eF9hZ2dyKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMzk3LVx0c3Bpbl9sb2NrX2JoKFx1MDAyNnByaXYtXHUwMDNldHgudHhfbG9jayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6Mzk4Olx0aWYgKCh0aWQgXHUwMDNjIEFUSDlLX0hUQ19NQVhfVElEKSBcdTAwMjZcdTAwMjYgKGlzdGEtXHUwMDNldGlkX3N0YXRlW3RpZF0gPT0gQUdHUl9TVE9QKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0zOTktXHRcdHJldCA9IHRydWU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTQ0NT1zdGF0aWMgdm9pZCBhdGg5a19odGNfdHhfcHJvY2VzcyhzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ3OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo0Nzk6XHRpZiAodHhzLVx1MDAzZXRzX2ZsYWdzIFx1MDAyNiBBVEg5S19IVENfVFhTVEFUX0FDSykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ4MC1cdFx0dHhfaW5mby1cdTAwM2VmbGFncyB8PSBJRUVFODAyMTFfVFhfU1RBVF9BQ0s7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ4NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo0ODU6XHRpZiAodHhzLVx1MDAzZXRzX2ZsYWdzIFx1MDAyNiBBVEg5S19IVENfVFhTVEFUX0ZJTFQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDg2LVx0XHR0eF9pbmZvLVx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9UWF9TVEFUX1RYX0ZJTFRFUkVEO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ4Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo0ODg6XHRpZiAodHhzLVx1MDAzZXRzX2ZsYWdzIFx1MDAyNiBBVEg5S19IVENfVFhTVEFUX1JUQ19DVFMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDg5LVx0XHRyYXRlLVx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9UWF9SQ19VU0VfUlRTX0NUUztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDkxLVx0cmF0ZS1cdTAwM2Vjb3VudCA9IDE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NDkyOlx0cmF0ZS1cdTAwM2VpZHggPSBNUyh0eHMtXHUwMDNldHNfcmF0ZSwgQVRIOUtfSFRDX1RYU1RBVF9SQVRFKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00OTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NDk0Olx0aWYgKHR4cy1cdTAwM2V0c19mbGFncyBcdTAwMjYgQVRIOUtfSFRDX1RYU1RBVF9NQ1MpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00OTUtXHRcdHJhdGUtXHUwMDNlZmxhZ3MgfD0gSUVFRTgwMjExX1RYX1JDX01DUztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00OTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NDk3Olx0XHRpZiAodHhzLVx1MDAzZXRzX2ZsYWdzIFx1MDAyNiBBVEg5S19IVENfVFhTVEFUX0NXNDApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDk4LVx0XHRcdHJhdGUtXHUwMDNlZmxhZ3MgfD0gSUVFRTgwMjExX1RYX1JDXzQwX01IWl9XSURUSDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo0OTk6XHRcdGlmICh0eHMtXHUwMDNldHNfZmxhZ3MgXHUwMDI2IEFUSDlLX0hUQ19UWFNUQVRfU0dJKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTUwMC1cdFx0XHRyYXRlLVx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9UWF9SQ19TSE9SVF9HSTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9NTM5PXZvaWQgYXRoOWtfaHRjX3R4X2RyYWluKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNTQzLVx0c3Bpbl9sb2NrX2JoKFx1MDAyNnByaXYtXHUwMDNldHgudHhfbG9jayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NTQ0Olx0cHJpdi1cdTAwM2V0eC5mbGFncyB8PSBBVEg5S19IVENfT1BfVFhfRFJBSU47XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNTQ1LVx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2cHJpdi1cdTAwM2V0eC50eF9sb2NrKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNTczLVx0c3Bpbl9sb2NrX2JoKFx1MDAyNnByaXYtXHUwMDNldHgudHhfbG9jayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NTc0Olx0cHJpdi1cdTAwM2V0eC5mbGFncyBcdTAwMjY9IH5BVEg5S19IVENfT1BfVFhfRFJBSU47XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNTc1LVx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2cHJpdi1cdTAwM2V0eC50eF9sb2NrKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9NTc4PXZvaWQgYXRoOWtfdHhfZmFpbGVkX3Rhc2tsZXQoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy01ODItXHRzcGluX2xvY2soXHUwMDI2cHJpdi1cdTAwM2V0eC50eF9sb2NrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo1ODM6XHRpZiAocHJpdi1cdTAwM2V0eC5mbGFncyBcdTAwMjYgQVRIOUtfSFRDX09QX1RYX0RSQUlOKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNTg0LVx0XHRzcGluX3VubG9jayhcdTAwMjZwcml2LVx1MDAzZXR4LnR4X2xvY2spO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz02MTg9c3RhdGljIHN0cnVjdCBza19idWZmKiBhdGg5a19odGNfdHhfZ2V0X3BhY2tldChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTYyNC1cdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NjI1Olx0dTggZXBpZCA9IE1TKHR4cy1cdTAwM2V0c19yYXRlLCBBVEg5S19IVENfVFhTVEFUX0VQSUQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTYyNi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9NzE2PXN0YXRpYyBpbmxpbmUgYm9vbCBjaGVja19wYWNrZXQoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy03MjQtXHRcdCAgICAgICB0eF9jdGwtXHUwMDNldGltZXN0YW1wICYjNDM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NzI1Olx0XHQgICAgICAgbXNlY3NfdG9famlmZmllcyhBVEg5S19IVENfVFhfVElNRU9VVF9JTlRFUlZBTCkpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNzI2LVx0XHRhdGhfZGJnKGNvbW1vbiwgWE1JVCwgXCYjMzQ7RHJvcHBpbmcgYSBwYWNrZXQgZHVlIHRvIFRYIHRpbWVvdXRcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz03NjE9dm9pZCBhdGg5a19odGNfdHhfY2xlYW51cF90aW1lcihzdHJ1Y3QgdGltZXJfbGlzdCAqdClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNzc2LVx0XHRcdFx0ZXZlbnQtXHUwMDNldHhzLmNvb2tpZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo3Nzc6XHRcdFx0XHRNUyhldmVudC1cdTAwM2V0eHMudHNfcmF0ZSwgQVRIOUtfSFRDX1RYU1RBVF9FUElEKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNzc4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy03ODQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6Nzg1Olx0XHRpZiAoJiM0MzsmIzQzO2V2ZW50LVx1MDAzZWNvdW50IFx1MDAzZT0gQVRIOUtfSFRDX1RYX1RJTUVPVVRfQ09VTlQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy03ODYtXHRcdFx0bGlzdF9kZWwoXHUwMDI2ZXZlbnQtXHUwMDNlbGlzdCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTgwNS1cdG1vZF90aW1lcihcdTAwMjZwcml2LVx1MDAzZXR4LmNsZWFudXBfdGltZXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6ODA2Olx0XHQgIGppZmZpZXMgJiM0MzsgbXNlY3NfdG9famlmZmllcyhBVEg5S19IVENfVFhfQ0xFQU5VUF9JTlRFUlZBTCkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTgwNy19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTgyNz1ib29sIGF0aDlrX2h0Y190eHFfc2V0dXAoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LCBpbnQgc3VidHlwZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtODM0LVx0bWVtc2V0KFx1MDAyNnFpLCAwLCBzaXplb2YocWkpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo4MzU6XHRBVEg5S19IVENfSU5JVF9UWFEoc3VidHlwZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtODM2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz04NTI9aW50IGF0aDlrX2h0Y19jYWJxX3NldHVwKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtODU2LVx0bWVtc2V0KFx1MDAyNnFpLCAwLCBzaXplb2YocWkpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo4NTc6XHRBVEg5S19IVENfSU5JVF9UWFEoMCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtODU4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz0xMTg3PWludCBhdGg5a19yeF9pbml0KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMTE5My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzoxMTk0Olx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVRIOUtfSFRDX1JYQlVGOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTExOTUtXHRcdHN0cnVjdCBhdGg5a19odGNfcnhidWYgKnJ4YnVmID1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmM9MTM4PXZvaWQgYXRoOWtfd21pX2V2ZW50X3Rhc2tsZXQoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYy0xNzgtXHRcdFx0c3Bpbl9sb2NrX2JoKFx1MDAyNnByaXYtXHUwMDNldHgudHhfbG9jayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmM6MTc5Olx0XHRcdGlmIChwcml2LVx1MDAzZXR4LmZsYWdzIFx1MDAyNiBBVEg5S19IVENfT1BfVFhfRFJBSU4pIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYy0xODAtXHRcdFx0XHRzcGluX3VubG9ja19iaChcdTAwMjZwcml2LVx1MDAzZXR4LnR4X2xvY2spO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaD0zOT1zdHJ1Y3Qgd21pX2V2ZW50X3N3YmEge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaC01MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo1MTojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfQUNLICAgICAgICBCSVQoMClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo1MjojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfRklMVCAgICAgICBCSVQoMSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo1MzojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfUlRDX0NUUyAgICBCSVQoMilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo1NDojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfTUNTICAgICAgICBCSVQoMylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo1NTojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfQ1c0MCAgICAgICBCSVQoNClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo1NjojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfU0dJICAgICAgICBCSVQoNSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaC01Ny1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmgtNjMtICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6NjQ6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX1JBVEUgICAgICAgMHgwZlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oOjY1OiNkZWZpbmUgQVRIOUtfSFRDX1RYU1RBVF9SQVRFX1MgICAgIDBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaC02Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo2NzojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfRVBJRCAgICAgICAweGYwXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6Njg6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX0VQSURfUyAgICAgNFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oLTY5LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA1OjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMjc3CgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqQW5hbHl6aW5nIGBhdGhfY21uX3Byb2Nlc3NfZmZ0YCBDYWxscyBpbiBhdGg5ayBhbmQgYXRoOWtfaHRjKioKCk9rYXksIHNvIEkgbmVlZCB0byBkaWcgaW50byB0aGUgdXNhZ2Ugb2YgYGF0aF9jbW5fcHJvY2Vzc19mZnRgLiBNeSBpbml0aWFsIGdvYWwgaXMgdG8gdW5kZXJzdGFuZCBob3cgaXQmIzM5O3MgaW1wbGVtZW50ZWQgYW5kLCBtb3JlIGltcG9ydGFudGx5LCAqd2hlcmUqIGl0JiMzOTtzIGJlaW5nIGNhbGxlZCB3aXRoaW4gdGhlIGBhdGg5a2AgYW5kIGBhdGg5a19odGNgIGRyaXZlcnMuIEkgc3VzcGVjdCB0aGVyZSB3aWxsIGJlIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIHR3bywgZ2l2ZW4gdGhlIGFyY2hpdGVjdHVyYWwgZGlzdGluY3Rpb25zIChQQ0kgdnMuIFVTQikuIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgaXQmIzM5O3MgYmVpbmcgdXNlZCBmb3IgY2hhbm5lbCBlc3RpbWF0aW9uLCBkYXRhIGRlbW9kdWxhdGlvbiwgb3IgcGVyaGFwcyBzb21lIG90aGVyIHNpZ25hbCBwcm9jZXNzaW5nIHN0YWdlLiBJIHdpbGwgbG9vayBmb3IgY2FsbHMgdG8gdGhpcyBmdW5jdGlvbiwga2VlcGluZyBpbiBtaW5kIHRoZSBoYXJkd2FyZSBkaWZmZXJlbmNlcy4gSSBhbnRpY2lwYXRlIHRoZXJlIHdpbGwgYmUgZGlmZmVyZW5jZXMgaW4gdGhlIGNhbGxpbmcgY29udGV4dCBhbmQgcGFyYW1ldGVycyB1c2VkIGluIGVhY2ggZHJpdmVyLiBBcm1lZCB3aXRoIHRoaXMga25vd2xlZGdlLCBJIGNhbiBzdGFydCBmb3JtaW5nIGEgbW9yZSBob2xpc3RpYyB1bmRlcnN0YW5kaW5nIG9mIHRoZSByb2xlIGBhdGhfY21uX3Byb2Nlc3NfZmZ0YCBwbGF5cyBpbiB0aGVzZSBkcml2ZXJzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA1OjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2F0aF9jbW5fcHJvY2Vzc19mZnQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jPTQ2OD1zdGF0aWMgdm9pZCBhdGhfY21uX2NvdW50X2ZmdF9zYW1wbGUoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy00ODItLyogcmV0dXJucyAxIGlmIHRoaXMgd2FzIGEgc3BlY3RyYWwgZnJhbWUsIGV2ZW4gaWYgbm90IGhhbmRsZWQuICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6NDgzOmludCBhdGhfY21uX3Byb2Nlc3NfZmZ0KHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiwgc3RydWN0IGllZWU4MDIxMV9oZHIgKmhkcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy00ODQtXHRcdCAgICBzdHJ1Y3QgYXRoX3J4X3N0YXR1cyAqcnMsIHU2NCB0c2YpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTY5MC19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6NjkxOkVYUE9SVF9TWU1CT0woYXRoX2Ntbl9wcm9jZXNzX2ZmdCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNjkyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaD0xODM9aW50IGF0aDlrX2Ntbl9zcGVjdHJhbF9zY2FuX2NvbmZpZyhzdHJ1Y3QgYXRoX2NvbW1vbiAqY29tbW9uLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaC0xODUtXHRcdFx0ICAgICAgIGVudW0gc3BlY3RyYWxfbW9kZSBzcGVjdHJhbF9tb2RlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaDoxODY6aW50IGF0aF9jbW5fcHJvY2Vzc19mZnQoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LCBzdHJ1Y3QgaWVlZTgwMjExX2hkciAqaGRyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oLTE4Ny1cdFx0ICAgIHN0cnVjdCBhdGhfcnhfc3RhdHVzICpycywgdTY0IHRzZik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oPTE5OT1zdGF0aWMgaW5saW5lIHZvaWQgYXRoOWtfY21uX3NwZWN0cmFsX3NjYW5fdHJpZ2dlcihzdHJ1Y3QgYXRoX2NvbW1vbiAqY29tbW9uLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaC0yMDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmg6MjA0OnN0YXRpYyBpbmxpbmUgaW50IGF0aF9jbW5fcHJvY2Vzc19mZnQoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oLTIwNS1cdFx0XHRcdCAgICAgIHN0cnVjdCBpZWVlODAyMTFfaGRyICpoZHIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTk3Mj1zdGF0aWMgYm9vbCBhdGg5a19yeF9wcmVwYXJlKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMTA0Ny1cdFx0LyogVE9ETzogTm90IHVzaW5nIERGUyBwcm9jZXNzaW5nIG5vdy4gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzoxMDQ4Olx0XHRpZiAoYXRoX2Ntbl9wcm9jZXNzX2ZmdChcdTAwMjZwcml2LVx1MDAzZXNwZWNfcHJpdiwgaGRyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTEwNDktXHRcdFx0XHQgICAgXHUwMDI2cnhfc3RhdHMsIHJ4X3N0YXR1cy1cdTAwM2VtYWN0aW1lKSkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9yZWN2LmM9ODA2PXN0YXRpYyBpbnQgYXRoOWtfcnhfc2tiX3ByZXByb2Nlc3Moc3RydWN0IGF0aF9zb2Z0YyAqc2MsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3JlY3YuYy04ODMtXHRcdH0gZWxzZSBpZiAoc2MtXHUwMDNlc3BlY19wcml2LnNwZWN0cmFsX21vZGUgIT0gU1BFQ1RSQUxfRElTQUJMRUQgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvcmVjdi5jOjg4NDpcdFx0XHQgICBhdGhfY21uX3Byb2Nlc3NfZmZ0KFx1MDAyNnNjLVx1MDAzZXNwZWNfcHJpdiwgaGRyLCByeF9zdGF0cyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9yZWN2LmMtODg1LVx0XHRcdFx0XHQgICAgICAgcnhfc3RhdHVzLVx1MDAzZW1hY3RpbWUpKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDU6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE1MTAKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiA0MDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBgYXRoOWtfaHRjYCBVU0IgV2lyZWxlc3MgRHJpdmVyKioKCk9rYXksIHNvIGBhdGg5a19odGNgIOKAkyB0aGF0JiMzOTtzIGEgVVNCIHdpcmVsZXNzIGRyaXZlciwgcmlnaHQ/IEludGVyZXN0aW5nLiBUaGlzIG1lYW5zIEkgY2FuIHByb2JhYmx5IHJlYWNoIGl0IGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVGhpbmsgUUVNVSB3aXRoIFVTQiBlbXVsYXRpb24sIG9yIGV2ZW4gcmF3X2dhZGdldCBzZXR1cHMuIEFuZCBvZiBjb3Vyc2UsIHRoZXJlJiMzOTtzIHN5emthbGxlciB3aXRoIGl0cyBVU0IgZnV6emluZyBjYXBhYmlsaXRpZXMsIGVzcGVjaWFsbHkgdGhlIGBzeXpfdXNiX2Nvbm5lY3RgIGNhbGwuIE5vdywgdGhlIGtleSBxdWVzdGlvbiBpczogaGFzIHN5emthbGxlciBhY3R1YWxseSAqZnV6emVkKiBgYXRoOWtfaHRjYD8gSSBuZWVkIHRvIGNoZWNrIGlmIHN5emthbGxlciBoYXMgZGVzY3JpcHRpb25zIGZvciBpdC4gT3IsIGV2ZW4gc2ltcGxlciwgaWYgVVNCIGRldmljZXMgYXJlIGtub3duIHRvIHByb2JlIGBhdGg5a19odGNgLgoKUmlnaHQsIGxldCYjMzk7cyBzZWUuIEluIHRoZSBMaW51eCBrZXJuZWwsIEkga25vdyB0aGF0IGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jYCBpcyB0aGUgbGlrZWx5IGxvY2F0aW9uIGJlY2F1c2UgaXQgcmVnaXN0ZXJzIGEgYHVzYl9kcml2ZXJgLiBUaW1lIHRvIGRpZyBpbnRvIGBoaWZfdXNiLmNgLiBJJiMzOTttIGxvb2tpbmcgZm9yIFVTQiBJRHMg4oCTIHNwZWNpZmljIFZJRC9QSURzLiBBaCwgdGhlcmUgdGhleSBhcmU6IEFSOTI3MSwgQVI3MDEwLCB0aGUgdXN1YWwgc3VzcGVjdHMgKFVTQl9ERVZJQ0UoMHgwY2YzLCAweDkyNzEpLCBhbmQgc28gb24pLiBUaGF0JiMzOTtzIHRoZSBob29rLgoKU28sIHdoZW4gYSBVU0IgZGV2aWNlIG1hdGNoaW5nIHRob3NlIFZJRC9QSURzIGdldHMgY29ubmVjdGVkIOKAkyBsaWtlIHRocm91Z2ggc3l6a2FsbGVyJiMzOTtzIGBzeXpfdXNiX2Nvbm5lY3RgIOKAkyB0aGUgZHJpdmVyICpzaG91bGQqIHByb2JlLiBUaGVuLCBpdCBzZXRzIHVwIGBkZWJ1Z2ZzYCBpZiBgQ09ORklHX0FUSDlLX0hUQ19ERUJVR0ZTYCBvciBgQ09ORklHX0FUSDlLX0NPTU1PTl9TUEVDVFJBTGAgYXJlIGVuYWJsZWQuIEFuZCBmcm9tIHRoZXJlLCBpdCYjMzk7cyBhbGwgYWJvdXQgcmVjZWl2aW5nIHBhY2tldHMgdmlhIFVTQiBVUkJzIChgYXRoOWtfaHRjX3J4X21zZ2AsIGBhdGg5a19yeF9wcmVwYXJlYCksIGFuZCBwcm9jZXNzaW5nIHRob3NlIHNwZWN0cmFsIHNjYW4gRkZUIGZyYW1lcyAoYGF0aF9jbW5fcHJvY2Vzc19mZnRgKS4KCkhvbGQgb24uLi4gSSBqdXN0IHJlbWVtYmVyZWQgc29tZXRoaW5nIGltcG9ydGFudC4gU3BlY3RyYWwgc2NhbiBjb25maWd1cmF0aW9uIG9yIHJlbGF5IGZpbGVzIHdpdGhpbiBgZGVidWdmc2AgY2FuIGFsc28gYmUgZGlyZWN0bHkgdHJpZ2dlcmVkIGZyb20gdXNlciBzcGFjZS4gSSBuZWVkIHRvIGtlZXAgdGhhdCBpbiBtaW5kLgoKT2theSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnRzIGFuZCBkZXBlbmRlbmNpZXMgbW9yZS4gVGltZSB0byBkaXZlIGludG8gdGhlIEtjb25maWcgZm9yIGBhdGg5a2A6IGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZ2AuIEkmIzM5O2xsIGZvY3VzIG9uIGBDT05GSUdfQVRIOUtfQ09NTU9OX1NQRUNUUkFMYCwgYENPTkZJR19BVEg5S2AsIGBDT05GSUdfQVRIOUtfSFRDYCwgYENPTkZJR19BVEg5S19ERUJVR0ZTYCwgYW5kIGBDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlNgIHRvIGdldCB0aGUgZnVsbCBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwNTo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTY1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDU1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxNjU6XHRcdCAgb2YgcmVhY2ggZm9yIHRoZSBhdGg5ayBjaGlwLlxuIDE2NjpcdFxuIDE2NzpcdFx0ICBUaGVzZSBkZXZpY2VzIGFyZSB1c3VhbGx5IHZhcmlvdXMgbmV0d29yayBhcHBsaWFuY2VzLCByb3V0ZXJzIG9yXG4gMTY4Olx0XHQgIGFjY2VzcyBQb2ludHMgYW5kIHN1Y2guXG4gMTY5Olx0XG4gMTcwOlx0XHQgIElmIHVuc3VyZSBzYXkgTi5cbiAxNzE6XHRcbiAxNzI6XHRjb25maWcgQVRIOUtfSFRDXG4gMTczOlx0XHR0cmlzdGF0ZSBcJiMzNDtBdGhlcm9zIEhUQyBiYXNlZCB3aXJlbGVzcyBjYXJkcyBzdXBwb3J0XCYjMzQ7XG4gMTc0Olx0XHRkZXBlbmRzIG9uIFVTQiBcdTAwMjZcdTAwMjYgTUFDODAyMTFcbiAxNzU6XHRcdHNlbGVjdCBNQUM4MDIxMV9MRURTIGlmIExFRFNfQ0xBU1M9eSB8fCBMRURTX0NMQVNTPU1BQzgwMjExXG4gMTc2Olx0XHRzZWxlY3QgQVRIOUtfSFdcbiAxNzc6XHRcdHNlbGVjdCBBVEg5S19DT01NT05cbiAxNzg6XHRcdGhlbHBcbiAxNzk6XHRcdCAgU3VwcG9ydCBmb3IgQXRoZXJvcyBIVEMgYmFzZWQgY2FyZHMuXG4gMTgwOlx0XHQgIENoaXBzZXRzIHN1cHBvcnRlZDogQVI5MjcxXG4gMTgxOlx0XG4gMTgyOlx0XHQgIEZvciBtb3JlIGluZm9ybWF0aW9uOlxuIDE4MzpcdFx0ICBodHRwczovL3dpcmVsZXNzLndpa2kua2VybmVsLm9yZy9lbi91c2Vycy9Ecml2ZXJzL2F0aDlrX2h0Y1xuIDE4NDpcdFxuIDE4NTpcdFx0ICBUaGUgYnVpbHQgbW9kdWxlIHdpbGwgYmUgYXRoOWtfaHRjLlxuIDE4NjpcdFxuIDE4NzpcdGNvbmZpZyBBVEg5S19IVENfREVCVUdGU1xuIDE4ODpcdFx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDlrX2h0YyBkZWJ1Z2dpbmdcJiMzNDtcbiAxODk6XHRcdGRlcGVuZHMgb24gQVRIOUtfSFRDIFx1MDAyNlx1MDAyNiBERUJVR19GU1xuIDE5MDpcdFx0c2VsZWN0IEFUSDlLX0NPTU1PTl9ERUJVR1xuIDE5MTpcdFx0aGVscFxuIDE5MjpcdFx0ICBTYXkgWSwgaWYgeW91IG5lZWQgYWNjZXNzIHRvIGF0aDlrX2h0YyYjMzk7cyBzdGF0aXN0aWNzLlxuIDE5MzpcdFx0ICBBcyB3ZWxsIGFzIGFjY2VzcyB0byB0aGUgRkZUL3NwZWN0cmFsIGRhdGEuXG4gMTk0Olx0XG4gMTk1Olx0Y29uZmlnIEFUSDlLX0hXUk5HXG4gMTk2Olx0XHRib29sIFwmIzM0O1JhbmRvbSBudW1iZXIgZ2VuZXJhdG9yIHN1cHBvcnRcJiMzNDtcbiAxOTc6XHRcdGRlcGVuZHMgb24gQVRIOUsgXHUwMDI2XHUwMDI2IChIV19SQU5ET00gPSB5IHx8IEhXX1JBTkRPTSA9IEFUSDlLKVxuIDE5ODpcdFx0ZGVmYXVsdCBuXG4gMTk5Olx0XHRoZWxwXG4gMjAwOlx0XHQgIFRoaXMgb3B0aW9uIGluY29ycG9yYXRlcyB0aGUgQURDIHJlZ2lzdGVyIG91dHB1dCBhcyBhIHNvdXJjZSBvZlxuIDIwMTpcdFx0ICByYW5kb21uZXNzIGludG8gTGludXggZW50cm9weSBwb29sICgvZGV2L3VyYW5kb20gYW5kIC9kZXYvcmFuZG9tKVxuIDIwMjpcdFxuIDIwMzpcdFx0ICBTYXkgWSwgZmVlZHMgdGhlIGVudHJvcHkgZGlyZWN0bHkgZnJvbSB0aGUgV2lGaSBkcml2ZXIgdG8gdGhlIGlucHV0XG4gMjA0Olx0XHQgIHBvb2wuXG4gMjA1Olx0XG4gMjA2Olx0Y29uZmlnIEFUSDlLX0NPTU1PTl9TUEVDVFJBTFxuIDIwNzpcdFx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDlrL2F0aDlrX2h0YyBzcGVjdHJhbCBzY2FuIHN1cHBvcnRcJiMzNDtcbiAyMDg6XHRcdGRlcGVuZHMgb24gQVRIOUtfREVCVUdGUyB8fCBBVEg5S19IVENfREVCVUdGU1xuIDIwOTpcdFx0c2VsZWN0IFJFTEFZXG4gMjEwOlx0XHRkZWZhdWx0IG5cbiAyMTE6XHRcdGhlbHBcbiAyMTI6XHRcdCAgU2F5IFkgdG8gZW5hYmxlIGFjY2VzcyB0byB0aGUgRkZUL3NwZWN0cmFsIGRhdGEgdmlhIGRlYnVnZnMuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA1OjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzMjQ3CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhlIHRob3VnaHQgcHJvY2VzcyB1bmZvbGRzOgoKKipDaGVja2luZyB0aGUgS2NvbmZpZyBmb3IgYEFUSDlLX0RFQlVHRlNgKioKCk9rYXksIHNvIHdlJiMzOTtyZSBkaXZpbmcgaW50byB0aGlzIGlzc3VlLi4uIExldCYjMzk7cyBub3QganVzdCBhc3N1bWUgd2hlcmUgdGhlIHByb2JsZW0gbGllcy4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gZG91YmxlLWNoZWNrIHNvbWV0aGluZyB0aGF0IG1pZ2h0IGJlIGVhc2lseSBvdmVybG9va2VkLiBSaWdodCBub3csIEkmIzM5O20gdGhpbmtpbmcsICYjMzQ7RGlkIHdlIG1ha2Ugc3VyZSB0aGF0IGRlYnVnZ2luZyBpcyBlbmFibGVkPyYjMzQ7IExldCYjMzk7cyBzZWUgaWYgdGhlIGBBVEg5S19ERUJVR0ZTYCBjb25maWd1cmF0aW9uIG9wdGlvbiBpcyBlbmFibGVkIGluIHRoZSBLY29uZmlnLiBBIGxvdCBvZiB0aW1lcywgZGVidWdnaW5nIGZlYXR1cmVzIGFyZSBjb25kaXRpb25hbGx5IGNvbXBpbGVkLCBhbmQgaXQmIzM5O3MgZWFzeSB0byBtaXNzIHRoYXQgc3BlY2lmaWMgY29uZmlnLiBJdCYjMzk7cyBhIHF1aWNrIHNhbml0eSBjaGVjaywgYnV0IGltcG9ydGFudCBiZWNhdXNlIGlmIHRoYXQmIzM5O3Mgbm90IGVuYWJsZWQsIHdlJiMzOTtyZSBub3QgZ29pbmcgdG8gc2VlIGFueSByZWxldmFudCBkZWJ1ZyBpbmZvcm1hdGlvbiBmcm9tIHRoYXQgbW9kdWxlLiBJdCBtaWdodCBzZWVtIGJhc2ljLCBidXQgaXQmIzM5O3MgZXNzZW50aWFsIHRvIG5vdCBza2lwIHRoaXMgc3RlcC4gVGhpcyBjaGVjayBtYWtlcyBzZW5zZSBmcm9tIHRoZSBwZXJzcGVjdGl2ZSB0aGF0IGlmIHRoZSBmZWF0dXJlIGlzIG5vdCBjb25maWd1cmVkLCBpdCYjMzk7cyBhIGhhcmQgYmFycmllciB0byBzZWVpbmcgdGhlIGluZm9ybWF0aW9uIG5lZWRlZC4gSSYjMzk7bGwgc2VhcmNoIHRoYXQgS2NvbmZpZyBub3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA1OjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE0MDpcdFx0ICBhIHBsYXRmb3JtIHRoYXQgY2FuIHRvZ2dsZSB0aGUgUkYtS2lsbCBHUElPLlxuIDE0MTpcdFxuIDE0MjpcdGNvbmZpZyBBVEg5S19DSEFOTkVMX0NPTlRFWFRcbiAxNDM6XHRcdGJvb2wgXCYjMzQ7Q2hhbm5lbCBDb250ZXh0IHN1cHBvcnRcJiMzNDtcbiAxNDQ6XHRcdGRlcGVuZHMgb24gQVRIOUtcbiAxNDU6XHRcdGRlZmF1bHQgblxuIDE0NjpcdFx0aGVscFxuIDE0NzpcdFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIGNoYW5uZWwgY29udGV4dCBzdXBwb3J0IGluIGF0aDlrLCB3aGljaCBpcyBuZWVkZWRcbiAxNDg6XHRcdCAgZm9yIG11bHRpLWNoYW5uZWwgY29uY3VycmVuY3kuIEVuYWJsZSB0aGlzIGlmIFAyUCBQb3dlclNhdmUgc3VwcG9ydFxuIDE0OTpcdFx0ICBpcyByZXF1aXJlZC5cbiAxNTA6XHRcbiAxNTE6XHRjb25maWcgQVRIOUtfUENPRU1cbiAxNTI6XHRcdGJvb2wgXCYjMzQ7QXRoZXJvcyBhdGg5ayBzdXBwb3J0IGZvciBQQyBPRU0gY2FyZHNcJiMzNDsgaWYgRVhQRVJUXG4gMTUzOlx0XHRkZXBlbmRzIG9uIEFUSDlLXG4gMTU0Olx0XHRkZWZhdWx0IHlcbiAxNTU6XHRcbiAxNTY6XHRjb25maWcgQVRIOUtfUENJX05PX0VFUFJPTVxuIDE1NzpcdFx0dHJpc3RhdGUgXCYjMzQ7QXRoZXJvcyBhdGg5ayBwY2kgbG9hZGVyIGZvciBFRVBST00tbGVzcyBjaGlwc1wmIzM0O1xuIDE1ODpcdFx0ZGVwZW5kcyBvbiBBVEg5S19QQ0lcbiAxNTk6XHRcdGRlZmF1bHQgblxuIDE2MDpcdFx0aGVscFxuIDE2MTpcdFx0ICBUaGlzIHNlcGFyYXRlIGRyaXZlciBwcm92aWRlcyBhIGxvYWRlciBpbiBvcmRlciB0byBzdXBwb3J0IHRoZVxuIDE2MjpcdFx0ICBBUjUwMFggdG8gQVI5MlhYLWdlbmVyYXRpb24gb2YgYXRoOWsgUENJKGUpIFdpRmkgY2hpcHMsIHdoaWNoIGhhdmVcbiAxNjM6XHRcdCAgdGhlaXIgaW5pdGlhbGl6YXRpb24gZGF0YSAod2hpY2ggY29udGFpbnMgdGhlIHJlYWwgUENJIERldmljZSBJRFxuIDE2NDpcdFx0ICB0aGF0IGF0aDlrIHdpbGwgbmVlZCkgc3RvcmVkIHRvZ2V0aGVyIHdpdGggdGhlIGNhbGlicmF0aW9uIGRhdGEgb3V0XG4gMTY1Olx0XHQgIG9mIHJlYWNoIGZvciB0aGUgYXRoOWsgY2hpcC5cbiAxNjY6XHRcbiAxNjc6XHRcdCAgVGhlc2UgZGV2aWNlcyBhcmUgdXN1YWxseSB2YXJpb3VzIG5ldHdvcmsgYXBwbGlhbmNlcywgcm91dGVycyBvclxuIDE2ODpcdFx0ICBhY2Nlc3MgUG9pbnRzIGFuZCBzdWNoLlxuIDE2OTpcdFxuIDE3MDpcdFx0ICBJZiB1bnN1cmUgc2F5IE4uXG4gMTcxOlx0XG4gMTcyOlx0Y29uZmlnIEFUSDlLX0hUQ1xuIDE3MzpcdFx0dHJpc3RhdGUgXCYjMzQ7QXRoZXJvcyBIVEMgYmFzZWQgd2lyZWxlc3MgY2FyZHMgc3VwcG9ydFwmIzM0O1xuIDE3NDpcdFx0ZGVwZW5kcyBvbiBVU0IgXHUwMDI2XHUwMDI2IE1BQzgwMjExXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA1OjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0MDQ2CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipIdW50aW5nIERvd24gQVRIOUtfREVCVUdGUyoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdHJhY2sgZG93biB0aGUgYEFUSDlLX0RFQlVHRlNgIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBNeSBpbW1lZGlhdGUgc3RyYXRlZ3kgaXMgdG8ganVtcCBpbnRvIHRoZSBgS2NvbmZpZ2AgZmlsZXMg4oCTIHRoYXQmIzM5O3MgdGhlIGNhbm9uaWNhbCBwbGFjZSB0byBmaW5kIHRoZXNlIHNldHRpbmdzIGFuZCB0aGVpciBkZXBlbmRlbmNpZXMuIEkmIzM5O2xsIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0aGUgYGF0aDlrYCBkcml2ZXIgaXMgY29uZmlndXJlZCwgYW5kIGZyb20gdGhlcmUgbmF2aWdhdGUgdGhlIGRlcGVuZGVuY3kgY2hhaW4gdG8gbG9jYXRlIHRoZSByZWxldmFudCBvcHRpb24uIEhvcGVmdWxseSwgaXQmIzM5O3Mgbm90IGJ1cmllZCB0b28gZGVlcCB3aXRoaW4gYW4gb2JzY3VyZSBzdWItbWVudS4gVGltZSB0byBnZXQgdG8gd29yay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDU6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEFUSDlLX0RFQlVHRlMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc9NDg9Y29uZmlnIEFUSDlLX0FIQlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTU3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6NTg6Y29uZmlnIEFUSDlLX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTU5LVx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDlrIGRlYnVnZ2luZ1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwNTo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDMzOQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDMyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgaG93IEkmIzM5O2QgYXBwcm9hY2ggdGhhdDoKCioqSW52ZXN0aWdhdGluZyB0aGUgQnVpbGQgUHJvY2VzcyBmb3IgYGNvbW1vbi1zcGVjdHJhbC5vYCBpbiB0aGUgYXRoOWsgV2lyZWxlc3MgRHJpdmVyKioKClJpZ2h0LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCBleGFjdGx5IGhvdyBgY29tbW9uLXNwZWN0cmFsLm9gIGdldHMgY29tcGlsZWQgd2l0aGluIHRoZSBgYXRoOWtgIHdpcmVsZXNzIGRyaXZlci4gVGhlIG1vc3QgbG9naWNhbCBwbGFjZSB0byBzdGFydCBpcyB0aGUgYE1ha2VmaWxlYCB3aXRoaW4gdGhlIHJlbGV2YW50IGRpcmVjdG9yeS4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGdvaW5nIHRvIGxvb2sgYXQgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZWAuIFRoYXQgZmlsZSBpcyB0aGUgY2VudHJhbCBvcmNoZXN0cmF0b3IgZm9yIGhvdyBhbGwgdGhlIGNvbXBvbmVudHMgd2l0aGluIHRoYXQgc3BlY2lmaWMgbW9kdWxlIGFyZSBidWlsdC4gSXQgc2hvdWxkIGNvbnRhaW4gdGhlIHJ1bGVzIG9yIGluc3RydWN0aW9ucyBkZXRhaWxpbmcgdGhlIGNvbXBpbGF0aW9uIHByb2Nlc3MgZm9yIGFueSBvYmplY3QgZmlsZXMgd2l0aGluIHRoYXQgZGlyZWN0b3J5LiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIGVpdGhlciBhIGRpcmVjdCBydWxlIGZvciBgY29tbW9uLXNwZWN0cmFsLm9gIG9yLCBtb3JlIGxpa2VseSwgYSBzZXQgb2YgcnVsZXMgYW5kIGRlcGVuZGVuY2llcyB0aGF0IHdpbGwgdWx0aW1hdGVseSBsZWFkIHRvIGl0cyBjcmVhdGlvbi4gVGltZSB0byBjcmFjayBvcGVuIHRoYXQgTWFrZWZpbGUgYW5kIHNlZSB3aGF0JiMzOTtzIHdoYXQuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBjb21wbGV0ZSB2aWV3IG9mIGFsbCBkZXBlbmRlbmNpZXMgYW5kIGxpbmtpbmcgc3RyYXRlZ2llcyB0byBmb3JtIHRoZSBjb21waWxlZCBtb2R1bGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA1OjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbW1vbi1zcGVjdHJhbCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU9NjU9YXRoOWtfY29tbW9uLSQoQ09ORklHX0FUSDlLX0NPTU1PTl9ERUJVRykgJiM0Mzs9IGNvbW1vbi1kZWJ1Zy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6NjY6YXRoOWtfY29tbW9uLSQoQ09ORklHX0FUSDlLX0NPTU1PTl9TUEVDVFJBTCkgJiM0Mzs9IGNvbW1vbi1zcGVjdHJhbC5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtNjctXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi5oLTI2LSNpbmNsdWRlIFwmIzM0O2NvbW1vbi1kZWJ1Zy5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLmg6Mjc6I2luY2x1ZGUgXCYjMzQ7Y29tbW9uLXNwZWN0cmFsLmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24uaC0yOC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDU6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQ4MTYKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAyNDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgYXRoOWtfaHRjIERyaXZlciBmb3IgRnV6emluZyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgYGF0aDlrX2NvbW1vbmAgZ2V0cyBidWlsdCB3aGVuIGBBVEg5S19DT01NT05gIGlzIGVuYWJsZWQsIHdoaWNoIGlzIHRpZWQgdG8gZWl0aGVyIGBBVEg5S2Agb3IgYEFUSDlLX0hUQ2AuIE1ha2VzIHNlbnNlLiBJZiBgQVRIOUtfQ09NTU9OX1NQRUNUUkFMYCBpcyB0b2dnbGVkIG9uLCB0aGVuIGBjb21tb24tc3BlY3RyYWwub2AgZ2V0cyBpbmNsdWRlZCB3aXRoaW4gYGF0aDlrX2NvbW1vbmAuIEdvb2QsIHRoYXQmIzM5O3MgZXhwZWN0ZWQuCgpOb3csIGBhdGg5a19odGNgIGl0c2VsZiBpcyBhIFVTQiBkcml2ZXIsIHdoaWNoIG1lYW5zIGl0IGhpbmdlcyBvbiBgVVNCYCBhbmQgYE1BQzgwMjExYCwgb2J2aW91c2x5LiBUaGUgcmVhbCBxdWVzdGlvbiBpcywgY2FuIHdlIGFjdHVhbGx5IHJlYWNoIGBhdGg5a19odGNgIGVmZmVjdGl2ZWx5IGluIHN5emthbGxlciBmdXp6aW5nPyBJdCYjMzk7cyB0aGUgc3RhbmRhcmQgcXVlc3Rpb24gZm9yIHRoaXMgc29ydCBvZiBhbmFseXNpczogaG93IGFjY2Vzc2libGUgaXMgaXQ/CgpMZXQgbWUgcmVmZXIgYmFjayB0byB0aGUgU2VjdGlvbiAxLCAyLCAzIGNsYXNzaWZpY2F0aW9ucy4gRnJvbSB0aGUgZGVzY3JpcHRpb24sIGBhdGg5a19odGNgIGZhbGxzIHVuZGVyIHRoZSBjYXRlZ29yeSBvZiBkcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMsIHNwZWNpZmljYWxseSwgVVNCLiBUaGlzIHdvdWxkIG1lYW4gVVNCIGVtdWxhdGlvbiBsaWtlIHJhd19nYWRnZXQsIGR1bW15X2hjZCwgb3IsIGNydWNpYWxseSwgc3l6a2FsbGVyIFVTQiBmdXp6aW5nIGNhbiBiZSBsZXZlcmFnZWQuIEV4Y2VsbGVudCwgdGhhdCYjMzk7cyBhIHBvc2l0aXZlIHNpZ24uCgpCZXlvbmQgdGhhdCwgd2UgaGF2ZSBkZWJ1Z2ZzIGFuZCByZWxheSBpbnRlcmZhY2VzIHRvIGV4cGxvcmUuIFRoZSBzcGVjdHJhbCBzY2FuIGZ1bmN0aW9uYWxpdHkgd2l0aGluIHRoZSBkcml2ZXIgY3JlYXRlcyBkZWJ1Z2ZzIGVudHJpZXMgbGlrZSBgc3BlY3RyYWxfc2NhbmAsIGBzcGVjdHJhbF9zY2FuX2N0bGAsIGFuZCBgc3BlY3RyYWxfY291bnRgLiBJIG5lZWQgdG8gZGlnIGRlZXBlciBpbnRvIHdoYXQgZGVidWdmcyBmaWxlcyBzcGVjaWZpY2FsbHkgdGhlIGBjb21tb24tc3BlY3RyYWxgIGNvbXBvbmVudCBnZW5lcmF0ZXMuIFRoZXNlIGludGVyZmFjZXMgb2Z0ZW4gcHJvdmlkZSBhIHZhbHVhYmxlIHBvaW50IG9mIGludGVyYWN0aW9uIGZvciBmdXp6aW5nIGFuZCBidWcgZGV0ZWN0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwNTo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZWJ1Z2ZzX2NyZWF0ZV9maWxlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYz0xMDE5PXN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpjcmVhdGVfYnVmX2ZpbGVfaGFuZGxlcihjb25zdCBjaGFyICpmaWxlbmFtZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTAyNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzoxMDI3Olx0YnVmX2ZpbGUgPSBkZWJ1Z2ZzX2NyZWF0ZV9maWxlKGZpbGVuYW1lLCBtb2RlLCBwYXJlbnQsIGJ1ZixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xMDI4LVx0XHRcdFx0ICAgICAgIFx1MDAyNnJlbGF5X2ZpbGVfb3BlcmF0aW9ucyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jPTEwNjE9dm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTEwNzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6MTA3MzpcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXCYjMzQ7c3BlY3RyYWxfc2Nhbl9jdGxcJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTA3NC1cdFx0XHQgICAgMDYwMCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTA3Ni1cdFx0XHQgICAgXHUwMDI2Zm9wc19zcGVjX3NjYW5fY3RsKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzoxMDc3Olx0ZGVidWdmc19jcmVhdGVfZmlsZShcJiMzNDtzcGVjdHJhbF9zaG9ydF9yZXBlYXRcJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTA3OC1cdFx0XHQgICAgMDYwMCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTA4MC1cdFx0XHQgICAgXHUwMDI2Zm9wc19zcGVjdHJhbF9zaG9ydF9yZXBlYXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjEwODE6XHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFwmIzM0O3NwZWN0cmFsX2NvdW50XCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTEwODItXHRcdFx0ICAgIDA2MDAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTEwODQtXHRcdFx0ICAgIFx1MDAyNmZvcHNfc3BlY3RyYWxfY291bnQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjEwODU6XHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFwmIzM0O3NwZWN0cmFsX3BlcmlvZFwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xMDg2LVx0XHRcdCAgICAwNjAwLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xMDg4LVx0XHRcdCAgICBcdTAwMjZmb3BzX3NwZWN0cmFsX3BlcmlvZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6MTA4OTpcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXCYjMzQ7c3BlY3RyYWxfZmZ0X3BlcmlvZFwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xMDkwLVx0XHRcdCAgICAwNjAwLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwNTo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjE4MgoJCQkJCQkJb3V0cHV0OiAxOTUKCQkJCQkJCXRob3VnaHRzOiAzMjM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIFNwZWN0cmFsIFNjYW4gUGFja2V0IFByb2Nlc3NpbmcgaW4gYXRoOWsgYW5kIGF0aDlrX2h0YyBEcml2ZXJzKioKCk9rYXksIHNvIGhlcmUmIzM5O3MgdGhlIGRlYWwuIFdoZW4gc3BlY3RyYWwgc2Nhbm5pbmcgaXMgZW5hYmxlZCwgZWl0aGVyIHRocm91Z2ggdGhlIGBzcGVjdHJhbF9zY2FuX2N0bGAgb3IgbWFjODAyMTEgaW50ZXJmYWNlcywgYW5kIHBhY2tldHMgY29tZSBpbiAoc3BlY2lmaWNhbGx5IHZpYSBVU0IgaW4gdGhlIGBhdGg5a19odGNgIGRyaXZlciwgd2hpY2ggaXMgY3J1Y2lhbCBmb3Igb3VyIGZ1enppbmcgc3RyYXRlZ3kpLCBgYXRoX2Ntbl9wcm9jZXNzX2ZmdGAgZ2V0cyBjYWxsZWQuIFRoaXMgZnVuY3Rpb24sIGluIHR1cm4sIGNhbGxzIGBhdGhfY21uX2NvdW50X2ZmdF9zYW1wbGVgLiBJIG5lZWQgdG8gZW5zdXJlIHRoaXMgaXMgdW5kZXJzdG9vZCB3aXRoaW4gdGhlIGNvbnRleHQgb2YgZGVidWdmcyBmaWxlcywgd2hpY2ggYXJlIHByaW1lIHRhcmdldHMgZm9yIGZ1enppbmcuCgpNeSBwcmltYXJ5IGZvY3VzIGhlcmUgaXMgdW5kZXJzdGFuZGluZyB3aGF0IGNoYW5nZWQgaW4gdGhpcyBjb2RlLiBUaGUga2V5IGZ1bmN0aW9ucyBJJiMzOTttIHplcm9pbmcgaW4gb24gYXJlOiBgYXRoX2Ntbl9jb3VudF9mZnRfc2FtcGxlYCAoc3RhdGljIHdpdGhpbiBgY29tbW9uLXNwZWN0cmFsLmNgKSwgYGF0aF9jbW5fcHJvY2Vzc19mZnRgIChub24tc3RhdGljIGFuZCBhbiBleHBvcnRlZCBzeW1ib2wgaW4gYGNvbW1vbi1zcGVjdHJhbC5jYCksIGBhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1Z2AgKGFub3RoZXIgZXhwb3J0ZWQgc3ltYm9sIGZyb20gYGNvbW1vbi1zcGVjdHJhbC5jYCksIGBhdGg5a19pbml0X2RlYnVnYCAoaW4gYGRlYnVnLmNgKSwgYW5kIGBhdGg5a19odGNfaW5pdF9kZWJ1Z2AgKGluIGBodGNfZHJ2X2RlYnVnLmNgKS4gSSYjMzk7bSBsb29raW5nIGZvciBhbnkgYWRkZWQgb3IgbW9kaWZpZWQgZnVuY3Rpb24gY2FsbHMsIGFuZCB0aGUgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIHRoZW0uCgpUaGUgcGF0Y2ggaXRzZWxmIGlzIHRoZSBibHVlcHJpbnQgaGVyZS4gSXQgbG9va3MgbGlrZSBgYXRoX2Ntbl9jb3VudF9mZnRfc2FtcGxlYCBpcyBub3cgYmVpbmcgdXNlZCB0byBpbmNyZW1lbnQgYHJ4X3NwZWN0cmFsX3NhbXBsZV9nb29kYCBvciBgcnhfc3BlY3RyYWxfc2FtcGxlX2VycmAgd2l0aGluIGBhdGhfY21uX3Byb2Nlc3NfZmZ0YCBkZXBlbmRpbmcgb24gdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgRkZUIGhhbmRsZXIuIFRoaXMgaXMgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgYmVjYXVzZSB0aGF0IGxvZ2ljIGlzIGRpcmVjdGx5IGV4cG9zZWQgdG8gZnV6emluZy4gQSBrZXkgbW9kaWZpY2F0aW9uIHNlZW1zIHRvIGJlIHRoZSBhZGRpdGlvbiBvZiBhIGBzdHJ1Y3QgYXRoX3J4X3N0YXRzICpyeF9zdGF0c2AgcG9pbnRlci4gVGhpcyBnZXRzIHNldCB1cCB3aXRoaW4gZGVidWcgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb25zOiBzcGVjaWZpY2FsbHksIGBhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1Z2Agbm93IGFjY2VwdHMgYHJ4X3N0YXRzYCBhcyBhbiBhcmd1bWVudCBhbmQgaXQgbm93IHRha2VzIGFuZCBzZXRzIGBzcGVjX3ByaXYtJmd0O3J4X3N0YXRzYCBpbiBpdHMgaW5pdGlhbGl6YXRpb24gcm91dGluZSAod2hpY2ggaXMgYSBjb3JlIGNoYW5nZSkuIEl0IGlzIGFsc28gY2FsbGVkIGR1cmluZyBgYXRoOWtfaW5pdF9kZWJ1Z2AgYW5kIGBhdGg5a19odGNfaW5pdF9kZWJ1Z2AuCgpOb3csIHRoZSBpbXBvcnRhbnQgcGFydDogaXMgdGhpcyByZWFjaGFibGU/IFllcywgdXNpbmcgVVNCIGVtdWxhdGlvbiwgc3l6a2FsbGVyIGFuZCByYXdfZ2FkZ2V0LCBvciBkdW1teV9oY2Qgd2hpY2ggaXMgd2l0aGluIG91ciByZWFjaCBmb3IgdGhlIGBhdGg5a19odGNgIGRyaXZlci4gIFRoZSBjcml0aWNhbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVxdWlyZWQgYXJlIGBBVEg5S19IVENgLCBgQVRIOUtfSFRDX0RFQlVHRlNgLCBgQVRIOUtfQ09NTU9OX1NQRUNUUkFMYCwgYEFUSDlLYCwgYEFUSDlLX0RFQlVHRlNgLCBgVVNCYCwgYW5kIGBNQUM4MDIxMWAuCgpXZSBuZWVkIHRvIGVuc3VyZSB0aGF0IHRoZSBrZXkgZnVuY3Rpb25zIChgYXRoX2Ntbl9wcm9jZXNzX2ZmdGAsIGBhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1Z2AsIGBhdGg5a19odGNfaW5pdF9kZWJ1Z2AsIGFuZCBgYXRoOWtfaW5pdF9kZWJ1Z2ApIGFyZSBub3QgbGlmZWN5Y2xlIGZ1bmN0aW9ucywgYW5kIHNwZWNpZmljIHRvIHRoZSBoYW5kbGluZyBvZiBzcGVjdHJhbCBzY2FuIGFuZCBkZWJ1Z2ZzLiAgVGhpcyBkZXRhaWxlZCBhbmFseXNpcyBkZW1vbnN0cmF0ZXMgdGhhdCB0aGlzIGlzLCBpbiBmYWN0LCB0aGUgY2FzZS4gYGF0aF9jbW5fcHJvY2Vzc19mZnRgIGlzIGRpcmVjdGx5IGhhbmRsaW5nIEZGVCBmcmFtZXMsIGFuZCBkZWJ1ZyBpbml0aWFsaXphdGlvbiBmdW5jdGlvbnMgdGllIHRoaXMgcHJvY2VzcyB0byBkZWJ1ZyBpbnRlcmZhY2VzLiAgVGhlIHBhdGNoIG1vZGlmaWVzIHN0YXRzIHRyYWNraW5nIHdpdGggdGhlIGFkZGVkIHBvaW50ZXIsIGFuZCB0aGF0IGFkZHMgYSBzcGVjaWZpYyBmdXp6aW5nIHRhcmdldC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDU6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FUSDlLX0NPTU1PTl9TUEVDVFJBTCYjMzQ7LAogICAgJiMzNDtBVEg5S19IVENfREVCVUdGUyYjMzQ7LAogICAgJiMzNDtBVEg5S19IVEMmIzM0OywKICAgICYjMzQ7QVRIOUtfREVCVUdGUyYjMzQ7LAogICAgJiMzNDtBVEg5SyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2F0aF9jbW5fcHJvY2Vzc19mZnQmIzM0OywKICAgICYjMzQ7YXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcmIzM0OywKICAgICYjMzQ7YXRoOWtfaHRjX2luaXRfZGVidWcmIzM0OywKICAgICYjMzQ7YXRoOWtfaW5pdF9kZWJ1ZyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgc3BlY3RyYWwgc2NhbiBkZWJ1ZyBpbml0aWFsaXphdGlvbiBhbmQgRkZUIHNhbXBsZSBwcm9jZXNzaW5nIGluIHRoZSBhdGg5ayBhbmQgYXRoOWtfaHRjIGRyaXZlcnMuIGF0aDlrX2h0YyBpcyBhIFVTQi1iYXNlZCB3aXJlbGVzcyBkcml2ZXIgYWNjZXNzaWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIFVTQiBlbXVsYXRpb24uIFRoZSBjaGFuZ2VzIGFsdGVyIGhvdyBzcGVjdHJhbCBzYW1wbGUgc3RhdGlzdGljcyBhcmUgdHJhY2tlZCBhbmQgaW5pdGlhbGl6ZWQgYWNyb3NzIGRyaXZlcnMgc2hhcmluZyBjb21tb24gc3BlY3RyYWwgc2NhbiBjb2RlLCBtYWtpbmcgaXQgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QVRIOUtfQ09NTU9OX1NQRUNUUkFMJiMzNDssCiAgICAmIzM0O0FUSDlLX0hUQ19ERUJVR0ZTJiMzNDssCiAgICAmIzM0O0FUSDlLX0hUQyYjMzQ7LAogICAgJiMzNDtBVEg5S19ERUJVR0ZTJiMzNDssCiAgICAmIzM0O0FUSDlLJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YXRoX2Ntbl9wcm9jZXNzX2ZmdCYjMzQ7LAogICAgJiMzNDthdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyYjMzQ7LAogICAgJiMzNDthdGg5a19odGNfaW5pdF9kZWJ1ZyYjMzQ7LAogICAgJiMzNDthdGg5a19pbml0X2RlYnVnJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBzcGVjdHJhbCBzY2FuIGRlYnVnIGluaXRpYWxpemF0aW9uIGFuZCBGRlQgc2FtcGxlIHByb2Nlc3NpbmcgaW4gdGhlIGF0aDlrIGFuZCBhdGg5a19odGMgZHJpdmVycy4gYXRoOWtfaHRjIGlzIGEgVVNCLWJhc2VkIHdpcmVsZXNzIGRyaXZlciBhY2Nlc3NpYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgVVNCIGVtdWxhdGlvbi4gVGhlIGNoYW5nZXMgYWx0ZXIgaG93IHNwZWN0cmFsIHNhbXBsZSBzdGF0aXN0aWNzIGFyZSB0cmFja2VkIGFuZCBpbml0aWFsaXplZCBhY3Jvc3MgZHJpdmVycyBzaGFyaW5nIGNvbW1vbiBzcGVjdHJhbCBzY2FuIGNvZGUsIG1ha2luZyBpdCB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwNTo0OTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA1OjQ5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSB0eXBlIGNvbmZ1c2lvbiBpc3N1ZSBiZXR3ZWVuIGF0aDlrIGFuZCBhdGg5a19odGMgZHJpdmVycyBpbiBzaGFyZWQgc3BlY3RyYWwgc2Nhbm5pbmcgY29kZSAoY29tbW9uLXNwZWN0cmFsLmMpLCB3aGVyZSBjb21tb24tXHUwMDNlcHJpdiB3YXMgcHJldmlvdXNseSBjYXN0IHVuY29uZGl0aW9uYWxseSB0byBzdHJ1Y3QgYXRoX3NvZnRjICouIFRoZSBmaXggcGFzc2VzIHRoZSBkcml2ZXItc3BlY2lmaWMgYXRoX3J4X3N0YXRzIHBvaW50ZXIgZHVyaW5nIGRlYnVnIGluaXRpYWxpemF0aW9uIGFuZCBpbmNyZW1lbnRzIHN0YXRzIHRocm91Z2ggc3BlY19wcml2LVx1MDAzZXJ4X3N0YXRzIHdpdGggYSBOVUxMIGNoZWNrLlxuXG5UaGlzIGNoYW5nZSBvbmx5IGFmZmVjdHMgcG9pbnRlciBhc3NpZ25tZW50IGFuZCBzdGF0aXN0aWMgY291bnRlciBpbmNyZW1lbnRzLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBhbGxvY2F0ZSB1bmluaXRpYWxpemVkIGJ1ZmZlcnMsIG9yIHBlcmZvcm0gY29waWVzIHRvIHVzZXIgc3BhY2Ugb2YgdW5pbml0aWFsaXplZCBkYXRhLiBBbnkgbWVtb3J5IHNhZmV0eSBjb25jZXJucyAoc3VjaCBhcyBpbnZhbGlkIHBvaW50ZXIgZGVyZWZlcmVuY2VzIG9yIHR5cGUgY29uZnVzaW9uKSBhcmUgYWRlcXVhdGVseSBjb3ZlcmVkIGJ5IEtBU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMjkzN2U4NTRiODY1NWIxMmU1YjJkMWNiNzY0ZDAwYWJmZTRmOWViMApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTdW4gU2VwIDYgMDU6NDc6MzEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMKaW5kZXggY2EwMWEwN2Y2NjMwYy4uZDhiZTI0ZWJjZDI0NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYwpAQCAtNDY1LDYgJiM0Mzs0NjUsMjAgQEAgYXRoX2Ntbl9pc19mZnRfYnVmX2Z1bGwoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2KQogCQlyZXR1cm4gMDsKIH0KIAomIzQzO3N0YXRpYyB2b2lkIGF0aF9jbW5fY291bnRfZmZ0X3NhbXBsZShzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsCiYjNDM7CQkJCSAgICAgaW50IHJldCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBhdGhfcnhfc3RhdHMgKnJ4X3N0YXRzID0gc3BlY19wcml2LSZndDtyeF9zdGF0czsKJiM0MzsKJiM0MzsJaWYgKCFyeF9zdGF0cykKJiM0MzsJCXJldHVybjsKJiM0MzsKJiM0MzsJaWYgKHJldCA9PSAwKQomIzQzOwkJcnhfc3RhdHMtJmd0O3J4X3NwZWN0cmFsX3NhbXBsZV9nb29kJiM0MzsmIzQzOzsKJiM0MzsJZWxzZQomIzQzOwkJcnhfc3RhdHMtJmd0O3J4X3NwZWN0cmFsX3NhbXBsZV9lcnImIzQzOyYjNDM7OwomIzQzO30KJiM0MzsKIC8qIHJldHVybnMgMSBpZiB0aGlzIHdhcyBhIHNwZWN0cmFsIGZyYW1lLCBldmVuIGlmIG5vdCBoYW5kbGVkLiAqLwogaW50IGF0aF9jbW5fcHJvY2Vzc19mZnQoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LCBzdHJ1Y3QgaWVlZTgwMjExX2hkciAqaGRyLAogCQkgICAgc3RydWN0IGF0aF9yeF9zdGF0dXMgKnJzLCB1NjQgdHNmKQpAQCAtNDcyLDcgJiM0Mzs0ODYsNiBAQCBpbnQgYXRoX2Ntbl9wcm9jZXNzX2ZmdChzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsIHN0cnVjdCBpZWVlODAyMTFfaAogCXU4IHNhbXBsZV9idWZbU1BFQ1RSQUxfU0FNUExFX01BWF9MRU5dID0gezB9OwogCXN0cnVjdCBhdGhfaHcgKmFoID0gc3BlY19wcml2LSZndDthaDsKIAlzdHJ1Y3QgYXRoX2NvbW1vbiAqY29tbW9uID0gYXRoOWtfaHdfY29tbW9uKHNwZWNfcHJpdi0mZ3Q7YWgpOwotCXN0cnVjdCBhdGhfc29mdGMgKnNjID0gY29tbW9uLSZndDtwcml2OwogCXU4IG51bV9iaW5zLCAqdmRhdGEgPSAodTggKiloZHI7CiAJc3RydWN0IGF0aF9yYWRhcl9pbmZvICpyYWRhcl9pbmZvOwogCWludCBsZW4gPSBycy0mZ3Q7cnNfZGF0YWxlbjsKQEAgLTYyNCwxMCAmIzQzOzYzNyw3IEBAIGludCBhdGhfY21uX3Byb2Nlc3NfZmZ0KHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiwgc3RydWN0IGllZWU4MDIxMV9oCiAJCQkJcmV0ID0gZmZ0X2hhbmRsZXIocnMsIHNwZWNfcHJpdiwgc2FtcGxlX2J1ZiwKIAkJCQkJCSAgdHNmLCBmcmVxLCBjaGFuX3R5cGUpOwogCi0JCQkJaWYgKHJldCA9PSAwKQotCQkJCQlSWF9TVEFUX0lOQyhzYywgcnhfc3BlY3RyYWxfc2FtcGxlX2dvb2QpOwotCQkJCWVsc2UKLQkJCQkJUlhfU1RBVF9JTkMoc2MsIHJ4X3NwZWN0cmFsX3NhbXBsZV9lcnIpOwomIzQzOwkJCQlhdGhfY21uX2NvdW50X2ZmdF9zYW1wbGUoc3BlY19wcml2LCByZXQpOwogCiAJCQkJLyogTWl4IHRoZSByZWNlaXZlZCBiaW5zIHRvIHRoZSAvZGV2L3JhbmRvbQogCQkJCSAqIHBvb2wKQEAgLTY0MiwxMCAmIzQzOzY1Miw3IEBAIGludCBhdGhfY21uX3Byb2Nlc3NfZmZ0KHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiwgc3RydWN0IGllZWU4MDIxMV9oCiAJCQkJcmV0ID0gZmZ0X2hhbmRsZXIocnMsIHNwZWNfcHJpdiwgc2FtcGxlX3N0YXJ0LAogCQkJCQkJICB0c2YsIGZyZXEsIGNoYW5fdHlwZSk7CiAKLQkJCQlpZiAocmV0ID09IDApCi0JCQkJCVJYX1NUQVRfSU5DKHNjLCByeF9zcGVjdHJhbF9zYW1wbGVfZ29vZCk7Ci0JCQkJZWxzZQotCQkJCQlSWF9TVEFUX0lOQyhzYywgcnhfc3BlY3RyYWxfc2FtcGxlX2Vycik7CiYjNDM7CQkJCWF0aF9jbW5fY291bnRfZmZ0X3NhbXBsZShzcGVjX3ByaXYsIHJldCk7CiAKIAkJCQkvKiBNaXggdGhlIHJlY2VpdmVkIGJpbnMgdG8gdGhlIC9kZXYvcmFuZG9tCiAJCQkJICogcG9vbApAQCAtMTA1Miw4ICYjNDM7MTA1OSwxMCBAQCB2b2lkIGF0aDlrX2Ntbl9zcGVjdHJhbF9kZWluaXRfZGVidWcoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2KQogRVhQT1JUX1NZTUJPTChhdGg5a19jbW5fc3BlY3RyYWxfZGVpbml0X2RlYnVnKTsKIAogdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsCi0JCQkJICAgc3RydWN0IGRlbnRyeSAqZGVidWdmc19waHkpCiYjNDM7CQkJCSAgIHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcGh5LAomIzQzOwkJCQkgICBzdHJ1Y3QgYXRoX3J4X3N0YXRzICpyeF9zdGF0cykKIHsKJiM0MzsJc3BlY19wcml2LSZndDtyeF9zdGF0cyA9IHJ4X3N0YXRzOwogCXNwZWNfcHJpdi0mZ3Q7cmZzX2NoYW5fc3BlY19zY2FuID0gcmVsYXlfb3BlbigmIzM0O3NwZWN0cmFsX3NjYW4mIzM0OywKIAkJCQkJICAgIGRlYnVnZnNfcGh5LAogCQkJCQkgICAgMTAyNCwgMjU2LCAmYW1wO3Jmc19zcGVjX3NjYW5fY2IsCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmgKaW5kZXggMDExZDhhYjhiOTc0NC4uMGUyYzdkNmQzNDg3NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaApAQCAtOTQsMTIgJiM0Mzs5NCwxNiBAQCBzdHJ1Y3QgYXRoX2h0MjBfNDBfZmZ0X3BhY2tldCB7CiAJc3RydWN0IGF0aF9yYWRhcl9pbmZvIHJhZGFyX2luZm87CiB9IF9fcGFja2VkOwogCiYjNDM7c3RydWN0IGF0aF9yeF9zdGF0czsKJiM0MzsKIHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgewogCXN0cnVjdCBhdGhfaHcgKmFoOwogCS8qIHJlbGF5KGZzKSBjaGFubmVsIGZvciBzcGVjdHJhbCBzY2FuICovCiAJc3RydWN0IHJjaGFuICpyZnNfY2hhbl9zcGVjX3NjYW47CiAJZW51bSBzcGVjdHJhbF9tb2RlIHNwZWN0cmFsX21vZGU7CiAJc3RydWN0IGF0aF9zcGVjX3NjYW4gc3BlY19jb25maWc7CiYjNDM7CS8qIGRyaXZlciYjMzk7cyBSWCBzdGF0aXN0aWNzIHRvIGFjY291bnQgc2FtcGxlcyBpbnRvLCBpZiBhbnkgKi8KJiM0MzsJc3RydWN0IGF0aF9yeF9zdGF0cyAqcnhfc3RhdHM7CiB9OwogCiAjZGVmaW5lIFNQRUNUUkFMX0hUMjBfNDBfVE9UQUxfREFUQV9MRU4JKHNpemVvZihzdHJ1Y3QgYXRoX2h0MjBfNDBfZmZ0X3BhY2tldCkpCkBAIC0xNjksNyAmIzQzOzE3Myw5IEBAIHN0YXRpYyBpbmxpbmUgdTggc3BlY3RyYWxfYml0bWFwX3dlaWdodCh1OCAqYmlucykKIH0KIAogI2lmZGVmIENPTkZJR19BVEg5S19DT01NT05fU1BFQ1RSQUwKLXZvaWQgYXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LCBzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX3BoeSk7CiYjNDM7dm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsCiYjNDM7CQkJCSAgIHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcGh5LAomIzQzOwkJCQkgICBzdHJ1Y3QgYXRoX3J4X3N0YXRzICpyeF9zdGF0cyk7CiB2b2lkIGF0aDlrX2Ntbl9zcGVjdHJhbF9kZWluaXRfZGVidWcoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2KTsKIAogdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfc2Nhbl90cmlnZ2VyKHN0cnVjdCBhdGhfY29tbW9uICpjb21tb24sCkBAIC0xODEsNyAmIzQzOzE4Nyw4IEBAIGludCBhdGhfY21uX3Byb2Nlc3NfZmZ0KHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiwgc3RydWN0IGllZWU4MDIxMV9oCiAJCSAgICBzdHJ1Y3QgYXRoX3J4X3N0YXR1cyAqcnMsIHU2NCB0c2YpOwogI2Vsc2UKIHN0YXRpYyBpbmxpbmUgdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsCi0JCQkJCQkgc3RydWN0IGRlbnRyeSAqZGVidWdmc19waHkpCiYjNDM7CQkJCQkJIHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcGh5LAomIzQzOwkJCQkJCSBzdHJ1Y3QgYXRoX3J4X3N0YXRzICpyeF9zdGF0cykKIHsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2RlYnVnLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGVidWcuYwppbmRleCA3NGEwMTM0MDc1Y2Y5Li4wNDJhNGY1NDJhOTQzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGVidWcuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGVidWcuYwpAQCAtMTM4OSw3ICYjNDM7MTM4OSw4IEBAIGludCBhdGg5a19pbml0X2RlYnVnKHN0cnVjdCBhdGhfaHcgKmFoKQogCiAJYXRoOWtfZGZzX2luaXRfZGVidWcoc2MpOwogCWF0aDlrX3R4OTlfaW5pdF9kZWJ1ZyhzYyk7Ci0JYXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoJmFtcDtzYy0mZ3Q7c3BlY19wcml2LCBzYy0mZ3Q7ZGVidWcuZGVidWdmc19waHkpOwomIzQzOwlhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZygmYW1wO3NjLSZndDtzcGVjX3ByaXYsIHNjLSZndDtkZWJ1Zy5kZWJ1Z2ZzX3BoeSwKJiM0MzsJCQkJICAgICAgJmFtcDtzYy0mZ3Q7ZGVidWcuc3RhdHMucnhzdGF0cyk7CiAKIAlkZWJ1Z2ZzX2NyZWF0ZV9kZXZtX3NlcWZpbGUoc2MtJmd0O2RldiwgJiMzNDtkbWEmIzM0Oywgc2MtJmd0O2RlYnVnLmRlYnVnZnNfcGh5LAogCQkJCSAgICByZWFkX2ZpbGVfZG1hKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jCmluZGV4IDk0MzdkNjk4NzdjYzUuLjlkMzU0YjFkOTI5YzggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYwpAQCAtNDg3LDcgJiM0Mzs0ODcsOCBAQCBpbnQgYXRoOWtfaHRjX2luaXRfZGVidWcoc3RydWN0IGF0aF9odyAqYWgpCiAJcHJpdi0mZ3Q7ZGVidWcuZGVidWdmc19waHkgPSBkZWJ1Z2ZzX2NyZWF0ZV9kaXIoS0JVSUxEX01PRE5BTUUsCiAJCQkJCSAgICAgcHJpdi0mZ3Q7aHctJmd0O3dpcGh5LSZndDtkZWJ1Z2ZzZGlyKTsKIAotCWF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnKCZhbXA7cHJpdi0mZ3Q7c3BlY19wcml2LCBwcml2LSZndDtkZWJ1Zy5kZWJ1Z2ZzX3BoeSk7CiYjNDM7CWF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnKCZhbXA7cHJpdi0mZ3Q7c3BlY19wcml2LCBwcml2LSZndDtkZWJ1Zy5kZWJ1Z2ZzX3BoeSwKJiM0MzsJCQkJICAgICAgJmFtcDtwcml2LSZndDtkZWJ1Zy5yeF9zdGF0cyk7CiAKIAlkZWJ1Z2ZzX2NyZWF0ZV9maWxlKCYjMzQ7dGd0X2ludF9zdGF0cyYjMzQ7LCAwNDAwLCBwcml2LSZndDtkZWJ1Zy5kZWJ1Z2ZzX3BoeSwKIAkJCSAgICBwcml2LCAmYW1wO2ZvcHNfdGd0X2ludF9zdGF0cyk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwNTo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MjY5CgkJCQkJCQlvdXRwdXQ6IDE3OAoJCQkJCQkJdGhvdWdodHM6IDEyNDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgdGhlIFdpcmVsZXNzIFBhdGNoOiBLTVNBTiBBc3Nlc3NtZW50KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIHBhdGNoIGRvd24uIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgaXMgYSBmaXggcmVsYXRlZCB0byBzaGFyZWQgY29kZSBiZXR3ZWVuIHRoZSBgYXRoOWtgIGFuZCBgYXRoOWtfaHRjYCBkcml2ZXJzLiBUaGUgY29yZSBpc3N1ZSByZXZvbHZlcyBhcm91bmQgaG93IHRoZSBgY29tbW9uLXNwZWN0cmFsLmNgIG1vZHVsZSwgdXNlZCBieSBib3RoLCB3YXMgaW5jb3JyZWN0bHkgYXNzdW1pbmcgdGhlIHR5cGUgb2YgYGNvbW1vbi0mZ3Q7cHJpdmAuIFRoaXMgcG9pbnRlciB3YXMgYmVpbmcgY2FzdCB0byBgc3RydWN0IGF0aF9zb2Z0YyAqYCwgYnV0IGluIHRoZSBgYXRoOWtfaHRjYCBjYXNlLCBpdCYjMzk7cyBhY3R1YWxseSBzb21ldGhpbmcgZGlmZmVyZW50IChhIGBzdHJ1Y3QgYXRoOWtfaHRjX3ByaXZgIG9yIHNpbWlsYXIpLCBsZWFkaW5nIHRvIG91dC1vZi1ib3VuZHMgcmVhZHMvd3JpdGVzIHdoZW4gYWNjZXNzaW5nIHRoZSBzdGF0aXN0aWNzIHN0cnVjdHVyZS4gQmFzaWNhbGx5LCBhIGNsYXNzaWMgdHlwZSBjb25mdXNpb24gdnVsbmVyYWJpbGl0eS4KClRoZSBwYXRjaCByZXNvbHZlcyB0aGlzIGJ5IHBhc3NpbmcgdGhlIGBzdHJ1Y3QgYXRoX3J4X3N0YXRzICpgIHBvaW50ZXIgZGlyZWN0bHkgdG8gYGF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnYC4gIFRoaXMgcG9pbnRlciB0aGVuIGdldHMgc3RvcmVkIGluIGBzcGVjX3ByaXYtJmd0O3J4X3N0YXRzYCwgYW5kIHRoaXMgaXMgdXNlZCBmb3IgY291bnRlciBpbmNyZW1lbnRzIGluIGBhdGhfY21uX2NvdW50X2ZmdF9zYW1wbGVgLiBJbiBgYXRoOWtgLCB0aGlzIHBvaW50ZXIgY29tZXMgZnJvbSBgc2MtJmd0O2RlYnVnLnN0YXRzLnJ4c3RhdHNgLCBhbmQgaW4gYGF0aDlrX2h0Y2AsIGl0IGNvbWVzIGZyb20gYHByaXYtJmd0O2RlYnVnLnJ4X3N0YXRzYC4gVGhlIGNydWNpYWwgdGhpbmcgaGVyZSBpcyB0aGF0IHRoZSBwb2ludGVyIGlzIGV4cGxpY2l0bHkgcGFzc2VkLCBub3QgaW1wbGljaXRseSBkZXJpdmVkIHRocm91Z2ggYSBwb3RlbnRpYWxseSBpbmNvcnJlY3QgdHlwZSBjYXN0LgoKTXkgbWFpbiBmb2N1cyBub3cgaXMgb24gbWVtb3J5IHNhZmV0eS4gRG9lcyB0aGlzIGludHJvZHVjZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWVzPyAgSSYjMzk7dmUgY2hlY2tlZDogdGhpcyBwYXRjaCBkb2VzbiYjMzk7dCBjb3B5IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHRvIHVzZXIgc3BhY2UsIGl0IGRvZXNuJiMzOTt0IHJlYWQgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMgb3Igc3RydWN0IGZpZWxkcyAoYmVjYXVzZSBgcnhfc3RhdHNgIGlzIGluaXRpYWxpemVkIGFuZCBjaGVja2VkKS4gSXQgZG9lc24mIzM5O3QgbW9kaWZ5IGNvbmRpdGlvbmFsIGxvZ2ljIGJhc2VkIG9uIHVuaW5pdGlhbGl6ZWQgZGF0YS4gVGhlIGByeF9zdGF0c2AgcG9pbnRlciBpdHNlbGYgaXMgaW5pdGlhbGl6ZWQuIFRoaXMgaXMgYSB2ZXJ5IHRhcmdldGVkIGZpeCwgYW5kIHRoZXJlIGFyZSBubyBuZXcgcmlza3MgZnJvbSB1bmluaXRpYWxpemVkIGRhdGEuCgpMZXQgbWUgY29tcGFyZSB0aGUgYmVmb3JlIGFuZCBhZnRlciwgdG8gYmUgY2VydGFpbjogQmVmb3JlLCBgY29tbW9uLSZndDtwcml2YCB3YXMgYmVpbmcgY2FzdCB0byBgc3RydWN0IGF0aF9zb2Z0YyAqc2NgLCBhbmQgdGhlIGNvZGUgd291bGQgaW5jcmVtZW50IHRoZSBzdGF0aXN0aWNzIGRpcmVjdGx5LiBJbiBgYXRoOWtfaHRjYCwgdGhpcyBjYXVzZWQgYW4gaW52YWxpZCBtZW1vcnkgYWNjZXNzLiBOb3csIHdlJiMzOTtyZSBwYXNzaW5nIHRoZSBjb3JyZWN0IHBvaW50ZXIsIGByeF9zdGF0c2Agd2hpY2ggcG9pbnRzIHRvIGBzYy0mZ3Q7ZGVidWcuc3RhdHMucnhzdGF0c2Agb3IgYHByaXYtJmd0O2RlYnVnLnJ4X3N0YXRzYC4gVGhlIGNvcmUgZnVuY3Rpb25hbGl0eSAoaW5jcmVtZW50aW5nIGNvdW50ZXJzKSByZW1haW5zLCBidXQgdGhlIG1lbW9yeSBhY2Nlc3MgaXMgbm93IGRvbmUgd2l0aCBhIGNvcnJlY3QgcG9pbnRlci4KCk5vdywgbGV0JiMzOTtzIGFkZHJlc3MgS01TQU4gZGlyZWN0bHkuIFRoZSBgTmVlZHNLTVNBTmAgcnVsZSBzdGF0ZXMgaXQmIzM5O3MgKipmYWxzZSoqIGlmIHRoZSBwYXRjaCBwcmltYXJpbHkgZml4ZXMgaXNzdWVzIGxpa2Ugb3V0LW9mLWJvdW5kcyBhY2Nlc3MgKHdoaWNoIGl0IGRvZXMpLCBhbmQgaWYgYWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyBhcmUgaW5pdGlhbGl6ZWQuICBFdmVyeXRoaW5nIGhlcmUgKmlzKiBpbml0aWFsaXplZC4gV2UgYXJlbiYjMzk7dCByZWFkaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGVyZSYjMzk7cyBubyBpbmZvLWxlYWsgcmlzay4gU28sIHRoZSBwYXRjaCBtZWV0cyB0aGUgY29uZGl0aW9ucyBmb3IgYE5lZWRzS01TQU49ZmFsc2VgLiBTdGFuZGFyZCBzYW5pdGl6ZXJzIGFuZCBLQVNBTiB3aWxsIGNhdGNoIHRoZSBwcm9ibGVtcyBhZGRyZXNzZWQgYnkgdGhpcyBwYXRjaC4KCk15IGNvbmNsdXNpb24gaXMgY2xlYXI6IFRoaXMgcGF0Y2ggaXMgYSBtZW1vcnkgc2FmZXR5IGltcHJvdmVtZW50LiBJdCBmaXhlcyBhIHR5cGUgY29uZnVzaW9uLCBwcmV2ZW50aW5nIG91dC1vZi1ib3VuZHMgcmVhZHMvd3JpdGVzIGFuZCBwb3RlbnRpYWwgY3Jhc2hlcy4gIEtNU0FOIGlzbiYjMzk7dCBuZWNlc3NhcnkgaGVyZTsgS0FTQU4gYW5kIHN0YW5kYXJkIHNhbml0aXplcnMgaGFuZGxlIHRoZSByaXNrcy4gIExldCYjMzk7cyBzZXQgdGhlIHJlc3VsdHMgYW5kIG1vdmUgb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA1OjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgdHlwZSBjb25mdXNpb24gaXNzdWUgYmV0d2VlbiBhdGg5ayBhbmQgYXRoOWtfaHRjIGRyaXZlcnMgaW4gc2hhcmVkIHNwZWN0cmFsIHNjYW5uaW5nIGNvZGUgKGNvbW1vbi1zcGVjdHJhbC5jKSwgd2hlcmUgY29tbW9uLVx1MDAzZXByaXYgd2FzIHByZXZpb3VzbHkgY2FzdCB1bmNvbmRpdGlvbmFsbHkgdG8gc3RydWN0IGF0aF9zb2Z0YyAqLiBUaGUgZml4IHBhc3NlcyB0aGUgZHJpdmVyLXNwZWNpZmljIGF0aF9yeF9zdGF0cyBwb2ludGVyIGR1cmluZyBkZWJ1ZyBpbml0aWFsaXphdGlvbiBhbmQgaW5jcmVtZW50cyBzdGF0cyB0aHJvdWdoIHNwZWNfcHJpdi1cdTAwM2VyeF9zdGF0cyB3aXRoIGEgTlVMTCBjaGVjay5cblxuVGhpcyBjaGFuZ2Ugb25seSBhZmZlY3RzIHBvaW50ZXIgYXNzaWdubWVudCBhbmQgc3RhdGlzdGljIGNvdW50ZXIgaW5jcmVtZW50cy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSwgYWxsb2NhdGUgdW5pbml0aWFsaXplZCBidWZmZXJzLCBvciBwZXJmb3JtIGNvcGllcyB0byB1c2VyIHNwYWNlIG9mIHVuaW5pdGlhbGl6ZWQgZGF0YS4gQW55IG1lbW9yeSBzYWZldHkgY29uY2VybnMgKHN1Y2ggYXMgaW52YWxpZCBwb2ludGVyIGRlcmVmZXJlbmNlcyBvciB0eXBlIGNvbmZ1c2lvbikgYXJlIGFkZXF1YXRlbHkgY292ZXJlZCBieSBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgdHlwZSBjb25mdXNpb24gaXNzdWUgYmV0d2VlbiBhdGg5ayBhbmQgYXRoOWtfaHRjIGRyaXZlcnMgaW4gc2hhcmVkIHNwZWN0cmFsIHNjYW5uaW5nIGNvZGUgKGNvbW1vbi1zcGVjdHJhbC5jKSwgd2hlcmUgY29tbW9uLVx1MDAzZXByaXYgd2FzIHByZXZpb3VzbHkgY2FzdCB1bmNvbmRpdGlvbmFsbHkgdG8gc3RydWN0IGF0aF9zb2Z0YyAqLiBUaGUgZml4IHBhc3NlcyB0aGUgZHJpdmVyLXNwZWNpZmljIGF0aF9yeF9zdGF0cyBwb2ludGVyIGR1cmluZyBkZWJ1ZyBpbml0aWFsaXphdGlvbiBhbmQgaW5jcmVtZW50cyBzdGF0cyB0aHJvdWdoIHNwZWNfcHJpdi1cdTAwM2VyeF9zdGF0cyB3aXRoIGEgTlVMTCBjaGVjay5cblxuVGhpcyBjaGFuZ2Ugb25seSBhZmZlY3RzIHBvaW50ZXIgYXNzaWdubWVudCBhbmQgc3RhdGlzdGljIGNvdW50ZXIgaW5jcmVtZW50cy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSwgYWxsb2NhdGUgdW5pbml0aWFsaXplZCBidWZmZXJzLCBvciBwZXJmb3JtIGNvcGllcyB0byB1c2VyIHNwYWNlIG9mIHVuaW5pdGlhbGl6ZWQgZGF0YS4gQW55IG1lbW9yeSBzYWZldHkgY29uY2VybnMgKHN1Y2ggYXMgaW52YWxpZCBwb2ludGVyIGRlcmVmZXJlbmNlcyBvciB0eXBlIGNvbmZ1c2lvbikgYXJlIGFkZXF1YXRlbHkgY292ZXJlZCBieSBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDZUMDU6NDc6MzIuMDU1MjcwMTU2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAyMzcyNDE2ODA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkFUSDlLX0NPTU1PTl9TUEVDVFJBTFwiLFxuICAgIFwiQVRIOUtfSFRDX0RFQlVHRlNcIixcbiAgICBcIkFUSDlLX0hUQ1wiLFxuICAgIFwiQVRIOUtfREVCVUdGU1wiLFxuICAgIFwiQVRIOUtcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJhdGhfY21uX3Byb2Nlc3NfZmZ0XCIsXG4gICAgXCJhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1Z1wiLFxuICAgIFwiYXRoOWtfaHRjX2luaXRfZGVidWdcIixcbiAgICBcImF0aDlrX2luaXRfZGVidWdcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgdHlwZSBjb25mdXNpb24gaXNzdWUgYmV0d2VlbiBhdGg5ayBhbmQgYXRoOWtfaHRjIGRyaXZlcnMgaW4gc2hhcmVkIHNwZWN0cmFsIHNjYW5uaW5nIGNvZGUgKGNvbW1vbi1zcGVjdHJhbC5jKSwgd2hlcmUgY29tbW9uLVxcdTAwM2Vwcml2IHdhcyBwcmV2aW91c2x5IGNhc3QgdW5jb25kaXRpb25hbGx5IHRvIHN0cnVjdCBhdGhfc29mdGMgKi4gVGhlIGZpeCBwYXNzZXMgdGhlIGRyaXZlci1zcGVjaWZpYyBhdGhfcnhfc3RhdHMgcG9pbnRlciBkdXJpbmcgZGVidWcgaW5pdGlhbGl6YXRpb24gYW5kIGluY3JlbWVudHMgc3RhdHMgdGhyb3VnaCBzcGVjX3ByaXYtXFx1MDAzZXJ4X3N0YXRzIHdpdGggYSBOVUxMIGNoZWNrLlxcblxcblRoaXMgY2hhbmdlIG9ubHkgYWZmZWN0cyBwb2ludGVyIGFzc2lnbm1lbnQgYW5kIHN0YXRpc3RpYyBjb3VudGVyIGluY3JlbWVudHMuIEl0IGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnksIGFsbG9jYXRlIHVuaW5pdGlhbGl6ZWQgYnVmZmVycywgb3IgcGVyZm9ybSBjb3BpZXMgdG8gdXNlciBzcGFjZSBvZiB1bmluaXRpYWxpemVkIGRhdGEuIEFueSBtZW1vcnkgc2FmZXR5IGNvbmNlcm5zIChzdWNoIGFzIGludmFsaWQgcG9pbnRlciBkZXJlZmVyZW5jZXMgb3IgdHlwZSBjb25mdXNpb24pIGFyZSBhZGVxdWF0ZWx5IGNvdmVyZWQgYnkgS0FTQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHNwZWN0cmFsIHNjYW4gZGVidWcgaW5pdGlhbGl6YXRpb24gYW5kIEZGVCBzYW1wbGUgcHJvY2Vzc2luZyBpbiB0aGUgYXRoOWsgYW5kIGF0aDlrX2h0YyBkcml2ZXJzLiBhdGg5a19odGMgaXMgYSBVU0ItYmFzZWQgd2lyZWxlc3MgZHJpdmVyIGFjY2Vzc2libGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBVU0IgZW11bGF0aW9uLiBUaGUgY2hhbmdlcyBhbHRlciBob3cgc3BlY3RyYWwgc2FtcGxlIHN0YXRpc3RpY3MgYXJlIHRyYWNrZWQgYW5kIGluaXRpYWxpemVkIGFjcm9zcyBkcml2ZXJzIHNoYXJpbmcgY29tbW9uIHNwZWN0cmFsIHNjYW4gY29kZSwgbWFraW5nIGl0IHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDA1OjQ3OjMyLjA1NTI3ODIwNloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDk5NjkzNzY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMjkzN2U4NTRiODY1NWIxMmU1YjJkMWNiNzY0ZDAwYWJmZTRmOWViMFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIFNlcCA2IDA1OjQ3OjMxIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuY1xcbmluZGV4IGNhMDFhMDdmNjYzMGMuLmQ4YmUyNGViY2QyNDcgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jXFxuQEAgLTQ2NSw2ICs0NjUsMjAgQEAgYXRoX2Ntbl9pc19mZnRfYnVmX2Z1bGwoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2KVxcbiBcXHRcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4rc3RhdGljIHZvaWQgYXRoX2Ntbl9jb3VudF9mZnRfc2FtcGxlKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdixcXG4rXFx0XFx0XFx0XFx0ICAgICBpbnQgcmV0KVxcbit7XFxuK1xcdHN0cnVjdCBhdGhfcnhfc3RhdHMgKnJ4X3N0YXRzID0gc3BlY19wcml2LVxcdTAwM2VyeF9zdGF0cztcXG4rXFxuK1xcdGlmICghcnhfc3RhdHMpXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuK1xcdGlmIChyZXQgPT0gMClcXG4rXFx0XFx0cnhfc3RhdHMtXFx1MDAzZXJ4X3NwZWN0cmFsX3NhbXBsZV9nb29kKys7XFxuK1xcdGVsc2VcXG4rXFx0XFx0cnhfc3RhdHMtXFx1MDAzZXJ4X3NwZWN0cmFsX3NhbXBsZV9lcnIrKztcXG4rfVxcbitcXG4gLyogcmV0dXJucyAxIGlmIHRoaXMgd2FzIGEgc3BlY3RyYWwgZnJhbWUsIGV2ZW4gaWYgbm90IGhhbmRsZWQuICovXFxuIGludCBhdGhfY21uX3Byb2Nlc3NfZmZ0KHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiwgc3RydWN0IGllZWU4MDIxMV9oZHIgKmhkcixcXG4gXFx0XFx0ICAgIHN0cnVjdCBhdGhfcnhfc3RhdHVzICpycywgdTY0IHRzZilcXG5AQCAtNDcyLDcgKzQ4Niw2IEBAIGludCBhdGhfY21uX3Byb2Nlc3NfZmZ0KHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiwgc3RydWN0IGllZWU4MDIxMV9oXFxuIFxcdHU4IHNhbXBsZV9idWZbU1BFQ1RSQUxfU0FNUExFX01BWF9MRU5dID0gezB9O1xcbiBcXHRzdHJ1Y3QgYXRoX2h3ICphaCA9IHNwZWNfcHJpdi1cXHUwMDNlYWg7XFxuIFxcdHN0cnVjdCBhdGhfY29tbW9uICpjb21tb24gPSBhdGg5a19od19jb21tb24oc3BlY19wcml2LVxcdTAwM2VhaCk7XFxuLVxcdHN0cnVjdCBhdGhfc29mdGMgKnNjID0gY29tbW9uLVxcdTAwM2Vwcml2O1xcbiBcXHR1OCBudW1fYmlucywgKnZkYXRhID0gKHU4ICopaGRyO1xcbiBcXHRzdHJ1Y3QgYXRoX3JhZGFyX2luZm8gKnJhZGFyX2luZm87XFxuIFxcdGludCBsZW4gPSBycy1cXHUwMDNlcnNfZGF0YWxlbjtcXG5AQCAtNjI0LDEwICs2MzcsNyBAQCBpbnQgYXRoX2Ntbl9wcm9jZXNzX2ZmdChzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsIHN0cnVjdCBpZWVlODAyMTFfaFxcbiBcXHRcXHRcXHRcXHRyZXQgPSBmZnRfaGFuZGxlcihycywgc3BlY19wcml2LCBzYW1wbGVfYnVmLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHQgIHRzZiwgZnJlcSwgY2hhbl90eXBlKTtcXG4gXFxuLVxcdFxcdFxcdFxcdGlmIChyZXQgPT0gMClcXG4tXFx0XFx0XFx0XFx0XFx0UlhfU1RBVF9JTkMoc2MsIHJ4X3NwZWN0cmFsX3NhbXBsZV9nb29kKTtcXG4tXFx0XFx0XFx0XFx0ZWxzZVxcbi1cXHRcXHRcXHRcXHRcXHRSWF9TVEFUX0lOQyhzYywgcnhfc3BlY3RyYWxfc2FtcGxlX2Vycik7XFxuK1xcdFxcdFxcdFxcdGF0aF9jbW5fY291bnRfZmZ0X3NhbXBsZShzcGVjX3ByaXYsIHJldCk7XFxuIFxcbiBcXHRcXHRcXHRcXHQvKiBNaXggdGhlIHJlY2VpdmVkIGJpbnMgdG8gdGhlIC9kZXYvcmFuZG9tXFxuIFxcdFxcdFxcdFxcdCAqIHBvb2xcXG5AQCAtNjQyLDEwICs2NTIsNyBAQCBpbnQgYXRoX2Ntbl9wcm9jZXNzX2ZmdChzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsIHN0cnVjdCBpZWVlODAyMTFfaFxcbiBcXHRcXHRcXHRcXHRyZXQgPSBmZnRfaGFuZGxlcihycywgc3BlY19wcml2LCBzYW1wbGVfc3RhcnQsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCAgdHNmLCBmcmVxLCBjaGFuX3R5cGUpO1xcbiBcXG4tXFx0XFx0XFx0XFx0aWYgKHJldCA9PSAwKVxcbi1cXHRcXHRcXHRcXHRcXHRSWF9TVEFUX0lOQyhzYywgcnhfc3BlY3RyYWxfc2FtcGxlX2dvb2QpO1xcbi1cXHRcXHRcXHRcXHRlbHNlXFxuLVxcdFxcdFxcdFxcdFxcdFJYX1NUQVRfSU5DKHNjLCByeF9zcGVjdHJhbF9zYW1wbGVfZXJyKTtcXG4rXFx0XFx0XFx0XFx0YXRoX2Ntbl9jb3VudF9mZnRfc2FtcGxlKHNwZWNfcHJpdiwgcmV0KTtcXG4gXFxuIFxcdFxcdFxcdFxcdC8qIE1peCB0aGUgcmVjZWl2ZWQgYmlucyB0byB0aGUgL2Rldi9yYW5kb21cXG4gXFx0XFx0XFx0XFx0ICogcG9vbFxcbkBAIC0xMDUyLDggKzEwNTksMTAgQEAgdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfZGVpbml0X2RlYnVnKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdilcXG4gRVhQT1JUX1NZTUJPTChhdGg5a19jbW5fc3BlY3RyYWxfZGVpbml0X2RlYnVnKTtcXG4gXFxuIHZvaWQgYXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LFxcbi1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX3BoeSlcXG4rXFx0XFx0XFx0XFx0ICAgc3RydWN0IGRlbnRyeSAqZGVidWdmc19waHksXFxuK1xcdFxcdFxcdFxcdCAgIHN0cnVjdCBhdGhfcnhfc3RhdHMgKnJ4X3N0YXRzKVxcbiB7XFxuK1xcdHNwZWNfcHJpdi1cXHUwMDNlcnhfc3RhdHMgPSByeF9zdGF0cztcXG4gXFx0c3BlY19wcml2LVxcdTAwM2VyZnNfY2hhbl9zcGVjX3NjYW4gPSByZWxheV9vcGVuKFxcXCJzcGVjdHJhbF9zY2FuXFxcIixcXG4gXFx0XFx0XFx0XFx0XFx0ICAgIGRlYnVnZnNfcGh5LFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgMTAyNCwgMjU2LCBcXHUwMDI2cmZzX3NwZWNfc2Nhbl9jYixcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oXFxuaW5kZXggMDExZDhhYjhiOTc0NC4uMGUyYzdkNmQzNDg3NCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmhcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmhcXG5AQCAtOTQsMTIgKzk0LDE2IEBAIHN0cnVjdCBhdGhfaHQyMF80MF9mZnRfcGFja2V0IHtcXG4gXFx0c3RydWN0IGF0aF9yYWRhcl9pbmZvIHJhZGFyX2luZm87XFxuIH0gX19wYWNrZWQ7XFxuIFxcbitzdHJ1Y3QgYXRoX3J4X3N0YXRzO1xcbitcXG4gc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiB7XFxuIFxcdHN0cnVjdCBhdGhfaHcgKmFoO1xcbiBcXHQvKiByZWxheShmcykgY2hhbm5lbCBmb3Igc3BlY3RyYWwgc2NhbiAqL1xcbiBcXHRzdHJ1Y3QgcmNoYW4gKnJmc19jaGFuX3NwZWNfc2NhbjtcXG4gXFx0ZW51bSBzcGVjdHJhbF9tb2RlIHNwZWN0cmFsX21vZGU7XFxuIFxcdHN0cnVjdCBhdGhfc3BlY19zY2FuIHNwZWNfY29uZmlnO1xcbitcXHQvKiBkcml2ZXIncyBSWCBzdGF0aXN0aWNzIHRvIGFjY291bnQgc2FtcGxlcyBpbnRvLCBpZiBhbnkgKi9cXG4rXFx0c3RydWN0IGF0aF9yeF9zdGF0cyAqcnhfc3RhdHM7XFxuIH07XFxuIFxcbiAjZGVmaW5lIFNQRUNUUkFMX0hUMjBfNDBfVE9UQUxfREFUQV9MRU5cXHQoc2l6ZW9mKHN0cnVjdCBhdGhfaHQyMF80MF9mZnRfcGFja2V0KSlcXG5AQCAtMTY5LDcgKzE3Myw5IEBAIHN0YXRpYyBpbmxpbmUgdTggc3BlY3RyYWxfYml0bWFwX3dlaWdodCh1OCAqYmlucylcXG4gfVxcbiBcXG4gI2lmZGVmIENPTkZJR19BVEg5S19DT01NT05fU1BFQ1RSQUxcXG4tdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsIHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcGh5KTtcXG4rdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsXFxuK1xcdFxcdFxcdFxcdCAgIHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcGh5LFxcbitcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgYXRoX3J4X3N0YXRzICpyeF9zdGF0cyk7XFxuIHZvaWQgYXRoOWtfY21uX3NwZWN0cmFsX2RlaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYpO1xcbiBcXG4gdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfc2Nhbl90cmlnZ2VyKHN0cnVjdCBhdGhfY29tbW9uICpjb21tb24sXFxuQEAgLTE4MSw3ICsxODcsOCBAQCBpbnQgYXRoX2Ntbl9wcm9jZXNzX2ZmdChzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsIHN0cnVjdCBpZWVlODAyMTFfaFxcbiBcXHRcXHQgICAgc3RydWN0IGF0aF9yeF9zdGF0dXMgKnJzLCB1NjQgdHNmKTtcXG4gI2Vsc2VcXG4gc3RhdGljIGlubGluZSB2b2lkIGF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdixcXG4tXFx0XFx0XFx0XFx0XFx0XFx0IHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcGh5KVxcbitcXHRcXHRcXHRcXHRcXHRcXHQgc3RydWN0IGRlbnRyeSAqZGVidWdmc19waHksXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCBzdHJ1Y3QgYXRoX3J4X3N0YXRzICpyeF9zdGF0cylcXG4ge1xcbiB9XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGVidWcuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZWJ1Zy5jXFxuaW5kZXggNzRhMDEzNDA3NWNmOS4uMDQyYTRmNTQyYTk0MyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGVidWcuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZWJ1Zy5jXFxuQEAgLTEzODksNyArMTM4OSw4IEBAIGludCBhdGg5a19pbml0X2RlYnVnKHN0cnVjdCBhdGhfaHcgKmFoKVxcbiBcXG4gXFx0YXRoOWtfZGZzX2luaXRfZGVidWcoc2MpO1xcbiBcXHRhdGg5a190eDk5X2luaXRfZGVidWcoc2MpO1xcbi1cXHRhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhcXHUwMDI2c2MtXFx1MDAzZXNwZWNfcHJpdiwgc2MtXFx1MDAzZWRlYnVnLmRlYnVnZnNfcGh5KTtcXG4rXFx0YXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoXFx1MDAyNnNjLVxcdTAwM2VzcGVjX3ByaXYsIHNjLVxcdTAwM2VkZWJ1Zy5kZWJ1Z2ZzX3BoeSxcXG4rXFx0XFx0XFx0XFx0ICAgICAgXFx1MDAyNnNjLVxcdTAwM2VkZWJ1Zy5zdGF0cy5yeHN0YXRzKTtcXG4gXFxuIFxcdGRlYnVnZnNfY3JlYXRlX2Rldm1fc2VxZmlsZShzYy1cXHUwMDNlZGV2LCBcXFwiZG1hXFxcIiwgc2MtXFx1MDAzZWRlYnVnLmRlYnVnZnNfcGh5LFxcbiBcXHRcXHRcXHRcXHQgICAgcmVhZF9maWxlX2RtYSk7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jXFxuaW5kZXggOTQzN2Q2OTg3N2NjNS4uOWQzNTRiMWQ5MjljOCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuY1xcbkBAIC00ODcsNyArNDg3LDggQEAgaW50IGF0aDlrX2h0Y19pbml0X2RlYnVnKHN0cnVjdCBhdGhfaHcgKmFoKVxcbiBcXHRwcml2LVxcdTAwM2VkZWJ1Zy5kZWJ1Z2ZzX3BoeSA9IGRlYnVnZnNfY3JlYXRlX2RpcihLQlVJTERfTU9ETkFNRSxcXG4gXFx0XFx0XFx0XFx0XFx0ICAgICBwcml2LVxcdTAwM2Vody1cXHUwMDNld2lwaHktXFx1MDAzZWRlYnVnZnNkaXIpO1xcbiBcXG4tXFx0YXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoXFx1MDAyNnByaXYtXFx1MDAzZXNwZWNfcHJpdiwgcHJpdi1cXHUwMDNlZGVidWcuZGVidWdmc19waHkpO1xcbitcXHRhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhcXHUwMDI2cHJpdi1cXHUwMDNlc3BlY19wcml2LCBwcml2LVxcdTAwM2VkZWJ1Zy5kZWJ1Z2ZzX3BoeSxcXG4rXFx0XFx0XFx0XFx0ICAgICAgXFx1MDAyNnByaXYtXFx1MDAzZWRlYnVnLnJ4X3N0YXRzKTtcXG4gXFxuIFxcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXFxcInRndF9pbnRfc3RhdHNcXFwiLCAwNDAwLCBwcml2LVxcdTAwM2VkZWJ1Zy5kZWJ1Z2ZzX3BoeSxcXG4gXFx0XFx0XFx0ICAgIHByaXYsIFxcdTAwMjZmb3BzX3RndF9pbnRfc3RhdHMpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNTo0NzozMi41NTU5OTAxMjNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjkzODM5Njc5MjMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkFUSDlLX0NPTU1PTl9TUEVDVFJBTFwiLFxuICAgIFwiQVRIOUtfSFRDX0RFQlVHRlNcIixcbiAgICBcIkFUSDlLX0hUQ1wiLFxuICAgIFwiQVRIOUtfREVCVUdGU1wiLFxuICAgIFwiQVRIOUtcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJhdGhfY21uX3Byb2Nlc3NfZmZ0XCIsXG4gICAgXCJhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1Z1wiLFxuICAgIFwiYXRoOWtfaHRjX2luaXRfZGVidWdcIixcbiAgICBcImF0aDlrX2luaXRfZGVidWdcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgc3BlY3RyYWwgc2NhbiBkZWJ1ZyBpbml0aWFsaXphdGlvbiBhbmQgRkZUIHNhbXBsZSBwcm9jZXNzaW5nIGluIHRoZSBhdGg5ayBhbmQgYXRoOWtfaHRjIGRyaXZlcnMuIGF0aDlrX2h0YyBpcyBhIFVTQi1iYXNlZCB3aXJlbGVzcyBkcml2ZXIgYWNjZXNzaWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIFVTQiBlbXVsYXRpb24uIFRoZSBjaGFuZ2VzIGFsdGVyIGhvdyBzcGVjdHJhbCBzYW1wbGUgc3RhdGlzdGljcyBhcmUgdHJhY2tlZCBhbmQgaW5pdGlhbGl6ZWQgYWNyb3NzIGRyaXZlcnMgc2hhcmluZyBjb21tb24gc3BlY3RyYWwgc2NhbiBjb2RlLCBtYWtpbmcgaXQgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAyOTM3ZTg1NGI4NjU1YjEyZTViMmQxY2I3NjRkMDBhYmZlNGY5ZWIwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBTZXAgNiAwNTo0NzozMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuY1xuaW5kZXggY2EwMWEwN2Y2NjMwYy4uZDhiZTI0ZWJjZDI0NyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jXG5AQCAtNDY1LDYgKzQ2NSwyMCBAQCBhdGhfY21uX2lzX2ZmdF9idWZfZnVsbChzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYpXG4gXHRcdHJldHVybiAwO1xuIH1cbiBcbitzdGF0aWMgdm9pZCBhdGhfY21uX2NvdW50X2ZmdF9zYW1wbGUoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LFxuK1x0XHRcdFx0ICAgICBpbnQgcmV0KVxuK3tcbitcdHN0cnVjdCBhdGhfcnhfc3RhdHMgKnJ4X3N0YXRzID0gc3BlY19wcml2LVx1MDAzZXJ4X3N0YXRzO1xuK1xuK1x0aWYgKCFyeF9zdGF0cylcbitcdFx0cmV0dXJuO1xuK1xuK1x0aWYgKHJldCA9PSAwKVxuK1x0XHRyeF9zdGF0cy1cdTAwM2VyeF9zcGVjdHJhbF9zYW1wbGVfZ29vZCsrO1xuK1x0ZWxzZVxuK1x0XHRyeF9zdGF0cy1cdTAwM2VyeF9zcGVjdHJhbF9zYW1wbGVfZXJyKys7XG4rfVxuK1xuIC8qIHJldHVybnMgMSBpZiB0aGlzIHdhcyBhIHNwZWN0cmFsIGZyYW1lLCBldmVuIGlmIG5vdCBoYW5kbGVkLiAqL1xuIGludCBhdGhfY21uX3Byb2Nlc3NfZmZ0KHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiwgc3RydWN0IGllZWU4MDIxMV9oZHIgKmhkcixcbiBcdFx0ICAgIHN0cnVjdCBhdGhfcnhfc3RhdHVzICpycywgdTY0IHRzZilcbkBAIC00NzIsNyArNDg2LDYgQEAgaW50IGF0aF9jbW5fcHJvY2Vzc19mZnQoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LCBzdHJ1Y3QgaWVlZTgwMjExX2hcbiBcdHU4IHNhbXBsZV9idWZbU1BFQ1RSQUxfU0FNUExFX01BWF9MRU5dID0gezB9O1xuIFx0c3RydWN0IGF0aF9odyAqYWggPSBzcGVjX3ByaXYtXHUwMDNlYWg7XG4gXHRzdHJ1Y3QgYXRoX2NvbW1vbiAqY29tbW9uID0gYXRoOWtfaHdfY29tbW9uKHNwZWNfcHJpdi1cdTAwM2VhaCk7XG4tXHRzdHJ1Y3QgYXRoX3NvZnRjICpzYyA9IGNvbW1vbi1cdTAwM2Vwcml2O1xuIFx0dTggbnVtX2JpbnMsICp2ZGF0YSA9ICh1OCAqKWhkcjtcbiBcdHN0cnVjdCBhdGhfcmFkYXJfaW5mbyAqcmFkYXJfaW5mbztcbiBcdGludCBsZW4gPSBycy1cdTAwM2Vyc19kYXRhbGVuO1xuQEAgLTYyNCwxMCArNjM3LDcgQEAgaW50IGF0aF9jbW5fcHJvY2Vzc19mZnQoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LCBzdHJ1Y3QgaWVlZTgwMjExX2hcbiBcdFx0XHRcdHJldCA9IGZmdF9oYW5kbGVyKHJzLCBzcGVjX3ByaXYsIHNhbXBsZV9idWYsXG4gXHRcdFx0XHRcdFx0ICB0c2YsIGZyZXEsIGNoYW5fdHlwZSk7XG4gXG4tXHRcdFx0XHRpZiAocmV0ID09IDApXG4tXHRcdFx0XHRcdFJYX1NUQVRfSU5DKHNjLCByeF9zcGVjdHJhbF9zYW1wbGVfZ29vZCk7XG4tXHRcdFx0XHRlbHNlXG4tXHRcdFx0XHRcdFJYX1NUQVRfSU5DKHNjLCByeF9zcGVjdHJhbF9zYW1wbGVfZXJyKTtcbitcdFx0XHRcdGF0aF9jbW5fY291bnRfZmZ0X3NhbXBsZShzcGVjX3ByaXYsIHJldCk7XG4gXG4gXHRcdFx0XHQvKiBNaXggdGhlIHJlY2VpdmVkIGJpbnMgdG8gdGhlIC9kZXYvcmFuZG9tXG4gXHRcdFx0XHQgKiBwb29sXG5AQCAtNjQyLDEwICs2NTIsNyBAQCBpbnQgYXRoX2Ntbl9wcm9jZXNzX2ZmdChzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsIHN0cnVjdCBpZWVlODAyMTFfaFxuIFx0XHRcdFx0cmV0ID0gZmZ0X2hhbmRsZXIocnMsIHNwZWNfcHJpdiwgc2FtcGxlX3N0YXJ0LFxuIFx0XHRcdFx0XHRcdCAgdHNmLCBmcmVxLCBjaGFuX3R5cGUpO1xuIFxuLVx0XHRcdFx0aWYgKHJldCA9PSAwKVxuLVx0XHRcdFx0XHRSWF9TVEFUX0lOQyhzYywgcnhfc3BlY3RyYWxfc2FtcGxlX2dvb2QpO1xuLVx0XHRcdFx0ZWxzZVxuLVx0XHRcdFx0XHRSWF9TVEFUX0lOQyhzYywgcnhfc3BlY3RyYWxfc2FtcGxlX2Vycik7XG4rXHRcdFx0XHRhdGhfY21uX2NvdW50X2ZmdF9zYW1wbGUoc3BlY19wcml2LCByZXQpO1xuIFxuIFx0XHRcdFx0LyogTWl4IHRoZSByZWNlaXZlZCBiaW5zIHRvIHRoZSAvZGV2L3JhbmRvbVxuIFx0XHRcdFx0ICogcG9vbFxuQEAgLTEwNTIsOCArMTA1OSwxMCBAQCB2b2lkIGF0aDlrX2Ntbl9zcGVjdHJhbF9kZWluaXRfZGVidWcoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2KVxuIEVYUE9SVF9TWU1CT0woYXRoOWtfY21uX3NwZWN0cmFsX2RlaW5pdF9kZWJ1Zyk7XG4gXG4gdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsXG4tXHRcdFx0XHQgICBzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX3BoeSlcbitcdFx0XHRcdCAgIHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcGh5LFxuK1x0XHRcdFx0ICAgc3RydWN0IGF0aF9yeF9zdGF0cyAqcnhfc3RhdHMpXG4ge1xuK1x0c3BlY19wcml2LVx1MDAzZXJ4X3N0YXRzID0gcnhfc3RhdHM7XG4gXHRzcGVjX3ByaXYtXHUwMDNlcmZzX2NoYW5fc3BlY19zY2FuID0gcmVsYXlfb3BlbihcInNwZWN0cmFsX3NjYW5cIixcbiBcdFx0XHRcdFx0ICAgIGRlYnVnZnNfcGh5LFxuIFx0XHRcdFx0XHQgICAgMTAyNCwgMjU2LCBcdTAwMjZyZnNfc3BlY19zY2FuX2NiLFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaFxuaW5kZXggMDExZDhhYjhiOTc0NC4uMGUyYzdkNmQzNDg3NCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oXG5AQCAtOTQsMTIgKzk0LDE2IEBAIHN0cnVjdCBhdGhfaHQyMF80MF9mZnRfcGFja2V0IHtcbiBcdHN0cnVjdCBhdGhfcmFkYXJfaW5mbyByYWRhcl9pbmZvO1xuIH0gX19wYWNrZWQ7XG4gXG4rc3RydWN0IGF0aF9yeF9zdGF0cztcbitcbiBzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2IHtcbiBcdHN0cnVjdCBhdGhfaHcgKmFoO1xuIFx0LyogcmVsYXkoZnMpIGNoYW5uZWwgZm9yIHNwZWN0cmFsIHNjYW4gKi9cbiBcdHN0cnVjdCByY2hhbiAqcmZzX2NoYW5fc3BlY19zY2FuO1xuIFx0ZW51bSBzcGVjdHJhbF9tb2RlIHNwZWN0cmFsX21vZGU7XG4gXHRzdHJ1Y3QgYXRoX3NwZWNfc2NhbiBzcGVjX2NvbmZpZztcbitcdC8qIGRyaXZlcidzIFJYIHN0YXRpc3RpY3MgdG8gYWNjb3VudCBzYW1wbGVzIGludG8sIGlmIGFueSAqL1xuK1x0c3RydWN0IGF0aF9yeF9zdGF0cyAqcnhfc3RhdHM7XG4gfTtcbiBcbiAjZGVmaW5lIFNQRUNUUkFMX0hUMjBfNDBfVE9UQUxfREFUQV9MRU5cdChzaXplb2Yoc3RydWN0IGF0aF9odDIwXzQwX2ZmdF9wYWNrZXQpKVxuQEAgLTE2OSw3ICsxNzMsOSBAQCBzdGF0aWMgaW5saW5lIHU4IHNwZWN0cmFsX2JpdG1hcF93ZWlnaHQodTggKmJpbnMpXG4gfVxuIFxuICNpZmRlZiBDT05GSUdfQVRIOUtfQ09NTU9OX1NQRUNUUkFMXG4tdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsIHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcGh5KTtcbit2b2lkIGF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdixcbitcdFx0XHRcdCAgIHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcGh5LFxuK1x0XHRcdFx0ICAgc3RydWN0IGF0aF9yeF9zdGF0cyAqcnhfc3RhdHMpO1xuIHZvaWQgYXRoOWtfY21uX3NwZWN0cmFsX2RlaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYpO1xuIFxuIHZvaWQgYXRoOWtfY21uX3NwZWN0cmFsX3NjYW5fdHJpZ2dlcihzdHJ1Y3QgYXRoX2NvbW1vbiAqY29tbW9uLFxuQEAgLTE4MSw3ICsxODcsOCBAQCBpbnQgYXRoX2Ntbl9wcm9jZXNzX2ZmdChzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsIHN0cnVjdCBpZWVlODAyMTFfaFxuIFx0XHQgICAgc3RydWN0IGF0aF9yeF9zdGF0dXMgKnJzLCB1NjQgdHNmKTtcbiAjZWxzZVxuIHN0YXRpYyBpbmxpbmUgdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsXG4tXHRcdFx0XHRcdFx0IHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcGh5KVxuK1x0XHRcdFx0XHRcdCBzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX3BoeSxcbitcdFx0XHRcdFx0XHQgc3RydWN0IGF0aF9yeF9zdGF0cyAqcnhfc3RhdHMpXG4ge1xuIH1cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGVidWcuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZWJ1Zy5jXG5pbmRleCA3NGEwMTM0MDc1Y2Y5Li4wNDJhNGY1NDJhOTQzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2RlYnVnLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZWJ1Zy5jXG5AQCAtMTM4OSw3ICsxMzg5LDggQEAgaW50IGF0aDlrX2luaXRfZGVidWcoc3RydWN0IGF0aF9odyAqYWgpXG4gXG4gXHRhdGg5a19kZnNfaW5pdF9kZWJ1ZyhzYyk7XG4gXHRhdGg5a190eDk5X2luaXRfZGVidWcoc2MpO1xuLVx0YXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoXHUwMDI2c2MtXHUwMDNlc3BlY19wcml2LCBzYy1cdTAwM2VkZWJ1Zy5kZWJ1Z2ZzX3BoeSk7XG4rXHRhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhcdTAwMjZzYy1cdTAwM2VzcGVjX3ByaXYsIHNjLVx1MDAzZWRlYnVnLmRlYnVnZnNfcGh5LFxuK1x0XHRcdFx0ICAgICAgXHUwMDI2c2MtXHUwMDNlZGVidWcuc3RhdHMucnhzdGF0cyk7XG4gXG4gXHRkZWJ1Z2ZzX2NyZWF0ZV9kZXZtX3NlcWZpbGUoc2MtXHUwMDNlZGV2LCBcImRtYVwiLCBzYy1cdTAwM2VkZWJ1Zy5kZWJ1Z2ZzX3BoeSxcbiBcdFx0XHRcdCAgICByZWFkX2ZpbGVfZG1hKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuY1xuaW5kZXggOTQzN2Q2OTg3N2NjNS4uOWQzNTRiMWQ5MjljOCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmNcbkBAIC00ODcsNyArNDg3LDggQEAgaW50IGF0aDlrX2h0Y19pbml0X2RlYnVnKHN0cnVjdCBhdGhfaHcgKmFoKVxuIFx0cHJpdi1cdTAwM2VkZWJ1Zy5kZWJ1Z2ZzX3BoeSA9IGRlYnVnZnNfY3JlYXRlX2RpcihLQlVJTERfTU9ETkFNRSxcbiBcdFx0XHRcdFx0ICAgICBwcml2LVx1MDAzZWh3LVx1MDAzZXdpcGh5LVx1MDAzZWRlYnVnZnNkaXIpO1xuIFxuLVx0YXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoXHUwMDI2cHJpdi1cdTAwM2VzcGVjX3ByaXYsIHByaXYtXHUwMDNlZGVidWcuZGVidWdmc19waHkpO1xuK1x0YXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoXHUwMDI2cHJpdi1cdTAwM2VzcGVjX3ByaXYsIHByaXYtXHUwMDNlZGVidWcuZGVidWdmc19waHksXG4rXHRcdFx0XHQgICAgICBcdTAwMjZwcml2LVx1MDAzZWRlYnVnLnJ4X3N0YXRzKTtcbiBcbiBcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXCJ0Z3RfaW50X3N0YXRzXCIsIDA0MDAsIHByaXYtXHUwMDNlZGVidWcuZGVidWdmc19waHksXG4gXHRcdFx0ICAgIHByaXYsIFx1MDAyNmZvcHNfdGd0X2ludF9zdGF0cyk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNTo0NzozMi41NTU5OTI1NjNaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1MTM2NDU0Njg0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBhdGNoIGZvciBTeXprYWxsZXIgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IGlmIHRoaXMgcGF0Y2ggaXMgZXZlbiAqd29ydGgqIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuIFRoZSBwYXRjaCBpcyB0b3VjaGluZyBmaWxlcyBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2AsIHNwZWNpZmljYWxseSBgY29tbW9uLXNwZWN0cmFsLmNgLCBgY29tbW9uLXNwZWN0cmFsLmhgLCBgZGVidWcuY2AsIGFuZCBgaHRjX2Rydl9kZWJ1Zy5jYC4gQWxyaWdodCwgdGhhdCdzIHRoZSBzY29wZS4gTm93LCB0aGUga2V5IHF1ZXN0aW9uOiBpcyBgYXRoOWtgIGFjY2Vzc2libGUgdmlhIHRoZSBzeXprYWxsZXIgZnJhbWV3b3JrP1xuXG5GaXJzdCwgSSBuZWVkIHRvIGtub3cgdGhlIGRyaXZlciB0eXBlLiBJcyBpdCBQQ0ksIFVTQiwgb3IgYm90aD8gQSBxdWljayBjaGVjayByZXZlYWxzIGBhdGg5a2AgaXRzZWxmIGlzIFBDSS9Tb0MsIGJ1dCBgYXRoOWtfaHRjYCBpcyBVU0IhIEJpbmdvISBVU0IgZHJpdmVycyBhcmUgYWJzb2x1dGVseSB3aXRoaW4gc3l6a2FsbGVyJ3Mgd2hlZWxob3VzZSwgcGFydGljdWxhcmx5IHZpYSByYXdfZ2FkZ2V0LCBkdW1teV9oY2QsIG9yIHZoY2kgZm9yIGVtdWxhdGlvbi4gVGhpcyBsb29rcyBwcm9taXNpbmcuIFRoZSBmYWN0IHRoYXQgdGhlIHBhdGNoIHRvdWNoZXMgYGh0Y19kcnZfZGVidWcuY2AgZnVydGhlciByZWluZm9yY2VzIHRoZSBjb25uZWN0aW9uIHRvIFVTQi5cblxuTm93LCBJJ2xsIG5lZWQgdG8gZGlnIGRlZXBlci4gSSdsbCBuZWVkIHRvIGV4YW1pbmUgYGh0Y19kcnZfZGVidWcuY2Agc3BlY2lmaWNhbGx5LCBhbmQgaG93IHRoZSBgYXRoOWtfaHRjYCBkcml2ZXIgZnVuY3Rpb25zLiBJIGNhbiB1c2UgbXkgcHJlZmVycmVkIHRvb2xzLCBsaWtlIGdyZXBwZXIgb3IgcmVhZGluZyB0aGUgZmlsZSwgdG8gZmluZCBvdXQgaG93IGl0IHdpbGwgd29yayB3aXRoIHN5emthbGxlci4gTGV0J3Mgc3RhcnQgdGhlIHNlYXJjaCBhbmQgdW5kZXJzdGFuZCBpZiB0aGUgYGF0aDlrX2h0Y2AgY2FuIGJlIGZ1enplZCFcblxuXG4iLCJJbnB1dFRva2VucyI6NTA1NywiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzMSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDA1OjQ4OjIzLjkyMDU0NDY3NloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzAzNDAwNTgyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYz0xMDU5PUVYUE9SVF9TWU1CT0woYXRoOWtfY21uX3NwZWN0cmFsX2RlaW5pdF9kZWJ1Zyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTEwNjAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjEwNjE6dm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTEwNjItXFx0XFx0XFx0XFx0ICAgc3RydWN0IGRlbnRyeSAqZGVidWdmc19waHksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTA5My19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjEwOTQ6RVhQT1JUX1NZTUJPTChhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1Zyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmg9MTcwPXN0YXRpYyBpbmxpbmUgdTggc3BlY3RyYWxfYml0bWFwX3dlaWdodCh1OCAqYmlucylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaC0xNzUtI2lmZGVmIENPTkZJR19BVEg5S19DT01NT05fU1BFQ1RSQUxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmg6MTc2OnZvaWQgYXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaC0xNzctXFx0XFx0XFx0XFx0ICAgc3RydWN0IGRlbnRyeSAqZGVidWdmc19waHksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmg9MTg2PWludCBhdGhfY21uX3Byb2Nlc3NfZmZ0KHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiwgc3RydWN0IGllZWU4MDIxMV9oZHIgKmhkcixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaC0xODgtI2Vsc2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmg6MTg5OnN0YXRpYyBpbmxpbmUgdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oLTE5MC1cXHRcXHRcXHRcXHRcXHRcXHQgc3RydWN0IGRlbnRyeSAqZGVidWdmc19waHksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGVidWcuYz0xMzc3PWludCBhdGg5a19pbml0X2RlYnVnKHN0cnVjdCBhdGhfaHcgKmFoKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2RlYnVnLmMtMTM5MS1cXHRhdGg5a190eDk5X2luaXRfZGVidWcoc2MpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZWJ1Zy5jOjEzOTI6XFx0YXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoXFx1MDAyNnNjLVxcdTAwM2VzcGVjX3ByaXYsIHNjLVxcdTAwM2VkZWJ1Zy5kZWJ1Z2ZzX3BoeSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGVidWcuYy0xMzkzLVxcdFxcdFxcdFxcdCAgICAgIFxcdTAwMjZzYy1cXHUwMDNlZGVidWcuc3RhdHMucnhzdGF0cyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jPTQ4Mj1pbnQgYXRoOWtfaHRjX2luaXRfZGVidWcoc3RydWN0IGF0aF9odyAqYWgpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jLTQ4OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jOjQ5MDpcXHRhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhcXHUwMDI2cHJpdi1cXHUwMDNlc3BlY19wcml2LCBwcml2LVxcdTAwM2VkZWJ1Zy5kZWJ1Z2ZzX3BoeSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jLTQ5MS1cXHRcXHRcXHRcXHQgICAgICBcXHUwMDI2cHJpdi1cXHUwMDNlZGVidWcucnhfc3RhdHMpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNTo0ODoyNi42MjM5NTU0OThaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1NDA2NDYyNDk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFBhdGNoOiBBIERlZXAgRGl2ZSBpbnRvIERyaXZlciBEYXRhIFN0cnVjdHVyZXMgYW5kIFBvdGVudGlhbCBNZW1vcnkgQ29ycnVwdGlvbioqXG5cbkFscmlnaHQsIGxldCdzIGRpc3NlY3QgdGhpcyBwYXRjaCBhbmQgZmlndXJlIG91dCB0aGUgcmVhc29uaW5nIGJlaGluZCB0aGUgY2hhbmdlcy4gRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBoYXBwZW5pbmcgd2l0aGluIHRoZSBgYXRoX2Ntbl9wcm9jZXNzX2ZmdGAgZnVuY3Rpb24uIFRha2luZyBhIGxvb2sgYXQgdGhlIGNvZGUgYmVmb3JlIHRoZSBwYXRjaCwgSSBzZWUgYW4gYWNjZXNzIHBhdHRlcm4gdGhhdCBpbW1lZGlhdGVseSByYWlzZXMgYSBmbGFnOlxuXG5gYGBjXG5zdHJ1Y3QgYXRoX2h3ICphaCA9IHNwZWNfcHJpdi1cdTAwM2VhaDtcbnN0cnVjdCBhdGhfY29tbW9uICpjb21tb24gPSBhdGg5a19od19jb21tb24oc3BlY19wcml2LVx1MDAzZWFoKTtcbnN0cnVjdCBhdGhfc29mdGMgKnNjID0gY29tbW9uLVx1MDAzZXByaXY7XG4uLi5cbmlmIChyZXQgPT0gMClcbiAgICBSWF9TVEFUX0lOQyhzYywgcnhfc3BlY3RyYWxfc2FtcGxlX2dvb2QpO1xuZWxzZVxuICAgIFJYX1NUQVRfSU5DKHNjLCByeF9zcGVjdHJhbF9zYW1wbGVfZXJyKTtcbmBgYFxuXG5TcGVjaWZpY2FsbHksIHRoZSBsaW5lIHdoZXJlIGBjb21tb24tXHUwMDNlcHJpdmAgaXMgY2FzdCB0byBhIGBzdHJ1Y3QgYXRoX3NvZnRjICpzY2AuIEkga25vdywgZnJvbSBteSBleHBlcmllbmNlIHdpdGggdGhlIGBhdGg5a2AgZHJpdmVyLCB0aGF0IGBjb21tb24tXHUwMDNlcHJpdmAgaXMgaW5kZWVkIGEgYHN0cnVjdCBhdGhfc29mdGMgKmAuIEJ1dCwgdGhpcyBpcyBhIHNoYXJlZCBmaWxlIGJldHdlZW4gYGF0aDlrYCBhbmQgYGF0aDlrX2h0Y2AuIFdoYXQgaWYgdGhpcyBhY2Nlc3MgaXMgdXNlZCBpbiBgYXRoOWtfaHRjYCBhcyB3ZWxsPyBJIG5lZWQgdG8gY2hlY2sgd2hhdCBgYXRoOWtfaHRjYCBhY3R1YWxseSBzZXRzIGBjb21tb24tXHUwMDNlcHJpdmAgdG8uIE9yLCByYXRoZXIsIHdoYXQgdGhlIHR5cGUgb2YgdGhlIHN0cnVjdCBwb2ludGVkIHRvIGJ5IGBjb21tb24tXHUwMDNlcHJpdmAgaXMuXG5cbkJpbmdvISBJbiBgYXRoOWtfaHRjYCwgYGNvbW1vbi1cdTAwM2Vwcml2YCBpcyBhY3R1YWxseSBhIGBzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXZgLiBTbywgdGhlIGBSWF9TVEFUX0lOQyhzYywgLi4uKWAgbWFjcm8gaXMgbGlrZWx5IGluY3JlbWVudGluZyBhIG1lbWJlciBvZiBhIHN0cnVjdHVyZSBwb2ludGVkIHRvIGJ5IGBzY2AuXG5cblRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBhcmUgaW1tZWRpYXRlIGFuZCBzaWduaWZpY2FudC4gSWYgYHNjYCBpcyB0cmVhdGVkIGFzIGEgYHN0cnVjdCBhdGhfc29mdGMgKmAgd2hlbiBpdCdzIGFjdHVhbGx5IGEgYHN0cnVjdCBhdGg5a19odGNfcHJpdiAqYCwgdGhlbiB3ZSBoYXZlIGEgY2xhc3NpYyBjYXNlIG9mIG1lbW9yeSBjb3JydXB0aW9uIG9yIGludmFsaWQgc3RydWN0IG1lbWJlciBhY2Nlc3MhIFRoaXMgd291bGQgZGVwZW5kIG9uIHRoZSBzaXplIG9mIHRoZSAyIHN0cnVjdHMsIGFuZCB3aGljaCBmaWVsZHMgdGhlIGluY3JlbWVudCB0YXJnZXRzLlxuXG5UaGlzIHBhdGNoLCB0aGVuLCBpcyBhIGJ1Z2ZpeC4gSXQgYWRkcmVzc2VzIGEgc2hhcmVkIGNvZGUgcHJvYmxlbSB3aGVyZSBgY29tbW9uLXNwZWN0cmFsLmNgIHdhcyBiZWluZyB1c2VkIGJ5IGJvdGggYGF0aDlrYCBhbmQgYGF0aDlrX2h0Y2AsIGJ1dCBgYXRoX2Ntbl9wcm9jZXNzX2ZmdGAgYXNzdW1lZCBhIGBzdHJ1Y3QgYXRoX3NvZnRjICpgIGZvciBgY29tbW9uLVx1MDAzZXByaXZgLlxuXG5Ob3csIEkgc2VlIHRoZSBjb3JyZWN0ZWQgY29kZS4gYGF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnYCBub3cgcmVjZWl2ZXMgYSBwb2ludGVyIHRvIGBzdHJ1Y3QgYXRoX3J4X3N0YXRzICpyeF9zdGF0c2AsIHN0b3JlZCBpbiBgc3BlY19wcml2LVx1MDAzZXJ4X3N0YXRzYC4gQ29uc2VxdWVudGx5LCBgYXRoX2Ntbl9jb3VudF9mZnRfc2FtcGxlYCBzYWZlbHkgdXBkYXRlcyBgcnhfc3RhdHMtXHUwMDNlcnhfc3BlY3RyYWxfc2FtcGxlX2dvb2QrK2Agb3IgYHJ4X3N0YXRzLVx1MDAzZXJ4X3NwZWN0cmFsX3NhbXBsZV9lcnIrK2AuIFRoaXMgaXMgYSBtdWNoIGNsZWFuZXIgYW5kIHNhZmVyIGFwcHJvYWNoLCBlbGltaW5hdGluZyB0aGUgcG90ZW50aWFsIGZvciB0aG9zZSBuYXN0eSBtZW1vcnktcmVsYXRlZCBidWdzLlxuXG5JJ20gY3VyaW91czogaXMgYGF0aDlrX2h0Y2AgYSBVU0IgZHJpdmVyPyBBbmQgZG9lcyBzeXprYWxsZXIgZnV6eiB0aGUgYGF0aDlrX2h0Y2AgZHJpdmVyLCBvciB0aGUgYGF0aDlrYCBkcml2ZXI/IEknbGwgY2hlY2sgdGhlIEtjb25maWcgZmlsZXMgZm9yIGJvdGggYGF0aDlrYCBhbmQgYGF0aDlrX2h0Y2AganVzdCB0byBzZWUgaWYgdGhlcmUgaXMgYW55IGludGVyZXN0aW5nIGluZm9ybWF0aW9uIGluIHRoZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY1MzUsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDU6NDg6MzIuMDMwNDIyNTYzWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcyMjMwMzQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkFUSDlLX0hUQ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWtcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc9MTM9Y29uZmlnIEFUSDlLX0JUQ09FWF9TVVBQT1JUXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTQtXFx0Ym9vbCBcXFwiQXRoZXJvcyBibHVldG9vdGggY29leGlzdGVuY2Ugc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxNTpcXHRkZXBlbmRzIG9uIChBVEg5SyB8fCBBVEg5S19IVEMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTYtXFx0ZGVmYXVsdCB5XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZz0xNTY9Y29uZmlnIEFUSDlLX1BDSV9OT19FRVBST01cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE3MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxNzI6Y29uZmlnIEFUSDlLX0hUQ1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE3My1cXHR0cmlzdGF0ZSBcXFwiQXRoZXJvcyBIVEMgYmFzZWQgd2lyZWxlc3MgY2FyZHMgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE4Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxODc6Y29uZmlnIEFUSDlLX0hUQ19ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTg4LVxcdGJvb2wgXFxcIkF0aGVyb3MgYXRoOWtfaHRjIGRlYnVnZ2luZ1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxODk6XFx0ZGVwZW5kcyBvbiBBVEg5S19IVEMgXFx1MDAyNlxcdTAwMjYgREVCVUdfRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xOTAtXFx0c2VsZWN0IEFUSDlLX0NPTU1PTl9ERUJVR1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc9MjA2PWNvbmZpZyBBVEg5S19DT01NT05fU1BFQ1RSQUxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0yMDctXFx0Ym9vbCBcXFwiQXRoZXJvcyBhdGg5ay9hdGg5a19odGMgc3BlY3RyYWwgc2NhbiBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjIwODpcXHRkZXBlbmRzIG9uIEFUSDlLX0RFQlVHRlMgfHwgQVRIOUtfSFRDX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0yMDktXFx0c2VsZWN0IFJFTEFZXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU9Njg9YXRoOWtfaHRjLXkgKz1cXHRodGNfaHN0Lm8gXFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTc2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZTo3NzphdGg5a19odGMtJChDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlMpICs9IGh0Y19kcnZfZGVidWcub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS03OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6Nzk6b2JqLSQoQ09ORklHX0FUSDlLX0hUQykgKz0gYXRoOWtfaHRjLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtODAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAzX2VlcHJvbS5jPTMzOTA9c3RhdGljIGJvb2wgYXRoOWtfaHdfYXI5MzAwX2ZpbGxfZWVwcm9tKHN0cnVjdCBhdGhfaHcgKmFoKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwM19lZXByb20uYy0zNDAwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDNfZWVwcm9tLmM6MzQwMTojaWYgZGVmaW5lZChDT05GSUdfQVRIOUtfREVCVUdGUykgfHwgZGVmaW5lZChDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwM19lZXByb20uYy0zNDAyLXN0YXRpYyB1MzIgYXI5MDAzX2R1bXBfbW9kYWxfZWVwcm9tKGNoYXIgKmJ1ZiwgdTMyIGxlbiwgdTMyIHNpemUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jPTIzMj1zdGF0aWMgaW5saW5lIHZvaWQgYXRoOWtfc2tiX3F1ZXVlX2NvbXBsZXRlKHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMjM4LVxcdHdoaWxlICgoc2tiID0gX19za2JfZGVxdWV1ZShxdWV1ZSkpICE9IE5VTEwpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjIzOTojaWZkZWYgQ09ORklHX0FUSDlLX0hUQ19ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0yNDAtXFx0XFx0aW50IGxuID0gc2tiLVxcdTAwM2VsZW47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jPTM3Nj1zdGF0aWMgaW50IGhpZl91c2Jfc2VuZF90eChzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTM5OS1cXHQvKiBNZ210L0JlYWNvbiBmcmFtZXMgZG9uJ3QgdXNlIHRoZSBUWCBidWZmZXIgcG9vbCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NDAwOlxcdGlmICgodHhfY3RsLVxcdTAwM2V0eXBlID09IEFUSDlLX0hUQ19NR01UKSB8fFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NDAxOlxcdCAgICAodHhfY3RsLVxcdTAwM2V0eXBlID09IEFUSDlLX0hUQ19CRUFDT04pKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00MDItXFx0XFx0cmV0ID0gaGlmX3VzYl9zZW5kX21nbXQoaGlmX2Rldiwgc2tiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNDA2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NDA3OlxcdGlmICgodHhfY3RsLVxcdTAwM2V0eXBlID09IEFUSDlLX0hUQ19OT1JNQUwpIHx8XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo0MDg6XFx0ICAgICh0eF9jdGwtXFx1MDAzZXR5cGUgPT0gQVRIOUtfSFRDX0FNUERVKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNDA5LVxcdFxcdF9fc2tiX3F1ZXVlX3RhaWwoXFx1MDAyNmhpZl9kZXYtXFx1MDAzZXR4LnR4X3NrYl9xdWV1ZSwgc2tiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM9NDg3PXN0YXRpYyBpbmxpbmUgYm9vbCBjaGVja19pbmRleChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1OCBpZHgpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQ5Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjQ5MzpcXHRpZiAoKHR4X2N0bC1cXHUwMDNldHlwZSA9PSBBVEg5S19IVENfQU1QRFUpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00OTQtXFx0ICAgICh0eF9jdGwtXFx1MDAzZXN0YV9pZHggPT0gaWR4KSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD01Nj1lbnVtIGh0Y19vcG1vZGUge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTY0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo2NTojZGVmaW5lIEFUSDlLX0hUQ19BTVBEVSAgMVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo2NjojZGVmaW5lIEFUSDlLX0hUQ19OT1JNQUwgMlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo2NzojZGVmaW5lIEFUSDlLX0hUQ19CRUFDT04gM1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo2ODojZGVmaW5lIEFUSDlLX0hUQ19NR01UICAgNFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC02OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6NzA6I2RlZmluZSBBVEg5S19IVENfVFhfQ1RTT05MWSAgICAgIDB4MVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo3MTojZGVmaW5lIEFUSDlLX0hUQ19UWF9SVFNDVFMgICAgICAgMHgyXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTcyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD03Mz1zdHJ1Y3QgdHhfZnJhbWVfaGRyIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC03Ny1cXHR1OCB0aWRubztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6Nzg6XFx0X19iZTMyIGZsYWdzOyAvKiBBVEg5S19IVENfVFhfKiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC03OS1cXHR1OCBrZXlfdHlwZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD0xOTQ9c3RydWN0IGF0aDlrX2h0Y190YXJnZXRfcnhfc3RhdHMge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTE5OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MjAwOiNkZWZpbmUgQVRIOUtfSFRDX01BWF9WSUYgMlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyMDE6I2RlZmluZSBBVEg5S19IVENfTUFYX0JDTl9WSUYgMlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0yMDItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9MjQ5PXN0cnVjdCBhdGg5a192aWZfaXRlcl9kYXRhIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0yNTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI1NDojZGVmaW5lIEFUSDlLX0hUQ19NQVhfU1RBIDhcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MjU1OiNkZWZpbmUgQVRIOUtfSFRDX01BWF9USUQgOFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0yNTYtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9MjY0PXN0cnVjdCBhdGg5a19odGNfc3RhIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMjY1LVxcdHU4IGluZGV4O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyNjY6XFx0ZW51bSB0aWRfYWdncl9zdGF0ZSB0aWRfc3RhdGVbQVRIOUtfSFRDX01BWF9USURdO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0yNjctXFx0c3RydWN0IHdvcmtfc3RydWN0IHJjX3VwZGF0ZV93b3JrO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI3MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MjcxOiNkZWZpbmUgQVRIOUtfSFRDX1JYQlVGIDI1NlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0yNzItI2RlZmluZSBIVENfUlhfRlJBTUVfSEVBREVSX1NJWkUgNDBcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD0yODE9c3RydWN0IGF0aDlrX2h0Y19yeCB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMjg2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyODc6I2RlZmluZSBBVEg5S19IVENfVFhfQ0xFQU5VUF9JTlRFUlZBTCA1MCAvKiBtcyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyODg6I2RlZmluZSBBVEg5S19IVENfVFhfVElNRU9VVF9JTlRFUlZBTCAzMDAwIC8qIG1zICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI4OTojZGVmaW5lIEFUSDlLX0hUQ19UWF9SRVNFUlZFIDEwXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI5MDojZGVmaW5lIEFUSDlLX0hUQ19UWF9USU1FT1VUX0NPVU5UIDQwXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI5MTojZGVmaW5lIEFUSDlLX0hUQ19UWF9USFJFU0hPTEQgKE1BWF9UWF9CVUZfTlVNIC0gQVRIOUtfSFRDX1RYX1JFU0VSVkUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI5Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MjkzOiNkZWZpbmUgQVRIOUtfSFRDX09QX1RYX1FVRVVFU19TVE9QIEJJVCgwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyOTQ6I2RlZmluZSBBVEg5S19IVENfT1BfVFhfRFJBSU4gICAgICAgQklUKDEpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI5NS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD0zMTE9c3RydWN0IGF0aDlrX2h0Y190eF9jdGwge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDozMTI6XFx0dTggdHlwZTsgLyogQVRIOUtfSFRDXyogKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMzEzLVxcdHU4IGVwaWQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9MzE5PXN0YXRpYyBpbmxpbmUgc3RydWN0IGF0aDlrX2h0Y190eF9jdGwgKkhUQ19TS0JfQ0Ioc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0zMjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjMyODojaWZkZWYgQ09ORklHX0FUSDlLX0hUQ19ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTMyOS0jZGVmaW5lIF9fU1RBVF9TQUZFKGhpZl9kZXYsIGV4cHIpXFx0ZG8geyAoKGhpZl9kZXYpLVxcdTAwM2VodGNfaGFuZGxlLVxcdTAwM2VkcnZfcHJpdiA/IChleHByKSA6IDApOyB9IHdoaWxlICgwKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTM4OD1zdGF0aWMgaW5saW5lIHZvaWQgYXRoOWtfaHRjX2Vycl9zdGF0X3J4KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0zOTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjM5MzojZW5kaWYgLyogQ09ORklHX0FUSDlLX0hUQ19ERUJVR0ZTICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTM5NC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD00MDk9c3RydWN0IGh0Y19iZWFjb24ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTQxNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6NDE2OlxcdHN0cnVjdCBpZWVlODAyMTFfdmlmICpic2xvdFtBVEg5S19IVENfTUFYX0JDTl9WSUZdO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC00MTctXFx0dTMyIGJtaXNzY250O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTQ1Nj1zdHJ1Y3QgYXRoOWtfaHRjX3ByaXYge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTQ3OC1cXHR1OCBzdGFfc2xvdDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6NDc5OlxcdHU4IHZpZl9zdGFfcG9zW0FUSDlLX0hUQ19NQVhfVklGXTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNDgwLVxcdHU4IG51bV9pYnNzX3ZpZjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC01MzUtXFx0c3RydWN0IGRlbGF5ZWRfd29yayBkdXR5X2N5Y2xlX3dvcms7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjUzNjojaWZkZWYgQ09ORklHX0FUSDlLX0hUQ19ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTUzNy1cXHRzdHJ1Y3QgYXRoOWtfZGVidWcgZGVidWc7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9NjQxPWludCBhdGg5a19odGNfcmVzdW1lKHN0cnVjdCBodGNfdGFyZ2V0ICpodGNfaGFuZGxlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNjQyLSNlbmRpZlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo2NDM6I2lmZGVmIENPTkZJR19BVEg5S19IVENfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC02NDQtaW50IGF0aDlrX2h0Y19pbml0X2RlYnVnKHN0cnVjdCBhdGhfaHcgKmFoKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD02NDg9c3RhdGljIGlubGluZSB2b2lkIGF0aDlrX2h0Y19kZWluaXRfZGVidWcoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTY1MC19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjY1MTojZW5kaWYgLyogQ09ORklHX0FUSDlLX0hUQ19ERUJVR0ZTICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTY1Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jPTExMT1zdGF0aWMgdm9pZCBhdGg5a19odGNfYmVhY29uX2NvbmZpZ19hcChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYy0xMTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmM6MTE3OlxcdGF0aDlrX2Ntbl9iZWFjb25fY29uZmlnX2FwKGFoLCBjb25mLCBBVEg5S19IVENfTUFYX0JDTl9WSUYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTExOC1cXHRhdGg5a19odGNfYmVhY29uX2luaXQocHJpdiwgY29uZiwgZmFsc2UpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmM9MTkxPXN0YXRpYyB2b2lkIGF0aDlrX2h0Y19zZW5kX2JlYWNvbihzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYy0yNDItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmM6MjQzOlxcdHR4X2N0bC1cXHUwMDNldHlwZSA9IEFUSDlLX0hUQ19CRUFDT047XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMjQ0LVxcdHR4X2N0bC1cXHUwMDNlZXBpZCA9IHByaXYtXFx1MDAzZWJlYWNvbl9lcDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jPTI2ND1zdGF0aWMgaW50IGF0aDlrX2h0Y19jaG9vc2VfYnNsb3Qoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMjc2LVxcdHRzZnR1ID0gVFNGX1RPX1RVKHRzZiBcXHUwMDNlXFx1MDAzZSAzMiwgdHNmKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYzoyNzc6XFx0c2xvdCA9ICgodHNmdHUgJSBpbnR2YWwpICogQVRIOUtfSFRDX01BWF9CQ05fVklGKSAvIGludHZhbDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYzoyNzg6XFx0c2xvdCA9IEFUSDlLX0hUQ19NQVhfQkNOX1ZJRiAtIHNsb3QgLSAxO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTI3OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jPTMyNT12b2lkIGF0aDlrX2h0Y19hc3NpZ25fYnNsb3Qoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMzMyLVxcdHNwaW5fbG9ja19iaChcXHUwMDI2cHJpdi1cXHUwMDNlYmVhY29uX2xvY2spO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jOjMzMzpcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgQVRIOUtfSFRDX01BWF9CQ05fVklGOyBpKyspIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYy0zMzQtXFx0XFx0aWYgKHByaXYtXFx1MDAzZWJlYWNvbi5ic2xvdFtpXSA9PSBOVUxMKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYz0zNjU9dm9pZCBhdGg5a19odGNfc2V0X3RzZmFkanVzdChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYy0zODAtXFx0ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmM6MzgxOlxcdHRzZmFkanVzdCA9IGN1cl9jb25mLVxcdTAwM2ViZWFjb25faW50ZXJ2YWwgKiBhdnAtXFx1MDAzZWJzbG90IC8gQVRIOUtfSFRDX01BWF9CQ05fVklGO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTM4Mi1cXHRhdnAtXFx1MDAzZXRzZmFkanVzdCA9IGNwdV90b19sZTY0KFRVX1RPX1VTRUModHNmYWRqdXN0KSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jPTM5OD1zdGF0aWMgY29uc3QgY2hhciBhdGg5a19odGNfZ3N0cmluZ3Nfc3RhdHNbXVtFVEhfR1NUUklOR19MRU5dID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYy00MTgtfTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jOjQxOTojZGVmaW5lIEFUSDlLX0hUQ19TU1RBVFNfTEVOIEFSUkFZX1NJWkUoYXRoOWtfaHRjX2dzdHJpbmdzX3N0YXRzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMtNDIwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYz00MzA9aW50IGF0aDlrX2h0Y19nZXRfZXRfc3NldF9jb3VudChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMtNDMzLVxcdGlmIChzc2V0ID09IEVUSF9TU19TVEFUUylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jOjQzNDpcXHRcXHRyZXR1cm4gQVRIOUtfSFRDX1NTVEFUU19MRU47XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYy00MzUtXFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jPTQ0OD12b2lkIGF0aDlrX2h0Y19nZXRfZXRfc3RhdHMoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jLTQ3My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jOjQ3NDpcXHRXQVJOX09OKGkgIT0gQVRIOUtfSFRDX1NTVEFUU19MRU4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMtNDc1LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYz02MDY9c3RhdGljIGludCBhdGg5a19pbml0X3ByaXYoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jLTY3My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM6Njc0OlxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBVEg5S19IVENfTUFYX0JDTl9WSUY7IGkrKylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmMtNjc1LVxcdFxcdHByaXYtXFx1MDAzZWJlYWNvbi5ic2xvdFtpXSA9IE5VTEw7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM9MTg0PXZvaWQgYXRoOWtfaHRjX3Jlc2V0KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0yMzMtXFx0bW9kX3RpbWVyKFxcdTAwMjZwcml2LVxcdTAwM2V0eC5jbGVhbnVwX3RpbWVyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzoyMzQ6XFx0XFx0ICBqaWZmaWVzICsgbXNlY3NfdG9famlmZmllcyhBVEg5S19IVENfVFhfQ0xFQU5VUF9JTlRFUlZBTCkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0yMzUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM9MjQwPXN0YXRpYyBpbnQgYXRoOWtfaHRjX3NldF9jaGFubmVsKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0zMTEtXFx0bW9kX3RpbWVyKFxcdTAwMjZwcml2LVxcdTAwM2V0eC5jbGVhbnVwX3RpbWVyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzozMTI6XFx0XFx0ICBqaWZmaWVzICsgbXNlY3NfdG9famlmZmllcyhBVEg5S19IVENfVFhfQ0xFQU5VUF9JTlRFUlZBTCkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0zMTMtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM9MzUwPXN0YXRpYyBpbnQgYXRoOWtfaHRjX2FkZF9tb25pdG9yX2ludGVyZmFjZShzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMzU3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzozNTg6XFx0aWYgKChwcml2LVxcdTAwM2VudmlmcyBcXHUwMDNlPSBBVEg5S19IVENfTUFYX1ZJRikgfHxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6MzU5OlxcdCAgICAocHJpdi1cXHUwMDNlbnN0YXRpb25zIFxcdTAwM2U9IEFUSDlLX0hUQ19NQVhfU1RBKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0zNjAtXFx0XFx0cmV0ID0gLUVOT0JVRlM7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMzY0LVxcdHN0YV9pZHggPSBmZnoocHJpdi1cXHUwMDNlc3RhX3Nsb3QpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzozNjU6XFx0aWYgKChzdGFfaWR4IFxcdTAwM2MgMCkgfHwgKHN0YV9pZHggXFx1MDAzZSBBVEg5S19IVENfTUFYX1NUQSkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMzY2LVxcdFxcdHJldCA9IC1FTk9CVUZTO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jPTQ2Nj1zdGF0aWMgaW50IGF0aDlrX2h0Y19hZGRfc3RhdGlvbihzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtNDc3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzo0Nzg6XFx0aWYgKHByaXYtXFx1MDAzZW5zdGF0aW9ucyBcXHUwMDNlPSBBVEg5S19IVENfTUFYX1NUQSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtNDc5LVxcdFxcdHJldHVybiAtRU5PQlVGUztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy00ODEtXFx0c3RhX2lkeCA9IGZmeihwcml2LVxcdTAwM2VzdGFfc2xvdCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjQ4MjpcXHRpZiAoKHN0YV9pZHggXFx1MDAzYyAwKSB8fCAoc3RhX2lkeCBcXHUwMDNlIEFUSDlLX0hUQ19NQVhfU1RBKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtNDgzLVxcdFxcdHJldHVybiAtRU5PQlVGUztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYz03MDI9c3RhdGljIGludCBhdGg5a19odGNfdHhfYWdncl9vcGVyKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy03MTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjcxNDpcXHRpZiAodGlkIFxcdTAwM2U9IEFUSDlLX0hUQ19NQVhfVElEKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy03MTUtXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM9OTA3PXN0YXRpYyBpbnQgYXRoOWtfaHRjX3N0YXJ0KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTk2MC1cXHRzcGluX2xvY2tfYmgoXFx1MDAyNnByaXYtXFx1MDAzZXR4LnR4X2xvY2spO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzo5NjE6XFx0cHJpdi1cXHUwMDNldHguZmxhZ3MgXFx1MDAyNj0gfkFUSDlLX0hUQ19PUF9UWF9RVUVVRVNfU1RPUDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtOTYyLVxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZwcml2LVxcdTAwM2V0eC50eF9sb2NrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy05NjYtXFx0bW9kX3RpbWVyKFxcdTAwMjZwcml2LVxcdTAwM2V0eC5jbGVhbnVwX3RpbWVyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzo5Njc6XFx0XFx0ICBqaWZmaWVzICsgbXNlY3NfdG9famlmZmllcyhBVEg5S19IVENfVFhfQ0xFQU5VUF9JTlRFUlZBTCkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy05NjgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM9MTY1OD1zdGF0aWMgaW50IGF0aDlrX2h0Y19hbXBkdV9hY3Rpb24oc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMTY4OC1cXHRjYXNlIElFRUU4MDIxMV9BTVBEVV9UWF9PUEVSQVRJT05BTDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6MTY4OTpcXHRcXHRpZiAodGlkIFxcdTAwM2U9IEFUSDlLX0hUQ19NQVhfVElEKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTE2OTAtXFx0XFx0XFx0cmV0ID0gLUVJTlZBTDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYz0xODc0PXN0cnVjdCBpZWVlODAyMTFfb3BzIGF0aDlrX2h0Y19vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMTkwNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6MTkwNzojaWZkZWYgQ09ORklHX0FUSDlLX0hUQ19ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTE5MDgtXFx0LmdldF9ldF9zc2V0X2NvdW50ICA9IGF0aDlrX2h0Y19nZXRfZXRfc3NldF9jb3VudCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz0yMz1zdGF0aWMgY29uc3QgaW50IHN1YnR5cGVfdHhxX3RvX2h3cVtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTI5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzozMDojZGVmaW5lIEFUSDlLX0hUQ19JTklUX1RYUShzdWJ0eXBlKSBkbyB7XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0zMS1cXHRcXHRxaS50cWlfc3VidHlwZSA9IHN1YnR5cGVfdHhxX3RvX2h3cVtzdWJ0eXBlXTtcXHRcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9NTY9dm9pZCBhdGg5a19odGNfY2hlY2tfc3RvcF9xdWV1ZXMoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTU5LVxcdHByaXYtXFx1MDAzZXR4LnF1ZXVlZF9jbnQrKztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NjA6XFx0aWYgKChwcml2LVxcdTAwM2V0eC5xdWV1ZWRfY250IFxcdTAwM2U9IEFUSDlLX0hUQ19UWF9USFJFU0hPTEQpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjYxOlxcdCAgICAhKHByaXYtXFx1MDAzZXR4LmZsYWdzIFxcdTAwMjYgQVRIOUtfSFRDX09QX1RYX1FVRVVFU19TVE9QKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo2MjpcXHRcXHRwcml2LVxcdTAwM2V0eC5mbGFncyB8PSBBVEg5S19IVENfT1BfVFhfUVVFVUVTX1NUT1A7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTYzLVxcdFxcdGllZWU4MDIxMV9zdG9wX3F1ZXVlcyhwcml2LVxcdTAwM2Vodyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9Njg9dm9pZCBhdGg5a19odGNfY2hlY2tfd2FrZV9xdWV1ZXMoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTcwLVxcdHNwaW5fbG9ja19iaChcXHUwMDI2cHJpdi1cXHUwMDNldHgudHhfbG9jayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjcxOlxcdGlmICgocHJpdi1cXHUwMDNldHgucXVldWVkX2NudCBcXHUwMDNjIEFUSDlLX0hUQ19UWF9USFJFU0hPTEQpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjcyOlxcdCAgICAocHJpdi1cXHUwMDNldHguZmxhZ3MgXFx1MDAyNiBBVEg5S19IVENfT1BfVFhfUVVFVUVTX1NUT1ApKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjczOlxcdFxcdHByaXYtXFx1MDAzZXR4LmZsYWdzIFxcdTAwMjY9IH5BVEg5S19IVENfT1BfVFhfUVVFVUVTX1NUT1A7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTc0LVxcdFxcdGllZWU4MDIxMV93YWtlX3F1ZXVlcyhwcml2LVxcdTAwM2Vodyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9MjE0PXN0YXRpYyB2b2lkIGF0aDlrX2h0Y190eF9tZ210KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0yNDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjI0MTpcXHR0eF9jdGwtXFx1MDAzZXR5cGUgPSBBVEg5S19IVENfTUdNVDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMjQyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTI2MD1zdGF0aWMgdm9pZCBhdGg5a19odGNfdHhfZGF0YShzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMjkyLVxcdGlmICh0eF9pbmZvLVxcdTAwM2VmbGFncyBcXHUwMDI2IElFRUU4MDIxMV9UWF9DVExfQU1QRFUpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6MjkzOlxcdFxcdHR4X2N0bC1cXHUwMDNldHlwZSA9IEFUSDlLX0hUQ19BTVBEVTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6Mjk0OlxcdFxcdHR4X2hkci5kYXRhX3R5cGUgPSBBVEg5S19IVENfQU1QRFU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTI5NS1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzoyOTY6XFx0XFx0dHhfY3RsLVxcdTAwM2V0eXBlID0gQVRIOUtfSFRDX05PUk1BTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6Mjk3OlxcdFxcdHR4X2hkci5kYXRhX3R5cGUgPSBBVEg5S19IVENfTk9STUFMO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0yOTgtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTMxMi1cXHRcXHRpZiAoc2tiLVxcdTAwM2VsZW4gXFx1MDAzZSBwcml2LVxcdTAwM2Vody1cXHUwMDNld2lwaHktXFx1MDAzZXJ0c190aHJlc2hvbGQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjMxMzpcXHRcXHRcXHRmbGFncyB8PSBBVEg5S19IVENfVFhfUlRTQ1RTO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0zMTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTMxNS1cXHQvKiBDVFMtdG8tc2VsZiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzozMTY6XFx0aWYgKCEoZmxhZ3MgXFx1MDAyNiBBVEg5S19IVENfVFhfUlRTQ1RTKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0zMTctXFx0ICAgICh2aWYgXFx1MDAyNlxcdTAwMjYgdmlmLVxcdTAwM2Vic3NfY29uZi51c2VfY3RzX3Byb3QpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzozMTg6XFx0XFx0ZmxhZ3MgfD0gQVRIOUtfSFRDX1RYX0NUU09OTFk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTMxOS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz0zOTI9c3RhdGljIGlubGluZSBib29sIF9fYXRoOWtfaHRjX2NoZWNrX3R4X2FnZ3Ioc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTM5Ny1cXHRzcGluX2xvY2tfYmgoXFx1MDAyNnByaXYtXFx1MDAzZXR4LnR4X2xvY2spO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzozOTg6XFx0aWYgKCh0aWQgXFx1MDAzYyBBVEg5S19IVENfTUFYX1RJRCkgXFx1MDAyNlxcdTAwMjYgKGlzdGEtXFx1MDAzZXRpZF9zdGF0ZVt0aWRdID09IEFHR1JfU1RPUCkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTM5OS1cXHRcXHRyZXQgPSB0cnVlO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTQ0NT1zdGF0aWMgdm9pZCBhdGg5a19odGNfdHhfcHJvY2VzcyhzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDc4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo0Nzk6XFx0aWYgKHR4cy1cXHUwMDNldHNfZmxhZ3MgXFx1MDAyNiBBVEg5S19IVENfVFhTVEFUX0FDSykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00ODAtXFx0XFx0dHhfaW5mby1cXHUwMDNlZmxhZ3MgfD0gSUVFRTgwMjExX1RYX1NUQVRfQUNLO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ4NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NDg1OlxcdGlmICh0eHMtXFx1MDAzZXRzX2ZsYWdzIFxcdTAwMjYgQVRIOUtfSFRDX1RYU1RBVF9GSUxUKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00ODYtXFx0XFx0dHhfaW5mby1cXHUwMDNlZmxhZ3MgfD0gSUVFRTgwMjExX1RYX1NUQVRfVFhfRklMVEVSRUQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ4Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NDg4OlxcdGlmICh0eHMtXFx1MDAzZXRzX2ZsYWdzIFxcdTAwMjYgQVRIOUtfSFRDX1RYU1RBVF9SVENfQ1RTKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00ODktXFx0XFx0cmF0ZS1cXHUwMDNlZmxhZ3MgfD0gSUVFRTgwMjExX1RYX1JDX1VTRV9SVFNfQ1RTO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ5MS1cXHRyYXRlLVxcdTAwM2Vjb3VudCA9IDE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjQ5MjpcXHRyYXRlLVxcdTAwM2VpZHggPSBNUyh0eHMtXFx1MDAzZXRzX3JhdGUsIEFUSDlLX0hUQ19UWFNUQVRfUkFURSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ5My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NDk0OlxcdGlmICh0eHMtXFx1MDAzZXRzX2ZsYWdzIFxcdTAwMjYgQVRIOUtfSFRDX1RYU1RBVF9NQ1MpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDk1LVxcdFxcdHJhdGUtXFx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9UWF9SQ19NQ1M7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ5Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NDk3OlxcdFxcdGlmICh0eHMtXFx1MDAzZXRzX2ZsYWdzIFxcdTAwMjYgQVRIOUtfSFRDX1RYU1RBVF9DVzQwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00OTgtXFx0XFx0XFx0cmF0ZS1cXHUwMDNlZmxhZ3MgfD0gSUVFRTgwMjExX1RYX1JDXzQwX01IWl9XSURUSDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NDk5OlxcdFxcdGlmICh0eHMtXFx1MDAzZXRzX2ZsYWdzIFxcdTAwMjYgQVRIOUtfSFRDX1RYU1RBVF9TR0kpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTUwMC1cXHRcXHRcXHRyYXRlLVxcdTAwM2VmbGFncyB8PSBJRUVFODAyMTFfVFhfUkNfU0hPUlRfR0k7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9NTM5PXZvaWQgYXRoOWtfaHRjX3R4X2RyYWluKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy01NDMtXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZwcml2LVxcdTAwM2V0eC50eF9sb2NrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NTQ0OlxcdHByaXYtXFx1MDAzZXR4LmZsYWdzIHw9IEFUSDlLX0hUQ19PUF9UWF9EUkFJTjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNTQ1LVxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZwcml2LVxcdTAwM2V0eC50eF9sb2NrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy01NzMtXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZwcml2LVxcdTAwM2V0eC50eF9sb2NrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NTc0OlxcdHByaXYtXFx1MDAzZXR4LmZsYWdzIFxcdTAwMjY9IH5BVEg5S19IVENfT1BfVFhfRFJBSU47XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTU3NS1cXHRzcGluX3VubG9ja19iaChcXHUwMDI2cHJpdi1cXHUwMDNldHgudHhfbG9jayk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9NTc4PXZvaWQgYXRoOWtfdHhfZmFpbGVkX3Rhc2tsZXQoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTU4Mi1cXHRzcGluX2xvY2soXFx1MDAyNnByaXYtXFx1MDAzZXR4LnR4X2xvY2spO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo1ODM6XFx0aWYgKHByaXYtXFx1MDAzZXR4LmZsYWdzIFxcdTAwMjYgQVRIOUtfSFRDX09QX1RYX0RSQUlOKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTU4NC1cXHRcXHRzcGluX3VubG9jayhcXHUwMDI2cHJpdi1cXHUwMDNldHgudHhfbG9jayk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9NjE4PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiogYXRoOWtfaHRjX3R4X2dldF9wYWNrZXQoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTYyNC1cXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo2MjU6XFx0dTggZXBpZCA9IE1TKHR4cy1cXHUwMDNldHNfcmF0ZSwgQVRIOUtfSFRDX1RYU1RBVF9FUElEKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNjI2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTcxNj1zdGF0aWMgaW5saW5lIGJvb2wgY2hlY2tfcGFja2V0KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy03MjQtXFx0XFx0ICAgICAgIHR4X2N0bC1cXHUwMDNldGltZXN0YW1wICtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NzI1OlxcdFxcdCAgICAgICBtc2Vjc190b19qaWZmaWVzKEFUSDlLX0hUQ19UWF9USU1FT1VUX0lOVEVSVkFMKSkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNzI2LVxcdFxcdGF0aF9kYmcoY29tbW9uLCBYTUlULCBcXFwiRHJvcHBpbmcgYSBwYWNrZXQgZHVlIHRvIFRYIHRpbWVvdXRcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTc2MT12b2lkIGF0aDlrX2h0Y190eF9jbGVhbnVwX3RpbWVyKHN0cnVjdCB0aW1lcl9saXN0ICp0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTc3Ni1cXHRcXHRcXHRcXHRldmVudC1cXHUwMDNldHhzLmNvb2tpZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6Nzc3OlxcdFxcdFxcdFxcdE1TKGV2ZW50LVxcdTAwM2V0eHMudHNfcmF0ZSwgQVRIOUtfSFRDX1RYU1RBVF9FUElEKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTc3OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy03ODQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjc4NTpcXHRcXHRpZiAoKytldmVudC1cXHUwMDNlY291bnQgXFx1MDAzZT0gQVRIOUtfSFRDX1RYX1RJTUVPVVRfQ09VTlQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNzg2LVxcdFxcdFxcdGxpc3RfZGVsKFxcdTAwMjZldmVudC1cXHUwMDNlbGlzdCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtODA1LVxcdG1vZF90aW1lcihcXHUwMDI2cHJpdi1cXHUwMDNldHguY2xlYW51cF90aW1lcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6ODA2OlxcdFxcdCAgamlmZmllcyArIG1zZWNzX3RvX2ppZmZpZXMoQVRIOUtfSFRDX1RYX0NMRUFOVVBfSU5URVJWQUwpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtODA3LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz04Mjc9Ym9vbCBhdGg5a19odGNfdHhxX3NldHVwKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdiwgaW50IHN1YnR5cGUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtODM0LVxcdG1lbXNldChcXHUwMDI2cWksIDAsIHNpemVvZihxaSkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo4MzU6XFx0QVRIOUtfSFRDX0lOSVRfVFhRKHN1YnR5cGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy04MzYtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9ODUyPWludCBhdGg5a19odGNfY2FicV9zZXR1cChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtODU2LVxcdG1lbXNldChcXHUwMDI2cWksIDAsIHNpemVvZihxaSkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo4NTc6XFx0QVRIOUtfSFRDX0lOSVRfVFhRKDApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy04NTgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9MTE4Nz1pbnQgYXRoOWtfcnhfaW5pdChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMTE5My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6MTE5NDpcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgQVRIOUtfSFRDX1JYQlVGOyBpKyspIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMTE5NS1cXHRcXHRzdHJ1Y3QgYXRoOWtfaHRjX3J4YnVmICpyeGJ1ZiA9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmM9MTM4PXZvaWQgYXRoOWtfd21pX2V2ZW50X3Rhc2tsZXQoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jLTE3OC1cXHRcXHRcXHRzcGluX2xvY2tfYmgoXFx1MDAyNnByaXYtXFx1MDAzZXR4LnR4X2xvY2spO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYzoxNzk6XFx0XFx0XFx0aWYgKHByaXYtXFx1MDAzZXR4LmZsYWdzIFxcdTAwMjYgQVRIOUtfSFRDX09QX1RYX0RSQUlOKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jLTE4MC1cXHRcXHRcXHRcXHRzcGluX3VubG9ja19iaChcXHUwMDI2cHJpdi1cXHUwMDNldHgudHhfbG9jayk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg9Mzk9c3RydWN0IHdtaV9ldmVudF9zd2JhIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaC01MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6NTE6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX0FDSyAgICAgICAgQklUKDApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oOjUyOiNkZWZpbmUgQVRIOUtfSFRDX1RYU1RBVF9GSUxUICAgICAgIEJJVCgxKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo1MzojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfUlRDX0NUUyAgICBCSVQoMilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6NTQ6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX01DUyAgICAgICAgQklUKDMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oOjU1OiNkZWZpbmUgQVRIOUtfSFRDX1RYU1RBVF9DVzQwICAgICAgIEJJVCg0KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo1NjojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfU0dJICAgICAgICBCSVQoNSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmgtNTctXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmgtNjMtICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oOjY0OiNkZWZpbmUgQVRIOUtfSFRDX1RYU1RBVF9SQVRFICAgICAgIDB4MGZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6NjU6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX1JBVEVfUyAgICAgMFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaC02Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6Njc6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX0VQSUQgICAgICAgMHhmMFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo2ODojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfRVBJRF9TICAgICA0XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oLTY5LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNTo0ODozMi4xMDI2NjA2MzhaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMTc5NzQyNTY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipBbmFseXppbmcgYGF0aF9jbW5fcHJvY2Vzc19mZnRgIENhbGxzIGluIGF0aDlrIGFuZCBhdGg5a19odGMqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZGlnIGludG8gdGhlIHVzYWdlIG9mIGBhdGhfY21uX3Byb2Nlc3NfZmZ0YC4gTXkgaW5pdGlhbCBnb2FsIGlzIHRvIHVuZGVyc3RhbmQgaG93IGl0J3MgaW1wbGVtZW50ZWQgYW5kLCBtb3JlIGltcG9ydGFudGx5LCAqd2hlcmUqIGl0J3MgYmVpbmcgY2FsbGVkIHdpdGhpbiB0aGUgYGF0aDlrYCBhbmQgYGF0aDlrX2h0Y2AgZHJpdmVycy4gSSBzdXNwZWN0IHRoZXJlIHdpbGwgYmUgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUgdHdvLCBnaXZlbiB0aGUgYXJjaGl0ZWN0dXJhbCBkaXN0aW5jdGlvbnMgKFBDSSB2cy4gVVNCKS4gSSBuZWVkIHRvIGRldGVybWluZSBpZiBpdCdzIGJlaW5nIHVzZWQgZm9yIGNoYW5uZWwgZXN0aW1hdGlvbiwgZGF0YSBkZW1vZHVsYXRpb24sIG9yIHBlcmhhcHMgc29tZSBvdGhlciBzaWduYWwgcHJvY2Vzc2luZyBzdGFnZS4gSSB3aWxsIGxvb2sgZm9yIGNhbGxzIHRvIHRoaXMgZnVuY3Rpb24sIGtlZXBpbmcgaW4gbWluZCB0aGUgaGFyZHdhcmUgZGlmZmVyZW5jZXMuIEkgYW50aWNpcGF0ZSB0aGVyZSB3aWxsIGJlIGRpZmZlcmVuY2VzIGluIHRoZSBjYWxsaW5nIGNvbnRleHQgYW5kIHBhcmFtZXRlcnMgdXNlZCBpbiBlYWNoIGRyaXZlci4gQXJtZWQgd2l0aCB0aGlzIGtub3dsZWRnZSwgSSBjYW4gc3RhcnQgZm9ybWluZyBhIG1vcmUgaG9saXN0aWMgdW5kZXJzdGFuZGluZyBvZiB0aGUgcm9sZSBgYXRoX2Ntbl9wcm9jZXNzX2ZmdGAgcGxheXMgaW4gdGhlc2UgZHJpdmVycy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAyNzcsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNTo0ODozNC4yODI0MDQ5ODVaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjUwNTg5MTQ4NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhdGhfY21uX3Byb2Nlc3NfZmZ0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYz00Njg9c3RhdGljIHZvaWQgYXRoX2Ntbl9jb3VudF9mZnRfc2FtcGxlKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy00ODItLyogcmV0dXJucyAxIGlmIHRoaXMgd2FzIGEgc3BlY3RyYWwgZnJhbWUsIGV2ZW4gaWYgbm90IGhhbmRsZWQuICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjQ4MzppbnQgYXRoX2Ntbl9wcm9jZXNzX2ZmdChzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsIHN0cnVjdCBpZWVlODAyMTFfaGRyICpoZHIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTQ4NC1cXHRcXHQgICAgc3RydWN0IGF0aF9yeF9zdGF0dXMgKnJzLCB1NjQgdHNmKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTY5MC19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjY5MTpFWFBPUlRfU1lNQk9MKGF0aF9jbW5fcHJvY2Vzc19mZnQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy02OTItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmg9MTgzPWludCBhdGg5a19jbW5fc3BlY3RyYWxfc2Nhbl9jb25maWcoc3RydWN0IGF0aF9jb21tb24gKmNvbW1vbixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaC0xODUtXFx0XFx0XFx0ICAgICAgIGVudW0gc3BlY3RyYWxfbW9kZSBzcGVjdHJhbF9tb2RlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmg6MTg2OmludCBhdGhfY21uX3Byb2Nlc3NfZmZ0KHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiwgc3RydWN0IGllZWU4MDIxMV9oZHIgKmhkcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmgtMTg3LVxcdFxcdCAgICBzdHJ1Y3QgYXRoX3J4X3N0YXR1cyAqcnMsIHU2NCB0c2YpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oPTE5OT1zdGF0aWMgaW5saW5lIHZvaWQgYXRoOWtfY21uX3NwZWN0cmFsX3NjYW5fdHJpZ2dlcihzdHJ1Y3QgYXRoX2NvbW1vbiAqY29tbW9uLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oLTIwMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmg6MjA0OnN0YXRpYyBpbmxpbmUgaW50IGF0aF9jbW5fcHJvY2Vzc19mZnQoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaC0yMDUtXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV9oZHIgKmhkcixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz05NzI9c3RhdGljIGJvb2wgYXRoOWtfcnhfcHJlcGFyZShzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMTA0Ny1cXHRcXHQvKiBUT0RPOiBOb3QgdXNpbmcgREZTIHByb2Nlc3Npbmcgbm93LiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzoxMDQ4OlxcdFxcdGlmIChhdGhfY21uX3Byb2Nlc3NfZmZ0KFxcdTAwMjZwcml2LVxcdTAwM2VzcGVjX3ByaXYsIGhkcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMTA0OS1cXHRcXHRcXHRcXHQgICAgXFx1MDAyNnJ4X3N0YXRzLCByeF9zdGF0dXMtXFx1MDAzZW1hY3RpbWUpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvcmVjdi5jPTgwNj1zdGF0aWMgaW50IGF0aDlrX3J4X3NrYl9wcmVwcm9jZXNzKHN0cnVjdCBhdGhfc29mdGMgKnNjLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3JlY3YuYy04ODMtXFx0XFx0fSBlbHNlIGlmIChzYy1cXHUwMDNlc3BlY19wcml2LnNwZWN0cmFsX21vZGUgIT0gU1BFQ1RSQUxfRElTQUJMRUQgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvcmVjdi5jOjg4NDpcXHRcXHRcXHQgICBhdGhfY21uX3Byb2Nlc3NfZmZ0KFxcdTAwMjZzYy1cXHUwMDNlc3BlY19wcml2LCBoZHIsIHJ4X3N0YXRzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9yZWN2LmMtODg1LVxcdFxcdFxcdFxcdFxcdCAgICAgICByeF9zdGF0dXMtXFx1MDAzZW1hY3RpbWUpKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDA1OjQ4OjM2Ljc4ODMwMjU3WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTE3MDY4NjIyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGBhdGg5a19odGNgIFVTQiBXaXJlbGVzcyBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBgYXRoOWtfaHRjYCDigJMgdGhhdCdzIGEgVVNCIHdpcmVsZXNzIGRyaXZlciwgcmlnaHQ/IEludGVyZXN0aW5nLiBUaGlzIG1lYW5zIEkgY2FuIHByb2JhYmx5IHJlYWNoIGl0IGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVGhpbmsgUUVNVSB3aXRoIFVTQiBlbXVsYXRpb24sIG9yIGV2ZW4gcmF3X2dhZGdldCBzZXR1cHMuIEFuZCBvZiBjb3Vyc2UsIHRoZXJlJ3Mgc3l6a2FsbGVyIHdpdGggaXRzIFVTQiBmdXp6aW5nIGNhcGFiaWxpdGllcywgZXNwZWNpYWxseSB0aGUgYHN5el91c2JfY29ubmVjdGAgY2FsbC4gTm93LCB0aGUga2V5IHF1ZXN0aW9uIGlzOiBoYXMgc3l6a2FsbGVyIGFjdHVhbGx5ICpmdXp6ZWQqIGBhdGg5a19odGNgPyBJIG5lZWQgdG8gY2hlY2sgaWYgc3l6a2FsbGVyIGhhcyBkZXNjcmlwdGlvbnMgZm9yIGl0LiBPciwgZXZlbiBzaW1wbGVyLCBpZiBVU0IgZGV2aWNlcyBhcmUga25vd24gdG8gcHJvYmUgYGF0aDlrX2h0Y2AuXG5cblJpZ2h0LCBsZXQncyBzZWUuIEluIHRoZSBMaW51eCBrZXJuZWwsIEkga25vdyB0aGF0IGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jYCBpcyB0aGUgbGlrZWx5IGxvY2F0aW9uIGJlY2F1c2UgaXQgcmVnaXN0ZXJzIGEgYHVzYl9kcml2ZXJgLiBUaW1lIHRvIGRpZyBpbnRvIGBoaWZfdXNiLmNgLiBJJ20gbG9va2luZyBmb3IgVVNCIElEcyDigJMgc3BlY2lmaWMgVklEL1BJRHMuIEFoLCB0aGVyZSB0aGV5IGFyZTogQVI5MjcxLCBBUjcwMTAsIHRoZSB1c3VhbCBzdXNwZWN0cyAoVVNCX0RFVklDRSgweDBjZjMsIDB4OTI3MSksIGFuZCBzbyBvbikuIFRoYXQncyB0aGUgaG9vay5cblxuU28sIHdoZW4gYSBVU0IgZGV2aWNlIG1hdGNoaW5nIHRob3NlIFZJRC9QSURzIGdldHMgY29ubmVjdGVkIOKAkyBsaWtlIHRocm91Z2ggc3l6a2FsbGVyJ3MgYHN5el91c2JfY29ubmVjdGAg4oCTIHRoZSBkcml2ZXIgKnNob3VsZCogcHJvYmUuIFRoZW4sIGl0IHNldHMgdXAgYGRlYnVnZnNgIGlmIGBDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlNgIG9yIGBDT05GSUdfQVRIOUtfQ09NTU9OX1NQRUNUUkFMYCBhcmUgZW5hYmxlZC4gQW5kIGZyb20gdGhlcmUsIGl0J3MgYWxsIGFib3V0IHJlY2VpdmluZyBwYWNrZXRzIHZpYSBVU0IgVVJCcyAoYGF0aDlrX2h0Y19yeF9tc2dgLCBgYXRoOWtfcnhfcHJlcGFyZWApLCBhbmQgcHJvY2Vzc2luZyB0aG9zZSBzcGVjdHJhbCBzY2FuIEZGVCBmcmFtZXMgKGBhdGhfY21uX3Byb2Nlc3NfZmZ0YCkuXG5cbkhvbGQgb24uLi4gSSBqdXN0IHJlbWVtYmVyZWQgc29tZXRoaW5nIGltcG9ydGFudC4gU3BlY3RyYWwgc2NhbiBjb25maWd1cmF0aW9uIG9yIHJlbGF5IGZpbGVzIHdpdGhpbiBgZGVidWdmc2AgY2FuIGFsc28gYmUgZGlyZWN0bHkgdHJpZ2dlcmVkIGZyb20gdXNlciBzcGFjZS4gSSBuZWVkIHRvIGtlZXAgdGhhdCBpbiBtaW5kLlxuXG5Pa2F5LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiByZXF1aXJlbWVudHMgYW5kIGRlcGVuZGVuY2llcyBtb3JlLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgS2NvbmZpZyBmb3IgYGF0aDlrYDogYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnYC4gSSdsbCBmb2N1cyBvbiBgQ09ORklHX0FUSDlLX0NPTU1PTl9TUEVDVFJBTGAsIGBDT05GSUdfQVRIOUtgLCBgQ09ORklHX0FUSDlLX0hUQ2AsIGBDT05GSUdfQVRIOUtfREVCVUdGU2AsIGFuZCBgQ09ORklHX0FUSDlLX0hUQ19ERUJVR0ZTYCB0byBnZXQgdGhlIGZ1bGwgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE1MTAsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDU6NDg6NDEuOTU5MDAwNzNaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEzNjMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE2NSxcbiAgXCJMaW5lQ291bnRcIjogNTVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE2NTpcXHRcXHQgIG9mIHJlYWNoIGZvciB0aGUgYXRoOWsgY2hpcC5cXG4gMTY2OlxcdFxcbiAxNjc6XFx0XFx0ICBUaGVzZSBkZXZpY2VzIGFyZSB1c3VhbGx5IHZhcmlvdXMgbmV0d29yayBhcHBsaWFuY2VzLCByb3V0ZXJzIG9yXFxuIDE2ODpcXHRcXHQgIGFjY2VzcyBQb2ludHMgYW5kIHN1Y2guXFxuIDE2OTpcXHRcXG4gMTcwOlxcdFxcdCAgSWYgdW5zdXJlIHNheSBOLlxcbiAxNzE6XFx0XFxuIDE3MjpcXHRjb25maWcgQVRIOUtfSFRDXFxuIDE3MzpcXHRcXHR0cmlzdGF0ZSBcXFwiQXRoZXJvcyBIVEMgYmFzZWQgd2lyZWxlc3MgY2FyZHMgc3VwcG9ydFxcXCJcXG4gMTc0OlxcdFxcdGRlcGVuZHMgb24gVVNCIFxcdTAwMjZcXHUwMDI2IE1BQzgwMjExXFxuIDE3NTpcXHRcXHRzZWxlY3QgTUFDODAyMTFfTEVEUyBpZiBMRURTX0NMQVNTPXkgfHwgTEVEU19DTEFTUz1NQUM4MDIxMVxcbiAxNzY6XFx0XFx0c2VsZWN0IEFUSDlLX0hXXFxuIDE3NzpcXHRcXHRzZWxlY3QgQVRIOUtfQ09NTU9OXFxuIDE3ODpcXHRcXHRoZWxwXFxuIDE3OTpcXHRcXHQgIFN1cHBvcnQgZm9yIEF0aGVyb3MgSFRDIGJhc2VkIGNhcmRzLlxcbiAxODA6XFx0XFx0ICBDaGlwc2V0cyBzdXBwb3J0ZWQ6IEFSOTI3MVxcbiAxODE6XFx0XFxuIDE4MjpcXHRcXHQgIEZvciBtb3JlIGluZm9ybWF0aW9uOlxcbiAxODM6XFx0XFx0ICBodHRwczovL3dpcmVsZXNzLndpa2kua2VybmVsLm9yZy9lbi91c2Vycy9Ecml2ZXJzL2F0aDlrX2h0Y1xcbiAxODQ6XFx0XFxuIDE4NTpcXHRcXHQgIFRoZSBidWlsdCBtb2R1bGUgd2lsbCBiZSBhdGg5a19odGMuXFxuIDE4NjpcXHRcXG4gMTg3OlxcdGNvbmZpZyBBVEg5S19IVENfREVCVUdGU1xcbiAxODg6XFx0XFx0Ym9vbCBcXFwiQXRoZXJvcyBhdGg5a19odGMgZGVidWdnaW5nXFxcIlxcbiAxODk6XFx0XFx0ZGVwZW5kcyBvbiBBVEg5S19IVEMgXFx1MDAyNlxcdTAwMjYgREVCVUdfRlNcXG4gMTkwOlxcdFxcdHNlbGVjdCBBVEg5S19DT01NT05fREVCVUdcXG4gMTkxOlxcdFxcdGhlbHBcXG4gMTkyOlxcdFxcdCAgU2F5IFksIGlmIHlvdSBuZWVkIGFjY2VzcyB0byBhdGg5a19odGMncyBzdGF0aXN0aWNzLlxcbiAxOTM6XFx0XFx0ICBBcyB3ZWxsIGFzIGFjY2VzcyB0byB0aGUgRkZUL3NwZWN0cmFsIGRhdGEuXFxuIDE5NDpcXHRcXG4gMTk1OlxcdGNvbmZpZyBBVEg5S19IV1JOR1xcbiAxOTY6XFx0XFx0Ym9vbCBcXFwiUmFuZG9tIG51bWJlciBnZW5lcmF0b3Igc3VwcG9ydFxcXCJcXG4gMTk3OlxcdFxcdGRlcGVuZHMgb24gQVRIOUsgXFx1MDAyNlxcdTAwMjYgKEhXX1JBTkRPTSA9IHkgfHwgSFdfUkFORE9NID0gQVRIOUspXFxuIDE5ODpcXHRcXHRkZWZhdWx0IG5cXG4gMTk5OlxcdFxcdGhlbHBcXG4gMjAwOlxcdFxcdCAgVGhpcyBvcHRpb24gaW5jb3Jwb3JhdGVzIHRoZSBBREMgcmVnaXN0ZXIgb3V0cHV0IGFzIGEgc291cmNlIG9mXFxuIDIwMTpcXHRcXHQgIHJhbmRvbW5lc3MgaW50byBMaW51eCBlbnRyb3B5IHBvb2wgKC9kZXYvdXJhbmRvbSBhbmQgL2Rldi9yYW5kb20pXFxuIDIwMjpcXHRcXG4gMjAzOlxcdFxcdCAgU2F5IFksIGZlZWRzIHRoZSBlbnRyb3B5IGRpcmVjdGx5IGZyb20gdGhlIFdpRmkgZHJpdmVyIHRvIHRoZSBpbnB1dFxcbiAyMDQ6XFx0XFx0ICBwb29sLlxcbiAyMDU6XFx0XFxuIDIwNjpcXHRjb25maWcgQVRIOUtfQ09NTU9OX1NQRUNUUkFMXFxuIDIwNzpcXHRcXHRib29sIFxcXCJBdGhlcm9zIGF0aDlrL2F0aDlrX2h0YyBzcGVjdHJhbCBzY2FuIHN1cHBvcnRcXFwiXFxuIDIwODpcXHRcXHRkZXBlbmRzIG9uIEFUSDlLX0RFQlVHRlMgfHwgQVRIOUtfSFRDX0RFQlVHRlNcXG4gMjA5OlxcdFxcdHNlbGVjdCBSRUxBWVxcbiAyMTA6XFx0XFx0ZGVmYXVsdCBuXFxuIDIxMTpcXHRcXHRoZWxwXFxuIDIxMjpcXHRcXHQgIFNheSBZIHRvIGVuYWJsZSBhY2Nlc3MgdG8gdGhlIEZGVC9zcGVjdHJhbCBkYXRhIHZpYSBkZWJ1Z2ZzLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNTo0ODo0MS45NTkxMTcyOFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0NDYwMjUxMTM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhlIHRob3VnaHQgcHJvY2VzcyB1bmZvbGRzOlxuXG4qKkNoZWNraW5nIHRoZSBLY29uZmlnIGZvciBgQVRIOUtfREVCVUdGU2AqKlxuXG5Pa2F5LCBzbyB3ZSdyZSBkaXZpbmcgaW50byB0aGlzIGlzc3VlLi4uIExldCdzIG5vdCBqdXN0IGFzc3VtZSB3aGVyZSB0aGUgcHJvYmxlbSBsaWVzLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBkb3VibGUtY2hlY2sgc29tZXRoaW5nIHRoYXQgbWlnaHQgYmUgZWFzaWx5IG92ZXJsb29rZWQuIFJpZ2h0IG5vdywgSSdtIHRoaW5raW5nLCBcIkRpZCB3ZSBtYWtlIHN1cmUgdGhhdCBkZWJ1Z2dpbmcgaXMgZW5hYmxlZD9cIiBMZXQncyBzZWUgaWYgdGhlIGBBVEg5S19ERUJVR0ZTYCBjb25maWd1cmF0aW9uIG9wdGlvbiBpcyBlbmFibGVkIGluIHRoZSBLY29uZmlnLiBBIGxvdCBvZiB0aW1lcywgZGVidWdnaW5nIGZlYXR1cmVzIGFyZSBjb25kaXRpb25hbGx5IGNvbXBpbGVkLCBhbmQgaXQncyBlYXN5IHRvIG1pc3MgdGhhdCBzcGVjaWZpYyBjb25maWcuIEl0J3MgYSBxdWljayBzYW5pdHkgY2hlY2ssIGJ1dCBpbXBvcnRhbnQgYmVjYXVzZSBpZiB0aGF0J3Mgbm90IGVuYWJsZWQsIHdlJ3JlIG5vdCBnb2luZyB0byBzZWUgYW55IHJlbGV2YW50IGRlYnVnIGluZm9ybWF0aW9uIGZyb20gdGhhdCBtb2R1bGUuIEl0IG1pZ2h0IHNlZW0gYmFzaWMsIGJ1dCBpdCdzIGVzc2VudGlhbCB0byBub3Qgc2tpcCB0aGlzIHN0ZXAuIFRoaXMgY2hlY2sgbWFrZXMgc2Vuc2UgZnJvbSB0aGUgcGVyc3BlY3RpdmUgdGhhdCBpZiB0aGUgZmVhdHVyZSBpcyBub3QgY29uZmlndXJlZCwgaXQncyBhIGhhcmQgYmFycmllciB0byBzZWVpbmcgdGhlIGluZm9ybWF0aW9uIG5lZWRlZC4gSSdsbCBzZWFyY2ggdGhhdCBLY29uZmlnIG5vdy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjMyNDcsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDA1OjQ4OjQ2LjQxOTM3MjQ2N1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTMxMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMTQwLFxuICBcIkxpbmVDb3VudFwiOiAzNVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTQwOlxcdFxcdCAgYSBwbGF0Zm9ybSB0aGF0IGNhbiB0b2dnbGUgdGhlIFJGLUtpbGwgR1BJTy5cXG4gMTQxOlxcdFxcbiAxNDI6XFx0Y29uZmlnIEFUSDlLX0NIQU5ORUxfQ09OVEVYVFxcbiAxNDM6XFx0XFx0Ym9vbCBcXFwiQ2hhbm5lbCBDb250ZXh0IHN1cHBvcnRcXFwiXFxuIDE0NDpcXHRcXHRkZXBlbmRzIG9uIEFUSDlLXFxuIDE0NTpcXHRcXHRkZWZhdWx0IG5cXG4gMTQ2OlxcdFxcdGhlbHBcXG4gMTQ3OlxcdFxcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyBjaGFubmVsIGNvbnRleHQgc3VwcG9ydCBpbiBhdGg5aywgd2hpY2ggaXMgbmVlZGVkXFxuIDE0ODpcXHRcXHQgIGZvciBtdWx0aS1jaGFubmVsIGNvbmN1cnJlbmN5LiBFbmFibGUgdGhpcyBpZiBQMlAgUG93ZXJTYXZlIHN1cHBvcnRcXG4gMTQ5OlxcdFxcdCAgaXMgcmVxdWlyZWQuXFxuIDE1MDpcXHRcXG4gMTUxOlxcdGNvbmZpZyBBVEg5S19QQ09FTVxcbiAxNTI6XFx0XFx0Ym9vbCBcXFwiQXRoZXJvcyBhdGg5ayBzdXBwb3J0IGZvciBQQyBPRU0gY2FyZHNcXFwiIGlmIEVYUEVSVFxcbiAxNTM6XFx0XFx0ZGVwZW5kcyBvbiBBVEg5S1xcbiAxNTQ6XFx0XFx0ZGVmYXVsdCB5XFxuIDE1NTpcXHRcXG4gMTU2OlxcdGNvbmZpZyBBVEg5S19QQ0lfTk9fRUVQUk9NXFxuIDE1NzpcXHRcXHR0cmlzdGF0ZSBcXFwiQXRoZXJvcyBhdGg5ayBwY2kgbG9hZGVyIGZvciBFRVBST00tbGVzcyBjaGlwc1xcXCJcXG4gMTU4OlxcdFxcdGRlcGVuZHMgb24gQVRIOUtfUENJXFxuIDE1OTpcXHRcXHRkZWZhdWx0IG5cXG4gMTYwOlxcdFxcdGhlbHBcXG4gMTYxOlxcdFxcdCAgVGhpcyBzZXBhcmF0ZSBkcml2ZXIgcHJvdmlkZXMgYSBsb2FkZXIgaW4gb3JkZXIgdG8gc3VwcG9ydCB0aGVcXG4gMTYyOlxcdFxcdCAgQVI1MDBYIHRvIEFSOTJYWC1nZW5lcmF0aW9uIG9mIGF0aDlrIFBDSShlKSBXaUZpIGNoaXBzLCB3aGljaCBoYXZlXFxuIDE2MzpcXHRcXHQgIHRoZWlyIGluaXRpYWxpemF0aW9uIGRhdGEgKHdoaWNoIGNvbnRhaW5zIHRoZSByZWFsIFBDSSBEZXZpY2UgSURcXG4gMTY0OlxcdFxcdCAgdGhhdCBhdGg5ayB3aWxsIG5lZWQpIHN0b3JlZCB0b2dldGhlciB3aXRoIHRoZSBjYWxpYnJhdGlvbiBkYXRhIG91dFxcbiAxNjU6XFx0XFx0ICBvZiByZWFjaCBmb3IgdGhlIGF0aDlrIGNoaXAuXFxuIDE2NjpcXHRcXG4gMTY3OlxcdFxcdCAgVGhlc2UgZGV2aWNlcyBhcmUgdXN1YWxseSB2YXJpb3VzIG5ldHdvcmsgYXBwbGlhbmNlcywgcm91dGVycyBvclxcbiAxNjg6XFx0XFx0ICBhY2Nlc3MgUG9pbnRzIGFuZCBzdWNoLlxcbiAxNjk6XFx0XFxuIDE3MDpcXHRcXHQgIElmIHVuc3VyZSBzYXkgTi5cXG4gMTcxOlxcdFxcbiAxNzI6XFx0Y29uZmlnIEFUSDlLX0hUQ1xcbiAxNzM6XFx0XFx0dHJpc3RhdGUgXFxcIkF0aGVyb3MgSFRDIGJhc2VkIHdpcmVsZXNzIGNhcmRzIHN1cHBvcnRcXFwiXFxuIDE3NDpcXHRcXHRkZXBlbmRzIG9uIFVTQiBcXHUwMDI2XFx1MDAyNiBNQUM4MDIxMVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNTo0ODo0Ni40MTk1MjgyNzdaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzUxNjYyNTQ0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipIdW50aW5nIERvd24gQVRIOUtfREVCVUdGUyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB0cmFjayBkb3duIHRoZSBgQVRIOUtfREVCVUdGU2AgY29uZmlndXJhdGlvbiBvcHRpb24uIE15IGltbWVkaWF0ZSBzdHJhdGVneSBpcyB0byBqdW1wIGludG8gdGhlIGBLY29uZmlnYCBmaWxlcyDigJMgdGhhdCdzIHRoZSBjYW5vbmljYWwgcGxhY2UgdG8gZmluZCB0aGVzZSBzZXR0aW5ncyBhbmQgdGhlaXIgZGVwZW5kZW5jaWVzLiBJJ2xsIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0aGUgYGF0aDlrYCBkcml2ZXIgaXMgY29uZmlndXJlZCwgYW5kIGZyb20gdGhlcmUgbmF2aWdhdGUgdGhlIGRlcGVuZGVuY3kgY2hhaW4gdG8gbG9jYXRlIHRoZSByZWxldmFudCBvcHRpb24uIEhvcGVmdWxseSwgaXQncyBub3QgYnVyaWVkIHRvbyBkZWVwIHdpdGhpbiBhbiBvYnNjdXJlIHN1Yi1tZW51LiBUaW1lIHRvIGdldCB0byB3b3JrLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDA0NiwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDU6NDg6NDkuOTM2MTU3NjE1WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2ODgzMDQzNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQVRIOUtfREVCVUdGU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWtcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc9NDg9Y29uZmlnIEFUSDlLX0FIQlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6NTg6Y29uZmlnIEFUSDlLX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy01OS1cXHRib29sIFxcXCJBdGhlcm9zIGF0aDlrIGRlYnVnZ2luZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDU6NDg6NTAuMDA0OTkyMTcxWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIyMTQ3NzA0OTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgaG93IEknZCBhcHByb2FjaCB0aGF0OlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIEJ1aWxkIFByb2Nlc3MgZm9yIGBjb21tb24tc3BlY3RyYWwub2AgaW4gdGhlIGF0aDlrIFdpcmVsZXNzIERyaXZlcioqXG5cblJpZ2h0LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCBleGFjdGx5IGhvdyBgY29tbW9uLXNwZWN0cmFsLm9gIGdldHMgY29tcGlsZWQgd2l0aGluIHRoZSBgYXRoOWtgIHdpcmVsZXNzIGRyaXZlci4gVGhlIG1vc3QgbG9naWNhbCBwbGFjZSB0byBzdGFydCBpcyB0aGUgYE1ha2VmaWxlYCB3aXRoaW4gdGhlIHJlbGV2YW50IGRpcmVjdG9yeS4gU3BlY2lmaWNhbGx5LCBJJ20gZ29pbmcgdG8gbG9vayBhdCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlYC4gVGhhdCBmaWxlIGlzIHRoZSBjZW50cmFsIG9yY2hlc3RyYXRvciBmb3IgaG93IGFsbCB0aGUgY29tcG9uZW50cyB3aXRoaW4gdGhhdCBzcGVjaWZpYyBtb2R1bGUgYXJlIGJ1aWx0LiBJdCBzaG91bGQgY29udGFpbiB0aGUgcnVsZXMgb3IgaW5zdHJ1Y3Rpb25zIGRldGFpbGluZyB0aGUgY29tcGlsYXRpb24gcHJvY2VzcyBmb3IgYW55IG9iamVjdCBmaWxlcyB3aXRoaW4gdGhhdCBkaXJlY3RvcnkuIEknbSBleHBlY3RpbmcgdG8gZmluZCBlaXRoZXIgYSBkaXJlY3QgcnVsZSBmb3IgYGNvbW1vbi1zcGVjdHJhbC5vYCBvciwgbW9yZSBsaWtlbHksIGEgc2V0IG9mIHJ1bGVzIGFuZCBkZXBlbmRlbmNpZXMgdGhhdCB3aWxsIHVsdGltYXRlbHkgbGVhZCB0byBpdHMgY3JlYXRpb24uIFRpbWUgdG8gY3JhY2sgb3BlbiB0aGF0IE1ha2VmaWxlIGFuZCBzZWUgd2hhdCdzIHdoYXQuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBjb21wbGV0ZSB2aWV3IG9mIGFsbCBkZXBlbmRlbmNpZXMgYW5kIGxpbmtpbmcgc3RyYXRlZ2llcyB0byBmb3JtIHRoZSBjb21waWxlZCBtb2R1bGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0MzM5LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDU6NDg6NTIuMjE5NzY3MDE1WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MzI2NjcxNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb21tb24tc3BlY3RyYWxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZT02NT1hdGg5a19jb21tb24tJChDT05GSUdfQVRIOUtfQ09NTU9OX0RFQlVHKSArPSBjb21tb24tZGVidWcub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZTo2NjphdGg5a19jb21tb24tJChDT05GSUdfQVRIOUtfQ09NTU9OX1NQRUNUUkFMKSArPSBjb21tb24tc3BlY3RyYWwub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS02Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24uaC0yNi0jaW5jbHVkZSBcXFwiY29tbW9uLWRlYnVnLmhcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi5oOjI3OiNpbmNsdWRlIFxcXCJjb21tb24tc3BlY3RyYWwuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLmgtMjgtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDA1OjQ4OjUyLjI5MzAzODY0WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjMxMjY5OTAwMTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgYXRoOWtfaHRjIERyaXZlciBmb3IgRnV6emluZyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIGBhdGg5a19jb21tb25gIGdldHMgYnVpbHQgd2hlbiBgQVRIOUtfQ09NTU9OYCBpcyBlbmFibGVkLCB3aGljaCBpcyB0aWVkIHRvIGVpdGhlciBgQVRIOUtgIG9yIGBBVEg5S19IVENgLiBNYWtlcyBzZW5zZS4gSWYgYEFUSDlLX0NPTU1PTl9TUEVDVFJBTGAgaXMgdG9nZ2xlZCBvbiwgdGhlbiBgY29tbW9uLXNwZWN0cmFsLm9gIGdldHMgaW5jbHVkZWQgd2l0aGluIGBhdGg5a19jb21tb25gLiBHb29kLCB0aGF0J3MgZXhwZWN0ZWQuXG5cbk5vdywgYGF0aDlrX2h0Y2AgaXRzZWxmIGlzIGEgVVNCIGRyaXZlciwgd2hpY2ggbWVhbnMgaXQgaGluZ2VzIG9uIGBVU0JgIGFuZCBgTUFDODAyMTFgLCBvYnZpb3VzbHkuIFRoZSByZWFsIHF1ZXN0aW9uIGlzLCBjYW4gd2UgYWN0dWFsbHkgcmVhY2ggYGF0aDlrX2h0Y2AgZWZmZWN0aXZlbHkgaW4gc3l6a2FsbGVyIGZ1enppbmc/IEl0J3MgdGhlIHN0YW5kYXJkIHF1ZXN0aW9uIGZvciB0aGlzIHNvcnQgb2YgYW5hbHlzaXM6IGhvdyBhY2Nlc3NpYmxlIGlzIGl0P1xuXG5MZXQgbWUgcmVmZXIgYmFjayB0byB0aGUgU2VjdGlvbiAxLCAyLCAzIGNsYXNzaWZpY2F0aW9ucy4gRnJvbSB0aGUgZGVzY3JpcHRpb24sIGBhdGg5a19odGNgIGZhbGxzIHVuZGVyIHRoZSBjYXRlZ29yeSBvZiBkcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMsIHNwZWNpZmljYWxseSwgVVNCLiBUaGlzIHdvdWxkIG1lYW4gVVNCIGVtdWxhdGlvbiBsaWtlIHJhd19nYWRnZXQsIGR1bW15X2hjZCwgb3IsIGNydWNpYWxseSwgc3l6a2FsbGVyIFVTQiBmdXp6aW5nIGNhbiBiZSBsZXZlcmFnZWQuIEV4Y2VsbGVudCwgdGhhdCdzIGEgcG9zaXRpdmUgc2lnbi5cblxuQmV5b25kIHRoYXQsIHdlIGhhdmUgZGVidWdmcyBhbmQgcmVsYXkgaW50ZXJmYWNlcyB0byBleHBsb3JlLiBUaGUgc3BlY3RyYWwgc2NhbiBmdW5jdGlvbmFsaXR5IHdpdGhpbiB0aGUgZHJpdmVyIGNyZWF0ZXMgZGVidWdmcyBlbnRyaWVzIGxpa2UgYHNwZWN0cmFsX3NjYW5gLCBgc3BlY3RyYWxfc2Nhbl9jdGxgLCBhbmQgYHNwZWN0cmFsX2NvdW50YC4gSSBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byB3aGF0IGRlYnVnZnMgZmlsZXMgc3BlY2lmaWNhbGx5IHRoZSBgY29tbW9uLXNwZWN0cmFsYCBjb21wb25lbnQgZ2VuZXJhdGVzLiBUaGVzZSBpbnRlcmZhY2VzIG9mdGVuIHByb3ZpZGUgYSB2YWx1YWJsZSBwb2ludCBvZiBpbnRlcmFjdGlvbiBmb3IgZnV6emluZyBhbmQgYnVnIGRldGVjdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQ4MTYsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDU6NDg6NTUuNDIwMDMxOTI1WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MjcwNjc2NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZWJ1Z2ZzX2NyZWF0ZV9maWxlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM9MTAxOT1zdGF0aWMgc3RydWN0IGRlbnRyeSAqY3JlYXRlX2J1Zl9maWxlX2hhbmRsZXIoY29uc3QgY2hhciAqZmlsZW5hbWUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTAyNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6MTAyNzpcXHRidWZfZmlsZSA9IGRlYnVnZnNfY3JlYXRlX2ZpbGUoZmlsZW5hbWUsIG1vZGUsIHBhcmVudCwgYnVmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xMDI4LVxcdFxcdFxcdFxcdCAgICAgICBcXHUwMDI2cmVsYXlfZmlsZV9vcGVyYXRpb25zKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYz0xMDYxPXZvaWQgYXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTEwNzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjEwNzM6XFx0ZGVidWdmc19jcmVhdGVfZmlsZShcXFwic3BlY3RyYWxfc2Nhbl9jdGxcXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xMDc0LVxcdFxcdFxcdCAgICAwNjAwLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTEwNzYtXFx0XFx0XFx0ICAgIFxcdTAwMjZmb3BzX3NwZWNfc2Nhbl9jdGwpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzoxMDc3OlxcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXFxcInNwZWN0cmFsX3Nob3J0X3JlcGVhdFxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTEwNzgtXFx0XFx0XFx0ICAgIDA2MDAsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTA4MC1cXHRcXHRcXHQgICAgXFx1MDAyNmZvcHNfc3BlY3RyYWxfc2hvcnRfcmVwZWF0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6MTA4MTpcXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFxcXCJzcGVjdHJhbF9jb3VudFxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTEwODItXFx0XFx0XFx0ICAgIDA2MDAsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTA4NC1cXHRcXHRcXHQgICAgXFx1MDAyNmZvcHNfc3BlY3RyYWxfY291bnQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzoxMDg1OlxcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXFxcInNwZWN0cmFsX3BlcmlvZFxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTEwODYtXFx0XFx0XFx0ICAgIDA2MDAsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTA4OC1cXHRcXHRcXHQgICAgXFx1MDAyNmZvcHNfc3BlY3RyYWxfcGVyaW9kKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6MTA4OTpcXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFxcXCJzcGVjdHJhbF9mZnRfcGVyaW9kXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTA5MC1cXHRcXHRcXHQgICAgMDYwMCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDU6NDg6NTUuNTAyNzQ1NTY5WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjEwNzM5ODQ5MjE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIFNwZWN0cmFsIFNjYW4gUGFja2V0IFByb2Nlc3NpbmcgaW4gYXRoOWsgYW5kIGF0aDlrX2h0YyBEcml2ZXJzKipcblxuT2theSwgc28gaGVyZSdzIHRoZSBkZWFsLiBXaGVuIHNwZWN0cmFsIHNjYW5uaW5nIGlzIGVuYWJsZWQsIGVpdGhlciB0aHJvdWdoIHRoZSBgc3BlY3RyYWxfc2Nhbl9jdGxgIG9yIG1hYzgwMjExIGludGVyZmFjZXMsIGFuZCBwYWNrZXRzIGNvbWUgaW4gKHNwZWNpZmljYWxseSB2aWEgVVNCIGluIHRoZSBgYXRoOWtfaHRjYCBkcml2ZXIsIHdoaWNoIGlzIGNydWNpYWwgZm9yIG91ciBmdXp6aW5nIHN0cmF0ZWd5KSwgYGF0aF9jbW5fcHJvY2Vzc19mZnRgIGdldHMgY2FsbGVkLiBUaGlzIGZ1bmN0aW9uLCBpbiB0dXJuLCBjYWxscyBgYXRoX2Ntbl9jb3VudF9mZnRfc2FtcGxlYC4gSSBuZWVkIHRvIGVuc3VyZSB0aGlzIGlzIHVuZGVyc3Rvb2Qgd2l0aGluIHRoZSBjb250ZXh0IG9mIGRlYnVnZnMgZmlsZXMsIHdoaWNoIGFyZSBwcmltZSB0YXJnZXRzIGZvciBmdXp6aW5nLlxuXG5NeSBwcmltYXJ5IGZvY3VzIGhlcmUgaXMgdW5kZXJzdGFuZGluZyB3aGF0IGNoYW5nZWQgaW4gdGhpcyBjb2RlLiBUaGUga2V5IGZ1bmN0aW9ucyBJJ20gemVyb2luZyBpbiBvbiBhcmU6IGBhdGhfY21uX2NvdW50X2ZmdF9zYW1wbGVgIChzdGF0aWMgd2l0aGluIGBjb21tb24tc3BlY3RyYWwuY2ApLCBgYXRoX2Ntbl9wcm9jZXNzX2ZmdGAgKG5vbi1zdGF0aWMgYW5kIGFuIGV4cG9ydGVkIHN5bWJvbCBpbiBgY29tbW9uLXNwZWN0cmFsLmNgKSwgYGF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnYCAoYW5vdGhlciBleHBvcnRlZCBzeW1ib2wgZnJvbSBgY29tbW9uLXNwZWN0cmFsLmNgKSwgYGF0aDlrX2luaXRfZGVidWdgIChpbiBgZGVidWcuY2ApLCBhbmQgYGF0aDlrX2h0Y19pbml0X2RlYnVnYCAoaW4gYGh0Y19kcnZfZGVidWcuY2ApLiBJJ20gbG9va2luZyBmb3IgYW55IGFkZGVkIG9yIG1vZGlmaWVkIGZ1bmN0aW9uIGNhbGxzLCBhbmQgdGhlIHJlbGF0aW9uc2hpcHMgYmV0d2VlbiB0aGVtLlxuXG5UaGUgcGF0Y2ggaXRzZWxmIGlzIHRoZSBibHVlcHJpbnQgaGVyZS4gSXQgbG9va3MgbGlrZSBgYXRoX2Ntbl9jb3VudF9mZnRfc2FtcGxlYCBpcyBub3cgYmVpbmcgdXNlZCB0byBpbmNyZW1lbnQgYHJ4X3NwZWN0cmFsX3NhbXBsZV9nb29kYCBvciBgcnhfc3BlY3RyYWxfc2FtcGxlX2VycmAgd2l0aGluIGBhdGhfY21uX3Byb2Nlc3NfZmZ0YCBkZXBlbmRpbmcgb24gdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgRkZUIGhhbmRsZXIuIFRoaXMgaXMgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgYmVjYXVzZSB0aGF0IGxvZ2ljIGlzIGRpcmVjdGx5IGV4cG9zZWQgdG8gZnV6emluZy4gQSBrZXkgbW9kaWZpY2F0aW9uIHNlZW1zIHRvIGJlIHRoZSBhZGRpdGlvbiBvZiBhIGBzdHJ1Y3QgYXRoX3J4X3N0YXRzICpyeF9zdGF0c2AgcG9pbnRlci4gVGhpcyBnZXRzIHNldCB1cCB3aXRoaW4gZGVidWcgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb25zOiBzcGVjaWZpY2FsbHksIGBhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1Z2Agbm93IGFjY2VwdHMgYHJ4X3N0YXRzYCBhcyBhbiBhcmd1bWVudCBhbmQgaXQgbm93IHRha2VzIGFuZCBzZXRzIGBzcGVjX3ByaXYtXHUwMDNlcnhfc3RhdHNgIGluIGl0cyBpbml0aWFsaXphdGlvbiByb3V0aW5lICh3aGljaCBpcyBhIGNvcmUgY2hhbmdlKS4gSXQgaXMgYWxzbyBjYWxsZWQgZHVyaW5nIGBhdGg5a19pbml0X2RlYnVnYCBhbmQgYGF0aDlrX2h0Y19pbml0X2RlYnVnYC5cblxuTm93LCB0aGUgaW1wb3J0YW50IHBhcnQ6IGlzIHRoaXMgcmVhY2hhYmxlPyBZZXMsIHVzaW5nIFVTQiBlbXVsYXRpb24sIHN5emthbGxlciBhbmQgcmF3X2dhZGdldCwgb3IgZHVtbXlfaGNkIHdoaWNoIGlzIHdpdGhpbiBvdXIgcmVhY2ggZm9yIHRoZSBgYXRoOWtfaHRjYCBkcml2ZXIuICBUaGUgY3JpdGljYWwgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlcXVpcmVkIGFyZSBgQVRIOUtfSFRDYCwgYEFUSDlLX0hUQ19ERUJVR0ZTYCwgYEFUSDlLX0NPTU1PTl9TUEVDVFJBTGAsIGBBVEg5S2AsIGBBVEg5S19ERUJVR0ZTYCwgYFVTQmAsIGFuZCBgTUFDODAyMTFgLlxuXG5XZSBuZWVkIHRvIGVuc3VyZSB0aGF0IHRoZSBrZXkgZnVuY3Rpb25zIChgYXRoX2Ntbl9wcm9jZXNzX2ZmdGAsIGBhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1Z2AsIGBhdGg5a19odGNfaW5pdF9kZWJ1Z2AsIGFuZCBgYXRoOWtfaW5pdF9kZWJ1Z2ApIGFyZSBub3QgbGlmZWN5Y2xlIGZ1bmN0aW9ucywgYW5kIHNwZWNpZmljIHRvIHRoZSBoYW5kbGluZyBvZiBzcGVjdHJhbCBzY2FuIGFuZCBkZWJ1Z2ZzLiAgVGhpcyBkZXRhaWxlZCBhbmFseXNpcyBkZW1vbnN0cmF0ZXMgdGhhdCB0aGlzIGlzLCBpbiBmYWN0LCB0aGUgY2FzZS4gYGF0aF9jbW5fcHJvY2Vzc19mZnRgIGlzIGRpcmVjdGx5IGhhbmRsaW5nIEZGVCBmcmFtZXMsIGFuZCBkZWJ1ZyBpbml0aWFsaXphdGlvbiBmdW5jdGlvbnMgdGllIHRoaXMgcHJvY2VzcyB0byBkZWJ1ZyBpbnRlcmZhY2VzLiAgVGhlIHBhdGNoIG1vZGlmaWVzIHN0YXRzIHRyYWNraW5nIHdpdGggdGhlIGFkZGVkIHBvaW50ZXIsIGFuZCB0aGF0IGFkZHMgYSBzcGVjaWZpYyBmdXp6aW5nIHRhcmdldC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjYxODIsIk91dHB1dFRva2VucyI6MTk1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzIzNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNTo0OTowNi4yNDI1OTk1NzNaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTMwNjY1NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkFUSDlLX0NPTU1PTl9TUEVDVFJBTFwiLFxuICAgIFwiQVRIOUtfSFRDX0RFQlVHRlNcIixcbiAgICBcIkFUSDlLX0hUQ1wiLFxuICAgIFwiQVRIOUtfREVCVUdGU1wiLFxuICAgIFwiQVRIOUtcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJhdGhfY21uX3Byb2Nlc3NfZmZ0XCIsXG4gICAgXCJhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1Z1wiLFxuICAgIFwiYXRoOWtfaHRjX2luaXRfZGVidWdcIixcbiAgICBcImF0aDlrX2luaXRfZGVidWdcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgc3BlY3RyYWwgc2NhbiBkZWJ1ZyBpbml0aWFsaXphdGlvbiBhbmQgRkZUIHNhbXBsZSBwcm9jZXNzaW5nIGluIHRoZSBhdGg5ayBhbmQgYXRoOWtfaHRjIGRyaXZlcnMuIGF0aDlrX2h0YyBpcyBhIFVTQi1iYXNlZCB3aXJlbGVzcyBkcml2ZXIgYWNjZXNzaWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIFVTQiBlbXVsYXRpb24uIFRoZSBjaGFuZ2VzIGFsdGVyIGhvdyBzcGVjdHJhbCBzYW1wbGUgc3RhdGlzdGljcyBhcmUgdHJhY2tlZCBhbmQgaW5pdGlhbGl6ZWQgYWNyb3NzIGRyaXZlcnMgc2hhcmluZyBjb21tb24gc3BlY3RyYWwgc2NhbiBjb2RlLCBtYWtpbmcgaXQgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJBVEg5S19DT01NT05fU1BFQ1RSQUxcIixcbiAgICBcIkFUSDlLX0hUQ19ERUJVR0ZTXCIsXG4gICAgXCJBVEg5S19IVENcIixcbiAgICBcIkFUSDlLX0RFQlVHRlNcIixcbiAgICBcIkFUSDlLXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYXRoX2Ntbl9wcm9jZXNzX2ZmdFwiLFxuICAgIFwiYXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWdcIixcbiAgICBcImF0aDlrX2h0Y19pbml0X2RlYnVnXCIsXG4gICAgXCJhdGg5a19pbml0X2RlYnVnXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHNwZWN0cmFsIHNjYW4gZGVidWcgaW5pdGlhbGl6YXRpb24gYW5kIEZGVCBzYW1wbGUgcHJvY2Vzc2luZyBpbiB0aGUgYXRoOWsgYW5kIGF0aDlrX2h0YyBkcml2ZXJzLiBhdGg5a19odGMgaXMgYSBVU0ItYmFzZWQgd2lyZWxlc3MgZHJpdmVyIGFjY2Vzc2libGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBVU0IgZW11bGF0aW9uLiBUaGUgY2hhbmdlcyBhbHRlciBob3cgc3BlY3RyYWwgc2FtcGxlIHN0YXRpc3RpY3MgYXJlIHRyYWNrZWQgYW5kIGluaXRpYWxpemVkIGFjcm9zcyBkcml2ZXJzIHNoYXJpbmcgY29tbW9uIHNwZWN0cmFsIHNjYW4gY29kZSwgbWFraW5nIGl0IHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDA1OjQ5OjA2LjM5NTY3MzgzM1oiLCJTZXEiOjIxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODAzMTk5OTQ4MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDA1OjQ5OjA2LjM5NjI0ODg4M1oiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjgwMzE0MTkxNDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgdHlwZSBjb25mdXNpb24gaXNzdWUgYmV0d2VlbiBhdGg5ayBhbmQgYXRoOWtfaHRjIGRyaXZlcnMgaW4gc2hhcmVkIHNwZWN0cmFsIHNjYW5uaW5nIGNvZGUgKGNvbW1vbi1zcGVjdHJhbC5jKSwgd2hlcmUgY29tbW9uLVxcdTAwM2Vwcml2IHdhcyBwcmV2aW91c2x5IGNhc3QgdW5jb25kaXRpb25hbGx5IHRvIHN0cnVjdCBhdGhfc29mdGMgKi4gVGhlIGZpeCBwYXNzZXMgdGhlIGRyaXZlci1zcGVjaWZpYyBhdGhfcnhfc3RhdHMgcG9pbnRlciBkdXJpbmcgZGVidWcgaW5pdGlhbGl6YXRpb24gYW5kIGluY3JlbWVudHMgc3RhdHMgdGhyb3VnaCBzcGVjX3ByaXYtXFx1MDAzZXJ4X3N0YXRzIHdpdGggYSBOVUxMIGNoZWNrLlxcblxcblRoaXMgY2hhbmdlIG9ubHkgYWZmZWN0cyBwb2ludGVyIGFzc2lnbm1lbnQgYW5kIHN0YXRpc3RpYyBjb3VudGVyIGluY3JlbWVudHMuIEl0IGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnksIGFsbG9jYXRlIHVuaW5pdGlhbGl6ZWQgYnVmZmVycywgb3IgcGVyZm9ybSBjb3BpZXMgdG8gdXNlciBzcGFjZSBvZiB1bmluaXRpYWxpemVkIGRhdGEuIEFueSBtZW1vcnkgc2FmZXR5IGNvbmNlcm5zIChzdWNoIGFzIGludmFsaWQgcG9pbnRlciBkZXJlZmVyZW5jZXMgb3IgdHlwZSBjb25mdXNpb24pIGFyZSBhZGVxdWF0ZWx5IGNvdmVyZWQgYnkgS0FTQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMjkzN2U4NTRiODY1NWIxMmU1YjJkMWNiNzY0ZDAwYWJmZTRmOWViMFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gU2VwIDYgMDU6NDc6MzEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmNcbmluZGV4IGNhMDFhMDdmNjYzMGMuLmQ4YmUyNGViY2QyNDcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuY1xuQEAgLTQ2NSw2ICs0NjUsMjAgQEAgYXRoX2Ntbl9pc19mZnRfYnVmX2Z1bGwoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2KVxuIFx0XHRyZXR1cm4gMDtcbiB9XG4gXG4rc3RhdGljIHZvaWQgYXRoX2Ntbl9jb3VudF9mZnRfc2FtcGxlKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdixcbitcdFx0XHRcdCAgICAgaW50IHJldClcbit7XG4rXHRzdHJ1Y3QgYXRoX3J4X3N0YXRzICpyeF9zdGF0cyA9IHNwZWNfcHJpdi1cdTAwM2VyeF9zdGF0cztcbitcbitcdGlmICghcnhfc3RhdHMpXG4rXHRcdHJldHVybjtcbitcbitcdGlmIChyZXQgPT0gMClcbitcdFx0cnhfc3RhdHMtXHUwMDNlcnhfc3BlY3RyYWxfc2FtcGxlX2dvb2QrKztcbitcdGVsc2VcbitcdFx0cnhfc3RhdHMtXHUwMDNlcnhfc3BlY3RyYWxfc2FtcGxlX2VycisrO1xuK31cbitcbiAvKiByZXR1cm5zIDEgaWYgdGhpcyB3YXMgYSBzcGVjdHJhbCBmcmFtZSwgZXZlbiBpZiBub3QgaGFuZGxlZC4gKi9cbiBpbnQgYXRoX2Ntbl9wcm9jZXNzX2ZmdChzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsIHN0cnVjdCBpZWVlODAyMTFfaGRyICpoZHIsXG4gXHRcdCAgICBzdHJ1Y3QgYXRoX3J4X3N0YXR1cyAqcnMsIHU2NCB0c2YpXG5AQCAtNDcyLDcgKzQ4Niw2IEBAIGludCBhdGhfY21uX3Byb2Nlc3NfZmZ0KHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiwgc3RydWN0IGllZWU4MDIxMV9oXG4gXHR1OCBzYW1wbGVfYnVmW1NQRUNUUkFMX1NBTVBMRV9NQVhfTEVOXSA9IHswfTtcbiBcdHN0cnVjdCBhdGhfaHcgKmFoID0gc3BlY19wcml2LVx1MDAzZWFoO1xuIFx0c3RydWN0IGF0aF9jb21tb24gKmNvbW1vbiA9IGF0aDlrX2h3X2NvbW1vbihzcGVjX3ByaXYtXHUwMDNlYWgpO1xuLVx0c3RydWN0IGF0aF9zb2Z0YyAqc2MgPSBjb21tb24tXHUwMDNlcHJpdjtcbiBcdHU4IG51bV9iaW5zLCAqdmRhdGEgPSAodTggKiloZHI7XG4gXHRzdHJ1Y3QgYXRoX3JhZGFyX2luZm8gKnJhZGFyX2luZm87XG4gXHRpbnQgbGVuID0gcnMtXHUwMDNlcnNfZGF0YWxlbjtcbkBAIC02MjQsMTAgKzYzNyw3IEBAIGludCBhdGhfY21uX3Byb2Nlc3NfZmZ0KHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiwgc3RydWN0IGllZWU4MDIxMV9oXG4gXHRcdFx0XHRyZXQgPSBmZnRfaGFuZGxlcihycywgc3BlY19wcml2LCBzYW1wbGVfYnVmLFxuIFx0XHRcdFx0XHRcdCAgdHNmLCBmcmVxLCBjaGFuX3R5cGUpO1xuIFxuLVx0XHRcdFx0aWYgKHJldCA9PSAwKVxuLVx0XHRcdFx0XHRSWF9TVEFUX0lOQyhzYywgcnhfc3BlY3RyYWxfc2FtcGxlX2dvb2QpO1xuLVx0XHRcdFx0ZWxzZVxuLVx0XHRcdFx0XHRSWF9TVEFUX0lOQyhzYywgcnhfc3BlY3RyYWxfc2FtcGxlX2Vycik7XG4rXHRcdFx0XHRhdGhfY21uX2NvdW50X2ZmdF9zYW1wbGUoc3BlY19wcml2LCByZXQpO1xuIFxuIFx0XHRcdFx0LyogTWl4IHRoZSByZWNlaXZlZCBiaW5zIHRvIHRoZSAvZGV2L3JhbmRvbVxuIFx0XHRcdFx0ICogcG9vbFxuQEAgLTY0MiwxMCArNjUyLDcgQEAgaW50IGF0aF9jbW5fcHJvY2Vzc19mZnQoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LCBzdHJ1Y3QgaWVlZTgwMjExX2hcbiBcdFx0XHRcdHJldCA9IGZmdF9oYW5kbGVyKHJzLCBzcGVjX3ByaXYsIHNhbXBsZV9zdGFydCxcbiBcdFx0XHRcdFx0XHQgIHRzZiwgZnJlcSwgY2hhbl90eXBlKTtcbiBcbi1cdFx0XHRcdGlmIChyZXQgPT0gMClcbi1cdFx0XHRcdFx0UlhfU1RBVF9JTkMoc2MsIHJ4X3NwZWN0cmFsX3NhbXBsZV9nb29kKTtcbi1cdFx0XHRcdGVsc2Vcbi1cdFx0XHRcdFx0UlhfU1RBVF9JTkMoc2MsIHJ4X3NwZWN0cmFsX3NhbXBsZV9lcnIpO1xuK1x0XHRcdFx0YXRoX2Ntbl9jb3VudF9mZnRfc2FtcGxlKHNwZWNfcHJpdiwgcmV0KTtcbiBcbiBcdFx0XHRcdC8qIE1peCB0aGUgcmVjZWl2ZWQgYmlucyB0byB0aGUgL2Rldi9yYW5kb21cbiBcdFx0XHRcdCAqIHBvb2xcbkBAIC0xMDUyLDggKzEwNTksMTAgQEAgdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfZGVpbml0X2RlYnVnKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdilcbiBFWFBPUlRfU1lNQk9MKGF0aDlrX2Ntbl9zcGVjdHJhbF9kZWluaXRfZGVidWcpO1xuIFxuIHZvaWQgYXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LFxuLVx0XHRcdFx0ICAgc3RydWN0IGRlbnRyeSAqZGVidWdmc19waHkpXG4rXHRcdFx0XHQgICBzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX3BoeSxcbitcdFx0XHRcdCAgIHN0cnVjdCBhdGhfcnhfc3RhdHMgKnJ4X3N0YXRzKVxuIHtcbitcdHNwZWNfcHJpdi1cdTAwM2VyeF9zdGF0cyA9IHJ4X3N0YXRzO1xuIFx0c3BlY19wcml2LVx1MDAzZXJmc19jaGFuX3NwZWNfc2NhbiA9IHJlbGF5X29wZW4oXCJzcGVjdHJhbF9zY2FuXCIsXG4gXHRcdFx0XHRcdCAgICBkZWJ1Z2ZzX3BoeSxcbiBcdFx0XHRcdFx0ICAgIDEwMjQsIDI1NiwgXHUwMDI2cmZzX3NwZWNfc2Nhbl9jYixcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmhcbmluZGV4IDAxMWQ4YWI4Yjk3NDQuLjBlMmM3ZDZkMzQ4NzQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmhcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaFxuQEAgLTk0LDEyICs5NCwxNiBAQCBzdHJ1Y3QgYXRoX2h0MjBfNDBfZmZ0X3BhY2tldCB7XG4gXHRzdHJ1Y3QgYXRoX3JhZGFyX2luZm8gcmFkYXJfaW5mbztcbiB9IF9fcGFja2VkO1xuIFxuK3N0cnVjdCBhdGhfcnhfc3RhdHM7XG4rXG4gc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiB7XG4gXHRzdHJ1Y3QgYXRoX2h3ICphaDtcbiBcdC8qIHJlbGF5KGZzKSBjaGFubmVsIGZvciBzcGVjdHJhbCBzY2FuICovXG4gXHRzdHJ1Y3QgcmNoYW4gKnJmc19jaGFuX3NwZWNfc2NhbjtcbiBcdGVudW0gc3BlY3RyYWxfbW9kZSBzcGVjdHJhbF9tb2RlO1xuIFx0c3RydWN0IGF0aF9zcGVjX3NjYW4gc3BlY19jb25maWc7XG4rXHQvKiBkcml2ZXIncyBSWCBzdGF0aXN0aWNzIHRvIGFjY291bnQgc2FtcGxlcyBpbnRvLCBpZiBhbnkgKi9cbitcdHN0cnVjdCBhdGhfcnhfc3RhdHMgKnJ4X3N0YXRzO1xuIH07XG4gXG4gI2RlZmluZSBTUEVDVFJBTF9IVDIwXzQwX1RPVEFMX0RBVEFfTEVOXHQoc2l6ZW9mKHN0cnVjdCBhdGhfaHQyMF80MF9mZnRfcGFja2V0KSlcbkBAIC0xNjksNyArMTczLDkgQEAgc3RhdGljIGlubGluZSB1OCBzcGVjdHJhbF9iaXRtYXBfd2VpZ2h0KHU4ICpiaW5zKVxuIH1cbiBcbiAjaWZkZWYgQ09ORklHX0FUSDlLX0NPTU1PTl9TUEVDVFJBTFxuLXZvaWQgYXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LCBzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX3BoeSk7XG4rdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsXG4rXHRcdFx0XHQgICBzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX3BoeSxcbitcdFx0XHRcdCAgIHN0cnVjdCBhdGhfcnhfc3RhdHMgKnJ4X3N0YXRzKTtcbiB2b2lkIGF0aDlrX2Ntbl9zcGVjdHJhbF9kZWluaXRfZGVidWcoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2KTtcbiBcbiB2b2lkIGF0aDlrX2Ntbl9zcGVjdHJhbF9zY2FuX3RyaWdnZXIoc3RydWN0IGF0aF9jb21tb24gKmNvbW1vbixcbkBAIC0xODEsNyArMTg3LDggQEAgaW50IGF0aF9jbW5fcHJvY2Vzc19mZnQoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LCBzdHJ1Y3QgaWVlZTgwMjExX2hcbiBcdFx0ICAgIHN0cnVjdCBhdGhfcnhfc3RhdHVzICpycywgdTY0IHRzZik7XG4gI2Vsc2VcbiBzdGF0aWMgaW5saW5lIHZvaWQgYXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LFxuLVx0XHRcdFx0XHRcdCBzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX3BoeSlcbitcdFx0XHRcdFx0XHQgc3RydWN0IGRlbnRyeSAqZGVidWdmc19waHksXG4rXHRcdFx0XHRcdFx0IHN0cnVjdCBhdGhfcnhfc3RhdHMgKnJ4X3N0YXRzKVxuIHtcbiB9XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2RlYnVnLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGVidWcuY1xuaW5kZXggNzRhMDEzNDA3NWNmOS4uMDQyYTRmNTQyYTk0MyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZWJ1Zy5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGVidWcuY1xuQEAgLTEzODksNyArMTM4OSw4IEBAIGludCBhdGg5a19pbml0X2RlYnVnKHN0cnVjdCBhdGhfaHcgKmFoKVxuIFxuIFx0YXRoOWtfZGZzX2luaXRfZGVidWcoc2MpO1xuIFx0YXRoOWtfdHg5OV9pbml0X2RlYnVnKHNjKTtcbi1cdGF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnKFx1MDAyNnNjLVx1MDAzZXNwZWNfcHJpdiwgc2MtXHUwMDNlZGVidWcuZGVidWdmc19waHkpO1xuK1x0YXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoXHUwMDI2c2MtXHUwMDNlc3BlY19wcml2LCBzYy1cdTAwM2VkZWJ1Zy5kZWJ1Z2ZzX3BoeSxcbitcdFx0XHRcdCAgICAgIFx1MDAyNnNjLVx1MDAzZWRlYnVnLnN0YXRzLnJ4c3RhdHMpO1xuIFxuIFx0ZGVidWdmc19jcmVhdGVfZGV2bV9zZXFmaWxlKHNjLVx1MDAzZWRldiwgXCJkbWFcIiwgc2MtXHUwMDNlZGVidWcuZGVidWdmc19waHksXG4gXHRcdFx0XHQgICAgcmVhZF9maWxlX2RtYSk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmNcbmluZGV4IDk0MzdkNjk4NzdjYzUuLjlkMzU0YjFkOTI5YzggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jXG5AQCAtNDg3LDcgKzQ4Nyw4IEBAIGludCBhdGg5a19odGNfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX2h3ICphaClcbiBcdHByaXYtXHUwMDNlZGVidWcuZGVidWdmc19waHkgPSBkZWJ1Z2ZzX2NyZWF0ZV9kaXIoS0JVSUxEX01PRE5BTUUsXG4gXHRcdFx0XHRcdCAgICAgcHJpdi1cdTAwM2Vody1cdTAwM2V3aXBoeS1cdTAwM2VkZWJ1Z2ZzZGlyKTtcbiBcbi1cdGF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnKFx1MDAyNnByaXYtXHUwMDNlc3BlY19wcml2LCBwcml2LVx1MDAzZWRlYnVnLmRlYnVnZnNfcGh5KTtcbitcdGF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnKFx1MDAyNnByaXYtXHUwMDNlc3BlY19wcml2LCBwcml2LVx1MDAzZWRlYnVnLmRlYnVnZnNfcGh5LFxuK1x0XHRcdFx0ICAgICAgXHUwMDI2cHJpdi1cdTAwM2VkZWJ1Zy5yeF9zdGF0cyk7XG4gXG4gXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFwidGd0X2ludF9zdGF0c1wiLCAwNDAwLCBwcml2LVx1MDAzZWRlYnVnLmRlYnVnZnNfcGh5LFxuIFx0XHRcdCAgICBwcml2LCBcdTAwMjZmb3BzX3RndF9pbnRfc3RhdHMpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDU6NDk6MDYuMzk2MjQ5OTYzWiIsIlNlcSI6MjMsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjgwMzEzOTIzNzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgdGhlIFdpcmVsZXNzIFBhdGNoOiBLTVNBTiBBc3Nlc3NtZW50KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBwYXRjaCBkb3duLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCB0aGlzIGlzIGEgZml4IHJlbGF0ZWQgdG8gc2hhcmVkIGNvZGUgYmV0d2VlbiB0aGUgYGF0aDlrYCBhbmQgYGF0aDlrX2h0Y2AgZHJpdmVycy4gVGhlIGNvcmUgaXNzdWUgcmV2b2x2ZXMgYXJvdW5kIGhvdyB0aGUgYGNvbW1vbi1zcGVjdHJhbC5jYCBtb2R1bGUsIHVzZWQgYnkgYm90aCwgd2FzIGluY29ycmVjdGx5IGFzc3VtaW5nIHRoZSB0eXBlIG9mIGBjb21tb24tXHUwMDNlcHJpdmAuIFRoaXMgcG9pbnRlciB3YXMgYmVpbmcgY2FzdCB0byBgc3RydWN0IGF0aF9zb2Z0YyAqYCwgYnV0IGluIHRoZSBgYXRoOWtfaHRjYCBjYXNlLCBpdCdzIGFjdHVhbGx5IHNvbWV0aGluZyBkaWZmZXJlbnQgKGEgYHN0cnVjdCBhdGg5a19odGNfcHJpdmAgb3Igc2ltaWxhciksIGxlYWRpbmcgdG8gb3V0LW9mLWJvdW5kcyByZWFkcy93cml0ZXMgd2hlbiBhY2Nlc3NpbmcgdGhlIHN0YXRpc3RpY3Mgc3RydWN0dXJlLiBCYXNpY2FsbHksIGEgY2xhc3NpYyB0eXBlIGNvbmZ1c2lvbiB2dWxuZXJhYmlsaXR5LlxuXG5UaGUgcGF0Y2ggcmVzb2x2ZXMgdGhpcyBieSBwYXNzaW5nIHRoZSBgc3RydWN0IGF0aF9yeF9zdGF0cyAqYCBwb2ludGVyIGRpcmVjdGx5IHRvIGBhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1Z2AuICBUaGlzIHBvaW50ZXIgdGhlbiBnZXRzIHN0b3JlZCBpbiBgc3BlY19wcml2LVx1MDAzZXJ4X3N0YXRzYCwgYW5kIHRoaXMgaXMgdXNlZCBmb3IgY291bnRlciBpbmNyZW1lbnRzIGluIGBhdGhfY21uX2NvdW50X2ZmdF9zYW1wbGVgLiBJbiBgYXRoOWtgLCB0aGlzIHBvaW50ZXIgY29tZXMgZnJvbSBgc2MtXHUwMDNlZGVidWcuc3RhdHMucnhzdGF0c2AsIGFuZCBpbiBgYXRoOWtfaHRjYCwgaXQgY29tZXMgZnJvbSBgcHJpdi1cdTAwM2VkZWJ1Zy5yeF9zdGF0c2AuIFRoZSBjcnVjaWFsIHRoaW5nIGhlcmUgaXMgdGhhdCB0aGUgcG9pbnRlciBpcyBleHBsaWNpdGx5IHBhc3NlZCwgbm90IGltcGxpY2l0bHkgZGVyaXZlZCB0aHJvdWdoIGEgcG90ZW50aWFsbHkgaW5jb3JyZWN0IHR5cGUgY2FzdC5cblxuTXkgbWFpbiBmb2N1cyBub3cgaXMgb24gbWVtb3J5IHNhZmV0eS4gRG9lcyB0aGlzIGludHJvZHVjZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWVzPyAgSSd2ZSBjaGVja2VkOiB0aGlzIHBhdGNoIGRvZXNuJ3QgY29weSB1bmluaXRpYWxpemVkIG1lbW9yeSB0byB1c2VyIHNwYWNlLCBpdCBkb2Vzbid0IHJlYWQgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMgb3Igc3RydWN0IGZpZWxkcyAoYmVjYXVzZSBgcnhfc3RhdHNgIGlzIGluaXRpYWxpemVkIGFuZCBjaGVja2VkKS4gSXQgZG9lc24ndCBtb2RpZnkgY29uZGl0aW9uYWwgbG9naWMgYmFzZWQgb24gdW5pbml0aWFsaXplZCBkYXRhLiBUaGUgYHJ4X3N0YXRzYCBwb2ludGVyIGl0c2VsZiBpcyBpbml0aWFsaXplZC4gVGhpcyBpcyBhIHZlcnkgdGFyZ2V0ZWQgZml4LCBhbmQgdGhlcmUgYXJlIG5vIG5ldyByaXNrcyBmcm9tIHVuaW5pdGlhbGl6ZWQgZGF0YS5cblxuTGV0IG1lIGNvbXBhcmUgdGhlIGJlZm9yZSBhbmQgYWZ0ZXIsIHRvIGJlIGNlcnRhaW46IEJlZm9yZSwgYGNvbW1vbi1cdTAwM2Vwcml2YCB3YXMgYmVpbmcgY2FzdCB0byBgc3RydWN0IGF0aF9zb2Z0YyAqc2NgLCBhbmQgdGhlIGNvZGUgd291bGQgaW5jcmVtZW50IHRoZSBzdGF0aXN0aWNzIGRpcmVjdGx5LiBJbiBgYXRoOWtfaHRjYCwgdGhpcyBjYXVzZWQgYW4gaW52YWxpZCBtZW1vcnkgYWNjZXNzLiBOb3csIHdlJ3JlIHBhc3NpbmcgdGhlIGNvcnJlY3QgcG9pbnRlciwgYHJ4X3N0YXRzYCB3aGljaCBwb2ludHMgdG8gYHNjLVx1MDAzZWRlYnVnLnN0YXRzLnJ4c3RhdHNgIG9yIGBwcml2LVx1MDAzZWRlYnVnLnJ4X3N0YXRzYC4gVGhlIGNvcmUgZnVuY3Rpb25hbGl0eSAoaW5jcmVtZW50aW5nIGNvdW50ZXJzKSByZW1haW5zLCBidXQgdGhlIG1lbW9yeSBhY2Nlc3MgaXMgbm93IGRvbmUgd2l0aCBhIGNvcnJlY3QgcG9pbnRlci5cblxuTm93LCBsZXQncyBhZGRyZXNzIEtNU0FOIGRpcmVjdGx5LiBUaGUgYE5lZWRzS01TQU5gIHJ1bGUgc3RhdGVzIGl0J3MgKipmYWxzZSoqIGlmIHRoZSBwYXRjaCBwcmltYXJpbHkgZml4ZXMgaXNzdWVzIGxpa2Ugb3V0LW9mLWJvdW5kcyBhY2Nlc3MgKHdoaWNoIGl0IGRvZXMpLCBhbmQgaWYgYWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyBhcmUgaW5pdGlhbGl6ZWQuICBFdmVyeXRoaW5nIGhlcmUgKmlzKiBpbml0aWFsaXplZC4gV2UgYXJlbid0IHJlYWRpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZXJlJ3Mgbm8gaW5mby1sZWFrIHJpc2suIFNvLCB0aGUgcGF0Y2ggbWVldHMgdGhlIGNvbmRpdGlvbnMgZm9yIGBOZWVkc0tNU0FOPWZhbHNlYC4gU3RhbmRhcmQgc2FuaXRpemVycyBhbmQgS0FTQU4gd2lsbCBjYXRjaCB0aGUgcHJvYmxlbXMgYWRkcmVzc2VkIGJ5IHRoaXMgcGF0Y2guXG5cbk15IGNvbmNsdXNpb24gaXMgY2xlYXI6IFRoaXMgcGF0Y2ggaXMgYSBtZW1vcnkgc2FmZXR5IGltcHJvdmVtZW50LiBJdCBmaXhlcyBhIHR5cGUgY29uZnVzaW9uLCBwcmV2ZW50aW5nIG91dC1vZi1ib3VuZHMgcmVhZHMvd3JpdGVzIGFuZCBwb3RlbnRpYWwgY3Jhc2hlcy4gIEtNU0FOIGlzbid0IG5lY2Vzc2FyeSBoZXJlOyBLQVNBTiBhbmQgc3RhbmRhcmQgc2FuaXRpemVycyBoYW5kbGUgdGhlIHJpc2tzLiAgTGV0J3Mgc2V0IHRoZSByZXN1bHRzIGFuZCBtb3ZlIG9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjY5LCJPdXRwdXRUb2tlbnMiOjE3OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyNDEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNTo0OToxNC40Mjc2NDUzNTVaIiwiU2VxIjoyNCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTkxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgdHlwZSBjb25mdXNpb24gaXNzdWUgYmV0d2VlbiBhdGg5ayBhbmQgYXRoOWtfaHRjIGRyaXZlcnMgaW4gc2hhcmVkIHNwZWN0cmFsIHNjYW5uaW5nIGNvZGUgKGNvbW1vbi1zcGVjdHJhbC5jKSwgd2hlcmUgY29tbW9uLVxcdTAwM2Vwcml2IHdhcyBwcmV2aW91c2x5IGNhc3QgdW5jb25kaXRpb25hbGx5IHRvIHN0cnVjdCBhdGhfc29mdGMgKi4gVGhlIGZpeCBwYXNzZXMgdGhlIGRyaXZlci1zcGVjaWZpYyBhdGhfcnhfc3RhdHMgcG9pbnRlciBkdXJpbmcgZGVidWcgaW5pdGlhbGl6YXRpb24gYW5kIGluY3JlbWVudHMgc3RhdHMgdGhyb3VnaCBzcGVjX3ByaXYtXFx1MDAzZXJ4X3N0YXRzIHdpdGggYSBOVUxMIGNoZWNrLlxcblxcblRoaXMgY2hhbmdlIG9ubHkgYWZmZWN0cyBwb2ludGVyIGFzc2lnbm1lbnQgYW5kIHN0YXRpc3RpYyBjb3VudGVyIGluY3JlbWVudHMuIEl0IGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnksIGFsbG9jYXRlIHVuaW5pdGlhbGl6ZWQgYnVmZmVycywgb3IgcGVyZm9ybSBjb3BpZXMgdG8gdXNlciBzcGFjZSBvZiB1bmluaXRpYWxpemVkIGRhdGEuIEFueSBtZW1vcnkgc2FmZXR5IGNvbmNlcm5zIChzdWNoIGFzIGludmFsaWQgcG9pbnRlciBkZXJlZmVyZW5jZXMgb3IgdHlwZSBjb25mdXNpb24pIGFyZSBhZGVxdWF0ZWx5IGNvdmVyZWQgYnkgS0FTQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSB0eXBlIGNvbmZ1c2lvbiBpc3N1ZSBiZXR3ZWVuIGF0aDlrIGFuZCBhdGg5a19odGMgZHJpdmVycyBpbiBzaGFyZWQgc3BlY3RyYWwgc2Nhbm5pbmcgY29kZSAoY29tbW9uLXNwZWN0cmFsLmMpLCB3aGVyZSBjb21tb24tXFx1MDAzZXByaXYgd2FzIHByZXZpb3VzbHkgY2FzdCB1bmNvbmRpdGlvbmFsbHkgdG8gc3RydWN0IGF0aF9zb2Z0YyAqLiBUaGUgZml4IHBhc3NlcyB0aGUgZHJpdmVyLXNwZWNpZmljIGF0aF9yeF9zdGF0cyBwb2ludGVyIGR1cmluZyBkZWJ1ZyBpbml0aWFsaXphdGlvbiBhbmQgaW5jcmVtZW50cyBzdGF0cyB0aHJvdWdoIHNwZWNfcHJpdi1cXHUwMDNlcnhfc3RhdHMgd2l0aCBhIE5VTEwgY2hlY2suXFxuXFxuVGhpcyBjaGFuZ2Ugb25seSBhZmZlY3RzIHBvaW50ZXIgYXNzaWdubWVudCBhbmQgc3RhdGlzdGljIGNvdW50ZXIgaW5jcmVtZW50cy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSwgYWxsb2NhdGUgdW5pbml0aWFsaXplZCBidWZmZXJzLCBvciBwZXJmb3JtIGNvcGllcyB0byB1c2VyIHNwYWNlIG9mIHVuaW5pdGlhbGl6ZWQgZGF0YS4gQW55IG1lbW9yeSBzYWZldHkgY29uY2VybnMgKHN1Y2ggYXMgaW52YWxpZCBwb2ludGVyIGRlcmVmZXJlbmNlcyBvciB0eXBlIGNvbmZ1c2lvbikgYXJlIGFkZXF1YXRlbHkgY292ZXJlZCBieSBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowbgh8v[1] Phase: Succeeded StartedAt: 2026-09-06 05:49:42 +0000 UTC FinishedAt: 2026-09-06 05:49:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbgh8v[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-09-06 05:49:42 +0000 UTC FinishedAt: 2026-09-06 05:49:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbgh8v[2] Phase: Succeeded StartedAt: 2026-09-06 05:49:42 +0000 UTC FinishedAt: 2026-09-06 07:31:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbgh8v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_COMMON_SPECTRAL","ATH9K_HTC_DEBUGFS","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath_cmn_process_fft","ath9k_cmn_spectral_init_debug","ath9k_htc_init_debug","ath9k_init_debug"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_COMMON_SPECTRAL","ATH9K_HTC_DEBUGFS","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K"],"series_id":"06b6d6eb-5b97-40bf-aaf9-0586ee374725","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-09-06 05:49:43 +0000 UTC FinishedAt: 2026-09-06 07:31:02 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_COMMON_SPECTRAL","ATH9K_HTC_DEBUGFS","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath_cmn_process_fft","ath9k_cmn_spectral_init_debug","ath9k_htc_init_debug","ath9k_init_debug"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_COMMON_SPECTRAL","ATH9K_HTC_DEBUGFS","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K"],"series_id":"06b6d6eb-5b97-40bf-aaf9-0586ee374725","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowbgh8v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_COMMON_SPECTRAL","ATH9K_HTC_DEBUGFS","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath_cmn_process_fft","ath9k_cmn_spectral_init_debug","ath9k_htc_init_debug","ath9k_init_debug"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_COMMON_SPECTRAL","ATH9K_HTC_DEBUGFS","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K"],"series_id":"06b6d6eb-5b97-40bf-aaf9-0586ee374725","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-09-06 05:49:43 +0000 UTC FinishedAt: 2026-09-06 05:50:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbgh8v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_COMMON_SPECTRAL","ATH9K_HTC_DEBUGFS","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath_cmn_process_fft","ath9k_cmn_spectral_init_debug","ath9k_htc_init_debug","ath9k_init_debug"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_COMMON_SPECTRAL","ATH9K_HTC_DEBUGFS","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K"],"series_id":"06b6d6eb-5b97-40bf-aaf9-0586ee374725","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-09-06 05:49:43 +0000 UTC FinishedAt: 2026-09-06 05:49:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_COMMON_SPECTRAL","ATH9K_HTC_DEBUGFS","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowbgh8v/series-workflowbgh8v-convert-artifact-1121156515/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbgh8v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_COMMON_SPECTRAL","ATH9K_HTC_DEBUGFS","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath_cmn_process_fft","ath9k_cmn_spectral_init_debug","ath9k_htc_init_debug","ath9k_init_debug"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_COMMON_SPECTRAL","ATH9K_HTC_DEBUGFS","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K"],"series_id":"06b6d6eb-5b97-40bf-aaf9-0586ee374725","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-09-06 05:50:05 +0000 UTC FinishedAt: 2026-09-06 06:14:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbgh8v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_COMMON_SPECTRAL","ATH9K_HTC_DEBUGFS","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath_cmn_process_fft","ath9k_cmn_spectral_init_debug","ath9k_htc_init_debug","ath9k_init_debug"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_COMMON_SPECTRAL","ATH9K_HTC_DEBUGFS","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K"],"series_id":"06b6d6eb-5b97-40bf-aaf9-0586ee374725","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-09-06 05:50:05 +0000 UTC FinishedAt: 2026-09-06 06:14:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*3ccbfbb1-8eed-4248-ae0e-7cb6028dc884,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-workflowbgh8v/series-workflowbgh8v-convert-artifact-1121156515/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": "3bb5e979-5173-4f8a-8d26-ae4857874e78", "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-workflowbgh8v/series-workflowbgh8v-build-action-3800953361/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbgh8v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_COMMON_SPECTRAL","ATH9K_HTC_DEBUGFS","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath_cmn_process_fft","ath9k_cmn_spectral_init_debug","ath9k_htc_init_debug","ath9k_init_debug"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_COMMON_SPECTRAL","ATH9K_HTC_DEBUGFS","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K"],"series_id":"06b6d6eb-5b97-40bf-aaf9-0586ee374725","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-09-06 05:50:05 +0000 UTC FinishedAt: 2026-09-06 06:14:16 +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:*3ccbfbb1-8eed-4248-ae0e-7cb6028dc884,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-workflowbgh8v/series-workflowbgh8v-convert-artifact-1121156515/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": "3bb5e979-5173-4f8a-8d26-ae4857874e78", "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-workflowbgh8v/series-workflowbgh8v-build-action-3800953361/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbgh8v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_COMMON_SPECTRAL","ATH9K_HTC_DEBUGFS","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath_cmn_process_fft","ath9k_cmn_spectral_init_debug","ath9k_htc_init_debug","ath9k_init_debug"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_COMMON_SPECTRAL","ATH9K_HTC_DEBUGFS","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K"],"series_id":"06b6d6eb-5b97-40bf-aaf9-0586ee374725","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-09-06 06:14:26 +0000 UTC FinishedAt: 2026-09-06 06:14:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbgh8v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_COMMON_SPECTRAL","ATH9K_HTC_DEBUGFS","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath_cmn_process_fft","ath9k_cmn_spectral_init_debug","ath9k_htc_init_debug","ath9k_init_debug"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_COMMON_SPECTRAL","ATH9K_HTC_DEBUGFS","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K"],"series_id":"06b6d6eb-5b97-40bf-aaf9-0586ee374725","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-09-06 06:14:26 +0000 UTC FinishedAt: 2026-09-06 06:14:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbgh8v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_COMMON_SPECTRAL","ATH9K_HTC_DEBUGFS","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath_cmn_process_fft","ath9k_cmn_spectral_init_debug","ath9k_htc_init_debug","ath9k_init_debug"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_COMMON_SPECTRAL","ATH9K_HTC_DEBUGFS","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K"],"series_id":"06b6d6eb-5b97-40bf-aaf9-0586ee374725","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-09-06 06:14:26 +0000 UTC FinishedAt: 2026-09-06 06:14:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbgh8v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_COMMON_SPECTRAL","ATH9K_HTC_DEBUGFS","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath_cmn_process_fft","ath9k_cmn_spectral_init_debug","ath9k_htc_init_debug","ath9k_init_debug"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_COMMON_SPECTRAL","ATH9K_HTC_DEBUGFS","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K"],"series_id":"06b6d6eb-5b97-40bf-aaf9-0586ee374725","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-09-06 06:14:26 +0000 UTC FinishedAt: 2026-09-06 06:14:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_COMMON_SPECTRAL","ATH9K_HTC_DEBUGFS","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K"],"series_id":"06b6d6eb-5b97-40bf-aaf9-0586ee374725","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowbgh8v/series-workflowbgh8v-convert-artifact-3722715866/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbgh8v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_COMMON_SPECTRAL","ATH9K_HTC_DEBUGFS","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath_cmn_process_fft","ath9k_cmn_spectral_init_debug","ath9k_htc_init_debug","ath9k_init_debug"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_COMMON_SPECTRAL","ATH9K_HTC_DEBUGFS","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K"],"series_id":"06b6d6eb-5b97-40bf-aaf9-0586ee374725","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-09-06 06:14:36 +0000 UTC FinishedAt: 2026-09-06 06:16:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbgh8v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_COMMON_SPECTRAL","ATH9K_HTC_DEBUGFS","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath_cmn_process_fft","ath9k_cmn_spectral_init_debug","ath9k_htc_init_debug","ath9k_init_debug"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_COMMON_SPECTRAL","ATH9K_HTC_DEBUGFS","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K"],"series_id":"06b6d6eb-5b97-40bf-aaf9-0586ee374725","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-09-06 06:14:36 +0000 UTC FinishedAt: 2026-09-06 06:16:19 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*3bb5e979-5173-4f8a-8d26-ae4857874e78,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-workflowbgh8v/series-workflowbgh8v-build-action-3800953361/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-workflowbgh8v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_COMMON_SPECTRAL","ATH9K_HTC_DEBUGFS","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath_cmn_process_fft","ath9k_cmn_spectral_init_debug","ath9k_htc_init_debug","ath9k_init_debug"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_COMMON_SPECTRAL","ATH9K_HTC_DEBUGFS","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K"],"series_id":"06b6d6eb-5b97-40bf-aaf9-0586ee374725","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-09-06 06:16:29 +0000 UTC FinishedAt: 2026-09-06 06:16:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbgh8v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_COMMON_SPECTRAL","ATH9K_HTC_DEBUGFS","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath_cmn_process_fft","ath9k_cmn_spectral_init_debug","ath9k_htc_init_debug","ath9k_init_debug"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_COMMON_SPECTRAL","ATH9K_HTC_DEBUGFS","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K"],"series_id":"06b6d6eb-5b97-40bf-aaf9-0586ee374725","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-09-06 06:16:29 +0000 UTC FinishedAt: 2026-09-06 06:16:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbgh8v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_COMMON_SPECTRAL","ATH9K_HTC_DEBUGFS","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath_cmn_process_fft","ath9k_cmn_spectral_init_debug","ath9k_htc_init_debug","ath9k_init_debug"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_COMMON_SPECTRAL","ATH9K_HTC_DEBUGFS","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K"],"series_id":"06b6d6eb-5b97-40bf-aaf9-0586ee374725","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-09-06 06:16:29 +0000 UTC FinishedAt: 2026-09-06 06:34:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbgh8v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_COMMON_SPECTRAL","ATH9K_HTC_DEBUGFS","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath_cmn_process_fft","ath9k_cmn_spectral_init_debug","ath9k_htc_init_debug","ath9k_init_debug"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_COMMON_SPECTRAL","ATH9K_HTC_DEBUGFS","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K"],"series_id":"06b6d6eb-5b97-40bf-aaf9-0586ee374725","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-09-06 06:16:29 +0000 UTC FinishedAt: 2026-09-06 06:34:08 +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:*3ccbfbb1-8eed-4248-ae0e-7cb6028dc884,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-workflowbgh8v/series-workflowbgh8v-convert-artifact-3722715866/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": "dbef457b-94ed-4faa-b63b-aa8fdecb6135", "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-workflowbgh8v/series-workflowbgh8v-build-action-1396142014/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbgh8v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_COMMON_SPECTRAL","ATH9K_HTC_DEBUGFS","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath_cmn_process_fft","ath9k_cmn_spectral_init_debug","ath9k_htc_init_debug","ath9k_init_debug"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_COMMON_SPECTRAL","ATH9K_HTC_DEBUGFS","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K"],"series_id":"06b6d6eb-5b97-40bf-aaf9-0586ee374725","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-09-06 06:16:29 +0000 UTC FinishedAt: 2026-09-06 06:33:14 +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:*3ccbfbb1-8eed-4248-ae0e-7cb6028dc884,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-workflowbgh8v/series-workflowbgh8v-convert-artifact-3722715866/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": "dbef457b-94ed-4faa-b63b-aa8fdecb6135", "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-workflowbgh8v/series-workflowbgh8v-build-action-1396142014/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbgh8v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_COMMON_SPECTRAL","ATH9K_HTC_DEBUGFS","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath_cmn_process_fft","ath9k_cmn_spectral_init_debug","ath9k_htc_init_debug","ath9k_init_debug"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_COMMON_SPECTRAL","ATH9K_HTC_DEBUGFS","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K"],"series_id":"06b6d6eb-5b97-40bf-aaf9-0586ee374725","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-09-06 06:34:08 +0000 UTC FinishedAt: 2026-09-06 06:34:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbgh8v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_COMMON_SPECTRAL","ATH9K_HTC_DEBUGFS","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath_cmn_process_fft","ath9k_cmn_spectral_init_debug","ath9k_htc_init_debug","ath9k_init_debug"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_COMMON_SPECTRAL","ATH9K_HTC_DEBUGFS","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K"],"series_id":"06b6d6eb-5b97-40bf-aaf9-0586ee374725","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-09-06 06:34:08 +0000 UTC FinishedAt: 2026-09-06 06:34:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbgh8v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_COMMON_SPECTRAL","ATH9K_HTC_DEBUGFS","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath_cmn_process_fft","ath9k_cmn_spectral_init_debug","ath9k_htc_init_debug","ath9k_init_debug"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_COMMON_SPECTRAL","ATH9K_HTC_DEBUGFS","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K"],"series_id":"06b6d6eb-5b97-40bf-aaf9-0586ee374725","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-09-06 06:34:08 +0000 UTC FinishedAt: 2026-09-06 06:36:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbgh8v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_COMMON_SPECTRAL","ATH9K_HTC_DEBUGFS","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath_cmn_process_fft","ath9k_cmn_spectral_init_debug","ath9k_htc_init_debug","ath9k_init_debug"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_COMMON_SPECTRAL","ATH9K_HTC_DEBUGFS","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K"],"series_id":"06b6d6eb-5b97-40bf-aaf9-0586ee374725","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-09-06 06:34:08 +0000 UTC FinishedAt: 2026-09-06 06:35:55 +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:*dbef457b-94ed-4faa-b63b-aa8fdecb6135,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-workflowbgh8v/series-workflowbgh8v-build-action-1396142014/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-workflowbgh8v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_COMMON_SPECTRAL","ATH9K_HTC_DEBUGFS","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath_cmn_process_fft","ath9k_cmn_spectral_init_debug","ath9k_htc_init_debug","ath9k_init_debug"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_COMMON_SPECTRAL","ATH9K_HTC_DEBUGFS","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K"],"series_id":"06b6d6eb-5b97-40bf-aaf9-0586ee374725","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-09-06 06:36:05 +0000 UTC FinishedAt: 2026-09-06 07:31:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbgh8v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_COMMON_SPECTRAL","ATH9K_HTC_DEBUGFS","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath_cmn_process_fft","ath9k_cmn_spectral_init_debug","ath9k_htc_init_debug","ath9k_init_debug"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_COMMON_SPECTRAL","ATH9K_HTC_DEBUGFS","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K"],"series_id":"06b6d6eb-5b97-40bf-aaf9-0586ee374725","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-09-06 06:36:05 +0000 UTC FinishedAt: 2026-09-06 07:31:02 +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":["ath_cmn_process_fft","ath9k_cmn_spectral_init_debug","ath9k_htc_init_debug","ath9k_init_debug"],"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:*3bb5e979-5173-4f8a-8d26-ae4857874e78,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*dbef457b-94ed-4faa-b63b-aa8fdecb6135,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-workflowbgh8v/series-workflowbgh8v-build-action-3800953361/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-workflowbgh8v/series-workflowbgh8v-build-action-1396142014/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowbgh8v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_COMMON_SPECTRAL","ATH9K_HTC_DEBUGFS","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath_cmn_process_fft","ath9k_cmn_spectral_init_debug","ath9k_htc_init_debug","ath9k_init_debug"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_COMMON_SPECTRAL","ATH9K_HTC_DEBUGFS","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K"],"series_id":"06b6d6eb-5b97-40bf-aaf9-0586ee374725","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-09-06 06:36:05 +0000 UTC FinishedAt: 2026-09-06 06:36:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbgh8v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_COMMON_SPECTRAL","ATH9K_HTC_DEBUGFS","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath_cmn_process_fft","ath9k_cmn_spectral_init_debug","ath9k_htc_init_debug","ath9k_init_debug"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_COMMON_SPECTRAL","ATH9K_HTC_DEBUGFS","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K"],"series_id":"06b6d6eb-5b97-40bf-aaf9-0586ee374725","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-09-06 06:36:05 +0000 UTC FinishedAt: 2026-09-06 06:36:10 +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":["ath_cmn_process_fft","ath9k_cmn_spectral_init_debug","ath9k_htc_init_debug","ath9k_init_debug"],"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-workflowbgh8v/series-workflowbgh8v-convert-artifact-2633301647/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbgh8v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_COMMON_SPECTRAL","ATH9K_HTC_DEBUGFS","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath_cmn_process_fft","ath9k_cmn_spectral_init_debug","ath9k_htc_init_debug","ath9k_init_debug"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_COMMON_SPECTRAL","ATH9K_HTC_DEBUGFS","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K"],"series_id":"06b6d6eb-5b97-40bf-aaf9-0586ee374725","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-09-06 06:36:05 +0000 UTC FinishedAt: 2026-09-06 06:36:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbgh8v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_COMMON_SPECTRAL","ATH9K_HTC_DEBUGFS","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath_cmn_process_fft","ath9k_cmn_spectral_init_debug","ath9k_htc_init_debug","ath9k_init_debug"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_COMMON_SPECTRAL","ATH9K_HTC_DEBUGFS","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K"],"series_id":"06b6d6eb-5b97-40bf-aaf9-0586ee374725","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-09-06 06:36:05 +0000 UTC FinishedAt: 2026-09-06 06:36:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbgh8v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_COMMON_SPECTRAL","ATH9K_HTC_DEBUGFS","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath_cmn_process_fft","ath9k_cmn_spectral_init_debug","ath9k_htc_init_debug","ath9k_init_debug"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_COMMON_SPECTRAL","ATH9K_HTC_DEBUGFS","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K"],"series_id":"06b6d6eb-5b97-40bf-aaf9-0586ee374725","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-09-06 06:36:05 +0000 UTC FinishedAt: 2026-09-06 06:36:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbgh8v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_COMMON_SPECTRAL","ATH9K_HTC_DEBUGFS","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath_cmn_process_fft","ath9k_cmn_spectral_init_debug","ath9k_htc_init_debug","ath9k_init_debug"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_COMMON_SPECTRAL","ATH9K_HTC_DEBUGFS","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K"],"series_id":"06b6d6eb-5b97-40bf-aaf9-0586ee374725","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-09-06 06:36:16 +0000 UTC FinishedAt: 2026-09-06 07:31:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbgh8v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_COMMON_SPECTRAL","ATH9K_HTC_DEBUGFS","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath_cmn_process_fft","ath9k_cmn_spectral_init_debug","ath9k_htc_init_debug","ath9k_init_debug"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_COMMON_SPECTRAL","ATH9K_HTC_DEBUGFS","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K"],"series_id":"06b6d6eb-5b97-40bf-aaf9-0586ee374725","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-09-06 06:36:16 +0000 UTC FinishedAt: 2026-09-06 07:30:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*3bb5e979-5173-4f8a-8d26-ae4857874e78,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*dbef457b-94ed-4faa-b63b-aa8fdecb6135,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-workflowbgh8v/series-workflowbgh8v-build-action-3800953361/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-workflowbgh8v/series-workflowbgh8v-build-action-1396142014/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-workflowbgh8v/series-workflowbgh8v-convert-artifact-2633301647/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,}