Name: series-workflowlvp97 Phase: Succeeded StartedAt: 2026-09-07 06:38:07 +0000 UTC FinishedAt: 2026-09-07 09:02:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlvp97[0] Phase: Succeeded StartedAt: 2026-09-07 06:38:07 +0000 UTC FinishedAt: 2026-09-07 07:22:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlvp97[0].run-triage Phase: Succeeded StartedAt: 2026-09-07 06:38:07 +0000 UTC FinishedAt: 2026-09-07 07:22:40 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "1b60ed34f712e9f606d80951f1586f4274ebadf1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "P54_COMMON", "P54_USB", "MAC80211", "WLAN_VENDOR_INTERSIL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "1b60ed34f712e9f606d80951f1586f4274ebadf1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "P54_COMMON", "P54_USB", "MAC80211", "WLAN_VENDOR_INTERSIL" ], "series_id": "774bcb31-efd1-4cba-9346-18d2149d097d" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "p54_find_ie", "p54_beacon_format_ie_tim", "p54_pspoll_workaround" ], "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+CgkJCTx0ZD4yMDI2LzA5LzA3IDA3OjIwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1A1NF9DT01NT04mIzM0OywKICAgICYjMzQ7UDU0X1VTQiYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtXTEFOX1ZFTkRPUl9JTlRFUlNJTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3A1NF9maW5kX2llJiMzNDssCiAgICAmIzM0O3A1NF9iZWFjb25fZm9ybWF0X2llX3RpbSYjMzQ7LAogICAgJiMzNDtwNTRfcHNwb2xsX3dvcmthcm91bmQmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZW1vdmVzIGFuIGVycm9uZW91cyBjaGVjayBgaWYgKHNrYi1cdTAwM2VsZW4gXHUwMDNjPSBzaXplb2YobWdtdCkpYCBpbiBgcDU0X2ZpbmRfaWUoKWAgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmNgLlxuXG5LQVNBTiB2cy4gS01TQU4gYW5hbHlzaXM6XG4xLiBLTVNBTiBhcHBsaWNhYmlsaXR5OiBLTVNBTiBkZXRlY3RzIHVzZSBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSAoc3RhY2svaGVhcC9wYWdlKSBhbmQga2VybmVsLXRvLXVzZXIgaW5mby1sZWFrcy4gVGhpcyBwYXRjaCBkb2VzIG5vdCBhbGxvY2F0ZSBuZXcgdW5pbml0aWFsaXplZCBidWZmZXJzLCBkb2VzIG5vdCBpbnRyb2R1Y2UgdW5pbml0aWFsaXplZCBzdGFjayBvciBoZWFwIHZhcmlhYmxlcywgZG9lcyBub3QgY29weSBrZXJuZWwgZGF0YSB0byB1c2VyIHNwYWNlLCBhbmQgZG9lcyBub3QgYWx0ZXIgbG9naWMgdG8gYnJhbmNoIG9uIHVuaW5pdGlhbGl6ZWQgdmFsdWVzLiBUaGUgc2tiIGJ1ZmZlciBjb250YWlucyByZWNlaXZlZC9jb25zdHJ1Y3RlZCBmcmFtZSBkYXRhLlxuMi4gS0FTQU4gYXBwbGljYWJpbGl0eTogQW55IHBvdGVudGlhbCBtZW1vcnkgc2FmZXR5IGlzc3VlIGNhdXNlZCBieSByZW1vdmluZyB0aGUgY2hlY2sgKGUuZy4sIGlmIGEgbWFsZm9ybWVkIHNrYiB3aXRoIGEgbGVuZ3RoIHNtYWxsZXIgdGhhbiB0aGUgYmVhY29uIGhlYWRlciB3ZXJlIHBhcnNlZCBhbmQgbGVkIHRvIGFuIG91dC1vZi1ib3VuZHMgcmVhZCkgd291bGQgcmVwcmVzZW50IGFuIG91dC1vZi1ib3VuZHMgYnVmZmVyIGFjY2Vzcywgd2hpY2ggaXMgdHJhY2tlZCBhbmQgZGV0ZWN0ZWQgYnkgS0FTQU4uXG5cblRoZXJlZm9yZSwgdGhpcyBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcywgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgZnJhbWUgdmFsaWRhdGlvbiBsb2dpYyBpbiBwNTRfZmluZF9pZSgpIGJ5IHJlbW92aW5nIGEgbGVuZ3RoIGNoZWNrIHByaW9yIHRvIHBhcnNpbmcgaW5mb3JtYXRpb24gZWxlbWVudHMuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgdmlhIGVtdWxhdGVkIFVTQiBkZXZpY2VzIChwNTR1c2IpIGFuZCBtYWM4MDIxMSBiZWFjb24vZnJhbWUgaGFuZGxpbmcuIEZ1enppbmcgaXMgd2FycmFudGVkIHRvIGNoZWNrIGZvciBvdXQtb2YtYm91bmRzIHJlYWRzIG9yIHJlZ3Jlc3Npb25zIHdpdGggdHJ1bmNhdGVkIHBhY2tldHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDc6MjA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAyOTNjOGU5ZGE3YjQ2ODVjNGVkNzM5N2QxYjBlYTAxMTgyNDg3MzI2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBTZXAgNyAwNzoyMDozNyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uY1xuaW5kZXggNTdhNjIxMDhjYmMzNS4uOGY5MjFkYzRlY2QzNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmNcbkBAIC03Niw5ICYjNDM7NzYsNiBAQCB1OCAqcDU0X2ZpbmRfaWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTggaWUpXG4gXHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQgPSAodm9pZCAqKXNrYi1cdTAwM2VkYXRhO1xuIFx0dTggKnBvcywgKmVuZDtcbiBcbi1cdGlmIChza2ItXHUwMDNlbGVuIFx1MDAzYz0gc2l6ZW9mKG1nbXQpKVxuLVx0XHRyZXR1cm4gTlVMTDtcbi1cbiBcdHBvcyA9ICh1OCAqKW1nbXQtXHUwMDNldS5iZWFjb24udmFyaWFibGU7XG4gXHRlbmQgPSBza2ItXHUwMDNlZGF0YSAmIzQzOyBza2ItXHUwMDNlbGVuO1xuIFx0d2hpbGUgKHBvcyBcdTAwM2MgZW5kKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDc6MjA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UDU0X0NPTU1PTiYjMzQ7LAogICAgJiMzNDtQNTRfVVNCJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O1dMQU5fVkVORE9SX0lOVEVSU0lMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cDU0X2ZpbmRfaWUmIzM0OywKICAgICYjMzQ7cDU0X2JlYWNvbl9mb3JtYXRfaWVfdGltJiMzNDssCiAgICAmIzM0O3A1NF9wc3BvbGxfd29ya2Fyb3VuZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgZnJhbWUgdmFsaWRhdGlvbiBsb2dpYyBpbiBwNTRfZmluZF9pZSgpIGJ5IHJlbW92aW5nIGEgbGVuZ3RoIGNoZWNrIHByaW9yIHRvIHBhcnNpbmcgaW5mb3JtYXRpb24gZWxlbWVudHMuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgdmlhIGVtdWxhdGVkIFVTQiBkZXZpY2VzIChwNTR1c2IpIGFuZCBtYWM4MDIxMSBiZWFjb24vZnJhbWUgaGFuZGxpbmcuIEZ1enppbmcgaXMgd2FycmFudGVkIHRvIGNoZWNrIGZvciBvdXQtb2YtYm91bmRzIHJlYWRzIG9yIHJlZ3Jlc3Npb25zIHdpdGggdHJ1bmNhdGVkIHBhY2tldHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAyOTNjOGU5ZGE3YjQ2ODVjNGVkNzM5N2QxYjBlYTAxMTgyNDg3MzI2CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBTZXAgNyAwNzoyMDozNyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jCmluZGV4IDU3YTYyMTA4Y2JjMzUuLjhmOTIxZGM0ZWNkMzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYwpAQCAtNzYsOSAmIzQzOzc2LDYgQEAgdTggKnA1NF9maW5kX2llKHN0cnVjdCBza19idWZmICpza2IsIHU4IGllKQogCXN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdCA9ICh2b2lkICopc2tiLSZndDtkYXRhOwogCXU4ICpwb3MsICplbmQ7CiAKLQlpZiAoc2tiLSZndDtsZW4gJmx0Oz0gc2l6ZW9mKG1nbXQpKQotCQlyZXR1cm4gTlVMTDsKLQogCXBvcyA9ICh1OCAqKW1nbXQtJmd0O3UuYmVhY29uLnZhcmlhYmxlOwogCWVuZCA9IHNrYi0mZ3Q7ZGF0YSAmIzQzOyBza2ItJmd0O2xlbjsKIAl3aGlsZSAocG9zICZsdDsgZW5kKSB7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA3OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5MTEKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiA0NDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXZhbHVhdGluZyBhIEtlcm5lbCBQYXRjaCBmb3IgRnV6emluZyB3aXRoIFN5emthbGxlcioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZGVjaWRlIGlmIHRoaXMga2VybmVsIHBhdGNoIGlzIHdvcnRoIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuIEZpcnN0LCBsZXQmIzM5O3MgZXN0YWJsaXNoIGEgZnJhbWV3b3JrLiBUaGlzIHRhc2sgaXMgZXNzZW50aWFsbHkgYSB0cmlhZ2U7IGRldGVybWluaW5nIHdoZXRoZXIgd2Ugc2hvdWxkIGludmVzdCByZXNvdXJjZXMgaW4gZnV6emluZywgYW5kIGlmIHNvLCBleHRyYWN0aW5nIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9uIGFuZCBzeW1ib2xzLiBUaGUgc2V2ZXJpdHk/IEJlbmlnbiwgUUEsIG9yIERlZmVuc2UuIE5vdGhpbmcgY3JpdGljYWwgaGVyZSwganVzdCB0cnlpbmcgdG8gaW1wcm92ZSBzeXN0ZW0gcm9idXN0bmVzcy4KCk5vdywgbGV0JiMzOTtzIGRpc3NlY3QgdGhlIHBhdGNoIGl0c2VsZi4gSXQgbG9va3MgbGlrZSBhIGNvbW1pdCByZW1vdmluZyBhIGNoZWNrLCBzcGVjaWZpY2FsbHksIGEgbGVuZ3RoIGNoZWNrIGluIGBwNTRfZmluZF9pZWAgd2l0aGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jYC4gSXQmIzM5O3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgZWxpbWluYXRpbmcgYW4gYGlmIChza2ItJmd0O2xlbiAmbHQ7PSBzaXplb2YobWdtdCkpYCBjb25kaXRpb24uCgpIb2xkIG9uIGEgbWludXRlLCBJIGNhbiYjMzk7dCBqdW1wIHRvIGNvbmNsdXNpb25zIGp1c3QgeWV0LiBJIG5lZWQgbW9yZSBjb250ZXh0LiBJIGhhdmUgdG8gdW5kZXJzdGFuZCB0aGUgYmlnZ2VyIHBpY3R1cmUgYmVmb3JlIG1ha2luZyBhIHJlY29tbWVuZGF0aW9uLiBMZXQmIzM5O3MgZGlnIGRlZXBlciBpbnRvIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jYC4gV2hlcmUgaXMgYHA1NF9maW5kX2llYCB1c2VkPyBXaGljaCBkZXZpY2VzIHV0aWxpemUgdGhlIGBwNTRgIGRyaXZlcj8gSSBuZWVkIHRvIGtub3cgaWYgdGhpcyBhcmVhIGlzIGFjY2Vzc2libGUgdGhyb3VnaCB0aGUgdmlydHVhbGl6YXRpb24gdGhhdCBzeXprYWxsZXIgdGhyaXZlcyBvbi4KCklzIHA1NCByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVT8gRG9lcyBpdCBwbGF5IG5pY2Ugd2l0aCBVU0IgZ2FkZ2V0IGVtdWxhdGlvbiwgbWFjODAyMTEsIG9yIGh3c2ltPyBDYW4gd2UgbGV2ZXJhZ2UgVVNCIGVtdWxhdGlvbiB0ZWNobmlxdWVzIHdpdGhpbiBzeXprYWxsZXIsIHN1Y2ggYXMgdmhjaSwgcmF3LWdhZGdldCwgb3IgdGhlIHVzYi1mdXp6ZXI/CgpSaWdodCwgdGltZSB0byBnZXQgdG8gd29yay4gSSYjMzk7bGwgdXRpbGl6ZSBteSBncmVwcGVyIGFuZCByZWFkLWZpbGUgdG9vbHMuIExldCYjMzk7cyBzZWUgd2hhdCB0aGV5IGNhbiB0ZWxsIG1lLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA3OjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3A1NF9maW5kX2llJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg9NTU0PXN0cnVjdCBwNTRfcnNzaV9kYl9lbnRyeSAqcDU0X3Jzc2lfZmluZChzdHJ1Y3QgcDU0X2NvbW1vbiAqcCwgY29uc3QgdTE2IGZyZXEpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmgtNTU2LS8qIHV0aWxpdHkgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6NTU3OnU4ICpwNTRfZmluZF9pZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1OCBpZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oLTU1OC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jPTY2PXN0YXRpYyBpbnQgcDU0X3NldF90aW0oc3RydWN0IGllZWU4MDIxMV9odyAqZGV2LCBzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmMtNzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jOjc0OnU4ICpwNTRfZmluZF9pZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1OCBpZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmMtNzUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmM9OTM9c3RhdGljIGludCBwNTRfYmVhY29uX2Zvcm1hdF9pZV90aW0oc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jLTEwNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmM6MTA1Olx0dGltID0gcDU0X2ZpbmRfaWUoc2tiLCBXTEFOX0VJRF9USU0pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYy0xMDYtXHRpZiAoIXRpbSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jPTI5ND1zdGF0aWMgdm9pZCBwNTRfcHNwb2xsX3dvcmthcm91bmQoc3RydWN0IHA1NF9jb21tb24gKnByaXYsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYy0zMTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jOjMxMzpcdHRpbSA9IHA1NF9maW5kX2llKHNrYiwgV0xBTl9FSURfVElNKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmMtMzE0LVx0aWYgKCF0aW0pXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDc6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDM1MgoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqRGl2aW5nIGludG8gdGhlIHA1NCBEcml2ZXImIzM5O3MgQ29yZSoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGhhcHBlbmluZyBhcm91bmQgbGluZSA3NCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uY2AuIE15IGltbWVkaWF0ZSBnb2FsIGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgdGhhdCBzcGVjaWZpYyBsaW5lIG9mIGNvZGUuIEl0IGxvb2tzIGxpa2Ugc29tZXRoaW5nIHJlbGF0ZWQgdG8gdGhlIEludGVyc2lsIGNoaXBzZXQuIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayB3aGF0IGZ1bmN0aW9uIHRoaXMgbGluZSBpcyBpbiwgYW5kIHRoZW4gZXhwbG9yZSBhbnkgY2FsbGVycyB0byB0aGlzIGZ1bmN0aW9uLiBJIGV4cGVjdCBsaW5lIDc0IHdpbGwgYmUgcGFydCBvZiBhbiBpbXBvcnRhbnQgY2FsbCBzZXF1ZW5jZS4gSXQgaXMgbGlrZWx5IHRoZSBrZXJuZWwgaXMgYWNjZXNzaW5nIGluZm9ybWF0aW9uIHJlbGV2YW50IHRvIG5ldHdvcmsgZHJpdmVycy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGF0IGxpbmUgZG9lcyBhbmQgd2hlcmUgdGhlIGRhdGEgaXQmIzM5O3Mgb3BlcmF0aW5nIG9uIG9yaWdpbmF0ZXMuIFRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA3OjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDYwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDYwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgNjA6XHRcdFx0YnJlYWs7XG4gIDYxOlx0XHRkZWZhdWx0OlxuICA2MjpcdFx0XHRicmVhaztcbiAgNjM6XHRcdH1cbiAgNjQ6XHR9XG4gIDY1Olx0XG4gIDY2Olx0c3RhdGljIGludCBwNTRfc2V0X3RpbShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpkZXYsIHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsXG4gIDY3Olx0XHRcdFx0Ym9vbCBzZXQpXG4gIDY4Olx0e1xuICA2OTpcdFx0c3RydWN0IHA1NF9jb21tb24gKnByaXYgPSBkZXYtXHUwMDNlcHJpdjtcbiAgNzA6XHRcbiAgNzE6XHRcdHJldHVybiBwNTRfdXBkYXRlX2JlYWNvbl90aW0ocHJpdiwgc3RhLVx1MDAzZWFpZCwgc2V0KTtcbiAgNzI6XHR9XG4gIDczOlx0XG4gIDc0Olx0dTggKnA1NF9maW5kX2llKHN0cnVjdCBza19idWZmICpza2IsIHU4IGllKVxuICA3NTpcdHtcbiAgNzY6XHRcdHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdCA9ICh2b2lkICopc2tiLVx1MDAzZWRhdGE7XG4gIDc3Olx0XHR1OCAqcG9zLCAqZW5kO1xuICA3ODpcdFxuICA3OTpcdFx0cG9zID0gKHU4ICopbWdtdC1cdTAwM2V1LmJlYWNvbi52YXJpYWJsZTtcbiAgODA6XHRcdGVuZCA9IHNrYi1cdTAwM2VkYXRhICYjNDM7IHNrYi1cdTAwM2VsZW47XG4gIDgxOlx0XHR3aGlsZSAocG9zIFx1MDAzYyBlbmQpIHtcbiAgODI6XHRcdFx0aWYgKHBvcyAmIzQzOyAyICYjNDM7IHBvc1sxXSBcdTAwM2UgZW5kKVxuICA4MzpcdFx0XHRcdHJldHVybiBOVUxMO1xuICA4NDpcdFxuICA4NTpcdFx0XHRpZiAocG9zWzBdID09IGllKVxuICA4NjpcdFx0XHRcdHJldHVybiBwb3M7XG4gIDg3Olx0XG4gIDg4Olx0XHRcdHBvcyAmIzQzOz0gMiAmIzQzOyBwb3NbMV07XG4gIDg5Olx0XHR9XG4gIDkwOlx0XHRyZXR1cm4gTlVMTDtcbiAgOTE6XHR9XG4gIDkyOlx0XG4gIDkzOlx0c3RhdGljIGludCBwNTRfYmVhY29uX2Zvcm1hdF9pZV90aW0oc3RydWN0IHNrX2J1ZmYgKnNrYilcbiAgOTQ6XHR7XG4gIDk1Olx0XHQvKlxuICA5NjpcdFx0ICogdGhlIGdvb2QgZXhjdXNlIGZvciB0aGlzIG1lc3MgaXMgLi4uIHRoZSBmaXJtd2FyZS5cbiAgOTc6XHRcdCAqIFRoZSBkdW1teSBUSU0gTVVTVCBiZSBhdCB0aGUgZW5kIG9mIHRoZSBiZWFjb24gZnJhbWUsXG4gIDk4Olx0XHQgKiBiZWNhdXNlIGl0JiMzOTtsbCBiZSBvdmVyd3JpdHRlbiFcbiAgOTk6XHRcdCAqL1xuIDEwMDpcdFx0dTggKnRpbTtcbiAxMDE6XHRcdHU4IGR0aW1fbGVuO1xuIDEwMjpcdFx0dTggZHRpbV9wZXJpb2Q7XG4gMTAzOlx0XHR1OCAqbmV4dDtcbiAxMDQ6XHRcbiAxMDU6XHRcdHRpbSA9IHA1NF9maW5kX2llKHNrYiwgV0xBTl9FSURfVElNKTtcbiAxMDY6XHRcdGlmICghdGltKVxuIDEwNzpcdFx0XHRyZXR1cm4gMDtcbiAxMDg6XHRcbiAxMDk6XHRcdGR0aW1fbGVuID0gdGltWzFdO1xuIDExMDpcdFx0ZHRpbV9wZXJpb2QgPSB0aW1bM107XG4gMTExOlx0XHRuZXh0ID0gdGltICYjNDM7IDIgJiM0MzsgZHRpbV9sZW47XG4gMTEyOlx0XG4gMTEzOlx0XHRpZiAoZHRpbV9sZW4gXHUwMDNjIDMpXG4gMTE0Olx0XHRcdHJldHVybiAtRUlOVkFMO1xuIDExNTpcdFxuIDExNjpcdFx0bWVtbW92ZSh0aW0sIG5leHQsIHNrYl90YWlsX3BvaW50ZXIoc2tiKSAtIG5leHQpO1xuIDExNzpcdFx0dGltID0gc2tiX3RhaWxfcG9pbnRlcihza2IpIC0gKGR0aW1fbGVuICYjNDM7IDIpO1xuIDExODpcdFxuIDExOTpcdFx0LyogYWRkIHRoZSBkdW1teSBhdCB0aGUgZW5kICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDc6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTQwNQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDUxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV4YW1pbmluZyB0aGUgcDU0IERyaXZlciBMYW5kc2NhcGUqKgoKT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgcDU0IGRyaXZlciBzaXR1YXRpb24uIExldCYjMzk7cyBzdGFydCB3aXRoIHRoZSBvYnZpb3VzOiB3aGF0JiMzOTtzICphY3R1YWxseSogdGhlcmU/IEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBkcmlsbCBkb3duIGludG8gdGhlIGtlcm5lbCBzb3VyY2UgdG8gZ2V0IGEgZ29vZCBvdmVydmlldy4gSSYjMzk7bGwgY2hlY2sgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9LY29uZmlnYCDigJMgdGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMuIFRoZW4sIEkmIzM5O2xsIGltbWVkaWF0ZWx5IGZvbGxvdyB0aGF0IHVwIHdpdGggYSBsb29rIGF0IGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvTWFrZWZpbGVgLiBUaGUgbWFrZWZpbGUgd2lsbCBzaG93IG1lIHRoZSBidWlsZCBwcm9jZXNzIGFuZCB3aGF0IHNvdXJjZSBmaWxlcyBhcmUgaW52b2x2ZWQuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBxdWljaywgY29tcHJlaGVuc2l2ZSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBwNTQgZHJpdmVyJiMzOTtzIHN0cnVjdHVyZSBhbmQgaG93IGl0IGZpdHMgaW50byB0aGUgYnJvYWRlciBrZXJuZWwgZW52aXJvbm1lbnQuIFRoYXQgaW5mb3JtYXRpb24sIGhvcGVmdWxseSwgd2lsbCBiZSB3aGF0IEkgbmVlZCB0byBzdGFydC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwNzoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDsuKiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvTWFrZWZpbGU6MTojIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvTWFrZWZpbGU6MjpwNTRjb21tb24tb2Jqc1x0XHRcdDo9IGVlcHJvbS5vIGZ3aW8ubyB0eHJ4Lm8gbWFpbi5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvTWFrZWZpbGU6MzpwNTRjb21tb24tJChDT05GSUdfUDU0X0xFRFMpXHQmIzQzOz0gbGVkLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9NYWtlZmlsZTo0OlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L01ha2VmaWxlOjU6b2JqLSQoQ09ORklHX1A1NF9DT01NT04pXHQmIzQzOz0gcDU0Y29tbW9uLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19QNTRfVVNCKVx0XHQmIzQzOz0gcDU0dXNiLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9NYWtlZmlsZTo3Om9iai0kKENPTkZJR19QNTRfUENJKVx0XHQmIzQzOz0gcDU0cGNpLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9NYWtlZmlsZTo4Om9iai0kKENPTkZJR19QNTRfU1BJKVx0XHQmIzQzOz0gcDU0c3BpLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwNzoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1OTYwCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZToKCioqSW52ZXN0aWdhdGluZyBVU0IgU3VwcG9ydCBpbiB0aGUgcDU0IFdpcmVsZXNzIERyaXZlcioqCgpPa2F5LCBzbyB0aGUgZG9jdW1lbnRhdGlvbiBtZW50aW9ucyB0aGF0IHA1NCBzdXBwb3J0cyBVU0IsIHNwZWNpZmljYWxseSB3aXRoIGBDT05GSUdfUDU0X1VTQmAuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGRpZyBpbnRvIHRoZSBrZXJuZWwgc291cmNlIGFuZCB2ZXJpZnkgdGhpcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IFVTQiBmdW5jdGlvbmFsaXR5IGlzIGludGVncmF0ZWQgd2l0aGluIHRoZSBkcml2ZXIuIExldCYjMzk7cyBzdGFydCB3aXRoIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvS2NvbmZpZ2AuIFRoaXMgY29uZmlndXJhdGlvbiBmaWxlIHNob3VsZCBzaGVkIGxpZ2h0IG9uIGhvdyB0aGUgVVNCIG9wdGlvbiBpcyBkZWZpbmVkLCBpdHMgZGVwZW5kZW5jaWVzLCBhbmQgcGVyaGFwcyB0aGUgdmFyaW91cyBVU0ItcmVsYXRlZCBjb21wb25lbnRzIHdpdGhpbiB0aGUgcDU0IGRyaXZlci4gSSBhbnRpY2lwYXRlIHRoYXQgdGhpcyBLY29uZmlnIGZpbGUgd2lsbCBzcGVjaWZ5IHdoZXJlIHRoZSBVU0Itc3BlY2lmaWMgY29kZSBpcyBsb2NhdGVkIGFuZCBtaWdodCBhbHNvIGdpdmUgbWUgYSBnZW5lcmFsIG92ZXJ2aWV3IG9mIHRoZSBidWlsZCBwcm9jZXNzLiBGcm9tIHRoZXJlIEkmIzM5O2xsIGJlIGFibGUgdG8gY29uZmlybSBvciBkZW55IHRoZSBVU0Igc3VwcG9ydCBjbGFpbXMgaW4gbXkgbWVtb3J5IGFuZCBwcm9jZWVkIHdpdGggZnVydGhlciBpbnZlc3RpZ2F0aW9uLCBpZiBuZWVkZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA3OjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDgwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRjb25maWcgUDU0X0NPTU1PTlxuICAgMzpcdFx0dHJpc3RhdGUgXCYjMzQ7U29mdG1hYyBQcmlzbTU0IHN1cHBvcnRcJiMzNDtcbiAgIDQ6XHRcdGRlcGVuZHMgb24gTUFDODAyMTFcbiAgIDU6XHRcdHNlbGVjdCBGV19MT0FERVJcbiAgIDY6XHRcdHNlbGVjdCBDUkNfQ0NJVFRcbiAgIDc6XHRcdGhlbHBcbiAgIDg6XHRcdCAgVGhpcyBpcyBjb21tb24gY29kZSBmb3IgaXNsMzh4eC9zdGxjNDV4eCBiYXNlZCBtb2R1bGVzLlxuICAgOTpcdFx0ICBUaGlzIG1vZHVsZSBkb2VzIG5vdGhpbmcgYnkgaXRzZWxmIC0gdGhlIFVTQi9QQ0kvU1BJIGZyb250LWVuZHNcbiAgMTA6XHRcdCAgYWxzbyBuZWVkIHRvIGJlIGVuYWJsZWQgaW4gb3JkZXIgdG8gc3VwcG9ydCBhbnkgZGV2aWNlcy5cbiAgMTE6XHRcbiAgMTI6XHRcdCAgVGhlc2UgZGV2aWNlcyByZXF1aXJlIHNvZnRtYWMgZmlybXdhcmUgd2hpY2ggY2FuIGJlIGZvdW5kIGF0XG4gIDEzOlx0XHQgIFx1MDAzY2h0dHBzOi8vd2lyZWxlc3MuZG9jcy5rZXJuZWwub3JnL2VuL2xhdGVzdC9lbi91c2Vycy9kcml2ZXJzL3A1NC5odG1sXHUwMDNlXG4gIDE0Olx0XG4gIDE1Olx0XHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgYSBtb2R1bGUsIGl0JiMzOTtsbCBiZSBjYWxsZWQgcDU0Y29tbW9uLlxuICAxNjpcdFxuICAxNzpcdGNvbmZpZyBQNTRfVVNCXG4gIDE4Olx0XHR0cmlzdGF0ZSBcJiMzNDtQcmlzbTU0IFVTQiBzdXBwb3J0XCYjMzQ7XG4gIDE5Olx0XHRkZXBlbmRzIG9uIFA1NF9DT01NT04gXHUwMDI2XHUwMDI2IFVTQlxuICAyMDpcdFx0c2VsZWN0IENSQzMyXG4gIDIxOlx0XHRoZWxwXG4gIDIyOlx0XHQgIFRoaXMgZHJpdmVyIGlzIGZvciBVU0IgaXNsMzh4eCBiYXNlZCB3aXJlbGVzcyBjYXJkcy5cbiAgMjM6XHRcbiAgMjQ6XHRcdCAgVGhlc2UgZGV2aWNlcyByZXF1aXJlIHNvZnRtYWMgZmlybXdhcmUgd2hpY2ggY2FuIGJlIGZvdW5kIGF0XG4gIDI1Olx0XHQgIFx1MDAzY2h0dHBzOi8vd2lyZWxlc3MuZG9jcy5rZXJuZWwub3JnL2VuL2xhdGVzdC9lbi91c2Vycy9kcml2ZXJzL3A1NC5odG1sXHUwMDNlXG4gIDI2Olx0XG4gIDI3Olx0XHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgYSBtb2R1bGUsIGl0JiMzOTtsbCBiZSBjYWxsZWQgcDU0dXNiLlxuICAyODpcdFxuICAyOTpcdGNvbmZpZyBQNTRfUENJXG4gIDMwOlx0XHR0cmlzdGF0ZSBcJiMzNDtQcmlzbTU0IFBDSSBzdXBwb3J0XCYjMzQ7XG4gIDMxOlx0XHRkZXBlbmRzIG9uIFA1NF9DT01NT04gXHUwMDI2XHUwMDI2IFBDSVxuICAzMjpcdFx0aGVscFxuICAzMzpcdFx0ICBUaGlzIGRyaXZlciBpcyBmb3IgUENJIGlzbDM4eHggYmFzZWQgd2lyZWxlc3MgY2FyZHMuXG4gIDM0Olx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIG1vc3QgZGV2aWNlcyB0aGF0IGFyZSBzdXBwb3J0ZWQgYnkgdGhlXG4gIDM1Olx0XHQgIGZ1bGxtYWMgcHJpc201NCBkcml2ZXIgcGx1cyBtYW55IGRldmljZXMgd2hpY2ggYXJlIG5vdFxuICAzNjpcdFx0ICBzdXBwb3J0ZWQgYnkgdGhlIGZ1bGxtYWMgZHJpdmVyL2Zpcm13YXJlLlxuICAzNzpcdFxuICAzODpcdFx0ICBUaGlzIGRyaXZlciByZXF1aXJlcyBzb2Z0bWFjIGZpcm13YXJlIHdoaWNoIGNhbiBiZSBmb3VuZCBhdFxuICAzOTpcdFx0ICBcdTAwM2NodHRwczovL3dpcmVsZXNzLmRvY3Mua2VybmVsLm9yZy9lbi9sYXRlc3QvZW4vdXNlcnMvZHJpdmVycy9wNTQuaHRtbFx1MDAzZVxuICA0MDpcdFxuICA0MTpcdFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGEgbW9kdWxlLCBpdCYjMzk7bGwgYmUgY2FsbGVkIHA1NHBjaS5cbiAgNDI6XHRcbiAgNDM6XHRjb25maWcgUDU0X1NQSVxuICA0NDpcdFx0dHJpc3RhdGUgXCYjMzQ7UHJpc201NCBTUEkgKHN0bGM0NXh4KSBzdXBwb3J0XCYjMzQ7XG4gIDQ1Olx0XHRkZXBlbmRzIG9uIFA1NF9DT01NT04gXHUwMDI2XHUwMDI2IFNQSV9NQVNURVJcbiAgNDY6XHRcdGhlbHBcbiAgNDc6XHRcdCAgVGhpcyBkcml2ZXIgaXMgZm9yIHN0bGM0NTUwIG9yIHN0bGM0NTYwIGJhc2VkIHdpcmVsZXNzIGNoaXBzXG4gIDQ4Olx0XHQgIHN1Y2ggYXMgTm9raWEmIzM5O3MgTjgwMC9OODEwIFBvcnRhYmxlIEludGVybmV0IFRhYmxldC5cbiAgNDk6XHRcbiAgNTA6XHRcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBhIG1vZHVsZSwgaXQmIzM5O2xsIGJlIGNhbGxlZCBwNTRzcGkuXG4gIDUxOlx0XG4gIDUyOlx0Y29uZmlnIFA1NF9TUElfREVGQVVMVF9FRVBST01cbiAgNTM6XHRcdGJvb2wgXCYjMzQ7SW5jbHVkZSBmYWxsYmFjayBFRVBST00gYmxvYlwmIzM0O1xuICA1NDpcdFx0ZGVwZW5kcyBvbiBQNTRfU1BJXG4gIDU1Olx0XHRkZWZhdWx0IG5cbiAgNTY6XHRcdGhlbHBcbiAgNTc6XHRcdCBVbmxpa2UgdGhlIFBDSSBvciBVU0IgZGV2aWNlcywgdGhlIFNQSSB2YXJpYW50cyBkb24mIzM5O3QgaGF2ZVxuICA1ODpcdFx0IGEgZGVkaWNhdGVkIEVFUFJPTSBjaGlwIHRvIHN0b3JlIGFsbCBkZXZpY2Ugc3BlY2lmaWMgdmFsdWVzXG4gIDU5Olx0XHQgZm9yIGNhbGlicmF0aW9uLCBjb3VudHJ5IGFuZCBpbnRlcmZhY2Ugc2V0dGluZ3MuXG4gIDYwOlx0XG4gIDYxOlx0XHQgVGhlIGRyaXZlciB3aWxsIHRyeSB0byBsb2FkIHRoZSBpbWFnZSBcJiMzNDszODI2LmVlcHJvbVwmIzM0OywgaWYgdGhlXG4gIDYyOlx0XHQgZmlsZSBpcyBwdXQgYXQgdGhlIHJpZ2h0IHBsYWNlLiAodXN1YWxseSAvbGliL2Zpcm13YXJlLilcbiAgNjM6XHRcbiAgNjQ6XHRcdCBPbmx5IGlmIHRoaXMgcmVxdWVzdCBmYWlscywgdGhpcyBvcHRpb24gd2lsbCBwcm92aWRlIGFcbiAgNjU6XHRcdCBiYWNrdXAgc2V0IG9mIGdlbmVyaWMgdmFsdWVzIHRvIGdldCB0aGUgZGV2aWNlIHdvcmtpbmcuXG4gIDY2Olx0XG4gIDY3Olx0XHQgRW5hYmxpbmcgdGhpcyBvcHRpb24gYWRkcyBhYm91dCA0ayB0byBwNTRzcGkuXG4gIDY4Olx0XG4gIDY5Olx0Y29uZmlnIFA1NF9MRURTXG4gIDcwOlx0XHRib29sXG4gIDcxOlx0XHRkZXBlbmRzIG9uIFA1NF9DT01NT04gXHUwMDI2XHUwMDI2IE1BQzgwMjExX0xFRFMgXHUwMDI2XHUwMDI2IChMRURTX0NMQVNTID0geSB8fCBMRURTX0NMQVNTID0gUDU0X0NPTU1PTilcbiAgNzI6XHRcdGRlZmF1bHQgeVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwNzoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MzMxCgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogMTU0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBQNTQgVVNCIERyaXZlcioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCBgUDU0X1VTQmAgcmVsaWVzIG9uIGJvdGggYFA1NF9DT01NT05gIGFuZCB0aGUgYnJvYWRlciBgVVNCYCBzdWJzeXN0ZW0uIEZ1cnRoZXJtb3JlLCBgUDU0X0NPTU1PTmAgaXRzZWxmIGlzIGRlcGVuZGVudCBvbiBgTUFDODAyMTFgLiBOb3csIHRoZSBrZXkgcXVlc3Rpb24gYXJpc2VzOiB3aGVuIGEgVVNCIGRldmljZSByZWxhdGVkIHRvIFA1NCBpcyBwbHVnZ2VkIGluLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBjb250ZXh0IG9mIHNvbWV0aGluZyBsaWtlIHN5emthbGxlciYjMzk7cyBVU0IgcmF3LWdhZGdldCwgYSB2aGNpIHNldHVwLCBmdXp6aW5nIGF0dGVtcHRzLCBvciBldmVuIHR5cGljYWwgTUFDODAyMTEgQVAvYmVhY29uIHRyYW5zbWlzc2lvbiBhbmQgcmVjZXB0aW9uLCBkb2VzIHRoZSBgcDU0X2ZpbmRfaWVgIGZ1bmN0aW9uIGdldCBpbnZva2VkPyBUaGF0JiMzOTtzIHRoZSBjb3JlIG9mIG15IGN1cnJlbnQgaW52ZXN0aWdhdGlvbi4gVG8gdW5kZXJzdGFuZCB0aGlzIEkgd2lsbCBuZWVkIHRvIGNoZWNrIHdoZXJlIGBwNTRfZmluZF9pZWAgaXMgaW52b2tlZCBhbmQgaG93IGl0IGlzIGludm9sdmVkIGluIGJlYWNvbiBmb3JtYXR0aW5nIG9yIG90aGVyIHdvcmthcm91bmRzLiBJJiMzOTtsbCBuZWVkIHRvIGZvY3VzIG9uIGludmVzdGlnYXRpbmcgYHA1NF9iZWFjb25fZm9ybWF0X2llX3RpbWAgYW5kIGBwNTRfcHNwb2xsX3dvcmthcm91bmRgIHRvIGJ1aWxkIGEgY29tcGxldGUgcGljdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDc6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cDU0X2JlYWNvbl9mb3JtYXRfaWVfdGltJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmM9NzQ9dTggKnA1NF9maW5kX2llKHN0cnVjdCBza19idWZmICpza2IsIHU4IGllKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmMtOTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jOjkzOnN0YXRpYyBpbnQgcDU0X2JlYWNvbl9mb3JtYXRfaWVfdGltKHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jLTk0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jPTEzMj1zdGF0aWMgaW50IHA1NF9iZWFjb25fdXBkYXRlKHN0cnVjdCBwNTRfY29tbW9uICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmMtMTQxLVx0XHRyZXR1cm4gLUVOT01FTTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmM6MTQyOlx0cmV0ID0gcDU0X2JlYWNvbl9mb3JtYXRfaWVfdGltKGJlYWNvbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jLTE0My1cdGlmIChyZXQpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDc6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODAyNwoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246CgoqKkludmVzdGlnYXRpbmcgQmVhY29uIFVwZGF0ZXMgYW5kIFBvbGwgV29ya2Fyb3VuZHMqKgoKT2theSwgdGltZSB0byBkaWcgaW4uIE15IGd1dCBmZWVsaW5nIGlzIHNvbWV0aGluZyBpc24mIzM5O3QgcXVpdGUgcmlnaHQgd2l0aCB0aGUgYmVhY29uIHVwZGF0ZXMgb3IgdGhlIHBzcG9sbCB3b3JrYXJvdW5kLCBzbyBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IGJ5IHRyYWNpbmcgdGhvc2UgY2FsbHMuIEkgd2FudCB0byBzZWUgZXhhY3RseSBob3cgYHA1NF9iZWFjb25fdXBkYXRlYCBhbmQgYHA1NF9wc3BvbGxfd29ya2Fyb3VuZGAgYXJlIGJlaW5nIHVzZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3csIHRoZSBkYXRhIGJlaW5nIHBhc3NlZCwgYW5kIGFueSBwb3RlbnRpYWwgcG9pbnRzIG9mIGZhaWx1cmUgb3IgdW5leHBlY3RlZCBiZWhhdmlvci4gRXNzZW50aWFsbHksIEkmIzM5O20gZ29pbmcgdG8gbWFwIG91dCB0aGUgY2FsbCBncmFwaCBmb3IgdGhlc2UgdHdvIGZ1bmN0aW9ucyB0byBnZXQgYSBoaWdoLWxldmVsIHZpZXcgYW5kIHNlZSBpZiBhbnl0aGluZyBqdW1wcyBvdXQuIEkgaGF2ZSBhIGh1bmNoIHRoaXMgaXMgdGhlIHJpZ2h0IHBsYWNlIHRvIHN0YXJ0IGxvb2tpbmcgZm9yIHRoZSBjb3JlIGlzc3VlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwNzoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwNTRfYmVhY29uX3VwZGF0ZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jPTkzPXN0YXRpYyBpbnQgcDU0X2JlYWNvbl9mb3JtYXRfaWVfdGltKHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYy0xMzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jOjEzMjpzdGF0aWMgaW50IHA1NF9iZWFjb25fdXBkYXRlKHN0cnVjdCBwNTRfY29tbW9uICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYy0xMzMtXHRcdFx0c3RydWN0IGllZWU4MDIxMV92aWYgKnZpZilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jPTQ0OT1zdGF0aWMgdm9pZCBwNTRfYnNzX2luZm9fY2hhbmdlZChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYy00NjQtXHRcdHA1NF9zZXR1cF9tYWMocHJpdik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jOjQ2NTpcdFx0cDU0X2JlYWNvbl91cGRhdGUocHJpdiwgdmlmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmMtNDY2LVx0XHRwNTRfc2V0X2VkY2YocHJpdik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA3OjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg1NjEKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqQ2hlY2tpbmcgYSBQb3RlbnRpYWwgQnVnIEZpeCoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nLCAmIzM0O0xldCYjMzk7cyBkaWcgaW50byBgdHhyeC5jYCBhZ2Fpbi4gSSBoYXZlIGEgaHVuY2gsIGFuZCBJIG5lZWQgdG8gdmVyaWZ5IHNvbWV0aGluZy4mIzM0OyBTcGVjaWZpY2FsbHksIEkgd2FudCB0byB0YWtlIGEgbG9vayBhdCB0aGUgYHA1NF9wc3BvbGxfd29ya2Fyb3VuZGAgZnVuY3Rpb24uIFRoaXMgaXMgYW4gaW50ZXJlc3RpbmcgYXJlYSBiZWNhdXNlIGl0IGRlYWxzIHdpdGggcG93ZXItc2F2aW5nIGFuZCBwb2xsaW5nLiBHaXZlbiB0aGUgY29udGV4dCwgSSBzdXNwZWN0IHRoZXJlIG1pZ2h0IGJlIHNvbWV0aGluZyByZWxhdGVkIHRvIGFuIGlzc3VlIEkmIzM5O20gY2hhc2luZyBsdXJraW5nIGluIHRoYXQgcGFydCBvZiB0aGUgY29kZS4gSXQmIzM5O3MgYSBrZXkgYXJlYSB0byByZS1leGFtaW5lIHRvIHNlZSBpZiB0aGlzIGlzIHJlbGF0ZWQgdG8gdGhlIGN1cnJlbnQgcHJvYmxlbXMuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgc29tZXRoaW5nIHByZXZpb3VzbHkuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBpbiB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDc6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cDU0X3BzcG9sbF93b3JrYXJvdW5kJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmM9Mjc1PXN0YXRpYyBpbnQgcDU0X3Jzc2lfdG9fZGJtKHN0cnVjdCBwNTRfY29tbW9uICpwcml2LCBpbnQgcnNzaSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jLTI5My0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmM6Mjk0OnN0YXRpYyB2b2lkIHA1NF9wc3BvbGxfd29ya2Fyb3VuZChzdHJ1Y3QgcDU0X2NvbW1vbiAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmMtMjk1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jPTMyNz1zdGF0aWMgaW50IHA1NF9yeF9kYXRhKHN0cnVjdCBwNTRfY29tbW9uICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmMtMzg4LVx0aWYgKHVubGlrZWx5KHByaXYtXHUwMDNlaHctXHUwMDNlY29uZi5mbGFncyBcdTAwMjYgSUVFRTgwMjExX0NPTkZfUFMpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYzozODk6XHRcdHA1NF9wc3BvbGxfd29ya2Fyb3VuZChwcml2LCBza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYy0zOTAtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA3OjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkwOTYKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA5NjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQb3RlbnRpYWwgVnVsbmVyYWJpbGl0eSBpbiBgcDU0X2ZpbmRfaWVgKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoZSBjb2RlIGluIGBwNTRfZmluZF9pZWAgaGFzIGEgcGVjdWxpYXIgY2hhbmdlLiBJbml0aWFsbHksIHRoZXJlIHdhcyBhIGNoZWNrOiBgaWYgKHNrYi0mZ3Q7bGVuICZsdDs9IHNpemVvZihtZ210KSkgcmV0dXJuIE5VTEw7YC4gVGhhdCBjaGVjayBoYXMgYmVlbiByZW1vdmVkLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kICp3aHkqIGFuZCB3aGF0IHRoZSBpbXBsaWNhdGlvbnMgYXJlLgoKVGhlIHZhcmlhYmxlIGBtZ210YCBpcyBhIHBvaW50ZXIgdG8gYGllZWU4MDIxMV9tZ210YC4gVGhlIHJlbW92ZWQgY2hlY2sgd2FzIGNvbXBhcmluZyB0aGUgcGFja2V0IGxlbmd0aCAoYHNrYi0mZ3Q7bGVuYCkgdG8gdGhlIHNpemUgb2YgYSBwb2ludGVyLCB3aGljaCBpcyA4IGJ5dGVzLiBIb3dldmVyLCBgbWdtdC0mZ3Q7dS5iZWFjb24udmFyaWFibGVgIGlzICphY3R1YWxseSogb2Zmc2V0IGF0IDM2IGJ5dGVzIChvciB3aGF0ZXZlciBpdHMgYWN0dWFsIG9mZnNldCBpcywgZ2l2ZW4gdGhlIHN0cnVjdHVyZSYjMzk7cyBsYXlvdXQpLiBJZiB0aGUgcGFja2V0IGlzLCBzYXksIG9ubHkgMTAgYnl0ZXMsIHRoZSBjb2RlIHdvdWxkIGJlIHRyeWluZyB0byBhY2Nlc3MgbWVtb3J5IHBhc3QgdGhlIGVuZCBvZiB0aGUgYHNrYi0mZ3Q7ZGF0YWAgYnVmZmVyLiBUaGUgYHBvcyAmbHQ7IGVuZGAgY29tcGFyaXNvbiBpbiB0aGUgYHdoaWxlYCBsb29wICpzaG91bGQqIHByZXZlbnQgaXNzdWVzLCBidXQgdGhlIGNoZWNrIHdhcyB0aGVyZSBmb3IgYSByZWFzb24sIGFuZCBpdHMgcmVtb3ZhbCB3YXJyYW50cyBjbG9zZSBzY3J1dGlueS4KClRoZSBpbml0aWFsIGFzc3VtcHRpb24gbWlnaHQgYmUgdGhlIGNvZGUgaXMgc2FmZSwgc2luY2UgYHBvc2AgYXJpdGhtZXRpYyBjb3VsZCBzdGlsbCBjYXVzZSBpdCB0byBiZSBvdXQtb2YtYm91bmRzLCBldmVuIGlmIHRoZSBjb21wYXJpc29uIHByZXZlbnRzIGV4ZWN1dGlvbi4gVGhlIHJlbW92YWwgb2YgdGhlIGNoZWNrIGlzIHRoZSBtb3N0IGludGVyZXN0aW5nIHBhcnQuIFdoeSB3YXMgaXQgcmVtb3ZlZD8gV2FzIGl0IGEgYnVnIGZpeD8gT3IgYSBtaXNndWlkZWQgcmVmYWN0b3Jpbmc/IEl0ICpjb3VsZCogaW5kaWNhdGUgYSBtaXN1bmRlcnN0YW5kaW5nIG9mIGBzaXplb2ZgIG9yIHNvbWUgbG9naWMgZXJyb3IsIGJ1dCBub3cgdGhlIHF1ZXN0aW9uIGlzOiBjYW4gdGhpcyBjb25kaXRpb24gYmUgdHJpZ2dlcmVkPwoKU28sIGlzIHRoaXMgcmVhY2hhYmxlPyBUaGUgZHJpdmVyIGlzIGBwNTRgLCB3aGljaCBoYXMgYSBVU0IgZnJvbnRlbmQgKGBwNTR1c2JgKS4gQ29uc2lkZXJpbmcgdGhpcyBpcyBpbiB0aGUgY29udGV4dCBvZiBwYXRjaCBmdXp6aW5nLCBhbmQgdGhlIGluc3RydWN0aW9ucyBlbXBoYXNpemUgcmVhY2hhYmlsaXR5LCBsZXQmIzM5O3MgYXBwbHkgdGhlIGNyaXRlcmlhLiBXZSBjYW4gZnV6eiBVU0Igd2lyZWxlc3MgZGV2aWNlcyB1c2luZyBzeXprYWxsZXIgd2l0aCBVU0IgZW11bGF0aW9uLCByYXctZ2FkZ2V0LCB2aGNpLCBhbmQgbWFjODAyMTEuIFRoZSBkb2N1bWVudGF0aW9uIHNwZWNpZmljYWxseSBtZW50aW9ucyB0aGF0ICYjMzQ7UmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29scyYjMzQ7IGluY2x1ZGUgdGhvc2UgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyBsaWtlIFVTQiBnYWRnZXRzLiBQYXRjaCBmdXp6aW5nJiMzOTtzIHByaW9yaXR5IGlzIHJlYWNoYWJpbGl0eSwgc28gaWYgdGhlIGNvZGUgZXhlY3V0ZXMsIGl0JiMzOTtzIHdvcnRoIGZ1enppbmchCgpMZXQmIzM5O3MgY2hlY2sgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zLiBUaGUgYHA1NGAgZHJpdmVyIGl0c2VsZiAoYW5kIHNwZWNpZmljYWxseSBVU0IpIGRlcGVuZHMgb24gYE1BQzgwMjExYCBhbmQgYFVTQmAsIGFuZCBpcyBwYXJ0IG9mIHRoZSBgUDU0X0NPTU1PTmAgY29uZmlndXJhdGlvbiwgd2hpY2ggaGFzIGRlcGVuZGVuY2llcyBvbiBvdGhlciBjb21wb25lbnRzLiBUaGVzZSBjb25maWd1cmF0aW9ucyBhcmUgYWxsIHN0YW5kYXJkLCBhbmQgaXQmIzM5O3MgZmVhc2libGUgdG8gdHJpZ2dlciB0aGlzIGNvZGUgaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gU28sIGBwNTRgIGlzIHBvdGVudGlhbGx5IHJlYWNoYWJsZSB0aHJvdWdoIHRoZXNlIHZpcnR1YWwgYnVzZXMsIGFuZCB0aGF0IG1ha2VzIHRoaXMgcGF0Y2ggd29ydGggZnV6emluZyEgTGV0JiMzOTtzIGNoZWNrIHRoZSBjb25maWd1cmF0aW9ucyB0byBjb25maXJtIHdlIGhhdmUgdGhlIGNvcnJlY3QgYnVpbGQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA3OjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NvdXJjZS4qcDU0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvS2NvbmZpZz0xMz1pZiBXTEFOX1ZFTkRPUl9JTlRFUlNJTFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvS2NvbmZpZy0xNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL0tjb25maWc6MTU6c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9LY29uZmlnLTE2LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwNzoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDc2NAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgSW50ZXJjaWwgV2lyZWxlc3MgRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIEludGVyc2lsIHdpcmVsZXNzIGRyaXZlci4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gY2hlY2sgdGhlIGBLY29uZmlnYCBmaWxlLCBsb2NhdGVkIGluIHRoZSB1c3VhbCBwbGFjZTogYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL0tjb25maWdgLiBUaGF0JiMzOTtzIHdoZXJlIEkmIzM5O2QgZXhwZWN0IHRvIGZpbmQgYWxsIHRoZSBjb21waWxlLXRpbWUgb3B0aW9ucywgZGVwZW5kZW5jaWVzLCBhbmQgaGVscCB0ZXh0IHRoYXQgZGV0ZXJtaW5lIGhvdyB0aGlzIGRyaXZlciBiZWhhdmVzIGFuZCB3aGV0aGVyIGl0IGdldHMgYnVpbHQgaW50byB0aGUga2VybmVsLiBJJiMzOTtsbCBuZWVkIHRvIGxvb2sgaW4gZGV0YWlsIGF0IGhvdyB0aGUgdmFyaW91cyBmZWF0dXJlcyBhcmUgZW5hYmxlZCBhbmQgZGlzYWJsZWQsIGFuZCBob3cgdGhleSByZWxhdGUgdG8gdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUgYW5kIGFueSByZXF1aXJlZCBrZXJuZWwgc3VwcG9ydC4gSSBhbnRpY2lwYXRlIEkgd2lsbCBuZWVkIHRvIGxvb2sgYXQgYW55IGRlcGVuZGVuY2llcyBvbiBvdGhlciBrZXJuZWwgc3Vic3lzdGVtcyBvciBmZWF0dXJlcy4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIGdvb2Qgb3ZlcnZpZXcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA3OjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBXTEFOX1ZFTkRPUl9JTlRFUlNJTFxuICAgMzpcdFx0Ym9vbCBcJiMzNDtJbnRlcnNpbCBkZXZpY2VzXCYjMzQ7XG4gICA0Olx0XHRkZWZhdWx0IHlcbiAgIDU6XHRcdGhlbHBcbiAgIDY6XHRcdCAgSWYgeW91IGhhdmUgYSB3aXJlbGVzcyBjYXJkIGJlbG9uZ2luZyB0byB0aGlzIGNsYXNzLCBzYXkgWS5cbiAgIDc6XHRcbiAgIDg6XHRcdCAgTm90ZSB0aGF0IHRoZSBhbnN3ZXIgdG8gdGhpcyBxdWVzdGlvbiBkb2VzbiYjMzk7dCBkaXJlY3RseSBhZmZlY3QgdGhlXG4gICA5Olx0XHQgIGtlcm5lbDogc2F5aW5nIE4gd2lsbCBqdXN0IGNhdXNlIHRoZSBjb25maWd1cmF0b3IgdG8gc2tpcCBhbGwgdGhlXG4gIDEwOlx0XHQgIHF1ZXN0aW9ucyBhYm91dCB0aGVzZSBjYXJkcy4gSWYgeW91IHNheSBZLCB5b3Ugd2lsbCBiZSBhc2tlZCBmb3JcbiAgMTE6XHRcdCAgeW91ciBzcGVjaWZpYyBjYXJkIGluIHRoZSBmb2xsb3dpbmcgcXVlc3Rpb25zLlxuICAxMjpcdFxuICAxMzpcdGlmIFdMQU5fVkVORE9SX0lOVEVSU0lMXG4gIDE0Olx0XG4gIDE1Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9LY29uZmlnXCYjMzQ7XG4gIDE2Olx0XG4gIDE3Olx0ZW5kaWYgIyBXTEFOX1ZFTkRPUl9JTlRFUlNJTFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwNzoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTIzMQoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDE3NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFVzYWdlIG9mIGBwNTRfZmluZF9pZWAqKgoKT2theSwgbGV0JiMzOTtzIHNlZSB3aGVyZSB0aGlzIGBwNTRfZmluZF9pZWAgZnVuY3Rpb24gaXMgYmVpbmcgdXNlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGNhbGwgZ3JhcGggd2l0aGluIHRoZSBwNTQgZHJpdmVyLiBGaXJzdCwgbGV0JiMzOTtzIGxvb2sgYXQgdGhlIGRpcmVjdCBjYWxsZXJzLiBBaCwgaGVyZSB3ZSBnbywgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmNgLCBgcDU0X2ZpbmRfaWVgIGlzIGNsZWFybHkgaW52b2tlZCBieSBgcDU0X2JlYWNvbl9mb3JtYXRfaWVfdGltYC4gUmlnaHQsIGFuZCBgcDU0X2JlYWNvbl9mb3JtYXRfaWVfdGltYCBpcyBwYXJ0IG9mIHRoZSBiZWFjb24gdXBkYXRlIHByb2Nlc3MsIGNhbGxlZCB0aHJvdWdoIGBwNTRfYmVhY29uX3VwZGF0ZWAgd2hpY2ggaXMgZHJpdmVuIGJ5IGNoYW5nZXMgaW4gYHA1NF9ic3NfaW5mb19jaGFuZ2VkYC4gVGhhdCBtYWtlcyBzZW5zZTsgaXQmIzM5O3MgcHJvYmFibHkgcGFyc2luZyBvciBmb3JtYXR0aW5nIGluZm9ybWF0aW9uIGVsZW1lbnRzIGZvciB0aGUgYmVhY29uLgoKTm93LCBvdmVyIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jYCwgSSBzZWUgYW5vdGhlciBjYWxsOiBgcDU0X3BzcG9sbF93b3JrYXJvdW5kYCBjYWxscyBgcDU0X2ZpbmRfaWVgLiBBbmQgdGhhdCYjMzk7cyBpbnZva2VkIHdpdGhpbiB0aGUgYHA1NF9yeF9kYXRhYCBmdW5jdGlvbi4gVGhhdCYjMzk7cyBpbnRlcmVzdGluZywgc3VnZ2VzdGluZyBpdCYjMzk7cyBhbHNvIGJlaW5nIHVzZWQgZHVyaW5nIHJlY2VpdmUgcHJvY2Vzc2luZy4gSSB3b25kZXIgd2hhdCBpdCYjMzk7cyBkb2luZyB0aGVyZS4gSSBzaG91bGQgdGFrZSBhIGNsb3NlciBsb29rIGF0IGBwNTRfcnhfZGF0YWAgdG8gZ2V0IHRoZSBjb250ZXh0IGFuZCB1bmRlcnN0YW5kIGhvdyBpdCBoYW5kbGVzIGluY29taW5nIHBhY2tldHMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgdG8gdGhlIG92ZXJhbGwgZHJpdmVyIGJlaGF2aW9yLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwNzoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwNTRfcnhfZGF0YSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jPTI3PWludCBwNTRfcGFyc2VfZmlybXdhcmUoc3RydWN0IGllZWU4MDIxMV9odyAqZGV2LCBjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtOTQtXHRcdFx0bWF4bGVuID0gcHJpdi1cdTAwM2V0eF9oZHJfbGVuICYjNDM7IC8qIFVTQiBkZXZpY2VzICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jOjk1Olx0XHRcdFx0IHNpemVvZihzdHJ1Y3QgcDU0X3J4X2RhdGEpICYjNDM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTk2LVx0XHRcdFx0IDQgJiM0MzsgLyogcnggYWxpZ25tZW50ICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaD0xNTM9ZW51bSBwNTRfcnhfZGVjcnlwdF9zdGF0dXMge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmgtMTY2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoxNjc6c3RydWN0IHA1NF9yeF9kYXRhIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmgtMTY4LVx0X19sZTE2IGZsYWdzO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmM9Mjk0PXN0YXRpYyB2b2lkIHA1NF9wc3BvbGxfd29ya2Fyb3VuZChzdHJ1Y3QgcDU0X2NvbW1vbiAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jLTMyNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmM6MzI3OnN0YXRpYyBpbnQgcDU0X3J4X2RhdGEoc3RydWN0IHA1NF9jb21tb24gKnByaXYsIHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jLTMyOC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jOjMyOTpcdHN0cnVjdCBwNTRfcnhfZGF0YSAqaGRyID0gKHN0cnVjdCBwNTRfcnhfZGF0YSAqKSBza2ItXHUwMDNlZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmMtMzMwLVx0c3RydWN0IGllZWU4MDIxMV9yeF9zdGF0dXMgKnJ4X3N0YXR1cyA9IElFRUU4MDIxMV9TS0JfUlhDQihza2IpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmM9Njg0PWludCBwNTRfcngoc3RydWN0IGllZWU4MDIxMV9odyAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmMtNjkxLVx0ZWxzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYzo2OTI6XHRcdHJldHVybiBwNTRfcnhfZGF0YShwcml2LCBza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYy02OTMtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwNzoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjQzNAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDU4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOgoKKipSWCBEYXRhIEZsb3cgVmVyaWZpY2F0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gZm9jdXNpbmcgb24gdGhlIHJlY2VpdmUgcGF0aCBoZXJlLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgcDU0YCBkcml2ZXIuIEkmIzM5O20gc3RhcnRpbmcgd2l0aCBgcDU0X3J4X2RhdGFgIOKAkyB0aGF0JiMzOTtzIHRoZSBrZXkgZnVuY3Rpb24gSSBuZWVkIHRvIHVuZGVyc3RhbmQuIE15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCBgcDU0X3J4X2RhdGFgIGlzIHRoZSBjb3JlIG9mIHRoZSBkYXRhIHByb2Nlc3NpbmcgdGhhdCBoYXBwZW5zIG9uIHRoZSByZWNlaXZlIHNpZGUuIEl0JiMzOTtzIGNhbGxlZCBieSBgcDU0X3J4YCwgd2hpY2ggaXRzZWxmIGlzIHRyaWdnZXJlZCB3aGVuIHRoZSBVU0IgZGV2aWNlIGhhbmRzIG92ZXIgYSBmcmFtZS4gU28sIEkgbmVlZCB0byB0cmFjZSB0aGlzIHNlcXVlbmNlOiBmcm9tIHRoZSBVU0IgaW50ZXJmYWNlIChgcDU0dXNiX3J4X2NiYCBvciBlcXVpdmFsZW50KSwgZG93biBpbnRvIGBwNTRfcnhgLCBhbmQgdGhlbiB0byBgcDU0X3J4X2RhdGFgLiBNYWtlcyBzZW5zZSwgdGhlIFVTQiBpbnRlcmZhY2UgZGV0ZWN0cyBhIGZyYW1lIGFuZCBpdCBpcyBwYXNzZWQgaW50byBgcDU0X3J4X2NiYCwgd2hpY2gsIHRoZW4gY2FsbHMgYHA1NF9yeGAgd2hpY2ggaXMgcmVzcG9uc2libGUgdG8gaGFuZGxlIHRoZSBmcmFtZSBhbmQsIHRoZW4gaXQgY2FsbHMgYHA1NF9yeF9kYXRhYCB0byBwcm9wZXJseSBwcm9jZXNzIHRoZSBpbmNvbWluZyBkYXRhLCBvciBzbyBJIGFzc3VtZS4gSXQmIzM5O3MgcmVhbGx5IHRoZSBkYXRhIHByb2Nlc3NpbmcgSSBuZWVkIHRvIHVuZGVyc3RhbmQuIExldCYjMzk7cyB2ZXJpZnkgdGhpcywgSSBuZWVkIHRvIGdldCBkb3duIGludG8gdGhlIGBwNTR1c2JgIFJYIHBhdGggdG8gY29uZmlybSB0aGlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwNzoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwNTRfcngmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYz0yNz1pbnQgcDU0X3BhcnNlX2Zpcm13YXJlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmRldiwgY29uc3Qgc3RydWN0IGZpcm13YXJlICpmdylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTk0LVx0XHRcdG1heGxlbiA9IHByaXYtXHUwMDNldHhfaGRyX2xlbiAmIzQzOyAvKiBVU0IgZGV2aWNlcyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYzo5NTpcdFx0XHRcdCBzaXplb2Yoc3RydWN0IHA1NF9yeF9kYXRhKSAmIzQzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy05Ni1cdFx0XHRcdCA0ICYjNDM7IC8qIHJ4IGFsaWdubWVudCAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg9MTM1PXN0cnVjdCBwNTRfZWVwcm9tX2xtODYge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmgtMTUyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoxNTM6ZW51bSBwNTRfcnhfZGVjcnlwdF9zdGF0dXMge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaC0xNTQtXHRQNTRfREVDUllQVF9OT05FID0gMCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oLTE2Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MTY3OnN0cnVjdCBwNTRfcnhfZGF0YSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oLTE2OC1cdF9fbGUxNiBmbGFncztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvcDU0Lmg9MTY0PXN0cnVjdCBwNTRfY29tbW9uIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvcDU0LmgtMjY2LS8qIGludGVyZmFjZXMgZm9yIHRoZSBkcml2ZXJzICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvcDU0Lmg6MjY3OmludCBwNTRfcngoc3RydWN0IGllZWU4MDIxMV9odyAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9wNTQuaC0yNjgtdm9pZCBwNTRfZnJlZV9za2Ioc3RydWN0IGllZWU4MDIxMV9odyAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvcDU0cGNpLmM9MTg0PXN0YXRpYyB2b2lkIHA1NHBfY2hlY2tfcnhfcmluZyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpkZXYsIHUzMiAqaW5kZXgsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3A1NHBjaS5jLTIyMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9wNTRwY2kuYzoyMjM6XHRcdGlmIChwNTRfcngoZGV2LCBza2IpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvcDU0cGNpLmMtMjI0LVx0XHRcdGRtYV91bm1hcF9zaW5nbGUoXHUwMDI2cHJpdi1cdTAwM2VwZGV2LVx1MDAzZWRldiwgZG1hX2FkZHIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3A1NHNwaS5jPTMxND1zdGF0aWMgaW50IHA1NHNwaV9yeChzdHJ1Y3QgcDU0c19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9wNTRzcGkuYy0zNjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvcDU0c3BpLmM6MzYzOlx0aWYgKHA1NF9yeChwcml2LVx1MDAzZWh3LCBza2IpID09IDApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvcDU0c3BpLmMtMzY0LVx0XHRkZXZfa2ZyZWVfc2tiKHNrYik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3A1NHVzYi5jPTE0MD1zdGF0aWMgdm9pZCBwNTR1X3J4X2NiKHN0cnVjdCB1cmIgKnVyYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvcDU0dXNiLmMtMTYyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3A1NHVzYi5jOjE2MzpcdGlmIChwNTRfcngoZGV2LCBza2IpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvcDU0dXNiLmMtMTY0LVx0XHRza2IgPSBkZXZfYWxsb2Nfc2tiKHByaXYtXHUwMDNlY29tbW9uLnJ4X210dSAmIzQzOyAzMik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYz0yOTQ9c3RhdGljIHZvaWQgcDU0X3BzcG9sbF93b3JrYXJvdW5kKHN0cnVjdCBwNTRfY29tbW9uICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmMtMzI2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYzozMjc6c3RhdGljIGludCBwNTRfcnhfZGF0YShzdHJ1Y3QgcDU0X2NvbW1vbiAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmMtMzI4LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmM6MzI5Olx0c3RydWN0IHA1NF9yeF9kYXRhICpoZHIgPSAoc3RydWN0IHA1NF9yeF9kYXRhICopIHNrYi1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYy0zMzAtXHRzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqcnhfc3RhdHVzID0gSUVFRTgwMjExX1NLQl9SWENCKHNrYik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYy0zOTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jOjM5OTpzdGF0aWMgdm9pZCBwNTRfcnhfZnJhbWVfc2VudChzdHJ1Y3QgcDU0X2NvbW1vbiAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmMtNDAwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jLTQ4Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmM6NDg4OnN0YXRpYyB2b2lkIHA1NF9yeF9lZXByb21fcmVhZGJhY2soc3RydWN0IHA1NF9jb21tb24gKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jLTQ4OS1cdFx0XHRcdCAgIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYy01MjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jOjUyNTpzdGF0aWMgdm9pZCBwNTRfcnhfc3RhdHMoc3RydWN0IHA1NF9jb21tb24gKnByaXYsIHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jLTUyNi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYy02MTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jOjYxOTpzdGF0aWMgdm9pZCBwNTRfcnhfdHJhcChzdHJ1Y3QgcDU0X2NvbW1vbiAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmMtNjIwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jLTY1NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmM6NjU1OnN0YXRpYyBpbnQgcDU0X3J4X2NvbnRyb2woc3RydWN0IHA1NF9jb21tb24gKnByaXYsIHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jLTY1Ni17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYy02NjAtXHRjYXNlIFA1NF9DT05UUk9MX1RZUEVfVFhET05FOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYzo2NjE6XHRcdHA1NF9yeF9mcmFtZV9zZW50KHByaXYsIHNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jLTY2Mi1cdFx0YnJlYWs7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jLTY2My1cdGNhc2UgUDU0X0NPTlRST0xfVFlQRV9UUkFQOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYzo2NjQ6XHRcdHA1NF9yeF90cmFwKHByaXYsIHNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jLTY2NS1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYy02NjgtXHRjYXNlIFA1NF9DT05UUk9MX1RZUEVfU1RBVF9SRUFEQkFDSzpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmM6NjY5Olx0XHRwNTRfcnhfc3RhdHMocHJpdiwgc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmMtNjcwLVx0XHRicmVhaztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmMtNjcxLVx0Y2FzZSBQNTRfQ09OVFJPTF9UWVBFX0VFUFJPTV9SRUFEQkFDSzpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmM6NjcyOlx0XHRwNTRfcnhfZWVwcm9tX3JlYWRiYWNrKHByaXYsIHNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jLTY3My1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYy02ODMtLyogcmV0dXJucyB6ZXJvIGlmIHNrYiBjYW4gYmUgcmV1c2VkICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jOjY4NDppbnQgcDU0X3J4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmMtNjg1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jLTY4OS1cdGlmICh0eXBlIFx1MDAyNiBQNTRfSERSX0ZMQUdfQ09OVFJPTClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmM6NjkwOlx0XHRyZXR1cm4gcDU0X3J4X2NvbnRyb2wocHJpdiwgc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmMtNjkxLVx0ZWxzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYzo2OTI6XHRcdHJldHVybiBwNTRfcnhfZGF0YShwcml2LCBza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYy02OTMtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYzo2OTQ6RVhQT1JUX1NZTUJPTF9HUEwocDU0X3J4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmMtNjk1LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwNzoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTM1NAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDM0OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgYHA1NF9maW5kX2llYCBWdWxuZXJhYmlsaXR5KioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCBhIG1vZGlmaWNhdGlvbiB0byBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uY2AsIHNwZWNpZmljYWxseSB0aGUgYHA1NF9maW5kX2llYCBmdW5jdGlvbi4gVGhpcyBpcyBjcml0aWNhbCBiZWNhdXNlIGl0JiMzOTtzIHJlc3BvbnNpYmxlIGZvciBwYXJzaW5nIEluZm9ybWF0aW9uIEVsZW1lbnRzIChJRXMpIHdpdGhpbiBJRUVFIDgwMi4xMSBtYW5hZ2VtZW50IGZyYW1lcyBsaWtlIGJlYWNvbnMuIFRoZSBwYXRjaCYjMzk7cyBjb3JlIGNoYW5nZSBpcyB0aGUgcmVtb3ZhbCBvZiB0aGUgaW5pdGlhbCBsZW5ndGggY2hlY2s6ICB0aGUgYGlmIChza2ItJmd0O2xlbiAmbHQ7PSBzaXplb2YobWdtdCkpYCBzdGF0ZW1lbnQuCgpUaGF0JiMzOTtzIGltbWVkaWF0ZWx5IGNvbmNlcm5pbmcuICBSZW1vdmluZyB0aGF0IGNoZWNrIGRpcmVjdGx5IGFsdGVycyB0aGUgYm91bmRhcnkgdmFsaWRhdGlvbiAqYmVmb3JlKiB0aGUgY3J1Y2lhbCBjYWxjdWxhdGlvbiBvZiBgcG9zID0gKHU4ICopbWdtdC0mZ3Q7dS5iZWFjb24udmFyaWFibGU7YC4gRXNzZW50aWFsbHksIGl0JiMzOTtzIGEgY2xhc3NpYyBidWZmZXIgb3ZlcmZsb3cgc2V0dXA7IHdlJiMzOTtyZSBub3cgbW9yZSB2dWxuZXJhYmxlIHRvIHN1cHBseWluZyBjcmFmdGVkIGZyYW1lcyB0aGF0IHRoZSBjb2RlICp0aGlua3MqIGlzIHZhbGlkLgoKVGhlIGdvb2QgbmV3cyAoZm9yIG1lLCBhcyBhIGZ1enppbmcgZXhwZXJ0KSBpcyB0aGF0IHRoaXMgY29kZSBwYXRoIGlzIGRlZmluaXRlbHkgcmVhY2hhYmxlLiAgV2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgdmlydHVhbCBvciBlbXVsYXRlZCBVU0IgZGV2aWNlcyB1c2luZyBgcDU0dXNiYCwgYW5kIHRoZSBNQUM4MDIxMSBBUC9iZWFjb24gZnJhbWUgaGFuZGxpbmcuIFNvLCBpdCYjMzk7cyBleHBsb2l0YWJsZSwgd2hpY2ggbWVhbnMgaXQmIzM5O3Mgd29ydGggb3VyIHRpbWUuIFdvcnRoRnV6emluZyA9IFRydWUuCgpOb3csIGxldCYjMzk7cyBuYWlsIGRvd24gdGhlIHJlcXVpcmVkIGNvbmZpZ3VyYXRpb25zLiBJJiMzOTttIGdvaW5nIHRvIG5lZWQ6CgoqICAgYFA1NF9DT01NT05gIC0gdGhhdCYjMzk7cyBhIGdpdmVuIGZvciB0aGUgZHJpdmVyLgoqICAgYFA1NF9VU0JgIC0gc2luY2UgdGhpcyBmb2N1c2VzIG9uIFVTQi1iYXNlZCBkZXZpY2VzLgoqICAgYE1BQzgwMjExYCAtIHRvIGhhbmRsZSB0aGUgODAyLjExIHByb3RvY29sLgoqICAgYFVTQmAgLSB0aGUgYmFzZSBVU0IgY29uZmlndXJhdGlvbiwgb2YgY291cnNlLgoqICAgYFdMQU5fVkVORE9SX0lOVEVSU0lMYCAtIHRoYXQmIzM5O3MgdGhlIGtleSBvbmUsIHRoZSBvbmUgdGhhdCB0aWVzIGl0IGFsbCB0b2dldGhlci4KCkxldCBtZSBqdXN0IGRvdWJsZS1jaGVjayB0aGF0IGBXTEFOX1ZFTkRPUl9JTlRFUlNJTGAgaXMgcHJvcGVybHkgaW5jbHVkZWQgaW4gS2NvbmZpZzogTG9va3MgbGlrZSBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvS2NvbmZpZ2AgaXQgaXMgY29ycmVjdGx5IHNvdXJjZWQ6IGBpZiBXTEFOX1ZFTkRPUl9JTlRFUlNJTCBzb3VyY2UgJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvS2NvbmZpZyYjMzQ7IGVuZGlmYC4gVGhlbiwgSSYjMzk7bGwgcXVpY2tseSBsb29rIHVwIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9LY29uZmlnYCB0byBjb25maXJtIHRoYXQgdGhlIGludGVyc2lsIHNvdXJjZSBpcyBjb3JyZWN0LiBPa2F5LCB0aW1lIHRvIGdlbmVyYXRlIHNvbWUgdGVzdCBjYXNlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDc6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aW50ZXJzaWwvS2NvbmZpZyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWc9MjU9c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWc6MjY6c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWctMjctc291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvS2NvbmZpZ1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwNzoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjMzMwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKkFuYWx5emluZyB0aGUgS2NvbmZpZyBmb3IgV2lyZWxlc3MgTmV0d29ya2luZyBEcml2ZXJzKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGluLiBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB0aGUgd2lyZWxlc3MgbmV0d29ya2luZyBjb25maWd1cmF0aW9uIG9wdGlvbnMuIE15IGluc3RpbmN0IHRlbGxzIG1lIHRvIHN0YXJ0IHdpdGggdGhlIG1haW4gYEtjb25maWdgIGZpbGUgZm9yIHdpcmVsZXNzIGRyaXZlcnMuIEkmIzM5O20gZm9jdXNpbmcgb24gdGhhdCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvS2NvbmZpZ2AgZmlsZSwgc3BlY2lmaWNhbGx5IGFyb3VuZCBsaW5lIDI2LiBJJiMzOTttIGV4cGVjdGluZyB0aGF0IGFyZWEgdG8gY29udGFpbiBhIGhpZ2gtbGV2ZWwgb3ZlcnZpZXcgb3IgcGVyaGFwcyB0aGUgZGVmYXVsdCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEhvcGVmdWxseSwgSSYjMzk7bGwgZmluZCB0aGUgY29yZSBzdHJ1Y3R1cmUgb2YgaG93IHRoZXNlIGRyaXZlcnMgYXJlIG9yZ2FuaXplZCBhbmQgZW5hYmxlZCB0aGVyZS4gVGhpcyBzaG91bGQgcHJvdmlkZSBhIHNvbGlkIGJhc2UgZm9yIHVuZGVyc3RhbmRpbmcgaG93IGFsbCBvZiB0aGVzZSBzcGVjaWZpYyB3aXJlbGVzcyBpbXBsZW1lbnRhdGlvbnMgZml0IHRvZ2V0aGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwNzoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDM1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHQjXG4gICAzOlx0IyBXaXJlbGVzcyBMQU4gZGV2aWNlIGNvbmZpZ3VyYXRpb25cbiAgIDQ6XHQjXG4gICA1Olx0XG4gICA2Olx0bWVudWNvbmZpZyBXTEFOXG4gICA3Olx0XHRib29sIFwmIzM0O1dpcmVsZXNzIExBTlwmIzM0O1xuICAgODpcdFx0ZGVwZW5kcyBvbiAhUzM5MFxuICAgOTpcdFx0ZGVwZW5kcyBvbiBORVRcbiAgMTA6XHRcdHNlbGVjdCBXSVJFTEVTU1xuICAxMTpcdFx0ZGVmYXVsdCB5XG4gIDEyOlx0XHRoZWxwXG4gIDEzOlx0XHQgIFRoaXMgc2VjdGlvbiBjb250YWlucyBhbGwgdGhlIHByZSA4MDIuMTEgYW5kIDgwMi4xMSB3aXJlbGVzc1xuICAxNDpcdFx0ICBkZXZpY2UgZHJpdmVycy4gRm9yIGEgY29tcGxldGUgbGlzdCBvZiBkcml2ZXJzIGFuZCBkb2N1bWVudGF0aW9uXG4gIDE1Olx0XHQgIG9uIHRoZW0gcmVmZXIgdG8gdGhlIHdpcmVsZXNzIHdpa2k6XG4gIDE2Olx0XG4gIDE3Olx0XHQgIGh0dHBzOi8vd2lyZWxlc3Mud2lraS5rZXJuZWwub3JnL2VuL3VzZXJzL0RyaXZlcnNcbiAgMTg6XHRcbiAgMTk6XHRpZiBXTEFOXG4gIDIwOlx0XG4gIDIxOlx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2FkbXRlay9LY29uZmlnXCYjMzQ7XG4gIDIyOlx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9LY29uZmlnXCYjMzQ7XG4gIDIzOlx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0bWVsL0tjb25maWdcJiMzNDtcbiAgMjQ6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vS2NvbmZpZ1wmIzM0O1xuICAyNTpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9LY29uZmlnXCYjMzQ7XG4gIDI2Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL0tjb25maWdcJiMzNDtcbiAgMjc6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9LY29uZmlnXCYjMzQ7XG4gIDI4Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL0tjb25maWdcJiMzNDtcbiAgMjk6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL0tjb25maWdcJiMzNDtcbiAgMzA6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9LY29uZmlnXCYjMzQ7XG4gIDMxOlx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9LY29uZmlnXCYjMzQ7XG4gIDMyOlx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3B1cmVsaWZpL0tjb25maWdcJiMzNDtcbiAgMzM6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL0tjb25maWdcJiMzNDtcbiAgMzQ6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9LY29uZmlnXCYjMzQ7XG4gIDM1Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9LY29uZmlnXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA3OjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3MDYxCgkJCQkJCQlvdXRwdXQ6IDE3NAoJCQkJCQkJdGhvdWdodHM6IDY3OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgUHJpc201NCBEcml2ZXIgUGF0Y2gqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkmIzM5O3ZlIGlkZW50aWZpZWQgdGhlIGtleSBjb25maWd1cmF0aW9uczogYFA1NF9DT01NT05gLCBgUDU0X1VTQmAsIGBQNTRfUENJYCwgYFA1NF9TUElgLCBgTUFDODAyMTFgLCBgV0xBTl9WRU5ET1JfSU5URVJTSUxgLCBgV0xBTmAsIGFuZCBgVVNCYC4gVGhlc2UgYXJlIHRoZSBmb3VuZGF0aW9uYWwgYnVpbGRpbmcgYmxvY2tzIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBlbnZpcm9ubWVudCBpbiB3aGljaCB0aGlzIGNoYW5nZSBvcGVyYXRlcy4KCk15IHByaW1hcnkgZm9jdXMgaXMgdGhlIG1vZGlmaWVkIGZ1bmN0aW9uLCBgcDU0X2ZpbmRfaWVgLiBJdCYjMzk7cyBub24tc3RhdGljLCB3aGljaCBtZWFucyBpdCYjMzk7cyBhY2Nlc3NpYmxlIGZyb20gb3RoZXIgcGFydHMgb2YgdGhlIGRyaXZlci4gSSYjMzk7dmUgcGlucG9pbnRlZCBpdHMgZGlyZWN0IGNhbGxlcnMgYW5kIHJlbGF0ZWQgZW50cnkgcG9pbnRzOiBgcDU0X2JlYWNvbl9mb3JtYXRfaWVfdGltYCwgYHA1NF9wc3BvbGxfd29ya2Fyb3VuZGAsIGFuZCBgcDU0X2JlYWNvbl91cGRhdGVgLiBEaWdnaW5nIGRlZXBlciwgSSBjb25maXJtZWQgd2hpY2ggb2YgdGhvc2UgYXJlIHN0YXRpYyBhbmQgd2hlcmUgdGhleSYjMzk7cmUgbG9jYXRlZC4gYHA1NF9iZWFjb25fZm9ybWF0X2llX3RpbWAsIGBwNTRfYmVhY29uX3VwZGF0ZWAsIGFuZCBgcDU0X2Jzc19pbmZvX2NoYW5nZWRgIGFyZSBhbGwgc3RhdGljIGFuZCBpbiBgbWFpbi5jYCwgd2hpbGUgYHA1NF9wc3BvbGxfd29ya2Fyb3VuZGAgaXMgc3RhdGljIGFuZCBpbiBgdHhyeC5jYC4gSSYjMzk7dmUgYWxzbyBub3RlZCB0aGF0IGBwNTRfcnhfZGF0YWAgaXMgc3RhdGljIGluIGB0eHJ4LmNgLCBhbmQgdGhhdCBgcDU0X3J4YCBpcyBhbiBleHBvcnRlZCBzeW1ib2wgaW4gYHR4cnguY2AuCgpJIG5lZWQgdG8gY29uZmlybSB0aGF0IG15IHByaW1hcnkgZm9jdXMgcmVtYWlucyBgcDU0X2ZpbmRfaWVgLiBBbHNvLCBJJiMzOTt2ZSBjb25maXJtZWQgdGhhdCBgcDU0X2JlYWNvbl9mb3JtYXRfaWVfdGltYCBhbmQgYHA1NF9wc3BvbGxfd29ya2Fyb3VuZGAgKmRpcmVjdGx5KiBjYWxsIGBwNTRfZmluZF9pZWAuCgpOb3csIHRoZSBjcnVjaWFsIHBhcnQ6IGFzc2Vzc2luZyB0aGUgZnV6emFiaWxpdHkuIFRoZSBwYXRjaCBhbHRlcnMgYHA1NF9maW5kX2llYCBieSByZW1vdmluZyBhbiBpbml0aWFsIGZyYW1lIGxlbmd0aCBjaGVjayAqYmVmb3JlKiBwYXJzaW5nIElFcy4gVGhpcyBpcyBhIHJlZCBmbGFnLiBUaGUgcmVhc29uaW5nIGlzIGNsZWFyOiBXaXRob3V0IHRoYXQgY2hlY2ssIG1hbGZvcm1lZCBvciBzaG9ydCBwYWNrZXRzIGNvdWxkIGxlYWQgdG8gb3V0LW9mLWJvdW5kcyByZWFkcyBvciBpbnZhbGlkIHBvaW50ZXIgYXJpdGhtZXRpYy4gV2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgYSB3aXJlbGVzcyBkcml2ZXIsIGFuZCBzcGVjaWZpY2FsbHkgUHJpc201NCwgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSB2aXJ0dWFsaXplZC9lbXVsYXRlZCBVU0IgZGV2aWNlcyBhbmQgTUFDODAyMTEgYmVhY29uL2RhdGEgZnJhbWUgcHJvY2Vzc2luZy4gVGhpcyBpcyBwcmltZSBmdXp6aW5nIHRlcnJpdG9yeS4KClRoZXJlZm9yZSwgdGhpcyBjaGFuZ2UgaXMgZGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nIGFuZCB3aWxsIGdpdmUgdGhlIGZvbGxvd2luZyBhcyB0aGUgb3V0cHV0IGZyb20gc2V0LXJlc3VsdHMuCi0gV29ydGhGdXp6aW5nOiB0cnVlCi0gUmVhc29uaW5nOiBDb25jaXNlIGV4cGxhbmF0aW9uIG9mIHdoeSBpdCYjMzk7cyB3b3J0aCBmdXp6aW5nOiBUaGUgcGF0Y2ggbW9kaWZpZXMgYHA1NF9maW5kX2llKClgIGluIHRoZSBQcmlzbTU0IHdpcmVsZXNzIGRyaXZlciBieSByZW1vdmluZyBhbiBpbml0aWFsIGZyYW1lIGxlbmd0aCBjaGVjayBwcmlvciB0byBwYXJzaW5nIGluZm9ybWF0aW9uIGVsZW1lbnRzIChJRXMpLiBUaGUgZHJpdmVyIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSB2aXJ0dWFsaXplZC9lbXVsYXRlZCBVU0IgZGV2aWNlcyAoYHA1NHVzYmApIGFuZCBtYWM4MDIxMSBiZWFjb24vZGF0YSBmcmFtZSBwcm9jZXNzaW5nLCB3YXJyYW50aW5nIGZ1enppbmcgdG8gZW5zdXJlIG1hbGZvcm1lZCBvciBzaG9ydCBwYWNrZXRzIGNhbm5vdCB0cmlnZ2VyIG91dC1vZi1ib3VuZHMgcmVhZHMgb3IgaW52YWxpZCBwb2ludGVyIGFyaXRobWV0aWMuCi0gRm9jdXNTeW1ib2xzOiBgWyYjMzQ7cDU0X2ZpbmRfaWUmIzM0OywgJiMzNDtwNTRfYmVhY29uX2Zvcm1hdF9pZV90aW0mIzM0OywgJiMzNDtwNTRfcHNwb2xsX3dvcmthcm91bmQmIzM0O11gCi0gRW5hYmxlQ29uZmlnczogYFsmIzM0O1A1NF9DT01NT04mIzM0OywgJiMzNDtQNTRfVVNCJiMzNDssICYjMzQ7TUFDODAyMTEmIzM0OywgJiMzNDtXTEFOX1ZFTkRPUl9JTlRFUlNJTCYjMzQ7XWAKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDc6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1A1NF9DT01NT04mIzM0OywKICAgICYjMzQ7UDU0X1VTQiYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtXTEFOX1ZFTkRPUl9JTlRFUlNJTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3A1NF9maW5kX2llJiMzNDssCiAgICAmIzM0O3A1NF9iZWFjb25fZm9ybWF0X2llX3RpbSYjMzQ7LAogICAgJiMzNDtwNTRfcHNwb2xsX3dvcmthcm91bmQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGZyYW1lIHZhbGlkYXRpb24gbG9naWMgaW4gcDU0X2ZpbmRfaWUoKSBieSByZW1vdmluZyBhIGxlbmd0aCBjaGVjayBwcmlvciB0byBwYXJzaW5nIGluZm9ybWF0aW9uIGVsZW1lbnRzLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSBlbXVsYXRlZCBVU0IgZGV2aWNlcyAocDU0dXNiKSBhbmQgbWFjODAyMTEgYmVhY29uL2ZyYW1lIGhhbmRsaW5nLiBGdXp6aW5nIGlzIHdhcnJhbnRlZCB0byBjaGVjayBmb3Igb3V0LW9mLWJvdW5kcyByZWFkcyBvciByZWdyZXNzaW9ucyB3aXRoIHRydW5jYXRlZCBwYWNrZXRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtQNTRfQ09NTU9OJiMzNDssCiAgICAmIzM0O1A1NF9VU0ImIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7V0xBTl9WRU5ET1JfSU5URVJTSUwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtwNTRfZmluZF9pZSYjMzQ7LAogICAgJiMzNDtwNTRfYmVhY29uX2Zvcm1hdF9pZV90aW0mIzM0OywKICAgICYjMzQ7cDU0X3BzcG9sbF93b3JrYXJvdW5kJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBmcmFtZSB2YWxpZGF0aW9uIGxvZ2ljIGluIHA1NF9maW5kX2llKCkgYnkgcmVtb3ZpbmcgYSBsZW5ndGggY2hlY2sgcHJpb3IgdG8gcGFyc2luZyBpbmZvcm1hdGlvbiBlbGVtZW50cy4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgZW11bGF0ZWQgVVNCIGRldmljZXMgKHA1NHVzYikgYW5kIG1hYzgwMjExIGJlYWNvbi9mcmFtZSBoYW5kbGluZy4gRnV6emluZyBpcyB3YXJyYW50ZWQgdG8gY2hlY2sgZm9yIG91dC1vZi1ib3VuZHMgcmVhZHMgb3IgcmVncmVzc2lvbnMgd2l0aCB0cnVuY2F0ZWQgcGFja2V0cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDc6MjE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwNzoyMTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlbW92ZXMgYW4gZXJyb25lb3VzIGNoZWNrIGBpZiAoc2tiLVx1MDAzZWxlbiBcdTAwM2M9IHNpemVvZihtZ210KSlgIGluIGBwNTRfZmluZF9pZSgpYCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uY2AuXG5cbktBU0FOIHZzLiBLTVNBTiBhbmFseXNpczpcbjEuIEtNU0FOIGFwcGxpY2FiaWxpdHk6IEtNU0FOIGRldGVjdHMgdXNlIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IChzdGFjay9oZWFwL3BhZ2UpIGFuZCBrZXJuZWwtdG8tdXNlciBpbmZvLWxlYWtzLiBUaGlzIHBhdGNoIGRvZXMgbm90IGFsbG9jYXRlIG5ldyB1bmluaXRpYWxpemVkIGJ1ZmZlcnMsIGRvZXMgbm90IGludHJvZHVjZSB1bmluaXRpYWxpemVkIHN0YWNrIG9yIGhlYXAgdmFyaWFibGVzLCBkb2VzIG5vdCBjb3B5IGtlcm5lbCBkYXRhIHRvIHVzZXIgc3BhY2UsIGFuZCBkb2VzIG5vdCBhbHRlciBsb2dpYyB0byBicmFuY2ggb24gdW5pbml0aWFsaXplZCB2YWx1ZXMuIFRoZSBza2IgYnVmZmVyIGNvbnRhaW5zIHJlY2VpdmVkL2NvbnN0cnVjdGVkIGZyYW1lIGRhdGEuXG4yLiBLQVNBTiBhcHBsaWNhYmlsaXR5OiBBbnkgcG90ZW50aWFsIG1lbW9yeSBzYWZldHkgaXNzdWUgY2F1c2VkIGJ5IHJlbW92aW5nIHRoZSBjaGVjayAoZS5nLiwgaWYgYSBtYWxmb3JtZWQgc2tiIHdpdGggYSBsZW5ndGggc21hbGxlciB0aGFuIHRoZSBiZWFjb24gaGVhZGVyIHdlcmUgcGFyc2VkIGFuZCBsZWQgdG8gYW4gb3V0LW9mLWJvdW5kcyByZWFkKSB3b3VsZCByZXByZXNlbnQgYW4gb3V0LW9mLWJvdW5kcyBidWZmZXIgYWNjZXNzLCB3aGljaCBpcyB0cmFja2VkIGFuZCBkZXRlY3RlZCBieSBLQVNBTi5cblxuVGhlcmVmb3JlLCB0aGlzIGNoYW5nZSBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLCBhbmQgYSBkZWRpY2F0ZWQgS01TQU4gc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAyOTNjOGU5ZGE3YjQ2ODVjNGVkNzM5N2QxYjBlYTAxMTgyNDg3MzI2CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBTZXAgNyAwNzoyMDozNyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jCmluZGV4IDU3YTYyMTA4Y2JjMzUuLjhmOTIxZGM0ZWNkMzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYwpAQCAtNzYsOSAmIzQzOzc2LDYgQEAgdTggKnA1NF9maW5kX2llKHN0cnVjdCBza19idWZmICpza2IsIHU4IGllKQogCXN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdCA9ICh2b2lkICopc2tiLSZndDtkYXRhOwogCXU4ICpwb3MsICplbmQ7CiAKLQlpZiAoc2tiLSZndDtsZW4gJmx0Oz0gc2l6ZW9mKG1nbXQpKQotCQlyZXR1cm4gTlVMTDsKLQogCXBvcyA9ICh1OCAqKW1nbXQtJmd0O3UuYmVhY29uLnZhcmlhYmxlOwogCWVuZCA9IHNrYi0mZ3Q7ZGF0YSAmIzQzOyBza2ItJmd0O2xlbjsKIAl3aGlsZSAocG9zICZsdDsgZW5kKSB7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwNzoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTIzCgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMzg4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIExpbnV4IEtlcm5lbCBQYXRjaCBmb3IgS01TQU4gVGVzdGluZyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgc2FmZXR5IGNoZWNrOiB0aGlzIGlzIGEgUUEvdHJpYWdlIHRhc2ssIGZvY3VzZWQgb24gYSBwYXRjaCBmb3IgYSBMaW51eCBrZXJuZWwgZHJpdmVyLiBObyBleHBsb2l0IGdlbmVyYXRpb24gb3IgbWFsd2FyZSBjb25jZXJucywgc28gd2UmIzM5O3JlIGdvb2QgdG8gcHJvY2VlZC4gVGhlIHNwZWNpZmljIHJlcXVlc3QgaXMgdG8gZGV0ZXJtaW5lIGlmIHRoZSBwYXRjaCB0byBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uY2AgbmVjZXNzaXRhdGVzIEtNU0FOIHRlc3RpbmcuCgpOb3csIGxldCYjMzk7cyBleGFtaW5lIHRoZSBwYXRjaCBpdHNlbGYuIEl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgcmVtb3ZpbmcgYSBzaXplIGNoZWNrIHdpdGhpbiB0aGUgYHA1NF9maW5kX2llYCBmdW5jdGlvbi4gU3BlY2lmaWNhbGx5LCB0aGUgZGlmZiByZW1vdmVzIGEgY2hlY2sgYGlmIChza2ItJmd0O2xlbiAmbHQ7PSBzaXplb2YobWdtdCkpIHJldHVybiBOVUxMO2AuIFRoaXMgZnVuY3Rpb24gaXMgbGlrZWx5IHVzZWQgdG8gcGFyc2UgSW5mb3JtYXRpb24gRWxlbWVudHMgZnJvbSBhIHdpcmVsZXNzIGZyYW1lLCBzcGVjaWZpY2FsbHkgd2l0aGluIGJlYWNvbiBvciBwcm9iZSByZXNwb25zZSBmcmFtZXMuIFJlbW92aW5nIHRoaXMgY2hlY2sgY291bGQgaW50cm9kdWNlIHZ1bG5lcmFiaWxpdGllcyBpZiBgc2tiLSZndDtsZW5gIGlzIHNtYWxsZXIgdGhhbiBleHBlY3RlZCwgcG90ZW50aWFsbHkgbGVhZGluZyB0byBvdXQtb2YtYm91bmRzIHJlYWRzLiBUaGUgcmVtb3ZlZCBjaGVjayBwcmV2ZW50ZWQgYWNjZXNzIHRvIHRoZSBgdmFyaWFibGVgIGZpZWxkIG9mIHRoZSBgaWVlZTgwMjExX21nbXRgIHN0cnVjdCB3aGVuIHRoZSBmcmFtZSBsZW5ndGggd2FzIHRvbyBzbWFsbC4KCkdpdmVuIHRoaXMgY29udGV4dCwgcmVtb3ZpbmcgdGhlIHNpemUgY2hlY2sgaW4gYHA1NF9maW5kX2llYCBpcyBhIHBvdGVudGlhbCByZWQgZmxhZy4gTXkgaW50dWl0aW9uIGlzIHRoYXQgdGhpcyAqbWlnaHQqIGJlIHJpc2t5LCBidXQgSSBuZWVkIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgdG8gbWFrZSBhbiBpbmZvcm1lZCBkZWNpc2lvbi4gSSYjMzk7bSBnb2luZyB0byB1c2UgYHJlYWQtZmlsZWAgdG8gZ2V0IHRoZSBjb250ZXh0IG9mIHRoZSBjb2RlIGFyb3VuZCBsaW5lIDc2IGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jYC4gVGhpcyB3aWxsIGdpdmUgbWUgdGhlIGZ1bGwgcGljdHVyZSBvZiBob3cgYHA1NF9maW5kX2llYCBpcyB1c2VkIGFuZCB3aGVyZSBpdCYjMzk7cyBjYWxsZWQuIEJhc2VkIG9uIHRoaXMgaW5mb3JtYXRpb24sIEkgd2lsbCBkZWNpZGUgd2hldGhlciBgTmVlZHNLTVNBTj10cnVlYCBvciBgZmFsc2VgLiBNeSBpbml0aWFsIGxlYW5pbmcgaXMgdG93YXJkcyBgTmVlZHNLTVNBTj10cnVlYCBiZWNhdXNlIG9mIHRoZSBwb3RlbnRpYWwgZm9yIG91dC1vZi1ib3VuZHMgcmVhZHMsIGJ1dCBJIG5lZWQgbW9yZSBpbmZvcm1hdGlvbiB0byBiZSBzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwNzoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA2NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDY1Olx0XG4gIDY2Olx0c3RhdGljIGludCBwNTRfc2V0X3RpbShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpkZXYsIHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsXG4gIDY3Olx0XHRcdFx0Ym9vbCBzZXQpXG4gIDY4Olx0e1xuICA2OTpcdFx0c3RydWN0IHA1NF9jb21tb24gKnByaXYgPSBkZXYtXHUwMDNlcHJpdjtcbiAgNzA6XHRcbiAgNzE6XHRcdHJldHVybiBwNTRfdXBkYXRlX2JlYWNvbl90aW0ocHJpdiwgc3RhLVx1MDAzZWFpZCwgc2V0KTtcbiAgNzI6XHR9XG4gIDczOlx0XG4gIDc0Olx0dTggKnA1NF9maW5kX2llKHN0cnVjdCBza19idWZmICpza2IsIHU4IGllKVxuICA3NTpcdHtcbiAgNzY6XHRcdHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdCA9ICh2b2lkICopc2tiLVx1MDAzZWRhdGE7XG4gIDc3Olx0XHR1OCAqcG9zLCAqZW5kO1xuICA3ODpcdFxuICA3OTpcdFx0cG9zID0gKHU4ICopbWdtdC1cdTAwM2V1LmJlYWNvbi52YXJpYWJsZTtcbiAgODA6XHRcdGVuZCA9IHNrYi1cdTAwM2VkYXRhICYjNDM7IHNrYi1cdTAwM2VsZW47XG4gIDgxOlx0XHR3aGlsZSAocG9zIFx1MDAzYyBlbmQpIHtcbiAgODI6XHRcdFx0aWYgKHBvcyAmIzQzOyAyICYjNDM7IHBvc1sxXSBcdTAwM2UgZW5kKVxuICA4MzpcdFx0XHRcdHJldHVybiBOVUxMO1xuICA4NDpcdFxuICA4NTpcdFx0XHRpZiAocG9zWzBdID09IGllKVxuICA4NjpcdFx0XHRcdHJldHVybiBwb3M7XG4gIDg3Olx0XG4gIDg4Olx0XHRcdHBvcyAmIzQzOz0gMiAmIzQzOyBwb3NbMV07XG4gIDg5Olx0XHR9XG4gIDkwOlx0XHRyZXR1cm4gTlVMTDtcbiAgOTE6XHR9XG4gIDkyOlx0XG4gIDkzOlx0c3RhdGljIGludCBwNTRfYmVhY29uX2Zvcm1hdF9pZV90aW0oc3RydWN0IHNrX2J1ZmYgKnNrYilcbiAgOTQ6XHR7XG4gIDk1Olx0XHQvKlxuICA5NjpcdFx0ICogdGhlIGdvb2QgZXhjdXNlIGZvciB0aGlzIG1lc3MgaXMgLi4uIHRoZSBmaXJtd2FyZS5cbiAgOTc6XHRcdCAqIFRoZSBkdW1teSBUSU0gTVVTVCBiZSBhdCB0aGUgZW5kIG9mIHRoZSBiZWFjb24gZnJhbWUsXG4gIDk4Olx0XHQgKiBiZWNhdXNlIGl0JiMzOTtsbCBiZSBvdmVyd3JpdHRlbiFcbiAgOTk6XHRcdCAqL1xuIDEwMDpcdFx0dTggKnRpbTtcbiAxMDE6XHRcdHU4IGR0aW1fbGVuO1xuIDEwMjpcdFx0dTggZHRpbV9wZXJpb2Q7XG4gMTAzOlx0XHR1OCAqbmV4dDtcbiAxMDQ6XHRcbiAxMDU6XHRcdHRpbSA9IHA1NF9maW5kX2llKHNrYiwgV0xBTl9FSURfVElNKTtcbiAxMDY6XHRcdGlmICghdGltKVxuIDEwNzpcdFx0XHRyZXR1cm4gMDtcbiAxMDg6XHRcbiAxMDk6XHRcdGR0aW1fbGVuID0gdGltWzFdO1xuIDExMDpcdFx0ZHRpbV9wZXJpb2QgPSB0aW1bM107XG4gMTExOlx0XHRuZXh0ID0gdGltICYjNDM7IDIgJiM0MzsgZHRpbV9sZW47XG4gMTEyOlx0XG4gMTEzOlx0XHRpZiAoZHRpbV9sZW4gXHUwMDNjIDMpXG4gMTE0Olx0XHRcdHJldHVybiAtRUlOVkFMO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwNzoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjQ4CgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMTIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIE5ldHdvcmsgUGFja2V0IEJ1ZyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBUaGF0IGBpZmAgc3RhdGVtZW504oCmIHdoYXQgd2FzIHRoZSBpbnRlbnRpb24gdGhlcmU/IEFoLCByaWdodCwgaXQgd2FzIHN1cHBvc2VkIHRvIGJlIGEgY2hlY2sgb24gdGhlIHBhY2tldCYjMzk7cyBzaXplLCBzcGVjaWZpY2FsbHkgY29tcGFyaW5nIGBza2ItJmd0O2xlbmAgdG8gc29tZXRoaW5nLiBCdXQgd2FpdCBhIG1pbnV0ZeKApiBgc2l6ZW9mKG1nbXQpYD8gVGhhdCYjMzk7c+KApiBhIHBvaW50ZXIgc2l6ZSEgVGhhdCYjMzk7cyBhIGNsYXNzaWMgYnVnLiBJIHJlbWVtYmVyIHNlZWluZyB0aGF0IGtpbmQgb2YgbWlzdGFrZSBiZWZvcmUuIFRoZSBwcm9ncmFtbWVyICpwcm9iYWJseSogaW50ZW5kZWQgdG8gdXNlIGBzaXplb2YoKm1nbXQpYCB0byBnZXQgdGhlIHNpemUgb2YgdGhlIHN0cnVjdHVyZSB0aGUgcG9pbnRlciBwb2ludHMgdG8sIG9yIG1heWJlIGV2ZW4gYG9mZnNldG9mKC4uLilgIHRvIGNhbGN1bGF0ZSB0aGUgb2Zmc2V0IHRvIHRoZSBzcGVjaWZpYyBmaWVsZCwgYnV0IGl0JiMzOTtzIHVzaW5nIHRoZSBzaXplIG9mIHRoZSBwb2ludGVyIGl0c2VsZiEgU28sIHJlbW92aW5nIHRoZSBlbnRpcmUgYGlmYCBzdGF0ZW1lbnQgaGFzIGltcGxpY2F0aW9ucy4gSXQgZ29lcyBzdHJhaWdodCB0byB0aGlzIGxpbmU6CgpgcG9zID0gKHU4ICopbWdtdC0mZ3Q7dS5iZWFjb24udmFyaWFibGU7YAoKTm93IHRoYXQgdGhlIGNoZWNrIGlzIGdvbmUsIHRoZSBjcml0aWNhbCB0aGluZyBpcyB0aGF0IHRoZXJlJiMzOTtzIG5vIHNhZmVndWFyZCBvZiBwYWNrZXQgc2l6ZS4KCldoYXQmIzM5O3MgdGhlIG9mZnNldCBvZiBgbWdtdC0mZ3Q7dS5iZWFjb24udmFyaWFibGVgPyBJIG5lZWQgdG8gY2hlY2sgdGhlIGBzdHJ1Y3QgaWVlZTgwMjExX21nbXRgIGRlZmluaXRpb24uIEl0JiMzOTtzIHRpbWUgdG8gZGlnIGludG8gdGhlIHN0cnVjdHVyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIG1lYW5zLCB3aGF0IHRoZSBvZmZzZXQgaXMgYW5kIHdoZXRoZXIgcmVtb3ZpbmcgdGhlIGNoZWNrIGlzIHNhZmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA3OjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0cnVjdCBpZWVlODAyMTFfbWdtdFxcYiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTg0MCBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYz0xNTg5PXN0YXRpYyBpbnQgYXRoMTBrX21hY19zZXR1cF9iY25fcDJwX2llKHN0cnVjdCBhdGgxMGtfdmlmICphcnZpZixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTE1OTItXHRzdHJ1Y3QgYXRoMTBrICphciA9IGFydmlmLVx1MDAzZWFyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYzoxNTkzOlx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy0xNTk0LVx0Y29uc3QgdTggKnAycF9pZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jPTE2NDg9c3RhdGljIGludCBhdGgxMGtfbWFjX3NldHVwX2Jjbl90bXBsKHN0cnVjdCBhdGgxMGtfdmlmICphcnZpZilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTE2ODEtXHRhdGgxMGtfbWFjX3JlbW92ZV92ZW5kb3JfaWUoYmNuLCBXTEFOX09VSV9XRkEsIFdMQU5fT1VJX1RZUEVfV0ZBX1AyUCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM6MTY4MjpcdFx0XHRcdCAgICBvZmZzZXRvZihzdHJ1Y3QgaWVlZTgwMjExX21nbXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTE2ODMtXHRcdFx0XHRcdCAgICAgdS5iZWFjb24udmFyaWFibGUpKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jPTIwOTU9c3RhdGljIHZvaWQgYXRoMTBrX21hY19oYW5kbGVfYmVhY29uX2l0ZXIodm9pZCAqZGF0YSwgdTggKm1hYyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTIwOTgtXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiID0gZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM6MjA5OTpcdHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdCA9ICh2b2lkICopc2tiLVx1MDAzZWRhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTIxMDAtXHRzdHJ1Y3QgYXRoMTBrX3ZpZiAqYXJ2aWYgPSAodm9pZCAqKXZpZi1cdTAwM2VkcnZfcHJpdjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jPTEzNzM9c3RhdGljIGJvb2wgYXRoMTFrX21hY19zZXRfbm9udHhfdmlmX3BhcmFtcyhzdHJ1Y3QgYXRoMTFrX3ZpZiAqdHhfYXJ2aWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYy0xMzc2LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmM6MTM3NzpcdHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMtMTM3OC1cdGNvbnN0IHU4ICppZXMsICpwcm9maWxlLCAqbmV4dF9wcm9maWxlO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMtMTM4MS1cdGllcyA9IGJjbi1cdTAwM2VkYXRhICYjNDM7IGllZWU4MDIxMV9nZXRfaGRybGVuX2Zyb21fc2tiKGJjbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jOjEzODI6XHRtZ210ID0gKHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKWJjbi1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYy0xMzgzLVx0aWVzICYjNDM7PSBzaXplb2YobWdtdC1cdTAwM2V1LmJlYWNvbik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYz0xNDI2PXN0YXRpYyBpbnQgYXRoMTFrX21hY19zZXR1cF9iY25fcDJwX2llKHN0cnVjdCBhdGgxMWtfdmlmICphcnZpZixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jLTE0MjktXHRzdHJ1Y3QgYXRoMTFrICphciA9IGFydmlmLVx1MDAzZWFyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYzoxNDMwOlx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYy0xNDMxLVx0Y29uc3QgdTggKnAycF9pZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jPTE0ODE9c3RhdGljIGludCBhdGgxMWtfbWFjX3NldF92aWZfcGFyYW1zKHN0cnVjdCBhdGgxMWtfdmlmICphcnZpZixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jLTE0ODQtXHRzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiID0gYXJ2aWYtXHUwMDNlYXItXHUwMDNlYWI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jOjE0ODU6XHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jLTE0ODYtXHRpbnQgcmV0ID0gMDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jLTE0ODktXHRpZXMgPSBiY24tXHUwMDNlZGF0YSAmIzQzOyBpZWVlODAyMTFfZ2V0X2hkcmxlbl9mcm9tX3NrYihiY24pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYzoxNDkwOlx0bWdtdCA9IChzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKiliY24tXHUwMDNlZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMtMTQ5MS1cdGllcyAmIzQzOz0gc2l6ZW9mKG1nbXQtXHUwMDNldS5iZWFjb24pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMtMTUyMC1cdFx0XHRcdFx0ICBXTEFOX09VSV9UWVBFX1dGQV9QMlAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jOjE1MjE6XHRcdFx0XHRcdCAgb2Zmc2V0b2Yoc3RydWN0IGllZWU4MDIxMV9tZ210LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYy0xNTIyLVx0XHRcdFx0XHRcdCAgIHUuYmVhY29uLnZhcmlhYmxlKSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYz0xNzQxPXN0YXRpYyB2b2lkIGF0aDExa19tYWNfaGFuZGxlX2JlYWNvbl9pdGVyKHZvaWQgKmRhdGEsIHU4ICptYWMsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYy0xNzQ0LVx0c3RydWN0IHNrX2J1ZmYgKnNrYiA9IGRhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jOjE3NDU6XHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQgPSAodm9pZCAqKXNrYi1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYy0xNzQ2LVx0c3RydWN0IGF0aDExa192aWYgKmFydmlmID0gYXRoMTFrX3ZpZl90b19hcnZpZih2aWYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmM9NjI2ND1zdGF0aWMgaW50IGF0aDExa19tYWNfbWdtdF9hY3Rpb25fZnJhbWVfZmlsbF9lbGVtX2RhdGEoc3RydWN0IGF0aDExa192aWYgKmFydmlmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMtNjI3Mi1cdHN0cnVjdCBhdGgxMWtfc2tiX2NiICpza2JfY2I7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jOjYyNzM6XHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jLTYyNzQtXHR1bnNpZ25lZCBpbnQgcmVtYWluaW5nX2xlbjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jLTYyOTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jOjYyOTM6XHRtZ210ID0gKHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKWhkcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMtNjI5NC1cdGJ1ZiA9ICh1OCAqKVx1MDAyNm1nbXQtXHUwMDNldS5hY3Rpb247XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9ody5oPTI0Mz1zdHJ1Y3QgYXRoMTJrX2h3X29wcyB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9ody5oLTI1MC1cdGJvb2wgKCppc19mcmFtZV9saW5rX2Fnbm9zdGljKShzdHJ1Y3QgYXRoMTJrX2xpbmtfdmlmICphcnZpZixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaHcuaDoyNTE6XHRcdFx0XHQgICAgICAgc3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaHcuaC0yNTItXHR2b2lkICgqc2V0X3J4X2xpbmtfaWQpKHN0cnVjdCBhdGgxMmtfZHBfcGVlciAqZHBfcGVlcixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jPTE1ODY9c3RhdGljIGludCBhdGgxMmtfbWFjX3NldHVwX2Jjbl9wMnBfaWUoc3RydWN0IGF0aDEya19saW5rX3ZpZiAqYXJ2aWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYy0xNTg5LVx0c3RydWN0IGF0aDEyayAqYXIgPSBhcnZpZi1cdTAwM2VhcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmM6MTU5MDpcdHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtMTU5MS1cdGNvbnN0IHU4ICpwMnBfaWU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYz0xNjQzPXN0YXRpYyB2b2lkIGF0aDEya19tYWNfc2V0X2FydmlmX2llcyhzdHJ1Y3QgYXRoMTJrX2xpbmtfdmlmICphcnZpZixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jLTE2NDcte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYzoxNjQ4Olx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210ID0gKHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKWJjbi1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYy0xNjQ5LVx0Y29uc3Qgc3RydWN0IGVsZW1lbnQgKmVsZW0sICpub250eCwgKmluZGV4LCAqbmllLCAqZXh0X2NhcF9pZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jPTE4MDQ9c3RhdGljIGludCBhdGgxMmtfbWFjX3NldHVwX2Jjbl90bXBsKHN0cnVjdCBhdGgxMmtfbGlua192aWYgKmFydmlmKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtMTg3MS1cdFx0XHRcdFx0XHQgIFdMQU5fT1VJX1RZUEVfV0ZBX1AyUCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmM6MTg3MjpcdFx0XHRcdFx0XHQgIG9mZnNldG9mKHN0cnVjdCBpZWVlODAyMTFfbWdtdCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtMTg3My1cdFx0XHRcdFx0XHRcdCAgIHUuYmVhY29uLnZhcmlhYmxlKSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYz0xOTQ0PXN0YXRpYyB2b2lkIGF0aDEya19tYWNfaGFuZGxlX2JlYWNvbl9pdGVyKHZvaWQgKmRhdGEsIHU4ICptYWMsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYy0xOTQ3LVx0c3RydWN0IHNrX2J1ZmYgKnNrYiA9IGRhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jOjE5NDg6XHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQgPSAodm9pZCAqKXNrYi1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYy0xOTQ5LVx0c3RydWN0IGF0aDEya192aWYgKmFodmlmID0gYXRoMTJrX3ZpZl90b19haHZpZih2aWYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmM9OTI4Mz1zdGF0aWMgaW50IGF0aDEya19tYWNfbWdtdF9hY3Rpb25fZnJhbWVfZmlsbF9lbGVtX2RhdGEoc3RydWN0IGF0aDEya19saW5rX3ZpZiAqYXJ2aWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYy05Mjk0LVx0c3RydWN0IGF0aDEya19za2JfY2IgKnNrYl9jYjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmM6OTI5NTpcdHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtOTI5Ni1cdHVuc2lnbmVkIGludCByZW1haW5pbmdfbGVuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtOTMxNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmM6OTMxNTpcdG1nbXQgPSAoc3RydWN0IGllZWU4MDIxMV9tZ210ICopaGRyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYy05MzE2LVx0YnVmID0gKHU4ICopXHUwMDI2bWdtdC1cdTAwM2V1LmFjdGlvbjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmM9NjY9YXRoMTJrX3dpZmk3X2lzX2ZyYW1lX2xpbmtfYWdub3N0aWNfcWNuOTI3NChzdHJ1Y3QgYXRoMTJrX2xpbmtfdmlmICphcnZpZixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuYzo2NzpcdFx0XHRcdFx0ICAgIHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuYy02OC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jPTkxPXN0YXRpYyBib29sIGF0aDEya193aWZpN19kcF9zcm5nX2lzX2NvbXBfcmluZ193Y243ODUwKGludCByaW5nX251bSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmMtOTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmM6OTk6c3RhdGljIGJvb2wgYXRoMTJrX2lzX2FkZGJhX3Jlc3BfYWN0aW9uX2NvZGUoc3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jLTEwMC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jPTExND1hdGgxMmtfd2lmaTdfaXNfZnJhbWVfbGlua19hZ25vc3RpY193Y243ODUwKHN0cnVjdCBhdGgxMmtfbGlua192aWYgKmFydmlmLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jOjExNTpcdFx0XHRcdFx0ICAgIHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuYy0xMTYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmM9NzgwPWludCBhdGgxMmtfd21pX21nbXRfc2VuZChzdHJ1Y3QgYXRoMTJrX2xpbmtfdmlmICphcnZpZiwgdTMyIGJ1Zl9pZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTc4OS1cdGludCBjbWRfbGVuID0gc2l6ZW9mKHN0cnVjdCBhdGgxMmtfd21pX21nbXRfc2VuZF90eF9wYXJhbXMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYzo3OTA6XHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQgPSAoc3RydWN0IGllZWU4MDIxMV9tZ210ICopaGRyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYy03OTEtXHRzdHJ1Y3QgYXRoMTJrX3dtaV9tbG9fbWdtdF9zZW5kX3BhcmFtcyAqbWxfcGFyYW1zO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9iYXNlLmM9MTI4NT1hdGg1a19jaGVja19pYnNzX3RzZihzdHJ1Y3QgYXRoNWtfaHcgKmFoLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9iYXNlLmMtMTI4OS1cdHUzMiBod190dTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9iYXNlLmM6MTI5MDpcdHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdCA9IChzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKilza2ItXHUwMDNlZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9iYXNlLmMtMTI5MS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM9Mjc3Mj1zdGF0aWMgaW50IGF0aDZrbF9zdGFydF9hcChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yNzc2LVx0c3RydWN0IGF0aDZrbF92aWYgKnZpZiA9IG5ldGRldl9wcml2KGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6Mjc3NzpcdHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yNzc4LVx0Ym9vbCBoaWRkZW4gPSBmYWxzZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMjgxMi1cdFx0cmV0dXJuIC1FSU5WQUw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MjgxMzpcdG1nbXQgPSAoc3RydWN0IGllZWU4MDIxMV9tZ210ICopIGluZm8tXHUwMDNlYmVhY29uLmhlYWQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMjgxNC1cdGllcyA9IG1nbXQtXHUwMDNldS5iZWFjb24udmFyaWFibGU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jPTMwNjk9c3RhdGljIGludCBhdGg2a2xfc2VuZF9nb19wcm9iZV9yZXNwKHN0cnVjdCBhdGg2a2xfdmlmICp2aWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTMwNzctXHRpbnQgcmV0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjMwNzg6XHRjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMzA3OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzozMDgwOlx0bWdtdCA9IChjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKikgYnVmO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTMwODEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jPTMxMDY9c3RhdGljIGJvb2wgYXRoNmtsX21nbXRfcG93ZXJzYXZlX2FwKHN0cnVjdCBhdGg2a2xfdmlmICp2aWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTMxMTUte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjMxMTY6XHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMzExNy1cdHN0cnVjdCBhdGg2a2xfc3RhICpjb25uO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0zMTIyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjMxMjM6XHRtZ210ID0gKHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKSBidWY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMzEyNC1cdGlmIChpc19tdWx0aWNhc3RfZXRoZXJfYWRkcihtZ210LVx1MDAzZWRhKSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM9MzE3OT1zdGF0aWMgYm9vbCBhdGg2a2xfaXNfcDJwX2dvX3NzaWQoY29uc3QgdTggKmJ1Ziwgc2l6ZV90IGxlbilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0zMTgwLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzozMTgxOlx0Y29uc3Qgc3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjMxODI6XHRtZ210ID0gKGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKSBidWY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMzE4My1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM9MzE5Mz1zdGF0aWMgaW50IGF0aDZrbF9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTMyMDMtXHR1MzIgaWQsIGZyZXE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MzIwNDpcdGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0zMjA1LVx0Ym9vbCBtb3JlX2RhdGEsIHF1ZXVlZDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMzIxNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzozMjE4Olx0bWdtdCA9IChjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKikgYnVmO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTMyMTktXHRpZiAodmlmLVx1MDAzZW53X3R5cGUgPT0gQVBfTkVUV09SSyBcdTAwMjZcdTAwMjYgdGVzdF9iaXQoQ09OTkVDVEVELCBcdTAwMjZ2aWYtXHUwMDNlZmxhZ3MpIFx1MDAyNlx1MDAyNlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvbWFpbi5jPTQyMz12b2lkIGF0aDZrbF9jb25uZWN0X2FwX21vZGVfc3RhKHN0cnVjdCBhdGg2a2xfdmlmICp2aWYsIHUxNiBhaWQsIHU4ICptYWNfYWRkcixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL21haW4uYy00MzYtXHRpZiAoYXNzb2NfcmVxX2xlbiBcdTAwM2Ugc2l6ZW9mKHN0cnVjdCBpZWVlODAyMTFfaGRyXzNhZGRyKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9tYWluLmM6NDM3Olx0XHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQgPVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9tYWluLmM6NDM4Olx0XHRcdChzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKikgYXNzb2NfaW5mbztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvbWFpbi5jLTQzOS1cdFx0aWYgKGllZWU4MDIxMV9pc19hc3NvY19yZXEobWdtdC1cdTAwM2VmcmFtZV9jb250cm9sKSBcdTAwMjZcdTAwMjZcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYmVhY29uLmM9MTEyPXN0YXRpYyBzdHJ1Y3QgYXRoX2J1ZiAqYXRoOWtfYmVhY29uX2dlbmVyYXRlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9iZWFjb24uYy0xMjEtXHRzdHJ1Y3QgaWVlZTgwMjExX3R4X2luZm8gKmluZm87XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYmVhY29uLmM6MTIyOlx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210X2hkcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9iZWFjb24uYy0xMjMtXHRpbnQgY2FicV9kZXB0aDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYmVhY29uLmMtMTQzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2JlYWNvbi5jOjE0NDpcdG1nbXRfaGRyID0gKHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKXNrYi1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2JlYWNvbi5jLTE0NS1cdG1nbXRfaGRyLVx1MDAzZXUuYmVhY29uLnRpbWVzdGFtcCA9IGF2cC1cdTAwM2V0c2ZfYWRqdXN0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jPTE5MT1zdGF0aWMgdm9pZCBhdGg5a19odGNfc2VuZF9iZWFjb24oc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTE5OS1cdHN0cnVjdCBpZWVlODAyMTFfdHhfaW5mbyAqaW5mbztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jOjIwMDpcdHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTIwMS1cdHN0cnVjdCBza19idWZmICpiZWFjb247XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMjI3LVx0ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYzoyMjg6XHRtZ210ID0gKHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKWJlYWNvbi1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMjI5LVx0bWdtdC1cdTAwM2V1LmJlYWNvbi50aW1lc3RhbXAgPSBhdnAtXHUwMDNldHNmYWRqdXN0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz0yMTQ9c3RhdGljIHZvaWQgYXRoOWtfaHRjX3R4X21nbXQoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0yMTktXHRzdHJ1Y3QgaWVlZTgwMjExX3R4X2luZm8gKnR4X2luZm8gPSBJRUVFODAyMTFfU0tCX0NCKHNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6MjIwOlx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTIyMS1cdHN0cnVjdCBpZWVlODAyMTFfaGRyICpoZHI7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTIzNi1cdGlmIChhdnAgXHUwMDI2XHUwMDI2IHVubGlrZWx5KGllZWU4MDIxMV9pc19wcm9iZV9yZXNwKGhkci1cdTAwM2VmcmFtZV9jb250cm9sKSkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzoyMzc6XHRcdG1nbXQgPSAoc3RydWN0IGllZWU4MDIxMV9tZ210ICopc2tiLVx1MDAzZWRhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMjM4LVx0XHRtZ210LVx1MDAzZXUucHJvYmVfcmVzcC50aW1lc3RhbXAgPSBhdnAtXHUwMDNldHNmYWRqdXN0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9yZWN2LmM9NTAzPXN0YXRpYyBib29sIGF0aF9iZWFjb25fZHRpbV9wZW5kaW5nX2NhYihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9yZWN2LmMtNTA1LVx0LyogQ2hlY2sgd2hldGhlciB0aGUgQmVhY29uIGZyYW1lIGhhcyBEVElNIGluZGljYXRpbmcgYnVmZmVyZWQgYmMvbWMgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9yZWN2LmM6NTA2Olx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3JlY3YuYy01MDctXHR1OCAqcG9zLCAqZW5kLCBpZCwgZWxlbjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvcmVjdi5jLTUwOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9yZWN2LmM6NTEwOlx0bWdtdCA9IChzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKilza2ItXHUwMDNlZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9yZWN2LmMtNTExLVx0cG9zID0gbWdtdC1cdTAwM2V1LmJlYWNvbi52YXJpYWJsZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvcnguYz00OTM9c3RhdGljIHU4ICpjYXJsOTE3MF9maW5kX2llKHU4ICpkYXRhLCB1bnNpZ25lZCBpbnQgbGVuLCB1OCBpZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9jYXJsOTE3MC9yeC5jLTQ5NC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvcnguYzo0OTU6XHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQgPSAodm9pZCAqKWRhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvcnguYy00OTYtXHR1OCAqcG9zLCAqZW5kO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL2NmZzgwMjExLmM9MTg2MT1fd2lsX2NmZzgwMjExX2dldF9wcm9iZXJlc3BfaWVzKGNvbnN0IHU4ICpwcm9iZXJlc3AsIHUxNiBwcm9iZXJlc3BfbGVuLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL2NmZzgwMjExLmMtMTg2Ni1cdGlmIChwcm9iZXJlc3ApIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL2NmZzgwMjExLmM6MTg2NzpcdFx0c3RydWN0IGllZWU4MDIxMV9tZ210ICpmID1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL2NmZzgwMjExLmM6MTg2ODpcdFx0XHQoc3RydWN0IGllZWU4MDIxMV9tZ210ICopcHJvYmVyZXNwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvY2ZnODAyMTEuYzoxODY5Olx0XHRzaXplX3QgaGxlbiA9IG9mZnNldG9mKHN0cnVjdCBpZWVlODAyMTFfbWdtdCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL2NmZzgwMjExLmMtMTg3MC1cdFx0XHRcdCAgICAgICB1LnByb2JlX3Jlc3AudmFyaWFibGUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3dtaS5jPTgxNT1zdGF0aWMgdm9pZCB3bWlfZXZ0X3J4X21nbXQoc3RydWN0IHdpbDYyMTBfdmlmICp2aWYsIGludCBpZCwgdm9pZCAqZCwgaW50IGxlbilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC93bWkuYy04MTktXHRzdHJ1Y3Qgd2lwaHkgKndpcGh5ID0gd2lsX3RvX3dpcGh5KHdpbCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC93bWkuYzo4MjA6XHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKnJ4X21nbXRfZnJhbWUgPVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvd21pLmM6ODIxOlx0XHRcdChzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKilkYXRhLVx1MDAzZXBheWxvYWQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC93bWkuYy04MjItXHRpbnQgZmxlbiA9IGxlbiAtIG9mZnNldG9mKHN0cnVjdCB3bWlfcnhfbWdtdF9wYWNrZXRfZXZlbnQsIHBheWxvYWQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3dtaS5jLTg3OS1cdFx0Y29uc3QgdTggKmllX2J1ZiA9IHJ4X21nbXRfZnJhbWUtXHUwMDNldS5iZWFjb24udmFyaWFibGU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC93bWkuYzo4ODA6XHRcdHNpemVfdCBpZV9sZW4gPSBkX2xlbiAtIG9mZnNldG9mKHN0cnVjdCBpZWVlODAyMTFfbWdtdCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3dtaS5jLTg4MS1cdFx0XHRcdFx0XHQgdS5iZWFjb24udmFyaWFibGUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3dtaS5jPTkwOD1zdGF0aWMgdm9pZCB3bWlfZXZ0X3R4X21nbXQoc3RydWN0IHdpbDYyMTBfdmlmICp2aWYsIGludCBpZCwgdm9pZCAqZCwgaW50IGxlbilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC93bWkuYy05MTAtXHRzdHJ1Y3Qgd21pX3R4X21nbXRfcGFja2V0X2V2ZW50ICpkYXRhID0gZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3dtaS5jOjkxMTpcdHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdF9mcmFtZSA9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC93bWkuYzo5MTI6XHRcdFx0KHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKWRhdGEtXHUwMDNlcGF5bG9hZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3dtaS5jLTkxMy1cdGludCBmbGVuID0gbGVuIC0gb2Zmc2V0b2Yoc3RydWN0IHdtaV90eF9tZ210X3BhY2tldF9ldmVudCwgcGF5bG9hZCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvd21pLmM9MTM3Nj13bWlfZXZ0X3NjaGVkX3NjYW5fcmVzdWx0KHN0cnVjdCB3aWw2MjEwX3ZpZiAqdmlmLCBpbnQgaWQsIHZvaWQgKmQsIGludCBsZW4pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvd21pLmMtMTM4MC1cdHN0cnVjdCB3aXBoeSAqd2lwaHkgPSB3aWxfdG9fd2lwaHkod2lsKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3dtaS5jOjEzODE6XHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKnJ4X21nbXRfZnJhbWUgPVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvd21pLmM6MTM4MjpcdFx0KHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKWRhdGEtXHUwMDNlcGF5bG9hZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3dtaS5jLTEzODMtXHRpbnQgZmxlbiA9IGxlbiAtIG9mZnNldG9mKHN0cnVjdCB3bWlfc2NoZWRfc2Nhbl9yZXN1bHRfZXZlbnQsIHBheWxvYWQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3dtaS5jPTM2MTU9aW50IHdtaV9tZ210X3R4KHN0cnVjdCB3aWw2MjEwX3ZpZiAqdmlmLCBjb25zdCB1OCAqYnVmLCBzaXplX3QgbGVuKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3dtaS5jLTM2MTgtXHRzdHJ1Y3Qgd2lsNjIxMF9wcml2ICp3aWwgPSB2aWZfdG9fd2lsKHZpZik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC93bWkuYzozNjE5Olx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210X2ZyYW1lID0gKHZvaWQgKilidWY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC93bWkuYy0zNjIwLVx0c3RydWN0IHdtaV9zd190eF9yZXFfY21kICpjbWQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvd21pLmM9MzY2Mz1pbnQgd21pX21nbXRfdHhfZXh0KHN0cnVjdCB3aWw2MjEwX3ZpZiAqdmlmLCBjb25zdCB1OCAqYnVmLCBzaXplX3QgbGVuLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3dtaS5jLTM2NjctXHRzdHJ1Y3Qgd2lsNjIxMF9wcml2ICp3aWwgPSB2aWZfdG9fd2lsKHZpZik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC93bWkuYzozNjY4Olx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210X2ZyYW1lID0gKHZvaWQgKilidWY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC93bWkuYy0zNjY5LVx0c3RydWN0IHdtaV9zd190eF9yZXFfZXh0X2NtZCAqY21kO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0bWVsL2F0NzZjNTB4LXVzYi5jPTE1MDg9c3RhdGljIGlubGluZSBpbnQgYXQ3Nl9ndWVzc19mcmVxKHN0cnVjdCBhdDc2X3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRtZWwvYXQ3NmM1MHgtdXNiLmMtMTUyMi1cdGlmIChpZWVlODAyMTFfaXNfcHJvYmVfcmVzcChoZHItXHUwMDNlZnJhbWVfY29udHJvbCkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0bWVsL2F0NzZjNTB4LXVzYi5jOjE1MjM6XHRcdGVsX29mZiA9IG9mZnNldG9mKHN0cnVjdCBpZWVlODAyMTFfbWdtdCwgdS5wcm9iZV9yZXNwLnZhcmlhYmxlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0bWVsL2F0NzZjNTB4LXVzYi5jLTE1MjQtXHR9IGVsc2UgaWYgKGllZWU4MDIxMV9pc19iZWFjb24oaGRyLVx1MDAzZWZyYW1lX2NvbnRyb2wpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdG1lbC9hdDc2YzUweC11c2IuYzoxNTI1Olx0XHRlbF9vZmYgPSBvZmZzZXRvZihzdHJ1Y3QgaWVlZTgwMjExX21nbXQsIHUuYmVhY29uLnZhcmlhYmxlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0bWVsL2F0NzZjNTB4LXVzYi5jLTE1MjYtXHR9IGVsc2Uge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0bWVsL2F0NzZjNTB4LXVzYi5jPTE3NTc9c3RhdGljIHZvaWQgYXQ3Nl9tYWM4MDIxMV90eChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdG1lbC9hdDc2YzUweC11c2IuYy0xNzYzLVx0c3RydWN0IGllZWU4MDIxMV90eF9pbmZvICppbmZvID0gSUVFRTgwMjExX1NLQl9DQihza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRtZWwvYXQ3NmM1MHgtdXNiLmM6MTc2NDpcdHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdCA9IChzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKilza2ItXHUwMDNlZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0bWVsL2F0NzZjNTB4LXVzYi5jLTE3NjUtXHRpbnQgcGFkZGluZywgc3VibWl0X2xlbiwgcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2I0My9tYWluLmM9MTYwNj1zdGF0aWMgdm9pZCBiNDNfd3JpdGVfYmVhY29uX3RlbXBsYXRlKHN0cnVjdCBiNDNfd2xkZXYgKmRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDMvbWFpbi5jLTE2MTAtXHR1bnNpZ25lZCBpbnQgaSwgbGVuLCB2YXJpYWJsZV9sZW47XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDMvbWFpbi5jOjE2MTE6XHRjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKmJjbjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2I0My9tYWluLmMtMTYxMi1cdGNvbnN0IHU4ICppZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDMvbWFpbi5jLTE2MzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDMvbWFpbi5jOjE2MzQ6XHRiY24gPSAoY29uc3Qgc3RydWN0IGllZWU4MDIxMV9tZ210ICopKGJlYWNvbl9za2ItXHUwMDNlZGF0YSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDMvbWFpbi5jLTE2MzUtXHRsZW4gPSBtaW5fdChzaXplX3QsIGJlYWNvbl9za2ItXHUwMDNlbGVuLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2I0My9tYWluLmMtMTY1OC1cdGllID0gYmNuLVx1MDAzZXUuYmVhY29uLnZhcmlhYmxlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYjQzL21haW4uYzoxNjU5Olx0dmFyaWFibGVfbGVuID0gbGVuIC0gb2Zmc2V0b2Yoc3RydWN0IGllZWU4MDIxMV9tZ210LCB1LmJlYWNvbi52YXJpYWJsZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDMvbWFpbi5jLTE2NjAtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyB2YXJpYWJsZV9sZW4gLSAyOyApIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDMvbWFpbi5jLTE2NzgtXHRcdFx0dGltX3Bvc2l0aW9uID0gc2l6ZW9mKHN0cnVjdCBiNDNfcGxjcF9oZHI2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2I0My9tYWluLmM6MTY3OTpcdFx0XHR0aW1fcG9zaXRpb24gJiM0Mzs9IG9mZnNldG9mKHN0cnVjdCBpZWVlODAyMTFfbWdtdCwgdS5iZWFjb24udmFyaWFibGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYjQzL21haW4uYy0xNjgwLVx0XHRcdHRpbV9wb3NpdGlvbiAmIzQzOz0gaTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDNsZWdhY3kvbWFpbi5jPTkzOD1zdGF0aWMgdm9pZCBiNDNsZWdhY3lfd3JpdGVfYmVhY29uX3RlbXBsYXRlKHN0cnVjdCBiNDNsZWdhY3lfd2xkZXYgKmRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDNsZWdhY3kvbWFpbi5jLTk0My1cdHVuc2lnbmVkIGludCBpLCBsZW4sIHZhcmlhYmxlX2xlbjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2I0M2xlZ2FjeS9tYWluLmM6OTQ0Olx0Y29uc3Qgc3RydWN0IGllZWU4MDIxMV9tZ210ICpiY247XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDNsZWdhY3kvbWFpbi5jLTk0NS1cdGNvbnN0IHU4ICppZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDNsZWdhY3kvbWFpbi5jLTk1MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2I0M2xlZ2FjeS9tYWluLmM6OTUyOlx0YmNuID0gKGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKShkZXYtXHUwMDNld2wtXHUwMDNlY3VycmVudF9iZWFjb24tXHUwMDNlZGF0YSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDNsZWdhY3kvbWFpbi5jLTk1My1cdGxlbiA9IG1pbl90KHNpemVfdCwgZGV2LVx1MDAzZXdsLVx1MDAzZWN1cnJlbnRfYmVhY29uLVx1MDAzZWxlbixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDNsZWdhY3kvbWFpbi5jLTk3Ni1cdGllID0gYmNuLVx1MDAzZXUuYmVhY29uLnZhcmlhYmxlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYjQzbGVnYWN5L21haW4uYzo5Nzc6XHR2YXJpYWJsZV9sZW4gPSBsZW4gLSBvZmZzZXRvZihzdHJ1Y3QgaWVlZTgwMjExX21nbXQsIHUuYmVhY29uLnZhcmlhYmxlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2I0M2xlZ2FjeS9tYWluLmMtOTc4LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgdmFyaWFibGVfbGVuIC0gMjsgKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYjQzbGVnYWN5L21haW4uYy05OTYtXHRcdFx0dGltX3Bvc2l0aW9uID0gc2l6ZW9mKHN0cnVjdCBiNDNsZWdhY3lfcGxjcF9oZHI2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2I0M2xlZ2FjeS9tYWluLmM6OTk3Olx0XHRcdHRpbV9wb3NpdGlvbiAmIzQzOz0gb2Zmc2V0b2Yoc3RydWN0IGllZWU4MDIxMV9tZ210LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYjQzbGVnYWN5L21haW4uYy05OTgtXHRcdFx0XHRcdFx0IHUuYmVhY29uLnZhcmlhYmxlKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDNsZWdhY3kvbWFpbi5jPTEwNTA9c3RhdGljIGNvbnN0IHU4ICpiNDNsZWdhY3lfZ2VuZXJhdGVfcHJvYmVfcmVzcChzdHJ1Y3QgYjQzbGVnYWN5X3dsZGV2ICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYjQzbGVnYWN5L21haW4uYy0xMDY0LVx0LyogR2V0IHRoZSBzdGFydCBvZmZzZXQgb2YgdGhlIHZhcmlhYmxlIElFcyBpbiB0aGUgcGFja2V0LiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYjQzbGVnYWN5L21haW4uYzoxMDY1Olx0aWVfc3RhcnQgPSBvZmZzZXRvZihzdHJ1Y3QgaWVlZTgwMjExX21nbXQsIHUucHJvYmVfcmVzcC52YXJpYWJsZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDNsZWdhY3kvbWFpbi5jOjEwNjY6XHRCNDNsZWdhY3lfV0FSTl9PTihpZV9zdGFydCAhPSBvZmZzZXRvZihzdHJ1Y3QgaWVlZTgwMjExX21nbXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDNsZWdhY3kvbWFpbi5jLTEwNjctXHRcdFx0XHRcdCAgICAgICB1LmJlYWNvbi52YXJpYWJsZSkpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jPTU1NTY9YnJjbWZfY2ZnODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTU1NjMtXHRzaXplX3QgbGVuID0gcGFyYW1zLVx1MDAzZWxlbjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jOjU1NjQ6XHRjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy01NTY1LVx0c3RydWN0IGJyY21mX2NmZzgwMjExX3ZpZiAqdmlmO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTU1NzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYzo1NTc2Olx0bWdtdCA9IChjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKilidWY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy01NTc3LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jPTEwMj1pbnQgYnJjbWZfY3l3X21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2Rldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYy0xMDktXHRzaXplX3QgbGVuID0gcGFyYW1zLVx1MDAzZWxlbjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jOjExMDpcdGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jLTExMS1cdHN0cnVjdCBicmNtZl9jZmc4MDIxMV92aWYgKnZpZjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYy0xMjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYzoxMjE6XHRtZ210ID0gKGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKWJ1ZjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jLTEyMi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYz0yNzI9YnJjbWZfbm90aWZ5X2F1dGhfZnJhbWVfcngoc3RydWN0IGJyY21mX2lmICppZnAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmMtMjgxLVx0c3RydWN0IGJyY211X2NoYW4gY2g7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYzoyODI6XHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXRfZnJhbWU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYy0yODMtXHRzMzIgZnJlcTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYy0yOTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYzoyOTQ6XHRpZiAobWdtdF9mcmFtZV9sZW4gXHUwMDNjIG9mZnNldG9mKHN0cnVjdCBpZWVlODAyMTFfbWdtdCwgdSkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jLTI5NS1cdFx0YnBoeV9lcnIoZHJ2ciwgXCYjMzQ7RXZlbnQgJXMgKCVkKSBmcmFtZSB0b28gc21hbGwuIElnbm9yZVxcblwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYy0zMTQtXHRcdFx0ICAgICAgIEVUSF9BTEVOKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jOjMxNTpcdGZyYW1lICYjNDM7PSBvZmZzZXRvZihzdHJ1Y3QgaWVlZTgwMjExX21nbXQsIHUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmMtMzE2LVx0bWVtY3B5KFx1MDAyNm1nbXRfZnJhbWUtXHUwMDNldSwgZnJhbWUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYzozMTc6XHQgICAgICAgbWdtdF9mcmFtZV9sZW4gLSBvZmZzZXRvZihzdHJ1Y3QgaWVlZTgwMjExX21nbXQsIHUpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jLTMxOC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmM9MTQxND1pbnQgYnJjbWZfcDJwX25vdGlmeV9hY3Rpb25fZnJhbWVfcngoc3RydWN0IGJyY21mX2lmICppZnAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jLTE0MjgtXHRzdHJ1Y3QgYnJjbXVfY2hhbiBjaDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuYzoxNDI5Olx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210X2ZyYW1lO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jLTE0MzAtXHRzMzIgZnJlcTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmMtMTQ4Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuYzoxNDg3Olx0bWdtdF9mcmFtZSA9IGt6YWxsb2Mob2Zmc2V0b2Yoc3RydWN0IGllZWU4MDIxMV9tZ210LCB1KSAmIzQzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jLTE0ODgtXHRcdFx0ICAgICBtZ210X2ZyYW1lX2xlbiwgR0ZQX0tFUk5FTCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jLTE0OTgtXHRtZW1jcHkobWdtdF9mcmFtZS1cdTAwM2V1LmJvZHksIGZyYW1lLCBtZ210X2ZyYW1lX2xlbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmM6MTQ5OTpcdG1nbXRfZnJhbWVfbGVuICYjNDM7PSBvZmZzZXRvZihzdHJ1Y3QgaWVlZTgwMjExX21nbXQsIHUuYm9keSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmMtMTUwMC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS8zOTQ1LW1hYy5jPTI0NTc9aWwzOTQ1X3JlcXVlc3Rfc2NhbihzdHJ1Y3QgaWxfcHJpdiAqaWwsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvMzk0NS1tYWMuYy0yNTY5LVx0bGVuID1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5LzM5NDUtbWFjLmM6MjU3MDpcdCAgICBpbF9maWxsX3Byb2JlX3JlcShpbCwgKHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKXNjYW4tXHUwMDNlZGF0YSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5LzM5NDUtbWFjLmMtMjU3MS1cdFx0XHQgICAgICB2aWYtXHUwMDNlYWRkciwgaWwtXHUwMDNlc2Nhbl9yZXF1ZXN0LVx1MDAzZWllLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5LzQ5NjUtbWFjLmM9ODUwPWlsNDk2NV9yZXF1ZXN0X3NjYW4oc3RydWN0IGlsX3ByaXYgKmlsLCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5LzQ5NjUtbWFjLmMtMTAwNS1cdGNtZF9sZW4gPVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvNDk2NS1tYWMuYzoxMDA2Olx0ICAgIGlsX2ZpbGxfcHJvYmVfcmVxKGlsLCAoc3RydWN0IGllZWU4MDIxMV9tZ210ICopc2Nhbi1cdTAwM2VkYXRhLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvNDk2NS1tYWMuYy0xMDA3LVx0XHRcdCAgICAgIHZpZi1cdTAwM2VhZGRyLCBpbC1cdTAwM2VzY2FuX3JlcXVlc3QtXHUwMDNlaWUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvNDk2NS1tYWMuYz0zNzUzPWlsNDk2NV9zZXRfYmVhY29uX3RpbShzdHJ1Y3QgaWxfcHJpdiAqaWwsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvNDk2NS1tYWMuYy0zNzU3LVx0dTE2IHRpbV9pZHg7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS80OTY1LW1hYy5jOjM3NTg6XHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQgPSAoc3RydWN0IGllZWU4MDIxMV9tZ210ICopYmVhY29uO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvNDk2NS1tYWMuYy0zNzU5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5L2NvbW1vbi5jPTE2MTM9dTE2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS9jb21tb24uYzoxNjE0OmlsX2ZpbGxfcHJvYmVfcmVxKHN0cnVjdCBpbF9wcml2ICppbCwgc3RydWN0IGllZWU4MDIxMV9tZ210ICpmcmFtZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5L2NvbW1vbi5jLTE2MTUtXHRcdCAgY29uc3QgdTggKnRhLCBjb25zdCB1OCAqaWVzLCBpbnQgaWVfbGVuLCBpbnQgbGVmdClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS9jb21tb24uYz01MjUzPWlsX2JlYWNvbl91cGRhdGUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvY29tbW9uLmMtNTI3Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5L2NvbW1vbi5jOjUyNzc6XHR0aW1lc3RhbXAgPSAoKHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKXNrYi1cdTAwM2VkYXRhKS1cdTAwM2V1LmJlYWNvbi50aW1lc3RhbXA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS9jb21tb24uYy01Mjc4LVx0aWwtXHUwMDNldGltZXN0YW1wID0gbGU2NF90b19jcHUodGltZXN0YW1wKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS9jb21tb24uaD0xNzg5PWludCBpbF9mb3JjZV9yZXNldChzdHJ1Y3QgaWxfcHJpdiAqaWwsIGJvb2wgZXh0ZXJuYWwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvY29tbW9uLmg6MTc5MDp1MTYgaWxfZmlsbF9wcm9iZV9yZXEoc3RydWN0IGlsX3ByaXYgKmlsLCBzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKmZyYW1lLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvY29tbW9uLmgtMTc5MS1cdFx0ICAgICAgY29uc3QgdTggKnRhLCBjb25zdCB1OCAqaWUsIGludCBpZV9sZW4sIGludCBsZWZ0KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWluLmM9MTU0PXN0YXRpYyB2b2lkIGl3bF9zZXRfYmVhY29uX3RpbShzdHJ1Y3QgaXdsX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vbWFpbi5jLTE1OC1cdHUxNiB0aW1faWR4O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vbWFpbi5jOjE1OTpcdHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdCA9IChzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKiliZWFjb247XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWluLmMtMTYwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYz00ODg9c3RhdGljIGludCBpd2xfZ2V0X2NoYW5uZWxzX2Zvcl9zY2FuKHN0cnVjdCBpd2xfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmMtNTYwLSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jOjU2MTpzdGF0aWMgdTE2IGl3bF9maWxsX3Byb2JlX3JlcShzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKmZyYW1lLCBjb25zdCB1OCAqdGEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmMtNTYyLVx0XHRcdCAgICAgIGNvbnN0IHU4ICppZXMsIGludCBpZV9sZW4sIGNvbnN0IHU4ICpzc2lkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYz02MDk9c3RhdGljIGludCBpd2xhZ25fcmVxdWVzdF9zY2FuKHN0cnVjdCBpd2xfcHJpdiAqcHJpdiwgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmMtODQ1LVx0XHRjbWRfbGVuID0gaXdsX2ZpbGxfcHJvYmVfcmVxKFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jOjg0NjpcdFx0XHRcdFx0KHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKXNjYW4tXHUwMDNlZGF0YSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYy04NDctXHRcdFx0XHRcdHZpZi1cdTAwM2VhZGRyLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYy04NTUtXHRcdGNtZF9sZW4gPSBpd2xfZmlsbF9wcm9iZV9yZXEoXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmM6ODU2Olx0XHRcdFx0XHQoc3RydWN0IGllZWU4MDIxMV9tZ210ICopc2Nhbi1cdTAwM2VkYXRhLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jLTg1Ny1cdFx0XHRcdFx0aXdsX2JjYXN0X2FkZHIsIE5VTEwsIDAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdXRpbHMuaD0zOT11MzIgaXdsX2ZpbmRfaWVfb2Zmc2V0KHU4ICpiZWFjb24sIHU4IGVpZCwgdTMyIGZyYW1lX3NpemUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC11dGlscy5oLTQwLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXV0aWxzLmg6NDE6XHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQgPSAodm9pZCAqKWJlYWNvbjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXV0aWxzLmgtNDItXHRjb25zdCB1OCAqaWU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvYXAuYz0xOD12b2lkIGl3bF9tbGRfc2V0X3RpbV9pZHgoc3RydWN0IGl3bF9tbGQgKm1sZCwgX19sZTMyICp0aW1faW5kZXgsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvYXAuYy0yMS1cdHUzMiB0aW1faWR4O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvYXAuYzoyMjpcdHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdCA9ICh2b2lkICopYmVhY29uO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvYXAuYy0yMy1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tYWM4MDIxMS5jPTUwOT1pd2xfbWxkX21hYzgwMjExX3R4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21hYzgwMjExLmMtNTI5LVx0XHRcdHJjdV9kZXJlZmVyZW5jZShpbmZvLVx1MDAzZWNvbnRyb2wudmlmLVx1MDAzZWxpbmtfY29uZltsaW5rX2lkXSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tYWM4MDIxMS5jOjUzMDpcdFx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWFjODAyMTEuYy01MzEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvc2Nhbi5jPTM4Mj1pd2xfbWxkX3NjYW5fYnVpbGRfcHJvYmVfcmVxKHN0cnVjdCBpd2xfbWxkICptbGQsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvc2Nhbi5jLTM4NS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9zY2FuLmM6Mzg2Olx0c3RydWN0IGllZWU4MDIxMV9tZ210ICpmcmFtZSA9ICh2b2lkICopcGFyYW1zLVx1MDAzZXByZXEuYnVmO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvc2Nhbi5jLTM4Ny1cdHU4ICpwb3MsICpuZXdwb3M7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvdGltZV9zeW5jLmM9MTEzPXN0YXRpYyBib29sIGl3bF9tbGRfaXNfc2tiX21hdGNoKHN0cnVjdCBza19idWZmICpza2IsIHU4ICphZGRyLCB1OCBkaWFsb2dfdG9rZW4pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC90aW1lX3N5bmMuYy0xMTQte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvdGltZV9zeW5jLmM6MTE1Olx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210ID0gKHZvaWQgKilza2ItXHUwMDNlZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3RpbWVfc3luYy5jLTExNi1cdHU4IHNrYl9kaWFsb2dfdG9rZW47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vZnRtLWluaXRpYXRvci5jPTE0MzU9dm9pZCBpd2xfbXZtX2Z0bV9sY19ub3RpZihzdHJ1Y3QgaXdsX212bSAqbXZtLCBzdHJ1Y3QgaXdsX3J4X2NtZF9idWZmZXIgKnJ4Yilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9mdG0taW5pdGlhdG9yLmMtMTQzNy1cdHN0cnVjdCBpd2xfcnhfcGFja2V0ICpwa3QgPSByeGJfYWRkcihyeGIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vZnRtLWluaXRpYXRvci5jOjE0Mzg6XHRjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQgPSAodm9pZCAqKXBrdC1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vZnRtLWluaXRpYXRvci5jLTE0MzktXHRzaXplX3QgbGVuID0gaXdsX3J4X3BhY2tldF9wYXlsb2FkX2xlbihwa3QpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL21hYy1jdHh0LmM9ODQ3PXZvaWQgaXdsX212bV9tYWNfY3R4dF9zZXRfdGltKHN0cnVjdCBpd2xfbXZtICptdm0sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbWFjLWN0eHQuYy04NTEtXHR1MzIgdGltX2lkeDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL21hYy1jdHh0LmM6ODUyOlx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210ID0gKHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKWJlYWNvbjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL21hYy1jdHh0LmMtODUzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL21hYzgwMjExLmM9ODE0PXZvaWQgaXdsX212bV9tYWNfdHgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbWFjODAyMTEuYy04NTUtXHRcdFx0cmN1X2RlcmVmZXJlbmNlKGluZm8tXHUwMDNlY29udHJvbC52aWYtXHUwMDNlbGlua19jb25mW2xpbmtfaWRdKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL21hYzgwMjExLmM6ODU2Olx0XHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9tYWM4MDIxMS5jLTg1Ny1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9tdm0uaD0yNjcxPXN0YXRpYyBpbmxpbmUgYm9vbCBpd2xfbXZtX21laV9maWx0ZXJfc2NhbihzdHJ1Y3QgaXdsX212bSAqbXZtLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL212bS5oLTI2NzMte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbXZtLmg6MjY3NDpcdHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdCA9ICh2b2lkICopc2tiLVx1MDAzZWRhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9tdm0uaC0yNjc1LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3NjYW4uYz03NTI9aXdsX212bV9idWlsZF9zY2FuX3Byb2JlKHN0cnVjdCBpd2xfbXZtICptdm0sIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vc2Nhbi5jLTc1NS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9zY2FuLmM6NzU2Olx0c3RydWN0IGllZWU4MDIxMV9tZ210ICpmcmFtZSA9ICh2b2lkICopcGFyYW1zLVx1MDAzZXByZXEuYnVmO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vc2Nhbi5jLTc1Ny1cdHU4ICpwb3MsICpuZXdwb3M7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vc2Nhbi5jPTI3NDU9c3RhdGljIHZvaWQgaXdsX212bV9tZWlfc2Nhbl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd2spXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vc2Nhbi5jLTI3NjAtXHR3aGlsZSAoKHNrYiA9IHNrYl9kZXF1ZXVlKFx1MDAyNnNjYW5fZmlsdGVyLVx1MDAzZXNjYW5fcmVzKSkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3NjYW4uYzoyNzYxOlx0XHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQgPSAodm9pZCAqKXNrYi1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vc2Nhbi5jLTI3NjItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vdGltZS1zeW5jLmM9MTU9c3RhdGljIGJvb2wgaXdsX212bV9pc19za2JfbWF0Y2goc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTggKmFkZHIsIHU4IGRpYWxvZ190b2tlbilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3RpbWUtc3luYy5jLTE2LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3RpbWUtc3luYy5jOjE3Olx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210ID0gKHZvaWQgKilza2ItXHUwMDNlZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3RpbWUtc3luYy5jLTE4LVx0dTggc2tiX2RpYWxvZ190b2tlbjtcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwNzoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTM3MAoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqQW5hbHl6aW5nIHRoZSBDYWxsZXJzIG9mIGBwNTRfZmluZF9pZWAqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW4uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O1Nob3cgbWUgdGhlIGNhbGxlcnMgb2YgYHA1NF9maW5kX2llYC4mIzM0OyBJJiMzOTttIG5vdCBsb29raW5nIGZvciBhIHN1cGVyZmljaWFsIG92ZXJ2aWV3IGhlcmU7IEkgd2FudCBhIGRldGFpbGVkLCBncmFudWxhciB1bmRlcnN0YW5kaW5nIG9mICp3aGVyZSogYW5kICpob3cqIHRoaXMgZnVuY3Rpb24gaXMgYmVpbmcgdXRpbGl6ZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBjb250ZXh0IHdpdGhpbiB0aGUgYnJvYWRlciBzeXN0ZW0uIEkgd2FudCB0byBzZWUgdGhlIGNhbGwgZ3JhcGhzLCB0aGUgY29udHJvbCBmbG93IHBhdGhzLCBhbmQgaWRlbnRpZnkgdGhlIHNwZWNpZmljIGRhdGEgc3RydWN0dXJlcyBhbmQgdmFyaWFibGVzIGJlaW5nIHBhc3NlZCB0byBpdCBhdCBlYWNoIGNhbGwgc2l0ZS4gQXJlIHdlIHRhbGtpbmcgYWJvdXQgYSBoYW5kZnVsIG9mIGNhbGxzIGluIGEgdGlnaHRseSBjb3VwbGVkIG1vZHVsZSwgb3IgaXMgdGhpcyBhIHBlcnZhc2l2ZSB1dGlsaXR5IGZ1bmN0aW9uIHVzZWQgdGhyb3VnaG91dCB0aGUgY29kZWJhc2U/IEFyZSB0aGVyZSBhbnkgaW5kaXJlY3QgY2FsbHM/IEFueSByZWN1cnNpb24/IEkmIzM5O20gaG9waW5nIHRvIHF1aWNrbHkgaWRlbnRpZnkgYW55IHBvdGVudGlhbCBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcyBvciBzdWJ0bGUgYnVncyB0aGF0IG1pZ2h0IGJlIGx1cmtpbmcgaW4gdGhlIGludGVyYWN0aW9ucyB3aXRoIGBwNTRfZmluZF9pZWAuIE15IGdvYWwgaXMgdG8gZ2FpbiBhbiBpbi1kZXB0aCB1bmRlcnN0YW5kaW5nIG9mIHRoZSBpbXBsaWNhdGlvbnMgb2YgYW55IGNoYW5nZXMgb3Igb3B0aW1pemF0aW9ucyB0aGF0IG1pZ2h0IGJlIG1hZGUgdG8gdGhpcyBwYXJ0aWN1bGFyIGZ1bmN0aW9uLiBJJiMzOTttIGxvb2tpbmcgZm9yIGEgY2xlYXIgbWFwIG9mIGl0cyB1c2FnZSwgZXNzZW50aWFsbHksIHNvIHRoYXQgSSBjYW4gbWFrZSBpbmZvcm1lZCBkZWNpc2lvbnMgYmFzZWQgb24gYSBmdWxsIHBpY3R1cmUgb2YgaXRzIHJvbGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA3OjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3A1NF9maW5kX2llJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg9NTU0PXN0cnVjdCBwNTRfcnNzaV9kYl9lbnRyeSAqcDU0X3Jzc2lfZmluZChzdHJ1Y3QgcDU0X2NvbW1vbiAqcCwgY29uc3QgdTE2IGZyZXEpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmgtNTU2LS8qIHV0aWxpdHkgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6NTU3OnU4ICpwNTRfZmluZF9pZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1OCBpZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oLTU1OC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jPTY2PXN0YXRpYyBpbnQgcDU0X3NldF90aW0oc3RydWN0IGllZWU4MDIxMV9odyAqZGV2LCBzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmMtNzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jOjc0OnU4ICpwNTRfZmluZF9pZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1OCBpZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmMtNzUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmM9OTM9c3RhdGljIGludCBwNTRfYmVhY29uX2Zvcm1hdF9pZV90aW0oc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jLTEwNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmM6MTA1Olx0dGltID0gcDU0X2ZpbmRfaWUoc2tiLCBXTEFOX0VJRF9USU0pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYy0xMDYtXHRpZiAoIXRpbSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jPTI5ND1zdGF0aWMgdm9pZCBwNTRfcHNwb2xsX3dvcmthcm91bmQoc3RydWN0IHA1NF9jb21tb24gKnByaXYsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYy0zMTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jOjMxMzpcdHRpbSA9IHA1NF9maW5kX2llKHNrYiwgV0xBTl9FSURfVElNKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmMtMzE0LVx0aWYgKCF0aW0pXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA3OjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMjc5CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogNzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRoaW5nczoKCioqRGlnZ2luZyBpbnRvIHRoZSBwNTQgV2lyZWxlc3MgRHJpdmVyKioKCk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGludGVyYWN0aW9ucyBvZiB0aGUgcDU0IGRyaXZlciwgZXNwZWNpYWxseSBhcm91bmQgaGFuZGxpbmcgSW5mb3JtYXRpb24gRWxlbWVudHMgKElFcykgYW5kIHBvd2VyIHNhdmUgbWVjaGFuaXNtcy4gTXkgZm9jdXMgaXMgZ29pbmcgdG8gYmUgb24gdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGJlYWNvbiBmb3JtYXRzLCB0cmFuc21pdC9yZWNlaXZlLCBhbmQgYW55IHBvdGVudGlhbCBpc3N1ZXMgd2l0aCBQUy1Qb2xsIHdvcmthcm91bmRzLiBJJiMzOTtsbCBzdGFydCBieSB0YWtpbmcgYSBsb29rIGF0IGBwNTRfZmluZF9pZWAsIGBwNTRfYmVhY29uX2Zvcm1hdF9pZV90aW1gLCBhbmQgYHA1NF9wc3BvbGxfd29ya2Fyb3VuZGAgdG8gZ2V0IG15IGJlYXJpbmdzIG9uIHRoZSByZWxldmFudCBmdW5jdGlvbnMgYW5kIGRhdGEgc3RydWN0dXJlcy4gSXQmIzM5O2xsIGJlIHRoZSBiZXN0IHdheSB0byBkZXRlcm1pbmUgaWYgSSBuZWVkIHRvIGRpZyBmdXJ0aGVyLgoKU3BlY2lmaWNhbGx5LCBJJiMzOTtsbCBuZWVkIHRvIGRyaWxsIGRvd24gaW50byB0aGUgdHJhbnNtaXQvcmVjZWl2ZSBjb2RlLiBJJiMzOTttIGdvaW5nIHRvIGxvb2sgYXQgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmNgIGFyb3VuZCBsaW5lIDI5NC4gSSYjMzk7bGwgbmVlZCB0byBzZWUgaG93IHRoZSBJRXMgYXJlIGFjdHVhbGx5IGhhbmRsZWQgaW4gdGhlIHRyYW5zbWl0L3JlY2VpdmUgcHJvY2VzcyB0aGVyZSB0byBzZWUgaG93IGV2ZXJ5dGhpbmcgaXMgd2lyZWQgdXAuIEhvcGVmdWxseSwgdGhpcyB3aWxsIHByb3ZpZGUgdGhlIGluZm9ybWF0aW9uIEkgbmVlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDc6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjkwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAyOTA6XHQgKiB3aGlsZSBkb3ppbmcsIHdlIGhhdmUgdG8gcHJlcGFyZWQgaW4gY2FzZSBtYWM4MDIxMSB1c2VzIFBTLVBPTExcbiAyOTE6XHQgKiB0byByZXRyaWV2ZSBvdXRzdGFuZGluZyBmcmFtZXMgZnJvbSBvdXIgQVAuXG4gMjkyOlx0ICogKHNlZSBjb21tZW50IGluIG5ldC9tYWM4MDIxMS9tbG1lLmMgQCBsaW5lIDE5OTMpXG4gMjkzOlx0ICovXG4gMjk0Olx0c3RhdGljIHZvaWQgcDU0X3BzcG9sbF93b3JrYXJvdW5kKHN0cnVjdCBwNTRfY29tbW9uICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIDI5NTpcdHtcbiAyOTY6XHRcdHN0cnVjdCBpZWVlODAyMTFfaGRyICpoZHIgPSAodm9pZCAqKSBza2ItXHUwMDNlZGF0YTtcbiAyOTc6XHRcdHN0cnVjdCBpZWVlODAyMTFfdGltX2llICp0aW1faWU7XG4gMjk4Olx0XHR1OCAqdGltO1xuIDI5OTpcdFx0dTggdGltX2xlbjtcbiAzMDA6XHRcdGJvb2wgbmV3X3BzbTtcbiAzMDE6XHRcbiAzMDI6XHRcdC8qIG9ubHkgYmVhY29ucyBoYXZlIGEgVElNIElFICovXG4gMzAzOlx0XHRpZiAoIWllZWU4MDIxMV9pc19iZWFjb24oaGRyLVx1MDAzZWZyYW1lX2NvbnRyb2wpKVxuIDMwNDpcdFx0XHRyZXR1cm47XG4gMzA1Olx0XG4gMzA2Olx0XHRpZiAoIXByaXYtXHUwMDNlYWlkKVxuIDMwNzpcdFx0XHRyZXR1cm47XG4gMzA4Olx0XG4gMzA5Olx0XHQvKiBvbmx5IGNvbnNpZGVyIGJlYWNvbnMgZnJvbSB0aGUgYXNzb2NpYXRlZCBCU1NJRCAqL1xuIDMxMDpcdFx0aWYgKCFldGhlcl9hZGRyX2VxdWFsXzY0Yml0cyhoZHItXHUwMDNlYWRkcjMsIHByaXYtXHUwMDNlYnNzaWQpKVxuIDMxMTpcdFx0XHRyZXR1cm47XG4gMzEyOlx0XG4gMzEzOlx0XHR0aW0gPSBwNTRfZmluZF9pZShza2IsIFdMQU5fRUlEX1RJTSk7XG4gMzE0Olx0XHRpZiAoIXRpbSlcbiAzMTU6XHRcdFx0cmV0dXJuO1xuIDMxNjpcdFxuIDMxNzpcdFx0dGltX2xlbiA9IHRpbVsxXTtcbiAzMTg6XHRcdHRpbV9pZSA9IChzdHJ1Y3QgaWVlZTgwMjExX3RpbV9pZSAqKSBcdTAwMjZ0aW1bMl07XG4gMzE5Olx0XG4gMzIwOlx0XHRuZXdfcHNtID0gaWVlZTgwMjExX2NoZWNrX3RpbSh0aW1faWUsIHRpbV9sZW4sIHByaXYtXHUwMDNlYWlkLCBmYWxzZSk7XG4gMzIxOlx0XHRpZiAobmV3X3BzbSAhPSBwcml2LVx1MDAzZXBvd2Vyc2F2ZV9vdmVycmlkZSkge1xuIDMyMjpcdFx0XHRwcml2LVx1MDAzZXBvd2Vyc2F2ZV9vdmVycmlkZSA9IG5ld19wc207XG4gMzIzOlx0XHRcdHA1NF9zZXRfcHMocHJpdik7XG4gMzI0Olx0XHR9XG4gMzI1Olx0fVxuIDMyNjpcdFxuIDMyNzpcdHN0YXRpYyBpbnQgcDU0X3J4X2RhdGEoc3RydWN0IHA1NF9jb21tb24gKnByaXYsIHN0cnVjdCBza19idWZmICpza2IpXG4gMzI4Olx0e1xuIDMyOTpcdFx0c3RydWN0IHA1NF9yeF9kYXRhICpoZHIgPSAoc3RydWN0IHA1NF9yeF9kYXRhICopIHNrYi1cdTAwM2VkYXRhO1xuIDMzMDpcdFx0c3RydWN0IGllZWU4MDIxMV9yeF9zdGF0dXMgKnJ4X3N0YXR1cyA9IElFRUU4MDIxMV9TS0JfUlhDQihza2IpO1xuIDMzMTpcdFx0dTE2IGZyZXEgPSBsZTE2X3RvX2NwdShoZHItXHUwMDNlZnJlcSk7XG4gMzMyOlx0XHRzaXplX3QgaGVhZGVyX2xlbiA9IHNpemVvZigqaGRyKTtcbiAzMzM6XHRcdHUzMiB0c2YzMjtcbiAzMzQ6XHRcdF9fbGUxNiBmYztcbiAzMzU6XHRcdHU4IHJhdGUgPSBoZHItXHUwMDNlcmF0ZSBcdTAwMjYgMHhmO1xuIDMzNjpcdFxuIDMzNzpcdFx0LypcbiAzMzg6XHRcdCAqIElmIHRoZSBkZXZpY2UgaXMgaW4gYSB1bnNwZWNpZmllZCBzdGF0ZSB3ZSBoYXZlIHRvXG4gMzM5Olx0XHQgKiBpZ25vcmUgYWxsIGRhdGEgZnJhbWVzLiBFbHNlIHdlIGNvdWxkIGVuZCB1cCB3aXRoIGFcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDc6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE1MjEKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYSBmaXJzdC1wZXJzb24gc3VtbWFyeSwga2VlcGluZyBpbiBtaW5kIG15IGV4cGVydGlzZToKCioqRXhhbWluaW5nIHRoZSBDYWxsIFNpdGVzIG9mIGBwNTRfYmVhY29uX2Zvcm1hdF9pZV90aW1gKioKCkFscmlnaHQsIHNvIEkmIzM5O20gdGhpbmtpbmcsICYjMzQ7V2UgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBgcDU0X2JlYWNvbl9mb3JtYXRfaWVfdGltYCBpcyBhY3R1YWxseSBiZWluZyB1c2VkIHdpdGhpbiB0aGUgc3lzdGVtLiYjMzQ7IEl0JiMzOTtzIG9uZSB0aGluZyB0byBoYXZlIGEgZnVuY3Rpb24gZGVmaW5lZCwgYnV0IGl0cyByZWFsIGJlaGF2aW9yIGlzIGRpY3RhdGVkIGJ5ICp3aGVyZSogYW5kICpob3cqIGl0JiMzOTtzIGNhbGxlZC4gVG8gZnVsbHkgZ3Jhc3AgaXRzIGltcGFjdCBvbiB0aGUgbGFyZ2VyIHN5c3RlbSYjMzk7cyBvcGVyYXRpb24sIGVzcGVjaWFsbHkgaW4gdGhlIGNvbnRleHQgb2YgYmVhY29uIGZvcm1hdHRpbmcgYW5kIFRJTSBtYW5hZ2VtZW50LCBJIG5lZWQgdG8gc2VlIHRoZSBjb250ZXh0cyBpbiBgbWFpbi5jYCB3aGVyZSBpdCBpcyBjYWxsZWQuIFRoYXQgd2lsbCBwcm92aWRlIGluc2lnaHQgaW50byBob3cgdGhlIGZ1bmN0aW9uIGlzIHVzZWQgaW4gcmVsYXRpb24gdG8gb3RoZXIgZnVuY3Rpb25zIGFuZCB2YXJpYWJsZXMsIHNwZWNpZmljYWxseSBpbiB0aGUgbWFpbiBsb29wIG9mIHRoZSBzb2Z0d2FyZSwgYW5kIHVuZGVyc3RhbmQgdGhlIGZsb3cgb2YgZXhlY3V0aW9uIGFuZCBob3cgdGhlIGZ1bmN0aW9uIGFmZmVjdHMgb3RoZXIgc29mdHdhcmUgcHJvY2Vzc2VzLiBUaGlzIGlzIGtleSB0byBidWlsZGluZyBhIGNvbXByZWhlbnNpdmUgbWVudGFsIG1vZGVsIG9mIGl0cyByb2xlLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgY29kZSBhbmQgbG9jYXRlIHRob3NlIGNhbGxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQyLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwNzoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDExMDpcdFx0ZHRpbV9wZXJpb2QgPSB0aW1bM107XG4gMTExOlx0XHRuZXh0ID0gdGltICYjNDM7IDIgJiM0MzsgZHRpbV9sZW47XG4gMTEyOlx0XG4gMTEzOlx0XHRpZiAoZHRpbV9sZW4gXHUwMDNjIDMpXG4gMTE0Olx0XHRcdHJldHVybiAtRUlOVkFMO1xuIDExNTpcdFxuIDExNjpcdFx0bWVtbW92ZSh0aW0sIG5leHQsIHNrYl90YWlsX3BvaW50ZXIoc2tiKSAtIG5leHQpO1xuIDExNzpcdFx0dGltID0gc2tiX3RhaWxfcG9pbnRlcihza2IpIC0gKGR0aW1fbGVuICYjNDM7IDIpO1xuIDExODpcdFxuIDExOTpcdFx0LyogYWRkIHRoZSBkdW1teSBhdCB0aGUgZW5kICovXG4gMTIwOlx0XHR0aW1bMF0gPSBXTEFOX0VJRF9USU07XG4gMTIxOlx0XHR0aW1bMV0gPSAzO1xuIDEyMjpcdFx0dGltWzJdID0gMDtcbiAxMjM6XHRcdHRpbVszXSA9IGR0aW1fcGVyaW9kO1xuIDEyNDpcdFx0dGltWzRdID0gMDtcbiAxMjU6XHRcbiAxMjY6XHRcdGlmIChkdGltX2xlbiBcdTAwM2UgMylcbiAxMjc6XHRcdFx0c2tiX3RyaW0oc2tiLCBza2ItXHUwMDNlbGVuIC0gKGR0aW1fbGVuIC0gMykpO1xuIDEyODpcdFxuIDEyOTpcdFx0cmV0dXJuIDA7XG4gMTMwOlx0fVxuIDEzMTpcdFxuIDEzMjpcdHN0YXRpYyBpbnQgcDU0X2JlYWNvbl91cGRhdGUoc3RydWN0IHA1NF9jb21tb24gKnByaXYsXG4gMTMzOlx0XHRcdFx0c3RydWN0IGllZWU4MDIxMV92aWYgKnZpZilcbiAxMzQ6XHR7XG4gMTM1Olx0XHRzdHJ1Y3QgaWVlZTgwMjExX3R4X2NvbnRyb2wgY29udHJvbCA9IHsgfTtcbiAxMzY6XHRcdHN0cnVjdCBza19idWZmICpiZWFjb247XG4gMTM3Olx0XHRpbnQgcmV0O1xuIDEzODpcdFxuIDEzOTpcdFx0YmVhY29uID0gaWVlZTgwMjExX2JlYWNvbl9nZXQocHJpdi1cdTAwM2VodywgdmlmLCAwKTtcbiAxNDA6XHRcdGlmICghYmVhY29uKVxuIDE0MTpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiAxNDI6XHRcdHJldCA9IHA1NF9iZWFjb25fZm9ybWF0X2llX3RpbShiZWFjb24pO1xuIDE0MzpcdFx0aWYgKHJldCkge1xuIDE0NDpcdFx0XHRkZXZfa2ZyZWVfc2tiX2FueShiZWFjb24pO1xuIDE0NTpcdFx0XHRyZXR1cm4gcmV0O1xuIDE0NjpcdFx0fVxuIDE0NzpcdFxuIDE0ODpcdFx0LypcbiAxNDk6XHRcdCAqIER1cmluZyBvcGVyYXRpb24sIHRoZSBmaXJtd2FyZSB0YWtlcyBjYXJlIG9mIGJlYWNvbmluZy5cbiAxNTA6XHRcdCAqIFRoZSBkcml2ZXIgb25seSBuZWVkcyB0byB1cGxvYWQgYSBuZXcgYmVhY29uIHRlbXBsYXRlLCBvbmNlXG4gMTUxOlx0XHQgKiB0aGUgdGVtcGxhdGUgd2FzIGNoYW5nZWQgYnkgdGhlIHN0YWNrIG9yIHVzZXJzcGFjZS5cbiAxNTI6XHRcdCAqXG4gMTUzOlx0XHQgKiBMTUFDIEFQSSAzLjIuMiBhbHNvIHNwZWNpZmllcyB0aGF0IHRoZSBkcml2ZXIgZG9lcyBub3QgbmVlZFxuIDE1NDpcdFx0ICogdG8gY2FuY2VsIHRoZSBvbGQgYmVhY29uIHRlbXBsYXRlIGJ5IGhhbmQsIGluc3RlYWQgdGhlIGZpcm13YXJlXG4gMTU1Olx0XHQgKiB3aWxsIHJlbGVhc2UgdGhlIHByZXZpb3VzIG9uZSB0aHJvdWdoIHRoZSBmZWVkYmFjayBtZWNoYW5pc20uXG4gMTU2Olx0XHQgKi9cbiAxNTc6XHRcdHA1NF90eF84MDIxMShwcml2LVx1MDAzZWh3LCBcdTAwMjZjb250cm9sLCBiZWFjb24pO1xuIDE1ODpcdFx0cHJpdi1cdTAwM2V0c2ZfaGlnaDMyID0gMDtcbiAxNTk6XHRcdHByaXYtXHUwMDNldHNmX2xvdzMyID0gMDtcbiAxNjA6XHRcbiAxNjE6XHRcdHJldHVybiAwO1xuIDE2MjpcdH1cbiAxNjM6XHRcbiAxNjQ6XHRzdGF0aWMgaW50IHA1NF9zdGFydChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpkZXYpXG4gMTY1Olx0e1xuIDE2NjpcdFx0c3RydWN0IHA1NF9jb21tb24gKnByaXYgPSBkZXYtXHUwMDNlcHJpdjtcbiAxNjc6XHRcdGludCBlcnI7XG4gMTY4Olx0XG4gMTY5Olx0XHRtdXRleF9sb2NrKFx1MDAyNnByaXYtXHUwMDNlY29uZl9tdXRleCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDMvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA3OjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyNzI2CgkJCQkJCQlvdXRwdXQ6IDI2NAoJCQkJCQkJdGhvdWdodHM6IDEyNTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqS01TQU4gdnMuIEtBU0FOIEFuYWx5c2lzIGZvciBgcDU0X2ZpbmRfaWVgIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFdlJiMzOTtyZSBsb29raW5nIGF0IGEgY29kZSBjaGFuZ2UgaW4gYHA1NF9maW5kX2llYCB0aGF0IHJlbW92ZXMgYSBzaXplIGNoZWNrLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gdHJhY2UgdGhlIGxvZ2ljLiBUaGUga2V5IGZ1bmN0aW9uIGlzOgoKYGBgYwp1OCAqcDU0X2ZpbmRfaWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTggaWUpCnsKCXN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdCA9ICh2b2lkICopc2tiLSZndDtkYXRhOwoJdTggKnBvcywgKmVuZDsKCglwb3MgPSAodTggKiltZ210LSZndDt1LmJlYWNvbi52YXJpYWJsZTsKCWVuZCA9IHNrYi0mZ3Q7ZGF0YSAmIzQzOyBza2ItJmd0O2xlbjsKCXdoaWxlIChwb3MgJmx0OyBlbmQpIHsKCQlpZiAocG9zICYjNDM7IDIgJiM0MzsgcG9zWzFdICZndDsgZW5kKQoJCQlyZXR1cm4gTlVMTDsKCgkJaWYgKHBvc1swXSA9PSBpZSkKCQkJcmV0dXJuIHBvczsKCgkJcG9zICYjNDM7PSAyICYjNDM7IHBvc1sxXTsKCX0KCXJldHVybiBOVUxMOwp9CmBgYAoKUHJldmlvdXNseSB0aGVyZSB3YXMgYSBjaGVjayBgaWYgKHNrYi0mZ3Q7bGVuICZsdDs9IHNpemVvZihtZ210KSkgcmV0dXJuIE5VTEw7YC4gTm93IGlmIGBza2ItJmd0O2xlbmAgaXMgbGVzcyB0aGFuIHRoZSBvZmZzZXQgb2YgYG1nbXQtJmd0O3UuYmVhY29uLnZhcmlhYmxlYCB3aXRoaW4gdGhlIGBpZWVlODAyMTFfbWdtdGAgc3RydWN0dXJlLCB0aGUgY2FsY3VsYXRpb24gb2YgYHBvc2Agd2lsbCBsZWFkIHRvIGl0IHBvaW50aW5nIGJleW9uZCBgc2tiLSZndDtkYXRhICYjNDM7IHNrYi0mZ3Q7bGVuYCAoaS5lLiBvdXRzaWRlIHRoZSBgc2tiYCBidWZmZXIpLCBidXQgKmNydWNpYWxseSosIHRoZSBgd2hpbGUgKHBvcyAmbHQ7IGVuZClgIGNvbmRpdGlvbiBldmFsdWF0ZXMgdG8gZmFsc2UuIFNvLCB0aGUgbG9vcCBkb2VzbiYjMzk7dCBleGVjdXRlIGFuZCBgTlVMTGAgaXMgcmV0dXJuZWQuIFNvIHRoZXJlJiMzOTtzIG5vIGRlcmVmZXJlbmNlLgoKVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGhlcmUgaXMsIGRvZXMgdGhpcyBwYXRjaCBpbnRyb2R1Y2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzc3VlcyB0aGF0ICpvbmx5KiBLTVNBTiB3b3VsZCBjYXRjaD8gVGhpcyBpcyB3aGVyZSB0aGUgZGlzdGluY3Rpb24gYmV0d2VlbiBLQVNBTiBhbmQgS01TQU4gYmVjb21lcyBpbXBvcnRhbnQuCgpLQVNBTiAoS2VybmVsIEFkZHJlc3MgU0FOaXRpemVyKSBpcyBteSBnby10byBmb3IgZGV0ZWN0aW5nIG91dC1vZi1ib3VuZHMgcmVhZHMgYW5kIHdyaXRlcy4gS01TQU4gKEtlcm5lbCBNZW1vcnkgU0FOaXRpemVyKSBzcGVjaWFsaXplcyBpbiBkZXRlY3RpbmcgcmVhZHMgb2YgKnVuaW5pdGlhbGl6ZWQqIG1lbW9yeS4KCk15IGFuYWx5c2lzIGxvb2tzIGxpa2UgdGhpczoKCjEuICAqKk91dC1vZi1Cb3VuZHM6KiogVGhlIHJlbW92ZWQgY2hlY2sgbWVhbnMgaWYgYHNrYi0mZ3Q7bGVuYCBpcyBzbWFsbCwgYHBvc2AgY2FuIGJlIGNhbGN1bGF0ZWQgc3VjaCB0aGF0IGl0IHN0YXJ0cyBwYXN0IGBza2ItJmd0O2RhdGEgJiM0Mzsgc2tiLSZndDtsZW5gLCBidXQgdGhlcmUgaXMgbm8gZGVyZWZlcmVuY2UgYXMgYHBvcyAmbHQ7IGVuZGAgaXMgZmFsc2UsIGFuZCB0aGVyZWZvcmUgbm8gb3V0LW9mLWJvdW5kcyBtZW1vcnkgYWNjZXNzLiBJZiBhbnksIEtBU0FOIHdvdWxkIGNhdGNoIGl0LiBUaGUgcG9pbnRlciBhcml0aG1ldGljIGlzIHdpdGhpbiB0aGUga2VybmVsJiMzOTtzIGZsYXQgYWRkcmVzcyBzcGFjZSwgc28gaXQmIzM5O3MgYSBwb2ludGVyIGNvbXBhcmlzb24gd2l0aGluIHRoZSBza2ImIzM5O3MgZGF0YSBidWZmZXIsIHNvIHRoZSBzdGFuZGFyZCBLQVNBTiBzZXR1cCB3aWxsIGZpbmQgb3V0LW9mLWJvdW5kcyBoZWFwL3NsYWIgYWNjZXNzZXMuCgoyLiAgKipVbmluaXRpYWxpemVkIE1lbW9yeToqKiBJIG5lZWQgdG8gc3lzdGVtYXRpY2FsbHkgcnVsZSBvdXQgdGhlIGZvdXIgS01TQU4gY3JpdGVyaWE6CiAgICAqICAgTm8ga2VybmVsIHN0cnVjdHVyZXMgYXJlIGJlaW5nIHNlbnQgdG8gdXNlciBzcGFjZSB3aGVyZSBpbml0aWFsaXphdGlvbiBjb3VsZCBiZSBhbiBpc3N1ZS4KICAgICogICBObyBjb25kaXRpb25hbCBsb2dpYyBkZXBlbmRzIG9uIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLiBgc2tiLSZndDtsZW5gIGFuZCBgc2tiLSZndDtkYXRhYCBhcmUgc3RhbmRhcmQsIGluaXRpYWxpemVkIGZpZWxkcy4KICAgICogICBObyBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyBhcmUgYmVpbmcgYWxsb2NhdGVkIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzIG1pZ2h0IGJlIHJlYWQgbGF0ZXIuCiAgICAqICAgTm8gYm91bmRzIGNoZWNrcyBhcmUgYmVpbmcgYWx0ZXJlZCB0byBhbGxvdyBhY2Nlc3MgdG8gdW5pbml0aWFsaXplZCBieXRlcy4gVGhlIHNrYiBkYXRhIGlzIHJlY2VpdmVkIHBhY2tldCBvciBnZW5lcmF0ZWQgYmVhY29uIGRhdGEsIHNvIGl0JiMzOTtzIGluaXRpYWxpemVkLgoKVGhlIHBhdGNoICpkb2VzbiYjMzk7dCogaW50cm9kdWNlIGFueSBvZiB0aGVzZSBLTVNBTiByaXNrcy4gVGhlIGNvZGUgaXMgcGFyc2luZyBhIG5ldHdvcmsgcGFja2V0ICh0aGUgYHNrYmAgZGF0YSksIHdoaWNoIGlzIGluaXRpYWxpemVkIG1lbW9yeS4gSWYgdGhlcmUgd2VyZSBpc3N1ZXMsIHRoZXkgd291bGQgYmUgb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcy4KCk5vdywgbGV0JiMzOTtzIGV4cGxpY2l0bHkgYWRkcmVzcyB0aGUgS01TQU4gcnVsZXM6IFRoZSBwYXRjaCBwcmltYXJpbHkgcmlza3Mgb3V0LW9mLWJvdW5kcyBhY2Nlc3MuIFRoZSBleGlzdGluZyBidWZmZXJzIG1hbmlwdWxhdGVkIGFyZSBpbml0aWFsaXplZCBwYWNrZXQgcGF5bG9hZHMuIFN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMgbGlrZSBLQVNBTiBhcmUgc3VmZmljaWVudC4gVGhlcmUmIzM5O3Mgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgaW50cm9kdWNlZCBvciBleHBvc2VkLiBUaGVyZWZvcmUsIGBOZWVkc0tNU0FOYCBzaG91bGQgYmUgYGZhbHNlYC4KCioqSW4gQ29uY2x1c2lvbjoqKiBBIGRlZGljYXRlZCBLTVNBTiBydW4gaXMgdW5uZWNlc3NhcnkuIFN0YW5kYXJkIEtBU0FOIHRlc3RpbmcgaXMgc3VmZmljaWVudCB0byB2YWxpZGF0ZSB0aGlzIHBhdGNoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ0LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwNzoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZW1vdmVzIGFuIGVycm9uZW91cyBjaGVjayBgaWYgKHNrYi1cdTAwM2VsZW4gXHUwMDNjPSBzaXplb2YobWdtdCkpYCBpbiBgcDU0X2ZpbmRfaWUoKWAgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmNgLlxuXG5LQVNBTiB2cy4gS01TQU4gYW5hbHlzaXM6XG4xLiBLTVNBTiBhcHBsaWNhYmlsaXR5OiBLTVNBTiBkZXRlY3RzIHVzZSBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSAoc3RhY2svaGVhcC9wYWdlKSBhbmQga2VybmVsLXRvLXVzZXIgaW5mby1sZWFrcy4gVGhpcyBwYXRjaCBkb2VzIG5vdCBhbGxvY2F0ZSBuZXcgdW5pbml0aWFsaXplZCBidWZmZXJzLCBkb2VzIG5vdCBpbnRyb2R1Y2UgdW5pbml0aWFsaXplZCBzdGFjayBvciBoZWFwIHZhcmlhYmxlcywgZG9lcyBub3QgY29weSBrZXJuZWwgZGF0YSB0byB1c2VyIHNwYWNlLCBhbmQgZG9lcyBub3QgYWx0ZXIgbG9naWMgdG8gYnJhbmNoIG9uIHVuaW5pdGlhbGl6ZWQgdmFsdWVzLiBUaGUgc2tiIGJ1ZmZlciBjb250YWlucyByZWNlaXZlZC9jb25zdHJ1Y3RlZCBmcmFtZSBkYXRhLlxuMi4gS0FTQU4gYXBwbGljYWJpbGl0eTogQW55IHBvdGVudGlhbCBtZW1vcnkgc2FmZXR5IGlzc3VlIGNhdXNlZCBieSByZW1vdmluZyB0aGUgY2hlY2sgKGUuZy4sIGlmIGEgbWFsZm9ybWVkIHNrYiB3aXRoIGEgbGVuZ3RoIHNtYWxsZXIgdGhhbiB0aGUgYmVhY29uIGhlYWRlciB3ZXJlIHBhcnNlZCBhbmQgbGVkIHRvIGFuIG91dC1vZi1ib3VuZHMgcmVhZCkgd291bGQgcmVwcmVzZW50IGFuIG91dC1vZi1ib3VuZHMgYnVmZmVyIGFjY2Vzcywgd2hpY2ggaXMgdHJhY2tlZCBhbmQgZGV0ZWN0ZWQgYnkgS0FTQU4uXG5cblRoZXJlZm9yZSwgdGhpcyBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcywgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVtb3ZlcyBhbiBlcnJvbmVvdXMgY2hlY2sgYGlmIChza2ItXHUwMDNlbGVuIFx1MDAzYz0gc2l6ZW9mKG1nbXQpKWAgaW4gYHA1NF9maW5kX2llKClgIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jYC5cblxuS0FTQU4gdnMuIEtNU0FOIGFuYWx5c2lzOlxuMS4gS01TQU4gYXBwbGljYWJpbGl0eTogS01TQU4gZGV0ZWN0cyB1c2Ugb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgKHN0YWNrL2hlYXAvcGFnZSkgYW5kIGtlcm5lbC10by11c2VyIGluZm8tbGVha3MuIFRoaXMgcGF0Y2ggZG9lcyBub3QgYWxsb2NhdGUgbmV3IHVuaW5pdGlhbGl6ZWQgYnVmZmVycywgZG9lcyBub3QgaW50cm9kdWNlIHVuaW5pdGlhbGl6ZWQgc3RhY2sgb3IgaGVhcCB2YXJpYWJsZXMsIGRvZXMgbm90IGNvcHkga2VybmVsIGRhdGEgdG8gdXNlciBzcGFjZSwgYW5kIGRvZXMgbm90IGFsdGVyIGxvZ2ljIHRvIGJyYW5jaCBvbiB1bmluaXRpYWxpemVkIHZhbHVlcy4gVGhlIHNrYiBidWZmZXIgY29udGFpbnMgcmVjZWl2ZWQvY29uc3RydWN0ZWQgZnJhbWUgZGF0YS5cbjIuIEtBU0FOIGFwcGxpY2FiaWxpdHk6IEFueSBwb3RlbnRpYWwgbWVtb3J5IHNhZmV0eSBpc3N1ZSBjYXVzZWQgYnkgcmVtb3ZpbmcgdGhlIGNoZWNrIChlLmcuLCBpZiBhIG1hbGZvcm1lZCBza2Igd2l0aCBhIGxlbmd0aCBzbWFsbGVyIHRoYW4gdGhlIGJlYWNvbiBoZWFkZXIgd2VyZSBwYXJzZWQgYW5kIGxlZCB0byBhbiBvdXQtb2YtYm91bmRzIHJlYWQpIHdvdWxkIHJlcHJlc2VudCBhbiBvdXQtb2YtYm91bmRzIGJ1ZmZlciBhY2Nlc3MsIHdoaWNoIGlzIHRyYWNrZWQgYW5kIGRldGVjdGVkIGJ5IEtBU0FOLlxuXG5UaGVyZWZvcmUsIHRoaXMgY2hhbmdlIGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MsIGFuZCBhIGRlZGljYXRlZCBLTVNBTiBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDdUMDc6MjA6MzguMzQwNDI0NDU3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEwMjg1NDgxMTM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlA1NF9DT01NT05cIixcbiAgICBcIlA1NF9VU0JcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJXTEFOX1ZFTkRPUl9JTlRFUlNJTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInA1NF9maW5kX2llXCIsXG4gICAgXCJwNTRfYmVhY29uX2Zvcm1hdF9pZV90aW1cIixcbiAgICBcInA1NF9wc3BvbGxfd29ya2Fyb3VuZFwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVtb3ZlcyBhbiBlcnJvbmVvdXMgY2hlY2sgYGlmIChza2ItXFx1MDAzZWxlbiBcXHUwMDNjPSBzaXplb2YobWdtdCkpYCBpbiBgcDU0X2ZpbmRfaWUoKWAgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmNgLlxcblxcbktBU0FOIHZzLiBLTVNBTiBhbmFseXNpczpcXG4xLiBLTVNBTiBhcHBsaWNhYmlsaXR5OiBLTVNBTiBkZXRlY3RzIHVzZSBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSAoc3RhY2svaGVhcC9wYWdlKSBhbmQga2VybmVsLXRvLXVzZXIgaW5mby1sZWFrcy4gVGhpcyBwYXRjaCBkb2VzIG5vdCBhbGxvY2F0ZSBuZXcgdW5pbml0aWFsaXplZCBidWZmZXJzLCBkb2VzIG5vdCBpbnRyb2R1Y2UgdW5pbml0aWFsaXplZCBzdGFjayBvciBoZWFwIHZhcmlhYmxlcywgZG9lcyBub3QgY29weSBrZXJuZWwgZGF0YSB0byB1c2VyIHNwYWNlLCBhbmQgZG9lcyBub3QgYWx0ZXIgbG9naWMgdG8gYnJhbmNoIG9uIHVuaW5pdGlhbGl6ZWQgdmFsdWVzLiBUaGUgc2tiIGJ1ZmZlciBjb250YWlucyByZWNlaXZlZC9jb25zdHJ1Y3RlZCBmcmFtZSBkYXRhLlxcbjIuIEtBU0FOIGFwcGxpY2FiaWxpdHk6IEFueSBwb3RlbnRpYWwgbWVtb3J5IHNhZmV0eSBpc3N1ZSBjYXVzZWQgYnkgcmVtb3ZpbmcgdGhlIGNoZWNrIChlLmcuLCBpZiBhIG1hbGZvcm1lZCBza2Igd2l0aCBhIGxlbmd0aCBzbWFsbGVyIHRoYW4gdGhlIGJlYWNvbiBoZWFkZXIgd2VyZSBwYXJzZWQgYW5kIGxlZCB0byBhbiBvdXQtb2YtYm91bmRzIHJlYWQpIHdvdWxkIHJlcHJlc2VudCBhbiBvdXQtb2YtYm91bmRzIGJ1ZmZlciBhY2Nlc3MsIHdoaWNoIGlzIHRyYWNrZWQgYW5kIGRldGVjdGVkIGJ5IEtBU0FOLlxcblxcblRoZXJlZm9yZSwgdGhpcyBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcywgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBmcmFtZSB2YWxpZGF0aW9uIGxvZ2ljIGluIHA1NF9maW5kX2llKCkgYnkgcmVtb3ZpbmcgYSBsZW5ndGggY2hlY2sgcHJpb3IgdG8gcGFyc2luZyBpbmZvcm1hdGlvbiBlbGVtZW50cy4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgZW11bGF0ZWQgVVNCIGRldmljZXMgKHA1NHVzYikgYW5kIG1hYzgwMjExIGJlYWNvbi9mcmFtZSBoYW5kbGluZy4gRnV6emluZyBpcyB3YXJyYW50ZWQgdG8gY2hlY2sgZm9yIG91dC1vZi1ib3VuZHMgcmVhZHMgb3IgcmVncmVzc2lvbnMgd2l0aCB0cnVuY2F0ZWQgcGFja2V0cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDc6MjA6MzguMzQwNDMyNDQ3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjQ4OTg4MzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAyOTNjOGU5ZGE3YjQ2ODVjNGVkNzM5N2QxYjBlYTAxMTgyNDg3MzI2XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gU2VwIDcgMDc6MjA6MzcgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmNcXG5pbmRleCA1N2E2MjEwOGNiYzM1Li44ZjkyMWRjNGVjZDM2IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jXFxuQEAgLTc2LDkgKzc2LDYgQEAgdTggKnA1NF9maW5kX2llKHN0cnVjdCBza19idWZmICpza2IsIHU4IGllKVxcbiBcXHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQgPSAodm9pZCAqKXNrYi1cXHUwMDNlZGF0YTtcXG4gXFx0dTggKnBvcywgKmVuZDtcXG4gXFxuLVxcdGlmIChza2ItXFx1MDAzZWxlbiBcXHUwMDNjPSBzaXplb2YobWdtdCkpXFxuLVxcdFxcdHJldHVybiBOVUxMO1xcbi1cXG4gXFx0cG9zID0gKHU4ICopbWdtdC1cXHUwMDNldS5iZWFjb24udmFyaWFibGU7XFxuIFxcdGVuZCA9IHNrYi1cXHUwMDNlZGF0YSArIHNrYi1cXHUwMDNlbGVuO1xcbiBcXHR3aGlsZSAocG9zIFxcdTAwM2MgZW5kKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA3OjIwOjM4LjkwNjI1NzgzN1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6NzEzMjIyNzc3MjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUDU0X0NPTU1PTlwiLFxuICAgIFwiUDU0X1VTQlwiLFxuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIldMQU5fVkVORE9SX0lOVEVSU0lMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicDU0X2ZpbmRfaWVcIixcbiAgICBcInA1NF9iZWFjb25fZm9ybWF0X2llX3RpbVwiLFxuICAgIFwicDU0X3BzcG9sbF93b3JrYXJvdW5kXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGZyYW1lIHZhbGlkYXRpb24gbG9naWMgaW4gcDU0X2ZpbmRfaWUoKSBieSByZW1vdmluZyBhIGxlbmd0aCBjaGVjayBwcmlvciB0byBwYXJzaW5nIGluZm9ybWF0aW9uIGVsZW1lbnRzLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSBlbXVsYXRlZCBVU0IgZGV2aWNlcyAocDU0dXNiKSBhbmQgbWFjODAyMTEgYmVhY29uL2ZyYW1lIGhhbmRsaW5nLiBGdXp6aW5nIGlzIHdhcnJhbnRlZCB0byBjaGVjayBmb3Igb3V0LW9mLWJvdW5kcyByZWFkcyBvciByZWdyZXNzaW9ucyB3aXRoIHRydW5jYXRlZCBwYWNrZXRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDI5M2M4ZTlkYTdiNDY4NWM0ZWQ3Mzk3ZDFiMGVhMDExODI0ODczMjZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIFNlcCA3IDA3OjIwOjM3IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmNcbmluZGV4IDU3YTYyMTA4Y2JjMzUuLjhmOTIxZGM0ZWNkMzYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jXG5AQCAtNzYsOSArNzYsNiBAQCB1OCAqcDU0X2ZpbmRfaWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTggaWUpXG4gXHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQgPSAodm9pZCAqKXNrYi1cdTAwM2VkYXRhO1xuIFx0dTggKnBvcywgKmVuZDtcbiBcbi1cdGlmIChza2ItXHUwMDNlbGVuIFx1MDAzYz0gc2l6ZW9mKG1nbXQpKVxuLVx0XHRyZXR1cm4gTlVMTDtcbi1cbiBcdHBvcyA9ICh1OCAqKW1nbXQtXHUwMDNldS5iZWFjb24udmFyaWFibGU7XG4gXHRlbmQgPSBza2ItXHUwMDNlZGF0YSArIHNrYi1cdTAwM2VsZW47XG4gXHR3aGlsZSAocG9zIFx1MDAzYyBlbmQpIHtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA3OjIwOjM4LjkwNjI2MDAwN1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE2NDgwMTQ0ODc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV2YWx1YXRpbmcgYSBLZXJuZWwgUGF0Y2ggZm9yIEZ1enppbmcgd2l0aCBTeXprYWxsZXIqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZGVjaWRlIGlmIHRoaXMga2VybmVsIHBhdGNoIGlzIHdvcnRoIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuIEZpcnN0LCBsZXQncyBlc3RhYmxpc2ggYSBmcmFtZXdvcmsuIFRoaXMgdGFzayBpcyBlc3NlbnRpYWxseSBhIHRyaWFnZTsgZGV0ZXJtaW5pbmcgd2hldGhlciB3ZSBzaG91bGQgaW52ZXN0IHJlc291cmNlcyBpbiBmdXp6aW5nLCBhbmQgaWYgc28sIGV4dHJhY3RpbmcgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb24gYW5kIHN5bWJvbHMuIFRoZSBzZXZlcml0eT8gQmVuaWduLCBRQSwgb3IgRGVmZW5zZS4gTm90aGluZyBjcml0aWNhbCBoZXJlLCBqdXN0IHRyeWluZyB0byBpbXByb3ZlIHN5c3RlbSByb2J1c3RuZXNzLlxuXG5Ob3csIGxldCdzIGRpc3NlY3QgdGhlIHBhdGNoIGl0c2VsZi4gSXQgbG9va3MgbGlrZSBhIGNvbW1pdCByZW1vdmluZyBhIGNoZWNrLCBzcGVjaWZpY2FsbHksIGEgbGVuZ3RoIGNoZWNrIGluIGBwNTRfZmluZF9pZWAgd2l0aGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jYC4gSXQncyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLCBlbGltaW5hdGluZyBhbiBgaWYgKHNrYi1cdTAwM2VsZW4gXHUwMDNjPSBzaXplb2YobWdtdCkpYCBjb25kaXRpb24uXG5cbkhvbGQgb24gYSBtaW51dGUsIEkgY2FuJ3QganVtcCB0byBjb25jbHVzaW9ucyBqdXN0IHlldC4gSSBuZWVkIG1vcmUgY29udGV4dC4gSSBoYXZlIHRvIHVuZGVyc3RhbmQgdGhlIGJpZ2dlciBwaWN0dXJlIGJlZm9yZSBtYWtpbmcgYSByZWNvbW1lbmRhdGlvbi4gTGV0J3MgZGlnIGRlZXBlciBpbnRvIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jYC4gV2hlcmUgaXMgYHA1NF9maW5kX2llYCB1c2VkPyBXaGljaCBkZXZpY2VzIHV0aWxpemUgdGhlIGBwNTRgIGRyaXZlcj8gSSBuZWVkIHRvIGtub3cgaWYgdGhpcyBhcmVhIGlzIGFjY2Vzc2libGUgdGhyb3VnaCB0aGUgdmlydHVhbGl6YXRpb24gdGhhdCBzeXprYWxsZXIgdGhyaXZlcyBvbi5cblxuSXMgcDU0IHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VPyBEb2VzIGl0IHBsYXkgbmljZSB3aXRoIFVTQiBnYWRnZXQgZW11bGF0aW9uLCBtYWM4MDIxMSwgb3IgaHdzaW0/IENhbiB3ZSBsZXZlcmFnZSBVU0IgZW11bGF0aW9uIHRlY2huaXF1ZXMgd2l0aGluIHN5emthbGxlciwgc3VjaCBhcyB2aGNpLCByYXctZ2FkZ2V0LCBvciB0aGUgdXNiLWZ1enplcj9cblxuUmlnaHQsIHRpbWUgdG8gZ2V0IHRvIHdvcmsuIEknbGwgdXRpbGl6ZSBteSBncmVwcGVyIGFuZCByZWFkLWZpbGUgdG9vbHMuIExldCdzIHNlZSB3aGF0IHRoZXkgY2FuIHRlbGwgbWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5MTEsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NDksIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwNzoyMDo1NS4zODY0MDc3MDZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjg2Nzk3OTYxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwNTRfZmluZF9pZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oPTU1ND1zdHJ1Y3QgcDU0X3Jzc2lfZGJfZW50cnkgKnA1NF9yc3NpX2ZpbmQoc3RydWN0IHA1NF9jb21tb24gKnAsIGNvbnN0IHUxNiBmcmVxKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmgtNTU2LS8qIHV0aWxpdHkgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjU1Nzp1OCAqcDU0X2ZpbmRfaWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTggaWUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmgtNTU4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYz02Nj1zdGF0aWMgaW50IHA1NF9zZXRfdGltKHN0cnVjdCBpZWVlODAyMTFfaHcgKmRldiwgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmMtNzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYzo3NDp1OCAqcDU0X2ZpbmRfaWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTggaWUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYy03NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jPTkzPXN0YXRpYyBpbnQgcDU0X2JlYWNvbl9mb3JtYXRfaWVfdGltKHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jLTEwNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jOjEwNTpcXHR0aW0gPSBwNTRfZmluZF9pZShza2IsIFdMQU5fRUlEX1RJTSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYy0xMDYtXFx0aWYgKCF0aW0pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jPTI5ND1zdGF0aWMgdm9pZCBwNTRfcHNwb2xsX3dvcmthcm91bmQoc3RydWN0IHA1NF9jb21tb24gKnByaXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jLTMxMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jOjMxMzpcXHR0aW0gPSBwNTRfZmluZF9pZShza2IsIFdMQU5fRUlEX1RJTSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYy0zMTQtXFx0aWYgKCF0aW0pXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA3OjIwOjU4LjI1NDM5MzkwNVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQ5Mjg4MzE5OTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqRGl2aW5nIGludG8gdGhlIHA1NCBEcml2ZXIncyBDb3JlKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGhhcHBlbmluZyBhcm91bmQgbGluZSA3NCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uY2AuIE15IGltbWVkaWF0ZSBnb2FsIGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgdGhhdCBzcGVjaWZpYyBsaW5lIG9mIGNvZGUuIEl0IGxvb2tzIGxpa2Ugc29tZXRoaW5nIHJlbGF0ZWQgdG8gdGhlIEludGVyc2lsIGNoaXBzZXQuIEknbSBnb2luZyB0byBxdWlja2x5IGNoZWNrIHdoYXQgZnVuY3Rpb24gdGhpcyBsaW5lIGlzIGluLCBhbmQgdGhlbiBleHBsb3JlIGFueSBjYWxsZXJzIHRvIHRoaXMgZnVuY3Rpb24uIEkgZXhwZWN0IGxpbmUgNzQgd2lsbCBiZSBwYXJ0IG9mIGFuIGltcG9ydGFudCBjYWxsIHNlcXVlbmNlLiBJdCBpcyBsaWtlbHkgdGhlIGtlcm5lbCBpcyBhY2Nlc3NpbmcgaW5mb3JtYXRpb24gcmVsZXZhbnQgdG8gbmV0d29yayBkcml2ZXJzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoYXQgbGluZSBkb2VzIGFuZCB3aGVyZSB0aGUgZGF0YSBpdCdzIG9wZXJhdGluZyBvbiBvcmlnaW5hdGVzLiBUaW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDM1MiwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA3OjIxOjAzLjE4MzIyODc5NloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MDk2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDYwLFxuICBcIkxpbmVDb3VudFwiOiA2MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDYwOlxcdFxcdFxcdGJyZWFrO1xcbiAgNjE6XFx0XFx0ZGVmYXVsdDpcXG4gIDYyOlxcdFxcdFxcdGJyZWFrO1xcbiAgNjM6XFx0XFx0fVxcbiAgNjQ6XFx0fVxcbiAgNjU6XFx0XFxuICA2NjpcXHRzdGF0aWMgaW50IHA1NF9zZXRfdGltKHN0cnVjdCBpZWVlODAyMTFfaHcgKmRldiwgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSxcXG4gIDY3OlxcdFxcdFxcdFxcdGJvb2wgc2V0KVxcbiAgNjg6XFx0e1xcbiAgNjk6XFx0XFx0c3RydWN0IHA1NF9jb21tb24gKnByaXYgPSBkZXYtXFx1MDAzZXByaXY7XFxuICA3MDpcXHRcXG4gIDcxOlxcdFxcdHJldHVybiBwNTRfdXBkYXRlX2JlYWNvbl90aW0ocHJpdiwgc3RhLVxcdTAwM2VhaWQsIHNldCk7XFxuICA3MjpcXHR9XFxuICA3MzpcXHRcXG4gIDc0OlxcdHU4ICpwNTRfZmluZF9pZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1OCBpZSlcXG4gIDc1OlxcdHtcXG4gIDc2OlxcdFxcdHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdCA9ICh2b2lkICopc2tiLVxcdTAwM2VkYXRhO1xcbiAgNzc6XFx0XFx0dTggKnBvcywgKmVuZDtcXG4gIDc4OlxcdFxcbiAgNzk6XFx0XFx0cG9zID0gKHU4ICopbWdtdC1cXHUwMDNldS5iZWFjb24udmFyaWFibGU7XFxuICA4MDpcXHRcXHRlbmQgPSBza2ItXFx1MDAzZWRhdGEgKyBza2ItXFx1MDAzZWxlbjtcXG4gIDgxOlxcdFxcdHdoaWxlIChwb3MgXFx1MDAzYyBlbmQpIHtcXG4gIDgyOlxcdFxcdFxcdGlmIChwb3MgKyAyICsgcG9zWzFdIFxcdTAwM2UgZW5kKVxcbiAgODM6XFx0XFx0XFx0XFx0cmV0dXJuIE5VTEw7XFxuICA4NDpcXHRcXG4gIDg1OlxcdFxcdFxcdGlmIChwb3NbMF0gPT0gaWUpXFxuICA4NjpcXHRcXHRcXHRcXHRyZXR1cm4gcG9zO1xcbiAgODc6XFx0XFxuICA4ODpcXHRcXHRcXHRwb3MgKz0gMiArIHBvc1sxXTtcXG4gIDg5OlxcdFxcdH1cXG4gIDkwOlxcdFxcdHJldHVybiBOVUxMO1xcbiAgOTE6XFx0fVxcbiAgOTI6XFx0XFxuICA5MzpcXHRzdGF0aWMgaW50IHA1NF9iZWFjb25fZm9ybWF0X2llX3RpbShzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiAgOTQ6XFx0e1xcbiAgOTU6XFx0XFx0LypcXG4gIDk2OlxcdFxcdCAqIHRoZSBnb29kIGV4Y3VzZSBmb3IgdGhpcyBtZXNzIGlzIC4uLiB0aGUgZmlybXdhcmUuXFxuICA5NzpcXHRcXHQgKiBUaGUgZHVtbXkgVElNIE1VU1QgYmUgYXQgdGhlIGVuZCBvZiB0aGUgYmVhY29uIGZyYW1lLFxcbiAgOTg6XFx0XFx0ICogYmVjYXVzZSBpdCdsbCBiZSBvdmVyd3JpdHRlbiFcXG4gIDk5OlxcdFxcdCAqL1xcbiAxMDA6XFx0XFx0dTggKnRpbTtcXG4gMTAxOlxcdFxcdHU4IGR0aW1fbGVuO1xcbiAxMDI6XFx0XFx0dTggZHRpbV9wZXJpb2Q7XFxuIDEwMzpcXHRcXHR1OCAqbmV4dDtcXG4gMTA0OlxcdFxcbiAxMDU6XFx0XFx0dGltID0gcDU0X2ZpbmRfaWUoc2tiLCBXTEFOX0VJRF9USU0pO1xcbiAxMDY6XFx0XFx0aWYgKCF0aW0pXFxuIDEwNzpcXHRcXHRcXHRyZXR1cm4gMDtcXG4gMTA4OlxcdFxcbiAxMDk6XFx0XFx0ZHRpbV9sZW4gPSB0aW1bMV07XFxuIDExMDpcXHRcXHRkdGltX3BlcmlvZCA9IHRpbVszXTtcXG4gMTExOlxcdFxcdG5leHQgPSB0aW0gKyAyICsgZHRpbV9sZW47XFxuIDExMjpcXHRcXG4gMTEzOlxcdFxcdGlmIChkdGltX2xlbiBcXHUwMDNjIDMpXFxuIDExNDpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gMTE1OlxcdFxcbiAxMTY6XFx0XFx0bWVtbW92ZSh0aW0sIG5leHQsIHNrYl90YWlsX3BvaW50ZXIoc2tiKSAtIG5leHQpO1xcbiAxMTc6XFx0XFx0dGltID0gc2tiX3RhaWxfcG9pbnRlcihza2IpIC0gKGR0aW1fbGVuICsgMik7XFxuIDExODpcXHRcXG4gMTE5OlxcdFxcdC8qIGFkZCB0aGUgZHVtbXkgYXQgdGhlIGVuZCAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwNzoyMTowMy4xODMzNzMxMTZaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMDI2MDE4NDI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV4YW1pbmluZyB0aGUgcDU0IERyaXZlciBMYW5kc2NhcGUqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBwNTQgZHJpdmVyIHNpdHVhdGlvbi4gTGV0J3Mgc3RhcnQgd2l0aCB0aGUgb2J2aW91czogd2hhdCdzICphY3R1YWxseSogdGhlcmU/IEknbSBnb2luZyB0byBxdWlja2x5IGRyaWxsIGRvd24gaW50byB0aGUga2VybmVsIHNvdXJjZSB0byBnZXQgYSBnb29kIG92ZXJ2aWV3LiBJJ2xsIGNoZWNrIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvS2NvbmZpZ2Ag4oCTIHRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzLiBUaGVuLCBJJ2xsIGltbWVkaWF0ZWx5IGZvbGxvdyB0aGF0IHVwIHdpdGggYSBsb29rIGF0IGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvTWFrZWZpbGVgLiBUaGUgbWFrZWZpbGUgd2lsbCBzaG93IG1lIHRoZSBidWlsZCBwcm9jZXNzIGFuZCB3aGF0IHNvdXJjZSBmaWxlcyBhcmUgaW52b2x2ZWQuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBxdWljaywgY29tcHJlaGVuc2l2ZSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBwNTQgZHJpdmVyJ3Mgc3RydWN0dXJlIGFuZCBob3cgaXQgZml0cyBpbnRvIHRoZSBicm9hZGVyIGtlcm5lbCBlbnZpcm9ubWVudC4gVGhhdCBpbmZvcm1hdGlvbiwgaG9wZWZ1bGx5LCB3aWxsIGJlIHdoYXQgSSBuZWVkIHRvIHN0YXJ0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NDA1LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwNzoyMTowNS4yMDkzOTQzOTJaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODMzNTcwMTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiLipcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9NYWtlZmlsZToxOiMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvTWFrZWZpbGU6MjpwNTRjb21tb24tb2Jqc1xcdFxcdFxcdDo9IGVlcHJvbS5vIGZ3aW8ubyB0eHJ4Lm8gbWFpbi5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L01ha2VmaWxlOjM6cDU0Y29tbW9uLSQoQ09ORklHX1A1NF9MRURTKVxcdCs9IGxlZC5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L01ha2VmaWxlOjQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L01ha2VmaWxlOjU6b2JqLSQoQ09ORklHX1A1NF9DT01NT04pXFx0Kz0gcDU0Y29tbW9uLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfUDU0X1VTQilcXHRcXHQrPSBwNTR1c2Iub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9NYWtlZmlsZTo3Om9iai0kKENPTkZJR19QNTRfUENJKVxcdFxcdCs9IHA1NHBjaS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L01ha2VmaWxlOjg6b2JqLSQoQ09ORklHX1A1NF9TUEkpXFx0XFx0Kz0gcDU0c3BpLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDc6MjE6MDUuMjkyNzYwMjE4WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTc2Mzg4OTA3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2U6XG5cbioqSW52ZXN0aWdhdGluZyBVU0IgU3VwcG9ydCBpbiB0aGUgcDU0IFdpcmVsZXNzIERyaXZlcioqXG5cbk9rYXksIHNvIHRoZSBkb2N1bWVudGF0aW9uIG1lbnRpb25zIHRoYXQgcDU0IHN1cHBvcnRzIFVTQiwgc3BlY2lmaWNhbGx5IHdpdGggYENPTkZJR19QNTRfVVNCYC4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gZGlnIGludG8gdGhlIGtlcm5lbCBzb3VyY2UgYW5kIHZlcmlmeSB0aGlzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgVVNCIGZ1bmN0aW9uYWxpdHkgaXMgaW50ZWdyYXRlZCB3aXRoaW4gdGhlIGRyaXZlci4gTGV0J3Mgc3RhcnQgd2l0aCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L0tjb25maWdgLiBUaGlzIGNvbmZpZ3VyYXRpb24gZmlsZSBzaG91bGQgc2hlZCBsaWdodCBvbiBob3cgdGhlIFVTQiBvcHRpb24gaXMgZGVmaW5lZCwgaXRzIGRlcGVuZGVuY2llcywgYW5kIHBlcmhhcHMgdGhlIHZhcmlvdXMgVVNCLXJlbGF0ZWQgY29tcG9uZW50cyB3aXRoaW4gdGhlIHA1NCBkcml2ZXIuIEkgYW50aWNpcGF0ZSB0aGF0IHRoaXMgS2NvbmZpZyBmaWxlIHdpbGwgc3BlY2lmeSB3aGVyZSB0aGUgVVNCLXNwZWNpZmljIGNvZGUgaXMgbG9jYXRlZCBhbmQgbWlnaHQgYWxzbyBnaXZlIG1lIGEgZ2VuZXJhbCBvdmVydmlldyBvZiB0aGUgYnVpbGQgcHJvY2Vzcy4gRnJvbSB0aGVyZSBJJ2xsIGJlIGFibGUgdG8gY29uZmlybSBvciBkZW55IHRoZSBVU0Igc3VwcG9ydCBjbGFpbXMgaW4gbXkgbWVtb3J5IGFuZCBwcm9jZWVkIHdpdGggZnVydGhlciBpbnZlc3RpZ2F0aW9uLCBpZiBuZWVkZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU5NjAsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwNzoyMTowNy4wNTY2NTI5NzVaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI0ODkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDgwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHRjb25maWcgUDU0X0NPTU1PTlxcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIlNvZnRtYWMgUHJpc201NCBzdXBwb3J0XFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxcbiAgIDU6XFx0XFx0c2VsZWN0IEZXX0xPQURFUlxcbiAgIDY6XFx0XFx0c2VsZWN0IENSQ19DQ0lUVFxcbiAgIDc6XFx0XFx0aGVscFxcbiAgIDg6XFx0XFx0ICBUaGlzIGlzIGNvbW1vbiBjb2RlIGZvciBpc2wzOHh4L3N0bGM0NXh4IGJhc2VkIG1vZHVsZXMuXFxuICAgOTpcXHRcXHQgIFRoaXMgbW9kdWxlIGRvZXMgbm90aGluZyBieSBpdHNlbGYgLSB0aGUgVVNCL1BDSS9TUEkgZnJvbnQtZW5kc1xcbiAgMTA6XFx0XFx0ICBhbHNvIG5lZWQgdG8gYmUgZW5hYmxlZCBpbiBvcmRlciB0byBzdXBwb3J0IGFueSBkZXZpY2VzLlxcbiAgMTE6XFx0XFxuICAxMjpcXHRcXHQgIFRoZXNlIGRldmljZXMgcmVxdWlyZSBzb2Z0bWFjIGZpcm13YXJlIHdoaWNoIGNhbiBiZSBmb3VuZCBhdFxcbiAgMTM6XFx0XFx0ICBcXHUwMDNjaHR0cHM6Ly93aXJlbGVzcy5kb2NzLmtlcm5lbC5vcmcvZW4vbGF0ZXN0L2VuL3VzZXJzL2RyaXZlcnMvcDU0Lmh0bWxcXHUwMDNlXFxuICAxNDpcXHRcXG4gIDE1OlxcdFxcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBhIG1vZHVsZSwgaXQnbGwgYmUgY2FsbGVkIHA1NGNvbW1vbi5cXG4gIDE2OlxcdFxcbiAgMTc6XFx0Y29uZmlnIFA1NF9VU0JcXG4gIDE4OlxcdFxcdHRyaXN0YXRlIFxcXCJQcmlzbTU0IFVTQiBzdXBwb3J0XFxcIlxcbiAgMTk6XFx0XFx0ZGVwZW5kcyBvbiBQNTRfQ09NTU9OIFxcdTAwMjZcXHUwMDI2IFVTQlxcbiAgMjA6XFx0XFx0c2VsZWN0IENSQzMyXFxuICAyMTpcXHRcXHRoZWxwXFxuICAyMjpcXHRcXHQgIFRoaXMgZHJpdmVyIGlzIGZvciBVU0IgaXNsMzh4eCBiYXNlZCB3aXJlbGVzcyBjYXJkcy5cXG4gIDIzOlxcdFxcbiAgMjQ6XFx0XFx0ICBUaGVzZSBkZXZpY2VzIHJlcXVpcmUgc29mdG1hYyBmaXJtd2FyZSB3aGljaCBjYW4gYmUgZm91bmQgYXRcXG4gIDI1OlxcdFxcdCAgXFx1MDAzY2h0dHBzOi8vd2lyZWxlc3MuZG9jcy5rZXJuZWwub3JnL2VuL2xhdGVzdC9lbi91c2Vycy9kcml2ZXJzL3A1NC5odG1sXFx1MDAzZVxcbiAgMjY6XFx0XFxuICAyNzpcXHRcXHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgYSBtb2R1bGUsIGl0J2xsIGJlIGNhbGxlZCBwNTR1c2IuXFxuICAyODpcXHRcXG4gIDI5OlxcdGNvbmZpZyBQNTRfUENJXFxuICAzMDpcXHRcXHR0cmlzdGF0ZSBcXFwiUHJpc201NCBQQ0kgc3VwcG9ydFxcXCJcXG4gIDMxOlxcdFxcdGRlcGVuZHMgb24gUDU0X0NPTU1PTiBcXHUwMDI2XFx1MDAyNiBQQ0lcXG4gIDMyOlxcdFxcdGhlbHBcXG4gIDMzOlxcdFxcdCAgVGhpcyBkcml2ZXIgaXMgZm9yIFBDSSBpc2wzOHh4IGJhc2VkIHdpcmVsZXNzIGNhcmRzLlxcbiAgMzQ6XFx0XFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyBtb3N0IGRldmljZXMgdGhhdCBhcmUgc3VwcG9ydGVkIGJ5IHRoZVxcbiAgMzU6XFx0XFx0ICBmdWxsbWFjIHByaXNtNTQgZHJpdmVyIHBsdXMgbWFueSBkZXZpY2VzIHdoaWNoIGFyZSBub3RcXG4gIDM2OlxcdFxcdCAgc3VwcG9ydGVkIGJ5IHRoZSBmdWxsbWFjIGRyaXZlci9maXJtd2FyZS5cXG4gIDM3OlxcdFxcbiAgMzg6XFx0XFx0ICBUaGlzIGRyaXZlciByZXF1aXJlcyBzb2Z0bWFjIGZpcm13YXJlIHdoaWNoIGNhbiBiZSBmb3VuZCBhdFxcbiAgMzk6XFx0XFx0ICBcXHUwMDNjaHR0cHM6Ly93aXJlbGVzcy5kb2NzLmtlcm5lbC5vcmcvZW4vbGF0ZXN0L2VuL3VzZXJzL2RyaXZlcnMvcDU0Lmh0bWxcXHUwMDNlXFxuICA0MDpcXHRcXG4gIDQxOlxcdFxcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBhIG1vZHVsZSwgaXQnbGwgYmUgY2FsbGVkIHA1NHBjaS5cXG4gIDQyOlxcdFxcbiAgNDM6XFx0Y29uZmlnIFA1NF9TUElcXG4gIDQ0OlxcdFxcdHRyaXN0YXRlIFxcXCJQcmlzbTU0IFNQSSAoc3RsYzQ1eHgpIHN1cHBvcnRcXFwiXFxuICA0NTpcXHRcXHRkZXBlbmRzIG9uIFA1NF9DT01NT04gXFx1MDAyNlxcdTAwMjYgU1BJX01BU1RFUlxcbiAgNDY6XFx0XFx0aGVscFxcbiAgNDc6XFx0XFx0ICBUaGlzIGRyaXZlciBpcyBmb3Igc3RsYzQ1NTAgb3Igc3RsYzQ1NjAgYmFzZWQgd2lyZWxlc3MgY2hpcHNcXG4gIDQ4OlxcdFxcdCAgc3VjaCBhcyBOb2tpYSdzIE44MDAvTjgxMCBQb3J0YWJsZSBJbnRlcm5ldCBUYWJsZXQuXFxuICA0OTpcXHRcXG4gIDUwOlxcdFxcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBhIG1vZHVsZSwgaXQnbGwgYmUgY2FsbGVkIHA1NHNwaS5cXG4gIDUxOlxcdFxcbiAgNTI6XFx0Y29uZmlnIFA1NF9TUElfREVGQVVMVF9FRVBST01cXG4gIDUzOlxcdFxcdGJvb2wgXFxcIkluY2x1ZGUgZmFsbGJhY2sgRUVQUk9NIGJsb2JcXFwiXFxuICA1NDpcXHRcXHRkZXBlbmRzIG9uIFA1NF9TUElcXG4gIDU1OlxcdFxcdGRlZmF1bHQgblxcbiAgNTY6XFx0XFx0aGVscFxcbiAgNTc6XFx0XFx0IFVubGlrZSB0aGUgUENJIG9yIFVTQiBkZXZpY2VzLCB0aGUgU1BJIHZhcmlhbnRzIGRvbid0IGhhdmVcXG4gIDU4OlxcdFxcdCBhIGRlZGljYXRlZCBFRVBST00gY2hpcCB0byBzdG9yZSBhbGwgZGV2aWNlIHNwZWNpZmljIHZhbHVlc1xcbiAgNTk6XFx0XFx0IGZvciBjYWxpYnJhdGlvbiwgY291bnRyeSBhbmQgaW50ZXJmYWNlIHNldHRpbmdzLlxcbiAgNjA6XFx0XFxuICA2MTpcXHRcXHQgVGhlIGRyaXZlciB3aWxsIHRyeSB0byBsb2FkIHRoZSBpbWFnZSBcXFwiMzgyNi5lZXByb21cXFwiLCBpZiB0aGVcXG4gIDYyOlxcdFxcdCBmaWxlIGlzIHB1dCBhdCB0aGUgcmlnaHQgcGxhY2UuICh1c3VhbGx5IC9saWIvZmlybXdhcmUuKVxcbiAgNjM6XFx0XFxuICA2NDpcXHRcXHQgT25seSBpZiB0aGlzIHJlcXVlc3QgZmFpbHMsIHRoaXMgb3B0aW9uIHdpbGwgcHJvdmlkZSBhXFxuICA2NTpcXHRcXHQgYmFja3VwIHNldCBvZiBnZW5lcmljIHZhbHVlcyB0byBnZXQgdGhlIGRldmljZSB3b3JraW5nLlxcbiAgNjY6XFx0XFxuICA2NzpcXHRcXHQgRW5hYmxpbmcgdGhpcyBvcHRpb24gYWRkcyBhYm91dCA0ayB0byBwNTRzcGkuXFxuICA2ODpcXHRcXG4gIDY5OlxcdGNvbmZpZyBQNTRfTEVEU1xcbiAgNzA6XFx0XFx0Ym9vbFxcbiAgNzE6XFx0XFx0ZGVwZW5kcyBvbiBQNTRfQ09NTU9OIFxcdTAwMjZcXHUwMDI2IE1BQzgwMjExX0xFRFMgXFx1MDAyNlxcdTAwMjYgKExFRFNfQ0xBU1MgPSB5IHx8IExFRFNfQ0xBU1MgPSBQNTRfQ09NTU9OKVxcbiAgNzI6XFx0XFx0ZGVmYXVsdCB5XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA3OjIxOjA3LjA1Njc4MTQ0NVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyODI5Mjk3Mzg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBQNTQgVVNCIERyaXZlcioqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgYFA1NF9VU0JgIHJlbGllcyBvbiBib3RoIGBQNTRfQ09NTU9OYCBhbmQgdGhlIGJyb2FkZXIgYFVTQmAgc3Vic3lzdGVtLiBGdXJ0aGVybW9yZSwgYFA1NF9DT01NT05gIGl0c2VsZiBpcyBkZXBlbmRlbnQgb24gYE1BQzgwMjExYC4gTm93LCB0aGUga2V5IHF1ZXN0aW9uIGFyaXNlczogd2hlbiBhIFVTQiBkZXZpY2UgcmVsYXRlZCB0byBQNTQgaXMgcGx1Z2dlZCBpbiwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgY29udGV4dCBvZiBzb21ldGhpbmcgbGlrZSBzeXprYWxsZXIncyBVU0IgcmF3LWdhZGdldCwgYSB2aGNpIHNldHVwLCBmdXp6aW5nIGF0dGVtcHRzLCBvciBldmVuIHR5cGljYWwgTUFDODAyMTEgQVAvYmVhY29uIHRyYW5zbWlzc2lvbiBhbmQgcmVjZXB0aW9uLCBkb2VzIHRoZSBgcDU0X2ZpbmRfaWVgIGZ1bmN0aW9uIGdldCBpbnZva2VkPyBUaGF0J3MgdGhlIGNvcmUgb2YgbXkgY3VycmVudCBpbnZlc3RpZ2F0aW9uLiBUbyB1bmRlcnN0YW5kIHRoaXMgSSB3aWxsIG5lZWQgdG8gY2hlY2sgd2hlcmUgYHA1NF9maW5kX2llYCBpcyBpbnZva2VkIGFuZCBob3cgaXQgaXMgaW52b2x2ZWQgaW4gYmVhY29uIGZvcm1hdHRpbmcgb3Igb3RoZXIgd29ya2Fyb3VuZHMuIEknbGwgbmVlZCB0byBmb2N1cyBvbiBpbnZlc3RpZ2F0aW5nIGBwNTRfYmVhY29uX2Zvcm1hdF9pZV90aW1gIGFuZCBgcDU0X3BzcG9sbF93b3JrYXJvdW5kYCB0byBidWlsZCBhIGNvbXBsZXRlIHBpY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjczMzEsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwNzoyMTowOS44ODYwODMwODVaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyODc4MjExNDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicDU0X2JlYWNvbl9mb3JtYXRfaWVfdGltXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmM9NzQ9dTggKnA1NF9maW5kX2llKHN0cnVjdCBza19idWZmICpza2IsIHU4IGllKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYy05Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jOjkzOnN0YXRpYyBpbnQgcDU0X2JlYWNvbl9mb3JtYXRfaWVfdGltKHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYy05NC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jPTEzMj1zdGF0aWMgaW50IHA1NF9iZWFjb25fdXBkYXRlKHN0cnVjdCBwNTRfY29tbW9uICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYy0xNDEtXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYzoxNDI6XFx0cmV0ID0gcDU0X2JlYWNvbl9mb3JtYXRfaWVfdGltKGJlYWNvbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYy0xNDMtXFx0aWYgKHJldCkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwNzoyMToxMi4xNzM5MTAyNDlaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTg0MDE1NjgwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246XG5cbioqSW52ZXN0aWdhdGluZyBCZWFjb24gVXBkYXRlcyBhbmQgUG9sbCBXb3JrYXJvdW5kcyoqXG5cbk9rYXksIHRpbWUgdG8gZGlnIGluLiBNeSBndXQgZmVlbGluZyBpcyBzb21ldGhpbmcgaXNuJ3QgcXVpdGUgcmlnaHQgd2l0aCB0aGUgYmVhY29uIHVwZGF0ZXMgb3IgdGhlIHBzcG9sbCB3b3JrYXJvdW5kLCBzbyBJJ20gZ29pbmcgdG8gc3RhcnQgYnkgdHJhY2luZyB0aG9zZSBjYWxscy4gSSB3YW50IHRvIHNlZSBleGFjdGx5IGhvdyBgcDU0X2JlYWNvbl91cGRhdGVgIGFuZCBgcDU0X3BzcG9sbF93b3JrYXJvdW5kYCBhcmUgYmVpbmcgdXNlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRyb2wgZmxvdywgdGhlIGRhdGEgYmVpbmcgcGFzc2VkLCBhbmQgYW55IHBvdGVudGlhbCBwb2ludHMgb2YgZmFpbHVyZSBvciB1bmV4cGVjdGVkIGJlaGF2aW9yLiBFc3NlbnRpYWxseSwgSSdtIGdvaW5nIHRvIG1hcCBvdXQgdGhlIGNhbGwgZ3JhcGggZm9yIHRoZXNlIHR3byBmdW5jdGlvbnMgdG8gZ2V0IGEgaGlnaC1sZXZlbCB2aWV3IGFuZCBzZWUgaWYgYW55dGhpbmcganVtcHMgb3V0LiBJIGhhdmUgYSBodW5jaCB0aGlzIGlzIHRoZSByaWdodCBwbGFjZSB0byBzdGFydCBsb29raW5nIGZvciB0aGUgY29yZSBpc3N1ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODAyNywiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA3OjIxOjE0LjAxNDA2OTA2NVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI0Nzg2MzUxMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwNTRfYmVhY29uX3VwZGF0ZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jPTkzPXN0YXRpYyBpbnQgcDU0X2JlYWNvbl9mb3JtYXRfaWVfdGltKHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jLTEzMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jOjEzMjpzdGF0aWMgaW50IHA1NF9iZWFjb25fdXBkYXRlKHN0cnVjdCBwNTRfY29tbW9uICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmMtMTMzLVxcdFxcdFxcdHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jPTQ0OT1zdGF0aWMgdm9pZCBwNTRfYnNzX2luZm9fY2hhbmdlZChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jLTQ2NC1cXHRcXHRwNTRfc2V0dXBfbWFjKHByaXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmM6NDY1OlxcdFxcdHA1NF9iZWFjb25fdXBkYXRlKHByaXYsIHZpZik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYy00NjYtXFx0XFx0cDU0X3NldF9lZGNmKHByaXYpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwNzoyMToxNi4yNjE5NDQxOThaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjM3MzM3OTUyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKkNoZWNraW5nIGEgUG90ZW50aWFsIEJ1ZyBGaXgqKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcsIFwiTGV0J3MgZGlnIGludG8gYHR4cnguY2AgYWdhaW4uIEkgaGF2ZSBhIGh1bmNoLCBhbmQgSSBuZWVkIHRvIHZlcmlmeSBzb21ldGhpbmcuXCIgU3BlY2lmaWNhbGx5LCBJIHdhbnQgdG8gdGFrZSBhIGxvb2sgYXQgdGhlIGBwNTRfcHNwb2xsX3dvcmthcm91bmRgIGZ1bmN0aW9uLiBUaGlzIGlzIGFuIGludGVyZXN0aW5nIGFyZWEgYmVjYXVzZSBpdCBkZWFscyB3aXRoIHBvd2VyLXNhdmluZyBhbmQgcG9sbGluZy4gR2l2ZW4gdGhlIGNvbnRleHQsIEkgc3VzcGVjdCB0aGVyZSBtaWdodCBiZSBzb21ldGhpbmcgcmVsYXRlZCB0byBhbiBpc3N1ZSBJJ20gY2hhc2luZyBsdXJraW5nIGluIHRoYXQgcGFydCBvZiB0aGUgY29kZS4gSXQncyBhIGtleSBhcmVhIHRvIHJlLWV4YW1pbmUgdG8gc2VlIGlmIHRoaXMgaXMgcmVsYXRlZCB0byB0aGUgY3VycmVudCBwcm9ibGVtcy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIHNvbWV0aGluZyBwcmV2aW91c2x5LiBMZXQncyBzZWUgd2hhdCdzIGluIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NTYxLCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDc6MjE6MTguNjM1MzI3MjExWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTc1NTczNjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInA1NF9wc3BvbGxfd29ya2Fyb3VuZFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jPTI3NT1zdGF0aWMgaW50IHA1NF9yc3NpX3RvX2RibShzdHJ1Y3QgcDU0X2NvbW1vbiAqcHJpdiwgaW50IHJzc2kpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jLTI5My0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jOjI5NDpzdGF0aWMgdm9pZCBwNTRfcHNwb2xsX3dvcmthcm91bmQoc3RydWN0IHA1NF9jb21tb24gKnByaXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYy0yOTUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYz0zMjc9c3RhdGljIGludCBwNTRfcnhfZGF0YShzdHJ1Y3QgcDU0X2NvbW1vbiAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmMtMzg4LVxcdGlmICh1bmxpa2VseShwcml2LVxcdTAwM2Vody1cXHUwMDNlY29uZi5mbGFncyBcXHUwMDI2IElFRUU4MDIxMV9DT05GX1BTKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jOjM4OTpcXHRcXHRwNTRfcHNwb2xsX3dvcmthcm91bmQocHJpdiwgc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jLTM5MC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDc6MjE6MjAuODEwOTA1NjRaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTc0MDA1MTQ1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBvdGVudGlhbCBWdWxuZXJhYmlsaXR5IGluIGBwNTRfZmluZF9pZWAqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFRoZSBjb2RlIGluIGBwNTRfZmluZF9pZWAgaGFzIGEgcGVjdWxpYXIgY2hhbmdlLiBJbml0aWFsbHksIHRoZXJlIHdhcyBhIGNoZWNrOiBgaWYgKHNrYi1cdTAwM2VsZW4gXHUwMDNjPSBzaXplb2YobWdtdCkpIHJldHVybiBOVUxMO2AuIFRoYXQgY2hlY2sgaGFzIGJlZW4gcmVtb3ZlZC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gdW5kZXJzdGFuZCAqd2h5KiBhbmQgd2hhdCB0aGUgaW1wbGljYXRpb25zIGFyZS5cblxuVGhlIHZhcmlhYmxlIGBtZ210YCBpcyBhIHBvaW50ZXIgdG8gYGllZWU4MDIxMV9tZ210YC4gVGhlIHJlbW92ZWQgY2hlY2sgd2FzIGNvbXBhcmluZyB0aGUgcGFja2V0IGxlbmd0aCAoYHNrYi1cdTAwM2VsZW5gKSB0byB0aGUgc2l6ZSBvZiBhIHBvaW50ZXIsIHdoaWNoIGlzIDggYnl0ZXMuIEhvd2V2ZXIsIGBtZ210LVx1MDAzZXUuYmVhY29uLnZhcmlhYmxlYCBpcyAqYWN0dWFsbHkqIG9mZnNldCBhdCAzNiBieXRlcyAob3Igd2hhdGV2ZXIgaXRzIGFjdHVhbCBvZmZzZXQgaXMsIGdpdmVuIHRoZSBzdHJ1Y3R1cmUncyBsYXlvdXQpLiBJZiB0aGUgcGFja2V0IGlzLCBzYXksIG9ubHkgMTAgYnl0ZXMsIHRoZSBjb2RlIHdvdWxkIGJlIHRyeWluZyB0byBhY2Nlc3MgbWVtb3J5IHBhc3QgdGhlIGVuZCBvZiB0aGUgYHNrYi1cdTAwM2VkYXRhYCBidWZmZXIuIFRoZSBgcG9zIFx1MDAzYyBlbmRgIGNvbXBhcmlzb24gaW4gdGhlIGB3aGlsZWAgbG9vcCAqc2hvdWxkKiBwcmV2ZW50IGlzc3VlcywgYnV0IHRoZSBjaGVjayB3YXMgdGhlcmUgZm9yIGEgcmVhc29uLCBhbmQgaXRzIHJlbW92YWwgd2FycmFudHMgY2xvc2Ugc2NydXRpbnkuXG5cblRoZSBpbml0aWFsIGFzc3VtcHRpb24gbWlnaHQgYmUgdGhlIGNvZGUgaXMgc2FmZSwgc2luY2UgYHBvc2AgYXJpdGhtZXRpYyBjb3VsZCBzdGlsbCBjYXVzZSBpdCB0byBiZSBvdXQtb2YtYm91bmRzLCBldmVuIGlmIHRoZSBjb21wYXJpc29uIHByZXZlbnRzIGV4ZWN1dGlvbi4gVGhlIHJlbW92YWwgb2YgdGhlIGNoZWNrIGlzIHRoZSBtb3N0IGludGVyZXN0aW5nIHBhcnQuIFdoeSB3YXMgaXQgcmVtb3ZlZD8gV2FzIGl0IGEgYnVnIGZpeD8gT3IgYSBtaXNndWlkZWQgcmVmYWN0b3Jpbmc/IEl0ICpjb3VsZCogaW5kaWNhdGUgYSBtaXN1bmRlcnN0YW5kaW5nIG9mIGBzaXplb2ZgIG9yIHNvbWUgbG9naWMgZXJyb3IsIGJ1dCBub3cgdGhlIHF1ZXN0aW9uIGlzOiBjYW4gdGhpcyBjb25kaXRpb24gYmUgdHJpZ2dlcmVkP1xuXG5TbywgaXMgdGhpcyByZWFjaGFibGU/IFRoZSBkcml2ZXIgaXMgYHA1NGAsIHdoaWNoIGhhcyBhIFVTQiBmcm9udGVuZCAoYHA1NHVzYmApLiBDb25zaWRlcmluZyB0aGlzIGlzIGluIHRoZSBjb250ZXh0IG9mIHBhdGNoIGZ1enppbmcsIGFuZCB0aGUgaW5zdHJ1Y3Rpb25zIGVtcGhhc2l6ZSByZWFjaGFiaWxpdHksIGxldCdzIGFwcGx5IHRoZSBjcml0ZXJpYS4gV2UgY2FuIGZ1enogVVNCIHdpcmVsZXNzIGRldmljZXMgdXNpbmcgc3l6a2FsbGVyIHdpdGggVVNCIGVtdWxhdGlvbiwgcmF3LWdhZGdldCwgdmhjaSwgYW5kIG1hYzgwMjExLiBUaGUgZG9jdW1lbnRhdGlvbiBzcGVjaWZpY2FsbHkgbWVudGlvbnMgdGhhdCBcIlJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHNcIiBpbmNsdWRlIHRob3NlIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgbGlrZSBVU0IgZ2FkZ2V0cy4gUGF0Y2ggZnV6emluZydzIHByaW9yaXR5IGlzIHJlYWNoYWJpbGl0eSwgc28gaWYgdGhlIGNvZGUgZXhlY3V0ZXMsIGl0J3Mgd29ydGggZnV6emluZyFcblxuTGV0J3MgY2hlY2sgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zLiBUaGUgYHA1NGAgZHJpdmVyIGl0c2VsZiAoYW5kIHNwZWNpZmljYWxseSBVU0IpIGRlcGVuZHMgb24gYE1BQzgwMjExYCBhbmQgYFVTQmAsIGFuZCBpcyBwYXJ0IG9mIHRoZSBgUDU0X0NPTU1PTmAgY29uZmlndXJhdGlvbiwgd2hpY2ggaGFzIGRlcGVuZGVuY2llcyBvbiBvdGhlciBjb21wb25lbnRzLiBUaGVzZSBjb25maWd1cmF0aW9ucyBhcmUgYWxsIHN0YW5kYXJkLCBhbmQgaXQncyBmZWFzaWJsZSB0byB0cmlnZ2VyIHRoaXMgY29kZSBpbiBhIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBTbywgYHA1NGAgaXMgcG90ZW50aWFsbHkgcmVhY2hhYmxlIHRocm91Z2ggdGhlc2UgdmlydHVhbCBidXNlcywgYW5kIHRoYXQgbWFrZXMgdGhpcyBwYXRjaCB3b3J0aCBmdXp6aW5nISBMZXQncyBjaGVjayB0aGUgY29uZmlndXJhdGlvbnMgdG8gY29uZmlybSB3ZSBoYXZlIHRoZSBjb3JyZWN0IGJ1aWxkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MDk2LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTYwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA3OjIxOjI2LjU1MDk2MDExMloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU4NTA1ODUyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNvdXJjZS4qcDU0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL0tjb25maWc9MTM9aWYgV0xBTl9WRU5ET1JfSU5URVJTSUxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9LY29uZmlnLTE0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL0tjb25maWc6MTU6c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9LY29uZmlnLTE2LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwNzoyMToyNi43MDk0NzEyMjVaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTg2ODk2OTU0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIEludGVyY2lsIFdpcmVsZXNzIERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIEludGVyc2lsIHdpcmVsZXNzIGRyaXZlci4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gY2hlY2sgdGhlIGBLY29uZmlnYCBmaWxlLCBsb2NhdGVkIGluIHRoZSB1c3VhbCBwbGFjZTogYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL0tjb25maWdgLiBUaGF0J3Mgd2hlcmUgSSdkIGV4cGVjdCB0byBmaW5kIGFsbCB0aGUgY29tcGlsZS10aW1lIG9wdGlvbnMsIGRlcGVuZGVuY2llcywgYW5kIGhlbHAgdGV4dCB0aGF0IGRldGVybWluZSBob3cgdGhpcyBkcml2ZXIgYmVoYXZlcyBhbmQgd2hldGhlciBpdCBnZXRzIGJ1aWx0IGludG8gdGhlIGtlcm5lbC4gSSdsbCBuZWVkIHRvIGxvb2sgaW4gZGV0YWlsIGF0IGhvdyB0aGUgdmFyaW91cyBmZWF0dXJlcyBhcmUgZW5hYmxlZCBhbmQgZGlzYWJsZWQsIGFuZCBob3cgdGhleSByZWxhdGUgdG8gdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUgYW5kIGFueSByZXF1aXJlZCBrZXJuZWwgc3VwcG9ydC4gSSBhbnRpY2lwYXRlIEkgd2lsbCBuZWVkIHRvIGxvb2sgYXQgYW55IGRlcGVuZGVuY2llcyBvbiBvdGhlciBrZXJuZWwgc3Vic3lzdGVtcyBvciBmZWF0dXJlcy4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIGdvb2Qgb3ZlcnZpZXcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNzY0LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDc6MjE6MjguNTc4NDQzNjRaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODc3OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIFdMQU5fVkVORE9SX0lOVEVSU0lMXFxuICAgMzpcXHRcXHRib29sIFxcXCJJbnRlcnNpbCBkZXZpY2VzXFxcIlxcbiAgIDQ6XFx0XFx0ZGVmYXVsdCB5XFxuICAgNTpcXHRcXHRoZWxwXFxuICAgNjpcXHRcXHQgIElmIHlvdSBoYXZlIGEgd2lyZWxlc3MgY2FyZCBiZWxvbmdpbmcgdG8gdGhpcyBjbGFzcywgc2F5IFkuXFxuICAgNzpcXHRcXG4gICA4OlxcdFxcdCAgTm90ZSB0aGF0IHRoZSBhbnN3ZXIgdG8gdGhpcyBxdWVzdGlvbiBkb2Vzbid0IGRpcmVjdGx5IGFmZmVjdCB0aGVcXG4gICA5OlxcdFxcdCAga2VybmVsOiBzYXlpbmcgTiB3aWxsIGp1c3QgY2F1c2UgdGhlIGNvbmZpZ3VyYXRvciB0byBza2lwIGFsbCB0aGVcXG4gIDEwOlxcdFxcdCAgcXVlc3Rpb25zIGFib3V0IHRoZXNlIGNhcmRzLiBJZiB5b3Ugc2F5IFksIHlvdSB3aWxsIGJlIGFza2VkIGZvclxcbiAgMTE6XFx0XFx0ICB5b3VyIHNwZWNpZmljIGNhcmQgaW4gdGhlIGZvbGxvd2luZyBxdWVzdGlvbnMuXFxuICAxMjpcXHRcXG4gIDEzOlxcdGlmIFdMQU5fVkVORE9SX0lOVEVSU0lMXFxuICAxNDpcXHRcXG4gIDE1OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L0tjb25maWdcXFwiXFxuICAxNjpcXHRcXG4gIDE3OlxcdGVuZGlmICMgV0xBTl9WRU5ET1JfSU5URVJTSUxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDc6MjE6MjguNTc4NTMzNTRaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzUzMjg4MTM0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFVzYWdlIG9mIGBwNTRfZmluZF9pZWAqKlxuXG5Pa2F5LCBsZXQncyBzZWUgd2hlcmUgdGhpcyBgcDU0X2ZpbmRfaWVgIGZ1bmN0aW9uIGlzIGJlaW5nIHVzZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBjYWxsIGdyYXBoIHdpdGhpbiB0aGUgcDU0IGRyaXZlci4gRmlyc3QsIGxldCdzIGxvb2sgYXQgdGhlIGRpcmVjdCBjYWxsZXJzLiBBaCwgaGVyZSB3ZSBnbywgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmNgLCBgcDU0X2ZpbmRfaWVgIGlzIGNsZWFybHkgaW52b2tlZCBieSBgcDU0X2JlYWNvbl9mb3JtYXRfaWVfdGltYC4gUmlnaHQsIGFuZCBgcDU0X2JlYWNvbl9mb3JtYXRfaWVfdGltYCBpcyBwYXJ0IG9mIHRoZSBiZWFjb24gdXBkYXRlIHByb2Nlc3MsIGNhbGxlZCB0aHJvdWdoIGBwNTRfYmVhY29uX3VwZGF0ZWAgd2hpY2ggaXMgZHJpdmVuIGJ5IGNoYW5nZXMgaW4gYHA1NF9ic3NfaW5mb19jaGFuZ2VkYC4gVGhhdCBtYWtlcyBzZW5zZTsgaXQncyBwcm9iYWJseSBwYXJzaW5nIG9yIGZvcm1hdHRpbmcgaW5mb3JtYXRpb24gZWxlbWVudHMgZm9yIHRoZSBiZWFjb24uXG5cbk5vdywgb3ZlciBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguY2AsIEkgc2VlIGFub3RoZXIgY2FsbDogYHA1NF9wc3BvbGxfd29ya2Fyb3VuZGAgY2FsbHMgYHA1NF9maW5kX2llYC4gQW5kIHRoYXQncyBpbnZva2VkIHdpdGhpbiB0aGUgYHA1NF9yeF9kYXRhYCBmdW5jdGlvbi4gVGhhdCdzIGludGVyZXN0aW5nLCBzdWdnZXN0aW5nIGl0J3MgYWxzbyBiZWluZyB1c2VkIGR1cmluZyByZWNlaXZlIHByb2Nlc3NpbmcuIEkgd29uZGVyIHdoYXQgaXQncyBkb2luZyB0aGVyZS4gSSBzaG91bGQgdGFrZSBhIGNsb3NlciBsb29rIGF0IGBwNTRfcnhfZGF0YWAgdG8gZ2V0IHRoZSBjb250ZXh0IGFuZCB1bmRlcnN0YW5kIGhvdyBpdCBoYW5kbGVzIGluY29taW5nIHBhY2tldHMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgdG8gdGhlIG92ZXJhbGwgZHJpdmVyIGJlaGF2aW9yLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTIzMSwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3NSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA3OjIxOjMyLjExMTQxNzFaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMzE0ODg4MzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicDU0X3J4X2RhdGFcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYz0yNz1pbnQgcDU0X3BhcnNlX2Zpcm13YXJlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmRldiwgY29uc3Qgc3RydWN0IGZpcm13YXJlICpmdylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtOTQtXFx0XFx0XFx0bWF4bGVuID0gcHJpdi1cXHUwMDNldHhfaGRyX2xlbiArIC8qIFVTQiBkZXZpY2VzICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYzo5NTpcXHRcXHRcXHRcXHQgc2l6ZW9mKHN0cnVjdCBwNTRfcnhfZGF0YSkgK1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtOTYtXFx0XFx0XFx0XFx0IDQgKyAvKiByeCBhbGlnbm1lbnQgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg9MTUzPWVudW0gcDU0X3J4X2RlY3J5cHRfc3RhdHVzIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmgtMTY2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MTY3OnN0cnVjdCBwNTRfcnhfZGF0YSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaC0xNjgtXFx0X19sZTE2IGZsYWdzO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYz0yOTQ9c3RhdGljIHZvaWQgcDU0X3BzcG9sbF93b3JrYXJvdW5kKHN0cnVjdCBwNTRfY29tbW9uICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYy0zMjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYzozMjc6c3RhdGljIGludCBwNTRfcnhfZGF0YShzdHJ1Y3QgcDU0X2NvbW1vbiAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jLTMyOC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYzozMjk6XFx0c3RydWN0IHA1NF9yeF9kYXRhICpoZHIgPSAoc3RydWN0IHA1NF9yeF9kYXRhICopIHNrYi1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jLTMzMC1cXHRzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqcnhfc3RhdHVzID0gSUVFRTgwMjExX1NLQl9SWENCKHNrYik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jPTY4ND1pbnQgcDU0X3J4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmMtNjkxLVxcdGVsc2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jOjY5MjpcXHRcXHRyZXR1cm4gcDU0X3J4X2RhdGEocHJpdiwgc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jLTY5My19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA3OjIxOjM0LjM0MjkxMTYzN1oiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMzEzNzM4NjExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczpcblxuKipSWCBEYXRhIEZsb3cgVmVyaWZpY2F0aW9uKipcblxuT2theSwgc28gSSdtIGZvY3VzaW5nIG9uIHRoZSByZWNlaXZlIHBhdGggaGVyZSwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYHA1NGAgZHJpdmVyLiBJJ20gc3RhcnRpbmcgd2l0aCBgcDU0X3J4X2RhdGFgIOKAkyB0aGF0J3MgdGhlIGtleSBmdW5jdGlvbiBJIG5lZWQgdG8gdW5kZXJzdGFuZC4gTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IGBwNTRfcnhfZGF0YWAgaXMgdGhlIGNvcmUgb2YgdGhlIGRhdGEgcHJvY2Vzc2luZyB0aGF0IGhhcHBlbnMgb24gdGhlIHJlY2VpdmUgc2lkZS4gSXQncyBjYWxsZWQgYnkgYHA1NF9yeGAsIHdoaWNoIGl0c2VsZiBpcyB0cmlnZ2VyZWQgd2hlbiB0aGUgVVNCIGRldmljZSBoYW5kcyBvdmVyIGEgZnJhbWUuIFNvLCBJIG5lZWQgdG8gdHJhY2UgdGhpcyBzZXF1ZW5jZTogZnJvbSB0aGUgVVNCIGludGVyZmFjZSAoYHA1NHVzYl9yeF9jYmAgb3IgZXF1aXZhbGVudCksIGRvd24gaW50byBgcDU0X3J4YCwgYW5kIHRoZW4gdG8gYHA1NF9yeF9kYXRhYC4gTWFrZXMgc2Vuc2UsIHRoZSBVU0IgaW50ZXJmYWNlIGRldGVjdHMgYSBmcmFtZSBhbmQgaXQgaXMgcGFzc2VkIGludG8gYHA1NF9yeF9jYmAsIHdoaWNoLCB0aGVuIGNhbGxzIGBwNTRfcnhgIHdoaWNoIGlzIHJlc3BvbnNpYmxlIHRvIGhhbmRsZSB0aGUgZnJhbWUgYW5kLCB0aGVuIGl0IGNhbGxzIGBwNTRfcnhfZGF0YWAgdG8gcHJvcGVybHkgcHJvY2VzcyB0aGUgaW5jb21pbmcgZGF0YSwgb3Igc28gSSBhc3N1bWUuIEl0J3MgcmVhbGx5IHRoZSBkYXRhIHByb2Nlc3NpbmcgSSBuZWVkIHRvIHVuZGVyc3RhbmQuIExldCdzIHZlcmlmeSB0aGlzLCBJIG5lZWQgdG8gZ2V0IGRvd24gaW50byB0aGUgYHA1NHVzYmAgUlggcGF0aCB0byBjb25maXJtIHRoaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyNDM0LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDc6MjE6MzYuNjU2NjUzNjM4WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NzQ0OTI0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwNTRfcnhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM9Mjc9aW50IHA1NF9wYXJzZV9maXJtd2FyZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpkZXYsIGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZncpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTk0LVxcdFxcdFxcdG1heGxlbiA9IHByaXYtXFx1MDAzZXR4X2hkcl9sZW4gKyAvKiBVU0IgZGV2aWNlcyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM6OTU6XFx0XFx0XFx0XFx0IHNpemVvZihzdHJ1Y3QgcDU0X3J4X2RhdGEpICtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTk2LVxcdFxcdFxcdFxcdCA0ICsgLyogcnggYWxpZ25tZW50ICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oPTEzNT1zdHJ1Y3QgcDU0X2VlcHJvbV9sbTg2IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmgtMTUyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MTUzOmVudW0gcDU0X3J4X2RlY3J5cHRfc3RhdHVzIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oLTE1NC1cXHRQNTRfREVDUllQVF9OT05FID0gMCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmgtMTY2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MTY3OnN0cnVjdCBwNTRfcnhfZGF0YSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaC0xNjgtXFx0X19sZTE2IGZsYWdzO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3A1NC5oPTE2ND1zdHJ1Y3QgcDU0X2NvbW1vbiB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvcDU0LmgtMjY2LS8qIGludGVyZmFjZXMgZm9yIHRoZSBkcml2ZXJzICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3A1NC5oOjI2NzppbnQgcDU0X3J4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3A1NC5oLTI2OC12b2lkIHA1NF9mcmVlX3NrYihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3A1NHBjaS5jPTE4ND1zdGF0aWMgdm9pZCBwNTRwX2NoZWNrX3J4X3Jpbmcoc3RydWN0IGllZWU4MDIxMV9odyAqZGV2LCB1MzIgKmluZGV4LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3A1NHBjaS5jLTIyMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvcDU0cGNpLmM6MjIzOlxcdFxcdGlmIChwNTRfcngoZGV2LCBza2IpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3A1NHBjaS5jLTIyNC1cXHRcXHRcXHRkbWFfdW5tYXBfc2luZ2xlKFxcdTAwMjZwcml2LVxcdTAwM2VwZGV2LVxcdTAwM2VkZXYsIGRtYV9hZGRyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3A1NHNwaS5jPTMxND1zdGF0aWMgaW50IHA1NHNwaV9yeChzdHJ1Y3QgcDU0c19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3A1NHNwaS5jLTM2Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvcDU0c3BpLmM6MzYzOlxcdGlmIChwNTRfcngocHJpdi1cXHUwMDNlaHcsIHNrYikgPT0gMClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvcDU0c3BpLmMtMzY0LVxcdFxcdGRldl9rZnJlZV9za2Ioc2tiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9wNTR1c2IuYz0xNDA9c3RhdGljIHZvaWQgcDU0dV9yeF9jYihzdHJ1Y3QgdXJiICp1cmIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvcDU0dXNiLmMtMTYyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9wNTR1c2IuYzoxNjM6XFx0aWYgKHA1NF9yeChkZXYsIHNrYikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvcDU0dXNiLmMtMTY0LVxcdFxcdHNrYiA9IGRldl9hbGxvY19za2IocHJpdi1cXHUwMDNlY29tbW9uLnJ4X210dSArIDMyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmM9Mjk0PXN0YXRpYyB2b2lkIHA1NF9wc3BvbGxfd29ya2Fyb3VuZChzdHJ1Y3QgcDU0X2NvbW1vbiAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmMtMzI2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmM6MzI3OnN0YXRpYyBpbnQgcDU0X3J4X2RhdGEoc3RydWN0IHA1NF9jb21tb24gKnByaXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYy0zMjgte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmM6MzI5OlxcdHN0cnVjdCBwNTRfcnhfZGF0YSAqaGRyID0gKHN0cnVjdCBwNTRfcnhfZGF0YSAqKSBza2ItXFx1MDAzZWRhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYy0zMzAtXFx0c3RydWN0IGllZWU4MDIxMV9yeF9zdGF0dXMgKnJ4X3N0YXR1cyA9IElFRUU4MDIxMV9TS0JfUlhDQihza2IpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYy0zOTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYzozOTk6c3RhdGljIHZvaWQgcDU0X3J4X2ZyYW1lX3NlbnQoc3RydWN0IHA1NF9jb21tb24gKnByaXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYy00MDAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYy00ODctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYzo0ODg6c3RhdGljIHZvaWQgcDU0X3J4X2VlcHJvbV9yZWFkYmFjayhzdHJ1Y3QgcDU0X2NvbW1vbiAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jLTQ4OS1cXHRcXHRcXHRcXHQgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYy01MjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYzo1MjU6c3RhdGljIHZvaWQgcDU0X3J4X3N0YXRzKHN0cnVjdCBwNTRfY29tbW9uICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmMtNTI2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmMtNjE4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmM6NjE5OnN0YXRpYyB2b2lkIHA1NF9yeF90cmFwKHN0cnVjdCBwNTRfY29tbW9uICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmMtNjIwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmMtNjU0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmM6NjU1OnN0YXRpYyBpbnQgcDU0X3J4X2NvbnRyb2woc3RydWN0IHA1NF9jb21tb24gKnByaXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYy02NTYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYy02NjAtXFx0Y2FzZSBQNTRfQ09OVFJPTF9UWVBFX1RYRE9ORTpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jOjY2MTpcXHRcXHRwNTRfcnhfZnJhbWVfc2VudChwcml2LCBza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmMtNjYyLVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmMtNjYzLVxcdGNhc2UgUDU0X0NPTlRST0xfVFlQRV9UUkFQOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmM6NjY0OlxcdFxcdHA1NF9yeF90cmFwKHByaXYsIHNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYy02NjUtXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jLTY2OC1cXHRjYXNlIFA1NF9DT05UUk9MX1RZUEVfU1RBVF9SRUFEQkFDSzpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jOjY2OTpcXHRcXHRwNTRfcnhfc3RhdHMocHJpdiwgc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jLTY3MC1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jLTY3MS1cXHRjYXNlIFA1NF9DT05UUk9MX1RZUEVfRUVQUk9NX1JFQURCQUNLOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmM6NjcyOlxcdFxcdHA1NF9yeF9lZXByb21fcmVhZGJhY2socHJpdiwgc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jLTY3My1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmMtNjgzLS8qIHJldHVybnMgemVybyBpZiBza2IgY2FuIGJlIHJldXNlZCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmM6Njg0OmludCBwNTRfcngoc3RydWN0IGllZWU4MDIxMV9odyAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmMtNjg1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmMtNjg5LVxcdGlmICh0eXBlIFxcdTAwMjYgUDU0X0hEUl9GTEFHX0NPTlRST0wpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYzo2OTA6XFx0XFx0cmV0dXJuIHA1NF9yeF9jb250cm9sKHByaXYsIHNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYy02OTEtXFx0ZWxzZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmM6NjkyOlxcdFxcdHJldHVybiBwNTRfcnhfZGF0YShwcml2LCBza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmMtNjkzLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jOjY5NDpFWFBPUlRfU1lNQk9MX0dQTChwNTRfcngpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmMtNjk1LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwNzoyMTozNi43MjQxMDgwNTdaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTc4MjcwNzAyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgYHA1NF9maW5kX2llYCBWdWxuZXJhYmlsaXR5KipcblxuT2theSwgc28gSSd2ZSBnb3QgYSBtb2RpZmljYXRpb24gdG8gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBwNTRfZmluZF9pZWAgZnVuY3Rpb24uIFRoaXMgaXMgY3JpdGljYWwgYmVjYXVzZSBpdCdzIHJlc3BvbnNpYmxlIGZvciBwYXJzaW5nIEluZm9ybWF0aW9uIEVsZW1lbnRzIChJRXMpIHdpdGhpbiBJRUVFIDgwMi4xMSBtYW5hZ2VtZW50IGZyYW1lcyBsaWtlIGJlYWNvbnMuIFRoZSBwYXRjaCdzIGNvcmUgY2hhbmdlIGlzIHRoZSByZW1vdmFsIG9mIHRoZSBpbml0aWFsIGxlbmd0aCBjaGVjazogIHRoZSBgaWYgKHNrYi1cdTAwM2VsZW4gXHUwMDNjPSBzaXplb2YobWdtdCkpYCBzdGF0ZW1lbnQuXG5cblRoYXQncyBpbW1lZGlhdGVseSBjb25jZXJuaW5nLiAgUmVtb3ZpbmcgdGhhdCBjaGVjayBkaXJlY3RseSBhbHRlcnMgdGhlIGJvdW5kYXJ5IHZhbGlkYXRpb24gKmJlZm9yZSogdGhlIGNydWNpYWwgY2FsY3VsYXRpb24gb2YgYHBvcyA9ICh1OCAqKW1nbXQtXHUwMDNldS5iZWFjb24udmFyaWFibGU7YC4gRXNzZW50aWFsbHksIGl0J3MgYSBjbGFzc2ljIGJ1ZmZlciBvdmVyZmxvdyBzZXR1cDsgd2UncmUgbm93IG1vcmUgdnVsbmVyYWJsZSB0byBzdXBwbHlpbmcgY3JhZnRlZCBmcmFtZXMgdGhhdCB0aGUgY29kZSAqdGhpbmtzKiBpcyB2YWxpZC5cblxuVGhlIGdvb2QgbmV3cyAoZm9yIG1lLCBhcyBhIGZ1enppbmcgZXhwZXJ0KSBpcyB0aGF0IHRoaXMgY29kZSBwYXRoIGlzIGRlZmluaXRlbHkgcmVhY2hhYmxlLiAgV2UncmUgdGFsa2luZyBhYm91dCB2aXJ0dWFsIG9yIGVtdWxhdGVkIFVTQiBkZXZpY2VzIHVzaW5nIGBwNTR1c2JgLCBhbmQgdGhlIE1BQzgwMjExIEFQL2JlYWNvbiBmcmFtZSBoYW5kbGluZy4gU28sIGl0J3MgZXhwbG9pdGFibGUsIHdoaWNoIG1lYW5zIGl0J3Mgd29ydGggb3VyIHRpbWUuIFdvcnRoRnV6emluZyA9IFRydWUuXG5cbk5vdywgbGV0J3MgbmFpbCBkb3duIHRoZSByZXF1aXJlZCBjb25maWd1cmF0aW9ucy4gSSdtIGdvaW5nIHRvIG5lZWQ6XG5cbiogICBgUDU0X0NPTU1PTmAgLSB0aGF0J3MgYSBnaXZlbiBmb3IgdGhlIGRyaXZlci5cbiogICBgUDU0X1VTQmAgLSBzaW5jZSB0aGlzIGZvY3VzZXMgb24gVVNCLWJhc2VkIGRldmljZXMuXG4qICAgYE1BQzgwMjExYCAtIHRvIGhhbmRsZSB0aGUgODAyLjExIHByb3RvY29sLlxuKiAgIGBVU0JgIC0gdGhlIGJhc2UgVVNCIGNvbmZpZ3VyYXRpb24sIG9mIGNvdXJzZS5cbiogICBgV0xBTl9WRU5ET1JfSU5URVJTSUxgIC0gdGhhdCdzIHRoZSBrZXkgb25lLCB0aGUgb25lIHRoYXQgdGllcyBpdCBhbGwgdG9nZXRoZXIuXG5cbkxldCBtZSBqdXN0IGRvdWJsZS1jaGVjayB0aGF0IGBXTEFOX1ZFTkRPUl9JTlRFUlNJTGAgaXMgcHJvcGVybHkgaW5jbHVkZWQgaW4gS2NvbmZpZzogTG9va3MgbGlrZSBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvS2NvbmZpZ2AgaXQgaXMgY29ycmVjdGx5IHNvdXJjZWQ6IGBpZiBXTEFOX1ZFTkRPUl9JTlRFUlNJTCBzb3VyY2UgXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvS2NvbmZpZ1wiIGVuZGlmYC4gVGhlbiwgSSdsbCBxdWlja2x5IGxvb2sgdXAgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWdgIHRvIGNvbmZpcm0gdGhhdCB0aGUgaW50ZXJzaWwgc291cmNlIGlzIGNvcnJlY3QuIE9rYXksIHRpbWUgdG8gZ2VuZXJhdGUgc29tZSB0ZXN0IGNhc2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTM1NCwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwNzoyMTo0Mi41MDY4MTcxMjlaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MDExNTYwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpbnRlcnNpbC9LY29uZmlnXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWc9MjU9c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWc6MjY6c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWctMjctc291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL0tjb25maWdcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA3OjIxOjQyLjY3Njk0MjUzN1oiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxNjI3OTEwMzU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipBbmFseXppbmcgdGhlIEtjb25maWcgZm9yIFdpcmVsZXNzIE5ldHdvcmtpbmcgRHJpdmVycyoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW4uIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIHRoZSB3aXJlbGVzcyBuZXR3b3JraW5nIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gTXkgaW5zdGluY3QgdGVsbHMgbWUgdG8gc3RhcnQgd2l0aCB0aGUgbWFpbiBgS2NvbmZpZ2AgZmlsZSBmb3Igd2lyZWxlc3MgZHJpdmVycy4gSSdtIGZvY3VzaW5nIG9uIHRoYXQgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWdgIGZpbGUsIHNwZWNpZmljYWxseSBhcm91bmQgbGluZSAyNi4gSSdtIGV4cGVjdGluZyB0aGF0IGFyZWEgdG8gY29udGFpbiBhIGhpZ2gtbGV2ZWwgb3ZlcnZpZXcgb3IgcGVyaGFwcyB0aGUgZGVmYXVsdCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEhvcGVmdWxseSwgSSdsbCBmaW5kIHRoZSBjb3JlIHN0cnVjdHVyZSBvZiBob3cgdGhlc2UgZHJpdmVycyBhcmUgb3JnYW5pemVkIGFuZCBlbmFibGVkIHRoZXJlLiBUaGlzIHNob3VsZCBwcm92aWRlIGEgc29saWQgYmFzZSBmb3IgdW5kZXJzdGFuZGluZyBob3cgYWxsIG9mIHRoZXNlIHNwZWNpZmljIHdpcmVsZXNzIGltcGxlbWVudGF0aW9ucyBmaXQgdG9nZXRoZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2MzMzLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDc6MjE6NDQuMzA0ODU2NjA2WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY2MTUxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMzVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgV2lyZWxlc3MgTEFOIGRldmljZSBjb25maWd1cmF0aW9uXFxuICAgNDpcXHQjXFxuICAgNTpcXHRcXG4gICA2OlxcdG1lbnVjb25maWcgV0xBTlxcbiAgIDc6XFx0XFx0Ym9vbCBcXFwiV2lyZWxlc3MgTEFOXFxcIlxcbiAgIDg6XFx0XFx0ZGVwZW5kcyBvbiAhUzM5MFxcbiAgIDk6XFx0XFx0ZGVwZW5kcyBvbiBORVRcXG4gIDEwOlxcdFxcdHNlbGVjdCBXSVJFTEVTU1xcbiAgMTE6XFx0XFx0ZGVmYXVsdCB5XFxuICAxMjpcXHRcXHRoZWxwXFxuICAxMzpcXHRcXHQgIFRoaXMgc2VjdGlvbiBjb250YWlucyBhbGwgdGhlIHByZSA4MDIuMTEgYW5kIDgwMi4xMSB3aXJlbGVzc1xcbiAgMTQ6XFx0XFx0ICBkZXZpY2UgZHJpdmVycy4gRm9yIGEgY29tcGxldGUgbGlzdCBvZiBkcml2ZXJzIGFuZCBkb2N1bWVudGF0aW9uXFxuICAxNTpcXHRcXHQgIG9uIHRoZW0gcmVmZXIgdG8gdGhlIHdpcmVsZXNzIHdpa2k6XFxuICAxNjpcXHRcXG4gIDE3OlxcdFxcdCAgaHR0cHM6Ly93aXJlbGVzcy53aWtpLmtlcm5lbC5vcmcvZW4vdXNlcnMvRHJpdmVyc1xcbiAgMTg6XFx0XFxuICAxOTpcXHRpZiBXTEFOXFxuICAyMDpcXHRcXG4gIDIxOlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYWRtdGVrL0tjb25maWdcXFwiXFxuICAyMjpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9LY29uZmlnXFxcIlxcbiAgMjM6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdG1lbC9LY29uZmlnXFxcIlxcbiAgMjQ6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9LY29uZmlnXFxcIlxcbiAgMjU6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9LY29uZmlnXFxcIlxcbiAgMjY6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9LY29uZmlnXFxcIlxcbiAgMjc6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL0tjb25maWdcXFwiXFxuICAyODpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL0tjb25maWdcXFwiXFxuICAyOTpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC9LY29uZmlnXFxcIlxcbiAgMzA6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL0tjb25maWdcXFwiXFxuICAzMTpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9LY29uZmlnXFxcIlxcbiAgMzI6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9wdXJlbGlmaS9LY29uZmlnXFxcIlxcbiAgMzM6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvS2NvbmZpZ1xcXCJcXG4gIDM0OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9LY29uZmlnXFxcIlxcbiAgMzU6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvS2NvbmZpZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDc6MjE6NDQuMzA0OTI0MjE2WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjU4MDc5NTUwMDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIFByaXNtNTQgRHJpdmVyIFBhdGNoKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSd2ZSBpZGVudGlmaWVkIHRoZSBrZXkgY29uZmlndXJhdGlvbnM6IGBQNTRfQ09NTU9OYCwgYFA1NF9VU0JgLCBgUDU0X1BDSWAsIGBQNTRfU1BJYCwgYE1BQzgwMjExYCwgYFdMQU5fVkVORE9SX0lOVEVSU0lMYCwgYFdMQU5gLCBhbmQgYFVTQmAuIFRoZXNlIGFyZSB0aGUgZm91bmRhdGlvbmFsIGJ1aWxkaW5nIGJsb2NrcyBmb3IgdW5kZXJzdGFuZGluZyB0aGUgZW52aXJvbm1lbnQgaW4gd2hpY2ggdGhpcyBjaGFuZ2Ugb3BlcmF0ZXMuXG5cbk15IHByaW1hcnkgZm9jdXMgaXMgdGhlIG1vZGlmaWVkIGZ1bmN0aW9uLCBgcDU0X2ZpbmRfaWVgLiBJdCdzIG5vbi1zdGF0aWMsIHdoaWNoIG1lYW5zIGl0J3MgYWNjZXNzaWJsZSBmcm9tIG90aGVyIHBhcnRzIG9mIHRoZSBkcml2ZXIuIEkndmUgcGlucG9pbnRlZCBpdHMgZGlyZWN0IGNhbGxlcnMgYW5kIHJlbGF0ZWQgZW50cnkgcG9pbnRzOiBgcDU0X2JlYWNvbl9mb3JtYXRfaWVfdGltYCwgYHA1NF9wc3BvbGxfd29ya2Fyb3VuZGAsIGFuZCBgcDU0X2JlYWNvbl91cGRhdGVgLiBEaWdnaW5nIGRlZXBlciwgSSBjb25maXJtZWQgd2hpY2ggb2YgdGhvc2UgYXJlIHN0YXRpYyBhbmQgd2hlcmUgdGhleSdyZSBsb2NhdGVkLiBgcDU0X2JlYWNvbl9mb3JtYXRfaWVfdGltYCwgYHA1NF9iZWFjb25fdXBkYXRlYCwgYW5kIGBwNTRfYnNzX2luZm9fY2hhbmdlZGAgYXJlIGFsbCBzdGF0aWMgYW5kIGluIGBtYWluLmNgLCB3aGlsZSBgcDU0X3BzcG9sbF93b3JrYXJvdW5kYCBpcyBzdGF0aWMgYW5kIGluIGB0eHJ4LmNgLiBJJ3ZlIGFsc28gbm90ZWQgdGhhdCBgcDU0X3J4X2RhdGFgIGlzIHN0YXRpYyBpbiBgdHhyeC5jYCwgYW5kIHRoYXQgYHA1NF9yeGAgaXMgYW4gZXhwb3J0ZWQgc3ltYm9sIGluIGB0eHJ4LmNgLlxuXG5JIG5lZWQgdG8gY29uZmlybSB0aGF0IG15IHByaW1hcnkgZm9jdXMgcmVtYWlucyBgcDU0X2ZpbmRfaWVgLiBBbHNvLCBJJ3ZlIGNvbmZpcm1lZCB0aGF0IGBwNTRfYmVhY29uX2Zvcm1hdF9pZV90aW1gIGFuZCBgcDU0X3BzcG9sbF93b3JrYXJvdW5kYCAqZGlyZWN0bHkqIGNhbGwgYHA1NF9maW5kX2llYC5cblxuTm93LCB0aGUgY3J1Y2lhbCBwYXJ0OiBhc3Nlc3NpbmcgdGhlIGZ1enphYmlsaXR5LiBUaGUgcGF0Y2ggYWx0ZXJzIGBwNTRfZmluZF9pZWAgYnkgcmVtb3ZpbmcgYW4gaW5pdGlhbCBmcmFtZSBsZW5ndGggY2hlY2sgKmJlZm9yZSogcGFyc2luZyBJRXMuIFRoaXMgaXMgYSByZWQgZmxhZy4gVGhlIHJlYXNvbmluZyBpcyBjbGVhcjogV2l0aG91dCB0aGF0IGNoZWNrLCBtYWxmb3JtZWQgb3Igc2hvcnQgcGFja2V0cyBjb3VsZCBsZWFkIHRvIG91dC1vZi1ib3VuZHMgcmVhZHMgb3IgaW52YWxpZCBwb2ludGVyIGFyaXRobWV0aWMuIFdlJ3JlIHRhbGtpbmcgYWJvdXQgYSB3aXJlbGVzcyBkcml2ZXIsIGFuZCBzcGVjaWZpY2FsbHkgUHJpc201NCwgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSB2aXJ0dWFsaXplZC9lbXVsYXRlZCBVU0IgZGV2aWNlcyBhbmQgTUFDODAyMTEgYmVhY29uL2RhdGEgZnJhbWUgcHJvY2Vzc2luZy4gVGhpcyBpcyBwcmltZSBmdXp6aW5nIHRlcnJpdG9yeS5cblxuVGhlcmVmb3JlLCB0aGlzIGNoYW5nZSBpcyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcgYW5kIHdpbGwgZ2l2ZSB0aGUgZm9sbG93aW5nIGFzIHRoZSBvdXRwdXQgZnJvbSBzZXQtcmVzdWx0cy5cbi0gV29ydGhGdXp6aW5nOiB0cnVlXG4tIFJlYXNvbmluZzogQ29uY2lzZSBleHBsYW5hdGlvbiBvZiB3aHkgaXQncyB3b3J0aCBmdXp6aW5nOiBUaGUgcGF0Y2ggbW9kaWZpZXMgYHA1NF9maW5kX2llKClgIGluIHRoZSBQcmlzbTU0IHdpcmVsZXNzIGRyaXZlciBieSByZW1vdmluZyBhbiBpbml0aWFsIGZyYW1lIGxlbmd0aCBjaGVjayBwcmlvciB0byBwYXJzaW5nIGluZm9ybWF0aW9uIGVsZW1lbnRzIChJRXMpLiBUaGUgZHJpdmVyIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSB2aXJ0dWFsaXplZC9lbXVsYXRlZCBVU0IgZGV2aWNlcyAoYHA1NHVzYmApIGFuZCBtYWM4MDIxMSBiZWFjb24vZGF0YSBmcmFtZSBwcm9jZXNzaW5nLCB3YXJyYW50aW5nIGZ1enppbmcgdG8gZW5zdXJlIG1hbGZvcm1lZCBvciBzaG9ydCBwYWNrZXRzIGNhbm5vdCB0cmlnZ2VyIG91dC1vZi1ib3VuZHMgcmVhZHMgb3IgaW52YWxpZCBwb2ludGVyIGFyaXRobWV0aWMuXG4tIEZvY3VzU3ltYm9sczogYFtcInA1NF9maW5kX2llXCIsIFwicDU0X2JlYWNvbl9mb3JtYXRfaWVfdGltXCIsIFwicDU0X3BzcG9sbF93b3JrYXJvdW5kXCJdYFxuLSBFbmFibGVDb25maWdzOiBgW1wiUDU0X0NPTU1PTlwiLCBcIlA1NF9VU0JcIiwgXCJNQUM4MDIxMVwiLCBcIldMQU5fVkVORE9SX0lOVEVSU0lMXCJdYFxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzA2MSwiT3V0cHV0VG9rZW5zIjoxNzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NzksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwNzoyMTo1MC4xMTI4ODE0NDRaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTU2NTA5MjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlA1NF9DT01NT05cIixcbiAgICBcIlA1NF9VU0JcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJXTEFOX1ZFTkRPUl9JTlRFUlNJTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInA1NF9maW5kX2llXCIsXG4gICAgXCJwNTRfYmVhY29uX2Zvcm1hdF9pZV90aW1cIixcbiAgICBcInA1NF9wc3BvbGxfd29ya2Fyb3VuZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBmcmFtZSB2YWxpZGF0aW9uIGxvZ2ljIGluIHA1NF9maW5kX2llKCkgYnkgcmVtb3ZpbmcgYSBsZW5ndGggY2hlY2sgcHJpb3IgdG8gcGFyc2luZyBpbmZvcm1hdGlvbiBlbGVtZW50cy4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgZW11bGF0ZWQgVVNCIGRldmljZXMgKHA1NHVzYikgYW5kIG1hYzgwMjExIGJlYWNvbi9mcmFtZSBoYW5kbGluZy4gRnV6emluZyBpcyB3YXJyYW50ZWQgdG8gY2hlY2sgZm9yIG91dC1vZi1ib3VuZHMgcmVhZHMgb3IgcmVncmVzc2lvbnMgd2l0aCB0cnVuY2F0ZWQgcGFja2V0cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJQNTRfQ09NTU9OXCIsXG4gICAgXCJQNTRfVVNCXCIsXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiV0xBTl9WRU5ET1JfSU5URVJTSUxcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwNTRfZmluZF9pZVwiLFxuICAgIFwicDU0X2JlYWNvbl9mb3JtYXRfaWVfdGltXCIsXG4gICAgXCJwNTRfcHNwb2xsX3dvcmthcm91bmRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgZnJhbWUgdmFsaWRhdGlvbiBsb2dpYyBpbiBwNTRfZmluZF9pZSgpIGJ5IHJlbW92aW5nIGEgbGVuZ3RoIGNoZWNrIHByaW9yIHRvIHBhcnNpbmcgaW5mb3JtYXRpb24gZWxlbWVudHMuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgdmlhIGVtdWxhdGVkIFVTQiBkZXZpY2VzIChwNTR1c2IpIGFuZCBtYWM4MDIxMSBiZWFjb24vZnJhbWUgaGFuZGxpbmcuIEZ1enppbmcgaXMgd2FycmFudGVkIHRvIGNoZWNrIGZvciBvdXQtb2YtYm91bmRzIHJlYWRzIG9yIHJlZ3Jlc3Npb25zIHdpdGggdHJ1bmNhdGVkIHBhY2tldHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA3OjIxOjUwLjIyODUzOTMxOFoiLCJTZXEiOjMxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzgzOTczNTc2ODYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwNzoyMTo1MC4yMjkwOTc5NTlaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjozODM5Njc5NTM0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVtb3ZlcyBhbiBlcnJvbmVvdXMgY2hlY2sgYGlmIChza2ItXFx1MDAzZWxlbiBcXHUwMDNjPSBzaXplb2YobWdtdCkpYCBpbiBgcDU0X2ZpbmRfaWUoKWAgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmNgLlxcblxcbktBU0FOIHZzLiBLTVNBTiBhbmFseXNpczpcXG4xLiBLTVNBTiBhcHBsaWNhYmlsaXR5OiBLTVNBTiBkZXRlY3RzIHVzZSBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSAoc3RhY2svaGVhcC9wYWdlKSBhbmQga2VybmVsLXRvLXVzZXIgaW5mby1sZWFrcy4gVGhpcyBwYXRjaCBkb2VzIG5vdCBhbGxvY2F0ZSBuZXcgdW5pbml0aWFsaXplZCBidWZmZXJzLCBkb2VzIG5vdCBpbnRyb2R1Y2UgdW5pbml0aWFsaXplZCBzdGFjayBvciBoZWFwIHZhcmlhYmxlcywgZG9lcyBub3QgY29weSBrZXJuZWwgZGF0YSB0byB1c2VyIHNwYWNlLCBhbmQgZG9lcyBub3QgYWx0ZXIgbG9naWMgdG8gYnJhbmNoIG9uIHVuaW5pdGlhbGl6ZWQgdmFsdWVzLiBUaGUgc2tiIGJ1ZmZlciBjb250YWlucyByZWNlaXZlZC9jb25zdHJ1Y3RlZCBmcmFtZSBkYXRhLlxcbjIuIEtBU0FOIGFwcGxpY2FiaWxpdHk6IEFueSBwb3RlbnRpYWwgbWVtb3J5IHNhZmV0eSBpc3N1ZSBjYXVzZWQgYnkgcmVtb3ZpbmcgdGhlIGNoZWNrIChlLmcuLCBpZiBhIG1hbGZvcm1lZCBza2Igd2l0aCBhIGxlbmd0aCBzbWFsbGVyIHRoYW4gdGhlIGJlYWNvbiBoZWFkZXIgd2VyZSBwYXJzZWQgYW5kIGxlZCB0byBhbiBvdXQtb2YtYm91bmRzIHJlYWQpIHdvdWxkIHJlcHJlc2VudCBhbiBvdXQtb2YtYm91bmRzIGJ1ZmZlciBhY2Nlc3MsIHdoaWNoIGlzIHRyYWNrZWQgYW5kIGRldGVjdGVkIGJ5IEtBU0FOLlxcblxcblRoZXJlZm9yZSwgdGhpcyBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcywgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDI5M2M4ZTlkYTdiNDY4NWM0ZWQ3Mzk3ZDFiMGVhMDExODI0ODczMjZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIFNlcCA3IDA3OjIwOjM3IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmNcbmluZGV4IDU3YTYyMTA4Y2JjMzUuLjhmOTIxZGM0ZWNkMzYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jXG5AQCAtNzYsOSArNzYsNiBAQCB1OCAqcDU0X2ZpbmRfaWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTggaWUpXG4gXHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQgPSAodm9pZCAqKXNrYi1cdTAwM2VkYXRhO1xuIFx0dTggKnBvcywgKmVuZDtcbiBcbi1cdGlmIChza2ItXHUwMDNlbGVuIFx1MDAzYz0gc2l6ZW9mKG1nbXQpKVxuLVx0XHRyZXR1cm4gTlVMTDtcbi1cbiBcdHBvcyA9ICh1OCAqKW1nbXQtXHUwMDNldS5iZWFjb24udmFyaWFibGU7XG4gXHRlbmQgPSBza2ItXHUwMDNlZGF0YSArIHNrYi1cdTAwM2VsZW47XG4gXHR3aGlsZSAocG9zIFx1MDAzYyBlbmQpIHtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA3OjIxOjUwLjIyOTEwMDA4OVoiLCJTZXEiOjMzLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxNDI3NDg2ODkxMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBMaW51eCBLZXJuZWwgUGF0Y2ggZm9yIEtNU0FOIFRlc3RpbmcqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBzYWZldHkgY2hlY2s6IHRoaXMgaXMgYSBRQS90cmlhZ2UgdGFzaywgZm9jdXNlZCBvbiBhIHBhdGNoIGZvciBhIExpbnV4IGtlcm5lbCBkcml2ZXIuIE5vIGV4cGxvaXQgZ2VuZXJhdGlvbiBvciBtYWx3YXJlIGNvbmNlcm5zLCBzbyB3ZSdyZSBnb29kIHRvIHByb2NlZWQuIFRoZSBzcGVjaWZpYyByZXF1ZXN0IGlzIHRvIGRldGVybWluZSBpZiB0aGUgcGF0Y2ggdG8gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmNgIG5lY2Vzc2l0YXRlcyBLTVNBTiB0ZXN0aW5nLlxuXG5Ob3csIGxldCdzIGV4YW1pbmUgdGhlIHBhdGNoIGl0c2VsZi4gSXQgbG9va3MgbGlrZSBpdCdzIHJlbW92aW5nIGEgc2l6ZSBjaGVjayB3aXRoaW4gdGhlIGBwNTRfZmluZF9pZWAgZnVuY3Rpb24uIFNwZWNpZmljYWxseSwgdGhlIGRpZmYgcmVtb3ZlcyBhIGNoZWNrIGBpZiAoc2tiLVx1MDAzZWxlbiBcdTAwM2M9IHNpemVvZihtZ210KSkgcmV0dXJuIE5VTEw7YC4gVGhpcyBmdW5jdGlvbiBpcyBsaWtlbHkgdXNlZCB0byBwYXJzZSBJbmZvcm1hdGlvbiBFbGVtZW50cyBmcm9tIGEgd2lyZWxlc3MgZnJhbWUsIHNwZWNpZmljYWxseSB3aXRoaW4gYmVhY29uIG9yIHByb2JlIHJlc3BvbnNlIGZyYW1lcy4gUmVtb3ZpbmcgdGhpcyBjaGVjayBjb3VsZCBpbnRyb2R1Y2UgdnVsbmVyYWJpbGl0aWVzIGlmIGBza2ItXHUwMDNlbGVuYCBpcyBzbWFsbGVyIHRoYW4gZXhwZWN0ZWQsIHBvdGVudGlhbGx5IGxlYWRpbmcgdG8gb3V0LW9mLWJvdW5kcyByZWFkcy4gVGhlIHJlbW92ZWQgY2hlY2sgcHJldmVudGVkIGFjY2VzcyB0byB0aGUgYHZhcmlhYmxlYCBmaWVsZCBvZiB0aGUgYGllZWU4MDIxMV9tZ210YCBzdHJ1Y3Qgd2hlbiB0aGUgZnJhbWUgbGVuZ3RoIHdhcyB0b28gc21hbGwuXG5cbkdpdmVuIHRoaXMgY29udGV4dCwgcmVtb3ZpbmcgdGhlIHNpemUgY2hlY2sgaW4gYHA1NF9maW5kX2llYCBpcyBhIHBvdGVudGlhbCByZWQgZmxhZy4gTXkgaW50dWl0aW9uIGlzIHRoYXQgdGhpcyAqbWlnaHQqIGJlIHJpc2t5LCBidXQgSSBuZWVkIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgdG8gbWFrZSBhbiBpbmZvcm1lZCBkZWNpc2lvbi4gSSdtIGdvaW5nIHRvIHVzZSBgcmVhZC1maWxlYCB0byBnZXQgdGhlIGNvbnRleHQgb2YgdGhlIGNvZGUgYXJvdW5kIGxpbmUgNzYgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmNgLiBUaGlzIHdpbGwgZ2l2ZSBtZSB0aGUgZnVsbCBwaWN0dXJlIG9mIGhvdyBgcDU0X2ZpbmRfaWVgIGlzIHVzZWQgYW5kIHdoZXJlIGl0J3MgY2FsbGVkLiBCYXNlZCBvbiB0aGlzIGluZm9ybWF0aW9uLCBJIHdpbGwgZGVjaWRlIHdoZXRoZXIgYE5lZWRzS01TQU49dHJ1ZWAgb3IgYGZhbHNlYC4gTXkgaW5pdGlhbCBsZWFuaW5nIGlzIHRvd2FyZHMgYE5lZWRzS01TQU49dHJ1ZWAgYmVjYXVzZSBvZiB0aGUgcG90ZW50aWFsIGZvciBvdXQtb2YtYm91bmRzIHJlYWRzLCBidXQgSSBuZWVkIG1vcmUgaW5mb3JtYXRpb24gdG8gYmUgc3VyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjEyMywiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4OCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA3OjIyOjA0LjUwMzk3MjA2MloiLCJTZXEiOjM0LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDIwMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uY1wiLFxuICBcIkZpcnN0TGluZVwiOiA2NSxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA2NTpcXHRcXG4gIDY2OlxcdHN0YXRpYyBpbnQgcDU0X3NldF90aW0oc3RydWN0IGllZWU4MDIxMV9odyAqZGV2LCBzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLFxcbiAgNjc6XFx0XFx0XFx0XFx0Ym9vbCBzZXQpXFxuICA2ODpcXHR7XFxuICA2OTpcXHRcXHRzdHJ1Y3QgcDU0X2NvbW1vbiAqcHJpdiA9IGRldi1cXHUwMDNlcHJpdjtcXG4gIDcwOlxcdFxcbiAgNzE6XFx0XFx0cmV0dXJuIHA1NF91cGRhdGVfYmVhY29uX3RpbShwcml2LCBzdGEtXFx1MDAzZWFpZCwgc2V0KTtcXG4gIDcyOlxcdH1cXG4gIDczOlxcdFxcbiAgNzQ6XFx0dTggKnA1NF9maW5kX2llKHN0cnVjdCBza19idWZmICpza2IsIHU4IGllKVxcbiAgNzU6XFx0e1xcbiAgNzY6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210ID0gKHZvaWQgKilza2ItXFx1MDAzZWRhdGE7XFxuICA3NzpcXHRcXHR1OCAqcG9zLCAqZW5kO1xcbiAgNzg6XFx0XFxuICA3OTpcXHRcXHRwb3MgPSAodTggKiltZ210LVxcdTAwM2V1LmJlYWNvbi52YXJpYWJsZTtcXG4gIDgwOlxcdFxcdGVuZCA9IHNrYi1cXHUwMDNlZGF0YSArIHNrYi1cXHUwMDNlbGVuO1xcbiAgODE6XFx0XFx0d2hpbGUgKHBvcyBcXHUwMDNjIGVuZCkge1xcbiAgODI6XFx0XFx0XFx0aWYgKHBvcyArIDIgKyBwb3NbMV0gXFx1MDAzZSBlbmQpXFxuICA4MzpcXHRcXHRcXHRcXHRyZXR1cm4gTlVMTDtcXG4gIDg0OlxcdFxcbiAgODU6XFx0XFx0XFx0aWYgKHBvc1swXSA9PSBpZSlcXG4gIDg2OlxcdFxcdFxcdFxcdHJldHVybiBwb3M7XFxuICA4NzpcXHRcXG4gIDg4OlxcdFxcdFxcdHBvcyArPSAyICsgcG9zWzFdO1xcbiAgODk6XFx0XFx0fVxcbiAgOTA6XFx0XFx0cmV0dXJuIE5VTEw7XFxuICA5MTpcXHR9XFxuICA5MjpcXHRcXG4gIDkzOlxcdHN0YXRpYyBpbnQgcDU0X2JlYWNvbl9mb3JtYXRfaWVfdGltKHN0cnVjdCBza19idWZmICpza2IpXFxuICA5NDpcXHR7XFxuICA5NTpcXHRcXHQvKlxcbiAgOTY6XFx0XFx0ICogdGhlIGdvb2QgZXhjdXNlIGZvciB0aGlzIG1lc3MgaXMgLi4uIHRoZSBmaXJtd2FyZS5cXG4gIDk3OlxcdFxcdCAqIFRoZSBkdW1teSBUSU0gTVVTVCBiZSBhdCB0aGUgZW5kIG9mIHRoZSBiZWFjb24gZnJhbWUsXFxuICA5ODpcXHRcXHQgKiBiZWNhdXNlIGl0J2xsIGJlIG92ZXJ3cml0dGVuIVxcbiAgOTk6XFx0XFx0ICovXFxuIDEwMDpcXHRcXHR1OCAqdGltO1xcbiAxMDE6XFx0XFx0dTggZHRpbV9sZW47XFxuIDEwMjpcXHRcXHR1OCBkdGltX3BlcmlvZDtcXG4gMTAzOlxcdFxcdHU4ICpuZXh0O1xcbiAxMDQ6XFx0XFxuIDEwNTpcXHRcXHR0aW0gPSBwNTRfZmluZF9pZShza2IsIFdMQU5fRUlEX1RJTSk7XFxuIDEwNjpcXHRcXHRpZiAoIXRpbSlcXG4gMTA3OlxcdFxcdFxcdHJldHVybiAwO1xcbiAxMDg6XFx0XFxuIDEwOTpcXHRcXHRkdGltX2xlbiA9IHRpbVsxXTtcXG4gMTEwOlxcdFxcdGR0aW1fcGVyaW9kID0gdGltWzNdO1xcbiAxMTE6XFx0XFx0bmV4dCA9IHRpbSArIDIgKyBkdGltX2xlbjtcXG4gMTEyOlxcdFxcbiAxMTM6XFx0XFx0aWYgKGR0aW1fbGVuIFxcdTAwM2MgMylcXG4gMTE0OlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwNzoyMjowNC41MDQwNzU5MDJaIiwiU2VxIjozNSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzA5ODE2NTMyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBOZXR3b3JrIFBhY2tldCBCdWcqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFRoYXQgYGlmYCBzdGF0ZW1lbnTigKYgd2hhdCB3YXMgdGhlIGludGVudGlvbiB0aGVyZT8gQWgsIHJpZ2h0LCBpdCB3YXMgc3VwcG9zZWQgdG8gYmUgYSBjaGVjayBvbiB0aGUgcGFja2V0J3Mgc2l6ZSwgc3BlY2lmaWNhbGx5IGNvbXBhcmluZyBgc2tiLVx1MDAzZWxlbmAgdG8gc29tZXRoaW5nLiBCdXQgd2FpdCBhIG1pbnV0ZeKApiBgc2l6ZW9mKG1nbXQpYD8gVGhhdCdz4oCmIGEgcG9pbnRlciBzaXplISBUaGF0J3MgYSBjbGFzc2ljIGJ1Zy4gSSByZW1lbWJlciBzZWVpbmcgdGhhdCBraW5kIG9mIG1pc3Rha2UgYmVmb3JlLiBUaGUgcHJvZ3JhbW1lciAqcHJvYmFibHkqIGludGVuZGVkIHRvIHVzZSBgc2l6ZW9mKCptZ210KWAgdG8gZ2V0IHRoZSBzaXplIG9mIHRoZSBzdHJ1Y3R1cmUgdGhlIHBvaW50ZXIgcG9pbnRzIHRvLCBvciBtYXliZSBldmVuIGBvZmZzZXRvZiguLi4pYCB0byBjYWxjdWxhdGUgdGhlIG9mZnNldCB0byB0aGUgc3BlY2lmaWMgZmllbGQsIGJ1dCBpdCdzIHVzaW5nIHRoZSBzaXplIG9mIHRoZSBwb2ludGVyIGl0c2VsZiEgU28sIHJlbW92aW5nIHRoZSBlbnRpcmUgYGlmYCBzdGF0ZW1lbnQgaGFzIGltcGxpY2F0aW9ucy4gSXQgZ29lcyBzdHJhaWdodCB0byB0aGlzIGxpbmU6XG5cbmBwb3MgPSAodTggKiltZ210LVx1MDAzZXUuYmVhY29uLnZhcmlhYmxlO2BcblxuTm93IHRoYXQgdGhlIGNoZWNrIGlzIGdvbmUsIHRoZSBjcml0aWNhbCB0aGluZyBpcyB0aGF0IHRoZXJlJ3Mgbm8gc2FmZWd1YXJkIG9mIHBhY2tldCBzaXplLlxuXG5XaGF0J3MgdGhlIG9mZnNldCBvZiBgbWdtdC1cdTAwM2V1LmJlYWNvbi52YXJpYWJsZWA/IEkgbmVlZCB0byBjaGVjayB0aGUgYHN0cnVjdCBpZWVlODAyMTFfbWdtdGAgZGVmaW5pdGlvbi4gSXQncyB0aW1lIHRvIGRpZyBpbnRvIHRoZSBzdHJ1Y3R1cmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBtZWFucywgd2hhdCB0aGUgb2Zmc2V0IGlzIGFuZCB3aGV0aGVyIHJlbW92aW5nIHRoZSBjaGVjayBpcyBzYWZlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjQ4LCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDc6MjI6MDcuNjAyMjQ1NTAzWiIsIlNlcSI6MzYsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjI2MzY1NjU1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0cnVjdCBpZWVlODAyMTFfbWdtdFxcXFxiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTg0MCBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYz0xNTg5PXN0YXRpYyBpbnQgYXRoMTBrX21hY19zZXR1cF9iY25fcDJwX2llKHN0cnVjdCBhdGgxMGtfdmlmICphcnZpZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtMTU5Mi1cXHRzdHJ1Y3QgYXRoMTBrICphciA9IGFydmlmLVxcdTAwM2VhcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jOjE1OTM6XFx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtMTU5NC1cXHRjb25zdCB1OCAqcDJwX2llO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYz0xNjQ4PXN0YXRpYyBpbnQgYXRoMTBrX21hY19zZXR1cF9iY25fdG1wbChzdHJ1Y3QgYXRoMTBrX3ZpZiAqYXJ2aWYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTE2ODEtXFx0YXRoMTBrX21hY19yZW1vdmVfdmVuZG9yX2llKGJjbiwgV0xBTl9PVUlfV0ZBLCBXTEFOX09VSV9UWVBFX1dGQV9QMlAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYzoxNjgyOlxcdFxcdFxcdFxcdCAgICBvZmZzZXRvZihzdHJ1Y3QgaWVlZTgwMjExX21nbXQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy0xNjgzLVxcdFxcdFxcdFxcdFxcdCAgICAgdS5iZWFjb24udmFyaWFibGUpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM9MjA5NT1zdGF0aWMgdm9pZCBhdGgxMGtfbWFjX2hhbmRsZV9iZWFjb25faXRlcih2b2lkICpkYXRhLCB1OCAqbWFjLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy0yMDk4LVxcdHN0cnVjdCBza19idWZmICpza2IgPSBkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM6MjA5OTpcXHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQgPSAodm9pZCAqKXNrYi1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTIxMDAtXFx0c3RydWN0IGF0aDEwa192aWYgKmFydmlmID0gKHZvaWQgKil2aWYtXFx1MDAzZWRydl9wcml2O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYz0xMzczPXN0YXRpYyBib29sIGF0aDExa19tYWNfc2V0X25vbnR4X3ZpZl9wYXJhbXMoc3RydWN0IGF0aDExa192aWYgKnR4X2FydmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYy0xMzc2LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jOjEzNzc6XFx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMtMTM3OC1cXHRjb25zdCB1OCAqaWVzLCAqcHJvZmlsZSwgKm5leHRfcHJvZmlsZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMtMTM4MS1cXHRpZXMgPSBiY24tXFx1MDAzZWRhdGEgKyBpZWVlODAyMTFfZ2V0X2hkcmxlbl9mcm9tX3NrYihiY24pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmM6MTM4MjpcXHRtZ210ID0gKHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKWJjbi1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jLTEzODMtXFx0aWVzICs9IHNpemVvZihtZ210LVxcdTAwM2V1LmJlYWNvbik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jPTE0MjY9c3RhdGljIGludCBhdGgxMWtfbWFjX3NldHVwX2Jjbl9wMnBfaWUoc3RydWN0IGF0aDExa192aWYgKmFydmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYy0xNDI5LVxcdHN0cnVjdCBhdGgxMWsgKmFyID0gYXJ2aWYtXFx1MDAzZWFyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmM6MTQzMDpcXHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYy0xNDMxLVxcdGNvbnN0IHU4ICpwMnBfaWU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jPTE0ODE9c3RhdGljIGludCBhdGgxMWtfbWFjX3NldF92aWZfcGFyYW1zKHN0cnVjdCBhdGgxMWtfdmlmICphcnZpZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMtMTQ4NC1cXHRzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiID0gYXJ2aWYtXFx1MDAzZWFyLVxcdTAwM2VhYjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jOjE0ODU6XFx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMtMTQ4Ni1cXHRpbnQgcmV0ID0gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMtMTQ4OS1cXHRpZXMgPSBiY24tXFx1MDAzZWRhdGEgKyBpZWVlODAyMTFfZ2V0X2hkcmxlbl9mcm9tX3NrYihiY24pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmM6MTQ5MDpcXHRtZ210ID0gKHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKWJjbi1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jLTE0OTEtXFx0aWVzICs9IHNpemVvZihtZ210LVxcdTAwM2V1LmJlYWNvbik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jLTE1MjAtXFx0XFx0XFx0XFx0XFx0ICBXTEFOX09VSV9UWVBFX1dGQV9QMlAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYzoxNTIxOlxcdFxcdFxcdFxcdFxcdCAgb2Zmc2V0b2Yoc3RydWN0IGllZWU4MDIxMV9tZ210LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMtMTUyMi1cXHRcXHRcXHRcXHRcXHRcXHQgICB1LmJlYWNvbi52YXJpYWJsZSkpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYz0xNzQxPXN0YXRpYyB2b2lkIGF0aDExa19tYWNfaGFuZGxlX2JlYWNvbl9pdGVyKHZvaWQgKmRhdGEsIHU4ICptYWMsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jLTE3NDQtXFx0c3RydWN0IHNrX2J1ZmYgKnNrYiA9IGRhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYzoxNzQ1OlxcdHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdCA9ICh2b2lkICopc2tiLVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMtMTc0Ni1cXHRzdHJ1Y3QgYXRoMTFrX3ZpZiAqYXJ2aWYgPSBhdGgxMWtfdmlmX3RvX2FydmlmKHZpZik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jPTYyNjQ9c3RhdGljIGludCBhdGgxMWtfbWFjX21nbXRfYWN0aW9uX2ZyYW1lX2ZpbGxfZWxlbV9kYXRhKHN0cnVjdCBhdGgxMWtfdmlmICphcnZpZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMtNjI3Mi1cXHRzdHJ1Y3QgYXRoMTFrX3NrYl9jYiAqc2tiX2NiO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmM6NjI3MzpcXHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYy02Mjc0LVxcdHVuc2lnbmVkIGludCByZW1haW5pbmdfbGVuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYy02MjkyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmM6NjI5MzpcXHRtZ210ID0gKHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKWhkcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jLTYyOTQtXFx0YnVmID0gKHU4ICopXFx1MDAyNm1nbXQtXFx1MDAzZXUuYWN0aW9uO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9ody5oPTI0Mz1zdHJ1Y3QgYXRoMTJrX2h3X29wcyB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2h3LmgtMjUwLVxcdGJvb2wgKCppc19mcmFtZV9saW5rX2Fnbm9zdGljKShzdHJ1Y3QgYXRoMTJrX2xpbmtfdmlmICphcnZpZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2h3Lmg6MjUxOlxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaHcuaC0yNTItXFx0dm9pZCAoKnNldF9yeF9saW5rX2lkKShzdHJ1Y3QgYXRoMTJrX2RwX3BlZXIgKmRwX3BlZXIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jPTE1ODY9c3RhdGljIGludCBhdGgxMmtfbWFjX3NldHVwX2Jjbl9wMnBfaWUoc3RydWN0IGF0aDEya19saW5rX3ZpZiAqYXJ2aWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jLTE1ODktXFx0c3RydWN0IGF0aDEyayAqYXIgPSBhcnZpZi1cXHUwMDNlYXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYzoxNTkwOlxcdHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jLTE1OTEtXFx0Y29uc3QgdTggKnAycF9pZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmM9MTY0Mz1zdGF0aWMgdm9pZCBhdGgxMmtfbWFjX3NldF9hcnZpZl9pZXMoc3RydWN0IGF0aDEya19saW5rX3ZpZiAqYXJ2aWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jLTE2NDcte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmM6MTY0ODpcXHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQgPSAoc3RydWN0IGllZWU4MDIxMV9tZ210ICopYmNuLVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtMTY0OS1cXHRjb25zdCBzdHJ1Y3QgZWxlbWVudCAqZWxlbSwgKm5vbnR4LCAqaW5kZXgsICpuaWUsICpleHRfY2FwX2llO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYz0xODA0PXN0YXRpYyBpbnQgYXRoMTJrX21hY19zZXR1cF9iY25fdG1wbChzdHJ1Y3QgYXRoMTJrX2xpbmtfdmlmICphcnZpZilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtMTg3MS1cXHRcXHRcXHRcXHRcXHRcXHQgIFdMQU5fT1VJX1RZUEVfV0ZBX1AyUCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jOjE4NzI6XFx0XFx0XFx0XFx0XFx0XFx0ICBvZmZzZXRvZihzdHJ1Y3QgaWVlZTgwMjExX21nbXQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYy0xODczLVxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgIHUuYmVhY29uLnZhcmlhYmxlKSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jPTE5NDQ9c3RhdGljIHZvaWQgYXRoMTJrX21hY19oYW5kbGVfYmVhY29uX2l0ZXIodm9pZCAqZGF0YSwgdTggKm1hYyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtMTk0Ny1cXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiID0gZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jOjE5NDg6XFx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210ID0gKHZvaWQgKilza2ItXFx1MDAzZWRhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYy0xOTQ5LVxcdHN0cnVjdCBhdGgxMmtfdmlmICphaHZpZiA9IGF0aDEya192aWZfdG9fYWh2aWYodmlmKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmM9OTI4Mz1zdGF0aWMgaW50IGF0aDEya19tYWNfbWdtdF9hY3Rpb25fZnJhbWVfZmlsbF9lbGVtX2RhdGEoc3RydWN0IGF0aDEya19saW5rX3ZpZiAqYXJ2aWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jLTkyOTQtXFx0c3RydWN0IGF0aDEya19za2JfY2IgKnNrYl9jYjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jOjkyOTU6XFx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtOTI5Ni1cXHR1bnNpZ25lZCBpbnQgcmVtYWluaW5nX2xlbjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtOTMxNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jOjkzMTU6XFx0bWdtdCA9IChzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKiloZHI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYy05MzE2LVxcdGJ1ZiA9ICh1OCAqKVxcdTAwMjZtZ210LVxcdTAwM2V1LmFjdGlvbjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuYz02Nj1hdGgxMmtfd2lmaTdfaXNfZnJhbWVfbGlua19hZ25vc3RpY19xY245Mjc0KHN0cnVjdCBhdGgxMmtfbGlua192aWYgKmFydmlmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuYzo2NzpcXHRcXHRcXHRcXHRcXHQgICAgc3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuYy02OC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmM9OTE9c3RhdGljIGJvb2wgYXRoMTJrX3dpZmk3X2RwX3NybmdfaXNfY29tcF9yaW5nX3djbjc4NTAoaW50IHJpbmdfbnVtKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jLTk4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuYzo5OTpzdGF0aWMgYm9vbCBhdGgxMmtfaXNfYWRkYmFfcmVzcF9hY3Rpb25fY29kZShzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jLTEwMC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmM9MTE0PWF0aDEya193aWZpN19pc19mcmFtZV9saW5rX2Fnbm9zdGljX3djbjc4NTAoc3RydWN0IGF0aDEya19saW5rX3ZpZiAqYXJ2aWYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jOjExNTpcXHRcXHRcXHRcXHRcXHQgICAgc3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuYy0xMTYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYz03ODA9aW50IGF0aDEya193bWlfbWdtdF9zZW5kKHN0cnVjdCBhdGgxMmtfbGlua192aWYgKmFydmlmLCB1MzIgYnVmX2lkLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYy03ODktXFx0aW50IGNtZF9sZW4gPSBzaXplb2Yoc3RydWN0IGF0aDEya193bWlfbWdtdF9zZW5kX3R4X3BhcmFtcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYzo3OTA6XFx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210ID0gKHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKWhkcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTc5MS1cXHRzdHJ1Y3QgYXRoMTJrX3dtaV9tbG9fbWdtdF9zZW5kX3BhcmFtcyAqbWxfcGFyYW1zO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDVrL2Jhc2UuYz0xMjg1PWF0aDVrX2NoZWNrX2lic3NfdHNmKHN0cnVjdCBhdGg1a19odyAqYWgsIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNWsvYmFzZS5jLTEyODktXFx0dTMyIGh3X3R1O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9iYXNlLmM6MTI5MDpcXHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQgPSAoc3RydWN0IGllZWU4MDIxMV9tZ210ICopc2tiLVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9iYXNlLmMtMTI5MS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYz0yNzcyPXN0YXRpYyBpbnQgYXRoNmtsX3N0YXJ0X2FwKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMjc3Ni1cXHRzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmID0gbmV0ZGV2X3ByaXYoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6Mjc3NzpcXHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTI3NzgtXFx0Ym9vbCBoaWRkZW4gPSBmYWxzZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yODEyLVxcdFxcdHJldHVybiAtRUlOVkFMO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoyODEzOlxcdG1nbXQgPSAoc3RydWN0IGllZWU4MDIxMV9tZ210ICopIGluZm8tXFx1MDAzZWJlYWNvbi5oZWFkO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yODE0LVxcdGllcyA9IG1nbXQtXFx1MDAzZXUuYmVhY29uLnZhcmlhYmxlO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jPTMwNjk9c3RhdGljIGludCBhdGg2a2xfc2VuZF9nb19wcm9iZV9yZXNwKHN0cnVjdCBhdGg2a2xfdmlmICp2aWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMzA3Ny1cXHRpbnQgcmV0O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzozMDc4OlxcdGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMzA3OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MzA4MDpcXHRtZ210ID0gKGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKSBidWY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTMwODEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM9MzEwNj1zdGF0aWMgYm9vbCBhdGg2a2xfbWdtdF9wb3dlcnNhdmVfYXAoc3RydWN0IGF0aDZrbF92aWYgKnZpZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0zMTE1LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MzExNjpcXHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTMxMTctXFx0c3RydWN0IGF0aDZrbF9zdGEgKmNvbm47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMzEyMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MzEyMzpcXHRtZ210ID0gKHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKSBidWY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTMxMjQtXFx0aWYgKGlzX211bHRpY2FzdF9ldGhlcl9hZGRyKG1nbXQtXFx1MDAzZWRhKSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYz0zMTc5PXN0YXRpYyBib29sIGF0aDZrbF9pc19wMnBfZ29fc3NpZChjb25zdCB1OCAqYnVmLCBzaXplX3QgbGVuKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0zMTgwLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MzE4MTpcXHRjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjMxODI6XFx0bWdtdCA9IChjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKikgYnVmO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0zMTgzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jPTMxOTM9c3RhdGljIGludCBhdGg2a2xfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTMyMDMtXFx0dTMyIGlkLCBmcmVxO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzozMjA0OlxcdGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMzIwNS1cXHRib29sIG1vcmVfZGF0YSwgcXVldWVkO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTMyMTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjMyMTg6XFx0bWdtdCA9IChjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKikgYnVmO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0zMjE5LVxcdGlmICh2aWYtXFx1MDAzZW53X3R5cGUgPT0gQVBfTkVUV09SSyBcXHUwMDI2XFx1MDAyNiB0ZXN0X2JpdChDT05ORUNURUQsIFxcdTAwMjZ2aWYtXFx1MDAzZWZsYWdzKSBcXHUwMDI2XFx1MDAyNlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9tYWluLmM9NDIzPXZvaWQgYXRoNmtsX2Nvbm5lY3RfYXBfbW9kZV9zdGEoc3RydWN0IGF0aDZrbF92aWYgKnZpZiwgdTE2IGFpZCwgdTggKm1hY19hZGRyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9tYWluLmMtNDM2LVxcdGlmIChhc3NvY19yZXFfbGVuIFxcdTAwM2Ugc2l6ZW9mKHN0cnVjdCBpZWVlODAyMTFfaGRyXzNhZGRyKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvbWFpbi5jOjQzNzpcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQgPVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvbWFpbi5jOjQzODpcXHRcXHRcXHQoc3RydWN0IGllZWU4MDIxMV9tZ210ICopIGFzc29jX2luZm87XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9tYWluLmMtNDM5LVxcdFxcdGlmIChpZWVlODAyMTFfaXNfYXNzb2NfcmVxKG1nbXQtXFx1MDAzZWZyYW1lX2NvbnRyb2wpIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYmVhY29uLmM9MTEyPXN0YXRpYyBzdHJ1Y3QgYXRoX2J1ZiAqYXRoOWtfYmVhY29uX2dlbmVyYXRlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2JlYWNvbi5jLTEyMS1cXHRzdHJ1Y3QgaWVlZTgwMjExX3R4X2luZm8gKmluZm87XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2JlYWNvbi5jOjEyMjpcXHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXRfaGRyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9iZWFjb24uYy0xMjMtXFx0aW50IGNhYnFfZGVwdGg7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYmVhY29uLmMtMTQzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9iZWFjb24uYzoxNDQ6XFx0bWdtdF9oZHIgPSAoc3RydWN0IGllZWU4MDIxMV9tZ210ICopc2tiLVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9iZWFjb24uYy0xNDUtXFx0bWdtdF9oZHItXFx1MDAzZXUuYmVhY29uLnRpbWVzdGFtcCA9IGF2cC1cXHUwMDNldHNmX2FkanVzdDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jPTE5MT1zdGF0aWMgdm9pZCBhdGg5a19odGNfc2VuZF9iZWFjb24oc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMTk5LVxcdHN0cnVjdCBpZWVlODAyMTFfdHhfaW5mbyAqaW5mbztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYzoyMDA6XFx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTIwMS1cXHRzdHJ1Y3Qgc2tfYnVmZiAqYmVhY29uO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMjI3LVxcdCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jOjIyODpcXHRtZ210ID0gKHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKWJlYWNvbi1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYy0yMjktXFx0bWdtdC1cXHUwMDNldS5iZWFjb24udGltZXN0YW1wID0gYXZwLVxcdTAwM2V0c2ZhZGp1c3Q7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9MjE0PXN0YXRpYyB2b2lkIGF0aDlrX2h0Y190eF9tZ210KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0yMTktXFx0c3RydWN0IGllZWU4MDIxMV90eF9pbmZvICp0eF9pbmZvID0gSUVFRTgwMjExX1NLQl9DQihza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzoyMjA6XFx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0yMjEtXFx0c3RydWN0IGllZWU4MDIxMV9oZHIgKmhkcjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0yMzYtXFx0aWYgKGF2cCBcXHUwMDI2XFx1MDAyNiB1bmxpa2VseShpZWVlODAyMTFfaXNfcHJvYmVfcmVzcChoZHItXFx1MDAzZWZyYW1lX2NvbnRyb2wpKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzoyMzc6XFx0XFx0bWdtdCA9IChzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKilza2ItXFx1MDAzZWRhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTIzOC1cXHRcXHRtZ210LVxcdTAwM2V1LnByb2JlX3Jlc3AudGltZXN0YW1wID0gYXZwLVxcdTAwM2V0c2ZhZGp1c3Q7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvcmVjdi5jPTUwMz1zdGF0aWMgYm9vbCBhdGhfYmVhY29uX2R0aW1fcGVuZGluZ19jYWIoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9yZWN2LmMtNTA1LVxcdC8qIENoZWNrIHdoZXRoZXIgdGhlIEJlYWNvbiBmcmFtZSBoYXMgRFRJTSBpbmRpY2F0aW5nIGJ1ZmZlcmVkIGJjL21jICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3JlY3YuYzo1MDY6XFx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9yZWN2LmMtNTA3LVxcdHU4ICpwb3MsICplbmQsIGlkLCBlbGVuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3JlY3YuYy01MDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3JlY3YuYzo1MTA6XFx0bWdtdCA9IChzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKilza2ItXFx1MDAzZWRhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3JlY3YuYy01MTEtXFx0cG9zID0gbWdtdC1cXHUwMDNldS5iZWFjb24udmFyaWFibGU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvcnguYz00OTM9c3RhdGljIHU4ICpjYXJsOTE3MF9maW5kX2llKHU4ICpkYXRhLCB1bnNpZ25lZCBpbnQgbGVuLCB1OCBpZSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvcnguYy00OTQte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9jYXJsOTE3MC9yeC5jOjQ5NTpcXHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQgPSAodm9pZCAqKWRhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL3J4LmMtNDk2LVxcdHU4ICpwb3MsICplbmQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC9jZmc4MDIxMS5jPTE4NjE9X3dpbF9jZmc4MDIxMV9nZXRfcHJvYmVyZXNwX2llcyhjb25zdCB1OCAqcHJvYmVyZXNwLCB1MTYgcHJvYmVyZXNwX2xlbixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL2NmZzgwMjExLmMtMTg2Ni1cXHRpZiAocHJvYmVyZXNwKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvY2ZnODAyMTEuYzoxODY3OlxcdFxcdHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqZiA9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvY2ZnODAyMTEuYzoxODY4OlxcdFxcdFxcdChzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKilwcm9iZXJlc3A7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvY2ZnODAyMTEuYzoxODY5OlxcdFxcdHNpemVfdCBobGVuID0gb2Zmc2V0b2Yoc3RydWN0IGllZWU4MDIxMV9tZ210LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL2NmZzgwMjExLmMtMTg3MC1cXHRcXHRcXHRcXHQgICAgICAgdS5wcm9iZV9yZXNwLnZhcmlhYmxlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3dtaS5jPTgxNT1zdGF0aWMgdm9pZCB3bWlfZXZ0X3J4X21nbXQoc3RydWN0IHdpbDYyMTBfdmlmICp2aWYsIGludCBpZCwgdm9pZCAqZCwgaW50IGxlbilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3dtaS5jLTgxOS1cXHRzdHJ1Y3Qgd2lwaHkgKndpcGh5ID0gd2lsX3RvX3dpcGh5KHdpbCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvd21pLmM6ODIwOlxcdHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqcnhfbWdtdF9mcmFtZSA9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvd21pLmM6ODIxOlxcdFxcdFxcdChzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKilkYXRhLVxcdTAwM2VwYXlsb2FkO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3dtaS5jLTgyMi1cXHRpbnQgZmxlbiA9IGxlbiAtIG9mZnNldG9mKHN0cnVjdCB3bWlfcnhfbWdtdF9wYWNrZXRfZXZlbnQsIHBheWxvYWQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvd21pLmMtODc5LVxcdFxcdGNvbnN0IHU4ICppZV9idWYgPSByeF9tZ210X2ZyYW1lLVxcdTAwM2V1LmJlYWNvbi52YXJpYWJsZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC93bWkuYzo4ODA6XFx0XFx0c2l6ZV90IGllX2xlbiA9IGRfbGVuIC0gb2Zmc2V0b2Yoc3RydWN0IGllZWU4MDIxMV9tZ210LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3dtaS5jLTg4MS1cXHRcXHRcXHRcXHRcXHRcXHQgdS5iZWFjb24udmFyaWFibGUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvd21pLmM9OTA4PXN0YXRpYyB2b2lkIHdtaV9ldnRfdHhfbWdtdChzdHJ1Y3Qgd2lsNjIxMF92aWYgKnZpZiwgaW50IGlkLCB2b2lkICpkLCBpbnQgbGVuKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvd21pLmMtOTEwLVxcdHN0cnVjdCB3bWlfdHhfbWdtdF9wYWNrZXRfZXZlbnQgKmRhdGEgPSBkO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3dtaS5jOjkxMTpcXHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXRfZnJhbWUgPVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3dtaS5jOjkxMjpcXHRcXHRcXHQoc3RydWN0IGllZWU4MDIxMV9tZ210ICopZGF0YS1cXHUwMDNlcGF5bG9hZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC93bWkuYy05MTMtXFx0aW50IGZsZW4gPSBsZW4gLSBvZmZzZXRvZihzdHJ1Y3Qgd21pX3R4X21nbXRfcGFja2V0X2V2ZW50LCBwYXlsb2FkKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3dtaS5jPTEzNzY9d21pX2V2dF9zY2hlZF9zY2FuX3Jlc3VsdChzdHJ1Y3Qgd2lsNjIxMF92aWYgKnZpZiwgaW50IGlkLCB2b2lkICpkLCBpbnQgbGVuKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvd21pLmMtMTM4MC1cXHRzdHJ1Y3Qgd2lwaHkgKndpcGh5ID0gd2lsX3RvX3dpcGh5KHdpbCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvd21pLmM6MTM4MTpcXHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKnJ4X21nbXRfZnJhbWUgPVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3dtaS5jOjEzODI6XFx0XFx0KHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKWRhdGEtXFx1MDAzZXBheWxvYWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvd21pLmMtMTM4My1cXHRpbnQgZmxlbiA9IGxlbiAtIG9mZnNldG9mKHN0cnVjdCB3bWlfc2NoZWRfc2Nhbl9yZXN1bHRfZXZlbnQsIHBheWxvYWQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvd21pLmM9MzYxNT1pbnQgd21pX21nbXRfdHgoc3RydWN0IHdpbDYyMTBfdmlmICp2aWYsIGNvbnN0IHU4ICpidWYsIHNpemVfdCBsZW4pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC93bWkuYy0zNjE4LVxcdHN0cnVjdCB3aWw2MjEwX3ByaXYgKndpbCA9IHZpZl90b193aWwodmlmKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC93bWkuYzozNjE5OlxcdHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdF9mcmFtZSA9ICh2b2lkICopYnVmO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3dtaS5jLTM2MjAtXFx0c3RydWN0IHdtaV9zd190eF9yZXFfY21kICpjbWQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC93bWkuYz0zNjYzPWludCB3bWlfbWdtdF90eF9leHQoc3RydWN0IHdpbDYyMTBfdmlmICp2aWYsIGNvbnN0IHU4ICpidWYsIHNpemVfdCBsZW4sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC93bWkuYy0zNjY3LVxcdHN0cnVjdCB3aWw2MjEwX3ByaXYgKndpbCA9IHZpZl90b193aWwodmlmKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC93bWkuYzozNjY4OlxcdHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdF9mcmFtZSA9ICh2b2lkICopYnVmO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3dtaS5jLTM2NjktXFx0c3RydWN0IHdtaV9zd190eF9yZXFfZXh0X2NtZCAqY21kO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRtZWwvYXQ3NmM1MHgtdXNiLmM9MTUwOD1zdGF0aWMgaW5saW5lIGludCBhdDc2X2d1ZXNzX2ZyZXEoc3RydWN0IGF0NzZfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0bWVsL2F0NzZjNTB4LXVzYi5jLTE1MjItXFx0aWYgKGllZWU4MDIxMV9pc19wcm9iZV9yZXNwKGhkci1cXHUwMDNlZnJhbWVfY29udHJvbCkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdG1lbC9hdDc2YzUweC11c2IuYzoxNTIzOlxcdFxcdGVsX29mZiA9IG9mZnNldG9mKHN0cnVjdCBpZWVlODAyMTFfbWdtdCwgdS5wcm9iZV9yZXNwLnZhcmlhYmxlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdG1lbC9hdDc2YzUweC11c2IuYy0xNTI0LVxcdH0gZWxzZSBpZiAoaWVlZTgwMjExX2lzX2JlYWNvbihoZHItXFx1MDAzZWZyYW1lX2NvbnRyb2wpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRtZWwvYXQ3NmM1MHgtdXNiLmM6MTUyNTpcXHRcXHRlbF9vZmYgPSBvZmZzZXRvZihzdHJ1Y3QgaWVlZTgwMjExX21nbXQsIHUuYmVhY29uLnZhcmlhYmxlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdG1lbC9hdDc2YzUweC11c2IuYy0xNTI2LVxcdH0gZWxzZSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdG1lbC9hdDc2YzUweC11c2IuYz0xNzU3PXN0YXRpYyB2b2lkIGF0NzZfbWFjODAyMTFfdHgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdG1lbC9hdDc2YzUweC11c2IuYy0xNzYzLVxcdHN0cnVjdCBpZWVlODAyMTFfdHhfaW5mbyAqaW5mbyA9IElFRUU4MDIxMV9TS0JfQ0Ioc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdG1lbC9hdDc2YzUweC11c2IuYzoxNzY0OlxcdHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdCA9IChzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKilza2ItXFx1MDAzZWRhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRtZWwvYXQ3NmM1MHgtdXNiLmMtMTc2NS1cXHRpbnQgcGFkZGluZywgc3VibWl0X2xlbiwgcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYjQzL21haW4uYz0xNjA2PXN0YXRpYyB2b2lkIGI0M193cml0ZV9iZWFjb25fdGVtcGxhdGUoc3RydWN0IGI0M193bGRldiAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYjQzL21haW4uYy0xNjEwLVxcdHVuc2lnbmVkIGludCBpLCBsZW4sIHZhcmlhYmxlX2xlbjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDMvbWFpbi5jOjE2MTE6XFx0Y29uc3Qgc3RydWN0IGllZWU4MDIxMV9tZ210ICpiY247XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYjQzL21haW4uYy0xNjEyLVxcdGNvbnN0IHU4ICppZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2I0My9tYWluLmMtMTYzMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDMvbWFpbi5jOjE2MzQ6XFx0YmNuID0gKGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKShiZWFjb25fc2tiLVxcdTAwM2VkYXRhKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDMvbWFpbi5jLTE2MzUtXFx0bGVuID0gbWluX3Qoc2l6ZV90LCBiZWFjb25fc2tiLVxcdTAwM2VsZW4sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDMvbWFpbi5jLTE2NTgtXFx0aWUgPSBiY24tXFx1MDAzZXUuYmVhY29uLnZhcmlhYmxlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2I0My9tYWluLmM6MTY1OTpcXHR2YXJpYWJsZV9sZW4gPSBsZW4gLSBvZmZzZXRvZihzdHJ1Y3QgaWVlZTgwMjExX21nbXQsIHUuYmVhY29uLnZhcmlhYmxlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDMvbWFpbi5jLTE2NjAtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHZhcmlhYmxlX2xlbiAtIDI7ICkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYjQzL21haW4uYy0xNjc4LVxcdFxcdFxcdHRpbV9wb3NpdGlvbiA9IHNpemVvZihzdHJ1Y3QgYjQzX3BsY3BfaGRyNik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYjQzL21haW4uYzoxNjc5OlxcdFxcdFxcdHRpbV9wb3NpdGlvbiArPSBvZmZzZXRvZihzdHJ1Y3QgaWVlZTgwMjExX21nbXQsIHUuYmVhY29uLnZhcmlhYmxlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDMvbWFpbi5jLTE2ODAtXFx0XFx0XFx0dGltX3Bvc2l0aW9uICs9IGk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDNsZWdhY3kvbWFpbi5jPTkzOD1zdGF0aWMgdm9pZCBiNDNsZWdhY3lfd3JpdGVfYmVhY29uX3RlbXBsYXRlKHN0cnVjdCBiNDNsZWdhY3lfd2xkZXYgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2I0M2xlZ2FjeS9tYWluLmMtOTQzLVxcdHVuc2lnbmVkIGludCBpLCBsZW4sIHZhcmlhYmxlX2xlbjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDNsZWdhY3kvbWFpbi5jOjk0NDpcXHRjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKmJjbjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDNsZWdhY3kvbWFpbi5jLTk0NS1cXHRjb25zdCB1OCAqaWU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDNsZWdhY3kvbWFpbi5jLTk1MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDNsZWdhY3kvbWFpbi5jOjk1MjpcXHRiY24gPSAoY29uc3Qgc3RydWN0IGllZWU4MDIxMV9tZ210ICopKGRldi1cXHUwMDNld2wtXFx1MDAzZWN1cnJlbnRfYmVhY29uLVxcdTAwM2VkYXRhKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDNsZWdhY3kvbWFpbi5jLTk1My1cXHRsZW4gPSBtaW5fdChzaXplX3QsIGRldi1cXHUwMDNld2wtXFx1MDAzZWN1cnJlbnRfYmVhY29uLVxcdTAwM2VsZW4sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDNsZWdhY3kvbWFpbi5jLTk3Ni1cXHRpZSA9IGJjbi1cXHUwMDNldS5iZWFjb24udmFyaWFibGU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYjQzbGVnYWN5L21haW4uYzo5Nzc6XFx0dmFyaWFibGVfbGVuID0gbGVuIC0gb2Zmc2V0b2Yoc3RydWN0IGllZWU4MDIxMV9tZ210LCB1LmJlYWNvbi52YXJpYWJsZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYjQzbGVnYWN5L21haW4uYy05NzgtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHZhcmlhYmxlX2xlbiAtIDI7ICkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYjQzbGVnYWN5L21haW4uYy05OTYtXFx0XFx0XFx0dGltX3Bvc2l0aW9uID0gc2l6ZW9mKHN0cnVjdCBiNDNsZWdhY3lfcGxjcF9oZHI2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDNsZWdhY3kvbWFpbi5jOjk5NzpcXHRcXHRcXHR0aW1fcG9zaXRpb24gKz0gb2Zmc2V0b2Yoc3RydWN0IGllZWU4MDIxMV9tZ210LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2I0M2xlZ2FjeS9tYWluLmMtOTk4LVxcdFxcdFxcdFxcdFxcdFxcdCB1LmJlYWNvbi52YXJpYWJsZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDNsZWdhY3kvbWFpbi5jPTEwNTA9c3RhdGljIGNvbnN0IHU4ICpiNDNsZWdhY3lfZ2VuZXJhdGVfcHJvYmVfcmVzcChzdHJ1Y3QgYjQzbGVnYWN5X3dsZGV2ICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDNsZWdhY3kvbWFpbi5jLTEwNjQtXFx0LyogR2V0IHRoZSBzdGFydCBvZmZzZXQgb2YgdGhlIHZhcmlhYmxlIElFcyBpbiB0aGUgcGFja2V0LiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2I0M2xlZ2FjeS9tYWluLmM6MTA2NTpcXHRpZV9zdGFydCA9IG9mZnNldG9mKHN0cnVjdCBpZWVlODAyMTFfbWdtdCwgdS5wcm9iZV9yZXNwLnZhcmlhYmxlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDNsZWdhY3kvbWFpbi5jOjEwNjY6XFx0QjQzbGVnYWN5X1dBUk5fT04oaWVfc3RhcnQgIT0gb2Zmc2V0b2Yoc3RydWN0IGllZWU4MDIxMV9tZ210LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2I0M2xlZ2FjeS9tYWluLmMtMTA2Ny1cXHRcXHRcXHRcXHRcXHQgICAgICAgdS5iZWFjb24udmFyaWFibGUpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jPTU1NTY9YnJjbWZfY2ZnODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNTU2My1cXHRzaXplX3QgbGVuID0gcGFyYW1zLVxcdTAwM2VsZW47XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM6NTU2NDpcXHRjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNTU2NS1cXHRzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfdmlmICp2aWY7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy01NTc1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jOjU1NzY6XFx0bWdtdCA9IChjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKilidWY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNTU3Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jPTEwMj1pbnQgYnJjbWZfY3l3X21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jLTEwOS1cXHRzaXplX3QgbGVuID0gcGFyYW1zLVxcdTAwM2VsZW47XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmM6MTEwOlxcdGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYy0xMTEtXFx0c3RydWN0IGJyY21mX2NmZzgwMjExX3ZpZiAqdmlmO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmMtMTIwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jOjEyMTpcXHRtZ210ID0gKGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKWJ1ZjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYy0xMjItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYz0yNzI9YnJjbWZfbm90aWZ5X2F1dGhfZnJhbWVfcngoc3RydWN0IGJyY21mX2lmICppZnAsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYy0yODEtXFx0c3RydWN0IGJyY211X2NoYW4gY2g7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmM6MjgyOlxcdHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdF9mcmFtZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYy0yODMtXFx0czMyIGZyZXE7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYy0yOTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmM6Mjk0OlxcdGlmIChtZ210X2ZyYW1lX2xlbiBcXHUwMDNjIG9mZnNldG9mKHN0cnVjdCBpZWVlODAyMTFfbWdtdCwgdSkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYy0yOTUtXFx0XFx0YnBoeV9lcnIoZHJ2ciwgXFxcIkV2ZW50ICVzICglZCkgZnJhbWUgdG9vIHNtYWxsLiBJZ25vcmVcXFxcblxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYy0zMTQtXFx0XFx0XFx0ICAgICAgIEVUSF9BTEVOKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYzozMTU6XFx0ZnJhbWUgKz0gb2Zmc2V0b2Yoc3RydWN0IGllZWU4MDIxMV9tZ210LCB1KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYy0zMTYtXFx0bWVtY3B5KFxcdTAwMjZtZ210X2ZyYW1lLVxcdTAwM2V1LCBmcmFtZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYzozMTc6XFx0ICAgICAgIG1nbXRfZnJhbWVfbGVuIC0gb2Zmc2V0b2Yoc3RydWN0IGllZWU4MDIxMV9tZ210LCB1KSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmMtMzE4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jPTE0MTQ9aW50IGJyY21mX3AycF9ub3RpZnlfYWN0aW9uX2ZyYW1lX3J4KHN0cnVjdCBicmNtZl9pZiAqaWZwLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jLTE0MjgtXFx0c3RydWN0IGJyY211X2NoYW4gY2g7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jOjE0Mjk6XFx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210X2ZyYW1lO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuYy0xNDMwLVxcdHMzMiBmcmVxO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jLTE0ODYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jOjE0ODc6XFx0bWdtdF9mcmFtZSA9IGt6YWxsb2Mob2Zmc2V0b2Yoc3RydWN0IGllZWU4MDIxMV9tZ210LCB1KSArXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jLTE0ODgtXFx0XFx0XFx0ICAgICBtZ210X2ZyYW1lX2xlbiwgR0ZQX0tFUk5FTCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmMtMTQ5OC1cXHRtZW1jcHkobWdtdF9mcmFtZS1cXHUwMDNldS5ib2R5LCBmcmFtZSwgbWdtdF9mcmFtZV9sZW4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuYzoxNDk5OlxcdG1nbXRfZnJhbWVfbGVuICs9IG9mZnNldG9mKHN0cnVjdCBpZWVlODAyMTFfbWdtdCwgdS5ib2R5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmMtMTUwMC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5LzM5NDUtbWFjLmM9MjQ1Nz1pbDM5NDVfcmVxdWVzdF9zY2FuKHN0cnVjdCBpbF9wcml2ICppbCwgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5LzM5NDUtbWFjLmMtMjU2OS1cXHRsZW4gPVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5LzM5NDUtbWFjLmM6MjU3MDpcXHQgICAgaWxfZmlsbF9wcm9iZV9yZXEoaWwsIChzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKilzY2FuLVxcdTAwM2VkYXRhLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5LzM5NDUtbWFjLmMtMjU3MS1cXHRcXHRcXHQgICAgICB2aWYtXFx1MDAzZWFkZHIsIGlsLVxcdTAwM2VzY2FuX3JlcXVlc3QtXFx1MDAzZWllLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvNDk2NS1tYWMuYz04NTA9aWw0OTY1X3JlcXVlc3Rfc2NhbihzdHJ1Y3QgaWxfcHJpdiAqaWwsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS80OTY1LW1hYy5jLTEwMDUtXFx0Y21kX2xlbiA9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvNDk2NS1tYWMuYzoxMDA2OlxcdCAgICBpbF9maWxsX3Byb2JlX3JlcShpbCwgKHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKXNjYW4tXFx1MDAzZWRhdGEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvNDk2NS1tYWMuYy0xMDA3LVxcdFxcdFxcdCAgICAgIHZpZi1cXHUwMDNlYWRkciwgaWwtXFx1MDAzZXNjYW5fcmVxdWVzdC1cXHUwMDNlaWUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS80OTY1LW1hYy5jPTM3NTM9aWw0OTY1X3NldF9iZWFjb25fdGltKHN0cnVjdCBpbF9wcml2ICppbCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5LzQ5NjUtbWFjLmMtMzc1Ny1cXHR1MTYgdGltX2lkeDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS80OTY1LW1hYy5jOjM3NTg6XFx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210ID0gKHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKWJlYWNvbjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS80OTY1LW1hYy5jLTM3NTktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS9jb21tb24uYz0xNjEzPXUxNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5L2NvbW1vbi5jOjE2MTQ6aWxfZmlsbF9wcm9iZV9yZXEoc3RydWN0IGlsX3ByaXYgKmlsLCBzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKmZyYW1lLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5L2NvbW1vbi5jLTE2MTUtXFx0XFx0ICBjb25zdCB1OCAqdGEsIGNvbnN0IHU4ICppZXMsIGludCBpZV9sZW4sIGludCBsZWZ0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvY29tbW9uLmM9NTI1Mz1pbF9iZWFjb25fdXBkYXRlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvY29tbW9uLmMtNTI3Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS9jb21tb24uYzo1Mjc3OlxcdHRpbWVzdGFtcCA9ICgoc3RydWN0IGllZWU4MDIxMV9tZ210ICopc2tiLVxcdTAwM2VkYXRhKS1cXHUwMDNldS5iZWFjb24udGltZXN0YW1wO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5L2NvbW1vbi5jLTUyNzgtXFx0aWwtXFx1MDAzZXRpbWVzdGFtcCA9IGxlNjRfdG9fY3B1KHRpbWVzdGFtcCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS9jb21tb24uaD0xNzg5PWludCBpbF9mb3JjZV9yZXNldChzdHJ1Y3QgaWxfcHJpdiAqaWwsIGJvb2wgZXh0ZXJuYWwpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5L2NvbW1vbi5oOjE3OTA6dTE2IGlsX2ZpbGxfcHJvYmVfcmVxKHN0cnVjdCBpbF9wcml2ICppbCwgc3RydWN0IGllZWU4MDIxMV9tZ210ICpmcmFtZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS9jb21tb24uaC0xNzkxLVxcdFxcdCAgICAgIGNvbnN0IHU4ICp0YSwgY29uc3QgdTggKmllLCBpbnQgaWVfbGVuLCBpbnQgbGVmdCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWluLmM9MTU0PXN0YXRpYyB2b2lkIGl3bF9zZXRfYmVhY29uX3RpbShzdHJ1Y3QgaXdsX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWluLmMtMTU4LVxcdHUxNiB0aW1faWR4O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21haW4uYzoxNTk6XFx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210ID0gKHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKWJlYWNvbjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWluLmMtMTYwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jPTQ4OD1zdGF0aWMgaW50IGl3bF9nZXRfY2hhbm5lbHNfZm9yX3NjYW4oc3RydWN0IGl3bF9wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jLTU2MC0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmM6NTYxOnN0YXRpYyB1MTYgaXdsX2ZpbGxfcHJvYmVfcmVxKHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqZnJhbWUsIGNvbnN0IHU4ICp0YSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmMtNTYyLVxcdFxcdFxcdCAgICAgIGNvbnN0IHU4ICppZXMsIGludCBpZV9sZW4sIGNvbnN0IHU4ICpzc2lkLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jPTYwOT1zdGF0aWMgaW50IGl3bGFnbl9yZXF1ZXN0X3NjYW4oc3RydWN0IGl3bF9wcml2ICpwcml2LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jLTg0NS1cXHRcXHRjbWRfbGVuID0gaXdsX2ZpbGxfcHJvYmVfcmVxKFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYzo4NDY6XFx0XFx0XFx0XFx0XFx0KHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKXNjYW4tXFx1MDAzZWRhdGEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jLTg0Ny1cXHRcXHRcXHRcXHRcXHR2aWYtXFx1MDAzZWFkZHIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmMtODU1LVxcdFxcdGNtZF9sZW4gPSBpd2xfZmlsbF9wcm9iZV9yZXEoXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jOjg1NjpcXHRcXHRcXHRcXHRcXHQoc3RydWN0IGllZWU4MDIxMV9tZ210ICopc2Nhbi1cXHUwMDNlZGF0YSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmMtODU3LVxcdFxcdFxcdFxcdFxcdGl3bF9iY2FzdF9hZGRyLCBOVUxMLCAwLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdXRpbHMuaD0zOT11MzIgaXdsX2ZpbmRfaWVfb2Zmc2V0KHU4ICpiZWFjb24sIHU4IGVpZCwgdTMyIGZyYW1lX3NpemUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdXRpbHMuaC00MC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdXRpbHMuaDo0MTpcXHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQgPSAodm9pZCAqKWJlYWNvbjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC11dGlscy5oLTQyLVxcdGNvbnN0IHU4ICppZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL2FwLmM9MTg9dm9pZCBpd2xfbWxkX3NldF90aW1faWR4KHN0cnVjdCBpd2xfbWxkICptbGQsIF9fbGUzMiAqdGltX2luZGV4LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvYXAuYy0yMS1cXHR1MzIgdGltX2lkeDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9hcC5jOjIyOlxcdHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdCA9ICh2b2lkICopYmVhY29uO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL2FwLmMtMjMtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tYWM4MDIxMS5jPTUwOT1pd2xfbWxkX21hYzgwMjExX3R4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWFjODAyMTEuYy01MjktXFx0XFx0XFx0cmN1X2RlcmVmZXJlbmNlKGluZm8tXFx1MDAzZWNvbnRyb2wudmlmLVxcdTAwM2VsaW5rX2NvbmZbbGlua19pZF0pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21hYzgwMjExLmM6NTMwOlxcdFxcdHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tYWM4MDIxMS5jLTUzMS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3NjYW4uYz0zODI9aXdsX21sZF9zY2FuX2J1aWxkX3Byb2JlX3JlcShzdHJ1Y3QgaXdsX21sZCAqbWxkLCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvc2Nhbi5jLTM4NS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvc2Nhbi5jOjM4NjpcXHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKmZyYW1lID0gKHZvaWQgKilwYXJhbXMtXFx1MDAzZXByZXEuYnVmO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3NjYW4uYy0zODctXFx0dTggKnBvcywgKm5ld3BvcztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3RpbWVfc3luYy5jPTExMz1zdGF0aWMgYm9vbCBpd2xfbWxkX2lzX3NrYl9tYXRjaChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1OCAqYWRkciwgdTggZGlhbG9nX3Rva2VuKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3RpbWVfc3luYy5jLTExNC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvdGltZV9zeW5jLmM6MTE1OlxcdHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdCA9ICh2b2lkICopc2tiLVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3RpbWVfc3luYy5jLTExNi1cXHR1OCBza2JfZGlhbG9nX3Rva2VuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vZnRtLWluaXRpYXRvci5jPTE0MzU9dm9pZCBpd2xfbXZtX2Z0bV9sY19ub3RpZihzdHJ1Y3QgaXdsX212bSAqbXZtLCBzdHJ1Y3QgaXdsX3J4X2NtZF9idWZmZXIgKnJ4YilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2Z0bS1pbml0aWF0b3IuYy0xNDM3LVxcdHN0cnVjdCBpd2xfcnhfcGFja2V0ICpwa3QgPSByeGJfYWRkcihyeGIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2Z0bS1pbml0aWF0b3IuYzoxNDM4OlxcdGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdCA9ICh2b2lkICopcGt0LVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2Z0bS1pbml0aWF0b3IuYy0xNDM5LVxcdHNpemVfdCBsZW4gPSBpd2xfcnhfcGFja2V0X3BheWxvYWRfbGVuKHBrdCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9tYWMtY3R4dC5jPTg0Nz12b2lkIGl3bF9tdm1fbWFjX2N0eHRfc2V0X3RpbShzdHJ1Y3QgaXdsX212bSAqbXZtLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbWFjLWN0eHQuYy04NTEtXFx0dTMyIHRpbV9pZHg7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbWFjLWN0eHQuYzo4NTI6XFx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210ID0gKHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKWJlYWNvbjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9tYWMtY3R4dC5jLTg1My1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL21hYzgwMjExLmM9ODE0PXZvaWQgaXdsX212bV9tYWNfdHgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9tYWM4MDIxMS5jLTg1NS1cXHRcXHRcXHRyY3VfZGVyZWZlcmVuY2UoaW5mby1cXHUwMDNlY29udHJvbC52aWYtXFx1MDAzZWxpbmtfY29uZltsaW5rX2lkXSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbWFjODAyMTEuYzo4NTY6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL21hYzgwMjExLmMtODU3LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbXZtLmg9MjY3MT1zdGF0aWMgaW5saW5lIGJvb2wgaXdsX212bV9tZWlfZmlsdGVyX3NjYW4oc3RydWN0IGl3bF9tdm0gKm12bSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL212bS5oLTI2NzMte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL212bS5oOjI2NzQ6XFx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210ID0gKHZvaWQgKilza2ItXFx1MDAzZWRhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbXZtLmgtMjY3NS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3NjYW4uYz03NTI9aXdsX212bV9idWlsZF9zY2FuX3Byb2JlKHN0cnVjdCBpd2xfbXZtICptdm0sIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9zY2FuLmMtNzU1LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9zY2FuLmM6NzU2OlxcdHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqZnJhbWUgPSAodm9pZCAqKXBhcmFtcy1cXHUwMDNlcHJlcS5idWY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vc2Nhbi5jLTc1Ny1cXHR1OCAqcG9zLCAqbmV3cG9zO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vc2Nhbi5jPTI3NDU9c3RhdGljIHZvaWQgaXdsX212bV9tZWlfc2Nhbl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd2spXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9zY2FuLmMtMjc2MC1cXHR3aGlsZSAoKHNrYiA9IHNrYl9kZXF1ZXVlKFxcdTAwMjZzY2FuX2ZpbHRlci1cXHUwMDNlc2Nhbl9yZXMpKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3NjYW4uYzoyNzYxOlxcdFxcdHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdCA9ICh2b2lkICopc2tiLVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3NjYW4uYy0yNzYyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vdGltZS1zeW5jLmM9MTU9c3RhdGljIGJvb2wgaXdsX212bV9pc19za2JfbWF0Y2goc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTggKmFkZHIsIHU4IGRpYWxvZ190b2tlbilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS90aW1lLXN5bmMuYy0xNi17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vdGltZS1zeW5jLmM6MTc6XFx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210ID0gKHZvaWQgKilza2ItXFx1MDAzZWRhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vdGltZS1zeW5jLmMtMTgtXFx0dTggc2tiX2RpYWxvZ190b2tlbjtcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDc6MjI6MTAuMjI4NjE2MDY4WiIsIlNlcSI6MzcsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjMzNDQ5NjI0MDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqQW5hbHl6aW5nIHRoZSBDYWxsZXJzIG9mIGBwNTRfZmluZF9pZWAqKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIGluLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJTaG93IG1lIHRoZSBjYWxsZXJzIG9mIGBwNTRfZmluZF9pZWAuXCIgSSdtIG5vdCBsb29raW5nIGZvciBhIHN1cGVyZmljaWFsIG92ZXJ2aWV3IGhlcmU7IEkgd2FudCBhIGRldGFpbGVkLCBncmFudWxhciB1bmRlcnN0YW5kaW5nIG9mICp3aGVyZSogYW5kICpob3cqIHRoaXMgZnVuY3Rpb24gaXMgYmVpbmcgdXRpbGl6ZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBjb250ZXh0IHdpdGhpbiB0aGUgYnJvYWRlciBzeXN0ZW0uIEkgd2FudCB0byBzZWUgdGhlIGNhbGwgZ3JhcGhzLCB0aGUgY29udHJvbCBmbG93IHBhdGhzLCBhbmQgaWRlbnRpZnkgdGhlIHNwZWNpZmljIGRhdGEgc3RydWN0dXJlcyBhbmQgdmFyaWFibGVzIGJlaW5nIHBhc3NlZCB0byBpdCBhdCBlYWNoIGNhbGwgc2l0ZS4gQXJlIHdlIHRhbGtpbmcgYWJvdXQgYSBoYW5kZnVsIG9mIGNhbGxzIGluIGEgdGlnaHRseSBjb3VwbGVkIG1vZHVsZSwgb3IgaXMgdGhpcyBhIHBlcnZhc2l2ZSB1dGlsaXR5IGZ1bmN0aW9uIHVzZWQgdGhyb3VnaG91dCB0aGUgY29kZWJhc2U/IEFyZSB0aGVyZSBhbnkgaW5kaXJlY3QgY2FsbHM/IEFueSByZWN1cnNpb24/IEknbSBob3BpbmcgdG8gcXVpY2tseSBpZGVudGlmeSBhbnkgcG90ZW50aWFsIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzIG9yIHN1YnRsZSBidWdzIHRoYXQgbWlnaHQgYmUgbHVya2luZyBpbiB0aGUgaW50ZXJhY3Rpb25zIHdpdGggYHA1NF9maW5kX2llYC4gTXkgZ29hbCBpcyB0byBnYWluIGFuIGluLWRlcHRoIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGltcGxpY2F0aW9ucyBvZiBhbnkgY2hhbmdlcyBvciBvcHRpbWl6YXRpb25zIHRoYXQgbWlnaHQgYmUgbWFkZSB0byB0aGlzIHBhcnRpY3VsYXIgZnVuY3Rpb24uIEknbSBsb29raW5nIGZvciBhIGNsZWFyIG1hcCBvZiBpdHMgdXNhZ2UsIGVzc2VudGlhbGx5LCBzbyB0aGF0IEkgY2FuIG1ha2UgaW5mb3JtZWQgZGVjaXNpb25zIGJhc2VkIG9uIGEgZnVsbCBwaWN0dXJlIG9mIGl0cyByb2xlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTM3MCwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA3OjIyOjEzLjU3MzU4MTIzM1oiLCJTZXEiOjM4LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI2MDk4MDQyNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwNTRfZmluZF9pZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oPTU1ND1zdHJ1Y3QgcDU0X3Jzc2lfZGJfZW50cnkgKnA1NF9yc3NpX2ZpbmQoc3RydWN0IHA1NF9jb21tb24gKnAsIGNvbnN0IHUxNiBmcmVxKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmgtNTU2LS8qIHV0aWxpdHkgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjU1Nzp1OCAqcDU0X2ZpbmRfaWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTggaWUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmgtNTU4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYz02Nj1zdGF0aWMgaW50IHA1NF9zZXRfdGltKHN0cnVjdCBpZWVlODAyMTFfaHcgKmRldiwgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmMtNzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYzo3NDp1OCAqcDU0X2ZpbmRfaWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTggaWUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYy03NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jPTkzPXN0YXRpYyBpbnQgcDU0X2JlYWNvbl9mb3JtYXRfaWVfdGltKHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jLTEwNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jOjEwNTpcXHR0aW0gPSBwNTRfZmluZF9pZShza2IsIFdMQU5fRUlEX1RJTSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYy0xMDYtXFx0aWYgKCF0aW0pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jPTI5ND1zdGF0aWMgdm9pZCBwNTRfcHNwb2xsX3dvcmthcm91bmQoc3RydWN0IHA1NF9jb21tb24gKnByaXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jLTMxMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jOjMxMzpcXHR0aW0gPSBwNTRfZmluZF9pZShza2IsIFdMQU5fRUlEX1RJTSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYy0zMTQtXFx0aWYgKCF0aW0pXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA3OjIyOjE1LjgzNDU2Nzg3N1oiLCJTZXEiOjM5LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMzA5OTU0NDgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRoaW5nczpcblxuKipEaWdnaW5nIGludG8gdGhlIHA1NCBXaXJlbGVzcyBEcml2ZXIqKlxuXG5Pa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBpbnRlcmFjdGlvbnMgb2YgdGhlIHA1NCBkcml2ZXIsIGVzcGVjaWFsbHkgYXJvdW5kIGhhbmRsaW5nIEluZm9ybWF0aW9uIEVsZW1lbnRzIChJRXMpIGFuZCBwb3dlciBzYXZlIG1lY2hhbmlzbXMuIE15IGZvY3VzIGlzIGdvaW5nIHRvIGJlIG9uIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBiZWFjb24gZm9ybWF0cywgdHJhbnNtaXQvcmVjZWl2ZSwgYW5kIGFueSBwb3RlbnRpYWwgaXNzdWVzIHdpdGggUFMtUG9sbCB3b3JrYXJvdW5kcy4gSSdsbCBzdGFydCBieSB0YWtpbmcgYSBsb29rIGF0IGBwNTRfZmluZF9pZWAsIGBwNTRfYmVhY29uX2Zvcm1hdF9pZV90aW1gLCBhbmQgYHA1NF9wc3BvbGxfd29ya2Fyb3VuZGAgdG8gZ2V0IG15IGJlYXJpbmdzIG9uIHRoZSByZWxldmFudCBmdW5jdGlvbnMgYW5kIGRhdGEgc3RydWN0dXJlcy4gSXQnbGwgYmUgdGhlIGJlc3Qgd2F5IHRvIGRldGVybWluZSBpZiBJIG5lZWQgdG8gZGlnIGZ1cnRoZXIuXG5cblNwZWNpZmljYWxseSwgSSdsbCBuZWVkIHRvIGRyaWxsIGRvd24gaW50byB0aGUgdHJhbnNtaXQvcmVjZWl2ZSBjb2RlLiBJJ20gZ29pbmcgdG8gbG9vayBhdCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguY2AgYXJvdW5kIGxpbmUgMjk0LiBJJ2xsIG5lZWQgdG8gc2VlIGhvdyB0aGUgSUVzIGFyZSBhY3R1YWxseSBoYW5kbGVkIGluIHRoZSB0cmFuc21pdC9yZWNlaXZlIHByb2Nlc3MgdGhlcmUgdG8gc2VlIGhvdyBldmVyeXRoaW5nIGlzIHdpcmVkIHVwLiBIb3BlZnVsbHksIHRoaXMgd2lsbCBwcm92aWRlIHRoZSBpbmZvcm1hdGlvbiBJIG5lZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMjc5LCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDc6MjI6MTguMTQ0NTI1MTM5WiIsIlNlcSI6NDAsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxMTQxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI5MCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDI5MDpcXHQgKiB3aGlsZSBkb3ppbmcsIHdlIGhhdmUgdG8gcHJlcGFyZWQgaW4gY2FzZSBtYWM4MDIxMSB1c2VzIFBTLVBPTExcXG4gMjkxOlxcdCAqIHRvIHJldHJpZXZlIG91dHN0YW5kaW5nIGZyYW1lcyBmcm9tIG91ciBBUC5cXG4gMjkyOlxcdCAqIChzZWUgY29tbWVudCBpbiBuZXQvbWFjODAyMTEvbWxtZS5jIEAgbGluZSAxOTkzKVxcbiAyOTM6XFx0ICovXFxuIDI5NDpcXHRzdGF0aWMgdm9pZCBwNTRfcHNwb2xsX3dvcmthcm91bmQoc3RydWN0IHA1NF9jb21tb24gKnByaXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuIDI5NTpcXHR7XFxuIDI5NjpcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX2hkciAqaGRyID0gKHZvaWQgKikgc2tiLVxcdTAwM2VkYXRhO1xcbiAyOTc6XFx0XFx0c3RydWN0IGllZWU4MDIxMV90aW1faWUgKnRpbV9pZTtcXG4gMjk4OlxcdFxcdHU4ICp0aW07XFxuIDI5OTpcXHRcXHR1OCB0aW1fbGVuO1xcbiAzMDA6XFx0XFx0Ym9vbCBuZXdfcHNtO1xcbiAzMDE6XFx0XFxuIDMwMjpcXHRcXHQvKiBvbmx5IGJlYWNvbnMgaGF2ZSBhIFRJTSBJRSAqL1xcbiAzMDM6XFx0XFx0aWYgKCFpZWVlODAyMTFfaXNfYmVhY29uKGhkci1cXHUwMDNlZnJhbWVfY29udHJvbCkpXFxuIDMwNDpcXHRcXHRcXHRyZXR1cm47XFxuIDMwNTpcXHRcXG4gMzA2OlxcdFxcdGlmICghcHJpdi1cXHUwMDNlYWlkKVxcbiAzMDc6XFx0XFx0XFx0cmV0dXJuO1xcbiAzMDg6XFx0XFxuIDMwOTpcXHRcXHQvKiBvbmx5IGNvbnNpZGVyIGJlYWNvbnMgZnJvbSB0aGUgYXNzb2NpYXRlZCBCU1NJRCAqL1xcbiAzMTA6XFx0XFx0aWYgKCFldGhlcl9hZGRyX2VxdWFsXzY0Yml0cyhoZHItXFx1MDAzZWFkZHIzLCBwcml2LVxcdTAwM2Vic3NpZCkpXFxuIDMxMTpcXHRcXHRcXHRyZXR1cm47XFxuIDMxMjpcXHRcXG4gMzEzOlxcdFxcdHRpbSA9IHA1NF9maW5kX2llKHNrYiwgV0xBTl9FSURfVElNKTtcXG4gMzE0OlxcdFxcdGlmICghdGltKVxcbiAzMTU6XFx0XFx0XFx0cmV0dXJuO1xcbiAzMTY6XFx0XFxuIDMxNzpcXHRcXHR0aW1fbGVuID0gdGltWzFdO1xcbiAzMTg6XFx0XFx0dGltX2llID0gKHN0cnVjdCBpZWVlODAyMTFfdGltX2llICopIFxcdTAwMjZ0aW1bMl07XFxuIDMxOTpcXHRcXG4gMzIwOlxcdFxcdG5ld19wc20gPSBpZWVlODAyMTFfY2hlY2tfdGltKHRpbV9pZSwgdGltX2xlbiwgcHJpdi1cXHUwMDNlYWlkLCBmYWxzZSk7XFxuIDMyMTpcXHRcXHRpZiAobmV3X3BzbSAhPSBwcml2LVxcdTAwM2Vwb3dlcnNhdmVfb3ZlcnJpZGUpIHtcXG4gMzIyOlxcdFxcdFxcdHByaXYtXFx1MDAzZXBvd2Vyc2F2ZV9vdmVycmlkZSA9IG5ld19wc207XFxuIDMyMzpcXHRcXHRcXHRwNTRfc2V0X3BzKHByaXYpO1xcbiAzMjQ6XFx0XFx0fVxcbiAzMjU6XFx0fVxcbiAzMjY6XFx0XFxuIDMyNzpcXHRzdGF0aWMgaW50IHA1NF9yeF9kYXRhKHN0cnVjdCBwNTRfY29tbW9uICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiAzMjg6XFx0e1xcbiAzMjk6XFx0XFx0c3RydWN0IHA1NF9yeF9kYXRhICpoZHIgPSAoc3RydWN0IHA1NF9yeF9kYXRhICopIHNrYi1cXHUwMDNlZGF0YTtcXG4gMzMwOlxcdFxcdHN0cnVjdCBpZWVlODAyMTFfcnhfc3RhdHVzICpyeF9zdGF0dXMgPSBJRUVFODAyMTFfU0tCX1JYQ0Ioc2tiKTtcXG4gMzMxOlxcdFxcdHUxNiBmcmVxID0gbGUxNl90b19jcHUoaGRyLVxcdTAwM2VmcmVxKTtcXG4gMzMyOlxcdFxcdHNpemVfdCBoZWFkZXJfbGVuID0gc2l6ZW9mKCpoZHIpO1xcbiAzMzM6XFx0XFx0dTMyIHRzZjMyO1xcbiAzMzQ6XFx0XFx0X19sZTE2IGZjO1xcbiAzMzU6XFx0XFx0dTggcmF0ZSA9IGhkci1cXHUwMDNlcmF0ZSBcXHUwMDI2IDB4ZjtcXG4gMzM2OlxcdFxcbiAzMzc6XFx0XFx0LypcXG4gMzM4OlxcdFxcdCAqIElmIHRoZSBkZXZpY2UgaXMgaW4gYSB1bnNwZWNpZmllZCBzdGF0ZSB3ZSBoYXZlIHRvXFxuIDMzOTpcXHRcXHQgKiBpZ25vcmUgYWxsIGRhdGEgZnJhbWVzLiBFbHNlIHdlIGNvdWxkIGVuZCB1cCB3aXRoIGFcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDc6MjI6MTguMTQ0NzUzNjg5WiIsIlNlcSI6NDEsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIwMTcxNTkxMzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYSBmaXJzdC1wZXJzb24gc3VtbWFyeSwga2VlcGluZyBpbiBtaW5kIG15IGV4cGVydGlzZTpcblxuKipFeGFtaW5pbmcgdGhlIENhbGwgU2l0ZXMgb2YgYHA1NF9iZWFjb25fZm9ybWF0X2llX3RpbWAqKlxuXG5BbHJpZ2h0LCBzbyBJJ20gdGhpbmtpbmcsIFwiV2UgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBgcDU0X2JlYWNvbl9mb3JtYXRfaWVfdGltYCBpcyBhY3R1YWxseSBiZWluZyB1c2VkIHdpdGhpbiB0aGUgc3lzdGVtLlwiIEl0J3Mgb25lIHRoaW5nIHRvIGhhdmUgYSBmdW5jdGlvbiBkZWZpbmVkLCBidXQgaXRzIHJlYWwgYmVoYXZpb3IgaXMgZGljdGF0ZWQgYnkgKndoZXJlKiBhbmQgKmhvdyogaXQncyBjYWxsZWQuIFRvIGZ1bGx5IGdyYXNwIGl0cyBpbXBhY3Qgb24gdGhlIGxhcmdlciBzeXN0ZW0ncyBvcGVyYXRpb24sIGVzcGVjaWFsbHkgaW4gdGhlIGNvbnRleHQgb2YgYmVhY29uIGZvcm1hdHRpbmcgYW5kIFRJTSBtYW5hZ2VtZW50LCBJIG5lZWQgdG8gc2VlIHRoZSBjb250ZXh0cyBpbiBgbWFpbi5jYCB3aGVyZSBpdCBpcyBjYWxsZWQuIFRoYXQgd2lsbCBwcm92aWRlIGluc2lnaHQgaW50byBob3cgdGhlIGZ1bmN0aW9uIGlzIHVzZWQgaW4gcmVsYXRpb24gdG8gb3RoZXIgZnVuY3Rpb25zIGFuZCB2YXJpYWJsZXMsIHNwZWNpZmljYWxseSBpbiB0aGUgbWFpbiBsb29wIG9mIHRoZSBzb2Z0d2FyZSwgYW5kIHVuZGVyc3RhbmQgdGhlIGZsb3cgb2YgZXhlY3V0aW9uIGFuZCBob3cgdGhlIGZ1bmN0aW9uIGFmZmVjdHMgb3RoZXIgc29mdHdhcmUgcHJvY2Vzc2VzLiBUaGlzIGlzIGtleSB0byBidWlsZGluZyBhIGNvbXByZWhlbnNpdmUgbWVudGFsIG1vZGVsIG9mIGl0cyByb2xlLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgY29kZSBhbmQgbG9jYXRlIHRob3NlIGNhbGxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTUyMSwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDc6MjI6MjAuMTYxOTE2MzAyWiIsIlNlcSI6NDIsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI5ODA3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDExMCxcbiAgXCJMaW5lQ291bnRcIjogNjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDExMDpcXHRcXHRkdGltX3BlcmlvZCA9IHRpbVszXTtcXG4gMTExOlxcdFxcdG5leHQgPSB0aW0gKyAyICsgZHRpbV9sZW47XFxuIDExMjpcXHRcXG4gMTEzOlxcdFxcdGlmIChkdGltX2xlbiBcXHUwMDNjIDMpXFxuIDExNDpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gMTE1OlxcdFxcbiAxMTY6XFx0XFx0bWVtbW92ZSh0aW0sIG5leHQsIHNrYl90YWlsX3BvaW50ZXIoc2tiKSAtIG5leHQpO1xcbiAxMTc6XFx0XFx0dGltID0gc2tiX3RhaWxfcG9pbnRlcihza2IpIC0gKGR0aW1fbGVuICsgMik7XFxuIDExODpcXHRcXG4gMTE5OlxcdFxcdC8qIGFkZCB0aGUgZHVtbXkgYXQgdGhlIGVuZCAqL1xcbiAxMjA6XFx0XFx0dGltWzBdID0gV0xBTl9FSURfVElNO1xcbiAxMjE6XFx0XFx0dGltWzFdID0gMztcXG4gMTIyOlxcdFxcdHRpbVsyXSA9IDA7XFxuIDEyMzpcXHRcXHR0aW1bM10gPSBkdGltX3BlcmlvZDtcXG4gMTI0OlxcdFxcdHRpbVs0XSA9IDA7XFxuIDEyNTpcXHRcXG4gMTI2OlxcdFxcdGlmIChkdGltX2xlbiBcXHUwMDNlIDMpXFxuIDEyNzpcXHRcXHRcXHRza2JfdHJpbShza2IsIHNrYi1cXHUwMDNlbGVuIC0gKGR0aW1fbGVuIC0gMykpO1xcbiAxMjg6XFx0XFxuIDEyOTpcXHRcXHRyZXR1cm4gMDtcXG4gMTMwOlxcdH1cXG4gMTMxOlxcdFxcbiAxMzI6XFx0c3RhdGljIGludCBwNTRfYmVhY29uX3VwZGF0ZShzdHJ1Y3QgcDU0X2NvbW1vbiAqcHJpdixcXG4gMTMzOlxcdFxcdFxcdFxcdHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYpXFxuIDEzNDpcXHR7XFxuIDEzNTpcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX3R4X2NvbnRyb2wgY29udHJvbCA9IHsgfTtcXG4gMTM2OlxcdFxcdHN0cnVjdCBza19idWZmICpiZWFjb247XFxuIDEzNzpcXHRcXHRpbnQgcmV0O1xcbiAxMzg6XFx0XFxuIDEzOTpcXHRcXHRiZWFjb24gPSBpZWVlODAyMTFfYmVhY29uX2dldChwcml2LVxcdTAwM2VodywgdmlmLCAwKTtcXG4gMTQwOlxcdFxcdGlmICghYmVhY29uKVxcbiAxNDE6XFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIDE0MjpcXHRcXHRyZXQgPSBwNTRfYmVhY29uX2Zvcm1hdF9pZV90aW0oYmVhY29uKTtcXG4gMTQzOlxcdFxcdGlmIChyZXQpIHtcXG4gMTQ0OlxcdFxcdFxcdGRldl9rZnJlZV9za2JfYW55KGJlYWNvbik7XFxuIDE0NTpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbiAxNDY6XFx0XFx0fVxcbiAxNDc6XFx0XFxuIDE0ODpcXHRcXHQvKlxcbiAxNDk6XFx0XFx0ICogRHVyaW5nIG9wZXJhdGlvbiwgdGhlIGZpcm13YXJlIHRha2VzIGNhcmUgb2YgYmVhY29uaW5nLlxcbiAxNTA6XFx0XFx0ICogVGhlIGRyaXZlciBvbmx5IG5lZWRzIHRvIHVwbG9hZCBhIG5ldyBiZWFjb24gdGVtcGxhdGUsIG9uY2VcXG4gMTUxOlxcdFxcdCAqIHRoZSB0ZW1wbGF0ZSB3YXMgY2hhbmdlZCBieSB0aGUgc3RhY2sgb3IgdXNlcnNwYWNlLlxcbiAxNTI6XFx0XFx0ICpcXG4gMTUzOlxcdFxcdCAqIExNQUMgQVBJIDMuMi4yIGFsc28gc3BlY2lmaWVzIHRoYXQgdGhlIGRyaXZlciBkb2VzIG5vdCBuZWVkXFxuIDE1NDpcXHRcXHQgKiB0byBjYW5jZWwgdGhlIG9sZCBiZWFjb24gdGVtcGxhdGUgYnkgaGFuZCwgaW5zdGVhZCB0aGUgZmlybXdhcmVcXG4gMTU1OlxcdFxcdCAqIHdpbGwgcmVsZWFzZSB0aGUgcHJldmlvdXMgb25lIHRocm91Z2ggdGhlIGZlZWRiYWNrIG1lY2hhbmlzbS5cXG4gMTU2OlxcdFxcdCAqL1xcbiAxNTc6XFx0XFx0cDU0X3R4XzgwMjExKHByaXYtXFx1MDAzZWh3LCBcXHUwMDI2Y29udHJvbCwgYmVhY29uKTtcXG4gMTU4OlxcdFxcdHByaXYtXFx1MDAzZXRzZl9oaWdoMzIgPSAwO1xcbiAxNTk6XFx0XFx0cHJpdi1cXHUwMDNldHNmX2xvdzMyID0gMDtcXG4gMTYwOlxcdFxcbiAxNjE6XFx0XFx0cmV0dXJuIDA7XFxuIDE2MjpcXHR9XFxuIDE2MzpcXHRcXG4gMTY0OlxcdHN0YXRpYyBpbnQgcDU0X3N0YXJ0KHN0cnVjdCBpZWVlODAyMTFfaHcgKmRldilcXG4gMTY1OlxcdHtcXG4gMTY2OlxcdFxcdHN0cnVjdCBwNTRfY29tbW9uICpwcml2ID0gZGV2LVxcdTAwM2Vwcml2O1xcbiAxNjc6XFx0XFx0aW50IGVycjtcXG4gMTY4OlxcdFxcbiAxNjk6XFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2cHJpdi1cXHUwMDNlY29uZl9tdXRleCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA3OjIyOjIwLjE2MjIxNzgwMloiLCJTZXEiOjQzLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo4NDYzNjU2MDAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKktNU0FOIHZzLiBLQVNBTiBBbmFseXNpcyBmb3IgYHA1NF9maW5kX2llYCBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gV2UncmUgbG9va2luZyBhdCBhIGNvZGUgY2hhbmdlIGluIGBwNTRfZmluZF9pZWAgdGhhdCByZW1vdmVzIGEgc2l6ZSBjaGVjay4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHRyYWNlIHRoZSBsb2dpYy4gVGhlIGtleSBmdW5jdGlvbiBpczpcblxuYGBgY1xudTggKnA1NF9maW5kX2llKHN0cnVjdCBza19idWZmICpza2IsIHU4IGllKVxue1xuXHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQgPSAodm9pZCAqKXNrYi1cdTAwM2VkYXRhO1xuXHR1OCAqcG9zLCAqZW5kO1xuXG5cdHBvcyA9ICh1OCAqKW1nbXQtXHUwMDNldS5iZWFjb24udmFyaWFibGU7XG5cdGVuZCA9IHNrYi1cdTAwM2VkYXRhICsgc2tiLVx1MDAzZWxlbjtcblx0d2hpbGUgKHBvcyBcdTAwM2MgZW5kKSB7XG5cdFx0aWYgKHBvcyArIDIgKyBwb3NbMV0gXHUwMDNlIGVuZClcblx0XHRcdHJldHVybiBOVUxMO1xuXG5cdFx0aWYgKHBvc1swXSA9PSBpZSlcblx0XHRcdHJldHVybiBwb3M7XG5cblx0XHRwb3MgKz0gMiArIHBvc1sxXTtcblx0fVxuXHRyZXR1cm4gTlVMTDtcbn1cbmBgYFxuXG5QcmV2aW91c2x5IHRoZXJlIHdhcyBhIGNoZWNrIGBpZiAoc2tiLVx1MDAzZWxlbiBcdTAwM2M9IHNpemVvZihtZ210KSkgcmV0dXJuIE5VTEw7YC4gTm93IGlmIGBza2ItXHUwMDNlbGVuYCBpcyBsZXNzIHRoYW4gdGhlIG9mZnNldCBvZiBgbWdtdC1cdTAwM2V1LmJlYWNvbi52YXJpYWJsZWAgd2l0aGluIHRoZSBgaWVlZTgwMjExX21nbXRgIHN0cnVjdHVyZSwgdGhlIGNhbGN1bGF0aW9uIG9mIGBwb3NgIHdpbGwgbGVhZCB0byBpdCBwb2ludGluZyBiZXlvbmQgYHNrYi1cdTAwM2VkYXRhICsgc2tiLVx1MDAzZWxlbmAgKGkuZS4gb3V0c2lkZSB0aGUgYHNrYmAgYnVmZmVyKSwgYnV0ICpjcnVjaWFsbHkqLCB0aGUgYHdoaWxlIChwb3MgXHUwMDNjIGVuZClgIGNvbmRpdGlvbiBldmFsdWF0ZXMgdG8gZmFsc2UuIFNvLCB0aGUgbG9vcCBkb2Vzbid0IGV4ZWN1dGUgYW5kIGBOVUxMYCBpcyByZXR1cm5lZC4gU28gdGhlcmUncyBubyBkZXJlZmVyZW5jZS5cblxuVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGhlcmUgaXMsIGRvZXMgdGhpcyBwYXRjaCBpbnRyb2R1Y2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzc3VlcyB0aGF0ICpvbmx5KiBLTVNBTiB3b3VsZCBjYXRjaD8gVGhpcyBpcyB3aGVyZSB0aGUgZGlzdGluY3Rpb24gYmV0d2VlbiBLQVNBTiBhbmQgS01TQU4gYmVjb21lcyBpbXBvcnRhbnQuXG5cbktBU0FOIChLZXJuZWwgQWRkcmVzcyBTQU5pdGl6ZXIpIGlzIG15IGdvLXRvIGZvciBkZXRlY3Rpbmcgb3V0LW9mLWJvdW5kcyByZWFkcyBhbmQgd3JpdGVzLiBLTVNBTiAoS2VybmVsIE1lbW9yeSBTQU5pdGl6ZXIpIHNwZWNpYWxpemVzIGluIGRldGVjdGluZyByZWFkcyBvZiAqdW5pbml0aWFsaXplZCogbWVtb3J5LlxuXG5NeSBhbmFseXNpcyBsb29rcyBsaWtlIHRoaXM6XG5cbjEuICAqKk91dC1vZi1Cb3VuZHM6KiogVGhlIHJlbW92ZWQgY2hlY2sgbWVhbnMgaWYgYHNrYi1cdTAwM2VsZW5gIGlzIHNtYWxsLCBgcG9zYCBjYW4gYmUgY2FsY3VsYXRlZCBzdWNoIHRoYXQgaXQgc3RhcnRzIHBhc3QgYHNrYi1cdTAwM2VkYXRhICsgc2tiLVx1MDAzZWxlbmAsIGJ1dCB0aGVyZSBpcyBubyBkZXJlZmVyZW5jZSBhcyBgcG9zIFx1MDAzYyBlbmRgIGlzIGZhbHNlLCBhbmQgdGhlcmVmb3JlIG5vIG91dC1vZi1ib3VuZHMgbWVtb3J5IGFjY2Vzcy4gSWYgYW55LCBLQVNBTiB3b3VsZCBjYXRjaCBpdC4gVGhlIHBvaW50ZXIgYXJpdGhtZXRpYyBpcyB3aXRoaW4gdGhlIGtlcm5lbCdzIGZsYXQgYWRkcmVzcyBzcGFjZSwgc28gaXQncyBhIHBvaW50ZXIgY29tcGFyaXNvbiB3aXRoaW4gdGhlIHNrYidzIGRhdGEgYnVmZmVyLCBzbyB0aGUgc3RhbmRhcmQgS0FTQU4gc2V0dXAgd2lsbCBmaW5kIG91dC1vZi1ib3VuZHMgaGVhcC9zbGFiIGFjY2Vzc2VzLlxuXG4yLiAgKipVbmluaXRpYWxpemVkIE1lbW9yeToqKiBJIG5lZWQgdG8gc3lzdGVtYXRpY2FsbHkgcnVsZSBvdXQgdGhlIGZvdXIgS01TQU4gY3JpdGVyaWE6XG4gICAgKiAgIE5vIGtlcm5lbCBzdHJ1Y3R1cmVzIGFyZSBiZWluZyBzZW50IHRvIHVzZXIgc3BhY2Ugd2hlcmUgaW5pdGlhbGl6YXRpb24gY291bGQgYmUgYW4gaXNzdWUuXG4gICAgKiAgIE5vIGNvbmRpdGlvbmFsIGxvZ2ljIGRlcGVuZHMgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMuIGBza2ItXHUwMDNlbGVuYCBhbmQgYHNrYi1cdTAwM2VkYXRhYCBhcmUgc3RhbmRhcmQsIGluaXRpYWxpemVkIGZpZWxkcy5cbiAgICAqICAgTm8gY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgYXJlIGJlaW5nIGFsbG9jYXRlZCB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcyBtaWdodCBiZSByZWFkIGxhdGVyLlxuICAgICogICBObyBib3VuZHMgY2hlY2tzIGFyZSBiZWluZyBhbHRlcmVkIHRvIGFsbG93IGFjY2VzcyB0byB1bmluaXRpYWxpemVkIGJ5dGVzLiBUaGUgc2tiIGRhdGEgaXMgcmVjZWl2ZWQgcGFja2V0IG9yIGdlbmVyYXRlZCBiZWFjb24gZGF0YSwgc28gaXQncyBpbml0aWFsaXplZC5cblxuVGhlIHBhdGNoICpkb2Vzbid0KiBpbnRyb2R1Y2UgYW55IG9mIHRoZXNlIEtNU0FOIHJpc2tzLiBUaGUgY29kZSBpcyBwYXJzaW5nIGEgbmV0d29yayBwYWNrZXQgKHRoZSBgc2tiYCBkYXRhKSwgd2hpY2ggaXMgaW5pdGlhbGl6ZWQgbWVtb3J5LiBJZiB0aGVyZSB3ZXJlIGlzc3VlcywgdGhleSB3b3VsZCBiZSBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLlxuXG5Ob3csIGxldCdzIGV4cGxpY2l0bHkgYWRkcmVzcyB0aGUgS01TQU4gcnVsZXM6IFRoZSBwYXRjaCBwcmltYXJpbHkgcmlza3Mgb3V0LW9mLWJvdW5kcyBhY2Nlc3MuIFRoZSBleGlzdGluZyBidWZmZXJzIG1hbmlwdWxhdGVkIGFyZSBpbml0aWFsaXplZCBwYWNrZXQgcGF5bG9hZHMuIFN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMgbGlrZSBLQVNBTiBhcmUgc3VmZmljaWVudC4gVGhlcmUncyBubyB1bmluaXRpYWxpemVkIG1lbW9yeSBpbnRyb2R1Y2VkIG9yIGV4cG9zZWQuIFRoZXJlZm9yZSwgYE5lZWRzS01TQU5gIHNob3VsZCBiZSBgZmFsc2VgLlxuXG4qKkluIENvbmNsdXNpb246KiogQSBkZWRpY2F0ZWQgS01TQU4gcnVuIGlzIHVubmVjZXNzYXJ5LiBTdGFuZGFyZCBLQVNBTiB0ZXN0aW5nIGlzIHN1ZmZpY2llbnQgdG8gdmFsaWRhdGUgdGhpcyBwYXRjaC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI3MjYsIk91dHB1dFRva2VucyI6MjY0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI1NSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA3OjIyOjI4LjYyNTg3Njc0NFoiLCJTZXEiOjQ0LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MjcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVtb3ZlcyBhbiBlcnJvbmVvdXMgY2hlY2sgYGlmIChza2ItXFx1MDAzZWxlbiBcXHUwMDNjPSBzaXplb2YobWdtdCkpYCBpbiBgcDU0X2ZpbmRfaWUoKWAgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmNgLlxcblxcbktBU0FOIHZzLiBLTVNBTiBhbmFseXNpczpcXG4xLiBLTVNBTiBhcHBsaWNhYmlsaXR5OiBLTVNBTiBkZXRlY3RzIHVzZSBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSAoc3RhY2svaGVhcC9wYWdlKSBhbmQga2VybmVsLXRvLXVzZXIgaW5mby1sZWFrcy4gVGhpcyBwYXRjaCBkb2VzIG5vdCBhbGxvY2F0ZSBuZXcgdW5pbml0aWFsaXplZCBidWZmZXJzLCBkb2VzIG5vdCBpbnRyb2R1Y2UgdW5pbml0aWFsaXplZCBzdGFjayBvciBoZWFwIHZhcmlhYmxlcywgZG9lcyBub3QgY29weSBrZXJuZWwgZGF0YSB0byB1c2VyIHNwYWNlLCBhbmQgZG9lcyBub3QgYWx0ZXIgbG9naWMgdG8gYnJhbmNoIG9uIHVuaW5pdGlhbGl6ZWQgdmFsdWVzLiBUaGUgc2tiIGJ1ZmZlciBjb250YWlucyByZWNlaXZlZC9jb25zdHJ1Y3RlZCBmcmFtZSBkYXRhLlxcbjIuIEtBU0FOIGFwcGxpY2FiaWxpdHk6IEFueSBwb3RlbnRpYWwgbWVtb3J5IHNhZmV0eSBpc3N1ZSBjYXVzZWQgYnkgcmVtb3ZpbmcgdGhlIGNoZWNrIChlLmcuLCBpZiBhIG1hbGZvcm1lZCBza2Igd2l0aCBhIGxlbmd0aCBzbWFsbGVyIHRoYW4gdGhlIGJlYWNvbiBoZWFkZXIgd2VyZSBwYXJzZWQgYW5kIGxlZCB0byBhbiBvdXQtb2YtYm91bmRzIHJlYWQpIHdvdWxkIHJlcHJlc2VudCBhbiBvdXQtb2YtYm91bmRzIGJ1ZmZlciBhY2Nlc3MsIHdoaWNoIGlzIHRyYWNrZWQgYW5kIGRldGVjdGVkIGJ5IEtBU0FOLlxcblxcblRoZXJlZm9yZSwgdGhpcyBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcywgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlbW92ZXMgYW4gZXJyb25lb3VzIGNoZWNrIGBpZiAoc2tiLVxcdTAwM2VsZW4gXFx1MDAzYz0gc2l6ZW9mKG1nbXQpKWAgaW4gYHA1NF9maW5kX2llKClgIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jYC5cXG5cXG5LQVNBTiB2cy4gS01TQU4gYW5hbHlzaXM6XFxuMS4gS01TQU4gYXBwbGljYWJpbGl0eTogS01TQU4gZGV0ZWN0cyB1c2Ugb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgKHN0YWNrL2hlYXAvcGFnZSkgYW5kIGtlcm5lbC10by11c2VyIGluZm8tbGVha3MuIFRoaXMgcGF0Y2ggZG9lcyBub3QgYWxsb2NhdGUgbmV3IHVuaW5pdGlhbGl6ZWQgYnVmZmVycywgZG9lcyBub3QgaW50cm9kdWNlIHVuaW5pdGlhbGl6ZWQgc3RhY2sgb3IgaGVhcCB2YXJpYWJsZXMsIGRvZXMgbm90IGNvcHkga2VybmVsIGRhdGEgdG8gdXNlciBzcGFjZSwgYW5kIGRvZXMgbm90IGFsdGVyIGxvZ2ljIHRvIGJyYW5jaCBvbiB1bmluaXRpYWxpemVkIHZhbHVlcy4gVGhlIHNrYiBidWZmZXIgY29udGFpbnMgcmVjZWl2ZWQvY29uc3RydWN0ZWQgZnJhbWUgZGF0YS5cXG4yLiBLQVNBTiBhcHBsaWNhYmlsaXR5OiBBbnkgcG90ZW50aWFsIG1lbW9yeSBzYWZldHkgaXNzdWUgY2F1c2VkIGJ5IHJlbW92aW5nIHRoZSBjaGVjayAoZS5nLiwgaWYgYSBtYWxmb3JtZWQgc2tiIHdpdGggYSBsZW5ndGggc21hbGxlciB0aGFuIHRoZSBiZWFjb24gaGVhZGVyIHdlcmUgcGFyc2VkIGFuZCBsZWQgdG8gYW4gb3V0LW9mLWJvdW5kcyByZWFkKSB3b3VsZCByZXByZXNlbnQgYW4gb3V0LW9mLWJvdW5kcyBidWZmZXIgYWNjZXNzLCB3aGljaCBpcyB0cmFja2VkIGFuZCBkZXRlY3RlZCBieSBLQVNBTi5cXG5cXG5UaGVyZWZvcmUsIHRoaXMgY2hhbmdlIGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MsIGFuZCBhIGRlZGljYXRlZCBLTVNBTiBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowlvp97[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-07 06:38:07 +0000 UTC FinishedAt: 2026-09-07 07:22:30 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "1b60ed34f712e9f606d80951f1586f4274ebadf1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "P54_COMMON", "P54_USB", "MAC80211", "WLAN_VENDOR_INTERSIL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "1b60ed34f712e9f606d80951f1586f4274ebadf1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "P54_COMMON", "P54_USB", "MAC80211", "WLAN_VENDOR_INTERSIL" ], "series_id": "774bcb31-efd1-4cba-9346-18d2149d097d" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "p54_find_ie", "p54_beacon_format_ie_tim", "p54_pspoll_workaround" ], "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+CgkJCTx0ZD4yMDI2LzA5LzA3IDA3OjIwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1A1NF9DT01NT04mIzM0OywKICAgICYjMzQ7UDU0X1VTQiYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtXTEFOX1ZFTkRPUl9JTlRFUlNJTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3A1NF9maW5kX2llJiMzNDssCiAgICAmIzM0O3A1NF9iZWFjb25fZm9ybWF0X2llX3RpbSYjMzQ7LAogICAgJiMzNDtwNTRfcHNwb2xsX3dvcmthcm91bmQmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZW1vdmVzIGFuIGVycm9uZW91cyBjaGVjayBgaWYgKHNrYi1cdTAwM2VsZW4gXHUwMDNjPSBzaXplb2YobWdtdCkpYCBpbiBgcDU0X2ZpbmRfaWUoKWAgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmNgLlxuXG5LQVNBTiB2cy4gS01TQU4gYW5hbHlzaXM6XG4xLiBLTVNBTiBhcHBsaWNhYmlsaXR5OiBLTVNBTiBkZXRlY3RzIHVzZSBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSAoc3RhY2svaGVhcC9wYWdlKSBhbmQga2VybmVsLXRvLXVzZXIgaW5mby1sZWFrcy4gVGhpcyBwYXRjaCBkb2VzIG5vdCBhbGxvY2F0ZSBuZXcgdW5pbml0aWFsaXplZCBidWZmZXJzLCBkb2VzIG5vdCBpbnRyb2R1Y2UgdW5pbml0aWFsaXplZCBzdGFjayBvciBoZWFwIHZhcmlhYmxlcywgZG9lcyBub3QgY29weSBrZXJuZWwgZGF0YSB0byB1c2VyIHNwYWNlLCBhbmQgZG9lcyBub3QgYWx0ZXIgbG9naWMgdG8gYnJhbmNoIG9uIHVuaW5pdGlhbGl6ZWQgdmFsdWVzLiBUaGUgc2tiIGJ1ZmZlciBjb250YWlucyByZWNlaXZlZC9jb25zdHJ1Y3RlZCBmcmFtZSBkYXRhLlxuMi4gS0FTQU4gYXBwbGljYWJpbGl0eTogQW55IHBvdGVudGlhbCBtZW1vcnkgc2FmZXR5IGlzc3VlIGNhdXNlZCBieSByZW1vdmluZyB0aGUgY2hlY2sgKGUuZy4sIGlmIGEgbWFsZm9ybWVkIHNrYiB3aXRoIGEgbGVuZ3RoIHNtYWxsZXIgdGhhbiB0aGUgYmVhY29uIGhlYWRlciB3ZXJlIHBhcnNlZCBhbmQgbGVkIHRvIGFuIG91dC1vZi1ib3VuZHMgcmVhZCkgd291bGQgcmVwcmVzZW50IGFuIG91dC1vZi1ib3VuZHMgYnVmZmVyIGFjY2Vzcywgd2hpY2ggaXMgdHJhY2tlZCBhbmQgZGV0ZWN0ZWQgYnkgS0FTQU4uXG5cblRoZXJlZm9yZSwgdGhpcyBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcywgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgZnJhbWUgdmFsaWRhdGlvbiBsb2dpYyBpbiBwNTRfZmluZF9pZSgpIGJ5IHJlbW92aW5nIGEgbGVuZ3RoIGNoZWNrIHByaW9yIHRvIHBhcnNpbmcgaW5mb3JtYXRpb24gZWxlbWVudHMuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgdmlhIGVtdWxhdGVkIFVTQiBkZXZpY2VzIChwNTR1c2IpIGFuZCBtYWM4MDIxMSBiZWFjb24vZnJhbWUgaGFuZGxpbmcuIEZ1enppbmcgaXMgd2FycmFudGVkIHRvIGNoZWNrIGZvciBvdXQtb2YtYm91bmRzIHJlYWRzIG9yIHJlZ3Jlc3Npb25zIHdpdGggdHJ1bmNhdGVkIHBhY2tldHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDc6MjA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAyOTNjOGU5ZGE3YjQ2ODVjNGVkNzM5N2QxYjBlYTAxMTgyNDg3MzI2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBTZXAgNyAwNzoyMDozNyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uY1xuaW5kZXggNTdhNjIxMDhjYmMzNS4uOGY5MjFkYzRlY2QzNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmNcbkBAIC03Niw5ICYjNDM7NzYsNiBAQCB1OCAqcDU0X2ZpbmRfaWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTggaWUpXG4gXHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQgPSAodm9pZCAqKXNrYi1cdTAwM2VkYXRhO1xuIFx0dTggKnBvcywgKmVuZDtcbiBcbi1cdGlmIChza2ItXHUwMDNlbGVuIFx1MDAzYz0gc2l6ZW9mKG1nbXQpKVxuLVx0XHRyZXR1cm4gTlVMTDtcbi1cbiBcdHBvcyA9ICh1OCAqKW1nbXQtXHUwMDNldS5iZWFjb24udmFyaWFibGU7XG4gXHRlbmQgPSBza2ItXHUwMDNlZGF0YSAmIzQzOyBza2ItXHUwMDNlbGVuO1xuIFx0d2hpbGUgKHBvcyBcdTAwM2MgZW5kKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDc6MjA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UDU0X0NPTU1PTiYjMzQ7LAogICAgJiMzNDtQNTRfVVNCJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O1dMQU5fVkVORE9SX0lOVEVSU0lMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cDU0X2ZpbmRfaWUmIzM0OywKICAgICYjMzQ7cDU0X2JlYWNvbl9mb3JtYXRfaWVfdGltJiMzNDssCiAgICAmIzM0O3A1NF9wc3BvbGxfd29ya2Fyb3VuZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgZnJhbWUgdmFsaWRhdGlvbiBsb2dpYyBpbiBwNTRfZmluZF9pZSgpIGJ5IHJlbW92aW5nIGEgbGVuZ3RoIGNoZWNrIHByaW9yIHRvIHBhcnNpbmcgaW5mb3JtYXRpb24gZWxlbWVudHMuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgdmlhIGVtdWxhdGVkIFVTQiBkZXZpY2VzIChwNTR1c2IpIGFuZCBtYWM4MDIxMSBiZWFjb24vZnJhbWUgaGFuZGxpbmcuIEZ1enppbmcgaXMgd2FycmFudGVkIHRvIGNoZWNrIGZvciBvdXQtb2YtYm91bmRzIHJlYWRzIG9yIHJlZ3Jlc3Npb25zIHdpdGggdHJ1bmNhdGVkIHBhY2tldHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAyOTNjOGU5ZGE3YjQ2ODVjNGVkNzM5N2QxYjBlYTAxMTgyNDg3MzI2CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBTZXAgNyAwNzoyMDozNyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jCmluZGV4IDU3YTYyMTA4Y2JjMzUuLjhmOTIxZGM0ZWNkMzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYwpAQCAtNzYsOSAmIzQzOzc2LDYgQEAgdTggKnA1NF9maW5kX2llKHN0cnVjdCBza19idWZmICpza2IsIHU4IGllKQogCXN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdCA9ICh2b2lkICopc2tiLSZndDtkYXRhOwogCXU4ICpwb3MsICplbmQ7CiAKLQlpZiAoc2tiLSZndDtsZW4gJmx0Oz0gc2l6ZW9mKG1nbXQpKQotCQlyZXR1cm4gTlVMTDsKLQogCXBvcyA9ICh1OCAqKW1nbXQtJmd0O3UuYmVhY29uLnZhcmlhYmxlOwogCWVuZCA9IHNrYi0mZ3Q7ZGF0YSAmIzQzOyBza2ItJmd0O2xlbjsKIAl3aGlsZSAocG9zICZsdDsgZW5kKSB7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA3OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5MTEKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiA0NDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXZhbHVhdGluZyBhIEtlcm5lbCBQYXRjaCBmb3IgRnV6emluZyB3aXRoIFN5emthbGxlcioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZGVjaWRlIGlmIHRoaXMga2VybmVsIHBhdGNoIGlzIHdvcnRoIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuIEZpcnN0LCBsZXQmIzM5O3MgZXN0YWJsaXNoIGEgZnJhbWV3b3JrLiBUaGlzIHRhc2sgaXMgZXNzZW50aWFsbHkgYSB0cmlhZ2U7IGRldGVybWluaW5nIHdoZXRoZXIgd2Ugc2hvdWxkIGludmVzdCByZXNvdXJjZXMgaW4gZnV6emluZywgYW5kIGlmIHNvLCBleHRyYWN0aW5nIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9uIGFuZCBzeW1ib2xzLiBUaGUgc2V2ZXJpdHk/IEJlbmlnbiwgUUEsIG9yIERlZmVuc2UuIE5vdGhpbmcgY3JpdGljYWwgaGVyZSwganVzdCB0cnlpbmcgdG8gaW1wcm92ZSBzeXN0ZW0gcm9idXN0bmVzcy4KCk5vdywgbGV0JiMzOTtzIGRpc3NlY3QgdGhlIHBhdGNoIGl0c2VsZi4gSXQgbG9va3MgbGlrZSBhIGNvbW1pdCByZW1vdmluZyBhIGNoZWNrLCBzcGVjaWZpY2FsbHksIGEgbGVuZ3RoIGNoZWNrIGluIGBwNTRfZmluZF9pZWAgd2l0aGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jYC4gSXQmIzM5O3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgZWxpbWluYXRpbmcgYW4gYGlmIChza2ItJmd0O2xlbiAmbHQ7PSBzaXplb2YobWdtdCkpYCBjb25kaXRpb24uCgpIb2xkIG9uIGEgbWludXRlLCBJIGNhbiYjMzk7dCBqdW1wIHRvIGNvbmNsdXNpb25zIGp1c3QgeWV0LiBJIG5lZWQgbW9yZSBjb250ZXh0LiBJIGhhdmUgdG8gdW5kZXJzdGFuZCB0aGUgYmlnZ2VyIHBpY3R1cmUgYmVmb3JlIG1ha2luZyBhIHJlY29tbWVuZGF0aW9uLiBMZXQmIzM5O3MgZGlnIGRlZXBlciBpbnRvIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jYC4gV2hlcmUgaXMgYHA1NF9maW5kX2llYCB1c2VkPyBXaGljaCBkZXZpY2VzIHV0aWxpemUgdGhlIGBwNTRgIGRyaXZlcj8gSSBuZWVkIHRvIGtub3cgaWYgdGhpcyBhcmVhIGlzIGFjY2Vzc2libGUgdGhyb3VnaCB0aGUgdmlydHVhbGl6YXRpb24gdGhhdCBzeXprYWxsZXIgdGhyaXZlcyBvbi4KCklzIHA1NCByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVT8gRG9lcyBpdCBwbGF5IG5pY2Ugd2l0aCBVU0IgZ2FkZ2V0IGVtdWxhdGlvbiwgbWFjODAyMTEsIG9yIGh3c2ltPyBDYW4gd2UgbGV2ZXJhZ2UgVVNCIGVtdWxhdGlvbiB0ZWNobmlxdWVzIHdpdGhpbiBzeXprYWxsZXIsIHN1Y2ggYXMgdmhjaSwgcmF3LWdhZGdldCwgb3IgdGhlIHVzYi1mdXp6ZXI/CgpSaWdodCwgdGltZSB0byBnZXQgdG8gd29yay4gSSYjMzk7bGwgdXRpbGl6ZSBteSBncmVwcGVyIGFuZCByZWFkLWZpbGUgdG9vbHMuIExldCYjMzk7cyBzZWUgd2hhdCB0aGV5IGNhbiB0ZWxsIG1lLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA3OjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3A1NF9maW5kX2llJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg9NTU0PXN0cnVjdCBwNTRfcnNzaV9kYl9lbnRyeSAqcDU0X3Jzc2lfZmluZChzdHJ1Y3QgcDU0X2NvbW1vbiAqcCwgY29uc3QgdTE2IGZyZXEpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmgtNTU2LS8qIHV0aWxpdHkgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6NTU3OnU4ICpwNTRfZmluZF9pZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1OCBpZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oLTU1OC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jPTY2PXN0YXRpYyBpbnQgcDU0X3NldF90aW0oc3RydWN0IGllZWU4MDIxMV9odyAqZGV2LCBzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmMtNzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jOjc0OnU4ICpwNTRfZmluZF9pZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1OCBpZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmMtNzUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmM9OTM9c3RhdGljIGludCBwNTRfYmVhY29uX2Zvcm1hdF9pZV90aW0oc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jLTEwNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmM6MTA1Olx0dGltID0gcDU0X2ZpbmRfaWUoc2tiLCBXTEFOX0VJRF9USU0pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYy0xMDYtXHRpZiAoIXRpbSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jPTI5ND1zdGF0aWMgdm9pZCBwNTRfcHNwb2xsX3dvcmthcm91bmQoc3RydWN0IHA1NF9jb21tb24gKnByaXYsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYy0zMTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jOjMxMzpcdHRpbSA9IHA1NF9maW5kX2llKHNrYiwgV0xBTl9FSURfVElNKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmMtMzE0LVx0aWYgKCF0aW0pXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDc6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDM1MgoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqRGl2aW5nIGludG8gdGhlIHA1NCBEcml2ZXImIzM5O3MgQ29yZSoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGhhcHBlbmluZyBhcm91bmQgbGluZSA3NCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uY2AuIE15IGltbWVkaWF0ZSBnb2FsIGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgdGhhdCBzcGVjaWZpYyBsaW5lIG9mIGNvZGUuIEl0IGxvb2tzIGxpa2Ugc29tZXRoaW5nIHJlbGF0ZWQgdG8gdGhlIEludGVyc2lsIGNoaXBzZXQuIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayB3aGF0IGZ1bmN0aW9uIHRoaXMgbGluZSBpcyBpbiwgYW5kIHRoZW4gZXhwbG9yZSBhbnkgY2FsbGVycyB0byB0aGlzIGZ1bmN0aW9uLiBJIGV4cGVjdCBsaW5lIDc0IHdpbGwgYmUgcGFydCBvZiBhbiBpbXBvcnRhbnQgY2FsbCBzZXF1ZW5jZS4gSXQgaXMgbGlrZWx5IHRoZSBrZXJuZWwgaXMgYWNjZXNzaW5nIGluZm9ybWF0aW9uIHJlbGV2YW50IHRvIG5ldHdvcmsgZHJpdmVycy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGF0IGxpbmUgZG9lcyBhbmQgd2hlcmUgdGhlIGRhdGEgaXQmIzM5O3Mgb3BlcmF0aW5nIG9uIG9yaWdpbmF0ZXMuIFRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA3OjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDYwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDYwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgNjA6XHRcdFx0YnJlYWs7XG4gIDYxOlx0XHRkZWZhdWx0OlxuICA2MjpcdFx0XHRicmVhaztcbiAgNjM6XHRcdH1cbiAgNjQ6XHR9XG4gIDY1Olx0XG4gIDY2Olx0c3RhdGljIGludCBwNTRfc2V0X3RpbShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpkZXYsIHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsXG4gIDY3Olx0XHRcdFx0Ym9vbCBzZXQpXG4gIDY4Olx0e1xuICA2OTpcdFx0c3RydWN0IHA1NF9jb21tb24gKnByaXYgPSBkZXYtXHUwMDNlcHJpdjtcbiAgNzA6XHRcbiAgNzE6XHRcdHJldHVybiBwNTRfdXBkYXRlX2JlYWNvbl90aW0ocHJpdiwgc3RhLVx1MDAzZWFpZCwgc2V0KTtcbiAgNzI6XHR9XG4gIDczOlx0XG4gIDc0Olx0dTggKnA1NF9maW5kX2llKHN0cnVjdCBza19idWZmICpza2IsIHU4IGllKVxuICA3NTpcdHtcbiAgNzY6XHRcdHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdCA9ICh2b2lkICopc2tiLVx1MDAzZWRhdGE7XG4gIDc3Olx0XHR1OCAqcG9zLCAqZW5kO1xuICA3ODpcdFxuICA3OTpcdFx0cG9zID0gKHU4ICopbWdtdC1cdTAwM2V1LmJlYWNvbi52YXJpYWJsZTtcbiAgODA6XHRcdGVuZCA9IHNrYi1cdTAwM2VkYXRhICYjNDM7IHNrYi1cdTAwM2VsZW47XG4gIDgxOlx0XHR3aGlsZSAocG9zIFx1MDAzYyBlbmQpIHtcbiAgODI6XHRcdFx0aWYgKHBvcyAmIzQzOyAyICYjNDM7IHBvc1sxXSBcdTAwM2UgZW5kKVxuICA4MzpcdFx0XHRcdHJldHVybiBOVUxMO1xuICA4NDpcdFxuICA4NTpcdFx0XHRpZiAocG9zWzBdID09IGllKVxuICA4NjpcdFx0XHRcdHJldHVybiBwb3M7XG4gIDg3Olx0XG4gIDg4Olx0XHRcdHBvcyAmIzQzOz0gMiAmIzQzOyBwb3NbMV07XG4gIDg5Olx0XHR9XG4gIDkwOlx0XHRyZXR1cm4gTlVMTDtcbiAgOTE6XHR9XG4gIDkyOlx0XG4gIDkzOlx0c3RhdGljIGludCBwNTRfYmVhY29uX2Zvcm1hdF9pZV90aW0oc3RydWN0IHNrX2J1ZmYgKnNrYilcbiAgOTQ6XHR7XG4gIDk1Olx0XHQvKlxuICA5NjpcdFx0ICogdGhlIGdvb2QgZXhjdXNlIGZvciB0aGlzIG1lc3MgaXMgLi4uIHRoZSBmaXJtd2FyZS5cbiAgOTc6XHRcdCAqIFRoZSBkdW1teSBUSU0gTVVTVCBiZSBhdCB0aGUgZW5kIG9mIHRoZSBiZWFjb24gZnJhbWUsXG4gIDk4Olx0XHQgKiBiZWNhdXNlIGl0JiMzOTtsbCBiZSBvdmVyd3JpdHRlbiFcbiAgOTk6XHRcdCAqL1xuIDEwMDpcdFx0dTggKnRpbTtcbiAxMDE6XHRcdHU4IGR0aW1fbGVuO1xuIDEwMjpcdFx0dTggZHRpbV9wZXJpb2Q7XG4gMTAzOlx0XHR1OCAqbmV4dDtcbiAxMDQ6XHRcbiAxMDU6XHRcdHRpbSA9IHA1NF9maW5kX2llKHNrYiwgV0xBTl9FSURfVElNKTtcbiAxMDY6XHRcdGlmICghdGltKVxuIDEwNzpcdFx0XHRyZXR1cm4gMDtcbiAxMDg6XHRcbiAxMDk6XHRcdGR0aW1fbGVuID0gdGltWzFdO1xuIDExMDpcdFx0ZHRpbV9wZXJpb2QgPSB0aW1bM107XG4gMTExOlx0XHRuZXh0ID0gdGltICYjNDM7IDIgJiM0MzsgZHRpbV9sZW47XG4gMTEyOlx0XG4gMTEzOlx0XHRpZiAoZHRpbV9sZW4gXHUwMDNjIDMpXG4gMTE0Olx0XHRcdHJldHVybiAtRUlOVkFMO1xuIDExNTpcdFxuIDExNjpcdFx0bWVtbW92ZSh0aW0sIG5leHQsIHNrYl90YWlsX3BvaW50ZXIoc2tiKSAtIG5leHQpO1xuIDExNzpcdFx0dGltID0gc2tiX3RhaWxfcG9pbnRlcihza2IpIC0gKGR0aW1fbGVuICYjNDM7IDIpO1xuIDExODpcdFxuIDExOTpcdFx0LyogYWRkIHRoZSBkdW1teSBhdCB0aGUgZW5kICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDc6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTQwNQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDUxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV4YW1pbmluZyB0aGUgcDU0IERyaXZlciBMYW5kc2NhcGUqKgoKT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgcDU0IGRyaXZlciBzaXR1YXRpb24uIExldCYjMzk7cyBzdGFydCB3aXRoIHRoZSBvYnZpb3VzOiB3aGF0JiMzOTtzICphY3R1YWxseSogdGhlcmU/IEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBkcmlsbCBkb3duIGludG8gdGhlIGtlcm5lbCBzb3VyY2UgdG8gZ2V0IGEgZ29vZCBvdmVydmlldy4gSSYjMzk7bGwgY2hlY2sgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9LY29uZmlnYCDigJMgdGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMuIFRoZW4sIEkmIzM5O2xsIGltbWVkaWF0ZWx5IGZvbGxvdyB0aGF0IHVwIHdpdGggYSBsb29rIGF0IGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvTWFrZWZpbGVgLiBUaGUgbWFrZWZpbGUgd2lsbCBzaG93IG1lIHRoZSBidWlsZCBwcm9jZXNzIGFuZCB3aGF0IHNvdXJjZSBmaWxlcyBhcmUgaW52b2x2ZWQuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBxdWljaywgY29tcHJlaGVuc2l2ZSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBwNTQgZHJpdmVyJiMzOTtzIHN0cnVjdHVyZSBhbmQgaG93IGl0IGZpdHMgaW50byB0aGUgYnJvYWRlciBrZXJuZWwgZW52aXJvbm1lbnQuIFRoYXQgaW5mb3JtYXRpb24sIGhvcGVmdWxseSwgd2lsbCBiZSB3aGF0IEkgbmVlZCB0byBzdGFydC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwNzoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDsuKiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvTWFrZWZpbGU6MTojIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvTWFrZWZpbGU6MjpwNTRjb21tb24tb2Jqc1x0XHRcdDo9IGVlcHJvbS5vIGZ3aW8ubyB0eHJ4Lm8gbWFpbi5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvTWFrZWZpbGU6MzpwNTRjb21tb24tJChDT05GSUdfUDU0X0xFRFMpXHQmIzQzOz0gbGVkLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9NYWtlZmlsZTo0OlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L01ha2VmaWxlOjU6b2JqLSQoQ09ORklHX1A1NF9DT01NT04pXHQmIzQzOz0gcDU0Y29tbW9uLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19QNTRfVVNCKVx0XHQmIzQzOz0gcDU0dXNiLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9NYWtlZmlsZTo3Om9iai0kKENPTkZJR19QNTRfUENJKVx0XHQmIzQzOz0gcDU0cGNpLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9NYWtlZmlsZTo4Om9iai0kKENPTkZJR19QNTRfU1BJKVx0XHQmIzQzOz0gcDU0c3BpLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwNzoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1OTYwCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZToKCioqSW52ZXN0aWdhdGluZyBVU0IgU3VwcG9ydCBpbiB0aGUgcDU0IFdpcmVsZXNzIERyaXZlcioqCgpPa2F5LCBzbyB0aGUgZG9jdW1lbnRhdGlvbiBtZW50aW9ucyB0aGF0IHA1NCBzdXBwb3J0cyBVU0IsIHNwZWNpZmljYWxseSB3aXRoIGBDT05GSUdfUDU0X1VTQmAuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGRpZyBpbnRvIHRoZSBrZXJuZWwgc291cmNlIGFuZCB2ZXJpZnkgdGhpcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IFVTQiBmdW5jdGlvbmFsaXR5IGlzIGludGVncmF0ZWQgd2l0aGluIHRoZSBkcml2ZXIuIExldCYjMzk7cyBzdGFydCB3aXRoIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvS2NvbmZpZ2AuIFRoaXMgY29uZmlndXJhdGlvbiBmaWxlIHNob3VsZCBzaGVkIGxpZ2h0IG9uIGhvdyB0aGUgVVNCIG9wdGlvbiBpcyBkZWZpbmVkLCBpdHMgZGVwZW5kZW5jaWVzLCBhbmQgcGVyaGFwcyB0aGUgdmFyaW91cyBVU0ItcmVsYXRlZCBjb21wb25lbnRzIHdpdGhpbiB0aGUgcDU0IGRyaXZlci4gSSBhbnRpY2lwYXRlIHRoYXQgdGhpcyBLY29uZmlnIGZpbGUgd2lsbCBzcGVjaWZ5IHdoZXJlIHRoZSBVU0Itc3BlY2lmaWMgY29kZSBpcyBsb2NhdGVkIGFuZCBtaWdodCBhbHNvIGdpdmUgbWUgYSBnZW5lcmFsIG92ZXJ2aWV3IG9mIHRoZSBidWlsZCBwcm9jZXNzLiBGcm9tIHRoZXJlIEkmIzM5O2xsIGJlIGFibGUgdG8gY29uZmlybSBvciBkZW55IHRoZSBVU0Igc3VwcG9ydCBjbGFpbXMgaW4gbXkgbWVtb3J5IGFuZCBwcm9jZWVkIHdpdGggZnVydGhlciBpbnZlc3RpZ2F0aW9uLCBpZiBuZWVkZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA3OjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDgwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRjb25maWcgUDU0X0NPTU1PTlxuICAgMzpcdFx0dHJpc3RhdGUgXCYjMzQ7U29mdG1hYyBQcmlzbTU0IHN1cHBvcnRcJiMzNDtcbiAgIDQ6XHRcdGRlcGVuZHMgb24gTUFDODAyMTFcbiAgIDU6XHRcdHNlbGVjdCBGV19MT0FERVJcbiAgIDY6XHRcdHNlbGVjdCBDUkNfQ0NJVFRcbiAgIDc6XHRcdGhlbHBcbiAgIDg6XHRcdCAgVGhpcyBpcyBjb21tb24gY29kZSBmb3IgaXNsMzh4eC9zdGxjNDV4eCBiYXNlZCBtb2R1bGVzLlxuICAgOTpcdFx0ICBUaGlzIG1vZHVsZSBkb2VzIG5vdGhpbmcgYnkgaXRzZWxmIC0gdGhlIFVTQi9QQ0kvU1BJIGZyb250LWVuZHNcbiAgMTA6XHRcdCAgYWxzbyBuZWVkIHRvIGJlIGVuYWJsZWQgaW4gb3JkZXIgdG8gc3VwcG9ydCBhbnkgZGV2aWNlcy5cbiAgMTE6XHRcbiAgMTI6XHRcdCAgVGhlc2UgZGV2aWNlcyByZXF1aXJlIHNvZnRtYWMgZmlybXdhcmUgd2hpY2ggY2FuIGJlIGZvdW5kIGF0XG4gIDEzOlx0XHQgIFx1MDAzY2h0dHBzOi8vd2lyZWxlc3MuZG9jcy5rZXJuZWwub3JnL2VuL2xhdGVzdC9lbi91c2Vycy9kcml2ZXJzL3A1NC5odG1sXHUwMDNlXG4gIDE0Olx0XG4gIDE1Olx0XHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgYSBtb2R1bGUsIGl0JiMzOTtsbCBiZSBjYWxsZWQgcDU0Y29tbW9uLlxuICAxNjpcdFxuICAxNzpcdGNvbmZpZyBQNTRfVVNCXG4gIDE4Olx0XHR0cmlzdGF0ZSBcJiMzNDtQcmlzbTU0IFVTQiBzdXBwb3J0XCYjMzQ7XG4gIDE5Olx0XHRkZXBlbmRzIG9uIFA1NF9DT01NT04gXHUwMDI2XHUwMDI2IFVTQlxuICAyMDpcdFx0c2VsZWN0IENSQzMyXG4gIDIxOlx0XHRoZWxwXG4gIDIyOlx0XHQgIFRoaXMgZHJpdmVyIGlzIGZvciBVU0IgaXNsMzh4eCBiYXNlZCB3aXJlbGVzcyBjYXJkcy5cbiAgMjM6XHRcbiAgMjQ6XHRcdCAgVGhlc2UgZGV2aWNlcyByZXF1aXJlIHNvZnRtYWMgZmlybXdhcmUgd2hpY2ggY2FuIGJlIGZvdW5kIGF0XG4gIDI1Olx0XHQgIFx1MDAzY2h0dHBzOi8vd2lyZWxlc3MuZG9jcy5rZXJuZWwub3JnL2VuL2xhdGVzdC9lbi91c2Vycy9kcml2ZXJzL3A1NC5odG1sXHUwMDNlXG4gIDI2Olx0XG4gIDI3Olx0XHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgYSBtb2R1bGUsIGl0JiMzOTtsbCBiZSBjYWxsZWQgcDU0dXNiLlxuICAyODpcdFxuICAyOTpcdGNvbmZpZyBQNTRfUENJXG4gIDMwOlx0XHR0cmlzdGF0ZSBcJiMzNDtQcmlzbTU0IFBDSSBzdXBwb3J0XCYjMzQ7XG4gIDMxOlx0XHRkZXBlbmRzIG9uIFA1NF9DT01NT04gXHUwMDI2XHUwMDI2IFBDSVxuICAzMjpcdFx0aGVscFxuICAzMzpcdFx0ICBUaGlzIGRyaXZlciBpcyBmb3IgUENJIGlzbDM4eHggYmFzZWQgd2lyZWxlc3MgY2FyZHMuXG4gIDM0Olx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIG1vc3QgZGV2aWNlcyB0aGF0IGFyZSBzdXBwb3J0ZWQgYnkgdGhlXG4gIDM1Olx0XHQgIGZ1bGxtYWMgcHJpc201NCBkcml2ZXIgcGx1cyBtYW55IGRldmljZXMgd2hpY2ggYXJlIG5vdFxuICAzNjpcdFx0ICBzdXBwb3J0ZWQgYnkgdGhlIGZ1bGxtYWMgZHJpdmVyL2Zpcm13YXJlLlxuICAzNzpcdFxuICAzODpcdFx0ICBUaGlzIGRyaXZlciByZXF1aXJlcyBzb2Z0bWFjIGZpcm13YXJlIHdoaWNoIGNhbiBiZSBmb3VuZCBhdFxuICAzOTpcdFx0ICBcdTAwM2NodHRwczovL3dpcmVsZXNzLmRvY3Mua2VybmVsLm9yZy9lbi9sYXRlc3QvZW4vdXNlcnMvZHJpdmVycy9wNTQuaHRtbFx1MDAzZVxuICA0MDpcdFxuICA0MTpcdFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGEgbW9kdWxlLCBpdCYjMzk7bGwgYmUgY2FsbGVkIHA1NHBjaS5cbiAgNDI6XHRcbiAgNDM6XHRjb25maWcgUDU0X1NQSVxuICA0NDpcdFx0dHJpc3RhdGUgXCYjMzQ7UHJpc201NCBTUEkgKHN0bGM0NXh4KSBzdXBwb3J0XCYjMzQ7XG4gIDQ1Olx0XHRkZXBlbmRzIG9uIFA1NF9DT01NT04gXHUwMDI2XHUwMDI2IFNQSV9NQVNURVJcbiAgNDY6XHRcdGhlbHBcbiAgNDc6XHRcdCAgVGhpcyBkcml2ZXIgaXMgZm9yIHN0bGM0NTUwIG9yIHN0bGM0NTYwIGJhc2VkIHdpcmVsZXNzIGNoaXBzXG4gIDQ4Olx0XHQgIHN1Y2ggYXMgTm9raWEmIzM5O3MgTjgwMC9OODEwIFBvcnRhYmxlIEludGVybmV0IFRhYmxldC5cbiAgNDk6XHRcbiAgNTA6XHRcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBhIG1vZHVsZSwgaXQmIzM5O2xsIGJlIGNhbGxlZCBwNTRzcGkuXG4gIDUxOlx0XG4gIDUyOlx0Y29uZmlnIFA1NF9TUElfREVGQVVMVF9FRVBST01cbiAgNTM6XHRcdGJvb2wgXCYjMzQ7SW5jbHVkZSBmYWxsYmFjayBFRVBST00gYmxvYlwmIzM0O1xuICA1NDpcdFx0ZGVwZW5kcyBvbiBQNTRfU1BJXG4gIDU1Olx0XHRkZWZhdWx0IG5cbiAgNTY6XHRcdGhlbHBcbiAgNTc6XHRcdCBVbmxpa2UgdGhlIFBDSSBvciBVU0IgZGV2aWNlcywgdGhlIFNQSSB2YXJpYW50cyBkb24mIzM5O3QgaGF2ZVxuICA1ODpcdFx0IGEgZGVkaWNhdGVkIEVFUFJPTSBjaGlwIHRvIHN0b3JlIGFsbCBkZXZpY2Ugc3BlY2lmaWMgdmFsdWVzXG4gIDU5Olx0XHQgZm9yIGNhbGlicmF0aW9uLCBjb3VudHJ5IGFuZCBpbnRlcmZhY2Ugc2V0dGluZ3MuXG4gIDYwOlx0XG4gIDYxOlx0XHQgVGhlIGRyaXZlciB3aWxsIHRyeSB0byBsb2FkIHRoZSBpbWFnZSBcJiMzNDszODI2LmVlcHJvbVwmIzM0OywgaWYgdGhlXG4gIDYyOlx0XHQgZmlsZSBpcyBwdXQgYXQgdGhlIHJpZ2h0IHBsYWNlLiAodXN1YWxseSAvbGliL2Zpcm13YXJlLilcbiAgNjM6XHRcbiAgNjQ6XHRcdCBPbmx5IGlmIHRoaXMgcmVxdWVzdCBmYWlscywgdGhpcyBvcHRpb24gd2lsbCBwcm92aWRlIGFcbiAgNjU6XHRcdCBiYWNrdXAgc2V0IG9mIGdlbmVyaWMgdmFsdWVzIHRvIGdldCB0aGUgZGV2aWNlIHdvcmtpbmcuXG4gIDY2Olx0XG4gIDY3Olx0XHQgRW5hYmxpbmcgdGhpcyBvcHRpb24gYWRkcyBhYm91dCA0ayB0byBwNTRzcGkuXG4gIDY4Olx0XG4gIDY5Olx0Y29uZmlnIFA1NF9MRURTXG4gIDcwOlx0XHRib29sXG4gIDcxOlx0XHRkZXBlbmRzIG9uIFA1NF9DT01NT04gXHUwMDI2XHUwMDI2IE1BQzgwMjExX0xFRFMgXHUwMDI2XHUwMDI2IChMRURTX0NMQVNTID0geSB8fCBMRURTX0NMQVNTID0gUDU0X0NPTU1PTilcbiAgNzI6XHRcdGRlZmF1bHQgeVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwNzoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MzMxCgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogMTU0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBQNTQgVVNCIERyaXZlcioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCBgUDU0X1VTQmAgcmVsaWVzIG9uIGJvdGggYFA1NF9DT01NT05gIGFuZCB0aGUgYnJvYWRlciBgVVNCYCBzdWJzeXN0ZW0uIEZ1cnRoZXJtb3JlLCBgUDU0X0NPTU1PTmAgaXRzZWxmIGlzIGRlcGVuZGVudCBvbiBgTUFDODAyMTFgLiBOb3csIHRoZSBrZXkgcXVlc3Rpb24gYXJpc2VzOiB3aGVuIGEgVVNCIGRldmljZSByZWxhdGVkIHRvIFA1NCBpcyBwbHVnZ2VkIGluLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBjb250ZXh0IG9mIHNvbWV0aGluZyBsaWtlIHN5emthbGxlciYjMzk7cyBVU0IgcmF3LWdhZGdldCwgYSB2aGNpIHNldHVwLCBmdXp6aW5nIGF0dGVtcHRzLCBvciBldmVuIHR5cGljYWwgTUFDODAyMTEgQVAvYmVhY29uIHRyYW5zbWlzc2lvbiBhbmQgcmVjZXB0aW9uLCBkb2VzIHRoZSBgcDU0X2ZpbmRfaWVgIGZ1bmN0aW9uIGdldCBpbnZva2VkPyBUaGF0JiMzOTtzIHRoZSBjb3JlIG9mIG15IGN1cnJlbnQgaW52ZXN0aWdhdGlvbi4gVG8gdW5kZXJzdGFuZCB0aGlzIEkgd2lsbCBuZWVkIHRvIGNoZWNrIHdoZXJlIGBwNTRfZmluZF9pZWAgaXMgaW52b2tlZCBhbmQgaG93IGl0IGlzIGludm9sdmVkIGluIGJlYWNvbiBmb3JtYXR0aW5nIG9yIG90aGVyIHdvcmthcm91bmRzLiBJJiMzOTtsbCBuZWVkIHRvIGZvY3VzIG9uIGludmVzdGlnYXRpbmcgYHA1NF9iZWFjb25fZm9ybWF0X2llX3RpbWAgYW5kIGBwNTRfcHNwb2xsX3dvcmthcm91bmRgIHRvIGJ1aWxkIGEgY29tcGxldGUgcGljdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDc6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cDU0X2JlYWNvbl9mb3JtYXRfaWVfdGltJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmM9NzQ9dTggKnA1NF9maW5kX2llKHN0cnVjdCBza19idWZmICpza2IsIHU4IGllKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmMtOTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jOjkzOnN0YXRpYyBpbnQgcDU0X2JlYWNvbl9mb3JtYXRfaWVfdGltKHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jLTk0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jPTEzMj1zdGF0aWMgaW50IHA1NF9iZWFjb25fdXBkYXRlKHN0cnVjdCBwNTRfY29tbW9uICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmMtMTQxLVx0XHRyZXR1cm4gLUVOT01FTTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmM6MTQyOlx0cmV0ID0gcDU0X2JlYWNvbl9mb3JtYXRfaWVfdGltKGJlYWNvbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jLTE0My1cdGlmIChyZXQpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDc6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODAyNwoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246CgoqKkludmVzdGlnYXRpbmcgQmVhY29uIFVwZGF0ZXMgYW5kIFBvbGwgV29ya2Fyb3VuZHMqKgoKT2theSwgdGltZSB0byBkaWcgaW4uIE15IGd1dCBmZWVsaW5nIGlzIHNvbWV0aGluZyBpc24mIzM5O3QgcXVpdGUgcmlnaHQgd2l0aCB0aGUgYmVhY29uIHVwZGF0ZXMgb3IgdGhlIHBzcG9sbCB3b3JrYXJvdW5kLCBzbyBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IGJ5IHRyYWNpbmcgdGhvc2UgY2FsbHMuIEkgd2FudCB0byBzZWUgZXhhY3RseSBob3cgYHA1NF9iZWFjb25fdXBkYXRlYCBhbmQgYHA1NF9wc3BvbGxfd29ya2Fyb3VuZGAgYXJlIGJlaW5nIHVzZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3csIHRoZSBkYXRhIGJlaW5nIHBhc3NlZCwgYW5kIGFueSBwb3RlbnRpYWwgcG9pbnRzIG9mIGZhaWx1cmUgb3IgdW5leHBlY3RlZCBiZWhhdmlvci4gRXNzZW50aWFsbHksIEkmIzM5O20gZ29pbmcgdG8gbWFwIG91dCB0aGUgY2FsbCBncmFwaCBmb3IgdGhlc2UgdHdvIGZ1bmN0aW9ucyB0byBnZXQgYSBoaWdoLWxldmVsIHZpZXcgYW5kIHNlZSBpZiBhbnl0aGluZyBqdW1wcyBvdXQuIEkgaGF2ZSBhIGh1bmNoIHRoaXMgaXMgdGhlIHJpZ2h0IHBsYWNlIHRvIHN0YXJ0IGxvb2tpbmcgZm9yIHRoZSBjb3JlIGlzc3VlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwNzoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwNTRfYmVhY29uX3VwZGF0ZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jPTkzPXN0YXRpYyBpbnQgcDU0X2JlYWNvbl9mb3JtYXRfaWVfdGltKHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYy0xMzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jOjEzMjpzdGF0aWMgaW50IHA1NF9iZWFjb25fdXBkYXRlKHN0cnVjdCBwNTRfY29tbW9uICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYy0xMzMtXHRcdFx0c3RydWN0IGllZWU4MDIxMV92aWYgKnZpZilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jPTQ0OT1zdGF0aWMgdm9pZCBwNTRfYnNzX2luZm9fY2hhbmdlZChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYy00NjQtXHRcdHA1NF9zZXR1cF9tYWMocHJpdik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jOjQ2NTpcdFx0cDU0X2JlYWNvbl91cGRhdGUocHJpdiwgdmlmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmMtNDY2LVx0XHRwNTRfc2V0X2VkY2YocHJpdik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA3OjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg1NjEKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqQ2hlY2tpbmcgYSBQb3RlbnRpYWwgQnVnIEZpeCoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nLCAmIzM0O0xldCYjMzk7cyBkaWcgaW50byBgdHhyeC5jYCBhZ2Fpbi4gSSBoYXZlIGEgaHVuY2gsIGFuZCBJIG5lZWQgdG8gdmVyaWZ5IHNvbWV0aGluZy4mIzM0OyBTcGVjaWZpY2FsbHksIEkgd2FudCB0byB0YWtlIGEgbG9vayBhdCB0aGUgYHA1NF9wc3BvbGxfd29ya2Fyb3VuZGAgZnVuY3Rpb24uIFRoaXMgaXMgYW4gaW50ZXJlc3RpbmcgYXJlYSBiZWNhdXNlIGl0IGRlYWxzIHdpdGggcG93ZXItc2F2aW5nIGFuZCBwb2xsaW5nLiBHaXZlbiB0aGUgY29udGV4dCwgSSBzdXNwZWN0IHRoZXJlIG1pZ2h0IGJlIHNvbWV0aGluZyByZWxhdGVkIHRvIGFuIGlzc3VlIEkmIzM5O20gY2hhc2luZyBsdXJraW5nIGluIHRoYXQgcGFydCBvZiB0aGUgY29kZS4gSXQmIzM5O3MgYSBrZXkgYXJlYSB0byByZS1leGFtaW5lIHRvIHNlZSBpZiB0aGlzIGlzIHJlbGF0ZWQgdG8gdGhlIGN1cnJlbnQgcHJvYmxlbXMuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgc29tZXRoaW5nIHByZXZpb3VzbHkuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBpbiB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDc6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cDU0X3BzcG9sbF93b3JrYXJvdW5kJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmM9Mjc1PXN0YXRpYyBpbnQgcDU0X3Jzc2lfdG9fZGJtKHN0cnVjdCBwNTRfY29tbW9uICpwcml2LCBpbnQgcnNzaSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jLTI5My0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmM6Mjk0OnN0YXRpYyB2b2lkIHA1NF9wc3BvbGxfd29ya2Fyb3VuZChzdHJ1Y3QgcDU0X2NvbW1vbiAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmMtMjk1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jPTMyNz1zdGF0aWMgaW50IHA1NF9yeF9kYXRhKHN0cnVjdCBwNTRfY29tbW9uICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmMtMzg4LVx0aWYgKHVubGlrZWx5KHByaXYtXHUwMDNlaHctXHUwMDNlY29uZi5mbGFncyBcdTAwMjYgSUVFRTgwMjExX0NPTkZfUFMpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYzozODk6XHRcdHA1NF9wc3BvbGxfd29ya2Fyb3VuZChwcml2LCBza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYy0zOTAtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA3OjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkwOTYKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA5NjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQb3RlbnRpYWwgVnVsbmVyYWJpbGl0eSBpbiBgcDU0X2ZpbmRfaWVgKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoZSBjb2RlIGluIGBwNTRfZmluZF9pZWAgaGFzIGEgcGVjdWxpYXIgY2hhbmdlLiBJbml0aWFsbHksIHRoZXJlIHdhcyBhIGNoZWNrOiBgaWYgKHNrYi0mZ3Q7bGVuICZsdDs9IHNpemVvZihtZ210KSkgcmV0dXJuIE5VTEw7YC4gVGhhdCBjaGVjayBoYXMgYmVlbiByZW1vdmVkLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kICp3aHkqIGFuZCB3aGF0IHRoZSBpbXBsaWNhdGlvbnMgYXJlLgoKVGhlIHZhcmlhYmxlIGBtZ210YCBpcyBhIHBvaW50ZXIgdG8gYGllZWU4MDIxMV9tZ210YC4gVGhlIHJlbW92ZWQgY2hlY2sgd2FzIGNvbXBhcmluZyB0aGUgcGFja2V0IGxlbmd0aCAoYHNrYi0mZ3Q7bGVuYCkgdG8gdGhlIHNpemUgb2YgYSBwb2ludGVyLCB3aGljaCBpcyA4IGJ5dGVzLiBIb3dldmVyLCBgbWdtdC0mZ3Q7dS5iZWFjb24udmFyaWFibGVgIGlzICphY3R1YWxseSogb2Zmc2V0IGF0IDM2IGJ5dGVzIChvciB3aGF0ZXZlciBpdHMgYWN0dWFsIG9mZnNldCBpcywgZ2l2ZW4gdGhlIHN0cnVjdHVyZSYjMzk7cyBsYXlvdXQpLiBJZiB0aGUgcGFja2V0IGlzLCBzYXksIG9ubHkgMTAgYnl0ZXMsIHRoZSBjb2RlIHdvdWxkIGJlIHRyeWluZyB0byBhY2Nlc3MgbWVtb3J5IHBhc3QgdGhlIGVuZCBvZiB0aGUgYHNrYi0mZ3Q7ZGF0YWAgYnVmZmVyLiBUaGUgYHBvcyAmbHQ7IGVuZGAgY29tcGFyaXNvbiBpbiB0aGUgYHdoaWxlYCBsb29wICpzaG91bGQqIHByZXZlbnQgaXNzdWVzLCBidXQgdGhlIGNoZWNrIHdhcyB0aGVyZSBmb3IgYSByZWFzb24sIGFuZCBpdHMgcmVtb3ZhbCB3YXJyYW50cyBjbG9zZSBzY3J1dGlueS4KClRoZSBpbml0aWFsIGFzc3VtcHRpb24gbWlnaHQgYmUgdGhlIGNvZGUgaXMgc2FmZSwgc2luY2UgYHBvc2AgYXJpdGhtZXRpYyBjb3VsZCBzdGlsbCBjYXVzZSBpdCB0byBiZSBvdXQtb2YtYm91bmRzLCBldmVuIGlmIHRoZSBjb21wYXJpc29uIHByZXZlbnRzIGV4ZWN1dGlvbi4gVGhlIHJlbW92YWwgb2YgdGhlIGNoZWNrIGlzIHRoZSBtb3N0IGludGVyZXN0aW5nIHBhcnQuIFdoeSB3YXMgaXQgcmVtb3ZlZD8gV2FzIGl0IGEgYnVnIGZpeD8gT3IgYSBtaXNndWlkZWQgcmVmYWN0b3Jpbmc/IEl0ICpjb3VsZCogaW5kaWNhdGUgYSBtaXN1bmRlcnN0YW5kaW5nIG9mIGBzaXplb2ZgIG9yIHNvbWUgbG9naWMgZXJyb3IsIGJ1dCBub3cgdGhlIHF1ZXN0aW9uIGlzOiBjYW4gdGhpcyBjb25kaXRpb24gYmUgdHJpZ2dlcmVkPwoKU28sIGlzIHRoaXMgcmVhY2hhYmxlPyBUaGUgZHJpdmVyIGlzIGBwNTRgLCB3aGljaCBoYXMgYSBVU0IgZnJvbnRlbmQgKGBwNTR1c2JgKS4gQ29uc2lkZXJpbmcgdGhpcyBpcyBpbiB0aGUgY29udGV4dCBvZiBwYXRjaCBmdXp6aW5nLCBhbmQgdGhlIGluc3RydWN0aW9ucyBlbXBoYXNpemUgcmVhY2hhYmlsaXR5LCBsZXQmIzM5O3MgYXBwbHkgdGhlIGNyaXRlcmlhLiBXZSBjYW4gZnV6eiBVU0Igd2lyZWxlc3MgZGV2aWNlcyB1c2luZyBzeXprYWxsZXIgd2l0aCBVU0IgZW11bGF0aW9uLCByYXctZ2FkZ2V0LCB2aGNpLCBhbmQgbWFjODAyMTEuIFRoZSBkb2N1bWVudGF0aW9uIHNwZWNpZmljYWxseSBtZW50aW9ucyB0aGF0ICYjMzQ7UmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29scyYjMzQ7IGluY2x1ZGUgdGhvc2UgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyBsaWtlIFVTQiBnYWRnZXRzLiBQYXRjaCBmdXp6aW5nJiMzOTtzIHByaW9yaXR5IGlzIHJlYWNoYWJpbGl0eSwgc28gaWYgdGhlIGNvZGUgZXhlY3V0ZXMsIGl0JiMzOTtzIHdvcnRoIGZ1enppbmchCgpMZXQmIzM5O3MgY2hlY2sgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zLiBUaGUgYHA1NGAgZHJpdmVyIGl0c2VsZiAoYW5kIHNwZWNpZmljYWxseSBVU0IpIGRlcGVuZHMgb24gYE1BQzgwMjExYCBhbmQgYFVTQmAsIGFuZCBpcyBwYXJ0IG9mIHRoZSBgUDU0X0NPTU1PTmAgY29uZmlndXJhdGlvbiwgd2hpY2ggaGFzIGRlcGVuZGVuY2llcyBvbiBvdGhlciBjb21wb25lbnRzLiBUaGVzZSBjb25maWd1cmF0aW9ucyBhcmUgYWxsIHN0YW5kYXJkLCBhbmQgaXQmIzM5O3MgZmVhc2libGUgdG8gdHJpZ2dlciB0aGlzIGNvZGUgaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gU28sIGBwNTRgIGlzIHBvdGVudGlhbGx5IHJlYWNoYWJsZSB0aHJvdWdoIHRoZXNlIHZpcnR1YWwgYnVzZXMsIGFuZCB0aGF0IG1ha2VzIHRoaXMgcGF0Y2ggd29ydGggZnV6emluZyEgTGV0JiMzOTtzIGNoZWNrIHRoZSBjb25maWd1cmF0aW9ucyB0byBjb25maXJtIHdlIGhhdmUgdGhlIGNvcnJlY3QgYnVpbGQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA3OjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NvdXJjZS4qcDU0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvS2NvbmZpZz0xMz1pZiBXTEFOX1ZFTkRPUl9JTlRFUlNJTFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvS2NvbmZpZy0xNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL0tjb25maWc6MTU6c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9LY29uZmlnLTE2LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwNzoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDc2NAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgSW50ZXJjaWwgV2lyZWxlc3MgRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIEludGVyc2lsIHdpcmVsZXNzIGRyaXZlci4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gY2hlY2sgdGhlIGBLY29uZmlnYCBmaWxlLCBsb2NhdGVkIGluIHRoZSB1c3VhbCBwbGFjZTogYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL0tjb25maWdgLiBUaGF0JiMzOTtzIHdoZXJlIEkmIzM5O2QgZXhwZWN0IHRvIGZpbmQgYWxsIHRoZSBjb21waWxlLXRpbWUgb3B0aW9ucywgZGVwZW5kZW5jaWVzLCBhbmQgaGVscCB0ZXh0IHRoYXQgZGV0ZXJtaW5lIGhvdyB0aGlzIGRyaXZlciBiZWhhdmVzIGFuZCB3aGV0aGVyIGl0IGdldHMgYnVpbHQgaW50byB0aGUga2VybmVsLiBJJiMzOTtsbCBuZWVkIHRvIGxvb2sgaW4gZGV0YWlsIGF0IGhvdyB0aGUgdmFyaW91cyBmZWF0dXJlcyBhcmUgZW5hYmxlZCBhbmQgZGlzYWJsZWQsIGFuZCBob3cgdGhleSByZWxhdGUgdG8gdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUgYW5kIGFueSByZXF1aXJlZCBrZXJuZWwgc3VwcG9ydC4gSSBhbnRpY2lwYXRlIEkgd2lsbCBuZWVkIHRvIGxvb2sgYXQgYW55IGRlcGVuZGVuY2llcyBvbiBvdGhlciBrZXJuZWwgc3Vic3lzdGVtcyBvciBmZWF0dXJlcy4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIGdvb2Qgb3ZlcnZpZXcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA3OjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBXTEFOX1ZFTkRPUl9JTlRFUlNJTFxuICAgMzpcdFx0Ym9vbCBcJiMzNDtJbnRlcnNpbCBkZXZpY2VzXCYjMzQ7XG4gICA0Olx0XHRkZWZhdWx0IHlcbiAgIDU6XHRcdGhlbHBcbiAgIDY6XHRcdCAgSWYgeW91IGhhdmUgYSB3aXJlbGVzcyBjYXJkIGJlbG9uZ2luZyB0byB0aGlzIGNsYXNzLCBzYXkgWS5cbiAgIDc6XHRcbiAgIDg6XHRcdCAgTm90ZSB0aGF0IHRoZSBhbnN3ZXIgdG8gdGhpcyBxdWVzdGlvbiBkb2VzbiYjMzk7dCBkaXJlY3RseSBhZmZlY3QgdGhlXG4gICA5Olx0XHQgIGtlcm5lbDogc2F5aW5nIE4gd2lsbCBqdXN0IGNhdXNlIHRoZSBjb25maWd1cmF0b3IgdG8gc2tpcCBhbGwgdGhlXG4gIDEwOlx0XHQgIHF1ZXN0aW9ucyBhYm91dCB0aGVzZSBjYXJkcy4gSWYgeW91IHNheSBZLCB5b3Ugd2lsbCBiZSBhc2tlZCBmb3JcbiAgMTE6XHRcdCAgeW91ciBzcGVjaWZpYyBjYXJkIGluIHRoZSBmb2xsb3dpbmcgcXVlc3Rpb25zLlxuICAxMjpcdFxuICAxMzpcdGlmIFdMQU5fVkVORE9SX0lOVEVSU0lMXG4gIDE0Olx0XG4gIDE1Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9LY29uZmlnXCYjMzQ7XG4gIDE2Olx0XG4gIDE3Olx0ZW5kaWYgIyBXTEFOX1ZFTkRPUl9JTlRFUlNJTFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwNzoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTIzMQoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDE3NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFVzYWdlIG9mIGBwNTRfZmluZF9pZWAqKgoKT2theSwgbGV0JiMzOTtzIHNlZSB3aGVyZSB0aGlzIGBwNTRfZmluZF9pZWAgZnVuY3Rpb24gaXMgYmVpbmcgdXNlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGNhbGwgZ3JhcGggd2l0aGluIHRoZSBwNTQgZHJpdmVyLiBGaXJzdCwgbGV0JiMzOTtzIGxvb2sgYXQgdGhlIGRpcmVjdCBjYWxsZXJzLiBBaCwgaGVyZSB3ZSBnbywgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmNgLCBgcDU0X2ZpbmRfaWVgIGlzIGNsZWFybHkgaW52b2tlZCBieSBgcDU0X2JlYWNvbl9mb3JtYXRfaWVfdGltYC4gUmlnaHQsIGFuZCBgcDU0X2JlYWNvbl9mb3JtYXRfaWVfdGltYCBpcyBwYXJ0IG9mIHRoZSBiZWFjb24gdXBkYXRlIHByb2Nlc3MsIGNhbGxlZCB0aHJvdWdoIGBwNTRfYmVhY29uX3VwZGF0ZWAgd2hpY2ggaXMgZHJpdmVuIGJ5IGNoYW5nZXMgaW4gYHA1NF9ic3NfaW5mb19jaGFuZ2VkYC4gVGhhdCBtYWtlcyBzZW5zZTsgaXQmIzM5O3MgcHJvYmFibHkgcGFyc2luZyBvciBmb3JtYXR0aW5nIGluZm9ybWF0aW9uIGVsZW1lbnRzIGZvciB0aGUgYmVhY29uLgoKTm93LCBvdmVyIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jYCwgSSBzZWUgYW5vdGhlciBjYWxsOiBgcDU0X3BzcG9sbF93b3JrYXJvdW5kYCBjYWxscyBgcDU0X2ZpbmRfaWVgLiBBbmQgdGhhdCYjMzk7cyBpbnZva2VkIHdpdGhpbiB0aGUgYHA1NF9yeF9kYXRhYCBmdW5jdGlvbi4gVGhhdCYjMzk7cyBpbnRlcmVzdGluZywgc3VnZ2VzdGluZyBpdCYjMzk7cyBhbHNvIGJlaW5nIHVzZWQgZHVyaW5nIHJlY2VpdmUgcHJvY2Vzc2luZy4gSSB3b25kZXIgd2hhdCBpdCYjMzk7cyBkb2luZyB0aGVyZS4gSSBzaG91bGQgdGFrZSBhIGNsb3NlciBsb29rIGF0IGBwNTRfcnhfZGF0YWAgdG8gZ2V0IHRoZSBjb250ZXh0IGFuZCB1bmRlcnN0YW5kIGhvdyBpdCBoYW5kbGVzIGluY29taW5nIHBhY2tldHMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgdG8gdGhlIG92ZXJhbGwgZHJpdmVyIGJlaGF2aW9yLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwNzoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwNTRfcnhfZGF0YSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jPTI3PWludCBwNTRfcGFyc2VfZmlybXdhcmUoc3RydWN0IGllZWU4MDIxMV9odyAqZGV2LCBjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtOTQtXHRcdFx0bWF4bGVuID0gcHJpdi1cdTAwM2V0eF9oZHJfbGVuICYjNDM7IC8qIFVTQiBkZXZpY2VzICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jOjk1Olx0XHRcdFx0IHNpemVvZihzdHJ1Y3QgcDU0X3J4X2RhdGEpICYjNDM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTk2LVx0XHRcdFx0IDQgJiM0MzsgLyogcnggYWxpZ25tZW50ICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaD0xNTM9ZW51bSBwNTRfcnhfZGVjcnlwdF9zdGF0dXMge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmgtMTY2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoxNjc6c3RydWN0IHA1NF9yeF9kYXRhIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmgtMTY4LVx0X19sZTE2IGZsYWdzO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmM9Mjk0PXN0YXRpYyB2b2lkIHA1NF9wc3BvbGxfd29ya2Fyb3VuZChzdHJ1Y3QgcDU0X2NvbW1vbiAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jLTMyNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmM6MzI3OnN0YXRpYyBpbnQgcDU0X3J4X2RhdGEoc3RydWN0IHA1NF9jb21tb24gKnByaXYsIHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jLTMyOC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jOjMyOTpcdHN0cnVjdCBwNTRfcnhfZGF0YSAqaGRyID0gKHN0cnVjdCBwNTRfcnhfZGF0YSAqKSBza2ItXHUwMDNlZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmMtMzMwLVx0c3RydWN0IGllZWU4MDIxMV9yeF9zdGF0dXMgKnJ4X3N0YXR1cyA9IElFRUU4MDIxMV9TS0JfUlhDQihza2IpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmM9Njg0PWludCBwNTRfcngoc3RydWN0IGllZWU4MDIxMV9odyAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmMtNjkxLVx0ZWxzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYzo2OTI6XHRcdHJldHVybiBwNTRfcnhfZGF0YShwcml2LCBza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYy02OTMtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwNzoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjQzNAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDU4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOgoKKipSWCBEYXRhIEZsb3cgVmVyaWZpY2F0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gZm9jdXNpbmcgb24gdGhlIHJlY2VpdmUgcGF0aCBoZXJlLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgcDU0YCBkcml2ZXIuIEkmIzM5O20gc3RhcnRpbmcgd2l0aCBgcDU0X3J4X2RhdGFgIOKAkyB0aGF0JiMzOTtzIHRoZSBrZXkgZnVuY3Rpb24gSSBuZWVkIHRvIHVuZGVyc3RhbmQuIE15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCBgcDU0X3J4X2RhdGFgIGlzIHRoZSBjb3JlIG9mIHRoZSBkYXRhIHByb2Nlc3NpbmcgdGhhdCBoYXBwZW5zIG9uIHRoZSByZWNlaXZlIHNpZGUuIEl0JiMzOTtzIGNhbGxlZCBieSBgcDU0X3J4YCwgd2hpY2ggaXRzZWxmIGlzIHRyaWdnZXJlZCB3aGVuIHRoZSBVU0IgZGV2aWNlIGhhbmRzIG92ZXIgYSBmcmFtZS4gU28sIEkgbmVlZCB0byB0cmFjZSB0aGlzIHNlcXVlbmNlOiBmcm9tIHRoZSBVU0IgaW50ZXJmYWNlIChgcDU0dXNiX3J4X2NiYCBvciBlcXVpdmFsZW50KSwgZG93biBpbnRvIGBwNTRfcnhgLCBhbmQgdGhlbiB0byBgcDU0X3J4X2RhdGFgLiBNYWtlcyBzZW5zZSwgdGhlIFVTQiBpbnRlcmZhY2UgZGV0ZWN0cyBhIGZyYW1lIGFuZCBpdCBpcyBwYXNzZWQgaW50byBgcDU0X3J4X2NiYCwgd2hpY2gsIHRoZW4gY2FsbHMgYHA1NF9yeGAgd2hpY2ggaXMgcmVzcG9uc2libGUgdG8gaGFuZGxlIHRoZSBmcmFtZSBhbmQsIHRoZW4gaXQgY2FsbHMgYHA1NF9yeF9kYXRhYCB0byBwcm9wZXJseSBwcm9jZXNzIHRoZSBpbmNvbWluZyBkYXRhLCBvciBzbyBJIGFzc3VtZS4gSXQmIzM5O3MgcmVhbGx5IHRoZSBkYXRhIHByb2Nlc3NpbmcgSSBuZWVkIHRvIHVuZGVyc3RhbmQuIExldCYjMzk7cyB2ZXJpZnkgdGhpcywgSSBuZWVkIHRvIGdldCBkb3duIGludG8gdGhlIGBwNTR1c2JgIFJYIHBhdGggdG8gY29uZmlybSB0aGlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwNzoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwNTRfcngmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYz0yNz1pbnQgcDU0X3BhcnNlX2Zpcm13YXJlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmRldiwgY29uc3Qgc3RydWN0IGZpcm13YXJlICpmdylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTk0LVx0XHRcdG1heGxlbiA9IHByaXYtXHUwMDNldHhfaGRyX2xlbiAmIzQzOyAvKiBVU0IgZGV2aWNlcyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYzo5NTpcdFx0XHRcdCBzaXplb2Yoc3RydWN0IHA1NF9yeF9kYXRhKSAmIzQzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYy05Ni1cdFx0XHRcdCA0ICYjNDM7IC8qIHJ4IGFsaWdubWVudCAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg9MTM1PXN0cnVjdCBwNTRfZWVwcm9tX2xtODYge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmgtMTUyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaDoxNTM6ZW51bSBwNTRfcnhfZGVjcnlwdF9zdGF0dXMge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaC0xNTQtXHRQNTRfREVDUllQVF9OT05FID0gMCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oLTE2Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MTY3OnN0cnVjdCBwNTRfcnhfZGF0YSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oLTE2OC1cdF9fbGUxNiBmbGFncztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvcDU0Lmg9MTY0PXN0cnVjdCBwNTRfY29tbW9uIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvcDU0LmgtMjY2LS8qIGludGVyZmFjZXMgZm9yIHRoZSBkcml2ZXJzICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvcDU0Lmg6MjY3OmludCBwNTRfcngoc3RydWN0IGllZWU4MDIxMV9odyAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9wNTQuaC0yNjgtdm9pZCBwNTRfZnJlZV9za2Ioc3RydWN0IGllZWU4MDIxMV9odyAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvcDU0cGNpLmM9MTg0PXN0YXRpYyB2b2lkIHA1NHBfY2hlY2tfcnhfcmluZyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpkZXYsIHUzMiAqaW5kZXgsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3A1NHBjaS5jLTIyMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9wNTRwY2kuYzoyMjM6XHRcdGlmIChwNTRfcngoZGV2LCBza2IpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvcDU0cGNpLmMtMjI0LVx0XHRcdGRtYV91bm1hcF9zaW5nbGUoXHUwMDI2cHJpdi1cdTAwM2VwZGV2LVx1MDAzZWRldiwgZG1hX2FkZHIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3A1NHNwaS5jPTMxND1zdGF0aWMgaW50IHA1NHNwaV9yeChzdHJ1Y3QgcDU0c19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9wNTRzcGkuYy0zNjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvcDU0c3BpLmM6MzYzOlx0aWYgKHA1NF9yeChwcml2LVx1MDAzZWh3LCBza2IpID09IDApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvcDU0c3BpLmMtMzY0LVx0XHRkZXZfa2ZyZWVfc2tiKHNrYik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3A1NHVzYi5jPTE0MD1zdGF0aWMgdm9pZCBwNTR1X3J4X2NiKHN0cnVjdCB1cmIgKnVyYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvcDU0dXNiLmMtMTYyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3A1NHVzYi5jOjE2MzpcdGlmIChwNTRfcngoZGV2LCBza2IpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvcDU0dXNiLmMtMTY0LVx0XHRza2IgPSBkZXZfYWxsb2Nfc2tiKHByaXYtXHUwMDNlY29tbW9uLnJ4X210dSAmIzQzOyAzMik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYz0yOTQ9c3RhdGljIHZvaWQgcDU0X3BzcG9sbF93b3JrYXJvdW5kKHN0cnVjdCBwNTRfY29tbW9uICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmMtMzI2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYzozMjc6c3RhdGljIGludCBwNTRfcnhfZGF0YShzdHJ1Y3QgcDU0X2NvbW1vbiAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmMtMzI4LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmM6MzI5Olx0c3RydWN0IHA1NF9yeF9kYXRhICpoZHIgPSAoc3RydWN0IHA1NF9yeF9kYXRhICopIHNrYi1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYy0zMzAtXHRzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqcnhfc3RhdHVzID0gSUVFRTgwMjExX1NLQl9SWENCKHNrYik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYy0zOTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jOjM5OTpzdGF0aWMgdm9pZCBwNTRfcnhfZnJhbWVfc2VudChzdHJ1Y3QgcDU0X2NvbW1vbiAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmMtNDAwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jLTQ4Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmM6NDg4OnN0YXRpYyB2b2lkIHA1NF9yeF9lZXByb21fcmVhZGJhY2soc3RydWN0IHA1NF9jb21tb24gKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jLTQ4OS1cdFx0XHRcdCAgIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYy01MjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jOjUyNTpzdGF0aWMgdm9pZCBwNTRfcnhfc3RhdHMoc3RydWN0IHA1NF9jb21tb24gKnByaXYsIHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jLTUyNi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYy02MTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jOjYxOTpzdGF0aWMgdm9pZCBwNTRfcnhfdHJhcChzdHJ1Y3QgcDU0X2NvbW1vbiAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmMtNjIwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jLTY1NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmM6NjU1OnN0YXRpYyBpbnQgcDU0X3J4X2NvbnRyb2woc3RydWN0IHA1NF9jb21tb24gKnByaXYsIHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jLTY1Ni17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYy02NjAtXHRjYXNlIFA1NF9DT05UUk9MX1RZUEVfVFhET05FOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYzo2NjE6XHRcdHA1NF9yeF9mcmFtZV9zZW50KHByaXYsIHNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jLTY2Mi1cdFx0YnJlYWs7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jLTY2My1cdGNhc2UgUDU0X0NPTlRST0xfVFlQRV9UUkFQOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYzo2NjQ6XHRcdHA1NF9yeF90cmFwKHByaXYsIHNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jLTY2NS1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYy02NjgtXHRjYXNlIFA1NF9DT05UUk9MX1RZUEVfU1RBVF9SRUFEQkFDSzpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmM6NjY5Olx0XHRwNTRfcnhfc3RhdHMocHJpdiwgc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmMtNjcwLVx0XHRicmVhaztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmMtNjcxLVx0Y2FzZSBQNTRfQ09OVFJPTF9UWVBFX0VFUFJPTV9SRUFEQkFDSzpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmM6NjcyOlx0XHRwNTRfcnhfZWVwcm9tX3JlYWRiYWNrKHByaXYsIHNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jLTY3My1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYy02ODMtLyogcmV0dXJucyB6ZXJvIGlmIHNrYiBjYW4gYmUgcmV1c2VkICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jOjY4NDppbnQgcDU0X3J4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmMtNjg1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jLTY4OS1cdGlmICh0eXBlIFx1MDAyNiBQNTRfSERSX0ZMQUdfQ09OVFJPTClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmM6NjkwOlx0XHRyZXR1cm4gcDU0X3J4X2NvbnRyb2wocHJpdiwgc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmMtNjkxLVx0ZWxzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYzo2OTI6XHRcdHJldHVybiBwNTRfcnhfZGF0YShwcml2LCBza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYy02OTMtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYzo2OTQ6RVhQT1JUX1NZTUJPTF9HUEwocDU0X3J4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmMtNjk1LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwNzoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTM1NAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDM0OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgYHA1NF9maW5kX2llYCBWdWxuZXJhYmlsaXR5KioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCBhIG1vZGlmaWNhdGlvbiB0byBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uY2AsIHNwZWNpZmljYWxseSB0aGUgYHA1NF9maW5kX2llYCBmdW5jdGlvbi4gVGhpcyBpcyBjcml0aWNhbCBiZWNhdXNlIGl0JiMzOTtzIHJlc3BvbnNpYmxlIGZvciBwYXJzaW5nIEluZm9ybWF0aW9uIEVsZW1lbnRzIChJRXMpIHdpdGhpbiBJRUVFIDgwMi4xMSBtYW5hZ2VtZW50IGZyYW1lcyBsaWtlIGJlYWNvbnMuIFRoZSBwYXRjaCYjMzk7cyBjb3JlIGNoYW5nZSBpcyB0aGUgcmVtb3ZhbCBvZiB0aGUgaW5pdGlhbCBsZW5ndGggY2hlY2s6ICB0aGUgYGlmIChza2ItJmd0O2xlbiAmbHQ7PSBzaXplb2YobWdtdCkpYCBzdGF0ZW1lbnQuCgpUaGF0JiMzOTtzIGltbWVkaWF0ZWx5IGNvbmNlcm5pbmcuICBSZW1vdmluZyB0aGF0IGNoZWNrIGRpcmVjdGx5IGFsdGVycyB0aGUgYm91bmRhcnkgdmFsaWRhdGlvbiAqYmVmb3JlKiB0aGUgY3J1Y2lhbCBjYWxjdWxhdGlvbiBvZiBgcG9zID0gKHU4ICopbWdtdC0mZ3Q7dS5iZWFjb24udmFyaWFibGU7YC4gRXNzZW50aWFsbHksIGl0JiMzOTtzIGEgY2xhc3NpYyBidWZmZXIgb3ZlcmZsb3cgc2V0dXA7IHdlJiMzOTtyZSBub3cgbW9yZSB2dWxuZXJhYmxlIHRvIHN1cHBseWluZyBjcmFmdGVkIGZyYW1lcyB0aGF0IHRoZSBjb2RlICp0aGlua3MqIGlzIHZhbGlkLgoKVGhlIGdvb2QgbmV3cyAoZm9yIG1lLCBhcyBhIGZ1enppbmcgZXhwZXJ0KSBpcyB0aGF0IHRoaXMgY29kZSBwYXRoIGlzIGRlZmluaXRlbHkgcmVhY2hhYmxlLiAgV2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgdmlydHVhbCBvciBlbXVsYXRlZCBVU0IgZGV2aWNlcyB1c2luZyBgcDU0dXNiYCwgYW5kIHRoZSBNQUM4MDIxMSBBUC9iZWFjb24gZnJhbWUgaGFuZGxpbmcuIFNvLCBpdCYjMzk7cyBleHBsb2l0YWJsZSwgd2hpY2ggbWVhbnMgaXQmIzM5O3Mgd29ydGggb3VyIHRpbWUuIFdvcnRoRnV6emluZyA9IFRydWUuCgpOb3csIGxldCYjMzk7cyBuYWlsIGRvd24gdGhlIHJlcXVpcmVkIGNvbmZpZ3VyYXRpb25zLiBJJiMzOTttIGdvaW5nIHRvIG5lZWQ6CgoqICAgYFA1NF9DT01NT05gIC0gdGhhdCYjMzk7cyBhIGdpdmVuIGZvciB0aGUgZHJpdmVyLgoqICAgYFA1NF9VU0JgIC0gc2luY2UgdGhpcyBmb2N1c2VzIG9uIFVTQi1iYXNlZCBkZXZpY2VzLgoqICAgYE1BQzgwMjExYCAtIHRvIGhhbmRsZSB0aGUgODAyLjExIHByb3RvY29sLgoqICAgYFVTQmAgLSB0aGUgYmFzZSBVU0IgY29uZmlndXJhdGlvbiwgb2YgY291cnNlLgoqICAgYFdMQU5fVkVORE9SX0lOVEVSU0lMYCAtIHRoYXQmIzM5O3MgdGhlIGtleSBvbmUsIHRoZSBvbmUgdGhhdCB0aWVzIGl0IGFsbCB0b2dldGhlci4KCkxldCBtZSBqdXN0IGRvdWJsZS1jaGVjayB0aGF0IGBXTEFOX1ZFTkRPUl9JTlRFUlNJTGAgaXMgcHJvcGVybHkgaW5jbHVkZWQgaW4gS2NvbmZpZzogTG9va3MgbGlrZSBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvS2NvbmZpZ2AgaXQgaXMgY29ycmVjdGx5IHNvdXJjZWQ6IGBpZiBXTEFOX1ZFTkRPUl9JTlRFUlNJTCBzb3VyY2UgJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvS2NvbmZpZyYjMzQ7IGVuZGlmYC4gVGhlbiwgSSYjMzk7bGwgcXVpY2tseSBsb29rIHVwIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9LY29uZmlnYCB0byBjb25maXJtIHRoYXQgdGhlIGludGVyc2lsIHNvdXJjZSBpcyBjb3JyZWN0LiBPa2F5LCB0aW1lIHRvIGdlbmVyYXRlIHNvbWUgdGVzdCBjYXNlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDc6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aW50ZXJzaWwvS2NvbmZpZyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWc9MjU9c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWc6MjY6c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWctMjctc291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvS2NvbmZpZ1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwNzoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjMzMwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKkFuYWx5emluZyB0aGUgS2NvbmZpZyBmb3IgV2lyZWxlc3MgTmV0d29ya2luZyBEcml2ZXJzKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGluLiBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB0aGUgd2lyZWxlc3MgbmV0d29ya2luZyBjb25maWd1cmF0aW9uIG9wdGlvbnMuIE15IGluc3RpbmN0IHRlbGxzIG1lIHRvIHN0YXJ0IHdpdGggdGhlIG1haW4gYEtjb25maWdgIGZpbGUgZm9yIHdpcmVsZXNzIGRyaXZlcnMuIEkmIzM5O20gZm9jdXNpbmcgb24gdGhhdCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvS2NvbmZpZ2AgZmlsZSwgc3BlY2lmaWNhbGx5IGFyb3VuZCBsaW5lIDI2LiBJJiMzOTttIGV4cGVjdGluZyB0aGF0IGFyZWEgdG8gY29udGFpbiBhIGhpZ2gtbGV2ZWwgb3ZlcnZpZXcgb3IgcGVyaGFwcyB0aGUgZGVmYXVsdCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEhvcGVmdWxseSwgSSYjMzk7bGwgZmluZCB0aGUgY29yZSBzdHJ1Y3R1cmUgb2YgaG93IHRoZXNlIGRyaXZlcnMgYXJlIG9yZ2FuaXplZCBhbmQgZW5hYmxlZCB0aGVyZS4gVGhpcyBzaG91bGQgcHJvdmlkZSBhIHNvbGlkIGJhc2UgZm9yIHVuZGVyc3RhbmRpbmcgaG93IGFsbCBvZiB0aGVzZSBzcGVjaWZpYyB3aXJlbGVzcyBpbXBsZW1lbnRhdGlvbnMgZml0IHRvZ2V0aGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwNzoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDM1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHQjXG4gICAzOlx0IyBXaXJlbGVzcyBMQU4gZGV2aWNlIGNvbmZpZ3VyYXRpb25cbiAgIDQ6XHQjXG4gICA1Olx0XG4gICA2Olx0bWVudWNvbmZpZyBXTEFOXG4gICA3Olx0XHRib29sIFwmIzM0O1dpcmVsZXNzIExBTlwmIzM0O1xuICAgODpcdFx0ZGVwZW5kcyBvbiAhUzM5MFxuICAgOTpcdFx0ZGVwZW5kcyBvbiBORVRcbiAgMTA6XHRcdHNlbGVjdCBXSVJFTEVTU1xuICAxMTpcdFx0ZGVmYXVsdCB5XG4gIDEyOlx0XHRoZWxwXG4gIDEzOlx0XHQgIFRoaXMgc2VjdGlvbiBjb250YWlucyBhbGwgdGhlIHByZSA4MDIuMTEgYW5kIDgwMi4xMSB3aXJlbGVzc1xuICAxNDpcdFx0ICBkZXZpY2UgZHJpdmVycy4gRm9yIGEgY29tcGxldGUgbGlzdCBvZiBkcml2ZXJzIGFuZCBkb2N1bWVudGF0aW9uXG4gIDE1Olx0XHQgIG9uIHRoZW0gcmVmZXIgdG8gdGhlIHdpcmVsZXNzIHdpa2k6XG4gIDE2Olx0XG4gIDE3Olx0XHQgIGh0dHBzOi8vd2lyZWxlc3Mud2lraS5rZXJuZWwub3JnL2VuL3VzZXJzL0RyaXZlcnNcbiAgMTg6XHRcbiAgMTk6XHRpZiBXTEFOXG4gIDIwOlx0XG4gIDIxOlx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2FkbXRlay9LY29uZmlnXCYjMzQ7XG4gIDIyOlx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9LY29uZmlnXCYjMzQ7XG4gIDIzOlx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0bWVsL0tjb25maWdcJiMzNDtcbiAgMjQ6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vS2NvbmZpZ1wmIzM0O1xuICAyNTpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9LY29uZmlnXCYjMzQ7XG4gIDI2Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL0tjb25maWdcJiMzNDtcbiAgMjc6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9LY29uZmlnXCYjMzQ7XG4gIDI4Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL0tjb25maWdcJiMzNDtcbiAgMjk6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL0tjb25maWdcJiMzNDtcbiAgMzA6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbW9yc2VtaWNyby9LY29uZmlnXCYjMzQ7XG4gIDMxOlx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9LY29uZmlnXCYjMzQ7XG4gIDMyOlx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3B1cmVsaWZpL0tjb25maWdcJiMzNDtcbiAgMzM6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL0tjb25maWdcJiMzNDtcbiAgMzQ6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9LY29uZmlnXCYjMzQ7XG4gIDM1Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9LY29uZmlnXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA3OjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3MDYxCgkJCQkJCQlvdXRwdXQ6IDE3NAoJCQkJCQkJdGhvdWdodHM6IDY3OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgUHJpc201NCBEcml2ZXIgUGF0Y2gqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkmIzM5O3ZlIGlkZW50aWZpZWQgdGhlIGtleSBjb25maWd1cmF0aW9uczogYFA1NF9DT01NT05gLCBgUDU0X1VTQmAsIGBQNTRfUENJYCwgYFA1NF9TUElgLCBgTUFDODAyMTFgLCBgV0xBTl9WRU5ET1JfSU5URVJTSUxgLCBgV0xBTmAsIGFuZCBgVVNCYC4gVGhlc2UgYXJlIHRoZSBmb3VuZGF0aW9uYWwgYnVpbGRpbmcgYmxvY2tzIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBlbnZpcm9ubWVudCBpbiB3aGljaCB0aGlzIGNoYW5nZSBvcGVyYXRlcy4KCk15IHByaW1hcnkgZm9jdXMgaXMgdGhlIG1vZGlmaWVkIGZ1bmN0aW9uLCBgcDU0X2ZpbmRfaWVgLiBJdCYjMzk7cyBub24tc3RhdGljLCB3aGljaCBtZWFucyBpdCYjMzk7cyBhY2Nlc3NpYmxlIGZyb20gb3RoZXIgcGFydHMgb2YgdGhlIGRyaXZlci4gSSYjMzk7dmUgcGlucG9pbnRlZCBpdHMgZGlyZWN0IGNhbGxlcnMgYW5kIHJlbGF0ZWQgZW50cnkgcG9pbnRzOiBgcDU0X2JlYWNvbl9mb3JtYXRfaWVfdGltYCwgYHA1NF9wc3BvbGxfd29ya2Fyb3VuZGAsIGFuZCBgcDU0X2JlYWNvbl91cGRhdGVgLiBEaWdnaW5nIGRlZXBlciwgSSBjb25maXJtZWQgd2hpY2ggb2YgdGhvc2UgYXJlIHN0YXRpYyBhbmQgd2hlcmUgdGhleSYjMzk7cmUgbG9jYXRlZC4gYHA1NF9iZWFjb25fZm9ybWF0X2llX3RpbWAsIGBwNTRfYmVhY29uX3VwZGF0ZWAsIGFuZCBgcDU0X2Jzc19pbmZvX2NoYW5nZWRgIGFyZSBhbGwgc3RhdGljIGFuZCBpbiBgbWFpbi5jYCwgd2hpbGUgYHA1NF9wc3BvbGxfd29ya2Fyb3VuZGAgaXMgc3RhdGljIGFuZCBpbiBgdHhyeC5jYC4gSSYjMzk7dmUgYWxzbyBub3RlZCB0aGF0IGBwNTRfcnhfZGF0YWAgaXMgc3RhdGljIGluIGB0eHJ4LmNgLCBhbmQgdGhhdCBgcDU0X3J4YCBpcyBhbiBleHBvcnRlZCBzeW1ib2wgaW4gYHR4cnguY2AuCgpJIG5lZWQgdG8gY29uZmlybSB0aGF0IG15IHByaW1hcnkgZm9jdXMgcmVtYWlucyBgcDU0X2ZpbmRfaWVgLiBBbHNvLCBJJiMzOTt2ZSBjb25maXJtZWQgdGhhdCBgcDU0X2JlYWNvbl9mb3JtYXRfaWVfdGltYCBhbmQgYHA1NF9wc3BvbGxfd29ya2Fyb3VuZGAgKmRpcmVjdGx5KiBjYWxsIGBwNTRfZmluZF9pZWAuCgpOb3csIHRoZSBjcnVjaWFsIHBhcnQ6IGFzc2Vzc2luZyB0aGUgZnV6emFiaWxpdHkuIFRoZSBwYXRjaCBhbHRlcnMgYHA1NF9maW5kX2llYCBieSByZW1vdmluZyBhbiBpbml0aWFsIGZyYW1lIGxlbmd0aCBjaGVjayAqYmVmb3JlKiBwYXJzaW5nIElFcy4gVGhpcyBpcyBhIHJlZCBmbGFnLiBUaGUgcmVhc29uaW5nIGlzIGNsZWFyOiBXaXRob3V0IHRoYXQgY2hlY2ssIG1hbGZvcm1lZCBvciBzaG9ydCBwYWNrZXRzIGNvdWxkIGxlYWQgdG8gb3V0LW9mLWJvdW5kcyByZWFkcyBvciBpbnZhbGlkIHBvaW50ZXIgYXJpdGhtZXRpYy4gV2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgYSB3aXJlbGVzcyBkcml2ZXIsIGFuZCBzcGVjaWZpY2FsbHkgUHJpc201NCwgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSB2aXJ0dWFsaXplZC9lbXVsYXRlZCBVU0IgZGV2aWNlcyBhbmQgTUFDODAyMTEgYmVhY29uL2RhdGEgZnJhbWUgcHJvY2Vzc2luZy4gVGhpcyBpcyBwcmltZSBmdXp6aW5nIHRlcnJpdG9yeS4KClRoZXJlZm9yZSwgdGhpcyBjaGFuZ2UgaXMgZGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nIGFuZCB3aWxsIGdpdmUgdGhlIGZvbGxvd2luZyBhcyB0aGUgb3V0cHV0IGZyb20gc2V0LXJlc3VsdHMuCi0gV29ydGhGdXp6aW5nOiB0cnVlCi0gUmVhc29uaW5nOiBDb25jaXNlIGV4cGxhbmF0aW9uIG9mIHdoeSBpdCYjMzk7cyB3b3J0aCBmdXp6aW5nOiBUaGUgcGF0Y2ggbW9kaWZpZXMgYHA1NF9maW5kX2llKClgIGluIHRoZSBQcmlzbTU0IHdpcmVsZXNzIGRyaXZlciBieSByZW1vdmluZyBhbiBpbml0aWFsIGZyYW1lIGxlbmd0aCBjaGVjayBwcmlvciB0byBwYXJzaW5nIGluZm9ybWF0aW9uIGVsZW1lbnRzIChJRXMpLiBUaGUgZHJpdmVyIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSB2aXJ0dWFsaXplZC9lbXVsYXRlZCBVU0IgZGV2aWNlcyAoYHA1NHVzYmApIGFuZCBtYWM4MDIxMSBiZWFjb24vZGF0YSBmcmFtZSBwcm9jZXNzaW5nLCB3YXJyYW50aW5nIGZ1enppbmcgdG8gZW5zdXJlIG1hbGZvcm1lZCBvciBzaG9ydCBwYWNrZXRzIGNhbm5vdCB0cmlnZ2VyIG91dC1vZi1ib3VuZHMgcmVhZHMgb3IgaW52YWxpZCBwb2ludGVyIGFyaXRobWV0aWMuCi0gRm9jdXNTeW1ib2xzOiBgWyYjMzQ7cDU0X2ZpbmRfaWUmIzM0OywgJiMzNDtwNTRfYmVhY29uX2Zvcm1hdF9pZV90aW0mIzM0OywgJiMzNDtwNTRfcHNwb2xsX3dvcmthcm91bmQmIzM0O11gCi0gRW5hYmxlQ29uZmlnczogYFsmIzM0O1A1NF9DT01NT04mIzM0OywgJiMzNDtQNTRfVVNCJiMzNDssICYjMzQ7TUFDODAyMTEmIzM0OywgJiMzNDtXTEFOX1ZFTkRPUl9JTlRFUlNJTCYjMzQ7XWAKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDc6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1A1NF9DT01NT04mIzM0OywKICAgICYjMzQ7UDU0X1VTQiYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtXTEFOX1ZFTkRPUl9JTlRFUlNJTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3A1NF9maW5kX2llJiMzNDssCiAgICAmIzM0O3A1NF9iZWFjb25fZm9ybWF0X2llX3RpbSYjMzQ7LAogICAgJiMzNDtwNTRfcHNwb2xsX3dvcmthcm91bmQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGZyYW1lIHZhbGlkYXRpb24gbG9naWMgaW4gcDU0X2ZpbmRfaWUoKSBieSByZW1vdmluZyBhIGxlbmd0aCBjaGVjayBwcmlvciB0byBwYXJzaW5nIGluZm9ybWF0aW9uIGVsZW1lbnRzLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSBlbXVsYXRlZCBVU0IgZGV2aWNlcyAocDU0dXNiKSBhbmQgbWFjODAyMTEgYmVhY29uL2ZyYW1lIGhhbmRsaW5nLiBGdXp6aW5nIGlzIHdhcnJhbnRlZCB0byBjaGVjayBmb3Igb3V0LW9mLWJvdW5kcyByZWFkcyBvciByZWdyZXNzaW9ucyB3aXRoIHRydW5jYXRlZCBwYWNrZXRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtQNTRfQ09NTU9OJiMzNDssCiAgICAmIzM0O1A1NF9VU0ImIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7V0xBTl9WRU5ET1JfSU5URVJTSUwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtwNTRfZmluZF9pZSYjMzQ7LAogICAgJiMzNDtwNTRfYmVhY29uX2Zvcm1hdF9pZV90aW0mIzM0OywKICAgICYjMzQ7cDU0X3BzcG9sbF93b3JrYXJvdW5kJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBmcmFtZSB2YWxpZGF0aW9uIGxvZ2ljIGluIHA1NF9maW5kX2llKCkgYnkgcmVtb3ZpbmcgYSBsZW5ndGggY2hlY2sgcHJpb3IgdG8gcGFyc2luZyBpbmZvcm1hdGlvbiBlbGVtZW50cy4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgZW11bGF0ZWQgVVNCIGRldmljZXMgKHA1NHVzYikgYW5kIG1hYzgwMjExIGJlYWNvbi9mcmFtZSBoYW5kbGluZy4gRnV6emluZyBpcyB3YXJyYW50ZWQgdG8gY2hlY2sgZm9yIG91dC1vZi1ib3VuZHMgcmVhZHMgb3IgcmVncmVzc2lvbnMgd2l0aCB0cnVuY2F0ZWQgcGFja2V0cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDc6MjE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwNzoyMTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlbW92ZXMgYW4gZXJyb25lb3VzIGNoZWNrIGBpZiAoc2tiLVx1MDAzZWxlbiBcdTAwM2M9IHNpemVvZihtZ210KSlgIGluIGBwNTRfZmluZF9pZSgpYCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uY2AuXG5cbktBU0FOIHZzLiBLTVNBTiBhbmFseXNpczpcbjEuIEtNU0FOIGFwcGxpY2FiaWxpdHk6IEtNU0FOIGRldGVjdHMgdXNlIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IChzdGFjay9oZWFwL3BhZ2UpIGFuZCBrZXJuZWwtdG8tdXNlciBpbmZvLWxlYWtzLiBUaGlzIHBhdGNoIGRvZXMgbm90IGFsbG9jYXRlIG5ldyB1bmluaXRpYWxpemVkIGJ1ZmZlcnMsIGRvZXMgbm90IGludHJvZHVjZSB1bmluaXRpYWxpemVkIHN0YWNrIG9yIGhlYXAgdmFyaWFibGVzLCBkb2VzIG5vdCBjb3B5IGtlcm5lbCBkYXRhIHRvIHVzZXIgc3BhY2UsIGFuZCBkb2VzIG5vdCBhbHRlciBsb2dpYyB0byBicmFuY2ggb24gdW5pbml0aWFsaXplZCB2YWx1ZXMuIFRoZSBza2IgYnVmZmVyIGNvbnRhaW5zIHJlY2VpdmVkL2NvbnN0cnVjdGVkIGZyYW1lIGRhdGEuXG4yLiBLQVNBTiBhcHBsaWNhYmlsaXR5OiBBbnkgcG90ZW50aWFsIG1lbW9yeSBzYWZldHkgaXNzdWUgY2F1c2VkIGJ5IHJlbW92aW5nIHRoZSBjaGVjayAoZS5nLiwgaWYgYSBtYWxmb3JtZWQgc2tiIHdpdGggYSBsZW5ndGggc21hbGxlciB0aGFuIHRoZSBiZWFjb24gaGVhZGVyIHdlcmUgcGFyc2VkIGFuZCBsZWQgdG8gYW4gb3V0LW9mLWJvdW5kcyByZWFkKSB3b3VsZCByZXByZXNlbnQgYW4gb3V0LW9mLWJvdW5kcyBidWZmZXIgYWNjZXNzLCB3aGljaCBpcyB0cmFja2VkIGFuZCBkZXRlY3RlZCBieSBLQVNBTi5cblxuVGhlcmVmb3JlLCB0aGlzIGNoYW5nZSBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLCBhbmQgYSBkZWRpY2F0ZWQgS01TQU4gc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAyOTNjOGU5ZGE3YjQ2ODVjNGVkNzM5N2QxYjBlYTAxMTgyNDg3MzI2CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBTZXAgNyAwNzoyMDozNyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jCmluZGV4IDU3YTYyMTA4Y2JjMzUuLjhmOTIxZGM0ZWNkMzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYwpAQCAtNzYsOSAmIzQzOzc2LDYgQEAgdTggKnA1NF9maW5kX2llKHN0cnVjdCBza19idWZmICpza2IsIHU4IGllKQogCXN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdCA9ICh2b2lkICopc2tiLSZndDtkYXRhOwogCXU4ICpwb3MsICplbmQ7CiAKLQlpZiAoc2tiLSZndDtsZW4gJmx0Oz0gc2l6ZW9mKG1nbXQpKQotCQlyZXR1cm4gTlVMTDsKLQogCXBvcyA9ICh1OCAqKW1nbXQtJmd0O3UuYmVhY29uLnZhcmlhYmxlOwogCWVuZCA9IHNrYi0mZ3Q7ZGF0YSAmIzQzOyBza2ItJmd0O2xlbjsKIAl3aGlsZSAocG9zICZsdDsgZW5kKSB7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwNzoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTIzCgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMzg4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIExpbnV4IEtlcm5lbCBQYXRjaCBmb3IgS01TQU4gVGVzdGluZyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgc2FmZXR5IGNoZWNrOiB0aGlzIGlzIGEgUUEvdHJpYWdlIHRhc2ssIGZvY3VzZWQgb24gYSBwYXRjaCBmb3IgYSBMaW51eCBrZXJuZWwgZHJpdmVyLiBObyBleHBsb2l0IGdlbmVyYXRpb24gb3IgbWFsd2FyZSBjb25jZXJucywgc28gd2UmIzM5O3JlIGdvb2QgdG8gcHJvY2VlZC4gVGhlIHNwZWNpZmljIHJlcXVlc3QgaXMgdG8gZGV0ZXJtaW5lIGlmIHRoZSBwYXRjaCB0byBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uY2AgbmVjZXNzaXRhdGVzIEtNU0FOIHRlc3RpbmcuCgpOb3csIGxldCYjMzk7cyBleGFtaW5lIHRoZSBwYXRjaCBpdHNlbGYuIEl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgcmVtb3ZpbmcgYSBzaXplIGNoZWNrIHdpdGhpbiB0aGUgYHA1NF9maW5kX2llYCBmdW5jdGlvbi4gU3BlY2lmaWNhbGx5LCB0aGUgZGlmZiByZW1vdmVzIGEgY2hlY2sgYGlmIChza2ItJmd0O2xlbiAmbHQ7PSBzaXplb2YobWdtdCkpIHJldHVybiBOVUxMO2AuIFRoaXMgZnVuY3Rpb24gaXMgbGlrZWx5IHVzZWQgdG8gcGFyc2UgSW5mb3JtYXRpb24gRWxlbWVudHMgZnJvbSBhIHdpcmVsZXNzIGZyYW1lLCBzcGVjaWZpY2FsbHkgd2l0aGluIGJlYWNvbiBvciBwcm9iZSByZXNwb25zZSBmcmFtZXMuIFJlbW92aW5nIHRoaXMgY2hlY2sgY291bGQgaW50cm9kdWNlIHZ1bG5lcmFiaWxpdGllcyBpZiBgc2tiLSZndDtsZW5gIGlzIHNtYWxsZXIgdGhhbiBleHBlY3RlZCwgcG90ZW50aWFsbHkgbGVhZGluZyB0byBvdXQtb2YtYm91bmRzIHJlYWRzLiBUaGUgcmVtb3ZlZCBjaGVjayBwcmV2ZW50ZWQgYWNjZXNzIHRvIHRoZSBgdmFyaWFibGVgIGZpZWxkIG9mIHRoZSBgaWVlZTgwMjExX21nbXRgIHN0cnVjdCB3aGVuIHRoZSBmcmFtZSBsZW5ndGggd2FzIHRvbyBzbWFsbC4KCkdpdmVuIHRoaXMgY29udGV4dCwgcmVtb3ZpbmcgdGhlIHNpemUgY2hlY2sgaW4gYHA1NF9maW5kX2llYCBpcyBhIHBvdGVudGlhbCByZWQgZmxhZy4gTXkgaW50dWl0aW9uIGlzIHRoYXQgdGhpcyAqbWlnaHQqIGJlIHJpc2t5LCBidXQgSSBuZWVkIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgdG8gbWFrZSBhbiBpbmZvcm1lZCBkZWNpc2lvbi4gSSYjMzk7bSBnb2luZyB0byB1c2UgYHJlYWQtZmlsZWAgdG8gZ2V0IHRoZSBjb250ZXh0IG9mIHRoZSBjb2RlIGFyb3VuZCBsaW5lIDc2IGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jYC4gVGhpcyB3aWxsIGdpdmUgbWUgdGhlIGZ1bGwgcGljdHVyZSBvZiBob3cgYHA1NF9maW5kX2llYCBpcyB1c2VkIGFuZCB3aGVyZSBpdCYjMzk7cyBjYWxsZWQuIEJhc2VkIG9uIHRoaXMgaW5mb3JtYXRpb24sIEkgd2lsbCBkZWNpZGUgd2hldGhlciBgTmVlZHNLTVNBTj10cnVlYCBvciBgZmFsc2VgLiBNeSBpbml0aWFsIGxlYW5pbmcgaXMgdG93YXJkcyBgTmVlZHNLTVNBTj10cnVlYCBiZWNhdXNlIG9mIHRoZSBwb3RlbnRpYWwgZm9yIG91dC1vZi1ib3VuZHMgcmVhZHMsIGJ1dCBJIG5lZWQgbW9yZSBpbmZvcm1hdGlvbiB0byBiZSBzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwNzoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA2NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDY1Olx0XG4gIDY2Olx0c3RhdGljIGludCBwNTRfc2V0X3RpbShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpkZXYsIHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsXG4gIDY3Olx0XHRcdFx0Ym9vbCBzZXQpXG4gIDY4Olx0e1xuICA2OTpcdFx0c3RydWN0IHA1NF9jb21tb24gKnByaXYgPSBkZXYtXHUwMDNlcHJpdjtcbiAgNzA6XHRcbiAgNzE6XHRcdHJldHVybiBwNTRfdXBkYXRlX2JlYWNvbl90aW0ocHJpdiwgc3RhLVx1MDAzZWFpZCwgc2V0KTtcbiAgNzI6XHR9XG4gIDczOlx0XG4gIDc0Olx0dTggKnA1NF9maW5kX2llKHN0cnVjdCBza19idWZmICpza2IsIHU4IGllKVxuICA3NTpcdHtcbiAgNzY6XHRcdHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdCA9ICh2b2lkICopc2tiLVx1MDAzZWRhdGE7XG4gIDc3Olx0XHR1OCAqcG9zLCAqZW5kO1xuICA3ODpcdFxuICA3OTpcdFx0cG9zID0gKHU4ICopbWdtdC1cdTAwM2V1LmJlYWNvbi52YXJpYWJsZTtcbiAgODA6XHRcdGVuZCA9IHNrYi1cdTAwM2VkYXRhICYjNDM7IHNrYi1cdTAwM2VsZW47XG4gIDgxOlx0XHR3aGlsZSAocG9zIFx1MDAzYyBlbmQpIHtcbiAgODI6XHRcdFx0aWYgKHBvcyAmIzQzOyAyICYjNDM7IHBvc1sxXSBcdTAwM2UgZW5kKVxuICA4MzpcdFx0XHRcdHJldHVybiBOVUxMO1xuICA4NDpcdFxuICA4NTpcdFx0XHRpZiAocG9zWzBdID09IGllKVxuICA4NjpcdFx0XHRcdHJldHVybiBwb3M7XG4gIDg3Olx0XG4gIDg4Olx0XHRcdHBvcyAmIzQzOz0gMiAmIzQzOyBwb3NbMV07XG4gIDg5Olx0XHR9XG4gIDkwOlx0XHRyZXR1cm4gTlVMTDtcbiAgOTE6XHR9XG4gIDkyOlx0XG4gIDkzOlx0c3RhdGljIGludCBwNTRfYmVhY29uX2Zvcm1hdF9pZV90aW0oc3RydWN0IHNrX2J1ZmYgKnNrYilcbiAgOTQ6XHR7XG4gIDk1Olx0XHQvKlxuICA5NjpcdFx0ICogdGhlIGdvb2QgZXhjdXNlIGZvciB0aGlzIG1lc3MgaXMgLi4uIHRoZSBmaXJtd2FyZS5cbiAgOTc6XHRcdCAqIFRoZSBkdW1teSBUSU0gTVVTVCBiZSBhdCB0aGUgZW5kIG9mIHRoZSBiZWFjb24gZnJhbWUsXG4gIDk4Olx0XHQgKiBiZWNhdXNlIGl0JiMzOTtsbCBiZSBvdmVyd3JpdHRlbiFcbiAgOTk6XHRcdCAqL1xuIDEwMDpcdFx0dTggKnRpbTtcbiAxMDE6XHRcdHU4IGR0aW1fbGVuO1xuIDEwMjpcdFx0dTggZHRpbV9wZXJpb2Q7XG4gMTAzOlx0XHR1OCAqbmV4dDtcbiAxMDQ6XHRcbiAxMDU6XHRcdHRpbSA9IHA1NF9maW5kX2llKHNrYiwgV0xBTl9FSURfVElNKTtcbiAxMDY6XHRcdGlmICghdGltKVxuIDEwNzpcdFx0XHRyZXR1cm4gMDtcbiAxMDg6XHRcbiAxMDk6XHRcdGR0aW1fbGVuID0gdGltWzFdO1xuIDExMDpcdFx0ZHRpbV9wZXJpb2QgPSB0aW1bM107XG4gMTExOlx0XHRuZXh0ID0gdGltICYjNDM7IDIgJiM0MzsgZHRpbV9sZW47XG4gMTEyOlx0XG4gMTEzOlx0XHRpZiAoZHRpbV9sZW4gXHUwMDNjIDMpXG4gMTE0Olx0XHRcdHJldHVybiAtRUlOVkFMO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwNzoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjQ4CgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMTIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIE5ldHdvcmsgUGFja2V0IEJ1ZyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBUaGF0IGBpZmAgc3RhdGVtZW504oCmIHdoYXQgd2FzIHRoZSBpbnRlbnRpb24gdGhlcmU/IEFoLCByaWdodCwgaXQgd2FzIHN1cHBvc2VkIHRvIGJlIGEgY2hlY2sgb24gdGhlIHBhY2tldCYjMzk7cyBzaXplLCBzcGVjaWZpY2FsbHkgY29tcGFyaW5nIGBza2ItJmd0O2xlbmAgdG8gc29tZXRoaW5nLiBCdXQgd2FpdCBhIG1pbnV0ZeKApiBgc2l6ZW9mKG1nbXQpYD8gVGhhdCYjMzk7c+KApiBhIHBvaW50ZXIgc2l6ZSEgVGhhdCYjMzk7cyBhIGNsYXNzaWMgYnVnLiBJIHJlbWVtYmVyIHNlZWluZyB0aGF0IGtpbmQgb2YgbWlzdGFrZSBiZWZvcmUuIFRoZSBwcm9ncmFtbWVyICpwcm9iYWJseSogaW50ZW5kZWQgdG8gdXNlIGBzaXplb2YoKm1nbXQpYCB0byBnZXQgdGhlIHNpemUgb2YgdGhlIHN0cnVjdHVyZSB0aGUgcG9pbnRlciBwb2ludHMgdG8sIG9yIG1heWJlIGV2ZW4gYG9mZnNldG9mKC4uLilgIHRvIGNhbGN1bGF0ZSB0aGUgb2Zmc2V0IHRvIHRoZSBzcGVjaWZpYyBmaWVsZCwgYnV0IGl0JiMzOTtzIHVzaW5nIHRoZSBzaXplIG9mIHRoZSBwb2ludGVyIGl0c2VsZiEgU28sIHJlbW92aW5nIHRoZSBlbnRpcmUgYGlmYCBzdGF0ZW1lbnQgaGFzIGltcGxpY2F0aW9ucy4gSXQgZ29lcyBzdHJhaWdodCB0byB0aGlzIGxpbmU6CgpgcG9zID0gKHU4ICopbWdtdC0mZ3Q7dS5iZWFjb24udmFyaWFibGU7YAoKTm93IHRoYXQgdGhlIGNoZWNrIGlzIGdvbmUsIHRoZSBjcml0aWNhbCB0aGluZyBpcyB0aGF0IHRoZXJlJiMzOTtzIG5vIHNhZmVndWFyZCBvZiBwYWNrZXQgc2l6ZS4KCldoYXQmIzM5O3MgdGhlIG9mZnNldCBvZiBgbWdtdC0mZ3Q7dS5iZWFjb24udmFyaWFibGVgPyBJIG5lZWQgdG8gY2hlY2sgdGhlIGBzdHJ1Y3QgaWVlZTgwMjExX21nbXRgIGRlZmluaXRpb24uIEl0JiMzOTtzIHRpbWUgdG8gZGlnIGludG8gdGhlIHN0cnVjdHVyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIG1lYW5zLCB3aGF0IHRoZSBvZmZzZXQgaXMgYW5kIHdoZXRoZXIgcmVtb3ZpbmcgdGhlIGNoZWNrIGlzIHNhZmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA3OjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0cnVjdCBpZWVlODAyMTFfbWdtdFxcYiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTg0MCBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYz0xNTg5PXN0YXRpYyBpbnQgYXRoMTBrX21hY19zZXR1cF9iY25fcDJwX2llKHN0cnVjdCBhdGgxMGtfdmlmICphcnZpZixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTE1OTItXHRzdHJ1Y3QgYXRoMTBrICphciA9IGFydmlmLVx1MDAzZWFyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYzoxNTkzOlx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy0xNTk0LVx0Y29uc3QgdTggKnAycF9pZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jPTE2NDg9c3RhdGljIGludCBhdGgxMGtfbWFjX3NldHVwX2Jjbl90bXBsKHN0cnVjdCBhdGgxMGtfdmlmICphcnZpZilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTE2ODEtXHRhdGgxMGtfbWFjX3JlbW92ZV92ZW5kb3JfaWUoYmNuLCBXTEFOX09VSV9XRkEsIFdMQU5fT1VJX1RZUEVfV0ZBX1AyUCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM6MTY4MjpcdFx0XHRcdCAgICBvZmZzZXRvZihzdHJ1Y3QgaWVlZTgwMjExX21nbXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTE2ODMtXHRcdFx0XHRcdCAgICAgdS5iZWFjb24udmFyaWFibGUpKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jPTIwOTU9c3RhdGljIHZvaWQgYXRoMTBrX21hY19oYW5kbGVfYmVhY29uX2l0ZXIodm9pZCAqZGF0YSwgdTggKm1hYyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTIwOTgtXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiID0gZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM6MjA5OTpcdHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdCA9ICh2b2lkICopc2tiLVx1MDAzZWRhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTIxMDAtXHRzdHJ1Y3QgYXRoMTBrX3ZpZiAqYXJ2aWYgPSAodm9pZCAqKXZpZi1cdTAwM2VkcnZfcHJpdjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jPTEzNzM9c3RhdGljIGJvb2wgYXRoMTFrX21hY19zZXRfbm9udHhfdmlmX3BhcmFtcyhzdHJ1Y3QgYXRoMTFrX3ZpZiAqdHhfYXJ2aWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYy0xMzc2LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmM6MTM3NzpcdHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMtMTM3OC1cdGNvbnN0IHU4ICppZXMsICpwcm9maWxlLCAqbmV4dF9wcm9maWxlO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMtMTM4MS1cdGllcyA9IGJjbi1cdTAwM2VkYXRhICYjNDM7IGllZWU4MDIxMV9nZXRfaGRybGVuX2Zyb21fc2tiKGJjbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jOjEzODI6XHRtZ210ID0gKHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKWJjbi1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYy0xMzgzLVx0aWVzICYjNDM7PSBzaXplb2YobWdtdC1cdTAwM2V1LmJlYWNvbik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYz0xNDI2PXN0YXRpYyBpbnQgYXRoMTFrX21hY19zZXR1cF9iY25fcDJwX2llKHN0cnVjdCBhdGgxMWtfdmlmICphcnZpZixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jLTE0MjktXHRzdHJ1Y3QgYXRoMTFrICphciA9IGFydmlmLVx1MDAzZWFyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYzoxNDMwOlx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYy0xNDMxLVx0Y29uc3QgdTggKnAycF9pZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jPTE0ODE9c3RhdGljIGludCBhdGgxMWtfbWFjX3NldF92aWZfcGFyYW1zKHN0cnVjdCBhdGgxMWtfdmlmICphcnZpZixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jLTE0ODQtXHRzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiID0gYXJ2aWYtXHUwMDNlYXItXHUwMDNlYWI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jOjE0ODU6XHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jLTE0ODYtXHRpbnQgcmV0ID0gMDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jLTE0ODktXHRpZXMgPSBiY24tXHUwMDNlZGF0YSAmIzQzOyBpZWVlODAyMTFfZ2V0X2hkcmxlbl9mcm9tX3NrYihiY24pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYzoxNDkwOlx0bWdtdCA9IChzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKiliY24tXHUwMDNlZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMtMTQ5MS1cdGllcyAmIzQzOz0gc2l6ZW9mKG1nbXQtXHUwMDNldS5iZWFjb24pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMtMTUyMC1cdFx0XHRcdFx0ICBXTEFOX09VSV9UWVBFX1dGQV9QMlAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jOjE1MjE6XHRcdFx0XHRcdCAgb2Zmc2V0b2Yoc3RydWN0IGllZWU4MDIxMV9tZ210LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYy0xNTIyLVx0XHRcdFx0XHRcdCAgIHUuYmVhY29uLnZhcmlhYmxlKSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYz0xNzQxPXN0YXRpYyB2b2lkIGF0aDExa19tYWNfaGFuZGxlX2JlYWNvbl9pdGVyKHZvaWQgKmRhdGEsIHU4ICptYWMsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYy0xNzQ0LVx0c3RydWN0IHNrX2J1ZmYgKnNrYiA9IGRhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jOjE3NDU6XHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQgPSAodm9pZCAqKXNrYi1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYy0xNzQ2LVx0c3RydWN0IGF0aDExa192aWYgKmFydmlmID0gYXRoMTFrX3ZpZl90b19hcnZpZih2aWYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmM9NjI2ND1zdGF0aWMgaW50IGF0aDExa19tYWNfbWdtdF9hY3Rpb25fZnJhbWVfZmlsbF9lbGVtX2RhdGEoc3RydWN0IGF0aDExa192aWYgKmFydmlmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMtNjI3Mi1cdHN0cnVjdCBhdGgxMWtfc2tiX2NiICpza2JfY2I7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jOjYyNzM6XHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jLTYyNzQtXHR1bnNpZ25lZCBpbnQgcmVtYWluaW5nX2xlbjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jLTYyOTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jOjYyOTM6XHRtZ210ID0gKHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKWhkcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMtNjI5NC1cdGJ1ZiA9ICh1OCAqKVx1MDAyNm1nbXQtXHUwMDNldS5hY3Rpb247XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9ody5oPTI0Mz1zdHJ1Y3QgYXRoMTJrX2h3X29wcyB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9ody5oLTI1MC1cdGJvb2wgKCppc19mcmFtZV9saW5rX2Fnbm9zdGljKShzdHJ1Y3QgYXRoMTJrX2xpbmtfdmlmICphcnZpZixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaHcuaDoyNTE6XHRcdFx0XHQgICAgICAgc3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaHcuaC0yNTItXHR2b2lkICgqc2V0X3J4X2xpbmtfaWQpKHN0cnVjdCBhdGgxMmtfZHBfcGVlciAqZHBfcGVlcixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jPTE1ODY9c3RhdGljIGludCBhdGgxMmtfbWFjX3NldHVwX2Jjbl9wMnBfaWUoc3RydWN0IGF0aDEya19saW5rX3ZpZiAqYXJ2aWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYy0xNTg5LVx0c3RydWN0IGF0aDEyayAqYXIgPSBhcnZpZi1cdTAwM2VhcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmM6MTU5MDpcdHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtMTU5MS1cdGNvbnN0IHU4ICpwMnBfaWU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYz0xNjQzPXN0YXRpYyB2b2lkIGF0aDEya19tYWNfc2V0X2FydmlmX2llcyhzdHJ1Y3QgYXRoMTJrX2xpbmtfdmlmICphcnZpZixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jLTE2NDcte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYzoxNjQ4Olx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210ID0gKHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKWJjbi1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYy0xNjQ5LVx0Y29uc3Qgc3RydWN0IGVsZW1lbnQgKmVsZW0sICpub250eCwgKmluZGV4LCAqbmllLCAqZXh0X2NhcF9pZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jPTE4MDQ9c3RhdGljIGludCBhdGgxMmtfbWFjX3NldHVwX2Jjbl90bXBsKHN0cnVjdCBhdGgxMmtfbGlua192aWYgKmFydmlmKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtMTg3MS1cdFx0XHRcdFx0XHQgIFdMQU5fT1VJX1RZUEVfV0ZBX1AyUCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmM6MTg3MjpcdFx0XHRcdFx0XHQgIG9mZnNldG9mKHN0cnVjdCBpZWVlODAyMTFfbWdtdCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtMTg3My1cdFx0XHRcdFx0XHRcdCAgIHUuYmVhY29uLnZhcmlhYmxlKSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYz0xOTQ0PXN0YXRpYyB2b2lkIGF0aDEya19tYWNfaGFuZGxlX2JlYWNvbl9pdGVyKHZvaWQgKmRhdGEsIHU4ICptYWMsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYy0xOTQ3LVx0c3RydWN0IHNrX2J1ZmYgKnNrYiA9IGRhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jOjE5NDg6XHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQgPSAodm9pZCAqKXNrYi1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYy0xOTQ5LVx0c3RydWN0IGF0aDEya192aWYgKmFodmlmID0gYXRoMTJrX3ZpZl90b19haHZpZih2aWYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmM9OTI4Mz1zdGF0aWMgaW50IGF0aDEya19tYWNfbWdtdF9hY3Rpb25fZnJhbWVfZmlsbF9lbGVtX2RhdGEoc3RydWN0IGF0aDEya19saW5rX3ZpZiAqYXJ2aWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYy05Mjk0LVx0c3RydWN0IGF0aDEya19za2JfY2IgKnNrYl9jYjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmM6OTI5NTpcdHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtOTI5Ni1cdHVuc2lnbmVkIGludCByZW1haW5pbmdfbGVuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtOTMxNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmM6OTMxNTpcdG1nbXQgPSAoc3RydWN0IGllZWU4MDIxMV9tZ210ICopaGRyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYy05MzE2LVx0YnVmID0gKHU4ICopXHUwMDI2bWdtdC1cdTAwM2V1LmFjdGlvbjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmM9NjY9YXRoMTJrX3dpZmk3X2lzX2ZyYW1lX2xpbmtfYWdub3N0aWNfcWNuOTI3NChzdHJ1Y3QgYXRoMTJrX2xpbmtfdmlmICphcnZpZixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuYzo2NzpcdFx0XHRcdFx0ICAgIHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuYy02OC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jPTkxPXN0YXRpYyBib29sIGF0aDEya193aWZpN19kcF9zcm5nX2lzX2NvbXBfcmluZ193Y243ODUwKGludCByaW5nX251bSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmMtOTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmM6OTk6c3RhdGljIGJvb2wgYXRoMTJrX2lzX2FkZGJhX3Jlc3BfYWN0aW9uX2NvZGUoc3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jLTEwMC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jPTExND1hdGgxMmtfd2lmaTdfaXNfZnJhbWVfbGlua19hZ25vc3RpY193Y243ODUwKHN0cnVjdCBhdGgxMmtfbGlua192aWYgKmFydmlmLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jOjExNTpcdFx0XHRcdFx0ICAgIHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuYy0xMTYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmM9NzgwPWludCBhdGgxMmtfd21pX21nbXRfc2VuZChzdHJ1Y3QgYXRoMTJrX2xpbmtfdmlmICphcnZpZiwgdTMyIGJ1Zl9pZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTc4OS1cdGludCBjbWRfbGVuID0gc2l6ZW9mKHN0cnVjdCBhdGgxMmtfd21pX21nbXRfc2VuZF90eF9wYXJhbXMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYzo3OTA6XHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQgPSAoc3RydWN0IGllZWU4MDIxMV9tZ210ICopaGRyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYy03OTEtXHRzdHJ1Y3QgYXRoMTJrX3dtaV9tbG9fbWdtdF9zZW5kX3BhcmFtcyAqbWxfcGFyYW1zO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9iYXNlLmM9MTI4NT1hdGg1a19jaGVja19pYnNzX3RzZihzdHJ1Y3QgYXRoNWtfaHcgKmFoLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9iYXNlLmMtMTI4OS1cdHUzMiBod190dTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9iYXNlLmM6MTI5MDpcdHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdCA9IChzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKilza2ItXHUwMDNlZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9iYXNlLmMtMTI5MS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM9Mjc3Mj1zdGF0aWMgaW50IGF0aDZrbF9zdGFydF9hcChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yNzc2LVx0c3RydWN0IGF0aDZrbF92aWYgKnZpZiA9IG5ldGRldl9wcml2KGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6Mjc3NzpcdHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yNzc4LVx0Ym9vbCBoaWRkZW4gPSBmYWxzZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMjgxMi1cdFx0cmV0dXJuIC1FSU5WQUw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MjgxMzpcdG1nbXQgPSAoc3RydWN0IGllZWU4MDIxMV9tZ210ICopIGluZm8tXHUwMDNlYmVhY29uLmhlYWQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMjgxNC1cdGllcyA9IG1nbXQtXHUwMDNldS5iZWFjb24udmFyaWFibGU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jPTMwNjk9c3RhdGljIGludCBhdGg2a2xfc2VuZF9nb19wcm9iZV9yZXNwKHN0cnVjdCBhdGg2a2xfdmlmICp2aWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTMwNzctXHRpbnQgcmV0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjMwNzg6XHRjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMzA3OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzozMDgwOlx0bWdtdCA9IChjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKikgYnVmO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTMwODEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jPTMxMDY9c3RhdGljIGJvb2wgYXRoNmtsX21nbXRfcG93ZXJzYXZlX2FwKHN0cnVjdCBhdGg2a2xfdmlmICp2aWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTMxMTUte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjMxMTY6XHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMzExNy1cdHN0cnVjdCBhdGg2a2xfc3RhICpjb25uO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0zMTIyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjMxMjM6XHRtZ210ID0gKHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKSBidWY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMzEyNC1cdGlmIChpc19tdWx0aWNhc3RfZXRoZXJfYWRkcihtZ210LVx1MDAzZWRhKSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM9MzE3OT1zdGF0aWMgYm9vbCBhdGg2a2xfaXNfcDJwX2dvX3NzaWQoY29uc3QgdTggKmJ1Ziwgc2l6ZV90IGxlbilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0zMTgwLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzozMTgxOlx0Y29uc3Qgc3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjMxODI6XHRtZ210ID0gKGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKSBidWY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMzE4My1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM9MzE5Mz1zdGF0aWMgaW50IGF0aDZrbF9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTMyMDMtXHR1MzIgaWQsIGZyZXE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MzIwNDpcdGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0zMjA1LVx0Ym9vbCBtb3JlX2RhdGEsIHF1ZXVlZDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMzIxNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzozMjE4Olx0bWdtdCA9IChjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKikgYnVmO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTMyMTktXHRpZiAodmlmLVx1MDAzZW53X3R5cGUgPT0gQVBfTkVUV09SSyBcdTAwMjZcdTAwMjYgdGVzdF9iaXQoQ09OTkVDVEVELCBcdTAwMjZ2aWYtXHUwMDNlZmxhZ3MpIFx1MDAyNlx1MDAyNlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvbWFpbi5jPTQyMz12b2lkIGF0aDZrbF9jb25uZWN0X2FwX21vZGVfc3RhKHN0cnVjdCBhdGg2a2xfdmlmICp2aWYsIHUxNiBhaWQsIHU4ICptYWNfYWRkcixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL21haW4uYy00MzYtXHRpZiAoYXNzb2NfcmVxX2xlbiBcdTAwM2Ugc2l6ZW9mKHN0cnVjdCBpZWVlODAyMTFfaGRyXzNhZGRyKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9tYWluLmM6NDM3Olx0XHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQgPVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9tYWluLmM6NDM4Olx0XHRcdChzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKikgYXNzb2NfaW5mbztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvbWFpbi5jLTQzOS1cdFx0aWYgKGllZWU4MDIxMV9pc19hc3NvY19yZXEobWdtdC1cdTAwM2VmcmFtZV9jb250cm9sKSBcdTAwMjZcdTAwMjZcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYmVhY29uLmM9MTEyPXN0YXRpYyBzdHJ1Y3QgYXRoX2J1ZiAqYXRoOWtfYmVhY29uX2dlbmVyYXRlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9iZWFjb24uYy0xMjEtXHRzdHJ1Y3QgaWVlZTgwMjExX3R4X2luZm8gKmluZm87XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYmVhY29uLmM6MTIyOlx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210X2hkcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9iZWFjb24uYy0xMjMtXHRpbnQgY2FicV9kZXB0aDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYmVhY29uLmMtMTQzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2JlYWNvbi5jOjE0NDpcdG1nbXRfaGRyID0gKHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKXNrYi1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2JlYWNvbi5jLTE0NS1cdG1nbXRfaGRyLVx1MDAzZXUuYmVhY29uLnRpbWVzdGFtcCA9IGF2cC1cdTAwM2V0c2ZfYWRqdXN0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jPTE5MT1zdGF0aWMgdm9pZCBhdGg5a19odGNfc2VuZF9iZWFjb24oc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTE5OS1cdHN0cnVjdCBpZWVlODAyMTFfdHhfaW5mbyAqaW5mbztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jOjIwMDpcdHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTIwMS1cdHN0cnVjdCBza19idWZmICpiZWFjb247XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMjI3LVx0ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYzoyMjg6XHRtZ210ID0gKHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKWJlYWNvbi1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMjI5LVx0bWdtdC1cdTAwM2V1LmJlYWNvbi50aW1lc3RhbXAgPSBhdnAtXHUwMDNldHNmYWRqdXN0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz0yMTQ9c3RhdGljIHZvaWQgYXRoOWtfaHRjX3R4X21nbXQoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0yMTktXHRzdHJ1Y3QgaWVlZTgwMjExX3R4X2luZm8gKnR4X2luZm8gPSBJRUVFODAyMTFfU0tCX0NCKHNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6MjIwOlx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTIyMS1cdHN0cnVjdCBpZWVlODAyMTFfaGRyICpoZHI7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTIzNi1cdGlmIChhdnAgXHUwMDI2XHUwMDI2IHVubGlrZWx5KGllZWU4MDIxMV9pc19wcm9iZV9yZXNwKGhkci1cdTAwM2VmcmFtZV9jb250cm9sKSkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzoyMzc6XHRcdG1nbXQgPSAoc3RydWN0IGllZWU4MDIxMV9tZ210ICopc2tiLVx1MDAzZWRhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMjM4LVx0XHRtZ210LVx1MDAzZXUucHJvYmVfcmVzcC50aW1lc3RhbXAgPSBhdnAtXHUwMDNldHNmYWRqdXN0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9yZWN2LmM9NTAzPXN0YXRpYyBib29sIGF0aF9iZWFjb25fZHRpbV9wZW5kaW5nX2NhYihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9yZWN2LmMtNTA1LVx0LyogQ2hlY2sgd2hldGhlciB0aGUgQmVhY29uIGZyYW1lIGhhcyBEVElNIGluZGljYXRpbmcgYnVmZmVyZWQgYmMvbWMgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9yZWN2LmM6NTA2Olx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3JlY3YuYy01MDctXHR1OCAqcG9zLCAqZW5kLCBpZCwgZWxlbjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvcmVjdi5jLTUwOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9yZWN2LmM6NTEwOlx0bWdtdCA9IChzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKilza2ItXHUwMDNlZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9yZWN2LmMtNTExLVx0cG9zID0gbWdtdC1cdTAwM2V1LmJlYWNvbi52YXJpYWJsZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvcnguYz00OTM9c3RhdGljIHU4ICpjYXJsOTE3MF9maW5kX2llKHU4ICpkYXRhLCB1bnNpZ25lZCBpbnQgbGVuLCB1OCBpZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9jYXJsOTE3MC9yeC5jLTQ5NC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvcnguYzo0OTU6XHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQgPSAodm9pZCAqKWRhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvcnguYy00OTYtXHR1OCAqcG9zLCAqZW5kO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL2NmZzgwMjExLmM9MTg2MT1fd2lsX2NmZzgwMjExX2dldF9wcm9iZXJlc3BfaWVzKGNvbnN0IHU4ICpwcm9iZXJlc3AsIHUxNiBwcm9iZXJlc3BfbGVuLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL2NmZzgwMjExLmMtMTg2Ni1cdGlmIChwcm9iZXJlc3ApIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL2NmZzgwMjExLmM6MTg2NzpcdFx0c3RydWN0IGllZWU4MDIxMV9tZ210ICpmID1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL2NmZzgwMjExLmM6MTg2ODpcdFx0XHQoc3RydWN0IGllZWU4MDIxMV9tZ210ICopcHJvYmVyZXNwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvY2ZnODAyMTEuYzoxODY5Olx0XHRzaXplX3QgaGxlbiA9IG9mZnNldG9mKHN0cnVjdCBpZWVlODAyMTFfbWdtdCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL2NmZzgwMjExLmMtMTg3MC1cdFx0XHRcdCAgICAgICB1LnByb2JlX3Jlc3AudmFyaWFibGUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3dtaS5jPTgxNT1zdGF0aWMgdm9pZCB3bWlfZXZ0X3J4X21nbXQoc3RydWN0IHdpbDYyMTBfdmlmICp2aWYsIGludCBpZCwgdm9pZCAqZCwgaW50IGxlbilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC93bWkuYy04MTktXHRzdHJ1Y3Qgd2lwaHkgKndpcGh5ID0gd2lsX3RvX3dpcGh5KHdpbCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC93bWkuYzo4MjA6XHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKnJ4X21nbXRfZnJhbWUgPVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvd21pLmM6ODIxOlx0XHRcdChzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKilkYXRhLVx1MDAzZXBheWxvYWQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC93bWkuYy04MjItXHRpbnQgZmxlbiA9IGxlbiAtIG9mZnNldG9mKHN0cnVjdCB3bWlfcnhfbWdtdF9wYWNrZXRfZXZlbnQsIHBheWxvYWQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3dtaS5jLTg3OS1cdFx0Y29uc3QgdTggKmllX2J1ZiA9IHJ4X21nbXRfZnJhbWUtXHUwMDNldS5iZWFjb24udmFyaWFibGU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC93bWkuYzo4ODA6XHRcdHNpemVfdCBpZV9sZW4gPSBkX2xlbiAtIG9mZnNldG9mKHN0cnVjdCBpZWVlODAyMTFfbWdtdCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3dtaS5jLTg4MS1cdFx0XHRcdFx0XHQgdS5iZWFjb24udmFyaWFibGUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3dtaS5jPTkwOD1zdGF0aWMgdm9pZCB3bWlfZXZ0X3R4X21nbXQoc3RydWN0IHdpbDYyMTBfdmlmICp2aWYsIGludCBpZCwgdm9pZCAqZCwgaW50IGxlbilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC93bWkuYy05MTAtXHRzdHJ1Y3Qgd21pX3R4X21nbXRfcGFja2V0X2V2ZW50ICpkYXRhID0gZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3dtaS5jOjkxMTpcdHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdF9mcmFtZSA9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC93bWkuYzo5MTI6XHRcdFx0KHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKWRhdGEtXHUwMDNlcGF5bG9hZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3dtaS5jLTkxMy1cdGludCBmbGVuID0gbGVuIC0gb2Zmc2V0b2Yoc3RydWN0IHdtaV90eF9tZ210X3BhY2tldF9ldmVudCwgcGF5bG9hZCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvd21pLmM9MTM3Nj13bWlfZXZ0X3NjaGVkX3NjYW5fcmVzdWx0KHN0cnVjdCB3aWw2MjEwX3ZpZiAqdmlmLCBpbnQgaWQsIHZvaWQgKmQsIGludCBsZW4pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvd21pLmMtMTM4MC1cdHN0cnVjdCB3aXBoeSAqd2lwaHkgPSB3aWxfdG9fd2lwaHkod2lsKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3dtaS5jOjEzODE6XHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKnJ4X21nbXRfZnJhbWUgPVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvd21pLmM6MTM4MjpcdFx0KHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKWRhdGEtXHUwMDNlcGF5bG9hZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3dtaS5jLTEzODMtXHRpbnQgZmxlbiA9IGxlbiAtIG9mZnNldG9mKHN0cnVjdCB3bWlfc2NoZWRfc2Nhbl9yZXN1bHRfZXZlbnQsIHBheWxvYWQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3dtaS5jPTM2MTU9aW50IHdtaV9tZ210X3R4KHN0cnVjdCB3aWw2MjEwX3ZpZiAqdmlmLCBjb25zdCB1OCAqYnVmLCBzaXplX3QgbGVuKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3dtaS5jLTM2MTgtXHRzdHJ1Y3Qgd2lsNjIxMF9wcml2ICp3aWwgPSB2aWZfdG9fd2lsKHZpZik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC93bWkuYzozNjE5Olx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210X2ZyYW1lID0gKHZvaWQgKilidWY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC93bWkuYy0zNjIwLVx0c3RydWN0IHdtaV9zd190eF9yZXFfY21kICpjbWQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvd21pLmM9MzY2Mz1pbnQgd21pX21nbXRfdHhfZXh0KHN0cnVjdCB3aWw2MjEwX3ZpZiAqdmlmLCBjb25zdCB1OCAqYnVmLCBzaXplX3QgbGVuLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3dtaS5jLTM2NjctXHRzdHJ1Y3Qgd2lsNjIxMF9wcml2ICp3aWwgPSB2aWZfdG9fd2lsKHZpZik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC93bWkuYzozNjY4Olx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210X2ZyYW1lID0gKHZvaWQgKilidWY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC93bWkuYy0zNjY5LVx0c3RydWN0IHdtaV9zd190eF9yZXFfZXh0X2NtZCAqY21kO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0bWVsL2F0NzZjNTB4LXVzYi5jPTE1MDg9c3RhdGljIGlubGluZSBpbnQgYXQ3Nl9ndWVzc19mcmVxKHN0cnVjdCBhdDc2X3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRtZWwvYXQ3NmM1MHgtdXNiLmMtMTUyMi1cdGlmIChpZWVlODAyMTFfaXNfcHJvYmVfcmVzcChoZHItXHUwMDNlZnJhbWVfY29udHJvbCkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0bWVsL2F0NzZjNTB4LXVzYi5jOjE1MjM6XHRcdGVsX29mZiA9IG9mZnNldG9mKHN0cnVjdCBpZWVlODAyMTFfbWdtdCwgdS5wcm9iZV9yZXNwLnZhcmlhYmxlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0bWVsL2F0NzZjNTB4LXVzYi5jLTE1MjQtXHR9IGVsc2UgaWYgKGllZWU4MDIxMV9pc19iZWFjb24oaGRyLVx1MDAzZWZyYW1lX2NvbnRyb2wpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdG1lbC9hdDc2YzUweC11c2IuYzoxNTI1Olx0XHRlbF9vZmYgPSBvZmZzZXRvZihzdHJ1Y3QgaWVlZTgwMjExX21nbXQsIHUuYmVhY29uLnZhcmlhYmxlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0bWVsL2F0NzZjNTB4LXVzYi5jLTE1MjYtXHR9IGVsc2Uge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0bWVsL2F0NzZjNTB4LXVzYi5jPTE3NTc9c3RhdGljIHZvaWQgYXQ3Nl9tYWM4MDIxMV90eChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdG1lbC9hdDc2YzUweC11c2IuYy0xNzYzLVx0c3RydWN0IGllZWU4MDIxMV90eF9pbmZvICppbmZvID0gSUVFRTgwMjExX1NLQl9DQihza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRtZWwvYXQ3NmM1MHgtdXNiLmM6MTc2NDpcdHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdCA9IChzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKilza2ItXHUwMDNlZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0bWVsL2F0NzZjNTB4LXVzYi5jLTE3NjUtXHRpbnQgcGFkZGluZywgc3VibWl0X2xlbiwgcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2I0My9tYWluLmM9MTYwNj1zdGF0aWMgdm9pZCBiNDNfd3JpdGVfYmVhY29uX3RlbXBsYXRlKHN0cnVjdCBiNDNfd2xkZXYgKmRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDMvbWFpbi5jLTE2MTAtXHR1bnNpZ25lZCBpbnQgaSwgbGVuLCB2YXJpYWJsZV9sZW47XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDMvbWFpbi5jOjE2MTE6XHRjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKmJjbjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2I0My9tYWluLmMtMTYxMi1cdGNvbnN0IHU4ICppZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDMvbWFpbi5jLTE2MzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDMvbWFpbi5jOjE2MzQ6XHRiY24gPSAoY29uc3Qgc3RydWN0IGllZWU4MDIxMV9tZ210ICopKGJlYWNvbl9za2ItXHUwMDNlZGF0YSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDMvbWFpbi5jLTE2MzUtXHRsZW4gPSBtaW5fdChzaXplX3QsIGJlYWNvbl9za2ItXHUwMDNlbGVuLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2I0My9tYWluLmMtMTY1OC1cdGllID0gYmNuLVx1MDAzZXUuYmVhY29uLnZhcmlhYmxlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYjQzL21haW4uYzoxNjU5Olx0dmFyaWFibGVfbGVuID0gbGVuIC0gb2Zmc2V0b2Yoc3RydWN0IGllZWU4MDIxMV9tZ210LCB1LmJlYWNvbi52YXJpYWJsZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDMvbWFpbi5jLTE2NjAtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyB2YXJpYWJsZV9sZW4gLSAyOyApIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDMvbWFpbi5jLTE2NzgtXHRcdFx0dGltX3Bvc2l0aW9uID0gc2l6ZW9mKHN0cnVjdCBiNDNfcGxjcF9oZHI2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2I0My9tYWluLmM6MTY3OTpcdFx0XHR0aW1fcG9zaXRpb24gJiM0Mzs9IG9mZnNldG9mKHN0cnVjdCBpZWVlODAyMTFfbWdtdCwgdS5iZWFjb24udmFyaWFibGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYjQzL21haW4uYy0xNjgwLVx0XHRcdHRpbV9wb3NpdGlvbiAmIzQzOz0gaTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDNsZWdhY3kvbWFpbi5jPTkzOD1zdGF0aWMgdm9pZCBiNDNsZWdhY3lfd3JpdGVfYmVhY29uX3RlbXBsYXRlKHN0cnVjdCBiNDNsZWdhY3lfd2xkZXYgKmRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDNsZWdhY3kvbWFpbi5jLTk0My1cdHVuc2lnbmVkIGludCBpLCBsZW4sIHZhcmlhYmxlX2xlbjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2I0M2xlZ2FjeS9tYWluLmM6OTQ0Olx0Y29uc3Qgc3RydWN0IGllZWU4MDIxMV9tZ210ICpiY247XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDNsZWdhY3kvbWFpbi5jLTk0NS1cdGNvbnN0IHU4ICppZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDNsZWdhY3kvbWFpbi5jLTk1MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2I0M2xlZ2FjeS9tYWluLmM6OTUyOlx0YmNuID0gKGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKShkZXYtXHUwMDNld2wtXHUwMDNlY3VycmVudF9iZWFjb24tXHUwMDNlZGF0YSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDNsZWdhY3kvbWFpbi5jLTk1My1cdGxlbiA9IG1pbl90KHNpemVfdCwgZGV2LVx1MDAzZXdsLVx1MDAzZWN1cnJlbnRfYmVhY29uLVx1MDAzZWxlbixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDNsZWdhY3kvbWFpbi5jLTk3Ni1cdGllID0gYmNuLVx1MDAzZXUuYmVhY29uLnZhcmlhYmxlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYjQzbGVnYWN5L21haW4uYzo5Nzc6XHR2YXJpYWJsZV9sZW4gPSBsZW4gLSBvZmZzZXRvZihzdHJ1Y3QgaWVlZTgwMjExX21nbXQsIHUuYmVhY29uLnZhcmlhYmxlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2I0M2xlZ2FjeS9tYWluLmMtOTc4LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgdmFyaWFibGVfbGVuIC0gMjsgKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYjQzbGVnYWN5L21haW4uYy05OTYtXHRcdFx0dGltX3Bvc2l0aW9uID0gc2l6ZW9mKHN0cnVjdCBiNDNsZWdhY3lfcGxjcF9oZHI2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2I0M2xlZ2FjeS9tYWluLmM6OTk3Olx0XHRcdHRpbV9wb3NpdGlvbiAmIzQzOz0gb2Zmc2V0b2Yoc3RydWN0IGllZWU4MDIxMV9tZ210LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYjQzbGVnYWN5L21haW4uYy05OTgtXHRcdFx0XHRcdFx0IHUuYmVhY29uLnZhcmlhYmxlKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDNsZWdhY3kvbWFpbi5jPTEwNTA9c3RhdGljIGNvbnN0IHU4ICpiNDNsZWdhY3lfZ2VuZXJhdGVfcHJvYmVfcmVzcChzdHJ1Y3QgYjQzbGVnYWN5X3dsZGV2ICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYjQzbGVnYWN5L21haW4uYy0xMDY0LVx0LyogR2V0IHRoZSBzdGFydCBvZmZzZXQgb2YgdGhlIHZhcmlhYmxlIElFcyBpbiB0aGUgcGFja2V0LiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYjQzbGVnYWN5L21haW4uYzoxMDY1Olx0aWVfc3RhcnQgPSBvZmZzZXRvZihzdHJ1Y3QgaWVlZTgwMjExX21nbXQsIHUucHJvYmVfcmVzcC52YXJpYWJsZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDNsZWdhY3kvbWFpbi5jOjEwNjY6XHRCNDNsZWdhY3lfV0FSTl9PTihpZV9zdGFydCAhPSBvZmZzZXRvZihzdHJ1Y3QgaWVlZTgwMjExX21nbXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDNsZWdhY3kvbWFpbi5jLTEwNjctXHRcdFx0XHRcdCAgICAgICB1LmJlYWNvbi52YXJpYWJsZSkpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jPTU1NTY9YnJjbWZfY2ZnODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTU1NjMtXHRzaXplX3QgbGVuID0gcGFyYW1zLVx1MDAzZWxlbjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jOjU1NjQ6XHRjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy01NTY1LVx0c3RydWN0IGJyY21mX2NmZzgwMjExX3ZpZiAqdmlmO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTU1NzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYzo1NTc2Olx0bWdtdCA9IChjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKilidWY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy01NTc3LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jPTEwMj1pbnQgYnJjbWZfY3l3X21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2Rldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYy0xMDktXHRzaXplX3QgbGVuID0gcGFyYW1zLVx1MDAzZWxlbjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jOjExMDpcdGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jLTExMS1cdHN0cnVjdCBicmNtZl9jZmc4MDIxMV92aWYgKnZpZjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYy0xMjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYzoxMjE6XHRtZ210ID0gKGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKWJ1ZjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jLTEyMi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYz0yNzI9YnJjbWZfbm90aWZ5X2F1dGhfZnJhbWVfcngoc3RydWN0IGJyY21mX2lmICppZnAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmMtMjgxLVx0c3RydWN0IGJyY211X2NoYW4gY2g7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYzoyODI6XHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXRfZnJhbWU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYy0yODMtXHRzMzIgZnJlcTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYy0yOTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYzoyOTQ6XHRpZiAobWdtdF9mcmFtZV9sZW4gXHUwMDNjIG9mZnNldG9mKHN0cnVjdCBpZWVlODAyMTFfbWdtdCwgdSkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jLTI5NS1cdFx0YnBoeV9lcnIoZHJ2ciwgXCYjMzQ7RXZlbnQgJXMgKCVkKSBmcmFtZSB0b28gc21hbGwuIElnbm9yZVxcblwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYy0zMTQtXHRcdFx0ICAgICAgIEVUSF9BTEVOKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jOjMxNTpcdGZyYW1lICYjNDM7PSBvZmZzZXRvZihzdHJ1Y3QgaWVlZTgwMjExX21nbXQsIHUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmMtMzE2LVx0bWVtY3B5KFx1MDAyNm1nbXRfZnJhbWUtXHUwMDNldSwgZnJhbWUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYzozMTc6XHQgICAgICAgbWdtdF9mcmFtZV9sZW4gLSBvZmZzZXRvZihzdHJ1Y3QgaWVlZTgwMjExX21nbXQsIHUpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jLTMxOC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmM9MTQxND1pbnQgYnJjbWZfcDJwX25vdGlmeV9hY3Rpb25fZnJhbWVfcngoc3RydWN0IGJyY21mX2lmICppZnAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jLTE0MjgtXHRzdHJ1Y3QgYnJjbXVfY2hhbiBjaDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuYzoxNDI5Olx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210X2ZyYW1lO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jLTE0MzAtXHRzMzIgZnJlcTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmMtMTQ4Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuYzoxNDg3Olx0bWdtdF9mcmFtZSA9IGt6YWxsb2Mob2Zmc2V0b2Yoc3RydWN0IGllZWU4MDIxMV9tZ210LCB1KSAmIzQzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jLTE0ODgtXHRcdFx0ICAgICBtZ210X2ZyYW1lX2xlbiwgR0ZQX0tFUk5FTCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jLTE0OTgtXHRtZW1jcHkobWdtdF9mcmFtZS1cdTAwM2V1LmJvZHksIGZyYW1lLCBtZ210X2ZyYW1lX2xlbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmM6MTQ5OTpcdG1nbXRfZnJhbWVfbGVuICYjNDM7PSBvZmZzZXRvZihzdHJ1Y3QgaWVlZTgwMjExX21nbXQsIHUuYm9keSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmMtMTUwMC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS8zOTQ1LW1hYy5jPTI0NTc9aWwzOTQ1X3JlcXVlc3Rfc2NhbihzdHJ1Y3QgaWxfcHJpdiAqaWwsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvMzk0NS1tYWMuYy0yNTY5LVx0bGVuID1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5LzM5NDUtbWFjLmM6MjU3MDpcdCAgICBpbF9maWxsX3Byb2JlX3JlcShpbCwgKHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKXNjYW4tXHUwMDNlZGF0YSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5LzM5NDUtbWFjLmMtMjU3MS1cdFx0XHQgICAgICB2aWYtXHUwMDNlYWRkciwgaWwtXHUwMDNlc2Nhbl9yZXF1ZXN0LVx1MDAzZWllLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5LzQ5NjUtbWFjLmM9ODUwPWlsNDk2NV9yZXF1ZXN0X3NjYW4oc3RydWN0IGlsX3ByaXYgKmlsLCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5LzQ5NjUtbWFjLmMtMTAwNS1cdGNtZF9sZW4gPVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvNDk2NS1tYWMuYzoxMDA2Olx0ICAgIGlsX2ZpbGxfcHJvYmVfcmVxKGlsLCAoc3RydWN0IGllZWU4MDIxMV9tZ210ICopc2Nhbi1cdTAwM2VkYXRhLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvNDk2NS1tYWMuYy0xMDA3LVx0XHRcdCAgICAgIHZpZi1cdTAwM2VhZGRyLCBpbC1cdTAwM2VzY2FuX3JlcXVlc3QtXHUwMDNlaWUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvNDk2NS1tYWMuYz0zNzUzPWlsNDk2NV9zZXRfYmVhY29uX3RpbShzdHJ1Y3QgaWxfcHJpdiAqaWwsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvNDk2NS1tYWMuYy0zNzU3LVx0dTE2IHRpbV9pZHg7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS80OTY1LW1hYy5jOjM3NTg6XHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQgPSAoc3RydWN0IGllZWU4MDIxMV9tZ210ICopYmVhY29uO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvNDk2NS1tYWMuYy0zNzU5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5L2NvbW1vbi5jPTE2MTM9dTE2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS9jb21tb24uYzoxNjE0OmlsX2ZpbGxfcHJvYmVfcmVxKHN0cnVjdCBpbF9wcml2ICppbCwgc3RydWN0IGllZWU4MDIxMV9tZ210ICpmcmFtZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5L2NvbW1vbi5jLTE2MTUtXHRcdCAgY29uc3QgdTggKnRhLCBjb25zdCB1OCAqaWVzLCBpbnQgaWVfbGVuLCBpbnQgbGVmdClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS9jb21tb24uYz01MjUzPWlsX2JlYWNvbl91cGRhdGUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvY29tbW9uLmMtNTI3Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5L2NvbW1vbi5jOjUyNzc6XHR0aW1lc3RhbXAgPSAoKHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKXNrYi1cdTAwM2VkYXRhKS1cdTAwM2V1LmJlYWNvbi50aW1lc3RhbXA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS9jb21tb24uYy01Mjc4LVx0aWwtXHUwMDNldGltZXN0YW1wID0gbGU2NF90b19jcHUodGltZXN0YW1wKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS9jb21tb24uaD0xNzg5PWludCBpbF9mb3JjZV9yZXNldChzdHJ1Y3QgaWxfcHJpdiAqaWwsIGJvb2wgZXh0ZXJuYWwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvY29tbW9uLmg6MTc5MDp1MTYgaWxfZmlsbF9wcm9iZV9yZXEoc3RydWN0IGlsX3ByaXYgKmlsLCBzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKmZyYW1lLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvY29tbW9uLmgtMTc5MS1cdFx0ICAgICAgY29uc3QgdTggKnRhLCBjb25zdCB1OCAqaWUsIGludCBpZV9sZW4sIGludCBsZWZ0KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWluLmM9MTU0PXN0YXRpYyB2b2lkIGl3bF9zZXRfYmVhY29uX3RpbShzdHJ1Y3QgaXdsX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vbWFpbi5jLTE1OC1cdHUxNiB0aW1faWR4O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vbWFpbi5jOjE1OTpcdHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdCA9IChzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKiliZWFjb247XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWluLmMtMTYwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYz00ODg9c3RhdGljIGludCBpd2xfZ2V0X2NoYW5uZWxzX2Zvcl9zY2FuKHN0cnVjdCBpd2xfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmMtNTYwLSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jOjU2MTpzdGF0aWMgdTE2IGl3bF9maWxsX3Byb2JlX3JlcShzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKmZyYW1lLCBjb25zdCB1OCAqdGEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmMtNTYyLVx0XHRcdCAgICAgIGNvbnN0IHU4ICppZXMsIGludCBpZV9sZW4sIGNvbnN0IHU4ICpzc2lkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYz02MDk9c3RhdGljIGludCBpd2xhZ25fcmVxdWVzdF9zY2FuKHN0cnVjdCBpd2xfcHJpdiAqcHJpdiwgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmMtODQ1LVx0XHRjbWRfbGVuID0gaXdsX2ZpbGxfcHJvYmVfcmVxKFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jOjg0NjpcdFx0XHRcdFx0KHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKXNjYW4tXHUwMDNlZGF0YSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYy04NDctXHRcdFx0XHRcdHZpZi1cdTAwM2VhZGRyLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYy04NTUtXHRcdGNtZF9sZW4gPSBpd2xfZmlsbF9wcm9iZV9yZXEoXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmM6ODU2Olx0XHRcdFx0XHQoc3RydWN0IGllZWU4MDIxMV9tZ210ICopc2Nhbi1cdTAwM2VkYXRhLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jLTg1Ny1cdFx0XHRcdFx0aXdsX2JjYXN0X2FkZHIsIE5VTEwsIDAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdXRpbHMuaD0zOT11MzIgaXdsX2ZpbmRfaWVfb2Zmc2V0KHU4ICpiZWFjb24sIHU4IGVpZCwgdTMyIGZyYW1lX3NpemUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC11dGlscy5oLTQwLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXV0aWxzLmg6NDE6XHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQgPSAodm9pZCAqKWJlYWNvbjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvaXdsLXV0aWxzLmgtNDItXHRjb25zdCB1OCAqaWU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvYXAuYz0xOD12b2lkIGl3bF9tbGRfc2V0X3RpbV9pZHgoc3RydWN0IGl3bF9tbGQgKm1sZCwgX19sZTMyICp0aW1faW5kZXgsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvYXAuYy0yMS1cdHUzMiB0aW1faWR4O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvYXAuYzoyMjpcdHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdCA9ICh2b2lkICopYmVhY29uO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvYXAuYy0yMy1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tYWM4MDIxMS5jPTUwOT1pd2xfbWxkX21hYzgwMjExX3R4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21hYzgwMjExLmMtNTI5LVx0XHRcdHJjdV9kZXJlZmVyZW5jZShpbmZvLVx1MDAzZWNvbnRyb2wudmlmLVx1MDAzZWxpbmtfY29uZltsaW5rX2lkXSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tYWM4MDIxMS5jOjUzMDpcdFx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWFjODAyMTEuYy01MzEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvc2Nhbi5jPTM4Mj1pd2xfbWxkX3NjYW5fYnVpbGRfcHJvYmVfcmVxKHN0cnVjdCBpd2xfbWxkICptbGQsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvc2Nhbi5jLTM4NS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9zY2FuLmM6Mzg2Olx0c3RydWN0IGllZWU4MDIxMV9tZ210ICpmcmFtZSA9ICh2b2lkICopcGFyYW1zLVx1MDAzZXByZXEuYnVmO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvc2Nhbi5jLTM4Ny1cdHU4ICpwb3MsICpuZXdwb3M7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvdGltZV9zeW5jLmM9MTEzPXN0YXRpYyBib29sIGl3bF9tbGRfaXNfc2tiX21hdGNoKHN0cnVjdCBza19idWZmICpza2IsIHU4ICphZGRyLCB1OCBkaWFsb2dfdG9rZW4pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC90aW1lX3N5bmMuYy0xMTQte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvdGltZV9zeW5jLmM6MTE1Olx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210ID0gKHZvaWQgKilza2ItXHUwMDNlZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3RpbWVfc3luYy5jLTExNi1cdHU4IHNrYl9kaWFsb2dfdG9rZW47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vZnRtLWluaXRpYXRvci5jPTE0MzU9dm9pZCBpd2xfbXZtX2Z0bV9sY19ub3RpZihzdHJ1Y3QgaXdsX212bSAqbXZtLCBzdHJ1Y3QgaXdsX3J4X2NtZF9idWZmZXIgKnJ4Yilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9mdG0taW5pdGlhdG9yLmMtMTQzNy1cdHN0cnVjdCBpd2xfcnhfcGFja2V0ICpwa3QgPSByeGJfYWRkcihyeGIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vZnRtLWluaXRpYXRvci5jOjE0Mzg6XHRjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQgPSAodm9pZCAqKXBrdC1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vZnRtLWluaXRpYXRvci5jLTE0MzktXHRzaXplX3QgbGVuID0gaXdsX3J4X3BhY2tldF9wYXlsb2FkX2xlbihwa3QpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL21hYy1jdHh0LmM9ODQ3PXZvaWQgaXdsX212bV9tYWNfY3R4dF9zZXRfdGltKHN0cnVjdCBpd2xfbXZtICptdm0sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbWFjLWN0eHQuYy04NTEtXHR1MzIgdGltX2lkeDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL21hYy1jdHh0LmM6ODUyOlx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210ID0gKHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKWJlYWNvbjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL21hYy1jdHh0LmMtODUzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL21hYzgwMjExLmM9ODE0PXZvaWQgaXdsX212bV9tYWNfdHgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbWFjODAyMTEuYy04NTUtXHRcdFx0cmN1X2RlcmVmZXJlbmNlKGluZm8tXHUwMDNlY29udHJvbC52aWYtXHUwMDNlbGlua19jb25mW2xpbmtfaWRdKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL21hYzgwMjExLmM6ODU2Olx0XHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9tYWM4MDIxMS5jLTg1Ny1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9tdm0uaD0yNjcxPXN0YXRpYyBpbmxpbmUgYm9vbCBpd2xfbXZtX21laV9maWx0ZXJfc2NhbihzdHJ1Y3QgaXdsX212bSAqbXZtLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL212bS5oLTI2NzMte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbXZtLmg6MjY3NDpcdHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdCA9ICh2b2lkICopc2tiLVx1MDAzZWRhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9tdm0uaC0yNjc1LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3NjYW4uYz03NTI9aXdsX212bV9idWlsZF9zY2FuX3Byb2JlKHN0cnVjdCBpd2xfbXZtICptdm0sIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vc2Nhbi5jLTc1NS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9zY2FuLmM6NzU2Olx0c3RydWN0IGllZWU4MDIxMV9tZ210ICpmcmFtZSA9ICh2b2lkICopcGFyYW1zLVx1MDAzZXByZXEuYnVmO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vc2Nhbi5jLTc1Ny1cdHU4ICpwb3MsICpuZXdwb3M7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vc2Nhbi5jPTI3NDU9c3RhdGljIHZvaWQgaXdsX212bV9tZWlfc2Nhbl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd2spXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vc2Nhbi5jLTI3NjAtXHR3aGlsZSAoKHNrYiA9IHNrYl9kZXF1ZXVlKFx1MDAyNnNjYW5fZmlsdGVyLVx1MDAzZXNjYW5fcmVzKSkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3NjYW4uYzoyNzYxOlx0XHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQgPSAodm9pZCAqKXNrYi1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vc2Nhbi5jLTI3NjItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vdGltZS1zeW5jLmM9MTU9c3RhdGljIGJvb2wgaXdsX212bV9pc19za2JfbWF0Y2goc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTggKmFkZHIsIHU4IGRpYWxvZ190b2tlbilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3RpbWUtc3luYy5jLTE2LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3RpbWUtc3luYy5jOjE3Olx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210ID0gKHZvaWQgKilza2ItXHUwMDNlZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3RpbWUtc3luYy5jLTE4LVx0dTggc2tiX2RpYWxvZ190b2tlbjtcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwNzoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTM3MAoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqQW5hbHl6aW5nIHRoZSBDYWxsZXJzIG9mIGBwNTRfZmluZF9pZWAqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW4uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O1Nob3cgbWUgdGhlIGNhbGxlcnMgb2YgYHA1NF9maW5kX2llYC4mIzM0OyBJJiMzOTttIG5vdCBsb29raW5nIGZvciBhIHN1cGVyZmljaWFsIG92ZXJ2aWV3IGhlcmU7IEkgd2FudCBhIGRldGFpbGVkLCBncmFudWxhciB1bmRlcnN0YW5kaW5nIG9mICp3aGVyZSogYW5kICpob3cqIHRoaXMgZnVuY3Rpb24gaXMgYmVpbmcgdXRpbGl6ZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBjb250ZXh0IHdpdGhpbiB0aGUgYnJvYWRlciBzeXN0ZW0uIEkgd2FudCB0byBzZWUgdGhlIGNhbGwgZ3JhcGhzLCB0aGUgY29udHJvbCBmbG93IHBhdGhzLCBhbmQgaWRlbnRpZnkgdGhlIHNwZWNpZmljIGRhdGEgc3RydWN0dXJlcyBhbmQgdmFyaWFibGVzIGJlaW5nIHBhc3NlZCB0byBpdCBhdCBlYWNoIGNhbGwgc2l0ZS4gQXJlIHdlIHRhbGtpbmcgYWJvdXQgYSBoYW5kZnVsIG9mIGNhbGxzIGluIGEgdGlnaHRseSBjb3VwbGVkIG1vZHVsZSwgb3IgaXMgdGhpcyBhIHBlcnZhc2l2ZSB1dGlsaXR5IGZ1bmN0aW9uIHVzZWQgdGhyb3VnaG91dCB0aGUgY29kZWJhc2U/IEFyZSB0aGVyZSBhbnkgaW5kaXJlY3QgY2FsbHM/IEFueSByZWN1cnNpb24/IEkmIzM5O20gaG9waW5nIHRvIHF1aWNrbHkgaWRlbnRpZnkgYW55IHBvdGVudGlhbCBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcyBvciBzdWJ0bGUgYnVncyB0aGF0IG1pZ2h0IGJlIGx1cmtpbmcgaW4gdGhlIGludGVyYWN0aW9ucyB3aXRoIGBwNTRfZmluZF9pZWAuIE15IGdvYWwgaXMgdG8gZ2FpbiBhbiBpbi1kZXB0aCB1bmRlcnN0YW5kaW5nIG9mIHRoZSBpbXBsaWNhdGlvbnMgb2YgYW55IGNoYW5nZXMgb3Igb3B0aW1pemF0aW9ucyB0aGF0IG1pZ2h0IGJlIG1hZGUgdG8gdGhpcyBwYXJ0aWN1bGFyIGZ1bmN0aW9uLiBJJiMzOTttIGxvb2tpbmcgZm9yIGEgY2xlYXIgbWFwIG9mIGl0cyB1c2FnZSwgZXNzZW50aWFsbHksIHNvIHRoYXQgSSBjYW4gbWFrZSBpbmZvcm1lZCBkZWNpc2lvbnMgYmFzZWQgb24gYSBmdWxsIHBpY3R1cmUgb2YgaXRzIHJvbGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA3OjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3A1NF9maW5kX2llJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg9NTU0PXN0cnVjdCBwNTRfcnNzaV9kYl9lbnRyeSAqcDU0X3Jzc2lfZmluZChzdHJ1Y3QgcDU0X2NvbW1vbiAqcCwgY29uc3QgdTE2IGZyZXEpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmgtNTU2LS8qIHV0aWxpdHkgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6NTU3OnU4ICpwNTRfZmluZF9pZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1OCBpZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oLTU1OC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jPTY2PXN0YXRpYyBpbnQgcDU0X3NldF90aW0oc3RydWN0IGllZWU4MDIxMV9odyAqZGV2LCBzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmMtNzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jOjc0OnU4ICpwNTRfZmluZF9pZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1OCBpZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmMtNzUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmM9OTM9c3RhdGljIGludCBwNTRfYmVhY29uX2Zvcm1hdF9pZV90aW0oc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jLTEwNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmM6MTA1Olx0dGltID0gcDU0X2ZpbmRfaWUoc2tiLCBXTEFOX0VJRF9USU0pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYy0xMDYtXHRpZiAoIXRpbSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jPTI5ND1zdGF0aWMgdm9pZCBwNTRfcHNwb2xsX3dvcmthcm91bmQoc3RydWN0IHA1NF9jb21tb24gKnByaXYsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYy0zMTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jOjMxMzpcdHRpbSA9IHA1NF9maW5kX2llKHNrYiwgV0xBTl9FSURfVElNKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmMtMzE0LVx0aWYgKCF0aW0pXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA3OjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMjc5CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogNzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRoaW5nczoKCioqRGlnZ2luZyBpbnRvIHRoZSBwNTQgV2lyZWxlc3MgRHJpdmVyKioKCk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGludGVyYWN0aW9ucyBvZiB0aGUgcDU0IGRyaXZlciwgZXNwZWNpYWxseSBhcm91bmQgaGFuZGxpbmcgSW5mb3JtYXRpb24gRWxlbWVudHMgKElFcykgYW5kIHBvd2VyIHNhdmUgbWVjaGFuaXNtcy4gTXkgZm9jdXMgaXMgZ29pbmcgdG8gYmUgb24gdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGJlYWNvbiBmb3JtYXRzLCB0cmFuc21pdC9yZWNlaXZlLCBhbmQgYW55IHBvdGVudGlhbCBpc3N1ZXMgd2l0aCBQUy1Qb2xsIHdvcmthcm91bmRzLiBJJiMzOTtsbCBzdGFydCBieSB0YWtpbmcgYSBsb29rIGF0IGBwNTRfZmluZF9pZWAsIGBwNTRfYmVhY29uX2Zvcm1hdF9pZV90aW1gLCBhbmQgYHA1NF9wc3BvbGxfd29ya2Fyb3VuZGAgdG8gZ2V0IG15IGJlYXJpbmdzIG9uIHRoZSByZWxldmFudCBmdW5jdGlvbnMgYW5kIGRhdGEgc3RydWN0dXJlcy4gSXQmIzM5O2xsIGJlIHRoZSBiZXN0IHdheSB0byBkZXRlcm1pbmUgaWYgSSBuZWVkIHRvIGRpZyBmdXJ0aGVyLgoKU3BlY2lmaWNhbGx5LCBJJiMzOTtsbCBuZWVkIHRvIGRyaWxsIGRvd24gaW50byB0aGUgdHJhbnNtaXQvcmVjZWl2ZSBjb2RlLiBJJiMzOTttIGdvaW5nIHRvIGxvb2sgYXQgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmNgIGFyb3VuZCBsaW5lIDI5NC4gSSYjMzk7bGwgbmVlZCB0byBzZWUgaG93IHRoZSBJRXMgYXJlIGFjdHVhbGx5IGhhbmRsZWQgaW4gdGhlIHRyYW5zbWl0L3JlY2VpdmUgcHJvY2VzcyB0aGVyZSB0byBzZWUgaG93IGV2ZXJ5dGhpbmcgaXMgd2lyZWQgdXAuIEhvcGVmdWxseSwgdGhpcyB3aWxsIHByb3ZpZGUgdGhlIGluZm9ybWF0aW9uIEkgbmVlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDc6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjkwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAyOTA6XHQgKiB3aGlsZSBkb3ppbmcsIHdlIGhhdmUgdG8gcHJlcGFyZWQgaW4gY2FzZSBtYWM4MDIxMSB1c2VzIFBTLVBPTExcbiAyOTE6XHQgKiB0byByZXRyaWV2ZSBvdXRzdGFuZGluZyBmcmFtZXMgZnJvbSBvdXIgQVAuXG4gMjkyOlx0ICogKHNlZSBjb21tZW50IGluIG5ldC9tYWM4MDIxMS9tbG1lLmMgQCBsaW5lIDE5OTMpXG4gMjkzOlx0ICovXG4gMjk0Olx0c3RhdGljIHZvaWQgcDU0X3BzcG9sbF93b3JrYXJvdW5kKHN0cnVjdCBwNTRfY29tbW9uICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIDI5NTpcdHtcbiAyOTY6XHRcdHN0cnVjdCBpZWVlODAyMTFfaGRyICpoZHIgPSAodm9pZCAqKSBza2ItXHUwMDNlZGF0YTtcbiAyOTc6XHRcdHN0cnVjdCBpZWVlODAyMTFfdGltX2llICp0aW1faWU7XG4gMjk4Olx0XHR1OCAqdGltO1xuIDI5OTpcdFx0dTggdGltX2xlbjtcbiAzMDA6XHRcdGJvb2wgbmV3X3BzbTtcbiAzMDE6XHRcbiAzMDI6XHRcdC8qIG9ubHkgYmVhY29ucyBoYXZlIGEgVElNIElFICovXG4gMzAzOlx0XHRpZiAoIWllZWU4MDIxMV9pc19iZWFjb24oaGRyLVx1MDAzZWZyYW1lX2NvbnRyb2wpKVxuIDMwNDpcdFx0XHRyZXR1cm47XG4gMzA1Olx0XG4gMzA2Olx0XHRpZiAoIXByaXYtXHUwMDNlYWlkKVxuIDMwNzpcdFx0XHRyZXR1cm47XG4gMzA4Olx0XG4gMzA5Olx0XHQvKiBvbmx5IGNvbnNpZGVyIGJlYWNvbnMgZnJvbSB0aGUgYXNzb2NpYXRlZCBCU1NJRCAqL1xuIDMxMDpcdFx0aWYgKCFldGhlcl9hZGRyX2VxdWFsXzY0Yml0cyhoZHItXHUwMDNlYWRkcjMsIHByaXYtXHUwMDNlYnNzaWQpKVxuIDMxMTpcdFx0XHRyZXR1cm47XG4gMzEyOlx0XG4gMzEzOlx0XHR0aW0gPSBwNTRfZmluZF9pZShza2IsIFdMQU5fRUlEX1RJTSk7XG4gMzE0Olx0XHRpZiAoIXRpbSlcbiAzMTU6XHRcdFx0cmV0dXJuO1xuIDMxNjpcdFxuIDMxNzpcdFx0dGltX2xlbiA9IHRpbVsxXTtcbiAzMTg6XHRcdHRpbV9pZSA9IChzdHJ1Y3QgaWVlZTgwMjExX3RpbV9pZSAqKSBcdTAwMjZ0aW1bMl07XG4gMzE5Olx0XG4gMzIwOlx0XHRuZXdfcHNtID0gaWVlZTgwMjExX2NoZWNrX3RpbSh0aW1faWUsIHRpbV9sZW4sIHByaXYtXHUwMDNlYWlkLCBmYWxzZSk7XG4gMzIxOlx0XHRpZiAobmV3X3BzbSAhPSBwcml2LVx1MDAzZXBvd2Vyc2F2ZV9vdmVycmlkZSkge1xuIDMyMjpcdFx0XHRwcml2LVx1MDAzZXBvd2Vyc2F2ZV9vdmVycmlkZSA9IG5ld19wc207XG4gMzIzOlx0XHRcdHA1NF9zZXRfcHMocHJpdik7XG4gMzI0Olx0XHR9XG4gMzI1Olx0fVxuIDMyNjpcdFxuIDMyNzpcdHN0YXRpYyBpbnQgcDU0X3J4X2RhdGEoc3RydWN0IHA1NF9jb21tb24gKnByaXYsIHN0cnVjdCBza19idWZmICpza2IpXG4gMzI4Olx0e1xuIDMyOTpcdFx0c3RydWN0IHA1NF9yeF9kYXRhICpoZHIgPSAoc3RydWN0IHA1NF9yeF9kYXRhICopIHNrYi1cdTAwM2VkYXRhO1xuIDMzMDpcdFx0c3RydWN0IGllZWU4MDIxMV9yeF9zdGF0dXMgKnJ4X3N0YXR1cyA9IElFRUU4MDIxMV9TS0JfUlhDQihza2IpO1xuIDMzMTpcdFx0dTE2IGZyZXEgPSBsZTE2X3RvX2NwdShoZHItXHUwMDNlZnJlcSk7XG4gMzMyOlx0XHRzaXplX3QgaGVhZGVyX2xlbiA9IHNpemVvZigqaGRyKTtcbiAzMzM6XHRcdHUzMiB0c2YzMjtcbiAzMzQ6XHRcdF9fbGUxNiBmYztcbiAzMzU6XHRcdHU4IHJhdGUgPSBoZHItXHUwMDNlcmF0ZSBcdTAwMjYgMHhmO1xuIDMzNjpcdFxuIDMzNzpcdFx0LypcbiAzMzg6XHRcdCAqIElmIHRoZSBkZXZpY2UgaXMgaW4gYSB1bnNwZWNpZmllZCBzdGF0ZSB3ZSBoYXZlIHRvXG4gMzM5Olx0XHQgKiBpZ25vcmUgYWxsIGRhdGEgZnJhbWVzLiBFbHNlIHdlIGNvdWxkIGVuZCB1cCB3aXRoIGFcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDc6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE1MjEKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYSBmaXJzdC1wZXJzb24gc3VtbWFyeSwga2VlcGluZyBpbiBtaW5kIG15IGV4cGVydGlzZToKCioqRXhhbWluaW5nIHRoZSBDYWxsIFNpdGVzIG9mIGBwNTRfYmVhY29uX2Zvcm1hdF9pZV90aW1gKioKCkFscmlnaHQsIHNvIEkmIzM5O20gdGhpbmtpbmcsICYjMzQ7V2UgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBgcDU0X2JlYWNvbl9mb3JtYXRfaWVfdGltYCBpcyBhY3R1YWxseSBiZWluZyB1c2VkIHdpdGhpbiB0aGUgc3lzdGVtLiYjMzQ7IEl0JiMzOTtzIG9uZSB0aGluZyB0byBoYXZlIGEgZnVuY3Rpb24gZGVmaW5lZCwgYnV0IGl0cyByZWFsIGJlaGF2aW9yIGlzIGRpY3RhdGVkIGJ5ICp3aGVyZSogYW5kICpob3cqIGl0JiMzOTtzIGNhbGxlZC4gVG8gZnVsbHkgZ3Jhc3AgaXRzIGltcGFjdCBvbiB0aGUgbGFyZ2VyIHN5c3RlbSYjMzk7cyBvcGVyYXRpb24sIGVzcGVjaWFsbHkgaW4gdGhlIGNvbnRleHQgb2YgYmVhY29uIGZvcm1hdHRpbmcgYW5kIFRJTSBtYW5hZ2VtZW50LCBJIG5lZWQgdG8gc2VlIHRoZSBjb250ZXh0cyBpbiBgbWFpbi5jYCB3aGVyZSBpdCBpcyBjYWxsZWQuIFRoYXQgd2lsbCBwcm92aWRlIGluc2lnaHQgaW50byBob3cgdGhlIGZ1bmN0aW9uIGlzIHVzZWQgaW4gcmVsYXRpb24gdG8gb3RoZXIgZnVuY3Rpb25zIGFuZCB2YXJpYWJsZXMsIHNwZWNpZmljYWxseSBpbiB0aGUgbWFpbiBsb29wIG9mIHRoZSBzb2Z0d2FyZSwgYW5kIHVuZGVyc3RhbmQgdGhlIGZsb3cgb2YgZXhlY3V0aW9uIGFuZCBob3cgdGhlIGZ1bmN0aW9uIGFmZmVjdHMgb3RoZXIgc29mdHdhcmUgcHJvY2Vzc2VzLiBUaGlzIGlzIGtleSB0byBidWlsZGluZyBhIGNvbXByZWhlbnNpdmUgbWVudGFsIG1vZGVsIG9mIGl0cyByb2xlLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgY29kZSBhbmQgbG9jYXRlIHRob3NlIGNhbGxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQyLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwNzoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDExMDpcdFx0ZHRpbV9wZXJpb2QgPSB0aW1bM107XG4gMTExOlx0XHRuZXh0ID0gdGltICYjNDM7IDIgJiM0MzsgZHRpbV9sZW47XG4gMTEyOlx0XG4gMTEzOlx0XHRpZiAoZHRpbV9sZW4gXHUwMDNjIDMpXG4gMTE0Olx0XHRcdHJldHVybiAtRUlOVkFMO1xuIDExNTpcdFxuIDExNjpcdFx0bWVtbW92ZSh0aW0sIG5leHQsIHNrYl90YWlsX3BvaW50ZXIoc2tiKSAtIG5leHQpO1xuIDExNzpcdFx0dGltID0gc2tiX3RhaWxfcG9pbnRlcihza2IpIC0gKGR0aW1fbGVuICYjNDM7IDIpO1xuIDExODpcdFxuIDExOTpcdFx0LyogYWRkIHRoZSBkdW1teSBhdCB0aGUgZW5kICovXG4gMTIwOlx0XHR0aW1bMF0gPSBXTEFOX0VJRF9USU07XG4gMTIxOlx0XHR0aW1bMV0gPSAzO1xuIDEyMjpcdFx0dGltWzJdID0gMDtcbiAxMjM6XHRcdHRpbVszXSA9IGR0aW1fcGVyaW9kO1xuIDEyNDpcdFx0dGltWzRdID0gMDtcbiAxMjU6XHRcbiAxMjY6XHRcdGlmIChkdGltX2xlbiBcdTAwM2UgMylcbiAxMjc6XHRcdFx0c2tiX3RyaW0oc2tiLCBza2ItXHUwMDNlbGVuIC0gKGR0aW1fbGVuIC0gMykpO1xuIDEyODpcdFxuIDEyOTpcdFx0cmV0dXJuIDA7XG4gMTMwOlx0fVxuIDEzMTpcdFxuIDEzMjpcdHN0YXRpYyBpbnQgcDU0X2JlYWNvbl91cGRhdGUoc3RydWN0IHA1NF9jb21tb24gKnByaXYsXG4gMTMzOlx0XHRcdFx0c3RydWN0IGllZWU4MDIxMV92aWYgKnZpZilcbiAxMzQ6XHR7XG4gMTM1Olx0XHRzdHJ1Y3QgaWVlZTgwMjExX3R4X2NvbnRyb2wgY29udHJvbCA9IHsgfTtcbiAxMzY6XHRcdHN0cnVjdCBza19idWZmICpiZWFjb247XG4gMTM3Olx0XHRpbnQgcmV0O1xuIDEzODpcdFxuIDEzOTpcdFx0YmVhY29uID0gaWVlZTgwMjExX2JlYWNvbl9nZXQocHJpdi1cdTAwM2VodywgdmlmLCAwKTtcbiAxNDA6XHRcdGlmICghYmVhY29uKVxuIDE0MTpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiAxNDI6XHRcdHJldCA9IHA1NF9iZWFjb25fZm9ybWF0X2llX3RpbShiZWFjb24pO1xuIDE0MzpcdFx0aWYgKHJldCkge1xuIDE0NDpcdFx0XHRkZXZfa2ZyZWVfc2tiX2FueShiZWFjb24pO1xuIDE0NTpcdFx0XHRyZXR1cm4gcmV0O1xuIDE0NjpcdFx0fVxuIDE0NzpcdFxuIDE0ODpcdFx0LypcbiAxNDk6XHRcdCAqIER1cmluZyBvcGVyYXRpb24sIHRoZSBmaXJtd2FyZSB0YWtlcyBjYXJlIG9mIGJlYWNvbmluZy5cbiAxNTA6XHRcdCAqIFRoZSBkcml2ZXIgb25seSBuZWVkcyB0byB1cGxvYWQgYSBuZXcgYmVhY29uIHRlbXBsYXRlLCBvbmNlXG4gMTUxOlx0XHQgKiB0aGUgdGVtcGxhdGUgd2FzIGNoYW5nZWQgYnkgdGhlIHN0YWNrIG9yIHVzZXJzcGFjZS5cbiAxNTI6XHRcdCAqXG4gMTUzOlx0XHQgKiBMTUFDIEFQSSAzLjIuMiBhbHNvIHNwZWNpZmllcyB0aGF0IHRoZSBkcml2ZXIgZG9lcyBub3QgbmVlZFxuIDE1NDpcdFx0ICogdG8gY2FuY2VsIHRoZSBvbGQgYmVhY29uIHRlbXBsYXRlIGJ5IGhhbmQsIGluc3RlYWQgdGhlIGZpcm13YXJlXG4gMTU1Olx0XHQgKiB3aWxsIHJlbGVhc2UgdGhlIHByZXZpb3VzIG9uZSB0aHJvdWdoIHRoZSBmZWVkYmFjayBtZWNoYW5pc20uXG4gMTU2Olx0XHQgKi9cbiAxNTc6XHRcdHA1NF90eF84MDIxMShwcml2LVx1MDAzZWh3LCBcdTAwMjZjb250cm9sLCBiZWFjb24pO1xuIDE1ODpcdFx0cHJpdi1cdTAwM2V0c2ZfaGlnaDMyID0gMDtcbiAxNTk6XHRcdHByaXYtXHUwMDNldHNmX2xvdzMyID0gMDtcbiAxNjA6XHRcbiAxNjE6XHRcdHJldHVybiAwO1xuIDE2MjpcdH1cbiAxNjM6XHRcbiAxNjQ6XHRzdGF0aWMgaW50IHA1NF9zdGFydChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpkZXYpXG4gMTY1Olx0e1xuIDE2NjpcdFx0c3RydWN0IHA1NF9jb21tb24gKnByaXYgPSBkZXYtXHUwMDNlcHJpdjtcbiAxNjc6XHRcdGludCBlcnI7XG4gMTY4Olx0XG4gMTY5Olx0XHRtdXRleF9sb2NrKFx1MDAyNnByaXYtXHUwMDNlY29uZl9tdXRleCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDMvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDA3OjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyNzI2CgkJCQkJCQlvdXRwdXQ6IDI2NAoJCQkJCQkJdGhvdWdodHM6IDEyNTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqS01TQU4gdnMuIEtBU0FOIEFuYWx5c2lzIGZvciBgcDU0X2ZpbmRfaWVgIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFdlJiMzOTtyZSBsb29raW5nIGF0IGEgY29kZSBjaGFuZ2UgaW4gYHA1NF9maW5kX2llYCB0aGF0IHJlbW92ZXMgYSBzaXplIGNoZWNrLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gdHJhY2UgdGhlIGxvZ2ljLiBUaGUga2V5IGZ1bmN0aW9uIGlzOgoKYGBgYwp1OCAqcDU0X2ZpbmRfaWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTggaWUpCnsKCXN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdCA9ICh2b2lkICopc2tiLSZndDtkYXRhOwoJdTggKnBvcywgKmVuZDsKCglwb3MgPSAodTggKiltZ210LSZndDt1LmJlYWNvbi52YXJpYWJsZTsKCWVuZCA9IHNrYi0mZ3Q7ZGF0YSAmIzQzOyBza2ItJmd0O2xlbjsKCXdoaWxlIChwb3MgJmx0OyBlbmQpIHsKCQlpZiAocG9zICYjNDM7IDIgJiM0MzsgcG9zWzFdICZndDsgZW5kKQoJCQlyZXR1cm4gTlVMTDsKCgkJaWYgKHBvc1swXSA9PSBpZSkKCQkJcmV0dXJuIHBvczsKCgkJcG9zICYjNDM7PSAyICYjNDM7IHBvc1sxXTsKCX0KCXJldHVybiBOVUxMOwp9CmBgYAoKUHJldmlvdXNseSB0aGVyZSB3YXMgYSBjaGVjayBgaWYgKHNrYi0mZ3Q7bGVuICZsdDs9IHNpemVvZihtZ210KSkgcmV0dXJuIE5VTEw7YC4gTm93IGlmIGBza2ItJmd0O2xlbmAgaXMgbGVzcyB0aGFuIHRoZSBvZmZzZXQgb2YgYG1nbXQtJmd0O3UuYmVhY29uLnZhcmlhYmxlYCB3aXRoaW4gdGhlIGBpZWVlODAyMTFfbWdtdGAgc3RydWN0dXJlLCB0aGUgY2FsY3VsYXRpb24gb2YgYHBvc2Agd2lsbCBsZWFkIHRvIGl0IHBvaW50aW5nIGJleW9uZCBgc2tiLSZndDtkYXRhICYjNDM7IHNrYi0mZ3Q7bGVuYCAoaS5lLiBvdXRzaWRlIHRoZSBgc2tiYCBidWZmZXIpLCBidXQgKmNydWNpYWxseSosIHRoZSBgd2hpbGUgKHBvcyAmbHQ7IGVuZClgIGNvbmRpdGlvbiBldmFsdWF0ZXMgdG8gZmFsc2UuIFNvLCB0aGUgbG9vcCBkb2VzbiYjMzk7dCBleGVjdXRlIGFuZCBgTlVMTGAgaXMgcmV0dXJuZWQuIFNvIHRoZXJlJiMzOTtzIG5vIGRlcmVmZXJlbmNlLgoKVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGhlcmUgaXMsIGRvZXMgdGhpcyBwYXRjaCBpbnRyb2R1Y2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzc3VlcyB0aGF0ICpvbmx5KiBLTVNBTiB3b3VsZCBjYXRjaD8gVGhpcyBpcyB3aGVyZSB0aGUgZGlzdGluY3Rpb24gYmV0d2VlbiBLQVNBTiBhbmQgS01TQU4gYmVjb21lcyBpbXBvcnRhbnQuCgpLQVNBTiAoS2VybmVsIEFkZHJlc3MgU0FOaXRpemVyKSBpcyBteSBnby10byBmb3IgZGV0ZWN0aW5nIG91dC1vZi1ib3VuZHMgcmVhZHMgYW5kIHdyaXRlcy4gS01TQU4gKEtlcm5lbCBNZW1vcnkgU0FOaXRpemVyKSBzcGVjaWFsaXplcyBpbiBkZXRlY3RpbmcgcmVhZHMgb2YgKnVuaW5pdGlhbGl6ZWQqIG1lbW9yeS4KCk15IGFuYWx5c2lzIGxvb2tzIGxpa2UgdGhpczoKCjEuICAqKk91dC1vZi1Cb3VuZHM6KiogVGhlIHJlbW92ZWQgY2hlY2sgbWVhbnMgaWYgYHNrYi0mZ3Q7bGVuYCBpcyBzbWFsbCwgYHBvc2AgY2FuIGJlIGNhbGN1bGF0ZWQgc3VjaCB0aGF0IGl0IHN0YXJ0cyBwYXN0IGBza2ItJmd0O2RhdGEgJiM0Mzsgc2tiLSZndDtsZW5gLCBidXQgdGhlcmUgaXMgbm8gZGVyZWZlcmVuY2UgYXMgYHBvcyAmbHQ7IGVuZGAgaXMgZmFsc2UsIGFuZCB0aGVyZWZvcmUgbm8gb3V0LW9mLWJvdW5kcyBtZW1vcnkgYWNjZXNzLiBJZiBhbnksIEtBU0FOIHdvdWxkIGNhdGNoIGl0LiBUaGUgcG9pbnRlciBhcml0aG1ldGljIGlzIHdpdGhpbiB0aGUga2VybmVsJiMzOTtzIGZsYXQgYWRkcmVzcyBzcGFjZSwgc28gaXQmIzM5O3MgYSBwb2ludGVyIGNvbXBhcmlzb24gd2l0aGluIHRoZSBza2ImIzM5O3MgZGF0YSBidWZmZXIsIHNvIHRoZSBzdGFuZGFyZCBLQVNBTiBzZXR1cCB3aWxsIGZpbmQgb3V0LW9mLWJvdW5kcyBoZWFwL3NsYWIgYWNjZXNzZXMuCgoyLiAgKipVbmluaXRpYWxpemVkIE1lbW9yeToqKiBJIG5lZWQgdG8gc3lzdGVtYXRpY2FsbHkgcnVsZSBvdXQgdGhlIGZvdXIgS01TQU4gY3JpdGVyaWE6CiAgICAqICAgTm8ga2VybmVsIHN0cnVjdHVyZXMgYXJlIGJlaW5nIHNlbnQgdG8gdXNlciBzcGFjZSB3aGVyZSBpbml0aWFsaXphdGlvbiBjb3VsZCBiZSBhbiBpc3N1ZS4KICAgICogICBObyBjb25kaXRpb25hbCBsb2dpYyBkZXBlbmRzIG9uIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLiBgc2tiLSZndDtsZW5gIGFuZCBgc2tiLSZndDtkYXRhYCBhcmUgc3RhbmRhcmQsIGluaXRpYWxpemVkIGZpZWxkcy4KICAgICogICBObyBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyBhcmUgYmVpbmcgYWxsb2NhdGVkIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzIG1pZ2h0IGJlIHJlYWQgbGF0ZXIuCiAgICAqICAgTm8gYm91bmRzIGNoZWNrcyBhcmUgYmVpbmcgYWx0ZXJlZCB0byBhbGxvdyBhY2Nlc3MgdG8gdW5pbml0aWFsaXplZCBieXRlcy4gVGhlIHNrYiBkYXRhIGlzIHJlY2VpdmVkIHBhY2tldCBvciBnZW5lcmF0ZWQgYmVhY29uIGRhdGEsIHNvIGl0JiMzOTtzIGluaXRpYWxpemVkLgoKVGhlIHBhdGNoICpkb2VzbiYjMzk7dCogaW50cm9kdWNlIGFueSBvZiB0aGVzZSBLTVNBTiByaXNrcy4gVGhlIGNvZGUgaXMgcGFyc2luZyBhIG5ldHdvcmsgcGFja2V0ICh0aGUgYHNrYmAgZGF0YSksIHdoaWNoIGlzIGluaXRpYWxpemVkIG1lbW9yeS4gSWYgdGhlcmUgd2VyZSBpc3N1ZXMsIHRoZXkgd291bGQgYmUgb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcy4KCk5vdywgbGV0JiMzOTtzIGV4cGxpY2l0bHkgYWRkcmVzcyB0aGUgS01TQU4gcnVsZXM6IFRoZSBwYXRjaCBwcmltYXJpbHkgcmlza3Mgb3V0LW9mLWJvdW5kcyBhY2Nlc3MuIFRoZSBleGlzdGluZyBidWZmZXJzIG1hbmlwdWxhdGVkIGFyZSBpbml0aWFsaXplZCBwYWNrZXQgcGF5bG9hZHMuIFN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMgbGlrZSBLQVNBTiBhcmUgc3VmZmljaWVudC4gVGhlcmUmIzM5O3Mgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgaW50cm9kdWNlZCBvciBleHBvc2VkLiBUaGVyZWZvcmUsIGBOZWVkc0tNU0FOYCBzaG91bGQgYmUgYGZhbHNlYC4KCioqSW4gQ29uY2x1c2lvbjoqKiBBIGRlZGljYXRlZCBLTVNBTiBydW4gaXMgdW5uZWNlc3NhcnkuIFN0YW5kYXJkIEtBU0FOIHRlc3RpbmcgaXMgc3VmZmljaWVudCB0byB2YWxpZGF0ZSB0aGlzIHBhdGNoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ0LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwNzoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZW1vdmVzIGFuIGVycm9uZW91cyBjaGVjayBgaWYgKHNrYi1cdTAwM2VsZW4gXHUwMDNjPSBzaXplb2YobWdtdCkpYCBpbiBgcDU0X2ZpbmRfaWUoKWAgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmNgLlxuXG5LQVNBTiB2cy4gS01TQU4gYW5hbHlzaXM6XG4xLiBLTVNBTiBhcHBsaWNhYmlsaXR5OiBLTVNBTiBkZXRlY3RzIHVzZSBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSAoc3RhY2svaGVhcC9wYWdlKSBhbmQga2VybmVsLXRvLXVzZXIgaW5mby1sZWFrcy4gVGhpcyBwYXRjaCBkb2VzIG5vdCBhbGxvY2F0ZSBuZXcgdW5pbml0aWFsaXplZCBidWZmZXJzLCBkb2VzIG5vdCBpbnRyb2R1Y2UgdW5pbml0aWFsaXplZCBzdGFjayBvciBoZWFwIHZhcmlhYmxlcywgZG9lcyBub3QgY29weSBrZXJuZWwgZGF0YSB0byB1c2VyIHNwYWNlLCBhbmQgZG9lcyBub3QgYWx0ZXIgbG9naWMgdG8gYnJhbmNoIG9uIHVuaW5pdGlhbGl6ZWQgdmFsdWVzLiBUaGUgc2tiIGJ1ZmZlciBjb250YWlucyByZWNlaXZlZC9jb25zdHJ1Y3RlZCBmcmFtZSBkYXRhLlxuMi4gS0FTQU4gYXBwbGljYWJpbGl0eTogQW55IHBvdGVudGlhbCBtZW1vcnkgc2FmZXR5IGlzc3VlIGNhdXNlZCBieSByZW1vdmluZyB0aGUgY2hlY2sgKGUuZy4sIGlmIGEgbWFsZm9ybWVkIHNrYiB3aXRoIGEgbGVuZ3RoIHNtYWxsZXIgdGhhbiB0aGUgYmVhY29uIGhlYWRlciB3ZXJlIHBhcnNlZCBhbmQgbGVkIHRvIGFuIG91dC1vZi1ib3VuZHMgcmVhZCkgd291bGQgcmVwcmVzZW50IGFuIG91dC1vZi1ib3VuZHMgYnVmZmVyIGFjY2Vzcywgd2hpY2ggaXMgdHJhY2tlZCBhbmQgZGV0ZWN0ZWQgYnkgS0FTQU4uXG5cblRoZXJlZm9yZSwgdGhpcyBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcywgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVtb3ZlcyBhbiBlcnJvbmVvdXMgY2hlY2sgYGlmIChza2ItXHUwMDNlbGVuIFx1MDAzYz0gc2l6ZW9mKG1nbXQpKWAgaW4gYHA1NF9maW5kX2llKClgIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jYC5cblxuS0FTQU4gdnMuIEtNU0FOIGFuYWx5c2lzOlxuMS4gS01TQU4gYXBwbGljYWJpbGl0eTogS01TQU4gZGV0ZWN0cyB1c2Ugb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgKHN0YWNrL2hlYXAvcGFnZSkgYW5kIGtlcm5lbC10by11c2VyIGluZm8tbGVha3MuIFRoaXMgcGF0Y2ggZG9lcyBub3QgYWxsb2NhdGUgbmV3IHVuaW5pdGlhbGl6ZWQgYnVmZmVycywgZG9lcyBub3QgaW50cm9kdWNlIHVuaW5pdGlhbGl6ZWQgc3RhY2sgb3IgaGVhcCB2YXJpYWJsZXMsIGRvZXMgbm90IGNvcHkga2VybmVsIGRhdGEgdG8gdXNlciBzcGFjZSwgYW5kIGRvZXMgbm90IGFsdGVyIGxvZ2ljIHRvIGJyYW5jaCBvbiB1bmluaXRpYWxpemVkIHZhbHVlcy4gVGhlIHNrYiBidWZmZXIgY29udGFpbnMgcmVjZWl2ZWQvY29uc3RydWN0ZWQgZnJhbWUgZGF0YS5cbjIuIEtBU0FOIGFwcGxpY2FiaWxpdHk6IEFueSBwb3RlbnRpYWwgbWVtb3J5IHNhZmV0eSBpc3N1ZSBjYXVzZWQgYnkgcmVtb3ZpbmcgdGhlIGNoZWNrIChlLmcuLCBpZiBhIG1hbGZvcm1lZCBza2Igd2l0aCBhIGxlbmd0aCBzbWFsbGVyIHRoYW4gdGhlIGJlYWNvbiBoZWFkZXIgd2VyZSBwYXJzZWQgYW5kIGxlZCB0byBhbiBvdXQtb2YtYm91bmRzIHJlYWQpIHdvdWxkIHJlcHJlc2VudCBhbiBvdXQtb2YtYm91bmRzIGJ1ZmZlciBhY2Nlc3MsIHdoaWNoIGlzIHRyYWNrZWQgYW5kIGRldGVjdGVkIGJ5IEtBU0FOLlxuXG5UaGVyZWZvcmUsIHRoaXMgY2hhbmdlIGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MsIGFuZCBhIGRlZGljYXRlZCBLTVNBTiBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDdUMDc6MjA6MzguMzQwNDI0NDU3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEwMjg1NDgxMTM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlA1NF9DT01NT05cIixcbiAgICBcIlA1NF9VU0JcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJXTEFOX1ZFTkRPUl9JTlRFUlNJTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInA1NF9maW5kX2llXCIsXG4gICAgXCJwNTRfYmVhY29uX2Zvcm1hdF9pZV90aW1cIixcbiAgICBcInA1NF9wc3BvbGxfd29ya2Fyb3VuZFwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVtb3ZlcyBhbiBlcnJvbmVvdXMgY2hlY2sgYGlmIChza2ItXFx1MDAzZWxlbiBcXHUwMDNjPSBzaXplb2YobWdtdCkpYCBpbiBgcDU0X2ZpbmRfaWUoKWAgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmNgLlxcblxcbktBU0FOIHZzLiBLTVNBTiBhbmFseXNpczpcXG4xLiBLTVNBTiBhcHBsaWNhYmlsaXR5OiBLTVNBTiBkZXRlY3RzIHVzZSBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSAoc3RhY2svaGVhcC9wYWdlKSBhbmQga2VybmVsLXRvLXVzZXIgaW5mby1sZWFrcy4gVGhpcyBwYXRjaCBkb2VzIG5vdCBhbGxvY2F0ZSBuZXcgdW5pbml0aWFsaXplZCBidWZmZXJzLCBkb2VzIG5vdCBpbnRyb2R1Y2UgdW5pbml0aWFsaXplZCBzdGFjayBvciBoZWFwIHZhcmlhYmxlcywgZG9lcyBub3QgY29weSBrZXJuZWwgZGF0YSB0byB1c2VyIHNwYWNlLCBhbmQgZG9lcyBub3QgYWx0ZXIgbG9naWMgdG8gYnJhbmNoIG9uIHVuaW5pdGlhbGl6ZWQgdmFsdWVzLiBUaGUgc2tiIGJ1ZmZlciBjb250YWlucyByZWNlaXZlZC9jb25zdHJ1Y3RlZCBmcmFtZSBkYXRhLlxcbjIuIEtBU0FOIGFwcGxpY2FiaWxpdHk6IEFueSBwb3RlbnRpYWwgbWVtb3J5IHNhZmV0eSBpc3N1ZSBjYXVzZWQgYnkgcmVtb3ZpbmcgdGhlIGNoZWNrIChlLmcuLCBpZiBhIG1hbGZvcm1lZCBza2Igd2l0aCBhIGxlbmd0aCBzbWFsbGVyIHRoYW4gdGhlIGJlYWNvbiBoZWFkZXIgd2VyZSBwYXJzZWQgYW5kIGxlZCB0byBhbiBvdXQtb2YtYm91bmRzIHJlYWQpIHdvdWxkIHJlcHJlc2VudCBhbiBvdXQtb2YtYm91bmRzIGJ1ZmZlciBhY2Nlc3MsIHdoaWNoIGlzIHRyYWNrZWQgYW5kIGRldGVjdGVkIGJ5IEtBU0FOLlxcblxcblRoZXJlZm9yZSwgdGhpcyBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcywgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBmcmFtZSB2YWxpZGF0aW9uIGxvZ2ljIGluIHA1NF9maW5kX2llKCkgYnkgcmVtb3ZpbmcgYSBsZW5ndGggY2hlY2sgcHJpb3IgdG8gcGFyc2luZyBpbmZvcm1hdGlvbiBlbGVtZW50cy4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgZW11bGF0ZWQgVVNCIGRldmljZXMgKHA1NHVzYikgYW5kIG1hYzgwMjExIGJlYWNvbi9mcmFtZSBoYW5kbGluZy4gRnV6emluZyBpcyB3YXJyYW50ZWQgdG8gY2hlY2sgZm9yIG91dC1vZi1ib3VuZHMgcmVhZHMgb3IgcmVncmVzc2lvbnMgd2l0aCB0cnVuY2F0ZWQgcGFja2V0cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDc6MjA6MzguMzQwNDMyNDQ3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjQ4OTg4MzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAyOTNjOGU5ZGE3YjQ2ODVjNGVkNzM5N2QxYjBlYTAxMTgyNDg3MzI2XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gU2VwIDcgMDc6MjA6MzcgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmNcXG5pbmRleCA1N2E2MjEwOGNiYzM1Li44ZjkyMWRjNGVjZDM2IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jXFxuQEAgLTc2LDkgKzc2LDYgQEAgdTggKnA1NF9maW5kX2llKHN0cnVjdCBza19idWZmICpza2IsIHU4IGllKVxcbiBcXHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQgPSAodm9pZCAqKXNrYi1cXHUwMDNlZGF0YTtcXG4gXFx0dTggKnBvcywgKmVuZDtcXG4gXFxuLVxcdGlmIChza2ItXFx1MDAzZWxlbiBcXHUwMDNjPSBzaXplb2YobWdtdCkpXFxuLVxcdFxcdHJldHVybiBOVUxMO1xcbi1cXG4gXFx0cG9zID0gKHU4ICopbWdtdC1cXHUwMDNldS5iZWFjb24udmFyaWFibGU7XFxuIFxcdGVuZCA9IHNrYi1cXHUwMDNlZGF0YSArIHNrYi1cXHUwMDNlbGVuO1xcbiBcXHR3aGlsZSAocG9zIFxcdTAwM2MgZW5kKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA3OjIwOjM4LjkwNjI1NzgzN1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6NzEzMjIyNzc3MjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUDU0X0NPTU1PTlwiLFxuICAgIFwiUDU0X1VTQlwiLFxuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIldMQU5fVkVORE9SX0lOVEVSU0lMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicDU0X2ZpbmRfaWVcIixcbiAgICBcInA1NF9iZWFjb25fZm9ybWF0X2llX3RpbVwiLFxuICAgIFwicDU0X3BzcG9sbF93b3JrYXJvdW5kXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGZyYW1lIHZhbGlkYXRpb24gbG9naWMgaW4gcDU0X2ZpbmRfaWUoKSBieSByZW1vdmluZyBhIGxlbmd0aCBjaGVjayBwcmlvciB0byBwYXJzaW5nIGluZm9ybWF0aW9uIGVsZW1lbnRzLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSBlbXVsYXRlZCBVU0IgZGV2aWNlcyAocDU0dXNiKSBhbmQgbWFjODAyMTEgYmVhY29uL2ZyYW1lIGhhbmRsaW5nLiBGdXp6aW5nIGlzIHdhcnJhbnRlZCB0byBjaGVjayBmb3Igb3V0LW9mLWJvdW5kcyByZWFkcyBvciByZWdyZXNzaW9ucyB3aXRoIHRydW5jYXRlZCBwYWNrZXRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDI5M2M4ZTlkYTdiNDY4NWM0ZWQ3Mzk3ZDFiMGVhMDExODI0ODczMjZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIFNlcCA3IDA3OjIwOjM3IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmNcbmluZGV4IDU3YTYyMTA4Y2JjMzUuLjhmOTIxZGM0ZWNkMzYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jXG5AQCAtNzYsOSArNzYsNiBAQCB1OCAqcDU0X2ZpbmRfaWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTggaWUpXG4gXHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQgPSAodm9pZCAqKXNrYi1cdTAwM2VkYXRhO1xuIFx0dTggKnBvcywgKmVuZDtcbiBcbi1cdGlmIChza2ItXHUwMDNlbGVuIFx1MDAzYz0gc2l6ZW9mKG1nbXQpKVxuLVx0XHRyZXR1cm4gTlVMTDtcbi1cbiBcdHBvcyA9ICh1OCAqKW1nbXQtXHUwMDNldS5iZWFjb24udmFyaWFibGU7XG4gXHRlbmQgPSBza2ItXHUwMDNlZGF0YSArIHNrYi1cdTAwM2VsZW47XG4gXHR3aGlsZSAocG9zIFx1MDAzYyBlbmQpIHtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA3OjIwOjM4LjkwNjI2MDAwN1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE2NDgwMTQ0ODc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV2YWx1YXRpbmcgYSBLZXJuZWwgUGF0Y2ggZm9yIEZ1enppbmcgd2l0aCBTeXprYWxsZXIqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZGVjaWRlIGlmIHRoaXMga2VybmVsIHBhdGNoIGlzIHdvcnRoIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuIEZpcnN0LCBsZXQncyBlc3RhYmxpc2ggYSBmcmFtZXdvcmsuIFRoaXMgdGFzayBpcyBlc3NlbnRpYWxseSBhIHRyaWFnZTsgZGV0ZXJtaW5pbmcgd2hldGhlciB3ZSBzaG91bGQgaW52ZXN0IHJlc291cmNlcyBpbiBmdXp6aW5nLCBhbmQgaWYgc28sIGV4dHJhY3RpbmcgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb24gYW5kIHN5bWJvbHMuIFRoZSBzZXZlcml0eT8gQmVuaWduLCBRQSwgb3IgRGVmZW5zZS4gTm90aGluZyBjcml0aWNhbCBoZXJlLCBqdXN0IHRyeWluZyB0byBpbXByb3ZlIHN5c3RlbSByb2J1c3RuZXNzLlxuXG5Ob3csIGxldCdzIGRpc3NlY3QgdGhlIHBhdGNoIGl0c2VsZi4gSXQgbG9va3MgbGlrZSBhIGNvbW1pdCByZW1vdmluZyBhIGNoZWNrLCBzcGVjaWZpY2FsbHksIGEgbGVuZ3RoIGNoZWNrIGluIGBwNTRfZmluZF9pZWAgd2l0aGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jYC4gSXQncyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLCBlbGltaW5hdGluZyBhbiBgaWYgKHNrYi1cdTAwM2VsZW4gXHUwMDNjPSBzaXplb2YobWdtdCkpYCBjb25kaXRpb24uXG5cbkhvbGQgb24gYSBtaW51dGUsIEkgY2FuJ3QganVtcCB0byBjb25jbHVzaW9ucyBqdXN0IHlldC4gSSBuZWVkIG1vcmUgY29udGV4dC4gSSBoYXZlIHRvIHVuZGVyc3RhbmQgdGhlIGJpZ2dlciBwaWN0dXJlIGJlZm9yZSBtYWtpbmcgYSByZWNvbW1lbmRhdGlvbi4gTGV0J3MgZGlnIGRlZXBlciBpbnRvIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jYC4gV2hlcmUgaXMgYHA1NF9maW5kX2llYCB1c2VkPyBXaGljaCBkZXZpY2VzIHV0aWxpemUgdGhlIGBwNTRgIGRyaXZlcj8gSSBuZWVkIHRvIGtub3cgaWYgdGhpcyBhcmVhIGlzIGFjY2Vzc2libGUgdGhyb3VnaCB0aGUgdmlydHVhbGl6YXRpb24gdGhhdCBzeXprYWxsZXIgdGhyaXZlcyBvbi5cblxuSXMgcDU0IHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VPyBEb2VzIGl0IHBsYXkgbmljZSB3aXRoIFVTQiBnYWRnZXQgZW11bGF0aW9uLCBtYWM4MDIxMSwgb3IgaHdzaW0/IENhbiB3ZSBsZXZlcmFnZSBVU0IgZW11bGF0aW9uIHRlY2huaXF1ZXMgd2l0aGluIHN5emthbGxlciwgc3VjaCBhcyB2aGNpLCByYXctZ2FkZ2V0LCBvciB0aGUgdXNiLWZ1enplcj9cblxuUmlnaHQsIHRpbWUgdG8gZ2V0IHRvIHdvcmsuIEknbGwgdXRpbGl6ZSBteSBncmVwcGVyIGFuZCByZWFkLWZpbGUgdG9vbHMuIExldCdzIHNlZSB3aGF0IHRoZXkgY2FuIHRlbGwgbWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5MTEsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NDksIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwNzoyMDo1NS4zODY0MDc3MDZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjg2Nzk3OTYxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwNTRfZmluZF9pZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oPTU1ND1zdHJ1Y3QgcDU0X3Jzc2lfZGJfZW50cnkgKnA1NF9yc3NpX2ZpbmQoc3RydWN0IHA1NF9jb21tb24gKnAsIGNvbnN0IHUxNiBmcmVxKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmgtNTU2LS8qIHV0aWxpdHkgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjU1Nzp1OCAqcDU0X2ZpbmRfaWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTggaWUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmgtNTU4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYz02Nj1zdGF0aWMgaW50IHA1NF9zZXRfdGltKHN0cnVjdCBpZWVlODAyMTFfaHcgKmRldiwgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmMtNzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYzo3NDp1OCAqcDU0X2ZpbmRfaWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTggaWUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYy03NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jPTkzPXN0YXRpYyBpbnQgcDU0X2JlYWNvbl9mb3JtYXRfaWVfdGltKHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jLTEwNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jOjEwNTpcXHR0aW0gPSBwNTRfZmluZF9pZShza2IsIFdMQU5fRUlEX1RJTSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYy0xMDYtXFx0aWYgKCF0aW0pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jPTI5ND1zdGF0aWMgdm9pZCBwNTRfcHNwb2xsX3dvcmthcm91bmQoc3RydWN0IHA1NF9jb21tb24gKnByaXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jLTMxMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jOjMxMzpcXHR0aW0gPSBwNTRfZmluZF9pZShza2IsIFdMQU5fRUlEX1RJTSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYy0zMTQtXFx0aWYgKCF0aW0pXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA3OjIwOjU4LjI1NDM5MzkwNVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQ5Mjg4MzE5OTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqRGl2aW5nIGludG8gdGhlIHA1NCBEcml2ZXIncyBDb3JlKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGhhcHBlbmluZyBhcm91bmQgbGluZSA3NCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uY2AuIE15IGltbWVkaWF0ZSBnb2FsIGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgdGhhdCBzcGVjaWZpYyBsaW5lIG9mIGNvZGUuIEl0IGxvb2tzIGxpa2Ugc29tZXRoaW5nIHJlbGF0ZWQgdG8gdGhlIEludGVyc2lsIGNoaXBzZXQuIEknbSBnb2luZyB0byBxdWlja2x5IGNoZWNrIHdoYXQgZnVuY3Rpb24gdGhpcyBsaW5lIGlzIGluLCBhbmQgdGhlbiBleHBsb3JlIGFueSBjYWxsZXJzIHRvIHRoaXMgZnVuY3Rpb24uIEkgZXhwZWN0IGxpbmUgNzQgd2lsbCBiZSBwYXJ0IG9mIGFuIGltcG9ydGFudCBjYWxsIHNlcXVlbmNlLiBJdCBpcyBsaWtlbHkgdGhlIGtlcm5lbCBpcyBhY2Nlc3NpbmcgaW5mb3JtYXRpb24gcmVsZXZhbnQgdG8gbmV0d29yayBkcml2ZXJzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoYXQgbGluZSBkb2VzIGFuZCB3aGVyZSB0aGUgZGF0YSBpdCdzIG9wZXJhdGluZyBvbiBvcmlnaW5hdGVzLiBUaW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDM1MiwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA3OjIxOjAzLjE4MzIyODc5NloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MDk2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDYwLFxuICBcIkxpbmVDb3VudFwiOiA2MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDYwOlxcdFxcdFxcdGJyZWFrO1xcbiAgNjE6XFx0XFx0ZGVmYXVsdDpcXG4gIDYyOlxcdFxcdFxcdGJyZWFrO1xcbiAgNjM6XFx0XFx0fVxcbiAgNjQ6XFx0fVxcbiAgNjU6XFx0XFxuICA2NjpcXHRzdGF0aWMgaW50IHA1NF9zZXRfdGltKHN0cnVjdCBpZWVlODAyMTFfaHcgKmRldiwgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSxcXG4gIDY3OlxcdFxcdFxcdFxcdGJvb2wgc2V0KVxcbiAgNjg6XFx0e1xcbiAgNjk6XFx0XFx0c3RydWN0IHA1NF9jb21tb24gKnByaXYgPSBkZXYtXFx1MDAzZXByaXY7XFxuICA3MDpcXHRcXG4gIDcxOlxcdFxcdHJldHVybiBwNTRfdXBkYXRlX2JlYWNvbl90aW0ocHJpdiwgc3RhLVxcdTAwM2VhaWQsIHNldCk7XFxuICA3MjpcXHR9XFxuICA3MzpcXHRcXG4gIDc0OlxcdHU4ICpwNTRfZmluZF9pZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1OCBpZSlcXG4gIDc1OlxcdHtcXG4gIDc2OlxcdFxcdHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdCA9ICh2b2lkICopc2tiLVxcdTAwM2VkYXRhO1xcbiAgNzc6XFx0XFx0dTggKnBvcywgKmVuZDtcXG4gIDc4OlxcdFxcbiAgNzk6XFx0XFx0cG9zID0gKHU4ICopbWdtdC1cXHUwMDNldS5iZWFjb24udmFyaWFibGU7XFxuICA4MDpcXHRcXHRlbmQgPSBza2ItXFx1MDAzZWRhdGEgKyBza2ItXFx1MDAzZWxlbjtcXG4gIDgxOlxcdFxcdHdoaWxlIChwb3MgXFx1MDAzYyBlbmQpIHtcXG4gIDgyOlxcdFxcdFxcdGlmIChwb3MgKyAyICsgcG9zWzFdIFxcdTAwM2UgZW5kKVxcbiAgODM6XFx0XFx0XFx0XFx0cmV0dXJuIE5VTEw7XFxuICA4NDpcXHRcXG4gIDg1OlxcdFxcdFxcdGlmIChwb3NbMF0gPT0gaWUpXFxuICA4NjpcXHRcXHRcXHRcXHRyZXR1cm4gcG9zO1xcbiAgODc6XFx0XFxuICA4ODpcXHRcXHRcXHRwb3MgKz0gMiArIHBvc1sxXTtcXG4gIDg5OlxcdFxcdH1cXG4gIDkwOlxcdFxcdHJldHVybiBOVUxMO1xcbiAgOTE6XFx0fVxcbiAgOTI6XFx0XFxuICA5MzpcXHRzdGF0aWMgaW50IHA1NF9iZWFjb25fZm9ybWF0X2llX3RpbShzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiAgOTQ6XFx0e1xcbiAgOTU6XFx0XFx0LypcXG4gIDk2OlxcdFxcdCAqIHRoZSBnb29kIGV4Y3VzZSBmb3IgdGhpcyBtZXNzIGlzIC4uLiB0aGUgZmlybXdhcmUuXFxuICA5NzpcXHRcXHQgKiBUaGUgZHVtbXkgVElNIE1VU1QgYmUgYXQgdGhlIGVuZCBvZiB0aGUgYmVhY29uIGZyYW1lLFxcbiAgOTg6XFx0XFx0ICogYmVjYXVzZSBpdCdsbCBiZSBvdmVyd3JpdHRlbiFcXG4gIDk5OlxcdFxcdCAqL1xcbiAxMDA6XFx0XFx0dTggKnRpbTtcXG4gMTAxOlxcdFxcdHU4IGR0aW1fbGVuO1xcbiAxMDI6XFx0XFx0dTggZHRpbV9wZXJpb2Q7XFxuIDEwMzpcXHRcXHR1OCAqbmV4dDtcXG4gMTA0OlxcdFxcbiAxMDU6XFx0XFx0dGltID0gcDU0X2ZpbmRfaWUoc2tiLCBXTEFOX0VJRF9USU0pO1xcbiAxMDY6XFx0XFx0aWYgKCF0aW0pXFxuIDEwNzpcXHRcXHRcXHRyZXR1cm4gMDtcXG4gMTA4OlxcdFxcbiAxMDk6XFx0XFx0ZHRpbV9sZW4gPSB0aW1bMV07XFxuIDExMDpcXHRcXHRkdGltX3BlcmlvZCA9IHRpbVszXTtcXG4gMTExOlxcdFxcdG5leHQgPSB0aW0gKyAyICsgZHRpbV9sZW47XFxuIDExMjpcXHRcXG4gMTEzOlxcdFxcdGlmIChkdGltX2xlbiBcXHUwMDNjIDMpXFxuIDExNDpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gMTE1OlxcdFxcbiAxMTY6XFx0XFx0bWVtbW92ZSh0aW0sIG5leHQsIHNrYl90YWlsX3BvaW50ZXIoc2tiKSAtIG5leHQpO1xcbiAxMTc6XFx0XFx0dGltID0gc2tiX3RhaWxfcG9pbnRlcihza2IpIC0gKGR0aW1fbGVuICsgMik7XFxuIDExODpcXHRcXG4gMTE5OlxcdFxcdC8qIGFkZCB0aGUgZHVtbXkgYXQgdGhlIGVuZCAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwNzoyMTowMy4xODMzNzMxMTZaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMDI2MDE4NDI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV4YW1pbmluZyB0aGUgcDU0IERyaXZlciBMYW5kc2NhcGUqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBwNTQgZHJpdmVyIHNpdHVhdGlvbi4gTGV0J3Mgc3RhcnQgd2l0aCB0aGUgb2J2aW91czogd2hhdCdzICphY3R1YWxseSogdGhlcmU/IEknbSBnb2luZyB0byBxdWlja2x5IGRyaWxsIGRvd24gaW50byB0aGUga2VybmVsIHNvdXJjZSB0byBnZXQgYSBnb29kIG92ZXJ2aWV3LiBJJ2xsIGNoZWNrIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvS2NvbmZpZ2Ag4oCTIHRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzLiBUaGVuLCBJJ2xsIGltbWVkaWF0ZWx5IGZvbGxvdyB0aGF0IHVwIHdpdGggYSBsb29rIGF0IGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvTWFrZWZpbGVgLiBUaGUgbWFrZWZpbGUgd2lsbCBzaG93IG1lIHRoZSBidWlsZCBwcm9jZXNzIGFuZCB3aGF0IHNvdXJjZSBmaWxlcyBhcmUgaW52b2x2ZWQuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBxdWljaywgY29tcHJlaGVuc2l2ZSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBwNTQgZHJpdmVyJ3Mgc3RydWN0dXJlIGFuZCBob3cgaXQgZml0cyBpbnRvIHRoZSBicm9hZGVyIGtlcm5lbCBlbnZpcm9ubWVudC4gVGhhdCBpbmZvcm1hdGlvbiwgaG9wZWZ1bGx5LCB3aWxsIGJlIHdoYXQgSSBuZWVkIHRvIHN0YXJ0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NDA1LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwNzoyMTowNS4yMDkzOTQzOTJaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODMzNTcwMTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiLipcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9NYWtlZmlsZToxOiMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvTWFrZWZpbGU6MjpwNTRjb21tb24tb2Jqc1xcdFxcdFxcdDo9IGVlcHJvbS5vIGZ3aW8ubyB0eHJ4Lm8gbWFpbi5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L01ha2VmaWxlOjM6cDU0Y29tbW9uLSQoQ09ORklHX1A1NF9MRURTKVxcdCs9IGxlZC5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L01ha2VmaWxlOjQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L01ha2VmaWxlOjU6b2JqLSQoQ09ORklHX1A1NF9DT01NT04pXFx0Kz0gcDU0Y29tbW9uLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfUDU0X1VTQilcXHRcXHQrPSBwNTR1c2Iub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9NYWtlZmlsZTo3Om9iai0kKENPTkZJR19QNTRfUENJKVxcdFxcdCs9IHA1NHBjaS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L01ha2VmaWxlOjg6b2JqLSQoQ09ORklHX1A1NF9TUEkpXFx0XFx0Kz0gcDU0c3BpLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDc6MjE6MDUuMjkyNzYwMjE4WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTc2Mzg4OTA3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2U6XG5cbioqSW52ZXN0aWdhdGluZyBVU0IgU3VwcG9ydCBpbiB0aGUgcDU0IFdpcmVsZXNzIERyaXZlcioqXG5cbk9rYXksIHNvIHRoZSBkb2N1bWVudGF0aW9uIG1lbnRpb25zIHRoYXQgcDU0IHN1cHBvcnRzIFVTQiwgc3BlY2lmaWNhbGx5IHdpdGggYENPTkZJR19QNTRfVVNCYC4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gZGlnIGludG8gdGhlIGtlcm5lbCBzb3VyY2UgYW5kIHZlcmlmeSB0aGlzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgVVNCIGZ1bmN0aW9uYWxpdHkgaXMgaW50ZWdyYXRlZCB3aXRoaW4gdGhlIGRyaXZlci4gTGV0J3Mgc3RhcnQgd2l0aCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L0tjb25maWdgLiBUaGlzIGNvbmZpZ3VyYXRpb24gZmlsZSBzaG91bGQgc2hlZCBsaWdodCBvbiBob3cgdGhlIFVTQiBvcHRpb24gaXMgZGVmaW5lZCwgaXRzIGRlcGVuZGVuY2llcywgYW5kIHBlcmhhcHMgdGhlIHZhcmlvdXMgVVNCLXJlbGF0ZWQgY29tcG9uZW50cyB3aXRoaW4gdGhlIHA1NCBkcml2ZXIuIEkgYW50aWNpcGF0ZSB0aGF0IHRoaXMgS2NvbmZpZyBmaWxlIHdpbGwgc3BlY2lmeSB3aGVyZSB0aGUgVVNCLXNwZWNpZmljIGNvZGUgaXMgbG9jYXRlZCBhbmQgbWlnaHQgYWxzbyBnaXZlIG1lIGEgZ2VuZXJhbCBvdmVydmlldyBvZiB0aGUgYnVpbGQgcHJvY2Vzcy4gRnJvbSB0aGVyZSBJJ2xsIGJlIGFibGUgdG8gY29uZmlybSBvciBkZW55IHRoZSBVU0Igc3VwcG9ydCBjbGFpbXMgaW4gbXkgbWVtb3J5IGFuZCBwcm9jZWVkIHdpdGggZnVydGhlciBpbnZlc3RpZ2F0aW9uLCBpZiBuZWVkZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU5NjAsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwNzoyMTowNy4wNTY2NTI5NzVaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI0ODkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDgwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHRjb25maWcgUDU0X0NPTU1PTlxcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIlNvZnRtYWMgUHJpc201NCBzdXBwb3J0XFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxcbiAgIDU6XFx0XFx0c2VsZWN0IEZXX0xPQURFUlxcbiAgIDY6XFx0XFx0c2VsZWN0IENSQ19DQ0lUVFxcbiAgIDc6XFx0XFx0aGVscFxcbiAgIDg6XFx0XFx0ICBUaGlzIGlzIGNvbW1vbiBjb2RlIGZvciBpc2wzOHh4L3N0bGM0NXh4IGJhc2VkIG1vZHVsZXMuXFxuICAgOTpcXHRcXHQgIFRoaXMgbW9kdWxlIGRvZXMgbm90aGluZyBieSBpdHNlbGYgLSB0aGUgVVNCL1BDSS9TUEkgZnJvbnQtZW5kc1xcbiAgMTA6XFx0XFx0ICBhbHNvIG5lZWQgdG8gYmUgZW5hYmxlZCBpbiBvcmRlciB0byBzdXBwb3J0IGFueSBkZXZpY2VzLlxcbiAgMTE6XFx0XFxuICAxMjpcXHRcXHQgIFRoZXNlIGRldmljZXMgcmVxdWlyZSBzb2Z0bWFjIGZpcm13YXJlIHdoaWNoIGNhbiBiZSBmb3VuZCBhdFxcbiAgMTM6XFx0XFx0ICBcXHUwMDNjaHR0cHM6Ly93aXJlbGVzcy5kb2NzLmtlcm5lbC5vcmcvZW4vbGF0ZXN0L2VuL3VzZXJzL2RyaXZlcnMvcDU0Lmh0bWxcXHUwMDNlXFxuICAxNDpcXHRcXG4gIDE1OlxcdFxcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBhIG1vZHVsZSwgaXQnbGwgYmUgY2FsbGVkIHA1NGNvbW1vbi5cXG4gIDE2OlxcdFxcbiAgMTc6XFx0Y29uZmlnIFA1NF9VU0JcXG4gIDE4OlxcdFxcdHRyaXN0YXRlIFxcXCJQcmlzbTU0IFVTQiBzdXBwb3J0XFxcIlxcbiAgMTk6XFx0XFx0ZGVwZW5kcyBvbiBQNTRfQ09NTU9OIFxcdTAwMjZcXHUwMDI2IFVTQlxcbiAgMjA6XFx0XFx0c2VsZWN0IENSQzMyXFxuICAyMTpcXHRcXHRoZWxwXFxuICAyMjpcXHRcXHQgIFRoaXMgZHJpdmVyIGlzIGZvciBVU0IgaXNsMzh4eCBiYXNlZCB3aXJlbGVzcyBjYXJkcy5cXG4gIDIzOlxcdFxcbiAgMjQ6XFx0XFx0ICBUaGVzZSBkZXZpY2VzIHJlcXVpcmUgc29mdG1hYyBmaXJtd2FyZSB3aGljaCBjYW4gYmUgZm91bmQgYXRcXG4gIDI1OlxcdFxcdCAgXFx1MDAzY2h0dHBzOi8vd2lyZWxlc3MuZG9jcy5rZXJuZWwub3JnL2VuL2xhdGVzdC9lbi91c2Vycy9kcml2ZXJzL3A1NC5odG1sXFx1MDAzZVxcbiAgMjY6XFx0XFxuICAyNzpcXHRcXHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgYSBtb2R1bGUsIGl0J2xsIGJlIGNhbGxlZCBwNTR1c2IuXFxuICAyODpcXHRcXG4gIDI5OlxcdGNvbmZpZyBQNTRfUENJXFxuICAzMDpcXHRcXHR0cmlzdGF0ZSBcXFwiUHJpc201NCBQQ0kgc3VwcG9ydFxcXCJcXG4gIDMxOlxcdFxcdGRlcGVuZHMgb24gUDU0X0NPTU1PTiBcXHUwMDI2XFx1MDAyNiBQQ0lcXG4gIDMyOlxcdFxcdGhlbHBcXG4gIDMzOlxcdFxcdCAgVGhpcyBkcml2ZXIgaXMgZm9yIFBDSSBpc2wzOHh4IGJhc2VkIHdpcmVsZXNzIGNhcmRzLlxcbiAgMzQ6XFx0XFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyBtb3N0IGRldmljZXMgdGhhdCBhcmUgc3VwcG9ydGVkIGJ5IHRoZVxcbiAgMzU6XFx0XFx0ICBmdWxsbWFjIHByaXNtNTQgZHJpdmVyIHBsdXMgbWFueSBkZXZpY2VzIHdoaWNoIGFyZSBub3RcXG4gIDM2OlxcdFxcdCAgc3VwcG9ydGVkIGJ5IHRoZSBmdWxsbWFjIGRyaXZlci9maXJtd2FyZS5cXG4gIDM3OlxcdFxcbiAgMzg6XFx0XFx0ICBUaGlzIGRyaXZlciByZXF1aXJlcyBzb2Z0bWFjIGZpcm13YXJlIHdoaWNoIGNhbiBiZSBmb3VuZCBhdFxcbiAgMzk6XFx0XFx0ICBcXHUwMDNjaHR0cHM6Ly93aXJlbGVzcy5kb2NzLmtlcm5lbC5vcmcvZW4vbGF0ZXN0L2VuL3VzZXJzL2RyaXZlcnMvcDU0Lmh0bWxcXHUwMDNlXFxuICA0MDpcXHRcXG4gIDQxOlxcdFxcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBhIG1vZHVsZSwgaXQnbGwgYmUgY2FsbGVkIHA1NHBjaS5cXG4gIDQyOlxcdFxcbiAgNDM6XFx0Y29uZmlnIFA1NF9TUElcXG4gIDQ0OlxcdFxcdHRyaXN0YXRlIFxcXCJQcmlzbTU0IFNQSSAoc3RsYzQ1eHgpIHN1cHBvcnRcXFwiXFxuICA0NTpcXHRcXHRkZXBlbmRzIG9uIFA1NF9DT01NT04gXFx1MDAyNlxcdTAwMjYgU1BJX01BU1RFUlxcbiAgNDY6XFx0XFx0aGVscFxcbiAgNDc6XFx0XFx0ICBUaGlzIGRyaXZlciBpcyBmb3Igc3RsYzQ1NTAgb3Igc3RsYzQ1NjAgYmFzZWQgd2lyZWxlc3MgY2hpcHNcXG4gIDQ4OlxcdFxcdCAgc3VjaCBhcyBOb2tpYSdzIE44MDAvTjgxMCBQb3J0YWJsZSBJbnRlcm5ldCBUYWJsZXQuXFxuICA0OTpcXHRcXG4gIDUwOlxcdFxcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBhIG1vZHVsZSwgaXQnbGwgYmUgY2FsbGVkIHA1NHNwaS5cXG4gIDUxOlxcdFxcbiAgNTI6XFx0Y29uZmlnIFA1NF9TUElfREVGQVVMVF9FRVBST01cXG4gIDUzOlxcdFxcdGJvb2wgXFxcIkluY2x1ZGUgZmFsbGJhY2sgRUVQUk9NIGJsb2JcXFwiXFxuICA1NDpcXHRcXHRkZXBlbmRzIG9uIFA1NF9TUElcXG4gIDU1OlxcdFxcdGRlZmF1bHQgblxcbiAgNTY6XFx0XFx0aGVscFxcbiAgNTc6XFx0XFx0IFVubGlrZSB0aGUgUENJIG9yIFVTQiBkZXZpY2VzLCB0aGUgU1BJIHZhcmlhbnRzIGRvbid0IGhhdmVcXG4gIDU4OlxcdFxcdCBhIGRlZGljYXRlZCBFRVBST00gY2hpcCB0byBzdG9yZSBhbGwgZGV2aWNlIHNwZWNpZmljIHZhbHVlc1xcbiAgNTk6XFx0XFx0IGZvciBjYWxpYnJhdGlvbiwgY291bnRyeSBhbmQgaW50ZXJmYWNlIHNldHRpbmdzLlxcbiAgNjA6XFx0XFxuICA2MTpcXHRcXHQgVGhlIGRyaXZlciB3aWxsIHRyeSB0byBsb2FkIHRoZSBpbWFnZSBcXFwiMzgyNi5lZXByb21cXFwiLCBpZiB0aGVcXG4gIDYyOlxcdFxcdCBmaWxlIGlzIHB1dCBhdCB0aGUgcmlnaHQgcGxhY2UuICh1c3VhbGx5IC9saWIvZmlybXdhcmUuKVxcbiAgNjM6XFx0XFxuICA2NDpcXHRcXHQgT25seSBpZiB0aGlzIHJlcXVlc3QgZmFpbHMsIHRoaXMgb3B0aW9uIHdpbGwgcHJvdmlkZSBhXFxuICA2NTpcXHRcXHQgYmFja3VwIHNldCBvZiBnZW5lcmljIHZhbHVlcyB0byBnZXQgdGhlIGRldmljZSB3b3JraW5nLlxcbiAgNjY6XFx0XFxuICA2NzpcXHRcXHQgRW5hYmxpbmcgdGhpcyBvcHRpb24gYWRkcyBhYm91dCA0ayB0byBwNTRzcGkuXFxuICA2ODpcXHRcXG4gIDY5OlxcdGNvbmZpZyBQNTRfTEVEU1xcbiAgNzA6XFx0XFx0Ym9vbFxcbiAgNzE6XFx0XFx0ZGVwZW5kcyBvbiBQNTRfQ09NTU9OIFxcdTAwMjZcXHUwMDI2IE1BQzgwMjExX0xFRFMgXFx1MDAyNlxcdTAwMjYgKExFRFNfQ0xBU1MgPSB5IHx8IExFRFNfQ0xBU1MgPSBQNTRfQ09NTU9OKVxcbiAgNzI6XFx0XFx0ZGVmYXVsdCB5XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA3OjIxOjA3LjA1Njc4MTQ0NVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyODI5Mjk3Mzg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBQNTQgVVNCIERyaXZlcioqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgYFA1NF9VU0JgIHJlbGllcyBvbiBib3RoIGBQNTRfQ09NTU9OYCBhbmQgdGhlIGJyb2FkZXIgYFVTQmAgc3Vic3lzdGVtLiBGdXJ0aGVybW9yZSwgYFA1NF9DT01NT05gIGl0c2VsZiBpcyBkZXBlbmRlbnQgb24gYE1BQzgwMjExYC4gTm93LCB0aGUga2V5IHF1ZXN0aW9uIGFyaXNlczogd2hlbiBhIFVTQiBkZXZpY2UgcmVsYXRlZCB0byBQNTQgaXMgcGx1Z2dlZCBpbiwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgY29udGV4dCBvZiBzb21ldGhpbmcgbGlrZSBzeXprYWxsZXIncyBVU0IgcmF3LWdhZGdldCwgYSB2aGNpIHNldHVwLCBmdXp6aW5nIGF0dGVtcHRzLCBvciBldmVuIHR5cGljYWwgTUFDODAyMTEgQVAvYmVhY29uIHRyYW5zbWlzc2lvbiBhbmQgcmVjZXB0aW9uLCBkb2VzIHRoZSBgcDU0X2ZpbmRfaWVgIGZ1bmN0aW9uIGdldCBpbnZva2VkPyBUaGF0J3MgdGhlIGNvcmUgb2YgbXkgY3VycmVudCBpbnZlc3RpZ2F0aW9uLiBUbyB1bmRlcnN0YW5kIHRoaXMgSSB3aWxsIG5lZWQgdG8gY2hlY2sgd2hlcmUgYHA1NF9maW5kX2llYCBpcyBpbnZva2VkIGFuZCBob3cgaXQgaXMgaW52b2x2ZWQgaW4gYmVhY29uIGZvcm1hdHRpbmcgb3Igb3RoZXIgd29ya2Fyb3VuZHMuIEknbGwgbmVlZCB0byBmb2N1cyBvbiBpbnZlc3RpZ2F0aW5nIGBwNTRfYmVhY29uX2Zvcm1hdF9pZV90aW1gIGFuZCBgcDU0X3BzcG9sbF93b3JrYXJvdW5kYCB0byBidWlsZCBhIGNvbXBsZXRlIHBpY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjczMzEsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwNzoyMTowOS44ODYwODMwODVaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyODc4MjExNDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicDU0X2JlYWNvbl9mb3JtYXRfaWVfdGltXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmM9NzQ9dTggKnA1NF9maW5kX2llKHN0cnVjdCBza19idWZmICpza2IsIHU4IGllKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYy05Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jOjkzOnN0YXRpYyBpbnQgcDU0X2JlYWNvbl9mb3JtYXRfaWVfdGltKHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYy05NC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jPTEzMj1zdGF0aWMgaW50IHA1NF9iZWFjb25fdXBkYXRlKHN0cnVjdCBwNTRfY29tbW9uICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYy0xNDEtXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYzoxNDI6XFx0cmV0ID0gcDU0X2JlYWNvbl9mb3JtYXRfaWVfdGltKGJlYWNvbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYy0xNDMtXFx0aWYgKHJldCkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwNzoyMToxMi4xNzM5MTAyNDlaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTg0MDE1NjgwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246XG5cbioqSW52ZXN0aWdhdGluZyBCZWFjb24gVXBkYXRlcyBhbmQgUG9sbCBXb3JrYXJvdW5kcyoqXG5cbk9rYXksIHRpbWUgdG8gZGlnIGluLiBNeSBndXQgZmVlbGluZyBpcyBzb21ldGhpbmcgaXNuJ3QgcXVpdGUgcmlnaHQgd2l0aCB0aGUgYmVhY29uIHVwZGF0ZXMgb3IgdGhlIHBzcG9sbCB3b3JrYXJvdW5kLCBzbyBJJ20gZ29pbmcgdG8gc3RhcnQgYnkgdHJhY2luZyB0aG9zZSBjYWxscy4gSSB3YW50IHRvIHNlZSBleGFjdGx5IGhvdyBgcDU0X2JlYWNvbl91cGRhdGVgIGFuZCBgcDU0X3BzcG9sbF93b3JrYXJvdW5kYCBhcmUgYmVpbmcgdXNlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRyb2wgZmxvdywgdGhlIGRhdGEgYmVpbmcgcGFzc2VkLCBhbmQgYW55IHBvdGVudGlhbCBwb2ludHMgb2YgZmFpbHVyZSBvciB1bmV4cGVjdGVkIGJlaGF2aW9yLiBFc3NlbnRpYWxseSwgSSdtIGdvaW5nIHRvIG1hcCBvdXQgdGhlIGNhbGwgZ3JhcGggZm9yIHRoZXNlIHR3byBmdW5jdGlvbnMgdG8gZ2V0IGEgaGlnaC1sZXZlbCB2aWV3IGFuZCBzZWUgaWYgYW55dGhpbmcganVtcHMgb3V0LiBJIGhhdmUgYSBodW5jaCB0aGlzIGlzIHRoZSByaWdodCBwbGFjZSB0byBzdGFydCBsb29raW5nIGZvciB0aGUgY29yZSBpc3N1ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODAyNywiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA3OjIxOjE0LjAxNDA2OTA2NVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI0Nzg2MzUxMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwNTRfYmVhY29uX3VwZGF0ZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jPTkzPXN0YXRpYyBpbnQgcDU0X2JlYWNvbl9mb3JtYXRfaWVfdGltKHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jLTEzMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jOjEzMjpzdGF0aWMgaW50IHA1NF9iZWFjb25fdXBkYXRlKHN0cnVjdCBwNTRfY29tbW9uICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmMtMTMzLVxcdFxcdFxcdHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jPTQ0OT1zdGF0aWMgdm9pZCBwNTRfYnNzX2luZm9fY2hhbmdlZChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jLTQ2NC1cXHRcXHRwNTRfc2V0dXBfbWFjKHByaXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmM6NDY1OlxcdFxcdHA1NF9iZWFjb25fdXBkYXRlKHByaXYsIHZpZik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYy00NjYtXFx0XFx0cDU0X3NldF9lZGNmKHByaXYpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwNzoyMToxNi4yNjE5NDQxOThaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjM3MzM3OTUyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKkNoZWNraW5nIGEgUG90ZW50aWFsIEJ1ZyBGaXgqKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcsIFwiTGV0J3MgZGlnIGludG8gYHR4cnguY2AgYWdhaW4uIEkgaGF2ZSBhIGh1bmNoLCBhbmQgSSBuZWVkIHRvIHZlcmlmeSBzb21ldGhpbmcuXCIgU3BlY2lmaWNhbGx5LCBJIHdhbnQgdG8gdGFrZSBhIGxvb2sgYXQgdGhlIGBwNTRfcHNwb2xsX3dvcmthcm91bmRgIGZ1bmN0aW9uLiBUaGlzIGlzIGFuIGludGVyZXN0aW5nIGFyZWEgYmVjYXVzZSBpdCBkZWFscyB3aXRoIHBvd2VyLXNhdmluZyBhbmQgcG9sbGluZy4gR2l2ZW4gdGhlIGNvbnRleHQsIEkgc3VzcGVjdCB0aGVyZSBtaWdodCBiZSBzb21ldGhpbmcgcmVsYXRlZCB0byBhbiBpc3N1ZSBJJ20gY2hhc2luZyBsdXJraW5nIGluIHRoYXQgcGFydCBvZiB0aGUgY29kZS4gSXQncyBhIGtleSBhcmVhIHRvIHJlLWV4YW1pbmUgdG8gc2VlIGlmIHRoaXMgaXMgcmVsYXRlZCB0byB0aGUgY3VycmVudCBwcm9ibGVtcy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIHNvbWV0aGluZyBwcmV2aW91c2x5LiBMZXQncyBzZWUgd2hhdCdzIGluIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NTYxLCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDc6MjE6MTguNjM1MzI3MjExWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTc1NTczNjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInA1NF9wc3BvbGxfd29ya2Fyb3VuZFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jPTI3NT1zdGF0aWMgaW50IHA1NF9yc3NpX3RvX2RibShzdHJ1Y3QgcDU0X2NvbW1vbiAqcHJpdiwgaW50IHJzc2kpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jLTI5My0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jOjI5NDpzdGF0aWMgdm9pZCBwNTRfcHNwb2xsX3dvcmthcm91bmQoc3RydWN0IHA1NF9jb21tb24gKnByaXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYy0yOTUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYz0zMjc9c3RhdGljIGludCBwNTRfcnhfZGF0YShzdHJ1Y3QgcDU0X2NvbW1vbiAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmMtMzg4LVxcdGlmICh1bmxpa2VseShwcml2LVxcdTAwM2Vody1cXHUwMDNlY29uZi5mbGFncyBcXHUwMDI2IElFRUU4MDIxMV9DT05GX1BTKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jOjM4OTpcXHRcXHRwNTRfcHNwb2xsX3dvcmthcm91bmQocHJpdiwgc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jLTM5MC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDc6MjE6MjAuODEwOTA1NjRaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTc0MDA1MTQ1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBvdGVudGlhbCBWdWxuZXJhYmlsaXR5IGluIGBwNTRfZmluZF9pZWAqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFRoZSBjb2RlIGluIGBwNTRfZmluZF9pZWAgaGFzIGEgcGVjdWxpYXIgY2hhbmdlLiBJbml0aWFsbHksIHRoZXJlIHdhcyBhIGNoZWNrOiBgaWYgKHNrYi1cdTAwM2VsZW4gXHUwMDNjPSBzaXplb2YobWdtdCkpIHJldHVybiBOVUxMO2AuIFRoYXQgY2hlY2sgaGFzIGJlZW4gcmVtb3ZlZC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gdW5kZXJzdGFuZCAqd2h5KiBhbmQgd2hhdCB0aGUgaW1wbGljYXRpb25zIGFyZS5cblxuVGhlIHZhcmlhYmxlIGBtZ210YCBpcyBhIHBvaW50ZXIgdG8gYGllZWU4MDIxMV9tZ210YC4gVGhlIHJlbW92ZWQgY2hlY2sgd2FzIGNvbXBhcmluZyB0aGUgcGFja2V0IGxlbmd0aCAoYHNrYi1cdTAwM2VsZW5gKSB0byB0aGUgc2l6ZSBvZiBhIHBvaW50ZXIsIHdoaWNoIGlzIDggYnl0ZXMuIEhvd2V2ZXIsIGBtZ210LVx1MDAzZXUuYmVhY29uLnZhcmlhYmxlYCBpcyAqYWN0dWFsbHkqIG9mZnNldCBhdCAzNiBieXRlcyAob3Igd2hhdGV2ZXIgaXRzIGFjdHVhbCBvZmZzZXQgaXMsIGdpdmVuIHRoZSBzdHJ1Y3R1cmUncyBsYXlvdXQpLiBJZiB0aGUgcGFja2V0IGlzLCBzYXksIG9ubHkgMTAgYnl0ZXMsIHRoZSBjb2RlIHdvdWxkIGJlIHRyeWluZyB0byBhY2Nlc3MgbWVtb3J5IHBhc3QgdGhlIGVuZCBvZiB0aGUgYHNrYi1cdTAwM2VkYXRhYCBidWZmZXIuIFRoZSBgcG9zIFx1MDAzYyBlbmRgIGNvbXBhcmlzb24gaW4gdGhlIGB3aGlsZWAgbG9vcCAqc2hvdWxkKiBwcmV2ZW50IGlzc3VlcywgYnV0IHRoZSBjaGVjayB3YXMgdGhlcmUgZm9yIGEgcmVhc29uLCBhbmQgaXRzIHJlbW92YWwgd2FycmFudHMgY2xvc2Ugc2NydXRpbnkuXG5cblRoZSBpbml0aWFsIGFzc3VtcHRpb24gbWlnaHQgYmUgdGhlIGNvZGUgaXMgc2FmZSwgc2luY2UgYHBvc2AgYXJpdGhtZXRpYyBjb3VsZCBzdGlsbCBjYXVzZSBpdCB0byBiZSBvdXQtb2YtYm91bmRzLCBldmVuIGlmIHRoZSBjb21wYXJpc29uIHByZXZlbnRzIGV4ZWN1dGlvbi4gVGhlIHJlbW92YWwgb2YgdGhlIGNoZWNrIGlzIHRoZSBtb3N0IGludGVyZXN0aW5nIHBhcnQuIFdoeSB3YXMgaXQgcmVtb3ZlZD8gV2FzIGl0IGEgYnVnIGZpeD8gT3IgYSBtaXNndWlkZWQgcmVmYWN0b3Jpbmc/IEl0ICpjb3VsZCogaW5kaWNhdGUgYSBtaXN1bmRlcnN0YW5kaW5nIG9mIGBzaXplb2ZgIG9yIHNvbWUgbG9naWMgZXJyb3IsIGJ1dCBub3cgdGhlIHF1ZXN0aW9uIGlzOiBjYW4gdGhpcyBjb25kaXRpb24gYmUgdHJpZ2dlcmVkP1xuXG5TbywgaXMgdGhpcyByZWFjaGFibGU/IFRoZSBkcml2ZXIgaXMgYHA1NGAsIHdoaWNoIGhhcyBhIFVTQiBmcm9udGVuZCAoYHA1NHVzYmApLiBDb25zaWRlcmluZyB0aGlzIGlzIGluIHRoZSBjb250ZXh0IG9mIHBhdGNoIGZ1enppbmcsIGFuZCB0aGUgaW5zdHJ1Y3Rpb25zIGVtcGhhc2l6ZSByZWFjaGFiaWxpdHksIGxldCdzIGFwcGx5IHRoZSBjcml0ZXJpYS4gV2UgY2FuIGZ1enogVVNCIHdpcmVsZXNzIGRldmljZXMgdXNpbmcgc3l6a2FsbGVyIHdpdGggVVNCIGVtdWxhdGlvbiwgcmF3LWdhZGdldCwgdmhjaSwgYW5kIG1hYzgwMjExLiBUaGUgZG9jdW1lbnRhdGlvbiBzcGVjaWZpY2FsbHkgbWVudGlvbnMgdGhhdCBcIlJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHNcIiBpbmNsdWRlIHRob3NlIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgbGlrZSBVU0IgZ2FkZ2V0cy4gUGF0Y2ggZnV6emluZydzIHByaW9yaXR5IGlzIHJlYWNoYWJpbGl0eSwgc28gaWYgdGhlIGNvZGUgZXhlY3V0ZXMsIGl0J3Mgd29ydGggZnV6emluZyFcblxuTGV0J3MgY2hlY2sgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zLiBUaGUgYHA1NGAgZHJpdmVyIGl0c2VsZiAoYW5kIHNwZWNpZmljYWxseSBVU0IpIGRlcGVuZHMgb24gYE1BQzgwMjExYCBhbmQgYFVTQmAsIGFuZCBpcyBwYXJ0IG9mIHRoZSBgUDU0X0NPTU1PTmAgY29uZmlndXJhdGlvbiwgd2hpY2ggaGFzIGRlcGVuZGVuY2llcyBvbiBvdGhlciBjb21wb25lbnRzLiBUaGVzZSBjb25maWd1cmF0aW9ucyBhcmUgYWxsIHN0YW5kYXJkLCBhbmQgaXQncyBmZWFzaWJsZSB0byB0cmlnZ2VyIHRoaXMgY29kZSBpbiBhIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBTbywgYHA1NGAgaXMgcG90ZW50aWFsbHkgcmVhY2hhYmxlIHRocm91Z2ggdGhlc2UgdmlydHVhbCBidXNlcywgYW5kIHRoYXQgbWFrZXMgdGhpcyBwYXRjaCB3b3J0aCBmdXp6aW5nISBMZXQncyBjaGVjayB0aGUgY29uZmlndXJhdGlvbnMgdG8gY29uZmlybSB3ZSBoYXZlIHRoZSBjb3JyZWN0IGJ1aWxkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MDk2LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTYwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA3OjIxOjI2LjU1MDk2MDExMloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU4NTA1ODUyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNvdXJjZS4qcDU0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL0tjb25maWc9MTM9aWYgV0xBTl9WRU5ET1JfSU5URVJTSUxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9LY29uZmlnLTE0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL0tjb25maWc6MTU6c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9LY29uZmlnLTE2LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwNzoyMToyNi43MDk0NzEyMjVaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTg2ODk2OTU0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIEludGVyY2lsIFdpcmVsZXNzIERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIEludGVyc2lsIHdpcmVsZXNzIGRyaXZlci4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gY2hlY2sgdGhlIGBLY29uZmlnYCBmaWxlLCBsb2NhdGVkIGluIHRoZSB1c3VhbCBwbGFjZTogYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL0tjb25maWdgLiBUaGF0J3Mgd2hlcmUgSSdkIGV4cGVjdCB0byBmaW5kIGFsbCB0aGUgY29tcGlsZS10aW1lIG9wdGlvbnMsIGRlcGVuZGVuY2llcywgYW5kIGhlbHAgdGV4dCB0aGF0IGRldGVybWluZSBob3cgdGhpcyBkcml2ZXIgYmVoYXZlcyBhbmQgd2hldGhlciBpdCBnZXRzIGJ1aWx0IGludG8gdGhlIGtlcm5lbC4gSSdsbCBuZWVkIHRvIGxvb2sgaW4gZGV0YWlsIGF0IGhvdyB0aGUgdmFyaW91cyBmZWF0dXJlcyBhcmUgZW5hYmxlZCBhbmQgZGlzYWJsZWQsIGFuZCBob3cgdGhleSByZWxhdGUgdG8gdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUgYW5kIGFueSByZXF1aXJlZCBrZXJuZWwgc3VwcG9ydC4gSSBhbnRpY2lwYXRlIEkgd2lsbCBuZWVkIHRvIGxvb2sgYXQgYW55IGRlcGVuZGVuY2llcyBvbiBvdGhlciBrZXJuZWwgc3Vic3lzdGVtcyBvciBmZWF0dXJlcy4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIGdvb2Qgb3ZlcnZpZXcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNzY0LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDc6MjE6MjguNTc4NDQzNjRaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODc3OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIFdMQU5fVkVORE9SX0lOVEVSU0lMXFxuICAgMzpcXHRcXHRib29sIFxcXCJJbnRlcnNpbCBkZXZpY2VzXFxcIlxcbiAgIDQ6XFx0XFx0ZGVmYXVsdCB5XFxuICAgNTpcXHRcXHRoZWxwXFxuICAgNjpcXHRcXHQgIElmIHlvdSBoYXZlIGEgd2lyZWxlc3MgY2FyZCBiZWxvbmdpbmcgdG8gdGhpcyBjbGFzcywgc2F5IFkuXFxuICAgNzpcXHRcXG4gICA4OlxcdFxcdCAgTm90ZSB0aGF0IHRoZSBhbnN3ZXIgdG8gdGhpcyBxdWVzdGlvbiBkb2Vzbid0IGRpcmVjdGx5IGFmZmVjdCB0aGVcXG4gICA5OlxcdFxcdCAga2VybmVsOiBzYXlpbmcgTiB3aWxsIGp1c3QgY2F1c2UgdGhlIGNvbmZpZ3VyYXRvciB0byBza2lwIGFsbCB0aGVcXG4gIDEwOlxcdFxcdCAgcXVlc3Rpb25zIGFib3V0IHRoZXNlIGNhcmRzLiBJZiB5b3Ugc2F5IFksIHlvdSB3aWxsIGJlIGFza2VkIGZvclxcbiAgMTE6XFx0XFx0ICB5b3VyIHNwZWNpZmljIGNhcmQgaW4gdGhlIGZvbGxvd2luZyBxdWVzdGlvbnMuXFxuICAxMjpcXHRcXG4gIDEzOlxcdGlmIFdMQU5fVkVORE9SX0lOVEVSU0lMXFxuICAxNDpcXHRcXG4gIDE1OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L0tjb25maWdcXFwiXFxuICAxNjpcXHRcXG4gIDE3OlxcdGVuZGlmICMgV0xBTl9WRU5ET1JfSU5URVJTSUxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDc6MjE6MjguNTc4NTMzNTRaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzUzMjg4MTM0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFVzYWdlIG9mIGBwNTRfZmluZF9pZWAqKlxuXG5Pa2F5LCBsZXQncyBzZWUgd2hlcmUgdGhpcyBgcDU0X2ZpbmRfaWVgIGZ1bmN0aW9uIGlzIGJlaW5nIHVzZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBjYWxsIGdyYXBoIHdpdGhpbiB0aGUgcDU0IGRyaXZlci4gRmlyc3QsIGxldCdzIGxvb2sgYXQgdGhlIGRpcmVjdCBjYWxsZXJzLiBBaCwgaGVyZSB3ZSBnbywgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmNgLCBgcDU0X2ZpbmRfaWVgIGlzIGNsZWFybHkgaW52b2tlZCBieSBgcDU0X2JlYWNvbl9mb3JtYXRfaWVfdGltYC4gUmlnaHQsIGFuZCBgcDU0X2JlYWNvbl9mb3JtYXRfaWVfdGltYCBpcyBwYXJ0IG9mIHRoZSBiZWFjb24gdXBkYXRlIHByb2Nlc3MsIGNhbGxlZCB0aHJvdWdoIGBwNTRfYmVhY29uX3VwZGF0ZWAgd2hpY2ggaXMgZHJpdmVuIGJ5IGNoYW5nZXMgaW4gYHA1NF9ic3NfaW5mb19jaGFuZ2VkYC4gVGhhdCBtYWtlcyBzZW5zZTsgaXQncyBwcm9iYWJseSBwYXJzaW5nIG9yIGZvcm1hdHRpbmcgaW5mb3JtYXRpb24gZWxlbWVudHMgZm9yIHRoZSBiZWFjb24uXG5cbk5vdywgb3ZlciBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguY2AsIEkgc2VlIGFub3RoZXIgY2FsbDogYHA1NF9wc3BvbGxfd29ya2Fyb3VuZGAgY2FsbHMgYHA1NF9maW5kX2llYC4gQW5kIHRoYXQncyBpbnZva2VkIHdpdGhpbiB0aGUgYHA1NF9yeF9kYXRhYCBmdW5jdGlvbi4gVGhhdCdzIGludGVyZXN0aW5nLCBzdWdnZXN0aW5nIGl0J3MgYWxzbyBiZWluZyB1c2VkIGR1cmluZyByZWNlaXZlIHByb2Nlc3NpbmcuIEkgd29uZGVyIHdoYXQgaXQncyBkb2luZyB0aGVyZS4gSSBzaG91bGQgdGFrZSBhIGNsb3NlciBsb29rIGF0IGBwNTRfcnhfZGF0YWAgdG8gZ2V0IHRoZSBjb250ZXh0IGFuZCB1bmRlcnN0YW5kIGhvdyBpdCBoYW5kbGVzIGluY29taW5nIHBhY2tldHMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgdG8gdGhlIG92ZXJhbGwgZHJpdmVyIGJlaGF2aW9yLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTIzMSwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3NSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA3OjIxOjMyLjExMTQxNzFaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMzE0ODg4MzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicDU0X3J4X2RhdGFcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYz0yNz1pbnQgcDU0X3BhcnNlX2Zpcm13YXJlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmRldiwgY29uc3Qgc3RydWN0IGZpcm13YXJlICpmdylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtOTQtXFx0XFx0XFx0bWF4bGVuID0gcHJpdi1cXHUwMDNldHhfaGRyX2xlbiArIC8qIFVTQiBkZXZpY2VzICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2Z3aW8uYzo5NTpcXHRcXHRcXHRcXHQgc2l6ZW9mKHN0cnVjdCBwNTRfcnhfZGF0YSkgK1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmMtOTYtXFx0XFx0XFx0XFx0IDQgKyAvKiByeCBhbGlnbm1lbnQgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg9MTUzPWVudW0gcDU0X3J4X2RlY3J5cHRfc3RhdHVzIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmgtMTY2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MTY3OnN0cnVjdCBwNTRfcnhfZGF0YSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaC0xNjgtXFx0X19sZTE2IGZsYWdzO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYz0yOTQ9c3RhdGljIHZvaWQgcDU0X3BzcG9sbF93b3JrYXJvdW5kKHN0cnVjdCBwNTRfY29tbW9uICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYy0zMjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYzozMjc6c3RhdGljIGludCBwNTRfcnhfZGF0YShzdHJ1Y3QgcDU0X2NvbW1vbiAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jLTMyOC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYzozMjk6XFx0c3RydWN0IHA1NF9yeF9kYXRhICpoZHIgPSAoc3RydWN0IHA1NF9yeF9kYXRhICopIHNrYi1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jLTMzMC1cXHRzdHJ1Y3QgaWVlZTgwMjExX3J4X3N0YXR1cyAqcnhfc3RhdHVzID0gSUVFRTgwMjExX1NLQl9SWENCKHNrYik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jPTY4ND1pbnQgcDU0X3J4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmMtNjkxLVxcdGVsc2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jOjY5MjpcXHRcXHRyZXR1cm4gcDU0X3J4X2RhdGEocHJpdiwgc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jLTY5My19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA3OjIxOjM0LjM0MjkxMTYzN1oiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMzEzNzM4NjExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczpcblxuKipSWCBEYXRhIEZsb3cgVmVyaWZpY2F0aW9uKipcblxuT2theSwgc28gSSdtIGZvY3VzaW5nIG9uIHRoZSByZWNlaXZlIHBhdGggaGVyZSwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYHA1NGAgZHJpdmVyLiBJJ20gc3RhcnRpbmcgd2l0aCBgcDU0X3J4X2RhdGFgIOKAkyB0aGF0J3MgdGhlIGtleSBmdW5jdGlvbiBJIG5lZWQgdG8gdW5kZXJzdGFuZC4gTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IGBwNTRfcnhfZGF0YWAgaXMgdGhlIGNvcmUgb2YgdGhlIGRhdGEgcHJvY2Vzc2luZyB0aGF0IGhhcHBlbnMgb24gdGhlIHJlY2VpdmUgc2lkZS4gSXQncyBjYWxsZWQgYnkgYHA1NF9yeGAsIHdoaWNoIGl0c2VsZiBpcyB0cmlnZ2VyZWQgd2hlbiB0aGUgVVNCIGRldmljZSBoYW5kcyBvdmVyIGEgZnJhbWUuIFNvLCBJIG5lZWQgdG8gdHJhY2UgdGhpcyBzZXF1ZW5jZTogZnJvbSB0aGUgVVNCIGludGVyZmFjZSAoYHA1NHVzYl9yeF9jYmAgb3IgZXF1aXZhbGVudCksIGRvd24gaW50byBgcDU0X3J4YCwgYW5kIHRoZW4gdG8gYHA1NF9yeF9kYXRhYC4gTWFrZXMgc2Vuc2UsIHRoZSBVU0IgaW50ZXJmYWNlIGRldGVjdHMgYSBmcmFtZSBhbmQgaXQgaXMgcGFzc2VkIGludG8gYHA1NF9yeF9jYmAsIHdoaWNoLCB0aGVuIGNhbGxzIGBwNTRfcnhgIHdoaWNoIGlzIHJlc3BvbnNpYmxlIHRvIGhhbmRsZSB0aGUgZnJhbWUgYW5kLCB0aGVuIGl0IGNhbGxzIGBwNTRfcnhfZGF0YWAgdG8gcHJvcGVybHkgcHJvY2VzcyB0aGUgaW5jb21pbmcgZGF0YSwgb3Igc28gSSBhc3N1bWUuIEl0J3MgcmVhbGx5IHRoZSBkYXRhIHByb2Nlc3NpbmcgSSBuZWVkIHRvIHVuZGVyc3RhbmQuIExldCdzIHZlcmlmeSB0aGlzLCBJIG5lZWQgdG8gZ2V0IGRvd24gaW50byB0aGUgYHA1NHVzYmAgUlggcGF0aCB0byBjb25maXJtIHRoaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyNDM0LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDc6MjE6MzYuNjU2NjUzNjM4WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NzQ0OTI0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwNTRfcnhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM9Mjc9aW50IHA1NF9wYXJzZV9maXJtd2FyZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpkZXYsIGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZncpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTk0LVxcdFxcdFxcdG1heGxlbiA9IHByaXYtXFx1MDAzZXR4X2hkcl9sZW4gKyAvKiBVU0IgZGV2aWNlcyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9md2lvLmM6OTU6XFx0XFx0XFx0XFx0IHNpemVvZihzdHJ1Y3QgcDU0X3J4X2RhdGEpICtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvZndpby5jLTk2LVxcdFxcdFxcdFxcdCA0ICsgLyogcnggYWxpZ25tZW50ICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oPTEzNT1zdHJ1Y3QgcDU0X2VlcHJvbV9sbTg2IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmgtMTUyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MTUzOmVudW0gcDU0X3J4X2RlY3J5cHRfc3RhdHVzIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oLTE1NC1cXHRQNTRfREVDUllQVF9OT05FID0gMCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmgtMTY2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmg6MTY3OnN0cnVjdCBwNTRfcnhfZGF0YSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L2xtYWMuaC0xNjgtXFx0X19sZTE2IGZsYWdzO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3A1NC5oPTE2ND1zdHJ1Y3QgcDU0X2NvbW1vbiB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvcDU0LmgtMjY2LS8qIGludGVyZmFjZXMgZm9yIHRoZSBkcml2ZXJzICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3A1NC5oOjI2NzppbnQgcDU0X3J4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3A1NC5oLTI2OC12b2lkIHA1NF9mcmVlX3NrYihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3A1NHBjaS5jPTE4ND1zdGF0aWMgdm9pZCBwNTRwX2NoZWNrX3J4X3Jpbmcoc3RydWN0IGllZWU4MDIxMV9odyAqZGV2LCB1MzIgKmluZGV4LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3A1NHBjaS5jLTIyMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvcDU0cGNpLmM6MjIzOlxcdFxcdGlmIChwNTRfcngoZGV2LCBza2IpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3A1NHBjaS5jLTIyNC1cXHRcXHRcXHRkbWFfdW5tYXBfc2luZ2xlKFxcdTAwMjZwcml2LVxcdTAwM2VwZGV2LVxcdTAwM2VkZXYsIGRtYV9hZGRyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3A1NHNwaS5jPTMxND1zdGF0aWMgaW50IHA1NHNwaV9yeChzdHJ1Y3QgcDU0c19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3A1NHNwaS5jLTM2Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvcDU0c3BpLmM6MzYzOlxcdGlmIChwNTRfcngocHJpdi1cXHUwMDNlaHcsIHNrYikgPT0gMClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvcDU0c3BpLmMtMzY0LVxcdFxcdGRldl9rZnJlZV9za2Ioc2tiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9wNTR1c2IuYz0xNDA9c3RhdGljIHZvaWQgcDU0dV9yeF9jYihzdHJ1Y3QgdXJiICp1cmIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvcDU0dXNiLmMtMTYyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9wNTR1c2IuYzoxNjM6XFx0aWYgKHA1NF9yeChkZXYsIHNrYikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvcDU0dXNiLmMtMTY0LVxcdFxcdHNrYiA9IGRldl9hbGxvY19za2IocHJpdi1cXHUwMDNlY29tbW9uLnJ4X210dSArIDMyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmM9Mjk0PXN0YXRpYyB2b2lkIHA1NF9wc3BvbGxfd29ya2Fyb3VuZChzdHJ1Y3QgcDU0X2NvbW1vbiAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmMtMzI2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmM6MzI3OnN0YXRpYyBpbnQgcDU0X3J4X2RhdGEoc3RydWN0IHA1NF9jb21tb24gKnByaXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYy0zMjgte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmM6MzI5OlxcdHN0cnVjdCBwNTRfcnhfZGF0YSAqaGRyID0gKHN0cnVjdCBwNTRfcnhfZGF0YSAqKSBza2ItXFx1MDAzZWRhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYy0zMzAtXFx0c3RydWN0IGllZWU4MDIxMV9yeF9zdGF0dXMgKnJ4X3N0YXR1cyA9IElFRUU4MDIxMV9TS0JfUlhDQihza2IpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYy0zOTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYzozOTk6c3RhdGljIHZvaWQgcDU0X3J4X2ZyYW1lX3NlbnQoc3RydWN0IHA1NF9jb21tb24gKnByaXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYy00MDAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYy00ODctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYzo0ODg6c3RhdGljIHZvaWQgcDU0X3J4X2VlcHJvbV9yZWFkYmFjayhzdHJ1Y3QgcDU0X2NvbW1vbiAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jLTQ4OS1cXHRcXHRcXHRcXHQgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYy01MjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYzo1MjU6c3RhdGljIHZvaWQgcDU0X3J4X3N0YXRzKHN0cnVjdCBwNTRfY29tbW9uICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmMtNTI2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmMtNjE4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmM6NjE5OnN0YXRpYyB2b2lkIHA1NF9yeF90cmFwKHN0cnVjdCBwNTRfY29tbW9uICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmMtNjIwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmMtNjU0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmM6NjU1OnN0YXRpYyBpbnQgcDU0X3J4X2NvbnRyb2woc3RydWN0IHA1NF9jb21tb24gKnByaXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYy02NTYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYy02NjAtXFx0Y2FzZSBQNTRfQ09OVFJPTF9UWVBFX1RYRE9ORTpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jOjY2MTpcXHRcXHRwNTRfcnhfZnJhbWVfc2VudChwcml2LCBza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmMtNjYyLVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmMtNjYzLVxcdGNhc2UgUDU0X0NPTlRST0xfVFlQRV9UUkFQOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmM6NjY0OlxcdFxcdHA1NF9yeF90cmFwKHByaXYsIHNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYy02NjUtXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jLTY2OC1cXHRjYXNlIFA1NF9DT05UUk9MX1RZUEVfU1RBVF9SRUFEQkFDSzpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jOjY2OTpcXHRcXHRwNTRfcnhfc3RhdHMocHJpdiwgc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jLTY3MC1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jLTY3MS1cXHRjYXNlIFA1NF9DT05UUk9MX1RZUEVfRUVQUk9NX1JFQURCQUNLOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmM6NjcyOlxcdFxcdHA1NF9yeF9lZXByb21fcmVhZGJhY2socHJpdiwgc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jLTY3My1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmMtNjgzLS8qIHJldHVybnMgemVybyBpZiBza2IgY2FuIGJlIHJldXNlZCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmM6Njg0OmludCBwNTRfcngoc3RydWN0IGllZWU4MDIxMV9odyAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmMtNjg1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmMtNjg5LVxcdGlmICh0eXBlIFxcdTAwMjYgUDU0X0hEUl9GTEFHX0NPTlRST0wpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYzo2OTA6XFx0XFx0cmV0dXJuIHA1NF9yeF9jb250cm9sKHByaXYsIHNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYy02OTEtXFx0ZWxzZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmM6NjkyOlxcdFxcdHJldHVybiBwNTRfcnhfZGF0YShwcml2LCBza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmMtNjkzLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jOjY5NDpFWFBPUlRfU1lNQk9MX0dQTChwNTRfcngpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC90eHJ4LmMtNjk1LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwNzoyMTozNi43MjQxMDgwNTdaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTc4MjcwNzAyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgYHA1NF9maW5kX2llYCBWdWxuZXJhYmlsaXR5KipcblxuT2theSwgc28gSSd2ZSBnb3QgYSBtb2RpZmljYXRpb24gdG8gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBwNTRfZmluZF9pZWAgZnVuY3Rpb24uIFRoaXMgaXMgY3JpdGljYWwgYmVjYXVzZSBpdCdzIHJlc3BvbnNpYmxlIGZvciBwYXJzaW5nIEluZm9ybWF0aW9uIEVsZW1lbnRzIChJRXMpIHdpdGhpbiBJRUVFIDgwMi4xMSBtYW5hZ2VtZW50IGZyYW1lcyBsaWtlIGJlYWNvbnMuIFRoZSBwYXRjaCdzIGNvcmUgY2hhbmdlIGlzIHRoZSByZW1vdmFsIG9mIHRoZSBpbml0aWFsIGxlbmd0aCBjaGVjazogIHRoZSBgaWYgKHNrYi1cdTAwM2VsZW4gXHUwMDNjPSBzaXplb2YobWdtdCkpYCBzdGF0ZW1lbnQuXG5cblRoYXQncyBpbW1lZGlhdGVseSBjb25jZXJuaW5nLiAgUmVtb3ZpbmcgdGhhdCBjaGVjayBkaXJlY3RseSBhbHRlcnMgdGhlIGJvdW5kYXJ5IHZhbGlkYXRpb24gKmJlZm9yZSogdGhlIGNydWNpYWwgY2FsY3VsYXRpb24gb2YgYHBvcyA9ICh1OCAqKW1nbXQtXHUwMDNldS5iZWFjb24udmFyaWFibGU7YC4gRXNzZW50aWFsbHksIGl0J3MgYSBjbGFzc2ljIGJ1ZmZlciBvdmVyZmxvdyBzZXR1cDsgd2UncmUgbm93IG1vcmUgdnVsbmVyYWJsZSB0byBzdXBwbHlpbmcgY3JhZnRlZCBmcmFtZXMgdGhhdCB0aGUgY29kZSAqdGhpbmtzKiBpcyB2YWxpZC5cblxuVGhlIGdvb2QgbmV3cyAoZm9yIG1lLCBhcyBhIGZ1enppbmcgZXhwZXJ0KSBpcyB0aGF0IHRoaXMgY29kZSBwYXRoIGlzIGRlZmluaXRlbHkgcmVhY2hhYmxlLiAgV2UncmUgdGFsa2luZyBhYm91dCB2aXJ0dWFsIG9yIGVtdWxhdGVkIFVTQiBkZXZpY2VzIHVzaW5nIGBwNTR1c2JgLCBhbmQgdGhlIE1BQzgwMjExIEFQL2JlYWNvbiBmcmFtZSBoYW5kbGluZy4gU28sIGl0J3MgZXhwbG9pdGFibGUsIHdoaWNoIG1lYW5zIGl0J3Mgd29ydGggb3VyIHRpbWUuIFdvcnRoRnV6emluZyA9IFRydWUuXG5cbk5vdywgbGV0J3MgbmFpbCBkb3duIHRoZSByZXF1aXJlZCBjb25maWd1cmF0aW9ucy4gSSdtIGdvaW5nIHRvIG5lZWQ6XG5cbiogICBgUDU0X0NPTU1PTmAgLSB0aGF0J3MgYSBnaXZlbiBmb3IgdGhlIGRyaXZlci5cbiogICBgUDU0X1VTQmAgLSBzaW5jZSB0aGlzIGZvY3VzZXMgb24gVVNCLWJhc2VkIGRldmljZXMuXG4qICAgYE1BQzgwMjExYCAtIHRvIGhhbmRsZSB0aGUgODAyLjExIHByb3RvY29sLlxuKiAgIGBVU0JgIC0gdGhlIGJhc2UgVVNCIGNvbmZpZ3VyYXRpb24sIG9mIGNvdXJzZS5cbiogICBgV0xBTl9WRU5ET1JfSU5URVJTSUxgIC0gdGhhdCdzIHRoZSBrZXkgb25lLCB0aGUgb25lIHRoYXQgdGllcyBpdCBhbGwgdG9nZXRoZXIuXG5cbkxldCBtZSBqdXN0IGRvdWJsZS1jaGVjayB0aGF0IGBXTEFOX1ZFTkRPUl9JTlRFUlNJTGAgaXMgcHJvcGVybHkgaW5jbHVkZWQgaW4gS2NvbmZpZzogTG9va3MgbGlrZSBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvS2NvbmZpZ2AgaXQgaXMgY29ycmVjdGx5IHNvdXJjZWQ6IGBpZiBXTEFOX1ZFTkRPUl9JTlRFUlNJTCBzb3VyY2UgXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvS2NvbmZpZ1wiIGVuZGlmYC4gVGhlbiwgSSdsbCBxdWlja2x5IGxvb2sgdXAgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWdgIHRvIGNvbmZpcm0gdGhhdCB0aGUgaW50ZXJzaWwgc291cmNlIGlzIGNvcnJlY3QuIE9rYXksIHRpbWUgdG8gZ2VuZXJhdGUgc29tZSB0ZXN0IGNhc2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTM1NCwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwNzoyMTo0Mi41MDY4MTcxMjlaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MDExNTYwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpbnRlcnNpbC9LY29uZmlnXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWc9MjU9c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWc6MjY6c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWctMjctc291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL0tjb25maWdcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA3OjIxOjQyLjY3Njk0MjUzN1oiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxNjI3OTEwMzU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipBbmFseXppbmcgdGhlIEtjb25maWcgZm9yIFdpcmVsZXNzIE5ldHdvcmtpbmcgRHJpdmVycyoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW4uIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIHRoZSB3aXJlbGVzcyBuZXR3b3JraW5nIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gTXkgaW5zdGluY3QgdGVsbHMgbWUgdG8gc3RhcnQgd2l0aCB0aGUgbWFpbiBgS2NvbmZpZ2AgZmlsZSBmb3Igd2lyZWxlc3MgZHJpdmVycy4gSSdtIGZvY3VzaW5nIG9uIHRoYXQgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWdgIGZpbGUsIHNwZWNpZmljYWxseSBhcm91bmQgbGluZSAyNi4gSSdtIGV4cGVjdGluZyB0aGF0IGFyZWEgdG8gY29udGFpbiBhIGhpZ2gtbGV2ZWwgb3ZlcnZpZXcgb3IgcGVyaGFwcyB0aGUgZGVmYXVsdCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEhvcGVmdWxseSwgSSdsbCBmaW5kIHRoZSBjb3JlIHN0cnVjdHVyZSBvZiBob3cgdGhlc2UgZHJpdmVycyBhcmUgb3JnYW5pemVkIGFuZCBlbmFibGVkIHRoZXJlLiBUaGlzIHNob3VsZCBwcm92aWRlIGEgc29saWQgYmFzZSBmb3IgdW5kZXJzdGFuZGluZyBob3cgYWxsIG9mIHRoZXNlIHNwZWNpZmljIHdpcmVsZXNzIGltcGxlbWVudGF0aW9ucyBmaXQgdG9nZXRoZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2MzMzLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDc6MjE6NDQuMzA0ODU2NjA2WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY2MTUxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMzVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgV2lyZWxlc3MgTEFOIGRldmljZSBjb25maWd1cmF0aW9uXFxuICAgNDpcXHQjXFxuICAgNTpcXHRcXG4gICA2OlxcdG1lbnVjb25maWcgV0xBTlxcbiAgIDc6XFx0XFx0Ym9vbCBcXFwiV2lyZWxlc3MgTEFOXFxcIlxcbiAgIDg6XFx0XFx0ZGVwZW5kcyBvbiAhUzM5MFxcbiAgIDk6XFx0XFx0ZGVwZW5kcyBvbiBORVRcXG4gIDEwOlxcdFxcdHNlbGVjdCBXSVJFTEVTU1xcbiAgMTE6XFx0XFx0ZGVmYXVsdCB5XFxuICAxMjpcXHRcXHRoZWxwXFxuICAxMzpcXHRcXHQgIFRoaXMgc2VjdGlvbiBjb250YWlucyBhbGwgdGhlIHByZSA4MDIuMTEgYW5kIDgwMi4xMSB3aXJlbGVzc1xcbiAgMTQ6XFx0XFx0ICBkZXZpY2UgZHJpdmVycy4gRm9yIGEgY29tcGxldGUgbGlzdCBvZiBkcml2ZXJzIGFuZCBkb2N1bWVudGF0aW9uXFxuICAxNTpcXHRcXHQgIG9uIHRoZW0gcmVmZXIgdG8gdGhlIHdpcmVsZXNzIHdpa2k6XFxuICAxNjpcXHRcXG4gIDE3OlxcdFxcdCAgaHR0cHM6Ly93aXJlbGVzcy53aWtpLmtlcm5lbC5vcmcvZW4vdXNlcnMvRHJpdmVyc1xcbiAgMTg6XFx0XFxuICAxOTpcXHRpZiBXTEFOXFxuICAyMDpcXHRcXG4gIDIxOlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYWRtdGVrL0tjb25maWdcXFwiXFxuICAyMjpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9LY29uZmlnXFxcIlxcbiAgMjM6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdG1lbC9LY29uZmlnXFxcIlxcbiAgMjQ6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9LY29uZmlnXFxcIlxcbiAgMjU6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9LY29uZmlnXFxcIlxcbiAgMjY6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9LY29uZmlnXFxcIlxcbiAgMjc6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL0tjb25maWdcXFwiXFxuICAyODpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL0tjb25maWdcXFwiXFxuICAyOTpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC9LY29uZmlnXFxcIlxcbiAgMzA6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tb3JzZW1pY3JvL0tjb25maWdcXFwiXFxuICAzMTpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9LY29uZmlnXFxcIlxcbiAgMzI6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9wdXJlbGlmaS9LY29uZmlnXFxcIlxcbiAgMzM6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvS2NvbmZpZ1xcXCJcXG4gIDM0OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9LY29uZmlnXFxcIlxcbiAgMzU6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvS2NvbmZpZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDc6MjE6NDQuMzA0OTI0MjE2WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjU4MDc5NTUwMDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIFByaXNtNTQgRHJpdmVyIFBhdGNoKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSd2ZSBpZGVudGlmaWVkIHRoZSBrZXkgY29uZmlndXJhdGlvbnM6IGBQNTRfQ09NTU9OYCwgYFA1NF9VU0JgLCBgUDU0X1BDSWAsIGBQNTRfU1BJYCwgYE1BQzgwMjExYCwgYFdMQU5fVkVORE9SX0lOVEVSU0lMYCwgYFdMQU5gLCBhbmQgYFVTQmAuIFRoZXNlIGFyZSB0aGUgZm91bmRhdGlvbmFsIGJ1aWxkaW5nIGJsb2NrcyBmb3IgdW5kZXJzdGFuZGluZyB0aGUgZW52aXJvbm1lbnQgaW4gd2hpY2ggdGhpcyBjaGFuZ2Ugb3BlcmF0ZXMuXG5cbk15IHByaW1hcnkgZm9jdXMgaXMgdGhlIG1vZGlmaWVkIGZ1bmN0aW9uLCBgcDU0X2ZpbmRfaWVgLiBJdCdzIG5vbi1zdGF0aWMsIHdoaWNoIG1lYW5zIGl0J3MgYWNjZXNzaWJsZSBmcm9tIG90aGVyIHBhcnRzIG9mIHRoZSBkcml2ZXIuIEkndmUgcGlucG9pbnRlZCBpdHMgZGlyZWN0IGNhbGxlcnMgYW5kIHJlbGF0ZWQgZW50cnkgcG9pbnRzOiBgcDU0X2JlYWNvbl9mb3JtYXRfaWVfdGltYCwgYHA1NF9wc3BvbGxfd29ya2Fyb3VuZGAsIGFuZCBgcDU0X2JlYWNvbl91cGRhdGVgLiBEaWdnaW5nIGRlZXBlciwgSSBjb25maXJtZWQgd2hpY2ggb2YgdGhvc2UgYXJlIHN0YXRpYyBhbmQgd2hlcmUgdGhleSdyZSBsb2NhdGVkLiBgcDU0X2JlYWNvbl9mb3JtYXRfaWVfdGltYCwgYHA1NF9iZWFjb25fdXBkYXRlYCwgYW5kIGBwNTRfYnNzX2luZm9fY2hhbmdlZGAgYXJlIGFsbCBzdGF0aWMgYW5kIGluIGBtYWluLmNgLCB3aGlsZSBgcDU0X3BzcG9sbF93b3JrYXJvdW5kYCBpcyBzdGF0aWMgYW5kIGluIGB0eHJ4LmNgLiBJJ3ZlIGFsc28gbm90ZWQgdGhhdCBgcDU0X3J4X2RhdGFgIGlzIHN0YXRpYyBpbiBgdHhyeC5jYCwgYW5kIHRoYXQgYHA1NF9yeGAgaXMgYW4gZXhwb3J0ZWQgc3ltYm9sIGluIGB0eHJ4LmNgLlxuXG5JIG5lZWQgdG8gY29uZmlybSB0aGF0IG15IHByaW1hcnkgZm9jdXMgcmVtYWlucyBgcDU0X2ZpbmRfaWVgLiBBbHNvLCBJJ3ZlIGNvbmZpcm1lZCB0aGF0IGBwNTRfYmVhY29uX2Zvcm1hdF9pZV90aW1gIGFuZCBgcDU0X3BzcG9sbF93b3JrYXJvdW5kYCAqZGlyZWN0bHkqIGNhbGwgYHA1NF9maW5kX2llYC5cblxuTm93LCB0aGUgY3J1Y2lhbCBwYXJ0OiBhc3Nlc3NpbmcgdGhlIGZ1enphYmlsaXR5LiBUaGUgcGF0Y2ggYWx0ZXJzIGBwNTRfZmluZF9pZWAgYnkgcmVtb3ZpbmcgYW4gaW5pdGlhbCBmcmFtZSBsZW5ndGggY2hlY2sgKmJlZm9yZSogcGFyc2luZyBJRXMuIFRoaXMgaXMgYSByZWQgZmxhZy4gVGhlIHJlYXNvbmluZyBpcyBjbGVhcjogV2l0aG91dCB0aGF0IGNoZWNrLCBtYWxmb3JtZWQgb3Igc2hvcnQgcGFja2V0cyBjb3VsZCBsZWFkIHRvIG91dC1vZi1ib3VuZHMgcmVhZHMgb3IgaW52YWxpZCBwb2ludGVyIGFyaXRobWV0aWMuIFdlJ3JlIHRhbGtpbmcgYWJvdXQgYSB3aXJlbGVzcyBkcml2ZXIsIGFuZCBzcGVjaWZpY2FsbHkgUHJpc201NCwgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSB2aXJ0dWFsaXplZC9lbXVsYXRlZCBVU0IgZGV2aWNlcyBhbmQgTUFDODAyMTEgYmVhY29uL2RhdGEgZnJhbWUgcHJvY2Vzc2luZy4gVGhpcyBpcyBwcmltZSBmdXp6aW5nIHRlcnJpdG9yeS5cblxuVGhlcmVmb3JlLCB0aGlzIGNoYW5nZSBpcyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcgYW5kIHdpbGwgZ2l2ZSB0aGUgZm9sbG93aW5nIGFzIHRoZSBvdXRwdXQgZnJvbSBzZXQtcmVzdWx0cy5cbi0gV29ydGhGdXp6aW5nOiB0cnVlXG4tIFJlYXNvbmluZzogQ29uY2lzZSBleHBsYW5hdGlvbiBvZiB3aHkgaXQncyB3b3J0aCBmdXp6aW5nOiBUaGUgcGF0Y2ggbW9kaWZpZXMgYHA1NF9maW5kX2llKClgIGluIHRoZSBQcmlzbTU0IHdpcmVsZXNzIGRyaXZlciBieSByZW1vdmluZyBhbiBpbml0aWFsIGZyYW1lIGxlbmd0aCBjaGVjayBwcmlvciB0byBwYXJzaW5nIGluZm9ybWF0aW9uIGVsZW1lbnRzIChJRXMpLiBUaGUgZHJpdmVyIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSB2aXJ0dWFsaXplZC9lbXVsYXRlZCBVU0IgZGV2aWNlcyAoYHA1NHVzYmApIGFuZCBtYWM4MDIxMSBiZWFjb24vZGF0YSBmcmFtZSBwcm9jZXNzaW5nLCB3YXJyYW50aW5nIGZ1enppbmcgdG8gZW5zdXJlIG1hbGZvcm1lZCBvciBzaG9ydCBwYWNrZXRzIGNhbm5vdCB0cmlnZ2VyIG91dC1vZi1ib3VuZHMgcmVhZHMgb3IgaW52YWxpZCBwb2ludGVyIGFyaXRobWV0aWMuXG4tIEZvY3VzU3ltYm9sczogYFtcInA1NF9maW5kX2llXCIsIFwicDU0X2JlYWNvbl9mb3JtYXRfaWVfdGltXCIsIFwicDU0X3BzcG9sbF93b3JrYXJvdW5kXCJdYFxuLSBFbmFibGVDb25maWdzOiBgW1wiUDU0X0NPTU1PTlwiLCBcIlA1NF9VU0JcIiwgXCJNQUM4MDIxMVwiLCBcIldMQU5fVkVORE9SX0lOVEVSU0lMXCJdYFxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzA2MSwiT3V0cHV0VG9rZW5zIjoxNzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NzksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwNzoyMTo1MC4xMTI4ODE0NDRaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTU2NTA5MjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlA1NF9DT01NT05cIixcbiAgICBcIlA1NF9VU0JcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJXTEFOX1ZFTkRPUl9JTlRFUlNJTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInA1NF9maW5kX2llXCIsXG4gICAgXCJwNTRfYmVhY29uX2Zvcm1hdF9pZV90aW1cIixcbiAgICBcInA1NF9wc3BvbGxfd29ya2Fyb3VuZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBmcmFtZSB2YWxpZGF0aW9uIGxvZ2ljIGluIHA1NF9maW5kX2llKCkgYnkgcmVtb3ZpbmcgYSBsZW5ndGggY2hlY2sgcHJpb3IgdG8gcGFyc2luZyBpbmZvcm1hdGlvbiBlbGVtZW50cy4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgZW11bGF0ZWQgVVNCIGRldmljZXMgKHA1NHVzYikgYW5kIG1hYzgwMjExIGJlYWNvbi9mcmFtZSBoYW5kbGluZy4gRnV6emluZyBpcyB3YXJyYW50ZWQgdG8gY2hlY2sgZm9yIG91dC1vZi1ib3VuZHMgcmVhZHMgb3IgcmVncmVzc2lvbnMgd2l0aCB0cnVuY2F0ZWQgcGFja2V0cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJQNTRfQ09NTU9OXCIsXG4gICAgXCJQNTRfVVNCXCIsXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiV0xBTl9WRU5ET1JfSU5URVJTSUxcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwNTRfZmluZF9pZVwiLFxuICAgIFwicDU0X2JlYWNvbl9mb3JtYXRfaWVfdGltXCIsXG4gICAgXCJwNTRfcHNwb2xsX3dvcmthcm91bmRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgZnJhbWUgdmFsaWRhdGlvbiBsb2dpYyBpbiBwNTRfZmluZF9pZSgpIGJ5IHJlbW92aW5nIGEgbGVuZ3RoIGNoZWNrIHByaW9yIHRvIHBhcnNpbmcgaW5mb3JtYXRpb24gZWxlbWVudHMuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgdmlhIGVtdWxhdGVkIFVTQiBkZXZpY2VzIChwNTR1c2IpIGFuZCBtYWM4MDIxMSBiZWFjb24vZnJhbWUgaGFuZGxpbmcuIEZ1enppbmcgaXMgd2FycmFudGVkIHRvIGNoZWNrIGZvciBvdXQtb2YtYm91bmRzIHJlYWRzIG9yIHJlZ3Jlc3Npb25zIHdpdGggdHJ1bmNhdGVkIHBhY2tldHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA3OjIxOjUwLjIyODUzOTMxOFoiLCJTZXEiOjMxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzgzOTczNTc2ODYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwNzoyMTo1MC4yMjkwOTc5NTlaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjozODM5Njc5NTM0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVtb3ZlcyBhbiBlcnJvbmVvdXMgY2hlY2sgYGlmIChza2ItXFx1MDAzZWxlbiBcXHUwMDNjPSBzaXplb2YobWdtdCkpYCBpbiBgcDU0X2ZpbmRfaWUoKWAgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmNgLlxcblxcbktBU0FOIHZzLiBLTVNBTiBhbmFseXNpczpcXG4xLiBLTVNBTiBhcHBsaWNhYmlsaXR5OiBLTVNBTiBkZXRlY3RzIHVzZSBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSAoc3RhY2svaGVhcC9wYWdlKSBhbmQga2VybmVsLXRvLXVzZXIgaW5mby1sZWFrcy4gVGhpcyBwYXRjaCBkb2VzIG5vdCBhbGxvY2F0ZSBuZXcgdW5pbml0aWFsaXplZCBidWZmZXJzLCBkb2VzIG5vdCBpbnRyb2R1Y2UgdW5pbml0aWFsaXplZCBzdGFjayBvciBoZWFwIHZhcmlhYmxlcywgZG9lcyBub3QgY29weSBrZXJuZWwgZGF0YSB0byB1c2VyIHNwYWNlLCBhbmQgZG9lcyBub3QgYWx0ZXIgbG9naWMgdG8gYnJhbmNoIG9uIHVuaW5pdGlhbGl6ZWQgdmFsdWVzLiBUaGUgc2tiIGJ1ZmZlciBjb250YWlucyByZWNlaXZlZC9jb25zdHJ1Y3RlZCBmcmFtZSBkYXRhLlxcbjIuIEtBU0FOIGFwcGxpY2FiaWxpdHk6IEFueSBwb3RlbnRpYWwgbWVtb3J5IHNhZmV0eSBpc3N1ZSBjYXVzZWQgYnkgcmVtb3ZpbmcgdGhlIGNoZWNrIChlLmcuLCBpZiBhIG1hbGZvcm1lZCBza2Igd2l0aCBhIGxlbmd0aCBzbWFsbGVyIHRoYW4gdGhlIGJlYWNvbiBoZWFkZXIgd2VyZSBwYXJzZWQgYW5kIGxlZCB0byBhbiBvdXQtb2YtYm91bmRzIHJlYWQpIHdvdWxkIHJlcHJlc2VudCBhbiBvdXQtb2YtYm91bmRzIGJ1ZmZlciBhY2Nlc3MsIHdoaWNoIGlzIHRyYWNrZWQgYW5kIGRldGVjdGVkIGJ5IEtBU0FOLlxcblxcblRoZXJlZm9yZSwgdGhpcyBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcywgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDI5M2M4ZTlkYTdiNDY4NWM0ZWQ3Mzk3ZDFiMGVhMDExODI0ODczMjZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIFNlcCA3IDA3OjIwOjM3IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmNcbmluZGV4IDU3YTYyMTA4Y2JjMzUuLjhmOTIxZGM0ZWNkMzYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jXG5AQCAtNzYsOSArNzYsNiBAQCB1OCAqcDU0X2ZpbmRfaWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTggaWUpXG4gXHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQgPSAodm9pZCAqKXNrYi1cdTAwM2VkYXRhO1xuIFx0dTggKnBvcywgKmVuZDtcbiBcbi1cdGlmIChza2ItXHUwMDNlbGVuIFx1MDAzYz0gc2l6ZW9mKG1nbXQpKVxuLVx0XHRyZXR1cm4gTlVMTDtcbi1cbiBcdHBvcyA9ICh1OCAqKW1nbXQtXHUwMDNldS5iZWFjb24udmFyaWFibGU7XG4gXHRlbmQgPSBza2ItXHUwMDNlZGF0YSArIHNrYi1cdTAwM2VsZW47XG4gXHR3aGlsZSAocG9zIFx1MDAzYyBlbmQpIHtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA3OjIxOjUwLjIyOTEwMDA4OVoiLCJTZXEiOjMzLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxNDI3NDg2ODkxMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBMaW51eCBLZXJuZWwgUGF0Y2ggZm9yIEtNU0FOIFRlc3RpbmcqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBzYWZldHkgY2hlY2s6IHRoaXMgaXMgYSBRQS90cmlhZ2UgdGFzaywgZm9jdXNlZCBvbiBhIHBhdGNoIGZvciBhIExpbnV4IGtlcm5lbCBkcml2ZXIuIE5vIGV4cGxvaXQgZ2VuZXJhdGlvbiBvciBtYWx3YXJlIGNvbmNlcm5zLCBzbyB3ZSdyZSBnb29kIHRvIHByb2NlZWQuIFRoZSBzcGVjaWZpYyByZXF1ZXN0IGlzIHRvIGRldGVybWluZSBpZiB0aGUgcGF0Y2ggdG8gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmNgIG5lY2Vzc2l0YXRlcyBLTVNBTiB0ZXN0aW5nLlxuXG5Ob3csIGxldCdzIGV4YW1pbmUgdGhlIHBhdGNoIGl0c2VsZi4gSXQgbG9va3MgbGlrZSBpdCdzIHJlbW92aW5nIGEgc2l6ZSBjaGVjayB3aXRoaW4gdGhlIGBwNTRfZmluZF9pZWAgZnVuY3Rpb24uIFNwZWNpZmljYWxseSwgdGhlIGRpZmYgcmVtb3ZlcyBhIGNoZWNrIGBpZiAoc2tiLVx1MDAzZWxlbiBcdTAwM2M9IHNpemVvZihtZ210KSkgcmV0dXJuIE5VTEw7YC4gVGhpcyBmdW5jdGlvbiBpcyBsaWtlbHkgdXNlZCB0byBwYXJzZSBJbmZvcm1hdGlvbiBFbGVtZW50cyBmcm9tIGEgd2lyZWxlc3MgZnJhbWUsIHNwZWNpZmljYWxseSB3aXRoaW4gYmVhY29uIG9yIHByb2JlIHJlc3BvbnNlIGZyYW1lcy4gUmVtb3ZpbmcgdGhpcyBjaGVjayBjb3VsZCBpbnRyb2R1Y2UgdnVsbmVyYWJpbGl0aWVzIGlmIGBza2ItXHUwMDNlbGVuYCBpcyBzbWFsbGVyIHRoYW4gZXhwZWN0ZWQsIHBvdGVudGlhbGx5IGxlYWRpbmcgdG8gb3V0LW9mLWJvdW5kcyByZWFkcy4gVGhlIHJlbW92ZWQgY2hlY2sgcHJldmVudGVkIGFjY2VzcyB0byB0aGUgYHZhcmlhYmxlYCBmaWVsZCBvZiB0aGUgYGllZWU4MDIxMV9tZ210YCBzdHJ1Y3Qgd2hlbiB0aGUgZnJhbWUgbGVuZ3RoIHdhcyB0b28gc21hbGwuXG5cbkdpdmVuIHRoaXMgY29udGV4dCwgcmVtb3ZpbmcgdGhlIHNpemUgY2hlY2sgaW4gYHA1NF9maW5kX2llYCBpcyBhIHBvdGVudGlhbCByZWQgZmxhZy4gTXkgaW50dWl0aW9uIGlzIHRoYXQgdGhpcyAqbWlnaHQqIGJlIHJpc2t5LCBidXQgSSBuZWVkIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgdG8gbWFrZSBhbiBpbmZvcm1lZCBkZWNpc2lvbi4gSSdtIGdvaW5nIHRvIHVzZSBgcmVhZC1maWxlYCB0byBnZXQgdGhlIGNvbnRleHQgb2YgdGhlIGNvZGUgYXJvdW5kIGxpbmUgNzYgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmNgLiBUaGlzIHdpbGwgZ2l2ZSBtZSB0aGUgZnVsbCBwaWN0dXJlIG9mIGhvdyBgcDU0X2ZpbmRfaWVgIGlzIHVzZWQgYW5kIHdoZXJlIGl0J3MgY2FsbGVkLiBCYXNlZCBvbiB0aGlzIGluZm9ybWF0aW9uLCBJIHdpbGwgZGVjaWRlIHdoZXRoZXIgYE5lZWRzS01TQU49dHJ1ZWAgb3IgYGZhbHNlYC4gTXkgaW5pdGlhbCBsZWFuaW5nIGlzIHRvd2FyZHMgYE5lZWRzS01TQU49dHJ1ZWAgYmVjYXVzZSBvZiB0aGUgcG90ZW50aWFsIGZvciBvdXQtb2YtYm91bmRzIHJlYWRzLCBidXQgSSBuZWVkIG1vcmUgaW5mb3JtYXRpb24gdG8gYmUgc3VyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjEyMywiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4OCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA3OjIyOjA0LjUwMzk3MjA2MloiLCJTZXEiOjM0LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDIwMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uY1wiLFxuICBcIkZpcnN0TGluZVwiOiA2NSxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA2NTpcXHRcXG4gIDY2OlxcdHN0YXRpYyBpbnQgcDU0X3NldF90aW0oc3RydWN0IGllZWU4MDIxMV9odyAqZGV2LCBzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLFxcbiAgNjc6XFx0XFx0XFx0XFx0Ym9vbCBzZXQpXFxuICA2ODpcXHR7XFxuICA2OTpcXHRcXHRzdHJ1Y3QgcDU0X2NvbW1vbiAqcHJpdiA9IGRldi1cXHUwMDNlcHJpdjtcXG4gIDcwOlxcdFxcbiAgNzE6XFx0XFx0cmV0dXJuIHA1NF91cGRhdGVfYmVhY29uX3RpbShwcml2LCBzdGEtXFx1MDAzZWFpZCwgc2V0KTtcXG4gIDcyOlxcdH1cXG4gIDczOlxcdFxcbiAgNzQ6XFx0dTggKnA1NF9maW5kX2llKHN0cnVjdCBza19idWZmICpza2IsIHU4IGllKVxcbiAgNzU6XFx0e1xcbiAgNzY6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210ID0gKHZvaWQgKilza2ItXFx1MDAzZWRhdGE7XFxuICA3NzpcXHRcXHR1OCAqcG9zLCAqZW5kO1xcbiAgNzg6XFx0XFxuICA3OTpcXHRcXHRwb3MgPSAodTggKiltZ210LVxcdTAwM2V1LmJlYWNvbi52YXJpYWJsZTtcXG4gIDgwOlxcdFxcdGVuZCA9IHNrYi1cXHUwMDNlZGF0YSArIHNrYi1cXHUwMDNlbGVuO1xcbiAgODE6XFx0XFx0d2hpbGUgKHBvcyBcXHUwMDNjIGVuZCkge1xcbiAgODI6XFx0XFx0XFx0aWYgKHBvcyArIDIgKyBwb3NbMV0gXFx1MDAzZSBlbmQpXFxuICA4MzpcXHRcXHRcXHRcXHRyZXR1cm4gTlVMTDtcXG4gIDg0OlxcdFxcbiAgODU6XFx0XFx0XFx0aWYgKHBvc1swXSA9PSBpZSlcXG4gIDg2OlxcdFxcdFxcdFxcdHJldHVybiBwb3M7XFxuICA4NzpcXHRcXG4gIDg4OlxcdFxcdFxcdHBvcyArPSAyICsgcG9zWzFdO1xcbiAgODk6XFx0XFx0fVxcbiAgOTA6XFx0XFx0cmV0dXJuIE5VTEw7XFxuICA5MTpcXHR9XFxuICA5MjpcXHRcXG4gIDkzOlxcdHN0YXRpYyBpbnQgcDU0X2JlYWNvbl9mb3JtYXRfaWVfdGltKHN0cnVjdCBza19idWZmICpza2IpXFxuICA5NDpcXHR7XFxuICA5NTpcXHRcXHQvKlxcbiAgOTY6XFx0XFx0ICogdGhlIGdvb2QgZXhjdXNlIGZvciB0aGlzIG1lc3MgaXMgLi4uIHRoZSBmaXJtd2FyZS5cXG4gIDk3OlxcdFxcdCAqIFRoZSBkdW1teSBUSU0gTVVTVCBiZSBhdCB0aGUgZW5kIG9mIHRoZSBiZWFjb24gZnJhbWUsXFxuICA5ODpcXHRcXHQgKiBiZWNhdXNlIGl0J2xsIGJlIG92ZXJ3cml0dGVuIVxcbiAgOTk6XFx0XFx0ICovXFxuIDEwMDpcXHRcXHR1OCAqdGltO1xcbiAxMDE6XFx0XFx0dTggZHRpbV9sZW47XFxuIDEwMjpcXHRcXHR1OCBkdGltX3BlcmlvZDtcXG4gMTAzOlxcdFxcdHU4ICpuZXh0O1xcbiAxMDQ6XFx0XFxuIDEwNTpcXHRcXHR0aW0gPSBwNTRfZmluZF9pZShza2IsIFdMQU5fRUlEX1RJTSk7XFxuIDEwNjpcXHRcXHRpZiAoIXRpbSlcXG4gMTA3OlxcdFxcdFxcdHJldHVybiAwO1xcbiAxMDg6XFx0XFxuIDEwOTpcXHRcXHRkdGltX2xlbiA9IHRpbVsxXTtcXG4gMTEwOlxcdFxcdGR0aW1fcGVyaW9kID0gdGltWzNdO1xcbiAxMTE6XFx0XFx0bmV4dCA9IHRpbSArIDIgKyBkdGltX2xlbjtcXG4gMTEyOlxcdFxcbiAxMTM6XFx0XFx0aWYgKGR0aW1fbGVuIFxcdTAwM2MgMylcXG4gMTE0OlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwNzoyMjowNC41MDQwNzU5MDJaIiwiU2VxIjozNSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzA5ODE2NTMyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBOZXR3b3JrIFBhY2tldCBCdWcqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFRoYXQgYGlmYCBzdGF0ZW1lbnTigKYgd2hhdCB3YXMgdGhlIGludGVudGlvbiB0aGVyZT8gQWgsIHJpZ2h0LCBpdCB3YXMgc3VwcG9zZWQgdG8gYmUgYSBjaGVjayBvbiB0aGUgcGFja2V0J3Mgc2l6ZSwgc3BlY2lmaWNhbGx5IGNvbXBhcmluZyBgc2tiLVx1MDAzZWxlbmAgdG8gc29tZXRoaW5nLiBCdXQgd2FpdCBhIG1pbnV0ZeKApiBgc2l6ZW9mKG1nbXQpYD8gVGhhdCdz4oCmIGEgcG9pbnRlciBzaXplISBUaGF0J3MgYSBjbGFzc2ljIGJ1Zy4gSSByZW1lbWJlciBzZWVpbmcgdGhhdCBraW5kIG9mIG1pc3Rha2UgYmVmb3JlLiBUaGUgcHJvZ3JhbW1lciAqcHJvYmFibHkqIGludGVuZGVkIHRvIHVzZSBgc2l6ZW9mKCptZ210KWAgdG8gZ2V0IHRoZSBzaXplIG9mIHRoZSBzdHJ1Y3R1cmUgdGhlIHBvaW50ZXIgcG9pbnRzIHRvLCBvciBtYXliZSBldmVuIGBvZmZzZXRvZiguLi4pYCB0byBjYWxjdWxhdGUgdGhlIG9mZnNldCB0byB0aGUgc3BlY2lmaWMgZmllbGQsIGJ1dCBpdCdzIHVzaW5nIHRoZSBzaXplIG9mIHRoZSBwb2ludGVyIGl0c2VsZiEgU28sIHJlbW92aW5nIHRoZSBlbnRpcmUgYGlmYCBzdGF0ZW1lbnQgaGFzIGltcGxpY2F0aW9ucy4gSXQgZ29lcyBzdHJhaWdodCB0byB0aGlzIGxpbmU6XG5cbmBwb3MgPSAodTggKiltZ210LVx1MDAzZXUuYmVhY29uLnZhcmlhYmxlO2BcblxuTm93IHRoYXQgdGhlIGNoZWNrIGlzIGdvbmUsIHRoZSBjcml0aWNhbCB0aGluZyBpcyB0aGF0IHRoZXJlJ3Mgbm8gc2FmZWd1YXJkIG9mIHBhY2tldCBzaXplLlxuXG5XaGF0J3MgdGhlIG9mZnNldCBvZiBgbWdtdC1cdTAwM2V1LmJlYWNvbi52YXJpYWJsZWA/IEkgbmVlZCB0byBjaGVjayB0aGUgYHN0cnVjdCBpZWVlODAyMTFfbWdtdGAgZGVmaW5pdGlvbi4gSXQncyB0aW1lIHRvIGRpZyBpbnRvIHRoZSBzdHJ1Y3R1cmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBtZWFucywgd2hhdCB0aGUgb2Zmc2V0IGlzIGFuZCB3aGV0aGVyIHJlbW92aW5nIHRoZSBjaGVjayBpcyBzYWZlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjQ4LCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDc6MjI6MDcuNjAyMjQ1NTAzWiIsIlNlcSI6MzYsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjI2MzY1NjU1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0cnVjdCBpZWVlODAyMTFfbWdtdFxcXFxiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTg0MCBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYz0xNTg5PXN0YXRpYyBpbnQgYXRoMTBrX21hY19zZXR1cF9iY25fcDJwX2llKHN0cnVjdCBhdGgxMGtfdmlmICphcnZpZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtMTU5Mi1cXHRzdHJ1Y3QgYXRoMTBrICphciA9IGFydmlmLVxcdTAwM2VhcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jOjE1OTM6XFx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtMTU5NC1cXHRjb25zdCB1OCAqcDJwX2llO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYz0xNjQ4PXN0YXRpYyBpbnQgYXRoMTBrX21hY19zZXR1cF9iY25fdG1wbChzdHJ1Y3QgYXRoMTBrX3ZpZiAqYXJ2aWYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTE2ODEtXFx0YXRoMTBrX21hY19yZW1vdmVfdmVuZG9yX2llKGJjbiwgV0xBTl9PVUlfV0ZBLCBXTEFOX09VSV9UWVBFX1dGQV9QMlAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYzoxNjgyOlxcdFxcdFxcdFxcdCAgICBvZmZzZXRvZihzdHJ1Y3QgaWVlZTgwMjExX21nbXQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy0xNjgzLVxcdFxcdFxcdFxcdFxcdCAgICAgdS5iZWFjb24udmFyaWFibGUpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM9MjA5NT1zdGF0aWMgdm9pZCBhdGgxMGtfbWFjX2hhbmRsZV9iZWFjb25faXRlcih2b2lkICpkYXRhLCB1OCAqbWFjLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy0yMDk4LVxcdHN0cnVjdCBza19idWZmICpza2IgPSBkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM6MjA5OTpcXHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQgPSAodm9pZCAqKXNrYi1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTIxMDAtXFx0c3RydWN0IGF0aDEwa192aWYgKmFydmlmID0gKHZvaWQgKil2aWYtXFx1MDAzZWRydl9wcml2O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYz0xMzczPXN0YXRpYyBib29sIGF0aDExa19tYWNfc2V0X25vbnR4X3ZpZl9wYXJhbXMoc3RydWN0IGF0aDExa192aWYgKnR4X2FydmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYy0xMzc2LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jOjEzNzc6XFx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMtMTM3OC1cXHRjb25zdCB1OCAqaWVzLCAqcHJvZmlsZSwgKm5leHRfcHJvZmlsZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMtMTM4MS1cXHRpZXMgPSBiY24tXFx1MDAzZWRhdGEgKyBpZWVlODAyMTFfZ2V0X2hkcmxlbl9mcm9tX3NrYihiY24pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmM6MTM4MjpcXHRtZ210ID0gKHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKWJjbi1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jLTEzODMtXFx0aWVzICs9IHNpemVvZihtZ210LVxcdTAwM2V1LmJlYWNvbik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jPTE0MjY9c3RhdGljIGludCBhdGgxMWtfbWFjX3NldHVwX2Jjbl9wMnBfaWUoc3RydWN0IGF0aDExa192aWYgKmFydmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYy0xNDI5LVxcdHN0cnVjdCBhdGgxMWsgKmFyID0gYXJ2aWYtXFx1MDAzZWFyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmM6MTQzMDpcXHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYy0xNDMxLVxcdGNvbnN0IHU4ICpwMnBfaWU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jPTE0ODE9c3RhdGljIGludCBhdGgxMWtfbWFjX3NldF92aWZfcGFyYW1zKHN0cnVjdCBhdGgxMWtfdmlmICphcnZpZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMtMTQ4NC1cXHRzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiID0gYXJ2aWYtXFx1MDAzZWFyLVxcdTAwM2VhYjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jOjE0ODU6XFx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMtMTQ4Ni1cXHRpbnQgcmV0ID0gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMtMTQ4OS1cXHRpZXMgPSBiY24tXFx1MDAzZWRhdGEgKyBpZWVlODAyMTFfZ2V0X2hkcmxlbl9mcm9tX3NrYihiY24pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmM6MTQ5MDpcXHRtZ210ID0gKHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKWJjbi1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jLTE0OTEtXFx0aWVzICs9IHNpemVvZihtZ210LVxcdTAwM2V1LmJlYWNvbik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jLTE1MjAtXFx0XFx0XFx0XFx0XFx0ICBXTEFOX09VSV9UWVBFX1dGQV9QMlAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYzoxNTIxOlxcdFxcdFxcdFxcdFxcdCAgb2Zmc2V0b2Yoc3RydWN0IGllZWU4MDIxMV9tZ210LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMtMTUyMi1cXHRcXHRcXHRcXHRcXHRcXHQgICB1LmJlYWNvbi52YXJpYWJsZSkpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYz0xNzQxPXN0YXRpYyB2b2lkIGF0aDExa19tYWNfaGFuZGxlX2JlYWNvbl9pdGVyKHZvaWQgKmRhdGEsIHU4ICptYWMsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jLTE3NDQtXFx0c3RydWN0IHNrX2J1ZmYgKnNrYiA9IGRhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYzoxNzQ1OlxcdHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdCA9ICh2b2lkICopc2tiLVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMtMTc0Ni1cXHRzdHJ1Y3QgYXRoMTFrX3ZpZiAqYXJ2aWYgPSBhdGgxMWtfdmlmX3RvX2FydmlmKHZpZik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jPTYyNjQ9c3RhdGljIGludCBhdGgxMWtfbWFjX21nbXRfYWN0aW9uX2ZyYW1lX2ZpbGxfZWxlbV9kYXRhKHN0cnVjdCBhdGgxMWtfdmlmICphcnZpZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMtNjI3Mi1cXHRzdHJ1Y3QgYXRoMTFrX3NrYl9jYiAqc2tiX2NiO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmM6NjI3MzpcXHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYy02Mjc0LVxcdHVuc2lnbmVkIGludCByZW1haW5pbmdfbGVuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYy02MjkyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmM6NjI5MzpcXHRtZ210ID0gKHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKWhkcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jLTYyOTQtXFx0YnVmID0gKHU4ICopXFx1MDAyNm1nbXQtXFx1MDAzZXUuYWN0aW9uO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9ody5oPTI0Mz1zdHJ1Y3QgYXRoMTJrX2h3X29wcyB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2h3LmgtMjUwLVxcdGJvb2wgKCppc19mcmFtZV9saW5rX2Fnbm9zdGljKShzdHJ1Y3QgYXRoMTJrX2xpbmtfdmlmICphcnZpZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2h3Lmg6MjUxOlxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvaHcuaC0yNTItXFx0dm9pZCAoKnNldF9yeF9saW5rX2lkKShzdHJ1Y3QgYXRoMTJrX2RwX3BlZXIgKmRwX3BlZXIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jPTE1ODY9c3RhdGljIGludCBhdGgxMmtfbWFjX3NldHVwX2Jjbl9wMnBfaWUoc3RydWN0IGF0aDEya19saW5rX3ZpZiAqYXJ2aWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jLTE1ODktXFx0c3RydWN0IGF0aDEyayAqYXIgPSBhcnZpZi1cXHUwMDNlYXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYzoxNTkwOlxcdHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jLTE1OTEtXFx0Y29uc3QgdTggKnAycF9pZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmM9MTY0Mz1zdGF0aWMgdm9pZCBhdGgxMmtfbWFjX3NldF9hcnZpZl9pZXMoc3RydWN0IGF0aDEya19saW5rX3ZpZiAqYXJ2aWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jLTE2NDcte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmM6MTY0ODpcXHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQgPSAoc3RydWN0IGllZWU4MDIxMV9tZ210ICopYmNuLVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtMTY0OS1cXHRjb25zdCBzdHJ1Y3QgZWxlbWVudCAqZWxlbSwgKm5vbnR4LCAqaW5kZXgsICpuaWUsICpleHRfY2FwX2llO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYz0xODA0PXN0YXRpYyBpbnQgYXRoMTJrX21hY19zZXR1cF9iY25fdG1wbChzdHJ1Y3QgYXRoMTJrX2xpbmtfdmlmICphcnZpZilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtMTg3MS1cXHRcXHRcXHRcXHRcXHRcXHQgIFdMQU5fT1VJX1RZUEVfV0ZBX1AyUCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jOjE4NzI6XFx0XFx0XFx0XFx0XFx0XFx0ICBvZmZzZXRvZihzdHJ1Y3QgaWVlZTgwMjExX21nbXQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYy0xODczLVxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgIHUuYmVhY29uLnZhcmlhYmxlKSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jPTE5NDQ9c3RhdGljIHZvaWQgYXRoMTJrX21hY19oYW5kbGVfYmVhY29uX2l0ZXIodm9pZCAqZGF0YSwgdTggKm1hYyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtMTk0Ny1cXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiID0gZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jOjE5NDg6XFx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210ID0gKHZvaWQgKilza2ItXFx1MDAzZWRhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYy0xOTQ5LVxcdHN0cnVjdCBhdGgxMmtfdmlmICphaHZpZiA9IGF0aDEya192aWZfdG9fYWh2aWYodmlmKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmM9OTI4Mz1zdGF0aWMgaW50IGF0aDEya19tYWNfbWdtdF9hY3Rpb25fZnJhbWVfZmlsbF9lbGVtX2RhdGEoc3RydWN0IGF0aDEya19saW5rX3ZpZiAqYXJ2aWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jLTkyOTQtXFx0c3RydWN0IGF0aDEya19za2JfY2IgKnNrYl9jYjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jOjkyOTU6XFx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtOTI5Ni1cXHR1bnNpZ25lZCBpbnQgcmVtYWluaW5nX2xlbjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtOTMxNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jOjkzMTU6XFx0bWdtdCA9IChzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKiloZHI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYy05MzE2LVxcdGJ1ZiA9ICh1OCAqKVxcdTAwMjZtZ210LVxcdTAwM2V1LmFjdGlvbjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuYz02Nj1hdGgxMmtfd2lmaTdfaXNfZnJhbWVfbGlua19hZ25vc3RpY19xY245Mjc0KHN0cnVjdCBhdGgxMmtfbGlua192aWYgKmFydmlmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuYzo2NzpcXHRcXHRcXHRcXHRcXHQgICAgc3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuYy02OC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmM9OTE9c3RhdGljIGJvb2wgYXRoMTJrX3dpZmk3X2RwX3NybmdfaXNfY29tcF9yaW5nX3djbjc4NTAoaW50IHJpbmdfbnVtKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jLTk4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuYzo5OTpzdGF0aWMgYm9vbCBhdGgxMmtfaXNfYWRkYmFfcmVzcF9hY3Rpb25fY29kZShzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jLTEwMC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmM9MTE0PWF0aDEya193aWZpN19pc19mcmFtZV9saW5rX2Fnbm9zdGljX3djbjc4NTAoc3RydWN0IGF0aDEya19saW5rX3ZpZiAqYXJ2aWYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jOjExNTpcXHRcXHRcXHRcXHRcXHQgICAgc3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuYy0xMTYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYz03ODA9aW50IGF0aDEya193bWlfbWdtdF9zZW5kKHN0cnVjdCBhdGgxMmtfbGlua192aWYgKmFydmlmLCB1MzIgYnVmX2lkLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYy03ODktXFx0aW50IGNtZF9sZW4gPSBzaXplb2Yoc3RydWN0IGF0aDEya193bWlfbWdtdF9zZW5kX3R4X3BhcmFtcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYzo3OTA6XFx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210ID0gKHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKWhkcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTc5MS1cXHRzdHJ1Y3QgYXRoMTJrX3dtaV9tbG9fbWdtdF9zZW5kX3BhcmFtcyAqbWxfcGFyYW1zO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDVrL2Jhc2UuYz0xMjg1PWF0aDVrX2NoZWNrX2lic3NfdHNmKHN0cnVjdCBhdGg1a19odyAqYWgsIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNWsvYmFzZS5jLTEyODktXFx0dTMyIGh3X3R1O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9iYXNlLmM6MTI5MDpcXHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQgPSAoc3RydWN0IGllZWU4MDIxMV9tZ210ICopc2tiLVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9iYXNlLmMtMTI5MS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYz0yNzcyPXN0YXRpYyBpbnQgYXRoNmtsX3N0YXJ0X2FwKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMjc3Ni1cXHRzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmID0gbmV0ZGV2X3ByaXYoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6Mjc3NzpcXHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTI3NzgtXFx0Ym9vbCBoaWRkZW4gPSBmYWxzZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yODEyLVxcdFxcdHJldHVybiAtRUlOVkFMO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzoyODEzOlxcdG1nbXQgPSAoc3RydWN0IGllZWU4MDIxMV9tZ210ICopIGluZm8tXFx1MDAzZWJlYWNvbi5oZWFkO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0yODE0LVxcdGllcyA9IG1nbXQtXFx1MDAzZXUuYmVhY29uLnZhcmlhYmxlO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jPTMwNjk9c3RhdGljIGludCBhdGg2a2xfc2VuZF9nb19wcm9iZV9yZXNwKHN0cnVjdCBhdGg2a2xfdmlmICp2aWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMzA3Ny1cXHRpbnQgcmV0O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzozMDc4OlxcdGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMzA3OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MzA4MDpcXHRtZ210ID0gKGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKSBidWY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTMwODEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM9MzEwNj1zdGF0aWMgYm9vbCBhdGg2a2xfbWdtdF9wb3dlcnNhdmVfYXAoc3RydWN0IGF0aDZrbF92aWYgKnZpZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0zMTE1LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MzExNjpcXHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTMxMTctXFx0c3RydWN0IGF0aDZrbF9zdGEgKmNvbm47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMzEyMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MzEyMzpcXHRtZ210ID0gKHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKSBidWY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTMxMjQtXFx0aWYgKGlzX211bHRpY2FzdF9ldGhlcl9hZGRyKG1nbXQtXFx1MDAzZWRhKSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYz0zMTc5PXN0YXRpYyBib29sIGF0aDZrbF9pc19wMnBfZ29fc3NpZChjb25zdCB1OCAqYnVmLCBzaXplX3QgbGVuKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0zMTgwLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmM6MzE4MTpcXHRjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjMxODI6XFx0bWdtdCA9IChjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKikgYnVmO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0zMTgzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jPTMxOTM9c3RhdGljIGludCBhdGg2a2xfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTMyMDMtXFx0dTMyIGlkLCBmcmVxO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYzozMjA0OlxcdGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMtMzIwNS1cXHRib29sIG1vcmVfZGF0YSwgcXVldWVkO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jLTMyMTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jOjMyMTg6XFx0bWdtdCA9IChjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKikgYnVmO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYy0zMjE5LVxcdGlmICh2aWYtXFx1MDAzZW53X3R5cGUgPT0gQVBfTkVUV09SSyBcXHUwMDI2XFx1MDAyNiB0ZXN0X2JpdChDT05ORUNURUQsIFxcdTAwMjZ2aWYtXFx1MDAzZWZsYWdzKSBcXHUwMDI2XFx1MDAyNlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9tYWluLmM9NDIzPXZvaWQgYXRoNmtsX2Nvbm5lY3RfYXBfbW9kZV9zdGEoc3RydWN0IGF0aDZrbF92aWYgKnZpZiwgdTE2IGFpZCwgdTggKm1hY19hZGRyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9tYWluLmMtNDM2LVxcdGlmIChhc3NvY19yZXFfbGVuIFxcdTAwM2Ugc2l6ZW9mKHN0cnVjdCBpZWVlODAyMTFfaGRyXzNhZGRyKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvbWFpbi5jOjQzNzpcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQgPVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvbWFpbi5jOjQzODpcXHRcXHRcXHQoc3RydWN0IGllZWU4MDIxMV9tZ210ICopIGFzc29jX2luZm87XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9tYWluLmMtNDM5LVxcdFxcdGlmIChpZWVlODAyMTFfaXNfYXNzb2NfcmVxKG1nbXQtXFx1MDAzZWZyYW1lX2NvbnRyb2wpIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYmVhY29uLmM9MTEyPXN0YXRpYyBzdHJ1Y3QgYXRoX2J1ZiAqYXRoOWtfYmVhY29uX2dlbmVyYXRlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2JlYWNvbi5jLTEyMS1cXHRzdHJ1Y3QgaWVlZTgwMjExX3R4X2luZm8gKmluZm87XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2JlYWNvbi5jOjEyMjpcXHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXRfaGRyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9iZWFjb24uYy0xMjMtXFx0aW50IGNhYnFfZGVwdGg7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYmVhY29uLmMtMTQzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9iZWFjb24uYzoxNDQ6XFx0bWdtdF9oZHIgPSAoc3RydWN0IGllZWU4MDIxMV9tZ210ICopc2tiLVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9iZWFjb24uYy0xNDUtXFx0bWdtdF9oZHItXFx1MDAzZXUuYmVhY29uLnRpbWVzdGFtcCA9IGF2cC1cXHUwMDNldHNmX2FkanVzdDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jPTE5MT1zdGF0aWMgdm9pZCBhdGg5a19odGNfc2VuZF9iZWFjb24oc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMTk5LVxcdHN0cnVjdCBpZWVlODAyMTFfdHhfaW5mbyAqaW5mbztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYzoyMDA6XFx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTIwMS1cXHRzdHJ1Y3Qgc2tfYnVmZiAqYmVhY29uO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMjI3LVxcdCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jOjIyODpcXHRtZ210ID0gKHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKWJlYWNvbi1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYy0yMjktXFx0bWdtdC1cXHUwMDNldS5iZWFjb24udGltZXN0YW1wID0gYXZwLVxcdTAwM2V0c2ZhZGp1c3Q7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9MjE0PXN0YXRpYyB2b2lkIGF0aDlrX2h0Y190eF9tZ210KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0yMTktXFx0c3RydWN0IGllZWU4MDIxMV90eF9pbmZvICp0eF9pbmZvID0gSUVFRTgwMjExX1NLQl9DQihza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzoyMjA6XFx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0yMjEtXFx0c3RydWN0IGllZWU4MDIxMV9oZHIgKmhkcjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0yMzYtXFx0aWYgKGF2cCBcXHUwMDI2XFx1MDAyNiB1bmxpa2VseShpZWVlODAyMTFfaXNfcHJvYmVfcmVzcChoZHItXFx1MDAzZWZyYW1lX2NvbnRyb2wpKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzoyMzc6XFx0XFx0bWdtdCA9IChzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKilza2ItXFx1MDAzZWRhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTIzOC1cXHRcXHRtZ210LVxcdTAwM2V1LnByb2JlX3Jlc3AudGltZXN0YW1wID0gYXZwLVxcdTAwM2V0c2ZhZGp1c3Q7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvcmVjdi5jPTUwMz1zdGF0aWMgYm9vbCBhdGhfYmVhY29uX2R0aW1fcGVuZGluZ19jYWIoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9yZWN2LmMtNTA1LVxcdC8qIENoZWNrIHdoZXRoZXIgdGhlIEJlYWNvbiBmcmFtZSBoYXMgRFRJTSBpbmRpY2F0aW5nIGJ1ZmZlcmVkIGJjL21jICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3JlY3YuYzo1MDY6XFx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9yZWN2LmMtNTA3LVxcdHU4ICpwb3MsICplbmQsIGlkLCBlbGVuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3JlY3YuYy01MDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3JlY3YuYzo1MTA6XFx0bWdtdCA9IChzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKilza2ItXFx1MDAzZWRhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3JlY3YuYy01MTEtXFx0cG9zID0gbWdtdC1cXHUwMDNldS5iZWFjb24udmFyaWFibGU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvcnguYz00OTM9c3RhdGljIHU4ICpjYXJsOTE3MF9maW5kX2llKHU4ICpkYXRhLCB1bnNpZ25lZCBpbnQgbGVuLCB1OCBpZSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvcnguYy00OTQte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9jYXJsOTE3MC9yeC5jOjQ5NTpcXHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQgPSAodm9pZCAqKWRhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL3J4LmMtNDk2LVxcdHU4ICpwb3MsICplbmQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC9jZmc4MDIxMS5jPTE4NjE9X3dpbF9jZmc4MDIxMV9nZXRfcHJvYmVyZXNwX2llcyhjb25zdCB1OCAqcHJvYmVyZXNwLCB1MTYgcHJvYmVyZXNwX2xlbixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL2NmZzgwMjExLmMtMTg2Ni1cXHRpZiAocHJvYmVyZXNwKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvY2ZnODAyMTEuYzoxODY3OlxcdFxcdHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqZiA9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvY2ZnODAyMTEuYzoxODY4OlxcdFxcdFxcdChzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKilwcm9iZXJlc3A7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvY2ZnODAyMTEuYzoxODY5OlxcdFxcdHNpemVfdCBobGVuID0gb2Zmc2V0b2Yoc3RydWN0IGllZWU4MDIxMV9tZ210LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL2NmZzgwMjExLmMtMTg3MC1cXHRcXHRcXHRcXHQgICAgICAgdS5wcm9iZV9yZXNwLnZhcmlhYmxlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3dtaS5jPTgxNT1zdGF0aWMgdm9pZCB3bWlfZXZ0X3J4X21nbXQoc3RydWN0IHdpbDYyMTBfdmlmICp2aWYsIGludCBpZCwgdm9pZCAqZCwgaW50IGxlbilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3dtaS5jLTgxOS1cXHRzdHJ1Y3Qgd2lwaHkgKndpcGh5ID0gd2lsX3RvX3dpcGh5KHdpbCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvd21pLmM6ODIwOlxcdHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqcnhfbWdtdF9mcmFtZSA9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvd21pLmM6ODIxOlxcdFxcdFxcdChzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKilkYXRhLVxcdTAwM2VwYXlsb2FkO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3dtaS5jLTgyMi1cXHRpbnQgZmxlbiA9IGxlbiAtIG9mZnNldG9mKHN0cnVjdCB3bWlfcnhfbWdtdF9wYWNrZXRfZXZlbnQsIHBheWxvYWQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvd21pLmMtODc5LVxcdFxcdGNvbnN0IHU4ICppZV9idWYgPSByeF9tZ210X2ZyYW1lLVxcdTAwM2V1LmJlYWNvbi52YXJpYWJsZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC93bWkuYzo4ODA6XFx0XFx0c2l6ZV90IGllX2xlbiA9IGRfbGVuIC0gb2Zmc2V0b2Yoc3RydWN0IGllZWU4MDIxMV9tZ210LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3dtaS5jLTg4MS1cXHRcXHRcXHRcXHRcXHRcXHQgdS5iZWFjb24udmFyaWFibGUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvd21pLmM9OTA4PXN0YXRpYyB2b2lkIHdtaV9ldnRfdHhfbWdtdChzdHJ1Y3Qgd2lsNjIxMF92aWYgKnZpZiwgaW50IGlkLCB2b2lkICpkLCBpbnQgbGVuKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvd21pLmMtOTEwLVxcdHN0cnVjdCB3bWlfdHhfbWdtdF9wYWNrZXRfZXZlbnQgKmRhdGEgPSBkO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3dtaS5jOjkxMTpcXHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXRfZnJhbWUgPVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3dtaS5jOjkxMjpcXHRcXHRcXHQoc3RydWN0IGllZWU4MDIxMV9tZ210ICopZGF0YS1cXHUwMDNlcGF5bG9hZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC93bWkuYy05MTMtXFx0aW50IGZsZW4gPSBsZW4gLSBvZmZzZXRvZihzdHJ1Y3Qgd21pX3R4X21nbXRfcGFja2V0X2V2ZW50LCBwYXlsb2FkKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3dtaS5jPTEzNzY9d21pX2V2dF9zY2hlZF9zY2FuX3Jlc3VsdChzdHJ1Y3Qgd2lsNjIxMF92aWYgKnZpZiwgaW50IGlkLCB2b2lkICpkLCBpbnQgbGVuKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvd21pLmMtMTM4MC1cXHRzdHJ1Y3Qgd2lwaHkgKndpcGh5ID0gd2lsX3RvX3dpcGh5KHdpbCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvd21pLmM6MTM4MTpcXHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKnJ4X21nbXRfZnJhbWUgPVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3dtaS5jOjEzODI6XFx0XFx0KHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKWRhdGEtXFx1MDAzZXBheWxvYWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvd21pLmMtMTM4My1cXHRpbnQgZmxlbiA9IGxlbiAtIG9mZnNldG9mKHN0cnVjdCB3bWlfc2NoZWRfc2Nhbl9yZXN1bHRfZXZlbnQsIHBheWxvYWQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvd21pLmM9MzYxNT1pbnQgd21pX21nbXRfdHgoc3RydWN0IHdpbDYyMTBfdmlmICp2aWYsIGNvbnN0IHU4ICpidWYsIHNpemVfdCBsZW4pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC93bWkuYy0zNjE4LVxcdHN0cnVjdCB3aWw2MjEwX3ByaXYgKndpbCA9IHZpZl90b193aWwodmlmKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC93bWkuYzozNjE5OlxcdHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdF9mcmFtZSA9ICh2b2lkICopYnVmO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3dtaS5jLTM2MjAtXFx0c3RydWN0IHdtaV9zd190eF9yZXFfY21kICpjbWQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC93bWkuYz0zNjYzPWludCB3bWlfbWdtdF90eF9leHQoc3RydWN0IHdpbDYyMTBfdmlmICp2aWYsIGNvbnN0IHU4ICpidWYsIHNpemVfdCBsZW4sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC93bWkuYy0zNjY3LVxcdHN0cnVjdCB3aWw2MjEwX3ByaXYgKndpbCA9IHZpZl90b193aWwodmlmKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC93bWkuYzozNjY4OlxcdHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdF9mcmFtZSA9ICh2b2lkICopYnVmO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3dtaS5jLTM2NjktXFx0c3RydWN0IHdtaV9zd190eF9yZXFfZXh0X2NtZCAqY21kO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRtZWwvYXQ3NmM1MHgtdXNiLmM9MTUwOD1zdGF0aWMgaW5saW5lIGludCBhdDc2X2d1ZXNzX2ZyZXEoc3RydWN0IGF0NzZfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0bWVsL2F0NzZjNTB4LXVzYi5jLTE1MjItXFx0aWYgKGllZWU4MDIxMV9pc19wcm9iZV9yZXNwKGhkci1cXHUwMDNlZnJhbWVfY29udHJvbCkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdG1lbC9hdDc2YzUweC11c2IuYzoxNTIzOlxcdFxcdGVsX29mZiA9IG9mZnNldG9mKHN0cnVjdCBpZWVlODAyMTFfbWdtdCwgdS5wcm9iZV9yZXNwLnZhcmlhYmxlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdG1lbC9hdDc2YzUweC11c2IuYy0xNTI0LVxcdH0gZWxzZSBpZiAoaWVlZTgwMjExX2lzX2JlYWNvbihoZHItXFx1MDAzZWZyYW1lX2NvbnRyb2wpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRtZWwvYXQ3NmM1MHgtdXNiLmM6MTUyNTpcXHRcXHRlbF9vZmYgPSBvZmZzZXRvZihzdHJ1Y3QgaWVlZTgwMjExX21nbXQsIHUuYmVhY29uLnZhcmlhYmxlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdG1lbC9hdDc2YzUweC11c2IuYy0xNTI2LVxcdH0gZWxzZSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdG1lbC9hdDc2YzUweC11c2IuYz0xNzU3PXN0YXRpYyB2b2lkIGF0NzZfbWFjODAyMTFfdHgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdG1lbC9hdDc2YzUweC11c2IuYy0xNzYzLVxcdHN0cnVjdCBpZWVlODAyMTFfdHhfaW5mbyAqaW5mbyA9IElFRUU4MDIxMV9TS0JfQ0Ioc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdG1lbC9hdDc2YzUweC11c2IuYzoxNzY0OlxcdHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdCA9IChzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKilza2ItXFx1MDAzZWRhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRtZWwvYXQ3NmM1MHgtdXNiLmMtMTc2NS1cXHRpbnQgcGFkZGluZywgc3VibWl0X2xlbiwgcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYjQzL21haW4uYz0xNjA2PXN0YXRpYyB2b2lkIGI0M193cml0ZV9iZWFjb25fdGVtcGxhdGUoc3RydWN0IGI0M193bGRldiAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYjQzL21haW4uYy0xNjEwLVxcdHVuc2lnbmVkIGludCBpLCBsZW4sIHZhcmlhYmxlX2xlbjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDMvbWFpbi5jOjE2MTE6XFx0Y29uc3Qgc3RydWN0IGllZWU4MDIxMV9tZ210ICpiY247XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYjQzL21haW4uYy0xNjEyLVxcdGNvbnN0IHU4ICppZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2I0My9tYWluLmMtMTYzMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDMvbWFpbi5jOjE2MzQ6XFx0YmNuID0gKGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKShiZWFjb25fc2tiLVxcdTAwM2VkYXRhKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDMvbWFpbi5jLTE2MzUtXFx0bGVuID0gbWluX3Qoc2l6ZV90LCBiZWFjb25fc2tiLVxcdTAwM2VsZW4sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDMvbWFpbi5jLTE2NTgtXFx0aWUgPSBiY24tXFx1MDAzZXUuYmVhY29uLnZhcmlhYmxlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2I0My9tYWluLmM6MTY1OTpcXHR2YXJpYWJsZV9sZW4gPSBsZW4gLSBvZmZzZXRvZihzdHJ1Y3QgaWVlZTgwMjExX21nbXQsIHUuYmVhY29uLnZhcmlhYmxlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDMvbWFpbi5jLTE2NjAtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHZhcmlhYmxlX2xlbiAtIDI7ICkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYjQzL21haW4uYy0xNjc4LVxcdFxcdFxcdHRpbV9wb3NpdGlvbiA9IHNpemVvZihzdHJ1Y3QgYjQzX3BsY3BfaGRyNik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYjQzL21haW4uYzoxNjc5OlxcdFxcdFxcdHRpbV9wb3NpdGlvbiArPSBvZmZzZXRvZihzdHJ1Y3QgaWVlZTgwMjExX21nbXQsIHUuYmVhY29uLnZhcmlhYmxlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDMvbWFpbi5jLTE2ODAtXFx0XFx0XFx0dGltX3Bvc2l0aW9uICs9IGk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDNsZWdhY3kvbWFpbi5jPTkzOD1zdGF0aWMgdm9pZCBiNDNsZWdhY3lfd3JpdGVfYmVhY29uX3RlbXBsYXRlKHN0cnVjdCBiNDNsZWdhY3lfd2xkZXYgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2I0M2xlZ2FjeS9tYWluLmMtOTQzLVxcdHVuc2lnbmVkIGludCBpLCBsZW4sIHZhcmlhYmxlX2xlbjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDNsZWdhY3kvbWFpbi5jOjk0NDpcXHRjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKmJjbjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDNsZWdhY3kvbWFpbi5jLTk0NS1cXHRjb25zdCB1OCAqaWU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDNsZWdhY3kvbWFpbi5jLTk1MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDNsZWdhY3kvbWFpbi5jOjk1MjpcXHRiY24gPSAoY29uc3Qgc3RydWN0IGllZWU4MDIxMV9tZ210ICopKGRldi1cXHUwMDNld2wtXFx1MDAzZWN1cnJlbnRfYmVhY29uLVxcdTAwM2VkYXRhKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDNsZWdhY3kvbWFpbi5jLTk1My1cXHRsZW4gPSBtaW5fdChzaXplX3QsIGRldi1cXHUwMDNld2wtXFx1MDAzZWN1cnJlbnRfYmVhY29uLVxcdTAwM2VsZW4sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDNsZWdhY3kvbWFpbi5jLTk3Ni1cXHRpZSA9IGJjbi1cXHUwMDNldS5iZWFjb24udmFyaWFibGU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYjQzbGVnYWN5L21haW4uYzo5Nzc6XFx0dmFyaWFibGVfbGVuID0gbGVuIC0gb2Zmc2V0b2Yoc3RydWN0IGllZWU4MDIxMV9tZ210LCB1LmJlYWNvbi52YXJpYWJsZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYjQzbGVnYWN5L21haW4uYy05NzgtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHZhcmlhYmxlX2xlbiAtIDI7ICkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYjQzbGVnYWN5L21haW4uYy05OTYtXFx0XFx0XFx0dGltX3Bvc2l0aW9uID0gc2l6ZW9mKHN0cnVjdCBiNDNsZWdhY3lfcGxjcF9oZHI2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDNsZWdhY3kvbWFpbi5jOjk5NzpcXHRcXHRcXHR0aW1fcG9zaXRpb24gKz0gb2Zmc2V0b2Yoc3RydWN0IGllZWU4MDIxMV9tZ210LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2I0M2xlZ2FjeS9tYWluLmMtOTk4LVxcdFxcdFxcdFxcdFxcdFxcdCB1LmJlYWNvbi52YXJpYWJsZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDNsZWdhY3kvbWFpbi5jPTEwNTA9c3RhdGljIGNvbnN0IHU4ICpiNDNsZWdhY3lfZ2VuZXJhdGVfcHJvYmVfcmVzcChzdHJ1Y3QgYjQzbGVnYWN5X3dsZGV2ICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDNsZWdhY3kvbWFpbi5jLTEwNjQtXFx0LyogR2V0IHRoZSBzdGFydCBvZmZzZXQgb2YgdGhlIHZhcmlhYmxlIElFcyBpbiB0aGUgcGFja2V0LiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2I0M2xlZ2FjeS9tYWluLmM6MTA2NTpcXHRpZV9zdGFydCA9IG9mZnNldG9mKHN0cnVjdCBpZWVlODAyMTFfbWdtdCwgdS5wcm9iZV9yZXNwLnZhcmlhYmxlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDNsZWdhY3kvbWFpbi5jOjEwNjY6XFx0QjQzbGVnYWN5X1dBUk5fT04oaWVfc3RhcnQgIT0gb2Zmc2V0b2Yoc3RydWN0IGllZWU4MDIxMV9tZ210LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2I0M2xlZ2FjeS9tYWluLmMtMTA2Ny1cXHRcXHRcXHRcXHRcXHQgICAgICAgdS5iZWFjb24udmFyaWFibGUpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jPTU1NTY9YnJjbWZfY2ZnODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNTU2My1cXHRzaXplX3QgbGVuID0gcGFyYW1zLVxcdTAwM2VsZW47XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM6NTU2NDpcXHRjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNTU2NS1cXHRzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfdmlmICp2aWY7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy01NTc1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jOjU1NzY6XFx0bWdtdCA9IChjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKilidWY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNTU3Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jPTEwMj1pbnQgYnJjbWZfY3l3X21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jLTEwOS1cXHRzaXplX3QgbGVuID0gcGFyYW1zLVxcdTAwM2VsZW47XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmM6MTEwOlxcdGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYy0xMTEtXFx0c3RydWN0IGJyY21mX2NmZzgwMjExX3ZpZiAqdmlmO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmMtMTIwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jOjEyMTpcXHRtZ210ID0gKGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKWJ1ZjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYy0xMjItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYz0yNzI9YnJjbWZfbm90aWZ5X2F1dGhfZnJhbWVfcngoc3RydWN0IGJyY21mX2lmICppZnAsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYy0yODEtXFx0c3RydWN0IGJyY211X2NoYW4gY2g7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmM6MjgyOlxcdHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdF9mcmFtZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYy0yODMtXFx0czMyIGZyZXE7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYy0yOTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmM6Mjk0OlxcdGlmIChtZ210X2ZyYW1lX2xlbiBcXHUwMDNjIG9mZnNldG9mKHN0cnVjdCBpZWVlODAyMTFfbWdtdCwgdSkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYy0yOTUtXFx0XFx0YnBoeV9lcnIoZHJ2ciwgXFxcIkV2ZW50ICVzICglZCkgZnJhbWUgdG9vIHNtYWxsLiBJZ25vcmVcXFxcblxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYy0zMTQtXFx0XFx0XFx0ICAgICAgIEVUSF9BTEVOKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYzozMTU6XFx0ZnJhbWUgKz0gb2Zmc2V0b2Yoc3RydWN0IGllZWU4MDIxMV9tZ210LCB1KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYy0zMTYtXFx0bWVtY3B5KFxcdTAwMjZtZ210X2ZyYW1lLVxcdTAwM2V1LCBmcmFtZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYzozMTc6XFx0ICAgICAgIG1nbXRfZnJhbWVfbGVuIC0gb2Zmc2V0b2Yoc3RydWN0IGllZWU4MDIxMV9tZ210LCB1KSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmMtMzE4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jPTE0MTQ9aW50IGJyY21mX3AycF9ub3RpZnlfYWN0aW9uX2ZyYW1lX3J4KHN0cnVjdCBicmNtZl9pZiAqaWZwLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jLTE0MjgtXFx0c3RydWN0IGJyY211X2NoYW4gY2g7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jOjE0Mjk6XFx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210X2ZyYW1lO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuYy0xNDMwLVxcdHMzMiBmcmVxO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jLTE0ODYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jOjE0ODc6XFx0bWdtdF9mcmFtZSA9IGt6YWxsb2Mob2Zmc2V0b2Yoc3RydWN0IGllZWU4MDIxMV9tZ210LCB1KSArXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jLTE0ODgtXFx0XFx0XFx0ICAgICBtZ210X2ZyYW1lX2xlbiwgR0ZQX0tFUk5FTCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmMtMTQ5OC1cXHRtZW1jcHkobWdtdF9mcmFtZS1cXHUwMDNldS5ib2R5LCBmcmFtZSwgbWdtdF9mcmFtZV9sZW4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuYzoxNDk5OlxcdG1nbXRfZnJhbWVfbGVuICs9IG9mZnNldG9mKHN0cnVjdCBpZWVlODAyMTFfbWdtdCwgdS5ib2R5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmMtMTUwMC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5LzM5NDUtbWFjLmM9MjQ1Nz1pbDM5NDVfcmVxdWVzdF9zY2FuKHN0cnVjdCBpbF9wcml2ICppbCwgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5LzM5NDUtbWFjLmMtMjU2OS1cXHRsZW4gPVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5LzM5NDUtbWFjLmM6MjU3MDpcXHQgICAgaWxfZmlsbF9wcm9iZV9yZXEoaWwsIChzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKilzY2FuLVxcdTAwM2VkYXRhLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5LzM5NDUtbWFjLmMtMjU3MS1cXHRcXHRcXHQgICAgICB2aWYtXFx1MDAzZWFkZHIsIGlsLVxcdTAwM2VzY2FuX3JlcXVlc3QtXFx1MDAzZWllLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvNDk2NS1tYWMuYz04NTA9aWw0OTY1X3JlcXVlc3Rfc2NhbihzdHJ1Y3QgaWxfcHJpdiAqaWwsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS80OTY1LW1hYy5jLTEwMDUtXFx0Y21kX2xlbiA9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvNDk2NS1tYWMuYzoxMDA2OlxcdCAgICBpbF9maWxsX3Byb2JlX3JlcShpbCwgKHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKXNjYW4tXFx1MDAzZWRhdGEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvNDk2NS1tYWMuYy0xMDA3LVxcdFxcdFxcdCAgICAgIHZpZi1cXHUwMDNlYWRkciwgaWwtXFx1MDAzZXNjYW5fcmVxdWVzdC1cXHUwMDNlaWUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS80OTY1LW1hYy5jPTM3NTM9aWw0OTY1X3NldF9iZWFjb25fdGltKHN0cnVjdCBpbF9wcml2ICppbCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5LzQ5NjUtbWFjLmMtMzc1Ny1cXHR1MTYgdGltX2lkeDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS80OTY1LW1hYy5jOjM3NTg6XFx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210ID0gKHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKWJlYWNvbjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS80OTY1LW1hYy5jLTM3NTktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS9jb21tb24uYz0xNjEzPXUxNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5L2NvbW1vbi5jOjE2MTQ6aWxfZmlsbF9wcm9iZV9yZXEoc3RydWN0IGlsX3ByaXYgKmlsLCBzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKmZyYW1lLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5L2NvbW1vbi5jLTE2MTUtXFx0XFx0ICBjb25zdCB1OCAqdGEsIGNvbnN0IHU4ICppZXMsIGludCBpZV9sZW4sIGludCBsZWZ0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvY29tbW9uLmM9NTI1Mz1pbF9iZWFjb25fdXBkYXRlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvY29tbW9uLmMtNTI3Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS9jb21tb24uYzo1Mjc3OlxcdHRpbWVzdGFtcCA9ICgoc3RydWN0IGllZWU4MDIxMV9tZ210ICopc2tiLVxcdTAwM2VkYXRhKS1cXHUwMDNldS5iZWFjb24udGltZXN0YW1wO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5L2NvbW1vbi5jLTUyNzgtXFx0aWwtXFx1MDAzZXRpbWVzdGFtcCA9IGxlNjRfdG9fY3B1KHRpbWVzdGFtcCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS9jb21tb24uaD0xNzg5PWludCBpbF9mb3JjZV9yZXNldChzdHJ1Y3QgaWxfcHJpdiAqaWwsIGJvb2wgZXh0ZXJuYWwpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5L2NvbW1vbi5oOjE3OTA6dTE2IGlsX2ZpbGxfcHJvYmVfcmVxKHN0cnVjdCBpbF9wcml2ICppbCwgc3RydWN0IGllZWU4MDIxMV9tZ210ICpmcmFtZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS9jb21tb24uaC0xNzkxLVxcdFxcdCAgICAgIGNvbnN0IHU4ICp0YSwgY29uc3QgdTggKmllLCBpbnQgaWVfbGVuLCBpbnQgbGVmdCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWluLmM9MTU0PXN0YXRpYyB2b2lkIGl3bF9zZXRfYmVhY29uX3RpbShzdHJ1Y3QgaXdsX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWluLmMtMTU4LVxcdHUxNiB0aW1faWR4O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21haW4uYzoxNTk6XFx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210ID0gKHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKWJlYWNvbjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWluLmMtMTYwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jPTQ4OD1zdGF0aWMgaW50IGl3bF9nZXRfY2hhbm5lbHNfZm9yX3NjYW4oc3RydWN0IGl3bF9wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jLTU2MC0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmM6NTYxOnN0YXRpYyB1MTYgaXdsX2ZpbGxfcHJvYmVfcmVxKHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqZnJhbWUsIGNvbnN0IHU4ICp0YSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmMtNTYyLVxcdFxcdFxcdCAgICAgIGNvbnN0IHU4ICppZXMsIGludCBpZV9sZW4sIGNvbnN0IHU4ICpzc2lkLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jPTYwOT1zdGF0aWMgaW50IGl3bGFnbl9yZXF1ZXN0X3NjYW4oc3RydWN0IGl3bF9wcml2ICpwcml2LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jLTg0NS1cXHRcXHRjbWRfbGVuID0gaXdsX2ZpbGxfcHJvYmVfcmVxKFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3NjYW4uYzo4NDY6XFx0XFx0XFx0XFx0XFx0KHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKXNjYW4tXFx1MDAzZWRhdGEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jLTg0Ny1cXHRcXHRcXHRcXHRcXHR2aWYtXFx1MDAzZWFkZHIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmMtODU1LVxcdFxcdGNtZF9sZW4gPSBpd2xfZmlsbF9wcm9iZV9yZXEoXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vc2Nhbi5jOjg1NjpcXHRcXHRcXHRcXHRcXHQoc3RydWN0IGllZWU4MDIxMV9tZ210ICopc2Nhbi1cXHUwMDNlZGF0YSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9zY2FuLmMtODU3LVxcdFxcdFxcdFxcdFxcdGl3bF9iY2FzdF9hZGRyLCBOVUxMLCAwLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdXRpbHMuaD0zOT11MzIgaXdsX2ZpbmRfaWVfb2Zmc2V0KHU4ICpiZWFjb24sIHU4IGVpZCwgdTMyIGZyYW1lX3NpemUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdXRpbHMuaC00MC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9pd2wtdXRpbHMuaDo0MTpcXHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQgPSAodm9pZCAqKWJlYWNvbjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2l3bC11dGlscy5oLTQyLVxcdGNvbnN0IHU4ICppZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL2FwLmM9MTg9dm9pZCBpd2xfbWxkX3NldF90aW1faWR4KHN0cnVjdCBpd2xfbWxkICptbGQsIF9fbGUzMiAqdGltX2luZGV4LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvYXAuYy0yMS1cXHR1MzIgdGltX2lkeDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9hcC5jOjIyOlxcdHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdCA9ICh2b2lkICopYmVhY29uO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL2FwLmMtMjMtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tYWM4MDIxMS5jPTUwOT1pd2xfbWxkX21hYzgwMjExX3R4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWFjODAyMTEuYy01MjktXFx0XFx0XFx0cmN1X2RlcmVmZXJlbmNlKGluZm8tXFx1MDAzZWNvbnRyb2wudmlmLVxcdTAwM2VsaW5rX2NvbmZbbGlua19pZF0pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21hYzgwMjExLmM6NTMwOlxcdFxcdHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tYWM4MDIxMS5jLTUzMS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3NjYW4uYz0zODI9aXdsX21sZF9zY2FuX2J1aWxkX3Byb2JlX3JlcShzdHJ1Y3QgaXdsX21sZCAqbWxkLCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvc2Nhbi5jLTM4NS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvc2Nhbi5jOjM4NjpcXHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKmZyYW1lID0gKHZvaWQgKilwYXJhbXMtXFx1MDAzZXByZXEuYnVmO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3NjYW4uYy0zODctXFx0dTggKnBvcywgKm5ld3BvcztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3RpbWVfc3luYy5jPTExMz1zdGF0aWMgYm9vbCBpd2xfbWxkX2lzX3NrYl9tYXRjaChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1OCAqYWRkciwgdTggZGlhbG9nX3Rva2VuKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3RpbWVfc3luYy5jLTExNC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvdGltZV9zeW5jLmM6MTE1OlxcdHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdCA9ICh2b2lkICopc2tiLVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3RpbWVfc3luYy5jLTExNi1cXHR1OCBza2JfZGlhbG9nX3Rva2VuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vZnRtLWluaXRpYXRvci5jPTE0MzU9dm9pZCBpd2xfbXZtX2Z0bV9sY19ub3RpZihzdHJ1Y3QgaXdsX212bSAqbXZtLCBzdHJ1Y3QgaXdsX3J4X2NtZF9idWZmZXIgKnJ4YilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2Z0bS1pbml0aWF0b3IuYy0xNDM3LVxcdHN0cnVjdCBpd2xfcnhfcGFja2V0ICpwa3QgPSByeGJfYWRkcihyeGIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2Z0bS1pbml0aWF0b3IuYzoxNDM4OlxcdGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdCA9ICh2b2lkICopcGt0LVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2Z0bS1pbml0aWF0b3IuYy0xNDM5LVxcdHNpemVfdCBsZW4gPSBpd2xfcnhfcGFja2V0X3BheWxvYWRfbGVuKHBrdCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9tYWMtY3R4dC5jPTg0Nz12b2lkIGl3bF9tdm1fbWFjX2N0eHRfc2V0X3RpbShzdHJ1Y3QgaXdsX212bSAqbXZtLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbWFjLWN0eHQuYy04NTEtXFx0dTMyIHRpbV9pZHg7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbWFjLWN0eHQuYzo4NTI6XFx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210ID0gKHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKWJlYWNvbjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9tYWMtY3R4dC5jLTg1My1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL21hYzgwMjExLmM9ODE0PXZvaWQgaXdsX212bV9tYWNfdHgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9tYWM4MDIxMS5jLTg1NS1cXHRcXHRcXHRyY3VfZGVyZWZlcmVuY2UoaW5mby1cXHUwMDNlY29udHJvbC52aWYtXFx1MDAzZWxpbmtfY29uZltsaW5rX2lkXSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbWFjODAyMTEuYzo4NTY6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL21hYzgwMjExLmMtODU3LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbXZtLmg9MjY3MT1zdGF0aWMgaW5saW5lIGJvb2wgaXdsX212bV9tZWlfZmlsdGVyX3NjYW4oc3RydWN0IGl3bF9tdm0gKm12bSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL212bS5oLTI2NzMte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL212bS5oOjI2NzQ6XFx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210ID0gKHZvaWQgKilza2ItXFx1MDAzZWRhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbXZtLmgtMjY3NS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3NjYW4uYz03NTI9aXdsX212bV9idWlsZF9zY2FuX3Byb2JlKHN0cnVjdCBpd2xfbXZtICptdm0sIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9zY2FuLmMtNzU1LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9zY2FuLmM6NzU2OlxcdHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqZnJhbWUgPSAodm9pZCAqKXBhcmFtcy1cXHUwMDNlcHJlcS5idWY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vc2Nhbi5jLTc1Ny1cXHR1OCAqcG9zLCAqbmV3cG9zO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vc2Nhbi5jPTI3NDU9c3RhdGljIHZvaWQgaXdsX212bV9tZWlfc2Nhbl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd2spXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9zY2FuLmMtMjc2MC1cXHR3aGlsZSAoKHNrYiA9IHNrYl9kZXF1ZXVlKFxcdTAwMjZzY2FuX2ZpbHRlci1cXHUwMDNlc2Nhbl9yZXMpKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3NjYW4uYzoyNzYxOlxcdFxcdHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdCA9ICh2b2lkICopc2tiLVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3NjYW4uYy0yNzYyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vdGltZS1zeW5jLmM9MTU9c3RhdGljIGJvb2wgaXdsX212bV9pc19za2JfbWF0Y2goc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTggKmFkZHIsIHU4IGRpYWxvZ190b2tlbilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS90aW1lLXN5bmMuYy0xNi17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vdGltZS1zeW5jLmM6MTc6XFx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210ID0gKHZvaWQgKilza2ItXFx1MDAzZWRhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vdGltZS1zeW5jLmMtMTgtXFx0dTggc2tiX2RpYWxvZ190b2tlbjtcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDc6MjI6MTAuMjI4NjE2MDY4WiIsIlNlcSI6MzcsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjMzNDQ5NjI0MDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqQW5hbHl6aW5nIHRoZSBDYWxsZXJzIG9mIGBwNTRfZmluZF9pZWAqKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIGluLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJTaG93IG1lIHRoZSBjYWxsZXJzIG9mIGBwNTRfZmluZF9pZWAuXCIgSSdtIG5vdCBsb29raW5nIGZvciBhIHN1cGVyZmljaWFsIG92ZXJ2aWV3IGhlcmU7IEkgd2FudCBhIGRldGFpbGVkLCBncmFudWxhciB1bmRlcnN0YW5kaW5nIG9mICp3aGVyZSogYW5kICpob3cqIHRoaXMgZnVuY3Rpb24gaXMgYmVpbmcgdXRpbGl6ZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBjb250ZXh0IHdpdGhpbiB0aGUgYnJvYWRlciBzeXN0ZW0uIEkgd2FudCB0byBzZWUgdGhlIGNhbGwgZ3JhcGhzLCB0aGUgY29udHJvbCBmbG93IHBhdGhzLCBhbmQgaWRlbnRpZnkgdGhlIHNwZWNpZmljIGRhdGEgc3RydWN0dXJlcyBhbmQgdmFyaWFibGVzIGJlaW5nIHBhc3NlZCB0byBpdCBhdCBlYWNoIGNhbGwgc2l0ZS4gQXJlIHdlIHRhbGtpbmcgYWJvdXQgYSBoYW5kZnVsIG9mIGNhbGxzIGluIGEgdGlnaHRseSBjb3VwbGVkIG1vZHVsZSwgb3IgaXMgdGhpcyBhIHBlcnZhc2l2ZSB1dGlsaXR5IGZ1bmN0aW9uIHVzZWQgdGhyb3VnaG91dCB0aGUgY29kZWJhc2U/IEFyZSB0aGVyZSBhbnkgaW5kaXJlY3QgY2FsbHM/IEFueSByZWN1cnNpb24/IEknbSBob3BpbmcgdG8gcXVpY2tseSBpZGVudGlmeSBhbnkgcG90ZW50aWFsIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzIG9yIHN1YnRsZSBidWdzIHRoYXQgbWlnaHQgYmUgbHVya2luZyBpbiB0aGUgaW50ZXJhY3Rpb25zIHdpdGggYHA1NF9maW5kX2llYC4gTXkgZ29hbCBpcyB0byBnYWluIGFuIGluLWRlcHRoIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGltcGxpY2F0aW9ucyBvZiBhbnkgY2hhbmdlcyBvciBvcHRpbWl6YXRpb25zIHRoYXQgbWlnaHQgYmUgbWFkZSB0byB0aGlzIHBhcnRpY3VsYXIgZnVuY3Rpb24uIEknbSBsb29raW5nIGZvciBhIGNsZWFyIG1hcCBvZiBpdHMgdXNhZ2UsIGVzc2VudGlhbGx5LCBzbyB0aGF0IEkgY2FuIG1ha2UgaW5mb3JtZWQgZGVjaXNpb25zIGJhc2VkIG9uIGEgZnVsbCBwaWN0dXJlIG9mIGl0cyByb2xlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTM3MCwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA3OjIyOjEzLjU3MzU4MTIzM1oiLCJTZXEiOjM4LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI2MDk4MDQyNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwNTRfZmluZF9pZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oPTU1ND1zdHJ1Y3QgcDU0X3Jzc2lfZGJfZW50cnkgKnA1NF9yc3NpX2ZpbmQoc3RydWN0IHA1NF9jb21tb24gKnAsIGNvbnN0IHUxNiBmcmVxKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmgtNTU2LS8qIHV0aWxpdHkgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbG1hYy5oOjU1Nzp1OCAqcDU0X2ZpbmRfaWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTggaWUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9sbWFjLmgtNTU4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYz02Nj1zdGF0aWMgaW50IHA1NF9zZXRfdGltKHN0cnVjdCBpZWVlODAyMTFfaHcgKmRldiwgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmMtNzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYzo3NDp1OCAqcDU0X2ZpbmRfaWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTggaWUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYy03NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jPTkzPXN0YXRpYyBpbnQgcDU0X2JlYWNvbl9mb3JtYXRfaWVfdGltKHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jLTEwNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jOjEwNTpcXHR0aW0gPSBwNTRfZmluZF9pZShza2IsIFdMQU5fRUlEX1RJTSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L21haW4uYy0xMDYtXFx0aWYgKCF0aW0pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jPTI5ND1zdGF0aWMgdm9pZCBwNTRfcHNwb2xsX3dvcmthcm91bmQoc3RydWN0IHA1NF9jb21tb24gKnByaXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jLTMxMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jOjMxMzpcXHR0aW0gPSBwNTRfZmluZF9pZShza2IsIFdMQU5fRUlEX1RJTSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguYy0zMTQtXFx0aWYgKCF0aW0pXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA3OjIyOjE1LjgzNDU2Nzg3N1oiLCJTZXEiOjM5LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMzA5OTU0NDgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRoaW5nczpcblxuKipEaWdnaW5nIGludG8gdGhlIHA1NCBXaXJlbGVzcyBEcml2ZXIqKlxuXG5Pa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBpbnRlcmFjdGlvbnMgb2YgdGhlIHA1NCBkcml2ZXIsIGVzcGVjaWFsbHkgYXJvdW5kIGhhbmRsaW5nIEluZm9ybWF0aW9uIEVsZW1lbnRzIChJRXMpIGFuZCBwb3dlciBzYXZlIG1lY2hhbmlzbXMuIE15IGZvY3VzIGlzIGdvaW5nIHRvIGJlIG9uIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBiZWFjb24gZm9ybWF0cywgdHJhbnNtaXQvcmVjZWl2ZSwgYW5kIGFueSBwb3RlbnRpYWwgaXNzdWVzIHdpdGggUFMtUG9sbCB3b3JrYXJvdW5kcy4gSSdsbCBzdGFydCBieSB0YWtpbmcgYSBsb29rIGF0IGBwNTRfZmluZF9pZWAsIGBwNTRfYmVhY29uX2Zvcm1hdF9pZV90aW1gLCBhbmQgYHA1NF9wc3BvbGxfd29ya2Fyb3VuZGAgdG8gZ2V0IG15IGJlYXJpbmdzIG9uIHRoZSByZWxldmFudCBmdW5jdGlvbnMgYW5kIGRhdGEgc3RydWN0dXJlcy4gSXQnbGwgYmUgdGhlIGJlc3Qgd2F5IHRvIGRldGVybWluZSBpZiBJIG5lZWQgdG8gZGlnIGZ1cnRoZXIuXG5cblNwZWNpZmljYWxseSwgSSdsbCBuZWVkIHRvIGRyaWxsIGRvd24gaW50byB0aGUgdHJhbnNtaXQvcmVjZWl2ZSBjb2RlLiBJJ20gZ29pbmcgdG8gbG9vayBhdCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZXJzaWwvcDU0L3R4cnguY2AgYXJvdW5kIGxpbmUgMjk0LiBJJ2xsIG5lZWQgdG8gc2VlIGhvdyB0aGUgSUVzIGFyZSBhY3R1YWxseSBoYW5kbGVkIGluIHRoZSB0cmFuc21pdC9yZWNlaXZlIHByb2Nlc3MgdGhlcmUgdG8gc2VlIGhvdyBldmVyeXRoaW5nIGlzIHdpcmVkIHVwLiBIb3BlZnVsbHksIHRoaXMgd2lsbCBwcm92aWRlIHRoZSBpbmZvcm1hdGlvbiBJIG5lZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMjc5LCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDc6MjI6MTguMTQ0NTI1MTM5WiIsIlNlcSI6NDAsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxMTQxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvdHhyeC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI5MCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDI5MDpcXHQgKiB3aGlsZSBkb3ppbmcsIHdlIGhhdmUgdG8gcHJlcGFyZWQgaW4gY2FzZSBtYWM4MDIxMSB1c2VzIFBTLVBPTExcXG4gMjkxOlxcdCAqIHRvIHJldHJpZXZlIG91dHN0YW5kaW5nIGZyYW1lcyBmcm9tIG91ciBBUC5cXG4gMjkyOlxcdCAqIChzZWUgY29tbWVudCBpbiBuZXQvbWFjODAyMTEvbWxtZS5jIEAgbGluZSAxOTkzKVxcbiAyOTM6XFx0ICovXFxuIDI5NDpcXHRzdGF0aWMgdm9pZCBwNTRfcHNwb2xsX3dvcmthcm91bmQoc3RydWN0IHA1NF9jb21tb24gKnByaXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuIDI5NTpcXHR7XFxuIDI5NjpcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX2hkciAqaGRyID0gKHZvaWQgKikgc2tiLVxcdTAwM2VkYXRhO1xcbiAyOTc6XFx0XFx0c3RydWN0IGllZWU4MDIxMV90aW1faWUgKnRpbV9pZTtcXG4gMjk4OlxcdFxcdHU4ICp0aW07XFxuIDI5OTpcXHRcXHR1OCB0aW1fbGVuO1xcbiAzMDA6XFx0XFx0Ym9vbCBuZXdfcHNtO1xcbiAzMDE6XFx0XFxuIDMwMjpcXHRcXHQvKiBvbmx5IGJlYWNvbnMgaGF2ZSBhIFRJTSBJRSAqL1xcbiAzMDM6XFx0XFx0aWYgKCFpZWVlODAyMTFfaXNfYmVhY29uKGhkci1cXHUwMDNlZnJhbWVfY29udHJvbCkpXFxuIDMwNDpcXHRcXHRcXHRyZXR1cm47XFxuIDMwNTpcXHRcXG4gMzA2OlxcdFxcdGlmICghcHJpdi1cXHUwMDNlYWlkKVxcbiAzMDc6XFx0XFx0XFx0cmV0dXJuO1xcbiAzMDg6XFx0XFxuIDMwOTpcXHRcXHQvKiBvbmx5IGNvbnNpZGVyIGJlYWNvbnMgZnJvbSB0aGUgYXNzb2NpYXRlZCBCU1NJRCAqL1xcbiAzMTA6XFx0XFx0aWYgKCFldGhlcl9hZGRyX2VxdWFsXzY0Yml0cyhoZHItXFx1MDAzZWFkZHIzLCBwcml2LVxcdTAwM2Vic3NpZCkpXFxuIDMxMTpcXHRcXHRcXHRyZXR1cm47XFxuIDMxMjpcXHRcXG4gMzEzOlxcdFxcdHRpbSA9IHA1NF9maW5kX2llKHNrYiwgV0xBTl9FSURfVElNKTtcXG4gMzE0OlxcdFxcdGlmICghdGltKVxcbiAzMTU6XFx0XFx0XFx0cmV0dXJuO1xcbiAzMTY6XFx0XFxuIDMxNzpcXHRcXHR0aW1fbGVuID0gdGltWzFdO1xcbiAzMTg6XFx0XFx0dGltX2llID0gKHN0cnVjdCBpZWVlODAyMTFfdGltX2llICopIFxcdTAwMjZ0aW1bMl07XFxuIDMxOTpcXHRcXG4gMzIwOlxcdFxcdG5ld19wc20gPSBpZWVlODAyMTFfY2hlY2tfdGltKHRpbV9pZSwgdGltX2xlbiwgcHJpdi1cXHUwMDNlYWlkLCBmYWxzZSk7XFxuIDMyMTpcXHRcXHRpZiAobmV3X3BzbSAhPSBwcml2LVxcdTAwM2Vwb3dlcnNhdmVfb3ZlcnJpZGUpIHtcXG4gMzIyOlxcdFxcdFxcdHByaXYtXFx1MDAzZXBvd2Vyc2F2ZV9vdmVycmlkZSA9IG5ld19wc207XFxuIDMyMzpcXHRcXHRcXHRwNTRfc2V0X3BzKHByaXYpO1xcbiAzMjQ6XFx0XFx0fVxcbiAzMjU6XFx0fVxcbiAzMjY6XFx0XFxuIDMyNzpcXHRzdGF0aWMgaW50IHA1NF9yeF9kYXRhKHN0cnVjdCBwNTRfY29tbW9uICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiAzMjg6XFx0e1xcbiAzMjk6XFx0XFx0c3RydWN0IHA1NF9yeF9kYXRhICpoZHIgPSAoc3RydWN0IHA1NF9yeF9kYXRhICopIHNrYi1cXHUwMDNlZGF0YTtcXG4gMzMwOlxcdFxcdHN0cnVjdCBpZWVlODAyMTFfcnhfc3RhdHVzICpyeF9zdGF0dXMgPSBJRUVFODAyMTFfU0tCX1JYQ0Ioc2tiKTtcXG4gMzMxOlxcdFxcdHUxNiBmcmVxID0gbGUxNl90b19jcHUoaGRyLVxcdTAwM2VmcmVxKTtcXG4gMzMyOlxcdFxcdHNpemVfdCBoZWFkZXJfbGVuID0gc2l6ZW9mKCpoZHIpO1xcbiAzMzM6XFx0XFx0dTMyIHRzZjMyO1xcbiAzMzQ6XFx0XFx0X19sZTE2IGZjO1xcbiAzMzU6XFx0XFx0dTggcmF0ZSA9IGhkci1cXHUwMDNlcmF0ZSBcXHUwMDI2IDB4ZjtcXG4gMzM2OlxcdFxcbiAzMzc6XFx0XFx0LypcXG4gMzM4OlxcdFxcdCAqIElmIHRoZSBkZXZpY2UgaXMgaW4gYSB1bnNwZWNpZmllZCBzdGF0ZSB3ZSBoYXZlIHRvXFxuIDMzOTpcXHRcXHQgKiBpZ25vcmUgYWxsIGRhdGEgZnJhbWVzLiBFbHNlIHdlIGNvdWxkIGVuZCB1cCB3aXRoIGFcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDc6MjI6MTguMTQ0NzUzNjg5WiIsIlNlcSI6NDEsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIwMTcxNTkxMzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYSBmaXJzdC1wZXJzb24gc3VtbWFyeSwga2VlcGluZyBpbiBtaW5kIG15IGV4cGVydGlzZTpcblxuKipFeGFtaW5pbmcgdGhlIENhbGwgU2l0ZXMgb2YgYHA1NF9iZWFjb25fZm9ybWF0X2llX3RpbWAqKlxuXG5BbHJpZ2h0LCBzbyBJJ20gdGhpbmtpbmcsIFwiV2UgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBgcDU0X2JlYWNvbl9mb3JtYXRfaWVfdGltYCBpcyBhY3R1YWxseSBiZWluZyB1c2VkIHdpdGhpbiB0aGUgc3lzdGVtLlwiIEl0J3Mgb25lIHRoaW5nIHRvIGhhdmUgYSBmdW5jdGlvbiBkZWZpbmVkLCBidXQgaXRzIHJlYWwgYmVoYXZpb3IgaXMgZGljdGF0ZWQgYnkgKndoZXJlKiBhbmQgKmhvdyogaXQncyBjYWxsZWQuIFRvIGZ1bGx5IGdyYXNwIGl0cyBpbXBhY3Qgb24gdGhlIGxhcmdlciBzeXN0ZW0ncyBvcGVyYXRpb24sIGVzcGVjaWFsbHkgaW4gdGhlIGNvbnRleHQgb2YgYmVhY29uIGZvcm1hdHRpbmcgYW5kIFRJTSBtYW5hZ2VtZW50LCBJIG5lZWQgdG8gc2VlIHRoZSBjb250ZXh0cyBpbiBgbWFpbi5jYCB3aGVyZSBpdCBpcyBjYWxsZWQuIFRoYXQgd2lsbCBwcm92aWRlIGluc2lnaHQgaW50byBob3cgdGhlIGZ1bmN0aW9uIGlzIHVzZWQgaW4gcmVsYXRpb24gdG8gb3RoZXIgZnVuY3Rpb25zIGFuZCB2YXJpYWJsZXMsIHNwZWNpZmljYWxseSBpbiB0aGUgbWFpbiBsb29wIG9mIHRoZSBzb2Z0d2FyZSwgYW5kIHVuZGVyc3RhbmQgdGhlIGZsb3cgb2YgZXhlY3V0aW9uIGFuZCBob3cgdGhlIGZ1bmN0aW9uIGFmZmVjdHMgb3RoZXIgc29mdHdhcmUgcHJvY2Vzc2VzLiBUaGlzIGlzIGtleSB0byBidWlsZGluZyBhIGNvbXByZWhlbnNpdmUgbWVudGFsIG1vZGVsIG9mIGl0cyByb2xlLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgY29kZSBhbmQgbG9jYXRlIHRob3NlIGNhbGxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTUyMSwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDc6MjI6MjAuMTYxOTE2MzAyWiIsIlNlcSI6NDIsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI5ODA3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDExMCxcbiAgXCJMaW5lQ291bnRcIjogNjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDExMDpcXHRcXHRkdGltX3BlcmlvZCA9IHRpbVszXTtcXG4gMTExOlxcdFxcdG5leHQgPSB0aW0gKyAyICsgZHRpbV9sZW47XFxuIDExMjpcXHRcXG4gMTEzOlxcdFxcdGlmIChkdGltX2xlbiBcXHUwMDNjIDMpXFxuIDExNDpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gMTE1OlxcdFxcbiAxMTY6XFx0XFx0bWVtbW92ZSh0aW0sIG5leHQsIHNrYl90YWlsX3BvaW50ZXIoc2tiKSAtIG5leHQpO1xcbiAxMTc6XFx0XFx0dGltID0gc2tiX3RhaWxfcG9pbnRlcihza2IpIC0gKGR0aW1fbGVuICsgMik7XFxuIDExODpcXHRcXG4gMTE5OlxcdFxcdC8qIGFkZCB0aGUgZHVtbXkgYXQgdGhlIGVuZCAqL1xcbiAxMjA6XFx0XFx0dGltWzBdID0gV0xBTl9FSURfVElNO1xcbiAxMjE6XFx0XFx0dGltWzFdID0gMztcXG4gMTIyOlxcdFxcdHRpbVsyXSA9IDA7XFxuIDEyMzpcXHRcXHR0aW1bM10gPSBkdGltX3BlcmlvZDtcXG4gMTI0OlxcdFxcdHRpbVs0XSA9IDA7XFxuIDEyNTpcXHRcXG4gMTI2OlxcdFxcdGlmIChkdGltX2xlbiBcXHUwMDNlIDMpXFxuIDEyNzpcXHRcXHRcXHRza2JfdHJpbShza2IsIHNrYi1cXHUwMDNlbGVuIC0gKGR0aW1fbGVuIC0gMykpO1xcbiAxMjg6XFx0XFxuIDEyOTpcXHRcXHRyZXR1cm4gMDtcXG4gMTMwOlxcdH1cXG4gMTMxOlxcdFxcbiAxMzI6XFx0c3RhdGljIGludCBwNTRfYmVhY29uX3VwZGF0ZShzdHJ1Y3QgcDU0X2NvbW1vbiAqcHJpdixcXG4gMTMzOlxcdFxcdFxcdFxcdHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYpXFxuIDEzNDpcXHR7XFxuIDEzNTpcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX3R4X2NvbnRyb2wgY29udHJvbCA9IHsgfTtcXG4gMTM2OlxcdFxcdHN0cnVjdCBza19idWZmICpiZWFjb247XFxuIDEzNzpcXHRcXHRpbnQgcmV0O1xcbiAxMzg6XFx0XFxuIDEzOTpcXHRcXHRiZWFjb24gPSBpZWVlODAyMTFfYmVhY29uX2dldChwcml2LVxcdTAwM2VodywgdmlmLCAwKTtcXG4gMTQwOlxcdFxcdGlmICghYmVhY29uKVxcbiAxNDE6XFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIDE0MjpcXHRcXHRyZXQgPSBwNTRfYmVhY29uX2Zvcm1hdF9pZV90aW0oYmVhY29uKTtcXG4gMTQzOlxcdFxcdGlmIChyZXQpIHtcXG4gMTQ0OlxcdFxcdFxcdGRldl9rZnJlZV9za2JfYW55KGJlYWNvbik7XFxuIDE0NTpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbiAxNDY6XFx0XFx0fVxcbiAxNDc6XFx0XFxuIDE0ODpcXHRcXHQvKlxcbiAxNDk6XFx0XFx0ICogRHVyaW5nIG9wZXJhdGlvbiwgdGhlIGZpcm13YXJlIHRha2VzIGNhcmUgb2YgYmVhY29uaW5nLlxcbiAxNTA6XFx0XFx0ICogVGhlIGRyaXZlciBvbmx5IG5lZWRzIHRvIHVwbG9hZCBhIG5ldyBiZWFjb24gdGVtcGxhdGUsIG9uY2VcXG4gMTUxOlxcdFxcdCAqIHRoZSB0ZW1wbGF0ZSB3YXMgY2hhbmdlZCBieSB0aGUgc3RhY2sgb3IgdXNlcnNwYWNlLlxcbiAxNTI6XFx0XFx0ICpcXG4gMTUzOlxcdFxcdCAqIExNQUMgQVBJIDMuMi4yIGFsc28gc3BlY2lmaWVzIHRoYXQgdGhlIGRyaXZlciBkb2VzIG5vdCBuZWVkXFxuIDE1NDpcXHRcXHQgKiB0byBjYW5jZWwgdGhlIG9sZCBiZWFjb24gdGVtcGxhdGUgYnkgaGFuZCwgaW5zdGVhZCB0aGUgZmlybXdhcmVcXG4gMTU1OlxcdFxcdCAqIHdpbGwgcmVsZWFzZSB0aGUgcHJldmlvdXMgb25lIHRocm91Z2ggdGhlIGZlZWRiYWNrIG1lY2hhbmlzbS5cXG4gMTU2OlxcdFxcdCAqL1xcbiAxNTc6XFx0XFx0cDU0X3R4XzgwMjExKHByaXYtXFx1MDAzZWh3LCBcXHUwMDI2Y29udHJvbCwgYmVhY29uKTtcXG4gMTU4OlxcdFxcdHByaXYtXFx1MDAzZXRzZl9oaWdoMzIgPSAwO1xcbiAxNTk6XFx0XFx0cHJpdi1cXHUwMDNldHNmX2xvdzMyID0gMDtcXG4gMTYwOlxcdFxcbiAxNjE6XFx0XFx0cmV0dXJuIDA7XFxuIDE2MjpcXHR9XFxuIDE2MzpcXHRcXG4gMTY0OlxcdHN0YXRpYyBpbnQgcDU0X3N0YXJ0KHN0cnVjdCBpZWVlODAyMTFfaHcgKmRldilcXG4gMTY1OlxcdHtcXG4gMTY2OlxcdFxcdHN0cnVjdCBwNTRfY29tbW9uICpwcml2ID0gZGV2LVxcdTAwM2Vwcml2O1xcbiAxNjc6XFx0XFx0aW50IGVycjtcXG4gMTY4OlxcdFxcbiAxNjk6XFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2cHJpdi1cXHUwMDNlY29uZl9tdXRleCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA3OjIyOjIwLjE2MjIxNzgwMloiLCJTZXEiOjQzLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo4NDYzNjU2MDAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKktNU0FOIHZzLiBLQVNBTiBBbmFseXNpcyBmb3IgYHA1NF9maW5kX2llYCBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gV2UncmUgbG9va2luZyBhdCBhIGNvZGUgY2hhbmdlIGluIGBwNTRfZmluZF9pZWAgdGhhdCByZW1vdmVzIGEgc2l6ZSBjaGVjay4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHRyYWNlIHRoZSBsb2dpYy4gVGhlIGtleSBmdW5jdGlvbiBpczpcblxuYGBgY1xudTggKnA1NF9maW5kX2llKHN0cnVjdCBza19idWZmICpza2IsIHU4IGllKVxue1xuXHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQgPSAodm9pZCAqKXNrYi1cdTAwM2VkYXRhO1xuXHR1OCAqcG9zLCAqZW5kO1xuXG5cdHBvcyA9ICh1OCAqKW1nbXQtXHUwMDNldS5iZWFjb24udmFyaWFibGU7XG5cdGVuZCA9IHNrYi1cdTAwM2VkYXRhICsgc2tiLVx1MDAzZWxlbjtcblx0d2hpbGUgKHBvcyBcdTAwM2MgZW5kKSB7XG5cdFx0aWYgKHBvcyArIDIgKyBwb3NbMV0gXHUwMDNlIGVuZClcblx0XHRcdHJldHVybiBOVUxMO1xuXG5cdFx0aWYgKHBvc1swXSA9PSBpZSlcblx0XHRcdHJldHVybiBwb3M7XG5cblx0XHRwb3MgKz0gMiArIHBvc1sxXTtcblx0fVxuXHRyZXR1cm4gTlVMTDtcbn1cbmBgYFxuXG5QcmV2aW91c2x5IHRoZXJlIHdhcyBhIGNoZWNrIGBpZiAoc2tiLVx1MDAzZWxlbiBcdTAwM2M9IHNpemVvZihtZ210KSkgcmV0dXJuIE5VTEw7YC4gTm93IGlmIGBza2ItXHUwMDNlbGVuYCBpcyBsZXNzIHRoYW4gdGhlIG9mZnNldCBvZiBgbWdtdC1cdTAwM2V1LmJlYWNvbi52YXJpYWJsZWAgd2l0aGluIHRoZSBgaWVlZTgwMjExX21nbXRgIHN0cnVjdHVyZSwgdGhlIGNhbGN1bGF0aW9uIG9mIGBwb3NgIHdpbGwgbGVhZCB0byBpdCBwb2ludGluZyBiZXlvbmQgYHNrYi1cdTAwM2VkYXRhICsgc2tiLVx1MDAzZWxlbmAgKGkuZS4gb3V0c2lkZSB0aGUgYHNrYmAgYnVmZmVyKSwgYnV0ICpjcnVjaWFsbHkqLCB0aGUgYHdoaWxlIChwb3MgXHUwMDNjIGVuZClgIGNvbmRpdGlvbiBldmFsdWF0ZXMgdG8gZmFsc2UuIFNvLCB0aGUgbG9vcCBkb2Vzbid0IGV4ZWN1dGUgYW5kIGBOVUxMYCBpcyByZXR1cm5lZC4gU28gdGhlcmUncyBubyBkZXJlZmVyZW5jZS5cblxuVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGhlcmUgaXMsIGRvZXMgdGhpcyBwYXRjaCBpbnRyb2R1Y2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzc3VlcyB0aGF0ICpvbmx5KiBLTVNBTiB3b3VsZCBjYXRjaD8gVGhpcyBpcyB3aGVyZSB0aGUgZGlzdGluY3Rpb24gYmV0d2VlbiBLQVNBTiBhbmQgS01TQU4gYmVjb21lcyBpbXBvcnRhbnQuXG5cbktBU0FOIChLZXJuZWwgQWRkcmVzcyBTQU5pdGl6ZXIpIGlzIG15IGdvLXRvIGZvciBkZXRlY3Rpbmcgb3V0LW9mLWJvdW5kcyByZWFkcyBhbmQgd3JpdGVzLiBLTVNBTiAoS2VybmVsIE1lbW9yeSBTQU5pdGl6ZXIpIHNwZWNpYWxpemVzIGluIGRldGVjdGluZyByZWFkcyBvZiAqdW5pbml0aWFsaXplZCogbWVtb3J5LlxuXG5NeSBhbmFseXNpcyBsb29rcyBsaWtlIHRoaXM6XG5cbjEuICAqKk91dC1vZi1Cb3VuZHM6KiogVGhlIHJlbW92ZWQgY2hlY2sgbWVhbnMgaWYgYHNrYi1cdTAwM2VsZW5gIGlzIHNtYWxsLCBgcG9zYCBjYW4gYmUgY2FsY3VsYXRlZCBzdWNoIHRoYXQgaXQgc3RhcnRzIHBhc3QgYHNrYi1cdTAwM2VkYXRhICsgc2tiLVx1MDAzZWxlbmAsIGJ1dCB0aGVyZSBpcyBubyBkZXJlZmVyZW5jZSBhcyBgcG9zIFx1MDAzYyBlbmRgIGlzIGZhbHNlLCBhbmQgdGhlcmVmb3JlIG5vIG91dC1vZi1ib3VuZHMgbWVtb3J5IGFjY2Vzcy4gSWYgYW55LCBLQVNBTiB3b3VsZCBjYXRjaCBpdC4gVGhlIHBvaW50ZXIgYXJpdGhtZXRpYyBpcyB3aXRoaW4gdGhlIGtlcm5lbCdzIGZsYXQgYWRkcmVzcyBzcGFjZSwgc28gaXQncyBhIHBvaW50ZXIgY29tcGFyaXNvbiB3aXRoaW4gdGhlIHNrYidzIGRhdGEgYnVmZmVyLCBzbyB0aGUgc3RhbmRhcmQgS0FTQU4gc2V0dXAgd2lsbCBmaW5kIG91dC1vZi1ib3VuZHMgaGVhcC9zbGFiIGFjY2Vzc2VzLlxuXG4yLiAgKipVbmluaXRpYWxpemVkIE1lbW9yeToqKiBJIG5lZWQgdG8gc3lzdGVtYXRpY2FsbHkgcnVsZSBvdXQgdGhlIGZvdXIgS01TQU4gY3JpdGVyaWE6XG4gICAgKiAgIE5vIGtlcm5lbCBzdHJ1Y3R1cmVzIGFyZSBiZWluZyBzZW50IHRvIHVzZXIgc3BhY2Ugd2hlcmUgaW5pdGlhbGl6YXRpb24gY291bGQgYmUgYW4gaXNzdWUuXG4gICAgKiAgIE5vIGNvbmRpdGlvbmFsIGxvZ2ljIGRlcGVuZHMgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMuIGBza2ItXHUwMDNlbGVuYCBhbmQgYHNrYi1cdTAwM2VkYXRhYCBhcmUgc3RhbmRhcmQsIGluaXRpYWxpemVkIGZpZWxkcy5cbiAgICAqICAgTm8gY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgYXJlIGJlaW5nIGFsbG9jYXRlZCB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcyBtaWdodCBiZSByZWFkIGxhdGVyLlxuICAgICogICBObyBib3VuZHMgY2hlY2tzIGFyZSBiZWluZyBhbHRlcmVkIHRvIGFsbG93IGFjY2VzcyB0byB1bmluaXRpYWxpemVkIGJ5dGVzLiBUaGUgc2tiIGRhdGEgaXMgcmVjZWl2ZWQgcGFja2V0IG9yIGdlbmVyYXRlZCBiZWFjb24gZGF0YSwgc28gaXQncyBpbml0aWFsaXplZC5cblxuVGhlIHBhdGNoICpkb2Vzbid0KiBpbnRyb2R1Y2UgYW55IG9mIHRoZXNlIEtNU0FOIHJpc2tzLiBUaGUgY29kZSBpcyBwYXJzaW5nIGEgbmV0d29yayBwYWNrZXQgKHRoZSBgc2tiYCBkYXRhKSwgd2hpY2ggaXMgaW5pdGlhbGl6ZWQgbWVtb3J5LiBJZiB0aGVyZSB3ZXJlIGlzc3VlcywgdGhleSB3b3VsZCBiZSBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLlxuXG5Ob3csIGxldCdzIGV4cGxpY2l0bHkgYWRkcmVzcyB0aGUgS01TQU4gcnVsZXM6IFRoZSBwYXRjaCBwcmltYXJpbHkgcmlza3Mgb3V0LW9mLWJvdW5kcyBhY2Nlc3MuIFRoZSBleGlzdGluZyBidWZmZXJzIG1hbmlwdWxhdGVkIGFyZSBpbml0aWFsaXplZCBwYWNrZXQgcGF5bG9hZHMuIFN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMgbGlrZSBLQVNBTiBhcmUgc3VmZmljaWVudC4gVGhlcmUncyBubyB1bmluaXRpYWxpemVkIG1lbW9yeSBpbnRyb2R1Y2VkIG9yIGV4cG9zZWQuIFRoZXJlZm9yZSwgYE5lZWRzS01TQU5gIHNob3VsZCBiZSBgZmFsc2VgLlxuXG4qKkluIENvbmNsdXNpb246KiogQSBkZWRpY2F0ZWQgS01TQU4gcnVuIGlzIHVubmVjZXNzYXJ5LiBTdGFuZGFyZCBLQVNBTiB0ZXN0aW5nIGlzIHN1ZmZpY2llbnQgdG8gdmFsaWRhdGUgdGhpcyBwYXRjaC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI3MjYsIk91dHB1dFRva2VucyI6MjY0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI1NSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDA3OjIyOjI4LjYyNTg3Njc0NFoiLCJTZXEiOjQ0LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MjcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVtb3ZlcyBhbiBlcnJvbmVvdXMgY2hlY2sgYGlmIChza2ItXFx1MDAzZWxlbiBcXHUwMDNjPSBzaXplb2YobWdtdCkpYCBpbiBgcDU0X2ZpbmRfaWUoKWAgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmNgLlxcblxcbktBU0FOIHZzLiBLTVNBTiBhbmFseXNpczpcXG4xLiBLTVNBTiBhcHBsaWNhYmlsaXR5OiBLTVNBTiBkZXRlY3RzIHVzZSBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSAoc3RhY2svaGVhcC9wYWdlKSBhbmQga2VybmVsLXRvLXVzZXIgaW5mby1sZWFrcy4gVGhpcyBwYXRjaCBkb2VzIG5vdCBhbGxvY2F0ZSBuZXcgdW5pbml0aWFsaXplZCBidWZmZXJzLCBkb2VzIG5vdCBpbnRyb2R1Y2UgdW5pbml0aWFsaXplZCBzdGFjayBvciBoZWFwIHZhcmlhYmxlcywgZG9lcyBub3QgY29weSBrZXJuZWwgZGF0YSB0byB1c2VyIHNwYWNlLCBhbmQgZG9lcyBub3QgYWx0ZXIgbG9naWMgdG8gYnJhbmNoIG9uIHVuaW5pdGlhbGl6ZWQgdmFsdWVzLiBUaGUgc2tiIGJ1ZmZlciBjb250YWlucyByZWNlaXZlZC9jb25zdHJ1Y3RlZCBmcmFtZSBkYXRhLlxcbjIuIEtBU0FOIGFwcGxpY2FiaWxpdHk6IEFueSBwb3RlbnRpYWwgbWVtb3J5IHNhZmV0eSBpc3N1ZSBjYXVzZWQgYnkgcmVtb3ZpbmcgdGhlIGNoZWNrIChlLmcuLCBpZiBhIG1hbGZvcm1lZCBza2Igd2l0aCBhIGxlbmd0aCBzbWFsbGVyIHRoYW4gdGhlIGJlYWNvbiBoZWFkZXIgd2VyZSBwYXJzZWQgYW5kIGxlZCB0byBhbiBvdXQtb2YtYm91bmRzIHJlYWQpIHdvdWxkIHJlcHJlc2VudCBhbiBvdXQtb2YtYm91bmRzIGJ1ZmZlciBhY2Nlc3MsIHdoaWNoIGlzIHRyYWNrZWQgYW5kIGRldGVjdGVkIGJ5IEtBU0FOLlxcblxcblRoZXJlZm9yZSwgdGhpcyBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcywgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlbW92ZXMgYW4gZXJyb25lb3VzIGNoZWNrIGBpZiAoc2tiLVxcdTAwM2VsZW4gXFx1MDAzYz0gc2l6ZW9mKG1nbXQpKWAgaW4gYHA1NF9maW5kX2llKClgIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jYC5cXG5cXG5LQVNBTiB2cy4gS01TQU4gYW5hbHlzaXM6XFxuMS4gS01TQU4gYXBwbGljYWJpbGl0eTogS01TQU4gZGV0ZWN0cyB1c2Ugb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgKHN0YWNrL2hlYXAvcGFnZSkgYW5kIGtlcm5lbC10by11c2VyIGluZm8tbGVha3MuIFRoaXMgcGF0Y2ggZG9lcyBub3QgYWxsb2NhdGUgbmV3IHVuaW5pdGlhbGl6ZWQgYnVmZmVycywgZG9lcyBub3QgaW50cm9kdWNlIHVuaW5pdGlhbGl6ZWQgc3RhY2sgb3IgaGVhcCB2YXJpYWJsZXMsIGRvZXMgbm90IGNvcHkga2VybmVsIGRhdGEgdG8gdXNlciBzcGFjZSwgYW5kIGRvZXMgbm90IGFsdGVyIGxvZ2ljIHRvIGJyYW5jaCBvbiB1bmluaXRpYWxpemVkIHZhbHVlcy4gVGhlIHNrYiBidWZmZXIgY29udGFpbnMgcmVjZWl2ZWQvY29uc3RydWN0ZWQgZnJhbWUgZGF0YS5cXG4yLiBLQVNBTiBhcHBsaWNhYmlsaXR5OiBBbnkgcG90ZW50aWFsIG1lbW9yeSBzYWZldHkgaXNzdWUgY2F1c2VkIGJ5IHJlbW92aW5nIHRoZSBjaGVjayAoZS5nLiwgaWYgYSBtYWxmb3JtZWQgc2tiIHdpdGggYSBsZW5ndGggc21hbGxlciB0aGFuIHRoZSBiZWFjb24gaGVhZGVyIHdlcmUgcGFyc2VkIGFuZCBsZWQgdG8gYW4gb3V0LW9mLWJvdW5kcyByZWFkKSB3b3VsZCByZXByZXNlbnQgYW4gb3V0LW9mLWJvdW5kcyBidWZmZXIgYWNjZXNzLCB3aGljaCBpcyB0cmFja2VkIGFuZCBkZXRlY3RlZCBieSBLQVNBTi5cXG5cXG5UaGVyZWZvcmUsIHRoaXMgY2hhbmdlIGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MsIGFuZCBhIGRlZGljYXRlZCBLTVNBTiBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowlvp97[1] Phase: Succeeded StartedAt: 2026-09-07 07:22:40 +0000 UTC FinishedAt: 2026-09-07 07:22:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlvp97[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-09-07 07:22:40 +0000 UTC FinishedAt: 2026-09-07 07:22:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlvp97[2] Phase: Succeeded StartedAt: 2026-09-07 07:22:40 +0000 UTC FinishedAt: 2026-09-07 09:02:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlvp97[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","WLAN_VENDOR_INTERSIL"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p54_find_ie","p54_beacon_format_ie_tim","p54_pspoll_workaround"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","WLAN_VENDOR_INTERSIL"],"series_id":"774bcb31-efd1-4cba-9346-18d2149d097d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-09-07 07:22:40 +0000 UTC FinishedAt: 2026-09-07 09:02:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","WLAN_VENDOR_INTERSIL"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p54_find_ie","p54_beacon_format_ie_tim","p54_pspoll_workaround"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","WLAN_VENDOR_INTERSIL"],"series_id":"774bcb31-efd1-4cba-9346-18d2149d097d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowlvp97[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","WLAN_VENDOR_INTERSIL"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p54_find_ie","p54_beacon_format_ie_tim","p54_pspoll_workaround"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","WLAN_VENDOR_INTERSIL"],"series_id":"774bcb31-efd1-4cba-9346-18d2149d097d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-09-07 07:22:40 +0000 UTC FinishedAt: 2026-09-07 07:22:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlvp97[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","WLAN_VENDOR_INTERSIL"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p54_find_ie","p54_beacon_format_ie_tim","p54_pspoll_workaround"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","WLAN_VENDOR_INTERSIL"],"series_id":"774bcb31-efd1-4cba-9346-18d2149d097d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-09-07 07:22:40 +0000 UTC FinishedAt: 2026-09-07 07:22:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","WLAN_VENDOR_INTERSIL"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowlvp97/series-workflowlvp97-convert-artifact-779307534/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlvp97[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","WLAN_VENDOR_INTERSIL"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p54_find_ie","p54_beacon_format_ie_tim","p54_pspoll_workaround"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","WLAN_VENDOR_INTERSIL"],"series_id":"774bcb31-efd1-4cba-9346-18d2149d097d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-09-07 07:22:50 +0000 UTC FinishedAt: 2026-09-07 07:44:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlvp97[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","WLAN_VENDOR_INTERSIL"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p54_find_ie","p54_beacon_format_ie_tim","p54_pspoll_workaround"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","WLAN_VENDOR_INTERSIL"],"series_id":"774bcb31-efd1-4cba-9346-18d2149d097d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-09-07 07:22:50 +0000 UTC FinishedAt: 2026-09-07 07:44:59 +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:*d326c7d5-a1be-4253-b7d0-94d7ed1b960e,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-workflowlvp97/series-workflowlvp97-convert-artifact-779307534/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": "df40046b-eb1c-4b78-9b9c-b5cd8c700c4b", "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-workflowlvp97/series-workflowlvp97-build-action-4050423412/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlvp97[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","WLAN_VENDOR_INTERSIL"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p54_find_ie","p54_beacon_format_ie_tim","p54_pspoll_workaround"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","WLAN_VENDOR_INTERSIL"],"series_id":"774bcb31-efd1-4cba-9346-18d2149d097d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-09-07 07:22:50 +0000 UTC FinishedAt: 2026-09-07 07:44:34 +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:*d326c7d5-a1be-4253-b7d0-94d7ed1b960e,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-workflowlvp97/series-workflowlvp97-convert-artifact-779307534/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": "df40046b-eb1c-4b78-9b9c-b5cd8c700c4b", "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-workflowlvp97/series-workflowlvp97-build-action-4050423412/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlvp97[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","WLAN_VENDOR_INTERSIL"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p54_find_ie","p54_beacon_format_ie_tim","p54_pspoll_workaround"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","WLAN_VENDOR_INTERSIL"],"series_id":"774bcb31-efd1-4cba-9346-18d2149d097d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-09-07 07:44:59 +0000 UTC FinishedAt: 2026-09-07 07:44:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlvp97[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","WLAN_VENDOR_INTERSIL"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p54_find_ie","p54_beacon_format_ie_tim","p54_pspoll_workaround"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","WLAN_VENDOR_INTERSIL"],"series_id":"774bcb31-efd1-4cba-9346-18d2149d097d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-09-07 07:44:59 +0000 UTC FinishedAt: 2026-09-07 07:44:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlvp97[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","WLAN_VENDOR_INTERSIL"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p54_find_ie","p54_beacon_format_ie_tim","p54_pspoll_workaround"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","WLAN_VENDOR_INTERSIL"],"series_id":"774bcb31-efd1-4cba-9346-18d2149d097d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-09-07 07:44:59 +0000 UTC FinishedAt: 2026-09-07 07:45:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlvp97[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","WLAN_VENDOR_INTERSIL"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p54_find_ie","p54_beacon_format_ie_tim","p54_pspoll_workaround"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","WLAN_VENDOR_INTERSIL"],"series_id":"774bcb31-efd1-4cba-9346-18d2149d097d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-09-07 07:44:59 +0000 UTC FinishedAt: 2026-09-07 07:45:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","WLAN_VENDOR_INTERSIL"],"series_id":"774bcb31-efd1-4cba-9346-18d2149d097d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowlvp97/series-workflowlvp97-convert-artifact-1076027905/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlvp97[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","WLAN_VENDOR_INTERSIL"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p54_find_ie","p54_beacon_format_ie_tim","p54_pspoll_workaround"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","WLAN_VENDOR_INTERSIL"],"series_id":"774bcb31-efd1-4cba-9346-18d2149d097d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-09-07 07:45:09 +0000 UTC FinishedAt: 2026-09-07 07:47:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlvp97[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","WLAN_VENDOR_INTERSIL"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p54_find_ie","p54_beacon_format_ie_tim","p54_pspoll_workaround"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","WLAN_VENDOR_INTERSIL"],"series_id":"774bcb31-efd1-4cba-9346-18d2149d097d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-09-07 07:45:09 +0000 UTC FinishedAt: 2026-09-07 07:47:19 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*df40046b-eb1c-4b78-9b9c-b5cd8c700c4b,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-workflowlvp97/series-workflowlvp97-build-action-4050423412/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-workflowlvp97[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","WLAN_VENDOR_INTERSIL"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p54_find_ie","p54_beacon_format_ie_tim","p54_pspoll_workaround"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","WLAN_VENDOR_INTERSIL"],"series_id":"774bcb31-efd1-4cba-9346-18d2149d097d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-09-07 07:47:29 +0000 UTC FinishedAt: 2026-09-07 07:47:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlvp97[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","WLAN_VENDOR_INTERSIL"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p54_find_ie","p54_beacon_format_ie_tim","p54_pspoll_workaround"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","WLAN_VENDOR_INTERSIL"],"series_id":"774bcb31-efd1-4cba-9346-18d2149d097d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-09-07 07:47:29 +0000 UTC FinishedAt: 2026-09-07 07:47:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlvp97[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","WLAN_VENDOR_INTERSIL"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p54_find_ie","p54_beacon_format_ie_tim","p54_pspoll_workaround"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","WLAN_VENDOR_INTERSIL"],"series_id":"774bcb31-efd1-4cba-9346-18d2149d097d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-09-07 07:47:29 +0000 UTC FinishedAt: 2026-09-07 08:06:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlvp97[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","WLAN_VENDOR_INTERSIL"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p54_find_ie","p54_beacon_format_ie_tim","p54_pspoll_workaround"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","WLAN_VENDOR_INTERSIL"],"series_id":"774bcb31-efd1-4cba-9346-18d2149d097d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-09-07 07:47:29 +0000 UTC FinishedAt: 2026-09-07 08:06:06 +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:*d326c7d5-a1be-4253-b7d0-94d7ed1b960e,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-workflowlvp97/series-workflowlvp97-convert-artifact-1076027905/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": "1cd43bb7-c5c1-4c2a-a595-fa8bd53b5292", "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-workflowlvp97/series-workflowlvp97-build-action-255046285/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlvp97[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","WLAN_VENDOR_INTERSIL"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p54_find_ie","p54_beacon_format_ie_tim","p54_pspoll_workaround"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","WLAN_VENDOR_INTERSIL"],"series_id":"774bcb31-efd1-4cba-9346-18d2149d097d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-09-07 07:47:29 +0000 UTC FinishedAt: 2026-09-07 08:05:56 +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:*d326c7d5-a1be-4253-b7d0-94d7ed1b960e,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-workflowlvp97/series-workflowlvp97-convert-artifact-1076027905/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": "1cd43bb7-c5c1-4c2a-a595-fa8bd53b5292", "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-workflowlvp97/series-workflowlvp97-build-action-255046285/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlvp97[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","WLAN_VENDOR_INTERSIL"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p54_find_ie","p54_beacon_format_ie_tim","p54_pspoll_workaround"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","WLAN_VENDOR_INTERSIL"],"series_id":"774bcb31-efd1-4cba-9346-18d2149d097d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-09-07 08:06:06 +0000 UTC FinishedAt: 2026-09-07 08:06:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlvp97[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","WLAN_VENDOR_INTERSIL"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p54_find_ie","p54_beacon_format_ie_tim","p54_pspoll_workaround"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","WLAN_VENDOR_INTERSIL"],"series_id":"774bcb31-efd1-4cba-9346-18d2149d097d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-09-07 08:06:06 +0000 UTC FinishedAt: 2026-09-07 08:06:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlvp97[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","WLAN_VENDOR_INTERSIL"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p54_find_ie","p54_beacon_format_ie_tim","p54_pspoll_workaround"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","WLAN_VENDOR_INTERSIL"],"series_id":"774bcb31-efd1-4cba-9346-18d2149d097d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-09-07 08:06:06 +0000 UTC FinishedAt: 2026-09-07 08:07:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlvp97[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","WLAN_VENDOR_INTERSIL"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p54_find_ie","p54_beacon_format_ie_tim","p54_pspoll_workaround"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","WLAN_VENDOR_INTERSIL"],"series_id":"774bcb31-efd1-4cba-9346-18d2149d097d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-09-07 08:06:06 +0000 UTC FinishedAt: 2026-09-07 08:07:28 +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:*1cd43bb7-c5c1-4c2a-a595-fa8bd53b5292,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-workflowlvp97/series-workflowlvp97-build-action-255046285/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-workflowlvp97[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","WLAN_VENDOR_INTERSIL"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p54_find_ie","p54_beacon_format_ie_tim","p54_pspoll_workaround"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","WLAN_VENDOR_INTERSIL"],"series_id":"774bcb31-efd1-4cba-9346-18d2149d097d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-09-07 08:07:39 +0000 UTC FinishedAt: 2026-09-07 09:02:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlvp97[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","WLAN_VENDOR_INTERSIL"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p54_find_ie","p54_beacon_format_ie_tim","p54_pspoll_workaround"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","WLAN_VENDOR_INTERSIL"],"series_id":"774bcb31-efd1-4cba-9346-18d2149d097d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-09-07 08:07:39 +0000 UTC FinishedAt: 2026-09-07 09:02:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p54_find_ie","p54_beacon_format_ie_tim","p54_pspoll_workaround"],"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:*df40046b-eb1c-4b78-9b9c-b5cd8c700c4b,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*1cd43bb7-c5c1-4c2a-a595-fa8bd53b5292,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-workflowlvp97/series-workflowlvp97-build-action-4050423412/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-workflowlvp97/series-workflowlvp97-build-action-255046285/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowlvp97[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","WLAN_VENDOR_INTERSIL"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p54_find_ie","p54_beacon_format_ie_tim","p54_pspoll_workaround"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","WLAN_VENDOR_INTERSIL"],"series_id":"774bcb31-efd1-4cba-9346-18d2149d097d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-09-07 08:07:39 +0000 UTC FinishedAt: 2026-09-07 08:07:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlvp97[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","WLAN_VENDOR_INTERSIL"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p54_find_ie","p54_beacon_format_ie_tim","p54_pspoll_workaround"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","WLAN_VENDOR_INTERSIL"],"series_id":"774bcb31-efd1-4cba-9346-18d2149d097d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-09-07 08:07:39 +0000 UTC FinishedAt: 2026-09-07 08:07:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p54_find_ie","p54_beacon_format_ie_tim","p54_pspoll_workaround"],"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-workflowlvp97/series-workflowlvp97-convert-artifact-3807842198/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlvp97[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","WLAN_VENDOR_INTERSIL"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p54_find_ie","p54_beacon_format_ie_tim","p54_pspoll_workaround"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","WLAN_VENDOR_INTERSIL"],"series_id":"774bcb31-efd1-4cba-9346-18d2149d097d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-09-07 08:07:39 +0000 UTC FinishedAt: 2026-09-07 08:07:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlvp97[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","WLAN_VENDOR_INTERSIL"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p54_find_ie","p54_beacon_format_ie_tim","p54_pspoll_workaround"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","WLAN_VENDOR_INTERSIL"],"series_id":"774bcb31-efd1-4cba-9346-18d2149d097d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-09-07 08:07:39 +0000 UTC FinishedAt: 2026-09-07 08:07:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlvp97[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","WLAN_VENDOR_INTERSIL"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p54_find_ie","p54_beacon_format_ie_tim","p54_pspoll_workaround"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","WLAN_VENDOR_INTERSIL"],"series_id":"774bcb31-efd1-4cba-9346-18d2149d097d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-09-07 08:07:39 +0000 UTC FinishedAt: 2026-09-07 08:07:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlvp97[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","WLAN_VENDOR_INTERSIL"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p54_find_ie","p54_beacon_format_ie_tim","p54_pspoll_workaround"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","WLAN_VENDOR_INTERSIL"],"series_id":"774bcb31-efd1-4cba-9346-18d2149d097d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-09-07 08:07:49 +0000 UTC FinishedAt: 2026-09-07 09:02:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlvp97[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","WLAN_VENDOR_INTERSIL"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["p54_find_ie","p54_beacon_format_ie_tim","p54_pspoll_workaround"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["P54_COMMON","P54_USB","MAC80211","WLAN_VENDOR_INTERSIL"],"series_id":"774bcb31-efd1-4cba-9346-18d2149d097d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-09-07 08:07:49 +0000 UTC FinishedAt: 2026-09-07 09:02:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*df40046b-eb1c-4b78-9b9c-b5cd8c700c4b,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*1cd43bb7-c5c1-4c2a-a595-fa8bd53b5292,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-workflowlvp97/series-workflowlvp97-build-action-4050423412/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-workflowlvp97/series-workflowlvp97-build-action-255046285/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-workflowlvp97/series-workflowlvp97-convert-artifact-3807842198/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,}