Name: series-workflow526nl Phase: Succeeded StartedAt: 2026-09-06 12:24:38 +0000 UTC FinishedAt: 2026-09-06 14:27:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflow526nl[0] Phase: Succeeded StartedAt: 2026-09-06 12:24:38 +0000 UTC FinishedAt: 2026-09-06 12:48:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflow526nl[0].run-triage Phase: Succeeded StartedAt: 2026-09-06 12:24:38 +0000 UTC FinishedAt: 2026-09-06 12:48:57 +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": [ "ATH9K_HTC", "USB", "MAC80211", "WLAN_VENDOR_ATH" ], "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": [ "ATH9K_HTC", "USB", "MAC80211", "WLAN_VENDOR_ATH" ], "series_id": "74f0377d-614c-4348-a08a-5e08f184e58e" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "hif_usb_send_regout", "ath9k_reg_rmw_buffer", "ath9k_reg_rmw_flush", "ath9k_reg_rmw", "hif_usb_send" ], "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+CgkJCTx0ZD4yMDI2LzA5LzA2IDEyOjQ3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FUSDlLX0hUQyYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7V0xBTl9WRU5ET1JfQVRIJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aGlmX3VzYl9zZW5kX3JlZ291dCYjMzQ7LAogICAgJiMzNDthdGg5a19yZWdfcm13X2J1ZmZlciYjMzQ7LAogICAgJiMzNDthdGg5a19yZWdfcm13X2ZsdXNoJiMzNDssCiAgICAmIzM0O2F0aDlrX3JlZ19ybXcmIzM0OywKICAgICYjMzQ7aGlmX3VzYl9zZW5kJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgVVNCIGNvbW11bmljYXRpb24gaXNzdWUgaW4gdGhlIGF0aDlrIGRyaXZlciB3aGVyZSBVU0IgcGFja2V0cyB0aGF0IGFyZSBleGFjdCBtdWx0aXBsZXMgb2YgZW5kcG9pbnQgbWF4cGFja2V0IHNpemUgY2F1c2UgZmlybXdhcmUgZGVsaXZlcnkgc3RhbGxzLiBUaGUgY2hhbmdlcyBjb25zaXN0IG9mOlxuMS4gQWRkaW5nIGEgY2hlY2sgaW4gYGhpZl91c2Jfc2VuZF9yZWdvdXQoKWAgdG8gd2FybiBhbmQgcmVqZWN0IHNrYnMgd2hvc2UgbGVuZ3RoIGlzIGFuIGV4YWN0IG11bHRpcGxlIG9mIHRoZSBlbmRwb2ludCBtYXhwYWNrZXQgc2l6ZS5cbjIuIENvcnJlY3RpbmcgdGhlIGJ1ZmZlciBzaXplIGNhbGN1bGF0aW9uIGluIGBhdGg5a19yZWdfcm13X2J1ZmZlcigpYCBmcm9tIGBzaXplb2Yoc3RydWN0IHJlZ2lzdGVyX3dyaXRlKWAgKDggYnl0ZXMpIHRvIGBzaXplb2Yoc3RydWN0IHJlZ2lzdGVyX3JtdylgICgxMiBieXRlcykuXG4zLiBMb3dlcmluZyBgTUFYX1JNV19DTURfTlVNQkVSYCBmcm9tIDE1IHRvIDE0IGluIGB3bWkuaGAgdG8gYXZvaWQgNjQtYnl0ZSBhbGlnbmVkIFVTQiBwYXlsb2Fkcy5cblxuUmVnYXJkaW5nIG1lbW9yeSBpbml0aWFsaXphdGlvbjpcbi0gQWxsIGZpZWxkcyAoYHJlZ2AsIGBzZXRgLCBgY2xyYCkgb2YgdGhlIGBzdHJ1Y3QgcmVnaXN0ZXJfcm13YCBhcnJheSBlbGVtZW50cyBpbiBgcHJpdi1cdTAwM2V3bWktXHUwMDNlbXVsdGlfcm13YCBhcmUgZXhwbGljaXRseSBpbml0aWFsaXplZCBiZWZvcmUgYmVpbmcgc2VudCB2aWEgYGF0aDlrX3dtaV9jbWQoKWAuXG4tIE5vIHVzZXItc3BhY2UgY29weSBwYXRocyBvciB1bmluaXRpYWxpemVkIGtlcm5lbCBzdHJ1Y3R1cmUgZmllbGRzIGFyZSBleHBvc2VkIG9yIG1vZGlmaWVkLlxuLSBObyBicmFuY2ggY29uZGl0aW9ucyByZWx5IG9uIHVuaW5pdGlhbGl6ZWQgdmFsdWVzLlxuXG5UaGVyZWZvcmUsIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcywgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBVU0Igd2lyZWxlc3MgZHJpdmVyIGF0aDlrX2h0Yywgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSBVU0IgZ2FkZ2V0L2RldmljZSBlbXVsYXRpb24gaW4gc3l6a2FsbGVyLiBUaGUgY2hhbmdlcyBhZGQgYSBuZXcgV0FSTl9PTkNFIHJ1bnRpbWUgYXNzZXJ0aW9uIGFuZCBjaGVjayBpbiBoaWZfdXNiX3NlbmRfcmVnb3V0IHRvIHByZXZlbnQgc2VuZGluZyBwYWNrZXRzIHdob3NlIGxlbmd0aCBpcyBhbiBleGFjdCBtdWx0aXBsZSBvZiB0aGUgVVNCIG1heHBhY2tldCBzaXplLCBjb3JyZWN0IHRoZSBlbGVtZW50IHNpemUgY2FsY3VsYXRpb24gaW4gYXRoOWtfcmVnX3Jtd19idWZmZXIgZnJvbSBzaXplb2Yoc3RydWN0IHJlZ2lzdGVyX3dyaXRlKSB0byBzaXplb2Yoc3RydWN0IHJlZ2lzdGVyX3JtdyksIGFuZCByZWR1Y2UgTUFYX1JNV19DTURfTlVNQkVSLiBGdXp6aW5nIGlzIHdhcnJhbnRlZCB0byB0ZXN0IHRoZSBuZXcgYXNzZXJ0aW9uIGFuZCBhbHRlcmVkIFJNVyBjb21tYW5kIGJhdGNoaW5nIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDEyOjQ3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNGE4NzJlODU5MTdkNjcwNDAwNzUxOTE5NzgyNDZmMzliMGI5NWU0N1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gU2VwIDYgMTI6NDc6MzMgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmNcbmluZGV4IGQzNDkxZmYwOGU2ZWYuLjQ5MzAzYzdlM2ZlZjQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jXG5AQCAtOTksMTAgJiM0Mzs5OSwxNyBAQCBzdGF0aWMgdm9pZCBoaWZfdXNiX3JlZ291dF9jYihzdHJ1Y3QgdXJiICp1cmIpXG4gc3RhdGljIGludCBoaWZfdXNiX3NlbmRfcmVnb3V0KHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2RldixcbiBcdFx0XHQgICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiB7XG4mIzQzO1x0dTE2IG1heHBhY2tldCA9IHVzYl9tYXhwYWNrZXQoaGlmX2Rldi1cdTAwM2V1ZGV2LFxuJiM0MztcdFx0XHRcdCAgICAgIHVzYl9zbmRpbnRwaXBlKGhpZl9kZXYtXHUwMDNldWRldixcbiYjNDM7XHRcdFx0XHRcdFx0ICAgICBVU0JfUkVHX09VVF9QSVBFKSk7XG4gXHRzdHJ1Y3QgdXJiICp1cmI7XG4gXHRzdHJ1Y3QgY21kX2J1ZiAqY21kO1xuIFx0aW50IHJldCA9IDA7XG4gXG4mIzQzO1x0aWYgKFdBUk5fT05DRShtYXhwYWNrZXQgXHUwMDI2XHUwMDI2IHNrYi1cdTAwM2VsZW4gJSBtYXhwYWNrZXQgPT0gMCxcbiYjNDM7XHRcdCAgICAgIFwmIzM0OyV1LWJ5dGUgY29tbWFuZCBmaWxscyB3aG9sZSBVU0IgcGFja2V0c1xcblwmIzM0Oywgc2tiLVx1MDAzZWxlbikpXG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XG4gXHR1cmIgPSB1c2JfYWxsb2NfdXJiKDAsIEdGUF9LRVJORUwpO1xuIFx0aWYgKHVyYiA9PSBOVUxMKVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmNcbmluZGV4IDZkZTc4YWU4NTcyNjguLjBiNDlkMmNjOTlmMGIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuY1xuQEAgLTQwNSw3ICYjNDM7NDA1LDcgQEAgc3RhdGljIHZvaWQgYXRoOWtfcmVnX3Jtd19idWZmZXIodm9pZCAqaHdfcHJpdixcbiBcdGlmIChwcml2LVx1MDAzZXdtaS1cdTAwM2VtdWx0aV9ybXdfaWR4ID09IE1BWF9STVdfQ01EX05VTUJFUikge1xuIFx0XHRyID0gYXRoOWtfd21pX2NtZChwcml2LVx1MDAzZXdtaSwgV01JX1JFR19STVdfQ01ESUQsXG4gXHRcdFx0ICAodTggKikgXHUwMDI2cHJpdi1cdTAwM2V3bWktXHUwMDNlbXVsdGlfcm13LFxuLVx0XHRcdCAgc2l6ZW9mKHN0cnVjdCByZWdpc3Rlcl93cml0ZSkgKiBwcml2LVx1MDAzZXdtaS1cdTAwM2VtdWx0aV9ybXdfaWR4LFxuJiM0MztcdFx0XHQgIHNpemVvZihzdHJ1Y3QgcmVnaXN0ZXJfcm13KSAqIHByaXYtXHUwMDNld21pLVx1MDAzZW11bHRpX3Jtd19pZHgsXG4gXHRcdFx0ICAodTggKikgXHUwMDI2cnNwX3N0YXR1cywgc2l6ZW9mKHJzcF9zdGF0dXMpLFxuIFx0XHRcdCAgMTAwKTtcbiBcdFx0aWYgKHVubGlrZWx5KHIpKSB7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oXG5pbmRleCA1YzNiNzEwYjhmMzE5Li4yNTZmNDYwOThhNmIxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmhcbkBAIC0xMjYsNyAmIzQzOzEyNiw4IEBAIGVudW0gd21pX2V2ZW50X2lkIHtcbiB9O1xuIFxuICNkZWZpbmUgTUFYX0NNRF9OVU1CRVIgNjJcbi0jZGVmaW5lIE1BWF9STVdfQ01EX05VTUJFUiAxNVxuJiM0MzsvKiAxNSBlbnRyaWVzIG1ha2UgMTkyIGJ5dGVzLCB0aHJlZSBmdWxsIFVTQiBwYWNrZXRzOiBuZXZlciBkZWxpdmVyZWQuICovXG4mIzQzOyNkZWZpbmUgTUFYX1JNV19DTURfTlVNQkVSIDE0XG4gXG4gc3RydWN0IHJlZ2lzdGVyX3dyaXRlIHtcbiBcdF9fYmUzMiByZWc7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMTI6NDc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QVRIOUtfSFRDJiMzNDssCiAgICAmIzM0O1VTQiYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtXTEFOX1ZFTkRPUl9BVEgmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtoaWZfdXNiX3NlbmRfcmVnb3V0JiMzNDssCiAgICAmIzM0O2F0aDlrX3JlZ19ybXdfYnVmZmVyJiMzNDssCiAgICAmIzM0O2F0aDlrX3JlZ19ybXdfZmx1c2gmIzM0OywKICAgICYjMzQ7YXRoOWtfcmVnX3JtdyYjMzQ7LAogICAgJiMzNDtoaWZfdXNiX3NlbmQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFVTQiB3aXJlbGVzcyBkcml2ZXIgYXRoOWtfaHRjLCB3aGljaCBpcyByZWFjaGFibGUgdmlhIFVTQiBnYWRnZXQvZGV2aWNlIGVtdWxhdGlvbiBpbiBzeXprYWxsZXIuIFRoZSBjaGFuZ2VzIGFkZCBhIG5ldyBXQVJOX09OQ0UgcnVudGltZSBhc3NlcnRpb24gYW5kIGNoZWNrIGluIGhpZl91c2Jfc2VuZF9yZWdvdXQgdG8gcHJldmVudCBzZW5kaW5nIHBhY2tldHMgd2hvc2UgbGVuZ3RoIGlzIGFuIGV4YWN0IG11bHRpcGxlIG9mIHRoZSBVU0IgbWF4cGFja2V0IHNpemUsIGNvcnJlY3QgdGhlIGVsZW1lbnQgc2l6ZSBjYWxjdWxhdGlvbiBpbiBhdGg5a19yZWdfcm13X2J1ZmZlciBmcm9tIHNpemVvZihzdHJ1Y3QgcmVnaXN0ZXJfd3JpdGUpIHRvIHNpemVvZihzdHJ1Y3QgcmVnaXN0ZXJfcm13KSwgYW5kIHJlZHVjZSBNQVhfUk1XX0NNRF9OVU1CRVIuIEZ1enppbmcgaXMgd2FycmFudGVkIHRvIHRlc3QgdGhlIG5ldyBhc3NlcnRpb24gYW5kIGFsdGVyZWQgUk1XIGNvbW1hbmQgYmF0Y2hpbmcgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA0YTg3MmU4NTkxN2Q2NzA0MDA3NTE5MTk3ODI0NmYzOWIwYjk1ZTQ3CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBTZXAgNiAxMjo0NzozMyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jCmluZGV4IGQzNDkxZmYwOGU2ZWYuLjQ5MzAzYzdlM2ZlZjQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYwpAQCAtOTksMTAgJiM0Mzs5OSwxNyBAQCBzdGF0aWMgdm9pZCBoaWZfdXNiX3JlZ291dF9jYihzdHJ1Y3QgdXJiICp1cmIpCiBzdGF0aWMgaW50IGhpZl91c2Jfc2VuZF9yZWdvdXQoc3RydWN0IGhpZl9kZXZpY2VfdXNiICpoaWZfZGV2LAogCQkJICAgICAgIHN0cnVjdCBza19idWZmICpza2IpCiB7CiYjNDM7CXUxNiBtYXhwYWNrZXQgPSB1c2JfbWF4cGFja2V0KGhpZl9kZXYtJmd0O3VkZXYsCiYjNDM7CQkJCSAgICAgIHVzYl9zbmRpbnRwaXBlKGhpZl9kZXYtJmd0O3VkZXYsCiYjNDM7CQkJCQkJICAgICBVU0JfUkVHX09VVF9QSVBFKSk7CiAJc3RydWN0IHVyYiAqdXJiOwogCXN0cnVjdCBjbWRfYnVmICpjbWQ7CiAJaW50IHJldCA9IDA7CiAKJiM0MzsJaWYgKFdBUk5fT05DRShtYXhwYWNrZXQgJmFtcDsmYW1wOyBza2ItJmd0O2xlbiAlIG1heHBhY2tldCA9PSAwLAomIzQzOwkJICAgICAgJiMzNDsldS1ieXRlIGNvbW1hbmQgZmlsbHMgd2hvbGUgVVNCIHBhY2tldHNcbiYjMzQ7LCBza2ItJmd0O2xlbikpCiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsKIAl1cmIgPSB1c2JfYWxsb2NfdXJiKDAsIEdGUF9LRVJORUwpOwogCWlmICh1cmIgPT0gTlVMTCkKIAkJcmV0dXJuIC1FTk9NRU07CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmMKaW5kZXggNmRlNzhhZTg1NzI2OC4uMGI0OWQyY2M5OWYwYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYwpAQCAtNDA1LDcgJiM0Mzs0MDUsNyBAQCBzdGF0aWMgdm9pZCBhdGg5a19yZWdfcm13X2J1ZmZlcih2b2lkICpod19wcml2LAogCWlmIChwcml2LSZndDt3bWktJmd0O211bHRpX3Jtd19pZHggPT0gTUFYX1JNV19DTURfTlVNQkVSKSB7CiAJCXIgPSBhdGg5a193bWlfY21kKHByaXYtJmd0O3dtaSwgV01JX1JFR19STVdfQ01ESUQsCiAJCQkgICh1OCAqKSAmYW1wO3ByaXYtJmd0O3dtaS0mZ3Q7bXVsdGlfcm13LAotCQkJICBzaXplb2Yoc3RydWN0IHJlZ2lzdGVyX3dyaXRlKSAqIHByaXYtJmd0O3dtaS0mZ3Q7bXVsdGlfcm13X2lkeCwKJiM0MzsJCQkgIHNpemVvZihzdHJ1Y3QgcmVnaXN0ZXJfcm13KSAqIHByaXYtJmd0O3dtaS0mZ3Q7bXVsdGlfcm13X2lkeCwKIAkJCSAgKHU4ICopICZhbXA7cnNwX3N0YXR1cywgc2l6ZW9mKHJzcF9zdGF0dXMpLAogCQkJICAxMDApOwogCQlpZiAodW5saWtlbHkocikpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaAppbmRleCA1YzNiNzEwYjhmMzE5Li4yNTZmNDYwOThhNmIxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oCkBAIC0xMjYsNyAmIzQzOzEyNiw4IEBAIGVudW0gd21pX2V2ZW50X2lkIHsKIH07CiAKICNkZWZpbmUgTUFYX0NNRF9OVU1CRVIgNjIKLSNkZWZpbmUgTUFYX1JNV19DTURfTlVNQkVSIDE1CiYjNDM7LyogMTUgZW50cmllcyBtYWtlIDE5MiBieXRlcywgdGhyZWUgZnVsbCBVU0IgcGFja2V0czogbmV2ZXIgZGVsaXZlcmVkLiAqLwomIzQzOyNkZWZpbmUgTUFYX1JNV19DTURfTlVNQkVSIDE0CiAKIHN0cnVjdCByZWdpc3Rlcl93cml0ZSB7CiAJX19iZTMyIHJlZzsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMTI6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzU3NwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDMzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhpcyBQYXRjaCBmb3IgVVNCIFZ1bG5lcmFiaWxpdGllcyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIHBhdGNoIGlzIGFjdHVhbGx5IGRvaW5nLiBJdCBsb29rcyBsaWtlIHdlIGhhdmUgY2hhbmdlcyBhY3Jvc3MgdGhyZWUgZmlsZXMgaW4gdGhlIGBhdGg5a2Agd2lyZWxlc3MgZHJpdmVyOiBgaGlmX3VzYi5jYCwgYGh0Y19kcnZfaW5pdC5jYCwgYW5kIGB3bWkuaGAuIFNwZWNpZmljYWxseToKCiogICBJbiBgaGlmX3VzYi5jYCwgaXQgc2VlbXMgd2UmIzM5O3JlIGFkZGluZyBhIGNoZWNrIHdpdGhpbiBgaGlmX3VzYl9zZW5kX3JlZ291dGAgcmVsYXRlZCB0byBVU0IgcGFja2V0IHNpemUuIFdlIGNhbGN1bGF0ZSBgbWF4cGFja2V0YCB1c2luZyBgdXNiX21heHBhY2tldCgpYCBhbmQgdGhlbiBhZGQgYSBgV0FSTl9PTkNFYCBjYWxsIHRvIHJldHVybiBgLUVJTlZBTGAgaWYgdGhlIHNrYiYjMzk7cyBsZW5ndGggaXMgYSBtdWx0aXBsZSBvZiBgbWF4cGFja2V0YC4gVGhpcyBpcyBpbnRlcmVzdGluZzsgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2h5IHRoZXkmIzM5O3JlIGFkZGluZyB0aGlzLiBJcyB0aGVyZSBhIHBvdGVudGlhbCBidWZmZXIgb3ZlcnJ1biBjb25kaXRpb24gdGhleSYjMzk7cmUgdHJ5aW5nIHRvIHByZXZlbnQgd2l0aCB0aGUgaW50ZWdlciBkaXZpc2lvbiYjMzk7cyBtb2R1bHVzIG9mIHplcm8/IFBlcmhhcHMgYW4gb2ZmLWJ5LW9uZSBvciBkYXRhIGludGVncml0eSBpc3N1ZT8KCiogICBOZXh0LCBpbiBgaHRjX2Rydl9pbml0LmNgLCB0aGUgcGF0Y2ggbW9kaWZpZXMgYSBzaXplIGNhbGN1bGF0aW9uIHdpdGhpbiBgYXRoOWtfcmVnX3Jtd19idWZmZXJgLiBJdCBzZWVtcyB3ZSYjMzk7cmUgc3dpdGNoaW5nIGZyb20gYHN0cnVjdCByZWdpc3Rlcl93cml0ZWAgdG8gYHN0cnVjdCByZWdpc3Rlcl9ybXdgLiBUaGlzIHN1Z2dlc3RzIGEgcG90ZW50aWFsIGNoYW5nZSBpbiB0aGUgdW5kZXJseWluZyBkYXRhIHN0cnVjdHVyZSBiZWluZyB1c2VkIGZvciByZWdpc3RlciByZWFkLW1vZGlmeS13cml0ZSBvcGVyYXRpb25zLCB3aGljaCBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgZnVydGhlci4gSXQgYWxzbyBhcHBlYXJzIHRoZSBgcHJpdi0mZ3Q7d21pLSZndDttdWx0aV9ybXdfaWR4YCB2YWx1ZSB3aWxsIGFsc28gbmVlZCBjaGVja2luZyB3aXRoIHRoYXQgY2hhbmdlLgoKKiAgIEZpbmFsbHksIGluIGB3bWkuaGAsIGBNQVhfUk1XX0NNRF9OVU1CRVJgIGlzIGJlaW5nIGNoYW5nZWQgZnJvbSAxNSB0byAxNC4gVGhpcyBzdWdnZXN0cyBhIGNoYW5nZSBpbiB0aGUgbWF4aW11bSBudW1iZXIgb2YgcmVnaXN0ZXIgcmVhZC1tb2RpZnktd3JpdGUgY29tbWFuZHMgdGhhdCBjYW4gYmUgaXNzdWVkLiBUaGlzIHNlZW1zIHJlbGF0ZWQgdG8gdGhlIGNoYW5nZXMgaW4gYGh0Y19kcnZfaW5pdC5jYC4KCk5vdywgdGhlIGNydWNpYWwgcXVlc3Rpb246IGNhbiB3ZSByZWFjaCB0aGlzIGBhdGg5a19odGNgIGRyaXZlciB0aHJvdWdoIFVTQiBlbXVsYXRpb24/IFllcywgYmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZyBhbmQgcXVpY2sgY2hlY2ssIGBhdGg5a19odGNgIGlzIGluZGVlZCBhIFVTQiB3aXJlbGVzcyBuZXR3b3JrIGRyaXZlci4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNoZWNrIHRoZSBLY29uZmlnIHRvIGNvbmZpcm0gaXRzIGRlcGVuZGVuY2llcy4gSWYgd2UgY2FuIHJlYWNoIGl0LCB0aGVuIHRoaXMgcGF0Y2ggYmVjb21lcyBzaWduaWZpY2FudGx5IG1vcmUgaW50ZXJlc3RpbmcgZnJvbSBhIHNlY3VyaXR5IHBlcnNwZWN0aXZlLiBJdCBpcyBnb29kIHRvIGtub3cgaXQgaXMgcmVhY2hhYmxlIGFuZCwgdGh1cywgcG90ZW50aWFsbHkgdnVsbmVyYWJsZS4gSSYjMzk7bGwgbmVlZCB0byBmb2N1cyBvbiBob3cgdGhlc2UgY2hhbmdlcyBtaWdodCBpbXBhY3QgZnV6emluZyBvciBleHBsb2l0IGRldmVsb3BtZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDEyOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0FUSDlLX0hUQyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc9MTM9Y29uZmlnIEFUSDlLX0JUQ09FWF9TVVBQT1JUXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNC1cdGJvb2wgXCYjMzQ7QXRoZXJvcyBibHVldG9vdGggY29leGlzdGVuY2Ugc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTU6XHRkZXBlbmRzIG9uIChBVEg5SyB8fCBBVEg5S19IVEMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNi1cdGRlZmF1bHQgeVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnPTE1Nj1jb25maWcgQVRIOUtfUENJX05PX0VFUFJPTVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE3MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjE3Mjpjb25maWcgQVRIOUtfSFRDXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNzMtXHR0cmlzdGF0ZSBcJiMzNDtBdGhlcm9zIEhUQyBiYXNlZCB3aXJlbGVzcyBjYXJkcyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTg2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTg3OmNvbmZpZyBBVEg5S19IVENfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTg4LVx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDlrX2h0YyBkZWJ1Z2dpbmdcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjE4OTpcdGRlcGVuZHMgb24gQVRIOUtfSFRDIFx1MDAyNlx1MDAyNiBERUJVR19GU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTkwLVx0c2VsZWN0IEFUSDlLX0NPTU1PTl9ERUJVR1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnPTIwNj1jb25maWcgQVRIOUtfQ09NTU9OX1NQRUNUUkFMXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0yMDctXHRib29sIFwmIzM0O0F0aGVyb3MgYXRoOWsvYXRoOWtfaHRjIHNwZWN0cmFsIHNjYW4gc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MjA4Olx0ZGVwZW5kcyBvbiBBVEg5S19ERUJVR0ZTIHx8IEFUSDlLX0hUQ19ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0yMDktXHRzZWxlY3QgUkVMQVlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU9Njg9YXRoOWtfaHRjLXkgJiM0Mzs9XHRodGNfaHN0Lm8gXFxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtNzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6Nzc6YXRoOWtfaHRjLSQoQ09ORklHX0FUSDlLX0hUQ19ERUJVR0ZTKSAmIzQzOz0gaHRjX2Rydl9kZWJ1Zy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtNzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6Nzk6b2JqLSQoQ09ORklHX0FUSDlLX0hUQykgJiM0Mzs9IGF0aDlrX2h0Yy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtODAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwM19lZXByb20uYz0zMzkwPXN0YXRpYyBib29sIGF0aDlrX2h3X2FyOTMwMF9maWxsX2VlcHJvbShzdHJ1Y3QgYXRoX2h3ICphaClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAzX2VlcHJvbS5jLTM0MDAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAzX2VlcHJvbS5jOjM0MDE6I2lmIGRlZmluZWQoQ09ORklHX0FUSDlLX0RFQlVHRlMpIHx8IGRlZmluZWQoQ09ORklHX0FUSDlLX0hUQ19ERUJVR0ZTKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwM19lZXByb20uYy0zNDAyLXN0YXRpYyB1MzIgYXI5MDAzX2R1bXBfbW9kYWxfZWVwcm9tKGNoYXIgKmJ1ZiwgdTMyIGxlbiwgdTMyIHNpemUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYz0yMzk9c3RhdGljIGlubGluZSB2b2lkIGF0aDlrX3NrYl9xdWV1ZV9jb21wbGV0ZShzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0yNDUtXHR3aGlsZSAoKHNrYiA9IF9fc2tiX2RlcXVldWUocXVldWUpKSAhPSBOVUxMKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjI0NjojaWZkZWYgQ09ORklHX0FUSDlLX0hUQ19ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTI0Ny1cdFx0aW50IGxuID0gc2tiLVx1MDAzZWxlbjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jPTM4Mz1zdGF0aWMgaW50IGhpZl91c2Jfc2VuZF90eChzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00MDYtXHQvKiBNZ210L0JlYWNvbiBmcmFtZXMgZG9uJiMzOTt0IHVzZSB0aGUgVFggYnVmZmVyIHBvb2wgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NDA3Olx0aWYgKCh0eF9jdGwtXHUwMDNldHlwZSA9PSBBVEg5S19IVENfTUdNVCkgfHxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NDA4Olx0ICAgICh0eF9jdGwtXHUwMDNldHlwZSA9PSBBVEg5S19IVENfQkVBQ09OKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00MDktXHRcdHJldCA9IGhpZl91c2Jfc2VuZF9tZ210KGhpZl9kZXYsIHNrYik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00MTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjQxNDpcdGlmICgodHhfY3RsLVx1MDAzZXR5cGUgPT0gQVRIOUtfSFRDX05PUk1BTCkgfHxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NDE1Olx0ICAgICh0eF9jdGwtXHUwMDNldHlwZSA9PSBBVEg5S19IVENfQU1QRFUpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQxNi1cdFx0X19za2JfcXVldWVfdGFpbChcdTAwMjZoaWZfZGV2LVx1MDAzZXR4LnR4X3NrYl9xdWV1ZSwgc2tiKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jPTQ5ND1zdGF0aWMgaW5saW5lIGJvb2wgY2hlY2tfaW5kZXgoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTggaWR4KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNDk5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo1MDA6XHRpZiAoKHR4X2N0bC1cdTAwM2V0eXBlID09IEFUSDlLX0hUQ19BTVBEVSkgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTUwMS1cdCAgICAodHhfY3RsLVx1MDAzZXN0YV9pZHggPT0gaWR4KSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9NTY9ZW51bSBodGNfb3Btb2RlIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6NjU6I2RlZmluZSBBVEg5S19IVENfQU1QRFUgIDFcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo2NjojZGVmaW5lIEFUSDlLX0hUQ19OT1JNQUwgMlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjY3OiNkZWZpbmUgQVRIOUtfSFRDX0JFQUNPTiAzXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6Njg6I2RlZmluZSBBVEg5S19IVENfTUdNVCAgIDRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC02OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo3MDojZGVmaW5lIEFUSDlLX0hUQ19UWF9DVFNPTkxZICAgICAgMHgxXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6NzE6I2RlZmluZSBBVEg5S19IVENfVFhfUlRTQ1RTICAgICAgIDB4MlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTcyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTczPXN0cnVjdCB0eF9mcmFtZV9oZHIge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC03Ny1cdHU4IHRpZG5vO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjc4Olx0X19iZTMyIGZsYWdzOyAvKiBBVEg5S19IVENfVFhfKiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTc5LVx0dTgga2V5X3R5cGU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTE5ND1zdHJ1Y3QgYXRoOWtfaHRjX3RhcmdldF9yeF9zdGF0cyB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTE5OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyMDA6I2RlZmluZSBBVEg5S19IVENfTUFYX1ZJRiAyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MjAxOiNkZWZpbmUgQVRIOUtfSFRDX01BWF9CQ05fVklGIDJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0yMDItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTI0OT1zdHJ1Y3QgYXRoOWtfdmlmX2l0ZXJfZGF0YSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI1My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyNTQ6I2RlZmluZSBBVEg5S19IVENfTUFYX1NUQSA4XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MjU1OiNkZWZpbmUgQVRIOUtfSFRDX01BWF9USUQgOFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI1Ni1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9MjY0PXN0cnVjdCBhdGg5a19odGNfc3RhIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0yNjUtXHR1OCBpbmRleDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyNjY6XHRlbnVtIHRpZF9hZ2dyX3N0YXRlIHRpZF9zdGF0ZVtBVEg5S19IVENfTUFYX1RJRF07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMjY3LVx0c3RydWN0IHdvcmtfc3RydWN0IHJjX3VwZGF0ZV93b3JrO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0yNzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MjcxOiNkZWZpbmUgQVRIOUtfSFRDX1JYQlVGIDI1NlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI3Mi0jZGVmaW5lIEhUQ19SWF9GUkFNRV9IRUFERVJfU0laRSA0MFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD0yODE9c3RydWN0IGF0aDlrX2h0Y19yeCB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI4Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyODc6I2RlZmluZSBBVEg5S19IVENfVFhfQ0xFQU5VUF9JTlRFUlZBTCA1MCAvKiBtcyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI4ODojZGVmaW5lIEFUSDlLX0hUQ19UWF9USU1FT1VUX0lOVEVSVkFMIDMwMDAgLyogbXMgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyODk6I2RlZmluZSBBVEg5S19IVENfVFhfUkVTRVJWRSAxMFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI5MDojZGVmaW5lIEFUSDlLX0hUQ19UWF9USU1FT1VUX0NPVU5UIDQwXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MjkxOiNkZWZpbmUgQVRIOUtfSFRDX1RYX1RIUkVTSE9MRCAoTUFYX1RYX0JVRl9OVU0gLSBBVEg5S19IVENfVFhfUkVTRVJWRSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0yOTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MjkzOiNkZWZpbmUgQVRIOUtfSFRDX09QX1RYX1FVRVVFU19TVE9QIEJJVCgwKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI5NDojZGVmaW5lIEFUSDlLX0hUQ19PUF9UWF9EUkFJTiAgICAgICBCSVQoMSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0yOTUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTMxMT1zdHJ1Y3QgYXRoOWtfaHRjX3R4X2N0bCB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MzEyOlx0dTggdHlwZTsgLyogQVRIOUtfSFRDXyogKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0zMTMtXHR1OCBlcGlkO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD0zMTk9c3RhdGljIGlubGluZSBzdHJ1Y3QgYXRoOWtfaHRjX3R4X2N0bCAqSFRDX1NLQl9DQihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0zMjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MzI4OiNpZmRlZiBDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0zMjktI2RlZmluZSBfX1NUQVRfU0FGRShoaWZfZGV2LCBleHByKVx0ZG8geyAoKGhpZl9kZXYpLVx1MDAzZWh0Y19oYW5kbGUtXHUwMDNlZHJ2X3ByaXYgPyAoZXhwcikgOiAwKTsgfSB3aGlsZSAoMClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9Mzg4PXN0YXRpYyBpbmxpbmUgdm9pZCBhdGg5a19odGNfZXJyX3N0YXRfcngoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0zOTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MzkzOiNlbmRpZiAvKiBDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlMgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0zOTQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTQwOT1zdHJ1Y3QgaHRjX2JlYWNvbiB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTQxNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo0MTY6XHRzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqYnNsb3RbQVRIOUtfSFRDX01BWF9CQ05fVklGXTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC00MTctXHR1MzIgYm1pc3NjbnQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTQ1Nj1zdHJ1Y3QgYXRoOWtfaHRjX3ByaXYge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC00NzgtXHR1OCBzdGFfc2xvdDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo0Nzk6XHR1OCB2aWZfc3RhX3Bvc1tBVEg5S19IVENfTUFYX1ZJRl07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNDgwLVx0dTggbnVtX2lic3NfdmlmO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC01MzUtXHRzdHJ1Y3QgZGVsYXllZF93b3JrIGR1dHlfY3ljbGVfd29yaztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo1MzY6I2lmZGVmIENPTkZJR19BVEg5S19IVENfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTUzNy1cdHN0cnVjdCBhdGg5a19kZWJ1ZyBkZWJ1Zztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9NjQxPWludCBhdGg5a19odGNfcmVzdW1lKHN0cnVjdCBodGNfdGFyZ2V0ICpodGNfaGFuZGxlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC02NDItI2VuZGlmXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6NjQzOiNpZmRlZiBDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC02NDQtaW50IGF0aDlrX2h0Y19pbml0X2RlYnVnKHN0cnVjdCBhdGhfaHcgKmFoKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9NjQ4PXN0YXRpYyBpbmxpbmUgdm9pZCBhdGg5a19odGNfZGVpbml0X2RlYnVnKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNjUwLX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo2NTE6I2VuZGlmIC8qIENPTkZJR19BVEg5S19IVENfREVCVUdGUyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTY1Mi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYz0xMTE9c3RhdGljIHZvaWQgYXRoOWtfaHRjX2JlYWNvbl9jb25maWdfYXAoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTExNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jOjExNzpcdGF0aDlrX2Ntbl9iZWFjb25fY29uZmlnX2FwKGFoLCBjb25mLCBBVEg5S19IVENfTUFYX0JDTl9WSUYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMTE4LVx0YXRoOWtfaHRjX2JlYWNvbl9pbml0KHByaXYsIGNvbmYsIGZhbHNlKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYz0xOTE9c3RhdGljIHZvaWQgYXRoOWtfaHRjX3NlbmRfYmVhY29uKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYy0yNDItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYzoyNDM6XHR0eF9jdGwtXHUwMDNldHlwZSA9IEFUSDlLX0hUQ19CRUFDT047XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYy0yNDQtXHR0eF9jdGwtXHUwMDNlZXBpZCA9IHByaXYtXHUwMDNlYmVhY29uX2VwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jPTI2ND1zdGF0aWMgaW50IGF0aDlrX2h0Y19jaG9vc2VfYnNsb3Qoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTI3Ni1cdHRzZnR1ID0gVFNGX1RPX1RVKHRzZiBcdTAwM2VcdTAwM2UgMzIsIHRzZik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYzoyNzc6XHRzbG90ID0gKCh0c2Z0dSAlIGludHZhbCkgKiBBVEg5S19IVENfTUFYX0JDTl9WSUYpIC8gaW50dmFsO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmM6Mjc4Olx0c2xvdCA9IEFUSDlLX0hUQ19NQVhfQkNOX1ZJRiAtIHNsb3QgLSAxO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMjc5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jPTMyNT12b2lkIGF0aDlrX2h0Y19hc3NpZ25fYnNsb3Qoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTMzMi1cdHNwaW5fbG9ja19iaChcdTAwMjZwcml2LVx1MDAzZWJlYWNvbl9sb2NrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jOjMzMzpcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFUSDlLX0hUQ19NQVhfQkNOX1ZJRjsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTMzNC1cdFx0aWYgKHByaXYtXHUwMDNlYmVhY29uLmJzbG90W2ldID09IE5VTEwpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYz0zNjU9dm9pZCBhdGg5a19odGNfc2V0X3RzZmFkanVzdChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMzgwLVx0ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYzozODE6XHR0c2ZhZGp1c3QgPSBjdXJfY29uZi1cdTAwM2ViZWFjb25faW50ZXJ2YWwgKiBhdnAtXHUwMDNlYnNsb3QgLyBBVEg5S19IVENfTUFYX0JDTl9WSUY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYy0zODItXHRhdnAtXHUwMDNldHNmYWRqdXN0ID0gY3B1X3RvX2xlNjQoVFVfVE9fVVNFQyh0c2ZhZGp1c3QpKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jPTM5OD1zdGF0aWMgY29uc3QgY2hhciBhdGg5a19odGNfZ3N0cmluZ3Nfc3RhdHNbXVtFVEhfR1NUUklOR19MRU5dID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMtNDE4LX07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jOjQxOTojZGVmaW5lIEFUSDlLX0hUQ19TU1RBVFNfTEVOIEFSUkFZX1NJWkUoYXRoOWtfaHRjX2dzdHJpbmdzX3N0YXRzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYy00MjAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYz00MzA9aW50IGF0aDlrX2h0Y19nZXRfZXRfc3NldF9jb3VudChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jLTQzMy1cdGlmIChzc2V0ID09IEVUSF9TU19TVEFUUylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM6NDM0Olx0XHRyZXR1cm4gQVRIOUtfSFRDX1NTVEFUU19MRU47XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jLTQzNS1cdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM9NDQ4PXZvaWQgYXRoOWtfaHRjX2dldF9ldF9zdGF0cyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jLTQ3My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM6NDc0Olx0V0FSTl9PTihpICE9IEFUSDlLX0hUQ19TU1RBVFNfTEVOKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMtNDc1LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM9NjA2PXN0YXRpYyBpbnQgYXRoOWtfaW5pdF9wcml2KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmMtNjczLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jOjY3NDpcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFUSDlLX0hUQ19NQVhfQkNOX1ZJRjsgaSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmMtNjc1LVx0XHRwcml2LVx1MDAzZWJlYWNvbi5ic2xvdFtpXSA9IE5VTEw7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jPTE4ND12b2lkIGF0aDlrX2h0Y19yZXNldChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTIzMy1cdG1vZF90aW1lcihcdTAwMjZwcml2LVx1MDAzZXR4LmNsZWFudXBfdGltZXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6MjM0Olx0XHQgIGppZmZpZXMgJiM0MzsgbXNlY3NfdG9famlmZmllcyhBVEg5S19IVENfVFhfQ0xFQU5VUF9JTlRFUlZBTCkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTIzNS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM9MjQwPXN0YXRpYyBpbnQgYXRoOWtfaHRjX3NldF9jaGFubmVsKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMzExLVx0bW9kX3RpbWVyKFx1MDAyNnByaXYtXHUwMDNldHguY2xlYW51cF90aW1lcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzozMTI6XHRcdCAgamlmZmllcyAmIzQzOyBtc2Vjc190b19qaWZmaWVzKEFUSDlLX0hUQ19UWF9DTEVBTlVQX0lOVEVSVkFMKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMzEzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYz0zNTA9c3RhdGljIGludCBhdGg5a19odGNfYWRkX21vbml0b3JfaW50ZXJmYWNlKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMzU3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjM1ODpcdGlmICgocHJpdi1cdTAwM2VudmlmcyBcdTAwM2U9IEFUSDlLX0hUQ19NQVhfVklGKSB8fFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjM1OTpcdCAgICAocHJpdi1cdTAwM2Vuc3RhdGlvbnMgXHUwMDNlPSBBVEg5S19IVENfTUFYX1NUQSkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0zNjAtXHRcdHJldCA9IC1FTk9CVUZTO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0zNjQtXHRzdGFfaWR4ID0gZmZ6KHByaXYtXHUwMDNlc3RhX3Nsb3QpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjM2NTpcdGlmICgoc3RhX2lkeCBcdTAwM2MgMCkgfHwgKHN0YV9pZHggXHUwMDNlIEFUSDlLX0hUQ19NQVhfU1RBKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTM2Ni1cdFx0cmV0ID0gLUVOT0JVRlM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jPTQ2Nj1zdGF0aWMgaW50IGF0aDlrX2h0Y19hZGRfc3RhdGlvbihzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTQ3Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzo0Nzg6XHRpZiAocHJpdi1cdTAwM2Vuc3RhdGlvbnMgXHUwMDNlPSBBVEg5S19IVENfTUFYX1NUQSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy00NzktXHRcdHJldHVybiAtRU5PQlVGUztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtNDgxLVx0c3RhX2lkeCA9IGZmeihwcml2LVx1MDAzZXN0YV9zbG90KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzo0ODI6XHRpZiAoKHN0YV9pZHggXHUwMDNjIDApIHx8IChzdGFfaWR4IFx1MDAzZSBBVEg5S19IVENfTUFYX1NUQSkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtNDgzLVx0XHRyZXR1cm4gLUVOT0JVRlM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jPTcwMj1zdGF0aWMgaW50IGF0aDlrX2h0Y190eF9hZ2dyX29wZXIoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy03MTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6NzE0Olx0aWYgKHRpZCBcdTAwM2U9IEFUSDlLX0hUQ19NQVhfVElEKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTcxNS1cdFx0cmV0dXJuIC1FSU5WQUw7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jPTkwNz1zdGF0aWMgaW50IGF0aDlrX2h0Y19zdGFydChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtOTYwLVx0c3Bpbl9sb2NrX2JoKFx1MDAyNnByaXYtXHUwMDNldHgudHhfbG9jayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6OTYxOlx0cHJpdi1cdTAwM2V0eC5mbGFncyBcdTAwMjY9IH5BVEg5S19IVENfT1BfVFhfUVVFVUVTX1NUT1A7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtOTYyLVx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2cHJpdi1cdTAwM2V0eC50eF9sb2NrKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtOTY2LVx0bW9kX3RpbWVyKFx1MDAyNnByaXYtXHUwMDNldHguY2xlYW51cF90aW1lcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzo5Njc6XHRcdCAgamlmZmllcyAmIzQzOyBtc2Vjc190b19qaWZmaWVzKEFUSDlLX0hUQ19UWF9DTEVBTlVQX0lOVEVSVkFMKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtOTY4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYz0xNjU4PXN0YXRpYyBpbnQgYXRoOWtfaHRjX2FtcGR1X2FjdGlvbihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMTY4OC1cdGNhc2UgSUVFRTgwMjExX0FNUERVX1RYX09QRVJBVElPTkFMOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjE2ODk6XHRcdGlmICh0aWQgXHUwMDNlPSBBVEg5S19IVENfTUFYX1RJRCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTE2OTAtXHRcdFx0cmV0ID0gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM9MTg3ND1zdHJ1Y3QgaWVlZTgwMjExX29wcyBhdGg5a19odGNfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0xOTA2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjE5MDc6I2lmZGVmIENPTkZJR19BVEg5S19IVENfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTE5MDgtXHQuZ2V0X2V0X3NzZXRfY291bnQgID0gYXRoOWtfaHRjX2dldF9ldF9zc2V0X2NvdW50LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz0yMz1zdGF0aWMgY29uc3QgaW50IHN1YnR5cGVfdHhxX3RvX2h3cVtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0yOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzozMDojZGVmaW5lIEFUSDlLX0hUQ19JTklUX1RYUShzdWJ0eXBlKSBkbyB7XHRcdFx0XFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0zMS1cdFx0cWkudHFpX3N1YnR5cGUgPSBzdWJ0eXBlX3R4cV90b19od3Fbc3VidHlwZV07XHRcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz01Nj12b2lkIGF0aDlrX2h0Y19jaGVja19zdG9wX3F1ZXVlcyhzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTU5LVx0cHJpdi1cdTAwM2V0eC5xdWV1ZWRfY250JiM0MzsmIzQzOztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo2MDpcdGlmICgocHJpdi1cdTAwM2V0eC5xdWV1ZWRfY250IFx1MDAzZT0gQVRIOUtfSFRDX1RYX1RIUkVTSE9MRCkgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NjE6XHQgICAgIShwcml2LVx1MDAzZXR4LmZsYWdzIFx1MDAyNiBBVEg5S19IVENfT1BfVFhfUVVFVUVTX1NUT1ApKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NjI6XHRcdHByaXYtXHUwMDNldHguZmxhZ3MgfD0gQVRIOUtfSFRDX09QX1RYX1FVRVVFU19TVE9QO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTYzLVx0XHRpZWVlODAyMTFfc3RvcF9xdWV1ZXMocHJpdi1cdTAwM2Vodyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTY4PXZvaWQgYXRoOWtfaHRjX2NoZWNrX3dha2VfcXVldWVzKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNzAtXHRzcGluX2xvY2tfYmgoXHUwMDI2cHJpdi1cdTAwM2V0eC50eF9sb2NrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo3MTpcdGlmICgocHJpdi1cdTAwM2V0eC5xdWV1ZWRfY250IFx1MDAzYyBBVEg5S19IVENfVFhfVEhSRVNIT0xEKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo3MjpcdCAgICAocHJpdi1cdTAwM2V0eC5mbGFncyBcdTAwMjYgQVRIOUtfSFRDX09QX1RYX1FVRVVFU19TVE9QKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjczOlx0XHRwcml2LVx1MDAzZXR4LmZsYWdzIFx1MDAyNj0gfkFUSDlLX0hUQ19PUF9UWF9RVUVVRVNfU1RPUDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy03NC1cdFx0aWVlZTgwMjExX3dha2VfcXVldWVzKHByaXYtXHUwMDNlaHcpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz0yMTQ9c3RhdGljIHZvaWQgYXRoOWtfaHRjX3R4X21nbXQoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0yNDAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6MjQxOlx0dHhfY3RsLVx1MDAzZXR5cGUgPSBBVEg5S19IVENfTUdNVDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0yNDItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTI2MD1zdGF0aWMgdm9pZCBhdGg5a19odGNfdHhfZGF0YShzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTI5Mi1cdGlmICh0eF9pbmZvLVx1MDAzZWZsYWdzIFx1MDAyNiBJRUVFODAyMTFfVFhfQ1RMX0FNUERVKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6MjkzOlx0XHR0eF9jdGwtXHUwMDNldHlwZSA9IEFUSDlLX0hUQ19BTVBEVTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzoyOTQ6XHRcdHR4X2hkci5kYXRhX3R5cGUgPSBBVEg5S19IVENfQU1QRFU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMjk1LVx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzoyOTY6XHRcdHR4X2N0bC1cdTAwM2V0eXBlID0gQVRIOUtfSFRDX05PUk1BTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzoyOTc6XHRcdHR4X2hkci5kYXRhX3R5cGUgPSBBVEg5S19IVENfTk9STUFMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTI5OC1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMzEyLVx0XHRpZiAoc2tiLVx1MDAzZWxlbiBcdTAwM2UgcHJpdi1cdTAwM2Vody1cdTAwM2V3aXBoeS1cdTAwM2VydHNfdGhyZXNob2xkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjMxMzpcdFx0XHRmbGFncyB8PSBBVEg5S19IVENfVFhfUlRTQ1RTO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTMxNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0zMTUtXHQvKiBDVFMtdG8tc2VsZiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjMxNjpcdGlmICghKGZsYWdzIFx1MDAyNiBBVEg5S19IVENfVFhfUlRTQ1RTKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0zMTctXHQgICAgKHZpZiBcdTAwMjZcdTAwMjYgdmlmLVx1MDAzZWJzc19jb25mLnVzZV9jdHNfcHJvdCkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6MzE4Olx0XHRmbGFncyB8PSBBVEg5S19IVENfVFhfQ1RTT05MWTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0zMTktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTM5Mj1zdGF0aWMgaW5saW5lIGJvb2wgX19hdGg5a19odGNfY2hlY2tfdHhfYWdncihzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTM5Ny1cdHNwaW5fbG9ja19iaChcdTAwMjZwcml2LVx1MDAzZXR4LnR4X2xvY2spO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjM5ODpcdGlmICgodGlkIFx1MDAzYyBBVEg5S19IVENfTUFYX1RJRCkgXHUwMDI2XHUwMDI2IChpc3RhLVx1MDAzZXRpZF9zdGF0ZVt0aWRdID09IEFHR1JfU1RPUCkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMzk5LVx0XHRyZXQgPSB0cnVlO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz00NDU9c3RhdGljIHZvaWQgYXRoOWtfaHRjX3R4X3Byb2Nlc3Moc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00NzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NDc5Olx0aWYgKHR4cy1cdTAwM2V0c19mbGFncyBcdTAwMjYgQVRIOUtfSFRDX1RYU1RBVF9BQ0spIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00ODAtXHRcdHR4X2luZm8tXHUwMDNlZmxhZ3MgfD0gSUVFRTgwMjExX1RYX1NUQVRfQUNLO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00ODQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NDg1Olx0aWYgKHR4cy1cdTAwM2V0c19mbGFncyBcdTAwMjYgQVRIOUtfSFRDX1RYU1RBVF9GSUxUKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ4Ni1cdFx0dHhfaW5mby1cdTAwM2VmbGFncyB8PSBJRUVFODAyMTFfVFhfU1RBVF9UWF9GSUxURVJFRDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00ODctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NDg4Olx0aWYgKHR4cy1cdTAwM2V0c19mbGFncyBcdTAwMjYgQVRIOUtfSFRDX1RYU1RBVF9SVENfQ1RTKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ4OS1cdFx0cmF0ZS1cdTAwM2VmbGFncyB8PSBJRUVFODAyMTFfVFhfUkNfVVNFX1JUU19DVFM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ5MS1cdHJhdGUtXHUwMDNlY291bnQgPSAxO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjQ5MjpcdHJhdGUtXHUwMDNlaWR4ID0gTVModHhzLVx1MDAzZXRzX3JhdGUsIEFUSDlLX0hUQ19UWFNUQVRfUkFURSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDkzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjQ5NDpcdGlmICh0eHMtXHUwMDNldHNfZmxhZ3MgXHUwMDI2IEFUSDlLX0hUQ19UWFNUQVRfTUNTKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDk1LVx0XHRyYXRlLVx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9UWF9SQ19NQ1M7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDk2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjQ5NzpcdFx0aWYgKHR4cy1cdTAwM2V0c19mbGFncyBcdTAwMjYgQVRIOUtfSFRDX1RYU1RBVF9DVzQwKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ5OC1cdFx0XHRyYXRlLVx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9UWF9SQ180MF9NSFpfV0lEVEg7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NDk5Olx0XHRpZiAodHhzLVx1MDAzZXRzX2ZsYWdzIFx1MDAyNiBBVEg5S19IVENfVFhTVEFUX1NHSSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy01MDAtXHRcdFx0cmF0ZS1cdTAwM2VmbGFncyB8PSBJRUVFODAyMTFfVFhfUkNfU0hPUlRfR0k7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTUzOT12b2lkIGF0aDlrX2h0Y190eF9kcmFpbihzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTU0My1cdHNwaW5fbG9ja19iaChcdTAwMjZwcml2LVx1MDAzZXR4LnR4X2xvY2spO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjU0NDpcdHByaXYtXHUwMDNldHguZmxhZ3MgfD0gQVRIOUtfSFRDX09QX1RYX0RSQUlOO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTU0NS1cdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnByaXYtXHUwMDNldHgudHhfbG9jayk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTU3My1cdHNwaW5fbG9ja19iaChcdTAwMjZwcml2LVx1MDAzZXR4LnR4X2xvY2spO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjU3NDpcdHByaXYtXHUwMDNldHguZmxhZ3MgXHUwMDI2PSB+QVRIOUtfSFRDX09QX1RYX0RSQUlOO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTU3NS1cdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnByaXYtXHUwMDNldHgudHhfbG9jayk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTU3OD12b2lkIGF0aDlrX3R4X2ZhaWxlZF90YXNrbGV0KHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNTgyLVx0c3Bpbl9sb2NrKFx1MDAyNnByaXYtXHUwMDNldHgudHhfbG9jayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NTgzOlx0aWYgKHByaXYtXHUwMDNldHguZmxhZ3MgXHUwMDI2IEFUSDlLX0hUQ19PUF9UWF9EUkFJTikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTU4NC1cdFx0c3Bpbl91bmxvY2soXHUwMDI2cHJpdi1cdTAwM2V0eC50eF9sb2NrKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9NjE4PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiogYXRoOWtfaHRjX3R4X2dldF9wYWNrZXQoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy02MjQtXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjYyNTpcdHU4IGVwaWQgPSBNUyh0eHMtXHUwMDNldHNfcmF0ZSwgQVRIOUtfSFRDX1RYU1RBVF9FUElEKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy02MjYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTcxNj1zdGF0aWMgaW5saW5lIGJvb2wgY2hlY2tfcGFja2V0KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNzI0LVx0XHQgICAgICAgdHhfY3RsLVx1MDAzZXRpbWVzdGFtcCAmIzQzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjcyNTpcdFx0ICAgICAgIG1zZWNzX3RvX2ppZmZpZXMoQVRIOUtfSFRDX1RYX1RJTUVPVVRfSU5URVJWQUwpKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTcyNi1cdFx0YXRoX2RiZyhjb21tb24sIFhNSVQsIFwmIzM0O0Ryb3BwaW5nIGEgcGFja2V0IGR1ZSB0byBUWCB0aW1lb3V0XFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9NzYxPXZvaWQgYXRoOWtfaHRjX3R4X2NsZWFudXBfdGltZXIoc3RydWN0IHRpbWVyX2xpc3QgKnQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTc3Ni1cdFx0XHRcdGV2ZW50LVx1MDAzZXR4cy5jb29raWUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6Nzc3Olx0XHRcdFx0TVMoZXZlbnQtXHUwMDNldHhzLnRzX3JhdGUsIEFUSDlLX0hUQ19UWFNUQVRfRVBJRCkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTc3OC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNzg0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjc4NTpcdFx0aWYgKCYjNDM7JiM0MztldmVudC1cdTAwM2Vjb3VudCBcdTAwM2U9IEFUSDlLX0hUQ19UWF9USU1FT1VUX0NPVU5UKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNzg2LVx0XHRcdGxpc3RfZGVsKFx1MDAyNmV2ZW50LVx1MDAzZWxpc3QpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy04MDUtXHRtb2RfdGltZXIoXHUwMDI2cHJpdi1cdTAwM2V0eC5jbGVhbnVwX3RpbWVyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjgwNjpcdFx0ICBqaWZmaWVzICYjNDM7IG1zZWNzX3RvX2ppZmZpZXMoQVRIOUtfSFRDX1RYX0NMRUFOVVBfSU5URVJWQUwpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy04MDctfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz04Mjc9Ym9vbCBhdGg5a19odGNfdHhxX3NldHVwKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdiwgaW50IHN1YnR5cGUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTgzNC1cdG1lbXNldChcdTAwMjZxaSwgMCwgc2l6ZW9mKHFpKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6ODM1Olx0QVRIOUtfSFRDX0lOSVRfVFhRKHN1YnR5cGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTgzNi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9ODUyPWludCBhdGg5a19odGNfY2FicV9zZXR1cChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTg1Ni1cdG1lbXNldChcdTAwMjZxaSwgMCwgc2l6ZW9mKHFpKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6ODU3Olx0QVRIOUtfSFRDX0lOSVRfVFhRKDApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTg1OC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9MTE4Nz1pbnQgYXRoOWtfcnhfaW5pdChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTExOTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6MTE5NDpcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFUSDlLX0hUQ19SWEJVRjsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0xMTk1LVx0XHRzdHJ1Y3QgYXRoOWtfaHRjX3J4YnVmICpyeGJ1ZiA9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jPTEzOD12b2lkIGF0aDlrX3dtaV9ldmVudF90YXNrbGV0KHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmMtMTc4LVx0XHRcdHNwaW5fbG9ja19iaChcdTAwMjZwcml2LVx1MDAzZXR4LnR4X2xvY2spO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jOjE3OTpcdFx0XHRpZiAocHJpdi1cdTAwM2V0eC5mbGFncyBcdTAwMjYgQVRIOUtfSFRDX09QX1RYX0RSQUlOKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmMtMTgwLVx0XHRcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2cHJpdi1cdTAwM2V0eC50eF9sb2NrKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg9Mzk9c3RydWN0IHdtaV9ldmVudF9zd2JhIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmgtNTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6NTE6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX0FDSyAgICAgICAgQklUKDApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6NTI6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX0ZJTFQgICAgICAgQklUKDEpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6NTM6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX1JUQ19DVFMgICAgQklUKDIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6NTQ6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX01DUyAgICAgICAgQklUKDMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6NTU6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX0NXNDAgICAgICAgQklUKDQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6NTY6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX1NHSSAgICAgICAgQklUKDUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmgtNTctXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oLTYzLSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oOjY0OiNkZWZpbmUgQVRIOUtfSFRDX1RYU1RBVF9SQVRFICAgICAgIDB4MGZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo2NTojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfUkFURV9TICAgICAwXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmgtNjYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6Njc6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX0VQSUQgICAgICAgMHhmMFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oOjY4OiNkZWZpbmUgQVRIOUtfSFRDX1RYU1RBVF9FUElEX1MgICAgIDRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaC02OS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAxMjo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjkxNQoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDMyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipDaGVja2luZyBBVEg5S19IVEMgRGVwZW5kZW5jaWVzKioKClJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBzdHJhaWdodCBpbi4gSSBuZWVkIHRvIHBpbnBvaW50IHRoZSAqZXhhY3QqIGRlcGVuZGVuY2llcyBmb3IgYEFUSDlLX0hUQ2AuIEkga25vdyBpdCYjMzk7cyBhIGNyaXRpY2FsIG1vZHVsZSwgc28gSSBjYW4mIzM5O3QgYWZmb3JkIGFueSBhc3N1bXB0aW9ucyBoZXJlLiBUaGUgbW9zdCByZWxpYWJsZSBwbGFjZSB0byBnZXQgdGhlIGRlZmluaXRpdmUgYW5zd2VyIG9uIGRlcGVuZGVuY2llcywgcGFydGljdWxhcmx5IGZvciBhIGRyaXZlciBsaWtlIHRoaXMsIGlzIGFsd2F5cyB0aGUgYEtjb25maWdgIGZpbGUgaW4gaXRzIGRpcmVjdG9yeS4gVGhhdCYjMzk7bGwgYmUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnYC4gTm8gbmVlZCB0byBndWVzcyBvciByZWx5IG9uIG91dGRhdGVkIGRvY3VtZW50YXRpb247IHRoZSBLY29uZmlnIGlzIHRoZSBzb3VyY2Ugb2YgdHJ1dGggZm9yIHRoZSBidWlsZCBzeXN0ZW0uIExldCYjMzk7cyBzZWUgd2hhdCBpdCYjMzk7cyB0aWVkIHRvLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDEyOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE3MDpcdFx0ICBJZiB1bnN1cmUgc2F5IE4uXG4gMTcxOlx0XG4gMTcyOlx0Y29uZmlnIEFUSDlLX0hUQ1xuIDE3MzpcdFx0dHJpc3RhdGUgXCYjMzQ7QXRoZXJvcyBIVEMgYmFzZWQgd2lyZWxlc3MgY2FyZHMgc3VwcG9ydFwmIzM0O1xuIDE3NDpcdFx0ZGVwZW5kcyBvbiBVU0IgXHUwMDI2XHUwMDI2IE1BQzgwMjExXG4gMTc1Olx0XHRzZWxlY3QgTUFDODAyMTFfTEVEUyBpZiBMRURTX0NMQVNTPXkgfHwgTEVEU19DTEFTUz1NQUM4MDIxMVxuIDE3NjpcdFx0c2VsZWN0IEFUSDlLX0hXXG4gMTc3Olx0XHRzZWxlY3QgQVRIOUtfQ09NTU9OXG4gMTc4Olx0XHRoZWxwXG4gMTc5Olx0XHQgIFN1cHBvcnQgZm9yIEF0aGVyb3MgSFRDIGJhc2VkIGNhcmRzLlxuIDE4MDpcdFx0ICBDaGlwc2V0cyBzdXBwb3J0ZWQ6IEFSOTI3MVxuIDE4MTpcdFxuIDE4MjpcdFx0ICBGb3IgbW9yZSBpbmZvcm1hdGlvbjpcbiAxODM6XHRcdCAgaHR0cHM6Ly93aXJlbGVzcy53aWtpLmtlcm5lbC5vcmcvZW4vdXNlcnMvRHJpdmVycy9hdGg5a19odGNcbiAxODQ6XHRcbiAxODU6XHRcdCAgVGhlIGJ1aWx0IG1vZHVsZSB3aWxsIGJlIGF0aDlrX2h0Yy5cbiAxODY6XHRcbiAxODc6XHRjb25maWcgQVRIOUtfSFRDX0RFQlVHRlNcbiAxODg6XHRcdGJvb2wgXCYjMzQ7QXRoZXJvcyBhdGg5a19odGMgZGVidWdnaW5nXCYjMzQ7XG4gMTg5Olx0XHRkZXBlbmRzIG9uIEFUSDlLX0hUQyBcdTAwMjZcdTAwMjYgREVCVUdfRlNcbiAxOTA6XHRcdHNlbGVjdCBBVEg5S19DT01NT05fREVCVUdcbiAxOTE6XHRcdGhlbHBcbiAxOTI6XHRcdCAgU2F5IFksIGlmIHlvdSBuZWVkIGFjY2VzcyB0byBhdGg5a19odGMmIzM5O3Mgc3RhdGlzdGljcy5cbiAxOTM6XHRcdCAgQXMgd2VsbCBhcyBhY2Nlc3MgdG8gdGhlIEZGVC9zcGVjdHJhbCBkYXRhLlxuIDE5NDpcdFxuIDE5NTpcdGNvbmZpZyBBVEg5S19IV1JOR1xuIDE5NjpcdFx0Ym9vbCBcJiMzNDtSYW5kb20gbnVtYmVyIGdlbmVyYXRvciBzdXBwb3J0XCYjMzQ7XG4gMTk3Olx0XHRkZXBlbmRzIG9uIEFUSDlLIFx1MDAyNlx1MDAyNiAoSFdfUkFORE9NID0geSB8fCBIV19SQU5ET00gPSBBVEg5SylcbiAxOTg6XHRcdGRlZmF1bHQgblxuIDE5OTpcdFx0aGVscFxuIDIwMDpcdFx0ICBUaGlzIG9wdGlvbiBpbmNvcnBvcmF0ZXMgdGhlIEFEQyByZWdpc3RlciBvdXRwdXQgYXMgYSBzb3VyY2Ugb2ZcbiAyMDE6XHRcdCAgcmFuZG9tbmVzcyBpbnRvIExpbnV4IGVudHJvcHkgcG9vbCAoL2Rldi91cmFuZG9tIGFuZCAvZGV2L3JhbmRvbSlcbiAyMDI6XHRcbiAyMDM6XHRcdCAgU2F5IFksIGZlZWRzIHRoZSBlbnRyb3B5IGRpcmVjdGx5IGZyb20gdGhlIFdpRmkgZHJpdmVyIHRvIHRoZSBpbnB1dFxuIDIwNDpcdFx0ICBwb29sLlxuIDIwNTpcdFxuIDIwNjpcdGNvbmZpZyBBVEg5S19DT01NT05fU1BFQ1RSQUxcbiAyMDc6XHRcdGJvb2wgXCYjMzQ7QXRoZXJvcyBhdGg5ay9hdGg5a19odGMgc3BlY3RyYWwgc2NhbiBzdXBwb3J0XCYjMzQ7XG4gMjA4Olx0XHRkZXBlbmRzIG9uIEFUSDlLX0RFQlVHRlMgfHwgQVRIOUtfSFRDX0RFQlVHRlNcbiAyMDk6XHRcdHNlbGVjdCBSRUxBWVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDEyOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3Nzg4CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogNTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbm5lY3Rpb24gYmV0d2VlbiB0aGVzZSB0d28gZnVuY3Rpb25zIGFuZCBob3cgdGhleSYjMzk7cmUgYmVpbmcgdXRpbGl6ZWQgaW4gdGhlIGNvZGUuIEkmIzM5O2xsIHN0YXJ0IGJ5IGV4YW1pbmluZyBgaGlmX3VzYi5jYCBhbmQgYGh0Y19kcnZfaW5pdC5jYC4gTXkgcHJpbWFyeSBmb2N1cyBpcyBvbiBob3cgYGhpZl91c2Jfc2VuZF9yZWdvdXRgIGFuZCBgYXRoOWtfcmVnX3Jtd19idWZmZXJgIGFyZSB1c2VkLiBJIHdhbnQgdG8gdHJhY2UgdGhlIGNhbGwgcGF0aHMgdG8gdGhlc2UgZnVuY3Rpb25zIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHRzIGluIHdoaWNoIHRoZXkgb3BlcmF0ZSBhbmQgaG93IHRoZSBzeXN0ZW0gZXZlbnR1YWxseSByZWFjaGVzIHRoZWlyIGV4ZWN1dGlvbi4gVW5kZXJzdGFuZGluZyB0aGVzZSBpbnRlcmNvbm5lY3Rpb25zIHdpbGwgbGlrZWx5IGdpdmUgbWUgaW5zaWdodHMgaW50byBob3cgdGhlIHJlZ2lzdGVyIG91dHB1dCBpcyBiZWluZyBoYW5kbGVkIGFuZCBob3cgaXQgcmVsYXRlcyB0byB0aGUgYnJvYWRlciBzeXN0ZW0gaW5pdGlhbGl6YXRpb24gd2l0aGluIHRoZSBIVEMgZHJpdmVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDEyOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDk1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgOTU6XHRcdGtmcmVlX3NrYihjbWQtXHUwMDNlc2tiKTtcbiAgOTY6XHRcdGtmcmVlKGNtZCk7XG4gIDk3Olx0fVxuICA5ODpcdFxuICA5OTpcdHN0YXRpYyBpbnQgaGlmX3VzYl9zZW5kX3JlZ291dChzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYsXG4gMTAwOlx0XHRcdFx0ICAgICAgIHN0cnVjdCBza19idWZmICpza2IpXG4gMTAxOlx0e1xuIDEwMjpcdFx0dTE2IG1heHBhY2tldCA9IHVzYl9tYXhwYWNrZXQoaGlmX2Rldi1cdTAwM2V1ZGV2LFxuIDEwMzpcdFx0XHRcdFx0ICAgICAgdXNiX3NuZGludHBpcGUoaGlmX2Rldi1cdTAwM2V1ZGV2LFxuIDEwNDpcdFx0XHRcdFx0XHRcdCAgICAgVVNCX1JFR19PVVRfUElQRSkpO1xuIDEwNTpcdFx0c3RydWN0IHVyYiAqdXJiO1xuIDEwNjpcdFx0c3RydWN0IGNtZF9idWYgKmNtZDtcbiAxMDc6XHRcdGludCByZXQgPSAwO1xuIDEwODpcdFxuIDEwOTpcdFx0aWYgKFdBUk5fT05DRShtYXhwYWNrZXQgXHUwMDI2XHUwMDI2IHNrYi1cdTAwM2VsZW4gJSBtYXhwYWNrZXQgPT0gMCxcbiAxMTA6XHRcdFx0ICAgICAgXCYjMzQ7JXUtYnl0ZSBjb21tYW5kIGZpbGxzIHdob2xlIFVTQiBwYWNrZXRzXFxuXCYjMzQ7LCBza2ItXHUwMDNlbGVuKSlcbiAxMTE6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gMTEyOlx0XG4gMTEzOlx0XHR1cmIgPSB1c2JfYWxsb2NfdXJiKDAsIEdGUF9LRVJORUwpO1xuIDExNDpcdFx0aWYgKHVyYiA9PSBOVUxMKVxuIDExNTpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiAxMTY6XHRcbiAxMTc6XHRcdGNtZCA9IGt6YWxsb2Nfb2JqKCpjbWQpO1xuIDExODpcdFx0aWYgKGNtZCA9PSBOVUxMKSB7XG4gMTE5Olx0XHRcdHVzYl9mcmVlX3VyYih1cmIpO1xuIDEyMDpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiAxMjE6XHRcdH1cbiAxMjI6XHRcbiAxMjM6XHRcdGNtZC1cdTAwM2Vza2IgPSBza2I7XG4gMTI0Olx0XHRjbWQtXHUwMDNlaGlmX2RldiA9IGhpZl9kZXY7XG4gMTI1Olx0XG4gMTI2Olx0XHR1c2JfZmlsbF9pbnRfdXJiKHVyYiwgaGlmX2Rldi1cdTAwM2V1ZGV2LFxuIDEyNzpcdFx0XHRcdCB1c2Jfc25kaW50cGlwZShoaWZfZGV2LVx1MDAzZXVkZXYsIFVTQl9SRUdfT1VUX1BJUEUpLFxuIDEyODpcdFx0XHRcdCBza2ItXHUwMDNlZGF0YSwgc2tiLVx1MDAzZWxlbixcbiAxMjk6XHRcdFx0XHQgaGlmX3VzYl9yZWdvdXRfY2IsIGNtZCwgMSk7XG4gMTMwOlx0XG4gMTMxOlx0XHR1c2JfYW5jaG9yX3VyYih1cmIsIFx1MDAyNmhpZl9kZXYtXHUwMDNlcmVnb3V0X3N1Ym1pdHRlZCk7XG4gMTMyOlx0XHRyZXQgPSB1c2Jfc3VibWl0X3VyYih1cmIsIEdGUF9LRVJORUwpO1xuIDEzMzpcdFx0aWYgKHJldCkge1xuIDEzNDpcdFx0XHR1c2JfdW5hbmNob3JfdXJiKHVyYik7XG4gMTM1Olx0XHRcdGtmcmVlKGNtZCk7XG4gMTM2Olx0XHR9XG4gMTM3Olx0XHR1c2JfZnJlZV91cmIodXJiKTtcbiAxMzg6XHRcbiAxMzk6XHRcdHJldHVybiByZXQ7XG4gMTQwOlx0fVxuIDE0MTpcdFxuIDE0MjpcdHN0YXRpYyB2b2lkIGhpZl91c2JfbWdtdF9jYihzdHJ1Y3QgdXJiICp1cmIpXG4gMTQzOlx0e1xuIDE0NDpcdFx0c3RydWN0IGNtZF9idWYgKmNtZCA9IHVyYi1cdTAwM2Vjb250ZXh0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDEyOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4NzgxCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgdGFraW5nIG9uIHRoZSBwZXJzb25hIHlvdSByZXF1ZXN0ZWQ6CgoqKlRyYWNpbmcgdGhlIENhbGxzIHRvIGhpZl91c2Jfc2VuZF9yZWdvdXQqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW4uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBmbG93IGhlcmUsIHNvIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgdHJhY2luZyB0aGUgY2FsbHMgdG8gYGhpZl91c2Jfc2VuZF9yZWdvdXRgLiBJJiMzOTttIHRoaW5raW5nIEkmIzM5O2xsIG5lZWQgdG8gdXNlIHNvbWUgdG9vbGluZywgcHJvYmFibHkgc3RhdGljIGFuYWx5c2lzIGluaXRpYWxseSwgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB0aGUgY2FsbCBncmFwaC4gSSYjMzk7bSBob3BpbmcgaXQmIzM5O3Mgc3RyYWlnaHRmb3J3YXJkOyBhIGNvbXBsZXggY2hhaW4gb2YgaW5kaXJlY3QgZnVuY3Rpb24gY2FsbHMgaXMgdGhlIGxhc3QgdGhpbmcgSSBuZWVkIHJpZ2h0IG5vdy4gSSBzaG91bGQgYmUgYWJsZSB0byBpZGVudGlmeSB0aGUga2V5IG1vZHVsZXMgb3Igc3Vic3lzdGVtcyB0aGF0IGFyZSBpbml0aWF0aW5nIHRoZXNlIHJlZ2lzdGVyIG91dHB1dCBvcGVyYXRpb25zLiBLbm93aW5nIHRoZSBjb250ZXh0IG9mIHRob3NlIGNhbGxzIHdpbGwgYmUgY3JpdGljYWwgZm9yIGZpZ3VyaW5nIG91dCB0aGUgaW50ZW50IGJlaGluZCBlYWNoIG9mIHRoZW0uIFRoZW4sIGJhc2VkIG9uIHRoZSBjYWxscyB0aGVtc2VsdmVzLCBJJiMzOTtsbCBiZSBhYmxlIHRvIHF1aWNrbHkgc2VlIGlmIHRoZXJlJiMzOTtzIGFueSBvYnZpb3VzIHJlZHVuZGFuY3kgb3IgdW5leHBlY3RlZCBiZWhhdmlvci4gSSYjMzk7bGwgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBhcmd1bWVudHMgYmVpbmcgcGFzc2VkIHRvIHRoaXMgZnVuY3Rpb24sIHRvby4gQXJlIHRoZXkgY29uc2lzdGVudCBhY3Jvc3MgY2FsbGVycz8gQXJlIHRoZXJlIGFueSBwYXR0ZXJucyBvciBkaXNjcmVwYW5jaWVzIHRoYXQganVtcCBvdXQ/IFRoaXMgaXMgYSBjcnVjaWFsIGFyZWEgdG8gZXhwbG9yZSwgc2luY2UgdGhlIGFyZ3VtZW50cyB3aWxsIHJldmVhbCAqd2hhdCogaXMgYmVpbmcgc2VudCBvdXQsIGFuZCBsaWtlbHkgKndoeSouIEkmIzM5O2xsIG5lZWQgdG8gdGhpbmsgYWJvdXQgdGhlIGRhdGEgc3RydWN0dXJlcyBiZWluZyBwYXNzZWQsIHBvdGVudGlhbGx5IGNoZWNraW5nIHRoZSBkZWZpbml0aW9ucyBvZiB0aG9zZSBzdHJ1Y3RzIGFuZCBlbnVtcy4gT25jZSBJIHVuZGVyc3RhbmQgdGhlIGNhbGxlcnMgYW5kIHRoZSBwYXJhbWV0ZXJzLCBJIHNob3VsZCBiZSBpbiBhIHNvbGlkIHBvc2l0aW9uIHRvIGFuYWx5emUgdGhlIGltcGFjdCBvZiB0aGlzIGZ1bmN0aW9uLCBpdHMgcG90ZW50aWFsIGJvdHRsZW5lY2tzLCBhbmQgYW55IGFyZWFzIHJpcGUgZm9yIG9wdGltaXphdGlvbiBvciBpbXByb3ZlbWVudC4gVGhpcyBpcyBteSBzdGFydGluZyBwb2ludCwgYW5kIEkgZXhwZWN0IHRvIGFkanVzdCBteSBhcHByb2FjaCBhcyBJIGdvLCBidXQgdGhpcyBzZWVtcyBsaWtlIGEgc29saWQgcGxhbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMTI6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aGlmX3VzYl9zZW5kX3JlZ291dCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYz03MT1zdGF0aWMgdm9pZCBoaWZfdXNiX3JlZ291dF9jYihzdHJ1Y3QgdXJiICp1cmIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy05OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6OTk6c3RhdGljIGludCBoaWZfdXNiX3NlbmRfcmVnb3V0KHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMTAwLVx0XHRcdCAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM9NDcyPXN0YXRpYyBpbnQgaGlmX3VzYl9zZW5kKHZvaWQgKmhpZl9oYW5kbGUsIHU4IHBpcGVfaWQsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00ODEtXHRjYXNlIFVTQl9SRUdfT1VUX1BJUEU6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjQ4MjpcdFx0cmV0ID0gaGlmX3VzYl9zZW5kX3JlZ291dChoaWZfZGV2LCBza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00ODMtXHRcdGJyZWFrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAxMjo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTQ5OQoJCQkJCQkJb3V0cHV0OiA0OAoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSBpbW1lZGlhdGUgdGhvdWdodCBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgRHJpdmVyIEluaXRpYWxpemF0aW9uKioKCk9rYXksIHRpbWUgdG8gZGlnIGluLiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHdoYXQmIzM5O3MgaGFwcGVuaW5nIHdpdGggdGhpcyBIVEMgZHJpdmVyLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBgaHRjX2Rydl9pbml0LmNgIOKAkyB0aGF0JiMzOTtzIHVzdWFsbHkgYSBnb29kIHBsYWNlIHRvIGJlZ2luLCBlc3BlY2lhbGx5IHdpdGggaW5pdGlhbGl6YXRpb24uIFNwZWNpZmljYWxseSwgSSYjMzk7bSBnb2luZyB0byBqdW1wIHRvIGFyb3VuZCBsaW5lIDQwNS4gVGhhdCBzZWN0aW9uIGlzIG9mdGVuIHdoZXJlIGNyaXRpY2FsIGluaXRpYWwgc2V0dXAgb3IgcmVzb3VyY2UgYWxsb2NhdGlvbiB0YWtlcyBwbGFjZS4gSSYjMzk7bSBleHBlY3RpbmcgdG8gZmluZCB0aGUga2V5IGZ1bmN0aW9uIGNhbGxzLCBkYXRhIHN0cnVjdHVyZSBhc3NpZ25tZW50cywgb3IgcGVyaGFwcyBzb21lIGVhcmx5IGhhcmR3YXJlIHByb2JpbmcgdGhhdCB3aWxsIHNoZWQgbGlnaHQgb24gd2hhdCB0aGUgZHJpdmVyIGlzIHVwIHRvLiBMZXQmIzM5O3Mgc2VlIHdoYXQgc2VjcmV0cyB0aGF0IHBhcnRpY3VsYXIgc2VjdGlvbiBob2xkcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMTI6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzOTUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDM5NTpcdFx0cHJpdi1cdTAwM2V3bWktXHUwMDNlbXVsdGlfcm13W3ByaXYtXHUwMDNld21pLVx1MDAzZW11bHRpX3Jtd19pZHhdLnJlZyA9XG4gMzk2Olx0XHRcdGNwdV90b19iZTMyKHJlZ19vZmZzZXQpO1xuIDM5NzpcdFx0cHJpdi1cdTAwM2V3bWktXHUwMDNlbXVsdGlfcm13W3ByaXYtXHUwMDNld21pLVx1MDAzZW11bHRpX3Jtd19pZHhdLnNldCA9XG4gMzk4Olx0XHRcdGNwdV90b19iZTMyKHNldCk7XG4gMzk5Olx0XHRwcml2LVx1MDAzZXdtaS1cdTAwM2VtdWx0aV9ybXdbcHJpdi1cdTAwM2V3bWktXHUwMDNlbXVsdGlfcm13X2lkeF0uY2xyID1cbiA0MDA6XHRcdFx0Y3B1X3RvX2JlMzIoY2xyKTtcbiA0MDE6XHRcbiA0MDI6XHRcdHByaXYtXHUwMDNld21pLVx1MDAzZW11bHRpX3Jtd19pZHgmIzQzOyYjNDM7O1xuIDQwMzpcdFxuIDQwNDpcdFx0LyogSWYgdGhlIGJ1ZmZlciBpcyBmdWxsLCBzZW5kIGl0IG91dC4gKi9cbiA0MDU6XHRcdGlmIChwcml2LVx1MDAzZXdtaS1cdTAwM2VtdWx0aV9ybXdfaWR4ID09IE1BWF9STVdfQ01EX05VTUJFUikge1xuIDQwNjpcdFx0XHRyID0gYXRoOWtfd21pX2NtZChwcml2LVx1MDAzZXdtaSwgV01JX1JFR19STVdfQ01ESUQsXG4gNDA3Olx0XHRcdFx0ICAodTggKikgXHUwMDI2cHJpdi1cdTAwM2V3bWktXHUwMDNlbXVsdGlfcm13LFxuIDQwODpcdFx0XHRcdCAgc2l6ZW9mKHN0cnVjdCByZWdpc3Rlcl9ybXcpICogcHJpdi1cdTAwM2V3bWktXHUwMDNlbXVsdGlfcm13X2lkeCxcbiA0MDk6XHRcdFx0XHQgICh1OCAqKSBcdTAwMjZyc3Bfc3RhdHVzLCBzaXplb2YocnNwX3N0YXR1cyksXG4gNDEwOlx0XHRcdFx0ICAxMDApO1xuIDQxMTpcdFx0XHRpZiAodW5saWtlbHkocikpIHtcbiA0MTI6XHRcdFx0XHRhdGhfZGJnKGNvbW1vbiwgV01JLFxuIDQxMzpcdFx0XHRcdFx0XCYjMzQ7UkVHSVNURVIgUk1XIEZBSUxFRCwgbXVsdGkgbGVuOiAlZFxcblwmIzM0OyxcbiA0MTQ6XHRcdFx0XHRcdHByaXYtXHUwMDNld21pLVx1MDAzZW11bHRpX3Jtd19pZHgpO1xuIDQxNTpcdFx0XHR9XG4gNDE2Olx0XHRcdHByaXYtXHUwMDNld21pLVx1MDAzZW11bHRpX3Jtd19pZHggPSAwO1xuIDQxNzpcdFx0fVxuIDQxODpcdFxuIDQxOTpcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnByaXYtXHUwMDNld21pLVx1MDAzZW11bHRpX3Jtd19tdXRleCk7XG4gNDIwOlx0fVxuIDQyMTpcdFxuIDQyMjpcdHN0YXRpYyB2b2lkIGF0aDlrX3JlZ19ybXdfZmx1c2godm9pZCAqaHdfcHJpdilcbiA0MjM6XHR7XG4gNDI0Olx0XHRzdHJ1Y3QgYXRoX2h3ICphaCA9IGh3X3ByaXY7XG4gNDI1Olx0XHRzdHJ1Y3QgYXRoX2NvbW1vbiAqY29tbW9uID0gYXRoOWtfaHdfY29tbW9uKGFoKTtcbiA0MjY6XHRcdHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdiA9IGNvbW1vbi1cdTAwM2Vwcml2O1xuIDQyNzpcdFx0dTMyIHJzcF9zdGF0dXM7XG4gNDI4Olx0XHRpbnQgcjtcbiA0Mjk6XHRcbiA0MzA6XHRcdGlmICh0ZXN0X2JpdChIVENfRldGTEFHX05PX1JNVywgXHUwMDI2cHJpdi1cdTAwM2Vmd19mbGFncykpXG4gNDMxOlx0XHRcdHJldHVybjtcbiA0MzI6XHRcbiA0MzM6XHRcdGF0b21pY19kZWMoXHUwMDI2cHJpdi1cdTAwM2V3bWktXHUwMDNlbV9ybXdfY250KTtcbiA0MzQ6XHRcbiA0MzU6XHRcdG11dGV4X2xvY2soXHUwMDI2cHJpdi1cdTAwM2V3bWktXHUwMDNlbXVsdGlfcm13X211dGV4KTtcbiA0MzY6XHRcbiA0Mzc6XHRcdGlmIChwcml2LVx1MDAzZXdtaS1cdTAwM2VtdWx0aV9ybXdfaWR4KSB7XG4gNDM4Olx0XHRcdHIgPSBhdGg5a193bWlfY21kKHByaXYtXHUwMDNld21pLCBXTUlfUkVHX1JNV19DTURJRCxcbiA0Mzk6XHRcdFx0XHQgICh1OCAqKSBcdTAwMjZwcml2LVx1MDAzZXdtaS1cdTAwM2VtdWx0aV9ybXcsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDEyOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNTUwCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogODEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBhdGg5a19odGMgUGF0Y2ggZm9yIEZ1enppbmcqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkmIzM5O20gc2VlaW5nIGEgcG90ZW50aWFsIGJ1ZmZlciBvdmVyZmxvdyB2dWxuZXJhYmlsaXR5IGZpeGVkIGluIGBhdGg5a19yZWdfcm13X2J1ZmZlcmAuIFRoZSBvcmlnaW5hbCBjb2RlIHdhcyBjYWxjdWxhdGluZyB0aGUgYnVmZmVyIHNpemUgaW5jb3JyZWN0bHksIHVzaW5nIHRoZSBzaXplIG9mIGEgYHN0cnVjdCByZWdpc3Rlcl93cml0ZWAgKDggYnl0ZXMpIGluc3RlYWQgb2YgYSBgc3RydWN0IHJlZ2lzdGVyX3Jtd2AgKDEyIGJ5dGVzKSB3aGVuIGRlYWxpbmcgd2l0aCBtdWx0aXBsZSByZWFkLW1vZGlmeS13cml0ZSBjb21tYW5kcyAoYG11bHRpX3Jtd19pZHhgKS4gU3BlY2lmaWNhbGx5LCB3aGVuIGBtdWx0aV9ybXdfaWR4YCBoaXQgYE1BWF9STVdfQ01EX05VTUJFUmAgKHdoaWNoIHdhcyAxNSksIGl0IHNlbnQgMTIwIGJ5dGVzIGluc3RlYWQgb2YgdGhlIGV4cGVjdGVkIDE4MCBieXRlcy4gVGhhdCYjMzk7cyBhIGNsZWFyIGVycm9yLgoKSSYjMzk7bSBhbHNvIHNlZWluZyBhIGNvbW1lbnQgYWJvdXQgd2h5IDE1IGVudHJpZXMgZGlkbiYjMzk7dCB3b3JrLiBUaGUgY29tbWVudCBtZW50aW9ucyAxOTIgYnl0ZXMgYW5kIGZ1bGwgVVNCIHBhY2tldHMgbm90IGJlaW5nIGRlbGl2ZXJlZC4gMTUgZW50cmllcyAqIDEyIGJ5dGVzID0gMTgwLCBwbHVzIGhlYWRlciwgdGhhdCB3b3VsZCBmaXQsIHNvIHRoZSBjb21tZW50IGxvb2tzIGxpa2UgaXQgbWF5IGhhdmUgYW4gZXJyb3IuCgpUaGUgZml4IGluIGBoaWZfdXNiX3NlbmRfcmVnb3V0YCBhZGRzIGEgYFdBUk5fT05DRWAgYXNzZXJ0aW9uLCB3aGljaCBpcyBnb29kLiBUaGlzIGlzIGEgZGVmZW5zaXZlIG1lYXN1cmUuIEl0JiMzOTtzIHdhcm5pbmcgaWYgdGhlIGNvbW1hbmQgZmlsbHMgYSB3aG9sZSBVU0IgcGFja2V0LiBUaGlzIGlzIHJldHVybmluZyBgLUVJTlZBTGAuIFRoaXMgaXMgZ3JlYXQuCgpOb3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb246IGlzIHRoaXMgZnV6emFibGU/IEFic29sdXRlbHkuIGBhdGg5a19odGNgIGlzIGEgVVNCIHdpcmVsZXNzIGRyaXZlciwgYW5kIFVTQiBkZXZpY2VzIGFyZSBlYXNpbHkgYXR0YWNoZWQgaW4gUUVNVS92aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdXNpbmcgVVNCIFJhdyBHYWRnZXQgb3Igc3l6a2FsbGVyJiMzOTtzIFVTQiBlbXVsYXRpb24uIFRoaXMgaXMgZGVmaW5pdGVseSByZWFjaGFibGUuIFNlY3Rpb24gMSBhbmQgMyBvZiB0aGUgZnV6emluZyBndWlkYW5jZSBjb25maXJtcyB0aGlzLiBNb2RpZmllZCBhc3NlcnRpb25zIGFyZSBleGFjdGx5IHdoYXQgd2Ugd2FudCB0byB0YXJnZXQuIEl0JiMzOTtzIGEgcHJpbWUgdGFyZ2V0IGZvciBmdXp6aW5nLgoKTXkgbmV4dCBzdGVwIGlzIGlkZW50aWZ5aW5nIHRoZSByZWxldmFudCBmdW5jdGlvbnMgZm9yIGZvY3VzOgotICAgYGhpZl91c2Jfc2VuZF9yZWdvdXRgIOKAkyB0aGUgbmV3bHkgYXNzZXJ0ZWQgZnVuY3Rpb24uCi0gICBgYXRoOWtfcmVnX3Jtd19idWZmZXJgIOKAkyB0aGUgYnVmZmVyIHNpemUgY2FsY3VsYXRpb24gZml4ZWQuCi0gICBgYXRoOWtfcmVnX3Jtd19mbHVzaGAg4oCTIGEgZnVuY3Rpb24gY2FsbGluZyBgYXRoOWtfd21pX2NtZGAgd2l0aCBgbXVsdGlfcm13YC4KLSAgIGBoaWZfdXNiX3NlbmRgIOKAkyBhbiBlbnRyeXBvaW50IGluIGhpZlxfdXNiCi0gICBgYXRoOWtfd21pX2NtZGAg4oCTIGFzIGl0IGlzIHVzZWQgd2l0aCBgbXVsdGlfcm13YAoKSSBuZWVkIHRvIGNvbmZpcm0gdGhlc2UgZnVuY3Rpb24gbmFtZXMgYW5kIHRoZWlyIGRlZmluaXRpb25zIHdpdGhpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2AuIEkgY2FuIHRoZW4gYnVpbGQgdGVzdCBjYXNlcyB0byBleGVyY2lzZSB0aGUgcmVsZXZhbnQgY29kZSBwYXRocyBhbmQgdHJpZ2dlciB0aGF0IGBXQVJOX09OQ0VgIGFzc2VydGlvbi4gVGhpcyBsb29rcyBsaWtlIGEgc29saWQgZnV6emluZyB0YXJnZXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDEyOjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2F0aDlrX3JlZ19ybXcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYz0zNjc9c3RhdGljIHZvaWQgYXRoOWtfcmVnd3JpdGVfZmx1c2godm9pZCAqaHdfcHJpdilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmMtMzgyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jOjM4MzpzdGF0aWMgdm9pZCBhdGg5a19yZWdfcm13X2J1ZmZlcih2b2lkICpod19wcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jLTM4NC1cdFx0XHRcdCB1MzIgcmVnX29mZnNldCwgdTMyIHNldCwgdTMyIGNscilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmMtNDIxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jOjQyMjpzdGF0aWMgdm9pZCBhdGg5a19yZWdfcm13X2ZsdXNoKHZvaWQgKmh3X3ByaXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmMtNDIzLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM9NDU0PXN0YXRpYyB2b2lkIGF0aDlrX2VuYWJsZV9ybXdfYnVmZmVyKHZvaWQgKmh3X3ByaXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jLTQ2NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYzo0NjY6c3RhdGljIHZvaWQgYXRoOWtfcmVnX3Jtd19zaW5nbGUodm9pZCAqaHdfcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy00NjctXHRcdFx0XHQgdTMyIHJlZ19vZmZzZXQsIHUzMiBzZXQsIHUzMiBjbHIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jLTQ4OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYzo0ODk6c3RhdGljIHUzMiBhdGg5a19yZWdfcm13KHZvaWQgKmh3X3ByaXYsIHUzMiByZWdfb2Zmc2V0LCB1MzIgc2V0LCB1MzIgY2xyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jLTQ5MC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jLTUwNi1cdGlmIChhdG9taWNfcmVhZChcdTAwMjZwcml2LVx1MDAzZXdtaS1cdTAwM2VtX3Jtd19jbnQpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jOjUwNzpcdFx0YXRoOWtfcmVnX3Jtd19idWZmZXIoaHdfcHJpdiwgcmVnX29mZnNldCwgc2V0LCBjbHIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jLTUwOC1cdGVsc2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYzo1MDk6XHRcdGF0aDlrX3JlZ19ybXdfc2luZ2xlKGh3X3ByaXYsIHJlZ19vZmZzZXQsIHNldCwgY2xyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy01MTAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jPTYwNj1zdGF0aWMgaW50IGF0aDlrX2luaXRfcHJpdihzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jLTYyOC1cdGFoLVx1MDAzZXJlZ19vcHMuZW5hYmxlX3Jtd19idWZmZXIgPSBhdGg5a19lbmFibGVfcm13X2J1ZmZlcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYzo2Mjk6XHRhaC1cdTAwM2VyZWdfb3BzLnJtd19mbHVzaCA9IGF0aDlrX3JlZ19ybXdfZmx1c2g7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM6NjMwOlx0YWgtXHUwMDNlcmVnX29wcy5ybXcgPSBhdGg5a19yZWdfcm13O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jLTYzMS1cdHByaXYtXHUwMDNlYWggPSBhaDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jPTIwND1zdGF0aWMgdm9pZCBhdGg5a19tdWx0aV9pb3JlYWQzMih2b2lkICpod19wcml2LCB1MzIgKmFkZHIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYy0yMTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jOjIxNDpzdGF0aWMgdW5zaWduZWQgaW50IF9fYXRoOWtfcmVnX3JtdyhzdHJ1Y3QgYXRoX3NvZnRjICpzYywgdTMyIHJlZ19vZmZzZXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jLTIxNS1cdFx0XHRcdCAgICB1MzIgc2V0LCB1MzIgY2xyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmMtMjI2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYzoyMjc6c3RhdGljIHVuc2lnbmVkIGludCBhdGg5a19yZWdfcm13KHZvaWQgKmh3X3ByaXYsIHUzMiByZWdfb2Zmc2V0LCB1MzIgc2V0LCB1MzIgY2xyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYy0yMjgte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmMtMjM2LVx0XHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZzYy1cdTAwM2VzY19zZXJpYWxfcncsIGZsYWdzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmM6MjM3Olx0XHR2YWwgPSBfX2F0aDlrX3JlZ19ybXcoc2MsIHJlZ19vZmZzZXQsIHNldCwgY2xyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmMtMjM4LVx0XHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNnNjLVx1MDAzZXNjX3NlcmlhbF9ydywgZmxhZ3MpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYy0yMzktXHR9IGVsc2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmM6MjQwOlx0XHR2YWwgPSBfX2F0aDlrX3JlZ19ybXcoc2MsIHJlZ19vZmZzZXQsIHNldCwgY2xyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmMtMjQxLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmM9NjU2PXN0YXRpYyBpbnQgYXRoOWtfaW5pdF9zb2Z0Yyh1MTYgZGV2aWQsIHN0cnVjdCBhdGhfc29mdGMgKnNjLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmMtNjc2LVx0YWgtXHUwMDNlcmVnX29wcy53cml0ZSA9IGF0aDlrX2lvd3JpdGUzMjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmM6Njc3Olx0YWgtXHUwMDNlcmVnX29wcy5ybXcgPSBhdGg5a19yZWdfcm13O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYy02NzgtXHRwQ2FwID0gXHUwMDI2YWgtXHUwMDNlY2FwcztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMTI6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM1OTgKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiA3NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipFeGFtaW5pbmcgdGhlIEF0aGVyb3MgV2lyZWxlc3MgRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGUgY29uZmlndXJhdGlvbiBmb3IgdGhpcyBBdGhlcm9zIHdpcmVsZXNzIGRyaXZlci4gRmlyc3QsIEkgbmVlZCB0byB2ZXJpZnkgd2hhdCBzZXR0aW5ncyBhcmUgYXZhaWxhYmxlLCBzdGFydGluZyB3aXRoIHRoZSBgRW5hYmxlQ29uZmlnc2AuIFNwZWNpZmljYWxseSwgSSYjMzk7bSBjaGVja2luZyB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnYCBmaWxlLiBJIHNlZSB0aGF0IGBBVEg5S19IVENgIGlzIGRlcGVuZGVudCBvbiBib3RoIGBVU0JgIGFuZCBgTUFDODAyMTFgLCB3aGljaCBtYWtlcyBwZXJmZWN0IHNlbnNlIGdpdmVuIHRoZSBoYXJkd2FyZSBhcmNoaXRlY3R1cmUuCgpOb3csIEkgbmVlZCB0byBtYWtlIHN1cmUgSSYjMzk7bSBub3Qgb3Zlcmxvb2tpbmcgYW55IG90aGVyIGNydWNpYWwgZGVwZW5kZW5jaWVzIG9yIGNvbmZpZ3VyYXRpb25zLiBJJiMzOTtsbCBuZWVkIHRvIGV4cGFuZCB0aGUgc2VhcmNoIGFuZCByZXZpZXcgb3RoZXIgcG90ZW50aWFsIGNvbmZpZ3VyYXRpb25zLiBMZXQmIzM5O3MgbW92ZSBvbiBhbmQgZXhhbWluZSB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9LY29uZmlnYCBmaWxlIGFuZCBleHBsb3JlIHRoZSBjb250ZW50cyB0byBlbnN1cmUgSSBpZGVudGlmeSBhbnkgb3RoZXIgbmVlZGVkIHNldHRpbmdzLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGNvbXByZWhlbnNpdmUgcGljdHVyZSBvZiB3aGF0JiMzOTtzIHJlcXVpcmVkIGZvciB0aGlzIGRyaXZlciB0byBmdW5jdGlvbiBjb3JyZWN0bHkgd2l0aGluIHRoZSB3aWRlciBzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDEyOjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0FUSDlLJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNTA3NiBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL01ha2VmaWxlPTI9b2JqLSQoQ09ORklHX0FUSDVLKVx0XHQmIzQzOz0gYXRoNWsvXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvTWFrZWZpbGU6MzpvYmotJChDT05GSUdfQVRIOUtfSFcpXHRcdCYjNDM7PSBhdGg5ay9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9NYWtlZmlsZS00LW9iai0kKENPTkZJR19DQVJMOTE3MClcdFx0JiM0Mzs9IGNhcmw5MTcwL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogSVNDXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoyOmNvbmZpZyBBVEg5S19IV1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMy1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo0OmNvbmZpZyBBVEg5S19DT01NT05cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTUtXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNi1cdHNlbGVjdCBBVEhfQ09NTU9OXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo3OmNvbmZpZyBBVEg5S19DT01NT05fREVCVUdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTgtXHRib29sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo5OmNvbmZpZyBBVEg5S19ERlNfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTAtXHRkZWZfYm9vbCB5XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxMTpcdGRlcGVuZHMgb24gQVRIOUtfREVCVUdGUyBcdTAwMjZcdTAwMjYgQVRIOUtfREZTX0NFUlRJRklFRFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxMzpjb25maWcgQVRIOUtfQlRDT0VYX1NVUFBPUlRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE0LVx0Ym9vbCBcJiMzNDtBdGhlcm9zIGJsdWV0b290aCBjb2V4aXN0ZW5jZSBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxNTpcdGRlcGVuZHMgb24gKEFUSDlLIHx8IEFUSDlLX0hUQylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE2LVx0ZGVmYXVsdCB5XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoyMTpjb25maWcgQVRIOUtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTIyLVx0dHJpc3RhdGUgXCYjMzQ7QXRoZXJvcyA4MDIuMTFuIHdpcmVsZXNzIGNhcmRzIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0yNC1cdHNlbGVjdCBNQUM4MDIxMV9MRURTIGlmIExFRFNfQ0xBU1M9eSB8fCBMRURTX0NMQVNTPU1BQzgwMjExXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoyNTpcdHNlbGVjdCBBVEg5S19IV1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MjY6XHRzZWxlY3QgQVRIOUtfQ09NTU9OXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0yNy1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0zOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjM5OmNvbmZpZyBBVEg5S19QQ0lcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTQwLVx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDlrIFBDSS9QQ0llIGJ1cyBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy00MS1cdGRlZmF1bHQgeVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6NDI6XHRkZXBlbmRzIG9uIEFUSDlLIFx1MDAyNlx1MDAyNiBQQ0lcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTQzLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTQ3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6NDg6Y29uZmlnIEFUSDlLX0FIQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNDktXHRib29sIFwmIzM0O0F0aGVyb3MgYXRoOWsgQUhCIGJ1cyBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo1MDpcdGRlcGVuZHMgb24gQVRIOUsgXHUwMDI2XHUwMDI2IE9GXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy01MS1cdGRlZmF1bHQgblxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTU3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6NTg6Y29uZmlnIEFUSDlLX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTU5LVx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDlrIGRlYnVnZ2luZ1wmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6NjA6XHRkZXBlbmRzIG9uIEFUSDlLIFx1MDAyNlx1MDAyNiBERUJVR19GUyBcdTAwMjZcdTAwMjYgTUFDODAyMTFfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6NjE6XHRzZWxlY3QgQVRIOUtfQ09NTU9OX0RFQlVHXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy02Mi1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy02OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjY5OmNvbmZpZyBBVEg5S19TVEFUSU9OX1NUQVRJU1RJQ1NcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTcwLVx0Ym9vbCBcJiMzNDtEZXRhaWxlZCBzdGF0aW9uIHN0YXRpc3RpY3NcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjcxOlx0ZGVwZW5kcyBvbiBBVEg5SyBcdTAwMjZcdTAwMjYgQVRIOUtfREVCVUdGUyBcdTAwMjZcdTAwMjYgREVCVUdfRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTcyLVx0ZGVmYXVsdCBuXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo3Njpjb25maWcgQVRIOUtfVFg5OVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNzctXHRib29sIFwmIzM0O0F0aGVyb3MgYXRoOWsgVFg5OSB0ZXN0aW5nIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjc4Olx0ZGVwZW5kcyBvbiBBVEg5S19ERUJVR0ZTIFx1MDAyNlx1MDAyNiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTc5LVx0ZGVmYXVsdCBuXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctOTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo5Njpjb25maWcgQVRIOUtfREZTX0NFUlRJRklFRFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctOTctXHRib29sIFwmIzM0O0F0aGVyb3MgREZTIHN1cHBvcnQgZm9yIGNlcnRpZmllZCBwbGF0Zm9ybXNcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjk4Olx0ZGVwZW5kcyBvbiBBVEg5SyBcdTAwMjZcdTAwMjYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy05OS1cdGRlZmF1bHQgblxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTExNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjExNTpjb25maWcgQVRIOUtfRFlOQUNLXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xMTYtXHRib29sIFwmIzM0O0F0aGVyb3MgYXRoOWsgQUNLIHRpbWVvdXQgZXN0aW1hdGlvbiBhbGdvcml0aG1cJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjExNzpcdGRlcGVuZHMgb24gQVRIOUtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTExOC1cdGRlZmF1bHQgblxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTEyMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjEyNDpjb25maWcgQVRIOUtfV09XXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xMjUtXHRib29sIFwmIzM0O1dha2Ugb24gV2lyZWxlc3MgTEFOIHN1cHBvcnQgKEVYUEVSSU1FTlRBTClcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjEyNjpcdGRlcGVuZHMgb24gQVRIOUsgXHUwMDI2XHUwMDI2IFBNXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xMjctXHRkZWZhdWx0IG5cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xMzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxMzI6Y29uZmlnIEFUSDlLX1JGS0lMTFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTMzLVx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDlrIHJma2lsbCBzdXBwb3J0XCYjMzQ7IGlmIEVYUEVSVFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTM0Olx0ZGVwZW5kcyBvbiBBVEg5S1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTM1Olx0ZGVwZW5kcyBvbiBSRktJTEw9eSB8fCBSRktJTEw9QVRIOUtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTEzNi1cdGRlZmF1bHQgeVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE0MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjE0Mjpjb25maWcgQVRIOUtfQ0hBTk5FTF9DT05URVhUXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNDMtXHRib29sIFwmIzM0O0NoYW5uZWwgQ29udGV4dCBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxNDQ6XHRkZXBlbmRzIG9uIEFUSDlLXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNDUtXHRkZWZhdWx0IG5cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxNTE6Y29uZmlnIEFUSDlLX1BDT0VNXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNTItXHRib29sIFwmIzM0O0F0aGVyb3MgYXRoOWsgc3VwcG9ydCBmb3IgUEMgT0VNIGNhcmRzXCYjMzQ7IGlmIEVYUEVSVFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTUzOlx0ZGVwZW5kcyBvbiBBVEg5S1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTU0LVx0ZGVmYXVsdCB5XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxNTY6Y29uZmlnIEFUSDlLX1BDSV9OT19FRVBST01cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE1Ny1cdHRyaXN0YXRlIFwmIzM0O0F0aGVyb3MgYXRoOWsgcGNpIGxvYWRlciBmb3IgRUVQUk9NLWxlc3MgY2hpcHNcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjE1ODpcdGRlcGVuZHMgb24gQVRIOUtfUENJXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNTktXHRkZWZhdWx0IG5cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxNzI6Y29uZmlnIEFUSDlLX0hUQ1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTczLVx0dHJpc3RhdGUgXCYjMzQ7QXRoZXJvcyBIVEMgYmFzZWQgd2lyZWxlc3MgY2FyZHMgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE3NS1cdHNlbGVjdCBNQUM4MDIxMV9MRURTIGlmIExFRFNfQ0xBU1M9eSB8fCBMRURTX0NMQVNTPU1BQzgwMjExXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxNzY6XHRzZWxlY3QgQVRIOUtfSFdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjE3NzpcdHNlbGVjdCBBVEg5S19DT01NT05cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE3OC1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xODYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxODc6Y29uZmlnIEFUSDlLX0hUQ19ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xODgtXHRib29sIFwmIzM0O0F0aGVyb3MgYXRoOWtfaHRjIGRlYnVnZ2luZ1wmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTg5Olx0ZGVwZW5kcyBvbiBBVEg5S19IVEMgXHUwMDI2XHUwMDI2IERFQlVHX0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxOTA6XHRzZWxlY3QgQVRIOUtfQ09NTU9OX0RFQlVHXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xOTEtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTk0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTk1OmNvbmZpZyBBVEg5S19IV1JOR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTk2LVx0Ym9vbCBcJiMzNDtSYW5kb20gbnVtYmVyIGdlbmVyYXRvciBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxOTc6XHRkZXBlbmRzIG9uIEFUSDlLIFx1MDAyNlx1MDAyNiAoSFdfUkFORE9NID0geSB8fCBIV19SQU5ET00gPSBBVEg5SylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE5OC1cdGRlZmF1bHQgblxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTIwNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjIwNjpjb25maWcgQVRIOUtfQ09NTU9OX1NQRUNUUkFMXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0yMDctXHRib29sIFwmIzM0O0F0aGVyb3MgYXRoOWsvYXRoOWtfaHRjIHNwZWN0cmFsIHNjYW4gc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MjA4Olx0ZGVwZW5kcyBvbiBBVEg5S19ERUJVR0ZTIHx8IEFUSDlLX0hUQ19ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0yMDktXHRzZWxlY3QgUkVMQVlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU9Mj1hdGg5ay15ICYjNDM7PVx0YmVhY29uLm8gXFxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtMTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6MTI6YXRoOWstJChDT05GSUdfQVRIOUtfQlRDT0VYX1NVUFBPUlQpICYjNDM7PSBtY2kub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlOjEzOmF0aDlrLSQoQ09ORklHX0FUSDlLX1BDSSkgJiM0Mzs9IHBjaS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6MTQ6YXRoOWstJChDT05GSUdfQVRIOUtfQUhCKSAmIzQzOz0gYWhiLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZToxNTphdGg5ay0kKENPTkZJR19BVEg5S19ERlNfREVCVUdGUykgJiM0Mzs9IGRmc19kZWJ1Zy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6MTY6YXRoOWstJChDT05GSUdfQVRIOUtfREZTX0NFUlRJRklFRCkgJiM0Mzs9IGRmcy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6MTc6YXRoOWstJChDT05GSUdfQVRIOUtfVFg5OSkgJiM0Mzs9IHR4OTkub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlOjE4OmF0aDlrLSQoQ09ORklHX0FUSDlLX1dPVykgJiM0Mzs9IHdvdy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6MTk6YXRoOWstJChDT05GSUdfQVRIOUtfSFdSTkcpICYjNDM7PSBybmcub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTIwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlOjIxOmF0aDlrLSQoQ09ORklHX0FUSDlLX0RFQlVHRlMpICYjNDM7PSBkZWJ1Zy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtMjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6MjM6YXRoOWstJChDT05GSUdfQVRIOUtfU1RBVElPTl9TVEFUSVNUSUNTKSAmIzQzOz0gZGVidWdfc3RhLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS0yNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZToyNTpvYmotJChDT05GSUdfQVRIOUspICYjNDM7PSBhdGg5ay5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtMjYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU9Mjc9YXRoOWtfaHcteTo9XHRcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS00Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZTo0ODphdGg5a19ody0kKENPTkZJR19BVEg5S19XT1cpICYjNDM7PSBhcjkwMDNfd293Lm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS00OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZTo1MDphdGg5a19ody0kKENPTkZJR19BVEg5S19CVENPRVhfU1VQUE9SVCkgJiM0Mzs9IGJ0Y29leC5vIFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtNTEtXHRcdFx0XHRcdCAgIGFyOTAwM19tY2kubyBcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS01My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZTo1NDphdGg5a19ody0kKENPTkZJR19BVEg5S19QQ09FTSkgJiM0Mzs9IGFyOTAwM19ydHQub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTU1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlOjU2OmF0aDlrX2h3LSQoQ09ORklHX0FUSDlLX0RZTkFDSykgJiM0Mzs9IGR5bmFjay5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtNTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6NTg6b2JqLSQoQ09ORklHX0FUSDlLX0hXKSAmIzQzOz0gYXRoOWtfaHcub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTU5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlOjYwOm9iai0kKENPTkZJR19BVEg5S19DT01NT04pICYjNDM7PSBhdGg5a19jb21tb24ub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTYxLWF0aDlrX2NvbW1vbi15Oj1cdGNvbW1vbi5vIFxcXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTY0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlOjY1OmF0aDlrX2NvbW1vbi0kKENPTkZJR19BVEg5S19DT01NT05fREVCVUcpICYjNDM7PSBjb21tb24tZGVidWcub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlOjY2OmF0aDlrX2NvbW1vbi0kKENPTkZJR19BVEg5S19DT01NT05fU1BFQ1RSQUwpICYjNDM7PSBjb21tb24tc3BlY3RyYWwub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTY3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlPTY4PWF0aDlrX2h0Yy15ICYjNDM7PVx0aHRjX2hzdC5vIFxcXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTc2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlOjc3OmF0aDlrX2h0Yy0kKENPTkZJR19BVEg5S19IVENfREVCVUdGUykgJiM0Mzs9IGh0Y19kcnZfZGVidWcub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTc4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlOjc5Om9iai0kKENPTkZJR19BVEg5S19IVEMpICYjNDM7PSBhdGg5a19odGMub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTgwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlOjgxOm9iai0kKENPTkZJR19BVEg5S19QQ0lfTk9fRUVQUk9NKSAmIzQzOz0gYXRoOWtfcGNpX293bF9sb2FkZXIub1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYz0zOT1zdGF0aWMgY29uc3Qgc3RydWN0IGFuaV9vZmRtX2xldmVsX2VudHJ5IG9mZG1fbGV2ZWxfdGFibGVbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtNTEtfTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzo1MjojZGVmaW5lIEFUSDlLX0FOSV9PRkRNX05VTV9MRVZFTCBcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTUzLVx0QVJSQVlfU0laRShvZmRtX2xldmVsX3RhYmxlKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjU0OiNkZWZpbmUgQVRIOUtfQU5JX09GRE1fTUFYX0xFVkVMIFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6NTU6XHQoQVRIOUtfQU5JX09GRE1fTlVNX0xFVkVMLTEpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6NTY6I2RlZmluZSBBVEg5S19BTklfT0ZETV9ERUZfTEVWRUwgXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy01Ny1cdDMgLyogZGVmYXVsdCBsZXZlbCAtIG1hdGNoZXMgdGhlIElOSSBzZXR0aW5ncyAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYz04NT1zdGF0aWMgY29uc3Qgc3RydWN0IGFuaV9jY2tfbGV2ZWxfZW50cnkgY2NrX2xldmVsX3RhYmxlW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTk3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjk4OiNkZWZpbmUgQVRIOUtfQU5JX0NDS19OVU1fTEVWRUwgXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy05OS1cdEFSUkFZX1NJWkUoY2NrX2xldmVsX3RhYmxlKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjEwMDojZGVmaW5lIEFUSDlLX0FOSV9DQ0tfTUFYX0xFVkVMIFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MTAxOlx0KEFUSDlLX0FOSV9DQ0tfTlVNX0xFVkVMLTEpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MTAyOiNkZWZpbmUgQVRIOUtfQU5JX0NDS19NQVhfTEVWRUxfTE9XX1JTU0kgXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoxMDM6XHQoQVRIOUtfQU5JX0NDS19OVU1fTEVWRUwtMylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoxMDQ6I2RlZmluZSBBVEg5S19BTklfQ0NLX0RFRl9MRVZFTCBcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTEwNS1cdDIgLyogZGVmYXVsdCBsZXZlbCAtIG1hdGNoZXMgdGhlIElOSSBzZXR0aW5ncyAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYz0xNDk9c3RhdGljIHZvaWQgYXRoOWtfaHdfc2V0X29mZG1fbmlsKHN0cnVjdCBhdGhfaHcgKmFoLCB1OCBpbW11bml0eUxldmVsLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0xNjAtXHRcdGltbXVuaXR5TGV2ZWwsIEJFQUNPTl9SU1NJKGFoKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoxNjE6XHRcdEFUSDlLX0FOSV9SU1NJX1RIUl9MT1csXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MTYyOlx0XHRBVEg5S19BTklfUlNTSV9USFJfSElHSCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMTYzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjE2NDpcdGlmIChBUl9TUkVWXzkxMDAoYWgpIFx1MDAyNlx1MDAyNiBpbW11bml0eUxldmVsIFx1MDAzYyBBVEg5S19BTklfT0ZETV9ERUZfTEVWRUwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MTY1Olx0XHRpbW11bml0eUxldmVsID0gQVRIOUtfQU5JX09GRE1fREVGX0xFVkVMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTE2Ni1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMTc0LVx0XHRhdGg5a19od19hbmlfY29udHJvbChhaCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoxNzU6XHRcdFx0XHQgICAgIEFUSDlLX0FOSV9TUFVSX0lNTVVOSVRZX0xFVkVMLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTE3Ni1cdFx0XHRcdCAgICAgZW50cnlfb2ZkbS1cdTAwM2VzcHVyX2ltbXVuaXR5X2xldmVsKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMTgwLVx0XHRhdGg5a19od19hbmlfY29udHJvbChhaCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoxODE6XHRcdFx0XHQgICAgIEFUSDlLX0FOSV9GSVJTVEVQX0xFVkVMLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTE4Mi1cdFx0XHRcdCAgICAgZW50cnlfb2ZkbS1cdTAwM2VmaXJfc3RlcF9sZXZlbCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTE4NS1cdGlmIChhaC1cdTAwM2VvcG1vZGUgPT0gTkw4MDIxMV9JRlRZUEVfU1RBVElPTiBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoxODY6XHQgICAgQkVBQ09OX1JTU0koYWgpIFx1MDAzYz0gQVRIOUtfQU5JX1JTU0lfVEhSX0hJR0gpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMTg3LVx0XHR3ZWFrX3NpZyA9IHRydWU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTIwMi1cdGlmIChhbmlTdGF0ZS1cdTAwM2VvZmRtV2Vha1NpZ0RldGVjdCAhPSB3ZWFrX3NpZylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoyMDM6XHRcdGF0aDlrX2h3X2FuaV9jb250cm9sKGFoLCBBVEg5S19BTklfT0ZETV9XRUFLX1NJR05BTF9ERVRFQ1RJT04sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMjA0LVx0XHRcdFx0ICAgICB3ZWFrX3NpZyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTIwOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoyMDk6XHRpZiAoYW5pU3RhdGUtXHUwMDNlb2ZkbU5vaXNlSW1tdW5pdHlMZXZlbCBcdTAwM2U9IEFUSDlLX0FOSV9PRkRNX0RFRl9MRVZFTCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjIxMDpcdFx0YWgtXHUwMDNlY29uZmlnLm9mZG1fdHJpZ19oaWdoID0gQVRIOUtfQU5JX09GRE1fVFJJR19ISUdIO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjIxMTpcdFx0YWgtXHUwMDNlY29uZmlnLm9mZG1fdHJpZ19sb3cgPSBBVEg5S19BTklfT0ZETV9UUklHX0xPV19BQk9WRV9JTkk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMjEyLVx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoyMTM6XHRcdGFoLVx1MDAzZWNvbmZpZy5vZmRtX3RyaWdfaGlnaCA9IEFUSDlLX0FOSV9PRkRNX1RSSUdfSElHSF9CRUxPV19JTkk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MjE0Olx0XHRhaC1cdTAwM2Vjb25maWcub2ZkbV90cmlnX2xvdyA9IEFUSDlLX0FOSV9PRkRNX1RSSUdfTE9XO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTIxNS1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM9MjE4PXN0YXRpYyB2b2lkIGF0aDlrX2h3X2FuaV9vZmRtX2Vycl90cmlnZ2VyKHN0cnVjdCBhdGhfaHcgKmFoKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0yMjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MjIyOlx0aWYgKGFuaVN0YXRlLVx1MDAzZW9mZG1Ob2lzZUltbXVuaXR5TGV2ZWwgXHUwMDNjIEFUSDlLX0FOSV9PRkRNX01BWF9MRVZFTClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0yMjMtXHRcdGF0aDlrX2h3X3NldF9vZmRtX25pbChhaCwgYW5pU3RhdGUtXHUwMDNlb2ZkbU5vaXNlSW1tdW5pdHlMZXZlbCAmIzQzOyAxLCBmYWxzZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jPTIyOT1zdGF0aWMgdm9pZCBhdGg5a19od19zZXRfY2NrX25pbChzdHJ1Y3QgYXRoX2h3ICphaCwgdV9pbnQ4X3QgaW1tdW5pdHlMZXZlbCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMjM4LVx0XHRhbmlTdGF0ZS1cdTAwM2VjY2tOb2lzZUltbXVuaXR5TGV2ZWwsIGltbXVuaXR5TGV2ZWwsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MjM5Olx0XHRCRUFDT05fUlNTSShhaCksIEFUSDlLX0FOSV9SU1NJX1RIUl9MT1csXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MjQwOlx0XHRBVEg5S19BTklfUlNTSV9USFJfSElHSCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMjQxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjI0MjpcdGlmIChBUl9TUkVWXzkxMDAoYWgpIFx1MDAyNlx1MDAyNiBpbW11bml0eUxldmVsIFx1MDAzYyBBVEg5S19BTklfQ0NLX0RFRl9MRVZFTClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoyNDM6XHRcdGltbXVuaXR5TGV2ZWwgPSBBVEg5S19BTklfQ0NLX0RFRl9MRVZFTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0yNDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMjQ1LVx0aWYgKGFoLVx1MDAzZW9wbW9kZSA9PSBOTDgwMjExX0lGVFlQRV9TVEFUSU9OIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjI0NjpcdCAgICBCRUFDT05fUlNTSShhaCkgXHUwMDNjPSBBVEg5S19BTklfUlNTSV9USFJfTE9XIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjI0NzpcdCAgICBpbW11bml0eUxldmVsIFx1MDAzZSBBVEg5S19BTklfQ0NLX01BWF9MRVZFTF9MT1dfUlNTSSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoyNDg6XHRcdGltbXVuaXR5TGV2ZWwgPSBBVEg5S19BTklfQ0NLX01BWF9MRVZFTF9MT1dfUlNTSTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0yNDktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTI1OC1cdFx0YXRoOWtfaHdfYW5pX2NvbnRyb2woYWgsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MjU5Olx0XHRcdFx0ICAgICBBVEg5S19BTklfRklSU1RFUF9MRVZFTCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0yNjAtXHRcdFx0XHQgICAgIGVudHJ5X2Njay1cdTAwM2VmaXJfc3RlcF9sZXZlbCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTI2OC1cdFx0YXRoOWtfaHdfYW5pX2NvbnRyb2woYWgsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MjY5Olx0XHRcdFx0ICAgICBBVEg5S19BTklfTVJDX0NDSyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0yNzAtXHRcdFx0XHQgICAgIGVudHJ5X2Njay1cdTAwM2VtcmNfY2NrX29uKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM9MjczPXN0YXRpYyB2b2lkIGF0aDlrX2h3X2FuaV9jY2tfZXJyX3RyaWdnZXIoc3RydWN0IGF0aF9odyAqYWgpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTI3Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoyNzc6XHRpZiAoYW5pU3RhdGUtXHUwMDNlY2NrTm9pc2VJbW11bml0eUxldmVsIFx1MDAzYyBBVEg5S19BTklfQ0NLX01BWF9MRVZFTClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0yNzgtXHRcdGF0aDlrX2h3X3NldF9jY2tfbmlsKGFoLCBhbmlTdGF0ZS1cdTAwM2VjY2tOb2lzZUltbXVuaXR5TGV2ZWwgJiM0MzsgMSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM9MzA5PXZvaWQgYXRoOWtfYW5pX3Jlc2V0KHN0cnVjdCBhdGhfaHcgKmFoLCBib29sIGlzX3NjYW5uaW5nKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0zMjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MzIyOlx0b2ZkbV9uaWwgPSBtYXhfdChpbnQsIEFUSDlLX0FOSV9PRkRNX0RFRl9MRVZFTCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0zMjMtXHRcdFx0IGFuaVN0YXRlLVx1MDAzZW9mZG1Ob2lzZUltbXVuaXR5TGV2ZWwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjMyNDpcdGNja19uaWwgPSBtYXhfdChpbnQsIEFUSDlLX0FOSV9DQ0tfREVGX0xFVkVMLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTMyNS1cdFx0XHQgYW5pU3RhdGUtXHUwMDNlY2NrTm9pc2VJbW11bml0eUxldmVsKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMzM2LVx0XHRpZiAoYW5pU3RhdGUtXHUwMDNlb2ZkbU5vaXNlSW1tdW5pdHlMZXZlbCAhPVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjMzNzpcdFx0ICAgIEFUSDlLX0FOSV9PRkRNX0RFRl9MRVZFTCB8fFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTMzOC1cdFx0ICAgIGFuaVN0YXRlLVx1MDAzZWNja05vaXNlSW1tdW5pdHlMZXZlbCAhPVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjMzOTpcdFx0ICAgIEFUSDlLX0FOSV9DQ0tfREVGX0xFVkVMKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMzQwLVx0XHRcdGF0aF9kYmcoY29tbW9uLCBBTkksXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTM0Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzozNDg6XHRcdFx0b2ZkbV9uaWwgPSBBVEg5S19BTklfT0ZETV9ERUZfTEVWRUw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MzQ5Olx0XHRcdGNja19uaWwgPSBBVEg5S19BTklfQ0NLX0RFRl9MRVZFTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0zNTAtXHRcdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM9NDc3PXZvaWQgYXRoOWtfaHdfYW5pX2luaXQoc3RydWN0IGF0aF9odyAqYWgpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTQ4NC1cdGlmIChBUl9TUkVWXzkzMDBfMjBfT1JfTEFURVIoYWgpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6NDg1Olx0XHRhaC1cdTAwM2Vjb25maWcub2ZkbV90cmlnX2hpZ2ggPSBBVEg5S19BTklfT0ZETV9UUklHX0hJR0g7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6NDg2Olx0XHRhaC1cdTAwM2Vjb25maWcub2ZkbV90cmlnX2xvdyA9IEFUSDlLX0FOSV9PRkRNX1RSSUdfTE9XO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjQ4NzpcdFx0YWgtXHUwMDNlY29uZmlnLmNja190cmlnX2hpZ2ggPSBBVEg5S19BTklfQ0NLX1RSSUdfSElHSDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzo0ODg6XHRcdGFoLVx1MDAzZWNvbmZpZy5jY2tfdHJpZ19sb3cgPSBBVEg5S19BTklfQ0NLX1RSSUdfTE9XO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTQ4OS1cdH0gZWxzZSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6NDkwOlx0XHRhaC1cdTAwM2Vjb25maWcub2ZkbV90cmlnX2hpZ2ggPSBBVEg5S19BTklfT0ZETV9UUklHX0hJR0hfT0xEO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjQ5MTpcdFx0YWgtXHUwMDNlY29uZmlnLm9mZG1fdHJpZ19sb3cgPSBBVEg5S19BTklfT0ZETV9UUklHX0xPV19PTEQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6NDkyOlx0XHRhaC1cdTAwM2Vjb25maWcuY2NrX3RyaWdfaGlnaCA9IEFUSDlLX0FOSV9DQ0tfVFJJR19ISUdIX09MRDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzo0OTM6XHRcdGFoLVx1MDAzZWNvbmZpZy5jY2tfdHJpZ19sb3cgPSBBVEg5S19BTklfQ0NLX1RSSUdfTE9XX09MRDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy00OTQtXHR9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtNDk1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjQ5NjpcdGFuaS1cdTAwM2VzcHVySW1tdW5pdHlMZXZlbCA9IEFUSDlLX0FOSV9TUFVSX0lNTVVORV9MVkw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6NDk3Olx0YW5pLVx1MDAzZWZpcnN0ZXBMZXZlbCA9IEFUSDlLX0FOSV9GSVJTVEVQX0xWTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy00OTgtXHRhbmktXHUwMDNlbXJjQ0NLID0gQVJfU1JFVl85MzAwXzIwX09SX0xBVEVSKGFoKSA/IHRydWUgOiBmYWxzZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtNTAwLVx0YW5pLVx1MDAzZW9mZG1XZWFrU2lnRGV0ZWN0ID0gdHJ1ZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzo1MDE6XHRhbmktXHUwMDNlY2NrTm9pc2VJbW11bml0eUxldmVsID0gQVRIOUtfQU5JX0NDS19ERUZfTEVWRUw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6NTAyOlx0YW5pLVx1MDAzZW9mZG1Ob2lzZUltbXVuaXR5TGV2ZWwgPSBBVEg5S19BTklfT0ZETV9ERUZfTEVWRUw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtNTAzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy01MDctXHQgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzo1MDg6XHRhaC1cdTAwM2VhbmlwZXJpb2QgPSBBVEg5S19BTklfUEVSSU9EO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjUwOTpcdGFoLVx1MDAzZWNvbmZpZy5hbmlfcG9sbF9pbnRlcnZhbCA9IEFUSDlLX0FOSV9QT0xMSU5URVJWQUw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtNTEwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaC0yMi0vKiB1bml0cyBhcmUgZXJyb3JzIHBlciBzZWNvbmQgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaDoyMzojZGVmaW5lIEFUSDlLX0FOSV9PRkRNX1RSSUdfSElHSCAgICAgICAgICAgMzUwMFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oOjI0OiNkZWZpbmUgQVRIOUtfQU5JX09GRE1fVFJJR19ISUdIX0JFTE9XX0lOSSAxMDAwXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmg6MjU6I2RlZmluZSBBVEg5S19BTklfT0ZETV9UUklHX0hJR0hfT0xEICAgICAgIDUwMFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oLTI2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oOjI3OiNkZWZpbmUgQVRIOUtfQU5JX09GRE1fVFJJR19MT1cgICAgICAgICAgIDQwMFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oOjI4OiNkZWZpbmUgQVRIOUtfQU5JX09GRE1fVFJJR19MT1dfQUJPVkVfSU5JIDkwMFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oOjI5OiNkZWZpbmUgQVRIOUtfQU5JX09GRE1fVFJJR19MT1dfT0xEICAgICAgIDIwMFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oLTMwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oOjMxOiNkZWZpbmUgQVRIOUtfQU5JX0NDS19UUklHX0hJR0ggICAgICAgICAgIDYwMFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oOjMyOiNkZWZpbmUgQVRIOUtfQU5JX0NDS19UUklHX0hJR0hfT0xEICAgICAgIDIwMFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oOjMzOiNkZWZpbmUgQVRIOUtfQU5JX0NDS19UUklHX0xPVyAgICAgICAgICAgIDMwMFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oOjM0OiNkZWZpbmUgQVRIOUtfQU5JX0NDS19UUklHX0xPV19PTEQgICAgICAgIDEwMFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oLTM1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oOjM2OiNkZWZpbmUgQVRIOUtfQU5JX1NQVVJfSU1NVU5FX0xWTCAgICAgICAgIDNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaDozNzojZGVmaW5lIEFUSDlLX0FOSV9GSVJTVEVQX0xWTCAgICAgICAgICAgICAyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmgtMzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmg6Mzk6I2RlZmluZSBBVEg5S19BTklfUlNTSV9USFJfSElHSCAgICAgICAgICAgNDBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaDo0MDojZGVmaW5lIEFUSDlLX0FOSV9SU1NJX1RIUl9MT1cgICAgICAgICAgICA3XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmgtNDEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmg6NDI6I2RlZmluZSBBVEg5S19BTklfUEVSSU9EICAgICAgICAgICAgICAgICAgMzAwXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmgtNDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmgtNDQtLyogaW4gbXMgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaDo0NTojZGVmaW5lIEFUSDlLX0FOSV9QT0xMSU5URVJWQUwgICAgICAgICAgICAxMDAwXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmgtNDYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmg6NDc6I2RlZmluZSBBVEg5S19TSUdfRklSU1RFUF9TRVRUSU5HX01JTiAgICAgMFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oOjQ4OiNkZWZpbmUgQVRIOUtfU0lHX0ZJUlNURVBfU0VUVElOR19NQVggICAgIDIwXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmg6NDk6I2RlZmluZSBBVEg5S19TSUdfU1BVUl9JTU1fU0VUVElOR19NSU4gICAgMFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oOjUwOiNkZWZpbmUgQVRIOUtfU0lHX1NQVVJfSU1NX1NFVFRJTkdfTUFYICAgIDIyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmgtNTEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oPTU0PWVudW0gYXRoOWtfYW5pX2NtZCB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmg6NTU6XHRBVEg5S19BTklfT0ZETV9XRUFLX1NJR05BTF9ERVRFQ1RJT04gPSAweDEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmg6NTY6XHRBVEg5S19BTklfRklSU1RFUF9MRVZFTCA9IDB4MixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaDo1NzpcdEFUSDlLX0FOSV9TUFVSX0lNTVVOSVRZX0xFVkVMID0gMHg0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oOjU4Olx0QVRIOUtfQU5JX01SQ19DQ0sgPSAweDgsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmg6NTk6XHRBVEg5S19BTklfQUxMID0gMHhmZmZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaC02MC19O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmM9OTUzPXN0YXRpYyBib29sIGFyNTAwOF9od19hbmlfY29udHJvbF9uZXcoc3RydWN0IGF0aF9odyAqYWgsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyNTAwOF9waHkuYy05NjItXHRzd2l0Y2ggKGNtZCBcdTAwMjYgYWgtXHUwMDNlYW5pX2Z1bmN0aW9uKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jOjk2MzpcdGNhc2UgQVRIOUtfQU5JX09GRE1fV0VBS19TSUdOQUxfREVURUNUSU9OOntcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmMtOTY0LVx0XHQvKlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmMtMTA0My1cdH1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmM6MTA0NDpcdGNhc2UgQVRIOUtfQU5JX0ZJUlNURVBfTEVWRUw6e1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyNTAwOF9waHkuYy0xMDQ1LVx0XHR1MzIgbGV2ZWwgPSBwYXJhbTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jLTEwNTgtXHRcdFx0XHRsZXZlbCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmM6MTA1OTpcdFx0XHRcdEFUSDlLX0FOSV9GSVJTVEVQX0xWTCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmMtMTA2MC1cdFx0XHRcdHZhbHVlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmMtMTA2Ni1cdFx0XHRcdGxldmVsLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyNTAwOF9waHkuYzoxMDY3Olx0XHRcdFx0QVRIOUtfQU5JX0ZJUlNURVBfTFZMLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyNTAwOF9waHkuYy0xMDY4LVx0XHRcdFx0dmFsdWUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyNTAwOF9waHkuYy0xMDc3LVx0fVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyNTAwOF9waHkuYzoxMDc4Olx0Y2FzZSBBVEg5S19BTklfU1BVUl9JTU1VTklUWV9MRVZFTDp7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jLTEwNzktXHRcdHUzMiBsZXZlbCA9IHBhcmFtO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmMtMTA5My1cdFx0XHRcdGxldmVsLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyNTAwOF9waHkuYzoxMDk0Olx0XHRcdFx0QVRIOUtfQU5JX1NQVVJfSU1NVU5FX0xWTCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmMtMTA5NS1cdFx0XHRcdHZhbHVlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmMtMTEwMS1cdFx0XHRcdGxldmVsLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyNTAwOF9waHkuYzoxMTAyOlx0XHRcdFx0QVRIOUtfQU5JX1NQVVJfSU1NVU5FX0xWTCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmMtMTEwMy1cdFx0XHRcdHZhbHVlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmMtMTExMi1cdH1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmM6MTExMzpcdGNhc2UgQVRIOUtfQU5JX01SQ19DQ0s6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jLTExMTQtXHRcdC8qXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyNTAwOF9waHkuYz0xMTY5PXN0YXRpYyB2b2lkIGFyNTAwOF9od19hbmlfY2FjaGVfaW5pX3JlZ3Moc3RydWN0IGF0aF9odyAqYWgpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyNTAwOF9waHkuYy0xMjEzLVx0LyogdGhlc2UgbGV2ZWxzIGp1c3QgZ290IHJlc2V0IHRvIGRlZmF1bHRzIGJ5IHRoZSBJTkkgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmM6MTIxNDpcdGFuaVN0YXRlLVx1MDAzZXNwdXJJbW11bml0eUxldmVsID0gQVRIOUtfQU5JX1NQVVJfSU1NVU5FX0xWTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmM6MTIxNTpcdGFuaVN0YXRlLVx1MDAzZWZpcnN0ZXBMZXZlbCA9IEFUSDlLX0FOSV9GSVJTVEVQX0xWTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmMtMTIxNi1cdGFuaVN0YXRlLVx1MDAzZW9mZG1XZWFrU2lnRGV0ZWN0ID0gdHJ1ZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jPTMyPXN0YXRpYyBib29sIGFyOTAwMl9od19nZXRfaXNyKHN0cnVjdCBhdGhfaHcgKmFoLCBlbnVtIGF0aDlrX2ludCAqbWFza2VkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtNjYtXHRcdFx0aWYgKGlzcjIgXHUwMDI2IEFSX0lTUl9TMl9USU0pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjY3Olx0XHRcdFx0bWFzazIgfD0gQVRIOUtfSU5UX1RJTTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtNjgtXHRcdFx0aWYgKGlzcjIgXHUwMDI2IEFSX0lTUl9TMl9EVElNKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzo2OTpcdFx0XHRcdG1hc2syIHw9IEFUSDlLX0lOVF9EVElNO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy03MC1cdFx0XHRpZiAoaXNyMiBcdTAwMjYgQVJfSVNSX1MyX0RUSU1TWU5DKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzo3MTpcdFx0XHRcdG1hc2syIHw9IEFUSDlLX0lOVF9EVElNU1lOQztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtNzItXHRcdFx0aWYgKGlzcjIgXHUwMDI2IChBUl9JU1JfUzJfQ0FCRU5EKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6NzM6XHRcdFx0XHRtYXNrMiB8PSBBVEg5S19JTlRfQ0FCRU5EO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy03NC1cdFx0XHRpZiAoaXNyMiBcdTAwMjYgQVJfSVNSX1MyX0dUVClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6NzU6XHRcdFx0XHRtYXNrMiB8PSBBVEg5S19JTlRfR1RUO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy03Ni1cdFx0XHRpZiAoaXNyMiBcdTAwMjYgQVJfSVNSX1MyX0NTVClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6Nzc6XHRcdFx0XHRtYXNrMiB8PSBBVEg5S19JTlRfQ1NUO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy03OC1cdFx0XHRpZiAoaXNyMiBcdTAwMjYgQVJfSVNSX1MyX1RTRk9PUilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6Nzk6XHRcdFx0XHRtYXNrMiB8PSBBVEg5S19JTlRfVFNGT09SO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy04MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6ODE6XHRcdFx0aWYgKCEocENhcC1cdTAwM2Vod19jYXBzIFx1MDAyNiBBVEg5S19IV19DQVBfUkFDX1NVUFBPUlRFRCkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtODItXHRcdFx0XHRSRUdfV1JJVEUoYWgsIEFSX0lTUl9TMiwgaXNyMik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy04Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6ODc6XHRcdGlmIChwQ2FwLVx1MDAzZWh3X2NhcHMgXHUwMDI2IEFUSDlLX0hXX0NBUF9SQUNfU1VQUE9SVEVEKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy04OC1cdFx0XHRpc3IgPSBSRUdfUkVBRChhaCwgQVJfSVNSX1JBQyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy05NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6OTU6XHRcdCptYXNrZWQgPSBpc3IgXHUwMDI2IEFUSDlLX0lOVF9DT01NT047XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTk2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtOTgtXHRcdFx0ICAgQVJfSVNSX1JYT0sgfCBBUl9JU1JfUlhFUlIpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzo5OTpcdFx0XHQqbWFza2VkIHw9IEFUSDlLX0lOVF9SWDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtMTAwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtMTA1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzoxMDY6XHRcdFx0Km1hc2tlZCB8PSBBVEg5S19JTlRfVFg7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTEwNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6MTA4Olx0XHRcdGlmIChwQ2FwLVx1MDAzZWh3X2NhcHMgXHUwMDI2IEFUSDlLX0hXX0NBUF9SQUNfU1VQUE9SVEVEKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTEwOS1cdFx0XHRcdHMwX3MgPSBSRUdfUkVBRChhaCwgQVJfSVNSX1MwX1MpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtMTM5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzoxNDA6XHRcdGlmIChwQ2FwLVx1MDAzZWh3X2NhcHMgXHUwMDI2IEFUSDlLX0hXX0NBUF9SQUNfU1VQUE9SVEVEKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTE0MS1cdFx0XHRzNV9zID0gUkVHX1JFQUQoYWgsIEFSX0lTUl9TNV9TKGFoKSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0xNTItXHRcdGlmIChhaC1cdTAwM2VpbnRyX2dlbl90aW1lcl90cmlnZ2VyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzoxNTM6XHRcdFx0Km1hc2tlZCB8PSBBVEg5S19JTlRfR0VOVElNRVI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTE1NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtMTU1LVx0XHRpZiAoKHM1X3MgXHUwMDI2IEFSX0lTUl9TNV9USU1fVElNRVIpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzoxNTY6XHRcdCAgICAhKHBDYXAtXHUwMDNlaHdfY2FwcyBcdTAwMjYgQVRIOUtfSFdfQ0FQX0FVVE9TTEVFUCkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjE1NzpcdFx0XHQqbWFza2VkIHw9IEFUSDlLX0lOVF9USU1fVElNRVI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTE1OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6MTU5Olx0XHRpZiAoIShwQ2FwLVx1MDAzZWh3X2NhcHMgXHUwMDI2IEFUSDlLX0hXX0NBUF9SQUNfU1VQUE9SVEVEKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0xNjAtXHRcdFx0UkVHX1dSSVRFKGFoLCBBUl9JU1JfUzUsIHM1X3MpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtMTY0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzoxNjU6XHRpZiAoIShwQ2FwLVx1MDAzZWh3X2NhcHMgXHUwMDI2IEFUSDlLX0hXX0NBUF9SQUNfU1VQUE9SVEVEKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0xNjYtXHRcdFJFR19XUklURShhaCwgQVJfSVNSLCBpc3IpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtMTg5LVx0XHRcdH1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6MTkwOlx0XHRcdCptYXNrZWQgfD0gQVRIOUtfSU5UX0ZBVEFMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0xOTEtXHRcdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTE5Ni1cdFx0XHRSRUdfV1JJVEUoYWgsIEFSX1JDLCAwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6MTk3Olx0XHRcdCptYXNrZWQgfD0gQVRIOUtfSU5UX0ZBVEFMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0xOTgtXHRcdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jPTIxMj1hcjkwMDJfc2V0X3R4ZGVzYyhzdHJ1Y3QgYXRoX2h3ICphaCwgdm9pZCAqZHMsIHN0cnVjdCBhdGhfdHhfaW5mbyAqaSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTI2MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6MjYxOlx0Y3RsMSB8PSAoaS1cdTAwM2VrZXlpeCAhPSBBVEg5S19UWEtFWUlYX0lOVkFMSUQgPyBTTShpLVx1MDAzZWtleWl4LCBBUl9EZXN0SWR4KSA6IDApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTI2Mi1cdFx0fCBTTShpLVx1MDAzZXR5cGUsIEFSX0ZyYW1lVHlwZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6MjYzOlx0XHR8IChpLVx1MDAzZWZsYWdzIFx1MDAyNiBBVEg5S19UWERFU0NfTk9BQ0sgPyBBUl9Ob0FjayA6IDApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjI2NDpcdFx0fCAoaS1cdTAwM2VmbGFncyBcdTAwMjYgQVRIOUtfVFhERVNDX0VYVF9PTkxZID8gQVJfRXh0T25seSA6IDApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjI2NTpcdFx0fCAoaS1cdTAwM2VmbGFncyBcdTAwMjYgQVRIOUtfVFhERVNDX0VYVF9BTkRfQ1RMID8gQVJfRXh0QW5kQ3RsIDogMCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTI2Ni1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTI4Mi1cdFdSSVRFX09OQ0UoYWRzLVx1MDAzZWRzX2N0bDAsIChpLVx1MDAzZXBrdF9sZW4gXHUwMDI2IEFSX0ZyYW1lTGVuKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzoyODM6XHRcdHwgKGktXHUwMDNlZmxhZ3MgXHUwMDI2IEFUSDlLX1RYREVTQ19WTUYgPyBBUl9WaXJ0TW9yZUZyYWcgOiAwKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0yODQtXHRcdHwgU00oaS1cdTAwM2V0eHBvd2VyWzBdLCBBUl9YbWl0UG93ZXIwKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzoyODU6XHRcdHwgKGktXHUwMDNlZmxhZ3MgXHUwMDI2IEFUSDlLX1RYREVTQ19WRU9MID8gQVJfVkVPTCA6IDApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjI4NjpcdFx0fCAoaS1cdTAwM2VmbGFncyBcdTAwMjYgQVRIOUtfVFhERVNDX0lOVFJFUSA/IEFSX1R4SW50clJlcSA6IDApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjI4NzpcdFx0fCAoaS1cdTAwM2VrZXlpeCAhPSBBVEg5S19UWEtFWUlYX0lOVkFMSUQgPyBBUl9EZXN0SWR4VmFsaWQgOiAwKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzoyODg6XHRcdHwgKGktXHUwMDNlZmxhZ3MgXHUwMDI2IEFUSDlLX1RYREVTQ19DTFJETUFTSyA/IEFSX0NsckRlc3RNYXNrIDogMClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6Mjg5Olx0XHR8IChpLVx1MDAzZWZsYWdzIFx1MDAyNiBBVEg5S19UWERFU0NfUlRTRU5BID8gQVJfUlRTRW5hYmxlIDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6MjkwOlx0XHQgICAoaS1cdTAwM2VmbGFncyBcdTAwMjYgQVRIOUtfVFhERVNDX0NUU0VOQSA/IEFSX0NUU0VuYWJsZSA6IDApKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTI5MS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jPTMxNj1zdGF0aWMgaW50IGFyOTAwMl9od19wcm9jX3R4ZGVzYyhzdHJ1Y3QgYXRoX2h3ICphaCwgdm9pZCAqZHMsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0zMzAtXHRpZiAoc3RhdHVzIFx1MDAyNiBBUl9UeE9wRXhjZWVkZWQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjMzMTpcdFx0dHMtXHUwMDNldHNfc3RhdHVzIHw9IEFUSDlLX1RYRVJSX1hUWE9QO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0zMzItXHR0cy1cdTAwM2V0aWQgPSBNUyhzdGF0dXMsIEFSX1R4VGlkKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTM0MC1cdGlmIChzdGF0dXMgXHUwMDI2IEFSX1R4QmFTdGF0dXMpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6MzQxOlx0XHR0cy1cdTAwM2V0c19mbGFncyB8PSBBVEg5S19UWF9CQTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtMzQyLVx0XHR0cy1cdTAwM2ViYV9sb3cgPSBhZHMtXHUwMDNlQVJfQmFCaXRtYXBMb3c7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0zNDctXHRpZiAoc3RhdHVzIFx1MDAyNiBBUl9Gcm1YbWl0T0spXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjM0ODpcdFx0dHMtXHUwMDNldHNfc3RhdHVzIHw9IEFUSDlLX1RYX0FDS0VEO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0zNDktXHRlbHNlIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtMzUwLVx0XHRpZiAoc3RhdHVzIFx1MDAyNiBBUl9FeGNlc3NpdmVSZXRyaWVzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzozNTE6XHRcdFx0dHMtXHUwMDNldHNfc3RhdHVzIHw9IEFUSDlLX1RYRVJSX1hSRVRSWTtcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAxMjo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzODM1MQoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgaXQgbXlzZWxmLCB0YWlsb3JlZCBmb3Igc29tZW9uZSBpbiBteSBmaWVsZDoKCioqRGlnZ2luZyBpbnRvIEFUSDlLX0hUQyBEZXBlbmRlbmNpZXMqKgoKUmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvS2NvbmZpZ2AgZmlsZS4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBzdXJyb3VuZGluZyBjb25maWd1cmF0aW9ucyByZWxhdGVkIHRvIGBBVEg5S19IVENgLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gdGhpbmtpbmcgSSBzaG91bGQgY2hlY2sgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgZW5jbG9zaW5nIG9yIGNvbmRpdGlvbmFsIGNvbmZpZ3VyYXRpb25zIHRoYXQgbWlnaHQgaW1wYWN0IG9yIGRlcGVuZCBvbiBgQVRIOUtfSFRDYC4gSXQmIzM5O3MgY3J1Y2lhbCB0byB1bmRlcnN0YW5kIHRoZSBicm9hZGVyIGNvbnRleHQuIFVuZGVyc3RhbmRpbmcgZGVwZW5kZW5jaWVzIGlzIGtleSB0byBhdm9pZCB1bmludGVuZGVkIGNvbnNlcXVlbmNlcyBvciBtaXNzaW5nIGNyaXRpY2FsIGVsZW1lbnRzIHdoZW4gbW9kaWZ5aW5nIHRoaXMgbW9kdWxlLiBHb3R0YSB0cmFjZSB0aGUgaW5oZXJpdGFuY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDEyOjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NvdXJjZS4qYXRoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWc9MjE9c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2FkbXRlay9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9LY29uZmlnOjIyOnNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvS2NvbmZpZy0yMy1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRtZWwvS2NvbmZpZ1wmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9LY29uZmlnPTQ5PWNvbmZpZyBBVEhfUkVHX0RZTkFNSUNfVVNFUl9DRVJUX1RFU1RJTkdcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvS2NvbmZpZy01Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9LY29uZmlnOjU3OnNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNWsvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL0tjb25maWc6NTg6c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvS2NvbmZpZzo1OTpzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9LY29uZmlnOjYwOnNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9LY29uZmlnOjYxOnNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXI1NTIzL0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9LY29uZmlnOjYyOnNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvS2NvbmZpZzo2Mzpzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvS2NvbmZpZzo2NDpzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL0tjb25maWc6NjU6c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL0tjb25maWc6NjY6c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL0tjb25maWctNjctXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9haGIuYz00MzA9c3RhdGljIHZvaWQgYXRoMTBrX2FoYl9pcnFfZGlzYWJsZShzdHJ1Y3QgYXRoMTBrICphcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2FoYi5jLTQzNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvYWhiLmM6NDM2OnN0YXRpYyBpbnQgYXRoMTBrX2FoYl9yZXNvdXJjZV9pbml0KHN0cnVjdCBhdGgxMGsgKmFyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9haGIuYy00Mzcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvYWhiLmMtNTIzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9haGIuYzo1MjQ6c3RhdGljIHZvaWQgYXRoMTBrX2FoYl9yZXNvdXJjZV9kZWluaXQoc3RydWN0IGF0aDEwayAqYXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2FoYi5jLTUyNS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYz0yMDQ9YXRoMTBrX21hY19tYXhfdmh0X25zcyhjb25zdCB1MTYgdmh0X21jc19tYXNrW05MODAyMTFfVkhUX05TU19NQVhdKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtMjE0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYzoyMTU6aW50IGF0aDEwa19tYWNfZXh0X3Jlc291cmNlX2NvbmZpZyhzdHJ1Y3QgYXRoMTBrICphciwgdTMyIHZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtMjE2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5oPTcwPXN0cnVjdCBpZWVlODAyMTFfdHhxICphdGgxMGtfbWFjX3R4cV9sb29rdXAoc3RydWN0IGF0aDEwayAqYXIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuaC03Mi1cdFx0XHRcdFx0ICAgIHU4IHRpZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5oOjczOmludCBhdGgxMGtfbWFjX2V4dF9yZXNvdXJjZV9jb25maWcoc3RydWN0IGF0aDEwayAqYXIsIHUzMiB2YWwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuaC03NC12b2lkIGF0aDEwa19tYWNfd2FpdF90eF9jb21wbGV0ZShzdHJ1Y3QgYXRoMTBrICphcik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9wY2kuYz0xNzg5PXZvaWQgYXRoMTBrX3BjaV9oaWZfc2VuZF9jb21wbGV0ZV9jaGVjayhzdHJ1Y3QgYXRoMTBrICphciwgdTggcGlwZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3BjaS5jLTE4MDQtXHRcdCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9wY2kuYzoxODA1Olx0XHRyZXNvdXJjZXMgPSBhdGgxMGtfcGNpX2hpZl9nZXRfZnJlZV9xdWV1ZV9udW1iZXIoYXIsIHBpcGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9wY2kuYy0xODA2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvcGNpLmM9MzQzNz1zdGF0aWMgYm9vbCBhdGgxMGtfcGNpX2NoaXBfaXNfc3VwcG9ydGVkKHUzMiBkZXZfaWQsIHUzMiBjaGlwX2lkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvcGNpLmMtMzQ1My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvcGNpLmM6MzQ1NDppbnQgYXRoMTBrX3BjaV9zZXR1cF9yZXNvdXJjZShzdHJ1Y3QgYXRoMTBrICphcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvcGNpLmMtMzQ1NS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9wY2kuYy0zNTEwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9wY2kuYzozNTExOnZvaWQgYXRoMTBrX3BjaV9yZWxlYXNlX3Jlc291cmNlKHN0cnVjdCBhdGgxMGsgKmFyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9wY2kuYy0zNTEyLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3BjaS5oPTI1MD1pbnQgYXRoMTBrX3BjaV93YWl0X2Zvcl90YXJnZXRfaW5pdChzdHJ1Y3QgYXRoMTBrICphcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3BjaS5oOjI1MTppbnQgYXRoMTBrX3BjaV9zZXR1cF9yZXNvdXJjZShzdHJ1Y3QgYXRoMTBrICphcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3BjaS5oOjI1Mjp2b2lkIGF0aDEwa19wY2lfcmVsZWFzZV9yZXNvdXJjZShzdHJ1Y3QgYXRoMTBrICphcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3BjaS5oLTI1My1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Nub2MuYz03NjE9c3RhdGljIHZvaWQgYXRoMTBrX3Nub2NfaGlmX3NlbmRfY29tcGxldGVfY2hlY2soc3RydWN0IGF0aDEwayAqYXIsIHU4IHBpcGUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9zbm9jLmMtNzY4LVx0aWYgKCFmb3JjZSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9zbm9jLmM6NzY5Olx0XHRyZXNvdXJjZXMgPSBhdGgxMGtfc25vY19oaWZfZ2V0X2ZyZWVfcXVldWVfbnVtYmVyKGFyLCBwaXBlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvc25vYy5jLTc3MC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Nub2MuYz0xMzA1PXN0YXRpYyB2b2lkIGF0aDEwa19zbm9jX2ZyZWVfaXJxKHN0cnVjdCBhdGgxMGsgKmFyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvc25vYy5jLTEzMTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Nub2MuYzoxMzE0OnN0YXRpYyBpbnQgYXRoMTBrX3Nub2NfcmVzb3VyY2VfaW5pdChzdHJ1Y3QgYXRoMTBrICphcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvc25vYy5jLTEzMTUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvc25vYy5jPTEzNzE9aW50IGF0aDEwa19zbm9jX2Z3X2luZGljYXRpb24oc3RydWN0IGF0aDEwayAqYXIsIHU2NCB0eXBlKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvc25vYy5jLTE0MDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Nub2MuYzoxNDA5OnN0YXRpYyBpbnQgYXRoMTBrX3Nub2Nfc2V0dXBfcmVzb3VyY2Uoc3RydWN0IGF0aDEwayAqYXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Nub2MuYy0xNDEwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Nub2MuYy0xNDM3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9zbm9jLmM6MTQzODpzdGF0aWMgdm9pZCBhdGgxMGtfc25vY19yZWxlYXNlX3Jlc291cmNlKHN0cnVjdCBhdGgxMGsgKmFyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9zbm9jLmMtMTQzOS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9zbm9jLmM9MTU3Mz1zdGF0aWMgdm9pZCBhdGgxMGtfbW9kZW1fZGVpbml0KHN0cnVjdCBhdGgxMGsgKmFyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvc25vYy5jLTE1ODItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Nub2MuYzoxNTgzOnN0YXRpYyBpbnQgYXRoMTBrX3NldHVwX21zYV9yZXNvdXJjZXMoc3RydWN0IGF0aDEwayAqYXIsIHUzMiBtc2Ffc2l6ZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvc25vYy5jLTE1ODQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvc25vYy5jPTE3MzI9c3RhdGljIGludCBhdGgxMGtfc25vY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvc25vYy5jLTE4OTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Nub2MuYzoxODk1OnN0YXRpYyBpbnQgYXRoMTBrX3Nub2NfZnJlZV9yZXNvdXJjZXMoc3RydWN0IGF0aDEwayAqYXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Nub2MuYy0xODk2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jPTc0PXN0YXRpYyB2b2lkIGF0aDEwa191c2JfY2xlYW51cF9yZWN2X3VyYihzdHJ1Y3QgYXRoMTBrX3VyYl9jb250ZXh0ICp1cmJfY29udGV4dClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTgxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo4MjpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX2ZyZWVfcGlwZV9yZXNvdXJjZXMoc3RydWN0IGF0aDEwayAqYXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTgzLVx0XHRcdFx0XHQgICBzdHJ1Y3QgYXRoMTBrX3VzYl9waXBlICpwaXBlKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTEzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMTQ6c3RhdGljIHZvaWQgYXRoMTBrX3VzYl9jbGVhbnVwX3BpcGVfcmVzb3VyY2VzKHN0cnVjdCBhdGgxMGsgKmFyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMTUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM9NzQ2PXN0YXRpYyB1OCBhdGgxMGtfdXNiX2dldF9sb2dpY2FsX3BpcGVfbnVtKHU4IGVwX2FkZHJlc3MsIGludCAqdXJiX2NvdW50KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzkwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3OTE6c3RhdGljIGludCBhdGgxMGtfdXNiX2FsbG9jX3BpcGVfcmVzb3VyY2VzKHN0cnVjdCBhdGgxMGsgKmFyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03OTItXHRcdFx0XHRcdCAgIHN0cnVjdCBhdGgxMGtfdXNiX3BpcGUgKnBpcGUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy04MjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjgyMzpzdGF0aWMgaW50IGF0aDEwa191c2Jfc2V0dXBfcGlwZV9yZXNvdXJjZXMoc3RydWN0IGF0aDEwayAqYXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTgyNC1cdFx0XHRcdFx0ICAgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS1vcHMuaD0xND1zdHJ1Y3Qgd21pX29wcyB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWktb3BzLmgtMjA5LVx0XHRcdFx0XHRcdFx0dTMyIGRldGVjdF9tYXJnaW4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWktb3BzLmg6MjEwOlx0c3RydWN0IHNrX2J1ZmYgKigqZXh0X3Jlc291cmNlX2NvbmZpZykoc3RydWN0IGF0aDEwayAqYXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS1vcHMuaC0yMTEtXHRcdFx0XHRcdCAgICAgICBlbnVtIHdtaV9ob3N0X3BsYXRmb3JtX3R5cGUgdHlwZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS1vcHMuaD0xNTc5PXN0YXRpYyBpbmxpbmUgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS1vcHMuaDoxNTgwOmF0aDEwa193bWlfZXh0X3Jlc291cmNlX2NvbmZpZyhzdHJ1Y3QgYXRoMTBrICphcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLW9wcy5oLTE1ODEtXHRcdFx0ICAgICAgIGVudW0gd21pX2hvc3RfcGxhdGZvcm1fdHlwZSB0eXBlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmM9ODg1NT1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYzo4ODU2OmF0aDEwa193bWlfMTBfNF9leHRfcmVzb3VyY2VfY29uZmlnKHN0cnVjdCBhdGgxMGsgKmFyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYy04ODU3LVx0XHRcdFx0ICAgIGVudW0gd21pX2hvc3RfcGxhdGZvcm1fdHlwZSB0eXBlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmM9OTQzOD1zdGF0aWMgY29uc3Qgc3RydWN0IHdtaV9vcHMgd21pXzEwXzRfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmMtOTQ5Ni1cdC5md19zdGF0c19maWxsID0gYXRoMTBrX3dtaV8xMF80X29wX2Z3X3N0YXRzX2ZpbGwsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS5jOjk0OTc6XHQuZXh0X3Jlc291cmNlX2NvbmZpZyA9IGF0aDEwa193bWlfMTBfNF9leHRfcmVzb3VyY2VfY29uZmlnLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYy05NDk4LVx0Lmdlbl91cGRhdGVfZndfdGRsc19zdGF0ZSA9IGF0aDEwa193bWlfMTBfNF9nZW5fdXBkYXRlX2Z3X3RkbHNfc3RhdGUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYz04Mjg9c3RhdGljIGludCBhdGgxMWtfY29yZV9nZXRfcnByb2Moc3RydWN0IGF0aDExa19iYXNlICphYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTg0Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6ODQ4OnN0YXRpYyBpbnQgYXRoMTFrX2FoYl9zZXR1cF9tc2lfcmVzb3VyY2VzKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTg0OS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYz05MTY9c3RhdGljIHZvaWQgYXRoMTFrX2FoYl9yZWxlYXNlX3NtcDJwX2hhbmRsZShzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtOTI1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo5MjY6c3RhdGljIGludCBhdGgxMWtfYWhiX3NldHVwX3Jlc291cmNlcyhzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy05Mjcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtOTQ2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo5NDc6c3RhdGljIGludCBhdGgxMWtfYWhiX3NldHVwX21zYV9yZXNvdXJjZXMoc3RydWN0IGF0aDExa19iYXNlICphYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtOTQ4LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jPTk5OT1zdGF0aWMgdm9pZCBhdGgxMWtfYWhiX2NlX3VubWFwKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0xMDA0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoxMDA1OnN0YXRpYyBpbnQgYXRoMTFrX2FoYl9md19yZXNvdXJjZXNfaW5pdChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0xMDA2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTExMDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjExMDQ6c3RhdGljIGludCBhdGgxMWtfYWhiX2Z3X3Jlc291cmNlX2RlaW5pdChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0xMTA1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jPTEyNjQ9c3RhdGljIHZvaWQgYXRoMTFrX2FoYl9yZW1vdmVfcHJlcGFyZShzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMTI3OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MTI4MDpzdGF0aWMgdm9pZCBhdGgxMWtfYWhiX2ZyZWVfcmVzb3VyY2VzKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTEyODEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYz00Mz1pbnQgYXRoMTFrX2RwX3BlZXJfc2V0dXAoc3RydWN0IGF0aDExayAqYXIsIGludCB2ZGV2X2lkLCBjb25zdCB1OCAqYWRkcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtNzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmM6Nzk6XHQvKiBUT0RPOiBTZXR1cCBvdGhlciBwZWVyIHNwZWNpZmljIHJlc291cmNlIHVzZWQgaW4gZGF0YSBwYXRoICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtODAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9xbWkuYz0zMzY0PUVYUE9SVF9TWU1CT0woYXRoMTFrX3FtaV9kZWluaXRfc2VydmljZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3FtaS5jLTMzNjUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3FtaS5jOjMzNjY6dm9pZCBhdGgxMWtfcW1pX2ZyZWVfcmVzb3VyY2Uoc3RydWN0IGF0aDExa19iYXNlICphYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcW1pLmMtMzM2Ny17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9xbWkuaD01MjE9aW50IGF0aDExa19xbWlfaW5pdF9zZXJ2aWNlKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9xbWkuaDo1MjI6dm9pZCBhdGgxMWtfcW1pX2ZyZWVfcmVzb3VyY2Uoc3RydWN0IGF0aDExa19iYXNlICphYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3FtaS5oLTUyMy1pbnQgYXRoMTFrX3FtaV9md3Jlc2V0X2Zyb21fY29sZF9ib290KHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM9MTAxMT1zdGF0aWMgdm9pZCBhdGgxMmtfYWhiX2RlY29uZmlndXJlX3Jwcm9jKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xMDM1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoxMDM2OnN0YXRpYyBpbnQgYXRoMTJrX2FoYl9yZXNvdXJjZV9pbml0KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTEwMzcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMTA5OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MTEwMDpzdGF0aWMgdm9pZCBhdGgxMmtfYWhiX3Jlc291cmNlX2RlaW5pdChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xMTAxLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jPTEyNjc9c3RhdGljIHZvaWQgYXRoMTJrX2FoYl9yZW1vdmVfcHJlcGFyZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMTI4Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MTI4MzpzdGF0aWMgdm9pZCBhdGgxMmtfYWhiX2ZyZWVfcmVzb3VyY2VzKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTEyODQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuYz00Nz1pbnQgYXRoMTJrX2RwX3BlZXJfc2V0dXAoc3RydWN0IGF0aDEyayAqYXIsIGludCB2ZGV2X2lkLCBjb25zdCB1OCAqYWRkcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmMtODItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmM6ODM6XHQvKiBUT0RPOiBTZXR1cCBvdGhlciBwZWVyIHNwZWNpZmljIHJlc291cmNlIHVzZWQgaW4gZGF0YSBwYXRoICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmMtODQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9xbWkuYz00MTAzPXZvaWQgYXRoMTJrX3FtaV9kZWluaXRfc2VydmljZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcW1pLmMtNDExNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcW1pLmM6NDExNzp2b2lkIGF0aDEya19xbWlfZnJlZV9yZXNvdXJjZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9xbWkuYy00MTE4LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3FtaS5oPTYzMz1pbnQgYXRoMTJrX3FtaV9pbml0X3NlcnZpY2Uoc3RydWN0IGF0aDEya19iYXNlICphYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3FtaS5oOjYzNDp2b2lkIGF0aDEya19xbWlfZnJlZV9yZXNvdXJjZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcW1pLmgtNjM1LXZvaWQgYXRoMTJrX3FtaV90cmlnZ2VyX2hvc3RfY2FwKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmM9NDE0Mz1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYzo0MTQ0OmF0aDEya193bWlfY29weV9yZXNvdXJjZV9jb25maWcoc3RydWN0IGF0aDEya19iYXNlICphYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMtNDE0NS1cdFx0XHRcdHN0cnVjdCBhdGgxMmtfd21pX3Jlc291cmNlX2NvbmZpZ19wYXJhbXMgKndtaV9jZmcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYz0xNzc9c3RhdGljIGlubGluZSBzdHJ1Y3QgYXRoNmtsX3VzYiAqYXRoNmtsX3VzYl9wcml2KHN0cnVjdCBhdGg2a2wgKmFyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTgyLS8qIHBpcGUgcmVzb3VyY2UgYWxsb2NhdGlvbi9jbGVhbnVwICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjE4MzpzdGF0aWMgaW50IGF0aDZrbF91c2JfYWxsb2NfcGlwZV9yZXNvdXJjZXMoc3RydWN0IGF0aDZrbF91c2JfcGlwZSAqcGlwZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTg0LVx0XHRcdFx0XHQgICBpbnQgdXJiX2NudClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTIxNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MjE4OnN0YXRpYyB2b2lkIGF0aDZrbF91c2JfZnJlZV9waXBlX3Jlc291cmNlcyhzdHJ1Y3QgYXRoNmtsX3VzYl9waXBlICpwaXBlKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0yMTkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMjQ4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoyNDk6c3RhdGljIHZvaWQgYXRoNmtsX3VzYl9jbGVhbnVwX3BpcGVfcmVzb3VyY2VzKHN0cnVjdCBhdGg2a2xfdXNiICphcl91c2IpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTI1MC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYz0yNTc9c3RhdGljIHU4IGF0aDZrbF91c2JfZ2V0X2xvZ2ljYWxfcGlwZV9udW0oc3RydWN0IGF0aDZrbF91c2IgKmFyX3VzYixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTMwMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MzAzOnN0YXRpYyBpbnQgYXRoNmtsX3VzYl9zZXR1cF9waXBlX3Jlc291cmNlcyhzdHJ1Y3QgYXRoNmtsX3VzYiAqYXJfdXNiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0zMDQte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAxMjo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDc0NgoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaXQgaXM6CgoqKkNoZWNraW5nIGBBVEhfQ09NTU9OYCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL0tjb25maWdgKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgZ29pbmcgb24gd2l0aCB0aGUgQXRoZXJvcyB3aXJlbGVzcyBkcml2ZXJzIGluIHRoaXMga2VybmVsIGJ1aWxkLCBhbmQgdGhlIGZpcnN0IGxvZ2ljYWwgc3RlcCBpcyB0byBjaGVjayB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgYEFUSF9DT01NT05gLiBJIGtub3cgdGhhdCYjMzk7cyBhIGtleSBjb21tb24gY29uZmlndXJhdGlvbiBmb3IgdGhlIEF0aGVyb3MgZHJpdmVyLCBzbyB0aGF0JiMzOTtzIHdoZXJlIEkmIzM5O2xsIHN0YXJ0IGxvb2tpbmcuIEkmIzM5O2xsIG5lZWQgdG8gc2VlIGhvdyBpdCYjMzk7cyBkZWZpbmVkLCBpdHMgZGVwZW5kZW5jaWVzLCBhbmQgd2hhdCBvdGhlciBvcHRpb25zIGFyZSBpbmZsdWVuY2VkIGJ5IGl0cyBzdGF0ZS4gVGhpcyB3aWxsIGhlbHAgbWUgdW5kZXJzdGFuZCB0aGUgb3ZlcmFsbCBidWlsZCBjb25maWd1cmF0aW9uIGFuZCBwaW5wb2ludCBhbnkgcG90ZW50aWFsIGlzc3VlcyBvciB1bmRlcnN0YW5kIHRoZSByYXRpb25hbGUgYmVoaW5kIGNlcnRhaW4gc2V0dGluZ3MsIGdpdmVuIG15IGV4cGVydGlzZSBpbiB0aGUgZmllbGQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDEyOjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBJU0NcbiAgIDI6XHRjb25maWcgQVRIX0NPTU1PTlxuICAgMzpcdFx0dHJpc3RhdGVcbiAgIDQ6XHRcbiAgIDU6XHRjb25maWcgV0xBTl9WRU5ET1JfQVRIXG4gICA2Olx0XHRib29sIFwmIzM0O0F0aGVyb3MvUXVhbGNvbW0gZGV2aWNlc1wmIzM0O1xuICAgNzpcdFx0ZGVmYXVsdCB5XG4gICA4Olx0XHRoZWxwXG4gICA5Olx0XHQgIElmIHlvdSBoYXZlIGEgd2lyZWxlc3MgY2FyZCBiZWxvbmdpbmcgdG8gdGhpcyBjbGFzcywgc2F5IFkuXG4gIDEwOlx0XG4gIDExOlx0XHQgIE5vdGUgdGhhdCB0aGUgYW5zd2VyIHRvIHRoaXMgcXVlc3Rpb24gZG9lc24mIzM5O3QgZGlyZWN0bHkgYWZmZWN0IHRoZVxuICAxMjpcdFx0ICBrZXJuZWw6IHNheWluZyBOIHdpbGwganVzdCBjYXVzZSB0aGUgY29uZmlndXJhdG9yIHRvIHNraXAgYWxsIHRoZVxuICAxMzpcdFx0ICBxdWVzdGlvbnMgYWJvdXQgdGhlc2UgY2FyZHMuIElmIHlvdSBzYXkgWSwgeW91IHdpbGwgYmUgYXNrZWQgZm9yXG4gIDE0Olx0XHQgIHlvdXIgc3BlY2lmaWMgY2FyZCBpbiB0aGUgZm9sbG93aW5nIHF1ZXN0aW9ucy5cbiAgMTU6XHRcbiAgMTY6XHRcdCAgRm9yIG1vcmUgaW5mb3JtYXRpb24gYW5kIGRvY3VtZW50YXRpb24gb24gdGhpcyBtb2R1bGUgeW91IGNhbiB2aXNpdDpcbiAgMTc6XHRcbiAgMTg6XHRcdCAgaHR0cHM6Ly93aXJlbGVzcy53aWtpLmtlcm5lbC5vcmcvZW4vdXNlcnMvRHJpdmVycy9hdGhcbiAgMTk6XHRcbiAgMjA6XHRcdCAgRm9yIGluZm9ybWF0aW9uIG9uIGFsbCBBdGhlcm9zIHdpcmVsZXNzIGRyaXZlcnMgdmlzaXQ6XG4gIDIxOlx0XG4gIDIyOlx0XHQgIGh0dHBzOi8vd2lyZWxlc3Mud2lraS5rZXJuZWwub3JnL2VuL3VzZXJzL0RyaXZlcnMvQXRoZXJvc1xuICAyMzpcdFxuICAyNDpcdGlmIFdMQU5fVkVORE9SX0FUSFxuICAyNTpcdFxuICAyNjpcdGNvbmZpZyBBVEhfREVCVUdcbiAgMjc6XHRcdGJvb2wgXCYjMzQ7QXRoZXJvcyB3aXJlbGVzcyBkZWJ1Z2dpbmdcJiMzNDtcbiAgMjg6XHRcdGhlbHBcbiAgMjk6XHRcdCAgU2F5IFksIGlmIHlvdSB3YW50IHRvIGRlYnVnIGF0aGVyb3Mgd2lyZWxlc3MgZHJpdmVycy5cbiAgMzA6XHRcdCAgUmlnaHQgbm93IG9ubHkgYXRoOWsgbWFrZXMgdXNlIG9mIHRoaXMuXG4gIDMxOlx0XG4gIDMyOlx0Y29uZmlnIEFUSF9UUkFDRVBPSU5UU1xuICAzMzpcdFx0Ym9vbCBcJiMzNDtBdGhlcm9zIHdpcmVsZXNzIHRyYWNpbmdcJiMzNDtcbiAgMzQ6XHRcdGRlcGVuZHMgb24gQVRIX0RFQlVHXG4gIDM1Olx0XHRkZXBlbmRzIG9uIEVWRU5UX1RSQUNJTkdcbiAgMzY6XHRcdGhlbHBcbiAgMzc6XHRcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0cmFjZXBvaW50cyBmb3IgYXRoZXJvcyB3aXJlbGVzcyBkcml2ZXJzLlxuICAzODpcdFx0ICBDdXJyZW50bHksIGF0aDlrIG1ha2VzIHVzZSBvZiB0aGlzIGZhY2lsaXR5LlxuICAzOTpcdFxuICA0MDpcdGNvbmZpZyBBVEhfUkVHX0RZTkFNSUNfVVNFUl9SRUdfSElOVFNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMTI6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDU0ODAKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA0MTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIGF0aDlrX2h0YyBEcml2ZXIgRGVwZW5kZW5jaWVzIGFuZCBTeW1ib2wgU2NvcGUqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93biBzeXN0ZW1hdGljYWxseS4gRmlyc3QsIEkgbmVlZCB0byBjb25maXJtIHRoZSBjb3JlIGRlcGVuZGVuY2llcy4gSXQgbG9va3MgbGlrZSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZTogYFVTQmAsIGBNQUM4MDIxMWAsIGBBVEg5S19IVENgLCBhbmQgYFdMQU5fVkVORE9SX0FUSGAuIFNwZWNpZmljYWxseSwgYENPTkZJR19BVEg5S19IVENgIGFwcGVhcnMgdG8gYmUgdGhlIHByaW1hcnkgY29uZmlndXJhdGlvbiBvcHRpb24sIGFuZCBJIGFsc28gbmVlZCB0byBlbnN1cmUgdGhhdCBgQ09ORklHX1VTQmAsIGBDT05GSUdfTUFDODAyMTFgLCBhbmQgYENPTkZJR19XTEFOX1ZFTkRPUl9BVEhgIGFyZSBhbGwgZW5hYmxlZC4KCk5vdywgbGV0JiMzOTtzIGRyaWxsIGRvd24gaW50byB0aGUga2V5IHN5bWJvbHMgdGhhdCBhcmUgZGlyZWN0bHkgaW1wYWN0ZWQgb3Igc3Ryb25nbHkgY29ubmVjdGVkIHRvIHRoaXMgY29kZS4gSXQgc2VlbXMgbGlrZSB0aGUgZm9jdXMgaXMgb24gdGhlc2U6CgoqICAgYGhpZl91c2Jfc2VuZF9yZWdvdXRgOiBUaGlzIG9uZSB3YXMgZGlyZWN0bHkgbW9kaWZpZWQsIHNwZWNpZmljYWxseSB3aXRoIHRoZSBhZGRpdGlvbiBvZiBhIGBXQVJOX09OQ0VgIGNoZWNrLgoqICAgYGF0aDlrX3JlZ19ybXdfYnVmZmVyYDogVGhpcyB3YXMgZGlyZWN0bHkgbW9kaWZpZWQsIHdoZXJlIHRoZXJlIHdhcyBhIGZpeCBtYWRlIGZvciBhIHJlZ2lzdGVyX3JtdyBzaXplb2YgY2FsY3VsYXRpb24uCiogICBgYXRoOWtfcmVnX3Jtd2A6IFRoaXMgaXMgYSBjYWxsZXIgb2YgYGF0aDlrX3JlZ19ybXdfYnVmZmVyYCwgc28gaXQmIzM5O3MgcmVsZXZhbnQgaW4gdGVybXMgb2YgY29udHJvbCBmbG93LgoqICAgYGF0aDlrX3JlZ19ybXdfZmx1c2hgOiBUaGlzIG9uZSBpcyByZXNwb25zaWJsZSBmb3IgZmx1c2hpbmcgdGhlIGJ1ZmZlciwgc28gaXQmIzM5O3MgaW1wb3J0YW50IGZvciB0aGUgb3ZlcmFsbCByZWdpc3RlciBtb2RpZmljYXRpb24gcHJvY2Vzcy4KKiAgIGBoaWZfdXNiX3NlbmRgOiBUaGlzIG9uZSBjYWxscyBgaGlmX3VzYl9zZW5kX3JlZ291dGAuCgpJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUgYW5kIHZpc2liaWxpdHkgb2YgdGhlc2UgZnVuY3Rpb25zIOKAkyBhcmUgdGhleSBzdGF0aWMsIGV4cG9ydGVkLCBvciBwYXJ0IG9mIHRoZSBiaW5hcnkgc3ltYm9scz8gRXZlbiBzdGF0aWMgZnVuY3Rpb25zLCBpZiBub3QgaW5saW5lZCwgY29udHJpYnV0ZSB0byB0aGUgc3ltYm9sIGNvdmVyYWdlLCBzbyB0aGV5JiMzOTtyZSB3b3J0aCBpbnZlc3RpZ2F0aW5nLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBgYXRoOWtfcmVnX3Jtd19idWZmZXJgLiBZZXMsIGl0IGlzIHN0YXRpYyB2b2lkLiBBbmQgYGhpZl91c2Jfc2VuZF9yZWdvdXRgIGlzIHN0YXRpYyBpbnQuIEFuZCBgaGlmX3VzYl9zZW5kYCBpcyBhbHNvIHN0YXRpYyBpbiBgaGlmX3VzYi5jYCwgYnV0IGl0JiMzOTtzIGEgY2FsbGJhY2ssIGRlZmluZWQgdW5kZXIgYGhpZl9vcHMtJmd0O3NlbmRgLgoKVGhpcyBtZWFucyBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgYGhpZl9kZXYtJmd0O2hpZl9vcHNgIG9yIHRoZSBgaGlmX3VzYmAgY2FsbGJhY2tzIGFyZSByZWdpc3RlcmVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIHN0YXRpYyBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5IHVzZWQgYW5kIGV4cG9zZWQgd2l0aGluIHRoZSBicm9hZGVyIHN5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMTI6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aGlmX3VzYl9zZW5kXFxiJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jPTQ0Mz1zdGF0aWMgdm9pZCBoaWZfdXNiX3N0b3Aodm9pZCAqaGlmX2hhbmRsZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQ3MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NDcyOnN0YXRpYyBpbnQgaGlmX3VzYl9zZW5kKHZvaWQgKmhpZl9oYW5kbGUsIHU4IHBpcGVfaWQsIHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQ3My17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYz01Mjg9c3RhdGljIHN0cnVjdCBhdGg5a19odGNfaGlmIGhpZl91c2IgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy01MzctXHQuc3RhX2RyYWluID0gaGlmX3VzYl9zdGFfZHJhaW4sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjUzODpcdC5zZW5kID0gaGlmX3VzYl9zZW5kLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy01MzktfTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMTI6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDY3NDIKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6CgoqKkFuYWx5emluZyB0aGUgSFRDL1dNSSBMYXllciYjMzk7cyBJbnRlcmFjdGlvbiB3aXRoIGBoaWZfdXNiX3NlbmRgKioKCk9rYXksIHNvIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIGhvdyB0aGUgYGhpZl91c2Jfc2VuZGAgZnVuY3Rpb24gaXMgYWN0dWFsbHkgYmVpbmcgY2FsbGVkIHdpdGhpbiB0aGUgSFRDL1dNSSBsYXllci4gSXQmIzM5O3MgY3J1Y2lhbCB0byB1bmRlcnN0YW5kIHRoaXMgaW50ZXJhY3Rpb24gZm9yIFsgKkluc2VydCB0aGUgcmVsZXZhbnQgdGVjaG5pY2FsIGZpZWxkLCBlLmcuLCBkZWJ1Z2dpbmcgYSBVU0IgY29tbXVuaWNhdGlvbiBpc3N1ZSwgb3B0aW1pemluZyBkYXRhIHRyYW5zZmVyLCBhbmFseXppbmcgZHJpdmVyIGJlaGF2aW9yLCBldGMuKiBdLiBJIG5lZWQgdG8gdHJhY2UgdGhlIGNhbGwgcGF0aHMgdG8gaWRlbnRpZnkgdGhlIGVudHJ5IHBvaW50cyBhbmQgdGhlIGNvbnRleHQgaW4gd2hpY2ggdGhpcyBmdW5jdGlvbiBpcyB1c2VkLiBNeSBpbml0aWFsIHBsYW4gaXMgdG8gZXhhbWluZSB0aGUgY29kZSB3aGVyZSBIVEMgYW5kIFdNSSBhcmUgaW50ZWdyYXRlZC4gSSYjMzk7bSBnb2luZyB0byBmb2xsb3cgdGhlIGZ1bmN0aW9uIGNhbGxzIGZyb20gdGhlIGhpZ2hlciBsZXZlbCBwcm90b2NvbHMgdG8gdGhlIHBvaW50IHdoZXJlIHRoZSBgaGlmX3VzYl9zZW5kYCBmdW5jdGlvbiBpcyBpbnZva2VkLiBUaGlzIHdpbGwgaWxsdW1pbmF0ZSB0aGUgZXhhY3QgZGF0YSB0aGF0JiMzOTtzIGJlaW5nIHNlbnQgb3ZlciBVU0IgYW5kIHRoZSBpbXBsaWNhdGlvbnMgZm9yIHBlcmZvcm1hbmNlIG9yIGFueSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzLiBJIG5lZWQgdG8gbm90ZSBhbnkgcGFyYW1ldGVycyB0aGF0IGFyZSBwYXNzZWQgYW5kIHVuZGVyc3RhbmQgaG93IHRoZSBkYXRhIGlzIGJlaW5nIGNvbnN0cnVjdGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAxMjo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDstXHUwMDNlaGlmLVx1MDAzZXNlbmQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfaHN0LmM9MjE9c3RhdGljIGludCBodGNfaXNzdWVfc2VuZChzdHJ1Y3QgaHRjX3RhcmdldCAqdGFyZ2V0LCBzdHJ1Y3Qgc2tfYnVmZiogc2tiLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfaHN0LmMtMzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2hzdC5jOjM1Olx0c3RhdHVzID0gdGFyZ2V0LVx1MDAzZWhpZi1cdTAwM2VzZW5kKHRhcmdldC1cdTAwM2VoaWZfZGV2LCBlbmRwb2ludC1cdTAwM2V1bF9waXBlaWQsIHNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2hzdC5jLTM2LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAxMjo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NzE3OQoJCQkJCQkJb3V0cHV0OiAyNDkKCQkJCQkJCXRob3VnaHRzOiA3MjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBWZXJkaWN0OiBSZWFkeSB0byBFeGVjdXRlKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24gZm9yIHRoZSBmdXp6aW5nIHJ1bi4gSSYjMzk7dmUgZ290IGEgbGlzdCBvZiB0YXJnZXQgZnVuY3Rpb25zOiBgaHRjX2lzc3VlX3NlbmRgLCBgaHRjX3NlbmRgLCBgYXRoOWtfd21pX2NtZGAsIGBhdGg5a19yZWdfcm13YCwgYGF0aDlrX3JlZ19ybXdfYnVmZmVyYCwgYGF0aDlrX3JlZ19ybXdfZmx1c2hgLCBgaGlmX3VzYl9zZW5kYCwgYW5kIGBoaWZfdXNiX3NlbmRfcmVnb3V0YC4KCkkgbmVlZCB0byBuYWlsIGRvd24gdGhlIHBhcmFtZXRlcnMgZm9yIGBzZXQtcmVzdWx0c2AuIEZpcnN0LCBgV29ydGhGdXp6aW5nYD8gQWJzb2x1dGVseSwgdHJ1ZS4gVGhlIGBSZWFzb25pbmdgIHdpbGwgYmUgYSBjb25jaXNlIGV4cGxhbmF0aW9uLCBhbmQgdGhpcyBpcyB3aGF0IEkmIzM5O20gdGhpbmtpbmc6IFRoZSBwYXRjaCBpbnRyb2R1Y2VzIG5ldyBlcnJvciBoYW5kbGluZyB3aXRoIGEgYFdBUk5fT05DRWAgaW4gYGhpZl91c2Jfc2VuZF9yZWdvdXRgIHRvIHByZXZlbnQgc2VuZGluZyBwYWNrZXRzIG9mIGEgc3BlY2lmaWMgbGVuZ3RoLCB0d2Vha3MgYSBzdHJ1Y3R1cmUgc2l6ZSBjYWxjdWxhdGlvbiBpbiBgYXRoOWtfcmVnX3Jtd19idWZmZXJgLCBhbmQgcmVkdWNlcyBgTUFYX1JNV19DTURfTlVNQkVSYC4gIFRoaXMgZHJpdmVyLCBgYXRoOWtfaHRjYCwgaXMgYWNjZXNzaWJsZSB2aWEgZW11bGF0ZWQgVVNCIGRldmljZXMgKGxpa2UgUmF3IEdhZGdldCksIGFuZCB0aGVzZSBjaGFuZ2VzIHdhcnJhbnQgZnV6emluZyB0byBtYWtlIHN1cmUgZXZlcnl0aGluZyYjMzk7cyBjb3JyZWN0LgoKTmV4dCwgdGhlIGBGb2N1c1N5bWJvbHNgLiAgSSYjMzk7dmUgZ290IGEgc2hvcnRsaXN0IGZyb20gYWJvdmU6IGBoaWZfdXNiX3NlbmRfcmVnb3V0YCwgYGF0aDlrX3JlZ19ybXdfYnVmZmVyYCwgYGF0aDlrX3JlZ19ybXdfZmx1c2hgLCBgYXRoOWtfcmVnX3Jtd2AsIGFuZCBgaGlmX3VzYl9zZW5kYC4gVGhleSYjMzk7cmUgc3BlY2lmaWMgYW5kIG5vbi11YmlxdWl0b3VzLCBqdXN0IGxpa2Ugd2Ugd2FudC4KClRoZW4sIHRoZSBgRW5hYmxlQ29uZmlnc2AuICBXZSBuZWVkIHRoZXNlIGtlcm5lbCBjb25maWcgZmxhZ3MsIHdpdGhvdXQgdGhlIGBDT05GSUdfYCBwcmVmaXg6IGBBVEg5S19IVENgLCBgVVNCYCwgYE1BQzgwMjExYCwgYW5kIGBXTEFOX1ZFTkRPUl9BVEhgLiBJJiMzOTt2ZSBtYWRlIHN1cmUgdG8gcmV2aWV3IHRoZSBpbnN0cnVjdGlvbnM6IHRoZSBnb2FsIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBuZXcgYnVncywgYW5kIHRyaWdnZXJlZCBhc3NlcnRpb25zLiBUaGUgbmV3IG9yIGNoYW5nZWQgYXNzZXJ0aW9ucyBhcmUgKmtleSog4oCTIHdlIG5lZWQgdG8gZnV6eiB0aG9zZSB0byBtYWtlIHN1cmUgdGhleSYjMzk7cmUgc29saWQuIEFuZCB0aGlzIGRyaXZlciBpcyByZWFjaGFibGUgdmlhIFVTQi4gQWxzbywgSSYjMzk7dmUgY29uZmlybWVkIHRoYXQgdGhlIGZvY3VzIHN5bWJvbHMgYXJlIHNwZWNpZmljLgoKTGV0JiMzOTtzIGRvdWJsZS1jaGVjayBhbGwgb2YgdGhpcywgb25lIGxhc3QgdGltZS4KCkNvbmZpZ3M6IGBBVEg5S19IVENgLCBgVVNCYCwgYE1BQzgwMjExYCwgYFdMQU5fVkVORE9SX0FUSGAg4oCTIGNoZWNrLgoKU3ltYm9sczogYGhpZl91c2Jfc2VuZF9yZWdvdXRgLCBgYXRoOWtfcmVnX3Jtd19idWZmZXJgLCBgYXRoOWtfcmVnX3Jtd19mbHVzaGAsIGBhdGg5a19yZWdfcm13YCwgYGhpZl91c2Jfc2VuZGAg4oCTIGNoZWNrLgoKTXkgcmVhc29uaW5nIHN0aWxsIGhvbGRzOiB0aGlzIHBhdGNoIGludHJvZHVjZXMgYSBgV0FSTl9PTkNFYCBpbiBgaGlmX3VzYl9zZW5kX3JlZ291dGAsIHN0cnVjdHVyZSBmaXhlcyBpbiBgYXRoOWtfcmVnX3Jtd19idWZmZXJgIGFuZCByZWR1Y2VzIGBNQVhfUk1XX0NNRF9OVU1CRVJgLiBUaGUgZHJpdmVyIChgYXRoOWtfaHRjYCkgaXMgcmVhY2hhYmxlIHRocm91Z2ggZW11bGF0ZWQgVVNCLCBhbmQgd2UgbmVlZCB0byBmdXp6IHRoZSBuZXcgYXNzZXJ0aW9uIGFuZCBtb2RpZmllZCBidWZmZXIgaGFuZGxpbmcgdG8gcHJldmVudCByZWdyZXNzaW9ucy4KCkFscmlnaHQsIGV2ZXJ5dGhpbmcmIzM5O3MgYWNjdXJhdGUgYW5kIHJlYWR5IHRvIGdvLiBUaW1lIHRvIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMTI6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FUSDlLX0hUQyYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7V0xBTl9WRU5ET1JfQVRIJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aGlmX3VzYl9zZW5kX3JlZ291dCYjMzQ7LAogICAgJiMzNDthdGg5a19yZWdfcm13X2J1ZmZlciYjMzQ7LAogICAgJiMzNDthdGg5a19yZWdfcm13X2ZsdXNoJiMzNDssCiAgICAmIzM0O2F0aDlrX3JlZ19ybXcmIzM0OywKICAgICYjMzQ7aGlmX3VzYl9zZW5kJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBVU0Igd2lyZWxlc3MgZHJpdmVyIGF0aDlrX2h0Yywgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSBVU0IgZ2FkZ2V0L2RldmljZSBlbXVsYXRpb24gaW4gc3l6a2FsbGVyLiBUaGUgY2hhbmdlcyBhZGQgYSBuZXcgV0FSTl9PTkNFIHJ1bnRpbWUgYXNzZXJ0aW9uIGFuZCBjaGVjayBpbiBoaWZfdXNiX3NlbmRfcmVnb3V0IHRvIHByZXZlbnQgc2VuZGluZyBwYWNrZXRzIHdob3NlIGxlbmd0aCBpcyBhbiBleGFjdCBtdWx0aXBsZSBvZiB0aGUgVVNCIG1heHBhY2tldCBzaXplLCBjb3JyZWN0IHRoZSBlbGVtZW50IHNpemUgY2FsY3VsYXRpb24gaW4gYXRoOWtfcmVnX3Jtd19idWZmZXIgZnJvbSBzaXplb2Yoc3RydWN0IHJlZ2lzdGVyX3dyaXRlKSB0byBzaXplb2Yoc3RydWN0IHJlZ2lzdGVyX3JtdyksIGFuZCByZWR1Y2UgTUFYX1JNV19DTURfTlVNQkVSLiBGdXp6aW5nIGlzIHdhcnJhbnRlZCB0byB0ZXN0IHRoZSBuZXcgYXNzZXJ0aW9uIGFuZCBhbHRlcmVkIFJNVyBjb21tYW5kIGJhdGNoaW5nIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtBVEg5S19IVEMmIzM0OywKICAgICYjMzQ7VVNCJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O1dMQU5fVkVORE9SX0FUSCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2hpZl91c2Jfc2VuZF9yZWdvdXQmIzM0OywKICAgICYjMzQ7YXRoOWtfcmVnX3Jtd19idWZmZXImIzM0OywKICAgICYjMzQ7YXRoOWtfcmVnX3Jtd19mbHVzaCYjMzQ7LAogICAgJiMzNDthdGg5a19yZWdfcm13JiMzNDssCiAgICAmIzM0O2hpZl91c2Jfc2VuZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgVVNCIHdpcmVsZXNzIGRyaXZlciBhdGg5a19odGMsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgVVNCIGdhZGdldC9kZXZpY2UgZW11bGF0aW9uIGluIHN5emthbGxlci4gVGhlIGNoYW5nZXMgYWRkIGEgbmV3IFdBUk5fT05DRSBydW50aW1lIGFzc2VydGlvbiBhbmQgY2hlY2sgaW4gaGlmX3VzYl9zZW5kX3JlZ291dCB0byBwcmV2ZW50IHNlbmRpbmcgcGFja2V0cyB3aG9zZSBsZW5ndGggaXMgYW4gZXhhY3QgbXVsdGlwbGUgb2YgdGhlIFVTQiBtYXhwYWNrZXQgc2l6ZSwgY29ycmVjdCB0aGUgZWxlbWVudCBzaXplIGNhbGN1bGF0aW9uIGluIGF0aDlrX3JlZ19ybXdfYnVmZmVyIGZyb20gc2l6ZW9mKHN0cnVjdCByZWdpc3Rlcl93cml0ZSkgdG8gc2l6ZW9mKHN0cnVjdCByZWdpc3Rlcl9ybXcpLCBhbmQgcmVkdWNlIE1BWF9STVdfQ01EX05VTUJFUi4gRnV6emluZyBpcyB3YXJyYW50ZWQgdG8gdGVzdCB0aGUgbmV3IGFzc2VydGlvbiBhbmQgYWx0ZXJlZCBSTVcgY29tbWFuZCBiYXRjaGluZyBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMTI6NDg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAxMjo0ODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHJlc3NlcyBhIFVTQiBjb21tdW5pY2F0aW9uIGlzc3VlIGluIHRoZSBhdGg5ayBkcml2ZXIgd2hlcmUgVVNCIHBhY2tldHMgdGhhdCBhcmUgZXhhY3QgbXVsdGlwbGVzIG9mIGVuZHBvaW50IG1heHBhY2tldCBzaXplIGNhdXNlIGZpcm13YXJlIGRlbGl2ZXJ5IHN0YWxscy4gVGhlIGNoYW5nZXMgY29uc2lzdCBvZjpcbjEuIEFkZGluZyBhIGNoZWNrIGluIGBoaWZfdXNiX3NlbmRfcmVnb3V0KClgIHRvIHdhcm4gYW5kIHJlamVjdCBza2JzIHdob3NlIGxlbmd0aCBpcyBhbiBleGFjdCBtdWx0aXBsZSBvZiB0aGUgZW5kcG9pbnQgbWF4cGFja2V0IHNpemUuXG4yLiBDb3JyZWN0aW5nIHRoZSBidWZmZXIgc2l6ZSBjYWxjdWxhdGlvbiBpbiBgYXRoOWtfcmVnX3Jtd19idWZmZXIoKWAgZnJvbSBgc2l6ZW9mKHN0cnVjdCByZWdpc3Rlcl93cml0ZSlgICg4IGJ5dGVzKSB0byBgc2l6ZW9mKHN0cnVjdCByZWdpc3Rlcl9ybXcpYCAoMTIgYnl0ZXMpLlxuMy4gTG93ZXJpbmcgYE1BWF9STVdfQ01EX05VTUJFUmAgZnJvbSAxNSB0byAxNCBpbiBgd21pLmhgIHRvIGF2b2lkIDY0LWJ5dGUgYWxpZ25lZCBVU0IgcGF5bG9hZHMuXG5cblJlZ2FyZGluZyBtZW1vcnkgaW5pdGlhbGl6YXRpb246XG4tIEFsbCBmaWVsZHMgKGByZWdgLCBgc2V0YCwgYGNscmApIG9mIHRoZSBgc3RydWN0IHJlZ2lzdGVyX3Jtd2AgYXJyYXkgZWxlbWVudHMgaW4gYHByaXYtXHUwMDNld21pLVx1MDAzZW11bHRpX3Jtd2AgYXJlIGV4cGxpY2l0bHkgaW5pdGlhbGl6ZWQgYmVmb3JlIGJlaW5nIHNlbnQgdmlhIGBhdGg5a193bWlfY21kKClgLlxuLSBObyB1c2VyLXNwYWNlIGNvcHkgcGF0aHMgb3IgdW5pbml0aWFsaXplZCBrZXJuZWwgc3RydWN0dXJlIGZpZWxkcyBhcmUgZXhwb3NlZCBvciBtb2RpZmllZC5cbi0gTm8gYnJhbmNoIGNvbmRpdGlvbnMgcmVseSBvbiB1bmluaXRpYWxpemVkIHZhbHVlcy5cblxuVGhlcmVmb3JlLCB0aGlzIHBhdGNoIGludHJvZHVjZXMgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MsIGFuZCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNGE4NzJlODU5MTdkNjcwNDAwNzUxOTE5NzgyNDZmMzliMGI5NWU0NwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTdW4gU2VwIDYgMTI6NDc6MzMgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYwppbmRleCBkMzQ5MWZmMDhlNmVmLi40OTMwM2M3ZTNmZWY0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMKQEAgLTk5LDEwICYjNDM7OTksMTcgQEAgc3RhdGljIHZvaWQgaGlmX3VzYl9yZWdvdXRfY2Ioc3RydWN0IHVyYiAqdXJiKQogc3RhdGljIGludCBoaWZfdXNiX3NlbmRfcmVnb3V0KHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2RldiwKIAkJCSAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogewomIzQzOwl1MTYgbWF4cGFja2V0ID0gdXNiX21heHBhY2tldChoaWZfZGV2LSZndDt1ZGV2LAomIzQzOwkJCQkgICAgICB1c2Jfc25kaW50cGlwZShoaWZfZGV2LSZndDt1ZGV2LAomIzQzOwkJCQkJCSAgICAgVVNCX1JFR19PVVRfUElQRSkpOwogCXN0cnVjdCB1cmIgKnVyYjsKIAlzdHJ1Y3QgY21kX2J1ZiAqY21kOwogCWludCByZXQgPSAwOwogCiYjNDM7CWlmIChXQVJOX09OQ0UobWF4cGFja2V0ICZhbXA7JmFtcDsgc2tiLSZndDtsZW4gJSBtYXhwYWNrZXQgPT0gMCwKJiM0MzsJCSAgICAgICYjMzQ7JXUtYnl0ZSBjb21tYW5kIGZpbGxzIHdob2xlIFVTQiBwYWNrZXRzXG4mIzM0Oywgc2tiLSZndDtsZW4pKQomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CiAJdXJiID0gdXNiX2FsbG9jX3VyYigwLCBHRlBfS0VSTkVMKTsKIAlpZiAodXJiID09IE5VTEwpCiAJCXJldHVybiAtRU5PTUVNOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jCmluZGV4IDZkZTc4YWU4NTcyNjguLjBiNDlkMmNjOTlmMGIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmMKQEAgLTQwNSw3ICYjNDM7NDA1LDcgQEAgc3RhdGljIHZvaWQgYXRoOWtfcmVnX3Jtd19idWZmZXIodm9pZCAqaHdfcHJpdiwKIAlpZiAocHJpdi0mZ3Q7d21pLSZndDttdWx0aV9ybXdfaWR4ID09IE1BWF9STVdfQ01EX05VTUJFUikgewogCQlyID0gYXRoOWtfd21pX2NtZChwcml2LSZndDt3bWksIFdNSV9SRUdfUk1XX0NNRElELAogCQkJICAodTggKikgJmFtcDtwcml2LSZndDt3bWktJmd0O211bHRpX3JtdywKLQkJCSAgc2l6ZW9mKHN0cnVjdCByZWdpc3Rlcl93cml0ZSkgKiBwcml2LSZndDt3bWktJmd0O211bHRpX3Jtd19pZHgsCiYjNDM7CQkJICBzaXplb2Yoc3RydWN0IHJlZ2lzdGVyX3JtdykgKiBwcml2LSZndDt3bWktJmd0O211bHRpX3Jtd19pZHgsCiAJCQkgICh1OCAqKSAmYW1wO3JzcF9zdGF0dXMsIHNpemVvZihyc3Bfc3RhdHVzKSwKIAkJCSAgMTAwKTsKIAkJaWYgKHVubGlrZWx5KHIpKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmgKaW5kZXggNWMzYjcxMGI4ZjMxOS4uMjU2ZjQ2MDk4YTZiMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaApAQCAtMTI2LDcgJiM0MzsxMjYsOCBAQCBlbnVtIHdtaV9ldmVudF9pZCB7CiB9OwogCiAjZGVmaW5lIE1BWF9DTURfTlVNQkVSIDYyCi0jZGVmaW5lIE1BWF9STVdfQ01EX05VTUJFUiAxNQomIzQzOy8qIDE1IGVudHJpZXMgbWFrZSAxOTIgYnl0ZXMsIHRocmVlIGZ1bGwgVVNCIHBhY2tldHM6IG5ldmVyIGRlbGl2ZXJlZC4gKi8KJiM0MzsjZGVmaW5lIE1BWF9STVdfQ01EX05VTUJFUiAxNAogCiBzdHJ1Y3QgcmVnaXN0ZXJfd3JpdGUgewogCV9fYmUzMiByZWc7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAxMjo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzg5CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogNDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFdMQU4gRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgdGhlIEF0aGVyb3MgYXRoOWsgd2lyZWxlc3MgZHJpdmVyLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBVU0IgaG9zdCBpbnRlcmZhY2UgKGBoaWZfdXNiLmNgKSwgdGhlIEhUQyBkcml2ZXIgaW5pdGlhbGl6YXRpb24gKGBodGNfZHJ2X2luaXQuY2ApLCBhbmQgdGhlIFdNSSBoZWFkZXIgKGB3bWkuaGApLiBMZXQmIzM5O3MgYnJlYWsgZG93biB0aGVzZSBjaGFuZ2VzIHRvIHNlZSB3aGF0JiMzOTtzIGdvaW5nIG9uLgoKRmlyc3QsIGluIGBoaWZfdXNiX3NlbmRfcmVnb3V0YCwgdGhlcmUmIzM5O3MgYSBuZXcgc2FuaXR5IGNoZWNrLiBJdCYjMzk7cyBsb29raW5nIGF0IHRoZSBVU0IgcGFja2V0IHNpemUgYmVpbmcgdXNlZCBmb3IgcmVnaXN0ZXIgb3V0cHV0LiBJdCBhcHBlYXJzIHRoZSBjb2RlIG5vdyBjaGVja3MgYHVzYl9tYXhwYWNrZXRgIHRvIGRldGVybWluZSB0aGUgbWF4aW11bSBwYWNrZXQgc2l6ZSBmb3IgdGhlIG91dHB1dCBpbnRlcnJ1cHQgcGlwZS4gSWYgdGhlIGNvbW1hbmQsIGBza2ItJmd0O2xlbmAsIHBlcmZlY3RseSBmaWxscyBhIHdob2xlIFVTQiBwYWNrZXQgKG1lYW5pbmcgaXQmIzM5O3MgYSBtdWx0aXBsZSBvZiBgbWF4cGFja2V0YCkgKndpdGhvdXQqIGEgc2hvcnQgcGFja2V0IG9yIHplcm8tbGVuZ3RoIHBhY2tldCBiZWluZyBzZW50LCB0aGVuIGl0IHJldHVybnMgYC1FSU5WQUxgLiBUaGlzIGlzIGludGVyZXN0aW5nOyBpdCYjMzk7cyBhIHBvdGVudGlhbCBlcnJvciBjb25kaXRpb24gYmVpbmcgZmxhZ2dlZCwgcHJvYmFibHkgcmVsYXRlZCB0byBzb21lIGVkZ2UgY2FzZSB3aXRoIFVTQiB0cmFuc2ZlcnMgdGhhdCB3YXNuJiMzOTt0IGJlaW5nIGhhbmRsZWQgYmVmb3JlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCAqd2h5KiB0aGlzIGZ1bGwtcGFja2V0IGNvbmRpdGlvbiBpcyBwcm9ibGVtYXRpYy4gSXMgaXQgYSBwb3RlbnRpYWwgZW5kcG9pbnQgYnVmZmVyaW5nIGlzc3VlIG9yIHBlcmhhcHMgYSBzaWduYWxpbmcgcHJvYmxlbSByZWxhdGVkIHRvIGEgcGFydGljdWxhciBoYXJkd2FyZSBxdWlyaz8gSSBuZWVkIHRvIGRpZyBkZWVwZXIuCgpNb3Zpbmcgb24gdG8gYGh0Y19kcnZfaW5pdC5jYCwgaXQmIzM5O3MgbW9kaWZ5aW5nIHRoZSBgYXRoOWtfcmVnX3Jtd19idWZmZXJgIGFsbG9jYXRpb24uIFRoZSBzaXplIGNhbGN1bGF0aW9uIGlzIGNoYW5naW5nIGZyb20gdXNpbmcgYHN0cnVjdCByZWdpc3Rlcl93cml0ZWAgdG8gYHN0cnVjdCByZWdpc3Rlcl9ybXdgLiBUaGlzIGlzIGEgY3J1Y2lhbCBkZXRhaWwuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgdGhlIGRpZmZlcmVuY2UgaXMgYmV0d2VlbiB0aGVzZSB0d28gc3RydWN0dXJlcy4gQSBzaXplIGNoYW5nZSBpbmRpY2F0ZXMgZWl0aGVyIGEgZGF0YSBzdHJ1Y3R1cmUgcmV2aXNpb24sIGEgYnVnIGZpeCwgb3IgYW4gb3B0aW1pemF0aW9uLiBJcyB0aGVyZSBhIG5ldyBmaWVsZCBvciBhIGNoYW5nZWQgZmllbGQgd2l0aGluIGBzdHJ1Y3QgcmVnaXN0ZXJfcm13YCBjb21wYXJlZCB0byBgc3RydWN0IHJlZ2lzdGVyX3dyaXRlYD8gSSYjMzk7bGwgbmVlZCB0byBjb21wYXJlIHRoZSBkZWZpbml0aW9ucyB0byB1bmRlcnN0YW5kIHRoZSBtZW1vcnkgaW1wbGljYXRpb25zLgoKRmluYWxseSwgaW4gYHdtaS5oYCwgdGhlcmUmIzM5O3MgYSBzaW1wbGUgY2hhbmdlLCBidXQgaW1wb3J0YW50LCBgTUFYX1JNV19DTURfTlVNQkVSYCBpcyBiZWluZyByZWR1Y2VkIGZyb20gMTUgdG8gMTQuIFRoaXMgYWxtb3N0IGNlcnRhaW5seSBtZWFucyB0aGF0IHRoZXJlJiMzOTtzIGEgbGltaXRhdGlvbiBvbiB0aGUgbnVtYmVyIG9mIFJlZ2lzdGVyLU1vZGlmeS1Xcml0ZSAoUk1XKSBjb21tYW5kcyB0aGF0IGNhbiBiZSBxdWV1ZWQgb3IgcHJvY2Vzc2VkLiBJJiMzOTttIGN1cmlvdXMgYWJvdXQgdGhlIHJhdGlvbmFsZSBmb3IgdGhpcyBjaGFuZ2UuIERvZXMgaXQgaW5kaWNhdGUgYSBidWcgZml4LCBvciBpcyBpdCByZWxhdGVkIHRvIGhhcmR3YXJlIGNvbnN0cmFpbnRzIG9yIGEgV01JIHByb3RvY29sIGNoYW5nZT8gUGVyaGFwcyB0aGUgY29tbWFuZCBzbG90IGNvdW50IHdhcyBpbmNvcnJlY3QgdG8gYmVnaW4gd2l0aD8KClRvIGdldCBhIGJldHRlciBwaWN0dXJlLCBJJiMzOTtsbCB1c2UgYHJlYWQtZmlsZWAgb3IgYGdyZXBwZXJgIHRvIGV4YW1pbmUgYGh0Y19kcnZfaW5pdC5jYCBhcm91bmQgbGluZSA0MDUgKHdoZXJlIHRoZSBgYXRoOWtfcmVnX3Jtd19idWZmZXJgIGlzIGFsbG9jYXRlZCkgYW5kIGB3bWkuaGAgdG8gc2VlIHRob3NlIHN0cnVjdHVyZSBkZWZpbml0aW9ucyBhbmQgdGhlIHN1cnJvdW5kaW5nIGNvZGUuIFRoYXQgc2hvdWxkIGlsbHVtaW5hdGUgdGhlIHJlYXNvbnMgZm9yIHRoZXNlIGNoYW5nZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDEyOjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3JlZ2lzdGVyX3JtdyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jPTM4Mz1zdGF0aWMgdm9pZCBhdGg5a19yZWdfcm13X2J1ZmZlcih2b2lkICpod19wcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy00MDctXHRcdFx0ICAodTggKikgXHUwMDI2cHJpdi1cdTAwM2V3bWktXHUwMDNlbXVsdGlfcm13LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jOjQwODpcdFx0XHQgIHNpemVvZihzdHJ1Y3QgcmVnaXN0ZXJfcm13KSAqIHByaXYtXHUwMDNld21pLVx1MDAzZW11bHRpX3Jtd19pZHgsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmMtNDA5LVx0XHRcdCAgKHU4ICopIFx1MDAyNnJzcF9zdGF0dXMsIHNpemVvZihyc3Bfc3RhdHVzKSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM9NDIyPXN0YXRpYyB2b2lkIGF0aDlrX3JlZ19ybXdfZmx1c2godm9pZCAqaHdfcHJpdilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmMtNDM5LVx0XHRcdCAgKHU4ICopIFx1MDAyNnByaXYtXHUwMDNld21pLVx1MDAzZW11bHRpX3JtdyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYzo0NDA6XHRcdFx0ICBzaXplb2Yoc3RydWN0IHJlZ2lzdGVyX3JtdykgKiBwcml2LVx1MDAzZXdtaS1cdTAwM2VtdWx0aV9ybXdfaWR4LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jLTQ0MS1cdFx0XHQgICh1OCAqKSBcdTAwMjZyc3Bfc3RhdHVzLCBzaXplb2YocnNwX3N0YXR1cyksXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jPTQ2Nj1zdGF0aWMgdm9pZCBhdGg5a19yZWdfcm13X3NpbmdsZSh2b2lkICpod19wcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy00NzEtXHRzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYgPSBjb21tb24tXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYzo0NzI6XHRzdHJ1Y3QgcmVnaXN0ZXJfcm13IGJ1ZiwgYnVmX3JldDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy00NzMtXHRpbnQgcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaD0xMzI9c3RydWN0IHJlZ2lzdGVyX3dyaXRlIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmgtMTM2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oOjEzNzpzdHJ1Y3QgcmVnaXN0ZXJfcm13IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaC0xMzgtXHRfX2JlMzIgcmVnO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaD0xNDk9c3RydWN0IHdtaSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oLTE3NS1cdGF0b21pY190IG1fcm13X2NudDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDoxNzY6XHRzdHJ1Y3QgcmVnaXN0ZXJfcm13IG11bHRpX3Jtd1tNQVhfUk1XX0NNRF9OVU1CRVJdO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oLTE3Ny1cdHUzMiBtdWx0aV9ybXdfaWR4O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAxMjo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NjE1CgkJCQkJCQlvdXRwdXQ6IDQ4CgkJCQkJCQl0aG91Z2h0czogNTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHNvbWUgYGF0aDlrYCBudWFuY2VzLCBzcGVjaWZpY2FsbHkgYXJvdW5kIHRoZSBIVEMgZHJpdmVyIGluaXRpYWxpemF0aW9uLiBNeSBmb2N1cyBpcyBvbiB1bmRlcnN0YW5kaW5nIHRoZSByZWdpc3RlciBtYW5pcHVsYXRpb24gcm91dGluZXMsIHNwZWNpZmljYWxseSBgYXRoOWtfcmVnX3Jtd19idWZmZXJgIGFuZCBgYXRoOWtfcmVnX3Jtd19mbHVzaGAuIEkgc3VzcGVjdCB0aGV5IHBsYXkgYSBrZXkgcm9sZSBpbiBob3cgdGhlIGRyaXZlciBoYW5kbGVzIHJlZ2lzdGVyIHJlYWRzLCBtb2RpZmljYXRpb25zLCBhbmQgd3JpdGUtYmFja3MsIGxpa2VseSBkdXJpbmcgaGFyZHdhcmUgc2V0dXAgYW5kIGluaXRpYWxpemF0aW9uLiBJIHNob3VsZCBmaW5kIHRoZXNlIHdpdGhpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jYC4gVW5kZXJzdGFuZGluZyB0aGVpciBwdXJwb3NlIGlzIGNydWNpYWwgdG8gZW5zdXJpbmcgcHJvcGVyIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24gYW5kIHByZXZlbnRpbmcgcG90ZW50aWFsIHJlZ2lzdGVyIGNvcnJ1cHRpb24gd2hpY2gsIGluIHR1cm4sIGlzIGtleSB0byBvdmVyYWxsIHBlcmZvcm1hbmNlIGFuZCBzdGFiaWxpdHkuIExldCYjMzk7cyBzZWUgd2hhdCB0aG9zZSBmdW5jdGlvbnMgYXJlIGRvaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAxMjo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDM4MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA3MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMzgwOlx0XHRtdXRleF91bmxvY2soXHUwMDI2cHJpdi1cdTAwM2V3bWktXHUwMDNlbXVsdGlfd3JpdGVfbXV0ZXgpO1xuIDM4MTpcdH1cbiAzODI6XHRcbiAzODM6XHRzdGF0aWMgdm9pZCBhdGg5a19yZWdfcm13X2J1ZmZlcih2b2lkICpod19wcml2LFxuIDM4NDpcdFx0XHRcdFx0IHUzMiByZWdfb2Zmc2V0LCB1MzIgc2V0LCB1MzIgY2xyKVxuIDM4NTpcdHtcbiAzODY6XHRcdHN0cnVjdCBhdGhfaHcgKmFoID0gaHdfcHJpdjtcbiAzODc6XHRcdHN0cnVjdCBhdGhfY29tbW9uICpjb21tb24gPSBhdGg5a19od19jb21tb24oYWgpO1xuIDM4ODpcdFx0c3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2ID0gY29tbW9uLVx1MDAzZXByaXY7XG4gMzg5Olx0XHR1MzIgcnNwX3N0YXR1cztcbiAzOTA6XHRcdGludCByO1xuIDM5MTpcdFxuIDM5MjpcdFx0bXV0ZXhfbG9jayhcdTAwMjZwcml2LVx1MDAzZXdtaS1cdTAwM2VtdWx0aV9ybXdfbXV0ZXgpO1xuIDM5MzpcdFxuIDM5NDpcdFx0LyogU3RvcmUgdGhlIHJlZ2lzdGVyL3ZhbHVlICovXG4gMzk1Olx0XHRwcml2LVx1MDAzZXdtaS1cdTAwM2VtdWx0aV9ybXdbcHJpdi1cdTAwM2V3bWktXHUwMDNlbXVsdGlfcm13X2lkeF0ucmVnID1cbiAzOTY6XHRcdFx0Y3B1X3RvX2JlMzIocmVnX29mZnNldCk7XG4gMzk3Olx0XHRwcml2LVx1MDAzZXdtaS1cdTAwM2VtdWx0aV9ybXdbcHJpdi1cdTAwM2V3bWktXHUwMDNlbXVsdGlfcm13X2lkeF0uc2V0ID1cbiAzOTg6XHRcdFx0Y3B1X3RvX2JlMzIoc2V0KTtcbiAzOTk6XHRcdHByaXYtXHUwMDNld21pLVx1MDAzZW11bHRpX3Jtd1twcml2LVx1MDAzZXdtaS1cdTAwM2VtdWx0aV9ybXdfaWR4XS5jbHIgPVxuIDQwMDpcdFx0XHRjcHVfdG9fYmUzMihjbHIpO1xuIDQwMTpcdFxuIDQwMjpcdFx0cHJpdi1cdTAwM2V3bWktXHUwMDNlbXVsdGlfcm13X2lkeCYjNDM7JiM0Mzs7XG4gNDAzOlx0XG4gNDA0Olx0XHQvKiBJZiB0aGUgYnVmZmVyIGlzIGZ1bGwsIHNlbmQgaXQgb3V0LiAqL1xuIDQwNTpcdFx0aWYgKHByaXYtXHUwMDNld21pLVx1MDAzZW11bHRpX3Jtd19pZHggPT0gTUFYX1JNV19DTURfTlVNQkVSKSB7XG4gNDA2Olx0XHRcdHIgPSBhdGg5a193bWlfY21kKHByaXYtXHUwMDNld21pLCBXTUlfUkVHX1JNV19DTURJRCxcbiA0MDc6XHRcdFx0XHQgICh1OCAqKSBcdTAwMjZwcml2LVx1MDAzZXdtaS1cdTAwM2VtdWx0aV9ybXcsXG4gNDA4Olx0XHRcdFx0ICBzaXplb2Yoc3RydWN0IHJlZ2lzdGVyX3JtdykgKiBwcml2LVx1MDAzZXdtaS1cdTAwM2VtdWx0aV9ybXdfaWR4LFxuIDQwOTpcdFx0XHRcdCAgKHU4ICopIFx1MDAyNnJzcF9zdGF0dXMsIHNpemVvZihyc3Bfc3RhdHVzKSxcbiA0MTA6XHRcdFx0XHQgIDEwMCk7XG4gNDExOlx0XHRcdGlmICh1bmxpa2VseShyKSkge1xuIDQxMjpcdFx0XHRcdGF0aF9kYmcoY29tbW9uLCBXTUksXG4gNDEzOlx0XHRcdFx0XHRcJiMzNDtSRUdJU1RFUiBSTVcgRkFJTEVELCBtdWx0aSBsZW46ICVkXFxuXCYjMzQ7LFxuIDQxNDpcdFx0XHRcdFx0cHJpdi1cdTAwM2V3bWktXHUwMDNlbXVsdGlfcm13X2lkeCk7XG4gNDE1Olx0XHRcdH1cbiA0MTY6XHRcdFx0cHJpdi1cdTAwM2V3bWktXHUwMDNlbXVsdGlfcm13X2lkeCA9IDA7XG4gNDE3Olx0XHR9XG4gNDE4Olx0XG4gNDE5Olx0XHRtdXRleF91bmxvY2soXHUwMDI2cHJpdi1cdTAwM2V3bWktXHUwMDNlbXVsdGlfcm13X211dGV4KTtcbiA0MjA6XHR9XG4gNDIxOlx0XG4gNDIyOlx0c3RhdGljIHZvaWQgYXRoOWtfcmVnX3Jtd19mbHVzaCh2b2lkICpod19wcml2KVxuIDQyMzpcdHtcbiA0MjQ6XHRcdHN0cnVjdCBhdGhfaHcgKmFoID0gaHdfcHJpdjtcbiA0MjU6XHRcdHN0cnVjdCBhdGhfY29tbW9uICpjb21tb24gPSBhdGg5a19od19jb21tb24oYWgpO1xuIDQyNjpcdFx0c3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2ID0gY29tbW9uLVx1MDAzZXByaXY7XG4gNDI3Olx0XHR1MzIgcnNwX3N0YXR1cztcbiA0Mjg6XHRcdGludCByO1xuIDQyOTpcdFxuIDQzMDpcdFx0aWYgKHRlc3RfYml0KEhUQ19GV0ZMQUdfTk9fUk1XLCBcdTAwMjZwcml2LVx1MDAzZWZ3X2ZsYWdzKSlcbiA0MzE6XHRcdFx0cmV0dXJuO1xuIDQzMjpcdFxuIDQzMzpcdFx0YXRvbWljX2RlYyhcdTAwMjZwcml2LVx1MDAzZXdtaS1cdTAwM2VtX3Jtd19jbnQpO1xuIDQzNDpcdFxuIDQzNTpcdFx0bXV0ZXhfbG9jayhcdTAwMjZwcml2LVx1MDAzZXdtaS1cdTAwM2VtdWx0aV9ybXdfbXV0ZXgpO1xuIDQzNjpcdFxuIDQzNzpcdFx0aWYgKHByaXYtXHUwMDNld21pLVx1MDAzZW11bHRpX3Jtd19pZHgpIHtcbiA0Mzg6XHRcdFx0ciA9IGF0aDlrX3dtaV9jbWQocHJpdi1cdTAwM2V3bWksIFdNSV9SRUdfUk1XX0NNRElELFxuIDQzOTpcdFx0XHRcdCAgKHU4ICopIFx1MDAyNnByaXYtXHUwMDNld21pLVx1MDAzZW11bHRpX3JtdyxcbiA0NDA6XHRcdFx0XHQgIHNpemVvZihzdHJ1Y3QgcmVnaXN0ZXJfcm13KSAqIHByaXYtXHUwMDNld21pLVx1MDAzZW11bHRpX3Jtd19pZHgsXG4gNDQxOlx0XHRcdFx0ICAodTggKikgXHUwMDI2cnNwX3N0YXR1cywgc2l6ZW9mKHJzcF9zdGF0dXMpLFxuIDQ0MjpcdFx0XHRcdCAgMTAwKTtcbiA0NDM6XHRcdFx0aWYgKHVubGlrZWx5KHIpKSB7XG4gNDQ0Olx0XHRcdFx0YXRoX2RiZyhjb21tb24sIFdNSSxcbiA0NDU6XHRcdFx0XHRcdFwmIzM0O1JFR0lTVEVSIFJNVyBGQUlMRUQsIG11bHRpIGxlbjogJWRcXG5cJiMzNDssXG4gNDQ2Olx0XHRcdFx0XHRwcml2LVx1MDAzZXdtaS1cdTAwM2VtdWx0aV9ybXdfaWR4KTtcbiA0NDc6XHRcdFx0fVxuIDQ0ODpcdFx0XHRwcml2LVx1MDAzZXdtaS1cdTAwM2VtdWx0aV9ybXdfaWR4ID0gMDtcbiA0NDk6XHRcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMTI6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjEyMAoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDM3NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGF0aDlrIFJlZ2lzdGVyIFdyaXRlL01vZGlmeSBQcm9ibGVtKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEluIGBhdGg5a19yZWdfcm13X2J1ZmZlcmAsIGJlZm9yZSB0aGlzIHBhdGNoLCB3ZSB3ZXJlIHBhc3NpbmcgYHNpemVvZihzdHJ1Y3QgcmVnaXN0ZXJfd3JpdGUpICogcHJpdi0mZ3Q7d21pLSZndDttdWx0aV9ybXdfaWR4YC4gIEEgYHN0cnVjdCByZWdpc3Rlcl93cml0ZWAgaXMgOCBieXRlcyDigJMganVzdCBgcmVnYCBhbmQgYHZhbGAuICBCdXQsIHRoZSBjb3JyZXNwb25kaW5nIGBhdGg5a19yZWdfcm13X2ZsdXNoYCB3YXMgYWxyZWFkeSB1c2luZyB0aGUgY29ycmVjdCBzaXplLCBgc2l6ZW9mKHN0cnVjdCByZWdpc3Rlcl9ybXcpICogcHJpdi0mZ3Q7d21pLSZndDttdWx0aV9ybXdfaWR4YCwgd2hpY2ggaXMgMTIgYnl0ZXMgYmVjYXVzZSBpdCBpbmNsdWRlcyBgcmVnYCwgYHNldGAsIGFuZCBgY2xyYC4gIFNvLCBpbiB0aGUgYnVmZmVyIGFsbG9jYXRpb24sIHdlIHdlcmUgY2FsY3VsYXRpbmcgdGhlIGJ1ZmZlciBzaXplIGluY29ycmVjdGx5OiA4IGJ5dGVzIHRpbWVzIHNvbWUgaW5kZXgsIHdoZW4gd2UgbmVlZGVkIDEyIGJ5dGVzIHRpbWVzIHRoZSBpbmRleC4gIEZvciBleGFtcGxlLCBpZiBgbXVsdGlfcm13X2lkeGAgaXMgMTUsIHdlIHdlcmUgYWxsb2NhdGluZyAxMjAgYnl0ZXMgaW5zdGVhZCBvZiAxODAuCgpOb3csIHdhaXQgYSBtaW51dGUuLi4gd2h5IHRoZSBjaGFuZ2UgaW4gYE1BWF9STVdfQ01EX05VTUJFUmAgZnJvbSAxNSB0byAxND8gIEZpZnRlZW4gcmVnaXN0ZXIgY29tbWFuZHMgd291bGQgcmVzdWx0IGluIDE1ICogMTIgYnl0ZXMgPSAxODAgYnl0ZXMuICBBZGQgdGhlIEhUQy9XTUkgaGVhZGVycyBhbmQgaXQgc2hvdWxkIGJlIDE5MiBieXRlcywgd2hpY2ggaXMgZXhhY3RseSB0aHJlZSB0aW1lcyB0aGUgdHlwaWNhbCA2NC1ieXRlIFVTQiBwYWNrZXQgc2l6ZS4gIFdpdGggMTQgY29tbWFuZHMsIHdlIHdvdWxkIGhhdmUgMTY4IGJ5dGVzLCBhbmQgbWF5YmUgYSBwYXJ0aWFsIHBhY2tldD8gVVNCIGJ1bGsgYW5kIGludGVycnVwdCB0cmFuc2ZlcnMgdGhhdCBhcmUgKmV4YWN0KiBtdWx0aXBsZXMgb2YgdGhlIGBtYXhwYWNrZXRgIHNpemUgKHdpdGhvdXQgYSBaTFAgLSBaZXJvIExlbmd0aCBQYWNrZXQpIGNhbiBwb3RlbnRpYWxseSBoYW5nLCBhbmQgdGhlIGRhdGEgbWlnaHQgbmV2ZXIgYmUgZGVsaXZlcmVkIGlmIHRoZSBmaXJtd2FyZSBleHBlY3RzIGEgc2hvcnRlciBwYWNrZXQuIEFuZCBJJiMzOTttIHJlY2FsbGluZyB0aGF0IGBoaWZfdXNiX3NlbmRfcmVnb3V0YCBhY3R1YWxseSAqd2FybnMqIGlmIGBza2ItJmd0O2xlbiAlIG1heHBhY2tldCA9PSAwYC4gV2UgbmVlZCB0byBpbnZlc3RpZ2F0ZSBgaGlmX3VzYi5jYCBhcm91bmQgYGhpZl91c2Jfc2VuZF9yZWdvdXRgIHRvIGNvbmZpcm0gdGhpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMTI6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogOTUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA5NTpcdFx0a2ZyZWVfc2tiKGNtZC1cdTAwM2Vza2IpO1xuICA5NjpcdFx0a2ZyZWUoY21kKTtcbiAgOTc6XHR9XG4gIDk4Olx0XG4gIDk5Olx0c3RhdGljIGludCBoaWZfdXNiX3NlbmRfcmVnb3V0KHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2RldixcbiAxMDA6XHRcdFx0XHQgICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiAxMDE6XHR7XG4gMTAyOlx0XHR1MTYgbWF4cGFja2V0ID0gdXNiX21heHBhY2tldChoaWZfZGV2LVx1MDAzZXVkZXYsXG4gMTAzOlx0XHRcdFx0XHQgICAgICB1c2Jfc25kaW50cGlwZShoaWZfZGV2LVx1MDAzZXVkZXYsXG4gMTA0Olx0XHRcdFx0XHRcdFx0ICAgICBVU0JfUkVHX09VVF9QSVBFKSk7XG4gMTA1Olx0XHRzdHJ1Y3QgdXJiICp1cmI7XG4gMTA2Olx0XHRzdHJ1Y3QgY21kX2J1ZiAqY21kO1xuIDEwNzpcdFx0aW50IHJldCA9IDA7XG4gMTA4Olx0XG4gMTA5Olx0XHRpZiAoV0FSTl9PTkNFKG1heHBhY2tldCBcdTAwMjZcdTAwMjYgc2tiLVx1MDAzZWxlbiAlIG1heHBhY2tldCA9PSAwLFxuIDExMDpcdFx0XHQgICAgICBcJiMzNDsldS1ieXRlIGNvbW1hbmQgZmlsbHMgd2hvbGUgVVNCIHBhY2tldHNcXG5cJiMzNDssIHNrYi1cdTAwM2VsZW4pKVxuIDExMTpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiAxMTI6XHRcbiAxMTM6XHRcdHVyYiA9IHVzYl9hbGxvY191cmIoMCwgR0ZQX0tFUk5FTCk7XG4gMTE0Olx0XHRpZiAodXJiID09IE5VTEwpXG4gMTE1Olx0XHRcdHJldHVybiAtRU5PTUVNO1xuIDExNjpcdFxuIDExNzpcdFx0Y21kID0ga3phbGxvY19vYmooKmNtZCk7XG4gMTE4Olx0XHRpZiAoY21kID09IE5VTEwpIHtcbiAxMTk6XHRcdFx0dXNiX2ZyZWVfdXJiKHVyYik7XG4gMTIwOlx0XHRcdHJldHVybiAtRU5PTUVNO1xuIDEyMTpcdFx0fVxuIDEyMjpcdFxuIDEyMzpcdFx0Y21kLVx1MDAzZXNrYiA9IHNrYjtcbiAxMjQ6XHRcdGNtZC1cdTAwM2VoaWZfZGV2ID0gaGlmX2RldjtcbiAxMjU6XHRcbiAxMjY6XHRcdHVzYl9maWxsX2ludF91cmIodXJiLCBoaWZfZGV2LVx1MDAzZXVkZXYsXG4gMTI3Olx0XHRcdFx0IHVzYl9zbmRpbnRwaXBlKGhpZl9kZXYtXHUwMDNldWRldiwgVVNCX1JFR19PVVRfUElQRSksXG4gMTI4Olx0XHRcdFx0IHNrYi1cdTAwM2VkYXRhLCBza2ItXHUwMDNlbGVuLFxuIDEyOTpcdFx0XHRcdCBoaWZfdXNiX3JlZ291dF9jYiwgY21kLCAxKTtcbiAxMzA6XHRcbiAxMzE6XHRcdHVzYl9hbmNob3JfdXJiKHVyYiwgXHUwMDI2aGlmX2Rldi1cdTAwM2VyZWdvdXRfc3VibWl0dGVkKTtcbiAxMzI6XHRcdHJldCA9IHVzYl9zdWJtaXRfdXJiKHVyYiwgR0ZQX0tFUk5FTCk7XG4gMTMzOlx0XHRpZiAocmV0KSB7XG4gMTM0Olx0XHRcdHVzYl91bmFuY2hvcl91cmIodXJiKTtcbiAxMzU6XHRcdFx0a2ZyZWUoY21kKTtcbiAxMzY6XHRcdH1cbiAxMzc6XHRcdHVzYl9mcmVlX3VyYih1cmIpO1xuIDEzODpcdFxuIDEzOTpcdFx0cmV0dXJuIHJldDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMTI6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzY1NwoJCQkJCQkJb3V0cHV0OiAzMDIKCQkJCQkJCXRob3VnaHRzOiA4MTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqS01TQU4gQXNzZXNzbWVudDogTm8gTmVlZCBIZXJlKioKCk9rYXksIGxldCYjMzk7cyBicmVhayBkb3duIHRoaXMgcGF0Y2ggYW5kIHNlZSBpZiB3ZSBuZWVkIHRvIGJyaW5nIGluIEtNU0FOLiBGaXJzdCwgdGhlIGNvcmUgb2YgdGhlIGNoYW5nZXM6CgoxLiAgKipgYXRoOWtfcmVnX3Jtd19idWZmZXJgIEZpeDoqKiBUaGlzIGlzIHRoZSBtb3N0IGNydWNpYWwgcGFydC4gSXQgbG9va3MgbGlrZSB3ZSB3ZXJlIGFjY2lkZW50YWxseSBzZW5kaW5nIGEgdHJ1bmNhdGVkIHN0cnVjdHVyZSBzaXplIChgc2l6ZW9mKHN0cnVjdCByZWdpc3Rlcl93cml0ZSlgKSB0byBgYXRoOWtfd21pX2NtZCgpYCBpbnN0ZWFkIG9mIHRoZSBjb3JyZWN0IHNpemUgKGBzaXplb2Yoc3RydWN0IHJlZ2lzdGVyX3JtdylgKSBmb3IgdGhlIGBtdWx0aV9ybXdgIGFycmF5LiBUaGUgY29kZSBwb3B1bGF0ZXMgdGhlIGBtdWx0aV9ybXdgIGFycmF5IChvZiBgc3RydWN0IHJlZ2lzdGVyX3Jtd2AgZWxlbWVudHMpLCBzcGVjaWZpY2FsbHkgZmlsbGluZyB0aGUgYHJlZ2AsIGBzZXRgLCBhbmQgYGNscmAgZmllbGRzIGZvciBlYWNoIGVudHJ5LiBUaGUgY29ycmVjdGlvbiBub3cgZW5zdXJlcyB0aGF0IHdlIHNlbmQgdGhlIGNvbXBsZXRlLCBpbml0aWFsaXplZCBkYXRhLiBCZWZvcmUsIHdlIHdlcmUgZWZmZWN0aXZlbHkgdHJ1bmNhdGluZyBkYXRhIHRvIDggYnl0ZXMsIGJ1dCBzZW5kaW5nIHRoZSBkYXRhIHNpemUgYXMgdGhvdWdoIGl0IHdlcmUgMTIgYnl0ZXMuCgoyLiAgKipgTUFYX1JNV19DTURfTlVNQkVSYCBBZGp1c3RtZW50OioqIFJlZHVjaW5nIHRoaXMgY29uc3RhbnQgZnJvbSAxNSB0byAxNCBzZWVtcyB0byBiZSBhIFVTQi1zcGVjaWZpYyBvcHRpbWl6YXRpb24uIEl0JiMzOTtzIGRvbmUgdG8gcHJldmVudCBVU0IgcGFja2V0IGxlbmd0aCBmcm9tIGJlaW5nIGEgbXVsdGlwbGUgb2YgNjQgYnl0ZXMsIHByZXZlbnRpbmcgZW5kcG9pbnQgaGFuZy4gVGhpcyBwcmltYXJpbHkgYWZmZWN0cyB0aGUgc2l6ZSBvZiB0aGUgYXJyYXksIGBtdWx0aV9ybXdgLgoKMy4gICoqYGhpZl91c2Jfc2VuZF9yZWdvdXRgIENoZWNrOioqIFRoaXMgYWRkcyBhIHNpbXBsZSBsZW5ndGggY2hlY2ssIHJldHVybmluZyBgLUVJTlZBTGAgaWYgYHNrYi0mZ3Q7bGVuYCAodGhlIGluaXRpYWxpemVkIGxlbmd0aCBvZiB0aGUgc2tiKSBpcyBhIG11bHRpcGxlIG9mIGBtYXhwYWNrZXRgLgoKTm93LCBkb2VzIGFueSBvZiB0aGlzIHNjcmVhbSAmIzM0O0tNU0FOIHJpc2smIzM0Oz8gTGV0JiMzOTtzIGdvIHRocm91Z2ggdGhlIGNoZWNrbGlzdDoKCiogICAqKlN0cnVjdHVyZSBFeHBvc3VyZSB0byBVc2Vyc3BhY2U6KiogTm8uIFRoaXMgaXMgaW50ZXJuYWwgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIHRoZSBkcml2ZXIgYW5kIHRoZSBVU0IgaGFyZHdhcmUvZmlybXdhcmUuIE5vIGRhdGEgaXMgYmVpbmcgbGVha2VkIHRvIHVzZXJzcGFjZS4KKiAgICoqVW5pbml0aWFsaXplZCBWYXJpYWJsZSBEZXBlbmRlbmNlOioqIE5vcGUuIGBtYXhwYWNrZXRgIGlzIHRoZSByZXN1bHQgb2YgYHVzYl9tYXhwYWNrZXQoKWAsIGFuZCBgc2tiLSZndDtsZW5gIGNvbWVzIGZyb20gdGhlIGBza2JgJiMzOTtzIGluaXRpYWxpemVkIGxlbmd0aC4gVGhlc2UgYXJlIGNoZWNrZWQgYW5kIHdlbGwtZGVmaW5lZC4KKiAgICoqQ29tcGxleCBEYXRhIFN0cnVjdHVyZSBNaXNoYW5kbGluZzoqKiBOby4gVGhlIGBtdWx0aV9ybXdgIGFycmF5IGlzIGFsbG9jYXRlZCBhbmQgbWV0aWN1bG91c2x5IHBvcHVsYXRlZC4gQWxsIGZpZWxkcyB3aXRoaW4gdGhlIGFycmF5IGVsZW1lbnRzIGFyZSBpbml0aWFsaXplZCBiZWZvcmUgYmVpbmcgc2VudC4KKiAgICoqQm91bmRzIENoZWNrIFByb2JsZW1zOioqIFRoZSBzaXplIGNvcnJlY3Rpb24gaW4gYGF0aDlrX3JlZ19ybXdfYnVmZmVyYCAqZml4ZXMqIGEgcG90ZW50aWFsIGlzc3VlLCBlbnN1cmluZyB3ZSYjMzk7cmUgc2VuZGluZyB0aGUgY29ycmVjdCBzaXplIG9mIHRoZSBmdWxseSBpbml0aWFsaXplZCBkYXRhIGluIGBtdWx0aV9ybXdgLiBXZSAqd2VyZW4mIzM5O3QqIHJlYWRpbmcgdW5pbml0aWFsaXplZCBtZW1vcnksIHdlIHdlcmUgKnRydW5jYXRpbmcqIHRoZSBzaXplIHNlbnQuCgpUaGVyZWZvcmUsIGdpdmVuIHRoZSBuYXR1cmUgb2YgdGhlIGNoYW5nZXMsIHBhcnRpY3VsYXJseSB0aGF0IHRoZXkgYXJlIHdpdGhpbiBpbnRlcm5hbCBkcml2ZXIgb3BlcmF0aW9ucyBhbmQgdGhlIHN0cnVjdHVyZXMgYXJlIHByb3Blcmx5IGluaXRpYWxpemVkLCBJIGRvbiYjMzk7dCBzZWUgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgbGVha3MgdGhhdCBLTVNBTiB3b3VsZCBzcGVjaWZpY2FsbHkgY2F0Y2guIFN0YW5kYXJkIGRldGVjdG9ycyBzaG91bGQgYmUgYWRlcXVhdGUgaGVyZS4gU28sIGxldCYjMzk7cyBzZXQgYE5lZWRzS01TQU49ZmFsc2VgIHdpdGggdGhlIHJlYXNvbmluZyB0aGF0IHRoZSBwYXRjaCBmaXhlcyBhIHNpemUgZGlzY3JlcGFuY3kgdG8gcGFzcyBmdWxseSBpbml0aWFsaXplZCBzdHJ1Y3RzLCBhbmQgYWx0ZXJzIHNpemVzIHNhZmVseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMTI6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgVVNCIGNvbW11bmljYXRpb24gaXNzdWUgaW4gdGhlIGF0aDlrIGRyaXZlciB3aGVyZSBVU0IgcGFja2V0cyB0aGF0IGFyZSBleGFjdCBtdWx0aXBsZXMgb2YgZW5kcG9pbnQgbWF4cGFja2V0IHNpemUgY2F1c2UgZmlybXdhcmUgZGVsaXZlcnkgc3RhbGxzLiBUaGUgY2hhbmdlcyBjb25zaXN0IG9mOlxuMS4gQWRkaW5nIGEgY2hlY2sgaW4gYGhpZl91c2Jfc2VuZF9yZWdvdXQoKWAgdG8gd2FybiBhbmQgcmVqZWN0IHNrYnMgd2hvc2UgbGVuZ3RoIGlzIGFuIGV4YWN0IG11bHRpcGxlIG9mIHRoZSBlbmRwb2ludCBtYXhwYWNrZXQgc2l6ZS5cbjIuIENvcnJlY3RpbmcgdGhlIGJ1ZmZlciBzaXplIGNhbGN1bGF0aW9uIGluIGBhdGg5a19yZWdfcm13X2J1ZmZlcigpYCBmcm9tIGBzaXplb2Yoc3RydWN0IHJlZ2lzdGVyX3dyaXRlKWAgKDggYnl0ZXMpIHRvIGBzaXplb2Yoc3RydWN0IHJlZ2lzdGVyX3JtdylgICgxMiBieXRlcykuXG4zLiBMb3dlcmluZyBgTUFYX1JNV19DTURfTlVNQkVSYCBmcm9tIDE1IHRvIDE0IGluIGB3bWkuaGAgdG8gYXZvaWQgNjQtYnl0ZSBhbGlnbmVkIFVTQiBwYXlsb2Fkcy5cblxuUmVnYXJkaW5nIG1lbW9yeSBpbml0aWFsaXphdGlvbjpcbi0gQWxsIGZpZWxkcyAoYHJlZ2AsIGBzZXRgLCBgY2xyYCkgb2YgdGhlIGBzdHJ1Y3QgcmVnaXN0ZXJfcm13YCBhcnJheSBlbGVtZW50cyBpbiBgcHJpdi1cdTAwM2V3bWktXHUwMDNlbXVsdGlfcm13YCBhcmUgZXhwbGljaXRseSBpbml0aWFsaXplZCBiZWZvcmUgYmVpbmcgc2VudCB2aWEgYGF0aDlrX3dtaV9jbWQoKWAuXG4tIE5vIHVzZXItc3BhY2UgY29weSBwYXRocyBvciB1bmluaXRpYWxpemVkIGtlcm5lbCBzdHJ1Y3R1cmUgZmllbGRzIGFyZSBleHBvc2VkIG9yIG1vZGlmaWVkLlxuLSBObyBicmFuY2ggY29uZGl0aW9ucyByZWx5IG9uIHVuaW5pdGlhbGl6ZWQgdmFsdWVzLlxuXG5UaGVyZWZvcmUsIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcywgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRyZXNzZXMgYSBVU0IgY29tbXVuaWNhdGlvbiBpc3N1ZSBpbiB0aGUgYXRoOWsgZHJpdmVyIHdoZXJlIFVTQiBwYWNrZXRzIHRoYXQgYXJlIGV4YWN0IG11bHRpcGxlcyBvZiBlbmRwb2ludCBtYXhwYWNrZXQgc2l6ZSBjYXVzZSBmaXJtd2FyZSBkZWxpdmVyeSBzdGFsbHMuIFRoZSBjaGFuZ2VzIGNvbnNpc3Qgb2Y6XG4xLiBBZGRpbmcgYSBjaGVjayBpbiBgaGlmX3VzYl9zZW5kX3JlZ291dCgpYCB0byB3YXJuIGFuZCByZWplY3Qgc2ticyB3aG9zZSBsZW5ndGggaXMgYW4gZXhhY3QgbXVsdGlwbGUgb2YgdGhlIGVuZHBvaW50IG1heHBhY2tldCBzaXplLlxuMi4gQ29ycmVjdGluZyB0aGUgYnVmZmVyIHNpemUgY2FsY3VsYXRpb24gaW4gYGF0aDlrX3JlZ19ybXdfYnVmZmVyKClgIGZyb20gYHNpemVvZihzdHJ1Y3QgcmVnaXN0ZXJfd3JpdGUpYCAoOCBieXRlcykgdG8gYHNpemVvZihzdHJ1Y3QgcmVnaXN0ZXJfcm13KWAgKDEyIGJ5dGVzKS5cbjMuIExvd2VyaW5nIGBNQVhfUk1XX0NNRF9OVU1CRVJgIGZyb20gMTUgdG8gMTQgaW4gYHdtaS5oYCB0byBhdm9pZCA2NC1ieXRlIGFsaWduZWQgVVNCIHBheWxvYWRzLlxuXG5SZWdhcmRpbmcgbWVtb3J5IGluaXRpYWxpemF0aW9uOlxuLSBBbGwgZmllbGRzIChgcmVnYCwgYHNldGAsIGBjbHJgKSBvZiB0aGUgYHN0cnVjdCByZWdpc3Rlcl9ybXdgIGFycmF5IGVsZW1lbnRzIGluIGBwcml2LVx1MDAzZXdtaS1cdTAwM2VtdWx0aV9ybXdgIGFyZSBleHBsaWNpdGx5IGluaXRpYWxpemVkIGJlZm9yZSBiZWluZyBzZW50IHZpYSBgYXRoOWtfd21pX2NtZCgpYC5cbi0gTm8gdXNlci1zcGFjZSBjb3B5IHBhdGhzIG9yIHVuaW5pdGlhbGl6ZWQga2VybmVsIHN0cnVjdHVyZSBmaWVsZHMgYXJlIGV4cG9zZWQgb3IgbW9kaWZpZWQuXG4tIE5vIGJyYW5jaCBjb25kaXRpb25zIHJlbHkgb24gdW5pbml0aWFsaXplZCB2YWx1ZXMuXG5cblRoZXJlZm9yZSwgdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLCBhbmQgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDZUMTI6NDc6MzQuNDk1NjcyMTIyWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzEwNDMzMDM2MzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQVRIOUtfSFRDXCIsXG4gICAgXCJVU0JcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJXTEFOX1ZFTkRPUl9BVEhcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJoaWZfdXNiX3NlbmRfcmVnb3V0XCIsXG4gICAgXCJhdGg5a19yZWdfcm13X2J1ZmZlclwiLFxuICAgIFwiYXRoOWtfcmVnX3Jtd19mbHVzaFwiLFxuICAgIFwiYXRoOWtfcmVnX3Jtd1wiLFxuICAgIFwiaGlmX3VzYl9zZW5kXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRyZXNzZXMgYSBVU0IgY29tbXVuaWNhdGlvbiBpc3N1ZSBpbiB0aGUgYXRoOWsgZHJpdmVyIHdoZXJlIFVTQiBwYWNrZXRzIHRoYXQgYXJlIGV4YWN0IG11bHRpcGxlcyBvZiBlbmRwb2ludCBtYXhwYWNrZXQgc2l6ZSBjYXVzZSBmaXJtd2FyZSBkZWxpdmVyeSBzdGFsbHMuIFRoZSBjaGFuZ2VzIGNvbnNpc3Qgb2Y6XFxuMS4gQWRkaW5nIGEgY2hlY2sgaW4gYGhpZl91c2Jfc2VuZF9yZWdvdXQoKWAgdG8gd2FybiBhbmQgcmVqZWN0IHNrYnMgd2hvc2UgbGVuZ3RoIGlzIGFuIGV4YWN0IG11bHRpcGxlIG9mIHRoZSBlbmRwb2ludCBtYXhwYWNrZXQgc2l6ZS5cXG4yLiBDb3JyZWN0aW5nIHRoZSBidWZmZXIgc2l6ZSBjYWxjdWxhdGlvbiBpbiBgYXRoOWtfcmVnX3Jtd19idWZmZXIoKWAgZnJvbSBgc2l6ZW9mKHN0cnVjdCByZWdpc3Rlcl93cml0ZSlgICg4IGJ5dGVzKSB0byBgc2l6ZW9mKHN0cnVjdCByZWdpc3Rlcl9ybXcpYCAoMTIgYnl0ZXMpLlxcbjMuIExvd2VyaW5nIGBNQVhfUk1XX0NNRF9OVU1CRVJgIGZyb20gMTUgdG8gMTQgaW4gYHdtaS5oYCB0byBhdm9pZCA2NC1ieXRlIGFsaWduZWQgVVNCIHBheWxvYWRzLlxcblxcblJlZ2FyZGluZyBtZW1vcnkgaW5pdGlhbGl6YXRpb246XFxuLSBBbGwgZmllbGRzIChgcmVnYCwgYHNldGAsIGBjbHJgKSBvZiB0aGUgYHN0cnVjdCByZWdpc3Rlcl9ybXdgIGFycmF5IGVsZW1lbnRzIGluIGBwcml2LVxcdTAwM2V3bWktXFx1MDAzZW11bHRpX3Jtd2AgYXJlIGV4cGxpY2l0bHkgaW5pdGlhbGl6ZWQgYmVmb3JlIGJlaW5nIHNlbnQgdmlhIGBhdGg5a193bWlfY21kKClgLlxcbi0gTm8gdXNlci1zcGFjZSBjb3B5IHBhdGhzIG9yIHVuaW5pdGlhbGl6ZWQga2VybmVsIHN0cnVjdHVyZSBmaWVsZHMgYXJlIGV4cG9zZWQgb3IgbW9kaWZpZWQuXFxuLSBObyBicmFuY2ggY29uZGl0aW9ucyByZWx5IG9uIHVuaW5pdGlhbGl6ZWQgdmFsdWVzLlxcblxcblRoZXJlZm9yZSwgdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLCBhbmQgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgVVNCIHdpcmVsZXNzIGRyaXZlciBhdGg5a19odGMsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgVVNCIGdhZGdldC9kZXZpY2UgZW11bGF0aW9uIGluIHN5emthbGxlci4gVGhlIGNoYW5nZXMgYWRkIGEgbmV3IFdBUk5fT05DRSBydW50aW1lIGFzc2VydGlvbiBhbmQgY2hlY2sgaW4gaGlmX3VzYl9zZW5kX3JlZ291dCB0byBwcmV2ZW50IHNlbmRpbmcgcGFja2V0cyB3aG9zZSBsZW5ndGggaXMgYW4gZXhhY3QgbXVsdGlwbGUgb2YgdGhlIFVTQiBtYXhwYWNrZXQgc2l6ZSwgY29ycmVjdCB0aGUgZWxlbWVudCBzaXplIGNhbGN1bGF0aW9uIGluIGF0aDlrX3JlZ19ybXdfYnVmZmVyIGZyb20gc2l6ZW9mKHN0cnVjdCByZWdpc3Rlcl93cml0ZSkgdG8gc2l6ZW9mKHN0cnVjdCByZWdpc3Rlcl9ybXcpLCBhbmQgcmVkdWNlIE1BWF9STVdfQ01EX05VTUJFUi4gRnV6emluZyBpcyB3YXJyYW50ZWQgdG8gdGVzdCB0aGUgbmV3IGFzc2VydGlvbiBhbmQgYWx0ZXJlZCBSTVcgY29tbWFuZCBiYXRjaGluZyBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMTI6NDc6MzQuNDk1Njc5MTAyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDg4MDE1NzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA0YTg3MmU4NTkxN2Q2NzA0MDA3NTE5MTk3ODI0NmYzOWIwYjk1ZTQ3XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTdW4gU2VwIDYgMTI6NDc6MzMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmNcXG5pbmRleCBkMzQ5MWZmMDhlNmVmLi40OTMwM2M3ZTNmZWY0IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jXFxuQEAgLTk5LDEwICs5OSwxNyBAQCBzdGF0aWMgdm9pZCBoaWZfdXNiX3JlZ291dF9jYihzdHJ1Y3QgdXJiICp1cmIpXFxuIHN0YXRpYyBpbnQgaGlmX3VzYl9zZW5kX3JlZ291dChzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYsXFxuIFxcdFxcdFxcdCAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiB7XFxuK1xcdHUxNiBtYXhwYWNrZXQgPSB1c2JfbWF4cGFja2V0KGhpZl9kZXYtXFx1MDAzZXVkZXYsXFxuK1xcdFxcdFxcdFxcdCAgICAgIHVzYl9zbmRpbnRwaXBlKGhpZl9kZXYtXFx1MDAzZXVkZXYsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCAgICAgVVNCX1JFR19PVVRfUElQRSkpO1xcbiBcXHRzdHJ1Y3QgdXJiICp1cmI7XFxuIFxcdHN0cnVjdCBjbWRfYnVmICpjbWQ7XFxuIFxcdGludCByZXQgPSAwO1xcbiBcXG4rXFx0aWYgKFdBUk5fT05DRShtYXhwYWNrZXQgXFx1MDAyNlxcdTAwMjYgc2tiLVxcdTAwM2VsZW4gJSBtYXhwYWNrZXQgPT0gMCxcXG4rXFx0XFx0ICAgICAgXFxcIiV1LWJ5dGUgY29tbWFuZCBmaWxscyB3aG9sZSBVU0IgcGFja2V0c1xcXFxuXFxcIiwgc2tiLVxcdTAwM2VsZW4pKVxcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFxuIFxcdHVyYiA9IHVzYl9hbGxvY191cmIoMCwgR0ZQX0tFUk5FTCk7XFxuIFxcdGlmICh1cmIgPT0gTlVMTClcXG4gXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuY1xcbmluZGV4IDZkZTc4YWU4NTcyNjguLjBiNDlkMmNjOTlmMGIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jXFxuQEAgLTQwNSw3ICs0MDUsNyBAQCBzdGF0aWMgdm9pZCBhdGg5a19yZWdfcm13X2J1ZmZlcih2b2lkICpod19wcml2LFxcbiBcXHRpZiAocHJpdi1cXHUwMDNld21pLVxcdTAwM2VtdWx0aV9ybXdfaWR4ID09IE1BWF9STVdfQ01EX05VTUJFUikge1xcbiBcXHRcXHRyID0gYXRoOWtfd21pX2NtZChwcml2LVxcdTAwM2V3bWksIFdNSV9SRUdfUk1XX0NNRElELFxcbiBcXHRcXHRcXHQgICh1OCAqKSBcXHUwMDI2cHJpdi1cXHUwMDNld21pLVxcdTAwM2VtdWx0aV9ybXcsXFxuLVxcdFxcdFxcdCAgc2l6ZW9mKHN0cnVjdCByZWdpc3Rlcl93cml0ZSkgKiBwcml2LVxcdTAwM2V3bWktXFx1MDAzZW11bHRpX3Jtd19pZHgsXFxuK1xcdFxcdFxcdCAgc2l6ZW9mKHN0cnVjdCByZWdpc3Rlcl9ybXcpICogcHJpdi1cXHUwMDNld21pLVxcdTAwM2VtdWx0aV9ybXdfaWR4LFxcbiBcXHRcXHRcXHQgICh1OCAqKSBcXHUwMDI2cnNwX3N0YXR1cywgc2l6ZW9mKHJzcF9zdGF0dXMpLFxcbiBcXHRcXHRcXHQgIDEwMCk7XFxuIFxcdFxcdGlmICh1bmxpa2VseShyKSkge1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmhcXG5pbmRleCA1YzNiNzEwYjhmMzE5Li4yNTZmNDYwOThhNmIxIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaFxcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaFxcbkBAIC0xMjYsNyArMTI2LDggQEAgZW51bSB3bWlfZXZlbnRfaWQge1xcbiB9O1xcbiBcXG4gI2RlZmluZSBNQVhfQ01EX05VTUJFUiA2Mlxcbi0jZGVmaW5lIE1BWF9STVdfQ01EX05VTUJFUiAxNVxcbisvKiAxNSBlbnRyaWVzIG1ha2UgMTkyIGJ5dGVzLCB0aHJlZSBmdWxsIFVTQiBwYWNrZXRzOiBuZXZlciBkZWxpdmVyZWQuICovXFxuKyNkZWZpbmUgTUFYX1JNV19DTURfTlVNQkVSIDE0XFxuIFxcbiBzdHJ1Y3QgcmVnaXN0ZXJfd3JpdGUge1xcbiBcXHRfX2JlMzIgcmVnO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQxMjo0NzozNS4wNDUyOTAxMTRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjUyMjIyODQ0MDcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkFUSDlLX0hUQ1wiLFxuICAgIFwiVVNCXCIsXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiV0xBTl9WRU5ET1JfQVRIXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaGlmX3VzYl9zZW5kX3JlZ291dFwiLFxuICAgIFwiYXRoOWtfcmVnX3Jtd19idWZmZXJcIixcbiAgICBcImF0aDlrX3JlZ19ybXdfZmx1c2hcIixcbiAgICBcImF0aDlrX3JlZ19ybXdcIixcbiAgICBcImhpZl91c2Jfc2VuZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBVU0Igd2lyZWxlc3MgZHJpdmVyIGF0aDlrX2h0Yywgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSBVU0IgZ2FkZ2V0L2RldmljZSBlbXVsYXRpb24gaW4gc3l6a2FsbGVyLiBUaGUgY2hhbmdlcyBhZGQgYSBuZXcgV0FSTl9PTkNFIHJ1bnRpbWUgYXNzZXJ0aW9uIGFuZCBjaGVjayBpbiBoaWZfdXNiX3NlbmRfcmVnb3V0IHRvIHByZXZlbnQgc2VuZGluZyBwYWNrZXRzIHdob3NlIGxlbmd0aCBpcyBhbiBleGFjdCBtdWx0aXBsZSBvZiB0aGUgVVNCIG1heHBhY2tldCBzaXplLCBjb3JyZWN0IHRoZSBlbGVtZW50IHNpemUgY2FsY3VsYXRpb24gaW4gYXRoOWtfcmVnX3Jtd19idWZmZXIgZnJvbSBzaXplb2Yoc3RydWN0IHJlZ2lzdGVyX3dyaXRlKSB0byBzaXplb2Yoc3RydWN0IHJlZ2lzdGVyX3JtdyksIGFuZCByZWR1Y2UgTUFYX1JNV19DTURfTlVNQkVSLiBGdXp6aW5nIGlzIHdhcnJhbnRlZCB0byB0ZXN0IHRoZSBuZXcgYXNzZXJ0aW9uIGFuZCBhbHRlcmVkIFJNVyBjb21tYW5kIGJhdGNoaW5nIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDRhODcyZTg1OTE3ZDY3MDQwMDc1MTkxOTc4MjQ2ZjM5YjBiOTVlNDdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIFNlcCA2IDEyOjQ3OjMzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmNcbmluZGV4IGQzNDkxZmYwOGU2ZWYuLjQ5MzAzYzdlM2ZlZjQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jXG5AQCAtOTksMTAgKzk5LDE3IEBAIHN0YXRpYyB2b2lkIGhpZl91c2JfcmVnb3V0X2NiKHN0cnVjdCB1cmIgKnVyYilcbiBzdGF0aWMgaW50IGhpZl91c2Jfc2VuZF9yZWdvdXQoc3RydWN0IGhpZl9kZXZpY2VfdXNiICpoaWZfZGV2LFxuIFx0XHRcdCAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIHtcbitcdHUxNiBtYXhwYWNrZXQgPSB1c2JfbWF4cGFja2V0KGhpZl9kZXYtXHUwMDNldWRldixcbitcdFx0XHRcdCAgICAgIHVzYl9zbmRpbnRwaXBlKGhpZl9kZXYtXHUwMDNldWRldixcbitcdFx0XHRcdFx0XHQgICAgIFVTQl9SRUdfT1VUX1BJUEUpKTtcbiBcdHN0cnVjdCB1cmIgKnVyYjtcbiBcdHN0cnVjdCBjbWRfYnVmICpjbWQ7XG4gXHRpbnQgcmV0ID0gMDtcbiBcbitcdGlmIChXQVJOX09OQ0UobWF4cGFja2V0IFx1MDAyNlx1MDAyNiBza2ItXHUwMDNlbGVuICUgbWF4cGFja2V0ID09IDAsXG4rXHRcdCAgICAgIFwiJXUtYnl0ZSBjb21tYW5kIGZpbGxzIHdob2xlIFVTQiBwYWNrZXRzXFxuXCIsIHNrYi1cdTAwM2VsZW4pKVxuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcbiBcdHVyYiA9IHVzYl9hbGxvY191cmIoMCwgR0ZQX0tFUk5FTCk7XG4gXHRpZiAodXJiID09IE5VTEwpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuY1xuaW5kZXggNmRlNzhhZTg1NzI2OC4uMGI0OWQyY2M5OWYwYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jXG5AQCAtNDA1LDcgKzQwNSw3IEBAIHN0YXRpYyB2b2lkIGF0aDlrX3JlZ19ybXdfYnVmZmVyKHZvaWQgKmh3X3ByaXYsXG4gXHRpZiAocHJpdi1cdTAwM2V3bWktXHUwMDNlbXVsdGlfcm13X2lkeCA9PSBNQVhfUk1XX0NNRF9OVU1CRVIpIHtcbiBcdFx0ciA9IGF0aDlrX3dtaV9jbWQocHJpdi1cdTAwM2V3bWksIFdNSV9SRUdfUk1XX0NNRElELFxuIFx0XHRcdCAgKHU4ICopIFx1MDAyNnByaXYtXHUwMDNld21pLVx1MDAzZW11bHRpX3Jtdyxcbi1cdFx0XHQgIHNpemVvZihzdHJ1Y3QgcmVnaXN0ZXJfd3JpdGUpICogcHJpdi1cdTAwM2V3bWktXHUwMDNlbXVsdGlfcm13X2lkeCxcbitcdFx0XHQgIHNpemVvZihzdHJ1Y3QgcmVnaXN0ZXJfcm13KSAqIHByaXYtXHUwMDNld21pLVx1MDAzZW11bHRpX3Jtd19pZHgsXG4gXHRcdFx0ICAodTggKikgXHUwMDI2cnNwX3N0YXR1cywgc2l6ZW9mKHJzcF9zdGF0dXMpLFxuIFx0XHRcdCAgMTAwKTtcbiBcdFx0aWYgKHVubGlrZWx5KHIpKSB7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oXG5pbmRleCA1YzNiNzEwYjhmMzE5Li4yNTZmNDYwOThhNmIxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmhcbkBAIC0xMjYsNyArMTI2LDggQEAgZW51bSB3bWlfZXZlbnRfaWQge1xuIH07XG4gXG4gI2RlZmluZSBNQVhfQ01EX05VTUJFUiA2MlxuLSNkZWZpbmUgTUFYX1JNV19DTURfTlVNQkVSIDE1XG4rLyogMTUgZW50cmllcyBtYWtlIDE5MiBieXRlcywgdGhyZWUgZnVsbCBVU0IgcGFja2V0czogbmV2ZXIgZGVsaXZlcmVkLiAqL1xuKyNkZWZpbmUgTUFYX1JNV19DTURfTlVNQkVSIDE0XG4gXG4gc3RydWN0IHJlZ2lzdGVyX3dyaXRlIHtcbiBcdF9fYmUzMiByZWc7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQxMjo0NzozNS4wNDUyOTIyOTRaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo5ODExNjcxMTc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGlzIFBhdGNoIGZvciBVU0IgVnVsbmVyYWJpbGl0aWVzKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIHBhdGNoIGlzIGFjdHVhbGx5IGRvaW5nLiBJdCBsb29rcyBsaWtlIHdlIGhhdmUgY2hhbmdlcyBhY3Jvc3MgdGhyZWUgZmlsZXMgaW4gdGhlIGBhdGg5a2Agd2lyZWxlc3MgZHJpdmVyOiBgaGlmX3VzYi5jYCwgYGh0Y19kcnZfaW5pdC5jYCwgYW5kIGB3bWkuaGAuIFNwZWNpZmljYWxseTpcblxuKiAgIEluIGBoaWZfdXNiLmNgLCBpdCBzZWVtcyB3ZSdyZSBhZGRpbmcgYSBjaGVjayB3aXRoaW4gYGhpZl91c2Jfc2VuZF9yZWdvdXRgIHJlbGF0ZWQgdG8gVVNCIHBhY2tldCBzaXplLiBXZSBjYWxjdWxhdGUgYG1heHBhY2tldGAgdXNpbmcgYHVzYl9tYXhwYWNrZXQoKWAgYW5kIHRoZW4gYWRkIGEgYFdBUk5fT05DRWAgY2FsbCB0byByZXR1cm4gYC1FSU5WQUxgIGlmIHRoZSBza2IncyBsZW5ndGggaXMgYSBtdWx0aXBsZSBvZiBgbWF4cGFja2V0YC4gVGhpcyBpcyBpbnRlcmVzdGluZzsgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2h5IHRoZXkncmUgYWRkaW5nIHRoaXMuIElzIHRoZXJlIGEgcG90ZW50aWFsIGJ1ZmZlciBvdmVycnVuIGNvbmRpdGlvbiB0aGV5J3JlIHRyeWluZyB0byBwcmV2ZW50IHdpdGggdGhlIGludGVnZXIgZGl2aXNpb24ncyBtb2R1bHVzIG9mIHplcm8/IFBlcmhhcHMgYW4gb2ZmLWJ5LW9uZSBvciBkYXRhIGludGVncml0eSBpc3N1ZT9cblxuKiAgIE5leHQsIGluIGBodGNfZHJ2X2luaXQuY2AsIHRoZSBwYXRjaCBtb2RpZmllcyBhIHNpemUgY2FsY3VsYXRpb24gd2l0aGluIGBhdGg5a19yZWdfcm13X2J1ZmZlcmAuIEl0IHNlZW1zIHdlJ3JlIHN3aXRjaGluZyBmcm9tIGBzdHJ1Y3QgcmVnaXN0ZXJfd3JpdGVgIHRvIGBzdHJ1Y3QgcmVnaXN0ZXJfcm13YC4gVGhpcyBzdWdnZXN0cyBhIHBvdGVudGlhbCBjaGFuZ2UgaW4gdGhlIHVuZGVybHlpbmcgZGF0YSBzdHJ1Y3R1cmUgYmVpbmcgdXNlZCBmb3IgcmVnaXN0ZXIgcmVhZC1tb2RpZnktd3JpdGUgb3BlcmF0aW9ucywgd2hpY2ggSSBuZWVkIHRvIGludmVzdGlnYXRlIGZ1cnRoZXIuIEl0IGFsc28gYXBwZWFycyB0aGUgYHByaXYtXHUwMDNld21pLVx1MDAzZW11bHRpX3Jtd19pZHhgIHZhbHVlIHdpbGwgYWxzbyBuZWVkIGNoZWNraW5nIHdpdGggdGhhdCBjaGFuZ2UuXG5cbiogICBGaW5hbGx5LCBpbiBgd21pLmhgLCBgTUFYX1JNV19DTURfTlVNQkVSYCBpcyBiZWluZyBjaGFuZ2VkIGZyb20gMTUgdG8gMTQuIFRoaXMgc3VnZ2VzdHMgYSBjaGFuZ2UgaW4gdGhlIG1heGltdW0gbnVtYmVyIG9mIHJlZ2lzdGVyIHJlYWQtbW9kaWZ5LXdyaXRlIGNvbW1hbmRzIHRoYXQgY2FuIGJlIGlzc3VlZC4gVGhpcyBzZWVtcyByZWxhdGVkIHRvIHRoZSBjaGFuZ2VzIGluIGBodGNfZHJ2X2luaXQuY2AuXG5cbk5vdywgdGhlIGNydWNpYWwgcXVlc3Rpb246IGNhbiB3ZSByZWFjaCB0aGlzIGBhdGg5a19odGNgIGRyaXZlciB0aHJvdWdoIFVTQiBlbXVsYXRpb24/IFllcywgYmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZyBhbmQgcXVpY2sgY2hlY2ssIGBhdGg5a19odGNgIGlzIGluZGVlZCBhIFVTQiB3aXJlbGVzcyBuZXR3b3JrIGRyaXZlci4gSSdtIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgdGhlIEtjb25maWcgdG8gY29uZmlybSBpdHMgZGVwZW5kZW5jaWVzLiBJZiB3ZSBjYW4gcmVhY2ggaXQsIHRoZW4gdGhpcyBwYXRjaCBiZWNvbWVzIHNpZ25pZmljYW50bHkgbW9yZSBpbnRlcmVzdGluZyBmcm9tIGEgc2VjdXJpdHkgcGVyc3BlY3RpdmUuIEl0IGlzIGdvb2QgdG8ga25vdyBpdCBpcyByZWFjaGFibGUgYW5kLCB0aHVzLCBwb3RlbnRpYWxseSB2dWxuZXJhYmxlLiBJJ2xsIG5lZWQgdG8gZm9jdXMgb24gaG93IHRoZXNlIGNoYW5nZXMgbWlnaHQgaW1wYWN0IGZ1enppbmcgb3IgZXhwbG9pdCBkZXZlbG9wbWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzU3NywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzNSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDEyOjQ3OjQ0Ljg1Njk2ODY5MloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NjgxMTIwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJBVEg5S19IVENcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZz0xMz1jb25maWcgQVRIOUtfQlRDT0VYX1NVUFBPUlRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNC1cXHRib29sIFxcXCJBdGhlcm9zIGJsdWV0b290aCBjb2V4aXN0ZW5jZSBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjE1OlxcdGRlcGVuZHMgb24gKEFUSDlLIHx8IEFUSDlLX0hUQylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNi1cXHRkZWZhdWx0IHlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnPTE1Nj1jb25maWcgQVRIOUtfUENJX05PX0VFUFJPTVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTcxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjE3Mjpjb25maWcgQVRIOUtfSFRDXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTczLVxcdHRyaXN0YXRlIFxcXCJBdGhlcm9zIEhUQyBiYXNlZCB3aXJlbGVzcyBjYXJkcyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTg2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjE4Nzpjb25maWcgQVRIOUtfSFRDX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xODgtXFx0Ym9vbCBcXFwiQXRoZXJvcyBhdGg5a19odGMgZGVidWdnaW5nXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjE4OTpcXHRkZXBlbmRzIG9uIEFUSDlLX0hUQyBcXHUwMDI2XFx1MDAyNiBERUJVR19GU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE5MC1cXHRzZWxlY3QgQVRIOUtfQ09NTU9OX0RFQlVHXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZz0yMDY9Y29uZmlnIEFUSDlLX0NPTU1PTl9TUEVDVFJBTFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTIwNy1cXHRib29sIFxcXCJBdGhlcm9zIGF0aDlrL2F0aDlrX2h0YyBzcGVjdHJhbCBzY2FuIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MjA4OlxcdGRlcGVuZHMgb24gQVRIOUtfREVCVUdGUyB8fCBBVEg5S19IVENfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTIwOS1cXHRzZWxlY3QgUkVMQVlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZT02OD1hdGg5a19odGMteSArPVxcdGh0Y19oc3QubyBcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtNzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlOjc3OmF0aDlrX2h0Yy0kKENPTkZJR19BVEg5S19IVENfREVCVUdGUykgKz0gaHRjX2Rydl9kZWJ1Zy5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTc4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZTo3OTpvYmotJChDT05GSUdfQVRIOUtfSFRDKSArPSBhdGg5a19odGMub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS04MC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDNfZWVwcm9tLmM9MzM5MD1zdGF0aWMgYm9vbCBhdGg5a19od19hcjkzMDBfZmlsbF9lZXByb20oc3RydWN0IGF0aF9odyAqYWgpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAzX2VlcHJvbS5jLTM0MDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwM19lZXByb20uYzozNDAxOiNpZiBkZWZpbmVkKENPTkZJR19BVEg5S19ERUJVR0ZTKSB8fCBkZWZpbmVkKENPTkZJR19BVEg5S19IVENfREVCVUdGUylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAzX2VlcHJvbS5jLTM0MDItc3RhdGljIHUzMiBhcjkwMDNfZHVtcF9tb2RhbF9lZXByb20oY2hhciAqYnVmLCB1MzIgbGVuLCB1MzIgc2l6ZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM9MjM5PXN0YXRpYyBpbmxpbmUgdm9pZCBhdGg5a19za2JfcXVldWVfY29tcGxldGUoc3RydWN0IGhpZl9kZXZpY2VfdXNiICpoaWZfZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0yNDUtXFx0d2hpbGUgKChza2IgPSBfX3NrYl9kZXF1ZXVlKHF1ZXVlKSkgIT0gTlVMTCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6MjQ2OiNpZmRlZiBDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTI0Ny1cXHRcXHRpbnQgbG4gPSBza2ItXFx1MDAzZWxlbjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM9MzgzPXN0YXRpYyBpbnQgaGlmX3VzYl9zZW5kX3R4KHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2Rldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNDA2LVxcdC8qIE1nbXQvQmVhY29uIGZyYW1lcyBkb24ndCB1c2UgdGhlIFRYIGJ1ZmZlciBwb29sICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo0MDc6XFx0aWYgKCh0eF9jdGwtXFx1MDAzZXR5cGUgPT0gQVRIOUtfSFRDX01HTVQpIHx8XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo0MDg6XFx0ICAgICh0eF9jdGwtXFx1MDAzZXR5cGUgPT0gQVRIOUtfSFRDX0JFQUNPTikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQwOS1cXHRcXHRyZXQgPSBoaWZfdXNiX3NlbmRfbWdtdChoaWZfZGV2LCBza2IpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00MTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo0MTQ6XFx0aWYgKCh0eF9jdGwtXFx1MDAzZXR5cGUgPT0gQVRIOUtfSFRDX05PUk1BTCkgfHxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjQxNTpcXHQgICAgKHR4X2N0bC1cXHUwMDNldHlwZSA9PSBBVEg5S19IVENfQU1QRFUpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00MTYtXFx0XFx0X19za2JfcXVldWVfdGFpbChcXHUwMDI2aGlmX2Rldi1cXHUwMDNldHgudHhfc2tiX3F1ZXVlLCBza2IpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYz00OTQ9c3RhdGljIGlubGluZSBib29sIGNoZWNrX2luZGV4KHN0cnVjdCBza19idWZmICpza2IsIHU4IGlkeClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNDk5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NTAwOlxcdGlmICgodHhfY3RsLVxcdTAwM2V0eXBlID09IEFUSDlLX0hUQ19BTVBEVSkgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTUwMS1cXHQgICAgKHR4X2N0bC1cXHUwMDNlc3RhX2lkeCA9PSBpZHgpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTU2PWVudW0gaHRjX29wbW9kZSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjY1OiNkZWZpbmUgQVRIOUtfSFRDX0FNUERVICAxXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjY2OiNkZWZpbmUgQVRIOUtfSFRDX05PUk1BTCAyXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjY3OiNkZWZpbmUgQVRIOUtfSFRDX0JFQUNPTiAzXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjY4OiNkZWZpbmUgQVRIOUtfSFRDX01HTVQgICA0XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTY5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo3MDojZGVmaW5lIEFUSDlLX0hUQ19UWF9DVFNPTkxZICAgICAgMHgxXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjcxOiNkZWZpbmUgQVRIOUtfSFRDX1RYX1JUU0NUUyAgICAgICAweDJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTczPXN0cnVjdCB0eF9mcmFtZV9oZHIge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTc3LVxcdHU4IHRpZG5vO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo3ODpcXHRfX2JlMzIgZmxhZ3M7IC8qIEFUSDlLX0hUQ19UWF8qICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTc5LVxcdHU4IGtleV90eXBlO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTE5ND1zdHJ1Y3QgYXRoOWtfaHRjX3RhcmdldF9yeF9zdGF0cyB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMTk5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyMDA6I2RlZmluZSBBVEg5S19IVENfTUFYX1ZJRiAyXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjIwMTojZGVmaW5lIEFUSDlLX0hUQ19NQVhfQkNOX1ZJRiAyXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTIwMi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD0yNDk9c3RydWN0IGF0aDlrX3ZpZl9pdGVyX2RhdGEge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI1My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MjU0OiNkZWZpbmUgQVRIOUtfSFRDX01BWF9TVEEgOFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyNTU6I2RlZmluZSBBVEg5S19IVENfTUFYX1RJRCA4XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI1Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD0yNjQ9c3RydWN0IGF0aDlrX2h0Y19zdGEge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0yNjUtXFx0dTggaW5kZXg7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI2NjpcXHRlbnVtIHRpZF9hZ2dyX3N0YXRlIHRpZF9zdGF0ZVtBVEg5S19IVENfTUFYX1RJRF07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI2Ny1cXHRzdHJ1Y3Qgd29ya19zdHJ1Y3QgcmNfdXBkYXRlX3dvcms7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMjcwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyNzE6I2RlZmluZSBBVEg5S19IVENfUlhCVUYgMjU2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI3Mi0jZGVmaW5lIEhUQ19SWF9GUkFNRV9IRUFERVJfU0laRSA0MFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTI4MT1zdHJ1Y3QgYXRoOWtfaHRjX3J4IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0yODYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI4NzojZGVmaW5lIEFUSDlLX0hUQ19UWF9DTEVBTlVQX0lOVEVSVkFMIDUwIC8qIG1zICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI4ODojZGVmaW5lIEFUSDlLX0hUQ19UWF9USU1FT1VUX0lOVEVSVkFMIDMwMDAgLyogbXMgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6Mjg5OiNkZWZpbmUgQVRIOUtfSFRDX1RYX1JFU0VSVkUgMTBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MjkwOiNkZWZpbmUgQVRIOUtfSFRDX1RYX1RJTUVPVVRfQ09VTlQgNDBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MjkxOiNkZWZpbmUgQVRIOUtfSFRDX1RYX1RIUkVTSE9MRCAoTUFYX1RYX0JVRl9OVU0gLSBBVEg5S19IVENfVFhfUkVTRVJWRSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMjkyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyOTM6I2RlZmluZSBBVEg5S19IVENfT1BfVFhfUVVFVUVTX1NUT1AgQklUKDApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI5NDojZGVmaW5lIEFUSDlLX0hUQ19PUF9UWF9EUkFJTiAgICAgICBCSVQoMSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMjk1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTMxMT1zdHJ1Y3QgYXRoOWtfaHRjX3R4X2N0bCB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjMxMjpcXHR1OCB0eXBlOyAvKiBBVEg5S19IVENfKiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0zMTMtXFx0dTggZXBpZDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD0zMTk9c3RhdGljIGlubGluZSBzdHJ1Y3QgYXRoOWtfaHRjX3R4X2N0bCAqSFRDX1NLQl9DQihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTMyNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MzI4OiNpZmRlZiBDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMzI5LSNkZWZpbmUgX19TVEFUX1NBRkUoaGlmX2RldiwgZXhwcilcXHRkbyB7ICgoaGlmX2RldiktXFx1MDAzZWh0Y19oYW5kbGUtXFx1MDAzZWRydl9wcml2ID8gKGV4cHIpIDogMCk7IH0gd2hpbGUgKDApXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9Mzg4PXN0YXRpYyBpbmxpbmUgdm9pZCBhdGg5a19odGNfZXJyX3N0YXRfcngoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTM5Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MzkzOiNlbmRpZiAvKiBDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlMgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMzk0LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTQwOT1zdHJ1Y3QgaHRjX2JlYWNvbiB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNDE1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo0MTY6XFx0c3RydWN0IGllZWU4MDIxMV92aWYgKmJzbG90W0FUSDlLX0hUQ19NQVhfQkNOX1ZJRl07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTQxNy1cXHR1MzIgYm1pc3NjbnQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9NDU2PXN0cnVjdCBhdGg5a19odGNfcHJpdiB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNDc4LVxcdHU4IHN0YV9zbG90O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo0Nzk6XFx0dTggdmlmX3N0YV9wb3NbQVRIOUtfSFRDX01BWF9WSUZdO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC00ODAtXFx0dTggbnVtX2lic3NfdmlmO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTUzNS1cXHRzdHJ1Y3QgZGVsYXllZF93b3JrIGR1dHlfY3ljbGVfd29yaztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6NTM2OiNpZmRlZiBDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNTM3LVxcdHN0cnVjdCBhdGg5a19kZWJ1ZyBkZWJ1ZztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD02NDE9aW50IGF0aDlrX2h0Y19yZXN1bWUoc3RydWN0IGh0Y190YXJnZXQgKmh0Y19oYW5kbGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC02NDItI2VuZGlmXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjY0MzojaWZkZWYgQ09ORklHX0FUSDlLX0hUQ19ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTY0NC1pbnQgYXRoOWtfaHRjX2luaXRfZGVidWcoc3RydWN0IGF0aF9odyAqYWgpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTY0OD1zdGF0aWMgaW5saW5lIHZvaWQgYXRoOWtfaHRjX2RlaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNjUwLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6NjUxOiNlbmRpZiAvKiBDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlMgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNjUyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmM9MTExPXN0YXRpYyB2b2lkIGF0aDlrX2h0Y19iZWFjb25fY29uZmlnX2FwKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTExNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYzoxMTc6XFx0YXRoOWtfY21uX2JlYWNvbl9jb25maWdfYXAoYWgsIGNvbmYsIEFUSDlLX0hUQ19NQVhfQkNOX1ZJRik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMTE4LVxcdGF0aDlrX2h0Y19iZWFjb25faW5pdChwcml2LCBjb25mLCBmYWxzZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYz0xOTE9c3RhdGljIHZvaWQgYXRoOWtfaHRjX3NlbmRfYmVhY29uKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTI0Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYzoyNDM6XFx0dHhfY3RsLVxcdTAwM2V0eXBlID0gQVRIOUtfSFRDX0JFQUNPTjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYy0yNDQtXFx0dHhfY3RsLVxcdTAwM2VlcGlkID0gcHJpdi1cXHUwMDNlYmVhY29uX2VwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmM9MjY0PXN0YXRpYyBpbnQgYXRoOWtfaHRjX2Nob29zZV9ic2xvdChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYy0yNzYtXFx0dHNmdHUgPSBUU0ZfVE9fVFUodHNmIFxcdTAwM2VcXHUwMDNlIDMyLCB0c2YpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jOjI3NzpcXHRzbG90ID0gKCh0c2Z0dSAlIGludHZhbCkgKiBBVEg5S19IVENfTUFYX0JDTl9WSUYpIC8gaW50dmFsO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jOjI3ODpcXHRzbG90ID0gQVRIOUtfSFRDX01BWF9CQ05fVklGIC0gc2xvdCAtIDE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMjc5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmM9MzI1PXZvaWQgYXRoOWtfaHRjX2Fzc2lnbl9ic2xvdChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYy0zMzItXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZwcml2LVxcdTAwM2ViZWFjb25fbG9jayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmM6MzMzOlxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBVEg5S19IVENfTUFYX0JDTl9WSUY7IGkrKykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTMzNC1cXHRcXHRpZiAocHJpdi1cXHUwMDNlYmVhY29uLmJzbG90W2ldID09IE5VTEwpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jPTM2NT12b2lkIGF0aDlrX2h0Y19zZXRfdHNmYWRqdXN0KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTM4MC1cXHQgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYzozODE6XFx0dHNmYWRqdXN0ID0gY3VyX2NvbmYtXFx1MDAzZWJlYWNvbl9pbnRlcnZhbCAqIGF2cC1cXHUwMDNlYnNsb3QgLyBBVEg5S19IVENfTUFYX0JDTl9WSUY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMzgyLVxcdGF2cC1cXHUwMDNldHNmYWRqdXN0ID0gY3B1X3RvX2xlNjQoVFVfVE9fVVNFQyh0c2ZhZGp1c3QpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM9Mzk4PXN0YXRpYyBjb25zdCBjaGFyIGF0aDlrX2h0Y19nc3RyaW5nc19zdGF0c1tdW0VUSF9HU1RSSU5HX0xFTl0gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jLTQxOC19O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM6NDE5OiNkZWZpbmUgQVRIOUtfSFRDX1NTVEFUU19MRU4gQVJSQVlfU0laRShhdGg5a19odGNfZ3N0cmluZ3Nfc3RhdHMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYy00MjAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jPTQzMD1pbnQgYXRoOWtfaHRjX2dldF9ldF9zc2V0X2NvdW50KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYy00MzMtXFx0aWYgKHNzZXQgPT0gRVRIX1NTX1NUQVRTKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM6NDM0OlxcdFxcdHJldHVybiBBVEg5S19IVENfU1NUQVRTX0xFTjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jLTQzNS1cXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM9NDQ4PXZvaWQgYXRoOWtfaHRjX2dldF9ldF9zdGF0cyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMtNDczLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM6NDc0OlxcdFdBUk5fT04oaSAhPSBBVEg5S19IVENfU1NUQVRTX0xFTik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYy00NzUtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jPTYwNj1zdGF0aWMgaW50IGF0aDlrX2luaXRfcHJpdihzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmMtNjczLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYzo2NzQ6XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFUSDlLX0hUQ19NQVhfQkNOX1ZJRjsgaSsrKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy02NzUtXFx0XFx0cHJpdi1cXHUwMDNlYmVhY29uLmJzbG90W2ldID0gTlVMTDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYz0xODQ9dm9pZCBhdGg5a19odGNfcmVzZXQoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTIzMy1cXHRtb2RfdGltZXIoXFx1MDAyNnByaXYtXFx1MDAzZXR4LmNsZWFudXBfdGltZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjIzNDpcXHRcXHQgIGppZmZpZXMgKyBtc2Vjc190b19qaWZmaWVzKEFUSDlLX0hUQ19UWF9DTEVBTlVQX0lOVEVSVkFMKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTIzNS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYz0yNDA9c3RhdGljIGludCBhdGg5a19odGNfc2V0X2NoYW5uZWwoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTMxMS1cXHRtb2RfdGltZXIoXFx1MDAyNnByaXYtXFx1MDAzZXR4LmNsZWFudXBfdGltZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjMxMjpcXHRcXHQgIGppZmZpZXMgKyBtc2Vjc190b19qaWZmaWVzKEFUSDlLX0hUQ19UWF9DTEVBTlVQX0lOVEVSVkFMKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTMxMy1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYz0zNTA9c3RhdGljIGludCBhdGg5a19odGNfYWRkX21vbml0b3JfaW50ZXJmYWNlKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0zNTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjM1ODpcXHRpZiAoKHByaXYtXFx1MDAzZW52aWZzIFxcdTAwM2U9IEFUSDlLX0hUQ19NQVhfVklGKSB8fFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzozNTk6XFx0ICAgIChwcml2LVxcdTAwM2Vuc3RhdGlvbnMgXFx1MDAzZT0gQVRIOUtfSFRDX01BWF9TVEEpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTM2MC1cXHRcXHRyZXQgPSAtRU5PQlVGUztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0zNjQtXFx0c3RhX2lkeCA9IGZmeihwcml2LVxcdTAwM2VzdGFfc2xvdCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjM2NTpcXHRpZiAoKHN0YV9pZHggXFx1MDAzYyAwKSB8fCAoc3RhX2lkeCBcXHUwMDNlIEFUSDlLX0hUQ19NQVhfU1RBKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0zNjYtXFx0XFx0cmV0ID0gLUVOT0JVRlM7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM9NDY2PXN0YXRpYyBpbnQgYXRoOWtfaHRjX2FkZF9zdGF0aW9uKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy00NzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjQ3ODpcXHRpZiAocHJpdi1cXHUwMDNlbnN0YXRpb25zIFxcdTAwM2U9IEFUSDlLX0hUQ19NQVhfU1RBKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy00NzktXFx0XFx0cmV0dXJuIC1FTk9CVUZTO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTQ4MS1cXHRzdGFfaWR4ID0gZmZ6KHByaXYtXFx1MDAzZXN0YV9zbG90KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6NDgyOlxcdGlmICgoc3RhX2lkeCBcXHUwMDNjIDApIHx8IChzdGFfaWR4IFxcdTAwM2UgQVRIOUtfSFRDX01BWF9TVEEpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy00ODMtXFx0XFx0cmV0dXJuIC1FTk9CVUZTO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jPTcwMj1zdGF0aWMgaW50IGF0aDlrX2h0Y190eF9hZ2dyX29wZXIoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTcxMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6NzE0OlxcdGlmICh0aWQgXFx1MDAzZT0gQVRIOUtfSFRDX01BWF9USUQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTcxNS1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYz05MDc9c3RhdGljIGludCBhdGg5a19odGNfc3RhcnQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtOTYwLVxcdHNwaW5fbG9ja19iaChcXHUwMDI2cHJpdi1cXHUwMDNldHgudHhfbG9jayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjk2MTpcXHRwcml2LVxcdTAwM2V0eC5mbGFncyBcXHUwMDI2PSB+QVRIOUtfSFRDX09QX1RYX1FVRVVFU19TVE9QO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy05NjItXFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNnByaXYtXFx1MDAzZXR4LnR4X2xvY2spO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTk2Ni1cXHRtb2RfdGltZXIoXFx1MDAyNnByaXYtXFx1MDAzZXR4LmNsZWFudXBfdGltZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjk2NzpcXHRcXHQgIGppZmZpZXMgKyBtc2Vjc190b19qaWZmaWVzKEFUSDlLX0hUQ19UWF9DTEVBTlVQX0lOVEVSVkFMKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTk2OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYz0xNjU4PXN0YXRpYyBpbnQgYXRoOWtfaHRjX2FtcGR1X2FjdGlvbihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0xNjg4LVxcdGNhc2UgSUVFRTgwMjExX0FNUERVX1RYX09QRVJBVElPTkFMOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzoxNjg5OlxcdFxcdGlmICh0aWQgXFx1MDAzZT0gQVRIOUtfSFRDX01BWF9USUQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMTY5MC1cXHRcXHRcXHRyZXQgPSAtRUlOVkFMO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jPTE4NzQ9c3RydWN0IGllZWU4MDIxMV9vcHMgYXRoOWtfaHRjX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0xOTA2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzoxOTA3OiNpZmRlZiBDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMTkwOC1cXHQuZ2V0X2V0X3NzZXRfY291bnQgID0gYXRoOWtfaHRjX2dldF9ldF9zc2V0X2NvdW50LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTIzPXN0YXRpYyBjb25zdCBpbnQgc3VidHlwZV90eHFfdG9faHdxW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMjktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjMwOiNkZWZpbmUgQVRIOUtfSFRDX0lOSVRfVFhRKHN1YnR5cGUpIGRvIHtcXHRcXHRcXHRcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTMxLVxcdFxcdHFpLnRxaV9zdWJ0eXBlID0gc3VidHlwZV90eHFfdG9faHdxW3N1YnR5cGVdO1xcdFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz01Nj12b2lkIGF0aDlrX2h0Y19jaGVja19zdG9wX3F1ZXVlcyhzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNTktXFx0cHJpdi1cXHUwMDNldHgucXVldWVkX2NudCsrO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo2MDpcXHRpZiAoKHByaXYtXFx1MDAzZXR4LnF1ZXVlZF9jbnQgXFx1MDAzZT0gQVRIOUtfSFRDX1RYX1RIUkVTSE9MRCkgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NjE6XFx0ICAgICEocHJpdi1cXHUwMDNldHguZmxhZ3MgXFx1MDAyNiBBVEg5S19IVENfT1BfVFhfUVVFVUVTX1NUT1ApKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjYyOlxcdFxcdHByaXYtXFx1MDAzZXR4LmZsYWdzIHw9IEFUSDlLX0hUQ19PUF9UWF9RVUVVRVNfU1RPUDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNjMtXFx0XFx0aWVlZTgwMjExX3N0b3BfcXVldWVzKHByaXYtXFx1MDAzZWh3KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz02OD12b2lkIGF0aDlrX2h0Y19jaGVja193YWtlX3F1ZXVlcyhzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNzAtXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZwcml2LVxcdTAwM2V0eC50eF9sb2NrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NzE6XFx0aWYgKChwcml2LVxcdTAwM2V0eC5xdWV1ZWRfY250IFxcdTAwM2MgQVRIOUtfSFRDX1RYX1RIUkVTSE9MRCkgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NzI6XFx0ICAgIChwcml2LVxcdTAwM2V0eC5mbGFncyBcXHUwMDI2IEFUSDlLX0hUQ19PUF9UWF9RVUVVRVNfU1RPUCkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NzM6XFx0XFx0cHJpdi1cXHUwMDNldHguZmxhZ3MgXFx1MDAyNj0gfkFUSDlLX0hUQ19PUF9UWF9RVUVVRVNfU1RPUDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNzQtXFx0XFx0aWVlZTgwMjExX3dha2VfcXVldWVzKHByaXYtXFx1MDAzZWh3KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz0yMTQ9c3RhdGljIHZvaWQgYXRoOWtfaHRjX3R4X21nbXQoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTI0MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6MjQxOlxcdHR4X2N0bC1cXHUwMDNldHlwZSA9IEFUSDlLX0hUQ19NR01UO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0yNDItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9MjYwPXN0YXRpYyB2b2lkIGF0aDlrX2h0Y190eF9kYXRhKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0yOTItXFx0aWYgKHR4X2luZm8tXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUVFRTgwMjExX1RYX0NUTF9BTVBEVSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzoyOTM6XFx0XFx0dHhfY3RsLVxcdTAwM2V0eXBlID0gQVRIOUtfSFRDX0FNUERVO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzoyOTQ6XFx0XFx0dHhfaGRyLmRhdGFfdHlwZSA9IEFUSDlLX0hUQ19BTVBEVTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMjk1LVxcdH0gZWxzZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjI5NjpcXHRcXHR0eF9jdGwtXFx1MDAzZXR5cGUgPSBBVEg5S19IVENfTk9STUFMO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzoyOTc6XFx0XFx0dHhfaGRyLmRhdGFfdHlwZSA9IEFUSDlLX0hUQ19OT1JNQUw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTI5OC1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMzEyLVxcdFxcdGlmIChza2ItXFx1MDAzZWxlbiBcXHUwMDNlIHByaXYtXFx1MDAzZWh3LVxcdTAwM2V3aXBoeS1cXHUwMDNlcnRzX3RocmVzaG9sZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6MzEzOlxcdFxcdFxcdGZsYWdzIHw9IEFUSDlLX0hUQ19UWF9SVFNDVFM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTMxNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMzE1LVxcdC8qIENUUy10by1zZWxmICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjMxNjpcXHRpZiAoIShmbGFncyBcXHUwMDI2IEFUSDlLX0hUQ19UWF9SVFNDVFMpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTMxNy1cXHQgICAgKHZpZiBcXHUwMDI2XFx1MDAyNiB2aWYtXFx1MDAzZWJzc19jb25mLnVzZV9jdHNfcHJvdCkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjMxODpcXHRcXHRmbGFncyB8PSBBVEg5S19IVENfVFhfQ1RTT05MWTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMzE5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTM5Mj1zdGF0aWMgaW5saW5lIGJvb2wgX19hdGg5a19odGNfY2hlY2tfdHhfYWdncihzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMzk3LVxcdHNwaW5fbG9ja19iaChcXHUwMDI2cHJpdi1cXHUwMDNldHgudHhfbG9jayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjM5ODpcXHRpZiAoKHRpZCBcXHUwMDNjIEFUSDlLX0hUQ19NQVhfVElEKSBcXHUwMDI2XFx1MDAyNiAoaXN0YS1cXHUwMDNldGlkX3N0YXRlW3RpZF0gPT0gQUdHUl9TVE9QKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMzk5LVxcdFxcdHJldCA9IHRydWU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9NDQ1PXN0YXRpYyB2b2lkIGF0aDlrX2h0Y190eF9wcm9jZXNzKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00NzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjQ3OTpcXHRpZiAodHhzLVxcdTAwM2V0c19mbGFncyBcXHUwMDI2IEFUSDlLX0hUQ19UWFNUQVRfQUNLKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ4MC1cXHRcXHR0eF9pbmZvLVxcdTAwM2VmbGFncyB8PSBJRUVFODAyMTFfVFhfU1RBVF9BQ0s7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDg0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo0ODU6XFx0aWYgKHR4cy1cXHUwMDNldHNfZmxhZ3MgXFx1MDAyNiBBVEg5S19IVENfVFhTVEFUX0ZJTFQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ4Ni1cXHRcXHR0eF9pbmZvLVxcdTAwM2VmbGFncyB8PSBJRUVFODAyMTFfVFhfU1RBVF9UWF9GSUxURVJFRDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDg3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo0ODg6XFx0aWYgKHR4cy1cXHUwMDNldHNfZmxhZ3MgXFx1MDAyNiBBVEg5S19IVENfVFhTVEFUX1JUQ19DVFMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ4OS1cXHRcXHRyYXRlLVxcdTAwM2VmbGFncyB8PSBJRUVFODAyMTFfVFhfUkNfVVNFX1JUU19DVFM7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDkxLVxcdHJhdGUtXFx1MDAzZWNvdW50ID0gMTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NDkyOlxcdHJhdGUtXFx1MDAzZWlkeCA9IE1TKHR4cy1cXHUwMDNldHNfcmF0ZSwgQVRIOUtfSFRDX1RYU1RBVF9SQVRFKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDkzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo0OTQ6XFx0aWYgKHR4cy1cXHUwMDNldHNfZmxhZ3MgXFx1MDAyNiBBVEg5S19IVENfVFhTVEFUX01DUykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00OTUtXFx0XFx0cmF0ZS1cXHUwMDNlZmxhZ3MgfD0gSUVFRTgwMjExX1RYX1JDX01DUztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDk2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo0OTc6XFx0XFx0aWYgKHR4cy1cXHUwMDNldHNfZmxhZ3MgXFx1MDAyNiBBVEg5S19IVENfVFhTVEFUX0NXNDApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ5OC1cXHRcXHRcXHRyYXRlLVxcdTAwM2VmbGFncyB8PSBJRUVFODAyMTFfVFhfUkNfNDBfTUhaX1dJRFRIO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo0OTk6XFx0XFx0aWYgKHR4cy1cXHUwMDNldHNfZmxhZ3MgXFx1MDAyNiBBVEg5S19IVENfVFhTVEFUX1NHSSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNTAwLVxcdFxcdFxcdHJhdGUtXFx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9UWF9SQ19TSE9SVF9HSTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz01Mzk9dm9pZCBhdGg5a19odGNfdHhfZHJhaW4oc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTU0My1cXHRzcGluX2xvY2tfYmgoXFx1MDAyNnByaXYtXFx1MDAzZXR4LnR4X2xvY2spO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo1NDQ6XFx0cHJpdi1cXHUwMDNldHguZmxhZ3MgfD0gQVRIOUtfSFRDX09QX1RYX0RSQUlOO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy01NDUtXFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNnByaXYtXFx1MDAzZXR4LnR4X2xvY2spO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTU3My1cXHRzcGluX2xvY2tfYmgoXFx1MDAyNnByaXYtXFx1MDAzZXR4LnR4X2xvY2spO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo1NzQ6XFx0cHJpdi1cXHUwMDNldHguZmxhZ3MgXFx1MDAyNj0gfkFUSDlLX0hUQ19PUF9UWF9EUkFJTjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNTc1LVxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZwcml2LVxcdTAwM2V0eC50eF9sb2NrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz01Nzg9dm9pZCBhdGg5a190eF9mYWlsZWRfdGFza2xldChzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgKnQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNTgyLVxcdHNwaW5fbG9jayhcXHUwMDI2cHJpdi1cXHUwMDNldHgudHhfbG9jayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjU4MzpcXHRpZiAocHJpdi1cXHUwMDNldHguZmxhZ3MgXFx1MDAyNiBBVEg5S19IVENfT1BfVFhfRFJBSU4pIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNTg0LVxcdFxcdHNwaW5fdW5sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2V0eC50eF9sb2NrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz02MTg9c3RhdGljIHN0cnVjdCBza19idWZmKiBhdGg5a19odGNfdHhfZ2V0X3BhY2tldChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNjI0LVxcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjYyNTpcXHR1OCBlcGlkID0gTVModHhzLVxcdTAwM2V0c19yYXRlLCBBVEg5S19IVENfVFhTVEFUX0VQSUQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy02MjYtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9NzE2PXN0YXRpYyBpbmxpbmUgYm9vbCBjaGVja19wYWNrZXQoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTcyNC1cXHRcXHQgICAgICAgdHhfY3RsLVxcdTAwM2V0aW1lc3RhbXAgK1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo3MjU6XFx0XFx0ICAgICAgIG1zZWNzX3RvX2ppZmZpZXMoQVRIOUtfSFRDX1RYX1RJTUVPVVRfSU5URVJWQUwpKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy03MjYtXFx0XFx0YXRoX2RiZyhjb21tb24sIFhNSVQsIFxcXCJEcm9wcGluZyBhIHBhY2tldCBkdWUgdG8gVFggdGltZW91dFxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9NzYxPXZvaWQgYXRoOWtfaHRjX3R4X2NsZWFudXBfdGltZXIoc3RydWN0IHRpbWVyX2xpc3QgKnQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNzc2LVxcdFxcdFxcdFxcdGV2ZW50LVxcdTAwM2V0eHMuY29va2llLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo3Nzc6XFx0XFx0XFx0XFx0TVMoZXZlbnQtXFx1MDAzZXR4cy50c19yYXRlLCBBVEg5S19IVENfVFhTVEFUX0VQSUQpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNzc4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTc4NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6Nzg1OlxcdFxcdGlmICgrK2V2ZW50LVxcdTAwM2Vjb3VudCBcXHUwMDNlPSBBVEg5S19IVENfVFhfVElNRU9VVF9DT1VOVCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy03ODYtXFx0XFx0XFx0bGlzdF9kZWwoXFx1MDAyNmV2ZW50LVxcdTAwM2VsaXN0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy04MDUtXFx0bW9kX3RpbWVyKFxcdTAwMjZwcml2LVxcdTAwM2V0eC5jbGVhbnVwX3RpbWVyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo4MDY6XFx0XFx0ICBqaWZmaWVzICsgbXNlY3NfdG9famlmZmllcyhBVEg5S19IVENfVFhfQ0xFQU5VUF9JTlRFUlZBTCkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy04MDctfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTgyNz1ib29sIGF0aDlrX2h0Y190eHFfc2V0dXAoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LCBpbnQgc3VidHlwZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy04MzQtXFx0bWVtc2V0KFxcdTAwMjZxaSwgMCwgc2l6ZW9mKHFpKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjgzNTpcXHRBVEg5S19IVENfSU5JVF9UWFEoc3VidHlwZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTgzNi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz04NTI9aW50IGF0aDlrX2h0Y19jYWJxX3NldHVwKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy04NTYtXFx0bWVtc2V0KFxcdTAwMjZxaSwgMCwgc2l6ZW9mKHFpKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjg1NzpcXHRBVEg5S19IVENfSU5JVF9UWFEoMCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTg1OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz0xMTg3PWludCBhdGg5a19yeF9pbml0KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0xMTkzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzoxMTk0OlxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBVEg5S19IVENfUlhCVUY7IGkrKykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0xMTk1LVxcdFxcdHN0cnVjdCBhdGg5a19odGNfcnhidWYgKnJ4YnVmID1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYz0xMzg9dm9pZCBhdGg5a193bWlfZXZlbnRfdGFza2xldChzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgKnQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmMtMTc4LVxcdFxcdFxcdHNwaW5fbG9ja19iaChcXHUwMDI2cHJpdi1cXHUwMDNldHgudHhfbG9jayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jOjE3OTpcXHRcXHRcXHRpZiAocHJpdi1cXHUwMDNldHguZmxhZ3MgXFx1MDAyNiBBVEg5S19IVENfT1BfVFhfRFJBSU4pIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmMtMTgwLVxcdFxcdFxcdFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZwcml2LVxcdTAwM2V0eC50eF9sb2NrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaD0zOT1zdHJ1Y3Qgd21pX2V2ZW50X3N3YmEge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oLTUwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo1MTojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfQUNLICAgICAgICBCSVQoMClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6NTI6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX0ZJTFQgICAgICAgQklUKDEpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oOjUzOiNkZWZpbmUgQVRIOUtfSFRDX1RYU1RBVF9SVENfQ1RTICAgIEJJVCgyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo1NDojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfTUNTICAgICAgICBCSVQoMylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6NTU6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX0NXNDAgICAgICAgQklUKDQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oOjU2OiNkZWZpbmUgQVRIOUtfSFRDX1RYU1RBVF9TR0kgICAgICAgIEJJVCg1KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaC01Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaC02My0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6NjQ6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX1JBVEUgICAgICAgMHgwZlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo2NTojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfUkFURV9TICAgICAwXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oLTY2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo2NzojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfRVBJRCAgICAgICAweGYwXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oOjY4OiNkZWZpbmUgQVRIOUtfSFRDX1RYU1RBVF9FUElEX1MgICAgIDRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmgtNjktXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDEyOjQ3OjQ0Ljk1Mzc4NzA1WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzIyOTE1MDI1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqQ2hlY2tpbmcgQVRIOUtfSFRDIERlcGVuZGVuY2llcyoqXG5cblJpZ2h0LCBsZXQncyBkaXZlIHN0cmFpZ2h0IGluLiBJIG5lZWQgdG8gcGlucG9pbnQgdGhlICpleGFjdCogZGVwZW5kZW5jaWVzIGZvciBgQVRIOUtfSFRDYC4gSSBrbm93IGl0J3MgYSBjcml0aWNhbCBtb2R1bGUsIHNvIEkgY2FuJ3QgYWZmb3JkIGFueSBhc3N1bXB0aW9ucyBoZXJlLiBUaGUgbW9zdCByZWxpYWJsZSBwbGFjZSB0byBnZXQgdGhlIGRlZmluaXRpdmUgYW5zd2VyIG9uIGRlcGVuZGVuY2llcywgcGFydGljdWxhcmx5IGZvciBhIGRyaXZlciBsaWtlIHRoaXMsIGlzIGFsd2F5cyB0aGUgYEtjb25maWdgIGZpbGUgaW4gaXRzIGRpcmVjdG9yeS4gVGhhdCdsbCBiZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWdgLiBObyBuZWVkIHRvIGd1ZXNzIG9yIHJlbHkgb24gb3V0ZGF0ZWQgZG9jdW1lbnRhdGlvbjsgdGhlIEtjb25maWcgaXMgdGhlIHNvdXJjZSBvZiB0cnV0aCBmb3IgdGhlIGJ1aWxkIHN5c3RlbS4gTGV0J3Mgc2VlIHdoYXQgaXQncyB0aWVkIHRvLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjkxNSwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDEyOjQ3OjQ4LjE4Mjk0MjgyM1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwODgyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNzAsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxNzA6XFx0XFx0ICBJZiB1bnN1cmUgc2F5IE4uXFxuIDE3MTpcXHRcXG4gMTcyOlxcdGNvbmZpZyBBVEg5S19IVENcXG4gMTczOlxcdFxcdHRyaXN0YXRlIFxcXCJBdGhlcm9zIEhUQyBiYXNlZCB3aXJlbGVzcyBjYXJkcyBzdXBwb3J0XFxcIlxcbiAxNzQ6XFx0XFx0ZGVwZW5kcyBvbiBVU0IgXFx1MDAyNlxcdTAwMjYgTUFDODAyMTFcXG4gMTc1OlxcdFxcdHNlbGVjdCBNQUM4MDIxMV9MRURTIGlmIExFRFNfQ0xBU1M9eSB8fCBMRURTX0NMQVNTPU1BQzgwMjExXFxuIDE3NjpcXHRcXHRzZWxlY3QgQVRIOUtfSFdcXG4gMTc3OlxcdFxcdHNlbGVjdCBBVEg5S19DT01NT05cXG4gMTc4OlxcdFxcdGhlbHBcXG4gMTc5OlxcdFxcdCAgU3VwcG9ydCBmb3IgQXRoZXJvcyBIVEMgYmFzZWQgY2FyZHMuXFxuIDE4MDpcXHRcXHQgIENoaXBzZXRzIHN1cHBvcnRlZDogQVI5MjcxXFxuIDE4MTpcXHRcXG4gMTgyOlxcdFxcdCAgRm9yIG1vcmUgaW5mb3JtYXRpb246XFxuIDE4MzpcXHRcXHQgIGh0dHBzOi8vd2lyZWxlc3Mud2lraS5rZXJuZWwub3JnL2VuL3VzZXJzL0RyaXZlcnMvYXRoOWtfaHRjXFxuIDE4NDpcXHRcXG4gMTg1OlxcdFxcdCAgVGhlIGJ1aWx0IG1vZHVsZSB3aWxsIGJlIGF0aDlrX2h0Yy5cXG4gMTg2OlxcdFxcbiAxODc6XFx0Y29uZmlnIEFUSDlLX0hUQ19ERUJVR0ZTXFxuIDE4ODpcXHRcXHRib29sIFxcXCJBdGhlcm9zIGF0aDlrX2h0YyBkZWJ1Z2dpbmdcXFwiXFxuIDE4OTpcXHRcXHRkZXBlbmRzIG9uIEFUSDlLX0hUQyBcXHUwMDI2XFx1MDAyNiBERUJVR19GU1xcbiAxOTA6XFx0XFx0c2VsZWN0IEFUSDlLX0NPTU1PTl9ERUJVR1xcbiAxOTE6XFx0XFx0aGVscFxcbiAxOTI6XFx0XFx0ICBTYXkgWSwgaWYgeW91IG5lZWQgYWNjZXNzIHRvIGF0aDlrX2h0YydzIHN0YXRpc3RpY3MuXFxuIDE5MzpcXHRcXHQgIEFzIHdlbGwgYXMgYWNjZXNzIHRvIHRoZSBGRlQvc3BlY3RyYWwgZGF0YS5cXG4gMTk0OlxcdFxcbiAxOTU6XFx0Y29uZmlnIEFUSDlLX0hXUk5HXFxuIDE5NjpcXHRcXHRib29sIFxcXCJSYW5kb20gbnVtYmVyIGdlbmVyYXRvciBzdXBwb3J0XFxcIlxcbiAxOTc6XFx0XFx0ZGVwZW5kcyBvbiBBVEg5SyBcXHUwMDI2XFx1MDAyNiAoSFdfUkFORE9NID0geSB8fCBIV19SQU5ET00gPSBBVEg5SylcXG4gMTk4OlxcdFxcdGRlZmF1bHQgblxcbiAxOTk6XFx0XFx0aGVscFxcbiAyMDA6XFx0XFx0ICBUaGlzIG9wdGlvbiBpbmNvcnBvcmF0ZXMgdGhlIEFEQyByZWdpc3RlciBvdXRwdXQgYXMgYSBzb3VyY2Ugb2ZcXG4gMjAxOlxcdFxcdCAgcmFuZG9tbmVzcyBpbnRvIExpbnV4IGVudHJvcHkgcG9vbCAoL2Rldi91cmFuZG9tIGFuZCAvZGV2L3JhbmRvbSlcXG4gMjAyOlxcdFxcbiAyMDM6XFx0XFx0ICBTYXkgWSwgZmVlZHMgdGhlIGVudHJvcHkgZGlyZWN0bHkgZnJvbSB0aGUgV2lGaSBkcml2ZXIgdG8gdGhlIGlucHV0XFxuIDIwNDpcXHRcXHQgIHBvb2wuXFxuIDIwNTpcXHRcXG4gMjA2OlxcdGNvbmZpZyBBVEg5S19DT01NT05fU1BFQ1RSQUxcXG4gMjA3OlxcdFxcdGJvb2wgXFxcIkF0aGVyb3MgYXRoOWsvYXRoOWtfaHRjIHNwZWN0cmFsIHNjYW4gc3VwcG9ydFxcXCJcXG4gMjA4OlxcdFxcdGRlcGVuZHMgb24gQVRIOUtfREVCVUdGUyB8fCBBVEg5S19IVENfREVCVUdGU1xcbiAyMDk6XFx0XFx0c2VsZWN0IFJFTEFZXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDEyOjQ3OjQ4LjE4MzA1NzMyM1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI3NDg1ODUxNTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29ubmVjdGlvbiBiZXR3ZWVuIHRoZXNlIHR3byBmdW5jdGlvbnMgYW5kIGhvdyB0aGV5J3JlIGJlaW5nIHV0aWxpemVkIGluIHRoZSBjb2RlLiBJJ2xsIHN0YXJ0IGJ5IGV4YW1pbmluZyBgaGlmX3VzYi5jYCBhbmQgYGh0Y19kcnZfaW5pdC5jYC4gTXkgcHJpbWFyeSBmb2N1cyBpcyBvbiBob3cgYGhpZl91c2Jfc2VuZF9yZWdvdXRgIGFuZCBgYXRoOWtfcmVnX3Jtd19idWZmZXJgIGFyZSB1c2VkLiBJIHdhbnQgdG8gdHJhY2UgdGhlIGNhbGwgcGF0aHMgdG8gdGhlc2UgZnVuY3Rpb25zIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHRzIGluIHdoaWNoIHRoZXkgb3BlcmF0ZSBhbmQgaG93IHRoZSBzeXN0ZW0gZXZlbnR1YWxseSByZWFjaGVzIHRoZWlyIGV4ZWN1dGlvbi4gVW5kZXJzdGFuZGluZyB0aGVzZSBpbnRlcmNvbm5lY3Rpb25zIHdpbGwgbGlrZWx5IGdpdmUgbWUgaW5zaWdodHMgaW50byBob3cgdGhlIHJlZ2lzdGVyIG91dHB1dCBpcyBiZWluZyBoYW5kbGVkIGFuZCBob3cgaXQgcmVsYXRlcyB0byB0aGUgYnJvYWRlciBzeXN0ZW0gaW5pdGlhbGl6YXRpb24gd2l0aGluIHRoZSBIVEMgZHJpdmVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzc4OCwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMTI6NDc6NTAuOTMxNjQ2MzE0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE4MDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmNcIixcbiAgXCJGaXJzdExpbmVcIjogOTUsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgOTU6XFx0XFx0a2ZyZWVfc2tiKGNtZC1cXHUwMDNlc2tiKTtcXG4gIDk2OlxcdFxcdGtmcmVlKGNtZCk7XFxuICA5NzpcXHR9XFxuICA5ODpcXHRcXG4gIDk5OlxcdHN0YXRpYyBpbnQgaGlmX3VzYl9zZW5kX3JlZ291dChzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYsXFxuIDEwMDpcXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4gMTAxOlxcdHtcXG4gMTAyOlxcdFxcdHUxNiBtYXhwYWNrZXQgPSB1c2JfbWF4cGFja2V0KGhpZl9kZXYtXFx1MDAzZXVkZXYsXFxuIDEwMzpcXHRcXHRcXHRcXHRcXHQgICAgICB1c2Jfc25kaW50cGlwZShoaWZfZGV2LVxcdTAwM2V1ZGV2LFxcbiAxMDQ6XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgICBVU0JfUkVHX09VVF9QSVBFKSk7XFxuIDEwNTpcXHRcXHRzdHJ1Y3QgdXJiICp1cmI7XFxuIDEwNjpcXHRcXHRzdHJ1Y3QgY21kX2J1ZiAqY21kO1xcbiAxMDc6XFx0XFx0aW50IHJldCA9IDA7XFxuIDEwODpcXHRcXG4gMTA5OlxcdFxcdGlmIChXQVJOX09OQ0UobWF4cGFja2V0IFxcdTAwMjZcXHUwMDI2IHNrYi1cXHUwMDNlbGVuICUgbWF4cGFja2V0ID09IDAsXFxuIDExMDpcXHRcXHRcXHQgICAgICBcXFwiJXUtYnl0ZSBjb21tYW5kIGZpbGxzIHdob2xlIFVTQiBwYWNrZXRzXFxcXG5cXFwiLCBza2ItXFx1MDAzZWxlbikpXFxuIDExMTpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gMTEyOlxcdFxcbiAxMTM6XFx0XFx0dXJiID0gdXNiX2FsbG9jX3VyYigwLCBHRlBfS0VSTkVMKTtcXG4gMTE0OlxcdFxcdGlmICh1cmIgPT0gTlVMTClcXG4gMTE1OlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiAxMTY6XFx0XFxuIDExNzpcXHRcXHRjbWQgPSBremFsbG9jX29iaigqY21kKTtcXG4gMTE4OlxcdFxcdGlmIChjbWQgPT0gTlVMTCkge1xcbiAxMTk6XFx0XFx0XFx0dXNiX2ZyZWVfdXJiKHVyYik7XFxuIDEyMDpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gMTIxOlxcdFxcdH1cXG4gMTIyOlxcdFxcbiAxMjM6XFx0XFx0Y21kLVxcdTAwM2Vza2IgPSBza2I7XFxuIDEyNDpcXHRcXHRjbWQtXFx1MDAzZWhpZl9kZXYgPSBoaWZfZGV2O1xcbiAxMjU6XFx0XFxuIDEyNjpcXHRcXHR1c2JfZmlsbF9pbnRfdXJiKHVyYiwgaGlmX2Rldi1cXHUwMDNldWRldixcXG4gMTI3OlxcdFxcdFxcdFxcdCB1c2Jfc25kaW50cGlwZShoaWZfZGV2LVxcdTAwM2V1ZGV2LCBVU0JfUkVHX09VVF9QSVBFKSxcXG4gMTI4OlxcdFxcdFxcdFxcdCBza2ItXFx1MDAzZWRhdGEsIHNrYi1cXHUwMDNlbGVuLFxcbiAxMjk6XFx0XFx0XFx0XFx0IGhpZl91c2JfcmVnb3V0X2NiLCBjbWQsIDEpO1xcbiAxMzA6XFx0XFxuIDEzMTpcXHRcXHR1c2JfYW5jaG9yX3VyYih1cmIsIFxcdTAwMjZoaWZfZGV2LVxcdTAwM2VyZWdvdXRfc3VibWl0dGVkKTtcXG4gMTMyOlxcdFxcdHJldCA9IHVzYl9zdWJtaXRfdXJiKHVyYiwgR0ZQX0tFUk5FTCk7XFxuIDEzMzpcXHRcXHRpZiAocmV0KSB7XFxuIDEzNDpcXHRcXHRcXHR1c2JfdW5hbmNob3JfdXJiKHVyYik7XFxuIDEzNTpcXHRcXHRcXHRrZnJlZShjbWQpO1xcbiAxMzY6XFx0XFx0fVxcbiAxMzc6XFx0XFx0dXNiX2ZyZWVfdXJiKHVyYik7XFxuIDEzODpcXHRcXG4gMTM5OlxcdFxcdHJldHVybiByZXQ7XFxuIDE0MDpcXHR9XFxuIDE0MTpcXHRcXG4gMTQyOlxcdHN0YXRpYyB2b2lkIGhpZl91c2JfbWdtdF9jYihzdHJ1Y3QgdXJiICp1cmIpXFxuIDE0MzpcXHR7XFxuIDE0NDpcXHRcXHRzdHJ1Y3QgY21kX2J1ZiAqY21kID0gdXJiLVxcdTAwM2Vjb250ZXh0O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQxMjo0Nzo1MC45MzE3NjY0ODRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyODY2MTc1OTc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgdGFraW5nIG9uIHRoZSBwZXJzb25hIHlvdSByZXF1ZXN0ZWQ6XG5cbioqVHJhY2luZyB0aGUgQ2FsbHMgdG8gaGlmX3VzYl9zZW5kX3JlZ291dCoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW4uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBmbG93IGhlcmUsIHNvIEknbSBnb2luZyB0byBzdGFydCBieSB0cmFjaW5nIHRoZSBjYWxscyB0byBgaGlmX3VzYl9zZW5kX3JlZ291dGAuIEknbSB0aGlua2luZyBJJ2xsIG5lZWQgdG8gdXNlIHNvbWUgdG9vbGluZywgcHJvYmFibHkgc3RhdGljIGFuYWx5c2lzIGluaXRpYWxseSwgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB0aGUgY2FsbCBncmFwaC4gSSdtIGhvcGluZyBpdCdzIHN0cmFpZ2h0Zm9yd2FyZDsgYSBjb21wbGV4IGNoYWluIG9mIGluZGlyZWN0IGZ1bmN0aW9uIGNhbGxzIGlzIHRoZSBsYXN0IHRoaW5nIEkgbmVlZCByaWdodCBub3cuIEkgc2hvdWxkIGJlIGFibGUgdG8gaWRlbnRpZnkgdGhlIGtleSBtb2R1bGVzIG9yIHN1YnN5c3RlbXMgdGhhdCBhcmUgaW5pdGlhdGluZyB0aGVzZSByZWdpc3RlciBvdXRwdXQgb3BlcmF0aW9ucy4gS25vd2luZyB0aGUgY29udGV4dCBvZiB0aG9zZSBjYWxscyB3aWxsIGJlIGNyaXRpY2FsIGZvciBmaWd1cmluZyBvdXQgdGhlIGludGVudCBiZWhpbmQgZWFjaCBvZiB0aGVtLiBUaGVuLCBiYXNlZCBvbiB0aGUgY2FsbHMgdGhlbXNlbHZlcywgSSdsbCBiZSBhYmxlIHRvIHF1aWNrbHkgc2VlIGlmIHRoZXJlJ3MgYW55IG9idmlvdXMgcmVkdW5kYW5jeSBvciB1bmV4cGVjdGVkIGJlaGF2aW9yLiBJJ2xsIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgYXJndW1lbnRzIGJlaW5nIHBhc3NlZCB0byB0aGlzIGZ1bmN0aW9uLCB0b28uIEFyZSB0aGV5IGNvbnNpc3RlbnQgYWNyb3NzIGNhbGxlcnM/IEFyZSB0aGVyZSBhbnkgcGF0dGVybnMgb3IgZGlzY3JlcGFuY2llcyB0aGF0IGp1bXAgb3V0PyBUaGlzIGlzIGEgY3J1Y2lhbCBhcmVhIHRvIGV4cGxvcmUsIHNpbmNlIHRoZSBhcmd1bWVudHMgd2lsbCByZXZlYWwgKndoYXQqIGlzIGJlaW5nIHNlbnQgb3V0LCBhbmQgbGlrZWx5ICp3aHkqLiBJJ2xsIG5lZWQgdG8gdGhpbmsgYWJvdXQgdGhlIGRhdGEgc3RydWN0dXJlcyBiZWluZyBwYXNzZWQsIHBvdGVudGlhbGx5IGNoZWNraW5nIHRoZSBkZWZpbml0aW9ucyBvZiB0aG9zZSBzdHJ1Y3RzIGFuZCBlbnVtcy4gT25jZSBJIHVuZGVyc3RhbmQgdGhlIGNhbGxlcnMgYW5kIHRoZSBwYXJhbWV0ZXJzLCBJIHNob3VsZCBiZSBpbiBhIHNvbGlkIHBvc2l0aW9uIHRvIGFuYWx5emUgdGhlIGltcGFjdCBvZiB0aGlzIGZ1bmN0aW9uLCBpdHMgcG90ZW50aWFsIGJvdHRsZW5lY2tzLCBhbmQgYW55IGFyZWFzIHJpcGUgZm9yIG9wdGltaXphdGlvbiBvciBpbXByb3ZlbWVudC4gVGhpcyBpcyBteSBzdGFydGluZyBwb2ludCwgYW5kIEkgZXhwZWN0IHRvIGFkanVzdCBteSBhcHByb2FjaCBhcyBJIGdvLCBidXQgdGhpcyBzZWVtcyBsaWtlIGEgc29saWQgcGxhbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg3ODEsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDEyOjQ3OjUzLjc5Nzk0NzE2MloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAwOTQzMjY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImhpZl91c2Jfc2VuZF9yZWdvdXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jPTcxPXN0YXRpYyB2b2lkIGhpZl91c2JfcmVnb3V0X2NiKHN0cnVjdCB1cmIgKnVyYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtOTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo5OTpzdGF0aWMgaW50IGhpZl91c2Jfc2VuZF9yZWdvdXQoc3RydWN0IGhpZl9kZXZpY2VfdXNiICpoaWZfZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMTAwLVxcdFxcdFxcdCAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYz00NzI9c3RhdGljIGludCBoaWZfdXNiX3NlbmQodm9pZCAqaGlmX2hhbmRsZSwgdTggcGlwZV9pZCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNDgxLVxcdGNhc2UgVVNCX1JFR19PVVRfUElQRTpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjQ4MjpcXHRcXHRyZXQgPSBoaWZfdXNiX3NlbmRfcmVnb3V0KGhpZl9kZXYsIHNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00ODMtXFx0XFx0YnJlYWs7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDEyOjQ3OjUzLjg5ODg5OTA1MVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMTg2NjYwNTM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IGltbWVkaWF0ZSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIERyaXZlciBJbml0aWFsaXphdGlvbioqXG5cbk9rYXksIHRpbWUgdG8gZGlnIGluLiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHdoYXQncyBoYXBwZW5pbmcgd2l0aCB0aGlzIEhUQyBkcml2ZXIuIExldCdzIHN0YXJ0IHdpdGggYGh0Y19kcnZfaW5pdC5jYCDigJMgdGhhdCdzIHVzdWFsbHkgYSBnb29kIHBsYWNlIHRvIGJlZ2luLCBlc3BlY2lhbGx5IHdpdGggaW5pdGlhbGl6YXRpb24uIFNwZWNpZmljYWxseSwgSSdtIGdvaW5nIHRvIGp1bXAgdG8gYXJvdW5kIGxpbmUgNDA1LiBUaGF0IHNlY3Rpb24gaXMgb2Z0ZW4gd2hlcmUgY3JpdGljYWwgaW5pdGlhbCBzZXR1cCBvciByZXNvdXJjZSBhbGxvY2F0aW9uIHRha2VzIHBsYWNlLiBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgdGhlIGtleSBmdW5jdGlvbiBjYWxscywgZGF0YSBzdHJ1Y3R1cmUgYXNzaWdubWVudHMsIG9yIHBlcmhhcHMgc29tZSBlYXJseSBoYXJkd2FyZSBwcm9iaW5nIHRoYXQgd2lsbCBzaGVkIGxpZ2h0IG9uIHdoYXQgdGhlIGRyaXZlciBpcyB1cCB0by4gTGV0J3Mgc2VlIHdoYXQgc2VjcmV0cyB0aGF0IHBhcnRpY3VsYXIgc2VjdGlvbiBob2xkcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk0OTksIk91dHB1dFRva2VucyI6NDgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQxMjo0Nzo1Ni4wODU1NjQ3NzlaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI0NDEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAzOTUsXG4gIFwiTGluZUNvdW50XCI6IDQ1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAzOTU6XFx0XFx0cHJpdi1cXHUwMDNld21pLVxcdTAwM2VtdWx0aV9ybXdbcHJpdi1cXHUwMDNld21pLVxcdTAwM2VtdWx0aV9ybXdfaWR4XS5yZWcgPVxcbiAzOTY6XFx0XFx0XFx0Y3B1X3RvX2JlMzIocmVnX29mZnNldCk7XFxuIDM5NzpcXHRcXHRwcml2LVxcdTAwM2V3bWktXFx1MDAzZW11bHRpX3Jtd1twcml2LVxcdTAwM2V3bWktXFx1MDAzZW11bHRpX3Jtd19pZHhdLnNldCA9XFxuIDM5ODpcXHRcXHRcXHRjcHVfdG9fYmUzMihzZXQpO1xcbiAzOTk6XFx0XFx0cHJpdi1cXHUwMDNld21pLVxcdTAwM2VtdWx0aV9ybXdbcHJpdi1cXHUwMDNld21pLVxcdTAwM2VtdWx0aV9ybXdfaWR4XS5jbHIgPVxcbiA0MDA6XFx0XFx0XFx0Y3B1X3RvX2JlMzIoY2xyKTtcXG4gNDAxOlxcdFxcbiA0MDI6XFx0XFx0cHJpdi1cXHUwMDNld21pLVxcdTAwM2VtdWx0aV9ybXdfaWR4Kys7XFxuIDQwMzpcXHRcXG4gNDA0OlxcdFxcdC8qIElmIHRoZSBidWZmZXIgaXMgZnVsbCwgc2VuZCBpdCBvdXQuICovXFxuIDQwNTpcXHRcXHRpZiAocHJpdi1cXHUwMDNld21pLVxcdTAwM2VtdWx0aV9ybXdfaWR4ID09IE1BWF9STVdfQ01EX05VTUJFUikge1xcbiA0MDY6XFx0XFx0XFx0ciA9IGF0aDlrX3dtaV9jbWQocHJpdi1cXHUwMDNld21pLCBXTUlfUkVHX1JNV19DTURJRCxcXG4gNDA3OlxcdFxcdFxcdFxcdCAgKHU4ICopIFxcdTAwMjZwcml2LVxcdTAwM2V3bWktXFx1MDAzZW11bHRpX3JtdyxcXG4gNDA4OlxcdFxcdFxcdFxcdCAgc2l6ZW9mKHN0cnVjdCByZWdpc3Rlcl9ybXcpICogcHJpdi1cXHUwMDNld21pLVxcdTAwM2VtdWx0aV9ybXdfaWR4LFxcbiA0MDk6XFx0XFx0XFx0XFx0ICAodTggKikgXFx1MDAyNnJzcF9zdGF0dXMsIHNpemVvZihyc3Bfc3RhdHVzKSxcXG4gNDEwOlxcdFxcdFxcdFxcdCAgMTAwKTtcXG4gNDExOlxcdFxcdFxcdGlmICh1bmxpa2VseShyKSkge1xcbiA0MTI6XFx0XFx0XFx0XFx0YXRoX2RiZyhjb21tb24sIFdNSSxcXG4gNDEzOlxcdFxcdFxcdFxcdFxcdFxcXCJSRUdJU1RFUiBSTVcgRkFJTEVELCBtdWx0aSBsZW46ICVkXFxcXG5cXFwiLFxcbiA0MTQ6XFx0XFx0XFx0XFx0XFx0cHJpdi1cXHUwMDNld21pLVxcdTAwM2VtdWx0aV9ybXdfaWR4KTtcXG4gNDE1OlxcdFxcdFxcdH1cXG4gNDE2OlxcdFxcdFxcdHByaXYtXFx1MDAzZXdtaS1cXHUwMDNlbXVsdGlfcm13X2lkeCA9IDA7XFxuIDQxNzpcXHRcXHR9XFxuIDQxODpcXHRcXG4gNDE5OlxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2cHJpdi1cXHUwMDNld21pLVxcdTAwM2VtdWx0aV9ybXdfbXV0ZXgpO1xcbiA0MjA6XFx0fVxcbiA0MjE6XFx0XFxuIDQyMjpcXHRzdGF0aWMgdm9pZCBhdGg5a19yZWdfcm13X2ZsdXNoKHZvaWQgKmh3X3ByaXYpXFxuIDQyMzpcXHR7XFxuIDQyNDpcXHRcXHRzdHJ1Y3QgYXRoX2h3ICphaCA9IGh3X3ByaXY7XFxuIDQyNTpcXHRcXHRzdHJ1Y3QgYXRoX2NvbW1vbiAqY29tbW9uID0gYXRoOWtfaHdfY29tbW9uKGFoKTtcXG4gNDI2OlxcdFxcdHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdiA9IGNvbW1vbi1cXHUwMDNlcHJpdjtcXG4gNDI3OlxcdFxcdHUzMiByc3Bfc3RhdHVzO1xcbiA0Mjg6XFx0XFx0aW50IHI7XFxuIDQyOTpcXHRcXG4gNDMwOlxcdFxcdGlmICh0ZXN0X2JpdChIVENfRldGTEFHX05PX1JNVywgXFx1MDAyNnByaXYtXFx1MDAzZWZ3X2ZsYWdzKSlcXG4gNDMxOlxcdFxcdFxcdHJldHVybjtcXG4gNDMyOlxcdFxcbiA0MzM6XFx0XFx0YXRvbWljX2RlYyhcXHUwMDI2cHJpdi1cXHUwMDNld21pLVxcdTAwM2VtX3Jtd19jbnQpO1xcbiA0MzQ6XFx0XFxuIDQzNTpcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2V3bWktXFx1MDAzZW11bHRpX3Jtd19tdXRleCk7XFxuIDQzNjpcXHRcXG4gNDM3OlxcdFxcdGlmIChwcml2LVxcdTAwM2V3bWktXFx1MDAzZW11bHRpX3Jtd19pZHgpIHtcXG4gNDM4OlxcdFxcdFxcdHIgPSBhdGg5a193bWlfY21kKHByaXYtXFx1MDAzZXdtaSwgV01JX1JFR19STVdfQ01ESUQsXFxuIDQzOTpcXHRcXHRcXHRcXHQgICh1OCAqKSBcXHUwMDI2cHJpdi1cXHUwMDNld21pLVxcdTAwM2VtdWx0aV9ybXcsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDEyOjQ3OjU2LjA4NTY5MTgzOVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2OTI1NzMzMzE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBhdGg5a19odGMgUGF0Y2ggZm9yIEZ1enppbmcqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJJ20gc2VlaW5nIGEgcG90ZW50aWFsIGJ1ZmZlciBvdmVyZmxvdyB2dWxuZXJhYmlsaXR5IGZpeGVkIGluIGBhdGg5a19yZWdfcm13X2J1ZmZlcmAuIFRoZSBvcmlnaW5hbCBjb2RlIHdhcyBjYWxjdWxhdGluZyB0aGUgYnVmZmVyIHNpemUgaW5jb3JyZWN0bHksIHVzaW5nIHRoZSBzaXplIG9mIGEgYHN0cnVjdCByZWdpc3Rlcl93cml0ZWAgKDggYnl0ZXMpIGluc3RlYWQgb2YgYSBgc3RydWN0IHJlZ2lzdGVyX3Jtd2AgKDEyIGJ5dGVzKSB3aGVuIGRlYWxpbmcgd2l0aCBtdWx0aXBsZSByZWFkLW1vZGlmeS13cml0ZSBjb21tYW5kcyAoYG11bHRpX3Jtd19pZHhgKS4gU3BlY2lmaWNhbGx5LCB3aGVuIGBtdWx0aV9ybXdfaWR4YCBoaXQgYE1BWF9STVdfQ01EX05VTUJFUmAgKHdoaWNoIHdhcyAxNSksIGl0IHNlbnQgMTIwIGJ5dGVzIGluc3RlYWQgb2YgdGhlIGV4cGVjdGVkIDE4MCBieXRlcy4gVGhhdCdzIGEgY2xlYXIgZXJyb3IuXG5cbkknbSBhbHNvIHNlZWluZyBhIGNvbW1lbnQgYWJvdXQgd2h5IDE1IGVudHJpZXMgZGlkbid0IHdvcmsuIFRoZSBjb21tZW50IG1lbnRpb25zIDE5MiBieXRlcyBhbmQgZnVsbCBVU0IgcGFja2V0cyBub3QgYmVpbmcgZGVsaXZlcmVkLiAxNSBlbnRyaWVzICogMTIgYnl0ZXMgPSAxODAsIHBsdXMgaGVhZGVyLCB0aGF0IHdvdWxkIGZpdCwgc28gdGhlIGNvbW1lbnQgbG9va3MgbGlrZSBpdCBtYXkgaGF2ZSBhbiBlcnJvci5cblxuVGhlIGZpeCBpbiBgaGlmX3VzYl9zZW5kX3JlZ291dGAgYWRkcyBhIGBXQVJOX09OQ0VgIGFzc2VydGlvbiwgd2hpY2ggaXMgZ29vZC4gVGhpcyBpcyBhIGRlZmVuc2l2ZSBtZWFzdXJlLiBJdCdzIHdhcm5pbmcgaWYgdGhlIGNvbW1hbmQgZmlsbHMgYSB3aG9sZSBVU0IgcGFja2V0LiBUaGlzIGlzIHJldHVybmluZyBgLUVJTlZBTGAuIFRoaXMgaXMgZ3JlYXQuXG5cbk5vdywgdGhlIGltcG9ydGFudCBxdWVzdGlvbjogaXMgdGhpcyBmdXp6YWJsZT8gQWJzb2x1dGVseS4gYGF0aDlrX2h0Y2AgaXMgYSBVU0Igd2lyZWxlc3MgZHJpdmVyLCBhbmQgVVNCIGRldmljZXMgYXJlIGVhc2lseSBhdHRhY2hlZCBpbiBRRU1VL3ZpcnR1YWxpemVkIGVudmlyb25tZW50cyB1c2luZyBVU0IgUmF3IEdhZGdldCBvciBzeXprYWxsZXIncyBVU0IgZW11bGF0aW9uLiBUaGlzIGlzIGRlZmluaXRlbHkgcmVhY2hhYmxlLiBTZWN0aW9uIDEgYW5kIDMgb2YgdGhlIGZ1enppbmcgZ3VpZGFuY2UgY29uZmlybXMgdGhpcy4gTW9kaWZpZWQgYXNzZXJ0aW9ucyBhcmUgZXhhY3RseSB3aGF0IHdlIHdhbnQgdG8gdGFyZ2V0LiBJdCdzIGEgcHJpbWUgdGFyZ2V0IGZvciBmdXp6aW5nLlxuXG5NeSBuZXh0IHN0ZXAgaXMgaWRlbnRpZnlpbmcgdGhlIHJlbGV2YW50IGZ1bmN0aW9ucyBmb3IgZm9jdXM6XG4tICAgYGhpZl91c2Jfc2VuZF9yZWdvdXRgIOKAkyB0aGUgbmV3bHkgYXNzZXJ0ZWQgZnVuY3Rpb24uXG4tICAgYGF0aDlrX3JlZ19ybXdfYnVmZmVyYCDigJMgdGhlIGJ1ZmZlciBzaXplIGNhbGN1bGF0aW9uIGZpeGVkLlxuLSAgIGBhdGg5a19yZWdfcm13X2ZsdXNoYCDigJMgYSBmdW5jdGlvbiBjYWxsaW5nIGBhdGg5a193bWlfY21kYCB3aXRoIGBtdWx0aV9ybXdgLlxuLSAgIGBoaWZfdXNiX3NlbmRgIOKAkyBhbiBlbnRyeXBvaW50IGluIGhpZlxcX3VzYlxuLSAgIGBhdGg5a193bWlfY21kYCDigJMgYXMgaXQgaXMgdXNlZCB3aXRoIGBtdWx0aV9ybXdgXG5cbkkgbmVlZCB0byBjb25maXJtIHRoZXNlIGZ1bmN0aW9uIG5hbWVzIGFuZCB0aGVpciBkZWZpbml0aW9ucyB3aXRoaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9gLiBJIGNhbiB0aGVuIGJ1aWxkIHRlc3QgY2FzZXMgdG8gZXhlcmNpc2UgdGhlIHJlbGV2YW50IGNvZGUgcGF0aHMgYW5kIHRyaWdnZXIgdGhhdCBgV0FSTl9PTkNFYCBhc3NlcnRpb24uIFRoaXMgbG9va3MgbGlrZSBhIHNvbGlkIGZ1enppbmcgdGFyZ2V0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDU1MCwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgxMCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDEyOjQ4OjAzLjAxMTQyOTQyOFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODU1Njc2NjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXRoOWtfcmVnX3Jtd1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYz0zNjc9c3RhdGljIHZvaWQgYXRoOWtfcmVnd3JpdGVfZmx1c2godm9pZCAqaHdfcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy0zODItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jOjM4MzpzdGF0aWMgdm9pZCBhdGg5a19yZWdfcm13X2J1ZmZlcih2b2lkICpod19wcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy0zODQtXFx0XFx0XFx0XFx0IHUzMiByZWdfb2Zmc2V0LCB1MzIgc2V0LCB1MzIgY2xyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jLTQyMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM6NDIyOnN0YXRpYyB2b2lkIGF0aDlrX3JlZ19ybXdfZmx1c2godm9pZCAqaHdfcHJpdilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmMtNDIzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYz00NTQ9c3RhdGljIHZvaWQgYXRoOWtfZW5hYmxlX3Jtd19idWZmZXIodm9pZCAqaHdfcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy00NjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jOjQ2NjpzdGF0aWMgdm9pZCBhdGg5a19yZWdfcm13X3NpbmdsZSh2b2lkICpod19wcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy00NjctXFx0XFx0XFx0XFx0IHUzMiByZWdfb2Zmc2V0LCB1MzIgc2V0LCB1MzIgY2xyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jLTQ4OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM6NDg5OnN0YXRpYyB1MzIgYXRoOWtfcmVnX3Jtdyh2b2lkICpod19wcml2LCB1MzIgcmVnX29mZnNldCwgdTMyIHNldCwgdTMyIGNscilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmMtNDkwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy01MDYtXFx0aWYgKGF0b21pY19yZWFkKFxcdTAwMjZwcml2LVxcdTAwM2V3bWktXFx1MDAzZW1fcm13X2NudCkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jOjUwNzpcXHRcXHRhdGg5a19yZWdfcm13X2J1ZmZlcihod19wcml2LCByZWdfb2Zmc2V0LCBzZXQsIGNscik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jLTUwOC1cXHRlbHNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jOjUwOTpcXHRcXHRhdGg5a19yZWdfcm13X3NpbmdsZShod19wcml2LCByZWdfb2Zmc2V0LCBzZXQsIGNscik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jLTUxMC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYz02MDY9c3RhdGljIGludCBhdGg5a19pbml0X3ByaXYoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jLTYyOC1cXHRhaC1cXHUwMDNlcmVnX29wcy5lbmFibGVfcm13X2J1ZmZlciA9IGF0aDlrX2VuYWJsZV9ybXdfYnVmZmVyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYzo2Mjk6XFx0YWgtXFx1MDAzZXJlZ19vcHMucm13X2ZsdXNoID0gYXRoOWtfcmVnX3Jtd19mbHVzaDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM6NjMwOlxcdGFoLVxcdTAwM2VyZWdfb3BzLnJtdyA9IGF0aDlrX3JlZ19ybXc7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jLTYzMS1cXHRwcml2LVxcdTAwM2VhaCA9IGFoO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYz0yMDQ9c3RhdGljIHZvaWQgYXRoOWtfbXVsdGlfaW9yZWFkMzIodm9pZCAqaHdfcHJpdiwgdTMyICphZGRyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYy0yMTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYzoyMTQ6c3RhdGljIHVuc2lnbmVkIGludCBfX2F0aDlrX3JlZ19ybXcoc3RydWN0IGF0aF9zb2Z0YyAqc2MsIHUzMiByZWdfb2Zmc2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmMtMjE1LVxcdFxcdFxcdFxcdCAgICB1MzIgc2V0LCB1MzIgY2xyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYy0yMjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYzoyMjc6c3RhdGljIHVuc2lnbmVkIGludCBhdGg5a19yZWdfcm13KHZvaWQgKmh3X3ByaXYsIHUzMiByZWdfb2Zmc2V0LCB1MzIgc2V0LCB1MzIgY2xyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmMtMjI4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmMtMjM2LVxcdFxcdHNwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZzYy1cXHUwMDNlc2Nfc2VyaWFsX3J3LCBmbGFncyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYzoyMzc6XFx0XFx0dmFsID0gX19hdGg5a19yZWdfcm13KHNjLCByZWdfb2Zmc2V0LCBzZXQsIGNscik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYy0yMzgtXFx0XFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2c2MtXFx1MDAzZXNjX3NlcmlhbF9ydywgZmxhZ3MpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmMtMjM5LVxcdH0gZWxzZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmM6MjQwOlxcdFxcdHZhbCA9IF9fYXRoOWtfcmVnX3JtdyhzYywgcmVnX29mZnNldCwgc2V0LCBjbHIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmMtMjQxLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYz02NTY9c3RhdGljIGludCBhdGg5a19pbml0X3NvZnRjKHUxNiBkZXZpZCwgc3RydWN0IGF0aF9zb2Z0YyAqc2MsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jLTY3Ni1cXHRhaC1cXHUwMDNlcmVnX29wcy53cml0ZSA9IGF0aDlrX2lvd3JpdGUzMjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jOjY3NzpcXHRhaC1cXHUwMDNlcmVnX29wcy5ybXcgPSBhdGg5a19yZWdfcm13O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmMtNjc4LVxcdHBDYXAgPSBcXHUwMDI2YWgtXFx1MDAzZWNhcHM7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDEyOjQ4OjAzLjA5NzAwMzQwN1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0OTgyNjg5NjQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV4YW1pbmluZyB0aGUgQXRoZXJvcyBXaXJlbGVzcyBEcml2ZXIgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGUgY29uZmlndXJhdGlvbiBmb3IgdGhpcyBBdGhlcm9zIHdpcmVsZXNzIGRyaXZlci4gRmlyc3QsIEkgbmVlZCB0byB2ZXJpZnkgd2hhdCBzZXR0aW5ncyBhcmUgYXZhaWxhYmxlLCBzdGFydGluZyB3aXRoIHRoZSBgRW5hYmxlQ29uZmlnc2AuIFNwZWNpZmljYWxseSwgSSdtIGNoZWNraW5nIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWdgIGZpbGUuIEkgc2VlIHRoYXQgYEFUSDlLX0hUQ2AgaXMgZGVwZW5kZW50IG9uIGJvdGggYFVTQmAgYW5kIGBNQUM4MDIxMWAsIHdoaWNoIG1ha2VzIHBlcmZlY3Qgc2Vuc2UgZ2l2ZW4gdGhlIGhhcmR3YXJlIGFyY2hpdGVjdHVyZS5cblxuTm93LCBJIG5lZWQgdG8gbWFrZSBzdXJlIEknbSBub3Qgb3Zlcmxvb2tpbmcgYW55IG90aGVyIGNydWNpYWwgZGVwZW5kZW5jaWVzIG9yIGNvbmZpZ3VyYXRpb25zLiBJJ2xsIG5lZWQgdG8gZXhwYW5kIHRoZSBzZWFyY2ggYW5kIHJldmlldyBvdGhlciBwb3RlbnRpYWwgY29uZmlndXJhdGlvbnMuIExldCdzIG1vdmUgb24gYW5kIGV4YW1pbmUgdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvS2NvbmZpZ2AgZmlsZSBhbmQgZXhwbG9yZSB0aGUgY29udGVudHMgdG8gZW5zdXJlIEkgaWRlbnRpZnkgYW55IG90aGVyIG5lZWRlZCBzZXR0aW5ncy4gVGhpcyB3aWxsIGdpdmUgbWUgYSBjb21wcmVoZW5zaXZlIHBpY3R1cmUgb2Ygd2hhdCdzIHJlcXVpcmVkIGZvciB0aGlzIGRyaXZlciB0byBmdW5jdGlvbiBjb3JyZWN0bHkgd2l0aGluIHRoZSB3aWRlciBzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzNTk4LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMTI6NDg6MDguMDc5Njk4NTY1WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDAyODY2ODgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQVRIOUtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDUwNzYgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9NYWtlZmlsZT0yPW9iai0kKENPTkZJR19BVEg1SylcXHRcXHQrPSBhdGg1ay9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvTWFrZWZpbGU6MzpvYmotJChDT05GSUdfQVRIOUtfSFcpXFx0XFx0Kz0gYXRoOWsvXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL01ha2VmaWxlLTQtb2JqLSQoQ09ORklHX0NBUkw5MTcwKVxcdFxcdCs9IGNhcmw5MTcwL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBJU0NcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoyOmNvbmZpZyBBVEg5S19IV1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTMtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo0OmNvbmZpZyBBVEg5S19DT01NT05cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy01LVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNi1cXHRzZWxlY3QgQVRIX0NPTU1PTlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjc6Y29uZmlnIEFUSDlLX0NPTU1PTl9ERUJVR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTgtXFx0Ym9vbFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjk6Y29uZmlnIEFUSDlLX0RGU19ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTAtXFx0ZGVmX2Jvb2wgeVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjExOlxcdGRlcGVuZHMgb24gQVRIOUtfREVCVUdGUyBcXHUwMDI2XFx1MDAyNiBBVEg5S19ERlNfQ0VSVElGSUVEXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTM6Y29uZmlnIEFUSDlLX0JUQ09FWF9TVVBQT1JUXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTQtXFx0Ym9vbCBcXFwiQXRoZXJvcyBibHVldG9vdGggY29leGlzdGVuY2Ugc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxNTpcXHRkZXBlbmRzIG9uIChBVEg5SyB8fCBBVEg5S19IVEMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTYtXFx0ZGVmYXVsdCB5XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0yMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoyMTpjb25maWcgQVRIOUtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0yMi1cXHR0cmlzdGF0ZSBcXFwiQXRoZXJvcyA4MDIuMTFuIHdpcmVsZXNzIGNhcmRzIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0yNC1cXHRzZWxlY3QgTUFDODAyMTFfTEVEUyBpZiBMRURTX0NMQVNTPXkgfHwgTEVEU19DTEFTUz1NQUM4MDIxMVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjI1OlxcdHNlbGVjdCBBVEg5S19IV1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjI2OlxcdHNlbGVjdCBBVEg5S19DT01NT05cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0yNy1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0zOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzozOTpjb25maWcgQVRIOUtfUENJXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNDAtXFx0Ym9vbCBcXFwiQXRoZXJvcyBhdGg5ayBQQ0kvUENJZSBidXMgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy00MS1cXHRkZWZhdWx0IHlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo0MjpcXHRkZXBlbmRzIG9uIEFUSDlLIFxcdTAwMjZcXHUwMDI2IFBDSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTQzLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTQ3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjQ4OmNvbmZpZyBBVEg5S19BSEJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy00OS1cXHRib29sIFxcXCJBdGhlcm9zIGF0aDlrIEFIQiBidXMgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo1MDpcXHRkZXBlbmRzIG9uIEFUSDlLIFxcdTAwMjZcXHUwMDI2IE9GXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNTEtXFx0ZGVmYXVsdCBuXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy01Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo1ODpjb25maWcgQVRIOUtfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTU5LVxcdGJvb2wgXFxcIkF0aGVyb3MgYXRoOWsgZGVidWdnaW5nXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjYwOlxcdGRlcGVuZHMgb24gQVRIOUsgXFx1MDAyNlxcdTAwMjYgREVCVUdfRlMgXFx1MDAyNlxcdTAwMjYgTUFDODAyMTFfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjYxOlxcdHNlbGVjdCBBVEg5S19DT01NT05fREVCVUdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy02Mi1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy02OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo2OTpjb25maWcgQVRIOUtfU1RBVElPTl9TVEFUSVNUSUNTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNzAtXFx0Ym9vbCBcXFwiRGV0YWlsZWQgc3RhdGlvbiBzdGF0aXN0aWNzXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjcxOlxcdGRlcGVuZHMgb24gQVRIOUsgXFx1MDAyNlxcdTAwMjYgQVRIOUtfREVCVUdGUyBcXHUwMDI2XFx1MDAyNiBERUJVR19GU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTcyLVxcdGRlZmF1bHQgblxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6NzY6Y29uZmlnIEFUSDlLX1RYOTlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy03Ny1cXHRib29sIFxcXCJBdGhlcm9zIGF0aDlrIFRYOTkgdGVzdGluZyBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjc4OlxcdGRlcGVuZHMgb24gQVRIOUtfREVCVUdGUyBcXHUwMDI2XFx1MDAyNiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy03OS1cXHRkZWZhdWx0IG5cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTk1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjk2OmNvbmZpZyBBVEg5S19ERlNfQ0VSVElGSUVEXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctOTctXFx0Ym9vbCBcXFwiQXRoZXJvcyBERlMgc3VwcG9ydCBmb3IgY2VydGlmaWVkIHBsYXRmb3Jtc1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo5ODpcXHRkZXBlbmRzIG9uIEFUSDlLIFxcdTAwMjZcXHUwMDI2IENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTk5LVxcdGRlZmF1bHQgblxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTE0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjExNTpjb25maWcgQVRIOUtfRFlOQUNLXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTE2LVxcdGJvb2wgXFxcIkF0aGVyb3MgYXRoOWsgQUNLIHRpbWVvdXQgZXN0aW1hdGlvbiBhbGdvcml0aG1cXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTE3OlxcdGRlcGVuZHMgb24gQVRIOUtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xMTgtXFx0ZGVmYXVsdCBuXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xMjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTI0OmNvbmZpZyBBVEg5S19XT1dcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xMjUtXFx0Ym9vbCBcXFwiV2FrZSBvbiBXaXJlbGVzcyBMQU4gc3VwcG9ydCAoRVhQRVJJTUVOVEFMKVxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxMjY6XFx0ZGVwZW5kcyBvbiBBVEg5SyBcXHUwMDI2XFx1MDAyNiBQTVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTEyNy1cXHRkZWZhdWx0IG5cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTEzMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxMzI6Y29uZmlnIEFUSDlLX1JGS0lMTFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTEzMy1cXHRib29sIFxcXCJBdGhlcm9zIGF0aDlrIHJma2lsbCBzdXBwb3J0XFxcIiBpZiBFWFBFUlRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxMzQ6XFx0ZGVwZW5kcyBvbiBBVEg5S1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjEzNTpcXHRkZXBlbmRzIG9uIFJGS0lMTD15IHx8IFJGS0lMTD1BVEg5S1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTEzNi1cXHRkZWZhdWx0IHlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE0MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxNDI6Y29uZmlnIEFUSDlLX0NIQU5ORUxfQ09OVEVYVFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE0My1cXHRib29sIFxcXCJDaGFubmVsIENvbnRleHQgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxNDQ6XFx0ZGVwZW5kcyBvbiBBVEg5S1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE0NS1cXHRkZWZhdWx0IG5cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE1MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxNTE6Y29uZmlnIEFUSDlLX1BDT0VNXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTUyLVxcdGJvb2wgXFxcIkF0aGVyb3MgYXRoOWsgc3VwcG9ydCBmb3IgUEMgT0VNIGNhcmRzXFxcIiBpZiBFWFBFUlRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxNTM6XFx0ZGVwZW5kcyBvbiBBVEg5S1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE1NC1cXHRkZWZhdWx0IHlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTU2OmNvbmZpZyBBVEg5S19QQ0lfTk9fRUVQUk9NXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTU3LVxcdHRyaXN0YXRlIFxcXCJBdGhlcm9zIGF0aDlrIHBjaSBsb2FkZXIgZm9yIEVFUFJPTS1sZXNzIGNoaXBzXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjE1ODpcXHRkZXBlbmRzIG9uIEFUSDlLX1BDSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE1OS1cXHRkZWZhdWx0IG5cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE3MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxNzI6Y29uZmlnIEFUSDlLX0hUQ1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE3My1cXHR0cmlzdGF0ZSBcXFwiQXRoZXJvcyBIVEMgYmFzZWQgd2lyZWxlc3MgY2FyZHMgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE3NS1cXHRzZWxlY3QgTUFDODAyMTFfTEVEUyBpZiBMRURTX0NMQVNTPXkgfHwgTEVEU19DTEFTUz1NQUM4MDIxMVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjE3NjpcXHRzZWxlY3QgQVRIOUtfSFdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxNzc6XFx0c2VsZWN0IEFUSDlLX0NPTU1PTlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE3OC1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xODYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTg3OmNvbmZpZyBBVEg5S19IVENfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE4OC1cXHRib29sIFxcXCJBdGhlcm9zIGF0aDlrX2h0YyBkZWJ1Z2dpbmdcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTg5OlxcdGRlcGVuZHMgb24gQVRIOUtfSFRDIFxcdTAwMjZcXHUwMDI2IERFQlVHX0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTkwOlxcdHNlbGVjdCBBVEg5S19DT01NT05fREVCVUdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xOTEtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTk0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjE5NTpjb25maWcgQVRIOUtfSFdSTkdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xOTYtXFx0Ym9vbCBcXFwiUmFuZG9tIG51bWJlciBnZW5lcmF0b3Igc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxOTc6XFx0ZGVwZW5kcyBvbiBBVEg5SyBcXHUwMDI2XFx1MDAyNiAoSFdfUkFORE9NID0geSB8fCBIV19SQU5ET00gPSBBVEg5SylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xOTgtXFx0ZGVmYXVsdCBuXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0yMDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MjA2OmNvbmZpZyBBVEg5S19DT01NT05fU1BFQ1RSQUxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0yMDctXFx0Ym9vbCBcXFwiQXRoZXJvcyBhdGg5ay9hdGg5a19odGMgc3BlY3RyYWwgc2NhbiBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjIwODpcXHRkZXBlbmRzIG9uIEFUSDlLX0RFQlVHRlMgfHwgQVRIOUtfSFRDX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0yMDktXFx0c2VsZWN0IFJFTEFZXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU9Mj1hdGg5ay15ICs9XFx0YmVhY29uLm8gXFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTExLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZToxMjphdGg5ay0kKENPTkZJR19BVEg5S19CVENPRVhfU1VQUE9SVCkgKz0gbWNpLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6MTM6YXRoOWstJChDT05GSUdfQVRIOUtfUENJKSArPSBwY2kub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZToxNDphdGg5ay0kKENPTkZJR19BVEg5S19BSEIpICs9IGFoYi5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlOjE1OmF0aDlrLSQoQ09ORklHX0FUSDlLX0RGU19ERUJVR0ZTKSArPSBkZnNfZGVidWcub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZToxNjphdGg5ay0kKENPTkZJR19BVEg5S19ERlNfQ0VSVElGSUVEKSArPSBkZnMub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZToxNzphdGg5ay0kKENPTkZJR19BVEg5S19UWDk5KSArPSB0eDk5Lm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6MTg6YXRoOWstJChDT05GSUdfQVRIOUtfV09XKSArPSB3b3cub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZToxOTphdGg5ay0kKENPTkZJR19BVEg5S19IV1JORykgKz0gcm5nLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtMjAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlOjIxOmF0aDlrLSQoQ09ORklHX0FUSDlLX0RFQlVHRlMpICs9IGRlYnVnLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtMjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlOjIzOmF0aDlrLSQoQ09ORklHX0FUSDlLX1NUQVRJT05fU1RBVElTVElDUykgKz0gZGVidWdfc3RhLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtMjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlOjI1Om9iai0kKENPTkZJR19BVEg5SykgKz0gYXRoOWsub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS0yNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU9Mjc9YXRoOWtfaHcteTo9XFx0XFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTQ3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZTo0ODphdGg5a19ody0kKENPTkZJR19BVEg5S19XT1cpICs9IGFyOTAwM193b3cub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS00OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6NTA6YXRoOWtfaHctJChDT05GSUdfQVRIOUtfQlRDT0VYX1NVUFBPUlQpICs9IGJ0Y29leC5vIFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtNTEtXFx0XFx0XFx0XFx0XFx0ICAgYXI5MDAzX21jaS5vIFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS01My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6NTQ6YXRoOWtfaHctJChDT05GSUdfQVRIOUtfUENPRU0pICs9IGFyOTAwM19ydHQub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS01NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6NTY6YXRoOWtfaHctJChDT05GSUdfQVRIOUtfRFlOQUNLKSArPSBkeW5hY2sub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS01Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6NTg6b2JqLSQoQ09ORklHX0FUSDlLX0hXKSArPSBhdGg5a19ody5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTU5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZTo2MDpvYmotJChDT05GSUdfQVRIOUtfQ09NTU9OKSArPSBhdGg5a19jb21tb24ub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS02MS1hdGg5a19jb21tb24teTo9XFx0Y29tbW9uLm8gXFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTY0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZTo2NTphdGg5a19jb21tb24tJChDT05GSUdfQVRIOUtfQ09NTU9OX0RFQlVHKSArPSBjb21tb24tZGVidWcub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZTo2NjphdGg5a19jb21tb24tJChDT05GSUdfQVRIOUtfQ09NTU9OX1NQRUNUUkFMKSArPSBjb21tb24tc3BlY3RyYWwub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS02Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU9Njg9YXRoOWtfaHRjLXkgKz1cXHRodGNfaHN0Lm8gXFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTc2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZTo3NzphdGg5a19odGMtJChDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlMpICs9IGh0Y19kcnZfZGVidWcub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS03OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6Nzk6b2JqLSQoQ09ORklHX0FUSDlLX0hUQykgKz0gYXRoOWtfaHRjLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtODAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlOjgxOm9iai0kKENPTkZJR19BVEg5S19QQ0lfTk9fRUVQUk9NKSArPSBhdGg5a19wY2lfb3dsX2xvYWRlci5vXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM9Mzk9c3RhdGljIGNvbnN0IHN0cnVjdCBhbmlfb2ZkbV9sZXZlbF9lbnRyeSBvZmRtX2xldmVsX3RhYmxlW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtNTEtfTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6NTI6I2RlZmluZSBBVEg5S19BTklfT0ZETV9OVU1fTEVWRUwgXFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy01My1cXHRBUlJBWV9TSVpFKG9mZG1fbGV2ZWxfdGFibGUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjU0OiNkZWZpbmUgQVRIOUtfQU5JX09GRE1fTUFYX0xFVkVMIFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6NTU6XFx0KEFUSDlLX0FOSV9PRkRNX05VTV9MRVZFTC0xKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzo1NjojZGVmaW5lIEFUSDlLX0FOSV9PRkRNX0RFRl9MRVZFTCBcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTU3LVxcdDMgLyogZGVmYXVsdCBsZXZlbCAtIG1hdGNoZXMgdGhlIElOSSBzZXR0aW5ncyAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jPTg1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYW5pX2Nja19sZXZlbF9lbnRyeSBjY2tfbGV2ZWxfdGFibGVbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy05Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6OTg6I2RlZmluZSBBVEg5S19BTklfQ0NLX05VTV9MRVZFTCBcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTk5LVxcdEFSUkFZX1NJWkUoY2NrX2xldmVsX3RhYmxlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoxMDA6I2RlZmluZSBBVEg5S19BTklfQ0NLX01BWF9MRVZFTCBcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjEwMTpcXHQoQVRIOUtfQU5JX0NDS19OVU1fTEVWRUwtMSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MTAyOiNkZWZpbmUgQVRIOUtfQU5JX0NDS19NQVhfTEVWRUxfTE9XX1JTU0kgXFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoxMDM6XFx0KEFUSDlLX0FOSV9DQ0tfTlVNX0xFVkVMLTMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjEwNDojZGVmaW5lIEFUSDlLX0FOSV9DQ0tfREVGX0xFVkVMIFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMTA1LVxcdDIgLyogZGVmYXVsdCBsZXZlbCAtIG1hdGNoZXMgdGhlIElOSSBzZXR0aW5ncyAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jPTE0OT1zdGF0aWMgdm9pZCBhdGg5a19od19zZXRfb2ZkbV9uaWwoc3RydWN0IGF0aF9odyAqYWgsIHU4IGltbXVuaXR5TGV2ZWwsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMTYwLVxcdFxcdGltbXVuaXR5TGV2ZWwsIEJFQUNPTl9SU1NJKGFoKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MTYxOlxcdFxcdEFUSDlLX0FOSV9SU1NJX1RIUl9MT1csXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjE2MjpcXHRcXHRBVEg5S19BTklfUlNTSV9USFJfSElHSCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTE2My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MTY0OlxcdGlmIChBUl9TUkVWXzkxMDAoYWgpIFxcdTAwMjZcXHUwMDI2IGltbXVuaXR5TGV2ZWwgXFx1MDAzYyBBVEg5S19BTklfT0ZETV9ERUZfTEVWRUwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjE2NTpcXHRcXHRpbW11bml0eUxldmVsID0gQVRIOUtfQU5JX09GRE1fREVGX0xFVkVMO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0xNjYtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMTc0LVxcdFxcdGF0aDlrX2h3X2FuaV9jb250cm9sKGFoLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoxNzU6XFx0XFx0XFx0XFx0ICAgICBBVEg5S19BTklfU1BVUl9JTU1VTklUWV9MRVZFTCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMTc2LVxcdFxcdFxcdFxcdCAgICAgZW50cnlfb2ZkbS1cXHUwMDNlc3B1cl9pbW11bml0eV9sZXZlbCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMTgwLVxcdFxcdGF0aDlrX2h3X2FuaV9jb250cm9sKGFoLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoxODE6XFx0XFx0XFx0XFx0ICAgICBBVEg5S19BTklfRklSU1RFUF9MRVZFTCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMTgyLVxcdFxcdFxcdFxcdCAgICAgZW50cnlfb2ZkbS1cXHUwMDNlZmlyX3N0ZXBfbGV2ZWwpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTE4NS1cXHRpZiAoYWgtXFx1MDAzZW9wbW9kZSA9PSBOTDgwMjExX0lGVFlQRV9TVEFUSU9OIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjE4NjpcXHQgICAgQkVBQ09OX1JTU0koYWgpIFxcdTAwM2M9IEFUSDlLX0FOSV9SU1NJX1RIUl9ISUdIKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0xODctXFx0XFx0d2Vha19zaWcgPSB0cnVlO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTIwMi1cXHRpZiAoYW5pU3RhdGUtXFx1MDAzZW9mZG1XZWFrU2lnRGV0ZWN0ICE9IHdlYWtfc2lnKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoyMDM6XFx0XFx0YXRoOWtfaHdfYW5pX2NvbnRyb2woYWgsIEFUSDlLX0FOSV9PRkRNX1dFQUtfU0lHTkFMX0RFVEVDVElPTixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMjA0LVxcdFxcdFxcdFxcdCAgICAgd2Vha19zaWcpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTIwOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MjA5OlxcdGlmIChhbmlTdGF0ZS1cXHUwMDNlb2ZkbU5vaXNlSW1tdW5pdHlMZXZlbCBcXHUwMDNlPSBBVEg5S19BTklfT0ZETV9ERUZfTEVWRUwpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MjEwOlxcdFxcdGFoLVxcdTAwM2Vjb25maWcub2ZkbV90cmlnX2hpZ2ggPSBBVEg5S19BTklfT0ZETV9UUklHX0hJR0g7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjIxMTpcXHRcXHRhaC1cXHUwMDNlY29uZmlnLm9mZG1fdHJpZ19sb3cgPSBBVEg5S19BTklfT0ZETV9UUklHX0xPV19BQk9WRV9JTkk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTIxMi1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoyMTM6XFx0XFx0YWgtXFx1MDAzZWNvbmZpZy5vZmRtX3RyaWdfaGlnaCA9IEFUSDlLX0FOSV9PRkRNX1RSSUdfSElHSF9CRUxPV19JTkk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjIxNDpcXHRcXHRhaC1cXHUwMDNlY29uZmlnLm9mZG1fdHJpZ19sb3cgPSBBVEg5S19BTklfT0ZETV9UUklHX0xPVztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMjE1LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYz0yMTg9c3RhdGljIHZvaWQgYXRoOWtfaHdfYW5pX29mZG1fZXJyX3RyaWdnZXIoc3RydWN0IGF0aF9odyAqYWgpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMjIxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoyMjI6XFx0aWYgKGFuaVN0YXRlLVxcdTAwM2VvZmRtTm9pc2VJbW11bml0eUxldmVsIFxcdTAwM2MgQVRIOUtfQU5JX09GRE1fTUFYX0xFVkVMKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0yMjMtXFx0XFx0YXRoOWtfaHdfc2V0X29mZG1fbmlsKGFoLCBhbmlTdGF0ZS1cXHUwMDNlb2ZkbU5vaXNlSW1tdW5pdHlMZXZlbCArIDEsIGZhbHNlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYz0yMjk9c3RhdGljIHZvaWQgYXRoOWtfaHdfc2V0X2Nja19uaWwoc3RydWN0IGF0aF9odyAqYWgsIHVfaW50OF90IGltbXVuaXR5TGV2ZWwsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMjM4LVxcdFxcdGFuaVN0YXRlLVxcdTAwM2VjY2tOb2lzZUltbXVuaXR5TGV2ZWwsIGltbXVuaXR5TGV2ZWwsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjIzOTpcXHRcXHRCRUFDT05fUlNTSShhaCksIEFUSDlLX0FOSV9SU1NJX1RIUl9MT1csXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjI0MDpcXHRcXHRBVEg5S19BTklfUlNTSV9USFJfSElHSCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTI0MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MjQyOlxcdGlmIChBUl9TUkVWXzkxMDAoYWgpIFxcdTAwMjZcXHUwMDI2IGltbXVuaXR5TGV2ZWwgXFx1MDAzYyBBVEg5S19BTklfQ0NLX0RFRl9MRVZFTClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MjQzOlxcdFxcdGltbXVuaXR5TGV2ZWwgPSBBVEg5S19BTklfQ0NLX0RFRl9MRVZFTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMjQ0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0yNDUtXFx0aWYgKGFoLVxcdTAwM2VvcG1vZGUgPT0gTkw4MDIxMV9JRlRZUEVfU1RBVElPTiBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoyNDY6XFx0ICAgIEJFQUNPTl9SU1NJKGFoKSBcXHUwMDNjPSBBVEg5S19BTklfUlNTSV9USFJfTE9XIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjI0NzpcXHQgICAgaW1tdW5pdHlMZXZlbCBcXHUwMDNlIEFUSDlLX0FOSV9DQ0tfTUFYX0xFVkVMX0xPV19SU1NJKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoyNDg6XFx0XFx0aW1tdW5pdHlMZXZlbCA9IEFUSDlLX0FOSV9DQ0tfTUFYX0xFVkVMX0xPV19SU1NJO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0yNDktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMjU4LVxcdFxcdGF0aDlrX2h3X2FuaV9jb250cm9sKGFoLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoyNTk6XFx0XFx0XFx0XFx0ICAgICBBVEg5S19BTklfRklSU1RFUF9MRVZFTCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMjYwLVxcdFxcdFxcdFxcdCAgICAgZW50cnlfY2NrLVxcdTAwM2VmaXJfc3RlcF9sZXZlbCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMjY4LVxcdFxcdGF0aDlrX2h3X2FuaV9jb250cm9sKGFoLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoyNjk6XFx0XFx0XFx0XFx0ICAgICBBVEg5S19BTklfTVJDX0NDSyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMjcwLVxcdFxcdFxcdFxcdCAgICAgZW50cnlfY2NrLVxcdTAwM2VtcmNfY2NrX29uKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYz0yNzM9c3RhdGljIHZvaWQgYXRoOWtfaHdfYW5pX2Nja19lcnJfdHJpZ2dlcihzdHJ1Y3QgYXRoX2h3ICphaClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0yNzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjI3NzpcXHRpZiAoYW5pU3RhdGUtXFx1MDAzZWNja05vaXNlSW1tdW5pdHlMZXZlbCBcXHUwMDNjIEFUSDlLX0FOSV9DQ0tfTUFYX0xFVkVMKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0yNzgtXFx0XFx0YXRoOWtfaHdfc2V0X2Nja19uaWwoYWgsIGFuaVN0YXRlLVxcdTAwM2VjY2tOb2lzZUltbXVuaXR5TGV2ZWwgKyAxLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jPTMwOT12b2lkIGF0aDlrX2FuaV9yZXNldChzdHJ1Y3QgYXRoX2h3ICphaCwgYm9vbCBpc19zY2FubmluZylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0zMjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjMyMjpcXHRvZmRtX25pbCA9IG1heF90KGludCwgQVRIOUtfQU5JX09GRE1fREVGX0xFVkVMLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0zMjMtXFx0XFx0XFx0IGFuaVN0YXRlLVxcdTAwM2VvZmRtTm9pc2VJbW11bml0eUxldmVsKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MzI0OlxcdGNja19uaWwgPSBtYXhfdChpbnQsIEFUSDlLX0FOSV9DQ0tfREVGX0xFVkVMLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0zMjUtXFx0XFx0XFx0IGFuaVN0YXRlLVxcdTAwM2VjY2tOb2lzZUltbXVuaXR5TGV2ZWwpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTMzNi1cXHRcXHRpZiAoYW5pU3RhdGUtXFx1MDAzZW9mZG1Ob2lzZUltbXVuaXR5TGV2ZWwgIT1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MzM3OlxcdFxcdCAgICBBVEg5S19BTklfT0ZETV9ERUZfTEVWRUwgfHxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMzM4LVxcdFxcdCAgICBhbmlTdGF0ZS1cXHUwMDNlY2NrTm9pc2VJbW11bml0eUxldmVsICE9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjMzOTpcXHRcXHQgICAgQVRIOUtfQU5JX0NDS19ERUZfTEVWRUwpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMzQwLVxcdFxcdFxcdGF0aF9kYmcoY29tbW9uLCBBTkksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMzQ3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzozNDg6XFx0XFx0XFx0b2ZkbV9uaWwgPSBBVEg5S19BTklfT0ZETV9ERUZfTEVWRUw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjM0OTpcXHRcXHRcXHRjY2tfbmlsID0gQVRIOUtfQU5JX0NDS19ERUZfTEVWRUw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTM1MC1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM9NDc3PXZvaWQgYXRoOWtfaHdfYW5pX2luaXQoc3RydWN0IGF0aF9odyAqYWgpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtNDg0LVxcdGlmIChBUl9TUkVWXzkzMDBfMjBfT1JfTEFURVIoYWgpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjQ4NTpcXHRcXHRhaC1cXHUwMDNlY29uZmlnLm9mZG1fdHJpZ19oaWdoID0gQVRIOUtfQU5JX09GRE1fVFJJR19ISUdIO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzo0ODY6XFx0XFx0YWgtXFx1MDAzZWNvbmZpZy5vZmRtX3RyaWdfbG93ID0gQVRIOUtfQU5JX09GRE1fVFJJR19MT1c7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjQ4NzpcXHRcXHRhaC1cXHUwMDNlY29uZmlnLmNja190cmlnX2hpZ2ggPSBBVEg5S19BTklfQ0NLX1RSSUdfSElHSDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6NDg4OlxcdFxcdGFoLVxcdTAwM2Vjb25maWcuY2NrX3RyaWdfbG93ID0gQVRIOUtfQU5JX0NDS19UUklHX0xPVztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtNDg5LVxcdH0gZWxzZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjQ5MDpcXHRcXHRhaC1cXHUwMDNlY29uZmlnLm9mZG1fdHJpZ19oaWdoID0gQVRIOUtfQU5JX09GRE1fVFJJR19ISUdIX09MRDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6NDkxOlxcdFxcdGFoLVxcdTAwM2Vjb25maWcub2ZkbV90cmlnX2xvdyA9IEFUSDlLX0FOSV9PRkRNX1RSSUdfTE9XX09MRDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6NDkyOlxcdFxcdGFoLVxcdTAwM2Vjb25maWcuY2NrX3RyaWdfaGlnaCA9IEFUSDlLX0FOSV9DQ0tfVFJJR19ISUdIX09MRDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6NDkzOlxcdFxcdGFoLVxcdTAwM2Vjb25maWcuY2NrX3RyaWdfbG93ID0gQVRIOUtfQU5JX0NDS19UUklHX0xPV19PTEQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTQ5NC1cXHR9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTQ5NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6NDk2OlxcdGFuaS1cXHUwMDNlc3B1ckltbXVuaXR5TGV2ZWwgPSBBVEg5S19BTklfU1BVUl9JTU1VTkVfTFZMO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzo0OTc6XFx0YW5pLVxcdTAwM2VmaXJzdGVwTGV2ZWwgPSBBVEg5S19BTklfRklSU1RFUF9MVkw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTQ5OC1cXHRhbmktXFx1MDAzZW1yY0NDSyA9IEFSX1NSRVZfOTMwMF8yMF9PUl9MQVRFUihhaCkgPyB0cnVlIDogZmFsc2U7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtNTAwLVxcdGFuaS1cXHUwMDNlb2ZkbVdlYWtTaWdEZXRlY3QgPSB0cnVlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzo1MDE6XFx0YW5pLVxcdTAwM2VjY2tOb2lzZUltbXVuaXR5TGV2ZWwgPSBBVEg5S19BTklfQ0NLX0RFRl9MRVZFTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6NTAyOlxcdGFuaS1cXHUwMDNlb2ZkbU5vaXNlSW1tdW5pdHlMZXZlbCA9IEFUSDlLX0FOSV9PRkRNX0RFRl9MRVZFTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtNTAzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTUwNy1cXHQgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6NTA4OlxcdGFoLVxcdTAwM2VhbmlwZXJpb2QgPSBBVEg5S19BTklfUEVSSU9EO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzo1MDk6XFx0YWgtXFx1MDAzZWNvbmZpZy5hbmlfcG9sbF9pbnRlcnZhbCA9IEFUSDlLX0FOSV9QT0xMSU5URVJWQUw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTUxMC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaC0yMi0vKiB1bml0cyBhcmUgZXJyb3JzIHBlciBzZWNvbmQgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmg6MjM6I2RlZmluZSBBVEg5S19BTklfT0ZETV9UUklHX0hJR0ggICAgICAgICAgIDM1MDBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmg6MjQ6I2RlZmluZSBBVEg5S19BTklfT0ZETV9UUklHX0hJR0hfQkVMT1dfSU5JIDEwMDBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmg6MjU6I2RlZmluZSBBVEg5S19BTklfT0ZETV9UUklHX0hJR0hfT0xEICAgICAgIDUwMFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaC0yNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmg6Mjc6I2RlZmluZSBBVEg5S19BTklfT0ZETV9UUklHX0xPVyAgICAgICAgICAgNDAwXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oOjI4OiNkZWZpbmUgQVRIOUtfQU5JX09GRE1fVFJJR19MT1dfQUJPVkVfSU5JIDkwMFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaDoyOTojZGVmaW5lIEFUSDlLX0FOSV9PRkRNX1RSSUdfTE9XX09MRCAgICAgICAyMDBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmgtMzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oOjMxOiNkZWZpbmUgQVRIOUtfQU5JX0NDS19UUklHX0hJR0ggICAgICAgICAgIDYwMFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaDozMjojZGVmaW5lIEFUSDlLX0FOSV9DQ0tfVFJJR19ISUdIX09MRCAgICAgICAyMDBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmg6MzM6I2RlZmluZSBBVEg5S19BTklfQ0NLX1RSSUdfTE9XICAgICAgICAgICAgMzAwXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oOjM0OiNkZWZpbmUgQVRIOUtfQU5JX0NDS19UUklHX0xPV19PTEQgICAgICAgIDEwMFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaC0zNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmg6MzY6I2RlZmluZSBBVEg5S19BTklfU1BVUl9JTU1VTkVfTFZMICAgICAgICAgM1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaDozNzojZGVmaW5lIEFUSDlLX0FOSV9GSVJTVEVQX0xWTCAgICAgICAgICAgICAyXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oLTM4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaDozOTojZGVmaW5lIEFUSDlLX0FOSV9SU1NJX1RIUl9ISUdIICAgICAgICAgICA0MFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaDo0MDojZGVmaW5lIEFUSDlLX0FOSV9SU1NJX1RIUl9MT1cgICAgICAgICAgICA3XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oLTQxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaDo0MjojZGVmaW5lIEFUSDlLX0FOSV9QRVJJT0QgICAgICAgICAgICAgICAgICAzMDBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmgtNDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oLTQ0LS8qIGluIG1zICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oOjQ1OiNkZWZpbmUgQVRIOUtfQU5JX1BPTExJTlRFUlZBTCAgICAgICAgICAgIDEwMDBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmgtNDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oOjQ3OiNkZWZpbmUgQVRIOUtfU0lHX0ZJUlNURVBfU0VUVElOR19NSU4gICAgIDBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmg6NDg6I2RlZmluZSBBVEg5S19TSUdfRklSU1RFUF9TRVRUSU5HX01BWCAgICAgMjBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmg6NDk6I2RlZmluZSBBVEg5S19TSUdfU1BVUl9JTU1fU0VUVElOR19NSU4gICAgMFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaDo1MDojZGVmaW5lIEFUSDlLX1NJR19TUFVSX0lNTV9TRVRUSU5HX01BWCAgICAyMlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaC01MS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaD01ND1lbnVtIGF0aDlrX2FuaV9jbWQge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaDo1NTpcXHRBVEg5S19BTklfT0ZETV9XRUFLX1NJR05BTF9ERVRFQ1RJT04gPSAweDEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oOjU2OlxcdEFUSDlLX0FOSV9GSVJTVEVQX0xFVkVMID0gMHgyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaDo1NzpcXHRBVEg5S19BTklfU1BVUl9JTU1VTklUWV9MRVZFTCA9IDB4NCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmg6NTg6XFx0QVRIOUtfQU5JX01SQ19DQ0sgPSAweDgsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oOjU5OlxcdEFUSDlLX0FOSV9BTEwgPSAweGZmZlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaC02MC19O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyNTAwOF9waHkuYz05NTM9c3RhdGljIGJvb2wgYXI1MDA4X2h3X2FuaV9jb250cm9sX25ldyhzdHJ1Y3QgYXRoX2h3ICphaCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmMtOTYyLVxcdHN3aXRjaCAoY21kIFxcdTAwMjYgYWgtXFx1MDAzZWFuaV9mdW5jdGlvbikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmM6OTYzOlxcdGNhc2UgQVRIOUtfQU5JX09GRE1fV0VBS19TSUdOQUxfREVURUNUSU9OOntcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jLTk2NC1cXHRcXHQvKlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyNTAwOF9waHkuYy0xMDQzLVxcdH1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jOjEwNDQ6XFx0Y2FzZSBBVEg5S19BTklfRklSU1RFUF9MRVZFTDp7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyNTAwOF9waHkuYy0xMDQ1LVxcdFxcdHUzMiBsZXZlbCA9IHBhcmFtO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyNTAwOF9waHkuYy0xMDU4LVxcdFxcdFxcdFxcdGxldmVsLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmM6MTA1OTpcXHRcXHRcXHRcXHRBVEg5S19BTklfRklSU1RFUF9MVkwsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyNTAwOF9waHkuYy0xMDYwLVxcdFxcdFxcdFxcdHZhbHVlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyNTAwOF9waHkuYy0xMDY2LVxcdFxcdFxcdFxcdGxldmVsLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmM6MTA2NzpcXHRcXHRcXHRcXHRBVEg5S19BTklfRklSU1RFUF9MVkwsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyNTAwOF9waHkuYy0xMDY4LVxcdFxcdFxcdFxcdHZhbHVlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyNTAwOF9waHkuYy0xMDc3LVxcdH1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jOjEwNzg6XFx0Y2FzZSBBVEg5S19BTklfU1BVUl9JTU1VTklUWV9MRVZFTDp7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyNTAwOF9waHkuYy0xMDc5LVxcdFxcdHUzMiBsZXZlbCA9IHBhcmFtO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyNTAwOF9waHkuYy0xMDkzLVxcdFxcdFxcdFxcdGxldmVsLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmM6MTA5NDpcXHRcXHRcXHRcXHRBVEg5S19BTklfU1BVUl9JTU1VTkVfTFZMLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmMtMTA5NS1cXHRcXHRcXHRcXHR2YWx1ZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmMtMTEwMS1cXHRcXHRcXHRcXHRsZXZlbCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jOjExMDI6XFx0XFx0XFx0XFx0QVRIOUtfQU5JX1NQVVJfSU1NVU5FX0xWTCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jLTExMDMtXFx0XFx0XFx0XFx0dmFsdWUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jLTExMTItXFx0fVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmM6MTExMzpcXHRjYXNlIEFUSDlLX0FOSV9NUkNfQ0NLOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmMtMTExNC1cXHRcXHQvKlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyNTAwOF9waHkuYz0xMTY5PXN0YXRpYyB2b2lkIGFyNTAwOF9od19hbmlfY2FjaGVfaW5pX3JlZ3Moc3RydWN0IGF0aF9odyAqYWgpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jLTEyMTMtXFx0LyogdGhlc2UgbGV2ZWxzIGp1c3QgZ290IHJlc2V0IHRvIGRlZmF1bHRzIGJ5IHRoZSBJTkkgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jOjEyMTQ6XFx0YW5pU3RhdGUtXFx1MDAzZXNwdXJJbW11bml0eUxldmVsID0gQVRIOUtfQU5JX1NQVVJfSU1NVU5FX0xWTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jOjEyMTU6XFx0YW5pU3RhdGUtXFx1MDAzZWZpcnN0ZXBMZXZlbCA9IEFUSDlLX0FOSV9GSVJTVEVQX0xWTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jLTEyMTYtXFx0YW5pU3RhdGUtXFx1MDAzZW9mZG1XZWFrU2lnRGV0ZWN0ID0gdHJ1ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM9MzI9c3RhdGljIGJvb2wgYXI5MDAyX2h3X2dldF9pc3Ioc3RydWN0IGF0aF9odyAqYWgsIGVudW0gYXRoOWtfaW50ICptYXNrZWQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTY2LVxcdFxcdFxcdGlmIChpc3IyIFxcdTAwMjYgQVJfSVNSX1MyX1RJTSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjY3OlxcdFxcdFxcdFxcdG1hc2syIHw9IEFUSDlLX0lOVF9USU07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy02OC1cXHRcXHRcXHRpZiAoaXNyMiBcXHUwMDI2IEFSX0lTUl9TMl9EVElNKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6Njk6XFx0XFx0XFx0XFx0bWFzazIgfD0gQVRIOUtfSU5UX0RUSU07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy03MC1cXHRcXHRcXHRpZiAoaXNyMiBcXHUwMDI2IEFSX0lTUl9TMl9EVElNU1lOQylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjcxOlxcdFxcdFxcdFxcdG1hc2syIHw9IEFUSDlLX0lOVF9EVElNU1lOQztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTcyLVxcdFxcdFxcdGlmIChpc3IyIFxcdTAwMjYgKEFSX0lTUl9TMl9DQUJFTkQpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6NzM6XFx0XFx0XFx0XFx0bWFzazIgfD0gQVRIOUtfSU5UX0NBQkVORDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTc0LVxcdFxcdFxcdGlmIChpc3IyIFxcdTAwMjYgQVJfSVNSX1MyX0dUVClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjc1OlxcdFxcdFxcdFxcdG1hc2syIHw9IEFUSDlLX0lOVF9HVFQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy03Ni1cXHRcXHRcXHRpZiAoaXNyMiBcXHUwMDI2IEFSX0lTUl9TMl9DU1QpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzo3NzpcXHRcXHRcXHRcXHRtYXNrMiB8PSBBVEg5S19JTlRfQ1NUO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtNzgtXFx0XFx0XFx0aWYgKGlzcjIgXFx1MDAyNiBBUl9JU1JfUzJfVFNGT09SKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6Nzk6XFx0XFx0XFx0XFx0bWFzazIgfD0gQVRIOUtfSU5UX1RTRk9PUjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTgwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6ODE6XFx0XFx0XFx0aWYgKCEocENhcC1cXHUwMDNlaHdfY2FwcyBcXHUwMDI2IEFUSDlLX0hXX0NBUF9SQUNfU1VQUE9SVEVEKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtODItXFx0XFx0XFx0XFx0UkVHX1dSSVRFKGFoLCBBUl9JU1JfUzIsIGlzcjIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy04Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjg3OlxcdFxcdGlmIChwQ2FwLVxcdTAwM2Vod19jYXBzIFxcdTAwMjYgQVRIOUtfSFdfQ0FQX1JBQ19TVVBQT1JURUQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy04OC1cXHRcXHRcXHRpc3IgPSBSRUdfUkVBRChhaCwgQVJfSVNSX1JBQyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTk0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6OTU6XFx0XFx0Km1hc2tlZCA9IGlzciBcXHUwMDI2IEFUSDlLX0lOVF9DT01NT047XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy05Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtOTgtXFx0XFx0XFx0ICAgQVJfSVNSX1JYT0sgfCBBUl9JU1JfUlhFUlIpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6OTk6XFx0XFx0XFx0Km1hc2tlZCB8PSBBVEg5S19JTlRfUlg7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0xMDAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTEwNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjEwNjpcXHRcXHRcXHQqbWFza2VkIHw9IEFUSDlLX0lOVF9UWDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTEwNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjEwODpcXHRcXHRcXHRpZiAocENhcC1cXHUwMDNlaHdfY2FwcyBcXHUwMDI2IEFUSDlLX0hXX0NBUF9SQUNfU1VQUE9SVEVEKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0xMDktXFx0XFx0XFx0XFx0czBfcyA9IFJFR19SRUFEKGFoLCBBUl9JU1JfUzBfUyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTEzOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjE0MDpcXHRcXHRpZiAocENhcC1cXHUwMDNlaHdfY2FwcyBcXHUwMDI2IEFUSDlLX0hXX0NBUF9SQUNfU1VQUE9SVEVEKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0xNDEtXFx0XFx0XFx0czVfcyA9IFJFR19SRUFEKGFoLCBBUl9JU1JfUzVfUyhhaCkpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0xNTItXFx0XFx0aWYgKGFoLVxcdTAwM2VpbnRyX2dlbl90aW1lcl90cmlnZ2VyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6MTUzOlxcdFxcdFxcdCptYXNrZWQgfD0gQVRIOUtfSU5UX0dFTlRJTUVSO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtMTU0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtMTU1LVxcdFxcdGlmICgoczVfcyBcXHUwMDI2IEFSX0lTUl9TNV9USU1fVElNRVIpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzoxNTY6XFx0XFx0ICAgICEocENhcC1cXHUwMDNlaHdfY2FwcyBcXHUwMDI2IEFUSDlLX0hXX0NBUF9BVVRPU0xFRVApKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6MTU3OlxcdFxcdFxcdCptYXNrZWQgfD0gQVRIOUtfSU5UX1RJTV9USU1FUjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTE1OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjE1OTpcXHRcXHRpZiAoIShwQ2FwLVxcdTAwM2Vod19jYXBzIFxcdTAwMjYgQVRIOUtfSFdfQ0FQX1JBQ19TVVBQT1JURUQpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0xNjAtXFx0XFx0XFx0UkVHX1dSSVRFKGFoLCBBUl9JU1JfUzUsIHM1X3MpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0xNjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzoxNjU6XFx0aWYgKCEocENhcC1cXHUwMDNlaHdfY2FwcyBcXHUwMDI2IEFUSDlLX0hXX0NBUF9SQUNfU1VQUE9SVEVEKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtMTY2LVxcdFxcdFJFR19XUklURShhaCwgQVJfSVNSLCBpc3IpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0xODktXFx0XFx0XFx0fVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6MTkwOlxcdFxcdFxcdCptYXNrZWQgfD0gQVRIOUtfSU5UX0ZBVEFMO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtMTkxLVxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtMTk2LVxcdFxcdFxcdFJFR19XUklURShhaCwgQVJfUkMsIDApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6MTk3OlxcdFxcdFxcdCptYXNrZWQgfD0gQVRIOUtfSU5UX0ZBVEFMO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtMTk4LVxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM9MjEyPWFyOTAwMl9zZXRfdHhkZXNjKHN0cnVjdCBhdGhfaHcgKmFoLCB2b2lkICpkcywgc3RydWN0IGF0aF90eF9pbmZvICppKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0yNjAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzoyNjE6XFx0Y3RsMSB8PSAoaS1cXHUwMDNla2V5aXggIT0gQVRIOUtfVFhLRVlJWF9JTlZBTElEID8gU00oaS1cXHUwMDNla2V5aXgsIEFSX0Rlc3RJZHgpIDogMClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTI2Mi1cXHRcXHR8IFNNKGktXFx1MDAzZXR5cGUsIEFSX0ZyYW1lVHlwZSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjI2MzpcXHRcXHR8IChpLVxcdTAwM2VmbGFncyBcXHUwMDI2IEFUSDlLX1RYREVTQ19OT0FDSyA/IEFSX05vQWNrIDogMClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjI2NDpcXHRcXHR8IChpLVxcdTAwM2VmbGFncyBcXHUwMDI2IEFUSDlLX1RYREVTQ19FWFRfT05MWSA/IEFSX0V4dE9ubHkgOiAwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6MjY1OlxcdFxcdHwgKGktXFx1MDAzZWZsYWdzIFxcdTAwMjYgQVRIOUtfVFhERVNDX0VYVF9BTkRfQ1RMID8gQVJfRXh0QW5kQ3RsIDogMCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0yNjYtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTI4Mi1cXHRXUklURV9PTkNFKGFkcy1cXHUwMDNlZHNfY3RsMCwgKGktXFx1MDAzZXBrdF9sZW4gXFx1MDAyNiBBUl9GcmFtZUxlbilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjI4MzpcXHRcXHR8IChpLVxcdTAwM2VmbGFncyBcXHUwMDI2IEFUSDlLX1RYREVTQ19WTUYgPyBBUl9WaXJ0TW9yZUZyYWcgOiAwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtMjg0LVxcdFxcdHwgU00oaS1cXHUwMDNldHhwb3dlclswXSwgQVJfWG1pdFBvd2VyMClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjI4NTpcXHRcXHR8IChpLVxcdTAwM2VmbGFncyBcXHUwMDI2IEFUSDlLX1RYREVTQ19WRU9MID8gQVJfVkVPTCA6IDApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzoyODY6XFx0XFx0fCAoaS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBBVEg5S19UWERFU0NfSU5UUkVRID8gQVJfVHhJbnRyUmVxIDogMClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjI4NzpcXHRcXHR8IChpLVxcdTAwM2VrZXlpeCAhPSBBVEg5S19UWEtFWUlYX0lOVkFMSUQgPyBBUl9EZXN0SWR4VmFsaWQgOiAwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6Mjg4OlxcdFxcdHwgKGktXFx1MDAzZWZsYWdzIFxcdTAwMjYgQVRIOUtfVFhERVNDX0NMUkRNQVNLID8gQVJfQ2xyRGVzdE1hc2sgOiAwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6Mjg5OlxcdFxcdHwgKGktXFx1MDAzZWZsYWdzIFxcdTAwMjYgQVRIOUtfVFhERVNDX1JUU0VOQSA/IEFSX1JUU0VuYWJsZSA6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzoyOTA6XFx0XFx0ICAgKGktXFx1MDAzZWZsYWdzIFxcdTAwMjYgQVRIOUtfVFhERVNDX0NUU0VOQSA/IEFSX0NUU0VuYWJsZSA6IDApKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0yOTEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jPTMxNj1zdGF0aWMgaW50IGFyOTAwMl9od19wcm9jX3R4ZGVzYyhzdHJ1Y3QgYXRoX2h3ICphaCwgdm9pZCAqZHMsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTMzMC1cXHRpZiAoc3RhdHVzIFxcdTAwMjYgQVJfVHhPcEV4Y2VlZGVkKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6MzMxOlxcdFxcdHRzLVxcdTAwM2V0c19zdGF0dXMgfD0gQVRIOUtfVFhFUlJfWFRYT1A7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0zMzItXFx0dHMtXFx1MDAzZXRpZCA9IE1TKHN0YXR1cywgQVJfVHhUaWQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0zNDAtXFx0aWYgKHN0YXR1cyBcXHUwMDI2IEFSX1R4QmFTdGF0dXMpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjM0MTpcXHRcXHR0cy1cXHUwMDNldHNfZmxhZ3MgfD0gQVRIOUtfVFhfQkE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0zNDItXFx0XFx0dHMtXFx1MDAzZWJhX2xvdyA9IGFkcy1cXHUwMDNlQVJfQmFCaXRtYXBMb3c7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTM0Ny1cXHRpZiAoc3RhdHVzIFxcdTAwMjYgQVJfRnJtWG1pdE9LKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6MzQ4OlxcdFxcdHRzLVxcdTAwM2V0c19zdGF0dXMgfD0gQVRIOUtfVFhfQUNLRUQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0zNDktXFx0ZWxzZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0zNTAtXFx0XFx0aWYgKHN0YXR1cyBcXHUwMDI2IEFSX0V4Y2Vzc2l2ZVJldHJpZXMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzozNTE6XFx0XFx0XFx0dHMtXFx1MDAzZXRzX3N0YXR1cyB8PSBBVEg5S19UWEVSUl9YUkVUUlk7XFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDEyOjQ4OjA4LjE3OTk5MzYwM1oiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozMDcyNjQ2NDU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSB0aGlua2luZyBpdCBteXNlbGYsIHRhaWxvcmVkIGZvciBzb21lb25lIGluIG15IGZpZWxkOlxuXG4qKkRpZ2dpbmcgaW50byBBVEg5S19IVEMgRGVwZW5kZW5jaWVzKipcblxuUmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9LY29uZmlnYCBmaWxlLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIHN1cnJvdW5kaW5nIGNvbmZpZ3VyYXRpb25zIHJlbGF0ZWQgdG8gYEFUSDlLX0hUQ2AuIFNwZWNpZmljYWxseSwgSSdtIHRoaW5raW5nIEkgc2hvdWxkIGNoZWNrIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGVuY2xvc2luZyBvciBjb25kaXRpb25hbCBjb25maWd1cmF0aW9ucyB0aGF0IG1pZ2h0IGltcGFjdCBvciBkZXBlbmQgb24gYEFUSDlLX0hUQ2AuIEl0J3MgY3J1Y2lhbCB0byB1bmRlcnN0YW5kIHRoZSBicm9hZGVyIGNvbnRleHQuIFVuZGVyc3RhbmRpbmcgZGVwZW5kZW5jaWVzIGlzIGtleSB0byBhdm9pZCB1bmludGVuZGVkIGNvbnNlcXVlbmNlcyBvciBtaXNzaW5nIGNyaXRpY2FsIGVsZW1lbnRzIHdoZW4gbW9kaWZ5aW5nIHRoaXMgbW9kdWxlLiBHb3R0YSB0cmFjZSB0aGUgaW5oZXJpdGFuY2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4MzUxLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMTI6NDg6MTEuMjUyNjQzNDc5WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTg1OTI5NDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic291cmNlLiphdGhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWc9MjE9c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hZG10ZWsvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9LY29uZmlnOjIyOnNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvS2NvbmZpZy0yMy1zb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0bWVsL0tjb25maWdcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvS2NvbmZpZz00OT1jb25maWcgQVRIX1JFR19EWU5BTUlDX1VTRVJfQ0VSVF9URVNUSU5HXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvS2NvbmZpZy01Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvS2NvbmZpZzo1Nzpzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9LY29uZmlnOjU4OnNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL0tjb25maWc6NTk6c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvS2NvbmZpZzo2MDpzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvS2NvbmZpZzo2MTpzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hcjU1MjMvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvS2NvbmZpZzo2Mjpzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL0tjb25maWc6NjM6c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL0tjb25maWc6NjQ6c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9LY29uZmlnOjY1OnNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9LY29uZmlnOjY2OnNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9LY29uZmlnLTY3LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9haGIuYz00MzA9c3RhdGljIHZvaWQgYXRoMTBrX2FoYl9pcnFfZGlzYWJsZShzdHJ1Y3QgYXRoMTBrICphcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvYWhiLmMtNDM1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvYWhiLmM6NDM2OnN0YXRpYyBpbnQgYXRoMTBrX2FoYl9yZXNvdXJjZV9pbml0KHN0cnVjdCBhdGgxMGsgKmFyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvYWhiLmMtNDM3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvYWhiLmMtNTIzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvYWhiLmM6NTI0OnN0YXRpYyB2b2lkIGF0aDEwa19haGJfcmVzb3VyY2VfZGVpbml0KHN0cnVjdCBhdGgxMGsgKmFyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvYWhiLmMtNTI1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM9MjA0PWF0aDEwa19tYWNfbWF4X3ZodF9uc3MoY29uc3QgdTE2IHZodF9tY3NfbWFza1tOTDgwMjExX1ZIVF9OU1NfTUFYXSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtMjE0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM6MjE1OmludCBhdGgxMGtfbWFjX2V4dF9yZXNvdXJjZV9jb25maWcoc3RydWN0IGF0aDEwayAqYXIsIHUzMiB2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy0yMTYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuaD03MD1zdHJ1Y3QgaWVlZTgwMjExX3R4cSAqYXRoMTBrX21hY190eHFfbG9va3VwKHN0cnVjdCBhdGgxMGsgKmFyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuaC03Mi1cXHRcXHRcXHRcXHRcXHQgICAgdTggdGlkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5oOjczOmludCBhdGgxMGtfbWFjX2V4dF9yZXNvdXJjZV9jb25maWcoc3RydWN0IGF0aDEwayAqYXIsIHUzMiB2YWwpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmgtNzQtdm9pZCBhdGgxMGtfbWFjX3dhaXRfdHhfY29tcGxldGUoc3RydWN0IGF0aDEwayAqYXIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9wY2kuYz0xNzg5PXZvaWQgYXRoMTBrX3BjaV9oaWZfc2VuZF9jb21wbGV0ZV9jaGVjayhzdHJ1Y3QgYXRoMTBrICphciwgdTggcGlwZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvcGNpLmMtMTgwNC1cXHRcXHQgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3BjaS5jOjE4MDU6XFx0XFx0cmVzb3VyY2VzID0gYXRoMTBrX3BjaV9oaWZfZ2V0X2ZyZWVfcXVldWVfbnVtYmVyKGFyLCBwaXBlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3BjaS5jLTE4MDYtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3BjaS5jPTM0Mzc9c3RhdGljIGJvb2wgYXRoMTBrX3BjaV9jaGlwX2lzX3N1cHBvcnRlZCh1MzIgZGV2X2lkLCB1MzIgY2hpcF9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvcGNpLmMtMzQ1My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3BjaS5jOjM0NTQ6aW50IGF0aDEwa19wY2lfc2V0dXBfcmVzb3VyY2Uoc3RydWN0IGF0aDEwayAqYXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9wY2kuYy0zNDU1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvcGNpLmMtMzUxMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3BjaS5jOjM1MTE6dm9pZCBhdGgxMGtfcGNpX3JlbGVhc2VfcmVzb3VyY2Uoc3RydWN0IGF0aDEwayAqYXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9wY2kuYy0zNTEyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvcGNpLmg9MjUwPWludCBhdGgxMGtfcGNpX3dhaXRfZm9yX3RhcmdldF9pbml0KHN0cnVjdCBhdGgxMGsgKmFyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3BjaS5oOjI1MTppbnQgYXRoMTBrX3BjaV9zZXR1cF9yZXNvdXJjZShzdHJ1Y3QgYXRoMTBrICphcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9wY2kuaDoyNTI6dm9pZCBhdGgxMGtfcGNpX3JlbGVhc2VfcmVzb3VyY2Uoc3RydWN0IGF0aDEwayAqYXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvcGNpLmgtMjUzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9zbm9jLmM9NzYxPXN0YXRpYyB2b2lkIGF0aDEwa19zbm9jX2hpZl9zZW5kX2NvbXBsZXRlX2NoZWNrKHN0cnVjdCBhdGgxMGsgKmFyLCB1OCBwaXBlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9zbm9jLmMtNzY4LVxcdGlmICghZm9yY2UpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Nub2MuYzo3Njk6XFx0XFx0cmVzb3VyY2VzID0gYXRoMTBrX3Nub2NfaGlmX2dldF9mcmVlX3F1ZXVlX251bWJlcihhciwgcGlwZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9zbm9jLmMtNzcwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9zbm9jLmM9MTMwNT1zdGF0aWMgdm9pZCBhdGgxMGtfc25vY19mcmVlX2lycShzdHJ1Y3QgYXRoMTBrICphcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvc25vYy5jLTEzMTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9zbm9jLmM6MTMxNDpzdGF0aWMgaW50IGF0aDEwa19zbm9jX3Jlc291cmNlX2luaXQoc3RydWN0IGF0aDEwayAqYXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9zbm9jLmMtMTMxNS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Nub2MuYz0xMzcxPWludCBhdGgxMGtfc25vY19md19pbmRpY2F0aW9uKHN0cnVjdCBhdGgxMGsgKmFyLCB1NjQgdHlwZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvc25vYy5jLTE0MDgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9zbm9jLmM6MTQwOTpzdGF0aWMgaW50IGF0aDEwa19zbm9jX3NldHVwX3Jlc291cmNlKHN0cnVjdCBhdGgxMGsgKmFyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvc25vYy5jLTE0MTAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9zbm9jLmMtMTQzNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Nub2MuYzoxNDM4OnN0YXRpYyB2b2lkIGF0aDEwa19zbm9jX3JlbGVhc2VfcmVzb3VyY2Uoc3RydWN0IGF0aDEwayAqYXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9zbm9jLmMtMTQzOS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Nub2MuYz0xNTczPXN0YXRpYyB2b2lkIGF0aDEwa19tb2RlbV9kZWluaXQoc3RydWN0IGF0aDEwayAqYXIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Nub2MuYy0xNTgyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvc25vYy5jOjE1ODM6c3RhdGljIGludCBhdGgxMGtfc2V0dXBfbXNhX3Jlc291cmNlcyhzdHJ1Y3QgYXRoMTBrICphciwgdTMyIG1zYV9zaXplKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvc25vYy5jLTE1ODQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9zbm9jLmM9MTczMj1zdGF0aWMgaW50IGF0aDEwa19zbm9jX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Nub2MuYy0xODk0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvc25vYy5jOjE4OTU6c3RhdGljIGludCBhdGgxMGtfc25vY19mcmVlX3Jlc291cmNlcyhzdHJ1Y3QgYXRoMTBrICphcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Nub2MuYy0xODk2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM9NzQ9c3RhdGljIHZvaWQgYXRoMTBrX3VzYl9jbGVhbnVwX3JlY3ZfdXJiKHN0cnVjdCBhdGgxMGtfdXJiX2NvbnRleHQgKnVyYl9jb250ZXh0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy04MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjgyOnN0YXRpYyB2b2lkIGF0aDEwa191c2JfZnJlZV9waXBlX3Jlc291cmNlcyhzdHJ1Y3QgYXRoMTBrICphcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTgzLVxcdFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBhdGgxMGtfdXNiX3BpcGUgKnBpcGUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTExMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjExNDpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX2NsZWFudXBfcGlwZV9yZXNvdXJjZXMoc3RydWN0IGF0aDEwayAqYXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMTUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYz03NDY9c3RhdGljIHU4IGF0aDEwa191c2JfZ2V0X2xvZ2ljYWxfcGlwZV9udW0odTggZXBfYWRkcmVzcywgaW50ICp1cmJfY291bnQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTc5MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjc5MTpzdGF0aWMgaW50IGF0aDEwa191c2JfYWxsb2NfcGlwZV9yZXNvdXJjZXMoc3RydWN0IGF0aDEwayAqYXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03OTItXFx0XFx0XFx0XFx0XFx0ICAgc3RydWN0IGF0aDEwa191c2JfcGlwZSAqcGlwZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtODIyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6ODIzOnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9zZXR1cF9waXBlX3Jlc291cmNlcyhzdHJ1Y3QgYXRoMTBrICphcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTgyNC1cXHRcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWktb3BzLmg9MTQ9c3RydWN0IHdtaV9vcHMge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWktb3BzLmgtMjA5LVxcdFxcdFxcdFxcdFxcdFxcdFxcdHUzMiBkZXRlY3RfbWFyZ2luKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS1vcHMuaDoyMTA6XFx0c3RydWN0IHNrX2J1ZmYgKigqZXh0X3Jlc291cmNlX2NvbmZpZykoc3RydWN0IGF0aDEwayAqYXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWktb3BzLmgtMjExLVxcdFxcdFxcdFxcdFxcdCAgICAgICBlbnVtIHdtaV9ob3N0X3BsYXRmb3JtX3R5cGUgdHlwZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLW9wcy5oPTE1Nzk9c3RhdGljIGlubGluZSBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS1vcHMuaDoxNTgwOmF0aDEwa193bWlfZXh0X3Jlc291cmNlX2NvbmZpZyhzdHJ1Y3QgYXRoMTBrICphcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS1vcHMuaC0xNTgxLVxcdFxcdFxcdCAgICAgICBlbnVtIHdtaV9ob3N0X3BsYXRmb3JtX3R5cGUgdHlwZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmM9ODg1NT1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmM6ODg1NjphdGgxMGtfd21pXzEwXzRfZXh0X3Jlc291cmNlX2NvbmZpZyhzdHJ1Y3QgYXRoMTBrICphcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS5jLTg4NTctXFx0XFx0XFx0XFx0ICAgIGVudW0gd21pX2hvc3RfcGxhdGZvcm1fdHlwZSB0eXBlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYz05NDM4PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgd21pX29wcyB3bWlfMTBfNF9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS5jLTk0OTYtXFx0LmZ3X3N0YXRzX2ZpbGwgPSBhdGgxMGtfd21pXzEwXzRfb3BfZndfc3RhdHNfZmlsbCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS5jOjk0OTc6XFx0LmV4dF9yZXNvdXJjZV9jb25maWcgPSBhdGgxMGtfd21pXzEwXzRfZXh0X3Jlc291cmNlX2NvbmZpZyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS5jLTk0OTgtXFx0Lmdlbl91cGRhdGVfZndfdGRsc19zdGF0ZSA9IGF0aDEwa193bWlfMTBfNF9nZW5fdXBkYXRlX2Z3X3RkbHNfc3RhdGUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jPTgyOD1zdGF0aWMgaW50IGF0aDExa19jb3JlX2dldF9ycHJvYyhzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy04NDctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo4NDg6c3RhdGljIGludCBhdGgxMWtfYWhiX3NldHVwX21zaV9yZXNvdXJjZXMoc3RydWN0IGF0aDExa19iYXNlICphYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTg0OS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jPTkxNj1zdGF0aWMgdm9pZCBhdGgxMWtfYWhiX3JlbGVhc2Vfc21wMnBfaGFuZGxlKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTkyNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjkyNjpzdGF0aWMgaW50IGF0aDExa19haGJfc2V0dXBfcmVzb3VyY2VzKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy05Mjcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy05NDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo5NDc6c3RhdGljIGludCBhdGgxMWtfYWhiX3NldHVwX21zYV9yZXNvdXJjZXMoc3RydWN0IGF0aDExa19iYXNlICphYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTk0OC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jPTk5OT1zdGF0aWMgdm9pZCBhdGgxMWtfYWhiX2NlX3VubWFwKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTEwMDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoxMDA1OnN0YXRpYyBpbnQgYXRoMTFrX2FoYl9md19yZXNvdXJjZXNfaW5pdChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMTAwNi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTExMDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoxMTA0OnN0YXRpYyBpbnQgYXRoMTFrX2FoYl9md19yZXNvdXJjZV9kZWluaXQoc3RydWN0IGF0aDExa19iYXNlICphYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTExMDUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYz0xMjY0PXN0YXRpYyB2b2lkIGF0aDExa19haGJfcmVtb3ZlX3ByZXBhcmUoc3RydWN0IGF0aDExa19iYXNlICphYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMTI3OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjEyODA6c3RhdGljIHZvaWQgYXRoMTFrX2FoYl9mcmVlX3Jlc291cmNlcyhzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMTI4MS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmM9NDM9aW50IGF0aDExa19kcF9wZWVyX3NldHVwKHN0cnVjdCBhdGgxMWsgKmFyLCBpbnQgdmRldl9pZCwgY29uc3QgdTggKmFkZHIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtNzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jOjc5OlxcdC8qIFRPRE86IFNldHVwIG90aGVyIHBlZXIgc3BlY2lmaWMgcmVzb3VyY2UgdXNlZCBpbiBkYXRhIHBhdGggKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtODAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3FtaS5jPTMzNjQ9RVhQT1JUX1NZTUJPTChhdGgxMWtfcW1pX2RlaW5pdF9zZXJ2aWNlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3FtaS5jLTMzNjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9xbWkuYzozMzY2OnZvaWQgYXRoMTFrX3FtaV9mcmVlX3Jlc291cmNlKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9xbWkuYy0zMzY3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcW1pLmg9NTIxPWludCBhdGgxMWtfcW1pX2luaXRfc2VydmljZShzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3FtaS5oOjUyMjp2b2lkIGF0aDExa19xbWlfZnJlZV9yZXNvdXJjZShzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3FtaS5oLTUyMy1pbnQgYXRoMTFrX3FtaV9md3Jlc2V0X2Zyb21fY29sZF9ib290KHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYz0xMDExPXN0YXRpYyB2b2lkIGF0aDEya19haGJfZGVjb25maWd1cmVfcnByb2Moc3RydWN0IGF0aDEya19iYXNlICphYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMTAzNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjEwMzY6c3RhdGljIGludCBhdGgxMmtfYWhiX3Jlc291cmNlX2luaXQoc3RydWN0IGF0aDEya19iYXNlICphYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTEwMzcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xMDk5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MTEwMDpzdGF0aWMgdm9pZCBhdGgxMmtfYWhiX3Jlc291cmNlX2RlaW5pdChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMTEwMS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jPTEyNjc9c3RhdGljIHZvaWQgYXRoMTJrX2FoYl9yZW1vdmVfcHJlcGFyZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xMjgyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MTI4MzpzdGF0aWMgdm9pZCBhdGgxMmtfYWhiX2ZyZWVfcmVzb3VyY2VzKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xMjg0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuYz00Nz1pbnQgYXRoMTJrX2RwX3BlZXJfc2V0dXAoc3RydWN0IGF0aDEyayAqYXIsIGludCB2ZGV2X2lkLCBjb25zdCB1OCAqYWRkcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuYy04Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmM6ODM6XFx0LyogVE9ETzogU2V0dXAgb3RoZXIgcGVlciBzcGVjaWZpYyByZXNvdXJjZSB1c2VkIGluIGRhdGEgcGF0aCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuYy04NC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcW1pLmM9NDEwMz12b2lkIGF0aDEya19xbWlfZGVpbml0X3NlcnZpY2Uoc3RydWN0IGF0aDEya19iYXNlICphYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcW1pLmMtNDExNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3FtaS5jOjQxMTc6dm9pZCBhdGgxMmtfcW1pX2ZyZWVfcmVzb3VyY2Uoc3RydWN0IGF0aDEya19iYXNlICphYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3FtaS5jLTQxMTgte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9xbWkuaD02MzM9aW50IGF0aDEya19xbWlfaW5pdF9zZXJ2aWNlKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcW1pLmg6NjM0OnZvaWQgYXRoMTJrX3FtaV9mcmVlX3Jlc291cmNlKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcW1pLmgtNjM1LXZvaWQgYXRoMTJrX3FtaV90cmlnZ2VyX2hvc3RfY2FwKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYz00MTQzPXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYzo0MTQ0OmF0aDEya193bWlfY29weV9yZXNvdXJjZV9jb25maWcoc3RydWN0IGF0aDEya19iYXNlICphYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTQxNDUtXFx0XFx0XFx0XFx0c3RydWN0IGF0aDEya193bWlfcmVzb3VyY2VfY29uZmlnX3BhcmFtcyAqd21pX2NmZyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM9MTc3PXN0YXRpYyBpbmxpbmUgc3RydWN0IGF0aDZrbF91c2IgKmF0aDZrbF91c2JfcHJpdihzdHJ1Y3QgYXRoNmtsICphcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTgyLS8qIHBpcGUgcmVzb3VyY2UgYWxsb2NhdGlvbi9jbGVhbnVwICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxODM6c3RhdGljIGludCBhdGg2a2xfdXNiX2FsbG9jX3BpcGVfcmVzb3VyY2VzKHN0cnVjdCBhdGg2a2xfdXNiX3BpcGUgKnBpcGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xODQtXFx0XFx0XFx0XFx0XFx0ICAgaW50IHVyYl9jbnQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTIxNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjIxODpzdGF0aWMgdm9pZCBhdGg2a2xfdXNiX2ZyZWVfcGlwZV9yZXNvdXJjZXMoc3RydWN0IGF0aDZrbF91c2JfcGlwZSAqcGlwZSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTIxOS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTI0OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjI0OTpzdGF0aWMgdm9pZCBhdGg2a2xfdXNiX2NsZWFudXBfcGlwZV9yZXNvdXJjZXMoc3RydWN0IGF0aDZrbF91c2IgKmFyX3VzYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTI1MC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jPTI1Nz1zdGF0aWMgdTggYXRoNmtsX3VzYl9nZXRfbG9naWNhbF9waXBlX251bShzdHJ1Y3QgYXRoNmtsX3VzYiAqYXJfdXNiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0zMDItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzozMDM6c3RhdGljIGludCBhdGg2a2xfdXNiX3NldHVwX3BpcGVfcmVzb3VyY2VzKHN0cnVjdCBhdGg2a2xfdXNiICphcl91c2IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0zMDQte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQxMjo0ODoxMS40MTEyNDMwOTdaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTcxNjE4ODUwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaXQgaXM6XG5cbioqQ2hlY2tpbmcgYEFUSF9DT01NT05gIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvS2NvbmZpZ2AqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgZ29pbmcgb24gd2l0aCB0aGUgQXRoZXJvcyB3aXJlbGVzcyBkcml2ZXJzIGluIHRoaXMga2VybmVsIGJ1aWxkLCBhbmQgdGhlIGZpcnN0IGxvZ2ljYWwgc3RlcCBpcyB0byBjaGVjayB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLiBTcGVjaWZpY2FsbHksIEknbSB0aGlua2luZyBhYm91dCBgQVRIX0NPTU1PTmAuIEkga25vdyB0aGF0J3MgYSBrZXkgY29tbW9uIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBBdGhlcm9zIGRyaXZlciwgc28gdGhhdCdzIHdoZXJlIEknbGwgc3RhcnQgbG9va2luZy4gSSdsbCBuZWVkIHRvIHNlZSBob3cgaXQncyBkZWZpbmVkLCBpdHMgZGVwZW5kZW5jaWVzLCBhbmQgd2hhdCBvdGhlciBvcHRpb25zIGFyZSBpbmZsdWVuY2VkIGJ5IGl0cyBzdGF0ZS4gVGhpcyB3aWxsIGhlbHAgbWUgdW5kZXJzdGFuZCB0aGUgb3ZlcmFsbCBidWlsZCBjb25maWd1cmF0aW9uIGFuZCBwaW5wb2ludCBhbnkgcG90ZW50aWFsIGlzc3VlcyBvciB1bmRlcnN0YW5kIHRoZSByYXRpb25hbGUgYmVoaW5kIGNlcnRhaW4gc2V0dGluZ3MsIGdpdmVuIG15IGV4cGVydGlzZSBpbiB0aGUgZmllbGQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ0NzQ2LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMTI6NDg6MTMuMTI3NDM0MzUyWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgzMjQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogSVNDXFxuICAgMjpcXHRjb25maWcgQVRIX0NPTU1PTlxcbiAgIDM6XFx0XFx0dHJpc3RhdGVcXG4gICA0OlxcdFxcbiAgIDU6XFx0Y29uZmlnIFdMQU5fVkVORE9SX0FUSFxcbiAgIDY6XFx0XFx0Ym9vbCBcXFwiQXRoZXJvcy9RdWFsY29tbSBkZXZpY2VzXFxcIlxcbiAgIDc6XFx0XFx0ZGVmYXVsdCB5XFxuICAgODpcXHRcXHRoZWxwXFxuICAgOTpcXHRcXHQgIElmIHlvdSBoYXZlIGEgd2lyZWxlc3MgY2FyZCBiZWxvbmdpbmcgdG8gdGhpcyBjbGFzcywgc2F5IFkuXFxuICAxMDpcXHRcXG4gIDExOlxcdFxcdCAgTm90ZSB0aGF0IHRoZSBhbnN3ZXIgdG8gdGhpcyBxdWVzdGlvbiBkb2Vzbid0IGRpcmVjdGx5IGFmZmVjdCB0aGVcXG4gIDEyOlxcdFxcdCAga2VybmVsOiBzYXlpbmcgTiB3aWxsIGp1c3QgY2F1c2UgdGhlIGNvbmZpZ3VyYXRvciB0byBza2lwIGFsbCB0aGVcXG4gIDEzOlxcdFxcdCAgcXVlc3Rpb25zIGFib3V0IHRoZXNlIGNhcmRzLiBJZiB5b3Ugc2F5IFksIHlvdSB3aWxsIGJlIGFza2VkIGZvclxcbiAgMTQ6XFx0XFx0ICB5b3VyIHNwZWNpZmljIGNhcmQgaW4gdGhlIGZvbGxvd2luZyBxdWVzdGlvbnMuXFxuICAxNTpcXHRcXG4gIDE2OlxcdFxcdCAgRm9yIG1vcmUgaW5mb3JtYXRpb24gYW5kIGRvY3VtZW50YXRpb24gb24gdGhpcyBtb2R1bGUgeW91IGNhbiB2aXNpdDpcXG4gIDE3OlxcdFxcbiAgMTg6XFx0XFx0ICBodHRwczovL3dpcmVsZXNzLndpa2kua2VybmVsLm9yZy9lbi91c2Vycy9Ecml2ZXJzL2F0aFxcbiAgMTk6XFx0XFxuICAyMDpcXHRcXHQgIEZvciBpbmZvcm1hdGlvbiBvbiBhbGwgQXRoZXJvcyB3aXJlbGVzcyBkcml2ZXJzIHZpc2l0OlxcbiAgMjE6XFx0XFxuICAyMjpcXHRcXHQgIGh0dHBzOi8vd2lyZWxlc3Mud2lraS5rZXJuZWwub3JnL2VuL3VzZXJzL0RyaXZlcnMvQXRoZXJvc1xcbiAgMjM6XFx0XFxuICAyNDpcXHRpZiBXTEFOX1ZFTkRPUl9BVEhcXG4gIDI1OlxcdFxcbiAgMjY6XFx0Y29uZmlnIEFUSF9ERUJVR1xcbiAgMjc6XFx0XFx0Ym9vbCBcXFwiQXRoZXJvcyB3aXJlbGVzcyBkZWJ1Z2dpbmdcXFwiXFxuICAyODpcXHRcXHRoZWxwXFxuICAyOTpcXHRcXHQgIFNheSBZLCBpZiB5b3Ugd2FudCB0byBkZWJ1ZyBhdGhlcm9zIHdpcmVsZXNzIGRyaXZlcnMuXFxuICAzMDpcXHRcXHQgIFJpZ2h0IG5vdyBvbmx5IGF0aDlrIG1ha2VzIHVzZSBvZiB0aGlzLlxcbiAgMzE6XFx0XFxuICAzMjpcXHRjb25maWcgQVRIX1RSQUNFUE9JTlRTXFxuICAzMzpcXHRcXHRib29sIFxcXCJBdGhlcm9zIHdpcmVsZXNzIHRyYWNpbmdcXFwiXFxuICAzNDpcXHRcXHRkZXBlbmRzIG9uIEFUSF9ERUJVR1xcbiAgMzU6XFx0XFx0ZGVwZW5kcyBvbiBFVkVOVF9UUkFDSU5HXFxuICAzNjpcXHRcXHRoZWxwXFxuICAzNzpcXHRcXHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgdHJhY2Vwb2ludHMgZm9yIGF0aGVyb3Mgd2lyZWxlc3MgZHJpdmVycy5cXG4gIDM4OlxcdFxcdCAgQ3VycmVudGx5LCBhdGg5ayBtYWtlcyB1c2Ugb2YgdGhpcyBmYWNpbGl0eS5cXG4gIDM5OlxcdFxcbiAgNDA6XFx0Y29uZmlnIEFUSF9SRUdfRFlOQU1JQ19VU0VSX1JFR19ISU5UU1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQxMjo0ODoxMy4xMjc1MTkyNjFaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDI2MzI1MzI3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgYXRoOWtfaHRjIERyaXZlciBEZXBlbmRlbmNpZXMgYW5kIFN5bWJvbCBTY29wZSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93biBzeXN0ZW1hdGljYWxseS4gRmlyc3QsIEkgbmVlZCB0byBjb25maXJtIHRoZSBjb3JlIGRlcGVuZGVuY2llcy4gSXQgbG9va3MgbGlrZSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZTogYFVTQmAsIGBNQUM4MDIxMWAsIGBBVEg5S19IVENgLCBhbmQgYFdMQU5fVkVORE9SX0FUSGAuIFNwZWNpZmljYWxseSwgYENPTkZJR19BVEg5S19IVENgIGFwcGVhcnMgdG8gYmUgdGhlIHByaW1hcnkgY29uZmlndXJhdGlvbiBvcHRpb24sIGFuZCBJIGFsc28gbmVlZCB0byBlbnN1cmUgdGhhdCBgQ09ORklHX1VTQmAsIGBDT05GSUdfTUFDODAyMTFgLCBhbmQgYENPTkZJR19XTEFOX1ZFTkRPUl9BVEhgIGFyZSBhbGwgZW5hYmxlZC5cblxuTm93LCBsZXQncyBkcmlsbCBkb3duIGludG8gdGhlIGtleSBzeW1ib2xzIHRoYXQgYXJlIGRpcmVjdGx5IGltcGFjdGVkIG9yIHN0cm9uZ2x5IGNvbm5lY3RlZCB0byB0aGlzIGNvZGUuIEl0IHNlZW1zIGxpa2UgdGhlIGZvY3VzIGlzIG9uIHRoZXNlOlxuXG4qICAgYGhpZl91c2Jfc2VuZF9yZWdvdXRgOiBUaGlzIG9uZSB3YXMgZGlyZWN0bHkgbW9kaWZpZWQsIHNwZWNpZmljYWxseSB3aXRoIHRoZSBhZGRpdGlvbiBvZiBhIGBXQVJOX09OQ0VgIGNoZWNrLlxuKiAgIGBhdGg5a19yZWdfcm13X2J1ZmZlcmA6IFRoaXMgd2FzIGRpcmVjdGx5IG1vZGlmaWVkLCB3aGVyZSB0aGVyZSB3YXMgYSBmaXggbWFkZSBmb3IgYSByZWdpc3Rlcl9ybXcgc2l6ZW9mIGNhbGN1bGF0aW9uLlxuKiAgIGBhdGg5a19yZWdfcm13YDogVGhpcyBpcyBhIGNhbGxlciBvZiBgYXRoOWtfcmVnX3Jtd19idWZmZXJgLCBzbyBpdCdzIHJlbGV2YW50IGluIHRlcm1zIG9mIGNvbnRyb2wgZmxvdy5cbiogICBgYXRoOWtfcmVnX3Jtd19mbHVzaGA6IFRoaXMgb25lIGlzIHJlc3BvbnNpYmxlIGZvciBmbHVzaGluZyB0aGUgYnVmZmVyLCBzbyBpdCdzIGltcG9ydGFudCBmb3IgdGhlIG92ZXJhbGwgcmVnaXN0ZXIgbW9kaWZpY2F0aW9uIHByb2Nlc3MuXG4qICAgYGhpZl91c2Jfc2VuZGA6IFRoaXMgb25lIGNhbGxzIGBoaWZfdXNiX3NlbmRfcmVnb3V0YC5cblxuSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlIGFuZCB2aXNpYmlsaXR5IG9mIHRoZXNlIGZ1bmN0aW9ucyDigJMgYXJlIHRoZXkgc3RhdGljLCBleHBvcnRlZCwgb3IgcGFydCBvZiB0aGUgYmluYXJ5IHN5bWJvbHM/IEV2ZW4gc3RhdGljIGZ1bmN0aW9ucywgaWYgbm90IGlubGluZWQsIGNvbnRyaWJ1dGUgdG8gdGhlIHN5bWJvbCBjb3ZlcmFnZSwgc28gdGhleSdyZSB3b3J0aCBpbnZlc3RpZ2F0aW5nLiBMZXQncyBzdGFydCB3aXRoIGBhdGg5a19yZWdfcm13X2J1ZmZlcmAuIFllcywgaXQgaXMgc3RhdGljIHZvaWQuIEFuZCBgaGlmX3VzYl9zZW5kX3JlZ291dGAgaXMgc3RhdGljIGludC4gQW5kIGBoaWZfdXNiX3NlbmRgIGlzIGFsc28gc3RhdGljIGluIGBoaWZfdXNiLmNgLCBidXQgaXQncyBhIGNhbGxiYWNrLCBkZWZpbmVkIHVuZGVyIGBoaWZfb3BzLVx1MDAzZXNlbmRgLlxuXG5UaGlzIG1lYW5zIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyBgaGlmX2Rldi1cdTAwM2VoaWZfb3BzYCBvciB0aGUgYGhpZl91c2JgIGNhbGxiYWNrcyBhcmUgcmVnaXN0ZXJlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBzdGF0aWMgZnVuY3Rpb25zIGFyZSBhY3R1YWxseSB1c2VkIGFuZCBleHBvc2VkIHdpdGhpbiB0aGUgYnJvYWRlciBzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ1NDgwLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDE1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMTI6NDg6MTcuMzkwNzc2NTdaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkwMjk1MTQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImhpZl91c2Jfc2VuZFxcXFxiXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYz00NDM9c3RhdGljIHZvaWQgaGlmX3VzYl9zdG9wKHZvaWQgKmhpZl9oYW5kbGUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQ3MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjQ3MjpzdGF0aWMgaW50IGhpZl91c2Jfc2VuZCh2b2lkICpoaWZfaGFuZGxlLCB1OCBwaXBlX2lkLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNDczLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM9NTI4PXN0YXRpYyBzdHJ1Y3QgYXRoOWtfaHRjX2hpZiBoaWZfdXNiID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy01MzctXFx0LnN0YV9kcmFpbiA9IGhpZl91c2Jfc3RhX2RyYWluLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NTM4OlxcdC5zZW5kID0gaGlmX3VzYl9zZW5kLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNTM5LX07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDEyOjQ4OjE3LjQ4MTA3ODE5OFoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMTM3NzEwNjY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyB0aGUgSFRDL1dNSSBMYXllcidzIEludGVyYWN0aW9uIHdpdGggYGhpZl91c2Jfc2VuZGAqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiBob3cgdGhlIGBoaWZfdXNiX3NlbmRgIGZ1bmN0aW9uIGlzIGFjdHVhbGx5IGJlaW5nIGNhbGxlZCB3aXRoaW4gdGhlIEhUQy9XTUkgbGF5ZXIuIEl0J3MgY3J1Y2lhbCB0byB1bmRlcnN0YW5kIHRoaXMgaW50ZXJhY3Rpb24gZm9yIFsgKkluc2VydCB0aGUgcmVsZXZhbnQgdGVjaG5pY2FsIGZpZWxkLCBlLmcuLCBkZWJ1Z2dpbmcgYSBVU0IgY29tbXVuaWNhdGlvbiBpc3N1ZSwgb3B0aW1pemluZyBkYXRhIHRyYW5zZmVyLCBhbmFseXppbmcgZHJpdmVyIGJlaGF2aW9yLCBldGMuKiBdLiBJIG5lZWQgdG8gdHJhY2UgdGhlIGNhbGwgcGF0aHMgdG8gaWRlbnRpZnkgdGhlIGVudHJ5IHBvaW50cyBhbmQgdGhlIGNvbnRleHQgaW4gd2hpY2ggdGhpcyBmdW5jdGlvbiBpcyB1c2VkLiBNeSBpbml0aWFsIHBsYW4gaXMgdG8gZXhhbWluZSB0aGUgY29kZSB3aGVyZSBIVEMgYW5kIFdNSSBhcmUgaW50ZWdyYXRlZC4gSSdtIGdvaW5nIHRvIGZvbGxvdyB0aGUgZnVuY3Rpb24gY2FsbHMgZnJvbSB0aGUgaGlnaGVyIGxldmVsIHByb3RvY29scyB0byB0aGUgcG9pbnQgd2hlcmUgdGhlIGBoaWZfdXNiX3NlbmRgIGZ1bmN0aW9uIGlzIGludm9rZWQuIFRoaXMgd2lsbCBpbGx1bWluYXRlIHRoZSBleGFjdCBkYXRhIHRoYXQncyBiZWluZyBzZW50IG92ZXIgVVNCIGFuZCB0aGUgaW1wbGljYXRpb25zIGZvciBwZXJmb3JtYW5jZSBvciBhbnkgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcy4gSSBuZWVkIHRvIG5vdGUgYW55IHBhcmFtZXRlcnMgdGhhdCBhcmUgcGFzc2VkIGFuZCB1bmRlcnN0YW5kIGhvdyB0aGUgZGF0YSBpcyBiZWluZyBjb25zdHJ1Y3RlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDY3NDIsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQxMjo0ODoxOS42MTg3OTM4NjdaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg5MzY5OTU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIi1cXHUwMDNlaGlmLVxcdTAwM2VzZW5kXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19oc3QuYz0yMT1zdGF0aWMgaW50IGh0Y19pc3N1ZV9zZW5kKHN0cnVjdCBodGNfdGFyZ2V0ICp0YXJnZXQsIHN0cnVjdCBza19idWZmKiBza2IsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2hzdC5jLTM0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfaHN0LmM6MzU6XFx0c3RhdHVzID0gdGFyZ2V0LVxcdTAwM2VoaWYtXFx1MDAzZXNlbmQodGFyZ2V0LVxcdTAwM2VoaWZfZGV2LCBlbmRwb2ludC1cXHUwMDNldWxfcGlwZWlkLCBza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfaHN0LmMtMzYtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDEyOjQ4OjE5LjcwODE3MTgzNloiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo3NDQzNDY4MzAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgVmVyZGljdDogUmVhZHkgdG8gRXhlY3V0ZSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93biBmb3IgdGhlIGZ1enppbmcgcnVuLiBJJ3ZlIGdvdCBhIGxpc3Qgb2YgdGFyZ2V0IGZ1bmN0aW9uczogYGh0Y19pc3N1ZV9zZW5kYCwgYGh0Y19zZW5kYCwgYGF0aDlrX3dtaV9jbWRgLCBgYXRoOWtfcmVnX3Jtd2AsIGBhdGg5a19yZWdfcm13X2J1ZmZlcmAsIGBhdGg5a19yZWdfcm13X2ZsdXNoYCwgYGhpZl91c2Jfc2VuZGAsIGFuZCBgaGlmX3VzYl9zZW5kX3JlZ291dGAuXG5cbkkgbmVlZCB0byBuYWlsIGRvd24gdGhlIHBhcmFtZXRlcnMgZm9yIGBzZXQtcmVzdWx0c2AuIEZpcnN0LCBgV29ydGhGdXp6aW5nYD8gQWJzb2x1dGVseSwgdHJ1ZS4gVGhlIGBSZWFzb25pbmdgIHdpbGwgYmUgYSBjb25jaXNlIGV4cGxhbmF0aW9uLCBhbmQgdGhpcyBpcyB3aGF0IEknbSB0aGlua2luZzogVGhlIHBhdGNoIGludHJvZHVjZXMgbmV3IGVycm9yIGhhbmRsaW5nIHdpdGggYSBgV0FSTl9PTkNFYCBpbiBgaGlmX3VzYl9zZW5kX3JlZ291dGAgdG8gcHJldmVudCBzZW5kaW5nIHBhY2tldHMgb2YgYSBzcGVjaWZpYyBsZW5ndGgsIHR3ZWFrcyBhIHN0cnVjdHVyZSBzaXplIGNhbGN1bGF0aW9uIGluIGBhdGg5a19yZWdfcm13X2J1ZmZlcmAsIGFuZCByZWR1Y2VzIGBNQVhfUk1XX0NNRF9OVU1CRVJgLiAgVGhpcyBkcml2ZXIsIGBhdGg5a19odGNgLCBpcyBhY2Nlc3NpYmxlIHZpYSBlbXVsYXRlZCBVU0IgZGV2aWNlcyAobGlrZSBSYXcgR2FkZ2V0KSwgYW5kIHRoZXNlIGNoYW5nZXMgd2FycmFudCBmdXp6aW5nIHRvIG1ha2Ugc3VyZSBldmVyeXRoaW5nJ3MgY29ycmVjdC5cblxuTmV4dCwgdGhlIGBGb2N1c1N5bWJvbHNgLiAgSSd2ZSBnb3QgYSBzaG9ydGxpc3QgZnJvbSBhYm92ZTogYGhpZl91c2Jfc2VuZF9yZWdvdXRgLCBgYXRoOWtfcmVnX3Jtd19idWZmZXJgLCBgYXRoOWtfcmVnX3Jtd19mbHVzaGAsIGBhdGg5a19yZWdfcm13YCwgYW5kIGBoaWZfdXNiX3NlbmRgLiBUaGV5J3JlIHNwZWNpZmljIGFuZCBub24tdWJpcXVpdG91cywganVzdCBsaWtlIHdlIHdhbnQuXG5cblRoZW4sIHRoZSBgRW5hYmxlQ29uZmlnc2AuICBXZSBuZWVkIHRoZXNlIGtlcm5lbCBjb25maWcgZmxhZ3MsIHdpdGhvdXQgdGhlIGBDT05GSUdfYCBwcmVmaXg6IGBBVEg5S19IVENgLCBgVVNCYCwgYE1BQzgwMjExYCwgYW5kIGBXTEFOX1ZFTkRPUl9BVEhgLiBJJ3ZlIG1hZGUgc3VyZSB0byByZXZpZXcgdGhlIGluc3RydWN0aW9uczogdGhlIGdvYWwgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIG5ldyBidWdzLCBhbmQgdHJpZ2dlcmVkIGFzc2VydGlvbnMuIFRoZSBuZXcgb3IgY2hhbmdlZCBhc3NlcnRpb25zIGFyZSAqa2V5KiDigJMgd2UgbmVlZCB0byBmdXp6IHRob3NlIHRvIG1ha2Ugc3VyZSB0aGV5J3JlIHNvbGlkLiBBbmQgdGhpcyBkcml2ZXIgaXMgcmVhY2hhYmxlIHZpYSBVU0IuIEFsc28sIEkndmUgY29uZmlybWVkIHRoYXQgdGhlIGZvY3VzIHN5bWJvbHMgYXJlIHNwZWNpZmljLlxuXG5MZXQncyBkb3VibGUtY2hlY2sgYWxsIG9mIHRoaXMsIG9uZSBsYXN0IHRpbWUuXG5cbkNvbmZpZ3M6IGBBVEg5S19IVENgLCBgVVNCYCwgYE1BQzgwMjExYCwgYFdMQU5fVkVORE9SX0FUSGAg4oCTIGNoZWNrLlxuXG5TeW1ib2xzOiBgaGlmX3VzYl9zZW5kX3JlZ291dGAsIGBhdGg5a19yZWdfcm13X2J1ZmZlcmAsIGBhdGg5a19yZWdfcm13X2ZsdXNoYCwgYGF0aDlrX3JlZ19ybXdgLCBgaGlmX3VzYl9zZW5kYCDigJMgY2hlY2suXG5cbk15IHJlYXNvbmluZyBzdGlsbCBob2xkczogdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgYFdBUk5fT05DRWAgaW4gYGhpZl91c2Jfc2VuZF9yZWdvdXRgLCBzdHJ1Y3R1cmUgZml4ZXMgaW4gYGF0aDlrX3JlZ19ybXdfYnVmZmVyYCBhbmQgcmVkdWNlcyBgTUFYX1JNV19DTURfTlVNQkVSYC4gVGhlIGRyaXZlciAoYGF0aDlrX2h0Y2ApIGlzIHJlYWNoYWJsZSB0aHJvdWdoIGVtdWxhdGVkIFVTQiwgYW5kIHdlIG5lZWQgdG8gZnV6eiB0aGUgbmV3IGFzc2VydGlvbiBhbmQgbW9kaWZpZWQgYnVmZmVyIGhhbmRsaW5nIHRvIHByZXZlbnQgcmVncmVzc2lvbnMuXG5cbkFscmlnaHQsIGV2ZXJ5dGhpbmcncyBhY2N1cmF0ZSBhbmQgcmVhZHkgdG8gZ28uIFRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NzE3OSwiT3V0cHV0VG9rZW5zIjoyNDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMTI6NDg6MjcuMTUxNjQzNzc4WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE2NDg1MjQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJBVEg5S19IVENcIixcbiAgICBcIlVTQlwiLFxuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIldMQU5fVkVORE9SX0FUSFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImhpZl91c2Jfc2VuZF9yZWdvdXRcIixcbiAgICBcImF0aDlrX3JlZ19ybXdfYnVmZmVyXCIsXG4gICAgXCJhdGg5a19yZWdfcm13X2ZsdXNoXCIsXG4gICAgXCJhdGg5a19yZWdfcm13XCIsXG4gICAgXCJoaWZfdXNiX3NlbmRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgVVNCIHdpcmVsZXNzIGRyaXZlciBhdGg5a19odGMsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgVVNCIGdhZGdldC9kZXZpY2UgZW11bGF0aW9uIGluIHN5emthbGxlci4gVGhlIGNoYW5nZXMgYWRkIGEgbmV3IFdBUk5fT05DRSBydW50aW1lIGFzc2VydGlvbiBhbmQgY2hlY2sgaW4gaGlmX3VzYl9zZW5kX3JlZ291dCB0byBwcmV2ZW50IHNlbmRpbmcgcGFja2V0cyB3aG9zZSBsZW5ndGggaXMgYW4gZXhhY3QgbXVsdGlwbGUgb2YgdGhlIFVTQiBtYXhwYWNrZXQgc2l6ZSwgY29ycmVjdCB0aGUgZWxlbWVudCBzaXplIGNhbGN1bGF0aW9uIGluIGF0aDlrX3JlZ19ybXdfYnVmZmVyIGZyb20gc2l6ZW9mKHN0cnVjdCByZWdpc3Rlcl93cml0ZSkgdG8gc2l6ZW9mKHN0cnVjdCByZWdpc3Rlcl9ybXcpLCBhbmQgcmVkdWNlIE1BWF9STVdfQ01EX05VTUJFUi4gRnV6emluZyBpcyB3YXJyYW50ZWQgdG8gdGVzdCB0aGUgbmV3IGFzc2VydGlvbiBhbmQgYWx0ZXJlZCBSTVcgY29tbWFuZCBiYXRjaGluZyBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJBVEg5S19IVENcIixcbiAgICBcIlVTQlwiLFxuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIldMQU5fVkVORE9SX0FUSFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImhpZl91c2Jfc2VuZF9yZWdvdXRcIixcbiAgICBcImF0aDlrX3JlZ19ybXdfYnVmZmVyXCIsXG4gICAgXCJhdGg5a19yZWdfcm13X2ZsdXNoXCIsXG4gICAgXCJhdGg5a19yZWdfcm13XCIsXG4gICAgXCJoaWZfdXNiX3NlbmRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgVVNCIHdpcmVsZXNzIGRyaXZlciBhdGg5a19odGMsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgVVNCIGdhZGdldC9kZXZpY2UgZW11bGF0aW9uIGluIHN5emthbGxlci4gVGhlIGNoYW5nZXMgYWRkIGEgbmV3IFdBUk5fT05DRSBydW50aW1lIGFzc2VydGlvbiBhbmQgY2hlY2sgaW4gaGlmX3VzYl9zZW5kX3JlZ291dCB0byBwcmV2ZW50IHNlbmRpbmcgcGFja2V0cyB3aG9zZSBsZW5ndGggaXMgYW4gZXhhY3QgbXVsdGlwbGUgb2YgdGhlIFVTQiBtYXhwYWNrZXQgc2l6ZSwgY29ycmVjdCB0aGUgZWxlbWVudCBzaXplIGNhbGN1bGF0aW9uIGluIGF0aDlrX3JlZ19ybXdfYnVmZmVyIGZyb20gc2l6ZW9mKHN0cnVjdCByZWdpc3Rlcl93cml0ZSkgdG8gc2l6ZW9mKHN0cnVjdCByZWdpc3Rlcl9ybXcpLCBhbmQgcmVkdWNlIE1BWF9STVdfQ01EX05VTUJFUi4gRnV6emluZyBpcyB3YXJyYW50ZWQgdG8gdGVzdCB0aGUgbmV3IGFzc2VydGlvbiBhbmQgYWx0ZXJlZCBSTVcgY29tbWFuZCBiYXRjaGluZyBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMTI6NDg6MjcuMjY4MTM5NjM2WiIsIlNlcSI6MjcsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODI3MDgyMzU4NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDEyOjQ4OjI3LjI2ODg1OTc1NloiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjE4MjcwMDk2ODI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRyZXNzZXMgYSBVU0IgY29tbXVuaWNhdGlvbiBpc3N1ZSBpbiB0aGUgYXRoOWsgZHJpdmVyIHdoZXJlIFVTQiBwYWNrZXRzIHRoYXQgYXJlIGV4YWN0IG11bHRpcGxlcyBvZiBlbmRwb2ludCBtYXhwYWNrZXQgc2l6ZSBjYXVzZSBmaXJtd2FyZSBkZWxpdmVyeSBzdGFsbHMuIFRoZSBjaGFuZ2VzIGNvbnNpc3Qgb2Y6XFxuMS4gQWRkaW5nIGEgY2hlY2sgaW4gYGhpZl91c2Jfc2VuZF9yZWdvdXQoKWAgdG8gd2FybiBhbmQgcmVqZWN0IHNrYnMgd2hvc2UgbGVuZ3RoIGlzIGFuIGV4YWN0IG11bHRpcGxlIG9mIHRoZSBlbmRwb2ludCBtYXhwYWNrZXQgc2l6ZS5cXG4yLiBDb3JyZWN0aW5nIHRoZSBidWZmZXIgc2l6ZSBjYWxjdWxhdGlvbiBpbiBgYXRoOWtfcmVnX3Jtd19idWZmZXIoKWAgZnJvbSBgc2l6ZW9mKHN0cnVjdCByZWdpc3Rlcl93cml0ZSlgICg4IGJ5dGVzKSB0byBgc2l6ZW9mKHN0cnVjdCByZWdpc3Rlcl9ybXcpYCAoMTIgYnl0ZXMpLlxcbjMuIExvd2VyaW5nIGBNQVhfUk1XX0NNRF9OVU1CRVJgIGZyb20gMTUgdG8gMTQgaW4gYHdtaS5oYCB0byBhdm9pZCA2NC1ieXRlIGFsaWduZWQgVVNCIHBheWxvYWRzLlxcblxcblJlZ2FyZGluZyBtZW1vcnkgaW5pdGlhbGl6YXRpb246XFxuLSBBbGwgZmllbGRzIChgcmVnYCwgYHNldGAsIGBjbHJgKSBvZiB0aGUgYHN0cnVjdCByZWdpc3Rlcl9ybXdgIGFycmF5IGVsZW1lbnRzIGluIGBwcml2LVxcdTAwM2V3bWktXFx1MDAzZW11bHRpX3Jtd2AgYXJlIGV4cGxpY2l0bHkgaW5pdGlhbGl6ZWQgYmVmb3JlIGJlaW5nIHNlbnQgdmlhIGBhdGg5a193bWlfY21kKClgLlxcbi0gTm8gdXNlci1zcGFjZSBjb3B5IHBhdGhzIG9yIHVuaW5pdGlhbGl6ZWQga2VybmVsIHN0cnVjdHVyZSBmaWVsZHMgYXJlIGV4cG9zZWQgb3IgbW9kaWZpZWQuXFxuLSBObyBicmFuY2ggY29uZGl0aW9ucyByZWx5IG9uIHVuaW5pdGlhbGl6ZWQgdmFsdWVzLlxcblxcblRoZXJlZm9yZSwgdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLCBhbmQgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA0YTg3MmU4NTkxN2Q2NzA0MDA3NTE5MTk3ODI0NmYzOWIwYjk1ZTQ3XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBTZXAgNiAxMjo0NzozMyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jXG5pbmRleCBkMzQ5MWZmMDhlNmVmLi40OTMwM2M3ZTNmZWY0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuY1xuQEAgLTk5LDEwICs5OSwxNyBAQCBzdGF0aWMgdm9pZCBoaWZfdXNiX3JlZ291dF9jYihzdHJ1Y3QgdXJiICp1cmIpXG4gc3RhdGljIGludCBoaWZfdXNiX3NlbmRfcmVnb3V0KHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2RldixcbiBcdFx0XHQgICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiB7XG4rXHR1MTYgbWF4cGFja2V0ID0gdXNiX21heHBhY2tldChoaWZfZGV2LVx1MDAzZXVkZXYsXG4rXHRcdFx0XHQgICAgICB1c2Jfc25kaW50cGlwZShoaWZfZGV2LVx1MDAzZXVkZXYsXG4rXHRcdFx0XHRcdFx0ICAgICBVU0JfUkVHX09VVF9QSVBFKSk7XG4gXHRzdHJ1Y3QgdXJiICp1cmI7XG4gXHRzdHJ1Y3QgY21kX2J1ZiAqY21kO1xuIFx0aW50IHJldCA9IDA7XG4gXG4rXHRpZiAoV0FSTl9PTkNFKG1heHBhY2tldCBcdTAwMjZcdTAwMjYgc2tiLVx1MDAzZWxlbiAlIG1heHBhY2tldCA9PSAwLFxuK1x0XHQgICAgICBcIiV1LWJ5dGUgY29tbWFuZCBmaWxscyB3aG9sZSBVU0IgcGFja2V0c1xcblwiLCBza2ItXHUwMDNlbGVuKSlcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXG4gXHR1cmIgPSB1c2JfYWxsb2NfdXJiKDAsIEdGUF9LRVJORUwpO1xuIFx0aWYgKHVyYiA9PSBOVUxMKVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmNcbmluZGV4IDZkZTc4YWU4NTcyNjguLjBiNDlkMmNjOTlmMGIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuY1xuQEAgLTQwNSw3ICs0MDUsNyBAQCBzdGF0aWMgdm9pZCBhdGg5a19yZWdfcm13X2J1ZmZlcih2b2lkICpod19wcml2LFxuIFx0aWYgKHByaXYtXHUwMDNld21pLVx1MDAzZW11bHRpX3Jtd19pZHggPT0gTUFYX1JNV19DTURfTlVNQkVSKSB7XG4gXHRcdHIgPSBhdGg5a193bWlfY21kKHByaXYtXHUwMDNld21pLCBXTUlfUkVHX1JNV19DTURJRCxcbiBcdFx0XHQgICh1OCAqKSBcdTAwMjZwcml2LVx1MDAzZXdtaS1cdTAwM2VtdWx0aV9ybXcsXG4tXHRcdFx0ICBzaXplb2Yoc3RydWN0IHJlZ2lzdGVyX3dyaXRlKSAqIHByaXYtXHUwMDNld21pLVx1MDAzZW11bHRpX3Jtd19pZHgsXG4rXHRcdFx0ICBzaXplb2Yoc3RydWN0IHJlZ2lzdGVyX3JtdykgKiBwcml2LVx1MDAzZXdtaS1cdTAwM2VtdWx0aV9ybXdfaWR4LFxuIFx0XHRcdCAgKHU4ICopIFx1MDAyNnJzcF9zdGF0dXMsIHNpemVvZihyc3Bfc3RhdHVzKSxcbiBcdFx0XHQgIDEwMCk7XG4gXHRcdGlmICh1bmxpa2VseShyKSkge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaFxuaW5kZXggNWMzYjcxMGI4ZjMxOS4uMjU2ZjQ2MDk4YTZiMSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oXG5AQCAtMTI2LDcgKzEyNiw4IEBAIGVudW0gd21pX2V2ZW50X2lkIHtcbiB9O1xuIFxuICNkZWZpbmUgTUFYX0NNRF9OVU1CRVIgNjJcbi0jZGVmaW5lIE1BWF9STVdfQ01EX05VTUJFUiAxNVxuKy8qIDE1IGVudHJpZXMgbWFrZSAxOTIgYnl0ZXMsIHRocmVlIGZ1bGwgVVNCIHBhY2tldHM6IG5ldmVyIGRlbGl2ZXJlZC4gKi9cbisjZGVmaW5lIE1BWF9STVdfQ01EX05VTUJFUiAxNFxuIFxuIHN0cnVjdCByZWdpc3Rlcl93cml0ZSB7XG4gXHRfX2JlMzIgcmVnO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMTI6NDg6MjcuMjY4ODY0ODM2WiIsIlNlcSI6MjksIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQ4NjY1MjQyMTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgV0xBTiBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIHRoZSBBdGhlcm9zIGF0aDlrIHdpcmVsZXNzIGRyaXZlciwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgVVNCIGhvc3QgaW50ZXJmYWNlIChgaGlmX3VzYi5jYCksIHRoZSBIVEMgZHJpdmVyIGluaXRpYWxpemF0aW9uIChgaHRjX2Rydl9pbml0LmNgKSwgYW5kIHRoZSBXTUkgaGVhZGVyIChgd21pLmhgKS4gTGV0J3MgYnJlYWsgZG93biB0aGVzZSBjaGFuZ2VzIHRvIHNlZSB3aGF0J3MgZ29pbmcgb24uXG5cbkZpcnN0LCBpbiBgaGlmX3VzYl9zZW5kX3JlZ291dGAsIHRoZXJlJ3MgYSBuZXcgc2FuaXR5IGNoZWNrLiBJdCdzIGxvb2tpbmcgYXQgdGhlIFVTQiBwYWNrZXQgc2l6ZSBiZWluZyB1c2VkIGZvciByZWdpc3RlciBvdXRwdXQuIEl0IGFwcGVhcnMgdGhlIGNvZGUgbm93IGNoZWNrcyBgdXNiX21heHBhY2tldGAgdG8gZGV0ZXJtaW5lIHRoZSBtYXhpbXVtIHBhY2tldCBzaXplIGZvciB0aGUgb3V0cHV0IGludGVycnVwdCBwaXBlLiBJZiB0aGUgY29tbWFuZCwgYHNrYi1cdTAwM2VsZW5gLCBwZXJmZWN0bHkgZmlsbHMgYSB3aG9sZSBVU0IgcGFja2V0IChtZWFuaW5nIGl0J3MgYSBtdWx0aXBsZSBvZiBgbWF4cGFja2V0YCkgKndpdGhvdXQqIGEgc2hvcnQgcGFja2V0IG9yIHplcm8tbGVuZ3RoIHBhY2tldCBiZWluZyBzZW50LCB0aGVuIGl0IHJldHVybnMgYC1FSU5WQUxgLiBUaGlzIGlzIGludGVyZXN0aW5nOyBpdCdzIGEgcG90ZW50aWFsIGVycm9yIGNvbmRpdGlvbiBiZWluZyBmbGFnZ2VkLCBwcm9iYWJseSByZWxhdGVkIHRvIHNvbWUgZWRnZSBjYXNlIHdpdGggVVNCIHRyYW5zZmVycyB0aGF0IHdhc24ndCBiZWluZyBoYW5kbGVkIGJlZm9yZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgKndoeSogdGhpcyBmdWxsLXBhY2tldCBjb25kaXRpb24gaXMgcHJvYmxlbWF0aWMuIElzIGl0IGEgcG90ZW50aWFsIGVuZHBvaW50IGJ1ZmZlcmluZyBpc3N1ZSBvciBwZXJoYXBzIGEgc2lnbmFsaW5nIHByb2JsZW0gcmVsYXRlZCB0byBhIHBhcnRpY3VsYXIgaGFyZHdhcmUgcXVpcms/IEkgbmVlZCB0byBkaWcgZGVlcGVyLlxuXG5Nb3Zpbmcgb24gdG8gYGh0Y19kcnZfaW5pdC5jYCwgaXQncyBtb2RpZnlpbmcgdGhlIGBhdGg5a19yZWdfcm13X2J1ZmZlcmAgYWxsb2NhdGlvbi4gVGhlIHNpemUgY2FsY3VsYXRpb24gaXMgY2hhbmdpbmcgZnJvbSB1c2luZyBgc3RydWN0IHJlZ2lzdGVyX3dyaXRlYCB0byBgc3RydWN0IHJlZ2lzdGVyX3Jtd2AuIFRoaXMgaXMgYSBjcnVjaWFsIGRldGFpbC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCB0aGUgZGlmZmVyZW5jZSBpcyBiZXR3ZWVuIHRoZXNlIHR3byBzdHJ1Y3R1cmVzLiBBIHNpemUgY2hhbmdlIGluZGljYXRlcyBlaXRoZXIgYSBkYXRhIHN0cnVjdHVyZSByZXZpc2lvbiwgYSBidWcgZml4LCBvciBhbiBvcHRpbWl6YXRpb24uIElzIHRoZXJlIGEgbmV3IGZpZWxkIG9yIGEgY2hhbmdlZCBmaWVsZCB3aXRoaW4gYHN0cnVjdCByZWdpc3Rlcl9ybXdgIGNvbXBhcmVkIHRvIGBzdHJ1Y3QgcmVnaXN0ZXJfd3JpdGVgPyBJJ2xsIG5lZWQgdG8gY29tcGFyZSB0aGUgZGVmaW5pdGlvbnMgdG8gdW5kZXJzdGFuZCB0aGUgbWVtb3J5IGltcGxpY2F0aW9ucy5cblxuRmluYWxseSwgaW4gYHdtaS5oYCwgdGhlcmUncyBhIHNpbXBsZSBjaGFuZ2UsIGJ1dCBpbXBvcnRhbnQsIGBNQVhfUk1XX0NNRF9OVU1CRVJgIGlzIGJlaW5nIHJlZHVjZWQgZnJvbSAxNSB0byAxNC4gVGhpcyBhbG1vc3QgY2VydGFpbmx5IG1lYW5zIHRoYXQgdGhlcmUncyBhIGxpbWl0YXRpb24gb24gdGhlIG51bWJlciBvZiBSZWdpc3Rlci1Nb2RpZnktV3JpdGUgKFJNVykgY29tbWFuZHMgdGhhdCBjYW4gYmUgcXVldWVkIG9yIHByb2Nlc3NlZC4gSSdtIGN1cmlvdXMgYWJvdXQgdGhlIHJhdGlvbmFsZSBmb3IgdGhpcyBjaGFuZ2UuIERvZXMgaXQgaW5kaWNhdGUgYSBidWcgZml4LCBvciBpcyBpdCByZWxhdGVkIHRvIGhhcmR3YXJlIGNvbnN0cmFpbnRzIG9yIGEgV01JIHByb3RvY29sIGNoYW5nZT8gUGVyaGFwcyB0aGUgY29tbWFuZCBzbG90IGNvdW50IHdhcyBpbmNvcnJlY3QgdG8gYmVnaW4gd2l0aD9cblxuVG8gZ2V0IGEgYmV0dGVyIHBpY3R1cmUsIEknbGwgdXNlIGByZWFkLWZpbGVgIG9yIGBncmVwcGVyYCB0byBleGFtaW5lIGBodGNfZHJ2X2luaXQuY2AgYXJvdW5kIGxpbmUgNDA1ICh3aGVyZSB0aGUgYGF0aDlrX3JlZ19ybXdfYnVmZmVyYCBpcyBhbGxvY2F0ZWQpIGFuZCBgd21pLmhgIHRvIHNlZSB0aG9zZSBzdHJ1Y3R1cmUgZGVmaW5pdGlvbnMgYW5kIHRoZSBzdXJyb3VuZGluZyBjb2RlLiBUaGF0IHNob3VsZCBpbGx1bWluYXRlIHRoZSByZWFzb25zIGZvciB0aGVzZSBjaGFuZ2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzg5LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDEyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMTI6NDg6MzIuMTM1MzkyNjg1WiIsIlNlcSI6MzAsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MDc4OTExOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJyZWdpc3Rlcl9ybXdcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM9MzgzPXN0YXRpYyB2b2lkIGF0aDlrX3JlZ19ybXdfYnVmZmVyKHZvaWQgKmh3X3ByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmMtNDA3LVxcdFxcdFxcdCAgKHU4ICopIFxcdTAwMjZwcml2LVxcdTAwM2V3bWktXFx1MDAzZW11bHRpX3JtdyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM6NDA4OlxcdFxcdFxcdCAgc2l6ZW9mKHN0cnVjdCByZWdpc3Rlcl9ybXcpICogcHJpdi1cXHUwMDNld21pLVxcdTAwM2VtdWx0aV9ybXdfaWR4LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy00MDktXFx0XFx0XFx0ICAodTggKikgXFx1MDAyNnJzcF9zdGF0dXMsIHNpemVvZihyc3Bfc3RhdHVzKSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYz00MjI9c3RhdGljIHZvaWQgYXRoOWtfcmVnX3Jtd19mbHVzaCh2b2lkICpod19wcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jLTQzOS1cXHRcXHRcXHQgICh1OCAqKSBcXHUwMDI2cHJpdi1cXHUwMDNld21pLVxcdTAwM2VtdWx0aV9ybXcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jOjQ0MDpcXHRcXHRcXHQgIHNpemVvZihzdHJ1Y3QgcmVnaXN0ZXJfcm13KSAqIHByaXYtXFx1MDAzZXdtaS1cXHUwMDNlbXVsdGlfcm13X2lkeCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmMtNDQxLVxcdFxcdFxcdCAgKHU4ICopIFxcdTAwMjZyc3Bfc3RhdHVzLCBzaXplb2YocnNwX3N0YXR1cyksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM9NDY2PXN0YXRpYyB2b2lkIGF0aDlrX3JlZ19ybXdfc2luZ2xlKHZvaWQgKmh3X3ByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmMtNDcxLVxcdHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdiA9IGNvbW1vbi1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM6NDcyOlxcdHN0cnVjdCByZWdpc3Rlcl9ybXcgYnVmLCBidWZfcmV0O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy00NzMtXFx0aW50IHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaD0xMzI9c3RydWN0IHJlZ2lzdGVyX3dyaXRlIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaC0xMzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oOjEzNzpzdHJ1Y3QgcmVnaXN0ZXJfcm13IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmgtMTM4LVxcdF9fYmUzMiByZWc7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg9MTQ5PXN0cnVjdCB3bWkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oLTE3NS1cXHRhdG9taWNfdCBtX3Jtd19jbnQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oOjE3NjpcXHRzdHJ1Y3QgcmVnaXN0ZXJfcm13IG11bHRpX3Jtd1tNQVhfUk1XX0NNRF9OVU1CRVJdO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaC0xNzctXFx0dTMyIG11bHRpX3Jtd19pZHg7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDEyOjQ4OjMyLjIxNjE5MzE2NFoiLCJTZXEiOjMxLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxNzkzMjc4Njk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHNvbWUgYGF0aDlrYCBudWFuY2VzLCBzcGVjaWZpY2FsbHkgYXJvdW5kIHRoZSBIVEMgZHJpdmVyIGluaXRpYWxpemF0aW9uLiBNeSBmb2N1cyBpcyBvbiB1bmRlcnN0YW5kaW5nIHRoZSByZWdpc3RlciBtYW5pcHVsYXRpb24gcm91dGluZXMsIHNwZWNpZmljYWxseSBgYXRoOWtfcmVnX3Jtd19idWZmZXJgIGFuZCBgYXRoOWtfcmVnX3Jtd19mbHVzaGAuIEkgc3VzcGVjdCB0aGV5IHBsYXkgYSBrZXkgcm9sZSBpbiBob3cgdGhlIGRyaXZlciBoYW5kbGVzIHJlZ2lzdGVyIHJlYWRzLCBtb2RpZmljYXRpb25zLCBhbmQgd3JpdGUtYmFja3MsIGxpa2VseSBkdXJpbmcgaGFyZHdhcmUgc2V0dXAgYW5kIGluaXRpYWxpemF0aW9uLiBJIHNob3VsZCBmaW5kIHRoZXNlIHdpdGhpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jYC4gVW5kZXJzdGFuZGluZyB0aGVpciBwdXJwb3NlIGlzIGNydWNpYWwgdG8gZW5zdXJpbmcgcHJvcGVyIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24gYW5kIHByZXZlbnRpbmcgcG90ZW50aWFsIHJlZ2lzdGVyIGNvcnJ1cHRpb24gd2hpY2gsIGluIHR1cm4sIGlzIGtleSB0byBvdmVyYWxsIHBlcmZvcm1hbmNlIGFuZCBzdGFiaWxpdHkuIExldCdzIHNlZSB3aGF0IHRob3NlIGZ1bmN0aW9ucyBhcmUgZG9pbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ2MTUsIk91dHB1dFRva2VucyI6NDgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQxMjo0ODozNC4wMDk0NzcyMDlaIiwiU2VxIjozMiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMxODAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAzODAsXG4gIFwiTGluZUNvdW50XCI6IDcwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAzODA6XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2V3bWktXFx1MDAzZW11bHRpX3dyaXRlX211dGV4KTtcXG4gMzgxOlxcdH1cXG4gMzgyOlxcdFxcbiAzODM6XFx0c3RhdGljIHZvaWQgYXRoOWtfcmVnX3Jtd19idWZmZXIodm9pZCAqaHdfcHJpdixcXG4gMzg0OlxcdFxcdFxcdFxcdFxcdCB1MzIgcmVnX29mZnNldCwgdTMyIHNldCwgdTMyIGNscilcXG4gMzg1OlxcdHtcXG4gMzg2OlxcdFxcdHN0cnVjdCBhdGhfaHcgKmFoID0gaHdfcHJpdjtcXG4gMzg3OlxcdFxcdHN0cnVjdCBhdGhfY29tbW9uICpjb21tb24gPSBhdGg5a19od19jb21tb24oYWgpO1xcbiAzODg6XFx0XFx0c3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2ID0gY29tbW9uLVxcdTAwM2Vwcml2O1xcbiAzODk6XFx0XFx0dTMyIHJzcF9zdGF0dXM7XFxuIDM5MDpcXHRcXHRpbnQgcjtcXG4gMzkxOlxcdFxcbiAzOTI6XFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2cHJpdi1cXHUwMDNld21pLVxcdTAwM2VtdWx0aV9ybXdfbXV0ZXgpO1xcbiAzOTM6XFx0XFxuIDM5NDpcXHRcXHQvKiBTdG9yZSB0aGUgcmVnaXN0ZXIvdmFsdWUgKi9cXG4gMzk1OlxcdFxcdHByaXYtXFx1MDAzZXdtaS1cXHUwMDNlbXVsdGlfcm13W3ByaXYtXFx1MDAzZXdtaS1cXHUwMDNlbXVsdGlfcm13X2lkeF0ucmVnID1cXG4gMzk2OlxcdFxcdFxcdGNwdV90b19iZTMyKHJlZ19vZmZzZXQpO1xcbiAzOTc6XFx0XFx0cHJpdi1cXHUwMDNld21pLVxcdTAwM2VtdWx0aV9ybXdbcHJpdi1cXHUwMDNld21pLVxcdTAwM2VtdWx0aV9ybXdfaWR4XS5zZXQgPVxcbiAzOTg6XFx0XFx0XFx0Y3B1X3RvX2JlMzIoc2V0KTtcXG4gMzk5OlxcdFxcdHByaXYtXFx1MDAzZXdtaS1cXHUwMDNlbXVsdGlfcm13W3ByaXYtXFx1MDAzZXdtaS1cXHUwMDNlbXVsdGlfcm13X2lkeF0uY2xyID1cXG4gNDAwOlxcdFxcdFxcdGNwdV90b19iZTMyKGNscik7XFxuIDQwMTpcXHRcXG4gNDAyOlxcdFxcdHByaXYtXFx1MDAzZXdtaS1cXHUwMDNlbXVsdGlfcm13X2lkeCsrO1xcbiA0MDM6XFx0XFxuIDQwNDpcXHRcXHQvKiBJZiB0aGUgYnVmZmVyIGlzIGZ1bGwsIHNlbmQgaXQgb3V0LiAqL1xcbiA0MDU6XFx0XFx0aWYgKHByaXYtXFx1MDAzZXdtaS1cXHUwMDNlbXVsdGlfcm13X2lkeCA9PSBNQVhfUk1XX0NNRF9OVU1CRVIpIHtcXG4gNDA2OlxcdFxcdFxcdHIgPSBhdGg5a193bWlfY21kKHByaXYtXFx1MDAzZXdtaSwgV01JX1JFR19STVdfQ01ESUQsXFxuIDQwNzpcXHRcXHRcXHRcXHQgICh1OCAqKSBcXHUwMDI2cHJpdi1cXHUwMDNld21pLVxcdTAwM2VtdWx0aV9ybXcsXFxuIDQwODpcXHRcXHRcXHRcXHQgIHNpemVvZihzdHJ1Y3QgcmVnaXN0ZXJfcm13KSAqIHByaXYtXFx1MDAzZXdtaS1cXHUwMDNlbXVsdGlfcm13X2lkeCxcXG4gNDA5OlxcdFxcdFxcdFxcdCAgKHU4ICopIFxcdTAwMjZyc3Bfc3RhdHVzLCBzaXplb2YocnNwX3N0YXR1cyksXFxuIDQxMDpcXHRcXHRcXHRcXHQgIDEwMCk7XFxuIDQxMTpcXHRcXHRcXHRpZiAodW5saWtlbHkocikpIHtcXG4gNDEyOlxcdFxcdFxcdFxcdGF0aF9kYmcoY29tbW9uLCBXTUksXFxuIDQxMzpcXHRcXHRcXHRcXHRcXHRcXFwiUkVHSVNURVIgUk1XIEZBSUxFRCwgbXVsdGkgbGVuOiAlZFxcXFxuXFxcIixcXG4gNDE0OlxcdFxcdFxcdFxcdFxcdHByaXYtXFx1MDAzZXdtaS1cXHUwMDNlbXVsdGlfcm13X2lkeCk7XFxuIDQxNTpcXHRcXHRcXHR9XFxuIDQxNjpcXHRcXHRcXHRwcml2LVxcdTAwM2V3bWktXFx1MDAzZW11bHRpX3Jtd19pZHggPSAwO1xcbiA0MTc6XFx0XFx0fVxcbiA0MTg6XFx0XFxuIDQxOTpcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnByaXYtXFx1MDAzZXdtaS1cXHUwMDNlbXVsdGlfcm13X211dGV4KTtcXG4gNDIwOlxcdH1cXG4gNDIxOlxcdFxcbiA0MjI6XFx0c3RhdGljIHZvaWQgYXRoOWtfcmVnX3Jtd19mbHVzaCh2b2lkICpod19wcml2KVxcbiA0MjM6XFx0e1xcbiA0MjQ6XFx0XFx0c3RydWN0IGF0aF9odyAqYWggPSBod19wcml2O1xcbiA0MjU6XFx0XFx0c3RydWN0IGF0aF9jb21tb24gKmNvbW1vbiA9IGF0aDlrX2h3X2NvbW1vbihhaCk7XFxuIDQyNjpcXHRcXHRzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYgPSBjb21tb24tXFx1MDAzZXByaXY7XFxuIDQyNzpcXHRcXHR1MzIgcnNwX3N0YXR1cztcXG4gNDI4OlxcdFxcdGludCByO1xcbiA0Mjk6XFx0XFxuIDQzMDpcXHRcXHRpZiAodGVzdF9iaXQoSFRDX0ZXRkxBR19OT19STVcsIFxcdTAwMjZwcml2LVxcdTAwM2Vmd19mbGFncykpXFxuIDQzMTpcXHRcXHRcXHRyZXR1cm47XFxuIDQzMjpcXHRcXG4gNDMzOlxcdFxcdGF0b21pY19kZWMoXFx1MDAyNnByaXYtXFx1MDAzZXdtaS1cXHUwMDNlbV9ybXdfY250KTtcXG4gNDM0OlxcdFxcbiA0MzU6XFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2cHJpdi1cXHUwMDNld21pLVxcdTAwM2VtdWx0aV9ybXdfbXV0ZXgpO1xcbiA0MzY6XFx0XFxuIDQzNzpcXHRcXHRpZiAocHJpdi1cXHUwMDNld21pLVxcdTAwM2VtdWx0aV9ybXdfaWR4KSB7XFxuIDQzODpcXHRcXHRcXHRyID0gYXRoOWtfd21pX2NtZChwcml2LVxcdTAwM2V3bWksIFdNSV9SRUdfUk1XX0NNRElELFxcbiA0Mzk6XFx0XFx0XFx0XFx0ICAodTggKikgXFx1MDAyNnByaXYtXFx1MDAzZXdtaS1cXHUwMDNlbXVsdGlfcm13LFxcbiA0NDA6XFx0XFx0XFx0XFx0ICBzaXplb2Yoc3RydWN0IHJlZ2lzdGVyX3JtdykgKiBwcml2LVxcdTAwM2V3bWktXFx1MDAzZW11bHRpX3Jtd19pZHgsXFxuIDQ0MTpcXHRcXHRcXHRcXHQgICh1OCAqKSBcXHUwMDI2cnNwX3N0YXR1cywgc2l6ZW9mKHJzcF9zdGF0dXMpLFxcbiA0NDI6XFx0XFx0XFx0XFx0ICAxMDApO1xcbiA0NDM6XFx0XFx0XFx0aWYgKHVubGlrZWx5KHIpKSB7XFxuIDQ0NDpcXHRcXHRcXHRcXHRhdGhfZGJnKGNvbW1vbiwgV01JLFxcbiA0NDU6XFx0XFx0XFx0XFx0XFx0XFxcIlJFR0lTVEVSIFJNVyBGQUlMRUQsIG11bHRpIGxlbjogJWRcXFxcblxcXCIsXFxuIDQ0NjpcXHRcXHRcXHRcXHRcXHRwcml2LVxcdTAwM2V3bWktXFx1MDAzZW11bHRpX3Jtd19pZHgpO1xcbiA0NDc6XFx0XFx0XFx0fVxcbiA0NDg6XFx0XFx0XFx0cHJpdi1cXHUwMDNld21pLVxcdTAwM2VtdWx0aV9ybXdfaWR4ID0gMDtcXG4gNDQ5OlxcdFxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMTI6NDg6MzQuMDA5NjEyMjk4WiIsIlNlcSI6MzMsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM5MzYxNzAzNDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBhdGg5ayBSZWdpc3RlciBXcml0ZS9Nb2RpZnkgUHJvYmxlbSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gSW4gYGF0aDlrX3JlZ19ybXdfYnVmZmVyYCwgYmVmb3JlIHRoaXMgcGF0Y2gsIHdlIHdlcmUgcGFzc2luZyBgc2l6ZW9mKHN0cnVjdCByZWdpc3Rlcl93cml0ZSkgKiBwcml2LVx1MDAzZXdtaS1cdTAwM2VtdWx0aV9ybXdfaWR4YC4gIEEgYHN0cnVjdCByZWdpc3Rlcl93cml0ZWAgaXMgOCBieXRlcyDigJMganVzdCBgcmVnYCBhbmQgYHZhbGAuICBCdXQsIHRoZSBjb3JyZXNwb25kaW5nIGBhdGg5a19yZWdfcm13X2ZsdXNoYCB3YXMgYWxyZWFkeSB1c2luZyB0aGUgY29ycmVjdCBzaXplLCBgc2l6ZW9mKHN0cnVjdCByZWdpc3Rlcl9ybXcpICogcHJpdi1cdTAwM2V3bWktXHUwMDNlbXVsdGlfcm13X2lkeGAsIHdoaWNoIGlzIDEyIGJ5dGVzIGJlY2F1c2UgaXQgaW5jbHVkZXMgYHJlZ2AsIGBzZXRgLCBhbmQgYGNscmAuICBTbywgaW4gdGhlIGJ1ZmZlciBhbGxvY2F0aW9uLCB3ZSB3ZXJlIGNhbGN1bGF0aW5nIHRoZSBidWZmZXIgc2l6ZSBpbmNvcnJlY3RseTogOCBieXRlcyB0aW1lcyBzb21lIGluZGV4LCB3aGVuIHdlIG5lZWRlZCAxMiBieXRlcyB0aW1lcyB0aGUgaW5kZXguICBGb3IgZXhhbXBsZSwgaWYgYG11bHRpX3Jtd19pZHhgIGlzIDE1LCB3ZSB3ZXJlIGFsbG9jYXRpbmcgMTIwIGJ5dGVzIGluc3RlYWQgb2YgMTgwLlxuXG5Ob3csIHdhaXQgYSBtaW51dGUuLi4gd2h5IHRoZSBjaGFuZ2UgaW4gYE1BWF9STVdfQ01EX05VTUJFUmAgZnJvbSAxNSB0byAxND8gIEZpZnRlZW4gcmVnaXN0ZXIgY29tbWFuZHMgd291bGQgcmVzdWx0IGluIDE1ICogMTIgYnl0ZXMgPSAxODAgYnl0ZXMuICBBZGQgdGhlIEhUQy9XTUkgaGVhZGVycyBhbmQgaXQgc2hvdWxkIGJlIDE5MiBieXRlcywgd2hpY2ggaXMgZXhhY3RseSB0aHJlZSB0aW1lcyB0aGUgdHlwaWNhbCA2NC1ieXRlIFVTQiBwYWNrZXQgc2l6ZS4gIFdpdGggMTQgY29tbWFuZHMsIHdlIHdvdWxkIGhhdmUgMTY4IGJ5dGVzLCBhbmQgbWF5YmUgYSBwYXJ0aWFsIHBhY2tldD8gVVNCIGJ1bGsgYW5kIGludGVycnVwdCB0cmFuc2ZlcnMgdGhhdCBhcmUgKmV4YWN0KiBtdWx0aXBsZXMgb2YgdGhlIGBtYXhwYWNrZXRgIHNpemUgKHdpdGhvdXQgYSBaTFAgLSBaZXJvIExlbmd0aCBQYWNrZXQpIGNhbiBwb3RlbnRpYWxseSBoYW5nLCBhbmQgdGhlIGRhdGEgbWlnaHQgbmV2ZXIgYmUgZGVsaXZlcmVkIGlmIHRoZSBmaXJtd2FyZSBleHBlY3RzIGEgc2hvcnRlciBwYWNrZXQuIEFuZCBJJ20gcmVjYWxsaW5nIHRoYXQgYGhpZl91c2Jfc2VuZF9yZWdvdXRgIGFjdHVhbGx5ICp3YXJucyogaWYgYHNrYi1cdTAwM2VsZW4gJSBtYXhwYWNrZXQgPT0gMGAuIFdlIG5lZWQgdG8gaW52ZXN0aWdhdGUgYGhpZl91c2IuY2AgYXJvdW5kIGBoaWZfdXNiX3NlbmRfcmVnb3V0YCB0byBjb25maXJtIHRoaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxMjAsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNzQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQxMjo0ODozNy45NDU3ODYzNTJaIiwiU2VxIjozNCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM1MzEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmNcIixcbiAgXCJGaXJzdExpbmVcIjogOTUsXG4gIFwiTGluZUNvdW50XCI6IDQ1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgOTU6XFx0XFx0a2ZyZWVfc2tiKGNtZC1cXHUwMDNlc2tiKTtcXG4gIDk2OlxcdFxcdGtmcmVlKGNtZCk7XFxuICA5NzpcXHR9XFxuICA5ODpcXHRcXG4gIDk5OlxcdHN0YXRpYyBpbnQgaGlmX3VzYl9zZW5kX3JlZ291dChzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYsXFxuIDEwMDpcXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4gMTAxOlxcdHtcXG4gMTAyOlxcdFxcdHUxNiBtYXhwYWNrZXQgPSB1c2JfbWF4cGFja2V0KGhpZl9kZXYtXFx1MDAzZXVkZXYsXFxuIDEwMzpcXHRcXHRcXHRcXHRcXHQgICAgICB1c2Jfc25kaW50cGlwZShoaWZfZGV2LVxcdTAwM2V1ZGV2LFxcbiAxMDQ6XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgICBVU0JfUkVHX09VVF9QSVBFKSk7XFxuIDEwNTpcXHRcXHRzdHJ1Y3QgdXJiICp1cmI7XFxuIDEwNjpcXHRcXHRzdHJ1Y3QgY21kX2J1ZiAqY21kO1xcbiAxMDc6XFx0XFx0aW50IHJldCA9IDA7XFxuIDEwODpcXHRcXG4gMTA5OlxcdFxcdGlmIChXQVJOX09OQ0UobWF4cGFja2V0IFxcdTAwMjZcXHUwMDI2IHNrYi1cXHUwMDNlbGVuICUgbWF4cGFja2V0ID09IDAsXFxuIDExMDpcXHRcXHRcXHQgICAgICBcXFwiJXUtYnl0ZSBjb21tYW5kIGZpbGxzIHdob2xlIFVTQiBwYWNrZXRzXFxcXG5cXFwiLCBza2ItXFx1MDAzZWxlbikpXFxuIDExMTpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gMTEyOlxcdFxcbiAxMTM6XFx0XFx0dXJiID0gdXNiX2FsbG9jX3VyYigwLCBHRlBfS0VSTkVMKTtcXG4gMTE0OlxcdFxcdGlmICh1cmIgPT0gTlVMTClcXG4gMTE1OlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiAxMTY6XFx0XFxuIDExNzpcXHRcXHRjbWQgPSBremFsbG9jX29iaigqY21kKTtcXG4gMTE4OlxcdFxcdGlmIChjbWQgPT0gTlVMTCkge1xcbiAxMTk6XFx0XFx0XFx0dXNiX2ZyZWVfdXJiKHVyYik7XFxuIDEyMDpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gMTIxOlxcdFxcdH1cXG4gMTIyOlxcdFxcbiAxMjM6XFx0XFx0Y21kLVxcdTAwM2Vza2IgPSBza2I7XFxuIDEyNDpcXHRcXHRjbWQtXFx1MDAzZWhpZl9kZXYgPSBoaWZfZGV2O1xcbiAxMjU6XFx0XFxuIDEyNjpcXHRcXHR1c2JfZmlsbF9pbnRfdXJiKHVyYiwgaGlmX2Rldi1cXHUwMDNldWRldixcXG4gMTI3OlxcdFxcdFxcdFxcdCB1c2Jfc25kaW50cGlwZShoaWZfZGV2LVxcdTAwM2V1ZGV2LCBVU0JfUkVHX09VVF9QSVBFKSxcXG4gMTI4OlxcdFxcdFxcdFxcdCBza2ItXFx1MDAzZWRhdGEsIHNrYi1cXHUwMDNlbGVuLFxcbiAxMjk6XFx0XFx0XFx0XFx0IGhpZl91c2JfcmVnb3V0X2NiLCBjbWQsIDEpO1xcbiAxMzA6XFx0XFxuIDEzMTpcXHRcXHR1c2JfYW5jaG9yX3VyYih1cmIsIFxcdTAwMjZoaWZfZGV2LVxcdTAwM2VyZWdvdXRfc3VibWl0dGVkKTtcXG4gMTMyOlxcdFxcdHJldCA9IHVzYl9zdWJtaXRfdXJiKHVyYiwgR0ZQX0tFUk5FTCk7XFxuIDEzMzpcXHRcXHRpZiAocmV0KSB7XFxuIDEzNDpcXHRcXHRcXHR1c2JfdW5hbmNob3JfdXJiKHVyYik7XFxuIDEzNTpcXHRcXHRcXHRrZnJlZShjbWQpO1xcbiAxMzY6XFx0XFx0fVxcbiAxMzc6XFx0XFx0dXNiX2ZyZWVfdXJiKHVyYik7XFxuIDEzODpcXHRcXG4gMTM5OlxcdFxcdHJldHVybiByZXQ7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDEyOjQ4OjM3Ljk0NTkyMzg5MloiLCJTZXEiOjM1LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo3NTkzMDAzMjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKktNU0FOIEFzc2Vzc21lbnQ6IE5vIE5lZWQgSGVyZSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIGRvd24gdGhpcyBwYXRjaCBhbmQgc2VlIGlmIHdlIG5lZWQgdG8gYnJpbmcgaW4gS01TQU4uIEZpcnN0LCB0aGUgY29yZSBvZiB0aGUgY2hhbmdlczpcblxuMS4gICoqYGF0aDlrX3JlZ19ybXdfYnVmZmVyYCBGaXg6KiogVGhpcyBpcyB0aGUgbW9zdCBjcnVjaWFsIHBhcnQuIEl0IGxvb2tzIGxpa2Ugd2Ugd2VyZSBhY2NpZGVudGFsbHkgc2VuZGluZyBhIHRydW5jYXRlZCBzdHJ1Y3R1cmUgc2l6ZSAoYHNpemVvZihzdHJ1Y3QgcmVnaXN0ZXJfd3JpdGUpYCkgdG8gYGF0aDlrX3dtaV9jbWQoKWAgaW5zdGVhZCBvZiB0aGUgY29ycmVjdCBzaXplIChgc2l6ZW9mKHN0cnVjdCByZWdpc3Rlcl9ybXcpYCkgZm9yIHRoZSBgbXVsdGlfcm13YCBhcnJheS4gVGhlIGNvZGUgcG9wdWxhdGVzIHRoZSBgbXVsdGlfcm13YCBhcnJheSAob2YgYHN0cnVjdCByZWdpc3Rlcl9ybXdgIGVsZW1lbnRzKSwgc3BlY2lmaWNhbGx5IGZpbGxpbmcgdGhlIGByZWdgLCBgc2V0YCwgYW5kIGBjbHJgIGZpZWxkcyBmb3IgZWFjaCBlbnRyeS4gVGhlIGNvcnJlY3Rpb24gbm93IGVuc3VyZXMgdGhhdCB3ZSBzZW5kIHRoZSBjb21wbGV0ZSwgaW5pdGlhbGl6ZWQgZGF0YS4gQmVmb3JlLCB3ZSB3ZXJlIGVmZmVjdGl2ZWx5IHRydW5jYXRpbmcgZGF0YSB0byA4IGJ5dGVzLCBidXQgc2VuZGluZyB0aGUgZGF0YSBzaXplIGFzIHRob3VnaCBpdCB3ZXJlIDEyIGJ5dGVzLlxuXG4yLiAgKipgTUFYX1JNV19DTURfTlVNQkVSYCBBZGp1c3RtZW50OioqIFJlZHVjaW5nIHRoaXMgY29uc3RhbnQgZnJvbSAxNSB0byAxNCBzZWVtcyB0byBiZSBhIFVTQi1zcGVjaWZpYyBvcHRpbWl6YXRpb24uIEl0J3MgZG9uZSB0byBwcmV2ZW50IFVTQiBwYWNrZXQgbGVuZ3RoIGZyb20gYmVpbmcgYSBtdWx0aXBsZSBvZiA2NCBieXRlcywgcHJldmVudGluZyBlbmRwb2ludCBoYW5nLiBUaGlzIHByaW1hcmlseSBhZmZlY3RzIHRoZSBzaXplIG9mIHRoZSBhcnJheSwgYG11bHRpX3Jtd2AuXG5cbjMuICAqKmBoaWZfdXNiX3NlbmRfcmVnb3V0YCBDaGVjazoqKiBUaGlzIGFkZHMgYSBzaW1wbGUgbGVuZ3RoIGNoZWNrLCByZXR1cm5pbmcgYC1FSU5WQUxgIGlmIGBza2ItXHUwMDNlbGVuYCAodGhlIGluaXRpYWxpemVkIGxlbmd0aCBvZiB0aGUgc2tiKSBpcyBhIG11bHRpcGxlIG9mIGBtYXhwYWNrZXRgLlxuXG5Ob3csIGRvZXMgYW55IG9mIHRoaXMgc2NyZWFtIFwiS01TQU4gcmlza1wiPyBMZXQncyBnbyB0aHJvdWdoIHRoZSBjaGVja2xpc3Q6XG5cbiogICAqKlN0cnVjdHVyZSBFeHBvc3VyZSB0byBVc2Vyc3BhY2U6KiogTm8uIFRoaXMgaXMgaW50ZXJuYWwgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIHRoZSBkcml2ZXIgYW5kIHRoZSBVU0IgaGFyZHdhcmUvZmlybXdhcmUuIE5vIGRhdGEgaXMgYmVpbmcgbGVha2VkIHRvIHVzZXJzcGFjZS5cbiogICAqKlVuaW5pdGlhbGl6ZWQgVmFyaWFibGUgRGVwZW5kZW5jZToqKiBOb3BlLiBgbWF4cGFja2V0YCBpcyB0aGUgcmVzdWx0IG9mIGB1c2JfbWF4cGFja2V0KClgLCBhbmQgYHNrYi1cdTAwM2VsZW5gIGNvbWVzIGZyb20gdGhlIGBza2JgJ3MgaW5pdGlhbGl6ZWQgbGVuZ3RoLiBUaGVzZSBhcmUgY2hlY2tlZCBhbmQgd2VsbC1kZWZpbmVkLlxuKiAgICoqQ29tcGxleCBEYXRhIFN0cnVjdHVyZSBNaXNoYW5kbGluZzoqKiBOby4gVGhlIGBtdWx0aV9ybXdgIGFycmF5IGlzIGFsbG9jYXRlZCBhbmQgbWV0aWN1bG91c2x5IHBvcHVsYXRlZC4gQWxsIGZpZWxkcyB3aXRoaW4gdGhlIGFycmF5IGVsZW1lbnRzIGFyZSBpbml0aWFsaXplZCBiZWZvcmUgYmVpbmcgc2VudC5cbiogICAqKkJvdW5kcyBDaGVjayBQcm9ibGVtczoqKiBUaGUgc2l6ZSBjb3JyZWN0aW9uIGluIGBhdGg5a19yZWdfcm13X2J1ZmZlcmAgKmZpeGVzKiBhIHBvdGVudGlhbCBpc3N1ZSwgZW5zdXJpbmcgd2UncmUgc2VuZGluZyB0aGUgY29ycmVjdCBzaXplIG9mIHRoZSBmdWxseSBpbml0aWFsaXplZCBkYXRhIGluIGBtdWx0aV9ybXdgLiBXZSAqd2VyZW4ndCogcmVhZGluZyB1bmluaXRpYWxpemVkIG1lbW9yeSwgd2Ugd2VyZSAqdHJ1bmNhdGluZyogdGhlIHNpemUgc2VudC5cblxuVGhlcmVmb3JlLCBnaXZlbiB0aGUgbmF0dXJlIG9mIHRoZSBjaGFuZ2VzLCBwYXJ0aWN1bGFybHkgdGhhdCB0aGV5IGFyZSB3aXRoaW4gaW50ZXJuYWwgZHJpdmVyIG9wZXJhdGlvbnMgYW5kIHRoZSBzdHJ1Y3R1cmVzIGFyZSBwcm9wZXJseSBpbml0aWFsaXplZCwgSSBkb24ndCBzZWUgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgbGVha3MgdGhhdCBLTVNBTiB3b3VsZCBzcGVjaWZpY2FsbHkgY2F0Y2guIFN0YW5kYXJkIGRldGVjdG9ycyBzaG91bGQgYmUgYWRlcXVhdGUgaGVyZS4gU28sIGxldCdzIHNldCBgTmVlZHNLTVNBTj1mYWxzZWAgd2l0aCB0aGUgcmVhc29uaW5nIHRoYXQgdGhlIHBhdGNoIGZpeGVzIGEgc2l6ZSBkaXNjcmVwYW5jeSB0byBwYXNzIGZ1bGx5IGluaXRpYWxpemVkIHN0cnVjdHMsIGFuZCBhbHRlcnMgc2l6ZXMgc2FmZWx5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NjU3LCJPdXRwdXRUb2tlbnMiOjMwMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgxNywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDEyOjQ4OjQ1LjUzODkzMTc1MloiLCJTZXEiOjM2LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5NDMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgVVNCIGNvbW11bmljYXRpb24gaXNzdWUgaW4gdGhlIGF0aDlrIGRyaXZlciB3aGVyZSBVU0IgcGFja2V0cyB0aGF0IGFyZSBleGFjdCBtdWx0aXBsZXMgb2YgZW5kcG9pbnQgbWF4cGFja2V0IHNpemUgY2F1c2UgZmlybXdhcmUgZGVsaXZlcnkgc3RhbGxzLiBUaGUgY2hhbmdlcyBjb25zaXN0IG9mOlxcbjEuIEFkZGluZyBhIGNoZWNrIGluIGBoaWZfdXNiX3NlbmRfcmVnb3V0KClgIHRvIHdhcm4gYW5kIHJlamVjdCBza2JzIHdob3NlIGxlbmd0aCBpcyBhbiBleGFjdCBtdWx0aXBsZSBvZiB0aGUgZW5kcG9pbnQgbWF4cGFja2V0IHNpemUuXFxuMi4gQ29ycmVjdGluZyB0aGUgYnVmZmVyIHNpemUgY2FsY3VsYXRpb24gaW4gYGF0aDlrX3JlZ19ybXdfYnVmZmVyKClgIGZyb20gYHNpemVvZihzdHJ1Y3QgcmVnaXN0ZXJfd3JpdGUpYCAoOCBieXRlcykgdG8gYHNpemVvZihzdHJ1Y3QgcmVnaXN0ZXJfcm13KWAgKDEyIGJ5dGVzKS5cXG4zLiBMb3dlcmluZyBgTUFYX1JNV19DTURfTlVNQkVSYCBmcm9tIDE1IHRvIDE0IGluIGB3bWkuaGAgdG8gYXZvaWQgNjQtYnl0ZSBhbGlnbmVkIFVTQiBwYXlsb2Fkcy5cXG5cXG5SZWdhcmRpbmcgbWVtb3J5IGluaXRpYWxpemF0aW9uOlxcbi0gQWxsIGZpZWxkcyAoYHJlZ2AsIGBzZXRgLCBgY2xyYCkgb2YgdGhlIGBzdHJ1Y3QgcmVnaXN0ZXJfcm13YCBhcnJheSBlbGVtZW50cyBpbiBgcHJpdi1cXHUwMDNld21pLVxcdTAwM2VtdWx0aV9ybXdgIGFyZSBleHBsaWNpdGx5IGluaXRpYWxpemVkIGJlZm9yZSBiZWluZyBzZW50IHZpYSBgYXRoOWtfd21pX2NtZCgpYC5cXG4tIE5vIHVzZXItc3BhY2UgY29weSBwYXRocyBvciB1bmluaXRpYWxpemVkIGtlcm5lbCBzdHJ1Y3R1cmUgZmllbGRzIGFyZSBleHBvc2VkIG9yIG1vZGlmaWVkLlxcbi0gTm8gYnJhbmNoIGNvbmRpdGlvbnMgcmVseSBvbiB1bmluaXRpYWxpemVkIHZhbHVlcy5cXG5cXG5UaGVyZWZvcmUsIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcywgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgVVNCIGNvbW11bmljYXRpb24gaXNzdWUgaW4gdGhlIGF0aDlrIGRyaXZlciB3aGVyZSBVU0IgcGFja2V0cyB0aGF0IGFyZSBleGFjdCBtdWx0aXBsZXMgb2YgZW5kcG9pbnQgbWF4cGFja2V0IHNpemUgY2F1c2UgZmlybXdhcmUgZGVsaXZlcnkgc3RhbGxzLiBUaGUgY2hhbmdlcyBjb25zaXN0IG9mOlxcbjEuIEFkZGluZyBhIGNoZWNrIGluIGBoaWZfdXNiX3NlbmRfcmVnb3V0KClgIHRvIHdhcm4gYW5kIHJlamVjdCBza2JzIHdob3NlIGxlbmd0aCBpcyBhbiBleGFjdCBtdWx0aXBsZSBvZiB0aGUgZW5kcG9pbnQgbWF4cGFja2V0IHNpemUuXFxuMi4gQ29ycmVjdGluZyB0aGUgYnVmZmVyIHNpemUgY2FsY3VsYXRpb24gaW4gYGF0aDlrX3JlZ19ybXdfYnVmZmVyKClgIGZyb20gYHNpemVvZihzdHJ1Y3QgcmVnaXN0ZXJfd3JpdGUpYCAoOCBieXRlcykgdG8gYHNpemVvZihzdHJ1Y3QgcmVnaXN0ZXJfcm13KWAgKDEyIGJ5dGVzKS5cXG4zLiBMb3dlcmluZyBgTUFYX1JNV19DTURfTlVNQkVSYCBmcm9tIDE1IHRvIDE0IGluIGB3bWkuaGAgdG8gYXZvaWQgNjQtYnl0ZSBhbGlnbmVkIFVTQiBwYXlsb2Fkcy5cXG5cXG5SZWdhcmRpbmcgbWVtb3J5IGluaXRpYWxpemF0aW9uOlxcbi0gQWxsIGZpZWxkcyAoYHJlZ2AsIGBzZXRgLCBgY2xyYCkgb2YgdGhlIGBzdHJ1Y3QgcmVnaXN0ZXJfcm13YCBhcnJheSBlbGVtZW50cyBpbiBgcHJpdi1cXHUwMDNld21pLVxcdTAwM2VtdWx0aV9ybXdgIGFyZSBleHBsaWNpdGx5IGluaXRpYWxpemVkIGJlZm9yZSBiZWluZyBzZW50IHZpYSBgYXRoOWtfd21pX2NtZCgpYC5cXG4tIE5vIHVzZXItc3BhY2UgY29weSBwYXRocyBvciB1bmluaXRpYWxpemVkIGtlcm5lbCBzdHJ1Y3R1cmUgZmllbGRzIGFyZSBleHBvc2VkIG9yIG1vZGlmaWVkLlxcbi0gTm8gYnJhbmNoIGNvbmRpdGlvbnMgcmVseSBvbiB1bmluaXRpYWxpemVkIHZhbHVlcy5cXG5cXG5UaGVyZWZvcmUsIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcywgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow526nl[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-06 12:24:38 +0000 UTC FinishedAt: 2026-09-06 12:48:47 +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": [ "ATH9K_HTC", "USB", "MAC80211", "WLAN_VENDOR_ATH" ], "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": [ "ATH9K_HTC", "USB", "MAC80211", "WLAN_VENDOR_ATH" ], "series_id": "74f0377d-614c-4348-a08a-5e08f184e58e" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "hif_usb_send_regout", "ath9k_reg_rmw_buffer", "ath9k_reg_rmw_flush", "ath9k_reg_rmw", "hif_usb_send" ], "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+CgkJCTx0ZD4yMDI2LzA5LzA2IDEyOjQ3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FUSDlLX0hUQyYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7V0xBTl9WRU5ET1JfQVRIJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aGlmX3VzYl9zZW5kX3JlZ291dCYjMzQ7LAogICAgJiMzNDthdGg5a19yZWdfcm13X2J1ZmZlciYjMzQ7LAogICAgJiMzNDthdGg5a19yZWdfcm13X2ZsdXNoJiMzNDssCiAgICAmIzM0O2F0aDlrX3JlZ19ybXcmIzM0OywKICAgICYjMzQ7aGlmX3VzYl9zZW5kJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgVVNCIGNvbW11bmljYXRpb24gaXNzdWUgaW4gdGhlIGF0aDlrIGRyaXZlciB3aGVyZSBVU0IgcGFja2V0cyB0aGF0IGFyZSBleGFjdCBtdWx0aXBsZXMgb2YgZW5kcG9pbnQgbWF4cGFja2V0IHNpemUgY2F1c2UgZmlybXdhcmUgZGVsaXZlcnkgc3RhbGxzLiBUaGUgY2hhbmdlcyBjb25zaXN0IG9mOlxuMS4gQWRkaW5nIGEgY2hlY2sgaW4gYGhpZl91c2Jfc2VuZF9yZWdvdXQoKWAgdG8gd2FybiBhbmQgcmVqZWN0IHNrYnMgd2hvc2UgbGVuZ3RoIGlzIGFuIGV4YWN0IG11bHRpcGxlIG9mIHRoZSBlbmRwb2ludCBtYXhwYWNrZXQgc2l6ZS5cbjIuIENvcnJlY3RpbmcgdGhlIGJ1ZmZlciBzaXplIGNhbGN1bGF0aW9uIGluIGBhdGg5a19yZWdfcm13X2J1ZmZlcigpYCBmcm9tIGBzaXplb2Yoc3RydWN0IHJlZ2lzdGVyX3dyaXRlKWAgKDggYnl0ZXMpIHRvIGBzaXplb2Yoc3RydWN0IHJlZ2lzdGVyX3JtdylgICgxMiBieXRlcykuXG4zLiBMb3dlcmluZyBgTUFYX1JNV19DTURfTlVNQkVSYCBmcm9tIDE1IHRvIDE0IGluIGB3bWkuaGAgdG8gYXZvaWQgNjQtYnl0ZSBhbGlnbmVkIFVTQiBwYXlsb2Fkcy5cblxuUmVnYXJkaW5nIG1lbW9yeSBpbml0aWFsaXphdGlvbjpcbi0gQWxsIGZpZWxkcyAoYHJlZ2AsIGBzZXRgLCBgY2xyYCkgb2YgdGhlIGBzdHJ1Y3QgcmVnaXN0ZXJfcm13YCBhcnJheSBlbGVtZW50cyBpbiBgcHJpdi1cdTAwM2V3bWktXHUwMDNlbXVsdGlfcm13YCBhcmUgZXhwbGljaXRseSBpbml0aWFsaXplZCBiZWZvcmUgYmVpbmcgc2VudCB2aWEgYGF0aDlrX3dtaV9jbWQoKWAuXG4tIE5vIHVzZXItc3BhY2UgY29weSBwYXRocyBvciB1bmluaXRpYWxpemVkIGtlcm5lbCBzdHJ1Y3R1cmUgZmllbGRzIGFyZSBleHBvc2VkIG9yIG1vZGlmaWVkLlxuLSBObyBicmFuY2ggY29uZGl0aW9ucyByZWx5IG9uIHVuaW5pdGlhbGl6ZWQgdmFsdWVzLlxuXG5UaGVyZWZvcmUsIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcywgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBVU0Igd2lyZWxlc3MgZHJpdmVyIGF0aDlrX2h0Yywgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSBVU0IgZ2FkZ2V0L2RldmljZSBlbXVsYXRpb24gaW4gc3l6a2FsbGVyLiBUaGUgY2hhbmdlcyBhZGQgYSBuZXcgV0FSTl9PTkNFIHJ1bnRpbWUgYXNzZXJ0aW9uIGFuZCBjaGVjayBpbiBoaWZfdXNiX3NlbmRfcmVnb3V0IHRvIHByZXZlbnQgc2VuZGluZyBwYWNrZXRzIHdob3NlIGxlbmd0aCBpcyBhbiBleGFjdCBtdWx0aXBsZSBvZiB0aGUgVVNCIG1heHBhY2tldCBzaXplLCBjb3JyZWN0IHRoZSBlbGVtZW50IHNpemUgY2FsY3VsYXRpb24gaW4gYXRoOWtfcmVnX3Jtd19idWZmZXIgZnJvbSBzaXplb2Yoc3RydWN0IHJlZ2lzdGVyX3dyaXRlKSB0byBzaXplb2Yoc3RydWN0IHJlZ2lzdGVyX3JtdyksIGFuZCByZWR1Y2UgTUFYX1JNV19DTURfTlVNQkVSLiBGdXp6aW5nIGlzIHdhcnJhbnRlZCB0byB0ZXN0IHRoZSBuZXcgYXNzZXJ0aW9uIGFuZCBhbHRlcmVkIFJNVyBjb21tYW5kIGJhdGNoaW5nIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDEyOjQ3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNGE4NzJlODU5MTdkNjcwNDAwNzUxOTE5NzgyNDZmMzliMGI5NWU0N1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gU2VwIDYgMTI6NDc6MzMgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmNcbmluZGV4IGQzNDkxZmYwOGU2ZWYuLjQ5MzAzYzdlM2ZlZjQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jXG5AQCAtOTksMTAgJiM0Mzs5OSwxNyBAQCBzdGF0aWMgdm9pZCBoaWZfdXNiX3JlZ291dF9jYihzdHJ1Y3QgdXJiICp1cmIpXG4gc3RhdGljIGludCBoaWZfdXNiX3NlbmRfcmVnb3V0KHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2RldixcbiBcdFx0XHQgICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiB7XG4mIzQzO1x0dTE2IG1heHBhY2tldCA9IHVzYl9tYXhwYWNrZXQoaGlmX2Rldi1cdTAwM2V1ZGV2LFxuJiM0MztcdFx0XHRcdCAgICAgIHVzYl9zbmRpbnRwaXBlKGhpZl9kZXYtXHUwMDNldWRldixcbiYjNDM7XHRcdFx0XHRcdFx0ICAgICBVU0JfUkVHX09VVF9QSVBFKSk7XG4gXHRzdHJ1Y3QgdXJiICp1cmI7XG4gXHRzdHJ1Y3QgY21kX2J1ZiAqY21kO1xuIFx0aW50IHJldCA9IDA7XG4gXG4mIzQzO1x0aWYgKFdBUk5fT05DRShtYXhwYWNrZXQgXHUwMDI2XHUwMDI2IHNrYi1cdTAwM2VsZW4gJSBtYXhwYWNrZXQgPT0gMCxcbiYjNDM7XHRcdCAgICAgIFwmIzM0OyV1LWJ5dGUgY29tbWFuZCBmaWxscyB3aG9sZSBVU0IgcGFja2V0c1xcblwmIzM0Oywgc2tiLVx1MDAzZWxlbikpXG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XG4gXHR1cmIgPSB1c2JfYWxsb2NfdXJiKDAsIEdGUF9LRVJORUwpO1xuIFx0aWYgKHVyYiA9PSBOVUxMKVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmNcbmluZGV4IDZkZTc4YWU4NTcyNjguLjBiNDlkMmNjOTlmMGIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuY1xuQEAgLTQwNSw3ICYjNDM7NDA1LDcgQEAgc3RhdGljIHZvaWQgYXRoOWtfcmVnX3Jtd19idWZmZXIodm9pZCAqaHdfcHJpdixcbiBcdGlmIChwcml2LVx1MDAzZXdtaS1cdTAwM2VtdWx0aV9ybXdfaWR4ID09IE1BWF9STVdfQ01EX05VTUJFUikge1xuIFx0XHRyID0gYXRoOWtfd21pX2NtZChwcml2LVx1MDAzZXdtaSwgV01JX1JFR19STVdfQ01ESUQsXG4gXHRcdFx0ICAodTggKikgXHUwMDI2cHJpdi1cdTAwM2V3bWktXHUwMDNlbXVsdGlfcm13LFxuLVx0XHRcdCAgc2l6ZW9mKHN0cnVjdCByZWdpc3Rlcl93cml0ZSkgKiBwcml2LVx1MDAzZXdtaS1cdTAwM2VtdWx0aV9ybXdfaWR4LFxuJiM0MztcdFx0XHQgIHNpemVvZihzdHJ1Y3QgcmVnaXN0ZXJfcm13KSAqIHByaXYtXHUwMDNld21pLVx1MDAzZW11bHRpX3Jtd19pZHgsXG4gXHRcdFx0ICAodTggKikgXHUwMDI2cnNwX3N0YXR1cywgc2l6ZW9mKHJzcF9zdGF0dXMpLFxuIFx0XHRcdCAgMTAwKTtcbiBcdFx0aWYgKHVubGlrZWx5KHIpKSB7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oXG5pbmRleCA1YzNiNzEwYjhmMzE5Li4yNTZmNDYwOThhNmIxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmhcbkBAIC0xMjYsNyAmIzQzOzEyNiw4IEBAIGVudW0gd21pX2V2ZW50X2lkIHtcbiB9O1xuIFxuICNkZWZpbmUgTUFYX0NNRF9OVU1CRVIgNjJcbi0jZGVmaW5lIE1BWF9STVdfQ01EX05VTUJFUiAxNVxuJiM0MzsvKiAxNSBlbnRyaWVzIG1ha2UgMTkyIGJ5dGVzLCB0aHJlZSBmdWxsIFVTQiBwYWNrZXRzOiBuZXZlciBkZWxpdmVyZWQuICovXG4mIzQzOyNkZWZpbmUgTUFYX1JNV19DTURfTlVNQkVSIDE0XG4gXG4gc3RydWN0IHJlZ2lzdGVyX3dyaXRlIHtcbiBcdF9fYmUzMiByZWc7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMTI6NDc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QVRIOUtfSFRDJiMzNDssCiAgICAmIzM0O1VTQiYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtXTEFOX1ZFTkRPUl9BVEgmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtoaWZfdXNiX3NlbmRfcmVnb3V0JiMzNDssCiAgICAmIzM0O2F0aDlrX3JlZ19ybXdfYnVmZmVyJiMzNDssCiAgICAmIzM0O2F0aDlrX3JlZ19ybXdfZmx1c2gmIzM0OywKICAgICYjMzQ7YXRoOWtfcmVnX3JtdyYjMzQ7LAogICAgJiMzNDtoaWZfdXNiX3NlbmQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFVTQiB3aXJlbGVzcyBkcml2ZXIgYXRoOWtfaHRjLCB3aGljaCBpcyByZWFjaGFibGUgdmlhIFVTQiBnYWRnZXQvZGV2aWNlIGVtdWxhdGlvbiBpbiBzeXprYWxsZXIuIFRoZSBjaGFuZ2VzIGFkZCBhIG5ldyBXQVJOX09OQ0UgcnVudGltZSBhc3NlcnRpb24gYW5kIGNoZWNrIGluIGhpZl91c2Jfc2VuZF9yZWdvdXQgdG8gcHJldmVudCBzZW5kaW5nIHBhY2tldHMgd2hvc2UgbGVuZ3RoIGlzIGFuIGV4YWN0IG11bHRpcGxlIG9mIHRoZSBVU0IgbWF4cGFja2V0IHNpemUsIGNvcnJlY3QgdGhlIGVsZW1lbnQgc2l6ZSBjYWxjdWxhdGlvbiBpbiBhdGg5a19yZWdfcm13X2J1ZmZlciBmcm9tIHNpemVvZihzdHJ1Y3QgcmVnaXN0ZXJfd3JpdGUpIHRvIHNpemVvZihzdHJ1Y3QgcmVnaXN0ZXJfcm13KSwgYW5kIHJlZHVjZSBNQVhfUk1XX0NNRF9OVU1CRVIuIEZ1enppbmcgaXMgd2FycmFudGVkIHRvIHRlc3QgdGhlIG5ldyBhc3NlcnRpb24gYW5kIGFsdGVyZWQgUk1XIGNvbW1hbmQgYmF0Y2hpbmcgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA0YTg3MmU4NTkxN2Q2NzA0MDA3NTE5MTk3ODI0NmYzOWIwYjk1ZTQ3CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBTZXAgNiAxMjo0NzozMyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jCmluZGV4IGQzNDkxZmYwOGU2ZWYuLjQ5MzAzYzdlM2ZlZjQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYwpAQCAtOTksMTAgJiM0Mzs5OSwxNyBAQCBzdGF0aWMgdm9pZCBoaWZfdXNiX3JlZ291dF9jYihzdHJ1Y3QgdXJiICp1cmIpCiBzdGF0aWMgaW50IGhpZl91c2Jfc2VuZF9yZWdvdXQoc3RydWN0IGhpZl9kZXZpY2VfdXNiICpoaWZfZGV2LAogCQkJICAgICAgIHN0cnVjdCBza19idWZmICpza2IpCiB7CiYjNDM7CXUxNiBtYXhwYWNrZXQgPSB1c2JfbWF4cGFja2V0KGhpZl9kZXYtJmd0O3VkZXYsCiYjNDM7CQkJCSAgICAgIHVzYl9zbmRpbnRwaXBlKGhpZl9kZXYtJmd0O3VkZXYsCiYjNDM7CQkJCQkJICAgICBVU0JfUkVHX09VVF9QSVBFKSk7CiAJc3RydWN0IHVyYiAqdXJiOwogCXN0cnVjdCBjbWRfYnVmICpjbWQ7CiAJaW50IHJldCA9IDA7CiAKJiM0MzsJaWYgKFdBUk5fT05DRShtYXhwYWNrZXQgJmFtcDsmYW1wOyBza2ItJmd0O2xlbiAlIG1heHBhY2tldCA9PSAwLAomIzQzOwkJICAgICAgJiMzNDsldS1ieXRlIGNvbW1hbmQgZmlsbHMgd2hvbGUgVVNCIHBhY2tldHNcbiYjMzQ7LCBza2ItJmd0O2xlbikpCiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsKIAl1cmIgPSB1c2JfYWxsb2NfdXJiKDAsIEdGUF9LRVJORUwpOwogCWlmICh1cmIgPT0gTlVMTCkKIAkJcmV0dXJuIC1FTk9NRU07CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmMKaW5kZXggNmRlNzhhZTg1NzI2OC4uMGI0OWQyY2M5OWYwYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYwpAQCAtNDA1LDcgJiM0Mzs0MDUsNyBAQCBzdGF0aWMgdm9pZCBhdGg5a19yZWdfcm13X2J1ZmZlcih2b2lkICpod19wcml2LAogCWlmIChwcml2LSZndDt3bWktJmd0O211bHRpX3Jtd19pZHggPT0gTUFYX1JNV19DTURfTlVNQkVSKSB7CiAJCXIgPSBhdGg5a193bWlfY21kKHByaXYtJmd0O3dtaSwgV01JX1JFR19STVdfQ01ESUQsCiAJCQkgICh1OCAqKSAmYW1wO3ByaXYtJmd0O3dtaS0mZ3Q7bXVsdGlfcm13LAotCQkJICBzaXplb2Yoc3RydWN0IHJlZ2lzdGVyX3dyaXRlKSAqIHByaXYtJmd0O3dtaS0mZ3Q7bXVsdGlfcm13X2lkeCwKJiM0MzsJCQkgIHNpemVvZihzdHJ1Y3QgcmVnaXN0ZXJfcm13KSAqIHByaXYtJmd0O3dtaS0mZ3Q7bXVsdGlfcm13X2lkeCwKIAkJCSAgKHU4ICopICZhbXA7cnNwX3N0YXR1cywgc2l6ZW9mKHJzcF9zdGF0dXMpLAogCQkJICAxMDApOwogCQlpZiAodW5saWtlbHkocikpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaAppbmRleCA1YzNiNzEwYjhmMzE5Li4yNTZmNDYwOThhNmIxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oCkBAIC0xMjYsNyAmIzQzOzEyNiw4IEBAIGVudW0gd21pX2V2ZW50X2lkIHsKIH07CiAKICNkZWZpbmUgTUFYX0NNRF9OVU1CRVIgNjIKLSNkZWZpbmUgTUFYX1JNV19DTURfTlVNQkVSIDE1CiYjNDM7LyogMTUgZW50cmllcyBtYWtlIDE5MiBieXRlcywgdGhyZWUgZnVsbCBVU0IgcGFja2V0czogbmV2ZXIgZGVsaXZlcmVkLiAqLwomIzQzOyNkZWZpbmUgTUFYX1JNV19DTURfTlVNQkVSIDE0CiAKIHN0cnVjdCByZWdpc3Rlcl93cml0ZSB7CiAJX19iZTMyIHJlZzsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMTI6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzU3NwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDMzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhpcyBQYXRjaCBmb3IgVVNCIFZ1bG5lcmFiaWxpdGllcyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIHBhdGNoIGlzIGFjdHVhbGx5IGRvaW5nLiBJdCBsb29rcyBsaWtlIHdlIGhhdmUgY2hhbmdlcyBhY3Jvc3MgdGhyZWUgZmlsZXMgaW4gdGhlIGBhdGg5a2Agd2lyZWxlc3MgZHJpdmVyOiBgaGlmX3VzYi5jYCwgYGh0Y19kcnZfaW5pdC5jYCwgYW5kIGB3bWkuaGAuIFNwZWNpZmljYWxseToKCiogICBJbiBgaGlmX3VzYi5jYCwgaXQgc2VlbXMgd2UmIzM5O3JlIGFkZGluZyBhIGNoZWNrIHdpdGhpbiBgaGlmX3VzYl9zZW5kX3JlZ291dGAgcmVsYXRlZCB0byBVU0IgcGFja2V0IHNpemUuIFdlIGNhbGN1bGF0ZSBgbWF4cGFja2V0YCB1c2luZyBgdXNiX21heHBhY2tldCgpYCBhbmQgdGhlbiBhZGQgYSBgV0FSTl9PTkNFYCBjYWxsIHRvIHJldHVybiBgLUVJTlZBTGAgaWYgdGhlIHNrYiYjMzk7cyBsZW5ndGggaXMgYSBtdWx0aXBsZSBvZiBgbWF4cGFja2V0YC4gVGhpcyBpcyBpbnRlcmVzdGluZzsgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2h5IHRoZXkmIzM5O3JlIGFkZGluZyB0aGlzLiBJcyB0aGVyZSBhIHBvdGVudGlhbCBidWZmZXIgb3ZlcnJ1biBjb25kaXRpb24gdGhleSYjMzk7cmUgdHJ5aW5nIHRvIHByZXZlbnQgd2l0aCB0aGUgaW50ZWdlciBkaXZpc2lvbiYjMzk7cyBtb2R1bHVzIG9mIHplcm8/IFBlcmhhcHMgYW4gb2ZmLWJ5LW9uZSBvciBkYXRhIGludGVncml0eSBpc3N1ZT8KCiogICBOZXh0LCBpbiBgaHRjX2Rydl9pbml0LmNgLCB0aGUgcGF0Y2ggbW9kaWZpZXMgYSBzaXplIGNhbGN1bGF0aW9uIHdpdGhpbiBgYXRoOWtfcmVnX3Jtd19idWZmZXJgLiBJdCBzZWVtcyB3ZSYjMzk7cmUgc3dpdGNoaW5nIGZyb20gYHN0cnVjdCByZWdpc3Rlcl93cml0ZWAgdG8gYHN0cnVjdCByZWdpc3Rlcl9ybXdgLiBUaGlzIHN1Z2dlc3RzIGEgcG90ZW50aWFsIGNoYW5nZSBpbiB0aGUgdW5kZXJseWluZyBkYXRhIHN0cnVjdHVyZSBiZWluZyB1c2VkIGZvciByZWdpc3RlciByZWFkLW1vZGlmeS13cml0ZSBvcGVyYXRpb25zLCB3aGljaCBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgZnVydGhlci4gSXQgYWxzbyBhcHBlYXJzIHRoZSBgcHJpdi0mZ3Q7d21pLSZndDttdWx0aV9ybXdfaWR4YCB2YWx1ZSB3aWxsIGFsc28gbmVlZCBjaGVja2luZyB3aXRoIHRoYXQgY2hhbmdlLgoKKiAgIEZpbmFsbHksIGluIGB3bWkuaGAsIGBNQVhfUk1XX0NNRF9OVU1CRVJgIGlzIGJlaW5nIGNoYW5nZWQgZnJvbSAxNSB0byAxNC4gVGhpcyBzdWdnZXN0cyBhIGNoYW5nZSBpbiB0aGUgbWF4aW11bSBudW1iZXIgb2YgcmVnaXN0ZXIgcmVhZC1tb2RpZnktd3JpdGUgY29tbWFuZHMgdGhhdCBjYW4gYmUgaXNzdWVkLiBUaGlzIHNlZW1zIHJlbGF0ZWQgdG8gdGhlIGNoYW5nZXMgaW4gYGh0Y19kcnZfaW5pdC5jYC4KCk5vdywgdGhlIGNydWNpYWwgcXVlc3Rpb246IGNhbiB3ZSByZWFjaCB0aGlzIGBhdGg5a19odGNgIGRyaXZlciB0aHJvdWdoIFVTQiBlbXVsYXRpb24/IFllcywgYmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZyBhbmQgcXVpY2sgY2hlY2ssIGBhdGg5a19odGNgIGlzIGluZGVlZCBhIFVTQiB3aXJlbGVzcyBuZXR3b3JrIGRyaXZlci4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNoZWNrIHRoZSBLY29uZmlnIHRvIGNvbmZpcm0gaXRzIGRlcGVuZGVuY2llcy4gSWYgd2UgY2FuIHJlYWNoIGl0LCB0aGVuIHRoaXMgcGF0Y2ggYmVjb21lcyBzaWduaWZpY2FudGx5IG1vcmUgaW50ZXJlc3RpbmcgZnJvbSBhIHNlY3VyaXR5IHBlcnNwZWN0aXZlLiBJdCBpcyBnb29kIHRvIGtub3cgaXQgaXMgcmVhY2hhYmxlIGFuZCwgdGh1cywgcG90ZW50aWFsbHkgdnVsbmVyYWJsZS4gSSYjMzk7bGwgbmVlZCB0byBmb2N1cyBvbiBob3cgdGhlc2UgY2hhbmdlcyBtaWdodCBpbXBhY3QgZnV6emluZyBvciBleHBsb2l0IGRldmVsb3BtZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDEyOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0FUSDlLX0hUQyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc9MTM9Y29uZmlnIEFUSDlLX0JUQ09FWF9TVVBQT1JUXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNC1cdGJvb2wgXCYjMzQ7QXRoZXJvcyBibHVldG9vdGggY29leGlzdGVuY2Ugc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTU6XHRkZXBlbmRzIG9uIChBVEg5SyB8fCBBVEg5S19IVEMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNi1cdGRlZmF1bHQgeVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnPTE1Nj1jb25maWcgQVRIOUtfUENJX05PX0VFUFJPTVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE3MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjE3Mjpjb25maWcgQVRIOUtfSFRDXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNzMtXHR0cmlzdGF0ZSBcJiMzNDtBdGhlcm9zIEhUQyBiYXNlZCB3aXJlbGVzcyBjYXJkcyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTg2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTg3OmNvbmZpZyBBVEg5S19IVENfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTg4LVx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDlrX2h0YyBkZWJ1Z2dpbmdcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjE4OTpcdGRlcGVuZHMgb24gQVRIOUtfSFRDIFx1MDAyNlx1MDAyNiBERUJVR19GU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTkwLVx0c2VsZWN0IEFUSDlLX0NPTU1PTl9ERUJVR1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnPTIwNj1jb25maWcgQVRIOUtfQ09NTU9OX1NQRUNUUkFMXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0yMDctXHRib29sIFwmIzM0O0F0aGVyb3MgYXRoOWsvYXRoOWtfaHRjIHNwZWN0cmFsIHNjYW4gc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MjA4Olx0ZGVwZW5kcyBvbiBBVEg5S19ERUJVR0ZTIHx8IEFUSDlLX0hUQ19ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0yMDktXHRzZWxlY3QgUkVMQVlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU9Njg9YXRoOWtfaHRjLXkgJiM0Mzs9XHRodGNfaHN0Lm8gXFxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtNzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6Nzc6YXRoOWtfaHRjLSQoQ09ORklHX0FUSDlLX0hUQ19ERUJVR0ZTKSAmIzQzOz0gaHRjX2Rydl9kZWJ1Zy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtNzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6Nzk6b2JqLSQoQ09ORklHX0FUSDlLX0hUQykgJiM0Mzs9IGF0aDlrX2h0Yy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtODAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwM19lZXByb20uYz0zMzkwPXN0YXRpYyBib29sIGF0aDlrX2h3X2FyOTMwMF9maWxsX2VlcHJvbShzdHJ1Y3QgYXRoX2h3ICphaClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAzX2VlcHJvbS5jLTM0MDAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAzX2VlcHJvbS5jOjM0MDE6I2lmIGRlZmluZWQoQ09ORklHX0FUSDlLX0RFQlVHRlMpIHx8IGRlZmluZWQoQ09ORklHX0FUSDlLX0hUQ19ERUJVR0ZTKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwM19lZXByb20uYy0zNDAyLXN0YXRpYyB1MzIgYXI5MDAzX2R1bXBfbW9kYWxfZWVwcm9tKGNoYXIgKmJ1ZiwgdTMyIGxlbiwgdTMyIHNpemUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYz0yMzk9c3RhdGljIGlubGluZSB2b2lkIGF0aDlrX3NrYl9xdWV1ZV9jb21wbGV0ZShzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0yNDUtXHR3aGlsZSAoKHNrYiA9IF9fc2tiX2RlcXVldWUocXVldWUpKSAhPSBOVUxMKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjI0NjojaWZkZWYgQ09ORklHX0FUSDlLX0hUQ19ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTI0Ny1cdFx0aW50IGxuID0gc2tiLVx1MDAzZWxlbjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jPTM4Mz1zdGF0aWMgaW50IGhpZl91c2Jfc2VuZF90eChzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00MDYtXHQvKiBNZ210L0JlYWNvbiBmcmFtZXMgZG9uJiMzOTt0IHVzZSB0aGUgVFggYnVmZmVyIHBvb2wgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NDA3Olx0aWYgKCh0eF9jdGwtXHUwMDNldHlwZSA9PSBBVEg5S19IVENfTUdNVCkgfHxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NDA4Olx0ICAgICh0eF9jdGwtXHUwMDNldHlwZSA9PSBBVEg5S19IVENfQkVBQ09OKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00MDktXHRcdHJldCA9IGhpZl91c2Jfc2VuZF9tZ210KGhpZl9kZXYsIHNrYik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00MTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjQxNDpcdGlmICgodHhfY3RsLVx1MDAzZXR5cGUgPT0gQVRIOUtfSFRDX05PUk1BTCkgfHxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NDE1Olx0ICAgICh0eF9jdGwtXHUwMDNldHlwZSA9PSBBVEg5S19IVENfQU1QRFUpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQxNi1cdFx0X19za2JfcXVldWVfdGFpbChcdTAwMjZoaWZfZGV2LVx1MDAzZXR4LnR4X3NrYl9xdWV1ZSwgc2tiKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jPTQ5ND1zdGF0aWMgaW5saW5lIGJvb2wgY2hlY2tfaW5kZXgoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTggaWR4KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNDk5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo1MDA6XHRpZiAoKHR4X2N0bC1cdTAwM2V0eXBlID09IEFUSDlLX0hUQ19BTVBEVSkgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTUwMS1cdCAgICAodHhfY3RsLVx1MDAzZXN0YV9pZHggPT0gaWR4KSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9NTY9ZW51bSBodGNfb3Btb2RlIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6NjU6I2RlZmluZSBBVEg5S19IVENfQU1QRFUgIDFcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo2NjojZGVmaW5lIEFUSDlLX0hUQ19OT1JNQUwgMlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjY3OiNkZWZpbmUgQVRIOUtfSFRDX0JFQUNPTiAzXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6Njg6I2RlZmluZSBBVEg5S19IVENfTUdNVCAgIDRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC02OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo3MDojZGVmaW5lIEFUSDlLX0hUQ19UWF9DVFNPTkxZICAgICAgMHgxXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6NzE6I2RlZmluZSBBVEg5S19IVENfVFhfUlRTQ1RTICAgICAgIDB4MlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTcyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTczPXN0cnVjdCB0eF9mcmFtZV9oZHIge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC03Ny1cdHU4IHRpZG5vO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjc4Olx0X19iZTMyIGZsYWdzOyAvKiBBVEg5S19IVENfVFhfKiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTc5LVx0dTgga2V5X3R5cGU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTE5ND1zdHJ1Y3QgYXRoOWtfaHRjX3RhcmdldF9yeF9zdGF0cyB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTE5OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyMDA6I2RlZmluZSBBVEg5S19IVENfTUFYX1ZJRiAyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MjAxOiNkZWZpbmUgQVRIOUtfSFRDX01BWF9CQ05fVklGIDJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0yMDItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTI0OT1zdHJ1Y3QgYXRoOWtfdmlmX2l0ZXJfZGF0YSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI1My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyNTQ6I2RlZmluZSBBVEg5S19IVENfTUFYX1NUQSA4XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MjU1OiNkZWZpbmUgQVRIOUtfSFRDX01BWF9USUQgOFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI1Ni1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9MjY0PXN0cnVjdCBhdGg5a19odGNfc3RhIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0yNjUtXHR1OCBpbmRleDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyNjY6XHRlbnVtIHRpZF9hZ2dyX3N0YXRlIHRpZF9zdGF0ZVtBVEg5S19IVENfTUFYX1RJRF07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMjY3LVx0c3RydWN0IHdvcmtfc3RydWN0IHJjX3VwZGF0ZV93b3JrO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0yNzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MjcxOiNkZWZpbmUgQVRIOUtfSFRDX1JYQlVGIDI1NlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI3Mi0jZGVmaW5lIEhUQ19SWF9GUkFNRV9IRUFERVJfU0laRSA0MFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD0yODE9c3RydWN0IGF0aDlrX2h0Y19yeCB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI4Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyODc6I2RlZmluZSBBVEg5S19IVENfVFhfQ0xFQU5VUF9JTlRFUlZBTCA1MCAvKiBtcyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI4ODojZGVmaW5lIEFUSDlLX0hUQ19UWF9USU1FT1VUX0lOVEVSVkFMIDMwMDAgLyogbXMgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyODk6I2RlZmluZSBBVEg5S19IVENfVFhfUkVTRVJWRSAxMFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI5MDojZGVmaW5lIEFUSDlLX0hUQ19UWF9USU1FT1VUX0NPVU5UIDQwXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MjkxOiNkZWZpbmUgQVRIOUtfSFRDX1RYX1RIUkVTSE9MRCAoTUFYX1RYX0JVRl9OVU0gLSBBVEg5S19IVENfVFhfUkVTRVJWRSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0yOTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MjkzOiNkZWZpbmUgQVRIOUtfSFRDX09QX1RYX1FVRVVFU19TVE9QIEJJVCgwKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI5NDojZGVmaW5lIEFUSDlLX0hUQ19PUF9UWF9EUkFJTiAgICAgICBCSVQoMSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0yOTUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTMxMT1zdHJ1Y3QgYXRoOWtfaHRjX3R4X2N0bCB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MzEyOlx0dTggdHlwZTsgLyogQVRIOUtfSFRDXyogKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0zMTMtXHR1OCBlcGlkO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD0zMTk9c3RhdGljIGlubGluZSBzdHJ1Y3QgYXRoOWtfaHRjX3R4X2N0bCAqSFRDX1NLQl9DQihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0zMjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MzI4OiNpZmRlZiBDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0zMjktI2RlZmluZSBfX1NUQVRfU0FGRShoaWZfZGV2LCBleHByKVx0ZG8geyAoKGhpZl9kZXYpLVx1MDAzZWh0Y19oYW5kbGUtXHUwMDNlZHJ2X3ByaXYgPyAoZXhwcikgOiAwKTsgfSB3aGlsZSAoMClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9Mzg4PXN0YXRpYyBpbmxpbmUgdm9pZCBhdGg5a19odGNfZXJyX3N0YXRfcngoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0zOTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MzkzOiNlbmRpZiAvKiBDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlMgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0zOTQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTQwOT1zdHJ1Y3QgaHRjX2JlYWNvbiB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTQxNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo0MTY6XHRzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqYnNsb3RbQVRIOUtfSFRDX01BWF9CQ05fVklGXTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC00MTctXHR1MzIgYm1pc3NjbnQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTQ1Nj1zdHJ1Y3QgYXRoOWtfaHRjX3ByaXYge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC00NzgtXHR1OCBzdGFfc2xvdDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo0Nzk6XHR1OCB2aWZfc3RhX3Bvc1tBVEg5S19IVENfTUFYX1ZJRl07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNDgwLVx0dTggbnVtX2lic3NfdmlmO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC01MzUtXHRzdHJ1Y3QgZGVsYXllZF93b3JrIGR1dHlfY3ljbGVfd29yaztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo1MzY6I2lmZGVmIENPTkZJR19BVEg5S19IVENfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTUzNy1cdHN0cnVjdCBhdGg5a19kZWJ1ZyBkZWJ1Zztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9NjQxPWludCBhdGg5a19odGNfcmVzdW1lKHN0cnVjdCBodGNfdGFyZ2V0ICpodGNfaGFuZGxlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC02NDItI2VuZGlmXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6NjQzOiNpZmRlZiBDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC02NDQtaW50IGF0aDlrX2h0Y19pbml0X2RlYnVnKHN0cnVjdCBhdGhfaHcgKmFoKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9NjQ4PXN0YXRpYyBpbmxpbmUgdm9pZCBhdGg5a19odGNfZGVpbml0X2RlYnVnKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNjUwLX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo2NTE6I2VuZGlmIC8qIENPTkZJR19BVEg5S19IVENfREVCVUdGUyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTY1Mi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYz0xMTE9c3RhdGljIHZvaWQgYXRoOWtfaHRjX2JlYWNvbl9jb25maWdfYXAoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTExNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jOjExNzpcdGF0aDlrX2Ntbl9iZWFjb25fY29uZmlnX2FwKGFoLCBjb25mLCBBVEg5S19IVENfTUFYX0JDTl9WSUYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMTE4LVx0YXRoOWtfaHRjX2JlYWNvbl9pbml0KHByaXYsIGNvbmYsIGZhbHNlKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYz0xOTE9c3RhdGljIHZvaWQgYXRoOWtfaHRjX3NlbmRfYmVhY29uKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYy0yNDItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYzoyNDM6XHR0eF9jdGwtXHUwMDNldHlwZSA9IEFUSDlLX0hUQ19CRUFDT047XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYy0yNDQtXHR0eF9jdGwtXHUwMDNlZXBpZCA9IHByaXYtXHUwMDNlYmVhY29uX2VwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jPTI2ND1zdGF0aWMgaW50IGF0aDlrX2h0Y19jaG9vc2VfYnNsb3Qoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTI3Ni1cdHRzZnR1ID0gVFNGX1RPX1RVKHRzZiBcdTAwM2VcdTAwM2UgMzIsIHRzZik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYzoyNzc6XHRzbG90ID0gKCh0c2Z0dSAlIGludHZhbCkgKiBBVEg5S19IVENfTUFYX0JDTl9WSUYpIC8gaW50dmFsO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmM6Mjc4Olx0c2xvdCA9IEFUSDlLX0hUQ19NQVhfQkNOX1ZJRiAtIHNsb3QgLSAxO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMjc5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jPTMyNT12b2lkIGF0aDlrX2h0Y19hc3NpZ25fYnNsb3Qoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTMzMi1cdHNwaW5fbG9ja19iaChcdTAwMjZwcml2LVx1MDAzZWJlYWNvbl9sb2NrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jOjMzMzpcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFUSDlLX0hUQ19NQVhfQkNOX1ZJRjsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTMzNC1cdFx0aWYgKHByaXYtXHUwMDNlYmVhY29uLmJzbG90W2ldID09IE5VTEwpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYz0zNjU9dm9pZCBhdGg5a19odGNfc2V0X3RzZmFkanVzdChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMzgwLVx0ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYzozODE6XHR0c2ZhZGp1c3QgPSBjdXJfY29uZi1cdTAwM2ViZWFjb25faW50ZXJ2YWwgKiBhdnAtXHUwMDNlYnNsb3QgLyBBVEg5S19IVENfTUFYX0JDTl9WSUY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYy0zODItXHRhdnAtXHUwMDNldHNmYWRqdXN0ID0gY3B1X3RvX2xlNjQoVFVfVE9fVVNFQyh0c2ZhZGp1c3QpKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jPTM5OD1zdGF0aWMgY29uc3QgY2hhciBhdGg5a19odGNfZ3N0cmluZ3Nfc3RhdHNbXVtFVEhfR1NUUklOR19MRU5dID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMtNDE4LX07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jOjQxOTojZGVmaW5lIEFUSDlLX0hUQ19TU1RBVFNfTEVOIEFSUkFZX1NJWkUoYXRoOWtfaHRjX2dzdHJpbmdzX3N0YXRzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYy00MjAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYz00MzA9aW50IGF0aDlrX2h0Y19nZXRfZXRfc3NldF9jb3VudChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jLTQzMy1cdGlmIChzc2V0ID09IEVUSF9TU19TVEFUUylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM6NDM0Olx0XHRyZXR1cm4gQVRIOUtfSFRDX1NTVEFUU19MRU47XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jLTQzNS1cdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM9NDQ4PXZvaWQgYXRoOWtfaHRjX2dldF9ldF9zdGF0cyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jLTQ3My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM6NDc0Olx0V0FSTl9PTihpICE9IEFUSDlLX0hUQ19TU1RBVFNfTEVOKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMtNDc1LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM9NjA2PXN0YXRpYyBpbnQgYXRoOWtfaW5pdF9wcml2KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmMtNjczLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jOjY3NDpcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFUSDlLX0hUQ19NQVhfQkNOX1ZJRjsgaSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmMtNjc1LVx0XHRwcml2LVx1MDAzZWJlYWNvbi5ic2xvdFtpXSA9IE5VTEw7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jPTE4ND12b2lkIGF0aDlrX2h0Y19yZXNldChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTIzMy1cdG1vZF90aW1lcihcdTAwMjZwcml2LVx1MDAzZXR4LmNsZWFudXBfdGltZXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6MjM0Olx0XHQgIGppZmZpZXMgJiM0MzsgbXNlY3NfdG9famlmZmllcyhBVEg5S19IVENfVFhfQ0xFQU5VUF9JTlRFUlZBTCkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTIzNS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM9MjQwPXN0YXRpYyBpbnQgYXRoOWtfaHRjX3NldF9jaGFubmVsKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMzExLVx0bW9kX3RpbWVyKFx1MDAyNnByaXYtXHUwMDNldHguY2xlYW51cF90aW1lcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzozMTI6XHRcdCAgamlmZmllcyAmIzQzOyBtc2Vjc190b19qaWZmaWVzKEFUSDlLX0hUQ19UWF9DTEVBTlVQX0lOVEVSVkFMKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMzEzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYz0zNTA9c3RhdGljIGludCBhdGg5a19odGNfYWRkX21vbml0b3JfaW50ZXJmYWNlKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMzU3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjM1ODpcdGlmICgocHJpdi1cdTAwM2VudmlmcyBcdTAwM2U9IEFUSDlLX0hUQ19NQVhfVklGKSB8fFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjM1OTpcdCAgICAocHJpdi1cdTAwM2Vuc3RhdGlvbnMgXHUwMDNlPSBBVEg5S19IVENfTUFYX1NUQSkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0zNjAtXHRcdHJldCA9IC1FTk9CVUZTO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0zNjQtXHRzdGFfaWR4ID0gZmZ6KHByaXYtXHUwMDNlc3RhX3Nsb3QpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjM2NTpcdGlmICgoc3RhX2lkeCBcdTAwM2MgMCkgfHwgKHN0YV9pZHggXHUwMDNlIEFUSDlLX0hUQ19NQVhfU1RBKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTM2Ni1cdFx0cmV0ID0gLUVOT0JVRlM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jPTQ2Nj1zdGF0aWMgaW50IGF0aDlrX2h0Y19hZGRfc3RhdGlvbihzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTQ3Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzo0Nzg6XHRpZiAocHJpdi1cdTAwM2Vuc3RhdGlvbnMgXHUwMDNlPSBBVEg5S19IVENfTUFYX1NUQSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy00NzktXHRcdHJldHVybiAtRU5PQlVGUztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtNDgxLVx0c3RhX2lkeCA9IGZmeihwcml2LVx1MDAzZXN0YV9zbG90KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzo0ODI6XHRpZiAoKHN0YV9pZHggXHUwMDNjIDApIHx8IChzdGFfaWR4IFx1MDAzZSBBVEg5S19IVENfTUFYX1NUQSkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtNDgzLVx0XHRyZXR1cm4gLUVOT0JVRlM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jPTcwMj1zdGF0aWMgaW50IGF0aDlrX2h0Y190eF9hZ2dyX29wZXIoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy03MTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6NzE0Olx0aWYgKHRpZCBcdTAwM2U9IEFUSDlLX0hUQ19NQVhfVElEKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTcxNS1cdFx0cmV0dXJuIC1FSU5WQUw7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jPTkwNz1zdGF0aWMgaW50IGF0aDlrX2h0Y19zdGFydChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtOTYwLVx0c3Bpbl9sb2NrX2JoKFx1MDAyNnByaXYtXHUwMDNldHgudHhfbG9jayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6OTYxOlx0cHJpdi1cdTAwM2V0eC5mbGFncyBcdTAwMjY9IH5BVEg5S19IVENfT1BfVFhfUVVFVUVTX1NUT1A7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtOTYyLVx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2cHJpdi1cdTAwM2V0eC50eF9sb2NrKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtOTY2LVx0bW9kX3RpbWVyKFx1MDAyNnByaXYtXHUwMDNldHguY2xlYW51cF90aW1lcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzo5Njc6XHRcdCAgamlmZmllcyAmIzQzOyBtc2Vjc190b19qaWZmaWVzKEFUSDlLX0hUQ19UWF9DTEVBTlVQX0lOVEVSVkFMKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtOTY4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYz0xNjU4PXN0YXRpYyBpbnQgYXRoOWtfaHRjX2FtcGR1X2FjdGlvbihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMTY4OC1cdGNhc2UgSUVFRTgwMjExX0FNUERVX1RYX09QRVJBVElPTkFMOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjE2ODk6XHRcdGlmICh0aWQgXHUwMDNlPSBBVEg5S19IVENfTUFYX1RJRCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTE2OTAtXHRcdFx0cmV0ID0gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM9MTg3ND1zdHJ1Y3QgaWVlZTgwMjExX29wcyBhdGg5a19odGNfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0xOTA2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjE5MDc6I2lmZGVmIENPTkZJR19BVEg5S19IVENfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTE5MDgtXHQuZ2V0X2V0X3NzZXRfY291bnQgID0gYXRoOWtfaHRjX2dldF9ldF9zc2V0X2NvdW50LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz0yMz1zdGF0aWMgY29uc3QgaW50IHN1YnR5cGVfdHhxX3RvX2h3cVtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0yOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzozMDojZGVmaW5lIEFUSDlLX0hUQ19JTklUX1RYUShzdWJ0eXBlKSBkbyB7XHRcdFx0XFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0zMS1cdFx0cWkudHFpX3N1YnR5cGUgPSBzdWJ0eXBlX3R4cV90b19od3Fbc3VidHlwZV07XHRcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz01Nj12b2lkIGF0aDlrX2h0Y19jaGVja19zdG9wX3F1ZXVlcyhzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTU5LVx0cHJpdi1cdTAwM2V0eC5xdWV1ZWRfY250JiM0MzsmIzQzOztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo2MDpcdGlmICgocHJpdi1cdTAwM2V0eC5xdWV1ZWRfY250IFx1MDAzZT0gQVRIOUtfSFRDX1RYX1RIUkVTSE9MRCkgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NjE6XHQgICAgIShwcml2LVx1MDAzZXR4LmZsYWdzIFx1MDAyNiBBVEg5S19IVENfT1BfVFhfUVVFVUVTX1NUT1ApKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NjI6XHRcdHByaXYtXHUwMDNldHguZmxhZ3MgfD0gQVRIOUtfSFRDX09QX1RYX1FVRVVFU19TVE9QO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTYzLVx0XHRpZWVlODAyMTFfc3RvcF9xdWV1ZXMocHJpdi1cdTAwM2Vodyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTY4PXZvaWQgYXRoOWtfaHRjX2NoZWNrX3dha2VfcXVldWVzKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNzAtXHRzcGluX2xvY2tfYmgoXHUwMDI2cHJpdi1cdTAwM2V0eC50eF9sb2NrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo3MTpcdGlmICgocHJpdi1cdTAwM2V0eC5xdWV1ZWRfY250IFx1MDAzYyBBVEg5S19IVENfVFhfVEhSRVNIT0xEKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo3MjpcdCAgICAocHJpdi1cdTAwM2V0eC5mbGFncyBcdTAwMjYgQVRIOUtfSFRDX09QX1RYX1FVRVVFU19TVE9QKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjczOlx0XHRwcml2LVx1MDAzZXR4LmZsYWdzIFx1MDAyNj0gfkFUSDlLX0hUQ19PUF9UWF9RVUVVRVNfU1RPUDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy03NC1cdFx0aWVlZTgwMjExX3dha2VfcXVldWVzKHByaXYtXHUwMDNlaHcpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz0yMTQ9c3RhdGljIHZvaWQgYXRoOWtfaHRjX3R4X21nbXQoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0yNDAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6MjQxOlx0dHhfY3RsLVx1MDAzZXR5cGUgPSBBVEg5S19IVENfTUdNVDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0yNDItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTI2MD1zdGF0aWMgdm9pZCBhdGg5a19odGNfdHhfZGF0YShzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTI5Mi1cdGlmICh0eF9pbmZvLVx1MDAzZWZsYWdzIFx1MDAyNiBJRUVFODAyMTFfVFhfQ1RMX0FNUERVKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6MjkzOlx0XHR0eF9jdGwtXHUwMDNldHlwZSA9IEFUSDlLX0hUQ19BTVBEVTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzoyOTQ6XHRcdHR4X2hkci5kYXRhX3R5cGUgPSBBVEg5S19IVENfQU1QRFU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMjk1LVx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzoyOTY6XHRcdHR4X2N0bC1cdTAwM2V0eXBlID0gQVRIOUtfSFRDX05PUk1BTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzoyOTc6XHRcdHR4X2hkci5kYXRhX3R5cGUgPSBBVEg5S19IVENfTk9STUFMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTI5OC1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMzEyLVx0XHRpZiAoc2tiLVx1MDAzZWxlbiBcdTAwM2UgcHJpdi1cdTAwM2Vody1cdTAwM2V3aXBoeS1cdTAwM2VydHNfdGhyZXNob2xkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjMxMzpcdFx0XHRmbGFncyB8PSBBVEg5S19IVENfVFhfUlRTQ1RTO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTMxNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0zMTUtXHQvKiBDVFMtdG8tc2VsZiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjMxNjpcdGlmICghKGZsYWdzIFx1MDAyNiBBVEg5S19IVENfVFhfUlRTQ1RTKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0zMTctXHQgICAgKHZpZiBcdTAwMjZcdTAwMjYgdmlmLVx1MDAzZWJzc19jb25mLnVzZV9jdHNfcHJvdCkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6MzE4Olx0XHRmbGFncyB8PSBBVEg5S19IVENfVFhfQ1RTT05MWTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0zMTktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTM5Mj1zdGF0aWMgaW5saW5lIGJvb2wgX19hdGg5a19odGNfY2hlY2tfdHhfYWdncihzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTM5Ny1cdHNwaW5fbG9ja19iaChcdTAwMjZwcml2LVx1MDAzZXR4LnR4X2xvY2spO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjM5ODpcdGlmICgodGlkIFx1MDAzYyBBVEg5S19IVENfTUFYX1RJRCkgXHUwMDI2XHUwMDI2IChpc3RhLVx1MDAzZXRpZF9zdGF0ZVt0aWRdID09IEFHR1JfU1RPUCkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMzk5LVx0XHRyZXQgPSB0cnVlO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz00NDU9c3RhdGljIHZvaWQgYXRoOWtfaHRjX3R4X3Byb2Nlc3Moc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00NzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NDc5Olx0aWYgKHR4cy1cdTAwM2V0c19mbGFncyBcdTAwMjYgQVRIOUtfSFRDX1RYU1RBVF9BQ0spIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00ODAtXHRcdHR4X2luZm8tXHUwMDNlZmxhZ3MgfD0gSUVFRTgwMjExX1RYX1NUQVRfQUNLO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00ODQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NDg1Olx0aWYgKHR4cy1cdTAwM2V0c19mbGFncyBcdTAwMjYgQVRIOUtfSFRDX1RYU1RBVF9GSUxUKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ4Ni1cdFx0dHhfaW5mby1cdTAwM2VmbGFncyB8PSBJRUVFODAyMTFfVFhfU1RBVF9UWF9GSUxURVJFRDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00ODctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NDg4Olx0aWYgKHR4cy1cdTAwM2V0c19mbGFncyBcdTAwMjYgQVRIOUtfSFRDX1RYU1RBVF9SVENfQ1RTKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ4OS1cdFx0cmF0ZS1cdTAwM2VmbGFncyB8PSBJRUVFODAyMTFfVFhfUkNfVVNFX1JUU19DVFM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ5MS1cdHJhdGUtXHUwMDNlY291bnQgPSAxO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjQ5MjpcdHJhdGUtXHUwMDNlaWR4ID0gTVModHhzLVx1MDAzZXRzX3JhdGUsIEFUSDlLX0hUQ19UWFNUQVRfUkFURSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDkzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjQ5NDpcdGlmICh0eHMtXHUwMDNldHNfZmxhZ3MgXHUwMDI2IEFUSDlLX0hUQ19UWFNUQVRfTUNTKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDk1LVx0XHRyYXRlLVx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9UWF9SQ19NQ1M7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDk2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjQ5NzpcdFx0aWYgKHR4cy1cdTAwM2V0c19mbGFncyBcdTAwMjYgQVRIOUtfSFRDX1RYU1RBVF9DVzQwKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ5OC1cdFx0XHRyYXRlLVx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9UWF9SQ180MF9NSFpfV0lEVEg7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NDk5Olx0XHRpZiAodHhzLVx1MDAzZXRzX2ZsYWdzIFx1MDAyNiBBVEg5S19IVENfVFhTVEFUX1NHSSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy01MDAtXHRcdFx0cmF0ZS1cdTAwM2VmbGFncyB8PSBJRUVFODAyMTFfVFhfUkNfU0hPUlRfR0k7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTUzOT12b2lkIGF0aDlrX2h0Y190eF9kcmFpbihzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTU0My1cdHNwaW5fbG9ja19iaChcdTAwMjZwcml2LVx1MDAzZXR4LnR4X2xvY2spO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjU0NDpcdHByaXYtXHUwMDNldHguZmxhZ3MgfD0gQVRIOUtfSFRDX09QX1RYX0RSQUlOO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTU0NS1cdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnByaXYtXHUwMDNldHgudHhfbG9jayk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTU3My1cdHNwaW5fbG9ja19iaChcdTAwMjZwcml2LVx1MDAzZXR4LnR4X2xvY2spO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjU3NDpcdHByaXYtXHUwMDNldHguZmxhZ3MgXHUwMDI2PSB+QVRIOUtfSFRDX09QX1RYX0RSQUlOO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTU3NS1cdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnByaXYtXHUwMDNldHgudHhfbG9jayk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTU3OD12b2lkIGF0aDlrX3R4X2ZhaWxlZF90YXNrbGV0KHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNTgyLVx0c3Bpbl9sb2NrKFx1MDAyNnByaXYtXHUwMDNldHgudHhfbG9jayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NTgzOlx0aWYgKHByaXYtXHUwMDNldHguZmxhZ3MgXHUwMDI2IEFUSDlLX0hUQ19PUF9UWF9EUkFJTikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTU4NC1cdFx0c3Bpbl91bmxvY2soXHUwMDI2cHJpdi1cdTAwM2V0eC50eF9sb2NrKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9NjE4PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiogYXRoOWtfaHRjX3R4X2dldF9wYWNrZXQoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy02MjQtXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjYyNTpcdHU4IGVwaWQgPSBNUyh0eHMtXHUwMDNldHNfcmF0ZSwgQVRIOUtfSFRDX1RYU1RBVF9FUElEKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy02MjYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTcxNj1zdGF0aWMgaW5saW5lIGJvb2wgY2hlY2tfcGFja2V0KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNzI0LVx0XHQgICAgICAgdHhfY3RsLVx1MDAzZXRpbWVzdGFtcCAmIzQzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjcyNTpcdFx0ICAgICAgIG1zZWNzX3RvX2ppZmZpZXMoQVRIOUtfSFRDX1RYX1RJTUVPVVRfSU5URVJWQUwpKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTcyNi1cdFx0YXRoX2RiZyhjb21tb24sIFhNSVQsIFwmIzM0O0Ryb3BwaW5nIGEgcGFja2V0IGR1ZSB0byBUWCB0aW1lb3V0XFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9NzYxPXZvaWQgYXRoOWtfaHRjX3R4X2NsZWFudXBfdGltZXIoc3RydWN0IHRpbWVyX2xpc3QgKnQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTc3Ni1cdFx0XHRcdGV2ZW50LVx1MDAzZXR4cy5jb29raWUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6Nzc3Olx0XHRcdFx0TVMoZXZlbnQtXHUwMDNldHhzLnRzX3JhdGUsIEFUSDlLX0hUQ19UWFNUQVRfRVBJRCkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTc3OC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNzg0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjc4NTpcdFx0aWYgKCYjNDM7JiM0MztldmVudC1cdTAwM2Vjb3VudCBcdTAwM2U9IEFUSDlLX0hUQ19UWF9USU1FT1VUX0NPVU5UKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNzg2LVx0XHRcdGxpc3RfZGVsKFx1MDAyNmV2ZW50LVx1MDAzZWxpc3QpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy04MDUtXHRtb2RfdGltZXIoXHUwMDI2cHJpdi1cdTAwM2V0eC5jbGVhbnVwX3RpbWVyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjgwNjpcdFx0ICBqaWZmaWVzICYjNDM7IG1zZWNzX3RvX2ppZmZpZXMoQVRIOUtfSFRDX1RYX0NMRUFOVVBfSU5URVJWQUwpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy04MDctfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz04Mjc9Ym9vbCBhdGg5a19odGNfdHhxX3NldHVwKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdiwgaW50IHN1YnR5cGUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTgzNC1cdG1lbXNldChcdTAwMjZxaSwgMCwgc2l6ZW9mKHFpKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6ODM1Olx0QVRIOUtfSFRDX0lOSVRfVFhRKHN1YnR5cGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTgzNi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9ODUyPWludCBhdGg5a19odGNfY2FicV9zZXR1cChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTg1Ni1cdG1lbXNldChcdTAwMjZxaSwgMCwgc2l6ZW9mKHFpKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6ODU3Olx0QVRIOUtfSFRDX0lOSVRfVFhRKDApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTg1OC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9MTE4Nz1pbnQgYXRoOWtfcnhfaW5pdChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTExOTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6MTE5NDpcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFUSDlLX0hUQ19SWEJVRjsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0xMTk1LVx0XHRzdHJ1Y3QgYXRoOWtfaHRjX3J4YnVmICpyeGJ1ZiA9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jPTEzOD12b2lkIGF0aDlrX3dtaV9ldmVudF90YXNrbGV0KHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmMtMTc4LVx0XHRcdHNwaW5fbG9ja19iaChcdTAwMjZwcml2LVx1MDAzZXR4LnR4X2xvY2spO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jOjE3OTpcdFx0XHRpZiAocHJpdi1cdTAwM2V0eC5mbGFncyBcdTAwMjYgQVRIOUtfSFRDX09QX1RYX0RSQUlOKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmMtMTgwLVx0XHRcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2cHJpdi1cdTAwM2V0eC50eF9sb2NrKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg9Mzk9c3RydWN0IHdtaV9ldmVudF9zd2JhIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmgtNTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6NTE6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX0FDSyAgICAgICAgQklUKDApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6NTI6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX0ZJTFQgICAgICAgQklUKDEpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6NTM6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX1JUQ19DVFMgICAgQklUKDIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6NTQ6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX01DUyAgICAgICAgQklUKDMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6NTU6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX0NXNDAgICAgICAgQklUKDQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6NTY6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX1NHSSAgICAgICAgQklUKDUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmgtNTctXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oLTYzLSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oOjY0OiNkZWZpbmUgQVRIOUtfSFRDX1RYU1RBVF9SQVRFICAgICAgIDB4MGZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo2NTojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfUkFURV9TICAgICAwXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmgtNjYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6Njc6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX0VQSUQgICAgICAgMHhmMFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oOjY4OiNkZWZpbmUgQVRIOUtfSFRDX1RYU1RBVF9FUElEX1MgICAgIDRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaC02OS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAxMjo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjkxNQoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDMyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipDaGVja2luZyBBVEg5S19IVEMgRGVwZW5kZW5jaWVzKioKClJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBzdHJhaWdodCBpbi4gSSBuZWVkIHRvIHBpbnBvaW50IHRoZSAqZXhhY3QqIGRlcGVuZGVuY2llcyBmb3IgYEFUSDlLX0hUQ2AuIEkga25vdyBpdCYjMzk7cyBhIGNyaXRpY2FsIG1vZHVsZSwgc28gSSBjYW4mIzM5O3QgYWZmb3JkIGFueSBhc3N1bXB0aW9ucyBoZXJlLiBUaGUgbW9zdCByZWxpYWJsZSBwbGFjZSB0byBnZXQgdGhlIGRlZmluaXRpdmUgYW5zd2VyIG9uIGRlcGVuZGVuY2llcywgcGFydGljdWxhcmx5IGZvciBhIGRyaXZlciBsaWtlIHRoaXMsIGlzIGFsd2F5cyB0aGUgYEtjb25maWdgIGZpbGUgaW4gaXRzIGRpcmVjdG9yeS4gVGhhdCYjMzk7bGwgYmUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnYC4gTm8gbmVlZCB0byBndWVzcyBvciByZWx5IG9uIG91dGRhdGVkIGRvY3VtZW50YXRpb247IHRoZSBLY29uZmlnIGlzIHRoZSBzb3VyY2Ugb2YgdHJ1dGggZm9yIHRoZSBidWlsZCBzeXN0ZW0uIExldCYjMzk7cyBzZWUgd2hhdCBpdCYjMzk7cyB0aWVkIHRvLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDEyOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE3MDpcdFx0ICBJZiB1bnN1cmUgc2F5IE4uXG4gMTcxOlx0XG4gMTcyOlx0Y29uZmlnIEFUSDlLX0hUQ1xuIDE3MzpcdFx0dHJpc3RhdGUgXCYjMzQ7QXRoZXJvcyBIVEMgYmFzZWQgd2lyZWxlc3MgY2FyZHMgc3VwcG9ydFwmIzM0O1xuIDE3NDpcdFx0ZGVwZW5kcyBvbiBVU0IgXHUwMDI2XHUwMDI2IE1BQzgwMjExXG4gMTc1Olx0XHRzZWxlY3QgTUFDODAyMTFfTEVEUyBpZiBMRURTX0NMQVNTPXkgfHwgTEVEU19DTEFTUz1NQUM4MDIxMVxuIDE3NjpcdFx0c2VsZWN0IEFUSDlLX0hXXG4gMTc3Olx0XHRzZWxlY3QgQVRIOUtfQ09NTU9OXG4gMTc4Olx0XHRoZWxwXG4gMTc5Olx0XHQgIFN1cHBvcnQgZm9yIEF0aGVyb3MgSFRDIGJhc2VkIGNhcmRzLlxuIDE4MDpcdFx0ICBDaGlwc2V0cyBzdXBwb3J0ZWQ6IEFSOTI3MVxuIDE4MTpcdFxuIDE4MjpcdFx0ICBGb3IgbW9yZSBpbmZvcm1hdGlvbjpcbiAxODM6XHRcdCAgaHR0cHM6Ly93aXJlbGVzcy53aWtpLmtlcm5lbC5vcmcvZW4vdXNlcnMvRHJpdmVycy9hdGg5a19odGNcbiAxODQ6XHRcbiAxODU6XHRcdCAgVGhlIGJ1aWx0IG1vZHVsZSB3aWxsIGJlIGF0aDlrX2h0Yy5cbiAxODY6XHRcbiAxODc6XHRjb25maWcgQVRIOUtfSFRDX0RFQlVHRlNcbiAxODg6XHRcdGJvb2wgXCYjMzQ7QXRoZXJvcyBhdGg5a19odGMgZGVidWdnaW5nXCYjMzQ7XG4gMTg5Olx0XHRkZXBlbmRzIG9uIEFUSDlLX0hUQyBcdTAwMjZcdTAwMjYgREVCVUdfRlNcbiAxOTA6XHRcdHNlbGVjdCBBVEg5S19DT01NT05fREVCVUdcbiAxOTE6XHRcdGhlbHBcbiAxOTI6XHRcdCAgU2F5IFksIGlmIHlvdSBuZWVkIGFjY2VzcyB0byBhdGg5a19odGMmIzM5O3Mgc3RhdGlzdGljcy5cbiAxOTM6XHRcdCAgQXMgd2VsbCBhcyBhY2Nlc3MgdG8gdGhlIEZGVC9zcGVjdHJhbCBkYXRhLlxuIDE5NDpcdFxuIDE5NTpcdGNvbmZpZyBBVEg5S19IV1JOR1xuIDE5NjpcdFx0Ym9vbCBcJiMzNDtSYW5kb20gbnVtYmVyIGdlbmVyYXRvciBzdXBwb3J0XCYjMzQ7XG4gMTk3Olx0XHRkZXBlbmRzIG9uIEFUSDlLIFx1MDAyNlx1MDAyNiAoSFdfUkFORE9NID0geSB8fCBIV19SQU5ET00gPSBBVEg5SylcbiAxOTg6XHRcdGRlZmF1bHQgblxuIDE5OTpcdFx0aGVscFxuIDIwMDpcdFx0ICBUaGlzIG9wdGlvbiBpbmNvcnBvcmF0ZXMgdGhlIEFEQyByZWdpc3RlciBvdXRwdXQgYXMgYSBzb3VyY2Ugb2ZcbiAyMDE6XHRcdCAgcmFuZG9tbmVzcyBpbnRvIExpbnV4IGVudHJvcHkgcG9vbCAoL2Rldi91cmFuZG9tIGFuZCAvZGV2L3JhbmRvbSlcbiAyMDI6XHRcbiAyMDM6XHRcdCAgU2F5IFksIGZlZWRzIHRoZSBlbnRyb3B5IGRpcmVjdGx5IGZyb20gdGhlIFdpRmkgZHJpdmVyIHRvIHRoZSBpbnB1dFxuIDIwNDpcdFx0ICBwb29sLlxuIDIwNTpcdFxuIDIwNjpcdGNvbmZpZyBBVEg5S19DT01NT05fU1BFQ1RSQUxcbiAyMDc6XHRcdGJvb2wgXCYjMzQ7QXRoZXJvcyBhdGg5ay9hdGg5a19odGMgc3BlY3RyYWwgc2NhbiBzdXBwb3J0XCYjMzQ7XG4gMjA4Olx0XHRkZXBlbmRzIG9uIEFUSDlLX0RFQlVHRlMgfHwgQVRIOUtfSFRDX0RFQlVHRlNcbiAyMDk6XHRcdHNlbGVjdCBSRUxBWVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDEyOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3Nzg4CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogNTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbm5lY3Rpb24gYmV0d2VlbiB0aGVzZSB0d28gZnVuY3Rpb25zIGFuZCBob3cgdGhleSYjMzk7cmUgYmVpbmcgdXRpbGl6ZWQgaW4gdGhlIGNvZGUuIEkmIzM5O2xsIHN0YXJ0IGJ5IGV4YW1pbmluZyBgaGlmX3VzYi5jYCBhbmQgYGh0Y19kcnZfaW5pdC5jYC4gTXkgcHJpbWFyeSBmb2N1cyBpcyBvbiBob3cgYGhpZl91c2Jfc2VuZF9yZWdvdXRgIGFuZCBgYXRoOWtfcmVnX3Jtd19idWZmZXJgIGFyZSB1c2VkLiBJIHdhbnQgdG8gdHJhY2UgdGhlIGNhbGwgcGF0aHMgdG8gdGhlc2UgZnVuY3Rpb25zIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHRzIGluIHdoaWNoIHRoZXkgb3BlcmF0ZSBhbmQgaG93IHRoZSBzeXN0ZW0gZXZlbnR1YWxseSByZWFjaGVzIHRoZWlyIGV4ZWN1dGlvbi4gVW5kZXJzdGFuZGluZyB0aGVzZSBpbnRlcmNvbm5lY3Rpb25zIHdpbGwgbGlrZWx5IGdpdmUgbWUgaW5zaWdodHMgaW50byBob3cgdGhlIHJlZ2lzdGVyIG91dHB1dCBpcyBiZWluZyBoYW5kbGVkIGFuZCBob3cgaXQgcmVsYXRlcyB0byB0aGUgYnJvYWRlciBzeXN0ZW0gaW5pdGlhbGl6YXRpb24gd2l0aGluIHRoZSBIVEMgZHJpdmVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDEyOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDk1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgOTU6XHRcdGtmcmVlX3NrYihjbWQtXHUwMDNlc2tiKTtcbiAgOTY6XHRcdGtmcmVlKGNtZCk7XG4gIDk3Olx0fVxuICA5ODpcdFxuICA5OTpcdHN0YXRpYyBpbnQgaGlmX3VzYl9zZW5kX3JlZ291dChzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYsXG4gMTAwOlx0XHRcdFx0ICAgICAgIHN0cnVjdCBza19idWZmICpza2IpXG4gMTAxOlx0e1xuIDEwMjpcdFx0dTE2IG1heHBhY2tldCA9IHVzYl9tYXhwYWNrZXQoaGlmX2Rldi1cdTAwM2V1ZGV2LFxuIDEwMzpcdFx0XHRcdFx0ICAgICAgdXNiX3NuZGludHBpcGUoaGlmX2Rldi1cdTAwM2V1ZGV2LFxuIDEwNDpcdFx0XHRcdFx0XHRcdCAgICAgVVNCX1JFR19PVVRfUElQRSkpO1xuIDEwNTpcdFx0c3RydWN0IHVyYiAqdXJiO1xuIDEwNjpcdFx0c3RydWN0IGNtZF9idWYgKmNtZDtcbiAxMDc6XHRcdGludCByZXQgPSAwO1xuIDEwODpcdFxuIDEwOTpcdFx0aWYgKFdBUk5fT05DRShtYXhwYWNrZXQgXHUwMDI2XHUwMDI2IHNrYi1cdTAwM2VsZW4gJSBtYXhwYWNrZXQgPT0gMCxcbiAxMTA6XHRcdFx0ICAgICAgXCYjMzQ7JXUtYnl0ZSBjb21tYW5kIGZpbGxzIHdob2xlIFVTQiBwYWNrZXRzXFxuXCYjMzQ7LCBza2ItXHUwMDNlbGVuKSlcbiAxMTE6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gMTEyOlx0XG4gMTEzOlx0XHR1cmIgPSB1c2JfYWxsb2NfdXJiKDAsIEdGUF9LRVJORUwpO1xuIDExNDpcdFx0aWYgKHVyYiA9PSBOVUxMKVxuIDExNTpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiAxMTY6XHRcbiAxMTc6XHRcdGNtZCA9IGt6YWxsb2Nfb2JqKCpjbWQpO1xuIDExODpcdFx0aWYgKGNtZCA9PSBOVUxMKSB7XG4gMTE5Olx0XHRcdHVzYl9mcmVlX3VyYih1cmIpO1xuIDEyMDpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiAxMjE6XHRcdH1cbiAxMjI6XHRcbiAxMjM6XHRcdGNtZC1cdTAwM2Vza2IgPSBza2I7XG4gMTI0Olx0XHRjbWQtXHUwMDNlaGlmX2RldiA9IGhpZl9kZXY7XG4gMTI1Olx0XG4gMTI2Olx0XHR1c2JfZmlsbF9pbnRfdXJiKHVyYiwgaGlmX2Rldi1cdTAwM2V1ZGV2LFxuIDEyNzpcdFx0XHRcdCB1c2Jfc25kaW50cGlwZShoaWZfZGV2LVx1MDAzZXVkZXYsIFVTQl9SRUdfT1VUX1BJUEUpLFxuIDEyODpcdFx0XHRcdCBza2ItXHUwMDNlZGF0YSwgc2tiLVx1MDAzZWxlbixcbiAxMjk6XHRcdFx0XHQgaGlmX3VzYl9yZWdvdXRfY2IsIGNtZCwgMSk7XG4gMTMwOlx0XG4gMTMxOlx0XHR1c2JfYW5jaG9yX3VyYih1cmIsIFx1MDAyNmhpZl9kZXYtXHUwMDNlcmVnb3V0X3N1Ym1pdHRlZCk7XG4gMTMyOlx0XHRyZXQgPSB1c2Jfc3VibWl0X3VyYih1cmIsIEdGUF9LRVJORUwpO1xuIDEzMzpcdFx0aWYgKHJldCkge1xuIDEzNDpcdFx0XHR1c2JfdW5hbmNob3JfdXJiKHVyYik7XG4gMTM1Olx0XHRcdGtmcmVlKGNtZCk7XG4gMTM2Olx0XHR9XG4gMTM3Olx0XHR1c2JfZnJlZV91cmIodXJiKTtcbiAxMzg6XHRcbiAxMzk6XHRcdHJldHVybiByZXQ7XG4gMTQwOlx0fVxuIDE0MTpcdFxuIDE0MjpcdHN0YXRpYyB2b2lkIGhpZl91c2JfbWdtdF9jYihzdHJ1Y3QgdXJiICp1cmIpXG4gMTQzOlx0e1xuIDE0NDpcdFx0c3RydWN0IGNtZF9idWYgKmNtZCA9IHVyYi1cdTAwM2Vjb250ZXh0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDEyOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4NzgxCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgdGFraW5nIG9uIHRoZSBwZXJzb25hIHlvdSByZXF1ZXN0ZWQ6CgoqKlRyYWNpbmcgdGhlIENhbGxzIHRvIGhpZl91c2Jfc2VuZF9yZWdvdXQqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW4uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBmbG93IGhlcmUsIHNvIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgdHJhY2luZyB0aGUgY2FsbHMgdG8gYGhpZl91c2Jfc2VuZF9yZWdvdXRgLiBJJiMzOTttIHRoaW5raW5nIEkmIzM5O2xsIG5lZWQgdG8gdXNlIHNvbWUgdG9vbGluZywgcHJvYmFibHkgc3RhdGljIGFuYWx5c2lzIGluaXRpYWxseSwgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB0aGUgY2FsbCBncmFwaC4gSSYjMzk7bSBob3BpbmcgaXQmIzM5O3Mgc3RyYWlnaHRmb3J3YXJkOyBhIGNvbXBsZXggY2hhaW4gb2YgaW5kaXJlY3QgZnVuY3Rpb24gY2FsbHMgaXMgdGhlIGxhc3QgdGhpbmcgSSBuZWVkIHJpZ2h0IG5vdy4gSSBzaG91bGQgYmUgYWJsZSB0byBpZGVudGlmeSB0aGUga2V5IG1vZHVsZXMgb3Igc3Vic3lzdGVtcyB0aGF0IGFyZSBpbml0aWF0aW5nIHRoZXNlIHJlZ2lzdGVyIG91dHB1dCBvcGVyYXRpb25zLiBLbm93aW5nIHRoZSBjb250ZXh0IG9mIHRob3NlIGNhbGxzIHdpbGwgYmUgY3JpdGljYWwgZm9yIGZpZ3VyaW5nIG91dCB0aGUgaW50ZW50IGJlaGluZCBlYWNoIG9mIHRoZW0uIFRoZW4sIGJhc2VkIG9uIHRoZSBjYWxscyB0aGVtc2VsdmVzLCBJJiMzOTtsbCBiZSBhYmxlIHRvIHF1aWNrbHkgc2VlIGlmIHRoZXJlJiMzOTtzIGFueSBvYnZpb3VzIHJlZHVuZGFuY3kgb3IgdW5leHBlY3RlZCBiZWhhdmlvci4gSSYjMzk7bGwgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBhcmd1bWVudHMgYmVpbmcgcGFzc2VkIHRvIHRoaXMgZnVuY3Rpb24sIHRvby4gQXJlIHRoZXkgY29uc2lzdGVudCBhY3Jvc3MgY2FsbGVycz8gQXJlIHRoZXJlIGFueSBwYXR0ZXJucyBvciBkaXNjcmVwYW5jaWVzIHRoYXQganVtcCBvdXQ/IFRoaXMgaXMgYSBjcnVjaWFsIGFyZWEgdG8gZXhwbG9yZSwgc2luY2UgdGhlIGFyZ3VtZW50cyB3aWxsIHJldmVhbCAqd2hhdCogaXMgYmVpbmcgc2VudCBvdXQsIGFuZCBsaWtlbHkgKndoeSouIEkmIzM5O2xsIG5lZWQgdG8gdGhpbmsgYWJvdXQgdGhlIGRhdGEgc3RydWN0dXJlcyBiZWluZyBwYXNzZWQsIHBvdGVudGlhbGx5IGNoZWNraW5nIHRoZSBkZWZpbml0aW9ucyBvZiB0aG9zZSBzdHJ1Y3RzIGFuZCBlbnVtcy4gT25jZSBJIHVuZGVyc3RhbmQgdGhlIGNhbGxlcnMgYW5kIHRoZSBwYXJhbWV0ZXJzLCBJIHNob3VsZCBiZSBpbiBhIHNvbGlkIHBvc2l0aW9uIHRvIGFuYWx5emUgdGhlIGltcGFjdCBvZiB0aGlzIGZ1bmN0aW9uLCBpdHMgcG90ZW50aWFsIGJvdHRsZW5lY2tzLCBhbmQgYW55IGFyZWFzIHJpcGUgZm9yIG9wdGltaXphdGlvbiBvciBpbXByb3ZlbWVudC4gVGhpcyBpcyBteSBzdGFydGluZyBwb2ludCwgYW5kIEkgZXhwZWN0IHRvIGFkanVzdCBteSBhcHByb2FjaCBhcyBJIGdvLCBidXQgdGhpcyBzZWVtcyBsaWtlIGEgc29saWQgcGxhbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMTI6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aGlmX3VzYl9zZW5kX3JlZ291dCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYz03MT1zdGF0aWMgdm9pZCBoaWZfdXNiX3JlZ291dF9jYihzdHJ1Y3QgdXJiICp1cmIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy05OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6OTk6c3RhdGljIGludCBoaWZfdXNiX3NlbmRfcmVnb3V0KHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMTAwLVx0XHRcdCAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM9NDcyPXN0YXRpYyBpbnQgaGlmX3VzYl9zZW5kKHZvaWQgKmhpZl9oYW5kbGUsIHU4IHBpcGVfaWQsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00ODEtXHRjYXNlIFVTQl9SRUdfT1VUX1BJUEU6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjQ4MjpcdFx0cmV0ID0gaGlmX3VzYl9zZW5kX3JlZ291dChoaWZfZGV2LCBza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00ODMtXHRcdGJyZWFrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAxMjo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTQ5OQoJCQkJCQkJb3V0cHV0OiA0OAoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSBpbW1lZGlhdGUgdGhvdWdodCBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgRHJpdmVyIEluaXRpYWxpemF0aW9uKioKCk9rYXksIHRpbWUgdG8gZGlnIGluLiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHdoYXQmIzM5O3MgaGFwcGVuaW5nIHdpdGggdGhpcyBIVEMgZHJpdmVyLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBgaHRjX2Rydl9pbml0LmNgIOKAkyB0aGF0JiMzOTtzIHVzdWFsbHkgYSBnb29kIHBsYWNlIHRvIGJlZ2luLCBlc3BlY2lhbGx5IHdpdGggaW5pdGlhbGl6YXRpb24uIFNwZWNpZmljYWxseSwgSSYjMzk7bSBnb2luZyB0byBqdW1wIHRvIGFyb3VuZCBsaW5lIDQwNS4gVGhhdCBzZWN0aW9uIGlzIG9mdGVuIHdoZXJlIGNyaXRpY2FsIGluaXRpYWwgc2V0dXAgb3IgcmVzb3VyY2UgYWxsb2NhdGlvbiB0YWtlcyBwbGFjZS4gSSYjMzk7bSBleHBlY3RpbmcgdG8gZmluZCB0aGUga2V5IGZ1bmN0aW9uIGNhbGxzLCBkYXRhIHN0cnVjdHVyZSBhc3NpZ25tZW50cywgb3IgcGVyaGFwcyBzb21lIGVhcmx5IGhhcmR3YXJlIHByb2JpbmcgdGhhdCB3aWxsIHNoZWQgbGlnaHQgb24gd2hhdCB0aGUgZHJpdmVyIGlzIHVwIHRvLiBMZXQmIzM5O3Mgc2VlIHdoYXQgc2VjcmV0cyB0aGF0IHBhcnRpY3VsYXIgc2VjdGlvbiBob2xkcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMTI6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzOTUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDM5NTpcdFx0cHJpdi1cdTAwM2V3bWktXHUwMDNlbXVsdGlfcm13W3ByaXYtXHUwMDNld21pLVx1MDAzZW11bHRpX3Jtd19pZHhdLnJlZyA9XG4gMzk2Olx0XHRcdGNwdV90b19iZTMyKHJlZ19vZmZzZXQpO1xuIDM5NzpcdFx0cHJpdi1cdTAwM2V3bWktXHUwMDNlbXVsdGlfcm13W3ByaXYtXHUwMDNld21pLVx1MDAzZW11bHRpX3Jtd19pZHhdLnNldCA9XG4gMzk4Olx0XHRcdGNwdV90b19iZTMyKHNldCk7XG4gMzk5Olx0XHRwcml2LVx1MDAzZXdtaS1cdTAwM2VtdWx0aV9ybXdbcHJpdi1cdTAwM2V3bWktXHUwMDNlbXVsdGlfcm13X2lkeF0uY2xyID1cbiA0MDA6XHRcdFx0Y3B1X3RvX2JlMzIoY2xyKTtcbiA0MDE6XHRcbiA0MDI6XHRcdHByaXYtXHUwMDNld21pLVx1MDAzZW11bHRpX3Jtd19pZHgmIzQzOyYjNDM7O1xuIDQwMzpcdFxuIDQwNDpcdFx0LyogSWYgdGhlIGJ1ZmZlciBpcyBmdWxsLCBzZW5kIGl0IG91dC4gKi9cbiA0MDU6XHRcdGlmIChwcml2LVx1MDAzZXdtaS1cdTAwM2VtdWx0aV9ybXdfaWR4ID09IE1BWF9STVdfQ01EX05VTUJFUikge1xuIDQwNjpcdFx0XHRyID0gYXRoOWtfd21pX2NtZChwcml2LVx1MDAzZXdtaSwgV01JX1JFR19STVdfQ01ESUQsXG4gNDA3Olx0XHRcdFx0ICAodTggKikgXHUwMDI2cHJpdi1cdTAwM2V3bWktXHUwMDNlbXVsdGlfcm13LFxuIDQwODpcdFx0XHRcdCAgc2l6ZW9mKHN0cnVjdCByZWdpc3Rlcl9ybXcpICogcHJpdi1cdTAwM2V3bWktXHUwMDNlbXVsdGlfcm13X2lkeCxcbiA0MDk6XHRcdFx0XHQgICh1OCAqKSBcdTAwMjZyc3Bfc3RhdHVzLCBzaXplb2YocnNwX3N0YXR1cyksXG4gNDEwOlx0XHRcdFx0ICAxMDApO1xuIDQxMTpcdFx0XHRpZiAodW5saWtlbHkocikpIHtcbiA0MTI6XHRcdFx0XHRhdGhfZGJnKGNvbW1vbiwgV01JLFxuIDQxMzpcdFx0XHRcdFx0XCYjMzQ7UkVHSVNURVIgUk1XIEZBSUxFRCwgbXVsdGkgbGVuOiAlZFxcblwmIzM0OyxcbiA0MTQ6XHRcdFx0XHRcdHByaXYtXHUwMDNld21pLVx1MDAzZW11bHRpX3Jtd19pZHgpO1xuIDQxNTpcdFx0XHR9XG4gNDE2Olx0XHRcdHByaXYtXHUwMDNld21pLVx1MDAzZW11bHRpX3Jtd19pZHggPSAwO1xuIDQxNzpcdFx0fVxuIDQxODpcdFxuIDQxOTpcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnByaXYtXHUwMDNld21pLVx1MDAzZW11bHRpX3Jtd19tdXRleCk7XG4gNDIwOlx0fVxuIDQyMTpcdFxuIDQyMjpcdHN0YXRpYyB2b2lkIGF0aDlrX3JlZ19ybXdfZmx1c2godm9pZCAqaHdfcHJpdilcbiA0MjM6XHR7XG4gNDI0Olx0XHRzdHJ1Y3QgYXRoX2h3ICphaCA9IGh3X3ByaXY7XG4gNDI1Olx0XHRzdHJ1Y3QgYXRoX2NvbW1vbiAqY29tbW9uID0gYXRoOWtfaHdfY29tbW9uKGFoKTtcbiA0MjY6XHRcdHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdiA9IGNvbW1vbi1cdTAwM2Vwcml2O1xuIDQyNzpcdFx0dTMyIHJzcF9zdGF0dXM7XG4gNDI4Olx0XHRpbnQgcjtcbiA0Mjk6XHRcbiA0MzA6XHRcdGlmICh0ZXN0X2JpdChIVENfRldGTEFHX05PX1JNVywgXHUwMDI2cHJpdi1cdTAwM2Vmd19mbGFncykpXG4gNDMxOlx0XHRcdHJldHVybjtcbiA0MzI6XHRcbiA0MzM6XHRcdGF0b21pY19kZWMoXHUwMDI2cHJpdi1cdTAwM2V3bWktXHUwMDNlbV9ybXdfY250KTtcbiA0MzQ6XHRcbiA0MzU6XHRcdG11dGV4X2xvY2soXHUwMDI2cHJpdi1cdTAwM2V3bWktXHUwMDNlbXVsdGlfcm13X211dGV4KTtcbiA0MzY6XHRcbiA0Mzc6XHRcdGlmIChwcml2LVx1MDAzZXdtaS1cdTAwM2VtdWx0aV9ybXdfaWR4KSB7XG4gNDM4Olx0XHRcdHIgPSBhdGg5a193bWlfY21kKHByaXYtXHUwMDNld21pLCBXTUlfUkVHX1JNV19DTURJRCxcbiA0Mzk6XHRcdFx0XHQgICh1OCAqKSBcdTAwMjZwcml2LVx1MDAzZXdtaS1cdTAwM2VtdWx0aV9ybXcsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDEyOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNTUwCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogODEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBhdGg5a19odGMgUGF0Y2ggZm9yIEZ1enppbmcqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkmIzM5O20gc2VlaW5nIGEgcG90ZW50aWFsIGJ1ZmZlciBvdmVyZmxvdyB2dWxuZXJhYmlsaXR5IGZpeGVkIGluIGBhdGg5a19yZWdfcm13X2J1ZmZlcmAuIFRoZSBvcmlnaW5hbCBjb2RlIHdhcyBjYWxjdWxhdGluZyB0aGUgYnVmZmVyIHNpemUgaW5jb3JyZWN0bHksIHVzaW5nIHRoZSBzaXplIG9mIGEgYHN0cnVjdCByZWdpc3Rlcl93cml0ZWAgKDggYnl0ZXMpIGluc3RlYWQgb2YgYSBgc3RydWN0IHJlZ2lzdGVyX3Jtd2AgKDEyIGJ5dGVzKSB3aGVuIGRlYWxpbmcgd2l0aCBtdWx0aXBsZSByZWFkLW1vZGlmeS13cml0ZSBjb21tYW5kcyAoYG11bHRpX3Jtd19pZHhgKS4gU3BlY2lmaWNhbGx5LCB3aGVuIGBtdWx0aV9ybXdfaWR4YCBoaXQgYE1BWF9STVdfQ01EX05VTUJFUmAgKHdoaWNoIHdhcyAxNSksIGl0IHNlbnQgMTIwIGJ5dGVzIGluc3RlYWQgb2YgdGhlIGV4cGVjdGVkIDE4MCBieXRlcy4gVGhhdCYjMzk7cyBhIGNsZWFyIGVycm9yLgoKSSYjMzk7bSBhbHNvIHNlZWluZyBhIGNvbW1lbnQgYWJvdXQgd2h5IDE1IGVudHJpZXMgZGlkbiYjMzk7dCB3b3JrLiBUaGUgY29tbWVudCBtZW50aW9ucyAxOTIgYnl0ZXMgYW5kIGZ1bGwgVVNCIHBhY2tldHMgbm90IGJlaW5nIGRlbGl2ZXJlZC4gMTUgZW50cmllcyAqIDEyIGJ5dGVzID0gMTgwLCBwbHVzIGhlYWRlciwgdGhhdCB3b3VsZCBmaXQsIHNvIHRoZSBjb21tZW50IGxvb2tzIGxpa2UgaXQgbWF5IGhhdmUgYW4gZXJyb3IuCgpUaGUgZml4IGluIGBoaWZfdXNiX3NlbmRfcmVnb3V0YCBhZGRzIGEgYFdBUk5fT05DRWAgYXNzZXJ0aW9uLCB3aGljaCBpcyBnb29kLiBUaGlzIGlzIGEgZGVmZW5zaXZlIG1lYXN1cmUuIEl0JiMzOTtzIHdhcm5pbmcgaWYgdGhlIGNvbW1hbmQgZmlsbHMgYSB3aG9sZSBVU0IgcGFja2V0LiBUaGlzIGlzIHJldHVybmluZyBgLUVJTlZBTGAuIFRoaXMgaXMgZ3JlYXQuCgpOb3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb246IGlzIHRoaXMgZnV6emFibGU/IEFic29sdXRlbHkuIGBhdGg5a19odGNgIGlzIGEgVVNCIHdpcmVsZXNzIGRyaXZlciwgYW5kIFVTQiBkZXZpY2VzIGFyZSBlYXNpbHkgYXR0YWNoZWQgaW4gUUVNVS92aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdXNpbmcgVVNCIFJhdyBHYWRnZXQgb3Igc3l6a2FsbGVyJiMzOTtzIFVTQiBlbXVsYXRpb24uIFRoaXMgaXMgZGVmaW5pdGVseSByZWFjaGFibGUuIFNlY3Rpb24gMSBhbmQgMyBvZiB0aGUgZnV6emluZyBndWlkYW5jZSBjb25maXJtcyB0aGlzLiBNb2RpZmllZCBhc3NlcnRpb25zIGFyZSBleGFjdGx5IHdoYXQgd2Ugd2FudCB0byB0YXJnZXQuIEl0JiMzOTtzIGEgcHJpbWUgdGFyZ2V0IGZvciBmdXp6aW5nLgoKTXkgbmV4dCBzdGVwIGlzIGlkZW50aWZ5aW5nIHRoZSByZWxldmFudCBmdW5jdGlvbnMgZm9yIGZvY3VzOgotICAgYGhpZl91c2Jfc2VuZF9yZWdvdXRgIOKAkyB0aGUgbmV3bHkgYXNzZXJ0ZWQgZnVuY3Rpb24uCi0gICBgYXRoOWtfcmVnX3Jtd19idWZmZXJgIOKAkyB0aGUgYnVmZmVyIHNpemUgY2FsY3VsYXRpb24gZml4ZWQuCi0gICBgYXRoOWtfcmVnX3Jtd19mbHVzaGAg4oCTIGEgZnVuY3Rpb24gY2FsbGluZyBgYXRoOWtfd21pX2NtZGAgd2l0aCBgbXVsdGlfcm13YC4KLSAgIGBoaWZfdXNiX3NlbmRgIOKAkyBhbiBlbnRyeXBvaW50IGluIGhpZlxfdXNiCi0gICBgYXRoOWtfd21pX2NtZGAg4oCTIGFzIGl0IGlzIHVzZWQgd2l0aCBgbXVsdGlfcm13YAoKSSBuZWVkIHRvIGNvbmZpcm0gdGhlc2UgZnVuY3Rpb24gbmFtZXMgYW5kIHRoZWlyIGRlZmluaXRpb25zIHdpdGhpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2AuIEkgY2FuIHRoZW4gYnVpbGQgdGVzdCBjYXNlcyB0byBleGVyY2lzZSB0aGUgcmVsZXZhbnQgY29kZSBwYXRocyBhbmQgdHJpZ2dlciB0aGF0IGBXQVJOX09OQ0VgIGFzc2VydGlvbi4gVGhpcyBsb29rcyBsaWtlIGEgc29saWQgZnV6emluZyB0YXJnZXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDEyOjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2F0aDlrX3JlZ19ybXcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYz0zNjc9c3RhdGljIHZvaWQgYXRoOWtfcmVnd3JpdGVfZmx1c2godm9pZCAqaHdfcHJpdilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmMtMzgyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jOjM4MzpzdGF0aWMgdm9pZCBhdGg5a19yZWdfcm13X2J1ZmZlcih2b2lkICpod19wcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jLTM4NC1cdFx0XHRcdCB1MzIgcmVnX29mZnNldCwgdTMyIHNldCwgdTMyIGNscilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmMtNDIxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jOjQyMjpzdGF0aWMgdm9pZCBhdGg5a19yZWdfcm13X2ZsdXNoKHZvaWQgKmh3X3ByaXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmMtNDIzLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM9NDU0PXN0YXRpYyB2b2lkIGF0aDlrX2VuYWJsZV9ybXdfYnVmZmVyKHZvaWQgKmh3X3ByaXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jLTQ2NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYzo0NjY6c3RhdGljIHZvaWQgYXRoOWtfcmVnX3Jtd19zaW5nbGUodm9pZCAqaHdfcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy00NjctXHRcdFx0XHQgdTMyIHJlZ19vZmZzZXQsIHUzMiBzZXQsIHUzMiBjbHIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jLTQ4OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYzo0ODk6c3RhdGljIHUzMiBhdGg5a19yZWdfcm13KHZvaWQgKmh3X3ByaXYsIHUzMiByZWdfb2Zmc2V0LCB1MzIgc2V0LCB1MzIgY2xyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jLTQ5MC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jLTUwNi1cdGlmIChhdG9taWNfcmVhZChcdTAwMjZwcml2LVx1MDAzZXdtaS1cdTAwM2VtX3Jtd19jbnQpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jOjUwNzpcdFx0YXRoOWtfcmVnX3Jtd19idWZmZXIoaHdfcHJpdiwgcmVnX29mZnNldCwgc2V0LCBjbHIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jLTUwOC1cdGVsc2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYzo1MDk6XHRcdGF0aDlrX3JlZ19ybXdfc2luZ2xlKGh3X3ByaXYsIHJlZ19vZmZzZXQsIHNldCwgY2xyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy01MTAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jPTYwNj1zdGF0aWMgaW50IGF0aDlrX2luaXRfcHJpdihzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jLTYyOC1cdGFoLVx1MDAzZXJlZ19vcHMuZW5hYmxlX3Jtd19idWZmZXIgPSBhdGg5a19lbmFibGVfcm13X2J1ZmZlcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYzo2Mjk6XHRhaC1cdTAwM2VyZWdfb3BzLnJtd19mbHVzaCA9IGF0aDlrX3JlZ19ybXdfZmx1c2g7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM6NjMwOlx0YWgtXHUwMDNlcmVnX29wcy5ybXcgPSBhdGg5a19yZWdfcm13O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jLTYzMS1cdHByaXYtXHUwMDNlYWggPSBhaDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jPTIwND1zdGF0aWMgdm9pZCBhdGg5a19tdWx0aV9pb3JlYWQzMih2b2lkICpod19wcml2LCB1MzIgKmFkZHIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYy0yMTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jOjIxNDpzdGF0aWMgdW5zaWduZWQgaW50IF9fYXRoOWtfcmVnX3JtdyhzdHJ1Y3QgYXRoX3NvZnRjICpzYywgdTMyIHJlZ19vZmZzZXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jLTIxNS1cdFx0XHRcdCAgICB1MzIgc2V0LCB1MzIgY2xyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmMtMjI2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYzoyMjc6c3RhdGljIHVuc2lnbmVkIGludCBhdGg5a19yZWdfcm13KHZvaWQgKmh3X3ByaXYsIHUzMiByZWdfb2Zmc2V0LCB1MzIgc2V0LCB1MzIgY2xyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYy0yMjgte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmMtMjM2LVx0XHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZzYy1cdTAwM2VzY19zZXJpYWxfcncsIGZsYWdzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmM6MjM3Olx0XHR2YWwgPSBfX2F0aDlrX3JlZ19ybXcoc2MsIHJlZ19vZmZzZXQsIHNldCwgY2xyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmMtMjM4LVx0XHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNnNjLVx1MDAzZXNjX3NlcmlhbF9ydywgZmxhZ3MpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYy0yMzktXHR9IGVsc2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmM6MjQwOlx0XHR2YWwgPSBfX2F0aDlrX3JlZ19ybXcoc2MsIHJlZ19vZmZzZXQsIHNldCwgY2xyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmMtMjQxLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmM9NjU2PXN0YXRpYyBpbnQgYXRoOWtfaW5pdF9zb2Z0Yyh1MTYgZGV2aWQsIHN0cnVjdCBhdGhfc29mdGMgKnNjLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmMtNjc2LVx0YWgtXHUwMDNlcmVnX29wcy53cml0ZSA9IGF0aDlrX2lvd3JpdGUzMjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmM6Njc3Olx0YWgtXHUwMDNlcmVnX29wcy5ybXcgPSBhdGg5a19yZWdfcm13O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYy02NzgtXHRwQ2FwID0gXHUwMDI2YWgtXHUwMDNlY2FwcztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMTI6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM1OTgKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiA3NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipFeGFtaW5pbmcgdGhlIEF0aGVyb3MgV2lyZWxlc3MgRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGUgY29uZmlndXJhdGlvbiBmb3IgdGhpcyBBdGhlcm9zIHdpcmVsZXNzIGRyaXZlci4gRmlyc3QsIEkgbmVlZCB0byB2ZXJpZnkgd2hhdCBzZXR0aW5ncyBhcmUgYXZhaWxhYmxlLCBzdGFydGluZyB3aXRoIHRoZSBgRW5hYmxlQ29uZmlnc2AuIFNwZWNpZmljYWxseSwgSSYjMzk7bSBjaGVja2luZyB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnYCBmaWxlLiBJIHNlZSB0aGF0IGBBVEg5S19IVENgIGlzIGRlcGVuZGVudCBvbiBib3RoIGBVU0JgIGFuZCBgTUFDODAyMTFgLCB3aGljaCBtYWtlcyBwZXJmZWN0IHNlbnNlIGdpdmVuIHRoZSBoYXJkd2FyZSBhcmNoaXRlY3R1cmUuCgpOb3csIEkgbmVlZCB0byBtYWtlIHN1cmUgSSYjMzk7bSBub3Qgb3Zlcmxvb2tpbmcgYW55IG90aGVyIGNydWNpYWwgZGVwZW5kZW5jaWVzIG9yIGNvbmZpZ3VyYXRpb25zLiBJJiMzOTtsbCBuZWVkIHRvIGV4cGFuZCB0aGUgc2VhcmNoIGFuZCByZXZpZXcgb3RoZXIgcG90ZW50aWFsIGNvbmZpZ3VyYXRpb25zLiBMZXQmIzM5O3MgbW92ZSBvbiBhbmQgZXhhbWluZSB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9LY29uZmlnYCBmaWxlIGFuZCBleHBsb3JlIHRoZSBjb250ZW50cyB0byBlbnN1cmUgSSBpZGVudGlmeSBhbnkgb3RoZXIgbmVlZGVkIHNldHRpbmdzLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGNvbXByZWhlbnNpdmUgcGljdHVyZSBvZiB3aGF0JiMzOTtzIHJlcXVpcmVkIGZvciB0aGlzIGRyaXZlciB0byBmdW5jdGlvbiBjb3JyZWN0bHkgd2l0aGluIHRoZSB3aWRlciBzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDEyOjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0FUSDlLJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNTA3NiBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL01ha2VmaWxlPTI9b2JqLSQoQ09ORklHX0FUSDVLKVx0XHQmIzQzOz0gYXRoNWsvXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvTWFrZWZpbGU6MzpvYmotJChDT05GSUdfQVRIOUtfSFcpXHRcdCYjNDM7PSBhdGg5ay9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9NYWtlZmlsZS00LW9iai0kKENPTkZJR19DQVJMOTE3MClcdFx0JiM0Mzs9IGNhcmw5MTcwL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogSVNDXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoyOmNvbmZpZyBBVEg5S19IV1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMy1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo0OmNvbmZpZyBBVEg5S19DT01NT05cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTUtXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNi1cdHNlbGVjdCBBVEhfQ09NTU9OXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo3OmNvbmZpZyBBVEg5S19DT01NT05fREVCVUdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTgtXHRib29sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo5OmNvbmZpZyBBVEg5S19ERlNfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTAtXHRkZWZfYm9vbCB5XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxMTpcdGRlcGVuZHMgb24gQVRIOUtfREVCVUdGUyBcdTAwMjZcdTAwMjYgQVRIOUtfREZTX0NFUlRJRklFRFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxMzpjb25maWcgQVRIOUtfQlRDT0VYX1NVUFBPUlRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE0LVx0Ym9vbCBcJiMzNDtBdGhlcm9zIGJsdWV0b290aCBjb2V4aXN0ZW5jZSBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxNTpcdGRlcGVuZHMgb24gKEFUSDlLIHx8IEFUSDlLX0hUQylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE2LVx0ZGVmYXVsdCB5XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoyMTpjb25maWcgQVRIOUtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTIyLVx0dHJpc3RhdGUgXCYjMzQ7QXRoZXJvcyA4MDIuMTFuIHdpcmVsZXNzIGNhcmRzIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0yNC1cdHNlbGVjdCBNQUM4MDIxMV9MRURTIGlmIExFRFNfQ0xBU1M9eSB8fCBMRURTX0NMQVNTPU1BQzgwMjExXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoyNTpcdHNlbGVjdCBBVEg5S19IV1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MjY6XHRzZWxlY3QgQVRIOUtfQ09NTU9OXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0yNy1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0zOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjM5OmNvbmZpZyBBVEg5S19QQ0lcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTQwLVx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDlrIFBDSS9QQ0llIGJ1cyBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy00MS1cdGRlZmF1bHQgeVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6NDI6XHRkZXBlbmRzIG9uIEFUSDlLIFx1MDAyNlx1MDAyNiBQQ0lcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTQzLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTQ3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6NDg6Y29uZmlnIEFUSDlLX0FIQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNDktXHRib29sIFwmIzM0O0F0aGVyb3MgYXRoOWsgQUhCIGJ1cyBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo1MDpcdGRlcGVuZHMgb24gQVRIOUsgXHUwMDI2XHUwMDI2IE9GXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy01MS1cdGRlZmF1bHQgblxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTU3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6NTg6Y29uZmlnIEFUSDlLX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTU5LVx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDlrIGRlYnVnZ2luZ1wmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6NjA6XHRkZXBlbmRzIG9uIEFUSDlLIFx1MDAyNlx1MDAyNiBERUJVR19GUyBcdTAwMjZcdTAwMjYgTUFDODAyMTFfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6NjE6XHRzZWxlY3QgQVRIOUtfQ09NTU9OX0RFQlVHXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy02Mi1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy02OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjY5OmNvbmZpZyBBVEg5S19TVEFUSU9OX1NUQVRJU1RJQ1NcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTcwLVx0Ym9vbCBcJiMzNDtEZXRhaWxlZCBzdGF0aW9uIHN0YXRpc3RpY3NcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjcxOlx0ZGVwZW5kcyBvbiBBVEg5SyBcdTAwMjZcdTAwMjYgQVRIOUtfREVCVUdGUyBcdTAwMjZcdTAwMjYgREVCVUdfRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTcyLVx0ZGVmYXVsdCBuXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo3Njpjb25maWcgQVRIOUtfVFg5OVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNzctXHRib29sIFwmIzM0O0F0aGVyb3MgYXRoOWsgVFg5OSB0ZXN0aW5nIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjc4Olx0ZGVwZW5kcyBvbiBBVEg5S19ERUJVR0ZTIFx1MDAyNlx1MDAyNiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTc5LVx0ZGVmYXVsdCBuXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctOTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo5Njpjb25maWcgQVRIOUtfREZTX0NFUlRJRklFRFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctOTctXHRib29sIFwmIzM0O0F0aGVyb3MgREZTIHN1cHBvcnQgZm9yIGNlcnRpZmllZCBwbGF0Zm9ybXNcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjk4Olx0ZGVwZW5kcyBvbiBBVEg5SyBcdTAwMjZcdTAwMjYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy05OS1cdGRlZmF1bHQgblxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTExNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjExNTpjb25maWcgQVRIOUtfRFlOQUNLXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xMTYtXHRib29sIFwmIzM0O0F0aGVyb3MgYXRoOWsgQUNLIHRpbWVvdXQgZXN0aW1hdGlvbiBhbGdvcml0aG1cJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjExNzpcdGRlcGVuZHMgb24gQVRIOUtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTExOC1cdGRlZmF1bHQgblxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTEyMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjEyNDpjb25maWcgQVRIOUtfV09XXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xMjUtXHRib29sIFwmIzM0O1dha2Ugb24gV2lyZWxlc3MgTEFOIHN1cHBvcnQgKEVYUEVSSU1FTlRBTClcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjEyNjpcdGRlcGVuZHMgb24gQVRIOUsgXHUwMDI2XHUwMDI2IFBNXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xMjctXHRkZWZhdWx0IG5cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xMzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxMzI6Y29uZmlnIEFUSDlLX1JGS0lMTFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTMzLVx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDlrIHJma2lsbCBzdXBwb3J0XCYjMzQ7IGlmIEVYUEVSVFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTM0Olx0ZGVwZW5kcyBvbiBBVEg5S1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTM1Olx0ZGVwZW5kcyBvbiBSRktJTEw9eSB8fCBSRktJTEw9QVRIOUtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTEzNi1cdGRlZmF1bHQgeVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE0MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjE0Mjpjb25maWcgQVRIOUtfQ0hBTk5FTF9DT05URVhUXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNDMtXHRib29sIFwmIzM0O0NoYW5uZWwgQ29udGV4dCBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxNDQ6XHRkZXBlbmRzIG9uIEFUSDlLXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNDUtXHRkZWZhdWx0IG5cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxNTE6Y29uZmlnIEFUSDlLX1BDT0VNXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNTItXHRib29sIFwmIzM0O0F0aGVyb3MgYXRoOWsgc3VwcG9ydCBmb3IgUEMgT0VNIGNhcmRzXCYjMzQ7IGlmIEVYUEVSVFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTUzOlx0ZGVwZW5kcyBvbiBBVEg5S1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTU0LVx0ZGVmYXVsdCB5XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxNTY6Y29uZmlnIEFUSDlLX1BDSV9OT19FRVBST01cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE1Ny1cdHRyaXN0YXRlIFwmIzM0O0F0aGVyb3MgYXRoOWsgcGNpIGxvYWRlciBmb3IgRUVQUk9NLWxlc3MgY2hpcHNcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjE1ODpcdGRlcGVuZHMgb24gQVRIOUtfUENJXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNTktXHRkZWZhdWx0IG5cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxNzI6Y29uZmlnIEFUSDlLX0hUQ1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTczLVx0dHJpc3RhdGUgXCYjMzQ7QXRoZXJvcyBIVEMgYmFzZWQgd2lyZWxlc3MgY2FyZHMgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE3NS1cdHNlbGVjdCBNQUM4MDIxMV9MRURTIGlmIExFRFNfQ0xBU1M9eSB8fCBMRURTX0NMQVNTPU1BQzgwMjExXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxNzY6XHRzZWxlY3QgQVRIOUtfSFdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjE3NzpcdHNlbGVjdCBBVEg5S19DT01NT05cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE3OC1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xODYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxODc6Y29uZmlnIEFUSDlLX0hUQ19ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xODgtXHRib29sIFwmIzM0O0F0aGVyb3MgYXRoOWtfaHRjIGRlYnVnZ2luZ1wmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTg5Olx0ZGVwZW5kcyBvbiBBVEg5S19IVEMgXHUwMDI2XHUwMDI2IERFQlVHX0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxOTA6XHRzZWxlY3QgQVRIOUtfQ09NTU9OX0RFQlVHXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xOTEtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTk0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTk1OmNvbmZpZyBBVEg5S19IV1JOR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTk2LVx0Ym9vbCBcJiMzNDtSYW5kb20gbnVtYmVyIGdlbmVyYXRvciBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxOTc6XHRkZXBlbmRzIG9uIEFUSDlLIFx1MDAyNlx1MDAyNiAoSFdfUkFORE9NID0geSB8fCBIV19SQU5ET00gPSBBVEg5SylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE5OC1cdGRlZmF1bHQgblxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTIwNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjIwNjpjb25maWcgQVRIOUtfQ09NTU9OX1NQRUNUUkFMXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0yMDctXHRib29sIFwmIzM0O0F0aGVyb3MgYXRoOWsvYXRoOWtfaHRjIHNwZWN0cmFsIHNjYW4gc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MjA4Olx0ZGVwZW5kcyBvbiBBVEg5S19ERUJVR0ZTIHx8IEFUSDlLX0hUQ19ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0yMDktXHRzZWxlY3QgUkVMQVlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU9Mj1hdGg5ay15ICYjNDM7PVx0YmVhY29uLm8gXFxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtMTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6MTI6YXRoOWstJChDT05GSUdfQVRIOUtfQlRDT0VYX1NVUFBPUlQpICYjNDM7PSBtY2kub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlOjEzOmF0aDlrLSQoQ09ORklHX0FUSDlLX1BDSSkgJiM0Mzs9IHBjaS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6MTQ6YXRoOWstJChDT05GSUdfQVRIOUtfQUhCKSAmIzQzOz0gYWhiLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZToxNTphdGg5ay0kKENPTkZJR19BVEg5S19ERlNfREVCVUdGUykgJiM0Mzs9IGRmc19kZWJ1Zy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6MTY6YXRoOWstJChDT05GSUdfQVRIOUtfREZTX0NFUlRJRklFRCkgJiM0Mzs9IGRmcy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6MTc6YXRoOWstJChDT05GSUdfQVRIOUtfVFg5OSkgJiM0Mzs9IHR4OTkub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlOjE4OmF0aDlrLSQoQ09ORklHX0FUSDlLX1dPVykgJiM0Mzs9IHdvdy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6MTk6YXRoOWstJChDT05GSUdfQVRIOUtfSFdSTkcpICYjNDM7PSBybmcub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTIwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlOjIxOmF0aDlrLSQoQ09ORklHX0FUSDlLX0RFQlVHRlMpICYjNDM7PSBkZWJ1Zy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtMjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6MjM6YXRoOWstJChDT05GSUdfQVRIOUtfU1RBVElPTl9TVEFUSVNUSUNTKSAmIzQzOz0gZGVidWdfc3RhLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS0yNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZToyNTpvYmotJChDT05GSUdfQVRIOUspICYjNDM7PSBhdGg5ay5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtMjYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU9Mjc9YXRoOWtfaHcteTo9XHRcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS00Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZTo0ODphdGg5a19ody0kKENPTkZJR19BVEg5S19XT1cpICYjNDM7PSBhcjkwMDNfd293Lm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS00OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZTo1MDphdGg5a19ody0kKENPTkZJR19BVEg5S19CVENPRVhfU1VQUE9SVCkgJiM0Mzs9IGJ0Y29leC5vIFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtNTEtXHRcdFx0XHRcdCAgIGFyOTAwM19tY2kubyBcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS01My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZTo1NDphdGg5a19ody0kKENPTkZJR19BVEg5S19QQ09FTSkgJiM0Mzs9IGFyOTAwM19ydHQub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTU1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlOjU2OmF0aDlrX2h3LSQoQ09ORklHX0FUSDlLX0RZTkFDSykgJiM0Mzs9IGR5bmFjay5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtNTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6NTg6b2JqLSQoQ09ORklHX0FUSDlLX0hXKSAmIzQzOz0gYXRoOWtfaHcub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTU5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlOjYwOm9iai0kKENPTkZJR19BVEg5S19DT01NT04pICYjNDM7PSBhdGg5a19jb21tb24ub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTYxLWF0aDlrX2NvbW1vbi15Oj1cdGNvbW1vbi5vIFxcXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTY0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlOjY1OmF0aDlrX2NvbW1vbi0kKENPTkZJR19BVEg5S19DT01NT05fREVCVUcpICYjNDM7PSBjb21tb24tZGVidWcub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlOjY2OmF0aDlrX2NvbW1vbi0kKENPTkZJR19BVEg5S19DT01NT05fU1BFQ1RSQUwpICYjNDM7PSBjb21tb24tc3BlY3RyYWwub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTY3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlPTY4PWF0aDlrX2h0Yy15ICYjNDM7PVx0aHRjX2hzdC5vIFxcXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTc2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlOjc3OmF0aDlrX2h0Yy0kKENPTkZJR19BVEg5S19IVENfREVCVUdGUykgJiM0Mzs9IGh0Y19kcnZfZGVidWcub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTc4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlOjc5Om9iai0kKENPTkZJR19BVEg5S19IVEMpICYjNDM7PSBhdGg5a19odGMub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTgwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlOjgxOm9iai0kKENPTkZJR19BVEg5S19QQ0lfTk9fRUVQUk9NKSAmIzQzOz0gYXRoOWtfcGNpX293bF9sb2FkZXIub1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYz0zOT1zdGF0aWMgY29uc3Qgc3RydWN0IGFuaV9vZmRtX2xldmVsX2VudHJ5IG9mZG1fbGV2ZWxfdGFibGVbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtNTEtfTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzo1MjojZGVmaW5lIEFUSDlLX0FOSV9PRkRNX05VTV9MRVZFTCBcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTUzLVx0QVJSQVlfU0laRShvZmRtX2xldmVsX3RhYmxlKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjU0OiNkZWZpbmUgQVRIOUtfQU5JX09GRE1fTUFYX0xFVkVMIFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6NTU6XHQoQVRIOUtfQU5JX09GRE1fTlVNX0xFVkVMLTEpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6NTY6I2RlZmluZSBBVEg5S19BTklfT0ZETV9ERUZfTEVWRUwgXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy01Ny1cdDMgLyogZGVmYXVsdCBsZXZlbCAtIG1hdGNoZXMgdGhlIElOSSBzZXR0aW5ncyAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYz04NT1zdGF0aWMgY29uc3Qgc3RydWN0IGFuaV9jY2tfbGV2ZWxfZW50cnkgY2NrX2xldmVsX3RhYmxlW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTk3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjk4OiNkZWZpbmUgQVRIOUtfQU5JX0NDS19OVU1fTEVWRUwgXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy05OS1cdEFSUkFZX1NJWkUoY2NrX2xldmVsX3RhYmxlKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjEwMDojZGVmaW5lIEFUSDlLX0FOSV9DQ0tfTUFYX0xFVkVMIFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MTAxOlx0KEFUSDlLX0FOSV9DQ0tfTlVNX0xFVkVMLTEpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MTAyOiNkZWZpbmUgQVRIOUtfQU5JX0NDS19NQVhfTEVWRUxfTE9XX1JTU0kgXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoxMDM6XHQoQVRIOUtfQU5JX0NDS19OVU1fTEVWRUwtMylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoxMDQ6I2RlZmluZSBBVEg5S19BTklfQ0NLX0RFRl9MRVZFTCBcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTEwNS1cdDIgLyogZGVmYXVsdCBsZXZlbCAtIG1hdGNoZXMgdGhlIElOSSBzZXR0aW5ncyAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYz0xNDk9c3RhdGljIHZvaWQgYXRoOWtfaHdfc2V0X29mZG1fbmlsKHN0cnVjdCBhdGhfaHcgKmFoLCB1OCBpbW11bml0eUxldmVsLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0xNjAtXHRcdGltbXVuaXR5TGV2ZWwsIEJFQUNPTl9SU1NJKGFoKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoxNjE6XHRcdEFUSDlLX0FOSV9SU1NJX1RIUl9MT1csXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MTYyOlx0XHRBVEg5S19BTklfUlNTSV9USFJfSElHSCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMTYzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjE2NDpcdGlmIChBUl9TUkVWXzkxMDAoYWgpIFx1MDAyNlx1MDAyNiBpbW11bml0eUxldmVsIFx1MDAzYyBBVEg5S19BTklfT0ZETV9ERUZfTEVWRUwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MTY1Olx0XHRpbW11bml0eUxldmVsID0gQVRIOUtfQU5JX09GRE1fREVGX0xFVkVMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTE2Ni1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMTc0LVx0XHRhdGg5a19od19hbmlfY29udHJvbChhaCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoxNzU6XHRcdFx0XHQgICAgIEFUSDlLX0FOSV9TUFVSX0lNTVVOSVRZX0xFVkVMLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTE3Ni1cdFx0XHRcdCAgICAgZW50cnlfb2ZkbS1cdTAwM2VzcHVyX2ltbXVuaXR5X2xldmVsKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMTgwLVx0XHRhdGg5a19od19hbmlfY29udHJvbChhaCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoxODE6XHRcdFx0XHQgICAgIEFUSDlLX0FOSV9GSVJTVEVQX0xFVkVMLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTE4Mi1cdFx0XHRcdCAgICAgZW50cnlfb2ZkbS1cdTAwM2VmaXJfc3RlcF9sZXZlbCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTE4NS1cdGlmIChhaC1cdTAwM2VvcG1vZGUgPT0gTkw4MDIxMV9JRlRZUEVfU1RBVElPTiBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoxODY6XHQgICAgQkVBQ09OX1JTU0koYWgpIFx1MDAzYz0gQVRIOUtfQU5JX1JTU0lfVEhSX0hJR0gpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMTg3LVx0XHR3ZWFrX3NpZyA9IHRydWU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTIwMi1cdGlmIChhbmlTdGF0ZS1cdTAwM2VvZmRtV2Vha1NpZ0RldGVjdCAhPSB3ZWFrX3NpZylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoyMDM6XHRcdGF0aDlrX2h3X2FuaV9jb250cm9sKGFoLCBBVEg5S19BTklfT0ZETV9XRUFLX1NJR05BTF9ERVRFQ1RJT04sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMjA0LVx0XHRcdFx0ICAgICB3ZWFrX3NpZyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTIwOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoyMDk6XHRpZiAoYW5pU3RhdGUtXHUwMDNlb2ZkbU5vaXNlSW1tdW5pdHlMZXZlbCBcdTAwM2U9IEFUSDlLX0FOSV9PRkRNX0RFRl9MRVZFTCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjIxMDpcdFx0YWgtXHUwMDNlY29uZmlnLm9mZG1fdHJpZ19oaWdoID0gQVRIOUtfQU5JX09GRE1fVFJJR19ISUdIO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjIxMTpcdFx0YWgtXHUwMDNlY29uZmlnLm9mZG1fdHJpZ19sb3cgPSBBVEg5S19BTklfT0ZETV9UUklHX0xPV19BQk9WRV9JTkk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMjEyLVx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoyMTM6XHRcdGFoLVx1MDAzZWNvbmZpZy5vZmRtX3RyaWdfaGlnaCA9IEFUSDlLX0FOSV9PRkRNX1RSSUdfSElHSF9CRUxPV19JTkk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MjE0Olx0XHRhaC1cdTAwM2Vjb25maWcub2ZkbV90cmlnX2xvdyA9IEFUSDlLX0FOSV9PRkRNX1RSSUdfTE9XO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTIxNS1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM9MjE4PXN0YXRpYyB2b2lkIGF0aDlrX2h3X2FuaV9vZmRtX2Vycl90cmlnZ2VyKHN0cnVjdCBhdGhfaHcgKmFoKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0yMjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MjIyOlx0aWYgKGFuaVN0YXRlLVx1MDAzZW9mZG1Ob2lzZUltbXVuaXR5TGV2ZWwgXHUwMDNjIEFUSDlLX0FOSV9PRkRNX01BWF9MRVZFTClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0yMjMtXHRcdGF0aDlrX2h3X3NldF9vZmRtX25pbChhaCwgYW5pU3RhdGUtXHUwMDNlb2ZkbU5vaXNlSW1tdW5pdHlMZXZlbCAmIzQzOyAxLCBmYWxzZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jPTIyOT1zdGF0aWMgdm9pZCBhdGg5a19od19zZXRfY2NrX25pbChzdHJ1Y3QgYXRoX2h3ICphaCwgdV9pbnQ4X3QgaW1tdW5pdHlMZXZlbCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMjM4LVx0XHRhbmlTdGF0ZS1cdTAwM2VjY2tOb2lzZUltbXVuaXR5TGV2ZWwsIGltbXVuaXR5TGV2ZWwsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MjM5Olx0XHRCRUFDT05fUlNTSShhaCksIEFUSDlLX0FOSV9SU1NJX1RIUl9MT1csXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MjQwOlx0XHRBVEg5S19BTklfUlNTSV9USFJfSElHSCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMjQxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjI0MjpcdGlmIChBUl9TUkVWXzkxMDAoYWgpIFx1MDAyNlx1MDAyNiBpbW11bml0eUxldmVsIFx1MDAzYyBBVEg5S19BTklfQ0NLX0RFRl9MRVZFTClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoyNDM6XHRcdGltbXVuaXR5TGV2ZWwgPSBBVEg5S19BTklfQ0NLX0RFRl9MRVZFTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0yNDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMjQ1LVx0aWYgKGFoLVx1MDAzZW9wbW9kZSA9PSBOTDgwMjExX0lGVFlQRV9TVEFUSU9OIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjI0NjpcdCAgICBCRUFDT05fUlNTSShhaCkgXHUwMDNjPSBBVEg5S19BTklfUlNTSV9USFJfTE9XIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjI0NzpcdCAgICBpbW11bml0eUxldmVsIFx1MDAzZSBBVEg5S19BTklfQ0NLX01BWF9MRVZFTF9MT1dfUlNTSSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoyNDg6XHRcdGltbXVuaXR5TGV2ZWwgPSBBVEg5S19BTklfQ0NLX01BWF9MRVZFTF9MT1dfUlNTSTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0yNDktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTI1OC1cdFx0YXRoOWtfaHdfYW5pX2NvbnRyb2woYWgsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MjU5Olx0XHRcdFx0ICAgICBBVEg5S19BTklfRklSU1RFUF9MRVZFTCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0yNjAtXHRcdFx0XHQgICAgIGVudHJ5X2Njay1cdTAwM2VmaXJfc3RlcF9sZXZlbCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTI2OC1cdFx0YXRoOWtfaHdfYW5pX2NvbnRyb2woYWgsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MjY5Olx0XHRcdFx0ICAgICBBVEg5S19BTklfTVJDX0NDSyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0yNzAtXHRcdFx0XHQgICAgIGVudHJ5X2Njay1cdTAwM2VtcmNfY2NrX29uKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM9MjczPXN0YXRpYyB2b2lkIGF0aDlrX2h3X2FuaV9jY2tfZXJyX3RyaWdnZXIoc3RydWN0IGF0aF9odyAqYWgpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTI3Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoyNzc6XHRpZiAoYW5pU3RhdGUtXHUwMDNlY2NrTm9pc2VJbW11bml0eUxldmVsIFx1MDAzYyBBVEg5S19BTklfQ0NLX01BWF9MRVZFTClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0yNzgtXHRcdGF0aDlrX2h3X3NldF9jY2tfbmlsKGFoLCBhbmlTdGF0ZS1cdTAwM2VjY2tOb2lzZUltbXVuaXR5TGV2ZWwgJiM0MzsgMSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM9MzA5PXZvaWQgYXRoOWtfYW5pX3Jlc2V0KHN0cnVjdCBhdGhfaHcgKmFoLCBib29sIGlzX3NjYW5uaW5nKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0zMjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MzIyOlx0b2ZkbV9uaWwgPSBtYXhfdChpbnQsIEFUSDlLX0FOSV9PRkRNX0RFRl9MRVZFTCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0zMjMtXHRcdFx0IGFuaVN0YXRlLVx1MDAzZW9mZG1Ob2lzZUltbXVuaXR5TGV2ZWwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjMyNDpcdGNja19uaWwgPSBtYXhfdChpbnQsIEFUSDlLX0FOSV9DQ0tfREVGX0xFVkVMLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTMyNS1cdFx0XHQgYW5pU3RhdGUtXHUwMDNlY2NrTm9pc2VJbW11bml0eUxldmVsKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMzM2LVx0XHRpZiAoYW5pU3RhdGUtXHUwMDNlb2ZkbU5vaXNlSW1tdW5pdHlMZXZlbCAhPVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjMzNzpcdFx0ICAgIEFUSDlLX0FOSV9PRkRNX0RFRl9MRVZFTCB8fFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTMzOC1cdFx0ICAgIGFuaVN0YXRlLVx1MDAzZWNja05vaXNlSW1tdW5pdHlMZXZlbCAhPVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjMzOTpcdFx0ICAgIEFUSDlLX0FOSV9DQ0tfREVGX0xFVkVMKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMzQwLVx0XHRcdGF0aF9kYmcoY29tbW9uLCBBTkksXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTM0Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzozNDg6XHRcdFx0b2ZkbV9uaWwgPSBBVEg5S19BTklfT0ZETV9ERUZfTEVWRUw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MzQ5Olx0XHRcdGNja19uaWwgPSBBVEg5S19BTklfQ0NLX0RFRl9MRVZFTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0zNTAtXHRcdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM9NDc3PXZvaWQgYXRoOWtfaHdfYW5pX2luaXQoc3RydWN0IGF0aF9odyAqYWgpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTQ4NC1cdGlmIChBUl9TUkVWXzkzMDBfMjBfT1JfTEFURVIoYWgpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6NDg1Olx0XHRhaC1cdTAwM2Vjb25maWcub2ZkbV90cmlnX2hpZ2ggPSBBVEg5S19BTklfT0ZETV9UUklHX0hJR0g7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6NDg2Olx0XHRhaC1cdTAwM2Vjb25maWcub2ZkbV90cmlnX2xvdyA9IEFUSDlLX0FOSV9PRkRNX1RSSUdfTE9XO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjQ4NzpcdFx0YWgtXHUwMDNlY29uZmlnLmNja190cmlnX2hpZ2ggPSBBVEg5S19BTklfQ0NLX1RSSUdfSElHSDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzo0ODg6XHRcdGFoLVx1MDAzZWNvbmZpZy5jY2tfdHJpZ19sb3cgPSBBVEg5S19BTklfQ0NLX1RSSUdfTE9XO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTQ4OS1cdH0gZWxzZSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6NDkwOlx0XHRhaC1cdTAwM2Vjb25maWcub2ZkbV90cmlnX2hpZ2ggPSBBVEg5S19BTklfT0ZETV9UUklHX0hJR0hfT0xEO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjQ5MTpcdFx0YWgtXHUwMDNlY29uZmlnLm9mZG1fdHJpZ19sb3cgPSBBVEg5S19BTklfT0ZETV9UUklHX0xPV19PTEQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6NDkyOlx0XHRhaC1cdTAwM2Vjb25maWcuY2NrX3RyaWdfaGlnaCA9IEFUSDlLX0FOSV9DQ0tfVFJJR19ISUdIX09MRDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzo0OTM6XHRcdGFoLVx1MDAzZWNvbmZpZy5jY2tfdHJpZ19sb3cgPSBBVEg5S19BTklfQ0NLX1RSSUdfTE9XX09MRDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy00OTQtXHR9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtNDk1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjQ5NjpcdGFuaS1cdTAwM2VzcHVySW1tdW5pdHlMZXZlbCA9IEFUSDlLX0FOSV9TUFVSX0lNTVVORV9MVkw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6NDk3Olx0YW5pLVx1MDAzZWZpcnN0ZXBMZXZlbCA9IEFUSDlLX0FOSV9GSVJTVEVQX0xWTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy00OTgtXHRhbmktXHUwMDNlbXJjQ0NLID0gQVJfU1JFVl85MzAwXzIwX09SX0xBVEVSKGFoKSA/IHRydWUgOiBmYWxzZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtNTAwLVx0YW5pLVx1MDAzZW9mZG1XZWFrU2lnRGV0ZWN0ID0gdHJ1ZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzo1MDE6XHRhbmktXHUwMDNlY2NrTm9pc2VJbW11bml0eUxldmVsID0gQVRIOUtfQU5JX0NDS19ERUZfTEVWRUw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6NTAyOlx0YW5pLVx1MDAzZW9mZG1Ob2lzZUltbXVuaXR5TGV2ZWwgPSBBVEg5S19BTklfT0ZETV9ERUZfTEVWRUw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtNTAzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy01MDctXHQgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzo1MDg6XHRhaC1cdTAwM2VhbmlwZXJpb2QgPSBBVEg5S19BTklfUEVSSU9EO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjUwOTpcdGFoLVx1MDAzZWNvbmZpZy5hbmlfcG9sbF9pbnRlcnZhbCA9IEFUSDlLX0FOSV9QT0xMSU5URVJWQUw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtNTEwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaC0yMi0vKiB1bml0cyBhcmUgZXJyb3JzIHBlciBzZWNvbmQgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaDoyMzojZGVmaW5lIEFUSDlLX0FOSV9PRkRNX1RSSUdfSElHSCAgICAgICAgICAgMzUwMFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oOjI0OiNkZWZpbmUgQVRIOUtfQU5JX09GRE1fVFJJR19ISUdIX0JFTE9XX0lOSSAxMDAwXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmg6MjU6I2RlZmluZSBBVEg5S19BTklfT0ZETV9UUklHX0hJR0hfT0xEICAgICAgIDUwMFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oLTI2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oOjI3OiNkZWZpbmUgQVRIOUtfQU5JX09GRE1fVFJJR19MT1cgICAgICAgICAgIDQwMFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oOjI4OiNkZWZpbmUgQVRIOUtfQU5JX09GRE1fVFJJR19MT1dfQUJPVkVfSU5JIDkwMFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oOjI5OiNkZWZpbmUgQVRIOUtfQU5JX09GRE1fVFJJR19MT1dfT0xEICAgICAgIDIwMFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oLTMwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oOjMxOiNkZWZpbmUgQVRIOUtfQU5JX0NDS19UUklHX0hJR0ggICAgICAgICAgIDYwMFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oOjMyOiNkZWZpbmUgQVRIOUtfQU5JX0NDS19UUklHX0hJR0hfT0xEICAgICAgIDIwMFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oOjMzOiNkZWZpbmUgQVRIOUtfQU5JX0NDS19UUklHX0xPVyAgICAgICAgICAgIDMwMFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oOjM0OiNkZWZpbmUgQVRIOUtfQU5JX0NDS19UUklHX0xPV19PTEQgICAgICAgIDEwMFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oLTM1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oOjM2OiNkZWZpbmUgQVRIOUtfQU5JX1NQVVJfSU1NVU5FX0xWTCAgICAgICAgIDNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaDozNzojZGVmaW5lIEFUSDlLX0FOSV9GSVJTVEVQX0xWTCAgICAgICAgICAgICAyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmgtMzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmg6Mzk6I2RlZmluZSBBVEg5S19BTklfUlNTSV9USFJfSElHSCAgICAgICAgICAgNDBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaDo0MDojZGVmaW5lIEFUSDlLX0FOSV9SU1NJX1RIUl9MT1cgICAgICAgICAgICA3XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmgtNDEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmg6NDI6I2RlZmluZSBBVEg5S19BTklfUEVSSU9EICAgICAgICAgICAgICAgICAgMzAwXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmgtNDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmgtNDQtLyogaW4gbXMgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaDo0NTojZGVmaW5lIEFUSDlLX0FOSV9QT0xMSU5URVJWQUwgICAgICAgICAgICAxMDAwXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmgtNDYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmg6NDc6I2RlZmluZSBBVEg5S19TSUdfRklSU1RFUF9TRVRUSU5HX01JTiAgICAgMFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oOjQ4OiNkZWZpbmUgQVRIOUtfU0lHX0ZJUlNURVBfU0VUVElOR19NQVggICAgIDIwXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmg6NDk6I2RlZmluZSBBVEg5S19TSUdfU1BVUl9JTU1fU0VUVElOR19NSU4gICAgMFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oOjUwOiNkZWZpbmUgQVRIOUtfU0lHX1NQVVJfSU1NX1NFVFRJTkdfTUFYICAgIDIyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmgtNTEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oPTU0PWVudW0gYXRoOWtfYW5pX2NtZCB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmg6NTU6XHRBVEg5S19BTklfT0ZETV9XRUFLX1NJR05BTF9ERVRFQ1RJT04gPSAweDEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmg6NTY6XHRBVEg5S19BTklfRklSU1RFUF9MRVZFTCA9IDB4MixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaDo1NzpcdEFUSDlLX0FOSV9TUFVSX0lNTVVOSVRZX0xFVkVMID0gMHg0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oOjU4Olx0QVRIOUtfQU5JX01SQ19DQ0sgPSAweDgsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmg6NTk6XHRBVEg5S19BTklfQUxMID0gMHhmZmZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaC02MC19O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmM9OTUzPXN0YXRpYyBib29sIGFyNTAwOF9od19hbmlfY29udHJvbF9uZXcoc3RydWN0IGF0aF9odyAqYWgsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyNTAwOF9waHkuYy05NjItXHRzd2l0Y2ggKGNtZCBcdTAwMjYgYWgtXHUwMDNlYW5pX2Z1bmN0aW9uKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jOjk2MzpcdGNhc2UgQVRIOUtfQU5JX09GRE1fV0VBS19TSUdOQUxfREVURUNUSU9OOntcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmMtOTY0LVx0XHQvKlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmMtMTA0My1cdH1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmM6MTA0NDpcdGNhc2UgQVRIOUtfQU5JX0ZJUlNURVBfTEVWRUw6e1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyNTAwOF9waHkuYy0xMDQ1LVx0XHR1MzIgbGV2ZWwgPSBwYXJhbTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jLTEwNTgtXHRcdFx0XHRsZXZlbCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmM6MTA1OTpcdFx0XHRcdEFUSDlLX0FOSV9GSVJTVEVQX0xWTCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmMtMTA2MC1cdFx0XHRcdHZhbHVlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmMtMTA2Ni1cdFx0XHRcdGxldmVsLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyNTAwOF9waHkuYzoxMDY3Olx0XHRcdFx0QVRIOUtfQU5JX0ZJUlNURVBfTFZMLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyNTAwOF9waHkuYy0xMDY4LVx0XHRcdFx0dmFsdWUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyNTAwOF9waHkuYy0xMDc3LVx0fVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyNTAwOF9waHkuYzoxMDc4Olx0Y2FzZSBBVEg5S19BTklfU1BVUl9JTU1VTklUWV9MRVZFTDp7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jLTEwNzktXHRcdHUzMiBsZXZlbCA9IHBhcmFtO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmMtMTA5My1cdFx0XHRcdGxldmVsLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyNTAwOF9waHkuYzoxMDk0Olx0XHRcdFx0QVRIOUtfQU5JX1NQVVJfSU1NVU5FX0xWTCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmMtMTA5NS1cdFx0XHRcdHZhbHVlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmMtMTEwMS1cdFx0XHRcdGxldmVsLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyNTAwOF9waHkuYzoxMTAyOlx0XHRcdFx0QVRIOUtfQU5JX1NQVVJfSU1NVU5FX0xWTCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmMtMTEwMy1cdFx0XHRcdHZhbHVlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmMtMTExMi1cdH1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmM6MTExMzpcdGNhc2UgQVRIOUtfQU5JX01SQ19DQ0s6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jLTExMTQtXHRcdC8qXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyNTAwOF9waHkuYz0xMTY5PXN0YXRpYyB2b2lkIGFyNTAwOF9od19hbmlfY2FjaGVfaW5pX3JlZ3Moc3RydWN0IGF0aF9odyAqYWgpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyNTAwOF9waHkuYy0xMjEzLVx0LyogdGhlc2UgbGV2ZWxzIGp1c3QgZ290IHJlc2V0IHRvIGRlZmF1bHRzIGJ5IHRoZSBJTkkgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmM6MTIxNDpcdGFuaVN0YXRlLVx1MDAzZXNwdXJJbW11bml0eUxldmVsID0gQVRIOUtfQU5JX1NQVVJfSU1NVU5FX0xWTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmM6MTIxNTpcdGFuaVN0YXRlLVx1MDAzZWZpcnN0ZXBMZXZlbCA9IEFUSDlLX0FOSV9GSVJTVEVQX0xWTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmMtMTIxNi1cdGFuaVN0YXRlLVx1MDAzZW9mZG1XZWFrU2lnRGV0ZWN0ID0gdHJ1ZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jPTMyPXN0YXRpYyBib29sIGFyOTAwMl9od19nZXRfaXNyKHN0cnVjdCBhdGhfaHcgKmFoLCBlbnVtIGF0aDlrX2ludCAqbWFza2VkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtNjYtXHRcdFx0aWYgKGlzcjIgXHUwMDI2IEFSX0lTUl9TMl9USU0pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjY3Olx0XHRcdFx0bWFzazIgfD0gQVRIOUtfSU5UX1RJTTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtNjgtXHRcdFx0aWYgKGlzcjIgXHUwMDI2IEFSX0lTUl9TMl9EVElNKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzo2OTpcdFx0XHRcdG1hc2syIHw9IEFUSDlLX0lOVF9EVElNO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy03MC1cdFx0XHRpZiAoaXNyMiBcdTAwMjYgQVJfSVNSX1MyX0RUSU1TWU5DKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzo3MTpcdFx0XHRcdG1hc2syIHw9IEFUSDlLX0lOVF9EVElNU1lOQztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtNzItXHRcdFx0aWYgKGlzcjIgXHUwMDI2IChBUl9JU1JfUzJfQ0FCRU5EKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6NzM6XHRcdFx0XHRtYXNrMiB8PSBBVEg5S19JTlRfQ0FCRU5EO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy03NC1cdFx0XHRpZiAoaXNyMiBcdTAwMjYgQVJfSVNSX1MyX0dUVClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6NzU6XHRcdFx0XHRtYXNrMiB8PSBBVEg5S19JTlRfR1RUO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy03Ni1cdFx0XHRpZiAoaXNyMiBcdTAwMjYgQVJfSVNSX1MyX0NTVClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6Nzc6XHRcdFx0XHRtYXNrMiB8PSBBVEg5S19JTlRfQ1NUO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy03OC1cdFx0XHRpZiAoaXNyMiBcdTAwMjYgQVJfSVNSX1MyX1RTRk9PUilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6Nzk6XHRcdFx0XHRtYXNrMiB8PSBBVEg5S19JTlRfVFNGT09SO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy04MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6ODE6XHRcdFx0aWYgKCEocENhcC1cdTAwM2Vod19jYXBzIFx1MDAyNiBBVEg5S19IV19DQVBfUkFDX1NVUFBPUlRFRCkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtODItXHRcdFx0XHRSRUdfV1JJVEUoYWgsIEFSX0lTUl9TMiwgaXNyMik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy04Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6ODc6XHRcdGlmIChwQ2FwLVx1MDAzZWh3X2NhcHMgXHUwMDI2IEFUSDlLX0hXX0NBUF9SQUNfU1VQUE9SVEVEKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy04OC1cdFx0XHRpc3IgPSBSRUdfUkVBRChhaCwgQVJfSVNSX1JBQyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy05NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6OTU6XHRcdCptYXNrZWQgPSBpc3IgXHUwMDI2IEFUSDlLX0lOVF9DT01NT047XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTk2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtOTgtXHRcdFx0ICAgQVJfSVNSX1JYT0sgfCBBUl9JU1JfUlhFUlIpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzo5OTpcdFx0XHQqbWFza2VkIHw9IEFUSDlLX0lOVF9SWDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtMTAwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtMTA1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzoxMDY6XHRcdFx0Km1hc2tlZCB8PSBBVEg5S19JTlRfVFg7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTEwNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6MTA4Olx0XHRcdGlmIChwQ2FwLVx1MDAzZWh3X2NhcHMgXHUwMDI2IEFUSDlLX0hXX0NBUF9SQUNfU1VQUE9SVEVEKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTEwOS1cdFx0XHRcdHMwX3MgPSBSRUdfUkVBRChhaCwgQVJfSVNSX1MwX1MpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtMTM5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzoxNDA6XHRcdGlmIChwQ2FwLVx1MDAzZWh3X2NhcHMgXHUwMDI2IEFUSDlLX0hXX0NBUF9SQUNfU1VQUE9SVEVEKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTE0MS1cdFx0XHRzNV9zID0gUkVHX1JFQUQoYWgsIEFSX0lTUl9TNV9TKGFoKSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0xNTItXHRcdGlmIChhaC1cdTAwM2VpbnRyX2dlbl90aW1lcl90cmlnZ2VyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzoxNTM6XHRcdFx0Km1hc2tlZCB8PSBBVEg5S19JTlRfR0VOVElNRVI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTE1NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtMTU1LVx0XHRpZiAoKHM1X3MgXHUwMDI2IEFSX0lTUl9TNV9USU1fVElNRVIpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzoxNTY6XHRcdCAgICAhKHBDYXAtXHUwMDNlaHdfY2FwcyBcdTAwMjYgQVRIOUtfSFdfQ0FQX0FVVE9TTEVFUCkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjE1NzpcdFx0XHQqbWFza2VkIHw9IEFUSDlLX0lOVF9USU1fVElNRVI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTE1OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6MTU5Olx0XHRpZiAoIShwQ2FwLVx1MDAzZWh3X2NhcHMgXHUwMDI2IEFUSDlLX0hXX0NBUF9SQUNfU1VQUE9SVEVEKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0xNjAtXHRcdFx0UkVHX1dSSVRFKGFoLCBBUl9JU1JfUzUsIHM1X3MpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtMTY0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzoxNjU6XHRpZiAoIShwQ2FwLVx1MDAzZWh3X2NhcHMgXHUwMDI2IEFUSDlLX0hXX0NBUF9SQUNfU1VQUE9SVEVEKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0xNjYtXHRcdFJFR19XUklURShhaCwgQVJfSVNSLCBpc3IpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtMTg5LVx0XHRcdH1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6MTkwOlx0XHRcdCptYXNrZWQgfD0gQVRIOUtfSU5UX0ZBVEFMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0xOTEtXHRcdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTE5Ni1cdFx0XHRSRUdfV1JJVEUoYWgsIEFSX1JDLCAwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6MTk3Olx0XHRcdCptYXNrZWQgfD0gQVRIOUtfSU5UX0ZBVEFMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0xOTgtXHRcdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jPTIxMj1hcjkwMDJfc2V0X3R4ZGVzYyhzdHJ1Y3QgYXRoX2h3ICphaCwgdm9pZCAqZHMsIHN0cnVjdCBhdGhfdHhfaW5mbyAqaSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTI2MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6MjYxOlx0Y3RsMSB8PSAoaS1cdTAwM2VrZXlpeCAhPSBBVEg5S19UWEtFWUlYX0lOVkFMSUQgPyBTTShpLVx1MDAzZWtleWl4LCBBUl9EZXN0SWR4KSA6IDApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTI2Mi1cdFx0fCBTTShpLVx1MDAzZXR5cGUsIEFSX0ZyYW1lVHlwZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6MjYzOlx0XHR8IChpLVx1MDAzZWZsYWdzIFx1MDAyNiBBVEg5S19UWERFU0NfTk9BQ0sgPyBBUl9Ob0FjayA6IDApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjI2NDpcdFx0fCAoaS1cdTAwM2VmbGFncyBcdTAwMjYgQVRIOUtfVFhERVNDX0VYVF9PTkxZID8gQVJfRXh0T25seSA6IDApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjI2NTpcdFx0fCAoaS1cdTAwM2VmbGFncyBcdTAwMjYgQVRIOUtfVFhERVNDX0VYVF9BTkRfQ1RMID8gQVJfRXh0QW5kQ3RsIDogMCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTI2Ni1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTI4Mi1cdFdSSVRFX09OQ0UoYWRzLVx1MDAzZWRzX2N0bDAsIChpLVx1MDAzZXBrdF9sZW4gXHUwMDI2IEFSX0ZyYW1lTGVuKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzoyODM6XHRcdHwgKGktXHUwMDNlZmxhZ3MgXHUwMDI2IEFUSDlLX1RYREVTQ19WTUYgPyBBUl9WaXJ0TW9yZUZyYWcgOiAwKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0yODQtXHRcdHwgU00oaS1cdTAwM2V0eHBvd2VyWzBdLCBBUl9YbWl0UG93ZXIwKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzoyODU6XHRcdHwgKGktXHUwMDNlZmxhZ3MgXHUwMDI2IEFUSDlLX1RYREVTQ19WRU9MID8gQVJfVkVPTCA6IDApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjI4NjpcdFx0fCAoaS1cdTAwM2VmbGFncyBcdTAwMjYgQVRIOUtfVFhERVNDX0lOVFJFUSA/IEFSX1R4SW50clJlcSA6IDApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjI4NzpcdFx0fCAoaS1cdTAwM2VrZXlpeCAhPSBBVEg5S19UWEtFWUlYX0lOVkFMSUQgPyBBUl9EZXN0SWR4VmFsaWQgOiAwKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzoyODg6XHRcdHwgKGktXHUwMDNlZmxhZ3MgXHUwMDI2IEFUSDlLX1RYREVTQ19DTFJETUFTSyA/IEFSX0NsckRlc3RNYXNrIDogMClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6Mjg5Olx0XHR8IChpLVx1MDAzZWZsYWdzIFx1MDAyNiBBVEg5S19UWERFU0NfUlRTRU5BID8gQVJfUlRTRW5hYmxlIDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6MjkwOlx0XHQgICAoaS1cdTAwM2VmbGFncyBcdTAwMjYgQVRIOUtfVFhERVNDX0NUU0VOQSA/IEFSX0NUU0VuYWJsZSA6IDApKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTI5MS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jPTMxNj1zdGF0aWMgaW50IGFyOTAwMl9od19wcm9jX3R4ZGVzYyhzdHJ1Y3QgYXRoX2h3ICphaCwgdm9pZCAqZHMsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0zMzAtXHRpZiAoc3RhdHVzIFx1MDAyNiBBUl9UeE9wRXhjZWVkZWQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjMzMTpcdFx0dHMtXHUwMDNldHNfc3RhdHVzIHw9IEFUSDlLX1RYRVJSX1hUWE9QO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0zMzItXHR0cy1cdTAwM2V0aWQgPSBNUyhzdGF0dXMsIEFSX1R4VGlkKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTM0MC1cdGlmIChzdGF0dXMgXHUwMDI2IEFSX1R4QmFTdGF0dXMpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6MzQxOlx0XHR0cy1cdTAwM2V0c19mbGFncyB8PSBBVEg5S19UWF9CQTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtMzQyLVx0XHR0cy1cdTAwM2ViYV9sb3cgPSBhZHMtXHUwMDNlQVJfQmFCaXRtYXBMb3c7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0zNDctXHRpZiAoc3RhdHVzIFx1MDAyNiBBUl9Gcm1YbWl0T0spXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjM0ODpcdFx0dHMtXHUwMDNldHNfc3RhdHVzIHw9IEFUSDlLX1RYX0FDS0VEO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0zNDktXHRlbHNlIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtMzUwLVx0XHRpZiAoc3RhdHVzIFx1MDAyNiBBUl9FeGNlc3NpdmVSZXRyaWVzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzozNTE6XHRcdFx0dHMtXHUwMDNldHNfc3RhdHVzIHw9IEFUSDlLX1RYRVJSX1hSRVRSWTtcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAxMjo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzODM1MQoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgaXQgbXlzZWxmLCB0YWlsb3JlZCBmb3Igc29tZW9uZSBpbiBteSBmaWVsZDoKCioqRGlnZ2luZyBpbnRvIEFUSDlLX0hUQyBEZXBlbmRlbmNpZXMqKgoKUmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvS2NvbmZpZ2AgZmlsZS4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBzdXJyb3VuZGluZyBjb25maWd1cmF0aW9ucyByZWxhdGVkIHRvIGBBVEg5S19IVENgLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gdGhpbmtpbmcgSSBzaG91bGQgY2hlY2sgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgZW5jbG9zaW5nIG9yIGNvbmRpdGlvbmFsIGNvbmZpZ3VyYXRpb25zIHRoYXQgbWlnaHQgaW1wYWN0IG9yIGRlcGVuZCBvbiBgQVRIOUtfSFRDYC4gSXQmIzM5O3MgY3J1Y2lhbCB0byB1bmRlcnN0YW5kIHRoZSBicm9hZGVyIGNvbnRleHQuIFVuZGVyc3RhbmRpbmcgZGVwZW5kZW5jaWVzIGlzIGtleSB0byBhdm9pZCB1bmludGVuZGVkIGNvbnNlcXVlbmNlcyBvciBtaXNzaW5nIGNyaXRpY2FsIGVsZW1lbnRzIHdoZW4gbW9kaWZ5aW5nIHRoaXMgbW9kdWxlLiBHb3R0YSB0cmFjZSB0aGUgaW5oZXJpdGFuY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDEyOjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NvdXJjZS4qYXRoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWc9MjE9c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2FkbXRlay9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9LY29uZmlnOjIyOnNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvS2NvbmZpZy0yMy1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRtZWwvS2NvbmZpZ1wmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9LY29uZmlnPTQ5PWNvbmZpZyBBVEhfUkVHX0RZTkFNSUNfVVNFUl9DRVJUX1RFU1RJTkdcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvS2NvbmZpZy01Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9LY29uZmlnOjU3OnNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNWsvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL0tjb25maWc6NTg6c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvS2NvbmZpZzo1OTpzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9LY29uZmlnOjYwOnNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9LY29uZmlnOjYxOnNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXI1NTIzL0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9LY29uZmlnOjYyOnNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvS2NvbmZpZzo2Mzpzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvS2NvbmZpZzo2NDpzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL0tjb25maWc6NjU6c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL0tjb25maWc6NjY6c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL0tjb25maWctNjctXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9haGIuYz00MzA9c3RhdGljIHZvaWQgYXRoMTBrX2FoYl9pcnFfZGlzYWJsZShzdHJ1Y3QgYXRoMTBrICphcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2FoYi5jLTQzNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvYWhiLmM6NDM2OnN0YXRpYyBpbnQgYXRoMTBrX2FoYl9yZXNvdXJjZV9pbml0KHN0cnVjdCBhdGgxMGsgKmFyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9haGIuYy00Mzcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvYWhiLmMtNTIzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9haGIuYzo1MjQ6c3RhdGljIHZvaWQgYXRoMTBrX2FoYl9yZXNvdXJjZV9kZWluaXQoc3RydWN0IGF0aDEwayAqYXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2FoYi5jLTUyNS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYz0yMDQ9YXRoMTBrX21hY19tYXhfdmh0X25zcyhjb25zdCB1MTYgdmh0X21jc19tYXNrW05MODAyMTFfVkhUX05TU19NQVhdKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtMjE0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYzoyMTU6aW50IGF0aDEwa19tYWNfZXh0X3Jlc291cmNlX2NvbmZpZyhzdHJ1Y3QgYXRoMTBrICphciwgdTMyIHZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtMjE2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5oPTcwPXN0cnVjdCBpZWVlODAyMTFfdHhxICphdGgxMGtfbWFjX3R4cV9sb29rdXAoc3RydWN0IGF0aDEwayAqYXIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuaC03Mi1cdFx0XHRcdFx0ICAgIHU4IHRpZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5oOjczOmludCBhdGgxMGtfbWFjX2V4dF9yZXNvdXJjZV9jb25maWcoc3RydWN0IGF0aDEwayAqYXIsIHUzMiB2YWwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuaC03NC12b2lkIGF0aDEwa19tYWNfd2FpdF90eF9jb21wbGV0ZShzdHJ1Y3QgYXRoMTBrICphcik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9wY2kuYz0xNzg5PXZvaWQgYXRoMTBrX3BjaV9oaWZfc2VuZF9jb21wbGV0ZV9jaGVjayhzdHJ1Y3QgYXRoMTBrICphciwgdTggcGlwZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3BjaS5jLTE4MDQtXHRcdCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9wY2kuYzoxODA1Olx0XHRyZXNvdXJjZXMgPSBhdGgxMGtfcGNpX2hpZl9nZXRfZnJlZV9xdWV1ZV9udW1iZXIoYXIsIHBpcGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9wY2kuYy0xODA2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvcGNpLmM9MzQzNz1zdGF0aWMgYm9vbCBhdGgxMGtfcGNpX2NoaXBfaXNfc3VwcG9ydGVkKHUzMiBkZXZfaWQsIHUzMiBjaGlwX2lkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvcGNpLmMtMzQ1My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvcGNpLmM6MzQ1NDppbnQgYXRoMTBrX3BjaV9zZXR1cF9yZXNvdXJjZShzdHJ1Y3QgYXRoMTBrICphcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvcGNpLmMtMzQ1NS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9wY2kuYy0zNTEwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9wY2kuYzozNTExOnZvaWQgYXRoMTBrX3BjaV9yZWxlYXNlX3Jlc291cmNlKHN0cnVjdCBhdGgxMGsgKmFyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9wY2kuYy0zNTEyLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3BjaS5oPTI1MD1pbnQgYXRoMTBrX3BjaV93YWl0X2Zvcl90YXJnZXRfaW5pdChzdHJ1Y3QgYXRoMTBrICphcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3BjaS5oOjI1MTppbnQgYXRoMTBrX3BjaV9zZXR1cF9yZXNvdXJjZShzdHJ1Y3QgYXRoMTBrICphcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3BjaS5oOjI1Mjp2b2lkIGF0aDEwa19wY2lfcmVsZWFzZV9yZXNvdXJjZShzdHJ1Y3QgYXRoMTBrICphcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3BjaS5oLTI1My1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Nub2MuYz03NjE9c3RhdGljIHZvaWQgYXRoMTBrX3Nub2NfaGlmX3NlbmRfY29tcGxldGVfY2hlY2soc3RydWN0IGF0aDEwayAqYXIsIHU4IHBpcGUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9zbm9jLmMtNzY4LVx0aWYgKCFmb3JjZSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9zbm9jLmM6NzY5Olx0XHRyZXNvdXJjZXMgPSBhdGgxMGtfc25vY19oaWZfZ2V0X2ZyZWVfcXVldWVfbnVtYmVyKGFyLCBwaXBlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvc25vYy5jLTc3MC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Nub2MuYz0xMzA1PXN0YXRpYyB2b2lkIGF0aDEwa19zbm9jX2ZyZWVfaXJxKHN0cnVjdCBhdGgxMGsgKmFyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvc25vYy5jLTEzMTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Nub2MuYzoxMzE0OnN0YXRpYyBpbnQgYXRoMTBrX3Nub2NfcmVzb3VyY2VfaW5pdChzdHJ1Y3QgYXRoMTBrICphcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvc25vYy5jLTEzMTUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvc25vYy5jPTEzNzE9aW50IGF0aDEwa19zbm9jX2Z3X2luZGljYXRpb24oc3RydWN0IGF0aDEwayAqYXIsIHU2NCB0eXBlKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvc25vYy5jLTE0MDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Nub2MuYzoxNDA5OnN0YXRpYyBpbnQgYXRoMTBrX3Nub2Nfc2V0dXBfcmVzb3VyY2Uoc3RydWN0IGF0aDEwayAqYXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Nub2MuYy0xNDEwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Nub2MuYy0xNDM3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9zbm9jLmM6MTQzODpzdGF0aWMgdm9pZCBhdGgxMGtfc25vY19yZWxlYXNlX3Jlc291cmNlKHN0cnVjdCBhdGgxMGsgKmFyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9zbm9jLmMtMTQzOS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9zbm9jLmM9MTU3Mz1zdGF0aWMgdm9pZCBhdGgxMGtfbW9kZW1fZGVpbml0KHN0cnVjdCBhdGgxMGsgKmFyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvc25vYy5jLTE1ODItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Nub2MuYzoxNTgzOnN0YXRpYyBpbnQgYXRoMTBrX3NldHVwX21zYV9yZXNvdXJjZXMoc3RydWN0IGF0aDEwayAqYXIsIHUzMiBtc2Ffc2l6ZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvc25vYy5jLTE1ODQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvc25vYy5jPTE3MzI9c3RhdGljIGludCBhdGgxMGtfc25vY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvc25vYy5jLTE4OTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Nub2MuYzoxODk1OnN0YXRpYyBpbnQgYXRoMTBrX3Nub2NfZnJlZV9yZXNvdXJjZXMoc3RydWN0IGF0aDEwayAqYXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Nub2MuYy0xODk2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jPTc0PXN0YXRpYyB2b2lkIGF0aDEwa191c2JfY2xlYW51cF9yZWN2X3VyYihzdHJ1Y3QgYXRoMTBrX3VyYl9jb250ZXh0ICp1cmJfY29udGV4dClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTgxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo4MjpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX2ZyZWVfcGlwZV9yZXNvdXJjZXMoc3RydWN0IGF0aDEwayAqYXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTgzLVx0XHRcdFx0XHQgICBzdHJ1Y3QgYXRoMTBrX3VzYl9waXBlICpwaXBlKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTEzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMTQ6c3RhdGljIHZvaWQgYXRoMTBrX3VzYl9jbGVhbnVwX3BpcGVfcmVzb3VyY2VzKHN0cnVjdCBhdGgxMGsgKmFyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMTUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM9NzQ2PXN0YXRpYyB1OCBhdGgxMGtfdXNiX2dldF9sb2dpY2FsX3BpcGVfbnVtKHU4IGVwX2FkZHJlc3MsIGludCAqdXJiX2NvdW50KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzkwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3OTE6c3RhdGljIGludCBhdGgxMGtfdXNiX2FsbG9jX3BpcGVfcmVzb3VyY2VzKHN0cnVjdCBhdGgxMGsgKmFyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03OTItXHRcdFx0XHRcdCAgIHN0cnVjdCBhdGgxMGtfdXNiX3BpcGUgKnBpcGUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy04MjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjgyMzpzdGF0aWMgaW50IGF0aDEwa191c2Jfc2V0dXBfcGlwZV9yZXNvdXJjZXMoc3RydWN0IGF0aDEwayAqYXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTgyNC1cdFx0XHRcdFx0ICAgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS1vcHMuaD0xND1zdHJ1Y3Qgd21pX29wcyB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWktb3BzLmgtMjA5LVx0XHRcdFx0XHRcdFx0dTMyIGRldGVjdF9tYXJnaW4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWktb3BzLmg6MjEwOlx0c3RydWN0IHNrX2J1ZmYgKigqZXh0X3Jlc291cmNlX2NvbmZpZykoc3RydWN0IGF0aDEwayAqYXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS1vcHMuaC0yMTEtXHRcdFx0XHRcdCAgICAgICBlbnVtIHdtaV9ob3N0X3BsYXRmb3JtX3R5cGUgdHlwZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS1vcHMuaD0xNTc5PXN0YXRpYyBpbmxpbmUgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS1vcHMuaDoxNTgwOmF0aDEwa193bWlfZXh0X3Jlc291cmNlX2NvbmZpZyhzdHJ1Y3QgYXRoMTBrICphcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLW9wcy5oLTE1ODEtXHRcdFx0ICAgICAgIGVudW0gd21pX2hvc3RfcGxhdGZvcm1fdHlwZSB0eXBlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmM9ODg1NT1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYzo4ODU2OmF0aDEwa193bWlfMTBfNF9leHRfcmVzb3VyY2VfY29uZmlnKHN0cnVjdCBhdGgxMGsgKmFyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYy04ODU3LVx0XHRcdFx0ICAgIGVudW0gd21pX2hvc3RfcGxhdGZvcm1fdHlwZSB0eXBlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmM9OTQzOD1zdGF0aWMgY29uc3Qgc3RydWN0IHdtaV9vcHMgd21pXzEwXzRfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmMtOTQ5Ni1cdC5md19zdGF0c19maWxsID0gYXRoMTBrX3dtaV8xMF80X29wX2Z3X3N0YXRzX2ZpbGwsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS5jOjk0OTc6XHQuZXh0X3Jlc291cmNlX2NvbmZpZyA9IGF0aDEwa193bWlfMTBfNF9leHRfcmVzb3VyY2VfY29uZmlnLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYy05NDk4LVx0Lmdlbl91cGRhdGVfZndfdGRsc19zdGF0ZSA9IGF0aDEwa193bWlfMTBfNF9nZW5fdXBkYXRlX2Z3X3RkbHNfc3RhdGUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYz04Mjg9c3RhdGljIGludCBhdGgxMWtfY29yZV9nZXRfcnByb2Moc3RydWN0IGF0aDExa19iYXNlICphYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTg0Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6ODQ4OnN0YXRpYyBpbnQgYXRoMTFrX2FoYl9zZXR1cF9tc2lfcmVzb3VyY2VzKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTg0OS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYz05MTY9c3RhdGljIHZvaWQgYXRoMTFrX2FoYl9yZWxlYXNlX3NtcDJwX2hhbmRsZShzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtOTI1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo5MjY6c3RhdGljIGludCBhdGgxMWtfYWhiX3NldHVwX3Jlc291cmNlcyhzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy05Mjcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtOTQ2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo5NDc6c3RhdGljIGludCBhdGgxMWtfYWhiX3NldHVwX21zYV9yZXNvdXJjZXMoc3RydWN0IGF0aDExa19iYXNlICphYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtOTQ4LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jPTk5OT1zdGF0aWMgdm9pZCBhdGgxMWtfYWhiX2NlX3VubWFwKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0xMDA0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoxMDA1OnN0YXRpYyBpbnQgYXRoMTFrX2FoYl9md19yZXNvdXJjZXNfaW5pdChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0xMDA2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTExMDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjExMDQ6c3RhdGljIGludCBhdGgxMWtfYWhiX2Z3X3Jlc291cmNlX2RlaW5pdChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0xMTA1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jPTEyNjQ9c3RhdGljIHZvaWQgYXRoMTFrX2FoYl9yZW1vdmVfcHJlcGFyZShzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMTI3OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MTI4MDpzdGF0aWMgdm9pZCBhdGgxMWtfYWhiX2ZyZWVfcmVzb3VyY2VzKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTEyODEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYz00Mz1pbnQgYXRoMTFrX2RwX3BlZXJfc2V0dXAoc3RydWN0IGF0aDExayAqYXIsIGludCB2ZGV2X2lkLCBjb25zdCB1OCAqYWRkcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtNzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmM6Nzk6XHQvKiBUT0RPOiBTZXR1cCBvdGhlciBwZWVyIHNwZWNpZmljIHJlc291cmNlIHVzZWQgaW4gZGF0YSBwYXRoICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtODAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9xbWkuYz0zMzY0PUVYUE9SVF9TWU1CT0woYXRoMTFrX3FtaV9kZWluaXRfc2VydmljZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3FtaS5jLTMzNjUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3FtaS5jOjMzNjY6dm9pZCBhdGgxMWtfcW1pX2ZyZWVfcmVzb3VyY2Uoc3RydWN0IGF0aDExa19iYXNlICphYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcW1pLmMtMzM2Ny17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9xbWkuaD01MjE9aW50IGF0aDExa19xbWlfaW5pdF9zZXJ2aWNlKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9xbWkuaDo1MjI6dm9pZCBhdGgxMWtfcW1pX2ZyZWVfcmVzb3VyY2Uoc3RydWN0IGF0aDExa19iYXNlICphYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3FtaS5oLTUyMy1pbnQgYXRoMTFrX3FtaV9md3Jlc2V0X2Zyb21fY29sZF9ib290KHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM9MTAxMT1zdGF0aWMgdm9pZCBhdGgxMmtfYWhiX2RlY29uZmlndXJlX3Jwcm9jKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xMDM1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoxMDM2OnN0YXRpYyBpbnQgYXRoMTJrX2FoYl9yZXNvdXJjZV9pbml0KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTEwMzcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMTA5OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MTEwMDpzdGF0aWMgdm9pZCBhdGgxMmtfYWhiX3Jlc291cmNlX2RlaW5pdChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xMTAxLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jPTEyNjc9c3RhdGljIHZvaWQgYXRoMTJrX2FoYl9yZW1vdmVfcHJlcGFyZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMTI4Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MTI4MzpzdGF0aWMgdm9pZCBhdGgxMmtfYWhiX2ZyZWVfcmVzb3VyY2VzKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTEyODQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuYz00Nz1pbnQgYXRoMTJrX2RwX3BlZXJfc2V0dXAoc3RydWN0IGF0aDEyayAqYXIsIGludCB2ZGV2X2lkLCBjb25zdCB1OCAqYWRkcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmMtODItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmM6ODM6XHQvKiBUT0RPOiBTZXR1cCBvdGhlciBwZWVyIHNwZWNpZmljIHJlc291cmNlIHVzZWQgaW4gZGF0YSBwYXRoICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmMtODQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9xbWkuYz00MTAzPXZvaWQgYXRoMTJrX3FtaV9kZWluaXRfc2VydmljZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcW1pLmMtNDExNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcW1pLmM6NDExNzp2b2lkIGF0aDEya19xbWlfZnJlZV9yZXNvdXJjZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9xbWkuYy00MTE4LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3FtaS5oPTYzMz1pbnQgYXRoMTJrX3FtaV9pbml0X3NlcnZpY2Uoc3RydWN0IGF0aDEya19iYXNlICphYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3FtaS5oOjYzNDp2b2lkIGF0aDEya19xbWlfZnJlZV9yZXNvdXJjZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcW1pLmgtNjM1LXZvaWQgYXRoMTJrX3FtaV90cmlnZ2VyX2hvc3RfY2FwKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmM9NDE0Mz1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYzo0MTQ0OmF0aDEya193bWlfY29weV9yZXNvdXJjZV9jb25maWcoc3RydWN0IGF0aDEya19iYXNlICphYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMtNDE0NS1cdFx0XHRcdHN0cnVjdCBhdGgxMmtfd21pX3Jlc291cmNlX2NvbmZpZ19wYXJhbXMgKndtaV9jZmcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYz0xNzc9c3RhdGljIGlubGluZSBzdHJ1Y3QgYXRoNmtsX3VzYiAqYXRoNmtsX3VzYl9wcml2KHN0cnVjdCBhdGg2a2wgKmFyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTgyLS8qIHBpcGUgcmVzb3VyY2UgYWxsb2NhdGlvbi9jbGVhbnVwICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjE4MzpzdGF0aWMgaW50IGF0aDZrbF91c2JfYWxsb2NfcGlwZV9yZXNvdXJjZXMoc3RydWN0IGF0aDZrbF91c2JfcGlwZSAqcGlwZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTg0LVx0XHRcdFx0XHQgICBpbnQgdXJiX2NudClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTIxNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MjE4OnN0YXRpYyB2b2lkIGF0aDZrbF91c2JfZnJlZV9waXBlX3Jlc291cmNlcyhzdHJ1Y3QgYXRoNmtsX3VzYl9waXBlICpwaXBlKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0yMTkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMjQ4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoyNDk6c3RhdGljIHZvaWQgYXRoNmtsX3VzYl9jbGVhbnVwX3BpcGVfcmVzb3VyY2VzKHN0cnVjdCBhdGg2a2xfdXNiICphcl91c2IpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTI1MC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYz0yNTc9c3RhdGljIHU4IGF0aDZrbF91c2JfZ2V0X2xvZ2ljYWxfcGlwZV9udW0oc3RydWN0IGF0aDZrbF91c2IgKmFyX3VzYixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTMwMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM6MzAzOnN0YXRpYyBpbnQgYXRoNmtsX3VzYl9zZXR1cF9waXBlX3Jlc291cmNlcyhzdHJ1Y3QgYXRoNmtsX3VzYiAqYXJfdXNiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0zMDQte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAxMjo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDc0NgoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaXQgaXM6CgoqKkNoZWNraW5nIGBBVEhfQ09NTU9OYCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL0tjb25maWdgKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgZ29pbmcgb24gd2l0aCB0aGUgQXRoZXJvcyB3aXJlbGVzcyBkcml2ZXJzIGluIHRoaXMga2VybmVsIGJ1aWxkLCBhbmQgdGhlIGZpcnN0IGxvZ2ljYWwgc3RlcCBpcyB0byBjaGVjayB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgYEFUSF9DT01NT05gLiBJIGtub3cgdGhhdCYjMzk7cyBhIGtleSBjb21tb24gY29uZmlndXJhdGlvbiBmb3IgdGhlIEF0aGVyb3MgZHJpdmVyLCBzbyB0aGF0JiMzOTtzIHdoZXJlIEkmIzM5O2xsIHN0YXJ0IGxvb2tpbmcuIEkmIzM5O2xsIG5lZWQgdG8gc2VlIGhvdyBpdCYjMzk7cyBkZWZpbmVkLCBpdHMgZGVwZW5kZW5jaWVzLCBhbmQgd2hhdCBvdGhlciBvcHRpb25zIGFyZSBpbmZsdWVuY2VkIGJ5IGl0cyBzdGF0ZS4gVGhpcyB3aWxsIGhlbHAgbWUgdW5kZXJzdGFuZCB0aGUgb3ZlcmFsbCBidWlsZCBjb25maWd1cmF0aW9uIGFuZCBwaW5wb2ludCBhbnkgcG90ZW50aWFsIGlzc3VlcyBvciB1bmRlcnN0YW5kIHRoZSByYXRpb25hbGUgYmVoaW5kIGNlcnRhaW4gc2V0dGluZ3MsIGdpdmVuIG15IGV4cGVydGlzZSBpbiB0aGUgZmllbGQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDEyOjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBJU0NcbiAgIDI6XHRjb25maWcgQVRIX0NPTU1PTlxuICAgMzpcdFx0dHJpc3RhdGVcbiAgIDQ6XHRcbiAgIDU6XHRjb25maWcgV0xBTl9WRU5ET1JfQVRIXG4gICA2Olx0XHRib29sIFwmIzM0O0F0aGVyb3MvUXVhbGNvbW0gZGV2aWNlc1wmIzM0O1xuICAgNzpcdFx0ZGVmYXVsdCB5XG4gICA4Olx0XHRoZWxwXG4gICA5Olx0XHQgIElmIHlvdSBoYXZlIGEgd2lyZWxlc3MgY2FyZCBiZWxvbmdpbmcgdG8gdGhpcyBjbGFzcywgc2F5IFkuXG4gIDEwOlx0XG4gIDExOlx0XHQgIE5vdGUgdGhhdCB0aGUgYW5zd2VyIHRvIHRoaXMgcXVlc3Rpb24gZG9lc24mIzM5O3QgZGlyZWN0bHkgYWZmZWN0IHRoZVxuICAxMjpcdFx0ICBrZXJuZWw6IHNheWluZyBOIHdpbGwganVzdCBjYXVzZSB0aGUgY29uZmlndXJhdG9yIHRvIHNraXAgYWxsIHRoZVxuICAxMzpcdFx0ICBxdWVzdGlvbnMgYWJvdXQgdGhlc2UgY2FyZHMuIElmIHlvdSBzYXkgWSwgeW91IHdpbGwgYmUgYXNrZWQgZm9yXG4gIDE0Olx0XHQgIHlvdXIgc3BlY2lmaWMgY2FyZCBpbiB0aGUgZm9sbG93aW5nIHF1ZXN0aW9ucy5cbiAgMTU6XHRcbiAgMTY6XHRcdCAgRm9yIG1vcmUgaW5mb3JtYXRpb24gYW5kIGRvY3VtZW50YXRpb24gb24gdGhpcyBtb2R1bGUgeW91IGNhbiB2aXNpdDpcbiAgMTc6XHRcbiAgMTg6XHRcdCAgaHR0cHM6Ly93aXJlbGVzcy53aWtpLmtlcm5lbC5vcmcvZW4vdXNlcnMvRHJpdmVycy9hdGhcbiAgMTk6XHRcbiAgMjA6XHRcdCAgRm9yIGluZm9ybWF0aW9uIG9uIGFsbCBBdGhlcm9zIHdpcmVsZXNzIGRyaXZlcnMgdmlzaXQ6XG4gIDIxOlx0XG4gIDIyOlx0XHQgIGh0dHBzOi8vd2lyZWxlc3Mud2lraS5rZXJuZWwub3JnL2VuL3VzZXJzL0RyaXZlcnMvQXRoZXJvc1xuICAyMzpcdFxuICAyNDpcdGlmIFdMQU5fVkVORE9SX0FUSFxuICAyNTpcdFxuICAyNjpcdGNvbmZpZyBBVEhfREVCVUdcbiAgMjc6XHRcdGJvb2wgXCYjMzQ7QXRoZXJvcyB3aXJlbGVzcyBkZWJ1Z2dpbmdcJiMzNDtcbiAgMjg6XHRcdGhlbHBcbiAgMjk6XHRcdCAgU2F5IFksIGlmIHlvdSB3YW50IHRvIGRlYnVnIGF0aGVyb3Mgd2lyZWxlc3MgZHJpdmVycy5cbiAgMzA6XHRcdCAgUmlnaHQgbm93IG9ubHkgYXRoOWsgbWFrZXMgdXNlIG9mIHRoaXMuXG4gIDMxOlx0XG4gIDMyOlx0Y29uZmlnIEFUSF9UUkFDRVBPSU5UU1xuICAzMzpcdFx0Ym9vbCBcJiMzNDtBdGhlcm9zIHdpcmVsZXNzIHRyYWNpbmdcJiMzNDtcbiAgMzQ6XHRcdGRlcGVuZHMgb24gQVRIX0RFQlVHXG4gIDM1Olx0XHRkZXBlbmRzIG9uIEVWRU5UX1RSQUNJTkdcbiAgMzY6XHRcdGhlbHBcbiAgMzc6XHRcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0cmFjZXBvaW50cyBmb3IgYXRoZXJvcyB3aXJlbGVzcyBkcml2ZXJzLlxuICAzODpcdFx0ICBDdXJyZW50bHksIGF0aDlrIG1ha2VzIHVzZSBvZiB0aGlzIGZhY2lsaXR5LlxuICAzOTpcdFxuICA0MDpcdGNvbmZpZyBBVEhfUkVHX0RZTkFNSUNfVVNFUl9SRUdfSElOVFNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMTI6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDU0ODAKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA0MTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIGF0aDlrX2h0YyBEcml2ZXIgRGVwZW5kZW5jaWVzIGFuZCBTeW1ib2wgU2NvcGUqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93biBzeXN0ZW1hdGljYWxseS4gRmlyc3QsIEkgbmVlZCB0byBjb25maXJtIHRoZSBjb3JlIGRlcGVuZGVuY2llcy4gSXQgbG9va3MgbGlrZSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZTogYFVTQmAsIGBNQUM4MDIxMWAsIGBBVEg5S19IVENgLCBhbmQgYFdMQU5fVkVORE9SX0FUSGAuIFNwZWNpZmljYWxseSwgYENPTkZJR19BVEg5S19IVENgIGFwcGVhcnMgdG8gYmUgdGhlIHByaW1hcnkgY29uZmlndXJhdGlvbiBvcHRpb24sIGFuZCBJIGFsc28gbmVlZCB0byBlbnN1cmUgdGhhdCBgQ09ORklHX1VTQmAsIGBDT05GSUdfTUFDODAyMTFgLCBhbmQgYENPTkZJR19XTEFOX1ZFTkRPUl9BVEhgIGFyZSBhbGwgZW5hYmxlZC4KCk5vdywgbGV0JiMzOTtzIGRyaWxsIGRvd24gaW50byB0aGUga2V5IHN5bWJvbHMgdGhhdCBhcmUgZGlyZWN0bHkgaW1wYWN0ZWQgb3Igc3Ryb25nbHkgY29ubmVjdGVkIHRvIHRoaXMgY29kZS4gSXQgc2VlbXMgbGlrZSB0aGUgZm9jdXMgaXMgb24gdGhlc2U6CgoqICAgYGhpZl91c2Jfc2VuZF9yZWdvdXRgOiBUaGlzIG9uZSB3YXMgZGlyZWN0bHkgbW9kaWZpZWQsIHNwZWNpZmljYWxseSB3aXRoIHRoZSBhZGRpdGlvbiBvZiBhIGBXQVJOX09OQ0VgIGNoZWNrLgoqICAgYGF0aDlrX3JlZ19ybXdfYnVmZmVyYDogVGhpcyB3YXMgZGlyZWN0bHkgbW9kaWZpZWQsIHdoZXJlIHRoZXJlIHdhcyBhIGZpeCBtYWRlIGZvciBhIHJlZ2lzdGVyX3JtdyBzaXplb2YgY2FsY3VsYXRpb24uCiogICBgYXRoOWtfcmVnX3Jtd2A6IFRoaXMgaXMgYSBjYWxsZXIgb2YgYGF0aDlrX3JlZ19ybXdfYnVmZmVyYCwgc28gaXQmIzM5O3MgcmVsZXZhbnQgaW4gdGVybXMgb2YgY29udHJvbCBmbG93LgoqICAgYGF0aDlrX3JlZ19ybXdfZmx1c2hgOiBUaGlzIG9uZSBpcyByZXNwb25zaWJsZSBmb3IgZmx1c2hpbmcgdGhlIGJ1ZmZlciwgc28gaXQmIzM5O3MgaW1wb3J0YW50IGZvciB0aGUgb3ZlcmFsbCByZWdpc3RlciBtb2RpZmljYXRpb24gcHJvY2Vzcy4KKiAgIGBoaWZfdXNiX3NlbmRgOiBUaGlzIG9uZSBjYWxscyBgaGlmX3VzYl9zZW5kX3JlZ291dGAuCgpJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUgYW5kIHZpc2liaWxpdHkgb2YgdGhlc2UgZnVuY3Rpb25zIOKAkyBhcmUgdGhleSBzdGF0aWMsIGV4cG9ydGVkLCBvciBwYXJ0IG9mIHRoZSBiaW5hcnkgc3ltYm9scz8gRXZlbiBzdGF0aWMgZnVuY3Rpb25zLCBpZiBub3QgaW5saW5lZCwgY29udHJpYnV0ZSB0byB0aGUgc3ltYm9sIGNvdmVyYWdlLCBzbyB0aGV5JiMzOTtyZSB3b3J0aCBpbnZlc3RpZ2F0aW5nLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBgYXRoOWtfcmVnX3Jtd19idWZmZXJgLiBZZXMsIGl0IGlzIHN0YXRpYyB2b2lkLiBBbmQgYGhpZl91c2Jfc2VuZF9yZWdvdXRgIGlzIHN0YXRpYyBpbnQuIEFuZCBgaGlmX3VzYl9zZW5kYCBpcyBhbHNvIHN0YXRpYyBpbiBgaGlmX3VzYi5jYCwgYnV0IGl0JiMzOTtzIGEgY2FsbGJhY2ssIGRlZmluZWQgdW5kZXIgYGhpZl9vcHMtJmd0O3NlbmRgLgoKVGhpcyBtZWFucyBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgYGhpZl9kZXYtJmd0O2hpZl9vcHNgIG9yIHRoZSBgaGlmX3VzYmAgY2FsbGJhY2tzIGFyZSByZWdpc3RlcmVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIHN0YXRpYyBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5IHVzZWQgYW5kIGV4cG9zZWQgd2l0aGluIHRoZSBicm9hZGVyIHN5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMTI6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aGlmX3VzYl9zZW5kXFxiJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jPTQ0Mz1zdGF0aWMgdm9pZCBoaWZfdXNiX3N0b3Aodm9pZCAqaGlmX2hhbmRsZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQ3MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NDcyOnN0YXRpYyBpbnQgaGlmX3VzYl9zZW5kKHZvaWQgKmhpZl9oYW5kbGUsIHU4IHBpcGVfaWQsIHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQ3My17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYz01Mjg9c3RhdGljIHN0cnVjdCBhdGg5a19odGNfaGlmIGhpZl91c2IgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy01MzctXHQuc3RhX2RyYWluID0gaGlmX3VzYl9zdGFfZHJhaW4sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjUzODpcdC5zZW5kID0gaGlmX3VzYl9zZW5kLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy01MzktfTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMTI6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDY3NDIKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6CgoqKkFuYWx5emluZyB0aGUgSFRDL1dNSSBMYXllciYjMzk7cyBJbnRlcmFjdGlvbiB3aXRoIGBoaWZfdXNiX3NlbmRgKioKCk9rYXksIHNvIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIGhvdyB0aGUgYGhpZl91c2Jfc2VuZGAgZnVuY3Rpb24gaXMgYWN0dWFsbHkgYmVpbmcgY2FsbGVkIHdpdGhpbiB0aGUgSFRDL1dNSSBsYXllci4gSXQmIzM5O3MgY3J1Y2lhbCB0byB1bmRlcnN0YW5kIHRoaXMgaW50ZXJhY3Rpb24gZm9yIFsgKkluc2VydCB0aGUgcmVsZXZhbnQgdGVjaG5pY2FsIGZpZWxkLCBlLmcuLCBkZWJ1Z2dpbmcgYSBVU0IgY29tbXVuaWNhdGlvbiBpc3N1ZSwgb3B0aW1pemluZyBkYXRhIHRyYW5zZmVyLCBhbmFseXppbmcgZHJpdmVyIGJlaGF2aW9yLCBldGMuKiBdLiBJIG5lZWQgdG8gdHJhY2UgdGhlIGNhbGwgcGF0aHMgdG8gaWRlbnRpZnkgdGhlIGVudHJ5IHBvaW50cyBhbmQgdGhlIGNvbnRleHQgaW4gd2hpY2ggdGhpcyBmdW5jdGlvbiBpcyB1c2VkLiBNeSBpbml0aWFsIHBsYW4gaXMgdG8gZXhhbWluZSB0aGUgY29kZSB3aGVyZSBIVEMgYW5kIFdNSSBhcmUgaW50ZWdyYXRlZC4gSSYjMzk7bSBnb2luZyB0byBmb2xsb3cgdGhlIGZ1bmN0aW9uIGNhbGxzIGZyb20gdGhlIGhpZ2hlciBsZXZlbCBwcm90b2NvbHMgdG8gdGhlIHBvaW50IHdoZXJlIHRoZSBgaGlmX3VzYl9zZW5kYCBmdW5jdGlvbiBpcyBpbnZva2VkLiBUaGlzIHdpbGwgaWxsdW1pbmF0ZSB0aGUgZXhhY3QgZGF0YSB0aGF0JiMzOTtzIGJlaW5nIHNlbnQgb3ZlciBVU0IgYW5kIHRoZSBpbXBsaWNhdGlvbnMgZm9yIHBlcmZvcm1hbmNlIG9yIGFueSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzLiBJIG5lZWQgdG8gbm90ZSBhbnkgcGFyYW1ldGVycyB0aGF0IGFyZSBwYXNzZWQgYW5kIHVuZGVyc3RhbmQgaG93IHRoZSBkYXRhIGlzIGJlaW5nIGNvbnN0cnVjdGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAxMjo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDstXHUwMDNlaGlmLVx1MDAzZXNlbmQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfaHN0LmM9MjE9c3RhdGljIGludCBodGNfaXNzdWVfc2VuZChzdHJ1Y3QgaHRjX3RhcmdldCAqdGFyZ2V0LCBzdHJ1Y3Qgc2tfYnVmZiogc2tiLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfaHN0LmMtMzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2hzdC5jOjM1Olx0c3RhdHVzID0gdGFyZ2V0LVx1MDAzZWhpZi1cdTAwM2VzZW5kKHRhcmdldC1cdTAwM2VoaWZfZGV2LCBlbmRwb2ludC1cdTAwM2V1bF9waXBlaWQsIHNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2hzdC5jLTM2LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAxMjo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NzE3OQoJCQkJCQkJb3V0cHV0OiAyNDkKCQkJCQkJCXRob3VnaHRzOiA3MjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBWZXJkaWN0OiBSZWFkeSB0byBFeGVjdXRlKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24gZm9yIHRoZSBmdXp6aW5nIHJ1bi4gSSYjMzk7dmUgZ290IGEgbGlzdCBvZiB0YXJnZXQgZnVuY3Rpb25zOiBgaHRjX2lzc3VlX3NlbmRgLCBgaHRjX3NlbmRgLCBgYXRoOWtfd21pX2NtZGAsIGBhdGg5a19yZWdfcm13YCwgYGF0aDlrX3JlZ19ybXdfYnVmZmVyYCwgYGF0aDlrX3JlZ19ybXdfZmx1c2hgLCBgaGlmX3VzYl9zZW5kYCwgYW5kIGBoaWZfdXNiX3NlbmRfcmVnb3V0YC4KCkkgbmVlZCB0byBuYWlsIGRvd24gdGhlIHBhcmFtZXRlcnMgZm9yIGBzZXQtcmVzdWx0c2AuIEZpcnN0LCBgV29ydGhGdXp6aW5nYD8gQWJzb2x1dGVseSwgdHJ1ZS4gVGhlIGBSZWFzb25pbmdgIHdpbGwgYmUgYSBjb25jaXNlIGV4cGxhbmF0aW9uLCBhbmQgdGhpcyBpcyB3aGF0IEkmIzM5O20gdGhpbmtpbmc6IFRoZSBwYXRjaCBpbnRyb2R1Y2VzIG5ldyBlcnJvciBoYW5kbGluZyB3aXRoIGEgYFdBUk5fT05DRWAgaW4gYGhpZl91c2Jfc2VuZF9yZWdvdXRgIHRvIHByZXZlbnQgc2VuZGluZyBwYWNrZXRzIG9mIGEgc3BlY2lmaWMgbGVuZ3RoLCB0d2Vha3MgYSBzdHJ1Y3R1cmUgc2l6ZSBjYWxjdWxhdGlvbiBpbiBgYXRoOWtfcmVnX3Jtd19idWZmZXJgLCBhbmQgcmVkdWNlcyBgTUFYX1JNV19DTURfTlVNQkVSYC4gIFRoaXMgZHJpdmVyLCBgYXRoOWtfaHRjYCwgaXMgYWNjZXNzaWJsZSB2aWEgZW11bGF0ZWQgVVNCIGRldmljZXMgKGxpa2UgUmF3IEdhZGdldCksIGFuZCB0aGVzZSBjaGFuZ2VzIHdhcnJhbnQgZnV6emluZyB0byBtYWtlIHN1cmUgZXZlcnl0aGluZyYjMzk7cyBjb3JyZWN0LgoKTmV4dCwgdGhlIGBGb2N1c1N5bWJvbHNgLiAgSSYjMzk7dmUgZ290IGEgc2hvcnRsaXN0IGZyb20gYWJvdmU6IGBoaWZfdXNiX3NlbmRfcmVnb3V0YCwgYGF0aDlrX3JlZ19ybXdfYnVmZmVyYCwgYGF0aDlrX3JlZ19ybXdfZmx1c2hgLCBgYXRoOWtfcmVnX3Jtd2AsIGFuZCBgaGlmX3VzYl9zZW5kYC4gVGhleSYjMzk7cmUgc3BlY2lmaWMgYW5kIG5vbi11YmlxdWl0b3VzLCBqdXN0IGxpa2Ugd2Ugd2FudC4KClRoZW4sIHRoZSBgRW5hYmxlQ29uZmlnc2AuICBXZSBuZWVkIHRoZXNlIGtlcm5lbCBjb25maWcgZmxhZ3MsIHdpdGhvdXQgdGhlIGBDT05GSUdfYCBwcmVmaXg6IGBBVEg5S19IVENgLCBgVVNCYCwgYE1BQzgwMjExYCwgYW5kIGBXTEFOX1ZFTkRPUl9BVEhgLiBJJiMzOTt2ZSBtYWRlIHN1cmUgdG8gcmV2aWV3IHRoZSBpbnN0cnVjdGlvbnM6IHRoZSBnb2FsIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBuZXcgYnVncywgYW5kIHRyaWdnZXJlZCBhc3NlcnRpb25zLiBUaGUgbmV3IG9yIGNoYW5nZWQgYXNzZXJ0aW9ucyBhcmUgKmtleSog4oCTIHdlIG5lZWQgdG8gZnV6eiB0aG9zZSB0byBtYWtlIHN1cmUgdGhleSYjMzk7cmUgc29saWQuIEFuZCB0aGlzIGRyaXZlciBpcyByZWFjaGFibGUgdmlhIFVTQi4gQWxzbywgSSYjMzk7dmUgY29uZmlybWVkIHRoYXQgdGhlIGZvY3VzIHN5bWJvbHMgYXJlIHNwZWNpZmljLgoKTGV0JiMzOTtzIGRvdWJsZS1jaGVjayBhbGwgb2YgdGhpcywgb25lIGxhc3QgdGltZS4KCkNvbmZpZ3M6IGBBVEg5S19IVENgLCBgVVNCYCwgYE1BQzgwMjExYCwgYFdMQU5fVkVORE9SX0FUSGAg4oCTIGNoZWNrLgoKU3ltYm9sczogYGhpZl91c2Jfc2VuZF9yZWdvdXRgLCBgYXRoOWtfcmVnX3Jtd19idWZmZXJgLCBgYXRoOWtfcmVnX3Jtd19mbHVzaGAsIGBhdGg5a19yZWdfcm13YCwgYGhpZl91c2Jfc2VuZGAg4oCTIGNoZWNrLgoKTXkgcmVhc29uaW5nIHN0aWxsIGhvbGRzOiB0aGlzIHBhdGNoIGludHJvZHVjZXMgYSBgV0FSTl9PTkNFYCBpbiBgaGlmX3VzYl9zZW5kX3JlZ291dGAsIHN0cnVjdHVyZSBmaXhlcyBpbiBgYXRoOWtfcmVnX3Jtd19idWZmZXJgIGFuZCByZWR1Y2VzIGBNQVhfUk1XX0NNRF9OVU1CRVJgLiBUaGUgZHJpdmVyIChgYXRoOWtfaHRjYCkgaXMgcmVhY2hhYmxlIHRocm91Z2ggZW11bGF0ZWQgVVNCLCBhbmQgd2UgbmVlZCB0byBmdXp6IHRoZSBuZXcgYXNzZXJ0aW9uIGFuZCBtb2RpZmllZCBidWZmZXIgaGFuZGxpbmcgdG8gcHJldmVudCByZWdyZXNzaW9ucy4KCkFscmlnaHQsIGV2ZXJ5dGhpbmcmIzM5O3MgYWNjdXJhdGUgYW5kIHJlYWR5IHRvIGdvLiBUaW1lIHRvIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMTI6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FUSDlLX0hUQyYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7V0xBTl9WRU5ET1JfQVRIJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aGlmX3VzYl9zZW5kX3JlZ291dCYjMzQ7LAogICAgJiMzNDthdGg5a19yZWdfcm13X2J1ZmZlciYjMzQ7LAogICAgJiMzNDthdGg5a19yZWdfcm13X2ZsdXNoJiMzNDssCiAgICAmIzM0O2F0aDlrX3JlZ19ybXcmIzM0OywKICAgICYjMzQ7aGlmX3VzYl9zZW5kJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBVU0Igd2lyZWxlc3MgZHJpdmVyIGF0aDlrX2h0Yywgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSBVU0IgZ2FkZ2V0L2RldmljZSBlbXVsYXRpb24gaW4gc3l6a2FsbGVyLiBUaGUgY2hhbmdlcyBhZGQgYSBuZXcgV0FSTl9PTkNFIHJ1bnRpbWUgYXNzZXJ0aW9uIGFuZCBjaGVjayBpbiBoaWZfdXNiX3NlbmRfcmVnb3V0IHRvIHByZXZlbnQgc2VuZGluZyBwYWNrZXRzIHdob3NlIGxlbmd0aCBpcyBhbiBleGFjdCBtdWx0aXBsZSBvZiB0aGUgVVNCIG1heHBhY2tldCBzaXplLCBjb3JyZWN0IHRoZSBlbGVtZW50IHNpemUgY2FsY3VsYXRpb24gaW4gYXRoOWtfcmVnX3Jtd19idWZmZXIgZnJvbSBzaXplb2Yoc3RydWN0IHJlZ2lzdGVyX3dyaXRlKSB0byBzaXplb2Yoc3RydWN0IHJlZ2lzdGVyX3JtdyksIGFuZCByZWR1Y2UgTUFYX1JNV19DTURfTlVNQkVSLiBGdXp6aW5nIGlzIHdhcnJhbnRlZCB0byB0ZXN0IHRoZSBuZXcgYXNzZXJ0aW9uIGFuZCBhbHRlcmVkIFJNVyBjb21tYW5kIGJhdGNoaW5nIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtBVEg5S19IVEMmIzM0OywKICAgICYjMzQ7VVNCJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O1dMQU5fVkVORE9SX0FUSCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2hpZl91c2Jfc2VuZF9yZWdvdXQmIzM0OywKICAgICYjMzQ7YXRoOWtfcmVnX3Jtd19idWZmZXImIzM0OywKICAgICYjMzQ7YXRoOWtfcmVnX3Jtd19mbHVzaCYjMzQ7LAogICAgJiMzNDthdGg5a19yZWdfcm13JiMzNDssCiAgICAmIzM0O2hpZl91c2Jfc2VuZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgVVNCIHdpcmVsZXNzIGRyaXZlciBhdGg5a19odGMsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgVVNCIGdhZGdldC9kZXZpY2UgZW11bGF0aW9uIGluIHN5emthbGxlci4gVGhlIGNoYW5nZXMgYWRkIGEgbmV3IFdBUk5fT05DRSBydW50aW1lIGFzc2VydGlvbiBhbmQgY2hlY2sgaW4gaGlmX3VzYl9zZW5kX3JlZ291dCB0byBwcmV2ZW50IHNlbmRpbmcgcGFja2V0cyB3aG9zZSBsZW5ndGggaXMgYW4gZXhhY3QgbXVsdGlwbGUgb2YgdGhlIFVTQiBtYXhwYWNrZXQgc2l6ZSwgY29ycmVjdCB0aGUgZWxlbWVudCBzaXplIGNhbGN1bGF0aW9uIGluIGF0aDlrX3JlZ19ybXdfYnVmZmVyIGZyb20gc2l6ZW9mKHN0cnVjdCByZWdpc3Rlcl93cml0ZSkgdG8gc2l6ZW9mKHN0cnVjdCByZWdpc3Rlcl9ybXcpLCBhbmQgcmVkdWNlIE1BWF9STVdfQ01EX05VTUJFUi4gRnV6emluZyBpcyB3YXJyYW50ZWQgdG8gdGVzdCB0aGUgbmV3IGFzc2VydGlvbiBhbmQgYWx0ZXJlZCBSTVcgY29tbWFuZCBiYXRjaGluZyBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMTI6NDg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAxMjo0ODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHJlc3NlcyBhIFVTQiBjb21tdW5pY2F0aW9uIGlzc3VlIGluIHRoZSBhdGg5ayBkcml2ZXIgd2hlcmUgVVNCIHBhY2tldHMgdGhhdCBhcmUgZXhhY3QgbXVsdGlwbGVzIG9mIGVuZHBvaW50IG1heHBhY2tldCBzaXplIGNhdXNlIGZpcm13YXJlIGRlbGl2ZXJ5IHN0YWxscy4gVGhlIGNoYW5nZXMgY29uc2lzdCBvZjpcbjEuIEFkZGluZyBhIGNoZWNrIGluIGBoaWZfdXNiX3NlbmRfcmVnb3V0KClgIHRvIHdhcm4gYW5kIHJlamVjdCBza2JzIHdob3NlIGxlbmd0aCBpcyBhbiBleGFjdCBtdWx0aXBsZSBvZiB0aGUgZW5kcG9pbnQgbWF4cGFja2V0IHNpemUuXG4yLiBDb3JyZWN0aW5nIHRoZSBidWZmZXIgc2l6ZSBjYWxjdWxhdGlvbiBpbiBgYXRoOWtfcmVnX3Jtd19idWZmZXIoKWAgZnJvbSBgc2l6ZW9mKHN0cnVjdCByZWdpc3Rlcl93cml0ZSlgICg4IGJ5dGVzKSB0byBgc2l6ZW9mKHN0cnVjdCByZWdpc3Rlcl9ybXcpYCAoMTIgYnl0ZXMpLlxuMy4gTG93ZXJpbmcgYE1BWF9STVdfQ01EX05VTUJFUmAgZnJvbSAxNSB0byAxNCBpbiBgd21pLmhgIHRvIGF2b2lkIDY0LWJ5dGUgYWxpZ25lZCBVU0IgcGF5bG9hZHMuXG5cblJlZ2FyZGluZyBtZW1vcnkgaW5pdGlhbGl6YXRpb246XG4tIEFsbCBmaWVsZHMgKGByZWdgLCBgc2V0YCwgYGNscmApIG9mIHRoZSBgc3RydWN0IHJlZ2lzdGVyX3Jtd2AgYXJyYXkgZWxlbWVudHMgaW4gYHByaXYtXHUwMDNld21pLVx1MDAzZW11bHRpX3Jtd2AgYXJlIGV4cGxpY2l0bHkgaW5pdGlhbGl6ZWQgYmVmb3JlIGJlaW5nIHNlbnQgdmlhIGBhdGg5a193bWlfY21kKClgLlxuLSBObyB1c2VyLXNwYWNlIGNvcHkgcGF0aHMgb3IgdW5pbml0aWFsaXplZCBrZXJuZWwgc3RydWN0dXJlIGZpZWxkcyBhcmUgZXhwb3NlZCBvciBtb2RpZmllZC5cbi0gTm8gYnJhbmNoIGNvbmRpdGlvbnMgcmVseSBvbiB1bmluaXRpYWxpemVkIHZhbHVlcy5cblxuVGhlcmVmb3JlLCB0aGlzIHBhdGNoIGludHJvZHVjZXMgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MsIGFuZCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNGE4NzJlODU5MTdkNjcwNDAwNzUxOTE5NzgyNDZmMzliMGI5NWU0NwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTdW4gU2VwIDYgMTI6NDc6MzMgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYwppbmRleCBkMzQ5MWZmMDhlNmVmLi40OTMwM2M3ZTNmZWY0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMKQEAgLTk5LDEwICYjNDM7OTksMTcgQEAgc3RhdGljIHZvaWQgaGlmX3VzYl9yZWdvdXRfY2Ioc3RydWN0IHVyYiAqdXJiKQogc3RhdGljIGludCBoaWZfdXNiX3NlbmRfcmVnb3V0KHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2RldiwKIAkJCSAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogewomIzQzOwl1MTYgbWF4cGFja2V0ID0gdXNiX21heHBhY2tldChoaWZfZGV2LSZndDt1ZGV2LAomIzQzOwkJCQkgICAgICB1c2Jfc25kaW50cGlwZShoaWZfZGV2LSZndDt1ZGV2LAomIzQzOwkJCQkJCSAgICAgVVNCX1JFR19PVVRfUElQRSkpOwogCXN0cnVjdCB1cmIgKnVyYjsKIAlzdHJ1Y3QgY21kX2J1ZiAqY21kOwogCWludCByZXQgPSAwOwogCiYjNDM7CWlmIChXQVJOX09OQ0UobWF4cGFja2V0ICZhbXA7JmFtcDsgc2tiLSZndDtsZW4gJSBtYXhwYWNrZXQgPT0gMCwKJiM0MzsJCSAgICAgICYjMzQ7JXUtYnl0ZSBjb21tYW5kIGZpbGxzIHdob2xlIFVTQiBwYWNrZXRzXG4mIzM0Oywgc2tiLSZndDtsZW4pKQomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CiAJdXJiID0gdXNiX2FsbG9jX3VyYigwLCBHRlBfS0VSTkVMKTsKIAlpZiAodXJiID09IE5VTEwpCiAJCXJldHVybiAtRU5PTUVNOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jCmluZGV4IDZkZTc4YWU4NTcyNjguLjBiNDlkMmNjOTlmMGIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmMKQEAgLTQwNSw3ICYjNDM7NDA1LDcgQEAgc3RhdGljIHZvaWQgYXRoOWtfcmVnX3Jtd19idWZmZXIodm9pZCAqaHdfcHJpdiwKIAlpZiAocHJpdi0mZ3Q7d21pLSZndDttdWx0aV9ybXdfaWR4ID09IE1BWF9STVdfQ01EX05VTUJFUikgewogCQlyID0gYXRoOWtfd21pX2NtZChwcml2LSZndDt3bWksIFdNSV9SRUdfUk1XX0NNRElELAogCQkJICAodTggKikgJmFtcDtwcml2LSZndDt3bWktJmd0O211bHRpX3JtdywKLQkJCSAgc2l6ZW9mKHN0cnVjdCByZWdpc3Rlcl93cml0ZSkgKiBwcml2LSZndDt3bWktJmd0O211bHRpX3Jtd19pZHgsCiYjNDM7CQkJICBzaXplb2Yoc3RydWN0IHJlZ2lzdGVyX3JtdykgKiBwcml2LSZndDt3bWktJmd0O211bHRpX3Jtd19pZHgsCiAJCQkgICh1OCAqKSAmYW1wO3JzcF9zdGF0dXMsIHNpemVvZihyc3Bfc3RhdHVzKSwKIAkJCSAgMTAwKTsKIAkJaWYgKHVubGlrZWx5KHIpKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmgKaW5kZXggNWMzYjcxMGI4ZjMxOS4uMjU2ZjQ2MDk4YTZiMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaApAQCAtMTI2LDcgJiM0MzsxMjYsOCBAQCBlbnVtIHdtaV9ldmVudF9pZCB7CiB9OwogCiAjZGVmaW5lIE1BWF9DTURfTlVNQkVSIDYyCi0jZGVmaW5lIE1BWF9STVdfQ01EX05VTUJFUiAxNQomIzQzOy8qIDE1IGVudHJpZXMgbWFrZSAxOTIgYnl0ZXMsIHRocmVlIGZ1bGwgVVNCIHBhY2tldHM6IG5ldmVyIGRlbGl2ZXJlZC4gKi8KJiM0MzsjZGVmaW5lIE1BWF9STVdfQ01EX05VTUJFUiAxNAogCiBzdHJ1Y3QgcmVnaXN0ZXJfd3JpdGUgewogCV9fYmUzMiByZWc7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAxMjo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzg5CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogNDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFdMQU4gRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgdGhlIEF0aGVyb3MgYXRoOWsgd2lyZWxlc3MgZHJpdmVyLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBVU0IgaG9zdCBpbnRlcmZhY2UgKGBoaWZfdXNiLmNgKSwgdGhlIEhUQyBkcml2ZXIgaW5pdGlhbGl6YXRpb24gKGBodGNfZHJ2X2luaXQuY2ApLCBhbmQgdGhlIFdNSSBoZWFkZXIgKGB3bWkuaGApLiBMZXQmIzM5O3MgYnJlYWsgZG93biB0aGVzZSBjaGFuZ2VzIHRvIHNlZSB3aGF0JiMzOTtzIGdvaW5nIG9uLgoKRmlyc3QsIGluIGBoaWZfdXNiX3NlbmRfcmVnb3V0YCwgdGhlcmUmIzM5O3MgYSBuZXcgc2FuaXR5IGNoZWNrLiBJdCYjMzk7cyBsb29raW5nIGF0IHRoZSBVU0IgcGFja2V0IHNpemUgYmVpbmcgdXNlZCBmb3IgcmVnaXN0ZXIgb3V0cHV0LiBJdCBhcHBlYXJzIHRoZSBjb2RlIG5vdyBjaGVja3MgYHVzYl9tYXhwYWNrZXRgIHRvIGRldGVybWluZSB0aGUgbWF4aW11bSBwYWNrZXQgc2l6ZSBmb3IgdGhlIG91dHB1dCBpbnRlcnJ1cHQgcGlwZS4gSWYgdGhlIGNvbW1hbmQsIGBza2ItJmd0O2xlbmAsIHBlcmZlY3RseSBmaWxscyBhIHdob2xlIFVTQiBwYWNrZXQgKG1lYW5pbmcgaXQmIzM5O3MgYSBtdWx0aXBsZSBvZiBgbWF4cGFja2V0YCkgKndpdGhvdXQqIGEgc2hvcnQgcGFja2V0IG9yIHplcm8tbGVuZ3RoIHBhY2tldCBiZWluZyBzZW50LCB0aGVuIGl0IHJldHVybnMgYC1FSU5WQUxgLiBUaGlzIGlzIGludGVyZXN0aW5nOyBpdCYjMzk7cyBhIHBvdGVudGlhbCBlcnJvciBjb25kaXRpb24gYmVpbmcgZmxhZ2dlZCwgcHJvYmFibHkgcmVsYXRlZCB0byBzb21lIGVkZ2UgY2FzZSB3aXRoIFVTQiB0cmFuc2ZlcnMgdGhhdCB3YXNuJiMzOTt0IGJlaW5nIGhhbmRsZWQgYmVmb3JlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCAqd2h5KiB0aGlzIGZ1bGwtcGFja2V0IGNvbmRpdGlvbiBpcyBwcm9ibGVtYXRpYy4gSXMgaXQgYSBwb3RlbnRpYWwgZW5kcG9pbnQgYnVmZmVyaW5nIGlzc3VlIG9yIHBlcmhhcHMgYSBzaWduYWxpbmcgcHJvYmxlbSByZWxhdGVkIHRvIGEgcGFydGljdWxhciBoYXJkd2FyZSBxdWlyaz8gSSBuZWVkIHRvIGRpZyBkZWVwZXIuCgpNb3Zpbmcgb24gdG8gYGh0Y19kcnZfaW5pdC5jYCwgaXQmIzM5O3MgbW9kaWZ5aW5nIHRoZSBgYXRoOWtfcmVnX3Jtd19idWZmZXJgIGFsbG9jYXRpb24uIFRoZSBzaXplIGNhbGN1bGF0aW9uIGlzIGNoYW5naW5nIGZyb20gdXNpbmcgYHN0cnVjdCByZWdpc3Rlcl93cml0ZWAgdG8gYHN0cnVjdCByZWdpc3Rlcl9ybXdgLiBUaGlzIGlzIGEgY3J1Y2lhbCBkZXRhaWwuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgdGhlIGRpZmZlcmVuY2UgaXMgYmV0d2VlbiB0aGVzZSB0d28gc3RydWN0dXJlcy4gQSBzaXplIGNoYW5nZSBpbmRpY2F0ZXMgZWl0aGVyIGEgZGF0YSBzdHJ1Y3R1cmUgcmV2aXNpb24sIGEgYnVnIGZpeCwgb3IgYW4gb3B0aW1pemF0aW9uLiBJcyB0aGVyZSBhIG5ldyBmaWVsZCBvciBhIGNoYW5nZWQgZmllbGQgd2l0aGluIGBzdHJ1Y3QgcmVnaXN0ZXJfcm13YCBjb21wYXJlZCB0byBgc3RydWN0IHJlZ2lzdGVyX3dyaXRlYD8gSSYjMzk7bGwgbmVlZCB0byBjb21wYXJlIHRoZSBkZWZpbml0aW9ucyB0byB1bmRlcnN0YW5kIHRoZSBtZW1vcnkgaW1wbGljYXRpb25zLgoKRmluYWxseSwgaW4gYHdtaS5oYCwgdGhlcmUmIzM5O3MgYSBzaW1wbGUgY2hhbmdlLCBidXQgaW1wb3J0YW50LCBgTUFYX1JNV19DTURfTlVNQkVSYCBpcyBiZWluZyByZWR1Y2VkIGZyb20gMTUgdG8gMTQuIFRoaXMgYWxtb3N0IGNlcnRhaW5seSBtZWFucyB0aGF0IHRoZXJlJiMzOTtzIGEgbGltaXRhdGlvbiBvbiB0aGUgbnVtYmVyIG9mIFJlZ2lzdGVyLU1vZGlmeS1Xcml0ZSAoUk1XKSBjb21tYW5kcyB0aGF0IGNhbiBiZSBxdWV1ZWQgb3IgcHJvY2Vzc2VkLiBJJiMzOTttIGN1cmlvdXMgYWJvdXQgdGhlIHJhdGlvbmFsZSBmb3IgdGhpcyBjaGFuZ2UuIERvZXMgaXQgaW5kaWNhdGUgYSBidWcgZml4LCBvciBpcyBpdCByZWxhdGVkIHRvIGhhcmR3YXJlIGNvbnN0cmFpbnRzIG9yIGEgV01JIHByb3RvY29sIGNoYW5nZT8gUGVyaGFwcyB0aGUgY29tbWFuZCBzbG90IGNvdW50IHdhcyBpbmNvcnJlY3QgdG8gYmVnaW4gd2l0aD8KClRvIGdldCBhIGJldHRlciBwaWN0dXJlLCBJJiMzOTtsbCB1c2UgYHJlYWQtZmlsZWAgb3IgYGdyZXBwZXJgIHRvIGV4YW1pbmUgYGh0Y19kcnZfaW5pdC5jYCBhcm91bmQgbGluZSA0MDUgKHdoZXJlIHRoZSBgYXRoOWtfcmVnX3Jtd19idWZmZXJgIGlzIGFsbG9jYXRlZCkgYW5kIGB3bWkuaGAgdG8gc2VlIHRob3NlIHN0cnVjdHVyZSBkZWZpbml0aW9ucyBhbmQgdGhlIHN1cnJvdW5kaW5nIGNvZGUuIFRoYXQgc2hvdWxkIGlsbHVtaW5hdGUgdGhlIHJlYXNvbnMgZm9yIHRoZXNlIGNoYW5nZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDEyOjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3JlZ2lzdGVyX3JtdyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jPTM4Mz1zdGF0aWMgdm9pZCBhdGg5a19yZWdfcm13X2J1ZmZlcih2b2lkICpod19wcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy00MDctXHRcdFx0ICAodTggKikgXHUwMDI2cHJpdi1cdTAwM2V3bWktXHUwMDNlbXVsdGlfcm13LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jOjQwODpcdFx0XHQgIHNpemVvZihzdHJ1Y3QgcmVnaXN0ZXJfcm13KSAqIHByaXYtXHUwMDNld21pLVx1MDAzZW11bHRpX3Jtd19pZHgsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmMtNDA5LVx0XHRcdCAgKHU4ICopIFx1MDAyNnJzcF9zdGF0dXMsIHNpemVvZihyc3Bfc3RhdHVzKSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM9NDIyPXN0YXRpYyB2b2lkIGF0aDlrX3JlZ19ybXdfZmx1c2godm9pZCAqaHdfcHJpdilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmMtNDM5LVx0XHRcdCAgKHU4ICopIFx1MDAyNnByaXYtXHUwMDNld21pLVx1MDAzZW11bHRpX3JtdyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYzo0NDA6XHRcdFx0ICBzaXplb2Yoc3RydWN0IHJlZ2lzdGVyX3JtdykgKiBwcml2LVx1MDAzZXdtaS1cdTAwM2VtdWx0aV9ybXdfaWR4LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jLTQ0MS1cdFx0XHQgICh1OCAqKSBcdTAwMjZyc3Bfc3RhdHVzLCBzaXplb2YocnNwX3N0YXR1cyksXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jPTQ2Nj1zdGF0aWMgdm9pZCBhdGg5a19yZWdfcm13X3NpbmdsZSh2b2lkICpod19wcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy00NzEtXHRzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYgPSBjb21tb24tXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYzo0NzI6XHRzdHJ1Y3QgcmVnaXN0ZXJfcm13IGJ1ZiwgYnVmX3JldDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy00NzMtXHRpbnQgcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaD0xMzI9c3RydWN0IHJlZ2lzdGVyX3dyaXRlIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmgtMTM2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oOjEzNzpzdHJ1Y3QgcmVnaXN0ZXJfcm13IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaC0xMzgtXHRfX2JlMzIgcmVnO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaD0xNDk9c3RydWN0IHdtaSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oLTE3NS1cdGF0b21pY190IG1fcm13X2NudDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDoxNzY6XHRzdHJ1Y3QgcmVnaXN0ZXJfcm13IG11bHRpX3Jtd1tNQVhfUk1XX0NNRF9OVU1CRVJdO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oLTE3Ny1cdHUzMiBtdWx0aV9ybXdfaWR4O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAxMjo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NjE1CgkJCQkJCQlvdXRwdXQ6IDQ4CgkJCQkJCQl0aG91Z2h0czogNTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHNvbWUgYGF0aDlrYCBudWFuY2VzLCBzcGVjaWZpY2FsbHkgYXJvdW5kIHRoZSBIVEMgZHJpdmVyIGluaXRpYWxpemF0aW9uLiBNeSBmb2N1cyBpcyBvbiB1bmRlcnN0YW5kaW5nIHRoZSByZWdpc3RlciBtYW5pcHVsYXRpb24gcm91dGluZXMsIHNwZWNpZmljYWxseSBgYXRoOWtfcmVnX3Jtd19idWZmZXJgIGFuZCBgYXRoOWtfcmVnX3Jtd19mbHVzaGAuIEkgc3VzcGVjdCB0aGV5IHBsYXkgYSBrZXkgcm9sZSBpbiBob3cgdGhlIGRyaXZlciBoYW5kbGVzIHJlZ2lzdGVyIHJlYWRzLCBtb2RpZmljYXRpb25zLCBhbmQgd3JpdGUtYmFja3MsIGxpa2VseSBkdXJpbmcgaGFyZHdhcmUgc2V0dXAgYW5kIGluaXRpYWxpemF0aW9uLiBJIHNob3VsZCBmaW5kIHRoZXNlIHdpdGhpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jYC4gVW5kZXJzdGFuZGluZyB0aGVpciBwdXJwb3NlIGlzIGNydWNpYWwgdG8gZW5zdXJpbmcgcHJvcGVyIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24gYW5kIHByZXZlbnRpbmcgcG90ZW50aWFsIHJlZ2lzdGVyIGNvcnJ1cHRpb24gd2hpY2gsIGluIHR1cm4sIGlzIGtleSB0byBvdmVyYWxsIHBlcmZvcm1hbmNlIGFuZCBzdGFiaWxpdHkuIExldCYjMzk7cyBzZWUgd2hhdCB0aG9zZSBmdW5jdGlvbnMgYXJlIGRvaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAxMjo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDM4MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA3MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMzgwOlx0XHRtdXRleF91bmxvY2soXHUwMDI2cHJpdi1cdTAwM2V3bWktXHUwMDNlbXVsdGlfd3JpdGVfbXV0ZXgpO1xuIDM4MTpcdH1cbiAzODI6XHRcbiAzODM6XHRzdGF0aWMgdm9pZCBhdGg5a19yZWdfcm13X2J1ZmZlcih2b2lkICpod19wcml2LFxuIDM4NDpcdFx0XHRcdFx0IHUzMiByZWdfb2Zmc2V0LCB1MzIgc2V0LCB1MzIgY2xyKVxuIDM4NTpcdHtcbiAzODY6XHRcdHN0cnVjdCBhdGhfaHcgKmFoID0gaHdfcHJpdjtcbiAzODc6XHRcdHN0cnVjdCBhdGhfY29tbW9uICpjb21tb24gPSBhdGg5a19od19jb21tb24oYWgpO1xuIDM4ODpcdFx0c3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2ID0gY29tbW9uLVx1MDAzZXByaXY7XG4gMzg5Olx0XHR1MzIgcnNwX3N0YXR1cztcbiAzOTA6XHRcdGludCByO1xuIDM5MTpcdFxuIDM5MjpcdFx0bXV0ZXhfbG9jayhcdTAwMjZwcml2LVx1MDAzZXdtaS1cdTAwM2VtdWx0aV9ybXdfbXV0ZXgpO1xuIDM5MzpcdFxuIDM5NDpcdFx0LyogU3RvcmUgdGhlIHJlZ2lzdGVyL3ZhbHVlICovXG4gMzk1Olx0XHRwcml2LVx1MDAzZXdtaS1cdTAwM2VtdWx0aV9ybXdbcHJpdi1cdTAwM2V3bWktXHUwMDNlbXVsdGlfcm13X2lkeF0ucmVnID1cbiAzOTY6XHRcdFx0Y3B1X3RvX2JlMzIocmVnX29mZnNldCk7XG4gMzk3Olx0XHRwcml2LVx1MDAzZXdtaS1cdTAwM2VtdWx0aV9ybXdbcHJpdi1cdTAwM2V3bWktXHUwMDNlbXVsdGlfcm13X2lkeF0uc2V0ID1cbiAzOTg6XHRcdFx0Y3B1X3RvX2JlMzIoc2V0KTtcbiAzOTk6XHRcdHByaXYtXHUwMDNld21pLVx1MDAzZW11bHRpX3Jtd1twcml2LVx1MDAzZXdtaS1cdTAwM2VtdWx0aV9ybXdfaWR4XS5jbHIgPVxuIDQwMDpcdFx0XHRjcHVfdG9fYmUzMihjbHIpO1xuIDQwMTpcdFxuIDQwMjpcdFx0cHJpdi1cdTAwM2V3bWktXHUwMDNlbXVsdGlfcm13X2lkeCYjNDM7JiM0Mzs7XG4gNDAzOlx0XG4gNDA0Olx0XHQvKiBJZiB0aGUgYnVmZmVyIGlzIGZ1bGwsIHNlbmQgaXQgb3V0LiAqL1xuIDQwNTpcdFx0aWYgKHByaXYtXHUwMDNld21pLVx1MDAzZW11bHRpX3Jtd19pZHggPT0gTUFYX1JNV19DTURfTlVNQkVSKSB7XG4gNDA2Olx0XHRcdHIgPSBhdGg5a193bWlfY21kKHByaXYtXHUwMDNld21pLCBXTUlfUkVHX1JNV19DTURJRCxcbiA0MDc6XHRcdFx0XHQgICh1OCAqKSBcdTAwMjZwcml2LVx1MDAzZXdtaS1cdTAwM2VtdWx0aV9ybXcsXG4gNDA4Olx0XHRcdFx0ICBzaXplb2Yoc3RydWN0IHJlZ2lzdGVyX3JtdykgKiBwcml2LVx1MDAzZXdtaS1cdTAwM2VtdWx0aV9ybXdfaWR4LFxuIDQwOTpcdFx0XHRcdCAgKHU4ICopIFx1MDAyNnJzcF9zdGF0dXMsIHNpemVvZihyc3Bfc3RhdHVzKSxcbiA0MTA6XHRcdFx0XHQgIDEwMCk7XG4gNDExOlx0XHRcdGlmICh1bmxpa2VseShyKSkge1xuIDQxMjpcdFx0XHRcdGF0aF9kYmcoY29tbW9uLCBXTUksXG4gNDEzOlx0XHRcdFx0XHRcJiMzNDtSRUdJU1RFUiBSTVcgRkFJTEVELCBtdWx0aSBsZW46ICVkXFxuXCYjMzQ7LFxuIDQxNDpcdFx0XHRcdFx0cHJpdi1cdTAwM2V3bWktXHUwMDNlbXVsdGlfcm13X2lkeCk7XG4gNDE1Olx0XHRcdH1cbiA0MTY6XHRcdFx0cHJpdi1cdTAwM2V3bWktXHUwMDNlbXVsdGlfcm13X2lkeCA9IDA7XG4gNDE3Olx0XHR9XG4gNDE4Olx0XG4gNDE5Olx0XHRtdXRleF91bmxvY2soXHUwMDI2cHJpdi1cdTAwM2V3bWktXHUwMDNlbXVsdGlfcm13X211dGV4KTtcbiA0MjA6XHR9XG4gNDIxOlx0XG4gNDIyOlx0c3RhdGljIHZvaWQgYXRoOWtfcmVnX3Jtd19mbHVzaCh2b2lkICpod19wcml2KVxuIDQyMzpcdHtcbiA0MjQ6XHRcdHN0cnVjdCBhdGhfaHcgKmFoID0gaHdfcHJpdjtcbiA0MjU6XHRcdHN0cnVjdCBhdGhfY29tbW9uICpjb21tb24gPSBhdGg5a19od19jb21tb24oYWgpO1xuIDQyNjpcdFx0c3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2ID0gY29tbW9uLVx1MDAzZXByaXY7XG4gNDI3Olx0XHR1MzIgcnNwX3N0YXR1cztcbiA0Mjg6XHRcdGludCByO1xuIDQyOTpcdFxuIDQzMDpcdFx0aWYgKHRlc3RfYml0KEhUQ19GV0ZMQUdfTk9fUk1XLCBcdTAwMjZwcml2LVx1MDAzZWZ3X2ZsYWdzKSlcbiA0MzE6XHRcdFx0cmV0dXJuO1xuIDQzMjpcdFxuIDQzMzpcdFx0YXRvbWljX2RlYyhcdTAwMjZwcml2LVx1MDAzZXdtaS1cdTAwM2VtX3Jtd19jbnQpO1xuIDQzNDpcdFxuIDQzNTpcdFx0bXV0ZXhfbG9jayhcdTAwMjZwcml2LVx1MDAzZXdtaS1cdTAwM2VtdWx0aV9ybXdfbXV0ZXgpO1xuIDQzNjpcdFxuIDQzNzpcdFx0aWYgKHByaXYtXHUwMDNld21pLVx1MDAzZW11bHRpX3Jtd19pZHgpIHtcbiA0Mzg6XHRcdFx0ciA9IGF0aDlrX3dtaV9jbWQocHJpdi1cdTAwM2V3bWksIFdNSV9SRUdfUk1XX0NNRElELFxuIDQzOTpcdFx0XHRcdCAgKHU4ICopIFx1MDAyNnByaXYtXHUwMDNld21pLVx1MDAzZW11bHRpX3JtdyxcbiA0NDA6XHRcdFx0XHQgIHNpemVvZihzdHJ1Y3QgcmVnaXN0ZXJfcm13KSAqIHByaXYtXHUwMDNld21pLVx1MDAzZW11bHRpX3Jtd19pZHgsXG4gNDQxOlx0XHRcdFx0ICAodTggKikgXHUwMDI2cnNwX3N0YXR1cywgc2l6ZW9mKHJzcF9zdGF0dXMpLFxuIDQ0MjpcdFx0XHRcdCAgMTAwKTtcbiA0NDM6XHRcdFx0aWYgKHVubGlrZWx5KHIpKSB7XG4gNDQ0Olx0XHRcdFx0YXRoX2RiZyhjb21tb24sIFdNSSxcbiA0NDU6XHRcdFx0XHRcdFwmIzM0O1JFR0lTVEVSIFJNVyBGQUlMRUQsIG11bHRpIGxlbjogJWRcXG5cJiMzNDssXG4gNDQ2Olx0XHRcdFx0XHRwcml2LVx1MDAzZXdtaS1cdTAwM2VtdWx0aV9ybXdfaWR4KTtcbiA0NDc6XHRcdFx0fVxuIDQ0ODpcdFx0XHRwcml2LVx1MDAzZXdtaS1cdTAwM2VtdWx0aV9ybXdfaWR4ID0gMDtcbiA0NDk6XHRcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMTI6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjEyMAoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDM3NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGF0aDlrIFJlZ2lzdGVyIFdyaXRlL01vZGlmeSBQcm9ibGVtKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEluIGBhdGg5a19yZWdfcm13X2J1ZmZlcmAsIGJlZm9yZSB0aGlzIHBhdGNoLCB3ZSB3ZXJlIHBhc3NpbmcgYHNpemVvZihzdHJ1Y3QgcmVnaXN0ZXJfd3JpdGUpICogcHJpdi0mZ3Q7d21pLSZndDttdWx0aV9ybXdfaWR4YC4gIEEgYHN0cnVjdCByZWdpc3Rlcl93cml0ZWAgaXMgOCBieXRlcyDigJMganVzdCBgcmVnYCBhbmQgYHZhbGAuICBCdXQsIHRoZSBjb3JyZXNwb25kaW5nIGBhdGg5a19yZWdfcm13X2ZsdXNoYCB3YXMgYWxyZWFkeSB1c2luZyB0aGUgY29ycmVjdCBzaXplLCBgc2l6ZW9mKHN0cnVjdCByZWdpc3Rlcl9ybXcpICogcHJpdi0mZ3Q7d21pLSZndDttdWx0aV9ybXdfaWR4YCwgd2hpY2ggaXMgMTIgYnl0ZXMgYmVjYXVzZSBpdCBpbmNsdWRlcyBgcmVnYCwgYHNldGAsIGFuZCBgY2xyYC4gIFNvLCBpbiB0aGUgYnVmZmVyIGFsbG9jYXRpb24sIHdlIHdlcmUgY2FsY3VsYXRpbmcgdGhlIGJ1ZmZlciBzaXplIGluY29ycmVjdGx5OiA4IGJ5dGVzIHRpbWVzIHNvbWUgaW5kZXgsIHdoZW4gd2UgbmVlZGVkIDEyIGJ5dGVzIHRpbWVzIHRoZSBpbmRleC4gIEZvciBleGFtcGxlLCBpZiBgbXVsdGlfcm13X2lkeGAgaXMgMTUsIHdlIHdlcmUgYWxsb2NhdGluZyAxMjAgYnl0ZXMgaW5zdGVhZCBvZiAxODAuCgpOb3csIHdhaXQgYSBtaW51dGUuLi4gd2h5IHRoZSBjaGFuZ2UgaW4gYE1BWF9STVdfQ01EX05VTUJFUmAgZnJvbSAxNSB0byAxND8gIEZpZnRlZW4gcmVnaXN0ZXIgY29tbWFuZHMgd291bGQgcmVzdWx0IGluIDE1ICogMTIgYnl0ZXMgPSAxODAgYnl0ZXMuICBBZGQgdGhlIEhUQy9XTUkgaGVhZGVycyBhbmQgaXQgc2hvdWxkIGJlIDE5MiBieXRlcywgd2hpY2ggaXMgZXhhY3RseSB0aHJlZSB0aW1lcyB0aGUgdHlwaWNhbCA2NC1ieXRlIFVTQiBwYWNrZXQgc2l6ZS4gIFdpdGggMTQgY29tbWFuZHMsIHdlIHdvdWxkIGhhdmUgMTY4IGJ5dGVzLCBhbmQgbWF5YmUgYSBwYXJ0aWFsIHBhY2tldD8gVVNCIGJ1bGsgYW5kIGludGVycnVwdCB0cmFuc2ZlcnMgdGhhdCBhcmUgKmV4YWN0KiBtdWx0aXBsZXMgb2YgdGhlIGBtYXhwYWNrZXRgIHNpemUgKHdpdGhvdXQgYSBaTFAgLSBaZXJvIExlbmd0aCBQYWNrZXQpIGNhbiBwb3RlbnRpYWxseSBoYW5nLCBhbmQgdGhlIGRhdGEgbWlnaHQgbmV2ZXIgYmUgZGVsaXZlcmVkIGlmIHRoZSBmaXJtd2FyZSBleHBlY3RzIGEgc2hvcnRlciBwYWNrZXQuIEFuZCBJJiMzOTttIHJlY2FsbGluZyB0aGF0IGBoaWZfdXNiX3NlbmRfcmVnb3V0YCBhY3R1YWxseSAqd2FybnMqIGlmIGBza2ItJmd0O2xlbiAlIG1heHBhY2tldCA9PSAwYC4gV2UgbmVlZCB0byBpbnZlc3RpZ2F0ZSBgaGlmX3VzYi5jYCBhcm91bmQgYGhpZl91c2Jfc2VuZF9yZWdvdXRgIHRvIGNvbmZpcm0gdGhpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMTI6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogOTUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA5NTpcdFx0a2ZyZWVfc2tiKGNtZC1cdTAwM2Vza2IpO1xuICA5NjpcdFx0a2ZyZWUoY21kKTtcbiAgOTc6XHR9XG4gIDk4Olx0XG4gIDk5Olx0c3RhdGljIGludCBoaWZfdXNiX3NlbmRfcmVnb3V0KHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2RldixcbiAxMDA6XHRcdFx0XHQgICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiAxMDE6XHR7XG4gMTAyOlx0XHR1MTYgbWF4cGFja2V0ID0gdXNiX21heHBhY2tldChoaWZfZGV2LVx1MDAzZXVkZXYsXG4gMTAzOlx0XHRcdFx0XHQgICAgICB1c2Jfc25kaW50cGlwZShoaWZfZGV2LVx1MDAzZXVkZXYsXG4gMTA0Olx0XHRcdFx0XHRcdFx0ICAgICBVU0JfUkVHX09VVF9QSVBFKSk7XG4gMTA1Olx0XHRzdHJ1Y3QgdXJiICp1cmI7XG4gMTA2Olx0XHRzdHJ1Y3QgY21kX2J1ZiAqY21kO1xuIDEwNzpcdFx0aW50IHJldCA9IDA7XG4gMTA4Olx0XG4gMTA5Olx0XHRpZiAoV0FSTl9PTkNFKG1heHBhY2tldCBcdTAwMjZcdTAwMjYgc2tiLVx1MDAzZWxlbiAlIG1heHBhY2tldCA9PSAwLFxuIDExMDpcdFx0XHQgICAgICBcJiMzNDsldS1ieXRlIGNvbW1hbmQgZmlsbHMgd2hvbGUgVVNCIHBhY2tldHNcXG5cJiMzNDssIHNrYi1cdTAwM2VsZW4pKVxuIDExMTpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiAxMTI6XHRcbiAxMTM6XHRcdHVyYiA9IHVzYl9hbGxvY191cmIoMCwgR0ZQX0tFUk5FTCk7XG4gMTE0Olx0XHRpZiAodXJiID09IE5VTEwpXG4gMTE1Olx0XHRcdHJldHVybiAtRU5PTUVNO1xuIDExNjpcdFxuIDExNzpcdFx0Y21kID0ga3phbGxvY19vYmooKmNtZCk7XG4gMTE4Olx0XHRpZiAoY21kID09IE5VTEwpIHtcbiAxMTk6XHRcdFx0dXNiX2ZyZWVfdXJiKHVyYik7XG4gMTIwOlx0XHRcdHJldHVybiAtRU5PTUVNO1xuIDEyMTpcdFx0fVxuIDEyMjpcdFxuIDEyMzpcdFx0Y21kLVx1MDAzZXNrYiA9IHNrYjtcbiAxMjQ6XHRcdGNtZC1cdTAwM2VoaWZfZGV2ID0gaGlmX2RldjtcbiAxMjU6XHRcbiAxMjY6XHRcdHVzYl9maWxsX2ludF91cmIodXJiLCBoaWZfZGV2LVx1MDAzZXVkZXYsXG4gMTI3Olx0XHRcdFx0IHVzYl9zbmRpbnRwaXBlKGhpZl9kZXYtXHUwMDNldWRldiwgVVNCX1JFR19PVVRfUElQRSksXG4gMTI4Olx0XHRcdFx0IHNrYi1cdTAwM2VkYXRhLCBza2ItXHUwMDNlbGVuLFxuIDEyOTpcdFx0XHRcdCBoaWZfdXNiX3JlZ291dF9jYiwgY21kLCAxKTtcbiAxMzA6XHRcbiAxMzE6XHRcdHVzYl9hbmNob3JfdXJiKHVyYiwgXHUwMDI2aGlmX2Rldi1cdTAwM2VyZWdvdXRfc3VibWl0dGVkKTtcbiAxMzI6XHRcdHJldCA9IHVzYl9zdWJtaXRfdXJiKHVyYiwgR0ZQX0tFUk5FTCk7XG4gMTMzOlx0XHRpZiAocmV0KSB7XG4gMTM0Olx0XHRcdHVzYl91bmFuY2hvcl91cmIodXJiKTtcbiAxMzU6XHRcdFx0a2ZyZWUoY21kKTtcbiAxMzY6XHRcdH1cbiAxMzc6XHRcdHVzYl9mcmVlX3VyYih1cmIpO1xuIDEzODpcdFxuIDEzOTpcdFx0cmV0dXJuIHJldDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMTI6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzY1NwoJCQkJCQkJb3V0cHV0OiAzMDIKCQkJCQkJCXRob3VnaHRzOiA4MTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqS01TQU4gQXNzZXNzbWVudDogTm8gTmVlZCBIZXJlKioKCk9rYXksIGxldCYjMzk7cyBicmVhayBkb3duIHRoaXMgcGF0Y2ggYW5kIHNlZSBpZiB3ZSBuZWVkIHRvIGJyaW5nIGluIEtNU0FOLiBGaXJzdCwgdGhlIGNvcmUgb2YgdGhlIGNoYW5nZXM6CgoxLiAgKipgYXRoOWtfcmVnX3Jtd19idWZmZXJgIEZpeDoqKiBUaGlzIGlzIHRoZSBtb3N0IGNydWNpYWwgcGFydC4gSXQgbG9va3MgbGlrZSB3ZSB3ZXJlIGFjY2lkZW50YWxseSBzZW5kaW5nIGEgdHJ1bmNhdGVkIHN0cnVjdHVyZSBzaXplIChgc2l6ZW9mKHN0cnVjdCByZWdpc3Rlcl93cml0ZSlgKSB0byBgYXRoOWtfd21pX2NtZCgpYCBpbnN0ZWFkIG9mIHRoZSBjb3JyZWN0IHNpemUgKGBzaXplb2Yoc3RydWN0IHJlZ2lzdGVyX3JtdylgKSBmb3IgdGhlIGBtdWx0aV9ybXdgIGFycmF5LiBUaGUgY29kZSBwb3B1bGF0ZXMgdGhlIGBtdWx0aV9ybXdgIGFycmF5IChvZiBgc3RydWN0IHJlZ2lzdGVyX3Jtd2AgZWxlbWVudHMpLCBzcGVjaWZpY2FsbHkgZmlsbGluZyB0aGUgYHJlZ2AsIGBzZXRgLCBhbmQgYGNscmAgZmllbGRzIGZvciBlYWNoIGVudHJ5LiBUaGUgY29ycmVjdGlvbiBub3cgZW5zdXJlcyB0aGF0IHdlIHNlbmQgdGhlIGNvbXBsZXRlLCBpbml0aWFsaXplZCBkYXRhLiBCZWZvcmUsIHdlIHdlcmUgZWZmZWN0aXZlbHkgdHJ1bmNhdGluZyBkYXRhIHRvIDggYnl0ZXMsIGJ1dCBzZW5kaW5nIHRoZSBkYXRhIHNpemUgYXMgdGhvdWdoIGl0IHdlcmUgMTIgYnl0ZXMuCgoyLiAgKipgTUFYX1JNV19DTURfTlVNQkVSYCBBZGp1c3RtZW50OioqIFJlZHVjaW5nIHRoaXMgY29uc3RhbnQgZnJvbSAxNSB0byAxNCBzZWVtcyB0byBiZSBhIFVTQi1zcGVjaWZpYyBvcHRpbWl6YXRpb24uIEl0JiMzOTtzIGRvbmUgdG8gcHJldmVudCBVU0IgcGFja2V0IGxlbmd0aCBmcm9tIGJlaW5nIGEgbXVsdGlwbGUgb2YgNjQgYnl0ZXMsIHByZXZlbnRpbmcgZW5kcG9pbnQgaGFuZy4gVGhpcyBwcmltYXJpbHkgYWZmZWN0cyB0aGUgc2l6ZSBvZiB0aGUgYXJyYXksIGBtdWx0aV9ybXdgLgoKMy4gICoqYGhpZl91c2Jfc2VuZF9yZWdvdXRgIENoZWNrOioqIFRoaXMgYWRkcyBhIHNpbXBsZSBsZW5ndGggY2hlY2ssIHJldHVybmluZyBgLUVJTlZBTGAgaWYgYHNrYi0mZ3Q7bGVuYCAodGhlIGluaXRpYWxpemVkIGxlbmd0aCBvZiB0aGUgc2tiKSBpcyBhIG11bHRpcGxlIG9mIGBtYXhwYWNrZXRgLgoKTm93LCBkb2VzIGFueSBvZiB0aGlzIHNjcmVhbSAmIzM0O0tNU0FOIHJpc2smIzM0Oz8gTGV0JiMzOTtzIGdvIHRocm91Z2ggdGhlIGNoZWNrbGlzdDoKCiogICAqKlN0cnVjdHVyZSBFeHBvc3VyZSB0byBVc2Vyc3BhY2U6KiogTm8uIFRoaXMgaXMgaW50ZXJuYWwgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIHRoZSBkcml2ZXIgYW5kIHRoZSBVU0IgaGFyZHdhcmUvZmlybXdhcmUuIE5vIGRhdGEgaXMgYmVpbmcgbGVha2VkIHRvIHVzZXJzcGFjZS4KKiAgICoqVW5pbml0aWFsaXplZCBWYXJpYWJsZSBEZXBlbmRlbmNlOioqIE5vcGUuIGBtYXhwYWNrZXRgIGlzIHRoZSByZXN1bHQgb2YgYHVzYl9tYXhwYWNrZXQoKWAsIGFuZCBgc2tiLSZndDtsZW5gIGNvbWVzIGZyb20gdGhlIGBza2JgJiMzOTtzIGluaXRpYWxpemVkIGxlbmd0aC4gVGhlc2UgYXJlIGNoZWNrZWQgYW5kIHdlbGwtZGVmaW5lZC4KKiAgICoqQ29tcGxleCBEYXRhIFN0cnVjdHVyZSBNaXNoYW5kbGluZzoqKiBOby4gVGhlIGBtdWx0aV9ybXdgIGFycmF5IGlzIGFsbG9jYXRlZCBhbmQgbWV0aWN1bG91c2x5IHBvcHVsYXRlZC4gQWxsIGZpZWxkcyB3aXRoaW4gdGhlIGFycmF5IGVsZW1lbnRzIGFyZSBpbml0aWFsaXplZCBiZWZvcmUgYmVpbmcgc2VudC4KKiAgICoqQm91bmRzIENoZWNrIFByb2JsZW1zOioqIFRoZSBzaXplIGNvcnJlY3Rpb24gaW4gYGF0aDlrX3JlZ19ybXdfYnVmZmVyYCAqZml4ZXMqIGEgcG90ZW50aWFsIGlzc3VlLCBlbnN1cmluZyB3ZSYjMzk7cmUgc2VuZGluZyB0aGUgY29ycmVjdCBzaXplIG9mIHRoZSBmdWxseSBpbml0aWFsaXplZCBkYXRhIGluIGBtdWx0aV9ybXdgLiBXZSAqd2VyZW4mIzM5O3QqIHJlYWRpbmcgdW5pbml0aWFsaXplZCBtZW1vcnksIHdlIHdlcmUgKnRydW5jYXRpbmcqIHRoZSBzaXplIHNlbnQuCgpUaGVyZWZvcmUsIGdpdmVuIHRoZSBuYXR1cmUgb2YgdGhlIGNoYW5nZXMsIHBhcnRpY3VsYXJseSB0aGF0IHRoZXkgYXJlIHdpdGhpbiBpbnRlcm5hbCBkcml2ZXIgb3BlcmF0aW9ucyBhbmQgdGhlIHN0cnVjdHVyZXMgYXJlIHByb3Blcmx5IGluaXRpYWxpemVkLCBJIGRvbiYjMzk7dCBzZWUgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgbGVha3MgdGhhdCBLTVNBTiB3b3VsZCBzcGVjaWZpY2FsbHkgY2F0Y2guIFN0YW5kYXJkIGRldGVjdG9ycyBzaG91bGQgYmUgYWRlcXVhdGUgaGVyZS4gU28sIGxldCYjMzk7cyBzZXQgYE5lZWRzS01TQU49ZmFsc2VgIHdpdGggdGhlIHJlYXNvbmluZyB0aGF0IHRoZSBwYXRjaCBmaXhlcyBhIHNpemUgZGlzY3JlcGFuY3kgdG8gcGFzcyBmdWxseSBpbml0aWFsaXplZCBzdHJ1Y3RzLCBhbmQgYWx0ZXJzIHNpemVzIHNhZmVseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMTI6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgVVNCIGNvbW11bmljYXRpb24gaXNzdWUgaW4gdGhlIGF0aDlrIGRyaXZlciB3aGVyZSBVU0IgcGFja2V0cyB0aGF0IGFyZSBleGFjdCBtdWx0aXBsZXMgb2YgZW5kcG9pbnQgbWF4cGFja2V0IHNpemUgY2F1c2UgZmlybXdhcmUgZGVsaXZlcnkgc3RhbGxzLiBUaGUgY2hhbmdlcyBjb25zaXN0IG9mOlxuMS4gQWRkaW5nIGEgY2hlY2sgaW4gYGhpZl91c2Jfc2VuZF9yZWdvdXQoKWAgdG8gd2FybiBhbmQgcmVqZWN0IHNrYnMgd2hvc2UgbGVuZ3RoIGlzIGFuIGV4YWN0IG11bHRpcGxlIG9mIHRoZSBlbmRwb2ludCBtYXhwYWNrZXQgc2l6ZS5cbjIuIENvcnJlY3RpbmcgdGhlIGJ1ZmZlciBzaXplIGNhbGN1bGF0aW9uIGluIGBhdGg5a19yZWdfcm13X2J1ZmZlcigpYCBmcm9tIGBzaXplb2Yoc3RydWN0IHJlZ2lzdGVyX3dyaXRlKWAgKDggYnl0ZXMpIHRvIGBzaXplb2Yoc3RydWN0IHJlZ2lzdGVyX3JtdylgICgxMiBieXRlcykuXG4zLiBMb3dlcmluZyBgTUFYX1JNV19DTURfTlVNQkVSYCBmcm9tIDE1IHRvIDE0IGluIGB3bWkuaGAgdG8gYXZvaWQgNjQtYnl0ZSBhbGlnbmVkIFVTQiBwYXlsb2Fkcy5cblxuUmVnYXJkaW5nIG1lbW9yeSBpbml0aWFsaXphdGlvbjpcbi0gQWxsIGZpZWxkcyAoYHJlZ2AsIGBzZXRgLCBgY2xyYCkgb2YgdGhlIGBzdHJ1Y3QgcmVnaXN0ZXJfcm13YCBhcnJheSBlbGVtZW50cyBpbiBgcHJpdi1cdTAwM2V3bWktXHUwMDNlbXVsdGlfcm13YCBhcmUgZXhwbGljaXRseSBpbml0aWFsaXplZCBiZWZvcmUgYmVpbmcgc2VudCB2aWEgYGF0aDlrX3dtaV9jbWQoKWAuXG4tIE5vIHVzZXItc3BhY2UgY29weSBwYXRocyBvciB1bmluaXRpYWxpemVkIGtlcm5lbCBzdHJ1Y3R1cmUgZmllbGRzIGFyZSBleHBvc2VkIG9yIG1vZGlmaWVkLlxuLSBObyBicmFuY2ggY29uZGl0aW9ucyByZWx5IG9uIHVuaW5pdGlhbGl6ZWQgdmFsdWVzLlxuXG5UaGVyZWZvcmUsIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcywgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRyZXNzZXMgYSBVU0IgY29tbXVuaWNhdGlvbiBpc3N1ZSBpbiB0aGUgYXRoOWsgZHJpdmVyIHdoZXJlIFVTQiBwYWNrZXRzIHRoYXQgYXJlIGV4YWN0IG11bHRpcGxlcyBvZiBlbmRwb2ludCBtYXhwYWNrZXQgc2l6ZSBjYXVzZSBmaXJtd2FyZSBkZWxpdmVyeSBzdGFsbHMuIFRoZSBjaGFuZ2VzIGNvbnNpc3Qgb2Y6XG4xLiBBZGRpbmcgYSBjaGVjayBpbiBgaGlmX3VzYl9zZW5kX3JlZ291dCgpYCB0byB3YXJuIGFuZCByZWplY3Qgc2ticyB3aG9zZSBsZW5ndGggaXMgYW4gZXhhY3QgbXVsdGlwbGUgb2YgdGhlIGVuZHBvaW50IG1heHBhY2tldCBzaXplLlxuMi4gQ29ycmVjdGluZyB0aGUgYnVmZmVyIHNpemUgY2FsY3VsYXRpb24gaW4gYGF0aDlrX3JlZ19ybXdfYnVmZmVyKClgIGZyb20gYHNpemVvZihzdHJ1Y3QgcmVnaXN0ZXJfd3JpdGUpYCAoOCBieXRlcykgdG8gYHNpemVvZihzdHJ1Y3QgcmVnaXN0ZXJfcm13KWAgKDEyIGJ5dGVzKS5cbjMuIExvd2VyaW5nIGBNQVhfUk1XX0NNRF9OVU1CRVJgIGZyb20gMTUgdG8gMTQgaW4gYHdtaS5oYCB0byBhdm9pZCA2NC1ieXRlIGFsaWduZWQgVVNCIHBheWxvYWRzLlxuXG5SZWdhcmRpbmcgbWVtb3J5IGluaXRpYWxpemF0aW9uOlxuLSBBbGwgZmllbGRzIChgcmVnYCwgYHNldGAsIGBjbHJgKSBvZiB0aGUgYHN0cnVjdCByZWdpc3Rlcl9ybXdgIGFycmF5IGVsZW1lbnRzIGluIGBwcml2LVx1MDAzZXdtaS1cdTAwM2VtdWx0aV9ybXdgIGFyZSBleHBsaWNpdGx5IGluaXRpYWxpemVkIGJlZm9yZSBiZWluZyBzZW50IHZpYSBgYXRoOWtfd21pX2NtZCgpYC5cbi0gTm8gdXNlci1zcGFjZSBjb3B5IHBhdGhzIG9yIHVuaW5pdGlhbGl6ZWQga2VybmVsIHN0cnVjdHVyZSBmaWVsZHMgYXJlIGV4cG9zZWQgb3IgbW9kaWZpZWQuXG4tIE5vIGJyYW5jaCBjb25kaXRpb25zIHJlbHkgb24gdW5pbml0aWFsaXplZCB2YWx1ZXMuXG5cblRoZXJlZm9yZSwgdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLCBhbmQgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDZUMTI6NDc6MzQuNDk1NjcyMTIyWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzEwNDMzMDM2MzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQVRIOUtfSFRDXCIsXG4gICAgXCJVU0JcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJXTEFOX1ZFTkRPUl9BVEhcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJoaWZfdXNiX3NlbmRfcmVnb3V0XCIsXG4gICAgXCJhdGg5a19yZWdfcm13X2J1ZmZlclwiLFxuICAgIFwiYXRoOWtfcmVnX3Jtd19mbHVzaFwiLFxuICAgIFwiYXRoOWtfcmVnX3Jtd1wiLFxuICAgIFwiaGlmX3VzYl9zZW5kXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRyZXNzZXMgYSBVU0IgY29tbXVuaWNhdGlvbiBpc3N1ZSBpbiB0aGUgYXRoOWsgZHJpdmVyIHdoZXJlIFVTQiBwYWNrZXRzIHRoYXQgYXJlIGV4YWN0IG11bHRpcGxlcyBvZiBlbmRwb2ludCBtYXhwYWNrZXQgc2l6ZSBjYXVzZSBmaXJtd2FyZSBkZWxpdmVyeSBzdGFsbHMuIFRoZSBjaGFuZ2VzIGNvbnNpc3Qgb2Y6XFxuMS4gQWRkaW5nIGEgY2hlY2sgaW4gYGhpZl91c2Jfc2VuZF9yZWdvdXQoKWAgdG8gd2FybiBhbmQgcmVqZWN0IHNrYnMgd2hvc2UgbGVuZ3RoIGlzIGFuIGV4YWN0IG11bHRpcGxlIG9mIHRoZSBlbmRwb2ludCBtYXhwYWNrZXQgc2l6ZS5cXG4yLiBDb3JyZWN0aW5nIHRoZSBidWZmZXIgc2l6ZSBjYWxjdWxhdGlvbiBpbiBgYXRoOWtfcmVnX3Jtd19idWZmZXIoKWAgZnJvbSBgc2l6ZW9mKHN0cnVjdCByZWdpc3Rlcl93cml0ZSlgICg4IGJ5dGVzKSB0byBgc2l6ZW9mKHN0cnVjdCByZWdpc3Rlcl9ybXcpYCAoMTIgYnl0ZXMpLlxcbjMuIExvd2VyaW5nIGBNQVhfUk1XX0NNRF9OVU1CRVJgIGZyb20gMTUgdG8gMTQgaW4gYHdtaS5oYCB0byBhdm9pZCA2NC1ieXRlIGFsaWduZWQgVVNCIHBheWxvYWRzLlxcblxcblJlZ2FyZGluZyBtZW1vcnkgaW5pdGlhbGl6YXRpb246XFxuLSBBbGwgZmllbGRzIChgcmVnYCwgYHNldGAsIGBjbHJgKSBvZiB0aGUgYHN0cnVjdCByZWdpc3Rlcl9ybXdgIGFycmF5IGVsZW1lbnRzIGluIGBwcml2LVxcdTAwM2V3bWktXFx1MDAzZW11bHRpX3Jtd2AgYXJlIGV4cGxpY2l0bHkgaW5pdGlhbGl6ZWQgYmVmb3JlIGJlaW5nIHNlbnQgdmlhIGBhdGg5a193bWlfY21kKClgLlxcbi0gTm8gdXNlci1zcGFjZSBjb3B5IHBhdGhzIG9yIHVuaW5pdGlhbGl6ZWQga2VybmVsIHN0cnVjdHVyZSBmaWVsZHMgYXJlIGV4cG9zZWQgb3IgbW9kaWZpZWQuXFxuLSBObyBicmFuY2ggY29uZGl0aW9ucyByZWx5IG9uIHVuaW5pdGlhbGl6ZWQgdmFsdWVzLlxcblxcblRoZXJlZm9yZSwgdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLCBhbmQgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgVVNCIHdpcmVsZXNzIGRyaXZlciBhdGg5a19odGMsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgVVNCIGdhZGdldC9kZXZpY2UgZW11bGF0aW9uIGluIHN5emthbGxlci4gVGhlIGNoYW5nZXMgYWRkIGEgbmV3IFdBUk5fT05DRSBydW50aW1lIGFzc2VydGlvbiBhbmQgY2hlY2sgaW4gaGlmX3VzYl9zZW5kX3JlZ291dCB0byBwcmV2ZW50IHNlbmRpbmcgcGFja2V0cyB3aG9zZSBsZW5ndGggaXMgYW4gZXhhY3QgbXVsdGlwbGUgb2YgdGhlIFVTQiBtYXhwYWNrZXQgc2l6ZSwgY29ycmVjdCB0aGUgZWxlbWVudCBzaXplIGNhbGN1bGF0aW9uIGluIGF0aDlrX3JlZ19ybXdfYnVmZmVyIGZyb20gc2l6ZW9mKHN0cnVjdCByZWdpc3Rlcl93cml0ZSkgdG8gc2l6ZW9mKHN0cnVjdCByZWdpc3Rlcl9ybXcpLCBhbmQgcmVkdWNlIE1BWF9STVdfQ01EX05VTUJFUi4gRnV6emluZyBpcyB3YXJyYW50ZWQgdG8gdGVzdCB0aGUgbmV3IGFzc2VydGlvbiBhbmQgYWx0ZXJlZCBSTVcgY29tbWFuZCBiYXRjaGluZyBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMTI6NDc6MzQuNDk1Njc5MTAyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDg4MDE1NzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA0YTg3MmU4NTkxN2Q2NzA0MDA3NTE5MTk3ODI0NmYzOWIwYjk1ZTQ3XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTdW4gU2VwIDYgMTI6NDc6MzMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmNcXG5pbmRleCBkMzQ5MWZmMDhlNmVmLi40OTMwM2M3ZTNmZWY0IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jXFxuQEAgLTk5LDEwICs5OSwxNyBAQCBzdGF0aWMgdm9pZCBoaWZfdXNiX3JlZ291dF9jYihzdHJ1Y3QgdXJiICp1cmIpXFxuIHN0YXRpYyBpbnQgaGlmX3VzYl9zZW5kX3JlZ291dChzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYsXFxuIFxcdFxcdFxcdCAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiB7XFxuK1xcdHUxNiBtYXhwYWNrZXQgPSB1c2JfbWF4cGFja2V0KGhpZl9kZXYtXFx1MDAzZXVkZXYsXFxuK1xcdFxcdFxcdFxcdCAgICAgIHVzYl9zbmRpbnRwaXBlKGhpZl9kZXYtXFx1MDAzZXVkZXYsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCAgICAgVVNCX1JFR19PVVRfUElQRSkpO1xcbiBcXHRzdHJ1Y3QgdXJiICp1cmI7XFxuIFxcdHN0cnVjdCBjbWRfYnVmICpjbWQ7XFxuIFxcdGludCByZXQgPSAwO1xcbiBcXG4rXFx0aWYgKFdBUk5fT05DRShtYXhwYWNrZXQgXFx1MDAyNlxcdTAwMjYgc2tiLVxcdTAwM2VsZW4gJSBtYXhwYWNrZXQgPT0gMCxcXG4rXFx0XFx0ICAgICAgXFxcIiV1LWJ5dGUgY29tbWFuZCBmaWxscyB3aG9sZSBVU0IgcGFja2V0c1xcXFxuXFxcIiwgc2tiLVxcdTAwM2VsZW4pKVxcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFxuIFxcdHVyYiA9IHVzYl9hbGxvY191cmIoMCwgR0ZQX0tFUk5FTCk7XFxuIFxcdGlmICh1cmIgPT0gTlVMTClcXG4gXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuY1xcbmluZGV4IDZkZTc4YWU4NTcyNjguLjBiNDlkMmNjOTlmMGIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jXFxuQEAgLTQwNSw3ICs0MDUsNyBAQCBzdGF0aWMgdm9pZCBhdGg5a19yZWdfcm13X2J1ZmZlcih2b2lkICpod19wcml2LFxcbiBcXHRpZiAocHJpdi1cXHUwMDNld21pLVxcdTAwM2VtdWx0aV9ybXdfaWR4ID09IE1BWF9STVdfQ01EX05VTUJFUikge1xcbiBcXHRcXHRyID0gYXRoOWtfd21pX2NtZChwcml2LVxcdTAwM2V3bWksIFdNSV9SRUdfUk1XX0NNRElELFxcbiBcXHRcXHRcXHQgICh1OCAqKSBcXHUwMDI2cHJpdi1cXHUwMDNld21pLVxcdTAwM2VtdWx0aV9ybXcsXFxuLVxcdFxcdFxcdCAgc2l6ZW9mKHN0cnVjdCByZWdpc3Rlcl93cml0ZSkgKiBwcml2LVxcdTAwM2V3bWktXFx1MDAzZW11bHRpX3Jtd19pZHgsXFxuK1xcdFxcdFxcdCAgc2l6ZW9mKHN0cnVjdCByZWdpc3Rlcl9ybXcpICogcHJpdi1cXHUwMDNld21pLVxcdTAwM2VtdWx0aV9ybXdfaWR4LFxcbiBcXHRcXHRcXHQgICh1OCAqKSBcXHUwMDI2cnNwX3N0YXR1cywgc2l6ZW9mKHJzcF9zdGF0dXMpLFxcbiBcXHRcXHRcXHQgIDEwMCk7XFxuIFxcdFxcdGlmICh1bmxpa2VseShyKSkge1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmhcXG5pbmRleCA1YzNiNzEwYjhmMzE5Li4yNTZmNDYwOThhNmIxIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaFxcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaFxcbkBAIC0xMjYsNyArMTI2LDggQEAgZW51bSB3bWlfZXZlbnRfaWQge1xcbiB9O1xcbiBcXG4gI2RlZmluZSBNQVhfQ01EX05VTUJFUiA2Mlxcbi0jZGVmaW5lIE1BWF9STVdfQ01EX05VTUJFUiAxNVxcbisvKiAxNSBlbnRyaWVzIG1ha2UgMTkyIGJ5dGVzLCB0aHJlZSBmdWxsIFVTQiBwYWNrZXRzOiBuZXZlciBkZWxpdmVyZWQuICovXFxuKyNkZWZpbmUgTUFYX1JNV19DTURfTlVNQkVSIDE0XFxuIFxcbiBzdHJ1Y3QgcmVnaXN0ZXJfd3JpdGUge1xcbiBcXHRfX2JlMzIgcmVnO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQxMjo0NzozNS4wNDUyOTAxMTRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjUyMjIyODQ0MDcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkFUSDlLX0hUQ1wiLFxuICAgIFwiVVNCXCIsXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiV0xBTl9WRU5ET1JfQVRIXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaGlmX3VzYl9zZW5kX3JlZ291dFwiLFxuICAgIFwiYXRoOWtfcmVnX3Jtd19idWZmZXJcIixcbiAgICBcImF0aDlrX3JlZ19ybXdfZmx1c2hcIixcbiAgICBcImF0aDlrX3JlZ19ybXdcIixcbiAgICBcImhpZl91c2Jfc2VuZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBVU0Igd2lyZWxlc3MgZHJpdmVyIGF0aDlrX2h0Yywgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSBVU0IgZ2FkZ2V0L2RldmljZSBlbXVsYXRpb24gaW4gc3l6a2FsbGVyLiBUaGUgY2hhbmdlcyBhZGQgYSBuZXcgV0FSTl9PTkNFIHJ1bnRpbWUgYXNzZXJ0aW9uIGFuZCBjaGVjayBpbiBoaWZfdXNiX3NlbmRfcmVnb3V0IHRvIHByZXZlbnQgc2VuZGluZyBwYWNrZXRzIHdob3NlIGxlbmd0aCBpcyBhbiBleGFjdCBtdWx0aXBsZSBvZiB0aGUgVVNCIG1heHBhY2tldCBzaXplLCBjb3JyZWN0IHRoZSBlbGVtZW50IHNpemUgY2FsY3VsYXRpb24gaW4gYXRoOWtfcmVnX3Jtd19idWZmZXIgZnJvbSBzaXplb2Yoc3RydWN0IHJlZ2lzdGVyX3dyaXRlKSB0byBzaXplb2Yoc3RydWN0IHJlZ2lzdGVyX3JtdyksIGFuZCByZWR1Y2UgTUFYX1JNV19DTURfTlVNQkVSLiBGdXp6aW5nIGlzIHdhcnJhbnRlZCB0byB0ZXN0IHRoZSBuZXcgYXNzZXJ0aW9uIGFuZCBhbHRlcmVkIFJNVyBjb21tYW5kIGJhdGNoaW5nIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDRhODcyZTg1OTE3ZDY3MDQwMDc1MTkxOTc4MjQ2ZjM5YjBiOTVlNDdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIFNlcCA2IDEyOjQ3OjMzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmNcbmluZGV4IGQzNDkxZmYwOGU2ZWYuLjQ5MzAzYzdlM2ZlZjQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jXG5AQCAtOTksMTAgKzk5LDE3IEBAIHN0YXRpYyB2b2lkIGhpZl91c2JfcmVnb3V0X2NiKHN0cnVjdCB1cmIgKnVyYilcbiBzdGF0aWMgaW50IGhpZl91c2Jfc2VuZF9yZWdvdXQoc3RydWN0IGhpZl9kZXZpY2VfdXNiICpoaWZfZGV2LFxuIFx0XHRcdCAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIHtcbitcdHUxNiBtYXhwYWNrZXQgPSB1c2JfbWF4cGFja2V0KGhpZl9kZXYtXHUwMDNldWRldixcbitcdFx0XHRcdCAgICAgIHVzYl9zbmRpbnRwaXBlKGhpZl9kZXYtXHUwMDNldWRldixcbitcdFx0XHRcdFx0XHQgICAgIFVTQl9SRUdfT1VUX1BJUEUpKTtcbiBcdHN0cnVjdCB1cmIgKnVyYjtcbiBcdHN0cnVjdCBjbWRfYnVmICpjbWQ7XG4gXHRpbnQgcmV0ID0gMDtcbiBcbitcdGlmIChXQVJOX09OQ0UobWF4cGFja2V0IFx1MDAyNlx1MDAyNiBza2ItXHUwMDNlbGVuICUgbWF4cGFja2V0ID09IDAsXG4rXHRcdCAgICAgIFwiJXUtYnl0ZSBjb21tYW5kIGZpbGxzIHdob2xlIFVTQiBwYWNrZXRzXFxuXCIsIHNrYi1cdTAwM2VsZW4pKVxuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcbiBcdHVyYiA9IHVzYl9hbGxvY191cmIoMCwgR0ZQX0tFUk5FTCk7XG4gXHRpZiAodXJiID09IE5VTEwpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuY1xuaW5kZXggNmRlNzhhZTg1NzI2OC4uMGI0OWQyY2M5OWYwYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jXG5AQCAtNDA1LDcgKzQwNSw3IEBAIHN0YXRpYyB2b2lkIGF0aDlrX3JlZ19ybXdfYnVmZmVyKHZvaWQgKmh3X3ByaXYsXG4gXHRpZiAocHJpdi1cdTAwM2V3bWktXHUwMDNlbXVsdGlfcm13X2lkeCA9PSBNQVhfUk1XX0NNRF9OVU1CRVIpIHtcbiBcdFx0ciA9IGF0aDlrX3dtaV9jbWQocHJpdi1cdTAwM2V3bWksIFdNSV9SRUdfUk1XX0NNRElELFxuIFx0XHRcdCAgKHU4ICopIFx1MDAyNnByaXYtXHUwMDNld21pLVx1MDAzZW11bHRpX3Jtdyxcbi1cdFx0XHQgIHNpemVvZihzdHJ1Y3QgcmVnaXN0ZXJfd3JpdGUpICogcHJpdi1cdTAwM2V3bWktXHUwMDNlbXVsdGlfcm13X2lkeCxcbitcdFx0XHQgIHNpemVvZihzdHJ1Y3QgcmVnaXN0ZXJfcm13KSAqIHByaXYtXHUwMDNld21pLVx1MDAzZW11bHRpX3Jtd19pZHgsXG4gXHRcdFx0ICAodTggKikgXHUwMDI2cnNwX3N0YXR1cywgc2l6ZW9mKHJzcF9zdGF0dXMpLFxuIFx0XHRcdCAgMTAwKTtcbiBcdFx0aWYgKHVubGlrZWx5KHIpKSB7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oXG5pbmRleCA1YzNiNzEwYjhmMzE5Li4yNTZmNDYwOThhNmIxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmhcbkBAIC0xMjYsNyArMTI2LDggQEAgZW51bSB3bWlfZXZlbnRfaWQge1xuIH07XG4gXG4gI2RlZmluZSBNQVhfQ01EX05VTUJFUiA2MlxuLSNkZWZpbmUgTUFYX1JNV19DTURfTlVNQkVSIDE1XG4rLyogMTUgZW50cmllcyBtYWtlIDE5MiBieXRlcywgdGhyZWUgZnVsbCBVU0IgcGFja2V0czogbmV2ZXIgZGVsaXZlcmVkLiAqL1xuKyNkZWZpbmUgTUFYX1JNV19DTURfTlVNQkVSIDE0XG4gXG4gc3RydWN0IHJlZ2lzdGVyX3dyaXRlIHtcbiBcdF9fYmUzMiByZWc7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQxMjo0NzozNS4wNDUyOTIyOTRaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo5ODExNjcxMTc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGlzIFBhdGNoIGZvciBVU0IgVnVsbmVyYWJpbGl0aWVzKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIHBhdGNoIGlzIGFjdHVhbGx5IGRvaW5nLiBJdCBsb29rcyBsaWtlIHdlIGhhdmUgY2hhbmdlcyBhY3Jvc3MgdGhyZWUgZmlsZXMgaW4gdGhlIGBhdGg5a2Agd2lyZWxlc3MgZHJpdmVyOiBgaGlmX3VzYi5jYCwgYGh0Y19kcnZfaW5pdC5jYCwgYW5kIGB3bWkuaGAuIFNwZWNpZmljYWxseTpcblxuKiAgIEluIGBoaWZfdXNiLmNgLCBpdCBzZWVtcyB3ZSdyZSBhZGRpbmcgYSBjaGVjayB3aXRoaW4gYGhpZl91c2Jfc2VuZF9yZWdvdXRgIHJlbGF0ZWQgdG8gVVNCIHBhY2tldCBzaXplLiBXZSBjYWxjdWxhdGUgYG1heHBhY2tldGAgdXNpbmcgYHVzYl9tYXhwYWNrZXQoKWAgYW5kIHRoZW4gYWRkIGEgYFdBUk5fT05DRWAgY2FsbCB0byByZXR1cm4gYC1FSU5WQUxgIGlmIHRoZSBza2IncyBsZW5ndGggaXMgYSBtdWx0aXBsZSBvZiBgbWF4cGFja2V0YC4gVGhpcyBpcyBpbnRlcmVzdGluZzsgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2h5IHRoZXkncmUgYWRkaW5nIHRoaXMuIElzIHRoZXJlIGEgcG90ZW50aWFsIGJ1ZmZlciBvdmVycnVuIGNvbmRpdGlvbiB0aGV5J3JlIHRyeWluZyB0byBwcmV2ZW50IHdpdGggdGhlIGludGVnZXIgZGl2aXNpb24ncyBtb2R1bHVzIG9mIHplcm8/IFBlcmhhcHMgYW4gb2ZmLWJ5LW9uZSBvciBkYXRhIGludGVncml0eSBpc3N1ZT9cblxuKiAgIE5leHQsIGluIGBodGNfZHJ2X2luaXQuY2AsIHRoZSBwYXRjaCBtb2RpZmllcyBhIHNpemUgY2FsY3VsYXRpb24gd2l0aGluIGBhdGg5a19yZWdfcm13X2J1ZmZlcmAuIEl0IHNlZW1zIHdlJ3JlIHN3aXRjaGluZyBmcm9tIGBzdHJ1Y3QgcmVnaXN0ZXJfd3JpdGVgIHRvIGBzdHJ1Y3QgcmVnaXN0ZXJfcm13YC4gVGhpcyBzdWdnZXN0cyBhIHBvdGVudGlhbCBjaGFuZ2UgaW4gdGhlIHVuZGVybHlpbmcgZGF0YSBzdHJ1Y3R1cmUgYmVpbmcgdXNlZCBmb3IgcmVnaXN0ZXIgcmVhZC1tb2RpZnktd3JpdGUgb3BlcmF0aW9ucywgd2hpY2ggSSBuZWVkIHRvIGludmVzdGlnYXRlIGZ1cnRoZXIuIEl0IGFsc28gYXBwZWFycyB0aGUgYHByaXYtXHUwMDNld21pLVx1MDAzZW11bHRpX3Jtd19pZHhgIHZhbHVlIHdpbGwgYWxzbyBuZWVkIGNoZWNraW5nIHdpdGggdGhhdCBjaGFuZ2UuXG5cbiogICBGaW5hbGx5LCBpbiBgd21pLmhgLCBgTUFYX1JNV19DTURfTlVNQkVSYCBpcyBiZWluZyBjaGFuZ2VkIGZyb20gMTUgdG8gMTQuIFRoaXMgc3VnZ2VzdHMgYSBjaGFuZ2UgaW4gdGhlIG1heGltdW0gbnVtYmVyIG9mIHJlZ2lzdGVyIHJlYWQtbW9kaWZ5LXdyaXRlIGNvbW1hbmRzIHRoYXQgY2FuIGJlIGlzc3VlZC4gVGhpcyBzZWVtcyByZWxhdGVkIHRvIHRoZSBjaGFuZ2VzIGluIGBodGNfZHJ2X2luaXQuY2AuXG5cbk5vdywgdGhlIGNydWNpYWwgcXVlc3Rpb246IGNhbiB3ZSByZWFjaCB0aGlzIGBhdGg5a19odGNgIGRyaXZlciB0aHJvdWdoIFVTQiBlbXVsYXRpb24/IFllcywgYmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZyBhbmQgcXVpY2sgY2hlY2ssIGBhdGg5a19odGNgIGlzIGluZGVlZCBhIFVTQiB3aXJlbGVzcyBuZXR3b3JrIGRyaXZlci4gSSdtIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgdGhlIEtjb25maWcgdG8gY29uZmlybSBpdHMgZGVwZW5kZW5jaWVzLiBJZiB3ZSBjYW4gcmVhY2ggaXQsIHRoZW4gdGhpcyBwYXRjaCBiZWNvbWVzIHNpZ25pZmljYW50bHkgbW9yZSBpbnRlcmVzdGluZyBmcm9tIGEgc2VjdXJpdHkgcGVyc3BlY3RpdmUuIEl0IGlzIGdvb2QgdG8ga25vdyBpdCBpcyByZWFjaGFibGUgYW5kLCB0aHVzLCBwb3RlbnRpYWxseSB2dWxuZXJhYmxlLiBJJ2xsIG5lZWQgdG8gZm9jdXMgb24gaG93IHRoZXNlIGNoYW5nZXMgbWlnaHQgaW1wYWN0IGZ1enppbmcgb3IgZXhwbG9pdCBkZXZlbG9wbWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzU3NywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzNSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDEyOjQ3OjQ0Ljg1Njk2ODY5MloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NjgxMTIwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJBVEg5S19IVENcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZz0xMz1jb25maWcgQVRIOUtfQlRDT0VYX1NVUFBPUlRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNC1cXHRib29sIFxcXCJBdGhlcm9zIGJsdWV0b290aCBjb2V4aXN0ZW5jZSBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjE1OlxcdGRlcGVuZHMgb24gKEFUSDlLIHx8IEFUSDlLX0hUQylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNi1cXHRkZWZhdWx0IHlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnPTE1Nj1jb25maWcgQVRIOUtfUENJX05PX0VFUFJPTVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTcxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjE3Mjpjb25maWcgQVRIOUtfSFRDXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTczLVxcdHRyaXN0YXRlIFxcXCJBdGhlcm9zIEhUQyBiYXNlZCB3aXJlbGVzcyBjYXJkcyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTg2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjE4Nzpjb25maWcgQVRIOUtfSFRDX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xODgtXFx0Ym9vbCBcXFwiQXRoZXJvcyBhdGg5a19odGMgZGVidWdnaW5nXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjE4OTpcXHRkZXBlbmRzIG9uIEFUSDlLX0hUQyBcXHUwMDI2XFx1MDAyNiBERUJVR19GU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE5MC1cXHRzZWxlY3QgQVRIOUtfQ09NTU9OX0RFQlVHXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZz0yMDY9Y29uZmlnIEFUSDlLX0NPTU1PTl9TUEVDVFJBTFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTIwNy1cXHRib29sIFxcXCJBdGhlcm9zIGF0aDlrL2F0aDlrX2h0YyBzcGVjdHJhbCBzY2FuIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MjA4OlxcdGRlcGVuZHMgb24gQVRIOUtfREVCVUdGUyB8fCBBVEg5S19IVENfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTIwOS1cXHRzZWxlY3QgUkVMQVlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZT02OD1hdGg5a19odGMteSArPVxcdGh0Y19oc3QubyBcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtNzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlOjc3OmF0aDlrX2h0Yy0kKENPTkZJR19BVEg5S19IVENfREVCVUdGUykgKz0gaHRjX2Rydl9kZWJ1Zy5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTc4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZTo3OTpvYmotJChDT05GSUdfQVRIOUtfSFRDKSArPSBhdGg5a19odGMub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS04MC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDNfZWVwcm9tLmM9MzM5MD1zdGF0aWMgYm9vbCBhdGg5a19od19hcjkzMDBfZmlsbF9lZXByb20oc3RydWN0IGF0aF9odyAqYWgpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAzX2VlcHJvbS5jLTM0MDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwM19lZXByb20uYzozNDAxOiNpZiBkZWZpbmVkKENPTkZJR19BVEg5S19ERUJVR0ZTKSB8fCBkZWZpbmVkKENPTkZJR19BVEg5S19IVENfREVCVUdGUylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAzX2VlcHJvbS5jLTM0MDItc3RhdGljIHUzMiBhcjkwMDNfZHVtcF9tb2RhbF9lZXByb20oY2hhciAqYnVmLCB1MzIgbGVuLCB1MzIgc2l6ZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM9MjM5PXN0YXRpYyBpbmxpbmUgdm9pZCBhdGg5a19za2JfcXVldWVfY29tcGxldGUoc3RydWN0IGhpZl9kZXZpY2VfdXNiICpoaWZfZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0yNDUtXFx0d2hpbGUgKChza2IgPSBfX3NrYl9kZXF1ZXVlKHF1ZXVlKSkgIT0gTlVMTCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6MjQ2OiNpZmRlZiBDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTI0Ny1cXHRcXHRpbnQgbG4gPSBza2ItXFx1MDAzZWxlbjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM9MzgzPXN0YXRpYyBpbnQgaGlmX3VzYl9zZW5kX3R4KHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2Rldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNDA2LVxcdC8qIE1nbXQvQmVhY29uIGZyYW1lcyBkb24ndCB1c2UgdGhlIFRYIGJ1ZmZlciBwb29sICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo0MDc6XFx0aWYgKCh0eF9jdGwtXFx1MDAzZXR5cGUgPT0gQVRIOUtfSFRDX01HTVQpIHx8XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo0MDg6XFx0ICAgICh0eF9jdGwtXFx1MDAzZXR5cGUgPT0gQVRIOUtfSFRDX0JFQUNPTikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQwOS1cXHRcXHRyZXQgPSBoaWZfdXNiX3NlbmRfbWdtdChoaWZfZGV2LCBza2IpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00MTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo0MTQ6XFx0aWYgKCh0eF9jdGwtXFx1MDAzZXR5cGUgPT0gQVRIOUtfSFRDX05PUk1BTCkgfHxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjQxNTpcXHQgICAgKHR4X2N0bC1cXHUwMDNldHlwZSA9PSBBVEg5S19IVENfQU1QRFUpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00MTYtXFx0XFx0X19za2JfcXVldWVfdGFpbChcXHUwMDI2aGlmX2Rldi1cXHUwMDNldHgudHhfc2tiX3F1ZXVlLCBza2IpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYz00OTQ9c3RhdGljIGlubGluZSBib29sIGNoZWNrX2luZGV4KHN0cnVjdCBza19idWZmICpza2IsIHU4IGlkeClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNDk5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NTAwOlxcdGlmICgodHhfY3RsLVxcdTAwM2V0eXBlID09IEFUSDlLX0hUQ19BTVBEVSkgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTUwMS1cXHQgICAgKHR4X2N0bC1cXHUwMDNlc3RhX2lkeCA9PSBpZHgpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTU2PWVudW0gaHRjX29wbW9kZSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjY1OiNkZWZpbmUgQVRIOUtfSFRDX0FNUERVICAxXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjY2OiNkZWZpbmUgQVRIOUtfSFRDX05PUk1BTCAyXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjY3OiNkZWZpbmUgQVRIOUtfSFRDX0JFQUNPTiAzXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjY4OiNkZWZpbmUgQVRIOUtfSFRDX01HTVQgICA0XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTY5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo3MDojZGVmaW5lIEFUSDlLX0hUQ19UWF9DVFNPTkxZICAgICAgMHgxXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjcxOiNkZWZpbmUgQVRIOUtfSFRDX1RYX1JUU0NUUyAgICAgICAweDJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTczPXN0cnVjdCB0eF9mcmFtZV9oZHIge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTc3LVxcdHU4IHRpZG5vO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo3ODpcXHRfX2JlMzIgZmxhZ3M7IC8qIEFUSDlLX0hUQ19UWF8qICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTc5LVxcdHU4IGtleV90eXBlO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTE5ND1zdHJ1Y3QgYXRoOWtfaHRjX3RhcmdldF9yeF9zdGF0cyB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMTk5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyMDA6I2RlZmluZSBBVEg5S19IVENfTUFYX1ZJRiAyXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjIwMTojZGVmaW5lIEFUSDlLX0hUQ19NQVhfQkNOX1ZJRiAyXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTIwMi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD0yNDk9c3RydWN0IGF0aDlrX3ZpZl9pdGVyX2RhdGEge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI1My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MjU0OiNkZWZpbmUgQVRIOUtfSFRDX01BWF9TVEEgOFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyNTU6I2RlZmluZSBBVEg5S19IVENfTUFYX1RJRCA4XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI1Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD0yNjQ9c3RydWN0IGF0aDlrX2h0Y19zdGEge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0yNjUtXFx0dTggaW5kZXg7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI2NjpcXHRlbnVtIHRpZF9hZ2dyX3N0YXRlIHRpZF9zdGF0ZVtBVEg5S19IVENfTUFYX1RJRF07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI2Ny1cXHRzdHJ1Y3Qgd29ya19zdHJ1Y3QgcmNfdXBkYXRlX3dvcms7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMjcwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyNzE6I2RlZmluZSBBVEg5S19IVENfUlhCVUYgMjU2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI3Mi0jZGVmaW5lIEhUQ19SWF9GUkFNRV9IRUFERVJfU0laRSA0MFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTI4MT1zdHJ1Y3QgYXRoOWtfaHRjX3J4IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0yODYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI4NzojZGVmaW5lIEFUSDlLX0hUQ19UWF9DTEVBTlVQX0lOVEVSVkFMIDUwIC8qIG1zICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI4ODojZGVmaW5lIEFUSDlLX0hUQ19UWF9USU1FT1VUX0lOVEVSVkFMIDMwMDAgLyogbXMgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6Mjg5OiNkZWZpbmUgQVRIOUtfSFRDX1RYX1JFU0VSVkUgMTBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MjkwOiNkZWZpbmUgQVRIOUtfSFRDX1RYX1RJTUVPVVRfQ09VTlQgNDBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MjkxOiNkZWZpbmUgQVRIOUtfSFRDX1RYX1RIUkVTSE9MRCAoTUFYX1RYX0JVRl9OVU0gLSBBVEg5S19IVENfVFhfUkVTRVJWRSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMjkyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyOTM6I2RlZmluZSBBVEg5S19IVENfT1BfVFhfUVVFVUVTX1NUT1AgQklUKDApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI5NDojZGVmaW5lIEFUSDlLX0hUQ19PUF9UWF9EUkFJTiAgICAgICBCSVQoMSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMjk1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTMxMT1zdHJ1Y3QgYXRoOWtfaHRjX3R4X2N0bCB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjMxMjpcXHR1OCB0eXBlOyAvKiBBVEg5S19IVENfKiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0zMTMtXFx0dTggZXBpZDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD0zMTk9c3RhdGljIGlubGluZSBzdHJ1Y3QgYXRoOWtfaHRjX3R4X2N0bCAqSFRDX1NLQl9DQihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTMyNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MzI4OiNpZmRlZiBDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMzI5LSNkZWZpbmUgX19TVEFUX1NBRkUoaGlmX2RldiwgZXhwcilcXHRkbyB7ICgoaGlmX2RldiktXFx1MDAzZWh0Y19oYW5kbGUtXFx1MDAzZWRydl9wcml2ID8gKGV4cHIpIDogMCk7IH0gd2hpbGUgKDApXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9Mzg4PXN0YXRpYyBpbmxpbmUgdm9pZCBhdGg5a19odGNfZXJyX3N0YXRfcngoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTM5Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MzkzOiNlbmRpZiAvKiBDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlMgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMzk0LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTQwOT1zdHJ1Y3QgaHRjX2JlYWNvbiB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNDE1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo0MTY6XFx0c3RydWN0IGllZWU4MDIxMV92aWYgKmJzbG90W0FUSDlLX0hUQ19NQVhfQkNOX1ZJRl07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTQxNy1cXHR1MzIgYm1pc3NjbnQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9NDU2PXN0cnVjdCBhdGg5a19odGNfcHJpdiB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNDc4LVxcdHU4IHN0YV9zbG90O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo0Nzk6XFx0dTggdmlmX3N0YV9wb3NbQVRIOUtfSFRDX01BWF9WSUZdO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC00ODAtXFx0dTggbnVtX2lic3NfdmlmO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTUzNS1cXHRzdHJ1Y3QgZGVsYXllZF93b3JrIGR1dHlfY3ljbGVfd29yaztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6NTM2OiNpZmRlZiBDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNTM3LVxcdHN0cnVjdCBhdGg5a19kZWJ1ZyBkZWJ1ZztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD02NDE9aW50IGF0aDlrX2h0Y19yZXN1bWUoc3RydWN0IGh0Y190YXJnZXQgKmh0Y19oYW5kbGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC02NDItI2VuZGlmXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjY0MzojaWZkZWYgQ09ORklHX0FUSDlLX0hUQ19ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTY0NC1pbnQgYXRoOWtfaHRjX2luaXRfZGVidWcoc3RydWN0IGF0aF9odyAqYWgpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTY0OD1zdGF0aWMgaW5saW5lIHZvaWQgYXRoOWtfaHRjX2RlaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNjUwLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6NjUxOiNlbmRpZiAvKiBDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlMgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNjUyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmM9MTExPXN0YXRpYyB2b2lkIGF0aDlrX2h0Y19iZWFjb25fY29uZmlnX2FwKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTExNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYzoxMTc6XFx0YXRoOWtfY21uX2JlYWNvbl9jb25maWdfYXAoYWgsIGNvbmYsIEFUSDlLX0hUQ19NQVhfQkNOX1ZJRik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMTE4LVxcdGF0aDlrX2h0Y19iZWFjb25faW5pdChwcml2LCBjb25mLCBmYWxzZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYz0xOTE9c3RhdGljIHZvaWQgYXRoOWtfaHRjX3NlbmRfYmVhY29uKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTI0Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYzoyNDM6XFx0dHhfY3RsLVxcdTAwM2V0eXBlID0gQVRIOUtfSFRDX0JFQUNPTjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYy0yNDQtXFx0dHhfY3RsLVxcdTAwM2VlcGlkID0gcHJpdi1cXHUwMDNlYmVhY29uX2VwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmM9MjY0PXN0YXRpYyBpbnQgYXRoOWtfaHRjX2Nob29zZV9ic2xvdChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYy0yNzYtXFx0dHNmdHUgPSBUU0ZfVE9fVFUodHNmIFxcdTAwM2VcXHUwMDNlIDMyLCB0c2YpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jOjI3NzpcXHRzbG90ID0gKCh0c2Z0dSAlIGludHZhbCkgKiBBVEg5S19IVENfTUFYX0JDTl9WSUYpIC8gaW50dmFsO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jOjI3ODpcXHRzbG90ID0gQVRIOUtfSFRDX01BWF9CQ05fVklGIC0gc2xvdCAtIDE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMjc5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmM9MzI1PXZvaWQgYXRoOWtfaHRjX2Fzc2lnbl9ic2xvdChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYy0zMzItXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZwcml2LVxcdTAwM2ViZWFjb25fbG9jayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmM6MzMzOlxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBVEg5S19IVENfTUFYX0JDTl9WSUY7IGkrKykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTMzNC1cXHRcXHRpZiAocHJpdi1cXHUwMDNlYmVhY29uLmJzbG90W2ldID09IE5VTEwpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jPTM2NT12b2lkIGF0aDlrX2h0Y19zZXRfdHNmYWRqdXN0KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTM4MC1cXHQgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYzozODE6XFx0dHNmYWRqdXN0ID0gY3VyX2NvbmYtXFx1MDAzZWJlYWNvbl9pbnRlcnZhbCAqIGF2cC1cXHUwMDNlYnNsb3QgLyBBVEg5S19IVENfTUFYX0JDTl9WSUY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMzgyLVxcdGF2cC1cXHUwMDNldHNmYWRqdXN0ID0gY3B1X3RvX2xlNjQoVFVfVE9fVVNFQyh0c2ZhZGp1c3QpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM9Mzk4PXN0YXRpYyBjb25zdCBjaGFyIGF0aDlrX2h0Y19nc3RyaW5nc19zdGF0c1tdW0VUSF9HU1RSSU5HX0xFTl0gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jLTQxOC19O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM6NDE5OiNkZWZpbmUgQVRIOUtfSFRDX1NTVEFUU19MRU4gQVJSQVlfU0laRShhdGg5a19odGNfZ3N0cmluZ3Nfc3RhdHMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYy00MjAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jPTQzMD1pbnQgYXRoOWtfaHRjX2dldF9ldF9zc2V0X2NvdW50KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYy00MzMtXFx0aWYgKHNzZXQgPT0gRVRIX1NTX1NUQVRTKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM6NDM0OlxcdFxcdHJldHVybiBBVEg5S19IVENfU1NUQVRTX0xFTjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jLTQzNS1cXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM9NDQ4PXZvaWQgYXRoOWtfaHRjX2dldF9ldF9zdGF0cyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMtNDczLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM6NDc0OlxcdFdBUk5fT04oaSAhPSBBVEg5S19IVENfU1NUQVRTX0xFTik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYy00NzUtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jPTYwNj1zdGF0aWMgaW50IGF0aDlrX2luaXRfcHJpdihzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmMtNjczLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYzo2NzQ6XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFUSDlLX0hUQ19NQVhfQkNOX1ZJRjsgaSsrKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy02NzUtXFx0XFx0cHJpdi1cXHUwMDNlYmVhY29uLmJzbG90W2ldID0gTlVMTDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYz0xODQ9dm9pZCBhdGg5a19odGNfcmVzZXQoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTIzMy1cXHRtb2RfdGltZXIoXFx1MDAyNnByaXYtXFx1MDAzZXR4LmNsZWFudXBfdGltZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjIzNDpcXHRcXHQgIGppZmZpZXMgKyBtc2Vjc190b19qaWZmaWVzKEFUSDlLX0hUQ19UWF9DTEVBTlVQX0lOVEVSVkFMKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTIzNS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYz0yNDA9c3RhdGljIGludCBhdGg5a19odGNfc2V0X2NoYW5uZWwoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTMxMS1cXHRtb2RfdGltZXIoXFx1MDAyNnByaXYtXFx1MDAzZXR4LmNsZWFudXBfdGltZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjMxMjpcXHRcXHQgIGppZmZpZXMgKyBtc2Vjc190b19qaWZmaWVzKEFUSDlLX0hUQ19UWF9DTEVBTlVQX0lOVEVSVkFMKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTMxMy1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYz0zNTA9c3RhdGljIGludCBhdGg5a19odGNfYWRkX21vbml0b3JfaW50ZXJmYWNlKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0zNTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjM1ODpcXHRpZiAoKHByaXYtXFx1MDAzZW52aWZzIFxcdTAwM2U9IEFUSDlLX0hUQ19NQVhfVklGKSB8fFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzozNTk6XFx0ICAgIChwcml2LVxcdTAwM2Vuc3RhdGlvbnMgXFx1MDAzZT0gQVRIOUtfSFRDX01BWF9TVEEpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTM2MC1cXHRcXHRyZXQgPSAtRU5PQlVGUztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0zNjQtXFx0c3RhX2lkeCA9IGZmeihwcml2LVxcdTAwM2VzdGFfc2xvdCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjM2NTpcXHRpZiAoKHN0YV9pZHggXFx1MDAzYyAwKSB8fCAoc3RhX2lkeCBcXHUwMDNlIEFUSDlLX0hUQ19NQVhfU1RBKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0zNjYtXFx0XFx0cmV0ID0gLUVOT0JVRlM7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM9NDY2PXN0YXRpYyBpbnQgYXRoOWtfaHRjX2FkZF9zdGF0aW9uKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy00NzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjQ3ODpcXHRpZiAocHJpdi1cXHUwMDNlbnN0YXRpb25zIFxcdTAwM2U9IEFUSDlLX0hUQ19NQVhfU1RBKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy00NzktXFx0XFx0cmV0dXJuIC1FTk9CVUZTO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTQ4MS1cXHRzdGFfaWR4ID0gZmZ6KHByaXYtXFx1MDAzZXN0YV9zbG90KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6NDgyOlxcdGlmICgoc3RhX2lkeCBcXHUwMDNjIDApIHx8IChzdGFfaWR4IFxcdTAwM2UgQVRIOUtfSFRDX01BWF9TVEEpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy00ODMtXFx0XFx0cmV0dXJuIC1FTk9CVUZTO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jPTcwMj1zdGF0aWMgaW50IGF0aDlrX2h0Y190eF9hZ2dyX29wZXIoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTcxMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6NzE0OlxcdGlmICh0aWQgXFx1MDAzZT0gQVRIOUtfSFRDX01BWF9USUQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTcxNS1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYz05MDc9c3RhdGljIGludCBhdGg5a19odGNfc3RhcnQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtOTYwLVxcdHNwaW5fbG9ja19iaChcXHUwMDI2cHJpdi1cXHUwMDNldHgudHhfbG9jayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjk2MTpcXHRwcml2LVxcdTAwM2V0eC5mbGFncyBcXHUwMDI2PSB+QVRIOUtfSFRDX09QX1RYX1FVRVVFU19TVE9QO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy05NjItXFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNnByaXYtXFx1MDAzZXR4LnR4X2xvY2spO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTk2Ni1cXHRtb2RfdGltZXIoXFx1MDAyNnByaXYtXFx1MDAzZXR4LmNsZWFudXBfdGltZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjk2NzpcXHRcXHQgIGppZmZpZXMgKyBtc2Vjc190b19qaWZmaWVzKEFUSDlLX0hUQ19UWF9DTEVBTlVQX0lOVEVSVkFMKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTk2OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYz0xNjU4PXN0YXRpYyBpbnQgYXRoOWtfaHRjX2FtcGR1X2FjdGlvbihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0xNjg4LVxcdGNhc2UgSUVFRTgwMjExX0FNUERVX1RYX09QRVJBVElPTkFMOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzoxNjg5OlxcdFxcdGlmICh0aWQgXFx1MDAzZT0gQVRIOUtfSFRDX01BWF9USUQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMTY5MC1cXHRcXHRcXHRyZXQgPSAtRUlOVkFMO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jPTE4NzQ9c3RydWN0IGllZWU4MDIxMV9vcHMgYXRoOWtfaHRjX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0xOTA2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzoxOTA3OiNpZmRlZiBDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMTkwOC1cXHQuZ2V0X2V0X3NzZXRfY291bnQgID0gYXRoOWtfaHRjX2dldF9ldF9zc2V0X2NvdW50LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTIzPXN0YXRpYyBjb25zdCBpbnQgc3VidHlwZV90eHFfdG9faHdxW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMjktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjMwOiNkZWZpbmUgQVRIOUtfSFRDX0lOSVRfVFhRKHN1YnR5cGUpIGRvIHtcXHRcXHRcXHRcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTMxLVxcdFxcdHFpLnRxaV9zdWJ0eXBlID0gc3VidHlwZV90eHFfdG9faHdxW3N1YnR5cGVdO1xcdFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz01Nj12b2lkIGF0aDlrX2h0Y19jaGVja19zdG9wX3F1ZXVlcyhzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNTktXFx0cHJpdi1cXHUwMDNldHgucXVldWVkX2NudCsrO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo2MDpcXHRpZiAoKHByaXYtXFx1MDAzZXR4LnF1ZXVlZF9jbnQgXFx1MDAzZT0gQVRIOUtfSFRDX1RYX1RIUkVTSE9MRCkgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NjE6XFx0ICAgICEocHJpdi1cXHUwMDNldHguZmxhZ3MgXFx1MDAyNiBBVEg5S19IVENfT1BfVFhfUVVFVUVTX1NUT1ApKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjYyOlxcdFxcdHByaXYtXFx1MDAzZXR4LmZsYWdzIHw9IEFUSDlLX0hUQ19PUF9UWF9RVUVVRVNfU1RPUDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNjMtXFx0XFx0aWVlZTgwMjExX3N0b3BfcXVldWVzKHByaXYtXFx1MDAzZWh3KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz02OD12b2lkIGF0aDlrX2h0Y19jaGVja193YWtlX3F1ZXVlcyhzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNzAtXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZwcml2LVxcdTAwM2V0eC50eF9sb2NrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NzE6XFx0aWYgKChwcml2LVxcdTAwM2V0eC5xdWV1ZWRfY250IFxcdTAwM2MgQVRIOUtfSFRDX1RYX1RIUkVTSE9MRCkgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NzI6XFx0ICAgIChwcml2LVxcdTAwM2V0eC5mbGFncyBcXHUwMDI2IEFUSDlLX0hUQ19PUF9UWF9RVUVVRVNfU1RPUCkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NzM6XFx0XFx0cHJpdi1cXHUwMDNldHguZmxhZ3MgXFx1MDAyNj0gfkFUSDlLX0hUQ19PUF9UWF9RVUVVRVNfU1RPUDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNzQtXFx0XFx0aWVlZTgwMjExX3dha2VfcXVldWVzKHByaXYtXFx1MDAzZWh3KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz0yMTQ9c3RhdGljIHZvaWQgYXRoOWtfaHRjX3R4X21nbXQoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTI0MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6MjQxOlxcdHR4X2N0bC1cXHUwMDNldHlwZSA9IEFUSDlLX0hUQ19NR01UO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0yNDItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9MjYwPXN0YXRpYyB2b2lkIGF0aDlrX2h0Y190eF9kYXRhKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0yOTItXFx0aWYgKHR4X2luZm8tXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUVFRTgwMjExX1RYX0NUTF9BTVBEVSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzoyOTM6XFx0XFx0dHhfY3RsLVxcdTAwM2V0eXBlID0gQVRIOUtfSFRDX0FNUERVO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzoyOTQ6XFx0XFx0dHhfaGRyLmRhdGFfdHlwZSA9IEFUSDlLX0hUQ19BTVBEVTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMjk1LVxcdH0gZWxzZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjI5NjpcXHRcXHR0eF9jdGwtXFx1MDAzZXR5cGUgPSBBVEg5S19IVENfTk9STUFMO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzoyOTc6XFx0XFx0dHhfaGRyLmRhdGFfdHlwZSA9IEFUSDlLX0hUQ19OT1JNQUw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTI5OC1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMzEyLVxcdFxcdGlmIChza2ItXFx1MDAzZWxlbiBcXHUwMDNlIHByaXYtXFx1MDAzZWh3LVxcdTAwM2V3aXBoeS1cXHUwMDNlcnRzX3RocmVzaG9sZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6MzEzOlxcdFxcdFxcdGZsYWdzIHw9IEFUSDlLX0hUQ19UWF9SVFNDVFM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTMxNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMzE1LVxcdC8qIENUUy10by1zZWxmICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjMxNjpcXHRpZiAoIShmbGFncyBcXHUwMDI2IEFUSDlLX0hUQ19UWF9SVFNDVFMpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTMxNy1cXHQgICAgKHZpZiBcXHUwMDI2XFx1MDAyNiB2aWYtXFx1MDAzZWJzc19jb25mLnVzZV9jdHNfcHJvdCkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjMxODpcXHRcXHRmbGFncyB8PSBBVEg5S19IVENfVFhfQ1RTT05MWTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMzE5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTM5Mj1zdGF0aWMgaW5saW5lIGJvb2wgX19hdGg5a19odGNfY2hlY2tfdHhfYWdncihzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMzk3LVxcdHNwaW5fbG9ja19iaChcXHUwMDI2cHJpdi1cXHUwMDNldHgudHhfbG9jayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjM5ODpcXHRpZiAoKHRpZCBcXHUwMDNjIEFUSDlLX0hUQ19NQVhfVElEKSBcXHUwMDI2XFx1MDAyNiAoaXN0YS1cXHUwMDNldGlkX3N0YXRlW3RpZF0gPT0gQUdHUl9TVE9QKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMzk5LVxcdFxcdHJldCA9IHRydWU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9NDQ1PXN0YXRpYyB2b2lkIGF0aDlrX2h0Y190eF9wcm9jZXNzKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00NzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjQ3OTpcXHRpZiAodHhzLVxcdTAwM2V0c19mbGFncyBcXHUwMDI2IEFUSDlLX0hUQ19UWFNUQVRfQUNLKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ4MC1cXHRcXHR0eF9pbmZvLVxcdTAwM2VmbGFncyB8PSBJRUVFODAyMTFfVFhfU1RBVF9BQ0s7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDg0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo0ODU6XFx0aWYgKHR4cy1cXHUwMDNldHNfZmxhZ3MgXFx1MDAyNiBBVEg5S19IVENfVFhTVEFUX0ZJTFQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ4Ni1cXHRcXHR0eF9pbmZvLVxcdTAwM2VmbGFncyB8PSBJRUVFODAyMTFfVFhfU1RBVF9UWF9GSUxURVJFRDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDg3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo0ODg6XFx0aWYgKHR4cy1cXHUwMDNldHNfZmxhZ3MgXFx1MDAyNiBBVEg5S19IVENfVFhTVEFUX1JUQ19DVFMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ4OS1cXHRcXHRyYXRlLVxcdTAwM2VmbGFncyB8PSBJRUVFODAyMTFfVFhfUkNfVVNFX1JUU19DVFM7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDkxLVxcdHJhdGUtXFx1MDAzZWNvdW50ID0gMTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NDkyOlxcdHJhdGUtXFx1MDAzZWlkeCA9IE1TKHR4cy1cXHUwMDNldHNfcmF0ZSwgQVRIOUtfSFRDX1RYU1RBVF9SQVRFKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDkzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo0OTQ6XFx0aWYgKHR4cy1cXHUwMDNldHNfZmxhZ3MgXFx1MDAyNiBBVEg5S19IVENfVFhTVEFUX01DUykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00OTUtXFx0XFx0cmF0ZS1cXHUwMDNlZmxhZ3MgfD0gSUVFRTgwMjExX1RYX1JDX01DUztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDk2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo0OTc6XFx0XFx0aWYgKHR4cy1cXHUwMDNldHNfZmxhZ3MgXFx1MDAyNiBBVEg5S19IVENfVFhTVEFUX0NXNDApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ5OC1cXHRcXHRcXHRyYXRlLVxcdTAwM2VmbGFncyB8PSBJRUVFODAyMTFfVFhfUkNfNDBfTUhaX1dJRFRIO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo0OTk6XFx0XFx0aWYgKHR4cy1cXHUwMDNldHNfZmxhZ3MgXFx1MDAyNiBBVEg5S19IVENfVFhTVEFUX1NHSSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNTAwLVxcdFxcdFxcdHJhdGUtXFx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9UWF9SQ19TSE9SVF9HSTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz01Mzk9dm9pZCBhdGg5a19odGNfdHhfZHJhaW4oc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTU0My1cXHRzcGluX2xvY2tfYmgoXFx1MDAyNnByaXYtXFx1MDAzZXR4LnR4X2xvY2spO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo1NDQ6XFx0cHJpdi1cXHUwMDNldHguZmxhZ3MgfD0gQVRIOUtfSFRDX09QX1RYX0RSQUlOO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy01NDUtXFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNnByaXYtXFx1MDAzZXR4LnR4X2xvY2spO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTU3My1cXHRzcGluX2xvY2tfYmgoXFx1MDAyNnByaXYtXFx1MDAzZXR4LnR4X2xvY2spO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo1NzQ6XFx0cHJpdi1cXHUwMDNldHguZmxhZ3MgXFx1MDAyNj0gfkFUSDlLX0hUQ19PUF9UWF9EUkFJTjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNTc1LVxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZwcml2LVxcdTAwM2V0eC50eF9sb2NrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz01Nzg9dm9pZCBhdGg5a190eF9mYWlsZWRfdGFza2xldChzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgKnQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNTgyLVxcdHNwaW5fbG9jayhcXHUwMDI2cHJpdi1cXHUwMDNldHgudHhfbG9jayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjU4MzpcXHRpZiAocHJpdi1cXHUwMDNldHguZmxhZ3MgXFx1MDAyNiBBVEg5S19IVENfT1BfVFhfRFJBSU4pIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNTg0LVxcdFxcdHNwaW5fdW5sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2V0eC50eF9sb2NrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz02MTg9c3RhdGljIHN0cnVjdCBza19idWZmKiBhdGg5a19odGNfdHhfZ2V0X3BhY2tldChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNjI0LVxcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjYyNTpcXHR1OCBlcGlkID0gTVModHhzLVxcdTAwM2V0c19yYXRlLCBBVEg5S19IVENfVFhTVEFUX0VQSUQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy02MjYtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9NzE2PXN0YXRpYyBpbmxpbmUgYm9vbCBjaGVja19wYWNrZXQoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTcyNC1cXHRcXHQgICAgICAgdHhfY3RsLVxcdTAwM2V0aW1lc3RhbXAgK1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo3MjU6XFx0XFx0ICAgICAgIG1zZWNzX3RvX2ppZmZpZXMoQVRIOUtfSFRDX1RYX1RJTUVPVVRfSU5URVJWQUwpKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy03MjYtXFx0XFx0YXRoX2RiZyhjb21tb24sIFhNSVQsIFxcXCJEcm9wcGluZyBhIHBhY2tldCBkdWUgdG8gVFggdGltZW91dFxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9NzYxPXZvaWQgYXRoOWtfaHRjX3R4X2NsZWFudXBfdGltZXIoc3RydWN0IHRpbWVyX2xpc3QgKnQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNzc2LVxcdFxcdFxcdFxcdGV2ZW50LVxcdTAwM2V0eHMuY29va2llLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo3Nzc6XFx0XFx0XFx0XFx0TVMoZXZlbnQtXFx1MDAzZXR4cy50c19yYXRlLCBBVEg5S19IVENfVFhTVEFUX0VQSUQpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNzc4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTc4NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6Nzg1OlxcdFxcdGlmICgrK2V2ZW50LVxcdTAwM2Vjb3VudCBcXHUwMDNlPSBBVEg5S19IVENfVFhfVElNRU9VVF9DT1VOVCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy03ODYtXFx0XFx0XFx0bGlzdF9kZWwoXFx1MDAyNmV2ZW50LVxcdTAwM2VsaXN0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy04MDUtXFx0bW9kX3RpbWVyKFxcdTAwMjZwcml2LVxcdTAwM2V0eC5jbGVhbnVwX3RpbWVyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo4MDY6XFx0XFx0ICBqaWZmaWVzICsgbXNlY3NfdG9famlmZmllcyhBVEg5S19IVENfVFhfQ0xFQU5VUF9JTlRFUlZBTCkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy04MDctfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTgyNz1ib29sIGF0aDlrX2h0Y190eHFfc2V0dXAoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LCBpbnQgc3VidHlwZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy04MzQtXFx0bWVtc2V0KFxcdTAwMjZxaSwgMCwgc2l6ZW9mKHFpKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjgzNTpcXHRBVEg5S19IVENfSU5JVF9UWFEoc3VidHlwZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTgzNi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz04NTI9aW50IGF0aDlrX2h0Y19jYWJxX3NldHVwKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy04NTYtXFx0bWVtc2V0KFxcdTAwMjZxaSwgMCwgc2l6ZW9mKHFpKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjg1NzpcXHRBVEg5S19IVENfSU5JVF9UWFEoMCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTg1OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz0xMTg3PWludCBhdGg5a19yeF9pbml0KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0xMTkzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzoxMTk0OlxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBVEg5S19IVENfUlhCVUY7IGkrKykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0xMTk1LVxcdFxcdHN0cnVjdCBhdGg5a19odGNfcnhidWYgKnJ4YnVmID1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYz0xMzg9dm9pZCBhdGg5a193bWlfZXZlbnRfdGFza2xldChzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgKnQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmMtMTc4LVxcdFxcdFxcdHNwaW5fbG9ja19iaChcXHUwMDI2cHJpdi1cXHUwMDNldHgudHhfbG9jayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jOjE3OTpcXHRcXHRcXHRpZiAocHJpdi1cXHUwMDNldHguZmxhZ3MgXFx1MDAyNiBBVEg5S19IVENfT1BfVFhfRFJBSU4pIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmMtMTgwLVxcdFxcdFxcdFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZwcml2LVxcdTAwM2V0eC50eF9sb2NrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaD0zOT1zdHJ1Y3Qgd21pX2V2ZW50X3N3YmEge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oLTUwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo1MTojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfQUNLICAgICAgICBCSVQoMClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6NTI6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX0ZJTFQgICAgICAgQklUKDEpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oOjUzOiNkZWZpbmUgQVRIOUtfSFRDX1RYU1RBVF9SVENfQ1RTICAgIEJJVCgyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo1NDojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfTUNTICAgICAgICBCSVQoMylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6NTU6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX0NXNDAgICAgICAgQklUKDQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oOjU2OiNkZWZpbmUgQVRIOUtfSFRDX1RYU1RBVF9TR0kgICAgICAgIEJJVCg1KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaC01Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaC02My0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6NjQ6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX1JBVEUgICAgICAgMHgwZlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo2NTojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfUkFURV9TICAgICAwXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oLTY2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo2NzojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfRVBJRCAgICAgICAweGYwXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oOjY4OiNkZWZpbmUgQVRIOUtfSFRDX1RYU1RBVF9FUElEX1MgICAgIDRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmgtNjktXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDEyOjQ3OjQ0Ljk1Mzc4NzA1WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzIyOTE1MDI1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqQ2hlY2tpbmcgQVRIOUtfSFRDIERlcGVuZGVuY2llcyoqXG5cblJpZ2h0LCBsZXQncyBkaXZlIHN0cmFpZ2h0IGluLiBJIG5lZWQgdG8gcGlucG9pbnQgdGhlICpleGFjdCogZGVwZW5kZW5jaWVzIGZvciBgQVRIOUtfSFRDYC4gSSBrbm93IGl0J3MgYSBjcml0aWNhbCBtb2R1bGUsIHNvIEkgY2FuJ3QgYWZmb3JkIGFueSBhc3N1bXB0aW9ucyBoZXJlLiBUaGUgbW9zdCByZWxpYWJsZSBwbGFjZSB0byBnZXQgdGhlIGRlZmluaXRpdmUgYW5zd2VyIG9uIGRlcGVuZGVuY2llcywgcGFydGljdWxhcmx5IGZvciBhIGRyaXZlciBsaWtlIHRoaXMsIGlzIGFsd2F5cyB0aGUgYEtjb25maWdgIGZpbGUgaW4gaXRzIGRpcmVjdG9yeS4gVGhhdCdsbCBiZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWdgLiBObyBuZWVkIHRvIGd1ZXNzIG9yIHJlbHkgb24gb3V0ZGF0ZWQgZG9jdW1lbnRhdGlvbjsgdGhlIEtjb25maWcgaXMgdGhlIHNvdXJjZSBvZiB0cnV0aCBmb3IgdGhlIGJ1aWxkIHN5c3RlbS4gTGV0J3Mgc2VlIHdoYXQgaXQncyB0aWVkIHRvLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjkxNSwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDEyOjQ3OjQ4LjE4Mjk0MjgyM1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwODgyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNzAsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxNzA6XFx0XFx0ICBJZiB1bnN1cmUgc2F5IE4uXFxuIDE3MTpcXHRcXG4gMTcyOlxcdGNvbmZpZyBBVEg5S19IVENcXG4gMTczOlxcdFxcdHRyaXN0YXRlIFxcXCJBdGhlcm9zIEhUQyBiYXNlZCB3aXJlbGVzcyBjYXJkcyBzdXBwb3J0XFxcIlxcbiAxNzQ6XFx0XFx0ZGVwZW5kcyBvbiBVU0IgXFx1MDAyNlxcdTAwMjYgTUFDODAyMTFcXG4gMTc1OlxcdFxcdHNlbGVjdCBNQUM4MDIxMV9MRURTIGlmIExFRFNfQ0xBU1M9eSB8fCBMRURTX0NMQVNTPU1BQzgwMjExXFxuIDE3NjpcXHRcXHRzZWxlY3QgQVRIOUtfSFdcXG4gMTc3OlxcdFxcdHNlbGVjdCBBVEg5S19DT01NT05cXG4gMTc4OlxcdFxcdGhlbHBcXG4gMTc5OlxcdFxcdCAgU3VwcG9ydCBmb3IgQXRoZXJvcyBIVEMgYmFzZWQgY2FyZHMuXFxuIDE4MDpcXHRcXHQgIENoaXBzZXRzIHN1cHBvcnRlZDogQVI5MjcxXFxuIDE4MTpcXHRcXG4gMTgyOlxcdFxcdCAgRm9yIG1vcmUgaW5mb3JtYXRpb246XFxuIDE4MzpcXHRcXHQgIGh0dHBzOi8vd2lyZWxlc3Mud2lraS5rZXJuZWwub3JnL2VuL3VzZXJzL0RyaXZlcnMvYXRoOWtfaHRjXFxuIDE4NDpcXHRcXG4gMTg1OlxcdFxcdCAgVGhlIGJ1aWx0IG1vZHVsZSB3aWxsIGJlIGF0aDlrX2h0Yy5cXG4gMTg2OlxcdFxcbiAxODc6XFx0Y29uZmlnIEFUSDlLX0hUQ19ERUJVR0ZTXFxuIDE4ODpcXHRcXHRib29sIFxcXCJBdGhlcm9zIGF0aDlrX2h0YyBkZWJ1Z2dpbmdcXFwiXFxuIDE4OTpcXHRcXHRkZXBlbmRzIG9uIEFUSDlLX0hUQyBcXHUwMDI2XFx1MDAyNiBERUJVR19GU1xcbiAxOTA6XFx0XFx0c2VsZWN0IEFUSDlLX0NPTU1PTl9ERUJVR1xcbiAxOTE6XFx0XFx0aGVscFxcbiAxOTI6XFx0XFx0ICBTYXkgWSwgaWYgeW91IG5lZWQgYWNjZXNzIHRvIGF0aDlrX2h0YydzIHN0YXRpc3RpY3MuXFxuIDE5MzpcXHRcXHQgIEFzIHdlbGwgYXMgYWNjZXNzIHRvIHRoZSBGRlQvc3BlY3RyYWwgZGF0YS5cXG4gMTk0OlxcdFxcbiAxOTU6XFx0Y29uZmlnIEFUSDlLX0hXUk5HXFxuIDE5NjpcXHRcXHRib29sIFxcXCJSYW5kb20gbnVtYmVyIGdlbmVyYXRvciBzdXBwb3J0XFxcIlxcbiAxOTc6XFx0XFx0ZGVwZW5kcyBvbiBBVEg5SyBcXHUwMDI2XFx1MDAyNiAoSFdfUkFORE9NID0geSB8fCBIV19SQU5ET00gPSBBVEg5SylcXG4gMTk4OlxcdFxcdGRlZmF1bHQgblxcbiAxOTk6XFx0XFx0aGVscFxcbiAyMDA6XFx0XFx0ICBUaGlzIG9wdGlvbiBpbmNvcnBvcmF0ZXMgdGhlIEFEQyByZWdpc3RlciBvdXRwdXQgYXMgYSBzb3VyY2Ugb2ZcXG4gMjAxOlxcdFxcdCAgcmFuZG9tbmVzcyBpbnRvIExpbnV4IGVudHJvcHkgcG9vbCAoL2Rldi91cmFuZG9tIGFuZCAvZGV2L3JhbmRvbSlcXG4gMjAyOlxcdFxcbiAyMDM6XFx0XFx0ICBTYXkgWSwgZmVlZHMgdGhlIGVudHJvcHkgZGlyZWN0bHkgZnJvbSB0aGUgV2lGaSBkcml2ZXIgdG8gdGhlIGlucHV0XFxuIDIwNDpcXHRcXHQgIHBvb2wuXFxuIDIwNTpcXHRcXG4gMjA2OlxcdGNvbmZpZyBBVEg5S19DT01NT05fU1BFQ1RSQUxcXG4gMjA3OlxcdFxcdGJvb2wgXFxcIkF0aGVyb3MgYXRoOWsvYXRoOWtfaHRjIHNwZWN0cmFsIHNjYW4gc3VwcG9ydFxcXCJcXG4gMjA4OlxcdFxcdGRlcGVuZHMgb24gQVRIOUtfREVCVUdGUyB8fCBBVEg5S19IVENfREVCVUdGU1xcbiAyMDk6XFx0XFx0c2VsZWN0IFJFTEFZXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDEyOjQ3OjQ4LjE4MzA1NzMyM1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI3NDg1ODUxNTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29ubmVjdGlvbiBiZXR3ZWVuIHRoZXNlIHR3byBmdW5jdGlvbnMgYW5kIGhvdyB0aGV5J3JlIGJlaW5nIHV0aWxpemVkIGluIHRoZSBjb2RlLiBJJ2xsIHN0YXJ0IGJ5IGV4YW1pbmluZyBgaGlmX3VzYi5jYCBhbmQgYGh0Y19kcnZfaW5pdC5jYC4gTXkgcHJpbWFyeSBmb2N1cyBpcyBvbiBob3cgYGhpZl91c2Jfc2VuZF9yZWdvdXRgIGFuZCBgYXRoOWtfcmVnX3Jtd19idWZmZXJgIGFyZSB1c2VkLiBJIHdhbnQgdG8gdHJhY2UgdGhlIGNhbGwgcGF0aHMgdG8gdGhlc2UgZnVuY3Rpb25zIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHRzIGluIHdoaWNoIHRoZXkgb3BlcmF0ZSBhbmQgaG93IHRoZSBzeXN0ZW0gZXZlbnR1YWxseSByZWFjaGVzIHRoZWlyIGV4ZWN1dGlvbi4gVW5kZXJzdGFuZGluZyB0aGVzZSBpbnRlcmNvbm5lY3Rpb25zIHdpbGwgbGlrZWx5IGdpdmUgbWUgaW5zaWdodHMgaW50byBob3cgdGhlIHJlZ2lzdGVyIG91dHB1dCBpcyBiZWluZyBoYW5kbGVkIGFuZCBob3cgaXQgcmVsYXRlcyB0byB0aGUgYnJvYWRlciBzeXN0ZW0gaW5pdGlhbGl6YXRpb24gd2l0aGluIHRoZSBIVEMgZHJpdmVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzc4OCwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMTI6NDc6NTAuOTMxNjQ2MzE0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE4MDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmNcIixcbiAgXCJGaXJzdExpbmVcIjogOTUsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgOTU6XFx0XFx0a2ZyZWVfc2tiKGNtZC1cXHUwMDNlc2tiKTtcXG4gIDk2OlxcdFxcdGtmcmVlKGNtZCk7XFxuICA5NzpcXHR9XFxuICA5ODpcXHRcXG4gIDk5OlxcdHN0YXRpYyBpbnQgaGlmX3VzYl9zZW5kX3JlZ291dChzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYsXFxuIDEwMDpcXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4gMTAxOlxcdHtcXG4gMTAyOlxcdFxcdHUxNiBtYXhwYWNrZXQgPSB1c2JfbWF4cGFja2V0KGhpZl9kZXYtXFx1MDAzZXVkZXYsXFxuIDEwMzpcXHRcXHRcXHRcXHRcXHQgICAgICB1c2Jfc25kaW50cGlwZShoaWZfZGV2LVxcdTAwM2V1ZGV2LFxcbiAxMDQ6XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgICBVU0JfUkVHX09VVF9QSVBFKSk7XFxuIDEwNTpcXHRcXHRzdHJ1Y3QgdXJiICp1cmI7XFxuIDEwNjpcXHRcXHRzdHJ1Y3QgY21kX2J1ZiAqY21kO1xcbiAxMDc6XFx0XFx0aW50IHJldCA9IDA7XFxuIDEwODpcXHRcXG4gMTA5OlxcdFxcdGlmIChXQVJOX09OQ0UobWF4cGFja2V0IFxcdTAwMjZcXHUwMDI2IHNrYi1cXHUwMDNlbGVuICUgbWF4cGFja2V0ID09IDAsXFxuIDExMDpcXHRcXHRcXHQgICAgICBcXFwiJXUtYnl0ZSBjb21tYW5kIGZpbGxzIHdob2xlIFVTQiBwYWNrZXRzXFxcXG5cXFwiLCBza2ItXFx1MDAzZWxlbikpXFxuIDExMTpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gMTEyOlxcdFxcbiAxMTM6XFx0XFx0dXJiID0gdXNiX2FsbG9jX3VyYigwLCBHRlBfS0VSTkVMKTtcXG4gMTE0OlxcdFxcdGlmICh1cmIgPT0gTlVMTClcXG4gMTE1OlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiAxMTY6XFx0XFxuIDExNzpcXHRcXHRjbWQgPSBremFsbG9jX29iaigqY21kKTtcXG4gMTE4OlxcdFxcdGlmIChjbWQgPT0gTlVMTCkge1xcbiAxMTk6XFx0XFx0XFx0dXNiX2ZyZWVfdXJiKHVyYik7XFxuIDEyMDpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gMTIxOlxcdFxcdH1cXG4gMTIyOlxcdFxcbiAxMjM6XFx0XFx0Y21kLVxcdTAwM2Vza2IgPSBza2I7XFxuIDEyNDpcXHRcXHRjbWQtXFx1MDAzZWhpZl9kZXYgPSBoaWZfZGV2O1xcbiAxMjU6XFx0XFxuIDEyNjpcXHRcXHR1c2JfZmlsbF9pbnRfdXJiKHVyYiwgaGlmX2Rldi1cXHUwMDNldWRldixcXG4gMTI3OlxcdFxcdFxcdFxcdCB1c2Jfc25kaW50cGlwZShoaWZfZGV2LVxcdTAwM2V1ZGV2LCBVU0JfUkVHX09VVF9QSVBFKSxcXG4gMTI4OlxcdFxcdFxcdFxcdCBza2ItXFx1MDAzZWRhdGEsIHNrYi1cXHUwMDNlbGVuLFxcbiAxMjk6XFx0XFx0XFx0XFx0IGhpZl91c2JfcmVnb3V0X2NiLCBjbWQsIDEpO1xcbiAxMzA6XFx0XFxuIDEzMTpcXHRcXHR1c2JfYW5jaG9yX3VyYih1cmIsIFxcdTAwMjZoaWZfZGV2LVxcdTAwM2VyZWdvdXRfc3VibWl0dGVkKTtcXG4gMTMyOlxcdFxcdHJldCA9IHVzYl9zdWJtaXRfdXJiKHVyYiwgR0ZQX0tFUk5FTCk7XFxuIDEzMzpcXHRcXHRpZiAocmV0KSB7XFxuIDEzNDpcXHRcXHRcXHR1c2JfdW5hbmNob3JfdXJiKHVyYik7XFxuIDEzNTpcXHRcXHRcXHRrZnJlZShjbWQpO1xcbiAxMzY6XFx0XFx0fVxcbiAxMzc6XFx0XFx0dXNiX2ZyZWVfdXJiKHVyYik7XFxuIDEzODpcXHRcXG4gMTM5OlxcdFxcdHJldHVybiByZXQ7XFxuIDE0MDpcXHR9XFxuIDE0MTpcXHRcXG4gMTQyOlxcdHN0YXRpYyB2b2lkIGhpZl91c2JfbWdtdF9jYihzdHJ1Y3QgdXJiICp1cmIpXFxuIDE0MzpcXHR7XFxuIDE0NDpcXHRcXHRzdHJ1Y3QgY21kX2J1ZiAqY21kID0gdXJiLVxcdTAwM2Vjb250ZXh0O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQxMjo0Nzo1MC45MzE3NjY0ODRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyODY2MTc1OTc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgdGFraW5nIG9uIHRoZSBwZXJzb25hIHlvdSByZXF1ZXN0ZWQ6XG5cbioqVHJhY2luZyB0aGUgQ2FsbHMgdG8gaGlmX3VzYl9zZW5kX3JlZ291dCoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW4uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBmbG93IGhlcmUsIHNvIEknbSBnb2luZyB0byBzdGFydCBieSB0cmFjaW5nIHRoZSBjYWxscyB0byBgaGlmX3VzYl9zZW5kX3JlZ291dGAuIEknbSB0aGlua2luZyBJJ2xsIG5lZWQgdG8gdXNlIHNvbWUgdG9vbGluZywgcHJvYmFibHkgc3RhdGljIGFuYWx5c2lzIGluaXRpYWxseSwgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB0aGUgY2FsbCBncmFwaC4gSSdtIGhvcGluZyBpdCdzIHN0cmFpZ2h0Zm9yd2FyZDsgYSBjb21wbGV4IGNoYWluIG9mIGluZGlyZWN0IGZ1bmN0aW9uIGNhbGxzIGlzIHRoZSBsYXN0IHRoaW5nIEkgbmVlZCByaWdodCBub3cuIEkgc2hvdWxkIGJlIGFibGUgdG8gaWRlbnRpZnkgdGhlIGtleSBtb2R1bGVzIG9yIHN1YnN5c3RlbXMgdGhhdCBhcmUgaW5pdGlhdGluZyB0aGVzZSByZWdpc3RlciBvdXRwdXQgb3BlcmF0aW9ucy4gS25vd2luZyB0aGUgY29udGV4dCBvZiB0aG9zZSBjYWxscyB3aWxsIGJlIGNyaXRpY2FsIGZvciBmaWd1cmluZyBvdXQgdGhlIGludGVudCBiZWhpbmQgZWFjaCBvZiB0aGVtLiBUaGVuLCBiYXNlZCBvbiB0aGUgY2FsbHMgdGhlbXNlbHZlcywgSSdsbCBiZSBhYmxlIHRvIHF1aWNrbHkgc2VlIGlmIHRoZXJlJ3MgYW55IG9idmlvdXMgcmVkdW5kYW5jeSBvciB1bmV4cGVjdGVkIGJlaGF2aW9yLiBJJ2xsIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgYXJndW1lbnRzIGJlaW5nIHBhc3NlZCB0byB0aGlzIGZ1bmN0aW9uLCB0b28uIEFyZSB0aGV5IGNvbnNpc3RlbnQgYWNyb3NzIGNhbGxlcnM/IEFyZSB0aGVyZSBhbnkgcGF0dGVybnMgb3IgZGlzY3JlcGFuY2llcyB0aGF0IGp1bXAgb3V0PyBUaGlzIGlzIGEgY3J1Y2lhbCBhcmVhIHRvIGV4cGxvcmUsIHNpbmNlIHRoZSBhcmd1bWVudHMgd2lsbCByZXZlYWwgKndoYXQqIGlzIGJlaW5nIHNlbnQgb3V0LCBhbmQgbGlrZWx5ICp3aHkqLiBJJ2xsIG5lZWQgdG8gdGhpbmsgYWJvdXQgdGhlIGRhdGEgc3RydWN0dXJlcyBiZWluZyBwYXNzZWQsIHBvdGVudGlhbGx5IGNoZWNraW5nIHRoZSBkZWZpbml0aW9ucyBvZiB0aG9zZSBzdHJ1Y3RzIGFuZCBlbnVtcy4gT25jZSBJIHVuZGVyc3RhbmQgdGhlIGNhbGxlcnMgYW5kIHRoZSBwYXJhbWV0ZXJzLCBJIHNob3VsZCBiZSBpbiBhIHNvbGlkIHBvc2l0aW9uIHRvIGFuYWx5emUgdGhlIGltcGFjdCBvZiB0aGlzIGZ1bmN0aW9uLCBpdHMgcG90ZW50aWFsIGJvdHRsZW5lY2tzLCBhbmQgYW55IGFyZWFzIHJpcGUgZm9yIG9wdGltaXphdGlvbiBvciBpbXByb3ZlbWVudC4gVGhpcyBpcyBteSBzdGFydGluZyBwb2ludCwgYW5kIEkgZXhwZWN0IHRvIGFkanVzdCBteSBhcHByb2FjaCBhcyBJIGdvLCBidXQgdGhpcyBzZWVtcyBsaWtlIGEgc29saWQgcGxhbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg3ODEsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDEyOjQ3OjUzLjc5Nzk0NzE2MloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAwOTQzMjY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImhpZl91c2Jfc2VuZF9yZWdvdXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jPTcxPXN0YXRpYyB2b2lkIGhpZl91c2JfcmVnb3V0X2NiKHN0cnVjdCB1cmIgKnVyYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtOTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo5OTpzdGF0aWMgaW50IGhpZl91c2Jfc2VuZF9yZWdvdXQoc3RydWN0IGhpZl9kZXZpY2VfdXNiICpoaWZfZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMTAwLVxcdFxcdFxcdCAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYz00NzI9c3RhdGljIGludCBoaWZfdXNiX3NlbmQodm9pZCAqaGlmX2hhbmRsZSwgdTggcGlwZV9pZCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNDgxLVxcdGNhc2UgVVNCX1JFR19PVVRfUElQRTpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjQ4MjpcXHRcXHRyZXQgPSBoaWZfdXNiX3NlbmRfcmVnb3V0KGhpZl9kZXYsIHNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00ODMtXFx0XFx0YnJlYWs7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDEyOjQ3OjUzLjg5ODg5OTA1MVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMTg2NjYwNTM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IGltbWVkaWF0ZSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIERyaXZlciBJbml0aWFsaXphdGlvbioqXG5cbk9rYXksIHRpbWUgdG8gZGlnIGluLiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHdoYXQncyBoYXBwZW5pbmcgd2l0aCB0aGlzIEhUQyBkcml2ZXIuIExldCdzIHN0YXJ0IHdpdGggYGh0Y19kcnZfaW5pdC5jYCDigJMgdGhhdCdzIHVzdWFsbHkgYSBnb29kIHBsYWNlIHRvIGJlZ2luLCBlc3BlY2lhbGx5IHdpdGggaW5pdGlhbGl6YXRpb24uIFNwZWNpZmljYWxseSwgSSdtIGdvaW5nIHRvIGp1bXAgdG8gYXJvdW5kIGxpbmUgNDA1LiBUaGF0IHNlY3Rpb24gaXMgb2Z0ZW4gd2hlcmUgY3JpdGljYWwgaW5pdGlhbCBzZXR1cCBvciByZXNvdXJjZSBhbGxvY2F0aW9uIHRha2VzIHBsYWNlLiBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgdGhlIGtleSBmdW5jdGlvbiBjYWxscywgZGF0YSBzdHJ1Y3R1cmUgYXNzaWdubWVudHMsIG9yIHBlcmhhcHMgc29tZSBlYXJseSBoYXJkd2FyZSBwcm9iaW5nIHRoYXQgd2lsbCBzaGVkIGxpZ2h0IG9uIHdoYXQgdGhlIGRyaXZlciBpcyB1cCB0by4gTGV0J3Mgc2VlIHdoYXQgc2VjcmV0cyB0aGF0IHBhcnRpY3VsYXIgc2VjdGlvbiBob2xkcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk0OTksIk91dHB1dFRva2VucyI6NDgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQxMjo0Nzo1Ni4wODU1NjQ3NzlaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI0NDEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAzOTUsXG4gIFwiTGluZUNvdW50XCI6IDQ1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAzOTU6XFx0XFx0cHJpdi1cXHUwMDNld21pLVxcdTAwM2VtdWx0aV9ybXdbcHJpdi1cXHUwMDNld21pLVxcdTAwM2VtdWx0aV9ybXdfaWR4XS5yZWcgPVxcbiAzOTY6XFx0XFx0XFx0Y3B1X3RvX2JlMzIocmVnX29mZnNldCk7XFxuIDM5NzpcXHRcXHRwcml2LVxcdTAwM2V3bWktXFx1MDAzZW11bHRpX3Jtd1twcml2LVxcdTAwM2V3bWktXFx1MDAzZW11bHRpX3Jtd19pZHhdLnNldCA9XFxuIDM5ODpcXHRcXHRcXHRjcHVfdG9fYmUzMihzZXQpO1xcbiAzOTk6XFx0XFx0cHJpdi1cXHUwMDNld21pLVxcdTAwM2VtdWx0aV9ybXdbcHJpdi1cXHUwMDNld21pLVxcdTAwM2VtdWx0aV9ybXdfaWR4XS5jbHIgPVxcbiA0MDA6XFx0XFx0XFx0Y3B1X3RvX2JlMzIoY2xyKTtcXG4gNDAxOlxcdFxcbiA0MDI6XFx0XFx0cHJpdi1cXHUwMDNld21pLVxcdTAwM2VtdWx0aV9ybXdfaWR4Kys7XFxuIDQwMzpcXHRcXG4gNDA0OlxcdFxcdC8qIElmIHRoZSBidWZmZXIgaXMgZnVsbCwgc2VuZCBpdCBvdXQuICovXFxuIDQwNTpcXHRcXHRpZiAocHJpdi1cXHUwMDNld21pLVxcdTAwM2VtdWx0aV9ybXdfaWR4ID09IE1BWF9STVdfQ01EX05VTUJFUikge1xcbiA0MDY6XFx0XFx0XFx0ciA9IGF0aDlrX3dtaV9jbWQocHJpdi1cXHUwMDNld21pLCBXTUlfUkVHX1JNV19DTURJRCxcXG4gNDA3OlxcdFxcdFxcdFxcdCAgKHU4ICopIFxcdTAwMjZwcml2LVxcdTAwM2V3bWktXFx1MDAzZW11bHRpX3JtdyxcXG4gNDA4OlxcdFxcdFxcdFxcdCAgc2l6ZW9mKHN0cnVjdCByZWdpc3Rlcl9ybXcpICogcHJpdi1cXHUwMDNld21pLVxcdTAwM2VtdWx0aV9ybXdfaWR4LFxcbiA0MDk6XFx0XFx0XFx0XFx0ICAodTggKikgXFx1MDAyNnJzcF9zdGF0dXMsIHNpemVvZihyc3Bfc3RhdHVzKSxcXG4gNDEwOlxcdFxcdFxcdFxcdCAgMTAwKTtcXG4gNDExOlxcdFxcdFxcdGlmICh1bmxpa2VseShyKSkge1xcbiA0MTI6XFx0XFx0XFx0XFx0YXRoX2RiZyhjb21tb24sIFdNSSxcXG4gNDEzOlxcdFxcdFxcdFxcdFxcdFxcXCJSRUdJU1RFUiBSTVcgRkFJTEVELCBtdWx0aSBsZW46ICVkXFxcXG5cXFwiLFxcbiA0MTQ6XFx0XFx0XFx0XFx0XFx0cHJpdi1cXHUwMDNld21pLVxcdTAwM2VtdWx0aV9ybXdfaWR4KTtcXG4gNDE1OlxcdFxcdFxcdH1cXG4gNDE2OlxcdFxcdFxcdHByaXYtXFx1MDAzZXdtaS1cXHUwMDNlbXVsdGlfcm13X2lkeCA9IDA7XFxuIDQxNzpcXHRcXHR9XFxuIDQxODpcXHRcXG4gNDE5OlxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2cHJpdi1cXHUwMDNld21pLVxcdTAwM2VtdWx0aV9ybXdfbXV0ZXgpO1xcbiA0MjA6XFx0fVxcbiA0MjE6XFx0XFxuIDQyMjpcXHRzdGF0aWMgdm9pZCBhdGg5a19yZWdfcm13X2ZsdXNoKHZvaWQgKmh3X3ByaXYpXFxuIDQyMzpcXHR7XFxuIDQyNDpcXHRcXHRzdHJ1Y3QgYXRoX2h3ICphaCA9IGh3X3ByaXY7XFxuIDQyNTpcXHRcXHRzdHJ1Y3QgYXRoX2NvbW1vbiAqY29tbW9uID0gYXRoOWtfaHdfY29tbW9uKGFoKTtcXG4gNDI2OlxcdFxcdHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdiA9IGNvbW1vbi1cXHUwMDNlcHJpdjtcXG4gNDI3OlxcdFxcdHUzMiByc3Bfc3RhdHVzO1xcbiA0Mjg6XFx0XFx0aW50IHI7XFxuIDQyOTpcXHRcXG4gNDMwOlxcdFxcdGlmICh0ZXN0X2JpdChIVENfRldGTEFHX05PX1JNVywgXFx1MDAyNnByaXYtXFx1MDAzZWZ3X2ZsYWdzKSlcXG4gNDMxOlxcdFxcdFxcdHJldHVybjtcXG4gNDMyOlxcdFxcbiA0MzM6XFx0XFx0YXRvbWljX2RlYyhcXHUwMDI2cHJpdi1cXHUwMDNld21pLVxcdTAwM2VtX3Jtd19jbnQpO1xcbiA0MzQ6XFx0XFxuIDQzNTpcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2V3bWktXFx1MDAzZW11bHRpX3Jtd19tdXRleCk7XFxuIDQzNjpcXHRcXG4gNDM3OlxcdFxcdGlmIChwcml2LVxcdTAwM2V3bWktXFx1MDAzZW11bHRpX3Jtd19pZHgpIHtcXG4gNDM4OlxcdFxcdFxcdHIgPSBhdGg5a193bWlfY21kKHByaXYtXFx1MDAzZXdtaSwgV01JX1JFR19STVdfQ01ESUQsXFxuIDQzOTpcXHRcXHRcXHRcXHQgICh1OCAqKSBcXHUwMDI2cHJpdi1cXHUwMDNld21pLVxcdTAwM2VtdWx0aV9ybXcsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDEyOjQ3OjU2LjA4NTY5MTgzOVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2OTI1NzMzMzE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBhdGg5a19odGMgUGF0Y2ggZm9yIEZ1enppbmcqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJJ20gc2VlaW5nIGEgcG90ZW50aWFsIGJ1ZmZlciBvdmVyZmxvdyB2dWxuZXJhYmlsaXR5IGZpeGVkIGluIGBhdGg5a19yZWdfcm13X2J1ZmZlcmAuIFRoZSBvcmlnaW5hbCBjb2RlIHdhcyBjYWxjdWxhdGluZyB0aGUgYnVmZmVyIHNpemUgaW5jb3JyZWN0bHksIHVzaW5nIHRoZSBzaXplIG9mIGEgYHN0cnVjdCByZWdpc3Rlcl93cml0ZWAgKDggYnl0ZXMpIGluc3RlYWQgb2YgYSBgc3RydWN0IHJlZ2lzdGVyX3Jtd2AgKDEyIGJ5dGVzKSB3aGVuIGRlYWxpbmcgd2l0aCBtdWx0aXBsZSByZWFkLW1vZGlmeS13cml0ZSBjb21tYW5kcyAoYG11bHRpX3Jtd19pZHhgKS4gU3BlY2lmaWNhbGx5LCB3aGVuIGBtdWx0aV9ybXdfaWR4YCBoaXQgYE1BWF9STVdfQ01EX05VTUJFUmAgKHdoaWNoIHdhcyAxNSksIGl0IHNlbnQgMTIwIGJ5dGVzIGluc3RlYWQgb2YgdGhlIGV4cGVjdGVkIDE4MCBieXRlcy4gVGhhdCdzIGEgY2xlYXIgZXJyb3IuXG5cbkknbSBhbHNvIHNlZWluZyBhIGNvbW1lbnQgYWJvdXQgd2h5IDE1IGVudHJpZXMgZGlkbid0IHdvcmsuIFRoZSBjb21tZW50IG1lbnRpb25zIDE5MiBieXRlcyBhbmQgZnVsbCBVU0IgcGFja2V0cyBub3QgYmVpbmcgZGVsaXZlcmVkLiAxNSBlbnRyaWVzICogMTIgYnl0ZXMgPSAxODAsIHBsdXMgaGVhZGVyLCB0aGF0IHdvdWxkIGZpdCwgc28gdGhlIGNvbW1lbnQgbG9va3MgbGlrZSBpdCBtYXkgaGF2ZSBhbiBlcnJvci5cblxuVGhlIGZpeCBpbiBgaGlmX3VzYl9zZW5kX3JlZ291dGAgYWRkcyBhIGBXQVJOX09OQ0VgIGFzc2VydGlvbiwgd2hpY2ggaXMgZ29vZC4gVGhpcyBpcyBhIGRlZmVuc2l2ZSBtZWFzdXJlLiBJdCdzIHdhcm5pbmcgaWYgdGhlIGNvbW1hbmQgZmlsbHMgYSB3aG9sZSBVU0IgcGFja2V0LiBUaGlzIGlzIHJldHVybmluZyBgLUVJTlZBTGAuIFRoaXMgaXMgZ3JlYXQuXG5cbk5vdywgdGhlIGltcG9ydGFudCBxdWVzdGlvbjogaXMgdGhpcyBmdXp6YWJsZT8gQWJzb2x1dGVseS4gYGF0aDlrX2h0Y2AgaXMgYSBVU0Igd2lyZWxlc3MgZHJpdmVyLCBhbmQgVVNCIGRldmljZXMgYXJlIGVhc2lseSBhdHRhY2hlZCBpbiBRRU1VL3ZpcnR1YWxpemVkIGVudmlyb25tZW50cyB1c2luZyBVU0IgUmF3IEdhZGdldCBvciBzeXprYWxsZXIncyBVU0IgZW11bGF0aW9uLiBUaGlzIGlzIGRlZmluaXRlbHkgcmVhY2hhYmxlLiBTZWN0aW9uIDEgYW5kIDMgb2YgdGhlIGZ1enppbmcgZ3VpZGFuY2UgY29uZmlybXMgdGhpcy4gTW9kaWZpZWQgYXNzZXJ0aW9ucyBhcmUgZXhhY3RseSB3aGF0IHdlIHdhbnQgdG8gdGFyZ2V0LiBJdCdzIGEgcHJpbWUgdGFyZ2V0IGZvciBmdXp6aW5nLlxuXG5NeSBuZXh0IHN0ZXAgaXMgaWRlbnRpZnlpbmcgdGhlIHJlbGV2YW50IGZ1bmN0aW9ucyBmb3IgZm9jdXM6XG4tICAgYGhpZl91c2Jfc2VuZF9yZWdvdXRgIOKAkyB0aGUgbmV3bHkgYXNzZXJ0ZWQgZnVuY3Rpb24uXG4tICAgYGF0aDlrX3JlZ19ybXdfYnVmZmVyYCDigJMgdGhlIGJ1ZmZlciBzaXplIGNhbGN1bGF0aW9uIGZpeGVkLlxuLSAgIGBhdGg5a19yZWdfcm13X2ZsdXNoYCDigJMgYSBmdW5jdGlvbiBjYWxsaW5nIGBhdGg5a193bWlfY21kYCB3aXRoIGBtdWx0aV9ybXdgLlxuLSAgIGBoaWZfdXNiX3NlbmRgIOKAkyBhbiBlbnRyeXBvaW50IGluIGhpZlxcX3VzYlxuLSAgIGBhdGg5a193bWlfY21kYCDigJMgYXMgaXQgaXMgdXNlZCB3aXRoIGBtdWx0aV9ybXdgXG5cbkkgbmVlZCB0byBjb25maXJtIHRoZXNlIGZ1bmN0aW9uIG5hbWVzIGFuZCB0aGVpciBkZWZpbml0aW9ucyB3aXRoaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9gLiBJIGNhbiB0aGVuIGJ1aWxkIHRlc3QgY2FzZXMgdG8gZXhlcmNpc2UgdGhlIHJlbGV2YW50IGNvZGUgcGF0aHMgYW5kIHRyaWdnZXIgdGhhdCBgV0FSTl9PTkNFYCBhc3NlcnRpb24uIFRoaXMgbG9va3MgbGlrZSBhIHNvbGlkIGZ1enppbmcgdGFyZ2V0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDU1MCwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgxMCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDEyOjQ4OjAzLjAxMTQyOTQyOFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODU1Njc2NjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXRoOWtfcmVnX3Jtd1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYz0zNjc9c3RhdGljIHZvaWQgYXRoOWtfcmVnd3JpdGVfZmx1c2godm9pZCAqaHdfcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy0zODItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jOjM4MzpzdGF0aWMgdm9pZCBhdGg5a19yZWdfcm13X2J1ZmZlcih2b2lkICpod19wcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy0zODQtXFx0XFx0XFx0XFx0IHUzMiByZWdfb2Zmc2V0LCB1MzIgc2V0LCB1MzIgY2xyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jLTQyMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM6NDIyOnN0YXRpYyB2b2lkIGF0aDlrX3JlZ19ybXdfZmx1c2godm9pZCAqaHdfcHJpdilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmMtNDIzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYz00NTQ9c3RhdGljIHZvaWQgYXRoOWtfZW5hYmxlX3Jtd19idWZmZXIodm9pZCAqaHdfcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy00NjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jOjQ2NjpzdGF0aWMgdm9pZCBhdGg5a19yZWdfcm13X3NpbmdsZSh2b2lkICpod19wcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy00NjctXFx0XFx0XFx0XFx0IHUzMiByZWdfb2Zmc2V0LCB1MzIgc2V0LCB1MzIgY2xyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jLTQ4OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM6NDg5OnN0YXRpYyB1MzIgYXRoOWtfcmVnX3Jtdyh2b2lkICpod19wcml2LCB1MzIgcmVnX29mZnNldCwgdTMyIHNldCwgdTMyIGNscilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmMtNDkwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy01MDYtXFx0aWYgKGF0b21pY19yZWFkKFxcdTAwMjZwcml2LVxcdTAwM2V3bWktXFx1MDAzZW1fcm13X2NudCkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jOjUwNzpcXHRcXHRhdGg5a19yZWdfcm13X2J1ZmZlcihod19wcml2LCByZWdfb2Zmc2V0LCBzZXQsIGNscik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jLTUwOC1cXHRlbHNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jOjUwOTpcXHRcXHRhdGg5a19yZWdfcm13X3NpbmdsZShod19wcml2LCByZWdfb2Zmc2V0LCBzZXQsIGNscik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jLTUxMC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYz02MDY9c3RhdGljIGludCBhdGg5a19pbml0X3ByaXYoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jLTYyOC1cXHRhaC1cXHUwMDNlcmVnX29wcy5lbmFibGVfcm13X2J1ZmZlciA9IGF0aDlrX2VuYWJsZV9ybXdfYnVmZmVyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYzo2Mjk6XFx0YWgtXFx1MDAzZXJlZ19vcHMucm13X2ZsdXNoID0gYXRoOWtfcmVnX3Jtd19mbHVzaDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM6NjMwOlxcdGFoLVxcdTAwM2VyZWdfb3BzLnJtdyA9IGF0aDlrX3JlZ19ybXc7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jLTYzMS1cXHRwcml2LVxcdTAwM2VhaCA9IGFoO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYz0yMDQ9c3RhdGljIHZvaWQgYXRoOWtfbXVsdGlfaW9yZWFkMzIodm9pZCAqaHdfcHJpdiwgdTMyICphZGRyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYy0yMTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYzoyMTQ6c3RhdGljIHVuc2lnbmVkIGludCBfX2F0aDlrX3JlZ19ybXcoc3RydWN0IGF0aF9zb2Z0YyAqc2MsIHUzMiByZWdfb2Zmc2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmMtMjE1LVxcdFxcdFxcdFxcdCAgICB1MzIgc2V0LCB1MzIgY2xyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYy0yMjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYzoyMjc6c3RhdGljIHVuc2lnbmVkIGludCBhdGg5a19yZWdfcm13KHZvaWQgKmh3X3ByaXYsIHUzMiByZWdfb2Zmc2V0LCB1MzIgc2V0LCB1MzIgY2xyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmMtMjI4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmMtMjM2LVxcdFxcdHNwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZzYy1cXHUwMDNlc2Nfc2VyaWFsX3J3LCBmbGFncyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYzoyMzc6XFx0XFx0dmFsID0gX19hdGg5a19yZWdfcm13KHNjLCByZWdfb2Zmc2V0LCBzZXQsIGNscik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYy0yMzgtXFx0XFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2c2MtXFx1MDAzZXNjX3NlcmlhbF9ydywgZmxhZ3MpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmMtMjM5LVxcdH0gZWxzZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmM6MjQwOlxcdFxcdHZhbCA9IF9fYXRoOWtfcmVnX3JtdyhzYywgcmVnX29mZnNldCwgc2V0LCBjbHIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmMtMjQxLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYz02NTY9c3RhdGljIGludCBhdGg5a19pbml0X3NvZnRjKHUxNiBkZXZpZCwgc3RydWN0IGF0aF9zb2Z0YyAqc2MsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jLTY3Ni1cXHRhaC1cXHUwMDNlcmVnX29wcy53cml0ZSA9IGF0aDlrX2lvd3JpdGUzMjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jOjY3NzpcXHRhaC1cXHUwMDNlcmVnX29wcy5ybXcgPSBhdGg5a19yZWdfcm13O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmMtNjc4LVxcdHBDYXAgPSBcXHUwMDI2YWgtXFx1MDAzZWNhcHM7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDEyOjQ4OjAzLjA5NzAwMzQwN1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0OTgyNjg5NjQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV4YW1pbmluZyB0aGUgQXRoZXJvcyBXaXJlbGVzcyBEcml2ZXIgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGUgY29uZmlndXJhdGlvbiBmb3IgdGhpcyBBdGhlcm9zIHdpcmVsZXNzIGRyaXZlci4gRmlyc3QsIEkgbmVlZCB0byB2ZXJpZnkgd2hhdCBzZXR0aW5ncyBhcmUgYXZhaWxhYmxlLCBzdGFydGluZyB3aXRoIHRoZSBgRW5hYmxlQ29uZmlnc2AuIFNwZWNpZmljYWxseSwgSSdtIGNoZWNraW5nIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWdgIGZpbGUuIEkgc2VlIHRoYXQgYEFUSDlLX0hUQ2AgaXMgZGVwZW5kZW50IG9uIGJvdGggYFVTQmAgYW5kIGBNQUM4MDIxMWAsIHdoaWNoIG1ha2VzIHBlcmZlY3Qgc2Vuc2UgZ2l2ZW4gdGhlIGhhcmR3YXJlIGFyY2hpdGVjdHVyZS5cblxuTm93LCBJIG5lZWQgdG8gbWFrZSBzdXJlIEknbSBub3Qgb3Zlcmxvb2tpbmcgYW55IG90aGVyIGNydWNpYWwgZGVwZW5kZW5jaWVzIG9yIGNvbmZpZ3VyYXRpb25zLiBJJ2xsIG5lZWQgdG8gZXhwYW5kIHRoZSBzZWFyY2ggYW5kIHJldmlldyBvdGhlciBwb3RlbnRpYWwgY29uZmlndXJhdGlvbnMuIExldCdzIG1vdmUgb24gYW5kIGV4YW1pbmUgdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvS2NvbmZpZ2AgZmlsZSBhbmQgZXhwbG9yZSB0aGUgY29udGVudHMgdG8gZW5zdXJlIEkgaWRlbnRpZnkgYW55IG90aGVyIG5lZWRlZCBzZXR0aW5ncy4gVGhpcyB3aWxsIGdpdmUgbWUgYSBjb21wcmVoZW5zaXZlIHBpY3R1cmUgb2Ygd2hhdCdzIHJlcXVpcmVkIGZvciB0aGlzIGRyaXZlciB0byBmdW5jdGlvbiBjb3JyZWN0bHkgd2l0aGluIHRoZSB3aWRlciBzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzNTk4LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMTI6NDg6MDguMDc5Njk4NTY1WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDAyODY2ODgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQVRIOUtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDUwNzYgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9NYWtlZmlsZT0yPW9iai0kKENPTkZJR19BVEg1SylcXHRcXHQrPSBhdGg1ay9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvTWFrZWZpbGU6MzpvYmotJChDT05GSUdfQVRIOUtfSFcpXFx0XFx0Kz0gYXRoOWsvXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL01ha2VmaWxlLTQtb2JqLSQoQ09ORklHX0NBUkw5MTcwKVxcdFxcdCs9IGNhcmw5MTcwL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBJU0NcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoyOmNvbmZpZyBBVEg5S19IV1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTMtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo0OmNvbmZpZyBBVEg5S19DT01NT05cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy01LVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNi1cXHRzZWxlY3QgQVRIX0NPTU1PTlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjc6Y29uZmlnIEFUSDlLX0NPTU1PTl9ERUJVR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTgtXFx0Ym9vbFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjk6Y29uZmlnIEFUSDlLX0RGU19ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTAtXFx0ZGVmX2Jvb2wgeVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjExOlxcdGRlcGVuZHMgb24gQVRIOUtfREVCVUdGUyBcXHUwMDI2XFx1MDAyNiBBVEg5S19ERlNfQ0VSVElGSUVEXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTM6Y29uZmlnIEFUSDlLX0JUQ09FWF9TVVBQT1JUXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTQtXFx0Ym9vbCBcXFwiQXRoZXJvcyBibHVldG9vdGggY29leGlzdGVuY2Ugc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxNTpcXHRkZXBlbmRzIG9uIChBVEg5SyB8fCBBVEg5S19IVEMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTYtXFx0ZGVmYXVsdCB5XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0yMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoyMTpjb25maWcgQVRIOUtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0yMi1cXHR0cmlzdGF0ZSBcXFwiQXRoZXJvcyA4MDIuMTFuIHdpcmVsZXNzIGNhcmRzIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0yNC1cXHRzZWxlY3QgTUFDODAyMTFfTEVEUyBpZiBMRURTX0NMQVNTPXkgfHwgTEVEU19DTEFTUz1NQUM4MDIxMVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjI1OlxcdHNlbGVjdCBBVEg5S19IV1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjI2OlxcdHNlbGVjdCBBVEg5S19DT01NT05cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0yNy1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0zOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzozOTpjb25maWcgQVRIOUtfUENJXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNDAtXFx0Ym9vbCBcXFwiQXRoZXJvcyBhdGg5ayBQQ0kvUENJZSBidXMgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy00MS1cXHRkZWZhdWx0IHlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo0MjpcXHRkZXBlbmRzIG9uIEFUSDlLIFxcdTAwMjZcXHUwMDI2IFBDSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTQzLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTQ3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjQ4OmNvbmZpZyBBVEg5S19BSEJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy00OS1cXHRib29sIFxcXCJBdGhlcm9zIGF0aDlrIEFIQiBidXMgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo1MDpcXHRkZXBlbmRzIG9uIEFUSDlLIFxcdTAwMjZcXHUwMDI2IE9GXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNTEtXFx0ZGVmYXVsdCBuXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy01Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo1ODpjb25maWcgQVRIOUtfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTU5LVxcdGJvb2wgXFxcIkF0aGVyb3MgYXRoOWsgZGVidWdnaW5nXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjYwOlxcdGRlcGVuZHMgb24gQVRIOUsgXFx1MDAyNlxcdTAwMjYgREVCVUdfRlMgXFx1MDAyNlxcdTAwMjYgTUFDODAyMTFfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjYxOlxcdHNlbGVjdCBBVEg5S19DT01NT05fREVCVUdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy02Mi1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy02OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo2OTpjb25maWcgQVRIOUtfU1RBVElPTl9TVEFUSVNUSUNTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNzAtXFx0Ym9vbCBcXFwiRGV0YWlsZWQgc3RhdGlvbiBzdGF0aXN0aWNzXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjcxOlxcdGRlcGVuZHMgb24gQVRIOUsgXFx1MDAyNlxcdTAwMjYgQVRIOUtfREVCVUdGUyBcXHUwMDI2XFx1MDAyNiBERUJVR19GU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTcyLVxcdGRlZmF1bHQgblxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6NzY6Y29uZmlnIEFUSDlLX1RYOTlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy03Ny1cXHRib29sIFxcXCJBdGhlcm9zIGF0aDlrIFRYOTkgdGVzdGluZyBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjc4OlxcdGRlcGVuZHMgb24gQVRIOUtfREVCVUdGUyBcXHUwMDI2XFx1MDAyNiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy03OS1cXHRkZWZhdWx0IG5cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTk1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjk2OmNvbmZpZyBBVEg5S19ERlNfQ0VSVElGSUVEXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctOTctXFx0Ym9vbCBcXFwiQXRoZXJvcyBERlMgc3VwcG9ydCBmb3IgY2VydGlmaWVkIHBsYXRmb3Jtc1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo5ODpcXHRkZXBlbmRzIG9uIEFUSDlLIFxcdTAwMjZcXHUwMDI2IENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTk5LVxcdGRlZmF1bHQgblxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTE0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjExNTpjb25maWcgQVRIOUtfRFlOQUNLXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTE2LVxcdGJvb2wgXFxcIkF0aGVyb3MgYXRoOWsgQUNLIHRpbWVvdXQgZXN0aW1hdGlvbiBhbGdvcml0aG1cXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTE3OlxcdGRlcGVuZHMgb24gQVRIOUtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xMTgtXFx0ZGVmYXVsdCBuXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xMjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTI0OmNvbmZpZyBBVEg5S19XT1dcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xMjUtXFx0Ym9vbCBcXFwiV2FrZSBvbiBXaXJlbGVzcyBMQU4gc3VwcG9ydCAoRVhQRVJJTUVOVEFMKVxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxMjY6XFx0ZGVwZW5kcyBvbiBBVEg5SyBcXHUwMDI2XFx1MDAyNiBQTVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTEyNy1cXHRkZWZhdWx0IG5cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTEzMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxMzI6Y29uZmlnIEFUSDlLX1JGS0lMTFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTEzMy1cXHRib29sIFxcXCJBdGhlcm9zIGF0aDlrIHJma2lsbCBzdXBwb3J0XFxcIiBpZiBFWFBFUlRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxMzQ6XFx0ZGVwZW5kcyBvbiBBVEg5S1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjEzNTpcXHRkZXBlbmRzIG9uIFJGS0lMTD15IHx8IFJGS0lMTD1BVEg5S1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTEzNi1cXHRkZWZhdWx0IHlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE0MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxNDI6Y29uZmlnIEFUSDlLX0NIQU5ORUxfQ09OVEVYVFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE0My1cXHRib29sIFxcXCJDaGFubmVsIENvbnRleHQgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxNDQ6XFx0ZGVwZW5kcyBvbiBBVEg5S1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE0NS1cXHRkZWZhdWx0IG5cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE1MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxNTE6Y29uZmlnIEFUSDlLX1BDT0VNXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTUyLVxcdGJvb2wgXFxcIkF0aGVyb3MgYXRoOWsgc3VwcG9ydCBmb3IgUEMgT0VNIGNhcmRzXFxcIiBpZiBFWFBFUlRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxNTM6XFx0ZGVwZW5kcyBvbiBBVEg5S1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE1NC1cXHRkZWZhdWx0IHlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTU2OmNvbmZpZyBBVEg5S19QQ0lfTk9fRUVQUk9NXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTU3LVxcdHRyaXN0YXRlIFxcXCJBdGhlcm9zIGF0aDlrIHBjaSBsb2FkZXIgZm9yIEVFUFJPTS1sZXNzIGNoaXBzXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjE1ODpcXHRkZXBlbmRzIG9uIEFUSDlLX1BDSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE1OS1cXHRkZWZhdWx0IG5cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE3MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxNzI6Y29uZmlnIEFUSDlLX0hUQ1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE3My1cXHR0cmlzdGF0ZSBcXFwiQXRoZXJvcyBIVEMgYmFzZWQgd2lyZWxlc3MgY2FyZHMgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE3NS1cXHRzZWxlY3QgTUFDODAyMTFfTEVEUyBpZiBMRURTX0NMQVNTPXkgfHwgTEVEU19DTEFTUz1NQUM4MDIxMVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjE3NjpcXHRzZWxlY3QgQVRIOUtfSFdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxNzc6XFx0c2VsZWN0IEFUSDlLX0NPTU1PTlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE3OC1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xODYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTg3OmNvbmZpZyBBVEg5S19IVENfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE4OC1cXHRib29sIFxcXCJBdGhlcm9zIGF0aDlrX2h0YyBkZWJ1Z2dpbmdcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTg5OlxcdGRlcGVuZHMgb24gQVRIOUtfSFRDIFxcdTAwMjZcXHUwMDI2IERFQlVHX0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTkwOlxcdHNlbGVjdCBBVEg5S19DT01NT05fREVCVUdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xOTEtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTk0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjE5NTpjb25maWcgQVRIOUtfSFdSTkdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xOTYtXFx0Ym9vbCBcXFwiUmFuZG9tIG51bWJlciBnZW5lcmF0b3Igc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxOTc6XFx0ZGVwZW5kcyBvbiBBVEg5SyBcXHUwMDI2XFx1MDAyNiAoSFdfUkFORE9NID0geSB8fCBIV19SQU5ET00gPSBBVEg5SylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xOTgtXFx0ZGVmYXVsdCBuXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0yMDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MjA2OmNvbmZpZyBBVEg5S19DT01NT05fU1BFQ1RSQUxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0yMDctXFx0Ym9vbCBcXFwiQXRoZXJvcyBhdGg5ay9hdGg5a19odGMgc3BlY3RyYWwgc2NhbiBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjIwODpcXHRkZXBlbmRzIG9uIEFUSDlLX0RFQlVHRlMgfHwgQVRIOUtfSFRDX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0yMDktXFx0c2VsZWN0IFJFTEFZXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU9Mj1hdGg5ay15ICs9XFx0YmVhY29uLm8gXFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTExLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZToxMjphdGg5ay0kKENPTkZJR19BVEg5S19CVENPRVhfU1VQUE9SVCkgKz0gbWNpLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6MTM6YXRoOWstJChDT05GSUdfQVRIOUtfUENJKSArPSBwY2kub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZToxNDphdGg5ay0kKENPTkZJR19BVEg5S19BSEIpICs9IGFoYi5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlOjE1OmF0aDlrLSQoQ09ORklHX0FUSDlLX0RGU19ERUJVR0ZTKSArPSBkZnNfZGVidWcub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZToxNjphdGg5ay0kKENPTkZJR19BVEg5S19ERlNfQ0VSVElGSUVEKSArPSBkZnMub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZToxNzphdGg5ay0kKENPTkZJR19BVEg5S19UWDk5KSArPSB0eDk5Lm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6MTg6YXRoOWstJChDT05GSUdfQVRIOUtfV09XKSArPSB3b3cub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZToxOTphdGg5ay0kKENPTkZJR19BVEg5S19IV1JORykgKz0gcm5nLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtMjAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlOjIxOmF0aDlrLSQoQ09ORklHX0FUSDlLX0RFQlVHRlMpICs9IGRlYnVnLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtMjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlOjIzOmF0aDlrLSQoQ09ORklHX0FUSDlLX1NUQVRJT05fU1RBVElTVElDUykgKz0gZGVidWdfc3RhLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtMjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlOjI1Om9iai0kKENPTkZJR19BVEg5SykgKz0gYXRoOWsub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS0yNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU9Mjc9YXRoOWtfaHcteTo9XFx0XFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTQ3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZTo0ODphdGg5a19ody0kKENPTkZJR19BVEg5S19XT1cpICs9IGFyOTAwM193b3cub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS00OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6NTA6YXRoOWtfaHctJChDT05GSUdfQVRIOUtfQlRDT0VYX1NVUFBPUlQpICs9IGJ0Y29leC5vIFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtNTEtXFx0XFx0XFx0XFx0XFx0ICAgYXI5MDAzX21jaS5vIFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS01My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6NTQ6YXRoOWtfaHctJChDT05GSUdfQVRIOUtfUENPRU0pICs9IGFyOTAwM19ydHQub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS01NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6NTY6YXRoOWtfaHctJChDT05GSUdfQVRIOUtfRFlOQUNLKSArPSBkeW5hY2sub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS01Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6NTg6b2JqLSQoQ09ORklHX0FUSDlLX0hXKSArPSBhdGg5a19ody5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTU5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZTo2MDpvYmotJChDT05GSUdfQVRIOUtfQ09NTU9OKSArPSBhdGg5a19jb21tb24ub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS02MS1hdGg5a19jb21tb24teTo9XFx0Y29tbW9uLm8gXFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTY0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZTo2NTphdGg5a19jb21tb24tJChDT05GSUdfQVRIOUtfQ09NTU9OX0RFQlVHKSArPSBjb21tb24tZGVidWcub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZTo2NjphdGg5a19jb21tb24tJChDT05GSUdfQVRIOUtfQ09NTU9OX1NQRUNUUkFMKSArPSBjb21tb24tc3BlY3RyYWwub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS02Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU9Njg9YXRoOWtfaHRjLXkgKz1cXHRodGNfaHN0Lm8gXFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTc2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZTo3NzphdGg5a19odGMtJChDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlMpICs9IGh0Y19kcnZfZGVidWcub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS03OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6Nzk6b2JqLSQoQ09ORklHX0FUSDlLX0hUQykgKz0gYXRoOWtfaHRjLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtODAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlOjgxOm9iai0kKENPTkZJR19BVEg5S19QQ0lfTk9fRUVQUk9NKSArPSBhdGg5a19wY2lfb3dsX2xvYWRlci5vXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM9Mzk9c3RhdGljIGNvbnN0IHN0cnVjdCBhbmlfb2ZkbV9sZXZlbF9lbnRyeSBvZmRtX2xldmVsX3RhYmxlW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtNTEtfTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6NTI6I2RlZmluZSBBVEg5S19BTklfT0ZETV9OVU1fTEVWRUwgXFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy01My1cXHRBUlJBWV9TSVpFKG9mZG1fbGV2ZWxfdGFibGUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjU0OiNkZWZpbmUgQVRIOUtfQU5JX09GRE1fTUFYX0xFVkVMIFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6NTU6XFx0KEFUSDlLX0FOSV9PRkRNX05VTV9MRVZFTC0xKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzo1NjojZGVmaW5lIEFUSDlLX0FOSV9PRkRNX0RFRl9MRVZFTCBcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTU3LVxcdDMgLyogZGVmYXVsdCBsZXZlbCAtIG1hdGNoZXMgdGhlIElOSSBzZXR0aW5ncyAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jPTg1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYW5pX2Nja19sZXZlbF9lbnRyeSBjY2tfbGV2ZWxfdGFibGVbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy05Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6OTg6I2RlZmluZSBBVEg5S19BTklfQ0NLX05VTV9MRVZFTCBcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTk5LVxcdEFSUkFZX1NJWkUoY2NrX2xldmVsX3RhYmxlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoxMDA6I2RlZmluZSBBVEg5S19BTklfQ0NLX01BWF9MRVZFTCBcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjEwMTpcXHQoQVRIOUtfQU5JX0NDS19OVU1fTEVWRUwtMSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MTAyOiNkZWZpbmUgQVRIOUtfQU5JX0NDS19NQVhfTEVWRUxfTE9XX1JTU0kgXFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoxMDM6XFx0KEFUSDlLX0FOSV9DQ0tfTlVNX0xFVkVMLTMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjEwNDojZGVmaW5lIEFUSDlLX0FOSV9DQ0tfREVGX0xFVkVMIFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMTA1LVxcdDIgLyogZGVmYXVsdCBsZXZlbCAtIG1hdGNoZXMgdGhlIElOSSBzZXR0aW5ncyAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jPTE0OT1zdGF0aWMgdm9pZCBhdGg5a19od19zZXRfb2ZkbV9uaWwoc3RydWN0IGF0aF9odyAqYWgsIHU4IGltbXVuaXR5TGV2ZWwsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMTYwLVxcdFxcdGltbXVuaXR5TGV2ZWwsIEJFQUNPTl9SU1NJKGFoKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MTYxOlxcdFxcdEFUSDlLX0FOSV9SU1NJX1RIUl9MT1csXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjE2MjpcXHRcXHRBVEg5S19BTklfUlNTSV9USFJfSElHSCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTE2My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MTY0OlxcdGlmIChBUl9TUkVWXzkxMDAoYWgpIFxcdTAwMjZcXHUwMDI2IGltbXVuaXR5TGV2ZWwgXFx1MDAzYyBBVEg5S19BTklfT0ZETV9ERUZfTEVWRUwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjE2NTpcXHRcXHRpbW11bml0eUxldmVsID0gQVRIOUtfQU5JX09GRE1fREVGX0xFVkVMO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0xNjYtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMTc0LVxcdFxcdGF0aDlrX2h3X2FuaV9jb250cm9sKGFoLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoxNzU6XFx0XFx0XFx0XFx0ICAgICBBVEg5S19BTklfU1BVUl9JTU1VTklUWV9MRVZFTCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMTc2LVxcdFxcdFxcdFxcdCAgICAgZW50cnlfb2ZkbS1cXHUwMDNlc3B1cl9pbW11bml0eV9sZXZlbCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMTgwLVxcdFxcdGF0aDlrX2h3X2FuaV9jb250cm9sKGFoLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoxODE6XFx0XFx0XFx0XFx0ICAgICBBVEg5S19BTklfRklSU1RFUF9MRVZFTCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMTgyLVxcdFxcdFxcdFxcdCAgICAgZW50cnlfb2ZkbS1cXHUwMDNlZmlyX3N0ZXBfbGV2ZWwpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTE4NS1cXHRpZiAoYWgtXFx1MDAzZW9wbW9kZSA9PSBOTDgwMjExX0lGVFlQRV9TVEFUSU9OIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjE4NjpcXHQgICAgQkVBQ09OX1JTU0koYWgpIFxcdTAwM2M9IEFUSDlLX0FOSV9SU1NJX1RIUl9ISUdIKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0xODctXFx0XFx0d2Vha19zaWcgPSB0cnVlO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTIwMi1cXHRpZiAoYW5pU3RhdGUtXFx1MDAzZW9mZG1XZWFrU2lnRGV0ZWN0ICE9IHdlYWtfc2lnKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoyMDM6XFx0XFx0YXRoOWtfaHdfYW5pX2NvbnRyb2woYWgsIEFUSDlLX0FOSV9PRkRNX1dFQUtfU0lHTkFMX0RFVEVDVElPTixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMjA0LVxcdFxcdFxcdFxcdCAgICAgd2Vha19zaWcpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTIwOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MjA5OlxcdGlmIChhbmlTdGF0ZS1cXHUwMDNlb2ZkbU5vaXNlSW1tdW5pdHlMZXZlbCBcXHUwMDNlPSBBVEg5S19BTklfT0ZETV9ERUZfTEVWRUwpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MjEwOlxcdFxcdGFoLVxcdTAwM2Vjb25maWcub2ZkbV90cmlnX2hpZ2ggPSBBVEg5S19BTklfT0ZETV9UUklHX0hJR0g7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjIxMTpcXHRcXHRhaC1cXHUwMDNlY29uZmlnLm9mZG1fdHJpZ19sb3cgPSBBVEg5S19BTklfT0ZETV9UUklHX0xPV19BQk9WRV9JTkk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTIxMi1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoyMTM6XFx0XFx0YWgtXFx1MDAzZWNvbmZpZy5vZmRtX3RyaWdfaGlnaCA9IEFUSDlLX0FOSV9PRkRNX1RSSUdfSElHSF9CRUxPV19JTkk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjIxNDpcXHRcXHRhaC1cXHUwMDNlY29uZmlnLm9mZG1fdHJpZ19sb3cgPSBBVEg5S19BTklfT0ZETV9UUklHX0xPVztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMjE1LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYz0yMTg9c3RhdGljIHZvaWQgYXRoOWtfaHdfYW5pX29mZG1fZXJyX3RyaWdnZXIoc3RydWN0IGF0aF9odyAqYWgpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMjIxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoyMjI6XFx0aWYgKGFuaVN0YXRlLVxcdTAwM2VvZmRtTm9pc2VJbW11bml0eUxldmVsIFxcdTAwM2MgQVRIOUtfQU5JX09GRE1fTUFYX0xFVkVMKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0yMjMtXFx0XFx0YXRoOWtfaHdfc2V0X29mZG1fbmlsKGFoLCBhbmlTdGF0ZS1cXHUwMDNlb2ZkbU5vaXNlSW1tdW5pdHlMZXZlbCArIDEsIGZhbHNlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYz0yMjk9c3RhdGljIHZvaWQgYXRoOWtfaHdfc2V0X2Nja19uaWwoc3RydWN0IGF0aF9odyAqYWgsIHVfaW50OF90IGltbXVuaXR5TGV2ZWwsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMjM4LVxcdFxcdGFuaVN0YXRlLVxcdTAwM2VjY2tOb2lzZUltbXVuaXR5TGV2ZWwsIGltbXVuaXR5TGV2ZWwsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjIzOTpcXHRcXHRCRUFDT05fUlNTSShhaCksIEFUSDlLX0FOSV9SU1NJX1RIUl9MT1csXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjI0MDpcXHRcXHRBVEg5S19BTklfUlNTSV9USFJfSElHSCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTI0MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MjQyOlxcdGlmIChBUl9TUkVWXzkxMDAoYWgpIFxcdTAwMjZcXHUwMDI2IGltbXVuaXR5TGV2ZWwgXFx1MDAzYyBBVEg5S19BTklfQ0NLX0RFRl9MRVZFTClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MjQzOlxcdFxcdGltbXVuaXR5TGV2ZWwgPSBBVEg5S19BTklfQ0NLX0RFRl9MRVZFTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMjQ0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0yNDUtXFx0aWYgKGFoLVxcdTAwM2VvcG1vZGUgPT0gTkw4MDIxMV9JRlRZUEVfU1RBVElPTiBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoyNDY6XFx0ICAgIEJFQUNPTl9SU1NJKGFoKSBcXHUwMDNjPSBBVEg5S19BTklfUlNTSV9USFJfTE9XIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjI0NzpcXHQgICAgaW1tdW5pdHlMZXZlbCBcXHUwMDNlIEFUSDlLX0FOSV9DQ0tfTUFYX0xFVkVMX0xPV19SU1NJKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoyNDg6XFx0XFx0aW1tdW5pdHlMZXZlbCA9IEFUSDlLX0FOSV9DQ0tfTUFYX0xFVkVMX0xPV19SU1NJO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0yNDktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMjU4LVxcdFxcdGF0aDlrX2h3X2FuaV9jb250cm9sKGFoLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoyNTk6XFx0XFx0XFx0XFx0ICAgICBBVEg5S19BTklfRklSU1RFUF9MRVZFTCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMjYwLVxcdFxcdFxcdFxcdCAgICAgZW50cnlfY2NrLVxcdTAwM2VmaXJfc3RlcF9sZXZlbCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMjY4LVxcdFxcdGF0aDlrX2h3X2FuaV9jb250cm9sKGFoLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzoyNjk6XFx0XFx0XFx0XFx0ICAgICBBVEg5S19BTklfTVJDX0NDSyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMjcwLVxcdFxcdFxcdFxcdCAgICAgZW50cnlfY2NrLVxcdTAwM2VtcmNfY2NrX29uKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYz0yNzM9c3RhdGljIHZvaWQgYXRoOWtfaHdfYW5pX2Nja19lcnJfdHJpZ2dlcihzdHJ1Y3QgYXRoX2h3ICphaClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0yNzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjI3NzpcXHRpZiAoYW5pU3RhdGUtXFx1MDAzZWNja05vaXNlSW1tdW5pdHlMZXZlbCBcXHUwMDNjIEFUSDlLX0FOSV9DQ0tfTUFYX0xFVkVMKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0yNzgtXFx0XFx0YXRoOWtfaHdfc2V0X2Nja19uaWwoYWgsIGFuaVN0YXRlLVxcdTAwM2VjY2tOb2lzZUltbXVuaXR5TGV2ZWwgKyAxLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jPTMwOT12b2lkIGF0aDlrX2FuaV9yZXNldChzdHJ1Y3QgYXRoX2h3ICphaCwgYm9vbCBpc19zY2FubmluZylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0zMjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjMyMjpcXHRvZmRtX25pbCA9IG1heF90KGludCwgQVRIOUtfQU5JX09GRE1fREVGX0xFVkVMLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0zMjMtXFx0XFx0XFx0IGFuaVN0YXRlLVxcdTAwM2VvZmRtTm9pc2VJbW11bml0eUxldmVsKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MzI0OlxcdGNja19uaWwgPSBtYXhfdChpbnQsIEFUSDlLX0FOSV9DQ0tfREVGX0xFVkVMLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYy0zMjUtXFx0XFx0XFx0IGFuaVN0YXRlLVxcdTAwM2VjY2tOb2lzZUltbXVuaXR5TGV2ZWwpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTMzNi1cXHRcXHRpZiAoYW5pU3RhdGUtXFx1MDAzZW9mZG1Ob2lzZUltbXVuaXR5TGV2ZWwgIT1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6MzM3OlxcdFxcdCAgICBBVEg5S19BTklfT0ZETV9ERUZfTEVWRUwgfHxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMzM4LVxcdFxcdCAgICBhbmlTdGF0ZS1cXHUwMDNlY2NrTm9pc2VJbW11bml0eUxldmVsICE9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjMzOTpcXHRcXHQgICAgQVRIOUtfQU5JX0NDS19ERUZfTEVWRUwpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMzQwLVxcdFxcdFxcdGF0aF9kYmcoY29tbW9uLCBBTkksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtMzQ3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzozNDg6XFx0XFx0XFx0b2ZkbV9uaWwgPSBBVEg5S19BTklfT0ZETV9ERUZfTEVWRUw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjM0OTpcXHRcXHRcXHRjY2tfbmlsID0gQVRIOUtfQU5JX0NDS19ERUZfTEVWRUw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTM1MC1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM9NDc3PXZvaWQgYXRoOWtfaHdfYW5pX2luaXQoc3RydWN0IGF0aF9odyAqYWgpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtNDg0LVxcdGlmIChBUl9TUkVWXzkzMDBfMjBfT1JfTEFURVIoYWgpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjQ4NTpcXHRcXHRhaC1cXHUwMDNlY29uZmlnLm9mZG1fdHJpZ19oaWdoID0gQVRIOUtfQU5JX09GRE1fVFJJR19ISUdIO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzo0ODY6XFx0XFx0YWgtXFx1MDAzZWNvbmZpZy5vZmRtX3RyaWdfbG93ID0gQVRIOUtfQU5JX09GRE1fVFJJR19MT1c7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjQ4NzpcXHRcXHRhaC1cXHUwMDNlY29uZmlnLmNja190cmlnX2hpZ2ggPSBBVEg5S19BTklfQ0NLX1RSSUdfSElHSDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6NDg4OlxcdFxcdGFoLVxcdTAwM2Vjb25maWcuY2NrX3RyaWdfbG93ID0gQVRIOUtfQU5JX0NDS19UUklHX0xPVztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtNDg5LVxcdH0gZWxzZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jOjQ5MDpcXHRcXHRhaC1cXHUwMDNlY29uZmlnLm9mZG1fdHJpZ19oaWdoID0gQVRIOUtfQU5JX09GRE1fVFJJR19ISUdIX09MRDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6NDkxOlxcdFxcdGFoLVxcdTAwM2Vjb25maWcub2ZkbV90cmlnX2xvdyA9IEFUSDlLX0FOSV9PRkRNX1RSSUdfTE9XX09MRDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6NDkyOlxcdFxcdGFoLVxcdTAwM2Vjb25maWcuY2NrX3RyaWdfaGlnaCA9IEFUSDlLX0FOSV9DQ0tfVFJJR19ISUdIX09MRDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6NDkzOlxcdFxcdGFoLVxcdTAwM2Vjb25maWcuY2NrX3RyaWdfbG93ID0gQVRIOUtfQU5JX0NDS19UUklHX0xPV19PTEQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTQ5NC1cXHR9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTQ5NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6NDk2OlxcdGFuaS1cXHUwMDNlc3B1ckltbXVuaXR5TGV2ZWwgPSBBVEg5S19BTklfU1BVUl9JTU1VTkVfTFZMO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzo0OTc6XFx0YW5pLVxcdTAwM2VmaXJzdGVwTGV2ZWwgPSBBVEg5S19BTklfRklSU1RFUF9MVkw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTQ5OC1cXHRhbmktXFx1MDAzZW1yY0NDSyA9IEFSX1NSRVZfOTMwMF8yMF9PUl9MQVRFUihhaCkgPyB0cnVlIDogZmFsc2U7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtNTAwLVxcdGFuaS1cXHUwMDNlb2ZkbVdlYWtTaWdEZXRlY3QgPSB0cnVlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzo1MDE6XFx0YW5pLVxcdTAwM2VjY2tOb2lzZUltbXVuaXR5TGV2ZWwgPSBBVEg5S19BTklfQ0NLX0RFRl9MRVZFTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6NTAyOlxcdGFuaS1cXHUwMDNlb2ZkbU5vaXNlSW1tdW5pdHlMZXZlbCA9IEFUSDlLX0FOSV9PRkRNX0RFRl9MRVZFTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmMtNTAzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTUwNy1cXHQgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmM6NTA4OlxcdGFoLVxcdTAwM2VhbmlwZXJpb2QgPSBBVEg5S19BTklfUEVSSU9EO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuYzo1MDk6XFx0YWgtXFx1MDAzZWNvbmZpZy5hbmlfcG9sbF9pbnRlcnZhbCA9IEFUSDlLX0FOSV9QT0xMSU5URVJWQUw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5jLTUxMC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaC0yMi0vKiB1bml0cyBhcmUgZXJyb3JzIHBlciBzZWNvbmQgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmg6MjM6I2RlZmluZSBBVEg5S19BTklfT0ZETV9UUklHX0hJR0ggICAgICAgICAgIDM1MDBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmg6MjQ6I2RlZmluZSBBVEg5S19BTklfT0ZETV9UUklHX0hJR0hfQkVMT1dfSU5JIDEwMDBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmg6MjU6I2RlZmluZSBBVEg5S19BTklfT0ZETV9UUklHX0hJR0hfT0xEICAgICAgIDUwMFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaC0yNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmg6Mjc6I2RlZmluZSBBVEg5S19BTklfT0ZETV9UUklHX0xPVyAgICAgICAgICAgNDAwXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oOjI4OiNkZWZpbmUgQVRIOUtfQU5JX09GRE1fVFJJR19MT1dfQUJPVkVfSU5JIDkwMFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaDoyOTojZGVmaW5lIEFUSDlLX0FOSV9PRkRNX1RSSUdfTE9XX09MRCAgICAgICAyMDBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmgtMzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oOjMxOiNkZWZpbmUgQVRIOUtfQU5JX0NDS19UUklHX0hJR0ggICAgICAgICAgIDYwMFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaDozMjojZGVmaW5lIEFUSDlLX0FOSV9DQ0tfVFJJR19ISUdIX09MRCAgICAgICAyMDBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmg6MzM6I2RlZmluZSBBVEg5S19BTklfQ0NLX1RSSUdfTE9XICAgICAgICAgICAgMzAwXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oOjM0OiNkZWZpbmUgQVRIOUtfQU5JX0NDS19UUklHX0xPV19PTEQgICAgICAgIDEwMFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaC0zNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmg6MzY6I2RlZmluZSBBVEg5S19BTklfU1BVUl9JTU1VTkVfTFZMICAgICAgICAgM1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaDozNzojZGVmaW5lIEFUSDlLX0FOSV9GSVJTVEVQX0xWTCAgICAgICAgICAgICAyXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oLTM4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaDozOTojZGVmaW5lIEFUSDlLX0FOSV9SU1NJX1RIUl9ISUdIICAgICAgICAgICA0MFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaDo0MDojZGVmaW5lIEFUSDlLX0FOSV9SU1NJX1RIUl9MT1cgICAgICAgICAgICA3XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oLTQxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaDo0MjojZGVmaW5lIEFUSDlLX0FOSV9QRVJJT0QgICAgICAgICAgICAgICAgICAzMDBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmgtNDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oLTQ0LS8qIGluIG1zICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oOjQ1OiNkZWZpbmUgQVRIOUtfQU5JX1BPTExJTlRFUlZBTCAgICAgICAgICAgIDEwMDBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmgtNDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oOjQ3OiNkZWZpbmUgQVRIOUtfU0lHX0ZJUlNURVBfU0VUVElOR19NSU4gICAgIDBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmg6NDg6I2RlZmluZSBBVEg5S19TSUdfRklSU1RFUF9TRVRUSU5HX01BWCAgICAgMjBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmg6NDk6I2RlZmluZSBBVEg5S19TSUdfU1BVUl9JTU1fU0VUVElOR19NSU4gICAgMFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaDo1MDojZGVmaW5lIEFUSDlLX1NJR19TUFVSX0lNTV9TRVRUSU5HX01BWCAgICAyMlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaC01MS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaD01ND1lbnVtIGF0aDlrX2FuaV9jbWQge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaDo1NTpcXHRBVEg5S19BTklfT0ZETV9XRUFLX1NJR05BTF9ERVRFQ1RJT04gPSAweDEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oOjU2OlxcdEFUSDlLX0FOSV9GSVJTVEVQX0xFVkVMID0gMHgyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaDo1NzpcXHRBVEg5S19BTklfU1BVUl9JTU1VTklUWV9MRVZFTCA9IDB4NCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYW5pLmg6NTg6XFx0QVRIOUtfQU5JX01SQ19DQ0sgPSAweDgsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FuaS5oOjU5OlxcdEFUSDlLX0FOSV9BTEwgPSAweGZmZlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hbmkuaC02MC19O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyNTAwOF9waHkuYz05NTM9c3RhdGljIGJvb2wgYXI1MDA4X2h3X2FuaV9jb250cm9sX25ldyhzdHJ1Y3QgYXRoX2h3ICphaCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmMtOTYyLVxcdHN3aXRjaCAoY21kIFxcdTAwMjYgYWgtXFx1MDAzZWFuaV9mdW5jdGlvbikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmM6OTYzOlxcdGNhc2UgQVRIOUtfQU5JX09GRE1fV0VBS19TSUdOQUxfREVURUNUSU9OOntcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jLTk2NC1cXHRcXHQvKlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyNTAwOF9waHkuYy0xMDQzLVxcdH1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jOjEwNDQ6XFx0Y2FzZSBBVEg5S19BTklfRklSU1RFUF9MRVZFTDp7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyNTAwOF9waHkuYy0xMDQ1LVxcdFxcdHUzMiBsZXZlbCA9IHBhcmFtO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyNTAwOF9waHkuYy0xMDU4LVxcdFxcdFxcdFxcdGxldmVsLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmM6MTA1OTpcXHRcXHRcXHRcXHRBVEg5S19BTklfRklSU1RFUF9MVkwsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyNTAwOF9waHkuYy0xMDYwLVxcdFxcdFxcdFxcdHZhbHVlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyNTAwOF9waHkuYy0xMDY2LVxcdFxcdFxcdFxcdGxldmVsLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmM6MTA2NzpcXHRcXHRcXHRcXHRBVEg5S19BTklfRklSU1RFUF9MVkwsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyNTAwOF9waHkuYy0xMDY4LVxcdFxcdFxcdFxcdHZhbHVlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyNTAwOF9waHkuYy0xMDc3LVxcdH1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jOjEwNzg6XFx0Y2FzZSBBVEg5S19BTklfU1BVUl9JTU1VTklUWV9MRVZFTDp7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyNTAwOF9waHkuYy0xMDc5LVxcdFxcdHUzMiBsZXZlbCA9IHBhcmFtO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyNTAwOF9waHkuYy0xMDkzLVxcdFxcdFxcdFxcdGxldmVsLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmM6MTA5NDpcXHRcXHRcXHRcXHRBVEg5S19BTklfU1BVUl9JTU1VTkVfTFZMLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmMtMTA5NS1cXHRcXHRcXHRcXHR2YWx1ZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmMtMTEwMS1cXHRcXHRcXHRcXHRsZXZlbCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jOjExMDI6XFx0XFx0XFx0XFx0QVRIOUtfQU5JX1NQVVJfSU1NVU5FX0xWTCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jLTExMDMtXFx0XFx0XFx0XFx0dmFsdWUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jLTExMTItXFx0fVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmM6MTExMzpcXHRjYXNlIEFUSDlLX0FOSV9NUkNfQ0NLOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmMtMTExNC1cXHRcXHQvKlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyNTAwOF9waHkuYz0xMTY5PXN0YXRpYyB2b2lkIGFyNTAwOF9od19hbmlfY2FjaGVfaW5pX3JlZ3Moc3RydWN0IGF0aF9odyAqYWgpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jLTEyMTMtXFx0LyogdGhlc2UgbGV2ZWxzIGp1c3QgZ290IHJlc2V0IHRvIGRlZmF1bHRzIGJ5IHRoZSBJTkkgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jOjEyMTQ6XFx0YW5pU3RhdGUtXFx1MDAzZXNwdXJJbW11bml0eUxldmVsID0gQVRIOUtfQU5JX1NQVVJfSU1NVU5FX0xWTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jOjEyMTU6XFx0YW5pU3RhdGUtXFx1MDAzZWZpcnN0ZXBMZXZlbCA9IEFUSDlLX0FOSV9GSVJTVEVQX0xWTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jLTEyMTYtXFx0YW5pU3RhdGUtXFx1MDAzZW9mZG1XZWFrU2lnRGV0ZWN0ID0gdHJ1ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM9MzI9c3RhdGljIGJvb2wgYXI5MDAyX2h3X2dldF9pc3Ioc3RydWN0IGF0aF9odyAqYWgsIGVudW0gYXRoOWtfaW50ICptYXNrZWQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTY2LVxcdFxcdFxcdGlmIChpc3IyIFxcdTAwMjYgQVJfSVNSX1MyX1RJTSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjY3OlxcdFxcdFxcdFxcdG1hc2syIHw9IEFUSDlLX0lOVF9USU07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy02OC1cXHRcXHRcXHRpZiAoaXNyMiBcXHUwMDI2IEFSX0lTUl9TMl9EVElNKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6Njk6XFx0XFx0XFx0XFx0bWFzazIgfD0gQVRIOUtfSU5UX0RUSU07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy03MC1cXHRcXHRcXHRpZiAoaXNyMiBcXHUwMDI2IEFSX0lTUl9TMl9EVElNU1lOQylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjcxOlxcdFxcdFxcdFxcdG1hc2syIHw9IEFUSDlLX0lOVF9EVElNU1lOQztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTcyLVxcdFxcdFxcdGlmIChpc3IyIFxcdTAwMjYgKEFSX0lTUl9TMl9DQUJFTkQpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6NzM6XFx0XFx0XFx0XFx0bWFzazIgfD0gQVRIOUtfSU5UX0NBQkVORDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTc0LVxcdFxcdFxcdGlmIChpc3IyIFxcdTAwMjYgQVJfSVNSX1MyX0dUVClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjc1OlxcdFxcdFxcdFxcdG1hc2syIHw9IEFUSDlLX0lOVF9HVFQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy03Ni1cXHRcXHRcXHRpZiAoaXNyMiBcXHUwMDI2IEFSX0lTUl9TMl9DU1QpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzo3NzpcXHRcXHRcXHRcXHRtYXNrMiB8PSBBVEg5S19JTlRfQ1NUO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtNzgtXFx0XFx0XFx0aWYgKGlzcjIgXFx1MDAyNiBBUl9JU1JfUzJfVFNGT09SKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6Nzk6XFx0XFx0XFx0XFx0bWFzazIgfD0gQVRIOUtfSU5UX1RTRk9PUjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTgwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6ODE6XFx0XFx0XFx0aWYgKCEocENhcC1cXHUwMDNlaHdfY2FwcyBcXHUwMDI2IEFUSDlLX0hXX0NBUF9SQUNfU1VQUE9SVEVEKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtODItXFx0XFx0XFx0XFx0UkVHX1dSSVRFKGFoLCBBUl9JU1JfUzIsIGlzcjIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy04Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjg3OlxcdFxcdGlmIChwQ2FwLVxcdTAwM2Vod19jYXBzIFxcdTAwMjYgQVRIOUtfSFdfQ0FQX1JBQ19TVVBQT1JURUQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy04OC1cXHRcXHRcXHRpc3IgPSBSRUdfUkVBRChhaCwgQVJfSVNSX1JBQyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTk0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6OTU6XFx0XFx0Km1hc2tlZCA9IGlzciBcXHUwMDI2IEFUSDlLX0lOVF9DT01NT047XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy05Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtOTgtXFx0XFx0XFx0ICAgQVJfSVNSX1JYT0sgfCBBUl9JU1JfUlhFUlIpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6OTk6XFx0XFx0XFx0Km1hc2tlZCB8PSBBVEg5S19JTlRfUlg7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0xMDAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTEwNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjEwNjpcXHRcXHRcXHQqbWFza2VkIHw9IEFUSDlLX0lOVF9UWDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTEwNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjEwODpcXHRcXHRcXHRpZiAocENhcC1cXHUwMDNlaHdfY2FwcyBcXHUwMDI2IEFUSDlLX0hXX0NBUF9SQUNfU1VQUE9SVEVEKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0xMDktXFx0XFx0XFx0XFx0czBfcyA9IFJFR19SRUFEKGFoLCBBUl9JU1JfUzBfUyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTEzOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjE0MDpcXHRcXHRpZiAocENhcC1cXHUwMDNlaHdfY2FwcyBcXHUwMDI2IEFUSDlLX0hXX0NBUF9SQUNfU1VQUE9SVEVEKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0xNDEtXFx0XFx0XFx0czVfcyA9IFJFR19SRUFEKGFoLCBBUl9JU1JfUzVfUyhhaCkpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0xNTItXFx0XFx0aWYgKGFoLVxcdTAwM2VpbnRyX2dlbl90aW1lcl90cmlnZ2VyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6MTUzOlxcdFxcdFxcdCptYXNrZWQgfD0gQVRIOUtfSU5UX0dFTlRJTUVSO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtMTU0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtMTU1LVxcdFxcdGlmICgoczVfcyBcXHUwMDI2IEFSX0lTUl9TNV9USU1fVElNRVIpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzoxNTY6XFx0XFx0ICAgICEocENhcC1cXHUwMDNlaHdfY2FwcyBcXHUwMDI2IEFUSDlLX0hXX0NBUF9BVVRPU0xFRVApKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6MTU3OlxcdFxcdFxcdCptYXNrZWQgfD0gQVRIOUtfSU5UX1RJTV9USU1FUjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTE1OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjE1OTpcXHRcXHRpZiAoIShwQ2FwLVxcdTAwM2Vod19jYXBzIFxcdTAwMjYgQVRIOUtfSFdfQ0FQX1JBQ19TVVBQT1JURUQpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0xNjAtXFx0XFx0XFx0UkVHX1dSSVRFKGFoLCBBUl9JU1JfUzUsIHM1X3MpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0xNjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzoxNjU6XFx0aWYgKCEocENhcC1cXHUwMDNlaHdfY2FwcyBcXHUwMDI2IEFUSDlLX0hXX0NBUF9SQUNfU1VQUE9SVEVEKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtMTY2LVxcdFxcdFJFR19XUklURShhaCwgQVJfSVNSLCBpc3IpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0xODktXFx0XFx0XFx0fVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6MTkwOlxcdFxcdFxcdCptYXNrZWQgfD0gQVRIOUtfSU5UX0ZBVEFMO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtMTkxLVxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtMTk2LVxcdFxcdFxcdFJFR19XUklURShhaCwgQVJfUkMsIDApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6MTk3OlxcdFxcdFxcdCptYXNrZWQgfD0gQVRIOUtfSU5UX0ZBVEFMO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtMTk4LVxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM9MjEyPWFyOTAwMl9zZXRfdHhkZXNjKHN0cnVjdCBhdGhfaHcgKmFoLCB2b2lkICpkcywgc3RydWN0IGF0aF90eF9pbmZvICppKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0yNjAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzoyNjE6XFx0Y3RsMSB8PSAoaS1cXHUwMDNla2V5aXggIT0gQVRIOUtfVFhLRVlJWF9JTlZBTElEID8gU00oaS1cXHUwMDNla2V5aXgsIEFSX0Rlc3RJZHgpIDogMClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTI2Mi1cXHRcXHR8IFNNKGktXFx1MDAzZXR5cGUsIEFSX0ZyYW1lVHlwZSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjI2MzpcXHRcXHR8IChpLVxcdTAwM2VmbGFncyBcXHUwMDI2IEFUSDlLX1RYREVTQ19OT0FDSyA/IEFSX05vQWNrIDogMClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjI2NDpcXHRcXHR8IChpLVxcdTAwM2VmbGFncyBcXHUwMDI2IEFUSDlLX1RYREVTQ19FWFRfT05MWSA/IEFSX0V4dE9ubHkgOiAwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6MjY1OlxcdFxcdHwgKGktXFx1MDAzZWZsYWdzIFxcdTAwMjYgQVRIOUtfVFhERVNDX0VYVF9BTkRfQ1RMID8gQVJfRXh0QW5kQ3RsIDogMCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0yNjYtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTI4Mi1cXHRXUklURV9PTkNFKGFkcy1cXHUwMDNlZHNfY3RsMCwgKGktXFx1MDAzZXBrdF9sZW4gXFx1MDAyNiBBUl9GcmFtZUxlbilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjI4MzpcXHRcXHR8IChpLVxcdTAwM2VmbGFncyBcXHUwMDI2IEFUSDlLX1RYREVTQ19WTUYgPyBBUl9WaXJ0TW9yZUZyYWcgOiAwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmMtMjg0LVxcdFxcdHwgU00oaS1cXHUwMDNldHhwb3dlclswXSwgQVJfWG1pdFBvd2VyMClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjI4NTpcXHRcXHR8IChpLVxcdTAwM2VmbGFncyBcXHUwMDI2IEFUSDlLX1RYREVTQ19WRU9MID8gQVJfVkVPTCA6IDApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzoyODY6XFx0XFx0fCAoaS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBBVEg5S19UWERFU0NfSU5UUkVRID8gQVJfVHhJbnRyUmVxIDogMClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjI4NzpcXHRcXHR8IChpLVxcdTAwM2VrZXlpeCAhPSBBVEg5S19UWEtFWUlYX0lOVkFMSUQgPyBBUl9EZXN0SWR4VmFsaWQgOiAwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6Mjg4OlxcdFxcdHwgKGktXFx1MDAzZWZsYWdzIFxcdTAwMjYgQVRIOUtfVFhERVNDX0NMUkRNQVNLID8gQVJfQ2xyRGVzdE1hc2sgOiAwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6Mjg5OlxcdFxcdHwgKGktXFx1MDAzZWZsYWdzIFxcdTAwMjYgQVRIOUtfVFhERVNDX1JUU0VOQSA/IEFSX1JUU0VuYWJsZSA6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzoyOTA6XFx0XFx0ICAgKGktXFx1MDAzZWZsYWdzIFxcdTAwMjYgQVRIOUtfVFhERVNDX0NUU0VOQSA/IEFSX0NUU0VuYWJsZSA6IDApKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0yOTEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jPTMxNj1zdGF0aWMgaW50IGFyOTAwMl9od19wcm9jX3R4ZGVzYyhzdHJ1Y3QgYXRoX2h3ICphaCwgdm9pZCAqZHMsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTMzMC1cXHRpZiAoc3RhdHVzIFxcdTAwMjYgQVJfVHhPcEV4Y2VlZGVkKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6MzMxOlxcdFxcdHRzLVxcdTAwM2V0c19zdGF0dXMgfD0gQVRIOUtfVFhFUlJfWFRYT1A7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0zMzItXFx0dHMtXFx1MDAzZXRpZCA9IE1TKHN0YXR1cywgQVJfVHhUaWQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0zNDAtXFx0aWYgKHN0YXR1cyBcXHUwMDI2IEFSX1R4QmFTdGF0dXMpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jOjM0MTpcXHRcXHR0cy1cXHUwMDNldHNfZmxhZ3MgfD0gQVRIOUtfVFhfQkE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0zNDItXFx0XFx0dHMtXFx1MDAzZWJhX2xvdyA9IGFkcy1cXHUwMDNlQVJfQmFCaXRtYXBMb3c7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAyX21hYy5jLTM0Ny1cXHRpZiAoc3RhdHVzIFxcdTAwMjYgQVJfRnJtWG1pdE9LKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDJfbWFjLmM6MzQ4OlxcdFxcdHRzLVxcdTAwM2V0c19zdGF0dXMgfD0gQVRIOUtfVFhfQUNLRUQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0zNDktXFx0ZWxzZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYy0zNTAtXFx0XFx0aWYgKHN0YXR1cyBcXHUwMDI2IEFSX0V4Y2Vzc2l2ZVJldHJpZXMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwMl9tYWMuYzozNTE6XFx0XFx0XFx0dHMtXFx1MDAzZXRzX3N0YXR1cyB8PSBBVEg5S19UWEVSUl9YUkVUUlk7XFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDEyOjQ4OjA4LjE3OTk5MzYwM1oiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozMDcyNjQ2NDU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSB0aGlua2luZyBpdCBteXNlbGYsIHRhaWxvcmVkIGZvciBzb21lb25lIGluIG15IGZpZWxkOlxuXG4qKkRpZ2dpbmcgaW50byBBVEg5S19IVEMgRGVwZW5kZW5jaWVzKipcblxuUmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9LY29uZmlnYCBmaWxlLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIHN1cnJvdW5kaW5nIGNvbmZpZ3VyYXRpb25zIHJlbGF0ZWQgdG8gYEFUSDlLX0hUQ2AuIFNwZWNpZmljYWxseSwgSSdtIHRoaW5raW5nIEkgc2hvdWxkIGNoZWNrIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGVuY2xvc2luZyBvciBjb25kaXRpb25hbCBjb25maWd1cmF0aW9ucyB0aGF0IG1pZ2h0IGltcGFjdCBvciBkZXBlbmQgb24gYEFUSDlLX0hUQ2AuIEl0J3MgY3J1Y2lhbCB0byB1bmRlcnN0YW5kIHRoZSBicm9hZGVyIGNvbnRleHQuIFVuZGVyc3RhbmRpbmcgZGVwZW5kZW5jaWVzIGlzIGtleSB0byBhdm9pZCB1bmludGVuZGVkIGNvbnNlcXVlbmNlcyBvciBtaXNzaW5nIGNyaXRpY2FsIGVsZW1lbnRzIHdoZW4gbW9kaWZ5aW5nIHRoaXMgbW9kdWxlLiBHb3R0YSB0cmFjZSB0aGUgaW5oZXJpdGFuY2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4MzUxLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMTI6NDg6MTEuMjUyNjQzNDc5WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTg1OTI5NDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic291cmNlLiphdGhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWc9MjE9c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hZG10ZWsvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9LY29uZmlnOjIyOnNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvS2NvbmZpZy0yMy1zb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0bWVsL0tjb25maWdcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvS2NvbmZpZz00OT1jb25maWcgQVRIX1JFR19EWU5BTUlDX1VTRVJfQ0VSVF9URVNUSU5HXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvS2NvbmZpZy01Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvS2NvbmZpZzo1Nzpzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9LY29uZmlnOjU4OnNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL0tjb25maWc6NTk6c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvS2NvbmZpZzo2MDpzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvS2NvbmZpZzo2MTpzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hcjU1MjMvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvS2NvbmZpZzo2Mjpzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL0tjb25maWc6NjM6c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL0tjb25maWc6NjQ6c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9LY29uZmlnOjY1OnNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9LY29uZmlnOjY2OnNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9LY29uZmlnLTY3LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9haGIuYz00MzA9c3RhdGljIHZvaWQgYXRoMTBrX2FoYl9pcnFfZGlzYWJsZShzdHJ1Y3QgYXRoMTBrICphcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvYWhiLmMtNDM1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvYWhiLmM6NDM2OnN0YXRpYyBpbnQgYXRoMTBrX2FoYl9yZXNvdXJjZV9pbml0KHN0cnVjdCBhdGgxMGsgKmFyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvYWhiLmMtNDM3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvYWhiLmMtNTIzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvYWhiLmM6NTI0OnN0YXRpYyB2b2lkIGF0aDEwa19haGJfcmVzb3VyY2VfZGVpbml0KHN0cnVjdCBhdGgxMGsgKmFyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvYWhiLmMtNTI1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM9MjA0PWF0aDEwa19tYWNfbWF4X3ZodF9uc3MoY29uc3QgdTE2IHZodF9tY3NfbWFza1tOTDgwMjExX1ZIVF9OU1NfTUFYXSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtMjE0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM6MjE1OmludCBhdGgxMGtfbWFjX2V4dF9yZXNvdXJjZV9jb25maWcoc3RydWN0IGF0aDEwayAqYXIsIHUzMiB2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy0yMTYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuaD03MD1zdHJ1Y3QgaWVlZTgwMjExX3R4cSAqYXRoMTBrX21hY190eHFfbG9va3VwKHN0cnVjdCBhdGgxMGsgKmFyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuaC03Mi1cXHRcXHRcXHRcXHRcXHQgICAgdTggdGlkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5oOjczOmludCBhdGgxMGtfbWFjX2V4dF9yZXNvdXJjZV9jb25maWcoc3RydWN0IGF0aDEwayAqYXIsIHUzMiB2YWwpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmgtNzQtdm9pZCBhdGgxMGtfbWFjX3dhaXRfdHhfY29tcGxldGUoc3RydWN0IGF0aDEwayAqYXIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9wY2kuYz0xNzg5PXZvaWQgYXRoMTBrX3BjaV9oaWZfc2VuZF9jb21wbGV0ZV9jaGVjayhzdHJ1Y3QgYXRoMTBrICphciwgdTggcGlwZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvcGNpLmMtMTgwNC1cXHRcXHQgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3BjaS5jOjE4MDU6XFx0XFx0cmVzb3VyY2VzID0gYXRoMTBrX3BjaV9oaWZfZ2V0X2ZyZWVfcXVldWVfbnVtYmVyKGFyLCBwaXBlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3BjaS5jLTE4MDYtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3BjaS5jPTM0Mzc9c3RhdGljIGJvb2wgYXRoMTBrX3BjaV9jaGlwX2lzX3N1cHBvcnRlZCh1MzIgZGV2X2lkLCB1MzIgY2hpcF9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvcGNpLmMtMzQ1My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3BjaS5jOjM0NTQ6aW50IGF0aDEwa19wY2lfc2V0dXBfcmVzb3VyY2Uoc3RydWN0IGF0aDEwayAqYXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9wY2kuYy0zNDU1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvcGNpLmMtMzUxMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3BjaS5jOjM1MTE6dm9pZCBhdGgxMGtfcGNpX3JlbGVhc2VfcmVzb3VyY2Uoc3RydWN0IGF0aDEwayAqYXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9wY2kuYy0zNTEyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvcGNpLmg9MjUwPWludCBhdGgxMGtfcGNpX3dhaXRfZm9yX3RhcmdldF9pbml0KHN0cnVjdCBhdGgxMGsgKmFyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3BjaS5oOjI1MTppbnQgYXRoMTBrX3BjaV9zZXR1cF9yZXNvdXJjZShzdHJ1Y3QgYXRoMTBrICphcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9wY2kuaDoyNTI6dm9pZCBhdGgxMGtfcGNpX3JlbGVhc2VfcmVzb3VyY2Uoc3RydWN0IGF0aDEwayAqYXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvcGNpLmgtMjUzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9zbm9jLmM9NzYxPXN0YXRpYyB2b2lkIGF0aDEwa19zbm9jX2hpZl9zZW5kX2NvbXBsZXRlX2NoZWNrKHN0cnVjdCBhdGgxMGsgKmFyLCB1OCBwaXBlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9zbm9jLmMtNzY4LVxcdGlmICghZm9yY2UpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Nub2MuYzo3Njk6XFx0XFx0cmVzb3VyY2VzID0gYXRoMTBrX3Nub2NfaGlmX2dldF9mcmVlX3F1ZXVlX251bWJlcihhciwgcGlwZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9zbm9jLmMtNzcwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9zbm9jLmM9MTMwNT1zdGF0aWMgdm9pZCBhdGgxMGtfc25vY19mcmVlX2lycShzdHJ1Y3QgYXRoMTBrICphcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvc25vYy5jLTEzMTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9zbm9jLmM6MTMxNDpzdGF0aWMgaW50IGF0aDEwa19zbm9jX3Jlc291cmNlX2luaXQoc3RydWN0IGF0aDEwayAqYXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9zbm9jLmMtMTMxNS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Nub2MuYz0xMzcxPWludCBhdGgxMGtfc25vY19md19pbmRpY2F0aW9uKHN0cnVjdCBhdGgxMGsgKmFyLCB1NjQgdHlwZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvc25vYy5jLTE0MDgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9zbm9jLmM6MTQwOTpzdGF0aWMgaW50IGF0aDEwa19zbm9jX3NldHVwX3Jlc291cmNlKHN0cnVjdCBhdGgxMGsgKmFyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvc25vYy5jLTE0MTAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9zbm9jLmMtMTQzNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Nub2MuYzoxNDM4OnN0YXRpYyB2b2lkIGF0aDEwa19zbm9jX3JlbGVhc2VfcmVzb3VyY2Uoc3RydWN0IGF0aDEwayAqYXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9zbm9jLmMtMTQzOS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Nub2MuYz0xNTczPXN0YXRpYyB2b2lkIGF0aDEwa19tb2RlbV9kZWluaXQoc3RydWN0IGF0aDEwayAqYXIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Nub2MuYy0xNTgyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvc25vYy5jOjE1ODM6c3RhdGljIGludCBhdGgxMGtfc2V0dXBfbXNhX3Jlc291cmNlcyhzdHJ1Y3QgYXRoMTBrICphciwgdTMyIG1zYV9zaXplKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvc25vYy5jLTE1ODQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9zbm9jLmM9MTczMj1zdGF0aWMgaW50IGF0aDEwa19zbm9jX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Nub2MuYy0xODk0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvc25vYy5jOjE4OTU6c3RhdGljIGludCBhdGgxMGtfc25vY19mcmVlX3Jlc291cmNlcyhzdHJ1Y3QgYXRoMTBrICphcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Nub2MuYy0xODk2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM9NzQ9c3RhdGljIHZvaWQgYXRoMTBrX3VzYl9jbGVhbnVwX3JlY3ZfdXJiKHN0cnVjdCBhdGgxMGtfdXJiX2NvbnRleHQgKnVyYl9jb250ZXh0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy04MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjgyOnN0YXRpYyB2b2lkIGF0aDEwa191c2JfZnJlZV9waXBlX3Jlc291cmNlcyhzdHJ1Y3QgYXRoMTBrICphcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTgzLVxcdFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBhdGgxMGtfdXNiX3BpcGUgKnBpcGUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTExMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjExNDpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX2NsZWFudXBfcGlwZV9yZXNvdXJjZXMoc3RydWN0IGF0aDEwayAqYXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMTUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYz03NDY9c3RhdGljIHU4IGF0aDEwa191c2JfZ2V0X2xvZ2ljYWxfcGlwZV9udW0odTggZXBfYWRkcmVzcywgaW50ICp1cmJfY291bnQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTc5MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjc5MTpzdGF0aWMgaW50IGF0aDEwa191c2JfYWxsb2NfcGlwZV9yZXNvdXJjZXMoc3RydWN0IGF0aDEwayAqYXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03OTItXFx0XFx0XFx0XFx0XFx0ICAgc3RydWN0IGF0aDEwa191c2JfcGlwZSAqcGlwZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtODIyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6ODIzOnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9zZXR1cF9waXBlX3Jlc291cmNlcyhzdHJ1Y3QgYXRoMTBrICphcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTgyNC1cXHRcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWktb3BzLmg9MTQ9c3RydWN0IHdtaV9vcHMge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWktb3BzLmgtMjA5LVxcdFxcdFxcdFxcdFxcdFxcdFxcdHUzMiBkZXRlY3RfbWFyZ2luKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS1vcHMuaDoyMTA6XFx0c3RydWN0IHNrX2J1ZmYgKigqZXh0X3Jlc291cmNlX2NvbmZpZykoc3RydWN0IGF0aDEwayAqYXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWktb3BzLmgtMjExLVxcdFxcdFxcdFxcdFxcdCAgICAgICBlbnVtIHdtaV9ob3N0X3BsYXRmb3JtX3R5cGUgdHlwZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLW9wcy5oPTE1Nzk9c3RhdGljIGlubGluZSBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS1vcHMuaDoxNTgwOmF0aDEwa193bWlfZXh0X3Jlc291cmNlX2NvbmZpZyhzdHJ1Y3QgYXRoMTBrICphcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS1vcHMuaC0xNTgxLVxcdFxcdFxcdCAgICAgICBlbnVtIHdtaV9ob3N0X3BsYXRmb3JtX3R5cGUgdHlwZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmM9ODg1NT1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmM6ODg1NjphdGgxMGtfd21pXzEwXzRfZXh0X3Jlc291cmNlX2NvbmZpZyhzdHJ1Y3QgYXRoMTBrICphcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS5jLTg4NTctXFx0XFx0XFx0XFx0ICAgIGVudW0gd21pX2hvc3RfcGxhdGZvcm1fdHlwZSB0eXBlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYz05NDM4PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgd21pX29wcyB3bWlfMTBfNF9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS5jLTk0OTYtXFx0LmZ3X3N0YXRzX2ZpbGwgPSBhdGgxMGtfd21pXzEwXzRfb3BfZndfc3RhdHNfZmlsbCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS5jOjk0OTc6XFx0LmV4dF9yZXNvdXJjZV9jb25maWcgPSBhdGgxMGtfd21pXzEwXzRfZXh0X3Jlc291cmNlX2NvbmZpZyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS5jLTk0OTgtXFx0Lmdlbl91cGRhdGVfZndfdGRsc19zdGF0ZSA9IGF0aDEwa193bWlfMTBfNF9nZW5fdXBkYXRlX2Z3X3RkbHNfc3RhdGUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jPTgyOD1zdGF0aWMgaW50IGF0aDExa19jb3JlX2dldF9ycHJvYyhzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy04NDctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo4NDg6c3RhdGljIGludCBhdGgxMWtfYWhiX3NldHVwX21zaV9yZXNvdXJjZXMoc3RydWN0IGF0aDExa19iYXNlICphYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTg0OS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jPTkxNj1zdGF0aWMgdm9pZCBhdGgxMWtfYWhiX3JlbGVhc2Vfc21wMnBfaGFuZGxlKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTkyNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjkyNjpzdGF0aWMgaW50IGF0aDExa19haGJfc2V0dXBfcmVzb3VyY2VzKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy05Mjcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy05NDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzo5NDc6c3RhdGljIGludCBhdGgxMWtfYWhiX3NldHVwX21zYV9yZXNvdXJjZXMoc3RydWN0IGF0aDExa19iYXNlICphYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTk0OC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jPTk5OT1zdGF0aWMgdm9pZCBhdGgxMWtfYWhiX2NlX3VubWFwKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTEwMDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoxMDA1OnN0YXRpYyBpbnQgYXRoMTFrX2FoYl9md19yZXNvdXJjZXNfaW5pdChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMTAwNi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTExMDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoxMTA0OnN0YXRpYyBpbnQgYXRoMTFrX2FoYl9md19yZXNvdXJjZV9kZWluaXQoc3RydWN0IGF0aDExa19iYXNlICphYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTExMDUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYz0xMjY0PXN0YXRpYyB2b2lkIGF0aDExa19haGJfcmVtb3ZlX3ByZXBhcmUoc3RydWN0IGF0aDExa19iYXNlICphYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMTI3OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jOjEyODA6c3RhdGljIHZvaWQgYXRoMTFrX2FoYl9mcmVlX3Jlc291cmNlcyhzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmMtMTI4MS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmM9NDM9aW50IGF0aDExa19kcF9wZWVyX3NldHVwKHN0cnVjdCBhdGgxMWsgKmFyLCBpbnQgdmRldl9pZCwgY29uc3QgdTggKmFkZHIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtNzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jOjc5OlxcdC8qIFRPRE86IFNldHVwIG90aGVyIHBlZXIgc3BlY2lmaWMgcmVzb3VyY2UgdXNlZCBpbiBkYXRhIHBhdGggKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMtODAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3FtaS5jPTMzNjQ9RVhQT1JUX1NZTUJPTChhdGgxMWtfcW1pX2RlaW5pdF9zZXJ2aWNlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3FtaS5jLTMzNjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9xbWkuYzozMzY2OnZvaWQgYXRoMTFrX3FtaV9mcmVlX3Jlc291cmNlKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9xbWkuYy0zMzY3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcW1pLmg9NTIxPWludCBhdGgxMWtfcW1pX2luaXRfc2VydmljZShzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3FtaS5oOjUyMjp2b2lkIGF0aDExa19xbWlfZnJlZV9yZXNvdXJjZShzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3FtaS5oLTUyMy1pbnQgYXRoMTFrX3FtaV9md3Jlc2V0X2Zyb21fY29sZF9ib290KHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYz0xMDExPXN0YXRpYyB2b2lkIGF0aDEya19haGJfZGVjb25maWd1cmVfcnByb2Moc3RydWN0IGF0aDEya19iYXNlICphYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMTAzNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjEwMzY6c3RhdGljIGludCBhdGgxMmtfYWhiX3Jlc291cmNlX2luaXQoc3RydWN0IGF0aDEya19iYXNlICphYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTEwMzcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xMDk5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MTEwMDpzdGF0aWMgdm9pZCBhdGgxMmtfYWhiX3Jlc291cmNlX2RlaW5pdChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMTEwMS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jPTEyNjc9c3RhdGljIHZvaWQgYXRoMTJrX2FoYl9yZW1vdmVfcHJlcGFyZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xMjgyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MTI4MzpzdGF0aWMgdm9pZCBhdGgxMmtfYWhiX2ZyZWVfcmVzb3VyY2VzKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xMjg0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuYz00Nz1pbnQgYXRoMTJrX2RwX3BlZXJfc2V0dXAoc3RydWN0IGF0aDEyayAqYXIsIGludCB2ZGV2X2lkLCBjb25zdCB1OCAqYWRkcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuYy04Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmM6ODM6XFx0LyogVE9ETzogU2V0dXAgb3RoZXIgcGVlciBzcGVjaWZpYyByZXNvdXJjZSB1c2VkIGluIGRhdGEgcGF0aCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuYy04NC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcW1pLmM9NDEwMz12b2lkIGF0aDEya19xbWlfZGVpbml0X3NlcnZpY2Uoc3RydWN0IGF0aDEya19iYXNlICphYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcW1pLmMtNDExNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3FtaS5jOjQxMTc6dm9pZCBhdGgxMmtfcW1pX2ZyZWVfcmVzb3VyY2Uoc3RydWN0IGF0aDEya19iYXNlICphYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3FtaS5jLTQxMTgte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9xbWkuaD02MzM9aW50IGF0aDEya19xbWlfaW5pdF9zZXJ2aWNlKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcW1pLmg6NjM0OnZvaWQgYXRoMTJrX3FtaV9mcmVlX3Jlc291cmNlKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcW1pLmgtNjM1LXZvaWQgYXRoMTJrX3FtaV90cmlnZ2VyX2hvc3RfY2FwKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYz00MTQzPXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYzo0MTQ0OmF0aDEya193bWlfY29weV9yZXNvdXJjZV9jb25maWcoc3RydWN0IGF0aDEya19iYXNlICphYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTQxNDUtXFx0XFx0XFx0XFx0c3RydWN0IGF0aDEya193bWlfcmVzb3VyY2VfY29uZmlnX3BhcmFtcyAqd21pX2NmZyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmM9MTc3PXN0YXRpYyBpbmxpbmUgc3RydWN0IGF0aDZrbF91c2IgKmF0aDZrbF91c2JfcHJpdihzdHJ1Y3QgYXRoNmtsICphcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdXNiLmMtMTgyLS8qIHBpcGUgcmVzb3VyY2UgYWxsb2NhdGlvbi9jbGVhbnVwICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzoxODM6c3RhdGljIGludCBhdGg2a2xfdXNiX2FsbG9jX3BpcGVfcmVzb3VyY2VzKHN0cnVjdCBhdGg2a2xfdXNiX3BpcGUgKnBpcGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0xODQtXFx0XFx0XFx0XFx0XFx0ICAgaW50IHVyYl9jbnQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTIxNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjIxODpzdGF0aWMgdm9pZCBhdGg2a2xfdXNiX2ZyZWVfcGlwZV9yZXNvdXJjZXMoc3RydWN0IGF0aDZrbF91c2JfcGlwZSAqcGlwZSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTIxOS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTI0OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jOjI0OTpzdGF0aWMgdm9pZCBhdGg2a2xfdXNiX2NsZWFudXBfcGlwZV9yZXNvdXJjZXMoc3RydWN0IGF0aDZrbF91c2IgKmFyX3VzYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jLTI1MC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3VzYi5jPTI1Nz1zdGF0aWMgdTggYXRoNmtsX3VzYl9nZXRfbG9naWNhbF9waXBlX251bShzdHJ1Y3QgYXRoNmtsX3VzYiAqYXJfdXNiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0zMDItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYzozMDM6c3RhdGljIGludCBhdGg2a2xfdXNiX3NldHVwX3BpcGVfcmVzb3VyY2VzKHN0cnVjdCBhdGg2a2xfdXNiICphcl91c2IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC91c2IuYy0zMDQte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQxMjo0ODoxMS40MTEyNDMwOTdaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTcxNjE4ODUwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaXQgaXM6XG5cbioqQ2hlY2tpbmcgYEFUSF9DT01NT05gIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvS2NvbmZpZ2AqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgZ29pbmcgb24gd2l0aCB0aGUgQXRoZXJvcyB3aXJlbGVzcyBkcml2ZXJzIGluIHRoaXMga2VybmVsIGJ1aWxkLCBhbmQgdGhlIGZpcnN0IGxvZ2ljYWwgc3RlcCBpcyB0byBjaGVjayB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLiBTcGVjaWZpY2FsbHksIEknbSB0aGlua2luZyBhYm91dCBgQVRIX0NPTU1PTmAuIEkga25vdyB0aGF0J3MgYSBrZXkgY29tbW9uIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBBdGhlcm9zIGRyaXZlciwgc28gdGhhdCdzIHdoZXJlIEknbGwgc3RhcnQgbG9va2luZy4gSSdsbCBuZWVkIHRvIHNlZSBob3cgaXQncyBkZWZpbmVkLCBpdHMgZGVwZW5kZW5jaWVzLCBhbmQgd2hhdCBvdGhlciBvcHRpb25zIGFyZSBpbmZsdWVuY2VkIGJ5IGl0cyBzdGF0ZS4gVGhpcyB3aWxsIGhlbHAgbWUgdW5kZXJzdGFuZCB0aGUgb3ZlcmFsbCBidWlsZCBjb25maWd1cmF0aW9uIGFuZCBwaW5wb2ludCBhbnkgcG90ZW50aWFsIGlzc3VlcyBvciB1bmRlcnN0YW5kIHRoZSByYXRpb25hbGUgYmVoaW5kIGNlcnRhaW4gc2V0dGluZ3MsIGdpdmVuIG15IGV4cGVydGlzZSBpbiB0aGUgZmllbGQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ0NzQ2LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMTI6NDg6MTMuMTI3NDM0MzUyWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgzMjQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogSVNDXFxuICAgMjpcXHRjb25maWcgQVRIX0NPTU1PTlxcbiAgIDM6XFx0XFx0dHJpc3RhdGVcXG4gICA0OlxcdFxcbiAgIDU6XFx0Y29uZmlnIFdMQU5fVkVORE9SX0FUSFxcbiAgIDY6XFx0XFx0Ym9vbCBcXFwiQXRoZXJvcy9RdWFsY29tbSBkZXZpY2VzXFxcIlxcbiAgIDc6XFx0XFx0ZGVmYXVsdCB5XFxuICAgODpcXHRcXHRoZWxwXFxuICAgOTpcXHRcXHQgIElmIHlvdSBoYXZlIGEgd2lyZWxlc3MgY2FyZCBiZWxvbmdpbmcgdG8gdGhpcyBjbGFzcywgc2F5IFkuXFxuICAxMDpcXHRcXG4gIDExOlxcdFxcdCAgTm90ZSB0aGF0IHRoZSBhbnN3ZXIgdG8gdGhpcyBxdWVzdGlvbiBkb2Vzbid0IGRpcmVjdGx5IGFmZmVjdCB0aGVcXG4gIDEyOlxcdFxcdCAga2VybmVsOiBzYXlpbmcgTiB3aWxsIGp1c3QgY2F1c2UgdGhlIGNvbmZpZ3VyYXRvciB0byBza2lwIGFsbCB0aGVcXG4gIDEzOlxcdFxcdCAgcXVlc3Rpb25zIGFib3V0IHRoZXNlIGNhcmRzLiBJZiB5b3Ugc2F5IFksIHlvdSB3aWxsIGJlIGFza2VkIGZvclxcbiAgMTQ6XFx0XFx0ICB5b3VyIHNwZWNpZmljIGNhcmQgaW4gdGhlIGZvbGxvd2luZyBxdWVzdGlvbnMuXFxuICAxNTpcXHRcXG4gIDE2OlxcdFxcdCAgRm9yIG1vcmUgaW5mb3JtYXRpb24gYW5kIGRvY3VtZW50YXRpb24gb24gdGhpcyBtb2R1bGUgeW91IGNhbiB2aXNpdDpcXG4gIDE3OlxcdFxcbiAgMTg6XFx0XFx0ICBodHRwczovL3dpcmVsZXNzLndpa2kua2VybmVsLm9yZy9lbi91c2Vycy9Ecml2ZXJzL2F0aFxcbiAgMTk6XFx0XFxuICAyMDpcXHRcXHQgIEZvciBpbmZvcm1hdGlvbiBvbiBhbGwgQXRoZXJvcyB3aXJlbGVzcyBkcml2ZXJzIHZpc2l0OlxcbiAgMjE6XFx0XFxuICAyMjpcXHRcXHQgIGh0dHBzOi8vd2lyZWxlc3Mud2lraS5rZXJuZWwub3JnL2VuL3VzZXJzL0RyaXZlcnMvQXRoZXJvc1xcbiAgMjM6XFx0XFxuICAyNDpcXHRpZiBXTEFOX1ZFTkRPUl9BVEhcXG4gIDI1OlxcdFxcbiAgMjY6XFx0Y29uZmlnIEFUSF9ERUJVR1xcbiAgMjc6XFx0XFx0Ym9vbCBcXFwiQXRoZXJvcyB3aXJlbGVzcyBkZWJ1Z2dpbmdcXFwiXFxuICAyODpcXHRcXHRoZWxwXFxuICAyOTpcXHRcXHQgIFNheSBZLCBpZiB5b3Ugd2FudCB0byBkZWJ1ZyBhdGhlcm9zIHdpcmVsZXNzIGRyaXZlcnMuXFxuICAzMDpcXHRcXHQgIFJpZ2h0IG5vdyBvbmx5IGF0aDlrIG1ha2VzIHVzZSBvZiB0aGlzLlxcbiAgMzE6XFx0XFxuICAzMjpcXHRjb25maWcgQVRIX1RSQUNFUE9JTlRTXFxuICAzMzpcXHRcXHRib29sIFxcXCJBdGhlcm9zIHdpcmVsZXNzIHRyYWNpbmdcXFwiXFxuICAzNDpcXHRcXHRkZXBlbmRzIG9uIEFUSF9ERUJVR1xcbiAgMzU6XFx0XFx0ZGVwZW5kcyBvbiBFVkVOVF9UUkFDSU5HXFxuICAzNjpcXHRcXHRoZWxwXFxuICAzNzpcXHRcXHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgdHJhY2Vwb2ludHMgZm9yIGF0aGVyb3Mgd2lyZWxlc3MgZHJpdmVycy5cXG4gIDM4OlxcdFxcdCAgQ3VycmVudGx5LCBhdGg5ayBtYWtlcyB1c2Ugb2YgdGhpcyBmYWNpbGl0eS5cXG4gIDM5OlxcdFxcbiAgNDA6XFx0Y29uZmlnIEFUSF9SRUdfRFlOQU1JQ19VU0VSX1JFR19ISU5UU1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQxMjo0ODoxMy4xMjc1MTkyNjFaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDI2MzI1MzI3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgYXRoOWtfaHRjIERyaXZlciBEZXBlbmRlbmNpZXMgYW5kIFN5bWJvbCBTY29wZSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93biBzeXN0ZW1hdGljYWxseS4gRmlyc3QsIEkgbmVlZCB0byBjb25maXJtIHRoZSBjb3JlIGRlcGVuZGVuY2llcy4gSXQgbG9va3MgbGlrZSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZTogYFVTQmAsIGBNQUM4MDIxMWAsIGBBVEg5S19IVENgLCBhbmQgYFdMQU5fVkVORE9SX0FUSGAuIFNwZWNpZmljYWxseSwgYENPTkZJR19BVEg5S19IVENgIGFwcGVhcnMgdG8gYmUgdGhlIHByaW1hcnkgY29uZmlndXJhdGlvbiBvcHRpb24sIGFuZCBJIGFsc28gbmVlZCB0byBlbnN1cmUgdGhhdCBgQ09ORklHX1VTQmAsIGBDT05GSUdfTUFDODAyMTFgLCBhbmQgYENPTkZJR19XTEFOX1ZFTkRPUl9BVEhgIGFyZSBhbGwgZW5hYmxlZC5cblxuTm93LCBsZXQncyBkcmlsbCBkb3duIGludG8gdGhlIGtleSBzeW1ib2xzIHRoYXQgYXJlIGRpcmVjdGx5IGltcGFjdGVkIG9yIHN0cm9uZ2x5IGNvbm5lY3RlZCB0byB0aGlzIGNvZGUuIEl0IHNlZW1zIGxpa2UgdGhlIGZvY3VzIGlzIG9uIHRoZXNlOlxuXG4qICAgYGhpZl91c2Jfc2VuZF9yZWdvdXRgOiBUaGlzIG9uZSB3YXMgZGlyZWN0bHkgbW9kaWZpZWQsIHNwZWNpZmljYWxseSB3aXRoIHRoZSBhZGRpdGlvbiBvZiBhIGBXQVJOX09OQ0VgIGNoZWNrLlxuKiAgIGBhdGg5a19yZWdfcm13X2J1ZmZlcmA6IFRoaXMgd2FzIGRpcmVjdGx5IG1vZGlmaWVkLCB3aGVyZSB0aGVyZSB3YXMgYSBmaXggbWFkZSBmb3IgYSByZWdpc3Rlcl9ybXcgc2l6ZW9mIGNhbGN1bGF0aW9uLlxuKiAgIGBhdGg5a19yZWdfcm13YDogVGhpcyBpcyBhIGNhbGxlciBvZiBgYXRoOWtfcmVnX3Jtd19idWZmZXJgLCBzbyBpdCdzIHJlbGV2YW50IGluIHRlcm1zIG9mIGNvbnRyb2wgZmxvdy5cbiogICBgYXRoOWtfcmVnX3Jtd19mbHVzaGA6IFRoaXMgb25lIGlzIHJlc3BvbnNpYmxlIGZvciBmbHVzaGluZyB0aGUgYnVmZmVyLCBzbyBpdCdzIGltcG9ydGFudCBmb3IgdGhlIG92ZXJhbGwgcmVnaXN0ZXIgbW9kaWZpY2F0aW9uIHByb2Nlc3MuXG4qICAgYGhpZl91c2Jfc2VuZGA6IFRoaXMgb25lIGNhbGxzIGBoaWZfdXNiX3NlbmRfcmVnb3V0YC5cblxuSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlIGFuZCB2aXNpYmlsaXR5IG9mIHRoZXNlIGZ1bmN0aW9ucyDigJMgYXJlIHRoZXkgc3RhdGljLCBleHBvcnRlZCwgb3IgcGFydCBvZiB0aGUgYmluYXJ5IHN5bWJvbHM/IEV2ZW4gc3RhdGljIGZ1bmN0aW9ucywgaWYgbm90IGlubGluZWQsIGNvbnRyaWJ1dGUgdG8gdGhlIHN5bWJvbCBjb3ZlcmFnZSwgc28gdGhleSdyZSB3b3J0aCBpbnZlc3RpZ2F0aW5nLiBMZXQncyBzdGFydCB3aXRoIGBhdGg5a19yZWdfcm13X2J1ZmZlcmAuIFllcywgaXQgaXMgc3RhdGljIHZvaWQuIEFuZCBgaGlmX3VzYl9zZW5kX3JlZ291dGAgaXMgc3RhdGljIGludC4gQW5kIGBoaWZfdXNiX3NlbmRgIGlzIGFsc28gc3RhdGljIGluIGBoaWZfdXNiLmNgLCBidXQgaXQncyBhIGNhbGxiYWNrLCBkZWZpbmVkIHVuZGVyIGBoaWZfb3BzLVx1MDAzZXNlbmRgLlxuXG5UaGlzIG1lYW5zIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyBgaGlmX2Rldi1cdTAwM2VoaWZfb3BzYCBvciB0aGUgYGhpZl91c2JgIGNhbGxiYWNrcyBhcmUgcmVnaXN0ZXJlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBzdGF0aWMgZnVuY3Rpb25zIGFyZSBhY3R1YWxseSB1c2VkIGFuZCBleHBvc2VkIHdpdGhpbiB0aGUgYnJvYWRlciBzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ1NDgwLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDE1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMTI6NDg6MTcuMzkwNzc2NTdaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkwMjk1MTQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImhpZl91c2Jfc2VuZFxcXFxiXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYz00NDM9c3RhdGljIHZvaWQgaGlmX3VzYl9zdG9wKHZvaWQgKmhpZl9oYW5kbGUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQ3MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjQ3MjpzdGF0aWMgaW50IGhpZl91c2Jfc2VuZCh2b2lkICpoaWZfaGFuZGxlLCB1OCBwaXBlX2lkLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNDczLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM9NTI4PXN0YXRpYyBzdHJ1Y3QgYXRoOWtfaHRjX2hpZiBoaWZfdXNiID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy01MzctXFx0LnN0YV9kcmFpbiA9IGhpZl91c2Jfc3RhX2RyYWluLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NTM4OlxcdC5zZW5kID0gaGlmX3VzYl9zZW5kLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNTM5LX07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDEyOjQ4OjE3LjQ4MTA3ODE5OFoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMTM3NzEwNjY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyB0aGUgSFRDL1dNSSBMYXllcidzIEludGVyYWN0aW9uIHdpdGggYGhpZl91c2Jfc2VuZGAqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiBob3cgdGhlIGBoaWZfdXNiX3NlbmRgIGZ1bmN0aW9uIGlzIGFjdHVhbGx5IGJlaW5nIGNhbGxlZCB3aXRoaW4gdGhlIEhUQy9XTUkgbGF5ZXIuIEl0J3MgY3J1Y2lhbCB0byB1bmRlcnN0YW5kIHRoaXMgaW50ZXJhY3Rpb24gZm9yIFsgKkluc2VydCB0aGUgcmVsZXZhbnQgdGVjaG5pY2FsIGZpZWxkLCBlLmcuLCBkZWJ1Z2dpbmcgYSBVU0IgY29tbXVuaWNhdGlvbiBpc3N1ZSwgb3B0aW1pemluZyBkYXRhIHRyYW5zZmVyLCBhbmFseXppbmcgZHJpdmVyIGJlaGF2aW9yLCBldGMuKiBdLiBJIG5lZWQgdG8gdHJhY2UgdGhlIGNhbGwgcGF0aHMgdG8gaWRlbnRpZnkgdGhlIGVudHJ5IHBvaW50cyBhbmQgdGhlIGNvbnRleHQgaW4gd2hpY2ggdGhpcyBmdW5jdGlvbiBpcyB1c2VkLiBNeSBpbml0aWFsIHBsYW4gaXMgdG8gZXhhbWluZSB0aGUgY29kZSB3aGVyZSBIVEMgYW5kIFdNSSBhcmUgaW50ZWdyYXRlZC4gSSdtIGdvaW5nIHRvIGZvbGxvdyB0aGUgZnVuY3Rpb24gY2FsbHMgZnJvbSB0aGUgaGlnaGVyIGxldmVsIHByb3RvY29scyB0byB0aGUgcG9pbnQgd2hlcmUgdGhlIGBoaWZfdXNiX3NlbmRgIGZ1bmN0aW9uIGlzIGludm9rZWQuIFRoaXMgd2lsbCBpbGx1bWluYXRlIHRoZSBleGFjdCBkYXRhIHRoYXQncyBiZWluZyBzZW50IG92ZXIgVVNCIGFuZCB0aGUgaW1wbGljYXRpb25zIGZvciBwZXJmb3JtYW5jZSBvciBhbnkgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcy4gSSBuZWVkIHRvIG5vdGUgYW55IHBhcmFtZXRlcnMgdGhhdCBhcmUgcGFzc2VkIGFuZCB1bmRlcnN0YW5kIGhvdyB0aGUgZGF0YSBpcyBiZWluZyBjb25zdHJ1Y3RlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDY3NDIsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQxMjo0ODoxOS42MTg3OTM4NjdaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg5MzY5OTU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIi1cXHUwMDNlaGlmLVxcdTAwM2VzZW5kXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19oc3QuYz0yMT1zdGF0aWMgaW50IGh0Y19pc3N1ZV9zZW5kKHN0cnVjdCBodGNfdGFyZ2V0ICp0YXJnZXQsIHN0cnVjdCBza19idWZmKiBza2IsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2hzdC5jLTM0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfaHN0LmM6MzU6XFx0c3RhdHVzID0gdGFyZ2V0LVxcdTAwM2VoaWYtXFx1MDAzZXNlbmQodGFyZ2V0LVxcdTAwM2VoaWZfZGV2LCBlbmRwb2ludC1cXHUwMDNldWxfcGlwZWlkLCBza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfaHN0LmMtMzYtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDEyOjQ4OjE5LjcwODE3MTgzNloiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo3NDQzNDY4MzAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgVmVyZGljdDogUmVhZHkgdG8gRXhlY3V0ZSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93biBmb3IgdGhlIGZ1enppbmcgcnVuLiBJJ3ZlIGdvdCBhIGxpc3Qgb2YgdGFyZ2V0IGZ1bmN0aW9uczogYGh0Y19pc3N1ZV9zZW5kYCwgYGh0Y19zZW5kYCwgYGF0aDlrX3dtaV9jbWRgLCBgYXRoOWtfcmVnX3Jtd2AsIGBhdGg5a19yZWdfcm13X2J1ZmZlcmAsIGBhdGg5a19yZWdfcm13X2ZsdXNoYCwgYGhpZl91c2Jfc2VuZGAsIGFuZCBgaGlmX3VzYl9zZW5kX3JlZ291dGAuXG5cbkkgbmVlZCB0byBuYWlsIGRvd24gdGhlIHBhcmFtZXRlcnMgZm9yIGBzZXQtcmVzdWx0c2AuIEZpcnN0LCBgV29ydGhGdXp6aW5nYD8gQWJzb2x1dGVseSwgdHJ1ZS4gVGhlIGBSZWFzb25pbmdgIHdpbGwgYmUgYSBjb25jaXNlIGV4cGxhbmF0aW9uLCBhbmQgdGhpcyBpcyB3aGF0IEknbSB0aGlua2luZzogVGhlIHBhdGNoIGludHJvZHVjZXMgbmV3IGVycm9yIGhhbmRsaW5nIHdpdGggYSBgV0FSTl9PTkNFYCBpbiBgaGlmX3VzYl9zZW5kX3JlZ291dGAgdG8gcHJldmVudCBzZW5kaW5nIHBhY2tldHMgb2YgYSBzcGVjaWZpYyBsZW5ndGgsIHR3ZWFrcyBhIHN0cnVjdHVyZSBzaXplIGNhbGN1bGF0aW9uIGluIGBhdGg5a19yZWdfcm13X2J1ZmZlcmAsIGFuZCByZWR1Y2VzIGBNQVhfUk1XX0NNRF9OVU1CRVJgLiAgVGhpcyBkcml2ZXIsIGBhdGg5a19odGNgLCBpcyBhY2Nlc3NpYmxlIHZpYSBlbXVsYXRlZCBVU0IgZGV2aWNlcyAobGlrZSBSYXcgR2FkZ2V0KSwgYW5kIHRoZXNlIGNoYW5nZXMgd2FycmFudCBmdXp6aW5nIHRvIG1ha2Ugc3VyZSBldmVyeXRoaW5nJ3MgY29ycmVjdC5cblxuTmV4dCwgdGhlIGBGb2N1c1N5bWJvbHNgLiAgSSd2ZSBnb3QgYSBzaG9ydGxpc3QgZnJvbSBhYm92ZTogYGhpZl91c2Jfc2VuZF9yZWdvdXRgLCBgYXRoOWtfcmVnX3Jtd19idWZmZXJgLCBgYXRoOWtfcmVnX3Jtd19mbHVzaGAsIGBhdGg5a19yZWdfcm13YCwgYW5kIGBoaWZfdXNiX3NlbmRgLiBUaGV5J3JlIHNwZWNpZmljIGFuZCBub24tdWJpcXVpdG91cywganVzdCBsaWtlIHdlIHdhbnQuXG5cblRoZW4sIHRoZSBgRW5hYmxlQ29uZmlnc2AuICBXZSBuZWVkIHRoZXNlIGtlcm5lbCBjb25maWcgZmxhZ3MsIHdpdGhvdXQgdGhlIGBDT05GSUdfYCBwcmVmaXg6IGBBVEg5S19IVENgLCBgVVNCYCwgYE1BQzgwMjExYCwgYW5kIGBXTEFOX1ZFTkRPUl9BVEhgLiBJJ3ZlIG1hZGUgc3VyZSB0byByZXZpZXcgdGhlIGluc3RydWN0aW9uczogdGhlIGdvYWwgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIG5ldyBidWdzLCBhbmQgdHJpZ2dlcmVkIGFzc2VydGlvbnMuIFRoZSBuZXcgb3IgY2hhbmdlZCBhc3NlcnRpb25zIGFyZSAqa2V5KiDigJMgd2UgbmVlZCB0byBmdXp6IHRob3NlIHRvIG1ha2Ugc3VyZSB0aGV5J3JlIHNvbGlkLiBBbmQgdGhpcyBkcml2ZXIgaXMgcmVhY2hhYmxlIHZpYSBVU0IuIEFsc28sIEkndmUgY29uZmlybWVkIHRoYXQgdGhlIGZvY3VzIHN5bWJvbHMgYXJlIHNwZWNpZmljLlxuXG5MZXQncyBkb3VibGUtY2hlY2sgYWxsIG9mIHRoaXMsIG9uZSBsYXN0IHRpbWUuXG5cbkNvbmZpZ3M6IGBBVEg5S19IVENgLCBgVVNCYCwgYE1BQzgwMjExYCwgYFdMQU5fVkVORE9SX0FUSGAg4oCTIGNoZWNrLlxuXG5TeW1ib2xzOiBgaGlmX3VzYl9zZW5kX3JlZ291dGAsIGBhdGg5a19yZWdfcm13X2J1ZmZlcmAsIGBhdGg5a19yZWdfcm13X2ZsdXNoYCwgYGF0aDlrX3JlZ19ybXdgLCBgaGlmX3VzYl9zZW5kYCDigJMgY2hlY2suXG5cbk15IHJlYXNvbmluZyBzdGlsbCBob2xkczogdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgYFdBUk5fT05DRWAgaW4gYGhpZl91c2Jfc2VuZF9yZWdvdXRgLCBzdHJ1Y3R1cmUgZml4ZXMgaW4gYGF0aDlrX3JlZ19ybXdfYnVmZmVyYCBhbmQgcmVkdWNlcyBgTUFYX1JNV19DTURfTlVNQkVSYC4gVGhlIGRyaXZlciAoYGF0aDlrX2h0Y2ApIGlzIHJlYWNoYWJsZSB0aHJvdWdoIGVtdWxhdGVkIFVTQiwgYW5kIHdlIG5lZWQgdG8gZnV6eiB0aGUgbmV3IGFzc2VydGlvbiBhbmQgbW9kaWZpZWQgYnVmZmVyIGhhbmRsaW5nIHRvIHByZXZlbnQgcmVncmVzc2lvbnMuXG5cbkFscmlnaHQsIGV2ZXJ5dGhpbmcncyBhY2N1cmF0ZSBhbmQgcmVhZHkgdG8gZ28uIFRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NzE3OSwiT3V0cHV0VG9rZW5zIjoyNDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMTI6NDg6MjcuMTUxNjQzNzc4WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE2NDg1MjQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJBVEg5S19IVENcIixcbiAgICBcIlVTQlwiLFxuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIldMQU5fVkVORE9SX0FUSFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImhpZl91c2Jfc2VuZF9yZWdvdXRcIixcbiAgICBcImF0aDlrX3JlZ19ybXdfYnVmZmVyXCIsXG4gICAgXCJhdGg5a19yZWdfcm13X2ZsdXNoXCIsXG4gICAgXCJhdGg5a19yZWdfcm13XCIsXG4gICAgXCJoaWZfdXNiX3NlbmRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgVVNCIHdpcmVsZXNzIGRyaXZlciBhdGg5a19odGMsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgVVNCIGdhZGdldC9kZXZpY2UgZW11bGF0aW9uIGluIHN5emthbGxlci4gVGhlIGNoYW5nZXMgYWRkIGEgbmV3IFdBUk5fT05DRSBydW50aW1lIGFzc2VydGlvbiBhbmQgY2hlY2sgaW4gaGlmX3VzYl9zZW5kX3JlZ291dCB0byBwcmV2ZW50IHNlbmRpbmcgcGFja2V0cyB3aG9zZSBsZW5ndGggaXMgYW4gZXhhY3QgbXVsdGlwbGUgb2YgdGhlIFVTQiBtYXhwYWNrZXQgc2l6ZSwgY29ycmVjdCB0aGUgZWxlbWVudCBzaXplIGNhbGN1bGF0aW9uIGluIGF0aDlrX3JlZ19ybXdfYnVmZmVyIGZyb20gc2l6ZW9mKHN0cnVjdCByZWdpc3Rlcl93cml0ZSkgdG8gc2l6ZW9mKHN0cnVjdCByZWdpc3Rlcl9ybXcpLCBhbmQgcmVkdWNlIE1BWF9STVdfQ01EX05VTUJFUi4gRnV6emluZyBpcyB3YXJyYW50ZWQgdG8gdGVzdCB0aGUgbmV3IGFzc2VydGlvbiBhbmQgYWx0ZXJlZCBSTVcgY29tbWFuZCBiYXRjaGluZyBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJBVEg5S19IVENcIixcbiAgICBcIlVTQlwiLFxuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIldMQU5fVkVORE9SX0FUSFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImhpZl91c2Jfc2VuZF9yZWdvdXRcIixcbiAgICBcImF0aDlrX3JlZ19ybXdfYnVmZmVyXCIsXG4gICAgXCJhdGg5a19yZWdfcm13X2ZsdXNoXCIsXG4gICAgXCJhdGg5a19yZWdfcm13XCIsXG4gICAgXCJoaWZfdXNiX3NlbmRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgVVNCIHdpcmVsZXNzIGRyaXZlciBhdGg5a19odGMsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgVVNCIGdhZGdldC9kZXZpY2UgZW11bGF0aW9uIGluIHN5emthbGxlci4gVGhlIGNoYW5nZXMgYWRkIGEgbmV3IFdBUk5fT05DRSBydW50aW1lIGFzc2VydGlvbiBhbmQgY2hlY2sgaW4gaGlmX3VzYl9zZW5kX3JlZ291dCB0byBwcmV2ZW50IHNlbmRpbmcgcGFja2V0cyB3aG9zZSBsZW5ndGggaXMgYW4gZXhhY3QgbXVsdGlwbGUgb2YgdGhlIFVTQiBtYXhwYWNrZXQgc2l6ZSwgY29ycmVjdCB0aGUgZWxlbWVudCBzaXplIGNhbGN1bGF0aW9uIGluIGF0aDlrX3JlZ19ybXdfYnVmZmVyIGZyb20gc2l6ZW9mKHN0cnVjdCByZWdpc3Rlcl93cml0ZSkgdG8gc2l6ZW9mKHN0cnVjdCByZWdpc3Rlcl9ybXcpLCBhbmQgcmVkdWNlIE1BWF9STVdfQ01EX05VTUJFUi4gRnV6emluZyBpcyB3YXJyYW50ZWQgdG8gdGVzdCB0aGUgbmV3IGFzc2VydGlvbiBhbmQgYWx0ZXJlZCBSTVcgY29tbWFuZCBiYXRjaGluZyBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMTI6NDg6MjcuMjY4MTM5NjM2WiIsIlNlcSI6MjcsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODI3MDgyMzU4NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDEyOjQ4OjI3LjI2ODg1OTc1NloiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjE4MjcwMDk2ODI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRyZXNzZXMgYSBVU0IgY29tbXVuaWNhdGlvbiBpc3N1ZSBpbiB0aGUgYXRoOWsgZHJpdmVyIHdoZXJlIFVTQiBwYWNrZXRzIHRoYXQgYXJlIGV4YWN0IG11bHRpcGxlcyBvZiBlbmRwb2ludCBtYXhwYWNrZXQgc2l6ZSBjYXVzZSBmaXJtd2FyZSBkZWxpdmVyeSBzdGFsbHMuIFRoZSBjaGFuZ2VzIGNvbnNpc3Qgb2Y6XFxuMS4gQWRkaW5nIGEgY2hlY2sgaW4gYGhpZl91c2Jfc2VuZF9yZWdvdXQoKWAgdG8gd2FybiBhbmQgcmVqZWN0IHNrYnMgd2hvc2UgbGVuZ3RoIGlzIGFuIGV4YWN0IG11bHRpcGxlIG9mIHRoZSBlbmRwb2ludCBtYXhwYWNrZXQgc2l6ZS5cXG4yLiBDb3JyZWN0aW5nIHRoZSBidWZmZXIgc2l6ZSBjYWxjdWxhdGlvbiBpbiBgYXRoOWtfcmVnX3Jtd19idWZmZXIoKWAgZnJvbSBgc2l6ZW9mKHN0cnVjdCByZWdpc3Rlcl93cml0ZSlgICg4IGJ5dGVzKSB0byBgc2l6ZW9mKHN0cnVjdCByZWdpc3Rlcl9ybXcpYCAoMTIgYnl0ZXMpLlxcbjMuIExvd2VyaW5nIGBNQVhfUk1XX0NNRF9OVU1CRVJgIGZyb20gMTUgdG8gMTQgaW4gYHdtaS5oYCB0byBhdm9pZCA2NC1ieXRlIGFsaWduZWQgVVNCIHBheWxvYWRzLlxcblxcblJlZ2FyZGluZyBtZW1vcnkgaW5pdGlhbGl6YXRpb246XFxuLSBBbGwgZmllbGRzIChgcmVnYCwgYHNldGAsIGBjbHJgKSBvZiB0aGUgYHN0cnVjdCByZWdpc3Rlcl9ybXdgIGFycmF5IGVsZW1lbnRzIGluIGBwcml2LVxcdTAwM2V3bWktXFx1MDAzZW11bHRpX3Jtd2AgYXJlIGV4cGxpY2l0bHkgaW5pdGlhbGl6ZWQgYmVmb3JlIGJlaW5nIHNlbnQgdmlhIGBhdGg5a193bWlfY21kKClgLlxcbi0gTm8gdXNlci1zcGFjZSBjb3B5IHBhdGhzIG9yIHVuaW5pdGlhbGl6ZWQga2VybmVsIHN0cnVjdHVyZSBmaWVsZHMgYXJlIGV4cG9zZWQgb3IgbW9kaWZpZWQuXFxuLSBObyBicmFuY2ggY29uZGl0aW9ucyByZWx5IG9uIHVuaW5pdGlhbGl6ZWQgdmFsdWVzLlxcblxcblRoZXJlZm9yZSwgdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLCBhbmQgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA0YTg3MmU4NTkxN2Q2NzA0MDA3NTE5MTk3ODI0NmYzOWIwYjk1ZTQ3XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBTZXAgNiAxMjo0NzozMyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jXG5pbmRleCBkMzQ5MWZmMDhlNmVmLi40OTMwM2M3ZTNmZWY0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuY1xuQEAgLTk5LDEwICs5OSwxNyBAQCBzdGF0aWMgdm9pZCBoaWZfdXNiX3JlZ291dF9jYihzdHJ1Y3QgdXJiICp1cmIpXG4gc3RhdGljIGludCBoaWZfdXNiX3NlbmRfcmVnb3V0KHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2RldixcbiBcdFx0XHQgICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiB7XG4rXHR1MTYgbWF4cGFja2V0ID0gdXNiX21heHBhY2tldChoaWZfZGV2LVx1MDAzZXVkZXYsXG4rXHRcdFx0XHQgICAgICB1c2Jfc25kaW50cGlwZShoaWZfZGV2LVx1MDAzZXVkZXYsXG4rXHRcdFx0XHRcdFx0ICAgICBVU0JfUkVHX09VVF9QSVBFKSk7XG4gXHRzdHJ1Y3QgdXJiICp1cmI7XG4gXHRzdHJ1Y3QgY21kX2J1ZiAqY21kO1xuIFx0aW50IHJldCA9IDA7XG4gXG4rXHRpZiAoV0FSTl9PTkNFKG1heHBhY2tldCBcdTAwMjZcdTAwMjYgc2tiLVx1MDAzZWxlbiAlIG1heHBhY2tldCA9PSAwLFxuK1x0XHQgICAgICBcIiV1LWJ5dGUgY29tbWFuZCBmaWxscyB3aG9sZSBVU0IgcGFja2V0c1xcblwiLCBza2ItXHUwMDNlbGVuKSlcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXG4gXHR1cmIgPSB1c2JfYWxsb2NfdXJiKDAsIEdGUF9LRVJORUwpO1xuIFx0aWYgKHVyYiA9PSBOVUxMKVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmNcbmluZGV4IDZkZTc4YWU4NTcyNjguLjBiNDlkMmNjOTlmMGIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuY1xuQEAgLTQwNSw3ICs0MDUsNyBAQCBzdGF0aWMgdm9pZCBhdGg5a19yZWdfcm13X2J1ZmZlcih2b2lkICpod19wcml2LFxuIFx0aWYgKHByaXYtXHUwMDNld21pLVx1MDAzZW11bHRpX3Jtd19pZHggPT0gTUFYX1JNV19DTURfTlVNQkVSKSB7XG4gXHRcdHIgPSBhdGg5a193bWlfY21kKHByaXYtXHUwMDNld21pLCBXTUlfUkVHX1JNV19DTURJRCxcbiBcdFx0XHQgICh1OCAqKSBcdTAwMjZwcml2LVx1MDAzZXdtaS1cdTAwM2VtdWx0aV9ybXcsXG4tXHRcdFx0ICBzaXplb2Yoc3RydWN0IHJlZ2lzdGVyX3dyaXRlKSAqIHByaXYtXHUwMDNld21pLVx1MDAzZW11bHRpX3Jtd19pZHgsXG4rXHRcdFx0ICBzaXplb2Yoc3RydWN0IHJlZ2lzdGVyX3JtdykgKiBwcml2LVx1MDAzZXdtaS1cdTAwM2VtdWx0aV9ybXdfaWR4LFxuIFx0XHRcdCAgKHU4ICopIFx1MDAyNnJzcF9zdGF0dXMsIHNpemVvZihyc3Bfc3RhdHVzKSxcbiBcdFx0XHQgIDEwMCk7XG4gXHRcdGlmICh1bmxpa2VseShyKSkge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaFxuaW5kZXggNWMzYjcxMGI4ZjMxOS4uMjU2ZjQ2MDk4YTZiMSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oXG5AQCAtMTI2LDcgKzEyNiw4IEBAIGVudW0gd21pX2V2ZW50X2lkIHtcbiB9O1xuIFxuICNkZWZpbmUgTUFYX0NNRF9OVU1CRVIgNjJcbi0jZGVmaW5lIE1BWF9STVdfQ01EX05VTUJFUiAxNVxuKy8qIDE1IGVudHJpZXMgbWFrZSAxOTIgYnl0ZXMsIHRocmVlIGZ1bGwgVVNCIHBhY2tldHM6IG5ldmVyIGRlbGl2ZXJlZC4gKi9cbisjZGVmaW5lIE1BWF9STVdfQ01EX05VTUJFUiAxNFxuIFxuIHN0cnVjdCByZWdpc3Rlcl93cml0ZSB7XG4gXHRfX2JlMzIgcmVnO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMTI6NDg6MjcuMjY4ODY0ODM2WiIsIlNlcSI6MjksIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQ4NjY1MjQyMTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgV0xBTiBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIHRoZSBBdGhlcm9zIGF0aDlrIHdpcmVsZXNzIGRyaXZlciwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgVVNCIGhvc3QgaW50ZXJmYWNlIChgaGlmX3VzYi5jYCksIHRoZSBIVEMgZHJpdmVyIGluaXRpYWxpemF0aW9uIChgaHRjX2Rydl9pbml0LmNgKSwgYW5kIHRoZSBXTUkgaGVhZGVyIChgd21pLmhgKS4gTGV0J3MgYnJlYWsgZG93biB0aGVzZSBjaGFuZ2VzIHRvIHNlZSB3aGF0J3MgZ29pbmcgb24uXG5cbkZpcnN0LCBpbiBgaGlmX3VzYl9zZW5kX3JlZ291dGAsIHRoZXJlJ3MgYSBuZXcgc2FuaXR5IGNoZWNrLiBJdCdzIGxvb2tpbmcgYXQgdGhlIFVTQiBwYWNrZXQgc2l6ZSBiZWluZyB1c2VkIGZvciByZWdpc3RlciBvdXRwdXQuIEl0IGFwcGVhcnMgdGhlIGNvZGUgbm93IGNoZWNrcyBgdXNiX21heHBhY2tldGAgdG8gZGV0ZXJtaW5lIHRoZSBtYXhpbXVtIHBhY2tldCBzaXplIGZvciB0aGUgb3V0cHV0IGludGVycnVwdCBwaXBlLiBJZiB0aGUgY29tbWFuZCwgYHNrYi1cdTAwM2VsZW5gLCBwZXJmZWN0bHkgZmlsbHMgYSB3aG9sZSBVU0IgcGFja2V0IChtZWFuaW5nIGl0J3MgYSBtdWx0aXBsZSBvZiBgbWF4cGFja2V0YCkgKndpdGhvdXQqIGEgc2hvcnQgcGFja2V0IG9yIHplcm8tbGVuZ3RoIHBhY2tldCBiZWluZyBzZW50LCB0aGVuIGl0IHJldHVybnMgYC1FSU5WQUxgLiBUaGlzIGlzIGludGVyZXN0aW5nOyBpdCdzIGEgcG90ZW50aWFsIGVycm9yIGNvbmRpdGlvbiBiZWluZyBmbGFnZ2VkLCBwcm9iYWJseSByZWxhdGVkIHRvIHNvbWUgZWRnZSBjYXNlIHdpdGggVVNCIHRyYW5zZmVycyB0aGF0IHdhc24ndCBiZWluZyBoYW5kbGVkIGJlZm9yZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgKndoeSogdGhpcyBmdWxsLXBhY2tldCBjb25kaXRpb24gaXMgcHJvYmxlbWF0aWMuIElzIGl0IGEgcG90ZW50aWFsIGVuZHBvaW50IGJ1ZmZlcmluZyBpc3N1ZSBvciBwZXJoYXBzIGEgc2lnbmFsaW5nIHByb2JsZW0gcmVsYXRlZCB0byBhIHBhcnRpY3VsYXIgaGFyZHdhcmUgcXVpcms/IEkgbmVlZCB0byBkaWcgZGVlcGVyLlxuXG5Nb3Zpbmcgb24gdG8gYGh0Y19kcnZfaW5pdC5jYCwgaXQncyBtb2RpZnlpbmcgdGhlIGBhdGg5a19yZWdfcm13X2J1ZmZlcmAgYWxsb2NhdGlvbi4gVGhlIHNpemUgY2FsY3VsYXRpb24gaXMgY2hhbmdpbmcgZnJvbSB1c2luZyBgc3RydWN0IHJlZ2lzdGVyX3dyaXRlYCB0byBgc3RydWN0IHJlZ2lzdGVyX3Jtd2AuIFRoaXMgaXMgYSBjcnVjaWFsIGRldGFpbC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCB0aGUgZGlmZmVyZW5jZSBpcyBiZXR3ZWVuIHRoZXNlIHR3byBzdHJ1Y3R1cmVzLiBBIHNpemUgY2hhbmdlIGluZGljYXRlcyBlaXRoZXIgYSBkYXRhIHN0cnVjdHVyZSByZXZpc2lvbiwgYSBidWcgZml4LCBvciBhbiBvcHRpbWl6YXRpb24uIElzIHRoZXJlIGEgbmV3IGZpZWxkIG9yIGEgY2hhbmdlZCBmaWVsZCB3aXRoaW4gYHN0cnVjdCByZWdpc3Rlcl9ybXdgIGNvbXBhcmVkIHRvIGBzdHJ1Y3QgcmVnaXN0ZXJfd3JpdGVgPyBJJ2xsIG5lZWQgdG8gY29tcGFyZSB0aGUgZGVmaW5pdGlvbnMgdG8gdW5kZXJzdGFuZCB0aGUgbWVtb3J5IGltcGxpY2F0aW9ucy5cblxuRmluYWxseSwgaW4gYHdtaS5oYCwgdGhlcmUncyBhIHNpbXBsZSBjaGFuZ2UsIGJ1dCBpbXBvcnRhbnQsIGBNQVhfUk1XX0NNRF9OVU1CRVJgIGlzIGJlaW5nIHJlZHVjZWQgZnJvbSAxNSB0byAxNC4gVGhpcyBhbG1vc3QgY2VydGFpbmx5IG1lYW5zIHRoYXQgdGhlcmUncyBhIGxpbWl0YXRpb24gb24gdGhlIG51bWJlciBvZiBSZWdpc3Rlci1Nb2RpZnktV3JpdGUgKFJNVykgY29tbWFuZHMgdGhhdCBjYW4gYmUgcXVldWVkIG9yIHByb2Nlc3NlZC4gSSdtIGN1cmlvdXMgYWJvdXQgdGhlIHJhdGlvbmFsZSBmb3IgdGhpcyBjaGFuZ2UuIERvZXMgaXQgaW5kaWNhdGUgYSBidWcgZml4LCBvciBpcyBpdCByZWxhdGVkIHRvIGhhcmR3YXJlIGNvbnN0cmFpbnRzIG9yIGEgV01JIHByb3RvY29sIGNoYW5nZT8gUGVyaGFwcyB0aGUgY29tbWFuZCBzbG90IGNvdW50IHdhcyBpbmNvcnJlY3QgdG8gYmVnaW4gd2l0aD9cblxuVG8gZ2V0IGEgYmV0dGVyIHBpY3R1cmUsIEknbGwgdXNlIGByZWFkLWZpbGVgIG9yIGBncmVwcGVyYCB0byBleGFtaW5lIGBodGNfZHJ2X2luaXQuY2AgYXJvdW5kIGxpbmUgNDA1ICh3aGVyZSB0aGUgYGF0aDlrX3JlZ19ybXdfYnVmZmVyYCBpcyBhbGxvY2F0ZWQpIGFuZCBgd21pLmhgIHRvIHNlZSB0aG9zZSBzdHJ1Y3R1cmUgZGVmaW5pdGlvbnMgYW5kIHRoZSBzdXJyb3VuZGluZyBjb2RlLiBUaGF0IHNob3VsZCBpbGx1bWluYXRlIHRoZSByZWFzb25zIGZvciB0aGVzZSBjaGFuZ2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzg5LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDEyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMTI6NDg6MzIuMTM1MzkyNjg1WiIsIlNlcSI6MzAsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MDc4OTExOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJyZWdpc3Rlcl9ybXdcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM9MzgzPXN0YXRpYyB2b2lkIGF0aDlrX3JlZ19ybXdfYnVmZmVyKHZvaWQgKmh3X3ByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmMtNDA3LVxcdFxcdFxcdCAgKHU4ICopIFxcdTAwMjZwcml2LVxcdTAwM2V3bWktXFx1MDAzZW11bHRpX3JtdyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM6NDA4OlxcdFxcdFxcdCAgc2l6ZW9mKHN0cnVjdCByZWdpc3Rlcl9ybXcpICogcHJpdi1cXHUwMDNld21pLVxcdTAwM2VtdWx0aV9ybXdfaWR4LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy00MDktXFx0XFx0XFx0ICAodTggKikgXFx1MDAyNnJzcF9zdGF0dXMsIHNpemVvZihyc3Bfc3RhdHVzKSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYz00MjI9c3RhdGljIHZvaWQgYXRoOWtfcmVnX3Jtd19mbHVzaCh2b2lkICpod19wcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jLTQzOS1cXHRcXHRcXHQgICh1OCAqKSBcXHUwMDI2cHJpdi1cXHUwMDNld21pLVxcdTAwM2VtdWx0aV9ybXcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jOjQ0MDpcXHRcXHRcXHQgIHNpemVvZihzdHJ1Y3QgcmVnaXN0ZXJfcm13KSAqIHByaXYtXFx1MDAzZXdtaS1cXHUwMDNlbXVsdGlfcm13X2lkeCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmMtNDQxLVxcdFxcdFxcdCAgKHU4ICopIFxcdTAwMjZyc3Bfc3RhdHVzLCBzaXplb2YocnNwX3N0YXR1cyksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM9NDY2PXN0YXRpYyB2b2lkIGF0aDlrX3JlZ19ybXdfc2luZ2xlKHZvaWQgKmh3X3ByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmMtNDcxLVxcdHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdiA9IGNvbW1vbi1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM6NDcyOlxcdHN0cnVjdCByZWdpc3Rlcl9ybXcgYnVmLCBidWZfcmV0O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy00NzMtXFx0aW50IHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaD0xMzI9c3RydWN0IHJlZ2lzdGVyX3dyaXRlIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaC0xMzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oOjEzNzpzdHJ1Y3QgcmVnaXN0ZXJfcm13IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmgtMTM4LVxcdF9fYmUzMiByZWc7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg9MTQ5PXN0cnVjdCB3bWkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oLTE3NS1cXHRhdG9taWNfdCBtX3Jtd19jbnQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oOjE3NjpcXHRzdHJ1Y3QgcmVnaXN0ZXJfcm13IG11bHRpX3Jtd1tNQVhfUk1XX0NNRF9OVU1CRVJdO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaC0xNzctXFx0dTMyIG11bHRpX3Jtd19pZHg7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDEyOjQ4OjMyLjIxNjE5MzE2NFoiLCJTZXEiOjMxLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxNzkzMjc4Njk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHNvbWUgYGF0aDlrYCBudWFuY2VzLCBzcGVjaWZpY2FsbHkgYXJvdW5kIHRoZSBIVEMgZHJpdmVyIGluaXRpYWxpemF0aW9uLiBNeSBmb2N1cyBpcyBvbiB1bmRlcnN0YW5kaW5nIHRoZSByZWdpc3RlciBtYW5pcHVsYXRpb24gcm91dGluZXMsIHNwZWNpZmljYWxseSBgYXRoOWtfcmVnX3Jtd19idWZmZXJgIGFuZCBgYXRoOWtfcmVnX3Jtd19mbHVzaGAuIEkgc3VzcGVjdCB0aGV5IHBsYXkgYSBrZXkgcm9sZSBpbiBob3cgdGhlIGRyaXZlciBoYW5kbGVzIHJlZ2lzdGVyIHJlYWRzLCBtb2RpZmljYXRpb25zLCBhbmQgd3JpdGUtYmFja3MsIGxpa2VseSBkdXJpbmcgaGFyZHdhcmUgc2V0dXAgYW5kIGluaXRpYWxpemF0aW9uLiBJIHNob3VsZCBmaW5kIHRoZXNlIHdpdGhpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jYC4gVW5kZXJzdGFuZGluZyB0aGVpciBwdXJwb3NlIGlzIGNydWNpYWwgdG8gZW5zdXJpbmcgcHJvcGVyIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24gYW5kIHByZXZlbnRpbmcgcG90ZW50aWFsIHJlZ2lzdGVyIGNvcnJ1cHRpb24gd2hpY2gsIGluIHR1cm4sIGlzIGtleSB0byBvdmVyYWxsIHBlcmZvcm1hbmNlIGFuZCBzdGFiaWxpdHkuIExldCdzIHNlZSB3aGF0IHRob3NlIGZ1bmN0aW9ucyBhcmUgZG9pbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ2MTUsIk91dHB1dFRva2VucyI6NDgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQxMjo0ODozNC4wMDk0NzcyMDlaIiwiU2VxIjozMiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMxODAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAzODAsXG4gIFwiTGluZUNvdW50XCI6IDcwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAzODA6XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2V3bWktXFx1MDAzZW11bHRpX3dyaXRlX211dGV4KTtcXG4gMzgxOlxcdH1cXG4gMzgyOlxcdFxcbiAzODM6XFx0c3RhdGljIHZvaWQgYXRoOWtfcmVnX3Jtd19idWZmZXIodm9pZCAqaHdfcHJpdixcXG4gMzg0OlxcdFxcdFxcdFxcdFxcdCB1MzIgcmVnX29mZnNldCwgdTMyIHNldCwgdTMyIGNscilcXG4gMzg1OlxcdHtcXG4gMzg2OlxcdFxcdHN0cnVjdCBhdGhfaHcgKmFoID0gaHdfcHJpdjtcXG4gMzg3OlxcdFxcdHN0cnVjdCBhdGhfY29tbW9uICpjb21tb24gPSBhdGg5a19od19jb21tb24oYWgpO1xcbiAzODg6XFx0XFx0c3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2ID0gY29tbW9uLVxcdTAwM2Vwcml2O1xcbiAzODk6XFx0XFx0dTMyIHJzcF9zdGF0dXM7XFxuIDM5MDpcXHRcXHRpbnQgcjtcXG4gMzkxOlxcdFxcbiAzOTI6XFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2cHJpdi1cXHUwMDNld21pLVxcdTAwM2VtdWx0aV9ybXdfbXV0ZXgpO1xcbiAzOTM6XFx0XFxuIDM5NDpcXHRcXHQvKiBTdG9yZSB0aGUgcmVnaXN0ZXIvdmFsdWUgKi9cXG4gMzk1OlxcdFxcdHByaXYtXFx1MDAzZXdtaS1cXHUwMDNlbXVsdGlfcm13W3ByaXYtXFx1MDAzZXdtaS1cXHUwMDNlbXVsdGlfcm13X2lkeF0ucmVnID1cXG4gMzk2OlxcdFxcdFxcdGNwdV90b19iZTMyKHJlZ19vZmZzZXQpO1xcbiAzOTc6XFx0XFx0cHJpdi1cXHUwMDNld21pLVxcdTAwM2VtdWx0aV9ybXdbcHJpdi1cXHUwMDNld21pLVxcdTAwM2VtdWx0aV9ybXdfaWR4XS5zZXQgPVxcbiAzOTg6XFx0XFx0XFx0Y3B1X3RvX2JlMzIoc2V0KTtcXG4gMzk5OlxcdFxcdHByaXYtXFx1MDAzZXdtaS1cXHUwMDNlbXVsdGlfcm13W3ByaXYtXFx1MDAzZXdtaS1cXHUwMDNlbXVsdGlfcm13X2lkeF0uY2xyID1cXG4gNDAwOlxcdFxcdFxcdGNwdV90b19iZTMyKGNscik7XFxuIDQwMTpcXHRcXG4gNDAyOlxcdFxcdHByaXYtXFx1MDAzZXdtaS1cXHUwMDNlbXVsdGlfcm13X2lkeCsrO1xcbiA0MDM6XFx0XFxuIDQwNDpcXHRcXHQvKiBJZiB0aGUgYnVmZmVyIGlzIGZ1bGwsIHNlbmQgaXQgb3V0LiAqL1xcbiA0MDU6XFx0XFx0aWYgKHByaXYtXFx1MDAzZXdtaS1cXHUwMDNlbXVsdGlfcm13X2lkeCA9PSBNQVhfUk1XX0NNRF9OVU1CRVIpIHtcXG4gNDA2OlxcdFxcdFxcdHIgPSBhdGg5a193bWlfY21kKHByaXYtXFx1MDAzZXdtaSwgV01JX1JFR19STVdfQ01ESUQsXFxuIDQwNzpcXHRcXHRcXHRcXHQgICh1OCAqKSBcXHUwMDI2cHJpdi1cXHUwMDNld21pLVxcdTAwM2VtdWx0aV9ybXcsXFxuIDQwODpcXHRcXHRcXHRcXHQgIHNpemVvZihzdHJ1Y3QgcmVnaXN0ZXJfcm13KSAqIHByaXYtXFx1MDAzZXdtaS1cXHUwMDNlbXVsdGlfcm13X2lkeCxcXG4gNDA5OlxcdFxcdFxcdFxcdCAgKHU4ICopIFxcdTAwMjZyc3Bfc3RhdHVzLCBzaXplb2YocnNwX3N0YXR1cyksXFxuIDQxMDpcXHRcXHRcXHRcXHQgIDEwMCk7XFxuIDQxMTpcXHRcXHRcXHRpZiAodW5saWtlbHkocikpIHtcXG4gNDEyOlxcdFxcdFxcdFxcdGF0aF9kYmcoY29tbW9uLCBXTUksXFxuIDQxMzpcXHRcXHRcXHRcXHRcXHRcXFwiUkVHSVNURVIgUk1XIEZBSUxFRCwgbXVsdGkgbGVuOiAlZFxcXFxuXFxcIixcXG4gNDE0OlxcdFxcdFxcdFxcdFxcdHByaXYtXFx1MDAzZXdtaS1cXHUwMDNlbXVsdGlfcm13X2lkeCk7XFxuIDQxNTpcXHRcXHRcXHR9XFxuIDQxNjpcXHRcXHRcXHRwcml2LVxcdTAwM2V3bWktXFx1MDAzZW11bHRpX3Jtd19pZHggPSAwO1xcbiA0MTc6XFx0XFx0fVxcbiA0MTg6XFx0XFxuIDQxOTpcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnByaXYtXFx1MDAzZXdtaS1cXHUwMDNlbXVsdGlfcm13X211dGV4KTtcXG4gNDIwOlxcdH1cXG4gNDIxOlxcdFxcbiA0MjI6XFx0c3RhdGljIHZvaWQgYXRoOWtfcmVnX3Jtd19mbHVzaCh2b2lkICpod19wcml2KVxcbiA0MjM6XFx0e1xcbiA0MjQ6XFx0XFx0c3RydWN0IGF0aF9odyAqYWggPSBod19wcml2O1xcbiA0MjU6XFx0XFx0c3RydWN0IGF0aF9jb21tb24gKmNvbW1vbiA9IGF0aDlrX2h3X2NvbW1vbihhaCk7XFxuIDQyNjpcXHRcXHRzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYgPSBjb21tb24tXFx1MDAzZXByaXY7XFxuIDQyNzpcXHRcXHR1MzIgcnNwX3N0YXR1cztcXG4gNDI4OlxcdFxcdGludCByO1xcbiA0Mjk6XFx0XFxuIDQzMDpcXHRcXHRpZiAodGVzdF9iaXQoSFRDX0ZXRkxBR19OT19STVcsIFxcdTAwMjZwcml2LVxcdTAwM2Vmd19mbGFncykpXFxuIDQzMTpcXHRcXHRcXHRyZXR1cm47XFxuIDQzMjpcXHRcXG4gNDMzOlxcdFxcdGF0b21pY19kZWMoXFx1MDAyNnByaXYtXFx1MDAzZXdtaS1cXHUwMDNlbV9ybXdfY250KTtcXG4gNDM0OlxcdFxcbiA0MzU6XFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2cHJpdi1cXHUwMDNld21pLVxcdTAwM2VtdWx0aV9ybXdfbXV0ZXgpO1xcbiA0MzY6XFx0XFxuIDQzNzpcXHRcXHRpZiAocHJpdi1cXHUwMDNld21pLVxcdTAwM2VtdWx0aV9ybXdfaWR4KSB7XFxuIDQzODpcXHRcXHRcXHRyID0gYXRoOWtfd21pX2NtZChwcml2LVxcdTAwM2V3bWksIFdNSV9SRUdfUk1XX0NNRElELFxcbiA0Mzk6XFx0XFx0XFx0XFx0ICAodTggKikgXFx1MDAyNnByaXYtXFx1MDAzZXdtaS1cXHUwMDNlbXVsdGlfcm13LFxcbiA0NDA6XFx0XFx0XFx0XFx0ICBzaXplb2Yoc3RydWN0IHJlZ2lzdGVyX3JtdykgKiBwcml2LVxcdTAwM2V3bWktXFx1MDAzZW11bHRpX3Jtd19pZHgsXFxuIDQ0MTpcXHRcXHRcXHRcXHQgICh1OCAqKSBcXHUwMDI2cnNwX3N0YXR1cywgc2l6ZW9mKHJzcF9zdGF0dXMpLFxcbiA0NDI6XFx0XFx0XFx0XFx0ICAxMDApO1xcbiA0NDM6XFx0XFx0XFx0aWYgKHVubGlrZWx5KHIpKSB7XFxuIDQ0NDpcXHRcXHRcXHRcXHRhdGhfZGJnKGNvbW1vbiwgV01JLFxcbiA0NDU6XFx0XFx0XFx0XFx0XFx0XFxcIlJFR0lTVEVSIFJNVyBGQUlMRUQsIG11bHRpIGxlbjogJWRcXFxcblxcXCIsXFxuIDQ0NjpcXHRcXHRcXHRcXHRcXHRwcml2LVxcdTAwM2V3bWktXFx1MDAzZW11bHRpX3Jtd19pZHgpO1xcbiA0NDc6XFx0XFx0XFx0fVxcbiA0NDg6XFx0XFx0XFx0cHJpdi1cXHUwMDNld21pLVxcdTAwM2VtdWx0aV9ybXdfaWR4ID0gMDtcXG4gNDQ5OlxcdFxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMTI6NDg6MzQuMDA5NjEyMjk4WiIsIlNlcSI6MzMsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM5MzYxNzAzNDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBhdGg5ayBSZWdpc3RlciBXcml0ZS9Nb2RpZnkgUHJvYmxlbSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gSW4gYGF0aDlrX3JlZ19ybXdfYnVmZmVyYCwgYmVmb3JlIHRoaXMgcGF0Y2gsIHdlIHdlcmUgcGFzc2luZyBgc2l6ZW9mKHN0cnVjdCByZWdpc3Rlcl93cml0ZSkgKiBwcml2LVx1MDAzZXdtaS1cdTAwM2VtdWx0aV9ybXdfaWR4YC4gIEEgYHN0cnVjdCByZWdpc3Rlcl93cml0ZWAgaXMgOCBieXRlcyDigJMganVzdCBgcmVnYCBhbmQgYHZhbGAuICBCdXQsIHRoZSBjb3JyZXNwb25kaW5nIGBhdGg5a19yZWdfcm13X2ZsdXNoYCB3YXMgYWxyZWFkeSB1c2luZyB0aGUgY29ycmVjdCBzaXplLCBgc2l6ZW9mKHN0cnVjdCByZWdpc3Rlcl9ybXcpICogcHJpdi1cdTAwM2V3bWktXHUwMDNlbXVsdGlfcm13X2lkeGAsIHdoaWNoIGlzIDEyIGJ5dGVzIGJlY2F1c2UgaXQgaW5jbHVkZXMgYHJlZ2AsIGBzZXRgLCBhbmQgYGNscmAuICBTbywgaW4gdGhlIGJ1ZmZlciBhbGxvY2F0aW9uLCB3ZSB3ZXJlIGNhbGN1bGF0aW5nIHRoZSBidWZmZXIgc2l6ZSBpbmNvcnJlY3RseTogOCBieXRlcyB0aW1lcyBzb21lIGluZGV4LCB3aGVuIHdlIG5lZWRlZCAxMiBieXRlcyB0aW1lcyB0aGUgaW5kZXguICBGb3IgZXhhbXBsZSwgaWYgYG11bHRpX3Jtd19pZHhgIGlzIDE1LCB3ZSB3ZXJlIGFsbG9jYXRpbmcgMTIwIGJ5dGVzIGluc3RlYWQgb2YgMTgwLlxuXG5Ob3csIHdhaXQgYSBtaW51dGUuLi4gd2h5IHRoZSBjaGFuZ2UgaW4gYE1BWF9STVdfQ01EX05VTUJFUmAgZnJvbSAxNSB0byAxND8gIEZpZnRlZW4gcmVnaXN0ZXIgY29tbWFuZHMgd291bGQgcmVzdWx0IGluIDE1ICogMTIgYnl0ZXMgPSAxODAgYnl0ZXMuICBBZGQgdGhlIEhUQy9XTUkgaGVhZGVycyBhbmQgaXQgc2hvdWxkIGJlIDE5MiBieXRlcywgd2hpY2ggaXMgZXhhY3RseSB0aHJlZSB0aW1lcyB0aGUgdHlwaWNhbCA2NC1ieXRlIFVTQiBwYWNrZXQgc2l6ZS4gIFdpdGggMTQgY29tbWFuZHMsIHdlIHdvdWxkIGhhdmUgMTY4IGJ5dGVzLCBhbmQgbWF5YmUgYSBwYXJ0aWFsIHBhY2tldD8gVVNCIGJ1bGsgYW5kIGludGVycnVwdCB0cmFuc2ZlcnMgdGhhdCBhcmUgKmV4YWN0KiBtdWx0aXBsZXMgb2YgdGhlIGBtYXhwYWNrZXRgIHNpemUgKHdpdGhvdXQgYSBaTFAgLSBaZXJvIExlbmd0aCBQYWNrZXQpIGNhbiBwb3RlbnRpYWxseSBoYW5nLCBhbmQgdGhlIGRhdGEgbWlnaHQgbmV2ZXIgYmUgZGVsaXZlcmVkIGlmIHRoZSBmaXJtd2FyZSBleHBlY3RzIGEgc2hvcnRlciBwYWNrZXQuIEFuZCBJJ20gcmVjYWxsaW5nIHRoYXQgYGhpZl91c2Jfc2VuZF9yZWdvdXRgIGFjdHVhbGx5ICp3YXJucyogaWYgYHNrYi1cdTAwM2VsZW4gJSBtYXhwYWNrZXQgPT0gMGAuIFdlIG5lZWQgdG8gaW52ZXN0aWdhdGUgYGhpZl91c2IuY2AgYXJvdW5kIGBoaWZfdXNiX3NlbmRfcmVnb3V0YCB0byBjb25maXJtIHRoaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxMjAsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNzQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQxMjo0ODozNy45NDU3ODYzNTJaIiwiU2VxIjozNCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM1MzEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmNcIixcbiAgXCJGaXJzdExpbmVcIjogOTUsXG4gIFwiTGluZUNvdW50XCI6IDQ1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgOTU6XFx0XFx0a2ZyZWVfc2tiKGNtZC1cXHUwMDNlc2tiKTtcXG4gIDk2OlxcdFxcdGtmcmVlKGNtZCk7XFxuICA5NzpcXHR9XFxuICA5ODpcXHRcXG4gIDk5OlxcdHN0YXRpYyBpbnQgaGlmX3VzYl9zZW5kX3JlZ291dChzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYsXFxuIDEwMDpcXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4gMTAxOlxcdHtcXG4gMTAyOlxcdFxcdHUxNiBtYXhwYWNrZXQgPSB1c2JfbWF4cGFja2V0KGhpZl9kZXYtXFx1MDAzZXVkZXYsXFxuIDEwMzpcXHRcXHRcXHRcXHRcXHQgICAgICB1c2Jfc25kaW50cGlwZShoaWZfZGV2LVxcdTAwM2V1ZGV2LFxcbiAxMDQ6XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgICBVU0JfUkVHX09VVF9QSVBFKSk7XFxuIDEwNTpcXHRcXHRzdHJ1Y3QgdXJiICp1cmI7XFxuIDEwNjpcXHRcXHRzdHJ1Y3QgY21kX2J1ZiAqY21kO1xcbiAxMDc6XFx0XFx0aW50IHJldCA9IDA7XFxuIDEwODpcXHRcXG4gMTA5OlxcdFxcdGlmIChXQVJOX09OQ0UobWF4cGFja2V0IFxcdTAwMjZcXHUwMDI2IHNrYi1cXHUwMDNlbGVuICUgbWF4cGFja2V0ID09IDAsXFxuIDExMDpcXHRcXHRcXHQgICAgICBcXFwiJXUtYnl0ZSBjb21tYW5kIGZpbGxzIHdob2xlIFVTQiBwYWNrZXRzXFxcXG5cXFwiLCBza2ItXFx1MDAzZWxlbikpXFxuIDExMTpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gMTEyOlxcdFxcbiAxMTM6XFx0XFx0dXJiID0gdXNiX2FsbG9jX3VyYigwLCBHRlBfS0VSTkVMKTtcXG4gMTE0OlxcdFxcdGlmICh1cmIgPT0gTlVMTClcXG4gMTE1OlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiAxMTY6XFx0XFxuIDExNzpcXHRcXHRjbWQgPSBremFsbG9jX29iaigqY21kKTtcXG4gMTE4OlxcdFxcdGlmIChjbWQgPT0gTlVMTCkge1xcbiAxMTk6XFx0XFx0XFx0dXNiX2ZyZWVfdXJiKHVyYik7XFxuIDEyMDpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gMTIxOlxcdFxcdH1cXG4gMTIyOlxcdFxcbiAxMjM6XFx0XFx0Y21kLVxcdTAwM2Vza2IgPSBza2I7XFxuIDEyNDpcXHRcXHRjbWQtXFx1MDAzZWhpZl9kZXYgPSBoaWZfZGV2O1xcbiAxMjU6XFx0XFxuIDEyNjpcXHRcXHR1c2JfZmlsbF9pbnRfdXJiKHVyYiwgaGlmX2Rldi1cXHUwMDNldWRldixcXG4gMTI3OlxcdFxcdFxcdFxcdCB1c2Jfc25kaW50cGlwZShoaWZfZGV2LVxcdTAwM2V1ZGV2LCBVU0JfUkVHX09VVF9QSVBFKSxcXG4gMTI4OlxcdFxcdFxcdFxcdCBza2ItXFx1MDAzZWRhdGEsIHNrYi1cXHUwMDNlbGVuLFxcbiAxMjk6XFx0XFx0XFx0XFx0IGhpZl91c2JfcmVnb3V0X2NiLCBjbWQsIDEpO1xcbiAxMzA6XFx0XFxuIDEzMTpcXHRcXHR1c2JfYW5jaG9yX3VyYih1cmIsIFxcdTAwMjZoaWZfZGV2LVxcdTAwM2VyZWdvdXRfc3VibWl0dGVkKTtcXG4gMTMyOlxcdFxcdHJldCA9IHVzYl9zdWJtaXRfdXJiKHVyYiwgR0ZQX0tFUk5FTCk7XFxuIDEzMzpcXHRcXHRpZiAocmV0KSB7XFxuIDEzNDpcXHRcXHRcXHR1c2JfdW5hbmNob3JfdXJiKHVyYik7XFxuIDEzNTpcXHRcXHRcXHRrZnJlZShjbWQpO1xcbiAxMzY6XFx0XFx0fVxcbiAxMzc6XFx0XFx0dXNiX2ZyZWVfdXJiKHVyYik7XFxuIDEzODpcXHRcXG4gMTM5OlxcdFxcdHJldHVybiByZXQ7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDEyOjQ4OjM3Ljk0NTkyMzg5MloiLCJTZXEiOjM1LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo3NTkzMDAzMjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKktNU0FOIEFzc2Vzc21lbnQ6IE5vIE5lZWQgSGVyZSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIGRvd24gdGhpcyBwYXRjaCBhbmQgc2VlIGlmIHdlIG5lZWQgdG8gYnJpbmcgaW4gS01TQU4uIEZpcnN0LCB0aGUgY29yZSBvZiB0aGUgY2hhbmdlczpcblxuMS4gICoqYGF0aDlrX3JlZ19ybXdfYnVmZmVyYCBGaXg6KiogVGhpcyBpcyB0aGUgbW9zdCBjcnVjaWFsIHBhcnQuIEl0IGxvb2tzIGxpa2Ugd2Ugd2VyZSBhY2NpZGVudGFsbHkgc2VuZGluZyBhIHRydW5jYXRlZCBzdHJ1Y3R1cmUgc2l6ZSAoYHNpemVvZihzdHJ1Y3QgcmVnaXN0ZXJfd3JpdGUpYCkgdG8gYGF0aDlrX3dtaV9jbWQoKWAgaW5zdGVhZCBvZiB0aGUgY29ycmVjdCBzaXplIChgc2l6ZW9mKHN0cnVjdCByZWdpc3Rlcl9ybXcpYCkgZm9yIHRoZSBgbXVsdGlfcm13YCBhcnJheS4gVGhlIGNvZGUgcG9wdWxhdGVzIHRoZSBgbXVsdGlfcm13YCBhcnJheSAob2YgYHN0cnVjdCByZWdpc3Rlcl9ybXdgIGVsZW1lbnRzKSwgc3BlY2lmaWNhbGx5IGZpbGxpbmcgdGhlIGByZWdgLCBgc2V0YCwgYW5kIGBjbHJgIGZpZWxkcyBmb3IgZWFjaCBlbnRyeS4gVGhlIGNvcnJlY3Rpb24gbm93IGVuc3VyZXMgdGhhdCB3ZSBzZW5kIHRoZSBjb21wbGV0ZSwgaW5pdGlhbGl6ZWQgZGF0YS4gQmVmb3JlLCB3ZSB3ZXJlIGVmZmVjdGl2ZWx5IHRydW5jYXRpbmcgZGF0YSB0byA4IGJ5dGVzLCBidXQgc2VuZGluZyB0aGUgZGF0YSBzaXplIGFzIHRob3VnaCBpdCB3ZXJlIDEyIGJ5dGVzLlxuXG4yLiAgKipgTUFYX1JNV19DTURfTlVNQkVSYCBBZGp1c3RtZW50OioqIFJlZHVjaW5nIHRoaXMgY29uc3RhbnQgZnJvbSAxNSB0byAxNCBzZWVtcyB0byBiZSBhIFVTQi1zcGVjaWZpYyBvcHRpbWl6YXRpb24uIEl0J3MgZG9uZSB0byBwcmV2ZW50IFVTQiBwYWNrZXQgbGVuZ3RoIGZyb20gYmVpbmcgYSBtdWx0aXBsZSBvZiA2NCBieXRlcywgcHJldmVudGluZyBlbmRwb2ludCBoYW5nLiBUaGlzIHByaW1hcmlseSBhZmZlY3RzIHRoZSBzaXplIG9mIHRoZSBhcnJheSwgYG11bHRpX3Jtd2AuXG5cbjMuICAqKmBoaWZfdXNiX3NlbmRfcmVnb3V0YCBDaGVjazoqKiBUaGlzIGFkZHMgYSBzaW1wbGUgbGVuZ3RoIGNoZWNrLCByZXR1cm5pbmcgYC1FSU5WQUxgIGlmIGBza2ItXHUwMDNlbGVuYCAodGhlIGluaXRpYWxpemVkIGxlbmd0aCBvZiB0aGUgc2tiKSBpcyBhIG11bHRpcGxlIG9mIGBtYXhwYWNrZXRgLlxuXG5Ob3csIGRvZXMgYW55IG9mIHRoaXMgc2NyZWFtIFwiS01TQU4gcmlza1wiPyBMZXQncyBnbyB0aHJvdWdoIHRoZSBjaGVja2xpc3Q6XG5cbiogICAqKlN0cnVjdHVyZSBFeHBvc3VyZSB0byBVc2Vyc3BhY2U6KiogTm8uIFRoaXMgaXMgaW50ZXJuYWwgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIHRoZSBkcml2ZXIgYW5kIHRoZSBVU0IgaGFyZHdhcmUvZmlybXdhcmUuIE5vIGRhdGEgaXMgYmVpbmcgbGVha2VkIHRvIHVzZXJzcGFjZS5cbiogICAqKlVuaW5pdGlhbGl6ZWQgVmFyaWFibGUgRGVwZW5kZW5jZToqKiBOb3BlLiBgbWF4cGFja2V0YCBpcyB0aGUgcmVzdWx0IG9mIGB1c2JfbWF4cGFja2V0KClgLCBhbmQgYHNrYi1cdTAwM2VsZW5gIGNvbWVzIGZyb20gdGhlIGBza2JgJ3MgaW5pdGlhbGl6ZWQgbGVuZ3RoLiBUaGVzZSBhcmUgY2hlY2tlZCBhbmQgd2VsbC1kZWZpbmVkLlxuKiAgICoqQ29tcGxleCBEYXRhIFN0cnVjdHVyZSBNaXNoYW5kbGluZzoqKiBOby4gVGhlIGBtdWx0aV9ybXdgIGFycmF5IGlzIGFsbG9jYXRlZCBhbmQgbWV0aWN1bG91c2x5IHBvcHVsYXRlZC4gQWxsIGZpZWxkcyB3aXRoaW4gdGhlIGFycmF5IGVsZW1lbnRzIGFyZSBpbml0aWFsaXplZCBiZWZvcmUgYmVpbmcgc2VudC5cbiogICAqKkJvdW5kcyBDaGVjayBQcm9ibGVtczoqKiBUaGUgc2l6ZSBjb3JyZWN0aW9uIGluIGBhdGg5a19yZWdfcm13X2J1ZmZlcmAgKmZpeGVzKiBhIHBvdGVudGlhbCBpc3N1ZSwgZW5zdXJpbmcgd2UncmUgc2VuZGluZyB0aGUgY29ycmVjdCBzaXplIG9mIHRoZSBmdWxseSBpbml0aWFsaXplZCBkYXRhIGluIGBtdWx0aV9ybXdgLiBXZSAqd2VyZW4ndCogcmVhZGluZyB1bmluaXRpYWxpemVkIG1lbW9yeSwgd2Ugd2VyZSAqdHJ1bmNhdGluZyogdGhlIHNpemUgc2VudC5cblxuVGhlcmVmb3JlLCBnaXZlbiB0aGUgbmF0dXJlIG9mIHRoZSBjaGFuZ2VzLCBwYXJ0aWN1bGFybHkgdGhhdCB0aGV5IGFyZSB3aXRoaW4gaW50ZXJuYWwgZHJpdmVyIG9wZXJhdGlvbnMgYW5kIHRoZSBzdHJ1Y3R1cmVzIGFyZSBwcm9wZXJseSBpbml0aWFsaXplZCwgSSBkb24ndCBzZWUgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgbGVha3MgdGhhdCBLTVNBTiB3b3VsZCBzcGVjaWZpY2FsbHkgY2F0Y2guIFN0YW5kYXJkIGRldGVjdG9ycyBzaG91bGQgYmUgYWRlcXVhdGUgaGVyZS4gU28sIGxldCdzIHNldCBgTmVlZHNLTVNBTj1mYWxzZWAgd2l0aCB0aGUgcmVhc29uaW5nIHRoYXQgdGhlIHBhdGNoIGZpeGVzIGEgc2l6ZSBkaXNjcmVwYW5jeSB0byBwYXNzIGZ1bGx5IGluaXRpYWxpemVkIHN0cnVjdHMsIGFuZCBhbHRlcnMgc2l6ZXMgc2FmZWx5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NjU3LCJPdXRwdXRUb2tlbnMiOjMwMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgxNywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDEyOjQ4OjQ1LjUzODkzMTc1MloiLCJTZXEiOjM2LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5NDMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgVVNCIGNvbW11bmljYXRpb24gaXNzdWUgaW4gdGhlIGF0aDlrIGRyaXZlciB3aGVyZSBVU0IgcGFja2V0cyB0aGF0IGFyZSBleGFjdCBtdWx0aXBsZXMgb2YgZW5kcG9pbnQgbWF4cGFja2V0IHNpemUgY2F1c2UgZmlybXdhcmUgZGVsaXZlcnkgc3RhbGxzLiBUaGUgY2hhbmdlcyBjb25zaXN0IG9mOlxcbjEuIEFkZGluZyBhIGNoZWNrIGluIGBoaWZfdXNiX3NlbmRfcmVnb3V0KClgIHRvIHdhcm4gYW5kIHJlamVjdCBza2JzIHdob3NlIGxlbmd0aCBpcyBhbiBleGFjdCBtdWx0aXBsZSBvZiB0aGUgZW5kcG9pbnQgbWF4cGFja2V0IHNpemUuXFxuMi4gQ29ycmVjdGluZyB0aGUgYnVmZmVyIHNpemUgY2FsY3VsYXRpb24gaW4gYGF0aDlrX3JlZ19ybXdfYnVmZmVyKClgIGZyb20gYHNpemVvZihzdHJ1Y3QgcmVnaXN0ZXJfd3JpdGUpYCAoOCBieXRlcykgdG8gYHNpemVvZihzdHJ1Y3QgcmVnaXN0ZXJfcm13KWAgKDEyIGJ5dGVzKS5cXG4zLiBMb3dlcmluZyBgTUFYX1JNV19DTURfTlVNQkVSYCBmcm9tIDE1IHRvIDE0IGluIGB3bWkuaGAgdG8gYXZvaWQgNjQtYnl0ZSBhbGlnbmVkIFVTQiBwYXlsb2Fkcy5cXG5cXG5SZWdhcmRpbmcgbWVtb3J5IGluaXRpYWxpemF0aW9uOlxcbi0gQWxsIGZpZWxkcyAoYHJlZ2AsIGBzZXRgLCBgY2xyYCkgb2YgdGhlIGBzdHJ1Y3QgcmVnaXN0ZXJfcm13YCBhcnJheSBlbGVtZW50cyBpbiBgcHJpdi1cXHUwMDNld21pLVxcdTAwM2VtdWx0aV9ybXdgIGFyZSBleHBsaWNpdGx5IGluaXRpYWxpemVkIGJlZm9yZSBiZWluZyBzZW50IHZpYSBgYXRoOWtfd21pX2NtZCgpYC5cXG4tIE5vIHVzZXItc3BhY2UgY29weSBwYXRocyBvciB1bmluaXRpYWxpemVkIGtlcm5lbCBzdHJ1Y3R1cmUgZmllbGRzIGFyZSBleHBvc2VkIG9yIG1vZGlmaWVkLlxcbi0gTm8gYnJhbmNoIGNvbmRpdGlvbnMgcmVseSBvbiB1bmluaXRpYWxpemVkIHZhbHVlcy5cXG5cXG5UaGVyZWZvcmUsIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcywgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgVVNCIGNvbW11bmljYXRpb24gaXNzdWUgaW4gdGhlIGF0aDlrIGRyaXZlciB3aGVyZSBVU0IgcGFja2V0cyB0aGF0IGFyZSBleGFjdCBtdWx0aXBsZXMgb2YgZW5kcG9pbnQgbWF4cGFja2V0IHNpemUgY2F1c2UgZmlybXdhcmUgZGVsaXZlcnkgc3RhbGxzLiBUaGUgY2hhbmdlcyBjb25zaXN0IG9mOlxcbjEuIEFkZGluZyBhIGNoZWNrIGluIGBoaWZfdXNiX3NlbmRfcmVnb3V0KClgIHRvIHdhcm4gYW5kIHJlamVjdCBza2JzIHdob3NlIGxlbmd0aCBpcyBhbiBleGFjdCBtdWx0aXBsZSBvZiB0aGUgZW5kcG9pbnQgbWF4cGFja2V0IHNpemUuXFxuMi4gQ29ycmVjdGluZyB0aGUgYnVmZmVyIHNpemUgY2FsY3VsYXRpb24gaW4gYGF0aDlrX3JlZ19ybXdfYnVmZmVyKClgIGZyb20gYHNpemVvZihzdHJ1Y3QgcmVnaXN0ZXJfd3JpdGUpYCAoOCBieXRlcykgdG8gYHNpemVvZihzdHJ1Y3QgcmVnaXN0ZXJfcm13KWAgKDEyIGJ5dGVzKS5cXG4zLiBMb3dlcmluZyBgTUFYX1JNV19DTURfTlVNQkVSYCBmcm9tIDE1IHRvIDE0IGluIGB3bWkuaGAgdG8gYXZvaWQgNjQtYnl0ZSBhbGlnbmVkIFVTQiBwYXlsb2Fkcy5cXG5cXG5SZWdhcmRpbmcgbWVtb3J5IGluaXRpYWxpemF0aW9uOlxcbi0gQWxsIGZpZWxkcyAoYHJlZ2AsIGBzZXRgLCBgY2xyYCkgb2YgdGhlIGBzdHJ1Y3QgcmVnaXN0ZXJfcm13YCBhcnJheSBlbGVtZW50cyBpbiBgcHJpdi1cXHUwMDNld21pLVxcdTAwM2VtdWx0aV9ybXdgIGFyZSBleHBsaWNpdGx5IGluaXRpYWxpemVkIGJlZm9yZSBiZWluZyBzZW50IHZpYSBgYXRoOWtfd21pX2NtZCgpYC5cXG4tIE5vIHVzZXItc3BhY2UgY29weSBwYXRocyBvciB1bmluaXRpYWxpemVkIGtlcm5lbCBzdHJ1Y3R1cmUgZmllbGRzIGFyZSBleHBvc2VkIG9yIG1vZGlmaWVkLlxcbi0gTm8gYnJhbmNoIGNvbmRpdGlvbnMgcmVseSBvbiB1bmluaXRpYWxpemVkIHZhbHVlcy5cXG5cXG5UaGVyZWZvcmUsIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcywgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow526nl[1] Phase: Succeeded StartedAt: 2026-09-06 12:48:57 +0000 UTC FinishedAt: 2026-09-06 12:48:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflow526nl[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-09-06 12:48:57 +0000 UTC FinishedAt: 2026-09-06 12:48:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflow526nl[2] Phase: Succeeded StartedAt: 2026-09-06 12:48:57 +0000 UTC FinishedAt: 2026-09-06 14:27:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflow526nl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH"],"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":["hif_usb_send_regout","ath9k_reg_rmw_buffer","ath9k_reg_rmw_flush","ath9k_reg_rmw","hif_usb_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH"],"series_id":"74f0377d-614c-4348-a08a-5e08f184e58e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-09-06 12:48:57 +0000 UTC FinishedAt: 2026-09-06 14:27:20 +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":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH"],"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":["hif_usb_send_regout","ath9k_reg_rmw_buffer","ath9k_reg_rmw_flush","ath9k_reg_rmw","hif_usb_send"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH"],"series_id":"74f0377d-614c-4348-a08a-5e08f184e58e","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-workflow526nl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH"],"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":["hif_usb_send_regout","ath9k_reg_rmw_buffer","ath9k_reg_rmw_flush","ath9k_reg_rmw","hif_usb_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH"],"series_id":"74f0377d-614c-4348-a08a-5e08f184e58e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-09-06 12:48:57 +0000 UTC FinishedAt: 2026-09-06 12:49:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflow526nl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH"],"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":["hif_usb_send_regout","ath9k_reg_rmw_buffer","ath9k_reg_rmw_flush","ath9k_reg_rmw","hif_usb_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH"],"series_id":"74f0377d-614c-4348-a08a-5e08f184e58e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-09-06 12:48:57 +0000 UTC FinishedAt: 2026-09-06 12:49:02 +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":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH"],"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-workflow526nl/series-workflow526nl-convert-artifact-2716777931/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow526nl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH"],"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":["hif_usb_send_regout","ath9k_reg_rmw_buffer","ath9k_reg_rmw_flush","ath9k_reg_rmw","hif_usb_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH"],"series_id":"74f0377d-614c-4348-a08a-5e08f184e58e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-09-06 12:49:07 +0000 UTC FinishedAt: 2026-09-06 13:09:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflow526nl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH"],"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":["hif_usb_send_regout","ath9k_reg_rmw_buffer","ath9k_reg_rmw_flush","ath9k_reg_rmw","hif_usb_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH"],"series_id":"74f0377d-614c-4348-a08a-5e08f184e58e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-09-06 12:49:07 +0000 UTC FinishedAt: 2026-09-06 13:09:21 +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:*da9e18fd-4c6f-40ca-8b38-e66a7d8cfa97,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-workflow526nl/series-workflow526nl-convert-artifact-2716777931/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": "bd6536a0-b96d-4d3a-9267-1998f89b83c8", "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-workflow526nl/series-workflow526nl-build-action-2192717001/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow526nl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH"],"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":["hif_usb_send_regout","ath9k_reg_rmw_buffer","ath9k_reg_rmw_flush","ath9k_reg_rmw","hif_usb_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH"],"series_id":"74f0377d-614c-4348-a08a-5e08f184e58e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-09-06 12:49:07 +0000 UTC FinishedAt: 2026-09-06 13:09:11 +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:*da9e18fd-4c6f-40ca-8b38-e66a7d8cfa97,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-workflow526nl/series-workflow526nl-convert-artifact-2716777931/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": "bd6536a0-b96d-4d3a-9267-1998f89b83c8", "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-workflow526nl/series-workflow526nl-build-action-2192717001/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow526nl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH"],"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":["hif_usb_send_regout","ath9k_reg_rmw_buffer","ath9k_reg_rmw_flush","ath9k_reg_rmw","hif_usb_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH"],"series_id":"74f0377d-614c-4348-a08a-5e08f184e58e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-09-06 13:09:21 +0000 UTC FinishedAt: 2026-09-06 13:09:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflow526nl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH"],"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":["hif_usb_send_regout","ath9k_reg_rmw_buffer","ath9k_reg_rmw_flush","ath9k_reg_rmw","hif_usb_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH"],"series_id":"74f0377d-614c-4348-a08a-5e08f184e58e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-09-06 13:09:21 +0000 UTC FinishedAt: 2026-09-06 13:09:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflow526nl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH"],"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":["hif_usb_send_regout","ath9k_reg_rmw_buffer","ath9k_reg_rmw_flush","ath9k_reg_rmw","hif_usb_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH"],"series_id":"74f0377d-614c-4348-a08a-5e08f184e58e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-09-06 13:09:21 +0000 UTC FinishedAt: 2026-09-06 13:09:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow526nl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH"],"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":["hif_usb_send_regout","ath9k_reg_rmw_buffer","ath9k_reg_rmw_flush","ath9k_reg_rmw","hif_usb_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH"],"series_id":"74f0377d-614c-4348-a08a-5e08f184e58e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-09-06 13:09:21 +0000 UTC FinishedAt: 2026-09-06 13:09:26 +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":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH"],"series_id":"74f0377d-614c-4348-a08a-5e08f184e58e","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-workflow526nl/series-workflow526nl-convert-artifact-2580206114/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow526nl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH"],"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":["hif_usb_send_regout","ath9k_reg_rmw_buffer","ath9k_reg_rmw_flush","ath9k_reg_rmw","hif_usb_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH"],"series_id":"74f0377d-614c-4348-a08a-5e08f184e58e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-09-06 13:09:31 +0000 UTC FinishedAt: 2026-09-06 13:11:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow526nl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH"],"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":["hif_usb_send_regout","ath9k_reg_rmw_buffer","ath9k_reg_rmw_flush","ath9k_reg_rmw","hif_usb_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH"],"series_id":"74f0377d-614c-4348-a08a-5e08f184e58e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-09-06 13:09:31 +0000 UTC FinishedAt: 2026-09-06 13:11:21 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*bd6536a0-b96d-4d3a-9267-1998f89b83c8,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-workflow526nl/series-workflow526nl-build-action-2192717001/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-workflow526nl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH"],"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":["hif_usb_send_regout","ath9k_reg_rmw_buffer","ath9k_reg_rmw_flush","ath9k_reg_rmw","hif_usb_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH"],"series_id":"74f0377d-614c-4348-a08a-5e08f184e58e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-09-06 13:11:31 +0000 UTC FinishedAt: 2026-09-06 13:11:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow526nl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH"],"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":["hif_usb_send_regout","ath9k_reg_rmw_buffer","ath9k_reg_rmw_flush","ath9k_reg_rmw","hif_usb_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH"],"series_id":"74f0377d-614c-4348-a08a-5e08f184e58e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-09-06 13:11:31 +0000 UTC FinishedAt: 2026-09-06 13:11:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow526nl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH"],"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":["hif_usb_send_regout","ath9k_reg_rmw_buffer","ath9k_reg_rmw_flush","ath9k_reg_rmw","hif_usb_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH"],"series_id":"74f0377d-614c-4348-a08a-5e08f184e58e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-09-06 13:11:31 +0000 UTC FinishedAt: 2026-09-06 13:29:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflow526nl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH"],"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":["hif_usb_send_regout","ath9k_reg_rmw_buffer","ath9k_reg_rmw_flush","ath9k_reg_rmw","hif_usb_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH"],"series_id":"74f0377d-614c-4348-a08a-5e08f184e58e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-09-06 13:11:31 +0000 UTC FinishedAt: 2026-09-06 13:29:58 +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:*da9e18fd-4c6f-40ca-8b38-e66a7d8cfa97,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-workflow526nl/series-workflow526nl-convert-artifact-2580206114/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": "c1429e48-65b2-497b-b01f-3eb3b1a0521d", "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-workflow526nl/series-workflow526nl-build-action-665064054/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow526nl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH"],"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":["hif_usb_send_regout","ath9k_reg_rmw_buffer","ath9k_reg_rmw_flush","ath9k_reg_rmw","hif_usb_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH"],"series_id":"74f0377d-614c-4348-a08a-5e08f184e58e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-09-06 13:11:31 +0000 UTC FinishedAt: 2026-09-06 13:29:48 +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:*da9e18fd-4c6f-40ca-8b38-e66a7d8cfa97,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-workflow526nl/series-workflow526nl-convert-artifact-2580206114/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": "c1429e48-65b2-497b-b01f-3eb3b1a0521d", "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-workflow526nl/series-workflow526nl-build-action-665064054/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow526nl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH"],"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":["hif_usb_send_regout","ath9k_reg_rmw_buffer","ath9k_reg_rmw_flush","ath9k_reg_rmw","hif_usb_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH"],"series_id":"74f0377d-614c-4348-a08a-5e08f184e58e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-09-06 13:29:58 +0000 UTC FinishedAt: 2026-09-06 13:29:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflow526nl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH"],"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":["hif_usb_send_regout","ath9k_reg_rmw_buffer","ath9k_reg_rmw_flush","ath9k_reg_rmw","hif_usb_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH"],"series_id":"74f0377d-614c-4348-a08a-5e08f184e58e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-09-06 13:29:58 +0000 UTC FinishedAt: 2026-09-06 13:29:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflow526nl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH"],"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":["hif_usb_send_regout","ath9k_reg_rmw_buffer","ath9k_reg_rmw_flush","ath9k_reg_rmw","hif_usb_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH"],"series_id":"74f0377d-614c-4348-a08a-5e08f184e58e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-09-06 13:29:58 +0000 UTC FinishedAt: 2026-09-06 13:31:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflow526nl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH"],"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":["hif_usb_send_regout","ath9k_reg_rmw_buffer","ath9k_reg_rmw_flush","ath9k_reg_rmw","hif_usb_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH"],"series_id":"74f0377d-614c-4348-a08a-5e08f184e58e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-09-06 13:29:58 +0000 UTC FinishedAt: 2026-09-06 13:31:45 +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:*c1429e48-65b2-497b-b01f-3eb3b1a0521d,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-workflow526nl/series-workflow526nl-build-action-665064054/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-workflow526nl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH"],"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":["hif_usb_send_regout","ath9k_reg_rmw_buffer","ath9k_reg_rmw_flush","ath9k_reg_rmw","hif_usb_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH"],"series_id":"74f0377d-614c-4348-a08a-5e08f184e58e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-09-06 13:31:55 +0000 UTC FinishedAt: 2026-09-06 14:27:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflow526nl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH"],"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":["hif_usb_send_regout","ath9k_reg_rmw_buffer","ath9k_reg_rmw_flush","ath9k_reg_rmw","hif_usb_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH"],"series_id":"74f0377d-614c-4348-a08a-5e08f184e58e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-09-06 13:31:55 +0000 UTC FinishedAt: 2026-09-06 14:27:20 +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":["hif_usb_send_regout","ath9k_reg_rmw_buffer","ath9k_reg_rmw_flush","ath9k_reg_rmw","hif_usb_send"],"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:*bd6536a0-b96d-4d3a-9267-1998f89b83c8,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*c1429e48-65b2-497b-b01f-3eb3b1a0521d,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-workflow526nl/series-workflow526nl-build-action-2192717001/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-workflow526nl/series-workflow526nl-build-action-665064054/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow526nl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH"],"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":["hif_usb_send_regout","ath9k_reg_rmw_buffer","ath9k_reg_rmw_flush","ath9k_reg_rmw","hif_usb_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH"],"series_id":"74f0377d-614c-4348-a08a-5e08f184e58e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-09-06 13:31:55 +0000 UTC FinishedAt: 2026-09-06 13:32:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow526nl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH"],"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":["hif_usb_send_regout","ath9k_reg_rmw_buffer","ath9k_reg_rmw_flush","ath9k_reg_rmw","hif_usb_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH"],"series_id":"74f0377d-614c-4348-a08a-5e08f184e58e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-09-06 13:31:55 +0000 UTC FinishedAt: 2026-09-06 13:32:00 +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":["hif_usb_send_regout","ath9k_reg_rmw_buffer","ath9k_reg_rmw_flush","ath9k_reg_rmw","hif_usb_send"],"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-workflow526nl/series-workflow526nl-convert-artifact-2672341591/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow526nl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH"],"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":["hif_usb_send_regout","ath9k_reg_rmw_buffer","ath9k_reg_rmw_flush","ath9k_reg_rmw","hif_usb_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH"],"series_id":"74f0377d-614c-4348-a08a-5e08f184e58e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-09-06 13:31:55 +0000 UTC FinishedAt: 2026-09-06 13:31:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflow526nl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH"],"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":["hif_usb_send_regout","ath9k_reg_rmw_buffer","ath9k_reg_rmw_flush","ath9k_reg_rmw","hif_usb_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH"],"series_id":"74f0377d-614c-4348-a08a-5e08f184e58e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-09-06 13:31:55 +0000 UTC FinishedAt: 2026-09-06 13:31:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflow526nl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH"],"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":["hif_usb_send_regout","ath9k_reg_rmw_buffer","ath9k_reg_rmw_flush","ath9k_reg_rmw","hif_usb_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH"],"series_id":"74f0377d-614c-4348-a08a-5e08f184e58e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-09-06 13:31:55 +0000 UTC FinishedAt: 2026-09-06 13:31:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflow526nl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH"],"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":["hif_usb_send_regout","ath9k_reg_rmw_buffer","ath9k_reg_rmw_flush","ath9k_reg_rmw","hif_usb_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH"],"series_id":"74f0377d-614c-4348-a08a-5e08f184e58e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-09-06 13:32:05 +0000 UTC FinishedAt: 2026-09-06 14:27:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflow526nl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH"],"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":["hif_usb_send_regout","ath9k_reg_rmw_buffer","ath9k_reg_rmw_flush","ath9k_reg_rmw","hif_usb_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB","MAC80211","WLAN_VENDOR_ATH"],"series_id":"74f0377d-614c-4348-a08a-5e08f184e58e","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-09-06 13:32:05 +0000 UTC FinishedAt: 2026-09-06 14:27:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*bd6536a0-b96d-4d3a-9267-1998f89b83c8,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*c1429e48-65b2-497b-b01f-3eb3b1a0521d,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-workflow526nl/series-workflow526nl-build-action-2192717001/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-workflow526nl/series-workflow526nl-build-action-665064054/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-workflow526nl/series-workflow526nl-convert-artifact-2672341591/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,}