Name: series-workflowrmcdq Phase: Succeeded StartedAt: 2026-09-05 01:01:44 +0000 UTC FinishedAt: 2026-09-05 02:39:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrmcdq[0] Phase: Succeeded StartedAt: 2026-09-05 01:01:44 +0000 UTC FinishedAt: 2026-09-05 01:04:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrmcdq[0].run-triage Phase: Succeeded StartedAt: 2026-09-05 01:01:44 +0000 UTC FinishedAt: 2026-09-05 01:04:20 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "ca800a9302764c445de0da0e84d2252400a770ee", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ATH9K", "ATH9K_HTC", "ATH9K_DEBUGFS", "ATH9K_HTC_DEBUGFS", "ATH9K_COMMON_SPECTRAL", "MAC80211", "DEBUG_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "ca800a9302764c445de0da0e84d2252400a770ee", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ATH9K", "ATH9K_HTC", "ATH9K_DEBUGFS", "ATH9K_HTC_DEBUGFS", "ATH9K_COMMON_SPECTRAL", "MAC80211", "DEBUG_FS" ], "series_id": "bd25a7b5-2eee-4ee2-aa26-3c88891de699" }, "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+CgkJCTx0ZD4yMDI2LzA5LzA1IDAxOjAzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FUSDlLJiMzNDssCiAgICAmIzM0O0FUSDlLX0hUQyYjMzQ7LAogICAgJiMzNDtBVEg5S19ERUJVR0ZTJiMzNDssCiAgICAmIzM0O0FUSDlLX0hUQ19ERUJVR0ZTJiMzNDssCiAgICAmIzM0O0FUSDlLX0NPTU1PTl9TUEVDVFJBTCYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtERUJVR19GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2F0aF9jbW5fcHJvY2Vzc19mZnQmIzM0OywKICAgICYjMzQ7YXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcmIzM0OywKICAgICYjMzQ7YXRoOWtfaHRjX2luaXRfZGVidWcmIzM0OywKICAgICYjMzQ7YXRoOWtfaW5pdF9kZWJ1ZyYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlZmFjdG9ycyBzcGVjdHJhbCBzY2FuIFJYIHN0YXRpc3RpY3MgYWNjb3VudGluZyBpbiB0aGUgYXRoOWsgZHJpdmVyIGJ5IHBhc3NpbmcgYW4gZXhwbGljaXQgcG9pbnRlciB0byBgc3RydWN0IGF0aF9yeF9zdGF0c2AgaW4gYGF0aF9zcGVjX3NjYW5fcHJpdmAgaW5zdGVhZCBvZiBpbmFwcHJvcHJpYXRlbHkgY2FzdGluZyBgY29tbW9uLVx1MDAzZXByaXZgIHRvIGBzdHJ1Y3QgYXRoX3NvZnRjICpgICh3aGljaCB3YXMgaW52YWxpZCBmb3IgYGF0aDlrX2h0Y2ApLiBcblxuVGhpcyBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIG9yIG1vZGlmeSB1bmluaXRpYWxpemVkIG1lbW9yeSBoYW5kbGluZywgdW5pbml0aWFsaXplZCBicmFuY2hpbmcsIG9yIGtlcm5lbC10by11c2VyIGluZm8gbGVha3MuIEFueSBtZW1vcnkgYWNjZXNzIGlzc3VlcyByZWxhdGVkIHRvIGludmFsaWQgcG9pbnRlciBkZXJlZmVyZW5jaW5nIG9yIHN0cnVjdCBjYXN0aW5nIGFyZSBjYXVnaHQgYnkgS0FTQU4gb3Igc3RhbmRhcmQga2VybmVsIGZhdWx0IGhhbmRsZXJzLiBUaGVyZWZvcmUsIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVmYWN0b3JzIHRoZSBzcGVjdHJhbCBzY2FuIFJYIHN0YXRpc3RpY3MgYWNjb3VudGluZyBpbiB0aGUgYXRoOWsvYXRoOWtfaHRjIHdpcmVsZXNzIGRyaXZlciB0byBhdm9pZCBpbmNvcnJlY3Qgc3RydWN0IGNhc3RpbmcgYmV0d2VlbiBhdGg5ayBhbmQgYXRoOWtfaHRjLiBUaGUgbW9kaWZpZWQgY29kZSBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBVU0IgZW11bGF0aW9uIChhdGg5a19odGMpIGFuZCBkZWJ1Z2ZzL3dpcmVsZXNzIFJYIGZyYW1lIHByb2Nlc3NpbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMDE6MDM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAwZDVkNGRiOGQ4YTY1OTVhOTViZTg3MDc5ODVmYzEzM2RlMTI2NDQyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBTZXAgNSAwMTowMzoxOSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmNcbmluZGV4IGNhMDFhMDdmNjYzMGMuLmQ4YmUyNGViY2QyNDcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuY1xuQEAgLTQ2NSw2ICYjNDM7NDY1LDIwIEBAIGF0aF9jbW5faXNfZmZ0X2J1Zl9mdWxsKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdilcbiBcdFx0cmV0dXJuIDA7XG4gfVxuIFxuJiM0MztzdGF0aWMgdm9pZCBhdGhfY21uX2NvdW50X2ZmdF9zYW1wbGUoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LFxuJiM0MztcdFx0XHRcdCAgICAgaW50IHJldClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBhdGhfcnhfc3RhdHMgKnJ4X3N0YXRzID0gc3BlY19wcml2LVx1MDAzZXJ4X3N0YXRzO1xuJiM0MztcbiYjNDM7XHRpZiAoIXJ4X3N0YXRzKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiYjNDM7XHRpZiAocmV0ID09IDApXG4mIzQzO1x0XHRyeF9zdGF0cy1cdTAwM2VyeF9zcGVjdHJhbF9zYW1wbGVfZ29vZCYjNDM7JiM0Mzs7XG4mIzQzO1x0ZWxzZVxuJiM0MztcdFx0cnhfc3RhdHMtXHUwMDNlcnhfc3BlY3RyYWxfc2FtcGxlX2VyciYjNDM7JiM0Mzs7XG4mIzQzO31cbiYjNDM7XG4gLyogcmV0dXJucyAxIGlmIHRoaXMgd2FzIGEgc3BlY3RyYWwgZnJhbWUsIGV2ZW4gaWYgbm90IGhhbmRsZWQuICovXG4gaW50IGF0aF9jbW5fcHJvY2Vzc19mZnQoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LCBzdHJ1Y3QgaWVlZTgwMjExX2hkciAqaGRyLFxuIFx0XHQgICAgc3RydWN0IGF0aF9yeF9zdGF0dXMgKnJzLCB1NjQgdHNmKVxuQEAgLTQ3Miw3ICYjNDM7NDg2LDYgQEAgaW50IGF0aF9jbW5fcHJvY2Vzc19mZnQoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LCBzdHJ1Y3QgaWVlZTgwMjExX2hcbiBcdHU4IHNhbXBsZV9idWZbU1BFQ1RSQUxfU0FNUExFX01BWF9MRU5dID0gezB9O1xuIFx0c3RydWN0IGF0aF9odyAqYWggPSBzcGVjX3ByaXYtXHUwMDNlYWg7XG4gXHRzdHJ1Y3QgYXRoX2NvbW1vbiAqY29tbW9uID0gYXRoOWtfaHdfY29tbW9uKHNwZWNfcHJpdi1cdTAwM2VhaCk7XG4tXHRzdHJ1Y3QgYXRoX3NvZnRjICpzYyA9IGNvbW1vbi1cdTAwM2Vwcml2O1xuIFx0dTggbnVtX2JpbnMsICp2ZGF0YSA9ICh1OCAqKWhkcjtcbiBcdHN0cnVjdCBhdGhfcmFkYXJfaW5mbyAqcmFkYXJfaW5mbztcbiBcdGludCBsZW4gPSBycy1cdTAwM2Vyc19kYXRhbGVuO1xuQEAgLTYyNCwxMCAmIzQzOzYzNyw3IEBAIGludCBhdGhfY21uX3Byb2Nlc3NfZmZ0KHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiwgc3RydWN0IGllZWU4MDIxMV9oXG4gXHRcdFx0XHRyZXQgPSBmZnRfaGFuZGxlcihycywgc3BlY19wcml2LCBzYW1wbGVfYnVmLFxuIFx0XHRcdFx0XHRcdCAgdHNmLCBmcmVxLCBjaGFuX3R5cGUpO1xuIFxuLVx0XHRcdFx0aWYgKHJldCA9PSAwKVxuLVx0XHRcdFx0XHRSWF9TVEFUX0lOQyhzYywgcnhfc3BlY3RyYWxfc2FtcGxlX2dvb2QpO1xuLVx0XHRcdFx0ZWxzZVxuLVx0XHRcdFx0XHRSWF9TVEFUX0lOQyhzYywgcnhfc3BlY3RyYWxfc2FtcGxlX2Vycik7XG4mIzQzO1x0XHRcdFx0YXRoX2Ntbl9jb3VudF9mZnRfc2FtcGxlKHNwZWNfcHJpdiwgcmV0KTtcbiBcbiBcdFx0XHRcdC8qIE1peCB0aGUgcmVjZWl2ZWQgYmlucyB0byB0aGUgL2Rldi9yYW5kb21cbiBcdFx0XHRcdCAqIHBvb2xcbkBAIC02NDIsMTAgJiM0Mzs2NTIsNyBAQCBpbnQgYXRoX2Ntbl9wcm9jZXNzX2ZmdChzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsIHN0cnVjdCBpZWVlODAyMTFfaFxuIFx0XHRcdFx0cmV0ID0gZmZ0X2hhbmRsZXIocnMsIHNwZWNfcHJpdiwgc2FtcGxlX3N0YXJ0LFxuIFx0XHRcdFx0XHRcdCAgdHNmLCBmcmVxLCBjaGFuX3R5cGUpO1xuIFxuLVx0XHRcdFx0aWYgKHJldCA9PSAwKVxuLVx0XHRcdFx0XHRSWF9TVEFUX0lOQyhzYywgcnhfc3BlY3RyYWxfc2FtcGxlX2dvb2QpO1xuLVx0XHRcdFx0ZWxzZVxuLVx0XHRcdFx0XHRSWF9TVEFUX0lOQyhzYywgcnhfc3BlY3RyYWxfc2FtcGxlX2Vycik7XG4mIzQzO1x0XHRcdFx0YXRoX2Ntbl9jb3VudF9mZnRfc2FtcGxlKHNwZWNfcHJpdiwgcmV0KTtcbiBcbiBcdFx0XHRcdC8qIE1peCB0aGUgcmVjZWl2ZWQgYmlucyB0byB0aGUgL2Rldi9yYW5kb21cbiBcdFx0XHRcdCAqIHBvb2xcbkBAIC0xMDUyLDggJiM0MzsxMDU5LDEwIEBAIHZvaWQgYXRoOWtfY21uX3NwZWN0cmFsX2RlaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYpXG4gRVhQT1JUX1NZTUJPTChhdGg5a19jbW5fc3BlY3RyYWxfZGVpbml0X2RlYnVnKTtcbiBcbiB2b2lkIGF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdixcbi1cdFx0XHRcdCAgIHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcGh5KVxuJiM0MztcdFx0XHRcdCAgIHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcGh5LFxuJiM0MztcdFx0XHRcdCAgIHN0cnVjdCBhdGhfcnhfc3RhdHMgKnJ4X3N0YXRzKVxuIHtcbiYjNDM7XHRzcGVjX3ByaXYtXHUwMDNlcnhfc3RhdHMgPSByeF9zdGF0cztcbiBcdHNwZWNfcHJpdi1cdTAwM2VyZnNfY2hhbl9zcGVjX3NjYW4gPSByZWxheV9vcGVuKFwmIzM0O3NwZWN0cmFsX3NjYW5cJiMzNDssXG4gXHRcdFx0XHRcdCAgICBkZWJ1Z2ZzX3BoeSxcbiBcdFx0XHRcdFx0ICAgIDEwMjQsIDI1NiwgXHUwMDI2cmZzX3NwZWNfc2Nhbl9jYixcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmhcbmluZGV4IDAxMWQ4YWI4Yjk3NDQuLjBlMmM3ZDZkMzQ4NzQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaFxuQEAgLTk0LDEyICYjNDM7OTQsMTYgQEAgc3RydWN0IGF0aF9odDIwXzQwX2ZmdF9wYWNrZXQge1xuIFx0c3RydWN0IGF0aF9yYWRhcl9pbmZvIHJhZGFyX2luZm87XG4gfSBfX3BhY2tlZDtcbiBcbiYjNDM7c3RydWN0IGF0aF9yeF9zdGF0cztcbiYjNDM7XG4gc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiB7XG4gXHRzdHJ1Y3QgYXRoX2h3ICphaDtcbiBcdC8qIHJlbGF5KGZzKSBjaGFubmVsIGZvciBzcGVjdHJhbCBzY2FuICovXG4gXHRzdHJ1Y3QgcmNoYW4gKnJmc19jaGFuX3NwZWNfc2NhbjtcbiBcdGVudW0gc3BlY3RyYWxfbW9kZSBzcGVjdHJhbF9tb2RlO1xuIFx0c3RydWN0IGF0aF9zcGVjX3NjYW4gc3BlY19jb25maWc7XG4mIzQzO1x0LyogZHJpdmVyJiMzOTtzIFJYIHN0YXRpc3RpY3MgdG8gYWNjb3VudCBzYW1wbGVzIGludG8sIGlmIGFueSAqL1xuJiM0MztcdHN0cnVjdCBhdGhfcnhfc3RhdHMgKnJ4X3N0YXRzO1xuIH07XG4gXG4gI2RlZmluZSBTUEVDVFJBTF9IVDIwXzQwX1RPVEFMX0RBVEFfTEVOXHQoc2l6ZW9mKHN0cnVjdCBhdGhfaHQyMF80MF9mZnRfcGFja2V0KSlcbkBAIC0xNjksNyAmIzQzOzE3Myw5IEBAIHN0YXRpYyBpbmxpbmUgdTggc3BlY3RyYWxfYml0bWFwX3dlaWdodCh1OCAqYmlucylcbiB9XG4gXG4gI2lmZGVmIENPTkZJR19BVEg5S19DT01NT05fU1BFQ1RSQUxcbi12b2lkIGF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiwgc3RydWN0IGRlbnRyeSAqZGVidWdmc19waHkpO1xuJiM0Mzt2b2lkIGF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdixcbiYjNDM7XHRcdFx0XHQgICBzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX3BoeSxcbiYjNDM7XHRcdFx0XHQgICBzdHJ1Y3QgYXRoX3J4X3N0YXRzICpyeF9zdGF0cyk7XG4gdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfZGVpbml0X2RlYnVnKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdik7XG4gXG4gdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfc2Nhbl90cmlnZ2VyKHN0cnVjdCBhdGhfY29tbW9uICpjb21tb24sXG5AQCAtMTgxLDcgJiM0MzsxODcsOCBAQCBpbnQgYXRoX2Ntbl9wcm9jZXNzX2ZmdChzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsIHN0cnVjdCBpZWVlODAyMTFfaFxuIFx0XHQgICAgc3RydWN0IGF0aF9yeF9zdGF0dXMgKnJzLCB1NjQgdHNmKTtcbiAjZWxzZVxuIHN0YXRpYyBpbmxpbmUgdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsXG4tXHRcdFx0XHRcdFx0IHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcGh5KVxuJiM0MztcdFx0XHRcdFx0XHQgc3RydWN0IGRlbnRyeSAqZGVidWdmc19waHksXG4mIzQzO1x0XHRcdFx0XHRcdCBzdHJ1Y3QgYXRoX3J4X3N0YXRzICpyeF9zdGF0cylcbiB7XG4gfVxuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZWJ1Zy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2RlYnVnLmNcbmluZGV4IDc0YTAxMzQwNzVjZjkuLjA0MmE0ZjU0MmE5NDMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGVidWcuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2RlYnVnLmNcbkBAIC0xMzg5LDcgJiM0MzsxMzg5LDggQEAgaW50IGF0aDlrX2luaXRfZGVidWcoc3RydWN0IGF0aF9odyAqYWgpXG4gXG4gXHRhdGg5a19kZnNfaW5pdF9kZWJ1ZyhzYyk7XG4gXHRhdGg5a190eDk5X2luaXRfZGVidWcoc2MpO1xuLVx0YXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoXHUwMDI2c2MtXHUwMDNlc3BlY19wcml2LCBzYy1cdTAwM2VkZWJ1Zy5kZWJ1Z2ZzX3BoeSk7XG4mIzQzO1x0YXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoXHUwMDI2c2MtXHUwMDNlc3BlY19wcml2LCBzYy1cdTAwM2VkZWJ1Zy5kZWJ1Z2ZzX3BoeSxcbiYjNDM7XHRcdFx0XHQgICAgICBcdTAwMjZzYy1cdTAwM2VkZWJ1Zy5zdGF0cy5yeHN0YXRzKTtcbiBcbiBcdGRlYnVnZnNfY3JlYXRlX2Rldm1fc2VxZmlsZShzYy1cdTAwM2VkZXYsIFwmIzM0O2RtYVwmIzM0Oywgc2MtXHUwMDNlZGVidWcuZGVidWdmc19waHksXG4gXHRcdFx0XHQgICAgcmVhZF9maWxlX2RtYSk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmNcbmluZGV4IDk0MzdkNjk4NzdjYzUuLjlkMzU0YjFkOTI5YzggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jXG5AQCAtNDg3LDcgJiM0Mzs0ODcsOCBAQCBpbnQgYXRoOWtfaHRjX2luaXRfZGVidWcoc3RydWN0IGF0aF9odyAqYWgpXG4gXHRwcml2LVx1MDAzZWRlYnVnLmRlYnVnZnNfcGh5ID0gZGVidWdmc19jcmVhdGVfZGlyKEtCVUlMRF9NT0ROQU1FLFxuIFx0XHRcdFx0XHQgICAgIHByaXYtXHUwMDNlaHctXHUwMDNld2lwaHktXHUwMDNlZGVidWdmc2Rpcik7XG4gXG4tXHRhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhcdTAwMjZwcml2LVx1MDAzZXNwZWNfcHJpdiwgcHJpdi1cdTAwM2VkZWJ1Zy5kZWJ1Z2ZzX3BoeSk7XG4mIzQzO1x0YXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoXHUwMDI2cHJpdi1cdTAwM2VzcGVjX3ByaXYsIHByaXYtXHUwMDNlZGVidWcuZGVidWdmc19waHksXG4mIzQzO1x0XHRcdFx0ICAgICAgXHUwMDI2cHJpdi1cdTAwM2VkZWJ1Zy5yeF9zdGF0cyk7XG4gXG4gXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFwmIzM0O3RndF9pbnRfc3RhdHNcJiMzNDssIDA0MDAsIHByaXYtXHUwMDNlZGVidWcuZGVidWdmc19waHksXG4gXHRcdFx0ICAgIHByaXYsIFx1MDAyNmZvcHNfdGd0X2ludF9zdGF0cyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMDE6MDM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QVRIOUsmIzM0OywKICAgICYjMzQ7QVRIOUtfSFRDJiMzNDssCiAgICAmIzM0O0FUSDlLX0RFQlVHRlMmIzM0OywKICAgICYjMzQ7QVRIOUtfSFRDX0RFQlVHRlMmIzM0OywKICAgICYjMzQ7QVRIOUtfQ09NTU9OX1NQRUNUUkFMJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O0RFQlVHX0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YXRoX2Ntbl9wcm9jZXNzX2ZmdCYjMzQ7LAogICAgJiMzNDthdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyYjMzQ7LAogICAgJiMzNDthdGg5a19odGNfaW5pdF9kZWJ1ZyYjMzQ7LAogICAgJiMzNDthdGg5a19pbml0X2RlYnVnJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlZmFjdG9ycyB0aGUgc3BlY3RyYWwgc2NhbiBSWCBzdGF0aXN0aWNzIGFjY291bnRpbmcgaW4gdGhlIGF0aDlrL2F0aDlrX2h0YyB3aXJlbGVzcyBkcml2ZXIgdG8gYXZvaWQgaW5jb3JyZWN0IHN0cnVjdCBjYXN0aW5nIGJldHdlZW4gYXRoOWsgYW5kIGF0aDlrX2h0Yy4gVGhlIG1vZGlmaWVkIGNvZGUgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgVVNCIGVtdWxhdGlvbiAoYXRoOWtfaHRjKSBhbmQgZGVidWdmcy93aXJlbGVzcyBSWCBmcmFtZSBwcm9jZXNzaW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMGQ1ZDRkYjhkOGE2NTk1YTk1YmU4NzA3OTg1ZmMxMzNkZTEyNjQ0MgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgU2VwIDUgMDE6MDM6MTkgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMKaW5kZXggY2EwMWEwN2Y2NjMwYy4uZDhiZTI0ZWJjZDI0NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYwpAQCAtNDY1LDYgJiM0Mzs0NjUsMjAgQEAgYXRoX2Ntbl9pc19mZnRfYnVmX2Z1bGwoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2KQogCQlyZXR1cm4gMDsKIH0KIAomIzQzO3N0YXRpYyB2b2lkIGF0aF9jbW5fY291bnRfZmZ0X3NhbXBsZShzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsCiYjNDM7CQkJCSAgICAgaW50IHJldCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBhdGhfcnhfc3RhdHMgKnJ4X3N0YXRzID0gc3BlY19wcml2LSZndDtyeF9zdGF0czsKJiM0MzsKJiM0MzsJaWYgKCFyeF9zdGF0cykKJiM0MzsJCXJldHVybjsKJiM0MzsKJiM0MzsJaWYgKHJldCA9PSAwKQomIzQzOwkJcnhfc3RhdHMtJmd0O3J4X3NwZWN0cmFsX3NhbXBsZV9nb29kJiM0MzsmIzQzOzsKJiM0MzsJZWxzZQomIzQzOwkJcnhfc3RhdHMtJmd0O3J4X3NwZWN0cmFsX3NhbXBsZV9lcnImIzQzOyYjNDM7OwomIzQzO30KJiM0MzsKIC8qIHJldHVybnMgMSBpZiB0aGlzIHdhcyBhIHNwZWN0cmFsIGZyYW1lLCBldmVuIGlmIG5vdCBoYW5kbGVkLiAqLwogaW50IGF0aF9jbW5fcHJvY2Vzc19mZnQoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LCBzdHJ1Y3QgaWVlZTgwMjExX2hkciAqaGRyLAogCQkgICAgc3RydWN0IGF0aF9yeF9zdGF0dXMgKnJzLCB1NjQgdHNmKQpAQCAtNDcyLDcgJiM0Mzs0ODYsNiBAQCBpbnQgYXRoX2Ntbl9wcm9jZXNzX2ZmdChzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsIHN0cnVjdCBpZWVlODAyMTFfaAogCXU4IHNhbXBsZV9idWZbU1BFQ1RSQUxfU0FNUExFX01BWF9MRU5dID0gezB9OwogCXN0cnVjdCBhdGhfaHcgKmFoID0gc3BlY19wcml2LSZndDthaDsKIAlzdHJ1Y3QgYXRoX2NvbW1vbiAqY29tbW9uID0gYXRoOWtfaHdfY29tbW9uKHNwZWNfcHJpdi0mZ3Q7YWgpOwotCXN0cnVjdCBhdGhfc29mdGMgKnNjID0gY29tbW9uLSZndDtwcml2OwogCXU4IG51bV9iaW5zLCAqdmRhdGEgPSAodTggKiloZHI7CiAJc3RydWN0IGF0aF9yYWRhcl9pbmZvICpyYWRhcl9pbmZvOwogCWludCBsZW4gPSBycy0mZ3Q7cnNfZGF0YWxlbjsKQEAgLTYyNCwxMCAmIzQzOzYzNyw3IEBAIGludCBhdGhfY21uX3Byb2Nlc3NfZmZ0KHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiwgc3RydWN0IGllZWU4MDIxMV9oCiAJCQkJcmV0ID0gZmZ0X2hhbmRsZXIocnMsIHNwZWNfcHJpdiwgc2FtcGxlX2J1ZiwKIAkJCQkJCSAgdHNmLCBmcmVxLCBjaGFuX3R5cGUpOwogCi0JCQkJaWYgKHJldCA9PSAwKQotCQkJCQlSWF9TVEFUX0lOQyhzYywgcnhfc3BlY3RyYWxfc2FtcGxlX2dvb2QpOwotCQkJCWVsc2UKLQkJCQkJUlhfU1RBVF9JTkMoc2MsIHJ4X3NwZWN0cmFsX3NhbXBsZV9lcnIpOwomIzQzOwkJCQlhdGhfY21uX2NvdW50X2ZmdF9zYW1wbGUoc3BlY19wcml2LCByZXQpOwogCiAJCQkJLyogTWl4IHRoZSByZWNlaXZlZCBiaW5zIHRvIHRoZSAvZGV2L3JhbmRvbQogCQkJCSAqIHBvb2wKQEAgLTY0MiwxMCAmIzQzOzY1Miw3IEBAIGludCBhdGhfY21uX3Byb2Nlc3NfZmZ0KHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiwgc3RydWN0IGllZWU4MDIxMV9oCiAJCQkJcmV0ID0gZmZ0X2hhbmRsZXIocnMsIHNwZWNfcHJpdiwgc2FtcGxlX3N0YXJ0LAogCQkJCQkJICB0c2YsIGZyZXEsIGNoYW5fdHlwZSk7CiAKLQkJCQlpZiAocmV0ID09IDApCi0JCQkJCVJYX1NUQVRfSU5DKHNjLCByeF9zcGVjdHJhbF9zYW1wbGVfZ29vZCk7Ci0JCQkJZWxzZQotCQkJCQlSWF9TVEFUX0lOQyhzYywgcnhfc3BlY3RyYWxfc2FtcGxlX2Vycik7CiYjNDM7CQkJCWF0aF9jbW5fY291bnRfZmZ0X3NhbXBsZShzcGVjX3ByaXYsIHJldCk7CiAKIAkJCQkvKiBNaXggdGhlIHJlY2VpdmVkIGJpbnMgdG8gdGhlIC9kZXYvcmFuZG9tCiAJCQkJICogcG9vbApAQCAtMTA1Miw4ICYjNDM7MTA1OSwxMCBAQCB2b2lkIGF0aDlrX2Ntbl9zcGVjdHJhbF9kZWluaXRfZGVidWcoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2KQogRVhQT1JUX1NZTUJPTChhdGg5a19jbW5fc3BlY3RyYWxfZGVpbml0X2RlYnVnKTsKIAogdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsCi0JCQkJICAgc3RydWN0IGRlbnRyeSAqZGVidWdmc19waHkpCiYjNDM7CQkJCSAgIHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcGh5LAomIzQzOwkJCQkgICBzdHJ1Y3QgYXRoX3J4X3N0YXRzICpyeF9zdGF0cykKIHsKJiM0MzsJc3BlY19wcml2LSZndDtyeF9zdGF0cyA9IHJ4X3N0YXRzOwogCXNwZWNfcHJpdi0mZ3Q7cmZzX2NoYW5fc3BlY19zY2FuID0gcmVsYXlfb3BlbigmIzM0O3NwZWN0cmFsX3NjYW4mIzM0OywKIAkJCQkJICAgIGRlYnVnZnNfcGh5LAogCQkJCQkgICAgMTAyNCwgMjU2LCAmYW1wO3Jmc19zcGVjX3NjYW5fY2IsCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmgKaW5kZXggMDExZDhhYjhiOTc0NC4uMGUyYzdkNmQzNDg3NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaApAQCAtOTQsMTIgJiM0Mzs5NCwxNiBAQCBzdHJ1Y3QgYXRoX2h0MjBfNDBfZmZ0X3BhY2tldCB7CiAJc3RydWN0IGF0aF9yYWRhcl9pbmZvIHJhZGFyX2luZm87CiB9IF9fcGFja2VkOwogCiYjNDM7c3RydWN0IGF0aF9yeF9zdGF0czsKJiM0MzsKIHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgewogCXN0cnVjdCBhdGhfaHcgKmFoOwogCS8qIHJlbGF5KGZzKSBjaGFubmVsIGZvciBzcGVjdHJhbCBzY2FuICovCiAJc3RydWN0IHJjaGFuICpyZnNfY2hhbl9zcGVjX3NjYW47CiAJZW51bSBzcGVjdHJhbF9tb2RlIHNwZWN0cmFsX21vZGU7CiAJc3RydWN0IGF0aF9zcGVjX3NjYW4gc3BlY19jb25maWc7CiYjNDM7CS8qIGRyaXZlciYjMzk7cyBSWCBzdGF0aXN0aWNzIHRvIGFjY291bnQgc2FtcGxlcyBpbnRvLCBpZiBhbnkgKi8KJiM0MzsJc3RydWN0IGF0aF9yeF9zdGF0cyAqcnhfc3RhdHM7CiB9OwogCiAjZGVmaW5lIFNQRUNUUkFMX0hUMjBfNDBfVE9UQUxfREFUQV9MRU4JKHNpemVvZihzdHJ1Y3QgYXRoX2h0MjBfNDBfZmZ0X3BhY2tldCkpCkBAIC0xNjksNyAmIzQzOzE3Myw5IEBAIHN0YXRpYyBpbmxpbmUgdTggc3BlY3RyYWxfYml0bWFwX3dlaWdodCh1OCAqYmlucykKIH0KIAogI2lmZGVmIENPTkZJR19BVEg5S19DT01NT05fU1BFQ1RSQUwKLXZvaWQgYXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LCBzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX3BoeSk7CiYjNDM7dm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsCiYjNDM7CQkJCSAgIHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcGh5LAomIzQzOwkJCQkgICBzdHJ1Y3QgYXRoX3J4X3N0YXRzICpyeF9zdGF0cyk7CiB2b2lkIGF0aDlrX2Ntbl9zcGVjdHJhbF9kZWluaXRfZGVidWcoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2KTsKIAogdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfc2Nhbl90cmlnZ2VyKHN0cnVjdCBhdGhfY29tbW9uICpjb21tb24sCkBAIC0xODEsNyAmIzQzOzE4Nyw4IEBAIGludCBhdGhfY21uX3Byb2Nlc3NfZmZ0KHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiwgc3RydWN0IGllZWU4MDIxMV9oCiAJCSAgICBzdHJ1Y3QgYXRoX3J4X3N0YXR1cyAqcnMsIHU2NCB0c2YpOwogI2Vsc2UKIHN0YXRpYyBpbmxpbmUgdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsCi0JCQkJCQkgc3RydWN0IGRlbnRyeSAqZGVidWdmc19waHkpCiYjNDM7CQkJCQkJIHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcGh5LAomIzQzOwkJCQkJCSBzdHJ1Y3QgYXRoX3J4X3N0YXRzICpyeF9zdGF0cykKIHsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2RlYnVnLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGVidWcuYwppbmRleCA3NGEwMTM0MDc1Y2Y5Li4wNDJhNGY1NDJhOTQzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGVidWcuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGVidWcuYwpAQCAtMTM4OSw3ICYjNDM7MTM4OSw4IEBAIGludCBhdGg5a19pbml0X2RlYnVnKHN0cnVjdCBhdGhfaHcgKmFoKQogCiAJYXRoOWtfZGZzX2luaXRfZGVidWcoc2MpOwogCWF0aDlrX3R4OTlfaW5pdF9kZWJ1ZyhzYyk7Ci0JYXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoJmFtcDtzYy0mZ3Q7c3BlY19wcml2LCBzYy0mZ3Q7ZGVidWcuZGVidWdmc19waHkpOwomIzQzOwlhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZygmYW1wO3NjLSZndDtzcGVjX3ByaXYsIHNjLSZndDtkZWJ1Zy5kZWJ1Z2ZzX3BoeSwKJiM0MzsJCQkJICAgICAgJmFtcDtzYy0mZ3Q7ZGVidWcuc3RhdHMucnhzdGF0cyk7CiAKIAlkZWJ1Z2ZzX2NyZWF0ZV9kZXZtX3NlcWZpbGUoc2MtJmd0O2RldiwgJiMzNDtkbWEmIzM0Oywgc2MtJmd0O2RlYnVnLmRlYnVnZnNfcGh5LAogCQkJCSAgICByZWFkX2ZpbGVfZG1hKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jCmluZGV4IDk0MzdkNjk4NzdjYzUuLjlkMzU0YjFkOTI5YzggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYwpAQCAtNDg3LDcgJiM0Mzs0ODcsOCBAQCBpbnQgYXRoOWtfaHRjX2luaXRfZGVidWcoc3RydWN0IGF0aF9odyAqYWgpCiAJcHJpdi0mZ3Q7ZGVidWcuZGVidWdmc19waHkgPSBkZWJ1Z2ZzX2NyZWF0ZV9kaXIoS0JVSUxEX01PRE5BTUUsCiAJCQkJCSAgICAgcHJpdi0mZ3Q7aHctJmd0O3dpcGh5LSZndDtkZWJ1Z2ZzZGlyKTsKIAotCWF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnKCZhbXA7cHJpdi0mZ3Q7c3BlY19wcml2LCBwcml2LSZndDtkZWJ1Zy5kZWJ1Z2ZzX3BoeSk7CiYjNDM7CWF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnKCZhbXA7cHJpdi0mZ3Q7c3BlY19wcml2LCBwcml2LSZndDtkZWJ1Zy5kZWJ1Z2ZzX3BoeSwKJiM0MzsJCQkJICAgICAgJmFtcDtwcml2LSZndDtkZWJ1Zy5yeF9zdGF0cyk7CiAKIAlkZWJ1Z2ZzX2NyZWF0ZV9maWxlKCYjMzQ7dGd0X2ludF9zdGF0cyYjMzQ7LCAwNDAwLCBwcml2LSZndDtkZWJ1Zy5kZWJ1Z2ZzX3BoeSwKIAkJCSAgICBwcml2LCAmYW1wO2ZvcHNfdGd0X2ludF9zdGF0cyk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDAxOjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUwNTcKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyNTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBTdHJhdGVneSBmb3IgdGhpcyBQYXRjaCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgZm9jdXNlZCBvbiBkZXRlcm1pbmluZyB0aGUgZnV6emFiaWxpdHkgb2YgdGhpcyBwYXRjaCBhbmQgY3JhZnRpbmcgYW4gZWZmZWN0aXZlIGZ1enppbmcgc3RyYXRlZ3kuIFdlJiMzOTtyZSBsb29raW5nIGF0IG1vZGlmaWNhdGlvbnMgdG8gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuY2AsIGAuaGAsIGBkZWJ1Zy5jYCwgYW5kIGBodGNfZHJ2X2RlYnVnLmNgLiBJbW1lZGlhdGVseSwgSSBuZWVkIHRvIGtub3cgdGhlIGNvbnRleHQgb2YgdGhlc2UgZHJpdmVycy4KCk9rYXksIHNvIGBhdGg5a2AgaXMgUENJL0FIQiB3aXJlbGVzcywgYW5kIGBhdGg5a19odGNgIGlzIFVTQiB3aXJlbGVzcy4gVGhhdCYjMzk7cyBnb29kIGluZm9ybWF0aW9uLiBVU0IgZHJpdmVycyBhcmUgb2Z0ZW4gcHJpbWUgdGFyZ2V0cywgYmVjYXVzZSB0aGV5IGNhbiBiZSBlbXVsYXRlZC4gU3l6a2FsbGVyJiMzOTtzIFVTQiBmdXp6aW5nIGNhcGFiaWxpdGllcywgcGFydGljdWxhcmx5IHVzaW5nIFJhdyBHYWRnZXQsIGR1bW15X2hjZCwgb3IgdmhjaSwgY2FuIGJlIGluY3JlZGlibHkgZWZmZWN0aXZlIGhlcmUuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoaXMgYGNvbW1vbi1zcGVjdHJhbGAgY29kZSBpcyBldmVuIHVzZWQgYnkgYm90aC4gSXMgdGhlIHNhbWUgc3BlY3RyYWwgZnVuY3Rpb25hbGl0eSBpbiBib3RoIGBhdGg5a2AgYW5kIGBhdGg5a19odGNgIG9yIGFyZSB3ZSBvbmx5IGZ1enppbmcgb25lPwoKTm93LCBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBjb2RlYmFzZS4gSSYjMzk7bSBnb2luZyB0byBzdGFydCBzZWFyY2hpbmcgZm9yIHVzZXMgb2YgYGF0aDlrX2h0Y2AsIGBhdGg5a2AsIGFuZCB0aGUgc3BlY3RyYWwtcmVsYXRlZCBmdW5jdGlvbnMuIFdlJiMzOTtsbCBuZWVkIHRvIGtub3cgd2hpY2ggZnVuY3Rpb25zIGFyZSBlbnRyeSBwb2ludHMgYW5kIHdoZXRoZXIgdGhleSYjMzk7cmUgZXZlbiByZWFjaGFibGUuIFdlJiMzOTtsbCBuZWVkIHRvIGRldGVybWluZSB0aGUgb3B0aW1hbCBjb25maWd1cmF0aW9uIGZvciB0aGlzLiBUaGlzIHNlYXJjaCB3aWxsIGhlbHAgbWUgbmFycm93IGRvd24gd2hhdCBuZWVkcyBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDAxOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0FUSDlLX0hUQyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc9MTM9Y29uZmlnIEFUSDlLX0JUQ09FWF9TVVBQT1JUXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNC1cdGJvb2wgXCYjMzQ7QXRoZXJvcyBibHVldG9vdGggY29leGlzdGVuY2Ugc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTU6XHRkZXBlbmRzIG9uIChBVEg5SyB8fCBBVEg5S19IVEMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNi1cdGRlZmF1bHQgeVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnPTE1Nj1jb25maWcgQVRIOUtfUENJX05PX0VFUFJPTVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE3MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjE3Mjpjb25maWcgQVRIOUtfSFRDXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNzMtXHR0cmlzdGF0ZSBcJiMzNDtBdGhlcm9zIEhUQyBiYXNlZCB3aXJlbGVzcyBjYXJkcyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTg2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTg3OmNvbmZpZyBBVEg5S19IVENfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTg4LVx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDlrX2h0YyBkZWJ1Z2dpbmdcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjE4OTpcdGRlcGVuZHMgb24gQVRIOUtfSFRDIFx1MDAyNlx1MDAyNiBERUJVR19GU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTkwLVx0c2VsZWN0IEFUSDlLX0NPTU1PTl9ERUJVR1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnPTIwNj1jb25maWcgQVRIOUtfQ09NTU9OX1NQRUNUUkFMXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0yMDctXHRib29sIFwmIzM0O0F0aGVyb3MgYXRoOWsvYXRoOWtfaHRjIHNwZWN0cmFsIHNjYW4gc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MjA4Olx0ZGVwZW5kcyBvbiBBVEg5S19ERUJVR0ZTIHx8IEFUSDlLX0hUQ19ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0yMDktXHRzZWxlY3QgUkVMQVlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU9Njg9YXRoOWtfaHRjLXkgJiM0Mzs9XHRodGNfaHN0Lm8gXFxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtNzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6Nzc6YXRoOWtfaHRjLSQoQ09ORklHX0FUSDlLX0hUQ19ERUJVR0ZTKSAmIzQzOz0gaHRjX2Rydl9kZWJ1Zy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtNzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6Nzk6b2JqLSQoQ09ORklHX0FUSDlLX0hUQykgJiM0Mzs9IGF0aDlrX2h0Yy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtODAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwM19lZXByb20uYz0zMzkwPXN0YXRpYyBib29sIGF0aDlrX2h3X2FyOTMwMF9maWxsX2VlcHJvbShzdHJ1Y3QgYXRoX2h3ICphaClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAzX2VlcHJvbS5jLTM0MDAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAzX2VlcHJvbS5jOjM0MDE6I2lmIGRlZmluZWQoQ09ORklHX0FUSDlLX0RFQlVHRlMpIHx8IGRlZmluZWQoQ09ORklHX0FUSDlLX0hUQ19ERUJVR0ZTKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwM19lZXByb20uYy0zNDAyLXN0YXRpYyB1MzIgYXI5MDAzX2R1bXBfbW9kYWxfZWVwcm9tKGNoYXIgKmJ1ZiwgdTMyIGxlbiwgdTMyIHNpemUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYz0yMzI9c3RhdGljIGlubGluZSB2b2lkIGF0aDlrX3NrYl9xdWV1ZV9jb21wbGV0ZShzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0yMzgtXHR3aGlsZSAoKHNrYiA9IF9fc2tiX2RlcXVldWUocXVldWUpKSAhPSBOVUxMKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjIzOTojaWZkZWYgQ09ORklHX0FUSDlLX0hUQ19ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTI0MC1cdFx0aW50IGxuID0gc2tiLVx1MDAzZWxlbjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jPTM3Nj1zdGF0aWMgaW50IGhpZl91c2Jfc2VuZF90eChzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0zOTktXHQvKiBNZ210L0JlYWNvbiBmcmFtZXMgZG9uJiMzOTt0IHVzZSB0aGUgVFggYnVmZmVyIHBvb2wgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NDAwOlx0aWYgKCh0eF9jdGwtXHUwMDNldHlwZSA9PSBBVEg5S19IVENfTUdNVCkgfHxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NDAxOlx0ICAgICh0eF9jdGwtXHUwMDNldHlwZSA9PSBBVEg5S19IVENfQkVBQ09OKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00MDItXHRcdHJldCA9IGhpZl91c2Jfc2VuZF9tZ210KGhpZl9kZXYsIHNrYik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00MDYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjQwNzpcdGlmICgodHhfY3RsLVx1MDAzZXR5cGUgPT0gQVRIOUtfSFRDX05PUk1BTCkgfHxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NDA4Olx0ICAgICh0eF9jdGwtXHUwMDNldHlwZSA9PSBBVEg5S19IVENfQU1QRFUpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQwOS1cdFx0X19za2JfcXVldWVfdGFpbChcdTAwMjZoaWZfZGV2LVx1MDAzZXR4LnR4X3NrYl9xdWV1ZSwgc2tiKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jPTQ4Nz1zdGF0aWMgaW5saW5lIGJvb2wgY2hlY2tfaW5kZXgoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTggaWR4KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNDkyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo0OTM6XHRpZiAoKHR4X2N0bC1cdTAwM2V0eXBlID09IEFUSDlLX0hUQ19BTVBEVSkgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQ5NC1cdCAgICAodHhfY3RsLVx1MDAzZXN0YV9pZHggPT0gaWR4KSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9NTY9ZW51bSBodGNfb3Btb2RlIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6NjU6I2RlZmluZSBBVEg5S19IVENfQU1QRFUgIDFcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo2NjojZGVmaW5lIEFUSDlLX0hUQ19OT1JNQUwgMlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjY3OiNkZWZpbmUgQVRIOUtfSFRDX0JFQUNPTiAzXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6Njg6I2RlZmluZSBBVEg5S19IVENfTUdNVCAgIDRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC02OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo3MDojZGVmaW5lIEFUSDlLX0hUQ19UWF9DVFNPTkxZICAgICAgMHgxXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6NzE6I2RlZmluZSBBVEg5S19IVENfVFhfUlRTQ1RTICAgICAgIDB4MlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTcyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTczPXN0cnVjdCB0eF9mcmFtZV9oZHIge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC03Ny1cdHU4IHRpZG5vO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjc4Olx0X19iZTMyIGZsYWdzOyAvKiBBVEg5S19IVENfVFhfKiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTc5LVx0dTgga2V5X3R5cGU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTE5ND1zdHJ1Y3QgYXRoOWtfaHRjX3RhcmdldF9yeF9zdGF0cyB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTE5OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyMDA6I2RlZmluZSBBVEg5S19IVENfTUFYX1ZJRiAyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MjAxOiNkZWZpbmUgQVRIOUtfSFRDX01BWF9CQ05fVklGIDJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0yMDItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTI0OT1zdHJ1Y3QgYXRoOWtfdmlmX2l0ZXJfZGF0YSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI1My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyNTQ6I2RlZmluZSBBVEg5S19IVENfTUFYX1NUQSA4XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MjU1OiNkZWZpbmUgQVRIOUtfSFRDX01BWF9USUQgOFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI1Ni1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9MjY0PXN0cnVjdCBhdGg5a19odGNfc3RhIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0yNjUtXHR1OCBpbmRleDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyNjY6XHRlbnVtIHRpZF9hZ2dyX3N0YXRlIHRpZF9zdGF0ZVtBVEg5S19IVENfTUFYX1RJRF07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMjY3LVx0c3RydWN0IHdvcmtfc3RydWN0IHJjX3VwZGF0ZV93b3JrO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0yNzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MjcxOiNkZWZpbmUgQVRIOUtfSFRDX1JYQlVGIDI1NlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI3Mi0jZGVmaW5lIEhUQ19SWF9GUkFNRV9IRUFERVJfU0laRSA0MFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD0yODE9c3RydWN0IGF0aDlrX2h0Y19yeCB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI4Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyODc6I2RlZmluZSBBVEg5S19IVENfVFhfQ0xFQU5VUF9JTlRFUlZBTCA1MCAvKiBtcyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI4ODojZGVmaW5lIEFUSDlLX0hUQ19UWF9USU1FT1VUX0lOVEVSVkFMIDMwMDAgLyogbXMgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyODk6I2RlZmluZSBBVEg5S19IVENfVFhfUkVTRVJWRSAxMFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI5MDojZGVmaW5lIEFUSDlLX0hUQ19UWF9USU1FT1VUX0NPVU5UIDQwXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MjkxOiNkZWZpbmUgQVRIOUtfSFRDX1RYX1RIUkVTSE9MRCAoTUFYX1RYX0JVRl9OVU0gLSBBVEg5S19IVENfVFhfUkVTRVJWRSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0yOTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MjkzOiNkZWZpbmUgQVRIOUtfSFRDX09QX1RYX1FVRVVFU19TVE9QIEJJVCgwKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI5NDojZGVmaW5lIEFUSDlLX0hUQ19PUF9UWF9EUkFJTiAgICAgICBCSVQoMSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0yOTUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTMxMT1zdHJ1Y3QgYXRoOWtfaHRjX3R4X2N0bCB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MzEyOlx0dTggdHlwZTsgLyogQVRIOUtfSFRDXyogKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0zMTMtXHR1OCBlcGlkO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD0zMTk9c3RhdGljIGlubGluZSBzdHJ1Y3QgYXRoOWtfaHRjX3R4X2N0bCAqSFRDX1NLQl9DQihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0zMjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MzI4OiNpZmRlZiBDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0zMjktI2RlZmluZSBfX1NUQVRfU0FGRShoaWZfZGV2LCBleHByKVx0ZG8geyAoKGhpZl9kZXYpLVx1MDAzZWh0Y19oYW5kbGUtXHUwMDNlZHJ2X3ByaXYgPyAoZXhwcikgOiAwKTsgfSB3aGlsZSAoMClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9Mzg4PXN0YXRpYyBpbmxpbmUgdm9pZCBhdGg5a19odGNfZXJyX3N0YXRfcngoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0zOTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MzkzOiNlbmRpZiAvKiBDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlMgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0zOTQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTQwOT1zdHJ1Y3QgaHRjX2JlYWNvbiB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTQxNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo0MTY6XHRzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqYnNsb3RbQVRIOUtfSFRDX01BWF9CQ05fVklGXTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC00MTctXHR1MzIgYm1pc3NjbnQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTQ1Nj1zdHJ1Y3QgYXRoOWtfaHRjX3ByaXYge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC00NzgtXHR1OCBzdGFfc2xvdDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo0Nzk6XHR1OCB2aWZfc3RhX3Bvc1tBVEg5S19IVENfTUFYX1ZJRl07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNDgwLVx0dTggbnVtX2lic3NfdmlmO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC01MzUtXHRzdHJ1Y3QgZGVsYXllZF93b3JrIGR1dHlfY3ljbGVfd29yaztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo1MzY6I2lmZGVmIENPTkZJR19BVEg5S19IVENfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTUzNy1cdHN0cnVjdCBhdGg5a19kZWJ1ZyBkZWJ1Zztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9NjQxPWludCBhdGg5a19odGNfcmVzdW1lKHN0cnVjdCBodGNfdGFyZ2V0ICpodGNfaGFuZGxlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC02NDItI2VuZGlmXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6NjQzOiNpZmRlZiBDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC02NDQtaW50IGF0aDlrX2h0Y19pbml0X2RlYnVnKHN0cnVjdCBhdGhfaHcgKmFoKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9NjQ4PXN0YXRpYyBpbmxpbmUgdm9pZCBhdGg5a19odGNfZGVpbml0X2RlYnVnKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNjUwLX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo2NTE6I2VuZGlmIC8qIENPTkZJR19BVEg5S19IVENfREVCVUdGUyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTY1Mi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYz0xMTE9c3RhdGljIHZvaWQgYXRoOWtfaHRjX2JlYWNvbl9jb25maWdfYXAoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTExNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jOjExNzpcdGF0aDlrX2Ntbl9iZWFjb25fY29uZmlnX2FwKGFoLCBjb25mLCBBVEg5S19IVENfTUFYX0JDTl9WSUYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMTE4LVx0YXRoOWtfaHRjX2JlYWNvbl9pbml0KHByaXYsIGNvbmYsIGZhbHNlKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYz0xOTE9c3RhdGljIHZvaWQgYXRoOWtfaHRjX3NlbmRfYmVhY29uKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYy0yNDItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYzoyNDM6XHR0eF9jdGwtXHUwMDNldHlwZSA9IEFUSDlLX0hUQ19CRUFDT047XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYy0yNDQtXHR0eF9jdGwtXHUwMDNlZXBpZCA9IHByaXYtXHUwMDNlYmVhY29uX2VwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jPTI2ND1zdGF0aWMgaW50IGF0aDlrX2h0Y19jaG9vc2VfYnNsb3Qoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTI3Ni1cdHRzZnR1ID0gVFNGX1RPX1RVKHRzZiBcdTAwM2VcdTAwM2UgMzIsIHRzZik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYzoyNzc6XHRzbG90ID0gKCh0c2Z0dSAlIGludHZhbCkgKiBBVEg5S19IVENfTUFYX0JDTl9WSUYpIC8gaW50dmFsO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmM6Mjc4Olx0c2xvdCA9IEFUSDlLX0hUQ19NQVhfQkNOX1ZJRiAtIHNsb3QgLSAxO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMjc5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jPTMyNT12b2lkIGF0aDlrX2h0Y19hc3NpZ25fYnNsb3Qoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTMzMi1cdHNwaW5fbG9ja19iaChcdTAwMjZwcml2LVx1MDAzZWJlYWNvbl9sb2NrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jOjMzMzpcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFUSDlLX0hUQ19NQVhfQkNOX1ZJRjsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTMzNC1cdFx0aWYgKHByaXYtXHUwMDNlYmVhY29uLmJzbG90W2ldID09IE5VTEwpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYz0zNjU9dm9pZCBhdGg5a19odGNfc2V0X3RzZmFkanVzdChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMzgwLVx0ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYzozODE6XHR0c2ZhZGp1c3QgPSBjdXJfY29uZi1cdTAwM2ViZWFjb25faW50ZXJ2YWwgKiBhdnAtXHUwMDNlYnNsb3QgLyBBVEg5S19IVENfTUFYX0JDTl9WSUY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYy0zODItXHRhdnAtXHUwMDNldHNmYWRqdXN0ID0gY3B1X3RvX2xlNjQoVFVfVE9fVVNFQyh0c2ZhZGp1c3QpKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jPTM5OD1zdGF0aWMgY29uc3QgY2hhciBhdGg5a19odGNfZ3N0cmluZ3Nfc3RhdHNbXVtFVEhfR1NUUklOR19MRU5dID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMtNDE4LX07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jOjQxOTojZGVmaW5lIEFUSDlLX0hUQ19TU1RBVFNfTEVOIEFSUkFZX1NJWkUoYXRoOWtfaHRjX2dzdHJpbmdzX3N0YXRzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYy00MjAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYz00MzA9aW50IGF0aDlrX2h0Y19nZXRfZXRfc3NldF9jb3VudChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jLTQzMy1cdGlmIChzc2V0ID09IEVUSF9TU19TVEFUUylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM6NDM0Olx0XHRyZXR1cm4gQVRIOUtfSFRDX1NTVEFUU19MRU47XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jLTQzNS1cdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM9NDQ4PXZvaWQgYXRoOWtfaHRjX2dldF9ldF9zdGF0cyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jLTQ3My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM6NDc0Olx0V0FSTl9PTihpICE9IEFUSDlLX0hUQ19TU1RBVFNfTEVOKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMtNDc1LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM9NjA2PXN0YXRpYyBpbnQgYXRoOWtfaW5pdF9wcml2KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmMtNjczLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jOjY3NDpcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFUSDlLX0hUQ19NQVhfQkNOX1ZJRjsgaSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmMtNjc1LVx0XHRwcml2LVx1MDAzZWJlYWNvbi5ic2xvdFtpXSA9IE5VTEw7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jPTE4ND12b2lkIGF0aDlrX2h0Y19yZXNldChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTIzMy1cdG1vZF90aW1lcihcdTAwMjZwcml2LVx1MDAzZXR4LmNsZWFudXBfdGltZXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6MjM0Olx0XHQgIGppZmZpZXMgJiM0MzsgbXNlY3NfdG9famlmZmllcyhBVEg5S19IVENfVFhfQ0xFQU5VUF9JTlRFUlZBTCkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTIzNS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM9MjQwPXN0YXRpYyBpbnQgYXRoOWtfaHRjX3NldF9jaGFubmVsKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMzExLVx0bW9kX3RpbWVyKFx1MDAyNnByaXYtXHUwMDNldHguY2xlYW51cF90aW1lcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzozMTI6XHRcdCAgamlmZmllcyAmIzQzOyBtc2Vjc190b19qaWZmaWVzKEFUSDlLX0hUQ19UWF9DTEVBTlVQX0lOVEVSVkFMKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMzEzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYz0zNTA9c3RhdGljIGludCBhdGg5a19odGNfYWRkX21vbml0b3JfaW50ZXJmYWNlKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMzU3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjM1ODpcdGlmICgocHJpdi1cdTAwM2VudmlmcyBcdTAwM2U9IEFUSDlLX0hUQ19NQVhfVklGKSB8fFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjM1OTpcdCAgICAocHJpdi1cdTAwM2Vuc3RhdGlvbnMgXHUwMDNlPSBBVEg5S19IVENfTUFYX1NUQSkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0zNjAtXHRcdHJldCA9IC1FTk9CVUZTO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0zNjQtXHRzdGFfaWR4ID0gZmZ6KHByaXYtXHUwMDNlc3RhX3Nsb3QpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjM2NTpcdGlmICgoc3RhX2lkeCBcdTAwM2MgMCkgfHwgKHN0YV9pZHggXHUwMDNlIEFUSDlLX0hUQ19NQVhfU1RBKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTM2Ni1cdFx0cmV0ID0gLUVOT0JVRlM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jPTQ2Nj1zdGF0aWMgaW50IGF0aDlrX2h0Y19hZGRfc3RhdGlvbihzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTQ3Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzo0Nzg6XHRpZiAocHJpdi1cdTAwM2Vuc3RhdGlvbnMgXHUwMDNlPSBBVEg5S19IVENfTUFYX1NUQSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy00NzktXHRcdHJldHVybiAtRU5PQlVGUztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtNDgxLVx0c3RhX2lkeCA9IGZmeihwcml2LVx1MDAzZXN0YV9zbG90KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzo0ODI6XHRpZiAoKHN0YV9pZHggXHUwMDNjIDApIHx8IChzdGFfaWR4IFx1MDAzZSBBVEg5S19IVENfTUFYX1NUQSkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtNDgzLVx0XHRyZXR1cm4gLUVOT0JVRlM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jPTcwMj1zdGF0aWMgaW50IGF0aDlrX2h0Y190eF9hZ2dyX29wZXIoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy03MTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6NzE0Olx0aWYgKHRpZCBcdTAwM2U9IEFUSDlLX0hUQ19NQVhfVElEKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTcxNS1cdFx0cmV0dXJuIC1FSU5WQUw7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jPTkwNz1zdGF0aWMgaW50IGF0aDlrX2h0Y19zdGFydChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtOTYwLVx0c3Bpbl9sb2NrX2JoKFx1MDAyNnByaXYtXHUwMDNldHgudHhfbG9jayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6OTYxOlx0cHJpdi1cdTAwM2V0eC5mbGFncyBcdTAwMjY9IH5BVEg5S19IVENfT1BfVFhfUVVFVUVTX1NUT1A7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtOTYyLVx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2cHJpdi1cdTAwM2V0eC50eF9sb2NrKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtOTY2LVx0bW9kX3RpbWVyKFx1MDAyNnByaXYtXHUwMDNldHguY2xlYW51cF90aW1lcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzo5Njc6XHRcdCAgamlmZmllcyAmIzQzOyBtc2Vjc190b19qaWZmaWVzKEFUSDlLX0hUQ19UWF9DTEVBTlVQX0lOVEVSVkFMKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtOTY4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYz0xNjU4PXN0YXRpYyBpbnQgYXRoOWtfaHRjX2FtcGR1X2FjdGlvbihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMTY4OC1cdGNhc2UgSUVFRTgwMjExX0FNUERVX1RYX09QRVJBVElPTkFMOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjE2ODk6XHRcdGlmICh0aWQgXHUwMDNlPSBBVEg5S19IVENfTUFYX1RJRCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTE2OTAtXHRcdFx0cmV0ID0gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM9MTg3ND1zdHJ1Y3QgaWVlZTgwMjExX29wcyBhdGg5a19odGNfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0xOTA2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjE5MDc6I2lmZGVmIENPTkZJR19BVEg5S19IVENfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTE5MDgtXHQuZ2V0X2V0X3NzZXRfY291bnQgID0gYXRoOWtfaHRjX2dldF9ldF9zc2V0X2NvdW50LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz0yMz1zdGF0aWMgY29uc3QgaW50IHN1YnR5cGVfdHhxX3RvX2h3cVtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0yOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzozMDojZGVmaW5lIEFUSDlLX0hUQ19JTklUX1RYUShzdWJ0eXBlKSBkbyB7XHRcdFx0XFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0zMS1cdFx0cWkudHFpX3N1YnR5cGUgPSBzdWJ0eXBlX3R4cV90b19od3Fbc3VidHlwZV07XHRcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz01Nj12b2lkIGF0aDlrX2h0Y19jaGVja19zdG9wX3F1ZXVlcyhzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTU5LVx0cHJpdi1cdTAwM2V0eC5xdWV1ZWRfY250JiM0MzsmIzQzOztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo2MDpcdGlmICgocHJpdi1cdTAwM2V0eC5xdWV1ZWRfY250IFx1MDAzZT0gQVRIOUtfSFRDX1RYX1RIUkVTSE9MRCkgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NjE6XHQgICAgIShwcml2LVx1MDAzZXR4LmZsYWdzIFx1MDAyNiBBVEg5S19IVENfT1BfVFhfUVVFVUVTX1NUT1ApKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NjI6XHRcdHByaXYtXHUwMDNldHguZmxhZ3MgfD0gQVRIOUtfSFRDX09QX1RYX1FVRVVFU19TVE9QO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTYzLVx0XHRpZWVlODAyMTFfc3RvcF9xdWV1ZXMocHJpdi1cdTAwM2Vodyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTY4PXZvaWQgYXRoOWtfaHRjX2NoZWNrX3dha2VfcXVldWVzKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNzAtXHRzcGluX2xvY2tfYmgoXHUwMDI2cHJpdi1cdTAwM2V0eC50eF9sb2NrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo3MTpcdGlmICgocHJpdi1cdTAwM2V0eC5xdWV1ZWRfY250IFx1MDAzYyBBVEg5S19IVENfVFhfVEhSRVNIT0xEKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo3MjpcdCAgICAocHJpdi1cdTAwM2V0eC5mbGFncyBcdTAwMjYgQVRIOUtfSFRDX09QX1RYX1FVRVVFU19TVE9QKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjczOlx0XHRwcml2LVx1MDAzZXR4LmZsYWdzIFx1MDAyNj0gfkFUSDlLX0hUQ19PUF9UWF9RVUVVRVNfU1RPUDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy03NC1cdFx0aWVlZTgwMjExX3dha2VfcXVldWVzKHByaXYtXHUwMDNlaHcpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz0yMTQ9c3RhdGljIHZvaWQgYXRoOWtfaHRjX3R4X21nbXQoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0yNDAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6MjQxOlx0dHhfY3RsLVx1MDAzZXR5cGUgPSBBVEg5S19IVENfTUdNVDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0yNDItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTI2MD1zdGF0aWMgdm9pZCBhdGg5a19odGNfdHhfZGF0YShzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTI5Mi1cdGlmICh0eF9pbmZvLVx1MDAzZWZsYWdzIFx1MDAyNiBJRUVFODAyMTFfVFhfQ1RMX0FNUERVKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6MjkzOlx0XHR0eF9jdGwtXHUwMDNldHlwZSA9IEFUSDlLX0hUQ19BTVBEVTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzoyOTQ6XHRcdHR4X2hkci5kYXRhX3R5cGUgPSBBVEg5S19IVENfQU1QRFU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMjk1LVx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzoyOTY6XHRcdHR4X2N0bC1cdTAwM2V0eXBlID0gQVRIOUtfSFRDX05PUk1BTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzoyOTc6XHRcdHR4X2hkci5kYXRhX3R5cGUgPSBBVEg5S19IVENfTk9STUFMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTI5OC1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMzEyLVx0XHRpZiAoc2tiLVx1MDAzZWxlbiBcdTAwM2UgcHJpdi1cdTAwM2Vody1cdTAwM2V3aXBoeS1cdTAwM2VydHNfdGhyZXNob2xkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjMxMzpcdFx0XHRmbGFncyB8PSBBVEg5S19IVENfVFhfUlRTQ1RTO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTMxNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0zMTUtXHQvKiBDVFMtdG8tc2VsZiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjMxNjpcdGlmICghKGZsYWdzIFx1MDAyNiBBVEg5S19IVENfVFhfUlRTQ1RTKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0zMTctXHQgICAgKHZpZiBcdTAwMjZcdTAwMjYgdmlmLVx1MDAzZWJzc19jb25mLnVzZV9jdHNfcHJvdCkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6MzE4Olx0XHRmbGFncyB8PSBBVEg5S19IVENfVFhfQ1RTT05MWTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0zMTktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTM5Mj1zdGF0aWMgaW5saW5lIGJvb2wgX19hdGg5a19odGNfY2hlY2tfdHhfYWdncihzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTM5Ny1cdHNwaW5fbG9ja19iaChcdTAwMjZwcml2LVx1MDAzZXR4LnR4X2xvY2spO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjM5ODpcdGlmICgodGlkIFx1MDAzYyBBVEg5S19IVENfTUFYX1RJRCkgXHUwMDI2XHUwMDI2IChpc3RhLVx1MDAzZXRpZF9zdGF0ZVt0aWRdID09IEFHR1JfU1RPUCkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMzk5LVx0XHRyZXQgPSB0cnVlO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz00NDU9c3RhdGljIHZvaWQgYXRoOWtfaHRjX3R4X3Byb2Nlc3Moc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00NzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NDc5Olx0aWYgKHR4cy1cdTAwM2V0c19mbGFncyBcdTAwMjYgQVRIOUtfSFRDX1RYU1RBVF9BQ0spIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00ODAtXHRcdHR4X2luZm8tXHUwMDNlZmxhZ3MgfD0gSUVFRTgwMjExX1RYX1NUQVRfQUNLO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00ODQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NDg1Olx0aWYgKHR4cy1cdTAwM2V0c19mbGFncyBcdTAwMjYgQVRIOUtfSFRDX1RYU1RBVF9GSUxUKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ4Ni1cdFx0dHhfaW5mby1cdTAwM2VmbGFncyB8PSBJRUVFODAyMTFfVFhfU1RBVF9UWF9GSUxURVJFRDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00ODctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NDg4Olx0aWYgKHR4cy1cdTAwM2V0c19mbGFncyBcdTAwMjYgQVRIOUtfSFRDX1RYU1RBVF9SVENfQ1RTKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ4OS1cdFx0cmF0ZS1cdTAwM2VmbGFncyB8PSBJRUVFODAyMTFfVFhfUkNfVVNFX1JUU19DVFM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ5MS1cdHJhdGUtXHUwMDNlY291bnQgPSAxO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjQ5MjpcdHJhdGUtXHUwMDNlaWR4ID0gTVModHhzLVx1MDAzZXRzX3JhdGUsIEFUSDlLX0hUQ19UWFNUQVRfUkFURSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDkzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjQ5NDpcdGlmICh0eHMtXHUwMDNldHNfZmxhZ3MgXHUwMDI2IEFUSDlLX0hUQ19UWFNUQVRfTUNTKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDk1LVx0XHRyYXRlLVx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9UWF9SQ19NQ1M7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDk2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjQ5NzpcdFx0aWYgKHR4cy1cdTAwM2V0c19mbGFncyBcdTAwMjYgQVRIOUtfSFRDX1RYU1RBVF9DVzQwKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ5OC1cdFx0XHRyYXRlLVx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9UWF9SQ180MF9NSFpfV0lEVEg7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NDk5Olx0XHRpZiAodHhzLVx1MDAzZXRzX2ZsYWdzIFx1MDAyNiBBVEg5S19IVENfVFhTVEFUX1NHSSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy01MDAtXHRcdFx0cmF0ZS1cdTAwM2VmbGFncyB8PSBJRUVFODAyMTFfVFhfUkNfU0hPUlRfR0k7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTUzOT12b2lkIGF0aDlrX2h0Y190eF9kcmFpbihzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTU0My1cdHNwaW5fbG9ja19iaChcdTAwMjZwcml2LVx1MDAzZXR4LnR4X2xvY2spO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjU0NDpcdHByaXYtXHUwMDNldHguZmxhZ3MgfD0gQVRIOUtfSFRDX09QX1RYX0RSQUlOO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTU0NS1cdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnByaXYtXHUwMDNldHgudHhfbG9jayk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTU3My1cdHNwaW5fbG9ja19iaChcdTAwMjZwcml2LVx1MDAzZXR4LnR4X2xvY2spO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjU3NDpcdHByaXYtXHUwMDNldHguZmxhZ3MgXHUwMDI2PSB+QVRIOUtfSFRDX09QX1RYX0RSQUlOO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTU3NS1cdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnByaXYtXHUwMDNldHgudHhfbG9jayk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTU3OD12b2lkIGF0aDlrX3R4X2ZhaWxlZF90YXNrbGV0KHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNTgyLVx0c3Bpbl9sb2NrKFx1MDAyNnByaXYtXHUwMDNldHgudHhfbG9jayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NTgzOlx0aWYgKHByaXYtXHUwMDNldHguZmxhZ3MgXHUwMDI2IEFUSDlLX0hUQ19PUF9UWF9EUkFJTikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTU4NC1cdFx0c3Bpbl91bmxvY2soXHUwMDI2cHJpdi1cdTAwM2V0eC50eF9sb2NrKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9NjE4PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiogYXRoOWtfaHRjX3R4X2dldF9wYWNrZXQoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy02MjQtXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjYyNTpcdHU4IGVwaWQgPSBNUyh0eHMtXHUwMDNldHNfcmF0ZSwgQVRIOUtfSFRDX1RYU1RBVF9FUElEKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy02MjYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTcxNj1zdGF0aWMgaW5saW5lIGJvb2wgY2hlY2tfcGFja2V0KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNzI0LVx0XHQgICAgICAgdHhfY3RsLVx1MDAzZXRpbWVzdGFtcCAmIzQzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjcyNTpcdFx0ICAgICAgIG1zZWNzX3RvX2ppZmZpZXMoQVRIOUtfSFRDX1RYX1RJTUVPVVRfSU5URVJWQUwpKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTcyNi1cdFx0YXRoX2RiZyhjb21tb24sIFhNSVQsIFwmIzM0O0Ryb3BwaW5nIGEgcGFja2V0IGR1ZSB0byBUWCB0aW1lb3V0XFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9NzYxPXZvaWQgYXRoOWtfaHRjX3R4X2NsZWFudXBfdGltZXIoc3RydWN0IHRpbWVyX2xpc3QgKnQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTc3Ni1cdFx0XHRcdGV2ZW50LVx1MDAzZXR4cy5jb29raWUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6Nzc3Olx0XHRcdFx0TVMoZXZlbnQtXHUwMDNldHhzLnRzX3JhdGUsIEFUSDlLX0hUQ19UWFNUQVRfRVBJRCkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTc3OC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNzg0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjc4NTpcdFx0aWYgKCYjNDM7JiM0MztldmVudC1cdTAwM2Vjb3VudCBcdTAwM2U9IEFUSDlLX0hUQ19UWF9USU1FT1VUX0NPVU5UKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNzg2LVx0XHRcdGxpc3RfZGVsKFx1MDAyNmV2ZW50LVx1MDAzZWxpc3QpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy04MDUtXHRtb2RfdGltZXIoXHUwMDI2cHJpdi1cdTAwM2V0eC5jbGVhbnVwX3RpbWVyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjgwNjpcdFx0ICBqaWZmaWVzICYjNDM7IG1zZWNzX3RvX2ppZmZpZXMoQVRIOUtfSFRDX1RYX0NMRUFOVVBfSU5URVJWQUwpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy04MDctfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz04Mjc9Ym9vbCBhdGg5a19odGNfdHhxX3NldHVwKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdiwgaW50IHN1YnR5cGUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTgzNC1cdG1lbXNldChcdTAwMjZxaSwgMCwgc2l6ZW9mKHFpKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6ODM1Olx0QVRIOUtfSFRDX0lOSVRfVFhRKHN1YnR5cGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTgzNi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9ODUyPWludCBhdGg5a19odGNfY2FicV9zZXR1cChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTg1Ni1cdG1lbXNldChcdTAwMjZxaSwgMCwgc2l6ZW9mKHFpKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6ODU3Olx0QVRIOUtfSFRDX0lOSVRfVFhRKDApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTg1OC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9MTE4Nz1pbnQgYXRoOWtfcnhfaW5pdChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTExOTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6MTE5NDpcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFUSDlLX0hUQ19SWEJVRjsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0xMTk1LVx0XHRzdHJ1Y3QgYXRoOWtfaHRjX3J4YnVmICpyeGJ1ZiA9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jPTEzOD12b2lkIGF0aDlrX3dtaV9ldmVudF90YXNrbGV0KHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmMtMTc4LVx0XHRcdHNwaW5fbG9ja19iaChcdTAwMjZwcml2LVx1MDAzZXR4LnR4X2xvY2spO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jOjE3OTpcdFx0XHRpZiAocHJpdi1cdTAwM2V0eC5mbGFncyBcdTAwMjYgQVRIOUtfSFRDX09QX1RYX0RSQUlOKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmMtMTgwLVx0XHRcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2cHJpdi1cdTAwM2V0eC50eF9sb2NrKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg9Mzk9c3RydWN0IHdtaV9ldmVudF9zd2JhIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmgtNTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6NTE6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX0FDSyAgICAgICAgQklUKDApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6NTI6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX0ZJTFQgICAgICAgQklUKDEpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6NTM6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX1JUQ19DVFMgICAgQklUKDIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6NTQ6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX01DUyAgICAgICAgQklUKDMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6NTU6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX0NXNDAgICAgICAgQklUKDQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6NTY6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX1NHSSAgICAgICAgQklUKDUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmgtNTctXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oLTYzLSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oOjY0OiNkZWZpbmUgQVRIOUtfSFRDX1RYU1RBVF9SQVRFICAgICAgIDB4MGZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo2NTojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfUkFURV9TICAgICAwXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmgtNjYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6Njc6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX0VQSUQgICAgICAgMHhmMFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oOjY4OiNkZWZpbmUgQVRIOUtfSFRDX1RYU1RBVF9FUElEX1MgICAgIDRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaC02OS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAwMTowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODExOAoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDg5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgSSBhbmFseXplIHRoaXM6CgoqKkFuYWx5emluZyBhdGg5a19odGMgYW5kIFJlbGF0ZWQgRnVuY3Rpb25zKioKCk9rYXksIHNvIGBhdGg5a19odGNgIGlzIHRoZSBVU0IgV2ktRmkgZHJpdmVyLCB0aGF0JiMzOTtzIHRoZSBzdGFydGluZyBwb2ludC4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgYGF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnYCBhbmQsIG1vcmUgaW1wb3J0YW50bHksIGBhdGhfY21uX3Byb2Nlc3NfZmZ0YCBhcmUgbGV2ZXJhZ2VkIGluIGJvdGggdGhlIHN0YW5kYXJkIGBhdGg5a2AgZHJpdmVyIGFuZCB0aGUgSFRDIHZhcmlhbnQuIFRoZSBIVEMgdmVyc2lvbiBzdWdnZXN0cyBhIHRldGhlcmVkIG9yIGhvc3RlZCBkZXZpY2UsIHNvIHRoZXJlJiMzOTtzIGxpa2VseSBzb21lIGFyY2hpdGVjdHVyYWwgZGlmZmVyZW5jZSB0byB1bmRlcnN0YW5kIGluIHRoZSBGRlQgcHJvY2Vzc2luZy4gVGhlIHNwZWN0cmFsIGluaXRpYWxpemF0aW9uIGRlYnVnZ2luZyBpcyBpbnRlcmVzdGluZyB0b28sIEkmIzM5O2xsIG5lZWQgdG8gc2VlIGhvdyB0aGV5JiMzOTtyZSBoYW5kbGluZyBkZWJ1Z2dpbmcgdGhlIGluaXRpYWxpemF0aW9uIG9mIHNwZWN0cmFsIGRhdGEuCgpNeSBpbW1lZGlhdGUgcGxhbiBpcyB0byB1c2UgYGdyZXBgIHRvIHF1aWNrbHkgY3Jvc3MtcmVmZXJlbmNlIHRoZSBgYXRoX2Ntbl9wcm9jZXNzX2ZmdGAgZnVuY3Rpb24gYW5kIHRoZSB1c2Ugb2YgdGhlIGBzcGVjX3ByaXZgIHN0cnVjdHVyZS4gVGhpcyBzaG91bGQgaGVscCB0byBxdWlja2x5IGhpZ2hsaWdodCB0aGUga2V5IGFyZWFzIG9mIGludGVyYWN0aW9uIGFuZCBkYXRhIGZsb3cuIFRoaXMgd2lsbCBsaWtlbHkgZ2l2ZSBtZSBhIGdvb2Qgb3ZlcnZpZXcgb2YgaG93IHRoZSBGRlQgZnVuY3Rpb25hbGl0eSBpcyBoYW5kbGVkIGF0IGEgbG93IGxldmVsIGluIHRoZSBkcml2ZXIsIGFuZCBpdHMgYXNzb2NpYXRlZCBkYXRhLiBUaGlzIHdpbGwgcHJvdmlkZSBhIHF1aWNrZXIgbWFwIG9mIHdoZXJlIHRoZSBzcGVjdHJhbCBkYXRhIGFuZCBwcm9jZXNzaW5nIGFyZSBiZWluZyBoYW5kbGVkIGluIHJlbGF0aW9uIHRvIHRoZSBtYWluIGRyaXZlciBhbmQgdGhlIEhUQyB2ZXJzaW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDAxOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2F0aF9jbW5fcHJvY2Vzc19mZnR8c3BlY19wcml2JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXRoOWsuaD05ODM9c3RydWN0IGF0aF9zb2Z0YyB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2F0aDlrLmgtMTA2My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hdGg5ay5oOjEwNjQ6XHRzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2IHNwZWNfcHJpdjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hdGg5ay5oLTEwNjUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NoYW5uZWwuYz0yMz1zdGF0aWMgaW50IGF0aF9zZXRfY2hhbm5lbChzdHJ1Y3QgYXRoX3NvZnRjICpzYylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY2hhbm5lbC5jLTk1LVx0XHRpZiAodGVzdF9iaXQoQVRIX09QX1NDQU5OSU5HLCBcdTAwMjZjb21tb24tXHUwMDNlb3BfZmxhZ3MpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NoYW5uZWwuYzo5NjpcdFx0XHRzYy1cdTAwM2VzcGVjX3ByaXYuc3BlY3RyYWxfbW9kZSA9PSBTUEVDVFJBTF9DSEFOU0NBTilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jaGFubmVsLmM6OTc6XHRcdFx0YXRoOWtfY21uX3NwZWN0cmFsX3NjYW5fdHJpZ2dlcihjb21tb24sIFx1MDAyNnNjLVx1MDAzZXNwZWNfcHJpdik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY2hhbm5lbC5jLTk4LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYz0yMj1zdGF0aWMgczggZml4X3Jzc2lfaW52X29ubHkodTggcnNzaV92YWwpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTI4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjI5OnN0YXRpYyB2b2lkIGF0aF9kZWJ1Z19zZW5kX2ZmdF9zYW1wbGUoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTMwLVx0XHRcdFx0ICAgICAgc3RydWN0IGZmdF9zYW1wbGVfdGx2ICpmZnRfc2FtcGxlX3Rsdilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMzItXHRpbnQgbGVuZ3RoO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjMzOlx0aWYgKCFzcGVjX3ByaXYtXHUwMDNlcmZzX2NoYW5fc3BlY19zY2FuKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTM0LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTM3LVx0XHQgc2l6ZW9mKCpmZnRfc2FtcGxlX3Rsdik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6Mzg6XHRyZWxheV93cml0ZShzcGVjX3ByaXYtXHUwMDNlcmZzX2NoYW5fc3BlY19zY2FuLCBmZnRfc2FtcGxlX3RsdiwgbGVuZ3RoKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0zOS19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jPTEyNz10eXBlZGVmIGludCAoYXRoX2Ntbl9mZnRfc2FtcGxlX2hhbmRsZXIpIChzdHJ1Y3QgYXRoX3J4X3N0YXR1cyAqcnMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6MTI4Olx0XHRcdHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xMjktXHRcdFx0dTggKnNhbXBsZV9idWYsIHU2NCB0c2YsIHUxNiBmcmVxLCBpbnQgY2hhbl90eXBlKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM9MTMyPWF0aF9jbW5fcHJvY2Vzc19odDIwX2ZmdChzdHJ1Y3QgYXRoX3J4X3N0YXR1cyAqcnMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6MTMzOlx0XHRcdHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xMzQtXHRcdFx0dTggKnNhbXBsZV9idWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTEzNy1cdHN0cnVjdCBmZnRfc2FtcGxlX2h0MjAgZmZ0X3NhbXBsZV8yMDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzoxMzg6XHRzdHJ1Y3QgYXRoX2NvbW1vbiAqY29tbW9uID0gYXRoOWtfaHdfY29tbW9uKHNwZWNfcHJpdi1cdTAwM2VhaCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6MTM5Olx0c3RydWN0IGF0aF9odyAqYWggPSBzcGVjX3ByaXYtXHUwMDNlYWg7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTQwLVx0c3RydWN0IGF0aF9odDIwX21hZ19pbmZvICptYWdfaW5mbztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMjI5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjIzMDpcdGF0aF9kZWJ1Z19zZW5kX2ZmdF9zYW1wbGUoc3BlY19wcml2LCB0bHYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTIzMS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM9MjM2PWF0aF9jbW5fcHJvY2Vzc19odDIwXzQwX2ZmdChzdHJ1Y3QgYXRoX3J4X3N0YXR1cyAqcnMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6MjM3Olx0XHRcdHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0yMzgtXHRcdFx0dTggKnNhbXBsZV9idWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTI0MS1cdHN0cnVjdCBmZnRfc2FtcGxlX2h0MjBfNDAgZmZ0X3NhbXBsZV80MDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzoyNDI6XHRzdHJ1Y3QgYXRoX2NvbW1vbiAqY29tbW9uID0gYXRoOWtfaHdfY29tbW9uKHNwZWNfcHJpdi1cdTAwM2VhaCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6MjQzOlx0c3RydWN0IGF0aF9odyAqYWggPSBzcGVjX3ByaXYtXHUwMDNlYWg7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMjQ0LVx0c3RydWN0IGF0aDlrX2h3X2NhbF9kYXRhICpjYWxkYXRhID0gYWgtXHUwMDNlY2FsZGF0YTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNDA2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjQwNzpcdGF0aF9kZWJ1Z19zZW5kX2ZmdF9zYW1wbGUoc3BlY19wcml2LCB0bHYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTQwOC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM9NDQ4PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo0NDk6YXRoX2Ntbl9pc19mZnRfYnVmX2Z1bGwoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTQ1MC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTQ1My1cdHN0cnVjdCByY2hhbl9idWYgKmJ1ZjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo0NTQ6XHRzdHJ1Y3QgcmNoYW4gKnJjID0gc3BlY19wcml2LVx1MDAzZXJmc19jaGFuX3NwZWNfc2NhbjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy00NTUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTQ2Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo0Njg6c3RhdGljIHZvaWQgYXRoX2Ntbl9jb3VudF9mZnRfc2FtcGxlKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy00NjktXHRcdFx0XHQgICAgIGludCByZXQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNDcwLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo0NzE6XHRzdHJ1Y3QgYXRoX3J4X3N0YXRzICpyeF9zdGF0cyA9IHNwZWNfcHJpdi1cdTAwM2VyeF9zdGF0cztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy00NzItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTQ4Mi0vKiByZXR1cm5zIDEgaWYgdGhpcyB3YXMgYSBzcGVjdHJhbCBmcmFtZSwgZXZlbiBpZiBub3QgaGFuZGxlZC4gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo0ODM6aW50IGF0aF9jbW5fcHJvY2Vzc19mZnQoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LCBzdHJ1Y3QgaWVlZTgwMjExX2hkciAqaGRyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTQ4NC1cdFx0ICAgIHN0cnVjdCBhdGhfcnhfc3RhdHVzICpycywgdTY0IHRzZilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNDg2LVx0dTggc2FtcGxlX2J1ZltTUEVDVFJBTF9TQU1QTEVfTUFYX0xFTl0gPSB7MH07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6NDg3Olx0c3RydWN0IGF0aF9odyAqYWggPSBzcGVjX3ByaXYtXHUwMDNlYWg7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6NDg4Olx0c3RydWN0IGF0aF9jb21tb24gKmNvbW1vbiA9IGF0aDlrX2h3X2NvbW1vbihzcGVjX3ByaXYtXHUwMDNlYWgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTQ4OS1cdHU4IG51bV9iaW5zLCAqdmRhdGEgPSAodTggKiloZHI7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTUxNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo1MTg6XHRpZiAoIXNwZWNfcHJpdi1cdTAwM2VyZnNfY2hhbl9zcGVjX3NjYW4pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNTE5LVx0XHRyZXR1cm4gMTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNTIzLVx0ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6NTI0Olx0cmV0ID0gYXRoX2Ntbl9pc19mZnRfYnVmX2Z1bGwoc3BlY19wcml2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy01MjUtXHRpZiAocmV0ID09IDEpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNjM2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjYzNzpcdFx0XHRcdHJldCA9IGZmdF9oYW5kbGVyKHJzLCBzcGVjX3ByaXYsIHNhbXBsZV9idWYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNjM4LVx0XHRcdFx0XHRcdCAgdHNmLCBmcmVxLCBjaGFuX3R5cGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTYzOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo2NDA6XHRcdFx0XHRhdGhfY21uX2NvdW50X2ZmdF9zYW1wbGUoc3BlY19wcml2LCByZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTY0MS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNjUxLVx0XHRcdGlmIChzYW1wbGVfYnl0ZXMgPT0gc2FtcGxlX2xlbikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjY1MjpcdFx0XHRcdHJldCA9IGZmdF9oYW5kbGVyKHJzLCBzcGVjX3ByaXYsIHNhbXBsZV9zdGFydCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy02NTMtXHRcdFx0XHRcdFx0ICB0c2YsIGZyZXEsIGNoYW5fdHlwZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNjU0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjY1NTpcdFx0XHRcdGF0aF9jbW5fY291bnRfZmZ0X3NhbXBsZShzcGVjX3ByaXYsIHJldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNjU2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy02OTAtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjY5MTpFWFBPUlRfU1lNQk9MKGF0aF9jbW5fcHJvY2Vzc19mZnQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTY5Mi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM9Njk3PXN0YXRpYyBzc2l6ZV90IHJlYWRfZmlsZV9zcGVjX3NjYW5fY3RsKHN0cnVjdCBmaWxlICpmaWxlLCBjaGFyIF9fdXNlciAqdXNlcl9idWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTY5OS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6NzAwOlx0c3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2ID0gZmlsZS1cdTAwM2Vwcml2YXRlX2RhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNzAxLVx0Y2hhciAqbW9kZSA9IFwmIzM0O1wmIzM0Oztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNzAzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjcwNDpcdHN3aXRjaCAoc3BlY19wcml2LVx1MDAzZXNwZWN0cmFsX21vZGUpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy03MDUtXHRjYXNlIFNQRUNUUkFMX0RJU0FCTEVEOlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYz03MjI9dm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfc2Nhbl90cmlnZ2VyKHN0cnVjdCBhdGhfY29tbW9uICpjb21tb24sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6NzIzOlx0XHRcdFx0IHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy03MjQte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjcyNTpcdHN0cnVjdCBhdGhfaHcgKmFoID0gc3BlY19wcml2LVx1MDAzZWFoO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTcyNi1cdHUzMiByeGZpbHRlcjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNzM1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjczNjpcdGlmICghc3BlY19wcml2LVx1MDAzZXNwZWNfY29uZmlnLmVuYWJsZWQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNzM3LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTc0OS1cdCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjc1MDpcdGF0aDlrX2Ntbl9zcGVjdHJhbF9zY2FuX2NvbmZpZyhjb21tb24sIHNwZWNfcHJpdiwgc3BlY19wcml2LVx1MDAzZXNwZWN0cmFsX21vZGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTc1MS1cdGF0aDlrX2h3X29wcyhhaCktXHUwMDNlc3BlY3RyYWxfc2Nhbl90cmlnZ2VyKGFoKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM9NzU2PWludCBhdGg5a19jbW5fc3BlY3RyYWxfc2Nhbl9jb25maWcoc3RydWN0IGF0aF9jb21tb24gKmNvbW1vbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo3NTc6XHRcdFx0ICAgICAgIHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy03NTgtXHRcdFx0ICAgICAgIGVudW0gc3BlY3RyYWxfbW9kZSBzcGVjdHJhbF9tb2RlKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTc1OS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6NzYwOlx0c3RydWN0IGF0aF9odyAqYWggPSBzcGVjX3ByaXYtXHUwMDNlYWg7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNzYxLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy03NjgtXHRjYXNlIFNQRUNUUkFMX0RJU0FCTEVEOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjc2OTpcdFx0c3BlY19wcml2LVx1MDAzZXNwZWNfY29uZmlnLmVuYWJsZWQgPSAwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTc3MC1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTc3NC1cdFx0ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6Nzc1Olx0XHRzcGVjX3ByaXYtXHUwMDNlc3BlY19jb25maWcuZW5kbGVzcyA9IDE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6Nzc2Olx0XHRzcGVjX3ByaXYtXHUwMDNlc3BlY19jb25maWcuZW5hYmxlZCA9IDE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNzc3LVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNzc5LVx0Y2FzZSBTUEVDVFJBTF9NQU5VQUw6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6NzgwOlx0XHRzcGVjX3ByaXYtXHUwMDNlc3BlY19jb25maWcuZW5kbGVzcyA9IDA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6NzgxOlx0XHRzcGVjX3ByaXYtXHUwMDNlc3BlY19jb25maWcuZW5hYmxlZCA9IDE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNzgyLVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNzg3LVx0YXRoX3BzX29wcyhjb21tb24pLVx1MDAzZXdha2V1cChjb21tb24pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjc4ODpcdGF0aDlrX2h3X29wcyhhaCktXHUwMDNlc3BlY3RyYWxfc2Nhbl9jb25maWcoYWgsIFx1MDAyNnNwZWNfcHJpdi1cdTAwM2VzcGVjX2NvbmZpZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNzg5LVx0YXRoX3BzX29wcyhjb21tb24pLVx1MDAzZXJlc3RvcmUoY29tbW9uKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy03OTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6NzkxOlx0c3BlY19wcml2LVx1MDAzZXNwZWN0cmFsX21vZGUgPSBzcGVjdHJhbF9tb2RlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTc5Mi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM9Nzk3PXN0YXRpYyBzc2l6ZV90IHdyaXRlX2ZpbGVfc3BlY19zY2FuX2N0bChzdHJ1Y3QgZmlsZSAqZmlsZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtODAwLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo4MDE6XHRzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYgPSBmaWxlLVx1MDAzZXByaXZhdGVfZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo4MDI6XHRzdHJ1Y3QgYXRoX2NvbW1vbiAqY29tbW9uID0gYXRoOWtfaHdfY29tbW9uKHNwZWNfcHJpdi1cdTAwM2VhaCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtODAzLVx0Y2hhciBidWZbMzJdO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy04MTUtXHRpZiAoc3RybmNtcChcJiMzNDt0cmlnZ2VyXCYjMzQ7LCBidWYsIDcpID09IDApIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo4MTY6XHRcdGF0aDlrX2Ntbl9zcGVjdHJhbF9zY2FuX3RyaWdnZXIoY29tbW9uLCBzcGVjX3ByaXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTgxNy1cdH0gZWxzZSBpZiAoc3RybmNtcChcJiMzNDtiYWNrZ3JvdW5kXCYjMzQ7LCBidWYsIDEwKSA9PSAwKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6ODE4Olx0XHRhdGg5a19jbW5fc3BlY3RyYWxfc2Nhbl9jb25maWcoY29tbW9uLCBzcGVjX3ByaXYsIFNQRUNUUkFMX0JBQ0tHUk9VTkQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTgxOS1cdFx0YXRoX2RiZyhjb21tb24sIENPTkZJRywgXCYjMzQ7c3BlY3RyYWwgc2NhbjogYmFja2dyb3VuZCBtb2RlIGVuYWJsZWRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTgyMC1cdH0gZWxzZSBpZiAoc3RybmNtcChcJiMzNDtjaGFuc2NhblwmIzM0OywgYnVmLCA4KSA9PSAwKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6ODIxOlx0XHRhdGg5a19jbW5fc3BlY3RyYWxfc2Nhbl9jb25maWcoY29tbW9uLCBzcGVjX3ByaXYsIFNQRUNUUkFMX0NIQU5TQ0FOKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy04MjItXHRcdGF0aF9kYmcoY29tbW9uLCBDT05GSUcsIFwmIzM0O3NwZWN0cmFsIHNjYW46IGNoYW5uZWwgc2NhbiBtb2RlIGVuYWJsZWRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTgyMy1cdH0gZWxzZSBpZiAoc3RybmNtcChcJiMzNDttYW51YWxcJiMzNDssIGJ1ZiwgNikgPT0gMCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjgyNDpcdFx0YXRoOWtfY21uX3NwZWN0cmFsX3NjYW5fY29uZmlnKGNvbW1vbiwgc3BlY19wcml2LCBTUEVDVFJBTF9NQU5VQUwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTgyNS1cdFx0YXRoX2RiZyhjb21tb24sIENPTkZJRywgXCYjMzQ7c3BlY3RyYWwgc2NhbjogbWFudWFsIG1vZGUgZW5hYmxlZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtODI2LVx0fSBlbHNlIGlmIChzdHJuY21wKFwmIzM0O2Rpc2FibGVcJiMzNDssIGJ1ZiwgNykgPT0gMCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjgyNzpcdFx0YXRoOWtfY21uX3NwZWN0cmFsX3NjYW5fY29uZmlnKGNvbW1vbiwgc3BlY19wcml2LCBTUEVDVFJBTF9ESVNBQkxFRCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtODI4LVx0XHRhdGhfZGJnKGNvbW1vbiwgQ09ORklHLCBcJiMzNDtzcGVjdHJhbCBzY2FuOiBkaXNhYmxlZFxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jPTg0OD1zdGF0aWMgc3NpemVfdCByZWFkX2ZpbGVfc3BlY3RyYWxfc2hvcnRfcmVwZWF0KHN0cnVjdCBmaWxlICpmaWxlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy04NTEte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjg1MjpcdHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiA9IGZpbGUtXHUwMDNlcHJpdmF0ZV9kYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTg1My1cdGNoYXIgYnVmWzMyXTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtODU1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjg1NjpcdGxlbiA9IHNwcmludGYoYnVmLCBcJiMzNDslZFxcblwmIzM0Oywgc3BlY19wcml2LVx1MDAzZXNwZWNfY29uZmlnLnNob3J0X3JlcGVhdCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtODU3LVx0cmV0dXJuIHNpbXBsZV9yZWFkX2Zyb21fYnVmZmVyKHVzZXJfYnVmLCBjb3VudCwgcHBvcywgYnVmLCBsZW4pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYz04NjA9c3RhdGljIHNzaXplX3Qgd3JpdGVfZmlsZV9zcGVjdHJhbF9zaG9ydF9yZXBlYXQoc3RydWN0IGZpbGUgKmZpbGUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTg2My17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6ODY0Olx0c3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2ID0gZmlsZS1cdTAwM2Vwcml2YXRlX2RhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtODY1LVx0dW5zaWduZWQgbG9uZyB2YWw7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTg3NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo4NzU6XHRzcGVjX3ByaXYtXHUwMDNlc3BlY19jb25maWcuc2hvcnRfcmVwZWF0ID0gdmFsO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTg3Ni1cdHJldHVybiBjb3VudDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM9ODkxPXN0YXRpYyBzc2l6ZV90IHJlYWRfZmlsZV9zcGVjdHJhbF9jb3VudChzdHJ1Y3QgZmlsZSAqZmlsZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtODk0LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo4OTU6XHRzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYgPSBmaWxlLVx1MDAzZXByaXZhdGVfZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy04OTYtXHRjaGFyIGJ1ZlszMl07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTg5OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo4OTk6XHRsZW4gPSBzcHJpbnRmKGJ1ZiwgXCYjMzQ7JWRcXG5cJiMzNDssIHNwZWNfcHJpdi1cdTAwM2VzcGVjX2NvbmZpZy5jb3VudCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtOTAwLVx0cmV0dXJuIHNpbXBsZV9yZWFkX2Zyb21fYnVmZmVyKHVzZXJfYnVmLCBjb3VudCwgcHBvcywgYnVmLCBsZW4pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYz05MDM9c3RhdGljIHNzaXplX3Qgd3JpdGVfZmlsZV9zcGVjdHJhbF9jb3VudChzdHJ1Y3QgZmlsZSAqZmlsZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtOTA2LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo5MDc6XHRzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYgPSBmaWxlLVx1MDAzZXByaXZhdGVfZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy05MDgtXHR1bnNpZ25lZCBsb25nIHZhbDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtOTE2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjkxNzpcdHNwZWNfcHJpdi1cdTAwM2VzcGVjX2NvbmZpZy5jb3VudCA9IHZhbDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy05MTgtXHRyZXR1cm4gY291bnQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jPTkzMz1zdGF0aWMgc3NpemVfdCByZWFkX2ZpbGVfc3BlY3RyYWxfcGVyaW9kKHN0cnVjdCBmaWxlICpmaWxlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy05MzYte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjkzNzpcdHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiA9IGZpbGUtXHUwMDNlcHJpdmF0ZV9kYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTkzOC1cdGNoYXIgYnVmWzMyXTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtOTQwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjk0MTpcdGxlbiA9IHNwcmludGYoYnVmLCBcJiMzNDslZFxcblwmIzM0Oywgc3BlY19wcml2LVx1MDAzZXNwZWNfY29uZmlnLnBlcmlvZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtOTQyLVx0cmV0dXJuIHNpbXBsZV9yZWFkX2Zyb21fYnVmZmVyKHVzZXJfYnVmLCBjb3VudCwgcHBvcywgYnVmLCBsZW4pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYz05NDU9c3RhdGljIHNzaXplX3Qgd3JpdGVfZmlsZV9zcGVjdHJhbF9wZXJpb2Qoc3RydWN0IGZpbGUgKmZpbGUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTk0OC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6OTQ5Olx0c3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2ID0gZmlsZS1cdTAwM2Vwcml2YXRlX2RhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtOTUwLVx0dW5zaWduZWQgbG9uZyB2YWw7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTk1OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo5NjA6XHRzcGVjX3ByaXYtXHUwMDNlc3BlY19jb25maWcucGVyaW9kID0gdmFsO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTk2MS1cdHJldHVybiBjb3VudDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM9OTc2PXN0YXRpYyBzc2l6ZV90IHJlYWRfZmlsZV9zcGVjdHJhbF9mZnRfcGVyaW9kKHN0cnVjdCBmaWxlICpmaWxlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy05Nzkte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjk4MDpcdHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiA9IGZpbGUtXHUwMDNlcHJpdmF0ZV9kYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTk4MS1cdGNoYXIgYnVmWzMyXTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtOTgzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjk4NDpcdGxlbiA9IHNwcmludGYoYnVmLCBcJiMzNDslZFxcblwmIzM0Oywgc3BlY19wcml2LVx1MDAzZXNwZWNfY29uZmlnLmZmdF9wZXJpb2QpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTk4NS1cdHJldHVybiBzaW1wbGVfcmVhZF9mcm9tX2J1ZmZlcih1c2VyX2J1ZiwgY291bnQsIHBwb3MsIGJ1ZiwgbGVuKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM9OTg4PXN0YXRpYyBzc2l6ZV90IHdyaXRlX2ZpbGVfc3BlY3RyYWxfZmZ0X3BlcmlvZChzdHJ1Y3QgZmlsZSAqZmlsZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtOTkxLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo5OTI6XHRzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYgPSBmaWxlLVx1MDAzZXByaXZhdGVfZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy05OTMtXHR1bnNpZ25lZCBsb25nIHZhbDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTAwMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzoxMDAzOlx0c3BlY19wcml2LVx1MDAzZXNwZWNfY29uZmlnLmZmdF9wZXJpb2QgPSB2YWw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTAwNC1cdHJldHVybiBjb3VudDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM9MTA0Mz1zdGF0aWMgY29uc3Qgc3RydWN0IHJjaGFuX2NhbGxiYWNrcyByZnNfc3BlY19zY2FuX2NiID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xMDUxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjEwNTI6dm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfZGVpbml0X2RlYnVnKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xMDUzLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzoxMDU0Olx0aWYgKHNwZWNfcHJpdi1cdTAwM2VyZnNfY2hhbl9zcGVjX3NjYW4pIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzoxMDU1Olx0XHRyZWxheV9jbG9zZShzcGVjX3ByaXYtXHUwMDNlcmZzX2NoYW5fc3BlY19zY2FuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzoxMDU2Olx0XHRzcGVjX3ByaXYtXHUwMDNlcmZzX2NoYW5fc3BlY19zY2FuID0gTlVMTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xMDU3LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYz0xMDU5PUVYUE9SVF9TWU1CT0woYXRoOWtfY21uX3NwZWN0cmFsX2RlaW5pdF9kZWJ1Zyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTA2MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzoxMDYxOnZvaWQgYXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTEwNjItXHRcdFx0XHQgICBzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX3BoeSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTA2NC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6MTA2NTpcdHNwZWNfcHJpdi1cdTAwM2VyeF9zdGF0cyA9IHJ4X3N0YXRzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjEwNjY6XHRzcGVjX3ByaXYtXHUwMDNlcmZzX2NoYW5fc3BlY19zY2FuID0gcmVsYXlfb3BlbihcJiMzNDtzcGVjdHJhbF9zY2FuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTEwNjctXHRcdFx0XHRcdCAgICBkZWJ1Z2ZzX3BoeSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTA2OS1cdFx0XHRcdFx0ICAgIE5VTEwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjEwNzA6XHRpZiAoIXNwZWNfcHJpdi1cdTAwM2VyZnNfY2hhbl9zcGVjX3NjYW4pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTA3MS1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xMDc0LVx0XHRcdCAgICAwNjAwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjEwNzU6XHRcdFx0ICAgIGRlYnVnZnNfcGh5LCBzcGVjX3ByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTA3Ni1cdFx0XHQgICAgXHUwMDI2Zm9wc19zcGVjX3NjYW5fY3RsKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTA3OC1cdFx0XHQgICAgMDYwMCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzoxMDc5Olx0XHRcdCAgICBkZWJ1Z2ZzX3BoeSwgc3BlY19wcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTEwODAtXHRcdFx0ICAgIFx1MDAyNmZvcHNfc3BlY3RyYWxfc2hvcnRfcmVwZWF0KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTA4Mi1cdFx0XHQgICAgMDYwMCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzoxMDgzOlx0XHRcdCAgICBkZWJ1Z2ZzX3BoeSwgc3BlY19wcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTEwODQtXHRcdFx0ICAgIFx1MDAyNmZvcHNfc3BlY3RyYWxfY291bnQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xMDg2LVx0XHRcdCAgICAwNjAwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjEwODc6XHRcdFx0ICAgIGRlYnVnZnNfcGh5LCBzcGVjX3ByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTA4OC1cdFx0XHQgICAgXHUwMDI2Zm9wc19zcGVjdHJhbF9wZXJpb2QpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xMDkwLVx0XHRcdCAgICAwNjAwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjEwOTE6XHRcdFx0ICAgIGRlYnVnZnNfcGh5LCBzcGVjX3ByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTA5Mi1cdFx0XHQgICAgXHUwMDI2Zm9wc19zcGVjdHJhbF9mZnRfcGVyaW9kKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmg9MTcwPXN0YXRpYyBpbmxpbmUgdTggc3BlY3RyYWxfYml0bWFwX3dlaWdodCh1OCAqYmlucylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmgtMTc1LSNpZmRlZiBDT05GSUdfQVRIOUtfQ09NTU9OX1NQRUNUUkFMXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmg6MTc2OnZvaWQgYXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oLTE3Ny1cdFx0XHRcdCAgIHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcGh5LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oLTE3OC1cdFx0XHRcdCAgIHN0cnVjdCBhdGhfcnhfc3RhdHMgKnJ4X3N0YXRzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaDoxNzk6dm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfZGVpbml0X2RlYnVnKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmgtMTgwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oPTE4MT12b2lkIGF0aDlrX2Ntbl9zcGVjdHJhbF9zY2FuX3RyaWdnZXIoc3RydWN0IGF0aF9jb21tb24gKmNvbW1vbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaDoxODI6XHRcdFx0XHQgc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaC0xODMtaW50IGF0aDlrX2Ntbl9zcGVjdHJhbF9zY2FuX2NvbmZpZyhzdHJ1Y3QgYXRoX2NvbW1vbiAqY29tbW9uLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oOjE4NDpcdFx0XHQgICAgICAgc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oLTE4NS1cdFx0XHQgICAgICAgZW51bSBzcGVjdHJhbF9tb2RlIHNwZWN0cmFsX21vZGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oOjE4NjppbnQgYXRoX2Ntbl9wcm9jZXNzX2ZmdChzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsIHN0cnVjdCBpZWVlODAyMTFfaGRyICpoZHIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmgtMTg3LVx0XHQgICAgc3RydWN0IGF0aF9yeF9zdGF0dXMgKnJzLCB1NjQgdHNmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaC0xODgtI2Vsc2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaDoxODk6c3RhdGljIGlubGluZSB2b2lkIGF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaC0xOTAtXHRcdFx0XHRcdFx0IHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcGh5LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaC0xOTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmg6MTk1OnN0YXRpYyBpbmxpbmUgdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfZGVpbml0X2RlYnVnKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaC0xOTYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaD0xOTk9c3RhdGljIGlubGluZSB2b2lkIGF0aDlrX2Ntbl9zcGVjdHJhbF9zY2FuX3RyaWdnZXIoc3RydWN0IGF0aF9jb21tb24gKmNvbW1vbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaDoyMDA6XHRcdFx0XHRcdFx0ICAgc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oLTIwMS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oLTIwMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaDoyMDQ6c3RhdGljIGlubGluZSBpbnQgYXRoX2Ntbl9wcm9jZXNzX2ZmdChzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmgtMjA1LVx0XHRcdFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV9oZHIgKmhkcixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGVidWcuYz0xMzcyPXZvaWQgYXRoOWtfZGVpbml0X2RlYnVnKHN0cnVjdCBhdGhfc29mdGMgKnNjKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2RlYnVnLmMtMTM3My17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGVidWcuYzoxMzc0Olx0YXRoOWtfY21uX3NwZWN0cmFsX2RlaW5pdF9kZWJ1ZyhcdTAwMjZzYy1cdTAwM2VzcGVjX3ByaXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2RlYnVnLmMtMTM3NS19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2RlYnVnLmM9MTM3Nz1pbnQgYXRoOWtfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX2h3ICphaClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGVidWcuYy0xMzkxLVx0YXRoOWtfdHg5OV9pbml0X2RlYnVnKHNjKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZWJ1Zy5jOjEzOTI6XHRhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhcdTAwMjZzYy1cdTAwM2VzcGVjX3ByaXYsIHNjLVx1MDAzZWRlYnVnLmRlYnVnZnNfcGh5LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2RlYnVnLmMtMTM5My1cdFx0XHRcdCAgICAgIFx1MDAyNnNjLVx1MDAzZWRlYnVnLnN0YXRzLnJ4c3RhdHMpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD00NTY9c3RydWN0IGF0aDlrX2h0Y19wcml2IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNDk2LVx0c3RydWN0IGF0aDlrX2h3X2NhbF9kYXRhIGNhbGRhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6NDk3Olx0c3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiBzcGVjX3ByaXY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNDk4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM9NDc3PXZvaWQgYXRoOWtfaHRjX2RlaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jLTQ3OC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jOjQ3OTpcdGF0aDlrX2Ntbl9zcGVjdHJhbF9kZWluaXRfZGVidWcoXHUwMDI2cHJpdi1cdTAwM2VzcGVjX3ByaXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYy00ODAtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM9NDgyPWludCBhdGg5a19odGNfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX2h3ICphaClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jLTQ4OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM6NDkwOlx0YXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoXHUwMDI2cHJpdi1cdTAwM2VzcGVjX3ByaXYsIHByaXYtXHUwMDNlZGVidWcuZGVidWdmc19waHksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jLTQ5MS1cdFx0XHRcdCAgICAgIFx1MDAyNnByaXYtXHUwMDNlZGVidWcucnhfc3RhdHMpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYz01ODg9c3RhdGljIHZvaWQgYXRoOWtfaW5pdF9taXNjKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmMtNTk2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jOjU5NzpcdHByaXYtXHUwMDNlc3BlY19wcml2LmFoID0gcHJpdi1cdTAwM2VhaDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYzo1OTg6XHRwcml2LVx1MDAzZXNwZWNfcHJpdi5zcGVjX2NvbmZpZy5lbmFibGVkID0gMDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYzo1OTk6XHRwcml2LVx1MDAzZXNwZWNfcHJpdi5zcGVjX2NvbmZpZy5zaG9ydF9yZXBlYXQgPSB0cnVlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jOjYwMDpcdHByaXYtXHUwMDNlc3BlY19wcml2LnNwZWNfY29uZmlnLmNvdW50ID0gODtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYzo2MDE6XHRwcml2LVx1MDAzZXNwZWNfcHJpdi5zcGVjX2NvbmZpZy5lbmRsZXNzID0gZmFsc2U7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM6NjAyOlx0cHJpdi1cdTAwM2VzcGVjX3ByaXYuc3BlY19jb25maWcucGVyaW9kID0gMHgxMjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYzo2MDM6XHRwcml2LVx1MDAzZXNwZWNfcHJpdi5zcGVjX2NvbmZpZy5mZnRfcGVyaW9kID0gMHgwMjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy02MDQtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYz0yNDA9c3RhdGljIGludCBhdGg5a19odGNfc2V0X2NoYW5uZWwoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0zMTUtXHRpZiAodGVzdF9iaXQoQVRIX09QX1NDQU5OSU5HLCBcdTAwMjZjb21tb24tXHUwMDNlb3BfZmxhZ3MpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjMxNjpcdFx0ICAgICBwcml2LVx1MDAzZXNwZWNfcHJpdi5zcGVjdHJhbF9tb2RlID09IFNQRUNUUkFMX0NIQU5TQ0FOKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjMxNzpcdFx0YXRoOWtfY21uX3NwZWN0cmFsX3NjYW5fdHJpZ2dlcihjb21tb24sIFx1MDAyNnByaXYtXHUwMDNlc3BlY19wcml2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0zMTgtZXJyOlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz05NzI9c3RhdGljIGJvb2wgYXRoOWtfcnhfcHJlcGFyZShzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTEwNDctXHRcdC8qIFRPRE86IE5vdCB1c2luZyBERlMgcHJvY2Vzc2luZyBub3cuICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6MTA0ODpcdFx0aWYgKGF0aF9jbW5fcHJvY2Vzc19mZnQoXHUwMDI2cHJpdi1cdTAwM2VzcGVjX3ByaXYsIGhkcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0xMDQ5LVx0XHRcdFx0ICAgIFx1MDAyNnJ4X3N0YXRzLCByeF9zdGF0dXMtXHUwMDNlbWFjdGltZSkpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jPTQyMD1zdGF0aWMgdm9pZCBhdGg5a19pbml0X21pc2Moc3RydWN0IGF0aF9zb2Z0YyAqc2MpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYy00MzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jOjQzNzpcdHNjLVx1MDAzZXNwZWNfcHJpdi5haCA9IHNjLVx1MDAzZXNjX2FoO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYzo0Mzg6XHRzYy1cdTAwM2VzcGVjX3ByaXYuc3BlY19jb25maWcuZW5hYmxlZCA9IDA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jOjQzOTpcdHNjLVx1MDAzZXNwZWNfcHJpdi5zcGVjX2NvbmZpZy5zaG9ydF9yZXBlYXQgPSB0cnVlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYzo0NDA6XHRzYy1cdTAwM2VzcGVjX3ByaXYuc3BlY19jb25maWcuY291bnQgPSA4O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYzo0NDE6XHRzYy1cdTAwM2VzcGVjX3ByaXYuc3BlY19jb25maWcuZW5kbGVzcyA9IGZhbHNlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYzo0NDI6XHRzYy1cdTAwM2VzcGVjX3ByaXYuc3BlY19jb25maWcucGVyaW9kID0gMHhGRjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmM6NDQzOlx0c2MtXHUwMDNlc3BlY19wcml2LnNwZWNfY29uZmlnLmZmdF9wZXJpb2QgPSAweEY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jLTQ0NC19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3JlY3YuYz04MDY9c3RhdGljIGludCBhdGg5a19yeF9za2JfcHJlcHJvY2VzcyhzdHJ1Y3QgYXRoX3NvZnRjICpzYyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvcmVjdi5jLTg4Mi1cdFx0XHRcdFx0XHQgcnhfc3RhdHVzLVx1MDAzZW1hY3RpbWUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3JlY3YuYzo4ODM6XHRcdH0gZWxzZSBpZiAoc2MtXHUwMDNlc3BlY19wcml2LnNwZWN0cmFsX21vZGUgIT0gU1BFQ1RSQUxfRElTQUJMRUQgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvcmVjdi5jOjg4NDpcdFx0XHQgICBhdGhfY21uX3Byb2Nlc3NfZmZ0KFx1MDAyNnNjLVx1MDAzZXNwZWNfcHJpdiwgaGRyLCByeF9zdGF0cyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9yZWN2LmMtODg1LVx0XHRcdFx0XHQgICAgICAgcnhfc3RhdHVzLVx1MDAzZW1hY3RpbWUpKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMDE6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk4NDMKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiA2MjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgQ3JpdGljYWwgQnVnIGluIHRoZSBhdGg5a19odGMgV2lyZWxlc3MgRHJpdmVyKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEkmIzM5O20gbG9va2luZyBhdCBgYXRoOWtfaHRjYCwgd2hpY2ggaXMgYSBVU0ItYmFzZWQgd2lyZWxlc3MgZHJpdmVyIHRoYXQgdXNlcyBIVEMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgcGF0Y2ggdGhvcm91Z2hseS4KCkluaXRpYWxseSwgaW4gdGhlIGBhdGhfY21uX3Byb2Nlc3NfZmZ0YCBmdW5jdGlvbiwgYmVmb3JlIHRoaXMgcGF0Y2gsIHRoZXJlIHdhcyBhIG1ham9yIGlzc3VlLiBJbnNpZGUgdGhhdCBmdW5jdGlvbiwgdGhlIGNvZGUgd2FzIGFzc3VtaW5nIGBjb21tb24tJmd0O3ByaXZgIHdhcyBhIGBzdHJ1Y3QgYXRoX3NvZnRjYCwgd2hpY2ggaXMgdGhlIHN0cnVjdHVyZSB1c2VkIGluIHRoZSBvcmlnaW5hbCBgYXRoOWtgIFBDSS9BSEIgZHJpdmVyLiBCdXQsIGFuZCB0aGlzIGlzIHRoZSBjcnV4IG9mIGl0LCBgYXRoOWtfaHRjYCB1c2VzIGEgZGlmZmVyZW50IHByaXZhdGUgZGF0YSBzdHJ1Y3R1cmUsIHNvbWV0aGluZyBsaWtlIGBzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKmAuIFRoaXMgbWVhbnMgdGhhdCB3aGVuIGBhdGg5a19odGNgIGNhbGxlZCBgYXRoX2Ntbl9wcm9jZXNzX2ZmdGAsIGl0IHdhcyBlZmZlY3RpdmVseSBjYXN0aW5nIGEgYGF0aDlrX2h0Y19wcml2ICpgIHRvIGEgYGF0aF9zb2Z0YyAqYC4KClRoaXMgaXMgYSBzZXJpb3VzIHByb2JsZW0uIEluc2lkZSBgYXRoOWtgLCBgUlhfU1RBVF9JTkNgIGFjY2Vzc2VzIGBzYy0mZ3Q7ZGVidWcuc3RhdHMucnhzdGF0cy5yeF9zcGVjdHJhbF9zYW1wbGVfZ29vZGAgZXRjLiBCdXQgYHN0cnVjdCBhdGg5a19odGNfcHJpdmAgaGFzIGEgY29tcGxldGVseSBkaWZmZXJlbnQgbWVtb3J5IGxheW91dCEgU28sIHByZXZpb3VzbHksIGNhbGxpbmcgYGF0aF9jbW5fcHJvY2Vzc19mZnRgIGluIHRoZSBgYXRoOWtfaHRjYCBkcml2ZXIgd2FzIGVpdGhlciBjb3JydXB0aW5nIG1lbW9yeSBvciBhY2Nlc3NpbmcgZW50aXJlbHkgdGhlIHdyb25nIG1lbW9yeSBvZmZzZXRzLiBUaGlzIGNvdWxkIGxlYWQgdG8gYSB2YXJpZXR5IG9mIGlzc3VlcywgZnJvbSBzdWJ0bGUgZGF0YSBjb3JydXB0aW9uIHRvIG91dHJpZ2h0IGNyYXNoZXMsIGRlcGVuZGluZyBvbiB3aGF0IGRhdGEgd2FzIGJlaW5nIG92ZXJ3cml0dGVuIG9yIHJlYWQuCgpUaGlzIHBhdGNoIGFkZHJlc3NlcyB0aGlzIGJ5IGRpcmVjdGx5IHBhc3NpbmcgdGhlIGByeF9zdGF0c2AgcG9pbnRlciBpbiBgYXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWdgLCBzdG9yaW5nIGl0IGluIGBzcGVjX3ByaXYtJmd0O3J4X3N0YXRzYCwgYW5kIHRoZW4gaW5jcmVtZW50aW5nIHRoZSBgcnhfc3RhdHMtJmd0O3J4X3NwZWN0cmFsX3NhbXBsZV9nb29kYCBhbmQgYHJ4X3N0YXRzLSZndDtyeF9zcGVjdHJhbF9zYW1wbGVfZXJyYCBjb3VudGVycyBjb3JyZWN0bHkgdGhyb3VnaCBgYXRoX2Ntbl9jb3VudF9mZnRfc2FtcGxlKClgLiBBIGRpcmVjdCBmaXgsIGF2b2lkaW5nIHRoZSBpbmNvcnJlY3QgY2FzdC4KCk5vdywgbGV0JiMzOTtzIHRoaW5rIGFib3V0IHJlYWNoYWJpbGl0eS4gSSBuZWVkIHRvIGRldGVybWluZSBob3cgZWFzaWx5IHRoaXMgYnVnIGNvdWxkIGJlIHRyaWdnZXJlZCB1c2luZyB0b29scyBsaWtlIFFFTVUgb3IgU3l6a2FsbGVyLiBgYXRoOWtfaHRjYCBpcywgYWZ0ZXIgYWxsLCBhIFVTQiBkZXZpY2UgZHJpdmVyLiBJIHNlZSB0aGUgVVNCIElEIHRhYmxlIHJpZ2h0IHRoZXJlIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jYC4gU3l6a2FsbGVyIHNob3VsZCBiZSBhYmxlIHRvIHJlYWNoIHRoaXMgZHJpdmVyIHZpYSBlaXRoZXIgYHN5el91c2JfY29ubmVjdGAgb3IgZGlyZWN0IFVTQiBlbXVsYXRpb24sIHBvdGVudGlhbGx5IGV4cG9zaW5nIHRoaXMgbWVtb3J5IGNvcnJ1cHRpb24gYnVnLiBBbHNvLCBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBkZWJ1Z2ZzIGludGVyZmFjZSB0aGF0JiMzOTtzIHByZXNlbnQgaW4gYXRoOWsgZm9yIHNwZWN0cmFsIHNjYW4uIERlYnVnZnMgZmlsZSBvcGVyYXRpb25zIGxpa2UgYHdyaXRlX2ZpbGVfc3BlY19zY2FuX2N0bGAsIGBzcGVjdHJhbF9zY2FuYCwgYW5kIGV2ZW4gcHJvY2Vzc2luZyBSWCBmcmFtZXMgdXNpbmcgYGF0aDlrX3J4X3ByZXBhcmVgIGNvdWxkIHByb3ZpZGUgYW5vdGhlciBlbnRyeSBwb2ludC4KCkZpbmFsbHksIEkgbmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZyBvcHRpb25zLCBzcGVjaWZpY2FsbHkgdGhvc2UgcmVsYXRlZCB0byBBVEg5S19IVEMsIEFUSDlLX0NPTU1PTl9TUEVDVFJBTCBhbmQgQVRIOUtfSFRDX0RFQlVHRlMsIG92ZXIgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBkZWJ1ZyBmZWF0dXJlcyBhcmUgZW5hYmxlZCwgYW5kIHRoZXJlZm9yZSBob3cgZXhwb3NlZCB0aGlzIGJ1ZyBpcyBpbiBkaWZmZXJlbnQga2VybmVsIGNvbmZpZ3VyYXRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDAxOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE3MDpcdFx0ICBJZiB1bnN1cmUgc2F5IE4uXG4gMTcxOlx0XG4gMTcyOlx0Y29uZmlnIEFUSDlLX0hUQ1xuIDE3MzpcdFx0dHJpc3RhdGUgXCYjMzQ7QXRoZXJvcyBIVEMgYmFzZWQgd2lyZWxlc3MgY2FyZHMgc3VwcG9ydFwmIzM0O1xuIDE3NDpcdFx0ZGVwZW5kcyBvbiBVU0IgXHUwMDI2XHUwMDI2IE1BQzgwMjExXG4gMTc1Olx0XHRzZWxlY3QgTUFDODAyMTFfTEVEUyBpZiBMRURTX0NMQVNTPXkgfHwgTEVEU19DTEFTUz1NQUM4MDIxMVxuIDE3NjpcdFx0c2VsZWN0IEFUSDlLX0hXXG4gMTc3Olx0XHRzZWxlY3QgQVRIOUtfQ09NTU9OXG4gMTc4Olx0XHRoZWxwXG4gMTc5Olx0XHQgIFN1cHBvcnQgZm9yIEF0aGVyb3MgSFRDIGJhc2VkIGNhcmRzLlxuIDE4MDpcdFx0ICBDaGlwc2V0cyBzdXBwb3J0ZWQ6IEFSOTI3MVxuIDE4MTpcdFxuIDE4MjpcdFx0ICBGb3IgbW9yZSBpbmZvcm1hdGlvbjpcbiAxODM6XHRcdCAgaHR0cHM6Ly93aXJlbGVzcy53aWtpLmtlcm5lbC5vcmcvZW4vdXNlcnMvRHJpdmVycy9hdGg5a19odGNcbiAxODQ6XHRcbiAxODU6XHRcdCAgVGhlIGJ1aWx0IG1vZHVsZSB3aWxsIGJlIGF0aDlrX2h0Yy5cbiAxODY6XHRcbiAxODc6XHRjb25maWcgQVRIOUtfSFRDX0RFQlVHRlNcbiAxODg6XHRcdGJvb2wgXCYjMzQ7QXRoZXJvcyBhdGg5a19odGMgZGVidWdnaW5nXCYjMzQ7XG4gMTg5Olx0XHRkZXBlbmRzIG9uIEFUSDlLX0hUQyBcdTAwMjZcdTAwMjYgREVCVUdfRlNcbiAxOTA6XHRcdHNlbGVjdCBBVEg5S19DT01NT05fREVCVUdcbiAxOTE6XHRcdGhlbHBcbiAxOTI6XHRcdCAgU2F5IFksIGlmIHlvdSBuZWVkIGFjY2VzcyB0byBhdGg5a19odGMmIzM5O3Mgc3RhdGlzdGljcy5cbiAxOTM6XHRcdCAgQXMgd2VsbCBhcyBhY2Nlc3MgdG8gdGhlIEZGVC9zcGVjdHJhbCBkYXRhLlxuIDE5NDpcdFxuIDE5NTpcdGNvbmZpZyBBVEg5S19IV1JOR1xuIDE5NjpcdFx0Ym9vbCBcJiMzNDtSYW5kb20gbnVtYmVyIGdlbmVyYXRvciBzdXBwb3J0XCYjMzQ7XG4gMTk3Olx0XHRkZXBlbmRzIG9uIEFUSDlLIFx1MDAyNlx1MDAyNiAoSFdfUkFORE9NID0geSB8fCBIV19SQU5ET00gPSBBVEg5SylcbiAxOTg6XHRcdGRlZmF1bHQgblxuIDE5OTpcdFx0aGVscFxuIDIwMDpcdFx0ICBUaGlzIG9wdGlvbiBpbmNvcnBvcmF0ZXMgdGhlIEFEQyByZWdpc3RlciBvdXRwdXQgYXMgYSBzb3VyY2Ugb2ZcbiAyMDE6XHRcdCAgcmFuZG9tbmVzcyBpbnRvIExpbnV4IGVudHJvcHkgcG9vbCAoL2Rldi91cmFuZG9tIGFuZCAvZGV2L3JhbmRvbSlcbiAyMDI6XHRcbiAyMDM6XHRcdCAgU2F5IFksIGZlZWRzIHRoZSBlbnRyb3B5IGRpcmVjdGx5IGZyb20gdGhlIFdpRmkgZHJpdmVyIHRvIHRoZSBpbnB1dFxuIDIwNDpcdFx0ICBwb29sLlxuIDIwNTpcdFxuIDIwNjpcdGNvbmZpZyBBVEg5S19DT01NT05fU1BFQ1RSQUxcbiAyMDc6XHRcdGJvb2wgXCYjMzQ7QXRoZXJvcyBhdGg5ay9hdGg5a19odGMgc3BlY3RyYWwgc2NhbiBzdXBwb3J0XCYjMzQ7XG4gMjA4Olx0XHRkZXBlbmRzIG9uIEFUSDlLX0RFQlVHRlMgfHwgQVRIOUtfSFRDX0RFQlVHRlNcbiAyMDk6XHRcdHNlbGVjdCBSRUxBWVxuIDIxMDpcdFx0ZGVmYXVsdCBuXG4gMjExOlx0XHRoZWxwXG4gMjEyOlx0XHQgIFNheSBZIHRvIGVuYWJsZSBhY2Nlc3MgdG8gdGhlIEZGVC9zcGVjdHJhbCBkYXRhIHZpYSBkZWJ1Z2ZzLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDAxOjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxODgwCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqSW52ZXN0aWdhdGluZyB0aGUgYEFUSDlLX0RFQlVHRlNgIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZywgd2hlcmUgc2hvdWxkIEkgc3RhcnQgbG9va2luZyB0byB1bmRlcnN0YW5kIG9yIG1vZGlmeSB0aGUgZGVidWcgb3B0aW9ucyBmb3IgYXRoOWs/IE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBnbyBzdHJhaWdodCB0byB0aGUgY29uZmlndXJhdGlvbiBmaWxlcy4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gY2hlY2sgdGhlIGBLY29uZmlnYCBmaWxlIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9gIGRpcmVjdG9yeS4gVGhhdCYjMzk7cyB0aGUgbG9naWNhbCBwbGFjZSB0byBzZWUgaWYgYEFUSDlLX0RFQlVHRlNgIGlzIGRlZmluZWQsIHdoYXQgaXQgZG9lcywgYW5kIGhvdyBpdOKAmXMgY29uZmlndXJlZC4gSSYjMzk7bSBhc3N1bWluZyB0aGF0JiMzOTtzIHdoZXJlIEkgY2FuIHRvZ2dsZSBpdCBvbiBvciBvZmYgb3Igc2VlIG90aGVyIGRlcGVuZGVuY2llcywgb3B0aW9ucywgb3IgaGVscCB0ZXh0IHJlbGF0ZWQgdG8gdGhlIGRlYnVnIGZpbGVzeXN0ZW0gaW50ZXJmYWNlIGZvciB0aGF0IHBhcnRpY3VsYXIgYXRoOWsgZHJpdmVyLiBJdCYjMzk7cyB0aGUgc3RhbmRhcmQgcGxhY2UgdG8gZGVmaW5lIHRoZXNlIGtpbmRzIG9mIGZlYXR1cmVzIHdpdGhpbiBhIGtlcm5lbCBtb2R1bGUsIHNvIGl0IG1ha2VzIHNlbnNlIHRvIHN0YXJ0IHRoZXJlIGFuZCBzZWUgd2hhdCYjMzk7cyB3aGF0LiBMZXQmIzM5O3MgZGlnIGluIGFuZCBzZWUgd2hhdCB0aGUgYnVpbGQgc3lzdGVtIHJldmVhbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDAxOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDEzMDpcdFx0ICBDdXJyZW50bHksIEFSOTQ2MiBpcyBzdXBwb3J0ZWQuXG4gMTMxOlx0XG4gMTMyOlx0Y29uZmlnIEFUSDlLX1JGS0lMTFxuIDEzMzpcdFx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDlrIHJma2lsbCBzdXBwb3J0XCYjMzQ7IGlmIEVYUEVSVFxuIDEzNDpcdFx0ZGVwZW5kcyBvbiBBVEg5S1xuIDEzNTpcdFx0ZGVwZW5kcyBvbiBSRktJTEw9eSB8fCBSRktJTEw9QVRIOUtcbiAxMzY6XHRcdGRlZmF1bHQgeVxuIDEzNzpcdFx0aGVscFxuIDEzODpcdFx0ICBTYXkgWSB0byBoYXZlIGF0aDlrIHBvbGwgdGhlIFJGLUtpbGwgR1BJTyBldmVyeSBjb3VwbGUgb2ZcbiAxMzk6XHRcdCAgc2Vjb25kcy4gVHVybiBvZmYgdG8gc2F2ZSBwb3dlciwgYnV0IGVuYWJsZSBpdCBpZiB5b3UgaGF2ZVxuIDE0MDpcdFx0ICBhIHBsYXRmb3JtIHRoYXQgY2FuIHRvZ2dsZSB0aGUgUkYtS2lsbCBHUElPLlxuIDE0MTpcdFxuIDE0MjpcdGNvbmZpZyBBVEg5S19DSEFOTkVMX0NPTlRFWFRcbiAxNDM6XHRcdGJvb2wgXCYjMzQ7Q2hhbm5lbCBDb250ZXh0IHN1cHBvcnRcJiMzNDtcbiAxNDQ6XHRcdGRlcGVuZHMgb24gQVRIOUtcbiAxNDU6XHRcdGRlZmF1bHQgblxuIDE0NjpcdFx0aGVscFxuIDE0NzpcdFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIGNoYW5uZWwgY29udGV4dCBzdXBwb3J0IGluIGF0aDlrLCB3aGljaCBpcyBuZWVkZWRcbiAxNDg6XHRcdCAgZm9yIG11bHRpLWNoYW5uZWwgY29uY3VycmVuY3kuIEVuYWJsZSB0aGlzIGlmIFAyUCBQb3dlclNhdmUgc3VwcG9ydFxuIDE0OTpcdFx0ICBpcyByZXF1aXJlZC5cbiAxNTA6XHRcbiAxNTE6XHRjb25maWcgQVRIOUtfUENPRU1cbiAxNTI6XHRcdGJvb2wgXCYjMzQ7QXRoZXJvcyBhdGg5ayBzdXBwb3J0IGZvciBQQyBPRU0gY2FyZHNcJiMzNDsgaWYgRVhQRVJUXG4gMTUzOlx0XHRkZXBlbmRzIG9uIEFUSDlLXG4gMTU0Olx0XHRkZWZhdWx0IHlcbiAxNTU6XHRcbiAxNTY6XHRjb25maWcgQVRIOUtfUENJX05PX0VFUFJPTVxuIDE1NzpcdFx0dHJpc3RhdGUgXCYjMzQ7QXRoZXJvcyBhdGg5ayBwY2kgbG9hZGVyIGZvciBFRVBST00tbGVzcyBjaGlwc1wmIzM0O1xuIDE1ODpcdFx0ZGVwZW5kcyBvbiBBVEg5S19QQ0lcbiAxNTk6XHRcdGRlZmF1bHQgblxuIDE2MDpcdFx0aGVscFxuIDE2MTpcdFx0ICBUaGlzIHNlcGFyYXRlIGRyaXZlciBwcm92aWRlcyBhIGxvYWRlciBpbiBvcmRlciB0byBzdXBwb3J0IHRoZVxuIDE2MjpcdFx0ICBBUjUwMFggdG8gQVI5MlhYLWdlbmVyYXRpb24gb2YgYXRoOWsgUENJKGUpIFdpRmkgY2hpcHMsIHdoaWNoIGhhdmVcbiAxNjM6XHRcdCAgdGhlaXIgaW5pdGlhbGl6YXRpb24gZGF0YSAod2hpY2ggY29udGFpbnMgdGhlIHJlYWwgUENJIERldmljZSBJRFxuIDE2NDpcdFx0ICB0aGF0IGF0aDlrIHdpbGwgbmVlZCkgc3RvcmVkIHRvZ2V0aGVyIHdpdGggdGhlIGNhbGlicmF0aW9uIGRhdGEgb3V0XG4gMTY1Olx0XHQgIG9mIHJlYWNoIGZvciB0aGUgYXRoOWsgY2hpcC5cbiAxNjY6XHRcbiAxNjc6XHRcdCAgVGhlc2UgZGV2aWNlcyBhcmUgdXN1YWxseSB2YXJpb3VzIG5ldHdvcmsgYXBwbGlhbmNlcywgcm91dGVycyBvclxuIDE2ODpcdFx0ICBhY2Nlc3MgUG9pbnRzIGFuZCBzdWNoLlxuIDE2OTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAwMTowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjc2OAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqVHJhY2luZyBEb3duIEFUSDlLX0RFQlVHRlMqKgoKT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgYEFUSDlLX0RFQlVHRlNgIGlzIGRlZmluZWQuIFRoaXMgaXMgbGlrZWx5IGEgcHJlcHJvY2Vzc29yIG1hY3JvLCBnaXZlbiB0aGUgYWxsLWNhcHMgbmFtaW5nIGNvbnZlbnRpb24sIGFuZCBwcm9iYWJseSByZWxhdGVkIHRvIGRlYnVnIGZ1bmN0aW9uYWxpdGllcyB3aXRoaW4gdGhlIGF0aDlrIHdpcmVsZXNzIGRyaXZlci4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gdXNlIG15IHByZWZlcnJlZCB0b29scyBmb3IgdGhpcyDigJMgYGdyZXBgLCBgZmluZGAsIG9yIG1heWJlIGV2ZW4gYSBtb3JlIHNvcGhpc3RpY2F0ZWQgSURFLWludGVncmF0ZWQgc2VhcmNoIGlmIEkgaGF2ZSB0aGUgcHJvamVjdCBsb2FkZWQuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgd2l0aCB0aGUgb2J2aW91czogdGhlIGtlcm5lbCBzb3VyY2UgdHJlZS4gSSYjMzk7bGwgbmVlZCB0byByZW1lbWJlciB3aGVyZSB0aGF0JiMzOTtzIG1vdW50ZWQsIHByb2JhYmx5IGAvdXNyL3NyYy9saW51eGAgb3Igc29tZXRoaW5nIHNpbWlsYXIsIGRlcGVuZGluZyBvbiBteSBzeXN0ZW0gc2V0dXAuIFRoZW4gaXQmIzM5O3MgYSBtYXR0ZXIgb2YgY3JhZnRpbmcgdGhlIHJpZ2h0IHNlYXJjaCBxdWVyeS4gSSYjMzk7bGwgc3RhcnQgd2l0aCBzb21ldGhpbmcgc2ltcGxlIGxpa2UgYGdyZXAgLXIgJiMzNDtBVEg5S19ERUJVR0ZTJiMzNDsgL3Vzci9zcmMvbGludXhgIGFuZCBzZWUgd2hhdCB0aGF0IHR1cm5zIHVwLiBJZiB0aGF0JiMzOTtzIHRvbyBicm9hZCwgSSYjMzk7bGwgcmVmaW5lIGl0IHdpdGggc29tZSBjb250ZXh0IGNsdWVzLiBNYXliZSBhZGRpbmcgYGluY2x1ZGUvYCBvciBzZWFyY2hpbmcgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYXRoOWsgZHJpdmVyIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgaWYgSSBrbm93IHdoZXJlIHRoYXQgaXMgd2l0aGluIHRoZSBrZXJuZWwgdHJlZS4gSSBhbHNvIG5lZWQgdG8gY29uc2lkZXIgdGhhdCBpdCBtaWdodCBiZSBkZWZpbmVkIHdpdGhpbiBhIGhlYWRlciBmaWxlLCBzbyBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O20gc2VhcmNoaW5nIGhlYWRlciBmaWxlcyBhcyB3ZWxsLiBUaGlzIHNob3VsZCBiZSBhIHN0cmFpZ2h0Zm9yd2FyZCBodW50LCBhbmQgSSYjMzk7bGwgbGlrZWx5IGZpbmQgdGhlIGRlZmluaXRpb24gcHJldHR5IHF1aWNrbHkuIExldCYjMzk7cyBnZXQgdG8gaXQhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDAxOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBBVEg5S19ERUJVR0ZTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZz00OD1jb25maWcgQVRIOUtfQUhCXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo1ODpjb25maWcgQVRIOUtfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNTktXHRib29sIFwmIzM0O0F0aGVyb3MgYXRoOWsgZGVidWdnaW5nXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDAxOjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzMjM3CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBBVEg5SyBEZWJ1ZyBDb25maWcqKgoKT2theSwgdGltZSB0byBnZXQgdGhpcyBzb3J0ZWQuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBsZXQmIzM5O3MgemVybyBpbiBvbiB0aGUgYGNvbmZpZyBBVEg5S19ERUJVR0ZTYC4gSSByZW1lbWJlciBpdCBiZWluZyBpbiB0aGF0IGdlbmVyYWwgYXJlYSBvZiB0aGUgY29uZmlnIGZpbGUg4oCTIGFyb3VuZCBsaW5lIDU4IHNob3VsZCBiZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgZW5hYmxlZC9kaXNhYmxlZCBhbmQgaWYgdGhhdCYjMzk7cyBpbXBhY3RpbmcgdGhlIGJlaGF2aW9yIEkmIzM5O20gc2VlaW5nLiBUaGlzIHVzdWFsbHkgaW5kaWNhdGVzIHdoZXRoZXIgdGhlIGRlYnVnZ2luZyBpbmZyYXN0cnVjdHVyZSBmb3IgdGhlIGF0aDlrIGRyaXZlciBpcyBlbmFibGVkLiBMZXQmIzM5O3Mgc2VlIGlmIHRoaXMgZGVidWcgY29uZmlndXJhdGlvbiBzZXR0aW5nIGlzIHNldCBjb3JyZWN0bHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDAxOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA1NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDU1Olx0XHQgIFNheSBZLCBpZiB5b3UgaGF2ZSBhIFNvQyB3aXRoIGEgY29tcGF0aWJsZSBidWlsdC1pblxuICA1NjpcdFx0ICB3aXJlbGVzcyBNQUMuIFNheSBOIGlmIHVuc3VyZS5cbiAgNTc6XHRcbiAgNTg6XHRjb25maWcgQVRIOUtfREVCVUdGU1xuICA1OTpcdFx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDlrIGRlYnVnZ2luZ1wmIzM0O1xuICA2MDpcdFx0ZGVwZW5kcyBvbiBBVEg5SyBcdTAwMjZcdTAwMjYgREVCVUdfRlMgXHUwMDI2XHUwMDI2IE1BQzgwMjExX0RFQlVHRlNcbiAgNjE6XHRcdHNlbGVjdCBBVEg5S19DT01NT05fREVCVUdcbiAgNjI6XHRcdGhlbHBcbiAgNjM6XHRcdCAgU2F5IFksIGlmIHlvdSBuZWVkIGFjY2VzcyB0byBhdGg5ayYjMzk7cyBzdGF0aXN0aWNzIGZvclxuICA2NDpcdFx0ICBpbnRlcnJ1cHRzLCByYXRlIGNvbnRyb2wsIGV0Yy5cbiAgNjU6XHRcbiAgNjY6XHRcdCAgQWxzbyByZXF1aXJlZCBmb3IgY2hhbmdpbmcgZGVidWcgbWVzc2FnZSBmbGFncyBhdCBydW4gdGltZSBhbmQgZm9yXG4gIDY3Olx0XHQgIFRYOTkuXG4gIDY4Olx0XG4gIDY5Olx0Y29uZmlnIEFUSDlLX1NUQVRJT05fU1RBVElTVElDU1xuICA3MDpcdFx0Ym9vbCBcJiMzNDtEZXRhaWxlZCBzdGF0aW9uIHN0YXRpc3RpY3NcJiMzNDtcbiAgNzE6XHRcdGRlcGVuZHMgb24gQVRIOUsgXHUwMDI2XHUwMDI2IEFUSDlLX0RFQlVHRlMgXHUwMDI2XHUwMDI2IERFQlVHX0ZTXG4gIDcyOlx0XHRkZWZhdWx0IG5cbiAgNzM6XHRcdGhlbHBcbiAgNzQ6XHRcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyBkZXRhaWxlZCBzdGF0aXN0aWNzIGZvciBhc3NvY2lhdGlvbiBzdGF0aW9ucy5cbiAgNzU6XHRcbiAgNzY6XHRjb25maWcgQVRIOUtfVFg5OVxuICA3NzpcdFx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDlrIFRYOTkgdGVzdGluZyBzdXBwb3J0XCYjMzQ7XG4gIDc4Olx0XHRkZXBlbmRzIG9uIEFUSDlLX0RFQlVHRlMgXHUwMDI2XHUwMDI2IENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xuICA3OTpcdFx0ZGVmYXVsdCBuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDAxOjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzNzkzCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogOTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyBVU0IgR2FkZ2V0IFByb2JpbmcgZm9yIGBhdGg5a19odGNgIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGhvdyB3ZSBjYW4gdGVzdCB0aGUgYGF0aDlrX2h0Y2AgZHJpdmVyLCBzcGVjaWZpY2FsbHkgaXRzIGludGVyYWN0aW9uIHdpdGggVVNCLiBJdCYjMzk7cyBhIFVTQi1iYXNlZCB3aXJlbGVzcyBkcml2ZXIsIHVzaW5nIHRoYXQgSFRDIChIb3N0IFRhcmdldCBDb21tdW5pY2F0aW9uKSBwcm90b2NvbCwgd2hpY2ggaXMgaW1wb3J0YW50IHRvIHJlbWVtYmVyLiBUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzIHdoZXRoZXIgd2UgY2FuIGVmZmVjdGl2ZWx5IHByb2JlIHRoaXMgZHJpdmVyIHVzaW5nIGEgVVNCIGdhZGdldCBzZXR1cCwgbWF5YmUgbGV2ZXJhZ2luZyBzb21ldGhpbmcgbGlrZSBgcmF3X2dhZGdldGAgd2l0aGluIFN5emthbGxlci4KClRvIGdldCBhIGhhbmRsZSBvbiB0aGUgc3BlY2lmaWNzIG9mIHRoZSBVU0IgZGV2aWNlIElEcyB0aGF0IHRoaXMgZHJpdmVyIGV4cGVjdHMsIEkgc2hvdWxkIGRpdmUgaW50byB0aGUgY29kZS4gTXkgcGxhbiBpcyB0byBzdGFydCBieSBleGFtaW5pbmcgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmNgLiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBjcnVjaWFsIGluZm9ybWF0aW9uIEkgbmVlZCBhYm91dCB0aGUgZXhwZWN0ZWQgVVNCIGRldmljZSBpZGVudGlmaWVycyB0aGF0IGBhdGg5a19odGNgIGlzIGxvb2tpbmcgZm9yIGR1cmluZyBpdHMgcHJvYmUgcHJvY2Vzcy4gVGhpcyBzaG91bGQgaW5mb3JtIGhvdyB3ZSBnbyBhYm91dCBzZXR0aW5nIHVwIHRoZSBnYWRnZXQgdG8gdHJpZ2dlciB0aGUgZHJpdmVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAwMTowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtNT0RVTEVfREVWSUNFX1RBQkxFfFVTQl9ERVZJQ0UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9haGIuYz0xMzI9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgYXRoX2FoYl9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FoYi5jLTE0MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9haGIuYzoxNDE6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgYXRoOWtfb2ZfbWF0Y2hfdGFibGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FoYi5jLTE0Mi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXRoOWtfcGNpX293bF9sb2FkZXIuYz0yMjU9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIG93bF9wY2lfdGFibGVbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXRoOWtfcGNpX293bF9sb2FkZXIuYy0yMjktfTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hdGg5a19wY2lfb3dsX2xvYWRlci5jOjIzMDpNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgb3dsX3BjaV90YWJsZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXRoOWtfcGNpX293bF9sb2FkZXIuYy0yMzEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYz0yMz1zdGF0aWMgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgYXRoOWtfaGlmX3VzYl9pZHNbXSA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6MjQ6XHR7IFVTQl9ERVZJQ0UoMHgwY2YzLCAweDkyNzEpIH0sIC8qIEF0aGVyb3MgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6MjU6XHR7IFVTQl9ERVZJQ0UoMHgwY2YzLCAweDEwMDYpIH0sIC8qIEF0aGVyb3MgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6MjY6XHR7IFVTQl9ERVZJQ0UoMHgwODQ2LCAweDkwMzApIH0sIC8qIE5ldGdlYXIgTjE1MCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzoyNzpcdHsgVVNCX0RFVklDRSgweDA3YjgsIDB4OTI3MSkgfSwgLyogQWx0YWkgV0ExMDExTi1HVSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzoyODpcdHsgVVNCX0RFVklDRSgweDA3RDEsIDB4M0ExMCkgfSwgLyogRGxpbmsgV2lyZWxlc3MgMTUwICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjI5Olx0eyBVU0JfREVWSUNFKDB4MTNEMywgMHgzMzI3KSB9LCAvKiBBenVyZXdhdmUgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6MzA6XHR7IFVTQl9ERVZJQ0UoMHgxM0QzLCAweDMzMjgpIH0sIC8qIEF6dXJld2F2ZSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzozMTpcdHsgVVNCX0RFVklDRSgweDEzRDMsIDB4MzM0NikgfSwgLyogSU1DIE5ldHdvcmtzICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjMyOlx0eyBVU0JfREVWSUNFKDB4MTNEMywgMHgzMzQ4KSB9LCAvKiBBenVyZXdhdmUgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6MzM6XHR7IFVTQl9ERVZJQ0UoMHgxM0QzLCAweDMzNDkpIH0sIC8qIEF6dXJld2F2ZSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzozNDpcdHsgVVNCX0RFVklDRSgweDEzRDMsIDB4MzM1MCkgfSwgLyogQXp1cmV3YXZlICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjM1Olx0eyBVU0JfREVWSUNFKDB4MDRDQSwgMHg0NjA1KSB9LCAvKiBMaXRlb24gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6MzY6XHR7IFVTQl9ERVZJQ0UoMHgwNDBELCAweDM4MDEpIH0sIC8qIFZJQSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzozNzpcdHsgVVNCX0RFVklDRSgweDBjZjMsIDB4YjAwMykgfSwgLyogVWJpcXVpdGkgV2lmaVN0YXRpb24gRXh0ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjM4Olx0eyBVU0JfREVWSUNFKDB4MGNmMywgMHhiMDAyKSB9LCAvKiBVYmlxdWl0aSBXaWZpU3RhdGlvbiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzozOTpcdHsgVVNCX0RFVklDRSgweDA1N2MsIDB4ODQwMykgfSwgLyogQVZNIEZSSVRaIVdMQU4gMTFOIHYyIFVTQiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo0MDpcdHsgVVNCX0RFVklDRSgweDA0NzEsIDB4MjA5ZSkgfSwgLyogUGhpbGlwcyAob3IgTlhQKSBQVEEwMSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo0MTpcdHsgVVNCX0RFVklDRSgweDFlZGEsIDB4MjMxNSkgfSwgLyogQWlyVGllcyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NDM6XHR7IFVTQl9ERVZJQ0UoMHgwY2YzLCAweDcwMTUpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00NC1cdCAgLmRyaXZlcl9pbmZvID0gQVI5Mjg3X1VTQiB9LCAgLyogQXRoZXJvcyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NDY6XHR7IFVTQl9ERVZJQ0UoMHgwY2YzLCAweDcwMTApLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00Ny1cdCAgLmRyaXZlcl9pbmZvID0gQVI5MjgwX1VTQiB9LCAgLyogQXRoZXJvcyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo0ODpcdHsgVVNCX0RFVklDRSgweDA4NDYsIDB4OTAxOCksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQ5LVx0ICAuZHJpdmVyX2luZm8gPSBBUjkyODBfVVNCIH0sICAvKiBOZXRnZWFyIFdOREEzMjAwICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjUwOlx0eyBVU0JfREVWSUNFKDB4MDgzQSwgMHhBNzA0KSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNTEtXHQgIC5kcml2ZXJfaW5mbyA9IEFSOTI4MF9VU0IgfSwgIC8qIFNNQyBOZXR3b3JrcyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo1MjpcdHsgVVNCX0RFVklDRSgweDA0MTEsIDB4MDE3ZiksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTUzLVx0ICAuZHJpdmVyX2luZm8gPSBBUjkyODBfVVNCIH0sICAvKiBTb255IFVXQS1CUjEwMCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo1NDpcdHsgVVNCX0RFVklDRSgweDA0MTEsIDB4MDE5NyksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTU1LVx0ICAuZHJpdmVyX2luZm8gPSBBUjkyODBfVVNCIH0sICAvKiBCdWZmYWxvIFdMSS1VVi1BRzMwMFAgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NTY6XHR7IFVTQl9ERVZJQ0UoMHgwNGRhLCAweDM5MDQpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy01Ny1cdCAgLmRyaXZlcl9pbmZvID0gQVI5MjgwX1VTQiB9LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo1ODpcdHsgVVNCX0RFVklDRSgweDA5MzAsIDB4MGEwOCksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTU5LVx0ICAuZHJpdmVyX2luZm8gPSBBUjkyODBfVVNCIH0sICAvKiBUb3NoaWJhIFdMTS0yMFUyIGFuZCBHTi0xMDgwICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTYwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo2MTpcdHsgVVNCX0RFVklDRSgweDBjZjMsIDB4MjBmZiksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTYyLVx0ICAuZHJpdmVyX2luZm8gPSBTVE9SQUdFX0RFVklDRSB9LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNjYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjY3Ok1PRFVMRV9ERVZJQ0VfVEFCTEUodXNiLCBhdGg5a19oaWZfdXNiX2lkcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTY4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9wY2kuYz0xMDYyPXN0YXRpYyBTSU1QTEVfREVWX1BNX09QUyhhdGg5a19wbV9vcHMsIGF0aF9wY2lfc3VzcGVuZCwgYXRoX3BjaV9yZXN1bWUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9wY2kuYy0xMDcyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3BjaS5jOjEwNzM6TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIGF0aF9wY2lfaWRfdGFibGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3BjaS5jLTEwNzQtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDAxOjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2NDg4CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogNzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRGl2aW5nIGludG8gYXRoOWtfaHRjIFVTQiBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyBgYXRoOWtfaHRjYCDigJMgdGhhdCYjMzk7cyB0aGUgVVNCIFdpRmkgZHJpdmVyLCByaWdodD8gSW50ZXJlc3RpbmcuLi4gVVNCIGZ1enppbmcsIGh1aD8gVGhpcyBjb3VsZCBiZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSBjYW4gZGlnIHVwLiBGaXJzdCwgSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiByZWNlbnQgY2hhbmdlcyBhbmQgY3J1Y2lhbCBzeW1ib2xzIHdpdGhpbiB0aGlzIGRyaXZlci4gS25vd2luZyB3aGVyZSB0byBsb29rIGlzIGhhbGYgdGhlIGJhdHRsZS4KCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgaW50byB0aGUgY29kZS4gSSYjMzk7bGwgZm9jdXMgb24gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuY2AuIFNwZWNpZmljYWxseSwgSSYjMzk7bGwgYmUgcmV2aWV3aW5nIGxpbmVzIDQ2MC02NjAgYW5kIHRoZW4gMTA1MC0xMDgwLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgZ29vZCB2aWV3IG9mIGFueSByZWxldmFudCBzcGVjdHJhbCBhbmFseXNpcyBmdW5jdGlvbmFsaXR5IHRoYXQgaXMgaW4gdGhlIGRyaXZlci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgYW55dGhpbmcgdGhlcmUgbG9va3MgbGlrZSBhIHBvdGVudGlhbCB0YXJnZXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDAxOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDYwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA0NjA6XHRcdH1cbiA0NjE6XHRcbiA0NjI6XHRcdGlmIChyZXQpXG4gNDYzOlx0XHRcdHJldHVybiAxO1xuIDQ2NDpcdFx0ZWxzZVxuIDQ2NTpcdFx0XHRyZXR1cm4gMDtcbiA0NjY6XHR9XG4gNDY3Olx0XG4gNDY4Olx0c3RhdGljIHZvaWQgYXRoX2Ntbl9jb3VudF9mZnRfc2FtcGxlKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdixcbiA0Njk6XHRcdFx0XHRcdCAgICAgaW50IHJldClcbiA0NzA6XHR7XG4gNDcxOlx0XHRzdHJ1Y3QgYXRoX3J4X3N0YXRzICpyeF9zdGF0cyA9IHNwZWNfcHJpdi1cdTAwM2VyeF9zdGF0cztcbiA0NzI6XHRcbiA0NzM6XHRcdGlmICghcnhfc3RhdHMpXG4gNDc0Olx0XHRcdHJldHVybjtcbiA0NzU6XHRcbiA0NzY6XHRcdGlmIChyZXQgPT0gMClcbiA0Nzc6XHRcdFx0cnhfc3RhdHMtXHUwMDNlcnhfc3BlY3RyYWxfc2FtcGxlX2dvb2QmIzQzOyYjNDM7O1xuIDQ3ODpcdFx0ZWxzZVxuIDQ3OTpcdFx0XHRyeF9zdGF0cy1cdTAwM2VyeF9zcGVjdHJhbF9zYW1wbGVfZXJyJiM0MzsmIzQzOztcbiA0ODA6XHR9XG4gNDgxOlx0XG4gNDgyOlx0LyogcmV0dXJucyAxIGlmIHRoaXMgd2FzIGEgc3BlY3RyYWwgZnJhbWUsIGV2ZW4gaWYgbm90IGhhbmRsZWQuICovXG4gNDgzOlx0aW50IGF0aF9jbW5fcHJvY2Vzc19mZnQoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LCBzdHJ1Y3QgaWVlZTgwMjExX2hkciAqaGRyLFxuIDQ4NDpcdFx0XHQgICAgc3RydWN0IGF0aF9yeF9zdGF0dXMgKnJzLCB1NjQgdHNmKVxuIDQ4NTpcdHtcbiA0ODY6XHRcdHU4IHNhbXBsZV9idWZbU1BFQ1RSQUxfU0FNUExFX01BWF9MRU5dID0gezB9O1xuIDQ4NzpcdFx0c3RydWN0IGF0aF9odyAqYWggPSBzcGVjX3ByaXYtXHUwMDNlYWg7XG4gNDg4Olx0XHRzdHJ1Y3QgYXRoX2NvbW1vbiAqY29tbW9uID0gYXRoOWtfaHdfY29tbW9uKHNwZWNfcHJpdi1cdTAwM2VhaCk7XG4gNDg5Olx0XHR1OCBudW1fYmlucywgKnZkYXRhID0gKHU4ICopaGRyO1xuIDQ5MDpcdFx0c3RydWN0IGF0aF9yYWRhcl9pbmZvICpyYWRhcl9pbmZvO1xuIDQ5MTpcdFx0aW50IGxlbiA9IHJzLVx1MDAzZXJzX2RhdGFsZW47XG4gNDkyOlx0XHRpbnQgaTtcbiA0OTM6XHRcdGludCBnb3Rfc2xlbiA9IDA7XG4gNDk0Olx0XHR1OCAgKnNhbXBsZV9zdGFydDtcbiA0OTU6XHRcdGludCBzYW1wbGVfYnl0ZXMgPSAwO1xuIDQ5NjpcdFx0aW50IHJldCA9IDA7XG4gNDk3Olx0XHR1MTYgZmZ0X2xlbiwgc2FtcGxlX2xlbiwgZnJlcSA9IGFoLVx1MDAzZWN1cmNoYW4tXHUwMDNlY2hhbi1cdTAwM2VjZW50ZXJfZnJlcTtcbiA0OTg6XHRcdGVudW0gbmw4MDIxMV9jaGFubmVsX3R5cGUgY2hhbl90eXBlO1xuIDQ5OTpcdFx0YXRoX2Ntbl9mZnRfaWR4X3ZhbGlkYXRvciAqZmZ0X2lkeF92YWxpZGF0b3I7XG4gNTAwOlx0XHRhdGhfY21uX2ZmdF9zYW1wbGVfaGFuZGxlciAqZmZ0X2hhbmRsZXI7XG4gNTAxOlx0XG4gNTAyOlx0XHQvKiBBUjkyODAgYW5kIGJlZm9yZSByZXBvcnQgdmlhIEFUSDlLX1BIWUVSUl9SQURBUiwgQVI5M3h4IGFuZCBuZXdlclxuIDUwMzpcdFx0ICogdmlhIEFUSDlLX1BIWUVSUl9TUEVDVFJBTC4gSGF2ZW4mIzM5O3Qgc2VlbiBBVEg5S19QSFlFUlJfRkFMU0VfUkFEQVJfRVhUXG4gNTA0Olx0XHQgKiB5ZXQsIGJ1dCB0aGlzIGlzIHN1cHBvc2VkIHRvIGJlIHBvc3NpYmxlIGFzIHdlbGwuXG4gNTA1Olx0XHQgKi9cbiA1MDY6XHRcdGlmIChycy1cdTAwM2Vyc19waHllcnIgIT0gQVRIOUtfUEhZRVJSX1JBREFSIFx1MDAyNlx1MDAyNlxuIDUwNzpcdFx0ICAgIHJzLVx1MDAzZXJzX3BoeWVyciAhPSBBVEg5S19QSFlFUlJfRkFMU0VfUkFEQVJfRVhUIFx1MDAyNlx1MDAyNlxuIDUwODpcdFx0ICAgIHJzLVx1MDAzZXJzX3BoeWVyciAhPSBBVEg5S19QSFlFUlJfU1BFQ1RSQUwpXG4gNTA5Olx0XHRcdHJldHVybiAwO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAwMTowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNzY2NQoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIGBjb21tb24tc3BlY3RyYWwuY2AqKgoKT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byBwaW5wb2ludCB3aGVyZSB0aGlzIGlzc3VlIG1pZ2h0IGJlIG9jY3VycmluZyB3aXRoaW4gdGhlIHNwZWN0cmFsIGFuYWx5c2lzIGNvZGUuIE15IGluc3RpbmN0IHRlbGxzIG1lIHRoZSBwcm9ibGVtIGlzIGxpa2VseSB3aXRoaW4gdGhlIGNvcmUgc2lnbmFsIHByb2Nlc3Npbmcgcm91dGluZXMsIHNvIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgZXhhbWluaW5nIGxpbmVzIDYyMC02NjAgb2YgYGNvbW1vbi1zcGVjdHJhbC5jYC4gVGhpcyBzZWN0aW9uIGxpa2VseSBjb250YWlucyBhIGNyaXRpY2FsIHNlZ21lbnQgZm9yIGVpdGhlciB0aGUgRkZUIGNhbGN1bGF0aW9uLCB3aW5kb3dpbmcgZnVuY3Rpb25zLCBvciBwZXJoYXBzIHRoZSBwb3dlciBzcGVjdHJ1bSBjb21wdXRhdGlvbiwgYWxsIG9mIHdoaWNoIGFyZSBlc3NlbnRpYWwgaW4gYW55IHNwZWN0cmFsIGFuYWx5c2lzIHByb2Nlc3MuIEkmIzM5O2xsIG5lZWQgdG8gY2FyZWZ1bGx5IGRpc3NlY3QgdGhlIGxvZ2ljIGluIHRoYXQgc2VjdGlvbiwgcGF5aW5nIGNsb3NlIGF0dGVudGlvbiB0byBkYXRhIGZsb3cgYW5kIGFueSBwb3RlbnRpYWwgZWRnZSBjYXNlcyB0aGF0IGNvdWxkIGludHJvZHVjZSBlcnJvcnMuIFRoZSBnb2FsIGlzIHRvIHJhcGlkbHkgZGV0ZXJtaW5lIGlmIGFueSBvZiB0aGUgYXNzdW1wdGlvbnMgb2YgdGhlIGFsZ29yaXRobSBhcmUgdmlvbGF0ZWQgYXQgdGhhdCBsb2NhdGlvbiwgZXNwZWNpYWxseSByZWxhdGl2ZSB0byB0aGUgaW5jb21pbmcgc2lnbmFsLCBhbmQgdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbi4gSSBoYXZlIHRvIGFwcGx5IG15IHVuZGVyc3RhbmRpbmcgb2Ygc3BlY3RyYWwgYW5hbHlzaXMgcHJpbmNpcGxlcywgYW5kIGZvY3VzIG9uIGRldGFpbHMgaGVyZTogdmFyaWFibGUgdHlwZXMsIGxvb3AgY29uZGl0aW9ucywgYW5kIGFueSBwb3RlbnRpYWwgb2ZmLWJ5LW9uZSBlcnJvcnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDAxOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNjIwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA2MjA6XHRcdFx0XHRcdGNvbnRpbnVlO1xuIDYyMTpcdFxuIDYyMjpcdFx0XHRcdGdvdF9zbGVuID0gMTtcbiA2MjM6XHRcdFx0fVxuIDYyNDpcdFxuIDYyNTpcdFx0XHRpZiAoZ290X3NsZW4pIHtcbiA2MjY6XHRcdFx0XHRhdGhfZGJnKGNvbW1vbiwgU1BFQ1RSQUxfU0NBTiwgXCYjMzQ7RkZUIGZyYW1lIGxlbjogJWlcXG5cJiMzNDssXG4gNjI3Olx0XHRcdFx0XHRzYW1wbGVfYnl0ZXMpO1xuIDYyODpcdFxuIDYyOTpcdFx0XHRcdC8qIE9ubHkgdHJ5IHRvIGZpeCBhIGZyYW1lIGlmIGl0JiMzOTtzIHRoZSBvbmx5IG9uZVxuIDYzMDpcdFx0XHRcdCAqIG9uIHRoZSByZXBvcnQsIGVsc2UganVzdCBza2lwIGl0LlxuIDYzMTpcdFx0XHRcdCAqL1xuIDYzMjpcdFx0XHRcdGlmIChzYW1wbGVfYnl0ZXMgIT0gc2FtcGxlX2xlbiBcdTAwMjZcdTAwMjYgbGVuIFx1MDAzYz0gZmZ0X2xlbiAmIzQzOyAyKSB7XG4gNjMzOlx0XHRcdFx0XHRhdGhfY21uX2NvcHlfZmZ0X2ZyYW1lKHNhbXBsZV9zdGFydCxcbiA2MzQ6XHRcdFx0XHRcdFx0XHQgICAgICAgc2FtcGxlX2J1Ziwgc2FtcGxlX2xlbixcbiA2MzU6XHRcdFx0XHRcdFx0XHQgICAgICAgc2FtcGxlX2J5dGVzKTtcbiA2MzY6XHRcbiA2Mzc6XHRcdFx0XHRcdHJldCA9IGZmdF9oYW5kbGVyKHJzLCBzcGVjX3ByaXYsIHNhbXBsZV9idWYsXG4gNjM4Olx0XHRcdFx0XHRcdFx0ICB0c2YsIGZyZXEsIGNoYW5fdHlwZSk7XG4gNjM5Olx0XG4gNjQwOlx0XHRcdFx0XHRhdGhfY21uX2NvdW50X2ZmdF9zYW1wbGUoc3BlY19wcml2LCByZXQpO1xuIDY0MTpcdFxuIDY0MjpcdFx0XHRcdFx0LyogTWl4IHRoZSByZWNlaXZlZCBiaW5zIHRvIHRoZSAvZGV2L3JhbmRvbVxuIDY0MzpcdFx0XHRcdFx0ICogcG9vbFxuIDY0NDpcdFx0XHRcdFx0ICovXG4gNjQ1Olx0XHRcdFx0XHRhZGRfZGV2aWNlX3JhbmRvbW5lc3Moc2FtcGxlX2J1ZiwgbnVtX2JpbnMpO1xuIDY0NjpcdFxuIDY0NzpcdFx0XHRcdFx0bWVtc2V0KHNhbXBsZV9idWYsIDAsIFNQRUNUUkFMX1NBTVBMRV9NQVhfTEVOKTtcbiA2NDg6XHRcdFx0XHR9XG4gNjQ5Olx0XG4gNjUwOlx0XHRcdFx0LyogUHJvY2VzcyBhIG5vcm1hbCBmcmFtZSAqL1xuIDY1MTpcdFx0XHRcdGlmIChzYW1wbGVfYnl0ZXMgPT0gc2FtcGxlX2xlbikge1xuIDY1MjpcdFx0XHRcdFx0cmV0ID0gZmZ0X2hhbmRsZXIocnMsIHNwZWNfcHJpdiwgc2FtcGxlX3N0YXJ0LFxuIDY1MzpcdFx0XHRcdFx0XHRcdCAgdHNmLCBmcmVxLCBjaGFuX3R5cGUpO1xuIDY1NDpcdFxuIDY1NTpcdFx0XHRcdFx0YXRoX2Ntbl9jb3VudF9mZnRfc2FtcGxlKHNwZWNfcHJpdiwgcmV0KTtcbiA2NTY6XHRcbiA2NTc6XHRcdFx0XHRcdC8qIE1peCB0aGUgcmVjZWl2ZWQgYmlucyB0byB0aGUgL2Rldi9yYW5kb21cbiA2NTg6XHRcdFx0XHRcdCAqIHBvb2xcbiA2NTk6XHRcdFx0XHRcdCAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAwMTowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzODUyNwoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gYGNvbW1vbi1zcGVjdHJhbC5jYCoqCgpPa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gTGV0JiMzOTtzIHNlZS4uLiB0aGUgaW5pdGlhbCBhbmFseXNpcyBzdWdnZXN0cyBhIHBvdGVudGlhbCBpc3N1ZSBpbiB0aGUgc3BlY3RyYWwgcHJvY2Vzc2luZywgc28gSSYjMzk7bSBnb2luZyB0byBqdW1wIHN0cmFpZ2h0IGludG8gYGNvbW1vbi1zcGVjdHJhbC5jYC4gU3BlY2lmaWNhbGx5LCBJIHdhbnQgdG8gemVybyBpbiBvbiBsaW5lcyAxMDUwIHRocm91Z2ggMTA4MC4gVGhpcyByZWdpb24gdXN1YWxseSBoYW5kbGVzIGEgY3JpdGljYWwgdHJhbnNmb3JtIG9yIGZpbHRlcmluZyBzdGVwLiBJIGhhdmUgYSBodW5jaCB0aGF0JiMzOTtzIHdoZXJlIHRoaW5ncyBhcmUgZmFsbGluZyBhcGFydCwgc28gbGV0JiMzOTtzIHN0YXJ0IHRoZXJlIGFuZCBzZWUgd2hhdCB3ZSBjYW4gZmluZC4gSXQmIzM5O3MgYSB0YXJnZXRlZCBhcHByb2FjaDsgaG9wZWZ1bGx5IHRoaXMgd2lsbCBwcm92aWRlIHNvbWUgaW5zaWdodHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDAxOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTA1MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxMDUwOlx0LyoqKioqKioqKioqKioqKioqKioqKi9cbjEwNTE6XHRcbjEwNTI6XHR2b2lkIGF0aDlrX2Ntbl9zcGVjdHJhbF9kZWluaXRfZGVidWcoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2KVxuMTA1MzpcdHtcbjEwNTQ6XHRcdGlmIChzcGVjX3ByaXYtXHUwMDNlcmZzX2NoYW5fc3BlY19zY2FuKSB7XG4xMDU1Olx0XHRcdHJlbGF5X2Nsb3NlKHNwZWNfcHJpdi1cdTAwM2VyZnNfY2hhbl9zcGVjX3NjYW4pO1xuMTA1NjpcdFx0XHRzcGVjX3ByaXYtXHUwMDNlcmZzX2NoYW5fc3BlY19zY2FuID0gTlVMTDtcbjEwNTc6XHRcdH1cbjEwNTg6XHR9XG4xMDU5Olx0RVhQT1JUX1NZTUJPTChhdGg5a19jbW5fc3BlY3RyYWxfZGVpbml0X2RlYnVnKTtcbjEwNjA6XHRcbjEwNjE6XHR2b2lkIGF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdixcbjEwNjI6XHRcdFx0XHRcdCAgIHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcGh5LFxuMTA2MzpcdFx0XHRcdFx0ICAgc3RydWN0IGF0aF9yeF9zdGF0cyAqcnhfc3RhdHMpXG4xMDY0Olx0e1xuMTA2NTpcdFx0c3BlY19wcml2LVx1MDAzZXJ4X3N0YXRzID0gcnhfc3RhdHM7XG4xMDY2Olx0XHRzcGVjX3ByaXYtXHUwMDNlcmZzX2NoYW5fc3BlY19zY2FuID0gcmVsYXlfb3BlbihcJiMzNDtzcGVjdHJhbF9zY2FuXCYjMzQ7LFxuMTA2NzpcdFx0XHRcdFx0XHQgICAgZGVidWdmc19waHksXG4xMDY4Olx0XHRcdFx0XHRcdCAgICAxMDI0LCAyNTYsIFx1MDAyNnJmc19zcGVjX3NjYW5fY2IsXG4xMDY5Olx0XHRcdFx0XHRcdCAgICBOVUxMKTtcbjEwNzA6XHRcdGlmICghc3BlY19wcml2LVx1MDAzZXJmc19jaGFuX3NwZWNfc2NhbilcbjEwNzE6XHRcdFx0cmV0dXJuO1xuMTA3MjpcdFxuMTA3MzpcdFx0ZGVidWdmc19jcmVhdGVfZmlsZShcJiMzNDtzcGVjdHJhbF9zY2FuX2N0bFwmIzM0OyxcbjEwNzQ6XHRcdFx0XHQgICAgMDYwMCxcbjEwNzU6XHRcdFx0XHQgICAgZGVidWdmc19waHksIHNwZWNfcHJpdixcbjEwNzY6XHRcdFx0XHQgICAgXHUwMDI2Zm9wc19zcGVjX3NjYW5fY3RsKTtcbjEwNzc6XHRcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXCYjMzQ7c3BlY3RyYWxfc2hvcnRfcmVwZWF0XCYjMzQ7LFxuMTA3ODpcdFx0XHRcdCAgICAwNjAwLFxuMTA3OTpcdFx0XHRcdCAgICBkZWJ1Z2ZzX3BoeSwgc3BlY19wcml2LFxuMTA4MDpcdFx0XHRcdCAgICBcdTAwMjZmb3BzX3NwZWN0cmFsX3Nob3J0X3JlcGVhdCk7XG4xMDgxOlx0XHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFwmIzM0O3NwZWN0cmFsX2NvdW50XCYjMzQ7LFxuMTA4MjpcdFx0XHRcdCAgICAwNjAwLFxuMTA4MzpcdFx0XHRcdCAgICBkZWJ1Z2ZzX3BoeSwgc3BlY19wcml2LFxuMTA4NDpcdFx0XHRcdCAgICBcdTAwMjZmb3BzX3NwZWN0cmFsX2NvdW50KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMDE6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzkzNDUKCQkJCQkJCW91dHB1dDogMjA2CgkJCQkJCQl0aG91Z2h0czogOTAyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIGF0aDlrIFNwZWN0cmFsIFNjYW4gQ29uZmlndXJhdGlvbiBhbmQgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcyBmb3IgdGhpcyBzcGVjdHJhbCBzY2FuIGZ1bmN0aW9uYWxpdHkuIEl0IGxvb2tzIGxpa2UgYEFUSDlLX0NPTU1PTl9TUEVDVFJBTGAgaXMgdGhlIGNvcmUsIGJ1dCBpdCBkZXBlbmRzIG9uIGVpdGhlciBgQVRIOUtfREVCVUdGU2Agb3IgYEFUSDlLX0hUQ19ERUJVR0ZTYC4gRGl2aW5nIGRlZXBlciwgYEFUSDlLX0hUQ19ERUJVR0ZTYCBuZWVkcyBgQVRIOUtfSFRDYCBhbmQgYERFQlVHX0ZTYCwgYW5kIHRoYXQsIGluIHR1cm4sIHJlcXVpcmVzIGBVU0JgIGFuZCBgTUFDODAyMTFgLiBNZWFud2hpbGUsIGBBVEg5S19ERUJVR0ZTYCB3YW50cyBgQVRIOUtgLCBgREVCVUdfRlNgLCBhbmQgYE1BQzgwMjExX0RFQlVHRlNgLiBPZiBjb3Vyc2UsIGBBVEg5S2AgaXRzZWxmIGRlcGVuZHMgb24gYE1BQzgwMjExYC4KCk5vdywgSSYjMzk7bGwgcmV2aWV3IGFsbCB0aGUgY29uZmlncyBpbnZvbHZlZDogYEFUSDlLYCwgYEFUSDlLX0hUQ2AsIGBBVEg5S19ERUJVR0ZTYCwgYEFUSDlLX0hUQ19ERUJVR0ZTYCwgYEFUSDlLX0NPTU1PTl9TUEVDVFJBTGAsIGBNQUM4MDIxMWAsIGBVU0JgLCBhbmQgYERFQlVHX0ZTYC4KCk5leHQsIEkgbmVlZCB0byBpZGVudGlmeSB0aGUga2V5IGZ1bmN0aW9ucyBvciAmIzM0O2ZvY3VzIHN5bWJvbHMmIzM0OyB0aGF0IGFyZSBiZWluZyB0b3VjaGVkLiBJIHNlZToKCjEuICBgYXRoX2Ntbl9wcm9jZXNzX2ZmdGA6IFRoaXMgaXMgdGhlIG1haW4gRkZUIHByb2Nlc3NpbmcgZnVuY3Rpb24gbW9kaWZpZWQgaW4gYGNvbW1vbi1zcGVjdHJhbC5jYC4KMi4gIGBhdGhfY21uX2NvdW50X2ZmdF9zYW1wbGVgOiBJdCYjMzk7cyBgc3RhdGljYCwgYnV0IEkmIzM5O2xsIG1ha2Ugc3VyZSB0byBjaGVjayBpdHMgbm9uLXN0YXRpYyBlbnRyeSBwb2ludHMganVzdCBpbiBjYXNlLgozLiAgYGF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnYDogUHJvdG90eXBlIGFuZCBpbXBsZW1lbnRhdGlvbiBjaGFuZ2VkIGluIGBjb21tb24tc3BlY3RyYWwuY2AuCjQuICBgYXRoOWtfaW5pdF9kZWJ1Z2AgaW4gYGRlYnVnLmNgLgo1LiAgYGF0aDlrX2h0Y19pbml0X2RlYnVnYCBpbiBgaHRjX2Rydl9kZWJ1Zy5jYC4KCkkmIzM5O2xsIGNoZWNrIGZvciBhbnkgb3RoZXIgc3ltYm9scyBvciBjYWxsZXJzLiBMb29raW5nIHNwZWNpZmljYWxseSBhdCBgY29tbW9uLXNwZWN0cmFsLmNgLCBJIHNlZSB0aGF0IGBhdGhfY21uX3Byb2Nlc3NfZmZ0YCBpcyBjYWxsZWQgYnkgYGF0aDlrX3J4X3NrYl9wcmVwcm9jZXNzYCAoYXRoOWsgcnggcGF0aCkgYW5kIGBhdGg5a19yeF9wcmVwYXJlYCAoYXRoOWtcX2h0YyByeCBwYXRoKS4gR29vZCwgSSYjMzk7bGwgY29uZmlybSB0aGF0IHRoZXNlIGFyZSBwcmVzZW50IGluIHRoZSBjb2RlYmFzZS4gWWVzLCB0aGV5IGFyZS4KCk5vdywgbGV0JiMzOTtzIGFzc2VzcyB0aGUgZnV6emluZyBwb3RlbnRpYWwuIEl0IHNlZW1zIHdlIGhhdmUgYSBnb29kIHNldHVwIGhlcmU6IHJlYWNoYWJsZSB2aWEgVVNCIGdhZGdldCAoZm9yIGBhdGg5a19odGNgIGVtdWxhdGlvbikgYW5kIGRlYnVnZnMsIGNvbWJpbmVkIHdpdGggbmV0ZGV2IGFuZCBubDgwMjExIHJ4IHBhY2tldCBwcm9jZXNzaW5nLiBBbHNvLCB0aGVyZSYjMzk7cyBhIG1vZGlmaWNhdGlvbiBvZiBleGVjdXRhYmxlIGNvZGUgbG9naWMgd2l0aGluIHRoZSB3aXJlbGVzcyBkcml2ZXIgc3Vic3lzdGVtIChgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2ApLiBUaGVyZSYjMzk7cyBhbHNvIHNvbWUgd29yayBpbiBSWCBzdGF0cyBoYW5kbGluZyBmb3Igc3BlY3RyYWwgc2NhbiBmcmFtZXMgdG8gYXZvaWQgcG90ZW50aWFsIHR5cGUgbWlzbWF0Y2hlcyBiZXR3ZWVuIGF0aDlrIGFuZCBhdGg5a1xfaHRjLiBJdCYjMzk7cyBhICYjMzQ7eWVzJiMzNDsgZm9yIHdvcnRoIGZ1enppbmcuCgpNeSBsaXN0IG9mIEZvY3VzU3ltYm9scyBzaG91bGQgYmU6IGBhdGhfY21uX3Byb2Nlc3NfZmZ0YCwgYGF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnYCwgYGF0aDlrX2h0Y19pbml0X2RlYnVnYCwgYW5kIGBhdGg5a19pbml0X2RlYnVnYC4KCk5vdywgbGV0JiMzOTtzIGNoZWNrIHRoYXQgYGF0aF9jbW5fY291bnRfZmZ0X3NhbXBsZWAgZnVuY3Rpb24uIEl0JiMzOTtzIG1hcmtlZCBgc3RhdGljIHZvaWQgYXRoX2Ntbl9jb3VudF9mZnRfc2FtcGxlYC4gT24gYW1kNjQsIGl0IGNvdWxkIGJlIGlubGluZWQgaW50byBgYXRoX2Ntbl9wcm9jZXNzX2ZmdGAuIFNvIHRoZSBub24tc3RhdGljIGZlYXR1cmUtc3BlY2lmaWMgZW50cnkgcG9pbnRzIGFyZSA6IGBhdGhfY21uX3Byb2Nlc3NfZmZ0YCwgYGF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnYCwgYGF0aDlrX2h0Y19pbml0X2RlYnVnYCwgYW5kIGBhdGg5a19pbml0X2RlYnVnYC4KCkkmIzM5O2xsIHZlcmlmeSB0aGUgRW5hYmxlQ29uZmlncyBub3c6IGBBVEg5S19DT01NT05fU1BFQ1RSQUxgLCBgQVRIOUtfSFRDX0RFQlVHRlNgLCBgQVRIOUtfREVCVUdGU2AsIGBBVEg5S19IVENgLCBhbmQgYEFUSDlLYC4KCkkmIzM5O2xsIGRvdWJsZS1jaGVjayBldmVyeXRoaW5nIG9uZSBsYXN0IHRpbWUuIElzIGBBVEg5S19DT01NT05fU1BFQ1RSQUxgIGEgYm9vbGVhbj8gWWVzLiBEb2VzIGl0IHNlbGVjdCBgUkVMQVlgPyBZZXMuIEFyZSB0aGVyZSBhbnkgb3RoZXIgcmVxdWlyZWQgY29uZmlncz8gTm8uIGBBVEg5S2AsIGBBVEg5S19IVENgLCBgQVRIOUtfREVCVUdGU2AsIGBBVEg5S19IVENfREVCVUdGU2AsIGBBVEg5S19DT01NT05fU1BFQ1RSQUxgLCBgTUFDODAyMTFgLCBhbmQgYERFQlVHX0ZTYC4KClRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLiBJJiMzOTttIHJlYWR5IHRvIG1vdmUgZm9yd2FyZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMDE6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FUSDlLJiMzNDssCiAgICAmIzM0O0FUSDlLX0hUQyYjMzQ7LAogICAgJiMzNDtBVEg5S19ERUJVR0ZTJiMzNDssCiAgICAmIzM0O0FUSDlLX0hUQ19ERUJVR0ZTJiMzNDssCiAgICAmIzM0O0FUSDlLX0NPTU1PTl9TUEVDVFJBTCYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtERUJVR19GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2F0aF9jbW5fcHJvY2Vzc19mZnQmIzM0OywKICAgICYjMzQ7YXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcmIzM0OywKICAgICYjMzQ7YXRoOWtfaHRjX2luaXRfZGVidWcmIzM0OywKICAgICYjMzQ7YXRoOWtfaW5pdF9kZWJ1ZyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZWZhY3RvcnMgdGhlIHNwZWN0cmFsIHNjYW4gUlggc3RhdGlzdGljcyBhY2NvdW50aW5nIGluIHRoZSBhdGg5ay9hdGg5a19odGMgd2lyZWxlc3MgZHJpdmVyIHRvIGF2b2lkIGluY29ycmVjdCBzdHJ1Y3QgY2FzdGluZyBiZXR3ZWVuIGF0aDlrIGFuZCBhdGg5a19odGMuIFRoZSBtb2RpZmllZCBjb2RlIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIFVTQiBlbXVsYXRpb24gKGF0aDlrX2h0YykgYW5kIGRlYnVnZnMvd2lyZWxlc3MgUlggZnJhbWUgcHJvY2Vzc2luZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QVRIOUsmIzM0OywKICAgICYjMzQ7QVRIOUtfSFRDJiMzNDssCiAgICAmIzM0O0FUSDlLX0RFQlVHRlMmIzM0OywKICAgICYjMzQ7QVRIOUtfSFRDX0RFQlVHRlMmIzM0OywKICAgICYjMzQ7QVRIOUtfQ09NTU9OX1NQRUNUUkFMJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O0RFQlVHX0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YXRoX2Ntbl9wcm9jZXNzX2ZmdCYjMzQ7LAogICAgJiMzNDthdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyYjMzQ7LAogICAgJiMzNDthdGg5a19odGNfaW5pdF9kZWJ1ZyYjMzQ7LAogICAgJiMzNDthdGg5a19pbml0X2RlYnVnJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlZmFjdG9ycyB0aGUgc3BlY3RyYWwgc2NhbiBSWCBzdGF0aXN0aWNzIGFjY291bnRpbmcgaW4gdGhlIGF0aDlrL2F0aDlrX2h0YyB3aXJlbGVzcyBkcml2ZXIgdG8gYXZvaWQgaW5jb3JyZWN0IHN0cnVjdCBjYXN0aW5nIGJldHdlZW4gYXRoOWsgYW5kIGF0aDlrX2h0Yy4gVGhlIG1vZGlmaWVkIGNvZGUgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgVVNCIGVtdWxhdGlvbiAoYXRoOWtfaHRjKSBhbmQgZGVidWdmcy93aXJlbGVzcyBSWCBmcmFtZSBwcm9jZXNzaW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAwMTowMzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDAxOjAzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVmYWN0b3JzIHNwZWN0cmFsIHNjYW4gUlggc3RhdGlzdGljcyBhY2NvdW50aW5nIGluIHRoZSBhdGg5ayBkcml2ZXIgYnkgcGFzc2luZyBhbiBleHBsaWNpdCBwb2ludGVyIHRvIGBzdHJ1Y3QgYXRoX3J4X3N0YXRzYCBpbiBgYXRoX3NwZWNfc2Nhbl9wcml2YCBpbnN0ZWFkIG9mIGluYXBwcm9wcmlhdGVseSBjYXN0aW5nIGBjb21tb24tXHUwMDNlcHJpdmAgdG8gYHN0cnVjdCBhdGhfc29mdGMgKmAgKHdoaWNoIHdhcyBpbnZhbGlkIGZvciBgYXRoOWtfaHRjYCkuIFxuXG5UaGlzIGNoYW5nZSBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgbW9kaWZ5IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGhhbmRsaW5nLCB1bmluaXRpYWxpemVkIGJyYW5jaGluZywgb3Iga2VybmVsLXRvLXVzZXIgaW5mbyBsZWFrcy4gQW55IG1lbW9yeSBhY2Nlc3MgaXNzdWVzIHJlbGF0ZWQgdG8gaW52YWxpZCBwb2ludGVyIGRlcmVmZXJlbmNpbmcgb3Igc3RydWN0IGNhc3RpbmcgYXJlIGNhdWdodCBieSBLQVNBTiBvciBzdGFuZGFyZCBrZXJuZWwgZmF1bHQgaGFuZGxlcnMuIFRoZXJlZm9yZSwgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMGQ1ZDRkYjhkOGE2NTk1YTk1YmU4NzA3OTg1ZmMxMzNkZTEyNjQ0MgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgU2VwIDUgMDE6MDM6MTkgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMKaW5kZXggY2EwMWEwN2Y2NjMwYy4uZDhiZTI0ZWJjZDI0NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYwpAQCAtNDY1LDYgJiM0Mzs0NjUsMjAgQEAgYXRoX2Ntbl9pc19mZnRfYnVmX2Z1bGwoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2KQogCQlyZXR1cm4gMDsKIH0KIAomIzQzO3N0YXRpYyB2b2lkIGF0aF9jbW5fY291bnRfZmZ0X3NhbXBsZShzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsCiYjNDM7CQkJCSAgICAgaW50IHJldCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBhdGhfcnhfc3RhdHMgKnJ4X3N0YXRzID0gc3BlY19wcml2LSZndDtyeF9zdGF0czsKJiM0MzsKJiM0MzsJaWYgKCFyeF9zdGF0cykKJiM0MzsJCXJldHVybjsKJiM0MzsKJiM0MzsJaWYgKHJldCA9PSAwKQomIzQzOwkJcnhfc3RhdHMtJmd0O3J4X3NwZWN0cmFsX3NhbXBsZV9nb29kJiM0MzsmIzQzOzsKJiM0MzsJZWxzZQomIzQzOwkJcnhfc3RhdHMtJmd0O3J4X3NwZWN0cmFsX3NhbXBsZV9lcnImIzQzOyYjNDM7OwomIzQzO30KJiM0MzsKIC8qIHJldHVybnMgMSBpZiB0aGlzIHdhcyBhIHNwZWN0cmFsIGZyYW1lLCBldmVuIGlmIG5vdCBoYW5kbGVkLiAqLwogaW50IGF0aF9jbW5fcHJvY2Vzc19mZnQoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LCBzdHJ1Y3QgaWVlZTgwMjExX2hkciAqaGRyLAogCQkgICAgc3RydWN0IGF0aF9yeF9zdGF0dXMgKnJzLCB1NjQgdHNmKQpAQCAtNDcyLDcgJiM0Mzs0ODYsNiBAQCBpbnQgYXRoX2Ntbl9wcm9jZXNzX2ZmdChzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsIHN0cnVjdCBpZWVlODAyMTFfaAogCXU4IHNhbXBsZV9idWZbU1BFQ1RSQUxfU0FNUExFX01BWF9MRU5dID0gezB9OwogCXN0cnVjdCBhdGhfaHcgKmFoID0gc3BlY19wcml2LSZndDthaDsKIAlzdHJ1Y3QgYXRoX2NvbW1vbiAqY29tbW9uID0gYXRoOWtfaHdfY29tbW9uKHNwZWNfcHJpdi0mZ3Q7YWgpOwotCXN0cnVjdCBhdGhfc29mdGMgKnNjID0gY29tbW9uLSZndDtwcml2OwogCXU4IG51bV9iaW5zLCAqdmRhdGEgPSAodTggKiloZHI7CiAJc3RydWN0IGF0aF9yYWRhcl9pbmZvICpyYWRhcl9pbmZvOwogCWludCBsZW4gPSBycy0mZ3Q7cnNfZGF0YWxlbjsKQEAgLTYyNCwxMCAmIzQzOzYzNyw3IEBAIGludCBhdGhfY21uX3Byb2Nlc3NfZmZ0KHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiwgc3RydWN0IGllZWU4MDIxMV9oCiAJCQkJcmV0ID0gZmZ0X2hhbmRsZXIocnMsIHNwZWNfcHJpdiwgc2FtcGxlX2J1ZiwKIAkJCQkJCSAgdHNmLCBmcmVxLCBjaGFuX3R5cGUpOwogCi0JCQkJaWYgKHJldCA9PSAwKQotCQkJCQlSWF9TVEFUX0lOQyhzYywgcnhfc3BlY3RyYWxfc2FtcGxlX2dvb2QpOwotCQkJCWVsc2UKLQkJCQkJUlhfU1RBVF9JTkMoc2MsIHJ4X3NwZWN0cmFsX3NhbXBsZV9lcnIpOwomIzQzOwkJCQlhdGhfY21uX2NvdW50X2ZmdF9zYW1wbGUoc3BlY19wcml2LCByZXQpOwogCiAJCQkJLyogTWl4IHRoZSByZWNlaXZlZCBiaW5zIHRvIHRoZSAvZGV2L3JhbmRvbQogCQkJCSAqIHBvb2wKQEAgLTY0MiwxMCAmIzQzOzY1Miw3IEBAIGludCBhdGhfY21uX3Byb2Nlc3NfZmZ0KHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiwgc3RydWN0IGllZWU4MDIxMV9oCiAJCQkJcmV0ID0gZmZ0X2hhbmRsZXIocnMsIHNwZWNfcHJpdiwgc2FtcGxlX3N0YXJ0LAogCQkJCQkJICB0c2YsIGZyZXEsIGNoYW5fdHlwZSk7CiAKLQkJCQlpZiAocmV0ID09IDApCi0JCQkJCVJYX1NUQVRfSU5DKHNjLCByeF9zcGVjdHJhbF9zYW1wbGVfZ29vZCk7Ci0JCQkJZWxzZQotCQkJCQlSWF9TVEFUX0lOQyhzYywgcnhfc3BlY3RyYWxfc2FtcGxlX2Vycik7CiYjNDM7CQkJCWF0aF9jbW5fY291bnRfZmZ0X3NhbXBsZShzcGVjX3ByaXYsIHJldCk7CiAKIAkJCQkvKiBNaXggdGhlIHJlY2VpdmVkIGJpbnMgdG8gdGhlIC9kZXYvcmFuZG9tCiAJCQkJICogcG9vbApAQCAtMTA1Miw4ICYjNDM7MTA1OSwxMCBAQCB2b2lkIGF0aDlrX2Ntbl9zcGVjdHJhbF9kZWluaXRfZGVidWcoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2KQogRVhQT1JUX1NZTUJPTChhdGg5a19jbW5fc3BlY3RyYWxfZGVpbml0X2RlYnVnKTsKIAogdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsCi0JCQkJICAgc3RydWN0IGRlbnRyeSAqZGVidWdmc19waHkpCiYjNDM7CQkJCSAgIHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcGh5LAomIzQzOwkJCQkgICBzdHJ1Y3QgYXRoX3J4X3N0YXRzICpyeF9zdGF0cykKIHsKJiM0MzsJc3BlY19wcml2LSZndDtyeF9zdGF0cyA9IHJ4X3N0YXRzOwogCXNwZWNfcHJpdi0mZ3Q7cmZzX2NoYW5fc3BlY19zY2FuID0gcmVsYXlfb3BlbigmIzM0O3NwZWN0cmFsX3NjYW4mIzM0OywKIAkJCQkJICAgIGRlYnVnZnNfcGh5LAogCQkJCQkgICAgMTAyNCwgMjU2LCAmYW1wO3Jmc19zcGVjX3NjYW5fY2IsCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmgKaW5kZXggMDExZDhhYjhiOTc0NC4uMGUyYzdkNmQzNDg3NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaApAQCAtOTQsMTIgJiM0Mzs5NCwxNiBAQCBzdHJ1Y3QgYXRoX2h0MjBfNDBfZmZ0X3BhY2tldCB7CiAJc3RydWN0IGF0aF9yYWRhcl9pbmZvIHJhZGFyX2luZm87CiB9IF9fcGFja2VkOwogCiYjNDM7c3RydWN0IGF0aF9yeF9zdGF0czsKJiM0MzsKIHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgewogCXN0cnVjdCBhdGhfaHcgKmFoOwogCS8qIHJlbGF5KGZzKSBjaGFubmVsIGZvciBzcGVjdHJhbCBzY2FuICovCiAJc3RydWN0IHJjaGFuICpyZnNfY2hhbl9zcGVjX3NjYW47CiAJZW51bSBzcGVjdHJhbF9tb2RlIHNwZWN0cmFsX21vZGU7CiAJc3RydWN0IGF0aF9zcGVjX3NjYW4gc3BlY19jb25maWc7CiYjNDM7CS8qIGRyaXZlciYjMzk7cyBSWCBzdGF0aXN0aWNzIHRvIGFjY291bnQgc2FtcGxlcyBpbnRvLCBpZiBhbnkgKi8KJiM0MzsJc3RydWN0IGF0aF9yeF9zdGF0cyAqcnhfc3RhdHM7CiB9OwogCiAjZGVmaW5lIFNQRUNUUkFMX0hUMjBfNDBfVE9UQUxfREFUQV9MRU4JKHNpemVvZihzdHJ1Y3QgYXRoX2h0MjBfNDBfZmZ0X3BhY2tldCkpCkBAIC0xNjksNyAmIzQzOzE3Myw5IEBAIHN0YXRpYyBpbmxpbmUgdTggc3BlY3RyYWxfYml0bWFwX3dlaWdodCh1OCAqYmlucykKIH0KIAogI2lmZGVmIENPTkZJR19BVEg5S19DT01NT05fU1BFQ1RSQUwKLXZvaWQgYXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LCBzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX3BoeSk7CiYjNDM7dm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsCiYjNDM7CQkJCSAgIHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcGh5LAomIzQzOwkJCQkgICBzdHJ1Y3QgYXRoX3J4X3N0YXRzICpyeF9zdGF0cyk7CiB2b2lkIGF0aDlrX2Ntbl9zcGVjdHJhbF9kZWluaXRfZGVidWcoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2KTsKIAogdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfc2Nhbl90cmlnZ2VyKHN0cnVjdCBhdGhfY29tbW9uICpjb21tb24sCkBAIC0xODEsNyAmIzQzOzE4Nyw4IEBAIGludCBhdGhfY21uX3Byb2Nlc3NfZmZ0KHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiwgc3RydWN0IGllZWU4MDIxMV9oCiAJCSAgICBzdHJ1Y3QgYXRoX3J4X3N0YXR1cyAqcnMsIHU2NCB0c2YpOwogI2Vsc2UKIHN0YXRpYyBpbmxpbmUgdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsCi0JCQkJCQkgc3RydWN0IGRlbnRyeSAqZGVidWdmc19waHkpCiYjNDM7CQkJCQkJIHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcGh5LAomIzQzOwkJCQkJCSBzdHJ1Y3QgYXRoX3J4X3N0YXRzICpyeF9zdGF0cykKIHsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2RlYnVnLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGVidWcuYwppbmRleCA3NGEwMTM0MDc1Y2Y5Li4wNDJhNGY1NDJhOTQzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGVidWcuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGVidWcuYwpAQCAtMTM4OSw3ICYjNDM7MTM4OSw4IEBAIGludCBhdGg5a19pbml0X2RlYnVnKHN0cnVjdCBhdGhfaHcgKmFoKQogCiAJYXRoOWtfZGZzX2luaXRfZGVidWcoc2MpOwogCWF0aDlrX3R4OTlfaW5pdF9kZWJ1ZyhzYyk7Ci0JYXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoJmFtcDtzYy0mZ3Q7c3BlY19wcml2LCBzYy0mZ3Q7ZGVidWcuZGVidWdmc19waHkpOwomIzQzOwlhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZygmYW1wO3NjLSZndDtzcGVjX3ByaXYsIHNjLSZndDtkZWJ1Zy5kZWJ1Z2ZzX3BoeSwKJiM0MzsJCQkJICAgICAgJmFtcDtzYy0mZ3Q7ZGVidWcuc3RhdHMucnhzdGF0cyk7CiAKIAlkZWJ1Z2ZzX2NyZWF0ZV9kZXZtX3NlcWZpbGUoc2MtJmd0O2RldiwgJiMzNDtkbWEmIzM0Oywgc2MtJmd0O2RlYnVnLmRlYnVnZnNfcGh5LAogCQkJCSAgICByZWFkX2ZpbGVfZG1hKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jCmluZGV4IDk0MzdkNjk4NzdjYzUuLjlkMzU0YjFkOTI5YzggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYwpAQCAtNDg3LDcgJiM0Mzs0ODcsOCBAQCBpbnQgYXRoOWtfaHRjX2luaXRfZGVidWcoc3RydWN0IGF0aF9odyAqYWgpCiAJcHJpdi0mZ3Q7ZGVidWcuZGVidWdmc19waHkgPSBkZWJ1Z2ZzX2NyZWF0ZV9kaXIoS0JVSUxEX01PRE5BTUUsCiAJCQkJCSAgICAgcHJpdi0mZ3Q7aHctJmd0O3dpcGh5LSZndDtkZWJ1Z2ZzZGlyKTsKIAotCWF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnKCZhbXA7cHJpdi0mZ3Q7c3BlY19wcml2LCBwcml2LSZndDtkZWJ1Zy5kZWJ1Z2ZzX3BoeSk7CiYjNDM7CWF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnKCZhbXA7cHJpdi0mZ3Q7c3BlY19wcml2LCBwcml2LSZndDtkZWJ1Zy5kZWJ1Z2ZzX3BoeSwKJiM0MzsJCQkJICAgICAgJmFtcDtwcml2LSZndDtkZWJ1Zy5yeF9zdGF0cyk7CiAKIAlkZWJ1Z2ZzX2NyZWF0ZV9maWxlKCYjMzQ7dGd0X2ludF9zdGF0cyYjMzQ7LCAwNDAwLCBwcml2LSZndDtkZWJ1Zy5kZWJ1Z2ZzX3BoeSwKIAkJCSAgICBwcml2LCAmYW1wO2ZvcHNfdGd0X2ludF9zdGF0cyk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAwMTowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MjY5CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogNzEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUGF0Y2ggZm9yIEtNU0FOIEZ1enppbmcgTmVlZHMqKgoKT2theSwgbGV0JiMzOTtzIHRha2UgYSBsb29rIGF0IHRoaXMgcGF0Y2ggYW5kIGRlY2lkZSBpZiBpdCB3YXJyYW50cyBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24uIFRoZSBkaWZmIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQ6IGl0JiMzOTtzIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5a2AgZGlyZWN0b3J5LiBTcGVjaWZpY2FsbHksIGNoYW5nZXMgaW4gYGNvbW1vbi1zcGVjdHJhbC5jYCwgYGNvbW1vbi1zcGVjdHJhbC5oYCwgYGRlYnVnLmNgLCBhbmQgYGh0Y19kcnZfZGVidWcuY2AuCgpJdCBsb29rcyBsaWtlIHRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgcmV2b2x2ZXMgYXJvdW5kIGEgdHlwZSBzYWZldHkgaXNzdWUuIFRoZXkmIzM5O3ZlIGludHJvZHVjZWQgYSBoZWxwZXIgZnVuY3Rpb24sIGBhdGhfY21uX2NvdW50X2ZmdF9zYW1wbGVgLCB0byByZXBsYWNlIGRpcmVjdCBjb3VudGVyIGluY3JlbWVudHMgd2l0aGluIHRoZSBgYXRoX3J4X3N0YXRzYCBzdHJ1Y3R1cmUuIFRoZSBvbGQgY29kZSB3YXMgYXNzdW1pbmcgdGhhdCBgY29tbW9uLSZndDtwcml2YCB3aXRoaW4gYGF0aDlrX2h0Y2Agd2FzIGEgYHN0cnVjdCBhdGhfc29mdGMgKmAsIGJ1dCBpdCBjb3VsZCBiZSBzb21ldGhpbmcgZWxzZSwgbGVhZGluZyB0byB0eXBlIGNvbmZ1c2lvbiBhbmQgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uIHdoZW4gYWNjZXNzaW5nIHRoZSBzdGF0cy4gVGhlIGZpeCBpbnZvbHZlcyBwYXNzaW5nIHRoZSBgYXRoX3J4X3N0YXRzYCBwb2ludGVyIGRpcmVjdGx5LCBlbnN1cmluZyB0aGUgY29ycmVjdCBzdHJ1Y3R1cmUgaXMgdXNlZC4gU28sIHRoZSBvcmlnaW5hbCBjb2RlIGhhZCBwb2ludGVyIGNvbmZ1c2lvbiBhbmQgd2FzIG5vdCBjb3JyZWN0bHkgZGVyZWZlcmVuY2luZyBzdGF0cy4KCk5vdywgdGhlIGltcG9ydGFudCBwYXJ0OiBLTVNBTi4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGFueSBuZXcgdnVsbmVyYWJpbGl0aWVzIHRoYXQgS01TQU4gd291bGQgYmUgZ29vZCBhdCBmaW5kaW5nLiBMZXQmIzM5O3Mgc2VlLi4uCgpGaXJzdCwgYXJlIHRoZXJlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBwb3RlbnRpYWwgaW5mbyBsZWFrcyB0byB1c2VyIHNwYWNlLCBvciB1bmluaXRpYWxpemVkIGJ1ZmZlciB1c2FnZXMgaW52b2x2ZWQ/IE5vLiBUaGUgcGF0Y2ggb25seSBpbmNyZW1lbnRzIGNvdW50ZXIgc3RhdGlzdGljcyBpbiBhbiBleGlzdGluZyBgYXRoX3J4X3N0YXRzYCBzdHJ1Y3QuIE5vIG5ldyBzdHJ1Y3R1cmVzIGFyZSBpbnRyb2R1Y2VkIHRoYXQgYXJlIHNlbnQgdG8gdXNlciBzcGFjZS4KCk5leHQsIGNvbmRpdGlvbmFsIGxvZ2ljIGRlcGVuZGVudCBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcz8gTm9wZS4gSXQgZG9lcyBhIGNoZWNrIGZvciBgcnhfc3RhdHNgIGFuZCB0aGUgcmV0dXJuIHZhbHVlIG9mIGByZXRgLCBidXQgdGhlIGByeF9zdGF0c2AgcG9pbnRlciBpcyBpbml0aWFsaXplZC4KCkhvdyBhYm91dCBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aXRoIHVuaW5pdGlhbGl6ZWQgZmllbGRzPyBBZ2Fpbiwgbm8uIEl0IGxvb2tzIGxpa2UgYGF0aF9yeF9zdGF0c2AgaXMgdGhlIHNhbWUgc3RydWN0IGFzIGJlZm9yZS4KCkRvZXMgdGhlIHBhdGNoIGNoYW5nZSBib3VuZHMgY2hlY2tzIG9yIGxlbmd0aHMgaW4gYSB3YXkgdGhhdCBtaWdodCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnk/IE5vIGNoYW5nZXMgaGVyZSBlaXRoZXIuCgpTbywgd2hhdCBraW5kIG9mIGJ1ZyB3YXMgZml4ZWQ/IFRoZSBwYXRjaCBhZGRyZXNzZXMgYSBkcml2ZXIgcG9pbnRlciAvIHR5cGUgY29uZnVzaW9uIG9yIE5VTEwgZGVyZWZlcmVuY2UuIFRoZSBwcmV2aW91cyBhc3N1bXB0aW9uIGFib3V0IHRoZSBgY29tbW9uLSZndDtwcml2YCB0eXBlIGNhdXNlZCBpc3N1ZXMuIFRoaXMgc291bmRzIGxpa2UgdGhlIHR5cGUgb2YgYnVnIHRoYXQgY291bGQgbWFuaWZlc3QgYXMgS0FTQU4gLyBHUEYgLyBnZW5lcmFsIGRldGVjdG9yIGlzc3VlcyDigJMgZGVmaW5pdGVseSBtZW1vcnkgc2FmZXR5IGNvbmNlcm5zLCBidXQgbW9yZSBpbiB0aGUgcmVhbG0gb2YgcG9pbnRlciBlcnJvcnMgdGhhbiB1bmluaXRpYWxpemVkIHJlYWRzLiBJdCYjMzk7cyBlc3NlbnRpYWxseSBmaXhpbmcgYSBidWcgd2hlcmUgd2Ugd2VyZSBkZXJlZmVyZW5jaW5nIGFuIGludmFsaWQgcG9pbnRlciBvciBkZXJlZmVyZW5jaW5nIGEgcG9pbnRlciB0byBhbiBpbmNvcnJlY3QgZGF0YSBzdHJ1Y3R1cmUuCgpPa2F5LCBsZXQmIzM5O3MganVzdCBkbyBhIHF1aWNrIGBncmVwcGVyYCBzZWFyY2ggd2l0aGluIHRoZSByZXBvIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnl0aGluZy4gSSYjMzk7bSBnb2luZyB0byBzZWFyY2ggZm9yIGluc3RhbmNlcyBvZiB0aGUgc3RydWN0cyBhbmQgZnVuY3Rpb25zIGludm9sdmVkIHRvIGJlIGNvbXBsZXRlbHkgc3VyZS4gSnVzdCB0byBiZSBvbiB0aGUgc2FmZSBzaWRlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAwMTowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtyeF9zcGVjdHJhbF9zYW1wbGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1kZWJ1Zy5jPTEyND1zdGF0aWMgc3NpemVfdCByZWFkX2ZpbGVfcmVjdihzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciBfX3VzZXIgKnVzZXJfYnVmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tZGVidWcuYy0xNDctXHRSWFNfRVJSKFwmIzM0O1NQRUNUUkFMXCYjMzQ7LCByeF9zcGVjdHJhbCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLWRlYnVnLmM6MTQ4Olx0UlhTX0VSUihcJiMzNDtTUEVDVFJBTCBTTVBMIEdPT0RcJiMzNDssIHJ4X3NwZWN0cmFsX3NhbXBsZV9nb29kKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tZGVidWcuYzoxNDk6XHRSWFNfRVJSKFwmIzM0O1NQRUNUUkFMIFNNUEwgRVJSXCYjMzQ7LCByeF9zcGVjdHJhbF9zYW1wbGVfZXJyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tZGVidWcuYy0xNTAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1kZWJ1Zy5oLTQxLSAqIEByeF9zcGVjdHJhbDogTm8gb2Ygc3BlY3RyYWwgcGFja2V0cyByZWNlaXZlZC5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tZGVidWcuaDo0MjogKiBAcnhfc3BlY3RyYWxfc2FtcGxlX2dvb2Q6IE5vLiBvZiBnb29kIHNwZWN0cmFsIHNhbXBsZXNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tZGVidWcuaDo0MzogKiBAcnhfc3BlY3RyYWxfc2FtcGxlX2VycjogTm8uIG9mIGdvb2Qgc3BlY3RyYWwgc2FtcGxlc1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1kZWJ1Zy5oLTQ0LSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1kZWJ1Zy5oPTQ1PXN0cnVjdCBhdGhfcnhfc3RhdHMge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tZGVidWcuaC02Mi1cdHUzMiByeF9zcGVjdHJhbDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tZGVidWcuaDo2MzpcdHUzMiByeF9zcGVjdHJhbF9zYW1wbGVfZ29vZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tZGVidWcuaDo2NDpcdHUzMiByeF9zcGVjdHJhbF9zYW1wbGVfZXJyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1kZWJ1Zy5oLTY1LX07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jPTQ2OD1zdGF0aWMgdm9pZCBhdGhfY21uX2NvdW50X2ZmdF9zYW1wbGUoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy00NzYtXHRpZiAocmV0ID09IDApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6NDc3Olx0XHRyeF9zdGF0cy1cdTAwM2VyeF9zcGVjdHJhbF9zYW1wbGVfZ29vZCYjNDM7JiM0Mzs7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNDc4LVx0ZWxzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjQ3OTpcdFx0cnhfc3RhdHMtXHUwMDNlcnhfc3BlY3RyYWxfc2FtcGxlX2VyciYjNDM7JiM0Mzs7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNDgwLX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMDE6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjMwMgoJCQkJCQkJb3V0cHV0OiAxNjAKCQkJCQkJCXRob3VnaHRzOiAxMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBSZWZhY3RvcmluZyBhbmQgTWVtb3J5IFNhZmV0eSoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBiZWVuIHJldmlld2luZyB0aGlzIHBhdGNoLiBTZWVtcyBwcmV0dHkgY2xlYW4tY3V0LiBUaGUgY29yZSBvZiBpdCBpbnZvbHZlcyBob3cgYGF0aF9zcGVjX3NjYW5fcHJpdmAgaW50ZXJhY3RzIHdpdGggdGhlIFJYIHN0YXRpc3RpY3MuIFRoZSByZWZhY3RvciBqdXN0IG1ha2VzIHRoZSBhY2Nlc3MgY2xlYW5lciBhbmQgbW9yZSBkaXJlY3QsIGxldHRpbmcgYm90aCBgYXRoOWtgIGFuZCBgYXRoOWtfaHRjYCBwcm92aWRlIHRoZWlyIGBzdHJ1Y3QgYXRoX3J4X3N0YXRzICpgIHBvaW50ZXIgdXBmcm9udCBkdXJpbmcgc3BlY3RyYWwgZGVidWcgaW5pdGlhbGl6YXRpb24uIFRoaXMgZWxpbWluYXRlcyB0aGUgbmVlZCBmb3IgdGhhdCBgY29tbW9uLSZndDtwcml2YCBjYXN0LCB3aGljaCBpcyBhbHdheXMgc29tZXRoaW5nIHRvIHdhdGNoIG91dCBmb3IuCgpJJiMzOTt2ZSBnb25lIHRocm91Z2ggaXQgd2l0aCBhIGZpbmUtdG9vdGggY29tYiwgYW5kIEkmIzM5O20gbm90IHNlZWluZyBhbnkgcmVkIGZsYWdzIHJlZ2FyZGluZyB1bmluaXRpYWxpemVkIG1lbW9yeS4gTm8gaW5kaWNhdGlvbnMgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UsIGFsbG9jYXRpbmcgdW5pbml0aWFsaXplZCBtZW1vcnksIGxlYWtzIHRvIHVzZXIgc3BhY2UsIG9yIGJyYW5jaGVzIGJhc2VkIG9uIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBHaXZlbiB0aGF0IHRob3JvdWdoIGluc3BlY3Rpb24sIHRoZSBgTmVlZHNLTVNBTmAgZmxhZyBpcyBkZWZpbml0aXZlbHkgZmFsc2UgaW4gdGhpcyBjYXNlLgoKQWxyaWdodCwgd2l0aCBhbGwgdGhhdCBvdXQgb2YgdGhlIHdheSwgSSYjMzk7bSBjb21mb3J0YWJsZSBjYWxsaW5nIGBzZXQtcmVzdWx0c2AuIEl0JiMzOTtzIGEgc29saWQsIHNhZmUgcmVmYWN0b3JpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDAxOjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlZmFjdG9ycyBzcGVjdHJhbCBzY2FuIFJYIHN0YXRpc3RpY3MgYWNjb3VudGluZyBpbiB0aGUgYXRoOWsgZHJpdmVyIGJ5IHBhc3NpbmcgYW4gZXhwbGljaXQgcG9pbnRlciB0byBgc3RydWN0IGF0aF9yeF9zdGF0c2AgaW4gYGF0aF9zcGVjX3NjYW5fcHJpdmAgaW5zdGVhZCBvZiBpbmFwcHJvcHJpYXRlbHkgY2FzdGluZyBgY29tbW9uLVx1MDAzZXByaXZgIHRvIGBzdHJ1Y3QgYXRoX3NvZnRjICpgICh3aGljaCB3YXMgaW52YWxpZCBmb3IgYGF0aDlrX2h0Y2ApLiBcblxuVGhpcyBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIG9yIG1vZGlmeSB1bmluaXRpYWxpemVkIG1lbW9yeSBoYW5kbGluZywgdW5pbml0aWFsaXplZCBicmFuY2hpbmcsIG9yIGtlcm5lbC10by11c2VyIGluZm8gbGVha3MuIEFueSBtZW1vcnkgYWNjZXNzIGlzc3VlcyByZWxhdGVkIHRvIGludmFsaWQgcG9pbnRlciBkZXJlZmVyZW5jaW5nIG9yIHN0cnVjdCBjYXN0aW5nIGFyZSBjYXVnaHQgYnkgS0FTQU4gb3Igc3RhbmRhcmQga2VybmVsIGZhdWx0IGhhbmRsZXJzLiBUaGVyZWZvcmUsIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlZmFjdG9ycyBzcGVjdHJhbCBzY2FuIFJYIHN0YXRpc3RpY3MgYWNjb3VudGluZyBpbiB0aGUgYXRoOWsgZHJpdmVyIGJ5IHBhc3NpbmcgYW4gZXhwbGljaXQgcG9pbnRlciB0byBgc3RydWN0IGF0aF9yeF9zdGF0c2AgaW4gYGF0aF9zcGVjX3NjYW5fcHJpdmAgaW5zdGVhZCBvZiBpbmFwcHJvcHJpYXRlbHkgY2FzdGluZyBgY29tbW9uLVx1MDAzZXByaXZgIHRvIGBzdHJ1Y3QgYXRoX3NvZnRjICpgICh3aGljaCB3YXMgaW52YWxpZCBmb3IgYGF0aDlrX2h0Y2ApLiBcblxuVGhpcyBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIG9yIG1vZGlmeSB1bmluaXRpYWxpemVkIG1lbW9yeSBoYW5kbGluZywgdW5pbml0aWFsaXplZCBicmFuY2hpbmcsIG9yIGtlcm5lbC10by11c2VyIGluZm8gbGVha3MuIEFueSBtZW1vcnkgYWNjZXNzIGlzc3VlcyByZWxhdGVkIHRvIGludmFsaWQgcG9pbnRlciBkZXJlZmVyZW5jaW5nIG9yIHN0cnVjdCBjYXN0aW5nIGFyZSBjYXVnaHQgYnkgS0FTQU4gb3Igc3RhbmRhcmQga2VybmVsIGZhdWx0IGhhbmRsZXJzLiBUaGVyZWZvcmUsIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDVUMDE6MDM6MjAuNzQxMjg1MzI0WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDgwODA2MDM5NzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQVRIOUtcIixcbiAgICBcIkFUSDlLX0hUQ1wiLFxuICAgIFwiQVRIOUtfREVCVUdGU1wiLFxuICAgIFwiQVRIOUtfSFRDX0RFQlVHRlNcIixcbiAgICBcIkFUSDlLX0NPTU1PTl9TUEVDVFJBTFwiLFxuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIkRFQlVHX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYXRoX2Ntbl9wcm9jZXNzX2ZmdFwiLFxuICAgIFwiYXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWdcIixcbiAgICBcImF0aDlrX2h0Y19pbml0X2RlYnVnXCIsXG4gICAgXCJhdGg5a19pbml0X2RlYnVnXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZWZhY3RvcnMgc3BlY3RyYWwgc2NhbiBSWCBzdGF0aXN0aWNzIGFjY291bnRpbmcgaW4gdGhlIGF0aDlrIGRyaXZlciBieSBwYXNzaW5nIGFuIGV4cGxpY2l0IHBvaW50ZXIgdG8gYHN0cnVjdCBhdGhfcnhfc3RhdHNgIGluIGBhdGhfc3BlY19zY2FuX3ByaXZgIGluc3RlYWQgb2YgaW5hcHByb3ByaWF0ZWx5IGNhc3RpbmcgYGNvbW1vbi1cXHUwMDNlcHJpdmAgdG8gYHN0cnVjdCBhdGhfc29mdGMgKmAgKHdoaWNoIHdhcyBpbnZhbGlkIGZvciBgYXRoOWtfaHRjYCkuIFxcblxcblRoaXMgY2hhbmdlIGRvZXMgbm90IGludHJvZHVjZSBvciBtb2RpZnkgdW5pbml0aWFsaXplZCBtZW1vcnkgaGFuZGxpbmcsIHVuaW5pdGlhbGl6ZWQgYnJhbmNoaW5nLCBvciBrZXJuZWwtdG8tdXNlciBpbmZvIGxlYWtzLiBBbnkgbWVtb3J5IGFjY2VzcyBpc3N1ZXMgcmVsYXRlZCB0byBpbnZhbGlkIHBvaW50ZXIgZGVyZWZlcmVuY2luZyBvciBzdHJ1Y3QgY2FzdGluZyBhcmUgY2F1Z2h0IGJ5IEtBU0FOIG9yIHN0YW5kYXJkIGtlcm5lbCBmYXVsdCBoYW5kbGVycy4gVGhlcmVmb3JlLCBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVmYWN0b3JzIHRoZSBzcGVjdHJhbCBzY2FuIFJYIHN0YXRpc3RpY3MgYWNjb3VudGluZyBpbiB0aGUgYXRoOWsvYXRoOWtfaHRjIHdpcmVsZXNzIGRyaXZlciB0byBhdm9pZCBpbmNvcnJlY3Qgc3RydWN0IGNhc3RpbmcgYmV0d2VlbiBhdGg5ayBhbmQgYXRoOWtfaHRjLiBUaGUgbW9kaWZpZWQgY29kZSBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBVU0IgZW11bGF0aW9uIChhdGg5a19odGMpIGFuZCBkZWJ1Z2ZzL3dpcmVsZXNzIFJYIGZyYW1lIHByb2Nlc3NpbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDAxOjAzOjIwLjc0MTI5MjAxNVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTExNTEyMTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMGQ1ZDRkYjhkOGE2NTk1YTk1YmU4NzA3OTg1ZmMxMzNkZTEyNjQ0MlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IFNlcCA1IDAxOjAzOjE5IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuY1xcbmluZGV4IGNhMDFhMDdmNjYzMGMuLmQ4YmUyNGViY2QyNDcgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jXFxuQEAgLTQ2NSw2ICs0NjUsMjAgQEAgYXRoX2Ntbl9pc19mZnRfYnVmX2Z1bGwoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2KVxcbiBcXHRcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4rc3RhdGljIHZvaWQgYXRoX2Ntbl9jb3VudF9mZnRfc2FtcGxlKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdixcXG4rXFx0XFx0XFx0XFx0ICAgICBpbnQgcmV0KVxcbit7XFxuK1xcdHN0cnVjdCBhdGhfcnhfc3RhdHMgKnJ4X3N0YXRzID0gc3BlY19wcml2LVxcdTAwM2VyeF9zdGF0cztcXG4rXFxuK1xcdGlmICghcnhfc3RhdHMpXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuK1xcdGlmIChyZXQgPT0gMClcXG4rXFx0XFx0cnhfc3RhdHMtXFx1MDAzZXJ4X3NwZWN0cmFsX3NhbXBsZV9nb29kKys7XFxuK1xcdGVsc2VcXG4rXFx0XFx0cnhfc3RhdHMtXFx1MDAzZXJ4X3NwZWN0cmFsX3NhbXBsZV9lcnIrKztcXG4rfVxcbitcXG4gLyogcmV0dXJucyAxIGlmIHRoaXMgd2FzIGEgc3BlY3RyYWwgZnJhbWUsIGV2ZW4gaWYgbm90IGhhbmRsZWQuICovXFxuIGludCBhdGhfY21uX3Byb2Nlc3NfZmZ0KHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiwgc3RydWN0IGllZWU4MDIxMV9oZHIgKmhkcixcXG4gXFx0XFx0ICAgIHN0cnVjdCBhdGhfcnhfc3RhdHVzICpycywgdTY0IHRzZilcXG5AQCAtNDcyLDcgKzQ4Niw2IEBAIGludCBhdGhfY21uX3Byb2Nlc3NfZmZ0KHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiwgc3RydWN0IGllZWU4MDIxMV9oXFxuIFxcdHU4IHNhbXBsZV9idWZbU1BFQ1RSQUxfU0FNUExFX01BWF9MRU5dID0gezB9O1xcbiBcXHRzdHJ1Y3QgYXRoX2h3ICphaCA9IHNwZWNfcHJpdi1cXHUwMDNlYWg7XFxuIFxcdHN0cnVjdCBhdGhfY29tbW9uICpjb21tb24gPSBhdGg5a19od19jb21tb24oc3BlY19wcml2LVxcdTAwM2VhaCk7XFxuLVxcdHN0cnVjdCBhdGhfc29mdGMgKnNjID0gY29tbW9uLVxcdTAwM2Vwcml2O1xcbiBcXHR1OCBudW1fYmlucywgKnZkYXRhID0gKHU4ICopaGRyO1xcbiBcXHRzdHJ1Y3QgYXRoX3JhZGFyX2luZm8gKnJhZGFyX2luZm87XFxuIFxcdGludCBsZW4gPSBycy1cXHUwMDNlcnNfZGF0YWxlbjtcXG5AQCAtNjI0LDEwICs2MzcsNyBAQCBpbnQgYXRoX2Ntbl9wcm9jZXNzX2ZmdChzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsIHN0cnVjdCBpZWVlODAyMTFfaFxcbiBcXHRcXHRcXHRcXHRyZXQgPSBmZnRfaGFuZGxlcihycywgc3BlY19wcml2LCBzYW1wbGVfYnVmLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHQgIHRzZiwgZnJlcSwgY2hhbl90eXBlKTtcXG4gXFxuLVxcdFxcdFxcdFxcdGlmIChyZXQgPT0gMClcXG4tXFx0XFx0XFx0XFx0XFx0UlhfU1RBVF9JTkMoc2MsIHJ4X3NwZWN0cmFsX3NhbXBsZV9nb29kKTtcXG4tXFx0XFx0XFx0XFx0ZWxzZVxcbi1cXHRcXHRcXHRcXHRcXHRSWF9TVEFUX0lOQyhzYywgcnhfc3BlY3RyYWxfc2FtcGxlX2Vycik7XFxuK1xcdFxcdFxcdFxcdGF0aF9jbW5fY291bnRfZmZ0X3NhbXBsZShzcGVjX3ByaXYsIHJldCk7XFxuIFxcbiBcXHRcXHRcXHRcXHQvKiBNaXggdGhlIHJlY2VpdmVkIGJpbnMgdG8gdGhlIC9kZXYvcmFuZG9tXFxuIFxcdFxcdFxcdFxcdCAqIHBvb2xcXG5AQCAtNjQyLDEwICs2NTIsNyBAQCBpbnQgYXRoX2Ntbl9wcm9jZXNzX2ZmdChzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsIHN0cnVjdCBpZWVlODAyMTFfaFxcbiBcXHRcXHRcXHRcXHRyZXQgPSBmZnRfaGFuZGxlcihycywgc3BlY19wcml2LCBzYW1wbGVfc3RhcnQsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCAgdHNmLCBmcmVxLCBjaGFuX3R5cGUpO1xcbiBcXG4tXFx0XFx0XFx0XFx0aWYgKHJldCA9PSAwKVxcbi1cXHRcXHRcXHRcXHRcXHRSWF9TVEFUX0lOQyhzYywgcnhfc3BlY3RyYWxfc2FtcGxlX2dvb2QpO1xcbi1cXHRcXHRcXHRcXHRlbHNlXFxuLVxcdFxcdFxcdFxcdFxcdFJYX1NUQVRfSU5DKHNjLCByeF9zcGVjdHJhbF9zYW1wbGVfZXJyKTtcXG4rXFx0XFx0XFx0XFx0YXRoX2Ntbl9jb3VudF9mZnRfc2FtcGxlKHNwZWNfcHJpdiwgcmV0KTtcXG4gXFxuIFxcdFxcdFxcdFxcdC8qIE1peCB0aGUgcmVjZWl2ZWQgYmlucyB0byB0aGUgL2Rldi9yYW5kb21cXG4gXFx0XFx0XFx0XFx0ICogcG9vbFxcbkBAIC0xMDUyLDggKzEwNTksMTAgQEAgdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfZGVpbml0X2RlYnVnKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdilcXG4gRVhQT1JUX1NZTUJPTChhdGg5a19jbW5fc3BlY3RyYWxfZGVpbml0X2RlYnVnKTtcXG4gXFxuIHZvaWQgYXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LFxcbi1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX3BoeSlcXG4rXFx0XFx0XFx0XFx0ICAgc3RydWN0IGRlbnRyeSAqZGVidWdmc19waHksXFxuK1xcdFxcdFxcdFxcdCAgIHN0cnVjdCBhdGhfcnhfc3RhdHMgKnJ4X3N0YXRzKVxcbiB7XFxuK1xcdHNwZWNfcHJpdi1cXHUwMDNlcnhfc3RhdHMgPSByeF9zdGF0cztcXG4gXFx0c3BlY19wcml2LVxcdTAwM2VyZnNfY2hhbl9zcGVjX3NjYW4gPSByZWxheV9vcGVuKFxcXCJzcGVjdHJhbF9zY2FuXFxcIixcXG4gXFx0XFx0XFx0XFx0XFx0ICAgIGRlYnVnZnNfcGh5LFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgMTAyNCwgMjU2LCBcXHUwMDI2cmZzX3NwZWNfc2Nhbl9jYixcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oXFxuaW5kZXggMDExZDhhYjhiOTc0NC4uMGUyYzdkNmQzNDg3NCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmhcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmhcXG5AQCAtOTQsMTIgKzk0LDE2IEBAIHN0cnVjdCBhdGhfaHQyMF80MF9mZnRfcGFja2V0IHtcXG4gXFx0c3RydWN0IGF0aF9yYWRhcl9pbmZvIHJhZGFyX2luZm87XFxuIH0gX19wYWNrZWQ7XFxuIFxcbitzdHJ1Y3QgYXRoX3J4X3N0YXRzO1xcbitcXG4gc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiB7XFxuIFxcdHN0cnVjdCBhdGhfaHcgKmFoO1xcbiBcXHQvKiByZWxheShmcykgY2hhbm5lbCBmb3Igc3BlY3RyYWwgc2NhbiAqL1xcbiBcXHRzdHJ1Y3QgcmNoYW4gKnJmc19jaGFuX3NwZWNfc2NhbjtcXG4gXFx0ZW51bSBzcGVjdHJhbF9tb2RlIHNwZWN0cmFsX21vZGU7XFxuIFxcdHN0cnVjdCBhdGhfc3BlY19zY2FuIHNwZWNfY29uZmlnO1xcbitcXHQvKiBkcml2ZXIncyBSWCBzdGF0aXN0aWNzIHRvIGFjY291bnQgc2FtcGxlcyBpbnRvLCBpZiBhbnkgKi9cXG4rXFx0c3RydWN0IGF0aF9yeF9zdGF0cyAqcnhfc3RhdHM7XFxuIH07XFxuIFxcbiAjZGVmaW5lIFNQRUNUUkFMX0hUMjBfNDBfVE9UQUxfREFUQV9MRU5cXHQoc2l6ZW9mKHN0cnVjdCBhdGhfaHQyMF80MF9mZnRfcGFja2V0KSlcXG5AQCAtMTY5LDcgKzE3Myw5IEBAIHN0YXRpYyBpbmxpbmUgdTggc3BlY3RyYWxfYml0bWFwX3dlaWdodCh1OCAqYmlucylcXG4gfVxcbiBcXG4gI2lmZGVmIENPTkZJR19BVEg5S19DT01NT05fU1BFQ1RSQUxcXG4tdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsIHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcGh5KTtcXG4rdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsXFxuK1xcdFxcdFxcdFxcdCAgIHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcGh5LFxcbitcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgYXRoX3J4X3N0YXRzICpyeF9zdGF0cyk7XFxuIHZvaWQgYXRoOWtfY21uX3NwZWN0cmFsX2RlaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYpO1xcbiBcXG4gdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfc2Nhbl90cmlnZ2VyKHN0cnVjdCBhdGhfY29tbW9uICpjb21tb24sXFxuQEAgLTE4MSw3ICsxODcsOCBAQCBpbnQgYXRoX2Ntbl9wcm9jZXNzX2ZmdChzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsIHN0cnVjdCBpZWVlODAyMTFfaFxcbiBcXHRcXHQgICAgc3RydWN0IGF0aF9yeF9zdGF0dXMgKnJzLCB1NjQgdHNmKTtcXG4gI2Vsc2VcXG4gc3RhdGljIGlubGluZSB2b2lkIGF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdixcXG4tXFx0XFx0XFx0XFx0XFx0XFx0IHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcGh5KVxcbitcXHRcXHRcXHRcXHRcXHRcXHQgc3RydWN0IGRlbnRyeSAqZGVidWdmc19waHksXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCBzdHJ1Y3QgYXRoX3J4X3N0YXRzICpyeF9zdGF0cylcXG4ge1xcbiB9XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGVidWcuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZWJ1Zy5jXFxuaW5kZXggNzRhMDEzNDA3NWNmOS4uMDQyYTRmNTQyYTk0MyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGVidWcuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZWJ1Zy5jXFxuQEAgLTEzODksNyArMTM4OSw4IEBAIGludCBhdGg5a19pbml0X2RlYnVnKHN0cnVjdCBhdGhfaHcgKmFoKVxcbiBcXG4gXFx0YXRoOWtfZGZzX2luaXRfZGVidWcoc2MpO1xcbiBcXHRhdGg5a190eDk5X2luaXRfZGVidWcoc2MpO1xcbi1cXHRhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhcXHUwMDI2c2MtXFx1MDAzZXNwZWNfcHJpdiwgc2MtXFx1MDAzZWRlYnVnLmRlYnVnZnNfcGh5KTtcXG4rXFx0YXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoXFx1MDAyNnNjLVxcdTAwM2VzcGVjX3ByaXYsIHNjLVxcdTAwM2VkZWJ1Zy5kZWJ1Z2ZzX3BoeSxcXG4rXFx0XFx0XFx0XFx0ICAgICAgXFx1MDAyNnNjLVxcdTAwM2VkZWJ1Zy5zdGF0cy5yeHN0YXRzKTtcXG4gXFxuIFxcdGRlYnVnZnNfY3JlYXRlX2Rldm1fc2VxZmlsZShzYy1cXHUwMDNlZGV2LCBcXFwiZG1hXFxcIiwgc2MtXFx1MDAzZWRlYnVnLmRlYnVnZnNfcGh5LFxcbiBcXHRcXHRcXHRcXHQgICAgcmVhZF9maWxlX2RtYSk7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jXFxuaW5kZXggOTQzN2Q2OTg3N2NjNS4uOWQzNTRiMWQ5MjljOCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuY1xcbkBAIC00ODcsNyArNDg3LDggQEAgaW50IGF0aDlrX2h0Y19pbml0X2RlYnVnKHN0cnVjdCBhdGhfaHcgKmFoKVxcbiBcXHRwcml2LVxcdTAwM2VkZWJ1Zy5kZWJ1Z2ZzX3BoeSA9IGRlYnVnZnNfY3JlYXRlX2RpcihLQlVJTERfTU9ETkFNRSxcXG4gXFx0XFx0XFx0XFx0XFx0ICAgICBwcml2LVxcdTAwM2Vody1cXHUwMDNld2lwaHktXFx1MDAzZWRlYnVnZnNkaXIpO1xcbiBcXG4tXFx0YXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoXFx1MDAyNnByaXYtXFx1MDAzZXNwZWNfcHJpdiwgcHJpdi1cXHUwMDNlZGVidWcuZGVidWdmc19waHkpO1xcbitcXHRhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhcXHUwMDI2cHJpdi1cXHUwMDNlc3BlY19wcml2LCBwcml2LVxcdTAwM2VkZWJ1Zy5kZWJ1Z2ZzX3BoeSxcXG4rXFx0XFx0XFx0XFx0ICAgICAgXFx1MDAyNnByaXYtXFx1MDAzZWRlYnVnLnJ4X3N0YXRzKTtcXG4gXFxuIFxcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXFxcInRndF9pbnRfc3RhdHNcXFwiLCAwNDAwLCBwcml2LVxcdTAwM2VkZWJ1Zy5kZWJ1Z2ZzX3BoeSxcXG4gXFx0XFx0XFx0ICAgIHByaXYsIFxcdTAwMjZmb3BzX3RndF9pbnRfc3RhdHMpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQwMTowMzoyMS4yNTM3OTcwOTRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjM4NDE1NDM3NDU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkFUSDlLXCIsXG4gICAgXCJBVEg5S19IVENcIixcbiAgICBcIkFUSDlLX0RFQlVHRlNcIixcbiAgICBcIkFUSDlLX0hUQ19ERUJVR0ZTXCIsXG4gICAgXCJBVEg5S19DT01NT05fU1BFQ1RSQUxcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJERUJVR19GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImF0aF9jbW5fcHJvY2Vzc19mZnRcIixcbiAgICBcImF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnXCIsXG4gICAgXCJhdGg5a19odGNfaW5pdF9kZWJ1Z1wiLFxuICAgIFwiYXRoOWtfaW5pdF9kZWJ1Z1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlZmFjdG9ycyB0aGUgc3BlY3RyYWwgc2NhbiBSWCBzdGF0aXN0aWNzIGFjY291bnRpbmcgaW4gdGhlIGF0aDlrL2F0aDlrX2h0YyB3aXJlbGVzcyBkcml2ZXIgdG8gYXZvaWQgaW5jb3JyZWN0IHN0cnVjdCBjYXN0aW5nIGJldHdlZW4gYXRoOWsgYW5kIGF0aDlrX2h0Yy4gVGhlIG1vZGlmaWVkIGNvZGUgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgVVNCIGVtdWxhdGlvbiAoYXRoOWtfaHRjKSBhbmQgZGVidWdmcy93aXJlbGVzcyBSWCBmcmFtZSBwcm9jZXNzaW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDBkNWQ0ZGI4ZDhhNjU5NWE5NWJlODcwNzk4NWZjMTMzZGUxMjY0NDJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IFNlcCA1IDAxOjAzOjE5IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jXG5pbmRleCBjYTAxYTA3ZjY2MzBjLi5kOGJlMjRlYmNkMjQ3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmNcbkBAIC00NjUsNiArNDY1LDIwIEBAIGF0aF9jbW5faXNfZmZ0X2J1Zl9mdWxsKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdilcbiBcdFx0cmV0dXJuIDA7XG4gfVxuIFxuK3N0YXRpYyB2b2lkIGF0aF9jbW5fY291bnRfZmZ0X3NhbXBsZShzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsXG4rXHRcdFx0XHQgICAgIGludCByZXQpXG4re1xuK1x0c3RydWN0IGF0aF9yeF9zdGF0cyAqcnhfc3RhdHMgPSBzcGVjX3ByaXYtXHUwMDNlcnhfc3RhdHM7XG4rXG4rXHRpZiAoIXJ4X3N0YXRzKVxuK1x0XHRyZXR1cm47XG4rXG4rXHRpZiAocmV0ID09IDApXG4rXHRcdHJ4X3N0YXRzLVx1MDAzZXJ4X3NwZWN0cmFsX3NhbXBsZV9nb29kKys7XG4rXHRlbHNlXG4rXHRcdHJ4X3N0YXRzLVx1MDAzZXJ4X3NwZWN0cmFsX3NhbXBsZV9lcnIrKztcbit9XG4rXG4gLyogcmV0dXJucyAxIGlmIHRoaXMgd2FzIGEgc3BlY3RyYWwgZnJhbWUsIGV2ZW4gaWYgbm90IGhhbmRsZWQuICovXG4gaW50IGF0aF9jbW5fcHJvY2Vzc19mZnQoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LCBzdHJ1Y3QgaWVlZTgwMjExX2hkciAqaGRyLFxuIFx0XHQgICAgc3RydWN0IGF0aF9yeF9zdGF0dXMgKnJzLCB1NjQgdHNmKVxuQEAgLTQ3Miw3ICs0ODYsNiBAQCBpbnQgYXRoX2Ntbl9wcm9jZXNzX2ZmdChzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsIHN0cnVjdCBpZWVlODAyMTFfaFxuIFx0dTggc2FtcGxlX2J1ZltTUEVDVFJBTF9TQU1QTEVfTUFYX0xFTl0gPSB7MH07XG4gXHRzdHJ1Y3QgYXRoX2h3ICphaCA9IHNwZWNfcHJpdi1cdTAwM2VhaDtcbiBcdHN0cnVjdCBhdGhfY29tbW9uICpjb21tb24gPSBhdGg5a19od19jb21tb24oc3BlY19wcml2LVx1MDAzZWFoKTtcbi1cdHN0cnVjdCBhdGhfc29mdGMgKnNjID0gY29tbW9uLVx1MDAzZXByaXY7XG4gXHR1OCBudW1fYmlucywgKnZkYXRhID0gKHU4ICopaGRyO1xuIFx0c3RydWN0IGF0aF9yYWRhcl9pbmZvICpyYWRhcl9pbmZvO1xuIFx0aW50IGxlbiA9IHJzLVx1MDAzZXJzX2RhdGFsZW47XG5AQCAtNjI0LDEwICs2MzcsNyBAQCBpbnQgYXRoX2Ntbl9wcm9jZXNzX2ZmdChzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsIHN0cnVjdCBpZWVlODAyMTFfaFxuIFx0XHRcdFx0cmV0ID0gZmZ0X2hhbmRsZXIocnMsIHNwZWNfcHJpdiwgc2FtcGxlX2J1ZixcbiBcdFx0XHRcdFx0XHQgIHRzZiwgZnJlcSwgY2hhbl90eXBlKTtcbiBcbi1cdFx0XHRcdGlmIChyZXQgPT0gMClcbi1cdFx0XHRcdFx0UlhfU1RBVF9JTkMoc2MsIHJ4X3NwZWN0cmFsX3NhbXBsZV9nb29kKTtcbi1cdFx0XHRcdGVsc2Vcbi1cdFx0XHRcdFx0UlhfU1RBVF9JTkMoc2MsIHJ4X3NwZWN0cmFsX3NhbXBsZV9lcnIpO1xuK1x0XHRcdFx0YXRoX2Ntbl9jb3VudF9mZnRfc2FtcGxlKHNwZWNfcHJpdiwgcmV0KTtcbiBcbiBcdFx0XHRcdC8qIE1peCB0aGUgcmVjZWl2ZWQgYmlucyB0byB0aGUgL2Rldi9yYW5kb21cbiBcdFx0XHRcdCAqIHBvb2xcbkBAIC02NDIsMTAgKzY1Miw3IEBAIGludCBhdGhfY21uX3Byb2Nlc3NfZmZ0KHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiwgc3RydWN0IGllZWU4MDIxMV9oXG4gXHRcdFx0XHRyZXQgPSBmZnRfaGFuZGxlcihycywgc3BlY19wcml2LCBzYW1wbGVfc3RhcnQsXG4gXHRcdFx0XHRcdFx0ICB0c2YsIGZyZXEsIGNoYW5fdHlwZSk7XG4gXG4tXHRcdFx0XHRpZiAocmV0ID09IDApXG4tXHRcdFx0XHRcdFJYX1NUQVRfSU5DKHNjLCByeF9zcGVjdHJhbF9zYW1wbGVfZ29vZCk7XG4tXHRcdFx0XHRlbHNlXG4tXHRcdFx0XHRcdFJYX1NUQVRfSU5DKHNjLCByeF9zcGVjdHJhbF9zYW1wbGVfZXJyKTtcbitcdFx0XHRcdGF0aF9jbW5fY291bnRfZmZ0X3NhbXBsZShzcGVjX3ByaXYsIHJldCk7XG4gXG4gXHRcdFx0XHQvKiBNaXggdGhlIHJlY2VpdmVkIGJpbnMgdG8gdGhlIC9kZXYvcmFuZG9tXG4gXHRcdFx0XHQgKiBwb29sXG5AQCAtMTA1Miw4ICsxMDU5LDEwIEBAIHZvaWQgYXRoOWtfY21uX3NwZWN0cmFsX2RlaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYpXG4gRVhQT1JUX1NZTUJPTChhdGg5a19jbW5fc3BlY3RyYWxfZGVpbml0X2RlYnVnKTtcbiBcbiB2b2lkIGF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdixcbi1cdFx0XHRcdCAgIHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcGh5KVxuK1x0XHRcdFx0ICAgc3RydWN0IGRlbnRyeSAqZGVidWdmc19waHksXG4rXHRcdFx0XHQgICBzdHJ1Y3QgYXRoX3J4X3N0YXRzICpyeF9zdGF0cylcbiB7XG4rXHRzcGVjX3ByaXYtXHUwMDNlcnhfc3RhdHMgPSByeF9zdGF0cztcbiBcdHNwZWNfcHJpdi1cdTAwM2VyZnNfY2hhbl9zcGVjX3NjYW4gPSByZWxheV9vcGVuKFwic3BlY3RyYWxfc2NhblwiLFxuIFx0XHRcdFx0XHQgICAgZGVidWdmc19waHksXG4gXHRcdFx0XHRcdCAgICAxMDI0LCAyNTYsIFx1MDAyNnJmc19zcGVjX3NjYW5fY2IsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oXG5pbmRleCAwMTFkOGFiOGI5NzQ0Li4wZTJjN2Q2ZDM0ODc0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmhcbkBAIC05NCwxMiArOTQsMTYgQEAgc3RydWN0IGF0aF9odDIwXzQwX2ZmdF9wYWNrZXQge1xuIFx0c3RydWN0IGF0aF9yYWRhcl9pbmZvIHJhZGFyX2luZm87XG4gfSBfX3BhY2tlZDtcbiBcbitzdHJ1Y3QgYXRoX3J4X3N0YXRzO1xuK1xuIHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYge1xuIFx0c3RydWN0IGF0aF9odyAqYWg7XG4gXHQvKiByZWxheShmcykgY2hhbm5lbCBmb3Igc3BlY3RyYWwgc2NhbiAqL1xuIFx0c3RydWN0IHJjaGFuICpyZnNfY2hhbl9zcGVjX3NjYW47XG4gXHRlbnVtIHNwZWN0cmFsX21vZGUgc3BlY3RyYWxfbW9kZTtcbiBcdHN0cnVjdCBhdGhfc3BlY19zY2FuIHNwZWNfY29uZmlnO1xuK1x0LyogZHJpdmVyJ3MgUlggc3RhdGlzdGljcyB0byBhY2NvdW50IHNhbXBsZXMgaW50bywgaWYgYW55ICovXG4rXHRzdHJ1Y3QgYXRoX3J4X3N0YXRzICpyeF9zdGF0cztcbiB9O1xuIFxuICNkZWZpbmUgU1BFQ1RSQUxfSFQyMF80MF9UT1RBTF9EQVRBX0xFTlx0KHNpemVvZihzdHJ1Y3QgYXRoX2h0MjBfNDBfZmZ0X3BhY2tldCkpXG5AQCAtMTY5LDcgKzE3Myw5IEBAIHN0YXRpYyBpbmxpbmUgdTggc3BlY3RyYWxfYml0bWFwX3dlaWdodCh1OCAqYmlucylcbiB9XG4gXG4gI2lmZGVmIENPTkZJR19BVEg5S19DT01NT05fU1BFQ1RSQUxcbi12b2lkIGF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiwgc3RydWN0IGRlbnRyeSAqZGVidWdmc19waHkpO1xuK3ZvaWQgYXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LFxuK1x0XHRcdFx0ICAgc3RydWN0IGRlbnRyeSAqZGVidWdmc19waHksXG4rXHRcdFx0XHQgICBzdHJ1Y3QgYXRoX3J4X3N0YXRzICpyeF9zdGF0cyk7XG4gdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfZGVpbml0X2RlYnVnKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdik7XG4gXG4gdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfc2Nhbl90cmlnZ2VyKHN0cnVjdCBhdGhfY29tbW9uICpjb21tb24sXG5AQCAtMTgxLDcgKzE4Nyw4IEBAIGludCBhdGhfY21uX3Byb2Nlc3NfZmZ0KHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiwgc3RydWN0IGllZWU4MDIxMV9oXG4gXHRcdCAgICBzdHJ1Y3QgYXRoX3J4X3N0YXR1cyAqcnMsIHU2NCB0c2YpO1xuICNlbHNlXG4gc3RhdGljIGlubGluZSB2b2lkIGF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdixcbi1cdFx0XHRcdFx0XHQgc3RydWN0IGRlbnRyeSAqZGVidWdmc19waHkpXG4rXHRcdFx0XHRcdFx0IHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcGh5LFxuK1x0XHRcdFx0XHRcdCBzdHJ1Y3QgYXRoX3J4X3N0YXRzICpyeF9zdGF0cylcbiB7XG4gfVxuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZWJ1Zy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2RlYnVnLmNcbmluZGV4IDc0YTAxMzQwNzVjZjkuLjA0MmE0ZjU0MmE5NDMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGVidWcuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2RlYnVnLmNcbkBAIC0xMzg5LDcgKzEzODksOCBAQCBpbnQgYXRoOWtfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX2h3ICphaClcbiBcbiBcdGF0aDlrX2Rmc19pbml0X2RlYnVnKHNjKTtcbiBcdGF0aDlrX3R4OTlfaW5pdF9kZWJ1ZyhzYyk7XG4tXHRhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhcdTAwMjZzYy1cdTAwM2VzcGVjX3ByaXYsIHNjLVx1MDAzZWRlYnVnLmRlYnVnZnNfcGh5KTtcbitcdGF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnKFx1MDAyNnNjLVx1MDAzZXNwZWNfcHJpdiwgc2MtXHUwMDNlZGVidWcuZGVidWdmc19waHksXG4rXHRcdFx0XHQgICAgICBcdTAwMjZzYy1cdTAwM2VkZWJ1Zy5zdGF0cy5yeHN0YXRzKTtcbiBcbiBcdGRlYnVnZnNfY3JlYXRlX2Rldm1fc2VxZmlsZShzYy1cdTAwM2VkZXYsIFwiZG1hXCIsIHNjLVx1MDAzZWRlYnVnLmRlYnVnZnNfcGh5LFxuIFx0XHRcdFx0ICAgIHJlYWRfZmlsZV9kbWEpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jXG5pbmRleCA5NDM3ZDY5ODc3Y2M1Li45ZDM1NGIxZDkyOWM4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuY1xuQEAgLTQ4Nyw3ICs0ODcsOCBAQCBpbnQgYXRoOWtfaHRjX2luaXRfZGVidWcoc3RydWN0IGF0aF9odyAqYWgpXG4gXHRwcml2LVx1MDAzZWRlYnVnLmRlYnVnZnNfcGh5ID0gZGVidWdmc19jcmVhdGVfZGlyKEtCVUlMRF9NT0ROQU1FLFxuIFx0XHRcdFx0XHQgICAgIHByaXYtXHUwMDNlaHctXHUwMDNld2lwaHktXHUwMDNlZGVidWdmc2Rpcik7XG4gXG4tXHRhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhcdTAwMjZwcml2LVx1MDAzZXNwZWNfcHJpdiwgcHJpdi1cdTAwM2VkZWJ1Zy5kZWJ1Z2ZzX3BoeSk7XG4rXHRhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhcdTAwMjZwcml2LVx1MDAzZXNwZWNfcHJpdiwgcHJpdi1cdTAwM2VkZWJ1Zy5kZWJ1Z2ZzX3BoeSxcbitcdFx0XHRcdCAgICAgIFx1MDAyNnByaXYtXHUwMDNlZGVidWcucnhfc3RhdHMpO1xuIFxuIFx0ZGVidWdmc19jcmVhdGVfZmlsZShcInRndF9pbnRfc3RhdHNcIiwgMDQwMCwgcHJpdi1cdTAwM2VkZWJ1Zy5kZWJ1Z2ZzX3BoeSxcbiBcdFx0XHQgICAgcHJpdiwgXHUwMDI2Zm9wc190Z3RfaW50X3N0YXRzKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDAxOjAzOjIxLjI1Mzc5OTUwNFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjU3NDE3NTk0ODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBTdHJhdGVneSBmb3IgdGhpcyBQYXRjaCoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIGZvY3VzZWQgb24gZGV0ZXJtaW5pbmcgdGhlIGZ1enphYmlsaXR5IG9mIHRoaXMgcGF0Y2ggYW5kIGNyYWZ0aW5nIGFuIGVmZmVjdGl2ZSBmdXp6aW5nIHN0cmF0ZWd5LiBXZSdyZSBsb29raW5nIGF0IG1vZGlmaWNhdGlvbnMgdG8gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuY2AsIGAuaGAsIGBkZWJ1Zy5jYCwgYW5kIGBodGNfZHJ2X2RlYnVnLmNgLiBJbW1lZGlhdGVseSwgSSBuZWVkIHRvIGtub3cgdGhlIGNvbnRleHQgb2YgdGhlc2UgZHJpdmVycy5cblxuT2theSwgc28gYGF0aDlrYCBpcyBQQ0kvQUhCIHdpcmVsZXNzLCBhbmQgYGF0aDlrX2h0Y2AgaXMgVVNCIHdpcmVsZXNzLiBUaGF0J3MgZ29vZCBpbmZvcm1hdGlvbi4gVVNCIGRyaXZlcnMgYXJlIG9mdGVuIHByaW1lIHRhcmdldHMsIGJlY2F1c2UgdGhleSBjYW4gYmUgZW11bGF0ZWQuIFN5emthbGxlcidzIFVTQiBmdXp6aW5nIGNhcGFiaWxpdGllcywgcGFydGljdWxhcmx5IHVzaW5nIFJhdyBHYWRnZXQsIGR1bW15X2hjZCwgb3IgdmhjaSwgY2FuIGJlIGluY3JlZGlibHkgZWZmZWN0aXZlIGhlcmUuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoaXMgYGNvbW1vbi1zcGVjdHJhbGAgY29kZSBpcyBldmVuIHVzZWQgYnkgYm90aC4gSXMgdGhlIHNhbWUgc3BlY3RyYWwgZnVuY3Rpb25hbGl0eSBpbiBib3RoIGBhdGg5a2AgYW5kIGBhdGg5a19odGNgIG9yIGFyZSB3ZSBvbmx5IGZ1enppbmcgb25lP1xuXG5Ob3csIEknbGwgbmVlZCB0byBkaWcgaW50byB0aGUgY29kZWJhc2UuIEknbSBnb2luZyB0byBzdGFydCBzZWFyY2hpbmcgZm9yIHVzZXMgb2YgYGF0aDlrX2h0Y2AsIGBhdGg5a2AsIGFuZCB0aGUgc3BlY3RyYWwtcmVsYXRlZCBmdW5jdGlvbnMuIFdlJ2xsIG5lZWQgdG8ga25vdyB3aGljaCBmdW5jdGlvbnMgYXJlIGVudHJ5IHBvaW50cyBhbmQgd2hldGhlciB0aGV5J3JlIGV2ZW4gcmVhY2hhYmxlLiBXZSdsbCBuZWVkIHRvIGRldGVybWluZSB0aGUgb3B0aW1hbCBjb25maWd1cmF0aW9uIGZvciB0aGlzLiBUaGlzIHNlYXJjaCB3aWxsIGhlbHAgbWUgbmFycm93IGRvd24gd2hhdCBuZWVkcyBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MDU3LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjU2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMDE6MDM6MjYuOTk1NTYxNzMyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkxMTM0MTc2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkFUSDlLX0hUQ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnPTEzPWNvbmZpZyBBVEg5S19CVENPRVhfU1VQUE9SVFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE0LVxcdGJvb2wgXFxcIkF0aGVyb3MgYmx1ZXRvb3RoIGNvZXhpc3RlbmNlIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTU6XFx0ZGVwZW5kcyBvbiAoQVRIOUsgfHwgQVRIOUtfSFRDKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE2LVxcdGRlZmF1bHQgeVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc9MTU2PWNvbmZpZyBBVEg5S19QQ0lfTk9fRUVQUk9NXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTcyOmNvbmZpZyBBVEg5S19IVENcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNzMtXFx0dHJpc3RhdGUgXFxcIkF0aGVyb3MgSFRDIGJhc2VkIHdpcmVsZXNzIGNhcmRzIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xODYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTg3OmNvbmZpZyBBVEg5S19IVENfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE4OC1cXHRib29sIFxcXCJBdGhlcm9zIGF0aDlrX2h0YyBkZWJ1Z2dpbmdcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTg5OlxcdGRlcGVuZHMgb24gQVRIOUtfSFRDIFxcdTAwMjZcXHUwMDI2IERFQlVHX0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTkwLVxcdHNlbGVjdCBBVEg5S19DT01NT05fREVCVUdcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnPTIwNj1jb25maWcgQVRIOUtfQ09NTU9OX1NQRUNUUkFMXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMjA3LVxcdGJvb2wgXFxcIkF0aGVyb3MgYXRoOWsvYXRoOWtfaHRjIHNwZWN0cmFsIHNjYW4gc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoyMDg6XFx0ZGVwZW5kcyBvbiBBVEg5S19ERUJVR0ZTIHx8IEFUSDlLX0hUQ19ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMjA5LVxcdHNlbGVjdCBSRUxBWVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlPTY4PWF0aDlrX2h0Yy15ICs9XFx0aHRjX2hzdC5vIFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS03Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6Nzc6YXRoOWtfaHRjLSQoQ09ORklHX0FUSDlLX0hUQ19ERUJVR0ZTKSArPSBodGNfZHJ2X2RlYnVnLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtNzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlOjc5Om9iai0kKENPTkZJR19BVEg5S19IVEMpICs9IGF0aDlrX2h0Yy5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTgwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwM19lZXByb20uYz0zMzkwPXN0YXRpYyBib29sIGF0aDlrX2h3X2FyOTMwMF9maWxsX2VlcHJvbShzdHJ1Y3QgYXRoX2h3ICphaClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDNfZWVwcm9tLmMtMzQwMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAzX2VlcHJvbS5jOjM0MDE6I2lmIGRlZmluZWQoQ09ORklHX0FUSDlLX0RFQlVHRlMpIHx8IGRlZmluZWQoQ09ORklHX0FUSDlLX0hUQ19ERUJVR0ZTKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDNfZWVwcm9tLmMtMzQwMi1zdGF0aWMgdTMyIGFyOTAwM19kdW1wX21vZGFsX2VlcHJvbShjaGFyICpidWYsIHUzMiBsZW4sIHUzMiBzaXplLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYz0yMzI9c3RhdGljIGlubGluZSB2b2lkIGF0aDlrX3NrYl9xdWV1ZV9jb21wbGV0ZShzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTIzOC1cXHR3aGlsZSAoKHNrYiA9IF9fc2tiX2RlcXVldWUocXVldWUpKSAhPSBOVUxMKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzoyMzk6I2lmZGVmIENPTkZJR19BVEg5S19IVENfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMjQwLVxcdFxcdGludCBsbiA9IHNrYi1cXHUwMDNlbGVuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYz0zNzY9c3RhdGljIGludCBoaWZfdXNiX3NlbmRfdHgoc3RydWN0IGhpZl9kZXZpY2VfdXNiICpoaWZfZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0zOTktXFx0LyogTWdtdC9CZWFjb24gZnJhbWVzIGRvbid0IHVzZSB0aGUgVFggYnVmZmVyIHBvb2wgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjQwMDpcXHRpZiAoKHR4X2N0bC1cXHUwMDNldHlwZSA9PSBBVEg5S19IVENfTUdNVCkgfHxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjQwMTpcXHQgICAgKHR4X2N0bC1cXHUwMDNldHlwZSA9PSBBVEg5S19IVENfQkVBQ09OKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNDAyLVxcdFxcdHJldCA9IGhpZl91c2Jfc2VuZF9tZ210KGhpZl9kZXYsIHNrYik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQwNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjQwNzpcXHRpZiAoKHR4X2N0bC1cXHUwMDNldHlwZSA9PSBBVEg5S19IVENfTk9STUFMKSB8fFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NDA4OlxcdCAgICAodHhfY3RsLVxcdTAwM2V0eXBlID09IEFUSDlLX0hUQ19BTVBEVSkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQwOS1cXHRcXHRfX3NrYl9xdWV1ZV90YWlsKFxcdTAwMjZoaWZfZGV2LVxcdTAwM2V0eC50eF9za2JfcXVldWUsIHNrYik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jPTQ4Nz1zdGF0aWMgaW5saW5lIGJvb2wgY2hlY2tfaW5kZXgoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTggaWR4KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00OTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo0OTM6XFx0aWYgKCh0eF9jdGwtXFx1MDAzZXR5cGUgPT0gQVRIOUtfSFRDX0FNUERVKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNDk0LVxcdCAgICAodHhfY3RsLVxcdTAwM2VzdGFfaWR4ID09IGlkeCkpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9NTY9ZW51bSBodGNfb3Btb2RlIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC02NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6NjU6I2RlZmluZSBBVEg5S19IVENfQU1QRFUgIDFcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6NjY6I2RlZmluZSBBVEg5S19IVENfTk9STUFMIDJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6Njc6I2RlZmluZSBBVEg5S19IVENfQkVBQ09OIDNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6Njg6I2RlZmluZSBBVEg5S19IVENfTUdNVCAgIDRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNjktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjcwOiNkZWZpbmUgQVRIOUtfSFRDX1RYX0NUU09OTFkgICAgICAweDFcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6NzE6I2RlZmluZSBBVEg5S19IVENfVFhfUlRTQ1RTICAgICAgIDB4MlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC03Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9NzM9c3RydWN0IHR4X2ZyYW1lX2hkciB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNzctXFx0dTggdGlkbm87XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjc4OlxcdF9fYmUzMiBmbGFnczsgLyogQVRIOUtfSFRDX1RYXyogKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNzktXFx0dTgga2V5X3R5cGU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9MTk0PXN0cnVjdCBhdGg5a19odGNfdGFyZ2V0X3J4X3N0YXRzIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0xOTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjIwMDojZGVmaW5lIEFUSDlLX0hUQ19NQVhfVklGIDJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MjAxOiNkZWZpbmUgQVRIOUtfSFRDX01BWF9CQ05fVklGIDJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMjAyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTI0OT1zdHJ1Y3QgYXRoOWtfdmlmX2l0ZXJfZGF0YSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMjUzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyNTQ6I2RlZmluZSBBVEg5S19IVENfTUFYX1NUQSA4XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI1NTojZGVmaW5lIEFUSDlLX0hUQ19NQVhfVElEIDhcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMjU2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTI2ND1zdHJ1Y3QgYXRoOWtfaHRjX3N0YSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI2NS1cXHR1OCBpbmRleDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MjY2OlxcdGVudW0gdGlkX2FnZ3Jfc3RhdGUgdGlkX3N0YXRlW0FUSDlLX0hUQ19NQVhfVElEXTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMjY3LVxcdHN0cnVjdCB3b3JrX3N0cnVjdCByY191cGRhdGVfd29yaztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0yNzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI3MTojZGVmaW5lIEFUSDlLX0hUQ19SWEJVRiAyNTZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMjcyLSNkZWZpbmUgSFRDX1JYX0ZSQU1FX0hFQURFUl9TSVpFIDQwXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9MjgxPXN0cnVjdCBhdGg5a19odGNfcngge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI4Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6Mjg3OiNkZWZpbmUgQVRIOUtfSFRDX1RYX0NMRUFOVVBfSU5URVJWQUwgNTAgLyogbXMgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6Mjg4OiNkZWZpbmUgQVRIOUtfSFRDX1RYX1RJTUVPVVRfSU5URVJWQUwgMzAwMCAvKiBtcyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyODk6I2RlZmluZSBBVEg5S19IVENfVFhfUkVTRVJWRSAxMFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyOTA6I2RlZmluZSBBVEg5S19IVENfVFhfVElNRU9VVF9DT1VOVCA0MFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyOTE6I2RlZmluZSBBVEg5S19IVENfVFhfVEhSRVNIT0xEIChNQVhfVFhfQlVGX05VTSAtIEFUSDlLX0hUQ19UWF9SRVNFUlZFKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0yOTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI5MzojZGVmaW5lIEFUSDlLX0hUQ19PUF9UWF9RVUVVRVNfU1RPUCBCSVQoMClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6Mjk0OiNkZWZpbmUgQVRIOUtfSFRDX09QX1RYX0RSQUlOICAgICAgIEJJVCgxKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0yOTUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9MzExPXN0cnVjdCBhdGg5a19odGNfdHhfY3RsIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MzEyOlxcdHU4IHR5cGU7IC8qIEFUSDlLX0hUQ18qICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTMxMy1cXHR1OCBlcGlkO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTMxOT1zdGF0aWMgaW5saW5lIHN0cnVjdCBhdGg5a19odGNfdHhfY3RsICpIVENfU0tCX0NCKHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMzI3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDozMjg6I2lmZGVmIENPTkZJR19BVEg5S19IVENfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0zMjktI2RlZmluZSBfX1NUQVRfU0FGRShoaWZfZGV2LCBleHByKVxcdGRvIHsgKChoaWZfZGV2KS1cXHUwMDNlaHRjX2hhbmRsZS1cXHUwMDNlZHJ2X3ByaXYgPyAoZXhwcikgOiAwKTsgfSB3aGlsZSAoMClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD0zODg9c3RhdGljIGlubGluZSB2b2lkIGF0aDlrX2h0Y19lcnJfc3RhdF9yeChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMzkyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDozOTM6I2VuZGlmIC8qIENPTkZJR19BVEg5S19IVENfREVCVUdGUyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0zOTQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9NDA5PXN0cnVjdCBodGNfYmVhY29uIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC00MTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjQxNjpcXHRzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqYnNsb3RbQVRIOUtfSFRDX01BWF9CQ05fVklGXTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNDE3LVxcdHUzMiBibWlzc2NudDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD00NTY9c3RydWN0IGF0aDlrX2h0Y19wcml2IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC00NzgtXFx0dTggc3RhX3Nsb3Q7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjQ3OTpcXHR1OCB2aWZfc3RhX3Bvc1tBVEg5S19IVENfTUFYX1ZJRl07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTQ4MC1cXHR1OCBudW1faWJzc192aWY7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNTM1LVxcdHN0cnVjdCBkZWxheWVkX3dvcmsgZHV0eV9jeWNsZV93b3JrO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo1MzY6I2lmZGVmIENPTkZJR19BVEg5S19IVENfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC01MzctXFx0c3RydWN0IGF0aDlrX2RlYnVnIGRlYnVnO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTY0MT1pbnQgYXRoOWtfaHRjX3Jlc3VtZShzdHJ1Y3QgaHRjX3RhcmdldCAqaHRjX2hhbmRsZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTY0Mi0jZW5kaWZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6NjQzOiNpZmRlZiBDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNjQ0LWludCBhdGg5a19odGNfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX2h3ICphaCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9NjQ4PXN0YXRpYyBpbmxpbmUgdm9pZCBhdGg5a19odGNfZGVpbml0X2RlYnVnKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC02NTAtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo2NTE6I2VuZGlmIC8qIENPTkZJR19BVEg5S19IVENfREVCVUdGUyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC02NTItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYz0xMTE9c3RhdGljIHZvaWQgYXRoOWtfaHRjX2JlYWNvbl9jb25maWdfYXAoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMTE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jOjExNzpcXHRhdGg5a19jbW5fYmVhY29uX2NvbmZpZ19hcChhaCwgY29uZiwgQVRIOUtfSFRDX01BWF9CQ05fVklGKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYy0xMTgtXFx0YXRoOWtfaHRjX2JlYWNvbl9pbml0KHByaXYsIGNvbmYsIGZhbHNlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jPTE5MT1zdGF0aWMgdm9pZCBhdGg5a19odGNfc2VuZF9iZWFjb24oc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMjQyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jOjI0MzpcXHR0eF9jdGwtXFx1MDAzZXR5cGUgPSBBVEg5S19IVENfQkVBQ09OO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTI0NC1cXHR0eF9jdGwtXFx1MDAzZWVwaWQgPSBwcml2LVxcdTAwM2ViZWFjb25fZXA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYz0yNjQ9c3RhdGljIGludCBhdGg5a19odGNfY2hvb3NlX2JzbG90KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTI3Ni1cXHR0c2Z0dSA9IFRTRl9UT19UVSh0c2YgXFx1MDAzZVxcdTAwM2UgMzIsIHRzZik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmM6Mjc3OlxcdHNsb3QgPSAoKHRzZnR1ICUgaW50dmFsKSAqIEFUSDlLX0hUQ19NQVhfQkNOX1ZJRikgLyBpbnR2YWw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmM6Mjc4OlxcdHNsb3QgPSBBVEg5S19IVENfTUFYX0JDTl9WSUYgLSBzbG90IC0gMTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYy0yNzktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYz0zMjU9dm9pZCBhdGg5a19odGNfYXNzaWduX2JzbG90KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTMzMi1cXHRzcGluX2xvY2tfYmgoXFx1MDAyNnByaXYtXFx1MDAzZWJlYWNvbl9sb2NrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYzozMzM6XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFUSDlLX0hUQ19NQVhfQkNOX1ZJRjsgaSsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMzM0LVxcdFxcdGlmIChwcml2LVxcdTAwM2ViZWFjb24uYnNsb3RbaV0gPT0gTlVMTCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmM9MzY1PXZvaWQgYXRoOWtfaHRjX3NldF90c2ZhZGp1c3Qoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMzgwLVxcdCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jOjM4MTpcXHR0c2ZhZGp1c3QgPSBjdXJfY29uZi1cXHUwMDNlYmVhY29uX2ludGVydmFsICogYXZwLVxcdTAwM2Vic2xvdCAvIEFUSDlLX0hUQ19NQVhfQkNOX1ZJRjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYy0zODItXFx0YXZwLVxcdTAwM2V0c2ZhZGp1c3QgPSBjcHVfdG9fbGU2NChUVV9UT19VU0VDKHRzZmFkanVzdCkpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYz0zOTg9c3RhdGljIGNvbnN0IGNoYXIgYXRoOWtfaHRjX2dzdHJpbmdzX3N0YXRzW11bRVRIX0dTVFJJTkdfTEVOXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMtNDE4LX07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYzo0MTk6I2RlZmluZSBBVEg5S19IVENfU1NUQVRTX0xFTiBBUlJBWV9TSVpFKGF0aDlrX2h0Y19nc3RyaW5nc19zdGF0cylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jLTQyMC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM9NDMwPWludCBhdGg5a19odGNfZ2V0X2V0X3NzZXRfY291bnQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jLTQzMy1cXHRpZiAoc3NldCA9PSBFVEhfU1NfU1RBVFMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYzo0MzQ6XFx0XFx0cmV0dXJuIEFUSDlLX0hUQ19TU1RBVFNfTEVOO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMtNDM1LVxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYz00NDg9dm9pZCBhdGg5a19odGNfZ2V0X2V0X3N0YXRzKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYy00NzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYzo0NzQ6XFx0V0FSTl9PTihpICE9IEFUSDlLX0hUQ19TU1RBVFNfTEVOKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jLTQ3NS19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM9NjA2PXN0YXRpYyBpbnQgYXRoOWtfaW5pdF9wcml2KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy02NzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jOjY3NDpcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgQVRIOUtfSFRDX01BWF9CQ05fVklGOyBpKyspXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jLTY3NS1cXHRcXHRwcml2LVxcdTAwM2ViZWFjb24uYnNsb3RbaV0gPSBOVUxMO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jPTE4ND12b2lkIGF0aDlrX2h0Y19yZXNldChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMjMzLVxcdG1vZF90aW1lcihcXHUwMDI2cHJpdi1cXHUwMDNldHguY2xlYW51cF90aW1lcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6MjM0OlxcdFxcdCAgamlmZmllcyArIG1zZWNzX3RvX2ppZmZpZXMoQVRIOUtfSFRDX1RYX0NMRUFOVVBfSU5URVJWQUwpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMjM1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jPTI0MD1zdGF0aWMgaW50IGF0aDlrX2h0Y19zZXRfY2hhbm5lbChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMzExLVxcdG1vZF90aW1lcihcXHUwMDI2cHJpdi1cXHUwMDNldHguY2xlYW51cF90aW1lcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6MzEyOlxcdFxcdCAgamlmZmllcyArIG1zZWNzX3RvX2ppZmZpZXMoQVRIOUtfSFRDX1RYX0NMRUFOVVBfSU5URVJWQUwpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMzEzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jPTM1MD1zdGF0aWMgaW50IGF0aDlrX2h0Y19hZGRfbW9uaXRvcl9pbnRlcmZhY2Uoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTM1Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6MzU4OlxcdGlmICgocHJpdi1cXHUwMDNlbnZpZnMgXFx1MDAzZT0gQVRIOUtfSFRDX01BWF9WSUYpIHx8XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjM1OTpcXHQgICAgKHByaXYtXFx1MDAzZW5zdGF0aW9ucyBcXHUwMDNlPSBBVEg5S19IVENfTUFYX1NUQSkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMzYwLVxcdFxcdHJldCA9IC1FTk9CVUZTO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTM2NC1cXHRzdGFfaWR4ID0gZmZ6KHByaXYtXFx1MDAzZXN0YV9zbG90KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6MzY1OlxcdGlmICgoc3RhX2lkeCBcXHUwMDNjIDApIHx8IChzdGFfaWR4IFxcdTAwM2UgQVRIOUtfSFRDX01BWF9TVEEpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTM2Ni1cXHRcXHRyZXQgPSAtRU5PQlVGUztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYz00NjY9c3RhdGljIGludCBhdGg5a19odGNfYWRkX3N0YXRpb24oc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTQ3Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6NDc4OlxcdGlmIChwcml2LVxcdTAwM2Vuc3RhdGlvbnMgXFx1MDAzZT0gQVRIOUtfSFRDX01BWF9TVEEpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTQ3OS1cXHRcXHRyZXR1cm4gLUVOT0JVRlM7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtNDgxLVxcdHN0YV9pZHggPSBmZnoocHJpdi1cXHUwMDNlc3RhX3Nsb3QpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzo0ODI6XFx0aWYgKChzdGFfaWR4IFxcdTAwM2MgMCkgfHwgKHN0YV9pZHggXFx1MDAzZSBBVEg5S19IVENfTUFYX1NUQSkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTQ4My1cXHRcXHRyZXR1cm4gLUVOT0JVRlM7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM9NzAyPXN0YXRpYyBpbnQgYXRoOWtfaHRjX3R4X2FnZ3Jfb3BlcihzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtNzEzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzo3MTQ6XFx0aWYgKHRpZCBcXHUwMDNlPSBBVEg5S19IVENfTUFYX1RJRClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtNzE1LVxcdFxcdHJldHVybiAtRUlOVkFMO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jPTkwNz1zdGF0aWMgaW50IGF0aDlrX2h0Y19zdGFydChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy05NjAtXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZwcml2LVxcdTAwM2V0eC50eF9sb2NrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6OTYxOlxcdHByaXYtXFx1MDAzZXR4LmZsYWdzIFxcdTAwMjY9IH5BVEg5S19IVENfT1BfVFhfUVVFVUVTX1NUT1A7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTk2Mi1cXHRzcGluX3VubG9ja19iaChcXHUwMDI2cHJpdi1cXHUwMDNldHgudHhfbG9jayk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtOTY2LVxcdG1vZF90aW1lcihcXHUwMDI2cHJpdi1cXHUwMDNldHguY2xlYW51cF90aW1lcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6OTY3OlxcdFxcdCAgamlmZmllcyArIG1zZWNzX3RvX2ppZmZpZXMoQVRIOUtfSFRDX1RYX0NMRUFOVVBfSU5URVJWQUwpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtOTY4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jPTE2NTg9c3RhdGljIGludCBhdGg5a19odGNfYW1wZHVfYWN0aW9uKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTE2ODgtXFx0Y2FzZSBJRUVFODAyMTFfQU1QRFVfVFhfT1BFUkFUSU9OQUw6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjE2ODk6XFx0XFx0aWYgKHRpZCBcXHUwMDNlPSBBVEg5S19IVENfTUFYX1RJRCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0xNjkwLVxcdFxcdFxcdHJldCA9IC1FSU5WQUw7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM9MTg3ND1zdHJ1Y3QgaWVlZTgwMjExX29wcyBhdGg5a19odGNfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTE5MDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjE5MDc6I2lmZGVmIENPTkZJR19BVEg5S19IVENfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0xOTA4LVxcdC5nZXRfZXRfc3NldF9jb3VudCAgPSBhdGg5a19odGNfZ2V0X2V0X3NzZXRfY291bnQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9MjM9c3RhdGljIGNvbnN0IGludCBzdWJ0eXBlX3R4cV90b19od3FbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0yOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6MzA6I2RlZmluZSBBVEg5S19IVENfSU5JVF9UWFEoc3VidHlwZSkgZG8ge1xcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMzEtXFx0XFx0cWkudHFpX3N1YnR5cGUgPSBzdWJ0eXBlX3R4cV90b19od3Fbc3VidHlwZV07XFx0XFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTU2PXZvaWQgYXRoOWtfaHRjX2NoZWNrX3N0b3BfcXVldWVzKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy01OS1cXHRwcml2LVxcdTAwM2V0eC5xdWV1ZWRfY250Kys7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjYwOlxcdGlmICgocHJpdi1cXHUwMDNldHgucXVldWVkX2NudCBcXHUwMDNlPSBBVEg5S19IVENfVFhfVEhSRVNIT0xEKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo2MTpcXHQgICAgIShwcml2LVxcdTAwM2V0eC5mbGFncyBcXHUwMDI2IEFUSDlLX0hUQ19PUF9UWF9RVUVVRVNfU1RPUCkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NjI6XFx0XFx0cHJpdi1cXHUwMDNldHguZmxhZ3MgfD0gQVRIOUtfSFRDX09QX1RYX1FVRVVFU19TVE9QO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy02My1cXHRcXHRpZWVlODAyMTFfc3RvcF9xdWV1ZXMocHJpdi1cXHUwMDNlaHcpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTY4PXZvaWQgYXRoOWtfaHRjX2NoZWNrX3dha2VfcXVldWVzKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy03MC1cXHRzcGluX2xvY2tfYmgoXFx1MDAyNnByaXYtXFx1MDAzZXR4LnR4X2xvY2spO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo3MTpcXHRpZiAoKHByaXYtXFx1MDAzZXR4LnF1ZXVlZF9jbnQgXFx1MDAzYyBBVEg5S19IVENfVFhfVEhSRVNIT0xEKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo3MjpcXHQgICAgKHByaXYtXFx1MDAzZXR4LmZsYWdzIFxcdTAwMjYgQVRIOUtfSFRDX09QX1RYX1FVRVVFU19TVE9QKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo3MzpcXHRcXHRwcml2LVxcdTAwM2V0eC5mbGFncyBcXHUwMDI2PSB+QVRIOUtfSFRDX09QX1RYX1FVRVVFU19TVE9QO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy03NC1cXHRcXHRpZWVlODAyMTFfd2FrZV9xdWV1ZXMocHJpdi1cXHUwMDNlaHcpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTIxND1zdGF0aWMgdm9pZCBhdGg5a19odGNfdHhfbWdtdChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMjQwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzoyNDE6XFx0dHhfY3RsLVxcdTAwM2V0eXBlID0gQVRIOUtfSFRDX01HTVQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTI0Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz0yNjA9c3RhdGljIHZvaWQgYXRoOWtfaHRjX3R4X2RhdGEoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTI5Mi1cXHRpZiAodHhfaW5mby1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRUVFODAyMTFfVFhfQ1RMX0FNUERVKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjI5MzpcXHRcXHR0eF9jdGwtXFx1MDAzZXR5cGUgPSBBVEg5S19IVENfQU1QRFU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjI5NDpcXHRcXHR0eF9oZHIuZGF0YV90eXBlID0gQVRIOUtfSFRDX0FNUERVO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0yOTUtXFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6Mjk2OlxcdFxcdHR4X2N0bC1cXHUwMDNldHlwZSA9IEFUSDlLX0hUQ19OT1JNQUw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjI5NzpcXHRcXHR0eF9oZHIuZGF0YV90eXBlID0gQVRIOUtfSFRDX05PUk1BTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMjk4LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0zMTItXFx0XFx0aWYgKHNrYi1cXHUwMDNlbGVuIFxcdTAwM2UgcHJpdi1cXHUwMDNlaHctXFx1MDAzZXdpcGh5LVxcdTAwM2VydHNfdGhyZXNob2xkKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzozMTM6XFx0XFx0XFx0ZmxhZ3MgfD0gQVRIOUtfSFRDX1RYX1JUU0NUUztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMzE0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0zMTUtXFx0LyogQ1RTLXRvLXNlbGYgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6MzE2OlxcdGlmICghKGZsYWdzIFxcdTAwMjYgQVRIOUtfSFRDX1RYX1JUU0NUUykgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMzE3LVxcdCAgICAodmlmIFxcdTAwMjZcXHUwMDI2IHZpZi1cXHUwMDNlYnNzX2NvbmYudXNlX2N0c19wcm90KSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6MzE4OlxcdFxcdGZsYWdzIHw9IEFUSDlLX0hUQ19UWF9DVFNPTkxZO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0zMTktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9MzkyPXN0YXRpYyBpbmxpbmUgYm9vbCBfX2F0aDlrX2h0Y19jaGVja190eF9hZ2dyKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0zOTctXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZwcml2LVxcdTAwM2V0eC50eF9sb2NrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6Mzk4OlxcdGlmICgodGlkIFxcdTAwM2MgQVRIOUtfSFRDX01BWF9USUQpIFxcdTAwMjZcXHUwMDI2IChpc3RhLVxcdTAwM2V0aWRfc3RhdGVbdGlkXSA9PSBBR0dSX1NUT1ApKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0zOTktXFx0XFx0cmV0ID0gdHJ1ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz00NDU9c3RhdGljIHZvaWQgYXRoOWtfaHRjX3R4X3Byb2Nlc3Moc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ3OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NDc5OlxcdGlmICh0eHMtXFx1MDAzZXRzX2ZsYWdzIFxcdTAwMjYgQVRIOUtfSFRDX1RYU1RBVF9BQ0spIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDgwLVxcdFxcdHR4X2luZm8tXFx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9UWF9TVEFUX0FDSztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00ODQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjQ4NTpcXHRpZiAodHhzLVxcdTAwM2V0c19mbGFncyBcXHUwMDI2IEFUSDlLX0hUQ19UWFNUQVRfRklMVClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDg2LVxcdFxcdHR4X2luZm8tXFx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9UWF9TVEFUX1RYX0ZJTFRFUkVEO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00ODctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjQ4ODpcXHRpZiAodHhzLVxcdTAwM2V0c19mbGFncyBcXHUwMDI2IEFUSDlLX0hUQ19UWFNUQVRfUlRDX0NUUylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDg5LVxcdFxcdHJhdGUtXFx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9UWF9SQ19VU0VfUlRTX0NUUztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00OTEtXFx0cmF0ZS1cXHUwMDNlY291bnQgPSAxO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo0OTI6XFx0cmF0ZS1cXHUwMDNlaWR4ID0gTVModHhzLVxcdTAwM2V0c19yYXRlLCBBVEg5S19IVENfVFhTVEFUX1JBVEUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00OTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjQ5NDpcXHRpZiAodHhzLVxcdTAwM2V0c19mbGFncyBcXHUwMDI2IEFUSDlLX0hUQ19UWFNUQVRfTUNTKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ5NS1cXHRcXHRyYXRlLVxcdTAwM2VmbGFncyB8PSBJRUVFODAyMTFfVFhfUkNfTUNTO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00OTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjQ5NzpcXHRcXHRpZiAodHhzLVxcdTAwM2V0c19mbGFncyBcXHUwMDI2IEFUSDlLX0hUQ19UWFNUQVRfQ1c0MClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDk4LVxcdFxcdFxcdHJhdGUtXFx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9UWF9SQ180MF9NSFpfV0lEVEg7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjQ5OTpcXHRcXHRpZiAodHhzLVxcdTAwM2V0c19mbGFncyBcXHUwMDI2IEFUSDlLX0hUQ19UWFNUQVRfU0dJKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy01MDAtXFx0XFx0XFx0cmF0ZS1cXHUwMDNlZmxhZ3MgfD0gSUVFRTgwMjExX1RYX1JDX1NIT1JUX0dJO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTUzOT12b2lkIGF0aDlrX2h0Y190eF9kcmFpbihzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNTQzLVxcdHNwaW5fbG9ja19iaChcXHUwMDI2cHJpdi1cXHUwMDNldHgudHhfbG9jayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjU0NDpcXHRwcml2LVxcdTAwM2V0eC5mbGFncyB8PSBBVEg5S19IVENfT1BfVFhfRFJBSU47XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTU0NS1cXHRzcGluX3VubG9ja19iaChcXHUwMDI2cHJpdi1cXHUwMDNldHgudHhfbG9jayk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNTczLVxcdHNwaW5fbG9ja19iaChcXHUwMDI2cHJpdi1cXHUwMDNldHgudHhfbG9jayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjU3NDpcXHRwcml2LVxcdTAwM2V0eC5mbGFncyBcXHUwMDI2PSB+QVRIOUtfSFRDX09QX1RYX0RSQUlOO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy01NzUtXFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNnByaXYtXFx1MDAzZXR4LnR4X2xvY2spO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTU3OD12b2lkIGF0aDlrX3R4X2ZhaWxlZF90YXNrbGV0KHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy01ODItXFx0c3Bpbl9sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2V0eC50eF9sb2NrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NTgzOlxcdGlmIChwcml2LVxcdTAwM2V0eC5mbGFncyBcXHUwMDI2IEFUSDlLX0hUQ19PUF9UWF9EUkFJTikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy01ODQtXFx0XFx0c3Bpbl91bmxvY2soXFx1MDAyNnByaXYtXFx1MDAzZXR4LnR4X2xvY2spO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTYxOD1zdGF0aWMgc3RydWN0IHNrX2J1ZmYqIGF0aDlrX2h0Y190eF9nZXRfcGFja2V0KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy02MjQtXFx0dW5zaWduZWQgbG9uZyBmbGFncztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NjI1OlxcdHU4IGVwaWQgPSBNUyh0eHMtXFx1MDAzZXRzX3JhdGUsIEFUSDlLX0hUQ19UWFNUQVRfRVBJRCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTYyNi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz03MTY9c3RhdGljIGlubGluZSBib29sIGNoZWNrX3BhY2tldChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNzI0LVxcdFxcdCAgICAgICB0eF9jdGwtXFx1MDAzZXRpbWVzdGFtcCArXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjcyNTpcXHRcXHQgICAgICAgbXNlY3NfdG9famlmZmllcyhBVEg5S19IVENfVFhfVElNRU9VVF9JTlRFUlZBTCkpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTcyNi1cXHRcXHRhdGhfZGJnKGNvbW1vbiwgWE1JVCwgXFxcIkRyb3BwaW5nIGEgcGFja2V0IGR1ZSB0byBUWCB0aW1lb3V0XFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz03NjE9dm9pZCBhdGg5a19odGNfdHhfY2xlYW51cF90aW1lcihzdHJ1Y3QgdGltZXJfbGlzdCAqdClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy03NzYtXFx0XFx0XFx0XFx0ZXZlbnQtXFx1MDAzZXR4cy5jb29raWUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjc3NzpcXHRcXHRcXHRcXHRNUyhldmVudC1cXHUwMDNldHhzLnRzX3JhdGUsIEFUSDlLX0hUQ19UWFNUQVRfRVBJRCkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy03NzgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNzg0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo3ODU6XFx0XFx0aWYgKCsrZXZlbnQtXFx1MDAzZWNvdW50IFxcdTAwM2U9IEFUSDlLX0hUQ19UWF9USU1FT1VUX0NPVU5UKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTc4Ni1cXHRcXHRcXHRsaXN0X2RlbChcXHUwMDI2ZXZlbnQtXFx1MDAzZWxpc3QpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTgwNS1cXHRtb2RfdGltZXIoXFx1MDAyNnByaXYtXFx1MDAzZXR4LmNsZWFudXBfdGltZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjgwNjpcXHRcXHQgIGppZmZpZXMgKyBtc2Vjc190b19qaWZmaWVzKEFUSDlLX0hUQ19UWF9DTEVBTlVQX0lOVEVSVkFMKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTgwNy19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9ODI3PWJvb2wgYXRoOWtfaHRjX3R4cV9zZXR1cChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsIGludCBzdWJ0eXBlKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTgzNC1cXHRtZW1zZXQoXFx1MDAyNnFpLCAwLCBzaXplb2YocWkpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6ODM1OlxcdEFUSDlLX0hUQ19JTklUX1RYUShzdWJ0eXBlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtODM2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTg1Mj1pbnQgYXRoOWtfaHRjX2NhYnFfc2V0dXAoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTg1Ni1cXHRtZW1zZXQoXFx1MDAyNnFpLCAwLCBzaXplb2YocWkpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6ODU3OlxcdEFUSDlLX0hUQ19JTklUX1RYUSgwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtODU4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTExODc9aW50IGF0aDlrX3J4X2luaXQoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTExOTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjExOTQ6XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFUSDlLX0hUQ19SWEJVRjsgaSsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTExOTUtXFx0XFx0c3RydWN0IGF0aDlrX2h0Y19yeGJ1ZiAqcnhidWYgPVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jPTEzOD12b2lkIGF0aDlrX3dtaV9ldmVudF90YXNrbGV0KHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYy0xNzgtXFx0XFx0XFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZwcml2LVxcdTAwM2V0eC50eF9sb2NrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmM6MTc5OlxcdFxcdFxcdGlmIChwcml2LVxcdTAwM2V0eC5mbGFncyBcXHUwMDI2IEFUSDlLX0hUQ19PUF9UWF9EUkFJTikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYy0xODAtXFx0XFx0XFx0XFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNnByaXYtXFx1MDAzZXR4LnR4X2xvY2spO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oPTM5PXN0cnVjdCB3bWlfZXZlbnRfc3diYSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmgtNTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oOjUxOiNkZWZpbmUgQVRIOUtfSFRDX1RYU1RBVF9BQ0sgICAgICAgIEJJVCgwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo1MjojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfRklMVCAgICAgICBCSVQoMSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6NTM6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX1JUQ19DVFMgICAgQklUKDIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oOjU0OiNkZWZpbmUgQVRIOUtfSFRDX1RYU1RBVF9NQ1MgICAgICAgIEJJVCgzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo1NTojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfQ1c0MCAgICAgICBCSVQoNClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6NTY6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX1NHSSAgICAgICAgQklUKDUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oLTU3LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oLTYzLSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo2NDojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfUkFURSAgICAgICAweDBmXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oOjY1OiNkZWZpbmUgQVRIOUtfSFRDX1RYU1RBVF9SQVRFX1MgICAgIDBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmgtNjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oOjY3OiNkZWZpbmUgQVRIOUtfSFRDX1RYU1RBVF9FUElEICAgICAgIDB4ZjBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6Njg6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX0VQSURfUyAgICAgNFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaC02OS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMDE6MDM6MjcuMDg2NzAyMDA4WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjU0MDE4MjQ1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgSSBhbmFseXplIHRoaXM6XG5cbioqQW5hbHl6aW5nIGF0aDlrX2h0YyBhbmQgUmVsYXRlZCBGdW5jdGlvbnMqKlxuXG5Pa2F5LCBzbyBgYXRoOWtfaHRjYCBpcyB0aGUgVVNCIFdpLUZpIGRyaXZlciwgdGhhdCdzIHRoZSBzdGFydGluZyBwb2ludC4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgYGF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnYCBhbmQsIG1vcmUgaW1wb3J0YW50bHksIGBhdGhfY21uX3Byb2Nlc3NfZmZ0YCBhcmUgbGV2ZXJhZ2VkIGluIGJvdGggdGhlIHN0YW5kYXJkIGBhdGg5a2AgZHJpdmVyIGFuZCB0aGUgSFRDIHZhcmlhbnQuIFRoZSBIVEMgdmVyc2lvbiBzdWdnZXN0cyBhIHRldGhlcmVkIG9yIGhvc3RlZCBkZXZpY2UsIHNvIHRoZXJlJ3MgbGlrZWx5IHNvbWUgYXJjaGl0ZWN0dXJhbCBkaWZmZXJlbmNlIHRvIHVuZGVyc3RhbmQgaW4gdGhlIEZGVCBwcm9jZXNzaW5nLiBUaGUgc3BlY3RyYWwgaW5pdGlhbGl6YXRpb24gZGVidWdnaW5nIGlzIGludGVyZXN0aW5nIHRvbywgSSdsbCBuZWVkIHRvIHNlZSBob3cgdGhleSdyZSBoYW5kbGluZyBkZWJ1Z2dpbmcgdGhlIGluaXRpYWxpemF0aW9uIG9mIHNwZWN0cmFsIGRhdGEuXG5cbk15IGltbWVkaWF0ZSBwbGFuIGlzIHRvIHVzZSBgZ3JlcGAgdG8gcXVpY2tseSBjcm9zcy1yZWZlcmVuY2UgdGhlIGBhdGhfY21uX3Byb2Nlc3NfZmZ0YCBmdW5jdGlvbiBhbmQgdGhlIHVzZSBvZiB0aGUgYHNwZWNfcHJpdmAgc3RydWN0dXJlLiBUaGlzIHNob3VsZCBoZWxwIHRvIHF1aWNrbHkgaGlnaGxpZ2h0IHRoZSBrZXkgYXJlYXMgb2YgaW50ZXJhY3Rpb24gYW5kIGRhdGEgZmxvdy4gVGhpcyB3aWxsIGxpa2VseSBnaXZlIG1lIGEgZ29vZCBvdmVydmlldyBvZiBob3cgdGhlIEZGVCBmdW5jdGlvbmFsaXR5IGlzIGhhbmRsZWQgYXQgYSBsb3cgbGV2ZWwgaW4gdGhlIGRyaXZlciwgYW5kIGl0cyBhc3NvY2lhdGVkIGRhdGEuIFRoaXMgd2lsbCBwcm92aWRlIGEgcXVpY2tlciBtYXAgb2Ygd2hlcmUgdGhlIHNwZWN0cmFsIGRhdGEgYW5kIHByb2Nlc3NpbmcgYXJlIGJlaW5nIGhhbmRsZWQgaW4gcmVsYXRpb24gdG8gdGhlIG1haW4gZHJpdmVyIGFuZCB0aGUgSFRDIHZlcnNpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4MTE4LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMDE6MDM6MjkuNjI2ODg4NTc1WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY4NjE0NTY3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF0aF9jbW5fcHJvY2Vzc19mZnR8c3BlY19wcml2XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2F0aDlrLmg9OTgzPXN0cnVjdCBhdGhfc29mdGMge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2F0aDlrLmgtMTA2My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXRoOWsuaDoxMDY0OlxcdHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgc3BlY19wcml2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hdGg5ay5oLTEwNjUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY2hhbm5lbC5jPTIzPXN0YXRpYyBpbnQgYXRoX3NldF9jaGFubmVsKHN0cnVjdCBhdGhfc29mdGMgKnNjKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NoYW5uZWwuYy05NS1cXHRcXHRpZiAodGVzdF9iaXQoQVRIX09QX1NDQU5OSU5HLCBcXHUwMDI2Y29tbW9uLVxcdTAwM2VvcF9mbGFncykgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY2hhbm5lbC5jOjk2OlxcdFxcdFxcdHNjLVxcdTAwM2VzcGVjX3ByaXYuc3BlY3RyYWxfbW9kZSA9PSBTUEVDVFJBTF9DSEFOU0NBTilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY2hhbm5lbC5jOjk3OlxcdFxcdFxcdGF0aDlrX2Ntbl9zcGVjdHJhbF9zY2FuX3RyaWdnZXIoY29tbW9uLCBcXHUwMDI2c2MtXFx1MDAzZXNwZWNfcHJpdik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NoYW5uZWwuYy05OC1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM9MjI9c3RhdGljIHM4IGZpeF9yc3NpX2ludl9vbmx5KHU4IHJzc2lfdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTI4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzoyOTpzdGF0aWMgdm9pZCBhdGhfZGVidWdfc2VuZF9mZnRfc2FtcGxlKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMzAtXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGZmdF9zYW1wbGVfdGx2ICpmZnRfc2FtcGxlX3RsdilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0zMi1cXHRpbnQgbGVuZ3RoO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzozMzpcXHRpZiAoIXNwZWNfcHJpdi1cXHUwMDNlcmZzX2NoYW5fc3BlY19zY2FuKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0zNC1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMzctXFx0XFx0IHNpemVvZigqZmZ0X3NhbXBsZV90bHYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzozODpcXHRyZWxheV93cml0ZShzcGVjX3ByaXYtXFx1MDAzZXJmc19jaGFuX3NwZWNfc2NhbiwgZmZ0X3NhbXBsZV90bHYsIGxlbmd0aCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTM5LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYz0xMjc9dHlwZWRlZiBpbnQgKGF0aF9jbW5fZmZ0X3NhbXBsZV9oYW5kbGVyKSAoc3RydWN0IGF0aF9yeF9zdGF0dXMgKnJzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzoxMjg6XFx0XFx0XFx0c3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xMjktXFx0XFx0XFx0dTggKnNhbXBsZV9idWYsIHU2NCB0c2YsIHUxNiBmcmVxLCBpbnQgY2hhbl90eXBlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYz0xMzI9YXRoX2Ntbl9wcm9jZXNzX2h0MjBfZmZ0KHN0cnVjdCBhdGhfcnhfc3RhdHVzICpycyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6MTMzOlxcdFxcdFxcdHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTM0LVxcdFxcdFxcdHU4ICpzYW1wbGVfYnVmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTEzNy1cXHRzdHJ1Y3QgZmZ0X3NhbXBsZV9odDIwIGZmdF9zYW1wbGVfMjA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjEzODpcXHRzdHJ1Y3QgYXRoX2NvbW1vbiAqY29tbW9uID0gYXRoOWtfaHdfY29tbW9uKHNwZWNfcHJpdi1cXHUwMDNlYWgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzoxMzk6XFx0c3RydWN0IGF0aF9odyAqYWggPSBzcGVjX3ByaXYtXFx1MDAzZWFoO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xNDAtXFx0c3RydWN0IGF0aF9odDIwX21hZ19pbmZvICptYWdfaW5mbztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0yMjktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjIzMDpcXHRhdGhfZGVidWdfc2VuZF9mZnRfc2FtcGxlKHNwZWNfcHJpdiwgdGx2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMjMxLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jPTIzNj1hdGhfY21uX3Byb2Nlc3NfaHQyMF80MF9mZnQoc3RydWN0IGF0aF9yeF9zdGF0dXMgKnJzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzoyMzc6XFx0XFx0XFx0c3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0yMzgtXFx0XFx0XFx0dTggKnNhbXBsZV9idWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMjQxLVxcdHN0cnVjdCBmZnRfc2FtcGxlX2h0MjBfNDAgZmZ0X3NhbXBsZV80MDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6MjQyOlxcdHN0cnVjdCBhdGhfY29tbW9uICpjb21tb24gPSBhdGg5a19od19jb21tb24oc3BlY19wcml2LVxcdTAwM2VhaCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjI0MzpcXHRzdHJ1Y3QgYXRoX2h3ICphaCA9IHNwZWNfcHJpdi1cXHUwMDNlYWg7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTI0NC1cXHRzdHJ1Y3QgYXRoOWtfaHdfY2FsX2RhdGEgKmNhbGRhdGEgPSBhaC1cXHUwMDNlY2FsZGF0YTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy00MDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjQwNzpcXHRhdGhfZGVidWdfc2VuZF9mZnRfc2FtcGxlKHNwZWNfcHJpdiwgdGx2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNDA4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jPTQ0OD1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjQ0OTphdGhfY21uX2lzX2ZmdF9idWZfZnVsbChzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTQ1MC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNDUzLVxcdHN0cnVjdCByY2hhbl9idWYgKmJ1ZjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6NDU0OlxcdHN0cnVjdCByY2hhbiAqcmMgPSBzcGVjX3ByaXYtXFx1MDAzZXJmc19jaGFuX3NwZWNfc2NhbjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNDU1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTQ2Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6NDY4OnN0YXRpYyB2b2lkIGF0aF9jbW5fY291bnRfZmZ0X3NhbXBsZShzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTQ2OS1cXHRcXHRcXHRcXHQgICAgIGludCByZXQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTQ3MC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjQ3MTpcXHRzdHJ1Y3QgYXRoX3J4X3N0YXRzICpyeF9zdGF0cyA9IHNwZWNfcHJpdi1cXHUwMDNlcnhfc3RhdHM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTQ3Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy00ODItLyogcmV0dXJucyAxIGlmIHRoaXMgd2FzIGEgc3BlY3RyYWwgZnJhbWUsIGV2ZW4gaWYgbm90IGhhbmRsZWQuICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjQ4MzppbnQgYXRoX2Ntbl9wcm9jZXNzX2ZmdChzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsIHN0cnVjdCBpZWVlODAyMTFfaGRyICpoZHIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTQ4NC1cXHRcXHQgICAgc3RydWN0IGF0aF9yeF9zdGF0dXMgKnJzLCB1NjQgdHNmKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTQ4Ni1cXHR1OCBzYW1wbGVfYnVmW1NQRUNUUkFMX1NBTVBMRV9NQVhfTEVOXSA9IHswfTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6NDg3OlxcdHN0cnVjdCBhdGhfaHcgKmFoID0gc3BlY19wcml2LVxcdTAwM2VhaDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6NDg4OlxcdHN0cnVjdCBhdGhfY29tbW9uICpjb21tb24gPSBhdGg5a19od19jb21tb24oc3BlY19wcml2LVxcdTAwM2VhaCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTQ4OS1cXHR1OCBudW1fYmlucywgKnZkYXRhID0gKHU4ICopaGRyO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTUxNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6NTE4OlxcdGlmICghc3BlY19wcml2LVxcdTAwM2VyZnNfY2hhbl9zcGVjX3NjYW4pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTUxOS1cXHRcXHRyZXR1cm4gMTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy01MjMtXFx0ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjUyNDpcXHRyZXQgPSBhdGhfY21uX2lzX2ZmdF9idWZfZnVsbChzcGVjX3ByaXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy01MjUtXFx0aWYgKHJldCA9PSAxKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNjM2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo2Mzc6XFx0XFx0XFx0XFx0cmV0ID0gZmZ0X2hhbmRsZXIocnMsIHNwZWNfcHJpdiwgc2FtcGxlX2J1ZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNjM4LVxcdFxcdFxcdFxcdFxcdFxcdCAgdHNmLCBmcmVxLCBjaGFuX3R5cGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy02MzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjY0MDpcXHRcXHRcXHRcXHRhdGhfY21uX2NvdW50X2ZmdF9zYW1wbGUoc3BlY19wcml2LCByZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy02NDEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNjUxLVxcdFxcdFxcdGlmIChzYW1wbGVfYnl0ZXMgPT0gc2FtcGxlX2xlbikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo2NTI6XFx0XFx0XFx0XFx0cmV0ID0gZmZ0X2hhbmRsZXIocnMsIHNwZWNfcHJpdiwgc2FtcGxlX3N0YXJ0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy02NTMtXFx0XFx0XFx0XFx0XFx0XFx0ICB0c2YsIGZyZXEsIGNoYW5fdHlwZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTY1NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6NjU1OlxcdFxcdFxcdFxcdGF0aF9jbW5fY291bnRfZmZ0X3NhbXBsZShzcGVjX3ByaXYsIHJldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTY1Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy02OTAtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo2OTE6RVhQT1JUX1NZTUJPTChhdGhfY21uX3Byb2Nlc3NfZmZ0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNjkyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jPTY5Nz1zdGF0aWMgc3NpemVfdCByZWFkX2ZpbGVfc3BlY19zY2FuX2N0bChzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciBfX3VzZXIgKnVzZXJfYnVmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTY5OS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjcwMDpcXHRzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYgPSBmaWxlLVxcdTAwM2Vwcml2YXRlX2RhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTcwMS1cXHRjaGFyICptb2RlID0gXFxcIlxcXCI7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNzAzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo3MDQ6XFx0c3dpdGNoIChzcGVjX3ByaXYtXFx1MDAzZXNwZWN0cmFsX21vZGUpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNzA1LVxcdGNhc2UgU1BFQ1RSQUxfRElTQUJMRUQ6XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM9NzIyPXZvaWQgYXRoOWtfY21uX3NwZWN0cmFsX3NjYW5fdHJpZ2dlcihzdHJ1Y3QgYXRoX2NvbW1vbiAqY29tbW9uLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo3MjM6XFx0XFx0XFx0XFx0IHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNzI0LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6NzI1OlxcdHN0cnVjdCBhdGhfaHcgKmFoID0gc3BlY19wcml2LVxcdTAwM2VhaDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNzI2LVxcdHUzMiByeGZpbHRlcjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy03MzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjczNjpcXHRpZiAoIXNwZWNfcHJpdi1cXHUwMDNlc3BlY19jb25maWcuZW5hYmxlZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNzM3LVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy03NDktXFx0ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjc1MDpcXHRhdGg5a19jbW5fc3BlY3RyYWxfc2Nhbl9jb25maWcoY29tbW9uLCBzcGVjX3ByaXYsIHNwZWNfcHJpdi1cXHUwMDNlc3BlY3RyYWxfbW9kZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTc1MS1cXHRhdGg5a19od19vcHMoYWgpLVxcdTAwM2VzcGVjdHJhbF9zY2FuX3RyaWdnZXIoYWgpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jPTc1Nj1pbnQgYXRoOWtfY21uX3NwZWN0cmFsX3NjYW5fY29uZmlnKHN0cnVjdCBhdGhfY29tbW9uICpjb21tb24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjc1NzpcXHRcXHRcXHQgICAgICAgc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy03NTgtXFx0XFx0XFx0ICAgICAgIGVudW0gc3BlY3RyYWxfbW9kZSBzcGVjdHJhbF9tb2RlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy03NTkte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo3NjA6XFx0c3RydWN0IGF0aF9odyAqYWggPSBzcGVjX3ByaXYtXFx1MDAzZWFoO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy03NjEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNzY4LVxcdGNhc2UgU1BFQ1RSQUxfRElTQUJMRUQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjc2OTpcXHRcXHRzcGVjX3ByaXYtXFx1MDAzZXNwZWNfY29uZmlnLmVuYWJsZWQgPSAwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy03NzAtXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNzc0LVxcdFxcdCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo3NzU6XFx0XFx0c3BlY19wcml2LVxcdTAwM2VzcGVjX2NvbmZpZy5lbmRsZXNzID0gMTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6Nzc2OlxcdFxcdHNwZWNfcHJpdi1cXHUwMDNlc3BlY19jb25maWcuZW5hYmxlZCA9IDE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTc3Ny1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy03NzktXFx0Y2FzZSBTUEVDVFJBTF9NQU5VQUw6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjc4MDpcXHRcXHRzcGVjX3ByaXYtXFx1MDAzZXNwZWNfY29uZmlnLmVuZGxlc3MgPSAwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo3ODE6XFx0XFx0c3BlY19wcml2LVxcdTAwM2VzcGVjX2NvbmZpZy5lbmFibGVkID0gMTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNzgyLVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTc4Ny1cXHRhdGhfcHNfb3BzKGNvbW1vbiktXFx1MDAzZXdha2V1cChjb21tb24pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo3ODg6XFx0YXRoOWtfaHdfb3BzKGFoKS1cXHUwMDNlc3BlY3RyYWxfc2Nhbl9jb25maWcoYWgsIFxcdTAwMjZzcGVjX3ByaXYtXFx1MDAzZXNwZWNfY29uZmlnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNzg5LVxcdGF0aF9wc19vcHMoY29tbW9uKS1cXHUwMDNlcmVzdG9yZShjb21tb24pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy03OTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjc5MTpcXHRzcGVjX3ByaXYtXFx1MDAzZXNwZWN0cmFsX21vZGUgPSBzcGVjdHJhbF9tb2RlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy03OTItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM9Nzk3PXN0YXRpYyBzc2l6ZV90IHdyaXRlX2ZpbGVfc3BlY19zY2FuX2N0bChzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy04MDAte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo4MDE6XFx0c3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2ID0gZmlsZS1cXHUwMDNlcHJpdmF0ZV9kYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo4MDI6XFx0c3RydWN0IGF0aF9jb21tb24gKmNvbW1vbiA9IGF0aDlrX2h3X2NvbW1vbihzcGVjX3ByaXYtXFx1MDAzZWFoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtODAzLVxcdGNoYXIgYnVmWzMyXTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy04MTUtXFx0aWYgKHN0cm5jbXAoXFxcInRyaWdnZXJcXFwiLCBidWYsIDcpID09IDApIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6ODE2OlxcdFxcdGF0aDlrX2Ntbl9zcGVjdHJhbF9zY2FuX3RyaWdnZXIoY29tbW9uLCBzcGVjX3ByaXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy04MTctXFx0fSBlbHNlIGlmIChzdHJuY21wKFxcXCJiYWNrZ3JvdW5kXFxcIiwgYnVmLCAxMCkgPT0gMCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo4MTg6XFx0XFx0YXRoOWtfY21uX3NwZWN0cmFsX3NjYW5fY29uZmlnKGNvbW1vbiwgc3BlY19wcml2LCBTUEVDVFJBTF9CQUNLR1JPVU5EKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtODE5LVxcdFxcdGF0aF9kYmcoY29tbW9uLCBDT05GSUcsIFxcXCJzcGVjdHJhbCBzY2FuOiBiYWNrZ3JvdW5kIG1vZGUgZW5hYmxlZFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTgyMC1cXHR9IGVsc2UgaWYgKHN0cm5jbXAoXFxcImNoYW5zY2FuXFxcIiwgYnVmLCA4KSA9PSAwKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjgyMTpcXHRcXHRhdGg5a19jbW5fc3BlY3RyYWxfc2Nhbl9jb25maWcoY29tbW9uLCBzcGVjX3ByaXYsIFNQRUNUUkFMX0NIQU5TQ0FOKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtODIyLVxcdFxcdGF0aF9kYmcoY29tbW9uLCBDT05GSUcsIFxcXCJzcGVjdHJhbCBzY2FuOiBjaGFubmVsIHNjYW4gbW9kZSBlbmFibGVkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtODIzLVxcdH0gZWxzZSBpZiAoc3RybmNtcChcXFwibWFudWFsXFxcIiwgYnVmLCA2KSA9PSAwKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjgyNDpcXHRcXHRhdGg5a19jbW5fc3BlY3RyYWxfc2Nhbl9jb25maWcoY29tbW9uLCBzcGVjX3ByaXYsIFNQRUNUUkFMX01BTlVBTCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTgyNS1cXHRcXHRhdGhfZGJnKGNvbW1vbiwgQ09ORklHLCBcXFwic3BlY3RyYWwgc2NhbjogbWFudWFsIG1vZGUgZW5hYmxlZFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTgyNi1cXHR9IGVsc2UgaWYgKHN0cm5jbXAoXFxcImRpc2FibGVcXFwiLCBidWYsIDcpID09IDApIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6ODI3OlxcdFxcdGF0aDlrX2Ntbl9zcGVjdHJhbF9zY2FuX2NvbmZpZyhjb21tb24sIHNwZWNfcHJpdiwgU1BFQ1RSQUxfRElTQUJMRUQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy04MjgtXFx0XFx0YXRoX2RiZyhjb21tb24sIENPTkZJRywgXFxcInNwZWN0cmFsIHNjYW46IGRpc2FibGVkXFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYz04NDg9c3RhdGljIHNzaXplX3QgcmVhZF9maWxlX3NwZWN0cmFsX3Nob3J0X3JlcGVhdChzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy04NTEte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo4NTI6XFx0c3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2ID0gZmlsZS1cXHUwMDNlcHJpdmF0ZV9kYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy04NTMtXFx0Y2hhciBidWZbMzJdO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTg1NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6ODU2OlxcdGxlbiA9IHNwcmludGYoYnVmLCBcXFwiJWRcXFxcblxcXCIsIHNwZWNfcHJpdi1cXHUwMDNlc3BlY19jb25maWcuc2hvcnRfcmVwZWF0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtODU3LVxcdHJldHVybiBzaW1wbGVfcmVhZF9mcm9tX2J1ZmZlcih1c2VyX2J1ZiwgY291bnQsIHBwb3MsIGJ1ZiwgbGVuKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYz04NjA9c3RhdGljIHNzaXplX3Qgd3JpdGVfZmlsZV9zcGVjdHJhbF9zaG9ydF9yZXBlYXQoc3RydWN0IGZpbGUgKmZpbGUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtODYzLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6ODY0OlxcdHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiA9IGZpbGUtXFx1MDAzZXByaXZhdGVfZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtODY1LVxcdHVuc2lnbmVkIGxvbmcgdmFsO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTg3NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6ODc1OlxcdHNwZWNfcHJpdi1cXHUwMDNlc3BlY19jb25maWcuc2hvcnRfcmVwZWF0ID0gdmFsO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy04NzYtXFx0cmV0dXJuIGNvdW50O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jPTg5MT1zdGF0aWMgc3NpemVfdCByZWFkX2ZpbGVfc3BlY3RyYWxfY291bnQoc3RydWN0IGZpbGUgKmZpbGUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtODk0LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6ODk1OlxcdHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiA9IGZpbGUtXFx1MDAzZXByaXZhdGVfZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtODk2LVxcdGNoYXIgYnVmWzMyXTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy04OTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjg5OTpcXHRsZW4gPSBzcHJpbnRmKGJ1ZiwgXFxcIiVkXFxcXG5cXFwiLCBzcGVjX3ByaXYtXFx1MDAzZXNwZWNfY29uZmlnLmNvdW50KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtOTAwLVxcdHJldHVybiBzaW1wbGVfcmVhZF9mcm9tX2J1ZmZlcih1c2VyX2J1ZiwgY291bnQsIHBwb3MsIGJ1ZiwgbGVuKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYz05MDM9c3RhdGljIHNzaXplX3Qgd3JpdGVfZmlsZV9zcGVjdHJhbF9jb3VudChzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy05MDYte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo5MDc6XFx0c3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2ID0gZmlsZS1cXHUwMDNlcHJpdmF0ZV9kYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy05MDgtXFx0dW5zaWduZWQgbG9uZyB2YWw7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtOTE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo5MTc6XFx0c3BlY19wcml2LVxcdTAwM2VzcGVjX2NvbmZpZy5jb3VudCA9IHZhbDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtOTE4LVxcdHJldHVybiBjb3VudDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYz05MzM9c3RhdGljIHNzaXplX3QgcmVhZF9maWxlX3NwZWN0cmFsX3BlcmlvZChzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy05MzYte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo5Mzc6XFx0c3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2ID0gZmlsZS1cXHUwMDNlcHJpdmF0ZV9kYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy05MzgtXFx0Y2hhciBidWZbMzJdO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTk0MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6OTQxOlxcdGxlbiA9IHNwcmludGYoYnVmLCBcXFwiJWRcXFxcblxcXCIsIHNwZWNfcHJpdi1cXHUwMDNlc3BlY19jb25maWcucGVyaW9kKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtOTQyLVxcdHJldHVybiBzaW1wbGVfcmVhZF9mcm9tX2J1ZmZlcih1c2VyX2J1ZiwgY291bnQsIHBwb3MsIGJ1ZiwgbGVuKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYz05NDU9c3RhdGljIHNzaXplX3Qgd3JpdGVfZmlsZV9zcGVjdHJhbF9wZXJpb2Qoc3RydWN0IGZpbGUgKmZpbGUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtOTQ4LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6OTQ5OlxcdHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiA9IGZpbGUtXFx1MDAzZXByaXZhdGVfZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtOTUwLVxcdHVuc2lnbmVkIGxvbmcgdmFsO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTk1OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6OTYwOlxcdHNwZWNfcHJpdi1cXHUwMDNlc3BlY19jb25maWcucGVyaW9kID0gdmFsO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy05NjEtXFx0cmV0dXJuIGNvdW50O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jPTk3Nj1zdGF0aWMgc3NpemVfdCByZWFkX2ZpbGVfc3BlY3RyYWxfZmZ0X3BlcmlvZChzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy05Nzkte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo5ODA6XFx0c3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2ID0gZmlsZS1cXHUwMDNlcHJpdmF0ZV9kYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy05ODEtXFx0Y2hhciBidWZbMzJdO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTk4My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6OTg0OlxcdGxlbiA9IHNwcmludGYoYnVmLCBcXFwiJWRcXFxcblxcXCIsIHNwZWNfcHJpdi1cXHUwMDNlc3BlY19jb25maWcuZmZ0X3BlcmlvZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTk4NS1cXHRyZXR1cm4gc2ltcGxlX3JlYWRfZnJvbV9idWZmZXIodXNlcl9idWYsIGNvdW50LCBwcG9zLCBidWYsIGxlbik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM9OTg4PXN0YXRpYyBzc2l6ZV90IHdyaXRlX2ZpbGVfc3BlY3RyYWxfZmZ0X3BlcmlvZChzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy05OTEte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo5OTI6XFx0c3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2ID0gZmlsZS1cXHUwMDNlcHJpdmF0ZV9kYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy05OTMtXFx0dW5zaWduZWQgbG9uZyB2YWw7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTAwMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6MTAwMzpcXHRzcGVjX3ByaXYtXFx1MDAzZXNwZWNfY29uZmlnLmZmdF9wZXJpb2QgPSB2YWw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTEwMDQtXFx0cmV0dXJuIGNvdW50O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jPTEwNDM9c3RhdGljIGNvbnN0IHN0cnVjdCByY2hhbl9jYWxsYmFja3MgcmZzX3NwZWNfc2Nhbl9jYiA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xMDUxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzoxMDUyOnZvaWQgYXRoOWtfY21uX3NwZWN0cmFsX2RlaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTEwNTMte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzoxMDU0OlxcdGlmIChzcGVjX3ByaXYtXFx1MDAzZXJmc19jaGFuX3NwZWNfc2Nhbikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzoxMDU1OlxcdFxcdHJlbGF5X2Nsb3NlKHNwZWNfcHJpdi1cXHUwMDNlcmZzX2NoYW5fc3BlY19zY2FuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6MTA1NjpcXHRcXHRzcGVjX3ByaXYtXFx1MDAzZXJmc19jaGFuX3NwZWNfc2NhbiA9IE5VTEw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTEwNTctXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jPTEwNTk9RVhQT1JUX1NZTUJPTChhdGg5a19jbW5fc3BlY3RyYWxfZGVpbml0X2RlYnVnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTA2MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6MTA2MTp2b2lkIGF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTA2Mi1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX3BoeSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xMDY0LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6MTA2NTpcXHRzcGVjX3ByaXYtXFx1MDAzZXJ4X3N0YXRzID0gcnhfc3RhdHM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjEwNjY6XFx0c3BlY19wcml2LVxcdTAwM2VyZnNfY2hhbl9zcGVjX3NjYW4gPSByZWxheV9vcGVuKFxcXCJzcGVjdHJhbF9zY2FuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTA2Ny1cXHRcXHRcXHRcXHRcXHQgICAgZGVidWdmc19waHksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTA2OS1cXHRcXHRcXHRcXHRcXHQgICAgTlVMTCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjEwNzA6XFx0aWYgKCFzcGVjX3ByaXYtXFx1MDAzZXJmc19jaGFuX3NwZWNfc2NhbilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTA3MS1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTA3NC1cXHRcXHRcXHQgICAgMDYwMCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6MTA3NTpcXHRcXHRcXHQgICAgZGVidWdmc19waHksIHNwZWNfcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTA3Ni1cXHRcXHRcXHQgICAgXFx1MDAyNmZvcHNfc3BlY19zY2FuX2N0bCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTA3OC1cXHRcXHRcXHQgICAgMDYwMCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6MTA3OTpcXHRcXHRcXHQgICAgZGVidWdmc19waHksIHNwZWNfcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTA4MC1cXHRcXHRcXHQgICAgXFx1MDAyNmZvcHNfc3BlY3RyYWxfc2hvcnRfcmVwZWF0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xMDgyLVxcdFxcdFxcdCAgICAwNjAwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzoxMDgzOlxcdFxcdFxcdCAgICBkZWJ1Z2ZzX3BoeSwgc3BlY19wcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xMDg0LVxcdFxcdFxcdCAgICBcXHUwMDI2Zm9wc19zcGVjdHJhbF9jb3VudCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTA4Ni1cXHRcXHRcXHQgICAgMDYwMCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6MTA4NzpcXHRcXHRcXHQgICAgZGVidWdmc19waHksIHNwZWNfcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTA4OC1cXHRcXHRcXHQgICAgXFx1MDAyNmZvcHNfc3BlY3RyYWxfcGVyaW9kKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xMDkwLVxcdFxcdFxcdCAgICAwNjAwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzoxMDkxOlxcdFxcdFxcdCAgICBkZWJ1Z2ZzX3BoeSwgc3BlY19wcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xMDkyLVxcdFxcdFxcdCAgICBcXHUwMDI2Zm9wc19zcGVjdHJhbF9mZnRfcGVyaW9kKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaD0xNzA9c3RhdGljIGlubGluZSB1OCBzcGVjdHJhbF9iaXRtYXBfd2VpZ2h0KHU4ICpiaW5zKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oLTE3NS0jaWZkZWYgQ09ORklHX0FUSDlLX0NPTU1PTl9TUEVDVFJBTFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaDoxNzY6dm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oLTE3Ny1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX3BoeSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmgtMTc4LVxcdFxcdFxcdFxcdCAgIHN0cnVjdCBhdGhfcnhfc3RhdHMgKnJ4X3N0YXRzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmg6MTc5OnZvaWQgYXRoOWtfY21uX3NwZWN0cmFsX2RlaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaC0xODAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oPTE4MT12b2lkIGF0aDlrX2Ntbl9zcGVjdHJhbF9zY2FuX3RyaWdnZXIoc3RydWN0IGF0aF9jb21tb24gKmNvbW1vbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmg6MTgyOlxcdFxcdFxcdFxcdCBzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaC0xODMtaW50IGF0aDlrX2Ntbl9zcGVjdHJhbF9zY2FuX2NvbmZpZyhzdHJ1Y3QgYXRoX2NvbW1vbiAqY29tbW9uLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaDoxODQ6XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmgtMTg1LVxcdFxcdFxcdCAgICAgICBlbnVtIHNwZWN0cmFsX21vZGUgc3BlY3RyYWxfbW9kZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oOjE4NjppbnQgYXRoX2Ntbl9wcm9jZXNzX2ZmdChzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsIHN0cnVjdCBpZWVlODAyMTFfaGRyICpoZHIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oLTE4Ny1cXHRcXHQgICAgc3RydWN0IGF0aF9yeF9zdGF0dXMgKnJzLCB1NjQgdHNmKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmgtMTg4LSNlbHNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oOjE4OTpzdGF0aWMgaW5saW5lIHZvaWQgYXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaC0xOTAtXFx0XFx0XFx0XFx0XFx0XFx0IHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcGh5LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oLTE5NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmg6MTk1OnN0YXRpYyBpbmxpbmUgdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfZGVpbml0X2RlYnVnKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmgtMTk2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaD0xOTk9c3RhdGljIGlubGluZSB2b2lkIGF0aDlrX2Ntbl9zcGVjdHJhbF9zY2FuX3RyaWdnZXIoc3RydWN0IGF0aF9jb21tb24gKmNvbW1vbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmg6MjAwOlxcdFxcdFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmgtMjAxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaC0yMDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oOjIwNDpzdGF0aWMgaW5saW5lIGludCBhdGhfY21uX3Byb2Nlc3NfZmZ0KHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmgtMjA1LVxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBpZWVlODAyMTFfaGRyICpoZHIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGVidWcuYz0xMzcyPXZvaWQgYXRoOWtfZGVpbml0X2RlYnVnKHN0cnVjdCBhdGhfc29mdGMgKnNjKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZWJ1Zy5jLTEzNzMte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZWJ1Zy5jOjEzNzQ6XFx0YXRoOWtfY21uX3NwZWN0cmFsX2RlaW5pdF9kZWJ1ZyhcXHUwMDI2c2MtXFx1MDAzZXNwZWNfcHJpdik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2RlYnVnLmMtMTM3NS19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGVidWcuYz0xMzc3PWludCBhdGg5a19pbml0X2RlYnVnKHN0cnVjdCBhdGhfaHcgKmFoKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2RlYnVnLmMtMTM5MS1cXHRhdGg5a190eDk5X2luaXRfZGVidWcoc2MpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZWJ1Zy5jOjEzOTI6XFx0YXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoXFx1MDAyNnNjLVxcdTAwM2VzcGVjX3ByaXYsIHNjLVxcdTAwM2VkZWJ1Zy5kZWJ1Z2ZzX3BoeSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGVidWcuYy0xMzkzLVxcdFxcdFxcdFxcdCAgICAgIFxcdTAwMjZzYy1cXHUwMDNlZGVidWcuc3RhdHMucnhzdGF0cyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9NDU2PXN0cnVjdCBhdGg5a19odGNfcHJpdiB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNDk2LVxcdHN0cnVjdCBhdGg5a19od19jYWxfZGF0YSBjYWxkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo0OTc6XFx0c3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiBzcGVjX3ByaXY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTQ5OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM9NDc3PXZvaWQgYXRoOWtfaHRjX2RlaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYy00Nzgte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM6NDc5OlxcdGF0aDlrX2Ntbl9zcGVjdHJhbF9kZWluaXRfZGVidWcoXFx1MDAyNnByaXYtXFx1MDAzZXNwZWNfcHJpdik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYy00ODAtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYz00ODI9aW50IGF0aDlrX2h0Y19pbml0X2RlYnVnKHN0cnVjdCBhdGhfaHcgKmFoKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYy00ODktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYzo0OTA6XFx0YXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoXFx1MDAyNnByaXYtXFx1MDAzZXNwZWNfcHJpdiwgcHJpdi1cXHUwMDNlZGVidWcuZGVidWdmc19waHksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYy00OTEtXFx0XFx0XFx0XFx0ICAgICAgXFx1MDAyNnByaXYtXFx1MDAzZWRlYnVnLnJ4X3N0YXRzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYz01ODg9c3RhdGljIHZvaWQgYXRoOWtfaW5pdF9taXNjKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy01OTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jOjU5NzpcXHRwcml2LVxcdTAwM2VzcGVjX3ByaXYuYWggPSBwcml2LVxcdTAwM2VhaDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM6NTk4OlxcdHByaXYtXFx1MDAzZXNwZWNfcHJpdi5zcGVjX2NvbmZpZy5lbmFibGVkID0gMDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM6NTk5OlxcdHByaXYtXFx1MDAzZXNwZWNfcHJpdi5zcGVjX2NvbmZpZy5zaG9ydF9yZXBlYXQgPSB0cnVlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYzo2MDA6XFx0cHJpdi1cXHUwMDNlc3BlY19wcml2LnNwZWNfY29uZmlnLmNvdW50ID0gODtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM6NjAxOlxcdHByaXYtXFx1MDAzZXNwZWNfcHJpdi5zcGVjX2NvbmZpZy5lbmRsZXNzID0gZmFsc2U7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jOjYwMjpcXHRwcml2LVxcdTAwM2VzcGVjX3ByaXYuc3BlY19jb25maWcucGVyaW9kID0gMHgxMjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM6NjAzOlxcdHByaXYtXFx1MDAzZXNwZWNfcHJpdi5zcGVjX2NvbmZpZy5mZnRfcGVyaW9kID0gMHgwMjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmMtNjA0LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYz0yNDA9c3RhdGljIGludCBhdGg5a19odGNfc2V0X2NoYW5uZWwoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTMxNS1cXHRpZiAodGVzdF9iaXQoQVRIX09QX1NDQU5OSU5HLCBcXHUwMDI2Y29tbW9uLVxcdTAwM2VvcF9mbGFncykgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6MzE2OlxcdFxcdCAgICAgcHJpdi1cXHUwMDNlc3BlY19wcml2LnNwZWN0cmFsX21vZGUgPT0gU1BFQ1RSQUxfQ0hBTlNDQU4pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjMxNzpcXHRcXHRhdGg5a19jbW5fc3BlY3RyYWxfc2Nhbl90cmlnZ2VyKGNvbW1vbiwgXFx1MDAyNnByaXYtXFx1MDAzZXNwZWNfcHJpdik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTMxOC1lcnI6XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9OTcyPXN0YXRpYyBib29sIGF0aDlrX3J4X3ByZXBhcmUoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTEwNDctXFx0XFx0LyogVE9ETzogTm90IHVzaW5nIERGUyBwcm9jZXNzaW5nIG5vdy4gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6MTA0ODpcXHRcXHRpZiAoYXRoX2Ntbl9wcm9jZXNzX2ZmdChcXHUwMDI2cHJpdi1cXHUwMDNlc3BlY19wcml2LCBoZHIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTEwNDktXFx0XFx0XFx0XFx0ICAgIFxcdTAwMjZyeF9zdGF0cywgcnhfc3RhdHVzLVxcdTAwM2VtYWN0aW1lKSkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYz00MjA9c3RhdGljIHZvaWQgYXRoOWtfaW5pdF9taXNjKHN0cnVjdCBhdGhfc29mdGMgKnNjKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYy00MzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYzo0Mzc6XFx0c2MtXFx1MDAzZXNwZWNfcHJpdi5haCA9IHNjLVxcdTAwM2VzY19haDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jOjQzODpcXHRzYy1cXHUwMDNlc3BlY19wcml2LnNwZWNfY29uZmlnLmVuYWJsZWQgPSAwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmM6NDM5OlxcdHNjLVxcdTAwM2VzcGVjX3ByaXYuc3BlY19jb25maWcuc2hvcnRfcmVwZWF0ID0gdHJ1ZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jOjQ0MDpcXHRzYy1cXHUwMDNlc3BlY19wcml2LnNwZWNfY29uZmlnLmNvdW50ID0gODtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jOjQ0MTpcXHRzYy1cXHUwMDNlc3BlY19wcml2LnNwZWNfY29uZmlnLmVuZGxlc3MgPSBmYWxzZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jOjQ0MjpcXHRzYy1cXHUwMDNlc3BlY19wcml2LnNwZWNfY29uZmlnLnBlcmlvZCA9IDB4RkY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYzo0NDM6XFx0c2MtXFx1MDAzZXNwZWNfcHJpdi5zcGVjX2NvbmZpZy5mZnRfcGVyaW9kID0gMHhGO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmMtNDQ0LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9yZWN2LmM9ODA2PXN0YXRpYyBpbnQgYXRoOWtfcnhfc2tiX3ByZXByb2Nlc3Moc3RydWN0IGF0aF9zb2Z0YyAqc2MsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvcmVjdi5jLTg4Mi1cXHRcXHRcXHRcXHRcXHRcXHQgcnhfc3RhdHVzLVxcdTAwM2VtYWN0aW1lKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvcmVjdi5jOjg4MzpcXHRcXHR9IGVsc2UgaWYgKHNjLVxcdTAwM2VzcGVjX3ByaXYuc3BlY3RyYWxfbW9kZSAhPSBTUEVDVFJBTF9ESVNBQkxFRCBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9yZWN2LmM6ODg0OlxcdFxcdFxcdCAgIGF0aF9jbW5fcHJvY2Vzc19mZnQoXFx1MDAyNnNjLVxcdTAwM2VzcGVjX3ByaXYsIGhkciwgcnhfc3RhdHMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3JlY3YuYy04ODUtXFx0XFx0XFx0XFx0XFx0ICAgICAgIHJ4X3N0YXR1cy1cXHUwMDNlbWFjdGltZSkpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMDE6MDM6MjkuNjk1NTEwNzAyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTQ3NDg5MDYxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBDcml0aWNhbCBCdWcgaW4gdGhlIGF0aDlrX2h0YyBXaXJlbGVzcyBEcml2ZXIqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEknbSBsb29raW5nIGF0IGBhdGg5a19odGNgLCB3aGljaCBpcyBhIFVTQi1iYXNlZCB3aXJlbGVzcyBkcml2ZXIgdGhhdCB1c2VzIEhUQy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBwYXRjaCB0aG9yb3VnaGx5LlxuXG5Jbml0aWFsbHksIGluIHRoZSBgYXRoX2Ntbl9wcm9jZXNzX2ZmdGAgZnVuY3Rpb24sIGJlZm9yZSB0aGlzIHBhdGNoLCB0aGVyZSB3YXMgYSBtYWpvciBpc3N1ZS4gSW5zaWRlIHRoYXQgZnVuY3Rpb24sIHRoZSBjb2RlIHdhcyBhc3N1bWluZyBgY29tbW9uLVx1MDAzZXByaXZgIHdhcyBhIGBzdHJ1Y3QgYXRoX3NvZnRjYCwgd2hpY2ggaXMgdGhlIHN0cnVjdHVyZSB1c2VkIGluIHRoZSBvcmlnaW5hbCBgYXRoOWtgIFBDSS9BSEIgZHJpdmVyLiBCdXQsIGFuZCB0aGlzIGlzIHRoZSBjcnV4IG9mIGl0LCBgYXRoOWtfaHRjYCB1c2VzIGEgZGlmZmVyZW50IHByaXZhdGUgZGF0YSBzdHJ1Y3R1cmUsIHNvbWV0aGluZyBsaWtlIGBzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKmAuIFRoaXMgbWVhbnMgdGhhdCB3aGVuIGBhdGg5a19odGNgIGNhbGxlZCBgYXRoX2Ntbl9wcm9jZXNzX2ZmdGAsIGl0IHdhcyBlZmZlY3RpdmVseSBjYXN0aW5nIGEgYGF0aDlrX2h0Y19wcml2ICpgIHRvIGEgYGF0aF9zb2Z0YyAqYC5cblxuVGhpcyBpcyBhIHNlcmlvdXMgcHJvYmxlbS4gSW5zaWRlIGBhdGg5a2AsIGBSWF9TVEFUX0lOQ2AgYWNjZXNzZXMgYHNjLVx1MDAzZWRlYnVnLnN0YXRzLnJ4c3RhdHMucnhfc3BlY3RyYWxfc2FtcGxlX2dvb2RgIGV0Yy4gQnV0IGBzdHJ1Y3QgYXRoOWtfaHRjX3ByaXZgIGhhcyBhIGNvbXBsZXRlbHkgZGlmZmVyZW50IG1lbW9yeSBsYXlvdXQhIFNvLCBwcmV2aW91c2x5LCBjYWxsaW5nIGBhdGhfY21uX3Byb2Nlc3NfZmZ0YCBpbiB0aGUgYGF0aDlrX2h0Y2AgZHJpdmVyIHdhcyBlaXRoZXIgY29ycnVwdGluZyBtZW1vcnkgb3IgYWNjZXNzaW5nIGVudGlyZWx5IHRoZSB3cm9uZyBtZW1vcnkgb2Zmc2V0cy4gVGhpcyBjb3VsZCBsZWFkIHRvIGEgdmFyaWV0eSBvZiBpc3N1ZXMsIGZyb20gc3VidGxlIGRhdGEgY29ycnVwdGlvbiB0byBvdXRyaWdodCBjcmFzaGVzLCBkZXBlbmRpbmcgb24gd2hhdCBkYXRhIHdhcyBiZWluZyBvdmVyd3JpdHRlbiBvciByZWFkLlxuXG5UaGlzIHBhdGNoIGFkZHJlc3NlcyB0aGlzIGJ5IGRpcmVjdGx5IHBhc3NpbmcgdGhlIGByeF9zdGF0c2AgcG9pbnRlciBpbiBgYXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWdgLCBzdG9yaW5nIGl0IGluIGBzcGVjX3ByaXYtXHUwMDNlcnhfc3RhdHNgLCBhbmQgdGhlbiBpbmNyZW1lbnRpbmcgdGhlIGByeF9zdGF0cy1cdTAwM2VyeF9zcGVjdHJhbF9zYW1wbGVfZ29vZGAgYW5kIGByeF9zdGF0cy1cdTAwM2VyeF9zcGVjdHJhbF9zYW1wbGVfZXJyYCBjb3VudGVycyBjb3JyZWN0bHkgdGhyb3VnaCBgYXRoX2Ntbl9jb3VudF9mZnRfc2FtcGxlKClgLiBBIGRpcmVjdCBmaXgsIGF2b2lkaW5nIHRoZSBpbmNvcnJlY3QgY2FzdC5cblxuTm93LCBsZXQncyB0aGluayBhYm91dCByZWFjaGFiaWxpdHkuIEkgbmVlZCB0byBkZXRlcm1pbmUgaG93IGVhc2lseSB0aGlzIGJ1ZyBjb3VsZCBiZSB0cmlnZ2VyZWQgdXNpbmcgdG9vbHMgbGlrZSBRRU1VIG9yIFN5emthbGxlci4gYGF0aDlrX2h0Y2AgaXMsIGFmdGVyIGFsbCwgYSBVU0IgZGV2aWNlIGRyaXZlci4gSSBzZWUgdGhlIFVTQiBJRCB0YWJsZSByaWdodCB0aGVyZSBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuY2AuIFN5emthbGxlciBzaG91bGQgYmUgYWJsZSB0byByZWFjaCB0aGlzIGRyaXZlciB2aWEgZWl0aGVyIGBzeXpfdXNiX2Nvbm5lY3RgIG9yIGRpcmVjdCBVU0IgZW11bGF0aW9uLCBwb3RlbnRpYWxseSBleHBvc2luZyB0aGlzIG1lbW9yeSBjb3JydXB0aW9uIGJ1Zy4gQWxzbywgSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBkZWJ1Z2ZzIGludGVyZmFjZSB0aGF0J3MgcHJlc2VudCBpbiBhdGg5ayBmb3Igc3BlY3RyYWwgc2Nhbi4gRGVidWdmcyBmaWxlIG9wZXJhdGlvbnMgbGlrZSBgd3JpdGVfZmlsZV9zcGVjX3NjYW5fY3RsYCwgYHNwZWN0cmFsX3NjYW5gLCBhbmQgZXZlbiBwcm9jZXNzaW5nIFJYIGZyYW1lcyB1c2luZyBgYXRoOWtfcnhfcHJlcGFyZWAgY291bGQgcHJvdmlkZSBhbm90aGVyIGVudHJ5IHBvaW50LlxuXG5GaW5hbGx5LCBJIG5lZWQgdG8gY2hlY2sgdGhlIEtjb25maWcgb3B0aW9ucywgc3BlY2lmaWNhbGx5IHRob3NlIHJlbGF0ZWQgdG8gQVRIOUtfSFRDLCBBVEg5S19DT01NT05fU1BFQ1RSQUwgYW5kIEFUSDlLX0hUQ19ERUJVR0ZTLCBvdmVyIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZ2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgZGVidWcgZmVhdHVyZXMgYXJlIGVuYWJsZWQsIGFuZCB0aGVyZWZvcmUgaG93IGV4cG9zZWQgdGhpcyBidWcgaXMgaW4gZGlmZmVyZW50IGtlcm5lbCBjb25maWd1cmF0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk4NDMsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMDE6MDM6MzUuMTcwNDA0NDIxWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIwNDgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE3MCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE3MDpcXHRcXHQgIElmIHVuc3VyZSBzYXkgTi5cXG4gMTcxOlxcdFxcbiAxNzI6XFx0Y29uZmlnIEFUSDlLX0hUQ1xcbiAxNzM6XFx0XFx0dHJpc3RhdGUgXFxcIkF0aGVyb3MgSFRDIGJhc2VkIHdpcmVsZXNzIGNhcmRzIHN1cHBvcnRcXFwiXFxuIDE3NDpcXHRcXHRkZXBlbmRzIG9uIFVTQiBcXHUwMDI2XFx1MDAyNiBNQUM4MDIxMVxcbiAxNzU6XFx0XFx0c2VsZWN0IE1BQzgwMjExX0xFRFMgaWYgTEVEU19DTEFTUz15IHx8IExFRFNfQ0xBU1M9TUFDODAyMTFcXG4gMTc2OlxcdFxcdHNlbGVjdCBBVEg5S19IV1xcbiAxNzc6XFx0XFx0c2VsZWN0IEFUSDlLX0NPTU1PTlxcbiAxNzg6XFx0XFx0aGVscFxcbiAxNzk6XFx0XFx0ICBTdXBwb3J0IGZvciBBdGhlcm9zIEhUQyBiYXNlZCBjYXJkcy5cXG4gMTgwOlxcdFxcdCAgQ2hpcHNldHMgc3VwcG9ydGVkOiBBUjkyNzFcXG4gMTgxOlxcdFxcbiAxODI6XFx0XFx0ICBGb3IgbW9yZSBpbmZvcm1hdGlvbjpcXG4gMTgzOlxcdFxcdCAgaHR0cHM6Ly93aXJlbGVzcy53aWtpLmtlcm5lbC5vcmcvZW4vdXNlcnMvRHJpdmVycy9hdGg5a19odGNcXG4gMTg0OlxcdFxcbiAxODU6XFx0XFx0ICBUaGUgYnVpbHQgbW9kdWxlIHdpbGwgYmUgYXRoOWtfaHRjLlxcbiAxODY6XFx0XFxuIDE4NzpcXHRjb25maWcgQVRIOUtfSFRDX0RFQlVHRlNcXG4gMTg4OlxcdFxcdGJvb2wgXFxcIkF0aGVyb3MgYXRoOWtfaHRjIGRlYnVnZ2luZ1xcXCJcXG4gMTg5OlxcdFxcdGRlcGVuZHMgb24gQVRIOUtfSFRDIFxcdTAwMjZcXHUwMDI2IERFQlVHX0ZTXFxuIDE5MDpcXHRcXHRzZWxlY3QgQVRIOUtfQ09NTU9OX0RFQlVHXFxuIDE5MTpcXHRcXHRoZWxwXFxuIDE5MjpcXHRcXHQgIFNheSBZLCBpZiB5b3UgbmVlZCBhY2Nlc3MgdG8gYXRoOWtfaHRjJ3Mgc3RhdGlzdGljcy5cXG4gMTkzOlxcdFxcdCAgQXMgd2VsbCBhcyBhY2Nlc3MgdG8gdGhlIEZGVC9zcGVjdHJhbCBkYXRhLlxcbiAxOTQ6XFx0XFxuIDE5NTpcXHRjb25maWcgQVRIOUtfSFdSTkdcXG4gMTk2OlxcdFxcdGJvb2wgXFxcIlJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yIHN1cHBvcnRcXFwiXFxuIDE5NzpcXHRcXHRkZXBlbmRzIG9uIEFUSDlLIFxcdTAwMjZcXHUwMDI2IChIV19SQU5ET00gPSB5IHx8IEhXX1JBTkRPTSA9IEFUSDlLKVxcbiAxOTg6XFx0XFx0ZGVmYXVsdCBuXFxuIDE5OTpcXHRcXHRoZWxwXFxuIDIwMDpcXHRcXHQgIFRoaXMgb3B0aW9uIGluY29ycG9yYXRlcyB0aGUgQURDIHJlZ2lzdGVyIG91dHB1dCBhcyBhIHNvdXJjZSBvZlxcbiAyMDE6XFx0XFx0ICByYW5kb21uZXNzIGludG8gTGludXggZW50cm9weSBwb29sICgvZGV2L3VyYW5kb20gYW5kIC9kZXYvcmFuZG9tKVxcbiAyMDI6XFx0XFxuIDIwMzpcXHRcXHQgIFNheSBZLCBmZWVkcyB0aGUgZW50cm9weSBkaXJlY3RseSBmcm9tIHRoZSBXaUZpIGRyaXZlciB0byB0aGUgaW5wdXRcXG4gMjA0OlxcdFxcdCAgcG9vbC5cXG4gMjA1OlxcdFxcbiAyMDY6XFx0Y29uZmlnIEFUSDlLX0NPTU1PTl9TUEVDVFJBTFxcbiAyMDc6XFx0XFx0Ym9vbCBcXFwiQXRoZXJvcyBhdGg5ay9hdGg5a19odGMgc3BlY3RyYWwgc2NhbiBzdXBwb3J0XFxcIlxcbiAyMDg6XFx0XFx0ZGVwZW5kcyBvbiBBVEg5S19ERUJVR0ZTIHx8IEFUSDlLX0hUQ19ERUJVR0ZTXFxuIDIwOTpcXHRcXHRzZWxlY3QgUkVMQVlcXG4gMjEwOlxcdFxcdGRlZmF1bHQgblxcbiAyMTE6XFx0XFx0aGVscFxcbiAyMTI6XFx0XFx0ICBTYXkgWSB0byBlbmFibGUgYWNjZXNzIHRvIHRoZSBGRlQvc3BlY3RyYWwgZGF0YSB2aWEgZGVidWdmcy5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMDE6MDM6MzUuMTcwNTI2OTIxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTc5NTUwNDIxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgYEFUSDlLX0RFQlVHRlNgIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcsIHdoZXJlIHNob3VsZCBJIHN0YXJ0IGxvb2tpbmcgdG8gdW5kZXJzdGFuZCBvciBtb2RpZnkgdGhlIGRlYnVnIG9wdGlvbnMgZm9yIGF0aDlrPyBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZ28gc3RyYWlnaHQgdG8gdGhlIGNvbmZpZ3VyYXRpb24gZmlsZXMuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGNoZWNrIHRoZSBgS2NvbmZpZ2AgZmlsZSB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYCBkaXJlY3RvcnkuIFRoYXQncyB0aGUgbG9naWNhbCBwbGFjZSB0byBzZWUgaWYgYEFUSDlLX0RFQlVHRlNgIGlzIGRlZmluZWQsIHdoYXQgaXQgZG9lcywgYW5kIGhvdyBpdOKAmXMgY29uZmlndXJlZC4gSSdtIGFzc3VtaW5nIHRoYXQncyB3aGVyZSBJIGNhbiB0b2dnbGUgaXQgb24gb3Igb2ZmIG9yIHNlZSBvdGhlciBkZXBlbmRlbmNpZXMsIG9wdGlvbnMsIG9yIGhlbHAgdGV4dCByZWxhdGVkIHRvIHRoZSBkZWJ1ZyBmaWxlc3lzdGVtIGludGVyZmFjZSBmb3IgdGhhdCBwYXJ0aWN1bGFyIGF0aDlrIGRyaXZlci4gSXQncyB0aGUgc3RhbmRhcmQgcGxhY2UgdG8gZGVmaW5lIHRoZXNlIGtpbmRzIG9mIGZlYXR1cmVzIHdpdGhpbiBhIGtlcm5lbCBtb2R1bGUsIHNvIGl0IG1ha2VzIHNlbnNlIHRvIHN0YXJ0IHRoZXJlIGFuZCBzZWUgd2hhdCdzIHdoYXQuIExldCdzIGRpZyBpbiBhbmQgc2VlIHdoYXQgdGhlIGJ1aWxkIHN5c3RlbSByZXZlYWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTg4MCwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMDE6MDM6MzYuOTY2MDM0NDk5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMDUyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMzAsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxMzA6XFx0XFx0ICBDdXJyZW50bHksIEFSOTQ2MiBpcyBzdXBwb3J0ZWQuXFxuIDEzMTpcXHRcXG4gMTMyOlxcdGNvbmZpZyBBVEg5S19SRktJTExcXG4gMTMzOlxcdFxcdGJvb2wgXFxcIkF0aGVyb3MgYXRoOWsgcmZraWxsIHN1cHBvcnRcXFwiIGlmIEVYUEVSVFxcbiAxMzQ6XFx0XFx0ZGVwZW5kcyBvbiBBVEg5S1xcbiAxMzU6XFx0XFx0ZGVwZW5kcyBvbiBSRktJTEw9eSB8fCBSRktJTEw9QVRIOUtcXG4gMTM2OlxcdFxcdGRlZmF1bHQgeVxcbiAxMzc6XFx0XFx0aGVscFxcbiAxMzg6XFx0XFx0ICBTYXkgWSB0byBoYXZlIGF0aDlrIHBvbGwgdGhlIFJGLUtpbGwgR1BJTyBldmVyeSBjb3VwbGUgb2ZcXG4gMTM5OlxcdFxcdCAgc2Vjb25kcy4gVHVybiBvZmYgdG8gc2F2ZSBwb3dlciwgYnV0IGVuYWJsZSBpdCBpZiB5b3UgaGF2ZVxcbiAxNDA6XFx0XFx0ICBhIHBsYXRmb3JtIHRoYXQgY2FuIHRvZ2dsZSB0aGUgUkYtS2lsbCBHUElPLlxcbiAxNDE6XFx0XFxuIDE0MjpcXHRjb25maWcgQVRIOUtfQ0hBTk5FTF9DT05URVhUXFxuIDE0MzpcXHRcXHRib29sIFxcXCJDaGFubmVsIENvbnRleHQgc3VwcG9ydFxcXCJcXG4gMTQ0OlxcdFxcdGRlcGVuZHMgb24gQVRIOUtcXG4gMTQ1OlxcdFxcdGRlZmF1bHQgblxcbiAxNDY6XFx0XFx0aGVscFxcbiAxNDc6XFx0XFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIGNoYW5uZWwgY29udGV4dCBzdXBwb3J0IGluIGF0aDlrLCB3aGljaCBpcyBuZWVkZWRcXG4gMTQ4OlxcdFxcdCAgZm9yIG11bHRpLWNoYW5uZWwgY29uY3VycmVuY3kuIEVuYWJsZSB0aGlzIGlmIFAyUCBQb3dlclNhdmUgc3VwcG9ydFxcbiAxNDk6XFx0XFx0ICBpcyByZXF1aXJlZC5cXG4gMTUwOlxcdFxcbiAxNTE6XFx0Y29uZmlnIEFUSDlLX1BDT0VNXFxuIDE1MjpcXHRcXHRib29sIFxcXCJBdGhlcm9zIGF0aDlrIHN1cHBvcnQgZm9yIFBDIE9FTSBjYXJkc1xcXCIgaWYgRVhQRVJUXFxuIDE1MzpcXHRcXHRkZXBlbmRzIG9uIEFUSDlLXFxuIDE1NDpcXHRcXHRkZWZhdWx0IHlcXG4gMTU1OlxcdFxcbiAxNTY6XFx0Y29uZmlnIEFUSDlLX1BDSV9OT19FRVBST01cXG4gMTU3OlxcdFxcdHRyaXN0YXRlIFxcXCJBdGhlcm9zIGF0aDlrIHBjaSBsb2FkZXIgZm9yIEVFUFJPTS1sZXNzIGNoaXBzXFxcIlxcbiAxNTg6XFx0XFx0ZGVwZW5kcyBvbiBBVEg5S19QQ0lcXG4gMTU5OlxcdFxcdGRlZmF1bHQgblxcbiAxNjA6XFx0XFx0aGVscFxcbiAxNjE6XFx0XFx0ICBUaGlzIHNlcGFyYXRlIGRyaXZlciBwcm92aWRlcyBhIGxvYWRlciBpbiBvcmRlciB0byBzdXBwb3J0IHRoZVxcbiAxNjI6XFx0XFx0ICBBUjUwMFggdG8gQVI5MlhYLWdlbmVyYXRpb24gb2YgYXRoOWsgUENJKGUpIFdpRmkgY2hpcHMsIHdoaWNoIGhhdmVcXG4gMTYzOlxcdFxcdCAgdGhlaXIgaW5pdGlhbGl6YXRpb24gZGF0YSAod2hpY2ggY29udGFpbnMgdGhlIHJlYWwgUENJIERldmljZSBJRFxcbiAxNjQ6XFx0XFx0ICB0aGF0IGF0aDlrIHdpbGwgbmVlZCkgc3RvcmVkIHRvZ2V0aGVyIHdpdGggdGhlIGNhbGlicmF0aW9uIGRhdGEgb3V0XFxuIDE2NTpcXHRcXHQgIG9mIHJlYWNoIGZvciB0aGUgYXRoOWsgY2hpcC5cXG4gMTY2OlxcdFxcbiAxNjc6XFx0XFx0ICBUaGVzZSBkZXZpY2VzIGFyZSB1c3VhbGx5IHZhcmlvdXMgbmV0d29yayBhcHBsaWFuY2VzLCByb3V0ZXJzIG9yXFxuIDE2ODpcXHRcXHQgIGFjY2VzcyBQb2ludHMgYW5kIHN1Y2guXFxuIDE2OTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMDE6MDM6MzYuOTY2MTM4MTg4WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI5NDA3NzQ3NjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqVHJhY2luZyBEb3duIEFUSDlLX0RFQlVHRlMqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSBgQVRIOUtfREVCVUdGU2AgaXMgZGVmaW5lZC4gVGhpcyBpcyBsaWtlbHkgYSBwcmVwcm9jZXNzb3IgbWFjcm8sIGdpdmVuIHRoZSBhbGwtY2FwcyBuYW1pbmcgY29udmVudGlvbiwgYW5kIHByb2JhYmx5IHJlbGF0ZWQgdG8gZGVidWcgZnVuY3Rpb25hbGl0aWVzIHdpdGhpbiB0aGUgYXRoOWsgd2lyZWxlc3MgZHJpdmVyLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byB1c2UgbXkgcHJlZmVycmVkIHRvb2xzIGZvciB0aGlzIOKAkyBgZ3JlcGAsIGBmaW5kYCwgb3IgbWF5YmUgZXZlbiBhIG1vcmUgc29waGlzdGljYXRlZCBJREUtaW50ZWdyYXRlZCBzZWFyY2ggaWYgSSBoYXZlIHRoZSBwcm9qZWN0IGxvYWRlZC4gSSdtIGdvaW5nIHRvIHN0YXJ0IHdpdGggdGhlIG9idmlvdXM6IHRoZSBrZXJuZWwgc291cmNlIHRyZWUuIEknbGwgbmVlZCB0byByZW1lbWJlciB3aGVyZSB0aGF0J3MgbW91bnRlZCwgcHJvYmFibHkgYC91c3Ivc3JjL2xpbnV4YCBvciBzb21ldGhpbmcgc2ltaWxhciwgZGVwZW5kaW5nIG9uIG15IHN5c3RlbSBzZXR1cC4gVGhlbiBpdCdzIGEgbWF0dGVyIG9mIGNyYWZ0aW5nIHRoZSByaWdodCBzZWFyY2ggcXVlcnkuIEknbGwgc3RhcnQgd2l0aCBzb21ldGhpbmcgc2ltcGxlIGxpa2UgYGdyZXAgLXIgXCJBVEg5S19ERUJVR0ZTXCIgL3Vzci9zcmMvbGludXhgIGFuZCBzZWUgd2hhdCB0aGF0IHR1cm5zIHVwLiBJZiB0aGF0J3MgdG9vIGJyb2FkLCBJJ2xsIHJlZmluZSBpdCB3aXRoIHNvbWUgY29udGV4dCBjbHVlcy4gTWF5YmUgYWRkaW5nIGBpbmNsdWRlL2Agb3Igc2VhcmNoaW5nIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGF0aDlrIGRyaXZlciBkaXJlY3Rvcnkgc3RydWN0dXJlIGlmIEkga25vdyB3aGVyZSB0aGF0IGlzIHdpdGhpbiB0aGUga2VybmVsIHRyZWUuIEkgYWxzbyBuZWVkIHRvIGNvbnNpZGVyIHRoYXQgaXQgbWlnaHQgYmUgZGVmaW5lZCB3aXRoaW4gYSBoZWFkZXIgZmlsZSwgc28gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJ20gc2VhcmNoaW5nIGhlYWRlciBmaWxlcyBhcyB3ZWxsLiBUaGlzIHNob3VsZCBiZSBhIHN0cmFpZ2h0Zm9yd2FyZCBodW50LCBhbmQgSSdsbCBsaWtlbHkgZmluZCB0aGUgZGVmaW5pdGlvbiBwcmV0dHkgcXVpY2tseS4gTGV0J3MgZ2V0IHRvIGl0IVxuXG5cbiIsIklucHV0VG9rZW5zIjozMjc2OCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMDE6MDM6MzkuOTA2OTE2Mjg5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NTI0NDQ4NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQVRIOUtfREVCVUdGU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnPTQ4PWNvbmZpZyBBVEg5S19BSEJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTU3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjU4OmNvbmZpZyBBVEg5S19ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNTktXFx0Ym9vbCBcXFwiQXRoZXJvcyBhdGg5ayBkZWJ1Z2dpbmdcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDAxOjAzOjM5Ljk4MjE2NTExN1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxNzkyNjE0OTU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgQVRIOUsgRGVidWcgQ29uZmlnKipcblxuT2theSwgdGltZSB0byBnZXQgdGhpcyBzb3J0ZWQuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBsZXQncyB6ZXJvIGluIG9uIHRoZSBgY29uZmlnIEFUSDlLX0RFQlVHRlNgLiBJIHJlbWVtYmVyIGl0IGJlaW5nIGluIHRoYXQgZ2VuZXJhbCBhcmVhIG9mIHRoZSBjb25maWcgZmlsZSDigJMgYXJvdW5kIGxpbmUgNTggc2hvdWxkIGJlIGEgZ29vZCBzdGFydGluZyBwb2ludC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGVuYWJsZWQvZGlzYWJsZWQgYW5kIGlmIHRoYXQncyBpbXBhY3RpbmcgdGhlIGJlaGF2aW9yIEknbSBzZWVpbmcuIFRoaXMgdXN1YWxseSBpbmRpY2F0ZXMgd2hldGhlciB0aGUgZGVidWdnaW5nIGluZnJhc3RydWN0dXJlIGZvciB0aGUgYXRoOWsgZHJpdmVyIGlzIGVuYWJsZWQuIExldCdzIHNlZSBpZiB0aGlzIGRlYnVnIGNvbmZpZ3VyYXRpb24gc2V0dGluZyBpcyBzZXQgY29ycmVjdGx5LlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzIzNywiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDAxOjAzOjQxLjc3NDc4MjI3NFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MDk1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA1NSxcbiAgXCJMaW5lQ291bnRcIjogMjVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA1NTpcXHRcXHQgIFNheSBZLCBpZiB5b3UgaGF2ZSBhIFNvQyB3aXRoIGEgY29tcGF0aWJsZSBidWlsdC1pblxcbiAgNTY6XFx0XFx0ICB3aXJlbGVzcyBNQUMuIFNheSBOIGlmIHVuc3VyZS5cXG4gIDU3OlxcdFxcbiAgNTg6XFx0Y29uZmlnIEFUSDlLX0RFQlVHRlNcXG4gIDU5OlxcdFxcdGJvb2wgXFxcIkF0aGVyb3MgYXRoOWsgZGVidWdnaW5nXFxcIlxcbiAgNjA6XFx0XFx0ZGVwZW5kcyBvbiBBVEg5SyBcXHUwMDI2XFx1MDAyNiBERUJVR19GUyBcXHUwMDI2XFx1MDAyNiBNQUM4MDIxMV9ERUJVR0ZTXFxuICA2MTpcXHRcXHRzZWxlY3QgQVRIOUtfQ09NTU9OX0RFQlVHXFxuICA2MjpcXHRcXHRoZWxwXFxuICA2MzpcXHRcXHQgIFNheSBZLCBpZiB5b3UgbmVlZCBhY2Nlc3MgdG8gYXRoOWsncyBzdGF0aXN0aWNzIGZvclxcbiAgNjQ6XFx0XFx0ICBpbnRlcnJ1cHRzLCByYXRlIGNvbnRyb2wsIGV0Yy5cXG4gIDY1OlxcdFxcbiAgNjY6XFx0XFx0ICBBbHNvIHJlcXVpcmVkIGZvciBjaGFuZ2luZyBkZWJ1ZyBtZXNzYWdlIGZsYWdzIGF0IHJ1biB0aW1lIGFuZCBmb3JcXG4gIDY3OlxcdFxcdCAgVFg5OS5cXG4gIDY4OlxcdFxcbiAgNjk6XFx0Y29uZmlnIEFUSDlLX1NUQVRJT05fU1RBVElTVElDU1xcbiAgNzA6XFx0XFx0Ym9vbCBcXFwiRGV0YWlsZWQgc3RhdGlvbiBzdGF0aXN0aWNzXFxcIlxcbiAgNzE6XFx0XFx0ZGVwZW5kcyBvbiBBVEg5SyBcXHUwMDI2XFx1MDAyNiBBVEg5S19ERUJVR0ZTIFxcdTAwMjZcXHUwMDI2IERFQlVHX0ZTXFxuICA3MjpcXHRcXHRkZWZhdWx0IG5cXG4gIDczOlxcdFxcdGhlbHBcXG4gIDc0OlxcdFxcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyBkZXRhaWxlZCBzdGF0aXN0aWNzIGZvciBhc3NvY2lhdGlvbiBzdGF0aW9ucy5cXG4gIDc1OlxcdFxcbiAgNzY6XFx0Y29uZmlnIEFUSDlLX1RYOTlcXG4gIDc3OlxcdFxcdGJvb2wgXFxcIkF0aGVyb3MgYXRoOWsgVFg5OSB0ZXN0aW5nIHN1cHBvcnRcXFwiXFxuICA3ODpcXHRcXHRkZXBlbmRzIG9uIEFUSDlLX0RFQlVHRlMgXFx1MDAyNlxcdTAwMjYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXFxuICA3OTpcXHRcXHRkZWZhdWx0IG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMDE6MDM6NDEuNzc0ODU0ODQ0WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI5NjUzOTIzMjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyBVU0IgR2FkZ2V0IFByb2JpbmcgZm9yIGBhdGg5a19odGNgIERyaXZlcioqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCBob3cgd2UgY2FuIHRlc3QgdGhlIGBhdGg5a19odGNgIGRyaXZlciwgc3BlY2lmaWNhbGx5IGl0cyBpbnRlcmFjdGlvbiB3aXRoIFVTQi4gSXQncyBhIFVTQi1iYXNlZCB3aXJlbGVzcyBkcml2ZXIsIHVzaW5nIHRoYXQgSFRDIChIb3N0IFRhcmdldCBDb21tdW5pY2F0aW9uKSBwcm90b2NvbCwgd2hpY2ggaXMgaW1wb3J0YW50IHRvIHJlbWVtYmVyLiBUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzIHdoZXRoZXIgd2UgY2FuIGVmZmVjdGl2ZWx5IHByb2JlIHRoaXMgZHJpdmVyIHVzaW5nIGEgVVNCIGdhZGdldCBzZXR1cCwgbWF5YmUgbGV2ZXJhZ2luZyBzb21ldGhpbmcgbGlrZSBgcmF3X2dhZGdldGAgd2l0aGluIFN5emthbGxlci5cblxuVG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBzcGVjaWZpY3Mgb2YgdGhlIFVTQiBkZXZpY2UgSURzIHRoYXQgdGhpcyBkcml2ZXIgZXhwZWN0cywgSSBzaG91bGQgZGl2ZSBpbnRvIHRoZSBjb2RlLiBNeSBwbGFuIGlzIHRvIHN0YXJ0IGJ5IGV4YW1pbmluZyBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuY2AuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGNydWNpYWwgaW5mb3JtYXRpb24gSSBuZWVkIGFib3V0IHRoZSBleHBlY3RlZCBVU0IgZGV2aWNlIGlkZW50aWZpZXJzIHRoYXQgYGF0aDlrX2h0Y2AgaXMgbG9va2luZyBmb3IgZHVyaW5nIGl0cyBwcm9iZSBwcm9jZXNzLiBUaGlzIHNob3VsZCBpbmZvcm0gaG93IHdlIGdvIGFib3V0IHNldHRpbmcgdXAgdGhlIGdhZGdldCB0byB0cmlnZ2VyIHRoZSBkcml2ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzNzkzLCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQwMTowMzo0NC43NDAyNTI3MDRaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwMTkwNzk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk1PRFVMRV9ERVZJQ0VfVEFCTEV8VVNCX0RFVklDRVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9haGIuYz0xMzI9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgYXRoX2FoYl9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYWhiLmMtMTQwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9haGIuYzoxNDE6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgYXRoOWtfb2ZfbWF0Y2hfdGFibGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9haGIuYy0xNDItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXRoOWtfcGNpX293bF9sb2FkZXIuYz0yMjU9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIG93bF9wY2lfdGFibGVbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hdGg5a19wY2lfb3dsX2xvYWRlci5jLTIyOS19O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hdGg5a19wY2lfb3dsX2xvYWRlci5jOjIzMDpNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgb3dsX3BjaV90YWJsZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2F0aDlrX3BjaV9vd2xfbG9hZGVyLmMtMjMxLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYz0yMz1zdGF0aWMgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgYXRoOWtfaGlmX3VzYl9pZHNbXSA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjI0OlxcdHsgVVNCX0RFVklDRSgweDBjZjMsIDB4OTI3MSkgfSwgLyogQXRoZXJvcyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6MjU6XFx0eyBVU0JfREVWSUNFKDB4MGNmMywgMHgxMDA2KSB9LCAvKiBBdGhlcm9zICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzoyNjpcXHR7IFVTQl9ERVZJQ0UoMHgwODQ2LCAweDkwMzApIH0sIC8qIE5ldGdlYXIgTjE1MCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6Mjc6XFx0eyBVU0JfREVWSUNFKDB4MDdiOCwgMHg5MjcxKSB9LCAvKiBBbHRhaSBXQTEwMTFOLUdVICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzoyODpcXHR7IFVTQl9ERVZJQ0UoMHgwN0QxLCAweDNBMTApIH0sIC8qIERsaW5rIFdpcmVsZXNzIDE1MCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6Mjk6XFx0eyBVU0JfREVWSUNFKDB4MTNEMywgMHgzMzI3KSB9LCAvKiBBenVyZXdhdmUgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjMwOlxcdHsgVVNCX0RFVklDRSgweDEzRDMsIDB4MzMyOCkgfSwgLyogQXp1cmV3YXZlICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzozMTpcXHR7IFVTQl9ERVZJQ0UoMHgxM0QzLCAweDMzNDYpIH0sIC8qIElNQyBOZXR3b3JrcyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6MzI6XFx0eyBVU0JfREVWSUNFKDB4MTNEMywgMHgzMzQ4KSB9LCAvKiBBenVyZXdhdmUgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjMzOlxcdHsgVVNCX0RFVklDRSgweDEzRDMsIDB4MzM0OSkgfSwgLyogQXp1cmV3YXZlICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzozNDpcXHR7IFVTQl9ERVZJQ0UoMHgxM0QzLCAweDMzNTApIH0sIC8qIEF6dXJld2F2ZSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6MzU6XFx0eyBVU0JfREVWSUNFKDB4MDRDQSwgMHg0NjA1KSB9LCAvKiBMaXRlb24gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjM2OlxcdHsgVVNCX0RFVklDRSgweDA0MEQsIDB4MzgwMSkgfSwgLyogVklBICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzozNzpcXHR7IFVTQl9ERVZJQ0UoMHgwY2YzLCAweGIwMDMpIH0sIC8qIFViaXF1aXRpIFdpZmlTdGF0aW9uIEV4dCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6Mzg6XFx0eyBVU0JfREVWSUNFKDB4MGNmMywgMHhiMDAyKSB9LCAvKiBVYmlxdWl0aSBXaWZpU3RhdGlvbiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6Mzk6XFx0eyBVU0JfREVWSUNFKDB4MDU3YywgMHg4NDAzKSB9LCAvKiBBVk0gRlJJVFohV0xBTiAxMU4gdjIgVVNCICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo0MDpcXHR7IFVTQl9ERVZJQ0UoMHgwNDcxLCAweDIwOWUpIH0sIC8qIFBoaWxpcHMgKG9yIE5YUCkgUFRBMDEgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjQxOlxcdHsgVVNCX0RFVklDRSgweDFlZGEsIDB4MjMxNSkgfSwgLyogQWlyVGllcyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNDItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo0MzpcXHR7IFVTQl9ERVZJQ0UoMHgwY2YzLCAweDcwMTUpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNDQtXFx0ICAuZHJpdmVyX2luZm8gPSBBUjkyODdfVVNCIH0sICAvKiBBdGhlcm9zICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjQ2OlxcdHsgVVNCX0RFVklDRSgweDBjZjMsIDB4NzAxMCksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00Ny1cXHQgIC5kcml2ZXJfaW5mbyA9IEFSOTI4MF9VU0IgfSwgIC8qIEF0aGVyb3MgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjQ4OlxcdHsgVVNCX0RFVklDRSgweDA4NDYsIDB4OTAxOCksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00OS1cXHQgIC5kcml2ZXJfaW5mbyA9IEFSOTI4MF9VU0IgfSwgIC8qIE5ldGdlYXIgV05EQTMyMDAgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjUwOlxcdHsgVVNCX0RFVklDRSgweDA4M0EsIDB4QTcwNCksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy01MS1cXHQgIC5kcml2ZXJfaW5mbyA9IEFSOTI4MF9VU0IgfSwgIC8qIFNNQyBOZXR3b3JrcyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NTI6XFx0eyBVU0JfREVWSUNFKDB4MDQxMSwgMHgwMTdmKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTUzLVxcdCAgLmRyaXZlcl9pbmZvID0gQVI5MjgwX1VTQiB9LCAgLyogU29ueSBVV0EtQlIxMDAgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjU0OlxcdHsgVVNCX0RFVklDRSgweDA0MTEsIDB4MDE5NyksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy01NS1cXHQgIC5kcml2ZXJfaW5mbyA9IEFSOTI4MF9VU0IgfSwgIC8qIEJ1ZmZhbG8gV0xJLVVWLUFHMzAwUCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NTY6XFx0eyBVU0JfREVWSUNFKDB4MDRkYSwgMHgzOTA0KSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTU3LVxcdCAgLmRyaXZlcl9pbmZvID0gQVI5MjgwX1VTQiB9LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NTg6XFx0eyBVU0JfREVWSUNFKDB4MDkzMCwgMHgwYTA4KSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTU5LVxcdCAgLmRyaXZlcl9pbmZvID0gQVI5MjgwX1VTQiB9LCAgLyogVG9zaGliYSBXTE0tMjBVMiBhbmQgR04tMTA4MCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNjAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo2MTpcXHR7IFVTQl9ERVZJQ0UoMHgwY2YzLCAweDIwZmYpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNjItXFx0ICAuZHJpdmVyX2luZm8gPSBTVE9SQUdFX0RFVklDRSB9LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy02Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjY3Ok1PRFVMRV9ERVZJQ0VfVEFCTEUodXNiLCBhdGg5a19oaWZfdXNiX2lkcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy02OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9wY2kuYz0xMDYyPXN0YXRpYyBTSU1QTEVfREVWX1BNX09QUyhhdGg5a19wbV9vcHMsIGF0aF9wY2lfc3VzcGVuZCwgYXRoX3BjaV9yZXN1bWUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3BjaS5jLTEwNzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3BjaS5jOjEwNzM6TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIGF0aF9wY2lfaWRfdGFibGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9wY2kuYy0xMDc0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQwMTowMzo0NC44MDA0NDc5NDJaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjAwNzQxMjMyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEaXZpbmcgaW50byBhdGg5a19odGMgVVNCIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgc28gYGF0aDlrX2h0Y2Ag4oCTIHRoYXQncyB0aGUgVVNCIFdpRmkgZHJpdmVyLCByaWdodD8gSW50ZXJlc3RpbmcuLi4gVVNCIGZ1enppbmcsIGh1aD8gVGhpcyBjb3VsZCBiZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIExldCdzIHNlZSB3aGF0IHdlIGNhbiBkaWcgdXAuIEZpcnN0LCBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHJlY2VudCBjaGFuZ2VzIGFuZCBjcnVjaWFsIHN5bWJvbHMgd2l0aGluIHRoaXMgZHJpdmVyLiBLbm93aW5nIHdoZXJlIHRvIGxvb2sgaXMgaGFsZiB0aGUgYmF0dGxlLlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgaW50byB0aGUgY29kZS4gSSdsbCBmb2N1cyBvbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jYC4gU3BlY2lmaWNhbGx5LCBJJ2xsIGJlIHJldmlld2luZyBsaW5lcyA0NjAtNjYwIGFuZCB0aGVuIDEwNTAtMTA4MC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgdmlldyBvZiBhbnkgcmVsZXZhbnQgc3BlY3RyYWwgYW5hbHlzaXMgZnVuY3Rpb25hbGl0eSB0aGF0IGlzIGluIHRoZSBkcml2ZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIGFueXRoaW5nIHRoZXJlIGxvb2tzIGxpa2UgYSBwb3RlbnRpYWwgdGFyZ2V0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjQ4OCwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDAxOjAzOjQ2LjgwNzg2MzI4MVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTAzNzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDQ2MCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDQ2MDpcXHRcXHR9XFxuIDQ2MTpcXHRcXG4gNDYyOlxcdFxcdGlmIChyZXQpXFxuIDQ2MzpcXHRcXHRcXHRyZXR1cm4gMTtcXG4gNDY0OlxcdFxcdGVsc2VcXG4gNDY1OlxcdFxcdFxcdHJldHVybiAwO1xcbiA0NjY6XFx0fVxcbiA0Njc6XFx0XFxuIDQ2ODpcXHRzdGF0aWMgdm9pZCBhdGhfY21uX2NvdW50X2ZmdF9zYW1wbGUoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LFxcbiA0Njk6XFx0XFx0XFx0XFx0XFx0ICAgICBpbnQgcmV0KVxcbiA0NzA6XFx0e1xcbiA0NzE6XFx0XFx0c3RydWN0IGF0aF9yeF9zdGF0cyAqcnhfc3RhdHMgPSBzcGVjX3ByaXYtXFx1MDAzZXJ4X3N0YXRzO1xcbiA0NzI6XFx0XFxuIDQ3MzpcXHRcXHRpZiAoIXJ4X3N0YXRzKVxcbiA0NzQ6XFx0XFx0XFx0cmV0dXJuO1xcbiA0NzU6XFx0XFxuIDQ3NjpcXHRcXHRpZiAocmV0ID09IDApXFxuIDQ3NzpcXHRcXHRcXHRyeF9zdGF0cy1cXHUwMDNlcnhfc3BlY3RyYWxfc2FtcGxlX2dvb2QrKztcXG4gNDc4OlxcdFxcdGVsc2VcXG4gNDc5OlxcdFxcdFxcdHJ4X3N0YXRzLVxcdTAwM2VyeF9zcGVjdHJhbF9zYW1wbGVfZXJyKys7XFxuIDQ4MDpcXHR9XFxuIDQ4MTpcXHRcXG4gNDgyOlxcdC8qIHJldHVybnMgMSBpZiB0aGlzIHdhcyBhIHNwZWN0cmFsIGZyYW1lLCBldmVuIGlmIG5vdCBoYW5kbGVkLiAqL1xcbiA0ODM6XFx0aW50IGF0aF9jbW5fcHJvY2Vzc19mZnQoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LCBzdHJ1Y3QgaWVlZTgwMjExX2hkciAqaGRyLFxcbiA0ODQ6XFx0XFx0XFx0ICAgIHN0cnVjdCBhdGhfcnhfc3RhdHVzICpycywgdTY0IHRzZilcXG4gNDg1OlxcdHtcXG4gNDg2OlxcdFxcdHU4IHNhbXBsZV9idWZbU1BFQ1RSQUxfU0FNUExFX01BWF9MRU5dID0gezB9O1xcbiA0ODc6XFx0XFx0c3RydWN0IGF0aF9odyAqYWggPSBzcGVjX3ByaXYtXFx1MDAzZWFoO1xcbiA0ODg6XFx0XFx0c3RydWN0IGF0aF9jb21tb24gKmNvbW1vbiA9IGF0aDlrX2h3X2NvbW1vbihzcGVjX3ByaXYtXFx1MDAzZWFoKTtcXG4gNDg5OlxcdFxcdHU4IG51bV9iaW5zLCAqdmRhdGEgPSAodTggKiloZHI7XFxuIDQ5MDpcXHRcXHRzdHJ1Y3QgYXRoX3JhZGFyX2luZm8gKnJhZGFyX2luZm87XFxuIDQ5MTpcXHRcXHRpbnQgbGVuID0gcnMtXFx1MDAzZXJzX2RhdGFsZW47XFxuIDQ5MjpcXHRcXHRpbnQgaTtcXG4gNDkzOlxcdFxcdGludCBnb3Rfc2xlbiA9IDA7XFxuIDQ5NDpcXHRcXHR1OCAgKnNhbXBsZV9zdGFydDtcXG4gNDk1OlxcdFxcdGludCBzYW1wbGVfYnl0ZXMgPSAwO1xcbiA0OTY6XFx0XFx0aW50IHJldCA9IDA7XFxuIDQ5NzpcXHRcXHR1MTYgZmZ0X2xlbiwgc2FtcGxlX2xlbiwgZnJlcSA9IGFoLVxcdTAwM2VjdXJjaGFuLVxcdTAwM2VjaGFuLVxcdTAwM2VjZW50ZXJfZnJlcTtcXG4gNDk4OlxcdFxcdGVudW0gbmw4MDIxMV9jaGFubmVsX3R5cGUgY2hhbl90eXBlO1xcbiA0OTk6XFx0XFx0YXRoX2Ntbl9mZnRfaWR4X3ZhbGlkYXRvciAqZmZ0X2lkeF92YWxpZGF0b3I7XFxuIDUwMDpcXHRcXHRhdGhfY21uX2ZmdF9zYW1wbGVfaGFuZGxlciAqZmZ0X2hhbmRsZXI7XFxuIDUwMTpcXHRcXG4gNTAyOlxcdFxcdC8qIEFSOTI4MCBhbmQgYmVmb3JlIHJlcG9ydCB2aWEgQVRIOUtfUEhZRVJSX1JBREFSLCBBUjkzeHggYW5kIG5ld2VyXFxuIDUwMzpcXHRcXHQgKiB2aWEgQVRIOUtfUEhZRVJSX1NQRUNUUkFMLiBIYXZlbid0IHNlZW4gQVRIOUtfUEhZRVJSX0ZBTFNFX1JBREFSX0VYVFxcbiA1MDQ6XFx0XFx0ICogeWV0LCBidXQgdGhpcyBpcyBzdXBwb3NlZCB0byBiZSBwb3NzaWJsZSBhcyB3ZWxsLlxcbiA1MDU6XFx0XFx0ICovXFxuIDUwNjpcXHRcXHRpZiAocnMtXFx1MDAzZXJzX3BoeWVyciAhPSBBVEg5S19QSFlFUlJfUkFEQVIgXFx1MDAyNlxcdTAwMjZcXG4gNTA3OlxcdFxcdCAgICBycy1cXHUwMDNlcnNfcGh5ZXJyICE9IEFUSDlLX1BIWUVSUl9GQUxTRV9SQURBUl9FWFQgXFx1MDAyNlxcdTAwMjZcXG4gNTA4OlxcdFxcdCAgICBycy1cXHUwMDNlcnNfcGh5ZXJyICE9IEFUSDlLX1BIWUVSUl9TUEVDVFJBTClcXG4gNTA5OlxcdFxcdFxcdHJldHVybiAwO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQwMTowMzo0Ni44MDgwMTczOTFaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjkyMjI3Njc4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gYGNvbW1vbi1zcGVjdHJhbC5jYCoqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gcGlucG9pbnQgd2hlcmUgdGhpcyBpc3N1ZSBtaWdodCBiZSBvY2N1cnJpbmcgd2l0aGluIHRoZSBzcGVjdHJhbCBhbmFseXNpcyBjb2RlLiBNeSBpbnN0aW5jdCB0ZWxscyBtZSB0aGUgcHJvYmxlbSBpcyBsaWtlbHkgd2l0aGluIHRoZSBjb3JlIHNpZ25hbCBwcm9jZXNzaW5nIHJvdXRpbmVzLCBzbyBJJ20gZ29pbmcgdG8gc3RhcnQgYnkgZXhhbWluaW5nIGxpbmVzIDYyMC02NjAgb2YgYGNvbW1vbi1zcGVjdHJhbC5jYC4gVGhpcyBzZWN0aW9uIGxpa2VseSBjb250YWlucyBhIGNyaXRpY2FsIHNlZ21lbnQgZm9yIGVpdGhlciB0aGUgRkZUIGNhbGN1bGF0aW9uLCB3aW5kb3dpbmcgZnVuY3Rpb25zLCBvciBwZXJoYXBzIHRoZSBwb3dlciBzcGVjdHJ1bSBjb21wdXRhdGlvbiwgYWxsIG9mIHdoaWNoIGFyZSBlc3NlbnRpYWwgaW4gYW55IHNwZWN0cmFsIGFuYWx5c2lzIHByb2Nlc3MuIEknbGwgbmVlZCB0byBjYXJlZnVsbHkgZGlzc2VjdCB0aGUgbG9naWMgaW4gdGhhdCBzZWN0aW9uLCBwYXlpbmcgY2xvc2UgYXR0ZW50aW9uIHRvIGRhdGEgZmxvdyBhbmQgYW55IHBvdGVudGlhbCBlZGdlIGNhc2VzIHRoYXQgY291bGQgaW50cm9kdWNlIGVycm9ycy4gVGhlIGdvYWwgaXMgdG8gcmFwaWRseSBkZXRlcm1pbmUgaWYgYW55IG9mIHRoZSBhc3N1bXB0aW9ucyBvZiB0aGUgYWxnb3JpdGhtIGFyZSB2aW9sYXRlZCBhdCB0aGF0IGxvY2F0aW9uLCBlc3BlY2lhbGx5IHJlbGF0aXZlIHRvIHRoZSBpbmNvbWluZyBzaWduYWwsIGFuZCB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uLiBJIGhhdmUgdG8gYXBwbHkgbXkgdW5kZXJzdGFuZGluZyBvZiBzcGVjdHJhbCBhbmFseXNpcyBwcmluY2lwbGVzLCBhbmQgZm9jdXMgb24gZGV0YWlscyBoZXJlOiB2YXJpYWJsZSB0eXBlcywgbG9vcCBjb25kaXRpb25zLCBhbmQgYW55IHBvdGVudGlhbCBvZmYtYnktb25lIGVycm9ycy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzc2NjUsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDAxOjAzOjQ5LjczMDI5Nzc4M1oiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTYwMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDYyMCxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDYyMDpcXHRcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4gNjIxOlxcdFxcbiA2MjI6XFx0XFx0XFx0XFx0Z290X3NsZW4gPSAxO1xcbiA2MjM6XFx0XFx0XFx0fVxcbiA2MjQ6XFx0XFxuIDYyNTpcXHRcXHRcXHRpZiAoZ290X3NsZW4pIHtcXG4gNjI2OlxcdFxcdFxcdFxcdGF0aF9kYmcoY29tbW9uLCBTUEVDVFJBTF9TQ0FOLCBcXFwiRkZUIGZyYW1lIGxlbjogJWlcXFxcblxcXCIsXFxuIDYyNzpcXHRcXHRcXHRcXHRcXHRzYW1wbGVfYnl0ZXMpO1xcbiA2Mjg6XFx0XFxuIDYyOTpcXHRcXHRcXHRcXHQvKiBPbmx5IHRyeSB0byBmaXggYSBmcmFtZSBpZiBpdCdzIHRoZSBvbmx5IG9uZVxcbiA2MzA6XFx0XFx0XFx0XFx0ICogb24gdGhlIHJlcG9ydCwgZWxzZSBqdXN0IHNraXAgaXQuXFxuIDYzMTpcXHRcXHRcXHRcXHQgKi9cXG4gNjMyOlxcdFxcdFxcdFxcdGlmIChzYW1wbGVfYnl0ZXMgIT0gc2FtcGxlX2xlbiBcXHUwMDI2XFx1MDAyNiBsZW4gXFx1MDAzYz0gZmZ0X2xlbiArIDIpIHtcXG4gNjMzOlxcdFxcdFxcdFxcdFxcdGF0aF9jbW5fY29weV9mZnRfZnJhbWUoc2FtcGxlX3N0YXJ0LFxcbiA2MzQ6XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIHNhbXBsZV9idWYsIHNhbXBsZV9sZW4sXFxuIDYzNTpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgc2FtcGxlX2J5dGVzKTtcXG4gNjM2OlxcdFxcbiA2Mzc6XFx0XFx0XFx0XFx0XFx0cmV0ID0gZmZ0X2hhbmRsZXIocnMsIHNwZWNfcHJpdiwgc2FtcGxlX2J1ZixcXG4gNjM4OlxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgdHNmLCBmcmVxLCBjaGFuX3R5cGUpO1xcbiA2Mzk6XFx0XFxuIDY0MDpcXHRcXHRcXHRcXHRcXHRhdGhfY21uX2NvdW50X2ZmdF9zYW1wbGUoc3BlY19wcml2LCByZXQpO1xcbiA2NDE6XFx0XFxuIDY0MjpcXHRcXHRcXHRcXHRcXHQvKiBNaXggdGhlIHJlY2VpdmVkIGJpbnMgdG8gdGhlIC9kZXYvcmFuZG9tXFxuIDY0MzpcXHRcXHRcXHRcXHRcXHQgKiBwb29sXFxuIDY0NDpcXHRcXHRcXHRcXHRcXHQgKi9cXG4gNjQ1OlxcdFxcdFxcdFxcdFxcdGFkZF9kZXZpY2VfcmFuZG9tbmVzcyhzYW1wbGVfYnVmLCBudW1fYmlucyk7XFxuIDY0NjpcXHRcXG4gNjQ3OlxcdFxcdFxcdFxcdFxcdG1lbXNldChzYW1wbGVfYnVmLCAwLCBTUEVDVFJBTF9TQU1QTEVfTUFYX0xFTik7XFxuIDY0ODpcXHRcXHRcXHRcXHR9XFxuIDY0OTpcXHRcXG4gNjUwOlxcdFxcdFxcdFxcdC8qIFByb2Nlc3MgYSBub3JtYWwgZnJhbWUgKi9cXG4gNjUxOlxcdFxcdFxcdFxcdGlmIChzYW1wbGVfYnl0ZXMgPT0gc2FtcGxlX2xlbikge1xcbiA2NTI6XFx0XFx0XFx0XFx0XFx0cmV0ID0gZmZ0X2hhbmRsZXIocnMsIHNwZWNfcHJpdiwgc2FtcGxlX3N0YXJ0LFxcbiA2NTM6XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICB0c2YsIGZyZXEsIGNoYW5fdHlwZSk7XFxuIDY1NDpcXHRcXG4gNjU1OlxcdFxcdFxcdFxcdFxcdGF0aF9jbW5fY291bnRfZmZ0X3NhbXBsZShzcGVjX3ByaXYsIHJldCk7XFxuIDY1NjpcXHRcXG4gNjU3OlxcdFxcdFxcdFxcdFxcdC8qIE1peCB0aGUgcmVjZWl2ZWQgYmlucyB0byB0aGUgL2Rldi9yYW5kb21cXG4gNjU4OlxcdFxcdFxcdFxcdFxcdCAqIHBvb2xcXG4gNjU5OlxcdFxcdFxcdFxcdFxcdCAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQwMTowMzo0OS43MzA0OTYxMjNaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTgzOTM5OTczNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byBgY29tbW9uLXNwZWN0cmFsLmNgKipcblxuT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIExldCdzIHNlZS4uLiB0aGUgaW5pdGlhbCBhbmFseXNpcyBzdWdnZXN0cyBhIHBvdGVudGlhbCBpc3N1ZSBpbiB0aGUgc3BlY3RyYWwgcHJvY2Vzc2luZywgc28gSSdtIGdvaW5nIHRvIGp1bXAgc3RyYWlnaHQgaW50byBgY29tbW9uLXNwZWN0cmFsLmNgLiBTcGVjaWZpY2FsbHksIEkgd2FudCB0byB6ZXJvIGluIG9uIGxpbmVzIDEwNTAgdGhyb3VnaCAxMDgwLiBUaGlzIHJlZ2lvbiB1c3VhbGx5IGhhbmRsZXMgYSBjcml0aWNhbCB0cmFuc2Zvcm0gb3IgZmlsdGVyaW5nIHN0ZXAuIEkgaGF2ZSBhIGh1bmNoIHRoYXQncyB3aGVyZSB0aGluZ3MgYXJlIGZhbGxpbmcgYXBhcnQsIHNvIGxldCdzIHN0YXJ0IHRoZXJlIGFuZCBzZWUgd2hhdCB3ZSBjYW4gZmluZC4gSXQncyBhIHRhcmdldGVkIGFwcHJvYWNoOyBob3BlZnVsbHkgdGhpcyB3aWxsIHByb3ZpZGUgc29tZSBpbnNpZ2h0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzg1MjcsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDAxOjAzOjUxLjU2OTg5NzgxOFoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDgwODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEwNTAsXG4gIFwiTGluZUNvdW50XCI6IDM1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjEwNTA6XFx0LyoqKioqKioqKioqKioqKioqKioqKi9cXG4xMDUxOlxcdFxcbjEwNTI6XFx0dm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfZGVpbml0X2RlYnVnKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdilcXG4xMDUzOlxcdHtcXG4xMDU0OlxcdFxcdGlmIChzcGVjX3ByaXYtXFx1MDAzZXJmc19jaGFuX3NwZWNfc2Nhbikge1xcbjEwNTU6XFx0XFx0XFx0cmVsYXlfY2xvc2Uoc3BlY19wcml2LVxcdTAwM2VyZnNfY2hhbl9zcGVjX3NjYW4pO1xcbjEwNTY6XFx0XFx0XFx0c3BlY19wcml2LVxcdTAwM2VyZnNfY2hhbl9zcGVjX3NjYW4gPSBOVUxMO1xcbjEwNTc6XFx0XFx0fVxcbjEwNTg6XFx0fVxcbjEwNTk6XFx0RVhQT1JUX1NZTUJPTChhdGg5a19jbW5fc3BlY3RyYWxfZGVpbml0X2RlYnVnKTtcXG4xMDYwOlxcdFxcbjEwNjE6XFx0dm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsXFxuMTA2MjpcXHRcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX3BoeSxcXG4xMDYzOlxcdFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBhdGhfcnhfc3RhdHMgKnJ4X3N0YXRzKVxcbjEwNjQ6XFx0e1xcbjEwNjU6XFx0XFx0c3BlY19wcml2LVxcdTAwM2VyeF9zdGF0cyA9IHJ4X3N0YXRzO1xcbjEwNjY6XFx0XFx0c3BlY19wcml2LVxcdTAwM2VyZnNfY2hhbl9zcGVjX3NjYW4gPSByZWxheV9vcGVuKFxcXCJzcGVjdHJhbF9zY2FuXFxcIixcXG4xMDY3OlxcdFxcdFxcdFxcdFxcdFxcdCAgICBkZWJ1Z2ZzX3BoeSxcXG4xMDY4OlxcdFxcdFxcdFxcdFxcdFxcdCAgICAxMDI0LCAyNTYsIFxcdTAwMjZyZnNfc3BlY19zY2FuX2NiLFxcbjEwNjk6XFx0XFx0XFx0XFx0XFx0XFx0ICAgIE5VTEwpO1xcbjEwNzA6XFx0XFx0aWYgKCFzcGVjX3ByaXYtXFx1MDAzZXJmc19jaGFuX3NwZWNfc2NhbilcXG4xMDcxOlxcdFxcdFxcdHJldHVybjtcXG4xMDcyOlxcdFxcbjEwNzM6XFx0XFx0ZGVidWdmc19jcmVhdGVfZmlsZShcXFwic3BlY3RyYWxfc2Nhbl9jdGxcXFwiLFxcbjEwNzQ6XFx0XFx0XFx0XFx0ICAgIDA2MDAsXFxuMTA3NTpcXHRcXHRcXHRcXHQgICAgZGVidWdmc19waHksIHNwZWNfcHJpdixcXG4xMDc2OlxcdFxcdFxcdFxcdCAgICBcXHUwMDI2Zm9wc19zcGVjX3NjYW5fY3RsKTtcXG4xMDc3OlxcdFxcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXFxcInNwZWN0cmFsX3Nob3J0X3JlcGVhdFxcXCIsXFxuMTA3ODpcXHRcXHRcXHRcXHQgICAgMDYwMCxcXG4xMDc5OlxcdFxcdFxcdFxcdCAgICBkZWJ1Z2ZzX3BoeSwgc3BlY19wcml2LFxcbjEwODA6XFx0XFx0XFx0XFx0ICAgIFxcdTAwMjZmb3BzX3NwZWN0cmFsX3Nob3J0X3JlcGVhdCk7XFxuMTA4MTpcXHRcXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFxcXCJzcGVjdHJhbF9jb3VudFxcXCIsXFxuMTA4MjpcXHRcXHRcXHRcXHQgICAgMDYwMCxcXG4xMDgzOlxcdFxcdFxcdFxcdCAgICBkZWJ1Z2ZzX3BoeSwgc3BlY19wcml2LFxcbjEwODQ6XFx0XFx0XFx0XFx0ICAgIFxcdTAwMjZmb3BzX3NwZWN0cmFsX2NvdW50KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMDE6MDM6NTEuNTcwMDA3MzQ4WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjc5NTcwNzk3NzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgYXRoOWsgU3BlY3RyYWwgU2NhbiBDb25maWd1cmF0aW9uIGFuZCBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcyBmb3IgdGhpcyBzcGVjdHJhbCBzY2FuIGZ1bmN0aW9uYWxpdHkuIEl0IGxvb2tzIGxpa2UgYEFUSDlLX0NPTU1PTl9TUEVDVFJBTGAgaXMgdGhlIGNvcmUsIGJ1dCBpdCBkZXBlbmRzIG9uIGVpdGhlciBgQVRIOUtfREVCVUdGU2Agb3IgYEFUSDlLX0hUQ19ERUJVR0ZTYC4gRGl2aW5nIGRlZXBlciwgYEFUSDlLX0hUQ19ERUJVR0ZTYCBuZWVkcyBgQVRIOUtfSFRDYCBhbmQgYERFQlVHX0ZTYCwgYW5kIHRoYXQsIGluIHR1cm4sIHJlcXVpcmVzIGBVU0JgIGFuZCBgTUFDODAyMTFgLiBNZWFud2hpbGUsIGBBVEg5S19ERUJVR0ZTYCB3YW50cyBgQVRIOUtgLCBgREVCVUdfRlNgLCBhbmQgYE1BQzgwMjExX0RFQlVHRlNgLiBPZiBjb3Vyc2UsIGBBVEg5S2AgaXRzZWxmIGRlcGVuZHMgb24gYE1BQzgwMjExYC5cblxuTm93LCBJJ2xsIHJldmlldyBhbGwgdGhlIGNvbmZpZ3MgaW52b2x2ZWQ6IGBBVEg5S2AsIGBBVEg5S19IVENgLCBgQVRIOUtfREVCVUdGU2AsIGBBVEg5S19IVENfREVCVUdGU2AsIGBBVEg5S19DT01NT05fU1BFQ1RSQUxgLCBgTUFDODAyMTFgLCBgVVNCYCwgYW5kIGBERUJVR19GU2AuXG5cbk5leHQsIEkgbmVlZCB0byBpZGVudGlmeSB0aGUga2V5IGZ1bmN0aW9ucyBvciBcImZvY3VzIHN5bWJvbHNcIiB0aGF0IGFyZSBiZWluZyB0b3VjaGVkLiBJIHNlZTpcblxuMS4gIGBhdGhfY21uX3Byb2Nlc3NfZmZ0YDogVGhpcyBpcyB0aGUgbWFpbiBGRlQgcHJvY2Vzc2luZyBmdW5jdGlvbiBtb2RpZmllZCBpbiBgY29tbW9uLXNwZWN0cmFsLmNgLlxuMi4gIGBhdGhfY21uX2NvdW50X2ZmdF9zYW1wbGVgOiBJdCdzIGBzdGF0aWNgLCBidXQgSSdsbCBtYWtlIHN1cmUgdG8gY2hlY2sgaXRzIG5vbi1zdGF0aWMgZW50cnkgcG9pbnRzIGp1c3QgaW4gY2FzZS5cbjMuICBgYXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWdgOiBQcm90b3R5cGUgYW5kIGltcGxlbWVudGF0aW9uIGNoYW5nZWQgaW4gYGNvbW1vbi1zcGVjdHJhbC5jYC5cbjQuICBgYXRoOWtfaW5pdF9kZWJ1Z2AgaW4gYGRlYnVnLmNgLlxuNS4gIGBhdGg5a19odGNfaW5pdF9kZWJ1Z2AgaW4gYGh0Y19kcnZfZGVidWcuY2AuXG5cbkknbGwgY2hlY2sgZm9yIGFueSBvdGhlciBzeW1ib2xzIG9yIGNhbGxlcnMuIExvb2tpbmcgc3BlY2lmaWNhbGx5IGF0IGBjb21tb24tc3BlY3RyYWwuY2AsIEkgc2VlIHRoYXQgYGF0aF9jbW5fcHJvY2Vzc19mZnRgIGlzIGNhbGxlZCBieSBgYXRoOWtfcnhfc2tiX3ByZXByb2Nlc3NgIChhdGg5ayByeCBwYXRoKSBhbmQgYGF0aDlrX3J4X3ByZXBhcmVgIChhdGg5a1xcX2h0YyByeCBwYXRoKS4gR29vZCwgSSdsbCBjb25maXJtIHRoYXQgdGhlc2UgYXJlIHByZXNlbnQgaW4gdGhlIGNvZGViYXNlLiBZZXMsIHRoZXkgYXJlLlxuXG5Ob3csIGxldCdzIGFzc2VzcyB0aGUgZnV6emluZyBwb3RlbnRpYWwuIEl0IHNlZW1zIHdlIGhhdmUgYSBnb29kIHNldHVwIGhlcmU6IHJlYWNoYWJsZSB2aWEgVVNCIGdhZGdldCAoZm9yIGBhdGg5a19odGNgIGVtdWxhdGlvbikgYW5kIGRlYnVnZnMsIGNvbWJpbmVkIHdpdGggbmV0ZGV2IGFuZCBubDgwMjExIHJ4IHBhY2tldCBwcm9jZXNzaW5nLiBBbHNvLCB0aGVyZSdzIGEgbW9kaWZpY2F0aW9uIG9mIGV4ZWN1dGFibGUgY29kZSBsb2dpYyB3aXRoaW4gdGhlIHdpcmVsZXNzIGRyaXZlciBzdWJzeXN0ZW0gKGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYCkuIFRoZXJlJ3MgYWxzbyBzb21lIHdvcmsgaW4gUlggc3RhdHMgaGFuZGxpbmcgZm9yIHNwZWN0cmFsIHNjYW4gZnJhbWVzIHRvIGF2b2lkIHBvdGVudGlhbCB0eXBlIG1pc21hdGNoZXMgYmV0d2VlbiBhdGg5ayBhbmQgYXRoOWtcXF9odGMuIEl0J3MgYSBcInllc1wiIGZvciB3b3J0aCBmdXp6aW5nLlxuXG5NeSBsaXN0IG9mIEZvY3VzU3ltYm9scyBzaG91bGQgYmU6IGBhdGhfY21uX3Byb2Nlc3NfZmZ0YCwgYGF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnYCwgYGF0aDlrX2h0Y19pbml0X2RlYnVnYCwgYW5kIGBhdGg5a19pbml0X2RlYnVnYC5cblxuTm93LCBsZXQncyBjaGVjayB0aGF0IGBhdGhfY21uX2NvdW50X2ZmdF9zYW1wbGVgIGZ1bmN0aW9uLiBJdCdzIG1hcmtlZCBgc3RhdGljIHZvaWQgYXRoX2Ntbl9jb3VudF9mZnRfc2FtcGxlYC4gT24gYW1kNjQsIGl0IGNvdWxkIGJlIGlubGluZWQgaW50byBgYXRoX2Ntbl9wcm9jZXNzX2ZmdGAuIFNvIHRoZSBub24tc3RhdGljIGZlYXR1cmUtc3BlY2lmaWMgZW50cnkgcG9pbnRzIGFyZSA6IGBhdGhfY21uX3Byb2Nlc3NfZmZ0YCwgYGF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnYCwgYGF0aDlrX2h0Y19pbml0X2RlYnVnYCwgYW5kIGBhdGg5a19pbml0X2RlYnVnYC5cblxuSSdsbCB2ZXJpZnkgdGhlIEVuYWJsZUNvbmZpZ3Mgbm93OiBgQVRIOUtfQ09NTU9OX1NQRUNUUkFMYCwgYEFUSDlLX0hUQ19ERUJVR0ZTYCwgYEFUSDlLX0RFQlVHRlNgLCBgQVRIOUtfSFRDYCwgYW5kIGBBVEg5S2AuXG5cbkknbGwgZG91YmxlLWNoZWNrIGV2ZXJ5dGhpbmcgb25lIGxhc3QgdGltZS4gSXMgYEFUSDlLX0NPTU1PTl9TUEVDVFJBTGAgYSBib29sZWFuPyBZZXMuIERvZXMgaXQgc2VsZWN0IGBSRUxBWWA/IFllcy4gQXJlIHRoZXJlIGFueSBvdGhlciByZXF1aXJlZCBjb25maWdzPyBOby4gYEFUSDlLYCwgYEFUSDlLX0hUQ2AsIGBBVEg5S19ERUJVR0ZTYCwgYEFUSDlLX0hUQ19ERUJVR0ZTYCwgYEFUSDlLX0NPTU1PTl9TUEVDVFJBTGAsIGBNQUM4MDIxMWAsIGFuZCBgREVCVUdfRlNgLlxuXG5UaW1lIHRvIGNhbGwgYHNldC1yZXN1bHRzYC4gSSdtIHJlYWR5IHRvIG1vdmUgZm9yd2FyZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzkzNDUsIk91dHB1dFRva2VucyI6MjA2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTAyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMDE6MDM6NTkuNTI3MDkwNzc3WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQyMTM5MzA0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJBVEg5S1wiLFxuICAgIFwiQVRIOUtfSFRDXCIsXG4gICAgXCJBVEg5S19ERUJVR0ZTXCIsXG4gICAgXCJBVEg5S19IVENfREVCVUdGU1wiLFxuICAgIFwiQVRIOUtfQ09NTU9OX1NQRUNUUkFMXCIsXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiREVCVUdfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJhdGhfY21uX3Byb2Nlc3NfZmZ0XCIsXG4gICAgXCJhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1Z1wiLFxuICAgIFwiYXRoOWtfaHRjX2luaXRfZGVidWdcIixcbiAgICBcImF0aDlrX2luaXRfZGVidWdcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZWZhY3RvcnMgdGhlIHNwZWN0cmFsIHNjYW4gUlggc3RhdGlzdGljcyBhY2NvdW50aW5nIGluIHRoZSBhdGg5ay9hdGg5a19odGMgd2lyZWxlc3MgZHJpdmVyIHRvIGF2b2lkIGluY29ycmVjdCBzdHJ1Y3QgY2FzdGluZyBiZXR3ZWVuIGF0aDlrIGFuZCBhdGg5a19odGMuIFRoZSBtb2RpZmllZCBjb2RlIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIFVTQiBlbXVsYXRpb24gKGF0aDlrX2h0YykgYW5kIGRlYnVnZnMvd2lyZWxlc3MgUlggZnJhbWUgcHJvY2Vzc2luZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJBVEg5S1wiLFxuICAgIFwiQVRIOUtfSFRDXCIsXG4gICAgXCJBVEg5S19ERUJVR0ZTXCIsXG4gICAgXCJBVEg5S19IVENfREVCVUdGU1wiLFxuICAgIFwiQVRIOUtfQ09NTU9OX1NQRUNUUkFMXCIsXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiREVCVUdfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJhdGhfY21uX3Byb2Nlc3NfZmZ0XCIsXG4gICAgXCJhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1Z1wiLFxuICAgIFwiYXRoOWtfaHRjX2luaXRfZGVidWdcIixcbiAgICBcImF0aDlrX2luaXRfZGVidWdcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZWZhY3RvcnMgdGhlIHNwZWN0cmFsIHNjYW4gUlggc3RhdGlzdGljcyBhY2NvdW50aW5nIGluIHRoZSBhdGg5ay9hdGg5a19odGMgd2lyZWxlc3MgZHJpdmVyIHRvIGF2b2lkIGluY29ycmVjdCBzdHJ1Y3QgY2FzdGluZyBiZXR3ZWVuIGF0aDlrIGFuZCBhdGg5a19odGMuIFRoZSBtb2RpZmllZCBjb2RlIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIFVTQiBlbXVsYXRpb24gKGF0aDlrX2h0YykgYW5kIGRlYnVnZnMvd2lyZWxlc3MgUlggZnJhbWUgcHJvY2Vzc2luZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMDE6MDM6NTkuNjY5MjM5NTAxWiIsIlNlcSI6MjUsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MTUyNjM2NTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMDE6MDM6NTkuNjcwMDIyMjYxWiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6OTE1MTg0ODE4MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVmYWN0b3JzIHNwZWN0cmFsIHNjYW4gUlggc3RhdGlzdGljcyBhY2NvdW50aW5nIGluIHRoZSBhdGg5ayBkcml2ZXIgYnkgcGFzc2luZyBhbiBleHBsaWNpdCBwb2ludGVyIHRvIGBzdHJ1Y3QgYXRoX3J4X3N0YXRzYCBpbiBgYXRoX3NwZWNfc2Nhbl9wcml2YCBpbnN0ZWFkIG9mIGluYXBwcm9wcmlhdGVseSBjYXN0aW5nIGBjb21tb24tXFx1MDAzZXByaXZgIHRvIGBzdHJ1Y3QgYXRoX3NvZnRjICpgICh3aGljaCB3YXMgaW52YWxpZCBmb3IgYGF0aDlrX2h0Y2ApLiBcXG5cXG5UaGlzIGNoYW5nZSBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgbW9kaWZ5IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGhhbmRsaW5nLCB1bmluaXRpYWxpemVkIGJyYW5jaGluZywgb3Iga2VybmVsLXRvLXVzZXIgaW5mbyBsZWFrcy4gQW55IG1lbW9yeSBhY2Nlc3MgaXNzdWVzIHJlbGF0ZWQgdG8gaW52YWxpZCBwb2ludGVyIGRlcmVmZXJlbmNpbmcgb3Igc3RydWN0IGNhc3RpbmcgYXJlIGNhdWdodCBieSBLQVNBTiBvciBzdGFuZGFyZCBrZXJuZWwgZmF1bHQgaGFuZGxlcnMuIFRoZXJlZm9yZSwgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDBkNWQ0ZGI4ZDhhNjU5NWE5NWJlODcwNzk4NWZjMTMzZGUxMjY0NDJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IFNlcCA1IDAxOjAzOjE5IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jXG5pbmRleCBjYTAxYTA3ZjY2MzBjLi5kOGJlMjRlYmNkMjQ3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmNcbkBAIC00NjUsNiArNDY1LDIwIEBAIGF0aF9jbW5faXNfZmZ0X2J1Zl9mdWxsKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdilcbiBcdFx0cmV0dXJuIDA7XG4gfVxuIFxuK3N0YXRpYyB2b2lkIGF0aF9jbW5fY291bnRfZmZ0X3NhbXBsZShzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsXG4rXHRcdFx0XHQgICAgIGludCByZXQpXG4re1xuK1x0c3RydWN0IGF0aF9yeF9zdGF0cyAqcnhfc3RhdHMgPSBzcGVjX3ByaXYtXHUwMDNlcnhfc3RhdHM7XG4rXG4rXHRpZiAoIXJ4X3N0YXRzKVxuK1x0XHRyZXR1cm47XG4rXG4rXHRpZiAocmV0ID09IDApXG4rXHRcdHJ4X3N0YXRzLVx1MDAzZXJ4X3NwZWN0cmFsX3NhbXBsZV9nb29kKys7XG4rXHRlbHNlXG4rXHRcdHJ4X3N0YXRzLVx1MDAzZXJ4X3NwZWN0cmFsX3NhbXBsZV9lcnIrKztcbit9XG4rXG4gLyogcmV0dXJucyAxIGlmIHRoaXMgd2FzIGEgc3BlY3RyYWwgZnJhbWUsIGV2ZW4gaWYgbm90IGhhbmRsZWQuICovXG4gaW50IGF0aF9jbW5fcHJvY2Vzc19mZnQoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LCBzdHJ1Y3QgaWVlZTgwMjExX2hkciAqaGRyLFxuIFx0XHQgICAgc3RydWN0IGF0aF9yeF9zdGF0dXMgKnJzLCB1NjQgdHNmKVxuQEAgLTQ3Miw3ICs0ODYsNiBAQCBpbnQgYXRoX2Ntbl9wcm9jZXNzX2ZmdChzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsIHN0cnVjdCBpZWVlODAyMTFfaFxuIFx0dTggc2FtcGxlX2J1ZltTUEVDVFJBTF9TQU1QTEVfTUFYX0xFTl0gPSB7MH07XG4gXHRzdHJ1Y3QgYXRoX2h3ICphaCA9IHNwZWNfcHJpdi1cdTAwM2VhaDtcbiBcdHN0cnVjdCBhdGhfY29tbW9uICpjb21tb24gPSBhdGg5a19od19jb21tb24oc3BlY19wcml2LVx1MDAzZWFoKTtcbi1cdHN0cnVjdCBhdGhfc29mdGMgKnNjID0gY29tbW9uLVx1MDAzZXByaXY7XG4gXHR1OCBudW1fYmlucywgKnZkYXRhID0gKHU4ICopaGRyO1xuIFx0c3RydWN0IGF0aF9yYWRhcl9pbmZvICpyYWRhcl9pbmZvO1xuIFx0aW50IGxlbiA9IHJzLVx1MDAzZXJzX2RhdGFsZW47XG5AQCAtNjI0LDEwICs2MzcsNyBAQCBpbnQgYXRoX2Ntbl9wcm9jZXNzX2ZmdChzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsIHN0cnVjdCBpZWVlODAyMTFfaFxuIFx0XHRcdFx0cmV0ID0gZmZ0X2hhbmRsZXIocnMsIHNwZWNfcHJpdiwgc2FtcGxlX2J1ZixcbiBcdFx0XHRcdFx0XHQgIHRzZiwgZnJlcSwgY2hhbl90eXBlKTtcbiBcbi1cdFx0XHRcdGlmIChyZXQgPT0gMClcbi1cdFx0XHRcdFx0UlhfU1RBVF9JTkMoc2MsIHJ4X3NwZWN0cmFsX3NhbXBsZV9nb29kKTtcbi1cdFx0XHRcdGVsc2Vcbi1cdFx0XHRcdFx0UlhfU1RBVF9JTkMoc2MsIHJ4X3NwZWN0cmFsX3NhbXBsZV9lcnIpO1xuK1x0XHRcdFx0YXRoX2Ntbl9jb3VudF9mZnRfc2FtcGxlKHNwZWNfcHJpdiwgcmV0KTtcbiBcbiBcdFx0XHRcdC8qIE1peCB0aGUgcmVjZWl2ZWQgYmlucyB0byB0aGUgL2Rldi9yYW5kb21cbiBcdFx0XHRcdCAqIHBvb2xcbkBAIC02NDIsMTAgKzY1Miw3IEBAIGludCBhdGhfY21uX3Byb2Nlc3NfZmZ0KHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiwgc3RydWN0IGllZWU4MDIxMV9oXG4gXHRcdFx0XHRyZXQgPSBmZnRfaGFuZGxlcihycywgc3BlY19wcml2LCBzYW1wbGVfc3RhcnQsXG4gXHRcdFx0XHRcdFx0ICB0c2YsIGZyZXEsIGNoYW5fdHlwZSk7XG4gXG4tXHRcdFx0XHRpZiAocmV0ID09IDApXG4tXHRcdFx0XHRcdFJYX1NUQVRfSU5DKHNjLCByeF9zcGVjdHJhbF9zYW1wbGVfZ29vZCk7XG4tXHRcdFx0XHRlbHNlXG4tXHRcdFx0XHRcdFJYX1NUQVRfSU5DKHNjLCByeF9zcGVjdHJhbF9zYW1wbGVfZXJyKTtcbitcdFx0XHRcdGF0aF9jbW5fY291bnRfZmZ0X3NhbXBsZShzcGVjX3ByaXYsIHJldCk7XG4gXG4gXHRcdFx0XHQvKiBNaXggdGhlIHJlY2VpdmVkIGJpbnMgdG8gdGhlIC9kZXYvcmFuZG9tXG4gXHRcdFx0XHQgKiBwb29sXG5AQCAtMTA1Miw4ICsxMDU5LDEwIEBAIHZvaWQgYXRoOWtfY21uX3NwZWN0cmFsX2RlaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYpXG4gRVhQT1JUX1NZTUJPTChhdGg5a19jbW5fc3BlY3RyYWxfZGVpbml0X2RlYnVnKTtcbiBcbiB2b2lkIGF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdixcbi1cdFx0XHRcdCAgIHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcGh5KVxuK1x0XHRcdFx0ICAgc3RydWN0IGRlbnRyeSAqZGVidWdmc19waHksXG4rXHRcdFx0XHQgICBzdHJ1Y3QgYXRoX3J4X3N0YXRzICpyeF9zdGF0cylcbiB7XG4rXHRzcGVjX3ByaXYtXHUwMDNlcnhfc3RhdHMgPSByeF9zdGF0cztcbiBcdHNwZWNfcHJpdi1cdTAwM2VyZnNfY2hhbl9zcGVjX3NjYW4gPSByZWxheV9vcGVuKFwic3BlY3RyYWxfc2NhblwiLFxuIFx0XHRcdFx0XHQgICAgZGVidWdmc19waHksXG4gXHRcdFx0XHRcdCAgICAxMDI0LCAyNTYsIFx1MDAyNnJmc19zcGVjX3NjYW5fY2IsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oXG5pbmRleCAwMTFkOGFiOGI5NzQ0Li4wZTJjN2Q2ZDM0ODc0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmhcbkBAIC05NCwxMiArOTQsMTYgQEAgc3RydWN0IGF0aF9odDIwXzQwX2ZmdF9wYWNrZXQge1xuIFx0c3RydWN0IGF0aF9yYWRhcl9pbmZvIHJhZGFyX2luZm87XG4gfSBfX3BhY2tlZDtcbiBcbitzdHJ1Y3QgYXRoX3J4X3N0YXRzO1xuK1xuIHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYge1xuIFx0c3RydWN0IGF0aF9odyAqYWg7XG4gXHQvKiByZWxheShmcykgY2hhbm5lbCBmb3Igc3BlY3RyYWwgc2NhbiAqL1xuIFx0c3RydWN0IHJjaGFuICpyZnNfY2hhbl9zcGVjX3NjYW47XG4gXHRlbnVtIHNwZWN0cmFsX21vZGUgc3BlY3RyYWxfbW9kZTtcbiBcdHN0cnVjdCBhdGhfc3BlY19zY2FuIHNwZWNfY29uZmlnO1xuK1x0LyogZHJpdmVyJ3MgUlggc3RhdGlzdGljcyB0byBhY2NvdW50IHNhbXBsZXMgaW50bywgaWYgYW55ICovXG4rXHRzdHJ1Y3QgYXRoX3J4X3N0YXRzICpyeF9zdGF0cztcbiB9O1xuIFxuICNkZWZpbmUgU1BFQ1RSQUxfSFQyMF80MF9UT1RBTF9EQVRBX0xFTlx0KHNpemVvZihzdHJ1Y3QgYXRoX2h0MjBfNDBfZmZ0X3BhY2tldCkpXG5AQCAtMTY5LDcgKzE3Myw5IEBAIHN0YXRpYyBpbmxpbmUgdTggc3BlY3RyYWxfYml0bWFwX3dlaWdodCh1OCAqYmlucylcbiB9XG4gXG4gI2lmZGVmIENPTkZJR19BVEg5S19DT01NT05fU1BFQ1RSQUxcbi12b2lkIGF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiwgc3RydWN0IGRlbnRyeSAqZGVidWdmc19waHkpO1xuK3ZvaWQgYXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LFxuK1x0XHRcdFx0ICAgc3RydWN0IGRlbnRyeSAqZGVidWdmc19waHksXG4rXHRcdFx0XHQgICBzdHJ1Y3QgYXRoX3J4X3N0YXRzICpyeF9zdGF0cyk7XG4gdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfZGVpbml0X2RlYnVnKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdik7XG4gXG4gdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfc2Nhbl90cmlnZ2VyKHN0cnVjdCBhdGhfY29tbW9uICpjb21tb24sXG5AQCAtMTgxLDcgKzE4Nyw4IEBAIGludCBhdGhfY21uX3Byb2Nlc3NfZmZ0KHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiwgc3RydWN0IGllZWU4MDIxMV9oXG4gXHRcdCAgICBzdHJ1Y3QgYXRoX3J4X3N0YXR1cyAqcnMsIHU2NCB0c2YpO1xuICNlbHNlXG4gc3RhdGljIGlubGluZSB2b2lkIGF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdixcbi1cdFx0XHRcdFx0XHQgc3RydWN0IGRlbnRyeSAqZGVidWdmc19waHkpXG4rXHRcdFx0XHRcdFx0IHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcGh5LFxuK1x0XHRcdFx0XHRcdCBzdHJ1Y3QgYXRoX3J4X3N0YXRzICpyeF9zdGF0cylcbiB7XG4gfVxuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZWJ1Zy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2RlYnVnLmNcbmluZGV4IDc0YTAxMzQwNzVjZjkuLjA0MmE0ZjU0MmE5NDMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGVidWcuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2RlYnVnLmNcbkBAIC0xMzg5LDcgKzEzODksOCBAQCBpbnQgYXRoOWtfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX2h3ICphaClcbiBcbiBcdGF0aDlrX2Rmc19pbml0X2RlYnVnKHNjKTtcbiBcdGF0aDlrX3R4OTlfaW5pdF9kZWJ1ZyhzYyk7XG4tXHRhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhcdTAwMjZzYy1cdTAwM2VzcGVjX3ByaXYsIHNjLVx1MDAzZWRlYnVnLmRlYnVnZnNfcGh5KTtcbitcdGF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnKFx1MDAyNnNjLVx1MDAzZXNwZWNfcHJpdiwgc2MtXHUwMDNlZGVidWcuZGVidWdmc19waHksXG4rXHRcdFx0XHQgICAgICBcdTAwMjZzYy1cdTAwM2VkZWJ1Zy5zdGF0cy5yeHN0YXRzKTtcbiBcbiBcdGRlYnVnZnNfY3JlYXRlX2Rldm1fc2VxZmlsZShzYy1cdTAwM2VkZXYsIFwiZG1hXCIsIHNjLVx1MDAzZWRlYnVnLmRlYnVnZnNfcGh5LFxuIFx0XHRcdFx0ICAgIHJlYWRfZmlsZV9kbWEpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jXG5pbmRleCA5NDM3ZDY5ODc3Y2M1Li45ZDM1NGIxZDkyOWM4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuY1xuQEAgLTQ4Nyw3ICs0ODcsOCBAQCBpbnQgYXRoOWtfaHRjX2luaXRfZGVidWcoc3RydWN0IGF0aF9odyAqYWgpXG4gXHRwcml2LVx1MDAzZWRlYnVnLmRlYnVnZnNfcGh5ID0gZGVidWdmc19jcmVhdGVfZGlyKEtCVUlMRF9NT0ROQU1FLFxuIFx0XHRcdFx0XHQgICAgIHByaXYtXHUwMDNlaHctXHUwMDNld2lwaHktXHUwMDNlZGVidWdmc2Rpcik7XG4gXG4tXHRhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhcdTAwMjZwcml2LVx1MDAzZXNwZWNfcHJpdiwgcHJpdi1cdTAwM2VkZWJ1Zy5kZWJ1Z2ZzX3BoeSk7XG4rXHRhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhcdTAwMjZwcml2LVx1MDAzZXNwZWNfcHJpdiwgcHJpdi1cdTAwM2VkZWJ1Zy5kZWJ1Z2ZzX3BoeSxcbitcdFx0XHRcdCAgICAgIFx1MDAyNnByaXYtXHUwMDNlZGVidWcucnhfc3RhdHMpO1xuIFxuIFx0ZGVidWdmc19jcmVhdGVfZmlsZShcInRndF9pbnRfc3RhdHNcIiwgMDQwMCwgcHJpdi1cdTAwM2VkZWJ1Zy5kZWJ1Z2ZzX3BoeSxcbiBcdFx0XHQgICAgcHJpdiwgXHUwMDI2Zm9wc190Z3RfaW50X3N0YXRzKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDAxOjAzOjU5LjY3MDAyMzQ3MVoiLCJTZXEiOjI3LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1OTM3NTc0MDYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2ggZm9yIEtNU0FOIEZ1enppbmcgTmVlZHMqKlxuXG5Pa2F5LCBsZXQncyB0YWtlIGEgbG9vayBhdCB0aGlzIHBhdGNoIGFuZCBkZWNpZGUgaWYgaXQgd2FycmFudHMgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uLiBUaGUgZGlmZiBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiBpdCdzIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5a2AgZGlyZWN0b3J5LiBTcGVjaWZpY2FsbHksIGNoYW5nZXMgaW4gYGNvbW1vbi1zcGVjdHJhbC5jYCwgYGNvbW1vbi1zcGVjdHJhbC5oYCwgYGRlYnVnLmNgLCBhbmQgYGh0Y19kcnZfZGVidWcuY2AuXG5cbkl0IGxvb2tzIGxpa2UgdGhlIGNvcmUgb2YgdGhlIGNoYW5nZSByZXZvbHZlcyBhcm91bmQgYSB0eXBlIHNhZmV0eSBpc3N1ZS4gVGhleSd2ZSBpbnRyb2R1Y2VkIGEgaGVscGVyIGZ1bmN0aW9uLCBgYXRoX2Ntbl9jb3VudF9mZnRfc2FtcGxlYCwgdG8gcmVwbGFjZSBkaXJlY3QgY291bnRlciBpbmNyZW1lbnRzIHdpdGhpbiB0aGUgYGF0aF9yeF9zdGF0c2Agc3RydWN0dXJlLiBUaGUgb2xkIGNvZGUgd2FzIGFzc3VtaW5nIHRoYXQgYGNvbW1vbi1cdTAwM2Vwcml2YCB3aXRoaW4gYGF0aDlrX2h0Y2Agd2FzIGEgYHN0cnVjdCBhdGhfc29mdGMgKmAsIGJ1dCBpdCBjb3VsZCBiZSBzb21ldGhpbmcgZWxzZSwgbGVhZGluZyB0byB0eXBlIGNvbmZ1c2lvbiBhbmQgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uIHdoZW4gYWNjZXNzaW5nIHRoZSBzdGF0cy4gVGhlIGZpeCBpbnZvbHZlcyBwYXNzaW5nIHRoZSBgYXRoX3J4X3N0YXRzYCBwb2ludGVyIGRpcmVjdGx5LCBlbnN1cmluZyB0aGUgY29ycmVjdCBzdHJ1Y3R1cmUgaXMgdXNlZC4gU28sIHRoZSBvcmlnaW5hbCBjb2RlIGhhZCBwb2ludGVyIGNvbmZ1c2lvbiBhbmQgd2FzIG5vdCBjb3JyZWN0bHkgZGVyZWZlcmVuY2luZyBzdGF0cy5cblxuTm93LCB0aGUgaW1wb3J0YW50IHBhcnQ6IEtNU0FOLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGlzIHBhdGNoIGludHJvZHVjZXMgYW55IG5ldyB2dWxuZXJhYmlsaXRpZXMgdGhhdCBLTVNBTiB3b3VsZCBiZSBnb29kIGF0IGZpbmRpbmcuIExldCdzIHNlZS4uLlxuXG5GaXJzdCwgYXJlIHRoZXJlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBwb3RlbnRpYWwgaW5mbyBsZWFrcyB0byB1c2VyIHNwYWNlLCBvciB1bmluaXRpYWxpemVkIGJ1ZmZlciB1c2FnZXMgaW52b2x2ZWQ/IE5vLiBUaGUgcGF0Y2ggb25seSBpbmNyZW1lbnRzIGNvdW50ZXIgc3RhdGlzdGljcyBpbiBhbiBleGlzdGluZyBgYXRoX3J4X3N0YXRzYCBzdHJ1Y3QuIE5vIG5ldyBzdHJ1Y3R1cmVzIGFyZSBpbnRyb2R1Y2VkIHRoYXQgYXJlIHNlbnQgdG8gdXNlciBzcGFjZS5cblxuTmV4dCwgY29uZGl0aW9uYWwgbG9naWMgZGVwZW5kZW50IG9uIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzPyBOb3BlLiBJdCBkb2VzIGEgY2hlY2sgZm9yIGByeF9zdGF0c2AgYW5kIHRoZSByZXR1cm4gdmFsdWUgb2YgYHJldGAsIGJ1dCB0aGUgYHJ4X3N0YXRzYCBwb2ludGVyIGlzIGluaXRpYWxpemVkLlxuXG5Ib3cgYWJvdXQgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2l0aCB1bmluaXRpYWxpemVkIGZpZWxkcz8gQWdhaW4sIG5vLiBJdCBsb29rcyBsaWtlIGBhdGhfcnhfc3RhdHNgIGlzIHRoZSBzYW1lIHN0cnVjdCBhcyBiZWZvcmUuXG5cbkRvZXMgdGhlIHBhdGNoIGNoYW5nZSBib3VuZHMgY2hlY2tzIG9yIGxlbmd0aHMgaW4gYSB3YXkgdGhhdCBtaWdodCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnk/IE5vIGNoYW5nZXMgaGVyZSBlaXRoZXIuXG5cblNvLCB3aGF0IGtpbmQgb2YgYnVnIHdhcyBmaXhlZD8gVGhlIHBhdGNoIGFkZHJlc3NlcyBhIGRyaXZlciBwb2ludGVyIC8gdHlwZSBjb25mdXNpb24gb3IgTlVMTCBkZXJlZmVyZW5jZS4gVGhlIHByZXZpb3VzIGFzc3VtcHRpb24gYWJvdXQgdGhlIGBjb21tb24tXHUwMDNlcHJpdmAgdHlwZSBjYXVzZWQgaXNzdWVzLiBUaGlzIHNvdW5kcyBsaWtlIHRoZSB0eXBlIG9mIGJ1ZyB0aGF0IGNvdWxkIG1hbmlmZXN0IGFzIEtBU0FOIC8gR1BGIC8gZ2VuZXJhbCBkZXRlY3RvciBpc3N1ZXMg4oCTIGRlZmluaXRlbHkgbWVtb3J5IHNhZmV0eSBjb25jZXJucywgYnV0IG1vcmUgaW4gdGhlIHJlYWxtIG9mIHBvaW50ZXIgZXJyb3JzIHRoYW4gdW5pbml0aWFsaXplZCByZWFkcy4gSXQncyBlc3NlbnRpYWxseSBmaXhpbmcgYSBidWcgd2hlcmUgd2Ugd2VyZSBkZXJlZmVyZW5jaW5nIGFuIGludmFsaWQgcG9pbnRlciBvciBkZXJlZmVyZW5jaW5nIGEgcG9pbnRlciB0byBhbiBpbmNvcnJlY3QgZGF0YSBzdHJ1Y3R1cmUuXG5cbk9rYXksIGxldCdzIGp1c3QgZG8gYSBxdWljayBgZ3JlcHBlcmAgc2VhcmNoIHdpdGhpbiB0aGUgcmVwbyB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gSSBoYXZlbid0IG1pc3NlZCBhbnl0aGluZy4gSSdtIGdvaW5nIHRvIHNlYXJjaCBmb3IgaW5zdGFuY2VzIG9mIHRoZSBzdHJ1Y3RzIGFuZCBmdW5jdGlvbnMgaW52b2x2ZWQgdG8gYmUgY29tcGxldGVseSBzdXJlLiBKdXN0IHRvIGJlIG9uIHRoZSBzYWZlIHNpZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyNjksIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MTAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQwMTowNDowNS42MDc2MDAxMzFaIiwiU2VxIjoyOCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MzQ3NzIzMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJyeF9zcGVjdHJhbF9zYW1wbGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tZGVidWcuYz0xMjQ9c3RhdGljIHNzaXplX3QgcmVhZF9maWxlX3JlY3Yoc3RydWN0IGZpbGUgKmZpbGUsIGNoYXIgX191c2VyICp1c2VyX2J1ZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tZGVidWcuYy0xNDctXFx0UlhTX0VSUihcXFwiU1BFQ1RSQUxcXFwiLCByeF9zcGVjdHJhbCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1kZWJ1Zy5jOjE0ODpcXHRSWFNfRVJSKFxcXCJTUEVDVFJBTCBTTVBMIEdPT0RcXFwiLCByeF9zcGVjdHJhbF9zYW1wbGVfZ29vZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1kZWJ1Zy5jOjE0OTpcXHRSWFNfRVJSKFxcXCJTUEVDVFJBTCBTTVBMIEVSUlxcXCIsIHJ4X3NwZWN0cmFsX3NhbXBsZV9lcnIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tZGVidWcuYy0xNTAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLWRlYnVnLmgtNDEtICogQHJ4X3NwZWN0cmFsOiBObyBvZiBzcGVjdHJhbCBwYWNrZXRzIHJlY2VpdmVkLlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tZGVidWcuaDo0MjogKiBAcnhfc3BlY3RyYWxfc2FtcGxlX2dvb2Q6IE5vLiBvZiBnb29kIHNwZWN0cmFsIHNhbXBsZXNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLWRlYnVnLmg6NDM6ICogQHJ4X3NwZWN0cmFsX3NhbXBsZV9lcnI6IE5vLiBvZiBnb29kIHNwZWN0cmFsIHNhbXBsZXNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLWRlYnVnLmgtNDQtICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1kZWJ1Zy5oPTQ1PXN0cnVjdCBhdGhfcnhfc3RhdHMge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1kZWJ1Zy5oLTYyLVxcdHUzMiByeF9zcGVjdHJhbDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLWRlYnVnLmg6NjM6XFx0dTMyIHJ4X3NwZWN0cmFsX3NhbXBsZV9nb29kO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tZGVidWcuaDo2NDpcXHR1MzIgcnhfc3BlY3RyYWxfc2FtcGxlX2VycjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLWRlYnVnLmgtNjUtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYz00Njg9c3RhdGljIHZvaWQgYXRoX2Ntbl9jb3VudF9mZnRfc2FtcGxlKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy00NzYtXFx0aWYgKHJldCA9PSAwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo0Nzc6XFx0XFx0cnhfc3RhdHMtXFx1MDAzZXJ4X3NwZWN0cmFsX3NhbXBsZV9nb29kKys7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTQ3OC1cXHRlbHNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjQ3OTpcXHRcXHRyeF9zdGF0cy1cXHUwMDNlcnhfc3BlY3RyYWxfc2FtcGxlX2VycisrO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy00ODAtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQwMTowNDowNi4wODEwODY5ODJaIiwiU2VxIjoyOSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Mjc0MDc1ODU1OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFJlZmFjdG9yaW5nIGFuZCBNZW1vcnkgU2FmZXR5KipcblxuT2theSwgc28gSSd2ZSBiZWVuIHJldmlld2luZyB0aGlzIHBhdGNoLiBTZWVtcyBwcmV0dHkgY2xlYW4tY3V0LiBUaGUgY29yZSBvZiBpdCBpbnZvbHZlcyBob3cgYGF0aF9zcGVjX3NjYW5fcHJpdmAgaW50ZXJhY3RzIHdpdGggdGhlIFJYIHN0YXRpc3RpY3MuIFRoZSByZWZhY3RvciBqdXN0IG1ha2VzIHRoZSBhY2Nlc3MgY2xlYW5lciBhbmQgbW9yZSBkaXJlY3QsIGxldHRpbmcgYm90aCBgYXRoOWtgIGFuZCBgYXRoOWtfaHRjYCBwcm92aWRlIHRoZWlyIGBzdHJ1Y3QgYXRoX3J4X3N0YXRzICpgIHBvaW50ZXIgdXBmcm9udCBkdXJpbmcgc3BlY3RyYWwgZGVidWcgaW5pdGlhbGl6YXRpb24uIFRoaXMgZWxpbWluYXRlcyB0aGUgbmVlZCBmb3IgdGhhdCBgY29tbW9uLVx1MDAzZXByaXZgIGNhc3QsIHdoaWNoIGlzIGFsd2F5cyBzb21ldGhpbmcgdG8gd2F0Y2ggb3V0IGZvci5cblxuSSd2ZSBnb25lIHRocm91Z2ggaXQgd2l0aCBhIGZpbmUtdG9vdGggY29tYiwgYW5kIEknbSBub3Qgc2VlaW5nIGFueSByZWQgZmxhZ3MgcmVnYXJkaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBObyBpbmRpY2F0aW9ucyBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSwgYWxsb2NhdGluZyB1bmluaXRpYWxpemVkIG1lbW9yeSwgbGVha3MgdG8gdXNlciBzcGFjZSwgb3IgYnJhbmNoZXMgYmFzZWQgb24gdW5pbml0aWFsaXplZCBtZW1vcnkuIEdpdmVuIHRoYXQgdGhvcm91Z2ggaW5zcGVjdGlvbiwgdGhlIGBOZWVkc0tNU0FOYCBmbGFnIGlzIGRlZmluaXRpdmVseSBmYWxzZSBpbiB0aGlzIGNhc2UuXG5cbkFscmlnaHQsIHdpdGggYWxsIHRoYXQgb3V0IG9mIHRoZSB3YXksIEknbSBjb21mb3J0YWJsZSBjYWxsaW5nIGBzZXQtcmVzdWx0c2AuIEl0J3MgYSBzb2xpZCwgc2FmZSByZWZhY3RvcmluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjMwMiwiT3V0cHV0VG9rZW5zIjoxNjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMDE6MDQ6MDguODIxODQ3ODAxWiIsIlNlcSI6MzAsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk4NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZWZhY3RvcnMgc3BlY3RyYWwgc2NhbiBSWCBzdGF0aXN0aWNzIGFjY291bnRpbmcgaW4gdGhlIGF0aDlrIGRyaXZlciBieSBwYXNzaW5nIGFuIGV4cGxpY2l0IHBvaW50ZXIgdG8gYHN0cnVjdCBhdGhfcnhfc3RhdHNgIGluIGBhdGhfc3BlY19zY2FuX3ByaXZgIGluc3RlYWQgb2YgaW5hcHByb3ByaWF0ZWx5IGNhc3RpbmcgYGNvbW1vbi1cXHUwMDNlcHJpdmAgdG8gYHN0cnVjdCBhdGhfc29mdGMgKmAgKHdoaWNoIHdhcyBpbnZhbGlkIGZvciBgYXRoOWtfaHRjYCkuIFxcblxcblRoaXMgY2hhbmdlIGRvZXMgbm90IGludHJvZHVjZSBvciBtb2RpZnkgdW5pbml0aWFsaXplZCBtZW1vcnkgaGFuZGxpbmcsIHVuaW5pdGlhbGl6ZWQgYnJhbmNoaW5nLCBvciBrZXJuZWwtdG8tdXNlciBpbmZvIGxlYWtzLiBBbnkgbWVtb3J5IGFjY2VzcyBpc3N1ZXMgcmVsYXRlZCB0byBpbnZhbGlkIHBvaW50ZXIgZGVyZWZlcmVuY2luZyBvciBzdHJ1Y3QgY2FzdGluZyBhcmUgY2F1Z2h0IGJ5IEtBU0FOIG9yIHN0YW5kYXJkIGtlcm5lbCBmYXVsdCBoYW5kbGVycy4gVGhlcmVmb3JlLCBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVmYWN0b3JzIHNwZWN0cmFsIHNjYW4gUlggc3RhdGlzdGljcyBhY2NvdW50aW5nIGluIHRoZSBhdGg5ayBkcml2ZXIgYnkgcGFzc2luZyBhbiBleHBsaWNpdCBwb2ludGVyIHRvIGBzdHJ1Y3QgYXRoX3J4X3N0YXRzYCBpbiBgYXRoX3NwZWNfc2Nhbl9wcml2YCBpbnN0ZWFkIG9mIGluYXBwcm9wcmlhdGVseSBjYXN0aW5nIGBjb21tb24tXFx1MDAzZXByaXZgIHRvIGBzdHJ1Y3QgYXRoX3NvZnRjICpgICh3aGljaCB3YXMgaW52YWxpZCBmb3IgYGF0aDlrX2h0Y2ApLiBcXG5cXG5UaGlzIGNoYW5nZSBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgbW9kaWZ5IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGhhbmRsaW5nLCB1bmluaXRpYWxpemVkIGJyYW5jaGluZywgb3Iga2VybmVsLXRvLXVzZXIgaW5mbyBsZWFrcy4gQW55IG1lbW9yeSBhY2Nlc3MgaXNzdWVzIHJlbGF0ZWQgdG8gaW52YWxpZCBwb2ludGVyIGRlcmVmZXJlbmNpbmcgb3Igc3RydWN0IGNhc3RpbmcgYXJlIGNhdWdodCBieSBLQVNBTiBvciBzdGFuZGFyZCBrZXJuZWwgZmF1bHQgaGFuZGxlcnMuIFRoZXJlZm9yZSwgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowrmcdq[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-05 01:01:45 +0000 UTC FinishedAt: 2026-09-05 01:04:09 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "ca800a9302764c445de0da0e84d2252400a770ee", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ATH9K", "ATH9K_HTC", "ATH9K_DEBUGFS", "ATH9K_HTC_DEBUGFS", "ATH9K_COMMON_SPECTRAL", "MAC80211", "DEBUG_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "ca800a9302764c445de0da0e84d2252400a770ee", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ATH9K", "ATH9K_HTC", "ATH9K_DEBUGFS", "ATH9K_HTC_DEBUGFS", "ATH9K_COMMON_SPECTRAL", "MAC80211", "DEBUG_FS" ], "series_id": "bd25a7b5-2eee-4ee2-aa26-3c88891de699" }, "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+CgkJCTx0ZD4yMDI2LzA5LzA1IDAxOjAzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FUSDlLJiMzNDssCiAgICAmIzM0O0FUSDlLX0hUQyYjMzQ7LAogICAgJiMzNDtBVEg5S19ERUJVR0ZTJiMzNDssCiAgICAmIzM0O0FUSDlLX0hUQ19ERUJVR0ZTJiMzNDssCiAgICAmIzM0O0FUSDlLX0NPTU1PTl9TUEVDVFJBTCYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtERUJVR19GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2F0aF9jbW5fcHJvY2Vzc19mZnQmIzM0OywKICAgICYjMzQ7YXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcmIzM0OywKICAgICYjMzQ7YXRoOWtfaHRjX2luaXRfZGVidWcmIzM0OywKICAgICYjMzQ7YXRoOWtfaW5pdF9kZWJ1ZyYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlZmFjdG9ycyBzcGVjdHJhbCBzY2FuIFJYIHN0YXRpc3RpY3MgYWNjb3VudGluZyBpbiB0aGUgYXRoOWsgZHJpdmVyIGJ5IHBhc3NpbmcgYW4gZXhwbGljaXQgcG9pbnRlciB0byBgc3RydWN0IGF0aF9yeF9zdGF0c2AgaW4gYGF0aF9zcGVjX3NjYW5fcHJpdmAgaW5zdGVhZCBvZiBpbmFwcHJvcHJpYXRlbHkgY2FzdGluZyBgY29tbW9uLVx1MDAzZXByaXZgIHRvIGBzdHJ1Y3QgYXRoX3NvZnRjICpgICh3aGljaCB3YXMgaW52YWxpZCBmb3IgYGF0aDlrX2h0Y2ApLiBcblxuVGhpcyBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIG9yIG1vZGlmeSB1bmluaXRpYWxpemVkIG1lbW9yeSBoYW5kbGluZywgdW5pbml0aWFsaXplZCBicmFuY2hpbmcsIG9yIGtlcm5lbC10by11c2VyIGluZm8gbGVha3MuIEFueSBtZW1vcnkgYWNjZXNzIGlzc3VlcyByZWxhdGVkIHRvIGludmFsaWQgcG9pbnRlciBkZXJlZmVyZW5jaW5nIG9yIHN0cnVjdCBjYXN0aW5nIGFyZSBjYXVnaHQgYnkgS0FTQU4gb3Igc3RhbmRhcmQga2VybmVsIGZhdWx0IGhhbmRsZXJzLiBUaGVyZWZvcmUsIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVmYWN0b3JzIHRoZSBzcGVjdHJhbCBzY2FuIFJYIHN0YXRpc3RpY3MgYWNjb3VudGluZyBpbiB0aGUgYXRoOWsvYXRoOWtfaHRjIHdpcmVsZXNzIGRyaXZlciB0byBhdm9pZCBpbmNvcnJlY3Qgc3RydWN0IGNhc3RpbmcgYmV0d2VlbiBhdGg5ayBhbmQgYXRoOWtfaHRjLiBUaGUgbW9kaWZpZWQgY29kZSBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBVU0IgZW11bGF0aW9uIChhdGg5a19odGMpIGFuZCBkZWJ1Z2ZzL3dpcmVsZXNzIFJYIGZyYW1lIHByb2Nlc3NpbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMDE6MDM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAwZDVkNGRiOGQ4YTY1OTVhOTViZTg3MDc5ODVmYzEzM2RlMTI2NDQyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBTZXAgNSAwMTowMzoxOSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmNcbmluZGV4IGNhMDFhMDdmNjYzMGMuLmQ4YmUyNGViY2QyNDcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuY1xuQEAgLTQ2NSw2ICYjNDM7NDY1LDIwIEBAIGF0aF9jbW5faXNfZmZ0X2J1Zl9mdWxsKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdilcbiBcdFx0cmV0dXJuIDA7XG4gfVxuIFxuJiM0MztzdGF0aWMgdm9pZCBhdGhfY21uX2NvdW50X2ZmdF9zYW1wbGUoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LFxuJiM0MztcdFx0XHRcdCAgICAgaW50IHJldClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBhdGhfcnhfc3RhdHMgKnJ4X3N0YXRzID0gc3BlY19wcml2LVx1MDAzZXJ4X3N0YXRzO1xuJiM0MztcbiYjNDM7XHRpZiAoIXJ4X3N0YXRzKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiYjNDM7XHRpZiAocmV0ID09IDApXG4mIzQzO1x0XHRyeF9zdGF0cy1cdTAwM2VyeF9zcGVjdHJhbF9zYW1wbGVfZ29vZCYjNDM7JiM0Mzs7XG4mIzQzO1x0ZWxzZVxuJiM0MztcdFx0cnhfc3RhdHMtXHUwMDNlcnhfc3BlY3RyYWxfc2FtcGxlX2VyciYjNDM7JiM0Mzs7XG4mIzQzO31cbiYjNDM7XG4gLyogcmV0dXJucyAxIGlmIHRoaXMgd2FzIGEgc3BlY3RyYWwgZnJhbWUsIGV2ZW4gaWYgbm90IGhhbmRsZWQuICovXG4gaW50IGF0aF9jbW5fcHJvY2Vzc19mZnQoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LCBzdHJ1Y3QgaWVlZTgwMjExX2hkciAqaGRyLFxuIFx0XHQgICAgc3RydWN0IGF0aF9yeF9zdGF0dXMgKnJzLCB1NjQgdHNmKVxuQEAgLTQ3Miw3ICYjNDM7NDg2LDYgQEAgaW50IGF0aF9jbW5fcHJvY2Vzc19mZnQoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LCBzdHJ1Y3QgaWVlZTgwMjExX2hcbiBcdHU4IHNhbXBsZV9idWZbU1BFQ1RSQUxfU0FNUExFX01BWF9MRU5dID0gezB9O1xuIFx0c3RydWN0IGF0aF9odyAqYWggPSBzcGVjX3ByaXYtXHUwMDNlYWg7XG4gXHRzdHJ1Y3QgYXRoX2NvbW1vbiAqY29tbW9uID0gYXRoOWtfaHdfY29tbW9uKHNwZWNfcHJpdi1cdTAwM2VhaCk7XG4tXHRzdHJ1Y3QgYXRoX3NvZnRjICpzYyA9IGNvbW1vbi1cdTAwM2Vwcml2O1xuIFx0dTggbnVtX2JpbnMsICp2ZGF0YSA9ICh1OCAqKWhkcjtcbiBcdHN0cnVjdCBhdGhfcmFkYXJfaW5mbyAqcmFkYXJfaW5mbztcbiBcdGludCBsZW4gPSBycy1cdTAwM2Vyc19kYXRhbGVuO1xuQEAgLTYyNCwxMCAmIzQzOzYzNyw3IEBAIGludCBhdGhfY21uX3Byb2Nlc3NfZmZ0KHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiwgc3RydWN0IGllZWU4MDIxMV9oXG4gXHRcdFx0XHRyZXQgPSBmZnRfaGFuZGxlcihycywgc3BlY19wcml2LCBzYW1wbGVfYnVmLFxuIFx0XHRcdFx0XHRcdCAgdHNmLCBmcmVxLCBjaGFuX3R5cGUpO1xuIFxuLVx0XHRcdFx0aWYgKHJldCA9PSAwKVxuLVx0XHRcdFx0XHRSWF9TVEFUX0lOQyhzYywgcnhfc3BlY3RyYWxfc2FtcGxlX2dvb2QpO1xuLVx0XHRcdFx0ZWxzZVxuLVx0XHRcdFx0XHRSWF9TVEFUX0lOQyhzYywgcnhfc3BlY3RyYWxfc2FtcGxlX2Vycik7XG4mIzQzO1x0XHRcdFx0YXRoX2Ntbl9jb3VudF9mZnRfc2FtcGxlKHNwZWNfcHJpdiwgcmV0KTtcbiBcbiBcdFx0XHRcdC8qIE1peCB0aGUgcmVjZWl2ZWQgYmlucyB0byB0aGUgL2Rldi9yYW5kb21cbiBcdFx0XHRcdCAqIHBvb2xcbkBAIC02NDIsMTAgJiM0Mzs2NTIsNyBAQCBpbnQgYXRoX2Ntbl9wcm9jZXNzX2ZmdChzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsIHN0cnVjdCBpZWVlODAyMTFfaFxuIFx0XHRcdFx0cmV0ID0gZmZ0X2hhbmRsZXIocnMsIHNwZWNfcHJpdiwgc2FtcGxlX3N0YXJ0LFxuIFx0XHRcdFx0XHRcdCAgdHNmLCBmcmVxLCBjaGFuX3R5cGUpO1xuIFxuLVx0XHRcdFx0aWYgKHJldCA9PSAwKVxuLVx0XHRcdFx0XHRSWF9TVEFUX0lOQyhzYywgcnhfc3BlY3RyYWxfc2FtcGxlX2dvb2QpO1xuLVx0XHRcdFx0ZWxzZVxuLVx0XHRcdFx0XHRSWF9TVEFUX0lOQyhzYywgcnhfc3BlY3RyYWxfc2FtcGxlX2Vycik7XG4mIzQzO1x0XHRcdFx0YXRoX2Ntbl9jb3VudF9mZnRfc2FtcGxlKHNwZWNfcHJpdiwgcmV0KTtcbiBcbiBcdFx0XHRcdC8qIE1peCB0aGUgcmVjZWl2ZWQgYmlucyB0byB0aGUgL2Rldi9yYW5kb21cbiBcdFx0XHRcdCAqIHBvb2xcbkBAIC0xMDUyLDggJiM0MzsxMDU5LDEwIEBAIHZvaWQgYXRoOWtfY21uX3NwZWN0cmFsX2RlaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYpXG4gRVhQT1JUX1NZTUJPTChhdGg5a19jbW5fc3BlY3RyYWxfZGVpbml0X2RlYnVnKTtcbiBcbiB2b2lkIGF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdixcbi1cdFx0XHRcdCAgIHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcGh5KVxuJiM0MztcdFx0XHRcdCAgIHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcGh5LFxuJiM0MztcdFx0XHRcdCAgIHN0cnVjdCBhdGhfcnhfc3RhdHMgKnJ4X3N0YXRzKVxuIHtcbiYjNDM7XHRzcGVjX3ByaXYtXHUwMDNlcnhfc3RhdHMgPSByeF9zdGF0cztcbiBcdHNwZWNfcHJpdi1cdTAwM2VyZnNfY2hhbl9zcGVjX3NjYW4gPSByZWxheV9vcGVuKFwmIzM0O3NwZWN0cmFsX3NjYW5cJiMzNDssXG4gXHRcdFx0XHRcdCAgICBkZWJ1Z2ZzX3BoeSxcbiBcdFx0XHRcdFx0ICAgIDEwMjQsIDI1NiwgXHUwMDI2cmZzX3NwZWNfc2Nhbl9jYixcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmhcbmluZGV4IDAxMWQ4YWI4Yjk3NDQuLjBlMmM3ZDZkMzQ4NzQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaFxuQEAgLTk0LDEyICYjNDM7OTQsMTYgQEAgc3RydWN0IGF0aF9odDIwXzQwX2ZmdF9wYWNrZXQge1xuIFx0c3RydWN0IGF0aF9yYWRhcl9pbmZvIHJhZGFyX2luZm87XG4gfSBfX3BhY2tlZDtcbiBcbiYjNDM7c3RydWN0IGF0aF9yeF9zdGF0cztcbiYjNDM7XG4gc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiB7XG4gXHRzdHJ1Y3QgYXRoX2h3ICphaDtcbiBcdC8qIHJlbGF5KGZzKSBjaGFubmVsIGZvciBzcGVjdHJhbCBzY2FuICovXG4gXHRzdHJ1Y3QgcmNoYW4gKnJmc19jaGFuX3NwZWNfc2NhbjtcbiBcdGVudW0gc3BlY3RyYWxfbW9kZSBzcGVjdHJhbF9tb2RlO1xuIFx0c3RydWN0IGF0aF9zcGVjX3NjYW4gc3BlY19jb25maWc7XG4mIzQzO1x0LyogZHJpdmVyJiMzOTtzIFJYIHN0YXRpc3RpY3MgdG8gYWNjb3VudCBzYW1wbGVzIGludG8sIGlmIGFueSAqL1xuJiM0MztcdHN0cnVjdCBhdGhfcnhfc3RhdHMgKnJ4X3N0YXRzO1xuIH07XG4gXG4gI2RlZmluZSBTUEVDVFJBTF9IVDIwXzQwX1RPVEFMX0RBVEFfTEVOXHQoc2l6ZW9mKHN0cnVjdCBhdGhfaHQyMF80MF9mZnRfcGFja2V0KSlcbkBAIC0xNjksNyAmIzQzOzE3Myw5IEBAIHN0YXRpYyBpbmxpbmUgdTggc3BlY3RyYWxfYml0bWFwX3dlaWdodCh1OCAqYmlucylcbiB9XG4gXG4gI2lmZGVmIENPTkZJR19BVEg5S19DT01NT05fU1BFQ1RSQUxcbi12b2lkIGF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiwgc3RydWN0IGRlbnRyeSAqZGVidWdmc19waHkpO1xuJiM0Mzt2b2lkIGF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdixcbiYjNDM7XHRcdFx0XHQgICBzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX3BoeSxcbiYjNDM7XHRcdFx0XHQgICBzdHJ1Y3QgYXRoX3J4X3N0YXRzICpyeF9zdGF0cyk7XG4gdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfZGVpbml0X2RlYnVnKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdik7XG4gXG4gdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfc2Nhbl90cmlnZ2VyKHN0cnVjdCBhdGhfY29tbW9uICpjb21tb24sXG5AQCAtMTgxLDcgJiM0MzsxODcsOCBAQCBpbnQgYXRoX2Ntbl9wcm9jZXNzX2ZmdChzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsIHN0cnVjdCBpZWVlODAyMTFfaFxuIFx0XHQgICAgc3RydWN0IGF0aF9yeF9zdGF0dXMgKnJzLCB1NjQgdHNmKTtcbiAjZWxzZVxuIHN0YXRpYyBpbmxpbmUgdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsXG4tXHRcdFx0XHRcdFx0IHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcGh5KVxuJiM0MztcdFx0XHRcdFx0XHQgc3RydWN0IGRlbnRyeSAqZGVidWdmc19waHksXG4mIzQzO1x0XHRcdFx0XHRcdCBzdHJ1Y3QgYXRoX3J4X3N0YXRzICpyeF9zdGF0cylcbiB7XG4gfVxuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZWJ1Zy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2RlYnVnLmNcbmluZGV4IDc0YTAxMzQwNzVjZjkuLjA0MmE0ZjU0MmE5NDMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGVidWcuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2RlYnVnLmNcbkBAIC0xMzg5LDcgJiM0MzsxMzg5LDggQEAgaW50IGF0aDlrX2luaXRfZGVidWcoc3RydWN0IGF0aF9odyAqYWgpXG4gXG4gXHRhdGg5a19kZnNfaW5pdF9kZWJ1ZyhzYyk7XG4gXHRhdGg5a190eDk5X2luaXRfZGVidWcoc2MpO1xuLVx0YXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoXHUwMDI2c2MtXHUwMDNlc3BlY19wcml2LCBzYy1cdTAwM2VkZWJ1Zy5kZWJ1Z2ZzX3BoeSk7XG4mIzQzO1x0YXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoXHUwMDI2c2MtXHUwMDNlc3BlY19wcml2LCBzYy1cdTAwM2VkZWJ1Zy5kZWJ1Z2ZzX3BoeSxcbiYjNDM7XHRcdFx0XHQgICAgICBcdTAwMjZzYy1cdTAwM2VkZWJ1Zy5zdGF0cy5yeHN0YXRzKTtcbiBcbiBcdGRlYnVnZnNfY3JlYXRlX2Rldm1fc2VxZmlsZShzYy1cdTAwM2VkZXYsIFwmIzM0O2RtYVwmIzM0Oywgc2MtXHUwMDNlZGVidWcuZGVidWdmc19waHksXG4gXHRcdFx0XHQgICAgcmVhZF9maWxlX2RtYSk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmNcbmluZGV4IDk0MzdkNjk4NzdjYzUuLjlkMzU0YjFkOTI5YzggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jXG5AQCAtNDg3LDcgJiM0Mzs0ODcsOCBAQCBpbnQgYXRoOWtfaHRjX2luaXRfZGVidWcoc3RydWN0IGF0aF9odyAqYWgpXG4gXHRwcml2LVx1MDAzZWRlYnVnLmRlYnVnZnNfcGh5ID0gZGVidWdmc19jcmVhdGVfZGlyKEtCVUlMRF9NT0ROQU1FLFxuIFx0XHRcdFx0XHQgICAgIHByaXYtXHUwMDNlaHctXHUwMDNld2lwaHktXHUwMDNlZGVidWdmc2Rpcik7XG4gXG4tXHRhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhcdTAwMjZwcml2LVx1MDAzZXNwZWNfcHJpdiwgcHJpdi1cdTAwM2VkZWJ1Zy5kZWJ1Z2ZzX3BoeSk7XG4mIzQzO1x0YXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoXHUwMDI2cHJpdi1cdTAwM2VzcGVjX3ByaXYsIHByaXYtXHUwMDNlZGVidWcuZGVidWdmc19waHksXG4mIzQzO1x0XHRcdFx0ICAgICAgXHUwMDI2cHJpdi1cdTAwM2VkZWJ1Zy5yeF9zdGF0cyk7XG4gXG4gXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFwmIzM0O3RndF9pbnRfc3RhdHNcJiMzNDssIDA0MDAsIHByaXYtXHUwMDNlZGVidWcuZGVidWdmc19waHksXG4gXHRcdFx0ICAgIHByaXYsIFx1MDAyNmZvcHNfdGd0X2ludF9zdGF0cyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMDE6MDM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QVRIOUsmIzM0OywKICAgICYjMzQ7QVRIOUtfSFRDJiMzNDssCiAgICAmIzM0O0FUSDlLX0RFQlVHRlMmIzM0OywKICAgICYjMzQ7QVRIOUtfSFRDX0RFQlVHRlMmIzM0OywKICAgICYjMzQ7QVRIOUtfQ09NTU9OX1NQRUNUUkFMJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O0RFQlVHX0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YXRoX2Ntbl9wcm9jZXNzX2ZmdCYjMzQ7LAogICAgJiMzNDthdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyYjMzQ7LAogICAgJiMzNDthdGg5a19odGNfaW5pdF9kZWJ1ZyYjMzQ7LAogICAgJiMzNDthdGg5a19pbml0X2RlYnVnJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlZmFjdG9ycyB0aGUgc3BlY3RyYWwgc2NhbiBSWCBzdGF0aXN0aWNzIGFjY291bnRpbmcgaW4gdGhlIGF0aDlrL2F0aDlrX2h0YyB3aXJlbGVzcyBkcml2ZXIgdG8gYXZvaWQgaW5jb3JyZWN0IHN0cnVjdCBjYXN0aW5nIGJldHdlZW4gYXRoOWsgYW5kIGF0aDlrX2h0Yy4gVGhlIG1vZGlmaWVkIGNvZGUgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgVVNCIGVtdWxhdGlvbiAoYXRoOWtfaHRjKSBhbmQgZGVidWdmcy93aXJlbGVzcyBSWCBmcmFtZSBwcm9jZXNzaW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMGQ1ZDRkYjhkOGE2NTk1YTk1YmU4NzA3OTg1ZmMxMzNkZTEyNjQ0MgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgU2VwIDUgMDE6MDM6MTkgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMKaW5kZXggY2EwMWEwN2Y2NjMwYy4uZDhiZTI0ZWJjZDI0NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYwpAQCAtNDY1LDYgJiM0Mzs0NjUsMjAgQEAgYXRoX2Ntbl9pc19mZnRfYnVmX2Z1bGwoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2KQogCQlyZXR1cm4gMDsKIH0KIAomIzQzO3N0YXRpYyB2b2lkIGF0aF9jbW5fY291bnRfZmZ0X3NhbXBsZShzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsCiYjNDM7CQkJCSAgICAgaW50IHJldCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBhdGhfcnhfc3RhdHMgKnJ4X3N0YXRzID0gc3BlY19wcml2LSZndDtyeF9zdGF0czsKJiM0MzsKJiM0MzsJaWYgKCFyeF9zdGF0cykKJiM0MzsJCXJldHVybjsKJiM0MzsKJiM0MzsJaWYgKHJldCA9PSAwKQomIzQzOwkJcnhfc3RhdHMtJmd0O3J4X3NwZWN0cmFsX3NhbXBsZV9nb29kJiM0MzsmIzQzOzsKJiM0MzsJZWxzZQomIzQzOwkJcnhfc3RhdHMtJmd0O3J4X3NwZWN0cmFsX3NhbXBsZV9lcnImIzQzOyYjNDM7OwomIzQzO30KJiM0MzsKIC8qIHJldHVybnMgMSBpZiB0aGlzIHdhcyBhIHNwZWN0cmFsIGZyYW1lLCBldmVuIGlmIG5vdCBoYW5kbGVkLiAqLwogaW50IGF0aF9jbW5fcHJvY2Vzc19mZnQoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LCBzdHJ1Y3QgaWVlZTgwMjExX2hkciAqaGRyLAogCQkgICAgc3RydWN0IGF0aF9yeF9zdGF0dXMgKnJzLCB1NjQgdHNmKQpAQCAtNDcyLDcgJiM0Mzs0ODYsNiBAQCBpbnQgYXRoX2Ntbl9wcm9jZXNzX2ZmdChzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsIHN0cnVjdCBpZWVlODAyMTFfaAogCXU4IHNhbXBsZV9idWZbU1BFQ1RSQUxfU0FNUExFX01BWF9MRU5dID0gezB9OwogCXN0cnVjdCBhdGhfaHcgKmFoID0gc3BlY19wcml2LSZndDthaDsKIAlzdHJ1Y3QgYXRoX2NvbW1vbiAqY29tbW9uID0gYXRoOWtfaHdfY29tbW9uKHNwZWNfcHJpdi0mZ3Q7YWgpOwotCXN0cnVjdCBhdGhfc29mdGMgKnNjID0gY29tbW9uLSZndDtwcml2OwogCXU4IG51bV9iaW5zLCAqdmRhdGEgPSAodTggKiloZHI7CiAJc3RydWN0IGF0aF9yYWRhcl9pbmZvICpyYWRhcl9pbmZvOwogCWludCBsZW4gPSBycy0mZ3Q7cnNfZGF0YWxlbjsKQEAgLTYyNCwxMCAmIzQzOzYzNyw3IEBAIGludCBhdGhfY21uX3Byb2Nlc3NfZmZ0KHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiwgc3RydWN0IGllZWU4MDIxMV9oCiAJCQkJcmV0ID0gZmZ0X2hhbmRsZXIocnMsIHNwZWNfcHJpdiwgc2FtcGxlX2J1ZiwKIAkJCQkJCSAgdHNmLCBmcmVxLCBjaGFuX3R5cGUpOwogCi0JCQkJaWYgKHJldCA9PSAwKQotCQkJCQlSWF9TVEFUX0lOQyhzYywgcnhfc3BlY3RyYWxfc2FtcGxlX2dvb2QpOwotCQkJCWVsc2UKLQkJCQkJUlhfU1RBVF9JTkMoc2MsIHJ4X3NwZWN0cmFsX3NhbXBsZV9lcnIpOwomIzQzOwkJCQlhdGhfY21uX2NvdW50X2ZmdF9zYW1wbGUoc3BlY19wcml2LCByZXQpOwogCiAJCQkJLyogTWl4IHRoZSByZWNlaXZlZCBiaW5zIHRvIHRoZSAvZGV2L3JhbmRvbQogCQkJCSAqIHBvb2wKQEAgLTY0MiwxMCAmIzQzOzY1Miw3IEBAIGludCBhdGhfY21uX3Byb2Nlc3NfZmZ0KHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiwgc3RydWN0IGllZWU4MDIxMV9oCiAJCQkJcmV0ID0gZmZ0X2hhbmRsZXIocnMsIHNwZWNfcHJpdiwgc2FtcGxlX3N0YXJ0LAogCQkJCQkJICB0c2YsIGZyZXEsIGNoYW5fdHlwZSk7CiAKLQkJCQlpZiAocmV0ID09IDApCi0JCQkJCVJYX1NUQVRfSU5DKHNjLCByeF9zcGVjdHJhbF9zYW1wbGVfZ29vZCk7Ci0JCQkJZWxzZQotCQkJCQlSWF9TVEFUX0lOQyhzYywgcnhfc3BlY3RyYWxfc2FtcGxlX2Vycik7CiYjNDM7CQkJCWF0aF9jbW5fY291bnRfZmZ0X3NhbXBsZShzcGVjX3ByaXYsIHJldCk7CiAKIAkJCQkvKiBNaXggdGhlIHJlY2VpdmVkIGJpbnMgdG8gdGhlIC9kZXYvcmFuZG9tCiAJCQkJICogcG9vbApAQCAtMTA1Miw4ICYjNDM7MTA1OSwxMCBAQCB2b2lkIGF0aDlrX2Ntbl9zcGVjdHJhbF9kZWluaXRfZGVidWcoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2KQogRVhQT1JUX1NZTUJPTChhdGg5a19jbW5fc3BlY3RyYWxfZGVpbml0X2RlYnVnKTsKIAogdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsCi0JCQkJICAgc3RydWN0IGRlbnRyeSAqZGVidWdmc19waHkpCiYjNDM7CQkJCSAgIHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcGh5LAomIzQzOwkJCQkgICBzdHJ1Y3QgYXRoX3J4X3N0YXRzICpyeF9zdGF0cykKIHsKJiM0MzsJc3BlY19wcml2LSZndDtyeF9zdGF0cyA9IHJ4X3N0YXRzOwogCXNwZWNfcHJpdi0mZ3Q7cmZzX2NoYW5fc3BlY19zY2FuID0gcmVsYXlfb3BlbigmIzM0O3NwZWN0cmFsX3NjYW4mIzM0OywKIAkJCQkJICAgIGRlYnVnZnNfcGh5LAogCQkJCQkgICAgMTAyNCwgMjU2LCAmYW1wO3Jmc19zcGVjX3NjYW5fY2IsCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmgKaW5kZXggMDExZDhhYjhiOTc0NC4uMGUyYzdkNmQzNDg3NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaApAQCAtOTQsMTIgJiM0Mzs5NCwxNiBAQCBzdHJ1Y3QgYXRoX2h0MjBfNDBfZmZ0X3BhY2tldCB7CiAJc3RydWN0IGF0aF9yYWRhcl9pbmZvIHJhZGFyX2luZm87CiB9IF9fcGFja2VkOwogCiYjNDM7c3RydWN0IGF0aF9yeF9zdGF0czsKJiM0MzsKIHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgewogCXN0cnVjdCBhdGhfaHcgKmFoOwogCS8qIHJlbGF5KGZzKSBjaGFubmVsIGZvciBzcGVjdHJhbCBzY2FuICovCiAJc3RydWN0IHJjaGFuICpyZnNfY2hhbl9zcGVjX3NjYW47CiAJZW51bSBzcGVjdHJhbF9tb2RlIHNwZWN0cmFsX21vZGU7CiAJc3RydWN0IGF0aF9zcGVjX3NjYW4gc3BlY19jb25maWc7CiYjNDM7CS8qIGRyaXZlciYjMzk7cyBSWCBzdGF0aXN0aWNzIHRvIGFjY291bnQgc2FtcGxlcyBpbnRvLCBpZiBhbnkgKi8KJiM0MzsJc3RydWN0IGF0aF9yeF9zdGF0cyAqcnhfc3RhdHM7CiB9OwogCiAjZGVmaW5lIFNQRUNUUkFMX0hUMjBfNDBfVE9UQUxfREFUQV9MRU4JKHNpemVvZihzdHJ1Y3QgYXRoX2h0MjBfNDBfZmZ0X3BhY2tldCkpCkBAIC0xNjksNyAmIzQzOzE3Myw5IEBAIHN0YXRpYyBpbmxpbmUgdTggc3BlY3RyYWxfYml0bWFwX3dlaWdodCh1OCAqYmlucykKIH0KIAogI2lmZGVmIENPTkZJR19BVEg5S19DT01NT05fU1BFQ1RSQUwKLXZvaWQgYXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LCBzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX3BoeSk7CiYjNDM7dm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsCiYjNDM7CQkJCSAgIHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcGh5LAomIzQzOwkJCQkgICBzdHJ1Y3QgYXRoX3J4X3N0YXRzICpyeF9zdGF0cyk7CiB2b2lkIGF0aDlrX2Ntbl9zcGVjdHJhbF9kZWluaXRfZGVidWcoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2KTsKIAogdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfc2Nhbl90cmlnZ2VyKHN0cnVjdCBhdGhfY29tbW9uICpjb21tb24sCkBAIC0xODEsNyAmIzQzOzE4Nyw4IEBAIGludCBhdGhfY21uX3Byb2Nlc3NfZmZ0KHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiwgc3RydWN0IGllZWU4MDIxMV9oCiAJCSAgICBzdHJ1Y3QgYXRoX3J4X3N0YXR1cyAqcnMsIHU2NCB0c2YpOwogI2Vsc2UKIHN0YXRpYyBpbmxpbmUgdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsCi0JCQkJCQkgc3RydWN0IGRlbnRyeSAqZGVidWdmc19waHkpCiYjNDM7CQkJCQkJIHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcGh5LAomIzQzOwkJCQkJCSBzdHJ1Y3QgYXRoX3J4X3N0YXRzICpyeF9zdGF0cykKIHsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2RlYnVnLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGVidWcuYwppbmRleCA3NGEwMTM0MDc1Y2Y5Li4wNDJhNGY1NDJhOTQzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGVidWcuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGVidWcuYwpAQCAtMTM4OSw3ICYjNDM7MTM4OSw4IEBAIGludCBhdGg5a19pbml0X2RlYnVnKHN0cnVjdCBhdGhfaHcgKmFoKQogCiAJYXRoOWtfZGZzX2luaXRfZGVidWcoc2MpOwogCWF0aDlrX3R4OTlfaW5pdF9kZWJ1ZyhzYyk7Ci0JYXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoJmFtcDtzYy0mZ3Q7c3BlY19wcml2LCBzYy0mZ3Q7ZGVidWcuZGVidWdmc19waHkpOwomIzQzOwlhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZygmYW1wO3NjLSZndDtzcGVjX3ByaXYsIHNjLSZndDtkZWJ1Zy5kZWJ1Z2ZzX3BoeSwKJiM0MzsJCQkJICAgICAgJmFtcDtzYy0mZ3Q7ZGVidWcuc3RhdHMucnhzdGF0cyk7CiAKIAlkZWJ1Z2ZzX2NyZWF0ZV9kZXZtX3NlcWZpbGUoc2MtJmd0O2RldiwgJiMzNDtkbWEmIzM0Oywgc2MtJmd0O2RlYnVnLmRlYnVnZnNfcGh5LAogCQkJCSAgICByZWFkX2ZpbGVfZG1hKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jCmluZGV4IDk0MzdkNjk4NzdjYzUuLjlkMzU0YjFkOTI5YzggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYwpAQCAtNDg3LDcgJiM0Mzs0ODcsOCBAQCBpbnQgYXRoOWtfaHRjX2luaXRfZGVidWcoc3RydWN0IGF0aF9odyAqYWgpCiAJcHJpdi0mZ3Q7ZGVidWcuZGVidWdmc19waHkgPSBkZWJ1Z2ZzX2NyZWF0ZV9kaXIoS0JVSUxEX01PRE5BTUUsCiAJCQkJCSAgICAgcHJpdi0mZ3Q7aHctJmd0O3dpcGh5LSZndDtkZWJ1Z2ZzZGlyKTsKIAotCWF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnKCZhbXA7cHJpdi0mZ3Q7c3BlY19wcml2LCBwcml2LSZndDtkZWJ1Zy5kZWJ1Z2ZzX3BoeSk7CiYjNDM7CWF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnKCZhbXA7cHJpdi0mZ3Q7c3BlY19wcml2LCBwcml2LSZndDtkZWJ1Zy5kZWJ1Z2ZzX3BoeSwKJiM0MzsJCQkJICAgICAgJmFtcDtwcml2LSZndDtkZWJ1Zy5yeF9zdGF0cyk7CiAKIAlkZWJ1Z2ZzX2NyZWF0ZV9maWxlKCYjMzQ7dGd0X2ludF9zdGF0cyYjMzQ7LCAwNDAwLCBwcml2LSZndDtkZWJ1Zy5kZWJ1Z2ZzX3BoeSwKIAkJCSAgICBwcml2LCAmYW1wO2ZvcHNfdGd0X2ludF9zdGF0cyk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDAxOjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUwNTcKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyNTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBTdHJhdGVneSBmb3IgdGhpcyBQYXRjaCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgZm9jdXNlZCBvbiBkZXRlcm1pbmluZyB0aGUgZnV6emFiaWxpdHkgb2YgdGhpcyBwYXRjaCBhbmQgY3JhZnRpbmcgYW4gZWZmZWN0aXZlIGZ1enppbmcgc3RyYXRlZ3kuIFdlJiMzOTtyZSBsb29raW5nIGF0IG1vZGlmaWNhdGlvbnMgdG8gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuY2AsIGAuaGAsIGBkZWJ1Zy5jYCwgYW5kIGBodGNfZHJ2X2RlYnVnLmNgLiBJbW1lZGlhdGVseSwgSSBuZWVkIHRvIGtub3cgdGhlIGNvbnRleHQgb2YgdGhlc2UgZHJpdmVycy4KCk9rYXksIHNvIGBhdGg5a2AgaXMgUENJL0FIQiB3aXJlbGVzcywgYW5kIGBhdGg5a19odGNgIGlzIFVTQiB3aXJlbGVzcy4gVGhhdCYjMzk7cyBnb29kIGluZm9ybWF0aW9uLiBVU0IgZHJpdmVycyBhcmUgb2Z0ZW4gcHJpbWUgdGFyZ2V0cywgYmVjYXVzZSB0aGV5IGNhbiBiZSBlbXVsYXRlZC4gU3l6a2FsbGVyJiMzOTtzIFVTQiBmdXp6aW5nIGNhcGFiaWxpdGllcywgcGFydGljdWxhcmx5IHVzaW5nIFJhdyBHYWRnZXQsIGR1bW15X2hjZCwgb3IgdmhjaSwgY2FuIGJlIGluY3JlZGlibHkgZWZmZWN0aXZlIGhlcmUuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoaXMgYGNvbW1vbi1zcGVjdHJhbGAgY29kZSBpcyBldmVuIHVzZWQgYnkgYm90aC4gSXMgdGhlIHNhbWUgc3BlY3RyYWwgZnVuY3Rpb25hbGl0eSBpbiBib3RoIGBhdGg5a2AgYW5kIGBhdGg5a19odGNgIG9yIGFyZSB3ZSBvbmx5IGZ1enppbmcgb25lPwoKTm93LCBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBjb2RlYmFzZS4gSSYjMzk7bSBnb2luZyB0byBzdGFydCBzZWFyY2hpbmcgZm9yIHVzZXMgb2YgYGF0aDlrX2h0Y2AsIGBhdGg5a2AsIGFuZCB0aGUgc3BlY3RyYWwtcmVsYXRlZCBmdW5jdGlvbnMuIFdlJiMzOTtsbCBuZWVkIHRvIGtub3cgd2hpY2ggZnVuY3Rpb25zIGFyZSBlbnRyeSBwb2ludHMgYW5kIHdoZXRoZXIgdGhleSYjMzk7cmUgZXZlbiByZWFjaGFibGUuIFdlJiMzOTtsbCBuZWVkIHRvIGRldGVybWluZSB0aGUgb3B0aW1hbCBjb25maWd1cmF0aW9uIGZvciB0aGlzLiBUaGlzIHNlYXJjaCB3aWxsIGhlbHAgbWUgbmFycm93IGRvd24gd2hhdCBuZWVkcyBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDAxOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0FUSDlLX0hUQyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc9MTM9Y29uZmlnIEFUSDlLX0JUQ09FWF9TVVBQT1JUXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNC1cdGJvb2wgXCYjMzQ7QXRoZXJvcyBibHVldG9vdGggY29leGlzdGVuY2Ugc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTU6XHRkZXBlbmRzIG9uIChBVEg5SyB8fCBBVEg5S19IVEMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNi1cdGRlZmF1bHQgeVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnPTE1Nj1jb25maWcgQVRIOUtfUENJX05PX0VFUFJPTVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE3MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjE3Mjpjb25maWcgQVRIOUtfSFRDXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNzMtXHR0cmlzdGF0ZSBcJiMzNDtBdGhlcm9zIEhUQyBiYXNlZCB3aXJlbGVzcyBjYXJkcyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTg2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTg3OmNvbmZpZyBBVEg5S19IVENfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTg4LVx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDlrX2h0YyBkZWJ1Z2dpbmdcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjE4OTpcdGRlcGVuZHMgb24gQVRIOUtfSFRDIFx1MDAyNlx1MDAyNiBERUJVR19GU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTkwLVx0c2VsZWN0IEFUSDlLX0NPTU1PTl9ERUJVR1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnPTIwNj1jb25maWcgQVRIOUtfQ09NTU9OX1NQRUNUUkFMXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0yMDctXHRib29sIFwmIzM0O0F0aGVyb3MgYXRoOWsvYXRoOWtfaHRjIHNwZWN0cmFsIHNjYW4gc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MjA4Olx0ZGVwZW5kcyBvbiBBVEg5S19ERUJVR0ZTIHx8IEFUSDlLX0hUQ19ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0yMDktXHRzZWxlY3QgUkVMQVlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU9Njg9YXRoOWtfaHRjLXkgJiM0Mzs9XHRodGNfaHN0Lm8gXFxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtNzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6Nzc6YXRoOWtfaHRjLSQoQ09ORklHX0FUSDlLX0hUQ19ERUJVR0ZTKSAmIzQzOz0gaHRjX2Rydl9kZWJ1Zy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtNzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6Nzk6b2JqLSQoQ09ORklHX0FUSDlLX0hUQykgJiM0Mzs9IGF0aDlrX2h0Yy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtODAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwM19lZXByb20uYz0zMzkwPXN0YXRpYyBib29sIGF0aDlrX2h3X2FyOTMwMF9maWxsX2VlcHJvbShzdHJ1Y3QgYXRoX2h3ICphaClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAzX2VlcHJvbS5jLTM0MDAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAzX2VlcHJvbS5jOjM0MDE6I2lmIGRlZmluZWQoQ09ORklHX0FUSDlLX0RFQlVHRlMpIHx8IGRlZmluZWQoQ09ORklHX0FUSDlLX0hUQ19ERUJVR0ZTKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwM19lZXByb20uYy0zNDAyLXN0YXRpYyB1MzIgYXI5MDAzX2R1bXBfbW9kYWxfZWVwcm9tKGNoYXIgKmJ1ZiwgdTMyIGxlbiwgdTMyIHNpemUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYz0yMzI9c3RhdGljIGlubGluZSB2b2lkIGF0aDlrX3NrYl9xdWV1ZV9jb21wbGV0ZShzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0yMzgtXHR3aGlsZSAoKHNrYiA9IF9fc2tiX2RlcXVldWUocXVldWUpKSAhPSBOVUxMKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjIzOTojaWZkZWYgQ09ORklHX0FUSDlLX0hUQ19ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTI0MC1cdFx0aW50IGxuID0gc2tiLVx1MDAzZWxlbjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jPTM3Nj1zdGF0aWMgaW50IGhpZl91c2Jfc2VuZF90eChzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0zOTktXHQvKiBNZ210L0JlYWNvbiBmcmFtZXMgZG9uJiMzOTt0IHVzZSB0aGUgVFggYnVmZmVyIHBvb2wgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NDAwOlx0aWYgKCh0eF9jdGwtXHUwMDNldHlwZSA9PSBBVEg5S19IVENfTUdNVCkgfHxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NDAxOlx0ICAgICh0eF9jdGwtXHUwMDNldHlwZSA9PSBBVEg5S19IVENfQkVBQ09OKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00MDItXHRcdHJldCA9IGhpZl91c2Jfc2VuZF9tZ210KGhpZl9kZXYsIHNrYik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00MDYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjQwNzpcdGlmICgodHhfY3RsLVx1MDAzZXR5cGUgPT0gQVRIOUtfSFRDX05PUk1BTCkgfHxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NDA4Olx0ICAgICh0eF9jdGwtXHUwMDNldHlwZSA9PSBBVEg5S19IVENfQU1QRFUpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQwOS1cdFx0X19za2JfcXVldWVfdGFpbChcdTAwMjZoaWZfZGV2LVx1MDAzZXR4LnR4X3NrYl9xdWV1ZSwgc2tiKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jPTQ4Nz1zdGF0aWMgaW5saW5lIGJvb2wgY2hlY2tfaW5kZXgoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTggaWR4KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNDkyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo0OTM6XHRpZiAoKHR4X2N0bC1cdTAwM2V0eXBlID09IEFUSDlLX0hUQ19BTVBEVSkgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQ5NC1cdCAgICAodHhfY3RsLVx1MDAzZXN0YV9pZHggPT0gaWR4KSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9NTY9ZW51bSBodGNfb3Btb2RlIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6NjU6I2RlZmluZSBBVEg5S19IVENfQU1QRFUgIDFcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo2NjojZGVmaW5lIEFUSDlLX0hUQ19OT1JNQUwgMlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjY3OiNkZWZpbmUgQVRIOUtfSFRDX0JFQUNPTiAzXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6Njg6I2RlZmluZSBBVEg5S19IVENfTUdNVCAgIDRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC02OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo3MDojZGVmaW5lIEFUSDlLX0hUQ19UWF9DVFNPTkxZICAgICAgMHgxXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6NzE6I2RlZmluZSBBVEg5S19IVENfVFhfUlRTQ1RTICAgICAgIDB4MlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTcyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTczPXN0cnVjdCB0eF9mcmFtZV9oZHIge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC03Ny1cdHU4IHRpZG5vO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjc4Olx0X19iZTMyIGZsYWdzOyAvKiBBVEg5S19IVENfVFhfKiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTc5LVx0dTgga2V5X3R5cGU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTE5ND1zdHJ1Y3QgYXRoOWtfaHRjX3RhcmdldF9yeF9zdGF0cyB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTE5OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyMDA6I2RlZmluZSBBVEg5S19IVENfTUFYX1ZJRiAyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MjAxOiNkZWZpbmUgQVRIOUtfSFRDX01BWF9CQ05fVklGIDJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0yMDItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTI0OT1zdHJ1Y3QgYXRoOWtfdmlmX2l0ZXJfZGF0YSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI1My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyNTQ6I2RlZmluZSBBVEg5S19IVENfTUFYX1NUQSA4XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MjU1OiNkZWZpbmUgQVRIOUtfSFRDX01BWF9USUQgOFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI1Ni1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9MjY0PXN0cnVjdCBhdGg5a19odGNfc3RhIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0yNjUtXHR1OCBpbmRleDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyNjY6XHRlbnVtIHRpZF9hZ2dyX3N0YXRlIHRpZF9zdGF0ZVtBVEg5S19IVENfTUFYX1RJRF07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMjY3LVx0c3RydWN0IHdvcmtfc3RydWN0IHJjX3VwZGF0ZV93b3JrO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0yNzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MjcxOiNkZWZpbmUgQVRIOUtfSFRDX1JYQlVGIDI1NlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI3Mi0jZGVmaW5lIEhUQ19SWF9GUkFNRV9IRUFERVJfU0laRSA0MFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD0yODE9c3RydWN0IGF0aDlrX2h0Y19yeCB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI4Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyODc6I2RlZmluZSBBVEg5S19IVENfVFhfQ0xFQU5VUF9JTlRFUlZBTCA1MCAvKiBtcyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI4ODojZGVmaW5lIEFUSDlLX0hUQ19UWF9USU1FT1VUX0lOVEVSVkFMIDMwMDAgLyogbXMgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyODk6I2RlZmluZSBBVEg5S19IVENfVFhfUkVTRVJWRSAxMFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI5MDojZGVmaW5lIEFUSDlLX0hUQ19UWF9USU1FT1VUX0NPVU5UIDQwXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MjkxOiNkZWZpbmUgQVRIOUtfSFRDX1RYX1RIUkVTSE9MRCAoTUFYX1RYX0JVRl9OVU0gLSBBVEg5S19IVENfVFhfUkVTRVJWRSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0yOTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MjkzOiNkZWZpbmUgQVRIOUtfSFRDX09QX1RYX1FVRVVFU19TVE9QIEJJVCgwKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI5NDojZGVmaW5lIEFUSDlLX0hUQ19PUF9UWF9EUkFJTiAgICAgICBCSVQoMSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0yOTUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTMxMT1zdHJ1Y3QgYXRoOWtfaHRjX3R4X2N0bCB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MzEyOlx0dTggdHlwZTsgLyogQVRIOUtfSFRDXyogKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0zMTMtXHR1OCBlcGlkO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD0zMTk9c3RhdGljIGlubGluZSBzdHJ1Y3QgYXRoOWtfaHRjX3R4X2N0bCAqSFRDX1NLQl9DQihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0zMjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MzI4OiNpZmRlZiBDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0zMjktI2RlZmluZSBfX1NUQVRfU0FGRShoaWZfZGV2LCBleHByKVx0ZG8geyAoKGhpZl9kZXYpLVx1MDAzZWh0Y19oYW5kbGUtXHUwMDNlZHJ2X3ByaXYgPyAoZXhwcikgOiAwKTsgfSB3aGlsZSAoMClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9Mzg4PXN0YXRpYyBpbmxpbmUgdm9pZCBhdGg5a19odGNfZXJyX3N0YXRfcngoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0zOTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MzkzOiNlbmRpZiAvKiBDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlMgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0zOTQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTQwOT1zdHJ1Y3QgaHRjX2JlYWNvbiB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTQxNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo0MTY6XHRzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqYnNsb3RbQVRIOUtfSFRDX01BWF9CQ05fVklGXTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC00MTctXHR1MzIgYm1pc3NjbnQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTQ1Nj1zdHJ1Y3QgYXRoOWtfaHRjX3ByaXYge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC00NzgtXHR1OCBzdGFfc2xvdDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo0Nzk6XHR1OCB2aWZfc3RhX3Bvc1tBVEg5S19IVENfTUFYX1ZJRl07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNDgwLVx0dTggbnVtX2lic3NfdmlmO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC01MzUtXHRzdHJ1Y3QgZGVsYXllZF93b3JrIGR1dHlfY3ljbGVfd29yaztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo1MzY6I2lmZGVmIENPTkZJR19BVEg5S19IVENfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTUzNy1cdHN0cnVjdCBhdGg5a19kZWJ1ZyBkZWJ1Zztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9NjQxPWludCBhdGg5a19odGNfcmVzdW1lKHN0cnVjdCBodGNfdGFyZ2V0ICpodGNfaGFuZGxlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC02NDItI2VuZGlmXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6NjQzOiNpZmRlZiBDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC02NDQtaW50IGF0aDlrX2h0Y19pbml0X2RlYnVnKHN0cnVjdCBhdGhfaHcgKmFoKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9NjQ4PXN0YXRpYyBpbmxpbmUgdm9pZCBhdGg5a19odGNfZGVpbml0X2RlYnVnKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNjUwLX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo2NTE6I2VuZGlmIC8qIENPTkZJR19BVEg5S19IVENfREVCVUdGUyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTY1Mi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYz0xMTE9c3RhdGljIHZvaWQgYXRoOWtfaHRjX2JlYWNvbl9jb25maWdfYXAoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTExNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jOjExNzpcdGF0aDlrX2Ntbl9iZWFjb25fY29uZmlnX2FwKGFoLCBjb25mLCBBVEg5S19IVENfTUFYX0JDTl9WSUYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMTE4LVx0YXRoOWtfaHRjX2JlYWNvbl9pbml0KHByaXYsIGNvbmYsIGZhbHNlKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYz0xOTE9c3RhdGljIHZvaWQgYXRoOWtfaHRjX3NlbmRfYmVhY29uKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYy0yNDItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYzoyNDM6XHR0eF9jdGwtXHUwMDNldHlwZSA9IEFUSDlLX0hUQ19CRUFDT047XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYy0yNDQtXHR0eF9jdGwtXHUwMDNlZXBpZCA9IHByaXYtXHUwMDNlYmVhY29uX2VwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jPTI2ND1zdGF0aWMgaW50IGF0aDlrX2h0Y19jaG9vc2VfYnNsb3Qoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTI3Ni1cdHRzZnR1ID0gVFNGX1RPX1RVKHRzZiBcdTAwM2VcdTAwM2UgMzIsIHRzZik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYzoyNzc6XHRzbG90ID0gKCh0c2Z0dSAlIGludHZhbCkgKiBBVEg5S19IVENfTUFYX0JDTl9WSUYpIC8gaW50dmFsO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmM6Mjc4Olx0c2xvdCA9IEFUSDlLX0hUQ19NQVhfQkNOX1ZJRiAtIHNsb3QgLSAxO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMjc5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jPTMyNT12b2lkIGF0aDlrX2h0Y19hc3NpZ25fYnNsb3Qoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTMzMi1cdHNwaW5fbG9ja19iaChcdTAwMjZwcml2LVx1MDAzZWJlYWNvbl9sb2NrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jOjMzMzpcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFUSDlLX0hUQ19NQVhfQkNOX1ZJRjsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTMzNC1cdFx0aWYgKHByaXYtXHUwMDNlYmVhY29uLmJzbG90W2ldID09IE5VTEwpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYz0zNjU9dm9pZCBhdGg5a19odGNfc2V0X3RzZmFkanVzdChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMzgwLVx0ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYzozODE6XHR0c2ZhZGp1c3QgPSBjdXJfY29uZi1cdTAwM2ViZWFjb25faW50ZXJ2YWwgKiBhdnAtXHUwMDNlYnNsb3QgLyBBVEg5S19IVENfTUFYX0JDTl9WSUY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYy0zODItXHRhdnAtXHUwMDNldHNmYWRqdXN0ID0gY3B1X3RvX2xlNjQoVFVfVE9fVVNFQyh0c2ZhZGp1c3QpKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jPTM5OD1zdGF0aWMgY29uc3QgY2hhciBhdGg5a19odGNfZ3N0cmluZ3Nfc3RhdHNbXVtFVEhfR1NUUklOR19MRU5dID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMtNDE4LX07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jOjQxOTojZGVmaW5lIEFUSDlLX0hUQ19TU1RBVFNfTEVOIEFSUkFZX1NJWkUoYXRoOWtfaHRjX2dzdHJpbmdzX3N0YXRzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYy00MjAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYz00MzA9aW50IGF0aDlrX2h0Y19nZXRfZXRfc3NldF9jb3VudChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jLTQzMy1cdGlmIChzc2V0ID09IEVUSF9TU19TVEFUUylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM6NDM0Olx0XHRyZXR1cm4gQVRIOUtfSFRDX1NTVEFUU19MRU47XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jLTQzNS1cdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM9NDQ4PXZvaWQgYXRoOWtfaHRjX2dldF9ldF9zdGF0cyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jLTQ3My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM6NDc0Olx0V0FSTl9PTihpICE9IEFUSDlLX0hUQ19TU1RBVFNfTEVOKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMtNDc1LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM9NjA2PXN0YXRpYyBpbnQgYXRoOWtfaW5pdF9wcml2KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmMtNjczLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jOjY3NDpcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFUSDlLX0hUQ19NQVhfQkNOX1ZJRjsgaSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmMtNjc1LVx0XHRwcml2LVx1MDAzZWJlYWNvbi5ic2xvdFtpXSA9IE5VTEw7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jPTE4ND12b2lkIGF0aDlrX2h0Y19yZXNldChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTIzMy1cdG1vZF90aW1lcihcdTAwMjZwcml2LVx1MDAzZXR4LmNsZWFudXBfdGltZXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6MjM0Olx0XHQgIGppZmZpZXMgJiM0MzsgbXNlY3NfdG9famlmZmllcyhBVEg5S19IVENfVFhfQ0xFQU5VUF9JTlRFUlZBTCkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTIzNS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM9MjQwPXN0YXRpYyBpbnQgYXRoOWtfaHRjX3NldF9jaGFubmVsKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMzExLVx0bW9kX3RpbWVyKFx1MDAyNnByaXYtXHUwMDNldHguY2xlYW51cF90aW1lcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzozMTI6XHRcdCAgamlmZmllcyAmIzQzOyBtc2Vjc190b19qaWZmaWVzKEFUSDlLX0hUQ19UWF9DTEVBTlVQX0lOVEVSVkFMKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMzEzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYz0zNTA9c3RhdGljIGludCBhdGg5a19odGNfYWRkX21vbml0b3JfaW50ZXJmYWNlKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMzU3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjM1ODpcdGlmICgocHJpdi1cdTAwM2VudmlmcyBcdTAwM2U9IEFUSDlLX0hUQ19NQVhfVklGKSB8fFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjM1OTpcdCAgICAocHJpdi1cdTAwM2Vuc3RhdGlvbnMgXHUwMDNlPSBBVEg5S19IVENfTUFYX1NUQSkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0zNjAtXHRcdHJldCA9IC1FTk9CVUZTO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0zNjQtXHRzdGFfaWR4ID0gZmZ6KHByaXYtXHUwMDNlc3RhX3Nsb3QpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjM2NTpcdGlmICgoc3RhX2lkeCBcdTAwM2MgMCkgfHwgKHN0YV9pZHggXHUwMDNlIEFUSDlLX0hUQ19NQVhfU1RBKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTM2Ni1cdFx0cmV0ID0gLUVOT0JVRlM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jPTQ2Nj1zdGF0aWMgaW50IGF0aDlrX2h0Y19hZGRfc3RhdGlvbihzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTQ3Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzo0Nzg6XHRpZiAocHJpdi1cdTAwM2Vuc3RhdGlvbnMgXHUwMDNlPSBBVEg5S19IVENfTUFYX1NUQSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy00NzktXHRcdHJldHVybiAtRU5PQlVGUztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtNDgxLVx0c3RhX2lkeCA9IGZmeihwcml2LVx1MDAzZXN0YV9zbG90KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzo0ODI6XHRpZiAoKHN0YV9pZHggXHUwMDNjIDApIHx8IChzdGFfaWR4IFx1MDAzZSBBVEg5S19IVENfTUFYX1NUQSkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtNDgzLVx0XHRyZXR1cm4gLUVOT0JVRlM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jPTcwMj1zdGF0aWMgaW50IGF0aDlrX2h0Y190eF9hZ2dyX29wZXIoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy03MTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6NzE0Olx0aWYgKHRpZCBcdTAwM2U9IEFUSDlLX0hUQ19NQVhfVElEKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTcxNS1cdFx0cmV0dXJuIC1FSU5WQUw7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jPTkwNz1zdGF0aWMgaW50IGF0aDlrX2h0Y19zdGFydChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtOTYwLVx0c3Bpbl9sb2NrX2JoKFx1MDAyNnByaXYtXHUwMDNldHgudHhfbG9jayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6OTYxOlx0cHJpdi1cdTAwM2V0eC5mbGFncyBcdTAwMjY9IH5BVEg5S19IVENfT1BfVFhfUVVFVUVTX1NUT1A7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtOTYyLVx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2cHJpdi1cdTAwM2V0eC50eF9sb2NrKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtOTY2LVx0bW9kX3RpbWVyKFx1MDAyNnByaXYtXHUwMDNldHguY2xlYW51cF90aW1lcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzo5Njc6XHRcdCAgamlmZmllcyAmIzQzOyBtc2Vjc190b19qaWZmaWVzKEFUSDlLX0hUQ19UWF9DTEVBTlVQX0lOVEVSVkFMKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtOTY4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYz0xNjU4PXN0YXRpYyBpbnQgYXRoOWtfaHRjX2FtcGR1X2FjdGlvbihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMTY4OC1cdGNhc2UgSUVFRTgwMjExX0FNUERVX1RYX09QRVJBVElPTkFMOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjE2ODk6XHRcdGlmICh0aWQgXHUwMDNlPSBBVEg5S19IVENfTUFYX1RJRCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTE2OTAtXHRcdFx0cmV0ID0gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM9MTg3ND1zdHJ1Y3QgaWVlZTgwMjExX29wcyBhdGg5a19odGNfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0xOTA2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjE5MDc6I2lmZGVmIENPTkZJR19BVEg5S19IVENfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTE5MDgtXHQuZ2V0X2V0X3NzZXRfY291bnQgID0gYXRoOWtfaHRjX2dldF9ldF9zc2V0X2NvdW50LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz0yMz1zdGF0aWMgY29uc3QgaW50IHN1YnR5cGVfdHhxX3RvX2h3cVtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0yOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzozMDojZGVmaW5lIEFUSDlLX0hUQ19JTklUX1RYUShzdWJ0eXBlKSBkbyB7XHRcdFx0XFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0zMS1cdFx0cWkudHFpX3N1YnR5cGUgPSBzdWJ0eXBlX3R4cV90b19od3Fbc3VidHlwZV07XHRcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz01Nj12b2lkIGF0aDlrX2h0Y19jaGVja19zdG9wX3F1ZXVlcyhzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTU5LVx0cHJpdi1cdTAwM2V0eC5xdWV1ZWRfY250JiM0MzsmIzQzOztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo2MDpcdGlmICgocHJpdi1cdTAwM2V0eC5xdWV1ZWRfY250IFx1MDAzZT0gQVRIOUtfSFRDX1RYX1RIUkVTSE9MRCkgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NjE6XHQgICAgIShwcml2LVx1MDAzZXR4LmZsYWdzIFx1MDAyNiBBVEg5S19IVENfT1BfVFhfUVVFVUVTX1NUT1ApKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NjI6XHRcdHByaXYtXHUwMDNldHguZmxhZ3MgfD0gQVRIOUtfSFRDX09QX1RYX1FVRVVFU19TVE9QO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTYzLVx0XHRpZWVlODAyMTFfc3RvcF9xdWV1ZXMocHJpdi1cdTAwM2Vodyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTY4PXZvaWQgYXRoOWtfaHRjX2NoZWNrX3dha2VfcXVldWVzKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNzAtXHRzcGluX2xvY2tfYmgoXHUwMDI2cHJpdi1cdTAwM2V0eC50eF9sb2NrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo3MTpcdGlmICgocHJpdi1cdTAwM2V0eC5xdWV1ZWRfY250IFx1MDAzYyBBVEg5S19IVENfVFhfVEhSRVNIT0xEKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo3MjpcdCAgICAocHJpdi1cdTAwM2V0eC5mbGFncyBcdTAwMjYgQVRIOUtfSFRDX09QX1RYX1FVRVVFU19TVE9QKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjczOlx0XHRwcml2LVx1MDAzZXR4LmZsYWdzIFx1MDAyNj0gfkFUSDlLX0hUQ19PUF9UWF9RVUVVRVNfU1RPUDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy03NC1cdFx0aWVlZTgwMjExX3dha2VfcXVldWVzKHByaXYtXHUwMDNlaHcpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz0yMTQ9c3RhdGljIHZvaWQgYXRoOWtfaHRjX3R4X21nbXQoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0yNDAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6MjQxOlx0dHhfY3RsLVx1MDAzZXR5cGUgPSBBVEg5S19IVENfTUdNVDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0yNDItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTI2MD1zdGF0aWMgdm9pZCBhdGg5a19odGNfdHhfZGF0YShzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTI5Mi1cdGlmICh0eF9pbmZvLVx1MDAzZWZsYWdzIFx1MDAyNiBJRUVFODAyMTFfVFhfQ1RMX0FNUERVKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6MjkzOlx0XHR0eF9jdGwtXHUwMDNldHlwZSA9IEFUSDlLX0hUQ19BTVBEVTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzoyOTQ6XHRcdHR4X2hkci5kYXRhX3R5cGUgPSBBVEg5S19IVENfQU1QRFU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMjk1LVx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzoyOTY6XHRcdHR4X2N0bC1cdTAwM2V0eXBlID0gQVRIOUtfSFRDX05PUk1BTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzoyOTc6XHRcdHR4X2hkci5kYXRhX3R5cGUgPSBBVEg5S19IVENfTk9STUFMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTI5OC1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMzEyLVx0XHRpZiAoc2tiLVx1MDAzZWxlbiBcdTAwM2UgcHJpdi1cdTAwM2Vody1cdTAwM2V3aXBoeS1cdTAwM2VydHNfdGhyZXNob2xkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjMxMzpcdFx0XHRmbGFncyB8PSBBVEg5S19IVENfVFhfUlRTQ1RTO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTMxNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0zMTUtXHQvKiBDVFMtdG8tc2VsZiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjMxNjpcdGlmICghKGZsYWdzIFx1MDAyNiBBVEg5S19IVENfVFhfUlRTQ1RTKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0zMTctXHQgICAgKHZpZiBcdTAwMjZcdTAwMjYgdmlmLVx1MDAzZWJzc19jb25mLnVzZV9jdHNfcHJvdCkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6MzE4Olx0XHRmbGFncyB8PSBBVEg5S19IVENfVFhfQ1RTT05MWTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0zMTktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTM5Mj1zdGF0aWMgaW5saW5lIGJvb2wgX19hdGg5a19odGNfY2hlY2tfdHhfYWdncihzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTM5Ny1cdHNwaW5fbG9ja19iaChcdTAwMjZwcml2LVx1MDAzZXR4LnR4X2xvY2spO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjM5ODpcdGlmICgodGlkIFx1MDAzYyBBVEg5S19IVENfTUFYX1RJRCkgXHUwMDI2XHUwMDI2IChpc3RhLVx1MDAzZXRpZF9zdGF0ZVt0aWRdID09IEFHR1JfU1RPUCkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMzk5LVx0XHRyZXQgPSB0cnVlO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz00NDU9c3RhdGljIHZvaWQgYXRoOWtfaHRjX3R4X3Byb2Nlc3Moc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00NzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NDc5Olx0aWYgKHR4cy1cdTAwM2V0c19mbGFncyBcdTAwMjYgQVRIOUtfSFRDX1RYU1RBVF9BQ0spIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00ODAtXHRcdHR4X2luZm8tXHUwMDNlZmxhZ3MgfD0gSUVFRTgwMjExX1RYX1NUQVRfQUNLO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00ODQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NDg1Olx0aWYgKHR4cy1cdTAwM2V0c19mbGFncyBcdTAwMjYgQVRIOUtfSFRDX1RYU1RBVF9GSUxUKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ4Ni1cdFx0dHhfaW5mby1cdTAwM2VmbGFncyB8PSBJRUVFODAyMTFfVFhfU1RBVF9UWF9GSUxURVJFRDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00ODctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NDg4Olx0aWYgKHR4cy1cdTAwM2V0c19mbGFncyBcdTAwMjYgQVRIOUtfSFRDX1RYU1RBVF9SVENfQ1RTKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ4OS1cdFx0cmF0ZS1cdTAwM2VmbGFncyB8PSBJRUVFODAyMTFfVFhfUkNfVVNFX1JUU19DVFM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ5MS1cdHJhdGUtXHUwMDNlY291bnQgPSAxO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjQ5MjpcdHJhdGUtXHUwMDNlaWR4ID0gTVModHhzLVx1MDAzZXRzX3JhdGUsIEFUSDlLX0hUQ19UWFNUQVRfUkFURSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDkzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjQ5NDpcdGlmICh0eHMtXHUwMDNldHNfZmxhZ3MgXHUwMDI2IEFUSDlLX0hUQ19UWFNUQVRfTUNTKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDk1LVx0XHRyYXRlLVx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9UWF9SQ19NQ1M7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDk2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjQ5NzpcdFx0aWYgKHR4cy1cdTAwM2V0c19mbGFncyBcdTAwMjYgQVRIOUtfSFRDX1RYU1RBVF9DVzQwKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ5OC1cdFx0XHRyYXRlLVx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9UWF9SQ180MF9NSFpfV0lEVEg7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NDk5Olx0XHRpZiAodHhzLVx1MDAzZXRzX2ZsYWdzIFx1MDAyNiBBVEg5S19IVENfVFhTVEFUX1NHSSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy01MDAtXHRcdFx0cmF0ZS1cdTAwM2VmbGFncyB8PSBJRUVFODAyMTFfVFhfUkNfU0hPUlRfR0k7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTUzOT12b2lkIGF0aDlrX2h0Y190eF9kcmFpbihzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTU0My1cdHNwaW5fbG9ja19iaChcdTAwMjZwcml2LVx1MDAzZXR4LnR4X2xvY2spO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjU0NDpcdHByaXYtXHUwMDNldHguZmxhZ3MgfD0gQVRIOUtfSFRDX09QX1RYX0RSQUlOO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTU0NS1cdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnByaXYtXHUwMDNldHgudHhfbG9jayk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTU3My1cdHNwaW5fbG9ja19iaChcdTAwMjZwcml2LVx1MDAzZXR4LnR4X2xvY2spO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjU3NDpcdHByaXYtXHUwMDNldHguZmxhZ3MgXHUwMDI2PSB+QVRIOUtfSFRDX09QX1RYX0RSQUlOO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTU3NS1cdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnByaXYtXHUwMDNldHgudHhfbG9jayk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTU3OD12b2lkIGF0aDlrX3R4X2ZhaWxlZF90YXNrbGV0KHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNTgyLVx0c3Bpbl9sb2NrKFx1MDAyNnByaXYtXHUwMDNldHgudHhfbG9jayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NTgzOlx0aWYgKHByaXYtXHUwMDNldHguZmxhZ3MgXHUwMDI2IEFUSDlLX0hUQ19PUF9UWF9EUkFJTikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTU4NC1cdFx0c3Bpbl91bmxvY2soXHUwMDI2cHJpdi1cdTAwM2V0eC50eF9sb2NrKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9NjE4PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiogYXRoOWtfaHRjX3R4X2dldF9wYWNrZXQoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy02MjQtXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjYyNTpcdHU4IGVwaWQgPSBNUyh0eHMtXHUwMDNldHNfcmF0ZSwgQVRIOUtfSFRDX1RYU1RBVF9FUElEKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy02MjYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTcxNj1zdGF0aWMgaW5saW5lIGJvb2wgY2hlY2tfcGFja2V0KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNzI0LVx0XHQgICAgICAgdHhfY3RsLVx1MDAzZXRpbWVzdGFtcCAmIzQzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjcyNTpcdFx0ICAgICAgIG1zZWNzX3RvX2ppZmZpZXMoQVRIOUtfSFRDX1RYX1RJTUVPVVRfSU5URVJWQUwpKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTcyNi1cdFx0YXRoX2RiZyhjb21tb24sIFhNSVQsIFwmIzM0O0Ryb3BwaW5nIGEgcGFja2V0IGR1ZSB0byBUWCB0aW1lb3V0XFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9NzYxPXZvaWQgYXRoOWtfaHRjX3R4X2NsZWFudXBfdGltZXIoc3RydWN0IHRpbWVyX2xpc3QgKnQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTc3Ni1cdFx0XHRcdGV2ZW50LVx1MDAzZXR4cy5jb29raWUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6Nzc3Olx0XHRcdFx0TVMoZXZlbnQtXHUwMDNldHhzLnRzX3JhdGUsIEFUSDlLX0hUQ19UWFNUQVRfRVBJRCkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTc3OC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNzg0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjc4NTpcdFx0aWYgKCYjNDM7JiM0MztldmVudC1cdTAwM2Vjb3VudCBcdTAwM2U9IEFUSDlLX0hUQ19UWF9USU1FT1VUX0NPVU5UKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNzg2LVx0XHRcdGxpc3RfZGVsKFx1MDAyNmV2ZW50LVx1MDAzZWxpc3QpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy04MDUtXHRtb2RfdGltZXIoXHUwMDI2cHJpdi1cdTAwM2V0eC5jbGVhbnVwX3RpbWVyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjgwNjpcdFx0ICBqaWZmaWVzICYjNDM7IG1zZWNzX3RvX2ppZmZpZXMoQVRIOUtfSFRDX1RYX0NMRUFOVVBfSU5URVJWQUwpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy04MDctfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz04Mjc9Ym9vbCBhdGg5a19odGNfdHhxX3NldHVwKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdiwgaW50IHN1YnR5cGUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTgzNC1cdG1lbXNldChcdTAwMjZxaSwgMCwgc2l6ZW9mKHFpKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6ODM1Olx0QVRIOUtfSFRDX0lOSVRfVFhRKHN1YnR5cGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTgzNi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9ODUyPWludCBhdGg5a19odGNfY2FicV9zZXR1cChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTg1Ni1cdG1lbXNldChcdTAwMjZxaSwgMCwgc2l6ZW9mKHFpKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6ODU3Olx0QVRIOUtfSFRDX0lOSVRfVFhRKDApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTg1OC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9MTE4Nz1pbnQgYXRoOWtfcnhfaW5pdChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTExOTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6MTE5NDpcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFUSDlLX0hUQ19SWEJVRjsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0xMTk1LVx0XHRzdHJ1Y3QgYXRoOWtfaHRjX3J4YnVmICpyeGJ1ZiA9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jPTEzOD12b2lkIGF0aDlrX3dtaV9ldmVudF90YXNrbGV0KHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmMtMTc4LVx0XHRcdHNwaW5fbG9ja19iaChcdTAwMjZwcml2LVx1MDAzZXR4LnR4X2xvY2spO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jOjE3OTpcdFx0XHRpZiAocHJpdi1cdTAwM2V0eC5mbGFncyBcdTAwMjYgQVRIOUtfSFRDX09QX1RYX0RSQUlOKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmMtMTgwLVx0XHRcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2cHJpdi1cdTAwM2V0eC50eF9sb2NrKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg9Mzk9c3RydWN0IHdtaV9ldmVudF9zd2JhIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmgtNTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6NTE6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX0FDSyAgICAgICAgQklUKDApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6NTI6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX0ZJTFQgICAgICAgQklUKDEpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6NTM6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX1JUQ19DVFMgICAgQklUKDIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6NTQ6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX01DUyAgICAgICAgQklUKDMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6NTU6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX0NXNDAgICAgICAgQklUKDQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6NTY6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX1NHSSAgICAgICAgQklUKDUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmgtNTctXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oLTYzLSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oOjY0OiNkZWZpbmUgQVRIOUtfSFRDX1RYU1RBVF9SQVRFICAgICAgIDB4MGZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo2NTojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfUkFURV9TICAgICAwXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmgtNjYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6Njc6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX0VQSUQgICAgICAgMHhmMFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oOjY4OiNkZWZpbmUgQVRIOUtfSFRDX1RYU1RBVF9FUElEX1MgICAgIDRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaC02OS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAwMTowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODExOAoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDg5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgSSBhbmFseXplIHRoaXM6CgoqKkFuYWx5emluZyBhdGg5a19odGMgYW5kIFJlbGF0ZWQgRnVuY3Rpb25zKioKCk9rYXksIHNvIGBhdGg5a19odGNgIGlzIHRoZSBVU0IgV2ktRmkgZHJpdmVyLCB0aGF0JiMzOTtzIHRoZSBzdGFydGluZyBwb2ludC4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgYGF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnYCBhbmQsIG1vcmUgaW1wb3J0YW50bHksIGBhdGhfY21uX3Byb2Nlc3NfZmZ0YCBhcmUgbGV2ZXJhZ2VkIGluIGJvdGggdGhlIHN0YW5kYXJkIGBhdGg5a2AgZHJpdmVyIGFuZCB0aGUgSFRDIHZhcmlhbnQuIFRoZSBIVEMgdmVyc2lvbiBzdWdnZXN0cyBhIHRldGhlcmVkIG9yIGhvc3RlZCBkZXZpY2UsIHNvIHRoZXJlJiMzOTtzIGxpa2VseSBzb21lIGFyY2hpdGVjdHVyYWwgZGlmZmVyZW5jZSB0byB1bmRlcnN0YW5kIGluIHRoZSBGRlQgcHJvY2Vzc2luZy4gVGhlIHNwZWN0cmFsIGluaXRpYWxpemF0aW9uIGRlYnVnZ2luZyBpcyBpbnRlcmVzdGluZyB0b28sIEkmIzM5O2xsIG5lZWQgdG8gc2VlIGhvdyB0aGV5JiMzOTtyZSBoYW5kbGluZyBkZWJ1Z2dpbmcgdGhlIGluaXRpYWxpemF0aW9uIG9mIHNwZWN0cmFsIGRhdGEuCgpNeSBpbW1lZGlhdGUgcGxhbiBpcyB0byB1c2UgYGdyZXBgIHRvIHF1aWNrbHkgY3Jvc3MtcmVmZXJlbmNlIHRoZSBgYXRoX2Ntbl9wcm9jZXNzX2ZmdGAgZnVuY3Rpb24gYW5kIHRoZSB1c2Ugb2YgdGhlIGBzcGVjX3ByaXZgIHN0cnVjdHVyZS4gVGhpcyBzaG91bGQgaGVscCB0byBxdWlja2x5IGhpZ2hsaWdodCB0aGUga2V5IGFyZWFzIG9mIGludGVyYWN0aW9uIGFuZCBkYXRhIGZsb3cuIFRoaXMgd2lsbCBsaWtlbHkgZ2l2ZSBtZSBhIGdvb2Qgb3ZlcnZpZXcgb2YgaG93IHRoZSBGRlQgZnVuY3Rpb25hbGl0eSBpcyBoYW5kbGVkIGF0IGEgbG93IGxldmVsIGluIHRoZSBkcml2ZXIsIGFuZCBpdHMgYXNzb2NpYXRlZCBkYXRhLiBUaGlzIHdpbGwgcHJvdmlkZSBhIHF1aWNrZXIgbWFwIG9mIHdoZXJlIHRoZSBzcGVjdHJhbCBkYXRhIGFuZCBwcm9jZXNzaW5nIGFyZSBiZWluZyBoYW5kbGVkIGluIHJlbGF0aW9uIHRvIHRoZSBtYWluIGRyaXZlciBhbmQgdGhlIEhUQyB2ZXJzaW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDAxOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2F0aF9jbW5fcHJvY2Vzc19mZnR8c3BlY19wcml2JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXRoOWsuaD05ODM9c3RydWN0IGF0aF9zb2Z0YyB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2F0aDlrLmgtMTA2My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hdGg5ay5oOjEwNjQ6XHRzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2IHNwZWNfcHJpdjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hdGg5ay5oLTEwNjUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NoYW5uZWwuYz0yMz1zdGF0aWMgaW50IGF0aF9zZXRfY2hhbm5lbChzdHJ1Y3QgYXRoX3NvZnRjICpzYylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY2hhbm5lbC5jLTk1LVx0XHRpZiAodGVzdF9iaXQoQVRIX09QX1NDQU5OSU5HLCBcdTAwMjZjb21tb24tXHUwMDNlb3BfZmxhZ3MpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NoYW5uZWwuYzo5NjpcdFx0XHRzYy1cdTAwM2VzcGVjX3ByaXYuc3BlY3RyYWxfbW9kZSA9PSBTUEVDVFJBTF9DSEFOU0NBTilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jaGFubmVsLmM6OTc6XHRcdFx0YXRoOWtfY21uX3NwZWN0cmFsX3NjYW5fdHJpZ2dlcihjb21tb24sIFx1MDAyNnNjLVx1MDAzZXNwZWNfcHJpdik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY2hhbm5lbC5jLTk4LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYz0yMj1zdGF0aWMgczggZml4X3Jzc2lfaW52X29ubHkodTggcnNzaV92YWwpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTI4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjI5OnN0YXRpYyB2b2lkIGF0aF9kZWJ1Z19zZW5kX2ZmdF9zYW1wbGUoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTMwLVx0XHRcdFx0ICAgICAgc3RydWN0IGZmdF9zYW1wbGVfdGx2ICpmZnRfc2FtcGxlX3Rsdilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMzItXHRpbnQgbGVuZ3RoO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjMzOlx0aWYgKCFzcGVjX3ByaXYtXHUwMDNlcmZzX2NoYW5fc3BlY19zY2FuKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTM0LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTM3LVx0XHQgc2l6ZW9mKCpmZnRfc2FtcGxlX3Rsdik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6Mzg6XHRyZWxheV93cml0ZShzcGVjX3ByaXYtXHUwMDNlcmZzX2NoYW5fc3BlY19zY2FuLCBmZnRfc2FtcGxlX3RsdiwgbGVuZ3RoKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0zOS19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jPTEyNz10eXBlZGVmIGludCAoYXRoX2Ntbl9mZnRfc2FtcGxlX2hhbmRsZXIpIChzdHJ1Y3QgYXRoX3J4X3N0YXR1cyAqcnMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6MTI4Olx0XHRcdHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xMjktXHRcdFx0dTggKnNhbXBsZV9idWYsIHU2NCB0c2YsIHUxNiBmcmVxLCBpbnQgY2hhbl90eXBlKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM9MTMyPWF0aF9jbW5fcHJvY2Vzc19odDIwX2ZmdChzdHJ1Y3QgYXRoX3J4X3N0YXR1cyAqcnMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6MTMzOlx0XHRcdHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xMzQtXHRcdFx0dTggKnNhbXBsZV9idWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTEzNy1cdHN0cnVjdCBmZnRfc2FtcGxlX2h0MjAgZmZ0X3NhbXBsZV8yMDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzoxMzg6XHRzdHJ1Y3QgYXRoX2NvbW1vbiAqY29tbW9uID0gYXRoOWtfaHdfY29tbW9uKHNwZWNfcHJpdi1cdTAwM2VhaCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6MTM5Olx0c3RydWN0IGF0aF9odyAqYWggPSBzcGVjX3ByaXYtXHUwMDNlYWg7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTQwLVx0c3RydWN0IGF0aF9odDIwX21hZ19pbmZvICptYWdfaW5mbztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMjI5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjIzMDpcdGF0aF9kZWJ1Z19zZW5kX2ZmdF9zYW1wbGUoc3BlY19wcml2LCB0bHYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTIzMS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM9MjM2PWF0aF9jbW5fcHJvY2Vzc19odDIwXzQwX2ZmdChzdHJ1Y3QgYXRoX3J4X3N0YXR1cyAqcnMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6MjM3Olx0XHRcdHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0yMzgtXHRcdFx0dTggKnNhbXBsZV9idWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTI0MS1cdHN0cnVjdCBmZnRfc2FtcGxlX2h0MjBfNDAgZmZ0X3NhbXBsZV80MDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzoyNDI6XHRzdHJ1Y3QgYXRoX2NvbW1vbiAqY29tbW9uID0gYXRoOWtfaHdfY29tbW9uKHNwZWNfcHJpdi1cdTAwM2VhaCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6MjQzOlx0c3RydWN0IGF0aF9odyAqYWggPSBzcGVjX3ByaXYtXHUwMDNlYWg7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMjQ0LVx0c3RydWN0IGF0aDlrX2h3X2NhbF9kYXRhICpjYWxkYXRhID0gYWgtXHUwMDNlY2FsZGF0YTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNDA2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjQwNzpcdGF0aF9kZWJ1Z19zZW5kX2ZmdF9zYW1wbGUoc3BlY19wcml2LCB0bHYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTQwOC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM9NDQ4PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo0NDk6YXRoX2Ntbl9pc19mZnRfYnVmX2Z1bGwoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTQ1MC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTQ1My1cdHN0cnVjdCByY2hhbl9idWYgKmJ1ZjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo0NTQ6XHRzdHJ1Y3QgcmNoYW4gKnJjID0gc3BlY19wcml2LVx1MDAzZXJmc19jaGFuX3NwZWNfc2NhbjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy00NTUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTQ2Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo0Njg6c3RhdGljIHZvaWQgYXRoX2Ntbl9jb3VudF9mZnRfc2FtcGxlKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy00NjktXHRcdFx0XHQgICAgIGludCByZXQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNDcwLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo0NzE6XHRzdHJ1Y3QgYXRoX3J4X3N0YXRzICpyeF9zdGF0cyA9IHNwZWNfcHJpdi1cdTAwM2VyeF9zdGF0cztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy00NzItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTQ4Mi0vKiByZXR1cm5zIDEgaWYgdGhpcyB3YXMgYSBzcGVjdHJhbCBmcmFtZSwgZXZlbiBpZiBub3QgaGFuZGxlZC4gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo0ODM6aW50IGF0aF9jbW5fcHJvY2Vzc19mZnQoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LCBzdHJ1Y3QgaWVlZTgwMjExX2hkciAqaGRyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTQ4NC1cdFx0ICAgIHN0cnVjdCBhdGhfcnhfc3RhdHVzICpycywgdTY0IHRzZilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNDg2LVx0dTggc2FtcGxlX2J1ZltTUEVDVFJBTF9TQU1QTEVfTUFYX0xFTl0gPSB7MH07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6NDg3Olx0c3RydWN0IGF0aF9odyAqYWggPSBzcGVjX3ByaXYtXHUwMDNlYWg7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6NDg4Olx0c3RydWN0IGF0aF9jb21tb24gKmNvbW1vbiA9IGF0aDlrX2h3X2NvbW1vbihzcGVjX3ByaXYtXHUwMDNlYWgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTQ4OS1cdHU4IG51bV9iaW5zLCAqdmRhdGEgPSAodTggKiloZHI7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTUxNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo1MTg6XHRpZiAoIXNwZWNfcHJpdi1cdTAwM2VyZnNfY2hhbl9zcGVjX3NjYW4pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNTE5LVx0XHRyZXR1cm4gMTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNTIzLVx0ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6NTI0Olx0cmV0ID0gYXRoX2Ntbl9pc19mZnRfYnVmX2Z1bGwoc3BlY19wcml2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy01MjUtXHRpZiAocmV0ID09IDEpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNjM2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjYzNzpcdFx0XHRcdHJldCA9IGZmdF9oYW5kbGVyKHJzLCBzcGVjX3ByaXYsIHNhbXBsZV9idWYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNjM4LVx0XHRcdFx0XHRcdCAgdHNmLCBmcmVxLCBjaGFuX3R5cGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTYzOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo2NDA6XHRcdFx0XHRhdGhfY21uX2NvdW50X2ZmdF9zYW1wbGUoc3BlY19wcml2LCByZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTY0MS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNjUxLVx0XHRcdGlmIChzYW1wbGVfYnl0ZXMgPT0gc2FtcGxlX2xlbikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjY1MjpcdFx0XHRcdHJldCA9IGZmdF9oYW5kbGVyKHJzLCBzcGVjX3ByaXYsIHNhbXBsZV9zdGFydCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy02NTMtXHRcdFx0XHRcdFx0ICB0c2YsIGZyZXEsIGNoYW5fdHlwZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNjU0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjY1NTpcdFx0XHRcdGF0aF9jbW5fY291bnRfZmZ0X3NhbXBsZShzcGVjX3ByaXYsIHJldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNjU2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy02OTAtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjY5MTpFWFBPUlRfU1lNQk9MKGF0aF9jbW5fcHJvY2Vzc19mZnQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTY5Mi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM9Njk3PXN0YXRpYyBzc2l6ZV90IHJlYWRfZmlsZV9zcGVjX3NjYW5fY3RsKHN0cnVjdCBmaWxlICpmaWxlLCBjaGFyIF9fdXNlciAqdXNlcl9idWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTY5OS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6NzAwOlx0c3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2ID0gZmlsZS1cdTAwM2Vwcml2YXRlX2RhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNzAxLVx0Y2hhciAqbW9kZSA9IFwmIzM0O1wmIzM0Oztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNzAzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjcwNDpcdHN3aXRjaCAoc3BlY19wcml2LVx1MDAzZXNwZWN0cmFsX21vZGUpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy03MDUtXHRjYXNlIFNQRUNUUkFMX0RJU0FCTEVEOlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYz03MjI9dm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfc2Nhbl90cmlnZ2VyKHN0cnVjdCBhdGhfY29tbW9uICpjb21tb24sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6NzIzOlx0XHRcdFx0IHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy03MjQte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjcyNTpcdHN0cnVjdCBhdGhfaHcgKmFoID0gc3BlY19wcml2LVx1MDAzZWFoO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTcyNi1cdHUzMiByeGZpbHRlcjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNzM1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjczNjpcdGlmICghc3BlY19wcml2LVx1MDAzZXNwZWNfY29uZmlnLmVuYWJsZWQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNzM3LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTc0OS1cdCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjc1MDpcdGF0aDlrX2Ntbl9zcGVjdHJhbF9zY2FuX2NvbmZpZyhjb21tb24sIHNwZWNfcHJpdiwgc3BlY19wcml2LVx1MDAzZXNwZWN0cmFsX21vZGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTc1MS1cdGF0aDlrX2h3X29wcyhhaCktXHUwMDNlc3BlY3RyYWxfc2Nhbl90cmlnZ2VyKGFoKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM9NzU2PWludCBhdGg5a19jbW5fc3BlY3RyYWxfc2Nhbl9jb25maWcoc3RydWN0IGF0aF9jb21tb24gKmNvbW1vbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo3NTc6XHRcdFx0ICAgICAgIHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy03NTgtXHRcdFx0ICAgICAgIGVudW0gc3BlY3RyYWxfbW9kZSBzcGVjdHJhbF9tb2RlKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTc1OS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6NzYwOlx0c3RydWN0IGF0aF9odyAqYWggPSBzcGVjX3ByaXYtXHUwMDNlYWg7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNzYxLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy03NjgtXHRjYXNlIFNQRUNUUkFMX0RJU0FCTEVEOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjc2OTpcdFx0c3BlY19wcml2LVx1MDAzZXNwZWNfY29uZmlnLmVuYWJsZWQgPSAwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTc3MC1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTc3NC1cdFx0ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6Nzc1Olx0XHRzcGVjX3ByaXYtXHUwMDNlc3BlY19jb25maWcuZW5kbGVzcyA9IDE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6Nzc2Olx0XHRzcGVjX3ByaXYtXHUwMDNlc3BlY19jb25maWcuZW5hYmxlZCA9IDE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNzc3LVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNzc5LVx0Y2FzZSBTUEVDVFJBTF9NQU5VQUw6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6NzgwOlx0XHRzcGVjX3ByaXYtXHUwMDNlc3BlY19jb25maWcuZW5kbGVzcyA9IDA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6NzgxOlx0XHRzcGVjX3ByaXYtXHUwMDNlc3BlY19jb25maWcuZW5hYmxlZCA9IDE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNzgyLVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNzg3LVx0YXRoX3BzX29wcyhjb21tb24pLVx1MDAzZXdha2V1cChjb21tb24pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjc4ODpcdGF0aDlrX2h3X29wcyhhaCktXHUwMDNlc3BlY3RyYWxfc2Nhbl9jb25maWcoYWgsIFx1MDAyNnNwZWNfcHJpdi1cdTAwM2VzcGVjX2NvbmZpZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNzg5LVx0YXRoX3BzX29wcyhjb21tb24pLVx1MDAzZXJlc3RvcmUoY29tbW9uKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy03OTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6NzkxOlx0c3BlY19wcml2LVx1MDAzZXNwZWN0cmFsX21vZGUgPSBzcGVjdHJhbF9tb2RlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTc5Mi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM9Nzk3PXN0YXRpYyBzc2l6ZV90IHdyaXRlX2ZpbGVfc3BlY19zY2FuX2N0bChzdHJ1Y3QgZmlsZSAqZmlsZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtODAwLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo4MDE6XHRzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYgPSBmaWxlLVx1MDAzZXByaXZhdGVfZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo4MDI6XHRzdHJ1Y3QgYXRoX2NvbW1vbiAqY29tbW9uID0gYXRoOWtfaHdfY29tbW9uKHNwZWNfcHJpdi1cdTAwM2VhaCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtODAzLVx0Y2hhciBidWZbMzJdO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy04MTUtXHRpZiAoc3RybmNtcChcJiMzNDt0cmlnZ2VyXCYjMzQ7LCBidWYsIDcpID09IDApIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo4MTY6XHRcdGF0aDlrX2Ntbl9zcGVjdHJhbF9zY2FuX3RyaWdnZXIoY29tbW9uLCBzcGVjX3ByaXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTgxNy1cdH0gZWxzZSBpZiAoc3RybmNtcChcJiMzNDtiYWNrZ3JvdW5kXCYjMzQ7LCBidWYsIDEwKSA9PSAwKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6ODE4Olx0XHRhdGg5a19jbW5fc3BlY3RyYWxfc2Nhbl9jb25maWcoY29tbW9uLCBzcGVjX3ByaXYsIFNQRUNUUkFMX0JBQ0tHUk9VTkQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTgxOS1cdFx0YXRoX2RiZyhjb21tb24sIENPTkZJRywgXCYjMzQ7c3BlY3RyYWwgc2NhbjogYmFja2dyb3VuZCBtb2RlIGVuYWJsZWRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTgyMC1cdH0gZWxzZSBpZiAoc3RybmNtcChcJiMzNDtjaGFuc2NhblwmIzM0OywgYnVmLCA4KSA9PSAwKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6ODIxOlx0XHRhdGg5a19jbW5fc3BlY3RyYWxfc2Nhbl9jb25maWcoY29tbW9uLCBzcGVjX3ByaXYsIFNQRUNUUkFMX0NIQU5TQ0FOKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy04MjItXHRcdGF0aF9kYmcoY29tbW9uLCBDT05GSUcsIFwmIzM0O3NwZWN0cmFsIHNjYW46IGNoYW5uZWwgc2NhbiBtb2RlIGVuYWJsZWRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTgyMy1cdH0gZWxzZSBpZiAoc3RybmNtcChcJiMzNDttYW51YWxcJiMzNDssIGJ1ZiwgNikgPT0gMCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjgyNDpcdFx0YXRoOWtfY21uX3NwZWN0cmFsX3NjYW5fY29uZmlnKGNvbW1vbiwgc3BlY19wcml2LCBTUEVDVFJBTF9NQU5VQUwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTgyNS1cdFx0YXRoX2RiZyhjb21tb24sIENPTkZJRywgXCYjMzQ7c3BlY3RyYWwgc2NhbjogbWFudWFsIG1vZGUgZW5hYmxlZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtODI2LVx0fSBlbHNlIGlmIChzdHJuY21wKFwmIzM0O2Rpc2FibGVcJiMzNDssIGJ1ZiwgNykgPT0gMCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjgyNzpcdFx0YXRoOWtfY21uX3NwZWN0cmFsX3NjYW5fY29uZmlnKGNvbW1vbiwgc3BlY19wcml2LCBTUEVDVFJBTF9ESVNBQkxFRCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtODI4LVx0XHRhdGhfZGJnKGNvbW1vbiwgQ09ORklHLCBcJiMzNDtzcGVjdHJhbCBzY2FuOiBkaXNhYmxlZFxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jPTg0OD1zdGF0aWMgc3NpemVfdCByZWFkX2ZpbGVfc3BlY3RyYWxfc2hvcnRfcmVwZWF0KHN0cnVjdCBmaWxlICpmaWxlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy04NTEte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjg1MjpcdHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiA9IGZpbGUtXHUwMDNlcHJpdmF0ZV9kYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTg1My1cdGNoYXIgYnVmWzMyXTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtODU1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjg1NjpcdGxlbiA9IHNwcmludGYoYnVmLCBcJiMzNDslZFxcblwmIzM0Oywgc3BlY19wcml2LVx1MDAzZXNwZWNfY29uZmlnLnNob3J0X3JlcGVhdCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtODU3LVx0cmV0dXJuIHNpbXBsZV9yZWFkX2Zyb21fYnVmZmVyKHVzZXJfYnVmLCBjb3VudCwgcHBvcywgYnVmLCBsZW4pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYz04NjA9c3RhdGljIHNzaXplX3Qgd3JpdGVfZmlsZV9zcGVjdHJhbF9zaG9ydF9yZXBlYXQoc3RydWN0IGZpbGUgKmZpbGUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTg2My17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6ODY0Olx0c3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2ID0gZmlsZS1cdTAwM2Vwcml2YXRlX2RhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtODY1LVx0dW5zaWduZWQgbG9uZyB2YWw7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTg3NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo4NzU6XHRzcGVjX3ByaXYtXHUwMDNlc3BlY19jb25maWcuc2hvcnRfcmVwZWF0ID0gdmFsO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTg3Ni1cdHJldHVybiBjb3VudDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM9ODkxPXN0YXRpYyBzc2l6ZV90IHJlYWRfZmlsZV9zcGVjdHJhbF9jb3VudChzdHJ1Y3QgZmlsZSAqZmlsZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtODk0LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo4OTU6XHRzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYgPSBmaWxlLVx1MDAzZXByaXZhdGVfZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy04OTYtXHRjaGFyIGJ1ZlszMl07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTg5OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo4OTk6XHRsZW4gPSBzcHJpbnRmKGJ1ZiwgXCYjMzQ7JWRcXG5cJiMzNDssIHNwZWNfcHJpdi1cdTAwM2VzcGVjX2NvbmZpZy5jb3VudCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtOTAwLVx0cmV0dXJuIHNpbXBsZV9yZWFkX2Zyb21fYnVmZmVyKHVzZXJfYnVmLCBjb3VudCwgcHBvcywgYnVmLCBsZW4pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYz05MDM9c3RhdGljIHNzaXplX3Qgd3JpdGVfZmlsZV9zcGVjdHJhbF9jb3VudChzdHJ1Y3QgZmlsZSAqZmlsZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtOTA2LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo5MDc6XHRzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYgPSBmaWxlLVx1MDAzZXByaXZhdGVfZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy05MDgtXHR1bnNpZ25lZCBsb25nIHZhbDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtOTE2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjkxNzpcdHNwZWNfcHJpdi1cdTAwM2VzcGVjX2NvbmZpZy5jb3VudCA9IHZhbDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy05MTgtXHRyZXR1cm4gY291bnQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jPTkzMz1zdGF0aWMgc3NpemVfdCByZWFkX2ZpbGVfc3BlY3RyYWxfcGVyaW9kKHN0cnVjdCBmaWxlICpmaWxlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy05MzYte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjkzNzpcdHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiA9IGZpbGUtXHUwMDNlcHJpdmF0ZV9kYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTkzOC1cdGNoYXIgYnVmWzMyXTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtOTQwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjk0MTpcdGxlbiA9IHNwcmludGYoYnVmLCBcJiMzNDslZFxcblwmIzM0Oywgc3BlY19wcml2LVx1MDAzZXNwZWNfY29uZmlnLnBlcmlvZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtOTQyLVx0cmV0dXJuIHNpbXBsZV9yZWFkX2Zyb21fYnVmZmVyKHVzZXJfYnVmLCBjb3VudCwgcHBvcywgYnVmLCBsZW4pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYz05NDU9c3RhdGljIHNzaXplX3Qgd3JpdGVfZmlsZV9zcGVjdHJhbF9wZXJpb2Qoc3RydWN0IGZpbGUgKmZpbGUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTk0OC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6OTQ5Olx0c3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2ID0gZmlsZS1cdTAwM2Vwcml2YXRlX2RhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtOTUwLVx0dW5zaWduZWQgbG9uZyB2YWw7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTk1OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo5NjA6XHRzcGVjX3ByaXYtXHUwMDNlc3BlY19jb25maWcucGVyaW9kID0gdmFsO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTk2MS1cdHJldHVybiBjb3VudDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM9OTc2PXN0YXRpYyBzc2l6ZV90IHJlYWRfZmlsZV9zcGVjdHJhbF9mZnRfcGVyaW9kKHN0cnVjdCBmaWxlICpmaWxlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy05Nzkte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjk4MDpcdHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiA9IGZpbGUtXHUwMDNlcHJpdmF0ZV9kYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTk4MS1cdGNoYXIgYnVmWzMyXTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtOTgzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjk4NDpcdGxlbiA9IHNwcmludGYoYnVmLCBcJiMzNDslZFxcblwmIzM0Oywgc3BlY19wcml2LVx1MDAzZXNwZWNfY29uZmlnLmZmdF9wZXJpb2QpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTk4NS1cdHJldHVybiBzaW1wbGVfcmVhZF9mcm9tX2J1ZmZlcih1c2VyX2J1ZiwgY291bnQsIHBwb3MsIGJ1ZiwgbGVuKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM9OTg4PXN0YXRpYyBzc2l6ZV90IHdyaXRlX2ZpbGVfc3BlY3RyYWxfZmZ0X3BlcmlvZChzdHJ1Y3QgZmlsZSAqZmlsZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtOTkxLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo5OTI6XHRzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYgPSBmaWxlLVx1MDAzZXByaXZhdGVfZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy05OTMtXHR1bnNpZ25lZCBsb25nIHZhbDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTAwMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzoxMDAzOlx0c3BlY19wcml2LVx1MDAzZXNwZWNfY29uZmlnLmZmdF9wZXJpb2QgPSB2YWw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTAwNC1cdHJldHVybiBjb3VudDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM9MTA0Mz1zdGF0aWMgY29uc3Qgc3RydWN0IHJjaGFuX2NhbGxiYWNrcyByZnNfc3BlY19zY2FuX2NiID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xMDUxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjEwNTI6dm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfZGVpbml0X2RlYnVnKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xMDUzLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzoxMDU0Olx0aWYgKHNwZWNfcHJpdi1cdTAwM2VyZnNfY2hhbl9zcGVjX3NjYW4pIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzoxMDU1Olx0XHRyZWxheV9jbG9zZShzcGVjX3ByaXYtXHUwMDNlcmZzX2NoYW5fc3BlY19zY2FuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzoxMDU2Olx0XHRzcGVjX3ByaXYtXHUwMDNlcmZzX2NoYW5fc3BlY19zY2FuID0gTlVMTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xMDU3LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYz0xMDU5PUVYUE9SVF9TWU1CT0woYXRoOWtfY21uX3NwZWN0cmFsX2RlaW5pdF9kZWJ1Zyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTA2MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzoxMDYxOnZvaWQgYXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTEwNjItXHRcdFx0XHQgICBzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX3BoeSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTA2NC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6MTA2NTpcdHNwZWNfcHJpdi1cdTAwM2VyeF9zdGF0cyA9IHJ4X3N0YXRzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjEwNjY6XHRzcGVjX3ByaXYtXHUwMDNlcmZzX2NoYW5fc3BlY19zY2FuID0gcmVsYXlfb3BlbihcJiMzNDtzcGVjdHJhbF9zY2FuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTEwNjctXHRcdFx0XHRcdCAgICBkZWJ1Z2ZzX3BoeSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTA2OS1cdFx0XHRcdFx0ICAgIE5VTEwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjEwNzA6XHRpZiAoIXNwZWNfcHJpdi1cdTAwM2VyZnNfY2hhbl9zcGVjX3NjYW4pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTA3MS1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xMDc0LVx0XHRcdCAgICAwNjAwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjEwNzU6XHRcdFx0ICAgIGRlYnVnZnNfcGh5LCBzcGVjX3ByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTA3Ni1cdFx0XHQgICAgXHUwMDI2Zm9wc19zcGVjX3NjYW5fY3RsKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTA3OC1cdFx0XHQgICAgMDYwMCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzoxMDc5Olx0XHRcdCAgICBkZWJ1Z2ZzX3BoeSwgc3BlY19wcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTEwODAtXHRcdFx0ICAgIFx1MDAyNmZvcHNfc3BlY3RyYWxfc2hvcnRfcmVwZWF0KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTA4Mi1cdFx0XHQgICAgMDYwMCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzoxMDgzOlx0XHRcdCAgICBkZWJ1Z2ZzX3BoeSwgc3BlY19wcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTEwODQtXHRcdFx0ICAgIFx1MDAyNmZvcHNfc3BlY3RyYWxfY291bnQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xMDg2LVx0XHRcdCAgICAwNjAwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjEwODc6XHRcdFx0ICAgIGRlYnVnZnNfcGh5LCBzcGVjX3ByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTA4OC1cdFx0XHQgICAgXHUwMDI2Zm9wc19zcGVjdHJhbF9wZXJpb2QpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xMDkwLVx0XHRcdCAgICAwNjAwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjEwOTE6XHRcdFx0ICAgIGRlYnVnZnNfcGh5LCBzcGVjX3ByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTA5Mi1cdFx0XHQgICAgXHUwMDI2Zm9wc19zcGVjdHJhbF9mZnRfcGVyaW9kKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmg9MTcwPXN0YXRpYyBpbmxpbmUgdTggc3BlY3RyYWxfYml0bWFwX3dlaWdodCh1OCAqYmlucylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmgtMTc1LSNpZmRlZiBDT05GSUdfQVRIOUtfQ09NTU9OX1NQRUNUUkFMXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmg6MTc2OnZvaWQgYXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oLTE3Ny1cdFx0XHRcdCAgIHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcGh5LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oLTE3OC1cdFx0XHRcdCAgIHN0cnVjdCBhdGhfcnhfc3RhdHMgKnJ4X3N0YXRzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaDoxNzk6dm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfZGVpbml0X2RlYnVnKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmgtMTgwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oPTE4MT12b2lkIGF0aDlrX2Ntbl9zcGVjdHJhbF9zY2FuX3RyaWdnZXIoc3RydWN0IGF0aF9jb21tb24gKmNvbW1vbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaDoxODI6XHRcdFx0XHQgc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaC0xODMtaW50IGF0aDlrX2Ntbl9zcGVjdHJhbF9zY2FuX2NvbmZpZyhzdHJ1Y3QgYXRoX2NvbW1vbiAqY29tbW9uLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oOjE4NDpcdFx0XHQgICAgICAgc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oLTE4NS1cdFx0XHQgICAgICAgZW51bSBzcGVjdHJhbF9tb2RlIHNwZWN0cmFsX21vZGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oOjE4NjppbnQgYXRoX2Ntbl9wcm9jZXNzX2ZmdChzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsIHN0cnVjdCBpZWVlODAyMTFfaGRyICpoZHIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmgtMTg3LVx0XHQgICAgc3RydWN0IGF0aF9yeF9zdGF0dXMgKnJzLCB1NjQgdHNmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaC0xODgtI2Vsc2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaDoxODk6c3RhdGljIGlubGluZSB2b2lkIGF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaC0xOTAtXHRcdFx0XHRcdFx0IHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcGh5LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaC0xOTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmg6MTk1OnN0YXRpYyBpbmxpbmUgdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfZGVpbml0X2RlYnVnKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaC0xOTYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaD0xOTk9c3RhdGljIGlubGluZSB2b2lkIGF0aDlrX2Ntbl9zcGVjdHJhbF9zY2FuX3RyaWdnZXIoc3RydWN0IGF0aF9jb21tb24gKmNvbW1vbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaDoyMDA6XHRcdFx0XHRcdFx0ICAgc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oLTIwMS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oLTIwMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaDoyMDQ6c3RhdGljIGlubGluZSBpbnQgYXRoX2Ntbl9wcm9jZXNzX2ZmdChzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmgtMjA1LVx0XHRcdFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV9oZHIgKmhkcixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGVidWcuYz0xMzcyPXZvaWQgYXRoOWtfZGVpbml0X2RlYnVnKHN0cnVjdCBhdGhfc29mdGMgKnNjKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2RlYnVnLmMtMTM3My17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGVidWcuYzoxMzc0Olx0YXRoOWtfY21uX3NwZWN0cmFsX2RlaW5pdF9kZWJ1ZyhcdTAwMjZzYy1cdTAwM2VzcGVjX3ByaXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2RlYnVnLmMtMTM3NS19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2RlYnVnLmM9MTM3Nz1pbnQgYXRoOWtfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX2h3ICphaClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGVidWcuYy0xMzkxLVx0YXRoOWtfdHg5OV9pbml0X2RlYnVnKHNjKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZWJ1Zy5jOjEzOTI6XHRhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhcdTAwMjZzYy1cdTAwM2VzcGVjX3ByaXYsIHNjLVx1MDAzZWRlYnVnLmRlYnVnZnNfcGh5LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2RlYnVnLmMtMTM5My1cdFx0XHRcdCAgICAgIFx1MDAyNnNjLVx1MDAzZWRlYnVnLnN0YXRzLnJ4c3RhdHMpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD00NTY9c3RydWN0IGF0aDlrX2h0Y19wcml2IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNDk2LVx0c3RydWN0IGF0aDlrX2h3X2NhbF9kYXRhIGNhbGRhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6NDk3Olx0c3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiBzcGVjX3ByaXY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNDk4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM9NDc3PXZvaWQgYXRoOWtfaHRjX2RlaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jLTQ3OC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jOjQ3OTpcdGF0aDlrX2Ntbl9zcGVjdHJhbF9kZWluaXRfZGVidWcoXHUwMDI2cHJpdi1cdTAwM2VzcGVjX3ByaXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYy00ODAtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM9NDgyPWludCBhdGg5a19odGNfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX2h3ICphaClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jLTQ4OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM6NDkwOlx0YXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoXHUwMDI2cHJpdi1cdTAwM2VzcGVjX3ByaXYsIHByaXYtXHUwMDNlZGVidWcuZGVidWdmc19waHksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jLTQ5MS1cdFx0XHRcdCAgICAgIFx1MDAyNnByaXYtXHUwMDNlZGVidWcucnhfc3RhdHMpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYz01ODg9c3RhdGljIHZvaWQgYXRoOWtfaW5pdF9taXNjKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmMtNTk2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jOjU5NzpcdHByaXYtXHUwMDNlc3BlY19wcml2LmFoID0gcHJpdi1cdTAwM2VhaDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYzo1OTg6XHRwcml2LVx1MDAzZXNwZWNfcHJpdi5zcGVjX2NvbmZpZy5lbmFibGVkID0gMDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYzo1OTk6XHRwcml2LVx1MDAzZXNwZWNfcHJpdi5zcGVjX2NvbmZpZy5zaG9ydF9yZXBlYXQgPSB0cnVlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jOjYwMDpcdHByaXYtXHUwMDNlc3BlY19wcml2LnNwZWNfY29uZmlnLmNvdW50ID0gODtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYzo2MDE6XHRwcml2LVx1MDAzZXNwZWNfcHJpdi5zcGVjX2NvbmZpZy5lbmRsZXNzID0gZmFsc2U7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM6NjAyOlx0cHJpdi1cdTAwM2VzcGVjX3ByaXYuc3BlY19jb25maWcucGVyaW9kID0gMHgxMjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYzo2MDM6XHRwcml2LVx1MDAzZXNwZWNfcHJpdi5zcGVjX2NvbmZpZy5mZnRfcGVyaW9kID0gMHgwMjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy02MDQtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYz0yNDA9c3RhdGljIGludCBhdGg5a19odGNfc2V0X2NoYW5uZWwoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0zMTUtXHRpZiAodGVzdF9iaXQoQVRIX09QX1NDQU5OSU5HLCBcdTAwMjZjb21tb24tXHUwMDNlb3BfZmxhZ3MpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjMxNjpcdFx0ICAgICBwcml2LVx1MDAzZXNwZWNfcHJpdi5zcGVjdHJhbF9tb2RlID09IFNQRUNUUkFMX0NIQU5TQ0FOKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjMxNzpcdFx0YXRoOWtfY21uX3NwZWN0cmFsX3NjYW5fdHJpZ2dlcihjb21tb24sIFx1MDAyNnByaXYtXHUwMDNlc3BlY19wcml2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0zMTgtZXJyOlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz05NzI9c3RhdGljIGJvb2wgYXRoOWtfcnhfcHJlcGFyZShzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTEwNDctXHRcdC8qIFRPRE86IE5vdCB1c2luZyBERlMgcHJvY2Vzc2luZyBub3cuICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6MTA0ODpcdFx0aWYgKGF0aF9jbW5fcHJvY2Vzc19mZnQoXHUwMDI2cHJpdi1cdTAwM2VzcGVjX3ByaXYsIGhkcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0xMDQ5LVx0XHRcdFx0ICAgIFx1MDAyNnJ4X3N0YXRzLCByeF9zdGF0dXMtXHUwMDNlbWFjdGltZSkpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jPTQyMD1zdGF0aWMgdm9pZCBhdGg5a19pbml0X21pc2Moc3RydWN0IGF0aF9zb2Z0YyAqc2MpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYy00MzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jOjQzNzpcdHNjLVx1MDAzZXNwZWNfcHJpdi5haCA9IHNjLVx1MDAzZXNjX2FoO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYzo0Mzg6XHRzYy1cdTAwM2VzcGVjX3ByaXYuc3BlY19jb25maWcuZW5hYmxlZCA9IDA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jOjQzOTpcdHNjLVx1MDAzZXNwZWNfcHJpdi5zcGVjX2NvbmZpZy5zaG9ydF9yZXBlYXQgPSB0cnVlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYzo0NDA6XHRzYy1cdTAwM2VzcGVjX3ByaXYuc3BlY19jb25maWcuY291bnQgPSA4O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYzo0NDE6XHRzYy1cdTAwM2VzcGVjX3ByaXYuc3BlY19jb25maWcuZW5kbGVzcyA9IGZhbHNlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYzo0NDI6XHRzYy1cdTAwM2VzcGVjX3ByaXYuc3BlY19jb25maWcucGVyaW9kID0gMHhGRjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmM6NDQzOlx0c2MtXHUwMDNlc3BlY19wcml2LnNwZWNfY29uZmlnLmZmdF9wZXJpb2QgPSAweEY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jLTQ0NC19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3JlY3YuYz04MDY9c3RhdGljIGludCBhdGg5a19yeF9za2JfcHJlcHJvY2VzcyhzdHJ1Y3QgYXRoX3NvZnRjICpzYyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvcmVjdi5jLTg4Mi1cdFx0XHRcdFx0XHQgcnhfc3RhdHVzLVx1MDAzZW1hY3RpbWUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3JlY3YuYzo4ODM6XHRcdH0gZWxzZSBpZiAoc2MtXHUwMDNlc3BlY19wcml2LnNwZWN0cmFsX21vZGUgIT0gU1BFQ1RSQUxfRElTQUJMRUQgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvcmVjdi5jOjg4NDpcdFx0XHQgICBhdGhfY21uX3Byb2Nlc3NfZmZ0KFx1MDAyNnNjLVx1MDAzZXNwZWNfcHJpdiwgaGRyLCByeF9zdGF0cyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9yZWN2LmMtODg1LVx0XHRcdFx0XHQgICAgICAgcnhfc3RhdHVzLVx1MDAzZW1hY3RpbWUpKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMDE6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk4NDMKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiA2MjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgQ3JpdGljYWwgQnVnIGluIHRoZSBhdGg5a19odGMgV2lyZWxlc3MgRHJpdmVyKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEkmIzM5O20gbG9va2luZyBhdCBgYXRoOWtfaHRjYCwgd2hpY2ggaXMgYSBVU0ItYmFzZWQgd2lyZWxlc3MgZHJpdmVyIHRoYXQgdXNlcyBIVEMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgcGF0Y2ggdGhvcm91Z2hseS4KCkluaXRpYWxseSwgaW4gdGhlIGBhdGhfY21uX3Byb2Nlc3NfZmZ0YCBmdW5jdGlvbiwgYmVmb3JlIHRoaXMgcGF0Y2gsIHRoZXJlIHdhcyBhIG1ham9yIGlzc3VlLiBJbnNpZGUgdGhhdCBmdW5jdGlvbiwgdGhlIGNvZGUgd2FzIGFzc3VtaW5nIGBjb21tb24tJmd0O3ByaXZgIHdhcyBhIGBzdHJ1Y3QgYXRoX3NvZnRjYCwgd2hpY2ggaXMgdGhlIHN0cnVjdHVyZSB1c2VkIGluIHRoZSBvcmlnaW5hbCBgYXRoOWtgIFBDSS9BSEIgZHJpdmVyLiBCdXQsIGFuZCB0aGlzIGlzIHRoZSBjcnV4IG9mIGl0LCBgYXRoOWtfaHRjYCB1c2VzIGEgZGlmZmVyZW50IHByaXZhdGUgZGF0YSBzdHJ1Y3R1cmUsIHNvbWV0aGluZyBsaWtlIGBzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKmAuIFRoaXMgbWVhbnMgdGhhdCB3aGVuIGBhdGg5a19odGNgIGNhbGxlZCBgYXRoX2Ntbl9wcm9jZXNzX2ZmdGAsIGl0IHdhcyBlZmZlY3RpdmVseSBjYXN0aW5nIGEgYGF0aDlrX2h0Y19wcml2ICpgIHRvIGEgYGF0aF9zb2Z0YyAqYC4KClRoaXMgaXMgYSBzZXJpb3VzIHByb2JsZW0uIEluc2lkZSBgYXRoOWtgLCBgUlhfU1RBVF9JTkNgIGFjY2Vzc2VzIGBzYy0mZ3Q7ZGVidWcuc3RhdHMucnhzdGF0cy5yeF9zcGVjdHJhbF9zYW1wbGVfZ29vZGAgZXRjLiBCdXQgYHN0cnVjdCBhdGg5a19odGNfcHJpdmAgaGFzIGEgY29tcGxldGVseSBkaWZmZXJlbnQgbWVtb3J5IGxheW91dCEgU28sIHByZXZpb3VzbHksIGNhbGxpbmcgYGF0aF9jbW5fcHJvY2Vzc19mZnRgIGluIHRoZSBgYXRoOWtfaHRjYCBkcml2ZXIgd2FzIGVpdGhlciBjb3JydXB0aW5nIG1lbW9yeSBvciBhY2Nlc3NpbmcgZW50aXJlbHkgdGhlIHdyb25nIG1lbW9yeSBvZmZzZXRzLiBUaGlzIGNvdWxkIGxlYWQgdG8gYSB2YXJpZXR5IG9mIGlzc3VlcywgZnJvbSBzdWJ0bGUgZGF0YSBjb3JydXB0aW9uIHRvIG91dHJpZ2h0IGNyYXNoZXMsIGRlcGVuZGluZyBvbiB3aGF0IGRhdGEgd2FzIGJlaW5nIG92ZXJ3cml0dGVuIG9yIHJlYWQuCgpUaGlzIHBhdGNoIGFkZHJlc3NlcyB0aGlzIGJ5IGRpcmVjdGx5IHBhc3NpbmcgdGhlIGByeF9zdGF0c2AgcG9pbnRlciBpbiBgYXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWdgLCBzdG9yaW5nIGl0IGluIGBzcGVjX3ByaXYtJmd0O3J4X3N0YXRzYCwgYW5kIHRoZW4gaW5jcmVtZW50aW5nIHRoZSBgcnhfc3RhdHMtJmd0O3J4X3NwZWN0cmFsX3NhbXBsZV9nb29kYCBhbmQgYHJ4X3N0YXRzLSZndDtyeF9zcGVjdHJhbF9zYW1wbGVfZXJyYCBjb3VudGVycyBjb3JyZWN0bHkgdGhyb3VnaCBgYXRoX2Ntbl9jb3VudF9mZnRfc2FtcGxlKClgLiBBIGRpcmVjdCBmaXgsIGF2b2lkaW5nIHRoZSBpbmNvcnJlY3QgY2FzdC4KCk5vdywgbGV0JiMzOTtzIHRoaW5rIGFib3V0IHJlYWNoYWJpbGl0eS4gSSBuZWVkIHRvIGRldGVybWluZSBob3cgZWFzaWx5IHRoaXMgYnVnIGNvdWxkIGJlIHRyaWdnZXJlZCB1c2luZyB0b29scyBsaWtlIFFFTVUgb3IgU3l6a2FsbGVyLiBgYXRoOWtfaHRjYCBpcywgYWZ0ZXIgYWxsLCBhIFVTQiBkZXZpY2UgZHJpdmVyLiBJIHNlZSB0aGUgVVNCIElEIHRhYmxlIHJpZ2h0IHRoZXJlIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jYC4gU3l6a2FsbGVyIHNob3VsZCBiZSBhYmxlIHRvIHJlYWNoIHRoaXMgZHJpdmVyIHZpYSBlaXRoZXIgYHN5el91c2JfY29ubmVjdGAgb3IgZGlyZWN0IFVTQiBlbXVsYXRpb24sIHBvdGVudGlhbGx5IGV4cG9zaW5nIHRoaXMgbWVtb3J5IGNvcnJ1cHRpb24gYnVnLiBBbHNvLCBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBkZWJ1Z2ZzIGludGVyZmFjZSB0aGF0JiMzOTtzIHByZXNlbnQgaW4gYXRoOWsgZm9yIHNwZWN0cmFsIHNjYW4uIERlYnVnZnMgZmlsZSBvcGVyYXRpb25zIGxpa2UgYHdyaXRlX2ZpbGVfc3BlY19zY2FuX2N0bGAsIGBzcGVjdHJhbF9zY2FuYCwgYW5kIGV2ZW4gcHJvY2Vzc2luZyBSWCBmcmFtZXMgdXNpbmcgYGF0aDlrX3J4X3ByZXBhcmVgIGNvdWxkIHByb3ZpZGUgYW5vdGhlciBlbnRyeSBwb2ludC4KCkZpbmFsbHksIEkgbmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZyBvcHRpb25zLCBzcGVjaWZpY2FsbHkgdGhvc2UgcmVsYXRlZCB0byBBVEg5S19IVEMsIEFUSDlLX0NPTU1PTl9TUEVDVFJBTCBhbmQgQVRIOUtfSFRDX0RFQlVHRlMsIG92ZXIgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBkZWJ1ZyBmZWF0dXJlcyBhcmUgZW5hYmxlZCwgYW5kIHRoZXJlZm9yZSBob3cgZXhwb3NlZCB0aGlzIGJ1ZyBpcyBpbiBkaWZmZXJlbnQga2VybmVsIGNvbmZpZ3VyYXRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDAxOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE3MDpcdFx0ICBJZiB1bnN1cmUgc2F5IE4uXG4gMTcxOlx0XG4gMTcyOlx0Y29uZmlnIEFUSDlLX0hUQ1xuIDE3MzpcdFx0dHJpc3RhdGUgXCYjMzQ7QXRoZXJvcyBIVEMgYmFzZWQgd2lyZWxlc3MgY2FyZHMgc3VwcG9ydFwmIzM0O1xuIDE3NDpcdFx0ZGVwZW5kcyBvbiBVU0IgXHUwMDI2XHUwMDI2IE1BQzgwMjExXG4gMTc1Olx0XHRzZWxlY3QgTUFDODAyMTFfTEVEUyBpZiBMRURTX0NMQVNTPXkgfHwgTEVEU19DTEFTUz1NQUM4MDIxMVxuIDE3NjpcdFx0c2VsZWN0IEFUSDlLX0hXXG4gMTc3Olx0XHRzZWxlY3QgQVRIOUtfQ09NTU9OXG4gMTc4Olx0XHRoZWxwXG4gMTc5Olx0XHQgIFN1cHBvcnQgZm9yIEF0aGVyb3MgSFRDIGJhc2VkIGNhcmRzLlxuIDE4MDpcdFx0ICBDaGlwc2V0cyBzdXBwb3J0ZWQ6IEFSOTI3MVxuIDE4MTpcdFxuIDE4MjpcdFx0ICBGb3IgbW9yZSBpbmZvcm1hdGlvbjpcbiAxODM6XHRcdCAgaHR0cHM6Ly93aXJlbGVzcy53aWtpLmtlcm5lbC5vcmcvZW4vdXNlcnMvRHJpdmVycy9hdGg5a19odGNcbiAxODQ6XHRcbiAxODU6XHRcdCAgVGhlIGJ1aWx0IG1vZHVsZSB3aWxsIGJlIGF0aDlrX2h0Yy5cbiAxODY6XHRcbiAxODc6XHRjb25maWcgQVRIOUtfSFRDX0RFQlVHRlNcbiAxODg6XHRcdGJvb2wgXCYjMzQ7QXRoZXJvcyBhdGg5a19odGMgZGVidWdnaW5nXCYjMzQ7XG4gMTg5Olx0XHRkZXBlbmRzIG9uIEFUSDlLX0hUQyBcdTAwMjZcdTAwMjYgREVCVUdfRlNcbiAxOTA6XHRcdHNlbGVjdCBBVEg5S19DT01NT05fREVCVUdcbiAxOTE6XHRcdGhlbHBcbiAxOTI6XHRcdCAgU2F5IFksIGlmIHlvdSBuZWVkIGFjY2VzcyB0byBhdGg5a19odGMmIzM5O3Mgc3RhdGlzdGljcy5cbiAxOTM6XHRcdCAgQXMgd2VsbCBhcyBhY2Nlc3MgdG8gdGhlIEZGVC9zcGVjdHJhbCBkYXRhLlxuIDE5NDpcdFxuIDE5NTpcdGNvbmZpZyBBVEg5S19IV1JOR1xuIDE5NjpcdFx0Ym9vbCBcJiMzNDtSYW5kb20gbnVtYmVyIGdlbmVyYXRvciBzdXBwb3J0XCYjMzQ7XG4gMTk3Olx0XHRkZXBlbmRzIG9uIEFUSDlLIFx1MDAyNlx1MDAyNiAoSFdfUkFORE9NID0geSB8fCBIV19SQU5ET00gPSBBVEg5SylcbiAxOTg6XHRcdGRlZmF1bHQgblxuIDE5OTpcdFx0aGVscFxuIDIwMDpcdFx0ICBUaGlzIG9wdGlvbiBpbmNvcnBvcmF0ZXMgdGhlIEFEQyByZWdpc3RlciBvdXRwdXQgYXMgYSBzb3VyY2Ugb2ZcbiAyMDE6XHRcdCAgcmFuZG9tbmVzcyBpbnRvIExpbnV4IGVudHJvcHkgcG9vbCAoL2Rldi91cmFuZG9tIGFuZCAvZGV2L3JhbmRvbSlcbiAyMDI6XHRcbiAyMDM6XHRcdCAgU2F5IFksIGZlZWRzIHRoZSBlbnRyb3B5IGRpcmVjdGx5IGZyb20gdGhlIFdpRmkgZHJpdmVyIHRvIHRoZSBpbnB1dFxuIDIwNDpcdFx0ICBwb29sLlxuIDIwNTpcdFxuIDIwNjpcdGNvbmZpZyBBVEg5S19DT01NT05fU1BFQ1RSQUxcbiAyMDc6XHRcdGJvb2wgXCYjMzQ7QXRoZXJvcyBhdGg5ay9hdGg5a19odGMgc3BlY3RyYWwgc2NhbiBzdXBwb3J0XCYjMzQ7XG4gMjA4Olx0XHRkZXBlbmRzIG9uIEFUSDlLX0RFQlVHRlMgfHwgQVRIOUtfSFRDX0RFQlVHRlNcbiAyMDk6XHRcdHNlbGVjdCBSRUxBWVxuIDIxMDpcdFx0ZGVmYXVsdCBuXG4gMjExOlx0XHRoZWxwXG4gMjEyOlx0XHQgIFNheSBZIHRvIGVuYWJsZSBhY2Nlc3MgdG8gdGhlIEZGVC9zcGVjdHJhbCBkYXRhIHZpYSBkZWJ1Z2ZzLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDAxOjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxODgwCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqSW52ZXN0aWdhdGluZyB0aGUgYEFUSDlLX0RFQlVHRlNgIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZywgd2hlcmUgc2hvdWxkIEkgc3RhcnQgbG9va2luZyB0byB1bmRlcnN0YW5kIG9yIG1vZGlmeSB0aGUgZGVidWcgb3B0aW9ucyBmb3IgYXRoOWs/IE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBnbyBzdHJhaWdodCB0byB0aGUgY29uZmlndXJhdGlvbiBmaWxlcy4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gY2hlY2sgdGhlIGBLY29uZmlnYCBmaWxlIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9gIGRpcmVjdG9yeS4gVGhhdCYjMzk7cyB0aGUgbG9naWNhbCBwbGFjZSB0byBzZWUgaWYgYEFUSDlLX0RFQlVHRlNgIGlzIGRlZmluZWQsIHdoYXQgaXQgZG9lcywgYW5kIGhvdyBpdOKAmXMgY29uZmlndXJlZC4gSSYjMzk7bSBhc3N1bWluZyB0aGF0JiMzOTtzIHdoZXJlIEkgY2FuIHRvZ2dsZSBpdCBvbiBvciBvZmYgb3Igc2VlIG90aGVyIGRlcGVuZGVuY2llcywgb3B0aW9ucywgb3IgaGVscCB0ZXh0IHJlbGF0ZWQgdG8gdGhlIGRlYnVnIGZpbGVzeXN0ZW0gaW50ZXJmYWNlIGZvciB0aGF0IHBhcnRpY3VsYXIgYXRoOWsgZHJpdmVyLiBJdCYjMzk7cyB0aGUgc3RhbmRhcmQgcGxhY2UgdG8gZGVmaW5lIHRoZXNlIGtpbmRzIG9mIGZlYXR1cmVzIHdpdGhpbiBhIGtlcm5lbCBtb2R1bGUsIHNvIGl0IG1ha2VzIHNlbnNlIHRvIHN0YXJ0IHRoZXJlIGFuZCBzZWUgd2hhdCYjMzk7cyB3aGF0LiBMZXQmIzM5O3MgZGlnIGluIGFuZCBzZWUgd2hhdCB0aGUgYnVpbGQgc3lzdGVtIHJldmVhbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDAxOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDEzMDpcdFx0ICBDdXJyZW50bHksIEFSOTQ2MiBpcyBzdXBwb3J0ZWQuXG4gMTMxOlx0XG4gMTMyOlx0Y29uZmlnIEFUSDlLX1JGS0lMTFxuIDEzMzpcdFx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDlrIHJma2lsbCBzdXBwb3J0XCYjMzQ7IGlmIEVYUEVSVFxuIDEzNDpcdFx0ZGVwZW5kcyBvbiBBVEg5S1xuIDEzNTpcdFx0ZGVwZW5kcyBvbiBSRktJTEw9eSB8fCBSRktJTEw9QVRIOUtcbiAxMzY6XHRcdGRlZmF1bHQgeVxuIDEzNzpcdFx0aGVscFxuIDEzODpcdFx0ICBTYXkgWSB0byBoYXZlIGF0aDlrIHBvbGwgdGhlIFJGLUtpbGwgR1BJTyBldmVyeSBjb3VwbGUgb2ZcbiAxMzk6XHRcdCAgc2Vjb25kcy4gVHVybiBvZmYgdG8gc2F2ZSBwb3dlciwgYnV0IGVuYWJsZSBpdCBpZiB5b3UgaGF2ZVxuIDE0MDpcdFx0ICBhIHBsYXRmb3JtIHRoYXQgY2FuIHRvZ2dsZSB0aGUgUkYtS2lsbCBHUElPLlxuIDE0MTpcdFxuIDE0MjpcdGNvbmZpZyBBVEg5S19DSEFOTkVMX0NPTlRFWFRcbiAxNDM6XHRcdGJvb2wgXCYjMzQ7Q2hhbm5lbCBDb250ZXh0IHN1cHBvcnRcJiMzNDtcbiAxNDQ6XHRcdGRlcGVuZHMgb24gQVRIOUtcbiAxNDU6XHRcdGRlZmF1bHQgblxuIDE0NjpcdFx0aGVscFxuIDE0NzpcdFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIGNoYW5uZWwgY29udGV4dCBzdXBwb3J0IGluIGF0aDlrLCB3aGljaCBpcyBuZWVkZWRcbiAxNDg6XHRcdCAgZm9yIG11bHRpLWNoYW5uZWwgY29uY3VycmVuY3kuIEVuYWJsZSB0aGlzIGlmIFAyUCBQb3dlclNhdmUgc3VwcG9ydFxuIDE0OTpcdFx0ICBpcyByZXF1aXJlZC5cbiAxNTA6XHRcbiAxNTE6XHRjb25maWcgQVRIOUtfUENPRU1cbiAxNTI6XHRcdGJvb2wgXCYjMzQ7QXRoZXJvcyBhdGg5ayBzdXBwb3J0IGZvciBQQyBPRU0gY2FyZHNcJiMzNDsgaWYgRVhQRVJUXG4gMTUzOlx0XHRkZXBlbmRzIG9uIEFUSDlLXG4gMTU0Olx0XHRkZWZhdWx0IHlcbiAxNTU6XHRcbiAxNTY6XHRjb25maWcgQVRIOUtfUENJX05PX0VFUFJPTVxuIDE1NzpcdFx0dHJpc3RhdGUgXCYjMzQ7QXRoZXJvcyBhdGg5ayBwY2kgbG9hZGVyIGZvciBFRVBST00tbGVzcyBjaGlwc1wmIzM0O1xuIDE1ODpcdFx0ZGVwZW5kcyBvbiBBVEg5S19QQ0lcbiAxNTk6XHRcdGRlZmF1bHQgblxuIDE2MDpcdFx0aGVscFxuIDE2MTpcdFx0ICBUaGlzIHNlcGFyYXRlIGRyaXZlciBwcm92aWRlcyBhIGxvYWRlciBpbiBvcmRlciB0byBzdXBwb3J0IHRoZVxuIDE2MjpcdFx0ICBBUjUwMFggdG8gQVI5MlhYLWdlbmVyYXRpb24gb2YgYXRoOWsgUENJKGUpIFdpRmkgY2hpcHMsIHdoaWNoIGhhdmVcbiAxNjM6XHRcdCAgdGhlaXIgaW5pdGlhbGl6YXRpb24gZGF0YSAod2hpY2ggY29udGFpbnMgdGhlIHJlYWwgUENJIERldmljZSBJRFxuIDE2NDpcdFx0ICB0aGF0IGF0aDlrIHdpbGwgbmVlZCkgc3RvcmVkIHRvZ2V0aGVyIHdpdGggdGhlIGNhbGlicmF0aW9uIGRhdGEgb3V0XG4gMTY1Olx0XHQgIG9mIHJlYWNoIGZvciB0aGUgYXRoOWsgY2hpcC5cbiAxNjY6XHRcbiAxNjc6XHRcdCAgVGhlc2UgZGV2aWNlcyBhcmUgdXN1YWxseSB2YXJpb3VzIG5ldHdvcmsgYXBwbGlhbmNlcywgcm91dGVycyBvclxuIDE2ODpcdFx0ICBhY2Nlc3MgUG9pbnRzIGFuZCBzdWNoLlxuIDE2OTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAwMTowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjc2OAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqVHJhY2luZyBEb3duIEFUSDlLX0RFQlVHRlMqKgoKT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgYEFUSDlLX0RFQlVHRlNgIGlzIGRlZmluZWQuIFRoaXMgaXMgbGlrZWx5IGEgcHJlcHJvY2Vzc29yIG1hY3JvLCBnaXZlbiB0aGUgYWxsLWNhcHMgbmFtaW5nIGNvbnZlbnRpb24sIGFuZCBwcm9iYWJseSByZWxhdGVkIHRvIGRlYnVnIGZ1bmN0aW9uYWxpdGllcyB3aXRoaW4gdGhlIGF0aDlrIHdpcmVsZXNzIGRyaXZlci4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gdXNlIG15IHByZWZlcnJlZCB0b29scyBmb3IgdGhpcyDigJMgYGdyZXBgLCBgZmluZGAsIG9yIG1heWJlIGV2ZW4gYSBtb3JlIHNvcGhpc3RpY2F0ZWQgSURFLWludGVncmF0ZWQgc2VhcmNoIGlmIEkgaGF2ZSB0aGUgcHJvamVjdCBsb2FkZWQuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgd2l0aCB0aGUgb2J2aW91czogdGhlIGtlcm5lbCBzb3VyY2UgdHJlZS4gSSYjMzk7bGwgbmVlZCB0byByZW1lbWJlciB3aGVyZSB0aGF0JiMzOTtzIG1vdW50ZWQsIHByb2JhYmx5IGAvdXNyL3NyYy9saW51eGAgb3Igc29tZXRoaW5nIHNpbWlsYXIsIGRlcGVuZGluZyBvbiBteSBzeXN0ZW0gc2V0dXAuIFRoZW4gaXQmIzM5O3MgYSBtYXR0ZXIgb2YgY3JhZnRpbmcgdGhlIHJpZ2h0IHNlYXJjaCBxdWVyeS4gSSYjMzk7bGwgc3RhcnQgd2l0aCBzb21ldGhpbmcgc2ltcGxlIGxpa2UgYGdyZXAgLXIgJiMzNDtBVEg5S19ERUJVR0ZTJiMzNDsgL3Vzci9zcmMvbGludXhgIGFuZCBzZWUgd2hhdCB0aGF0IHR1cm5zIHVwLiBJZiB0aGF0JiMzOTtzIHRvbyBicm9hZCwgSSYjMzk7bGwgcmVmaW5lIGl0IHdpdGggc29tZSBjb250ZXh0IGNsdWVzLiBNYXliZSBhZGRpbmcgYGluY2x1ZGUvYCBvciBzZWFyY2hpbmcgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYXRoOWsgZHJpdmVyIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgaWYgSSBrbm93IHdoZXJlIHRoYXQgaXMgd2l0aGluIHRoZSBrZXJuZWwgdHJlZS4gSSBhbHNvIG5lZWQgdG8gY29uc2lkZXIgdGhhdCBpdCBtaWdodCBiZSBkZWZpbmVkIHdpdGhpbiBhIGhlYWRlciBmaWxlLCBzbyBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O20gc2VhcmNoaW5nIGhlYWRlciBmaWxlcyBhcyB3ZWxsLiBUaGlzIHNob3VsZCBiZSBhIHN0cmFpZ2h0Zm9yd2FyZCBodW50LCBhbmQgSSYjMzk7bGwgbGlrZWx5IGZpbmQgdGhlIGRlZmluaXRpb24gcHJldHR5IHF1aWNrbHkuIExldCYjMzk7cyBnZXQgdG8gaXQhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDAxOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBBVEg5S19ERUJVR0ZTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZz00OD1jb25maWcgQVRIOUtfQUhCXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo1ODpjb25maWcgQVRIOUtfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNTktXHRib29sIFwmIzM0O0F0aGVyb3MgYXRoOWsgZGVidWdnaW5nXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDAxOjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzMjM3CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBBVEg5SyBEZWJ1ZyBDb25maWcqKgoKT2theSwgdGltZSB0byBnZXQgdGhpcyBzb3J0ZWQuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBsZXQmIzM5O3MgemVybyBpbiBvbiB0aGUgYGNvbmZpZyBBVEg5S19ERUJVR0ZTYC4gSSByZW1lbWJlciBpdCBiZWluZyBpbiB0aGF0IGdlbmVyYWwgYXJlYSBvZiB0aGUgY29uZmlnIGZpbGUg4oCTIGFyb3VuZCBsaW5lIDU4IHNob3VsZCBiZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgZW5hYmxlZC9kaXNhYmxlZCBhbmQgaWYgdGhhdCYjMzk7cyBpbXBhY3RpbmcgdGhlIGJlaGF2aW9yIEkmIzM5O20gc2VlaW5nLiBUaGlzIHVzdWFsbHkgaW5kaWNhdGVzIHdoZXRoZXIgdGhlIGRlYnVnZ2luZyBpbmZyYXN0cnVjdHVyZSBmb3IgdGhlIGF0aDlrIGRyaXZlciBpcyBlbmFibGVkLiBMZXQmIzM5O3Mgc2VlIGlmIHRoaXMgZGVidWcgY29uZmlndXJhdGlvbiBzZXR0aW5nIGlzIHNldCBjb3JyZWN0bHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDAxOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA1NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDU1Olx0XHQgIFNheSBZLCBpZiB5b3UgaGF2ZSBhIFNvQyB3aXRoIGEgY29tcGF0aWJsZSBidWlsdC1pblxuICA1NjpcdFx0ICB3aXJlbGVzcyBNQUMuIFNheSBOIGlmIHVuc3VyZS5cbiAgNTc6XHRcbiAgNTg6XHRjb25maWcgQVRIOUtfREVCVUdGU1xuICA1OTpcdFx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDlrIGRlYnVnZ2luZ1wmIzM0O1xuICA2MDpcdFx0ZGVwZW5kcyBvbiBBVEg5SyBcdTAwMjZcdTAwMjYgREVCVUdfRlMgXHUwMDI2XHUwMDI2IE1BQzgwMjExX0RFQlVHRlNcbiAgNjE6XHRcdHNlbGVjdCBBVEg5S19DT01NT05fREVCVUdcbiAgNjI6XHRcdGhlbHBcbiAgNjM6XHRcdCAgU2F5IFksIGlmIHlvdSBuZWVkIGFjY2VzcyB0byBhdGg5ayYjMzk7cyBzdGF0aXN0aWNzIGZvclxuICA2NDpcdFx0ICBpbnRlcnJ1cHRzLCByYXRlIGNvbnRyb2wsIGV0Yy5cbiAgNjU6XHRcbiAgNjY6XHRcdCAgQWxzbyByZXF1aXJlZCBmb3IgY2hhbmdpbmcgZGVidWcgbWVzc2FnZSBmbGFncyBhdCBydW4gdGltZSBhbmQgZm9yXG4gIDY3Olx0XHQgIFRYOTkuXG4gIDY4Olx0XG4gIDY5Olx0Y29uZmlnIEFUSDlLX1NUQVRJT05fU1RBVElTVElDU1xuICA3MDpcdFx0Ym9vbCBcJiMzNDtEZXRhaWxlZCBzdGF0aW9uIHN0YXRpc3RpY3NcJiMzNDtcbiAgNzE6XHRcdGRlcGVuZHMgb24gQVRIOUsgXHUwMDI2XHUwMDI2IEFUSDlLX0RFQlVHRlMgXHUwMDI2XHUwMDI2IERFQlVHX0ZTXG4gIDcyOlx0XHRkZWZhdWx0IG5cbiAgNzM6XHRcdGhlbHBcbiAgNzQ6XHRcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyBkZXRhaWxlZCBzdGF0aXN0aWNzIGZvciBhc3NvY2lhdGlvbiBzdGF0aW9ucy5cbiAgNzU6XHRcbiAgNzY6XHRjb25maWcgQVRIOUtfVFg5OVxuICA3NzpcdFx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDlrIFRYOTkgdGVzdGluZyBzdXBwb3J0XCYjMzQ7XG4gIDc4Olx0XHRkZXBlbmRzIG9uIEFUSDlLX0RFQlVHRlMgXHUwMDI2XHUwMDI2IENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xuICA3OTpcdFx0ZGVmYXVsdCBuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDAxOjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzNzkzCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogOTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyBVU0IgR2FkZ2V0IFByb2JpbmcgZm9yIGBhdGg5a19odGNgIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGhvdyB3ZSBjYW4gdGVzdCB0aGUgYGF0aDlrX2h0Y2AgZHJpdmVyLCBzcGVjaWZpY2FsbHkgaXRzIGludGVyYWN0aW9uIHdpdGggVVNCLiBJdCYjMzk7cyBhIFVTQi1iYXNlZCB3aXJlbGVzcyBkcml2ZXIsIHVzaW5nIHRoYXQgSFRDIChIb3N0IFRhcmdldCBDb21tdW5pY2F0aW9uKSBwcm90b2NvbCwgd2hpY2ggaXMgaW1wb3J0YW50IHRvIHJlbWVtYmVyLiBUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzIHdoZXRoZXIgd2UgY2FuIGVmZmVjdGl2ZWx5IHByb2JlIHRoaXMgZHJpdmVyIHVzaW5nIGEgVVNCIGdhZGdldCBzZXR1cCwgbWF5YmUgbGV2ZXJhZ2luZyBzb21ldGhpbmcgbGlrZSBgcmF3X2dhZGdldGAgd2l0aGluIFN5emthbGxlci4KClRvIGdldCBhIGhhbmRsZSBvbiB0aGUgc3BlY2lmaWNzIG9mIHRoZSBVU0IgZGV2aWNlIElEcyB0aGF0IHRoaXMgZHJpdmVyIGV4cGVjdHMsIEkgc2hvdWxkIGRpdmUgaW50byB0aGUgY29kZS4gTXkgcGxhbiBpcyB0byBzdGFydCBieSBleGFtaW5pbmcgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmNgLiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBjcnVjaWFsIGluZm9ybWF0aW9uIEkgbmVlZCBhYm91dCB0aGUgZXhwZWN0ZWQgVVNCIGRldmljZSBpZGVudGlmaWVycyB0aGF0IGBhdGg5a19odGNgIGlzIGxvb2tpbmcgZm9yIGR1cmluZyBpdHMgcHJvYmUgcHJvY2Vzcy4gVGhpcyBzaG91bGQgaW5mb3JtIGhvdyB3ZSBnbyBhYm91dCBzZXR0aW5nIHVwIHRoZSBnYWRnZXQgdG8gdHJpZ2dlciB0aGUgZHJpdmVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAwMTowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtNT0RVTEVfREVWSUNFX1RBQkxFfFVTQl9ERVZJQ0UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9haGIuYz0xMzI9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgYXRoX2FoYl9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FoYi5jLTE0MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9haGIuYzoxNDE6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgYXRoOWtfb2ZfbWF0Y2hfdGFibGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FoYi5jLTE0Mi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXRoOWtfcGNpX293bF9sb2FkZXIuYz0yMjU9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIG93bF9wY2lfdGFibGVbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXRoOWtfcGNpX293bF9sb2FkZXIuYy0yMjktfTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hdGg5a19wY2lfb3dsX2xvYWRlci5jOjIzMDpNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgb3dsX3BjaV90YWJsZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXRoOWtfcGNpX293bF9sb2FkZXIuYy0yMzEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYz0yMz1zdGF0aWMgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgYXRoOWtfaGlmX3VzYl9pZHNbXSA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6MjQ6XHR7IFVTQl9ERVZJQ0UoMHgwY2YzLCAweDkyNzEpIH0sIC8qIEF0aGVyb3MgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6MjU6XHR7IFVTQl9ERVZJQ0UoMHgwY2YzLCAweDEwMDYpIH0sIC8qIEF0aGVyb3MgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6MjY6XHR7IFVTQl9ERVZJQ0UoMHgwODQ2LCAweDkwMzApIH0sIC8qIE5ldGdlYXIgTjE1MCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzoyNzpcdHsgVVNCX0RFVklDRSgweDA3YjgsIDB4OTI3MSkgfSwgLyogQWx0YWkgV0ExMDExTi1HVSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzoyODpcdHsgVVNCX0RFVklDRSgweDA3RDEsIDB4M0ExMCkgfSwgLyogRGxpbmsgV2lyZWxlc3MgMTUwICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjI5Olx0eyBVU0JfREVWSUNFKDB4MTNEMywgMHgzMzI3KSB9LCAvKiBBenVyZXdhdmUgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6MzA6XHR7IFVTQl9ERVZJQ0UoMHgxM0QzLCAweDMzMjgpIH0sIC8qIEF6dXJld2F2ZSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzozMTpcdHsgVVNCX0RFVklDRSgweDEzRDMsIDB4MzM0NikgfSwgLyogSU1DIE5ldHdvcmtzICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjMyOlx0eyBVU0JfREVWSUNFKDB4MTNEMywgMHgzMzQ4KSB9LCAvKiBBenVyZXdhdmUgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6MzM6XHR7IFVTQl9ERVZJQ0UoMHgxM0QzLCAweDMzNDkpIH0sIC8qIEF6dXJld2F2ZSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzozNDpcdHsgVVNCX0RFVklDRSgweDEzRDMsIDB4MzM1MCkgfSwgLyogQXp1cmV3YXZlICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjM1Olx0eyBVU0JfREVWSUNFKDB4MDRDQSwgMHg0NjA1KSB9LCAvKiBMaXRlb24gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6MzY6XHR7IFVTQl9ERVZJQ0UoMHgwNDBELCAweDM4MDEpIH0sIC8qIFZJQSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzozNzpcdHsgVVNCX0RFVklDRSgweDBjZjMsIDB4YjAwMykgfSwgLyogVWJpcXVpdGkgV2lmaVN0YXRpb24gRXh0ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjM4Olx0eyBVU0JfREVWSUNFKDB4MGNmMywgMHhiMDAyKSB9LCAvKiBVYmlxdWl0aSBXaWZpU3RhdGlvbiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzozOTpcdHsgVVNCX0RFVklDRSgweDA1N2MsIDB4ODQwMykgfSwgLyogQVZNIEZSSVRaIVdMQU4gMTFOIHYyIFVTQiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo0MDpcdHsgVVNCX0RFVklDRSgweDA0NzEsIDB4MjA5ZSkgfSwgLyogUGhpbGlwcyAob3IgTlhQKSBQVEEwMSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo0MTpcdHsgVVNCX0RFVklDRSgweDFlZGEsIDB4MjMxNSkgfSwgLyogQWlyVGllcyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NDM6XHR7IFVTQl9ERVZJQ0UoMHgwY2YzLCAweDcwMTUpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00NC1cdCAgLmRyaXZlcl9pbmZvID0gQVI5Mjg3X1VTQiB9LCAgLyogQXRoZXJvcyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NDY6XHR7IFVTQl9ERVZJQ0UoMHgwY2YzLCAweDcwMTApLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00Ny1cdCAgLmRyaXZlcl9pbmZvID0gQVI5MjgwX1VTQiB9LCAgLyogQXRoZXJvcyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo0ODpcdHsgVVNCX0RFVklDRSgweDA4NDYsIDB4OTAxOCksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQ5LVx0ICAuZHJpdmVyX2luZm8gPSBBUjkyODBfVVNCIH0sICAvKiBOZXRnZWFyIFdOREEzMjAwICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjUwOlx0eyBVU0JfREVWSUNFKDB4MDgzQSwgMHhBNzA0KSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNTEtXHQgIC5kcml2ZXJfaW5mbyA9IEFSOTI4MF9VU0IgfSwgIC8qIFNNQyBOZXR3b3JrcyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo1MjpcdHsgVVNCX0RFVklDRSgweDA0MTEsIDB4MDE3ZiksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTUzLVx0ICAuZHJpdmVyX2luZm8gPSBBUjkyODBfVVNCIH0sICAvKiBTb255IFVXQS1CUjEwMCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo1NDpcdHsgVVNCX0RFVklDRSgweDA0MTEsIDB4MDE5NyksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTU1LVx0ICAuZHJpdmVyX2luZm8gPSBBUjkyODBfVVNCIH0sICAvKiBCdWZmYWxvIFdMSS1VVi1BRzMwMFAgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NTY6XHR7IFVTQl9ERVZJQ0UoMHgwNGRhLCAweDM5MDQpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy01Ny1cdCAgLmRyaXZlcl9pbmZvID0gQVI5MjgwX1VTQiB9LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo1ODpcdHsgVVNCX0RFVklDRSgweDA5MzAsIDB4MGEwOCksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTU5LVx0ICAuZHJpdmVyX2luZm8gPSBBUjkyODBfVVNCIH0sICAvKiBUb3NoaWJhIFdMTS0yMFUyIGFuZCBHTi0xMDgwICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTYwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo2MTpcdHsgVVNCX0RFVklDRSgweDBjZjMsIDB4MjBmZiksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTYyLVx0ICAuZHJpdmVyX2luZm8gPSBTVE9SQUdFX0RFVklDRSB9LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNjYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjY3Ok1PRFVMRV9ERVZJQ0VfVEFCTEUodXNiLCBhdGg5a19oaWZfdXNiX2lkcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTY4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9wY2kuYz0xMDYyPXN0YXRpYyBTSU1QTEVfREVWX1BNX09QUyhhdGg5a19wbV9vcHMsIGF0aF9wY2lfc3VzcGVuZCwgYXRoX3BjaV9yZXN1bWUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9wY2kuYy0xMDcyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3BjaS5jOjEwNzM6TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIGF0aF9wY2lfaWRfdGFibGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3BjaS5jLTEwNzQtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDAxOjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2NDg4CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogNzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRGl2aW5nIGludG8gYXRoOWtfaHRjIFVTQiBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyBgYXRoOWtfaHRjYCDigJMgdGhhdCYjMzk7cyB0aGUgVVNCIFdpRmkgZHJpdmVyLCByaWdodD8gSW50ZXJlc3RpbmcuLi4gVVNCIGZ1enppbmcsIGh1aD8gVGhpcyBjb3VsZCBiZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSBjYW4gZGlnIHVwLiBGaXJzdCwgSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiByZWNlbnQgY2hhbmdlcyBhbmQgY3J1Y2lhbCBzeW1ib2xzIHdpdGhpbiB0aGlzIGRyaXZlci4gS25vd2luZyB3aGVyZSB0byBsb29rIGlzIGhhbGYgdGhlIGJhdHRsZS4KCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgaW50byB0aGUgY29kZS4gSSYjMzk7bGwgZm9jdXMgb24gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuY2AuIFNwZWNpZmljYWxseSwgSSYjMzk7bGwgYmUgcmV2aWV3aW5nIGxpbmVzIDQ2MC02NjAgYW5kIHRoZW4gMTA1MC0xMDgwLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgZ29vZCB2aWV3IG9mIGFueSByZWxldmFudCBzcGVjdHJhbCBhbmFseXNpcyBmdW5jdGlvbmFsaXR5IHRoYXQgaXMgaW4gdGhlIGRyaXZlci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgYW55dGhpbmcgdGhlcmUgbG9va3MgbGlrZSBhIHBvdGVudGlhbCB0YXJnZXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDAxOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDYwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA0NjA6XHRcdH1cbiA0NjE6XHRcbiA0NjI6XHRcdGlmIChyZXQpXG4gNDYzOlx0XHRcdHJldHVybiAxO1xuIDQ2NDpcdFx0ZWxzZVxuIDQ2NTpcdFx0XHRyZXR1cm4gMDtcbiA0NjY6XHR9XG4gNDY3Olx0XG4gNDY4Olx0c3RhdGljIHZvaWQgYXRoX2Ntbl9jb3VudF9mZnRfc2FtcGxlKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdixcbiA0Njk6XHRcdFx0XHRcdCAgICAgaW50IHJldClcbiA0NzA6XHR7XG4gNDcxOlx0XHRzdHJ1Y3QgYXRoX3J4X3N0YXRzICpyeF9zdGF0cyA9IHNwZWNfcHJpdi1cdTAwM2VyeF9zdGF0cztcbiA0NzI6XHRcbiA0NzM6XHRcdGlmICghcnhfc3RhdHMpXG4gNDc0Olx0XHRcdHJldHVybjtcbiA0NzU6XHRcbiA0NzY6XHRcdGlmIChyZXQgPT0gMClcbiA0Nzc6XHRcdFx0cnhfc3RhdHMtXHUwMDNlcnhfc3BlY3RyYWxfc2FtcGxlX2dvb2QmIzQzOyYjNDM7O1xuIDQ3ODpcdFx0ZWxzZVxuIDQ3OTpcdFx0XHRyeF9zdGF0cy1cdTAwM2VyeF9zcGVjdHJhbF9zYW1wbGVfZXJyJiM0MzsmIzQzOztcbiA0ODA6XHR9XG4gNDgxOlx0XG4gNDgyOlx0LyogcmV0dXJucyAxIGlmIHRoaXMgd2FzIGEgc3BlY3RyYWwgZnJhbWUsIGV2ZW4gaWYgbm90IGhhbmRsZWQuICovXG4gNDgzOlx0aW50IGF0aF9jbW5fcHJvY2Vzc19mZnQoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LCBzdHJ1Y3QgaWVlZTgwMjExX2hkciAqaGRyLFxuIDQ4NDpcdFx0XHQgICAgc3RydWN0IGF0aF9yeF9zdGF0dXMgKnJzLCB1NjQgdHNmKVxuIDQ4NTpcdHtcbiA0ODY6XHRcdHU4IHNhbXBsZV9idWZbU1BFQ1RSQUxfU0FNUExFX01BWF9MRU5dID0gezB9O1xuIDQ4NzpcdFx0c3RydWN0IGF0aF9odyAqYWggPSBzcGVjX3ByaXYtXHUwMDNlYWg7XG4gNDg4Olx0XHRzdHJ1Y3QgYXRoX2NvbW1vbiAqY29tbW9uID0gYXRoOWtfaHdfY29tbW9uKHNwZWNfcHJpdi1cdTAwM2VhaCk7XG4gNDg5Olx0XHR1OCBudW1fYmlucywgKnZkYXRhID0gKHU4ICopaGRyO1xuIDQ5MDpcdFx0c3RydWN0IGF0aF9yYWRhcl9pbmZvICpyYWRhcl9pbmZvO1xuIDQ5MTpcdFx0aW50IGxlbiA9IHJzLVx1MDAzZXJzX2RhdGFsZW47XG4gNDkyOlx0XHRpbnQgaTtcbiA0OTM6XHRcdGludCBnb3Rfc2xlbiA9IDA7XG4gNDk0Olx0XHR1OCAgKnNhbXBsZV9zdGFydDtcbiA0OTU6XHRcdGludCBzYW1wbGVfYnl0ZXMgPSAwO1xuIDQ5NjpcdFx0aW50IHJldCA9IDA7XG4gNDk3Olx0XHR1MTYgZmZ0X2xlbiwgc2FtcGxlX2xlbiwgZnJlcSA9IGFoLVx1MDAzZWN1cmNoYW4tXHUwMDNlY2hhbi1cdTAwM2VjZW50ZXJfZnJlcTtcbiA0OTg6XHRcdGVudW0gbmw4MDIxMV9jaGFubmVsX3R5cGUgY2hhbl90eXBlO1xuIDQ5OTpcdFx0YXRoX2Ntbl9mZnRfaWR4X3ZhbGlkYXRvciAqZmZ0X2lkeF92YWxpZGF0b3I7XG4gNTAwOlx0XHRhdGhfY21uX2ZmdF9zYW1wbGVfaGFuZGxlciAqZmZ0X2hhbmRsZXI7XG4gNTAxOlx0XG4gNTAyOlx0XHQvKiBBUjkyODAgYW5kIGJlZm9yZSByZXBvcnQgdmlhIEFUSDlLX1BIWUVSUl9SQURBUiwgQVI5M3h4IGFuZCBuZXdlclxuIDUwMzpcdFx0ICogdmlhIEFUSDlLX1BIWUVSUl9TUEVDVFJBTC4gSGF2ZW4mIzM5O3Qgc2VlbiBBVEg5S19QSFlFUlJfRkFMU0VfUkFEQVJfRVhUXG4gNTA0Olx0XHQgKiB5ZXQsIGJ1dCB0aGlzIGlzIHN1cHBvc2VkIHRvIGJlIHBvc3NpYmxlIGFzIHdlbGwuXG4gNTA1Olx0XHQgKi9cbiA1MDY6XHRcdGlmIChycy1cdTAwM2Vyc19waHllcnIgIT0gQVRIOUtfUEhZRVJSX1JBREFSIFx1MDAyNlx1MDAyNlxuIDUwNzpcdFx0ICAgIHJzLVx1MDAzZXJzX3BoeWVyciAhPSBBVEg5S19QSFlFUlJfRkFMU0VfUkFEQVJfRVhUIFx1MDAyNlx1MDAyNlxuIDUwODpcdFx0ICAgIHJzLVx1MDAzZXJzX3BoeWVyciAhPSBBVEg5S19QSFlFUlJfU1BFQ1RSQUwpXG4gNTA5Olx0XHRcdHJldHVybiAwO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAwMTowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNzY2NQoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIGBjb21tb24tc3BlY3RyYWwuY2AqKgoKT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byBwaW5wb2ludCB3aGVyZSB0aGlzIGlzc3VlIG1pZ2h0IGJlIG9jY3VycmluZyB3aXRoaW4gdGhlIHNwZWN0cmFsIGFuYWx5c2lzIGNvZGUuIE15IGluc3RpbmN0IHRlbGxzIG1lIHRoZSBwcm9ibGVtIGlzIGxpa2VseSB3aXRoaW4gdGhlIGNvcmUgc2lnbmFsIHByb2Nlc3Npbmcgcm91dGluZXMsIHNvIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgZXhhbWluaW5nIGxpbmVzIDYyMC02NjAgb2YgYGNvbW1vbi1zcGVjdHJhbC5jYC4gVGhpcyBzZWN0aW9uIGxpa2VseSBjb250YWlucyBhIGNyaXRpY2FsIHNlZ21lbnQgZm9yIGVpdGhlciB0aGUgRkZUIGNhbGN1bGF0aW9uLCB3aW5kb3dpbmcgZnVuY3Rpb25zLCBvciBwZXJoYXBzIHRoZSBwb3dlciBzcGVjdHJ1bSBjb21wdXRhdGlvbiwgYWxsIG9mIHdoaWNoIGFyZSBlc3NlbnRpYWwgaW4gYW55IHNwZWN0cmFsIGFuYWx5c2lzIHByb2Nlc3MuIEkmIzM5O2xsIG5lZWQgdG8gY2FyZWZ1bGx5IGRpc3NlY3QgdGhlIGxvZ2ljIGluIHRoYXQgc2VjdGlvbiwgcGF5aW5nIGNsb3NlIGF0dGVudGlvbiB0byBkYXRhIGZsb3cgYW5kIGFueSBwb3RlbnRpYWwgZWRnZSBjYXNlcyB0aGF0IGNvdWxkIGludHJvZHVjZSBlcnJvcnMuIFRoZSBnb2FsIGlzIHRvIHJhcGlkbHkgZGV0ZXJtaW5lIGlmIGFueSBvZiB0aGUgYXNzdW1wdGlvbnMgb2YgdGhlIGFsZ29yaXRobSBhcmUgdmlvbGF0ZWQgYXQgdGhhdCBsb2NhdGlvbiwgZXNwZWNpYWxseSByZWxhdGl2ZSB0byB0aGUgaW5jb21pbmcgc2lnbmFsLCBhbmQgdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbi4gSSBoYXZlIHRvIGFwcGx5IG15IHVuZGVyc3RhbmRpbmcgb2Ygc3BlY3RyYWwgYW5hbHlzaXMgcHJpbmNpcGxlcywgYW5kIGZvY3VzIG9uIGRldGFpbHMgaGVyZTogdmFyaWFibGUgdHlwZXMsIGxvb3AgY29uZGl0aW9ucywgYW5kIGFueSBwb3RlbnRpYWwgb2ZmLWJ5LW9uZSBlcnJvcnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDAxOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNjIwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA2MjA6XHRcdFx0XHRcdGNvbnRpbnVlO1xuIDYyMTpcdFxuIDYyMjpcdFx0XHRcdGdvdF9zbGVuID0gMTtcbiA2MjM6XHRcdFx0fVxuIDYyNDpcdFxuIDYyNTpcdFx0XHRpZiAoZ290X3NsZW4pIHtcbiA2MjY6XHRcdFx0XHRhdGhfZGJnKGNvbW1vbiwgU1BFQ1RSQUxfU0NBTiwgXCYjMzQ7RkZUIGZyYW1lIGxlbjogJWlcXG5cJiMzNDssXG4gNjI3Olx0XHRcdFx0XHRzYW1wbGVfYnl0ZXMpO1xuIDYyODpcdFxuIDYyOTpcdFx0XHRcdC8qIE9ubHkgdHJ5IHRvIGZpeCBhIGZyYW1lIGlmIGl0JiMzOTtzIHRoZSBvbmx5IG9uZVxuIDYzMDpcdFx0XHRcdCAqIG9uIHRoZSByZXBvcnQsIGVsc2UganVzdCBza2lwIGl0LlxuIDYzMTpcdFx0XHRcdCAqL1xuIDYzMjpcdFx0XHRcdGlmIChzYW1wbGVfYnl0ZXMgIT0gc2FtcGxlX2xlbiBcdTAwMjZcdTAwMjYgbGVuIFx1MDAzYz0gZmZ0X2xlbiAmIzQzOyAyKSB7XG4gNjMzOlx0XHRcdFx0XHRhdGhfY21uX2NvcHlfZmZ0X2ZyYW1lKHNhbXBsZV9zdGFydCxcbiA2MzQ6XHRcdFx0XHRcdFx0XHQgICAgICAgc2FtcGxlX2J1Ziwgc2FtcGxlX2xlbixcbiA2MzU6XHRcdFx0XHRcdFx0XHQgICAgICAgc2FtcGxlX2J5dGVzKTtcbiA2MzY6XHRcbiA2Mzc6XHRcdFx0XHRcdHJldCA9IGZmdF9oYW5kbGVyKHJzLCBzcGVjX3ByaXYsIHNhbXBsZV9idWYsXG4gNjM4Olx0XHRcdFx0XHRcdFx0ICB0c2YsIGZyZXEsIGNoYW5fdHlwZSk7XG4gNjM5Olx0XG4gNjQwOlx0XHRcdFx0XHRhdGhfY21uX2NvdW50X2ZmdF9zYW1wbGUoc3BlY19wcml2LCByZXQpO1xuIDY0MTpcdFxuIDY0MjpcdFx0XHRcdFx0LyogTWl4IHRoZSByZWNlaXZlZCBiaW5zIHRvIHRoZSAvZGV2L3JhbmRvbVxuIDY0MzpcdFx0XHRcdFx0ICogcG9vbFxuIDY0NDpcdFx0XHRcdFx0ICovXG4gNjQ1Olx0XHRcdFx0XHRhZGRfZGV2aWNlX3JhbmRvbW5lc3Moc2FtcGxlX2J1ZiwgbnVtX2JpbnMpO1xuIDY0NjpcdFxuIDY0NzpcdFx0XHRcdFx0bWVtc2V0KHNhbXBsZV9idWYsIDAsIFNQRUNUUkFMX1NBTVBMRV9NQVhfTEVOKTtcbiA2NDg6XHRcdFx0XHR9XG4gNjQ5Olx0XG4gNjUwOlx0XHRcdFx0LyogUHJvY2VzcyBhIG5vcm1hbCBmcmFtZSAqL1xuIDY1MTpcdFx0XHRcdGlmIChzYW1wbGVfYnl0ZXMgPT0gc2FtcGxlX2xlbikge1xuIDY1MjpcdFx0XHRcdFx0cmV0ID0gZmZ0X2hhbmRsZXIocnMsIHNwZWNfcHJpdiwgc2FtcGxlX3N0YXJ0LFxuIDY1MzpcdFx0XHRcdFx0XHRcdCAgdHNmLCBmcmVxLCBjaGFuX3R5cGUpO1xuIDY1NDpcdFxuIDY1NTpcdFx0XHRcdFx0YXRoX2Ntbl9jb3VudF9mZnRfc2FtcGxlKHNwZWNfcHJpdiwgcmV0KTtcbiA2NTY6XHRcbiA2NTc6XHRcdFx0XHRcdC8qIE1peCB0aGUgcmVjZWl2ZWQgYmlucyB0byB0aGUgL2Rldi9yYW5kb21cbiA2NTg6XHRcdFx0XHRcdCAqIHBvb2xcbiA2NTk6XHRcdFx0XHRcdCAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAwMTowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzODUyNwoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gYGNvbW1vbi1zcGVjdHJhbC5jYCoqCgpPa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gTGV0JiMzOTtzIHNlZS4uLiB0aGUgaW5pdGlhbCBhbmFseXNpcyBzdWdnZXN0cyBhIHBvdGVudGlhbCBpc3N1ZSBpbiB0aGUgc3BlY3RyYWwgcHJvY2Vzc2luZywgc28gSSYjMzk7bSBnb2luZyB0byBqdW1wIHN0cmFpZ2h0IGludG8gYGNvbW1vbi1zcGVjdHJhbC5jYC4gU3BlY2lmaWNhbGx5LCBJIHdhbnQgdG8gemVybyBpbiBvbiBsaW5lcyAxMDUwIHRocm91Z2ggMTA4MC4gVGhpcyByZWdpb24gdXN1YWxseSBoYW5kbGVzIGEgY3JpdGljYWwgdHJhbnNmb3JtIG9yIGZpbHRlcmluZyBzdGVwLiBJIGhhdmUgYSBodW5jaCB0aGF0JiMzOTtzIHdoZXJlIHRoaW5ncyBhcmUgZmFsbGluZyBhcGFydCwgc28gbGV0JiMzOTtzIHN0YXJ0IHRoZXJlIGFuZCBzZWUgd2hhdCB3ZSBjYW4gZmluZC4gSXQmIzM5O3MgYSB0YXJnZXRlZCBhcHByb2FjaDsgaG9wZWZ1bGx5IHRoaXMgd2lsbCBwcm92aWRlIHNvbWUgaW5zaWdodHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDAxOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTA1MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxMDUwOlx0LyoqKioqKioqKioqKioqKioqKioqKi9cbjEwNTE6XHRcbjEwNTI6XHR2b2lkIGF0aDlrX2Ntbl9zcGVjdHJhbF9kZWluaXRfZGVidWcoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2KVxuMTA1MzpcdHtcbjEwNTQ6XHRcdGlmIChzcGVjX3ByaXYtXHUwMDNlcmZzX2NoYW5fc3BlY19zY2FuKSB7XG4xMDU1Olx0XHRcdHJlbGF5X2Nsb3NlKHNwZWNfcHJpdi1cdTAwM2VyZnNfY2hhbl9zcGVjX3NjYW4pO1xuMTA1NjpcdFx0XHRzcGVjX3ByaXYtXHUwMDNlcmZzX2NoYW5fc3BlY19zY2FuID0gTlVMTDtcbjEwNTc6XHRcdH1cbjEwNTg6XHR9XG4xMDU5Olx0RVhQT1JUX1NZTUJPTChhdGg5a19jbW5fc3BlY3RyYWxfZGVpbml0X2RlYnVnKTtcbjEwNjA6XHRcbjEwNjE6XHR2b2lkIGF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdixcbjEwNjI6XHRcdFx0XHRcdCAgIHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcGh5LFxuMTA2MzpcdFx0XHRcdFx0ICAgc3RydWN0IGF0aF9yeF9zdGF0cyAqcnhfc3RhdHMpXG4xMDY0Olx0e1xuMTA2NTpcdFx0c3BlY19wcml2LVx1MDAzZXJ4X3N0YXRzID0gcnhfc3RhdHM7XG4xMDY2Olx0XHRzcGVjX3ByaXYtXHUwMDNlcmZzX2NoYW5fc3BlY19zY2FuID0gcmVsYXlfb3BlbihcJiMzNDtzcGVjdHJhbF9zY2FuXCYjMzQ7LFxuMTA2NzpcdFx0XHRcdFx0XHQgICAgZGVidWdmc19waHksXG4xMDY4Olx0XHRcdFx0XHRcdCAgICAxMDI0LCAyNTYsIFx1MDAyNnJmc19zcGVjX3NjYW5fY2IsXG4xMDY5Olx0XHRcdFx0XHRcdCAgICBOVUxMKTtcbjEwNzA6XHRcdGlmICghc3BlY19wcml2LVx1MDAzZXJmc19jaGFuX3NwZWNfc2NhbilcbjEwNzE6XHRcdFx0cmV0dXJuO1xuMTA3MjpcdFxuMTA3MzpcdFx0ZGVidWdmc19jcmVhdGVfZmlsZShcJiMzNDtzcGVjdHJhbF9zY2FuX2N0bFwmIzM0OyxcbjEwNzQ6XHRcdFx0XHQgICAgMDYwMCxcbjEwNzU6XHRcdFx0XHQgICAgZGVidWdmc19waHksIHNwZWNfcHJpdixcbjEwNzY6XHRcdFx0XHQgICAgXHUwMDI2Zm9wc19zcGVjX3NjYW5fY3RsKTtcbjEwNzc6XHRcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXCYjMzQ7c3BlY3RyYWxfc2hvcnRfcmVwZWF0XCYjMzQ7LFxuMTA3ODpcdFx0XHRcdCAgICAwNjAwLFxuMTA3OTpcdFx0XHRcdCAgICBkZWJ1Z2ZzX3BoeSwgc3BlY19wcml2LFxuMTA4MDpcdFx0XHRcdCAgICBcdTAwMjZmb3BzX3NwZWN0cmFsX3Nob3J0X3JlcGVhdCk7XG4xMDgxOlx0XHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFwmIzM0O3NwZWN0cmFsX2NvdW50XCYjMzQ7LFxuMTA4MjpcdFx0XHRcdCAgICAwNjAwLFxuMTA4MzpcdFx0XHRcdCAgICBkZWJ1Z2ZzX3BoeSwgc3BlY19wcml2LFxuMTA4NDpcdFx0XHRcdCAgICBcdTAwMjZmb3BzX3NwZWN0cmFsX2NvdW50KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMDE6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzkzNDUKCQkJCQkJCW91dHB1dDogMjA2CgkJCQkJCQl0aG91Z2h0czogOTAyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIGF0aDlrIFNwZWN0cmFsIFNjYW4gQ29uZmlndXJhdGlvbiBhbmQgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcyBmb3IgdGhpcyBzcGVjdHJhbCBzY2FuIGZ1bmN0aW9uYWxpdHkuIEl0IGxvb2tzIGxpa2UgYEFUSDlLX0NPTU1PTl9TUEVDVFJBTGAgaXMgdGhlIGNvcmUsIGJ1dCBpdCBkZXBlbmRzIG9uIGVpdGhlciBgQVRIOUtfREVCVUdGU2Agb3IgYEFUSDlLX0hUQ19ERUJVR0ZTYC4gRGl2aW5nIGRlZXBlciwgYEFUSDlLX0hUQ19ERUJVR0ZTYCBuZWVkcyBgQVRIOUtfSFRDYCBhbmQgYERFQlVHX0ZTYCwgYW5kIHRoYXQsIGluIHR1cm4sIHJlcXVpcmVzIGBVU0JgIGFuZCBgTUFDODAyMTFgLiBNZWFud2hpbGUsIGBBVEg5S19ERUJVR0ZTYCB3YW50cyBgQVRIOUtgLCBgREVCVUdfRlNgLCBhbmQgYE1BQzgwMjExX0RFQlVHRlNgLiBPZiBjb3Vyc2UsIGBBVEg5S2AgaXRzZWxmIGRlcGVuZHMgb24gYE1BQzgwMjExYC4KCk5vdywgSSYjMzk7bGwgcmV2aWV3IGFsbCB0aGUgY29uZmlncyBpbnZvbHZlZDogYEFUSDlLYCwgYEFUSDlLX0hUQ2AsIGBBVEg5S19ERUJVR0ZTYCwgYEFUSDlLX0hUQ19ERUJVR0ZTYCwgYEFUSDlLX0NPTU1PTl9TUEVDVFJBTGAsIGBNQUM4MDIxMWAsIGBVU0JgLCBhbmQgYERFQlVHX0ZTYC4KCk5leHQsIEkgbmVlZCB0byBpZGVudGlmeSB0aGUga2V5IGZ1bmN0aW9ucyBvciAmIzM0O2ZvY3VzIHN5bWJvbHMmIzM0OyB0aGF0IGFyZSBiZWluZyB0b3VjaGVkLiBJIHNlZToKCjEuICBgYXRoX2Ntbl9wcm9jZXNzX2ZmdGA6IFRoaXMgaXMgdGhlIG1haW4gRkZUIHByb2Nlc3NpbmcgZnVuY3Rpb24gbW9kaWZpZWQgaW4gYGNvbW1vbi1zcGVjdHJhbC5jYC4KMi4gIGBhdGhfY21uX2NvdW50X2ZmdF9zYW1wbGVgOiBJdCYjMzk7cyBgc3RhdGljYCwgYnV0IEkmIzM5O2xsIG1ha2Ugc3VyZSB0byBjaGVjayBpdHMgbm9uLXN0YXRpYyBlbnRyeSBwb2ludHMganVzdCBpbiBjYXNlLgozLiAgYGF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnYDogUHJvdG90eXBlIGFuZCBpbXBsZW1lbnRhdGlvbiBjaGFuZ2VkIGluIGBjb21tb24tc3BlY3RyYWwuY2AuCjQuICBgYXRoOWtfaW5pdF9kZWJ1Z2AgaW4gYGRlYnVnLmNgLgo1LiAgYGF0aDlrX2h0Y19pbml0X2RlYnVnYCBpbiBgaHRjX2Rydl9kZWJ1Zy5jYC4KCkkmIzM5O2xsIGNoZWNrIGZvciBhbnkgb3RoZXIgc3ltYm9scyBvciBjYWxsZXJzLiBMb29raW5nIHNwZWNpZmljYWxseSBhdCBgY29tbW9uLXNwZWN0cmFsLmNgLCBJIHNlZSB0aGF0IGBhdGhfY21uX3Byb2Nlc3NfZmZ0YCBpcyBjYWxsZWQgYnkgYGF0aDlrX3J4X3NrYl9wcmVwcm9jZXNzYCAoYXRoOWsgcnggcGF0aCkgYW5kIGBhdGg5a19yeF9wcmVwYXJlYCAoYXRoOWtcX2h0YyByeCBwYXRoKS4gR29vZCwgSSYjMzk7bGwgY29uZmlybSB0aGF0IHRoZXNlIGFyZSBwcmVzZW50IGluIHRoZSBjb2RlYmFzZS4gWWVzLCB0aGV5IGFyZS4KCk5vdywgbGV0JiMzOTtzIGFzc2VzcyB0aGUgZnV6emluZyBwb3RlbnRpYWwuIEl0IHNlZW1zIHdlIGhhdmUgYSBnb29kIHNldHVwIGhlcmU6IHJlYWNoYWJsZSB2aWEgVVNCIGdhZGdldCAoZm9yIGBhdGg5a19odGNgIGVtdWxhdGlvbikgYW5kIGRlYnVnZnMsIGNvbWJpbmVkIHdpdGggbmV0ZGV2IGFuZCBubDgwMjExIHJ4IHBhY2tldCBwcm9jZXNzaW5nLiBBbHNvLCB0aGVyZSYjMzk7cyBhIG1vZGlmaWNhdGlvbiBvZiBleGVjdXRhYmxlIGNvZGUgbG9naWMgd2l0aGluIHRoZSB3aXJlbGVzcyBkcml2ZXIgc3Vic3lzdGVtIChgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2ApLiBUaGVyZSYjMzk7cyBhbHNvIHNvbWUgd29yayBpbiBSWCBzdGF0cyBoYW5kbGluZyBmb3Igc3BlY3RyYWwgc2NhbiBmcmFtZXMgdG8gYXZvaWQgcG90ZW50aWFsIHR5cGUgbWlzbWF0Y2hlcyBiZXR3ZWVuIGF0aDlrIGFuZCBhdGg5a1xfaHRjLiBJdCYjMzk7cyBhICYjMzQ7eWVzJiMzNDsgZm9yIHdvcnRoIGZ1enppbmcuCgpNeSBsaXN0IG9mIEZvY3VzU3ltYm9scyBzaG91bGQgYmU6IGBhdGhfY21uX3Byb2Nlc3NfZmZ0YCwgYGF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnYCwgYGF0aDlrX2h0Y19pbml0X2RlYnVnYCwgYW5kIGBhdGg5a19pbml0X2RlYnVnYC4KCk5vdywgbGV0JiMzOTtzIGNoZWNrIHRoYXQgYGF0aF9jbW5fY291bnRfZmZ0X3NhbXBsZWAgZnVuY3Rpb24uIEl0JiMzOTtzIG1hcmtlZCBgc3RhdGljIHZvaWQgYXRoX2Ntbl9jb3VudF9mZnRfc2FtcGxlYC4gT24gYW1kNjQsIGl0IGNvdWxkIGJlIGlubGluZWQgaW50byBgYXRoX2Ntbl9wcm9jZXNzX2ZmdGAuIFNvIHRoZSBub24tc3RhdGljIGZlYXR1cmUtc3BlY2lmaWMgZW50cnkgcG9pbnRzIGFyZSA6IGBhdGhfY21uX3Byb2Nlc3NfZmZ0YCwgYGF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnYCwgYGF0aDlrX2h0Y19pbml0X2RlYnVnYCwgYW5kIGBhdGg5a19pbml0X2RlYnVnYC4KCkkmIzM5O2xsIHZlcmlmeSB0aGUgRW5hYmxlQ29uZmlncyBub3c6IGBBVEg5S19DT01NT05fU1BFQ1RSQUxgLCBgQVRIOUtfSFRDX0RFQlVHRlNgLCBgQVRIOUtfREVCVUdGU2AsIGBBVEg5S19IVENgLCBhbmQgYEFUSDlLYC4KCkkmIzM5O2xsIGRvdWJsZS1jaGVjayBldmVyeXRoaW5nIG9uZSBsYXN0IHRpbWUuIElzIGBBVEg5S19DT01NT05fU1BFQ1RSQUxgIGEgYm9vbGVhbj8gWWVzLiBEb2VzIGl0IHNlbGVjdCBgUkVMQVlgPyBZZXMuIEFyZSB0aGVyZSBhbnkgb3RoZXIgcmVxdWlyZWQgY29uZmlncz8gTm8uIGBBVEg5S2AsIGBBVEg5S19IVENgLCBgQVRIOUtfREVCVUdGU2AsIGBBVEg5S19IVENfREVCVUdGU2AsIGBBVEg5S19DT01NT05fU1BFQ1RSQUxgLCBgTUFDODAyMTFgLCBhbmQgYERFQlVHX0ZTYC4KClRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLiBJJiMzOTttIHJlYWR5IHRvIG1vdmUgZm9yd2FyZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMDE6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FUSDlLJiMzNDssCiAgICAmIzM0O0FUSDlLX0hUQyYjMzQ7LAogICAgJiMzNDtBVEg5S19ERUJVR0ZTJiMzNDssCiAgICAmIzM0O0FUSDlLX0hUQ19ERUJVR0ZTJiMzNDssCiAgICAmIzM0O0FUSDlLX0NPTU1PTl9TUEVDVFJBTCYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtERUJVR19GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2F0aF9jbW5fcHJvY2Vzc19mZnQmIzM0OywKICAgICYjMzQ7YXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcmIzM0OywKICAgICYjMzQ7YXRoOWtfaHRjX2luaXRfZGVidWcmIzM0OywKICAgICYjMzQ7YXRoOWtfaW5pdF9kZWJ1ZyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZWZhY3RvcnMgdGhlIHNwZWN0cmFsIHNjYW4gUlggc3RhdGlzdGljcyBhY2NvdW50aW5nIGluIHRoZSBhdGg5ay9hdGg5a19odGMgd2lyZWxlc3MgZHJpdmVyIHRvIGF2b2lkIGluY29ycmVjdCBzdHJ1Y3QgY2FzdGluZyBiZXR3ZWVuIGF0aDlrIGFuZCBhdGg5a19odGMuIFRoZSBtb2RpZmllZCBjb2RlIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIFVTQiBlbXVsYXRpb24gKGF0aDlrX2h0YykgYW5kIGRlYnVnZnMvd2lyZWxlc3MgUlggZnJhbWUgcHJvY2Vzc2luZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QVRIOUsmIzM0OywKICAgICYjMzQ7QVRIOUtfSFRDJiMzNDssCiAgICAmIzM0O0FUSDlLX0RFQlVHRlMmIzM0OywKICAgICYjMzQ7QVRIOUtfSFRDX0RFQlVHRlMmIzM0OywKICAgICYjMzQ7QVRIOUtfQ09NTU9OX1NQRUNUUkFMJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O0RFQlVHX0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YXRoX2Ntbl9wcm9jZXNzX2ZmdCYjMzQ7LAogICAgJiMzNDthdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyYjMzQ7LAogICAgJiMzNDthdGg5a19odGNfaW5pdF9kZWJ1ZyYjMzQ7LAogICAgJiMzNDthdGg5a19pbml0X2RlYnVnJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlZmFjdG9ycyB0aGUgc3BlY3RyYWwgc2NhbiBSWCBzdGF0aXN0aWNzIGFjY291bnRpbmcgaW4gdGhlIGF0aDlrL2F0aDlrX2h0YyB3aXJlbGVzcyBkcml2ZXIgdG8gYXZvaWQgaW5jb3JyZWN0IHN0cnVjdCBjYXN0aW5nIGJldHdlZW4gYXRoOWsgYW5kIGF0aDlrX2h0Yy4gVGhlIG1vZGlmaWVkIGNvZGUgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgVVNCIGVtdWxhdGlvbiAoYXRoOWtfaHRjKSBhbmQgZGVidWdmcy93aXJlbGVzcyBSWCBmcmFtZSBwcm9jZXNzaW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAwMTowMzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDAxOjAzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVmYWN0b3JzIHNwZWN0cmFsIHNjYW4gUlggc3RhdGlzdGljcyBhY2NvdW50aW5nIGluIHRoZSBhdGg5ayBkcml2ZXIgYnkgcGFzc2luZyBhbiBleHBsaWNpdCBwb2ludGVyIHRvIGBzdHJ1Y3QgYXRoX3J4X3N0YXRzYCBpbiBgYXRoX3NwZWNfc2Nhbl9wcml2YCBpbnN0ZWFkIG9mIGluYXBwcm9wcmlhdGVseSBjYXN0aW5nIGBjb21tb24tXHUwMDNlcHJpdmAgdG8gYHN0cnVjdCBhdGhfc29mdGMgKmAgKHdoaWNoIHdhcyBpbnZhbGlkIGZvciBgYXRoOWtfaHRjYCkuIFxuXG5UaGlzIGNoYW5nZSBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgbW9kaWZ5IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGhhbmRsaW5nLCB1bmluaXRpYWxpemVkIGJyYW5jaGluZywgb3Iga2VybmVsLXRvLXVzZXIgaW5mbyBsZWFrcy4gQW55IG1lbW9yeSBhY2Nlc3MgaXNzdWVzIHJlbGF0ZWQgdG8gaW52YWxpZCBwb2ludGVyIGRlcmVmZXJlbmNpbmcgb3Igc3RydWN0IGNhc3RpbmcgYXJlIGNhdWdodCBieSBLQVNBTiBvciBzdGFuZGFyZCBrZXJuZWwgZmF1bHQgaGFuZGxlcnMuIFRoZXJlZm9yZSwgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMGQ1ZDRkYjhkOGE2NTk1YTk1YmU4NzA3OTg1ZmMxMzNkZTEyNjQ0MgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgU2VwIDUgMDE6MDM6MTkgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMKaW5kZXggY2EwMWEwN2Y2NjMwYy4uZDhiZTI0ZWJjZDI0NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYwpAQCAtNDY1LDYgJiM0Mzs0NjUsMjAgQEAgYXRoX2Ntbl9pc19mZnRfYnVmX2Z1bGwoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2KQogCQlyZXR1cm4gMDsKIH0KIAomIzQzO3N0YXRpYyB2b2lkIGF0aF9jbW5fY291bnRfZmZ0X3NhbXBsZShzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsCiYjNDM7CQkJCSAgICAgaW50IHJldCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBhdGhfcnhfc3RhdHMgKnJ4X3N0YXRzID0gc3BlY19wcml2LSZndDtyeF9zdGF0czsKJiM0MzsKJiM0MzsJaWYgKCFyeF9zdGF0cykKJiM0MzsJCXJldHVybjsKJiM0MzsKJiM0MzsJaWYgKHJldCA9PSAwKQomIzQzOwkJcnhfc3RhdHMtJmd0O3J4X3NwZWN0cmFsX3NhbXBsZV9nb29kJiM0MzsmIzQzOzsKJiM0MzsJZWxzZQomIzQzOwkJcnhfc3RhdHMtJmd0O3J4X3NwZWN0cmFsX3NhbXBsZV9lcnImIzQzOyYjNDM7OwomIzQzO30KJiM0MzsKIC8qIHJldHVybnMgMSBpZiB0aGlzIHdhcyBhIHNwZWN0cmFsIGZyYW1lLCBldmVuIGlmIG5vdCBoYW5kbGVkLiAqLwogaW50IGF0aF9jbW5fcHJvY2Vzc19mZnQoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LCBzdHJ1Y3QgaWVlZTgwMjExX2hkciAqaGRyLAogCQkgICAgc3RydWN0IGF0aF9yeF9zdGF0dXMgKnJzLCB1NjQgdHNmKQpAQCAtNDcyLDcgJiM0Mzs0ODYsNiBAQCBpbnQgYXRoX2Ntbl9wcm9jZXNzX2ZmdChzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsIHN0cnVjdCBpZWVlODAyMTFfaAogCXU4IHNhbXBsZV9idWZbU1BFQ1RSQUxfU0FNUExFX01BWF9MRU5dID0gezB9OwogCXN0cnVjdCBhdGhfaHcgKmFoID0gc3BlY19wcml2LSZndDthaDsKIAlzdHJ1Y3QgYXRoX2NvbW1vbiAqY29tbW9uID0gYXRoOWtfaHdfY29tbW9uKHNwZWNfcHJpdi0mZ3Q7YWgpOwotCXN0cnVjdCBhdGhfc29mdGMgKnNjID0gY29tbW9uLSZndDtwcml2OwogCXU4IG51bV9iaW5zLCAqdmRhdGEgPSAodTggKiloZHI7CiAJc3RydWN0IGF0aF9yYWRhcl9pbmZvICpyYWRhcl9pbmZvOwogCWludCBsZW4gPSBycy0mZ3Q7cnNfZGF0YWxlbjsKQEAgLTYyNCwxMCAmIzQzOzYzNyw3IEBAIGludCBhdGhfY21uX3Byb2Nlc3NfZmZ0KHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiwgc3RydWN0IGllZWU4MDIxMV9oCiAJCQkJcmV0ID0gZmZ0X2hhbmRsZXIocnMsIHNwZWNfcHJpdiwgc2FtcGxlX2J1ZiwKIAkJCQkJCSAgdHNmLCBmcmVxLCBjaGFuX3R5cGUpOwogCi0JCQkJaWYgKHJldCA9PSAwKQotCQkJCQlSWF9TVEFUX0lOQyhzYywgcnhfc3BlY3RyYWxfc2FtcGxlX2dvb2QpOwotCQkJCWVsc2UKLQkJCQkJUlhfU1RBVF9JTkMoc2MsIHJ4X3NwZWN0cmFsX3NhbXBsZV9lcnIpOwomIzQzOwkJCQlhdGhfY21uX2NvdW50X2ZmdF9zYW1wbGUoc3BlY19wcml2LCByZXQpOwogCiAJCQkJLyogTWl4IHRoZSByZWNlaXZlZCBiaW5zIHRvIHRoZSAvZGV2L3JhbmRvbQogCQkJCSAqIHBvb2wKQEAgLTY0MiwxMCAmIzQzOzY1Miw3IEBAIGludCBhdGhfY21uX3Byb2Nlc3NfZmZ0KHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiwgc3RydWN0IGllZWU4MDIxMV9oCiAJCQkJcmV0ID0gZmZ0X2hhbmRsZXIocnMsIHNwZWNfcHJpdiwgc2FtcGxlX3N0YXJ0LAogCQkJCQkJICB0c2YsIGZyZXEsIGNoYW5fdHlwZSk7CiAKLQkJCQlpZiAocmV0ID09IDApCi0JCQkJCVJYX1NUQVRfSU5DKHNjLCByeF9zcGVjdHJhbF9zYW1wbGVfZ29vZCk7Ci0JCQkJZWxzZQotCQkJCQlSWF9TVEFUX0lOQyhzYywgcnhfc3BlY3RyYWxfc2FtcGxlX2Vycik7CiYjNDM7CQkJCWF0aF9jbW5fY291bnRfZmZ0X3NhbXBsZShzcGVjX3ByaXYsIHJldCk7CiAKIAkJCQkvKiBNaXggdGhlIHJlY2VpdmVkIGJpbnMgdG8gdGhlIC9kZXYvcmFuZG9tCiAJCQkJICogcG9vbApAQCAtMTA1Miw4ICYjNDM7MTA1OSwxMCBAQCB2b2lkIGF0aDlrX2Ntbl9zcGVjdHJhbF9kZWluaXRfZGVidWcoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2KQogRVhQT1JUX1NZTUJPTChhdGg5a19jbW5fc3BlY3RyYWxfZGVpbml0X2RlYnVnKTsKIAogdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsCi0JCQkJICAgc3RydWN0IGRlbnRyeSAqZGVidWdmc19waHkpCiYjNDM7CQkJCSAgIHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcGh5LAomIzQzOwkJCQkgICBzdHJ1Y3QgYXRoX3J4X3N0YXRzICpyeF9zdGF0cykKIHsKJiM0MzsJc3BlY19wcml2LSZndDtyeF9zdGF0cyA9IHJ4X3N0YXRzOwogCXNwZWNfcHJpdi0mZ3Q7cmZzX2NoYW5fc3BlY19zY2FuID0gcmVsYXlfb3BlbigmIzM0O3NwZWN0cmFsX3NjYW4mIzM0OywKIAkJCQkJICAgIGRlYnVnZnNfcGh5LAogCQkJCQkgICAgMTAyNCwgMjU2LCAmYW1wO3Jmc19zcGVjX3NjYW5fY2IsCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmgKaW5kZXggMDExZDhhYjhiOTc0NC4uMGUyYzdkNmQzNDg3NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaApAQCAtOTQsMTIgJiM0Mzs5NCwxNiBAQCBzdHJ1Y3QgYXRoX2h0MjBfNDBfZmZ0X3BhY2tldCB7CiAJc3RydWN0IGF0aF9yYWRhcl9pbmZvIHJhZGFyX2luZm87CiB9IF9fcGFja2VkOwogCiYjNDM7c3RydWN0IGF0aF9yeF9zdGF0czsKJiM0MzsKIHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgewogCXN0cnVjdCBhdGhfaHcgKmFoOwogCS8qIHJlbGF5KGZzKSBjaGFubmVsIGZvciBzcGVjdHJhbCBzY2FuICovCiAJc3RydWN0IHJjaGFuICpyZnNfY2hhbl9zcGVjX3NjYW47CiAJZW51bSBzcGVjdHJhbF9tb2RlIHNwZWN0cmFsX21vZGU7CiAJc3RydWN0IGF0aF9zcGVjX3NjYW4gc3BlY19jb25maWc7CiYjNDM7CS8qIGRyaXZlciYjMzk7cyBSWCBzdGF0aXN0aWNzIHRvIGFjY291bnQgc2FtcGxlcyBpbnRvLCBpZiBhbnkgKi8KJiM0MzsJc3RydWN0IGF0aF9yeF9zdGF0cyAqcnhfc3RhdHM7CiB9OwogCiAjZGVmaW5lIFNQRUNUUkFMX0hUMjBfNDBfVE9UQUxfREFUQV9MRU4JKHNpemVvZihzdHJ1Y3QgYXRoX2h0MjBfNDBfZmZ0X3BhY2tldCkpCkBAIC0xNjksNyAmIzQzOzE3Myw5IEBAIHN0YXRpYyBpbmxpbmUgdTggc3BlY3RyYWxfYml0bWFwX3dlaWdodCh1OCAqYmlucykKIH0KIAogI2lmZGVmIENPTkZJR19BVEg5S19DT01NT05fU1BFQ1RSQUwKLXZvaWQgYXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LCBzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX3BoeSk7CiYjNDM7dm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsCiYjNDM7CQkJCSAgIHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcGh5LAomIzQzOwkJCQkgICBzdHJ1Y3QgYXRoX3J4X3N0YXRzICpyeF9zdGF0cyk7CiB2b2lkIGF0aDlrX2Ntbl9zcGVjdHJhbF9kZWluaXRfZGVidWcoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2KTsKIAogdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfc2Nhbl90cmlnZ2VyKHN0cnVjdCBhdGhfY29tbW9uICpjb21tb24sCkBAIC0xODEsNyAmIzQzOzE4Nyw4IEBAIGludCBhdGhfY21uX3Byb2Nlc3NfZmZ0KHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiwgc3RydWN0IGllZWU4MDIxMV9oCiAJCSAgICBzdHJ1Y3QgYXRoX3J4X3N0YXR1cyAqcnMsIHU2NCB0c2YpOwogI2Vsc2UKIHN0YXRpYyBpbmxpbmUgdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsCi0JCQkJCQkgc3RydWN0IGRlbnRyeSAqZGVidWdmc19waHkpCiYjNDM7CQkJCQkJIHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcGh5LAomIzQzOwkJCQkJCSBzdHJ1Y3QgYXRoX3J4X3N0YXRzICpyeF9zdGF0cykKIHsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2RlYnVnLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGVidWcuYwppbmRleCA3NGEwMTM0MDc1Y2Y5Li4wNDJhNGY1NDJhOTQzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGVidWcuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGVidWcuYwpAQCAtMTM4OSw3ICYjNDM7MTM4OSw4IEBAIGludCBhdGg5a19pbml0X2RlYnVnKHN0cnVjdCBhdGhfaHcgKmFoKQogCiAJYXRoOWtfZGZzX2luaXRfZGVidWcoc2MpOwogCWF0aDlrX3R4OTlfaW5pdF9kZWJ1ZyhzYyk7Ci0JYXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoJmFtcDtzYy0mZ3Q7c3BlY19wcml2LCBzYy0mZ3Q7ZGVidWcuZGVidWdmc19waHkpOwomIzQzOwlhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZygmYW1wO3NjLSZndDtzcGVjX3ByaXYsIHNjLSZndDtkZWJ1Zy5kZWJ1Z2ZzX3BoeSwKJiM0MzsJCQkJICAgICAgJmFtcDtzYy0mZ3Q7ZGVidWcuc3RhdHMucnhzdGF0cyk7CiAKIAlkZWJ1Z2ZzX2NyZWF0ZV9kZXZtX3NlcWZpbGUoc2MtJmd0O2RldiwgJiMzNDtkbWEmIzM0Oywgc2MtJmd0O2RlYnVnLmRlYnVnZnNfcGh5LAogCQkJCSAgICByZWFkX2ZpbGVfZG1hKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jCmluZGV4IDk0MzdkNjk4NzdjYzUuLjlkMzU0YjFkOTI5YzggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYwpAQCAtNDg3LDcgJiM0Mzs0ODcsOCBAQCBpbnQgYXRoOWtfaHRjX2luaXRfZGVidWcoc3RydWN0IGF0aF9odyAqYWgpCiAJcHJpdi0mZ3Q7ZGVidWcuZGVidWdmc19waHkgPSBkZWJ1Z2ZzX2NyZWF0ZV9kaXIoS0JVSUxEX01PRE5BTUUsCiAJCQkJCSAgICAgcHJpdi0mZ3Q7aHctJmd0O3dpcGh5LSZndDtkZWJ1Z2ZzZGlyKTsKIAotCWF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnKCZhbXA7cHJpdi0mZ3Q7c3BlY19wcml2LCBwcml2LSZndDtkZWJ1Zy5kZWJ1Z2ZzX3BoeSk7CiYjNDM7CWF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnKCZhbXA7cHJpdi0mZ3Q7c3BlY19wcml2LCBwcml2LSZndDtkZWJ1Zy5kZWJ1Z2ZzX3BoeSwKJiM0MzsJCQkJICAgICAgJmFtcDtwcml2LSZndDtkZWJ1Zy5yeF9zdGF0cyk7CiAKIAlkZWJ1Z2ZzX2NyZWF0ZV9maWxlKCYjMzQ7dGd0X2ludF9zdGF0cyYjMzQ7LCAwNDAwLCBwcml2LSZndDtkZWJ1Zy5kZWJ1Z2ZzX3BoeSwKIAkJCSAgICBwcml2LCAmYW1wO2ZvcHNfdGd0X2ludF9zdGF0cyk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAwMTowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MjY5CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogNzEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUGF0Y2ggZm9yIEtNU0FOIEZ1enppbmcgTmVlZHMqKgoKT2theSwgbGV0JiMzOTtzIHRha2UgYSBsb29rIGF0IHRoaXMgcGF0Y2ggYW5kIGRlY2lkZSBpZiBpdCB3YXJyYW50cyBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24uIFRoZSBkaWZmIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQ6IGl0JiMzOTtzIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5a2AgZGlyZWN0b3J5LiBTcGVjaWZpY2FsbHksIGNoYW5nZXMgaW4gYGNvbW1vbi1zcGVjdHJhbC5jYCwgYGNvbW1vbi1zcGVjdHJhbC5oYCwgYGRlYnVnLmNgLCBhbmQgYGh0Y19kcnZfZGVidWcuY2AuCgpJdCBsb29rcyBsaWtlIHRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgcmV2b2x2ZXMgYXJvdW5kIGEgdHlwZSBzYWZldHkgaXNzdWUuIFRoZXkmIzM5O3ZlIGludHJvZHVjZWQgYSBoZWxwZXIgZnVuY3Rpb24sIGBhdGhfY21uX2NvdW50X2ZmdF9zYW1wbGVgLCB0byByZXBsYWNlIGRpcmVjdCBjb3VudGVyIGluY3JlbWVudHMgd2l0aGluIHRoZSBgYXRoX3J4X3N0YXRzYCBzdHJ1Y3R1cmUuIFRoZSBvbGQgY29kZSB3YXMgYXNzdW1pbmcgdGhhdCBgY29tbW9uLSZndDtwcml2YCB3aXRoaW4gYGF0aDlrX2h0Y2Agd2FzIGEgYHN0cnVjdCBhdGhfc29mdGMgKmAsIGJ1dCBpdCBjb3VsZCBiZSBzb21ldGhpbmcgZWxzZSwgbGVhZGluZyB0byB0eXBlIGNvbmZ1c2lvbiBhbmQgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uIHdoZW4gYWNjZXNzaW5nIHRoZSBzdGF0cy4gVGhlIGZpeCBpbnZvbHZlcyBwYXNzaW5nIHRoZSBgYXRoX3J4X3N0YXRzYCBwb2ludGVyIGRpcmVjdGx5LCBlbnN1cmluZyB0aGUgY29ycmVjdCBzdHJ1Y3R1cmUgaXMgdXNlZC4gU28sIHRoZSBvcmlnaW5hbCBjb2RlIGhhZCBwb2ludGVyIGNvbmZ1c2lvbiBhbmQgd2FzIG5vdCBjb3JyZWN0bHkgZGVyZWZlcmVuY2luZyBzdGF0cy4KCk5vdywgdGhlIGltcG9ydGFudCBwYXJ0OiBLTVNBTi4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGFueSBuZXcgdnVsbmVyYWJpbGl0aWVzIHRoYXQgS01TQU4gd291bGQgYmUgZ29vZCBhdCBmaW5kaW5nLiBMZXQmIzM5O3Mgc2VlLi4uCgpGaXJzdCwgYXJlIHRoZXJlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBwb3RlbnRpYWwgaW5mbyBsZWFrcyB0byB1c2VyIHNwYWNlLCBvciB1bmluaXRpYWxpemVkIGJ1ZmZlciB1c2FnZXMgaW52b2x2ZWQ/IE5vLiBUaGUgcGF0Y2ggb25seSBpbmNyZW1lbnRzIGNvdW50ZXIgc3RhdGlzdGljcyBpbiBhbiBleGlzdGluZyBgYXRoX3J4X3N0YXRzYCBzdHJ1Y3QuIE5vIG5ldyBzdHJ1Y3R1cmVzIGFyZSBpbnRyb2R1Y2VkIHRoYXQgYXJlIHNlbnQgdG8gdXNlciBzcGFjZS4KCk5leHQsIGNvbmRpdGlvbmFsIGxvZ2ljIGRlcGVuZGVudCBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcz8gTm9wZS4gSXQgZG9lcyBhIGNoZWNrIGZvciBgcnhfc3RhdHNgIGFuZCB0aGUgcmV0dXJuIHZhbHVlIG9mIGByZXRgLCBidXQgdGhlIGByeF9zdGF0c2AgcG9pbnRlciBpcyBpbml0aWFsaXplZC4KCkhvdyBhYm91dCBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aXRoIHVuaW5pdGlhbGl6ZWQgZmllbGRzPyBBZ2Fpbiwgbm8uIEl0IGxvb2tzIGxpa2UgYGF0aF9yeF9zdGF0c2AgaXMgdGhlIHNhbWUgc3RydWN0IGFzIGJlZm9yZS4KCkRvZXMgdGhlIHBhdGNoIGNoYW5nZSBib3VuZHMgY2hlY2tzIG9yIGxlbmd0aHMgaW4gYSB3YXkgdGhhdCBtaWdodCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnk/IE5vIGNoYW5nZXMgaGVyZSBlaXRoZXIuCgpTbywgd2hhdCBraW5kIG9mIGJ1ZyB3YXMgZml4ZWQ/IFRoZSBwYXRjaCBhZGRyZXNzZXMgYSBkcml2ZXIgcG9pbnRlciAvIHR5cGUgY29uZnVzaW9uIG9yIE5VTEwgZGVyZWZlcmVuY2UuIFRoZSBwcmV2aW91cyBhc3N1bXB0aW9uIGFib3V0IHRoZSBgY29tbW9uLSZndDtwcml2YCB0eXBlIGNhdXNlZCBpc3N1ZXMuIFRoaXMgc291bmRzIGxpa2UgdGhlIHR5cGUgb2YgYnVnIHRoYXQgY291bGQgbWFuaWZlc3QgYXMgS0FTQU4gLyBHUEYgLyBnZW5lcmFsIGRldGVjdG9yIGlzc3VlcyDigJMgZGVmaW5pdGVseSBtZW1vcnkgc2FmZXR5IGNvbmNlcm5zLCBidXQgbW9yZSBpbiB0aGUgcmVhbG0gb2YgcG9pbnRlciBlcnJvcnMgdGhhbiB1bmluaXRpYWxpemVkIHJlYWRzLiBJdCYjMzk7cyBlc3NlbnRpYWxseSBmaXhpbmcgYSBidWcgd2hlcmUgd2Ugd2VyZSBkZXJlZmVyZW5jaW5nIGFuIGludmFsaWQgcG9pbnRlciBvciBkZXJlZmVyZW5jaW5nIGEgcG9pbnRlciB0byBhbiBpbmNvcnJlY3QgZGF0YSBzdHJ1Y3R1cmUuCgpPa2F5LCBsZXQmIzM5O3MganVzdCBkbyBhIHF1aWNrIGBncmVwcGVyYCBzZWFyY2ggd2l0aGluIHRoZSByZXBvIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnl0aGluZy4gSSYjMzk7bSBnb2luZyB0byBzZWFyY2ggZm9yIGluc3RhbmNlcyBvZiB0aGUgc3RydWN0cyBhbmQgZnVuY3Rpb25zIGludm9sdmVkIHRvIGJlIGNvbXBsZXRlbHkgc3VyZS4gSnVzdCB0byBiZSBvbiB0aGUgc2FmZSBzaWRlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAwMTowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtyeF9zcGVjdHJhbF9zYW1wbGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1kZWJ1Zy5jPTEyND1zdGF0aWMgc3NpemVfdCByZWFkX2ZpbGVfcmVjdihzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciBfX3VzZXIgKnVzZXJfYnVmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tZGVidWcuYy0xNDctXHRSWFNfRVJSKFwmIzM0O1NQRUNUUkFMXCYjMzQ7LCByeF9zcGVjdHJhbCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLWRlYnVnLmM6MTQ4Olx0UlhTX0VSUihcJiMzNDtTUEVDVFJBTCBTTVBMIEdPT0RcJiMzNDssIHJ4X3NwZWN0cmFsX3NhbXBsZV9nb29kKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tZGVidWcuYzoxNDk6XHRSWFNfRVJSKFwmIzM0O1NQRUNUUkFMIFNNUEwgRVJSXCYjMzQ7LCByeF9zcGVjdHJhbF9zYW1wbGVfZXJyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tZGVidWcuYy0xNTAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1kZWJ1Zy5oLTQxLSAqIEByeF9zcGVjdHJhbDogTm8gb2Ygc3BlY3RyYWwgcGFja2V0cyByZWNlaXZlZC5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tZGVidWcuaDo0MjogKiBAcnhfc3BlY3RyYWxfc2FtcGxlX2dvb2Q6IE5vLiBvZiBnb29kIHNwZWN0cmFsIHNhbXBsZXNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tZGVidWcuaDo0MzogKiBAcnhfc3BlY3RyYWxfc2FtcGxlX2VycjogTm8uIG9mIGdvb2Qgc3BlY3RyYWwgc2FtcGxlc1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1kZWJ1Zy5oLTQ0LSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1kZWJ1Zy5oPTQ1PXN0cnVjdCBhdGhfcnhfc3RhdHMge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tZGVidWcuaC02Mi1cdHUzMiByeF9zcGVjdHJhbDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tZGVidWcuaDo2MzpcdHUzMiByeF9zcGVjdHJhbF9zYW1wbGVfZ29vZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tZGVidWcuaDo2NDpcdHUzMiByeF9zcGVjdHJhbF9zYW1wbGVfZXJyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1kZWJ1Zy5oLTY1LX07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jPTQ2OD1zdGF0aWMgdm9pZCBhdGhfY21uX2NvdW50X2ZmdF9zYW1wbGUoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy00NzYtXHRpZiAocmV0ID09IDApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6NDc3Olx0XHRyeF9zdGF0cy1cdTAwM2VyeF9zcGVjdHJhbF9zYW1wbGVfZ29vZCYjNDM7JiM0Mzs7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNDc4LVx0ZWxzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjQ3OTpcdFx0cnhfc3RhdHMtXHUwMDNlcnhfc3BlY3RyYWxfc2FtcGxlX2VyciYjNDM7JiM0Mzs7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNDgwLX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMDE6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjMwMgoJCQkJCQkJb3V0cHV0OiAxNjAKCQkJCQkJCXRob3VnaHRzOiAxMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBSZWZhY3RvcmluZyBhbmQgTWVtb3J5IFNhZmV0eSoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBiZWVuIHJldmlld2luZyB0aGlzIHBhdGNoLiBTZWVtcyBwcmV0dHkgY2xlYW4tY3V0LiBUaGUgY29yZSBvZiBpdCBpbnZvbHZlcyBob3cgYGF0aF9zcGVjX3NjYW5fcHJpdmAgaW50ZXJhY3RzIHdpdGggdGhlIFJYIHN0YXRpc3RpY3MuIFRoZSByZWZhY3RvciBqdXN0IG1ha2VzIHRoZSBhY2Nlc3MgY2xlYW5lciBhbmQgbW9yZSBkaXJlY3QsIGxldHRpbmcgYm90aCBgYXRoOWtgIGFuZCBgYXRoOWtfaHRjYCBwcm92aWRlIHRoZWlyIGBzdHJ1Y3QgYXRoX3J4X3N0YXRzICpgIHBvaW50ZXIgdXBmcm9udCBkdXJpbmcgc3BlY3RyYWwgZGVidWcgaW5pdGlhbGl6YXRpb24uIFRoaXMgZWxpbWluYXRlcyB0aGUgbmVlZCBmb3IgdGhhdCBgY29tbW9uLSZndDtwcml2YCBjYXN0LCB3aGljaCBpcyBhbHdheXMgc29tZXRoaW5nIHRvIHdhdGNoIG91dCBmb3IuCgpJJiMzOTt2ZSBnb25lIHRocm91Z2ggaXQgd2l0aCBhIGZpbmUtdG9vdGggY29tYiwgYW5kIEkmIzM5O20gbm90IHNlZWluZyBhbnkgcmVkIGZsYWdzIHJlZ2FyZGluZyB1bmluaXRpYWxpemVkIG1lbW9yeS4gTm8gaW5kaWNhdGlvbnMgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UsIGFsbG9jYXRpbmcgdW5pbml0aWFsaXplZCBtZW1vcnksIGxlYWtzIHRvIHVzZXIgc3BhY2UsIG9yIGJyYW5jaGVzIGJhc2VkIG9uIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBHaXZlbiB0aGF0IHRob3JvdWdoIGluc3BlY3Rpb24sIHRoZSBgTmVlZHNLTVNBTmAgZmxhZyBpcyBkZWZpbml0aXZlbHkgZmFsc2UgaW4gdGhpcyBjYXNlLgoKQWxyaWdodCwgd2l0aCBhbGwgdGhhdCBvdXQgb2YgdGhlIHdheSwgSSYjMzk7bSBjb21mb3J0YWJsZSBjYWxsaW5nIGBzZXQtcmVzdWx0c2AuIEl0JiMzOTtzIGEgc29saWQsIHNhZmUgcmVmYWN0b3JpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDAxOjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlZmFjdG9ycyBzcGVjdHJhbCBzY2FuIFJYIHN0YXRpc3RpY3MgYWNjb3VudGluZyBpbiB0aGUgYXRoOWsgZHJpdmVyIGJ5IHBhc3NpbmcgYW4gZXhwbGljaXQgcG9pbnRlciB0byBgc3RydWN0IGF0aF9yeF9zdGF0c2AgaW4gYGF0aF9zcGVjX3NjYW5fcHJpdmAgaW5zdGVhZCBvZiBpbmFwcHJvcHJpYXRlbHkgY2FzdGluZyBgY29tbW9uLVx1MDAzZXByaXZgIHRvIGBzdHJ1Y3QgYXRoX3NvZnRjICpgICh3aGljaCB3YXMgaW52YWxpZCBmb3IgYGF0aDlrX2h0Y2ApLiBcblxuVGhpcyBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIG9yIG1vZGlmeSB1bmluaXRpYWxpemVkIG1lbW9yeSBoYW5kbGluZywgdW5pbml0aWFsaXplZCBicmFuY2hpbmcsIG9yIGtlcm5lbC10by11c2VyIGluZm8gbGVha3MuIEFueSBtZW1vcnkgYWNjZXNzIGlzc3VlcyByZWxhdGVkIHRvIGludmFsaWQgcG9pbnRlciBkZXJlZmVyZW5jaW5nIG9yIHN0cnVjdCBjYXN0aW5nIGFyZSBjYXVnaHQgYnkgS0FTQU4gb3Igc3RhbmRhcmQga2VybmVsIGZhdWx0IGhhbmRsZXJzLiBUaGVyZWZvcmUsIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlZmFjdG9ycyBzcGVjdHJhbCBzY2FuIFJYIHN0YXRpc3RpY3MgYWNjb3VudGluZyBpbiB0aGUgYXRoOWsgZHJpdmVyIGJ5IHBhc3NpbmcgYW4gZXhwbGljaXQgcG9pbnRlciB0byBgc3RydWN0IGF0aF9yeF9zdGF0c2AgaW4gYGF0aF9zcGVjX3NjYW5fcHJpdmAgaW5zdGVhZCBvZiBpbmFwcHJvcHJpYXRlbHkgY2FzdGluZyBgY29tbW9uLVx1MDAzZXByaXZgIHRvIGBzdHJ1Y3QgYXRoX3NvZnRjICpgICh3aGljaCB3YXMgaW52YWxpZCBmb3IgYGF0aDlrX2h0Y2ApLiBcblxuVGhpcyBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIG9yIG1vZGlmeSB1bmluaXRpYWxpemVkIG1lbW9yeSBoYW5kbGluZywgdW5pbml0aWFsaXplZCBicmFuY2hpbmcsIG9yIGtlcm5lbC10by11c2VyIGluZm8gbGVha3MuIEFueSBtZW1vcnkgYWNjZXNzIGlzc3VlcyByZWxhdGVkIHRvIGludmFsaWQgcG9pbnRlciBkZXJlZmVyZW5jaW5nIG9yIHN0cnVjdCBjYXN0aW5nIGFyZSBjYXVnaHQgYnkgS0FTQU4gb3Igc3RhbmRhcmQga2VybmVsIGZhdWx0IGhhbmRsZXJzLiBUaGVyZWZvcmUsIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDVUMDE6MDM6MjAuNzQxMjg1MzI0WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDgwODA2MDM5NzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQVRIOUtcIixcbiAgICBcIkFUSDlLX0hUQ1wiLFxuICAgIFwiQVRIOUtfREVCVUdGU1wiLFxuICAgIFwiQVRIOUtfSFRDX0RFQlVHRlNcIixcbiAgICBcIkFUSDlLX0NPTU1PTl9TUEVDVFJBTFwiLFxuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIkRFQlVHX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYXRoX2Ntbl9wcm9jZXNzX2ZmdFwiLFxuICAgIFwiYXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWdcIixcbiAgICBcImF0aDlrX2h0Y19pbml0X2RlYnVnXCIsXG4gICAgXCJhdGg5a19pbml0X2RlYnVnXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZWZhY3RvcnMgc3BlY3RyYWwgc2NhbiBSWCBzdGF0aXN0aWNzIGFjY291bnRpbmcgaW4gdGhlIGF0aDlrIGRyaXZlciBieSBwYXNzaW5nIGFuIGV4cGxpY2l0IHBvaW50ZXIgdG8gYHN0cnVjdCBhdGhfcnhfc3RhdHNgIGluIGBhdGhfc3BlY19zY2FuX3ByaXZgIGluc3RlYWQgb2YgaW5hcHByb3ByaWF0ZWx5IGNhc3RpbmcgYGNvbW1vbi1cXHUwMDNlcHJpdmAgdG8gYHN0cnVjdCBhdGhfc29mdGMgKmAgKHdoaWNoIHdhcyBpbnZhbGlkIGZvciBgYXRoOWtfaHRjYCkuIFxcblxcblRoaXMgY2hhbmdlIGRvZXMgbm90IGludHJvZHVjZSBvciBtb2RpZnkgdW5pbml0aWFsaXplZCBtZW1vcnkgaGFuZGxpbmcsIHVuaW5pdGlhbGl6ZWQgYnJhbmNoaW5nLCBvciBrZXJuZWwtdG8tdXNlciBpbmZvIGxlYWtzLiBBbnkgbWVtb3J5IGFjY2VzcyBpc3N1ZXMgcmVsYXRlZCB0byBpbnZhbGlkIHBvaW50ZXIgZGVyZWZlcmVuY2luZyBvciBzdHJ1Y3QgY2FzdGluZyBhcmUgY2F1Z2h0IGJ5IEtBU0FOIG9yIHN0YW5kYXJkIGtlcm5lbCBmYXVsdCBoYW5kbGVycy4gVGhlcmVmb3JlLCBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVmYWN0b3JzIHRoZSBzcGVjdHJhbCBzY2FuIFJYIHN0YXRpc3RpY3MgYWNjb3VudGluZyBpbiB0aGUgYXRoOWsvYXRoOWtfaHRjIHdpcmVsZXNzIGRyaXZlciB0byBhdm9pZCBpbmNvcnJlY3Qgc3RydWN0IGNhc3RpbmcgYmV0d2VlbiBhdGg5ayBhbmQgYXRoOWtfaHRjLiBUaGUgbW9kaWZpZWQgY29kZSBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBVU0IgZW11bGF0aW9uIChhdGg5a19odGMpIGFuZCBkZWJ1Z2ZzL3dpcmVsZXNzIFJYIGZyYW1lIHByb2Nlc3NpbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDAxOjAzOjIwLjc0MTI5MjAxNVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTExNTEyMTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMGQ1ZDRkYjhkOGE2NTk1YTk1YmU4NzA3OTg1ZmMxMzNkZTEyNjQ0MlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IFNlcCA1IDAxOjAzOjE5IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuY1xcbmluZGV4IGNhMDFhMDdmNjYzMGMuLmQ4YmUyNGViY2QyNDcgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jXFxuQEAgLTQ2NSw2ICs0NjUsMjAgQEAgYXRoX2Ntbl9pc19mZnRfYnVmX2Z1bGwoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2KVxcbiBcXHRcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4rc3RhdGljIHZvaWQgYXRoX2Ntbl9jb3VudF9mZnRfc2FtcGxlKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdixcXG4rXFx0XFx0XFx0XFx0ICAgICBpbnQgcmV0KVxcbit7XFxuK1xcdHN0cnVjdCBhdGhfcnhfc3RhdHMgKnJ4X3N0YXRzID0gc3BlY19wcml2LVxcdTAwM2VyeF9zdGF0cztcXG4rXFxuK1xcdGlmICghcnhfc3RhdHMpXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuK1xcdGlmIChyZXQgPT0gMClcXG4rXFx0XFx0cnhfc3RhdHMtXFx1MDAzZXJ4X3NwZWN0cmFsX3NhbXBsZV9nb29kKys7XFxuK1xcdGVsc2VcXG4rXFx0XFx0cnhfc3RhdHMtXFx1MDAzZXJ4X3NwZWN0cmFsX3NhbXBsZV9lcnIrKztcXG4rfVxcbitcXG4gLyogcmV0dXJucyAxIGlmIHRoaXMgd2FzIGEgc3BlY3RyYWwgZnJhbWUsIGV2ZW4gaWYgbm90IGhhbmRsZWQuICovXFxuIGludCBhdGhfY21uX3Byb2Nlc3NfZmZ0KHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiwgc3RydWN0IGllZWU4MDIxMV9oZHIgKmhkcixcXG4gXFx0XFx0ICAgIHN0cnVjdCBhdGhfcnhfc3RhdHVzICpycywgdTY0IHRzZilcXG5AQCAtNDcyLDcgKzQ4Niw2IEBAIGludCBhdGhfY21uX3Byb2Nlc3NfZmZ0KHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiwgc3RydWN0IGllZWU4MDIxMV9oXFxuIFxcdHU4IHNhbXBsZV9idWZbU1BFQ1RSQUxfU0FNUExFX01BWF9MRU5dID0gezB9O1xcbiBcXHRzdHJ1Y3QgYXRoX2h3ICphaCA9IHNwZWNfcHJpdi1cXHUwMDNlYWg7XFxuIFxcdHN0cnVjdCBhdGhfY29tbW9uICpjb21tb24gPSBhdGg5a19od19jb21tb24oc3BlY19wcml2LVxcdTAwM2VhaCk7XFxuLVxcdHN0cnVjdCBhdGhfc29mdGMgKnNjID0gY29tbW9uLVxcdTAwM2Vwcml2O1xcbiBcXHR1OCBudW1fYmlucywgKnZkYXRhID0gKHU4ICopaGRyO1xcbiBcXHRzdHJ1Y3QgYXRoX3JhZGFyX2luZm8gKnJhZGFyX2luZm87XFxuIFxcdGludCBsZW4gPSBycy1cXHUwMDNlcnNfZGF0YWxlbjtcXG5AQCAtNjI0LDEwICs2MzcsNyBAQCBpbnQgYXRoX2Ntbl9wcm9jZXNzX2ZmdChzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsIHN0cnVjdCBpZWVlODAyMTFfaFxcbiBcXHRcXHRcXHRcXHRyZXQgPSBmZnRfaGFuZGxlcihycywgc3BlY19wcml2LCBzYW1wbGVfYnVmLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHQgIHRzZiwgZnJlcSwgY2hhbl90eXBlKTtcXG4gXFxuLVxcdFxcdFxcdFxcdGlmIChyZXQgPT0gMClcXG4tXFx0XFx0XFx0XFx0XFx0UlhfU1RBVF9JTkMoc2MsIHJ4X3NwZWN0cmFsX3NhbXBsZV9nb29kKTtcXG4tXFx0XFx0XFx0XFx0ZWxzZVxcbi1cXHRcXHRcXHRcXHRcXHRSWF9TVEFUX0lOQyhzYywgcnhfc3BlY3RyYWxfc2FtcGxlX2Vycik7XFxuK1xcdFxcdFxcdFxcdGF0aF9jbW5fY291bnRfZmZ0X3NhbXBsZShzcGVjX3ByaXYsIHJldCk7XFxuIFxcbiBcXHRcXHRcXHRcXHQvKiBNaXggdGhlIHJlY2VpdmVkIGJpbnMgdG8gdGhlIC9kZXYvcmFuZG9tXFxuIFxcdFxcdFxcdFxcdCAqIHBvb2xcXG5AQCAtNjQyLDEwICs2NTIsNyBAQCBpbnQgYXRoX2Ntbl9wcm9jZXNzX2ZmdChzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsIHN0cnVjdCBpZWVlODAyMTFfaFxcbiBcXHRcXHRcXHRcXHRyZXQgPSBmZnRfaGFuZGxlcihycywgc3BlY19wcml2LCBzYW1wbGVfc3RhcnQsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCAgdHNmLCBmcmVxLCBjaGFuX3R5cGUpO1xcbiBcXG4tXFx0XFx0XFx0XFx0aWYgKHJldCA9PSAwKVxcbi1cXHRcXHRcXHRcXHRcXHRSWF9TVEFUX0lOQyhzYywgcnhfc3BlY3RyYWxfc2FtcGxlX2dvb2QpO1xcbi1cXHRcXHRcXHRcXHRlbHNlXFxuLVxcdFxcdFxcdFxcdFxcdFJYX1NUQVRfSU5DKHNjLCByeF9zcGVjdHJhbF9zYW1wbGVfZXJyKTtcXG4rXFx0XFx0XFx0XFx0YXRoX2Ntbl9jb3VudF9mZnRfc2FtcGxlKHNwZWNfcHJpdiwgcmV0KTtcXG4gXFxuIFxcdFxcdFxcdFxcdC8qIE1peCB0aGUgcmVjZWl2ZWQgYmlucyB0byB0aGUgL2Rldi9yYW5kb21cXG4gXFx0XFx0XFx0XFx0ICogcG9vbFxcbkBAIC0xMDUyLDggKzEwNTksMTAgQEAgdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfZGVpbml0X2RlYnVnKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdilcXG4gRVhQT1JUX1NZTUJPTChhdGg5a19jbW5fc3BlY3RyYWxfZGVpbml0X2RlYnVnKTtcXG4gXFxuIHZvaWQgYXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LFxcbi1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX3BoeSlcXG4rXFx0XFx0XFx0XFx0ICAgc3RydWN0IGRlbnRyeSAqZGVidWdmc19waHksXFxuK1xcdFxcdFxcdFxcdCAgIHN0cnVjdCBhdGhfcnhfc3RhdHMgKnJ4X3N0YXRzKVxcbiB7XFxuK1xcdHNwZWNfcHJpdi1cXHUwMDNlcnhfc3RhdHMgPSByeF9zdGF0cztcXG4gXFx0c3BlY19wcml2LVxcdTAwM2VyZnNfY2hhbl9zcGVjX3NjYW4gPSByZWxheV9vcGVuKFxcXCJzcGVjdHJhbF9zY2FuXFxcIixcXG4gXFx0XFx0XFx0XFx0XFx0ICAgIGRlYnVnZnNfcGh5LFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgMTAyNCwgMjU2LCBcXHUwMDI2cmZzX3NwZWNfc2Nhbl9jYixcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oXFxuaW5kZXggMDExZDhhYjhiOTc0NC4uMGUyYzdkNmQzNDg3NCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmhcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmhcXG5AQCAtOTQsMTIgKzk0LDE2IEBAIHN0cnVjdCBhdGhfaHQyMF80MF9mZnRfcGFja2V0IHtcXG4gXFx0c3RydWN0IGF0aF9yYWRhcl9pbmZvIHJhZGFyX2luZm87XFxuIH0gX19wYWNrZWQ7XFxuIFxcbitzdHJ1Y3QgYXRoX3J4X3N0YXRzO1xcbitcXG4gc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiB7XFxuIFxcdHN0cnVjdCBhdGhfaHcgKmFoO1xcbiBcXHQvKiByZWxheShmcykgY2hhbm5lbCBmb3Igc3BlY3RyYWwgc2NhbiAqL1xcbiBcXHRzdHJ1Y3QgcmNoYW4gKnJmc19jaGFuX3NwZWNfc2NhbjtcXG4gXFx0ZW51bSBzcGVjdHJhbF9tb2RlIHNwZWN0cmFsX21vZGU7XFxuIFxcdHN0cnVjdCBhdGhfc3BlY19zY2FuIHNwZWNfY29uZmlnO1xcbitcXHQvKiBkcml2ZXIncyBSWCBzdGF0aXN0aWNzIHRvIGFjY291bnQgc2FtcGxlcyBpbnRvLCBpZiBhbnkgKi9cXG4rXFx0c3RydWN0IGF0aF9yeF9zdGF0cyAqcnhfc3RhdHM7XFxuIH07XFxuIFxcbiAjZGVmaW5lIFNQRUNUUkFMX0hUMjBfNDBfVE9UQUxfREFUQV9MRU5cXHQoc2l6ZW9mKHN0cnVjdCBhdGhfaHQyMF80MF9mZnRfcGFja2V0KSlcXG5AQCAtMTY5LDcgKzE3Myw5IEBAIHN0YXRpYyBpbmxpbmUgdTggc3BlY3RyYWxfYml0bWFwX3dlaWdodCh1OCAqYmlucylcXG4gfVxcbiBcXG4gI2lmZGVmIENPTkZJR19BVEg5S19DT01NT05fU1BFQ1RSQUxcXG4tdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsIHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcGh5KTtcXG4rdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsXFxuK1xcdFxcdFxcdFxcdCAgIHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcGh5LFxcbitcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgYXRoX3J4X3N0YXRzICpyeF9zdGF0cyk7XFxuIHZvaWQgYXRoOWtfY21uX3NwZWN0cmFsX2RlaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYpO1xcbiBcXG4gdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfc2Nhbl90cmlnZ2VyKHN0cnVjdCBhdGhfY29tbW9uICpjb21tb24sXFxuQEAgLTE4MSw3ICsxODcsOCBAQCBpbnQgYXRoX2Ntbl9wcm9jZXNzX2ZmdChzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsIHN0cnVjdCBpZWVlODAyMTFfaFxcbiBcXHRcXHQgICAgc3RydWN0IGF0aF9yeF9zdGF0dXMgKnJzLCB1NjQgdHNmKTtcXG4gI2Vsc2VcXG4gc3RhdGljIGlubGluZSB2b2lkIGF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdixcXG4tXFx0XFx0XFx0XFx0XFx0XFx0IHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcGh5KVxcbitcXHRcXHRcXHRcXHRcXHRcXHQgc3RydWN0IGRlbnRyeSAqZGVidWdmc19waHksXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCBzdHJ1Y3QgYXRoX3J4X3N0YXRzICpyeF9zdGF0cylcXG4ge1xcbiB9XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGVidWcuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZWJ1Zy5jXFxuaW5kZXggNzRhMDEzNDA3NWNmOS4uMDQyYTRmNTQyYTk0MyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGVidWcuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZWJ1Zy5jXFxuQEAgLTEzODksNyArMTM4OSw4IEBAIGludCBhdGg5a19pbml0X2RlYnVnKHN0cnVjdCBhdGhfaHcgKmFoKVxcbiBcXG4gXFx0YXRoOWtfZGZzX2luaXRfZGVidWcoc2MpO1xcbiBcXHRhdGg5a190eDk5X2luaXRfZGVidWcoc2MpO1xcbi1cXHRhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhcXHUwMDI2c2MtXFx1MDAzZXNwZWNfcHJpdiwgc2MtXFx1MDAzZWRlYnVnLmRlYnVnZnNfcGh5KTtcXG4rXFx0YXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoXFx1MDAyNnNjLVxcdTAwM2VzcGVjX3ByaXYsIHNjLVxcdTAwM2VkZWJ1Zy5kZWJ1Z2ZzX3BoeSxcXG4rXFx0XFx0XFx0XFx0ICAgICAgXFx1MDAyNnNjLVxcdTAwM2VkZWJ1Zy5zdGF0cy5yeHN0YXRzKTtcXG4gXFxuIFxcdGRlYnVnZnNfY3JlYXRlX2Rldm1fc2VxZmlsZShzYy1cXHUwMDNlZGV2LCBcXFwiZG1hXFxcIiwgc2MtXFx1MDAzZWRlYnVnLmRlYnVnZnNfcGh5LFxcbiBcXHRcXHRcXHRcXHQgICAgcmVhZF9maWxlX2RtYSk7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jXFxuaW5kZXggOTQzN2Q2OTg3N2NjNS4uOWQzNTRiMWQ5MjljOCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuY1xcbkBAIC00ODcsNyArNDg3LDggQEAgaW50IGF0aDlrX2h0Y19pbml0X2RlYnVnKHN0cnVjdCBhdGhfaHcgKmFoKVxcbiBcXHRwcml2LVxcdTAwM2VkZWJ1Zy5kZWJ1Z2ZzX3BoeSA9IGRlYnVnZnNfY3JlYXRlX2RpcihLQlVJTERfTU9ETkFNRSxcXG4gXFx0XFx0XFx0XFx0XFx0ICAgICBwcml2LVxcdTAwM2Vody1cXHUwMDNld2lwaHktXFx1MDAzZWRlYnVnZnNkaXIpO1xcbiBcXG4tXFx0YXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoXFx1MDAyNnByaXYtXFx1MDAzZXNwZWNfcHJpdiwgcHJpdi1cXHUwMDNlZGVidWcuZGVidWdmc19waHkpO1xcbitcXHRhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhcXHUwMDI2cHJpdi1cXHUwMDNlc3BlY19wcml2LCBwcml2LVxcdTAwM2VkZWJ1Zy5kZWJ1Z2ZzX3BoeSxcXG4rXFx0XFx0XFx0XFx0ICAgICAgXFx1MDAyNnByaXYtXFx1MDAzZWRlYnVnLnJ4X3N0YXRzKTtcXG4gXFxuIFxcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXFxcInRndF9pbnRfc3RhdHNcXFwiLCAwNDAwLCBwcml2LVxcdTAwM2VkZWJ1Zy5kZWJ1Z2ZzX3BoeSxcXG4gXFx0XFx0XFx0ICAgIHByaXYsIFxcdTAwMjZmb3BzX3RndF9pbnRfc3RhdHMpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQwMTowMzoyMS4yNTM3OTcwOTRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjM4NDE1NDM3NDU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkFUSDlLXCIsXG4gICAgXCJBVEg5S19IVENcIixcbiAgICBcIkFUSDlLX0RFQlVHRlNcIixcbiAgICBcIkFUSDlLX0hUQ19ERUJVR0ZTXCIsXG4gICAgXCJBVEg5S19DT01NT05fU1BFQ1RSQUxcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJERUJVR19GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImF0aF9jbW5fcHJvY2Vzc19mZnRcIixcbiAgICBcImF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnXCIsXG4gICAgXCJhdGg5a19odGNfaW5pdF9kZWJ1Z1wiLFxuICAgIFwiYXRoOWtfaW5pdF9kZWJ1Z1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlZmFjdG9ycyB0aGUgc3BlY3RyYWwgc2NhbiBSWCBzdGF0aXN0aWNzIGFjY291bnRpbmcgaW4gdGhlIGF0aDlrL2F0aDlrX2h0YyB3aXJlbGVzcyBkcml2ZXIgdG8gYXZvaWQgaW5jb3JyZWN0IHN0cnVjdCBjYXN0aW5nIGJldHdlZW4gYXRoOWsgYW5kIGF0aDlrX2h0Yy4gVGhlIG1vZGlmaWVkIGNvZGUgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgVVNCIGVtdWxhdGlvbiAoYXRoOWtfaHRjKSBhbmQgZGVidWdmcy93aXJlbGVzcyBSWCBmcmFtZSBwcm9jZXNzaW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDBkNWQ0ZGI4ZDhhNjU5NWE5NWJlODcwNzk4NWZjMTMzZGUxMjY0NDJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IFNlcCA1IDAxOjAzOjE5IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jXG5pbmRleCBjYTAxYTA3ZjY2MzBjLi5kOGJlMjRlYmNkMjQ3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmNcbkBAIC00NjUsNiArNDY1LDIwIEBAIGF0aF9jbW5faXNfZmZ0X2J1Zl9mdWxsKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdilcbiBcdFx0cmV0dXJuIDA7XG4gfVxuIFxuK3N0YXRpYyB2b2lkIGF0aF9jbW5fY291bnRfZmZ0X3NhbXBsZShzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsXG4rXHRcdFx0XHQgICAgIGludCByZXQpXG4re1xuK1x0c3RydWN0IGF0aF9yeF9zdGF0cyAqcnhfc3RhdHMgPSBzcGVjX3ByaXYtXHUwMDNlcnhfc3RhdHM7XG4rXG4rXHRpZiAoIXJ4X3N0YXRzKVxuK1x0XHRyZXR1cm47XG4rXG4rXHRpZiAocmV0ID09IDApXG4rXHRcdHJ4X3N0YXRzLVx1MDAzZXJ4X3NwZWN0cmFsX3NhbXBsZV9nb29kKys7XG4rXHRlbHNlXG4rXHRcdHJ4X3N0YXRzLVx1MDAzZXJ4X3NwZWN0cmFsX3NhbXBsZV9lcnIrKztcbit9XG4rXG4gLyogcmV0dXJucyAxIGlmIHRoaXMgd2FzIGEgc3BlY3RyYWwgZnJhbWUsIGV2ZW4gaWYgbm90IGhhbmRsZWQuICovXG4gaW50IGF0aF9jbW5fcHJvY2Vzc19mZnQoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LCBzdHJ1Y3QgaWVlZTgwMjExX2hkciAqaGRyLFxuIFx0XHQgICAgc3RydWN0IGF0aF9yeF9zdGF0dXMgKnJzLCB1NjQgdHNmKVxuQEAgLTQ3Miw3ICs0ODYsNiBAQCBpbnQgYXRoX2Ntbl9wcm9jZXNzX2ZmdChzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsIHN0cnVjdCBpZWVlODAyMTFfaFxuIFx0dTggc2FtcGxlX2J1ZltTUEVDVFJBTF9TQU1QTEVfTUFYX0xFTl0gPSB7MH07XG4gXHRzdHJ1Y3QgYXRoX2h3ICphaCA9IHNwZWNfcHJpdi1cdTAwM2VhaDtcbiBcdHN0cnVjdCBhdGhfY29tbW9uICpjb21tb24gPSBhdGg5a19od19jb21tb24oc3BlY19wcml2LVx1MDAzZWFoKTtcbi1cdHN0cnVjdCBhdGhfc29mdGMgKnNjID0gY29tbW9uLVx1MDAzZXByaXY7XG4gXHR1OCBudW1fYmlucywgKnZkYXRhID0gKHU4ICopaGRyO1xuIFx0c3RydWN0IGF0aF9yYWRhcl9pbmZvICpyYWRhcl9pbmZvO1xuIFx0aW50IGxlbiA9IHJzLVx1MDAzZXJzX2RhdGFsZW47XG5AQCAtNjI0LDEwICs2MzcsNyBAQCBpbnQgYXRoX2Ntbl9wcm9jZXNzX2ZmdChzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsIHN0cnVjdCBpZWVlODAyMTFfaFxuIFx0XHRcdFx0cmV0ID0gZmZ0X2hhbmRsZXIocnMsIHNwZWNfcHJpdiwgc2FtcGxlX2J1ZixcbiBcdFx0XHRcdFx0XHQgIHRzZiwgZnJlcSwgY2hhbl90eXBlKTtcbiBcbi1cdFx0XHRcdGlmIChyZXQgPT0gMClcbi1cdFx0XHRcdFx0UlhfU1RBVF9JTkMoc2MsIHJ4X3NwZWN0cmFsX3NhbXBsZV9nb29kKTtcbi1cdFx0XHRcdGVsc2Vcbi1cdFx0XHRcdFx0UlhfU1RBVF9JTkMoc2MsIHJ4X3NwZWN0cmFsX3NhbXBsZV9lcnIpO1xuK1x0XHRcdFx0YXRoX2Ntbl9jb3VudF9mZnRfc2FtcGxlKHNwZWNfcHJpdiwgcmV0KTtcbiBcbiBcdFx0XHRcdC8qIE1peCB0aGUgcmVjZWl2ZWQgYmlucyB0byB0aGUgL2Rldi9yYW5kb21cbiBcdFx0XHRcdCAqIHBvb2xcbkBAIC02NDIsMTAgKzY1Miw3IEBAIGludCBhdGhfY21uX3Byb2Nlc3NfZmZ0KHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiwgc3RydWN0IGllZWU4MDIxMV9oXG4gXHRcdFx0XHRyZXQgPSBmZnRfaGFuZGxlcihycywgc3BlY19wcml2LCBzYW1wbGVfc3RhcnQsXG4gXHRcdFx0XHRcdFx0ICB0c2YsIGZyZXEsIGNoYW5fdHlwZSk7XG4gXG4tXHRcdFx0XHRpZiAocmV0ID09IDApXG4tXHRcdFx0XHRcdFJYX1NUQVRfSU5DKHNjLCByeF9zcGVjdHJhbF9zYW1wbGVfZ29vZCk7XG4tXHRcdFx0XHRlbHNlXG4tXHRcdFx0XHRcdFJYX1NUQVRfSU5DKHNjLCByeF9zcGVjdHJhbF9zYW1wbGVfZXJyKTtcbitcdFx0XHRcdGF0aF9jbW5fY291bnRfZmZ0X3NhbXBsZShzcGVjX3ByaXYsIHJldCk7XG4gXG4gXHRcdFx0XHQvKiBNaXggdGhlIHJlY2VpdmVkIGJpbnMgdG8gdGhlIC9kZXYvcmFuZG9tXG4gXHRcdFx0XHQgKiBwb29sXG5AQCAtMTA1Miw4ICsxMDU5LDEwIEBAIHZvaWQgYXRoOWtfY21uX3NwZWN0cmFsX2RlaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYpXG4gRVhQT1JUX1NZTUJPTChhdGg5a19jbW5fc3BlY3RyYWxfZGVpbml0X2RlYnVnKTtcbiBcbiB2b2lkIGF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdixcbi1cdFx0XHRcdCAgIHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcGh5KVxuK1x0XHRcdFx0ICAgc3RydWN0IGRlbnRyeSAqZGVidWdmc19waHksXG4rXHRcdFx0XHQgICBzdHJ1Y3QgYXRoX3J4X3N0YXRzICpyeF9zdGF0cylcbiB7XG4rXHRzcGVjX3ByaXYtXHUwMDNlcnhfc3RhdHMgPSByeF9zdGF0cztcbiBcdHNwZWNfcHJpdi1cdTAwM2VyZnNfY2hhbl9zcGVjX3NjYW4gPSByZWxheV9vcGVuKFwic3BlY3RyYWxfc2NhblwiLFxuIFx0XHRcdFx0XHQgICAgZGVidWdmc19waHksXG4gXHRcdFx0XHRcdCAgICAxMDI0LCAyNTYsIFx1MDAyNnJmc19zcGVjX3NjYW5fY2IsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oXG5pbmRleCAwMTFkOGFiOGI5NzQ0Li4wZTJjN2Q2ZDM0ODc0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmhcbkBAIC05NCwxMiArOTQsMTYgQEAgc3RydWN0IGF0aF9odDIwXzQwX2ZmdF9wYWNrZXQge1xuIFx0c3RydWN0IGF0aF9yYWRhcl9pbmZvIHJhZGFyX2luZm87XG4gfSBfX3BhY2tlZDtcbiBcbitzdHJ1Y3QgYXRoX3J4X3N0YXRzO1xuK1xuIHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYge1xuIFx0c3RydWN0IGF0aF9odyAqYWg7XG4gXHQvKiByZWxheShmcykgY2hhbm5lbCBmb3Igc3BlY3RyYWwgc2NhbiAqL1xuIFx0c3RydWN0IHJjaGFuICpyZnNfY2hhbl9zcGVjX3NjYW47XG4gXHRlbnVtIHNwZWN0cmFsX21vZGUgc3BlY3RyYWxfbW9kZTtcbiBcdHN0cnVjdCBhdGhfc3BlY19zY2FuIHNwZWNfY29uZmlnO1xuK1x0LyogZHJpdmVyJ3MgUlggc3RhdGlzdGljcyB0byBhY2NvdW50IHNhbXBsZXMgaW50bywgaWYgYW55ICovXG4rXHRzdHJ1Y3QgYXRoX3J4X3N0YXRzICpyeF9zdGF0cztcbiB9O1xuIFxuICNkZWZpbmUgU1BFQ1RSQUxfSFQyMF80MF9UT1RBTF9EQVRBX0xFTlx0KHNpemVvZihzdHJ1Y3QgYXRoX2h0MjBfNDBfZmZ0X3BhY2tldCkpXG5AQCAtMTY5LDcgKzE3Myw5IEBAIHN0YXRpYyBpbmxpbmUgdTggc3BlY3RyYWxfYml0bWFwX3dlaWdodCh1OCAqYmlucylcbiB9XG4gXG4gI2lmZGVmIENPTkZJR19BVEg5S19DT01NT05fU1BFQ1RSQUxcbi12b2lkIGF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiwgc3RydWN0IGRlbnRyeSAqZGVidWdmc19waHkpO1xuK3ZvaWQgYXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LFxuK1x0XHRcdFx0ICAgc3RydWN0IGRlbnRyeSAqZGVidWdmc19waHksXG4rXHRcdFx0XHQgICBzdHJ1Y3QgYXRoX3J4X3N0YXRzICpyeF9zdGF0cyk7XG4gdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfZGVpbml0X2RlYnVnKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdik7XG4gXG4gdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfc2Nhbl90cmlnZ2VyKHN0cnVjdCBhdGhfY29tbW9uICpjb21tb24sXG5AQCAtMTgxLDcgKzE4Nyw4IEBAIGludCBhdGhfY21uX3Byb2Nlc3NfZmZ0KHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiwgc3RydWN0IGllZWU4MDIxMV9oXG4gXHRcdCAgICBzdHJ1Y3QgYXRoX3J4X3N0YXR1cyAqcnMsIHU2NCB0c2YpO1xuICNlbHNlXG4gc3RhdGljIGlubGluZSB2b2lkIGF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdixcbi1cdFx0XHRcdFx0XHQgc3RydWN0IGRlbnRyeSAqZGVidWdmc19waHkpXG4rXHRcdFx0XHRcdFx0IHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcGh5LFxuK1x0XHRcdFx0XHRcdCBzdHJ1Y3QgYXRoX3J4X3N0YXRzICpyeF9zdGF0cylcbiB7XG4gfVxuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZWJ1Zy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2RlYnVnLmNcbmluZGV4IDc0YTAxMzQwNzVjZjkuLjA0MmE0ZjU0MmE5NDMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGVidWcuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2RlYnVnLmNcbkBAIC0xMzg5LDcgKzEzODksOCBAQCBpbnQgYXRoOWtfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX2h3ICphaClcbiBcbiBcdGF0aDlrX2Rmc19pbml0X2RlYnVnKHNjKTtcbiBcdGF0aDlrX3R4OTlfaW5pdF9kZWJ1ZyhzYyk7XG4tXHRhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhcdTAwMjZzYy1cdTAwM2VzcGVjX3ByaXYsIHNjLVx1MDAzZWRlYnVnLmRlYnVnZnNfcGh5KTtcbitcdGF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnKFx1MDAyNnNjLVx1MDAzZXNwZWNfcHJpdiwgc2MtXHUwMDNlZGVidWcuZGVidWdmc19waHksXG4rXHRcdFx0XHQgICAgICBcdTAwMjZzYy1cdTAwM2VkZWJ1Zy5zdGF0cy5yeHN0YXRzKTtcbiBcbiBcdGRlYnVnZnNfY3JlYXRlX2Rldm1fc2VxZmlsZShzYy1cdTAwM2VkZXYsIFwiZG1hXCIsIHNjLVx1MDAzZWRlYnVnLmRlYnVnZnNfcGh5LFxuIFx0XHRcdFx0ICAgIHJlYWRfZmlsZV9kbWEpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jXG5pbmRleCA5NDM3ZDY5ODc3Y2M1Li45ZDM1NGIxZDkyOWM4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuY1xuQEAgLTQ4Nyw3ICs0ODcsOCBAQCBpbnQgYXRoOWtfaHRjX2luaXRfZGVidWcoc3RydWN0IGF0aF9odyAqYWgpXG4gXHRwcml2LVx1MDAzZWRlYnVnLmRlYnVnZnNfcGh5ID0gZGVidWdmc19jcmVhdGVfZGlyKEtCVUlMRF9NT0ROQU1FLFxuIFx0XHRcdFx0XHQgICAgIHByaXYtXHUwMDNlaHctXHUwMDNld2lwaHktXHUwMDNlZGVidWdmc2Rpcik7XG4gXG4tXHRhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhcdTAwMjZwcml2LVx1MDAzZXNwZWNfcHJpdiwgcHJpdi1cdTAwM2VkZWJ1Zy5kZWJ1Z2ZzX3BoeSk7XG4rXHRhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhcdTAwMjZwcml2LVx1MDAzZXNwZWNfcHJpdiwgcHJpdi1cdTAwM2VkZWJ1Zy5kZWJ1Z2ZzX3BoeSxcbitcdFx0XHRcdCAgICAgIFx1MDAyNnByaXYtXHUwMDNlZGVidWcucnhfc3RhdHMpO1xuIFxuIFx0ZGVidWdmc19jcmVhdGVfZmlsZShcInRndF9pbnRfc3RhdHNcIiwgMDQwMCwgcHJpdi1cdTAwM2VkZWJ1Zy5kZWJ1Z2ZzX3BoeSxcbiBcdFx0XHQgICAgcHJpdiwgXHUwMDI2Zm9wc190Z3RfaW50X3N0YXRzKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDAxOjAzOjIxLjI1Mzc5OTUwNFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjU3NDE3NTk0ODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBTdHJhdGVneSBmb3IgdGhpcyBQYXRjaCoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIGZvY3VzZWQgb24gZGV0ZXJtaW5pbmcgdGhlIGZ1enphYmlsaXR5IG9mIHRoaXMgcGF0Y2ggYW5kIGNyYWZ0aW5nIGFuIGVmZmVjdGl2ZSBmdXp6aW5nIHN0cmF0ZWd5LiBXZSdyZSBsb29raW5nIGF0IG1vZGlmaWNhdGlvbnMgdG8gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuY2AsIGAuaGAsIGBkZWJ1Zy5jYCwgYW5kIGBodGNfZHJ2X2RlYnVnLmNgLiBJbW1lZGlhdGVseSwgSSBuZWVkIHRvIGtub3cgdGhlIGNvbnRleHQgb2YgdGhlc2UgZHJpdmVycy5cblxuT2theSwgc28gYGF0aDlrYCBpcyBQQ0kvQUhCIHdpcmVsZXNzLCBhbmQgYGF0aDlrX2h0Y2AgaXMgVVNCIHdpcmVsZXNzLiBUaGF0J3MgZ29vZCBpbmZvcm1hdGlvbi4gVVNCIGRyaXZlcnMgYXJlIG9mdGVuIHByaW1lIHRhcmdldHMsIGJlY2F1c2UgdGhleSBjYW4gYmUgZW11bGF0ZWQuIFN5emthbGxlcidzIFVTQiBmdXp6aW5nIGNhcGFiaWxpdGllcywgcGFydGljdWxhcmx5IHVzaW5nIFJhdyBHYWRnZXQsIGR1bW15X2hjZCwgb3IgdmhjaSwgY2FuIGJlIGluY3JlZGlibHkgZWZmZWN0aXZlIGhlcmUuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoaXMgYGNvbW1vbi1zcGVjdHJhbGAgY29kZSBpcyBldmVuIHVzZWQgYnkgYm90aC4gSXMgdGhlIHNhbWUgc3BlY3RyYWwgZnVuY3Rpb25hbGl0eSBpbiBib3RoIGBhdGg5a2AgYW5kIGBhdGg5a19odGNgIG9yIGFyZSB3ZSBvbmx5IGZ1enppbmcgb25lP1xuXG5Ob3csIEknbGwgbmVlZCB0byBkaWcgaW50byB0aGUgY29kZWJhc2UuIEknbSBnb2luZyB0byBzdGFydCBzZWFyY2hpbmcgZm9yIHVzZXMgb2YgYGF0aDlrX2h0Y2AsIGBhdGg5a2AsIGFuZCB0aGUgc3BlY3RyYWwtcmVsYXRlZCBmdW5jdGlvbnMuIFdlJ2xsIG5lZWQgdG8ga25vdyB3aGljaCBmdW5jdGlvbnMgYXJlIGVudHJ5IHBvaW50cyBhbmQgd2hldGhlciB0aGV5J3JlIGV2ZW4gcmVhY2hhYmxlLiBXZSdsbCBuZWVkIHRvIGRldGVybWluZSB0aGUgb3B0aW1hbCBjb25maWd1cmF0aW9uIGZvciB0aGlzLiBUaGlzIHNlYXJjaCB3aWxsIGhlbHAgbWUgbmFycm93IGRvd24gd2hhdCBuZWVkcyBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MDU3LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjU2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMDE6MDM6MjYuOTk1NTYxNzMyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkxMTM0MTc2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkFUSDlLX0hUQ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnPTEzPWNvbmZpZyBBVEg5S19CVENPRVhfU1VQUE9SVFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE0LVxcdGJvb2wgXFxcIkF0aGVyb3MgYmx1ZXRvb3RoIGNvZXhpc3RlbmNlIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTU6XFx0ZGVwZW5kcyBvbiAoQVRIOUsgfHwgQVRIOUtfSFRDKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE2LVxcdGRlZmF1bHQgeVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc9MTU2PWNvbmZpZyBBVEg5S19QQ0lfTk9fRUVQUk9NXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTcyOmNvbmZpZyBBVEg5S19IVENcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNzMtXFx0dHJpc3RhdGUgXFxcIkF0aGVyb3MgSFRDIGJhc2VkIHdpcmVsZXNzIGNhcmRzIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xODYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTg3OmNvbmZpZyBBVEg5S19IVENfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE4OC1cXHRib29sIFxcXCJBdGhlcm9zIGF0aDlrX2h0YyBkZWJ1Z2dpbmdcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTg5OlxcdGRlcGVuZHMgb24gQVRIOUtfSFRDIFxcdTAwMjZcXHUwMDI2IERFQlVHX0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTkwLVxcdHNlbGVjdCBBVEg5S19DT01NT05fREVCVUdcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnPTIwNj1jb25maWcgQVRIOUtfQ09NTU9OX1NQRUNUUkFMXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMjA3LVxcdGJvb2wgXFxcIkF0aGVyb3MgYXRoOWsvYXRoOWtfaHRjIHNwZWN0cmFsIHNjYW4gc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoyMDg6XFx0ZGVwZW5kcyBvbiBBVEg5S19ERUJVR0ZTIHx8IEFUSDlLX0hUQ19ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMjA5LVxcdHNlbGVjdCBSRUxBWVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlPTY4PWF0aDlrX2h0Yy15ICs9XFx0aHRjX2hzdC5vIFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS03Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6Nzc6YXRoOWtfaHRjLSQoQ09ORklHX0FUSDlLX0hUQ19ERUJVR0ZTKSArPSBodGNfZHJ2X2RlYnVnLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtNzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlOjc5Om9iai0kKENPTkZJR19BVEg5S19IVEMpICs9IGF0aDlrX2h0Yy5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTgwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwM19lZXByb20uYz0zMzkwPXN0YXRpYyBib29sIGF0aDlrX2h3X2FyOTMwMF9maWxsX2VlcHJvbShzdHJ1Y3QgYXRoX2h3ICphaClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDNfZWVwcm9tLmMtMzQwMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAzX2VlcHJvbS5jOjM0MDE6I2lmIGRlZmluZWQoQ09ORklHX0FUSDlLX0RFQlVHRlMpIHx8IGRlZmluZWQoQ09ORklHX0FUSDlLX0hUQ19ERUJVR0ZTKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDNfZWVwcm9tLmMtMzQwMi1zdGF0aWMgdTMyIGFyOTAwM19kdW1wX21vZGFsX2VlcHJvbShjaGFyICpidWYsIHUzMiBsZW4sIHUzMiBzaXplLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYz0yMzI9c3RhdGljIGlubGluZSB2b2lkIGF0aDlrX3NrYl9xdWV1ZV9jb21wbGV0ZShzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTIzOC1cXHR3aGlsZSAoKHNrYiA9IF9fc2tiX2RlcXVldWUocXVldWUpKSAhPSBOVUxMKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzoyMzk6I2lmZGVmIENPTkZJR19BVEg5S19IVENfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMjQwLVxcdFxcdGludCBsbiA9IHNrYi1cXHUwMDNlbGVuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYz0zNzY9c3RhdGljIGludCBoaWZfdXNiX3NlbmRfdHgoc3RydWN0IGhpZl9kZXZpY2VfdXNiICpoaWZfZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0zOTktXFx0LyogTWdtdC9CZWFjb24gZnJhbWVzIGRvbid0IHVzZSB0aGUgVFggYnVmZmVyIHBvb2wgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjQwMDpcXHRpZiAoKHR4X2N0bC1cXHUwMDNldHlwZSA9PSBBVEg5S19IVENfTUdNVCkgfHxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjQwMTpcXHQgICAgKHR4X2N0bC1cXHUwMDNldHlwZSA9PSBBVEg5S19IVENfQkVBQ09OKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNDAyLVxcdFxcdHJldCA9IGhpZl91c2Jfc2VuZF9tZ210KGhpZl9kZXYsIHNrYik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQwNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjQwNzpcXHRpZiAoKHR4X2N0bC1cXHUwMDNldHlwZSA9PSBBVEg5S19IVENfTk9STUFMKSB8fFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NDA4OlxcdCAgICAodHhfY3RsLVxcdTAwM2V0eXBlID09IEFUSDlLX0hUQ19BTVBEVSkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQwOS1cXHRcXHRfX3NrYl9xdWV1ZV90YWlsKFxcdTAwMjZoaWZfZGV2LVxcdTAwM2V0eC50eF9za2JfcXVldWUsIHNrYik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jPTQ4Nz1zdGF0aWMgaW5saW5lIGJvb2wgY2hlY2tfaW5kZXgoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTggaWR4KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00OTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo0OTM6XFx0aWYgKCh0eF9jdGwtXFx1MDAzZXR5cGUgPT0gQVRIOUtfSFRDX0FNUERVKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNDk0LVxcdCAgICAodHhfY3RsLVxcdTAwM2VzdGFfaWR4ID09IGlkeCkpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9NTY9ZW51bSBodGNfb3Btb2RlIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC02NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6NjU6I2RlZmluZSBBVEg5S19IVENfQU1QRFUgIDFcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6NjY6I2RlZmluZSBBVEg5S19IVENfTk9STUFMIDJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6Njc6I2RlZmluZSBBVEg5S19IVENfQkVBQ09OIDNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6Njg6I2RlZmluZSBBVEg5S19IVENfTUdNVCAgIDRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNjktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjcwOiNkZWZpbmUgQVRIOUtfSFRDX1RYX0NUU09OTFkgICAgICAweDFcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6NzE6I2RlZmluZSBBVEg5S19IVENfVFhfUlRTQ1RTICAgICAgIDB4MlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC03Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9NzM9c3RydWN0IHR4X2ZyYW1lX2hkciB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNzctXFx0dTggdGlkbm87XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjc4OlxcdF9fYmUzMiBmbGFnczsgLyogQVRIOUtfSFRDX1RYXyogKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNzktXFx0dTgga2V5X3R5cGU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9MTk0PXN0cnVjdCBhdGg5a19odGNfdGFyZ2V0X3J4X3N0YXRzIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0xOTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjIwMDojZGVmaW5lIEFUSDlLX0hUQ19NQVhfVklGIDJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MjAxOiNkZWZpbmUgQVRIOUtfSFRDX01BWF9CQ05fVklGIDJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMjAyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTI0OT1zdHJ1Y3QgYXRoOWtfdmlmX2l0ZXJfZGF0YSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMjUzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyNTQ6I2RlZmluZSBBVEg5S19IVENfTUFYX1NUQSA4XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI1NTojZGVmaW5lIEFUSDlLX0hUQ19NQVhfVElEIDhcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMjU2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTI2ND1zdHJ1Y3QgYXRoOWtfaHRjX3N0YSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI2NS1cXHR1OCBpbmRleDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MjY2OlxcdGVudW0gdGlkX2FnZ3Jfc3RhdGUgdGlkX3N0YXRlW0FUSDlLX0hUQ19NQVhfVElEXTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMjY3LVxcdHN0cnVjdCB3b3JrX3N0cnVjdCByY191cGRhdGVfd29yaztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0yNzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI3MTojZGVmaW5lIEFUSDlLX0hUQ19SWEJVRiAyNTZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMjcyLSNkZWZpbmUgSFRDX1JYX0ZSQU1FX0hFQURFUl9TSVpFIDQwXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9MjgxPXN0cnVjdCBhdGg5a19odGNfcngge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI4Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6Mjg3OiNkZWZpbmUgQVRIOUtfSFRDX1RYX0NMRUFOVVBfSU5URVJWQUwgNTAgLyogbXMgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6Mjg4OiNkZWZpbmUgQVRIOUtfSFRDX1RYX1RJTUVPVVRfSU5URVJWQUwgMzAwMCAvKiBtcyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyODk6I2RlZmluZSBBVEg5S19IVENfVFhfUkVTRVJWRSAxMFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyOTA6I2RlZmluZSBBVEg5S19IVENfVFhfVElNRU9VVF9DT1VOVCA0MFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyOTE6I2RlZmluZSBBVEg5S19IVENfVFhfVEhSRVNIT0xEIChNQVhfVFhfQlVGX05VTSAtIEFUSDlLX0hUQ19UWF9SRVNFUlZFKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0yOTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI5MzojZGVmaW5lIEFUSDlLX0hUQ19PUF9UWF9RVUVVRVNfU1RPUCBCSVQoMClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6Mjk0OiNkZWZpbmUgQVRIOUtfSFRDX09QX1RYX0RSQUlOICAgICAgIEJJVCgxKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0yOTUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9MzExPXN0cnVjdCBhdGg5a19odGNfdHhfY3RsIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MzEyOlxcdHU4IHR5cGU7IC8qIEFUSDlLX0hUQ18qICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTMxMy1cXHR1OCBlcGlkO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTMxOT1zdGF0aWMgaW5saW5lIHN0cnVjdCBhdGg5a19odGNfdHhfY3RsICpIVENfU0tCX0NCKHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMzI3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDozMjg6I2lmZGVmIENPTkZJR19BVEg5S19IVENfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0zMjktI2RlZmluZSBfX1NUQVRfU0FGRShoaWZfZGV2LCBleHByKVxcdGRvIHsgKChoaWZfZGV2KS1cXHUwMDNlaHRjX2hhbmRsZS1cXHUwMDNlZHJ2X3ByaXYgPyAoZXhwcikgOiAwKTsgfSB3aGlsZSAoMClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD0zODg9c3RhdGljIGlubGluZSB2b2lkIGF0aDlrX2h0Y19lcnJfc3RhdF9yeChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMzkyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDozOTM6I2VuZGlmIC8qIENPTkZJR19BVEg5S19IVENfREVCVUdGUyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0zOTQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9NDA5PXN0cnVjdCBodGNfYmVhY29uIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC00MTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjQxNjpcXHRzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqYnNsb3RbQVRIOUtfSFRDX01BWF9CQ05fVklGXTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNDE3LVxcdHUzMiBibWlzc2NudDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD00NTY9c3RydWN0IGF0aDlrX2h0Y19wcml2IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC00NzgtXFx0dTggc3RhX3Nsb3Q7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjQ3OTpcXHR1OCB2aWZfc3RhX3Bvc1tBVEg5S19IVENfTUFYX1ZJRl07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTQ4MC1cXHR1OCBudW1faWJzc192aWY7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNTM1LVxcdHN0cnVjdCBkZWxheWVkX3dvcmsgZHV0eV9jeWNsZV93b3JrO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo1MzY6I2lmZGVmIENPTkZJR19BVEg5S19IVENfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC01MzctXFx0c3RydWN0IGF0aDlrX2RlYnVnIGRlYnVnO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTY0MT1pbnQgYXRoOWtfaHRjX3Jlc3VtZShzdHJ1Y3QgaHRjX3RhcmdldCAqaHRjX2hhbmRsZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTY0Mi0jZW5kaWZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6NjQzOiNpZmRlZiBDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNjQ0LWludCBhdGg5a19odGNfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX2h3ICphaCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9NjQ4PXN0YXRpYyBpbmxpbmUgdm9pZCBhdGg5a19odGNfZGVpbml0X2RlYnVnKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC02NTAtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo2NTE6I2VuZGlmIC8qIENPTkZJR19BVEg5S19IVENfREVCVUdGUyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC02NTItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYz0xMTE9c3RhdGljIHZvaWQgYXRoOWtfaHRjX2JlYWNvbl9jb25maWdfYXAoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMTE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jOjExNzpcXHRhdGg5a19jbW5fYmVhY29uX2NvbmZpZ19hcChhaCwgY29uZiwgQVRIOUtfSFRDX01BWF9CQ05fVklGKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYy0xMTgtXFx0YXRoOWtfaHRjX2JlYWNvbl9pbml0KHByaXYsIGNvbmYsIGZhbHNlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jPTE5MT1zdGF0aWMgdm9pZCBhdGg5a19odGNfc2VuZF9iZWFjb24oc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMjQyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jOjI0MzpcXHR0eF9jdGwtXFx1MDAzZXR5cGUgPSBBVEg5S19IVENfQkVBQ09OO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTI0NC1cXHR0eF9jdGwtXFx1MDAzZWVwaWQgPSBwcml2LVxcdTAwM2ViZWFjb25fZXA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYz0yNjQ9c3RhdGljIGludCBhdGg5a19odGNfY2hvb3NlX2JzbG90KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTI3Ni1cXHR0c2Z0dSA9IFRTRl9UT19UVSh0c2YgXFx1MDAzZVxcdTAwM2UgMzIsIHRzZik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmM6Mjc3OlxcdHNsb3QgPSAoKHRzZnR1ICUgaW50dmFsKSAqIEFUSDlLX0hUQ19NQVhfQkNOX1ZJRikgLyBpbnR2YWw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmM6Mjc4OlxcdHNsb3QgPSBBVEg5S19IVENfTUFYX0JDTl9WSUYgLSBzbG90IC0gMTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYy0yNzktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYz0zMjU9dm9pZCBhdGg5a19odGNfYXNzaWduX2JzbG90KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTMzMi1cXHRzcGluX2xvY2tfYmgoXFx1MDAyNnByaXYtXFx1MDAzZWJlYWNvbl9sb2NrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYzozMzM6XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFUSDlLX0hUQ19NQVhfQkNOX1ZJRjsgaSsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMzM0LVxcdFxcdGlmIChwcml2LVxcdTAwM2ViZWFjb24uYnNsb3RbaV0gPT0gTlVMTCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmM9MzY1PXZvaWQgYXRoOWtfaHRjX3NldF90c2ZhZGp1c3Qoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMzgwLVxcdCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jOjM4MTpcXHR0c2ZhZGp1c3QgPSBjdXJfY29uZi1cXHUwMDNlYmVhY29uX2ludGVydmFsICogYXZwLVxcdTAwM2Vic2xvdCAvIEFUSDlLX0hUQ19NQVhfQkNOX1ZJRjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYy0zODItXFx0YXZwLVxcdTAwM2V0c2ZhZGp1c3QgPSBjcHVfdG9fbGU2NChUVV9UT19VU0VDKHRzZmFkanVzdCkpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYz0zOTg9c3RhdGljIGNvbnN0IGNoYXIgYXRoOWtfaHRjX2dzdHJpbmdzX3N0YXRzW11bRVRIX0dTVFJJTkdfTEVOXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMtNDE4LX07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYzo0MTk6I2RlZmluZSBBVEg5S19IVENfU1NUQVRTX0xFTiBBUlJBWV9TSVpFKGF0aDlrX2h0Y19nc3RyaW5nc19zdGF0cylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jLTQyMC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM9NDMwPWludCBhdGg5a19odGNfZ2V0X2V0X3NzZXRfY291bnQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jLTQzMy1cXHRpZiAoc3NldCA9PSBFVEhfU1NfU1RBVFMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYzo0MzQ6XFx0XFx0cmV0dXJuIEFUSDlLX0hUQ19TU1RBVFNfTEVOO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMtNDM1LVxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYz00NDg9dm9pZCBhdGg5a19odGNfZ2V0X2V0X3N0YXRzKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYy00NzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYzo0NzQ6XFx0V0FSTl9PTihpICE9IEFUSDlLX0hUQ19TU1RBVFNfTEVOKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jLTQ3NS19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM9NjA2PXN0YXRpYyBpbnQgYXRoOWtfaW5pdF9wcml2KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy02NzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jOjY3NDpcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgQVRIOUtfSFRDX01BWF9CQ05fVklGOyBpKyspXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jLTY3NS1cXHRcXHRwcml2LVxcdTAwM2ViZWFjb24uYnNsb3RbaV0gPSBOVUxMO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jPTE4ND12b2lkIGF0aDlrX2h0Y19yZXNldChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMjMzLVxcdG1vZF90aW1lcihcXHUwMDI2cHJpdi1cXHUwMDNldHguY2xlYW51cF90aW1lcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6MjM0OlxcdFxcdCAgamlmZmllcyArIG1zZWNzX3RvX2ppZmZpZXMoQVRIOUtfSFRDX1RYX0NMRUFOVVBfSU5URVJWQUwpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMjM1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jPTI0MD1zdGF0aWMgaW50IGF0aDlrX2h0Y19zZXRfY2hhbm5lbChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMzExLVxcdG1vZF90aW1lcihcXHUwMDI2cHJpdi1cXHUwMDNldHguY2xlYW51cF90aW1lcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6MzEyOlxcdFxcdCAgamlmZmllcyArIG1zZWNzX3RvX2ppZmZpZXMoQVRIOUtfSFRDX1RYX0NMRUFOVVBfSU5URVJWQUwpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMzEzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jPTM1MD1zdGF0aWMgaW50IGF0aDlrX2h0Y19hZGRfbW9uaXRvcl9pbnRlcmZhY2Uoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTM1Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6MzU4OlxcdGlmICgocHJpdi1cXHUwMDNlbnZpZnMgXFx1MDAzZT0gQVRIOUtfSFRDX01BWF9WSUYpIHx8XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjM1OTpcXHQgICAgKHByaXYtXFx1MDAzZW5zdGF0aW9ucyBcXHUwMDNlPSBBVEg5S19IVENfTUFYX1NUQSkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMzYwLVxcdFxcdHJldCA9IC1FTk9CVUZTO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTM2NC1cXHRzdGFfaWR4ID0gZmZ6KHByaXYtXFx1MDAzZXN0YV9zbG90KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6MzY1OlxcdGlmICgoc3RhX2lkeCBcXHUwMDNjIDApIHx8IChzdGFfaWR4IFxcdTAwM2UgQVRIOUtfSFRDX01BWF9TVEEpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTM2Ni1cXHRcXHRyZXQgPSAtRU5PQlVGUztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYz00NjY9c3RhdGljIGludCBhdGg5a19odGNfYWRkX3N0YXRpb24oc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTQ3Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6NDc4OlxcdGlmIChwcml2LVxcdTAwM2Vuc3RhdGlvbnMgXFx1MDAzZT0gQVRIOUtfSFRDX01BWF9TVEEpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTQ3OS1cXHRcXHRyZXR1cm4gLUVOT0JVRlM7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtNDgxLVxcdHN0YV9pZHggPSBmZnoocHJpdi1cXHUwMDNlc3RhX3Nsb3QpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzo0ODI6XFx0aWYgKChzdGFfaWR4IFxcdTAwM2MgMCkgfHwgKHN0YV9pZHggXFx1MDAzZSBBVEg5S19IVENfTUFYX1NUQSkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTQ4My1cXHRcXHRyZXR1cm4gLUVOT0JVRlM7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM9NzAyPXN0YXRpYyBpbnQgYXRoOWtfaHRjX3R4X2FnZ3Jfb3BlcihzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtNzEzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzo3MTQ6XFx0aWYgKHRpZCBcXHUwMDNlPSBBVEg5S19IVENfTUFYX1RJRClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtNzE1LVxcdFxcdHJldHVybiAtRUlOVkFMO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jPTkwNz1zdGF0aWMgaW50IGF0aDlrX2h0Y19zdGFydChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy05NjAtXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZwcml2LVxcdTAwM2V0eC50eF9sb2NrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6OTYxOlxcdHByaXYtXFx1MDAzZXR4LmZsYWdzIFxcdTAwMjY9IH5BVEg5S19IVENfT1BfVFhfUVVFVUVTX1NUT1A7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTk2Mi1cXHRzcGluX3VubG9ja19iaChcXHUwMDI2cHJpdi1cXHUwMDNldHgudHhfbG9jayk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtOTY2LVxcdG1vZF90aW1lcihcXHUwMDI2cHJpdi1cXHUwMDNldHguY2xlYW51cF90aW1lcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6OTY3OlxcdFxcdCAgamlmZmllcyArIG1zZWNzX3RvX2ppZmZpZXMoQVRIOUtfSFRDX1RYX0NMRUFOVVBfSU5URVJWQUwpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtOTY4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jPTE2NTg9c3RhdGljIGludCBhdGg5a19odGNfYW1wZHVfYWN0aW9uKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTE2ODgtXFx0Y2FzZSBJRUVFODAyMTFfQU1QRFVfVFhfT1BFUkFUSU9OQUw6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjE2ODk6XFx0XFx0aWYgKHRpZCBcXHUwMDNlPSBBVEg5S19IVENfTUFYX1RJRCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0xNjkwLVxcdFxcdFxcdHJldCA9IC1FSU5WQUw7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM9MTg3ND1zdHJ1Y3QgaWVlZTgwMjExX29wcyBhdGg5a19odGNfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTE5MDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjE5MDc6I2lmZGVmIENPTkZJR19BVEg5S19IVENfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0xOTA4LVxcdC5nZXRfZXRfc3NldF9jb3VudCAgPSBhdGg5a19odGNfZ2V0X2V0X3NzZXRfY291bnQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9MjM9c3RhdGljIGNvbnN0IGludCBzdWJ0eXBlX3R4cV90b19od3FbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0yOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6MzA6I2RlZmluZSBBVEg5S19IVENfSU5JVF9UWFEoc3VidHlwZSkgZG8ge1xcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMzEtXFx0XFx0cWkudHFpX3N1YnR5cGUgPSBzdWJ0eXBlX3R4cV90b19od3Fbc3VidHlwZV07XFx0XFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTU2PXZvaWQgYXRoOWtfaHRjX2NoZWNrX3N0b3BfcXVldWVzKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy01OS1cXHRwcml2LVxcdTAwM2V0eC5xdWV1ZWRfY250Kys7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjYwOlxcdGlmICgocHJpdi1cXHUwMDNldHgucXVldWVkX2NudCBcXHUwMDNlPSBBVEg5S19IVENfVFhfVEhSRVNIT0xEKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo2MTpcXHQgICAgIShwcml2LVxcdTAwM2V0eC5mbGFncyBcXHUwMDI2IEFUSDlLX0hUQ19PUF9UWF9RVUVVRVNfU1RPUCkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NjI6XFx0XFx0cHJpdi1cXHUwMDNldHguZmxhZ3MgfD0gQVRIOUtfSFRDX09QX1RYX1FVRVVFU19TVE9QO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy02My1cXHRcXHRpZWVlODAyMTFfc3RvcF9xdWV1ZXMocHJpdi1cXHUwMDNlaHcpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTY4PXZvaWQgYXRoOWtfaHRjX2NoZWNrX3dha2VfcXVldWVzKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy03MC1cXHRzcGluX2xvY2tfYmgoXFx1MDAyNnByaXYtXFx1MDAzZXR4LnR4X2xvY2spO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo3MTpcXHRpZiAoKHByaXYtXFx1MDAzZXR4LnF1ZXVlZF9jbnQgXFx1MDAzYyBBVEg5S19IVENfVFhfVEhSRVNIT0xEKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo3MjpcXHQgICAgKHByaXYtXFx1MDAzZXR4LmZsYWdzIFxcdTAwMjYgQVRIOUtfSFRDX09QX1RYX1FVRVVFU19TVE9QKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo3MzpcXHRcXHRwcml2LVxcdTAwM2V0eC5mbGFncyBcXHUwMDI2PSB+QVRIOUtfSFRDX09QX1RYX1FVRVVFU19TVE9QO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy03NC1cXHRcXHRpZWVlODAyMTFfd2FrZV9xdWV1ZXMocHJpdi1cXHUwMDNlaHcpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTIxND1zdGF0aWMgdm9pZCBhdGg5a19odGNfdHhfbWdtdChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMjQwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzoyNDE6XFx0dHhfY3RsLVxcdTAwM2V0eXBlID0gQVRIOUtfSFRDX01HTVQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTI0Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz0yNjA9c3RhdGljIHZvaWQgYXRoOWtfaHRjX3R4X2RhdGEoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTI5Mi1cXHRpZiAodHhfaW5mby1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRUVFODAyMTFfVFhfQ1RMX0FNUERVKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjI5MzpcXHRcXHR0eF9jdGwtXFx1MDAzZXR5cGUgPSBBVEg5S19IVENfQU1QRFU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjI5NDpcXHRcXHR0eF9oZHIuZGF0YV90eXBlID0gQVRIOUtfSFRDX0FNUERVO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0yOTUtXFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6Mjk2OlxcdFxcdHR4X2N0bC1cXHUwMDNldHlwZSA9IEFUSDlLX0hUQ19OT1JNQUw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjI5NzpcXHRcXHR0eF9oZHIuZGF0YV90eXBlID0gQVRIOUtfSFRDX05PUk1BTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMjk4LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0zMTItXFx0XFx0aWYgKHNrYi1cXHUwMDNlbGVuIFxcdTAwM2UgcHJpdi1cXHUwMDNlaHctXFx1MDAzZXdpcGh5LVxcdTAwM2VydHNfdGhyZXNob2xkKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzozMTM6XFx0XFx0XFx0ZmxhZ3MgfD0gQVRIOUtfSFRDX1RYX1JUU0NUUztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMzE0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0zMTUtXFx0LyogQ1RTLXRvLXNlbGYgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6MzE2OlxcdGlmICghKGZsYWdzIFxcdTAwMjYgQVRIOUtfSFRDX1RYX1JUU0NUUykgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMzE3LVxcdCAgICAodmlmIFxcdTAwMjZcXHUwMDI2IHZpZi1cXHUwMDNlYnNzX2NvbmYudXNlX2N0c19wcm90KSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6MzE4OlxcdFxcdGZsYWdzIHw9IEFUSDlLX0hUQ19UWF9DVFNPTkxZO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0zMTktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9MzkyPXN0YXRpYyBpbmxpbmUgYm9vbCBfX2F0aDlrX2h0Y19jaGVja190eF9hZ2dyKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0zOTctXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZwcml2LVxcdTAwM2V0eC50eF9sb2NrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6Mzk4OlxcdGlmICgodGlkIFxcdTAwM2MgQVRIOUtfSFRDX01BWF9USUQpIFxcdTAwMjZcXHUwMDI2IChpc3RhLVxcdTAwM2V0aWRfc3RhdGVbdGlkXSA9PSBBR0dSX1NUT1ApKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0zOTktXFx0XFx0cmV0ID0gdHJ1ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz00NDU9c3RhdGljIHZvaWQgYXRoOWtfaHRjX3R4X3Byb2Nlc3Moc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ3OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NDc5OlxcdGlmICh0eHMtXFx1MDAzZXRzX2ZsYWdzIFxcdTAwMjYgQVRIOUtfSFRDX1RYU1RBVF9BQ0spIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDgwLVxcdFxcdHR4X2luZm8tXFx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9UWF9TVEFUX0FDSztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00ODQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjQ4NTpcXHRpZiAodHhzLVxcdTAwM2V0c19mbGFncyBcXHUwMDI2IEFUSDlLX0hUQ19UWFNUQVRfRklMVClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDg2LVxcdFxcdHR4X2luZm8tXFx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9UWF9TVEFUX1RYX0ZJTFRFUkVEO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00ODctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjQ4ODpcXHRpZiAodHhzLVxcdTAwM2V0c19mbGFncyBcXHUwMDI2IEFUSDlLX0hUQ19UWFNUQVRfUlRDX0NUUylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDg5LVxcdFxcdHJhdGUtXFx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9UWF9SQ19VU0VfUlRTX0NUUztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00OTEtXFx0cmF0ZS1cXHUwMDNlY291bnQgPSAxO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo0OTI6XFx0cmF0ZS1cXHUwMDNlaWR4ID0gTVModHhzLVxcdTAwM2V0c19yYXRlLCBBVEg5S19IVENfVFhTVEFUX1JBVEUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00OTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjQ5NDpcXHRpZiAodHhzLVxcdTAwM2V0c19mbGFncyBcXHUwMDI2IEFUSDlLX0hUQ19UWFNUQVRfTUNTKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ5NS1cXHRcXHRyYXRlLVxcdTAwM2VmbGFncyB8PSBJRUVFODAyMTFfVFhfUkNfTUNTO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00OTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjQ5NzpcXHRcXHRpZiAodHhzLVxcdTAwM2V0c19mbGFncyBcXHUwMDI2IEFUSDlLX0hUQ19UWFNUQVRfQ1c0MClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDk4LVxcdFxcdFxcdHJhdGUtXFx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9UWF9SQ180MF9NSFpfV0lEVEg7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjQ5OTpcXHRcXHRpZiAodHhzLVxcdTAwM2V0c19mbGFncyBcXHUwMDI2IEFUSDlLX0hUQ19UWFNUQVRfU0dJKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy01MDAtXFx0XFx0XFx0cmF0ZS1cXHUwMDNlZmxhZ3MgfD0gSUVFRTgwMjExX1RYX1JDX1NIT1JUX0dJO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTUzOT12b2lkIGF0aDlrX2h0Y190eF9kcmFpbihzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNTQzLVxcdHNwaW5fbG9ja19iaChcXHUwMDI2cHJpdi1cXHUwMDNldHgudHhfbG9jayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjU0NDpcXHRwcml2LVxcdTAwM2V0eC5mbGFncyB8PSBBVEg5S19IVENfT1BfVFhfRFJBSU47XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTU0NS1cXHRzcGluX3VubG9ja19iaChcXHUwMDI2cHJpdi1cXHUwMDNldHgudHhfbG9jayk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNTczLVxcdHNwaW5fbG9ja19iaChcXHUwMDI2cHJpdi1cXHUwMDNldHgudHhfbG9jayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjU3NDpcXHRwcml2LVxcdTAwM2V0eC5mbGFncyBcXHUwMDI2PSB+QVRIOUtfSFRDX09QX1RYX0RSQUlOO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy01NzUtXFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNnByaXYtXFx1MDAzZXR4LnR4X2xvY2spO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTU3OD12b2lkIGF0aDlrX3R4X2ZhaWxlZF90YXNrbGV0KHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy01ODItXFx0c3Bpbl9sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2V0eC50eF9sb2NrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NTgzOlxcdGlmIChwcml2LVxcdTAwM2V0eC5mbGFncyBcXHUwMDI2IEFUSDlLX0hUQ19PUF9UWF9EUkFJTikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy01ODQtXFx0XFx0c3Bpbl91bmxvY2soXFx1MDAyNnByaXYtXFx1MDAzZXR4LnR4X2xvY2spO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTYxOD1zdGF0aWMgc3RydWN0IHNrX2J1ZmYqIGF0aDlrX2h0Y190eF9nZXRfcGFja2V0KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy02MjQtXFx0dW5zaWduZWQgbG9uZyBmbGFncztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NjI1OlxcdHU4IGVwaWQgPSBNUyh0eHMtXFx1MDAzZXRzX3JhdGUsIEFUSDlLX0hUQ19UWFNUQVRfRVBJRCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTYyNi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz03MTY9c3RhdGljIGlubGluZSBib29sIGNoZWNrX3BhY2tldChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNzI0LVxcdFxcdCAgICAgICB0eF9jdGwtXFx1MDAzZXRpbWVzdGFtcCArXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjcyNTpcXHRcXHQgICAgICAgbXNlY3NfdG9famlmZmllcyhBVEg5S19IVENfVFhfVElNRU9VVF9JTlRFUlZBTCkpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTcyNi1cXHRcXHRhdGhfZGJnKGNvbW1vbiwgWE1JVCwgXFxcIkRyb3BwaW5nIGEgcGFja2V0IGR1ZSB0byBUWCB0aW1lb3V0XFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz03NjE9dm9pZCBhdGg5a19odGNfdHhfY2xlYW51cF90aW1lcihzdHJ1Y3QgdGltZXJfbGlzdCAqdClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy03NzYtXFx0XFx0XFx0XFx0ZXZlbnQtXFx1MDAzZXR4cy5jb29raWUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjc3NzpcXHRcXHRcXHRcXHRNUyhldmVudC1cXHUwMDNldHhzLnRzX3JhdGUsIEFUSDlLX0hUQ19UWFNUQVRfRVBJRCkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy03NzgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNzg0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo3ODU6XFx0XFx0aWYgKCsrZXZlbnQtXFx1MDAzZWNvdW50IFxcdTAwM2U9IEFUSDlLX0hUQ19UWF9USU1FT1VUX0NPVU5UKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTc4Ni1cXHRcXHRcXHRsaXN0X2RlbChcXHUwMDI2ZXZlbnQtXFx1MDAzZWxpc3QpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTgwNS1cXHRtb2RfdGltZXIoXFx1MDAyNnByaXYtXFx1MDAzZXR4LmNsZWFudXBfdGltZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjgwNjpcXHRcXHQgIGppZmZpZXMgKyBtc2Vjc190b19qaWZmaWVzKEFUSDlLX0hUQ19UWF9DTEVBTlVQX0lOVEVSVkFMKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTgwNy19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9ODI3PWJvb2wgYXRoOWtfaHRjX3R4cV9zZXR1cChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsIGludCBzdWJ0eXBlKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTgzNC1cXHRtZW1zZXQoXFx1MDAyNnFpLCAwLCBzaXplb2YocWkpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6ODM1OlxcdEFUSDlLX0hUQ19JTklUX1RYUShzdWJ0eXBlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtODM2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTg1Mj1pbnQgYXRoOWtfaHRjX2NhYnFfc2V0dXAoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTg1Ni1cXHRtZW1zZXQoXFx1MDAyNnFpLCAwLCBzaXplb2YocWkpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6ODU3OlxcdEFUSDlLX0hUQ19JTklUX1RYUSgwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtODU4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTExODc9aW50IGF0aDlrX3J4X2luaXQoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTExOTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjExOTQ6XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFUSDlLX0hUQ19SWEJVRjsgaSsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTExOTUtXFx0XFx0c3RydWN0IGF0aDlrX2h0Y19yeGJ1ZiAqcnhidWYgPVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jPTEzOD12b2lkIGF0aDlrX3dtaV9ldmVudF90YXNrbGV0KHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYy0xNzgtXFx0XFx0XFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZwcml2LVxcdTAwM2V0eC50eF9sb2NrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmM6MTc5OlxcdFxcdFxcdGlmIChwcml2LVxcdTAwM2V0eC5mbGFncyBcXHUwMDI2IEFUSDlLX0hUQ19PUF9UWF9EUkFJTikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYy0xODAtXFx0XFx0XFx0XFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNnByaXYtXFx1MDAzZXR4LnR4X2xvY2spO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oPTM5PXN0cnVjdCB3bWlfZXZlbnRfc3diYSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmgtNTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oOjUxOiNkZWZpbmUgQVRIOUtfSFRDX1RYU1RBVF9BQ0sgICAgICAgIEJJVCgwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo1MjojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfRklMVCAgICAgICBCSVQoMSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6NTM6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX1JUQ19DVFMgICAgQklUKDIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oOjU0OiNkZWZpbmUgQVRIOUtfSFRDX1RYU1RBVF9NQ1MgICAgICAgIEJJVCgzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo1NTojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfQ1c0MCAgICAgICBCSVQoNClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6NTY6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX1NHSSAgICAgICAgQklUKDUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oLTU3LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oLTYzLSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo2NDojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfUkFURSAgICAgICAweDBmXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oOjY1OiNkZWZpbmUgQVRIOUtfSFRDX1RYU1RBVF9SQVRFX1MgICAgIDBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmgtNjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oOjY3OiNkZWZpbmUgQVRIOUtfSFRDX1RYU1RBVF9FUElEICAgICAgIDB4ZjBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6Njg6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX0VQSURfUyAgICAgNFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaC02OS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMDE6MDM6MjcuMDg2NzAyMDA4WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjU0MDE4MjQ1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgSSBhbmFseXplIHRoaXM6XG5cbioqQW5hbHl6aW5nIGF0aDlrX2h0YyBhbmQgUmVsYXRlZCBGdW5jdGlvbnMqKlxuXG5Pa2F5LCBzbyBgYXRoOWtfaHRjYCBpcyB0aGUgVVNCIFdpLUZpIGRyaXZlciwgdGhhdCdzIHRoZSBzdGFydGluZyBwb2ludC4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgYGF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnYCBhbmQsIG1vcmUgaW1wb3J0YW50bHksIGBhdGhfY21uX3Byb2Nlc3NfZmZ0YCBhcmUgbGV2ZXJhZ2VkIGluIGJvdGggdGhlIHN0YW5kYXJkIGBhdGg5a2AgZHJpdmVyIGFuZCB0aGUgSFRDIHZhcmlhbnQuIFRoZSBIVEMgdmVyc2lvbiBzdWdnZXN0cyBhIHRldGhlcmVkIG9yIGhvc3RlZCBkZXZpY2UsIHNvIHRoZXJlJ3MgbGlrZWx5IHNvbWUgYXJjaGl0ZWN0dXJhbCBkaWZmZXJlbmNlIHRvIHVuZGVyc3RhbmQgaW4gdGhlIEZGVCBwcm9jZXNzaW5nLiBUaGUgc3BlY3RyYWwgaW5pdGlhbGl6YXRpb24gZGVidWdnaW5nIGlzIGludGVyZXN0aW5nIHRvbywgSSdsbCBuZWVkIHRvIHNlZSBob3cgdGhleSdyZSBoYW5kbGluZyBkZWJ1Z2dpbmcgdGhlIGluaXRpYWxpemF0aW9uIG9mIHNwZWN0cmFsIGRhdGEuXG5cbk15IGltbWVkaWF0ZSBwbGFuIGlzIHRvIHVzZSBgZ3JlcGAgdG8gcXVpY2tseSBjcm9zcy1yZWZlcmVuY2UgdGhlIGBhdGhfY21uX3Byb2Nlc3NfZmZ0YCBmdW5jdGlvbiBhbmQgdGhlIHVzZSBvZiB0aGUgYHNwZWNfcHJpdmAgc3RydWN0dXJlLiBUaGlzIHNob3VsZCBoZWxwIHRvIHF1aWNrbHkgaGlnaGxpZ2h0IHRoZSBrZXkgYXJlYXMgb2YgaW50ZXJhY3Rpb24gYW5kIGRhdGEgZmxvdy4gVGhpcyB3aWxsIGxpa2VseSBnaXZlIG1lIGEgZ29vZCBvdmVydmlldyBvZiBob3cgdGhlIEZGVCBmdW5jdGlvbmFsaXR5IGlzIGhhbmRsZWQgYXQgYSBsb3cgbGV2ZWwgaW4gdGhlIGRyaXZlciwgYW5kIGl0cyBhc3NvY2lhdGVkIGRhdGEuIFRoaXMgd2lsbCBwcm92aWRlIGEgcXVpY2tlciBtYXAgb2Ygd2hlcmUgdGhlIHNwZWN0cmFsIGRhdGEgYW5kIHByb2Nlc3NpbmcgYXJlIGJlaW5nIGhhbmRsZWQgaW4gcmVsYXRpb24gdG8gdGhlIG1haW4gZHJpdmVyIGFuZCB0aGUgSFRDIHZlcnNpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4MTE4LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMDE6MDM6MjkuNjI2ODg4NTc1WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY4NjE0NTY3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF0aF9jbW5fcHJvY2Vzc19mZnR8c3BlY19wcml2XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2F0aDlrLmg9OTgzPXN0cnVjdCBhdGhfc29mdGMge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2F0aDlrLmgtMTA2My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXRoOWsuaDoxMDY0OlxcdHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgc3BlY19wcml2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hdGg5ay5oLTEwNjUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY2hhbm5lbC5jPTIzPXN0YXRpYyBpbnQgYXRoX3NldF9jaGFubmVsKHN0cnVjdCBhdGhfc29mdGMgKnNjKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NoYW5uZWwuYy05NS1cXHRcXHRpZiAodGVzdF9iaXQoQVRIX09QX1NDQU5OSU5HLCBcXHUwMDI2Y29tbW9uLVxcdTAwM2VvcF9mbGFncykgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY2hhbm5lbC5jOjk2OlxcdFxcdFxcdHNjLVxcdTAwM2VzcGVjX3ByaXYuc3BlY3RyYWxfbW9kZSA9PSBTUEVDVFJBTF9DSEFOU0NBTilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY2hhbm5lbC5jOjk3OlxcdFxcdFxcdGF0aDlrX2Ntbl9zcGVjdHJhbF9zY2FuX3RyaWdnZXIoY29tbW9uLCBcXHUwMDI2c2MtXFx1MDAzZXNwZWNfcHJpdik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NoYW5uZWwuYy05OC1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM9MjI9c3RhdGljIHM4IGZpeF9yc3NpX2ludl9vbmx5KHU4IHJzc2lfdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTI4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzoyOTpzdGF0aWMgdm9pZCBhdGhfZGVidWdfc2VuZF9mZnRfc2FtcGxlKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMzAtXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGZmdF9zYW1wbGVfdGx2ICpmZnRfc2FtcGxlX3RsdilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0zMi1cXHRpbnQgbGVuZ3RoO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzozMzpcXHRpZiAoIXNwZWNfcHJpdi1cXHUwMDNlcmZzX2NoYW5fc3BlY19zY2FuKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0zNC1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMzctXFx0XFx0IHNpemVvZigqZmZ0X3NhbXBsZV90bHYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzozODpcXHRyZWxheV93cml0ZShzcGVjX3ByaXYtXFx1MDAzZXJmc19jaGFuX3NwZWNfc2NhbiwgZmZ0X3NhbXBsZV90bHYsIGxlbmd0aCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTM5LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYz0xMjc9dHlwZWRlZiBpbnQgKGF0aF9jbW5fZmZ0X3NhbXBsZV9oYW5kbGVyKSAoc3RydWN0IGF0aF9yeF9zdGF0dXMgKnJzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzoxMjg6XFx0XFx0XFx0c3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xMjktXFx0XFx0XFx0dTggKnNhbXBsZV9idWYsIHU2NCB0c2YsIHUxNiBmcmVxLCBpbnQgY2hhbl90eXBlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYz0xMzI9YXRoX2Ntbl9wcm9jZXNzX2h0MjBfZmZ0KHN0cnVjdCBhdGhfcnhfc3RhdHVzICpycyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6MTMzOlxcdFxcdFxcdHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTM0LVxcdFxcdFxcdHU4ICpzYW1wbGVfYnVmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTEzNy1cXHRzdHJ1Y3QgZmZ0X3NhbXBsZV9odDIwIGZmdF9zYW1wbGVfMjA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjEzODpcXHRzdHJ1Y3QgYXRoX2NvbW1vbiAqY29tbW9uID0gYXRoOWtfaHdfY29tbW9uKHNwZWNfcHJpdi1cXHUwMDNlYWgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzoxMzk6XFx0c3RydWN0IGF0aF9odyAqYWggPSBzcGVjX3ByaXYtXFx1MDAzZWFoO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xNDAtXFx0c3RydWN0IGF0aF9odDIwX21hZ19pbmZvICptYWdfaW5mbztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0yMjktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjIzMDpcXHRhdGhfZGVidWdfc2VuZF9mZnRfc2FtcGxlKHNwZWNfcHJpdiwgdGx2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMjMxLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jPTIzNj1hdGhfY21uX3Byb2Nlc3NfaHQyMF80MF9mZnQoc3RydWN0IGF0aF9yeF9zdGF0dXMgKnJzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzoyMzc6XFx0XFx0XFx0c3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0yMzgtXFx0XFx0XFx0dTggKnNhbXBsZV9idWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMjQxLVxcdHN0cnVjdCBmZnRfc2FtcGxlX2h0MjBfNDAgZmZ0X3NhbXBsZV80MDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6MjQyOlxcdHN0cnVjdCBhdGhfY29tbW9uICpjb21tb24gPSBhdGg5a19od19jb21tb24oc3BlY19wcml2LVxcdTAwM2VhaCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjI0MzpcXHRzdHJ1Y3QgYXRoX2h3ICphaCA9IHNwZWNfcHJpdi1cXHUwMDNlYWg7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTI0NC1cXHRzdHJ1Y3QgYXRoOWtfaHdfY2FsX2RhdGEgKmNhbGRhdGEgPSBhaC1cXHUwMDNlY2FsZGF0YTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy00MDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjQwNzpcXHRhdGhfZGVidWdfc2VuZF9mZnRfc2FtcGxlKHNwZWNfcHJpdiwgdGx2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNDA4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jPTQ0OD1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjQ0OTphdGhfY21uX2lzX2ZmdF9idWZfZnVsbChzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTQ1MC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNDUzLVxcdHN0cnVjdCByY2hhbl9idWYgKmJ1ZjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6NDU0OlxcdHN0cnVjdCByY2hhbiAqcmMgPSBzcGVjX3ByaXYtXFx1MDAzZXJmc19jaGFuX3NwZWNfc2NhbjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNDU1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTQ2Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6NDY4OnN0YXRpYyB2b2lkIGF0aF9jbW5fY291bnRfZmZ0X3NhbXBsZShzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTQ2OS1cXHRcXHRcXHRcXHQgICAgIGludCByZXQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTQ3MC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjQ3MTpcXHRzdHJ1Y3QgYXRoX3J4X3N0YXRzICpyeF9zdGF0cyA9IHNwZWNfcHJpdi1cXHUwMDNlcnhfc3RhdHM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTQ3Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy00ODItLyogcmV0dXJucyAxIGlmIHRoaXMgd2FzIGEgc3BlY3RyYWwgZnJhbWUsIGV2ZW4gaWYgbm90IGhhbmRsZWQuICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjQ4MzppbnQgYXRoX2Ntbl9wcm9jZXNzX2ZmdChzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsIHN0cnVjdCBpZWVlODAyMTFfaGRyICpoZHIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTQ4NC1cXHRcXHQgICAgc3RydWN0IGF0aF9yeF9zdGF0dXMgKnJzLCB1NjQgdHNmKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTQ4Ni1cXHR1OCBzYW1wbGVfYnVmW1NQRUNUUkFMX1NBTVBMRV9NQVhfTEVOXSA9IHswfTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6NDg3OlxcdHN0cnVjdCBhdGhfaHcgKmFoID0gc3BlY19wcml2LVxcdTAwM2VhaDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6NDg4OlxcdHN0cnVjdCBhdGhfY29tbW9uICpjb21tb24gPSBhdGg5a19od19jb21tb24oc3BlY19wcml2LVxcdTAwM2VhaCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTQ4OS1cXHR1OCBudW1fYmlucywgKnZkYXRhID0gKHU4ICopaGRyO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTUxNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6NTE4OlxcdGlmICghc3BlY19wcml2LVxcdTAwM2VyZnNfY2hhbl9zcGVjX3NjYW4pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTUxOS1cXHRcXHRyZXR1cm4gMTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy01MjMtXFx0ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjUyNDpcXHRyZXQgPSBhdGhfY21uX2lzX2ZmdF9idWZfZnVsbChzcGVjX3ByaXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy01MjUtXFx0aWYgKHJldCA9PSAxKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNjM2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo2Mzc6XFx0XFx0XFx0XFx0cmV0ID0gZmZ0X2hhbmRsZXIocnMsIHNwZWNfcHJpdiwgc2FtcGxlX2J1ZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNjM4LVxcdFxcdFxcdFxcdFxcdFxcdCAgdHNmLCBmcmVxLCBjaGFuX3R5cGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy02MzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjY0MDpcXHRcXHRcXHRcXHRhdGhfY21uX2NvdW50X2ZmdF9zYW1wbGUoc3BlY19wcml2LCByZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy02NDEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNjUxLVxcdFxcdFxcdGlmIChzYW1wbGVfYnl0ZXMgPT0gc2FtcGxlX2xlbikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo2NTI6XFx0XFx0XFx0XFx0cmV0ID0gZmZ0X2hhbmRsZXIocnMsIHNwZWNfcHJpdiwgc2FtcGxlX3N0YXJ0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy02NTMtXFx0XFx0XFx0XFx0XFx0XFx0ICB0c2YsIGZyZXEsIGNoYW5fdHlwZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTY1NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6NjU1OlxcdFxcdFxcdFxcdGF0aF9jbW5fY291bnRfZmZ0X3NhbXBsZShzcGVjX3ByaXYsIHJldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTY1Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy02OTAtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo2OTE6RVhQT1JUX1NZTUJPTChhdGhfY21uX3Byb2Nlc3NfZmZ0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNjkyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jPTY5Nz1zdGF0aWMgc3NpemVfdCByZWFkX2ZpbGVfc3BlY19zY2FuX2N0bChzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciBfX3VzZXIgKnVzZXJfYnVmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTY5OS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjcwMDpcXHRzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYgPSBmaWxlLVxcdTAwM2Vwcml2YXRlX2RhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTcwMS1cXHRjaGFyICptb2RlID0gXFxcIlxcXCI7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNzAzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo3MDQ6XFx0c3dpdGNoIChzcGVjX3ByaXYtXFx1MDAzZXNwZWN0cmFsX21vZGUpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNzA1LVxcdGNhc2UgU1BFQ1RSQUxfRElTQUJMRUQ6XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM9NzIyPXZvaWQgYXRoOWtfY21uX3NwZWN0cmFsX3NjYW5fdHJpZ2dlcihzdHJ1Y3QgYXRoX2NvbW1vbiAqY29tbW9uLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo3MjM6XFx0XFx0XFx0XFx0IHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNzI0LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6NzI1OlxcdHN0cnVjdCBhdGhfaHcgKmFoID0gc3BlY19wcml2LVxcdTAwM2VhaDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNzI2LVxcdHUzMiByeGZpbHRlcjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy03MzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjczNjpcXHRpZiAoIXNwZWNfcHJpdi1cXHUwMDNlc3BlY19jb25maWcuZW5hYmxlZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNzM3LVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy03NDktXFx0ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjc1MDpcXHRhdGg5a19jbW5fc3BlY3RyYWxfc2Nhbl9jb25maWcoY29tbW9uLCBzcGVjX3ByaXYsIHNwZWNfcHJpdi1cXHUwMDNlc3BlY3RyYWxfbW9kZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTc1MS1cXHRhdGg5a19od19vcHMoYWgpLVxcdTAwM2VzcGVjdHJhbF9zY2FuX3RyaWdnZXIoYWgpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jPTc1Nj1pbnQgYXRoOWtfY21uX3NwZWN0cmFsX3NjYW5fY29uZmlnKHN0cnVjdCBhdGhfY29tbW9uICpjb21tb24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjc1NzpcXHRcXHRcXHQgICAgICAgc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy03NTgtXFx0XFx0XFx0ICAgICAgIGVudW0gc3BlY3RyYWxfbW9kZSBzcGVjdHJhbF9tb2RlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy03NTkte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo3NjA6XFx0c3RydWN0IGF0aF9odyAqYWggPSBzcGVjX3ByaXYtXFx1MDAzZWFoO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy03NjEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNzY4LVxcdGNhc2UgU1BFQ1RSQUxfRElTQUJMRUQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjc2OTpcXHRcXHRzcGVjX3ByaXYtXFx1MDAzZXNwZWNfY29uZmlnLmVuYWJsZWQgPSAwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy03NzAtXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNzc0LVxcdFxcdCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo3NzU6XFx0XFx0c3BlY19wcml2LVxcdTAwM2VzcGVjX2NvbmZpZy5lbmRsZXNzID0gMTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6Nzc2OlxcdFxcdHNwZWNfcHJpdi1cXHUwMDNlc3BlY19jb25maWcuZW5hYmxlZCA9IDE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTc3Ny1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy03NzktXFx0Y2FzZSBTUEVDVFJBTF9NQU5VQUw6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjc4MDpcXHRcXHRzcGVjX3ByaXYtXFx1MDAzZXNwZWNfY29uZmlnLmVuZGxlc3MgPSAwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo3ODE6XFx0XFx0c3BlY19wcml2LVxcdTAwM2VzcGVjX2NvbmZpZy5lbmFibGVkID0gMTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNzgyLVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTc4Ny1cXHRhdGhfcHNfb3BzKGNvbW1vbiktXFx1MDAzZXdha2V1cChjb21tb24pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo3ODg6XFx0YXRoOWtfaHdfb3BzKGFoKS1cXHUwMDNlc3BlY3RyYWxfc2Nhbl9jb25maWcoYWgsIFxcdTAwMjZzcGVjX3ByaXYtXFx1MDAzZXNwZWNfY29uZmlnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNzg5LVxcdGF0aF9wc19vcHMoY29tbW9uKS1cXHUwMDNlcmVzdG9yZShjb21tb24pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy03OTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjc5MTpcXHRzcGVjX3ByaXYtXFx1MDAzZXNwZWN0cmFsX21vZGUgPSBzcGVjdHJhbF9tb2RlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy03OTItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM9Nzk3PXN0YXRpYyBzc2l6ZV90IHdyaXRlX2ZpbGVfc3BlY19zY2FuX2N0bChzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy04MDAte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo4MDE6XFx0c3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2ID0gZmlsZS1cXHUwMDNlcHJpdmF0ZV9kYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo4MDI6XFx0c3RydWN0IGF0aF9jb21tb24gKmNvbW1vbiA9IGF0aDlrX2h3X2NvbW1vbihzcGVjX3ByaXYtXFx1MDAzZWFoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtODAzLVxcdGNoYXIgYnVmWzMyXTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy04MTUtXFx0aWYgKHN0cm5jbXAoXFxcInRyaWdnZXJcXFwiLCBidWYsIDcpID09IDApIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6ODE2OlxcdFxcdGF0aDlrX2Ntbl9zcGVjdHJhbF9zY2FuX3RyaWdnZXIoY29tbW9uLCBzcGVjX3ByaXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy04MTctXFx0fSBlbHNlIGlmIChzdHJuY21wKFxcXCJiYWNrZ3JvdW5kXFxcIiwgYnVmLCAxMCkgPT0gMCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo4MTg6XFx0XFx0YXRoOWtfY21uX3NwZWN0cmFsX3NjYW5fY29uZmlnKGNvbW1vbiwgc3BlY19wcml2LCBTUEVDVFJBTF9CQUNLR1JPVU5EKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtODE5LVxcdFxcdGF0aF9kYmcoY29tbW9uLCBDT05GSUcsIFxcXCJzcGVjdHJhbCBzY2FuOiBiYWNrZ3JvdW5kIG1vZGUgZW5hYmxlZFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTgyMC1cXHR9IGVsc2UgaWYgKHN0cm5jbXAoXFxcImNoYW5zY2FuXFxcIiwgYnVmLCA4KSA9PSAwKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjgyMTpcXHRcXHRhdGg5a19jbW5fc3BlY3RyYWxfc2Nhbl9jb25maWcoY29tbW9uLCBzcGVjX3ByaXYsIFNQRUNUUkFMX0NIQU5TQ0FOKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtODIyLVxcdFxcdGF0aF9kYmcoY29tbW9uLCBDT05GSUcsIFxcXCJzcGVjdHJhbCBzY2FuOiBjaGFubmVsIHNjYW4gbW9kZSBlbmFibGVkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtODIzLVxcdH0gZWxzZSBpZiAoc3RybmNtcChcXFwibWFudWFsXFxcIiwgYnVmLCA2KSA9PSAwKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjgyNDpcXHRcXHRhdGg5a19jbW5fc3BlY3RyYWxfc2Nhbl9jb25maWcoY29tbW9uLCBzcGVjX3ByaXYsIFNQRUNUUkFMX01BTlVBTCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTgyNS1cXHRcXHRhdGhfZGJnKGNvbW1vbiwgQ09ORklHLCBcXFwic3BlY3RyYWwgc2NhbjogbWFudWFsIG1vZGUgZW5hYmxlZFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTgyNi1cXHR9IGVsc2UgaWYgKHN0cm5jbXAoXFxcImRpc2FibGVcXFwiLCBidWYsIDcpID09IDApIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6ODI3OlxcdFxcdGF0aDlrX2Ntbl9zcGVjdHJhbF9zY2FuX2NvbmZpZyhjb21tb24sIHNwZWNfcHJpdiwgU1BFQ1RSQUxfRElTQUJMRUQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy04MjgtXFx0XFx0YXRoX2RiZyhjb21tb24sIENPTkZJRywgXFxcInNwZWN0cmFsIHNjYW46IGRpc2FibGVkXFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYz04NDg9c3RhdGljIHNzaXplX3QgcmVhZF9maWxlX3NwZWN0cmFsX3Nob3J0X3JlcGVhdChzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy04NTEte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo4NTI6XFx0c3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2ID0gZmlsZS1cXHUwMDNlcHJpdmF0ZV9kYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy04NTMtXFx0Y2hhciBidWZbMzJdO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTg1NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6ODU2OlxcdGxlbiA9IHNwcmludGYoYnVmLCBcXFwiJWRcXFxcblxcXCIsIHNwZWNfcHJpdi1cXHUwMDNlc3BlY19jb25maWcuc2hvcnRfcmVwZWF0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtODU3LVxcdHJldHVybiBzaW1wbGVfcmVhZF9mcm9tX2J1ZmZlcih1c2VyX2J1ZiwgY291bnQsIHBwb3MsIGJ1ZiwgbGVuKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYz04NjA9c3RhdGljIHNzaXplX3Qgd3JpdGVfZmlsZV9zcGVjdHJhbF9zaG9ydF9yZXBlYXQoc3RydWN0IGZpbGUgKmZpbGUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtODYzLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6ODY0OlxcdHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiA9IGZpbGUtXFx1MDAzZXByaXZhdGVfZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtODY1LVxcdHVuc2lnbmVkIGxvbmcgdmFsO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTg3NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6ODc1OlxcdHNwZWNfcHJpdi1cXHUwMDNlc3BlY19jb25maWcuc2hvcnRfcmVwZWF0ID0gdmFsO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy04NzYtXFx0cmV0dXJuIGNvdW50O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jPTg5MT1zdGF0aWMgc3NpemVfdCByZWFkX2ZpbGVfc3BlY3RyYWxfY291bnQoc3RydWN0IGZpbGUgKmZpbGUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtODk0LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6ODk1OlxcdHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiA9IGZpbGUtXFx1MDAzZXByaXZhdGVfZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtODk2LVxcdGNoYXIgYnVmWzMyXTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy04OTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjg5OTpcXHRsZW4gPSBzcHJpbnRmKGJ1ZiwgXFxcIiVkXFxcXG5cXFwiLCBzcGVjX3ByaXYtXFx1MDAzZXNwZWNfY29uZmlnLmNvdW50KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtOTAwLVxcdHJldHVybiBzaW1wbGVfcmVhZF9mcm9tX2J1ZmZlcih1c2VyX2J1ZiwgY291bnQsIHBwb3MsIGJ1ZiwgbGVuKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYz05MDM9c3RhdGljIHNzaXplX3Qgd3JpdGVfZmlsZV9zcGVjdHJhbF9jb3VudChzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy05MDYte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo5MDc6XFx0c3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2ID0gZmlsZS1cXHUwMDNlcHJpdmF0ZV9kYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy05MDgtXFx0dW5zaWduZWQgbG9uZyB2YWw7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtOTE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo5MTc6XFx0c3BlY19wcml2LVxcdTAwM2VzcGVjX2NvbmZpZy5jb3VudCA9IHZhbDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtOTE4LVxcdHJldHVybiBjb3VudDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYz05MzM9c3RhdGljIHNzaXplX3QgcmVhZF9maWxlX3NwZWN0cmFsX3BlcmlvZChzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy05MzYte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo5Mzc6XFx0c3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2ID0gZmlsZS1cXHUwMDNlcHJpdmF0ZV9kYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy05MzgtXFx0Y2hhciBidWZbMzJdO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTk0MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6OTQxOlxcdGxlbiA9IHNwcmludGYoYnVmLCBcXFwiJWRcXFxcblxcXCIsIHNwZWNfcHJpdi1cXHUwMDNlc3BlY19jb25maWcucGVyaW9kKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtOTQyLVxcdHJldHVybiBzaW1wbGVfcmVhZF9mcm9tX2J1ZmZlcih1c2VyX2J1ZiwgY291bnQsIHBwb3MsIGJ1ZiwgbGVuKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYz05NDU9c3RhdGljIHNzaXplX3Qgd3JpdGVfZmlsZV9zcGVjdHJhbF9wZXJpb2Qoc3RydWN0IGZpbGUgKmZpbGUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtOTQ4LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6OTQ5OlxcdHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiA9IGZpbGUtXFx1MDAzZXByaXZhdGVfZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtOTUwLVxcdHVuc2lnbmVkIGxvbmcgdmFsO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTk1OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6OTYwOlxcdHNwZWNfcHJpdi1cXHUwMDNlc3BlY19jb25maWcucGVyaW9kID0gdmFsO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy05NjEtXFx0cmV0dXJuIGNvdW50O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jPTk3Nj1zdGF0aWMgc3NpemVfdCByZWFkX2ZpbGVfc3BlY3RyYWxfZmZ0X3BlcmlvZChzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy05Nzkte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo5ODA6XFx0c3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2ID0gZmlsZS1cXHUwMDNlcHJpdmF0ZV9kYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy05ODEtXFx0Y2hhciBidWZbMzJdO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTk4My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6OTg0OlxcdGxlbiA9IHNwcmludGYoYnVmLCBcXFwiJWRcXFxcblxcXCIsIHNwZWNfcHJpdi1cXHUwMDNlc3BlY19jb25maWcuZmZ0X3BlcmlvZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTk4NS1cXHRyZXR1cm4gc2ltcGxlX3JlYWRfZnJvbV9idWZmZXIodXNlcl9idWYsIGNvdW50LCBwcG9zLCBidWYsIGxlbik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM9OTg4PXN0YXRpYyBzc2l6ZV90IHdyaXRlX2ZpbGVfc3BlY3RyYWxfZmZ0X3BlcmlvZChzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy05OTEte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo5OTI6XFx0c3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2ID0gZmlsZS1cXHUwMDNlcHJpdmF0ZV9kYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy05OTMtXFx0dW5zaWduZWQgbG9uZyB2YWw7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTAwMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6MTAwMzpcXHRzcGVjX3ByaXYtXFx1MDAzZXNwZWNfY29uZmlnLmZmdF9wZXJpb2QgPSB2YWw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTEwMDQtXFx0cmV0dXJuIGNvdW50O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jPTEwNDM9c3RhdGljIGNvbnN0IHN0cnVjdCByY2hhbl9jYWxsYmFja3MgcmZzX3NwZWNfc2Nhbl9jYiA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xMDUxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzoxMDUyOnZvaWQgYXRoOWtfY21uX3NwZWN0cmFsX2RlaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTEwNTMte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzoxMDU0OlxcdGlmIChzcGVjX3ByaXYtXFx1MDAzZXJmc19jaGFuX3NwZWNfc2Nhbikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzoxMDU1OlxcdFxcdHJlbGF5X2Nsb3NlKHNwZWNfcHJpdi1cXHUwMDNlcmZzX2NoYW5fc3BlY19zY2FuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6MTA1NjpcXHRcXHRzcGVjX3ByaXYtXFx1MDAzZXJmc19jaGFuX3NwZWNfc2NhbiA9IE5VTEw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTEwNTctXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jPTEwNTk9RVhQT1JUX1NZTUJPTChhdGg5a19jbW5fc3BlY3RyYWxfZGVpbml0X2RlYnVnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTA2MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6MTA2MTp2b2lkIGF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTA2Mi1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX3BoeSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xMDY0LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6MTA2NTpcXHRzcGVjX3ByaXYtXFx1MDAzZXJ4X3N0YXRzID0gcnhfc3RhdHM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjEwNjY6XFx0c3BlY19wcml2LVxcdTAwM2VyZnNfY2hhbl9zcGVjX3NjYW4gPSByZWxheV9vcGVuKFxcXCJzcGVjdHJhbF9zY2FuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTA2Ny1cXHRcXHRcXHRcXHRcXHQgICAgZGVidWdmc19waHksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTA2OS1cXHRcXHRcXHRcXHRcXHQgICAgTlVMTCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjEwNzA6XFx0aWYgKCFzcGVjX3ByaXYtXFx1MDAzZXJmc19jaGFuX3NwZWNfc2NhbilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTA3MS1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTA3NC1cXHRcXHRcXHQgICAgMDYwMCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6MTA3NTpcXHRcXHRcXHQgICAgZGVidWdmc19waHksIHNwZWNfcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTA3Ni1cXHRcXHRcXHQgICAgXFx1MDAyNmZvcHNfc3BlY19zY2FuX2N0bCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTA3OC1cXHRcXHRcXHQgICAgMDYwMCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6MTA3OTpcXHRcXHRcXHQgICAgZGVidWdmc19waHksIHNwZWNfcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTA4MC1cXHRcXHRcXHQgICAgXFx1MDAyNmZvcHNfc3BlY3RyYWxfc2hvcnRfcmVwZWF0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xMDgyLVxcdFxcdFxcdCAgICAwNjAwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzoxMDgzOlxcdFxcdFxcdCAgICBkZWJ1Z2ZzX3BoeSwgc3BlY19wcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xMDg0LVxcdFxcdFxcdCAgICBcXHUwMDI2Zm9wc19zcGVjdHJhbF9jb3VudCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTA4Ni1cXHRcXHRcXHQgICAgMDYwMCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6MTA4NzpcXHRcXHRcXHQgICAgZGVidWdmc19waHksIHNwZWNfcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTA4OC1cXHRcXHRcXHQgICAgXFx1MDAyNmZvcHNfc3BlY3RyYWxfcGVyaW9kKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xMDkwLVxcdFxcdFxcdCAgICAwNjAwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzoxMDkxOlxcdFxcdFxcdCAgICBkZWJ1Z2ZzX3BoeSwgc3BlY19wcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xMDkyLVxcdFxcdFxcdCAgICBcXHUwMDI2Zm9wc19zcGVjdHJhbF9mZnRfcGVyaW9kKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaD0xNzA9c3RhdGljIGlubGluZSB1OCBzcGVjdHJhbF9iaXRtYXBfd2VpZ2h0KHU4ICpiaW5zKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oLTE3NS0jaWZkZWYgQ09ORklHX0FUSDlLX0NPTU1PTl9TUEVDVFJBTFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaDoxNzY6dm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oLTE3Ny1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX3BoeSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmgtMTc4LVxcdFxcdFxcdFxcdCAgIHN0cnVjdCBhdGhfcnhfc3RhdHMgKnJ4X3N0YXRzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmg6MTc5OnZvaWQgYXRoOWtfY21uX3NwZWN0cmFsX2RlaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaC0xODAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oPTE4MT12b2lkIGF0aDlrX2Ntbl9zcGVjdHJhbF9zY2FuX3RyaWdnZXIoc3RydWN0IGF0aF9jb21tb24gKmNvbW1vbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmg6MTgyOlxcdFxcdFxcdFxcdCBzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaC0xODMtaW50IGF0aDlrX2Ntbl9zcGVjdHJhbF9zY2FuX2NvbmZpZyhzdHJ1Y3QgYXRoX2NvbW1vbiAqY29tbW9uLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaDoxODQ6XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmgtMTg1LVxcdFxcdFxcdCAgICAgICBlbnVtIHNwZWN0cmFsX21vZGUgc3BlY3RyYWxfbW9kZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oOjE4NjppbnQgYXRoX2Ntbl9wcm9jZXNzX2ZmdChzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsIHN0cnVjdCBpZWVlODAyMTFfaGRyICpoZHIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oLTE4Ny1cXHRcXHQgICAgc3RydWN0IGF0aF9yeF9zdGF0dXMgKnJzLCB1NjQgdHNmKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmgtMTg4LSNlbHNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oOjE4OTpzdGF0aWMgaW5saW5lIHZvaWQgYXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaC0xOTAtXFx0XFx0XFx0XFx0XFx0XFx0IHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcGh5LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oLTE5NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmg6MTk1OnN0YXRpYyBpbmxpbmUgdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfZGVpbml0X2RlYnVnKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmgtMTk2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaD0xOTk9c3RhdGljIGlubGluZSB2b2lkIGF0aDlrX2Ntbl9zcGVjdHJhbF9zY2FuX3RyaWdnZXIoc3RydWN0IGF0aF9jb21tb24gKmNvbW1vbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmg6MjAwOlxcdFxcdFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmgtMjAxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaC0yMDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oOjIwNDpzdGF0aWMgaW5saW5lIGludCBhdGhfY21uX3Byb2Nlc3NfZmZ0KHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmgtMjA1LVxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBpZWVlODAyMTFfaGRyICpoZHIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGVidWcuYz0xMzcyPXZvaWQgYXRoOWtfZGVpbml0X2RlYnVnKHN0cnVjdCBhdGhfc29mdGMgKnNjKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZWJ1Zy5jLTEzNzMte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZWJ1Zy5jOjEzNzQ6XFx0YXRoOWtfY21uX3NwZWN0cmFsX2RlaW5pdF9kZWJ1ZyhcXHUwMDI2c2MtXFx1MDAzZXNwZWNfcHJpdik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2RlYnVnLmMtMTM3NS19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGVidWcuYz0xMzc3PWludCBhdGg5a19pbml0X2RlYnVnKHN0cnVjdCBhdGhfaHcgKmFoKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2RlYnVnLmMtMTM5MS1cXHRhdGg5a190eDk5X2luaXRfZGVidWcoc2MpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZWJ1Zy5jOjEzOTI6XFx0YXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoXFx1MDAyNnNjLVxcdTAwM2VzcGVjX3ByaXYsIHNjLVxcdTAwM2VkZWJ1Zy5kZWJ1Z2ZzX3BoeSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGVidWcuYy0xMzkzLVxcdFxcdFxcdFxcdCAgICAgIFxcdTAwMjZzYy1cXHUwMDNlZGVidWcuc3RhdHMucnhzdGF0cyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9NDU2PXN0cnVjdCBhdGg5a19odGNfcHJpdiB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNDk2LVxcdHN0cnVjdCBhdGg5a19od19jYWxfZGF0YSBjYWxkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo0OTc6XFx0c3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiBzcGVjX3ByaXY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTQ5OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM9NDc3PXZvaWQgYXRoOWtfaHRjX2RlaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYy00Nzgte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM6NDc5OlxcdGF0aDlrX2Ntbl9zcGVjdHJhbF9kZWluaXRfZGVidWcoXFx1MDAyNnByaXYtXFx1MDAzZXNwZWNfcHJpdik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYy00ODAtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYz00ODI9aW50IGF0aDlrX2h0Y19pbml0X2RlYnVnKHN0cnVjdCBhdGhfaHcgKmFoKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYy00ODktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYzo0OTA6XFx0YXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoXFx1MDAyNnByaXYtXFx1MDAzZXNwZWNfcHJpdiwgcHJpdi1cXHUwMDNlZGVidWcuZGVidWdmc19waHksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYy00OTEtXFx0XFx0XFx0XFx0ICAgICAgXFx1MDAyNnByaXYtXFx1MDAzZWRlYnVnLnJ4X3N0YXRzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYz01ODg9c3RhdGljIHZvaWQgYXRoOWtfaW5pdF9taXNjKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy01OTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jOjU5NzpcXHRwcml2LVxcdTAwM2VzcGVjX3ByaXYuYWggPSBwcml2LVxcdTAwM2VhaDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM6NTk4OlxcdHByaXYtXFx1MDAzZXNwZWNfcHJpdi5zcGVjX2NvbmZpZy5lbmFibGVkID0gMDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM6NTk5OlxcdHByaXYtXFx1MDAzZXNwZWNfcHJpdi5zcGVjX2NvbmZpZy5zaG9ydF9yZXBlYXQgPSB0cnVlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYzo2MDA6XFx0cHJpdi1cXHUwMDNlc3BlY19wcml2LnNwZWNfY29uZmlnLmNvdW50ID0gODtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM6NjAxOlxcdHByaXYtXFx1MDAzZXNwZWNfcHJpdi5zcGVjX2NvbmZpZy5lbmRsZXNzID0gZmFsc2U7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jOjYwMjpcXHRwcml2LVxcdTAwM2VzcGVjX3ByaXYuc3BlY19jb25maWcucGVyaW9kID0gMHgxMjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM6NjAzOlxcdHByaXYtXFx1MDAzZXNwZWNfcHJpdi5zcGVjX2NvbmZpZy5mZnRfcGVyaW9kID0gMHgwMjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmMtNjA0LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYz0yNDA9c3RhdGljIGludCBhdGg5a19odGNfc2V0X2NoYW5uZWwoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTMxNS1cXHRpZiAodGVzdF9iaXQoQVRIX09QX1NDQU5OSU5HLCBcXHUwMDI2Y29tbW9uLVxcdTAwM2VvcF9mbGFncykgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6MzE2OlxcdFxcdCAgICAgcHJpdi1cXHUwMDNlc3BlY19wcml2LnNwZWN0cmFsX21vZGUgPT0gU1BFQ1RSQUxfQ0hBTlNDQU4pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjMxNzpcXHRcXHRhdGg5a19jbW5fc3BlY3RyYWxfc2Nhbl90cmlnZ2VyKGNvbW1vbiwgXFx1MDAyNnByaXYtXFx1MDAzZXNwZWNfcHJpdik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTMxOC1lcnI6XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9OTcyPXN0YXRpYyBib29sIGF0aDlrX3J4X3ByZXBhcmUoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTEwNDctXFx0XFx0LyogVE9ETzogTm90IHVzaW5nIERGUyBwcm9jZXNzaW5nIG5vdy4gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6MTA0ODpcXHRcXHRpZiAoYXRoX2Ntbl9wcm9jZXNzX2ZmdChcXHUwMDI2cHJpdi1cXHUwMDNlc3BlY19wcml2LCBoZHIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTEwNDktXFx0XFx0XFx0XFx0ICAgIFxcdTAwMjZyeF9zdGF0cywgcnhfc3RhdHVzLVxcdTAwM2VtYWN0aW1lKSkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYz00MjA9c3RhdGljIHZvaWQgYXRoOWtfaW5pdF9taXNjKHN0cnVjdCBhdGhfc29mdGMgKnNjKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYy00MzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYzo0Mzc6XFx0c2MtXFx1MDAzZXNwZWNfcHJpdi5haCA9IHNjLVxcdTAwM2VzY19haDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jOjQzODpcXHRzYy1cXHUwMDNlc3BlY19wcml2LnNwZWNfY29uZmlnLmVuYWJsZWQgPSAwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmM6NDM5OlxcdHNjLVxcdTAwM2VzcGVjX3ByaXYuc3BlY19jb25maWcuc2hvcnRfcmVwZWF0ID0gdHJ1ZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jOjQ0MDpcXHRzYy1cXHUwMDNlc3BlY19wcml2LnNwZWNfY29uZmlnLmNvdW50ID0gODtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jOjQ0MTpcXHRzYy1cXHUwMDNlc3BlY19wcml2LnNwZWNfY29uZmlnLmVuZGxlc3MgPSBmYWxzZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jOjQ0MjpcXHRzYy1cXHUwMDNlc3BlY19wcml2LnNwZWNfY29uZmlnLnBlcmlvZCA9IDB4RkY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYzo0NDM6XFx0c2MtXFx1MDAzZXNwZWNfcHJpdi5zcGVjX2NvbmZpZy5mZnRfcGVyaW9kID0gMHhGO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmMtNDQ0LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9yZWN2LmM9ODA2PXN0YXRpYyBpbnQgYXRoOWtfcnhfc2tiX3ByZXByb2Nlc3Moc3RydWN0IGF0aF9zb2Z0YyAqc2MsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvcmVjdi5jLTg4Mi1cXHRcXHRcXHRcXHRcXHRcXHQgcnhfc3RhdHVzLVxcdTAwM2VtYWN0aW1lKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvcmVjdi5jOjg4MzpcXHRcXHR9IGVsc2UgaWYgKHNjLVxcdTAwM2VzcGVjX3ByaXYuc3BlY3RyYWxfbW9kZSAhPSBTUEVDVFJBTF9ESVNBQkxFRCBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9yZWN2LmM6ODg0OlxcdFxcdFxcdCAgIGF0aF9jbW5fcHJvY2Vzc19mZnQoXFx1MDAyNnNjLVxcdTAwM2VzcGVjX3ByaXYsIGhkciwgcnhfc3RhdHMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3JlY3YuYy04ODUtXFx0XFx0XFx0XFx0XFx0ICAgICAgIHJ4X3N0YXR1cy1cXHUwMDNlbWFjdGltZSkpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMDE6MDM6MjkuNjk1NTEwNzAyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTQ3NDg5MDYxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBDcml0aWNhbCBCdWcgaW4gdGhlIGF0aDlrX2h0YyBXaXJlbGVzcyBEcml2ZXIqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEknbSBsb29raW5nIGF0IGBhdGg5a19odGNgLCB3aGljaCBpcyBhIFVTQi1iYXNlZCB3aXJlbGVzcyBkcml2ZXIgdGhhdCB1c2VzIEhUQy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBwYXRjaCB0aG9yb3VnaGx5LlxuXG5Jbml0aWFsbHksIGluIHRoZSBgYXRoX2Ntbl9wcm9jZXNzX2ZmdGAgZnVuY3Rpb24sIGJlZm9yZSB0aGlzIHBhdGNoLCB0aGVyZSB3YXMgYSBtYWpvciBpc3N1ZS4gSW5zaWRlIHRoYXQgZnVuY3Rpb24sIHRoZSBjb2RlIHdhcyBhc3N1bWluZyBgY29tbW9uLVx1MDAzZXByaXZgIHdhcyBhIGBzdHJ1Y3QgYXRoX3NvZnRjYCwgd2hpY2ggaXMgdGhlIHN0cnVjdHVyZSB1c2VkIGluIHRoZSBvcmlnaW5hbCBgYXRoOWtgIFBDSS9BSEIgZHJpdmVyLiBCdXQsIGFuZCB0aGlzIGlzIHRoZSBjcnV4IG9mIGl0LCBgYXRoOWtfaHRjYCB1c2VzIGEgZGlmZmVyZW50IHByaXZhdGUgZGF0YSBzdHJ1Y3R1cmUsIHNvbWV0aGluZyBsaWtlIGBzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKmAuIFRoaXMgbWVhbnMgdGhhdCB3aGVuIGBhdGg5a19odGNgIGNhbGxlZCBgYXRoX2Ntbl9wcm9jZXNzX2ZmdGAsIGl0IHdhcyBlZmZlY3RpdmVseSBjYXN0aW5nIGEgYGF0aDlrX2h0Y19wcml2ICpgIHRvIGEgYGF0aF9zb2Z0YyAqYC5cblxuVGhpcyBpcyBhIHNlcmlvdXMgcHJvYmxlbS4gSW5zaWRlIGBhdGg5a2AsIGBSWF9TVEFUX0lOQ2AgYWNjZXNzZXMgYHNjLVx1MDAzZWRlYnVnLnN0YXRzLnJ4c3RhdHMucnhfc3BlY3RyYWxfc2FtcGxlX2dvb2RgIGV0Yy4gQnV0IGBzdHJ1Y3QgYXRoOWtfaHRjX3ByaXZgIGhhcyBhIGNvbXBsZXRlbHkgZGlmZmVyZW50IG1lbW9yeSBsYXlvdXQhIFNvLCBwcmV2aW91c2x5LCBjYWxsaW5nIGBhdGhfY21uX3Byb2Nlc3NfZmZ0YCBpbiB0aGUgYGF0aDlrX2h0Y2AgZHJpdmVyIHdhcyBlaXRoZXIgY29ycnVwdGluZyBtZW1vcnkgb3IgYWNjZXNzaW5nIGVudGlyZWx5IHRoZSB3cm9uZyBtZW1vcnkgb2Zmc2V0cy4gVGhpcyBjb3VsZCBsZWFkIHRvIGEgdmFyaWV0eSBvZiBpc3N1ZXMsIGZyb20gc3VidGxlIGRhdGEgY29ycnVwdGlvbiB0byBvdXRyaWdodCBjcmFzaGVzLCBkZXBlbmRpbmcgb24gd2hhdCBkYXRhIHdhcyBiZWluZyBvdmVyd3JpdHRlbiBvciByZWFkLlxuXG5UaGlzIHBhdGNoIGFkZHJlc3NlcyB0aGlzIGJ5IGRpcmVjdGx5IHBhc3NpbmcgdGhlIGByeF9zdGF0c2AgcG9pbnRlciBpbiBgYXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWdgLCBzdG9yaW5nIGl0IGluIGBzcGVjX3ByaXYtXHUwMDNlcnhfc3RhdHNgLCBhbmQgdGhlbiBpbmNyZW1lbnRpbmcgdGhlIGByeF9zdGF0cy1cdTAwM2VyeF9zcGVjdHJhbF9zYW1wbGVfZ29vZGAgYW5kIGByeF9zdGF0cy1cdTAwM2VyeF9zcGVjdHJhbF9zYW1wbGVfZXJyYCBjb3VudGVycyBjb3JyZWN0bHkgdGhyb3VnaCBgYXRoX2Ntbl9jb3VudF9mZnRfc2FtcGxlKClgLiBBIGRpcmVjdCBmaXgsIGF2b2lkaW5nIHRoZSBpbmNvcnJlY3QgY2FzdC5cblxuTm93LCBsZXQncyB0aGluayBhYm91dCByZWFjaGFiaWxpdHkuIEkgbmVlZCB0byBkZXRlcm1pbmUgaG93IGVhc2lseSB0aGlzIGJ1ZyBjb3VsZCBiZSB0cmlnZ2VyZWQgdXNpbmcgdG9vbHMgbGlrZSBRRU1VIG9yIFN5emthbGxlci4gYGF0aDlrX2h0Y2AgaXMsIGFmdGVyIGFsbCwgYSBVU0IgZGV2aWNlIGRyaXZlci4gSSBzZWUgdGhlIFVTQiBJRCB0YWJsZSByaWdodCB0aGVyZSBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuY2AuIFN5emthbGxlciBzaG91bGQgYmUgYWJsZSB0byByZWFjaCB0aGlzIGRyaXZlciB2aWEgZWl0aGVyIGBzeXpfdXNiX2Nvbm5lY3RgIG9yIGRpcmVjdCBVU0IgZW11bGF0aW9uLCBwb3RlbnRpYWxseSBleHBvc2luZyB0aGlzIG1lbW9yeSBjb3JydXB0aW9uIGJ1Zy4gQWxzbywgSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBkZWJ1Z2ZzIGludGVyZmFjZSB0aGF0J3MgcHJlc2VudCBpbiBhdGg5ayBmb3Igc3BlY3RyYWwgc2Nhbi4gRGVidWdmcyBmaWxlIG9wZXJhdGlvbnMgbGlrZSBgd3JpdGVfZmlsZV9zcGVjX3NjYW5fY3RsYCwgYHNwZWN0cmFsX3NjYW5gLCBhbmQgZXZlbiBwcm9jZXNzaW5nIFJYIGZyYW1lcyB1c2luZyBgYXRoOWtfcnhfcHJlcGFyZWAgY291bGQgcHJvdmlkZSBhbm90aGVyIGVudHJ5IHBvaW50LlxuXG5GaW5hbGx5LCBJIG5lZWQgdG8gY2hlY2sgdGhlIEtjb25maWcgb3B0aW9ucywgc3BlY2lmaWNhbGx5IHRob3NlIHJlbGF0ZWQgdG8gQVRIOUtfSFRDLCBBVEg5S19DT01NT05fU1BFQ1RSQUwgYW5kIEFUSDlLX0hUQ19ERUJVR0ZTLCBvdmVyIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZ2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgZGVidWcgZmVhdHVyZXMgYXJlIGVuYWJsZWQsIGFuZCB0aGVyZWZvcmUgaG93IGV4cG9zZWQgdGhpcyBidWcgaXMgaW4gZGlmZmVyZW50IGtlcm5lbCBjb25maWd1cmF0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk4NDMsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMDE6MDM6MzUuMTcwNDA0NDIxWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIwNDgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE3MCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE3MDpcXHRcXHQgIElmIHVuc3VyZSBzYXkgTi5cXG4gMTcxOlxcdFxcbiAxNzI6XFx0Y29uZmlnIEFUSDlLX0hUQ1xcbiAxNzM6XFx0XFx0dHJpc3RhdGUgXFxcIkF0aGVyb3MgSFRDIGJhc2VkIHdpcmVsZXNzIGNhcmRzIHN1cHBvcnRcXFwiXFxuIDE3NDpcXHRcXHRkZXBlbmRzIG9uIFVTQiBcXHUwMDI2XFx1MDAyNiBNQUM4MDIxMVxcbiAxNzU6XFx0XFx0c2VsZWN0IE1BQzgwMjExX0xFRFMgaWYgTEVEU19DTEFTUz15IHx8IExFRFNfQ0xBU1M9TUFDODAyMTFcXG4gMTc2OlxcdFxcdHNlbGVjdCBBVEg5S19IV1xcbiAxNzc6XFx0XFx0c2VsZWN0IEFUSDlLX0NPTU1PTlxcbiAxNzg6XFx0XFx0aGVscFxcbiAxNzk6XFx0XFx0ICBTdXBwb3J0IGZvciBBdGhlcm9zIEhUQyBiYXNlZCBjYXJkcy5cXG4gMTgwOlxcdFxcdCAgQ2hpcHNldHMgc3VwcG9ydGVkOiBBUjkyNzFcXG4gMTgxOlxcdFxcbiAxODI6XFx0XFx0ICBGb3IgbW9yZSBpbmZvcm1hdGlvbjpcXG4gMTgzOlxcdFxcdCAgaHR0cHM6Ly93aXJlbGVzcy53aWtpLmtlcm5lbC5vcmcvZW4vdXNlcnMvRHJpdmVycy9hdGg5a19odGNcXG4gMTg0OlxcdFxcbiAxODU6XFx0XFx0ICBUaGUgYnVpbHQgbW9kdWxlIHdpbGwgYmUgYXRoOWtfaHRjLlxcbiAxODY6XFx0XFxuIDE4NzpcXHRjb25maWcgQVRIOUtfSFRDX0RFQlVHRlNcXG4gMTg4OlxcdFxcdGJvb2wgXFxcIkF0aGVyb3MgYXRoOWtfaHRjIGRlYnVnZ2luZ1xcXCJcXG4gMTg5OlxcdFxcdGRlcGVuZHMgb24gQVRIOUtfSFRDIFxcdTAwMjZcXHUwMDI2IERFQlVHX0ZTXFxuIDE5MDpcXHRcXHRzZWxlY3QgQVRIOUtfQ09NTU9OX0RFQlVHXFxuIDE5MTpcXHRcXHRoZWxwXFxuIDE5MjpcXHRcXHQgIFNheSBZLCBpZiB5b3UgbmVlZCBhY2Nlc3MgdG8gYXRoOWtfaHRjJ3Mgc3RhdGlzdGljcy5cXG4gMTkzOlxcdFxcdCAgQXMgd2VsbCBhcyBhY2Nlc3MgdG8gdGhlIEZGVC9zcGVjdHJhbCBkYXRhLlxcbiAxOTQ6XFx0XFxuIDE5NTpcXHRjb25maWcgQVRIOUtfSFdSTkdcXG4gMTk2OlxcdFxcdGJvb2wgXFxcIlJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yIHN1cHBvcnRcXFwiXFxuIDE5NzpcXHRcXHRkZXBlbmRzIG9uIEFUSDlLIFxcdTAwMjZcXHUwMDI2IChIV19SQU5ET00gPSB5IHx8IEhXX1JBTkRPTSA9IEFUSDlLKVxcbiAxOTg6XFx0XFx0ZGVmYXVsdCBuXFxuIDE5OTpcXHRcXHRoZWxwXFxuIDIwMDpcXHRcXHQgIFRoaXMgb3B0aW9uIGluY29ycG9yYXRlcyB0aGUgQURDIHJlZ2lzdGVyIG91dHB1dCBhcyBhIHNvdXJjZSBvZlxcbiAyMDE6XFx0XFx0ICByYW5kb21uZXNzIGludG8gTGludXggZW50cm9weSBwb29sICgvZGV2L3VyYW5kb20gYW5kIC9kZXYvcmFuZG9tKVxcbiAyMDI6XFx0XFxuIDIwMzpcXHRcXHQgIFNheSBZLCBmZWVkcyB0aGUgZW50cm9weSBkaXJlY3RseSBmcm9tIHRoZSBXaUZpIGRyaXZlciB0byB0aGUgaW5wdXRcXG4gMjA0OlxcdFxcdCAgcG9vbC5cXG4gMjA1OlxcdFxcbiAyMDY6XFx0Y29uZmlnIEFUSDlLX0NPTU1PTl9TUEVDVFJBTFxcbiAyMDc6XFx0XFx0Ym9vbCBcXFwiQXRoZXJvcyBhdGg5ay9hdGg5a19odGMgc3BlY3RyYWwgc2NhbiBzdXBwb3J0XFxcIlxcbiAyMDg6XFx0XFx0ZGVwZW5kcyBvbiBBVEg5S19ERUJVR0ZTIHx8IEFUSDlLX0hUQ19ERUJVR0ZTXFxuIDIwOTpcXHRcXHRzZWxlY3QgUkVMQVlcXG4gMjEwOlxcdFxcdGRlZmF1bHQgblxcbiAyMTE6XFx0XFx0aGVscFxcbiAyMTI6XFx0XFx0ICBTYXkgWSB0byBlbmFibGUgYWNjZXNzIHRvIHRoZSBGRlQvc3BlY3RyYWwgZGF0YSB2aWEgZGVidWdmcy5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMDE6MDM6MzUuMTcwNTI2OTIxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTc5NTUwNDIxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgYEFUSDlLX0RFQlVHRlNgIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcsIHdoZXJlIHNob3VsZCBJIHN0YXJ0IGxvb2tpbmcgdG8gdW5kZXJzdGFuZCBvciBtb2RpZnkgdGhlIGRlYnVnIG9wdGlvbnMgZm9yIGF0aDlrPyBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZ28gc3RyYWlnaHQgdG8gdGhlIGNvbmZpZ3VyYXRpb24gZmlsZXMuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGNoZWNrIHRoZSBgS2NvbmZpZ2AgZmlsZSB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYCBkaXJlY3RvcnkuIFRoYXQncyB0aGUgbG9naWNhbCBwbGFjZSB0byBzZWUgaWYgYEFUSDlLX0RFQlVHRlNgIGlzIGRlZmluZWQsIHdoYXQgaXQgZG9lcywgYW5kIGhvdyBpdOKAmXMgY29uZmlndXJlZC4gSSdtIGFzc3VtaW5nIHRoYXQncyB3aGVyZSBJIGNhbiB0b2dnbGUgaXQgb24gb3Igb2ZmIG9yIHNlZSBvdGhlciBkZXBlbmRlbmNpZXMsIG9wdGlvbnMsIG9yIGhlbHAgdGV4dCByZWxhdGVkIHRvIHRoZSBkZWJ1ZyBmaWxlc3lzdGVtIGludGVyZmFjZSBmb3IgdGhhdCBwYXJ0aWN1bGFyIGF0aDlrIGRyaXZlci4gSXQncyB0aGUgc3RhbmRhcmQgcGxhY2UgdG8gZGVmaW5lIHRoZXNlIGtpbmRzIG9mIGZlYXR1cmVzIHdpdGhpbiBhIGtlcm5lbCBtb2R1bGUsIHNvIGl0IG1ha2VzIHNlbnNlIHRvIHN0YXJ0IHRoZXJlIGFuZCBzZWUgd2hhdCdzIHdoYXQuIExldCdzIGRpZyBpbiBhbmQgc2VlIHdoYXQgdGhlIGJ1aWxkIHN5c3RlbSByZXZlYWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTg4MCwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMDE6MDM6MzYuOTY2MDM0NDk5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMDUyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMzAsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxMzA6XFx0XFx0ICBDdXJyZW50bHksIEFSOTQ2MiBpcyBzdXBwb3J0ZWQuXFxuIDEzMTpcXHRcXG4gMTMyOlxcdGNvbmZpZyBBVEg5S19SRktJTExcXG4gMTMzOlxcdFxcdGJvb2wgXFxcIkF0aGVyb3MgYXRoOWsgcmZraWxsIHN1cHBvcnRcXFwiIGlmIEVYUEVSVFxcbiAxMzQ6XFx0XFx0ZGVwZW5kcyBvbiBBVEg5S1xcbiAxMzU6XFx0XFx0ZGVwZW5kcyBvbiBSRktJTEw9eSB8fCBSRktJTEw9QVRIOUtcXG4gMTM2OlxcdFxcdGRlZmF1bHQgeVxcbiAxMzc6XFx0XFx0aGVscFxcbiAxMzg6XFx0XFx0ICBTYXkgWSB0byBoYXZlIGF0aDlrIHBvbGwgdGhlIFJGLUtpbGwgR1BJTyBldmVyeSBjb3VwbGUgb2ZcXG4gMTM5OlxcdFxcdCAgc2Vjb25kcy4gVHVybiBvZmYgdG8gc2F2ZSBwb3dlciwgYnV0IGVuYWJsZSBpdCBpZiB5b3UgaGF2ZVxcbiAxNDA6XFx0XFx0ICBhIHBsYXRmb3JtIHRoYXQgY2FuIHRvZ2dsZSB0aGUgUkYtS2lsbCBHUElPLlxcbiAxNDE6XFx0XFxuIDE0MjpcXHRjb25maWcgQVRIOUtfQ0hBTk5FTF9DT05URVhUXFxuIDE0MzpcXHRcXHRib29sIFxcXCJDaGFubmVsIENvbnRleHQgc3VwcG9ydFxcXCJcXG4gMTQ0OlxcdFxcdGRlcGVuZHMgb24gQVRIOUtcXG4gMTQ1OlxcdFxcdGRlZmF1bHQgblxcbiAxNDY6XFx0XFx0aGVscFxcbiAxNDc6XFx0XFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIGNoYW5uZWwgY29udGV4dCBzdXBwb3J0IGluIGF0aDlrLCB3aGljaCBpcyBuZWVkZWRcXG4gMTQ4OlxcdFxcdCAgZm9yIG11bHRpLWNoYW5uZWwgY29uY3VycmVuY3kuIEVuYWJsZSB0aGlzIGlmIFAyUCBQb3dlclNhdmUgc3VwcG9ydFxcbiAxNDk6XFx0XFx0ICBpcyByZXF1aXJlZC5cXG4gMTUwOlxcdFxcbiAxNTE6XFx0Y29uZmlnIEFUSDlLX1BDT0VNXFxuIDE1MjpcXHRcXHRib29sIFxcXCJBdGhlcm9zIGF0aDlrIHN1cHBvcnQgZm9yIFBDIE9FTSBjYXJkc1xcXCIgaWYgRVhQRVJUXFxuIDE1MzpcXHRcXHRkZXBlbmRzIG9uIEFUSDlLXFxuIDE1NDpcXHRcXHRkZWZhdWx0IHlcXG4gMTU1OlxcdFxcbiAxNTY6XFx0Y29uZmlnIEFUSDlLX1BDSV9OT19FRVBST01cXG4gMTU3OlxcdFxcdHRyaXN0YXRlIFxcXCJBdGhlcm9zIGF0aDlrIHBjaSBsb2FkZXIgZm9yIEVFUFJPTS1sZXNzIGNoaXBzXFxcIlxcbiAxNTg6XFx0XFx0ZGVwZW5kcyBvbiBBVEg5S19QQ0lcXG4gMTU5OlxcdFxcdGRlZmF1bHQgblxcbiAxNjA6XFx0XFx0aGVscFxcbiAxNjE6XFx0XFx0ICBUaGlzIHNlcGFyYXRlIGRyaXZlciBwcm92aWRlcyBhIGxvYWRlciBpbiBvcmRlciB0byBzdXBwb3J0IHRoZVxcbiAxNjI6XFx0XFx0ICBBUjUwMFggdG8gQVI5MlhYLWdlbmVyYXRpb24gb2YgYXRoOWsgUENJKGUpIFdpRmkgY2hpcHMsIHdoaWNoIGhhdmVcXG4gMTYzOlxcdFxcdCAgdGhlaXIgaW5pdGlhbGl6YXRpb24gZGF0YSAod2hpY2ggY29udGFpbnMgdGhlIHJlYWwgUENJIERldmljZSBJRFxcbiAxNjQ6XFx0XFx0ICB0aGF0IGF0aDlrIHdpbGwgbmVlZCkgc3RvcmVkIHRvZ2V0aGVyIHdpdGggdGhlIGNhbGlicmF0aW9uIGRhdGEgb3V0XFxuIDE2NTpcXHRcXHQgIG9mIHJlYWNoIGZvciB0aGUgYXRoOWsgY2hpcC5cXG4gMTY2OlxcdFxcbiAxNjc6XFx0XFx0ICBUaGVzZSBkZXZpY2VzIGFyZSB1c3VhbGx5IHZhcmlvdXMgbmV0d29yayBhcHBsaWFuY2VzLCByb3V0ZXJzIG9yXFxuIDE2ODpcXHRcXHQgIGFjY2VzcyBQb2ludHMgYW5kIHN1Y2guXFxuIDE2OTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMDE6MDM6MzYuOTY2MTM4MTg4WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI5NDA3NzQ3NjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqVHJhY2luZyBEb3duIEFUSDlLX0RFQlVHRlMqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSBgQVRIOUtfREVCVUdGU2AgaXMgZGVmaW5lZC4gVGhpcyBpcyBsaWtlbHkgYSBwcmVwcm9jZXNzb3IgbWFjcm8sIGdpdmVuIHRoZSBhbGwtY2FwcyBuYW1pbmcgY29udmVudGlvbiwgYW5kIHByb2JhYmx5IHJlbGF0ZWQgdG8gZGVidWcgZnVuY3Rpb25hbGl0aWVzIHdpdGhpbiB0aGUgYXRoOWsgd2lyZWxlc3MgZHJpdmVyLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byB1c2UgbXkgcHJlZmVycmVkIHRvb2xzIGZvciB0aGlzIOKAkyBgZ3JlcGAsIGBmaW5kYCwgb3IgbWF5YmUgZXZlbiBhIG1vcmUgc29waGlzdGljYXRlZCBJREUtaW50ZWdyYXRlZCBzZWFyY2ggaWYgSSBoYXZlIHRoZSBwcm9qZWN0IGxvYWRlZC4gSSdtIGdvaW5nIHRvIHN0YXJ0IHdpdGggdGhlIG9idmlvdXM6IHRoZSBrZXJuZWwgc291cmNlIHRyZWUuIEknbGwgbmVlZCB0byByZW1lbWJlciB3aGVyZSB0aGF0J3MgbW91bnRlZCwgcHJvYmFibHkgYC91c3Ivc3JjL2xpbnV4YCBvciBzb21ldGhpbmcgc2ltaWxhciwgZGVwZW5kaW5nIG9uIG15IHN5c3RlbSBzZXR1cC4gVGhlbiBpdCdzIGEgbWF0dGVyIG9mIGNyYWZ0aW5nIHRoZSByaWdodCBzZWFyY2ggcXVlcnkuIEknbGwgc3RhcnQgd2l0aCBzb21ldGhpbmcgc2ltcGxlIGxpa2UgYGdyZXAgLXIgXCJBVEg5S19ERUJVR0ZTXCIgL3Vzci9zcmMvbGludXhgIGFuZCBzZWUgd2hhdCB0aGF0IHR1cm5zIHVwLiBJZiB0aGF0J3MgdG9vIGJyb2FkLCBJJ2xsIHJlZmluZSBpdCB3aXRoIHNvbWUgY29udGV4dCBjbHVlcy4gTWF5YmUgYWRkaW5nIGBpbmNsdWRlL2Agb3Igc2VhcmNoaW5nIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGF0aDlrIGRyaXZlciBkaXJlY3Rvcnkgc3RydWN0dXJlIGlmIEkga25vdyB3aGVyZSB0aGF0IGlzIHdpdGhpbiB0aGUga2VybmVsIHRyZWUuIEkgYWxzbyBuZWVkIHRvIGNvbnNpZGVyIHRoYXQgaXQgbWlnaHQgYmUgZGVmaW5lZCB3aXRoaW4gYSBoZWFkZXIgZmlsZSwgc28gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJ20gc2VhcmNoaW5nIGhlYWRlciBmaWxlcyBhcyB3ZWxsLiBUaGlzIHNob3VsZCBiZSBhIHN0cmFpZ2h0Zm9yd2FyZCBodW50LCBhbmQgSSdsbCBsaWtlbHkgZmluZCB0aGUgZGVmaW5pdGlvbiBwcmV0dHkgcXVpY2tseS4gTGV0J3MgZ2V0IHRvIGl0IVxuXG5cbiIsIklucHV0VG9rZW5zIjozMjc2OCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMDE6MDM6MzkuOTA2OTE2Mjg5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NTI0NDQ4NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQVRIOUtfREVCVUdGU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnPTQ4PWNvbmZpZyBBVEg5S19BSEJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTU3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjU4OmNvbmZpZyBBVEg5S19ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNTktXFx0Ym9vbCBcXFwiQXRoZXJvcyBhdGg5ayBkZWJ1Z2dpbmdcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDAxOjAzOjM5Ljk4MjE2NTExN1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxNzkyNjE0OTU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgQVRIOUsgRGVidWcgQ29uZmlnKipcblxuT2theSwgdGltZSB0byBnZXQgdGhpcyBzb3J0ZWQuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBsZXQncyB6ZXJvIGluIG9uIHRoZSBgY29uZmlnIEFUSDlLX0RFQlVHRlNgLiBJIHJlbWVtYmVyIGl0IGJlaW5nIGluIHRoYXQgZ2VuZXJhbCBhcmVhIG9mIHRoZSBjb25maWcgZmlsZSDigJMgYXJvdW5kIGxpbmUgNTggc2hvdWxkIGJlIGEgZ29vZCBzdGFydGluZyBwb2ludC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGVuYWJsZWQvZGlzYWJsZWQgYW5kIGlmIHRoYXQncyBpbXBhY3RpbmcgdGhlIGJlaGF2aW9yIEknbSBzZWVpbmcuIFRoaXMgdXN1YWxseSBpbmRpY2F0ZXMgd2hldGhlciB0aGUgZGVidWdnaW5nIGluZnJhc3RydWN0dXJlIGZvciB0aGUgYXRoOWsgZHJpdmVyIGlzIGVuYWJsZWQuIExldCdzIHNlZSBpZiB0aGlzIGRlYnVnIGNvbmZpZ3VyYXRpb24gc2V0dGluZyBpcyBzZXQgY29ycmVjdGx5LlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzIzNywiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDAxOjAzOjQxLjc3NDc4MjI3NFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MDk1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA1NSxcbiAgXCJMaW5lQ291bnRcIjogMjVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA1NTpcXHRcXHQgIFNheSBZLCBpZiB5b3UgaGF2ZSBhIFNvQyB3aXRoIGEgY29tcGF0aWJsZSBidWlsdC1pblxcbiAgNTY6XFx0XFx0ICB3aXJlbGVzcyBNQUMuIFNheSBOIGlmIHVuc3VyZS5cXG4gIDU3OlxcdFxcbiAgNTg6XFx0Y29uZmlnIEFUSDlLX0RFQlVHRlNcXG4gIDU5OlxcdFxcdGJvb2wgXFxcIkF0aGVyb3MgYXRoOWsgZGVidWdnaW5nXFxcIlxcbiAgNjA6XFx0XFx0ZGVwZW5kcyBvbiBBVEg5SyBcXHUwMDI2XFx1MDAyNiBERUJVR19GUyBcXHUwMDI2XFx1MDAyNiBNQUM4MDIxMV9ERUJVR0ZTXFxuICA2MTpcXHRcXHRzZWxlY3QgQVRIOUtfQ09NTU9OX0RFQlVHXFxuICA2MjpcXHRcXHRoZWxwXFxuICA2MzpcXHRcXHQgIFNheSBZLCBpZiB5b3UgbmVlZCBhY2Nlc3MgdG8gYXRoOWsncyBzdGF0aXN0aWNzIGZvclxcbiAgNjQ6XFx0XFx0ICBpbnRlcnJ1cHRzLCByYXRlIGNvbnRyb2wsIGV0Yy5cXG4gIDY1OlxcdFxcbiAgNjY6XFx0XFx0ICBBbHNvIHJlcXVpcmVkIGZvciBjaGFuZ2luZyBkZWJ1ZyBtZXNzYWdlIGZsYWdzIGF0IHJ1biB0aW1lIGFuZCBmb3JcXG4gIDY3OlxcdFxcdCAgVFg5OS5cXG4gIDY4OlxcdFxcbiAgNjk6XFx0Y29uZmlnIEFUSDlLX1NUQVRJT05fU1RBVElTVElDU1xcbiAgNzA6XFx0XFx0Ym9vbCBcXFwiRGV0YWlsZWQgc3RhdGlvbiBzdGF0aXN0aWNzXFxcIlxcbiAgNzE6XFx0XFx0ZGVwZW5kcyBvbiBBVEg5SyBcXHUwMDI2XFx1MDAyNiBBVEg5S19ERUJVR0ZTIFxcdTAwMjZcXHUwMDI2IERFQlVHX0ZTXFxuICA3MjpcXHRcXHRkZWZhdWx0IG5cXG4gIDczOlxcdFxcdGhlbHBcXG4gIDc0OlxcdFxcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyBkZXRhaWxlZCBzdGF0aXN0aWNzIGZvciBhc3NvY2lhdGlvbiBzdGF0aW9ucy5cXG4gIDc1OlxcdFxcbiAgNzY6XFx0Y29uZmlnIEFUSDlLX1RYOTlcXG4gIDc3OlxcdFxcdGJvb2wgXFxcIkF0aGVyb3MgYXRoOWsgVFg5OSB0ZXN0aW5nIHN1cHBvcnRcXFwiXFxuICA3ODpcXHRcXHRkZXBlbmRzIG9uIEFUSDlLX0RFQlVHRlMgXFx1MDAyNlxcdTAwMjYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXFxuICA3OTpcXHRcXHRkZWZhdWx0IG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMDE6MDM6NDEuNzc0ODU0ODQ0WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI5NjUzOTIzMjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyBVU0IgR2FkZ2V0IFByb2JpbmcgZm9yIGBhdGg5a19odGNgIERyaXZlcioqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCBob3cgd2UgY2FuIHRlc3QgdGhlIGBhdGg5a19odGNgIGRyaXZlciwgc3BlY2lmaWNhbGx5IGl0cyBpbnRlcmFjdGlvbiB3aXRoIFVTQi4gSXQncyBhIFVTQi1iYXNlZCB3aXJlbGVzcyBkcml2ZXIsIHVzaW5nIHRoYXQgSFRDIChIb3N0IFRhcmdldCBDb21tdW5pY2F0aW9uKSBwcm90b2NvbCwgd2hpY2ggaXMgaW1wb3J0YW50IHRvIHJlbWVtYmVyLiBUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzIHdoZXRoZXIgd2UgY2FuIGVmZmVjdGl2ZWx5IHByb2JlIHRoaXMgZHJpdmVyIHVzaW5nIGEgVVNCIGdhZGdldCBzZXR1cCwgbWF5YmUgbGV2ZXJhZ2luZyBzb21ldGhpbmcgbGlrZSBgcmF3X2dhZGdldGAgd2l0aGluIFN5emthbGxlci5cblxuVG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBzcGVjaWZpY3Mgb2YgdGhlIFVTQiBkZXZpY2UgSURzIHRoYXQgdGhpcyBkcml2ZXIgZXhwZWN0cywgSSBzaG91bGQgZGl2ZSBpbnRvIHRoZSBjb2RlLiBNeSBwbGFuIGlzIHRvIHN0YXJ0IGJ5IGV4YW1pbmluZyBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuY2AuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGNydWNpYWwgaW5mb3JtYXRpb24gSSBuZWVkIGFib3V0IHRoZSBleHBlY3RlZCBVU0IgZGV2aWNlIGlkZW50aWZpZXJzIHRoYXQgYGF0aDlrX2h0Y2AgaXMgbG9va2luZyBmb3IgZHVyaW5nIGl0cyBwcm9iZSBwcm9jZXNzLiBUaGlzIHNob3VsZCBpbmZvcm0gaG93IHdlIGdvIGFib3V0IHNldHRpbmcgdXAgdGhlIGdhZGdldCB0byB0cmlnZ2VyIHRoZSBkcml2ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzNzkzLCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQwMTowMzo0NC43NDAyNTI3MDRaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwMTkwNzk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk1PRFVMRV9ERVZJQ0VfVEFCTEV8VVNCX0RFVklDRVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9haGIuYz0xMzI9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgYXRoX2FoYl9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYWhiLmMtMTQwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9haGIuYzoxNDE6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgYXRoOWtfb2ZfbWF0Y2hfdGFibGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9haGIuYy0xNDItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXRoOWtfcGNpX293bF9sb2FkZXIuYz0yMjU9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIG93bF9wY2lfdGFibGVbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hdGg5a19wY2lfb3dsX2xvYWRlci5jLTIyOS19O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hdGg5a19wY2lfb3dsX2xvYWRlci5jOjIzMDpNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgb3dsX3BjaV90YWJsZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2F0aDlrX3BjaV9vd2xfbG9hZGVyLmMtMjMxLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYz0yMz1zdGF0aWMgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgYXRoOWtfaGlmX3VzYl9pZHNbXSA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjI0OlxcdHsgVVNCX0RFVklDRSgweDBjZjMsIDB4OTI3MSkgfSwgLyogQXRoZXJvcyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6MjU6XFx0eyBVU0JfREVWSUNFKDB4MGNmMywgMHgxMDA2KSB9LCAvKiBBdGhlcm9zICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzoyNjpcXHR7IFVTQl9ERVZJQ0UoMHgwODQ2LCAweDkwMzApIH0sIC8qIE5ldGdlYXIgTjE1MCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6Mjc6XFx0eyBVU0JfREVWSUNFKDB4MDdiOCwgMHg5MjcxKSB9LCAvKiBBbHRhaSBXQTEwMTFOLUdVICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzoyODpcXHR7IFVTQl9ERVZJQ0UoMHgwN0QxLCAweDNBMTApIH0sIC8qIERsaW5rIFdpcmVsZXNzIDE1MCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6Mjk6XFx0eyBVU0JfREVWSUNFKDB4MTNEMywgMHgzMzI3KSB9LCAvKiBBenVyZXdhdmUgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjMwOlxcdHsgVVNCX0RFVklDRSgweDEzRDMsIDB4MzMyOCkgfSwgLyogQXp1cmV3YXZlICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzozMTpcXHR7IFVTQl9ERVZJQ0UoMHgxM0QzLCAweDMzNDYpIH0sIC8qIElNQyBOZXR3b3JrcyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6MzI6XFx0eyBVU0JfREVWSUNFKDB4MTNEMywgMHgzMzQ4KSB9LCAvKiBBenVyZXdhdmUgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjMzOlxcdHsgVVNCX0RFVklDRSgweDEzRDMsIDB4MzM0OSkgfSwgLyogQXp1cmV3YXZlICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzozNDpcXHR7IFVTQl9ERVZJQ0UoMHgxM0QzLCAweDMzNTApIH0sIC8qIEF6dXJld2F2ZSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6MzU6XFx0eyBVU0JfREVWSUNFKDB4MDRDQSwgMHg0NjA1KSB9LCAvKiBMaXRlb24gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjM2OlxcdHsgVVNCX0RFVklDRSgweDA0MEQsIDB4MzgwMSkgfSwgLyogVklBICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzozNzpcXHR7IFVTQl9ERVZJQ0UoMHgwY2YzLCAweGIwMDMpIH0sIC8qIFViaXF1aXRpIFdpZmlTdGF0aW9uIEV4dCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6Mzg6XFx0eyBVU0JfREVWSUNFKDB4MGNmMywgMHhiMDAyKSB9LCAvKiBVYmlxdWl0aSBXaWZpU3RhdGlvbiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6Mzk6XFx0eyBVU0JfREVWSUNFKDB4MDU3YywgMHg4NDAzKSB9LCAvKiBBVk0gRlJJVFohV0xBTiAxMU4gdjIgVVNCICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo0MDpcXHR7IFVTQl9ERVZJQ0UoMHgwNDcxLCAweDIwOWUpIH0sIC8qIFBoaWxpcHMgKG9yIE5YUCkgUFRBMDEgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjQxOlxcdHsgVVNCX0RFVklDRSgweDFlZGEsIDB4MjMxNSkgfSwgLyogQWlyVGllcyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNDItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo0MzpcXHR7IFVTQl9ERVZJQ0UoMHgwY2YzLCAweDcwMTUpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNDQtXFx0ICAuZHJpdmVyX2luZm8gPSBBUjkyODdfVVNCIH0sICAvKiBBdGhlcm9zICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjQ2OlxcdHsgVVNCX0RFVklDRSgweDBjZjMsIDB4NzAxMCksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00Ny1cXHQgIC5kcml2ZXJfaW5mbyA9IEFSOTI4MF9VU0IgfSwgIC8qIEF0aGVyb3MgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjQ4OlxcdHsgVVNCX0RFVklDRSgweDA4NDYsIDB4OTAxOCksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00OS1cXHQgIC5kcml2ZXJfaW5mbyA9IEFSOTI4MF9VU0IgfSwgIC8qIE5ldGdlYXIgV05EQTMyMDAgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjUwOlxcdHsgVVNCX0RFVklDRSgweDA4M0EsIDB4QTcwNCksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy01MS1cXHQgIC5kcml2ZXJfaW5mbyA9IEFSOTI4MF9VU0IgfSwgIC8qIFNNQyBOZXR3b3JrcyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NTI6XFx0eyBVU0JfREVWSUNFKDB4MDQxMSwgMHgwMTdmKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTUzLVxcdCAgLmRyaXZlcl9pbmZvID0gQVI5MjgwX1VTQiB9LCAgLyogU29ueSBVV0EtQlIxMDAgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjU0OlxcdHsgVVNCX0RFVklDRSgweDA0MTEsIDB4MDE5NyksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy01NS1cXHQgIC5kcml2ZXJfaW5mbyA9IEFSOTI4MF9VU0IgfSwgIC8qIEJ1ZmZhbG8gV0xJLVVWLUFHMzAwUCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NTY6XFx0eyBVU0JfREVWSUNFKDB4MDRkYSwgMHgzOTA0KSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTU3LVxcdCAgLmRyaXZlcl9pbmZvID0gQVI5MjgwX1VTQiB9LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NTg6XFx0eyBVU0JfREVWSUNFKDB4MDkzMCwgMHgwYTA4KSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTU5LVxcdCAgLmRyaXZlcl9pbmZvID0gQVI5MjgwX1VTQiB9LCAgLyogVG9zaGliYSBXTE0tMjBVMiBhbmQgR04tMTA4MCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNjAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo2MTpcXHR7IFVTQl9ERVZJQ0UoMHgwY2YzLCAweDIwZmYpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNjItXFx0ICAuZHJpdmVyX2luZm8gPSBTVE9SQUdFX0RFVklDRSB9LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy02Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjY3Ok1PRFVMRV9ERVZJQ0VfVEFCTEUodXNiLCBhdGg5a19oaWZfdXNiX2lkcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy02OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9wY2kuYz0xMDYyPXN0YXRpYyBTSU1QTEVfREVWX1BNX09QUyhhdGg5a19wbV9vcHMsIGF0aF9wY2lfc3VzcGVuZCwgYXRoX3BjaV9yZXN1bWUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3BjaS5jLTEwNzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3BjaS5jOjEwNzM6TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIGF0aF9wY2lfaWRfdGFibGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9wY2kuYy0xMDc0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQwMTowMzo0NC44MDA0NDc5NDJaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjAwNzQxMjMyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEaXZpbmcgaW50byBhdGg5a19odGMgVVNCIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgc28gYGF0aDlrX2h0Y2Ag4oCTIHRoYXQncyB0aGUgVVNCIFdpRmkgZHJpdmVyLCByaWdodD8gSW50ZXJlc3RpbmcuLi4gVVNCIGZ1enppbmcsIGh1aD8gVGhpcyBjb3VsZCBiZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIExldCdzIHNlZSB3aGF0IHdlIGNhbiBkaWcgdXAuIEZpcnN0LCBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHJlY2VudCBjaGFuZ2VzIGFuZCBjcnVjaWFsIHN5bWJvbHMgd2l0aGluIHRoaXMgZHJpdmVyLiBLbm93aW5nIHdoZXJlIHRvIGxvb2sgaXMgaGFsZiB0aGUgYmF0dGxlLlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgaW50byB0aGUgY29kZS4gSSdsbCBmb2N1cyBvbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jYC4gU3BlY2lmaWNhbGx5LCBJJ2xsIGJlIHJldmlld2luZyBsaW5lcyA0NjAtNjYwIGFuZCB0aGVuIDEwNTAtMTA4MC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgdmlldyBvZiBhbnkgcmVsZXZhbnQgc3BlY3RyYWwgYW5hbHlzaXMgZnVuY3Rpb25hbGl0eSB0aGF0IGlzIGluIHRoZSBkcml2ZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIGFueXRoaW5nIHRoZXJlIGxvb2tzIGxpa2UgYSBwb3RlbnRpYWwgdGFyZ2V0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjQ4OCwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDAxOjAzOjQ2LjgwNzg2MzI4MVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTAzNzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDQ2MCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDQ2MDpcXHRcXHR9XFxuIDQ2MTpcXHRcXG4gNDYyOlxcdFxcdGlmIChyZXQpXFxuIDQ2MzpcXHRcXHRcXHRyZXR1cm4gMTtcXG4gNDY0OlxcdFxcdGVsc2VcXG4gNDY1OlxcdFxcdFxcdHJldHVybiAwO1xcbiA0NjY6XFx0fVxcbiA0Njc6XFx0XFxuIDQ2ODpcXHRzdGF0aWMgdm9pZCBhdGhfY21uX2NvdW50X2ZmdF9zYW1wbGUoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LFxcbiA0Njk6XFx0XFx0XFx0XFx0XFx0ICAgICBpbnQgcmV0KVxcbiA0NzA6XFx0e1xcbiA0NzE6XFx0XFx0c3RydWN0IGF0aF9yeF9zdGF0cyAqcnhfc3RhdHMgPSBzcGVjX3ByaXYtXFx1MDAzZXJ4X3N0YXRzO1xcbiA0NzI6XFx0XFxuIDQ3MzpcXHRcXHRpZiAoIXJ4X3N0YXRzKVxcbiA0NzQ6XFx0XFx0XFx0cmV0dXJuO1xcbiA0NzU6XFx0XFxuIDQ3NjpcXHRcXHRpZiAocmV0ID09IDApXFxuIDQ3NzpcXHRcXHRcXHRyeF9zdGF0cy1cXHUwMDNlcnhfc3BlY3RyYWxfc2FtcGxlX2dvb2QrKztcXG4gNDc4OlxcdFxcdGVsc2VcXG4gNDc5OlxcdFxcdFxcdHJ4X3N0YXRzLVxcdTAwM2VyeF9zcGVjdHJhbF9zYW1wbGVfZXJyKys7XFxuIDQ4MDpcXHR9XFxuIDQ4MTpcXHRcXG4gNDgyOlxcdC8qIHJldHVybnMgMSBpZiB0aGlzIHdhcyBhIHNwZWN0cmFsIGZyYW1lLCBldmVuIGlmIG5vdCBoYW5kbGVkLiAqL1xcbiA0ODM6XFx0aW50IGF0aF9jbW5fcHJvY2Vzc19mZnQoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LCBzdHJ1Y3QgaWVlZTgwMjExX2hkciAqaGRyLFxcbiA0ODQ6XFx0XFx0XFx0ICAgIHN0cnVjdCBhdGhfcnhfc3RhdHVzICpycywgdTY0IHRzZilcXG4gNDg1OlxcdHtcXG4gNDg2OlxcdFxcdHU4IHNhbXBsZV9idWZbU1BFQ1RSQUxfU0FNUExFX01BWF9MRU5dID0gezB9O1xcbiA0ODc6XFx0XFx0c3RydWN0IGF0aF9odyAqYWggPSBzcGVjX3ByaXYtXFx1MDAzZWFoO1xcbiA0ODg6XFx0XFx0c3RydWN0IGF0aF9jb21tb24gKmNvbW1vbiA9IGF0aDlrX2h3X2NvbW1vbihzcGVjX3ByaXYtXFx1MDAzZWFoKTtcXG4gNDg5OlxcdFxcdHU4IG51bV9iaW5zLCAqdmRhdGEgPSAodTggKiloZHI7XFxuIDQ5MDpcXHRcXHRzdHJ1Y3QgYXRoX3JhZGFyX2luZm8gKnJhZGFyX2luZm87XFxuIDQ5MTpcXHRcXHRpbnQgbGVuID0gcnMtXFx1MDAzZXJzX2RhdGFsZW47XFxuIDQ5MjpcXHRcXHRpbnQgaTtcXG4gNDkzOlxcdFxcdGludCBnb3Rfc2xlbiA9IDA7XFxuIDQ5NDpcXHRcXHR1OCAgKnNhbXBsZV9zdGFydDtcXG4gNDk1OlxcdFxcdGludCBzYW1wbGVfYnl0ZXMgPSAwO1xcbiA0OTY6XFx0XFx0aW50IHJldCA9IDA7XFxuIDQ5NzpcXHRcXHR1MTYgZmZ0X2xlbiwgc2FtcGxlX2xlbiwgZnJlcSA9IGFoLVxcdTAwM2VjdXJjaGFuLVxcdTAwM2VjaGFuLVxcdTAwM2VjZW50ZXJfZnJlcTtcXG4gNDk4OlxcdFxcdGVudW0gbmw4MDIxMV9jaGFubmVsX3R5cGUgY2hhbl90eXBlO1xcbiA0OTk6XFx0XFx0YXRoX2Ntbl9mZnRfaWR4X3ZhbGlkYXRvciAqZmZ0X2lkeF92YWxpZGF0b3I7XFxuIDUwMDpcXHRcXHRhdGhfY21uX2ZmdF9zYW1wbGVfaGFuZGxlciAqZmZ0X2hhbmRsZXI7XFxuIDUwMTpcXHRcXG4gNTAyOlxcdFxcdC8qIEFSOTI4MCBhbmQgYmVmb3JlIHJlcG9ydCB2aWEgQVRIOUtfUEhZRVJSX1JBREFSLCBBUjkzeHggYW5kIG5ld2VyXFxuIDUwMzpcXHRcXHQgKiB2aWEgQVRIOUtfUEhZRVJSX1NQRUNUUkFMLiBIYXZlbid0IHNlZW4gQVRIOUtfUEhZRVJSX0ZBTFNFX1JBREFSX0VYVFxcbiA1MDQ6XFx0XFx0ICogeWV0LCBidXQgdGhpcyBpcyBzdXBwb3NlZCB0byBiZSBwb3NzaWJsZSBhcyB3ZWxsLlxcbiA1MDU6XFx0XFx0ICovXFxuIDUwNjpcXHRcXHRpZiAocnMtXFx1MDAzZXJzX3BoeWVyciAhPSBBVEg5S19QSFlFUlJfUkFEQVIgXFx1MDAyNlxcdTAwMjZcXG4gNTA3OlxcdFxcdCAgICBycy1cXHUwMDNlcnNfcGh5ZXJyICE9IEFUSDlLX1BIWUVSUl9GQUxTRV9SQURBUl9FWFQgXFx1MDAyNlxcdTAwMjZcXG4gNTA4OlxcdFxcdCAgICBycy1cXHUwMDNlcnNfcGh5ZXJyICE9IEFUSDlLX1BIWUVSUl9TUEVDVFJBTClcXG4gNTA5OlxcdFxcdFxcdHJldHVybiAwO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQwMTowMzo0Ni44MDgwMTczOTFaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjkyMjI3Njc4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gYGNvbW1vbi1zcGVjdHJhbC5jYCoqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gcGlucG9pbnQgd2hlcmUgdGhpcyBpc3N1ZSBtaWdodCBiZSBvY2N1cnJpbmcgd2l0aGluIHRoZSBzcGVjdHJhbCBhbmFseXNpcyBjb2RlLiBNeSBpbnN0aW5jdCB0ZWxscyBtZSB0aGUgcHJvYmxlbSBpcyBsaWtlbHkgd2l0aGluIHRoZSBjb3JlIHNpZ25hbCBwcm9jZXNzaW5nIHJvdXRpbmVzLCBzbyBJJ20gZ29pbmcgdG8gc3RhcnQgYnkgZXhhbWluaW5nIGxpbmVzIDYyMC02NjAgb2YgYGNvbW1vbi1zcGVjdHJhbC5jYC4gVGhpcyBzZWN0aW9uIGxpa2VseSBjb250YWlucyBhIGNyaXRpY2FsIHNlZ21lbnQgZm9yIGVpdGhlciB0aGUgRkZUIGNhbGN1bGF0aW9uLCB3aW5kb3dpbmcgZnVuY3Rpb25zLCBvciBwZXJoYXBzIHRoZSBwb3dlciBzcGVjdHJ1bSBjb21wdXRhdGlvbiwgYWxsIG9mIHdoaWNoIGFyZSBlc3NlbnRpYWwgaW4gYW55IHNwZWN0cmFsIGFuYWx5c2lzIHByb2Nlc3MuIEknbGwgbmVlZCB0byBjYXJlZnVsbHkgZGlzc2VjdCB0aGUgbG9naWMgaW4gdGhhdCBzZWN0aW9uLCBwYXlpbmcgY2xvc2UgYXR0ZW50aW9uIHRvIGRhdGEgZmxvdyBhbmQgYW55IHBvdGVudGlhbCBlZGdlIGNhc2VzIHRoYXQgY291bGQgaW50cm9kdWNlIGVycm9ycy4gVGhlIGdvYWwgaXMgdG8gcmFwaWRseSBkZXRlcm1pbmUgaWYgYW55IG9mIHRoZSBhc3N1bXB0aW9ucyBvZiB0aGUgYWxnb3JpdGhtIGFyZSB2aW9sYXRlZCBhdCB0aGF0IGxvY2F0aW9uLCBlc3BlY2lhbGx5IHJlbGF0aXZlIHRvIHRoZSBpbmNvbWluZyBzaWduYWwsIGFuZCB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uLiBJIGhhdmUgdG8gYXBwbHkgbXkgdW5kZXJzdGFuZGluZyBvZiBzcGVjdHJhbCBhbmFseXNpcyBwcmluY2lwbGVzLCBhbmQgZm9jdXMgb24gZGV0YWlscyBoZXJlOiB2YXJpYWJsZSB0eXBlcywgbG9vcCBjb25kaXRpb25zLCBhbmQgYW55IHBvdGVudGlhbCBvZmYtYnktb25lIGVycm9ycy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzc2NjUsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDAxOjAzOjQ5LjczMDI5Nzc4M1oiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTYwMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDYyMCxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDYyMDpcXHRcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4gNjIxOlxcdFxcbiA2MjI6XFx0XFx0XFx0XFx0Z290X3NsZW4gPSAxO1xcbiA2MjM6XFx0XFx0XFx0fVxcbiA2MjQ6XFx0XFxuIDYyNTpcXHRcXHRcXHRpZiAoZ290X3NsZW4pIHtcXG4gNjI2OlxcdFxcdFxcdFxcdGF0aF9kYmcoY29tbW9uLCBTUEVDVFJBTF9TQ0FOLCBcXFwiRkZUIGZyYW1lIGxlbjogJWlcXFxcblxcXCIsXFxuIDYyNzpcXHRcXHRcXHRcXHRcXHRzYW1wbGVfYnl0ZXMpO1xcbiA2Mjg6XFx0XFxuIDYyOTpcXHRcXHRcXHRcXHQvKiBPbmx5IHRyeSB0byBmaXggYSBmcmFtZSBpZiBpdCdzIHRoZSBvbmx5IG9uZVxcbiA2MzA6XFx0XFx0XFx0XFx0ICogb24gdGhlIHJlcG9ydCwgZWxzZSBqdXN0IHNraXAgaXQuXFxuIDYzMTpcXHRcXHRcXHRcXHQgKi9cXG4gNjMyOlxcdFxcdFxcdFxcdGlmIChzYW1wbGVfYnl0ZXMgIT0gc2FtcGxlX2xlbiBcXHUwMDI2XFx1MDAyNiBsZW4gXFx1MDAzYz0gZmZ0X2xlbiArIDIpIHtcXG4gNjMzOlxcdFxcdFxcdFxcdFxcdGF0aF9jbW5fY29weV9mZnRfZnJhbWUoc2FtcGxlX3N0YXJ0LFxcbiA2MzQ6XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIHNhbXBsZV9idWYsIHNhbXBsZV9sZW4sXFxuIDYzNTpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgc2FtcGxlX2J5dGVzKTtcXG4gNjM2OlxcdFxcbiA2Mzc6XFx0XFx0XFx0XFx0XFx0cmV0ID0gZmZ0X2hhbmRsZXIocnMsIHNwZWNfcHJpdiwgc2FtcGxlX2J1ZixcXG4gNjM4OlxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgdHNmLCBmcmVxLCBjaGFuX3R5cGUpO1xcbiA2Mzk6XFx0XFxuIDY0MDpcXHRcXHRcXHRcXHRcXHRhdGhfY21uX2NvdW50X2ZmdF9zYW1wbGUoc3BlY19wcml2LCByZXQpO1xcbiA2NDE6XFx0XFxuIDY0MjpcXHRcXHRcXHRcXHRcXHQvKiBNaXggdGhlIHJlY2VpdmVkIGJpbnMgdG8gdGhlIC9kZXYvcmFuZG9tXFxuIDY0MzpcXHRcXHRcXHRcXHRcXHQgKiBwb29sXFxuIDY0NDpcXHRcXHRcXHRcXHRcXHQgKi9cXG4gNjQ1OlxcdFxcdFxcdFxcdFxcdGFkZF9kZXZpY2VfcmFuZG9tbmVzcyhzYW1wbGVfYnVmLCBudW1fYmlucyk7XFxuIDY0NjpcXHRcXG4gNjQ3OlxcdFxcdFxcdFxcdFxcdG1lbXNldChzYW1wbGVfYnVmLCAwLCBTUEVDVFJBTF9TQU1QTEVfTUFYX0xFTik7XFxuIDY0ODpcXHRcXHRcXHRcXHR9XFxuIDY0OTpcXHRcXG4gNjUwOlxcdFxcdFxcdFxcdC8qIFByb2Nlc3MgYSBub3JtYWwgZnJhbWUgKi9cXG4gNjUxOlxcdFxcdFxcdFxcdGlmIChzYW1wbGVfYnl0ZXMgPT0gc2FtcGxlX2xlbikge1xcbiA2NTI6XFx0XFx0XFx0XFx0XFx0cmV0ID0gZmZ0X2hhbmRsZXIocnMsIHNwZWNfcHJpdiwgc2FtcGxlX3N0YXJ0LFxcbiA2NTM6XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICB0c2YsIGZyZXEsIGNoYW5fdHlwZSk7XFxuIDY1NDpcXHRcXG4gNjU1OlxcdFxcdFxcdFxcdFxcdGF0aF9jbW5fY291bnRfZmZ0X3NhbXBsZShzcGVjX3ByaXYsIHJldCk7XFxuIDY1NjpcXHRcXG4gNjU3OlxcdFxcdFxcdFxcdFxcdC8qIE1peCB0aGUgcmVjZWl2ZWQgYmlucyB0byB0aGUgL2Rldi9yYW5kb21cXG4gNjU4OlxcdFxcdFxcdFxcdFxcdCAqIHBvb2xcXG4gNjU5OlxcdFxcdFxcdFxcdFxcdCAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQwMTowMzo0OS43MzA0OTYxMjNaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTgzOTM5OTczNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byBgY29tbW9uLXNwZWN0cmFsLmNgKipcblxuT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIExldCdzIHNlZS4uLiB0aGUgaW5pdGlhbCBhbmFseXNpcyBzdWdnZXN0cyBhIHBvdGVudGlhbCBpc3N1ZSBpbiB0aGUgc3BlY3RyYWwgcHJvY2Vzc2luZywgc28gSSdtIGdvaW5nIHRvIGp1bXAgc3RyYWlnaHQgaW50byBgY29tbW9uLXNwZWN0cmFsLmNgLiBTcGVjaWZpY2FsbHksIEkgd2FudCB0byB6ZXJvIGluIG9uIGxpbmVzIDEwNTAgdGhyb3VnaCAxMDgwLiBUaGlzIHJlZ2lvbiB1c3VhbGx5IGhhbmRsZXMgYSBjcml0aWNhbCB0cmFuc2Zvcm0gb3IgZmlsdGVyaW5nIHN0ZXAuIEkgaGF2ZSBhIGh1bmNoIHRoYXQncyB3aGVyZSB0aGluZ3MgYXJlIGZhbGxpbmcgYXBhcnQsIHNvIGxldCdzIHN0YXJ0IHRoZXJlIGFuZCBzZWUgd2hhdCB3ZSBjYW4gZmluZC4gSXQncyBhIHRhcmdldGVkIGFwcHJvYWNoOyBob3BlZnVsbHkgdGhpcyB3aWxsIHByb3ZpZGUgc29tZSBpbnNpZ2h0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzg1MjcsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDAxOjAzOjUxLjU2OTg5NzgxOFoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDgwODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEwNTAsXG4gIFwiTGluZUNvdW50XCI6IDM1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjEwNTA6XFx0LyoqKioqKioqKioqKioqKioqKioqKi9cXG4xMDUxOlxcdFxcbjEwNTI6XFx0dm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfZGVpbml0X2RlYnVnKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdilcXG4xMDUzOlxcdHtcXG4xMDU0OlxcdFxcdGlmIChzcGVjX3ByaXYtXFx1MDAzZXJmc19jaGFuX3NwZWNfc2Nhbikge1xcbjEwNTU6XFx0XFx0XFx0cmVsYXlfY2xvc2Uoc3BlY19wcml2LVxcdTAwM2VyZnNfY2hhbl9zcGVjX3NjYW4pO1xcbjEwNTY6XFx0XFx0XFx0c3BlY19wcml2LVxcdTAwM2VyZnNfY2hhbl9zcGVjX3NjYW4gPSBOVUxMO1xcbjEwNTc6XFx0XFx0fVxcbjEwNTg6XFx0fVxcbjEwNTk6XFx0RVhQT1JUX1NZTUJPTChhdGg5a19jbW5fc3BlY3RyYWxfZGVpbml0X2RlYnVnKTtcXG4xMDYwOlxcdFxcbjEwNjE6XFx0dm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsXFxuMTA2MjpcXHRcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX3BoeSxcXG4xMDYzOlxcdFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBhdGhfcnhfc3RhdHMgKnJ4X3N0YXRzKVxcbjEwNjQ6XFx0e1xcbjEwNjU6XFx0XFx0c3BlY19wcml2LVxcdTAwM2VyeF9zdGF0cyA9IHJ4X3N0YXRzO1xcbjEwNjY6XFx0XFx0c3BlY19wcml2LVxcdTAwM2VyZnNfY2hhbl9zcGVjX3NjYW4gPSByZWxheV9vcGVuKFxcXCJzcGVjdHJhbF9zY2FuXFxcIixcXG4xMDY3OlxcdFxcdFxcdFxcdFxcdFxcdCAgICBkZWJ1Z2ZzX3BoeSxcXG4xMDY4OlxcdFxcdFxcdFxcdFxcdFxcdCAgICAxMDI0LCAyNTYsIFxcdTAwMjZyZnNfc3BlY19zY2FuX2NiLFxcbjEwNjk6XFx0XFx0XFx0XFx0XFx0XFx0ICAgIE5VTEwpO1xcbjEwNzA6XFx0XFx0aWYgKCFzcGVjX3ByaXYtXFx1MDAzZXJmc19jaGFuX3NwZWNfc2NhbilcXG4xMDcxOlxcdFxcdFxcdHJldHVybjtcXG4xMDcyOlxcdFxcbjEwNzM6XFx0XFx0ZGVidWdmc19jcmVhdGVfZmlsZShcXFwic3BlY3RyYWxfc2Nhbl9jdGxcXFwiLFxcbjEwNzQ6XFx0XFx0XFx0XFx0ICAgIDA2MDAsXFxuMTA3NTpcXHRcXHRcXHRcXHQgICAgZGVidWdmc19waHksIHNwZWNfcHJpdixcXG4xMDc2OlxcdFxcdFxcdFxcdCAgICBcXHUwMDI2Zm9wc19zcGVjX3NjYW5fY3RsKTtcXG4xMDc3OlxcdFxcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXFxcInNwZWN0cmFsX3Nob3J0X3JlcGVhdFxcXCIsXFxuMTA3ODpcXHRcXHRcXHRcXHQgICAgMDYwMCxcXG4xMDc5OlxcdFxcdFxcdFxcdCAgICBkZWJ1Z2ZzX3BoeSwgc3BlY19wcml2LFxcbjEwODA6XFx0XFx0XFx0XFx0ICAgIFxcdTAwMjZmb3BzX3NwZWN0cmFsX3Nob3J0X3JlcGVhdCk7XFxuMTA4MTpcXHRcXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFxcXCJzcGVjdHJhbF9jb3VudFxcXCIsXFxuMTA4MjpcXHRcXHRcXHRcXHQgICAgMDYwMCxcXG4xMDgzOlxcdFxcdFxcdFxcdCAgICBkZWJ1Z2ZzX3BoeSwgc3BlY19wcml2LFxcbjEwODQ6XFx0XFx0XFx0XFx0ICAgIFxcdTAwMjZmb3BzX3NwZWN0cmFsX2NvdW50KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMDE6MDM6NTEuNTcwMDA3MzQ4WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjc5NTcwNzk3NzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgYXRoOWsgU3BlY3RyYWwgU2NhbiBDb25maWd1cmF0aW9uIGFuZCBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcyBmb3IgdGhpcyBzcGVjdHJhbCBzY2FuIGZ1bmN0aW9uYWxpdHkuIEl0IGxvb2tzIGxpa2UgYEFUSDlLX0NPTU1PTl9TUEVDVFJBTGAgaXMgdGhlIGNvcmUsIGJ1dCBpdCBkZXBlbmRzIG9uIGVpdGhlciBgQVRIOUtfREVCVUdGU2Agb3IgYEFUSDlLX0hUQ19ERUJVR0ZTYC4gRGl2aW5nIGRlZXBlciwgYEFUSDlLX0hUQ19ERUJVR0ZTYCBuZWVkcyBgQVRIOUtfSFRDYCBhbmQgYERFQlVHX0ZTYCwgYW5kIHRoYXQsIGluIHR1cm4sIHJlcXVpcmVzIGBVU0JgIGFuZCBgTUFDODAyMTFgLiBNZWFud2hpbGUsIGBBVEg5S19ERUJVR0ZTYCB3YW50cyBgQVRIOUtgLCBgREVCVUdfRlNgLCBhbmQgYE1BQzgwMjExX0RFQlVHRlNgLiBPZiBjb3Vyc2UsIGBBVEg5S2AgaXRzZWxmIGRlcGVuZHMgb24gYE1BQzgwMjExYC5cblxuTm93LCBJJ2xsIHJldmlldyBhbGwgdGhlIGNvbmZpZ3MgaW52b2x2ZWQ6IGBBVEg5S2AsIGBBVEg5S19IVENgLCBgQVRIOUtfREVCVUdGU2AsIGBBVEg5S19IVENfREVCVUdGU2AsIGBBVEg5S19DT01NT05fU1BFQ1RSQUxgLCBgTUFDODAyMTFgLCBgVVNCYCwgYW5kIGBERUJVR19GU2AuXG5cbk5leHQsIEkgbmVlZCB0byBpZGVudGlmeSB0aGUga2V5IGZ1bmN0aW9ucyBvciBcImZvY3VzIHN5bWJvbHNcIiB0aGF0IGFyZSBiZWluZyB0b3VjaGVkLiBJIHNlZTpcblxuMS4gIGBhdGhfY21uX3Byb2Nlc3NfZmZ0YDogVGhpcyBpcyB0aGUgbWFpbiBGRlQgcHJvY2Vzc2luZyBmdW5jdGlvbiBtb2RpZmllZCBpbiBgY29tbW9uLXNwZWN0cmFsLmNgLlxuMi4gIGBhdGhfY21uX2NvdW50X2ZmdF9zYW1wbGVgOiBJdCdzIGBzdGF0aWNgLCBidXQgSSdsbCBtYWtlIHN1cmUgdG8gY2hlY2sgaXRzIG5vbi1zdGF0aWMgZW50cnkgcG9pbnRzIGp1c3QgaW4gY2FzZS5cbjMuICBgYXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWdgOiBQcm90b3R5cGUgYW5kIGltcGxlbWVudGF0aW9uIGNoYW5nZWQgaW4gYGNvbW1vbi1zcGVjdHJhbC5jYC5cbjQuICBgYXRoOWtfaW5pdF9kZWJ1Z2AgaW4gYGRlYnVnLmNgLlxuNS4gIGBhdGg5a19odGNfaW5pdF9kZWJ1Z2AgaW4gYGh0Y19kcnZfZGVidWcuY2AuXG5cbkknbGwgY2hlY2sgZm9yIGFueSBvdGhlciBzeW1ib2xzIG9yIGNhbGxlcnMuIExvb2tpbmcgc3BlY2lmaWNhbGx5IGF0IGBjb21tb24tc3BlY3RyYWwuY2AsIEkgc2VlIHRoYXQgYGF0aF9jbW5fcHJvY2Vzc19mZnRgIGlzIGNhbGxlZCBieSBgYXRoOWtfcnhfc2tiX3ByZXByb2Nlc3NgIChhdGg5ayByeCBwYXRoKSBhbmQgYGF0aDlrX3J4X3ByZXBhcmVgIChhdGg5a1xcX2h0YyByeCBwYXRoKS4gR29vZCwgSSdsbCBjb25maXJtIHRoYXQgdGhlc2UgYXJlIHByZXNlbnQgaW4gdGhlIGNvZGViYXNlLiBZZXMsIHRoZXkgYXJlLlxuXG5Ob3csIGxldCdzIGFzc2VzcyB0aGUgZnV6emluZyBwb3RlbnRpYWwuIEl0IHNlZW1zIHdlIGhhdmUgYSBnb29kIHNldHVwIGhlcmU6IHJlYWNoYWJsZSB2aWEgVVNCIGdhZGdldCAoZm9yIGBhdGg5a19odGNgIGVtdWxhdGlvbikgYW5kIGRlYnVnZnMsIGNvbWJpbmVkIHdpdGggbmV0ZGV2IGFuZCBubDgwMjExIHJ4IHBhY2tldCBwcm9jZXNzaW5nLiBBbHNvLCB0aGVyZSdzIGEgbW9kaWZpY2F0aW9uIG9mIGV4ZWN1dGFibGUgY29kZSBsb2dpYyB3aXRoaW4gdGhlIHdpcmVsZXNzIGRyaXZlciBzdWJzeXN0ZW0gKGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYCkuIFRoZXJlJ3MgYWxzbyBzb21lIHdvcmsgaW4gUlggc3RhdHMgaGFuZGxpbmcgZm9yIHNwZWN0cmFsIHNjYW4gZnJhbWVzIHRvIGF2b2lkIHBvdGVudGlhbCB0eXBlIG1pc21hdGNoZXMgYmV0d2VlbiBhdGg5ayBhbmQgYXRoOWtcXF9odGMuIEl0J3MgYSBcInllc1wiIGZvciB3b3J0aCBmdXp6aW5nLlxuXG5NeSBsaXN0IG9mIEZvY3VzU3ltYm9scyBzaG91bGQgYmU6IGBhdGhfY21uX3Byb2Nlc3NfZmZ0YCwgYGF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnYCwgYGF0aDlrX2h0Y19pbml0X2RlYnVnYCwgYW5kIGBhdGg5a19pbml0X2RlYnVnYC5cblxuTm93LCBsZXQncyBjaGVjayB0aGF0IGBhdGhfY21uX2NvdW50X2ZmdF9zYW1wbGVgIGZ1bmN0aW9uLiBJdCdzIG1hcmtlZCBgc3RhdGljIHZvaWQgYXRoX2Ntbl9jb3VudF9mZnRfc2FtcGxlYC4gT24gYW1kNjQsIGl0IGNvdWxkIGJlIGlubGluZWQgaW50byBgYXRoX2Ntbl9wcm9jZXNzX2ZmdGAuIFNvIHRoZSBub24tc3RhdGljIGZlYXR1cmUtc3BlY2lmaWMgZW50cnkgcG9pbnRzIGFyZSA6IGBhdGhfY21uX3Byb2Nlc3NfZmZ0YCwgYGF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnYCwgYGF0aDlrX2h0Y19pbml0X2RlYnVnYCwgYW5kIGBhdGg5a19pbml0X2RlYnVnYC5cblxuSSdsbCB2ZXJpZnkgdGhlIEVuYWJsZUNvbmZpZ3Mgbm93OiBgQVRIOUtfQ09NTU9OX1NQRUNUUkFMYCwgYEFUSDlLX0hUQ19ERUJVR0ZTYCwgYEFUSDlLX0RFQlVHRlNgLCBgQVRIOUtfSFRDYCwgYW5kIGBBVEg5S2AuXG5cbkknbGwgZG91YmxlLWNoZWNrIGV2ZXJ5dGhpbmcgb25lIGxhc3QgdGltZS4gSXMgYEFUSDlLX0NPTU1PTl9TUEVDVFJBTGAgYSBib29sZWFuPyBZZXMuIERvZXMgaXQgc2VsZWN0IGBSRUxBWWA/IFllcy4gQXJlIHRoZXJlIGFueSBvdGhlciByZXF1aXJlZCBjb25maWdzPyBOby4gYEFUSDlLYCwgYEFUSDlLX0hUQ2AsIGBBVEg5S19ERUJVR0ZTYCwgYEFUSDlLX0hUQ19ERUJVR0ZTYCwgYEFUSDlLX0NPTU1PTl9TUEVDVFJBTGAsIGBNQUM4MDIxMWAsIGFuZCBgREVCVUdfRlNgLlxuXG5UaW1lIHRvIGNhbGwgYHNldC1yZXN1bHRzYC4gSSdtIHJlYWR5IHRvIG1vdmUgZm9yd2FyZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzkzNDUsIk91dHB1dFRva2VucyI6MjA2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTAyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMDE6MDM6NTkuNTI3MDkwNzc3WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQyMTM5MzA0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJBVEg5S1wiLFxuICAgIFwiQVRIOUtfSFRDXCIsXG4gICAgXCJBVEg5S19ERUJVR0ZTXCIsXG4gICAgXCJBVEg5S19IVENfREVCVUdGU1wiLFxuICAgIFwiQVRIOUtfQ09NTU9OX1NQRUNUUkFMXCIsXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiREVCVUdfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJhdGhfY21uX3Byb2Nlc3NfZmZ0XCIsXG4gICAgXCJhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1Z1wiLFxuICAgIFwiYXRoOWtfaHRjX2luaXRfZGVidWdcIixcbiAgICBcImF0aDlrX2luaXRfZGVidWdcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZWZhY3RvcnMgdGhlIHNwZWN0cmFsIHNjYW4gUlggc3RhdGlzdGljcyBhY2NvdW50aW5nIGluIHRoZSBhdGg5ay9hdGg5a19odGMgd2lyZWxlc3MgZHJpdmVyIHRvIGF2b2lkIGluY29ycmVjdCBzdHJ1Y3QgY2FzdGluZyBiZXR3ZWVuIGF0aDlrIGFuZCBhdGg5a19odGMuIFRoZSBtb2RpZmllZCBjb2RlIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIFVTQiBlbXVsYXRpb24gKGF0aDlrX2h0YykgYW5kIGRlYnVnZnMvd2lyZWxlc3MgUlggZnJhbWUgcHJvY2Vzc2luZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJBVEg5S1wiLFxuICAgIFwiQVRIOUtfSFRDXCIsXG4gICAgXCJBVEg5S19ERUJVR0ZTXCIsXG4gICAgXCJBVEg5S19IVENfREVCVUdGU1wiLFxuICAgIFwiQVRIOUtfQ09NTU9OX1NQRUNUUkFMXCIsXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiREVCVUdfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJhdGhfY21uX3Byb2Nlc3NfZmZ0XCIsXG4gICAgXCJhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1Z1wiLFxuICAgIFwiYXRoOWtfaHRjX2luaXRfZGVidWdcIixcbiAgICBcImF0aDlrX2luaXRfZGVidWdcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZWZhY3RvcnMgdGhlIHNwZWN0cmFsIHNjYW4gUlggc3RhdGlzdGljcyBhY2NvdW50aW5nIGluIHRoZSBhdGg5ay9hdGg5a19odGMgd2lyZWxlc3MgZHJpdmVyIHRvIGF2b2lkIGluY29ycmVjdCBzdHJ1Y3QgY2FzdGluZyBiZXR3ZWVuIGF0aDlrIGFuZCBhdGg5a19odGMuIFRoZSBtb2RpZmllZCBjb2RlIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIFVTQiBlbXVsYXRpb24gKGF0aDlrX2h0YykgYW5kIGRlYnVnZnMvd2lyZWxlc3MgUlggZnJhbWUgcHJvY2Vzc2luZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMDE6MDM6NTkuNjY5MjM5NTAxWiIsIlNlcSI6MjUsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MTUyNjM2NTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMDE6MDM6NTkuNjcwMDIyMjYxWiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6OTE1MTg0ODE4MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVmYWN0b3JzIHNwZWN0cmFsIHNjYW4gUlggc3RhdGlzdGljcyBhY2NvdW50aW5nIGluIHRoZSBhdGg5ayBkcml2ZXIgYnkgcGFzc2luZyBhbiBleHBsaWNpdCBwb2ludGVyIHRvIGBzdHJ1Y3QgYXRoX3J4X3N0YXRzYCBpbiBgYXRoX3NwZWNfc2Nhbl9wcml2YCBpbnN0ZWFkIG9mIGluYXBwcm9wcmlhdGVseSBjYXN0aW5nIGBjb21tb24tXFx1MDAzZXByaXZgIHRvIGBzdHJ1Y3QgYXRoX3NvZnRjICpgICh3aGljaCB3YXMgaW52YWxpZCBmb3IgYGF0aDlrX2h0Y2ApLiBcXG5cXG5UaGlzIGNoYW5nZSBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgbW9kaWZ5IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGhhbmRsaW5nLCB1bmluaXRpYWxpemVkIGJyYW5jaGluZywgb3Iga2VybmVsLXRvLXVzZXIgaW5mbyBsZWFrcy4gQW55IG1lbW9yeSBhY2Nlc3MgaXNzdWVzIHJlbGF0ZWQgdG8gaW52YWxpZCBwb2ludGVyIGRlcmVmZXJlbmNpbmcgb3Igc3RydWN0IGNhc3RpbmcgYXJlIGNhdWdodCBieSBLQVNBTiBvciBzdGFuZGFyZCBrZXJuZWwgZmF1bHQgaGFuZGxlcnMuIFRoZXJlZm9yZSwgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDBkNWQ0ZGI4ZDhhNjU5NWE5NWJlODcwNzk4NWZjMTMzZGUxMjY0NDJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IFNlcCA1IDAxOjAzOjE5IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jXG5pbmRleCBjYTAxYTA3ZjY2MzBjLi5kOGJlMjRlYmNkMjQ3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmNcbkBAIC00NjUsNiArNDY1LDIwIEBAIGF0aF9jbW5faXNfZmZ0X2J1Zl9mdWxsKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdilcbiBcdFx0cmV0dXJuIDA7XG4gfVxuIFxuK3N0YXRpYyB2b2lkIGF0aF9jbW5fY291bnRfZmZ0X3NhbXBsZShzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsXG4rXHRcdFx0XHQgICAgIGludCByZXQpXG4re1xuK1x0c3RydWN0IGF0aF9yeF9zdGF0cyAqcnhfc3RhdHMgPSBzcGVjX3ByaXYtXHUwMDNlcnhfc3RhdHM7XG4rXG4rXHRpZiAoIXJ4X3N0YXRzKVxuK1x0XHRyZXR1cm47XG4rXG4rXHRpZiAocmV0ID09IDApXG4rXHRcdHJ4X3N0YXRzLVx1MDAzZXJ4X3NwZWN0cmFsX3NhbXBsZV9nb29kKys7XG4rXHRlbHNlXG4rXHRcdHJ4X3N0YXRzLVx1MDAzZXJ4X3NwZWN0cmFsX3NhbXBsZV9lcnIrKztcbit9XG4rXG4gLyogcmV0dXJucyAxIGlmIHRoaXMgd2FzIGEgc3BlY3RyYWwgZnJhbWUsIGV2ZW4gaWYgbm90IGhhbmRsZWQuICovXG4gaW50IGF0aF9jbW5fcHJvY2Vzc19mZnQoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LCBzdHJ1Y3QgaWVlZTgwMjExX2hkciAqaGRyLFxuIFx0XHQgICAgc3RydWN0IGF0aF9yeF9zdGF0dXMgKnJzLCB1NjQgdHNmKVxuQEAgLTQ3Miw3ICs0ODYsNiBAQCBpbnQgYXRoX2Ntbl9wcm9jZXNzX2ZmdChzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsIHN0cnVjdCBpZWVlODAyMTFfaFxuIFx0dTggc2FtcGxlX2J1ZltTUEVDVFJBTF9TQU1QTEVfTUFYX0xFTl0gPSB7MH07XG4gXHRzdHJ1Y3QgYXRoX2h3ICphaCA9IHNwZWNfcHJpdi1cdTAwM2VhaDtcbiBcdHN0cnVjdCBhdGhfY29tbW9uICpjb21tb24gPSBhdGg5a19od19jb21tb24oc3BlY19wcml2LVx1MDAzZWFoKTtcbi1cdHN0cnVjdCBhdGhfc29mdGMgKnNjID0gY29tbW9uLVx1MDAzZXByaXY7XG4gXHR1OCBudW1fYmlucywgKnZkYXRhID0gKHU4ICopaGRyO1xuIFx0c3RydWN0IGF0aF9yYWRhcl9pbmZvICpyYWRhcl9pbmZvO1xuIFx0aW50IGxlbiA9IHJzLVx1MDAzZXJzX2RhdGFsZW47XG5AQCAtNjI0LDEwICs2MzcsNyBAQCBpbnQgYXRoX2Ntbl9wcm9jZXNzX2ZmdChzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsIHN0cnVjdCBpZWVlODAyMTFfaFxuIFx0XHRcdFx0cmV0ID0gZmZ0X2hhbmRsZXIocnMsIHNwZWNfcHJpdiwgc2FtcGxlX2J1ZixcbiBcdFx0XHRcdFx0XHQgIHRzZiwgZnJlcSwgY2hhbl90eXBlKTtcbiBcbi1cdFx0XHRcdGlmIChyZXQgPT0gMClcbi1cdFx0XHRcdFx0UlhfU1RBVF9JTkMoc2MsIHJ4X3NwZWN0cmFsX3NhbXBsZV9nb29kKTtcbi1cdFx0XHRcdGVsc2Vcbi1cdFx0XHRcdFx0UlhfU1RBVF9JTkMoc2MsIHJ4X3NwZWN0cmFsX3NhbXBsZV9lcnIpO1xuK1x0XHRcdFx0YXRoX2Ntbl9jb3VudF9mZnRfc2FtcGxlKHNwZWNfcHJpdiwgcmV0KTtcbiBcbiBcdFx0XHRcdC8qIE1peCB0aGUgcmVjZWl2ZWQgYmlucyB0byB0aGUgL2Rldi9yYW5kb21cbiBcdFx0XHRcdCAqIHBvb2xcbkBAIC02NDIsMTAgKzY1Miw3IEBAIGludCBhdGhfY21uX3Byb2Nlc3NfZmZ0KHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiwgc3RydWN0IGllZWU4MDIxMV9oXG4gXHRcdFx0XHRyZXQgPSBmZnRfaGFuZGxlcihycywgc3BlY19wcml2LCBzYW1wbGVfc3RhcnQsXG4gXHRcdFx0XHRcdFx0ICB0c2YsIGZyZXEsIGNoYW5fdHlwZSk7XG4gXG4tXHRcdFx0XHRpZiAocmV0ID09IDApXG4tXHRcdFx0XHRcdFJYX1NUQVRfSU5DKHNjLCByeF9zcGVjdHJhbF9zYW1wbGVfZ29vZCk7XG4tXHRcdFx0XHRlbHNlXG4tXHRcdFx0XHRcdFJYX1NUQVRfSU5DKHNjLCByeF9zcGVjdHJhbF9zYW1wbGVfZXJyKTtcbitcdFx0XHRcdGF0aF9jbW5fY291bnRfZmZ0X3NhbXBsZShzcGVjX3ByaXYsIHJldCk7XG4gXG4gXHRcdFx0XHQvKiBNaXggdGhlIHJlY2VpdmVkIGJpbnMgdG8gdGhlIC9kZXYvcmFuZG9tXG4gXHRcdFx0XHQgKiBwb29sXG5AQCAtMTA1Miw4ICsxMDU5LDEwIEBAIHZvaWQgYXRoOWtfY21uX3NwZWN0cmFsX2RlaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYpXG4gRVhQT1JUX1NZTUJPTChhdGg5a19jbW5fc3BlY3RyYWxfZGVpbml0X2RlYnVnKTtcbiBcbiB2b2lkIGF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdixcbi1cdFx0XHRcdCAgIHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcGh5KVxuK1x0XHRcdFx0ICAgc3RydWN0IGRlbnRyeSAqZGVidWdmc19waHksXG4rXHRcdFx0XHQgICBzdHJ1Y3QgYXRoX3J4X3N0YXRzICpyeF9zdGF0cylcbiB7XG4rXHRzcGVjX3ByaXYtXHUwMDNlcnhfc3RhdHMgPSByeF9zdGF0cztcbiBcdHNwZWNfcHJpdi1cdTAwM2VyZnNfY2hhbl9zcGVjX3NjYW4gPSByZWxheV9vcGVuKFwic3BlY3RyYWxfc2NhblwiLFxuIFx0XHRcdFx0XHQgICAgZGVidWdmc19waHksXG4gXHRcdFx0XHRcdCAgICAxMDI0LCAyNTYsIFx1MDAyNnJmc19zcGVjX3NjYW5fY2IsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oXG5pbmRleCAwMTFkOGFiOGI5NzQ0Li4wZTJjN2Q2ZDM0ODc0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmhcbkBAIC05NCwxMiArOTQsMTYgQEAgc3RydWN0IGF0aF9odDIwXzQwX2ZmdF9wYWNrZXQge1xuIFx0c3RydWN0IGF0aF9yYWRhcl9pbmZvIHJhZGFyX2luZm87XG4gfSBfX3BhY2tlZDtcbiBcbitzdHJ1Y3QgYXRoX3J4X3N0YXRzO1xuK1xuIHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYge1xuIFx0c3RydWN0IGF0aF9odyAqYWg7XG4gXHQvKiByZWxheShmcykgY2hhbm5lbCBmb3Igc3BlY3RyYWwgc2NhbiAqL1xuIFx0c3RydWN0IHJjaGFuICpyZnNfY2hhbl9zcGVjX3NjYW47XG4gXHRlbnVtIHNwZWN0cmFsX21vZGUgc3BlY3RyYWxfbW9kZTtcbiBcdHN0cnVjdCBhdGhfc3BlY19zY2FuIHNwZWNfY29uZmlnO1xuK1x0LyogZHJpdmVyJ3MgUlggc3RhdGlzdGljcyB0byBhY2NvdW50IHNhbXBsZXMgaW50bywgaWYgYW55ICovXG4rXHRzdHJ1Y3QgYXRoX3J4X3N0YXRzICpyeF9zdGF0cztcbiB9O1xuIFxuICNkZWZpbmUgU1BFQ1RSQUxfSFQyMF80MF9UT1RBTF9EQVRBX0xFTlx0KHNpemVvZihzdHJ1Y3QgYXRoX2h0MjBfNDBfZmZ0X3BhY2tldCkpXG5AQCAtMTY5LDcgKzE3Myw5IEBAIHN0YXRpYyBpbmxpbmUgdTggc3BlY3RyYWxfYml0bWFwX3dlaWdodCh1OCAqYmlucylcbiB9XG4gXG4gI2lmZGVmIENPTkZJR19BVEg5S19DT01NT05fU1BFQ1RSQUxcbi12b2lkIGF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiwgc3RydWN0IGRlbnRyeSAqZGVidWdmc19waHkpO1xuK3ZvaWQgYXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LFxuK1x0XHRcdFx0ICAgc3RydWN0IGRlbnRyeSAqZGVidWdmc19waHksXG4rXHRcdFx0XHQgICBzdHJ1Y3QgYXRoX3J4X3N0YXRzICpyeF9zdGF0cyk7XG4gdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfZGVpbml0X2RlYnVnKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdik7XG4gXG4gdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfc2Nhbl90cmlnZ2VyKHN0cnVjdCBhdGhfY29tbW9uICpjb21tb24sXG5AQCAtMTgxLDcgKzE4Nyw4IEBAIGludCBhdGhfY21uX3Byb2Nlc3NfZmZ0KHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiwgc3RydWN0IGllZWU4MDIxMV9oXG4gXHRcdCAgICBzdHJ1Y3QgYXRoX3J4X3N0YXR1cyAqcnMsIHU2NCB0c2YpO1xuICNlbHNlXG4gc3RhdGljIGlubGluZSB2b2lkIGF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdixcbi1cdFx0XHRcdFx0XHQgc3RydWN0IGRlbnRyeSAqZGVidWdmc19waHkpXG4rXHRcdFx0XHRcdFx0IHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcGh5LFxuK1x0XHRcdFx0XHRcdCBzdHJ1Y3QgYXRoX3J4X3N0YXRzICpyeF9zdGF0cylcbiB7XG4gfVxuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZWJ1Zy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2RlYnVnLmNcbmluZGV4IDc0YTAxMzQwNzVjZjkuLjA0MmE0ZjU0MmE5NDMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGVidWcuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2RlYnVnLmNcbkBAIC0xMzg5LDcgKzEzODksOCBAQCBpbnQgYXRoOWtfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX2h3ICphaClcbiBcbiBcdGF0aDlrX2Rmc19pbml0X2RlYnVnKHNjKTtcbiBcdGF0aDlrX3R4OTlfaW5pdF9kZWJ1ZyhzYyk7XG4tXHRhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhcdTAwMjZzYy1cdTAwM2VzcGVjX3ByaXYsIHNjLVx1MDAzZWRlYnVnLmRlYnVnZnNfcGh5KTtcbitcdGF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnKFx1MDAyNnNjLVx1MDAzZXNwZWNfcHJpdiwgc2MtXHUwMDNlZGVidWcuZGVidWdmc19waHksXG4rXHRcdFx0XHQgICAgICBcdTAwMjZzYy1cdTAwM2VkZWJ1Zy5zdGF0cy5yeHN0YXRzKTtcbiBcbiBcdGRlYnVnZnNfY3JlYXRlX2Rldm1fc2VxZmlsZShzYy1cdTAwM2VkZXYsIFwiZG1hXCIsIHNjLVx1MDAzZWRlYnVnLmRlYnVnZnNfcGh5LFxuIFx0XHRcdFx0ICAgIHJlYWRfZmlsZV9kbWEpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jXG5pbmRleCA5NDM3ZDY5ODc3Y2M1Li45ZDM1NGIxZDkyOWM4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuY1xuQEAgLTQ4Nyw3ICs0ODcsOCBAQCBpbnQgYXRoOWtfaHRjX2luaXRfZGVidWcoc3RydWN0IGF0aF9odyAqYWgpXG4gXHRwcml2LVx1MDAzZWRlYnVnLmRlYnVnZnNfcGh5ID0gZGVidWdmc19jcmVhdGVfZGlyKEtCVUlMRF9NT0ROQU1FLFxuIFx0XHRcdFx0XHQgICAgIHByaXYtXHUwMDNlaHctXHUwMDNld2lwaHktXHUwMDNlZGVidWdmc2Rpcik7XG4gXG4tXHRhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhcdTAwMjZwcml2LVx1MDAzZXNwZWNfcHJpdiwgcHJpdi1cdTAwM2VkZWJ1Zy5kZWJ1Z2ZzX3BoeSk7XG4rXHRhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhcdTAwMjZwcml2LVx1MDAzZXNwZWNfcHJpdiwgcHJpdi1cdTAwM2VkZWJ1Zy5kZWJ1Z2ZzX3BoeSxcbitcdFx0XHRcdCAgICAgIFx1MDAyNnByaXYtXHUwMDNlZGVidWcucnhfc3RhdHMpO1xuIFxuIFx0ZGVidWdmc19jcmVhdGVfZmlsZShcInRndF9pbnRfc3RhdHNcIiwgMDQwMCwgcHJpdi1cdTAwM2VkZWJ1Zy5kZWJ1Z2ZzX3BoeSxcbiBcdFx0XHQgICAgcHJpdiwgXHUwMDI2Zm9wc190Z3RfaW50X3N0YXRzKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDAxOjAzOjU5LjY3MDAyMzQ3MVoiLCJTZXEiOjI3LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1OTM3NTc0MDYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2ggZm9yIEtNU0FOIEZ1enppbmcgTmVlZHMqKlxuXG5Pa2F5LCBsZXQncyB0YWtlIGEgbG9vayBhdCB0aGlzIHBhdGNoIGFuZCBkZWNpZGUgaWYgaXQgd2FycmFudHMgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uLiBUaGUgZGlmZiBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiBpdCdzIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5a2AgZGlyZWN0b3J5LiBTcGVjaWZpY2FsbHksIGNoYW5nZXMgaW4gYGNvbW1vbi1zcGVjdHJhbC5jYCwgYGNvbW1vbi1zcGVjdHJhbC5oYCwgYGRlYnVnLmNgLCBhbmQgYGh0Y19kcnZfZGVidWcuY2AuXG5cbkl0IGxvb2tzIGxpa2UgdGhlIGNvcmUgb2YgdGhlIGNoYW5nZSByZXZvbHZlcyBhcm91bmQgYSB0eXBlIHNhZmV0eSBpc3N1ZS4gVGhleSd2ZSBpbnRyb2R1Y2VkIGEgaGVscGVyIGZ1bmN0aW9uLCBgYXRoX2Ntbl9jb3VudF9mZnRfc2FtcGxlYCwgdG8gcmVwbGFjZSBkaXJlY3QgY291bnRlciBpbmNyZW1lbnRzIHdpdGhpbiB0aGUgYGF0aF9yeF9zdGF0c2Agc3RydWN0dXJlLiBUaGUgb2xkIGNvZGUgd2FzIGFzc3VtaW5nIHRoYXQgYGNvbW1vbi1cdTAwM2Vwcml2YCB3aXRoaW4gYGF0aDlrX2h0Y2Agd2FzIGEgYHN0cnVjdCBhdGhfc29mdGMgKmAsIGJ1dCBpdCBjb3VsZCBiZSBzb21ldGhpbmcgZWxzZSwgbGVhZGluZyB0byB0eXBlIGNvbmZ1c2lvbiBhbmQgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uIHdoZW4gYWNjZXNzaW5nIHRoZSBzdGF0cy4gVGhlIGZpeCBpbnZvbHZlcyBwYXNzaW5nIHRoZSBgYXRoX3J4X3N0YXRzYCBwb2ludGVyIGRpcmVjdGx5LCBlbnN1cmluZyB0aGUgY29ycmVjdCBzdHJ1Y3R1cmUgaXMgdXNlZC4gU28sIHRoZSBvcmlnaW5hbCBjb2RlIGhhZCBwb2ludGVyIGNvbmZ1c2lvbiBhbmQgd2FzIG5vdCBjb3JyZWN0bHkgZGVyZWZlcmVuY2luZyBzdGF0cy5cblxuTm93LCB0aGUgaW1wb3J0YW50IHBhcnQ6IEtNU0FOLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGlzIHBhdGNoIGludHJvZHVjZXMgYW55IG5ldyB2dWxuZXJhYmlsaXRpZXMgdGhhdCBLTVNBTiB3b3VsZCBiZSBnb29kIGF0IGZpbmRpbmcuIExldCdzIHNlZS4uLlxuXG5GaXJzdCwgYXJlIHRoZXJlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBwb3RlbnRpYWwgaW5mbyBsZWFrcyB0byB1c2VyIHNwYWNlLCBvciB1bmluaXRpYWxpemVkIGJ1ZmZlciB1c2FnZXMgaW52b2x2ZWQ/IE5vLiBUaGUgcGF0Y2ggb25seSBpbmNyZW1lbnRzIGNvdW50ZXIgc3RhdGlzdGljcyBpbiBhbiBleGlzdGluZyBgYXRoX3J4X3N0YXRzYCBzdHJ1Y3QuIE5vIG5ldyBzdHJ1Y3R1cmVzIGFyZSBpbnRyb2R1Y2VkIHRoYXQgYXJlIHNlbnQgdG8gdXNlciBzcGFjZS5cblxuTmV4dCwgY29uZGl0aW9uYWwgbG9naWMgZGVwZW5kZW50IG9uIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzPyBOb3BlLiBJdCBkb2VzIGEgY2hlY2sgZm9yIGByeF9zdGF0c2AgYW5kIHRoZSByZXR1cm4gdmFsdWUgb2YgYHJldGAsIGJ1dCB0aGUgYHJ4X3N0YXRzYCBwb2ludGVyIGlzIGluaXRpYWxpemVkLlxuXG5Ib3cgYWJvdXQgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2l0aCB1bmluaXRpYWxpemVkIGZpZWxkcz8gQWdhaW4sIG5vLiBJdCBsb29rcyBsaWtlIGBhdGhfcnhfc3RhdHNgIGlzIHRoZSBzYW1lIHN0cnVjdCBhcyBiZWZvcmUuXG5cbkRvZXMgdGhlIHBhdGNoIGNoYW5nZSBib3VuZHMgY2hlY2tzIG9yIGxlbmd0aHMgaW4gYSB3YXkgdGhhdCBtaWdodCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnk/IE5vIGNoYW5nZXMgaGVyZSBlaXRoZXIuXG5cblNvLCB3aGF0IGtpbmQgb2YgYnVnIHdhcyBmaXhlZD8gVGhlIHBhdGNoIGFkZHJlc3NlcyBhIGRyaXZlciBwb2ludGVyIC8gdHlwZSBjb25mdXNpb24gb3IgTlVMTCBkZXJlZmVyZW5jZS4gVGhlIHByZXZpb3VzIGFzc3VtcHRpb24gYWJvdXQgdGhlIGBjb21tb24tXHUwMDNlcHJpdmAgdHlwZSBjYXVzZWQgaXNzdWVzLiBUaGlzIHNvdW5kcyBsaWtlIHRoZSB0eXBlIG9mIGJ1ZyB0aGF0IGNvdWxkIG1hbmlmZXN0IGFzIEtBU0FOIC8gR1BGIC8gZ2VuZXJhbCBkZXRlY3RvciBpc3N1ZXMg4oCTIGRlZmluaXRlbHkgbWVtb3J5IHNhZmV0eSBjb25jZXJucywgYnV0IG1vcmUgaW4gdGhlIHJlYWxtIG9mIHBvaW50ZXIgZXJyb3JzIHRoYW4gdW5pbml0aWFsaXplZCByZWFkcy4gSXQncyBlc3NlbnRpYWxseSBmaXhpbmcgYSBidWcgd2hlcmUgd2Ugd2VyZSBkZXJlZmVyZW5jaW5nIGFuIGludmFsaWQgcG9pbnRlciBvciBkZXJlZmVyZW5jaW5nIGEgcG9pbnRlciB0byBhbiBpbmNvcnJlY3QgZGF0YSBzdHJ1Y3R1cmUuXG5cbk9rYXksIGxldCdzIGp1c3QgZG8gYSBxdWljayBgZ3JlcHBlcmAgc2VhcmNoIHdpdGhpbiB0aGUgcmVwbyB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gSSBoYXZlbid0IG1pc3NlZCBhbnl0aGluZy4gSSdtIGdvaW5nIHRvIHNlYXJjaCBmb3IgaW5zdGFuY2VzIG9mIHRoZSBzdHJ1Y3RzIGFuZCBmdW5jdGlvbnMgaW52b2x2ZWQgdG8gYmUgY29tcGxldGVseSBzdXJlLiBKdXN0IHRvIGJlIG9uIHRoZSBzYWZlIHNpZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyNjksIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MTAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQwMTowNDowNS42MDc2MDAxMzFaIiwiU2VxIjoyOCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MzQ3NzIzMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJyeF9zcGVjdHJhbF9zYW1wbGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tZGVidWcuYz0xMjQ9c3RhdGljIHNzaXplX3QgcmVhZF9maWxlX3JlY3Yoc3RydWN0IGZpbGUgKmZpbGUsIGNoYXIgX191c2VyICp1c2VyX2J1ZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tZGVidWcuYy0xNDctXFx0UlhTX0VSUihcXFwiU1BFQ1RSQUxcXFwiLCByeF9zcGVjdHJhbCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1kZWJ1Zy5jOjE0ODpcXHRSWFNfRVJSKFxcXCJTUEVDVFJBTCBTTVBMIEdPT0RcXFwiLCByeF9zcGVjdHJhbF9zYW1wbGVfZ29vZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1kZWJ1Zy5jOjE0OTpcXHRSWFNfRVJSKFxcXCJTUEVDVFJBTCBTTVBMIEVSUlxcXCIsIHJ4X3NwZWN0cmFsX3NhbXBsZV9lcnIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tZGVidWcuYy0xNTAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLWRlYnVnLmgtNDEtICogQHJ4X3NwZWN0cmFsOiBObyBvZiBzcGVjdHJhbCBwYWNrZXRzIHJlY2VpdmVkLlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tZGVidWcuaDo0MjogKiBAcnhfc3BlY3RyYWxfc2FtcGxlX2dvb2Q6IE5vLiBvZiBnb29kIHNwZWN0cmFsIHNhbXBsZXNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLWRlYnVnLmg6NDM6ICogQHJ4X3NwZWN0cmFsX3NhbXBsZV9lcnI6IE5vLiBvZiBnb29kIHNwZWN0cmFsIHNhbXBsZXNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLWRlYnVnLmgtNDQtICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1kZWJ1Zy5oPTQ1PXN0cnVjdCBhdGhfcnhfc3RhdHMge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1kZWJ1Zy5oLTYyLVxcdHUzMiByeF9zcGVjdHJhbDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLWRlYnVnLmg6NjM6XFx0dTMyIHJ4X3NwZWN0cmFsX3NhbXBsZV9nb29kO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tZGVidWcuaDo2NDpcXHR1MzIgcnhfc3BlY3RyYWxfc2FtcGxlX2VycjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLWRlYnVnLmgtNjUtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYz00Njg9c3RhdGljIHZvaWQgYXRoX2Ntbl9jb3VudF9mZnRfc2FtcGxlKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy00NzYtXFx0aWYgKHJldCA9PSAwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo0Nzc6XFx0XFx0cnhfc3RhdHMtXFx1MDAzZXJ4X3NwZWN0cmFsX3NhbXBsZV9nb29kKys7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTQ3OC1cXHRlbHNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjQ3OTpcXHRcXHRyeF9zdGF0cy1cXHUwMDNlcnhfc3BlY3RyYWxfc2FtcGxlX2VycisrO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy00ODAtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQwMTowNDowNi4wODEwODY5ODJaIiwiU2VxIjoyOSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Mjc0MDc1ODU1OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFJlZmFjdG9yaW5nIGFuZCBNZW1vcnkgU2FmZXR5KipcblxuT2theSwgc28gSSd2ZSBiZWVuIHJldmlld2luZyB0aGlzIHBhdGNoLiBTZWVtcyBwcmV0dHkgY2xlYW4tY3V0LiBUaGUgY29yZSBvZiBpdCBpbnZvbHZlcyBob3cgYGF0aF9zcGVjX3NjYW5fcHJpdmAgaW50ZXJhY3RzIHdpdGggdGhlIFJYIHN0YXRpc3RpY3MuIFRoZSByZWZhY3RvciBqdXN0IG1ha2VzIHRoZSBhY2Nlc3MgY2xlYW5lciBhbmQgbW9yZSBkaXJlY3QsIGxldHRpbmcgYm90aCBgYXRoOWtgIGFuZCBgYXRoOWtfaHRjYCBwcm92aWRlIHRoZWlyIGBzdHJ1Y3QgYXRoX3J4X3N0YXRzICpgIHBvaW50ZXIgdXBmcm9udCBkdXJpbmcgc3BlY3RyYWwgZGVidWcgaW5pdGlhbGl6YXRpb24uIFRoaXMgZWxpbWluYXRlcyB0aGUgbmVlZCBmb3IgdGhhdCBgY29tbW9uLVx1MDAzZXByaXZgIGNhc3QsIHdoaWNoIGlzIGFsd2F5cyBzb21ldGhpbmcgdG8gd2F0Y2ggb3V0IGZvci5cblxuSSd2ZSBnb25lIHRocm91Z2ggaXQgd2l0aCBhIGZpbmUtdG9vdGggY29tYiwgYW5kIEknbSBub3Qgc2VlaW5nIGFueSByZWQgZmxhZ3MgcmVnYXJkaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBObyBpbmRpY2F0aW9ucyBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSwgYWxsb2NhdGluZyB1bmluaXRpYWxpemVkIG1lbW9yeSwgbGVha3MgdG8gdXNlciBzcGFjZSwgb3IgYnJhbmNoZXMgYmFzZWQgb24gdW5pbml0aWFsaXplZCBtZW1vcnkuIEdpdmVuIHRoYXQgdGhvcm91Z2ggaW5zcGVjdGlvbiwgdGhlIGBOZWVkc0tNU0FOYCBmbGFnIGlzIGRlZmluaXRpdmVseSBmYWxzZSBpbiB0aGlzIGNhc2UuXG5cbkFscmlnaHQsIHdpdGggYWxsIHRoYXQgb3V0IG9mIHRoZSB3YXksIEknbSBjb21mb3J0YWJsZSBjYWxsaW5nIGBzZXQtcmVzdWx0c2AuIEl0J3MgYSBzb2xpZCwgc2FmZSByZWZhY3RvcmluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjMwMiwiT3V0cHV0VG9rZW5zIjoxNjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMDE6MDQ6MDguODIxODQ3ODAxWiIsIlNlcSI6MzAsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk4NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZWZhY3RvcnMgc3BlY3RyYWwgc2NhbiBSWCBzdGF0aXN0aWNzIGFjY291bnRpbmcgaW4gdGhlIGF0aDlrIGRyaXZlciBieSBwYXNzaW5nIGFuIGV4cGxpY2l0IHBvaW50ZXIgdG8gYHN0cnVjdCBhdGhfcnhfc3RhdHNgIGluIGBhdGhfc3BlY19zY2FuX3ByaXZgIGluc3RlYWQgb2YgaW5hcHByb3ByaWF0ZWx5IGNhc3RpbmcgYGNvbW1vbi1cXHUwMDNlcHJpdmAgdG8gYHN0cnVjdCBhdGhfc29mdGMgKmAgKHdoaWNoIHdhcyBpbnZhbGlkIGZvciBgYXRoOWtfaHRjYCkuIFxcblxcblRoaXMgY2hhbmdlIGRvZXMgbm90IGludHJvZHVjZSBvciBtb2RpZnkgdW5pbml0aWFsaXplZCBtZW1vcnkgaGFuZGxpbmcsIHVuaW5pdGlhbGl6ZWQgYnJhbmNoaW5nLCBvciBrZXJuZWwtdG8tdXNlciBpbmZvIGxlYWtzLiBBbnkgbWVtb3J5IGFjY2VzcyBpc3N1ZXMgcmVsYXRlZCB0byBpbnZhbGlkIHBvaW50ZXIgZGVyZWZlcmVuY2luZyBvciBzdHJ1Y3QgY2FzdGluZyBhcmUgY2F1Z2h0IGJ5IEtBU0FOIG9yIHN0YW5kYXJkIGtlcm5lbCBmYXVsdCBoYW5kbGVycy4gVGhlcmVmb3JlLCBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVmYWN0b3JzIHNwZWN0cmFsIHNjYW4gUlggc3RhdGlzdGljcyBhY2NvdW50aW5nIGluIHRoZSBhdGg5ayBkcml2ZXIgYnkgcGFzc2luZyBhbiBleHBsaWNpdCBwb2ludGVyIHRvIGBzdHJ1Y3QgYXRoX3J4X3N0YXRzYCBpbiBgYXRoX3NwZWNfc2Nhbl9wcml2YCBpbnN0ZWFkIG9mIGluYXBwcm9wcmlhdGVseSBjYXN0aW5nIGBjb21tb24tXFx1MDAzZXByaXZgIHRvIGBzdHJ1Y3QgYXRoX3NvZnRjICpgICh3aGljaCB3YXMgaW52YWxpZCBmb3IgYGF0aDlrX2h0Y2ApLiBcXG5cXG5UaGlzIGNoYW5nZSBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgbW9kaWZ5IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGhhbmRsaW5nLCB1bmluaXRpYWxpemVkIGJyYW5jaGluZywgb3Iga2VybmVsLXRvLXVzZXIgaW5mbyBsZWFrcy4gQW55IG1lbW9yeSBhY2Nlc3MgaXNzdWVzIHJlbGF0ZWQgdG8gaW52YWxpZCBwb2ludGVyIGRlcmVmZXJlbmNpbmcgb3Igc3RydWN0IGNhc3RpbmcgYXJlIGNhdWdodCBieSBLQVNBTiBvciBzdGFuZGFyZCBrZXJuZWwgZmF1bHQgaGFuZGxlcnMuIFRoZXJlZm9yZSwgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowrmcdq[1] Phase: Succeeded StartedAt: 2026-09-05 01:04:20 +0000 UTC FinishedAt: 2026-09-05 01:04:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrmcdq[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-09-05 01:04:20 +0000 UTC FinishedAt: 2026-09-05 01:04:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrmcdq[2] Phase: Succeeded StartedAt: 2026-09-05 01:04:20 +0000 UTC FinishedAt: 2026-09-05 02:39:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrmcdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K_HTC_DEBUGFS","ATH9K_COMMON_SPECTRAL","MAC80211","DEBUG_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},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":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K_HTC_DEBUGFS","ATH9K_COMMON_SPECTRAL","MAC80211","DEBUG_FS"],"series_id":"bd25a7b5-2eee-4ee2-aa26-3c88891de699","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-09-05 01:04:21 +0000 UTC FinishedAt: 2026-09-05 02:39:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K_HTC_DEBUGFS","ATH9K_COMMON_SPECTRAL","MAC80211","DEBUG_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"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":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K_HTC_DEBUGFS","ATH9K_COMMON_SPECTRAL","MAC80211","DEBUG_FS"],"series_id":"bd25a7b5-2eee-4ee2-aa26-3c88891de699","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowrmcdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K_HTC_DEBUGFS","ATH9K_COMMON_SPECTRAL","MAC80211","DEBUG_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},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":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K_HTC_DEBUGFS","ATH9K_COMMON_SPECTRAL","MAC80211","DEBUG_FS"],"series_id":"bd25a7b5-2eee-4ee2-aa26-3c88891de699","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-09-05 01:04:21 +0000 UTC FinishedAt: 2026-09-05 01:04:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrmcdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K_HTC_DEBUGFS","ATH9K_COMMON_SPECTRAL","MAC80211","DEBUG_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},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":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K_HTC_DEBUGFS","ATH9K_COMMON_SPECTRAL","MAC80211","DEBUG_FS"],"series_id":"bd25a7b5-2eee-4ee2-aa26-3c88891de699","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-09-05 01:04:21 +0000 UTC FinishedAt: 2026-09-05 01:04:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K_HTC_DEBUGFS","ATH9K_COMMON_SPECTRAL","MAC80211","DEBUG_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowrmcdq/series-workflowrmcdq-convert-artifact-1372603769/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrmcdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K_HTC_DEBUGFS","ATH9K_COMMON_SPECTRAL","MAC80211","DEBUG_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},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":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K_HTC_DEBUGFS","ATH9K_COMMON_SPECTRAL","MAC80211","DEBUG_FS"],"series_id":"bd25a7b5-2eee-4ee2-aa26-3c88891de699","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-09-05 01:04:34 +0000 UTC FinishedAt: 2026-09-05 01:22:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrmcdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K_HTC_DEBUGFS","ATH9K_COMMON_SPECTRAL","MAC80211","DEBUG_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},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":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K_HTC_DEBUGFS","ATH9K_COMMON_SPECTRAL","MAC80211","DEBUG_FS"],"series_id":"bd25a7b5-2eee-4ee2-aa26-3c88891de699","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-09-05 01:04:34 +0000 UTC FinishedAt: 2026-09-05 01:22:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*2797b8c0-c97b-422e-a696-2a3df63b7c33,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-workflowrmcdq/series-workflowrmcdq-convert-artifact-1372603769/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": "f3b18600-50f8-4e65-8745-9729cda68f0c", "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-workflowrmcdq/series-workflowrmcdq-build-action-4025015959/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrmcdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K_HTC_DEBUGFS","ATH9K_COMMON_SPECTRAL","MAC80211","DEBUG_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},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":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K_HTC_DEBUGFS","ATH9K_COMMON_SPECTRAL","MAC80211","DEBUG_FS"],"series_id":"bd25a7b5-2eee-4ee2-aa26-3c88891de699","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-09-05 01:04:34 +0000 UTC FinishedAt: 2026-09-05 01:22:25 +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:*2797b8c0-c97b-422e-a696-2a3df63b7c33,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-workflowrmcdq/series-workflowrmcdq-convert-artifact-1372603769/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": "f3b18600-50f8-4e65-8745-9729cda68f0c", "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-workflowrmcdq/series-workflowrmcdq-build-action-4025015959/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrmcdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K_HTC_DEBUGFS","ATH9K_COMMON_SPECTRAL","MAC80211","DEBUG_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},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":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K_HTC_DEBUGFS","ATH9K_COMMON_SPECTRAL","MAC80211","DEBUG_FS"],"series_id":"bd25a7b5-2eee-4ee2-aa26-3c88891de699","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-09-05 01:22:35 +0000 UTC FinishedAt: 2026-09-05 01:22:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrmcdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K_HTC_DEBUGFS","ATH9K_COMMON_SPECTRAL","MAC80211","DEBUG_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},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":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K_HTC_DEBUGFS","ATH9K_COMMON_SPECTRAL","MAC80211","DEBUG_FS"],"series_id":"bd25a7b5-2eee-4ee2-aa26-3c88891de699","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-09-05 01:22:35 +0000 UTC FinishedAt: 2026-09-05 01:22:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrmcdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K_HTC_DEBUGFS","ATH9K_COMMON_SPECTRAL","MAC80211","DEBUG_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},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":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K_HTC_DEBUGFS","ATH9K_COMMON_SPECTRAL","MAC80211","DEBUG_FS"],"series_id":"bd25a7b5-2eee-4ee2-aa26-3c88891de699","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-09-05 01:22:35 +0000 UTC FinishedAt: 2026-09-05 01:22:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrmcdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K_HTC_DEBUGFS","ATH9K_COMMON_SPECTRAL","MAC80211","DEBUG_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},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":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K_HTC_DEBUGFS","ATH9K_COMMON_SPECTRAL","MAC80211","DEBUG_FS"],"series_id":"bd25a7b5-2eee-4ee2-aa26-3c88891de699","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-09-05 01:22:35 +0000 UTC FinishedAt: 2026-09-05 01:22:40 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K_HTC_DEBUGFS","ATH9K_COMMON_SPECTRAL","MAC80211","DEBUG_FS"],"series_id":"bd25a7b5-2eee-4ee2-aa26-3c88891de699","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowrmcdq/series-workflowrmcdq-convert-artifact-1274467404/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrmcdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K_HTC_DEBUGFS","ATH9K_COMMON_SPECTRAL","MAC80211","DEBUG_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},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":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K_HTC_DEBUGFS","ATH9K_COMMON_SPECTRAL","MAC80211","DEBUG_FS"],"series_id":"bd25a7b5-2eee-4ee2-aa26-3c88891de699","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-09-05 01:22:46 +0000 UTC FinishedAt: 2026-09-05 01:24:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrmcdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K_HTC_DEBUGFS","ATH9K_COMMON_SPECTRAL","MAC80211","DEBUG_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},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":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K_HTC_DEBUGFS","ATH9K_COMMON_SPECTRAL","MAC80211","DEBUG_FS"],"series_id":"bd25a7b5-2eee-4ee2-aa26-3c88891de699","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-09-05 01:22:46 +0000 UTC FinishedAt: 2026-09-05 01:24:40 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*f3b18600-50f8-4e65-8745-9729cda68f0c,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-workflowrmcdq/series-workflowrmcdq-build-action-4025015959/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-workflowrmcdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K_HTC_DEBUGFS","ATH9K_COMMON_SPECTRAL","MAC80211","DEBUG_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},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":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K_HTC_DEBUGFS","ATH9K_COMMON_SPECTRAL","MAC80211","DEBUG_FS"],"series_id":"bd25a7b5-2eee-4ee2-aa26-3c88891de699","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-09-05 01:24:50 +0000 UTC FinishedAt: 2026-09-05 01:24:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrmcdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K_HTC_DEBUGFS","ATH9K_COMMON_SPECTRAL","MAC80211","DEBUG_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},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":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K_HTC_DEBUGFS","ATH9K_COMMON_SPECTRAL","MAC80211","DEBUG_FS"],"series_id":"bd25a7b5-2eee-4ee2-aa26-3c88891de699","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-09-05 01:24:50 +0000 UTC FinishedAt: 2026-09-05 01:24:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrmcdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K_HTC_DEBUGFS","ATH9K_COMMON_SPECTRAL","MAC80211","DEBUG_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},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":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K_HTC_DEBUGFS","ATH9K_COMMON_SPECTRAL","MAC80211","DEBUG_FS"],"series_id":"bd25a7b5-2eee-4ee2-aa26-3c88891de699","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-09-05 01:24:50 +0000 UTC FinishedAt: 2026-09-05 01:42:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrmcdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K_HTC_DEBUGFS","ATH9K_COMMON_SPECTRAL","MAC80211","DEBUG_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},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":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K_HTC_DEBUGFS","ATH9K_COMMON_SPECTRAL","MAC80211","DEBUG_FS"],"series_id":"bd25a7b5-2eee-4ee2-aa26-3c88891de699","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-09-05 01:24:50 +0000 UTC FinishedAt: 2026-09-05 01:42:11 +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:*2797b8c0-c97b-422e-a696-2a3df63b7c33,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-workflowrmcdq/series-workflowrmcdq-convert-artifact-1274467404/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": "d92c965a-bd82-49ce-931c-7f4fca298461", "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-workflowrmcdq/series-workflowrmcdq-build-action-777069160/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrmcdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K_HTC_DEBUGFS","ATH9K_COMMON_SPECTRAL","MAC80211","DEBUG_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},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":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K_HTC_DEBUGFS","ATH9K_COMMON_SPECTRAL","MAC80211","DEBUG_FS"],"series_id":"bd25a7b5-2eee-4ee2-aa26-3c88891de699","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-09-05 01:24:50 +0000 UTC FinishedAt: 2026-09-05 01:42:01 +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:*2797b8c0-c97b-422e-a696-2a3df63b7c33,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-workflowrmcdq/series-workflowrmcdq-convert-artifact-1274467404/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": "d92c965a-bd82-49ce-931c-7f4fca298461", "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-workflowrmcdq/series-workflowrmcdq-build-action-777069160/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrmcdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K_HTC_DEBUGFS","ATH9K_COMMON_SPECTRAL","MAC80211","DEBUG_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},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":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K_HTC_DEBUGFS","ATH9K_COMMON_SPECTRAL","MAC80211","DEBUG_FS"],"series_id":"bd25a7b5-2eee-4ee2-aa26-3c88891de699","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-09-05 01:42:11 +0000 UTC FinishedAt: 2026-09-05 01:42:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrmcdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K_HTC_DEBUGFS","ATH9K_COMMON_SPECTRAL","MAC80211","DEBUG_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},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":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K_HTC_DEBUGFS","ATH9K_COMMON_SPECTRAL","MAC80211","DEBUG_FS"],"series_id":"bd25a7b5-2eee-4ee2-aa26-3c88891de699","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-09-05 01:42:11 +0000 UTC FinishedAt: 2026-09-05 01:42:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrmcdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K_HTC_DEBUGFS","ATH9K_COMMON_SPECTRAL","MAC80211","DEBUG_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},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":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K_HTC_DEBUGFS","ATH9K_COMMON_SPECTRAL","MAC80211","DEBUG_FS"],"series_id":"bd25a7b5-2eee-4ee2-aa26-3c88891de699","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-09-05 01:42:11 +0000 UTC FinishedAt: 2026-09-05 01:44:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrmcdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K_HTC_DEBUGFS","ATH9K_COMMON_SPECTRAL","MAC80211","DEBUG_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},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":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K_HTC_DEBUGFS","ATH9K_COMMON_SPECTRAL","MAC80211","DEBUG_FS"],"series_id":"bd25a7b5-2eee-4ee2-aa26-3c88891de699","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-09-05 01:42:11 +0000 UTC FinishedAt: 2026-09-05 01:43:58 +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:*d92c965a-bd82-49ce-931c-7f4fca298461,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-workflowrmcdq/series-workflowrmcdq-build-action-777069160/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-workflowrmcdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K_HTC_DEBUGFS","ATH9K_COMMON_SPECTRAL","MAC80211","DEBUG_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},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":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K_HTC_DEBUGFS","ATH9K_COMMON_SPECTRAL","MAC80211","DEBUG_FS"],"series_id":"bd25a7b5-2eee-4ee2-aa26-3c88891de699","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-09-05 01:44:08 +0000 UTC FinishedAt: 2026-09-05 02:39:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrmcdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K_HTC_DEBUGFS","ATH9K_COMMON_SPECTRAL","MAC80211","DEBUG_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},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":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K_HTC_DEBUGFS","ATH9K_COMMON_SPECTRAL","MAC80211","DEBUG_FS"],"series_id":"bd25a7b5-2eee-4ee2-aa26-3c88891de699","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-09-05 01:44:08 +0000 UTC FinishedAt: 2026-09-05 02:39:00 +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:*f3b18600-50f8-4e65-8745-9729cda68f0c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*d92c965a-bd82-49ce-931c-7f4fca298461,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-workflowrmcdq/series-workflowrmcdq-build-action-4025015959/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-workflowrmcdq/series-workflowrmcdq-build-action-777069160/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowrmcdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K_HTC_DEBUGFS","ATH9K_COMMON_SPECTRAL","MAC80211","DEBUG_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},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":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K_HTC_DEBUGFS","ATH9K_COMMON_SPECTRAL","MAC80211","DEBUG_FS"],"series_id":"bd25a7b5-2eee-4ee2-aa26-3c88891de699","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-09-05 01:44:08 +0000 UTC FinishedAt: 2026-09-05 01:44:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrmcdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K_HTC_DEBUGFS","ATH9K_COMMON_SPECTRAL","MAC80211","DEBUG_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},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":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K_HTC_DEBUGFS","ATH9K_COMMON_SPECTRAL","MAC80211","DEBUG_FS"],"series_id":"bd25a7b5-2eee-4ee2-aa26-3c88891de699","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-09-05 01:44:08 +0000 UTC FinishedAt: 2026-09-05 01:44:13 +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-workflowrmcdq/series-workflowrmcdq-convert-artifact-53142453/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrmcdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K_HTC_DEBUGFS","ATH9K_COMMON_SPECTRAL","MAC80211","DEBUG_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},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":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K_HTC_DEBUGFS","ATH9K_COMMON_SPECTRAL","MAC80211","DEBUG_FS"],"series_id":"bd25a7b5-2eee-4ee2-aa26-3c88891de699","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-09-05 01:44:08 +0000 UTC FinishedAt: 2026-09-05 01:44:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrmcdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K_HTC_DEBUGFS","ATH9K_COMMON_SPECTRAL","MAC80211","DEBUG_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},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":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K_HTC_DEBUGFS","ATH9K_COMMON_SPECTRAL","MAC80211","DEBUG_FS"],"series_id":"bd25a7b5-2eee-4ee2-aa26-3c88891de699","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-09-05 01:44:08 +0000 UTC FinishedAt: 2026-09-05 01:44:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrmcdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K_HTC_DEBUGFS","ATH9K_COMMON_SPECTRAL","MAC80211","DEBUG_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},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":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K_HTC_DEBUGFS","ATH9K_COMMON_SPECTRAL","MAC80211","DEBUG_FS"],"series_id":"bd25a7b5-2eee-4ee2-aa26-3c88891de699","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-09-05 01:44:08 +0000 UTC FinishedAt: 2026-09-05 01:44:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrmcdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K_HTC_DEBUGFS","ATH9K_COMMON_SPECTRAL","MAC80211","DEBUG_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},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":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K_HTC_DEBUGFS","ATH9K_COMMON_SPECTRAL","MAC80211","DEBUG_FS"],"series_id":"bd25a7b5-2eee-4ee2-aa26-3c88891de699","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-09-05 01:44:18 +0000 UTC FinishedAt: 2026-09-05 02:39:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrmcdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K_HTC_DEBUGFS","ATH9K_COMMON_SPECTRAL","MAC80211","DEBUG_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},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":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K","ATH9K_HTC","ATH9K_DEBUGFS","ATH9K_HTC_DEBUGFS","ATH9K_COMMON_SPECTRAL","MAC80211","DEBUG_FS"],"series_id":"bd25a7b5-2eee-4ee2-aa26-3c88891de699","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-09-05 01:44:18 +0000 UTC FinishedAt: 2026-09-05 02:38:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*f3b18600-50f8-4e65-8745-9729cda68f0c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*d92c965a-bd82-49ce-931c-7f4fca298461,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-workflowrmcdq/series-workflowrmcdq-build-action-4025015959/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-workflowrmcdq/series-workflowrmcdq-build-action-777069160/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-workflowrmcdq/series-workflowrmcdq-convert-artifact-53142453/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,}