Name: series-workflowvt6vm Phase: Running StartedAt: 2026-09-05 11:22:09 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvt6vm[0] Phase: Succeeded StartedAt: 2026-09-05 11:22:09 +0000 UTC FinishedAt: 2026-09-05 11:46:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvt6vm[0].run-triage Phase: Succeeded StartedAt: 2026-09-05 11:22:09 +0000 UTC FinishedAt: 2026-09-05 11:46:35 +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": [ "ATH_COMMON", "ATH9K_HTC", "CARL9170", "CFG80211", "MAC80211", "USB" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "1b60ed34f712e9f606d80951f1586f4274ebadf1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ATH_COMMON", "ATH9K_HTC", "CARL9170", "CFG80211", "MAC80211", "USB" ], "series_id": "764cfd86-7f28-4073-a0cc-0e241ce5a697" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ath_regd_init", "ath_regd_init_wiphy", "ath_world_regdomain", "ath_default_world_regdomain", "ath_reg_notifier_apply" ], "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+CgkJCTx0ZD4yMDI2LzA5LzA1IDExOjQyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FUSF9DT01NT04mIzM0OywKICAgICYjMzQ7QVRIOUtfSFRDJiMzNDssCiAgICAmIzM0O0NBUkw5MTcwJiMzNDssCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2F0aF9yZWdkX2luaXQmIzM0OywKICAgICYjMzQ7YXRoX3JlZ2RfaW5pdF93aXBoeSYjMzQ7LAogICAgJiMzNDthdGhfd29ybGRfcmVnZG9tYWluJiMzNDssCiAgICAmIzM0O2F0aF9kZWZhdWx0X3dvcmxkX3JlZ2RvbWFpbiYjMzQ7LAogICAgJiMzNDthdGhfcmVnX25vdGlmaWVyX2FwcGx5JiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgc3RhdGljIGNvbnN0YW50IHJlZ3VsYXRvcnkgZG9tYWluIGRlZmluaXRpb25zIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jYC4gU3BlY2lmaWNhbGx5LCBpdCBzcGxpdHMgdGhlIGBBVEhfNUdIWl81MTUwXzUzNTBgIG1hY3JvIGludG8gdHdvIHNlcGFyYXRlIHJlZ3VsYXRvcnkgcnVsZXMgKDUxNTAtNTI0MCBNSHogYW5kIDUyNjAtNTM1MCBNSHopIGFuZCBhZGp1c3RzIHRoZSBgbl9yZWdfcnVsZXNgIGZpZWxkIGluIHNldmVyYWwgc3RhdGljIGNvbnN0IGBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbmAgaW5zdGFuY2VzIGFjY29yZGluZ2x5LlxuXG5BbGwgYWZmZWN0ZWQgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBjb21waWxlLXRpbWUgY29uc3RhbnQgdGFibGVzIHdpdGggZnVsbHkgaW5pdGlhbGl6ZWQgZmllbGRzLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSBkeW5hbWljIG9yIHN0YWNrIGFsbG9jYXRpb25zLCBkb2VzIG5vdCBtb2RpZnkgYW55IGJ1ZmZlcnMgb3IgcGFkZGluZyBjb3BpZWQgdG8gdXNlcnNwYWNlLCBhbmQgaW50cm9kdWNlcyBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcy4gSWYgYW55IGFycmF5IGluZGV4aW5nIG9yIHJ1bGUgY291bnQgbWlzbWF0Y2hlcyB3ZXJlIHRvIG9jY3VyLCB0aGV5IHdvdWxkIGJlIGJvdW5kcyB2aW9sYXRpb25zIGRldGVjdGFibGUgYnkgc3RhbmRhcmQgS0FTQU4uIFRoZXJlZm9yZSwgdGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIHRoYXQgd2FycmFudCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24uJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHNwbGl0cyB0aGUgNUdIeiA1MTUwLTUzNTAgTUh6IHJlZ3VsYXRvcnkgcnVsZSBpbnRvIHNlcGFyYXRlIDUxNTAtNTI0MCBNSHogYW5kIDUyNjAtNTM1MCBNSHogcnVsZXMgYW5kIHVwZGF0ZXMgcnVsZSBjb3VudHMgYWNyb3NzIEF0aGVyb3Mgd29ybGQgcmVndWxhdG9yeSBkb21haW4gZGVmaW5pdGlvbnMgaW4gZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy4gVGhpcyBjb2RlIGlzIGV4ZWN1dGVkIGR1cmluZyBpbml0aWFsaXphdGlvbiBhbmQgcmVndWxhdG9yeSB1cGRhdGVzIG9mIEF0aGVyb3Mgd2lyZWxlc3MgZHJpdmVycywgaW5jbHVkaW5nIFVTQi1kcml2ZW4gZGV2aWNlcyAoc3VjaCBhcyBhdGg5a19odGMgYW5kIGNhcmw5MTcwKSB3aGljaCBhcmUgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgVVNCIGVtdWxhdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxMTo0MjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDEyOWNiMTU5ZmI5YzVjZDQ4ZWFkNDdjYzcwNGY3OTg2ZWRjYTQwOTJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IFNlcCA1IDExOjQyOjQ1IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jXG5pbmRleCBmMTVlN2JkNjkwYjViLi5iMTI5YWYwZWVkODg1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuY1xuQEAgLTQzLDcgJiM0Mzs0Myw4IEBAIHN0YXRpYyBpbnQgX19hdGhfcmVnZF9pbml0KHN0cnVjdCBhdGhfcmVndWxhdG9yeSAqcmVnKTtcbiBcdFx0XHRcdFx0IE5MODAyMTFfUlJGX05PX09GRE0pXG4gXG4gLyogV2UgYWxsb3cgSUJTUyBvbiB0aGVzZSBvbiBhIGNhc2UgYnkgY2FzZSBiYXNpcyBieSByZWd1bGF0b3J5IGRvbWFpbiAqL1xuLSNkZWZpbmUgQVRIXzVHSFpfNTE1MF81MzUwXHRSRUdfUlVMRSg1MTUwLTEwLCA1MzUwJiM0MzsxMCwgODAsIDAsIDMwLFxcXG4mIzQzOyNkZWZpbmUgQVRIXzVHSFpfNTE1MF81MzUwXHRSRUdfUlVMRSg1MTUwLTEwLCA1MjQwJiM0MzsxMCwgODAsIDAsIDMwLCAwKSxcXFxuJiM0MztcdFx0XHRcdFJFR19SVUxFKDUyNjAtMTAsIDUzNTAmIzQzOzEwLCA4MCwgMCwgMzAsXFxcbiBcdFx0XHRcdFx0IE5MODAyMTFfUlJGX05PX0lSKVxuICNkZWZpbmUgQVRIXzVHSFpfNTQ3MF81ODUwXHRSRUdfUlVMRSg1NDcwLTEwLCA1ODUwJiM0MzsxMCwgODAsIDAsIDMwLFxcXG4gXHRcdFx0XHRcdCBOTDgwMjExX1JSRl9OT19JUilcbkBAIC02NCw3ICYjNDM7NjUsNyBAQCBzdGF0aWMgaW50IF9fYXRoX3JlZ2RfaW5pdChzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZyk7XG4gLyogQ2FuIGJlIHVzZWQgZm9yOlxuICAqIDB4NjAsIDB4NjEsIDB4NjIgKi9cbiBzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW4gYXRoX3dvcmxkX3JlZ2RvbV82MF82MV82MiA9IHtcbi1cdC5uX3JlZ19ydWxlcyA9IDUsXG4mIzQzO1x0Lm5fcmVnX3J1bGVzID0gNixcbiBcdC5hbHBoYTIgPSAgXCYjMzQ7OTlcJiMzNDssXG4gXHQucmVnX3J1bGVzID0ge1xuIFx0XHRBVEhfMkdIWl9BTEwsXG5AQCAtNzQsNyAmIzQzOzc1LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluIGF0aF93b3JsZF9yZWdkb21fNjBfNjFfNjIgPSB7XG4gXG4gLyogQ2FuIGJlIHVzZWQgYnkgMHg2MyBhbmQgMHg2NSAqL1xuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiBhdGhfd29ybGRfcmVnZG9tXzYzXzY1ID0ge1xuLVx0Lm5fcmVnX3J1bGVzID0gNCxcbiYjNDM7XHQubl9yZWdfcnVsZXMgPSA1LFxuIFx0LmFscGhhMiA9ICBcJiMzNDs5OVwmIzM0OyxcbiBcdC5yZWdfcnVsZXMgPSB7XG4gXHRcdEFUSF8yR0haX0NIMDFfMTEsXG5AQCAtODUsNyAmIzQzOzg2LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluIGF0aF93b3JsZF9yZWdkb21fNjNfNjUgPSB7XG4gXG4gLyogQ2FuIGJlIHVzZWQgYnkgMHg2NCBvbmx5ICovXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluIGF0aF93b3JsZF9yZWdkb21fNjQgPSB7XG4tXHQubl9yZWdfcnVsZXMgPSAzLFxuJiM0MztcdC5uX3JlZ19ydWxlcyA9IDQsXG4gXHQuYWxwaGEyID0gIFwmIzM0Ozk5XCYjMzQ7LFxuIFx0LnJlZ19ydWxlcyA9IHtcbiBcdFx0QVRIXzJHSFpfQ0gwMV8xMSxcbkBAIC05NSw3ICYjNDM7OTYsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW4gYXRoX3dvcmxkX3JlZ2RvbV82NCA9IHtcbiBcbiAvKiBDYW4gYmUgdXNlZCBieSAweDY2IGFuZCAweDY5ICovXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluIGF0aF93b3JsZF9yZWdkb21fNjZfNjkgPSB7XG4tXHQubl9yZWdfcnVsZXMgPSAzLFxuJiM0MztcdC5uX3JlZ19ydWxlcyA9IDQsXG4gXHQuYWxwaGEyID0gIFwmIzM0Ozk5XCYjMzQ7LFxuIFx0LnJlZ19ydWxlcyA9IHtcbiBcdFx0QVRIXzJHSFpfQ0gwMV8xMSxcbkBAIC0xMDUsNyAmIzQzOzEwNiw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiBhdGhfd29ybGRfcmVnZG9tXzY2XzY5ID0ge1xuIFxuIC8qIENhbiBiZSB1c2VkIGJ5IDB4NjcsIDB4NjgsIDB4NkEgYW5kIDB4NkMgKi9cbiBzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW4gYXRoX3dvcmxkX3JlZ2RvbV82N182OF82QV82QyA9IHtcbi1cdC5uX3JlZ19ydWxlcyA9IDQsXG4mIzQzO1x0Lm5fcmVnX3J1bGVzID0gNSxcbiBcdC5hbHBoYTIgPSAgXCYjMzQ7OTlcJiMzNDssXG4gXHQucmVnX3J1bGVzID0ge1xuIFx0XHRBVEhfMkdIWl9DSDAxXzExLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDExOjQyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FUSF9DT01NT04mIzM0OywKICAgICYjMzQ7QVRIOUtfSFRDJiMzNDssCiAgICAmIzM0O0NBUkw5MTcwJiMzNDssCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2F0aF9yZWdkX2luaXQmIzM0OywKICAgICYjMzQ7YXRoX3JlZ2RfaW5pdF93aXBoeSYjMzQ7LAogICAgJiMzNDthdGhfd29ybGRfcmVnZG9tYWluJiMzNDssCiAgICAmIzM0O2F0aF9kZWZhdWx0X3dvcmxkX3JlZ2RvbWFpbiYjMzQ7LAogICAgJiMzNDthdGhfcmVnX25vdGlmaWVyX2FwcGx5JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHNwbGl0cyB0aGUgNUdIeiA1MTUwLTUzNTAgTUh6IHJlZ3VsYXRvcnkgcnVsZSBpbnRvIHNlcGFyYXRlIDUxNTAtNTI0MCBNSHogYW5kIDUyNjAtNTM1MCBNSHogcnVsZXMgYW5kIHVwZGF0ZXMgcnVsZSBjb3VudHMgYWNyb3NzIEF0aGVyb3Mgd29ybGQgcmVndWxhdG9yeSBkb21haW4gZGVmaW5pdGlvbnMgaW4gZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy4gVGhpcyBjb2RlIGlzIGV4ZWN1dGVkIGR1cmluZyBpbml0aWFsaXphdGlvbiBhbmQgcmVndWxhdG9yeSB1cGRhdGVzIG9mIEF0aGVyb3Mgd2lyZWxlc3MgZHJpdmVycywgaW5jbHVkaW5nIFVTQi1kcml2ZW4gZGV2aWNlcyAoc3VjaCBhcyBhdGg5a19odGMgYW5kIGNhcmw5MTcwKSB3aGljaCBhcmUgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgVVNCIGVtdWxhdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDEyOWNiMTU5ZmI5YzVjZDQ4ZWFkNDdjYzcwNGY3OTg2ZWRjYTQwOTIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IFNlcCA1IDExOjQyOjQ1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMKaW5kZXggZjE1ZTdiZDY5MGI1Yi4uYjEyOWFmMGVlZDg4NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jCkBAIC00Myw3ICYjNDM7NDMsOCBAQCBzdGF0aWMgaW50IF9fYXRoX3JlZ2RfaW5pdChzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZyk7CiAJCQkJCSBOTDgwMjExX1JSRl9OT19PRkRNKQogCiAvKiBXZSBhbGxvdyBJQlNTIG9uIHRoZXNlIG9uIGEgY2FzZSBieSBjYXNlIGJhc2lzIGJ5IHJlZ3VsYXRvcnkgZG9tYWluICovCi0jZGVmaW5lIEFUSF81R0haXzUxNTBfNTM1MAlSRUdfUlVMRSg1MTUwLTEwLCA1MzUwJiM0MzsxMCwgODAsIDAsIDMwLFwKJiM0MzsjZGVmaW5lIEFUSF81R0haXzUxNTBfNTM1MAlSRUdfUlVMRSg1MTUwLTEwLCA1MjQwJiM0MzsxMCwgODAsIDAsIDMwLCAwKSxcCiYjNDM7CQkJCVJFR19SVUxFKDUyNjAtMTAsIDUzNTAmIzQzOzEwLCA4MCwgMCwgMzAsXAogCQkJCQkgTkw4MDIxMV9SUkZfTk9fSVIpCiAjZGVmaW5lIEFUSF81R0haXzU0NzBfNTg1MAlSRUdfUlVMRSg1NDcwLTEwLCA1ODUwJiM0MzsxMCwgODAsIDAsIDMwLFwKIAkJCQkJIE5MODAyMTFfUlJGX05PX0lSKQpAQCAtNjQsNyAmIzQzOzY1LDcgQEAgc3RhdGljIGludCBfX2F0aF9yZWdkX2luaXQoc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcpOwogLyogQ2FuIGJlIHVzZWQgZm9yOgogICogMHg2MCwgMHg2MSwgMHg2MiAqLwogc3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluIGF0aF93b3JsZF9yZWdkb21fNjBfNjFfNjIgPSB7Ci0JLm5fcmVnX3J1bGVzID0gNSwKJiM0MzsJLm5fcmVnX3J1bGVzID0gNiwKIAkuYWxwaGEyID0gICYjMzQ7OTkmIzM0OywKIAkucmVnX3J1bGVzID0gewogCQlBVEhfMkdIWl9BTEwsCkBAIC03NCw3ICYjNDM7NzUsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW4gYXRoX3dvcmxkX3JlZ2RvbV82MF82MV82MiA9IHsKIAogLyogQ2FuIGJlIHVzZWQgYnkgMHg2MyBhbmQgMHg2NSAqLwogc3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluIGF0aF93b3JsZF9yZWdkb21fNjNfNjUgPSB7Ci0JLm5fcmVnX3J1bGVzID0gNCwKJiM0MzsJLm5fcmVnX3J1bGVzID0gNSwKIAkuYWxwaGEyID0gICYjMzQ7OTkmIzM0OywKIAkucmVnX3J1bGVzID0gewogCQlBVEhfMkdIWl9DSDAxXzExLApAQCAtODUsNyAmIzQzOzg2LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluIGF0aF93b3JsZF9yZWdkb21fNjNfNjUgPSB7CiAKIC8qIENhbiBiZSB1c2VkIGJ5IDB4NjQgb25seSAqLwogc3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluIGF0aF93b3JsZF9yZWdkb21fNjQgPSB7Ci0JLm5fcmVnX3J1bGVzID0gMywKJiM0MzsJLm5fcmVnX3J1bGVzID0gNCwKIAkuYWxwaGEyID0gICYjMzQ7OTkmIzM0OywKIAkucmVnX3J1bGVzID0gewogCQlBVEhfMkdIWl9DSDAxXzExLApAQCAtOTUsNyAmIzQzOzk2LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluIGF0aF93b3JsZF9yZWdkb21fNjQgPSB7CiAKIC8qIENhbiBiZSB1c2VkIGJ5IDB4NjYgYW5kIDB4NjkgKi8KIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiBhdGhfd29ybGRfcmVnZG9tXzY2XzY5ID0gewotCS5uX3JlZ19ydWxlcyA9IDMsCiYjNDM7CS5uX3JlZ19ydWxlcyA9IDQsCiAJLmFscGhhMiA9ICAmIzM0Ozk5JiMzNDssCiAJLnJlZ19ydWxlcyA9IHsKIAkJQVRIXzJHSFpfQ0gwMV8xMSwKQEAgLTEwNSw3ICYjNDM7MTA2LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluIGF0aF93b3JsZF9yZWdkb21fNjZfNjkgPSB7CiAKIC8qIENhbiBiZSB1c2VkIGJ5IDB4NjcsIDB4NjgsIDB4NkEgYW5kIDB4NkMgKi8KIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiBhdGhfd29ybGRfcmVnZG9tXzY3XzY4XzZBXzZDID0gewotCS5uX3JlZ19ydWxlcyA9IDQsCiYjNDM7CS5uX3JlZ19ydWxlcyA9IDUsCiAJLmFscGhhMiA9ICAmIzM0Ozk5JiMzNDssCiAJLnJlZ19ydWxlcyA9IHsKIAkJQVRIXzJHSFpfQ0gwMV8xMSwKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTE6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzgwOQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDEwOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBvdGVudGlhbCBJbXBhY3Qgb2YgYSBXaXJlbGVzcyBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gdGhlIHBhdGNoIHRvdWNoZXMgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmNgLiBSaWdodCBhd2F5LCBteSBleHBlcnQgbWluZCBraWNrcyBpbi4gVGltZSB0byBkaWcgaW4gYW5kIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucy4gRmlyc3QsIGxldCYjMzk7cyBlc3RhYmxpc2ggdGhlIHJvbGUgb2YgYGF0aC9yZWdkLmNgLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGl0ICpkb2VzKiBpbiB0aGUgZ3JhbmQgc2NoZW1lIG9mIHRoaW5ncyDigJMgd2hhdCYjMzk7cyBpdHMgcHVycG9zZSB3aXRoaW4gdGhlIEF0aGVyb3Mgd2lyZWxlc3MgZHJpdmVyIGVjb3N5c3RlbT8gSXMgaXQgaW52b2x2ZWQgaW4gaGFyZHdhcmUtc3BlY2lmaWMgY29uZmlndXJhdGlvbnMsIG9yIGRvZXMgaXQgaGFuZGxlIG1vcmUgZ2VuZXJhbCByZWd1bGF0b3J5IGRvbWFpbiBhc3BlY3RzPwoKTmV4dCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlLiBXaGljaCBzcGVjaWZpYyBoYXJkd2FyZSBvciB2aXJ0dWFsIGRldmljZXMgcmVseSBvbiB0aGlzIGNvZGU/IEFyZSB3ZSB0YWxraW5nIGFib3V0IHNwZWNpZmljIFBDSSBkZXZpY2VzLCBtb3JlIHdpZGVseSB1c2VkIGhhcmR3YXJlLCBvciBldmVuIHNvbWV0aGluZyByZWFjaGFibGUgdGhyb3VnaCB2aXJ0dWFsIGludGVyZmFjZXMgbGlrZSBtYWM4MDIxMSBod3NpbSBvciBhIFVTQiB3aWZpIGRldmljZSBsaWtlIGF0aDlrX2h0YyBvciBvdGhlciBhdGhrIGRldmljZXM/IEtub3dpbmcgdGhpcyB3aWxsIHNpZ25pZmljYW50bHkgaW5mbHVlbmNlIHRoZSByaXNrIGFzc2Vzc21lbnQuIEl0IHdpbGwgYWZmZWN0IG15IGZ1enppbmcgc3RyYXRlZ3kgdG9vLiBJZiBpdCYjMzk7cyBzb21ldGhpbmcgSSBjYW4gaGl0IGVhc2lseSB0aHJvdWdoIGZ1enppbmcsIGl0IGVsZXZhdGVzIHRoZSBjb25jZXJuIGxldmVsLCBlc3BlY2lhbGx5IGlmIGl0JiMzOTtzIGNvbm5lY3RlZCB0byByZWd1bGF0aW9uLgoKSSYjMzk7bGwgc3RhcnQgd2l0aCBzb21lIHF1aWNrIGBncmVwYHMgd2l0aGluIHRoZSBjb2RlYmFzZSB0byBpZGVudGlmeSBhbGwgdGhlIGNhbGwgc2l0ZXMgYW5kIHJlbGF0ZWQgZnVuY3Rpb25zLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgc29saWQgcGljdHVyZSBvZiBob3cgYGF0aC9yZWdkLmNgIGlzIGludGVncmF0ZWQgYW5kIHVzZWQuIFRoaXMgZGF0YSB3aWxsIGd1aWRlIHRoZSBuZXh0IGxldmVsIG9mIGFuYWx5c2lzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDExOjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2F0aF93b3JsZF9yZWdkb20mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYz0yNj1zdGF0aWMgaW50IF9fYXRoX3JlZ2RfaW5pdChzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy02Ni0gKiAweDYwLCAweDYxLCAweDYyICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjY3OnN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiBhdGhfd29ybGRfcmVnZG9tXzYwXzYxXzYyID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy02OC1cdC5uX3JlZ19ydWxlcyA9IDYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy03Ni0vKiBDYW4gYmUgdXNlZCBieSAweDYzIGFuZCAweDY1ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjc3OnN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiBhdGhfd29ybGRfcmVnZG9tXzYzXzY1ID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy03OC1cdC5uX3JlZ19ydWxlcyA9IDUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy04Ny0vKiBDYW4gYmUgdXNlZCBieSAweDY0IG9ubHkgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6ODg6c3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluIGF0aF93b3JsZF9yZWdkb21fNjQgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTg5LVx0Lm5fcmVnX3J1bGVzID0gNCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTk3LS8qIENhbiBiZSB1c2VkIGJ5IDB4NjYgYW5kIDB4NjkgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6OTg6c3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluIGF0aF93b3JsZF9yZWdkb21fNjZfNjkgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTk5LVx0Lm5fcmVnX3J1bGVzID0gNCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTEwNy0vKiBDYW4gYmUgdXNlZCBieSAweDY3LCAweDY4LCAweDZBIGFuZCAweDZDICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjEwODpzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW4gYXRoX3dvcmxkX3JlZ2RvbV82N182OF82QV82QyA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMTA5LVx0Lm5fcmVnX3J1bGVzID0gNSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jPTIxNz1zdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW4gKmF0aF9kZWZhdWx0X3dvcmxkX3JlZ2RvbWFpbih2b2lkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjE5LVx0LyogdGhpcyBpcyB0aGUgbW9zdCByZXN0cmljdGl2ZSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzoyMjA6XHRyZXR1cm4gXHUwMDI2YXRoX3dvcmxkX3JlZ2RvbV82NDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjIxLX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jPTIyMz1zdGF0aWMgY29uc3Qgc3RydWN0XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjIyNDppZWVlODAyMTFfcmVnZG9tYWluICphdGhfd29ybGRfcmVnZG9tYWluKHN0cnVjdCBhdGhfcmVndWxhdG9yeSAqcmVnKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0yMjUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjI5LVx0Y2FzZSAweDYyOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzoyMzA6XHRcdHJldHVybiBcdTAwMjZhdGhfd29ybGRfcmVnZG9tXzYwXzYxXzYyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0yMzEtXHRjYXNlIDB4NjM6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTIzMi1cdGNhc2UgMHg2NTpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6MjMzOlx0XHRyZXR1cm4gXHUwMDI2YXRoX3dvcmxkX3JlZ2RvbV82M182NTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjM0LVx0Y2FzZSAweDY0OlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzoyMzU6XHRcdHJldHVybiBcdTAwMjZhdGhfd29ybGRfcmVnZG9tXzY0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0yMzYtXHRjYXNlIDB4NjY6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTIzNy1cdGNhc2UgMHg2OTpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6MjM4Olx0XHRyZXR1cm4gXHUwMDI2YXRoX3dvcmxkX3JlZ2RvbV82Nl82OTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjM5LVx0Y2FzZSAweDY3OlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjQyLVx0Y2FzZSAweDZDOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzoyNDM6XHRcdHJldHVybiBcdTAwMjZhdGhfd29ybGRfcmVnZG9tXzY3XzY4XzZBXzZDO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0yNDQtXHRkZWZhdWx0OlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM9NjM2PWF0aF9yZWdkX2luaXRfd2lwaHkoc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy02NTEtXHRcdCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo2NTI6XHRcdHJlZ2QgPSBhdGhfd29ybGRfcmVnZG9tYWluKHJlZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTY1My1cdFx0d2lwaHktXHUwMDNlcmVndWxhdG9yeV9mbGFncyB8PSBSRUdVTEFUT1JZX0NPVU5UUllfSUVfRk9MTE9XX1BPV0VSO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDExOjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU1ODUKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAzOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgYXRoX3JlZ2QgSW5pdGlhbGl6YXRpb24qKgoKT2theSwgc28gSSB3YW50IHRvIGZpZ3VyZSBvdXQgd2hpY2ggZHJpdmVycyB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYCBkaXJlY3RvcnkgYXJlIHVzaW5nIGVpdGhlciBgYXRoX3JlZ2RfaW5pdF93aXBoeWAgb3IsIG1vcmUgYnJvYWRseSwgYW55dGhpbmcgZGVmaW5lZCBpbiBgYXRoX3JlZ2QuY2AuIFRoaXMgaXNuJiMzOTt0IG5lY2Vzc2FyaWx5IGEgY29tcGxleCBxdWVyeSwgYnV0IEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIG1vc3QgZWZmaWNpZW50IHdheSB0byB0cmFjayB0aGlzIGRvd24uIEkmIzM5O2xsIHByb2JhYmx5IHN0YXJ0IHdpdGggYSBgZ3JlcGAgb3IgYGFja2AgY29tbWFuZCBhY3Jvc3MgdGhlIGNvZGViYXNlLCB0YXJnZXRpbmcgdGhvc2Ugc3BlY2lmaWMgZnVuY3Rpb24gbmFtZXMgb3IsIHBvdGVudGlhbGx5LCBqdXN0IHRoZSBmaWxlbmFtZSBgYXRoX3JlZ2QuY2AuIEkgbmVlZCB0byBlbnN1cmUgdGhlIHNlYXJjaCBpcyBzY29wZWQgY29ycmVjdGx5IHRvIGF2b2lkIG5vaXNlIGZyb20gaXJyZWxldmFudCBtYXRjaGVzIGluIGluY2x1ZGVzIG9yIGNvbW1lbnRzLiBUaGlua2luZyBhYm91dCBpdCwgc2luY2UgSSBhbSBhIHN5c3RlbXMgZXhwZXJ0LCBJIHNob3VsZCBwcm9iYWJseSBhbHNvIGNvbnNpZGVyIHRoYXQgSSBtaWdodCBuZWVkIHRvIGFjY291bnQgZm9yIGluZGlyZWN0IGNhbGxzIG9yIG1hY3JvcyB0aGF0IG1pZ2h0IGJlIGRlZmluZWQgd2hpY2ggbWlnaHQgY2FsbCB0aGlzLCByYXRoZXIgdGhhbiBqdXN0IGRpcmVjdCByZWZlcmVuY2VzLiBEZXBlbmRpbmcgb24gdGhlIHJlc3VsdHMsIEkgbWlnaHQgaGF2ZSB0byBnbyBkZWVwZXIsIHBlcmhhcHMgY3Jvc3MtcmVmZXJlbmNpbmcgdGhlIHJlc3VsdHMgd2l0aCBtb2R1bGUgZGVwZW5kZW5jaWVzIG9yIGV4YW1pbmluZyB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiB0byBpZGVudGlmeSBob3cgdGhlc2UgY29tcG9uZW50cyBhcmUgbGlua2VkIHRvZ2V0aGVyLiBUaGlzIGluaXRpYWwgc2VhcmNoIHNob3VsZCBnaXZlIG1lIGEgcHJldHR5IGdvb2Qgc3RhcnRpbmcgcG9pbnQsIGFuZCBJIHdpbGwgYmUgYWJsZSB0byBuYXJyb3cgaXQgZG93biBxdWlja2x5LiBJIHdpbGwgdGhlbiBiZSBhYmxlIHRvIHRyYWNlIGRvd24gd2hhdCB0aG9zZSBtb2R1bGVzIGFyZSBkb2luZyBpbiB0aGVpciBpbml0aWFsaXphdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTE6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoX3JlZ2RfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM9OTkwOD1zdGF0aWMgaW50IGF0aDEwa19tYWNfZ2V0X3dyZGRfcmVndWxhdG9yeShzdHJ1Y3QgYXRoMTBrICphciwgdTE2ICpyZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTk5NDYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jOjk5NDc6XHQqcmQgPSBhdGhfcmVnZF9maW5kX2NvdW50cnlfYnlfbmFtZShhbHBoYTIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy05OTQ4LVx0aWYgKCpyZCA9PSAweGZmZmYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYz05OTcxPWludCBhdGgxMGtfbWFjX3JlZ2lzdGVyKHN0cnVjdCBhdGgxMGsgKmFyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtMTAzMDItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jOjEwMzAzOlx0cmV0ID0gYXRoX3JlZ2RfaW5pdChcdTAwMjZhci1cdTAwM2VhdGhfY29tbW9uLnJlZ3VsYXRvcnksIGFyLVx1MDAzZWh3LVx1MDAzZXdpcGh5LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy0xMDMwNC1cdFx0XHQgICAgYXRoMTBrX3JlZ19ub3RpZmllcik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDVrL2Jhc2UuYz0zMDI1PWF0aDVrX2luaXQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDVrL2Jhc2UuYy0zMTM1LVx0cmVndWxhdG9yeS1cdTAwM2VjdXJyZW50X3JkID0gYWgtXHUwMDNlYWhfY2FwYWJpbGl0aWVzLmNhcF9lZXByb20uZWVfcmVnZG9tYWluO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDVrL2Jhc2UuYzozMTM2Olx0cmV0ID0gYXRoX3JlZ2RfaW5pdChyZWd1bGF0b3J5LCBody1cdTAwM2V3aXBoeSwgYXRoNWtfcmVnX25vdGlmaWVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9iYXNlLmMtMzEzNy1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNWsvcGh5LmM9Mjc2MT1hdGg1a19nZXRfbWF4X2N0bF9wb3dlcihzdHJ1Y3QgYXRoNWtfaHcgKmFoLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9waHkuYy0yNzc0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDVrL3BoeS5jOjI3NzU6XHRjdGxfbW9kZSA9IGF0aF9yZWdkX2dldF9iYW5kX2N0bChyZWd1bGF0b3J5LCBjaGFubmVsLVx1MDAzZWJhbmQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDVrL3BoeS5jLTI3NzYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jPTgyOD1zdGF0aWMgaW50IGF0aDlrX2luaXRfZGV2aWNlKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmMtODUxLVx0LyogSW5pdGlhbGl6ZSByZWd1bGF0b3J5ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM6ODUyOlx0ZXJyb3IgPSBhdGhfcmVnZF9pbml0KFx1MDAyNmNvbW1vbi1cdTAwM2VyZWd1bGF0b3J5LCBwcml2LVx1MDAzZWh3LVx1MDAzZXdpcGh5LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jLTg1My1cdFx0XHQgICAgICBhdGg5a19yZWdfbm90aWZpZXIpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9ody5jPTExNzc9dTMyIGF0aDlrX3JlZ2RfZ2V0X2N0bChzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZywgc3RydWN0IGF0aDlrX2NoYW5uZWwgKmNoYW4pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHcuYy0xMTc4LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9ody5jOjExNzk6XHR1MzIgY3RsID0gYXRoX3JlZ2RfZ2V0X2JhbmRfY3RsKHJlZywgY2hhbi1cdTAwM2VjaGFuLVx1MDAzZWJhbmQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h3LmMtMTE4MC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jPTEwMDQ9aW50IGF0aDlrX2luaXRfZGV2aWNlKHUxNiBkZXZpZCwgc3RydWN0IGF0aF9zb2Z0YyAqc2MsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYy0xMDIyLVx0LyogSW5pdGlhbGl6ZSByZWd1bGF0b3J5ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jOjEwMjM6XHRlcnJvciA9IGF0aF9yZWdkX2luaXQoXHUwMDI2Y29tbW9uLVx1MDAzZXJlZ3VsYXRvcnksIHNjLVx1MDAzZWh3LVx1MDAzZXdpcGh5LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYy0xMDI0LVx0XHRcdCAgICAgIGF0aDlrX3JlZ19ub3RpZmllcik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL21haW4uYz0xOTUzPWludCBjYXJsOTE3MF9yZWdpc3RlcihzdHJ1Y3QgYXI5MTcwICphcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvbWFpbi5jLTE5NzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvbWFpbi5jOjE5NzE6XHRlcnIgPSBhdGhfcmVnZF9pbml0KHJlZ3VsYXRvcnksIGFyLVx1MDAzZWh3LVx1MDAzZXdpcGh5LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL21haW4uYy0xOTcyLVx0XHRcdCAgICBjYXJsOTE3MF9yZWdfbm90aWZpZXIpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9jYXJsOTE3MC9waHkuYz0xMjkxPXN0YXRpYyB2b2lkIGNhcmw5MTcwX2NhbGNfY3RsKHN0cnVjdCBhcjkxNzAgKmFyLCB1MzIgZnJlcSwgZW51bSBjYXJsOTE3MF9idyBidylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvcGh5LmMtMTMyNi1cdCAqIGhwcmVnLmM6OnpmSHBHZXRSZWd1bGF0b3J5RG9tYWluKCkgYW5kXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvcGh5LmM6MTMyNzpcdCAqIGF0aC9yZWdkLmM6OmF0aF9yZWdkX2dldF9iYW5kX2N0bCgpIC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9jYXJsOTE3MC9waHkuYy0xMzI4LVx0ICogZS5nLiBmb3IgRkNDM19XT1JMRCB0aGUgT1RVUyBwcm9jZWR1cmVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvcGh5LmMtMTMzMS1cdCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL3BoeS5jOjEzMzI6XHRjdGxfZ3JwID0gYXRoX3JlZ2RfZ2V0X2JhbmRfY3RsKFx1MDAyNmFyLVx1MDAzZWNvbW1vbi5yZWd1bGF0b3J5LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL3BoeS5jLTEzMzMtXHRcdFx0XHRcdGFyLVx1MDAzZWh3LVx1MDAzZWNvbmYuY2hhbmRlZi5jaGFuLVx1MDAzZWJhbmQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjI2OnN0YXRpYyBpbnQgX19hdGhfcmVnZF9pbml0KHN0cnVjdCBhdGhfcmVndWxhdG9yeSAqcmVnKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjctXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYz0xOTk9c3RhdGljIGlubGluZSBib29sIGlzX3d3cl9za3UodTE2IHJlZ2QpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0yMDUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjIwNjpzdGF0aWMgdTE2IGF0aF9yZWdkX2dldF9lZXByb21SRChzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjA3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jPTIxMT1ib29sIGF0aF9pc193b3JsZF9yZWdkKHN0cnVjdCBhdGhfcmVndWxhdG9yeSAqcmVnKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0yMTIte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzoyMTM6XHRyZXR1cm4gaXNfd3dyX3NrdShhdGhfcmVnZF9nZXRfZWVwcm9tUkQocmVnKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTIxNC19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYz00Mzc9c3RhdGljIHZvaWQgYXRoX3JlZ19hcHBseV93b3JsZF9mbGFncyhzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNDU4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo0NTk6dTE2IGF0aF9yZWdkX2ZpbmRfY291bnRyeV9ieV9uYW1lKGNoYXIgKmFscGhhMilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNDYwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTQ2OS19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjQ3MDpFWFBPUlRfU1lNQk9MKGF0aF9yZWdkX2ZpbmRfY291bnRyeV9ieV9uYW1lKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNDcxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYz00NzI9c3RhdGljIGludCBfX2F0aF9yZWdfZHluX2NvdW50cnkoc3RydWN0IHdpcGh5ICp3aXBoeSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTQ4MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NDgyOlx0Y291bnRyeV9jb2RlID0gYXRoX3JlZ2RfZmluZF9jb3VudHJ5X2J5X25hbWUocmVxdWVzdC1cdTAwM2VhbHBoYTIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy00ODMtXHRpZiAoY291bnRyeV9jb2RlID09ICh1MTYpIC0xKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNDg4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo0ODk6XHRfX2F0aF9yZWdkX2luaXQocmVnKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNDkwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM9NTUwPUVYUE9SVF9TWU1CT0woYXRoX3JlZ19ub3RpZmllcl9hcHBseSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTU1MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NTUyOnN0YXRpYyBib29sIGF0aF9yZWdkX2lzX2VlcHJvbV92YWxpZChzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNTUzLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NTU0Olx0dTE2IHJkID0gYXRoX3JlZ2RfZ2V0X2VlcHJvbVJEKHJlZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTU1NS1cdGludCBpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM9NTgxPXN0YXRpYyBzdHJ1Y3QgY291bnRyeV9jb2RlX3RvX2VudW1fcmQqXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjU4MjphdGhfcmVnZF9maW5kX2NvdW50cnkodTE2IGNvdW50cnlDb2RlKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy01ODMte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM9NTk0PXN0YXRpYyBzdHJ1Y3QgY291bnRyeV9jb2RlX3RvX2VudW1fcmQqXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjU5NTphdGhfcmVnZF9maW5kX2NvdW50cnlfYnlfcmQoaW50IHJlZ2RtbilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNTk2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTYwNi0vKiBSZXR1cm5zIHRoZSBtYXAgb2YgdGhlIEVFUFJPTSBzZXQgUkQgdG8gYSBjb3VudHJ5IGNvZGUgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NjA3OnN0YXRpYyB1MTYgYXRoX3JlZ2RfZ2V0X2RlZmF1bHRfY291bnRyeSh1MTYgcmQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTYwOC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy02MTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjYxMzpcdFx0Y291bnRyeSA9IGF0aF9yZWdkX2ZpbmRfY291bnRyeShjYyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTYxNC1cdFx0aWYgKGNvdW50cnkgIT0gTlVMTClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jPTYzNT1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjYzNjphdGhfcmVnZF9pbml0X3dpcGh5KHN0cnVjdCBhdGhfcmVndWxhdG9yeSAqcmVnLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy02MzctXHRcdCAgICBzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNjc1LSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo2NzY6c3RhdGljIHZvaWQgYXRoX3JlZ2Rfc2FuaXRpemUoc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTY3Ny17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy02ODMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjY4NDpzdGF0aWMgaW50IF9fYXRoX3JlZ2RfaW5pdChzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNjg1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTY5MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NjkyOlx0YXRoX3JlZ2Rfc2FuaXRpemUocmVnKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNjkzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNjk1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo2OTY6XHRpZiAoIWF0aF9yZWdkX2lzX2VlcHJvbV92YWxpZChyZWcpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTY5Ny1cdFx0cHJfZXJyKFwmIzM0O0ludmFsaWQgRUVQUk9NIGNvbnRlbnRzXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTcwMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NzAxOlx0cmVnZG1uID0gYXRoX3JlZ2RfZ2V0X2VlcHJvbVJEKHJlZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjcwMjpcdHJlZy1cdTAwM2Vjb3VudHJ5X2NvZGUgPSBhdGhfcmVnZF9nZXRfZGVmYXVsdF9jb3VudHJ5KHJlZ2Rtbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTcwMy1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTcxNS1cdFx0ICAgICAgIFwmIzM0O21hcCBzZWFyY2hcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo3MTY6XHRcdGNvdW50cnkgPSBhdGhfcmVnZF9maW5kX2NvdW50cnkocmVnLVx1MDAzZWNvdW50cnlfY29kZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTcxNy1cdFx0aWYgKGNvdW50cnkgPT0gTlVMTCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNzM5LVx0aWYgKCFjb3VudHJ5KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo3NDA6XHRcdGNvdW50cnkgPSBhdGhfcmVnZF9maW5kX2NvdW50cnlfYnlfcmQocmVnZG1uKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNzQxLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM9NzU4PWludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo3NTk6YXRoX3JlZ2RfaW5pdChzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNzYwLVx0ICAgICAgc3RydWN0IHdpcGh5ICp3aXBoeSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTc2Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NzY4Olx0ciA9IF9fYXRoX3JlZ2RfaW5pdChyZWcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy03NjktXHRpZiAocilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTc3NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6Nzc2Olx0YXRoX3JlZ2RfaW5pdF93aXBoeShyZWcsIHdpcGh5LCByZWdfbm90aWZpZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy03NzctXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy03NzktfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo3ODA6RVhQT1JUX1NZTUJPTChhdGhfcmVnZF9pbml0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNzgxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo3ODI6dTMyIGF0aF9yZWdkX2dldF9iYW5kX2N0bChzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNzgzLVx0XHRcdCAgZW51bSBubDgwMjExX2JhbmQgYmFuZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTc4Ni1cdCAgICAocmVnLVx1MDAzZWNvdW50cnlfY29kZSA9PSBDVFJZX0RFRkFVTFQgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjc4NzpcdCAgICAgaXNfd3dyX3NrdShhdGhfcmVnZF9nZXRfZWVwcm9tUkQocmVnKSkpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTc4OC1cdFx0cmV0dXJuIFNEX05PX0NUTDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTc5MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NzkxOlx0aWYgKGF0aF9yZWdkX2dldF9lZXByb21SRChyZWcpID09IENUUllfREVGQVVMVCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy03OTItXHRcdHN3aXRjaCAocmVnLVx1MDAzZXJlZ2lvbikge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtODEyLX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6ODEzOkVYUE9SVF9TWU1CT0woYXRoX3JlZ2RfZ2V0X2JhbmRfY3RsKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5oPTI2Mj1ib29sIGF0aF9pc180OWdoel9hbGxvd2VkKHUxNiByZWRvbWFpbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5oOjI2Mzp1MTYgYXRoX3JlZ2RfZmluZF9jb3VudHJ5X2J5X25hbWUoY2hhciAqYWxwaGEyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmg6MjY0OmludCBhdGhfcmVnZF9pbml0KHN0cnVjdCBhdGhfcmVndWxhdG9yeSAqcmVnLCBzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuaC0yNjUtXHRcdCAgdm9pZCAoKnJlZ19ub3RpZmllcikoc3RydWN0IHdpcGh5ICp3aXBoeSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmgtMjY2LVx0XHRcdFx0ICAgICAgIHN0cnVjdCByZWd1bGF0b3J5X3JlcXVlc3QgKnJlcXVlc3QpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmg6MjY3OnUzMiBhdGhfcmVnZF9nZXRfYmFuZF9jdGwoc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5oLTI2OC1cdFx0XHQgIGVudW0gbmw4MDIxMV9iYW5kIGJhbmQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDExOjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMTg2CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBVU0IgV2lyZWxlc3MgRHJpdmVyIEluaXRpYWxpemF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBpbnRvIHRoZXNlIFVTQiB3aXJlbGVzcyBkcml2ZXJzLCBzcGVjaWZpY2FsbHkgYGF0aDlrX2h0Y2AgYW5kIGBjYXJsOTE3MGAuIEl0JiMzOTtzIHByZXR0eSBjbGVhciB0aGV5IGFyZSBVU0IgZHJpdmVycywgYW5kIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGV5IGJlaGF2ZSBpbiBhIFVTQiBjb250ZXh0LiBLbm93aW5nIHRoZSBpbnMgYW5kIG91dHMgb2YgVVNCIGRldmljZSBlbXVsYXRpb24gaXMga2V5LCBzbyBJJiMzOTtsbCBiZSBmb2N1c2VkIG9uIGhvdyB0aGVzZSBkcml2ZXJzIGFyZSB0cmVhdGVkIGluIGVudmlyb25tZW50cyB3aGVyZSBVU0IgUmF3IEdhZGdldCBhbmQgc3l6a2FsbGVyIGZ1enppbmcgYXJlIGF0IHBsYXkgd2l0aGluIFFFTVUgb3Igb3RoZXIgdmlydHVhbGl6ZWQgc2V0dXBzLiBJIG5lZWQgdG8gbmFpbCBkb3duIGV4YWN0bHkgaG93IHRoZXNlIGRyaXZlcnMgYXJlIHByb2JlZCBhbmQgaW5pdGlhbGl6ZWQgdGhyb3VnaCB0aGUgVVNCIGludGVyZmFjZS4gVGhhdCYjMzk7cyB0aGUgY29yZSBxdWVzdGlvbiBoZXJlLiBUbyBnZXQgYSBoYW5kbGUgb24gaXQsIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIHJlbGV2YW50IEtjb25maWcgb3B0aW9ucyBmb3IgYGF0aDlrX2h0Y2AsIGBjYXJsOTE3MGAgYW5kIGFsc28gdGhlIGBhdGgvcmVnZC5jYCBmaWxlIHdoaWNoIGlzIGxpa2VseSB0byBob2xkIGltcG9ydGFudCByZWd1bGF0b3J5IGRvbWFpbiBpbmZvcm1hdGlvbiByZWxhdGVkIHRvIHRoZXNlIGRyaXZlcnMuIFVuZGVyc3RhbmRpbmcgdGhlIGNvbmZpZ3VyYXRpb24gYW5kIGluaXRpYWxpemF0aW9uIGZsb3cgaXMgZXNzZW50aWFsIGZvciBmdXJ0aGVyIGFuYWx5c2lzIG9yIHRlc3RpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTE6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBJU0NcbiAgIDI6XHRjb25maWcgQVRIX0NPTU1PTlxuICAgMzpcdFx0dHJpc3RhdGVcbiAgIDQ6XHRcbiAgIDU6XHRjb25maWcgV0xBTl9WRU5ET1JfQVRIXG4gICA2Olx0XHRib29sIFwmIzM0O0F0aGVyb3MvUXVhbGNvbW0gZGV2aWNlc1wmIzM0O1xuICAgNzpcdFx0ZGVmYXVsdCB5XG4gICA4Olx0XHRoZWxwXG4gICA5Olx0XHQgIElmIHlvdSBoYXZlIGEgd2lyZWxlc3MgY2FyZCBiZWxvbmdpbmcgdG8gdGhpcyBjbGFzcywgc2F5IFkuXG4gIDEwOlx0XG4gIDExOlx0XHQgIE5vdGUgdGhhdCB0aGUgYW5zd2VyIHRvIHRoaXMgcXVlc3Rpb24gZG9lc24mIzM5O3QgZGlyZWN0bHkgYWZmZWN0IHRoZVxuICAxMjpcdFx0ICBrZXJuZWw6IHNheWluZyBOIHdpbGwganVzdCBjYXVzZSB0aGUgY29uZmlndXJhdG9yIHRvIHNraXAgYWxsIHRoZVxuICAxMzpcdFx0ICBxdWVzdGlvbnMgYWJvdXQgdGhlc2UgY2FyZHMuIElmIHlvdSBzYXkgWSwgeW91IHdpbGwgYmUgYXNrZWQgZm9yXG4gIDE0Olx0XHQgIHlvdXIgc3BlY2lmaWMgY2FyZCBpbiB0aGUgZm9sbG93aW5nIHF1ZXN0aW9ucy5cbiAgMTU6XHRcbiAgMTY6XHRcdCAgRm9yIG1vcmUgaW5mb3JtYXRpb24gYW5kIGRvY3VtZW50YXRpb24gb24gdGhpcyBtb2R1bGUgeW91IGNhbiB2aXNpdDpcbiAgMTc6XHRcbiAgMTg6XHRcdCAgaHR0cHM6Ly93aXJlbGVzcy53aWtpLmtlcm5lbC5vcmcvZW4vdXNlcnMvRHJpdmVycy9hdGhcbiAgMTk6XHRcbiAgMjA6XHRcdCAgRm9yIGluZm9ybWF0aW9uIG9uIGFsbCBBdGhlcm9zIHdpcmVsZXNzIGRyaXZlcnMgdmlzaXQ6XG4gIDIxOlx0XG4gIDIyOlx0XHQgIGh0dHBzOi8vd2lyZWxlc3Mud2lraS5rZXJuZWwub3JnL2VuL3VzZXJzL0RyaXZlcnMvQXRoZXJvc1xuICAyMzpcdFxuICAyNDpcdGlmIFdMQU5fVkVORE9SX0FUSFxuICAyNTpcdFxuICAyNjpcdGNvbmZpZyBBVEhfREVCVUdcbiAgMjc6XHRcdGJvb2wgXCYjMzQ7QXRoZXJvcyB3aXJlbGVzcyBkZWJ1Z2dpbmdcJiMzNDtcbiAgMjg6XHRcdGhlbHBcbiAgMjk6XHRcdCAgU2F5IFksIGlmIHlvdSB3YW50IHRvIGRlYnVnIGF0aGVyb3Mgd2lyZWxlc3MgZHJpdmVycy5cbiAgMzA6XHRcdCAgUmlnaHQgbm93IG9ubHkgYXRoOWsgbWFrZXMgdXNlIG9mIHRoaXMuXG4gIDMxOlx0XG4gIDMyOlx0Y29uZmlnIEFUSF9UUkFDRVBPSU5UU1xuICAzMzpcdFx0Ym9vbCBcJiMzNDtBdGhlcm9zIHdpcmVsZXNzIHRyYWNpbmdcJiMzNDtcbiAgMzQ6XHRcdGRlcGVuZHMgb24gQVRIX0RFQlVHXG4gIDM1Olx0XHRkZXBlbmRzIG9uIEVWRU5UX1RSQUNJTkdcbiAgMzY6XHRcdGhlbHBcbiAgMzc6XHRcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0cmFjZXBvaW50cyBmb3IgYXRoZXJvcyB3aXJlbGVzcyBkcml2ZXJzLlxuICAzODpcdFx0ICBDdXJyZW50bHksIGF0aDlrIG1ha2VzIHVzZSBvZiB0aGlzIGZhY2lsaXR5LlxuICAzOTpcdFxuICA0MDpcdGNvbmZpZyBBVEhfUkVHX0RZTkFNSUNfVVNFUl9SRUdfSElOVFNcbiAgNDE6XHRcdGJvb2wgXCYjMzQ7QXRoZXJvcyBkeW5hbWljIHVzZXIgcmVndWxhdG9yeSBoaW50c1wmIzM0O1xuICA0MjpcdFx0ZGVwZW5kcyBvbiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcbiAgNDM6XHRcdGRlZmF1bHQgblxuICA0NDpcdFx0aGVscFxuICA0NTpcdFx0ICBTYXkgTi4gVGhpcyBzaG91bGQgb25seSBiZSBlbmFibGVkIGluIGNvdW50cmllcyB3aGVyZVxuICA0NjpcdFx0ICB0aGlzIGZlYXR1cmUgaXMgZXhwbGljaXRseSBhbGxvd2VkIGFuZCBvbmx5IG9uIGNhcmRzIHRoYXRcbiAgNDc6XHRcdCAgc3BlY2lmaWNhbGx5IGhhdmUgYmVlbiB0ZXN0ZWQgZm9yIHRoaXMuXG4gIDQ4Olx0XG4gIDQ5Olx0Y29uZmlnIEFUSF9SRUdfRFlOQU1JQ19VU0VSX0NFUlRfVEVTVElOR1xuICA1MDpcdFx0Ym9vbCBcJiMzNDtBdGhlcm9zIGR5bmFtaWMgdXNlciByZWd1bGF0b3J5IHRlc3RpbmdcJiMzNDtcbiAgNTE6XHRcdGRlcGVuZHMgb24gQVRIX1JFR19EWU5BTUlDX1VTRVJfUkVHX0hJTlRTIFx1MDAyNlx1MDAyNiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcbiAgNTI6XHRcdGRlZmF1bHQgblxuICA1MzpcdFx0aGVscFxuICA1NDpcdFx0ICBTYXkgTi4gVGhpcyBzaG91bGQgb25seSBiZSBlbmFibGVkIG9uIHN5c3RlbXNcbiAgNTU6XHRcdCAgdW5kZXJnb2luZyBjZXJ0aWZpY2F0aW9uIHRlc3RpbmcuXG4gIDU2Olx0XG4gIDU3Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9LY29uZmlnXCYjMzQ7XG4gIDU4Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnXCYjMzQ7XG4gIDU5Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9jYXJsOTE3MC9LY29uZmlnXCYjMzQ7XG4gIDYwOlx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZ1wmIzM0O1xuICA2MTpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXI1NTIzL0tjb25maWdcJiMzNDtcbiAgNjI6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvS2NvbmZpZ1wmIzM0O1xuICA2MzpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWdcJiMzNDtcbiAgNjQ6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvS2NvbmZpZ1wmIzM0O1xuICA2NTpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWdcJiMzNDtcbiAgNjY6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnXCYjMzQ7XG4gIDY3Olx0XG4gIDY4Olx0ZW5kaWZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxMTo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTU0OQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHRoZSBvbmUgdGhpbmtpbmcgaXQ6CgoqKkRpdmluZyBpbnRvIHRoZSBBdGhlcm9zIERyaXZlciBNYWtlZmlsZSoqCgpPa2F5LCB0aW1lIHRvIGdldCB0byB0aGUgaGVhcnQgb2YgdGhpcyB3aXJlbGVzcyBkcml2ZXIuIE15IGd1dCB0ZWxscyBtZSB0aGF0IGFueSBtb2RpZmljYXRpb25zIG9yIGRlZXBlciB1bmRlcnN0YW5kaW5nIG9mIHRoaXMgYXRoZXJvcyBkcml2ZXIgc3RhcnRzIHdpdGggaXRzIGJ1aWxkIGNvbmZpZ3VyYXRpb24uIExldCYjMzk7cyBzZWUuLi4gSSYjMzk7bGwganVtcCByaWdodCBpbnRvIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL01ha2VmaWxlYC4gVGhpcyBpcyB3aGVyZSB0aGUgbWFnaWMgaGFwcGVucyDigJMgd2hlcmUgYWxsIHRoZSBwaWVjZXMgZ2V0IGdsdWVkIHRvZ2V0aGVyLCB3aGVyZSB0aGUgZGVwZW5kZW5jaWVzIGFyZSBkZWZpbmVkLCBhbmQgaG93IHRoZSBkcml2ZXIgdWx0aW1hdGVseSBnZXRzIGNvbXBpbGVkLiBJJiMzOTtsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHN0cnVjdHVyZTogd2hhdCB0YXJnZXRzIGFyZSBkZWZpbmVkLCB3aGljaCBzb3VyY2UgZmlsZXMgYXJlIGluY2x1ZGVkLCBhbmQgaG93IHRoZSBvdmVyYWxsIGJ1aWxkIHByb2Nlc3MgaXMgb3JjaGVzdHJhdGVkLiBIb3BlZnVsbHksIHRoaXMgTWFrZWZpbGUgaXMgd2VsbC1zdHJ1Y3R1cmVkIGFuZCBjb21tZW50ZWQuIEkmIzM5O20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGFueSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBiYXNlZCBvbiBrZXJuZWwgdmVyc2lvbnMsIGhhcmR3YXJlIHBsYXRmb3Jtcywgb3IgZmVhdHVyZSBmbGFncy4gSSBleHBlY3QgdG8gYmUgYWJsZSB0byB1bmRlcnN0YW5kIHRoZSBkaWZmZXJlbnQgYXRoIGRyaXZlciB2ZXJzaW9ucyBpZiB0aGV5IGV4aXN0LCBhbmQgdGhlIG1vZHVsZSBhcmNoaXRlY3R1cmUuIFRoYXQgc2hvdWxkIHByb3ZpZGUgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGZvciB3aGF0ZXZlciBJJiMzOTttIHRyb3VibGVzaG9vdGluZyBvciBpbnZlc3RpZ2F0aW5nLiBMZXQmIzM5O3MgZ2V0IHRvIGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxMTo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9NYWtlZmlsZSYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IElTQ1xuICAgMjpcdG9iai0kKENPTkZJR19BVEg1SylcdFx0JiM0Mzs9IGF0aDVrL1xuICAgMzpcdG9iai0kKENPTkZJR19BVEg5S19IVylcdFx0JiM0Mzs9IGF0aDlrL1xuICAgNDpcdG9iai0kKENPTkZJR19DQVJMOTE3MClcdFx0JiM0Mzs9IGNhcmw5MTcwL1xuICAgNTpcdG9iai0kKENPTkZJR19BVEg2S0wpXHRcdCYjNDM7PSBhdGg2a2wvXG4gICA2Olx0b2JqLSQoQ09ORklHX0FSNTUyMylcdFx0JiM0Mzs9IGFyNTUyMy9cbiAgIDc6XHRvYmotJChDT05GSUdfV0lMNjIxMClcdFx0JiM0Mzs9IHdpbDYyMTAvXG4gICA4Olx0b2JqLSQoQ09ORklHX0FUSDEwSylcdFx0JiM0Mzs9IGF0aDEway9cbiAgIDk6XHRvYmotJChDT05GSUdfV0NOMzZYWClcdFx0JiM0Mzs9IHdjbjM2eHgvXG4gIDEwOlx0b2JqLSQoQ09ORklHX0FUSDExSylcdFx0JiM0Mzs9IGF0aDExay9cbiAgMTE6XHRvYmotJChDT05GSUdfQVRIMTJLKVx0XHQmIzQzOz0gYXRoMTJrL1xuICAxMjpcdFxuICAxMzpcdG9iai0kKENPTkZJR19BVEhfQ09NTU9OKVx0JiM0Mzs9IGF0aC5vXG4gIDE0Olx0XG4gIDE1Olx0YXRoLW9ianMgOj1cdG1haW4ubyBcXFxuICAxNjpcdFx0XHRyZWdkLm8gXFxcbiAgMTc6XHRcdFx0aHcubyBcXFxuICAxODpcdFx0XHRrZXkubyBcXFxuICAxOTpcdFx0XHRkZnNfcGF0dGVybl9kZXRlY3Rvci5vIFxcXG4gIDIwOlx0XHRcdGRmc19wcmlfZGV0ZWN0b3Iub1xuICAyMTpcdFxuICAyMjpcdGF0aC0kKENPTkZJR19BVEhfREVCVUcpICYjNDM7PSBkZWJ1Zy5vXG4gIDIzOlx0YXRoLSQoQ09ORklHX0FUSF9UUkFDRVBPSU5UUykgJiM0Mzs9IHRyYWNlLm9cbiAgMjQ6XHRcbiAgMjU6XHRDRkxBR1NfdHJhY2UubyA6PSAtSSQoc3JjKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxMTo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjI0OAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDUzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBCdWlsZCBEZXBlbmRlbmN5IENoYWluKioKClJpZ2h0LCBzbyBJIG5lZWQgdG8gdHJhY2UgdGhpcyBkZXBlbmRlbmN5LiBNeSBzdGFydGluZyBwb2ludCBpcyB0aGF0IGBDT05GSUdfQVRIX0NPTU1PTmAgbGVhZHMgdG8gdGhlIGNvbXBpbGF0aW9uIG9mIGBhdGgub2AsIGFuZCBjcnVjaWFsbHksIHRoYXQgaW5jbHVkZXMgYHJlZ2Qub2AuIFRoYXQmIzM5O3MgdGhlIGNvcmUgcmVsYXRpb25zaGlwIEkmIzM5O20gdHJ5aW5nIHRvIHVuZGVyc3RhbmQg4oCTIGhvdyBgcmVnZC5vYCBnZXRzIGJ1aWx0IGludG8gdGhlIGltYWdlLiBOb3csIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgYWN0dWFsbHkgKnNlbGVjdHMqIG9yICplbmFibGVzKiBgQVRIX0NPTU1PTmAgaW4gdGhlIGZpcnN0IHBsYWNlLiBNeSBpbW1lZGlhdGUgYXBwcm9hY2ggd2lsbCBiZSB0byBsZXZlcmFnZSB0aGUgS2NvbmZpZyBmaWxlcywgSSBuZWVkIHRvIHVzZSBgZ3JlcGAgdG8gaHVudCBmb3IgaW5zdGFuY2VzIG9mIGBBVEhfQ09NTU9OYCBhbmQgc2VlIHdoZXJlIGl0IHNob3dzIHVwIGFzIGEgZGVwZW5kZW5jeS4gSSYjMzk7bGwgc2VhcmNoIHRvIGRldGVybWluZSB3aGF0IG90aGVyIGNvbmZpZ3MgYXJlIGludm9sdmVkIGluIGVuYWJsaW5nIGBBVEhfQ09NTU9OYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTE6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7QVRIX0NPTU1PTiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IElTQ1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL0tjb25maWc6Mjpjb25maWcgQVRIX0NPTU1PTlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL0tjb25maWctMy1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL01ha2VmaWxlPTExPW9iai0kKENPTkZJR19BVEgxMkspXHRcdCYjNDM7PSBhdGgxMmsvXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvTWFrZWZpbGUtMTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvTWFrZWZpbGU6MTM6b2JqLSQoQ09ORklHX0FUSF9DT01NT04pXHQmIzQzOz0gYXRoLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9NYWtlZmlsZS0xNC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXI1NTIzL0tjb25maWc9Mj1jb25maWcgQVI1NTIzXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2FyNTUyMy9LY29uZmlnLTQtXHRkZXBlbmRzIG9uIE1BQzgwMjExIFx1MDAyNlx1MDAyNiBVU0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hcjU1MjMvS2NvbmZpZzo1Olx0c2VsZWN0IEFUSF9DT01NT05cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hcjU1MjMvS2NvbmZpZy02LVx0c2VsZWN0IEZXX0xPQURFUlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZz0yPWNvbmZpZyBBVEgxMEtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctNC1cdGRlcGVuZHMgb24gTUFDODAyMTEgXHUwMDI2XHUwMDI2IEhBU19ETUFcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZzo1Olx0c2VsZWN0IEFUSF9DT01NT05cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy02LVx0c2VsZWN0IENSQzMyXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnPTI9Y29uZmlnIEFUSDExS1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy00LVx0ZGVwZW5kcyBvbiBNQUM4MDIxMSBcdTAwMjZcdTAwMjYgSEFTX0RNQVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjU6XHRzZWxlY3QgQVRIX0NPTU1PTlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTYtXHRzZWxlY3QgUUNPTV9RTUlfSEVMUEVSU1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9LY29uZmlnPTI9Y29uZmlnIEFUSDVLXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDVrL0tjb25maWctNC1cdGRlcGVuZHMgb24gKFBDSSB8fCBBVEgyNSkgXHUwMDI2XHUwMDI2IE1BQzgwMjExXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNWsvS2NvbmZpZzo1Olx0c2VsZWN0IEFUSF9DT01NT05cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9LY29uZmlnLTYtXHRzZWxlY3QgTUFDODAyMTFfTEVEUyBpZiBMRURTX0NMQVNTPXkgfHwgTEVEU19DTEFTUz1NQUM4MDIxMVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnPTQ9Y29uZmlnIEFUSDlLX0NPTU1PTlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNS1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo2Olx0c2VsZWN0IEFUSF9DT01NT05cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTctY29uZmlnIEFUSDlLX0NPTU1PTl9ERUJVR1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9jYXJsOTE3MC9LY29uZmlnPTI9Y29uZmlnIENBUkw5MTcwXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL0tjb25maWctNC1cdGRlcGVuZHMgb24gVVNCIFx1MDAyNlx1MDAyNiBNQUM4MDIxMVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL0tjb25maWc6NTpcdHNlbGVjdCBBVEhfQ09NTU9OXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvS2NvbmZpZy02LVx0c2VsZWN0IEZXX0xPQURFUlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxMTo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzM0MQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDY0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgVVNCIERyaXZlciBSZWd1bGF0b3J5IERvbWFpbiBJbml0aWFsaXphdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbi4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggVVNCIGRyaXZlcnMgYXJlIHVzaW5nIHRoZSBgYXRoX3JlZ2RfaW5pdGAgZnVuY3Rpb24gb3IgdGhlIGBhdGhfd29ybGRfcmVnZG9tXypgIHN5bWJvbHMg4oCTIHRob3NlIGFyZSBrZXkgaW5kaWNhdG9ycyBvZiBob3cgcmVndWxhdG9yeSBkb21haW5zIGFyZSBiZWluZyBoYW5kbGVkLiBNeSBpbml0aWFsIGZvY3VzIHdpbGwgYmUgb24gdGhlIGBjYXJsOTE3MGAgYW5kIGBhdGg5a19odGNgIGRyaXZlcnMsIGdpdmVuIHRoZWlyIGhpc3RvcnkgYW5kIHBvdGVudGlhbCBmb3IgcmVndWxhdG9yeSBpbnRlcmFjdGlvbnMuIEkmIzM5O2xsIG5lZWQgdG8gc2NydXRpbml6ZSB0aGVtIGNsb3NlbHkuIFRvIGdldCBhIGNvbXByZWhlbnNpdmUgdW5kZXJzdGFuZGluZyBvZiB0aGUgYGF0aDlrX2h0Y2AgZHJpdmVyJiMzOTtzIHJlZ3VsYXRvcnkgY29uZmlndXJhdGlvbiwgSSBzaG91bGQgcHJvYmFibHkgYWxzbyBjaGVjayBpdHMgYXNzb2NpYXRlZCBLY29uZmlnIGZpbGUuIFRoaXMgd2lsbCBsaWtlbHkgc2hvdyB0aGUgb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzIHJlbGF0ZWQgdG8gcmVndWxhdG9yeSBkb21haW4gc3VwcG9ydCB3aXRoaW4gdGhhdCBzcGVjaWZpYyBkcml2ZXIuIFRpbWUgdG8gZGlnIGluIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxMTo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtBVEg5S19IVEMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc9MTM9Y29uZmlnIEFUSDlLX0JUQ09FWF9TVVBQT1JUXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNC1cdGJvb2wgXCYjMzQ7QXRoZXJvcyBibHVldG9vdGggY29leGlzdGVuY2Ugc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTU6XHRkZXBlbmRzIG9uIChBVEg5SyB8fCBBVEg5S19IVEMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNi1cdGRlZmF1bHQgeVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnPTE1Nj1jb25maWcgQVRIOUtfUENJX05PX0VFUFJPTVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE3MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjE3Mjpjb25maWcgQVRIOUtfSFRDXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNzMtXHR0cmlzdGF0ZSBcJiMzNDtBdGhlcm9zIEhUQyBiYXNlZCB3aXJlbGVzcyBjYXJkcyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTg2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTg3OmNvbmZpZyBBVEg5S19IVENfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTg4LVx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDlrX2h0YyBkZWJ1Z2dpbmdcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjE4OTpcdGRlcGVuZHMgb24gQVRIOUtfSFRDIFx1MDAyNlx1MDAyNiBERUJVR19GU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTkwLVx0c2VsZWN0IEFUSDlLX0NPTU1PTl9ERUJVR1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnPTIwNj1jb25maWcgQVRIOUtfQ09NTU9OX1NQRUNUUkFMXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0yMDctXHRib29sIFwmIzM0O0F0aGVyb3MgYXRoOWsvYXRoOWtfaHRjIHNwZWN0cmFsIHNjYW4gc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MjA4Olx0ZGVwZW5kcyBvbiBBVEg5S19ERUJVR0ZTIHx8IEFUSDlLX0hUQ19ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0yMDktXHRzZWxlY3QgUkVMQVlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU9Njg9YXRoOWtfaHRjLXkgJiM0Mzs9XHRodGNfaHN0Lm8gXFxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtNzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6Nzc6YXRoOWtfaHRjLSQoQ09ORklHX0FUSDlLX0hUQ19ERUJVR0ZTKSAmIzQzOz0gaHRjX2Rydl9kZWJ1Zy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtNzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6Nzk6b2JqLSQoQ09ORklHX0FUSDlLX0hUQykgJiM0Mzs9IGF0aDlrX2h0Yy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtODAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwM19lZXByb20uYz0zMzkwPXN0YXRpYyBib29sIGF0aDlrX2h3X2FyOTMwMF9maWxsX2VlcHJvbShzdHJ1Y3QgYXRoX2h3ICphaClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAzX2VlcHJvbS5jLTM0MDAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAzX2VlcHJvbS5jOjM0MDE6I2lmIGRlZmluZWQoQ09ORklHX0FUSDlLX0RFQlVHRlMpIHx8IGRlZmluZWQoQ09ORklHX0FUSDlLX0hUQ19ERUJVR0ZTKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwM19lZXByb20uYy0zNDAyLXN0YXRpYyB1MzIgYXI5MDAzX2R1bXBfbW9kYWxfZWVwcm9tKGNoYXIgKmJ1ZiwgdTMyIGxlbiwgdTMyIHNpemUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYz0yMzI9c3RhdGljIGlubGluZSB2b2lkIGF0aDlrX3NrYl9xdWV1ZV9jb21wbGV0ZShzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0yMzgtXHR3aGlsZSAoKHNrYiA9IF9fc2tiX2RlcXVldWUocXVldWUpKSAhPSBOVUxMKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjIzOTojaWZkZWYgQ09ORklHX0FUSDlLX0hUQ19ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTI0MC1cdFx0aW50IGxuID0gc2tiLVx1MDAzZWxlbjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jPTM3Nj1zdGF0aWMgaW50IGhpZl91c2Jfc2VuZF90eChzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0zOTktXHQvKiBNZ210L0JlYWNvbiBmcmFtZXMgZG9uJiMzOTt0IHVzZSB0aGUgVFggYnVmZmVyIHBvb2wgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NDAwOlx0aWYgKCh0eF9jdGwtXHUwMDNldHlwZSA9PSBBVEg5S19IVENfTUdNVCkgfHxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NDAxOlx0ICAgICh0eF9jdGwtXHUwMDNldHlwZSA9PSBBVEg5S19IVENfQkVBQ09OKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00MDItXHRcdHJldCA9IGhpZl91c2Jfc2VuZF9tZ210KGhpZl9kZXYsIHNrYik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00MDYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjQwNzpcdGlmICgodHhfY3RsLVx1MDAzZXR5cGUgPT0gQVRIOUtfSFRDX05PUk1BTCkgfHxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NDA4Olx0ICAgICh0eF9jdGwtXHUwMDNldHlwZSA9PSBBVEg5S19IVENfQU1QRFUpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQwOS1cdFx0X19za2JfcXVldWVfdGFpbChcdTAwMjZoaWZfZGV2LVx1MDAzZXR4LnR4X3NrYl9xdWV1ZSwgc2tiKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jPTQ4Nz1zdGF0aWMgaW5saW5lIGJvb2wgY2hlY2tfaW5kZXgoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTggaWR4KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNDkyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo0OTM6XHRpZiAoKHR4X2N0bC1cdTAwM2V0eXBlID09IEFUSDlLX0hUQ19BTVBEVSkgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQ5NC1cdCAgICAodHhfY3RsLVx1MDAzZXN0YV9pZHggPT0gaWR4KSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9NTY9ZW51bSBodGNfb3Btb2RlIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6NjU6I2RlZmluZSBBVEg5S19IVENfQU1QRFUgIDFcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo2NjojZGVmaW5lIEFUSDlLX0hUQ19OT1JNQUwgMlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjY3OiNkZWZpbmUgQVRIOUtfSFRDX0JFQUNPTiAzXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6Njg6I2RlZmluZSBBVEg5S19IVENfTUdNVCAgIDRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC02OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo3MDojZGVmaW5lIEFUSDlLX0hUQ19UWF9DVFNPTkxZICAgICAgMHgxXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6NzE6I2RlZmluZSBBVEg5S19IVENfVFhfUlRTQ1RTICAgICAgIDB4MlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTcyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTczPXN0cnVjdCB0eF9mcmFtZV9oZHIge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC03Ny1cdHU4IHRpZG5vO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjc4Olx0X19iZTMyIGZsYWdzOyAvKiBBVEg5S19IVENfVFhfKiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTc5LVx0dTgga2V5X3R5cGU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTE5ND1zdHJ1Y3QgYXRoOWtfaHRjX3RhcmdldF9yeF9zdGF0cyB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTE5OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyMDA6I2RlZmluZSBBVEg5S19IVENfTUFYX1ZJRiAyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MjAxOiNkZWZpbmUgQVRIOUtfSFRDX01BWF9CQ05fVklGIDJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0yMDItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTI0OT1zdHJ1Y3QgYXRoOWtfdmlmX2l0ZXJfZGF0YSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI1My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyNTQ6I2RlZmluZSBBVEg5S19IVENfTUFYX1NUQSA4XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MjU1OiNkZWZpbmUgQVRIOUtfSFRDX01BWF9USUQgOFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI1Ni1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9MjY0PXN0cnVjdCBhdGg5a19odGNfc3RhIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0yNjUtXHR1OCBpbmRleDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyNjY6XHRlbnVtIHRpZF9hZ2dyX3N0YXRlIHRpZF9zdGF0ZVtBVEg5S19IVENfTUFYX1RJRF07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMjY3LVx0c3RydWN0IHdvcmtfc3RydWN0IHJjX3VwZGF0ZV93b3JrO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0yNzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MjcxOiNkZWZpbmUgQVRIOUtfSFRDX1JYQlVGIDI1NlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI3Mi0jZGVmaW5lIEhUQ19SWF9GUkFNRV9IRUFERVJfU0laRSA0MFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD0yODE9c3RydWN0IGF0aDlrX2h0Y19yeCB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI4Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyODc6I2RlZmluZSBBVEg5S19IVENfVFhfQ0xFQU5VUF9JTlRFUlZBTCA1MCAvKiBtcyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI4ODojZGVmaW5lIEFUSDlLX0hUQ19UWF9USU1FT1VUX0lOVEVSVkFMIDMwMDAgLyogbXMgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyODk6I2RlZmluZSBBVEg5S19IVENfVFhfUkVTRVJWRSAxMFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI5MDojZGVmaW5lIEFUSDlLX0hUQ19UWF9USU1FT1VUX0NPVU5UIDQwXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MjkxOiNkZWZpbmUgQVRIOUtfSFRDX1RYX1RIUkVTSE9MRCAoTUFYX1RYX0JVRl9OVU0gLSBBVEg5S19IVENfVFhfUkVTRVJWRSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0yOTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MjkzOiNkZWZpbmUgQVRIOUtfSFRDX09QX1RYX1FVRVVFU19TVE9QIEJJVCgwKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI5NDojZGVmaW5lIEFUSDlLX0hUQ19PUF9UWF9EUkFJTiAgICAgICBCSVQoMSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0yOTUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTMxMT1zdHJ1Y3QgYXRoOWtfaHRjX3R4X2N0bCB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MzEyOlx0dTggdHlwZTsgLyogQVRIOUtfSFRDXyogKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0zMTMtXHR1OCBlcGlkO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD0zMTk9c3RhdGljIGlubGluZSBzdHJ1Y3QgYXRoOWtfaHRjX3R4X2N0bCAqSFRDX1NLQl9DQihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0zMjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MzI4OiNpZmRlZiBDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0zMjktI2RlZmluZSBfX1NUQVRfU0FGRShoaWZfZGV2LCBleHByKVx0ZG8geyAoKGhpZl9kZXYpLVx1MDAzZWh0Y19oYW5kbGUtXHUwMDNlZHJ2X3ByaXYgPyAoZXhwcikgOiAwKTsgfSB3aGlsZSAoMClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9Mzg4PXN0YXRpYyBpbmxpbmUgdm9pZCBhdGg5a19odGNfZXJyX3N0YXRfcngoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0zOTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MzkzOiNlbmRpZiAvKiBDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlMgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0zOTQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTQwOT1zdHJ1Y3QgaHRjX2JlYWNvbiB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTQxNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo0MTY6XHRzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqYnNsb3RbQVRIOUtfSFRDX01BWF9CQ05fVklGXTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC00MTctXHR1MzIgYm1pc3NjbnQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTQ1Nj1zdHJ1Y3QgYXRoOWtfaHRjX3ByaXYge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC00NzgtXHR1OCBzdGFfc2xvdDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo0Nzk6XHR1OCB2aWZfc3RhX3Bvc1tBVEg5S19IVENfTUFYX1ZJRl07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNDgwLVx0dTggbnVtX2lic3NfdmlmO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC01MzUtXHRzdHJ1Y3QgZGVsYXllZF93b3JrIGR1dHlfY3ljbGVfd29yaztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo1MzY6I2lmZGVmIENPTkZJR19BVEg5S19IVENfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTUzNy1cdHN0cnVjdCBhdGg5a19kZWJ1ZyBkZWJ1Zztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9NjQxPWludCBhdGg5a19odGNfcmVzdW1lKHN0cnVjdCBodGNfdGFyZ2V0ICpodGNfaGFuZGxlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC02NDItI2VuZGlmXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6NjQzOiNpZmRlZiBDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC02NDQtaW50IGF0aDlrX2h0Y19pbml0X2RlYnVnKHN0cnVjdCBhdGhfaHcgKmFoKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9NjQ4PXN0YXRpYyBpbmxpbmUgdm9pZCBhdGg5a19odGNfZGVpbml0X2RlYnVnKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNjUwLX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo2NTE6I2VuZGlmIC8qIENPTkZJR19BVEg5S19IVENfREVCVUdGUyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTY1Mi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYz0xMTE9c3RhdGljIHZvaWQgYXRoOWtfaHRjX2JlYWNvbl9jb25maWdfYXAoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTExNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jOjExNzpcdGF0aDlrX2Ntbl9iZWFjb25fY29uZmlnX2FwKGFoLCBjb25mLCBBVEg5S19IVENfTUFYX0JDTl9WSUYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMTE4LVx0YXRoOWtfaHRjX2JlYWNvbl9pbml0KHByaXYsIGNvbmYsIGZhbHNlKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYz0xOTE9c3RhdGljIHZvaWQgYXRoOWtfaHRjX3NlbmRfYmVhY29uKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYy0yNDItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYzoyNDM6XHR0eF9jdGwtXHUwMDNldHlwZSA9IEFUSDlLX0hUQ19CRUFDT047XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYy0yNDQtXHR0eF9jdGwtXHUwMDNlZXBpZCA9IHByaXYtXHUwMDNlYmVhY29uX2VwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jPTI2ND1zdGF0aWMgaW50IGF0aDlrX2h0Y19jaG9vc2VfYnNsb3Qoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTI3Ni1cdHRzZnR1ID0gVFNGX1RPX1RVKHRzZiBcdTAwM2VcdTAwM2UgMzIsIHRzZik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYzoyNzc6XHRzbG90ID0gKCh0c2Z0dSAlIGludHZhbCkgKiBBVEg5S19IVENfTUFYX0JDTl9WSUYpIC8gaW50dmFsO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmM6Mjc4Olx0c2xvdCA9IEFUSDlLX0hUQ19NQVhfQkNOX1ZJRiAtIHNsb3QgLSAxO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMjc5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jPTMyNT12b2lkIGF0aDlrX2h0Y19hc3NpZ25fYnNsb3Qoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTMzMi1cdHNwaW5fbG9ja19iaChcdTAwMjZwcml2LVx1MDAzZWJlYWNvbl9sb2NrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jOjMzMzpcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFUSDlLX0hUQ19NQVhfQkNOX1ZJRjsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTMzNC1cdFx0aWYgKHByaXYtXHUwMDNlYmVhY29uLmJzbG90W2ldID09IE5VTEwpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYz0zNjU9dm9pZCBhdGg5a19odGNfc2V0X3RzZmFkanVzdChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMzgwLVx0ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYzozODE6XHR0c2ZhZGp1c3QgPSBjdXJfY29uZi1cdTAwM2ViZWFjb25faW50ZXJ2YWwgKiBhdnAtXHUwMDNlYnNsb3QgLyBBVEg5S19IVENfTUFYX0JDTl9WSUY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYy0zODItXHRhdnAtXHUwMDNldHNmYWRqdXN0ID0gY3B1X3RvX2xlNjQoVFVfVE9fVVNFQyh0c2ZhZGp1c3QpKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jPTM5OD1zdGF0aWMgY29uc3QgY2hhciBhdGg5a19odGNfZ3N0cmluZ3Nfc3RhdHNbXVtFVEhfR1NUUklOR19MRU5dID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMtNDE4LX07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jOjQxOTojZGVmaW5lIEFUSDlLX0hUQ19TU1RBVFNfTEVOIEFSUkFZX1NJWkUoYXRoOWtfaHRjX2dzdHJpbmdzX3N0YXRzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYy00MjAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYz00MzA9aW50IGF0aDlrX2h0Y19nZXRfZXRfc3NldF9jb3VudChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jLTQzMy1cdGlmIChzc2V0ID09IEVUSF9TU19TVEFUUylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM6NDM0Olx0XHRyZXR1cm4gQVRIOUtfSFRDX1NTVEFUU19MRU47XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jLTQzNS1cdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM9NDQ4PXZvaWQgYXRoOWtfaHRjX2dldF9ldF9zdGF0cyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jLTQ3My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM6NDc0Olx0V0FSTl9PTihpICE9IEFUSDlLX0hUQ19TU1RBVFNfTEVOKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMtNDc1LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM9NjA2PXN0YXRpYyBpbnQgYXRoOWtfaW5pdF9wcml2KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmMtNjczLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jOjY3NDpcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFUSDlLX0hUQ19NQVhfQkNOX1ZJRjsgaSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmMtNjc1LVx0XHRwcml2LVx1MDAzZWJlYWNvbi5ic2xvdFtpXSA9IE5VTEw7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jPTE4ND12b2lkIGF0aDlrX2h0Y19yZXNldChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTIzMy1cdG1vZF90aW1lcihcdTAwMjZwcml2LVx1MDAzZXR4LmNsZWFudXBfdGltZXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6MjM0Olx0XHQgIGppZmZpZXMgJiM0MzsgbXNlY3NfdG9famlmZmllcyhBVEg5S19IVENfVFhfQ0xFQU5VUF9JTlRFUlZBTCkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTIzNS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM9MjQwPXN0YXRpYyBpbnQgYXRoOWtfaHRjX3NldF9jaGFubmVsKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMzExLVx0bW9kX3RpbWVyKFx1MDAyNnByaXYtXHUwMDNldHguY2xlYW51cF90aW1lcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzozMTI6XHRcdCAgamlmZmllcyAmIzQzOyBtc2Vjc190b19qaWZmaWVzKEFUSDlLX0hUQ19UWF9DTEVBTlVQX0lOVEVSVkFMKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMzEzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYz0zNTA9c3RhdGljIGludCBhdGg5a19odGNfYWRkX21vbml0b3JfaW50ZXJmYWNlKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMzU3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjM1ODpcdGlmICgocHJpdi1cdTAwM2VudmlmcyBcdTAwM2U9IEFUSDlLX0hUQ19NQVhfVklGKSB8fFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjM1OTpcdCAgICAocHJpdi1cdTAwM2Vuc3RhdGlvbnMgXHUwMDNlPSBBVEg5S19IVENfTUFYX1NUQSkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0zNjAtXHRcdHJldCA9IC1FTk9CVUZTO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0zNjQtXHRzdGFfaWR4ID0gZmZ6KHByaXYtXHUwMDNlc3RhX3Nsb3QpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjM2NTpcdGlmICgoc3RhX2lkeCBcdTAwM2MgMCkgfHwgKHN0YV9pZHggXHUwMDNlIEFUSDlLX0hUQ19NQVhfU1RBKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTM2Ni1cdFx0cmV0ID0gLUVOT0JVRlM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jPTQ2Nj1zdGF0aWMgaW50IGF0aDlrX2h0Y19hZGRfc3RhdGlvbihzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTQ3Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzo0Nzg6XHRpZiAocHJpdi1cdTAwM2Vuc3RhdGlvbnMgXHUwMDNlPSBBVEg5S19IVENfTUFYX1NUQSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy00NzktXHRcdHJldHVybiAtRU5PQlVGUztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtNDgxLVx0c3RhX2lkeCA9IGZmeihwcml2LVx1MDAzZXN0YV9zbG90KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzo0ODI6XHRpZiAoKHN0YV9pZHggXHUwMDNjIDApIHx8IChzdGFfaWR4IFx1MDAzZSBBVEg5S19IVENfTUFYX1NUQSkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtNDgzLVx0XHRyZXR1cm4gLUVOT0JVRlM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jPTcwMj1zdGF0aWMgaW50IGF0aDlrX2h0Y190eF9hZ2dyX29wZXIoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy03MTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6NzE0Olx0aWYgKHRpZCBcdTAwM2U9IEFUSDlLX0hUQ19NQVhfVElEKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTcxNS1cdFx0cmV0dXJuIC1FSU5WQUw7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jPTkwNz1zdGF0aWMgaW50IGF0aDlrX2h0Y19zdGFydChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtOTYwLVx0c3Bpbl9sb2NrX2JoKFx1MDAyNnByaXYtXHUwMDNldHgudHhfbG9jayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6OTYxOlx0cHJpdi1cdTAwM2V0eC5mbGFncyBcdTAwMjY9IH5BVEg5S19IVENfT1BfVFhfUVVFVUVTX1NUT1A7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtOTYyLVx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2cHJpdi1cdTAwM2V0eC50eF9sb2NrKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtOTY2LVx0bW9kX3RpbWVyKFx1MDAyNnByaXYtXHUwMDNldHguY2xlYW51cF90aW1lcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzo5Njc6XHRcdCAgamlmZmllcyAmIzQzOyBtc2Vjc190b19qaWZmaWVzKEFUSDlLX0hUQ19UWF9DTEVBTlVQX0lOVEVSVkFMKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtOTY4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYz0xNjU4PXN0YXRpYyBpbnQgYXRoOWtfaHRjX2FtcGR1X2FjdGlvbihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMTY4OC1cdGNhc2UgSUVFRTgwMjExX0FNUERVX1RYX09QRVJBVElPTkFMOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjE2ODk6XHRcdGlmICh0aWQgXHUwMDNlPSBBVEg5S19IVENfTUFYX1RJRCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTE2OTAtXHRcdFx0cmV0ID0gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM9MTg3ND1zdHJ1Y3QgaWVlZTgwMjExX29wcyBhdGg5a19odGNfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0xOTA2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjE5MDc6I2lmZGVmIENPTkZJR19BVEg5S19IVENfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTE5MDgtXHQuZ2V0X2V0X3NzZXRfY291bnQgID0gYXRoOWtfaHRjX2dldF9ldF9zc2V0X2NvdW50LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz0yMz1zdGF0aWMgY29uc3QgaW50IHN1YnR5cGVfdHhxX3RvX2h3cVtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0yOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzozMDojZGVmaW5lIEFUSDlLX0hUQ19JTklUX1RYUShzdWJ0eXBlKSBkbyB7XHRcdFx0XFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0zMS1cdFx0cWkudHFpX3N1YnR5cGUgPSBzdWJ0eXBlX3R4cV90b19od3Fbc3VidHlwZV07XHRcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz01Nj12b2lkIGF0aDlrX2h0Y19jaGVja19zdG9wX3F1ZXVlcyhzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTU5LVx0cHJpdi1cdTAwM2V0eC5xdWV1ZWRfY250JiM0MzsmIzQzOztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo2MDpcdGlmICgocHJpdi1cdTAwM2V0eC5xdWV1ZWRfY250IFx1MDAzZT0gQVRIOUtfSFRDX1RYX1RIUkVTSE9MRCkgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NjE6XHQgICAgIShwcml2LVx1MDAzZXR4LmZsYWdzIFx1MDAyNiBBVEg5S19IVENfT1BfVFhfUVVFVUVTX1NUT1ApKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NjI6XHRcdHByaXYtXHUwMDNldHguZmxhZ3MgfD0gQVRIOUtfSFRDX09QX1RYX1FVRVVFU19TVE9QO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTYzLVx0XHRpZWVlODAyMTFfc3RvcF9xdWV1ZXMocHJpdi1cdTAwM2Vodyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTY4PXZvaWQgYXRoOWtfaHRjX2NoZWNrX3dha2VfcXVldWVzKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNzAtXHRzcGluX2xvY2tfYmgoXHUwMDI2cHJpdi1cdTAwM2V0eC50eF9sb2NrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo3MTpcdGlmICgocHJpdi1cdTAwM2V0eC5xdWV1ZWRfY250IFx1MDAzYyBBVEg5S19IVENfVFhfVEhSRVNIT0xEKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo3MjpcdCAgICAocHJpdi1cdTAwM2V0eC5mbGFncyBcdTAwMjYgQVRIOUtfSFRDX09QX1RYX1FVRVVFU19TVE9QKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjczOlx0XHRwcml2LVx1MDAzZXR4LmZsYWdzIFx1MDAyNj0gfkFUSDlLX0hUQ19PUF9UWF9RVUVVRVNfU1RPUDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy03NC1cdFx0aWVlZTgwMjExX3dha2VfcXVldWVzKHByaXYtXHUwMDNlaHcpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz0yMTQ9c3RhdGljIHZvaWQgYXRoOWtfaHRjX3R4X21nbXQoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0yNDAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6MjQxOlx0dHhfY3RsLVx1MDAzZXR5cGUgPSBBVEg5S19IVENfTUdNVDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0yNDItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTI2MD1zdGF0aWMgdm9pZCBhdGg5a19odGNfdHhfZGF0YShzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTI5Mi1cdGlmICh0eF9pbmZvLVx1MDAzZWZsYWdzIFx1MDAyNiBJRUVFODAyMTFfVFhfQ1RMX0FNUERVKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6MjkzOlx0XHR0eF9jdGwtXHUwMDNldHlwZSA9IEFUSDlLX0hUQ19BTVBEVTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzoyOTQ6XHRcdHR4X2hkci5kYXRhX3R5cGUgPSBBVEg5S19IVENfQU1QRFU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMjk1LVx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzoyOTY6XHRcdHR4X2N0bC1cdTAwM2V0eXBlID0gQVRIOUtfSFRDX05PUk1BTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzoyOTc6XHRcdHR4X2hkci5kYXRhX3R5cGUgPSBBVEg5S19IVENfTk9STUFMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTI5OC1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMzEyLVx0XHRpZiAoc2tiLVx1MDAzZWxlbiBcdTAwM2UgcHJpdi1cdTAwM2Vody1cdTAwM2V3aXBoeS1cdTAwM2VydHNfdGhyZXNob2xkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjMxMzpcdFx0XHRmbGFncyB8PSBBVEg5S19IVENfVFhfUlRTQ1RTO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTMxNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0zMTUtXHQvKiBDVFMtdG8tc2VsZiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjMxNjpcdGlmICghKGZsYWdzIFx1MDAyNiBBVEg5S19IVENfVFhfUlRTQ1RTKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0zMTctXHQgICAgKHZpZiBcdTAwMjZcdTAwMjYgdmlmLVx1MDAzZWJzc19jb25mLnVzZV9jdHNfcHJvdCkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6MzE4Olx0XHRmbGFncyB8PSBBVEg5S19IVENfVFhfQ1RTT05MWTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0zMTktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTM5Mj1zdGF0aWMgaW5saW5lIGJvb2wgX19hdGg5a19odGNfY2hlY2tfdHhfYWdncihzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTM5Ny1cdHNwaW5fbG9ja19iaChcdTAwMjZwcml2LVx1MDAzZXR4LnR4X2xvY2spO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjM5ODpcdGlmICgodGlkIFx1MDAzYyBBVEg5S19IVENfTUFYX1RJRCkgXHUwMDI2XHUwMDI2IChpc3RhLVx1MDAzZXRpZF9zdGF0ZVt0aWRdID09IEFHR1JfU1RPUCkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMzk5LVx0XHRyZXQgPSB0cnVlO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz00NDU9c3RhdGljIHZvaWQgYXRoOWtfaHRjX3R4X3Byb2Nlc3Moc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00NzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NDc5Olx0aWYgKHR4cy1cdTAwM2V0c19mbGFncyBcdTAwMjYgQVRIOUtfSFRDX1RYU1RBVF9BQ0spIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00ODAtXHRcdHR4X2luZm8tXHUwMDNlZmxhZ3MgfD0gSUVFRTgwMjExX1RYX1NUQVRfQUNLO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00ODQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NDg1Olx0aWYgKHR4cy1cdTAwM2V0c19mbGFncyBcdTAwMjYgQVRIOUtfSFRDX1RYU1RBVF9GSUxUKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ4Ni1cdFx0dHhfaW5mby1cdTAwM2VmbGFncyB8PSBJRUVFODAyMTFfVFhfU1RBVF9UWF9GSUxURVJFRDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00ODctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NDg4Olx0aWYgKHR4cy1cdTAwM2V0c19mbGFncyBcdTAwMjYgQVRIOUtfSFRDX1RYU1RBVF9SVENfQ1RTKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ4OS1cdFx0cmF0ZS1cdTAwM2VmbGFncyB8PSBJRUVFODAyMTFfVFhfUkNfVVNFX1JUU19DVFM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ5MS1cdHJhdGUtXHUwMDNlY291bnQgPSAxO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjQ5MjpcdHJhdGUtXHUwMDNlaWR4ID0gTVModHhzLVx1MDAzZXRzX3JhdGUsIEFUSDlLX0hUQ19UWFNUQVRfUkFURSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDkzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjQ5NDpcdGlmICh0eHMtXHUwMDNldHNfZmxhZ3MgXHUwMDI2IEFUSDlLX0hUQ19UWFNUQVRfTUNTKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDk1LVx0XHRyYXRlLVx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9UWF9SQ19NQ1M7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDk2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjQ5NzpcdFx0aWYgKHR4cy1cdTAwM2V0c19mbGFncyBcdTAwMjYgQVRIOUtfSFRDX1RYU1RBVF9DVzQwKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ5OC1cdFx0XHRyYXRlLVx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9UWF9SQ180MF9NSFpfV0lEVEg7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NDk5Olx0XHRpZiAodHhzLVx1MDAzZXRzX2ZsYWdzIFx1MDAyNiBBVEg5S19IVENfVFhTVEFUX1NHSSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy01MDAtXHRcdFx0cmF0ZS1cdTAwM2VmbGFncyB8PSBJRUVFODAyMTFfVFhfUkNfU0hPUlRfR0k7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTUzOT12b2lkIGF0aDlrX2h0Y190eF9kcmFpbihzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTU0My1cdHNwaW5fbG9ja19iaChcdTAwMjZwcml2LVx1MDAzZXR4LnR4X2xvY2spO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjU0NDpcdHByaXYtXHUwMDNldHguZmxhZ3MgfD0gQVRIOUtfSFRDX09QX1RYX0RSQUlOO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTU0NS1cdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnByaXYtXHUwMDNldHgudHhfbG9jayk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTU3My1cdHNwaW5fbG9ja19iaChcdTAwMjZwcml2LVx1MDAzZXR4LnR4X2xvY2spO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjU3NDpcdHByaXYtXHUwMDNldHguZmxhZ3MgXHUwMDI2PSB+QVRIOUtfSFRDX09QX1RYX0RSQUlOO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTU3NS1cdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnByaXYtXHUwMDNldHgudHhfbG9jayk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTU3OD12b2lkIGF0aDlrX3R4X2ZhaWxlZF90YXNrbGV0KHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNTgyLVx0c3Bpbl9sb2NrKFx1MDAyNnByaXYtXHUwMDNldHgudHhfbG9jayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NTgzOlx0aWYgKHByaXYtXHUwMDNldHguZmxhZ3MgXHUwMDI2IEFUSDlLX0hUQ19PUF9UWF9EUkFJTikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTU4NC1cdFx0c3Bpbl91bmxvY2soXHUwMDI2cHJpdi1cdTAwM2V0eC50eF9sb2NrKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9NjE4PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiogYXRoOWtfaHRjX3R4X2dldF9wYWNrZXQoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy02MjQtXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjYyNTpcdHU4IGVwaWQgPSBNUyh0eHMtXHUwMDNldHNfcmF0ZSwgQVRIOUtfSFRDX1RYU1RBVF9FUElEKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy02MjYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTcxNj1zdGF0aWMgaW5saW5lIGJvb2wgY2hlY2tfcGFja2V0KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNzI0LVx0XHQgICAgICAgdHhfY3RsLVx1MDAzZXRpbWVzdGFtcCAmIzQzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjcyNTpcdFx0ICAgICAgIG1zZWNzX3RvX2ppZmZpZXMoQVRIOUtfSFRDX1RYX1RJTUVPVVRfSU5URVJWQUwpKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTcyNi1cdFx0YXRoX2RiZyhjb21tb24sIFhNSVQsIFwmIzM0O0Ryb3BwaW5nIGEgcGFja2V0IGR1ZSB0byBUWCB0aW1lb3V0XFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9NzYxPXZvaWQgYXRoOWtfaHRjX3R4X2NsZWFudXBfdGltZXIoc3RydWN0IHRpbWVyX2xpc3QgKnQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTc3Ni1cdFx0XHRcdGV2ZW50LVx1MDAzZXR4cy5jb29raWUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6Nzc3Olx0XHRcdFx0TVMoZXZlbnQtXHUwMDNldHhzLnRzX3JhdGUsIEFUSDlLX0hUQ19UWFNUQVRfRVBJRCkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTc3OC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNzg0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjc4NTpcdFx0aWYgKCYjNDM7JiM0MztldmVudC1cdTAwM2Vjb3VudCBcdTAwM2U9IEFUSDlLX0hUQ19UWF9USU1FT1VUX0NPVU5UKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNzg2LVx0XHRcdGxpc3RfZGVsKFx1MDAyNmV2ZW50LVx1MDAzZWxpc3QpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy04MDUtXHRtb2RfdGltZXIoXHUwMDI2cHJpdi1cdTAwM2V0eC5jbGVhbnVwX3RpbWVyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjgwNjpcdFx0ICBqaWZmaWVzICYjNDM7IG1zZWNzX3RvX2ppZmZpZXMoQVRIOUtfSFRDX1RYX0NMRUFOVVBfSU5URVJWQUwpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy04MDctfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz04Mjc9Ym9vbCBhdGg5a19odGNfdHhxX3NldHVwKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdiwgaW50IHN1YnR5cGUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTgzNC1cdG1lbXNldChcdTAwMjZxaSwgMCwgc2l6ZW9mKHFpKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6ODM1Olx0QVRIOUtfSFRDX0lOSVRfVFhRKHN1YnR5cGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTgzNi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9ODUyPWludCBhdGg5a19odGNfY2FicV9zZXR1cChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTg1Ni1cdG1lbXNldChcdTAwMjZxaSwgMCwgc2l6ZW9mKHFpKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6ODU3Olx0QVRIOUtfSFRDX0lOSVRfVFhRKDApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTg1OC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9MTE4Nz1pbnQgYXRoOWtfcnhfaW5pdChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTExOTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6MTE5NDpcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFUSDlLX0hUQ19SWEJVRjsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0xMTk1LVx0XHRzdHJ1Y3QgYXRoOWtfaHRjX3J4YnVmICpyeGJ1ZiA9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jPTEzOD12b2lkIGF0aDlrX3dtaV9ldmVudF90YXNrbGV0KHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmMtMTc4LVx0XHRcdHNwaW5fbG9ja19iaChcdTAwMjZwcml2LVx1MDAzZXR4LnR4X2xvY2spO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jOjE3OTpcdFx0XHRpZiAocHJpdi1cdTAwM2V0eC5mbGFncyBcdTAwMjYgQVRIOUtfSFRDX09QX1RYX0RSQUlOKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmMtMTgwLVx0XHRcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2cHJpdi1cdTAwM2V0eC50eF9sb2NrKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg9Mzk9c3RydWN0IHdtaV9ldmVudF9zd2JhIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmgtNTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6NTE6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX0FDSyAgICAgICAgQklUKDApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6NTI6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX0ZJTFQgICAgICAgQklUKDEpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6NTM6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX1JUQ19DVFMgICAgQklUKDIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6NTQ6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX01DUyAgICAgICAgQklUKDMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6NTU6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX0NXNDAgICAgICAgQklUKDQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6NTY6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX1NHSSAgICAgICAgQklUKDUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmgtNTctXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oLTYzLSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oOjY0OiNkZWZpbmUgQVRIOUtfSFRDX1RYU1RBVF9SQVRFICAgICAgIDB4MGZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo2NTojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfUkFURV9TICAgICAwXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmgtNjYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6Njc6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX0VQSUQgICAgICAgMHhmMFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oOjY4OiNkZWZpbmUgQVRIOUtfSFRDX1RYU1RBVF9FUElEX1MgICAgIDRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaC02OS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTE6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjYwNTcKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA1OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipEaXZpbmcgaW50byBSZWd1bGF0b3J5IERvbWFpbiBDaGFuZ2VzIGluIGBhdGhgKioKCk9rYXksIGxldCYjMzk7cyB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgdGhhdCBwYXRjaCwgc2hhbGwgd2U/IE15IGltbWVkaWF0ZSBmb2N1cyBpcyBnb2luZyB0byBiZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuY2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kICpwcmVjaXNlbHkqIHdoYXQgdGhlIGNoYW5nZSBpcyBhY2NvbXBsaXNoaW5nLiBTbywgSSYjMzk7bSBnb2luZyB0byBzdGFydCBieSBnb2luZyBsaW5lIGJ5IGxpbmUgdGhyb3VnaCB0aGF0IGZpbGUsIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiB0aGUgcmVndWxhdG9yeSBkb21haW4gaW1wbGVtZW50YXRpb24gd2l0aGluIHRoZSBgYXRoYCBkcml2ZXIuIEkmIzM5O2xsIHplcm8gaW4gb24gbGluZXMgcm91Z2hseSBiZXR3ZWVuIDQwIGFuZCAxMjA7IHRoYXQgc2VlbXMgbGlrZSBhIGxpa2VseSByZWdpb24gdG8gaG91c2UgdGhlIGNvcmUgbG9naWMgZm9yIHJlZ3VsYXRvcnkgZG9tYWluIG1hbmFnZW1lbnQuIEkmIzM5O2xsIG5lZWQgdG8gcmVmcmVzaCBteXNlbGYgb24gaG93IHJlZ3VsYXRvcnkgZG9tYWlucyBhcmUgaGFuZGxlZCB3aXRoaW4gdGhlIGBhdGhgIGFyY2hpdGVjdHVyZSwgc28gSSBjYW4gc2VlIHdoZXJlIHRoZSBwYXRjaCBpcyBpbXBhY3RpbmcgdGhhdCBmbG93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxMTo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDQwOlx0XHRcdFx0XHRcdCBOTDgwMjExX1JSRl9OT19JUilcbiAgNDE6XHQjZGVmaW5lIEFUSF8yR0haX0NIMTRcdFx0UkVHX1JVTEUoMjQ4NC0xMCwgMjQ4NCYjNDM7MTAsIDQwLCAwLCAyMCxcXFxuICA0MjpcdFx0XHRcdFx0XHQgTkw4MDIxMV9SUkZfTk9fSVIgfCBcXFxuICA0MzpcdFx0XHRcdFx0XHQgTkw4MDIxMV9SUkZfTk9fT0ZETSlcbiAgNDQ6XHRcbiAgNDU6XHQvKiBXZSBhbGxvdyBJQlNTIG9uIHRoZXNlIG9uIGEgY2FzZSBieSBjYXNlIGJhc2lzIGJ5IHJlZ3VsYXRvcnkgZG9tYWluICovXG4gIDQ2Olx0I2RlZmluZSBBVEhfNUdIWl81MTUwXzUzNTBcdFJFR19SVUxFKDUxNTAtMTAsIDUyNDAmIzQzOzEwLCA4MCwgMCwgMzAsIDApLFxcXG4gIDQ3Olx0XHRcdFx0XHRSRUdfUlVMRSg1MjYwLTEwLCA1MzUwJiM0MzsxMCwgODAsIDAsIDMwLFxcXG4gIDQ4Olx0XHRcdFx0XHRcdCBOTDgwMjExX1JSRl9OT19JUilcbiAgNDk6XHQjZGVmaW5lIEFUSF81R0haXzU0NzBfNTg1MFx0UkVHX1JVTEUoNTQ3MC0xMCwgNTg1MCYjNDM7MTAsIDgwLCAwLCAzMCxcXFxuICA1MDpcdFx0XHRcdFx0XHQgTkw4MDIxMV9SUkZfTk9fSVIpXG4gIDUxOlx0I2RlZmluZSBBVEhfNUdIWl81NzI1XzU4NTBcdFJFR19SVUxFKDU3MjUtMTAsIDU4NTAmIzQzOzEwLCA4MCwgMCwgMzAsXFxcbiAgNTI6XHRcdFx0XHRcdFx0IE5MODAyMTFfUlJGX05PX0lSKVxuICA1MzpcdFxuICA1NDpcdCNkZWZpbmUgQVRIXzJHSFpfQUxMXHRcdEFUSF8yR0haX0NIMDFfMTEsIFxcXG4gIDU1Olx0XHRcdFx0XHRBVEhfMkdIWl9DSDEyXzEzLCBcXFxuICA1NjpcdFx0XHRcdFx0QVRIXzJHSFpfQ0gxNFxuICA1NzpcdFxuICA1ODpcdCNkZWZpbmUgQVRIXzVHSFpfQUxMXHRcdEFUSF81R0haXzUxNTBfNTM1MCwgXFxcbiAgNTk6XHRcdFx0XHRcdEFUSF81R0haXzU0NzBfNTg1MFxuICA2MDpcdFxuICA2MTpcdC8qIFRoaXMgb25lIHNraXBzIHdoYXQgd2UgY2FsbCBcJiMzNDttaWQgYmFuZFwmIzM0OyAqL1xuICA2MjpcdCNkZWZpbmUgQVRIXzVHSFpfTk9fTUlEQkFORFx0QVRIXzVHSFpfNTE1MF81MzUwLCBcXFxuICA2MzpcdFx0XHRcdFx0QVRIXzVHSFpfNTcyNV81ODUwXG4gIDY0Olx0XG4gIDY1Olx0LyogQ2FuIGJlIHVzZWQgZm9yOlxuICA2NjpcdCAqIDB4NjAsIDB4NjEsIDB4NjIgKi9cbiAgNjc6XHRzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW4gYXRoX3dvcmxkX3JlZ2RvbV82MF82MV82MiA9IHtcbiAgNjg6XHRcdC5uX3JlZ19ydWxlcyA9IDYsXG4gIDY5Olx0XHQuYWxwaGEyID0gIFwmIzM0Ozk5XCYjMzQ7LFxuICA3MDpcdFx0LnJlZ19ydWxlcyA9IHtcbiAgNzE6XHRcdFx0QVRIXzJHSFpfQUxMLFxuICA3MjpcdFx0XHRBVEhfNUdIWl9BTEwsXG4gIDczOlx0XHR9XG4gIDc0Olx0fTtcbiAgNzU6XHRcbiAgNzY6XHQvKiBDYW4gYmUgdXNlZCBieSAweDYzIGFuZCAweDY1ICovXG4gIDc3Olx0c3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluIGF0aF93b3JsZF9yZWdkb21fNjNfNjUgPSB7XG4gIDc4Olx0XHQubl9yZWdfcnVsZXMgPSA1LFxuICA3OTpcdFx0LmFscGhhMiA9ICBcJiMzNDs5OVwmIzM0OyxcbiAgODA6XHRcdC5yZWdfcnVsZXMgPSB7XG4gIDgxOlx0XHRcdEFUSF8yR0haX0NIMDFfMTEsXG4gIDgyOlx0XHRcdEFUSF8yR0haX0NIMTJfMTMsXG4gIDgzOlx0XHRcdEFUSF81R0haX05PX01JREJBTkQsXG4gIDg0Olx0XHR9XG4gIDg1Olx0fTtcbiAgODY6XHRcbiAgODc6XHQvKiBDYW4gYmUgdXNlZCBieSAweDY0IG9ubHkgKi9cbiAgODg6XHRzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW4gYXRoX3dvcmxkX3JlZ2RvbV82NCA9IHtcbiAgODk6XHRcdC5uX3JlZ19ydWxlcyA9IDQsXG4gIDkwOlx0XHQuYWxwaGEyID0gIFwmIzM0Ozk5XCYjMzQ7LFxuICA5MTpcdFx0LnJlZ19ydWxlcyA9IHtcbiAgOTI6XHRcdFx0QVRIXzJHSFpfQ0gwMV8xMSxcbiAgOTM6XHRcdFx0QVRIXzVHSFpfTk9fTUlEQkFORCxcbiAgOTQ6XHRcdH1cbiAgOTU6XHR9O1xuICA5NjpcdFxuICA5NzpcdC8qIENhbiBiZSB1c2VkIGJ5IDB4NjYgYW5kIDB4NjkgKi9cbiAgOTg6XHRzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW4gYXRoX3dvcmxkX3JlZ2RvbV82Nl82OSA9IHtcbiAgOTk6XHRcdC5uX3JlZ19ydWxlcyA9IDQsXG4gMTAwOlx0XHQuYWxwaGEyID0gIFwmIzM0Ozk5XCYjMzQ7LFxuIDEwMTpcdFx0LnJlZ19ydWxlcyA9IHtcbiAxMDI6XHRcdFx0QVRIXzJHSFpfQ0gwMV8xMSxcbiAxMDM6XHRcdFx0QVRIXzVHSFpfQUxMLFxuIDEwNDpcdFx0fVxuIDEwNTpcdH07XG4gMTA2Olx0XG4gMTA3Olx0LyogQ2FuIGJlIHVzZWQgYnkgMHg2NywgMHg2OCwgMHg2QSBhbmQgMHg2QyAqL1xuIDEwODpcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiBhdGhfd29ybGRfcmVnZG9tXzY3XzY4XzZBXzZDID0ge1xuIDEwOTpcdFx0Lm5fcmVnX3J1bGVzID0gNSxcbiAxMTA6XHRcdC5hbHBoYTIgPSAgXCYjMzQ7OTlcJiMzNDssXG4gMTExOlx0XHQucmVnX3J1bGVzID0ge1xuIDExMjpcdFx0XHRBVEhfMkdIWl9DSDAxXzExLFxuIDExMzpcdFx0XHRBVEhfMkdIWl9DSDEyXzEzLFxuIDExNDpcdFx0XHRBVEhfNUdIWl9BTEwsXG4gMTE1Olx0XHR9XG4gMTE2Olx0fTtcbiAxMTc6XHRcbiAxMTg6XHRzdGF0aWMgYm9vbCBkeW5hbWljX2NvdW50cnlfdXNlcl9wb3NzaWJsZShzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZylcbiAxMTk6XHR7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDExOjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3ODMzCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMzI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUmVndWxhdG9yeSBEb21haW4gQ2hhbmdlcyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNoYW5nZSBpbiBgcmVnZC5jYC4gIExvb2tzIGxpa2UgdGhlIGRlZmluaXRpb24gYEFUSF81R0haXzUxNTBfNTM1MGAgd2FzIHByZXZpb3VzbHkgYSBzaW5nbGUgcmVndWxhdG9yeSBydWxlIHNwYW5uaW5nIDUxNTAgdG8gNTM1MCBNSHouIFRoZSBvbGRlciBydWxlIHdhczogYFJFR19SVUxFKDUxNTAtMTAsIDUzNTAmIzQzOzEwLCA4MCwgMCwgMzAsIE5MODAyMTFfUlJGX05PX0lSKWAuIE5vdywgdGhleSYjMzk7dmUgc3BsaXQgaXQgaW50byAqdHdvKiBzZXBhcmF0ZSBydWxlczogYFJFR19SVUxFKDUxNTAtMTAsIDUyNDAmIzQzOzEwLCA4MCwgMCwgMzAsIDApYCBhbmQgYFJFR19SVUxFKDUyNjAtMTAsIDUzNTAmIzQzOzEwLCA4MCwgMCwgMzAsIE5MODAyMTFfUlJGX05PX0lSKWAuCgpUaGlzIGlzIGEgc2lnbmlmaWNhbnQgY2hhbmdlIGJlY2F1c2UgdGhpcyBub3cgbWVhbnMgdGhhdCBhbGwgdGhvc2UgYGF0aF93b3JsZF9yZWdkb21fKmAgc3RydWN0dXJlcyB0aGF0IHJlbHkgb24gYEFUSF81R0haXzUxNTBfNTM1MGAgKGVpdGhlciBkaXJlY3RseSBvciB2aWEgYEFUSF81R0haX0FMTGAgb3IgYEFUSF81R0haX05PX01JREJBTkRgKSBub3cgaGF2ZSBhbiBleHRyYSByZWd1bGF0b3J5IHJ1bGUuIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIG15IHVuZGVyc3RhbmRpbmcsIGJ1dCBpdCBzZWVtcyB0aGF0IGAubl9yZWdfcnVsZXNgIGluIHRob3NlIHN0cnVjdHMgbXVzdCBoYXZlIGJlZW4gaW5jcmVtZW50ZWQgYnkgb25lLiBTbywgNSBydWxlcyBhcmUgbm93IDYsIDQgaXMgbm93IDUsIDMgaXMgbm93IDQsIGFuZCBzbyBvbi4KCk5leHQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBicm9hZGVyIGltcGxpY2F0aW9ucyBvZiB0aGlzIHNwbGl0LiBJJiMzOTtsbCBuZWVkIHRvIGludmVzdGlnYXRlIGhvdyB0aGVzZSByZWd1bGF0b3J5IGRvbWFpbnMgYXJlIHJlZ2lzdGVyZWQgd2l0aGluIHRoZSBzeXN0ZW0uICBJJiMzOTtsbCBzdGFydCBieSBjaGVja2luZyB0aGUgaW5pdGlhbGl6YXRpb24gcHJvY2Vzcy4gTGV0JiMzOTtzIHNlZSB3aGF0IGBhdGhfcmVnZF9pbml0YCBkb2VzLiBVbmRlcnN0YW5kaW5nIHRoYXQgc2hvdWxkIGdpdmUgbWUgYSBnb29kIGhhbmRsZSBvbiBob3cgdGhlIGNvZGUgd2lsbCByZWFjdCB0byB0aGVzZSBhZGRlZCBydWxlcy4gVGhpcyBjaGFuZ2UgY291bGQgcG90ZW50aWFsbHkgaW50cm9kdWNlIHN1YnRsZSBzaWRlIGVmZmVjdHMsIHNvIEkgd2lsbCBoYXZlIHRvIGZvbGxvdyB0aGUgY29kZSBhbmQgY2hlY2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDExOjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDYzMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNjMwOlx0XHRcdFx0cmV0dXJuIFx1MDAyNnJlZ0RvbWFpblBhaXJzW2ldO1xuIDYzMTpcdFx0fVxuIDYzMjpcdFx0cmV0dXJuIE5VTEw7XG4gNjMzOlx0fVxuIDYzNDpcdFxuIDYzNTpcdHN0YXRpYyBpbnRcbiA2MzY6XHRhdGhfcmVnZF9pbml0X3dpcGh5KHN0cnVjdCBhdGhfcmVndWxhdG9yeSAqcmVnLFxuIDYzNzpcdFx0XHQgICAgc3RydWN0IHdpcGh5ICp3aXBoeSxcbiA2Mzg6XHRcdFx0ICAgIHZvaWQgKCpyZWdfbm90aWZpZXIpKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4gNjM5Olx0XHRcdFx0XHRcdCBzdHJ1Y3QgcmVndWxhdG9yeV9yZXF1ZXN0ICpyZXF1ZXN0KSlcbiA2NDA6XHR7XG4gNjQxOlx0XHRjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiAqcmVnZDtcbiA2NDI6XHRcbiA2NDM6XHRcdHdpcGh5LVx1MDAzZXJlZ19ub3RpZmllciA9IHJlZ19ub3RpZmllcjtcbiA2NDQ6XHRcdHdpcGh5LVx1MDAzZXJlZ3VsYXRvcnlfZmxhZ3MgfD0gUkVHVUxBVE9SWV9TVFJJQ1RfUkVHIHxcbiA2NDU6XHRcdFx0XHRcdCAgIFJFR1VMQVRPUllfQ1VTVE9NX1JFRztcbiA2NDY6XHRcbiA2NDc6XHRcdGlmIChhdGhfaXNfd29ybGRfcmVnZChyZWcpKSB7XG4gNjQ4Olx0XHRcdC8qXG4gNjQ5Olx0XHRcdCAqIEFueXRoaW5nIGFwcGxpZWQgaGVyZSAocHJpb3IgdG8gd2lwaHkgcmVnaXN0cmF0aW9uKSBnZXRzXG4gNjUwOlx0XHRcdCAqIHNhdmVkIG9uIHRoZSB3aXBoeSBvcmlnXyogcGFyYW1ldGVyc1xuIDY1MTpcdFx0XHQgKi9cbiA2NTI6XHRcdFx0cmVnZCA9IGF0aF93b3JsZF9yZWdkb21haW4ocmVnKTtcbiA2NTM6XHRcdFx0d2lwaHktXHUwMDNlcmVndWxhdG9yeV9mbGFncyB8PSBSRUdVTEFUT1JZX0NPVU5UUllfSUVfRk9MTE9XX1BPV0VSO1xuIDY1NDpcdFx0fSBlbHNlIHtcbiA2NTU6XHRcdFx0LypcbiA2NTY6XHRcdFx0ICogVGhpcyBnZXRzIGFwcGxpZWQgaW4gdGhlIGNhc2Ugb2YgdGhlIGFic2VuY2Ugb2YgQ1JEQSxcbiA2NTc6XHRcdFx0ICogaXQmIzM5O3Mgb3VyIG93biBjdXN0b20gd29ybGQgcmVndWxhdG9yeSBkb21haW4sIHNpbWlsYXIgdG9cbiA2NTg6XHRcdFx0ICogY2ZnODAyMTEmIzM5O3MgYnV0IHdlIGVuYWJsZSBwYXNzaXZlIHNjYW5uaW5nLlxuIDY1OTpcdFx0XHQgKi9cbiA2NjA6XHRcdFx0cmVnZCA9IGF0aF9kZWZhdWx0X3dvcmxkX3JlZ2RvbWFpbigpO1xuIDY2MTpcdFx0fVxuIDY2MjpcdFxuIDY2MzpcdFx0d2lwaHlfYXBwbHlfY3VzdG9tX3JlZ3VsYXRvcnkod2lwaHksIHJlZ2QpO1xuIDY2NDpcdFx0YXRoX3JlZ19hcHBseV9yYWRhcl9mbGFncyh3aXBoeSwgcmVnKTtcbiA2NjU6XHRcdGF0aF9yZWdfYXBwbHlfd29ybGRfZmxhZ3Mod2lwaHksIE5MODAyMTFfUkVHRE9NX1NFVF9CWV9EUklWRVIsIHJlZyk7XG4gNjY2Olx0XHRyZXR1cm4gMDtcbiA2Njc6XHR9XG4gNjY4Olx0XG4gNjY5Olx0LypcbiA2NzA6XHQgKiBTb21lIHVzZXJzIGhhdmUgcmVwb3J0ZWQgdGhlaXIgRUVQUk9NIHByb2dyYW1tZWQgd2l0aFxuIDY3MTpcdCAqIDB4ODAwMCBzZXQsIHRoaXMgaXMgbm90IGEgc3VwcG9ydGVkIHJlZ3VsYXRvcnkgZG9tYWluXG4gNjcyOlx0ICogYnV0IHNpbmNlIHdlIGhhdmUgbW9yZSB0aGFuIG9uZSB1c2VyIHdpdGggaXQgd2UgbmVlZFxuIDY3MzpcdCAqIGEgc29sdXRpb24gZm9yIHRoZW0uIFdlIGRlZmF1bHQgdG8gMHg2NCwgd2hpY2ggaXMgdGhlXG4gNjc0Olx0ICogZGVmYXVsdCBBdGhlcm9zIHdvcmxkIHJlZ3VsYXRvcnkgZG9tYWluLlxuIDY3NTpcdCAqL1xuIDY3NjpcdHN0YXRpYyB2b2lkIGF0aF9yZWdkX3Nhbml0aXplKHN0cnVjdCBhdGhfcmVndWxhdG9yeSAqcmVnKVxuIDY3NzpcdHtcbiA2Nzg6XHRcdGlmIChyZWctXHUwMDNlY3VycmVudF9yZCAhPSBDT1VOVFJZX0VSRF9GTEFHKVxuIDY3OTpcdFx0XHRyZXR1cm47XG4gNjgwOlx0XHRwcmludGsoS0VSTl9ERUJVRyBcJiMzNDthdGg6IEVFUFJPTSByZWdkb21haW4gc2FuaXRpemVkXFxuXCYjMzQ7KTtcbiA2ODE6XHRcdHJlZy1cdTAwM2VjdXJyZW50X3JkID0gMHg2NDtcbiA2ODI6XHR9XG4gNjgzOlx0XG4gNjg0Olx0c3RhdGljIGludCBfX2F0aF9yZWdkX2luaXQoc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcpXG4gNjg1Olx0e1xuIDY4NjpcdFx0c3RydWN0IGNvdW50cnlfY29kZV90b19lbnVtX3JkICpjb3VudHJ5ID0gTlVMTDtcbiA2ODc6XHRcdHUxNiByZWdkbW47XG4gNjg4Olx0XG4gNjg5Olx0XHRpZiAoIXJlZylcbiA2OTA6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gNjkxOlx0XG4gNjkyOlx0XHRhdGhfcmVnZF9zYW5pdGl6ZShyZWcpO1xuIDY5MzpcdFxuIDY5NDpcdFx0cHJpbnRrKEtFUk5fREVCVUcgXCYjMzQ7YXRoOiBFRVBST00gcmVnZG9tYWluOiAweCUweFxcblwmIzM0OywgcmVnLVx1MDAzZWN1cnJlbnRfcmQpO1xuIDY5NTpcdFxuIDY5NjpcdFx0aWYgKCFhdGhfcmVnZF9pc19lZXByb21fdmFsaWQocmVnKSkge1xuIDY5NzpcdFx0XHRwcl9lcnIoXCYjMzQ7SW52YWxpZCBFRVBST00gY29udGVudHNcXG5cJiMzNDspO1xuIDY5ODpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiA2OTk6XHRcdH1cbiA3MDA6XHRcbiA3MDE6XHRcdHJlZ2RtbiA9IGF0aF9yZWdkX2dldF9lZXByb21SRChyZWcpO1xuIDcwMjpcdFx0cmVnLVx1MDAzZWNvdW50cnlfY29kZSA9IGF0aF9yZWdkX2dldF9kZWZhdWx0X2NvdW50cnkocmVnZG1uKTtcbiA3MDM6XHRcbiA3MDQ6XHRcdGlmIChyZWctXHUwMDNlY291bnRyeV9jb2RlID09IENUUllfREVGQVVMVCBcdTAwMjZcdTAwMjZcbiA3MDU6XHRcdCAgICByZWdkbW4gPT0gQ1RSWV9ERUZBVUxUKSB7XG4gNzA2Olx0XHRcdHByaW50ayhLRVJOX0RFQlVHIFwmIzM0O2F0aDogRUVQUk9NIGluZGljYXRlcyBkZWZhdWx0IFwmIzM0O1xuIDcwNzpcdFx0XHQgICAgICAgXCYjMzQ7Y291bnRyeSBjb2RlIHNob3VsZCBiZSB1c2VkXFxuXCYjMzQ7KTtcbiA3MDg6XHRcdFx0cmVnLVx1MDAzZWNvdW50cnlfY29kZSA9IENUUllfVU5JVEVEX1NUQVRFUztcbiA3MDk6XHRcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTE6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk4ODYKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiA1OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipEaXNzZWN0aW5nIHRoZSBSZWd1bGF0b3J5IEluaXRpYWxpemF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgcmVndWxhdG9yeSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSBmb3IgYSB3aXJlbGVzcyBkZXZpY2UuIFRoZSB0cmFpbCBzdGFydHMgd2l0aCBgYXRoX3JlZ2RfaW5pdF93aXBoeWAsIGFuZCBJIHNlZSBpdCBpbW1lZGlhdGVseSBoYW5kcyBvZmYgdG8gYHdpcGh5X2FwcGx5X2N1c3RvbV9yZWd1bGF0b3J5YCDigJMgdGhhdCYjMzk7cyB0aGUga2V5IGZ1bmN0aW9uLiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgKmFjdHVhbGx5KiBoYXBwZW5pbmcgaGVyZS4gSXQmIzM5O3MgdGltZSB0byBjcmFjayBvcGVuIGBuZXQvd2lyZWxlc3MvcmVnLmNgIGFuZCBkaXZlIGludG8gdGhlIHNvdXJjZSBjb2RlIGZvciBgd2lwaHlfYXBwbHlfY3VzdG9tX3JlZ3VsYXRvcnlgLiBJIHdhbnQgdG8gc2VlIHByZWNpc2VseSBob3cgdGhhdCBmdW5jdGlvbiB0YWtlcyB0aGUgYHdpcGh5YCBzdHJ1Y3R1cmUgYW5kIHRoZSBgcmVnZGAgKHJlZ3VsYXRvcnkgZG9tYWluKSBzdHJ1Y3R1cmUsIGFuZCBhcHBsaWVzIHRoZSBjdXN0b20gcmVndWxhdG9yeSBzZXR0aW5ncy4gV2hhdCBwYXJhbWV0ZXJzIGFyZSBiZWluZyBwYXNzZWQ/IEhvdyBhcmUgdGhleSBiZWluZyBwcm9jZXNzZWQ/IFdoYXQmIzM5O3MgdGhlIGNvbnRyb2wgZmxvdz8gVGhpcyBmdW5jdGlvbiBpcyBsaWtlbHkgdGhlIGxpbmNocGluIG9mIGhvdyB0aGUgZHJpdmVyIGludGVyYWN0cyB3aXRoIHRoZSByZWd1bGF0b3J5IGRvbWFpbiBkYXRhLCBzbyB1bmRlcnN0YW5kaW5nIGl0cyBndXRzIGlzIGNyaXRpY2FsIHRvIHNlZWluZyBob3cgdGhpcyBkcml2ZXIgd29ya3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDExOjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3dpcGh5X2FwcGx5X2N1c3RvbV9yZWd1bGF0b3J5JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3dpcmVsZXNzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy9yZWcuYz0yNTkzPXN0YXRpYyB2b2lkIGhhbmRsZV9iYW5kX2N1c3RvbShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuLS1cbm5ldC93aXJlbGVzcy9yZWcuYy0yNjEyLS8qIFVzZWQgYnkgZHJpdmVycyBwcmlvciB0byB3aXBoeSByZWdpc3RyYXRpb24gKi9cbm5ldC93aXJlbGVzcy9yZWcuYzoyNjEzOnZvaWQgd2lwaHlfYXBwbHlfY3VzdG9tX3JlZ3VsYXRvcnkoc3RydWN0IHdpcGh5ICp3aXBoeSxcbm5ldC93aXJlbGVzcy9yZWcuYy0yNjE0LVx0XHRcdFx0ICAgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW4gKnJlZ2QpXG4tLVxubmV0L3dpcmVsZXNzL3JlZy5jLTI2NDctfVxubmV0L3dpcmVsZXNzL3JlZy5jOjI2NDg6RVhQT1JUX1NZTUJPTCh3aXBoeV9hcHBseV9jdXN0b21fcmVndWxhdG9yeSk7XG5uZXQvd2lyZWxlc3MvcmVnLmMtMjY0OS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTE6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzAzNzMKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxNTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBgYXRoOWtfaHRjYCBVU0IgRHJpdmVyIGZvciBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYGF0aDlrX2h0Y2AsIHdoaWNoIEkga25vdyBpcyBhIFVTQiBkcml2ZXIsIG11Y2ggbGlrZSBgY2FybDkxNzBgLiBNeSBpbml0aWFsIGZvY3VzIGlzIG9uIHRoZSBwcm9iZSBwYXRoIGFuZCBob3cgdGhlIGZpcm13YXJlIGFuZCBoYXJkd2FyZSBhcmUgaW5pdGlhbGl6ZWQgd2l0aGluIHRoaXMgZHJpdmVyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiBgYXRoOWtfaHRjYCBpcyBzdWNjZXNzZnVsbHkgcHJvYmVkIGluIGVudmlyb25tZW50cyBsaWtlIHN5emthbGxlciBvciBRRU1VLiBUaGlua2luZyBhYm91dCBzeXprYWxsZXImIzM5O3MgVVNCIGZ1enppbmcgY2FwYWJpbGl0aWVzLCBwYXJ0aWN1bGFybHkgdXNpbmcgcmF3IGdhZGdldHMsIGB1c2ItZnV6emVyYCwgb3IgdnVzYiwgdGhlIGFiaWxpdHkgdG8gcHJvYmUgVVNCIGRyaXZlcnMgYmVjb21lcyBhIGNyaXRpY2FsIGF2ZW51ZS4gSSBuZWVkIHRvIGtub3cgKmhvdyogYGF0aDlrX2h0Y2AgZ2V0cyBwcm9iZWQuIFRoZXJlZm9yZSwgSSYjMzk7bSBkaXZpbmcgZGVlcGVyIGludG8gdGhlIHByb2JlIHJvdXRpbmUuIEkmIzM5O2xsIGV4YW1pbmUgdGhlIGNvZGUgYXQgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmNgLiBUaGlzIGlzIHdoZXJlIHRoZSBjb3JlIGxvZ2ljIHdpbGwgcmVzaWRlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZW50cnkgcG9pbnRzIGZvciBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxMTo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdGg5a19pbml0X2RldmljZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYWhiLmM9NTU9c3RhdGljIGludCBhdGhfYWhiX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FoYi5jLTk4LVx0ZGV2X2lkID0gKHUxNikoa2VybmVsX3Vsb25nX3Qpb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9haGIuYzo5OTpcdHJldCA9IGF0aDlrX2luaXRfZGV2aWNlKGRldl9pZCwgc2MsIFx1MDAyNmF0aF9haGJfYnVzX29wcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYWhiLmMtMTAwLVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hdGg5ay5oPTExMzA9dm9pZCBhdGhfcmVzdGFydF93b3JrKHN0cnVjdCBhdGhfc29mdGMgKnNjKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hdGg5ay5oOjExMzE6aW50IGF0aDlrX2luaXRfZGV2aWNlKHUxNiBkZXZpZCwgc3RydWN0IGF0aF9zb2Z0YyAqc2MsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXRoOWsuaC0xMTMyLVx0XHQgICAgY29uc3Qgc3RydWN0IGF0aF9idXNfb3BzICpidXNfb3BzKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM9Nzg1PXN0YXRpYyBpbnQgYXRoOWtfaW5pdF9maXJtd2FyZV92ZXJzaW9uKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmMtODI3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jOjgyODpzdGF0aWMgaW50IGF0aDlrX2luaXRfZGV2aWNlKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy04MjktXHRcdFx0ICAgICB1MTYgZGV2aWQsIGNoYXIgKnByb2R1Y3QsIHUzMiBkcnZfaW5mbylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM9OTMxPWludCBhdGg5a19odGNfcHJvYmVfZGV2aWNlKHN0cnVjdCBodGNfdGFyZ2V0ICpodGNfaGFuZGxlLCBzdHJ1Y3QgZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jLTk2Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYzo5NjM6XHRyZXQgPSBhdGg5a19pbml0X2RldmljZShwcml2LCBkZXZpZCwgcHJvZHVjdCwgZHJ2X2luZm8pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jLTk2NC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYz05MDM9c3RhdGljIHZvaWQgYXRoOWtfc2V0X2h3X2NhcGFiKHN0cnVjdCBhdGhfc29mdGMgKnNjLCBzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jLTEwMDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jOjEwMDQ6aW50IGF0aDlrX2luaXRfZGV2aWNlKHUxNiBkZXZpZCwgc3RydWN0IGF0aF9zb2Z0YyAqc2MsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jLTEwMDUtXHRcdCAgICBjb25zdCBzdHJ1Y3QgYXRoX2J1c19vcHMgKmJ1c19vcHMpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3BjaS5jPTg4ND1zdGF0aWMgaW50IGF0aF9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvcGNpLmMtOTc4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3BjaS5jOjk3OTpcdHJldCA9IGF0aDlrX2luaXRfZGV2aWNlKGlkLVx1MDAzZWRldmljZSwgc2MsIFx1MDAyNmF0aF9wY2lfYnVzX29wcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvcGNpLmMtOTgwLVx0aWYgKHJldCkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxMTo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTczNgoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgaG93IEkmIzM5O2QgYXBwcm9hY2ggdGhhdCBrZXJuZWwgbW9kdWxlIGludmVzdGlnYXRpb24sIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgYW4gZXhwZXJ0OgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBgYXRoOWtfaHRjYCBQcm9iZSBQYXRoKioKClJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gaXQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgYGF0aDlrX2h0Y2AgZHJpdmVyIGdldHMgbG9hZGVkLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gdGhlIFVTQiBIaWdoLVRocm91Z2hwdXQgQ2FwYWJpbGl0eSAoSFRDKSBpbml0aWFsaXphdGlvbi4gTXkgc3RhcnRpbmcgcG9pbnQgaXMgdGhlIG1vc3QgbG9naWNhbCBwbGFjZTogYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmNgLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSBVU0Itc3BlY2lmaWMgSElGIChIb3N0IEludGVyZmFjZSkgY29kZSBmb3IgdGhlIGF0aDlrIGZhbWlseSB3aWxsIGxpdmUsIGFuZCB0aGUgYGF0aDlrX2h0Y2AgbW9kdWxlIGlzIHRoZSBvbmUgcmVzcG9uc2libGUgZm9yIHRoZSBIVEMgY29ubmVjdGlvbiwgc28gaXQmIzM5O3MgYSB2ZXJ5IGdvb2QgZmlyc3QgZ3Vlc3MuCgpNeSBleHBlY3RhdGlvbiBpcyB0byBmaW5kIHRoZSBVU0IgcHJvYmUgZnVuY3Rpb24gZGVmaW5lZCBoZXJlLiBJJiMzOTtsbCBsaWtlbHkgYmUgc2Nhbm5pbmcgZm9yIHRoaW5ncyBsaWtlIGB1c2JfZHJpdmVyYCBzdHJ1Y3R1cmVzLCBsaWtlbHkgaW4gdGhlIGZvcm0gb2YgYSBtb2R1bGUgaW5pdCBmdW5jdGlvbiBsaWtlIGBtb2R1bGVfaW5pdChhdGg5a19odGNfdXNiX2luaXQpYC4gSeKAmWxsIGJlIGxvb2tpbmcgZm9yIHdoZXJlIHRoZSBVU0IgZGV2aWNlIElEcyBhcmUgbWF0Y2hlZCwgcHJvYmFibHkgaW4gYSBgdXNiX2RldmljZV9pZGAgdGFibGUuIEkmIzM5O20gZXhwZWN0aW5nIHRvIHNlZSB3aGVyZSB0aGUgZHJpdmVyIHJlZ2lzdGVycyBpdHNlbGYgd2l0aCB0aGUgVVNCIGNvcmUsIGFuZCBjcnVjaWFsbHksIHdoZXJlIHRoZSBhY3R1YWwgYGF0aDlrX2h0Y2AgZGV2aWNlIHN0cnVjdHVyZSBpcyBhbGxvY2F0ZWQgYW5kIGluaXRpYWxpemVkLiBJJiMzOTtsbCBiZSBtZW50YWxseSB0cmFjaW5nIHRoZSBleGVjdXRpb24gZmxvdyBvZiB0aGUgcHJvYmUgZnVuY3Rpb24sIGxvb2tpbmcgZm9yIGFueSBjb25kaXRpb25hbCBzdGF0ZW1lbnRzIG9yIGVycm9yIGhhbmRsaW5nIHRoYXQgY291bGQgaW1wYWN0IHRoZSBtb2R1bGUmIzM5O3Mgc3VjY2VzcyBpbiBhdHRhY2hpbmcgdG8gYSBwYXJ0aWN1bGFyIFVTQiBkZXZpY2UuIEkgd2lsbCBhbHNvIG1ha2Ugc3VyZSB0byBjaGVjayBhbGwgdGhlIHJlbGF0ZWQgZnVuY3Rpb25zIGNhbGxzIHRoYXQgYXJlIHVzZWQgZHVyaW5nIHRoaXMgcHJvYmUuCgpFc3NlbnRpYWxseSwgSSBhbSB0cnlpbmcgdG8gYXNjZXJ0YWluIHByZWNpc2VseSBob3cgYW5kIHdoZW4gdGhlIGBhdGg5a19odGNgIGRyaXZlciBiaW5kcyB0byBhIG1hdGNoaW5nIFVTQiBkZXZpY2UuIEZyb20gdGhlcmUsIEkmIzM5O2xsIGJlIGFibGUgdG8gYnVpbGQgYSBjbGVhcmVyIHVuZGVyc3RhbmRpbmcgb2YgcG90ZW50aWFsIHByb2JsZW1zIGFuZCBvcHRpbWl6YXRpb24gc3RyYXRlZ2llcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTE6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTI2MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxMjYwOlx0XHRcdFx0XHRoaWZfZGV2LVx1MDAzZWlkX2luZm8pO1xuMTI2MTpcdFx0aWYgKHJldCkge1xuMTI2MjpcdFx0XHRyZXQgPSAtRUlOVkFMO1xuMTI2MzpcdFx0XHRnb3RvIGVycl9odGNfaHdfaW5pdDtcbjEyNjQ6XHRcdH1cbjEyNjU6XHRcbjEyNjY6XHRcdHJlbGVhc2VfZmlybXdhcmUoZncpO1xuMTI2NzpcdFx0aGlmX2Rldi1cdTAwM2VmbGFncyB8PSBISUZfVVNCX1JFQURZO1xuMTI2ODpcdFx0Y29tcGxldGVfYWxsKFx1MDAyNmhpZl9kZXYtXHUwMDNlZndfZG9uZSk7XG4xMjY5Olx0XG4xMjcwOlx0XHRyZXR1cm47XG4xMjcxOlx0XG4xMjcyOlx0ZXJyX2h0Y19od19pbml0OlxuMTI3MzpcdFx0YXRoOWtfaGlmX3VzYl9kZXZfZGVpbml0KGhpZl9kZXYpO1xuMTI3NDpcdGVycl9kZXZfaW5pdDpcbjEyNzU6XHRcdGF0aDlrX2h0Y19od19mcmVlKGhpZl9kZXYtXHUwMDNlaHRjX2hhbmRsZSk7XG4xMjc2Olx0ZXJyX2Rldl9hbGxvYzpcbjEyNzc6XHRcdHJlbGVhc2VfZmlybXdhcmUoZncpO1xuMTI3ODpcdGVycl9mdzpcbjEyNzk6XHRcdGF0aDlrX2hpZl91c2JfZmlybXdhcmVfZmFpbChoaWZfZGV2KTtcbjEyODA6XHR9XG4xMjgxOlx0XG4xMjgyOlx0LypcbjEyODM6XHQgKiBBbiBleGFjdCBjb3B5IG9mIHRoZSBmdW5jdGlvbiBmcm9tIHpkMTIxMXJ3LlxuMTI4NDpcdCAqL1xuMTI4NTpcdHN0YXRpYyBpbnQgc2VuZF9lamVjdF9jb21tYW5kKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRlcmZhY2UpXG4xMjg2Olx0e1xuMTI4NzpcdFx0c3RydWN0IHVzYl9kZXZpY2UgKnVkZXYgPSBpbnRlcmZhY2VfdG9fdXNiZGV2KGludGVyZmFjZSk7XG4xMjg4Olx0XHRzdHJ1Y3QgdXNiX2hvc3RfaW50ZXJmYWNlICppZmFjZV9kZXNjID0gaW50ZXJmYWNlLVx1MDAzZWN1cl9hbHRzZXR0aW5nO1xuMTI4OTpcdFx0c3RydWN0IHVzYl9lbmRwb2ludF9kZXNjcmlwdG9yICplbmRwb2ludDtcbjEyOTA6XHRcdHVuc2lnbmVkIGNoYXIgKmNtZDtcbjEyOTE6XHRcdHU4IGJ1bGtfb3V0X2VwO1xuMTI5MjpcdFx0aW50IHI7XG4xMjkzOlx0XG4xMjk0Olx0XHRpZiAoaWZhY2VfZGVzYy1cdTAwM2VkZXNjLmJOdW1FbmRwb2ludHMgXHUwMDNjIDIpXG4xMjk1Olx0XHRcdHJldHVybiAtRU5PREVWO1xuMTI5NjpcdFxuMTI5NzpcdFx0LyogRmluZCBidWxrIG91dCBlbmRwb2ludCAqL1xuMTI5ODpcdFx0Zm9yIChyID0gMTsgciBcdTAwM2U9IDA7IHItLSkge1xuMTI5OTpcdFx0XHRlbmRwb2ludCA9IFx1MDAyNmlmYWNlX2Rlc2MtXHUwMDNlZW5kcG9pbnRbcl0uZGVzYztcbjEzMDA6XHRcdFx0aWYgKHVzYl9lbmRwb2ludF9kaXJfb3V0KGVuZHBvaW50KSBcdTAwMjZcdTAwMjZcbjEzMDE6XHRcdFx0ICAgIHVzYl9lbmRwb2ludF94ZmVyX2J1bGsoZW5kcG9pbnQpKSB7XG4xMzAyOlx0XHRcdFx0YnVsa19vdXRfZXAgPSBlbmRwb2ludC1cdTAwM2ViRW5kcG9pbnRBZGRyZXNzO1xuMTMwMzpcdFx0XHRcdGJyZWFrO1xuMTMwNDpcdFx0XHR9XG4xMzA1Olx0XHR9XG4xMzA2Olx0XHRpZiAociA9PSAtMSkge1xuMTMwNzpcdFx0XHRkZXZfZXJyKFx1MDAyNnVkZXYtXHUwMDNlZGV2LFxuMTMwODpcdFx0XHRcdFwmIzM0O2F0aDlrX2h0YzogQ291bGQgbm90IGZpbmQgYnVsayBvdXQgZW5kcG9pbnRcXG5cJiMzNDspO1xuMTMwOTpcdFx0XHRyZXR1cm4gLUVOT0RFVjtcbjEzMTA6XHRcdH1cbjEzMTE6XHRcbjEzMTI6XHRcdGNtZCA9IGt6YWxsb2MoMzEsIEdGUF9LRVJORUwpO1xuMTMxMzpcdFx0aWYgKGNtZCA9PSBOVUxMKVxuMTMxNDpcdFx0XHRyZXR1cm4gLUVOT0RFVjtcbjEzMTU6XHRcbjEzMTY6XHRcdC8qIFVTQiBidWxrIGNvbW1hbmQgYmxvY2sgKi9cbjEzMTc6XHRcdGNtZFswXSA9IDB4NTU7XHQvKiBidWxrIGNvbW1hbmQgc2lnbmF0dXJlICovXG4xMzE4Olx0XHRjbWRbMV0gPSAweDUzO1x0LyogYnVsayBjb21tYW5kIHNpZ25hdHVyZSAqL1xuMTMxOTpcdFx0Y21kWzJdID0gMHg0MjtcdC8qIGJ1bGsgY29tbWFuZCBzaWduYXR1cmUgKi9cbjEzMjA6XHRcdGNtZFszXSA9IDB4NDM7XHQvKiBidWxrIGNvbW1hbmQgc2lnbmF0dXJlICovXG4xMzIxOlx0XHRjbWRbMTRdID0gNjtcdC8qIGNvbW1hbmQgbGVuZ3RoICovXG4xMzIyOlx0XG4xMzIzOlx0XHRjbWRbMTVdID0gMHgxYjtcdC8qIFNDU0kgY29tbWFuZDogU1RBUlQgU1RPUCBVTklUICovXG4xMzI0Olx0XHRjbWRbMTldID0gMHgyO1x0LyogZWplY3QgZGlzYyAqL1xuMTMyNTpcdFxuMTMyNjpcdFx0ZGV2X2luZm8oXHUwMDI2dWRldi1cdTAwM2VkZXYsIFwmIzM0O0VqZWN0aW5nIHN0b3JhZ2UgZGV2aWNlLi4uXFxuXCYjMzQ7KTtcbjEzMjc6XHRcdHIgPSB1c2JfYnVsa19tc2codWRldiwgdXNiX3NuZGJ1bGtwaXBlKHVkZXYsIGJ1bGtfb3V0X2VwKSxcbjEzMjg6XHRcdFx0Y21kLCAzMSwgTlVMTCwgMiAqIFVTQl9NU0dfVElNRU9VVCk7XG4xMzI5Olx0XHRrZnJlZShjbWQpO1xuMTMzMDpcdFx0aWYgKHIpXG4xMzMxOlx0XHRcdHJldHVybiByO1xuMTMzMjpcdFxuMTMzMzpcdFx0LyogQXQgdGhpcyBwb2ludCwgdGhlIGRldmljZSBkaXNjb25uZWN0cyBhbmQgcmVjb25uZWN0cyB3aXRoIHRoZSByZWFsXG4xMzM0Olx0XHQgKiBJRCBudW1iZXJzLiAqL1xuMTMzNTpcdFxuMTMzNjpcdFx0dXNiX3NldF9pbnRmZGF0YShpbnRlcmZhY2UsIE5VTEwpO1xuMTMzNzpcdFx0cmV0dXJuIDA7XG4xMzM4Olx0fVxuMTMzOTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxMTo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzQzNAoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDE0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbnZlc3RpZ2F0aXZlIFByb2Nlc3MgZm9yIFJlZ3VsYXRvcnkgRG9tYWluIEluaXRpYWxpemF0aW9uKioKCk9rYXksIGhlcmUmIzM5O3MgdGhlIGdhbWUgcGxhbi4gSSYjMzk7bSBmb2N1c2luZyBvbiB0aGUgYGF0aDlrX2h0Y2AgZHJpdmVyIGFuZCBpdHMgcmVndWxhdG9yeSBkb21haW4gaGFuZGxpbmcuIEkga25vdyB0aGF0IGBhdGg5a19odGNgIGxvYWRzIGZpcm13YXJlIChgcmVsZWFzZV9maXJtd2FyZWApIGJlZm9yZSBpdCBpbml0aWFsaXplcyB0aGUgZGV2aWNlIGFuZCBjYWxscyBgYXRoX3JlZ2RfaW5pdGAuIEJ1dCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgKmZ1bGwqIHBpY3R1cmUgaGVyZS4KCk15IG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBgYXRoX3dvcmxkX3JlZ2RvbV8qYCBmdW5jdGlvbnMuIEFyZSB0aG9zZSB0aGUgb25seSBwb2ludHMgb2YgY29udGFjdCB3aXRoIHJlZ3VsYXRvcnkgY29kZSwgb3IgaXMgdGhlcmUgYW5vdGhlciBzcG90IHdoZXJlIGBhdGhfcmVnZGAgaXMgY2FsbGVkIGludG8gYWN0aW9uPwoKSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgYmlnZ2VyIHBpY3R1cmUsIHNvIEkmIzM5O2xsIGFsc28gc3RhcnQgY2hlY2tpbmcgZm9yIGludGVyYWN0aW9ucyB3aXRoIHRoZSByZWd1bGF0b3J5IGRvbWFpbiBmdW5jdGlvbmFsaXR5IHRocm91Z2ggb3RoZXIgbWV0aG9kcy4gTmV0bGluayBhbmQgY2ZnODAyMTEgY29tbWFuZHMsIGFueXRoaW5nIGluIHN5c2ZzIOKAkyB0aG9zZSBhcmUgYWxsIHBvc3NpYmlsaXRpZXMuIEkgd2FudCB0byBzZWUgaWYgYW55dGhpbmcgZGlyZWN0bHkgYWNjZXNzZXMgZnVuY3Rpb25zIGRlZmluZWQgaW4gYHJlZ2QuY2Agb3IgdXRpbGl6ZXMgdGhlc2Ugc3BlY2lmaWMgcmVnZG9tYWlucy4KClRvIG1ha2Ugc3VyZSBJJiMzOTttIGNvdmVyaW5nIGFsbCBiYXNlcywgSSB3aWxsIHBlcmZvcm0gYSBjb21wcmVoZW5zaXZlIHNlYXJjaCB0aHJvdWdob3V0IHRoZSBlbnRpcmUga2VybmVsIGNvZGViYXNlLiBJIHdpbGwgc2VhcmNoIGZvciBpbnN0YW5jZXMgb2YgYW55dGhpbmcgd2l0aCB0aGUgcHJlZml4ZXMgYGF0aF9yZWdfYCwgYGF0aF9yZWdkX2AsIG9yIGBhdGhfd29ybGRfcmVnZG9tYC4gSSYjMzk7bSBnb2luZyB0byBmaW5kIGFsbCB0aGUgcGllY2VzIGFuZCBwdXQgdGhlbSB0b2dldGhlciB0byBlbnN1cmUgSSB1bmRlcnN0YW5kIGhvdyB0aGlzIHdob2xlIHJlZ3VsYXRvcnkgbWVjaGFuaXNtIHdvcmtzIHdpdGhpbiB0aGUga2VybmVsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxMTo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdGhfcmVnZCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jPTk5MDg9c3RhdGljIGludCBhdGgxMGtfbWFjX2dldF93cmRkX3JlZ3VsYXRvcnkoc3RydWN0IGF0aDEwayAqYXIsIHUxNiAqcmQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy05OTQ2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYzo5OTQ3Olx0KnJkID0gYXRoX3JlZ2RfZmluZF9jb3VudHJ5X2J5X25hbWUoYWxwaGEyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtOTk0OC1cdGlmICgqcmQgPT0gMHhmZmZmKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM9OTk3MT1pbnQgYXRoMTBrX21hY19yZWdpc3RlcihzdHJ1Y3QgYXRoMTBrICphcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTEwMzAyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYzoxMDMwMzpcdHJldCA9IGF0aF9yZWdkX2luaXQoXHUwMDI2YXItXHUwMDNlYXRoX2NvbW1vbi5yZWd1bGF0b3J5LCBhci1cdTAwM2Vody1cdTAwM2V3aXBoeSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtMTAzMDQtXHRcdFx0ICAgIGF0aDEwa19yZWdfbm90aWZpZXIpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9iYXNlLmM9MzAyNT1hdGg1a19pbml0KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9iYXNlLmMtMzEzNS1cdHJlZ3VsYXRvcnktXHUwMDNlY3VycmVudF9yZCA9IGFoLVx1MDAzZWFoX2NhcGFiaWxpdGllcy5jYXBfZWVwcm9tLmVlX3JlZ2RvbWFpbjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9iYXNlLmM6MzEzNjpcdHJldCA9IGF0aF9yZWdkX2luaXQocmVndWxhdG9yeSwgaHctXHUwMDNld2lwaHksIGF0aDVrX3JlZ19ub3RpZmllcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNWsvYmFzZS5jLTMxMzctXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDVrL3BoeS5jPTI3NjE9YXRoNWtfZ2V0X21heF9jdGxfcG93ZXIoc3RydWN0IGF0aDVrX2h3ICphaCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNWsvcGh5LmMtMjc3NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9waHkuYzoyNzc1Olx0Y3RsX21vZGUgPSBhdGhfcmVnZF9nZXRfYmFuZF9jdGwocmVndWxhdG9yeSwgY2hhbm5lbC1cdTAwM2ViYW5kKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9waHkuYy0yNzc2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYz04Mjg9c3RhdGljIGludCBhdGg5a19pbml0X2RldmljZShzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jLTg1MS1cdC8qIEluaXRpYWxpemUgcmVndWxhdG9yeSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jOjg1MjpcdGVycm9yID0gYXRoX3JlZ2RfaW5pdChcdTAwMjZjb21tb24tXHUwMDNlcmVndWxhdG9yeSwgcHJpdi1cdTAwM2Vody1cdTAwM2V3aXBoeSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy04NTMtXHRcdFx0ICAgICAgYXRoOWtfcmVnX25vdGlmaWVyKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHcuYz0xMTc3PXUzMiBhdGg5a19yZWdkX2dldF9jdGwoc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcsIHN0cnVjdCBhdGg5a19jaGFubmVsICpjaGFuKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h3LmMtMTE3OC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHcuYzoxMTc5Olx0dTMyIGN0bCA9IGF0aF9yZWdkX2dldF9iYW5kX2N0bChyZWcsIGNoYW4tXHUwMDNlY2hhbi1cdTAwM2ViYW5kKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9ody5jLTExODAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYz0xMDA0PWludCBhdGg5a19pbml0X2RldmljZSh1MTYgZGV2aWQsIHN0cnVjdCBhdGhfc29mdGMgKnNjLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmMtMTAyMi1cdC8qIEluaXRpYWxpemUgcmVndWxhdG9yeSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYzoxMDIzOlx0ZXJyb3IgPSBhdGhfcmVnZF9pbml0KFx1MDAyNmNvbW1vbi1cdTAwM2VyZWd1bGF0b3J5LCBzYy1cdTAwM2Vody1cdTAwM2V3aXBoeSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmMtMTAyNC1cdFx0XHQgICAgICBhdGg5a19yZWdfbm90aWZpZXIpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9jYXJsOTE3MC9tYWluLmM9MTk1Mz1pbnQgY2FybDkxNzBfcmVnaXN0ZXIoc3RydWN0IGFyOTE3MCAqYXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL21haW4uYy0xOTcwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL21haW4uYzoxOTcxOlx0ZXJyID0gYXRoX3JlZ2RfaW5pdChyZWd1bGF0b3J5LCBhci1cdTAwM2Vody1cdTAwM2V3aXBoeSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9jYXJsOTE3MC9tYWluLmMtMTk3Mi1cdFx0XHQgICAgY2FybDkxNzBfcmVnX25vdGlmaWVyKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvcGh5LmM9MTI5MT1zdGF0aWMgdm9pZCBjYXJsOTE3MF9jYWxjX2N0bChzdHJ1Y3QgYXI5MTcwICphciwgdTMyIGZyZXEsIGVudW0gY2FybDkxNzBfYncgYncpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL3BoeS5jLTEzMjYtXHQgKiBocHJlZy5jOjp6ZkhwR2V0UmVndWxhdG9yeURvbWFpbigpIGFuZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL3BoeS5jOjEzMjc6XHQgKiBhdGgvcmVnZC5jOjphdGhfcmVnZF9nZXRfYmFuZF9jdGwoKSAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvcGh5LmMtMTMyOC1cdCAqIGUuZy4gZm9yIEZDQzNfV09STEQgdGhlIE9UVVMgcHJvY2VkdXJlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL3BoeS5jLTEzMzEtXHQgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9jYXJsOTE3MC9waHkuYzoxMzMyOlx0Y3RsX2dycCA9IGF0aF9yZWdkX2dldF9iYW5kX2N0bChcdTAwMjZhci1cdTAwM2Vjb21tb24ucmVndWxhdG9yeSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9jYXJsOTE3MC9waHkuYy0xMzMzLVx0XHRcdFx0XHRhci1cdTAwM2Vody1cdTAwM2Vjb25mLmNoYW5kZWYuY2hhbi1cdTAwM2ViYW5kKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTI1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzoyNjpzdGF0aWMgaW50IF9fYXRoX3JlZ2RfaW5pdChzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTI3LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM9MTk5PXN0YXRpYyBpbmxpbmUgYm9vbCBpc193d3Jfc2t1KHUxNiByZWdkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjA1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzoyMDY6c3RhdGljIHUxNiBhdGhfcmVnZF9nZXRfZWVwcm9tUkQoc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTIwNy17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYz0yMTE9Ym9vbCBhdGhfaXNfd29ybGRfcmVnZChzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjEyLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6MjEzOlx0cmV0dXJuIGlzX3d3cl9za3UoYXRoX3JlZ2RfZ2V0X2VlcHJvbVJEKHJlZykpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0yMTQtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM9NDM3PXN0YXRpYyB2b2lkIGF0aF9yZWdfYXBwbHlfd29ybGRfZmxhZ3Moc3RydWN0IHdpcGh5ICp3aXBoeSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTQ1OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NDU5OnUxNiBhdGhfcmVnZF9maW5kX2NvdW50cnlfYnlfbmFtZShjaGFyICphbHBoYTIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTQ2MC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy00NjktfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo0NzA6RVhQT1JUX1NZTUJPTChhdGhfcmVnZF9maW5kX2NvdW50cnlfYnlfbmFtZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTQ3MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM9NDcyPXN0YXRpYyBpbnQgX19hdGhfcmVnX2R5bl9jb3VudHJ5KHN0cnVjdCB3aXBoeSAqd2lwaHksXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy00ODEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjQ4MjpcdGNvdW50cnlfY29kZSA9IGF0aF9yZWdkX2ZpbmRfY291bnRyeV9ieV9uYW1lKHJlcXVlc3QtXHUwMDNlYWxwaGEyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNDgzLVx0aWYgKGNvdW50cnlfY29kZSA9PSAodTE2KSAtMSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTQ4OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NDg5Olx0X19hdGhfcmVnZF9pbml0KHJlZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTQ5MC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jPTU1MD1FWFBPUlRfU1lNQk9MKGF0aF9yZWdfbm90aWZpZXJfYXBwbHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy01NTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjU1MjpzdGF0aWMgYm9vbCBhdGhfcmVnZF9pc19lZXByb21fdmFsaWQoc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTU1My17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjU1NDpcdHUxNiByZCA9IGF0aF9yZWdkX2dldF9lZXByb21SRChyZWcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy01NTUtXHRpbnQgaTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jPTU4MT1zdGF0aWMgc3RydWN0IGNvdW50cnlfY29kZV90b19lbnVtX3JkKlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo1ODI6YXRoX3JlZ2RfZmluZF9jb3VudHJ5KHUxNiBjb3VudHJ5Q29kZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNTgzLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jPTU5ND1zdGF0aWMgc3RydWN0IGNvdW50cnlfY29kZV90b19lbnVtX3JkKlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo1OTU6YXRoX3JlZ2RfZmluZF9jb3VudHJ5X2J5X3JkKGludCByZWdkbW4pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTU5Ni17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy02MDYtLyogUmV0dXJucyB0aGUgbWFwIG9mIHRoZSBFRVBST00gc2V0IFJEIHRvIGEgY291bnRyeSBjb2RlICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjYwNzpzdGF0aWMgdTE2IGF0aF9yZWdkX2dldF9kZWZhdWx0X2NvdW50cnkodTE2IHJkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy02MDgte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNjEyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo2MTM6XHRcdGNvdW50cnkgPSBhdGhfcmVnZF9maW5kX2NvdW50cnkoY2MpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy02MTQtXHRcdGlmIChjb3VudHJ5ICE9IE5VTEwpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYz02MzU9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo2MzY6YXRoX3JlZ2RfaW5pdF93aXBoeShzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNjM3LVx0XHQgICAgc3RydWN0IHdpcGh5ICp3aXBoeSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTY3NS0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6Njc2OnN0YXRpYyB2b2lkIGF0aF9yZWdkX3Nhbml0aXplKHN0cnVjdCBhdGhfcmVndWxhdG9yeSAqcmVnKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy02Nzcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNjgzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo2ODQ6c3RhdGljIGludCBfX2F0aF9yZWdkX2luaXQoc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTY4NS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy02OTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjY5MjpcdGF0aF9yZWdkX3Nhbml0aXplKHJlZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTY5My1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTY5NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6Njk2Olx0aWYgKCFhdGhfcmVnZF9pc19lZXByb21fdmFsaWQocmVnKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy02OTctXHRcdHByX2VycihcJiMzNDtJbnZhbGlkIEVFUFJPTSBjb250ZW50c1xcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy03MDAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjcwMTpcdHJlZ2RtbiA9IGF0aF9yZWdkX2dldF9lZXByb21SRChyZWcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo3MDI6XHRyZWctXHUwMDNlY291bnRyeV9jb2RlID0gYXRoX3JlZ2RfZ2V0X2RlZmF1bHRfY291bnRyeShyZWdkbW4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy03MDMtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy03MTUtXHRcdCAgICAgICBcJiMzNDttYXAgc2VhcmNoXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NzE2Olx0XHRjb3VudHJ5ID0gYXRoX3JlZ2RfZmluZF9jb3VudHJ5KHJlZy1cdTAwM2Vjb3VudHJ5X2NvZGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy03MTctXHRcdGlmIChjb3VudHJ5ID09IE5VTEwpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTczOS1cdGlmICghY291bnRyeSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NzQwOlx0XHRjb3VudHJ5ID0gYXRoX3JlZ2RfZmluZF9jb3VudHJ5X2J5X3JkKHJlZ2Rtbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTc0MS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jPTc1OD1pbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NzU5OmF0aF9yZWdkX2luaXQoc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTc2MC1cdCAgICAgIHN0cnVjdCB3aXBoeSAqd2lwaHksXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy03NjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjc2ODpcdHIgPSBfX2F0aF9yZWdkX2luaXQocmVnKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNzY5LVx0aWYgKHIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy03NzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjc3NjpcdGF0aF9yZWdkX2luaXRfd2lwaHkocmVnLCB3aXBoeSwgcmVnX25vdGlmaWVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNzc3LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNzc5LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NzgwOkVYUE9SVF9TWU1CT0woYXRoX3JlZ2RfaW5pdCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTc4MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NzgyOnUzMiBhdGhfcmVnZF9nZXRfYmFuZF9jdGwoc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTc4My1cdFx0XHQgIGVudW0gbmw4MDIxMV9iYW5kIGJhbmQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy03ODYtXHQgICAgKHJlZy1cdTAwM2Vjb3VudHJ5X2NvZGUgPT0gQ1RSWV9ERUZBVUxUIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo3ODc6XHQgICAgIGlzX3d3cl9za3UoYXRoX3JlZ2RfZ2V0X2VlcHJvbVJEKHJlZykpKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy03ODgtXHRcdHJldHVybiBTRF9OT19DVEw7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy03OTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjc5MTpcdGlmIChhdGhfcmVnZF9nZXRfZWVwcm9tUkQocmVnKSA9PSBDVFJZX0RFRkFVTFQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNzkyLVx0XHRzd2l0Y2ggKHJlZy1cdTAwM2VyZWdpb24pIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTgxMi19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjgxMzpFWFBPUlRfU1lNQk9MKGF0aF9yZWdkX2dldF9iYW5kX2N0bCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuaD0yNjI9Ym9vbCBhdGhfaXNfNDlnaHpfYWxsb3dlZCh1MTYgcmVkb21haW4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuaDoyNjM6dTE2IGF0aF9yZWdkX2ZpbmRfY291bnRyeV9ieV9uYW1lKGNoYXIgKmFscGhhMik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5oOjI2NDppbnQgYXRoX3JlZ2RfaW5pdChzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZywgc3RydWN0IHdpcGh5ICp3aXBoeSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmgtMjY1LVx0XHQgIHZvaWQgKCpyZWdfbm90aWZpZXIpKHN0cnVjdCB3aXBoeSAqd2lwaHksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5oLTI2Ni1cdFx0XHRcdCAgICAgICBzdHJ1Y3QgcmVndWxhdG9yeV9yZXF1ZXN0ICpyZXF1ZXN0KSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5oOjI2Nzp1MzIgYXRoX3JlZ2RfZ2V0X2JhbmRfY3RsKHN0cnVjdCBhdGhfcmVndWxhdG9yeSAqcmVnLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuaC0yNjgtXHRcdFx0ICBlbnVtIG5sODAyMTFfYmFuZCBiYW5kKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTE6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzgxMjgKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBhdGhfcmVnZCBJbml0aWFsaXphdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIG9ic2VydmF0aW9uIGlzIHRoYXQgYGF0aF9yZWdkX2luaXRgIHNlZW1zIHByZXR0eSBjcnVjaWFsLCBhbmQgaXQmIzM5O3MgYmVpbmcgY2FsbGVkIGJ5IGEgZGl2ZXJzZSByYW5nZSBvZiBkcml2ZXJzLiBJIHNlZSBpdCBpbnZva2VkIGJ5IHRoZSBgYXRoMTBrYCwgYGF0aDVrYCwgYGF0aDlrX2h0Y2AsIGBhdGg5a2AsIGFuZCBgY2FybDkxNzBgIGZhbWlsaWVzLiBUaGVzZSBjb3ZlciBhIGJyb2FkIHNwZWN0cnVtIG9mIGhhcmR3YXJlIGludGVyZmFjZXM6IFBDSSwgU05PQywgU0RJTywgQUhCLCBhbmQgVVNCLiBUaGF0JiMzOTtzIGEgc3Ryb25nIGluZGljYXRpb24gdGhhdCB0aGlzIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uIGlzIGZ1bmRhbWVudGFsIHRvIHJlZ3VsYXRvcnkgZG9tYWluIG1hbmFnZW1lbnQgYWNyb3NzIGEgbG90IG9mIGRpZmZlcmVudCBkZXZpY2VzLgoKSG9sZCBvbiBhIHNlY29uZCwgdGhvdWdoLiBJIG5lZWQgdG8gYmUgdGhvcm91Z2guIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBiaWcgcGljdHVyZS4gV2hhdCBhYm91dCBgYXRoX3JlZ19ub3RpZmllcl9hcHBseWA/IEkgcmVtZW1iZXIgdGhhdCwgYnV0IHdoZXJlIGRvZXMgaXQgZml0IGludG8gdGhlIHBpY3R1cmU/IEkmIzM5O20gZ29pbmcgdG8gaGF2ZSB0byBjaGVjayB3aGVyZSB0aGF0JiMzOTtzIGNhbGxlZCwgYmVjYXVzZSBJJiMzOTttIGJldHRpbmcgdGhhdCYjMzk7cyBhbiBpbXBvcnRhbnQgcGllY2Ugb2YgdGhlIHB1enpsZS4gSSBuZWVkIHRvIHNlZSBob3cgdGhlc2UgdHdvIGZ1bmN0aW9ucyByZWxhdGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDExOjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2F0aF9yZWdfbm90aWZpZXJfYXBwbHkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYz0zNTYxPXN0YXRpYyB2b2lkIGF0aDEwa19yZWdfbm90aWZpZXIoc3RydWN0IHdpcGh5ICp3aXBoeSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTM1NjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jOjM1Njg6XHRhdGhfcmVnX25vdGlmaWVyX2FwcGx5KHdpcGh5LCByZXF1ZXN0LCBcdTAwMjZhci1cdTAwM2VhdGhfY29tbW9uLnJlZ3VsYXRvcnkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy0zNTY5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9iYXNlLmM9MjUyPXN0YXRpYyB2b2lkIGF0aDVrX3JlZ19ub3RpZmllcihzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9iYXNlLmMtMjU4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDVrL2Jhc2UuYzoyNTk6XHRhdGhfcmVnX25vdGlmaWVyX2FwcGx5KHdpcGh5LCByZXF1ZXN0LCByZWd1bGF0b3J5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9iYXNlLmMtMjYwLX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM9MjI0PXN0YXRpYyB2b2lkIGF0aDlrX3JlZ19ub3RpZmllcihzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy0yMjktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM6MjMwOlx0YXRoX3JlZ19ub3RpZmllcl9hcHBseSh3aXBoeSwgcmVxdWVzdCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy0yMzEtXHRcdFx0ICAgICAgIGF0aDlrX2h3X3JlZ3VsYXRvcnkocHJpdi1cdTAwM2VhaCkpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmM9MjQ5PXN0YXRpYyB2b2lkIGF0aDlrX3JlZ19ub3RpZmllcihzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmMtMjU2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYzoyNTc6XHRhdGhfcmVnX25vdGlmaWVyX2FwcGx5KHdpcGh5LCByZXF1ZXN0LCByZWcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYy0yNTgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL21haW4uYz0xOTQ0PXN0YXRpYyB2b2lkIGNhcmw5MTcwX3JlZ19ub3RpZmllcihzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9jYXJsOTE3MC9tYWluLmMtMTk0OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9jYXJsOTE3MC9tYWluLmM6MTk1MDpcdGF0aF9yZWdfbm90aWZpZXJfYXBwbHkod2lwaHksIHJlcXVlc3QsIFx1MDAyNmFyLVx1MDAzZWNvbW1vbi5yZWd1bGF0b3J5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9jYXJsOTE3MC9tYWluLmMtMTk1MS19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYz00OTY9c3RhdGljIHZvaWQgYXRoX3JlZ19keW5fY291bnRyeShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNTA4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo1MDk6dm9pZCBhdGhfcmVnX25vdGlmaWVyX2FwcGx5KHN0cnVjdCB3aXBoeSAqd2lwaHksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTUxMC1cdFx0XHQgICAgc3RydWN0IHJlZ3VsYXRvcnlfcmVxdWVzdCAqcmVxdWVzdCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTU0OS19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjU1MDpFWFBPUlRfU1lNQk9MKGF0aF9yZWdfbm90aWZpZXJfYXBwbHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy01NTEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuaD0yNjc9dTMyIGF0aF9yZWdkX2dldF9iYW5kX2N0bChzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmgtMjY4LVx0XHRcdCAgZW51bSBubDgwMjExX2JhbmQgYmFuZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5oOjI2OTp2b2lkIGF0aF9yZWdfbm90aWZpZXJfYXBwbHkoc3RydWN0IHdpcGh5ICp3aXBoeSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmgtMjcwLVx0XHRcdCAgICBzdHJ1Y3QgcmVndWxhdG9yeV9yZXF1ZXN0ICpyZXF1ZXN0LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxMTo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzOTUxMAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDczCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBSZWd1bGF0b3J5IERvbWFpbiBDaGFuZ2VzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgdGhlIHN5c3RlbSBoYW5kbGVzIGNoYW5nZXMgdG8gdGhlIHJlZ3VsYXRvcnkgZG9tYWluLiBJdCBsb29rcyBsaWtlIGBhdGhfcmVnX25vdGlmaWVyX2FwcGx5YCBpcyB0aGUga2V5IGZ1bmN0aW9uLiBUaGlzIGlzIHRyaWdnZXJlZCwgaXQgc2VlbXMsIHdoZW4gc29tZW9uZSDigJMgbWF5YmUgdGhyb3VnaCBgbmw4MDIxMWAgZnJvbSB1c2Vyc3BhY2Ug4oCTIHNldHMgYSBuZXcgcmVndWxhdG9yeSBkb21haW4gb3IgY291bnRyeSBjb2RlLiBUaGF0IG1ha2VzIHNlbnNlLCBoYW5kbGluZyB0aG9zZSB1cGRhdGVzIGlzIGNyaXRpY2FsIGZvciBjb21wbGlhbmNlIGFuZCBwcm9wZXIgb3BlcmF0aW9uLgoKTXkgbmV4dCBzdGVwIGlzIHRvIGRpdmUgaW50byB0aGUgc291cmNlIGNvZGUgZm9yIGBhdGhfcmVnX25vdGlmaWVyX2FwcGx5YC4gU3BlY2lmaWNhbGx5LCBJJiMzOTtsbCBiZSBjaGVja2luZyBvdXQgdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jYCBmaWxlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGhhcHBlbnMgKndpdGhpbiogdGhhdCBmdW5jdGlvbiB0byBnZXQgYSBmdWxsIHBpY3R1cmUgb2YgdGhlIHJlZ3VsYXRvcnkgY2hhbmdlIHByb2Nlc3MuIEkmIzM5O20gZ29pbmcgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgZGF0YSBzdHJ1Y3R1cmVzIHVzZWQsIHRoZSBjYWxscyB0byBsb3dlci1sZXZlbCBmdW5jdGlvbnMsIGFuZCBhbnkgZXJyb3IgaGFuZGxpbmcuIFRoaXMgaXMgYSBjcml0aWNhbCBhcmVhLCBzbyBJIHdhbnQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCBpdCBjb21wbGV0ZWx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxMTo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA1MDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDUwMDpcdFx0aWYgKF9fYXRoX3JlZ19keW5fY291bnRyeSh3aXBoeSwgcmVnLCByZXF1ZXN0KSlcbiA1MDE6XHRcdFx0cmV0dXJuO1xuIDUwMjpcdFxuIDUwMzpcdFx0cHJpbnRrKEtFUk5fREVCVUcgXCYjMzQ7YXRoOiByZWdkb21haW4gMHglMHggXCYjMzQ7XG4gNTA0Olx0XHRcdFx0ICBcJiMzNDtkeW5hbWljYWxseSB1cGRhdGVkIGJ5ICVzXFxuXCYjMzQ7LFxuIDUwNTpcdFx0ICAgICAgIHJlZy1cdTAwM2VjdXJyZW50X3JkLFxuIDUwNjpcdFx0ICAgICAgIHJlZ19pbml0aWF0b3JfbmFtZShyZXF1ZXN0LVx1MDAzZWluaXRpYXRvcikpO1xuIDUwNzpcdH1cbiA1MDg6XHRcbiA1MDk6XHR2b2lkIGF0aF9yZWdfbm90aWZpZXJfYXBwbHkoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiA1MTA6XHRcdFx0XHQgICAgc3RydWN0IHJlZ3VsYXRvcnlfcmVxdWVzdCAqcmVxdWVzdCxcbiA1MTE6XHRcdFx0XHQgICAgc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcpXG4gNTEyOlx0e1xuIDUxMzpcdFx0c3RydWN0IGF0aF9jb21tb24gKmNvbW1vbiA9IGNvbnRhaW5lcl9vZihyZWcsIHN0cnVjdCBhdGhfY29tbW9uLFxuIDUxNDpcdFx0XHRcdFx0XHRcdCByZWd1bGF0b3J5KTtcbiA1MTU6XHRcdC8qIFdlIGFsd2F5cyBhcHBseSB0aGlzICovXG4gNTE2Olx0XHRhdGhfcmVnX2FwcGx5X3JhZGFyX2ZsYWdzKHdpcGh5LCByZWcpO1xuIDUxNzpcdFxuIDUxODpcdFx0LypcbiA1MTk6XHRcdCAqIFRoaXMgd291bGQgaGFwcGVuIHdoZW4gd2UgaGF2ZSBzZW50IGEgY3VzdG9tIHJlZ3VsYXRvcnkgcmVxdWVzdFxuIDUyMDpcdFx0ICogYSB3b3JsZCByZWd1bGF0b3J5IGRvbWFpbiBhbmQgdGhlIHNjaGVkdWxlciBoYXNuJiMzOTt0IHlldCBwcm9jZXNzZWRcbiA1MjE6XHRcdCAqIGFueSBwZW5kaW5nIHJlcXVlc3RzIGluIHRoZSBxdWV1ZS5cbiA1MjI6XHRcdCAqL1xuIDUyMzpcdFx0aWYgKCFyZXF1ZXN0KVxuIDUyNDpcdFx0XHRyZXR1cm47XG4gNTI1Olx0XG4gNTI2Olx0XHRyZWctXHUwMDNlcmVnaW9uID0gcmVxdWVzdC1cdTAwM2VkZnNfcmVnaW9uO1xuIDUyNzpcdFx0c3dpdGNoIChyZXF1ZXN0LVx1MDAzZWluaXRpYXRvcikge1xuIDUyODpcdFx0Y2FzZSBOTDgwMjExX1JFR0RPTV9TRVRfQllfQ09SRTpcbiA1Mjk6XHRcdFx0LypcbiA1MzA6XHRcdFx0ICogSWYgY29tbW9uLVx1MDAzZXJlZ193b3JsZF9jb3B5IGlzIHdvcmxkIHJvYW1pbmcgaXQgbWVhbnMgd2UgKndlcmUqXG4gNTMxOlx0XHRcdCAqIHdvcmxkIHJvYW1pbmcuLi4gc28gd2Ugbm93IGhhdmUgdG8gcmVzdG9yZSB0aGF0IGRhdGEuXG4gNTMyOlx0XHRcdCAqL1xuIDUzMzpcdFx0XHRpZiAoIWF0aF9pc193b3JsZF9yZWdkKFx1MDAyNmNvbW1vbi1cdTAwM2VyZWdfd29ybGRfY29weSkpXG4gNTM0Olx0XHRcdFx0YnJlYWs7XG4gNTM1Olx0XG4gNTM2Olx0XHRcdG1lbWNweShyZWcsIFx1MDAyNmNvbW1vbi1cdTAwM2VyZWdfd29ybGRfY29weSxcbiA1Mzc6XHRcdFx0ICAgICAgIHNpemVvZihzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkpKTtcbiA1Mzg6XHRcdFx0YnJlYWs7XG4gNTM5Olx0XHRjYXNlIE5MODAyMTFfUkVHRE9NX1NFVF9CWV9EUklWRVI6XG4gNTQwOlx0XHRcdGJyZWFrO1xuIDU0MTpcdFx0Y2FzZSBOTDgwMjExX1JFR0RPTV9TRVRfQllfVVNFUjpcbiA1NDI6XHRcdFx0aWYgKGF0aF9yZWdfZHluX2NvdW50cnlfdXNlcl9hbGxvdyhyZWcpKVxuIDU0MzpcdFx0XHRcdGF0aF9yZWdfZHluX2NvdW50cnkod2lwaHksIHJlZywgcmVxdWVzdCk7XG4gNTQ0Olx0XHRcdGJyZWFrO1xuIDU0NTpcdFx0Y2FzZSBOTDgwMjExX1JFR0RPTV9TRVRfQllfQ09VTlRSWV9JRTpcbiA1NDY6XHRcdFx0YXRoX3JlZ19keW5fY291bnRyeSh3aXBoeSwgcmVnLCByZXF1ZXN0KTtcbiA1NDc6XHRcdFx0YnJlYWs7XG4gNTQ4Olx0XHR9XG4gNTQ5Olx0fVxuIDU1MDpcdEVYUE9SVF9TWU1CT0woYXRoX3JlZ19ub3RpZmllcl9hcHBseSk7XG4gNTUxOlx0XG4gNTUyOlx0c3RhdGljIGJvb2wgYXRoX3JlZ2RfaXNfZWVwcm9tX3ZhbGlkKHN0cnVjdCBhdGhfcmVndWxhdG9yeSAqcmVnKVxuIDU1MzpcdHtcbiA1NTQ6XHRcdHUxNiByZCA9IGF0aF9yZWdkX2dldF9lZXByb21SRChyZWcpO1xuIDU1NTpcdFx0aW50IGk7XG4gNTU2Olx0XG4gNTU3Olx0XHRpZiAocmQgXHUwMDI2IENPVU5UUllfRVJEX0ZMQUcpIHtcbiA1NTg6XHRcdFx0LyogRUVQUk9NIHZhbHVlIGlzIGEgY291bnRyeSBjb2RlICovXG4gNTU5Olx0XHRcdHUxNiBjYyA9IHJkIFx1MDAyNiB+Q09VTlRSWV9FUkRfRkxBRztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTE6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDA3NTIKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyNjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgQXRoZXJvcyBXaXJlbGVzcyBSZWd1bGF0b3J5IERvbWFpbiBJbml0aWFsaXphdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBXaGVuIG9uZSBvZiB0aGVzZSBBdGhlcm9zIHdpcmVsZXNzIGRldmljZXMg4oCTIGxpa2UgYW4gYXRoOWtfaHRjLCBjYXJsOTE3MCBVU0IgZGV2aWNlLCBvciBhIFBDSSBhdGg5ay9hdGgxMGsvYXRoNWsgY2FyZCDigJMgZ2V0cyBwcm9iZWQgYW5kIGluaXRpYWxpemVkLCB0aGUgYGF0aF9yZWdkX2luaXRgIGZ1bmN0aW9uIGdldHMgY2FsbGVkLiBNYWtlcyBzZW5zZSBzbyBmYXIuCgpOb3csIHdpdGhpbiBgYXRoX3JlZ2RfaW5pdGAsIHRoZSBjb2RlIGRpdmVzIGludG8gYF9fYXRoX3JlZ2RfaW5pdChyZWcpYCBhbmQgdGhlbiBjYWxscyBgYXRoX3JlZ2RfaW5pdF93aXBoeShyZWcsIHdpcGh5LCByZWdfbm90aWZpZXIpYC4gVGhpcyBpcyB3aGVyZSBpdCBnZXRzIGludGVyZXN0aW5nLCBhcyBpdCBhcHBlYXJzIHRvIGJlIHJlc3BvbnNpYmxlIGZvciBzZXR0aW5nIHVwIHRoZSByZWd1bGF0b3J5IGRvbWFpbiBpbmZvcm1hdGlvbi4KCkluc2lkZSBgYXRoX3JlZ2RfaW5pdF93aXBoeWAsIGl0IGNoZWNrcyBpZiBgYXRoX2lzX3dvcmxkX3JlZ2QocmVnKWAgaXMgdHJ1ZS4gSWYgaXQgKmlzKiB0cnVlLCB3ZSYjMzk7cmUgbGlrZWx5IGRlYWxpbmcgd2l0aCBhIHdvcmxkIHJlZ3VsYXRvcnkgZG9tYWluLCBhbmQgdGhlIGNvZGUgY2FsbHMgYHJlZ2QgPSBhdGhfd29ybGRfcmVnZG9tYWluKHJlZyk7YC4gT3RoZXJ3aXNlLCBpdCB1c2VzIGByZWdkID0gYXRoX2RlZmF1bHRfd29ybGRfcmVnZG9tYWluKCk7YC4gU28gaXQgc2VlbXMgdGhlcmUmIzM5O3MgYSBkaXN0aW5jdGlvbiBiYXNlZCBvbiB3aGV0aGVyIGEgd29ybGQgcmVndWxhdG9yeSBkb21haW4gaXMgaW4gdXNlIG9yIG5vdC4gVGhpcyBpcyBsaWtlbHkgYW4gaW1wb3J0YW50IGRpc3RpbmN0aW9uIHRvIGNoZWNrIGxhdGVyLgoKQ3J1Y2lhbGx5LCBpdCB0aGVuIGNhbGxzIGB3aXBoeV9hcHBseV9jdXN0b21fcmVndWxhdG9yeSh3aXBoeSwgcmVnZCk7YC4gVGhpcyBpcyB3aGVyZSB0aGUgbWFnaWMgaGFwcGVucywgc28gbGV0JiMzOTtzIGRpZyBpbnRvIHRoYXQgZnVuY3Rpb24mIzM5O3MgaW1wbGVtZW50YXRpb24uIEl0IGxvb2tzIGxpa2UgdGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgKmFjdHVhbGx5IGFwcGx5aW5nKiB0aGUgcmVndWxhdG9yeSBydWxlcyB0byB0aGUgd2lyZWxlc3MgaW50ZXJmYWNlIChgd2lwaHlgKS4gU3BlY2lmaWNhbGx5LCBpdCYjMzk7cyBpdGVyYXRpbmcgb3ZlciB0aGUgYHJlZ2QtJmd0O25fcmVnX3J1bGVzYCBhbmQgYHJlZ2QtJmd0O3JlZ19ydWxlc2AgZmllbGRzLCB3aGljaCBhbG1vc3QgY2VydGFpbmx5IGNvbnRhaW4gdGhlIHJlZ3VsYXRvcnkgZG9tYWluIGRhdGEuIEkmIzM5O2xsIG5lZWQgdG8gZ28gbG9vayBhdCBgd2lwaHlfYXBwbHlfY3VzdG9tX3JlZ3VsYXRvcnlgIGluIGBuZXQvd2lyZWxlc3MvcmVnLmNgIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIGRldGFpbHMgb2YgaG93IHRob3NlIHJ1bGVzIGFyZSBhcHBsaWVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxMTo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy9yZWcuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI2MTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MjYxMDpcdH1cbjI2MTE6XHRcbjI2MTI6XHQvKiBVc2VkIGJ5IGRyaXZlcnMgcHJpb3IgdG8gd2lwaHkgcmVnaXN0cmF0aW9uICovXG4yNjEzOlx0dm9pZCB3aXBoeV9hcHBseV9jdXN0b21fcmVndWxhdG9yeShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuMjYxNDpcdFx0XHRcdFx0ICAgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW4gKnJlZ2QpXG4yNjE1Olx0e1xuMjYxNjpcdFx0Y29uc3Qgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW4gKm5ld19yZWdkLCAqdG1wO1xuMjYxNzpcdFx0ZW51bSBubDgwMjExX2JhbmQgYmFuZDtcbjI2MTg6XHRcdHVuc2lnbmVkIGludCBiYW5kc19zZXQgPSAwO1xuMjYxOTpcdFxuMjYyMDpcdFx0V0FSTighKHdpcGh5LVx1MDAzZXJlZ3VsYXRvcnlfZmxhZ3MgXHUwMDI2IFJFR1VMQVRPUllfQ1VTVE9NX1JFRyksXG4yNjIxOlx0XHQgICAgIFwmIzM0O3dpcGh5IHNob3VsZCBoYXZlIFJFR1VMQVRPUllfQ1VTVE9NX1JFR1xcblwmIzM0Oyk7XG4yNjIyOlx0XHR3aXBoeS1cdTAwM2VyZWd1bGF0b3J5X2ZsYWdzIHw9IFJFR1VMQVRPUllfQ1VTVE9NX1JFRztcbjI2MjM6XHRcbjI2MjQ6XHRcdGZvciAoYmFuZCA9IDA7IGJhbmQgXHUwMDNjIE5VTV9OTDgwMjExX0JBTkRTOyBiYW5kJiM0MzsmIzQzOykge1xuMjYyNTpcdFx0XHRpZiAoIXdpcGh5LVx1MDAzZWJhbmRzW2JhbmRdKVxuMjYyNjpcdFx0XHRcdGNvbnRpbnVlO1xuMjYyNzpcdFx0XHRoYW5kbGVfYmFuZF9jdXN0b20od2lwaHksIHdpcGh5LVx1MDAzZWJhbmRzW2JhbmRdLCByZWdkKTtcbjI2Mjg6XHRcdFx0YmFuZHNfc2V0JiM0MzsmIzQzOztcbjI2Mjk6XHRcdH1cbjI2MzA6XHRcbjI2MzE6XHRcdC8qXG4yNjMyOlx0XHQgKiBubyBwb2ludCBpbiBjYWxsaW5nIHRoaXMgaWYgaXQgd29uJiMzOTt0IGhhdmUgYW55IGVmZmVjdFxuMjYzMzpcdFx0ICogb24geW91ciBkZXZpY2UmIzM5O3Mgc3VwcG9ydGVkIGJhbmRzLlxuMjYzNDpcdFx0ICovXG4yNjM1Olx0XHRXQVJOX09OKCFiYW5kc19zZXQpO1xuMjYzNjpcdFx0bmV3X3JlZ2QgPSByZWdfY29weV9yZWdkKHJlZ2QpO1xuMjYzNzpcdFx0aWYgKElTX0VSUihuZXdfcmVnZCkpXG4yNjM4Olx0XHRcdHJldHVybjtcbjI2Mzk6XHRcbjI2NDA6XHRcdHJ0bmxfbG9jaygpO1xuMjY0MTpcdFx0c2NvcGVkX2d1YXJkKHdpcGh5LCB3aXBoeSkge1xuMjY0MjpcdFx0XHR0bXAgPSBnZXRfd2lwaHlfcmVnZG9tKHdpcGh5KTtcbjI2NDM6XHRcdFx0cmN1X2Fzc2lnbl9wb2ludGVyKHdpcGh5LVx1MDAzZXJlZ2QsIG5ld19yZWdkKTtcbjI2NDQ6XHRcdFx0cmN1X2ZyZWVfcmVnZG9tKHRtcCk7XG4yNjQ1Olx0XHR9XG4yNjQ2Olx0XHRydG5sX3VubG9jaygpO1xuMjY0NzpcdH1cbjI2NDg6XHRFWFBPUlRfU1lNQk9MKHdpcGh5X2FwcGx5X2N1c3RvbV9yZWd1bGF0b3J5KTtcbjI2NDk6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTE6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDIwOTUKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA2NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipBbmFseXppbmcgdGhlIFJlZ2lzdHJhdGlvbiBSdWxlIEhhbmRsaW5nKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgd2UmIzM5O3JlIGhhbmRsaW5nIHJlZ2lzdHJhdGlvbiBydWxlcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgYGhhbmRsZV9iYW5kX2N1c3RvbWAgYW5kIGByZWdfY29weV9yZWdkKHJlZ2QpYCBhcmUgZ29pbmcgdG8gYmUgdGhlIHdvcmtob3JzZXMgcHJvY2Vzc2luZyB0aGUgYHJlZ2QtJmd0O25fcmVnX3J1bGVzYCBhbmQgYHJlZ2QtJmd0O3JlZ19ydWxlc2AgbWVtYmVycyBvZiB0aGUgYHJlZ2RgIHN0cnVjdHVyZS4gVGhlc2UgYXJlIGNsZWFybHkga2V5IGNvbXBvbmVudHMgaW4gbWFuYWdpbmcgdGhlIHJlZ3VsYXRvcnkgZG9tYWluIHNldHRpbmdzLiBOb3csIEkgc2hvdWxkIHByb2JhYmx5IGRvdWJsZS1jaGVjayBob3cgYGhhbmRsZV9iYW5kX2N1c3RvbWAgYWN0dWFsbHkgZnVuY3Rpb25zLiBMZXQmIzM5O3MgZGl2ZSBpbnRvIGBuZXQvd2lyZWxlc3MvcmVnLmNgIHRvIHNlZSBwcmVjaXNlbHkgd2hhdCYjMzk7cyBnb2luZyBvbiB3aXRoaW4gdGhhdCBmdW5jdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTE6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3MvcmVnLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNTkwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDI1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzI1OTA6XHRcdGNoYW4tXHUwMDNlbWF4X3Bvd2VyID0gY2hhbi1cdTAwM2VtYXhfcmVnX3Bvd2VyO1xuMjU5MTpcdH1cbjI1OTI6XHRcbjI1OTM6XHRzdGF0aWMgdm9pZCBoYW5kbGVfYmFuZF9jdXN0b20oc3RydWN0IHdpcGh5ICp3aXBoeSxcbjI1OTQ6XHRcdFx0XHQgICAgICAgc3RydWN0IGllZWU4MDIxMV9zdXBwb3J0ZWRfYmFuZCAqc2JhbmQsXG4yNTk1Olx0XHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluICpyZWdkKVxuMjU5NjpcdHtcbjI1OTc6XHRcdHVuc2lnbmVkIGludCBpO1xuMjU5ODpcdFxuMjU5OTpcdFx0aWYgKCFzYmFuZClcbjI2MDA6XHRcdFx0cmV0dXJuO1xuMjYwMTpcdFxuMjYwMjpcdFx0LypcbjI2MDM6XHRcdCAqIFdlIGN1cnJlbnRseSBhc3N1bWUgdGhhdCB5b3UgYWx3YXlzIHdhbnQgYXQgbGVhc3QgMjAgTUh6LFxuMjYwNDpcdFx0ICogb3RoZXJ3aXNlIGNoYW5uZWwgMTIgbWlnaHQgZ2V0IGVuYWJsZWQgaWYgdGhpcyBydWxlIGlzXG4yNjA1Olx0XHQgKiBjb21wYXRpYmxlIHRvIFVTLCB3aGljaCBwZXJtaXRzIDI0MDIgLSAyNDcyIE1Iei5cbjI2MDY6XHRcdCAqL1xuMjYwNzpcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2Mgc2JhbmQtXHUwMDNlbl9jaGFubmVsczsgaSYjNDM7JiM0MzspXG4yNjA4Olx0XHRcdGhhbmRsZV9jaGFubmVsX2N1c3RvbSh3aXBoeSwgXHUwMDI2c2JhbmQtXHUwMDNlY2hhbm5lbHNbaV0sIHJlZ2QsXG4yNjA5Olx0XHRcdFx0XHQgICAgICBNSFpfVE9fS0haKDIwKSk7XG4yNjEwOlx0fVxuMjYxMTpcdFxuMjYxMjpcdC8qIFVzZWQgYnkgZHJpdmVycyBwcmlvciB0byB3aXBoeSByZWdpc3RyYXRpb24gKi9cbjI2MTM6XHR2b2lkIHdpcGh5X2FwcGx5X2N1c3RvbV9yZWd1bGF0b3J5KHN0cnVjdCB3aXBoeSAqd2lwaHksXG4yNjE0Olx0XHRcdFx0XHQgICBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiAqcmVnZClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTE6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDI3NjAKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAxMjQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgRmVhc2liaWxpdHkgQW5hbHlzaXMgZm9yIFJlZ3VsYXRvcnkgVGFibGUgTW9kaWZpY2F0aW9ucyBpbiBhdGgvcmVnZC5jKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBuZWVkIHRvIGRldGVybWluZSBpZiBpdCYjMzk7cyB3b3J0aCBmdXp6aW5nLiBJbml0aWFsbHksIEkgd2FzIHRoaW5raW5nIGFib3V0IHRoZSBVU0Igd2lyZWxlc3MgZHJpdmVycyBgY2FybDkxNzBgIG9yIGBhdGg5a19odGNgLiAgSSBrbm93IHN5emthbGxlciBjYW4gZW11bGF0ZSB0aGVzZSB2aWEgVVNCIFJhdyBHYWRnZXQuICBJJiMzOTt2ZSBnb3QgdG8gY2hlY2ssIHRob3VnaCwgaWYgdGhlcmUgYXJlIGFueSBvdGhlciB2aXJ0dWFsIGJ1c2VzIG9yIGltcGxlbWVudGF0aW9ucyB1c2luZyB0aGUgYGF0aGAgZHJpdmVycyBiZXNpZGVzIHRob3NlLiBOb3BlLCBubyBgbWFjODAyMTFfaHdzaW1gIHVzZS4KClJpZ2h0LCBiYWNrIHRvIHRoZSBjb3JlIHF1ZXN0aW9uOiBjYW4gc3l6a2FsbGVyJiMzOTtzIFVTQiBmdXp6aW5nIGV2ZW4gdG91Y2ggdGhlIGNvZGUgaW4gcXVlc3Rpb24/IFllcywgaXQgYWJzb2x1dGVseSBjYW4uIFN5emthbGxlciBzdXBwb3J0cyBVU0IgZGV2aWNlIHByb2JpbmcgYW5kIGZ1enppbmcsIHRhcmdldGluZyB3aXJlbGVzcyBkcml2ZXJzIGxpa2UgYGF0aDlrX2h0Y2AsIGBjYXJsOTE3MGAsIGFuZCBvdGhlcnMuCgpCdXQgaXMgdGhpcyBqdXN0IGEgcmVndWxhdG9yeSB0YWJsZSBjaGFuZ2U/ICBUaW1lIHRvIHJldmlzaXQgdGhlIGZ1enppbmcgdHJpYWdlIHBoaWxvc29waHkuICBSZWFjaGFiaWxpdHkgaXMga2V5LiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgY29kZSBpcyAqcmVhY2hhYmxlKiBpbiBhIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiAgSXQmIzM5O3Mgbm90IGVub3VnaCBpZiBpdCYjMzk7cyBnb3QgbmV3IGFzc2VydGlvbnMgb3IgcmVmYWN0b3JlZCBjb2RlIHRoYXQmIzM5O3Mgbm90IHJlYWNoYWJsZS4gIAoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gSXMgdGhlIG1vZGlmaWVkIGNvZGUgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmNgIHJlYWNoYWJsZT8gWWVzISBUaGUgYGF0aC9gIGNvZGUgaXMgdXNlZCBieSBVU0Igd2lyZWxlc3MgZHJpdmVycyBgY2FybDkxNzBgIGFuZCBgYXRoOWtfaHRjYC4gV2hlbiB0aGVzZSBkZXZpY2VzIGFyZSBjb25uZWN0ZWQgKG9yIGVtdWxhdGVkIHdpdGggVVNCIHJhdyBnYWRnZXQpLCB0aGUgcHJvYmUgcGF0aHMsIHN0YXJ0aW5nIHdpdGggYGNhcmw5MTcwX3JlZ2lzdGVyYCAtJmd0OyBgYXRoX3JlZ2RfaW5pdGAgb3IgYGF0aDlrX2h0Y19wcm9iZV9kZXZpY2VgIC0mZ3Q7IGBhdGg5a19pbml0X2RldmljZWAgLSZndDsgYGF0aF9yZWdkX2luaXRgLCBhcmUgcmVsZXZhbnQuIEltcG9ydGFudGx5LCBgYXRoX3JlZ2RfaW5pdGAgbGVhZHMgdG8gYGF0aF9yZWdkX2luaXRfd2lwaHlgLCB3aGljaCBhY2Nlc3NlcyB0aGUgbW9kaWZpZWQgcmVndWxhdG9yeSBkb21haW4gZGF0YSBzdHJ1Y3R1cmVzLiBUaGUgY2hhbmdlcyBtb2RpZnkgYEFUSF81R0haXzUxNTBfNTM1MGAgYW5kIHRoZSBhc3NvY2lhdGVkIGBuX3JlZ19ydWxlc2AuIEFsc28sIHRoZXJlIGFyZSBgcmVnX2NvcHlfcmVnZGAgYW5kIGB3aXBoeV9hcHBseV9jdXN0b21fcmVndWxhdG9yeWAgaW4gbWFjODAyMTEvY2ZnODAyMTEsIHRoYXQgcHJvY2VzcyB0aGVzZSBkYXRhIHN0cnVjdHVyZXMgYW5kIGZyZXF1ZW5jeSBydWxlcy4gU28sIHllYWgsIHRoaXMgaXMgZGVmaW5pdGVseSByZWFjaGFibGUuCgpMZXQmIzM5O3MgcXVpY2tseSBjaGVjayB3aGljaCBmdW5jdGlvbnMgYXJlIHRoZSBlbnRyeXBvaW50cyBvciBjb250YWluIHRoZSBsb2dpYyB3aXRoaW4gYHJlZ2QuY2A6IGBhdGhfcmVnZF9pbml0YCwgYGF0aF9yZWdkX2luaXRfd2lwaHlgLCBgYXRoX3dvcmxkX3JlZ2RvbWFpbmAsIGBhdGhfZGVmYXVsdF93b3JsZF9yZWdkb21haW5gLCBhbmQgYGF0aF9yZWdfbm90aWZpZXJfYXBwbHlgLiBUaGVuLCBJJiMzOTtsbCByZXZpZXcgYW55IG90aGVyIGZ1bmN0aW9ucyB0aGF0IG1heSBiZSByZWxldmFudCB0byB0aGUgY2hhbmdlZCBjb2RlLgoKQ29uY2x1c2lvbjogIFRoaXMgaXMgYWJzb2x1dGVseSB3b3J0aCBmdXp6aW5nLiBJdCB0b3VjaGVzIHJlYWNoYWJsZSwgZXhlY3V0YWJsZSBjb2RlLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSByZWd1bGF0b3J5IGRvbWFpbiBkYXRhIHN0cnVjdHVyZXMgYW5kIGFzc29jaWF0ZWQgZnVuY3Rpb25zIGFjY2Vzc2VkIHRocm91Z2ggVVNCIHdpcmVsZXNzIGRyaXZlciBwcm9iZSBwYXRocy4gVGhlIGNoYW5nZXMgbW9kaWZ5IGNyaXRpY2FsIHJlZ3VsYXRvcnkgaW5mb3JtYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDExOjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15bYS16QS1aX10uKlxcKCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0yNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6MjY6c3RhdGljIGludCBfX2F0aF9yZWdkX2luaXQoc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0yNy1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jPTEwOD1zdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW4gYXRoX3dvcmxkX3JlZ2RvbV82N182OF82QV82QyA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTExNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6MTE4OnN0YXRpYyBib29sIGR5bmFtaWNfY291bnRyeV91c2VyX3Bvc3NpYmxlKHN0cnVjdCBhdGhfcmVndWxhdG9yeSAqcmVnKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0xMTkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMTg5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzoxOTA6c3RhdGljIGJvb2wgYXRoX3JlZ19keW5fY291bnRyeV91c2VyX2FsbG93KHN0cnVjdCBhdGhfcmVndWxhdG9yeSAqcmVnKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0xOTEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMTk4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzoxOTk6c3RhdGljIGlubGluZSBib29sIGlzX3d3cl9za3UodTE2IHJlZ2QpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTIwMC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0yMDUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjIwNjpzdGF0aWMgdTE2IGF0aF9yZWdkX2dldF9lZXByb21SRChzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjA3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTIxMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6MjExOmJvb2wgYXRoX2lzX3dvcmxkX3JlZ2Qoc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTIxMi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0yMTQtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzoyMTU6RVhQT1JUX1NZTUJPTChhdGhfaXNfd29ybGRfcmVnZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTIxNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6MjE3OnN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiAqYXRoX2RlZmF1bHRfd29ybGRfcmVnZG9tYWluKHZvaWQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTIxOC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYz0yMjM9c3RhdGljIGNvbnN0IHN0cnVjdFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzoyMjQ6aWVlZTgwMjExX3JlZ2RvbWFpbiAqYXRoX3dvcmxkX3JlZ2RvbWFpbihzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjI1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTI0OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6MjUwOmJvb2wgYXRoX2lzXzQ5Z2h6X2FsbG93ZWQodTE2IHJlZ2RvbWFpbilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjUxLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTI1NC19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjI1NTpFWFBPUlRfU1lNQk9MKGF0aF9pc180OWdoel9hbGxvd2VkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjU2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0yNTctLyogRnJlcXVlbmN5IGlzIG9uZSB3aGVyZSByYWRhciBkZXRlY3Rpb24gaXMgcmVxdWlyZWQgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6MjU4OnN0YXRpYyBib29sIGF0aF9pc19yYWRhcl9mcmVxKHUxNiBjZW50ZXJfZnJlcSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjU5LVx0XHRcdCAgICAgIHN0cnVjdCBhdGhfcmVndWxhdG9yeSAqcmVnKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjY2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzoyNjc6c3RhdGljIHZvaWQgYXRoX2ZvcmNlX2NsZWFyX25vX2lyX2NoYW4oc3RydWN0IHdpcGh5ICp3aXBoeSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjY4LVx0XHRcdFx0ICAgICAgIHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2gpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0yODAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjI4MTpzdGF0aWMgdm9pZCBhdGhfZm9yY2VfY2xlYXJfbm9faXJfZnJlcShzdHJ1Y3Qgd2lwaHkgKndpcGh5LCB1MTYgY2VudGVyX2ZyZXEpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTI4Mi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0yOTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjI5MjpzdGF0aWMgdm9pZCBhdGhfZm9yY2Vfbm9faXJfY2hhbihzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0yOTMte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjk2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzoyOTc6c3RhdGljIHZvaWQgYXRoX2ZvcmNlX25vX2lyX2ZyZXEoc3RydWN0IHdpcGh5ICp3aXBoeSwgdTE2IGNlbnRlcl9mcmVxKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0yOTgte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM9MzA4PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjMwOTpfX2F0aF9yZWdfYXBwbHlfYmVhY29uaW5nX2ZsYWdzKHN0cnVjdCB3aXBoeSAqd2lwaHksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTMxMC1cdFx0XHRcdHN0cnVjdCBhdGhfcmVndWxhdG9yeSAqcmVnLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM9MzM5PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjM0MDphdGhfcmVnX2FwcGx5X2JlYWNvbmluZ19mbGFncyhzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0zNDEtXHRcdFx0ICAgICAgc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYz0zNzY9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6Mzc3OmF0aF9yZWdfYXBwbHlfaXJfZmxhZ3Moc3RydWN0IHdpcGh5ICp3aXBoeSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMzc4LVx0XHQgICAgICAgc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy00MDQtLyogQWx3YXlzIGFwcGx5IFJhZGFyL0RGUyBydWxlcyBvbiBmcmVxIHJhbmdlIDU1MDAgTUh6IC0gNTcwMCBNSHogKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NDA1OnN0YXRpYyB2b2lkIGF0aF9yZWdfYXBwbHlfcmFkYXJfZmxhZ3Moc3RydWN0IHdpcGh5ICp3aXBoeSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNDA2LVx0XHRcdFx0ICAgICAgc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy00MzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjQzNzpzdGF0aWMgdm9pZCBhdGhfcmVnX2FwcGx5X3dvcmxkX2ZsYWdzKHN0cnVjdCB3aXBoeSAqd2lwaHksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTQzOC1cdFx0XHRcdCAgICAgIGVudW0gbmw4MDIxMV9yZWdfaW5pdGlhdG9yIGluaXRpYXRvcixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTQ1OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NDU5OnUxNiBhdGhfcmVnZF9maW5kX2NvdW50cnlfYnlfbmFtZShjaGFyICphbHBoYTIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTQ2MC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy00NjktfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo0NzA6RVhQT1JUX1NZTUJPTChhdGhfcmVnZF9maW5kX2NvdW50cnlfYnlfbmFtZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTQ3MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NDcyOnN0YXRpYyBpbnQgX19hdGhfcmVnX2R5bl9jb3VudHJ5KHN0cnVjdCB3aXBoeSAqd2lwaHksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTQ3My1cdFx0XHRcdCBzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTQ5NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NDk2OnN0YXRpYyB2b2lkIGF0aF9yZWdfZHluX2NvdW50cnkoc3RydWN0IHdpcGh5ICp3aXBoeSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNDk3LVx0XHRcdFx0c3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy01MDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjUwOTp2b2lkIGF0aF9yZWdfbm90aWZpZXJfYXBwbHkoc3RydWN0IHdpcGh5ICp3aXBoeSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNTEwLVx0XHRcdCAgICBzdHJ1Y3QgcmVndWxhdG9yeV9yZXF1ZXN0ICpyZXF1ZXN0LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNTQ5LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NTUwOkVYUE9SVF9TWU1CT0woYXRoX3JlZ19ub3RpZmllcl9hcHBseSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTU1MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NTUyOnN0YXRpYyBib29sIGF0aF9yZWdkX2lzX2VlcHJvbV92YWxpZChzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNTUzLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jPTU4MT1zdGF0aWMgc3RydWN0IGNvdW50cnlfY29kZV90b19lbnVtX3JkKlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo1ODI6YXRoX3JlZ2RfZmluZF9jb3VudHJ5KHUxNiBjb3VudHJ5Q29kZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNTgzLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jPTU5ND1zdGF0aWMgc3RydWN0IGNvdW50cnlfY29kZV90b19lbnVtX3JkKlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo1OTU6YXRoX3JlZ2RfZmluZF9jb3VudHJ5X2J5X3JkKGludCByZWdkbW4pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTU5Ni17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy02MDYtLyogUmV0dXJucyB0aGUgbWFwIG9mIHRoZSBFRVBST00gc2V0IFJEIHRvIGEgY291bnRyeSBjb2RlICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjYwNzpzdGF0aWMgdTE2IGF0aF9yZWdkX2dldF9kZWZhdWx0X2NvdW50cnkodTE2IHJkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy02MDgte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM9NjIxPXN0YXRpYyBzdHJ1Y3QgcmVnX2Rtbl9wYWlyX21hcHBpbmcqXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjYyMjphdGhfZ2V0X3JlZ3BhaXIoaW50IHJlZ2RtbilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNjIzLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jPTYzNT1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjYzNjphdGhfcmVnZF9pbml0X3dpcGh5KHN0cnVjdCBhdGhfcmVndWxhdG9yeSAqcmVnLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy02MzctXHRcdCAgICBzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNjc1LSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo2NzY6c3RhdGljIHZvaWQgYXRoX3JlZ2Rfc2FuaXRpemUoc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTY3Ny17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy02ODMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjY4NDpzdGF0aWMgaW50IF9fYXRoX3JlZ2RfaW5pdChzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNjg1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jPTc1OD1pbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NzU5OmF0aF9yZWdkX2luaXQoc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTc2MC1cdCAgICAgIHN0cnVjdCB3aXBoeSAqd2lwaHksXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy03NzktfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo3ODA6RVhQT1JUX1NZTUJPTChhdGhfcmVnZF9pbml0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNzgxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo3ODI6dTMyIGF0aF9yZWdkX2dldF9iYW5kX2N0bChzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNzgzLVx0XHRcdCAgZW51bSBubDgwMjExX2JhbmQgYmFuZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTgxMi19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjgxMzpFWFBPUlRfU1lNQk9MKGF0aF9yZWdkX2dldF9iYW5kX2N0bCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDExOjQ0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ3Nzc5CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMjE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkNvbmZpZ3VyaW5nIHRoZSBXaXJlbGVzcyBEcml2ZXIqKgoKT2theSwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O3ZlIGdvdCB0aGUgY29ycmVjdCBjb25maWd1cmF0aW9ucyBpbiBwbGFjZSBmb3IgdGhpcyB3aXJlbGVzcyBkcml2ZXIuIEZpcnN0LCBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgSSYjMzk7dmUgZW5hYmxlZCB0aGUgY29yZSBjb21wb25lbnRzOiBgQVRIX0NPTU1PTmAsIGBBVEg5S19IVENgIChvciBwb3RlbnRpYWxseSBvbmUgb2YgdGhlIGFsdGVybmF0aXZlcyBsaWtlIGBDQVJMOTE3MGAsIGBBVEg5S2AsIG9yIGBBVEgxMEtgIGRlcGVuZGluZyBvbiB0aGUgZXhhY3QgaGFyZHdhcmUpLCBgTUFDODAyMTFgLCBgQ0ZHODAyMTFgLCBhbmQgYFVTQmAuIEl0JiMzOTtzIGEgc3RhbmRhcmQgc2V0IGZvciBhIHJlYXNvbiwgYnV0IGl0JiMzOTtzIGFsd2F5cyBnb29kIHRvIGRvdWJsZS1jaGVjay4KCk5vdywgbGV0JiMzOTtzIGRpZyBpbnRvIHRoZSBkZXBlbmRlbmNpZXMuIFNwZWNpZmljYWxseSwgSSYjMzk7bGwgc3RhcnQgd2l0aCBgQVRIX0NPTU1PTmAuIEkga25vdyB0aGF0IGBBVEhfQ09NTU9OYCBpcyBzZWxlY3RlZCBieSBzZXZlcmFsIG90aGVyIGNvbmZpZ3VyYXRpb25zIGxpa2UgYEFUSDlLX0NPTU1PTmAsIGBDQVJMOTE3MGAsIGFuZCBgQVRIMTBLYCwgd2hpY2ggbWFrZXMgc2Vuc2UuIEp1c3QgZ2xhbmNpbmcgYXQgdGhlIG9wdGlvbnMsIGBDQVJMOTE3MGAgZGVwZW5kcyBvbiBgVVNCYCBhbmQgYE1BQzgwMjExYCwgYW5kIGl0IHNlbGVjdHMgYm90aCBgQVRIX0NPTU1PTmAgYW5kIGBGV19MT0FERVJgLiBUaGF0JiMzOTtzIGltcG9ydGFudCB0byByZW1lbWJlci4gT24gdGhlIG90aGVyIGhhbmQsIGBBVEg5S19IVENgIGFsc28gcmVsaWVzIG9uIGBVU0JgIGFuZCBgTUFDODAyMTFgLCBhbmQgdGhlbiBpdCBzZWxlY3RzIGBBVEg5S19DT01NT05gLCB3aGljaCBpbiB0dXJuLCBzZWxlY3RzIGBBVEhfQ09NTU9OYC4gT2theSwgdGhhdCBtYWtlcyBpdCBjbGVhcmVyLiBJJiMzOTtsbCBtYWtlIHN1cmUgdG8gdmVyaWZ5IHdoYXQgZXhhY3RseSBgQVRIOUtfSFRDYCBkZXBlbmRzIG9uIGFuZCBzZWxlY3RzLiBBbHdheXMgZ29vZCB0byBoYXZlIGEgc29saWQgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhlc2UgZGVwZW5kZW5jaWVzIGNoYWluIHRvZ2V0aGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxMTo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTcwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDI1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxNzA6XHRcdCAgSWYgdW5zdXJlIHNheSBOLlxuIDE3MTpcdFxuIDE3MjpcdGNvbmZpZyBBVEg5S19IVENcbiAxNzM6XHRcdHRyaXN0YXRlIFwmIzM0O0F0aGVyb3MgSFRDIGJhc2VkIHdpcmVsZXNzIGNhcmRzIHN1cHBvcnRcJiMzNDtcbiAxNzQ6XHRcdGRlcGVuZHMgb24gVVNCIFx1MDAyNlx1MDAyNiBNQUM4MDIxMVxuIDE3NTpcdFx0c2VsZWN0IE1BQzgwMjExX0xFRFMgaWYgTEVEU19DTEFTUz15IHx8IExFRFNfQ0xBU1M9TUFDODAyMTFcbiAxNzY6XHRcdHNlbGVjdCBBVEg5S19IV1xuIDE3NzpcdFx0c2VsZWN0IEFUSDlLX0NPTU1PTlxuIDE3ODpcdFx0aGVscFxuIDE3OTpcdFx0ICBTdXBwb3J0IGZvciBBdGhlcm9zIEhUQyBiYXNlZCBjYXJkcy5cbiAxODA6XHRcdCAgQ2hpcHNldHMgc3VwcG9ydGVkOiBBUjkyNzFcbiAxODE6XHRcbiAxODI6XHRcdCAgRm9yIG1vcmUgaW5mb3JtYXRpb246XG4gMTgzOlx0XHQgIGh0dHBzOi8vd2lyZWxlc3Mud2lraS5rZXJuZWwub3JnL2VuL3VzZXJzL0RyaXZlcnMvYXRoOWtfaHRjXG4gMTg0Olx0XG4gMTg1Olx0XHQgIFRoZSBidWlsdCBtb2R1bGUgd2lsbCBiZSBhdGg5a19odGMuXG4gMTg2Olx0XG4gMTg3Olx0Y29uZmlnIEFUSDlLX0hUQ19ERUJVR0ZTXG4gMTg4Olx0XHRib29sIFwmIzM0O0F0aGVyb3MgYXRoOWtfaHRjIGRlYnVnZ2luZ1wmIzM0O1xuIDE4OTpcdFx0ZGVwZW5kcyBvbiBBVEg5S19IVEMgXHUwMDI2XHUwMDI2IERFQlVHX0ZTXG4gMTkwOlx0XHRzZWxlY3QgQVRIOUtfQ09NTU9OX0RFQlVHXG4gMTkxOlx0XHRoZWxwXG4gMTkyOlx0XHQgIFNheSBZLCBpZiB5b3UgbmVlZCBhY2Nlc3MgdG8gYXRoOWtfaHRjJiMzOTtzIHN0YXRpc3RpY3MuXG4gMTkzOlx0XHQgIEFzIHdlbGwgYXMgYWNjZXNzIHRvIHRoZSBGRlQvc3BlY3RyYWwgZGF0YS5cbiAxOTQ6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTE6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDg3ODAKCQkJCQkJCW91dHB1dDogMjQ1CgkJCQkJCQl0aG91Z2h0czogMzE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoRnV6emluZyBDb25maXJtYXRpb24qKgoKT2theSwgc28gdGhpcyBXb3J0aEZ1enppbmcgZmluZGluZyBjaGVja3Mgb3V0LiBUaGUgcGF0Y2ggaXMgZGVmaW5pdGVseSB0b3VjaGluZyByZWd1bGF0b3J5IGRlZmluaXRpb25zIHdpdGhpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuY2AuIFRoaXMgaXMgc2lnbmlmaWNhbnQgYmVjYXVzZSB0aG9zZSBkZWZpbml0aW9ucyBhcmUgY3JpdGljYWwgZm9yIEF0aGVyb3Mgd2lyZWxlc3MgZHJpdmVycywgYW5kIGNydWNpYWxseSwgdGhleSBpbmNsdWRlIFVTQi1hY2Nlc3NpYmxlIGRyaXZlcnMgbGlrZSBgYXRoOWtfaHRjYCBhbmQgYGNhcmw5MTcwYC4gV2UmIzM5O3JlIHVzaW5nIFVTQiBSYXcgR2FkZ2V0IGZvciBlbXVsYXRpb24gYW5kIGZ1enppbmcgd2l0aGluIGEgc3RhbmRhcmQgUUVNVSBzZXR1cCwgc28gdGhhdCYjMzk7cyBhIGtleSBwaWVjZSBvZiB0aGUgcHV6emxlLgoKVGhlIHJlYWwgY29ubmVjdGlvbiBoZXJlIGlzIGhvdyBgYXRoX3JlZ2RfaW5pdGAsIGBhdGhfcmVnZF9pbml0X3dpcGh5YCwgYGF0aF93b3JsZF9yZWdkb21haW5gLCBhbmQgYHdpcGh5X2FwcGx5X2N1c3RvbV9yZWd1bGF0b3J5YCBoYW5kbGUgdGhlIHBhcnNpbmcgYW5kIGFwcGxpY2F0aW9uIG9mIHRoZXNlIHJlZ3VsYXRvcnkgcnVsZXMuIFRoZXkmIzM5O3JlIGFsbCBpbnZvbHZlZCB3aGVuIGFuIEF0aGVyb3MgaW50ZXJmYWNlIGlzIGluaXRpYWxpemVkLCByZWdpc3RlcmVkLCBvciB3aGVuIGl0cyByZWd1bGF0b3J5IGRvbWFpbiBpcyBxdWVyaWVkIG9yIHVwZGF0ZWQuIFRob3NlIGZ1bmN0aW9ucyBhcmUgdGhlIGJyaWRnZSBpbnRvIHRoZSBrZXJuZWwmIzM5O3MgY2ZnODAyMTEvbWFjODAyMTEgc3RhdGUsIHdoaWNoIGlzIGV4YWN0bHkgd2hlcmUgd2UmIzM5O3JlIGxvb2tpbmcgdG8gZmluZCBidWdzLgoKTGV0JiMzOTtzIHF1aWNrbHkgY29uZmlybSB0aG9zZSBGb2N1c1N5bWJvbHMgYXJlIGNvcnJlY3QuIEkmIzM5O2xsIG1lbnRhbGx5IHJ1biB0aHJvdWdoOiBgYXRoX3JlZ2RfaW5pdGAsIGBhdGhfcmVnZF9pbml0X3dpcGh5YCwgYGF0aF93b3JsZF9yZWdkb21haW5gLCBgYXRoX2RlZmF1bHRfd29ybGRfcmVnZG9tYWluYCwgYW5kIGBhdGhfcmVnX25vdGlmaWVyX2FwcGx5YC4gWXVwLCB0aG9zZSBhcmUgYWxsIHJpZ2h0IG9uIHBvaW50LgoKRG91YmxlLWNoZWNraW5nIHRoZSBFbmFibGVDb25maWdzLCBqdXN0IHRvIGJlIHN1cmU6IGBBVEhfQ09NTU9OYCwgYEFUSDlLX0hUQ2AsIGBDQVJMOTE3MGAsIGBDRkc4MDIxMWAsIGBNQUM4MDIxMWAsIGFuZCBgVVNCYCDigJMgYWxsIG9mIHRob3NlIG1ha2UgcGVyZmVjdCBzZW5zZSBpbiB0aGlzIGNvbnRleHQuCgpBbHJpZ2h0LCBJJiMzOTttIGNvbmZpZGVudCBpbiB0aGUgYW5hbHlzaXMuIFRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLiBUaGlzIGlzIGEgc29saWQgZmluZGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTE6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FUSF9DT01NT04mIzM0OywKICAgICYjMzQ7QVRIOUtfSFRDJiMzNDssCiAgICAmIzM0O0NBUkw5MTcwJiMzNDssCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2F0aF9yZWdkX2luaXQmIzM0OywKICAgICYjMzQ7YXRoX3JlZ2RfaW5pdF93aXBoeSYjMzQ7LAogICAgJiMzNDthdGhfd29ybGRfcmVnZG9tYWluJiMzNDssCiAgICAmIzM0O2F0aF9kZWZhdWx0X3dvcmxkX3JlZ2RvbWFpbiYjMzQ7LAogICAgJiMzNDthdGhfcmVnX25vdGlmaWVyX2FwcGx5JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHNwbGl0cyB0aGUgNUdIeiA1MTUwLTUzNTAgTUh6IHJlZ3VsYXRvcnkgcnVsZSBpbnRvIHNlcGFyYXRlIDUxNTAtNTI0MCBNSHogYW5kIDUyNjAtNTM1MCBNSHogcnVsZXMgYW5kIHVwZGF0ZXMgcnVsZSBjb3VudHMgYWNyb3NzIEF0aGVyb3Mgd29ybGQgcmVndWxhdG9yeSBkb21haW4gZGVmaW5pdGlvbnMgaW4gZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy4gVGhpcyBjb2RlIGlzIGV4ZWN1dGVkIGR1cmluZyBpbml0aWFsaXphdGlvbiBhbmQgcmVndWxhdG9yeSB1cGRhdGVzIG9mIEF0aGVyb3Mgd2lyZWxlc3MgZHJpdmVycywgaW5jbHVkaW5nIFVTQi1kcml2ZW4gZGV2aWNlcyAoc3VjaCBhcyBhdGg5a19odGMgYW5kIGNhcmw5MTcwKSB3aGljaCBhcmUgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgVVNCIGVtdWxhdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QVRIX0NPTU1PTiYjMzQ7LAogICAgJiMzNDtBVEg5S19IVEMmIzM0OywKICAgICYjMzQ7Q0FSTDkxNzAmIzM0OywKICAgICYjMzQ7Q0ZHODAyMTEmIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7VVNCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YXRoX3JlZ2RfaW5pdCYjMzQ7LAogICAgJiMzNDthdGhfcmVnZF9pbml0X3dpcGh5JiMzNDssCiAgICAmIzM0O2F0aF93b3JsZF9yZWdkb21haW4mIzM0OywKICAgICYjMzQ7YXRoX2RlZmF1bHRfd29ybGRfcmVnZG9tYWluJiMzNDssCiAgICAmIzM0O2F0aF9yZWdfbm90aWZpZXJfYXBwbHkmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggc3BsaXRzIHRoZSA1R0h6IDUxNTAtNTM1MCBNSHogcmVndWxhdG9yeSBydWxlIGludG8gc2VwYXJhdGUgNTE1MC01MjQwIE1IeiBhbmQgNTI2MC01MzUwIE1IeiBydWxlcyBhbmQgdXBkYXRlcyBydWxlIGNvdW50cyBhY3Jvc3MgQXRoZXJvcyB3b3JsZCByZWd1bGF0b3J5IGRvbWFpbiBkZWZpbml0aW9ucyBpbiBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLiBUaGlzIGNvZGUgaXMgZXhlY3V0ZWQgZHVyaW5nIGluaXRpYWxpemF0aW9uIGFuZCByZWd1bGF0b3J5IHVwZGF0ZXMgb2YgQXRoZXJvcyB3aXJlbGVzcyBkcml2ZXJzLCBpbmNsdWRpbmcgVVNCLWRyaXZlbiBkZXZpY2VzIChzdWNoIGFzIGF0aDlrX2h0YyBhbmQgY2FybDkxNzApIHdoaWNoIGFyZSByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBVU0IgZW11bGF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQxLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxMTo0NDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDExOjQ0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgc3RhdGljIGNvbnN0YW50IHJlZ3VsYXRvcnkgZG9tYWluIGRlZmluaXRpb25zIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jYC4gU3BlY2lmaWNhbGx5LCBpdCBzcGxpdHMgdGhlIGBBVEhfNUdIWl81MTUwXzUzNTBgIG1hY3JvIGludG8gdHdvIHNlcGFyYXRlIHJlZ3VsYXRvcnkgcnVsZXMgKDUxNTAtNTI0MCBNSHogYW5kIDUyNjAtNTM1MCBNSHopIGFuZCBhZGp1c3RzIHRoZSBgbl9yZWdfcnVsZXNgIGZpZWxkIGluIHNldmVyYWwgc3RhdGljIGNvbnN0IGBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbmAgaW5zdGFuY2VzIGFjY29yZGluZ2x5LlxuXG5BbGwgYWZmZWN0ZWQgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBjb21waWxlLXRpbWUgY29uc3RhbnQgdGFibGVzIHdpdGggZnVsbHkgaW5pdGlhbGl6ZWQgZmllbGRzLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSBkeW5hbWljIG9yIHN0YWNrIGFsbG9jYXRpb25zLCBkb2VzIG5vdCBtb2RpZnkgYW55IGJ1ZmZlcnMgb3IgcGFkZGluZyBjb3BpZWQgdG8gdXNlcnNwYWNlLCBhbmQgaW50cm9kdWNlcyBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcy4gSWYgYW55IGFycmF5IGluZGV4aW5nIG9yIHJ1bGUgY291bnQgbWlzbWF0Y2hlcyB3ZXJlIHRvIG9jY3VyLCB0aGV5IHdvdWxkIGJlIGJvdW5kcyB2aW9sYXRpb25zIGRldGVjdGFibGUgYnkgc3RhbmRhcmQgS0FTQU4uIFRoZXJlZm9yZSwgdGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIHRoYXQgd2FycmFudCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24uJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAxMjljYjE1OWZiOWM1Y2Q0OGVhZDQ3Y2M3MDRmNzk4NmVkY2E0MDkyCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBTZXAgNSAxMTo0Mjo0NSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jCmluZGV4IGYxNWU3YmQ2OTBiNWIuLmIxMjlhZjBlZWQ4ODUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYwpAQCAtNDMsNyAmIzQzOzQzLDggQEAgc3RhdGljIGludCBfX2F0aF9yZWdkX2luaXQoc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcpOwogCQkJCQkgTkw4MDIxMV9SUkZfTk9fT0ZETSkKIAogLyogV2UgYWxsb3cgSUJTUyBvbiB0aGVzZSBvbiBhIGNhc2UgYnkgY2FzZSBiYXNpcyBieSByZWd1bGF0b3J5IGRvbWFpbiAqLwotI2RlZmluZSBBVEhfNUdIWl81MTUwXzUzNTAJUkVHX1JVTEUoNTE1MC0xMCwgNTM1MCYjNDM7MTAsIDgwLCAwLCAzMCxcCiYjNDM7I2RlZmluZSBBVEhfNUdIWl81MTUwXzUzNTAJUkVHX1JVTEUoNTE1MC0xMCwgNTI0MCYjNDM7MTAsIDgwLCAwLCAzMCwgMCksXAomIzQzOwkJCQlSRUdfUlVMRSg1MjYwLTEwLCA1MzUwJiM0MzsxMCwgODAsIDAsIDMwLFwKIAkJCQkJIE5MODAyMTFfUlJGX05PX0lSKQogI2RlZmluZSBBVEhfNUdIWl81NDcwXzU4NTAJUkVHX1JVTEUoNTQ3MC0xMCwgNTg1MCYjNDM7MTAsIDgwLCAwLCAzMCxcCiAJCQkJCSBOTDgwMjExX1JSRl9OT19JUikKQEAgLTY0LDcgJiM0Mzs2NSw3IEBAIHN0YXRpYyBpbnQgX19hdGhfcmVnZF9pbml0KHN0cnVjdCBhdGhfcmVndWxhdG9yeSAqcmVnKTsKIC8qIENhbiBiZSB1c2VkIGZvcjoKICAqIDB4NjAsIDB4NjEsIDB4NjIgKi8KIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiBhdGhfd29ybGRfcmVnZG9tXzYwXzYxXzYyID0gewotCS5uX3JlZ19ydWxlcyA9IDUsCiYjNDM7CS5uX3JlZ19ydWxlcyA9IDYsCiAJLmFscGhhMiA9ICAmIzM0Ozk5JiMzNDssCiAJLnJlZ19ydWxlcyA9IHsKIAkJQVRIXzJHSFpfQUxMLApAQCAtNzQsNyAmIzQzOzc1LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluIGF0aF93b3JsZF9yZWdkb21fNjBfNjFfNjIgPSB7CiAKIC8qIENhbiBiZSB1c2VkIGJ5IDB4NjMgYW5kIDB4NjUgKi8KIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiBhdGhfd29ybGRfcmVnZG9tXzYzXzY1ID0gewotCS5uX3JlZ19ydWxlcyA9IDQsCiYjNDM7CS5uX3JlZ19ydWxlcyA9IDUsCiAJLmFscGhhMiA9ICAmIzM0Ozk5JiMzNDssCiAJLnJlZ19ydWxlcyA9IHsKIAkJQVRIXzJHSFpfQ0gwMV8xMSwKQEAgLTg1LDcgJiM0Mzs4Niw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiBhdGhfd29ybGRfcmVnZG9tXzYzXzY1ID0gewogCiAvKiBDYW4gYmUgdXNlZCBieSAweDY0IG9ubHkgKi8KIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiBhdGhfd29ybGRfcmVnZG9tXzY0ID0gewotCS5uX3JlZ19ydWxlcyA9IDMsCiYjNDM7CS5uX3JlZ19ydWxlcyA9IDQsCiAJLmFscGhhMiA9ICAmIzM0Ozk5JiMzNDssCiAJLnJlZ19ydWxlcyA9IHsKIAkJQVRIXzJHSFpfQ0gwMV8xMSwKQEAgLTk1LDcgJiM0Mzs5Niw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiBhdGhfd29ybGRfcmVnZG9tXzY0ID0gewogCiAvKiBDYW4gYmUgdXNlZCBieSAweDY2IGFuZCAweDY5ICovCiBzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW4gYXRoX3dvcmxkX3JlZ2RvbV82Nl82OSA9IHsKLQkubl9yZWdfcnVsZXMgPSAzLAomIzQzOwkubl9yZWdfcnVsZXMgPSA0LAogCS5hbHBoYTIgPSAgJiMzNDs5OSYjMzQ7LAogCS5yZWdfcnVsZXMgPSB7CiAJCUFUSF8yR0haX0NIMDFfMTEsCkBAIC0xMDUsNyAmIzQzOzEwNiw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiBhdGhfd29ybGRfcmVnZG9tXzY2XzY5ID0gewogCiAvKiBDYW4gYmUgdXNlZCBieSAweDY3LCAweDY4LCAweDZBIGFuZCAweDZDICovCiBzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW4gYXRoX3dvcmxkX3JlZ2RvbV82N182OF82QV82QyA9IHsKLQkubl9yZWdfcnVsZXMgPSA0LAomIzQzOwkubl9yZWdfcnVsZXMgPSA1LAogCS5hbHBoYTIgPSAgJiMzNDs5OSYjMzQ7LAogCS5yZWdfcnVsZXMgPSB7CiAJCUFUSF8yR0haX0NIMDFfMTEsCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxMTo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDIxCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNDcwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKktNU0FOIEZ1enppbmcgRXZhbHVhdGlvbioqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYXNzZXNzIHRoaXMgcGF0Y2ggYW5kIGZpZ3VyZSBvdXQgdGhlIGZ1enppbmcgc3RyYXRlZ3kuIFRoZSBjb3JlIHF1ZXN0aW9uIGlzOiBkb2VzIHRoaXMgY2hhbmdlIHdhcnJhbnQgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uLCBvciBjYW4gd2Ugc3RpY2sgd2l0aCBzdGFuZGFyZCBLQVNBTj8KCkZpcnN0LCBJIG5lZWQgdG8gaW5zcGVjdCB0aGUgZGlmZi4gSXQgbG9va3MgbGlrZSB3ZSYjMzk7cmUgdG91Y2hpbmcgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmNgLiBSaWdodCwgc28gdGhpcyBpcyBhYm91dCByZWd1bGF0b3J5IGRvbWFpbiBkZWZpbml0aW9ucyBpbiB0aGUgYXRoIHdpcmVsZXNzIGRyaXZlci4gT2theSwgdGhlIGNvZGUgc25pcHBldCBzaG93cyB0aGF0IGBBVEhfNUdIWl81MTUwXzUzNTBgIGhhcyBiZWVuIGNoYW5nZWQuIEl0IHVzZWQgdG8gYmUgYSBzaW5nbGUgYFJFR19SVUxFYCBtYWNybyBkZWZpbml0aW9uLCBidXQgbm93IGl0JiMzOTtzIHR3byBzZXBhcmF0ZSBvbmVzLiBBbmQsIGl0IGFwcGVhcnMgdGhlIGAubl9yZWdfcnVsZXNgIGZpZWxkcyBoYXZlIGJlZW4gdXBkYXRlZCBpbiBzZXZlcmFsIGBzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW5gIGRlZmluaXRpb25zLiBTcGVjaWZpY2FsbHkgdGhlIGNvdW50cyBvZiB0aGUgcmVndWxhdG9yeSBydWxlcyB3ZXJlIGluY3JlYXNlZC4KClRoaXMgc3Ryb25nbHkgc3VnZ2VzdHMgY2hhbmdlcyB0byBob3cgdGhlc2UgcmVndWxhdG9yeSBydWxlcyBhcmUgZGVmaW5lZCBhbmQgaGFuZGxlZC4gIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgYFJFR19SVUxFYCBleHBhbmRzIHRvLCBhbmQgd2hhdCYjMzk7cyBpbiBgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW5gLiBNb3JlIGNvbnRleHQgaXMgbmVlZGVkIGhlcmUuIEFyZSB0aGVzZSBjYWxjdWxhdGlvbnMgdXNlZCBpbiB0aGUgZHJpdmVyLCBhbmQgYXJlIHRoZXkgZGlyZWN0bHkgZXhwb3NlZCB0byB1c2VybGFuZD8gSWYgc28sIHRoaXMgY291bGQgcG90ZW50aWFsbHkgbGVhZCB0byBtZW1vcnkgY29ycnVwdGlvbi4KClRpbWUgdG8gbG9vayBhdCB0aGUgZGVmaW5pdGlvbnMgb2YgYFJFR19SVUxFYCBhbmQgYHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluYCB3aXRoaW4gdGhhdCBmaWxlLCBhbmQgdGhlbiBob3cgdGhleSYjMzk7cmUgKnVzZWQqLiBJJiMzOTtsbCBuZWVkIHRvIHVzZSBgcmVhZC1maWxlYCBvciBgZ3JlcHBlcmAgdG8gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiB0aGUgaW1wbGljYXRpb25zIGhlcmUuIFRoZW4sIEkgY2FuIG1ha2UgYSBtb3JlIGluZm9ybWVkIGRlY2lzaW9uIGFib3V0IHRoZSBmdXp6aW5nIHJlcXVpcmVtZW50cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTE6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7UkVHX1JVTEUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM9MjY9c3RhdGljIGludCBfX2F0aF9yZWdkX2luaXQoc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMzUtLyogT25seSB0aGVzZSBjaGFubmVscyBhbGwgYWxsb3cgYWN0aXZlIHNjYW4gb24gYWxsIHdvcmxkIHJlZ3VsYXRvcnkgZG9tYWlucyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzozNjojZGVmaW5lIEFUSF8yR0haX0NIMDFfMTFcdFJFR19SVUxFKDI0MTItMTAsIDI0NjImIzQzOzEwLCA0MCwgMCwgMjAsIDApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTM3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0zOC0vKiBXZSBlbmFibGUgYWN0aXZlIHNjYW4gb24gdGhlc2UgYSBjYXNlIGJ5IGNhc2UgYmFzaXMgYnkgcmVndWxhdG9yeSBkb21haW4gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6Mzk6I2RlZmluZSBBVEhfMkdIWl9DSDEyXzEzXHRSRUdfUlVMRSgyNDY3LTEwLCAyNDcyJiM0MzsxMCwgNDAsIDAsIDIwLFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTQwLVx0XHRcdFx0XHQgTkw4MDIxMV9SUkZfTk9fSVIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjQxOiNkZWZpbmUgQVRIXzJHSFpfQ0gxNFx0XHRSRUdfUlVMRSgyNDg0LTEwLCAyNDg0JiM0MzsxMCwgNDAsIDAsIDIwLFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTQyLVx0XHRcdFx0XHQgTkw4MDIxMV9SUkZfTk9fSVIgfCBcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNDUtLyogV2UgYWxsb3cgSUJTUyBvbiB0aGVzZSBvbiBhIGNhc2UgYnkgY2FzZSBiYXNpcyBieSByZWd1bGF0b3J5IGRvbWFpbiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo0NjojZGVmaW5lIEFUSF81R0haXzUxNTBfNTM1MFx0UkVHX1JVTEUoNTE1MC0xMCwgNTI0MCYjNDM7MTAsIDgwLCAwLCAzMCwgMCksXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NDc6XHRcdFx0XHRSRUdfUlVMRSg1MjYwLTEwLCA1MzUwJiM0MzsxMCwgODAsIDAsIDMwLFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTQ4LVx0XHRcdFx0XHQgTkw4MDIxMV9SUkZfTk9fSVIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjQ5OiNkZWZpbmUgQVRIXzVHSFpfNTQ3MF81ODUwXHRSRUdfUlVMRSg1NDcwLTEwLCA1ODUwJiM0MzsxMCwgODAsIDAsIDMwLFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTUwLVx0XHRcdFx0XHQgTkw4MDIxMV9SUkZfTk9fSVIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjUxOiNkZWZpbmUgQVRIXzVHSFpfNTcyNV81ODUwXHRSRUdfUlVMRSg1NzI1LTEwLCA1ODUwJiM0MzsxMCwgODAsIDAsIDMwLFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTUyLVx0XHRcdFx0XHQgTkw4MDIxMV9SUkZfTk9fSVIpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDUvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDExOjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ2NTAKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBSZWd1bGF0b3J5IERldGFpbHMqKgoKQWxyaWdodCwgSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiBob3cgdGhlc2UgcmVndWxhdG9yeSBydWxlcyBhcmUgc3RydWN0dXJlZC4gVGhlIGZpcnN0IHBsYWNlIEkmIzM5O20gZ29pbmcgdG8gbG9vayBpcyBgaW5jbHVkZS9uZXQvcmVndWxhdG9yeS5oYC4gVGhhdCYjMzk7cyB3aGVyZSBJJiMzOTtkIGV4cGVjdCB0byBmaW5kIHRoZSBkZWZpbml0aW9ucyBmb3IgYFJFR19SVUxFYCBhbmQgYHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluYC4gSXQmIzM5O3MgYSBwcmV0dHkgc3RhbmRhcmQgbG9jYXRpb24gZm9yIHRoYXQga2luZCBvZiBjb3JlIHdpcmVsZXNzIHJlZ3VsYXRvcnkgZGF0YS4gSG9wZWZ1bGx5LCBpdCYjMzk7cyBhbGwgY2xlYXJseSBsYWlkIG91dCBpbiB0aGVyZSwgYW5kIEkgY2FuIHF1aWNrbHkgZ2V0IGEgZ29vZCB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzdHJ1Y3R1cmUgYW5kIGhvdyB0aGUgZGlmZmVyZW50IGVsZW1lbnRzIHJlbGF0ZSB0byBlYWNoIG90aGVyLiBJJiMzOTtsbCBwcm9iYWJseSBiZSBjaGVja2luZyB0aGluZ3MgbGlrZSBkYXRhIHR5cGVzLCBhbnkgZW1iZWRkZWQgc3RydWN0dXJlcywgYW5kIGhvdyB0aGUgcnVsZXMgYXJlIGFjdHVhbGx5IHN0b3JlZCBhbmQgYWNjZXNzZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDYvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDExOjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0OyNkZWZpbmUgUkVHX1JVTEUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuaD0yOTAwPXN0cnVjdCByeF9yZW9yZGVyX3F1ZXVlX3JlbW92ZV9wYXJhbXMge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmgtMjkxNi0vKiBGcmVxIHVuaXRzIGluIE1IeiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuaDoyOTE3OiNkZWZpbmUgUkVHX1JVTEVfU1RBUlRfRlJFUVx0XHRcdDB4MDAwMGZmZmZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmg6MjkxODojZGVmaW5lIFJFR19SVUxFX0VORF9GUkVRXHRcdFx0MHhmZmZmMDAwMFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuaDoyOTE5OiNkZWZpbmUgUkVHX1JVTEVfRkxBR1NcdFx0XHRcdDB4MDAwMGZmZmZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmg6MjkyMDojZGVmaW5lIFJFR19SVUxFX01BWF9CV1x0XHRcdFx0MHgwMDAwZmZmZlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuaDoyOTIxOiNkZWZpbmUgUkVHX1JVTEVfUkVHX1BXUlx0XHRcdDB4MDBmZjAwMDBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmg6MjkyMjojZGVmaW5lIFJFR19SVUxFX0FOVF9HQUlOXHRcdFx0MHhmZjAwMDAwMFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuaDoyOTIzOiNkZWZpbmUgUkVHX1JVTEVfUFNEX0lORk9cdFx0XHRCSVQoMClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmg6MjkyNDojZGVmaW5lIFJFR19SVUxFX1BTRF9FSVJQXHRcdFx0MHhmZjAwMDBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmgtMjkyNS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5oPTMyMTI9c3RydWN0IGF0aDEya193bWlfcnhfcmVvcmRlcl9xdWV1ZV9yZW1vdmVfYXJnIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5oLTMyMjgtLyogRnJlcSB1bml0cyBpbiBNSHogKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmg6MzIyOTojZGVmaW5lIFJFR19SVUxFX1NUQVJUX0ZSRVFcdFx0XHQweDAwMDBmZmZmXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5oOjMyMzA6I2RlZmluZSBSRUdfUlVMRV9FTkRfRlJFUVx0XHRcdDB4ZmZmZjAwMDBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmg6MzIzMTojZGVmaW5lIFJFR19SVUxFX0ZMQUdTXHRcdFx0XHQweDAwMDBmZmZmXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5oOjMyMzI6I2RlZmluZSBSRUdfUlVMRV9NQVhfQldcdFx0XHRcdDB4MDAwMGZmZmZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmg6MzIzMzojZGVmaW5lIFJFR19SVUxFX1JFR19QV1JcdFx0XHQweDAwZmYwMDAwXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5oOjMyMzQ6I2RlZmluZSBSRUdfUlVMRV9BTlRfR0FJTlx0XHRcdDB4ZmYwMDAwMDBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmg6MzIzNTojZGVmaW5lIFJFR19SVUxFX1BTRF9JTkZPXHRcdFx0QklUKDIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5oOjMyMzY6I2RlZmluZSBSRUdfUlVMRV9QU0RfRUlSUFx0XHRcdDB4ZmZmZjAwMDBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmgtMzIzNy1cbi0tXG5pbmNsdWRlL25ldC9yZWd1bGF0b3J5Lmg9MjE3PXN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluIHtcbi0tXG5pbmNsdWRlL25ldC9yZWd1bGF0b3J5LmgtMjI0LVxuaW5jbHVkZS9uZXQvcmVndWxhdG9yeS5oOjIyNTojZGVmaW5lIFJFR19SVUxFX0VYVChzdGFydCwgZW5kLCBidywgZ2FpbiwgZWlycCwgZGZzX2NhYywgcmVnX2ZsYWdzKVx0XFxcbmluY2x1ZGUvbmV0L3JlZ3VsYXRvcnkuaC0yMjYte1x0XHRcdFx0XHRcdFx0XHRcdFxcXG4tLVxuaW5jbHVkZS9uZXQvcmVndWxhdG9yeS5oLTIzNS1cbmluY2x1ZGUvbmV0L3JlZ3VsYXRvcnkuaDoyMzY6I2RlZmluZSBSRUdfUlVMRShzdGFydCwgZW5kLCBidywgZ2FpbiwgZWlycCwgcmVnX2ZsYWdzKSBcXFxuaW5jbHVkZS9uZXQvcmVndWxhdG9yeS5oLTIzNy1cdFJFR19SVUxFX0VYVChzdGFydCwgZW5kLCBidywgZ2FpbiwgZWlycCwgMCwgcmVnX2ZsYWdzKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ3LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxMTo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1ODk3CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipSZWd1bGF0b3J5IERvbWFpbiBEZWVwIERpdmUqKgoKT2theSwgc28gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIGhvdyB0aGUgcmVndWxhdG9yeSBkb21haW4gaW5mb3JtYXRpb24gaXMgc3RydWN0dXJlZCwgc3BlY2lmaWNhbGx5IGluIHRoZSBjb250ZXh0IG9mIHRoZSBkcml2ZXIgSSYjMzk7bSBsb29raW5nIGF0LiBSaWdodCwgbGV0JiMzOTtzIGhlYWQgb3ZlciB0byB0aGUgYGluY2x1ZGUvbmV0L3JlZ3VsYXRvcnkuaGAgaGVhZGVyIGZpbGUuIEkmIzM5O20gdGhpbmtpbmcgYXJvdW5kIGxpbmUgMjE3IHNob3VsZCBiZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIEkgcmVjYWxsIHRoYXQmIzM5O3Mgb2Z0ZW4gd2hlcmUgdGhlIGNvcmUgZGF0YSBzdHJ1Y3R1cmVzIG9yIGVudW1zIHJlbGF0ZWQgdG8gcmVndWxhdG9yeSBpbmZvcm1hdGlvbiBkZWZpbml0aW9ucyByZXNpZGUsIG9yIHBlcmhhcHMgd2hlcmUgdGhlIHN0cnVjdHVyZXMgdGhhdCBob2xkIHRoZSBjaGFubmVsIGFuZCBwb3dlciBjb25zdHJhaW50cyBhcmUgZGVjbGFyZWQuIEhvcGVmdWxseSwgSSYjMzk7bGwgZmluZCB0aGUgc3RydWN0dXJlIEkmIzM5O20gbG9va2luZyBmb3IgdGhlcmUgYW5kIGdldCBhIHF1aWNrIHJlZnJlc2hlciBvbiBob3cgdGhlIHJlZ3VsYXRvcnkgaW5mb3JtYXRpb24gaXMgbGFpZCBvdXQgaW4gdGhpcyBzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDgvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDExOjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvcmVndWxhdG9yeS5oJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjEwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAyMTA6XHRcdHN0cnVjdCBpZWVlODAyMTFfd21tX3J1bGUgd21tX3J1bGU7XG4gMjExOlx0XHR1MzIgZmxhZ3M7XG4gMjEyOlx0XHR1MzIgZGZzX2NhY19tcztcbiAyMTM6XHRcdGJvb2wgaGFzX3dtbTtcbiAyMTQ6XHRcdHM4IHBzZDtcbiAyMTU6XHR9O1xuIDIxNjpcdFxuIDIxNzpcdHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluIHtcbiAyMTg6XHRcdHN0cnVjdCByY3VfaGVhZCByY3VfaGVhZDtcbiAyMTk6XHRcdHUzMiBuX3JlZ19ydWxlcztcbiAyMjA6XHRcdGNoYXIgYWxwaGEyWzNdO1xuIDIyMTpcdFx0ZW51bSBubDgwMjExX2Rmc19yZWdpb25zIGRmc19yZWdpb247XG4gMjIyOlx0XHRzdHJ1Y3QgaWVlZTgwMjExX3JlZ19ydWxlIHJlZ19ydWxlc1tdO1xuIDIyMzpcdH07XG4gMjI0Olx0XG4gMjI1Olx0I2RlZmluZSBSRUdfUlVMRV9FWFQoc3RhcnQsIGVuZCwgYncsIGdhaW4sIGVpcnAsIGRmc19jYWMsIHJlZ19mbGFncylcdFxcXG4gMjI2Olx0e1x0XHRcdFx0XHRcdFx0XHRcdFxcXG4gMjI3Olx0XHQuZnJlcV9yYW5nZS5zdGFydF9mcmVxX2toeiA9IE1IWl9UT19LSFooc3RhcnQpLFx0XHRcdFxcXG4gMjI4Olx0XHQuZnJlcV9yYW5nZS5lbmRfZnJlcV9raHogPSBNSFpfVE9fS0haKGVuZCksXHRcdFx0XFxcbiAyMjk6XHRcdC5mcmVxX3JhbmdlLm1heF9iYW5kd2lkdGhfa2h6ID0gTUhaX1RPX0tIWihidyksXHRcdFx0XFxcbiAyMzA6XHRcdC5wb3dlcl9ydWxlLm1heF9hbnRlbm5hX2dhaW4gPSBEQklfVE9fTUJJKGdhaW4pLFx0XHRcXFxuIDIzMTpcdFx0LnBvd2VyX3J1bGUubWF4X2VpcnAgPSBEQk1fVE9fTUJNKGVpcnApLFx0XHRcdFxcXG4gMjMyOlx0XHQuZmxhZ3MgPSByZWdfZmxhZ3MsXHRcdFx0XHRcdFx0XFxcbiAyMzM6XHRcdC5kZnNfY2FjX21zID0gZGZzX2NhYyxcdFx0XHRcdFx0XHRcXFxuIDIzNDpcdH1cbiAyMzU6XHRcbiAyMzY6XHQjZGVmaW5lIFJFR19SVUxFKHN0YXJ0LCBlbmQsIGJ3LCBnYWluLCBlaXJwLCByZWdfZmxhZ3MpIFxcXG4gMjM3Olx0XHRSRUdfUlVMRV9FWFQoc3RhcnQsIGVuZCwgYncsIGdhaW4sIGVpcnAsIDAsIHJlZ19mbGFncylcbiAyMzg6XHRcbiAyMzk6XHQjZW5kaWZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTE6NDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjY3MAoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipOYXZpZ2F0aW5nIHRoZSBBdGhlcm9zIFdpcmVsZXNzIFJlZ3VsYXRvcnkgRG9tYWluIENvZGUqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgaXNzdWUsIGFuZCB0aGUgcHJvYmxlbSBsaWtlbHkgcmVzaWRlcyB3aXRoaW4gdGhlIHJlZ3VsYXRvcnkgZG9tYWluIGhhbmRsaW5nIGZvciBBdGhlcm9zIHdpcmVsZXNzIGRyaXZlcnMuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGRpdmUgZGlyZWN0bHkgaW50byB0aGUgY29kZS4gTGV0JiMzOTtzIHNlZS4uLiBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IGJ5IGNvbmZpcm1pbmcgdGhlIGRlZmluaXRpb25zIG9mIHRoZSBrZXkgc3RydWN0dXJlcyB1c2VkIGZvciByZWd1bGF0b3J5IGRvbWFpbiBjb25maWd1cmF0aW9uLiBUaGF0IG1lYW5zIGRpZ2dpbmcgaW50byBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuY2AuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiBob3cgdGhleSYjMzk7dmUgc3RydWN0dXJlZCB0aGF0LCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlIHJlZ3VsYXRvcnkgZG9tYWluIHN0cnVjdHVyZXMsIGFuZCB3aGVyZSB0aGUgY29yZSBsb2dpYyByZXNpZGVzLiBUaGF0IGZpbGUgaXMgdXN1YWxseSB0aGUgZ28tdG8gc3BvdCBmb3IgdGhlc2Uga2luZHMgb2YgZGV0YWlscyB3aXRoIEF0aGVyb3MuIEZyb20gdGhlcmUsIEkgY2FuIGFuYWx5emUgdGhlIGRhdGEgc3RydWN0dXJlcyB0byB1bmRlcnN0YW5kIGhvdyB0aGUgcmVndWxhdG9yeSBwYXJhbWV0ZXJzIGFuZCBjaGFubmVscyBhcmUgcmVwcmVzZW50ZWQuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBzb2xpZCBmb3VuZGF0aW9uIGZvciB0cmFjaW5nIHRoZSBhY3R1YWwgaXNzdWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTAvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDExOjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDU1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDYwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgNTU6XHRcdFx0XHRcdEFUSF8yR0haX0NIMTJfMTMsIFxcXG4gIDU2Olx0XHRcdFx0XHRBVEhfMkdIWl9DSDE0XG4gIDU3Olx0XG4gIDU4Olx0I2RlZmluZSBBVEhfNUdIWl9BTExcdFx0QVRIXzVHSFpfNTE1MF81MzUwLCBcXFxuICA1OTpcdFx0XHRcdFx0QVRIXzVHSFpfNTQ3MF81ODUwXG4gIDYwOlx0XG4gIDYxOlx0LyogVGhpcyBvbmUgc2tpcHMgd2hhdCB3ZSBjYWxsIFwmIzM0O21pZCBiYW5kXCYjMzQ7ICovXG4gIDYyOlx0I2RlZmluZSBBVEhfNUdIWl9OT19NSURCQU5EXHRBVEhfNUdIWl81MTUwXzUzNTAsIFxcXG4gIDYzOlx0XHRcdFx0XHRBVEhfNUdIWl81NzI1XzU4NTBcbiAgNjQ6XHRcbiAgNjU6XHQvKiBDYW4gYmUgdXNlZCBmb3I6XG4gIDY2Olx0ICogMHg2MCwgMHg2MSwgMHg2MiAqL1xuICA2NzpcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiBhdGhfd29ybGRfcmVnZG9tXzYwXzYxXzYyID0ge1xuICA2ODpcdFx0Lm5fcmVnX3J1bGVzID0gNixcbiAgNjk6XHRcdC5hbHBoYTIgPSAgXCYjMzQ7OTlcJiMzNDssXG4gIDcwOlx0XHQucmVnX3J1bGVzID0ge1xuICA3MTpcdFx0XHRBVEhfMkdIWl9BTEwsXG4gIDcyOlx0XHRcdEFUSF81R0haX0FMTCxcbiAgNzM6XHRcdH1cbiAgNzQ6XHR9O1xuICA3NTpcdFxuICA3NjpcdC8qIENhbiBiZSB1c2VkIGJ5IDB4NjMgYW5kIDB4NjUgKi9cbiAgNzc6XHRzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW4gYXRoX3dvcmxkX3JlZ2RvbV82M182NSA9IHtcbiAgNzg6XHRcdC5uX3JlZ19ydWxlcyA9IDUsXG4gIDc5Olx0XHQuYWxwaGEyID0gIFwmIzM0Ozk5XCYjMzQ7LFxuICA4MDpcdFx0LnJlZ19ydWxlcyA9IHtcbiAgODE6XHRcdFx0QVRIXzJHSFpfQ0gwMV8xMSxcbiAgODI6XHRcdFx0QVRIXzJHSFpfQ0gxMl8xMyxcbiAgODM6XHRcdFx0QVRIXzVHSFpfTk9fTUlEQkFORCxcbiAgODQ6XHRcdH1cbiAgODU6XHR9O1xuICA4NjpcdFxuICA4NzpcdC8qIENhbiBiZSB1c2VkIGJ5IDB4NjQgb25seSAqL1xuICA4ODpcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiBhdGhfd29ybGRfcmVnZG9tXzY0ID0ge1xuICA4OTpcdFx0Lm5fcmVnX3J1bGVzID0gNCxcbiAgOTA6XHRcdC5hbHBoYTIgPSAgXCYjMzQ7OTlcJiMzNDssXG4gIDkxOlx0XHQucmVnX3J1bGVzID0ge1xuICA5MjpcdFx0XHRBVEhfMkdIWl9DSDAxXzExLFxuICA5MzpcdFx0XHRBVEhfNUdIWl9OT19NSURCQU5ELFxuICA5NDpcdFx0fVxuICA5NTpcdH07XG4gIDk2Olx0XG4gIDk3Olx0LyogQ2FuIGJlIHVzZWQgYnkgMHg2NiBhbmQgMHg2OSAqL1xuICA5ODpcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiBhdGhfd29ybGRfcmVnZG9tXzY2XzY5ID0ge1xuICA5OTpcdFx0Lm5fcmVnX3J1bGVzID0gNCxcbiAxMDA6XHRcdC5hbHBoYTIgPSAgXCYjMzQ7OTlcJiMzNDssXG4gMTAxOlx0XHQucmVnX3J1bGVzID0ge1xuIDEwMjpcdFx0XHRBVEhfMkdIWl9DSDAxXzExLFxuIDEwMzpcdFx0XHRBVEhfNUdIWl9BTEwsXG4gMTA0Olx0XHR9XG4gMTA1Olx0fTtcbiAxMDY6XHRcbiAxMDc6XHQvKiBDYW4gYmUgdXNlZCBieSAweDY3LCAweDY4LCAweDZBIGFuZCAweDZDICovXG4gMTA4Olx0c3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluIGF0aF93b3JsZF9yZWdkb21fNjdfNjhfNkFfNkMgPSB7XG4gMTA5Olx0XHQubl9yZWdfcnVsZXMgPSA1LFxuIDExMDpcdFx0LmFscGhhMiA9ICBcJiMzNDs5OVwmIzM0OyxcbiAxMTE6XHRcdC5yZWdfcnVsZXMgPSB7XG4gMTEyOlx0XHRcdEFUSF8yR0haX0NIMDFfMTEsXG4gMTEzOlx0XHRcdEFUSF8yR0haX0NIMTJfMTMsXG4gMTE0Olx0XHRcdEFUSF81R0haX0FMTCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41MS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTE6NDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzkzMwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDM0NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFJlZ3VsYXRvcnkgRG9tYWluIFVwZGF0ZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyByZWd1bGF0b3J5IGRvbWFpbiBkZWZpbml0aW9uLCBzcGVjaWZpY2FsbHkgYEFUSF81R0haXzUxNTBfNTM1MGAuIEJlZm9yZSwgaXQgd2FzIGRlZmluZWQgYnkgYSBzaW5nbGUgcnVsZTogYFJFR19SVUxFKDUxNTAtMTAsIDUzNTAmIzQzOzEwLCA4MCwgMCwgMzAsIE5MODAyMTFfUlJGX05PX0lSKWAuIE5vdywgaXQmIzM5O3MgYmVlbiBzcGxpdCBpbnRvIHR3byBydWxlcywgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIFdlIGhhdmU6IGBSRUdfUlVMRSg1MTUwLTEwLCA1MjQwJiM0MzsxMCwgODAsIDAsIDMwLCAwKWAgYW5kIGBSRUdfUlVMRSg1MjYwLTEwLCA1MzUwJiM0MzsxMCwgODAsIDAsIDMwLCBOTDgwMjExX1JSRl9OT19JUilgLiBJIHNlZSB0aGUgbG9naWMsIHNwbGl0dGluZyB0aGF0IGNvbnRpZ3VvdXMgYmFuZCBpbnRvIHR3byBwaWVjZXMsIG1vc3QgbGlrZWx5IHRvIGFjY29tbW9kYXRlIHNvbWUgbmV3IHJlZ3VsYXRvcnkgcmVxdWlyZW1lbnQgb3IgcGVyaGFwcyB0byBlbmFibGUgRHluYW1pYyBGcmVxdWVuY3kgU2VsZWN0aW9uIChERlMpIG9uIGEgc2VjdGlvbiBvZiB0aGF0IGJhbmQuCgpOYXR1cmFsbHksIHRoZSBgLm5fcmVnX3J1bGVzYCBtZW1iZXIgb2YgYW55IGBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbmAgdXNpbmcgYEFUSF81R0haXzUxNTBfNTM1MGAgKGVpdGhlciBkaXJlY3RseSBvciB2aWEgYEFUSF81R0haX0FMTGAgb3IgYEFUSF81R0haX05PX01JREJBTkRgKSBoYXMgYmVlbiBpbmNyZW1lbnRlZCB0byByZWZsZWN0IHRoaXMgY2hhbmdlLiBUaGVzZSBhcmUgYWxsIGRlY2xhcmVkIGFzIGBzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW5gLCB3aGljaCBtZWFucyB0aGVzZSBzdHJ1Y3R1cmVzIGFyZSBpbml0aWFsaXplZCBhdCBjb21waWxlIHRpbWUuCgpJbiBDLCB0aGUgYHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluYCB1c2VzIGEgZmxleGlibGUgYXJyYXkgbWVtYmVyIGBzdHJ1Y3QgaWVlZTgwMjExX3JlZ19ydWxlIHJlZ19ydWxlc1tdYCwgd2hpY2ggaXMgc3RhbmRhcmQgcHJhY3RpY2UgaW4gdGhlc2UgcmVndWxhdG9yeSBkb21haW4gZGVmaW5pdGlvbnMuIFNpbmNlIHRoZXNlIGFyZSBzdGF0aWMgYGNvbnN0YCBzdHJ1Y3R1cmVzLCB0aGUgZW50aXJlIGByZWdfcnVsZXNbXWAgYXJyYXkgaXMgcG9wdWxhdGVkIGF0IGNvbXBpbGUgdGltZSB3aXRoIHN0YXRpYyBgY29uc3RgIGRhdGEgdXNpbmcgZGVzaWduYXRlZCBpbml0aWFsaXplcnMuIFRoYXQmIzM5O3MgZ29vZCwgbWluaW1pemVzIHJ1bnRpbWUgb3ZlcmhlYWQuCgpOb3cgSSBuZWVkIHRvIHNlZSB3aGVyZSB0aGVzZSBgYXRoX3dvcmxkX3JlZ2RvbV8qYCB2YXJpYWJsZXMgYXJlIGFjdHVhbGx5IHVzZWQgd2l0aGluIHRoZSBjb2RlYmFzZSB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBpbXBhY3Qgb2YgdGhpcyBjaGFuZ2UuIEkmIzM5O2xsIG5lZWQgdG8gdHJhY2UgdGhvc2UgdXNhZ2VzIHRvIHNlZSBpZiBhbnkgbG9naWMgbmVlZHMgdG8gYmUgdXBkYXRlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41Mi8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTE6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoX3dvcmxkX3JlZ2RvbV8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYz0yNj1zdGF0aWMgaW50IF9fYXRoX3JlZ2RfaW5pdChzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy02Ni0gKiAweDYwLCAweDYxLCAweDYyICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjY3OnN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiBhdGhfd29ybGRfcmVnZG9tXzYwXzYxXzYyID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy02OC1cdC5uX3JlZ19ydWxlcyA9IDYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy03Ni0vKiBDYW4gYmUgdXNlZCBieSAweDYzIGFuZCAweDY1ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjc3OnN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiBhdGhfd29ybGRfcmVnZG9tXzYzXzY1ID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy03OC1cdC5uX3JlZ19ydWxlcyA9IDUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy04Ny0vKiBDYW4gYmUgdXNlZCBieSAweDY0IG9ubHkgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6ODg6c3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluIGF0aF93b3JsZF9yZWdkb21fNjQgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTg5LVx0Lm5fcmVnX3J1bGVzID0gNCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTk3LS8qIENhbiBiZSB1c2VkIGJ5IDB4NjYgYW5kIDB4NjkgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6OTg6c3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluIGF0aF93b3JsZF9yZWdkb21fNjZfNjkgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTk5LVx0Lm5fcmVnX3J1bGVzID0gNCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTEwNy0vKiBDYW4gYmUgdXNlZCBieSAweDY3LCAweDY4LCAweDZBIGFuZCAweDZDICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjEwODpzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW4gYXRoX3dvcmxkX3JlZ2RvbV82N182OF82QV82QyA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMTA5LVx0Lm5fcmVnX3J1bGVzID0gNSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jPTIxNz1zdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW4gKmF0aF9kZWZhdWx0X3dvcmxkX3JlZ2RvbWFpbih2b2lkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjE5LVx0LyogdGhpcyBpcyB0aGUgbW9zdCByZXN0cmljdGl2ZSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzoyMjA6XHRyZXR1cm4gXHUwMDI2YXRoX3dvcmxkX3JlZ2RvbV82NDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjIxLX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jPTIyND1pZWVlODAyMTFfcmVnZG9tYWluICphdGhfd29ybGRfcmVnZG9tYWluKHN0cnVjdCBhdGhfcmVndWxhdG9yeSAqcmVnKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjI5LVx0Y2FzZSAweDYyOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzoyMzA6XHRcdHJldHVybiBcdTAwMjZhdGhfd29ybGRfcmVnZG9tXzYwXzYxXzYyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0yMzEtXHRjYXNlIDB4NjM6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTIzMi1cdGNhc2UgMHg2NTpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6MjMzOlx0XHRyZXR1cm4gXHUwMDI2YXRoX3dvcmxkX3JlZ2RvbV82M182NTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjM0LVx0Y2FzZSAweDY0OlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzoyMzU6XHRcdHJldHVybiBcdTAwMjZhdGhfd29ybGRfcmVnZG9tXzY0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0yMzYtXHRjYXNlIDB4NjY6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTIzNy1cdGNhc2UgMHg2OTpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6MjM4Olx0XHRyZXR1cm4gXHUwMDI2YXRoX3dvcmxkX3JlZ2RvbV82Nl82OTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjM5LVx0Y2FzZSAweDY3OlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjQyLVx0Y2FzZSAweDZDOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzoyNDM6XHRcdHJldHVybiBcdTAwMjZhdGhfd29ybGRfcmVnZG9tXzY3XzY4XzZBXzZDO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0yNDQtXHRkZWZhdWx0OlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxMTo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5OTg2CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogNjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXhhbWluaW5nIHRoZSBBdGhlcm9zIFJlZ3VsYXRvcnkgRG9tYWluIENvZGUqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW4uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgcmVndWxhdG9yeSBkb21haW4gcnVsZXMgYXJlIGhhbmRsZWQsIHNwZWNpZmljYWxseSBpbiByZWxhdGlvbiB0byBgYXRoX3dvcmxkX3JlZ2RvbWFpbigpYC4gTXkgZm9jdXMgaXMgY3VycmVudGx5IG9uIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuY2AgZmlsZS4gSSYjMzk7bSBnb2luZyB0byBzdGFydCBieSBnb2luZyBkZWVwZXIgaW50byB0aGlzIGNvZGUsIGZvY3VzaW5nIG9uIHRoZSBzZWN0aW9uIGZyb20gYXJvdW5kIGxpbmUgMjE1IHRvIGxpbmUgMzAwLiBJIG5lZWQgdG8gcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGlzIGltcGxlbWVudGF0aW9uIGRlYWxzIHdpdGggc3BlY2lmaWMgcGFyYW1ldGVycyBhbmQgbWFrZSBhIGNvbXBhcmlzb24gdG8gYW5vdGhlciBtb2RlbCBpbiBteSBtaW5kLiBUaW1lIHRvIGdldCBkb3duIGludG8gdGhlIGRldGFpbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTQvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDExOjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIxNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjE1Olx0RVhQT1JUX1NZTUJPTChhdGhfaXNfd29ybGRfcmVnZCk7XG4gMjE2Olx0XG4gMjE3Olx0c3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluICphdGhfZGVmYXVsdF93b3JsZF9yZWdkb21haW4odm9pZClcbiAyMTg6XHR7XG4gMjE5Olx0XHQvKiB0aGlzIGlzIHRoZSBtb3N0IHJlc3RyaWN0aXZlICovXG4gMjIwOlx0XHRyZXR1cm4gXHUwMDI2YXRoX3dvcmxkX3JlZ2RvbV82NDtcbiAyMjE6XHR9XG4gMjIyOlx0XG4gMjIzOlx0c3RhdGljIGNvbnN0IHN0cnVjdFxuIDIyNDpcdGllZWU4MDIxMV9yZWdkb21haW4gKmF0aF93b3JsZF9yZWdkb21haW4oc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcpXG4gMjI1Olx0e1xuIDIyNjpcdFx0c3dpdGNoIChyZWctXHUwMDNlcmVncGFpci1cdTAwM2VyZWdfZG9tYWluKSB7XG4gMjI3Olx0XHRjYXNlIDB4NjA6XG4gMjI4Olx0XHRjYXNlIDB4NjE6XG4gMjI5Olx0XHRjYXNlIDB4NjI6XG4gMjMwOlx0XHRcdHJldHVybiBcdTAwMjZhdGhfd29ybGRfcmVnZG9tXzYwXzYxXzYyO1xuIDIzMTpcdFx0Y2FzZSAweDYzOlxuIDIzMjpcdFx0Y2FzZSAweDY1OlxuIDIzMzpcdFx0XHRyZXR1cm4gXHUwMDI2YXRoX3dvcmxkX3JlZ2RvbV82M182NTtcbiAyMzQ6XHRcdGNhc2UgMHg2NDpcbiAyMzU6XHRcdFx0cmV0dXJuIFx1MDAyNmF0aF93b3JsZF9yZWdkb21fNjQ7XG4gMjM2Olx0XHRjYXNlIDB4NjY6XG4gMjM3Olx0XHRjYXNlIDB4Njk6XG4gMjM4Olx0XHRcdHJldHVybiBcdTAwMjZhdGhfd29ybGRfcmVnZG9tXzY2XzY5O1xuIDIzOTpcdFx0Y2FzZSAweDY3OlxuIDI0MDpcdFx0Y2FzZSAweDY4OlxuIDI0MTpcdFx0Y2FzZSAweDZBOlxuIDI0MjpcdFx0Y2FzZSAweDZDOlxuIDI0MzpcdFx0XHRyZXR1cm4gXHUwMDI2YXRoX3dvcmxkX3JlZ2RvbV82N182OF82QV82QztcbiAyNDQ6XHRcdGRlZmF1bHQ6XG4gMjQ1Olx0XHRcdFdBUk5fT04oMSk7XG4gMjQ2Olx0XHRcdHJldHVybiBhdGhfZGVmYXVsdF93b3JsZF9yZWdkb21haW4oKTtcbiAyNDc6XHRcdH1cbiAyNDg6XHR9XG4gMjQ5Olx0XG4gMjUwOlx0Ym9vbCBhdGhfaXNfNDlnaHpfYWxsb3dlZCh1MTYgcmVnZG9tYWluKVxuIDI1MTpcdHtcbiAyNTI6XHRcdC8qIHBvc3NpYmx5IG1vcmUgKi9cbiAyNTM6XHRcdHJldHVybiByZWdkb21haW4gPT0gTUtLOV9NS0tDO1xuIDI1NDpcdH1cbiAyNTU6XHRFWFBPUlRfU1lNQk9MKGF0aF9pc180OWdoel9hbGxvd2VkKTtcbiAyNTY6XHRcbiAyNTc6XHQvKiBGcmVxdWVuY3kgaXMgb25lIHdoZXJlIHJhZGFyIGRldGVjdGlvbiBpcyByZXF1aXJlZCAqL1xuIDI1ODpcdHN0YXRpYyBib29sIGF0aF9pc19yYWRhcl9mcmVxKHUxNiBjZW50ZXJfZnJlcSxcbiAyNTk6XHRcdFx0XHQgICAgICBzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZylcbiAyNjA6XHRcbiAyNjE6XHR7XG4gMjYyOlx0XHRpZiAocmVnLVx1MDAzZWNvdW50cnlfY29kZSA9PSBDVFJZX0lORElBKVxuIDI2MzpcdFx0XHRyZXR1cm4gKGNlbnRlcl9mcmVxIFx1MDAzZT0gNTUwMCBcdTAwMjZcdTAwMjYgY2VudGVyX2ZyZXEgXHUwMDNjPSA1NzAwKTtcbiAyNjQ6XHRcdHJldHVybiAoY2VudGVyX2ZyZXEgXHUwMDNlPSA1MjYwIFx1MDAyNlx1MDAyNiBjZW50ZXJfZnJlcSBcdTAwM2M9IDU3MDApO1xuIDI2NTpcdH1cbiAyNjY6XHRcbiAyNjc6XHRzdGF0aWMgdm9pZCBhdGhfZm9yY2VfY2xlYXJfbm9faXJfY2hhbihzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuIDI2ODpcdFx0XHRcdFx0ICAgICAgIHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2gpXG4gMjY5Olx0e1xuIDI3MDpcdFx0Y29uc3Qgc3RydWN0IGllZWU4MDIxMV9yZWdfcnVsZSAqcmVnX3J1bGU7XG4gMjcxOlx0XG4gMjcyOlx0XHRyZWdfcnVsZSA9IGZyZXFfcmVnX2luZm8od2lwaHksIE1IWl9UT19LSFooY2gtXHUwMDNlY2VudGVyX2ZyZXEpKTtcbiAyNzM6XHRcdGlmIChJU19FUlIocmVnX3J1bGUpKVxuIDI3NDpcdFx0XHRyZXR1cm47XG4gMjc1Olx0XG4gMjc2Olx0XHRpZiAoIShyZWdfcnVsZS1cdTAwM2VmbGFncyBcdTAwMjYgTkw4MDIxMV9SUkZfTk9fSVIpKVxuIDI3NzpcdFx0XHRpZiAoY2gtXHUwMDNlZmxhZ3MgXHUwMDI2IElFRUU4MDIxMV9DSEFOX05PX0lSKVxuIDI3ODpcdFx0XHRcdGNoLVx1MDAzZWZsYWdzIFx1MDAyNj0gfklFRUU4MDIxMV9DSEFOX05PX0lSO1xuIDI3OTpcdH1cbiAyODA6XHRcbiAyODE6XHRzdGF0aWMgdm9pZCBhdGhfZm9yY2VfY2xlYXJfbm9faXJfZnJlcShzdHJ1Y3Qgd2lwaHkgKndpcGh5LCB1MTYgY2VudGVyX2ZyZXEpXG4gMjgyOlx0e1xuIDI4MzpcdFx0c3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaDtcbiAyODQ6XHRcbiAyODU6XHRcdGNoID0gaWVlZTgwMjExX2dldF9jaGFubmVsKHdpcGh5LCBjZW50ZXJfZnJlcSk7XG4gMjg2Olx0XHRpZiAoIWNoKVxuIDI4NzpcdFx0XHRyZXR1cm47XG4gMjg4Olx0XG4gMjg5Olx0XHRhdGhfZm9yY2VfY2xlYXJfbm9faXJfY2hhbih3aXBoeSwgY2gpO1xuIDI5MDpcdH1cbiAyOTE6XHRcbiAyOTI6XHRzdGF0aWMgdm9pZCBhdGhfZm9yY2Vfbm9faXJfY2hhbihzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoKVxuIDI5MzpcdHtcbiAyOTQ6XHRcdGNoLVx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9DSEFOX05PX0lSO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU1LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxMTo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTUxMAoJCQkJCQkJb3V0cHV0OiAyMjMKCQkJCQkJCXRob3VnaHRzOiAxMDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKktNU0FOIEFzc2Vzc21lbnQ6IE5vIENvbmNlcm5zIEhlcmUqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gVGhpcyBwYXRjaCBpcyBlc3NlbnRpYWxseSByZWZpbmluZyBob3cgd2UgZGVmaW5lIHJlZ3VsYXRvcnkgcnVsZXMgZm9yIHRoZSA1IEdIeiBiYW5kLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIHNwbGl0dGluZyBhIHNpbmdsZSBydWxlIGludG8gdHdvIHN1Yi1yYW5nZXM6IDUxNTAtNTI0MCBNSHogKHdpdGhvdXQgTk9fSVIpIGFuZCA1MjYwLTUzNTAgTUh6ICh3aXRoIE5PX0lSKS4gVGhlIGNydWNpYWwgcGFydCBpcyB0aGF0IGl0IHVwZGF0ZXMgdGhlIGBuX3JlZ19ydWxlc2AgY291bnRzIGluIHRoZSBzdGF0aWMgYGllZWU4MDIxMV9yZWdkb21haW5gIHRhYmxlcyB0byByZWZsZWN0IHRoaXMgY2hhbmdlLgoKTm93LCBsZXQmIzM5O3MgbWV0aWN1bG91c2x5IHZlcmlmeSB0aGlzLiBJIG5lZWQgdG8gbWFrZSBhYnNvbHV0ZWx5IHN1cmUgdGhlcmUgYXJlbiYjMzk7dCBhbnkgc25lYWt5IGlzc3Vlcy4gSSYjMzk7bSBnb2luZyB0aHJvdWdoIHRoZSBtYWNybyBleHBhbnNpb25zIGZvciBgQVRIXzJHSFpfQUxMYCBhbmQgYEFUSF81R0haX0FMTGAgdG8gZW5zdXJlIHRoZSBydWxlIGNvdW50cyBhcmUgY29ycmVjdCBhZnRlciB0aGUgc3BsaXQgYW5kIHVwZGF0aW5nIHRoZSB2YXJpb3VzIGBhdGhfd29ybGRfcmVnZG9tXypgIHN0cnVjdHVyZXMsIGNvbmZpcm1pbmcgdGhhdCB0aGUgYC5uX3JlZ19ydWxlc2AgZmllbGQgY29ycmVjdGx5IHJlZmxlY3RzIHRoZSBzdW0gb2YgaXRzIGNvbnN0aXR1ZW50cy4gSSYjMzk7bSBjb25maXJtaW5nIHRoaW5ncyBsaWtlIGBhdGhfd29ybGRfcmVnZG9tXzYwXzYxXzYyYCBoYXZpbmcgNiBydWxlcyAoMyBmb3IgMkdIeiwgMyBmb3IgNUdIeikgYW5kIHNvIG9uLiBBbGwgdGhlc2UgYXJlIHN0YXRpYyBjb25zdGFudCByZWd1bGF0b3J5IHRhYmxlcy4KCk15IGFuYWx5c2lzIGJvaWxzIGRvd24gdG8gdGhpczogYXJlIHRoZXJlIGFueSByaXNrcyBvZiBLTVNBTiBmaW5kaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGxlYWtzIHRvIHVzZXJzcGFjZT8gVGhlIGFuc3dlciBpcyBhIGNsZWFyICYjMzQ7bm8mIzM0Oy4gVGhlcmUmIzM5O3Mgbm8gZHluYW1pYyBtZW1vcnkgYWxsb2NhdGlvbiwgc28gbm8gY2hhbmNlIG9mIHVuaW5pdGlhbGl6ZWQgaGVhcCBkYXRhLiBUaGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIGFuZCBjZXJ0YWlubHkgbm8gY29weS10by11c2VyIG9mIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGUgY29kZSBpcyBvbmx5IG1vZGlmeWluZyBzdGF0aWMgY29uc3QgZGF0YSBzdHJ1Y3R1cmVzIHRoYXQgYXJlIGZ1bGx5IGluaXRpYWxpemVkIGF0IGNvbXBpbGUgdGltZS4KCldlIG5lZWQgdG8gYmUgc3VyZS4gTGV0JiMzOTtzIHJ1biBkb3duIHRoZSBjaGVja2xpc3QuCiogICBEb2VzIGl0IGludHJvZHVjZSBvciBtb2RpZnkga2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlIHdoZXJlIGZpZWxkcy9wYWRkaW5nIG1pZ2h0IG5vdCBiZSBpbml0aWFsaXplZD8gTm8uCiogICBEb2VzIGl0IGludHJvZHVjZSBjb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgZGVwZW5kaW5nIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzPyBOby4KKiAgIERvZXMgaXQgYWxsb2NhdGUgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMgY291bGQgYmUgcmVhZD8gTm8uCiogICBEb2VzIGl0IG1vZGlmeSBib3VuZHMgY2hlY2tzL2xlbmd0aHMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MgdW5pbml0aWFsaXplZCBieXRlcz8gTm8uCgpLQVNBTiwgb3VyIHN0YW5kYXJkIG1lbW9yeSBib3VuZHMgY2hlY2tlciwgd2lsbCBjYXRjaCBhbnkgb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3NlcyBpZiB0aGVyZSB3ZXJlIGFueSBpc3N1ZXMgd2l0aCB0aGUgdXBkYXRlZCBjb3VudHMuIEJ1dCBLTVNBTiwgd2hpY2ggdGFyZ2V0cyB1bmluaXRpYWxpemVkIHJlYWRzLCBpcyBzaW1wbHkgbm90IGFwcGxpY2FibGUgaGVyZS4KCktNU0FOIGRldGVjdHMgcmVhZHMgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgYW5kIGxlYWtzIG9mIHVuaW5pdGlhbGl6ZWQgZGF0YSB0byB1c2VyIHNwYWNlLiBUaGlzIHBhdGNoIHNvbGVseSBkZWFscyB3aXRoIGNvbXBpbGUtdGltZSBjb25zdGFudCByZWd1bGF0b3J5IGRvbWFpbiBydWxlcy4gVGhlcmUmIzM5O3Mgbm8gZHluYW1pYyBhbGxvY2F0aW9uIG9yIHN0YWNrLWFsbG9jYXRlZCBtZW1vcnkgYW5kIG5vIHVuaW5pdGlhbGl6ZWQgZmllbGRzIG9yIGJ1ZmZlcnMgYXJlIGNyZWF0ZWQgb3IgYWNjZXNzZWQuCgpUaGVyZWZvcmUsIGBOZWVkc0tNU0FOYCBzaG91bGQgYmUgZmFsc2UuIE5vIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbiBvciBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBpcyBuZWNlc3NhcnkuIFRoaXMgaXMgYSBjbGVhbiwgc2FmZSwgYW5kIHN0cmFpZ2h0Zm9yd2FyZCB1cGRhdGUgdG8gdGhlIHJlZ3VsYXRvcnkgZG9tYWluIGRlZmluaXRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU2LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxMTo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBzdGF0aWMgY29uc3RhbnQgcmVndWxhdG9yeSBkb21haW4gZGVmaW5pdGlvbnMgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmNgLiBTcGVjaWZpY2FsbHksIGl0IHNwbGl0cyB0aGUgYEFUSF81R0haXzUxNTBfNTM1MGAgbWFjcm8gaW50byB0d28gc2VwYXJhdGUgcmVndWxhdG9yeSBydWxlcyAoNTE1MC01MjQwIE1IeiBhbmQgNTI2MC01MzUwIE1IeikgYW5kIGFkanVzdHMgdGhlIGBuX3JlZ19ydWxlc2AgZmllbGQgaW4gc2V2ZXJhbCBzdGF0aWMgY29uc3QgYHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluYCBpbnN0YW5jZXMgYWNjb3JkaW5nbHkuXG5cbkFsbCBhZmZlY3RlZCBkYXRhIHN0cnVjdHVyZXMgYXJlIGNvbXBpbGUtdGltZSBjb25zdGFudCB0YWJsZXMgd2l0aCBmdWxseSBpbml0aWFsaXplZCBmaWVsZHMuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IGR5bmFtaWMgb3Igc3RhY2sgYWxsb2NhdGlvbnMsIGRvZXMgbm90IG1vZGlmeSBhbnkgYnVmZmVycyBvciBwYWRkaW5nIGNvcGllZCB0byB1c2Vyc3BhY2UsIGFuZCBpbnRyb2R1Y2VzIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLiBJZiBhbnkgYXJyYXkgaW5kZXhpbmcgb3IgcnVsZSBjb3VudCBtaXNtYXRjaGVzIHdlcmUgdG8gb2NjdXIsIHRoZXkgd291bGQgYmUgYm91bmRzIHZpb2xhdGlvbnMgZGV0ZWN0YWJsZSBieSBzdGFuZGFyZCBLQVNBTi4gVGhlcmVmb3JlLCB0aGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgdGhhdCB3YXJyYW50IGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbi4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHN0YXRpYyBjb25zdGFudCByZWd1bGF0b3J5IGRvbWFpbiBkZWZpbml0aW9ucyBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuY2AuIFNwZWNpZmljYWxseSwgaXQgc3BsaXRzIHRoZSBgQVRIXzVHSFpfNTE1MF81MzUwYCBtYWNybyBpbnRvIHR3byBzZXBhcmF0ZSByZWd1bGF0b3J5IHJ1bGVzICg1MTUwLTUyNDAgTUh6IGFuZCA1MjYwLTUzNTAgTUh6KSBhbmQgYWRqdXN0cyB0aGUgYG5fcmVnX3J1bGVzYCBmaWVsZCBpbiBzZXZlcmFsIHN0YXRpYyBjb25zdCBgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW5gIGluc3RhbmNlcyBhY2NvcmRpbmdseS5cblxuQWxsIGFmZmVjdGVkIGRhdGEgc3RydWN0dXJlcyBhcmUgY29tcGlsZS10aW1lIGNvbnN0YW50IHRhYmxlcyB3aXRoIGZ1bGx5IGluaXRpYWxpemVkIGZpZWxkcy4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgZHluYW1pYyBvciBzdGFjayBhbGxvY2F0aW9ucywgZG9lcyBub3QgbW9kaWZ5IGFueSBidWZmZXJzIG9yIHBhZGRpbmcgY29waWVkIHRvIHVzZXJzcGFjZSwgYW5kIGludHJvZHVjZXMgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMuIElmIGFueSBhcnJheSBpbmRleGluZyBvciBydWxlIGNvdW50IG1pc21hdGNoZXMgd2VyZSB0byBvY2N1ciwgdGhleSB3b3VsZCBiZSBib3VuZHMgdmlvbGF0aW9ucyBkZXRlY3RhYmxlIGJ5IHN0YW5kYXJkIEtBU0FOLiBUaGVyZWZvcmUsIHRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyB0aGF0IHdhcnJhbnQgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxMTo0Mjo0NS44NDA3MjU2OTdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTg1OTA4NDMyNzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQVRIX0NPTU1PTlwiLFxuICAgIFwiQVRIOUtfSFRDXCIsXG4gICAgXCJDQVJMOTE3MFwiLFxuICAgIFwiQ0ZHODAyMTFcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJVU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJhdGhfcmVnZF9pbml0XCIsXG4gICAgXCJhdGhfcmVnZF9pbml0X3dpcGh5XCIsXG4gICAgXCJhdGhfd29ybGRfcmVnZG9tYWluXCIsXG4gICAgXCJhdGhfZGVmYXVsdF93b3JsZF9yZWdkb21haW5cIixcbiAgICBcImF0aF9yZWdfbm90aWZpZXJfYXBwbHlcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHN0YXRpYyBjb25zdGFudCByZWd1bGF0b3J5IGRvbWFpbiBkZWZpbml0aW9ucyBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuY2AuIFNwZWNpZmljYWxseSwgaXQgc3BsaXRzIHRoZSBgQVRIXzVHSFpfNTE1MF81MzUwYCBtYWNybyBpbnRvIHR3byBzZXBhcmF0ZSByZWd1bGF0b3J5IHJ1bGVzICg1MTUwLTUyNDAgTUh6IGFuZCA1MjYwLTUzNTAgTUh6KSBhbmQgYWRqdXN0cyB0aGUgYG5fcmVnX3J1bGVzYCBmaWVsZCBpbiBzZXZlcmFsIHN0YXRpYyBjb25zdCBgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW5gIGluc3RhbmNlcyBhY2NvcmRpbmdseS5cXG5cXG5BbGwgYWZmZWN0ZWQgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBjb21waWxlLXRpbWUgY29uc3RhbnQgdGFibGVzIHdpdGggZnVsbHkgaW5pdGlhbGl6ZWQgZmllbGRzLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSBkeW5hbWljIG9yIHN0YWNrIGFsbG9jYXRpb25zLCBkb2VzIG5vdCBtb2RpZnkgYW55IGJ1ZmZlcnMgb3IgcGFkZGluZyBjb3BpZWQgdG8gdXNlcnNwYWNlLCBhbmQgaW50cm9kdWNlcyBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcy4gSWYgYW55IGFycmF5IGluZGV4aW5nIG9yIHJ1bGUgY291bnQgbWlzbWF0Y2hlcyB3ZXJlIHRvIG9jY3VyLCB0aGV5IHdvdWxkIGJlIGJvdW5kcyB2aW9sYXRpb25zIGRldGVjdGFibGUgYnkgc3RhbmRhcmQgS0FTQU4uIFRoZXJlZm9yZSwgdGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIHRoYXQgd2FycmFudCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24uXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggc3BsaXRzIHRoZSA1R0h6IDUxNTAtNTM1MCBNSHogcmVndWxhdG9yeSBydWxlIGludG8gc2VwYXJhdGUgNTE1MC01MjQwIE1IeiBhbmQgNTI2MC01MzUwIE1IeiBydWxlcyBhbmQgdXBkYXRlcyBydWxlIGNvdW50cyBhY3Jvc3MgQXRoZXJvcyB3b3JsZCByZWd1bGF0b3J5IGRvbWFpbiBkZWZpbml0aW9ucyBpbiBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLiBUaGlzIGNvZGUgaXMgZXhlY3V0ZWQgZHVyaW5nIGluaXRpYWxpemF0aW9uIGFuZCByZWd1bGF0b3J5IHVwZGF0ZXMgb2YgQXRoZXJvcyB3aXJlbGVzcyBkcml2ZXJzLCBpbmNsdWRpbmcgVVNCLWRyaXZlbiBkZXZpY2VzIChzdWNoIGFzIGF0aDlrX2h0YyBhbmQgY2FybDkxNzApIHdoaWNoIGFyZSByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBVU0IgZW11bGF0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxMTo0Mjo0NS44NDA3Mzk4NjZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM4MzEwNDM1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDEyOWNiMTU5ZmI5YzVjZDQ4ZWFkNDdjYzcwNGY3OTg2ZWRjYTQwOTJcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFNhdCBTZXAgNSAxMTo0Mjo0NSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuY1xcbmluZGV4IGYxNWU3YmQ2OTBiNWIuLmIxMjlhZjBlZWQ4ODUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmNcXG5AQCAtNDMsNyArNDMsOCBAQCBzdGF0aWMgaW50IF9fYXRoX3JlZ2RfaW5pdChzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZyk7XFxuIFxcdFxcdFxcdFxcdFxcdCBOTDgwMjExX1JSRl9OT19PRkRNKVxcbiBcXG4gLyogV2UgYWxsb3cgSUJTUyBvbiB0aGVzZSBvbiBhIGNhc2UgYnkgY2FzZSBiYXNpcyBieSByZWd1bGF0b3J5IGRvbWFpbiAqL1xcbi0jZGVmaW5lIEFUSF81R0haXzUxNTBfNTM1MFxcdFJFR19SVUxFKDUxNTAtMTAsIDUzNTArMTAsIDgwLCAwLCAzMCxcXFxcXFxuKyNkZWZpbmUgQVRIXzVHSFpfNTE1MF81MzUwXFx0UkVHX1JVTEUoNTE1MC0xMCwgNTI0MCsxMCwgODAsIDAsIDMwLCAwKSxcXFxcXFxuK1xcdFxcdFxcdFxcdFJFR19SVUxFKDUyNjAtMTAsIDUzNTArMTAsIDgwLCAwLCAzMCxcXFxcXFxuIFxcdFxcdFxcdFxcdFxcdCBOTDgwMjExX1JSRl9OT19JUilcXG4gI2RlZmluZSBBVEhfNUdIWl81NDcwXzU4NTBcXHRSRUdfUlVMRSg1NDcwLTEwLCA1ODUwKzEwLCA4MCwgMCwgMzAsXFxcXFxcbiBcXHRcXHRcXHRcXHRcXHQgTkw4MDIxMV9SUkZfTk9fSVIpXFxuQEAgLTY0LDcgKzY1LDcgQEAgc3RhdGljIGludCBfX2F0aF9yZWdkX2luaXQoc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcpO1xcbiAvKiBDYW4gYmUgdXNlZCBmb3I6XFxuICAqIDB4NjAsIDB4NjEsIDB4NjIgKi9cXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluIGF0aF93b3JsZF9yZWdkb21fNjBfNjFfNjIgPSB7XFxuLVxcdC5uX3JlZ19ydWxlcyA9IDUsXFxuK1xcdC5uX3JlZ19ydWxlcyA9IDYsXFxuIFxcdC5hbHBoYTIgPSAgXFxcIjk5XFxcIixcXG4gXFx0LnJlZ19ydWxlcyA9IHtcXG4gXFx0XFx0QVRIXzJHSFpfQUxMLFxcbkBAIC03NCw3ICs3NSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiBhdGhfd29ybGRfcmVnZG9tXzYwXzYxXzYyID0ge1xcbiBcXG4gLyogQ2FuIGJlIHVzZWQgYnkgMHg2MyBhbmQgMHg2NSAqL1xcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW4gYXRoX3dvcmxkX3JlZ2RvbV82M182NSA9IHtcXG4tXFx0Lm5fcmVnX3J1bGVzID0gNCxcXG4rXFx0Lm5fcmVnX3J1bGVzID0gNSxcXG4gXFx0LmFscGhhMiA9ICBcXFwiOTlcXFwiLFxcbiBcXHQucmVnX3J1bGVzID0ge1xcbiBcXHRcXHRBVEhfMkdIWl9DSDAxXzExLFxcbkBAIC04NSw3ICs4Niw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiBhdGhfd29ybGRfcmVnZG9tXzYzXzY1ID0ge1xcbiBcXG4gLyogQ2FuIGJlIHVzZWQgYnkgMHg2NCBvbmx5ICovXFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiBhdGhfd29ybGRfcmVnZG9tXzY0ID0ge1xcbi1cXHQubl9yZWdfcnVsZXMgPSAzLFxcbitcXHQubl9yZWdfcnVsZXMgPSA0LFxcbiBcXHQuYWxwaGEyID0gIFxcXCI5OVxcXCIsXFxuIFxcdC5yZWdfcnVsZXMgPSB7XFxuIFxcdFxcdEFUSF8yR0haX0NIMDFfMTEsXFxuQEAgLTk1LDcgKzk2LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluIGF0aF93b3JsZF9yZWdkb21fNjQgPSB7XFxuIFxcbiAvKiBDYW4gYmUgdXNlZCBieSAweDY2IGFuZCAweDY5ICovXFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiBhdGhfd29ybGRfcmVnZG9tXzY2XzY5ID0ge1xcbi1cXHQubl9yZWdfcnVsZXMgPSAzLFxcbitcXHQubl9yZWdfcnVsZXMgPSA0LFxcbiBcXHQuYWxwaGEyID0gIFxcXCI5OVxcXCIsXFxuIFxcdC5yZWdfcnVsZXMgPSB7XFxuIFxcdFxcdEFUSF8yR0haX0NIMDFfMTEsXFxuQEAgLTEwNSw3ICsxMDYsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW4gYXRoX3dvcmxkX3JlZ2RvbV82Nl82OSA9IHtcXG4gXFxuIC8qIENhbiBiZSB1c2VkIGJ5IDB4NjcsIDB4NjgsIDB4NkEgYW5kIDB4NkMgKi9cXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluIGF0aF93b3JsZF9yZWdkb21fNjdfNjhfNkFfNkMgPSB7XFxuLVxcdC5uX3JlZ19ydWxlcyA9IDQsXFxuK1xcdC5uX3JlZ19ydWxlcyA9IDUsXFxuIFxcdC5hbHBoYTIgPSAgXFxcIjk5XFxcIixcXG4gXFx0LnJlZ19ydWxlcyA9IHtcXG4gXFx0XFx0QVRIXzJHSFpfQ0gwMV8xMSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTE6NDI6NDYuMjI0NTc2MTM4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjoxMjkzMTkxNjkzOTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQVRIX0NPTU1PTlwiLFxuICAgIFwiQVRIOUtfSFRDXCIsXG4gICAgXCJDQVJMOTE3MFwiLFxuICAgIFwiQ0ZHODAyMTFcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJVU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJhdGhfcmVnZF9pbml0XCIsXG4gICAgXCJhdGhfcmVnZF9pbml0X3dpcGh5XCIsXG4gICAgXCJhdGhfd29ybGRfcmVnZG9tYWluXCIsXG4gICAgXCJhdGhfZGVmYXVsdF93b3JsZF9yZWdkb21haW5cIixcbiAgICBcImF0aF9yZWdfbm90aWZpZXJfYXBwbHlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBzcGxpdHMgdGhlIDVHSHogNTE1MC01MzUwIE1IeiByZWd1bGF0b3J5IHJ1bGUgaW50byBzZXBhcmF0ZSA1MTUwLTUyNDAgTUh6IGFuZCA1MjYwLTUzNTAgTUh6IHJ1bGVzIGFuZCB1cGRhdGVzIHJ1bGUgY291bnRzIGFjcm9zcyBBdGhlcm9zIHdvcmxkIHJlZ3VsYXRvcnkgZG9tYWluIGRlZmluaXRpb25zIGluIGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMuIFRoaXMgY29kZSBpcyBleGVjdXRlZCBkdXJpbmcgaW5pdGlhbGl6YXRpb24gYW5kIHJlZ3VsYXRvcnkgdXBkYXRlcyBvZiBBdGhlcm9zIHdpcmVsZXNzIGRyaXZlcnMsIGluY2x1ZGluZyBVU0ItZHJpdmVuIGRldmljZXMgKHN1Y2ggYXMgYXRoOWtfaHRjIGFuZCBjYXJsOTE3MCkgd2hpY2ggYXJlIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIFVTQiBlbXVsYXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMTI5Y2IxNTlmYjljNWNkNDhlYWQ0N2NjNzA0Zjc5ODZlZGNhNDA5MlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgU2VwIDUgMTE6NDI6NDUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuY1xuaW5kZXggZjE1ZTdiZDY5MGI1Yi4uYjEyOWFmMGVlZDg4NSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmNcbkBAIC00Myw3ICs0Myw4IEBAIHN0YXRpYyBpbnQgX19hdGhfcmVnZF9pbml0KHN0cnVjdCBhdGhfcmVndWxhdG9yeSAqcmVnKTtcbiBcdFx0XHRcdFx0IE5MODAyMTFfUlJGX05PX09GRE0pXG4gXG4gLyogV2UgYWxsb3cgSUJTUyBvbiB0aGVzZSBvbiBhIGNhc2UgYnkgY2FzZSBiYXNpcyBieSByZWd1bGF0b3J5IGRvbWFpbiAqL1xuLSNkZWZpbmUgQVRIXzVHSFpfNTE1MF81MzUwXHRSRUdfUlVMRSg1MTUwLTEwLCA1MzUwKzEwLCA4MCwgMCwgMzAsXFxcbisjZGVmaW5lIEFUSF81R0haXzUxNTBfNTM1MFx0UkVHX1JVTEUoNTE1MC0xMCwgNTI0MCsxMCwgODAsIDAsIDMwLCAwKSxcXFxuK1x0XHRcdFx0UkVHX1JVTEUoNTI2MC0xMCwgNTM1MCsxMCwgODAsIDAsIDMwLFxcXG4gXHRcdFx0XHRcdCBOTDgwMjExX1JSRl9OT19JUilcbiAjZGVmaW5lIEFUSF81R0haXzU0NzBfNTg1MFx0UkVHX1JVTEUoNTQ3MC0xMCwgNTg1MCsxMCwgODAsIDAsIDMwLFxcXG4gXHRcdFx0XHRcdCBOTDgwMjExX1JSRl9OT19JUilcbkBAIC02NCw3ICs2NSw3IEBAIHN0YXRpYyBpbnQgX19hdGhfcmVnZF9pbml0KHN0cnVjdCBhdGhfcmVndWxhdG9yeSAqcmVnKTtcbiAvKiBDYW4gYmUgdXNlZCBmb3I6XG4gICogMHg2MCwgMHg2MSwgMHg2MiAqL1xuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiBhdGhfd29ybGRfcmVnZG9tXzYwXzYxXzYyID0ge1xuLVx0Lm5fcmVnX3J1bGVzID0gNSxcbitcdC5uX3JlZ19ydWxlcyA9IDYsXG4gXHQuYWxwaGEyID0gIFwiOTlcIixcbiBcdC5yZWdfcnVsZXMgPSB7XG4gXHRcdEFUSF8yR0haX0FMTCxcbkBAIC03NCw3ICs3NSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiBhdGhfd29ybGRfcmVnZG9tXzYwXzYxXzYyID0ge1xuIFxuIC8qIENhbiBiZSB1c2VkIGJ5IDB4NjMgYW5kIDB4NjUgKi9cbiBzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW4gYXRoX3dvcmxkX3JlZ2RvbV82M182NSA9IHtcbi1cdC5uX3JlZ19ydWxlcyA9IDQsXG4rXHQubl9yZWdfcnVsZXMgPSA1LFxuIFx0LmFscGhhMiA9ICBcIjk5XCIsXG4gXHQucmVnX3J1bGVzID0ge1xuIFx0XHRBVEhfMkdIWl9DSDAxXzExLFxuQEAgLTg1LDcgKzg2LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluIGF0aF93b3JsZF9yZWdkb21fNjNfNjUgPSB7XG4gXG4gLyogQ2FuIGJlIHVzZWQgYnkgMHg2NCBvbmx5ICovXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluIGF0aF93b3JsZF9yZWdkb21fNjQgPSB7XG4tXHQubl9yZWdfcnVsZXMgPSAzLFxuK1x0Lm5fcmVnX3J1bGVzID0gNCxcbiBcdC5hbHBoYTIgPSAgXCI5OVwiLFxuIFx0LnJlZ19ydWxlcyA9IHtcbiBcdFx0QVRIXzJHSFpfQ0gwMV8xMSxcbkBAIC05NSw3ICs5Niw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiBhdGhfd29ybGRfcmVnZG9tXzY0ID0ge1xuIFxuIC8qIENhbiBiZSB1c2VkIGJ5IDB4NjYgYW5kIDB4NjkgKi9cbiBzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW4gYXRoX3dvcmxkX3JlZ2RvbV82Nl82OSA9IHtcbi1cdC5uX3JlZ19ydWxlcyA9IDMsXG4rXHQubl9yZWdfcnVsZXMgPSA0LFxuIFx0LmFscGhhMiA9ICBcIjk5XCIsXG4gXHQucmVnX3J1bGVzID0ge1xuIFx0XHRBVEhfMkdIWl9DSDAxXzExLFxuQEAgLTEwNSw3ICsxMDYsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW4gYXRoX3dvcmxkX3JlZ2RvbV82Nl82OSA9IHtcbiBcbiAvKiBDYW4gYmUgdXNlZCBieSAweDY3LCAweDY4LCAweDZBIGFuZCAweDZDICovXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluIGF0aF93b3JsZF9yZWdkb21fNjdfNjhfNkFfNkMgPSB7XG4tXHQubl9yZWdfcnVsZXMgPSA0LFxuK1x0Lm5fcmVnX3J1bGVzID0gNSxcbiBcdC5hbHBoYTIgPSAgXCI5OVwiLFxuIFx0LnJlZ19ydWxlcyA9IHtcbiBcdFx0QVRIXzJHSFpfQ0gwMV8xMSxcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDExOjQyOjQ2LjIyNDU3Nzc2OFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjk3MjMzNzU0MzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQb3RlbnRpYWwgSW1wYWN0IG9mIGEgV2lyZWxlc3MgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gdGhlIHBhdGNoIHRvdWNoZXMgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmNgLiBSaWdodCBhd2F5LCBteSBleHBlcnQgbWluZCBraWNrcyBpbi4gVGltZSB0byBkaWcgaW4gYW5kIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucy4gRmlyc3QsIGxldCdzIGVzdGFibGlzaCB0aGUgcm9sZSBvZiBgYXRoL3JlZ2QuY2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgaXQgKmRvZXMqIGluIHRoZSBncmFuZCBzY2hlbWUgb2YgdGhpbmdzIOKAkyB3aGF0J3MgaXRzIHB1cnBvc2Ugd2l0aGluIHRoZSBBdGhlcm9zIHdpcmVsZXNzIGRyaXZlciBlY29zeXN0ZW0/IElzIGl0IGludm9sdmVkIGluIGhhcmR3YXJlLXNwZWNpZmljIGNvbmZpZ3VyYXRpb25zLCBvciBkb2VzIGl0IGhhbmRsZSBtb3JlIGdlbmVyYWwgcmVndWxhdG9yeSBkb21haW4gYXNwZWN0cz9cblxuTmV4dCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlLiBXaGljaCBzcGVjaWZpYyBoYXJkd2FyZSBvciB2aXJ0dWFsIGRldmljZXMgcmVseSBvbiB0aGlzIGNvZGU/IEFyZSB3ZSB0YWxraW5nIGFib3V0IHNwZWNpZmljIFBDSSBkZXZpY2VzLCBtb3JlIHdpZGVseSB1c2VkIGhhcmR3YXJlLCBvciBldmVuIHNvbWV0aGluZyByZWFjaGFibGUgdGhyb3VnaCB2aXJ0dWFsIGludGVyZmFjZXMgbGlrZSBtYWM4MDIxMSBod3NpbSBvciBhIFVTQiB3aWZpIGRldmljZSBsaWtlIGF0aDlrX2h0YyBvciBvdGhlciBhdGhrIGRldmljZXM/IEtub3dpbmcgdGhpcyB3aWxsIHNpZ25pZmljYW50bHkgaW5mbHVlbmNlIHRoZSByaXNrIGFzc2Vzc21lbnQuIEl0IHdpbGwgYWZmZWN0IG15IGZ1enppbmcgc3RyYXRlZ3kgdG9vLiBJZiBpdCdzIHNvbWV0aGluZyBJIGNhbiBoaXQgZWFzaWx5IHRocm91Z2ggZnV6emluZywgaXQgZWxldmF0ZXMgdGhlIGNvbmNlcm4gbGV2ZWwsIGVzcGVjaWFsbHkgaWYgaXQncyBjb25uZWN0ZWQgdG8gcmVndWxhdGlvbi5cblxuSSdsbCBzdGFydCB3aXRoIHNvbWUgcXVpY2sgYGdyZXBgcyB3aXRoaW4gdGhlIGNvZGViYXNlIHRvIGlkZW50aWZ5IGFsbCB0aGUgY2FsbCBzaXRlcyBhbmQgcmVsYXRlZCBmdW5jdGlvbnMuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBzb2xpZCBwaWN0dXJlIG9mIGhvdyBgYXRoL3JlZ2QuY2AgaXMgaW50ZWdyYXRlZCBhbmQgdXNlZC4gVGhpcyBkYXRhIHdpbGwgZ3VpZGUgdGhlIG5leHQgbGV2ZWwgb2YgYW5hbHlzaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4MDksIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDksIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxMTo0Mjo1NS45NDc5NTU5NzRaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQyOTA0MjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXRoX3dvcmxkX3JlZ2RvbVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYz0yNj1zdGF0aWMgaW50IF9fYXRoX3JlZ2RfaW5pdChzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTY2LSAqIDB4NjAsIDB4NjEsIDB4NjIgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjY3OnN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiBhdGhfd29ybGRfcmVnZG9tXzYwXzYxXzYyID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNjgtXFx0Lm5fcmVnX3J1bGVzID0gNixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNzYtLyogQ2FuIGJlIHVzZWQgYnkgMHg2MyBhbmQgMHg2NSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6Nzc6c3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluIGF0aF93b3JsZF9yZWdkb21fNjNfNjUgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy03OC1cXHQubl9yZWdfcnVsZXMgPSA1LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy04Ny0vKiBDYW4gYmUgdXNlZCBieSAweDY0IG9ubHkgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjg4OnN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiBhdGhfd29ybGRfcmVnZG9tXzY0ID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtODktXFx0Lm5fcmVnX3J1bGVzID0gNCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtOTctLyogQ2FuIGJlIHVzZWQgYnkgMHg2NiBhbmQgMHg2OSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6OTg6c3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluIGF0aF93b3JsZF9yZWdkb21fNjZfNjkgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy05OS1cXHQubl9yZWdfcnVsZXMgPSA0LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0xMDctLyogQ2FuIGJlIHVzZWQgYnkgMHg2NywgMHg2OCwgMHg2QSBhbmQgMHg2QyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6MTA4OnN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiBhdGhfd29ybGRfcmVnZG9tXzY3XzY4XzZBXzZDID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMTA5LVxcdC5uX3JlZ19ydWxlcyA9IDUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jPTIxNz1zdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW4gKmF0aF9kZWZhdWx0X3dvcmxkX3JlZ2RvbWFpbih2b2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0yMTktXFx0LyogdGhpcyBpcyB0aGUgbW9zdCByZXN0cmljdGl2ZSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6MjIwOlxcdHJldHVybiBcXHUwMDI2YXRoX3dvcmxkX3JlZ2RvbV82NDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTIyMS19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jPTIyMz1zdGF0aWMgY29uc3Qgc3RydWN0XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzoyMjQ6aWVlZTgwMjExX3JlZ2RvbWFpbiAqYXRoX3dvcmxkX3JlZ2RvbWFpbihzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTIyNS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTIyOS1cXHRjYXNlIDB4NjI6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzoyMzA6XFx0XFx0cmV0dXJuIFxcdTAwMjZhdGhfd29ybGRfcmVnZG9tXzYwXzYxXzYyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjMxLVxcdGNhc2UgMHg2MzpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTIzMi1cXHRjYXNlIDB4NjU6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzoyMzM6XFx0XFx0cmV0dXJuIFxcdTAwMjZhdGhfd29ybGRfcmVnZG9tXzYzXzY1O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjM0LVxcdGNhc2UgMHg2NDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjIzNTpcXHRcXHRyZXR1cm4gXFx1MDAyNmF0aF93b3JsZF9yZWdkb21fNjQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0yMzYtXFx0Y2FzZSAweDY2OlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjM3LVxcdGNhc2UgMHg2OTpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjIzODpcXHRcXHRyZXR1cm4gXFx1MDAyNmF0aF93b3JsZF9yZWdkb21fNjZfNjk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0yMzktXFx0Y2FzZSAweDY3Olxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0yNDItXFx0Y2FzZSAweDZDOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6MjQzOlxcdFxcdHJldHVybiBcXHUwMDI2YXRoX3dvcmxkX3JlZ2RvbV82N182OF82QV82QztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTI0NC1cXHRkZWZhdWx0Olxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYz02MzY9YXRoX3JlZ2RfaW5pdF93aXBoeShzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNjUxLVxcdFxcdCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NjUyOlxcdFxcdHJlZ2QgPSBhdGhfd29ybGRfcmVnZG9tYWluKHJlZyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy02NTMtXFx0XFx0d2lwaHktXFx1MDAzZXJlZ3VsYXRvcnlfZmxhZ3MgfD0gUkVHVUxBVE9SWV9DT1VOVFJZX0lFX0ZPTExPV19QT1dFUjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTE6NDI6NTYuMDAyMjUxNzc5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjQxMTMxODA2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbnZlc3RpZ2F0aW5nIGF0aF9yZWdkIEluaXRpYWxpemF0aW9uKipcblxuT2theSwgc28gSSB3YW50IHRvIGZpZ3VyZSBvdXQgd2hpY2ggZHJpdmVycyB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYCBkaXJlY3RvcnkgYXJlIHVzaW5nIGVpdGhlciBgYXRoX3JlZ2RfaW5pdF93aXBoeWAgb3IsIG1vcmUgYnJvYWRseSwgYW55dGhpbmcgZGVmaW5lZCBpbiBgYXRoX3JlZ2QuY2AuIFRoaXMgaXNuJ3QgbmVjZXNzYXJpbHkgYSBjb21wbGV4IHF1ZXJ5LCBidXQgSSdtIHRoaW5raW5nIGFib3V0IHRoZSBtb3N0IGVmZmljaWVudCB3YXkgdG8gdHJhY2sgdGhpcyBkb3duLiBJJ2xsIHByb2JhYmx5IHN0YXJ0IHdpdGggYSBgZ3JlcGAgb3IgYGFja2AgY29tbWFuZCBhY3Jvc3MgdGhlIGNvZGViYXNlLCB0YXJnZXRpbmcgdGhvc2Ugc3BlY2lmaWMgZnVuY3Rpb24gbmFtZXMgb3IsIHBvdGVudGlhbGx5LCBqdXN0IHRoZSBmaWxlbmFtZSBgYXRoX3JlZ2QuY2AuIEkgbmVlZCB0byBlbnN1cmUgdGhlIHNlYXJjaCBpcyBzY29wZWQgY29ycmVjdGx5IHRvIGF2b2lkIG5vaXNlIGZyb20gaXJyZWxldmFudCBtYXRjaGVzIGluIGluY2x1ZGVzIG9yIGNvbW1lbnRzLiBUaGlua2luZyBhYm91dCBpdCwgc2luY2UgSSBhbSBhIHN5c3RlbXMgZXhwZXJ0LCBJIHNob3VsZCBwcm9iYWJseSBhbHNvIGNvbnNpZGVyIHRoYXQgSSBtaWdodCBuZWVkIHRvIGFjY291bnQgZm9yIGluZGlyZWN0IGNhbGxzIG9yIG1hY3JvcyB0aGF0IG1pZ2h0IGJlIGRlZmluZWQgd2hpY2ggbWlnaHQgY2FsbCB0aGlzLCByYXRoZXIgdGhhbiBqdXN0IGRpcmVjdCByZWZlcmVuY2VzLiBEZXBlbmRpbmcgb24gdGhlIHJlc3VsdHMsIEkgbWlnaHQgaGF2ZSB0byBnbyBkZWVwZXIsIHBlcmhhcHMgY3Jvc3MtcmVmZXJlbmNpbmcgdGhlIHJlc3VsdHMgd2l0aCBtb2R1bGUgZGVwZW5kZW5jaWVzIG9yIGV4YW1pbmluZyB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiB0byBpZGVudGlmeSBob3cgdGhlc2UgY29tcG9uZW50cyBhcmUgbGlua2VkIHRvZ2V0aGVyLiBUaGlzIGluaXRpYWwgc2VhcmNoIHNob3VsZCBnaXZlIG1lIGEgcHJldHR5IGdvb2Qgc3RhcnRpbmcgcG9pbnQsIGFuZCBJIHdpbGwgYmUgYWJsZSB0byBuYXJyb3cgaXQgZG93biBxdWlja2x5LiBJIHdpbGwgdGhlbiBiZSBhYmxlIHRvIHRyYWNlIGRvd24gd2hhdCB0aG9zZSBtb2R1bGVzIGFyZSBkb2luZyBpbiB0aGVpciBpbml0aWFsaXphdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1ODUsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxMTo0Mjo1OC40MTM1NzM0MDhaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTI4ODQ0NjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXRoX3JlZ2RfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jPTk5MDg9c3RhdGljIGludCBhdGgxMGtfbWFjX2dldF93cmRkX3JlZ3VsYXRvcnkoc3RydWN0IGF0aDEwayAqYXIsIHUxNiAqcmQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTk5NDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYzo5OTQ3OlxcdCpyZCA9IGF0aF9yZWdkX2ZpbmRfY291bnRyeV9ieV9uYW1lKGFscGhhMik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy05OTQ4LVxcdGlmICgqcmQgPT0gMHhmZmZmKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYz05OTcxPWludCBhdGgxMGtfbWFjX3JlZ2lzdGVyKHN0cnVjdCBhdGgxMGsgKmFyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy0xMDMwMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jOjEwMzAzOlxcdHJldCA9IGF0aF9yZWdkX2luaXQoXFx1MDAyNmFyLVxcdTAwM2VhdGhfY29tbW9uLnJlZ3VsYXRvcnksIGFyLVxcdTAwM2Vody1cXHUwMDNld2lwaHksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy0xMDMwNC1cXHRcXHRcXHQgICAgYXRoMTBrX3JlZ19ub3RpZmllcik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNWsvYmFzZS5jPTMwMjU9YXRoNWtfaW5pdChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9iYXNlLmMtMzEzNS1cXHRyZWd1bGF0b3J5LVxcdTAwM2VjdXJyZW50X3JkID0gYWgtXFx1MDAzZWFoX2NhcGFiaWxpdGllcy5jYXBfZWVwcm9tLmVlX3JlZ2RvbWFpbjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNWsvYmFzZS5jOjMxMzY6XFx0cmV0ID0gYXRoX3JlZ2RfaW5pdChyZWd1bGF0b3J5LCBody1cXHUwMDNld2lwaHksIGF0aDVrX3JlZ19ub3RpZmllcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDVrL2Jhc2UuYy0zMTM3LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9waHkuYz0yNzYxPWF0aDVrX2dldF9tYXhfY3RsX3Bvd2VyKHN0cnVjdCBhdGg1a19odyAqYWgsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNWsvcGh5LmMtMjc3NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNWsvcGh5LmM6Mjc3NTpcXHRjdGxfbW9kZSA9IGF0aF9yZWdkX2dldF9iYW5kX2N0bChyZWd1bGF0b3J5LCBjaGFubmVsLVxcdTAwM2ViYW5kKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNWsvcGh5LmMtMjc3Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYz04Mjg9c3RhdGljIGludCBhdGg5a19pbml0X2RldmljZShzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmMtODUxLVxcdC8qIEluaXRpYWxpemUgcmVndWxhdG9yeSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYzo4NTI6XFx0ZXJyb3IgPSBhdGhfcmVnZF9pbml0KFxcdTAwMjZjb21tb24tXFx1MDAzZXJlZ3VsYXRvcnksIHByaXYtXFx1MDAzZWh3LVxcdTAwM2V3aXBoeSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmMtODUzLVxcdFxcdFxcdCAgICAgIGF0aDlrX3JlZ19ub3RpZmllcik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHcuYz0xMTc3PXUzMiBhdGg5a19yZWdkX2dldF9jdGwoc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcsIHN0cnVjdCBhdGg5a19jaGFubmVsICpjaGFuKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9ody5jLTExNzgte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9ody5jOjExNzk6XFx0dTMyIGN0bCA9IGF0aF9yZWdkX2dldF9iYW5kX2N0bChyZWcsIGNoYW4tXFx1MDAzZWNoYW4tXFx1MDAzZWJhbmQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9ody5jLTExODAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jPTEwMDQ9aW50IGF0aDlrX2luaXRfZGV2aWNlKHUxNiBkZXZpZCwgc3RydWN0IGF0aF9zb2Z0YyAqc2MsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jLTEwMjItXFx0LyogSW5pdGlhbGl6ZSByZWd1bGF0b3J5ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYzoxMDIzOlxcdGVycm9yID0gYXRoX3JlZ2RfaW5pdChcXHUwMDI2Y29tbW9uLVxcdTAwM2VyZWd1bGF0b3J5LCBzYy1cXHUwMDNlaHctXFx1MDAzZXdpcGh5LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmMtMTAyNC1cXHRcXHRcXHQgICAgICBhdGg5a19yZWdfbm90aWZpZXIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL21haW4uYz0xOTUzPWludCBjYXJsOTE3MF9yZWdpc3RlcihzdHJ1Y3QgYXI5MTcwICphcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9jYXJsOTE3MC9tYWluLmMtMTk3MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvbWFpbi5jOjE5NzE6XFx0ZXJyID0gYXRoX3JlZ2RfaW5pdChyZWd1bGF0b3J5LCBhci1cXHUwMDNlaHctXFx1MDAzZXdpcGh5LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9jYXJsOTE3MC9tYWluLmMtMTk3Mi1cXHRcXHRcXHQgICAgY2FybDkxNzBfcmVnX25vdGlmaWVyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9jYXJsOTE3MC9waHkuYz0xMjkxPXN0YXRpYyB2b2lkIGNhcmw5MTcwX2NhbGNfY3RsKHN0cnVjdCBhcjkxNzAgKmFyLCB1MzIgZnJlcSwgZW51bSBjYXJsOTE3MF9idyBidylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9jYXJsOTE3MC9waHkuYy0xMzI2LVxcdCAqIGhwcmVnLmM6OnpmSHBHZXRSZWd1bGF0b3J5RG9tYWluKCkgYW5kXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL3BoeS5jOjEzMjc6XFx0ICogYXRoL3JlZ2QuYzo6YXRoX3JlZ2RfZ2V0X2JhbmRfY3RsKCkgLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9jYXJsOTE3MC9waHkuYy0xMzI4LVxcdCAqIGUuZy4gZm9yIEZDQzNfV09STEQgdGhlIE9UVVMgcHJvY2VkdXJlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvcGh5LmMtMTMzMS1cXHQgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvcGh5LmM6MTMzMjpcXHRjdGxfZ3JwID0gYXRoX3JlZ2RfZ2V0X2JhbmRfY3RsKFxcdTAwMjZhci1cXHUwMDNlY29tbW9uLnJlZ3VsYXRvcnksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL3BoeS5jLTEzMzMtXFx0XFx0XFx0XFx0XFx0YXItXFx1MDAzZWh3LVxcdTAwM2Vjb25mLmNoYW5kZWYuY2hhbi1cXHUwMDNlYmFuZCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTI1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6MjY6c3RhdGljIGludCBfX2F0aF9yZWdkX2luaXQoc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjctXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jPTE5OT1zdGF0aWMgaW5saW5lIGJvb2wgaXNfd3dyX3NrdSh1MTYgcmVnZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjA1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6MjA2OnN0YXRpYyB1MTYgYXRoX3JlZ2RfZ2V0X2VlcHJvbVJEKHN0cnVjdCBhdGhfcmVndWxhdG9yeSAqcmVnKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjA3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM9MjExPWJvb2wgYXRoX2lzX3dvcmxkX3JlZ2Qoc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0yMTIte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6MjEzOlxcdHJldHVybiBpc193d3Jfc2t1KGF0aF9yZWdkX2dldF9lZXByb21SRChyZWcpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTIxNC19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jPTQzNz1zdGF0aWMgdm9pZCBhdGhfcmVnX2FwcGx5X3dvcmxkX2ZsYWdzKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTQ1OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjQ1OTp1MTYgYXRoX3JlZ2RfZmluZF9jb3VudHJ5X2J5X25hbWUoY2hhciAqYWxwaGEyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNDYwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNDY5LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjQ3MDpFWFBPUlRfU1lNQk9MKGF0aF9yZWdkX2ZpbmRfY291bnRyeV9ieV9uYW1lKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTQ3MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jPTQ3Mj1zdGF0aWMgaW50IF9fYXRoX3JlZ19keW5fY291bnRyeShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy00ODEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo0ODI6XFx0Y291bnRyeV9jb2RlID0gYXRoX3JlZ2RfZmluZF9jb3VudHJ5X2J5X25hbWUocmVxdWVzdC1cXHUwMDNlYWxwaGEyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTQ4My1cXHRpZiAoY291bnRyeV9jb2RlID09ICh1MTYpIC0xKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy00ODgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo0ODk6XFx0X19hdGhfcmVnZF9pbml0KHJlZyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy00OTAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jPTU1MD1FWFBPUlRfU1lNQk9MKGF0aF9yZWdfbm90aWZpZXJfYXBwbHkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNTUxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NTUyOnN0YXRpYyBib29sIGF0aF9yZWdkX2lzX2VlcHJvbV92YWxpZChzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTU1My17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo1NTQ6XFx0dTE2IHJkID0gYXRoX3JlZ2RfZ2V0X2VlcHJvbVJEKHJlZyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy01NTUtXFx0aW50IGk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jPTU4MT1zdGF0aWMgc3RydWN0IGNvdW50cnlfY29kZV90b19lbnVtX3JkKlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NTgyOmF0aF9yZWdkX2ZpbmRfY291bnRyeSh1MTYgY291bnRyeUNvZGUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy01ODMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYz01OTQ9c3RhdGljIHN0cnVjdCBjb3VudHJ5X2NvZGVfdG9fZW51bV9yZCpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjU5NTphdGhfcmVnZF9maW5kX2NvdW50cnlfYnlfcmQoaW50IHJlZ2RtbilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTU5Ni17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTYwNi0vKiBSZXR1cm5zIHRoZSBtYXAgb2YgdGhlIEVFUFJPTSBzZXQgUkQgdG8gYSBjb3VudHJ5IGNvZGUgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjYwNzpzdGF0aWMgdTE2IGF0aF9yZWdkX2dldF9kZWZhdWx0X2NvdW50cnkodTE2IHJkKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNjA4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNjEyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NjEzOlxcdFxcdGNvdW50cnkgPSBhdGhfcmVnZF9maW5kX2NvdW50cnkoY2MpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNjE0LVxcdFxcdGlmIChjb3VudHJ5ICE9IE5VTEwpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jPTYzNT1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo2MzY6YXRoX3JlZ2RfaW5pdF93aXBoeShzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTYzNy1cXHRcXHQgICAgc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNjc1LSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6Njc2OnN0YXRpYyB2b2lkIGF0aF9yZWdkX3Nhbml0aXplKHN0cnVjdCBhdGhfcmVndWxhdG9yeSAqcmVnKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNjc3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNjgzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6Njg0OnN0YXRpYyBpbnQgX19hdGhfcmVnZF9pbml0KHN0cnVjdCBhdGhfcmVndWxhdG9yeSAqcmVnKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNjg1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNjkxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NjkyOlxcdGF0aF9yZWdkX3Nhbml0aXplKHJlZyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy02OTMtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTY5NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjY5NjpcXHRpZiAoIWF0aF9yZWdkX2lzX2VlcHJvbV92YWxpZChyZWcpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy02OTctXFx0XFx0cHJfZXJyKFxcXCJJbnZhbGlkIEVFUFJPTSBjb250ZW50c1xcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTcwMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjcwMTpcXHRyZWdkbW4gPSBhdGhfcmVnZF9nZXRfZWVwcm9tUkQocmVnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjcwMjpcXHRyZWctXFx1MDAzZWNvdW50cnlfY29kZSA9IGF0aF9yZWdkX2dldF9kZWZhdWx0X2NvdW50cnkocmVnZG1uKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTcwMy1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNzE1LVxcdFxcdCAgICAgICBcXFwibWFwIHNlYXJjaFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo3MTY6XFx0XFx0Y291bnRyeSA9IGF0aF9yZWdkX2ZpbmRfY291bnRyeShyZWctXFx1MDAzZWNvdW50cnlfY29kZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy03MTctXFx0XFx0aWYgKGNvdW50cnkgPT0gTlVMTCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy03MzktXFx0aWYgKCFjb3VudHJ5KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NzQwOlxcdFxcdGNvdW50cnkgPSBhdGhfcmVnZF9maW5kX2NvdW50cnlfYnlfcmQocmVnZG1uKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTc0MS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM9NzU4PWludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NzU5OmF0aF9yZWdkX2luaXQoc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy03NjAtXFx0ICAgICAgc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNzY3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NzY4OlxcdHIgPSBfX2F0aF9yZWdkX2luaXQocmVnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTc2OS1cXHRpZiAocilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNzc1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6Nzc2OlxcdGF0aF9yZWdkX2luaXRfd2lwaHkocmVnLCB3aXBoeSwgcmVnX25vdGlmaWVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTc3Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNzc5LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjc4MDpFWFBPUlRfU1lNQk9MKGF0aF9yZWdkX2luaXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNzgxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NzgyOnUzMiBhdGhfcmVnZF9nZXRfYmFuZF9jdGwoc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy03ODMtXFx0XFx0XFx0ICBlbnVtIG5sODAyMTFfYmFuZCBiYW5kKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy03ODYtXFx0ICAgIChyZWctXFx1MDAzZWNvdW50cnlfY29kZSA9PSBDVFJZX0RFRkFVTFQgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjc4NzpcXHQgICAgIGlzX3d3cl9za3UoYXRoX3JlZ2RfZ2V0X2VlcHJvbVJEKHJlZykpKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNzg4LVxcdFxcdHJldHVybiBTRF9OT19DVEw7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTc5MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjc5MTpcXHRpZiAoYXRoX3JlZ2RfZ2V0X2VlcHJvbVJEKHJlZykgPT0gQ1RSWV9ERUZBVUxUKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy03OTItXFx0XFx0c3dpdGNoIChyZWctXFx1MDAzZXJlZ2lvbikge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy04MTItfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6ODEzOkVYUE9SVF9TWU1CT0woYXRoX3JlZ2RfZ2V0X2JhbmRfY3RsKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmg9MjYyPWJvb2wgYXRoX2lzXzQ5Z2h6X2FsbG93ZWQodTE2IHJlZG9tYWluKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5oOjI2Mzp1MTYgYXRoX3JlZ2RfZmluZF9jb3VudHJ5X2J5X25hbWUoY2hhciAqYWxwaGEyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5oOjI2NDppbnQgYXRoX3JlZ2RfaW5pdChzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZywgc3RydWN0IHdpcGh5ICp3aXBoeSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5oLTI2NS1cXHRcXHQgIHZvaWQgKCpyZWdfbm90aWZpZXIpKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuaC0yNjYtXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCByZWd1bGF0b3J5X3JlcXVlc3QgKnJlcXVlc3QpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5oOjI2Nzp1MzIgYXRoX3JlZ2RfZ2V0X2JhbmRfY3RsKHN0cnVjdCBhdGhfcmVndWxhdG9yeSAqcmVnLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmgtMjY4LVxcdFxcdFxcdCAgZW51bSBubDgwMjExX2JhbmQgYmFuZCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDExOjQyOjU4LjQ2NjQ2MjQ1M1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIzNDYyOTk4OTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFVTQiBXaXJlbGVzcyBEcml2ZXIgSW5pdGlhbGl6YXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBpbnRvIHRoZXNlIFVTQiB3aXJlbGVzcyBkcml2ZXJzLCBzcGVjaWZpY2FsbHkgYGF0aDlrX2h0Y2AgYW5kIGBjYXJsOTE3MGAuIEl0J3MgcHJldHR5IGNsZWFyIHRoZXkgYXJlIFVTQiBkcml2ZXJzLCBhbmQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXkgYmVoYXZlIGluIGEgVVNCIGNvbnRleHQuIEtub3dpbmcgdGhlIGlucyBhbmQgb3V0cyBvZiBVU0IgZGV2aWNlIGVtdWxhdGlvbiBpcyBrZXksIHNvIEknbGwgYmUgZm9jdXNlZCBvbiBob3cgdGhlc2UgZHJpdmVycyBhcmUgdHJlYXRlZCBpbiBlbnZpcm9ubWVudHMgd2hlcmUgVVNCIFJhdyBHYWRnZXQgYW5kIHN5emthbGxlciBmdXp6aW5nIGFyZSBhdCBwbGF5IHdpdGhpbiBRRU1VIG9yIG90aGVyIHZpcnR1YWxpemVkIHNldHVwcy4gSSBuZWVkIHRvIG5haWwgZG93biBleGFjdGx5IGhvdyB0aGVzZSBkcml2ZXJzIGFyZSBwcm9iZWQgYW5kIGluaXRpYWxpemVkIHRocm91Z2ggdGhlIFVTQiBpbnRlcmZhY2UuIFRoYXQncyB0aGUgY29yZSBxdWVzdGlvbiBoZXJlLiBUbyBnZXQgYSBoYW5kbGUgb24gaXQsIEknbGwgbmVlZCB0byBkaWcgaW50byB0aGUgcmVsZXZhbnQgS2NvbmZpZyBvcHRpb25zIGZvciBgYXRoOWtfaHRjYCwgYGNhcmw5MTcwYCBhbmQgYWxzbyB0aGUgYGF0aC9yZWdkLmNgIGZpbGUgd2hpY2ggaXMgbGlrZWx5IHRvIGhvbGQgaW1wb3J0YW50IHJlZ3VsYXRvcnkgZG9tYWluIGluZm9ybWF0aW9uIHJlbGF0ZWQgdG8gdGhlc2UgZHJpdmVycy4gVW5kZXJzdGFuZGluZyB0aGUgY29uZmlndXJhdGlvbiBhbmQgaW5pdGlhbGl6YXRpb24gZmxvdyBpcyBlc3NlbnRpYWwgZm9yIGZ1cnRoZXIgYW5hbHlzaXMgb3IgdGVzdGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAxODYsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTE6NDM6MDAuODEyNzY1MTc2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzcyMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogSVNDXFxuICAgMjpcXHRjb25maWcgQVRIX0NPTU1PTlxcbiAgIDM6XFx0XFx0dHJpc3RhdGVcXG4gICA0OlxcdFxcbiAgIDU6XFx0Y29uZmlnIFdMQU5fVkVORE9SX0FUSFxcbiAgIDY6XFx0XFx0Ym9vbCBcXFwiQXRoZXJvcy9RdWFsY29tbSBkZXZpY2VzXFxcIlxcbiAgIDc6XFx0XFx0ZGVmYXVsdCB5XFxuICAgODpcXHRcXHRoZWxwXFxuICAgOTpcXHRcXHQgIElmIHlvdSBoYXZlIGEgd2lyZWxlc3MgY2FyZCBiZWxvbmdpbmcgdG8gdGhpcyBjbGFzcywgc2F5IFkuXFxuICAxMDpcXHRcXG4gIDExOlxcdFxcdCAgTm90ZSB0aGF0IHRoZSBhbnN3ZXIgdG8gdGhpcyBxdWVzdGlvbiBkb2Vzbid0IGRpcmVjdGx5IGFmZmVjdCB0aGVcXG4gIDEyOlxcdFxcdCAga2VybmVsOiBzYXlpbmcgTiB3aWxsIGp1c3QgY2F1c2UgdGhlIGNvbmZpZ3VyYXRvciB0byBza2lwIGFsbCB0aGVcXG4gIDEzOlxcdFxcdCAgcXVlc3Rpb25zIGFib3V0IHRoZXNlIGNhcmRzLiBJZiB5b3Ugc2F5IFksIHlvdSB3aWxsIGJlIGFza2VkIGZvclxcbiAgMTQ6XFx0XFx0ICB5b3VyIHNwZWNpZmljIGNhcmQgaW4gdGhlIGZvbGxvd2luZyBxdWVzdGlvbnMuXFxuICAxNTpcXHRcXG4gIDE2OlxcdFxcdCAgRm9yIG1vcmUgaW5mb3JtYXRpb24gYW5kIGRvY3VtZW50YXRpb24gb24gdGhpcyBtb2R1bGUgeW91IGNhbiB2aXNpdDpcXG4gIDE3OlxcdFxcbiAgMTg6XFx0XFx0ICBodHRwczovL3dpcmVsZXNzLndpa2kua2VybmVsLm9yZy9lbi91c2Vycy9Ecml2ZXJzL2F0aFxcbiAgMTk6XFx0XFxuICAyMDpcXHRcXHQgIEZvciBpbmZvcm1hdGlvbiBvbiBhbGwgQXRoZXJvcyB3aXJlbGVzcyBkcml2ZXJzIHZpc2l0OlxcbiAgMjE6XFx0XFxuICAyMjpcXHRcXHQgIGh0dHBzOi8vd2lyZWxlc3Mud2lraS5rZXJuZWwub3JnL2VuL3VzZXJzL0RyaXZlcnMvQXRoZXJvc1xcbiAgMjM6XFx0XFxuICAyNDpcXHRpZiBXTEFOX1ZFTkRPUl9BVEhcXG4gIDI1OlxcdFxcbiAgMjY6XFx0Y29uZmlnIEFUSF9ERUJVR1xcbiAgMjc6XFx0XFx0Ym9vbCBcXFwiQXRoZXJvcyB3aXJlbGVzcyBkZWJ1Z2dpbmdcXFwiXFxuICAyODpcXHRcXHRoZWxwXFxuICAyOTpcXHRcXHQgIFNheSBZLCBpZiB5b3Ugd2FudCB0byBkZWJ1ZyBhdGhlcm9zIHdpcmVsZXNzIGRyaXZlcnMuXFxuICAzMDpcXHRcXHQgIFJpZ2h0IG5vdyBvbmx5IGF0aDlrIG1ha2VzIHVzZSBvZiB0aGlzLlxcbiAgMzE6XFx0XFxuICAzMjpcXHRjb25maWcgQVRIX1RSQUNFUE9JTlRTXFxuICAzMzpcXHRcXHRib29sIFxcXCJBdGhlcm9zIHdpcmVsZXNzIHRyYWNpbmdcXFwiXFxuICAzNDpcXHRcXHRkZXBlbmRzIG9uIEFUSF9ERUJVR1xcbiAgMzU6XFx0XFx0ZGVwZW5kcyBvbiBFVkVOVF9UUkFDSU5HXFxuICAzNjpcXHRcXHRoZWxwXFxuICAzNzpcXHRcXHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgdHJhY2Vwb2ludHMgZm9yIGF0aGVyb3Mgd2lyZWxlc3MgZHJpdmVycy5cXG4gIDM4OlxcdFxcdCAgQ3VycmVudGx5LCBhdGg5ayBtYWtlcyB1c2Ugb2YgdGhpcyBmYWNpbGl0eS5cXG4gIDM5OlxcdFxcbiAgNDA6XFx0Y29uZmlnIEFUSF9SRUdfRFlOQU1JQ19VU0VSX1JFR19ISU5UU1xcbiAgNDE6XFx0XFx0Ym9vbCBcXFwiQXRoZXJvcyBkeW5hbWljIHVzZXIgcmVndWxhdG9yeSBoaW50c1xcXCJcXG4gIDQyOlxcdFxcdGRlcGVuZHMgb24gQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXFxuICA0MzpcXHRcXHRkZWZhdWx0IG5cXG4gIDQ0OlxcdFxcdGhlbHBcXG4gIDQ1OlxcdFxcdCAgU2F5IE4uIFRoaXMgc2hvdWxkIG9ubHkgYmUgZW5hYmxlZCBpbiBjb3VudHJpZXMgd2hlcmVcXG4gIDQ2OlxcdFxcdCAgdGhpcyBmZWF0dXJlIGlzIGV4cGxpY2l0bHkgYWxsb3dlZCBhbmQgb25seSBvbiBjYXJkcyB0aGF0XFxuICA0NzpcXHRcXHQgIHNwZWNpZmljYWxseSBoYXZlIGJlZW4gdGVzdGVkIGZvciB0aGlzLlxcbiAgNDg6XFx0XFxuICA0OTpcXHRjb25maWcgQVRIX1JFR19EWU5BTUlDX1VTRVJfQ0VSVF9URVNUSU5HXFxuICA1MDpcXHRcXHRib29sIFxcXCJBdGhlcm9zIGR5bmFtaWMgdXNlciByZWd1bGF0b3J5IHRlc3RpbmdcXFwiXFxuICA1MTpcXHRcXHRkZXBlbmRzIG9uIEFUSF9SRUdfRFlOQU1JQ19VU0VSX1JFR19ISU5UUyBcXHUwMDI2XFx1MDAyNiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcXG4gIDUyOlxcdFxcdGRlZmF1bHQgblxcbiAgNTM6XFx0XFx0aGVscFxcbiAgNTQ6XFx0XFx0ICBTYXkgTi4gVGhpcyBzaG91bGQgb25seSBiZSBlbmFibGVkIG9uIHN5c3RlbXNcXG4gIDU1OlxcdFxcdCAgdW5kZXJnb2luZyBjZXJ0aWZpY2F0aW9uIHRlc3RpbmcuXFxuICA1NjpcXHRcXG4gIDU3OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDVrL0tjb25maWdcXFwiXFxuICA1ODpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnXFxcIlxcbiAgNTk6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvS2NvbmZpZ1xcXCJcXG4gIDYwOlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnXFxcIlxcbiAgNjE6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXI1NTIzL0tjb25maWdcXFwiXFxuICA2MjpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL0tjb25maWdcXFwiXFxuICA2MzpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZ1xcXCJcXG4gIDY0OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvS2NvbmZpZ1xcXCJcXG4gIDY1OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnXFxcIlxcbiAgNjY6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWdcXFwiXFxuICA2NzpcXHRcXG4gIDY4OlxcdGVuZGlmXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDExOjQzOjAwLjgxMjg0MzgwNloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE4NzcyOTQ5NDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSB0aGUgb25lIHRoaW5raW5nIGl0OlxuXG4qKkRpdmluZyBpbnRvIHRoZSBBdGhlcm9zIERyaXZlciBNYWtlZmlsZSoqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IHRvIHRoZSBoZWFydCBvZiB0aGlzIHdpcmVsZXNzIGRyaXZlci4gTXkgZ3V0IHRlbGxzIG1lIHRoYXQgYW55IG1vZGlmaWNhdGlvbnMgb3IgZGVlcGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhpcyBhdGhlcm9zIGRyaXZlciBzdGFydHMgd2l0aCBpdHMgYnVpbGQgY29uZmlndXJhdGlvbi4gTGV0J3Mgc2VlLi4uIEknbGwganVtcCByaWdodCBpbnRvIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL01ha2VmaWxlYC4gVGhpcyBpcyB3aGVyZSB0aGUgbWFnaWMgaGFwcGVucyDigJMgd2hlcmUgYWxsIHRoZSBwaWVjZXMgZ2V0IGdsdWVkIHRvZ2V0aGVyLCB3aGVyZSB0aGUgZGVwZW5kZW5jaWVzIGFyZSBkZWZpbmVkLCBhbmQgaG93IHRoZSBkcml2ZXIgdWx0aW1hdGVseSBnZXRzIGNvbXBpbGVkLiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc3RydWN0dXJlOiB3aGF0IHRhcmdldHMgYXJlIGRlZmluZWQsIHdoaWNoIHNvdXJjZSBmaWxlcyBhcmUgaW5jbHVkZWQsIGFuZCBob3cgdGhlIG92ZXJhbGwgYnVpbGQgcHJvY2VzcyBpcyBvcmNoZXN0cmF0ZWQuIEhvcGVmdWxseSwgdGhpcyBNYWtlZmlsZSBpcyB3ZWxsLXN0cnVjdHVyZWQgYW5kIGNvbW1lbnRlZC4gSSdtIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiBhbnkgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gYmFzZWQgb24ga2VybmVsIHZlcnNpb25zLCBoYXJkd2FyZSBwbGF0Zm9ybXMsIG9yIGZlYXR1cmUgZmxhZ3MuIEkgZXhwZWN0IHRvIGJlIGFibGUgdG8gdW5kZXJzdGFuZCB0aGUgZGlmZmVyZW50IGF0aCBkcml2ZXIgdmVyc2lvbnMgaWYgdGhleSBleGlzdCwgYW5kIHRoZSBtb2R1bGUgYXJjaGl0ZWN0dXJlLiBUaGF0IHNob3VsZCBwcm92aWRlIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3Igd2hhdGV2ZXIgSSdtIHRyb3VibGVzaG9vdGluZyBvciBpbnZlc3RpZ2F0aW5nLiBMZXQncyBnZXQgdG8gaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNTQ5LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxMTo0MzowMi42OTAxNDExODRaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzgwOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL01ha2VmaWxlXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogSVNDXFxuICAgMjpcXHRvYmotJChDT05GSUdfQVRINUspXFx0XFx0Kz0gYXRoNWsvXFxuICAgMzpcXHRvYmotJChDT05GSUdfQVRIOUtfSFcpXFx0XFx0Kz0gYXRoOWsvXFxuICAgNDpcXHRvYmotJChDT05GSUdfQ0FSTDkxNzApXFx0XFx0Kz0gY2FybDkxNzAvXFxuICAgNTpcXHRvYmotJChDT05GSUdfQVRINktMKVxcdFxcdCs9IGF0aDZrbC9cXG4gICA2OlxcdG9iai0kKENPTkZJR19BUjU1MjMpXFx0XFx0Kz0gYXI1NTIzL1xcbiAgIDc6XFx0b2JqLSQoQ09ORklHX1dJTDYyMTApXFx0XFx0Kz0gd2lsNjIxMC9cXG4gICA4OlxcdG9iai0kKENPTkZJR19BVEgxMEspXFx0XFx0Kz0gYXRoMTBrL1xcbiAgIDk6XFx0b2JqLSQoQ09ORklHX1dDTjM2WFgpXFx0XFx0Kz0gd2NuMzZ4eC9cXG4gIDEwOlxcdG9iai0kKENPTkZJR19BVEgxMUspXFx0XFx0Kz0gYXRoMTFrL1xcbiAgMTE6XFx0b2JqLSQoQ09ORklHX0FUSDEySylcXHRcXHQrPSBhdGgxMmsvXFxuICAxMjpcXHRcXG4gIDEzOlxcdG9iai0kKENPTkZJR19BVEhfQ09NTU9OKVxcdCs9IGF0aC5vXFxuICAxNDpcXHRcXG4gIDE1OlxcdGF0aC1vYmpzIDo9XFx0bWFpbi5vIFxcXFxcXG4gIDE2OlxcdFxcdFxcdHJlZ2QubyBcXFxcXFxuICAxNzpcXHRcXHRcXHRody5vIFxcXFxcXG4gIDE4OlxcdFxcdFxcdGtleS5vIFxcXFxcXG4gIDE5OlxcdFxcdFxcdGRmc19wYXR0ZXJuX2RldGVjdG9yLm8gXFxcXFxcbiAgMjA6XFx0XFx0XFx0ZGZzX3ByaV9kZXRlY3Rvci5vXFxuICAyMTpcXHRcXG4gIDIyOlxcdGF0aC0kKENPTkZJR19BVEhfREVCVUcpICs9IGRlYnVnLm9cXG4gIDIzOlxcdGF0aC0kKENPTkZJR19BVEhfVFJBQ0VQT0lOVFMpICs9IHRyYWNlLm9cXG4gIDI0OlxcdFxcbiAgMjU6XFx0Q0ZMQUdTX3RyYWNlLm8gOj0gLUkkKHNyYylcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTE6NDM6MDIuNjkwMjIxMTY0WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIwODQ3NDE0MDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBCdWlsZCBEZXBlbmRlbmN5IENoYWluKipcblxuUmlnaHQsIHNvIEkgbmVlZCB0byB0cmFjZSB0aGlzIGRlcGVuZGVuY3kuIE15IHN0YXJ0aW5nIHBvaW50IGlzIHRoYXQgYENPTkZJR19BVEhfQ09NTU9OYCBsZWFkcyB0byB0aGUgY29tcGlsYXRpb24gb2YgYGF0aC5vYCwgYW5kIGNydWNpYWxseSwgdGhhdCBpbmNsdWRlcyBgcmVnZC5vYC4gVGhhdCdzIHRoZSBjb3JlIHJlbGF0aW9uc2hpcCBJJ20gdHJ5aW5nIHRvIHVuZGVyc3RhbmQg4oCTIGhvdyBgcmVnZC5vYCBnZXRzIGJ1aWx0IGludG8gdGhlIGltYWdlLiBOb3csIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgYWN0dWFsbHkgKnNlbGVjdHMqIG9yICplbmFibGVzKiBgQVRIX0NPTU1PTmAgaW4gdGhlIGZpcnN0IHBsYWNlLiBNeSBpbW1lZGlhdGUgYXBwcm9hY2ggd2lsbCBiZSB0byBsZXZlcmFnZSB0aGUgS2NvbmZpZyBmaWxlcywgSSBuZWVkIHRvIHVzZSBgZ3JlcGAgdG8gaHVudCBmb3IgaW5zdGFuY2VzIG9mIGBBVEhfQ09NTU9OYCBhbmQgc2VlIHdoZXJlIGl0IHNob3dzIHVwIGFzIGEgZGVwZW5kZW5jeS4gSSdsbCBzZWFyY2ggdG8gZGV0ZXJtaW5lIHdoYXQgb3RoZXIgY29uZmlncyBhcmUgaW52b2x2ZWQgaW4gZW5hYmxpbmcgYEFUSF9DT01NT05gLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjI0OCwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTE6NDM6MDQuNzc0OTY2Mzg4WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODcxMTI1NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJBVEhfQ09NTU9OXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IElTQ1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9LY29uZmlnOjI6Y29uZmlnIEFUSF9DT01NT05cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvS2NvbmZpZy0zLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvTWFrZWZpbGU9MTE9b2JqLSQoQ09ORklHX0FUSDEySylcXHRcXHQrPSBhdGgxMmsvXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL01ha2VmaWxlLTEyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9NYWtlZmlsZToxMzpvYmotJChDT05GSUdfQVRIX0NPTU1PTilcXHQrPSBhdGgub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9NYWtlZmlsZS0xNC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hcjU1MjMvS2NvbmZpZz0yPWNvbmZpZyBBUjU1MjNcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hcjU1MjMvS2NvbmZpZy00LVxcdGRlcGVuZHMgb24gTUFDODAyMTEgXFx1MDAyNlxcdTAwMjYgVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2FyNTUyMy9LY29uZmlnOjU6XFx0c2VsZWN0IEFUSF9DT01NT05cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXI1NTIzL0tjb25maWctNi1cXHRzZWxlY3QgRldfTE9BREVSXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWc9Mj1jb25maWcgQVRIMTBLXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctNC1cXHRkZXBlbmRzIG9uIE1BQzgwMjExIFxcdTAwMjZcXHUwMDI2IEhBU19ETUFcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWc6NTpcXHRzZWxlY3QgQVRIX0NPTU1PTlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy02LVxcdHNlbGVjdCBDUkMzMlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnPTI9Y29uZmlnIEFUSDExS1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTQtXFx0ZGVwZW5kcyBvbiBNQUM4MDIxMSBcXHUwMDI2XFx1MDAyNiBIQVNfRE1BXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjU6XFx0c2VsZWN0IEFUSF9DT01NT05cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctNi1cXHRzZWxlY3QgUUNPTV9RTUlfSEVMUEVSU1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDVrL0tjb25maWc9Mj1jb25maWcgQVRINUtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9LY29uZmlnLTQtXFx0ZGVwZW5kcyBvbiAoUENJIHx8IEFUSDI1KSBcXHUwMDI2XFx1MDAyNiBNQUM4MDIxMVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9LY29uZmlnOjU6XFx0c2VsZWN0IEFUSF9DT01NT05cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNWsvS2NvbmZpZy02LVxcdHNlbGVjdCBNQUM4MDIxMV9MRURTIGlmIExFRFNfQ0xBU1M9eSB8fCBMRURTX0NMQVNTPU1BQzgwMjExXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZz00PWNvbmZpZyBBVEg5S19DT01NT05cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy01LVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6NjpcXHRzZWxlY3QgQVRIX0NPTU1PTlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTctY29uZmlnIEFUSDlLX0NPTU1PTl9ERUJVR1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL0tjb25maWc9Mj1jb25maWcgQ0FSTDkxNzBcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9jYXJsOTE3MC9LY29uZmlnLTQtXFx0ZGVwZW5kcyBvbiBVU0IgXFx1MDAyNlxcdTAwMjYgTUFDODAyMTFcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvS2NvbmZpZzo1OlxcdHNlbGVjdCBBVEhfQ09NTU9OXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL0tjb25maWctNi1cXHRzZWxlY3QgRldfTE9BREVSXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDExOjQzOjA0LjgzMzY4MjgyM1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMTY3MjQ0MjA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgVVNCIERyaXZlciBSZWd1bGF0b3J5IERvbWFpbiBJbml0aWFsaXphdGlvbioqXG5cbk9rYXksIGxldCdzIGRpdmUgaW4uIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIFVTQiBkcml2ZXJzIGFyZSB1c2luZyB0aGUgYGF0aF9yZWdkX2luaXRgIGZ1bmN0aW9uIG9yIHRoZSBgYXRoX3dvcmxkX3JlZ2RvbV8qYCBzeW1ib2xzIOKAkyB0aG9zZSBhcmUga2V5IGluZGljYXRvcnMgb2YgaG93IHJlZ3VsYXRvcnkgZG9tYWlucyBhcmUgYmVpbmcgaGFuZGxlZC4gTXkgaW5pdGlhbCBmb2N1cyB3aWxsIGJlIG9uIHRoZSBgY2FybDkxNzBgIGFuZCBgYXRoOWtfaHRjYCBkcml2ZXJzLCBnaXZlbiB0aGVpciBoaXN0b3J5IGFuZCBwb3RlbnRpYWwgZm9yIHJlZ3VsYXRvcnkgaW50ZXJhY3Rpb25zLiBJJ2xsIG5lZWQgdG8gc2NydXRpbml6ZSB0aGVtIGNsb3NlbHkuIFRvIGdldCBhIGNvbXByZWhlbnNpdmUgdW5kZXJzdGFuZGluZyBvZiB0aGUgYGF0aDlrX2h0Y2AgZHJpdmVyJ3MgcmVndWxhdG9yeSBjb25maWd1cmF0aW9uLCBJIHNob3VsZCBwcm9iYWJseSBhbHNvIGNoZWNrIGl0cyBhc3NvY2lhdGVkIEtjb25maWcgZmlsZS4gVGhpcyB3aWxsIGxpa2VseSBzaG93IHRoZSBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMgcmVsYXRlZCB0byByZWd1bGF0b3J5IGRvbWFpbiBzdXBwb3J0IHdpdGhpbiB0aGF0IHNwZWNpZmljIGRyaXZlci4gVGltZSB0byBkaWcgaW4hXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzMzQxLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTE6NDM6MDcuMDAwOTI5NTM4WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MjE2MzA1NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJBVEg5S19IVENcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnPTEzPWNvbmZpZyBBVEg5S19CVENPRVhfU1VQUE9SVFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE0LVxcdGJvb2wgXFxcIkF0aGVyb3MgYmx1ZXRvb3RoIGNvZXhpc3RlbmNlIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTU6XFx0ZGVwZW5kcyBvbiAoQVRIOUsgfHwgQVRIOUtfSFRDKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE2LVxcdGRlZmF1bHQgeVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc9MTU2PWNvbmZpZyBBVEg5S19QQ0lfTk9fRUVQUk9NXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTcyOmNvbmZpZyBBVEg5S19IVENcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNzMtXFx0dHJpc3RhdGUgXFxcIkF0aGVyb3MgSFRDIGJhc2VkIHdpcmVsZXNzIGNhcmRzIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xODYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTg3OmNvbmZpZyBBVEg5S19IVENfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE4OC1cXHRib29sIFxcXCJBdGhlcm9zIGF0aDlrX2h0YyBkZWJ1Z2dpbmdcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTg5OlxcdGRlcGVuZHMgb24gQVRIOUtfSFRDIFxcdTAwMjZcXHUwMDI2IERFQlVHX0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTkwLVxcdHNlbGVjdCBBVEg5S19DT01NT05fREVCVUdcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnPTIwNj1jb25maWcgQVRIOUtfQ09NTU9OX1NQRUNUUkFMXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMjA3LVxcdGJvb2wgXFxcIkF0aGVyb3MgYXRoOWsvYXRoOWtfaHRjIHNwZWN0cmFsIHNjYW4gc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoyMDg6XFx0ZGVwZW5kcyBvbiBBVEg5S19ERUJVR0ZTIHx8IEFUSDlLX0hUQ19ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMjA5LVxcdHNlbGVjdCBSRUxBWVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlPTY4PWF0aDlrX2h0Yy15ICs9XFx0aHRjX2hzdC5vIFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS03Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6Nzc6YXRoOWtfaHRjLSQoQ09ORklHX0FUSDlLX0hUQ19ERUJVR0ZTKSArPSBodGNfZHJ2X2RlYnVnLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtNzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlOjc5Om9iai0kKENPTkZJR19BVEg5S19IVEMpICs9IGF0aDlrX2h0Yy5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTgwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwM19lZXByb20uYz0zMzkwPXN0YXRpYyBib29sIGF0aDlrX2h3X2FyOTMwMF9maWxsX2VlcHJvbShzdHJ1Y3QgYXRoX2h3ICphaClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDNfZWVwcm9tLmMtMzQwMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAzX2VlcHJvbS5jOjM0MDE6I2lmIGRlZmluZWQoQ09ORklHX0FUSDlLX0RFQlVHRlMpIHx8IGRlZmluZWQoQ09ORklHX0FUSDlLX0hUQ19ERUJVR0ZTKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDNfZWVwcm9tLmMtMzQwMi1zdGF0aWMgdTMyIGFyOTAwM19kdW1wX21vZGFsX2VlcHJvbShjaGFyICpidWYsIHUzMiBsZW4sIHUzMiBzaXplLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYz0yMzI9c3RhdGljIGlubGluZSB2b2lkIGF0aDlrX3NrYl9xdWV1ZV9jb21wbGV0ZShzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTIzOC1cXHR3aGlsZSAoKHNrYiA9IF9fc2tiX2RlcXVldWUocXVldWUpKSAhPSBOVUxMKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzoyMzk6I2lmZGVmIENPTkZJR19BVEg5S19IVENfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMjQwLVxcdFxcdGludCBsbiA9IHNrYi1cXHUwMDNlbGVuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYz0zNzY9c3RhdGljIGludCBoaWZfdXNiX3NlbmRfdHgoc3RydWN0IGhpZl9kZXZpY2VfdXNiICpoaWZfZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0zOTktXFx0LyogTWdtdC9CZWFjb24gZnJhbWVzIGRvbid0IHVzZSB0aGUgVFggYnVmZmVyIHBvb2wgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjQwMDpcXHRpZiAoKHR4X2N0bC1cXHUwMDNldHlwZSA9PSBBVEg5S19IVENfTUdNVCkgfHxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjQwMTpcXHQgICAgKHR4X2N0bC1cXHUwMDNldHlwZSA9PSBBVEg5S19IVENfQkVBQ09OKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNDAyLVxcdFxcdHJldCA9IGhpZl91c2Jfc2VuZF9tZ210KGhpZl9kZXYsIHNrYik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQwNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjQwNzpcXHRpZiAoKHR4X2N0bC1cXHUwMDNldHlwZSA9PSBBVEg5S19IVENfTk9STUFMKSB8fFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NDA4OlxcdCAgICAodHhfY3RsLVxcdTAwM2V0eXBlID09IEFUSDlLX0hUQ19BTVBEVSkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQwOS1cXHRcXHRfX3NrYl9xdWV1ZV90YWlsKFxcdTAwMjZoaWZfZGV2LVxcdTAwM2V0eC50eF9za2JfcXVldWUsIHNrYik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jPTQ4Nz1zdGF0aWMgaW5saW5lIGJvb2wgY2hlY2tfaW5kZXgoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTggaWR4KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00OTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo0OTM6XFx0aWYgKCh0eF9jdGwtXFx1MDAzZXR5cGUgPT0gQVRIOUtfSFRDX0FNUERVKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNDk0LVxcdCAgICAodHhfY3RsLVxcdTAwM2VzdGFfaWR4ID09IGlkeCkpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9NTY9ZW51bSBodGNfb3Btb2RlIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC02NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6NjU6I2RlZmluZSBBVEg5S19IVENfQU1QRFUgIDFcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6NjY6I2RlZmluZSBBVEg5S19IVENfTk9STUFMIDJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6Njc6I2RlZmluZSBBVEg5S19IVENfQkVBQ09OIDNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6Njg6I2RlZmluZSBBVEg5S19IVENfTUdNVCAgIDRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNjktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjcwOiNkZWZpbmUgQVRIOUtfSFRDX1RYX0NUU09OTFkgICAgICAweDFcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6NzE6I2RlZmluZSBBVEg5S19IVENfVFhfUlRTQ1RTICAgICAgIDB4MlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC03Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9NzM9c3RydWN0IHR4X2ZyYW1lX2hkciB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNzctXFx0dTggdGlkbm87XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjc4OlxcdF9fYmUzMiBmbGFnczsgLyogQVRIOUtfSFRDX1RYXyogKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNzktXFx0dTgga2V5X3R5cGU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9MTk0PXN0cnVjdCBhdGg5a19odGNfdGFyZ2V0X3J4X3N0YXRzIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0xOTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjIwMDojZGVmaW5lIEFUSDlLX0hUQ19NQVhfVklGIDJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MjAxOiNkZWZpbmUgQVRIOUtfSFRDX01BWF9CQ05fVklGIDJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMjAyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTI0OT1zdHJ1Y3QgYXRoOWtfdmlmX2l0ZXJfZGF0YSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMjUzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyNTQ6I2RlZmluZSBBVEg5S19IVENfTUFYX1NUQSA4XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI1NTojZGVmaW5lIEFUSDlLX0hUQ19NQVhfVElEIDhcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMjU2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTI2ND1zdHJ1Y3QgYXRoOWtfaHRjX3N0YSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI2NS1cXHR1OCBpbmRleDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MjY2OlxcdGVudW0gdGlkX2FnZ3Jfc3RhdGUgdGlkX3N0YXRlW0FUSDlLX0hUQ19NQVhfVElEXTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMjY3LVxcdHN0cnVjdCB3b3JrX3N0cnVjdCByY191cGRhdGVfd29yaztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0yNzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI3MTojZGVmaW5lIEFUSDlLX0hUQ19SWEJVRiAyNTZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMjcyLSNkZWZpbmUgSFRDX1JYX0ZSQU1FX0hFQURFUl9TSVpFIDQwXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9MjgxPXN0cnVjdCBhdGg5a19odGNfcngge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI4Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6Mjg3OiNkZWZpbmUgQVRIOUtfSFRDX1RYX0NMRUFOVVBfSU5URVJWQUwgNTAgLyogbXMgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6Mjg4OiNkZWZpbmUgQVRIOUtfSFRDX1RYX1RJTUVPVVRfSU5URVJWQUwgMzAwMCAvKiBtcyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyODk6I2RlZmluZSBBVEg5S19IVENfVFhfUkVTRVJWRSAxMFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyOTA6I2RlZmluZSBBVEg5S19IVENfVFhfVElNRU9VVF9DT1VOVCA0MFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyOTE6I2RlZmluZSBBVEg5S19IVENfVFhfVEhSRVNIT0xEIChNQVhfVFhfQlVGX05VTSAtIEFUSDlLX0hUQ19UWF9SRVNFUlZFKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0yOTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI5MzojZGVmaW5lIEFUSDlLX0hUQ19PUF9UWF9RVUVVRVNfU1RPUCBCSVQoMClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6Mjk0OiNkZWZpbmUgQVRIOUtfSFRDX09QX1RYX0RSQUlOICAgICAgIEJJVCgxKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0yOTUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9MzExPXN0cnVjdCBhdGg5a19odGNfdHhfY3RsIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MzEyOlxcdHU4IHR5cGU7IC8qIEFUSDlLX0hUQ18qICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTMxMy1cXHR1OCBlcGlkO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTMxOT1zdGF0aWMgaW5saW5lIHN0cnVjdCBhdGg5a19odGNfdHhfY3RsICpIVENfU0tCX0NCKHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMzI3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDozMjg6I2lmZGVmIENPTkZJR19BVEg5S19IVENfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0zMjktI2RlZmluZSBfX1NUQVRfU0FGRShoaWZfZGV2LCBleHByKVxcdGRvIHsgKChoaWZfZGV2KS1cXHUwMDNlaHRjX2hhbmRsZS1cXHUwMDNlZHJ2X3ByaXYgPyAoZXhwcikgOiAwKTsgfSB3aGlsZSAoMClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD0zODg9c3RhdGljIGlubGluZSB2b2lkIGF0aDlrX2h0Y19lcnJfc3RhdF9yeChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMzkyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDozOTM6I2VuZGlmIC8qIENPTkZJR19BVEg5S19IVENfREVCVUdGUyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0zOTQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9NDA5PXN0cnVjdCBodGNfYmVhY29uIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC00MTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjQxNjpcXHRzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqYnNsb3RbQVRIOUtfSFRDX01BWF9CQ05fVklGXTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNDE3LVxcdHUzMiBibWlzc2NudDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD00NTY9c3RydWN0IGF0aDlrX2h0Y19wcml2IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC00NzgtXFx0dTggc3RhX3Nsb3Q7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjQ3OTpcXHR1OCB2aWZfc3RhX3Bvc1tBVEg5S19IVENfTUFYX1ZJRl07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTQ4MC1cXHR1OCBudW1faWJzc192aWY7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNTM1LVxcdHN0cnVjdCBkZWxheWVkX3dvcmsgZHV0eV9jeWNsZV93b3JrO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo1MzY6I2lmZGVmIENPTkZJR19BVEg5S19IVENfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC01MzctXFx0c3RydWN0IGF0aDlrX2RlYnVnIGRlYnVnO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTY0MT1pbnQgYXRoOWtfaHRjX3Jlc3VtZShzdHJ1Y3QgaHRjX3RhcmdldCAqaHRjX2hhbmRsZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTY0Mi0jZW5kaWZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6NjQzOiNpZmRlZiBDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNjQ0LWludCBhdGg5a19odGNfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX2h3ICphaCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9NjQ4PXN0YXRpYyBpbmxpbmUgdm9pZCBhdGg5a19odGNfZGVpbml0X2RlYnVnKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC02NTAtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo2NTE6I2VuZGlmIC8qIENPTkZJR19BVEg5S19IVENfREVCVUdGUyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC02NTItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYz0xMTE9c3RhdGljIHZvaWQgYXRoOWtfaHRjX2JlYWNvbl9jb25maWdfYXAoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMTE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jOjExNzpcXHRhdGg5a19jbW5fYmVhY29uX2NvbmZpZ19hcChhaCwgY29uZiwgQVRIOUtfSFRDX01BWF9CQ05fVklGKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYy0xMTgtXFx0YXRoOWtfaHRjX2JlYWNvbl9pbml0KHByaXYsIGNvbmYsIGZhbHNlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jPTE5MT1zdGF0aWMgdm9pZCBhdGg5a19odGNfc2VuZF9iZWFjb24oc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMjQyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jOjI0MzpcXHR0eF9jdGwtXFx1MDAzZXR5cGUgPSBBVEg5S19IVENfQkVBQ09OO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTI0NC1cXHR0eF9jdGwtXFx1MDAzZWVwaWQgPSBwcml2LVxcdTAwM2ViZWFjb25fZXA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYz0yNjQ9c3RhdGljIGludCBhdGg5a19odGNfY2hvb3NlX2JzbG90KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTI3Ni1cXHR0c2Z0dSA9IFRTRl9UT19UVSh0c2YgXFx1MDAzZVxcdTAwM2UgMzIsIHRzZik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmM6Mjc3OlxcdHNsb3QgPSAoKHRzZnR1ICUgaW50dmFsKSAqIEFUSDlLX0hUQ19NQVhfQkNOX1ZJRikgLyBpbnR2YWw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmM6Mjc4OlxcdHNsb3QgPSBBVEg5S19IVENfTUFYX0JDTl9WSUYgLSBzbG90IC0gMTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYy0yNzktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYz0zMjU9dm9pZCBhdGg5a19odGNfYXNzaWduX2JzbG90KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTMzMi1cXHRzcGluX2xvY2tfYmgoXFx1MDAyNnByaXYtXFx1MDAzZWJlYWNvbl9sb2NrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYzozMzM6XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFUSDlLX0hUQ19NQVhfQkNOX1ZJRjsgaSsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMzM0LVxcdFxcdGlmIChwcml2LVxcdTAwM2ViZWFjb24uYnNsb3RbaV0gPT0gTlVMTCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmM9MzY1PXZvaWQgYXRoOWtfaHRjX3NldF90c2ZhZGp1c3Qoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMzgwLVxcdCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jOjM4MTpcXHR0c2ZhZGp1c3QgPSBjdXJfY29uZi1cXHUwMDNlYmVhY29uX2ludGVydmFsICogYXZwLVxcdTAwM2Vic2xvdCAvIEFUSDlLX0hUQ19NQVhfQkNOX1ZJRjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYy0zODItXFx0YXZwLVxcdTAwM2V0c2ZhZGp1c3QgPSBjcHVfdG9fbGU2NChUVV9UT19VU0VDKHRzZmFkanVzdCkpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYz0zOTg9c3RhdGljIGNvbnN0IGNoYXIgYXRoOWtfaHRjX2dzdHJpbmdzX3N0YXRzW11bRVRIX0dTVFJJTkdfTEVOXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMtNDE4LX07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYzo0MTk6I2RlZmluZSBBVEg5S19IVENfU1NUQVRTX0xFTiBBUlJBWV9TSVpFKGF0aDlrX2h0Y19nc3RyaW5nc19zdGF0cylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jLTQyMC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM9NDMwPWludCBhdGg5a19odGNfZ2V0X2V0X3NzZXRfY291bnQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jLTQzMy1cXHRpZiAoc3NldCA9PSBFVEhfU1NfU1RBVFMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYzo0MzQ6XFx0XFx0cmV0dXJuIEFUSDlLX0hUQ19TU1RBVFNfTEVOO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMtNDM1LVxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYz00NDg9dm9pZCBhdGg5a19odGNfZ2V0X2V0X3N0YXRzKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYy00NzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYzo0NzQ6XFx0V0FSTl9PTihpICE9IEFUSDlLX0hUQ19TU1RBVFNfTEVOKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jLTQ3NS19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM9NjA2PXN0YXRpYyBpbnQgYXRoOWtfaW5pdF9wcml2KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy02NzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jOjY3NDpcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgQVRIOUtfSFRDX01BWF9CQ05fVklGOyBpKyspXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jLTY3NS1cXHRcXHRwcml2LVxcdTAwM2ViZWFjb24uYnNsb3RbaV0gPSBOVUxMO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jPTE4ND12b2lkIGF0aDlrX2h0Y19yZXNldChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMjMzLVxcdG1vZF90aW1lcihcXHUwMDI2cHJpdi1cXHUwMDNldHguY2xlYW51cF90aW1lcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6MjM0OlxcdFxcdCAgamlmZmllcyArIG1zZWNzX3RvX2ppZmZpZXMoQVRIOUtfSFRDX1RYX0NMRUFOVVBfSU5URVJWQUwpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMjM1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jPTI0MD1zdGF0aWMgaW50IGF0aDlrX2h0Y19zZXRfY2hhbm5lbChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMzExLVxcdG1vZF90aW1lcihcXHUwMDI2cHJpdi1cXHUwMDNldHguY2xlYW51cF90aW1lcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6MzEyOlxcdFxcdCAgamlmZmllcyArIG1zZWNzX3RvX2ppZmZpZXMoQVRIOUtfSFRDX1RYX0NMRUFOVVBfSU5URVJWQUwpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMzEzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jPTM1MD1zdGF0aWMgaW50IGF0aDlrX2h0Y19hZGRfbW9uaXRvcl9pbnRlcmZhY2Uoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTM1Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6MzU4OlxcdGlmICgocHJpdi1cXHUwMDNlbnZpZnMgXFx1MDAzZT0gQVRIOUtfSFRDX01BWF9WSUYpIHx8XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjM1OTpcXHQgICAgKHByaXYtXFx1MDAzZW5zdGF0aW9ucyBcXHUwMDNlPSBBVEg5S19IVENfTUFYX1NUQSkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMzYwLVxcdFxcdHJldCA9IC1FTk9CVUZTO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTM2NC1cXHRzdGFfaWR4ID0gZmZ6KHByaXYtXFx1MDAzZXN0YV9zbG90KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6MzY1OlxcdGlmICgoc3RhX2lkeCBcXHUwMDNjIDApIHx8IChzdGFfaWR4IFxcdTAwM2UgQVRIOUtfSFRDX01BWF9TVEEpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTM2Ni1cXHRcXHRyZXQgPSAtRU5PQlVGUztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYz00NjY9c3RhdGljIGludCBhdGg5a19odGNfYWRkX3N0YXRpb24oc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTQ3Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6NDc4OlxcdGlmIChwcml2LVxcdTAwM2Vuc3RhdGlvbnMgXFx1MDAzZT0gQVRIOUtfSFRDX01BWF9TVEEpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTQ3OS1cXHRcXHRyZXR1cm4gLUVOT0JVRlM7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtNDgxLVxcdHN0YV9pZHggPSBmZnoocHJpdi1cXHUwMDNlc3RhX3Nsb3QpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzo0ODI6XFx0aWYgKChzdGFfaWR4IFxcdTAwM2MgMCkgfHwgKHN0YV9pZHggXFx1MDAzZSBBVEg5S19IVENfTUFYX1NUQSkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTQ4My1cXHRcXHRyZXR1cm4gLUVOT0JVRlM7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM9NzAyPXN0YXRpYyBpbnQgYXRoOWtfaHRjX3R4X2FnZ3Jfb3BlcihzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtNzEzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzo3MTQ6XFx0aWYgKHRpZCBcXHUwMDNlPSBBVEg5S19IVENfTUFYX1RJRClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtNzE1LVxcdFxcdHJldHVybiAtRUlOVkFMO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jPTkwNz1zdGF0aWMgaW50IGF0aDlrX2h0Y19zdGFydChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy05NjAtXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZwcml2LVxcdTAwM2V0eC50eF9sb2NrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6OTYxOlxcdHByaXYtXFx1MDAzZXR4LmZsYWdzIFxcdTAwMjY9IH5BVEg5S19IVENfT1BfVFhfUVVFVUVTX1NUT1A7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTk2Mi1cXHRzcGluX3VubG9ja19iaChcXHUwMDI2cHJpdi1cXHUwMDNldHgudHhfbG9jayk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtOTY2LVxcdG1vZF90aW1lcihcXHUwMDI2cHJpdi1cXHUwMDNldHguY2xlYW51cF90aW1lcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6OTY3OlxcdFxcdCAgamlmZmllcyArIG1zZWNzX3RvX2ppZmZpZXMoQVRIOUtfSFRDX1RYX0NMRUFOVVBfSU5URVJWQUwpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtOTY4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jPTE2NTg9c3RhdGljIGludCBhdGg5a19odGNfYW1wZHVfYWN0aW9uKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTE2ODgtXFx0Y2FzZSBJRUVFODAyMTFfQU1QRFVfVFhfT1BFUkFUSU9OQUw6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjE2ODk6XFx0XFx0aWYgKHRpZCBcXHUwMDNlPSBBVEg5S19IVENfTUFYX1RJRCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0xNjkwLVxcdFxcdFxcdHJldCA9IC1FSU5WQUw7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM9MTg3ND1zdHJ1Y3QgaWVlZTgwMjExX29wcyBhdGg5a19odGNfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTE5MDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjE5MDc6I2lmZGVmIENPTkZJR19BVEg5S19IVENfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0xOTA4LVxcdC5nZXRfZXRfc3NldF9jb3VudCAgPSBhdGg5a19odGNfZ2V0X2V0X3NzZXRfY291bnQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9MjM9c3RhdGljIGNvbnN0IGludCBzdWJ0eXBlX3R4cV90b19od3FbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0yOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6MzA6I2RlZmluZSBBVEg5S19IVENfSU5JVF9UWFEoc3VidHlwZSkgZG8ge1xcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMzEtXFx0XFx0cWkudHFpX3N1YnR5cGUgPSBzdWJ0eXBlX3R4cV90b19od3Fbc3VidHlwZV07XFx0XFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTU2PXZvaWQgYXRoOWtfaHRjX2NoZWNrX3N0b3BfcXVldWVzKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy01OS1cXHRwcml2LVxcdTAwM2V0eC5xdWV1ZWRfY250Kys7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjYwOlxcdGlmICgocHJpdi1cXHUwMDNldHgucXVldWVkX2NudCBcXHUwMDNlPSBBVEg5S19IVENfVFhfVEhSRVNIT0xEKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo2MTpcXHQgICAgIShwcml2LVxcdTAwM2V0eC5mbGFncyBcXHUwMDI2IEFUSDlLX0hUQ19PUF9UWF9RVUVVRVNfU1RPUCkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NjI6XFx0XFx0cHJpdi1cXHUwMDNldHguZmxhZ3MgfD0gQVRIOUtfSFRDX09QX1RYX1FVRVVFU19TVE9QO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy02My1cXHRcXHRpZWVlODAyMTFfc3RvcF9xdWV1ZXMocHJpdi1cXHUwMDNlaHcpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTY4PXZvaWQgYXRoOWtfaHRjX2NoZWNrX3dha2VfcXVldWVzKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy03MC1cXHRzcGluX2xvY2tfYmgoXFx1MDAyNnByaXYtXFx1MDAzZXR4LnR4X2xvY2spO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo3MTpcXHRpZiAoKHByaXYtXFx1MDAzZXR4LnF1ZXVlZF9jbnQgXFx1MDAzYyBBVEg5S19IVENfVFhfVEhSRVNIT0xEKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo3MjpcXHQgICAgKHByaXYtXFx1MDAzZXR4LmZsYWdzIFxcdTAwMjYgQVRIOUtfSFRDX09QX1RYX1FVRVVFU19TVE9QKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo3MzpcXHRcXHRwcml2LVxcdTAwM2V0eC5mbGFncyBcXHUwMDI2PSB+QVRIOUtfSFRDX09QX1RYX1FVRVVFU19TVE9QO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy03NC1cXHRcXHRpZWVlODAyMTFfd2FrZV9xdWV1ZXMocHJpdi1cXHUwMDNlaHcpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTIxND1zdGF0aWMgdm9pZCBhdGg5a19odGNfdHhfbWdtdChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMjQwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzoyNDE6XFx0dHhfY3RsLVxcdTAwM2V0eXBlID0gQVRIOUtfSFRDX01HTVQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTI0Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz0yNjA9c3RhdGljIHZvaWQgYXRoOWtfaHRjX3R4X2RhdGEoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTI5Mi1cXHRpZiAodHhfaW5mby1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRUVFODAyMTFfVFhfQ1RMX0FNUERVKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjI5MzpcXHRcXHR0eF9jdGwtXFx1MDAzZXR5cGUgPSBBVEg5S19IVENfQU1QRFU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjI5NDpcXHRcXHR0eF9oZHIuZGF0YV90eXBlID0gQVRIOUtfSFRDX0FNUERVO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0yOTUtXFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6Mjk2OlxcdFxcdHR4X2N0bC1cXHUwMDNldHlwZSA9IEFUSDlLX0hUQ19OT1JNQUw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjI5NzpcXHRcXHR0eF9oZHIuZGF0YV90eXBlID0gQVRIOUtfSFRDX05PUk1BTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMjk4LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0zMTItXFx0XFx0aWYgKHNrYi1cXHUwMDNlbGVuIFxcdTAwM2UgcHJpdi1cXHUwMDNlaHctXFx1MDAzZXdpcGh5LVxcdTAwM2VydHNfdGhyZXNob2xkKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzozMTM6XFx0XFx0XFx0ZmxhZ3MgfD0gQVRIOUtfSFRDX1RYX1JUU0NUUztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMzE0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0zMTUtXFx0LyogQ1RTLXRvLXNlbGYgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6MzE2OlxcdGlmICghKGZsYWdzIFxcdTAwMjYgQVRIOUtfSFRDX1RYX1JUU0NUUykgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMzE3LVxcdCAgICAodmlmIFxcdTAwMjZcXHUwMDI2IHZpZi1cXHUwMDNlYnNzX2NvbmYudXNlX2N0c19wcm90KSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6MzE4OlxcdFxcdGZsYWdzIHw9IEFUSDlLX0hUQ19UWF9DVFNPTkxZO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0zMTktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9MzkyPXN0YXRpYyBpbmxpbmUgYm9vbCBfX2F0aDlrX2h0Y19jaGVja190eF9hZ2dyKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0zOTctXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZwcml2LVxcdTAwM2V0eC50eF9sb2NrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6Mzk4OlxcdGlmICgodGlkIFxcdTAwM2MgQVRIOUtfSFRDX01BWF9USUQpIFxcdTAwMjZcXHUwMDI2IChpc3RhLVxcdTAwM2V0aWRfc3RhdGVbdGlkXSA9PSBBR0dSX1NUT1ApKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0zOTktXFx0XFx0cmV0ID0gdHJ1ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz00NDU9c3RhdGljIHZvaWQgYXRoOWtfaHRjX3R4X3Byb2Nlc3Moc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ3OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NDc5OlxcdGlmICh0eHMtXFx1MDAzZXRzX2ZsYWdzIFxcdTAwMjYgQVRIOUtfSFRDX1RYU1RBVF9BQ0spIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDgwLVxcdFxcdHR4X2luZm8tXFx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9UWF9TVEFUX0FDSztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00ODQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjQ4NTpcXHRpZiAodHhzLVxcdTAwM2V0c19mbGFncyBcXHUwMDI2IEFUSDlLX0hUQ19UWFNUQVRfRklMVClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDg2LVxcdFxcdHR4X2luZm8tXFx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9UWF9TVEFUX1RYX0ZJTFRFUkVEO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00ODctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjQ4ODpcXHRpZiAodHhzLVxcdTAwM2V0c19mbGFncyBcXHUwMDI2IEFUSDlLX0hUQ19UWFNUQVRfUlRDX0NUUylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDg5LVxcdFxcdHJhdGUtXFx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9UWF9SQ19VU0VfUlRTX0NUUztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00OTEtXFx0cmF0ZS1cXHUwMDNlY291bnQgPSAxO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo0OTI6XFx0cmF0ZS1cXHUwMDNlaWR4ID0gTVModHhzLVxcdTAwM2V0c19yYXRlLCBBVEg5S19IVENfVFhTVEFUX1JBVEUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00OTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjQ5NDpcXHRpZiAodHhzLVxcdTAwM2V0c19mbGFncyBcXHUwMDI2IEFUSDlLX0hUQ19UWFNUQVRfTUNTKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ5NS1cXHRcXHRyYXRlLVxcdTAwM2VmbGFncyB8PSBJRUVFODAyMTFfVFhfUkNfTUNTO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00OTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjQ5NzpcXHRcXHRpZiAodHhzLVxcdTAwM2V0c19mbGFncyBcXHUwMDI2IEFUSDlLX0hUQ19UWFNUQVRfQ1c0MClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDk4LVxcdFxcdFxcdHJhdGUtXFx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9UWF9SQ180MF9NSFpfV0lEVEg7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjQ5OTpcXHRcXHRpZiAodHhzLVxcdTAwM2V0c19mbGFncyBcXHUwMDI2IEFUSDlLX0hUQ19UWFNUQVRfU0dJKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy01MDAtXFx0XFx0XFx0cmF0ZS1cXHUwMDNlZmxhZ3MgfD0gSUVFRTgwMjExX1RYX1JDX1NIT1JUX0dJO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTUzOT12b2lkIGF0aDlrX2h0Y190eF9kcmFpbihzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNTQzLVxcdHNwaW5fbG9ja19iaChcXHUwMDI2cHJpdi1cXHUwMDNldHgudHhfbG9jayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjU0NDpcXHRwcml2LVxcdTAwM2V0eC5mbGFncyB8PSBBVEg5S19IVENfT1BfVFhfRFJBSU47XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTU0NS1cXHRzcGluX3VubG9ja19iaChcXHUwMDI2cHJpdi1cXHUwMDNldHgudHhfbG9jayk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNTczLVxcdHNwaW5fbG9ja19iaChcXHUwMDI2cHJpdi1cXHUwMDNldHgudHhfbG9jayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjU3NDpcXHRwcml2LVxcdTAwM2V0eC5mbGFncyBcXHUwMDI2PSB+QVRIOUtfSFRDX09QX1RYX0RSQUlOO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy01NzUtXFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNnByaXYtXFx1MDAzZXR4LnR4X2xvY2spO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTU3OD12b2lkIGF0aDlrX3R4X2ZhaWxlZF90YXNrbGV0KHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy01ODItXFx0c3Bpbl9sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2V0eC50eF9sb2NrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NTgzOlxcdGlmIChwcml2LVxcdTAwM2V0eC5mbGFncyBcXHUwMDI2IEFUSDlLX0hUQ19PUF9UWF9EUkFJTikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy01ODQtXFx0XFx0c3Bpbl91bmxvY2soXFx1MDAyNnByaXYtXFx1MDAzZXR4LnR4X2xvY2spO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTYxOD1zdGF0aWMgc3RydWN0IHNrX2J1ZmYqIGF0aDlrX2h0Y190eF9nZXRfcGFja2V0KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy02MjQtXFx0dW5zaWduZWQgbG9uZyBmbGFncztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NjI1OlxcdHU4IGVwaWQgPSBNUyh0eHMtXFx1MDAzZXRzX3JhdGUsIEFUSDlLX0hUQ19UWFNUQVRfRVBJRCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTYyNi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz03MTY9c3RhdGljIGlubGluZSBib29sIGNoZWNrX3BhY2tldChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNzI0LVxcdFxcdCAgICAgICB0eF9jdGwtXFx1MDAzZXRpbWVzdGFtcCArXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjcyNTpcXHRcXHQgICAgICAgbXNlY3NfdG9famlmZmllcyhBVEg5S19IVENfVFhfVElNRU9VVF9JTlRFUlZBTCkpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTcyNi1cXHRcXHRhdGhfZGJnKGNvbW1vbiwgWE1JVCwgXFxcIkRyb3BwaW5nIGEgcGFja2V0IGR1ZSB0byBUWCB0aW1lb3V0XFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz03NjE9dm9pZCBhdGg5a19odGNfdHhfY2xlYW51cF90aW1lcihzdHJ1Y3QgdGltZXJfbGlzdCAqdClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy03NzYtXFx0XFx0XFx0XFx0ZXZlbnQtXFx1MDAzZXR4cy5jb29raWUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjc3NzpcXHRcXHRcXHRcXHRNUyhldmVudC1cXHUwMDNldHhzLnRzX3JhdGUsIEFUSDlLX0hUQ19UWFNUQVRfRVBJRCkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy03NzgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNzg0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo3ODU6XFx0XFx0aWYgKCsrZXZlbnQtXFx1MDAzZWNvdW50IFxcdTAwM2U9IEFUSDlLX0hUQ19UWF9USU1FT1VUX0NPVU5UKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTc4Ni1cXHRcXHRcXHRsaXN0X2RlbChcXHUwMDI2ZXZlbnQtXFx1MDAzZWxpc3QpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTgwNS1cXHRtb2RfdGltZXIoXFx1MDAyNnByaXYtXFx1MDAzZXR4LmNsZWFudXBfdGltZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjgwNjpcXHRcXHQgIGppZmZpZXMgKyBtc2Vjc190b19qaWZmaWVzKEFUSDlLX0hUQ19UWF9DTEVBTlVQX0lOVEVSVkFMKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTgwNy19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9ODI3PWJvb2wgYXRoOWtfaHRjX3R4cV9zZXR1cChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsIGludCBzdWJ0eXBlKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTgzNC1cXHRtZW1zZXQoXFx1MDAyNnFpLCAwLCBzaXplb2YocWkpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6ODM1OlxcdEFUSDlLX0hUQ19JTklUX1RYUShzdWJ0eXBlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtODM2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTg1Mj1pbnQgYXRoOWtfaHRjX2NhYnFfc2V0dXAoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTg1Ni1cXHRtZW1zZXQoXFx1MDAyNnFpLCAwLCBzaXplb2YocWkpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6ODU3OlxcdEFUSDlLX0hUQ19JTklUX1RYUSgwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtODU4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTExODc9aW50IGF0aDlrX3J4X2luaXQoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTExOTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjExOTQ6XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFUSDlLX0hUQ19SWEJVRjsgaSsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTExOTUtXFx0XFx0c3RydWN0IGF0aDlrX2h0Y19yeGJ1ZiAqcnhidWYgPVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jPTEzOD12b2lkIGF0aDlrX3dtaV9ldmVudF90YXNrbGV0KHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYy0xNzgtXFx0XFx0XFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZwcml2LVxcdTAwM2V0eC50eF9sb2NrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmM6MTc5OlxcdFxcdFxcdGlmIChwcml2LVxcdTAwM2V0eC5mbGFncyBcXHUwMDI2IEFUSDlLX0hUQ19PUF9UWF9EUkFJTikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYy0xODAtXFx0XFx0XFx0XFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNnByaXYtXFx1MDAzZXR4LnR4X2xvY2spO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oPTM5PXN0cnVjdCB3bWlfZXZlbnRfc3diYSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmgtNTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oOjUxOiNkZWZpbmUgQVRIOUtfSFRDX1RYU1RBVF9BQ0sgICAgICAgIEJJVCgwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo1MjojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfRklMVCAgICAgICBCSVQoMSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6NTM6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX1JUQ19DVFMgICAgQklUKDIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oOjU0OiNkZWZpbmUgQVRIOUtfSFRDX1RYU1RBVF9NQ1MgICAgICAgIEJJVCgzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo1NTojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfQ1c0MCAgICAgICBCSVQoNClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6NTY6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX1NHSSAgICAgICAgQklUKDUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oLTU3LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oLTYzLSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo2NDojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfUkFURSAgICAgICAweDBmXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oOjY1OiNkZWZpbmUgQVRIOUtfSFRDX1RYU1RBVF9SQVRFX1MgICAgIDBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmgtNjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oOjY3OiNkZWZpbmUgQVRIOUtfSFRDX1RYU1RBVF9FUElEICAgICAgIDB4ZjBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6Njg6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX0VQSURfUyAgICAgNFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaC02OS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTE6NDM6MDcuMDUzMDk3OTI0WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE5NzY5NTExMzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRGl2aW5nIGludG8gUmVndWxhdG9yeSBEb21haW4gQ2hhbmdlcyBpbiBgYXRoYCoqXG5cbk9rYXksIGxldCdzIHRha2UgYSBjbG9zZXIgbG9vayBhdCB0aGF0IHBhdGNoLCBzaGFsbCB3ZT8gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIGdvaW5nIHRvIGJlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgKnByZWNpc2VseSogd2hhdCB0aGUgY2hhbmdlIGlzIGFjY29tcGxpc2hpbmcuIFNvLCBJJ20gZ29pbmcgdG8gc3RhcnQgYnkgZ29pbmcgbGluZSBieSBsaW5lIHRocm91Z2ggdGhhdCBmaWxlLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gdGhlIHJlZ3VsYXRvcnkgZG9tYWluIGltcGxlbWVudGF0aW9uIHdpdGhpbiB0aGUgYGF0aGAgZHJpdmVyLiBJJ2xsIHplcm8gaW4gb24gbGluZXMgcm91Z2hseSBiZXR3ZWVuIDQwIGFuZCAxMjA7IHRoYXQgc2VlbXMgbGlrZSBhIGxpa2VseSByZWdpb24gdG8gaG91c2UgdGhlIGNvcmUgbG9naWMgZm9yIHJlZ3VsYXRvcnkgZG9tYWluIG1hbmFnZW1lbnQuIEknbGwgbmVlZCB0byByZWZyZXNoIG15c2VsZiBvbiBob3cgcmVndWxhdG9yeSBkb21haW5zIGFyZSBoYW5kbGVkIHdpdGhpbiB0aGUgYGF0aGAgYXJjaGl0ZWN0dXJlLCBzbyBJIGNhbiBzZWUgd2hlcmUgdGhlIHBhdGNoIGlzIGltcGFjdGluZyB0aGF0IGZsb3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2MDU3LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTE6NDM6MDkuMDMwMDUyMTM2WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg5NDYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNDAsXG4gIFwiTGluZUNvdW50XCI6IDgwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgNDA6XFx0XFx0XFx0XFx0XFx0XFx0IE5MODAyMTFfUlJGX05PX0lSKVxcbiAgNDE6XFx0I2RlZmluZSBBVEhfMkdIWl9DSDE0XFx0XFx0UkVHX1JVTEUoMjQ4NC0xMCwgMjQ4NCsxMCwgNDAsIDAsIDIwLFxcXFxcXG4gIDQyOlxcdFxcdFxcdFxcdFxcdFxcdCBOTDgwMjExX1JSRl9OT19JUiB8IFxcXFxcXG4gIDQzOlxcdFxcdFxcdFxcdFxcdFxcdCBOTDgwMjExX1JSRl9OT19PRkRNKVxcbiAgNDQ6XFx0XFxuICA0NTpcXHQvKiBXZSBhbGxvdyBJQlNTIG9uIHRoZXNlIG9uIGEgY2FzZSBieSBjYXNlIGJhc2lzIGJ5IHJlZ3VsYXRvcnkgZG9tYWluICovXFxuICA0NjpcXHQjZGVmaW5lIEFUSF81R0haXzUxNTBfNTM1MFxcdFJFR19SVUxFKDUxNTAtMTAsIDUyNDArMTAsIDgwLCAwLCAzMCwgMCksXFxcXFxcbiAgNDc6XFx0XFx0XFx0XFx0XFx0UkVHX1JVTEUoNTI2MC0xMCwgNTM1MCsxMCwgODAsIDAsIDMwLFxcXFxcXG4gIDQ4OlxcdFxcdFxcdFxcdFxcdFxcdCBOTDgwMjExX1JSRl9OT19JUilcXG4gIDQ5OlxcdCNkZWZpbmUgQVRIXzVHSFpfNTQ3MF81ODUwXFx0UkVHX1JVTEUoNTQ3MC0xMCwgNTg1MCsxMCwgODAsIDAsIDMwLFxcXFxcXG4gIDUwOlxcdFxcdFxcdFxcdFxcdFxcdCBOTDgwMjExX1JSRl9OT19JUilcXG4gIDUxOlxcdCNkZWZpbmUgQVRIXzVHSFpfNTcyNV81ODUwXFx0UkVHX1JVTEUoNTcyNS0xMCwgNTg1MCsxMCwgODAsIDAsIDMwLFxcXFxcXG4gIDUyOlxcdFxcdFxcdFxcdFxcdFxcdCBOTDgwMjExX1JSRl9OT19JUilcXG4gIDUzOlxcdFxcbiAgNTQ6XFx0I2RlZmluZSBBVEhfMkdIWl9BTExcXHRcXHRBVEhfMkdIWl9DSDAxXzExLCBcXFxcXFxuICA1NTpcXHRcXHRcXHRcXHRcXHRBVEhfMkdIWl9DSDEyXzEzLCBcXFxcXFxuICA1NjpcXHRcXHRcXHRcXHRcXHRBVEhfMkdIWl9DSDE0XFxuICA1NzpcXHRcXG4gIDU4OlxcdCNkZWZpbmUgQVRIXzVHSFpfQUxMXFx0XFx0QVRIXzVHSFpfNTE1MF81MzUwLCBcXFxcXFxuICA1OTpcXHRcXHRcXHRcXHRcXHRBVEhfNUdIWl81NDcwXzU4NTBcXG4gIDYwOlxcdFxcbiAgNjE6XFx0LyogVGhpcyBvbmUgc2tpcHMgd2hhdCB3ZSBjYWxsIFxcXCJtaWQgYmFuZFxcXCIgKi9cXG4gIDYyOlxcdCNkZWZpbmUgQVRIXzVHSFpfTk9fTUlEQkFORFxcdEFUSF81R0haXzUxNTBfNTM1MCwgXFxcXFxcbiAgNjM6XFx0XFx0XFx0XFx0XFx0QVRIXzVHSFpfNTcyNV81ODUwXFxuICA2NDpcXHRcXG4gIDY1OlxcdC8qIENhbiBiZSB1c2VkIGZvcjpcXG4gIDY2OlxcdCAqIDB4NjAsIDB4NjEsIDB4NjIgKi9cXG4gIDY3OlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiBhdGhfd29ybGRfcmVnZG9tXzYwXzYxXzYyID0ge1xcbiAgNjg6XFx0XFx0Lm5fcmVnX3J1bGVzID0gNixcXG4gIDY5OlxcdFxcdC5hbHBoYTIgPSAgXFxcIjk5XFxcIixcXG4gIDcwOlxcdFxcdC5yZWdfcnVsZXMgPSB7XFxuICA3MTpcXHRcXHRcXHRBVEhfMkdIWl9BTEwsXFxuICA3MjpcXHRcXHRcXHRBVEhfNUdIWl9BTEwsXFxuICA3MzpcXHRcXHR9XFxuICA3NDpcXHR9O1xcbiAgNzU6XFx0XFxuICA3NjpcXHQvKiBDYW4gYmUgdXNlZCBieSAweDYzIGFuZCAweDY1ICovXFxuICA3NzpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW4gYXRoX3dvcmxkX3JlZ2RvbV82M182NSA9IHtcXG4gIDc4OlxcdFxcdC5uX3JlZ19ydWxlcyA9IDUsXFxuICA3OTpcXHRcXHQuYWxwaGEyID0gIFxcXCI5OVxcXCIsXFxuICA4MDpcXHRcXHQucmVnX3J1bGVzID0ge1xcbiAgODE6XFx0XFx0XFx0QVRIXzJHSFpfQ0gwMV8xMSxcXG4gIDgyOlxcdFxcdFxcdEFUSF8yR0haX0NIMTJfMTMsXFxuICA4MzpcXHRcXHRcXHRBVEhfNUdIWl9OT19NSURCQU5ELFxcbiAgODQ6XFx0XFx0fVxcbiAgODU6XFx0fTtcXG4gIDg2OlxcdFxcbiAgODc6XFx0LyogQ2FuIGJlIHVzZWQgYnkgMHg2NCBvbmx5ICovXFxuICA4ODpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW4gYXRoX3dvcmxkX3JlZ2RvbV82NCA9IHtcXG4gIDg5OlxcdFxcdC5uX3JlZ19ydWxlcyA9IDQsXFxuICA5MDpcXHRcXHQuYWxwaGEyID0gIFxcXCI5OVxcXCIsXFxuICA5MTpcXHRcXHQucmVnX3J1bGVzID0ge1xcbiAgOTI6XFx0XFx0XFx0QVRIXzJHSFpfQ0gwMV8xMSxcXG4gIDkzOlxcdFxcdFxcdEFUSF81R0haX05PX01JREJBTkQsXFxuICA5NDpcXHRcXHR9XFxuICA5NTpcXHR9O1xcbiAgOTY6XFx0XFxuICA5NzpcXHQvKiBDYW4gYmUgdXNlZCBieSAweDY2IGFuZCAweDY5ICovXFxuICA5ODpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW4gYXRoX3dvcmxkX3JlZ2RvbV82Nl82OSA9IHtcXG4gIDk5OlxcdFxcdC5uX3JlZ19ydWxlcyA9IDQsXFxuIDEwMDpcXHRcXHQuYWxwaGEyID0gIFxcXCI5OVxcXCIsXFxuIDEwMTpcXHRcXHQucmVnX3J1bGVzID0ge1xcbiAxMDI6XFx0XFx0XFx0QVRIXzJHSFpfQ0gwMV8xMSxcXG4gMTAzOlxcdFxcdFxcdEFUSF81R0haX0FMTCxcXG4gMTA0OlxcdFxcdH1cXG4gMTA1OlxcdH07XFxuIDEwNjpcXHRcXG4gMTA3OlxcdC8qIENhbiBiZSB1c2VkIGJ5IDB4NjcsIDB4NjgsIDB4NkEgYW5kIDB4NkMgKi9cXG4gMTA4OlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiBhdGhfd29ybGRfcmVnZG9tXzY3XzY4XzZBXzZDID0ge1xcbiAxMDk6XFx0XFx0Lm5fcmVnX3J1bGVzID0gNSxcXG4gMTEwOlxcdFxcdC5hbHBoYTIgPSAgXFxcIjk5XFxcIixcXG4gMTExOlxcdFxcdC5yZWdfcnVsZXMgPSB7XFxuIDExMjpcXHRcXHRcXHRBVEhfMkdIWl9DSDAxXzExLFxcbiAxMTM6XFx0XFx0XFx0QVRIXzJHSFpfQ0gxMl8xMyxcXG4gMTE0OlxcdFxcdFxcdEFUSF81R0haX0FMTCxcXG4gMTE1OlxcdFxcdH1cXG4gMTE2OlxcdH07XFxuIDExNzpcXHRcXG4gMTE4OlxcdHN0YXRpYyBib29sIGR5bmFtaWNfY291bnRyeV91c2VyX3Bvc3NpYmxlKHN0cnVjdCBhdGhfcmVndWxhdG9yeSAqcmVnKVxcbiAxMTk6XFx0e1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxMTo0MzowOS4wMzAxNDI5MDZaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzY1ODc4MTQ4NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFJlZ3VsYXRvcnkgRG9tYWluIENoYW5nZXMqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY2hhbmdlIGluIGByZWdkLmNgLiAgTG9va3MgbGlrZSB0aGUgZGVmaW5pdGlvbiBgQVRIXzVHSFpfNTE1MF81MzUwYCB3YXMgcHJldmlvdXNseSBhIHNpbmdsZSByZWd1bGF0b3J5IHJ1bGUgc3Bhbm5pbmcgNTE1MCB0byA1MzUwIE1Iei4gVGhlIG9sZGVyIHJ1bGUgd2FzOiBgUkVHX1JVTEUoNTE1MC0xMCwgNTM1MCsxMCwgODAsIDAsIDMwLCBOTDgwMjExX1JSRl9OT19JUilgLiBOb3csIHRoZXkndmUgc3BsaXQgaXQgaW50byAqdHdvKiBzZXBhcmF0ZSBydWxlczogYFJFR19SVUxFKDUxNTAtMTAsIDUyNDArMTAsIDgwLCAwLCAzMCwgMClgIGFuZCBgUkVHX1JVTEUoNTI2MC0xMCwgNTM1MCsxMCwgODAsIDAsIDMwLCBOTDgwMjExX1JSRl9OT19JUilgLlxuXG5UaGlzIGlzIGEgc2lnbmlmaWNhbnQgY2hhbmdlIGJlY2F1c2UgdGhpcyBub3cgbWVhbnMgdGhhdCBhbGwgdGhvc2UgYGF0aF93b3JsZF9yZWdkb21fKmAgc3RydWN0dXJlcyB0aGF0IHJlbHkgb24gYEFUSF81R0haXzUxNTBfNTM1MGAgKGVpdGhlciBkaXJlY3RseSBvciB2aWEgYEFUSF81R0haX0FMTGAgb3IgYEFUSF81R0haX05PX01JREJBTkRgKSBub3cgaGF2ZSBhbiBleHRyYSByZWd1bGF0b3J5IHJ1bGUuIEknbGwgbmVlZCB0byBkb3VibGUtY2hlY2sgbXkgdW5kZXJzdGFuZGluZywgYnV0IGl0IHNlZW1zIHRoYXQgYC5uX3JlZ19ydWxlc2AgaW4gdGhvc2Ugc3RydWN0cyBtdXN0IGhhdmUgYmVlbiBpbmNyZW1lbnRlZCBieSBvbmUuIFNvLCA1IHJ1bGVzIGFyZSBub3cgNiwgNCBpcyBub3cgNSwgMyBpcyBub3cgNCwgYW5kIHNvIG9uLlxuXG5OZXh0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgYnJvYWRlciBpbXBsaWNhdGlvbnMgb2YgdGhpcyBzcGxpdC4gSSdsbCBuZWVkIHRvIGludmVzdGlnYXRlIGhvdyB0aGVzZSByZWd1bGF0b3J5IGRvbWFpbnMgYXJlIHJlZ2lzdGVyZWQgd2l0aGluIHRoZSBzeXN0ZW0uICBJJ2xsIHN0YXJ0IGJ5IGNoZWNraW5nIHRoZSBpbml0aWFsaXphdGlvbiBwcm9jZXNzLiBMZXQncyBzZWUgd2hhdCBgYXRoX3JlZ2RfaW5pdGAgZG9lcy4gVW5kZXJzdGFuZGluZyB0aGF0IHNob3VsZCBnaXZlIG1lIGEgZ29vZCBoYW5kbGUgb24gaG93IHRoZSBjb2RlIHdpbGwgcmVhY3QgdG8gdGhlc2UgYWRkZWQgcnVsZXMuIFRoaXMgY2hhbmdlIGNvdWxkIHBvdGVudGlhbGx5IGludHJvZHVjZSBzdWJ0bGUgc2lkZSBlZmZlY3RzLCBzbyBJIHdpbGwgaGF2ZSB0byBmb2xsb3cgdGhlIGNvZGUgYW5kIGNoZWNrLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzgzMywiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyOSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDExOjQzOjEyLjY4ODkyNzI2WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkyNTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNjMwLFxuICBcIkxpbmVDb3VudFwiOiA4MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNjMwOlxcdFxcdFxcdFxcdHJldHVybiBcXHUwMDI2cmVnRG9tYWluUGFpcnNbaV07XFxuIDYzMTpcXHRcXHR9XFxuIDYzMjpcXHRcXHRyZXR1cm4gTlVMTDtcXG4gNjMzOlxcdH1cXG4gNjM0OlxcdFxcbiA2MzU6XFx0c3RhdGljIGludFxcbiA2MzY6XFx0YXRoX3JlZ2RfaW5pdF93aXBoeShzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZyxcXG4gNjM3OlxcdFxcdFxcdCAgICBzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbiA2Mzg6XFx0XFx0XFx0ICAgIHZvaWQgKCpyZWdfbm90aWZpZXIpKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuIDYzOTpcXHRcXHRcXHRcXHRcXHRcXHQgc3RydWN0IHJlZ3VsYXRvcnlfcmVxdWVzdCAqcmVxdWVzdCkpXFxuIDY0MDpcXHR7XFxuIDY0MTpcXHRcXHRjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiAqcmVnZDtcXG4gNjQyOlxcdFxcbiA2NDM6XFx0XFx0d2lwaHktXFx1MDAzZXJlZ19ub3RpZmllciA9IHJlZ19ub3RpZmllcjtcXG4gNjQ0OlxcdFxcdHdpcGh5LVxcdTAwM2VyZWd1bGF0b3J5X2ZsYWdzIHw9IFJFR1VMQVRPUllfU1RSSUNUX1JFRyB8XFxuIDY0NTpcXHRcXHRcXHRcXHRcXHQgICBSRUdVTEFUT1JZX0NVU1RPTV9SRUc7XFxuIDY0NjpcXHRcXG4gNjQ3OlxcdFxcdGlmIChhdGhfaXNfd29ybGRfcmVnZChyZWcpKSB7XFxuIDY0ODpcXHRcXHRcXHQvKlxcbiA2NDk6XFx0XFx0XFx0ICogQW55dGhpbmcgYXBwbGllZCBoZXJlIChwcmlvciB0byB3aXBoeSByZWdpc3RyYXRpb24pIGdldHNcXG4gNjUwOlxcdFxcdFxcdCAqIHNhdmVkIG9uIHRoZSB3aXBoeSBvcmlnXyogcGFyYW1ldGVyc1xcbiA2NTE6XFx0XFx0XFx0ICovXFxuIDY1MjpcXHRcXHRcXHRyZWdkID0gYXRoX3dvcmxkX3JlZ2RvbWFpbihyZWcpO1xcbiA2NTM6XFx0XFx0XFx0d2lwaHktXFx1MDAzZXJlZ3VsYXRvcnlfZmxhZ3MgfD0gUkVHVUxBVE9SWV9DT1VOVFJZX0lFX0ZPTExPV19QT1dFUjtcXG4gNjU0OlxcdFxcdH0gZWxzZSB7XFxuIDY1NTpcXHRcXHRcXHQvKlxcbiA2NTY6XFx0XFx0XFx0ICogVGhpcyBnZXRzIGFwcGxpZWQgaW4gdGhlIGNhc2Ugb2YgdGhlIGFic2VuY2Ugb2YgQ1JEQSxcXG4gNjU3OlxcdFxcdFxcdCAqIGl0J3Mgb3VyIG93biBjdXN0b20gd29ybGQgcmVndWxhdG9yeSBkb21haW4sIHNpbWlsYXIgdG9cXG4gNjU4OlxcdFxcdFxcdCAqIGNmZzgwMjExJ3MgYnV0IHdlIGVuYWJsZSBwYXNzaXZlIHNjYW5uaW5nLlxcbiA2NTk6XFx0XFx0XFx0ICovXFxuIDY2MDpcXHRcXHRcXHRyZWdkID0gYXRoX2RlZmF1bHRfd29ybGRfcmVnZG9tYWluKCk7XFxuIDY2MTpcXHRcXHR9XFxuIDY2MjpcXHRcXG4gNjYzOlxcdFxcdHdpcGh5X2FwcGx5X2N1c3RvbV9yZWd1bGF0b3J5KHdpcGh5LCByZWdkKTtcXG4gNjY0OlxcdFxcdGF0aF9yZWdfYXBwbHlfcmFkYXJfZmxhZ3Mod2lwaHksIHJlZyk7XFxuIDY2NTpcXHRcXHRhdGhfcmVnX2FwcGx5X3dvcmxkX2ZsYWdzKHdpcGh5LCBOTDgwMjExX1JFR0RPTV9TRVRfQllfRFJJVkVSLCByZWcpO1xcbiA2NjY6XFx0XFx0cmV0dXJuIDA7XFxuIDY2NzpcXHR9XFxuIDY2ODpcXHRcXG4gNjY5OlxcdC8qXFxuIDY3MDpcXHQgKiBTb21lIHVzZXJzIGhhdmUgcmVwb3J0ZWQgdGhlaXIgRUVQUk9NIHByb2dyYW1tZWQgd2l0aFxcbiA2NzE6XFx0ICogMHg4MDAwIHNldCwgdGhpcyBpcyBub3QgYSBzdXBwb3J0ZWQgcmVndWxhdG9yeSBkb21haW5cXG4gNjcyOlxcdCAqIGJ1dCBzaW5jZSB3ZSBoYXZlIG1vcmUgdGhhbiBvbmUgdXNlciB3aXRoIGl0IHdlIG5lZWRcXG4gNjczOlxcdCAqIGEgc29sdXRpb24gZm9yIHRoZW0uIFdlIGRlZmF1bHQgdG8gMHg2NCwgd2hpY2ggaXMgdGhlXFxuIDY3NDpcXHQgKiBkZWZhdWx0IEF0aGVyb3Mgd29ybGQgcmVndWxhdG9yeSBkb21haW4uXFxuIDY3NTpcXHQgKi9cXG4gNjc2OlxcdHN0YXRpYyB2b2lkIGF0aF9yZWdkX3Nhbml0aXplKHN0cnVjdCBhdGhfcmVndWxhdG9yeSAqcmVnKVxcbiA2Nzc6XFx0e1xcbiA2Nzg6XFx0XFx0aWYgKHJlZy1cXHUwMDNlY3VycmVudF9yZCAhPSBDT1VOVFJZX0VSRF9GTEFHKVxcbiA2Nzk6XFx0XFx0XFx0cmV0dXJuO1xcbiA2ODA6XFx0XFx0cHJpbnRrKEtFUk5fREVCVUcgXFxcImF0aDogRUVQUk9NIHJlZ2RvbWFpbiBzYW5pdGl6ZWRcXFxcblxcXCIpO1xcbiA2ODE6XFx0XFx0cmVnLVxcdTAwM2VjdXJyZW50X3JkID0gMHg2NDtcXG4gNjgyOlxcdH1cXG4gNjgzOlxcdFxcbiA2ODQ6XFx0c3RhdGljIGludCBfX2F0aF9yZWdkX2luaXQoc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcpXFxuIDY4NTpcXHR7XFxuIDY4NjpcXHRcXHRzdHJ1Y3QgY291bnRyeV9jb2RlX3RvX2VudW1fcmQgKmNvdW50cnkgPSBOVUxMO1xcbiA2ODc6XFx0XFx0dTE2IHJlZ2RtbjtcXG4gNjg4OlxcdFxcbiA2ODk6XFx0XFx0aWYgKCFyZWcpXFxuIDY5MDpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gNjkxOlxcdFxcbiA2OTI6XFx0XFx0YXRoX3JlZ2Rfc2FuaXRpemUocmVnKTtcXG4gNjkzOlxcdFxcbiA2OTQ6XFx0XFx0cHJpbnRrKEtFUk5fREVCVUcgXFxcImF0aDogRUVQUk9NIHJlZ2RvbWFpbjogMHglMHhcXFxcblxcXCIsIHJlZy1cXHUwMDNlY3VycmVudF9yZCk7XFxuIDY5NTpcXHRcXG4gNjk2OlxcdFxcdGlmICghYXRoX3JlZ2RfaXNfZWVwcm9tX3ZhbGlkKHJlZykpIHtcXG4gNjk3OlxcdFxcdFxcdHByX2VycihcXFwiSW52YWxpZCBFRVBST00gY29udGVudHNcXFxcblxcXCIpO1xcbiA2OTg6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIDY5OTpcXHRcXHR9XFxuIDcwMDpcXHRcXG4gNzAxOlxcdFxcdHJlZ2RtbiA9IGF0aF9yZWdkX2dldF9lZXByb21SRChyZWcpO1xcbiA3MDI6XFx0XFx0cmVnLVxcdTAwM2Vjb3VudHJ5X2NvZGUgPSBhdGhfcmVnZF9nZXRfZGVmYXVsdF9jb3VudHJ5KHJlZ2Rtbik7XFxuIDcwMzpcXHRcXG4gNzA0OlxcdFxcdGlmIChyZWctXFx1MDAzZWNvdW50cnlfY29kZSA9PSBDVFJZX0RFRkFVTFQgXFx1MDAyNlxcdTAwMjZcXG4gNzA1OlxcdFxcdCAgICByZWdkbW4gPT0gQ1RSWV9ERUZBVUxUKSB7XFxuIDcwNjpcXHRcXHRcXHRwcmludGsoS0VSTl9ERUJVRyBcXFwiYXRoOiBFRVBST00gaW5kaWNhdGVzIGRlZmF1bHQgXFxcIlxcbiA3MDc6XFx0XFx0XFx0ICAgICAgIFxcXCJjb3VudHJ5IGNvZGUgc2hvdWxkIGJlIHVzZWRcXFxcblxcXCIpO1xcbiA3MDg6XFx0XFx0XFx0cmVnLVxcdTAwM2Vjb3VudHJ5X2NvZGUgPSBDVFJZX1VOSVRFRF9TVEFURVM7XFxuIDcwOTpcXHRcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDExOjQzOjEyLjY4OTAyMjMyWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjYyNzc4OTU1NTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipEaXNzZWN0aW5nIHRoZSBSZWd1bGF0b3J5IEluaXRpYWxpemF0aW9uKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIHJlZ3VsYXRvcnkgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgZm9yIGEgd2lyZWxlc3MgZGV2aWNlLiBUaGUgdHJhaWwgc3RhcnRzIHdpdGggYGF0aF9yZWdkX2luaXRfd2lwaHlgLCBhbmQgSSBzZWUgaXQgaW1tZWRpYXRlbHkgaGFuZHMgb2ZmIHRvIGB3aXBoeV9hcHBseV9jdXN0b21fcmVndWxhdG9yeWAg4oCTIHRoYXQncyB0aGUga2V5IGZ1bmN0aW9uLiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyAqYWN0dWFsbHkqIGhhcHBlbmluZyBoZXJlLiBJdCdzIHRpbWUgdG8gY3JhY2sgb3BlbiBgbmV0L3dpcmVsZXNzL3JlZy5jYCBhbmQgZGl2ZSBpbnRvIHRoZSBzb3VyY2UgY29kZSBmb3IgYHdpcGh5X2FwcGx5X2N1c3RvbV9yZWd1bGF0b3J5YC4gSSB3YW50IHRvIHNlZSBwcmVjaXNlbHkgaG93IHRoYXQgZnVuY3Rpb24gdGFrZXMgdGhlIGB3aXBoeWAgc3RydWN0dXJlIGFuZCB0aGUgYHJlZ2RgIChyZWd1bGF0b3J5IGRvbWFpbikgc3RydWN0dXJlLCBhbmQgYXBwbGllcyB0aGUgY3VzdG9tIHJlZ3VsYXRvcnkgc2V0dGluZ3MuIFdoYXQgcGFyYW1ldGVycyBhcmUgYmVpbmcgcGFzc2VkPyBIb3cgYXJlIHRoZXkgYmVpbmcgcHJvY2Vzc2VkPyBXaGF0J3MgdGhlIGNvbnRyb2wgZmxvdz8gVGhpcyBmdW5jdGlvbiBpcyBsaWtlbHkgdGhlIGxpbmNocGluIG9mIGhvdyB0aGUgZHJpdmVyIGludGVyYWN0cyB3aXRoIHRoZSByZWd1bGF0b3J5IGRvbWFpbiBkYXRhLCBzbyB1bmRlcnN0YW5kaW5nIGl0cyBndXRzIGlzIGNyaXRpY2FsIHRvIHNlZWluZyBob3cgdGhpcyBkcml2ZXIgd29ya3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5ODg2LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxMTo0NDoxNS40Njc5ODAxNVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzYzNjg2NTIzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIndpcGh5X2FwcGx5X2N1c3RvbV9yZWd1bGF0b3J5XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC93aXJlbGVzc1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvd2lyZWxlc3MvcmVnLmM9MjU5Mz1zdGF0aWMgdm9pZCBoYW5kbGVfYmFuZF9jdXN0b20oc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4tLVxcbm5ldC93aXJlbGVzcy9yZWcuYy0yNjEyLS8qIFVzZWQgYnkgZHJpdmVycyBwcmlvciB0byB3aXBoeSByZWdpc3RyYXRpb24gKi9cXG5uZXQvd2lyZWxlc3MvcmVnLmM6MjYxMzp2b2lkIHdpcGh5X2FwcGx5X2N1c3RvbV9yZWd1bGF0b3J5KHN0cnVjdCB3aXBoeSAqd2lwaHksXFxubmV0L3dpcmVsZXNzL3JlZy5jLTI2MTQtXFx0XFx0XFx0XFx0ICAgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW4gKnJlZ2QpXFxuLS1cXG5uZXQvd2lyZWxlc3MvcmVnLmMtMjY0Ny19XFxubmV0L3dpcmVsZXNzL3JlZy5jOjI2NDg6RVhQT1JUX1NZTUJPTCh3aXBoeV9hcHBseV9jdXN0b21fcmVndWxhdG9yeSk7XFxubmV0L3dpcmVsZXNzL3JlZy5jLTI2NDktXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDExOjQ0OjE1LjgzMTY3MjM0M1oiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNzQxNzgxMjgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYGF0aDlrX2h0Y2AgVVNCIERyaXZlciBmb3IgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgYXRoOWtfaHRjYCwgd2hpY2ggSSBrbm93IGlzIGEgVVNCIGRyaXZlciwgbXVjaCBsaWtlIGBjYXJsOTE3MGAuIE15IGluaXRpYWwgZm9jdXMgaXMgb24gdGhlIHByb2JlIHBhdGggYW5kIGhvdyB0aGUgZmlybXdhcmUgYW5kIGhhcmR3YXJlIGFyZSBpbml0aWFsaXplZCB3aXRoaW4gdGhpcyBkcml2ZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIGBhdGg5a19odGNgIGlzIHN1Y2Nlc3NmdWxseSBwcm9iZWQgaW4gZW52aXJvbm1lbnRzIGxpa2Ugc3l6a2FsbGVyIG9yIFFFTVUuIFRoaW5raW5nIGFib3V0IHN5emthbGxlcidzIFVTQiBmdXp6aW5nIGNhcGFiaWxpdGllcywgcGFydGljdWxhcmx5IHVzaW5nIHJhdyBnYWRnZXRzLCBgdXNiLWZ1enplcmAsIG9yIHZ1c2IsIHRoZSBhYmlsaXR5IHRvIHByb2JlIFVTQiBkcml2ZXJzIGJlY29tZXMgYSBjcml0aWNhbCBhdmVudWUuIEkgbmVlZCB0byBrbm93ICpob3cqIGBhdGg5a19odGNgIGdldHMgcHJvYmVkLiBUaGVyZWZvcmUsIEknbSBkaXZpbmcgZGVlcGVyIGludG8gdGhlIHByb2JlIHJvdXRpbmUuIEknbGwgZXhhbWluZSB0aGUgY29kZSBhdCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuY2AuIFRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgbG9naWMgd2lsbCByZXNpZGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBlbnRyeSBwb2ludHMgZm9yIGZ1enppbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwMzczLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDExOjQ0OjE4LjU3MzQ1NjM4NloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTIwOTgxODcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXRoOWtfaW5pdF9kZXZpY2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9haGIuYz01NT1zdGF0aWMgaW50IGF0aF9haGJfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9haGIuYy05OC1cXHRkZXZfaWQgPSAodTE2KShrZXJuZWxfdWxvbmdfdClvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoXFx1MDAyNnBkZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FoYi5jOjk5OlxcdHJldCA9IGF0aDlrX2luaXRfZGV2aWNlKGRldl9pZCwgc2MsIFxcdTAwMjZhdGhfYWhiX2J1c19vcHMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9haGIuYy0xMDAtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2F0aDlrLmg9MTEzMD12b2lkIGF0aF9yZXN0YXJ0X3dvcmsoc3RydWN0IGF0aF9zb2Z0YyAqc2MpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hdGg5ay5oOjExMzE6aW50IGF0aDlrX2luaXRfZGV2aWNlKHUxNiBkZXZpZCwgc3RydWN0IGF0aF9zb2Z0YyAqc2MsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2F0aDlrLmgtMTEzMi1cXHRcXHQgICAgY29uc3Qgc3RydWN0IGF0aF9idXNfb3BzICpidXNfb3BzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYz03ODU9c3RhdGljIGludCBhdGg5a19pbml0X2Zpcm13YXJlX3ZlcnNpb24oc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jLTgyNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM6ODI4OnN0YXRpYyBpbnQgYXRoOWtfaW5pdF9kZXZpY2Uoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy04MjktXFx0XFx0XFx0ICAgICB1MTYgZGV2aWQsIGNoYXIgKnByb2R1Y3QsIHUzMiBkcnZfaW5mbylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYz05MzE9aW50IGF0aDlrX2h0Y19wcm9iZV9kZXZpY2Uoc3RydWN0IGh0Y190YXJnZXQgKmh0Y19oYW5kbGUsIHN0cnVjdCBkZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy05NjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jOjk2MzpcXHRyZXQgPSBhdGg5a19pbml0X2RldmljZShwcml2LCBkZXZpZCwgcHJvZHVjdCwgZHJ2X2luZm8pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy05NjQtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmM9OTAzPXN0YXRpYyB2b2lkIGF0aDlrX3NldF9od19jYXBhYihzdHJ1Y3QgYXRoX3NvZnRjICpzYywgc3RydWN0IGllZWU4MDIxMV9odyAqaHcpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jLTEwMDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYzoxMDA0OmludCBhdGg5a19pbml0X2RldmljZSh1MTYgZGV2aWQsIHN0cnVjdCBhdGhfc29mdGMgKnNjLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmMtMTAwNS1cXHRcXHQgICAgY29uc3Qgc3RydWN0IGF0aF9idXNfb3BzICpidXNfb3BzKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3BjaS5jPTg4ND1zdGF0aWMgaW50IGF0aF9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9wY2kuYy05NzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3BjaS5jOjk3OTpcXHRyZXQgPSBhdGg5a19pbml0X2RldmljZShpZC1cXHUwMDNlZGV2aWNlLCBzYywgXFx1MDAyNmF0aF9wY2lfYnVzX29wcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3BjaS5jLTk4MC1cXHRpZiAocmV0KSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDExOjQ0OjE4LjYyNTU2MTg1MVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozMzUxMzAwMDc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIGhvdyBJJ2QgYXBwcm9hY2ggdGhhdCBrZXJuZWwgbW9kdWxlIGludmVzdGlnYXRpb24sIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgYW4gZXhwZXJ0OlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIGBhdGg5a19odGNgIFByb2JlIFBhdGgqKlxuXG5SaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gaXQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgYGF0aDlrX2h0Y2AgZHJpdmVyIGdldHMgbG9hZGVkLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gdGhlIFVTQiBIaWdoLVRocm91Z2hwdXQgQ2FwYWJpbGl0eSAoSFRDKSBpbml0aWFsaXphdGlvbi4gTXkgc3RhcnRpbmcgcG9pbnQgaXMgdGhlIG1vc3QgbG9naWNhbCBwbGFjZTogYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmNgLiBUaGF0J3Mgd2hlcmUgdGhlIFVTQi1zcGVjaWZpYyBISUYgKEhvc3QgSW50ZXJmYWNlKSBjb2RlIGZvciB0aGUgYXRoOWsgZmFtaWx5IHdpbGwgbGl2ZSwgYW5kIHRoZSBgYXRoOWtfaHRjYCBtb2R1bGUgaXMgdGhlIG9uZSByZXNwb25zaWJsZSBmb3IgdGhlIEhUQyBjb25uZWN0aW9uLCBzbyBpdCdzIGEgdmVyeSBnb29kIGZpcnN0IGd1ZXNzLlxuXG5NeSBleHBlY3RhdGlvbiBpcyB0byBmaW5kIHRoZSBVU0IgcHJvYmUgZnVuY3Rpb24gZGVmaW5lZCBoZXJlLiBJJ2xsIGxpa2VseSBiZSBzY2FubmluZyBmb3IgdGhpbmdzIGxpa2UgYHVzYl9kcml2ZXJgIHN0cnVjdHVyZXMsIGxpa2VseSBpbiB0aGUgZm9ybSBvZiBhIG1vZHVsZSBpbml0IGZ1bmN0aW9uIGxpa2UgYG1vZHVsZV9pbml0KGF0aDlrX2h0Y191c2JfaW5pdClgLiBJ4oCZbGwgYmUgbG9va2luZyBmb3Igd2hlcmUgdGhlIFVTQiBkZXZpY2UgSURzIGFyZSBtYXRjaGVkLCBwcm9iYWJseSBpbiBhIGB1c2JfZGV2aWNlX2lkYCB0YWJsZS4gSSdtIGV4cGVjdGluZyB0byBzZWUgd2hlcmUgdGhlIGRyaXZlciByZWdpc3RlcnMgaXRzZWxmIHdpdGggdGhlIFVTQiBjb3JlLCBhbmQgY3J1Y2lhbGx5LCB3aGVyZSB0aGUgYWN0dWFsIGBhdGg5a19odGNgIGRldmljZSBzdHJ1Y3R1cmUgaXMgYWxsb2NhdGVkIGFuZCBpbml0aWFsaXplZC4gSSdsbCBiZSBtZW50YWxseSB0cmFjaW5nIHRoZSBleGVjdXRpb24gZmxvdyBvZiB0aGUgcHJvYmUgZnVuY3Rpb24sIGxvb2tpbmcgZm9yIGFueSBjb25kaXRpb25hbCBzdGF0ZW1lbnRzIG9yIGVycm9yIGhhbmRsaW5nIHRoYXQgY291bGQgaW1wYWN0IHRoZSBtb2R1bGUncyBzdWNjZXNzIGluIGF0dGFjaGluZyB0byBhIHBhcnRpY3VsYXIgVVNCIGRldmljZS4gSSB3aWxsIGFsc28gbWFrZSBzdXJlIHRvIGNoZWNrIGFsbCB0aGUgcmVsYXRlZCBmdW5jdGlvbnMgY2FsbHMgdGhhdCBhcmUgdXNlZCBkdXJpbmcgdGhpcyBwcm9iZS5cblxuRXNzZW50aWFsbHksIEkgYW0gdHJ5aW5nIHRvIGFzY2VydGFpbiBwcmVjaXNlbHkgaG93IGFuZCB3aGVuIHRoZSBgYXRoOWtfaHRjYCBkcml2ZXIgYmluZHMgdG8gYSBtYXRjaGluZyBVU0IgZGV2aWNlLiBGcm9tIHRoZXJlLCBJJ2xsIGJlIGFibGUgdG8gYnVpbGQgYSBjbGVhcmVyIHVuZGVyc3RhbmRpbmcgb2YgcG90ZW50aWFsIHByb2JsZW1zIGFuZCBvcHRpbWl6YXRpb24gc3RyYXRlZ2llcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzE3MzYsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxMTo0NDoyMS45NzY4NjQ0ODZaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAyNzEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTI2MCxcbiAgXCJMaW5lQ291bnRcIjogODBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTI2MDpcXHRcXHRcXHRcXHRcXHRoaWZfZGV2LVxcdTAwM2VpZF9pbmZvKTtcXG4xMjYxOlxcdFxcdGlmIChyZXQpIHtcXG4xMjYyOlxcdFxcdFxcdHJldCA9IC1FSU5WQUw7XFxuMTI2MzpcXHRcXHRcXHRnb3RvIGVycl9odGNfaHdfaW5pdDtcXG4xMjY0OlxcdFxcdH1cXG4xMjY1OlxcdFxcbjEyNjY6XFx0XFx0cmVsZWFzZV9maXJtd2FyZShmdyk7XFxuMTI2NzpcXHRcXHRoaWZfZGV2LVxcdTAwM2VmbGFncyB8PSBISUZfVVNCX1JFQURZO1xcbjEyNjg6XFx0XFx0Y29tcGxldGVfYWxsKFxcdTAwMjZoaWZfZGV2LVxcdTAwM2Vmd19kb25lKTtcXG4xMjY5OlxcdFxcbjEyNzA6XFx0XFx0cmV0dXJuO1xcbjEyNzE6XFx0XFxuMTI3MjpcXHRlcnJfaHRjX2h3X2luaXQ6XFxuMTI3MzpcXHRcXHRhdGg5a19oaWZfdXNiX2Rldl9kZWluaXQoaGlmX2Rldik7XFxuMTI3NDpcXHRlcnJfZGV2X2luaXQ6XFxuMTI3NTpcXHRcXHRhdGg5a19odGNfaHdfZnJlZShoaWZfZGV2LVxcdTAwM2VodGNfaGFuZGxlKTtcXG4xMjc2OlxcdGVycl9kZXZfYWxsb2M6XFxuMTI3NzpcXHRcXHRyZWxlYXNlX2Zpcm13YXJlKGZ3KTtcXG4xMjc4OlxcdGVycl9mdzpcXG4xMjc5OlxcdFxcdGF0aDlrX2hpZl91c2JfZmlybXdhcmVfZmFpbChoaWZfZGV2KTtcXG4xMjgwOlxcdH1cXG4xMjgxOlxcdFxcbjEyODI6XFx0LypcXG4xMjgzOlxcdCAqIEFuIGV4YWN0IGNvcHkgb2YgdGhlIGZ1bmN0aW9uIGZyb20gemQxMjExcncuXFxuMTI4NDpcXHQgKi9cXG4xMjg1OlxcdHN0YXRpYyBpbnQgc2VuZF9lamVjdF9jb21tYW5kKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRlcmZhY2UpXFxuMTI4NjpcXHR7XFxuMTI4NzpcXHRcXHRzdHJ1Y3QgdXNiX2RldmljZSAqdWRldiA9IGludGVyZmFjZV90b191c2JkZXYoaW50ZXJmYWNlKTtcXG4xMjg4OlxcdFxcdHN0cnVjdCB1c2JfaG9zdF9pbnRlcmZhY2UgKmlmYWNlX2Rlc2MgPSBpbnRlcmZhY2UtXFx1MDAzZWN1cl9hbHRzZXR0aW5nO1xcbjEyODk6XFx0XFx0c3RydWN0IHVzYl9lbmRwb2ludF9kZXNjcmlwdG9yICplbmRwb2ludDtcXG4xMjkwOlxcdFxcdHVuc2lnbmVkIGNoYXIgKmNtZDtcXG4xMjkxOlxcdFxcdHU4IGJ1bGtfb3V0X2VwO1xcbjEyOTI6XFx0XFx0aW50IHI7XFxuMTI5MzpcXHRcXG4xMjk0OlxcdFxcdGlmIChpZmFjZV9kZXNjLVxcdTAwM2VkZXNjLmJOdW1FbmRwb2ludHMgXFx1MDAzYyAyKVxcbjEyOTU6XFx0XFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuMTI5NjpcXHRcXG4xMjk3OlxcdFxcdC8qIEZpbmQgYnVsayBvdXQgZW5kcG9pbnQgKi9cXG4xMjk4OlxcdFxcdGZvciAociA9IDE7IHIgXFx1MDAzZT0gMDsgci0tKSB7XFxuMTI5OTpcXHRcXHRcXHRlbmRwb2ludCA9IFxcdTAwMjZpZmFjZV9kZXNjLVxcdTAwM2VlbmRwb2ludFtyXS5kZXNjO1xcbjEzMDA6XFx0XFx0XFx0aWYgKHVzYl9lbmRwb2ludF9kaXJfb3V0KGVuZHBvaW50KSBcXHUwMDI2XFx1MDAyNlxcbjEzMDE6XFx0XFx0XFx0ICAgIHVzYl9lbmRwb2ludF94ZmVyX2J1bGsoZW5kcG9pbnQpKSB7XFxuMTMwMjpcXHRcXHRcXHRcXHRidWxrX291dF9lcCA9IGVuZHBvaW50LVxcdTAwM2ViRW5kcG9pbnRBZGRyZXNzO1xcbjEzMDM6XFx0XFx0XFx0XFx0YnJlYWs7XFxuMTMwNDpcXHRcXHRcXHR9XFxuMTMwNTpcXHRcXHR9XFxuMTMwNjpcXHRcXHRpZiAociA9PSAtMSkge1xcbjEzMDc6XFx0XFx0XFx0ZGV2X2VycihcXHUwMDI2dWRldi1cXHUwMDNlZGV2LFxcbjEzMDg6XFx0XFx0XFx0XFx0XFxcImF0aDlrX2h0YzogQ291bGQgbm90IGZpbmQgYnVsayBvdXQgZW5kcG9pbnRcXFxcblxcXCIpO1xcbjEzMDk6XFx0XFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuMTMxMDpcXHRcXHR9XFxuMTMxMTpcXHRcXG4xMzEyOlxcdFxcdGNtZCA9IGt6YWxsb2MoMzEsIEdGUF9LRVJORUwpO1xcbjEzMTM6XFx0XFx0aWYgKGNtZCA9PSBOVUxMKVxcbjEzMTQ6XFx0XFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuMTMxNTpcXHRcXG4xMzE2OlxcdFxcdC8qIFVTQiBidWxrIGNvbW1hbmQgYmxvY2sgKi9cXG4xMzE3OlxcdFxcdGNtZFswXSA9IDB4NTU7XFx0LyogYnVsayBjb21tYW5kIHNpZ25hdHVyZSAqL1xcbjEzMTg6XFx0XFx0Y21kWzFdID0gMHg1MztcXHQvKiBidWxrIGNvbW1hbmQgc2lnbmF0dXJlICovXFxuMTMxOTpcXHRcXHRjbWRbMl0gPSAweDQyO1xcdC8qIGJ1bGsgY29tbWFuZCBzaWduYXR1cmUgKi9cXG4xMzIwOlxcdFxcdGNtZFszXSA9IDB4NDM7XFx0LyogYnVsayBjb21tYW5kIHNpZ25hdHVyZSAqL1xcbjEzMjE6XFx0XFx0Y21kWzE0XSA9IDY7XFx0LyogY29tbWFuZCBsZW5ndGggKi9cXG4xMzIyOlxcdFxcbjEzMjM6XFx0XFx0Y21kWzE1XSA9IDB4MWI7XFx0LyogU0NTSSBjb21tYW5kOiBTVEFSVCBTVE9QIFVOSVQgKi9cXG4xMzI0OlxcdFxcdGNtZFsxOV0gPSAweDI7XFx0LyogZWplY3QgZGlzYyAqL1xcbjEzMjU6XFx0XFxuMTMyNjpcXHRcXHRkZXZfaW5mbyhcXHUwMDI2dWRldi1cXHUwMDNlZGV2LCBcXFwiRWplY3Rpbmcgc3RvcmFnZSBkZXZpY2UuLi5cXFxcblxcXCIpO1xcbjEzMjc6XFx0XFx0ciA9IHVzYl9idWxrX21zZyh1ZGV2LCB1c2Jfc25kYnVsa3BpcGUodWRldiwgYnVsa19vdXRfZXApLFxcbjEzMjg6XFx0XFx0XFx0Y21kLCAzMSwgTlVMTCwgMiAqIFVTQl9NU0dfVElNRU9VVCk7XFxuMTMyOTpcXHRcXHRrZnJlZShjbWQpO1xcbjEzMzA6XFx0XFx0aWYgKHIpXFxuMTMzMTpcXHRcXHRcXHRyZXR1cm4gcjtcXG4xMzMyOlxcdFxcbjEzMzM6XFx0XFx0LyogQXQgdGhpcyBwb2ludCwgdGhlIGRldmljZSBkaXNjb25uZWN0cyBhbmQgcmVjb25uZWN0cyB3aXRoIHRoZSByZWFsXFxuMTMzNDpcXHRcXHQgKiBJRCBudW1iZXJzLiAqL1xcbjEzMzU6XFx0XFxuMTMzNjpcXHRcXHR1c2Jfc2V0X2ludGZkYXRhKGludGVyZmFjZSwgTlVMTCk7XFxuMTMzNzpcXHRcXHRyZXR1cm4gMDtcXG4xMzM4OlxcdH1cXG4xMzM5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxMTo0NDoyMS45NzY5Njg1MjZaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzI0OTU0MTA0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbnZlc3RpZ2F0aXZlIFByb2Nlc3MgZm9yIFJlZ3VsYXRvcnkgRG9tYWluIEluaXRpYWxpemF0aW9uKipcblxuT2theSwgaGVyZSdzIHRoZSBnYW1lIHBsYW4uIEknbSBmb2N1c2luZyBvbiB0aGUgYGF0aDlrX2h0Y2AgZHJpdmVyIGFuZCBpdHMgcmVndWxhdG9yeSBkb21haW4gaGFuZGxpbmcuIEkga25vdyB0aGF0IGBhdGg5a19odGNgIGxvYWRzIGZpcm13YXJlIChgcmVsZWFzZV9maXJtd2FyZWApIGJlZm9yZSBpdCBpbml0aWFsaXplcyB0aGUgZGV2aWNlIGFuZCBjYWxscyBgYXRoX3JlZ2RfaW5pdGAuIEJ1dCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgKmZ1bGwqIHBpY3R1cmUgaGVyZS5cblxuTXkgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgdGhlIGBhdGhfd29ybGRfcmVnZG9tXypgIGZ1bmN0aW9ucy4gQXJlIHRob3NlIHRoZSBvbmx5IHBvaW50cyBvZiBjb250YWN0IHdpdGggcmVndWxhdG9yeSBjb2RlLCBvciBpcyB0aGVyZSBhbm90aGVyIHNwb3Qgd2hlcmUgYGF0aF9yZWdkYCBpcyBjYWxsZWQgaW50byBhY3Rpb24/XG5cbkknbSB0aGlua2luZyBhYm91dCB0aGUgYmlnZ2VyIHBpY3R1cmUsIHNvIEknbGwgYWxzbyBzdGFydCBjaGVja2luZyBmb3IgaW50ZXJhY3Rpb25zIHdpdGggdGhlIHJlZ3VsYXRvcnkgZG9tYWluIGZ1bmN0aW9uYWxpdHkgdGhyb3VnaCBvdGhlciBtZXRob2RzLiBOZXRsaW5rIGFuZCBjZmc4MDIxMSBjb21tYW5kcywgYW55dGhpbmcgaW4gc3lzZnMg4oCTIHRob3NlIGFyZSBhbGwgcG9zc2liaWxpdGllcy4gSSB3YW50IHRvIHNlZSBpZiBhbnl0aGluZyBkaXJlY3RseSBhY2Nlc3NlcyBmdW5jdGlvbnMgZGVmaW5lZCBpbiBgcmVnZC5jYCBvciB1dGlsaXplcyB0aGVzZSBzcGVjaWZpYyByZWdkb21haW5zLlxuXG5UbyBtYWtlIHN1cmUgSSdtIGNvdmVyaW5nIGFsbCBiYXNlcywgSSB3aWxsIHBlcmZvcm0gYSBjb21wcmVoZW5zaXZlIHNlYXJjaCB0aHJvdWdob3V0IHRoZSBlbnRpcmUga2VybmVsIGNvZGViYXNlLiBJIHdpbGwgc2VhcmNoIGZvciBpbnN0YW5jZXMgb2YgYW55dGhpbmcgd2l0aCB0aGUgcHJlZml4ZXMgYGF0aF9yZWdfYCwgYGF0aF9yZWdkX2AsIG9yIGBhdGhfd29ybGRfcmVnZG9tYC4gSSdtIGdvaW5nIHRvIGZpbmQgYWxsIHRoZSBwaWVjZXMgYW5kIHB1dCB0aGVtIHRvZ2V0aGVyIHRvIGVuc3VyZSBJIHVuZGVyc3RhbmQgaG93IHRoaXMgd2hvbGUgcmVndWxhdG9yeSBtZWNoYW5pc20gd29ya3Mgd2l0aGluIHRoZSBrZXJuZWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzNDM0LCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTE6NDQ6MjUuMjI2NTEzODU5WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjg1MjA2NzIyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF0aF9yZWdkXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM9OTkwOD1zdGF0aWMgaW50IGF0aDEwa19tYWNfZ2V0X3dyZGRfcmVndWxhdG9yeShzdHJ1Y3QgYXRoMTBrICphciwgdTE2ICpyZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtOTk0Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jOjk5NDc6XFx0KnJkID0gYXRoX3JlZ2RfZmluZF9jb3VudHJ5X2J5X25hbWUoYWxwaGEyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTk5NDgtXFx0aWYgKCpyZCA9PSAweGZmZmYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jPTk5NzE9aW50IGF0aDEwa19tYWNfcmVnaXN0ZXIoc3RydWN0IGF0aDEwayAqYXIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTEwMzAyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM6MTAzMDM6XFx0cmV0ID0gYXRoX3JlZ2RfaW5pdChcXHUwMDI2YXItXFx1MDAzZWF0aF9jb21tb24ucmVndWxhdG9yeSwgYXItXFx1MDAzZWh3LVxcdTAwM2V3aXBoeSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTEwMzA0LVxcdFxcdFxcdCAgICBhdGgxMGtfcmVnX25vdGlmaWVyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9iYXNlLmM9MzAyNT1hdGg1a19pbml0KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDVrL2Jhc2UuYy0zMTM1LVxcdHJlZ3VsYXRvcnktXFx1MDAzZWN1cnJlbnRfcmQgPSBhaC1cXHUwMDNlYWhfY2FwYWJpbGl0aWVzLmNhcF9lZXByb20uZWVfcmVnZG9tYWluO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9iYXNlLmM6MzEzNjpcXHRyZXQgPSBhdGhfcmVnZF9pbml0KHJlZ3VsYXRvcnksIGh3LVxcdTAwM2V3aXBoeSwgYXRoNWtfcmVnX25vdGlmaWVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNWsvYmFzZS5jLTMxMzctXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDVrL3BoeS5jPTI3NjE9YXRoNWtfZ2V0X21heF9jdGxfcG93ZXIoc3RydWN0IGF0aDVrX2h3ICphaCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9waHkuYy0yNzc0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9waHkuYzoyNzc1OlxcdGN0bF9tb2RlID0gYXRoX3JlZ2RfZ2V0X2JhbmRfY3RsKHJlZ3VsYXRvcnksIGNoYW5uZWwtXFx1MDAzZWJhbmQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9waHkuYy0yNzc2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jPTgyOD1zdGF0aWMgaW50IGF0aDlrX2luaXRfZGV2aWNlKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy04NTEtXFx0LyogSW5pdGlhbGl6ZSByZWd1bGF0b3J5ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jOjg1MjpcXHRlcnJvciA9IGF0aF9yZWdkX2luaXQoXFx1MDAyNmNvbW1vbi1cXHUwMDNlcmVndWxhdG9yeSwgcHJpdi1cXHUwMDNlaHctXFx1MDAzZXdpcGh5LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy04NTMtXFx0XFx0XFx0ICAgICAgYXRoOWtfcmVnX25vdGlmaWVyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9ody5jPTExNzc9dTMyIGF0aDlrX3JlZ2RfZ2V0X2N0bChzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZywgc3RydWN0IGF0aDlrX2NoYW5uZWwgKmNoYW4pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h3LmMtMTE3OC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h3LmM6MTE3OTpcXHR1MzIgY3RsID0gYXRoX3JlZ2RfZ2V0X2JhbmRfY3RsKHJlZywgY2hhbi1cXHUwMDNlY2hhbi1cXHUwMDNlYmFuZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h3LmMtMTE4MC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmM9MTAwND1pbnQgYXRoOWtfaW5pdF9kZXZpY2UodTE2IGRldmlkLCBzdHJ1Y3QgYXRoX3NvZnRjICpzYyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmMtMTAyMi1cXHQvKiBJbml0aWFsaXplIHJlZ3VsYXRvcnkgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jOjEwMjM6XFx0ZXJyb3IgPSBhdGhfcmVnZF9pbml0KFxcdTAwMjZjb21tb24tXFx1MDAzZXJlZ3VsYXRvcnksIHNjLVxcdTAwM2Vody1cXHUwMDNld2lwaHksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYy0xMDI0LVxcdFxcdFxcdCAgICAgIGF0aDlrX3JlZ19ub3RpZmllcik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvbWFpbi5jPTE5NTM9aW50IGNhcmw5MTcwX3JlZ2lzdGVyKHN0cnVjdCBhcjkxNzAgKmFyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL21haW4uYy0xOTcwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9jYXJsOTE3MC9tYWluLmM6MTk3MTpcXHRlcnIgPSBhdGhfcmVnZF9pbml0KHJlZ3VsYXRvcnksIGFyLVxcdTAwM2Vody1cXHUwMDNld2lwaHksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL21haW4uYy0xOTcyLVxcdFxcdFxcdCAgICBjYXJsOTE3MF9yZWdfbm90aWZpZXIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL3BoeS5jPTEyOTE9c3RhdGljIHZvaWQgY2FybDkxNzBfY2FsY19jdGwoc3RydWN0IGFyOTE3MCAqYXIsIHUzMiBmcmVxLCBlbnVtIGNhcmw5MTcwX2J3IGJ3KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL3BoeS5jLTEzMjYtXFx0ICogaHByZWcuYzo6emZIcEdldFJlZ3VsYXRvcnlEb21haW4oKSBhbmRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvcGh5LmM6MTMyNzpcXHQgKiBhdGgvcmVnZC5jOjphdGhfcmVnZF9nZXRfYmFuZF9jdGwoKSAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL3BoeS5jLTEzMjgtXFx0ICogZS5nLiBmb3IgRkNDM19XT1JMRCB0aGUgT1RVUyBwcm9jZWR1cmVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9jYXJsOTE3MC9waHkuYy0xMzMxLVxcdCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9jYXJsOTE3MC9waHkuYzoxMzMyOlxcdGN0bF9ncnAgPSBhdGhfcmVnZF9nZXRfYmFuZF9jdGwoXFx1MDAyNmFyLVxcdTAwM2Vjb21tb24ucmVndWxhdG9yeSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvcGh5LmMtMTMzMy1cXHRcXHRcXHRcXHRcXHRhci1cXHUwMDNlaHctXFx1MDAzZWNvbmYuY2hhbmRlZi5jaGFuLVxcdTAwM2ViYW5kKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzoyNjpzdGF0aWMgaW50IF9fYXRoX3JlZ2RfaW5pdChzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0yNy1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM9MTk5PXN0YXRpYyBpbmxpbmUgYm9vbCBpc193d3Jfc2t1KHUxNiByZWdkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0yMDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzoyMDY6c3RhdGljIHUxNiBhdGhfcmVnZF9nZXRfZWVwcm9tUkQoc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0yMDcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYz0yMTE9Ym9vbCBhdGhfaXNfd29ybGRfcmVnZChzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTIxMi17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzoyMTM6XFx0cmV0dXJuIGlzX3d3cl9za3UoYXRoX3JlZ2RfZ2V0X2VlcHJvbVJEKHJlZykpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjE0LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM9NDM3PXN0YXRpYyB2b2lkIGF0aF9yZWdfYXBwbHlfd29ybGRfZmxhZ3Moc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNDU4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NDU5OnUxNiBhdGhfcmVnZF9maW5kX2NvdW50cnlfYnlfbmFtZShjaGFyICphbHBoYTIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy00NjAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy00NjktfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NDcwOkVYUE9SVF9TWU1CT0woYXRoX3JlZ2RfZmluZF9jb3VudHJ5X2J5X25hbWUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNDcxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM9NDcyPXN0YXRpYyBpbnQgX19hdGhfcmVnX2R5bl9jb3VudHJ5KHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTQ4MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjQ4MjpcXHRjb3VudHJ5X2NvZGUgPSBhdGhfcmVnZF9maW5kX2NvdW50cnlfYnlfbmFtZShyZXF1ZXN0LVxcdTAwM2VhbHBoYTIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNDgzLVxcdGlmIChjb3VudHJ5X2NvZGUgPT0gKHUxNikgLTEpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTQ4OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjQ4OTpcXHRfX2F0aF9yZWdkX2luaXQocmVnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTQ5MC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM9NTUwPUVYUE9SVF9TWU1CT0woYXRoX3JlZ19ub3RpZmllcl9hcHBseSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy01NTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo1NTI6c3RhdGljIGJvb2wgYXRoX3JlZ2RfaXNfZWVwcm9tX3ZhbGlkKHN0cnVjdCBhdGhfcmVndWxhdG9yeSAqcmVnKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNTUzLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjU1NDpcXHR1MTYgcmQgPSBhdGhfcmVnZF9nZXRfZWVwcm9tUkQocmVnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTU1NS1cXHRpbnQgaTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM9NTgxPXN0YXRpYyBzdHJ1Y3QgY291bnRyeV9jb2RlX3RvX2VudW1fcmQqXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo1ODI6YXRoX3JlZ2RfZmluZF9jb3VudHJ5KHUxNiBjb3VudHJ5Q29kZSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTU4My17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jPTU5ND1zdGF0aWMgc3RydWN0IGNvdW50cnlfY29kZV90b19lbnVtX3JkKlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NTk1OmF0aF9yZWdkX2ZpbmRfY291bnRyeV9ieV9yZChpbnQgcmVnZG1uKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNTk2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNjA2LS8qIFJldHVybnMgdGhlIG1hcCBvZiB0aGUgRUVQUk9NIHNldCBSRCB0byBhIGNvdW50cnkgY29kZSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NjA3OnN0YXRpYyB1MTYgYXRoX3JlZ2RfZ2V0X2RlZmF1bHRfY291bnRyeSh1MTYgcmQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy02MDgte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy02MTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo2MTM6XFx0XFx0Y291bnRyeSA9IGF0aF9yZWdkX2ZpbmRfY291bnRyeShjYyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy02MTQtXFx0XFx0aWYgKGNvdW50cnkgIT0gTlVMTClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM9NjM1PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjYzNjphdGhfcmVnZF9pbml0X3dpcGh5KHN0cnVjdCBhdGhfcmVndWxhdG9yeSAqcmVnLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNjM3LVxcdFxcdCAgICBzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy02NzUtICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo2NzY6c3RhdGljIHZvaWQgYXRoX3JlZ2Rfc2FuaXRpemUoc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy02Nzcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy02ODMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo2ODQ6c3RhdGljIGludCBfX2F0aF9yZWdkX2luaXQoc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy02ODUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy02OTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo2OTI6XFx0YXRoX3JlZ2Rfc2FuaXRpemUocmVnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTY5My1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNjk1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6Njk2OlxcdGlmICghYXRoX3JlZ2RfaXNfZWVwcm9tX3ZhbGlkKHJlZykpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTY5Ny1cXHRcXHRwcl9lcnIoXFxcIkludmFsaWQgRUVQUk9NIGNvbnRlbnRzXFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNzAwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NzAxOlxcdHJlZ2RtbiA9IGF0aF9yZWdkX2dldF9lZXByb21SRChyZWcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NzAyOlxcdHJlZy1cXHUwMDNlY291bnRyeV9jb2RlID0gYXRoX3JlZ2RfZ2V0X2RlZmF1bHRfY291bnRyeShyZWdkbW4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNzAzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy03MTUtXFx0XFx0ICAgICAgIFxcXCJtYXAgc2VhcmNoXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjcxNjpcXHRcXHRjb3VudHJ5ID0gYXRoX3JlZ2RfZmluZF9jb3VudHJ5KHJlZy1cXHUwMDNlY291bnRyeV9jb2RlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTcxNy1cXHRcXHRpZiAoY291bnRyeSA9PSBOVUxMKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTczOS1cXHRpZiAoIWNvdW50cnkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo3NDA6XFx0XFx0Y291bnRyeSA9IGF0aF9yZWdkX2ZpbmRfY291bnRyeV9ieV9yZChyZWdkbW4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNzQxLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYz03NTg9aW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo3NTk6YXRoX3JlZ2RfaW5pdChzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTc2MC1cXHQgICAgICBzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy03NjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo3Njg6XFx0ciA9IF9fYXRoX3JlZ2RfaW5pdChyZWcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNzY5LVxcdGlmIChyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy03NzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo3NzY6XFx0YXRoX3JlZ2RfaW5pdF93aXBoeShyZWcsIHdpcGh5LCByZWdfbm90aWZpZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNzc3LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy03NzktfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NzgwOkVYUE9SVF9TWU1CT0woYXRoX3JlZ2RfaW5pdCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy03ODEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo3ODI6dTMyIGF0aF9yZWdkX2dldF9iYW5kX2N0bChzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTc4My1cXHRcXHRcXHQgIGVudW0gbmw4MDIxMV9iYW5kIGJhbmQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTc4Ni1cXHQgICAgKHJlZy1cXHUwMDNlY291bnRyeV9jb2RlID09IENUUllfREVGQVVMVCBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6Nzg3OlxcdCAgICAgaXNfd3dyX3NrdShhdGhfcmVnZF9nZXRfZWVwcm9tUkQocmVnKSkpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy03ODgtXFx0XFx0cmV0dXJuIFNEX05PX0NUTDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNzkwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NzkxOlxcdGlmIChhdGhfcmVnZF9nZXRfZWVwcm9tUkQocmVnKSA9PSBDVFJZX0RFRkFVTFQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTc5Mi1cXHRcXHRzd2l0Y2ggKHJlZy1cXHUwMDNlcmVnaW9uKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTgxMi19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo4MTM6RVhQT1JUX1NZTUJPTChhdGhfcmVnZF9nZXRfYmFuZF9jdGwpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuaD0yNjI9Ym9vbCBhdGhfaXNfNDlnaHpfYWxsb3dlZCh1MTYgcmVkb21haW4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmg6MjYzOnUxNiBhdGhfcmVnZF9maW5kX2NvdW50cnlfYnlfbmFtZShjaGFyICphbHBoYTIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmg6MjY0OmludCBhdGhfcmVnZF9pbml0KHN0cnVjdCBhdGhfcmVndWxhdG9yeSAqcmVnLCBzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmgtMjY1LVxcdFxcdCAgdm9pZCAoKnJlZ19ub3RpZmllcikoc3RydWN0IHdpcGh5ICp3aXBoeSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5oLTI2Ni1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHJlZ3VsYXRvcnlfcmVxdWVzdCAqcmVxdWVzdCkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmg6MjY3OnUzMiBhdGhfcmVnZF9nZXRfYmFuZF9jdGwoc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuaC0yNjgtXFx0XFx0XFx0ICBlbnVtIG5sODAyMTFfYmFuZCBiYW5kKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTE6NDQ6MjYuOTExNzI5MzkxWiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI3Mzg4NTg2ODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBhdGhfcmVnZCBJbml0aWFsaXphdGlvbioqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBvYnNlcnZhdGlvbiBpcyB0aGF0IGBhdGhfcmVnZF9pbml0YCBzZWVtcyBwcmV0dHkgY3J1Y2lhbCwgYW5kIGl0J3MgYmVpbmcgY2FsbGVkIGJ5IGEgZGl2ZXJzZSByYW5nZSBvZiBkcml2ZXJzLiBJIHNlZSBpdCBpbnZva2VkIGJ5IHRoZSBgYXRoMTBrYCwgYGF0aDVrYCwgYGF0aDlrX2h0Y2AsIGBhdGg5a2AsIGFuZCBgY2FybDkxNzBgIGZhbWlsaWVzLiBUaGVzZSBjb3ZlciBhIGJyb2FkIHNwZWN0cnVtIG9mIGhhcmR3YXJlIGludGVyZmFjZXM6IFBDSSwgU05PQywgU0RJTywgQUhCLCBhbmQgVVNCLiBUaGF0J3MgYSBzdHJvbmcgaW5kaWNhdGlvbiB0aGF0IHRoaXMgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24gaXMgZnVuZGFtZW50YWwgdG8gcmVndWxhdG9yeSBkb21haW4gbWFuYWdlbWVudCBhY3Jvc3MgYSBsb3Qgb2YgZGlmZmVyZW50IGRldmljZXMuXG5cbkhvbGQgb24gYSBzZWNvbmQsIHRob3VnaC4gSSBuZWVkIHRvIGJlIHRob3JvdWdoLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgYmlnIHBpY3R1cmUuIFdoYXQgYWJvdXQgYGF0aF9yZWdfbm90aWZpZXJfYXBwbHlgPyBJIHJlbWVtYmVyIHRoYXQsIGJ1dCB3aGVyZSBkb2VzIGl0IGZpdCBpbnRvIHRoZSBwaWN0dXJlPyBJJ20gZ29pbmcgdG8gaGF2ZSB0byBjaGVjayB3aGVyZSB0aGF0J3MgY2FsbGVkLCBiZWNhdXNlIEknbSBiZXR0aW5nIHRoYXQncyBhbiBpbXBvcnRhbnQgcGllY2Ugb2YgdGhlIHB1enpsZS4gSSBuZWVkIHRvIHNlZSBob3cgdGhlc2UgdHdvIGZ1bmN0aW9ucyByZWxhdGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4MTI4LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDExOjQ0OjI5LjY1MDU5MDk0NFoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTEzMTEzNjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXRoX3JlZ19ub3RpZmllcl9hcHBseVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYz0zNTYxPXN0YXRpYyB2b2lkIGF0aDEwa19yZWdfbm90aWZpZXIoc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtMzU2Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jOjM1Njg6XFx0YXRoX3JlZ19ub3RpZmllcl9hcHBseSh3aXBoeSwgcmVxdWVzdCwgXFx1MDAyNmFyLVxcdTAwM2VhdGhfY29tbW9uLnJlZ3VsYXRvcnkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtMzU2OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9iYXNlLmM9MjUyPXN0YXRpYyB2b2lkIGF0aDVrX3JlZ19ub3RpZmllcihzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDVrL2Jhc2UuYy0yNTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDVrL2Jhc2UuYzoyNTk6XFx0YXRoX3JlZ19ub3RpZmllcl9hcHBseSh3aXBoeSwgcmVxdWVzdCwgcmVndWxhdG9yeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDVrL2Jhc2UuYy0yNjAtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jPTIyND1zdGF0aWMgdm9pZCBhdGg5a19yZWdfbm90aWZpZXIoc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy0yMjktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jOjIzMDpcXHRhdGhfcmVnX25vdGlmaWVyX2FwcGx5KHdpcGh5LCByZXF1ZXN0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy0yMzEtXFx0XFx0XFx0ICAgICAgIGF0aDlrX2h3X3JlZ3VsYXRvcnkocHJpdi1cXHUwMDNlYWgpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmM9MjQ5PXN0YXRpYyB2b2lkIGF0aDlrX3JlZ19ub3RpZmllcihzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYy0yNTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYzoyNTc6XFx0YXRoX3JlZ19ub3RpZmllcl9hcHBseSh3aXBoeSwgcmVxdWVzdCwgcmVnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jLTI1OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9jYXJsOTE3MC9tYWluLmM9MTk0ND1zdGF0aWMgdm9pZCBjYXJsOTE3MF9yZWdfbm90aWZpZXIoc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9jYXJsOTE3MC9tYWluLmMtMTk0OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvbWFpbi5jOjE5NTA6XFx0YXRoX3JlZ19ub3RpZmllcl9hcHBseSh3aXBoeSwgcmVxdWVzdCwgXFx1MDAyNmFyLVxcdTAwM2Vjb21tb24ucmVndWxhdG9yeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL21haW4uYy0xOTUxLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM9NDk2PXN0YXRpYyB2b2lkIGF0aF9yZWdfZHluX2NvdW50cnkoc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNTA4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NTA5OnZvaWQgYXRoX3JlZ19ub3RpZmllcl9hcHBseShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNTEwLVxcdFxcdFxcdCAgICBzdHJ1Y3QgcmVndWxhdG9yeV9yZXF1ZXN0ICpyZXF1ZXN0LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy01NDktfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NTUwOkVYUE9SVF9TWU1CT0woYXRoX3JlZ19ub3RpZmllcl9hcHBseSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy01NTEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5oPTI2Nz11MzIgYXRoX3JlZ2RfZ2V0X2JhbmRfY3RsKHN0cnVjdCBhdGhfcmVndWxhdG9yeSAqcmVnLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmgtMjY4LVxcdFxcdFxcdCAgZW51bSBubDgwMjExX2JhbmQgYmFuZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuaDoyNjk6dm9pZCBhdGhfcmVnX25vdGlmaWVyX2FwcGx5KHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuaC0yNzAtXFx0XFx0XFx0ICAgIHN0cnVjdCByZWd1bGF0b3J5X3JlcXVlc3QgKnJlcXVlc3QsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDExOjQ0OjI5LjcwMTkwNjdaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjgxODAyMDA0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgUmVndWxhdG9yeSBEb21haW4gQ2hhbmdlcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGhvdyB0aGUgc3lzdGVtIGhhbmRsZXMgY2hhbmdlcyB0byB0aGUgcmVndWxhdG9yeSBkb21haW4uIEl0IGxvb2tzIGxpa2UgYGF0aF9yZWdfbm90aWZpZXJfYXBwbHlgIGlzIHRoZSBrZXkgZnVuY3Rpb24uIFRoaXMgaXMgdHJpZ2dlcmVkLCBpdCBzZWVtcywgd2hlbiBzb21lb25lIOKAkyBtYXliZSB0aHJvdWdoIGBubDgwMjExYCBmcm9tIHVzZXJzcGFjZSDigJMgc2V0cyBhIG5ldyByZWd1bGF0b3J5IGRvbWFpbiBvciBjb3VudHJ5IGNvZGUuIFRoYXQgbWFrZXMgc2Vuc2UsIGhhbmRsaW5nIHRob3NlIHVwZGF0ZXMgaXMgY3JpdGljYWwgZm9yIGNvbXBsaWFuY2UgYW5kIHByb3BlciBvcGVyYXRpb24uXG5cbk15IG5leHQgc3RlcCBpcyB0byBkaXZlIGludG8gdGhlIHNvdXJjZSBjb2RlIGZvciBgYXRoX3JlZ19ub3RpZmllcl9hcHBseWAuIFNwZWNpZmljYWxseSwgSSdsbCBiZSBjaGVja2luZyBvdXQgdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jYCBmaWxlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGhhcHBlbnMgKndpdGhpbiogdGhhdCBmdW5jdGlvbiB0byBnZXQgYSBmdWxsIHBpY3R1cmUgb2YgdGhlIHJlZ3VsYXRvcnkgY2hhbmdlIHByb2Nlc3MuIEknbSBnb2luZyB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBkYXRhIHN0cnVjdHVyZXMgdXNlZCwgdGhlIGNhbGxzIHRvIGxvd2VyLWxldmVsIGZ1bmN0aW9ucywgYW5kIGFueSBlcnJvciBoYW5kbGluZy4gVGhpcyBpcyBhIGNyaXRpY2FsIGFyZWEsIHNvIEkgd2FudCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIGl0IGNvbXBsZXRlbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5NTEwLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTE6NDQ6MzIuNTE5OTI5MjMzWiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkwNzExLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNTAwLFxuICBcIkxpbmVDb3VudFwiOiA2MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNTAwOlxcdFxcdGlmIChfX2F0aF9yZWdfZHluX2NvdW50cnkod2lwaHksIHJlZywgcmVxdWVzdCkpXFxuIDUwMTpcXHRcXHRcXHRyZXR1cm47XFxuIDUwMjpcXHRcXG4gNTAzOlxcdFxcdHByaW50ayhLRVJOX0RFQlVHIFxcXCJhdGg6IHJlZ2RvbWFpbiAweCUweCBcXFwiXFxuIDUwNDpcXHRcXHRcXHRcXHQgIFxcXCJkeW5hbWljYWxseSB1cGRhdGVkIGJ5ICVzXFxcXG5cXFwiLFxcbiA1MDU6XFx0XFx0ICAgICAgIHJlZy1cXHUwMDNlY3VycmVudF9yZCxcXG4gNTA2OlxcdFxcdCAgICAgICByZWdfaW5pdGlhdG9yX25hbWUocmVxdWVzdC1cXHUwMDNlaW5pdGlhdG9yKSk7XFxuIDUwNzpcXHR9XFxuIDUwODpcXHRcXG4gNTA5OlxcdHZvaWQgYXRoX3JlZ19ub3RpZmllcl9hcHBseShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbiA1MTA6XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCByZWd1bGF0b3J5X3JlcXVlc3QgKnJlcXVlc3QsXFxuIDUxMTpcXHRcXHRcXHRcXHQgICAgc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcpXFxuIDUxMjpcXHR7XFxuIDUxMzpcXHRcXHRzdHJ1Y3QgYXRoX2NvbW1vbiAqY29tbW9uID0gY29udGFpbmVyX29mKHJlZywgc3RydWN0IGF0aF9jb21tb24sXFxuIDUxNDpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgcmVndWxhdG9yeSk7XFxuIDUxNTpcXHRcXHQvKiBXZSBhbHdheXMgYXBwbHkgdGhpcyAqL1xcbiA1MTY6XFx0XFx0YXRoX3JlZ19hcHBseV9yYWRhcl9mbGFncyh3aXBoeSwgcmVnKTtcXG4gNTE3OlxcdFxcbiA1MTg6XFx0XFx0LypcXG4gNTE5OlxcdFxcdCAqIFRoaXMgd291bGQgaGFwcGVuIHdoZW4gd2UgaGF2ZSBzZW50IGEgY3VzdG9tIHJlZ3VsYXRvcnkgcmVxdWVzdFxcbiA1MjA6XFx0XFx0ICogYSB3b3JsZCByZWd1bGF0b3J5IGRvbWFpbiBhbmQgdGhlIHNjaGVkdWxlciBoYXNuJ3QgeWV0IHByb2Nlc3NlZFxcbiA1MjE6XFx0XFx0ICogYW55IHBlbmRpbmcgcmVxdWVzdHMgaW4gdGhlIHF1ZXVlLlxcbiA1MjI6XFx0XFx0ICovXFxuIDUyMzpcXHRcXHRpZiAoIXJlcXVlc3QpXFxuIDUyNDpcXHRcXHRcXHRyZXR1cm47XFxuIDUyNTpcXHRcXG4gNTI2OlxcdFxcdHJlZy1cXHUwMDNlcmVnaW9uID0gcmVxdWVzdC1cXHUwMDNlZGZzX3JlZ2lvbjtcXG4gNTI3OlxcdFxcdHN3aXRjaCAocmVxdWVzdC1cXHUwMDNlaW5pdGlhdG9yKSB7XFxuIDUyODpcXHRcXHRjYXNlIE5MODAyMTFfUkVHRE9NX1NFVF9CWV9DT1JFOlxcbiA1Mjk6XFx0XFx0XFx0LypcXG4gNTMwOlxcdFxcdFxcdCAqIElmIGNvbW1vbi1cXHUwMDNlcmVnX3dvcmxkX2NvcHkgaXMgd29ybGQgcm9hbWluZyBpdCBtZWFucyB3ZSAqd2VyZSpcXG4gNTMxOlxcdFxcdFxcdCAqIHdvcmxkIHJvYW1pbmcuLi4gc28gd2Ugbm93IGhhdmUgdG8gcmVzdG9yZSB0aGF0IGRhdGEuXFxuIDUzMjpcXHRcXHRcXHQgKi9cXG4gNTMzOlxcdFxcdFxcdGlmICghYXRoX2lzX3dvcmxkX3JlZ2QoXFx1MDAyNmNvbW1vbi1cXHUwMDNlcmVnX3dvcmxkX2NvcHkpKVxcbiA1MzQ6XFx0XFx0XFx0XFx0YnJlYWs7XFxuIDUzNTpcXHRcXG4gNTM2OlxcdFxcdFxcdG1lbWNweShyZWcsIFxcdTAwMjZjb21tb24tXFx1MDAzZXJlZ193b3JsZF9jb3B5LFxcbiA1Mzc6XFx0XFx0XFx0ICAgICAgIHNpemVvZihzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkpKTtcXG4gNTM4OlxcdFxcdFxcdGJyZWFrO1xcbiA1Mzk6XFx0XFx0Y2FzZSBOTDgwMjExX1JFR0RPTV9TRVRfQllfRFJJVkVSOlxcbiA1NDA6XFx0XFx0XFx0YnJlYWs7XFxuIDU0MTpcXHRcXHRjYXNlIE5MODAyMTFfUkVHRE9NX1NFVF9CWV9VU0VSOlxcbiA1NDI6XFx0XFx0XFx0aWYgKGF0aF9yZWdfZHluX2NvdW50cnlfdXNlcl9hbGxvdyhyZWcpKVxcbiA1NDM6XFx0XFx0XFx0XFx0YXRoX3JlZ19keW5fY291bnRyeSh3aXBoeSwgcmVnLCByZXF1ZXN0KTtcXG4gNTQ0OlxcdFxcdFxcdGJyZWFrO1xcbiA1NDU6XFx0XFx0Y2FzZSBOTDgwMjExX1JFR0RPTV9TRVRfQllfQ09VTlRSWV9JRTpcXG4gNTQ2OlxcdFxcdFxcdGF0aF9yZWdfZHluX2NvdW50cnkod2lwaHksIHJlZywgcmVxdWVzdCk7XFxuIDU0NzpcXHRcXHRcXHRicmVhaztcXG4gNTQ4OlxcdFxcdH1cXG4gNTQ5OlxcdH1cXG4gNTUwOlxcdEVYUE9SVF9TWU1CT0woYXRoX3JlZ19ub3RpZmllcl9hcHBseSk7XFxuIDU1MTpcXHRcXG4gNTUyOlxcdHN0YXRpYyBib29sIGF0aF9yZWdkX2lzX2VlcHJvbV92YWxpZChzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZylcXG4gNTUzOlxcdHtcXG4gNTU0OlxcdFxcdHUxNiByZCA9IGF0aF9yZWdkX2dldF9lZXByb21SRChyZWcpO1xcbiA1NTU6XFx0XFx0aW50IGk7XFxuIDU1NjpcXHRcXG4gNTU3OlxcdFxcdGlmIChyZCBcXHUwMDI2IENPVU5UUllfRVJEX0ZMQUcpIHtcXG4gNTU4OlxcdFxcdFxcdC8qIEVFUFJPTSB2YWx1ZSBpcyBhIGNvdW50cnkgY29kZSAqL1xcbiA1NTk6XFx0XFx0XFx0dTE2IGNjID0gcmQgXFx1MDAyNiB+Q09VTlRSWV9FUkRfRkxBRztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTE6NDQ6MzIuNTIwMDIxNDEzWiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjY0NjI0MjU0NTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgQXRoZXJvcyBXaXJlbGVzcyBSZWd1bGF0b3J5IERvbWFpbiBJbml0aWFsaXphdGlvbioqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gV2hlbiBvbmUgb2YgdGhlc2UgQXRoZXJvcyB3aXJlbGVzcyBkZXZpY2VzIOKAkyBsaWtlIGFuIGF0aDlrX2h0YywgY2FybDkxNzAgVVNCIGRldmljZSwgb3IgYSBQQ0kgYXRoOWsvYXRoMTBrL2F0aDVrIGNhcmQg4oCTIGdldHMgcHJvYmVkIGFuZCBpbml0aWFsaXplZCwgdGhlIGBhdGhfcmVnZF9pbml0YCBmdW5jdGlvbiBnZXRzIGNhbGxlZC4gTWFrZXMgc2Vuc2Ugc28gZmFyLlxuXG5Ob3csIHdpdGhpbiBgYXRoX3JlZ2RfaW5pdGAsIHRoZSBjb2RlIGRpdmVzIGludG8gYF9fYXRoX3JlZ2RfaW5pdChyZWcpYCBhbmQgdGhlbiBjYWxscyBgYXRoX3JlZ2RfaW5pdF93aXBoeShyZWcsIHdpcGh5LCByZWdfbm90aWZpZXIpYC4gVGhpcyBpcyB3aGVyZSBpdCBnZXRzIGludGVyZXN0aW5nLCBhcyBpdCBhcHBlYXJzIHRvIGJlIHJlc3BvbnNpYmxlIGZvciBzZXR0aW5nIHVwIHRoZSByZWd1bGF0b3J5IGRvbWFpbiBpbmZvcm1hdGlvbi5cblxuSW5zaWRlIGBhdGhfcmVnZF9pbml0X3dpcGh5YCwgaXQgY2hlY2tzIGlmIGBhdGhfaXNfd29ybGRfcmVnZChyZWcpYCBpcyB0cnVlLiBJZiBpdCAqaXMqIHRydWUsIHdlJ3JlIGxpa2VseSBkZWFsaW5nIHdpdGggYSB3b3JsZCByZWd1bGF0b3J5IGRvbWFpbiwgYW5kIHRoZSBjb2RlIGNhbGxzIGByZWdkID0gYXRoX3dvcmxkX3JlZ2RvbWFpbihyZWcpO2AuIE90aGVyd2lzZSwgaXQgdXNlcyBgcmVnZCA9IGF0aF9kZWZhdWx0X3dvcmxkX3JlZ2RvbWFpbigpO2AuIFNvIGl0IHNlZW1zIHRoZXJlJ3MgYSBkaXN0aW5jdGlvbiBiYXNlZCBvbiB3aGV0aGVyIGEgd29ybGQgcmVndWxhdG9yeSBkb21haW4gaXMgaW4gdXNlIG9yIG5vdC4gVGhpcyBpcyBsaWtlbHkgYW4gaW1wb3J0YW50IGRpc3RpbmN0aW9uIHRvIGNoZWNrIGxhdGVyLlxuXG5DcnVjaWFsbHksIGl0IHRoZW4gY2FsbHMgYHdpcGh5X2FwcGx5X2N1c3RvbV9yZWd1bGF0b3J5KHdpcGh5LCByZWdkKTtgLiBUaGlzIGlzIHdoZXJlIHRoZSBtYWdpYyBoYXBwZW5zLCBzbyBsZXQncyBkaWcgaW50byB0aGF0IGZ1bmN0aW9uJ3MgaW1wbGVtZW50YXRpb24uIEl0IGxvb2tzIGxpa2UgdGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgKmFjdHVhbGx5IGFwcGx5aW5nKiB0aGUgcmVndWxhdG9yeSBydWxlcyB0byB0aGUgd2lyZWxlc3MgaW50ZXJmYWNlIChgd2lwaHlgKS4gU3BlY2lmaWNhbGx5LCBpdCdzIGl0ZXJhdGluZyBvdmVyIHRoZSBgcmVnZC1cdTAwM2VuX3JlZ19ydWxlc2AgYW5kIGByZWdkLVx1MDAzZXJlZ19ydWxlc2AgZmllbGRzLCB3aGljaCBhbG1vc3QgY2VydGFpbmx5IGNvbnRhaW4gdGhlIHJlZ3VsYXRvcnkgZG9tYWluIGRhdGEuIEknbGwgbmVlZCB0byBnbyBsb29rIGF0IGB3aXBoeV9hcHBseV9jdXN0b21fcmVndWxhdG9yeWAgaW4gYG5ldC93aXJlbGVzcy9yZWcuY2AgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgZGV0YWlscyBvZiBob3cgdGhvc2UgcnVsZXMgYXJlIGFwcGxpZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwNzUyLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTE6NDQ6MzguOTgyNDUwNFoiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzcwNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L3dpcmVsZXNzL3JlZy5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI2MTAsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjI2MTA6XFx0fVxcbjI2MTE6XFx0XFxuMjYxMjpcXHQvKiBVc2VkIGJ5IGRyaXZlcnMgcHJpb3IgdG8gd2lwaHkgcmVnaXN0cmF0aW9uICovXFxuMjYxMzpcXHR2b2lkIHdpcGh5X2FwcGx5X2N1c3RvbV9yZWd1bGF0b3J5KHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuMjYxNDpcXHRcXHRcXHRcXHRcXHQgICBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiAqcmVnZClcXG4yNjE1OlxcdHtcXG4yNjE2OlxcdFxcdGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluICpuZXdfcmVnZCwgKnRtcDtcXG4yNjE3OlxcdFxcdGVudW0gbmw4MDIxMV9iYW5kIGJhbmQ7XFxuMjYxODpcXHRcXHR1bnNpZ25lZCBpbnQgYmFuZHNfc2V0ID0gMDtcXG4yNjE5OlxcdFxcbjI2MjA6XFx0XFx0V0FSTighKHdpcGh5LVxcdTAwM2VyZWd1bGF0b3J5X2ZsYWdzIFxcdTAwMjYgUkVHVUxBVE9SWV9DVVNUT01fUkVHKSxcXG4yNjIxOlxcdFxcdCAgICAgXFxcIndpcGh5IHNob3VsZCBoYXZlIFJFR1VMQVRPUllfQ1VTVE9NX1JFR1xcXFxuXFxcIik7XFxuMjYyMjpcXHRcXHR3aXBoeS1cXHUwMDNlcmVndWxhdG9yeV9mbGFncyB8PSBSRUdVTEFUT1JZX0NVU1RPTV9SRUc7XFxuMjYyMzpcXHRcXG4yNjI0OlxcdFxcdGZvciAoYmFuZCA9IDA7IGJhbmQgXFx1MDAzYyBOVU1fTkw4MDIxMV9CQU5EUzsgYmFuZCsrKSB7XFxuMjYyNTpcXHRcXHRcXHRpZiAoIXdpcGh5LVxcdTAwM2ViYW5kc1tiYW5kXSlcXG4yNjI2OlxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbjI2Mjc6XFx0XFx0XFx0aGFuZGxlX2JhbmRfY3VzdG9tKHdpcGh5LCB3aXBoeS1cXHUwMDNlYmFuZHNbYmFuZF0sIHJlZ2QpO1xcbjI2Mjg6XFx0XFx0XFx0YmFuZHNfc2V0Kys7XFxuMjYyOTpcXHRcXHR9XFxuMjYzMDpcXHRcXG4yNjMxOlxcdFxcdC8qXFxuMjYzMjpcXHRcXHQgKiBubyBwb2ludCBpbiBjYWxsaW5nIHRoaXMgaWYgaXQgd29uJ3QgaGF2ZSBhbnkgZWZmZWN0XFxuMjYzMzpcXHRcXHQgKiBvbiB5b3VyIGRldmljZSdzIHN1cHBvcnRlZCBiYW5kcy5cXG4yNjM0OlxcdFxcdCAqL1xcbjI2MzU6XFx0XFx0V0FSTl9PTighYmFuZHNfc2V0KTtcXG4yNjM2OlxcdFxcdG5ld19yZWdkID0gcmVnX2NvcHlfcmVnZChyZWdkKTtcXG4yNjM3OlxcdFxcdGlmIChJU19FUlIobmV3X3JlZ2QpKVxcbjI2Mzg6XFx0XFx0XFx0cmV0dXJuO1xcbjI2Mzk6XFx0XFxuMjY0MDpcXHRcXHRydG5sX2xvY2soKTtcXG4yNjQxOlxcdFxcdHNjb3BlZF9ndWFyZCh3aXBoeSwgd2lwaHkpIHtcXG4yNjQyOlxcdFxcdFxcdHRtcCA9IGdldF93aXBoeV9yZWdkb20od2lwaHkpO1xcbjI2NDM6XFx0XFx0XFx0cmN1X2Fzc2lnbl9wb2ludGVyKHdpcGh5LVxcdTAwM2VyZWdkLCBuZXdfcmVnZCk7XFxuMjY0NDpcXHRcXHRcXHRyY3VfZnJlZV9yZWdkb20odG1wKTtcXG4yNjQ1OlxcdFxcdH1cXG4yNjQ2OlxcdFxcdHJ0bmxfdW5sb2NrKCk7XFxuMjY0NzpcXHR9XFxuMjY0ODpcXHRFWFBPUlRfU1lNQk9MKHdpcGh5X2FwcGx5X2N1c3RvbV9yZWd1bGF0b3J5KTtcXG4yNjQ5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxMTo0NDozOC45ODI2Mjk0WiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE3OTE1OTMwNTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyB0aGUgUmVnaXN0cmF0aW9uIFJ1bGUgSGFuZGxpbmcqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBob3cgd2UncmUgaGFuZGxpbmcgcmVnaXN0cmF0aW9uIHJ1bGVzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgaGFuZGxlX2JhbmRfY3VzdG9tYCBhbmQgYHJlZ19jb3B5X3JlZ2QocmVnZClgIGFyZSBnb2luZyB0byBiZSB0aGUgd29ya2hvcnNlcyBwcm9jZXNzaW5nIHRoZSBgcmVnZC1cdTAwM2VuX3JlZ19ydWxlc2AgYW5kIGByZWdkLVx1MDAzZXJlZ19ydWxlc2AgbWVtYmVycyBvZiB0aGUgYHJlZ2RgIHN0cnVjdHVyZS4gVGhlc2UgYXJlIGNsZWFybHkga2V5IGNvbXBvbmVudHMgaW4gbWFuYWdpbmcgdGhlIHJlZ3VsYXRvcnkgZG9tYWluIHNldHRpbmdzLiBOb3csIEkgc2hvdWxkIHByb2JhYmx5IGRvdWJsZS1jaGVjayBob3cgYGhhbmRsZV9iYW5kX2N1c3RvbWAgYWN0dWFsbHkgZnVuY3Rpb25zLiBMZXQncyBkaXZlIGludG8gYG5ldC93aXJlbGVzcy9yZWcuY2AgdG8gc2VlIHByZWNpc2VseSB3aGF0J3MgZ29pbmcgb24gd2l0aGluIHRoYXQgZnVuY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyMDk1LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxMTo0NDo0MC43NzQyMjU1MjNaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc1MzIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC93aXJlbGVzcy9yZWcuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyNTkwLFxuICBcIkxpbmVDb3VudFwiOiAyNVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIyNTkwOlxcdFxcdGNoYW4tXFx1MDAzZW1heF9wb3dlciA9IGNoYW4tXFx1MDAzZW1heF9yZWdfcG93ZXI7XFxuMjU5MTpcXHR9XFxuMjU5MjpcXHRcXG4yNTkzOlxcdHN0YXRpYyB2b2lkIGhhbmRsZV9iYW5kX2N1c3RvbShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbjI1OTQ6XFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBpZWVlODAyMTFfc3VwcG9ydGVkX2JhbmQgKnNiYW5kLFxcbjI1OTU6XFx0XFx0XFx0XFx0ICAgICAgIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluICpyZWdkKVxcbjI1OTY6XFx0e1xcbjI1OTc6XFx0XFx0dW5zaWduZWQgaW50IGk7XFxuMjU5ODpcXHRcXG4yNTk5OlxcdFxcdGlmICghc2JhbmQpXFxuMjYwMDpcXHRcXHRcXHRyZXR1cm47XFxuMjYwMTpcXHRcXG4yNjAyOlxcdFxcdC8qXFxuMjYwMzpcXHRcXHQgKiBXZSBjdXJyZW50bHkgYXNzdW1lIHRoYXQgeW91IGFsd2F5cyB3YW50IGF0IGxlYXN0IDIwIE1IeixcXG4yNjA0OlxcdFxcdCAqIG90aGVyd2lzZSBjaGFubmVsIDEyIG1pZ2h0IGdldCBlbmFibGVkIGlmIHRoaXMgcnVsZSBpc1xcbjI2MDU6XFx0XFx0ICogY29tcGF0aWJsZSB0byBVUywgd2hpY2ggcGVybWl0cyAyNDAyIC0gMjQ3MiBNSHouXFxuMjYwNjpcXHRcXHQgKi9cXG4yNjA3OlxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBzYmFuZC1cXHUwMDNlbl9jaGFubmVsczsgaSsrKVxcbjI2MDg6XFx0XFx0XFx0aGFuZGxlX2NoYW5uZWxfY3VzdG9tKHdpcGh5LCBcXHUwMDI2c2JhbmQtXFx1MDAzZWNoYW5uZWxzW2ldLCByZWdkLFxcbjI2MDk6XFx0XFx0XFx0XFx0XFx0ICAgICAgTUhaX1RPX0tIWigyMCkpO1xcbjI2MTA6XFx0fVxcbjI2MTE6XFx0XFxuMjYxMjpcXHQvKiBVc2VkIGJ5IGRyaXZlcnMgcHJpb3IgdG8gd2lwaHkgcmVnaXN0cmF0aW9uICovXFxuMjYxMzpcXHR2b2lkIHdpcGh5X2FwcGx5X2N1c3RvbV9yZWd1bGF0b3J5KHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuMjYxNDpcXHRcXHRcXHRcXHRcXHQgICBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiAqcmVnZClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTE6NDQ6NDAuNzc0NDA0MTMzWiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjY5MTgzMjUyNDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBGZWFzaWJpbGl0eSBBbmFseXNpcyBmb3IgUmVndWxhdG9yeSBUYWJsZSBNb2RpZmljYXRpb25zIGluIGF0aC9yZWdkLmMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBuZWVkIHRvIGRldGVybWluZSBpZiBpdCdzIHdvcnRoIGZ1enppbmcuIEluaXRpYWxseSwgSSB3YXMgdGhpbmtpbmcgYWJvdXQgdGhlIFVTQiB3aXJlbGVzcyBkcml2ZXJzIGBjYXJsOTE3MGAgb3IgYGF0aDlrX2h0Y2AuICBJIGtub3cgc3l6a2FsbGVyIGNhbiBlbXVsYXRlIHRoZXNlIHZpYSBVU0IgUmF3IEdhZGdldC4gIEkndmUgZ290IHRvIGNoZWNrLCB0aG91Z2gsIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgdmlydHVhbCBidXNlcyBvciBpbXBsZW1lbnRhdGlvbnMgdXNpbmcgdGhlIGBhdGhgIGRyaXZlcnMgYmVzaWRlcyB0aG9zZS4gTm9wZSwgbm8gYG1hYzgwMjExX2h3c2ltYCB1c2UuXG5cblJpZ2h0LCBiYWNrIHRvIHRoZSBjb3JlIHF1ZXN0aW9uOiBjYW4gc3l6a2FsbGVyJ3MgVVNCIGZ1enppbmcgZXZlbiB0b3VjaCB0aGUgY29kZSBpbiBxdWVzdGlvbj8gWWVzLCBpdCBhYnNvbHV0ZWx5IGNhbi4gU3l6a2FsbGVyIHN1cHBvcnRzIFVTQiBkZXZpY2UgcHJvYmluZyBhbmQgZnV6emluZywgdGFyZ2V0aW5nIHdpcmVsZXNzIGRyaXZlcnMgbGlrZSBgYXRoOWtfaHRjYCwgYGNhcmw5MTcwYCwgYW5kIG90aGVycy5cblxuQnV0IGlzIHRoaXMganVzdCBhIHJlZ3VsYXRvcnkgdGFibGUgY2hhbmdlPyAgVGltZSB0byByZXZpc2l0IHRoZSBmdXp6aW5nIHRyaWFnZSBwaGlsb3NvcGh5LiAgUmVhY2hhYmlsaXR5IGlzIGtleS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGNvZGUgaXMgKnJlYWNoYWJsZSogaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gIEl0J3Mgbm90IGVub3VnaCBpZiBpdCdzIGdvdCBuZXcgYXNzZXJ0aW9ucyBvciByZWZhY3RvcmVkIGNvZGUgdGhhdCdzIG5vdCByZWFjaGFibGUuICBcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBJcyB0aGUgbW9kaWZpZWQgY29kZSBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuY2AgcmVhY2hhYmxlPyBZZXMhIFRoZSBgYXRoL2AgY29kZSBpcyB1c2VkIGJ5IFVTQiB3aXJlbGVzcyBkcml2ZXJzIGBjYXJsOTE3MGAgYW5kIGBhdGg5a19odGNgLiBXaGVuIHRoZXNlIGRldmljZXMgYXJlIGNvbm5lY3RlZCAob3IgZW11bGF0ZWQgd2l0aCBVU0IgcmF3IGdhZGdldCksIHRoZSBwcm9iZSBwYXRocywgc3RhcnRpbmcgd2l0aCBgY2FybDkxNzBfcmVnaXN0ZXJgIC1cdTAwM2UgYGF0aF9yZWdkX2luaXRgIG9yIGBhdGg5a19odGNfcHJvYmVfZGV2aWNlYCAtXHUwMDNlIGBhdGg5a19pbml0X2RldmljZWAgLVx1MDAzZSBgYXRoX3JlZ2RfaW5pdGAsIGFyZSByZWxldmFudC4gSW1wb3J0YW50bHksIGBhdGhfcmVnZF9pbml0YCBsZWFkcyB0byBgYXRoX3JlZ2RfaW5pdF93aXBoeWAsIHdoaWNoIGFjY2Vzc2VzIHRoZSBtb2RpZmllZCByZWd1bGF0b3J5IGRvbWFpbiBkYXRhIHN0cnVjdHVyZXMuIFRoZSBjaGFuZ2VzIG1vZGlmeSBgQVRIXzVHSFpfNTE1MF81MzUwYCBhbmQgdGhlIGFzc29jaWF0ZWQgYG5fcmVnX3J1bGVzYC4gQWxzbywgdGhlcmUgYXJlIGByZWdfY29weV9yZWdkYCBhbmQgYHdpcGh5X2FwcGx5X2N1c3RvbV9yZWd1bGF0b3J5YCBpbiBtYWM4MDIxMS9jZmc4MDIxMSwgdGhhdCBwcm9jZXNzIHRoZXNlIGRhdGEgc3RydWN0dXJlcyBhbmQgZnJlcXVlbmN5IHJ1bGVzLiBTbywgeWVhaCwgdGhpcyBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZS5cblxuTGV0J3MgcXVpY2tseSBjaGVjayB3aGljaCBmdW5jdGlvbnMgYXJlIHRoZSBlbnRyeXBvaW50cyBvciBjb250YWluIHRoZSBsb2dpYyB3aXRoaW4gYHJlZ2QuY2A6IGBhdGhfcmVnZF9pbml0YCwgYGF0aF9yZWdkX2luaXRfd2lwaHlgLCBgYXRoX3dvcmxkX3JlZ2RvbWFpbmAsIGBhdGhfZGVmYXVsdF93b3JsZF9yZWdkb21haW5gLCBhbmQgYGF0aF9yZWdfbm90aWZpZXJfYXBwbHlgLiBUaGVuLCBJJ2xsIHJldmlldyBhbnkgb3RoZXIgZnVuY3Rpb25zIHRoYXQgbWF5IGJlIHJlbGV2YW50IHRvIHRoZSBjaGFuZ2VkIGNvZGUuXG5cbkNvbmNsdXNpb246ICBUaGlzIGlzIGFic29sdXRlbHkgd29ydGggZnV6emluZy4gSXQgdG91Y2hlcyByZWFjaGFibGUsIGV4ZWN1dGFibGUgY29kZSwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgcmVndWxhdG9yeSBkb21haW4gZGF0YSBzdHJ1Y3R1cmVzIGFuZCBhc3NvY2lhdGVkIGZ1bmN0aW9ucyBhY2Nlc3NlZCB0aHJvdWdoIFVTQiB3aXJlbGVzcyBkcml2ZXIgcHJvYmUgcGF0aHMuIFRoZSBjaGFuZ2VzIG1vZGlmeSBjcml0aWNhbCByZWd1bGF0b3J5IGluZm9ybWF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0Mjc2MCwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyNDcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxMTo0NDo0Ny42OTI3MzE2NDRaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3ODQzMzc3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5bYS16QS1aX10uKlxcXFwoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0yNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjI2OnN0YXRpYyBpbnQgX19hdGhfcmVnZF9pbml0KHN0cnVjdCBhdGhfcmVndWxhdG9yeSAqcmVnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTI3LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYz0xMDg9c3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluIGF0aF93b3JsZF9yZWdkb21fNjdfNjhfNkFfNkMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTExNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjExODpzdGF0aWMgYm9vbCBkeW5hbWljX2NvdW50cnlfdXNlcl9wb3NzaWJsZShzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTExOS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTE4OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjE5MDpzdGF0aWMgYm9vbCBhdGhfcmVnX2R5bl9jb3VudHJ5X3VzZXJfYWxsb3coc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0xOTEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0xOTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzoxOTk6c3RhdGljIGlubGluZSBib29sIGlzX3d3cl9za3UodTE2IHJlZ2QpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0yMDAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0yMDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzoyMDY6c3RhdGljIHUxNiBhdGhfcmVnZF9nZXRfZWVwcm9tUkQoc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0yMDcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0yMTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzoyMTE6Ym9vbCBhdGhfaXNfd29ybGRfcmVnZChzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTIxMi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTIxNC19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzoyMTU6RVhQT1JUX1NZTUJPTChhdGhfaXNfd29ybGRfcmVnZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0yMTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzoyMTc6c3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluICphdGhfZGVmYXVsdF93b3JsZF9yZWdkb21haW4odm9pZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTIxOC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jPTIyMz1zdGF0aWMgY29uc3Qgc3RydWN0XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzoyMjQ6aWVlZTgwMjExX3JlZ2RvbWFpbiAqYXRoX3dvcmxkX3JlZ2RvbWFpbihzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTIyNS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTI0OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjI1MDpib29sIGF0aF9pc180OWdoel9hbGxvd2VkKHUxNiByZWdkb21haW4pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0yNTEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0yNTQtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6MjU1OkVYUE9SVF9TWU1CT0woYXRoX2lzXzQ5Z2h6X2FsbG93ZWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjU2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjU3LS8qIEZyZXF1ZW5jeSBpcyBvbmUgd2hlcmUgcmFkYXIgZGV0ZWN0aW9uIGlzIHJlcXVpcmVkICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzoyNTg6c3RhdGljIGJvb2wgYXRoX2lzX3JhZGFyX2ZyZXEodTE2IGNlbnRlcl9mcmVxLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjU5LVxcdFxcdFxcdCAgICAgIHN0cnVjdCBhdGhfcmVndWxhdG9yeSAqcmVnKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0yNjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzoyNjc6c3RhdGljIHZvaWQgYXRoX2ZvcmNlX2NsZWFyX25vX2lyX2NoYW4oc3RydWN0IHdpcGh5ICp3aXBoeSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTI2OC1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjgwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6MjgxOnN0YXRpYyB2b2lkIGF0aF9mb3JjZV9jbGVhcl9ub19pcl9mcmVxKHN0cnVjdCB3aXBoeSAqd2lwaHksIHUxNiBjZW50ZXJfZnJlcSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTI4Mi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTI5MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjI5MjpzdGF0aWMgdm9pZCBhdGhfZm9yY2Vfbm9faXJfY2hhbihzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjkzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjk2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6Mjk3OnN0YXRpYyB2b2lkIGF0aF9mb3JjZV9ub19pcl9mcmVxKHN0cnVjdCB3aXBoeSAqd2lwaHksIHUxNiBjZW50ZXJfZnJlcSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTI5OC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jPTMwOD1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6MzA5Ol9fYXRoX3JlZ19hcHBseV9iZWFjb25pbmdfZmxhZ3Moc3RydWN0IHdpcGh5ICp3aXBoeSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTMxMC1cXHRcXHRcXHRcXHRzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM9MzM5PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzozNDA6YXRoX3JlZ19hcHBseV9iZWFjb25pbmdfZmxhZ3Moc3RydWN0IHdpcGh5ICp3aXBoeSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTM0MS1cXHRcXHRcXHQgICAgICBzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM9Mzc2PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzozNzc6YXRoX3JlZ19hcHBseV9pcl9mbGFncyhzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMzc4LVxcdFxcdCAgICAgICBzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNDA0LS8qIEFsd2F5cyBhcHBseSBSYWRhci9ERlMgcnVsZXMgb24gZnJlcSByYW5nZSA1NTAwIE1IeiAtIDU3MDAgTUh6ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo0MDU6c3RhdGljIHZvaWQgYXRoX3JlZ19hcHBseV9yYWRhcl9mbGFncyhzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNDA2LVxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBhdGhfcmVndWxhdG9yeSAqcmVnKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy00MzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo0Mzc6c3RhdGljIHZvaWQgYXRoX3JlZ19hcHBseV93b3JsZF9mbGFncyhzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNDM4LVxcdFxcdFxcdFxcdCAgICAgIGVudW0gbmw4MDIxMV9yZWdfaW5pdGlhdG9yIGluaXRpYXRvcixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNDU4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NDU5OnUxNiBhdGhfcmVnZF9maW5kX2NvdW50cnlfYnlfbmFtZShjaGFyICphbHBoYTIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy00NjAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy00NjktfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NDcwOkVYUE9SVF9TWU1CT0woYXRoX3JlZ2RfZmluZF9jb3VudHJ5X2J5X25hbWUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNDcxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NDcyOnN0YXRpYyBpbnQgX19hdGhfcmVnX2R5bl9jb3VudHJ5KHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy00NzMtXFx0XFx0XFx0XFx0IHN0cnVjdCBhdGhfcmVndWxhdG9yeSAqcmVnLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy00OTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo0OTY6c3RhdGljIHZvaWQgYXRoX3JlZ19keW5fY291bnRyeShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNDk3LVxcdFxcdFxcdFxcdHN0cnVjdCBhdGhfcmVndWxhdG9yeSAqcmVnLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy01MDgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo1MDk6dm9pZCBhdGhfcmVnX25vdGlmaWVyX2FwcGx5KHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy01MTAtXFx0XFx0XFx0ICAgIHN0cnVjdCByZWd1bGF0b3J5X3JlcXVlc3QgKnJlcXVlc3QsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTU0OS19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo1NTA6RVhQT1JUX1NZTUJPTChhdGhfcmVnX25vdGlmaWVyX2FwcGx5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTU1MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjU1MjpzdGF0aWMgYm9vbCBhdGhfcmVnZF9pc19lZXByb21fdmFsaWQoc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy01NTMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYz01ODE9c3RhdGljIHN0cnVjdCBjb3VudHJ5X2NvZGVfdG9fZW51bV9yZCpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjU4MjphdGhfcmVnZF9maW5kX2NvdW50cnkodTE2IGNvdW50cnlDb2RlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNTgzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM9NTk0PXN0YXRpYyBzdHJ1Y3QgY291bnRyeV9jb2RlX3RvX2VudW1fcmQqXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo1OTU6YXRoX3JlZ2RfZmluZF9jb3VudHJ5X2J5X3JkKGludCByZWdkbW4pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy01OTYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy02MDYtLyogUmV0dXJucyB0aGUgbWFwIG9mIHRoZSBFRVBST00gc2V0IFJEIHRvIGEgY291bnRyeSBjb2RlICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo2MDc6c3RhdGljIHUxNiBhdGhfcmVnZF9nZXRfZGVmYXVsdF9jb3VudHJ5KHUxNiByZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTYwOC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jPTYyMT1zdGF0aWMgc3RydWN0IHJlZ19kbW5fcGFpcl9tYXBwaW5nKlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NjIyOmF0aF9nZXRfcmVncGFpcihpbnQgcmVnZG1uKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNjIzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM9NjM1PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjYzNjphdGhfcmVnZF9pbml0X3dpcGh5KHN0cnVjdCBhdGhfcmVndWxhdG9yeSAqcmVnLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNjM3LVxcdFxcdCAgICBzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy02NzUtICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo2NzY6c3RhdGljIHZvaWQgYXRoX3JlZ2Rfc2FuaXRpemUoc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy02Nzcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy02ODMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo2ODQ6c3RhdGljIGludCBfX2F0aF9yZWdkX2luaXQoc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy02ODUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYz03NTg9aW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo3NTk6YXRoX3JlZ2RfaW5pdChzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTc2MC1cXHQgICAgICBzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy03NzktfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NzgwOkVYUE9SVF9TWU1CT0woYXRoX3JlZ2RfaW5pdCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy03ODEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo3ODI6dTMyIGF0aF9yZWdkX2dldF9iYW5kX2N0bChzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTc4My1cXHRcXHRcXHQgIGVudW0gbmw4MDIxMV9iYW5kIGJhbmQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTgxMi19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo4MTM6RVhQT1JUX1NZTUJPTChhdGhfcmVnZF9nZXRfYmFuZF9jdGwpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxMTo0NDo0Ny43NDA1ODAyOVoiLCJTZXEiOjM3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozMjUwNzI0ODQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkNvbmZpZ3VyaW5nIHRoZSBXaXJlbGVzcyBEcml2ZXIqKlxuXG5Pa2F5LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJ3ZlIGdvdCB0aGUgY29ycmVjdCBjb25maWd1cmF0aW9ucyBpbiBwbGFjZSBmb3IgdGhpcyB3aXJlbGVzcyBkcml2ZXIuIEZpcnN0LCBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgSSd2ZSBlbmFibGVkIHRoZSBjb3JlIGNvbXBvbmVudHM6IGBBVEhfQ09NTU9OYCwgYEFUSDlLX0hUQ2AgKG9yIHBvdGVudGlhbGx5IG9uZSBvZiB0aGUgYWx0ZXJuYXRpdmVzIGxpa2UgYENBUkw5MTcwYCwgYEFUSDlLYCwgb3IgYEFUSDEwS2AgZGVwZW5kaW5nIG9uIHRoZSBleGFjdCBoYXJkd2FyZSksIGBNQUM4MDIxMWAsIGBDRkc4MDIxMWAsIGFuZCBgVVNCYC4gSXQncyBhIHN0YW5kYXJkIHNldCBmb3IgYSByZWFzb24sIGJ1dCBpdCdzIGFsd2F5cyBnb29kIHRvIGRvdWJsZS1jaGVjay5cblxuTm93LCBsZXQncyBkaWcgaW50byB0aGUgZGVwZW5kZW5jaWVzLiBTcGVjaWZpY2FsbHksIEknbGwgc3RhcnQgd2l0aCBgQVRIX0NPTU1PTmAuIEkga25vdyB0aGF0IGBBVEhfQ09NTU9OYCBpcyBzZWxlY3RlZCBieSBzZXZlcmFsIG90aGVyIGNvbmZpZ3VyYXRpb25zIGxpa2UgYEFUSDlLX0NPTU1PTmAsIGBDQVJMOTE3MGAsIGFuZCBgQVRIMTBLYCwgd2hpY2ggbWFrZXMgc2Vuc2UuIEp1c3QgZ2xhbmNpbmcgYXQgdGhlIG9wdGlvbnMsIGBDQVJMOTE3MGAgZGVwZW5kcyBvbiBgVVNCYCBhbmQgYE1BQzgwMjExYCwgYW5kIGl0IHNlbGVjdHMgYm90aCBgQVRIX0NPTU1PTmAgYW5kIGBGV19MT0FERVJgLiBUaGF0J3MgaW1wb3J0YW50IHRvIHJlbWVtYmVyLiBPbiB0aGUgb3RoZXIgaGFuZCwgYEFUSDlLX0hUQ2AgYWxzbyByZWxpZXMgb24gYFVTQmAgYW5kIGBNQUM4MDIxMWAsIGFuZCB0aGVuIGl0IHNlbGVjdHMgYEFUSDlLX0NPTU1PTmAsIHdoaWNoIGluIHR1cm4sIHNlbGVjdHMgYEFUSF9DT01NT05gLiBPa2F5LCB0aGF0IG1ha2VzIGl0IGNsZWFyZXIuIEknbGwgbWFrZSBzdXJlIHRvIHZlcmlmeSB3aGF0IGV4YWN0bHkgYEFUSDlLX0hUQ2AgZGVwZW5kcyBvbiBhbmQgc2VsZWN0cy4gQWx3YXlzIGdvb2QgdG8gaGF2ZSBhIHNvbGlkIHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoZXNlIGRlcGVuZGVuY2llcyBjaGFpbiB0b2dldGhlci5cblxuXG4iLCJJbnB1dFRva2VucyI6NDc3NzksIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTE6NDQ6NTAuOTkxMzA4MzczWiIsIlNlcSI6MzgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk5NDUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE3MCxcbiAgXCJMaW5lQ291bnRcIjogMjVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE3MDpcXHRcXHQgIElmIHVuc3VyZSBzYXkgTi5cXG4gMTcxOlxcdFxcbiAxNzI6XFx0Y29uZmlnIEFUSDlLX0hUQ1xcbiAxNzM6XFx0XFx0dHJpc3RhdGUgXFxcIkF0aGVyb3MgSFRDIGJhc2VkIHdpcmVsZXNzIGNhcmRzIHN1cHBvcnRcXFwiXFxuIDE3NDpcXHRcXHRkZXBlbmRzIG9uIFVTQiBcXHUwMDI2XFx1MDAyNiBNQUM4MDIxMVxcbiAxNzU6XFx0XFx0c2VsZWN0IE1BQzgwMjExX0xFRFMgaWYgTEVEU19DTEFTUz15IHx8IExFRFNfQ0xBU1M9TUFDODAyMTFcXG4gMTc2OlxcdFxcdHNlbGVjdCBBVEg5S19IV1xcbiAxNzc6XFx0XFx0c2VsZWN0IEFUSDlLX0NPTU1PTlxcbiAxNzg6XFx0XFx0aGVscFxcbiAxNzk6XFx0XFx0ICBTdXBwb3J0IGZvciBBdGhlcm9zIEhUQyBiYXNlZCBjYXJkcy5cXG4gMTgwOlxcdFxcdCAgQ2hpcHNldHMgc3VwcG9ydGVkOiBBUjkyNzFcXG4gMTgxOlxcdFxcbiAxODI6XFx0XFx0ICBGb3IgbW9yZSBpbmZvcm1hdGlvbjpcXG4gMTgzOlxcdFxcdCAgaHR0cHM6Ly93aXJlbGVzcy53aWtpLmtlcm5lbC5vcmcvZW4vdXNlcnMvRHJpdmVycy9hdGg5a19odGNcXG4gMTg0OlxcdFxcbiAxODU6XFx0XFx0ICBUaGUgYnVpbHQgbW9kdWxlIHdpbGwgYmUgYXRoOWtfaHRjLlxcbiAxODY6XFx0XFxuIDE4NzpcXHRjb25maWcgQVRIOUtfSFRDX0RFQlVHRlNcXG4gMTg4OlxcdFxcdGJvb2wgXFxcIkF0aGVyb3MgYXRoOWtfaHRjIGRlYnVnZ2luZ1xcXCJcXG4gMTg5OlxcdFxcdGRlcGVuZHMgb24gQVRIOUtfSFRDIFxcdTAwMjZcXHUwMDI2IERFQlVHX0ZTXFxuIDE5MDpcXHRcXHRzZWxlY3QgQVRIOUtfQ09NTU9OX0RFQlVHXFxuIDE5MTpcXHRcXHRoZWxwXFxuIDE5MjpcXHRcXHQgIFNheSBZLCBpZiB5b3UgbmVlZCBhY2Nlc3MgdG8gYXRoOWtfaHRjJ3Mgc3RhdGlzdGljcy5cXG4gMTkzOlxcdFxcdCAgQXMgd2VsbCBhcyBhY2Nlc3MgdG8gdGhlIEZGVC9zcGVjdHJhbCBkYXRhLlxcbiAxOTQ6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDExOjQ0OjUwLjk5MTQwOTI3M1oiLCJTZXEiOjM5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0NDczOTc2OTA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKldvcnRoRnV6emluZyBDb25maXJtYXRpb24qKlxuXG5Pa2F5LCBzbyB0aGlzIFdvcnRoRnV6emluZyBmaW5kaW5nIGNoZWNrcyBvdXQuIFRoZSBwYXRjaCBpcyBkZWZpbml0ZWx5IHRvdWNoaW5nIHJlZ3VsYXRvcnkgZGVmaW5pdGlvbnMgd2l0aGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jYC4gVGhpcyBpcyBzaWduaWZpY2FudCBiZWNhdXNlIHRob3NlIGRlZmluaXRpb25zIGFyZSBjcml0aWNhbCBmb3IgQXRoZXJvcyB3aXJlbGVzcyBkcml2ZXJzLCBhbmQgY3J1Y2lhbGx5LCB0aGV5IGluY2x1ZGUgVVNCLWFjY2Vzc2libGUgZHJpdmVycyBsaWtlIGBhdGg5a19odGNgIGFuZCBgY2FybDkxNzBgLiBXZSdyZSB1c2luZyBVU0IgUmF3IEdhZGdldCBmb3IgZW11bGF0aW9uIGFuZCBmdXp6aW5nIHdpdGhpbiBhIHN0YW5kYXJkIFFFTVUgc2V0dXAsIHNvIHRoYXQncyBhIGtleSBwaWVjZSBvZiB0aGUgcHV6emxlLlxuXG5UaGUgcmVhbCBjb25uZWN0aW9uIGhlcmUgaXMgaG93IGBhdGhfcmVnZF9pbml0YCwgYGF0aF9yZWdkX2luaXRfd2lwaHlgLCBgYXRoX3dvcmxkX3JlZ2RvbWFpbmAsIGFuZCBgd2lwaHlfYXBwbHlfY3VzdG9tX3JlZ3VsYXRvcnlgIGhhbmRsZSB0aGUgcGFyc2luZyBhbmQgYXBwbGljYXRpb24gb2YgdGhlc2UgcmVndWxhdG9yeSBydWxlcy4gVGhleSdyZSBhbGwgaW52b2x2ZWQgd2hlbiBhbiBBdGhlcm9zIGludGVyZmFjZSBpcyBpbml0aWFsaXplZCwgcmVnaXN0ZXJlZCwgb3Igd2hlbiBpdHMgcmVndWxhdG9yeSBkb21haW4gaXMgcXVlcmllZCBvciB1cGRhdGVkLiBUaG9zZSBmdW5jdGlvbnMgYXJlIHRoZSBicmlkZ2UgaW50byB0aGUga2VybmVsJ3MgY2ZnODAyMTEvbWFjODAyMTEgc3RhdGUsIHdoaWNoIGlzIGV4YWN0bHkgd2hlcmUgd2UncmUgbG9va2luZyB0byBmaW5kIGJ1Z3MuXG5cbkxldCdzIHF1aWNrbHkgY29uZmlybSB0aG9zZSBGb2N1c1N5bWJvbHMgYXJlIGNvcnJlY3QuIEknbGwgbWVudGFsbHkgcnVuIHRocm91Z2g6IGBhdGhfcmVnZF9pbml0YCwgYGF0aF9yZWdkX2luaXRfd2lwaHlgLCBgYXRoX3dvcmxkX3JlZ2RvbWFpbmAsIGBhdGhfZGVmYXVsdF93b3JsZF9yZWdkb21haW5gLCBhbmQgYGF0aF9yZWdfbm90aWZpZXJfYXBwbHlgLiBZdXAsIHRob3NlIGFyZSBhbGwgcmlnaHQgb24gcG9pbnQuXG5cbkRvdWJsZS1jaGVja2luZyB0aGUgRW5hYmxlQ29uZmlncywganVzdCB0byBiZSBzdXJlOiBgQVRIX0NPTU1PTmAsIGBBVEg5S19IVENgLCBgQ0FSTDkxNzBgLCBgQ0ZHODAyMTFgLCBgTUFDODAyMTFgLCBhbmQgYFVTQmAg4oCTIGFsbCBvZiB0aG9zZSBtYWtlIHBlcmZlY3Qgc2Vuc2UgaW4gdGhpcyBjb250ZXh0LlxuXG5BbHJpZ2h0LCBJJ20gY29uZmlkZW50IGluIHRoZSBhbmFseXNpcy4gVGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuIFRoaXMgaXMgYSBzb2xpZCBmaW5kaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODc4MCwiT3V0cHV0VG9rZW5zIjoyNDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMTUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxMTo0NDo1NS40NjUzOTAxODFaIiwiU2VxIjo0MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3ODM1MTQ5NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQVRIX0NPTU1PTlwiLFxuICAgIFwiQVRIOUtfSFRDXCIsXG4gICAgXCJDQVJMOTE3MFwiLFxuICAgIFwiQ0ZHODAyMTFcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJVU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJhdGhfcmVnZF9pbml0XCIsXG4gICAgXCJhdGhfcmVnZF9pbml0X3dpcGh5XCIsXG4gICAgXCJhdGhfd29ybGRfcmVnZG9tYWluXCIsXG4gICAgXCJhdGhfZGVmYXVsdF93b3JsZF9yZWdkb21haW5cIixcbiAgICBcImF0aF9yZWdfbm90aWZpZXJfYXBwbHlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBzcGxpdHMgdGhlIDVHSHogNTE1MC01MzUwIE1IeiByZWd1bGF0b3J5IHJ1bGUgaW50byBzZXBhcmF0ZSA1MTUwLTUyNDAgTUh6IGFuZCA1MjYwLTUzNTAgTUh6IHJ1bGVzIGFuZCB1cGRhdGVzIHJ1bGUgY291bnRzIGFjcm9zcyBBdGhlcm9zIHdvcmxkIHJlZ3VsYXRvcnkgZG9tYWluIGRlZmluaXRpb25zIGluIGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMuIFRoaXMgY29kZSBpcyBleGVjdXRlZCBkdXJpbmcgaW5pdGlhbGl6YXRpb24gYW5kIHJlZ3VsYXRvcnkgdXBkYXRlcyBvZiBBdGhlcm9zIHdpcmVsZXNzIGRyaXZlcnMsIGluY2x1ZGluZyBVU0ItZHJpdmVuIGRldmljZXMgKHN1Y2ggYXMgYXRoOWtfaHRjIGFuZCBjYXJsOTE3MCkgd2hpY2ggYXJlIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIFVTQiBlbXVsYXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQVRIX0NPTU1PTlwiLFxuICAgIFwiQVRIOUtfSFRDXCIsXG4gICAgXCJDQVJMOTE3MFwiLFxuICAgIFwiQ0ZHODAyMTFcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJVU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJhdGhfcmVnZF9pbml0XCIsXG4gICAgXCJhdGhfcmVnZF9pbml0X3dpcGh5XCIsXG4gICAgXCJhdGhfd29ybGRfcmVnZG9tYWluXCIsXG4gICAgXCJhdGhfZGVmYXVsdF93b3JsZF9yZWdkb21haW5cIixcbiAgICBcImF0aF9yZWdfbm90aWZpZXJfYXBwbHlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBzcGxpdHMgdGhlIDVHSHogNTE1MC01MzUwIE1IeiByZWd1bGF0b3J5IHJ1bGUgaW50byBzZXBhcmF0ZSA1MTUwLTUyNDAgTUh6IGFuZCA1MjYwLTUzNTAgTUh6IHJ1bGVzIGFuZCB1cGRhdGVzIHJ1bGUgY291bnRzIGFjcm9zcyBBdGhlcm9zIHdvcmxkIHJlZ3VsYXRvcnkgZG9tYWluIGRlZmluaXRpb25zIGluIGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMuIFRoaXMgY29kZSBpcyBleGVjdXRlZCBkdXJpbmcgaW5pdGlhbGl6YXRpb24gYW5kIHJlZ3VsYXRvcnkgdXBkYXRlcyBvZiBBdGhlcm9zIHdpcmVsZXNzIGRyaXZlcnMsIGluY2x1ZGluZyBVU0ItZHJpdmVuIGRldmljZXMgKHN1Y2ggYXMgYXRoOWtfaHRjIGFuZCBjYXJsOTE3MCkgd2hpY2ggYXJlIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIFVTQiBlbXVsYXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDExOjQ0OjU1LjU0Mzc1MDc1NVoiLCJTZXEiOjQxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODg4ODc4MDg4NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxMTo0NDo1NS41NDQzODAxNTVaIiwiU2VxIjo0MiwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo4ODg4NzE3NTA3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgc3RhdGljIGNvbnN0YW50IHJlZ3VsYXRvcnkgZG9tYWluIGRlZmluaXRpb25zIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jYC4gU3BlY2lmaWNhbGx5LCBpdCBzcGxpdHMgdGhlIGBBVEhfNUdIWl81MTUwXzUzNTBgIG1hY3JvIGludG8gdHdvIHNlcGFyYXRlIHJlZ3VsYXRvcnkgcnVsZXMgKDUxNTAtNTI0MCBNSHogYW5kIDUyNjAtNTM1MCBNSHopIGFuZCBhZGp1c3RzIHRoZSBgbl9yZWdfcnVsZXNgIGZpZWxkIGluIHNldmVyYWwgc3RhdGljIGNvbnN0IGBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbmAgaW5zdGFuY2VzIGFjY29yZGluZ2x5LlxcblxcbkFsbCBhZmZlY3RlZCBkYXRhIHN0cnVjdHVyZXMgYXJlIGNvbXBpbGUtdGltZSBjb25zdGFudCB0YWJsZXMgd2l0aCBmdWxseSBpbml0aWFsaXplZCBmaWVsZHMuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IGR5bmFtaWMgb3Igc3RhY2sgYWxsb2NhdGlvbnMsIGRvZXMgbm90IG1vZGlmeSBhbnkgYnVmZmVycyBvciBwYWRkaW5nIGNvcGllZCB0byB1c2Vyc3BhY2UsIGFuZCBpbnRyb2R1Y2VzIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLiBJZiBhbnkgYXJyYXkgaW5kZXhpbmcgb3IgcnVsZSBjb3VudCBtaXNtYXRjaGVzIHdlcmUgdG8gb2NjdXIsIHRoZXkgd291bGQgYmUgYm91bmRzIHZpb2xhdGlvbnMgZGV0ZWN0YWJsZSBieSBzdGFuZGFyZCBLQVNBTi4gVGhlcmVmb3JlLCB0aGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgdGhhdCB3YXJyYW50IGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbi5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAxMjljYjE1OWZiOWM1Y2Q0OGVhZDQ3Y2M3MDRmNzk4NmVkY2E0MDkyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBTZXAgNSAxMTo0Mjo0NSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jXG5pbmRleCBmMTVlN2JkNjkwYjViLi5iMTI5YWYwZWVkODg1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuY1xuQEAgLTQzLDcgKzQzLDggQEAgc3RhdGljIGludCBfX2F0aF9yZWdkX2luaXQoc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcpO1xuIFx0XHRcdFx0XHQgTkw4MDIxMV9SUkZfTk9fT0ZETSlcbiBcbiAvKiBXZSBhbGxvdyBJQlNTIG9uIHRoZXNlIG9uIGEgY2FzZSBieSBjYXNlIGJhc2lzIGJ5IHJlZ3VsYXRvcnkgZG9tYWluICovXG4tI2RlZmluZSBBVEhfNUdIWl81MTUwXzUzNTBcdFJFR19SVUxFKDUxNTAtMTAsIDUzNTArMTAsIDgwLCAwLCAzMCxcXFxuKyNkZWZpbmUgQVRIXzVHSFpfNTE1MF81MzUwXHRSRUdfUlVMRSg1MTUwLTEwLCA1MjQwKzEwLCA4MCwgMCwgMzAsIDApLFxcXG4rXHRcdFx0XHRSRUdfUlVMRSg1MjYwLTEwLCA1MzUwKzEwLCA4MCwgMCwgMzAsXFxcbiBcdFx0XHRcdFx0IE5MODAyMTFfUlJGX05PX0lSKVxuICNkZWZpbmUgQVRIXzVHSFpfNTQ3MF81ODUwXHRSRUdfUlVMRSg1NDcwLTEwLCA1ODUwKzEwLCA4MCwgMCwgMzAsXFxcbiBcdFx0XHRcdFx0IE5MODAyMTFfUlJGX05PX0lSKVxuQEAgLTY0LDcgKzY1LDcgQEAgc3RhdGljIGludCBfX2F0aF9yZWdkX2luaXQoc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcpO1xuIC8qIENhbiBiZSB1c2VkIGZvcjpcbiAgKiAweDYwLCAweDYxLCAweDYyICovXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluIGF0aF93b3JsZF9yZWdkb21fNjBfNjFfNjIgPSB7XG4tXHQubl9yZWdfcnVsZXMgPSA1LFxuK1x0Lm5fcmVnX3J1bGVzID0gNixcbiBcdC5hbHBoYTIgPSAgXCI5OVwiLFxuIFx0LnJlZ19ydWxlcyA9IHtcbiBcdFx0QVRIXzJHSFpfQUxMLFxuQEAgLTc0LDcgKzc1LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluIGF0aF93b3JsZF9yZWdkb21fNjBfNjFfNjIgPSB7XG4gXG4gLyogQ2FuIGJlIHVzZWQgYnkgMHg2MyBhbmQgMHg2NSAqL1xuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiBhdGhfd29ybGRfcmVnZG9tXzYzXzY1ID0ge1xuLVx0Lm5fcmVnX3J1bGVzID0gNCxcbitcdC5uX3JlZ19ydWxlcyA9IDUsXG4gXHQuYWxwaGEyID0gIFwiOTlcIixcbiBcdC5yZWdfcnVsZXMgPSB7XG4gXHRcdEFUSF8yR0haX0NIMDFfMTEsXG5AQCAtODUsNyArODYsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW4gYXRoX3dvcmxkX3JlZ2RvbV82M182NSA9IHtcbiBcbiAvKiBDYW4gYmUgdXNlZCBieSAweDY0IG9ubHkgKi9cbiBzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW4gYXRoX3dvcmxkX3JlZ2RvbV82NCA9IHtcbi1cdC5uX3JlZ19ydWxlcyA9IDMsXG4rXHQubl9yZWdfcnVsZXMgPSA0LFxuIFx0LmFscGhhMiA9ICBcIjk5XCIsXG4gXHQucmVnX3J1bGVzID0ge1xuIFx0XHRBVEhfMkdIWl9DSDAxXzExLFxuQEAgLTk1LDcgKzk2LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluIGF0aF93b3JsZF9yZWdkb21fNjQgPSB7XG4gXG4gLyogQ2FuIGJlIHVzZWQgYnkgMHg2NiBhbmQgMHg2OSAqL1xuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiBhdGhfd29ybGRfcmVnZG9tXzY2XzY5ID0ge1xuLVx0Lm5fcmVnX3J1bGVzID0gMyxcbitcdC5uX3JlZ19ydWxlcyA9IDQsXG4gXHQuYWxwaGEyID0gIFwiOTlcIixcbiBcdC5yZWdfcnVsZXMgPSB7XG4gXHRcdEFUSF8yR0haX0NIMDFfMTEsXG5AQCAtMTA1LDcgKzEwNiw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiBhdGhfd29ybGRfcmVnZG9tXzY2XzY5ID0ge1xuIFxuIC8qIENhbiBiZSB1c2VkIGJ5IDB4NjcsIDB4NjgsIDB4NkEgYW5kIDB4NkMgKi9cbiBzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW4gYXRoX3dvcmxkX3JlZ2RvbV82N182OF82QV82QyA9IHtcbi1cdC5uX3JlZ19ydWxlcyA9IDQsXG4rXHQubl9yZWdfcnVsZXMgPSA1LFxuIFx0LmFscGhhMiA9ICBcIjk5XCIsXG4gXHQucmVnX3J1bGVzID0ge1xuIFx0XHRBVEhfMkdIWl9DSDAxXzExLFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTE6NDQ6NTUuNTQ0MzgxMzM1WiIsIlNlcSI6NDMsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjU3MDUyMTQ3MTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqS01TQU4gRnV6emluZyBFdmFsdWF0aW9uKipcblxuQWxyaWdodCwgbGV0J3MgYXNzZXNzIHRoaXMgcGF0Y2ggYW5kIGZpZ3VyZSBvdXQgdGhlIGZ1enppbmcgc3RyYXRlZ3kuIFRoZSBjb3JlIHF1ZXN0aW9uIGlzOiBkb2VzIHRoaXMgY2hhbmdlIHdhcnJhbnQgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uLCBvciBjYW4gd2Ugc3RpY2sgd2l0aCBzdGFuZGFyZCBLQVNBTj9cblxuRmlyc3QsIEkgbmVlZCB0byBpbnNwZWN0IHRoZSBkaWZmLiBJdCBsb29rcyBsaWtlIHdlJ3JlIHRvdWNoaW5nIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jYC4gUmlnaHQsIHNvIHRoaXMgaXMgYWJvdXQgcmVndWxhdG9yeSBkb21haW4gZGVmaW5pdGlvbnMgaW4gdGhlIGF0aCB3aXJlbGVzcyBkcml2ZXIuIE9rYXksIHRoZSBjb2RlIHNuaXBwZXQgc2hvd3MgdGhhdCBgQVRIXzVHSFpfNTE1MF81MzUwYCBoYXMgYmVlbiBjaGFuZ2VkLiBJdCB1c2VkIHRvIGJlIGEgc2luZ2xlIGBSRUdfUlVMRWAgbWFjcm8gZGVmaW5pdGlvbiwgYnV0IG5vdyBpdCdzIHR3byBzZXBhcmF0ZSBvbmVzLiBBbmQsIGl0IGFwcGVhcnMgdGhlIGAubl9yZWdfcnVsZXNgIGZpZWxkcyBoYXZlIGJlZW4gdXBkYXRlZCBpbiBzZXZlcmFsIGBzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW5gIGRlZmluaXRpb25zLiBTcGVjaWZpY2FsbHkgdGhlIGNvdW50cyBvZiB0aGUgcmVndWxhdG9yeSBydWxlcyB3ZXJlIGluY3JlYXNlZC5cblxuVGhpcyBzdHJvbmdseSBzdWdnZXN0cyBjaGFuZ2VzIHRvIGhvdyB0aGVzZSByZWd1bGF0b3J5IHJ1bGVzIGFyZSBkZWZpbmVkIGFuZCBoYW5kbGVkLiAgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBgUkVHX1JVTEVgIGV4cGFuZHMgdG8sIGFuZCB3aGF0J3MgaW4gYHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluYC4gTW9yZSBjb250ZXh0IGlzIG5lZWRlZCBoZXJlLiBBcmUgdGhlc2UgY2FsY3VsYXRpb25zIHVzZWQgaW4gdGhlIGRyaXZlciwgYW5kIGFyZSB0aGV5IGRpcmVjdGx5IGV4cG9zZWQgdG8gdXNlcmxhbmQ/IElmIHNvLCB0aGlzIGNvdWxkIHBvdGVudGlhbGx5IGxlYWQgdG8gbWVtb3J5IGNvcnJ1cHRpb24uXG5cblRpbWUgdG8gbG9vayBhdCB0aGUgZGVmaW5pdGlvbnMgb2YgYFJFR19SVUxFYCBhbmQgYHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluYCB3aXRoaW4gdGhhdCBmaWxlLCBhbmQgdGhlbiBob3cgdGhleSdyZSAqdXNlZCouIEknbGwgbmVlZCB0byB1c2UgYHJlYWQtZmlsZWAgb3IgYGdyZXBwZXJgIHRvIGdldCBhIGJldHRlciBoYW5kbGUgb24gdGhlIGltcGxpY2F0aW9ucyBoZXJlLiBUaGVuLCBJIGNhbiBtYWtlIGEgbW9yZSBpbmZvcm1lZCBkZWNpc2lvbiBhYm91dCB0aGUgZnV6emluZyByZXF1aXJlbWVudHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwMjEsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NzAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxMTo0NTowMS4yNDk2MDAxNzZaIiwiU2VxIjo0NCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5MzI1NTM2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlJFR19SVUxFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYz0yNj1zdGF0aWMgaW50IF9fYXRoX3JlZ2RfaW5pdChzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTM1LS8qIE9ubHkgdGhlc2UgY2hhbm5lbHMgYWxsIGFsbG93IGFjdGl2ZSBzY2FuIG9uIGFsbCB3b3JsZCByZWd1bGF0b3J5IGRvbWFpbnMgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjM2OiNkZWZpbmUgQVRIXzJHSFpfQ0gwMV8xMVxcdFJFR19SVUxFKDI0MTItMTAsIDI0NjIrMTAsIDQwLCAwLCAyMCwgMClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTM3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMzgtLyogV2UgZW5hYmxlIGFjdGl2ZSBzY2FuIG9uIHRoZXNlIGEgY2FzZSBieSBjYXNlIGJhc2lzIGJ5IHJlZ3VsYXRvcnkgZG9tYWluICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzozOTojZGVmaW5lIEFUSF8yR0haX0NIMTJfMTNcXHRSRUdfUlVMRSgyNDY3LTEwLCAyNDcyKzEwLCA0MCwgMCwgMjAsXFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNDAtXFx0XFx0XFx0XFx0XFx0IE5MODAyMTFfUlJGX05PX0lSKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NDE6I2RlZmluZSBBVEhfMkdIWl9DSDE0XFx0XFx0UkVHX1JVTEUoMjQ4NC0xMCwgMjQ4NCsxMCwgNDAsIDAsIDIwLFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTQyLVxcdFxcdFxcdFxcdFxcdCBOTDgwMjExX1JSRl9OT19JUiB8IFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNDUtLyogV2UgYWxsb3cgSUJTUyBvbiB0aGVzZSBvbiBhIGNhc2UgYnkgY2FzZSBiYXNpcyBieSByZWd1bGF0b3J5IGRvbWFpbiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NDY6I2RlZmluZSBBVEhfNUdIWl81MTUwXzUzNTBcXHRSRUdfUlVMRSg1MTUwLTEwLCA1MjQwKzEwLCA4MCwgMCwgMzAsIDApLFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjQ3OlxcdFxcdFxcdFxcdFJFR19SVUxFKDUyNjAtMTAsIDUzNTArMTAsIDgwLCAwLCAzMCxcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy00OC1cXHRcXHRcXHRcXHRcXHQgTkw4MDIxMV9SUkZfTk9fSVIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo0OTojZGVmaW5lIEFUSF81R0haXzU0NzBfNTg1MFxcdFJFR19SVUxFKDU0NzAtMTAsIDU4NTArMTAsIDgwLCAwLCAzMCxcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy01MC1cXHRcXHRcXHRcXHRcXHQgTkw4MDIxMV9SUkZfTk9fSVIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo1MTojZGVmaW5lIEFUSF81R0haXzU3MjVfNTg1MFxcdFJFR19SVUxFKDU3MjUtMTAsIDU4NTArMTAsIDgwLCAwLCAzMCxcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy01Mi1cXHRcXHRcXHRcXHRcXHQgTkw4MDIxMV9SUkZfTk9fSVIpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDExOjQ1OjAxLjI5ODkzNDkxMloiLCJTZXEiOjQ1LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxODkyNDgxMTM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBSZWd1bGF0b3J5IERldGFpbHMqKlxuXG5BbHJpZ2h0LCBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIGhvdyB0aGVzZSByZWd1bGF0b3J5IHJ1bGVzIGFyZSBzdHJ1Y3R1cmVkLiBUaGUgZmlyc3QgcGxhY2UgSSdtIGdvaW5nIHRvIGxvb2sgaXMgYGluY2x1ZGUvbmV0L3JlZ3VsYXRvcnkuaGAuIFRoYXQncyB3aGVyZSBJJ2QgZXhwZWN0IHRvIGZpbmQgdGhlIGRlZmluaXRpb25zIGZvciBgUkVHX1JVTEVgIGFuZCBgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW5gLiBJdCdzIGEgcHJldHR5IHN0YW5kYXJkIGxvY2F0aW9uIGZvciB0aGF0IGtpbmQgb2YgY29yZSB3aXJlbGVzcyByZWd1bGF0b3J5IGRhdGEuIEhvcGVmdWxseSwgaXQncyBhbGwgY2xlYXJseSBsYWlkIG91dCBpbiB0aGVyZSwgYW5kIEkgY2FuIHF1aWNrbHkgZ2V0IGEgZ29vZCB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzdHJ1Y3R1cmUgYW5kIGhvdyB0aGUgZGlmZmVyZW50IGVsZW1lbnRzIHJlbGF0ZSB0byBlYWNoIG90aGVyLiBJJ2xsIHByb2JhYmx5IGJlIGNoZWNraW5nIHRoaW5ncyBsaWtlIGRhdGEgdHlwZXMsIGFueSBlbWJlZGRlZCBzdHJ1Y3R1cmVzLCBhbmQgaG93IHRoZSBydWxlcyBhcmUgYWN0dWFsbHkgc3RvcmVkIGFuZCBhY2Nlc3NlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDY1MCwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDExOjQ1OjAzLjE5MTQyNDcwN1oiLCJTZXEiOjQ2LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc0MTUyNzc5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCIjZGVmaW5lIFJFR19SVUxFXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmg9MjkwMD1zdHJ1Y3QgcnhfcmVvcmRlcl9xdWV1ZV9yZW1vdmVfcGFyYW1zIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmgtMjkxNi0vKiBGcmVxIHVuaXRzIGluIE1IeiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmg6MjkxNzojZGVmaW5lIFJFR19SVUxFX1NUQVJUX0ZSRVFcXHRcXHRcXHQweDAwMDBmZmZmXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuaDoyOTE4OiNkZWZpbmUgUkVHX1JVTEVfRU5EX0ZSRVFcXHRcXHRcXHQweGZmZmYwMDAwXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuaDoyOTE5OiNkZWZpbmUgUkVHX1JVTEVfRkxBR1NcXHRcXHRcXHRcXHQweDAwMDBmZmZmXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuaDoyOTIwOiNkZWZpbmUgUkVHX1JVTEVfTUFYX0JXXFx0XFx0XFx0XFx0MHgwMDAwZmZmZlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmg6MjkyMTojZGVmaW5lIFJFR19SVUxFX1JFR19QV1JcXHRcXHRcXHQweDAwZmYwMDAwXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuaDoyOTIyOiNkZWZpbmUgUkVHX1JVTEVfQU5UX0dBSU5cXHRcXHRcXHQweGZmMDAwMDAwXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuaDoyOTIzOiNkZWZpbmUgUkVHX1JVTEVfUFNEX0lORk9cXHRcXHRcXHRCSVQoMClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5oOjI5MjQ6I2RlZmluZSBSRUdfUlVMRV9QU0RfRUlSUFxcdFxcdFxcdDB4ZmYwMDAwXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuaC0yOTI1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuaD0zMjEyPXN0cnVjdCBhdGgxMmtfd21pX3J4X3Jlb3JkZXJfcXVldWVfcmVtb3ZlX2FyZyB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5oLTMyMjgtLyogRnJlcSB1bml0cyBpbiBNSHogKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5oOjMyMjk6I2RlZmluZSBSRUdfUlVMRV9TVEFSVF9GUkVRXFx0XFx0XFx0MHgwMDAwZmZmZlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmg6MzIzMDojZGVmaW5lIFJFR19SVUxFX0VORF9GUkVRXFx0XFx0XFx0MHhmZmZmMDAwMFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmg6MzIzMTojZGVmaW5lIFJFR19SVUxFX0ZMQUdTXFx0XFx0XFx0XFx0MHgwMDAwZmZmZlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmg6MzIzMjojZGVmaW5lIFJFR19SVUxFX01BWF9CV1xcdFxcdFxcdFxcdDB4MDAwMGZmZmZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5oOjMyMzM6I2RlZmluZSBSRUdfUlVMRV9SRUdfUFdSXFx0XFx0XFx0MHgwMGZmMDAwMFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmg6MzIzNDojZGVmaW5lIFJFR19SVUxFX0FOVF9HQUlOXFx0XFx0XFx0MHhmZjAwMDAwMFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmg6MzIzNTojZGVmaW5lIFJFR19SVUxFX1BTRF9JTkZPXFx0XFx0XFx0QklUKDIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuaDozMjM2OiNkZWZpbmUgUkVHX1JVTEVfUFNEX0VJUlBcXHRcXHRcXHQweGZmZmYwMDAwXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuaC0zMjM3LVxcbi0tXFxuaW5jbHVkZS9uZXQvcmVndWxhdG9yeS5oPTIxNz1zdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiB7XFxuLS1cXG5pbmNsdWRlL25ldC9yZWd1bGF0b3J5LmgtMjI0LVxcbmluY2x1ZGUvbmV0L3JlZ3VsYXRvcnkuaDoyMjU6I2RlZmluZSBSRUdfUlVMRV9FWFQoc3RhcnQsIGVuZCwgYncsIGdhaW4sIGVpcnAsIGRmc19jYWMsIHJlZ19mbGFncylcXHRcXFxcXFxuaW5jbHVkZS9uZXQvcmVndWxhdG9yeS5oLTIyNi17XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi0tXFxuaW5jbHVkZS9uZXQvcmVndWxhdG9yeS5oLTIzNS1cXG5pbmNsdWRlL25ldC9yZWd1bGF0b3J5Lmg6MjM2OiNkZWZpbmUgUkVHX1JVTEUoc3RhcnQsIGVuZCwgYncsIGdhaW4sIGVpcnAsIHJlZ19mbGFncykgXFxcXFxcbmluY2x1ZGUvbmV0L3JlZ3VsYXRvcnkuaC0yMzctXFx0UkVHX1JVTEVfRVhUKHN0YXJ0LCBlbmQsIGJ3LCBnYWluLCBlaXJwLCAwLCByZWdfZmxhZ3MpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDExOjQ1OjA0LjkzMjk3NDg2NloiLCJTZXEiOjQ3LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxNzU2NjI3OTU1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKlJlZ3VsYXRvcnkgRG9tYWluIERlZXAgRGl2ZSoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiBob3cgdGhlIHJlZ3VsYXRvcnkgZG9tYWluIGluZm9ybWF0aW9uIGlzIHN0cnVjdHVyZWQsIHNwZWNpZmljYWxseSBpbiB0aGUgY29udGV4dCBvZiB0aGUgZHJpdmVyIEknbSBsb29raW5nIGF0LiBSaWdodCwgbGV0J3MgaGVhZCBvdmVyIHRvIHRoZSBgaW5jbHVkZS9uZXQvcmVndWxhdG9yeS5oYCBoZWFkZXIgZmlsZS4gSSdtIHRoaW5raW5nIGFyb3VuZCBsaW5lIDIxNyBzaG91bGQgYmUgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBJIHJlY2FsbCB0aGF0J3Mgb2Z0ZW4gd2hlcmUgdGhlIGNvcmUgZGF0YSBzdHJ1Y3R1cmVzIG9yIGVudW1zIHJlbGF0ZWQgdG8gcmVndWxhdG9yeSBpbmZvcm1hdGlvbiBkZWZpbml0aW9ucyByZXNpZGUsIG9yIHBlcmhhcHMgd2hlcmUgdGhlIHN0cnVjdHVyZXMgdGhhdCBob2xkIHRoZSBjaGFubmVsIGFuZCBwb3dlciBjb25zdHJhaW50cyBhcmUgZGVjbGFyZWQuIEhvcGVmdWxseSwgSSdsbCBmaW5kIHRoZSBzdHJ1Y3R1cmUgSSdtIGxvb2tpbmcgZm9yIHRoZXJlIGFuZCBnZXQgYSBxdWljayByZWZyZXNoZXIgb24gaG93IHRoZSByZWd1bGF0b3J5IGluZm9ybWF0aW9uIGlzIGxhaWQgb3V0IGluIHRoaXMgc3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODk3LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTE6NDU6MDYuNjg5NjA1OTRaIiwiU2VxIjo0OCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njk1ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiaW5jbHVkZS9uZXQvcmVndWxhdG9yeS5oXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIxMCxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDIxMDpcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX3dtbV9ydWxlIHdtbV9ydWxlO1xcbiAyMTE6XFx0XFx0dTMyIGZsYWdzO1xcbiAyMTI6XFx0XFx0dTMyIGRmc19jYWNfbXM7XFxuIDIxMzpcXHRcXHRib29sIGhhc193bW07XFxuIDIxNDpcXHRcXHRzOCBwc2Q7XFxuIDIxNTpcXHR9O1xcbiAyMTY6XFx0XFxuIDIxNzpcXHRzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiB7XFxuIDIxODpcXHRcXHRzdHJ1Y3QgcmN1X2hlYWQgcmN1X2hlYWQ7XFxuIDIxOTpcXHRcXHR1MzIgbl9yZWdfcnVsZXM7XFxuIDIyMDpcXHRcXHRjaGFyIGFscGhhMlszXTtcXG4gMjIxOlxcdFxcdGVudW0gbmw4MDIxMV9kZnNfcmVnaW9ucyBkZnNfcmVnaW9uO1xcbiAyMjI6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9yZWdfcnVsZSByZWdfcnVsZXNbXTtcXG4gMjIzOlxcdH07XFxuIDIyNDpcXHRcXG4gMjI1OlxcdCNkZWZpbmUgUkVHX1JVTEVfRVhUKHN0YXJ0LCBlbmQsIGJ3LCBnYWluLCBlaXJwLCBkZnNfY2FjLCByZWdfZmxhZ3MpXFx0XFxcXFxcbiAyMjY6XFx0e1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gMjI3OlxcdFxcdC5mcmVxX3JhbmdlLnN0YXJ0X2ZyZXFfa2h6ID0gTUhaX1RPX0tIWihzdGFydCksXFx0XFx0XFx0XFxcXFxcbiAyMjg6XFx0XFx0LmZyZXFfcmFuZ2UuZW5kX2ZyZXFfa2h6ID0gTUhaX1RPX0tIWihlbmQpLFxcdFxcdFxcdFxcXFxcXG4gMjI5OlxcdFxcdC5mcmVxX3JhbmdlLm1heF9iYW5kd2lkdGhfa2h6ID0gTUhaX1RPX0tIWihidyksXFx0XFx0XFx0XFxcXFxcbiAyMzA6XFx0XFx0LnBvd2VyX3J1bGUubWF4X2FudGVubmFfZ2FpbiA9IERCSV9UT19NQkkoZ2FpbiksXFx0XFx0XFxcXFxcbiAyMzE6XFx0XFx0LnBvd2VyX3J1bGUubWF4X2VpcnAgPSBEQk1fVE9fTUJNKGVpcnApLFxcdFxcdFxcdFxcXFxcXG4gMjMyOlxcdFxcdC5mbGFncyA9IHJlZ19mbGFncyxcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIDIzMzpcXHRcXHQuZGZzX2NhY19tcyA9IGRmc19jYWMsXFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiAyMzQ6XFx0fVxcbiAyMzU6XFx0XFxuIDIzNjpcXHQjZGVmaW5lIFJFR19SVUxFKHN0YXJ0LCBlbmQsIGJ3LCBnYWluLCBlaXJwLCByZWdfZmxhZ3MpIFxcXFxcXG4gMjM3OlxcdFxcdFJFR19SVUxFX0VYVChzdGFydCwgZW5kLCBidywgZ2FpbiwgZWlycCwgMCwgcmVnX2ZsYWdzKVxcbiAyMzg6XFx0XFxuIDIzOTpcXHQjZW5kaWZcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTE6NDU6MDYuNjg5Njc3MVoiLCJTZXEiOjQ5LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxODk4MDM0NTA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqTmF2aWdhdGluZyB0aGUgQXRoZXJvcyBXaXJlbGVzcyBSZWd1bGF0b3J5IERvbWFpbiBDb2RlKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBpc3N1ZSwgYW5kIHRoZSBwcm9ibGVtIGxpa2VseSByZXNpZGVzIHdpdGhpbiB0aGUgcmVndWxhdG9yeSBkb21haW4gaGFuZGxpbmcgZm9yIEF0aGVyb3Mgd2lyZWxlc3MgZHJpdmVycy4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gZGl2ZSBkaXJlY3RseSBpbnRvIHRoZSBjb2RlLiBMZXQncyBzZWUuLi4gSSdtIGdvaW5nIHRvIHN0YXJ0IGJ5IGNvbmZpcm1pbmcgdGhlIGRlZmluaXRpb25zIG9mIHRoZSBrZXkgc3RydWN0dXJlcyB1c2VkIGZvciByZWd1bGF0b3J5IGRvbWFpbiBjb25maWd1cmF0aW9uLiBUaGF0IG1lYW5zIGRpZ2dpbmcgaW50byBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuY2AuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiBob3cgdGhleSd2ZSBzdHJ1Y3R1cmVkIHRoYXQsIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGUgcmVndWxhdG9yeSBkb21haW4gc3RydWN0dXJlcywgYW5kIHdoZXJlIHRoZSBjb3JlIGxvZ2ljIHJlc2lkZXMuIFRoYXQgZmlsZSBpcyB1c3VhbGx5IHRoZSBnby10byBzcG90IGZvciB0aGVzZSBraW5kcyBvZiBkZXRhaWxzIHdpdGggQXRoZXJvcy4gRnJvbSB0aGVyZSwgSSBjYW4gYW5hbHl6ZSB0aGUgZGF0YSBzdHJ1Y3R1cmVzIHRvIHVuZGVyc3RhbmQgaG93IHRoZSByZWd1bGF0b3J5IHBhcmFtZXRlcnMgYW5kIGNoYW5uZWxzIGFyZSByZXByZXNlbnRlZC4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIHNvbGlkIGZvdW5kYXRpb24gZm9yIHRyYWNpbmcgdGhlIGFjdHVhbCBpc3N1ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjY3MCwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTE6NDU6MDguNTg3NzE0MzU1WiIsIlNlcSI6NTAsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0ODEzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDU1LFxuICBcIkxpbmVDb3VudFwiOiA2MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDU1OlxcdFxcdFxcdFxcdFxcdEFUSF8yR0haX0NIMTJfMTMsIFxcXFxcXG4gIDU2OlxcdFxcdFxcdFxcdFxcdEFUSF8yR0haX0NIMTRcXG4gIDU3OlxcdFxcbiAgNTg6XFx0I2RlZmluZSBBVEhfNUdIWl9BTExcXHRcXHRBVEhfNUdIWl81MTUwXzUzNTAsIFxcXFxcXG4gIDU5OlxcdFxcdFxcdFxcdFxcdEFUSF81R0haXzU0NzBfNTg1MFxcbiAgNjA6XFx0XFxuICA2MTpcXHQvKiBUaGlzIG9uZSBza2lwcyB3aGF0IHdlIGNhbGwgXFxcIm1pZCBiYW5kXFxcIiAqL1xcbiAgNjI6XFx0I2RlZmluZSBBVEhfNUdIWl9OT19NSURCQU5EXFx0QVRIXzVHSFpfNTE1MF81MzUwLCBcXFxcXFxuICA2MzpcXHRcXHRcXHRcXHRcXHRBVEhfNUdIWl81NzI1XzU4NTBcXG4gIDY0OlxcdFxcbiAgNjU6XFx0LyogQ2FuIGJlIHVzZWQgZm9yOlxcbiAgNjY6XFx0ICogMHg2MCwgMHg2MSwgMHg2MiAqL1xcbiAgNjc6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluIGF0aF93b3JsZF9yZWdkb21fNjBfNjFfNjIgPSB7XFxuICA2ODpcXHRcXHQubl9yZWdfcnVsZXMgPSA2LFxcbiAgNjk6XFx0XFx0LmFscGhhMiA9ICBcXFwiOTlcXFwiLFxcbiAgNzA6XFx0XFx0LnJlZ19ydWxlcyA9IHtcXG4gIDcxOlxcdFxcdFxcdEFUSF8yR0haX0FMTCxcXG4gIDcyOlxcdFxcdFxcdEFUSF81R0haX0FMTCxcXG4gIDczOlxcdFxcdH1cXG4gIDc0OlxcdH07XFxuICA3NTpcXHRcXG4gIDc2OlxcdC8qIENhbiBiZSB1c2VkIGJ5IDB4NjMgYW5kIDB4NjUgKi9cXG4gIDc3OlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiBhdGhfd29ybGRfcmVnZG9tXzYzXzY1ID0ge1xcbiAgNzg6XFx0XFx0Lm5fcmVnX3J1bGVzID0gNSxcXG4gIDc5OlxcdFxcdC5hbHBoYTIgPSAgXFxcIjk5XFxcIixcXG4gIDgwOlxcdFxcdC5yZWdfcnVsZXMgPSB7XFxuICA4MTpcXHRcXHRcXHRBVEhfMkdIWl9DSDAxXzExLFxcbiAgODI6XFx0XFx0XFx0QVRIXzJHSFpfQ0gxMl8xMyxcXG4gIDgzOlxcdFxcdFxcdEFUSF81R0haX05PX01JREJBTkQsXFxuICA4NDpcXHRcXHR9XFxuICA4NTpcXHR9O1xcbiAgODY6XFx0XFxuICA4NzpcXHQvKiBDYW4gYmUgdXNlZCBieSAweDY0IG9ubHkgKi9cXG4gIDg4OlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiBhdGhfd29ybGRfcmVnZG9tXzY0ID0ge1xcbiAgODk6XFx0XFx0Lm5fcmVnX3J1bGVzID0gNCxcXG4gIDkwOlxcdFxcdC5hbHBoYTIgPSAgXFxcIjk5XFxcIixcXG4gIDkxOlxcdFxcdC5yZWdfcnVsZXMgPSB7XFxuICA5MjpcXHRcXHRcXHRBVEhfMkdIWl9DSDAxXzExLFxcbiAgOTM6XFx0XFx0XFx0QVRIXzVHSFpfTk9fTUlEQkFORCxcXG4gIDk0OlxcdFxcdH1cXG4gIDk1OlxcdH07XFxuICA5NjpcXHRcXG4gIDk3OlxcdC8qIENhbiBiZSB1c2VkIGJ5IDB4NjYgYW5kIDB4NjkgKi9cXG4gIDk4OlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiBhdGhfd29ybGRfcmVnZG9tXzY2XzY5ID0ge1xcbiAgOTk6XFx0XFx0Lm5fcmVnX3J1bGVzID0gNCxcXG4gMTAwOlxcdFxcdC5hbHBoYTIgPSAgXFxcIjk5XFxcIixcXG4gMTAxOlxcdFxcdC5yZWdfcnVsZXMgPSB7XFxuIDEwMjpcXHRcXHRcXHRBVEhfMkdIWl9DSDAxXzExLFxcbiAxMDM6XFx0XFx0XFx0QVRIXzVHSFpfQUxMLFxcbiAxMDQ6XFx0XFx0fVxcbiAxMDU6XFx0fTtcXG4gMTA2OlxcdFxcbiAxMDc6XFx0LyogQ2FuIGJlIHVzZWQgYnkgMHg2NywgMHg2OCwgMHg2QSBhbmQgMHg2QyAqL1xcbiAxMDg6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluIGF0aF93b3JsZF9yZWdkb21fNjdfNjhfNkFfNkMgPSB7XFxuIDEwOTpcXHRcXHQubl9yZWdfcnVsZXMgPSA1LFxcbiAxMTA6XFx0XFx0LmFscGhhMiA9ICBcXFwiOTlcXFwiLFxcbiAxMTE6XFx0XFx0LnJlZ19ydWxlcyA9IHtcXG4gMTEyOlxcdFxcdFxcdEFUSF8yR0haX0NIMDFfMTEsXFxuIDExMzpcXHRcXHRcXHRBVEhfMkdIWl9DSDEyXzEzLFxcbiAxMTQ6XFx0XFx0XFx0QVRIXzVHSFpfQUxMLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxMTo0NTowOC41ODc4NjU2MDVaIiwiU2VxIjo1MSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzQ1OTgwNjM3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFJlZ3VsYXRvcnkgRG9tYWluIFVwZGF0ZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcmVndWxhdG9yeSBkb21haW4gZGVmaW5pdGlvbiwgc3BlY2lmaWNhbGx5IGBBVEhfNUdIWl81MTUwXzUzNTBgLiBCZWZvcmUsIGl0IHdhcyBkZWZpbmVkIGJ5IGEgc2luZ2xlIHJ1bGU6IGBSRUdfUlVMRSg1MTUwLTEwLCA1MzUwKzEwLCA4MCwgMCwgMzAsIE5MODAyMTFfUlJGX05PX0lSKWAuIE5vdywgaXQncyBiZWVuIHNwbGl0IGludG8gdHdvIHJ1bGVzLCB3aGljaCBpcyBpbnRlcmVzdGluZy4gV2UgaGF2ZTogYFJFR19SVUxFKDUxNTAtMTAsIDUyNDArMTAsIDgwLCAwLCAzMCwgMClgIGFuZCBgUkVHX1JVTEUoNTI2MC0xMCwgNTM1MCsxMCwgODAsIDAsIDMwLCBOTDgwMjExX1JSRl9OT19JUilgLiBJIHNlZSB0aGUgbG9naWMsIHNwbGl0dGluZyB0aGF0IGNvbnRpZ3VvdXMgYmFuZCBpbnRvIHR3byBwaWVjZXMsIG1vc3QgbGlrZWx5IHRvIGFjY29tbW9kYXRlIHNvbWUgbmV3IHJlZ3VsYXRvcnkgcmVxdWlyZW1lbnQgb3IgcGVyaGFwcyB0byBlbmFibGUgRHluYW1pYyBGcmVxdWVuY3kgU2VsZWN0aW9uIChERlMpIG9uIGEgc2VjdGlvbiBvZiB0aGF0IGJhbmQuXG5cbk5hdHVyYWxseSwgdGhlIGAubl9yZWdfcnVsZXNgIG1lbWJlciBvZiBhbnkgYHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluYCB1c2luZyBgQVRIXzVHSFpfNTE1MF81MzUwYCAoZWl0aGVyIGRpcmVjdGx5IG9yIHZpYSBgQVRIXzVHSFpfQUxMYCBvciBgQVRIXzVHSFpfTk9fTUlEQkFORGApIGhhcyBiZWVuIGluY3JlbWVudGVkIHRvIHJlZmxlY3QgdGhpcyBjaGFuZ2UuIFRoZXNlIGFyZSBhbGwgZGVjbGFyZWQgYXMgYHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbmAsIHdoaWNoIG1lYW5zIHRoZXNlIHN0cnVjdHVyZXMgYXJlIGluaXRpYWxpemVkIGF0IGNvbXBpbGUgdGltZS5cblxuSW4gQywgdGhlIGBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbmAgdXNlcyBhIGZsZXhpYmxlIGFycmF5IG1lbWJlciBgc3RydWN0IGllZWU4MDIxMV9yZWdfcnVsZSByZWdfcnVsZXNbXWAsIHdoaWNoIGlzIHN0YW5kYXJkIHByYWN0aWNlIGluIHRoZXNlIHJlZ3VsYXRvcnkgZG9tYWluIGRlZmluaXRpb25zLiBTaW5jZSB0aGVzZSBhcmUgc3RhdGljIGBjb25zdGAgc3RydWN0dXJlcywgdGhlIGVudGlyZSBgcmVnX3J1bGVzW11gIGFycmF5IGlzIHBvcHVsYXRlZCBhdCBjb21waWxlIHRpbWUgd2l0aCBzdGF0aWMgYGNvbnN0YCBkYXRhIHVzaW5nIGRlc2lnbmF0ZWQgaW5pdGlhbGl6ZXJzLiBUaGF0J3MgZ29vZCwgbWluaW1pemVzIHJ1bnRpbWUgb3ZlcmhlYWQuXG5cbk5vdyBJIG5lZWQgdG8gc2VlIHdoZXJlIHRoZXNlIGBhdGhfd29ybGRfcmVnZG9tXypgIHZhcmlhYmxlcyBhcmUgYWN0dWFsbHkgdXNlZCB3aXRoaW4gdGhlIGNvZGViYXNlIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIGltcGFjdCBvZiB0aGlzIGNoYW5nZS4gSSdsbCBuZWVkIHRvIHRyYWNlIHRob3NlIHVzYWdlcyB0byBzZWUgaWYgYW55IGxvZ2ljIG5lZWRzIHRvIGJlIHVwZGF0ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc5MzMsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNDQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxMTo0NToxMi4wNDc2NzU3MTlaIiwiU2VxIjo1MiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2NzU1NzY2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF0aF93b3JsZF9yZWdkb21fXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jPTI2PXN0YXRpYyBpbnQgX19hdGhfcmVnZF9pbml0KHN0cnVjdCBhdGhfcmVndWxhdG9yeSAqcmVnKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNjYtICogMHg2MCwgMHg2MSwgMHg2MiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6Njc6c3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluIGF0aF93b3JsZF9yZWdkb21fNjBfNjFfNjIgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy02OC1cXHQubl9yZWdfcnVsZXMgPSA2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy03Ni0vKiBDYW4gYmUgdXNlZCBieSAweDYzIGFuZCAweDY1ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo3NzpzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW4gYXRoX3dvcmxkX3JlZ2RvbV82M182NSA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTc4LVxcdC5uX3JlZ19ydWxlcyA9IDUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTg3LS8qIENhbiBiZSB1c2VkIGJ5IDB4NjQgb25seSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6ODg6c3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluIGF0aF93b3JsZF9yZWdkb21fNjQgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy04OS1cXHQubl9yZWdfcnVsZXMgPSA0LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy05Ny0vKiBDYW4gYmUgdXNlZCBieSAweDY2IGFuZCAweDY5ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo5ODpzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW4gYXRoX3dvcmxkX3JlZ2RvbV82Nl82OSA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTk5LVxcdC5uX3JlZ19ydWxlcyA9IDQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTEwNy0vKiBDYW4gYmUgdXNlZCBieSAweDY3LCAweDY4LCAweDZBIGFuZCAweDZDICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzoxMDg6c3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluIGF0aF93b3JsZF9yZWdkb21fNjdfNjhfNkFfNkMgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0xMDktXFx0Lm5fcmVnX3J1bGVzID0gNSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM9MjE3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiAqYXRoX2RlZmF1bHRfd29ybGRfcmVnZG9tYWluKHZvaWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTIxOS1cXHQvKiB0aGlzIGlzIHRoZSBtb3N0IHJlc3RyaWN0aXZlICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzoyMjA6XFx0cmV0dXJuIFxcdTAwMjZhdGhfd29ybGRfcmVnZG9tXzY0O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjIxLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM9MjI0PWllZWU4MDIxMV9yZWdkb21haW4gKmF0aF93b3JsZF9yZWdkb21haW4oc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTIyOS1cXHRjYXNlIDB4NjI6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzoyMzA6XFx0XFx0cmV0dXJuIFxcdTAwMjZhdGhfd29ybGRfcmVnZG9tXzYwXzYxXzYyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjMxLVxcdGNhc2UgMHg2MzpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTIzMi1cXHRjYXNlIDB4NjU6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzoyMzM6XFx0XFx0cmV0dXJuIFxcdTAwMjZhdGhfd29ybGRfcmVnZG9tXzYzXzY1O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjM0LVxcdGNhc2UgMHg2NDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjIzNTpcXHRcXHRyZXR1cm4gXFx1MDAyNmF0aF93b3JsZF9yZWdkb21fNjQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0yMzYtXFx0Y2FzZSAweDY2OlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjM3LVxcdGNhc2UgMHg2OTpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjIzODpcXHRcXHRyZXR1cm4gXFx1MDAyNmF0aF93b3JsZF9yZWdkb21fNjZfNjk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0yMzktXFx0Y2FzZSAweDY3Olxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0yNDItXFx0Y2FzZSAweDZDOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6MjQzOlxcdFxcdHJldHVybiBcXHUwMDI2YXRoX3dvcmxkX3JlZ2RvbV82N182OF82QV82QztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTI0NC1cXHRkZWZhdWx0OlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxMTo0NToxMi4xMDQ0MzYyNjVaIiwiU2VxIjo1MywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NjM3MDU1NzM0NTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXhhbWluaW5nIHRoZSBBdGhlcm9zIFJlZ3VsYXRvcnkgRG9tYWluIENvZGUqKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIGluLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHJlZ3VsYXRvcnkgZG9tYWluIHJ1bGVzIGFyZSBoYW5kbGVkLCBzcGVjaWZpY2FsbHkgaW4gcmVsYXRpb24gdG8gYGF0aF93b3JsZF9yZWdkb21haW4oKWAuIE15IGZvY3VzIGlzIGN1cnJlbnRseSBvbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmNgIGZpbGUuIEknbSBnb2luZyB0byBzdGFydCBieSBnb2luZyBkZWVwZXIgaW50byB0aGlzIGNvZGUsIGZvY3VzaW5nIG9uIHRoZSBzZWN0aW9uIGZyb20gYXJvdW5kIGxpbmUgMjE1IHRvIGxpbmUgMzAwLiBJIG5lZWQgdG8gcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGlzIGltcGxlbWVudGF0aW9uIGRlYWxzIHdpdGggc3BlY2lmaWMgcGFyYW1ldGVycyBhbmQgbWFrZSBhIGNvbXBhcmlzb24gdG8gYW5vdGhlciBtb2RlbCBpbiBteSBtaW5kLiBUaW1lIHRvIGdldCBkb3duIGludG8gdGhlIGRldGFpbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk5ODYsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxMTo0NjoxNS44MTAwMTIzODFaIiwiU2VxIjo1NCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAxNTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjE1LFxuICBcIkxpbmVDb3VudFwiOiA4MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjE1OlxcdEVYUE9SVF9TWU1CT0woYXRoX2lzX3dvcmxkX3JlZ2QpO1xcbiAyMTY6XFx0XFxuIDIxNzpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW4gKmF0aF9kZWZhdWx0X3dvcmxkX3JlZ2RvbWFpbih2b2lkKVxcbiAyMTg6XFx0e1xcbiAyMTk6XFx0XFx0LyogdGhpcyBpcyB0aGUgbW9zdCByZXN0cmljdGl2ZSAqL1xcbiAyMjA6XFx0XFx0cmV0dXJuIFxcdTAwMjZhdGhfd29ybGRfcmVnZG9tXzY0O1xcbiAyMjE6XFx0fVxcbiAyMjI6XFx0XFxuIDIyMzpcXHRzdGF0aWMgY29uc3Qgc3RydWN0XFxuIDIyNDpcXHRpZWVlODAyMTFfcmVnZG9tYWluICphdGhfd29ybGRfcmVnZG9tYWluKHN0cnVjdCBhdGhfcmVndWxhdG9yeSAqcmVnKVxcbiAyMjU6XFx0e1xcbiAyMjY6XFx0XFx0c3dpdGNoIChyZWctXFx1MDAzZXJlZ3BhaXItXFx1MDAzZXJlZ19kb21haW4pIHtcXG4gMjI3OlxcdFxcdGNhc2UgMHg2MDpcXG4gMjI4OlxcdFxcdGNhc2UgMHg2MTpcXG4gMjI5OlxcdFxcdGNhc2UgMHg2MjpcXG4gMjMwOlxcdFxcdFxcdHJldHVybiBcXHUwMDI2YXRoX3dvcmxkX3JlZ2RvbV82MF82MV82MjtcXG4gMjMxOlxcdFxcdGNhc2UgMHg2MzpcXG4gMjMyOlxcdFxcdGNhc2UgMHg2NTpcXG4gMjMzOlxcdFxcdFxcdHJldHVybiBcXHUwMDI2YXRoX3dvcmxkX3JlZ2RvbV82M182NTtcXG4gMjM0OlxcdFxcdGNhc2UgMHg2NDpcXG4gMjM1OlxcdFxcdFxcdHJldHVybiBcXHUwMDI2YXRoX3dvcmxkX3JlZ2RvbV82NDtcXG4gMjM2OlxcdFxcdGNhc2UgMHg2NjpcXG4gMjM3OlxcdFxcdGNhc2UgMHg2OTpcXG4gMjM4OlxcdFxcdFxcdHJldHVybiBcXHUwMDI2YXRoX3dvcmxkX3JlZ2RvbV82Nl82OTtcXG4gMjM5OlxcdFxcdGNhc2UgMHg2NzpcXG4gMjQwOlxcdFxcdGNhc2UgMHg2ODpcXG4gMjQxOlxcdFxcdGNhc2UgMHg2QTpcXG4gMjQyOlxcdFxcdGNhc2UgMHg2QzpcXG4gMjQzOlxcdFxcdFxcdHJldHVybiBcXHUwMDI2YXRoX3dvcmxkX3JlZ2RvbV82N182OF82QV82QztcXG4gMjQ0OlxcdFxcdGRlZmF1bHQ6XFxuIDI0NTpcXHRcXHRcXHRXQVJOX09OKDEpO1xcbiAyNDY6XFx0XFx0XFx0cmV0dXJuIGF0aF9kZWZhdWx0X3dvcmxkX3JlZ2RvbWFpbigpO1xcbiAyNDc6XFx0XFx0fVxcbiAyNDg6XFx0fVxcbiAyNDk6XFx0XFxuIDI1MDpcXHRib29sIGF0aF9pc180OWdoel9hbGxvd2VkKHUxNiByZWdkb21haW4pXFxuIDI1MTpcXHR7XFxuIDI1MjpcXHRcXHQvKiBwb3NzaWJseSBtb3JlICovXFxuIDI1MzpcXHRcXHRyZXR1cm4gcmVnZG9tYWluID09IE1LSzlfTUtLQztcXG4gMjU0OlxcdH1cXG4gMjU1OlxcdEVYUE9SVF9TWU1CT0woYXRoX2lzXzQ5Z2h6X2FsbG93ZWQpO1xcbiAyNTY6XFx0XFxuIDI1NzpcXHQvKiBGcmVxdWVuY3kgaXMgb25lIHdoZXJlIHJhZGFyIGRldGVjdGlvbiBpcyByZXF1aXJlZCAqL1xcbiAyNTg6XFx0c3RhdGljIGJvb2wgYXRoX2lzX3JhZGFyX2ZyZXEodTE2IGNlbnRlcl9mcmVxLFxcbiAyNTk6XFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcpXFxuIDI2MDpcXHRcXG4gMjYxOlxcdHtcXG4gMjYyOlxcdFxcdGlmIChyZWctXFx1MDAzZWNvdW50cnlfY29kZSA9PSBDVFJZX0lORElBKVxcbiAyNjM6XFx0XFx0XFx0cmV0dXJuIChjZW50ZXJfZnJlcSBcXHUwMDNlPSA1NTAwIFxcdTAwMjZcXHUwMDI2IGNlbnRlcl9mcmVxIFxcdTAwM2M9IDU3MDApO1xcbiAyNjQ6XFx0XFx0cmV0dXJuIChjZW50ZXJfZnJlcSBcXHUwMDNlPSA1MjYwIFxcdTAwMjZcXHUwMDI2IGNlbnRlcl9mcmVxIFxcdTAwM2M9IDU3MDApO1xcbiAyNjU6XFx0fVxcbiAyNjY6XFx0XFxuIDI2NzpcXHRzdGF0aWMgdm9pZCBhdGhfZm9yY2VfY2xlYXJfbm9faXJfY2hhbihzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbiAyNjg6XFx0XFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2gpXFxuIDI2OTpcXHR7XFxuIDI3MDpcXHRcXHRjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ19ydWxlICpyZWdfcnVsZTtcXG4gMjcxOlxcdFxcbiAyNzI6XFx0XFx0cmVnX3J1bGUgPSBmcmVxX3JlZ19pbmZvKHdpcGh5LCBNSFpfVE9fS0haKGNoLVxcdTAwM2VjZW50ZXJfZnJlcSkpO1xcbiAyNzM6XFx0XFx0aWYgKElTX0VSUihyZWdfcnVsZSkpXFxuIDI3NDpcXHRcXHRcXHRyZXR1cm47XFxuIDI3NTpcXHRcXG4gMjc2OlxcdFxcdGlmICghKHJlZ19ydWxlLVxcdTAwM2VmbGFncyBcXHUwMDI2IE5MODAyMTFfUlJGX05PX0lSKSlcXG4gMjc3OlxcdFxcdFxcdGlmIChjaC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRUVFODAyMTFfQ0hBTl9OT19JUilcXG4gMjc4OlxcdFxcdFxcdFxcdGNoLVxcdTAwM2VmbGFncyBcXHUwMDI2PSB+SUVFRTgwMjExX0NIQU5fTk9fSVI7XFxuIDI3OTpcXHR9XFxuIDI4MDpcXHRcXG4gMjgxOlxcdHN0YXRpYyB2b2lkIGF0aF9mb3JjZV9jbGVhcl9ub19pcl9mcmVxKHN0cnVjdCB3aXBoeSAqd2lwaHksIHUxNiBjZW50ZXJfZnJlcSlcXG4gMjgyOlxcdHtcXG4gMjgzOlxcdFxcdHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2g7XFxuIDI4NDpcXHRcXG4gMjg1OlxcdFxcdGNoID0gaWVlZTgwMjExX2dldF9jaGFubmVsKHdpcGh5LCBjZW50ZXJfZnJlcSk7XFxuIDI4NjpcXHRcXHRpZiAoIWNoKVxcbiAyODc6XFx0XFx0XFx0cmV0dXJuO1xcbiAyODg6XFx0XFxuIDI4OTpcXHRcXHRhdGhfZm9yY2VfY2xlYXJfbm9faXJfY2hhbih3aXBoeSwgY2gpO1xcbiAyOTA6XFx0fVxcbiAyOTE6XFx0XFxuIDI5MjpcXHRzdGF0aWMgdm9pZCBhdGhfZm9yY2Vfbm9faXJfY2hhbihzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoKVxcbiAyOTM6XFx0e1xcbiAyOTQ6XFx0XFx0Y2gtXFx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9DSEFOX05PX0lSO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxMTo0NjoxNS44MTAxMTU0OTFaIiwiU2VxIjo1NSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6ODYyMTQxNjE1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipLTVNBTiBBc3Nlc3NtZW50OiBObyBDb25jZXJucyBIZXJlKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBUaGlzIHBhdGNoIGlzIGVzc2VudGlhbGx5IHJlZmluaW5nIGhvdyB3ZSBkZWZpbmUgcmVndWxhdG9yeSBydWxlcyBmb3IgdGhlIDUgR0h6IGJhbmQuIFNwZWNpZmljYWxseSwgaXQncyBzcGxpdHRpbmcgYSBzaW5nbGUgcnVsZSBpbnRvIHR3byBzdWItcmFuZ2VzOiA1MTUwLTUyNDAgTUh6ICh3aXRob3V0IE5PX0lSKSBhbmQgNTI2MC01MzUwIE1IeiAod2l0aCBOT19JUikuIFRoZSBjcnVjaWFsIHBhcnQgaXMgdGhhdCBpdCB1cGRhdGVzIHRoZSBgbl9yZWdfcnVsZXNgIGNvdW50cyBpbiB0aGUgc3RhdGljIGBpZWVlODAyMTFfcmVnZG9tYWluYCB0YWJsZXMgdG8gcmVmbGVjdCB0aGlzIGNoYW5nZS5cblxuTm93LCBsZXQncyBtZXRpY3Vsb3VzbHkgdmVyaWZ5IHRoaXMuIEkgbmVlZCB0byBtYWtlIGFic29sdXRlbHkgc3VyZSB0aGVyZSBhcmVuJ3QgYW55IHNuZWFreSBpc3N1ZXMuIEknbSBnb2luZyB0aHJvdWdoIHRoZSBtYWNybyBleHBhbnNpb25zIGZvciBgQVRIXzJHSFpfQUxMYCBhbmQgYEFUSF81R0haX0FMTGAgdG8gZW5zdXJlIHRoZSBydWxlIGNvdW50cyBhcmUgY29ycmVjdCBhZnRlciB0aGUgc3BsaXQgYW5kIHVwZGF0aW5nIHRoZSB2YXJpb3VzIGBhdGhfd29ybGRfcmVnZG9tXypgIHN0cnVjdHVyZXMsIGNvbmZpcm1pbmcgdGhhdCB0aGUgYC5uX3JlZ19ydWxlc2AgZmllbGQgY29ycmVjdGx5IHJlZmxlY3RzIHRoZSBzdW0gb2YgaXRzIGNvbnN0aXR1ZW50cy4gSSdtIGNvbmZpcm1pbmcgdGhpbmdzIGxpa2UgYGF0aF93b3JsZF9yZWdkb21fNjBfNjFfNjJgIGhhdmluZyA2IHJ1bGVzICgzIGZvciAyR0h6LCAzIGZvciA1R0h6KSBhbmQgc28gb24uIEFsbCB0aGVzZSBhcmUgc3RhdGljIGNvbnN0YW50IHJlZ3VsYXRvcnkgdGFibGVzLlxuXG5NeSBhbmFseXNpcyBib2lscyBkb3duIHRvIHRoaXM6IGFyZSB0aGVyZSBhbnkgcmlza3Mgb2YgS01TQU4gZmluZGluZyB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciBsZWFrcyB0byB1c2Vyc3BhY2U/IFRoZSBhbnN3ZXIgaXMgYSBjbGVhciBcIm5vXCIuIFRoZXJlJ3Mgbm8gZHluYW1pYyBtZW1vcnkgYWxsb2NhdGlvbiwgc28gbm8gY2hhbmNlIG9mIHVuaW5pdGlhbGl6ZWQgaGVhcCBkYXRhLiBUaGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIGFuZCBjZXJ0YWlubHkgbm8gY29weS10by11c2VyIG9mIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGUgY29kZSBpcyBvbmx5IG1vZGlmeWluZyBzdGF0aWMgY29uc3QgZGF0YSBzdHJ1Y3R1cmVzIHRoYXQgYXJlIGZ1bGx5IGluaXRpYWxpemVkIGF0IGNvbXBpbGUgdGltZS5cblxuV2UgbmVlZCB0byBiZSBzdXJlLiBMZXQncyBydW4gZG93biB0aGUgY2hlY2tsaXN0LlxuKiAgIERvZXMgaXQgaW50cm9kdWNlIG9yIG1vZGlmeSBrZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2Ugd2hlcmUgZmllbGRzL3BhZGRpbmcgbWlnaHQgbm90IGJlIGluaXRpYWxpemVkPyBOby5cbiogICBEb2VzIGl0IGludHJvZHVjZSBjb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgZGVwZW5kaW5nIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzPyBOby5cbiogICBEb2VzIGl0IGFsbG9jYXRlIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzIGNvdWxkIGJlIHJlYWQ/IE5vLlxuKiAgIERvZXMgaXQgbW9kaWZ5IGJvdW5kcyBjaGVja3MvbGVuZ3RocyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcyB1bmluaXRpYWxpemVkIGJ5dGVzPyBOby5cblxuS0FTQU4sIG91ciBzdGFuZGFyZCBtZW1vcnkgYm91bmRzIGNoZWNrZXIsIHdpbGwgY2F0Y2ggYW55IG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzZXMgaWYgdGhlcmUgd2VyZSBhbnkgaXNzdWVzIHdpdGggdGhlIHVwZGF0ZWQgY291bnRzLiBCdXQgS01TQU4sIHdoaWNoIHRhcmdldHMgdW5pbml0aWFsaXplZCByZWFkcywgaXMgc2ltcGx5IG5vdCBhcHBsaWNhYmxlIGhlcmUuXG5cbktNU0FOIGRldGVjdHMgcmVhZHMgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgYW5kIGxlYWtzIG9mIHVuaW5pdGlhbGl6ZWQgZGF0YSB0byB1c2VyIHNwYWNlLiBUaGlzIHBhdGNoIHNvbGVseSBkZWFscyB3aXRoIGNvbXBpbGUtdGltZSBjb25zdGFudCByZWd1bGF0b3J5IGRvbWFpbiBydWxlcy4gVGhlcmUncyBubyBkeW5hbWljIGFsbG9jYXRpb24gb3Igc3RhY2stYWxsb2NhdGVkIG1lbW9yeSBhbmQgbm8gdW5pbml0aWFsaXplZCBmaWVsZHMgb3IgYnVmZmVycyBhcmUgY3JlYXRlZCBvciBhY2Nlc3NlZC5cblxuVGhlcmVmb3JlLCBgTmVlZHNLTVNBTmAgc2hvdWxkIGJlIGZhbHNlLiBObyBmdXJ0aGVyIGludmVzdGlnYXRpb24gb3IgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgaXMgbmVjZXNzYXJ5LiBUaGlzIGlzIGEgY2xlYW4sIHNhZmUsIGFuZCBzdHJhaWdodGZvcndhcmQgdXBkYXRlIHRvIHRoZSByZWd1bGF0b3J5IGRvbWFpbiBkZWZpbml0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE1MTAsIk91dHB1dFRva2VucyI6MjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAxOCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDExOjQ2OjI0LjQzMTUzNDgyNVoiLCJTZXEiOjU2LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3OTkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgc3RhdGljIGNvbnN0YW50IHJlZ3VsYXRvcnkgZG9tYWluIGRlZmluaXRpb25zIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jYC4gU3BlY2lmaWNhbGx5LCBpdCBzcGxpdHMgdGhlIGBBVEhfNUdIWl81MTUwXzUzNTBgIG1hY3JvIGludG8gdHdvIHNlcGFyYXRlIHJlZ3VsYXRvcnkgcnVsZXMgKDUxNTAtNTI0MCBNSHogYW5kIDUyNjAtNTM1MCBNSHopIGFuZCBhZGp1c3RzIHRoZSBgbl9yZWdfcnVsZXNgIGZpZWxkIGluIHNldmVyYWwgc3RhdGljIGNvbnN0IGBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbmAgaW5zdGFuY2VzIGFjY29yZGluZ2x5LlxcblxcbkFsbCBhZmZlY3RlZCBkYXRhIHN0cnVjdHVyZXMgYXJlIGNvbXBpbGUtdGltZSBjb25zdGFudCB0YWJsZXMgd2l0aCBmdWxseSBpbml0aWFsaXplZCBmaWVsZHMuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IGR5bmFtaWMgb3Igc3RhY2sgYWxsb2NhdGlvbnMsIGRvZXMgbm90IG1vZGlmeSBhbnkgYnVmZmVycyBvciBwYWRkaW5nIGNvcGllZCB0byB1c2Vyc3BhY2UsIGFuZCBpbnRyb2R1Y2VzIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLiBJZiBhbnkgYXJyYXkgaW5kZXhpbmcgb3IgcnVsZSBjb3VudCBtaXNtYXRjaGVzIHdlcmUgdG8gb2NjdXIsIHRoZXkgd291bGQgYmUgYm91bmRzIHZpb2xhdGlvbnMgZGV0ZWN0YWJsZSBieSBzdGFuZGFyZCBLQVNBTi4gVGhlcmVmb3JlLCB0aGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgdGhhdCB3YXJyYW50IGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbi5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBzdGF0aWMgY29uc3RhbnQgcmVndWxhdG9yeSBkb21haW4gZGVmaW5pdGlvbnMgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmNgLiBTcGVjaWZpY2FsbHksIGl0IHNwbGl0cyB0aGUgYEFUSF81R0haXzUxNTBfNTM1MGAgbWFjcm8gaW50byB0d28gc2VwYXJhdGUgcmVndWxhdG9yeSBydWxlcyAoNTE1MC01MjQwIE1IeiBhbmQgNTI2MC01MzUwIE1IeikgYW5kIGFkanVzdHMgdGhlIGBuX3JlZ19ydWxlc2AgZmllbGQgaW4gc2V2ZXJhbCBzdGF0aWMgY29uc3QgYHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluYCBpbnN0YW5jZXMgYWNjb3JkaW5nbHkuXFxuXFxuQWxsIGFmZmVjdGVkIGRhdGEgc3RydWN0dXJlcyBhcmUgY29tcGlsZS10aW1lIGNvbnN0YW50IHRhYmxlcyB3aXRoIGZ1bGx5IGluaXRpYWxpemVkIGZpZWxkcy4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgZHluYW1pYyBvciBzdGFjayBhbGxvY2F0aW9ucywgZG9lcyBub3QgbW9kaWZ5IGFueSBidWZmZXJzIG9yIHBhZGRpbmcgY29waWVkIHRvIHVzZXJzcGFjZSwgYW5kIGludHJvZHVjZXMgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMuIElmIGFueSBhcnJheSBpbmRleGluZyBvciBydWxlIGNvdW50IG1pc21hdGNoZXMgd2VyZSB0byBvY2N1ciwgdGhleSB3b3VsZCBiZSBib3VuZHMgdmlvbGF0aW9ucyBkZXRlY3RhYmxlIGJ5IHN0YW5kYXJkIEtBU0FOLiBUaGVyZWZvcmUsIHRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyB0aGF0IHdhcnJhbnQgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowvt6vm[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-05 11:22:09 +0000 UTC FinishedAt: 2026-09-05 11:46:26 +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": [ "ATH_COMMON", "ATH9K_HTC", "CARL9170", "CFG80211", "MAC80211", "USB" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "1b60ed34f712e9f606d80951f1586f4274ebadf1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ATH_COMMON", "ATH9K_HTC", "CARL9170", "CFG80211", "MAC80211", "USB" ], "series_id": "764cfd86-7f28-4073-a0cc-0e241ce5a697" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ath_regd_init", "ath_regd_init_wiphy", "ath_world_regdomain", "ath_default_world_regdomain", "ath_reg_notifier_apply" ], "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+CgkJCTx0ZD4yMDI2LzA5LzA1IDExOjQyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FUSF9DT01NT04mIzM0OywKICAgICYjMzQ7QVRIOUtfSFRDJiMzNDssCiAgICAmIzM0O0NBUkw5MTcwJiMzNDssCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2F0aF9yZWdkX2luaXQmIzM0OywKICAgICYjMzQ7YXRoX3JlZ2RfaW5pdF93aXBoeSYjMzQ7LAogICAgJiMzNDthdGhfd29ybGRfcmVnZG9tYWluJiMzNDssCiAgICAmIzM0O2F0aF9kZWZhdWx0X3dvcmxkX3JlZ2RvbWFpbiYjMzQ7LAogICAgJiMzNDthdGhfcmVnX25vdGlmaWVyX2FwcGx5JiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgc3RhdGljIGNvbnN0YW50IHJlZ3VsYXRvcnkgZG9tYWluIGRlZmluaXRpb25zIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jYC4gU3BlY2lmaWNhbGx5LCBpdCBzcGxpdHMgdGhlIGBBVEhfNUdIWl81MTUwXzUzNTBgIG1hY3JvIGludG8gdHdvIHNlcGFyYXRlIHJlZ3VsYXRvcnkgcnVsZXMgKDUxNTAtNTI0MCBNSHogYW5kIDUyNjAtNTM1MCBNSHopIGFuZCBhZGp1c3RzIHRoZSBgbl9yZWdfcnVsZXNgIGZpZWxkIGluIHNldmVyYWwgc3RhdGljIGNvbnN0IGBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbmAgaW5zdGFuY2VzIGFjY29yZGluZ2x5LlxuXG5BbGwgYWZmZWN0ZWQgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBjb21waWxlLXRpbWUgY29uc3RhbnQgdGFibGVzIHdpdGggZnVsbHkgaW5pdGlhbGl6ZWQgZmllbGRzLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSBkeW5hbWljIG9yIHN0YWNrIGFsbG9jYXRpb25zLCBkb2VzIG5vdCBtb2RpZnkgYW55IGJ1ZmZlcnMgb3IgcGFkZGluZyBjb3BpZWQgdG8gdXNlcnNwYWNlLCBhbmQgaW50cm9kdWNlcyBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcy4gSWYgYW55IGFycmF5IGluZGV4aW5nIG9yIHJ1bGUgY291bnQgbWlzbWF0Y2hlcyB3ZXJlIHRvIG9jY3VyLCB0aGV5IHdvdWxkIGJlIGJvdW5kcyB2aW9sYXRpb25zIGRldGVjdGFibGUgYnkgc3RhbmRhcmQgS0FTQU4uIFRoZXJlZm9yZSwgdGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIHRoYXQgd2FycmFudCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24uJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHNwbGl0cyB0aGUgNUdIeiA1MTUwLTUzNTAgTUh6IHJlZ3VsYXRvcnkgcnVsZSBpbnRvIHNlcGFyYXRlIDUxNTAtNTI0MCBNSHogYW5kIDUyNjAtNTM1MCBNSHogcnVsZXMgYW5kIHVwZGF0ZXMgcnVsZSBjb3VudHMgYWNyb3NzIEF0aGVyb3Mgd29ybGQgcmVndWxhdG9yeSBkb21haW4gZGVmaW5pdGlvbnMgaW4gZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy4gVGhpcyBjb2RlIGlzIGV4ZWN1dGVkIGR1cmluZyBpbml0aWFsaXphdGlvbiBhbmQgcmVndWxhdG9yeSB1cGRhdGVzIG9mIEF0aGVyb3Mgd2lyZWxlc3MgZHJpdmVycywgaW5jbHVkaW5nIFVTQi1kcml2ZW4gZGV2aWNlcyAoc3VjaCBhcyBhdGg5a19odGMgYW5kIGNhcmw5MTcwKSB3aGljaCBhcmUgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgVVNCIGVtdWxhdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxMTo0MjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDEyOWNiMTU5ZmI5YzVjZDQ4ZWFkNDdjYzcwNGY3OTg2ZWRjYTQwOTJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IFNlcCA1IDExOjQyOjQ1IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jXG5pbmRleCBmMTVlN2JkNjkwYjViLi5iMTI5YWYwZWVkODg1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuY1xuQEAgLTQzLDcgJiM0Mzs0Myw4IEBAIHN0YXRpYyBpbnQgX19hdGhfcmVnZF9pbml0KHN0cnVjdCBhdGhfcmVndWxhdG9yeSAqcmVnKTtcbiBcdFx0XHRcdFx0IE5MODAyMTFfUlJGX05PX09GRE0pXG4gXG4gLyogV2UgYWxsb3cgSUJTUyBvbiB0aGVzZSBvbiBhIGNhc2UgYnkgY2FzZSBiYXNpcyBieSByZWd1bGF0b3J5IGRvbWFpbiAqL1xuLSNkZWZpbmUgQVRIXzVHSFpfNTE1MF81MzUwXHRSRUdfUlVMRSg1MTUwLTEwLCA1MzUwJiM0MzsxMCwgODAsIDAsIDMwLFxcXG4mIzQzOyNkZWZpbmUgQVRIXzVHSFpfNTE1MF81MzUwXHRSRUdfUlVMRSg1MTUwLTEwLCA1MjQwJiM0MzsxMCwgODAsIDAsIDMwLCAwKSxcXFxuJiM0MztcdFx0XHRcdFJFR19SVUxFKDUyNjAtMTAsIDUzNTAmIzQzOzEwLCA4MCwgMCwgMzAsXFxcbiBcdFx0XHRcdFx0IE5MODAyMTFfUlJGX05PX0lSKVxuICNkZWZpbmUgQVRIXzVHSFpfNTQ3MF81ODUwXHRSRUdfUlVMRSg1NDcwLTEwLCA1ODUwJiM0MzsxMCwgODAsIDAsIDMwLFxcXG4gXHRcdFx0XHRcdCBOTDgwMjExX1JSRl9OT19JUilcbkBAIC02NCw3ICYjNDM7NjUsNyBAQCBzdGF0aWMgaW50IF9fYXRoX3JlZ2RfaW5pdChzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZyk7XG4gLyogQ2FuIGJlIHVzZWQgZm9yOlxuICAqIDB4NjAsIDB4NjEsIDB4NjIgKi9cbiBzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW4gYXRoX3dvcmxkX3JlZ2RvbV82MF82MV82MiA9IHtcbi1cdC5uX3JlZ19ydWxlcyA9IDUsXG4mIzQzO1x0Lm5fcmVnX3J1bGVzID0gNixcbiBcdC5hbHBoYTIgPSAgXCYjMzQ7OTlcJiMzNDssXG4gXHQucmVnX3J1bGVzID0ge1xuIFx0XHRBVEhfMkdIWl9BTEwsXG5AQCAtNzQsNyAmIzQzOzc1LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluIGF0aF93b3JsZF9yZWdkb21fNjBfNjFfNjIgPSB7XG4gXG4gLyogQ2FuIGJlIHVzZWQgYnkgMHg2MyBhbmQgMHg2NSAqL1xuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiBhdGhfd29ybGRfcmVnZG9tXzYzXzY1ID0ge1xuLVx0Lm5fcmVnX3J1bGVzID0gNCxcbiYjNDM7XHQubl9yZWdfcnVsZXMgPSA1LFxuIFx0LmFscGhhMiA9ICBcJiMzNDs5OVwmIzM0OyxcbiBcdC5yZWdfcnVsZXMgPSB7XG4gXHRcdEFUSF8yR0haX0NIMDFfMTEsXG5AQCAtODUsNyAmIzQzOzg2LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluIGF0aF93b3JsZF9yZWdkb21fNjNfNjUgPSB7XG4gXG4gLyogQ2FuIGJlIHVzZWQgYnkgMHg2NCBvbmx5ICovXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluIGF0aF93b3JsZF9yZWdkb21fNjQgPSB7XG4tXHQubl9yZWdfcnVsZXMgPSAzLFxuJiM0MztcdC5uX3JlZ19ydWxlcyA9IDQsXG4gXHQuYWxwaGEyID0gIFwmIzM0Ozk5XCYjMzQ7LFxuIFx0LnJlZ19ydWxlcyA9IHtcbiBcdFx0QVRIXzJHSFpfQ0gwMV8xMSxcbkBAIC05NSw3ICYjNDM7OTYsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW4gYXRoX3dvcmxkX3JlZ2RvbV82NCA9IHtcbiBcbiAvKiBDYW4gYmUgdXNlZCBieSAweDY2IGFuZCAweDY5ICovXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluIGF0aF93b3JsZF9yZWdkb21fNjZfNjkgPSB7XG4tXHQubl9yZWdfcnVsZXMgPSAzLFxuJiM0MztcdC5uX3JlZ19ydWxlcyA9IDQsXG4gXHQuYWxwaGEyID0gIFwmIzM0Ozk5XCYjMzQ7LFxuIFx0LnJlZ19ydWxlcyA9IHtcbiBcdFx0QVRIXzJHSFpfQ0gwMV8xMSxcbkBAIC0xMDUsNyAmIzQzOzEwNiw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiBhdGhfd29ybGRfcmVnZG9tXzY2XzY5ID0ge1xuIFxuIC8qIENhbiBiZSB1c2VkIGJ5IDB4NjcsIDB4NjgsIDB4NkEgYW5kIDB4NkMgKi9cbiBzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW4gYXRoX3dvcmxkX3JlZ2RvbV82N182OF82QV82QyA9IHtcbi1cdC5uX3JlZ19ydWxlcyA9IDQsXG4mIzQzO1x0Lm5fcmVnX3J1bGVzID0gNSxcbiBcdC5hbHBoYTIgPSAgXCYjMzQ7OTlcJiMzNDssXG4gXHQucmVnX3J1bGVzID0ge1xuIFx0XHRBVEhfMkdIWl9DSDAxXzExLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDExOjQyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FUSF9DT01NT04mIzM0OywKICAgICYjMzQ7QVRIOUtfSFRDJiMzNDssCiAgICAmIzM0O0NBUkw5MTcwJiMzNDssCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2F0aF9yZWdkX2luaXQmIzM0OywKICAgICYjMzQ7YXRoX3JlZ2RfaW5pdF93aXBoeSYjMzQ7LAogICAgJiMzNDthdGhfd29ybGRfcmVnZG9tYWluJiMzNDssCiAgICAmIzM0O2F0aF9kZWZhdWx0X3dvcmxkX3JlZ2RvbWFpbiYjMzQ7LAogICAgJiMzNDthdGhfcmVnX25vdGlmaWVyX2FwcGx5JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHNwbGl0cyB0aGUgNUdIeiA1MTUwLTUzNTAgTUh6IHJlZ3VsYXRvcnkgcnVsZSBpbnRvIHNlcGFyYXRlIDUxNTAtNTI0MCBNSHogYW5kIDUyNjAtNTM1MCBNSHogcnVsZXMgYW5kIHVwZGF0ZXMgcnVsZSBjb3VudHMgYWNyb3NzIEF0aGVyb3Mgd29ybGQgcmVndWxhdG9yeSBkb21haW4gZGVmaW5pdGlvbnMgaW4gZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy4gVGhpcyBjb2RlIGlzIGV4ZWN1dGVkIGR1cmluZyBpbml0aWFsaXphdGlvbiBhbmQgcmVndWxhdG9yeSB1cGRhdGVzIG9mIEF0aGVyb3Mgd2lyZWxlc3MgZHJpdmVycywgaW5jbHVkaW5nIFVTQi1kcml2ZW4gZGV2aWNlcyAoc3VjaCBhcyBhdGg5a19odGMgYW5kIGNhcmw5MTcwKSB3aGljaCBhcmUgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgVVNCIGVtdWxhdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDEyOWNiMTU5ZmI5YzVjZDQ4ZWFkNDdjYzcwNGY3OTg2ZWRjYTQwOTIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IFNlcCA1IDExOjQyOjQ1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMKaW5kZXggZjE1ZTdiZDY5MGI1Yi4uYjEyOWFmMGVlZDg4NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jCkBAIC00Myw3ICYjNDM7NDMsOCBAQCBzdGF0aWMgaW50IF9fYXRoX3JlZ2RfaW5pdChzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZyk7CiAJCQkJCSBOTDgwMjExX1JSRl9OT19PRkRNKQogCiAvKiBXZSBhbGxvdyBJQlNTIG9uIHRoZXNlIG9uIGEgY2FzZSBieSBjYXNlIGJhc2lzIGJ5IHJlZ3VsYXRvcnkgZG9tYWluICovCi0jZGVmaW5lIEFUSF81R0haXzUxNTBfNTM1MAlSRUdfUlVMRSg1MTUwLTEwLCA1MzUwJiM0MzsxMCwgODAsIDAsIDMwLFwKJiM0MzsjZGVmaW5lIEFUSF81R0haXzUxNTBfNTM1MAlSRUdfUlVMRSg1MTUwLTEwLCA1MjQwJiM0MzsxMCwgODAsIDAsIDMwLCAwKSxcCiYjNDM7CQkJCVJFR19SVUxFKDUyNjAtMTAsIDUzNTAmIzQzOzEwLCA4MCwgMCwgMzAsXAogCQkJCQkgTkw4MDIxMV9SUkZfTk9fSVIpCiAjZGVmaW5lIEFUSF81R0haXzU0NzBfNTg1MAlSRUdfUlVMRSg1NDcwLTEwLCA1ODUwJiM0MzsxMCwgODAsIDAsIDMwLFwKIAkJCQkJIE5MODAyMTFfUlJGX05PX0lSKQpAQCAtNjQsNyAmIzQzOzY1LDcgQEAgc3RhdGljIGludCBfX2F0aF9yZWdkX2luaXQoc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcpOwogLyogQ2FuIGJlIHVzZWQgZm9yOgogICogMHg2MCwgMHg2MSwgMHg2MiAqLwogc3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluIGF0aF93b3JsZF9yZWdkb21fNjBfNjFfNjIgPSB7Ci0JLm5fcmVnX3J1bGVzID0gNSwKJiM0MzsJLm5fcmVnX3J1bGVzID0gNiwKIAkuYWxwaGEyID0gICYjMzQ7OTkmIzM0OywKIAkucmVnX3J1bGVzID0gewogCQlBVEhfMkdIWl9BTEwsCkBAIC03NCw3ICYjNDM7NzUsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW4gYXRoX3dvcmxkX3JlZ2RvbV82MF82MV82MiA9IHsKIAogLyogQ2FuIGJlIHVzZWQgYnkgMHg2MyBhbmQgMHg2NSAqLwogc3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluIGF0aF93b3JsZF9yZWdkb21fNjNfNjUgPSB7Ci0JLm5fcmVnX3J1bGVzID0gNCwKJiM0MzsJLm5fcmVnX3J1bGVzID0gNSwKIAkuYWxwaGEyID0gICYjMzQ7OTkmIzM0OywKIAkucmVnX3J1bGVzID0gewogCQlBVEhfMkdIWl9DSDAxXzExLApAQCAtODUsNyAmIzQzOzg2LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluIGF0aF93b3JsZF9yZWdkb21fNjNfNjUgPSB7CiAKIC8qIENhbiBiZSB1c2VkIGJ5IDB4NjQgb25seSAqLwogc3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluIGF0aF93b3JsZF9yZWdkb21fNjQgPSB7Ci0JLm5fcmVnX3J1bGVzID0gMywKJiM0MzsJLm5fcmVnX3J1bGVzID0gNCwKIAkuYWxwaGEyID0gICYjMzQ7OTkmIzM0OywKIAkucmVnX3J1bGVzID0gewogCQlBVEhfMkdIWl9DSDAxXzExLApAQCAtOTUsNyAmIzQzOzk2LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluIGF0aF93b3JsZF9yZWdkb21fNjQgPSB7CiAKIC8qIENhbiBiZSB1c2VkIGJ5IDB4NjYgYW5kIDB4NjkgKi8KIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiBhdGhfd29ybGRfcmVnZG9tXzY2XzY5ID0gewotCS5uX3JlZ19ydWxlcyA9IDMsCiYjNDM7CS5uX3JlZ19ydWxlcyA9IDQsCiAJLmFscGhhMiA9ICAmIzM0Ozk5JiMzNDssCiAJLnJlZ19ydWxlcyA9IHsKIAkJQVRIXzJHSFpfQ0gwMV8xMSwKQEAgLTEwNSw3ICYjNDM7MTA2LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluIGF0aF93b3JsZF9yZWdkb21fNjZfNjkgPSB7CiAKIC8qIENhbiBiZSB1c2VkIGJ5IDB4NjcsIDB4NjgsIDB4NkEgYW5kIDB4NkMgKi8KIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiBhdGhfd29ybGRfcmVnZG9tXzY3XzY4XzZBXzZDID0gewotCS5uX3JlZ19ydWxlcyA9IDQsCiYjNDM7CS5uX3JlZ19ydWxlcyA9IDUsCiAJLmFscGhhMiA9ICAmIzM0Ozk5JiMzNDssCiAJLnJlZ19ydWxlcyA9IHsKIAkJQVRIXzJHSFpfQ0gwMV8xMSwKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTE6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzgwOQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDEwOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBvdGVudGlhbCBJbXBhY3Qgb2YgYSBXaXJlbGVzcyBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gdGhlIHBhdGNoIHRvdWNoZXMgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmNgLiBSaWdodCBhd2F5LCBteSBleHBlcnQgbWluZCBraWNrcyBpbi4gVGltZSB0byBkaWcgaW4gYW5kIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucy4gRmlyc3QsIGxldCYjMzk7cyBlc3RhYmxpc2ggdGhlIHJvbGUgb2YgYGF0aC9yZWdkLmNgLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGl0ICpkb2VzKiBpbiB0aGUgZ3JhbmQgc2NoZW1lIG9mIHRoaW5ncyDigJMgd2hhdCYjMzk7cyBpdHMgcHVycG9zZSB3aXRoaW4gdGhlIEF0aGVyb3Mgd2lyZWxlc3MgZHJpdmVyIGVjb3N5c3RlbT8gSXMgaXQgaW52b2x2ZWQgaW4gaGFyZHdhcmUtc3BlY2lmaWMgY29uZmlndXJhdGlvbnMsIG9yIGRvZXMgaXQgaGFuZGxlIG1vcmUgZ2VuZXJhbCByZWd1bGF0b3J5IGRvbWFpbiBhc3BlY3RzPwoKTmV4dCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlLiBXaGljaCBzcGVjaWZpYyBoYXJkd2FyZSBvciB2aXJ0dWFsIGRldmljZXMgcmVseSBvbiB0aGlzIGNvZGU/IEFyZSB3ZSB0YWxraW5nIGFib3V0IHNwZWNpZmljIFBDSSBkZXZpY2VzLCBtb3JlIHdpZGVseSB1c2VkIGhhcmR3YXJlLCBvciBldmVuIHNvbWV0aGluZyByZWFjaGFibGUgdGhyb3VnaCB2aXJ0dWFsIGludGVyZmFjZXMgbGlrZSBtYWM4MDIxMSBod3NpbSBvciBhIFVTQiB3aWZpIGRldmljZSBsaWtlIGF0aDlrX2h0YyBvciBvdGhlciBhdGhrIGRldmljZXM/IEtub3dpbmcgdGhpcyB3aWxsIHNpZ25pZmljYW50bHkgaW5mbHVlbmNlIHRoZSByaXNrIGFzc2Vzc21lbnQuIEl0IHdpbGwgYWZmZWN0IG15IGZ1enppbmcgc3RyYXRlZ3kgdG9vLiBJZiBpdCYjMzk7cyBzb21ldGhpbmcgSSBjYW4gaGl0IGVhc2lseSB0aHJvdWdoIGZ1enppbmcsIGl0IGVsZXZhdGVzIHRoZSBjb25jZXJuIGxldmVsLCBlc3BlY2lhbGx5IGlmIGl0JiMzOTtzIGNvbm5lY3RlZCB0byByZWd1bGF0aW9uLgoKSSYjMzk7bGwgc3RhcnQgd2l0aCBzb21lIHF1aWNrIGBncmVwYHMgd2l0aGluIHRoZSBjb2RlYmFzZSB0byBpZGVudGlmeSBhbGwgdGhlIGNhbGwgc2l0ZXMgYW5kIHJlbGF0ZWQgZnVuY3Rpb25zLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgc29saWQgcGljdHVyZSBvZiBob3cgYGF0aC9yZWdkLmNgIGlzIGludGVncmF0ZWQgYW5kIHVzZWQuIFRoaXMgZGF0YSB3aWxsIGd1aWRlIHRoZSBuZXh0IGxldmVsIG9mIGFuYWx5c2lzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDExOjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2F0aF93b3JsZF9yZWdkb20mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYz0yNj1zdGF0aWMgaW50IF9fYXRoX3JlZ2RfaW5pdChzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy02Ni0gKiAweDYwLCAweDYxLCAweDYyICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjY3OnN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiBhdGhfd29ybGRfcmVnZG9tXzYwXzYxXzYyID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy02OC1cdC5uX3JlZ19ydWxlcyA9IDYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy03Ni0vKiBDYW4gYmUgdXNlZCBieSAweDYzIGFuZCAweDY1ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjc3OnN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiBhdGhfd29ybGRfcmVnZG9tXzYzXzY1ID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy03OC1cdC5uX3JlZ19ydWxlcyA9IDUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy04Ny0vKiBDYW4gYmUgdXNlZCBieSAweDY0IG9ubHkgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6ODg6c3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluIGF0aF93b3JsZF9yZWdkb21fNjQgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTg5LVx0Lm5fcmVnX3J1bGVzID0gNCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTk3LS8qIENhbiBiZSB1c2VkIGJ5IDB4NjYgYW5kIDB4NjkgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6OTg6c3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluIGF0aF93b3JsZF9yZWdkb21fNjZfNjkgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTk5LVx0Lm5fcmVnX3J1bGVzID0gNCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTEwNy0vKiBDYW4gYmUgdXNlZCBieSAweDY3LCAweDY4LCAweDZBIGFuZCAweDZDICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjEwODpzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW4gYXRoX3dvcmxkX3JlZ2RvbV82N182OF82QV82QyA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMTA5LVx0Lm5fcmVnX3J1bGVzID0gNSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jPTIxNz1zdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW4gKmF0aF9kZWZhdWx0X3dvcmxkX3JlZ2RvbWFpbih2b2lkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjE5LVx0LyogdGhpcyBpcyB0aGUgbW9zdCByZXN0cmljdGl2ZSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzoyMjA6XHRyZXR1cm4gXHUwMDI2YXRoX3dvcmxkX3JlZ2RvbV82NDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjIxLX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jPTIyMz1zdGF0aWMgY29uc3Qgc3RydWN0XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjIyNDppZWVlODAyMTFfcmVnZG9tYWluICphdGhfd29ybGRfcmVnZG9tYWluKHN0cnVjdCBhdGhfcmVndWxhdG9yeSAqcmVnKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0yMjUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjI5LVx0Y2FzZSAweDYyOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzoyMzA6XHRcdHJldHVybiBcdTAwMjZhdGhfd29ybGRfcmVnZG9tXzYwXzYxXzYyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0yMzEtXHRjYXNlIDB4NjM6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTIzMi1cdGNhc2UgMHg2NTpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6MjMzOlx0XHRyZXR1cm4gXHUwMDI2YXRoX3dvcmxkX3JlZ2RvbV82M182NTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjM0LVx0Y2FzZSAweDY0OlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzoyMzU6XHRcdHJldHVybiBcdTAwMjZhdGhfd29ybGRfcmVnZG9tXzY0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0yMzYtXHRjYXNlIDB4NjY6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTIzNy1cdGNhc2UgMHg2OTpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6MjM4Olx0XHRyZXR1cm4gXHUwMDI2YXRoX3dvcmxkX3JlZ2RvbV82Nl82OTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjM5LVx0Y2FzZSAweDY3OlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjQyLVx0Y2FzZSAweDZDOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzoyNDM6XHRcdHJldHVybiBcdTAwMjZhdGhfd29ybGRfcmVnZG9tXzY3XzY4XzZBXzZDO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0yNDQtXHRkZWZhdWx0OlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM9NjM2PWF0aF9yZWdkX2luaXRfd2lwaHkoc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy02NTEtXHRcdCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo2NTI6XHRcdHJlZ2QgPSBhdGhfd29ybGRfcmVnZG9tYWluKHJlZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTY1My1cdFx0d2lwaHktXHUwMDNlcmVndWxhdG9yeV9mbGFncyB8PSBSRUdVTEFUT1JZX0NPVU5UUllfSUVfRk9MTE9XX1BPV0VSO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDExOjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU1ODUKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAzOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgYXRoX3JlZ2QgSW5pdGlhbGl6YXRpb24qKgoKT2theSwgc28gSSB3YW50IHRvIGZpZ3VyZSBvdXQgd2hpY2ggZHJpdmVycyB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYCBkaXJlY3RvcnkgYXJlIHVzaW5nIGVpdGhlciBgYXRoX3JlZ2RfaW5pdF93aXBoeWAgb3IsIG1vcmUgYnJvYWRseSwgYW55dGhpbmcgZGVmaW5lZCBpbiBgYXRoX3JlZ2QuY2AuIFRoaXMgaXNuJiMzOTt0IG5lY2Vzc2FyaWx5IGEgY29tcGxleCBxdWVyeSwgYnV0IEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIG1vc3QgZWZmaWNpZW50IHdheSB0byB0cmFjayB0aGlzIGRvd24uIEkmIzM5O2xsIHByb2JhYmx5IHN0YXJ0IHdpdGggYSBgZ3JlcGAgb3IgYGFja2AgY29tbWFuZCBhY3Jvc3MgdGhlIGNvZGViYXNlLCB0YXJnZXRpbmcgdGhvc2Ugc3BlY2lmaWMgZnVuY3Rpb24gbmFtZXMgb3IsIHBvdGVudGlhbGx5LCBqdXN0IHRoZSBmaWxlbmFtZSBgYXRoX3JlZ2QuY2AuIEkgbmVlZCB0byBlbnN1cmUgdGhlIHNlYXJjaCBpcyBzY29wZWQgY29ycmVjdGx5IHRvIGF2b2lkIG5vaXNlIGZyb20gaXJyZWxldmFudCBtYXRjaGVzIGluIGluY2x1ZGVzIG9yIGNvbW1lbnRzLiBUaGlua2luZyBhYm91dCBpdCwgc2luY2UgSSBhbSBhIHN5c3RlbXMgZXhwZXJ0LCBJIHNob3VsZCBwcm9iYWJseSBhbHNvIGNvbnNpZGVyIHRoYXQgSSBtaWdodCBuZWVkIHRvIGFjY291bnQgZm9yIGluZGlyZWN0IGNhbGxzIG9yIG1hY3JvcyB0aGF0IG1pZ2h0IGJlIGRlZmluZWQgd2hpY2ggbWlnaHQgY2FsbCB0aGlzLCByYXRoZXIgdGhhbiBqdXN0IGRpcmVjdCByZWZlcmVuY2VzLiBEZXBlbmRpbmcgb24gdGhlIHJlc3VsdHMsIEkgbWlnaHQgaGF2ZSB0byBnbyBkZWVwZXIsIHBlcmhhcHMgY3Jvc3MtcmVmZXJlbmNpbmcgdGhlIHJlc3VsdHMgd2l0aCBtb2R1bGUgZGVwZW5kZW5jaWVzIG9yIGV4YW1pbmluZyB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiB0byBpZGVudGlmeSBob3cgdGhlc2UgY29tcG9uZW50cyBhcmUgbGlua2VkIHRvZ2V0aGVyLiBUaGlzIGluaXRpYWwgc2VhcmNoIHNob3VsZCBnaXZlIG1lIGEgcHJldHR5IGdvb2Qgc3RhcnRpbmcgcG9pbnQsIGFuZCBJIHdpbGwgYmUgYWJsZSB0byBuYXJyb3cgaXQgZG93biBxdWlja2x5LiBJIHdpbGwgdGhlbiBiZSBhYmxlIHRvIHRyYWNlIGRvd24gd2hhdCB0aG9zZSBtb2R1bGVzIGFyZSBkb2luZyBpbiB0aGVpciBpbml0aWFsaXphdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTE6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoX3JlZ2RfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM9OTkwOD1zdGF0aWMgaW50IGF0aDEwa19tYWNfZ2V0X3dyZGRfcmVndWxhdG9yeShzdHJ1Y3QgYXRoMTBrICphciwgdTE2ICpyZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTk5NDYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jOjk5NDc6XHQqcmQgPSBhdGhfcmVnZF9maW5kX2NvdW50cnlfYnlfbmFtZShhbHBoYTIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy05OTQ4LVx0aWYgKCpyZCA9PSAweGZmZmYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYz05OTcxPWludCBhdGgxMGtfbWFjX3JlZ2lzdGVyKHN0cnVjdCBhdGgxMGsgKmFyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtMTAzMDItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jOjEwMzAzOlx0cmV0ID0gYXRoX3JlZ2RfaW5pdChcdTAwMjZhci1cdTAwM2VhdGhfY29tbW9uLnJlZ3VsYXRvcnksIGFyLVx1MDAzZWh3LVx1MDAzZXdpcGh5LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy0xMDMwNC1cdFx0XHQgICAgYXRoMTBrX3JlZ19ub3RpZmllcik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDVrL2Jhc2UuYz0zMDI1PWF0aDVrX2luaXQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDVrL2Jhc2UuYy0zMTM1LVx0cmVndWxhdG9yeS1cdTAwM2VjdXJyZW50X3JkID0gYWgtXHUwMDNlYWhfY2FwYWJpbGl0aWVzLmNhcF9lZXByb20uZWVfcmVnZG9tYWluO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDVrL2Jhc2UuYzozMTM2Olx0cmV0ID0gYXRoX3JlZ2RfaW5pdChyZWd1bGF0b3J5LCBody1cdTAwM2V3aXBoeSwgYXRoNWtfcmVnX25vdGlmaWVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9iYXNlLmMtMzEzNy1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNWsvcGh5LmM9Mjc2MT1hdGg1a19nZXRfbWF4X2N0bF9wb3dlcihzdHJ1Y3QgYXRoNWtfaHcgKmFoLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9waHkuYy0yNzc0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDVrL3BoeS5jOjI3NzU6XHRjdGxfbW9kZSA9IGF0aF9yZWdkX2dldF9iYW5kX2N0bChyZWd1bGF0b3J5LCBjaGFubmVsLVx1MDAzZWJhbmQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDVrL3BoeS5jLTI3NzYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jPTgyOD1zdGF0aWMgaW50IGF0aDlrX2luaXRfZGV2aWNlKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmMtODUxLVx0LyogSW5pdGlhbGl6ZSByZWd1bGF0b3J5ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM6ODUyOlx0ZXJyb3IgPSBhdGhfcmVnZF9pbml0KFx1MDAyNmNvbW1vbi1cdTAwM2VyZWd1bGF0b3J5LCBwcml2LVx1MDAzZWh3LVx1MDAzZXdpcGh5LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jLTg1My1cdFx0XHQgICAgICBhdGg5a19yZWdfbm90aWZpZXIpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9ody5jPTExNzc9dTMyIGF0aDlrX3JlZ2RfZ2V0X2N0bChzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZywgc3RydWN0IGF0aDlrX2NoYW5uZWwgKmNoYW4pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHcuYy0xMTc4LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9ody5jOjExNzk6XHR1MzIgY3RsID0gYXRoX3JlZ2RfZ2V0X2JhbmRfY3RsKHJlZywgY2hhbi1cdTAwM2VjaGFuLVx1MDAzZWJhbmQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h3LmMtMTE4MC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jPTEwMDQ9aW50IGF0aDlrX2luaXRfZGV2aWNlKHUxNiBkZXZpZCwgc3RydWN0IGF0aF9zb2Z0YyAqc2MsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYy0xMDIyLVx0LyogSW5pdGlhbGl6ZSByZWd1bGF0b3J5ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jOjEwMjM6XHRlcnJvciA9IGF0aF9yZWdkX2luaXQoXHUwMDI2Y29tbW9uLVx1MDAzZXJlZ3VsYXRvcnksIHNjLVx1MDAzZWh3LVx1MDAzZXdpcGh5LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYy0xMDI0LVx0XHRcdCAgICAgIGF0aDlrX3JlZ19ub3RpZmllcik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL21haW4uYz0xOTUzPWludCBjYXJsOTE3MF9yZWdpc3RlcihzdHJ1Y3QgYXI5MTcwICphcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvbWFpbi5jLTE5NzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvbWFpbi5jOjE5NzE6XHRlcnIgPSBhdGhfcmVnZF9pbml0KHJlZ3VsYXRvcnksIGFyLVx1MDAzZWh3LVx1MDAzZXdpcGh5LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL21haW4uYy0xOTcyLVx0XHRcdCAgICBjYXJsOTE3MF9yZWdfbm90aWZpZXIpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9jYXJsOTE3MC9waHkuYz0xMjkxPXN0YXRpYyB2b2lkIGNhcmw5MTcwX2NhbGNfY3RsKHN0cnVjdCBhcjkxNzAgKmFyLCB1MzIgZnJlcSwgZW51bSBjYXJsOTE3MF9idyBidylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvcGh5LmMtMTMyNi1cdCAqIGhwcmVnLmM6OnpmSHBHZXRSZWd1bGF0b3J5RG9tYWluKCkgYW5kXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvcGh5LmM6MTMyNzpcdCAqIGF0aC9yZWdkLmM6OmF0aF9yZWdkX2dldF9iYW5kX2N0bCgpIC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9jYXJsOTE3MC9waHkuYy0xMzI4LVx0ICogZS5nLiBmb3IgRkNDM19XT1JMRCB0aGUgT1RVUyBwcm9jZWR1cmVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvcGh5LmMtMTMzMS1cdCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL3BoeS5jOjEzMzI6XHRjdGxfZ3JwID0gYXRoX3JlZ2RfZ2V0X2JhbmRfY3RsKFx1MDAyNmFyLVx1MDAzZWNvbW1vbi5yZWd1bGF0b3J5LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL3BoeS5jLTEzMzMtXHRcdFx0XHRcdGFyLVx1MDAzZWh3LVx1MDAzZWNvbmYuY2hhbmRlZi5jaGFuLVx1MDAzZWJhbmQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjI2OnN0YXRpYyBpbnQgX19hdGhfcmVnZF9pbml0KHN0cnVjdCBhdGhfcmVndWxhdG9yeSAqcmVnKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjctXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYz0xOTk9c3RhdGljIGlubGluZSBib29sIGlzX3d3cl9za3UodTE2IHJlZ2QpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0yMDUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjIwNjpzdGF0aWMgdTE2IGF0aF9yZWdkX2dldF9lZXByb21SRChzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjA3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jPTIxMT1ib29sIGF0aF9pc193b3JsZF9yZWdkKHN0cnVjdCBhdGhfcmVndWxhdG9yeSAqcmVnKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0yMTIte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzoyMTM6XHRyZXR1cm4gaXNfd3dyX3NrdShhdGhfcmVnZF9nZXRfZWVwcm9tUkQocmVnKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTIxNC19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYz00Mzc9c3RhdGljIHZvaWQgYXRoX3JlZ19hcHBseV93b3JsZF9mbGFncyhzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNDU4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo0NTk6dTE2IGF0aF9yZWdkX2ZpbmRfY291bnRyeV9ieV9uYW1lKGNoYXIgKmFscGhhMilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNDYwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTQ2OS19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjQ3MDpFWFBPUlRfU1lNQk9MKGF0aF9yZWdkX2ZpbmRfY291bnRyeV9ieV9uYW1lKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNDcxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYz00NzI9c3RhdGljIGludCBfX2F0aF9yZWdfZHluX2NvdW50cnkoc3RydWN0IHdpcGh5ICp3aXBoeSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTQ4MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NDgyOlx0Y291bnRyeV9jb2RlID0gYXRoX3JlZ2RfZmluZF9jb3VudHJ5X2J5X25hbWUocmVxdWVzdC1cdTAwM2VhbHBoYTIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy00ODMtXHRpZiAoY291bnRyeV9jb2RlID09ICh1MTYpIC0xKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNDg4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo0ODk6XHRfX2F0aF9yZWdkX2luaXQocmVnKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNDkwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM9NTUwPUVYUE9SVF9TWU1CT0woYXRoX3JlZ19ub3RpZmllcl9hcHBseSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTU1MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NTUyOnN0YXRpYyBib29sIGF0aF9yZWdkX2lzX2VlcHJvbV92YWxpZChzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNTUzLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NTU0Olx0dTE2IHJkID0gYXRoX3JlZ2RfZ2V0X2VlcHJvbVJEKHJlZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTU1NS1cdGludCBpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM9NTgxPXN0YXRpYyBzdHJ1Y3QgY291bnRyeV9jb2RlX3RvX2VudW1fcmQqXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjU4MjphdGhfcmVnZF9maW5kX2NvdW50cnkodTE2IGNvdW50cnlDb2RlKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy01ODMte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM9NTk0PXN0YXRpYyBzdHJ1Y3QgY291bnRyeV9jb2RlX3RvX2VudW1fcmQqXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjU5NTphdGhfcmVnZF9maW5kX2NvdW50cnlfYnlfcmQoaW50IHJlZ2RtbilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNTk2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTYwNi0vKiBSZXR1cm5zIHRoZSBtYXAgb2YgdGhlIEVFUFJPTSBzZXQgUkQgdG8gYSBjb3VudHJ5IGNvZGUgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NjA3OnN0YXRpYyB1MTYgYXRoX3JlZ2RfZ2V0X2RlZmF1bHRfY291bnRyeSh1MTYgcmQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTYwOC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy02MTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjYxMzpcdFx0Y291bnRyeSA9IGF0aF9yZWdkX2ZpbmRfY291bnRyeShjYyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTYxNC1cdFx0aWYgKGNvdW50cnkgIT0gTlVMTClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jPTYzNT1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjYzNjphdGhfcmVnZF9pbml0X3dpcGh5KHN0cnVjdCBhdGhfcmVndWxhdG9yeSAqcmVnLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy02MzctXHRcdCAgICBzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNjc1LSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo2NzY6c3RhdGljIHZvaWQgYXRoX3JlZ2Rfc2FuaXRpemUoc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTY3Ny17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy02ODMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjY4NDpzdGF0aWMgaW50IF9fYXRoX3JlZ2RfaW5pdChzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNjg1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTY5MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NjkyOlx0YXRoX3JlZ2Rfc2FuaXRpemUocmVnKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNjkzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNjk1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo2OTY6XHRpZiAoIWF0aF9yZWdkX2lzX2VlcHJvbV92YWxpZChyZWcpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTY5Ny1cdFx0cHJfZXJyKFwmIzM0O0ludmFsaWQgRUVQUk9NIGNvbnRlbnRzXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTcwMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NzAxOlx0cmVnZG1uID0gYXRoX3JlZ2RfZ2V0X2VlcHJvbVJEKHJlZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjcwMjpcdHJlZy1cdTAwM2Vjb3VudHJ5X2NvZGUgPSBhdGhfcmVnZF9nZXRfZGVmYXVsdF9jb3VudHJ5KHJlZ2Rtbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTcwMy1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTcxNS1cdFx0ICAgICAgIFwmIzM0O21hcCBzZWFyY2hcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo3MTY6XHRcdGNvdW50cnkgPSBhdGhfcmVnZF9maW5kX2NvdW50cnkocmVnLVx1MDAzZWNvdW50cnlfY29kZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTcxNy1cdFx0aWYgKGNvdW50cnkgPT0gTlVMTCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNzM5LVx0aWYgKCFjb3VudHJ5KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo3NDA6XHRcdGNvdW50cnkgPSBhdGhfcmVnZF9maW5kX2NvdW50cnlfYnlfcmQocmVnZG1uKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNzQxLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM9NzU4PWludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo3NTk6YXRoX3JlZ2RfaW5pdChzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNzYwLVx0ICAgICAgc3RydWN0IHdpcGh5ICp3aXBoeSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTc2Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NzY4Olx0ciA9IF9fYXRoX3JlZ2RfaW5pdChyZWcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy03NjktXHRpZiAocilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTc3NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6Nzc2Olx0YXRoX3JlZ2RfaW5pdF93aXBoeShyZWcsIHdpcGh5LCByZWdfbm90aWZpZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy03NzctXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy03NzktfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo3ODA6RVhQT1JUX1NZTUJPTChhdGhfcmVnZF9pbml0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNzgxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo3ODI6dTMyIGF0aF9yZWdkX2dldF9iYW5kX2N0bChzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNzgzLVx0XHRcdCAgZW51bSBubDgwMjExX2JhbmQgYmFuZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTc4Ni1cdCAgICAocmVnLVx1MDAzZWNvdW50cnlfY29kZSA9PSBDVFJZX0RFRkFVTFQgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjc4NzpcdCAgICAgaXNfd3dyX3NrdShhdGhfcmVnZF9nZXRfZWVwcm9tUkQocmVnKSkpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTc4OC1cdFx0cmV0dXJuIFNEX05PX0NUTDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTc5MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NzkxOlx0aWYgKGF0aF9yZWdkX2dldF9lZXByb21SRChyZWcpID09IENUUllfREVGQVVMVCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy03OTItXHRcdHN3aXRjaCAocmVnLVx1MDAzZXJlZ2lvbikge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtODEyLX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6ODEzOkVYUE9SVF9TWU1CT0woYXRoX3JlZ2RfZ2V0X2JhbmRfY3RsKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5oPTI2Mj1ib29sIGF0aF9pc180OWdoel9hbGxvd2VkKHUxNiByZWRvbWFpbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5oOjI2Mzp1MTYgYXRoX3JlZ2RfZmluZF9jb3VudHJ5X2J5X25hbWUoY2hhciAqYWxwaGEyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmg6MjY0OmludCBhdGhfcmVnZF9pbml0KHN0cnVjdCBhdGhfcmVndWxhdG9yeSAqcmVnLCBzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuaC0yNjUtXHRcdCAgdm9pZCAoKnJlZ19ub3RpZmllcikoc3RydWN0IHdpcGh5ICp3aXBoeSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmgtMjY2LVx0XHRcdFx0ICAgICAgIHN0cnVjdCByZWd1bGF0b3J5X3JlcXVlc3QgKnJlcXVlc3QpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmg6MjY3OnUzMiBhdGhfcmVnZF9nZXRfYmFuZF9jdGwoc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5oLTI2OC1cdFx0XHQgIGVudW0gbmw4MDIxMV9iYW5kIGJhbmQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDExOjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMTg2CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBVU0IgV2lyZWxlc3MgRHJpdmVyIEluaXRpYWxpemF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBpbnRvIHRoZXNlIFVTQiB3aXJlbGVzcyBkcml2ZXJzLCBzcGVjaWZpY2FsbHkgYGF0aDlrX2h0Y2AgYW5kIGBjYXJsOTE3MGAuIEl0JiMzOTtzIHByZXR0eSBjbGVhciB0aGV5IGFyZSBVU0IgZHJpdmVycywgYW5kIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGV5IGJlaGF2ZSBpbiBhIFVTQiBjb250ZXh0LiBLbm93aW5nIHRoZSBpbnMgYW5kIG91dHMgb2YgVVNCIGRldmljZSBlbXVsYXRpb24gaXMga2V5LCBzbyBJJiMzOTtsbCBiZSBmb2N1c2VkIG9uIGhvdyB0aGVzZSBkcml2ZXJzIGFyZSB0cmVhdGVkIGluIGVudmlyb25tZW50cyB3aGVyZSBVU0IgUmF3IEdhZGdldCBhbmQgc3l6a2FsbGVyIGZ1enppbmcgYXJlIGF0IHBsYXkgd2l0aGluIFFFTVUgb3Igb3RoZXIgdmlydHVhbGl6ZWQgc2V0dXBzLiBJIG5lZWQgdG8gbmFpbCBkb3duIGV4YWN0bHkgaG93IHRoZXNlIGRyaXZlcnMgYXJlIHByb2JlZCBhbmQgaW5pdGlhbGl6ZWQgdGhyb3VnaCB0aGUgVVNCIGludGVyZmFjZS4gVGhhdCYjMzk7cyB0aGUgY29yZSBxdWVzdGlvbiBoZXJlLiBUbyBnZXQgYSBoYW5kbGUgb24gaXQsIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIHJlbGV2YW50IEtjb25maWcgb3B0aW9ucyBmb3IgYGF0aDlrX2h0Y2AsIGBjYXJsOTE3MGAgYW5kIGFsc28gdGhlIGBhdGgvcmVnZC5jYCBmaWxlIHdoaWNoIGlzIGxpa2VseSB0byBob2xkIGltcG9ydGFudCByZWd1bGF0b3J5IGRvbWFpbiBpbmZvcm1hdGlvbiByZWxhdGVkIHRvIHRoZXNlIGRyaXZlcnMuIFVuZGVyc3RhbmRpbmcgdGhlIGNvbmZpZ3VyYXRpb24gYW5kIGluaXRpYWxpemF0aW9uIGZsb3cgaXMgZXNzZW50aWFsIGZvciBmdXJ0aGVyIGFuYWx5c2lzIG9yIHRlc3RpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTE6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBJU0NcbiAgIDI6XHRjb25maWcgQVRIX0NPTU1PTlxuICAgMzpcdFx0dHJpc3RhdGVcbiAgIDQ6XHRcbiAgIDU6XHRjb25maWcgV0xBTl9WRU5ET1JfQVRIXG4gICA2Olx0XHRib29sIFwmIzM0O0F0aGVyb3MvUXVhbGNvbW0gZGV2aWNlc1wmIzM0O1xuICAgNzpcdFx0ZGVmYXVsdCB5XG4gICA4Olx0XHRoZWxwXG4gICA5Olx0XHQgIElmIHlvdSBoYXZlIGEgd2lyZWxlc3MgY2FyZCBiZWxvbmdpbmcgdG8gdGhpcyBjbGFzcywgc2F5IFkuXG4gIDEwOlx0XG4gIDExOlx0XHQgIE5vdGUgdGhhdCB0aGUgYW5zd2VyIHRvIHRoaXMgcXVlc3Rpb24gZG9lc24mIzM5O3QgZGlyZWN0bHkgYWZmZWN0IHRoZVxuICAxMjpcdFx0ICBrZXJuZWw6IHNheWluZyBOIHdpbGwganVzdCBjYXVzZSB0aGUgY29uZmlndXJhdG9yIHRvIHNraXAgYWxsIHRoZVxuICAxMzpcdFx0ICBxdWVzdGlvbnMgYWJvdXQgdGhlc2UgY2FyZHMuIElmIHlvdSBzYXkgWSwgeW91IHdpbGwgYmUgYXNrZWQgZm9yXG4gIDE0Olx0XHQgIHlvdXIgc3BlY2lmaWMgY2FyZCBpbiB0aGUgZm9sbG93aW5nIHF1ZXN0aW9ucy5cbiAgMTU6XHRcbiAgMTY6XHRcdCAgRm9yIG1vcmUgaW5mb3JtYXRpb24gYW5kIGRvY3VtZW50YXRpb24gb24gdGhpcyBtb2R1bGUgeW91IGNhbiB2aXNpdDpcbiAgMTc6XHRcbiAgMTg6XHRcdCAgaHR0cHM6Ly93aXJlbGVzcy53aWtpLmtlcm5lbC5vcmcvZW4vdXNlcnMvRHJpdmVycy9hdGhcbiAgMTk6XHRcbiAgMjA6XHRcdCAgRm9yIGluZm9ybWF0aW9uIG9uIGFsbCBBdGhlcm9zIHdpcmVsZXNzIGRyaXZlcnMgdmlzaXQ6XG4gIDIxOlx0XG4gIDIyOlx0XHQgIGh0dHBzOi8vd2lyZWxlc3Mud2lraS5rZXJuZWwub3JnL2VuL3VzZXJzL0RyaXZlcnMvQXRoZXJvc1xuICAyMzpcdFxuICAyNDpcdGlmIFdMQU5fVkVORE9SX0FUSFxuICAyNTpcdFxuICAyNjpcdGNvbmZpZyBBVEhfREVCVUdcbiAgMjc6XHRcdGJvb2wgXCYjMzQ7QXRoZXJvcyB3aXJlbGVzcyBkZWJ1Z2dpbmdcJiMzNDtcbiAgMjg6XHRcdGhlbHBcbiAgMjk6XHRcdCAgU2F5IFksIGlmIHlvdSB3YW50IHRvIGRlYnVnIGF0aGVyb3Mgd2lyZWxlc3MgZHJpdmVycy5cbiAgMzA6XHRcdCAgUmlnaHQgbm93IG9ubHkgYXRoOWsgbWFrZXMgdXNlIG9mIHRoaXMuXG4gIDMxOlx0XG4gIDMyOlx0Y29uZmlnIEFUSF9UUkFDRVBPSU5UU1xuICAzMzpcdFx0Ym9vbCBcJiMzNDtBdGhlcm9zIHdpcmVsZXNzIHRyYWNpbmdcJiMzNDtcbiAgMzQ6XHRcdGRlcGVuZHMgb24gQVRIX0RFQlVHXG4gIDM1Olx0XHRkZXBlbmRzIG9uIEVWRU5UX1RSQUNJTkdcbiAgMzY6XHRcdGhlbHBcbiAgMzc6XHRcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0cmFjZXBvaW50cyBmb3IgYXRoZXJvcyB3aXJlbGVzcyBkcml2ZXJzLlxuICAzODpcdFx0ICBDdXJyZW50bHksIGF0aDlrIG1ha2VzIHVzZSBvZiB0aGlzIGZhY2lsaXR5LlxuICAzOTpcdFxuICA0MDpcdGNvbmZpZyBBVEhfUkVHX0RZTkFNSUNfVVNFUl9SRUdfSElOVFNcbiAgNDE6XHRcdGJvb2wgXCYjMzQ7QXRoZXJvcyBkeW5hbWljIHVzZXIgcmVndWxhdG9yeSBoaW50c1wmIzM0O1xuICA0MjpcdFx0ZGVwZW5kcyBvbiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcbiAgNDM6XHRcdGRlZmF1bHQgblxuICA0NDpcdFx0aGVscFxuICA0NTpcdFx0ICBTYXkgTi4gVGhpcyBzaG91bGQgb25seSBiZSBlbmFibGVkIGluIGNvdW50cmllcyB3aGVyZVxuICA0NjpcdFx0ICB0aGlzIGZlYXR1cmUgaXMgZXhwbGljaXRseSBhbGxvd2VkIGFuZCBvbmx5IG9uIGNhcmRzIHRoYXRcbiAgNDc6XHRcdCAgc3BlY2lmaWNhbGx5IGhhdmUgYmVlbiB0ZXN0ZWQgZm9yIHRoaXMuXG4gIDQ4Olx0XG4gIDQ5Olx0Y29uZmlnIEFUSF9SRUdfRFlOQU1JQ19VU0VSX0NFUlRfVEVTVElOR1xuICA1MDpcdFx0Ym9vbCBcJiMzNDtBdGhlcm9zIGR5bmFtaWMgdXNlciByZWd1bGF0b3J5IHRlc3RpbmdcJiMzNDtcbiAgNTE6XHRcdGRlcGVuZHMgb24gQVRIX1JFR19EWU5BTUlDX1VTRVJfUkVHX0hJTlRTIFx1MDAyNlx1MDAyNiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcbiAgNTI6XHRcdGRlZmF1bHQgblxuICA1MzpcdFx0aGVscFxuICA1NDpcdFx0ICBTYXkgTi4gVGhpcyBzaG91bGQgb25seSBiZSBlbmFibGVkIG9uIHN5c3RlbXNcbiAgNTU6XHRcdCAgdW5kZXJnb2luZyBjZXJ0aWZpY2F0aW9uIHRlc3RpbmcuXG4gIDU2Olx0XG4gIDU3Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9LY29uZmlnXCYjMzQ7XG4gIDU4Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnXCYjMzQ7XG4gIDU5Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9jYXJsOTE3MC9LY29uZmlnXCYjMzQ7XG4gIDYwOlx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvS2NvbmZpZ1wmIzM0O1xuICA2MTpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXI1NTIzL0tjb25maWdcJiMzNDtcbiAgNjI6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvS2NvbmZpZ1wmIzM0O1xuICA2MzpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWdcJiMzNDtcbiAgNjQ6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvS2NvbmZpZ1wmIzM0O1xuICA2NTpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWdcJiMzNDtcbiAgNjY6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnXCYjMzQ7XG4gIDY3Olx0XG4gIDY4Olx0ZW5kaWZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxMTo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTU0OQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHRoZSBvbmUgdGhpbmtpbmcgaXQ6CgoqKkRpdmluZyBpbnRvIHRoZSBBdGhlcm9zIERyaXZlciBNYWtlZmlsZSoqCgpPa2F5LCB0aW1lIHRvIGdldCB0byB0aGUgaGVhcnQgb2YgdGhpcyB3aXJlbGVzcyBkcml2ZXIuIE15IGd1dCB0ZWxscyBtZSB0aGF0IGFueSBtb2RpZmljYXRpb25zIG9yIGRlZXBlciB1bmRlcnN0YW5kaW5nIG9mIHRoaXMgYXRoZXJvcyBkcml2ZXIgc3RhcnRzIHdpdGggaXRzIGJ1aWxkIGNvbmZpZ3VyYXRpb24uIExldCYjMzk7cyBzZWUuLi4gSSYjMzk7bGwganVtcCByaWdodCBpbnRvIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL01ha2VmaWxlYC4gVGhpcyBpcyB3aGVyZSB0aGUgbWFnaWMgaGFwcGVucyDigJMgd2hlcmUgYWxsIHRoZSBwaWVjZXMgZ2V0IGdsdWVkIHRvZ2V0aGVyLCB3aGVyZSB0aGUgZGVwZW5kZW5jaWVzIGFyZSBkZWZpbmVkLCBhbmQgaG93IHRoZSBkcml2ZXIgdWx0aW1hdGVseSBnZXRzIGNvbXBpbGVkLiBJJiMzOTtsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHN0cnVjdHVyZTogd2hhdCB0YXJnZXRzIGFyZSBkZWZpbmVkLCB3aGljaCBzb3VyY2UgZmlsZXMgYXJlIGluY2x1ZGVkLCBhbmQgaG93IHRoZSBvdmVyYWxsIGJ1aWxkIHByb2Nlc3MgaXMgb3JjaGVzdHJhdGVkLiBIb3BlZnVsbHksIHRoaXMgTWFrZWZpbGUgaXMgd2VsbC1zdHJ1Y3R1cmVkIGFuZCBjb21tZW50ZWQuIEkmIzM5O20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGFueSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBiYXNlZCBvbiBrZXJuZWwgdmVyc2lvbnMsIGhhcmR3YXJlIHBsYXRmb3Jtcywgb3IgZmVhdHVyZSBmbGFncy4gSSBleHBlY3QgdG8gYmUgYWJsZSB0byB1bmRlcnN0YW5kIHRoZSBkaWZmZXJlbnQgYXRoIGRyaXZlciB2ZXJzaW9ucyBpZiB0aGV5IGV4aXN0LCBhbmQgdGhlIG1vZHVsZSBhcmNoaXRlY3R1cmUuIFRoYXQgc2hvdWxkIHByb3ZpZGUgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGZvciB3aGF0ZXZlciBJJiMzOTttIHRyb3VibGVzaG9vdGluZyBvciBpbnZlc3RpZ2F0aW5nLiBMZXQmIzM5O3MgZ2V0IHRvIGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxMTo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9NYWtlZmlsZSYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IElTQ1xuICAgMjpcdG9iai0kKENPTkZJR19BVEg1SylcdFx0JiM0Mzs9IGF0aDVrL1xuICAgMzpcdG9iai0kKENPTkZJR19BVEg5S19IVylcdFx0JiM0Mzs9IGF0aDlrL1xuICAgNDpcdG9iai0kKENPTkZJR19DQVJMOTE3MClcdFx0JiM0Mzs9IGNhcmw5MTcwL1xuICAgNTpcdG9iai0kKENPTkZJR19BVEg2S0wpXHRcdCYjNDM7PSBhdGg2a2wvXG4gICA2Olx0b2JqLSQoQ09ORklHX0FSNTUyMylcdFx0JiM0Mzs9IGFyNTUyMy9cbiAgIDc6XHRvYmotJChDT05GSUdfV0lMNjIxMClcdFx0JiM0Mzs9IHdpbDYyMTAvXG4gICA4Olx0b2JqLSQoQ09ORklHX0FUSDEwSylcdFx0JiM0Mzs9IGF0aDEway9cbiAgIDk6XHRvYmotJChDT05GSUdfV0NOMzZYWClcdFx0JiM0Mzs9IHdjbjM2eHgvXG4gIDEwOlx0b2JqLSQoQ09ORklHX0FUSDExSylcdFx0JiM0Mzs9IGF0aDExay9cbiAgMTE6XHRvYmotJChDT05GSUdfQVRIMTJLKVx0XHQmIzQzOz0gYXRoMTJrL1xuICAxMjpcdFxuICAxMzpcdG9iai0kKENPTkZJR19BVEhfQ09NTU9OKVx0JiM0Mzs9IGF0aC5vXG4gIDE0Olx0XG4gIDE1Olx0YXRoLW9ianMgOj1cdG1haW4ubyBcXFxuICAxNjpcdFx0XHRyZWdkLm8gXFxcbiAgMTc6XHRcdFx0aHcubyBcXFxuICAxODpcdFx0XHRrZXkubyBcXFxuICAxOTpcdFx0XHRkZnNfcGF0dGVybl9kZXRlY3Rvci5vIFxcXG4gIDIwOlx0XHRcdGRmc19wcmlfZGV0ZWN0b3Iub1xuICAyMTpcdFxuICAyMjpcdGF0aC0kKENPTkZJR19BVEhfREVCVUcpICYjNDM7PSBkZWJ1Zy5vXG4gIDIzOlx0YXRoLSQoQ09ORklHX0FUSF9UUkFDRVBPSU5UUykgJiM0Mzs9IHRyYWNlLm9cbiAgMjQ6XHRcbiAgMjU6XHRDRkxBR1NfdHJhY2UubyA6PSAtSSQoc3JjKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxMTo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjI0OAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDUzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBCdWlsZCBEZXBlbmRlbmN5IENoYWluKioKClJpZ2h0LCBzbyBJIG5lZWQgdG8gdHJhY2UgdGhpcyBkZXBlbmRlbmN5LiBNeSBzdGFydGluZyBwb2ludCBpcyB0aGF0IGBDT05GSUdfQVRIX0NPTU1PTmAgbGVhZHMgdG8gdGhlIGNvbXBpbGF0aW9uIG9mIGBhdGgub2AsIGFuZCBjcnVjaWFsbHksIHRoYXQgaW5jbHVkZXMgYHJlZ2Qub2AuIFRoYXQmIzM5O3MgdGhlIGNvcmUgcmVsYXRpb25zaGlwIEkmIzM5O20gdHJ5aW5nIHRvIHVuZGVyc3RhbmQg4oCTIGhvdyBgcmVnZC5vYCBnZXRzIGJ1aWx0IGludG8gdGhlIGltYWdlLiBOb3csIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgYWN0dWFsbHkgKnNlbGVjdHMqIG9yICplbmFibGVzKiBgQVRIX0NPTU1PTmAgaW4gdGhlIGZpcnN0IHBsYWNlLiBNeSBpbW1lZGlhdGUgYXBwcm9hY2ggd2lsbCBiZSB0byBsZXZlcmFnZSB0aGUgS2NvbmZpZyBmaWxlcywgSSBuZWVkIHRvIHVzZSBgZ3JlcGAgdG8gaHVudCBmb3IgaW5zdGFuY2VzIG9mIGBBVEhfQ09NTU9OYCBhbmQgc2VlIHdoZXJlIGl0IHNob3dzIHVwIGFzIGEgZGVwZW5kZW5jeS4gSSYjMzk7bGwgc2VhcmNoIHRvIGRldGVybWluZSB3aGF0IG90aGVyIGNvbmZpZ3MgYXJlIGludm9sdmVkIGluIGVuYWJsaW5nIGBBVEhfQ09NTU9OYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTE6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7QVRIX0NPTU1PTiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IElTQ1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL0tjb25maWc6Mjpjb25maWcgQVRIX0NPTU1PTlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL0tjb25maWctMy1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL01ha2VmaWxlPTExPW9iai0kKENPTkZJR19BVEgxMkspXHRcdCYjNDM7PSBhdGgxMmsvXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvTWFrZWZpbGUtMTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvTWFrZWZpbGU6MTM6b2JqLSQoQ09ORklHX0FUSF9DT01NT04pXHQmIzQzOz0gYXRoLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9NYWtlZmlsZS0xNC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXI1NTIzL0tjb25maWc9Mj1jb25maWcgQVI1NTIzXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2FyNTUyMy9LY29uZmlnLTQtXHRkZXBlbmRzIG9uIE1BQzgwMjExIFx1MDAyNlx1MDAyNiBVU0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hcjU1MjMvS2NvbmZpZzo1Olx0c2VsZWN0IEFUSF9DT01NT05cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hcjU1MjMvS2NvbmZpZy02LVx0c2VsZWN0IEZXX0xPQURFUlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZz0yPWNvbmZpZyBBVEgxMEtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctNC1cdGRlcGVuZHMgb24gTUFDODAyMTEgXHUwMDI2XHUwMDI2IEhBU19ETUFcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZzo1Olx0c2VsZWN0IEFUSF9DT01NT05cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy02LVx0c2VsZWN0IENSQzMyXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnPTI9Y29uZmlnIEFUSDExS1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy00LVx0ZGVwZW5kcyBvbiBNQUM4MDIxMSBcdTAwMjZcdTAwMjYgSEFTX0RNQVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjU6XHRzZWxlY3QgQVRIX0NPTU1PTlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTYtXHRzZWxlY3QgUUNPTV9RTUlfSEVMUEVSU1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9LY29uZmlnPTI9Y29uZmlnIEFUSDVLXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDVrL0tjb25maWctNC1cdGRlcGVuZHMgb24gKFBDSSB8fCBBVEgyNSkgXHUwMDI2XHUwMDI2IE1BQzgwMjExXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNWsvS2NvbmZpZzo1Olx0c2VsZWN0IEFUSF9DT01NT05cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9LY29uZmlnLTYtXHRzZWxlY3QgTUFDODAyMTFfTEVEUyBpZiBMRURTX0NMQVNTPXkgfHwgTEVEU19DTEFTUz1NQUM4MDIxMVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnPTQ9Y29uZmlnIEFUSDlLX0NPTU1PTlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNS1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo2Olx0c2VsZWN0IEFUSF9DT01NT05cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTctY29uZmlnIEFUSDlLX0NPTU1PTl9ERUJVR1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9jYXJsOTE3MC9LY29uZmlnPTI9Y29uZmlnIENBUkw5MTcwXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL0tjb25maWctNC1cdGRlcGVuZHMgb24gVVNCIFx1MDAyNlx1MDAyNiBNQUM4MDIxMVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL0tjb25maWc6NTpcdHNlbGVjdCBBVEhfQ09NTU9OXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvS2NvbmZpZy02LVx0c2VsZWN0IEZXX0xPQURFUlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxMTo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzM0MQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDY0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgVVNCIERyaXZlciBSZWd1bGF0b3J5IERvbWFpbiBJbml0aWFsaXphdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbi4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggVVNCIGRyaXZlcnMgYXJlIHVzaW5nIHRoZSBgYXRoX3JlZ2RfaW5pdGAgZnVuY3Rpb24gb3IgdGhlIGBhdGhfd29ybGRfcmVnZG9tXypgIHN5bWJvbHMg4oCTIHRob3NlIGFyZSBrZXkgaW5kaWNhdG9ycyBvZiBob3cgcmVndWxhdG9yeSBkb21haW5zIGFyZSBiZWluZyBoYW5kbGVkLiBNeSBpbml0aWFsIGZvY3VzIHdpbGwgYmUgb24gdGhlIGBjYXJsOTE3MGAgYW5kIGBhdGg5a19odGNgIGRyaXZlcnMsIGdpdmVuIHRoZWlyIGhpc3RvcnkgYW5kIHBvdGVudGlhbCBmb3IgcmVndWxhdG9yeSBpbnRlcmFjdGlvbnMuIEkmIzM5O2xsIG5lZWQgdG8gc2NydXRpbml6ZSB0aGVtIGNsb3NlbHkuIFRvIGdldCBhIGNvbXByZWhlbnNpdmUgdW5kZXJzdGFuZGluZyBvZiB0aGUgYGF0aDlrX2h0Y2AgZHJpdmVyJiMzOTtzIHJlZ3VsYXRvcnkgY29uZmlndXJhdGlvbiwgSSBzaG91bGQgcHJvYmFibHkgYWxzbyBjaGVjayBpdHMgYXNzb2NpYXRlZCBLY29uZmlnIGZpbGUuIFRoaXMgd2lsbCBsaWtlbHkgc2hvdyB0aGUgb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzIHJlbGF0ZWQgdG8gcmVndWxhdG9yeSBkb21haW4gc3VwcG9ydCB3aXRoaW4gdGhhdCBzcGVjaWZpYyBkcml2ZXIuIFRpbWUgdG8gZGlnIGluIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxMTo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtBVEg5S19IVEMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc9MTM9Y29uZmlnIEFUSDlLX0JUQ09FWF9TVVBQT1JUXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNC1cdGJvb2wgXCYjMzQ7QXRoZXJvcyBibHVldG9vdGggY29leGlzdGVuY2Ugc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTU6XHRkZXBlbmRzIG9uIChBVEg5SyB8fCBBVEg5S19IVEMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNi1cdGRlZmF1bHQgeVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnPTE1Nj1jb25maWcgQVRIOUtfUENJX05PX0VFUFJPTVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE3MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjE3Mjpjb25maWcgQVRIOUtfSFRDXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNzMtXHR0cmlzdGF0ZSBcJiMzNDtBdGhlcm9zIEhUQyBiYXNlZCB3aXJlbGVzcyBjYXJkcyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTg2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTg3OmNvbmZpZyBBVEg5S19IVENfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTg4LVx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDlrX2h0YyBkZWJ1Z2dpbmdcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjE4OTpcdGRlcGVuZHMgb24gQVRIOUtfSFRDIFx1MDAyNlx1MDAyNiBERUJVR19GU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTkwLVx0c2VsZWN0IEFUSDlLX0NPTU1PTl9ERUJVR1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnPTIwNj1jb25maWcgQVRIOUtfQ09NTU9OX1NQRUNUUkFMXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0yMDctXHRib29sIFwmIzM0O0F0aGVyb3MgYXRoOWsvYXRoOWtfaHRjIHNwZWN0cmFsIHNjYW4gc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MjA4Olx0ZGVwZW5kcyBvbiBBVEg5S19ERUJVR0ZTIHx8IEFUSDlLX0hUQ19ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0yMDktXHRzZWxlY3QgUkVMQVlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU9Njg9YXRoOWtfaHRjLXkgJiM0Mzs9XHRodGNfaHN0Lm8gXFxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtNzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6Nzc6YXRoOWtfaHRjLSQoQ09ORklHX0FUSDlLX0hUQ19ERUJVR0ZTKSAmIzQzOz0gaHRjX2Rydl9kZWJ1Zy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtNzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6Nzk6b2JqLSQoQ09ORklHX0FUSDlLX0hUQykgJiM0Mzs9IGF0aDlrX2h0Yy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtODAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwM19lZXByb20uYz0zMzkwPXN0YXRpYyBib29sIGF0aDlrX2h3X2FyOTMwMF9maWxsX2VlcHJvbShzdHJ1Y3QgYXRoX2h3ICphaClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAzX2VlcHJvbS5jLTM0MDAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAzX2VlcHJvbS5jOjM0MDE6I2lmIGRlZmluZWQoQ09ORklHX0FUSDlLX0RFQlVHRlMpIHx8IGRlZmluZWQoQ09ORklHX0FUSDlLX0hUQ19ERUJVR0ZTKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwM19lZXByb20uYy0zNDAyLXN0YXRpYyB1MzIgYXI5MDAzX2R1bXBfbW9kYWxfZWVwcm9tKGNoYXIgKmJ1ZiwgdTMyIGxlbiwgdTMyIHNpemUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYz0yMzI9c3RhdGljIGlubGluZSB2b2lkIGF0aDlrX3NrYl9xdWV1ZV9jb21wbGV0ZShzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0yMzgtXHR3aGlsZSAoKHNrYiA9IF9fc2tiX2RlcXVldWUocXVldWUpKSAhPSBOVUxMKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjIzOTojaWZkZWYgQ09ORklHX0FUSDlLX0hUQ19ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTI0MC1cdFx0aW50IGxuID0gc2tiLVx1MDAzZWxlbjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jPTM3Nj1zdGF0aWMgaW50IGhpZl91c2Jfc2VuZF90eChzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0zOTktXHQvKiBNZ210L0JlYWNvbiBmcmFtZXMgZG9uJiMzOTt0IHVzZSB0aGUgVFggYnVmZmVyIHBvb2wgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NDAwOlx0aWYgKCh0eF9jdGwtXHUwMDNldHlwZSA9PSBBVEg5S19IVENfTUdNVCkgfHxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NDAxOlx0ICAgICh0eF9jdGwtXHUwMDNldHlwZSA9PSBBVEg5S19IVENfQkVBQ09OKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00MDItXHRcdHJldCA9IGhpZl91c2Jfc2VuZF9tZ210KGhpZl9kZXYsIHNrYik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00MDYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjQwNzpcdGlmICgodHhfY3RsLVx1MDAzZXR5cGUgPT0gQVRIOUtfSFRDX05PUk1BTCkgfHxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NDA4Olx0ICAgICh0eF9jdGwtXHUwMDNldHlwZSA9PSBBVEg5S19IVENfQU1QRFUpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQwOS1cdFx0X19za2JfcXVldWVfdGFpbChcdTAwMjZoaWZfZGV2LVx1MDAzZXR4LnR4X3NrYl9xdWV1ZSwgc2tiKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jPTQ4Nz1zdGF0aWMgaW5saW5lIGJvb2wgY2hlY2tfaW5kZXgoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTggaWR4KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNDkyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo0OTM6XHRpZiAoKHR4X2N0bC1cdTAwM2V0eXBlID09IEFUSDlLX0hUQ19BTVBEVSkgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQ5NC1cdCAgICAodHhfY3RsLVx1MDAzZXN0YV9pZHggPT0gaWR4KSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9NTY9ZW51bSBodGNfb3Btb2RlIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6NjU6I2RlZmluZSBBVEg5S19IVENfQU1QRFUgIDFcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo2NjojZGVmaW5lIEFUSDlLX0hUQ19OT1JNQUwgMlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjY3OiNkZWZpbmUgQVRIOUtfSFRDX0JFQUNPTiAzXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6Njg6I2RlZmluZSBBVEg5S19IVENfTUdNVCAgIDRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC02OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo3MDojZGVmaW5lIEFUSDlLX0hUQ19UWF9DVFNPTkxZICAgICAgMHgxXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6NzE6I2RlZmluZSBBVEg5S19IVENfVFhfUlRTQ1RTICAgICAgIDB4MlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTcyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTczPXN0cnVjdCB0eF9mcmFtZV9oZHIge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC03Ny1cdHU4IHRpZG5vO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjc4Olx0X19iZTMyIGZsYWdzOyAvKiBBVEg5S19IVENfVFhfKiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTc5LVx0dTgga2V5X3R5cGU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTE5ND1zdHJ1Y3QgYXRoOWtfaHRjX3RhcmdldF9yeF9zdGF0cyB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTE5OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyMDA6I2RlZmluZSBBVEg5S19IVENfTUFYX1ZJRiAyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MjAxOiNkZWZpbmUgQVRIOUtfSFRDX01BWF9CQ05fVklGIDJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0yMDItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTI0OT1zdHJ1Y3QgYXRoOWtfdmlmX2l0ZXJfZGF0YSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI1My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyNTQ6I2RlZmluZSBBVEg5S19IVENfTUFYX1NUQSA4XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MjU1OiNkZWZpbmUgQVRIOUtfSFRDX01BWF9USUQgOFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI1Ni1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9MjY0PXN0cnVjdCBhdGg5a19odGNfc3RhIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0yNjUtXHR1OCBpbmRleDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyNjY6XHRlbnVtIHRpZF9hZ2dyX3N0YXRlIHRpZF9zdGF0ZVtBVEg5S19IVENfTUFYX1RJRF07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMjY3LVx0c3RydWN0IHdvcmtfc3RydWN0IHJjX3VwZGF0ZV93b3JrO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0yNzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MjcxOiNkZWZpbmUgQVRIOUtfSFRDX1JYQlVGIDI1NlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI3Mi0jZGVmaW5lIEhUQ19SWF9GUkFNRV9IRUFERVJfU0laRSA0MFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD0yODE9c3RydWN0IGF0aDlrX2h0Y19yeCB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI4Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyODc6I2RlZmluZSBBVEg5S19IVENfVFhfQ0xFQU5VUF9JTlRFUlZBTCA1MCAvKiBtcyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI4ODojZGVmaW5lIEFUSDlLX0hUQ19UWF9USU1FT1VUX0lOVEVSVkFMIDMwMDAgLyogbXMgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyODk6I2RlZmluZSBBVEg5S19IVENfVFhfUkVTRVJWRSAxMFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI5MDojZGVmaW5lIEFUSDlLX0hUQ19UWF9USU1FT1VUX0NPVU5UIDQwXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MjkxOiNkZWZpbmUgQVRIOUtfSFRDX1RYX1RIUkVTSE9MRCAoTUFYX1RYX0JVRl9OVU0gLSBBVEg5S19IVENfVFhfUkVTRVJWRSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0yOTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MjkzOiNkZWZpbmUgQVRIOUtfSFRDX09QX1RYX1FVRVVFU19TVE9QIEJJVCgwKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI5NDojZGVmaW5lIEFUSDlLX0hUQ19PUF9UWF9EUkFJTiAgICAgICBCSVQoMSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0yOTUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTMxMT1zdHJ1Y3QgYXRoOWtfaHRjX3R4X2N0bCB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MzEyOlx0dTggdHlwZTsgLyogQVRIOUtfSFRDXyogKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0zMTMtXHR1OCBlcGlkO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD0zMTk9c3RhdGljIGlubGluZSBzdHJ1Y3QgYXRoOWtfaHRjX3R4X2N0bCAqSFRDX1NLQl9DQihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0zMjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MzI4OiNpZmRlZiBDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0zMjktI2RlZmluZSBfX1NUQVRfU0FGRShoaWZfZGV2LCBleHByKVx0ZG8geyAoKGhpZl9kZXYpLVx1MDAzZWh0Y19oYW5kbGUtXHUwMDNlZHJ2X3ByaXYgPyAoZXhwcikgOiAwKTsgfSB3aGlsZSAoMClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9Mzg4PXN0YXRpYyBpbmxpbmUgdm9pZCBhdGg5a19odGNfZXJyX3N0YXRfcngoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0zOTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MzkzOiNlbmRpZiAvKiBDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlMgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0zOTQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTQwOT1zdHJ1Y3QgaHRjX2JlYWNvbiB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTQxNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo0MTY6XHRzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqYnNsb3RbQVRIOUtfSFRDX01BWF9CQ05fVklGXTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC00MTctXHR1MzIgYm1pc3NjbnQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTQ1Nj1zdHJ1Y3QgYXRoOWtfaHRjX3ByaXYge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC00NzgtXHR1OCBzdGFfc2xvdDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo0Nzk6XHR1OCB2aWZfc3RhX3Bvc1tBVEg5S19IVENfTUFYX1ZJRl07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNDgwLVx0dTggbnVtX2lic3NfdmlmO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC01MzUtXHRzdHJ1Y3QgZGVsYXllZF93b3JrIGR1dHlfY3ljbGVfd29yaztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo1MzY6I2lmZGVmIENPTkZJR19BVEg5S19IVENfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTUzNy1cdHN0cnVjdCBhdGg5a19kZWJ1ZyBkZWJ1Zztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9NjQxPWludCBhdGg5a19odGNfcmVzdW1lKHN0cnVjdCBodGNfdGFyZ2V0ICpodGNfaGFuZGxlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC02NDItI2VuZGlmXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6NjQzOiNpZmRlZiBDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC02NDQtaW50IGF0aDlrX2h0Y19pbml0X2RlYnVnKHN0cnVjdCBhdGhfaHcgKmFoKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9NjQ4PXN0YXRpYyBpbmxpbmUgdm9pZCBhdGg5a19odGNfZGVpbml0X2RlYnVnKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNjUwLX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo2NTE6I2VuZGlmIC8qIENPTkZJR19BVEg5S19IVENfREVCVUdGUyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTY1Mi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYz0xMTE9c3RhdGljIHZvaWQgYXRoOWtfaHRjX2JlYWNvbl9jb25maWdfYXAoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTExNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jOjExNzpcdGF0aDlrX2Ntbl9iZWFjb25fY29uZmlnX2FwKGFoLCBjb25mLCBBVEg5S19IVENfTUFYX0JDTl9WSUYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMTE4LVx0YXRoOWtfaHRjX2JlYWNvbl9pbml0KHByaXYsIGNvbmYsIGZhbHNlKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYz0xOTE9c3RhdGljIHZvaWQgYXRoOWtfaHRjX3NlbmRfYmVhY29uKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYy0yNDItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYzoyNDM6XHR0eF9jdGwtXHUwMDNldHlwZSA9IEFUSDlLX0hUQ19CRUFDT047XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYy0yNDQtXHR0eF9jdGwtXHUwMDNlZXBpZCA9IHByaXYtXHUwMDNlYmVhY29uX2VwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jPTI2ND1zdGF0aWMgaW50IGF0aDlrX2h0Y19jaG9vc2VfYnNsb3Qoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTI3Ni1cdHRzZnR1ID0gVFNGX1RPX1RVKHRzZiBcdTAwM2VcdTAwM2UgMzIsIHRzZik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYzoyNzc6XHRzbG90ID0gKCh0c2Z0dSAlIGludHZhbCkgKiBBVEg5S19IVENfTUFYX0JDTl9WSUYpIC8gaW50dmFsO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmM6Mjc4Olx0c2xvdCA9IEFUSDlLX0hUQ19NQVhfQkNOX1ZJRiAtIHNsb3QgLSAxO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMjc5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jPTMyNT12b2lkIGF0aDlrX2h0Y19hc3NpZ25fYnNsb3Qoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTMzMi1cdHNwaW5fbG9ja19iaChcdTAwMjZwcml2LVx1MDAzZWJlYWNvbl9sb2NrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jOjMzMzpcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFUSDlLX0hUQ19NQVhfQkNOX1ZJRjsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTMzNC1cdFx0aWYgKHByaXYtXHUwMDNlYmVhY29uLmJzbG90W2ldID09IE5VTEwpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYz0zNjU9dm9pZCBhdGg5a19odGNfc2V0X3RzZmFkanVzdChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMzgwLVx0ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYzozODE6XHR0c2ZhZGp1c3QgPSBjdXJfY29uZi1cdTAwM2ViZWFjb25faW50ZXJ2YWwgKiBhdnAtXHUwMDNlYnNsb3QgLyBBVEg5S19IVENfTUFYX0JDTl9WSUY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYy0zODItXHRhdnAtXHUwMDNldHNmYWRqdXN0ID0gY3B1X3RvX2xlNjQoVFVfVE9fVVNFQyh0c2ZhZGp1c3QpKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jPTM5OD1zdGF0aWMgY29uc3QgY2hhciBhdGg5a19odGNfZ3N0cmluZ3Nfc3RhdHNbXVtFVEhfR1NUUklOR19MRU5dID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMtNDE4LX07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jOjQxOTojZGVmaW5lIEFUSDlLX0hUQ19TU1RBVFNfTEVOIEFSUkFZX1NJWkUoYXRoOWtfaHRjX2dzdHJpbmdzX3N0YXRzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYy00MjAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYz00MzA9aW50IGF0aDlrX2h0Y19nZXRfZXRfc3NldF9jb3VudChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jLTQzMy1cdGlmIChzc2V0ID09IEVUSF9TU19TVEFUUylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM6NDM0Olx0XHRyZXR1cm4gQVRIOUtfSFRDX1NTVEFUU19MRU47XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jLTQzNS1cdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM9NDQ4PXZvaWQgYXRoOWtfaHRjX2dldF9ldF9zdGF0cyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jLTQ3My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM6NDc0Olx0V0FSTl9PTihpICE9IEFUSDlLX0hUQ19TU1RBVFNfTEVOKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMtNDc1LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM9NjA2PXN0YXRpYyBpbnQgYXRoOWtfaW5pdF9wcml2KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmMtNjczLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jOjY3NDpcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFUSDlLX0hUQ19NQVhfQkNOX1ZJRjsgaSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmMtNjc1LVx0XHRwcml2LVx1MDAzZWJlYWNvbi5ic2xvdFtpXSA9IE5VTEw7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jPTE4ND12b2lkIGF0aDlrX2h0Y19yZXNldChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTIzMy1cdG1vZF90aW1lcihcdTAwMjZwcml2LVx1MDAzZXR4LmNsZWFudXBfdGltZXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6MjM0Olx0XHQgIGppZmZpZXMgJiM0MzsgbXNlY3NfdG9famlmZmllcyhBVEg5S19IVENfVFhfQ0xFQU5VUF9JTlRFUlZBTCkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTIzNS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM9MjQwPXN0YXRpYyBpbnQgYXRoOWtfaHRjX3NldF9jaGFubmVsKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMzExLVx0bW9kX3RpbWVyKFx1MDAyNnByaXYtXHUwMDNldHguY2xlYW51cF90aW1lcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzozMTI6XHRcdCAgamlmZmllcyAmIzQzOyBtc2Vjc190b19qaWZmaWVzKEFUSDlLX0hUQ19UWF9DTEVBTlVQX0lOVEVSVkFMKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMzEzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYz0zNTA9c3RhdGljIGludCBhdGg5a19odGNfYWRkX21vbml0b3JfaW50ZXJmYWNlKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMzU3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjM1ODpcdGlmICgocHJpdi1cdTAwM2VudmlmcyBcdTAwM2U9IEFUSDlLX0hUQ19NQVhfVklGKSB8fFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjM1OTpcdCAgICAocHJpdi1cdTAwM2Vuc3RhdGlvbnMgXHUwMDNlPSBBVEg5S19IVENfTUFYX1NUQSkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0zNjAtXHRcdHJldCA9IC1FTk9CVUZTO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0zNjQtXHRzdGFfaWR4ID0gZmZ6KHByaXYtXHUwMDNlc3RhX3Nsb3QpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjM2NTpcdGlmICgoc3RhX2lkeCBcdTAwM2MgMCkgfHwgKHN0YV9pZHggXHUwMDNlIEFUSDlLX0hUQ19NQVhfU1RBKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTM2Ni1cdFx0cmV0ID0gLUVOT0JVRlM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jPTQ2Nj1zdGF0aWMgaW50IGF0aDlrX2h0Y19hZGRfc3RhdGlvbihzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTQ3Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzo0Nzg6XHRpZiAocHJpdi1cdTAwM2Vuc3RhdGlvbnMgXHUwMDNlPSBBVEg5S19IVENfTUFYX1NUQSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy00NzktXHRcdHJldHVybiAtRU5PQlVGUztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtNDgxLVx0c3RhX2lkeCA9IGZmeihwcml2LVx1MDAzZXN0YV9zbG90KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzo0ODI6XHRpZiAoKHN0YV9pZHggXHUwMDNjIDApIHx8IChzdGFfaWR4IFx1MDAzZSBBVEg5S19IVENfTUFYX1NUQSkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtNDgzLVx0XHRyZXR1cm4gLUVOT0JVRlM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jPTcwMj1zdGF0aWMgaW50IGF0aDlrX2h0Y190eF9hZ2dyX29wZXIoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy03MTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6NzE0Olx0aWYgKHRpZCBcdTAwM2U9IEFUSDlLX0hUQ19NQVhfVElEKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTcxNS1cdFx0cmV0dXJuIC1FSU5WQUw7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jPTkwNz1zdGF0aWMgaW50IGF0aDlrX2h0Y19zdGFydChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtOTYwLVx0c3Bpbl9sb2NrX2JoKFx1MDAyNnByaXYtXHUwMDNldHgudHhfbG9jayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6OTYxOlx0cHJpdi1cdTAwM2V0eC5mbGFncyBcdTAwMjY9IH5BVEg5S19IVENfT1BfVFhfUVVFVUVTX1NUT1A7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtOTYyLVx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2cHJpdi1cdTAwM2V0eC50eF9sb2NrKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtOTY2LVx0bW9kX3RpbWVyKFx1MDAyNnByaXYtXHUwMDNldHguY2xlYW51cF90aW1lcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzo5Njc6XHRcdCAgamlmZmllcyAmIzQzOyBtc2Vjc190b19qaWZmaWVzKEFUSDlLX0hUQ19UWF9DTEVBTlVQX0lOVEVSVkFMKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtOTY4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYz0xNjU4PXN0YXRpYyBpbnQgYXRoOWtfaHRjX2FtcGR1X2FjdGlvbihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMTY4OC1cdGNhc2UgSUVFRTgwMjExX0FNUERVX1RYX09QRVJBVElPTkFMOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjE2ODk6XHRcdGlmICh0aWQgXHUwMDNlPSBBVEg5S19IVENfTUFYX1RJRCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTE2OTAtXHRcdFx0cmV0ID0gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM9MTg3ND1zdHJ1Y3QgaWVlZTgwMjExX29wcyBhdGg5a19odGNfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0xOTA2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjE5MDc6I2lmZGVmIENPTkZJR19BVEg5S19IVENfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTE5MDgtXHQuZ2V0X2V0X3NzZXRfY291bnQgID0gYXRoOWtfaHRjX2dldF9ldF9zc2V0X2NvdW50LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz0yMz1zdGF0aWMgY29uc3QgaW50IHN1YnR5cGVfdHhxX3RvX2h3cVtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0yOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzozMDojZGVmaW5lIEFUSDlLX0hUQ19JTklUX1RYUShzdWJ0eXBlKSBkbyB7XHRcdFx0XFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0zMS1cdFx0cWkudHFpX3N1YnR5cGUgPSBzdWJ0eXBlX3R4cV90b19od3Fbc3VidHlwZV07XHRcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz01Nj12b2lkIGF0aDlrX2h0Y19jaGVja19zdG9wX3F1ZXVlcyhzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTU5LVx0cHJpdi1cdTAwM2V0eC5xdWV1ZWRfY250JiM0MzsmIzQzOztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo2MDpcdGlmICgocHJpdi1cdTAwM2V0eC5xdWV1ZWRfY250IFx1MDAzZT0gQVRIOUtfSFRDX1RYX1RIUkVTSE9MRCkgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NjE6XHQgICAgIShwcml2LVx1MDAzZXR4LmZsYWdzIFx1MDAyNiBBVEg5S19IVENfT1BfVFhfUVVFVUVTX1NUT1ApKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NjI6XHRcdHByaXYtXHUwMDNldHguZmxhZ3MgfD0gQVRIOUtfSFRDX09QX1RYX1FVRVVFU19TVE9QO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTYzLVx0XHRpZWVlODAyMTFfc3RvcF9xdWV1ZXMocHJpdi1cdTAwM2Vodyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTY4PXZvaWQgYXRoOWtfaHRjX2NoZWNrX3dha2VfcXVldWVzKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNzAtXHRzcGluX2xvY2tfYmgoXHUwMDI2cHJpdi1cdTAwM2V0eC50eF9sb2NrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo3MTpcdGlmICgocHJpdi1cdTAwM2V0eC5xdWV1ZWRfY250IFx1MDAzYyBBVEg5S19IVENfVFhfVEhSRVNIT0xEKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo3MjpcdCAgICAocHJpdi1cdTAwM2V0eC5mbGFncyBcdTAwMjYgQVRIOUtfSFRDX09QX1RYX1FVRVVFU19TVE9QKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjczOlx0XHRwcml2LVx1MDAzZXR4LmZsYWdzIFx1MDAyNj0gfkFUSDlLX0hUQ19PUF9UWF9RVUVVRVNfU1RPUDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy03NC1cdFx0aWVlZTgwMjExX3dha2VfcXVldWVzKHByaXYtXHUwMDNlaHcpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz0yMTQ9c3RhdGljIHZvaWQgYXRoOWtfaHRjX3R4X21nbXQoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0yNDAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6MjQxOlx0dHhfY3RsLVx1MDAzZXR5cGUgPSBBVEg5S19IVENfTUdNVDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0yNDItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTI2MD1zdGF0aWMgdm9pZCBhdGg5a19odGNfdHhfZGF0YShzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTI5Mi1cdGlmICh0eF9pbmZvLVx1MDAzZWZsYWdzIFx1MDAyNiBJRUVFODAyMTFfVFhfQ1RMX0FNUERVKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6MjkzOlx0XHR0eF9jdGwtXHUwMDNldHlwZSA9IEFUSDlLX0hUQ19BTVBEVTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzoyOTQ6XHRcdHR4X2hkci5kYXRhX3R5cGUgPSBBVEg5S19IVENfQU1QRFU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMjk1LVx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzoyOTY6XHRcdHR4X2N0bC1cdTAwM2V0eXBlID0gQVRIOUtfSFRDX05PUk1BTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzoyOTc6XHRcdHR4X2hkci5kYXRhX3R5cGUgPSBBVEg5S19IVENfTk9STUFMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTI5OC1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMzEyLVx0XHRpZiAoc2tiLVx1MDAzZWxlbiBcdTAwM2UgcHJpdi1cdTAwM2Vody1cdTAwM2V3aXBoeS1cdTAwM2VydHNfdGhyZXNob2xkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjMxMzpcdFx0XHRmbGFncyB8PSBBVEg5S19IVENfVFhfUlRTQ1RTO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTMxNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0zMTUtXHQvKiBDVFMtdG8tc2VsZiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjMxNjpcdGlmICghKGZsYWdzIFx1MDAyNiBBVEg5S19IVENfVFhfUlRTQ1RTKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0zMTctXHQgICAgKHZpZiBcdTAwMjZcdTAwMjYgdmlmLVx1MDAzZWJzc19jb25mLnVzZV9jdHNfcHJvdCkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6MzE4Olx0XHRmbGFncyB8PSBBVEg5S19IVENfVFhfQ1RTT05MWTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0zMTktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTM5Mj1zdGF0aWMgaW5saW5lIGJvb2wgX19hdGg5a19odGNfY2hlY2tfdHhfYWdncihzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTM5Ny1cdHNwaW5fbG9ja19iaChcdTAwMjZwcml2LVx1MDAzZXR4LnR4X2xvY2spO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjM5ODpcdGlmICgodGlkIFx1MDAzYyBBVEg5S19IVENfTUFYX1RJRCkgXHUwMDI2XHUwMDI2IChpc3RhLVx1MDAzZXRpZF9zdGF0ZVt0aWRdID09IEFHR1JfU1RPUCkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMzk5LVx0XHRyZXQgPSB0cnVlO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz00NDU9c3RhdGljIHZvaWQgYXRoOWtfaHRjX3R4X3Byb2Nlc3Moc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00NzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NDc5Olx0aWYgKHR4cy1cdTAwM2V0c19mbGFncyBcdTAwMjYgQVRIOUtfSFRDX1RYU1RBVF9BQ0spIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00ODAtXHRcdHR4X2luZm8tXHUwMDNlZmxhZ3MgfD0gSUVFRTgwMjExX1RYX1NUQVRfQUNLO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00ODQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NDg1Olx0aWYgKHR4cy1cdTAwM2V0c19mbGFncyBcdTAwMjYgQVRIOUtfSFRDX1RYU1RBVF9GSUxUKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ4Ni1cdFx0dHhfaW5mby1cdTAwM2VmbGFncyB8PSBJRUVFODAyMTFfVFhfU1RBVF9UWF9GSUxURVJFRDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00ODctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NDg4Olx0aWYgKHR4cy1cdTAwM2V0c19mbGFncyBcdTAwMjYgQVRIOUtfSFRDX1RYU1RBVF9SVENfQ1RTKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ4OS1cdFx0cmF0ZS1cdTAwM2VmbGFncyB8PSBJRUVFODAyMTFfVFhfUkNfVVNFX1JUU19DVFM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ5MS1cdHJhdGUtXHUwMDNlY291bnQgPSAxO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjQ5MjpcdHJhdGUtXHUwMDNlaWR4ID0gTVModHhzLVx1MDAzZXRzX3JhdGUsIEFUSDlLX0hUQ19UWFNUQVRfUkFURSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDkzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjQ5NDpcdGlmICh0eHMtXHUwMDNldHNfZmxhZ3MgXHUwMDI2IEFUSDlLX0hUQ19UWFNUQVRfTUNTKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDk1LVx0XHRyYXRlLVx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9UWF9SQ19NQ1M7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDk2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjQ5NzpcdFx0aWYgKHR4cy1cdTAwM2V0c19mbGFncyBcdTAwMjYgQVRIOUtfSFRDX1RYU1RBVF9DVzQwKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ5OC1cdFx0XHRyYXRlLVx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9UWF9SQ180MF9NSFpfV0lEVEg7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NDk5Olx0XHRpZiAodHhzLVx1MDAzZXRzX2ZsYWdzIFx1MDAyNiBBVEg5S19IVENfVFhTVEFUX1NHSSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy01MDAtXHRcdFx0cmF0ZS1cdTAwM2VmbGFncyB8PSBJRUVFODAyMTFfVFhfUkNfU0hPUlRfR0k7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTUzOT12b2lkIGF0aDlrX2h0Y190eF9kcmFpbihzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTU0My1cdHNwaW5fbG9ja19iaChcdTAwMjZwcml2LVx1MDAzZXR4LnR4X2xvY2spO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjU0NDpcdHByaXYtXHUwMDNldHguZmxhZ3MgfD0gQVRIOUtfSFRDX09QX1RYX0RSQUlOO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTU0NS1cdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnByaXYtXHUwMDNldHgudHhfbG9jayk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTU3My1cdHNwaW5fbG9ja19iaChcdTAwMjZwcml2LVx1MDAzZXR4LnR4X2xvY2spO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjU3NDpcdHByaXYtXHUwMDNldHguZmxhZ3MgXHUwMDI2PSB+QVRIOUtfSFRDX09QX1RYX0RSQUlOO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTU3NS1cdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnByaXYtXHUwMDNldHgudHhfbG9jayk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTU3OD12b2lkIGF0aDlrX3R4X2ZhaWxlZF90YXNrbGV0KHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNTgyLVx0c3Bpbl9sb2NrKFx1MDAyNnByaXYtXHUwMDNldHgudHhfbG9jayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NTgzOlx0aWYgKHByaXYtXHUwMDNldHguZmxhZ3MgXHUwMDI2IEFUSDlLX0hUQ19PUF9UWF9EUkFJTikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTU4NC1cdFx0c3Bpbl91bmxvY2soXHUwMDI2cHJpdi1cdTAwM2V0eC50eF9sb2NrKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9NjE4PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiogYXRoOWtfaHRjX3R4X2dldF9wYWNrZXQoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy02MjQtXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjYyNTpcdHU4IGVwaWQgPSBNUyh0eHMtXHUwMDNldHNfcmF0ZSwgQVRIOUtfSFRDX1RYU1RBVF9FUElEKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy02MjYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTcxNj1zdGF0aWMgaW5saW5lIGJvb2wgY2hlY2tfcGFja2V0KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNzI0LVx0XHQgICAgICAgdHhfY3RsLVx1MDAzZXRpbWVzdGFtcCAmIzQzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjcyNTpcdFx0ICAgICAgIG1zZWNzX3RvX2ppZmZpZXMoQVRIOUtfSFRDX1RYX1RJTUVPVVRfSU5URVJWQUwpKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTcyNi1cdFx0YXRoX2RiZyhjb21tb24sIFhNSVQsIFwmIzM0O0Ryb3BwaW5nIGEgcGFja2V0IGR1ZSB0byBUWCB0aW1lb3V0XFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9NzYxPXZvaWQgYXRoOWtfaHRjX3R4X2NsZWFudXBfdGltZXIoc3RydWN0IHRpbWVyX2xpc3QgKnQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTc3Ni1cdFx0XHRcdGV2ZW50LVx1MDAzZXR4cy5jb29raWUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6Nzc3Olx0XHRcdFx0TVMoZXZlbnQtXHUwMDNldHhzLnRzX3JhdGUsIEFUSDlLX0hUQ19UWFNUQVRfRVBJRCkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTc3OC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNzg0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjc4NTpcdFx0aWYgKCYjNDM7JiM0MztldmVudC1cdTAwM2Vjb3VudCBcdTAwM2U9IEFUSDlLX0hUQ19UWF9USU1FT1VUX0NPVU5UKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNzg2LVx0XHRcdGxpc3RfZGVsKFx1MDAyNmV2ZW50LVx1MDAzZWxpc3QpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy04MDUtXHRtb2RfdGltZXIoXHUwMDI2cHJpdi1cdTAwM2V0eC5jbGVhbnVwX3RpbWVyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjgwNjpcdFx0ICBqaWZmaWVzICYjNDM7IG1zZWNzX3RvX2ppZmZpZXMoQVRIOUtfSFRDX1RYX0NMRUFOVVBfSU5URVJWQUwpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy04MDctfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz04Mjc9Ym9vbCBhdGg5a19odGNfdHhxX3NldHVwKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdiwgaW50IHN1YnR5cGUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTgzNC1cdG1lbXNldChcdTAwMjZxaSwgMCwgc2l6ZW9mKHFpKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6ODM1Olx0QVRIOUtfSFRDX0lOSVRfVFhRKHN1YnR5cGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTgzNi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9ODUyPWludCBhdGg5a19odGNfY2FicV9zZXR1cChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTg1Ni1cdG1lbXNldChcdTAwMjZxaSwgMCwgc2l6ZW9mKHFpKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6ODU3Olx0QVRIOUtfSFRDX0lOSVRfVFhRKDApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTg1OC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9MTE4Nz1pbnQgYXRoOWtfcnhfaW5pdChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTExOTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6MTE5NDpcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFUSDlLX0hUQ19SWEJVRjsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0xMTk1LVx0XHRzdHJ1Y3QgYXRoOWtfaHRjX3J4YnVmICpyeGJ1ZiA9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jPTEzOD12b2lkIGF0aDlrX3dtaV9ldmVudF90YXNrbGV0KHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmMtMTc4LVx0XHRcdHNwaW5fbG9ja19iaChcdTAwMjZwcml2LVx1MDAzZXR4LnR4X2xvY2spO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jOjE3OTpcdFx0XHRpZiAocHJpdi1cdTAwM2V0eC5mbGFncyBcdTAwMjYgQVRIOUtfSFRDX09QX1RYX0RSQUlOKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmMtMTgwLVx0XHRcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2cHJpdi1cdTAwM2V0eC50eF9sb2NrKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg9Mzk9c3RydWN0IHdtaV9ldmVudF9zd2JhIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmgtNTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6NTE6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX0FDSyAgICAgICAgQklUKDApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6NTI6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX0ZJTFQgICAgICAgQklUKDEpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6NTM6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX1JUQ19DVFMgICAgQklUKDIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6NTQ6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX01DUyAgICAgICAgQklUKDMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6NTU6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX0NXNDAgICAgICAgQklUKDQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6NTY6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX1NHSSAgICAgICAgQklUKDUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmgtNTctXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oLTYzLSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oOjY0OiNkZWZpbmUgQVRIOUtfSFRDX1RYU1RBVF9SQVRFICAgICAgIDB4MGZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo2NTojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfUkFURV9TICAgICAwXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmgtNjYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6Njc6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX0VQSUQgICAgICAgMHhmMFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oOjY4OiNkZWZpbmUgQVRIOUtfSFRDX1RYU1RBVF9FUElEX1MgICAgIDRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaC02OS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTE6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjYwNTcKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA1OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipEaXZpbmcgaW50byBSZWd1bGF0b3J5IERvbWFpbiBDaGFuZ2VzIGluIGBhdGhgKioKCk9rYXksIGxldCYjMzk7cyB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgdGhhdCBwYXRjaCwgc2hhbGwgd2U/IE15IGltbWVkaWF0ZSBmb2N1cyBpcyBnb2luZyB0byBiZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuY2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kICpwcmVjaXNlbHkqIHdoYXQgdGhlIGNoYW5nZSBpcyBhY2NvbXBsaXNoaW5nLiBTbywgSSYjMzk7bSBnb2luZyB0byBzdGFydCBieSBnb2luZyBsaW5lIGJ5IGxpbmUgdGhyb3VnaCB0aGF0IGZpbGUsIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiB0aGUgcmVndWxhdG9yeSBkb21haW4gaW1wbGVtZW50YXRpb24gd2l0aGluIHRoZSBgYXRoYCBkcml2ZXIuIEkmIzM5O2xsIHplcm8gaW4gb24gbGluZXMgcm91Z2hseSBiZXR3ZWVuIDQwIGFuZCAxMjA7IHRoYXQgc2VlbXMgbGlrZSBhIGxpa2VseSByZWdpb24gdG8gaG91c2UgdGhlIGNvcmUgbG9naWMgZm9yIHJlZ3VsYXRvcnkgZG9tYWluIG1hbmFnZW1lbnQuIEkmIzM5O2xsIG5lZWQgdG8gcmVmcmVzaCBteXNlbGYgb24gaG93IHJlZ3VsYXRvcnkgZG9tYWlucyBhcmUgaGFuZGxlZCB3aXRoaW4gdGhlIGBhdGhgIGFyY2hpdGVjdHVyZSwgc28gSSBjYW4gc2VlIHdoZXJlIHRoZSBwYXRjaCBpcyBpbXBhY3RpbmcgdGhhdCBmbG93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxMTo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDQwOlx0XHRcdFx0XHRcdCBOTDgwMjExX1JSRl9OT19JUilcbiAgNDE6XHQjZGVmaW5lIEFUSF8yR0haX0NIMTRcdFx0UkVHX1JVTEUoMjQ4NC0xMCwgMjQ4NCYjNDM7MTAsIDQwLCAwLCAyMCxcXFxuICA0MjpcdFx0XHRcdFx0XHQgTkw4MDIxMV9SUkZfTk9fSVIgfCBcXFxuICA0MzpcdFx0XHRcdFx0XHQgTkw4MDIxMV9SUkZfTk9fT0ZETSlcbiAgNDQ6XHRcbiAgNDU6XHQvKiBXZSBhbGxvdyBJQlNTIG9uIHRoZXNlIG9uIGEgY2FzZSBieSBjYXNlIGJhc2lzIGJ5IHJlZ3VsYXRvcnkgZG9tYWluICovXG4gIDQ2Olx0I2RlZmluZSBBVEhfNUdIWl81MTUwXzUzNTBcdFJFR19SVUxFKDUxNTAtMTAsIDUyNDAmIzQzOzEwLCA4MCwgMCwgMzAsIDApLFxcXG4gIDQ3Olx0XHRcdFx0XHRSRUdfUlVMRSg1MjYwLTEwLCA1MzUwJiM0MzsxMCwgODAsIDAsIDMwLFxcXG4gIDQ4Olx0XHRcdFx0XHRcdCBOTDgwMjExX1JSRl9OT19JUilcbiAgNDk6XHQjZGVmaW5lIEFUSF81R0haXzU0NzBfNTg1MFx0UkVHX1JVTEUoNTQ3MC0xMCwgNTg1MCYjNDM7MTAsIDgwLCAwLCAzMCxcXFxuICA1MDpcdFx0XHRcdFx0XHQgTkw4MDIxMV9SUkZfTk9fSVIpXG4gIDUxOlx0I2RlZmluZSBBVEhfNUdIWl81NzI1XzU4NTBcdFJFR19SVUxFKDU3MjUtMTAsIDU4NTAmIzQzOzEwLCA4MCwgMCwgMzAsXFxcbiAgNTI6XHRcdFx0XHRcdFx0IE5MODAyMTFfUlJGX05PX0lSKVxuICA1MzpcdFxuICA1NDpcdCNkZWZpbmUgQVRIXzJHSFpfQUxMXHRcdEFUSF8yR0haX0NIMDFfMTEsIFxcXG4gIDU1Olx0XHRcdFx0XHRBVEhfMkdIWl9DSDEyXzEzLCBcXFxuICA1NjpcdFx0XHRcdFx0QVRIXzJHSFpfQ0gxNFxuICA1NzpcdFxuICA1ODpcdCNkZWZpbmUgQVRIXzVHSFpfQUxMXHRcdEFUSF81R0haXzUxNTBfNTM1MCwgXFxcbiAgNTk6XHRcdFx0XHRcdEFUSF81R0haXzU0NzBfNTg1MFxuICA2MDpcdFxuICA2MTpcdC8qIFRoaXMgb25lIHNraXBzIHdoYXQgd2UgY2FsbCBcJiMzNDttaWQgYmFuZFwmIzM0OyAqL1xuICA2MjpcdCNkZWZpbmUgQVRIXzVHSFpfTk9fTUlEQkFORFx0QVRIXzVHSFpfNTE1MF81MzUwLCBcXFxuICA2MzpcdFx0XHRcdFx0QVRIXzVHSFpfNTcyNV81ODUwXG4gIDY0Olx0XG4gIDY1Olx0LyogQ2FuIGJlIHVzZWQgZm9yOlxuICA2NjpcdCAqIDB4NjAsIDB4NjEsIDB4NjIgKi9cbiAgNjc6XHRzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW4gYXRoX3dvcmxkX3JlZ2RvbV82MF82MV82MiA9IHtcbiAgNjg6XHRcdC5uX3JlZ19ydWxlcyA9IDYsXG4gIDY5Olx0XHQuYWxwaGEyID0gIFwmIzM0Ozk5XCYjMzQ7LFxuICA3MDpcdFx0LnJlZ19ydWxlcyA9IHtcbiAgNzE6XHRcdFx0QVRIXzJHSFpfQUxMLFxuICA3MjpcdFx0XHRBVEhfNUdIWl9BTEwsXG4gIDczOlx0XHR9XG4gIDc0Olx0fTtcbiAgNzU6XHRcbiAgNzY6XHQvKiBDYW4gYmUgdXNlZCBieSAweDYzIGFuZCAweDY1ICovXG4gIDc3Olx0c3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluIGF0aF93b3JsZF9yZWdkb21fNjNfNjUgPSB7XG4gIDc4Olx0XHQubl9yZWdfcnVsZXMgPSA1LFxuICA3OTpcdFx0LmFscGhhMiA9ICBcJiMzNDs5OVwmIzM0OyxcbiAgODA6XHRcdC5yZWdfcnVsZXMgPSB7XG4gIDgxOlx0XHRcdEFUSF8yR0haX0NIMDFfMTEsXG4gIDgyOlx0XHRcdEFUSF8yR0haX0NIMTJfMTMsXG4gIDgzOlx0XHRcdEFUSF81R0haX05PX01JREJBTkQsXG4gIDg0Olx0XHR9XG4gIDg1Olx0fTtcbiAgODY6XHRcbiAgODc6XHQvKiBDYW4gYmUgdXNlZCBieSAweDY0IG9ubHkgKi9cbiAgODg6XHRzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW4gYXRoX3dvcmxkX3JlZ2RvbV82NCA9IHtcbiAgODk6XHRcdC5uX3JlZ19ydWxlcyA9IDQsXG4gIDkwOlx0XHQuYWxwaGEyID0gIFwmIzM0Ozk5XCYjMzQ7LFxuICA5MTpcdFx0LnJlZ19ydWxlcyA9IHtcbiAgOTI6XHRcdFx0QVRIXzJHSFpfQ0gwMV8xMSxcbiAgOTM6XHRcdFx0QVRIXzVHSFpfTk9fTUlEQkFORCxcbiAgOTQ6XHRcdH1cbiAgOTU6XHR9O1xuICA5NjpcdFxuICA5NzpcdC8qIENhbiBiZSB1c2VkIGJ5IDB4NjYgYW5kIDB4NjkgKi9cbiAgOTg6XHRzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW4gYXRoX3dvcmxkX3JlZ2RvbV82Nl82OSA9IHtcbiAgOTk6XHRcdC5uX3JlZ19ydWxlcyA9IDQsXG4gMTAwOlx0XHQuYWxwaGEyID0gIFwmIzM0Ozk5XCYjMzQ7LFxuIDEwMTpcdFx0LnJlZ19ydWxlcyA9IHtcbiAxMDI6XHRcdFx0QVRIXzJHSFpfQ0gwMV8xMSxcbiAxMDM6XHRcdFx0QVRIXzVHSFpfQUxMLFxuIDEwNDpcdFx0fVxuIDEwNTpcdH07XG4gMTA2Olx0XG4gMTA3Olx0LyogQ2FuIGJlIHVzZWQgYnkgMHg2NywgMHg2OCwgMHg2QSBhbmQgMHg2QyAqL1xuIDEwODpcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiBhdGhfd29ybGRfcmVnZG9tXzY3XzY4XzZBXzZDID0ge1xuIDEwOTpcdFx0Lm5fcmVnX3J1bGVzID0gNSxcbiAxMTA6XHRcdC5hbHBoYTIgPSAgXCYjMzQ7OTlcJiMzNDssXG4gMTExOlx0XHQucmVnX3J1bGVzID0ge1xuIDExMjpcdFx0XHRBVEhfMkdIWl9DSDAxXzExLFxuIDExMzpcdFx0XHRBVEhfMkdIWl9DSDEyXzEzLFxuIDExNDpcdFx0XHRBVEhfNUdIWl9BTEwsXG4gMTE1Olx0XHR9XG4gMTE2Olx0fTtcbiAxMTc6XHRcbiAxMTg6XHRzdGF0aWMgYm9vbCBkeW5hbWljX2NvdW50cnlfdXNlcl9wb3NzaWJsZShzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZylcbiAxMTk6XHR7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDExOjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3ODMzCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMzI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUmVndWxhdG9yeSBEb21haW4gQ2hhbmdlcyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNoYW5nZSBpbiBgcmVnZC5jYC4gIExvb2tzIGxpa2UgdGhlIGRlZmluaXRpb24gYEFUSF81R0haXzUxNTBfNTM1MGAgd2FzIHByZXZpb3VzbHkgYSBzaW5nbGUgcmVndWxhdG9yeSBydWxlIHNwYW5uaW5nIDUxNTAgdG8gNTM1MCBNSHouIFRoZSBvbGRlciBydWxlIHdhczogYFJFR19SVUxFKDUxNTAtMTAsIDUzNTAmIzQzOzEwLCA4MCwgMCwgMzAsIE5MODAyMTFfUlJGX05PX0lSKWAuIE5vdywgdGhleSYjMzk7dmUgc3BsaXQgaXQgaW50byAqdHdvKiBzZXBhcmF0ZSBydWxlczogYFJFR19SVUxFKDUxNTAtMTAsIDUyNDAmIzQzOzEwLCA4MCwgMCwgMzAsIDApYCBhbmQgYFJFR19SVUxFKDUyNjAtMTAsIDUzNTAmIzQzOzEwLCA4MCwgMCwgMzAsIE5MODAyMTFfUlJGX05PX0lSKWAuCgpUaGlzIGlzIGEgc2lnbmlmaWNhbnQgY2hhbmdlIGJlY2F1c2UgdGhpcyBub3cgbWVhbnMgdGhhdCBhbGwgdGhvc2UgYGF0aF93b3JsZF9yZWdkb21fKmAgc3RydWN0dXJlcyB0aGF0IHJlbHkgb24gYEFUSF81R0haXzUxNTBfNTM1MGAgKGVpdGhlciBkaXJlY3RseSBvciB2aWEgYEFUSF81R0haX0FMTGAgb3IgYEFUSF81R0haX05PX01JREJBTkRgKSBub3cgaGF2ZSBhbiBleHRyYSByZWd1bGF0b3J5IHJ1bGUuIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIG15IHVuZGVyc3RhbmRpbmcsIGJ1dCBpdCBzZWVtcyB0aGF0IGAubl9yZWdfcnVsZXNgIGluIHRob3NlIHN0cnVjdHMgbXVzdCBoYXZlIGJlZW4gaW5jcmVtZW50ZWQgYnkgb25lLiBTbywgNSBydWxlcyBhcmUgbm93IDYsIDQgaXMgbm93IDUsIDMgaXMgbm93IDQsIGFuZCBzbyBvbi4KCk5leHQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBicm9hZGVyIGltcGxpY2F0aW9ucyBvZiB0aGlzIHNwbGl0LiBJJiMzOTtsbCBuZWVkIHRvIGludmVzdGlnYXRlIGhvdyB0aGVzZSByZWd1bGF0b3J5IGRvbWFpbnMgYXJlIHJlZ2lzdGVyZWQgd2l0aGluIHRoZSBzeXN0ZW0uICBJJiMzOTtsbCBzdGFydCBieSBjaGVja2luZyB0aGUgaW5pdGlhbGl6YXRpb24gcHJvY2Vzcy4gTGV0JiMzOTtzIHNlZSB3aGF0IGBhdGhfcmVnZF9pbml0YCBkb2VzLiBVbmRlcnN0YW5kaW5nIHRoYXQgc2hvdWxkIGdpdmUgbWUgYSBnb29kIGhhbmRsZSBvbiBob3cgdGhlIGNvZGUgd2lsbCByZWFjdCB0byB0aGVzZSBhZGRlZCBydWxlcy4gVGhpcyBjaGFuZ2UgY291bGQgcG90ZW50aWFsbHkgaW50cm9kdWNlIHN1YnRsZSBzaWRlIGVmZmVjdHMsIHNvIEkgd2lsbCBoYXZlIHRvIGZvbGxvdyB0aGUgY29kZSBhbmQgY2hlY2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDExOjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDYzMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNjMwOlx0XHRcdFx0cmV0dXJuIFx1MDAyNnJlZ0RvbWFpblBhaXJzW2ldO1xuIDYzMTpcdFx0fVxuIDYzMjpcdFx0cmV0dXJuIE5VTEw7XG4gNjMzOlx0fVxuIDYzNDpcdFxuIDYzNTpcdHN0YXRpYyBpbnRcbiA2MzY6XHRhdGhfcmVnZF9pbml0X3dpcGh5KHN0cnVjdCBhdGhfcmVndWxhdG9yeSAqcmVnLFxuIDYzNzpcdFx0XHQgICAgc3RydWN0IHdpcGh5ICp3aXBoeSxcbiA2Mzg6XHRcdFx0ICAgIHZvaWQgKCpyZWdfbm90aWZpZXIpKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4gNjM5Olx0XHRcdFx0XHRcdCBzdHJ1Y3QgcmVndWxhdG9yeV9yZXF1ZXN0ICpyZXF1ZXN0KSlcbiA2NDA6XHR7XG4gNjQxOlx0XHRjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiAqcmVnZDtcbiA2NDI6XHRcbiA2NDM6XHRcdHdpcGh5LVx1MDAzZXJlZ19ub3RpZmllciA9IHJlZ19ub3RpZmllcjtcbiA2NDQ6XHRcdHdpcGh5LVx1MDAzZXJlZ3VsYXRvcnlfZmxhZ3MgfD0gUkVHVUxBVE9SWV9TVFJJQ1RfUkVHIHxcbiA2NDU6XHRcdFx0XHRcdCAgIFJFR1VMQVRPUllfQ1VTVE9NX1JFRztcbiA2NDY6XHRcbiA2NDc6XHRcdGlmIChhdGhfaXNfd29ybGRfcmVnZChyZWcpKSB7XG4gNjQ4Olx0XHRcdC8qXG4gNjQ5Olx0XHRcdCAqIEFueXRoaW5nIGFwcGxpZWQgaGVyZSAocHJpb3IgdG8gd2lwaHkgcmVnaXN0cmF0aW9uKSBnZXRzXG4gNjUwOlx0XHRcdCAqIHNhdmVkIG9uIHRoZSB3aXBoeSBvcmlnXyogcGFyYW1ldGVyc1xuIDY1MTpcdFx0XHQgKi9cbiA2NTI6XHRcdFx0cmVnZCA9IGF0aF93b3JsZF9yZWdkb21haW4ocmVnKTtcbiA2NTM6XHRcdFx0d2lwaHktXHUwMDNlcmVndWxhdG9yeV9mbGFncyB8PSBSRUdVTEFUT1JZX0NPVU5UUllfSUVfRk9MTE9XX1BPV0VSO1xuIDY1NDpcdFx0fSBlbHNlIHtcbiA2NTU6XHRcdFx0LypcbiA2NTY6XHRcdFx0ICogVGhpcyBnZXRzIGFwcGxpZWQgaW4gdGhlIGNhc2Ugb2YgdGhlIGFic2VuY2Ugb2YgQ1JEQSxcbiA2NTc6XHRcdFx0ICogaXQmIzM5O3Mgb3VyIG93biBjdXN0b20gd29ybGQgcmVndWxhdG9yeSBkb21haW4sIHNpbWlsYXIgdG9cbiA2NTg6XHRcdFx0ICogY2ZnODAyMTEmIzM5O3MgYnV0IHdlIGVuYWJsZSBwYXNzaXZlIHNjYW5uaW5nLlxuIDY1OTpcdFx0XHQgKi9cbiA2NjA6XHRcdFx0cmVnZCA9IGF0aF9kZWZhdWx0X3dvcmxkX3JlZ2RvbWFpbigpO1xuIDY2MTpcdFx0fVxuIDY2MjpcdFxuIDY2MzpcdFx0d2lwaHlfYXBwbHlfY3VzdG9tX3JlZ3VsYXRvcnkod2lwaHksIHJlZ2QpO1xuIDY2NDpcdFx0YXRoX3JlZ19hcHBseV9yYWRhcl9mbGFncyh3aXBoeSwgcmVnKTtcbiA2NjU6XHRcdGF0aF9yZWdfYXBwbHlfd29ybGRfZmxhZ3Mod2lwaHksIE5MODAyMTFfUkVHRE9NX1NFVF9CWV9EUklWRVIsIHJlZyk7XG4gNjY2Olx0XHRyZXR1cm4gMDtcbiA2Njc6XHR9XG4gNjY4Olx0XG4gNjY5Olx0LypcbiA2NzA6XHQgKiBTb21lIHVzZXJzIGhhdmUgcmVwb3J0ZWQgdGhlaXIgRUVQUk9NIHByb2dyYW1tZWQgd2l0aFxuIDY3MTpcdCAqIDB4ODAwMCBzZXQsIHRoaXMgaXMgbm90IGEgc3VwcG9ydGVkIHJlZ3VsYXRvcnkgZG9tYWluXG4gNjcyOlx0ICogYnV0IHNpbmNlIHdlIGhhdmUgbW9yZSB0aGFuIG9uZSB1c2VyIHdpdGggaXQgd2UgbmVlZFxuIDY3MzpcdCAqIGEgc29sdXRpb24gZm9yIHRoZW0uIFdlIGRlZmF1bHQgdG8gMHg2NCwgd2hpY2ggaXMgdGhlXG4gNjc0Olx0ICogZGVmYXVsdCBBdGhlcm9zIHdvcmxkIHJlZ3VsYXRvcnkgZG9tYWluLlxuIDY3NTpcdCAqL1xuIDY3NjpcdHN0YXRpYyB2b2lkIGF0aF9yZWdkX3Nhbml0aXplKHN0cnVjdCBhdGhfcmVndWxhdG9yeSAqcmVnKVxuIDY3NzpcdHtcbiA2Nzg6XHRcdGlmIChyZWctXHUwMDNlY3VycmVudF9yZCAhPSBDT1VOVFJZX0VSRF9GTEFHKVxuIDY3OTpcdFx0XHRyZXR1cm47XG4gNjgwOlx0XHRwcmludGsoS0VSTl9ERUJVRyBcJiMzNDthdGg6IEVFUFJPTSByZWdkb21haW4gc2FuaXRpemVkXFxuXCYjMzQ7KTtcbiA2ODE6XHRcdHJlZy1cdTAwM2VjdXJyZW50X3JkID0gMHg2NDtcbiA2ODI6XHR9XG4gNjgzOlx0XG4gNjg0Olx0c3RhdGljIGludCBfX2F0aF9yZWdkX2luaXQoc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcpXG4gNjg1Olx0e1xuIDY4NjpcdFx0c3RydWN0IGNvdW50cnlfY29kZV90b19lbnVtX3JkICpjb3VudHJ5ID0gTlVMTDtcbiA2ODc6XHRcdHUxNiByZWdkbW47XG4gNjg4Olx0XG4gNjg5Olx0XHRpZiAoIXJlZylcbiA2OTA6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gNjkxOlx0XG4gNjkyOlx0XHRhdGhfcmVnZF9zYW5pdGl6ZShyZWcpO1xuIDY5MzpcdFxuIDY5NDpcdFx0cHJpbnRrKEtFUk5fREVCVUcgXCYjMzQ7YXRoOiBFRVBST00gcmVnZG9tYWluOiAweCUweFxcblwmIzM0OywgcmVnLVx1MDAzZWN1cnJlbnRfcmQpO1xuIDY5NTpcdFxuIDY5NjpcdFx0aWYgKCFhdGhfcmVnZF9pc19lZXByb21fdmFsaWQocmVnKSkge1xuIDY5NzpcdFx0XHRwcl9lcnIoXCYjMzQ7SW52YWxpZCBFRVBST00gY29udGVudHNcXG5cJiMzNDspO1xuIDY5ODpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiA2OTk6XHRcdH1cbiA3MDA6XHRcbiA3MDE6XHRcdHJlZ2RtbiA9IGF0aF9yZWdkX2dldF9lZXByb21SRChyZWcpO1xuIDcwMjpcdFx0cmVnLVx1MDAzZWNvdW50cnlfY29kZSA9IGF0aF9yZWdkX2dldF9kZWZhdWx0X2NvdW50cnkocmVnZG1uKTtcbiA3MDM6XHRcbiA3MDQ6XHRcdGlmIChyZWctXHUwMDNlY291bnRyeV9jb2RlID09IENUUllfREVGQVVMVCBcdTAwMjZcdTAwMjZcbiA3MDU6XHRcdCAgICByZWdkbW4gPT0gQ1RSWV9ERUZBVUxUKSB7XG4gNzA2Olx0XHRcdHByaW50ayhLRVJOX0RFQlVHIFwmIzM0O2F0aDogRUVQUk9NIGluZGljYXRlcyBkZWZhdWx0IFwmIzM0O1xuIDcwNzpcdFx0XHQgICAgICAgXCYjMzQ7Y291bnRyeSBjb2RlIHNob3VsZCBiZSB1c2VkXFxuXCYjMzQ7KTtcbiA3MDg6XHRcdFx0cmVnLVx1MDAzZWNvdW50cnlfY29kZSA9IENUUllfVU5JVEVEX1NUQVRFUztcbiA3MDk6XHRcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTE6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk4ODYKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiA1OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipEaXNzZWN0aW5nIHRoZSBSZWd1bGF0b3J5IEluaXRpYWxpemF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgcmVndWxhdG9yeSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSBmb3IgYSB3aXJlbGVzcyBkZXZpY2UuIFRoZSB0cmFpbCBzdGFydHMgd2l0aCBgYXRoX3JlZ2RfaW5pdF93aXBoeWAsIGFuZCBJIHNlZSBpdCBpbW1lZGlhdGVseSBoYW5kcyBvZmYgdG8gYHdpcGh5X2FwcGx5X2N1c3RvbV9yZWd1bGF0b3J5YCDigJMgdGhhdCYjMzk7cyB0aGUga2V5IGZ1bmN0aW9uLiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgKmFjdHVhbGx5KiBoYXBwZW5pbmcgaGVyZS4gSXQmIzM5O3MgdGltZSB0byBjcmFjayBvcGVuIGBuZXQvd2lyZWxlc3MvcmVnLmNgIGFuZCBkaXZlIGludG8gdGhlIHNvdXJjZSBjb2RlIGZvciBgd2lwaHlfYXBwbHlfY3VzdG9tX3JlZ3VsYXRvcnlgLiBJIHdhbnQgdG8gc2VlIHByZWNpc2VseSBob3cgdGhhdCBmdW5jdGlvbiB0YWtlcyB0aGUgYHdpcGh5YCBzdHJ1Y3R1cmUgYW5kIHRoZSBgcmVnZGAgKHJlZ3VsYXRvcnkgZG9tYWluKSBzdHJ1Y3R1cmUsIGFuZCBhcHBsaWVzIHRoZSBjdXN0b20gcmVndWxhdG9yeSBzZXR0aW5ncy4gV2hhdCBwYXJhbWV0ZXJzIGFyZSBiZWluZyBwYXNzZWQ/IEhvdyBhcmUgdGhleSBiZWluZyBwcm9jZXNzZWQ/IFdoYXQmIzM5O3MgdGhlIGNvbnRyb2wgZmxvdz8gVGhpcyBmdW5jdGlvbiBpcyBsaWtlbHkgdGhlIGxpbmNocGluIG9mIGhvdyB0aGUgZHJpdmVyIGludGVyYWN0cyB3aXRoIHRoZSByZWd1bGF0b3J5IGRvbWFpbiBkYXRhLCBzbyB1bmRlcnN0YW5kaW5nIGl0cyBndXRzIGlzIGNyaXRpY2FsIHRvIHNlZWluZyBob3cgdGhpcyBkcml2ZXIgd29ya3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDExOjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3dpcGh5X2FwcGx5X2N1c3RvbV9yZWd1bGF0b3J5JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3dpcmVsZXNzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy9yZWcuYz0yNTkzPXN0YXRpYyB2b2lkIGhhbmRsZV9iYW5kX2N1c3RvbShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuLS1cbm5ldC93aXJlbGVzcy9yZWcuYy0yNjEyLS8qIFVzZWQgYnkgZHJpdmVycyBwcmlvciB0byB3aXBoeSByZWdpc3RyYXRpb24gKi9cbm5ldC93aXJlbGVzcy9yZWcuYzoyNjEzOnZvaWQgd2lwaHlfYXBwbHlfY3VzdG9tX3JlZ3VsYXRvcnkoc3RydWN0IHdpcGh5ICp3aXBoeSxcbm5ldC93aXJlbGVzcy9yZWcuYy0yNjE0LVx0XHRcdFx0ICAgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW4gKnJlZ2QpXG4tLVxubmV0L3dpcmVsZXNzL3JlZy5jLTI2NDctfVxubmV0L3dpcmVsZXNzL3JlZy5jOjI2NDg6RVhQT1JUX1NZTUJPTCh3aXBoeV9hcHBseV9jdXN0b21fcmVndWxhdG9yeSk7XG5uZXQvd2lyZWxlc3MvcmVnLmMtMjY0OS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTE6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzAzNzMKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxNTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBgYXRoOWtfaHRjYCBVU0IgRHJpdmVyIGZvciBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYGF0aDlrX2h0Y2AsIHdoaWNoIEkga25vdyBpcyBhIFVTQiBkcml2ZXIsIG11Y2ggbGlrZSBgY2FybDkxNzBgLiBNeSBpbml0aWFsIGZvY3VzIGlzIG9uIHRoZSBwcm9iZSBwYXRoIGFuZCBob3cgdGhlIGZpcm13YXJlIGFuZCBoYXJkd2FyZSBhcmUgaW5pdGlhbGl6ZWQgd2l0aGluIHRoaXMgZHJpdmVyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiBgYXRoOWtfaHRjYCBpcyBzdWNjZXNzZnVsbHkgcHJvYmVkIGluIGVudmlyb25tZW50cyBsaWtlIHN5emthbGxlciBvciBRRU1VLiBUaGlua2luZyBhYm91dCBzeXprYWxsZXImIzM5O3MgVVNCIGZ1enppbmcgY2FwYWJpbGl0aWVzLCBwYXJ0aWN1bGFybHkgdXNpbmcgcmF3IGdhZGdldHMsIGB1c2ItZnV6emVyYCwgb3IgdnVzYiwgdGhlIGFiaWxpdHkgdG8gcHJvYmUgVVNCIGRyaXZlcnMgYmVjb21lcyBhIGNyaXRpY2FsIGF2ZW51ZS4gSSBuZWVkIHRvIGtub3cgKmhvdyogYGF0aDlrX2h0Y2AgZ2V0cyBwcm9iZWQuIFRoZXJlZm9yZSwgSSYjMzk7bSBkaXZpbmcgZGVlcGVyIGludG8gdGhlIHByb2JlIHJvdXRpbmUuIEkmIzM5O2xsIGV4YW1pbmUgdGhlIGNvZGUgYXQgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmNgLiBUaGlzIGlzIHdoZXJlIHRoZSBjb3JlIGxvZ2ljIHdpbGwgcmVzaWRlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZW50cnkgcG9pbnRzIGZvciBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxMTo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdGg5a19pbml0X2RldmljZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYWhiLmM9NTU9c3RhdGljIGludCBhdGhfYWhiX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FoYi5jLTk4LVx0ZGV2X2lkID0gKHUxNikoa2VybmVsX3Vsb25nX3Qpb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9haGIuYzo5OTpcdHJldCA9IGF0aDlrX2luaXRfZGV2aWNlKGRldl9pZCwgc2MsIFx1MDAyNmF0aF9haGJfYnVzX29wcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYWhiLmMtMTAwLVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hdGg5ay5oPTExMzA9dm9pZCBhdGhfcmVzdGFydF93b3JrKHN0cnVjdCBhdGhfc29mdGMgKnNjKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hdGg5ay5oOjExMzE6aW50IGF0aDlrX2luaXRfZGV2aWNlKHUxNiBkZXZpZCwgc3RydWN0IGF0aF9zb2Z0YyAqc2MsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXRoOWsuaC0xMTMyLVx0XHQgICAgY29uc3Qgc3RydWN0IGF0aF9idXNfb3BzICpidXNfb3BzKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM9Nzg1PXN0YXRpYyBpbnQgYXRoOWtfaW5pdF9maXJtd2FyZV92ZXJzaW9uKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmMtODI3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jOjgyODpzdGF0aWMgaW50IGF0aDlrX2luaXRfZGV2aWNlKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy04MjktXHRcdFx0ICAgICB1MTYgZGV2aWQsIGNoYXIgKnByb2R1Y3QsIHUzMiBkcnZfaW5mbylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM9OTMxPWludCBhdGg5a19odGNfcHJvYmVfZGV2aWNlKHN0cnVjdCBodGNfdGFyZ2V0ICpodGNfaGFuZGxlLCBzdHJ1Y3QgZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jLTk2Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYzo5NjM6XHRyZXQgPSBhdGg5a19pbml0X2RldmljZShwcml2LCBkZXZpZCwgcHJvZHVjdCwgZHJ2X2luZm8pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jLTk2NC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYz05MDM9c3RhdGljIHZvaWQgYXRoOWtfc2V0X2h3X2NhcGFiKHN0cnVjdCBhdGhfc29mdGMgKnNjLCBzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jLTEwMDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jOjEwMDQ6aW50IGF0aDlrX2luaXRfZGV2aWNlKHUxNiBkZXZpZCwgc3RydWN0IGF0aF9zb2Z0YyAqc2MsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jLTEwMDUtXHRcdCAgICBjb25zdCBzdHJ1Y3QgYXRoX2J1c19vcHMgKmJ1c19vcHMpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3BjaS5jPTg4ND1zdGF0aWMgaW50IGF0aF9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvcGNpLmMtOTc4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3BjaS5jOjk3OTpcdHJldCA9IGF0aDlrX2luaXRfZGV2aWNlKGlkLVx1MDAzZWRldmljZSwgc2MsIFx1MDAyNmF0aF9wY2lfYnVzX29wcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvcGNpLmMtOTgwLVx0aWYgKHJldCkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxMTo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTczNgoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgaG93IEkmIzM5O2QgYXBwcm9hY2ggdGhhdCBrZXJuZWwgbW9kdWxlIGludmVzdGlnYXRpb24sIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgYW4gZXhwZXJ0OgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBgYXRoOWtfaHRjYCBQcm9iZSBQYXRoKioKClJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gaXQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgYGF0aDlrX2h0Y2AgZHJpdmVyIGdldHMgbG9hZGVkLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gdGhlIFVTQiBIaWdoLVRocm91Z2hwdXQgQ2FwYWJpbGl0eSAoSFRDKSBpbml0aWFsaXphdGlvbi4gTXkgc3RhcnRpbmcgcG9pbnQgaXMgdGhlIG1vc3QgbG9naWNhbCBwbGFjZTogYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmNgLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSBVU0Itc3BlY2lmaWMgSElGIChIb3N0IEludGVyZmFjZSkgY29kZSBmb3IgdGhlIGF0aDlrIGZhbWlseSB3aWxsIGxpdmUsIGFuZCB0aGUgYGF0aDlrX2h0Y2AgbW9kdWxlIGlzIHRoZSBvbmUgcmVzcG9uc2libGUgZm9yIHRoZSBIVEMgY29ubmVjdGlvbiwgc28gaXQmIzM5O3MgYSB2ZXJ5IGdvb2QgZmlyc3QgZ3Vlc3MuCgpNeSBleHBlY3RhdGlvbiBpcyB0byBmaW5kIHRoZSBVU0IgcHJvYmUgZnVuY3Rpb24gZGVmaW5lZCBoZXJlLiBJJiMzOTtsbCBsaWtlbHkgYmUgc2Nhbm5pbmcgZm9yIHRoaW5ncyBsaWtlIGB1c2JfZHJpdmVyYCBzdHJ1Y3R1cmVzLCBsaWtlbHkgaW4gdGhlIGZvcm0gb2YgYSBtb2R1bGUgaW5pdCBmdW5jdGlvbiBsaWtlIGBtb2R1bGVfaW5pdChhdGg5a19odGNfdXNiX2luaXQpYC4gSeKAmWxsIGJlIGxvb2tpbmcgZm9yIHdoZXJlIHRoZSBVU0IgZGV2aWNlIElEcyBhcmUgbWF0Y2hlZCwgcHJvYmFibHkgaW4gYSBgdXNiX2RldmljZV9pZGAgdGFibGUuIEkmIzM5O20gZXhwZWN0aW5nIHRvIHNlZSB3aGVyZSB0aGUgZHJpdmVyIHJlZ2lzdGVycyBpdHNlbGYgd2l0aCB0aGUgVVNCIGNvcmUsIGFuZCBjcnVjaWFsbHksIHdoZXJlIHRoZSBhY3R1YWwgYGF0aDlrX2h0Y2AgZGV2aWNlIHN0cnVjdHVyZSBpcyBhbGxvY2F0ZWQgYW5kIGluaXRpYWxpemVkLiBJJiMzOTtsbCBiZSBtZW50YWxseSB0cmFjaW5nIHRoZSBleGVjdXRpb24gZmxvdyBvZiB0aGUgcHJvYmUgZnVuY3Rpb24sIGxvb2tpbmcgZm9yIGFueSBjb25kaXRpb25hbCBzdGF0ZW1lbnRzIG9yIGVycm9yIGhhbmRsaW5nIHRoYXQgY291bGQgaW1wYWN0IHRoZSBtb2R1bGUmIzM5O3Mgc3VjY2VzcyBpbiBhdHRhY2hpbmcgdG8gYSBwYXJ0aWN1bGFyIFVTQiBkZXZpY2UuIEkgd2lsbCBhbHNvIG1ha2Ugc3VyZSB0byBjaGVjayBhbGwgdGhlIHJlbGF0ZWQgZnVuY3Rpb25zIGNhbGxzIHRoYXQgYXJlIHVzZWQgZHVyaW5nIHRoaXMgcHJvYmUuCgpFc3NlbnRpYWxseSwgSSBhbSB0cnlpbmcgdG8gYXNjZXJ0YWluIHByZWNpc2VseSBob3cgYW5kIHdoZW4gdGhlIGBhdGg5a19odGNgIGRyaXZlciBiaW5kcyB0byBhIG1hdGNoaW5nIFVTQiBkZXZpY2UuIEZyb20gdGhlcmUsIEkmIzM5O2xsIGJlIGFibGUgdG8gYnVpbGQgYSBjbGVhcmVyIHVuZGVyc3RhbmRpbmcgb2YgcG90ZW50aWFsIHByb2JsZW1zIGFuZCBvcHRpbWl6YXRpb24gc3RyYXRlZ2llcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTE6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTI2MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxMjYwOlx0XHRcdFx0XHRoaWZfZGV2LVx1MDAzZWlkX2luZm8pO1xuMTI2MTpcdFx0aWYgKHJldCkge1xuMTI2MjpcdFx0XHRyZXQgPSAtRUlOVkFMO1xuMTI2MzpcdFx0XHRnb3RvIGVycl9odGNfaHdfaW5pdDtcbjEyNjQ6XHRcdH1cbjEyNjU6XHRcbjEyNjY6XHRcdHJlbGVhc2VfZmlybXdhcmUoZncpO1xuMTI2NzpcdFx0aGlmX2Rldi1cdTAwM2VmbGFncyB8PSBISUZfVVNCX1JFQURZO1xuMTI2ODpcdFx0Y29tcGxldGVfYWxsKFx1MDAyNmhpZl9kZXYtXHUwMDNlZndfZG9uZSk7XG4xMjY5Olx0XG4xMjcwOlx0XHRyZXR1cm47XG4xMjcxOlx0XG4xMjcyOlx0ZXJyX2h0Y19od19pbml0OlxuMTI3MzpcdFx0YXRoOWtfaGlmX3VzYl9kZXZfZGVpbml0KGhpZl9kZXYpO1xuMTI3NDpcdGVycl9kZXZfaW5pdDpcbjEyNzU6XHRcdGF0aDlrX2h0Y19od19mcmVlKGhpZl9kZXYtXHUwMDNlaHRjX2hhbmRsZSk7XG4xMjc2Olx0ZXJyX2Rldl9hbGxvYzpcbjEyNzc6XHRcdHJlbGVhc2VfZmlybXdhcmUoZncpO1xuMTI3ODpcdGVycl9mdzpcbjEyNzk6XHRcdGF0aDlrX2hpZl91c2JfZmlybXdhcmVfZmFpbChoaWZfZGV2KTtcbjEyODA6XHR9XG4xMjgxOlx0XG4xMjgyOlx0LypcbjEyODM6XHQgKiBBbiBleGFjdCBjb3B5IG9mIHRoZSBmdW5jdGlvbiBmcm9tIHpkMTIxMXJ3LlxuMTI4NDpcdCAqL1xuMTI4NTpcdHN0YXRpYyBpbnQgc2VuZF9lamVjdF9jb21tYW5kKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRlcmZhY2UpXG4xMjg2Olx0e1xuMTI4NzpcdFx0c3RydWN0IHVzYl9kZXZpY2UgKnVkZXYgPSBpbnRlcmZhY2VfdG9fdXNiZGV2KGludGVyZmFjZSk7XG4xMjg4Olx0XHRzdHJ1Y3QgdXNiX2hvc3RfaW50ZXJmYWNlICppZmFjZV9kZXNjID0gaW50ZXJmYWNlLVx1MDAzZWN1cl9hbHRzZXR0aW5nO1xuMTI4OTpcdFx0c3RydWN0IHVzYl9lbmRwb2ludF9kZXNjcmlwdG9yICplbmRwb2ludDtcbjEyOTA6XHRcdHVuc2lnbmVkIGNoYXIgKmNtZDtcbjEyOTE6XHRcdHU4IGJ1bGtfb3V0X2VwO1xuMTI5MjpcdFx0aW50IHI7XG4xMjkzOlx0XG4xMjk0Olx0XHRpZiAoaWZhY2VfZGVzYy1cdTAwM2VkZXNjLmJOdW1FbmRwb2ludHMgXHUwMDNjIDIpXG4xMjk1Olx0XHRcdHJldHVybiAtRU5PREVWO1xuMTI5NjpcdFxuMTI5NzpcdFx0LyogRmluZCBidWxrIG91dCBlbmRwb2ludCAqL1xuMTI5ODpcdFx0Zm9yIChyID0gMTsgciBcdTAwM2U9IDA7IHItLSkge1xuMTI5OTpcdFx0XHRlbmRwb2ludCA9IFx1MDAyNmlmYWNlX2Rlc2MtXHUwMDNlZW5kcG9pbnRbcl0uZGVzYztcbjEzMDA6XHRcdFx0aWYgKHVzYl9lbmRwb2ludF9kaXJfb3V0KGVuZHBvaW50KSBcdTAwMjZcdTAwMjZcbjEzMDE6XHRcdFx0ICAgIHVzYl9lbmRwb2ludF94ZmVyX2J1bGsoZW5kcG9pbnQpKSB7XG4xMzAyOlx0XHRcdFx0YnVsa19vdXRfZXAgPSBlbmRwb2ludC1cdTAwM2ViRW5kcG9pbnRBZGRyZXNzO1xuMTMwMzpcdFx0XHRcdGJyZWFrO1xuMTMwNDpcdFx0XHR9XG4xMzA1Olx0XHR9XG4xMzA2Olx0XHRpZiAociA9PSAtMSkge1xuMTMwNzpcdFx0XHRkZXZfZXJyKFx1MDAyNnVkZXYtXHUwMDNlZGV2LFxuMTMwODpcdFx0XHRcdFwmIzM0O2F0aDlrX2h0YzogQ291bGQgbm90IGZpbmQgYnVsayBvdXQgZW5kcG9pbnRcXG5cJiMzNDspO1xuMTMwOTpcdFx0XHRyZXR1cm4gLUVOT0RFVjtcbjEzMTA6XHRcdH1cbjEzMTE6XHRcbjEzMTI6XHRcdGNtZCA9IGt6YWxsb2MoMzEsIEdGUF9LRVJORUwpO1xuMTMxMzpcdFx0aWYgKGNtZCA9PSBOVUxMKVxuMTMxNDpcdFx0XHRyZXR1cm4gLUVOT0RFVjtcbjEzMTU6XHRcbjEzMTY6XHRcdC8qIFVTQiBidWxrIGNvbW1hbmQgYmxvY2sgKi9cbjEzMTc6XHRcdGNtZFswXSA9IDB4NTU7XHQvKiBidWxrIGNvbW1hbmQgc2lnbmF0dXJlICovXG4xMzE4Olx0XHRjbWRbMV0gPSAweDUzO1x0LyogYnVsayBjb21tYW5kIHNpZ25hdHVyZSAqL1xuMTMxOTpcdFx0Y21kWzJdID0gMHg0MjtcdC8qIGJ1bGsgY29tbWFuZCBzaWduYXR1cmUgKi9cbjEzMjA6XHRcdGNtZFszXSA9IDB4NDM7XHQvKiBidWxrIGNvbW1hbmQgc2lnbmF0dXJlICovXG4xMzIxOlx0XHRjbWRbMTRdID0gNjtcdC8qIGNvbW1hbmQgbGVuZ3RoICovXG4xMzIyOlx0XG4xMzIzOlx0XHRjbWRbMTVdID0gMHgxYjtcdC8qIFNDU0kgY29tbWFuZDogU1RBUlQgU1RPUCBVTklUICovXG4xMzI0Olx0XHRjbWRbMTldID0gMHgyO1x0LyogZWplY3QgZGlzYyAqL1xuMTMyNTpcdFxuMTMyNjpcdFx0ZGV2X2luZm8oXHUwMDI2dWRldi1cdTAwM2VkZXYsIFwmIzM0O0VqZWN0aW5nIHN0b3JhZ2UgZGV2aWNlLi4uXFxuXCYjMzQ7KTtcbjEzMjc6XHRcdHIgPSB1c2JfYnVsa19tc2codWRldiwgdXNiX3NuZGJ1bGtwaXBlKHVkZXYsIGJ1bGtfb3V0X2VwKSxcbjEzMjg6XHRcdFx0Y21kLCAzMSwgTlVMTCwgMiAqIFVTQl9NU0dfVElNRU9VVCk7XG4xMzI5Olx0XHRrZnJlZShjbWQpO1xuMTMzMDpcdFx0aWYgKHIpXG4xMzMxOlx0XHRcdHJldHVybiByO1xuMTMzMjpcdFxuMTMzMzpcdFx0LyogQXQgdGhpcyBwb2ludCwgdGhlIGRldmljZSBkaXNjb25uZWN0cyBhbmQgcmVjb25uZWN0cyB3aXRoIHRoZSByZWFsXG4xMzM0Olx0XHQgKiBJRCBudW1iZXJzLiAqL1xuMTMzNTpcdFxuMTMzNjpcdFx0dXNiX3NldF9pbnRmZGF0YShpbnRlcmZhY2UsIE5VTEwpO1xuMTMzNzpcdFx0cmV0dXJuIDA7XG4xMzM4Olx0fVxuMTMzOTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxMTo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzQzNAoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDE0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbnZlc3RpZ2F0aXZlIFByb2Nlc3MgZm9yIFJlZ3VsYXRvcnkgRG9tYWluIEluaXRpYWxpemF0aW9uKioKCk9rYXksIGhlcmUmIzM5O3MgdGhlIGdhbWUgcGxhbi4gSSYjMzk7bSBmb2N1c2luZyBvbiB0aGUgYGF0aDlrX2h0Y2AgZHJpdmVyIGFuZCBpdHMgcmVndWxhdG9yeSBkb21haW4gaGFuZGxpbmcuIEkga25vdyB0aGF0IGBhdGg5a19odGNgIGxvYWRzIGZpcm13YXJlIChgcmVsZWFzZV9maXJtd2FyZWApIGJlZm9yZSBpdCBpbml0aWFsaXplcyB0aGUgZGV2aWNlIGFuZCBjYWxscyBgYXRoX3JlZ2RfaW5pdGAuIEJ1dCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgKmZ1bGwqIHBpY3R1cmUgaGVyZS4KCk15IG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBgYXRoX3dvcmxkX3JlZ2RvbV8qYCBmdW5jdGlvbnMuIEFyZSB0aG9zZSB0aGUgb25seSBwb2ludHMgb2YgY29udGFjdCB3aXRoIHJlZ3VsYXRvcnkgY29kZSwgb3IgaXMgdGhlcmUgYW5vdGhlciBzcG90IHdoZXJlIGBhdGhfcmVnZGAgaXMgY2FsbGVkIGludG8gYWN0aW9uPwoKSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgYmlnZ2VyIHBpY3R1cmUsIHNvIEkmIzM5O2xsIGFsc28gc3RhcnQgY2hlY2tpbmcgZm9yIGludGVyYWN0aW9ucyB3aXRoIHRoZSByZWd1bGF0b3J5IGRvbWFpbiBmdW5jdGlvbmFsaXR5IHRocm91Z2ggb3RoZXIgbWV0aG9kcy4gTmV0bGluayBhbmQgY2ZnODAyMTEgY29tbWFuZHMsIGFueXRoaW5nIGluIHN5c2ZzIOKAkyB0aG9zZSBhcmUgYWxsIHBvc3NpYmlsaXRpZXMuIEkgd2FudCB0byBzZWUgaWYgYW55dGhpbmcgZGlyZWN0bHkgYWNjZXNzZXMgZnVuY3Rpb25zIGRlZmluZWQgaW4gYHJlZ2QuY2Agb3IgdXRpbGl6ZXMgdGhlc2Ugc3BlY2lmaWMgcmVnZG9tYWlucy4KClRvIG1ha2Ugc3VyZSBJJiMzOTttIGNvdmVyaW5nIGFsbCBiYXNlcywgSSB3aWxsIHBlcmZvcm0gYSBjb21wcmVoZW5zaXZlIHNlYXJjaCB0aHJvdWdob3V0IHRoZSBlbnRpcmUga2VybmVsIGNvZGViYXNlLiBJIHdpbGwgc2VhcmNoIGZvciBpbnN0YW5jZXMgb2YgYW55dGhpbmcgd2l0aCB0aGUgcHJlZml4ZXMgYGF0aF9yZWdfYCwgYGF0aF9yZWdkX2AsIG9yIGBhdGhfd29ybGRfcmVnZG9tYC4gSSYjMzk7bSBnb2luZyB0byBmaW5kIGFsbCB0aGUgcGllY2VzIGFuZCBwdXQgdGhlbSB0b2dldGhlciB0byBlbnN1cmUgSSB1bmRlcnN0YW5kIGhvdyB0aGlzIHdob2xlIHJlZ3VsYXRvcnkgbWVjaGFuaXNtIHdvcmtzIHdpdGhpbiB0aGUga2VybmVsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxMTo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdGhfcmVnZCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jPTk5MDg9c3RhdGljIGludCBhdGgxMGtfbWFjX2dldF93cmRkX3JlZ3VsYXRvcnkoc3RydWN0IGF0aDEwayAqYXIsIHUxNiAqcmQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy05OTQ2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYzo5OTQ3Olx0KnJkID0gYXRoX3JlZ2RfZmluZF9jb3VudHJ5X2J5X25hbWUoYWxwaGEyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtOTk0OC1cdGlmICgqcmQgPT0gMHhmZmZmKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM9OTk3MT1pbnQgYXRoMTBrX21hY19yZWdpc3RlcihzdHJ1Y3QgYXRoMTBrICphcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTEwMzAyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYzoxMDMwMzpcdHJldCA9IGF0aF9yZWdkX2luaXQoXHUwMDI2YXItXHUwMDNlYXRoX2NvbW1vbi5yZWd1bGF0b3J5LCBhci1cdTAwM2Vody1cdTAwM2V3aXBoeSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtMTAzMDQtXHRcdFx0ICAgIGF0aDEwa19yZWdfbm90aWZpZXIpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9iYXNlLmM9MzAyNT1hdGg1a19pbml0KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9iYXNlLmMtMzEzNS1cdHJlZ3VsYXRvcnktXHUwMDNlY3VycmVudF9yZCA9IGFoLVx1MDAzZWFoX2NhcGFiaWxpdGllcy5jYXBfZWVwcm9tLmVlX3JlZ2RvbWFpbjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9iYXNlLmM6MzEzNjpcdHJldCA9IGF0aF9yZWdkX2luaXQocmVndWxhdG9yeSwgaHctXHUwMDNld2lwaHksIGF0aDVrX3JlZ19ub3RpZmllcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNWsvYmFzZS5jLTMxMzctXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDVrL3BoeS5jPTI3NjE9YXRoNWtfZ2V0X21heF9jdGxfcG93ZXIoc3RydWN0IGF0aDVrX2h3ICphaCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNWsvcGh5LmMtMjc3NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9waHkuYzoyNzc1Olx0Y3RsX21vZGUgPSBhdGhfcmVnZF9nZXRfYmFuZF9jdGwocmVndWxhdG9yeSwgY2hhbm5lbC1cdTAwM2ViYW5kKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9waHkuYy0yNzc2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYz04Mjg9c3RhdGljIGludCBhdGg5a19pbml0X2RldmljZShzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jLTg1MS1cdC8qIEluaXRpYWxpemUgcmVndWxhdG9yeSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jOjg1MjpcdGVycm9yID0gYXRoX3JlZ2RfaW5pdChcdTAwMjZjb21tb24tXHUwMDNlcmVndWxhdG9yeSwgcHJpdi1cdTAwM2Vody1cdTAwM2V3aXBoeSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy04NTMtXHRcdFx0ICAgICAgYXRoOWtfcmVnX25vdGlmaWVyKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHcuYz0xMTc3PXUzMiBhdGg5a19yZWdkX2dldF9jdGwoc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcsIHN0cnVjdCBhdGg5a19jaGFubmVsICpjaGFuKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h3LmMtMTE3OC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHcuYzoxMTc5Olx0dTMyIGN0bCA9IGF0aF9yZWdkX2dldF9iYW5kX2N0bChyZWcsIGNoYW4tXHUwMDNlY2hhbi1cdTAwM2ViYW5kKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9ody5jLTExODAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYz0xMDA0PWludCBhdGg5a19pbml0X2RldmljZSh1MTYgZGV2aWQsIHN0cnVjdCBhdGhfc29mdGMgKnNjLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmMtMTAyMi1cdC8qIEluaXRpYWxpemUgcmVndWxhdG9yeSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYzoxMDIzOlx0ZXJyb3IgPSBhdGhfcmVnZF9pbml0KFx1MDAyNmNvbW1vbi1cdTAwM2VyZWd1bGF0b3J5LCBzYy1cdTAwM2Vody1cdTAwM2V3aXBoeSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmMtMTAyNC1cdFx0XHQgICAgICBhdGg5a19yZWdfbm90aWZpZXIpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9jYXJsOTE3MC9tYWluLmM9MTk1Mz1pbnQgY2FybDkxNzBfcmVnaXN0ZXIoc3RydWN0IGFyOTE3MCAqYXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL21haW4uYy0xOTcwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL21haW4uYzoxOTcxOlx0ZXJyID0gYXRoX3JlZ2RfaW5pdChyZWd1bGF0b3J5LCBhci1cdTAwM2Vody1cdTAwM2V3aXBoeSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9jYXJsOTE3MC9tYWluLmMtMTk3Mi1cdFx0XHQgICAgY2FybDkxNzBfcmVnX25vdGlmaWVyKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvcGh5LmM9MTI5MT1zdGF0aWMgdm9pZCBjYXJsOTE3MF9jYWxjX2N0bChzdHJ1Y3QgYXI5MTcwICphciwgdTMyIGZyZXEsIGVudW0gY2FybDkxNzBfYncgYncpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL3BoeS5jLTEzMjYtXHQgKiBocHJlZy5jOjp6ZkhwR2V0UmVndWxhdG9yeURvbWFpbigpIGFuZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL3BoeS5jOjEzMjc6XHQgKiBhdGgvcmVnZC5jOjphdGhfcmVnZF9nZXRfYmFuZF9jdGwoKSAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvcGh5LmMtMTMyOC1cdCAqIGUuZy4gZm9yIEZDQzNfV09STEQgdGhlIE9UVVMgcHJvY2VkdXJlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL3BoeS5jLTEzMzEtXHQgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9jYXJsOTE3MC9waHkuYzoxMzMyOlx0Y3RsX2dycCA9IGF0aF9yZWdkX2dldF9iYW5kX2N0bChcdTAwMjZhci1cdTAwM2Vjb21tb24ucmVndWxhdG9yeSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9jYXJsOTE3MC9waHkuYy0xMzMzLVx0XHRcdFx0XHRhci1cdTAwM2Vody1cdTAwM2Vjb25mLmNoYW5kZWYuY2hhbi1cdTAwM2ViYW5kKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTI1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzoyNjpzdGF0aWMgaW50IF9fYXRoX3JlZ2RfaW5pdChzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTI3LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM9MTk5PXN0YXRpYyBpbmxpbmUgYm9vbCBpc193d3Jfc2t1KHUxNiByZWdkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjA1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzoyMDY6c3RhdGljIHUxNiBhdGhfcmVnZF9nZXRfZWVwcm9tUkQoc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTIwNy17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYz0yMTE9Ym9vbCBhdGhfaXNfd29ybGRfcmVnZChzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjEyLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6MjEzOlx0cmV0dXJuIGlzX3d3cl9za3UoYXRoX3JlZ2RfZ2V0X2VlcHJvbVJEKHJlZykpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0yMTQtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM9NDM3PXN0YXRpYyB2b2lkIGF0aF9yZWdfYXBwbHlfd29ybGRfZmxhZ3Moc3RydWN0IHdpcGh5ICp3aXBoeSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTQ1OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NDU5OnUxNiBhdGhfcmVnZF9maW5kX2NvdW50cnlfYnlfbmFtZShjaGFyICphbHBoYTIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTQ2MC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy00NjktfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo0NzA6RVhQT1JUX1NZTUJPTChhdGhfcmVnZF9maW5kX2NvdW50cnlfYnlfbmFtZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTQ3MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM9NDcyPXN0YXRpYyBpbnQgX19hdGhfcmVnX2R5bl9jb3VudHJ5KHN0cnVjdCB3aXBoeSAqd2lwaHksXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy00ODEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjQ4MjpcdGNvdW50cnlfY29kZSA9IGF0aF9yZWdkX2ZpbmRfY291bnRyeV9ieV9uYW1lKHJlcXVlc3QtXHUwMDNlYWxwaGEyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNDgzLVx0aWYgKGNvdW50cnlfY29kZSA9PSAodTE2KSAtMSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTQ4OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NDg5Olx0X19hdGhfcmVnZF9pbml0KHJlZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTQ5MC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jPTU1MD1FWFBPUlRfU1lNQk9MKGF0aF9yZWdfbm90aWZpZXJfYXBwbHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy01NTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjU1MjpzdGF0aWMgYm9vbCBhdGhfcmVnZF9pc19lZXByb21fdmFsaWQoc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTU1My17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjU1NDpcdHUxNiByZCA9IGF0aF9yZWdkX2dldF9lZXByb21SRChyZWcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy01NTUtXHRpbnQgaTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jPTU4MT1zdGF0aWMgc3RydWN0IGNvdW50cnlfY29kZV90b19lbnVtX3JkKlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo1ODI6YXRoX3JlZ2RfZmluZF9jb3VudHJ5KHUxNiBjb3VudHJ5Q29kZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNTgzLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jPTU5ND1zdGF0aWMgc3RydWN0IGNvdW50cnlfY29kZV90b19lbnVtX3JkKlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo1OTU6YXRoX3JlZ2RfZmluZF9jb3VudHJ5X2J5X3JkKGludCByZWdkbW4pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTU5Ni17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy02MDYtLyogUmV0dXJucyB0aGUgbWFwIG9mIHRoZSBFRVBST00gc2V0IFJEIHRvIGEgY291bnRyeSBjb2RlICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjYwNzpzdGF0aWMgdTE2IGF0aF9yZWdkX2dldF9kZWZhdWx0X2NvdW50cnkodTE2IHJkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy02MDgte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNjEyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo2MTM6XHRcdGNvdW50cnkgPSBhdGhfcmVnZF9maW5kX2NvdW50cnkoY2MpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy02MTQtXHRcdGlmIChjb3VudHJ5ICE9IE5VTEwpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYz02MzU9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo2MzY6YXRoX3JlZ2RfaW5pdF93aXBoeShzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNjM3LVx0XHQgICAgc3RydWN0IHdpcGh5ICp3aXBoeSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTY3NS0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6Njc2OnN0YXRpYyB2b2lkIGF0aF9yZWdkX3Nhbml0aXplKHN0cnVjdCBhdGhfcmVndWxhdG9yeSAqcmVnKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy02Nzcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNjgzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo2ODQ6c3RhdGljIGludCBfX2F0aF9yZWdkX2luaXQoc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTY4NS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy02OTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjY5MjpcdGF0aF9yZWdkX3Nhbml0aXplKHJlZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTY5My1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTY5NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6Njk2Olx0aWYgKCFhdGhfcmVnZF9pc19lZXByb21fdmFsaWQocmVnKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy02OTctXHRcdHByX2VycihcJiMzNDtJbnZhbGlkIEVFUFJPTSBjb250ZW50c1xcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy03MDAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjcwMTpcdHJlZ2RtbiA9IGF0aF9yZWdkX2dldF9lZXByb21SRChyZWcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo3MDI6XHRyZWctXHUwMDNlY291bnRyeV9jb2RlID0gYXRoX3JlZ2RfZ2V0X2RlZmF1bHRfY291bnRyeShyZWdkbW4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy03MDMtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy03MTUtXHRcdCAgICAgICBcJiMzNDttYXAgc2VhcmNoXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NzE2Olx0XHRjb3VudHJ5ID0gYXRoX3JlZ2RfZmluZF9jb3VudHJ5KHJlZy1cdTAwM2Vjb3VudHJ5X2NvZGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy03MTctXHRcdGlmIChjb3VudHJ5ID09IE5VTEwpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTczOS1cdGlmICghY291bnRyeSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NzQwOlx0XHRjb3VudHJ5ID0gYXRoX3JlZ2RfZmluZF9jb3VudHJ5X2J5X3JkKHJlZ2Rtbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTc0MS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jPTc1OD1pbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NzU5OmF0aF9yZWdkX2luaXQoc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTc2MC1cdCAgICAgIHN0cnVjdCB3aXBoeSAqd2lwaHksXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy03NjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjc2ODpcdHIgPSBfX2F0aF9yZWdkX2luaXQocmVnKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNzY5LVx0aWYgKHIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy03NzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjc3NjpcdGF0aF9yZWdkX2luaXRfd2lwaHkocmVnLCB3aXBoeSwgcmVnX25vdGlmaWVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNzc3LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNzc5LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NzgwOkVYUE9SVF9TWU1CT0woYXRoX3JlZ2RfaW5pdCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTc4MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NzgyOnUzMiBhdGhfcmVnZF9nZXRfYmFuZF9jdGwoc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTc4My1cdFx0XHQgIGVudW0gbmw4MDIxMV9iYW5kIGJhbmQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy03ODYtXHQgICAgKHJlZy1cdTAwM2Vjb3VudHJ5X2NvZGUgPT0gQ1RSWV9ERUZBVUxUIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo3ODc6XHQgICAgIGlzX3d3cl9za3UoYXRoX3JlZ2RfZ2V0X2VlcHJvbVJEKHJlZykpKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy03ODgtXHRcdHJldHVybiBTRF9OT19DVEw7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy03OTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjc5MTpcdGlmIChhdGhfcmVnZF9nZXRfZWVwcm9tUkQocmVnKSA9PSBDVFJZX0RFRkFVTFQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNzkyLVx0XHRzd2l0Y2ggKHJlZy1cdTAwM2VyZWdpb24pIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTgxMi19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjgxMzpFWFBPUlRfU1lNQk9MKGF0aF9yZWdkX2dldF9iYW5kX2N0bCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuaD0yNjI9Ym9vbCBhdGhfaXNfNDlnaHpfYWxsb3dlZCh1MTYgcmVkb21haW4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuaDoyNjM6dTE2IGF0aF9yZWdkX2ZpbmRfY291bnRyeV9ieV9uYW1lKGNoYXIgKmFscGhhMik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5oOjI2NDppbnQgYXRoX3JlZ2RfaW5pdChzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZywgc3RydWN0IHdpcGh5ICp3aXBoeSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmgtMjY1LVx0XHQgIHZvaWQgKCpyZWdfbm90aWZpZXIpKHN0cnVjdCB3aXBoeSAqd2lwaHksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5oLTI2Ni1cdFx0XHRcdCAgICAgICBzdHJ1Y3QgcmVndWxhdG9yeV9yZXF1ZXN0ICpyZXF1ZXN0KSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5oOjI2Nzp1MzIgYXRoX3JlZ2RfZ2V0X2JhbmRfY3RsKHN0cnVjdCBhdGhfcmVndWxhdG9yeSAqcmVnLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuaC0yNjgtXHRcdFx0ICBlbnVtIG5sODAyMTFfYmFuZCBiYW5kKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTE6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzgxMjgKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBhdGhfcmVnZCBJbml0aWFsaXphdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIG9ic2VydmF0aW9uIGlzIHRoYXQgYGF0aF9yZWdkX2luaXRgIHNlZW1zIHByZXR0eSBjcnVjaWFsLCBhbmQgaXQmIzM5O3MgYmVpbmcgY2FsbGVkIGJ5IGEgZGl2ZXJzZSByYW5nZSBvZiBkcml2ZXJzLiBJIHNlZSBpdCBpbnZva2VkIGJ5IHRoZSBgYXRoMTBrYCwgYGF0aDVrYCwgYGF0aDlrX2h0Y2AsIGBhdGg5a2AsIGFuZCBgY2FybDkxNzBgIGZhbWlsaWVzLiBUaGVzZSBjb3ZlciBhIGJyb2FkIHNwZWN0cnVtIG9mIGhhcmR3YXJlIGludGVyZmFjZXM6IFBDSSwgU05PQywgU0RJTywgQUhCLCBhbmQgVVNCLiBUaGF0JiMzOTtzIGEgc3Ryb25nIGluZGljYXRpb24gdGhhdCB0aGlzIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uIGlzIGZ1bmRhbWVudGFsIHRvIHJlZ3VsYXRvcnkgZG9tYWluIG1hbmFnZW1lbnQgYWNyb3NzIGEgbG90IG9mIGRpZmZlcmVudCBkZXZpY2VzLgoKSG9sZCBvbiBhIHNlY29uZCwgdGhvdWdoLiBJIG5lZWQgdG8gYmUgdGhvcm91Z2guIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBiaWcgcGljdHVyZS4gV2hhdCBhYm91dCBgYXRoX3JlZ19ub3RpZmllcl9hcHBseWA/IEkgcmVtZW1iZXIgdGhhdCwgYnV0IHdoZXJlIGRvZXMgaXQgZml0IGludG8gdGhlIHBpY3R1cmU/IEkmIzM5O20gZ29pbmcgdG8gaGF2ZSB0byBjaGVjayB3aGVyZSB0aGF0JiMzOTtzIGNhbGxlZCwgYmVjYXVzZSBJJiMzOTttIGJldHRpbmcgdGhhdCYjMzk7cyBhbiBpbXBvcnRhbnQgcGllY2Ugb2YgdGhlIHB1enpsZS4gSSBuZWVkIHRvIHNlZSBob3cgdGhlc2UgdHdvIGZ1bmN0aW9ucyByZWxhdGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDExOjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2F0aF9yZWdfbm90aWZpZXJfYXBwbHkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYz0zNTYxPXN0YXRpYyB2b2lkIGF0aDEwa19yZWdfbm90aWZpZXIoc3RydWN0IHdpcGh5ICp3aXBoeSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTM1NjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jOjM1Njg6XHRhdGhfcmVnX25vdGlmaWVyX2FwcGx5KHdpcGh5LCByZXF1ZXN0LCBcdTAwMjZhci1cdTAwM2VhdGhfY29tbW9uLnJlZ3VsYXRvcnkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy0zNTY5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9iYXNlLmM9MjUyPXN0YXRpYyB2b2lkIGF0aDVrX3JlZ19ub3RpZmllcihzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9iYXNlLmMtMjU4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDVrL2Jhc2UuYzoyNTk6XHRhdGhfcmVnX25vdGlmaWVyX2FwcGx5KHdpcGh5LCByZXF1ZXN0LCByZWd1bGF0b3J5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9iYXNlLmMtMjYwLX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM9MjI0PXN0YXRpYyB2b2lkIGF0aDlrX3JlZ19ub3RpZmllcihzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy0yMjktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM6MjMwOlx0YXRoX3JlZ19ub3RpZmllcl9hcHBseSh3aXBoeSwgcmVxdWVzdCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy0yMzEtXHRcdFx0ICAgICAgIGF0aDlrX2h3X3JlZ3VsYXRvcnkocHJpdi1cdTAwM2VhaCkpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmM9MjQ5PXN0YXRpYyB2b2lkIGF0aDlrX3JlZ19ub3RpZmllcihzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmMtMjU2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYzoyNTc6XHRhdGhfcmVnX25vdGlmaWVyX2FwcGx5KHdpcGh5LCByZXF1ZXN0LCByZWcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYy0yNTgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL21haW4uYz0xOTQ0PXN0YXRpYyB2b2lkIGNhcmw5MTcwX3JlZ19ub3RpZmllcihzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9jYXJsOTE3MC9tYWluLmMtMTk0OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9jYXJsOTE3MC9tYWluLmM6MTk1MDpcdGF0aF9yZWdfbm90aWZpZXJfYXBwbHkod2lwaHksIHJlcXVlc3QsIFx1MDAyNmFyLVx1MDAzZWNvbW1vbi5yZWd1bGF0b3J5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9jYXJsOTE3MC9tYWluLmMtMTk1MS19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYz00OTY9c3RhdGljIHZvaWQgYXRoX3JlZ19keW5fY291bnRyeShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNTA4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo1MDk6dm9pZCBhdGhfcmVnX25vdGlmaWVyX2FwcGx5KHN0cnVjdCB3aXBoeSAqd2lwaHksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTUxMC1cdFx0XHQgICAgc3RydWN0IHJlZ3VsYXRvcnlfcmVxdWVzdCAqcmVxdWVzdCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTU0OS19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjU1MDpFWFBPUlRfU1lNQk9MKGF0aF9yZWdfbm90aWZpZXJfYXBwbHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy01NTEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuaD0yNjc9dTMyIGF0aF9yZWdkX2dldF9iYW5kX2N0bChzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmgtMjY4LVx0XHRcdCAgZW51bSBubDgwMjExX2JhbmQgYmFuZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5oOjI2OTp2b2lkIGF0aF9yZWdfbm90aWZpZXJfYXBwbHkoc3RydWN0IHdpcGh5ICp3aXBoeSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmgtMjcwLVx0XHRcdCAgICBzdHJ1Y3QgcmVndWxhdG9yeV9yZXF1ZXN0ICpyZXF1ZXN0LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxMTo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzOTUxMAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDczCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBSZWd1bGF0b3J5IERvbWFpbiBDaGFuZ2VzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgdGhlIHN5c3RlbSBoYW5kbGVzIGNoYW5nZXMgdG8gdGhlIHJlZ3VsYXRvcnkgZG9tYWluLiBJdCBsb29rcyBsaWtlIGBhdGhfcmVnX25vdGlmaWVyX2FwcGx5YCBpcyB0aGUga2V5IGZ1bmN0aW9uLiBUaGlzIGlzIHRyaWdnZXJlZCwgaXQgc2VlbXMsIHdoZW4gc29tZW9uZSDigJMgbWF5YmUgdGhyb3VnaCBgbmw4MDIxMWAgZnJvbSB1c2Vyc3BhY2Ug4oCTIHNldHMgYSBuZXcgcmVndWxhdG9yeSBkb21haW4gb3IgY291bnRyeSBjb2RlLiBUaGF0IG1ha2VzIHNlbnNlLCBoYW5kbGluZyB0aG9zZSB1cGRhdGVzIGlzIGNyaXRpY2FsIGZvciBjb21wbGlhbmNlIGFuZCBwcm9wZXIgb3BlcmF0aW9uLgoKTXkgbmV4dCBzdGVwIGlzIHRvIGRpdmUgaW50byB0aGUgc291cmNlIGNvZGUgZm9yIGBhdGhfcmVnX25vdGlmaWVyX2FwcGx5YC4gU3BlY2lmaWNhbGx5LCBJJiMzOTtsbCBiZSBjaGVja2luZyBvdXQgdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jYCBmaWxlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGhhcHBlbnMgKndpdGhpbiogdGhhdCBmdW5jdGlvbiB0byBnZXQgYSBmdWxsIHBpY3R1cmUgb2YgdGhlIHJlZ3VsYXRvcnkgY2hhbmdlIHByb2Nlc3MuIEkmIzM5O20gZ29pbmcgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgZGF0YSBzdHJ1Y3R1cmVzIHVzZWQsIHRoZSBjYWxscyB0byBsb3dlci1sZXZlbCBmdW5jdGlvbnMsIGFuZCBhbnkgZXJyb3IgaGFuZGxpbmcuIFRoaXMgaXMgYSBjcml0aWNhbCBhcmVhLCBzbyBJIHdhbnQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCBpdCBjb21wbGV0ZWx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxMTo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA1MDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDUwMDpcdFx0aWYgKF9fYXRoX3JlZ19keW5fY291bnRyeSh3aXBoeSwgcmVnLCByZXF1ZXN0KSlcbiA1MDE6XHRcdFx0cmV0dXJuO1xuIDUwMjpcdFxuIDUwMzpcdFx0cHJpbnRrKEtFUk5fREVCVUcgXCYjMzQ7YXRoOiByZWdkb21haW4gMHglMHggXCYjMzQ7XG4gNTA0Olx0XHRcdFx0ICBcJiMzNDtkeW5hbWljYWxseSB1cGRhdGVkIGJ5ICVzXFxuXCYjMzQ7LFxuIDUwNTpcdFx0ICAgICAgIHJlZy1cdTAwM2VjdXJyZW50X3JkLFxuIDUwNjpcdFx0ICAgICAgIHJlZ19pbml0aWF0b3JfbmFtZShyZXF1ZXN0LVx1MDAzZWluaXRpYXRvcikpO1xuIDUwNzpcdH1cbiA1MDg6XHRcbiA1MDk6XHR2b2lkIGF0aF9yZWdfbm90aWZpZXJfYXBwbHkoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiA1MTA6XHRcdFx0XHQgICAgc3RydWN0IHJlZ3VsYXRvcnlfcmVxdWVzdCAqcmVxdWVzdCxcbiA1MTE6XHRcdFx0XHQgICAgc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcpXG4gNTEyOlx0e1xuIDUxMzpcdFx0c3RydWN0IGF0aF9jb21tb24gKmNvbW1vbiA9IGNvbnRhaW5lcl9vZihyZWcsIHN0cnVjdCBhdGhfY29tbW9uLFxuIDUxNDpcdFx0XHRcdFx0XHRcdCByZWd1bGF0b3J5KTtcbiA1MTU6XHRcdC8qIFdlIGFsd2F5cyBhcHBseSB0aGlzICovXG4gNTE2Olx0XHRhdGhfcmVnX2FwcGx5X3JhZGFyX2ZsYWdzKHdpcGh5LCByZWcpO1xuIDUxNzpcdFxuIDUxODpcdFx0LypcbiA1MTk6XHRcdCAqIFRoaXMgd291bGQgaGFwcGVuIHdoZW4gd2UgaGF2ZSBzZW50IGEgY3VzdG9tIHJlZ3VsYXRvcnkgcmVxdWVzdFxuIDUyMDpcdFx0ICogYSB3b3JsZCByZWd1bGF0b3J5IGRvbWFpbiBhbmQgdGhlIHNjaGVkdWxlciBoYXNuJiMzOTt0IHlldCBwcm9jZXNzZWRcbiA1MjE6XHRcdCAqIGFueSBwZW5kaW5nIHJlcXVlc3RzIGluIHRoZSBxdWV1ZS5cbiA1MjI6XHRcdCAqL1xuIDUyMzpcdFx0aWYgKCFyZXF1ZXN0KVxuIDUyNDpcdFx0XHRyZXR1cm47XG4gNTI1Olx0XG4gNTI2Olx0XHRyZWctXHUwMDNlcmVnaW9uID0gcmVxdWVzdC1cdTAwM2VkZnNfcmVnaW9uO1xuIDUyNzpcdFx0c3dpdGNoIChyZXF1ZXN0LVx1MDAzZWluaXRpYXRvcikge1xuIDUyODpcdFx0Y2FzZSBOTDgwMjExX1JFR0RPTV9TRVRfQllfQ09SRTpcbiA1Mjk6XHRcdFx0LypcbiA1MzA6XHRcdFx0ICogSWYgY29tbW9uLVx1MDAzZXJlZ193b3JsZF9jb3B5IGlzIHdvcmxkIHJvYW1pbmcgaXQgbWVhbnMgd2UgKndlcmUqXG4gNTMxOlx0XHRcdCAqIHdvcmxkIHJvYW1pbmcuLi4gc28gd2Ugbm93IGhhdmUgdG8gcmVzdG9yZSB0aGF0IGRhdGEuXG4gNTMyOlx0XHRcdCAqL1xuIDUzMzpcdFx0XHRpZiAoIWF0aF9pc193b3JsZF9yZWdkKFx1MDAyNmNvbW1vbi1cdTAwM2VyZWdfd29ybGRfY29weSkpXG4gNTM0Olx0XHRcdFx0YnJlYWs7XG4gNTM1Olx0XG4gNTM2Olx0XHRcdG1lbWNweShyZWcsIFx1MDAyNmNvbW1vbi1cdTAwM2VyZWdfd29ybGRfY29weSxcbiA1Mzc6XHRcdFx0ICAgICAgIHNpemVvZihzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkpKTtcbiA1Mzg6XHRcdFx0YnJlYWs7XG4gNTM5Olx0XHRjYXNlIE5MODAyMTFfUkVHRE9NX1NFVF9CWV9EUklWRVI6XG4gNTQwOlx0XHRcdGJyZWFrO1xuIDU0MTpcdFx0Y2FzZSBOTDgwMjExX1JFR0RPTV9TRVRfQllfVVNFUjpcbiA1NDI6XHRcdFx0aWYgKGF0aF9yZWdfZHluX2NvdW50cnlfdXNlcl9hbGxvdyhyZWcpKVxuIDU0MzpcdFx0XHRcdGF0aF9yZWdfZHluX2NvdW50cnkod2lwaHksIHJlZywgcmVxdWVzdCk7XG4gNTQ0Olx0XHRcdGJyZWFrO1xuIDU0NTpcdFx0Y2FzZSBOTDgwMjExX1JFR0RPTV9TRVRfQllfQ09VTlRSWV9JRTpcbiA1NDY6XHRcdFx0YXRoX3JlZ19keW5fY291bnRyeSh3aXBoeSwgcmVnLCByZXF1ZXN0KTtcbiA1NDc6XHRcdFx0YnJlYWs7XG4gNTQ4Olx0XHR9XG4gNTQ5Olx0fVxuIDU1MDpcdEVYUE9SVF9TWU1CT0woYXRoX3JlZ19ub3RpZmllcl9hcHBseSk7XG4gNTUxOlx0XG4gNTUyOlx0c3RhdGljIGJvb2wgYXRoX3JlZ2RfaXNfZWVwcm9tX3ZhbGlkKHN0cnVjdCBhdGhfcmVndWxhdG9yeSAqcmVnKVxuIDU1MzpcdHtcbiA1NTQ6XHRcdHUxNiByZCA9IGF0aF9yZWdkX2dldF9lZXByb21SRChyZWcpO1xuIDU1NTpcdFx0aW50IGk7XG4gNTU2Olx0XG4gNTU3Olx0XHRpZiAocmQgXHUwMDI2IENPVU5UUllfRVJEX0ZMQUcpIHtcbiA1NTg6XHRcdFx0LyogRUVQUk9NIHZhbHVlIGlzIGEgY291bnRyeSBjb2RlICovXG4gNTU5Olx0XHRcdHUxNiBjYyA9IHJkIFx1MDAyNiB+Q09VTlRSWV9FUkRfRkxBRztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTE6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDA3NTIKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyNjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgQXRoZXJvcyBXaXJlbGVzcyBSZWd1bGF0b3J5IERvbWFpbiBJbml0aWFsaXphdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBXaGVuIG9uZSBvZiB0aGVzZSBBdGhlcm9zIHdpcmVsZXNzIGRldmljZXMg4oCTIGxpa2UgYW4gYXRoOWtfaHRjLCBjYXJsOTE3MCBVU0IgZGV2aWNlLCBvciBhIFBDSSBhdGg5ay9hdGgxMGsvYXRoNWsgY2FyZCDigJMgZ2V0cyBwcm9iZWQgYW5kIGluaXRpYWxpemVkLCB0aGUgYGF0aF9yZWdkX2luaXRgIGZ1bmN0aW9uIGdldHMgY2FsbGVkLiBNYWtlcyBzZW5zZSBzbyBmYXIuCgpOb3csIHdpdGhpbiBgYXRoX3JlZ2RfaW5pdGAsIHRoZSBjb2RlIGRpdmVzIGludG8gYF9fYXRoX3JlZ2RfaW5pdChyZWcpYCBhbmQgdGhlbiBjYWxscyBgYXRoX3JlZ2RfaW5pdF93aXBoeShyZWcsIHdpcGh5LCByZWdfbm90aWZpZXIpYC4gVGhpcyBpcyB3aGVyZSBpdCBnZXRzIGludGVyZXN0aW5nLCBhcyBpdCBhcHBlYXJzIHRvIGJlIHJlc3BvbnNpYmxlIGZvciBzZXR0aW5nIHVwIHRoZSByZWd1bGF0b3J5IGRvbWFpbiBpbmZvcm1hdGlvbi4KCkluc2lkZSBgYXRoX3JlZ2RfaW5pdF93aXBoeWAsIGl0IGNoZWNrcyBpZiBgYXRoX2lzX3dvcmxkX3JlZ2QocmVnKWAgaXMgdHJ1ZS4gSWYgaXQgKmlzKiB0cnVlLCB3ZSYjMzk7cmUgbGlrZWx5IGRlYWxpbmcgd2l0aCBhIHdvcmxkIHJlZ3VsYXRvcnkgZG9tYWluLCBhbmQgdGhlIGNvZGUgY2FsbHMgYHJlZ2QgPSBhdGhfd29ybGRfcmVnZG9tYWluKHJlZyk7YC4gT3RoZXJ3aXNlLCBpdCB1c2VzIGByZWdkID0gYXRoX2RlZmF1bHRfd29ybGRfcmVnZG9tYWluKCk7YC4gU28gaXQgc2VlbXMgdGhlcmUmIzM5O3MgYSBkaXN0aW5jdGlvbiBiYXNlZCBvbiB3aGV0aGVyIGEgd29ybGQgcmVndWxhdG9yeSBkb21haW4gaXMgaW4gdXNlIG9yIG5vdC4gVGhpcyBpcyBsaWtlbHkgYW4gaW1wb3J0YW50IGRpc3RpbmN0aW9uIHRvIGNoZWNrIGxhdGVyLgoKQ3J1Y2lhbGx5LCBpdCB0aGVuIGNhbGxzIGB3aXBoeV9hcHBseV9jdXN0b21fcmVndWxhdG9yeSh3aXBoeSwgcmVnZCk7YC4gVGhpcyBpcyB3aGVyZSB0aGUgbWFnaWMgaGFwcGVucywgc28gbGV0JiMzOTtzIGRpZyBpbnRvIHRoYXQgZnVuY3Rpb24mIzM5O3MgaW1wbGVtZW50YXRpb24uIEl0IGxvb2tzIGxpa2UgdGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgKmFjdHVhbGx5IGFwcGx5aW5nKiB0aGUgcmVndWxhdG9yeSBydWxlcyB0byB0aGUgd2lyZWxlc3MgaW50ZXJmYWNlIChgd2lwaHlgKS4gU3BlY2lmaWNhbGx5LCBpdCYjMzk7cyBpdGVyYXRpbmcgb3ZlciB0aGUgYHJlZ2QtJmd0O25fcmVnX3J1bGVzYCBhbmQgYHJlZ2QtJmd0O3JlZ19ydWxlc2AgZmllbGRzLCB3aGljaCBhbG1vc3QgY2VydGFpbmx5IGNvbnRhaW4gdGhlIHJlZ3VsYXRvcnkgZG9tYWluIGRhdGEuIEkmIzM5O2xsIG5lZWQgdG8gZ28gbG9vayBhdCBgd2lwaHlfYXBwbHlfY3VzdG9tX3JlZ3VsYXRvcnlgIGluIGBuZXQvd2lyZWxlc3MvcmVnLmNgIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIGRldGFpbHMgb2YgaG93IHRob3NlIHJ1bGVzIGFyZSBhcHBsaWVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxMTo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy9yZWcuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI2MTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MjYxMDpcdH1cbjI2MTE6XHRcbjI2MTI6XHQvKiBVc2VkIGJ5IGRyaXZlcnMgcHJpb3IgdG8gd2lwaHkgcmVnaXN0cmF0aW9uICovXG4yNjEzOlx0dm9pZCB3aXBoeV9hcHBseV9jdXN0b21fcmVndWxhdG9yeShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuMjYxNDpcdFx0XHRcdFx0ICAgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW4gKnJlZ2QpXG4yNjE1Olx0e1xuMjYxNjpcdFx0Y29uc3Qgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW4gKm5ld19yZWdkLCAqdG1wO1xuMjYxNzpcdFx0ZW51bSBubDgwMjExX2JhbmQgYmFuZDtcbjI2MTg6XHRcdHVuc2lnbmVkIGludCBiYW5kc19zZXQgPSAwO1xuMjYxOTpcdFxuMjYyMDpcdFx0V0FSTighKHdpcGh5LVx1MDAzZXJlZ3VsYXRvcnlfZmxhZ3MgXHUwMDI2IFJFR1VMQVRPUllfQ1VTVE9NX1JFRyksXG4yNjIxOlx0XHQgICAgIFwmIzM0O3dpcGh5IHNob3VsZCBoYXZlIFJFR1VMQVRPUllfQ1VTVE9NX1JFR1xcblwmIzM0Oyk7XG4yNjIyOlx0XHR3aXBoeS1cdTAwM2VyZWd1bGF0b3J5X2ZsYWdzIHw9IFJFR1VMQVRPUllfQ1VTVE9NX1JFRztcbjI2MjM6XHRcbjI2MjQ6XHRcdGZvciAoYmFuZCA9IDA7IGJhbmQgXHUwMDNjIE5VTV9OTDgwMjExX0JBTkRTOyBiYW5kJiM0MzsmIzQzOykge1xuMjYyNTpcdFx0XHRpZiAoIXdpcGh5LVx1MDAzZWJhbmRzW2JhbmRdKVxuMjYyNjpcdFx0XHRcdGNvbnRpbnVlO1xuMjYyNzpcdFx0XHRoYW5kbGVfYmFuZF9jdXN0b20od2lwaHksIHdpcGh5LVx1MDAzZWJhbmRzW2JhbmRdLCByZWdkKTtcbjI2Mjg6XHRcdFx0YmFuZHNfc2V0JiM0MzsmIzQzOztcbjI2Mjk6XHRcdH1cbjI2MzA6XHRcbjI2MzE6XHRcdC8qXG4yNjMyOlx0XHQgKiBubyBwb2ludCBpbiBjYWxsaW5nIHRoaXMgaWYgaXQgd29uJiMzOTt0IGhhdmUgYW55IGVmZmVjdFxuMjYzMzpcdFx0ICogb24geW91ciBkZXZpY2UmIzM5O3Mgc3VwcG9ydGVkIGJhbmRzLlxuMjYzNDpcdFx0ICovXG4yNjM1Olx0XHRXQVJOX09OKCFiYW5kc19zZXQpO1xuMjYzNjpcdFx0bmV3X3JlZ2QgPSByZWdfY29weV9yZWdkKHJlZ2QpO1xuMjYzNzpcdFx0aWYgKElTX0VSUihuZXdfcmVnZCkpXG4yNjM4Olx0XHRcdHJldHVybjtcbjI2Mzk6XHRcbjI2NDA6XHRcdHJ0bmxfbG9jaygpO1xuMjY0MTpcdFx0c2NvcGVkX2d1YXJkKHdpcGh5LCB3aXBoeSkge1xuMjY0MjpcdFx0XHR0bXAgPSBnZXRfd2lwaHlfcmVnZG9tKHdpcGh5KTtcbjI2NDM6XHRcdFx0cmN1X2Fzc2lnbl9wb2ludGVyKHdpcGh5LVx1MDAzZXJlZ2QsIG5ld19yZWdkKTtcbjI2NDQ6XHRcdFx0cmN1X2ZyZWVfcmVnZG9tKHRtcCk7XG4yNjQ1Olx0XHR9XG4yNjQ2Olx0XHRydG5sX3VubG9jaygpO1xuMjY0NzpcdH1cbjI2NDg6XHRFWFBPUlRfU1lNQk9MKHdpcGh5X2FwcGx5X2N1c3RvbV9yZWd1bGF0b3J5KTtcbjI2NDk6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTE6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDIwOTUKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA2NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipBbmFseXppbmcgdGhlIFJlZ2lzdHJhdGlvbiBSdWxlIEhhbmRsaW5nKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgd2UmIzM5O3JlIGhhbmRsaW5nIHJlZ2lzdHJhdGlvbiBydWxlcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgYGhhbmRsZV9iYW5kX2N1c3RvbWAgYW5kIGByZWdfY29weV9yZWdkKHJlZ2QpYCBhcmUgZ29pbmcgdG8gYmUgdGhlIHdvcmtob3JzZXMgcHJvY2Vzc2luZyB0aGUgYHJlZ2QtJmd0O25fcmVnX3J1bGVzYCBhbmQgYHJlZ2QtJmd0O3JlZ19ydWxlc2AgbWVtYmVycyBvZiB0aGUgYHJlZ2RgIHN0cnVjdHVyZS4gVGhlc2UgYXJlIGNsZWFybHkga2V5IGNvbXBvbmVudHMgaW4gbWFuYWdpbmcgdGhlIHJlZ3VsYXRvcnkgZG9tYWluIHNldHRpbmdzLiBOb3csIEkgc2hvdWxkIHByb2JhYmx5IGRvdWJsZS1jaGVjayBob3cgYGhhbmRsZV9iYW5kX2N1c3RvbWAgYWN0dWFsbHkgZnVuY3Rpb25zLiBMZXQmIzM5O3MgZGl2ZSBpbnRvIGBuZXQvd2lyZWxlc3MvcmVnLmNgIHRvIHNlZSBwcmVjaXNlbHkgd2hhdCYjMzk7cyBnb2luZyBvbiB3aXRoaW4gdGhhdCBmdW5jdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTE6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3MvcmVnLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNTkwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDI1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzI1OTA6XHRcdGNoYW4tXHUwMDNlbWF4X3Bvd2VyID0gY2hhbi1cdTAwM2VtYXhfcmVnX3Bvd2VyO1xuMjU5MTpcdH1cbjI1OTI6XHRcbjI1OTM6XHRzdGF0aWMgdm9pZCBoYW5kbGVfYmFuZF9jdXN0b20oc3RydWN0IHdpcGh5ICp3aXBoeSxcbjI1OTQ6XHRcdFx0XHQgICAgICAgc3RydWN0IGllZWU4MDIxMV9zdXBwb3J0ZWRfYmFuZCAqc2JhbmQsXG4yNTk1Olx0XHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluICpyZWdkKVxuMjU5NjpcdHtcbjI1OTc6XHRcdHVuc2lnbmVkIGludCBpO1xuMjU5ODpcdFxuMjU5OTpcdFx0aWYgKCFzYmFuZClcbjI2MDA6XHRcdFx0cmV0dXJuO1xuMjYwMTpcdFxuMjYwMjpcdFx0LypcbjI2MDM6XHRcdCAqIFdlIGN1cnJlbnRseSBhc3N1bWUgdGhhdCB5b3UgYWx3YXlzIHdhbnQgYXQgbGVhc3QgMjAgTUh6LFxuMjYwNDpcdFx0ICogb3RoZXJ3aXNlIGNoYW5uZWwgMTIgbWlnaHQgZ2V0IGVuYWJsZWQgaWYgdGhpcyBydWxlIGlzXG4yNjA1Olx0XHQgKiBjb21wYXRpYmxlIHRvIFVTLCB3aGljaCBwZXJtaXRzIDI0MDIgLSAyNDcyIE1Iei5cbjI2MDY6XHRcdCAqL1xuMjYwNzpcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2Mgc2JhbmQtXHUwMDNlbl9jaGFubmVsczsgaSYjNDM7JiM0MzspXG4yNjA4Olx0XHRcdGhhbmRsZV9jaGFubmVsX2N1c3RvbSh3aXBoeSwgXHUwMDI2c2JhbmQtXHUwMDNlY2hhbm5lbHNbaV0sIHJlZ2QsXG4yNjA5Olx0XHRcdFx0XHQgICAgICBNSFpfVE9fS0haKDIwKSk7XG4yNjEwOlx0fVxuMjYxMTpcdFxuMjYxMjpcdC8qIFVzZWQgYnkgZHJpdmVycyBwcmlvciB0byB3aXBoeSByZWdpc3RyYXRpb24gKi9cbjI2MTM6XHR2b2lkIHdpcGh5X2FwcGx5X2N1c3RvbV9yZWd1bGF0b3J5KHN0cnVjdCB3aXBoeSAqd2lwaHksXG4yNjE0Olx0XHRcdFx0XHQgICBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiAqcmVnZClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTE6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDI3NjAKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAxMjQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgRmVhc2liaWxpdHkgQW5hbHlzaXMgZm9yIFJlZ3VsYXRvcnkgVGFibGUgTW9kaWZpY2F0aW9ucyBpbiBhdGgvcmVnZC5jKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBuZWVkIHRvIGRldGVybWluZSBpZiBpdCYjMzk7cyB3b3J0aCBmdXp6aW5nLiBJbml0aWFsbHksIEkgd2FzIHRoaW5raW5nIGFib3V0IHRoZSBVU0Igd2lyZWxlc3MgZHJpdmVycyBgY2FybDkxNzBgIG9yIGBhdGg5a19odGNgLiAgSSBrbm93IHN5emthbGxlciBjYW4gZW11bGF0ZSB0aGVzZSB2aWEgVVNCIFJhdyBHYWRnZXQuICBJJiMzOTt2ZSBnb3QgdG8gY2hlY2ssIHRob3VnaCwgaWYgdGhlcmUgYXJlIGFueSBvdGhlciB2aXJ0dWFsIGJ1c2VzIG9yIGltcGxlbWVudGF0aW9ucyB1c2luZyB0aGUgYGF0aGAgZHJpdmVycyBiZXNpZGVzIHRob3NlLiBOb3BlLCBubyBgbWFjODAyMTFfaHdzaW1gIHVzZS4KClJpZ2h0LCBiYWNrIHRvIHRoZSBjb3JlIHF1ZXN0aW9uOiBjYW4gc3l6a2FsbGVyJiMzOTtzIFVTQiBmdXp6aW5nIGV2ZW4gdG91Y2ggdGhlIGNvZGUgaW4gcXVlc3Rpb24/IFllcywgaXQgYWJzb2x1dGVseSBjYW4uIFN5emthbGxlciBzdXBwb3J0cyBVU0IgZGV2aWNlIHByb2JpbmcgYW5kIGZ1enppbmcsIHRhcmdldGluZyB3aXJlbGVzcyBkcml2ZXJzIGxpa2UgYGF0aDlrX2h0Y2AsIGBjYXJsOTE3MGAsIGFuZCBvdGhlcnMuCgpCdXQgaXMgdGhpcyBqdXN0IGEgcmVndWxhdG9yeSB0YWJsZSBjaGFuZ2U/ICBUaW1lIHRvIHJldmlzaXQgdGhlIGZ1enppbmcgdHJpYWdlIHBoaWxvc29waHkuICBSZWFjaGFiaWxpdHkgaXMga2V5LiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgY29kZSBpcyAqcmVhY2hhYmxlKiBpbiBhIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiAgSXQmIzM5O3Mgbm90IGVub3VnaCBpZiBpdCYjMzk7cyBnb3QgbmV3IGFzc2VydGlvbnMgb3IgcmVmYWN0b3JlZCBjb2RlIHRoYXQmIzM5O3Mgbm90IHJlYWNoYWJsZS4gIAoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gSXMgdGhlIG1vZGlmaWVkIGNvZGUgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmNgIHJlYWNoYWJsZT8gWWVzISBUaGUgYGF0aC9gIGNvZGUgaXMgdXNlZCBieSBVU0Igd2lyZWxlc3MgZHJpdmVycyBgY2FybDkxNzBgIGFuZCBgYXRoOWtfaHRjYC4gV2hlbiB0aGVzZSBkZXZpY2VzIGFyZSBjb25uZWN0ZWQgKG9yIGVtdWxhdGVkIHdpdGggVVNCIHJhdyBnYWRnZXQpLCB0aGUgcHJvYmUgcGF0aHMsIHN0YXJ0aW5nIHdpdGggYGNhcmw5MTcwX3JlZ2lzdGVyYCAtJmd0OyBgYXRoX3JlZ2RfaW5pdGAgb3IgYGF0aDlrX2h0Y19wcm9iZV9kZXZpY2VgIC0mZ3Q7IGBhdGg5a19pbml0X2RldmljZWAgLSZndDsgYGF0aF9yZWdkX2luaXRgLCBhcmUgcmVsZXZhbnQuIEltcG9ydGFudGx5LCBgYXRoX3JlZ2RfaW5pdGAgbGVhZHMgdG8gYGF0aF9yZWdkX2luaXRfd2lwaHlgLCB3aGljaCBhY2Nlc3NlcyB0aGUgbW9kaWZpZWQgcmVndWxhdG9yeSBkb21haW4gZGF0YSBzdHJ1Y3R1cmVzLiBUaGUgY2hhbmdlcyBtb2RpZnkgYEFUSF81R0haXzUxNTBfNTM1MGAgYW5kIHRoZSBhc3NvY2lhdGVkIGBuX3JlZ19ydWxlc2AuIEFsc28sIHRoZXJlIGFyZSBgcmVnX2NvcHlfcmVnZGAgYW5kIGB3aXBoeV9hcHBseV9jdXN0b21fcmVndWxhdG9yeWAgaW4gbWFjODAyMTEvY2ZnODAyMTEsIHRoYXQgcHJvY2VzcyB0aGVzZSBkYXRhIHN0cnVjdHVyZXMgYW5kIGZyZXF1ZW5jeSBydWxlcy4gU28sIHllYWgsIHRoaXMgaXMgZGVmaW5pdGVseSByZWFjaGFibGUuCgpMZXQmIzM5O3MgcXVpY2tseSBjaGVjayB3aGljaCBmdW5jdGlvbnMgYXJlIHRoZSBlbnRyeXBvaW50cyBvciBjb250YWluIHRoZSBsb2dpYyB3aXRoaW4gYHJlZ2QuY2A6IGBhdGhfcmVnZF9pbml0YCwgYGF0aF9yZWdkX2luaXRfd2lwaHlgLCBgYXRoX3dvcmxkX3JlZ2RvbWFpbmAsIGBhdGhfZGVmYXVsdF93b3JsZF9yZWdkb21haW5gLCBhbmQgYGF0aF9yZWdfbm90aWZpZXJfYXBwbHlgLiBUaGVuLCBJJiMzOTtsbCByZXZpZXcgYW55IG90aGVyIGZ1bmN0aW9ucyB0aGF0IG1heSBiZSByZWxldmFudCB0byB0aGUgY2hhbmdlZCBjb2RlLgoKQ29uY2x1c2lvbjogIFRoaXMgaXMgYWJzb2x1dGVseSB3b3J0aCBmdXp6aW5nLiBJdCB0b3VjaGVzIHJlYWNoYWJsZSwgZXhlY3V0YWJsZSBjb2RlLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSByZWd1bGF0b3J5IGRvbWFpbiBkYXRhIHN0cnVjdHVyZXMgYW5kIGFzc29jaWF0ZWQgZnVuY3Rpb25zIGFjY2Vzc2VkIHRocm91Z2ggVVNCIHdpcmVsZXNzIGRyaXZlciBwcm9iZSBwYXRocy4gVGhlIGNoYW5nZXMgbW9kaWZ5IGNyaXRpY2FsIHJlZ3VsYXRvcnkgaW5mb3JtYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDExOjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15bYS16QS1aX10uKlxcKCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0yNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6MjY6c3RhdGljIGludCBfX2F0aF9yZWdkX2luaXQoc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0yNy1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jPTEwOD1zdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW4gYXRoX3dvcmxkX3JlZ2RvbV82N182OF82QV82QyA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTExNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6MTE4OnN0YXRpYyBib29sIGR5bmFtaWNfY291bnRyeV91c2VyX3Bvc3NpYmxlKHN0cnVjdCBhdGhfcmVndWxhdG9yeSAqcmVnKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0xMTkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMTg5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzoxOTA6c3RhdGljIGJvb2wgYXRoX3JlZ19keW5fY291bnRyeV91c2VyX2FsbG93KHN0cnVjdCBhdGhfcmVndWxhdG9yeSAqcmVnKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0xOTEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMTk4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzoxOTk6c3RhdGljIGlubGluZSBib29sIGlzX3d3cl9za3UodTE2IHJlZ2QpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTIwMC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0yMDUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjIwNjpzdGF0aWMgdTE2IGF0aF9yZWdkX2dldF9lZXByb21SRChzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjA3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTIxMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6MjExOmJvb2wgYXRoX2lzX3dvcmxkX3JlZ2Qoc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTIxMi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0yMTQtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzoyMTU6RVhQT1JUX1NZTUJPTChhdGhfaXNfd29ybGRfcmVnZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTIxNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6MjE3OnN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiAqYXRoX2RlZmF1bHRfd29ybGRfcmVnZG9tYWluKHZvaWQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTIxOC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYz0yMjM9c3RhdGljIGNvbnN0IHN0cnVjdFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzoyMjQ6aWVlZTgwMjExX3JlZ2RvbWFpbiAqYXRoX3dvcmxkX3JlZ2RvbWFpbihzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjI1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTI0OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6MjUwOmJvb2wgYXRoX2lzXzQ5Z2h6X2FsbG93ZWQodTE2IHJlZ2RvbWFpbilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjUxLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTI1NC19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjI1NTpFWFBPUlRfU1lNQk9MKGF0aF9pc180OWdoel9hbGxvd2VkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjU2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0yNTctLyogRnJlcXVlbmN5IGlzIG9uZSB3aGVyZSByYWRhciBkZXRlY3Rpb24gaXMgcmVxdWlyZWQgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6MjU4OnN0YXRpYyBib29sIGF0aF9pc19yYWRhcl9mcmVxKHUxNiBjZW50ZXJfZnJlcSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjU5LVx0XHRcdCAgICAgIHN0cnVjdCBhdGhfcmVndWxhdG9yeSAqcmVnKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjY2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzoyNjc6c3RhdGljIHZvaWQgYXRoX2ZvcmNlX2NsZWFyX25vX2lyX2NoYW4oc3RydWN0IHdpcGh5ICp3aXBoeSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjY4LVx0XHRcdFx0ICAgICAgIHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2gpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0yODAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjI4MTpzdGF0aWMgdm9pZCBhdGhfZm9yY2VfY2xlYXJfbm9faXJfZnJlcShzdHJ1Y3Qgd2lwaHkgKndpcGh5LCB1MTYgY2VudGVyX2ZyZXEpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTI4Mi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0yOTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjI5MjpzdGF0aWMgdm9pZCBhdGhfZm9yY2Vfbm9faXJfY2hhbihzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0yOTMte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjk2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzoyOTc6c3RhdGljIHZvaWQgYXRoX2ZvcmNlX25vX2lyX2ZyZXEoc3RydWN0IHdpcGh5ICp3aXBoeSwgdTE2IGNlbnRlcl9mcmVxKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0yOTgte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM9MzA4PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjMwOTpfX2F0aF9yZWdfYXBwbHlfYmVhY29uaW5nX2ZsYWdzKHN0cnVjdCB3aXBoeSAqd2lwaHksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTMxMC1cdFx0XHRcdHN0cnVjdCBhdGhfcmVndWxhdG9yeSAqcmVnLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM9MzM5PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjM0MDphdGhfcmVnX2FwcGx5X2JlYWNvbmluZ19mbGFncyhzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0zNDEtXHRcdFx0ICAgICAgc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYz0zNzY9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6Mzc3OmF0aF9yZWdfYXBwbHlfaXJfZmxhZ3Moc3RydWN0IHdpcGh5ICp3aXBoeSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMzc4LVx0XHQgICAgICAgc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy00MDQtLyogQWx3YXlzIGFwcGx5IFJhZGFyL0RGUyBydWxlcyBvbiBmcmVxIHJhbmdlIDU1MDAgTUh6IC0gNTcwMCBNSHogKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NDA1OnN0YXRpYyB2b2lkIGF0aF9yZWdfYXBwbHlfcmFkYXJfZmxhZ3Moc3RydWN0IHdpcGh5ICp3aXBoeSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNDA2LVx0XHRcdFx0ICAgICAgc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy00MzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjQzNzpzdGF0aWMgdm9pZCBhdGhfcmVnX2FwcGx5X3dvcmxkX2ZsYWdzKHN0cnVjdCB3aXBoeSAqd2lwaHksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTQzOC1cdFx0XHRcdCAgICAgIGVudW0gbmw4MDIxMV9yZWdfaW5pdGlhdG9yIGluaXRpYXRvcixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTQ1OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NDU5OnUxNiBhdGhfcmVnZF9maW5kX2NvdW50cnlfYnlfbmFtZShjaGFyICphbHBoYTIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTQ2MC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy00NjktfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo0NzA6RVhQT1JUX1NZTUJPTChhdGhfcmVnZF9maW5kX2NvdW50cnlfYnlfbmFtZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTQ3MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NDcyOnN0YXRpYyBpbnQgX19hdGhfcmVnX2R5bl9jb3VudHJ5KHN0cnVjdCB3aXBoeSAqd2lwaHksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTQ3My1cdFx0XHRcdCBzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTQ5NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NDk2OnN0YXRpYyB2b2lkIGF0aF9yZWdfZHluX2NvdW50cnkoc3RydWN0IHdpcGh5ICp3aXBoeSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNDk3LVx0XHRcdFx0c3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy01MDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjUwOTp2b2lkIGF0aF9yZWdfbm90aWZpZXJfYXBwbHkoc3RydWN0IHdpcGh5ICp3aXBoeSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNTEwLVx0XHRcdCAgICBzdHJ1Y3QgcmVndWxhdG9yeV9yZXF1ZXN0ICpyZXF1ZXN0LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNTQ5LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NTUwOkVYUE9SVF9TWU1CT0woYXRoX3JlZ19ub3RpZmllcl9hcHBseSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTU1MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NTUyOnN0YXRpYyBib29sIGF0aF9yZWdkX2lzX2VlcHJvbV92YWxpZChzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNTUzLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jPTU4MT1zdGF0aWMgc3RydWN0IGNvdW50cnlfY29kZV90b19lbnVtX3JkKlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo1ODI6YXRoX3JlZ2RfZmluZF9jb3VudHJ5KHUxNiBjb3VudHJ5Q29kZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNTgzLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jPTU5ND1zdGF0aWMgc3RydWN0IGNvdW50cnlfY29kZV90b19lbnVtX3JkKlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo1OTU6YXRoX3JlZ2RfZmluZF9jb3VudHJ5X2J5X3JkKGludCByZWdkbW4pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTU5Ni17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy02MDYtLyogUmV0dXJucyB0aGUgbWFwIG9mIHRoZSBFRVBST00gc2V0IFJEIHRvIGEgY291bnRyeSBjb2RlICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjYwNzpzdGF0aWMgdTE2IGF0aF9yZWdkX2dldF9kZWZhdWx0X2NvdW50cnkodTE2IHJkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy02MDgte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM9NjIxPXN0YXRpYyBzdHJ1Y3QgcmVnX2Rtbl9wYWlyX21hcHBpbmcqXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjYyMjphdGhfZ2V0X3JlZ3BhaXIoaW50IHJlZ2RtbilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNjIzLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jPTYzNT1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjYzNjphdGhfcmVnZF9pbml0X3dpcGh5KHN0cnVjdCBhdGhfcmVndWxhdG9yeSAqcmVnLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy02MzctXHRcdCAgICBzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNjc1LSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo2NzY6c3RhdGljIHZvaWQgYXRoX3JlZ2Rfc2FuaXRpemUoc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTY3Ny17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy02ODMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjY4NDpzdGF0aWMgaW50IF9fYXRoX3JlZ2RfaW5pdChzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNjg1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jPTc1OD1pbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NzU5OmF0aF9yZWdkX2luaXQoc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTc2MC1cdCAgICAgIHN0cnVjdCB3aXBoeSAqd2lwaHksXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy03NzktfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo3ODA6RVhQT1JUX1NZTUJPTChhdGhfcmVnZF9pbml0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNzgxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo3ODI6dTMyIGF0aF9yZWdkX2dldF9iYW5kX2N0bChzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNzgzLVx0XHRcdCAgZW51bSBubDgwMjExX2JhbmQgYmFuZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTgxMi19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjgxMzpFWFBPUlRfU1lNQk9MKGF0aF9yZWdkX2dldF9iYW5kX2N0bCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDExOjQ0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ3Nzc5CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMjE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkNvbmZpZ3VyaW5nIHRoZSBXaXJlbGVzcyBEcml2ZXIqKgoKT2theSwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O3ZlIGdvdCB0aGUgY29ycmVjdCBjb25maWd1cmF0aW9ucyBpbiBwbGFjZSBmb3IgdGhpcyB3aXJlbGVzcyBkcml2ZXIuIEZpcnN0LCBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgSSYjMzk7dmUgZW5hYmxlZCB0aGUgY29yZSBjb21wb25lbnRzOiBgQVRIX0NPTU1PTmAsIGBBVEg5S19IVENgIChvciBwb3RlbnRpYWxseSBvbmUgb2YgdGhlIGFsdGVybmF0aXZlcyBsaWtlIGBDQVJMOTE3MGAsIGBBVEg5S2AsIG9yIGBBVEgxMEtgIGRlcGVuZGluZyBvbiB0aGUgZXhhY3QgaGFyZHdhcmUpLCBgTUFDODAyMTFgLCBgQ0ZHODAyMTFgLCBhbmQgYFVTQmAuIEl0JiMzOTtzIGEgc3RhbmRhcmQgc2V0IGZvciBhIHJlYXNvbiwgYnV0IGl0JiMzOTtzIGFsd2F5cyBnb29kIHRvIGRvdWJsZS1jaGVjay4KCk5vdywgbGV0JiMzOTtzIGRpZyBpbnRvIHRoZSBkZXBlbmRlbmNpZXMuIFNwZWNpZmljYWxseSwgSSYjMzk7bGwgc3RhcnQgd2l0aCBgQVRIX0NPTU1PTmAuIEkga25vdyB0aGF0IGBBVEhfQ09NTU9OYCBpcyBzZWxlY3RlZCBieSBzZXZlcmFsIG90aGVyIGNvbmZpZ3VyYXRpb25zIGxpa2UgYEFUSDlLX0NPTU1PTmAsIGBDQVJMOTE3MGAsIGFuZCBgQVRIMTBLYCwgd2hpY2ggbWFrZXMgc2Vuc2UuIEp1c3QgZ2xhbmNpbmcgYXQgdGhlIG9wdGlvbnMsIGBDQVJMOTE3MGAgZGVwZW5kcyBvbiBgVVNCYCBhbmQgYE1BQzgwMjExYCwgYW5kIGl0IHNlbGVjdHMgYm90aCBgQVRIX0NPTU1PTmAgYW5kIGBGV19MT0FERVJgLiBUaGF0JiMzOTtzIGltcG9ydGFudCB0byByZW1lbWJlci4gT24gdGhlIG90aGVyIGhhbmQsIGBBVEg5S19IVENgIGFsc28gcmVsaWVzIG9uIGBVU0JgIGFuZCBgTUFDODAyMTFgLCBhbmQgdGhlbiBpdCBzZWxlY3RzIGBBVEg5S19DT01NT05gLCB3aGljaCBpbiB0dXJuLCBzZWxlY3RzIGBBVEhfQ09NTU9OYC4gT2theSwgdGhhdCBtYWtlcyBpdCBjbGVhcmVyLiBJJiMzOTtsbCBtYWtlIHN1cmUgdG8gdmVyaWZ5IHdoYXQgZXhhY3RseSBgQVRIOUtfSFRDYCBkZXBlbmRzIG9uIGFuZCBzZWxlY3RzLiBBbHdheXMgZ29vZCB0byBoYXZlIGEgc29saWQgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhlc2UgZGVwZW5kZW5jaWVzIGNoYWluIHRvZ2V0aGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxMTo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTcwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDI1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxNzA6XHRcdCAgSWYgdW5zdXJlIHNheSBOLlxuIDE3MTpcdFxuIDE3MjpcdGNvbmZpZyBBVEg5S19IVENcbiAxNzM6XHRcdHRyaXN0YXRlIFwmIzM0O0F0aGVyb3MgSFRDIGJhc2VkIHdpcmVsZXNzIGNhcmRzIHN1cHBvcnRcJiMzNDtcbiAxNzQ6XHRcdGRlcGVuZHMgb24gVVNCIFx1MDAyNlx1MDAyNiBNQUM4MDIxMVxuIDE3NTpcdFx0c2VsZWN0IE1BQzgwMjExX0xFRFMgaWYgTEVEU19DTEFTUz15IHx8IExFRFNfQ0xBU1M9TUFDODAyMTFcbiAxNzY6XHRcdHNlbGVjdCBBVEg5S19IV1xuIDE3NzpcdFx0c2VsZWN0IEFUSDlLX0NPTU1PTlxuIDE3ODpcdFx0aGVscFxuIDE3OTpcdFx0ICBTdXBwb3J0IGZvciBBdGhlcm9zIEhUQyBiYXNlZCBjYXJkcy5cbiAxODA6XHRcdCAgQ2hpcHNldHMgc3VwcG9ydGVkOiBBUjkyNzFcbiAxODE6XHRcbiAxODI6XHRcdCAgRm9yIG1vcmUgaW5mb3JtYXRpb246XG4gMTgzOlx0XHQgIGh0dHBzOi8vd2lyZWxlc3Mud2lraS5rZXJuZWwub3JnL2VuL3VzZXJzL0RyaXZlcnMvYXRoOWtfaHRjXG4gMTg0Olx0XG4gMTg1Olx0XHQgIFRoZSBidWlsdCBtb2R1bGUgd2lsbCBiZSBhdGg5a19odGMuXG4gMTg2Olx0XG4gMTg3Olx0Y29uZmlnIEFUSDlLX0hUQ19ERUJVR0ZTXG4gMTg4Olx0XHRib29sIFwmIzM0O0F0aGVyb3MgYXRoOWtfaHRjIGRlYnVnZ2luZ1wmIzM0O1xuIDE4OTpcdFx0ZGVwZW5kcyBvbiBBVEg5S19IVEMgXHUwMDI2XHUwMDI2IERFQlVHX0ZTXG4gMTkwOlx0XHRzZWxlY3QgQVRIOUtfQ09NTU9OX0RFQlVHXG4gMTkxOlx0XHRoZWxwXG4gMTkyOlx0XHQgIFNheSBZLCBpZiB5b3UgbmVlZCBhY2Nlc3MgdG8gYXRoOWtfaHRjJiMzOTtzIHN0YXRpc3RpY3MuXG4gMTkzOlx0XHQgIEFzIHdlbGwgYXMgYWNjZXNzIHRvIHRoZSBGRlQvc3BlY3RyYWwgZGF0YS5cbiAxOTQ6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTE6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDg3ODAKCQkJCQkJCW91dHB1dDogMjQ1CgkJCQkJCQl0aG91Z2h0czogMzE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoRnV6emluZyBDb25maXJtYXRpb24qKgoKT2theSwgc28gdGhpcyBXb3J0aEZ1enppbmcgZmluZGluZyBjaGVja3Mgb3V0LiBUaGUgcGF0Y2ggaXMgZGVmaW5pdGVseSB0b3VjaGluZyByZWd1bGF0b3J5IGRlZmluaXRpb25zIHdpdGhpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuY2AuIFRoaXMgaXMgc2lnbmlmaWNhbnQgYmVjYXVzZSB0aG9zZSBkZWZpbml0aW9ucyBhcmUgY3JpdGljYWwgZm9yIEF0aGVyb3Mgd2lyZWxlc3MgZHJpdmVycywgYW5kIGNydWNpYWxseSwgdGhleSBpbmNsdWRlIFVTQi1hY2Nlc3NpYmxlIGRyaXZlcnMgbGlrZSBgYXRoOWtfaHRjYCBhbmQgYGNhcmw5MTcwYC4gV2UmIzM5O3JlIHVzaW5nIFVTQiBSYXcgR2FkZ2V0IGZvciBlbXVsYXRpb24gYW5kIGZ1enppbmcgd2l0aGluIGEgc3RhbmRhcmQgUUVNVSBzZXR1cCwgc28gdGhhdCYjMzk7cyBhIGtleSBwaWVjZSBvZiB0aGUgcHV6emxlLgoKVGhlIHJlYWwgY29ubmVjdGlvbiBoZXJlIGlzIGhvdyBgYXRoX3JlZ2RfaW5pdGAsIGBhdGhfcmVnZF9pbml0X3dpcGh5YCwgYGF0aF93b3JsZF9yZWdkb21haW5gLCBhbmQgYHdpcGh5X2FwcGx5X2N1c3RvbV9yZWd1bGF0b3J5YCBoYW5kbGUgdGhlIHBhcnNpbmcgYW5kIGFwcGxpY2F0aW9uIG9mIHRoZXNlIHJlZ3VsYXRvcnkgcnVsZXMuIFRoZXkmIzM5O3JlIGFsbCBpbnZvbHZlZCB3aGVuIGFuIEF0aGVyb3MgaW50ZXJmYWNlIGlzIGluaXRpYWxpemVkLCByZWdpc3RlcmVkLCBvciB3aGVuIGl0cyByZWd1bGF0b3J5IGRvbWFpbiBpcyBxdWVyaWVkIG9yIHVwZGF0ZWQuIFRob3NlIGZ1bmN0aW9ucyBhcmUgdGhlIGJyaWRnZSBpbnRvIHRoZSBrZXJuZWwmIzM5O3MgY2ZnODAyMTEvbWFjODAyMTEgc3RhdGUsIHdoaWNoIGlzIGV4YWN0bHkgd2hlcmUgd2UmIzM5O3JlIGxvb2tpbmcgdG8gZmluZCBidWdzLgoKTGV0JiMzOTtzIHF1aWNrbHkgY29uZmlybSB0aG9zZSBGb2N1c1N5bWJvbHMgYXJlIGNvcnJlY3QuIEkmIzM5O2xsIG1lbnRhbGx5IHJ1biB0aHJvdWdoOiBgYXRoX3JlZ2RfaW5pdGAsIGBhdGhfcmVnZF9pbml0X3dpcGh5YCwgYGF0aF93b3JsZF9yZWdkb21haW5gLCBgYXRoX2RlZmF1bHRfd29ybGRfcmVnZG9tYWluYCwgYW5kIGBhdGhfcmVnX25vdGlmaWVyX2FwcGx5YC4gWXVwLCB0aG9zZSBhcmUgYWxsIHJpZ2h0IG9uIHBvaW50LgoKRG91YmxlLWNoZWNraW5nIHRoZSBFbmFibGVDb25maWdzLCBqdXN0IHRvIGJlIHN1cmU6IGBBVEhfQ09NTU9OYCwgYEFUSDlLX0hUQ2AsIGBDQVJMOTE3MGAsIGBDRkc4MDIxMWAsIGBNQUM4MDIxMWAsIGFuZCBgVVNCYCDigJMgYWxsIG9mIHRob3NlIG1ha2UgcGVyZmVjdCBzZW5zZSBpbiB0aGlzIGNvbnRleHQuCgpBbHJpZ2h0LCBJJiMzOTttIGNvbmZpZGVudCBpbiB0aGUgYW5hbHlzaXMuIFRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLiBUaGlzIGlzIGEgc29saWQgZmluZGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTE6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FUSF9DT01NT04mIzM0OywKICAgICYjMzQ7QVRIOUtfSFRDJiMzNDssCiAgICAmIzM0O0NBUkw5MTcwJiMzNDssCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2F0aF9yZWdkX2luaXQmIzM0OywKICAgICYjMzQ7YXRoX3JlZ2RfaW5pdF93aXBoeSYjMzQ7LAogICAgJiMzNDthdGhfd29ybGRfcmVnZG9tYWluJiMzNDssCiAgICAmIzM0O2F0aF9kZWZhdWx0X3dvcmxkX3JlZ2RvbWFpbiYjMzQ7LAogICAgJiMzNDthdGhfcmVnX25vdGlmaWVyX2FwcGx5JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHNwbGl0cyB0aGUgNUdIeiA1MTUwLTUzNTAgTUh6IHJlZ3VsYXRvcnkgcnVsZSBpbnRvIHNlcGFyYXRlIDUxNTAtNTI0MCBNSHogYW5kIDUyNjAtNTM1MCBNSHogcnVsZXMgYW5kIHVwZGF0ZXMgcnVsZSBjb3VudHMgYWNyb3NzIEF0aGVyb3Mgd29ybGQgcmVndWxhdG9yeSBkb21haW4gZGVmaW5pdGlvbnMgaW4gZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy4gVGhpcyBjb2RlIGlzIGV4ZWN1dGVkIGR1cmluZyBpbml0aWFsaXphdGlvbiBhbmQgcmVndWxhdG9yeSB1cGRhdGVzIG9mIEF0aGVyb3Mgd2lyZWxlc3MgZHJpdmVycywgaW5jbHVkaW5nIFVTQi1kcml2ZW4gZGV2aWNlcyAoc3VjaCBhcyBhdGg5a19odGMgYW5kIGNhcmw5MTcwKSB3aGljaCBhcmUgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgVVNCIGVtdWxhdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QVRIX0NPTU1PTiYjMzQ7LAogICAgJiMzNDtBVEg5S19IVEMmIzM0OywKICAgICYjMzQ7Q0FSTDkxNzAmIzM0OywKICAgICYjMzQ7Q0ZHODAyMTEmIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7VVNCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YXRoX3JlZ2RfaW5pdCYjMzQ7LAogICAgJiMzNDthdGhfcmVnZF9pbml0X3dpcGh5JiMzNDssCiAgICAmIzM0O2F0aF93b3JsZF9yZWdkb21haW4mIzM0OywKICAgICYjMzQ7YXRoX2RlZmF1bHRfd29ybGRfcmVnZG9tYWluJiMzNDssCiAgICAmIzM0O2F0aF9yZWdfbm90aWZpZXJfYXBwbHkmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggc3BsaXRzIHRoZSA1R0h6IDUxNTAtNTM1MCBNSHogcmVndWxhdG9yeSBydWxlIGludG8gc2VwYXJhdGUgNTE1MC01MjQwIE1IeiBhbmQgNTI2MC01MzUwIE1IeiBydWxlcyBhbmQgdXBkYXRlcyBydWxlIGNvdW50cyBhY3Jvc3MgQXRoZXJvcyB3b3JsZCByZWd1bGF0b3J5IGRvbWFpbiBkZWZpbml0aW9ucyBpbiBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLiBUaGlzIGNvZGUgaXMgZXhlY3V0ZWQgZHVyaW5nIGluaXRpYWxpemF0aW9uIGFuZCByZWd1bGF0b3J5IHVwZGF0ZXMgb2YgQXRoZXJvcyB3aXJlbGVzcyBkcml2ZXJzLCBpbmNsdWRpbmcgVVNCLWRyaXZlbiBkZXZpY2VzIChzdWNoIGFzIGF0aDlrX2h0YyBhbmQgY2FybDkxNzApIHdoaWNoIGFyZSByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBVU0IgZW11bGF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQxLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxMTo0NDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDExOjQ0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgc3RhdGljIGNvbnN0YW50IHJlZ3VsYXRvcnkgZG9tYWluIGRlZmluaXRpb25zIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jYC4gU3BlY2lmaWNhbGx5LCBpdCBzcGxpdHMgdGhlIGBBVEhfNUdIWl81MTUwXzUzNTBgIG1hY3JvIGludG8gdHdvIHNlcGFyYXRlIHJlZ3VsYXRvcnkgcnVsZXMgKDUxNTAtNTI0MCBNSHogYW5kIDUyNjAtNTM1MCBNSHopIGFuZCBhZGp1c3RzIHRoZSBgbl9yZWdfcnVsZXNgIGZpZWxkIGluIHNldmVyYWwgc3RhdGljIGNvbnN0IGBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbmAgaW5zdGFuY2VzIGFjY29yZGluZ2x5LlxuXG5BbGwgYWZmZWN0ZWQgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBjb21waWxlLXRpbWUgY29uc3RhbnQgdGFibGVzIHdpdGggZnVsbHkgaW5pdGlhbGl6ZWQgZmllbGRzLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSBkeW5hbWljIG9yIHN0YWNrIGFsbG9jYXRpb25zLCBkb2VzIG5vdCBtb2RpZnkgYW55IGJ1ZmZlcnMgb3IgcGFkZGluZyBjb3BpZWQgdG8gdXNlcnNwYWNlLCBhbmQgaW50cm9kdWNlcyBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcy4gSWYgYW55IGFycmF5IGluZGV4aW5nIG9yIHJ1bGUgY291bnQgbWlzbWF0Y2hlcyB3ZXJlIHRvIG9jY3VyLCB0aGV5IHdvdWxkIGJlIGJvdW5kcyB2aW9sYXRpb25zIGRldGVjdGFibGUgYnkgc3RhbmRhcmQgS0FTQU4uIFRoZXJlZm9yZSwgdGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIHRoYXQgd2FycmFudCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24uJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAxMjljYjE1OWZiOWM1Y2Q0OGVhZDQ3Y2M3MDRmNzk4NmVkY2E0MDkyCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBTZXAgNSAxMTo0Mjo0NSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jCmluZGV4IGYxNWU3YmQ2OTBiNWIuLmIxMjlhZjBlZWQ4ODUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYwpAQCAtNDMsNyAmIzQzOzQzLDggQEAgc3RhdGljIGludCBfX2F0aF9yZWdkX2luaXQoc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcpOwogCQkJCQkgTkw4MDIxMV9SUkZfTk9fT0ZETSkKIAogLyogV2UgYWxsb3cgSUJTUyBvbiB0aGVzZSBvbiBhIGNhc2UgYnkgY2FzZSBiYXNpcyBieSByZWd1bGF0b3J5IGRvbWFpbiAqLwotI2RlZmluZSBBVEhfNUdIWl81MTUwXzUzNTAJUkVHX1JVTEUoNTE1MC0xMCwgNTM1MCYjNDM7MTAsIDgwLCAwLCAzMCxcCiYjNDM7I2RlZmluZSBBVEhfNUdIWl81MTUwXzUzNTAJUkVHX1JVTEUoNTE1MC0xMCwgNTI0MCYjNDM7MTAsIDgwLCAwLCAzMCwgMCksXAomIzQzOwkJCQlSRUdfUlVMRSg1MjYwLTEwLCA1MzUwJiM0MzsxMCwgODAsIDAsIDMwLFwKIAkJCQkJIE5MODAyMTFfUlJGX05PX0lSKQogI2RlZmluZSBBVEhfNUdIWl81NDcwXzU4NTAJUkVHX1JVTEUoNTQ3MC0xMCwgNTg1MCYjNDM7MTAsIDgwLCAwLCAzMCxcCiAJCQkJCSBOTDgwMjExX1JSRl9OT19JUikKQEAgLTY0LDcgJiM0Mzs2NSw3IEBAIHN0YXRpYyBpbnQgX19hdGhfcmVnZF9pbml0KHN0cnVjdCBhdGhfcmVndWxhdG9yeSAqcmVnKTsKIC8qIENhbiBiZSB1c2VkIGZvcjoKICAqIDB4NjAsIDB4NjEsIDB4NjIgKi8KIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiBhdGhfd29ybGRfcmVnZG9tXzYwXzYxXzYyID0gewotCS5uX3JlZ19ydWxlcyA9IDUsCiYjNDM7CS5uX3JlZ19ydWxlcyA9IDYsCiAJLmFscGhhMiA9ICAmIzM0Ozk5JiMzNDssCiAJLnJlZ19ydWxlcyA9IHsKIAkJQVRIXzJHSFpfQUxMLApAQCAtNzQsNyAmIzQzOzc1LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluIGF0aF93b3JsZF9yZWdkb21fNjBfNjFfNjIgPSB7CiAKIC8qIENhbiBiZSB1c2VkIGJ5IDB4NjMgYW5kIDB4NjUgKi8KIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiBhdGhfd29ybGRfcmVnZG9tXzYzXzY1ID0gewotCS5uX3JlZ19ydWxlcyA9IDQsCiYjNDM7CS5uX3JlZ19ydWxlcyA9IDUsCiAJLmFscGhhMiA9ICAmIzM0Ozk5JiMzNDssCiAJLnJlZ19ydWxlcyA9IHsKIAkJQVRIXzJHSFpfQ0gwMV8xMSwKQEAgLTg1LDcgJiM0Mzs4Niw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiBhdGhfd29ybGRfcmVnZG9tXzYzXzY1ID0gewogCiAvKiBDYW4gYmUgdXNlZCBieSAweDY0IG9ubHkgKi8KIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiBhdGhfd29ybGRfcmVnZG9tXzY0ID0gewotCS5uX3JlZ19ydWxlcyA9IDMsCiYjNDM7CS5uX3JlZ19ydWxlcyA9IDQsCiAJLmFscGhhMiA9ICAmIzM0Ozk5JiMzNDssCiAJLnJlZ19ydWxlcyA9IHsKIAkJQVRIXzJHSFpfQ0gwMV8xMSwKQEAgLTk1LDcgJiM0Mzs5Niw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiBhdGhfd29ybGRfcmVnZG9tXzY0ID0gewogCiAvKiBDYW4gYmUgdXNlZCBieSAweDY2IGFuZCAweDY5ICovCiBzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW4gYXRoX3dvcmxkX3JlZ2RvbV82Nl82OSA9IHsKLQkubl9yZWdfcnVsZXMgPSAzLAomIzQzOwkubl9yZWdfcnVsZXMgPSA0LAogCS5hbHBoYTIgPSAgJiMzNDs5OSYjMzQ7LAogCS5yZWdfcnVsZXMgPSB7CiAJCUFUSF8yR0haX0NIMDFfMTEsCkBAIC0xMDUsNyAmIzQzOzEwNiw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiBhdGhfd29ybGRfcmVnZG9tXzY2XzY5ID0gewogCiAvKiBDYW4gYmUgdXNlZCBieSAweDY3LCAweDY4LCAweDZBIGFuZCAweDZDICovCiBzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW4gYXRoX3dvcmxkX3JlZ2RvbV82N182OF82QV82QyA9IHsKLQkubl9yZWdfcnVsZXMgPSA0LAomIzQzOwkubl9yZWdfcnVsZXMgPSA1LAogCS5hbHBoYTIgPSAgJiMzNDs5OSYjMzQ7LAogCS5yZWdfcnVsZXMgPSB7CiAJCUFUSF8yR0haX0NIMDFfMTEsCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxMTo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDIxCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNDcwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKktNU0FOIEZ1enppbmcgRXZhbHVhdGlvbioqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYXNzZXNzIHRoaXMgcGF0Y2ggYW5kIGZpZ3VyZSBvdXQgdGhlIGZ1enppbmcgc3RyYXRlZ3kuIFRoZSBjb3JlIHF1ZXN0aW9uIGlzOiBkb2VzIHRoaXMgY2hhbmdlIHdhcnJhbnQgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uLCBvciBjYW4gd2Ugc3RpY2sgd2l0aCBzdGFuZGFyZCBLQVNBTj8KCkZpcnN0LCBJIG5lZWQgdG8gaW5zcGVjdCB0aGUgZGlmZi4gSXQgbG9va3MgbGlrZSB3ZSYjMzk7cmUgdG91Y2hpbmcgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmNgLiBSaWdodCwgc28gdGhpcyBpcyBhYm91dCByZWd1bGF0b3J5IGRvbWFpbiBkZWZpbml0aW9ucyBpbiB0aGUgYXRoIHdpcmVsZXNzIGRyaXZlci4gT2theSwgdGhlIGNvZGUgc25pcHBldCBzaG93cyB0aGF0IGBBVEhfNUdIWl81MTUwXzUzNTBgIGhhcyBiZWVuIGNoYW5nZWQuIEl0IHVzZWQgdG8gYmUgYSBzaW5nbGUgYFJFR19SVUxFYCBtYWNybyBkZWZpbml0aW9uLCBidXQgbm93IGl0JiMzOTtzIHR3byBzZXBhcmF0ZSBvbmVzLiBBbmQsIGl0IGFwcGVhcnMgdGhlIGAubl9yZWdfcnVsZXNgIGZpZWxkcyBoYXZlIGJlZW4gdXBkYXRlZCBpbiBzZXZlcmFsIGBzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW5gIGRlZmluaXRpb25zLiBTcGVjaWZpY2FsbHkgdGhlIGNvdW50cyBvZiB0aGUgcmVndWxhdG9yeSBydWxlcyB3ZXJlIGluY3JlYXNlZC4KClRoaXMgc3Ryb25nbHkgc3VnZ2VzdHMgY2hhbmdlcyB0byBob3cgdGhlc2UgcmVndWxhdG9yeSBydWxlcyBhcmUgZGVmaW5lZCBhbmQgaGFuZGxlZC4gIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgYFJFR19SVUxFYCBleHBhbmRzIHRvLCBhbmQgd2hhdCYjMzk7cyBpbiBgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW5gLiBNb3JlIGNvbnRleHQgaXMgbmVlZGVkIGhlcmUuIEFyZSB0aGVzZSBjYWxjdWxhdGlvbnMgdXNlZCBpbiB0aGUgZHJpdmVyLCBhbmQgYXJlIHRoZXkgZGlyZWN0bHkgZXhwb3NlZCB0byB1c2VybGFuZD8gSWYgc28sIHRoaXMgY291bGQgcG90ZW50aWFsbHkgbGVhZCB0byBtZW1vcnkgY29ycnVwdGlvbi4KClRpbWUgdG8gbG9vayBhdCB0aGUgZGVmaW5pdGlvbnMgb2YgYFJFR19SVUxFYCBhbmQgYHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluYCB3aXRoaW4gdGhhdCBmaWxlLCBhbmQgdGhlbiBob3cgdGhleSYjMzk7cmUgKnVzZWQqLiBJJiMzOTtsbCBuZWVkIHRvIHVzZSBgcmVhZC1maWxlYCBvciBgZ3JlcHBlcmAgdG8gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiB0aGUgaW1wbGljYXRpb25zIGhlcmUuIFRoZW4sIEkgY2FuIG1ha2UgYSBtb3JlIGluZm9ybWVkIGRlY2lzaW9uIGFib3V0IHRoZSBmdXp6aW5nIHJlcXVpcmVtZW50cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTE6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7UkVHX1JVTEUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM9MjY9c3RhdGljIGludCBfX2F0aF9yZWdkX2luaXQoc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMzUtLyogT25seSB0aGVzZSBjaGFubmVscyBhbGwgYWxsb3cgYWN0aXZlIHNjYW4gb24gYWxsIHdvcmxkIHJlZ3VsYXRvcnkgZG9tYWlucyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzozNjojZGVmaW5lIEFUSF8yR0haX0NIMDFfMTFcdFJFR19SVUxFKDI0MTItMTAsIDI0NjImIzQzOzEwLCA0MCwgMCwgMjAsIDApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTM3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0zOC0vKiBXZSBlbmFibGUgYWN0aXZlIHNjYW4gb24gdGhlc2UgYSBjYXNlIGJ5IGNhc2UgYmFzaXMgYnkgcmVndWxhdG9yeSBkb21haW4gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6Mzk6I2RlZmluZSBBVEhfMkdIWl9DSDEyXzEzXHRSRUdfUlVMRSgyNDY3LTEwLCAyNDcyJiM0MzsxMCwgNDAsIDAsIDIwLFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTQwLVx0XHRcdFx0XHQgTkw4MDIxMV9SUkZfTk9fSVIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjQxOiNkZWZpbmUgQVRIXzJHSFpfQ0gxNFx0XHRSRUdfUlVMRSgyNDg0LTEwLCAyNDg0JiM0MzsxMCwgNDAsIDAsIDIwLFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTQyLVx0XHRcdFx0XHQgTkw4MDIxMV9SUkZfTk9fSVIgfCBcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNDUtLyogV2UgYWxsb3cgSUJTUyBvbiB0aGVzZSBvbiBhIGNhc2UgYnkgY2FzZSBiYXNpcyBieSByZWd1bGF0b3J5IGRvbWFpbiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo0NjojZGVmaW5lIEFUSF81R0haXzUxNTBfNTM1MFx0UkVHX1JVTEUoNTE1MC0xMCwgNTI0MCYjNDM7MTAsIDgwLCAwLCAzMCwgMCksXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NDc6XHRcdFx0XHRSRUdfUlVMRSg1MjYwLTEwLCA1MzUwJiM0MzsxMCwgODAsIDAsIDMwLFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTQ4LVx0XHRcdFx0XHQgTkw4MDIxMV9SUkZfTk9fSVIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjQ5OiNkZWZpbmUgQVRIXzVHSFpfNTQ3MF81ODUwXHRSRUdfUlVMRSg1NDcwLTEwLCA1ODUwJiM0MzsxMCwgODAsIDAsIDMwLFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTUwLVx0XHRcdFx0XHQgTkw4MDIxMV9SUkZfTk9fSVIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjUxOiNkZWZpbmUgQVRIXzVHSFpfNTcyNV81ODUwXHRSRUdfUlVMRSg1NzI1LTEwLCA1ODUwJiM0MzsxMCwgODAsIDAsIDMwLFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTUyLVx0XHRcdFx0XHQgTkw4MDIxMV9SUkZfTk9fSVIpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDUvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDExOjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ2NTAKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBSZWd1bGF0b3J5IERldGFpbHMqKgoKQWxyaWdodCwgSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiBob3cgdGhlc2UgcmVndWxhdG9yeSBydWxlcyBhcmUgc3RydWN0dXJlZC4gVGhlIGZpcnN0IHBsYWNlIEkmIzM5O20gZ29pbmcgdG8gbG9vayBpcyBgaW5jbHVkZS9uZXQvcmVndWxhdG9yeS5oYC4gVGhhdCYjMzk7cyB3aGVyZSBJJiMzOTtkIGV4cGVjdCB0byBmaW5kIHRoZSBkZWZpbml0aW9ucyBmb3IgYFJFR19SVUxFYCBhbmQgYHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluYC4gSXQmIzM5O3MgYSBwcmV0dHkgc3RhbmRhcmQgbG9jYXRpb24gZm9yIHRoYXQga2luZCBvZiBjb3JlIHdpcmVsZXNzIHJlZ3VsYXRvcnkgZGF0YS4gSG9wZWZ1bGx5LCBpdCYjMzk7cyBhbGwgY2xlYXJseSBsYWlkIG91dCBpbiB0aGVyZSwgYW5kIEkgY2FuIHF1aWNrbHkgZ2V0IGEgZ29vZCB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzdHJ1Y3R1cmUgYW5kIGhvdyB0aGUgZGlmZmVyZW50IGVsZW1lbnRzIHJlbGF0ZSB0byBlYWNoIG90aGVyLiBJJiMzOTtsbCBwcm9iYWJseSBiZSBjaGVja2luZyB0aGluZ3MgbGlrZSBkYXRhIHR5cGVzLCBhbnkgZW1iZWRkZWQgc3RydWN0dXJlcywgYW5kIGhvdyB0aGUgcnVsZXMgYXJlIGFjdHVhbGx5IHN0b3JlZCBhbmQgYWNjZXNzZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDYvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDExOjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0OyNkZWZpbmUgUkVHX1JVTEUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuaD0yOTAwPXN0cnVjdCByeF9yZW9yZGVyX3F1ZXVlX3JlbW92ZV9wYXJhbXMge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmgtMjkxNi0vKiBGcmVxIHVuaXRzIGluIE1IeiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuaDoyOTE3OiNkZWZpbmUgUkVHX1JVTEVfU1RBUlRfRlJFUVx0XHRcdDB4MDAwMGZmZmZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmg6MjkxODojZGVmaW5lIFJFR19SVUxFX0VORF9GUkVRXHRcdFx0MHhmZmZmMDAwMFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuaDoyOTE5OiNkZWZpbmUgUkVHX1JVTEVfRkxBR1NcdFx0XHRcdDB4MDAwMGZmZmZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmg6MjkyMDojZGVmaW5lIFJFR19SVUxFX01BWF9CV1x0XHRcdFx0MHgwMDAwZmZmZlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuaDoyOTIxOiNkZWZpbmUgUkVHX1JVTEVfUkVHX1BXUlx0XHRcdDB4MDBmZjAwMDBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmg6MjkyMjojZGVmaW5lIFJFR19SVUxFX0FOVF9HQUlOXHRcdFx0MHhmZjAwMDAwMFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuaDoyOTIzOiNkZWZpbmUgUkVHX1JVTEVfUFNEX0lORk9cdFx0XHRCSVQoMClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmg6MjkyNDojZGVmaW5lIFJFR19SVUxFX1BTRF9FSVJQXHRcdFx0MHhmZjAwMDBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmgtMjkyNS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5oPTMyMTI9c3RydWN0IGF0aDEya193bWlfcnhfcmVvcmRlcl9xdWV1ZV9yZW1vdmVfYXJnIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5oLTMyMjgtLyogRnJlcSB1bml0cyBpbiBNSHogKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmg6MzIyOTojZGVmaW5lIFJFR19SVUxFX1NUQVJUX0ZSRVFcdFx0XHQweDAwMDBmZmZmXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5oOjMyMzA6I2RlZmluZSBSRUdfUlVMRV9FTkRfRlJFUVx0XHRcdDB4ZmZmZjAwMDBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmg6MzIzMTojZGVmaW5lIFJFR19SVUxFX0ZMQUdTXHRcdFx0XHQweDAwMDBmZmZmXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5oOjMyMzI6I2RlZmluZSBSRUdfUlVMRV9NQVhfQldcdFx0XHRcdDB4MDAwMGZmZmZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmg6MzIzMzojZGVmaW5lIFJFR19SVUxFX1JFR19QV1JcdFx0XHQweDAwZmYwMDAwXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5oOjMyMzQ6I2RlZmluZSBSRUdfUlVMRV9BTlRfR0FJTlx0XHRcdDB4ZmYwMDAwMDBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmg6MzIzNTojZGVmaW5lIFJFR19SVUxFX1BTRF9JTkZPXHRcdFx0QklUKDIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5oOjMyMzY6I2RlZmluZSBSRUdfUlVMRV9QU0RfRUlSUFx0XHRcdDB4ZmZmZjAwMDBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmgtMzIzNy1cbi0tXG5pbmNsdWRlL25ldC9yZWd1bGF0b3J5Lmg9MjE3PXN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluIHtcbi0tXG5pbmNsdWRlL25ldC9yZWd1bGF0b3J5LmgtMjI0LVxuaW5jbHVkZS9uZXQvcmVndWxhdG9yeS5oOjIyNTojZGVmaW5lIFJFR19SVUxFX0VYVChzdGFydCwgZW5kLCBidywgZ2FpbiwgZWlycCwgZGZzX2NhYywgcmVnX2ZsYWdzKVx0XFxcbmluY2x1ZGUvbmV0L3JlZ3VsYXRvcnkuaC0yMjYte1x0XHRcdFx0XHRcdFx0XHRcdFxcXG4tLVxuaW5jbHVkZS9uZXQvcmVndWxhdG9yeS5oLTIzNS1cbmluY2x1ZGUvbmV0L3JlZ3VsYXRvcnkuaDoyMzY6I2RlZmluZSBSRUdfUlVMRShzdGFydCwgZW5kLCBidywgZ2FpbiwgZWlycCwgcmVnX2ZsYWdzKSBcXFxuaW5jbHVkZS9uZXQvcmVndWxhdG9yeS5oLTIzNy1cdFJFR19SVUxFX0VYVChzdGFydCwgZW5kLCBidywgZ2FpbiwgZWlycCwgMCwgcmVnX2ZsYWdzKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ3LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxMTo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1ODk3CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipSZWd1bGF0b3J5IERvbWFpbiBEZWVwIERpdmUqKgoKT2theSwgc28gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIGhvdyB0aGUgcmVndWxhdG9yeSBkb21haW4gaW5mb3JtYXRpb24gaXMgc3RydWN0dXJlZCwgc3BlY2lmaWNhbGx5IGluIHRoZSBjb250ZXh0IG9mIHRoZSBkcml2ZXIgSSYjMzk7bSBsb29raW5nIGF0LiBSaWdodCwgbGV0JiMzOTtzIGhlYWQgb3ZlciB0byB0aGUgYGluY2x1ZGUvbmV0L3JlZ3VsYXRvcnkuaGAgaGVhZGVyIGZpbGUuIEkmIzM5O20gdGhpbmtpbmcgYXJvdW5kIGxpbmUgMjE3IHNob3VsZCBiZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIEkgcmVjYWxsIHRoYXQmIzM5O3Mgb2Z0ZW4gd2hlcmUgdGhlIGNvcmUgZGF0YSBzdHJ1Y3R1cmVzIG9yIGVudW1zIHJlbGF0ZWQgdG8gcmVndWxhdG9yeSBpbmZvcm1hdGlvbiBkZWZpbml0aW9ucyByZXNpZGUsIG9yIHBlcmhhcHMgd2hlcmUgdGhlIHN0cnVjdHVyZXMgdGhhdCBob2xkIHRoZSBjaGFubmVsIGFuZCBwb3dlciBjb25zdHJhaW50cyBhcmUgZGVjbGFyZWQuIEhvcGVmdWxseSwgSSYjMzk7bGwgZmluZCB0aGUgc3RydWN0dXJlIEkmIzM5O20gbG9va2luZyBmb3IgdGhlcmUgYW5kIGdldCBhIHF1aWNrIHJlZnJlc2hlciBvbiBob3cgdGhlIHJlZ3VsYXRvcnkgaW5mb3JtYXRpb24gaXMgbGFpZCBvdXQgaW4gdGhpcyBzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDgvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDExOjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvcmVndWxhdG9yeS5oJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjEwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAyMTA6XHRcdHN0cnVjdCBpZWVlODAyMTFfd21tX3J1bGUgd21tX3J1bGU7XG4gMjExOlx0XHR1MzIgZmxhZ3M7XG4gMjEyOlx0XHR1MzIgZGZzX2NhY19tcztcbiAyMTM6XHRcdGJvb2wgaGFzX3dtbTtcbiAyMTQ6XHRcdHM4IHBzZDtcbiAyMTU6XHR9O1xuIDIxNjpcdFxuIDIxNzpcdHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluIHtcbiAyMTg6XHRcdHN0cnVjdCByY3VfaGVhZCByY3VfaGVhZDtcbiAyMTk6XHRcdHUzMiBuX3JlZ19ydWxlcztcbiAyMjA6XHRcdGNoYXIgYWxwaGEyWzNdO1xuIDIyMTpcdFx0ZW51bSBubDgwMjExX2Rmc19yZWdpb25zIGRmc19yZWdpb247XG4gMjIyOlx0XHRzdHJ1Y3QgaWVlZTgwMjExX3JlZ19ydWxlIHJlZ19ydWxlc1tdO1xuIDIyMzpcdH07XG4gMjI0Olx0XG4gMjI1Olx0I2RlZmluZSBSRUdfUlVMRV9FWFQoc3RhcnQsIGVuZCwgYncsIGdhaW4sIGVpcnAsIGRmc19jYWMsIHJlZ19mbGFncylcdFxcXG4gMjI2Olx0e1x0XHRcdFx0XHRcdFx0XHRcdFxcXG4gMjI3Olx0XHQuZnJlcV9yYW5nZS5zdGFydF9mcmVxX2toeiA9IE1IWl9UT19LSFooc3RhcnQpLFx0XHRcdFxcXG4gMjI4Olx0XHQuZnJlcV9yYW5nZS5lbmRfZnJlcV9raHogPSBNSFpfVE9fS0haKGVuZCksXHRcdFx0XFxcbiAyMjk6XHRcdC5mcmVxX3JhbmdlLm1heF9iYW5kd2lkdGhfa2h6ID0gTUhaX1RPX0tIWihidyksXHRcdFx0XFxcbiAyMzA6XHRcdC5wb3dlcl9ydWxlLm1heF9hbnRlbm5hX2dhaW4gPSBEQklfVE9fTUJJKGdhaW4pLFx0XHRcXFxuIDIzMTpcdFx0LnBvd2VyX3J1bGUubWF4X2VpcnAgPSBEQk1fVE9fTUJNKGVpcnApLFx0XHRcdFxcXG4gMjMyOlx0XHQuZmxhZ3MgPSByZWdfZmxhZ3MsXHRcdFx0XHRcdFx0XFxcbiAyMzM6XHRcdC5kZnNfY2FjX21zID0gZGZzX2NhYyxcdFx0XHRcdFx0XHRcXFxuIDIzNDpcdH1cbiAyMzU6XHRcbiAyMzY6XHQjZGVmaW5lIFJFR19SVUxFKHN0YXJ0LCBlbmQsIGJ3LCBnYWluLCBlaXJwLCByZWdfZmxhZ3MpIFxcXG4gMjM3Olx0XHRSRUdfUlVMRV9FWFQoc3RhcnQsIGVuZCwgYncsIGdhaW4sIGVpcnAsIDAsIHJlZ19mbGFncylcbiAyMzg6XHRcbiAyMzk6XHQjZW5kaWZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTE6NDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjY3MAoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipOYXZpZ2F0aW5nIHRoZSBBdGhlcm9zIFdpcmVsZXNzIFJlZ3VsYXRvcnkgRG9tYWluIENvZGUqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgaXNzdWUsIGFuZCB0aGUgcHJvYmxlbSBsaWtlbHkgcmVzaWRlcyB3aXRoaW4gdGhlIHJlZ3VsYXRvcnkgZG9tYWluIGhhbmRsaW5nIGZvciBBdGhlcm9zIHdpcmVsZXNzIGRyaXZlcnMuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGRpdmUgZGlyZWN0bHkgaW50byB0aGUgY29kZS4gTGV0JiMzOTtzIHNlZS4uLiBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IGJ5IGNvbmZpcm1pbmcgdGhlIGRlZmluaXRpb25zIG9mIHRoZSBrZXkgc3RydWN0dXJlcyB1c2VkIGZvciByZWd1bGF0b3J5IGRvbWFpbiBjb25maWd1cmF0aW9uLiBUaGF0IG1lYW5zIGRpZ2dpbmcgaW50byBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuY2AuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiBob3cgdGhleSYjMzk7dmUgc3RydWN0dXJlZCB0aGF0LCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlIHJlZ3VsYXRvcnkgZG9tYWluIHN0cnVjdHVyZXMsIGFuZCB3aGVyZSB0aGUgY29yZSBsb2dpYyByZXNpZGVzLiBUaGF0IGZpbGUgaXMgdXN1YWxseSB0aGUgZ28tdG8gc3BvdCBmb3IgdGhlc2Uga2luZHMgb2YgZGV0YWlscyB3aXRoIEF0aGVyb3MuIEZyb20gdGhlcmUsIEkgY2FuIGFuYWx5emUgdGhlIGRhdGEgc3RydWN0dXJlcyB0byB1bmRlcnN0YW5kIGhvdyB0aGUgcmVndWxhdG9yeSBwYXJhbWV0ZXJzIGFuZCBjaGFubmVscyBhcmUgcmVwcmVzZW50ZWQuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBzb2xpZCBmb3VuZGF0aW9uIGZvciB0cmFjaW5nIHRoZSBhY3R1YWwgaXNzdWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTAvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDExOjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDU1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDYwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgNTU6XHRcdFx0XHRcdEFUSF8yR0haX0NIMTJfMTMsIFxcXG4gIDU2Olx0XHRcdFx0XHRBVEhfMkdIWl9DSDE0XG4gIDU3Olx0XG4gIDU4Olx0I2RlZmluZSBBVEhfNUdIWl9BTExcdFx0QVRIXzVHSFpfNTE1MF81MzUwLCBcXFxuICA1OTpcdFx0XHRcdFx0QVRIXzVHSFpfNTQ3MF81ODUwXG4gIDYwOlx0XG4gIDYxOlx0LyogVGhpcyBvbmUgc2tpcHMgd2hhdCB3ZSBjYWxsIFwmIzM0O21pZCBiYW5kXCYjMzQ7ICovXG4gIDYyOlx0I2RlZmluZSBBVEhfNUdIWl9OT19NSURCQU5EXHRBVEhfNUdIWl81MTUwXzUzNTAsIFxcXG4gIDYzOlx0XHRcdFx0XHRBVEhfNUdIWl81NzI1XzU4NTBcbiAgNjQ6XHRcbiAgNjU6XHQvKiBDYW4gYmUgdXNlZCBmb3I6XG4gIDY2Olx0ICogMHg2MCwgMHg2MSwgMHg2MiAqL1xuICA2NzpcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiBhdGhfd29ybGRfcmVnZG9tXzYwXzYxXzYyID0ge1xuICA2ODpcdFx0Lm5fcmVnX3J1bGVzID0gNixcbiAgNjk6XHRcdC5hbHBoYTIgPSAgXCYjMzQ7OTlcJiMzNDssXG4gIDcwOlx0XHQucmVnX3J1bGVzID0ge1xuICA3MTpcdFx0XHRBVEhfMkdIWl9BTEwsXG4gIDcyOlx0XHRcdEFUSF81R0haX0FMTCxcbiAgNzM6XHRcdH1cbiAgNzQ6XHR9O1xuICA3NTpcdFxuICA3NjpcdC8qIENhbiBiZSB1c2VkIGJ5IDB4NjMgYW5kIDB4NjUgKi9cbiAgNzc6XHRzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW4gYXRoX3dvcmxkX3JlZ2RvbV82M182NSA9IHtcbiAgNzg6XHRcdC5uX3JlZ19ydWxlcyA9IDUsXG4gIDc5Olx0XHQuYWxwaGEyID0gIFwmIzM0Ozk5XCYjMzQ7LFxuICA4MDpcdFx0LnJlZ19ydWxlcyA9IHtcbiAgODE6XHRcdFx0QVRIXzJHSFpfQ0gwMV8xMSxcbiAgODI6XHRcdFx0QVRIXzJHSFpfQ0gxMl8xMyxcbiAgODM6XHRcdFx0QVRIXzVHSFpfTk9fTUlEQkFORCxcbiAgODQ6XHRcdH1cbiAgODU6XHR9O1xuICA4NjpcdFxuICA4NzpcdC8qIENhbiBiZSB1c2VkIGJ5IDB4NjQgb25seSAqL1xuICA4ODpcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiBhdGhfd29ybGRfcmVnZG9tXzY0ID0ge1xuICA4OTpcdFx0Lm5fcmVnX3J1bGVzID0gNCxcbiAgOTA6XHRcdC5hbHBoYTIgPSAgXCYjMzQ7OTlcJiMzNDssXG4gIDkxOlx0XHQucmVnX3J1bGVzID0ge1xuICA5MjpcdFx0XHRBVEhfMkdIWl9DSDAxXzExLFxuICA5MzpcdFx0XHRBVEhfNUdIWl9OT19NSURCQU5ELFxuICA5NDpcdFx0fVxuICA5NTpcdH07XG4gIDk2Olx0XG4gIDk3Olx0LyogQ2FuIGJlIHVzZWQgYnkgMHg2NiBhbmQgMHg2OSAqL1xuICA5ODpcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiBhdGhfd29ybGRfcmVnZG9tXzY2XzY5ID0ge1xuICA5OTpcdFx0Lm5fcmVnX3J1bGVzID0gNCxcbiAxMDA6XHRcdC5hbHBoYTIgPSAgXCYjMzQ7OTlcJiMzNDssXG4gMTAxOlx0XHQucmVnX3J1bGVzID0ge1xuIDEwMjpcdFx0XHRBVEhfMkdIWl9DSDAxXzExLFxuIDEwMzpcdFx0XHRBVEhfNUdIWl9BTEwsXG4gMTA0Olx0XHR9XG4gMTA1Olx0fTtcbiAxMDY6XHRcbiAxMDc6XHQvKiBDYW4gYmUgdXNlZCBieSAweDY3LCAweDY4LCAweDZBIGFuZCAweDZDICovXG4gMTA4Olx0c3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluIGF0aF93b3JsZF9yZWdkb21fNjdfNjhfNkFfNkMgPSB7XG4gMTA5Olx0XHQubl9yZWdfcnVsZXMgPSA1LFxuIDExMDpcdFx0LmFscGhhMiA9ICBcJiMzNDs5OVwmIzM0OyxcbiAxMTE6XHRcdC5yZWdfcnVsZXMgPSB7XG4gMTEyOlx0XHRcdEFUSF8yR0haX0NIMDFfMTEsXG4gMTEzOlx0XHRcdEFUSF8yR0haX0NIMTJfMTMsXG4gMTE0Olx0XHRcdEFUSF81R0haX0FMTCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41MS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTE6NDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzkzMwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDM0NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFJlZ3VsYXRvcnkgRG9tYWluIFVwZGF0ZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyByZWd1bGF0b3J5IGRvbWFpbiBkZWZpbml0aW9uLCBzcGVjaWZpY2FsbHkgYEFUSF81R0haXzUxNTBfNTM1MGAuIEJlZm9yZSwgaXQgd2FzIGRlZmluZWQgYnkgYSBzaW5nbGUgcnVsZTogYFJFR19SVUxFKDUxNTAtMTAsIDUzNTAmIzQzOzEwLCA4MCwgMCwgMzAsIE5MODAyMTFfUlJGX05PX0lSKWAuIE5vdywgaXQmIzM5O3MgYmVlbiBzcGxpdCBpbnRvIHR3byBydWxlcywgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIFdlIGhhdmU6IGBSRUdfUlVMRSg1MTUwLTEwLCA1MjQwJiM0MzsxMCwgODAsIDAsIDMwLCAwKWAgYW5kIGBSRUdfUlVMRSg1MjYwLTEwLCA1MzUwJiM0MzsxMCwgODAsIDAsIDMwLCBOTDgwMjExX1JSRl9OT19JUilgLiBJIHNlZSB0aGUgbG9naWMsIHNwbGl0dGluZyB0aGF0IGNvbnRpZ3VvdXMgYmFuZCBpbnRvIHR3byBwaWVjZXMsIG1vc3QgbGlrZWx5IHRvIGFjY29tbW9kYXRlIHNvbWUgbmV3IHJlZ3VsYXRvcnkgcmVxdWlyZW1lbnQgb3IgcGVyaGFwcyB0byBlbmFibGUgRHluYW1pYyBGcmVxdWVuY3kgU2VsZWN0aW9uIChERlMpIG9uIGEgc2VjdGlvbiBvZiB0aGF0IGJhbmQuCgpOYXR1cmFsbHksIHRoZSBgLm5fcmVnX3J1bGVzYCBtZW1iZXIgb2YgYW55IGBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbmAgdXNpbmcgYEFUSF81R0haXzUxNTBfNTM1MGAgKGVpdGhlciBkaXJlY3RseSBvciB2aWEgYEFUSF81R0haX0FMTGAgb3IgYEFUSF81R0haX05PX01JREJBTkRgKSBoYXMgYmVlbiBpbmNyZW1lbnRlZCB0byByZWZsZWN0IHRoaXMgY2hhbmdlLiBUaGVzZSBhcmUgYWxsIGRlY2xhcmVkIGFzIGBzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW5gLCB3aGljaCBtZWFucyB0aGVzZSBzdHJ1Y3R1cmVzIGFyZSBpbml0aWFsaXplZCBhdCBjb21waWxlIHRpbWUuCgpJbiBDLCB0aGUgYHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluYCB1c2VzIGEgZmxleGlibGUgYXJyYXkgbWVtYmVyIGBzdHJ1Y3QgaWVlZTgwMjExX3JlZ19ydWxlIHJlZ19ydWxlc1tdYCwgd2hpY2ggaXMgc3RhbmRhcmQgcHJhY3RpY2UgaW4gdGhlc2UgcmVndWxhdG9yeSBkb21haW4gZGVmaW5pdGlvbnMuIFNpbmNlIHRoZXNlIGFyZSBzdGF0aWMgYGNvbnN0YCBzdHJ1Y3R1cmVzLCB0aGUgZW50aXJlIGByZWdfcnVsZXNbXWAgYXJyYXkgaXMgcG9wdWxhdGVkIGF0IGNvbXBpbGUgdGltZSB3aXRoIHN0YXRpYyBgY29uc3RgIGRhdGEgdXNpbmcgZGVzaWduYXRlZCBpbml0aWFsaXplcnMuIFRoYXQmIzM5O3MgZ29vZCwgbWluaW1pemVzIHJ1bnRpbWUgb3ZlcmhlYWQuCgpOb3cgSSBuZWVkIHRvIHNlZSB3aGVyZSB0aGVzZSBgYXRoX3dvcmxkX3JlZ2RvbV8qYCB2YXJpYWJsZXMgYXJlIGFjdHVhbGx5IHVzZWQgd2l0aGluIHRoZSBjb2RlYmFzZSB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBpbXBhY3Qgb2YgdGhpcyBjaGFuZ2UuIEkmIzM5O2xsIG5lZWQgdG8gdHJhY2UgdGhvc2UgdXNhZ2VzIHRvIHNlZSBpZiBhbnkgbG9naWMgbmVlZHMgdG8gYmUgdXBkYXRlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41Mi8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTE6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoX3dvcmxkX3JlZ2RvbV8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYz0yNj1zdGF0aWMgaW50IF9fYXRoX3JlZ2RfaW5pdChzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy02Ni0gKiAweDYwLCAweDYxLCAweDYyICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjY3OnN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiBhdGhfd29ybGRfcmVnZG9tXzYwXzYxXzYyID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy02OC1cdC5uX3JlZ19ydWxlcyA9IDYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy03Ni0vKiBDYW4gYmUgdXNlZCBieSAweDYzIGFuZCAweDY1ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjc3OnN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiBhdGhfd29ybGRfcmVnZG9tXzYzXzY1ID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy03OC1cdC5uX3JlZ19ydWxlcyA9IDUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy04Ny0vKiBDYW4gYmUgdXNlZCBieSAweDY0IG9ubHkgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6ODg6c3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluIGF0aF93b3JsZF9yZWdkb21fNjQgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTg5LVx0Lm5fcmVnX3J1bGVzID0gNCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTk3LS8qIENhbiBiZSB1c2VkIGJ5IDB4NjYgYW5kIDB4NjkgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6OTg6c3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluIGF0aF93b3JsZF9yZWdkb21fNjZfNjkgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTk5LVx0Lm5fcmVnX3J1bGVzID0gNCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTEwNy0vKiBDYW4gYmUgdXNlZCBieSAweDY3LCAweDY4LCAweDZBIGFuZCAweDZDICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjEwODpzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW4gYXRoX3dvcmxkX3JlZ2RvbV82N182OF82QV82QyA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMTA5LVx0Lm5fcmVnX3J1bGVzID0gNSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jPTIxNz1zdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW4gKmF0aF9kZWZhdWx0X3dvcmxkX3JlZ2RvbWFpbih2b2lkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjE5LVx0LyogdGhpcyBpcyB0aGUgbW9zdCByZXN0cmljdGl2ZSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzoyMjA6XHRyZXR1cm4gXHUwMDI2YXRoX3dvcmxkX3JlZ2RvbV82NDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjIxLX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jPTIyND1pZWVlODAyMTFfcmVnZG9tYWluICphdGhfd29ybGRfcmVnZG9tYWluKHN0cnVjdCBhdGhfcmVndWxhdG9yeSAqcmVnKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjI5LVx0Y2FzZSAweDYyOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzoyMzA6XHRcdHJldHVybiBcdTAwMjZhdGhfd29ybGRfcmVnZG9tXzYwXzYxXzYyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0yMzEtXHRjYXNlIDB4NjM6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTIzMi1cdGNhc2UgMHg2NTpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6MjMzOlx0XHRyZXR1cm4gXHUwMDI2YXRoX3dvcmxkX3JlZ2RvbV82M182NTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjM0LVx0Y2FzZSAweDY0OlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzoyMzU6XHRcdHJldHVybiBcdTAwMjZhdGhfd29ybGRfcmVnZG9tXzY0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0yMzYtXHRjYXNlIDB4NjY6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTIzNy1cdGNhc2UgMHg2OTpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6MjM4Olx0XHRyZXR1cm4gXHUwMDI2YXRoX3dvcmxkX3JlZ2RvbV82Nl82OTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjM5LVx0Y2FzZSAweDY3OlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjQyLVx0Y2FzZSAweDZDOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzoyNDM6XHRcdHJldHVybiBcdTAwMjZhdGhfd29ybGRfcmVnZG9tXzY3XzY4XzZBXzZDO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0yNDQtXHRkZWZhdWx0OlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxMTo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5OTg2CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogNjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXhhbWluaW5nIHRoZSBBdGhlcm9zIFJlZ3VsYXRvcnkgRG9tYWluIENvZGUqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW4uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgcmVndWxhdG9yeSBkb21haW4gcnVsZXMgYXJlIGhhbmRsZWQsIHNwZWNpZmljYWxseSBpbiByZWxhdGlvbiB0byBgYXRoX3dvcmxkX3JlZ2RvbWFpbigpYC4gTXkgZm9jdXMgaXMgY3VycmVudGx5IG9uIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuY2AgZmlsZS4gSSYjMzk7bSBnb2luZyB0byBzdGFydCBieSBnb2luZyBkZWVwZXIgaW50byB0aGlzIGNvZGUsIGZvY3VzaW5nIG9uIHRoZSBzZWN0aW9uIGZyb20gYXJvdW5kIGxpbmUgMjE1IHRvIGxpbmUgMzAwLiBJIG5lZWQgdG8gcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGlzIGltcGxlbWVudGF0aW9uIGRlYWxzIHdpdGggc3BlY2lmaWMgcGFyYW1ldGVycyBhbmQgbWFrZSBhIGNvbXBhcmlzb24gdG8gYW5vdGhlciBtb2RlbCBpbiBteSBtaW5kLiBUaW1lIHRvIGdldCBkb3duIGludG8gdGhlIGRldGFpbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTQvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDExOjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIxNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjE1Olx0RVhQT1JUX1NZTUJPTChhdGhfaXNfd29ybGRfcmVnZCk7XG4gMjE2Olx0XG4gMjE3Olx0c3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluICphdGhfZGVmYXVsdF93b3JsZF9yZWdkb21haW4odm9pZClcbiAyMTg6XHR7XG4gMjE5Olx0XHQvKiB0aGlzIGlzIHRoZSBtb3N0IHJlc3RyaWN0aXZlICovXG4gMjIwOlx0XHRyZXR1cm4gXHUwMDI2YXRoX3dvcmxkX3JlZ2RvbV82NDtcbiAyMjE6XHR9XG4gMjIyOlx0XG4gMjIzOlx0c3RhdGljIGNvbnN0IHN0cnVjdFxuIDIyNDpcdGllZWU4MDIxMV9yZWdkb21haW4gKmF0aF93b3JsZF9yZWdkb21haW4oc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcpXG4gMjI1Olx0e1xuIDIyNjpcdFx0c3dpdGNoIChyZWctXHUwMDNlcmVncGFpci1cdTAwM2VyZWdfZG9tYWluKSB7XG4gMjI3Olx0XHRjYXNlIDB4NjA6XG4gMjI4Olx0XHRjYXNlIDB4NjE6XG4gMjI5Olx0XHRjYXNlIDB4NjI6XG4gMjMwOlx0XHRcdHJldHVybiBcdTAwMjZhdGhfd29ybGRfcmVnZG9tXzYwXzYxXzYyO1xuIDIzMTpcdFx0Y2FzZSAweDYzOlxuIDIzMjpcdFx0Y2FzZSAweDY1OlxuIDIzMzpcdFx0XHRyZXR1cm4gXHUwMDI2YXRoX3dvcmxkX3JlZ2RvbV82M182NTtcbiAyMzQ6XHRcdGNhc2UgMHg2NDpcbiAyMzU6XHRcdFx0cmV0dXJuIFx1MDAyNmF0aF93b3JsZF9yZWdkb21fNjQ7XG4gMjM2Olx0XHRjYXNlIDB4NjY6XG4gMjM3Olx0XHRjYXNlIDB4Njk6XG4gMjM4Olx0XHRcdHJldHVybiBcdTAwMjZhdGhfd29ybGRfcmVnZG9tXzY2XzY5O1xuIDIzOTpcdFx0Y2FzZSAweDY3OlxuIDI0MDpcdFx0Y2FzZSAweDY4OlxuIDI0MTpcdFx0Y2FzZSAweDZBOlxuIDI0MjpcdFx0Y2FzZSAweDZDOlxuIDI0MzpcdFx0XHRyZXR1cm4gXHUwMDI2YXRoX3dvcmxkX3JlZ2RvbV82N182OF82QV82QztcbiAyNDQ6XHRcdGRlZmF1bHQ6XG4gMjQ1Olx0XHRcdFdBUk5fT04oMSk7XG4gMjQ2Olx0XHRcdHJldHVybiBhdGhfZGVmYXVsdF93b3JsZF9yZWdkb21haW4oKTtcbiAyNDc6XHRcdH1cbiAyNDg6XHR9XG4gMjQ5Olx0XG4gMjUwOlx0Ym9vbCBhdGhfaXNfNDlnaHpfYWxsb3dlZCh1MTYgcmVnZG9tYWluKVxuIDI1MTpcdHtcbiAyNTI6XHRcdC8qIHBvc3NpYmx5IG1vcmUgKi9cbiAyNTM6XHRcdHJldHVybiByZWdkb21haW4gPT0gTUtLOV9NS0tDO1xuIDI1NDpcdH1cbiAyNTU6XHRFWFBPUlRfU1lNQk9MKGF0aF9pc180OWdoel9hbGxvd2VkKTtcbiAyNTY6XHRcbiAyNTc6XHQvKiBGcmVxdWVuY3kgaXMgb25lIHdoZXJlIHJhZGFyIGRldGVjdGlvbiBpcyByZXF1aXJlZCAqL1xuIDI1ODpcdHN0YXRpYyBib29sIGF0aF9pc19yYWRhcl9mcmVxKHUxNiBjZW50ZXJfZnJlcSxcbiAyNTk6XHRcdFx0XHQgICAgICBzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZylcbiAyNjA6XHRcbiAyNjE6XHR7XG4gMjYyOlx0XHRpZiAocmVnLVx1MDAzZWNvdW50cnlfY29kZSA9PSBDVFJZX0lORElBKVxuIDI2MzpcdFx0XHRyZXR1cm4gKGNlbnRlcl9mcmVxIFx1MDAzZT0gNTUwMCBcdTAwMjZcdTAwMjYgY2VudGVyX2ZyZXEgXHUwMDNjPSA1NzAwKTtcbiAyNjQ6XHRcdHJldHVybiAoY2VudGVyX2ZyZXEgXHUwMDNlPSA1MjYwIFx1MDAyNlx1MDAyNiBjZW50ZXJfZnJlcSBcdTAwM2M9IDU3MDApO1xuIDI2NTpcdH1cbiAyNjY6XHRcbiAyNjc6XHRzdGF0aWMgdm9pZCBhdGhfZm9yY2VfY2xlYXJfbm9faXJfY2hhbihzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuIDI2ODpcdFx0XHRcdFx0ICAgICAgIHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2gpXG4gMjY5Olx0e1xuIDI3MDpcdFx0Y29uc3Qgc3RydWN0IGllZWU4MDIxMV9yZWdfcnVsZSAqcmVnX3J1bGU7XG4gMjcxOlx0XG4gMjcyOlx0XHRyZWdfcnVsZSA9IGZyZXFfcmVnX2luZm8od2lwaHksIE1IWl9UT19LSFooY2gtXHUwMDNlY2VudGVyX2ZyZXEpKTtcbiAyNzM6XHRcdGlmIChJU19FUlIocmVnX3J1bGUpKVxuIDI3NDpcdFx0XHRyZXR1cm47XG4gMjc1Olx0XG4gMjc2Olx0XHRpZiAoIShyZWdfcnVsZS1cdTAwM2VmbGFncyBcdTAwMjYgTkw4MDIxMV9SUkZfTk9fSVIpKVxuIDI3NzpcdFx0XHRpZiAoY2gtXHUwMDNlZmxhZ3MgXHUwMDI2IElFRUU4MDIxMV9DSEFOX05PX0lSKVxuIDI3ODpcdFx0XHRcdGNoLVx1MDAzZWZsYWdzIFx1MDAyNj0gfklFRUU4MDIxMV9DSEFOX05PX0lSO1xuIDI3OTpcdH1cbiAyODA6XHRcbiAyODE6XHRzdGF0aWMgdm9pZCBhdGhfZm9yY2VfY2xlYXJfbm9faXJfZnJlcShzdHJ1Y3Qgd2lwaHkgKndpcGh5LCB1MTYgY2VudGVyX2ZyZXEpXG4gMjgyOlx0e1xuIDI4MzpcdFx0c3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaDtcbiAyODQ6XHRcbiAyODU6XHRcdGNoID0gaWVlZTgwMjExX2dldF9jaGFubmVsKHdpcGh5LCBjZW50ZXJfZnJlcSk7XG4gMjg2Olx0XHRpZiAoIWNoKVxuIDI4NzpcdFx0XHRyZXR1cm47XG4gMjg4Olx0XG4gMjg5Olx0XHRhdGhfZm9yY2VfY2xlYXJfbm9faXJfY2hhbih3aXBoeSwgY2gpO1xuIDI5MDpcdH1cbiAyOTE6XHRcbiAyOTI6XHRzdGF0aWMgdm9pZCBhdGhfZm9yY2Vfbm9faXJfY2hhbihzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoKVxuIDI5MzpcdHtcbiAyOTQ6XHRcdGNoLVx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9DSEFOX05PX0lSO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU1LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxMTo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTUxMAoJCQkJCQkJb3V0cHV0OiAyMjMKCQkJCQkJCXRob3VnaHRzOiAxMDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKktNU0FOIEFzc2Vzc21lbnQ6IE5vIENvbmNlcm5zIEhlcmUqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gVGhpcyBwYXRjaCBpcyBlc3NlbnRpYWxseSByZWZpbmluZyBob3cgd2UgZGVmaW5lIHJlZ3VsYXRvcnkgcnVsZXMgZm9yIHRoZSA1IEdIeiBiYW5kLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIHNwbGl0dGluZyBhIHNpbmdsZSBydWxlIGludG8gdHdvIHN1Yi1yYW5nZXM6IDUxNTAtNTI0MCBNSHogKHdpdGhvdXQgTk9fSVIpIGFuZCA1MjYwLTUzNTAgTUh6ICh3aXRoIE5PX0lSKS4gVGhlIGNydWNpYWwgcGFydCBpcyB0aGF0IGl0IHVwZGF0ZXMgdGhlIGBuX3JlZ19ydWxlc2AgY291bnRzIGluIHRoZSBzdGF0aWMgYGllZWU4MDIxMV9yZWdkb21haW5gIHRhYmxlcyB0byByZWZsZWN0IHRoaXMgY2hhbmdlLgoKTm93LCBsZXQmIzM5O3MgbWV0aWN1bG91c2x5IHZlcmlmeSB0aGlzLiBJIG5lZWQgdG8gbWFrZSBhYnNvbHV0ZWx5IHN1cmUgdGhlcmUgYXJlbiYjMzk7dCBhbnkgc25lYWt5IGlzc3Vlcy4gSSYjMzk7bSBnb2luZyB0aHJvdWdoIHRoZSBtYWNybyBleHBhbnNpb25zIGZvciBgQVRIXzJHSFpfQUxMYCBhbmQgYEFUSF81R0haX0FMTGAgdG8gZW5zdXJlIHRoZSBydWxlIGNvdW50cyBhcmUgY29ycmVjdCBhZnRlciB0aGUgc3BsaXQgYW5kIHVwZGF0aW5nIHRoZSB2YXJpb3VzIGBhdGhfd29ybGRfcmVnZG9tXypgIHN0cnVjdHVyZXMsIGNvbmZpcm1pbmcgdGhhdCB0aGUgYC5uX3JlZ19ydWxlc2AgZmllbGQgY29ycmVjdGx5IHJlZmxlY3RzIHRoZSBzdW0gb2YgaXRzIGNvbnN0aXR1ZW50cy4gSSYjMzk7bSBjb25maXJtaW5nIHRoaW5ncyBsaWtlIGBhdGhfd29ybGRfcmVnZG9tXzYwXzYxXzYyYCBoYXZpbmcgNiBydWxlcyAoMyBmb3IgMkdIeiwgMyBmb3IgNUdIeikgYW5kIHNvIG9uLiBBbGwgdGhlc2UgYXJlIHN0YXRpYyBjb25zdGFudCByZWd1bGF0b3J5IHRhYmxlcy4KCk15IGFuYWx5c2lzIGJvaWxzIGRvd24gdG8gdGhpczogYXJlIHRoZXJlIGFueSByaXNrcyBvZiBLTVNBTiBmaW5kaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGxlYWtzIHRvIHVzZXJzcGFjZT8gVGhlIGFuc3dlciBpcyBhIGNsZWFyICYjMzQ7bm8mIzM0Oy4gVGhlcmUmIzM5O3Mgbm8gZHluYW1pYyBtZW1vcnkgYWxsb2NhdGlvbiwgc28gbm8gY2hhbmNlIG9mIHVuaW5pdGlhbGl6ZWQgaGVhcCBkYXRhLiBUaGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIGFuZCBjZXJ0YWlubHkgbm8gY29weS10by11c2VyIG9mIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGUgY29kZSBpcyBvbmx5IG1vZGlmeWluZyBzdGF0aWMgY29uc3QgZGF0YSBzdHJ1Y3R1cmVzIHRoYXQgYXJlIGZ1bGx5IGluaXRpYWxpemVkIGF0IGNvbXBpbGUgdGltZS4KCldlIG5lZWQgdG8gYmUgc3VyZS4gTGV0JiMzOTtzIHJ1biBkb3duIHRoZSBjaGVja2xpc3QuCiogICBEb2VzIGl0IGludHJvZHVjZSBvciBtb2RpZnkga2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlIHdoZXJlIGZpZWxkcy9wYWRkaW5nIG1pZ2h0IG5vdCBiZSBpbml0aWFsaXplZD8gTm8uCiogICBEb2VzIGl0IGludHJvZHVjZSBjb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgZGVwZW5kaW5nIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzPyBOby4KKiAgIERvZXMgaXQgYWxsb2NhdGUgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMgY291bGQgYmUgcmVhZD8gTm8uCiogICBEb2VzIGl0IG1vZGlmeSBib3VuZHMgY2hlY2tzL2xlbmd0aHMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MgdW5pbml0aWFsaXplZCBieXRlcz8gTm8uCgpLQVNBTiwgb3VyIHN0YW5kYXJkIG1lbW9yeSBib3VuZHMgY2hlY2tlciwgd2lsbCBjYXRjaCBhbnkgb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3NlcyBpZiB0aGVyZSB3ZXJlIGFueSBpc3N1ZXMgd2l0aCB0aGUgdXBkYXRlZCBjb3VudHMuIEJ1dCBLTVNBTiwgd2hpY2ggdGFyZ2V0cyB1bmluaXRpYWxpemVkIHJlYWRzLCBpcyBzaW1wbHkgbm90IGFwcGxpY2FibGUgaGVyZS4KCktNU0FOIGRldGVjdHMgcmVhZHMgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgYW5kIGxlYWtzIG9mIHVuaW5pdGlhbGl6ZWQgZGF0YSB0byB1c2VyIHNwYWNlLiBUaGlzIHBhdGNoIHNvbGVseSBkZWFscyB3aXRoIGNvbXBpbGUtdGltZSBjb25zdGFudCByZWd1bGF0b3J5IGRvbWFpbiBydWxlcy4gVGhlcmUmIzM5O3Mgbm8gZHluYW1pYyBhbGxvY2F0aW9uIG9yIHN0YWNrLWFsbG9jYXRlZCBtZW1vcnkgYW5kIG5vIHVuaW5pdGlhbGl6ZWQgZmllbGRzIG9yIGJ1ZmZlcnMgYXJlIGNyZWF0ZWQgb3IgYWNjZXNzZWQuCgpUaGVyZWZvcmUsIGBOZWVkc0tNU0FOYCBzaG91bGQgYmUgZmFsc2UuIE5vIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbiBvciBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBpcyBuZWNlc3NhcnkuIFRoaXMgaXMgYSBjbGVhbiwgc2FmZSwgYW5kIHN0cmFpZ2h0Zm9yd2FyZCB1cGRhdGUgdG8gdGhlIHJlZ3VsYXRvcnkgZG9tYWluIGRlZmluaXRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU2LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxMTo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBzdGF0aWMgY29uc3RhbnQgcmVndWxhdG9yeSBkb21haW4gZGVmaW5pdGlvbnMgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmNgLiBTcGVjaWZpY2FsbHksIGl0IHNwbGl0cyB0aGUgYEFUSF81R0haXzUxNTBfNTM1MGAgbWFjcm8gaW50byB0d28gc2VwYXJhdGUgcmVndWxhdG9yeSBydWxlcyAoNTE1MC01MjQwIE1IeiBhbmQgNTI2MC01MzUwIE1IeikgYW5kIGFkanVzdHMgdGhlIGBuX3JlZ19ydWxlc2AgZmllbGQgaW4gc2V2ZXJhbCBzdGF0aWMgY29uc3QgYHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluYCBpbnN0YW5jZXMgYWNjb3JkaW5nbHkuXG5cbkFsbCBhZmZlY3RlZCBkYXRhIHN0cnVjdHVyZXMgYXJlIGNvbXBpbGUtdGltZSBjb25zdGFudCB0YWJsZXMgd2l0aCBmdWxseSBpbml0aWFsaXplZCBmaWVsZHMuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IGR5bmFtaWMgb3Igc3RhY2sgYWxsb2NhdGlvbnMsIGRvZXMgbm90IG1vZGlmeSBhbnkgYnVmZmVycyBvciBwYWRkaW5nIGNvcGllZCB0byB1c2Vyc3BhY2UsIGFuZCBpbnRyb2R1Y2VzIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLiBJZiBhbnkgYXJyYXkgaW5kZXhpbmcgb3IgcnVsZSBjb3VudCBtaXNtYXRjaGVzIHdlcmUgdG8gb2NjdXIsIHRoZXkgd291bGQgYmUgYm91bmRzIHZpb2xhdGlvbnMgZGV0ZWN0YWJsZSBieSBzdGFuZGFyZCBLQVNBTi4gVGhlcmVmb3JlLCB0aGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgdGhhdCB3YXJyYW50IGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbi4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHN0YXRpYyBjb25zdGFudCByZWd1bGF0b3J5IGRvbWFpbiBkZWZpbml0aW9ucyBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuY2AuIFNwZWNpZmljYWxseSwgaXQgc3BsaXRzIHRoZSBgQVRIXzVHSFpfNTE1MF81MzUwYCBtYWNybyBpbnRvIHR3byBzZXBhcmF0ZSByZWd1bGF0b3J5IHJ1bGVzICg1MTUwLTUyNDAgTUh6IGFuZCA1MjYwLTUzNTAgTUh6KSBhbmQgYWRqdXN0cyB0aGUgYG5fcmVnX3J1bGVzYCBmaWVsZCBpbiBzZXZlcmFsIHN0YXRpYyBjb25zdCBgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW5gIGluc3RhbmNlcyBhY2NvcmRpbmdseS5cblxuQWxsIGFmZmVjdGVkIGRhdGEgc3RydWN0dXJlcyBhcmUgY29tcGlsZS10aW1lIGNvbnN0YW50IHRhYmxlcyB3aXRoIGZ1bGx5IGluaXRpYWxpemVkIGZpZWxkcy4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgZHluYW1pYyBvciBzdGFjayBhbGxvY2F0aW9ucywgZG9lcyBub3QgbW9kaWZ5IGFueSBidWZmZXJzIG9yIHBhZGRpbmcgY29waWVkIHRvIHVzZXJzcGFjZSwgYW5kIGludHJvZHVjZXMgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMuIElmIGFueSBhcnJheSBpbmRleGluZyBvciBydWxlIGNvdW50IG1pc21hdGNoZXMgd2VyZSB0byBvY2N1ciwgdGhleSB3b3VsZCBiZSBib3VuZHMgdmlvbGF0aW9ucyBkZXRlY3RhYmxlIGJ5IHN0YW5kYXJkIEtBU0FOLiBUaGVyZWZvcmUsIHRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyB0aGF0IHdhcnJhbnQgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxMTo0Mjo0NS44NDA3MjU2OTdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTg1OTA4NDMyNzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQVRIX0NPTU1PTlwiLFxuICAgIFwiQVRIOUtfSFRDXCIsXG4gICAgXCJDQVJMOTE3MFwiLFxuICAgIFwiQ0ZHODAyMTFcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJVU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJhdGhfcmVnZF9pbml0XCIsXG4gICAgXCJhdGhfcmVnZF9pbml0X3dpcGh5XCIsXG4gICAgXCJhdGhfd29ybGRfcmVnZG9tYWluXCIsXG4gICAgXCJhdGhfZGVmYXVsdF93b3JsZF9yZWdkb21haW5cIixcbiAgICBcImF0aF9yZWdfbm90aWZpZXJfYXBwbHlcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHN0YXRpYyBjb25zdGFudCByZWd1bGF0b3J5IGRvbWFpbiBkZWZpbml0aW9ucyBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuY2AuIFNwZWNpZmljYWxseSwgaXQgc3BsaXRzIHRoZSBgQVRIXzVHSFpfNTE1MF81MzUwYCBtYWNybyBpbnRvIHR3byBzZXBhcmF0ZSByZWd1bGF0b3J5IHJ1bGVzICg1MTUwLTUyNDAgTUh6IGFuZCA1MjYwLTUzNTAgTUh6KSBhbmQgYWRqdXN0cyB0aGUgYG5fcmVnX3J1bGVzYCBmaWVsZCBpbiBzZXZlcmFsIHN0YXRpYyBjb25zdCBgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW5gIGluc3RhbmNlcyBhY2NvcmRpbmdseS5cXG5cXG5BbGwgYWZmZWN0ZWQgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBjb21waWxlLXRpbWUgY29uc3RhbnQgdGFibGVzIHdpdGggZnVsbHkgaW5pdGlhbGl6ZWQgZmllbGRzLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSBkeW5hbWljIG9yIHN0YWNrIGFsbG9jYXRpb25zLCBkb2VzIG5vdCBtb2RpZnkgYW55IGJ1ZmZlcnMgb3IgcGFkZGluZyBjb3BpZWQgdG8gdXNlcnNwYWNlLCBhbmQgaW50cm9kdWNlcyBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcy4gSWYgYW55IGFycmF5IGluZGV4aW5nIG9yIHJ1bGUgY291bnQgbWlzbWF0Y2hlcyB3ZXJlIHRvIG9jY3VyLCB0aGV5IHdvdWxkIGJlIGJvdW5kcyB2aW9sYXRpb25zIGRldGVjdGFibGUgYnkgc3RhbmRhcmQgS0FTQU4uIFRoZXJlZm9yZSwgdGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIHRoYXQgd2FycmFudCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24uXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggc3BsaXRzIHRoZSA1R0h6IDUxNTAtNTM1MCBNSHogcmVndWxhdG9yeSBydWxlIGludG8gc2VwYXJhdGUgNTE1MC01MjQwIE1IeiBhbmQgNTI2MC01MzUwIE1IeiBydWxlcyBhbmQgdXBkYXRlcyBydWxlIGNvdW50cyBhY3Jvc3MgQXRoZXJvcyB3b3JsZCByZWd1bGF0b3J5IGRvbWFpbiBkZWZpbml0aW9ucyBpbiBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLiBUaGlzIGNvZGUgaXMgZXhlY3V0ZWQgZHVyaW5nIGluaXRpYWxpemF0aW9uIGFuZCByZWd1bGF0b3J5IHVwZGF0ZXMgb2YgQXRoZXJvcyB3aXJlbGVzcyBkcml2ZXJzLCBpbmNsdWRpbmcgVVNCLWRyaXZlbiBkZXZpY2VzIChzdWNoIGFzIGF0aDlrX2h0YyBhbmQgY2FybDkxNzApIHdoaWNoIGFyZSByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBVU0IgZW11bGF0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxMTo0Mjo0NS44NDA3Mzk4NjZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM4MzEwNDM1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDEyOWNiMTU5ZmI5YzVjZDQ4ZWFkNDdjYzcwNGY3OTg2ZWRjYTQwOTJcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFNhdCBTZXAgNSAxMTo0Mjo0NSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuY1xcbmluZGV4IGYxNWU3YmQ2OTBiNWIuLmIxMjlhZjBlZWQ4ODUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmNcXG5AQCAtNDMsNyArNDMsOCBAQCBzdGF0aWMgaW50IF9fYXRoX3JlZ2RfaW5pdChzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZyk7XFxuIFxcdFxcdFxcdFxcdFxcdCBOTDgwMjExX1JSRl9OT19PRkRNKVxcbiBcXG4gLyogV2UgYWxsb3cgSUJTUyBvbiB0aGVzZSBvbiBhIGNhc2UgYnkgY2FzZSBiYXNpcyBieSByZWd1bGF0b3J5IGRvbWFpbiAqL1xcbi0jZGVmaW5lIEFUSF81R0haXzUxNTBfNTM1MFxcdFJFR19SVUxFKDUxNTAtMTAsIDUzNTArMTAsIDgwLCAwLCAzMCxcXFxcXFxuKyNkZWZpbmUgQVRIXzVHSFpfNTE1MF81MzUwXFx0UkVHX1JVTEUoNTE1MC0xMCwgNTI0MCsxMCwgODAsIDAsIDMwLCAwKSxcXFxcXFxuK1xcdFxcdFxcdFxcdFJFR19SVUxFKDUyNjAtMTAsIDUzNTArMTAsIDgwLCAwLCAzMCxcXFxcXFxuIFxcdFxcdFxcdFxcdFxcdCBOTDgwMjExX1JSRl9OT19JUilcXG4gI2RlZmluZSBBVEhfNUdIWl81NDcwXzU4NTBcXHRSRUdfUlVMRSg1NDcwLTEwLCA1ODUwKzEwLCA4MCwgMCwgMzAsXFxcXFxcbiBcXHRcXHRcXHRcXHRcXHQgTkw4MDIxMV9SUkZfTk9fSVIpXFxuQEAgLTY0LDcgKzY1LDcgQEAgc3RhdGljIGludCBfX2F0aF9yZWdkX2luaXQoc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcpO1xcbiAvKiBDYW4gYmUgdXNlZCBmb3I6XFxuICAqIDB4NjAsIDB4NjEsIDB4NjIgKi9cXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluIGF0aF93b3JsZF9yZWdkb21fNjBfNjFfNjIgPSB7XFxuLVxcdC5uX3JlZ19ydWxlcyA9IDUsXFxuK1xcdC5uX3JlZ19ydWxlcyA9IDYsXFxuIFxcdC5hbHBoYTIgPSAgXFxcIjk5XFxcIixcXG4gXFx0LnJlZ19ydWxlcyA9IHtcXG4gXFx0XFx0QVRIXzJHSFpfQUxMLFxcbkBAIC03NCw3ICs3NSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiBhdGhfd29ybGRfcmVnZG9tXzYwXzYxXzYyID0ge1xcbiBcXG4gLyogQ2FuIGJlIHVzZWQgYnkgMHg2MyBhbmQgMHg2NSAqL1xcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW4gYXRoX3dvcmxkX3JlZ2RvbV82M182NSA9IHtcXG4tXFx0Lm5fcmVnX3J1bGVzID0gNCxcXG4rXFx0Lm5fcmVnX3J1bGVzID0gNSxcXG4gXFx0LmFscGhhMiA9ICBcXFwiOTlcXFwiLFxcbiBcXHQucmVnX3J1bGVzID0ge1xcbiBcXHRcXHRBVEhfMkdIWl9DSDAxXzExLFxcbkBAIC04NSw3ICs4Niw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiBhdGhfd29ybGRfcmVnZG9tXzYzXzY1ID0ge1xcbiBcXG4gLyogQ2FuIGJlIHVzZWQgYnkgMHg2NCBvbmx5ICovXFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiBhdGhfd29ybGRfcmVnZG9tXzY0ID0ge1xcbi1cXHQubl9yZWdfcnVsZXMgPSAzLFxcbitcXHQubl9yZWdfcnVsZXMgPSA0LFxcbiBcXHQuYWxwaGEyID0gIFxcXCI5OVxcXCIsXFxuIFxcdC5yZWdfcnVsZXMgPSB7XFxuIFxcdFxcdEFUSF8yR0haX0NIMDFfMTEsXFxuQEAgLTk1LDcgKzk2LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluIGF0aF93b3JsZF9yZWdkb21fNjQgPSB7XFxuIFxcbiAvKiBDYW4gYmUgdXNlZCBieSAweDY2IGFuZCAweDY5ICovXFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiBhdGhfd29ybGRfcmVnZG9tXzY2XzY5ID0ge1xcbi1cXHQubl9yZWdfcnVsZXMgPSAzLFxcbitcXHQubl9yZWdfcnVsZXMgPSA0LFxcbiBcXHQuYWxwaGEyID0gIFxcXCI5OVxcXCIsXFxuIFxcdC5yZWdfcnVsZXMgPSB7XFxuIFxcdFxcdEFUSF8yR0haX0NIMDFfMTEsXFxuQEAgLTEwNSw3ICsxMDYsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW4gYXRoX3dvcmxkX3JlZ2RvbV82Nl82OSA9IHtcXG4gXFxuIC8qIENhbiBiZSB1c2VkIGJ5IDB4NjcsIDB4NjgsIDB4NkEgYW5kIDB4NkMgKi9cXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluIGF0aF93b3JsZF9yZWdkb21fNjdfNjhfNkFfNkMgPSB7XFxuLVxcdC5uX3JlZ19ydWxlcyA9IDQsXFxuK1xcdC5uX3JlZ19ydWxlcyA9IDUsXFxuIFxcdC5hbHBoYTIgPSAgXFxcIjk5XFxcIixcXG4gXFx0LnJlZ19ydWxlcyA9IHtcXG4gXFx0XFx0QVRIXzJHSFpfQ0gwMV8xMSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTE6NDI6NDYuMjI0NTc2MTM4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjoxMjkzMTkxNjkzOTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQVRIX0NPTU1PTlwiLFxuICAgIFwiQVRIOUtfSFRDXCIsXG4gICAgXCJDQVJMOTE3MFwiLFxuICAgIFwiQ0ZHODAyMTFcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJVU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJhdGhfcmVnZF9pbml0XCIsXG4gICAgXCJhdGhfcmVnZF9pbml0X3dpcGh5XCIsXG4gICAgXCJhdGhfd29ybGRfcmVnZG9tYWluXCIsXG4gICAgXCJhdGhfZGVmYXVsdF93b3JsZF9yZWdkb21haW5cIixcbiAgICBcImF0aF9yZWdfbm90aWZpZXJfYXBwbHlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBzcGxpdHMgdGhlIDVHSHogNTE1MC01MzUwIE1IeiByZWd1bGF0b3J5IHJ1bGUgaW50byBzZXBhcmF0ZSA1MTUwLTUyNDAgTUh6IGFuZCA1MjYwLTUzNTAgTUh6IHJ1bGVzIGFuZCB1cGRhdGVzIHJ1bGUgY291bnRzIGFjcm9zcyBBdGhlcm9zIHdvcmxkIHJlZ3VsYXRvcnkgZG9tYWluIGRlZmluaXRpb25zIGluIGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMuIFRoaXMgY29kZSBpcyBleGVjdXRlZCBkdXJpbmcgaW5pdGlhbGl6YXRpb24gYW5kIHJlZ3VsYXRvcnkgdXBkYXRlcyBvZiBBdGhlcm9zIHdpcmVsZXNzIGRyaXZlcnMsIGluY2x1ZGluZyBVU0ItZHJpdmVuIGRldmljZXMgKHN1Y2ggYXMgYXRoOWtfaHRjIGFuZCBjYXJsOTE3MCkgd2hpY2ggYXJlIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIFVTQiBlbXVsYXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMTI5Y2IxNTlmYjljNWNkNDhlYWQ0N2NjNzA0Zjc5ODZlZGNhNDA5MlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgU2VwIDUgMTE6NDI6NDUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuY1xuaW5kZXggZjE1ZTdiZDY5MGI1Yi4uYjEyOWFmMGVlZDg4NSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmNcbkBAIC00Myw3ICs0Myw4IEBAIHN0YXRpYyBpbnQgX19hdGhfcmVnZF9pbml0KHN0cnVjdCBhdGhfcmVndWxhdG9yeSAqcmVnKTtcbiBcdFx0XHRcdFx0IE5MODAyMTFfUlJGX05PX09GRE0pXG4gXG4gLyogV2UgYWxsb3cgSUJTUyBvbiB0aGVzZSBvbiBhIGNhc2UgYnkgY2FzZSBiYXNpcyBieSByZWd1bGF0b3J5IGRvbWFpbiAqL1xuLSNkZWZpbmUgQVRIXzVHSFpfNTE1MF81MzUwXHRSRUdfUlVMRSg1MTUwLTEwLCA1MzUwKzEwLCA4MCwgMCwgMzAsXFxcbisjZGVmaW5lIEFUSF81R0haXzUxNTBfNTM1MFx0UkVHX1JVTEUoNTE1MC0xMCwgNTI0MCsxMCwgODAsIDAsIDMwLCAwKSxcXFxuK1x0XHRcdFx0UkVHX1JVTEUoNTI2MC0xMCwgNTM1MCsxMCwgODAsIDAsIDMwLFxcXG4gXHRcdFx0XHRcdCBOTDgwMjExX1JSRl9OT19JUilcbiAjZGVmaW5lIEFUSF81R0haXzU0NzBfNTg1MFx0UkVHX1JVTEUoNTQ3MC0xMCwgNTg1MCsxMCwgODAsIDAsIDMwLFxcXG4gXHRcdFx0XHRcdCBOTDgwMjExX1JSRl9OT19JUilcbkBAIC02NCw3ICs2NSw3IEBAIHN0YXRpYyBpbnQgX19hdGhfcmVnZF9pbml0KHN0cnVjdCBhdGhfcmVndWxhdG9yeSAqcmVnKTtcbiAvKiBDYW4gYmUgdXNlZCBmb3I6XG4gICogMHg2MCwgMHg2MSwgMHg2MiAqL1xuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiBhdGhfd29ybGRfcmVnZG9tXzYwXzYxXzYyID0ge1xuLVx0Lm5fcmVnX3J1bGVzID0gNSxcbitcdC5uX3JlZ19ydWxlcyA9IDYsXG4gXHQuYWxwaGEyID0gIFwiOTlcIixcbiBcdC5yZWdfcnVsZXMgPSB7XG4gXHRcdEFUSF8yR0haX0FMTCxcbkBAIC03NCw3ICs3NSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiBhdGhfd29ybGRfcmVnZG9tXzYwXzYxXzYyID0ge1xuIFxuIC8qIENhbiBiZSB1c2VkIGJ5IDB4NjMgYW5kIDB4NjUgKi9cbiBzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW4gYXRoX3dvcmxkX3JlZ2RvbV82M182NSA9IHtcbi1cdC5uX3JlZ19ydWxlcyA9IDQsXG4rXHQubl9yZWdfcnVsZXMgPSA1LFxuIFx0LmFscGhhMiA9ICBcIjk5XCIsXG4gXHQucmVnX3J1bGVzID0ge1xuIFx0XHRBVEhfMkdIWl9DSDAxXzExLFxuQEAgLTg1LDcgKzg2LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluIGF0aF93b3JsZF9yZWdkb21fNjNfNjUgPSB7XG4gXG4gLyogQ2FuIGJlIHVzZWQgYnkgMHg2NCBvbmx5ICovXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluIGF0aF93b3JsZF9yZWdkb21fNjQgPSB7XG4tXHQubl9yZWdfcnVsZXMgPSAzLFxuK1x0Lm5fcmVnX3J1bGVzID0gNCxcbiBcdC5hbHBoYTIgPSAgXCI5OVwiLFxuIFx0LnJlZ19ydWxlcyA9IHtcbiBcdFx0QVRIXzJHSFpfQ0gwMV8xMSxcbkBAIC05NSw3ICs5Niw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiBhdGhfd29ybGRfcmVnZG9tXzY0ID0ge1xuIFxuIC8qIENhbiBiZSB1c2VkIGJ5IDB4NjYgYW5kIDB4NjkgKi9cbiBzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW4gYXRoX3dvcmxkX3JlZ2RvbV82Nl82OSA9IHtcbi1cdC5uX3JlZ19ydWxlcyA9IDMsXG4rXHQubl9yZWdfcnVsZXMgPSA0LFxuIFx0LmFscGhhMiA9ICBcIjk5XCIsXG4gXHQucmVnX3J1bGVzID0ge1xuIFx0XHRBVEhfMkdIWl9DSDAxXzExLFxuQEAgLTEwNSw3ICsxMDYsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW4gYXRoX3dvcmxkX3JlZ2RvbV82Nl82OSA9IHtcbiBcbiAvKiBDYW4gYmUgdXNlZCBieSAweDY3LCAweDY4LCAweDZBIGFuZCAweDZDICovXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluIGF0aF93b3JsZF9yZWdkb21fNjdfNjhfNkFfNkMgPSB7XG4tXHQubl9yZWdfcnVsZXMgPSA0LFxuK1x0Lm5fcmVnX3J1bGVzID0gNSxcbiBcdC5hbHBoYTIgPSAgXCI5OVwiLFxuIFx0LnJlZ19ydWxlcyA9IHtcbiBcdFx0QVRIXzJHSFpfQ0gwMV8xMSxcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDExOjQyOjQ2LjIyNDU3Nzc2OFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjk3MjMzNzU0MzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQb3RlbnRpYWwgSW1wYWN0IG9mIGEgV2lyZWxlc3MgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gdGhlIHBhdGNoIHRvdWNoZXMgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmNgLiBSaWdodCBhd2F5LCBteSBleHBlcnQgbWluZCBraWNrcyBpbi4gVGltZSB0byBkaWcgaW4gYW5kIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucy4gRmlyc3QsIGxldCdzIGVzdGFibGlzaCB0aGUgcm9sZSBvZiBgYXRoL3JlZ2QuY2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgaXQgKmRvZXMqIGluIHRoZSBncmFuZCBzY2hlbWUgb2YgdGhpbmdzIOKAkyB3aGF0J3MgaXRzIHB1cnBvc2Ugd2l0aGluIHRoZSBBdGhlcm9zIHdpcmVsZXNzIGRyaXZlciBlY29zeXN0ZW0/IElzIGl0IGludm9sdmVkIGluIGhhcmR3YXJlLXNwZWNpZmljIGNvbmZpZ3VyYXRpb25zLCBvciBkb2VzIGl0IGhhbmRsZSBtb3JlIGdlbmVyYWwgcmVndWxhdG9yeSBkb21haW4gYXNwZWN0cz9cblxuTmV4dCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlLiBXaGljaCBzcGVjaWZpYyBoYXJkd2FyZSBvciB2aXJ0dWFsIGRldmljZXMgcmVseSBvbiB0aGlzIGNvZGU/IEFyZSB3ZSB0YWxraW5nIGFib3V0IHNwZWNpZmljIFBDSSBkZXZpY2VzLCBtb3JlIHdpZGVseSB1c2VkIGhhcmR3YXJlLCBvciBldmVuIHNvbWV0aGluZyByZWFjaGFibGUgdGhyb3VnaCB2aXJ0dWFsIGludGVyZmFjZXMgbGlrZSBtYWM4MDIxMSBod3NpbSBvciBhIFVTQiB3aWZpIGRldmljZSBsaWtlIGF0aDlrX2h0YyBvciBvdGhlciBhdGhrIGRldmljZXM/IEtub3dpbmcgdGhpcyB3aWxsIHNpZ25pZmljYW50bHkgaW5mbHVlbmNlIHRoZSByaXNrIGFzc2Vzc21lbnQuIEl0IHdpbGwgYWZmZWN0IG15IGZ1enppbmcgc3RyYXRlZ3kgdG9vLiBJZiBpdCdzIHNvbWV0aGluZyBJIGNhbiBoaXQgZWFzaWx5IHRocm91Z2ggZnV6emluZywgaXQgZWxldmF0ZXMgdGhlIGNvbmNlcm4gbGV2ZWwsIGVzcGVjaWFsbHkgaWYgaXQncyBjb25uZWN0ZWQgdG8gcmVndWxhdGlvbi5cblxuSSdsbCBzdGFydCB3aXRoIHNvbWUgcXVpY2sgYGdyZXBgcyB3aXRoaW4gdGhlIGNvZGViYXNlIHRvIGlkZW50aWZ5IGFsbCB0aGUgY2FsbCBzaXRlcyBhbmQgcmVsYXRlZCBmdW5jdGlvbnMuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBzb2xpZCBwaWN0dXJlIG9mIGhvdyBgYXRoL3JlZ2QuY2AgaXMgaW50ZWdyYXRlZCBhbmQgdXNlZC4gVGhpcyBkYXRhIHdpbGwgZ3VpZGUgdGhlIG5leHQgbGV2ZWwgb2YgYW5hbHlzaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4MDksIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDksIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxMTo0Mjo1NS45NDc5NTU5NzRaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQyOTA0MjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXRoX3dvcmxkX3JlZ2RvbVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYz0yNj1zdGF0aWMgaW50IF9fYXRoX3JlZ2RfaW5pdChzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTY2LSAqIDB4NjAsIDB4NjEsIDB4NjIgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjY3OnN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiBhdGhfd29ybGRfcmVnZG9tXzYwXzYxXzYyID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNjgtXFx0Lm5fcmVnX3J1bGVzID0gNixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNzYtLyogQ2FuIGJlIHVzZWQgYnkgMHg2MyBhbmQgMHg2NSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6Nzc6c3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluIGF0aF93b3JsZF9yZWdkb21fNjNfNjUgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy03OC1cXHQubl9yZWdfcnVsZXMgPSA1LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy04Ny0vKiBDYW4gYmUgdXNlZCBieSAweDY0IG9ubHkgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjg4OnN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiBhdGhfd29ybGRfcmVnZG9tXzY0ID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtODktXFx0Lm5fcmVnX3J1bGVzID0gNCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtOTctLyogQ2FuIGJlIHVzZWQgYnkgMHg2NiBhbmQgMHg2OSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6OTg6c3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluIGF0aF93b3JsZF9yZWdkb21fNjZfNjkgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy05OS1cXHQubl9yZWdfcnVsZXMgPSA0LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0xMDctLyogQ2FuIGJlIHVzZWQgYnkgMHg2NywgMHg2OCwgMHg2QSBhbmQgMHg2QyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6MTA4OnN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiBhdGhfd29ybGRfcmVnZG9tXzY3XzY4XzZBXzZDID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMTA5LVxcdC5uX3JlZ19ydWxlcyA9IDUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jPTIxNz1zdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW4gKmF0aF9kZWZhdWx0X3dvcmxkX3JlZ2RvbWFpbih2b2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0yMTktXFx0LyogdGhpcyBpcyB0aGUgbW9zdCByZXN0cmljdGl2ZSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6MjIwOlxcdHJldHVybiBcXHUwMDI2YXRoX3dvcmxkX3JlZ2RvbV82NDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTIyMS19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jPTIyMz1zdGF0aWMgY29uc3Qgc3RydWN0XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzoyMjQ6aWVlZTgwMjExX3JlZ2RvbWFpbiAqYXRoX3dvcmxkX3JlZ2RvbWFpbihzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTIyNS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTIyOS1cXHRjYXNlIDB4NjI6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzoyMzA6XFx0XFx0cmV0dXJuIFxcdTAwMjZhdGhfd29ybGRfcmVnZG9tXzYwXzYxXzYyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjMxLVxcdGNhc2UgMHg2MzpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTIzMi1cXHRjYXNlIDB4NjU6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzoyMzM6XFx0XFx0cmV0dXJuIFxcdTAwMjZhdGhfd29ybGRfcmVnZG9tXzYzXzY1O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjM0LVxcdGNhc2UgMHg2NDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjIzNTpcXHRcXHRyZXR1cm4gXFx1MDAyNmF0aF93b3JsZF9yZWdkb21fNjQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0yMzYtXFx0Y2FzZSAweDY2OlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjM3LVxcdGNhc2UgMHg2OTpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjIzODpcXHRcXHRyZXR1cm4gXFx1MDAyNmF0aF93b3JsZF9yZWdkb21fNjZfNjk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0yMzktXFx0Y2FzZSAweDY3Olxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0yNDItXFx0Y2FzZSAweDZDOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6MjQzOlxcdFxcdHJldHVybiBcXHUwMDI2YXRoX3dvcmxkX3JlZ2RvbV82N182OF82QV82QztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTI0NC1cXHRkZWZhdWx0Olxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYz02MzY9YXRoX3JlZ2RfaW5pdF93aXBoeShzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNjUxLVxcdFxcdCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NjUyOlxcdFxcdHJlZ2QgPSBhdGhfd29ybGRfcmVnZG9tYWluKHJlZyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy02NTMtXFx0XFx0d2lwaHktXFx1MDAzZXJlZ3VsYXRvcnlfZmxhZ3MgfD0gUkVHVUxBVE9SWV9DT1VOVFJZX0lFX0ZPTExPV19QT1dFUjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTE6NDI6NTYuMDAyMjUxNzc5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjQxMTMxODA2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbnZlc3RpZ2F0aW5nIGF0aF9yZWdkIEluaXRpYWxpemF0aW9uKipcblxuT2theSwgc28gSSB3YW50IHRvIGZpZ3VyZSBvdXQgd2hpY2ggZHJpdmVycyB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYCBkaXJlY3RvcnkgYXJlIHVzaW5nIGVpdGhlciBgYXRoX3JlZ2RfaW5pdF93aXBoeWAgb3IsIG1vcmUgYnJvYWRseSwgYW55dGhpbmcgZGVmaW5lZCBpbiBgYXRoX3JlZ2QuY2AuIFRoaXMgaXNuJ3QgbmVjZXNzYXJpbHkgYSBjb21wbGV4IHF1ZXJ5LCBidXQgSSdtIHRoaW5raW5nIGFib3V0IHRoZSBtb3N0IGVmZmljaWVudCB3YXkgdG8gdHJhY2sgdGhpcyBkb3duLiBJJ2xsIHByb2JhYmx5IHN0YXJ0IHdpdGggYSBgZ3JlcGAgb3IgYGFja2AgY29tbWFuZCBhY3Jvc3MgdGhlIGNvZGViYXNlLCB0YXJnZXRpbmcgdGhvc2Ugc3BlY2lmaWMgZnVuY3Rpb24gbmFtZXMgb3IsIHBvdGVudGlhbGx5LCBqdXN0IHRoZSBmaWxlbmFtZSBgYXRoX3JlZ2QuY2AuIEkgbmVlZCB0byBlbnN1cmUgdGhlIHNlYXJjaCBpcyBzY29wZWQgY29ycmVjdGx5IHRvIGF2b2lkIG5vaXNlIGZyb20gaXJyZWxldmFudCBtYXRjaGVzIGluIGluY2x1ZGVzIG9yIGNvbW1lbnRzLiBUaGlua2luZyBhYm91dCBpdCwgc2luY2UgSSBhbSBhIHN5c3RlbXMgZXhwZXJ0LCBJIHNob3VsZCBwcm9iYWJseSBhbHNvIGNvbnNpZGVyIHRoYXQgSSBtaWdodCBuZWVkIHRvIGFjY291bnQgZm9yIGluZGlyZWN0IGNhbGxzIG9yIG1hY3JvcyB0aGF0IG1pZ2h0IGJlIGRlZmluZWQgd2hpY2ggbWlnaHQgY2FsbCB0aGlzLCByYXRoZXIgdGhhbiBqdXN0IGRpcmVjdCByZWZlcmVuY2VzLiBEZXBlbmRpbmcgb24gdGhlIHJlc3VsdHMsIEkgbWlnaHQgaGF2ZSB0byBnbyBkZWVwZXIsIHBlcmhhcHMgY3Jvc3MtcmVmZXJlbmNpbmcgdGhlIHJlc3VsdHMgd2l0aCBtb2R1bGUgZGVwZW5kZW5jaWVzIG9yIGV4YW1pbmluZyB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiB0byBpZGVudGlmeSBob3cgdGhlc2UgY29tcG9uZW50cyBhcmUgbGlua2VkIHRvZ2V0aGVyLiBUaGlzIGluaXRpYWwgc2VhcmNoIHNob3VsZCBnaXZlIG1lIGEgcHJldHR5IGdvb2Qgc3RhcnRpbmcgcG9pbnQsIGFuZCBJIHdpbGwgYmUgYWJsZSB0byBuYXJyb3cgaXQgZG93biBxdWlja2x5LiBJIHdpbGwgdGhlbiBiZSBhYmxlIHRvIHRyYWNlIGRvd24gd2hhdCB0aG9zZSBtb2R1bGVzIGFyZSBkb2luZyBpbiB0aGVpciBpbml0aWFsaXphdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1ODUsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxMTo0Mjo1OC40MTM1NzM0MDhaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTI4ODQ0NjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXRoX3JlZ2RfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jPTk5MDg9c3RhdGljIGludCBhdGgxMGtfbWFjX2dldF93cmRkX3JlZ3VsYXRvcnkoc3RydWN0IGF0aDEwayAqYXIsIHUxNiAqcmQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTk5NDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYzo5OTQ3OlxcdCpyZCA9IGF0aF9yZWdkX2ZpbmRfY291bnRyeV9ieV9uYW1lKGFscGhhMik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy05OTQ4LVxcdGlmICgqcmQgPT0gMHhmZmZmKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYz05OTcxPWludCBhdGgxMGtfbWFjX3JlZ2lzdGVyKHN0cnVjdCBhdGgxMGsgKmFyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy0xMDMwMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jOjEwMzAzOlxcdHJldCA9IGF0aF9yZWdkX2luaXQoXFx1MDAyNmFyLVxcdTAwM2VhdGhfY29tbW9uLnJlZ3VsYXRvcnksIGFyLVxcdTAwM2Vody1cXHUwMDNld2lwaHksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy0xMDMwNC1cXHRcXHRcXHQgICAgYXRoMTBrX3JlZ19ub3RpZmllcik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNWsvYmFzZS5jPTMwMjU9YXRoNWtfaW5pdChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9iYXNlLmMtMzEzNS1cXHRyZWd1bGF0b3J5LVxcdTAwM2VjdXJyZW50X3JkID0gYWgtXFx1MDAzZWFoX2NhcGFiaWxpdGllcy5jYXBfZWVwcm9tLmVlX3JlZ2RvbWFpbjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNWsvYmFzZS5jOjMxMzY6XFx0cmV0ID0gYXRoX3JlZ2RfaW5pdChyZWd1bGF0b3J5LCBody1cXHUwMDNld2lwaHksIGF0aDVrX3JlZ19ub3RpZmllcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDVrL2Jhc2UuYy0zMTM3LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9waHkuYz0yNzYxPWF0aDVrX2dldF9tYXhfY3RsX3Bvd2VyKHN0cnVjdCBhdGg1a19odyAqYWgsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNWsvcGh5LmMtMjc3NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNWsvcGh5LmM6Mjc3NTpcXHRjdGxfbW9kZSA9IGF0aF9yZWdkX2dldF9iYW5kX2N0bChyZWd1bGF0b3J5LCBjaGFubmVsLVxcdTAwM2ViYW5kKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNWsvcGh5LmMtMjc3Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYz04Mjg9c3RhdGljIGludCBhdGg5a19pbml0X2RldmljZShzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmMtODUxLVxcdC8qIEluaXRpYWxpemUgcmVndWxhdG9yeSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYzo4NTI6XFx0ZXJyb3IgPSBhdGhfcmVnZF9pbml0KFxcdTAwMjZjb21tb24tXFx1MDAzZXJlZ3VsYXRvcnksIHByaXYtXFx1MDAzZWh3LVxcdTAwM2V3aXBoeSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmMtODUzLVxcdFxcdFxcdCAgICAgIGF0aDlrX3JlZ19ub3RpZmllcik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHcuYz0xMTc3PXUzMiBhdGg5a19yZWdkX2dldF9jdGwoc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcsIHN0cnVjdCBhdGg5a19jaGFubmVsICpjaGFuKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9ody5jLTExNzgte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9ody5jOjExNzk6XFx0dTMyIGN0bCA9IGF0aF9yZWdkX2dldF9iYW5kX2N0bChyZWcsIGNoYW4tXFx1MDAzZWNoYW4tXFx1MDAzZWJhbmQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9ody5jLTExODAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jPTEwMDQ9aW50IGF0aDlrX2luaXRfZGV2aWNlKHUxNiBkZXZpZCwgc3RydWN0IGF0aF9zb2Z0YyAqc2MsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jLTEwMjItXFx0LyogSW5pdGlhbGl6ZSByZWd1bGF0b3J5ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYzoxMDIzOlxcdGVycm9yID0gYXRoX3JlZ2RfaW5pdChcXHUwMDI2Y29tbW9uLVxcdTAwM2VyZWd1bGF0b3J5LCBzYy1cXHUwMDNlaHctXFx1MDAzZXdpcGh5LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmMtMTAyNC1cXHRcXHRcXHQgICAgICBhdGg5a19yZWdfbm90aWZpZXIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL21haW4uYz0xOTUzPWludCBjYXJsOTE3MF9yZWdpc3RlcihzdHJ1Y3QgYXI5MTcwICphcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9jYXJsOTE3MC9tYWluLmMtMTk3MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvbWFpbi5jOjE5NzE6XFx0ZXJyID0gYXRoX3JlZ2RfaW5pdChyZWd1bGF0b3J5LCBhci1cXHUwMDNlaHctXFx1MDAzZXdpcGh5LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9jYXJsOTE3MC9tYWluLmMtMTk3Mi1cXHRcXHRcXHQgICAgY2FybDkxNzBfcmVnX25vdGlmaWVyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9jYXJsOTE3MC9waHkuYz0xMjkxPXN0YXRpYyB2b2lkIGNhcmw5MTcwX2NhbGNfY3RsKHN0cnVjdCBhcjkxNzAgKmFyLCB1MzIgZnJlcSwgZW51bSBjYXJsOTE3MF9idyBidylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9jYXJsOTE3MC9waHkuYy0xMzI2LVxcdCAqIGhwcmVnLmM6OnpmSHBHZXRSZWd1bGF0b3J5RG9tYWluKCkgYW5kXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL3BoeS5jOjEzMjc6XFx0ICogYXRoL3JlZ2QuYzo6YXRoX3JlZ2RfZ2V0X2JhbmRfY3RsKCkgLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9jYXJsOTE3MC9waHkuYy0xMzI4LVxcdCAqIGUuZy4gZm9yIEZDQzNfV09STEQgdGhlIE9UVVMgcHJvY2VkdXJlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvcGh5LmMtMTMzMS1cXHQgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvcGh5LmM6MTMzMjpcXHRjdGxfZ3JwID0gYXRoX3JlZ2RfZ2V0X2JhbmRfY3RsKFxcdTAwMjZhci1cXHUwMDNlY29tbW9uLnJlZ3VsYXRvcnksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL3BoeS5jLTEzMzMtXFx0XFx0XFx0XFx0XFx0YXItXFx1MDAzZWh3LVxcdTAwM2Vjb25mLmNoYW5kZWYuY2hhbi1cXHUwMDNlYmFuZCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTI1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6MjY6c3RhdGljIGludCBfX2F0aF9yZWdkX2luaXQoc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjctXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jPTE5OT1zdGF0aWMgaW5saW5lIGJvb2wgaXNfd3dyX3NrdSh1MTYgcmVnZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjA1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6MjA2OnN0YXRpYyB1MTYgYXRoX3JlZ2RfZ2V0X2VlcHJvbVJEKHN0cnVjdCBhdGhfcmVndWxhdG9yeSAqcmVnKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjA3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM9MjExPWJvb2wgYXRoX2lzX3dvcmxkX3JlZ2Qoc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0yMTIte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6MjEzOlxcdHJldHVybiBpc193d3Jfc2t1KGF0aF9yZWdkX2dldF9lZXByb21SRChyZWcpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTIxNC19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jPTQzNz1zdGF0aWMgdm9pZCBhdGhfcmVnX2FwcGx5X3dvcmxkX2ZsYWdzKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTQ1OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjQ1OTp1MTYgYXRoX3JlZ2RfZmluZF9jb3VudHJ5X2J5X25hbWUoY2hhciAqYWxwaGEyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNDYwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNDY5LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjQ3MDpFWFBPUlRfU1lNQk9MKGF0aF9yZWdkX2ZpbmRfY291bnRyeV9ieV9uYW1lKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTQ3MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jPTQ3Mj1zdGF0aWMgaW50IF9fYXRoX3JlZ19keW5fY291bnRyeShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy00ODEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo0ODI6XFx0Y291bnRyeV9jb2RlID0gYXRoX3JlZ2RfZmluZF9jb3VudHJ5X2J5X25hbWUocmVxdWVzdC1cXHUwMDNlYWxwaGEyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTQ4My1cXHRpZiAoY291bnRyeV9jb2RlID09ICh1MTYpIC0xKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy00ODgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo0ODk6XFx0X19hdGhfcmVnZF9pbml0KHJlZyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy00OTAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jPTU1MD1FWFBPUlRfU1lNQk9MKGF0aF9yZWdfbm90aWZpZXJfYXBwbHkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNTUxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NTUyOnN0YXRpYyBib29sIGF0aF9yZWdkX2lzX2VlcHJvbV92YWxpZChzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTU1My17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo1NTQ6XFx0dTE2IHJkID0gYXRoX3JlZ2RfZ2V0X2VlcHJvbVJEKHJlZyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy01NTUtXFx0aW50IGk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jPTU4MT1zdGF0aWMgc3RydWN0IGNvdW50cnlfY29kZV90b19lbnVtX3JkKlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NTgyOmF0aF9yZWdkX2ZpbmRfY291bnRyeSh1MTYgY291bnRyeUNvZGUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy01ODMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYz01OTQ9c3RhdGljIHN0cnVjdCBjb3VudHJ5X2NvZGVfdG9fZW51bV9yZCpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjU5NTphdGhfcmVnZF9maW5kX2NvdW50cnlfYnlfcmQoaW50IHJlZ2RtbilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTU5Ni17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTYwNi0vKiBSZXR1cm5zIHRoZSBtYXAgb2YgdGhlIEVFUFJPTSBzZXQgUkQgdG8gYSBjb3VudHJ5IGNvZGUgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjYwNzpzdGF0aWMgdTE2IGF0aF9yZWdkX2dldF9kZWZhdWx0X2NvdW50cnkodTE2IHJkKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNjA4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNjEyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NjEzOlxcdFxcdGNvdW50cnkgPSBhdGhfcmVnZF9maW5kX2NvdW50cnkoY2MpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNjE0LVxcdFxcdGlmIChjb3VudHJ5ICE9IE5VTEwpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jPTYzNT1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo2MzY6YXRoX3JlZ2RfaW5pdF93aXBoeShzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTYzNy1cXHRcXHQgICAgc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNjc1LSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6Njc2OnN0YXRpYyB2b2lkIGF0aF9yZWdkX3Nhbml0aXplKHN0cnVjdCBhdGhfcmVndWxhdG9yeSAqcmVnKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNjc3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNjgzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6Njg0OnN0YXRpYyBpbnQgX19hdGhfcmVnZF9pbml0KHN0cnVjdCBhdGhfcmVndWxhdG9yeSAqcmVnKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNjg1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNjkxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NjkyOlxcdGF0aF9yZWdkX3Nhbml0aXplKHJlZyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy02OTMtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTY5NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjY5NjpcXHRpZiAoIWF0aF9yZWdkX2lzX2VlcHJvbV92YWxpZChyZWcpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy02OTctXFx0XFx0cHJfZXJyKFxcXCJJbnZhbGlkIEVFUFJPTSBjb250ZW50c1xcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTcwMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjcwMTpcXHRyZWdkbW4gPSBhdGhfcmVnZF9nZXRfZWVwcm9tUkQocmVnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjcwMjpcXHRyZWctXFx1MDAzZWNvdW50cnlfY29kZSA9IGF0aF9yZWdkX2dldF9kZWZhdWx0X2NvdW50cnkocmVnZG1uKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTcwMy1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNzE1LVxcdFxcdCAgICAgICBcXFwibWFwIHNlYXJjaFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo3MTY6XFx0XFx0Y291bnRyeSA9IGF0aF9yZWdkX2ZpbmRfY291bnRyeShyZWctXFx1MDAzZWNvdW50cnlfY29kZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy03MTctXFx0XFx0aWYgKGNvdW50cnkgPT0gTlVMTCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy03MzktXFx0aWYgKCFjb3VudHJ5KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NzQwOlxcdFxcdGNvdW50cnkgPSBhdGhfcmVnZF9maW5kX2NvdW50cnlfYnlfcmQocmVnZG1uKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTc0MS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM9NzU4PWludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NzU5OmF0aF9yZWdkX2luaXQoc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy03NjAtXFx0ICAgICAgc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNzY3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NzY4OlxcdHIgPSBfX2F0aF9yZWdkX2luaXQocmVnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTc2OS1cXHRpZiAocilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNzc1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6Nzc2OlxcdGF0aF9yZWdkX2luaXRfd2lwaHkocmVnLCB3aXBoeSwgcmVnX25vdGlmaWVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTc3Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNzc5LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjc4MDpFWFBPUlRfU1lNQk9MKGF0aF9yZWdkX2luaXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNzgxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NzgyOnUzMiBhdGhfcmVnZF9nZXRfYmFuZF9jdGwoc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy03ODMtXFx0XFx0XFx0ICBlbnVtIG5sODAyMTFfYmFuZCBiYW5kKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy03ODYtXFx0ICAgIChyZWctXFx1MDAzZWNvdW50cnlfY29kZSA9PSBDVFJZX0RFRkFVTFQgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjc4NzpcXHQgICAgIGlzX3d3cl9za3UoYXRoX3JlZ2RfZ2V0X2VlcHJvbVJEKHJlZykpKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNzg4LVxcdFxcdHJldHVybiBTRF9OT19DVEw7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTc5MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjc5MTpcXHRpZiAoYXRoX3JlZ2RfZ2V0X2VlcHJvbVJEKHJlZykgPT0gQ1RSWV9ERUZBVUxUKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy03OTItXFx0XFx0c3dpdGNoIChyZWctXFx1MDAzZXJlZ2lvbikge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy04MTItfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6ODEzOkVYUE9SVF9TWU1CT0woYXRoX3JlZ2RfZ2V0X2JhbmRfY3RsKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmg9MjYyPWJvb2wgYXRoX2lzXzQ5Z2h6X2FsbG93ZWQodTE2IHJlZG9tYWluKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5oOjI2Mzp1MTYgYXRoX3JlZ2RfZmluZF9jb3VudHJ5X2J5X25hbWUoY2hhciAqYWxwaGEyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5oOjI2NDppbnQgYXRoX3JlZ2RfaW5pdChzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZywgc3RydWN0IHdpcGh5ICp3aXBoeSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5oLTI2NS1cXHRcXHQgIHZvaWQgKCpyZWdfbm90aWZpZXIpKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuaC0yNjYtXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCByZWd1bGF0b3J5X3JlcXVlc3QgKnJlcXVlc3QpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5oOjI2Nzp1MzIgYXRoX3JlZ2RfZ2V0X2JhbmRfY3RsKHN0cnVjdCBhdGhfcmVndWxhdG9yeSAqcmVnLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmgtMjY4LVxcdFxcdFxcdCAgZW51bSBubDgwMjExX2JhbmQgYmFuZCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDExOjQyOjU4LjQ2NjQ2MjQ1M1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIzNDYyOTk4OTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFVTQiBXaXJlbGVzcyBEcml2ZXIgSW5pdGlhbGl6YXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBpbnRvIHRoZXNlIFVTQiB3aXJlbGVzcyBkcml2ZXJzLCBzcGVjaWZpY2FsbHkgYGF0aDlrX2h0Y2AgYW5kIGBjYXJsOTE3MGAuIEl0J3MgcHJldHR5IGNsZWFyIHRoZXkgYXJlIFVTQiBkcml2ZXJzLCBhbmQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXkgYmVoYXZlIGluIGEgVVNCIGNvbnRleHQuIEtub3dpbmcgdGhlIGlucyBhbmQgb3V0cyBvZiBVU0IgZGV2aWNlIGVtdWxhdGlvbiBpcyBrZXksIHNvIEknbGwgYmUgZm9jdXNlZCBvbiBob3cgdGhlc2UgZHJpdmVycyBhcmUgdHJlYXRlZCBpbiBlbnZpcm9ubWVudHMgd2hlcmUgVVNCIFJhdyBHYWRnZXQgYW5kIHN5emthbGxlciBmdXp6aW5nIGFyZSBhdCBwbGF5IHdpdGhpbiBRRU1VIG9yIG90aGVyIHZpcnR1YWxpemVkIHNldHVwcy4gSSBuZWVkIHRvIG5haWwgZG93biBleGFjdGx5IGhvdyB0aGVzZSBkcml2ZXJzIGFyZSBwcm9iZWQgYW5kIGluaXRpYWxpemVkIHRocm91Z2ggdGhlIFVTQiBpbnRlcmZhY2UuIFRoYXQncyB0aGUgY29yZSBxdWVzdGlvbiBoZXJlLiBUbyBnZXQgYSBoYW5kbGUgb24gaXQsIEknbGwgbmVlZCB0byBkaWcgaW50byB0aGUgcmVsZXZhbnQgS2NvbmZpZyBvcHRpb25zIGZvciBgYXRoOWtfaHRjYCwgYGNhcmw5MTcwYCBhbmQgYWxzbyB0aGUgYGF0aC9yZWdkLmNgIGZpbGUgd2hpY2ggaXMgbGlrZWx5IHRvIGhvbGQgaW1wb3J0YW50IHJlZ3VsYXRvcnkgZG9tYWluIGluZm9ybWF0aW9uIHJlbGF0ZWQgdG8gdGhlc2UgZHJpdmVycy4gVW5kZXJzdGFuZGluZyB0aGUgY29uZmlndXJhdGlvbiBhbmQgaW5pdGlhbGl6YXRpb24gZmxvdyBpcyBlc3NlbnRpYWwgZm9yIGZ1cnRoZXIgYW5hbHlzaXMgb3IgdGVzdGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAxODYsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTE6NDM6MDAuODEyNzY1MTc2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzcyMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogSVNDXFxuICAgMjpcXHRjb25maWcgQVRIX0NPTU1PTlxcbiAgIDM6XFx0XFx0dHJpc3RhdGVcXG4gICA0OlxcdFxcbiAgIDU6XFx0Y29uZmlnIFdMQU5fVkVORE9SX0FUSFxcbiAgIDY6XFx0XFx0Ym9vbCBcXFwiQXRoZXJvcy9RdWFsY29tbSBkZXZpY2VzXFxcIlxcbiAgIDc6XFx0XFx0ZGVmYXVsdCB5XFxuICAgODpcXHRcXHRoZWxwXFxuICAgOTpcXHRcXHQgIElmIHlvdSBoYXZlIGEgd2lyZWxlc3MgY2FyZCBiZWxvbmdpbmcgdG8gdGhpcyBjbGFzcywgc2F5IFkuXFxuICAxMDpcXHRcXG4gIDExOlxcdFxcdCAgTm90ZSB0aGF0IHRoZSBhbnN3ZXIgdG8gdGhpcyBxdWVzdGlvbiBkb2Vzbid0IGRpcmVjdGx5IGFmZmVjdCB0aGVcXG4gIDEyOlxcdFxcdCAga2VybmVsOiBzYXlpbmcgTiB3aWxsIGp1c3QgY2F1c2UgdGhlIGNvbmZpZ3VyYXRvciB0byBza2lwIGFsbCB0aGVcXG4gIDEzOlxcdFxcdCAgcXVlc3Rpb25zIGFib3V0IHRoZXNlIGNhcmRzLiBJZiB5b3Ugc2F5IFksIHlvdSB3aWxsIGJlIGFza2VkIGZvclxcbiAgMTQ6XFx0XFx0ICB5b3VyIHNwZWNpZmljIGNhcmQgaW4gdGhlIGZvbGxvd2luZyBxdWVzdGlvbnMuXFxuICAxNTpcXHRcXG4gIDE2OlxcdFxcdCAgRm9yIG1vcmUgaW5mb3JtYXRpb24gYW5kIGRvY3VtZW50YXRpb24gb24gdGhpcyBtb2R1bGUgeW91IGNhbiB2aXNpdDpcXG4gIDE3OlxcdFxcbiAgMTg6XFx0XFx0ICBodHRwczovL3dpcmVsZXNzLndpa2kua2VybmVsLm9yZy9lbi91c2Vycy9Ecml2ZXJzL2F0aFxcbiAgMTk6XFx0XFxuICAyMDpcXHRcXHQgIEZvciBpbmZvcm1hdGlvbiBvbiBhbGwgQXRoZXJvcyB3aXJlbGVzcyBkcml2ZXJzIHZpc2l0OlxcbiAgMjE6XFx0XFxuICAyMjpcXHRcXHQgIGh0dHBzOi8vd2lyZWxlc3Mud2lraS5rZXJuZWwub3JnL2VuL3VzZXJzL0RyaXZlcnMvQXRoZXJvc1xcbiAgMjM6XFx0XFxuICAyNDpcXHRpZiBXTEFOX1ZFTkRPUl9BVEhcXG4gIDI1OlxcdFxcbiAgMjY6XFx0Y29uZmlnIEFUSF9ERUJVR1xcbiAgMjc6XFx0XFx0Ym9vbCBcXFwiQXRoZXJvcyB3aXJlbGVzcyBkZWJ1Z2dpbmdcXFwiXFxuICAyODpcXHRcXHRoZWxwXFxuICAyOTpcXHRcXHQgIFNheSBZLCBpZiB5b3Ugd2FudCB0byBkZWJ1ZyBhdGhlcm9zIHdpcmVsZXNzIGRyaXZlcnMuXFxuICAzMDpcXHRcXHQgIFJpZ2h0IG5vdyBvbmx5IGF0aDlrIG1ha2VzIHVzZSBvZiB0aGlzLlxcbiAgMzE6XFx0XFxuICAzMjpcXHRjb25maWcgQVRIX1RSQUNFUE9JTlRTXFxuICAzMzpcXHRcXHRib29sIFxcXCJBdGhlcm9zIHdpcmVsZXNzIHRyYWNpbmdcXFwiXFxuICAzNDpcXHRcXHRkZXBlbmRzIG9uIEFUSF9ERUJVR1xcbiAgMzU6XFx0XFx0ZGVwZW5kcyBvbiBFVkVOVF9UUkFDSU5HXFxuICAzNjpcXHRcXHRoZWxwXFxuICAzNzpcXHRcXHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgdHJhY2Vwb2ludHMgZm9yIGF0aGVyb3Mgd2lyZWxlc3MgZHJpdmVycy5cXG4gIDM4OlxcdFxcdCAgQ3VycmVudGx5LCBhdGg5ayBtYWtlcyB1c2Ugb2YgdGhpcyBmYWNpbGl0eS5cXG4gIDM5OlxcdFxcbiAgNDA6XFx0Y29uZmlnIEFUSF9SRUdfRFlOQU1JQ19VU0VSX1JFR19ISU5UU1xcbiAgNDE6XFx0XFx0Ym9vbCBcXFwiQXRoZXJvcyBkeW5hbWljIHVzZXIgcmVndWxhdG9yeSBoaW50c1xcXCJcXG4gIDQyOlxcdFxcdGRlcGVuZHMgb24gQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXFxuICA0MzpcXHRcXHRkZWZhdWx0IG5cXG4gIDQ0OlxcdFxcdGhlbHBcXG4gIDQ1OlxcdFxcdCAgU2F5IE4uIFRoaXMgc2hvdWxkIG9ubHkgYmUgZW5hYmxlZCBpbiBjb3VudHJpZXMgd2hlcmVcXG4gIDQ2OlxcdFxcdCAgdGhpcyBmZWF0dXJlIGlzIGV4cGxpY2l0bHkgYWxsb3dlZCBhbmQgb25seSBvbiBjYXJkcyB0aGF0XFxuICA0NzpcXHRcXHQgIHNwZWNpZmljYWxseSBoYXZlIGJlZW4gdGVzdGVkIGZvciB0aGlzLlxcbiAgNDg6XFx0XFxuICA0OTpcXHRjb25maWcgQVRIX1JFR19EWU5BTUlDX1VTRVJfQ0VSVF9URVNUSU5HXFxuICA1MDpcXHRcXHRib29sIFxcXCJBdGhlcm9zIGR5bmFtaWMgdXNlciByZWd1bGF0b3J5IHRlc3RpbmdcXFwiXFxuICA1MTpcXHRcXHRkZXBlbmRzIG9uIEFUSF9SRUdfRFlOQU1JQ19VU0VSX1JFR19ISU5UUyBcXHUwMDI2XFx1MDAyNiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcXG4gIDUyOlxcdFxcdGRlZmF1bHQgblxcbiAgNTM6XFx0XFx0aGVscFxcbiAgNTQ6XFx0XFx0ICBTYXkgTi4gVGhpcyBzaG91bGQgb25seSBiZSBlbmFibGVkIG9uIHN5c3RlbXNcXG4gIDU1OlxcdFxcdCAgdW5kZXJnb2luZyBjZXJ0aWZpY2F0aW9uIHRlc3RpbmcuXFxuICA1NjpcXHRcXG4gIDU3OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDVrL0tjb25maWdcXFwiXFxuICA1ODpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnXFxcIlxcbiAgNTk6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvS2NvbmZpZ1xcXCJcXG4gIDYwOlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9LY29uZmlnXFxcIlxcbiAgNjE6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXI1NTIzL0tjb25maWdcXFwiXFxuICA2MjpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL0tjb25maWdcXFwiXFxuICA2MzpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZ1xcXCJcXG4gIDY0OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvS2NvbmZpZ1xcXCJcXG4gIDY1OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnXFxcIlxcbiAgNjY6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWdcXFwiXFxuICA2NzpcXHRcXG4gIDY4OlxcdGVuZGlmXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDExOjQzOjAwLjgxMjg0MzgwNloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE4NzcyOTQ5NDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSB0aGUgb25lIHRoaW5raW5nIGl0OlxuXG4qKkRpdmluZyBpbnRvIHRoZSBBdGhlcm9zIERyaXZlciBNYWtlZmlsZSoqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IHRvIHRoZSBoZWFydCBvZiB0aGlzIHdpcmVsZXNzIGRyaXZlci4gTXkgZ3V0IHRlbGxzIG1lIHRoYXQgYW55IG1vZGlmaWNhdGlvbnMgb3IgZGVlcGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhpcyBhdGhlcm9zIGRyaXZlciBzdGFydHMgd2l0aCBpdHMgYnVpbGQgY29uZmlndXJhdGlvbi4gTGV0J3Mgc2VlLi4uIEknbGwganVtcCByaWdodCBpbnRvIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL01ha2VmaWxlYC4gVGhpcyBpcyB3aGVyZSB0aGUgbWFnaWMgaGFwcGVucyDigJMgd2hlcmUgYWxsIHRoZSBwaWVjZXMgZ2V0IGdsdWVkIHRvZ2V0aGVyLCB3aGVyZSB0aGUgZGVwZW5kZW5jaWVzIGFyZSBkZWZpbmVkLCBhbmQgaG93IHRoZSBkcml2ZXIgdWx0aW1hdGVseSBnZXRzIGNvbXBpbGVkLiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc3RydWN0dXJlOiB3aGF0IHRhcmdldHMgYXJlIGRlZmluZWQsIHdoaWNoIHNvdXJjZSBmaWxlcyBhcmUgaW5jbHVkZWQsIGFuZCBob3cgdGhlIG92ZXJhbGwgYnVpbGQgcHJvY2VzcyBpcyBvcmNoZXN0cmF0ZWQuIEhvcGVmdWxseSwgdGhpcyBNYWtlZmlsZSBpcyB3ZWxsLXN0cnVjdHVyZWQgYW5kIGNvbW1lbnRlZC4gSSdtIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiBhbnkgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gYmFzZWQgb24ga2VybmVsIHZlcnNpb25zLCBoYXJkd2FyZSBwbGF0Zm9ybXMsIG9yIGZlYXR1cmUgZmxhZ3MuIEkgZXhwZWN0IHRvIGJlIGFibGUgdG8gdW5kZXJzdGFuZCB0aGUgZGlmZmVyZW50IGF0aCBkcml2ZXIgdmVyc2lvbnMgaWYgdGhleSBleGlzdCwgYW5kIHRoZSBtb2R1bGUgYXJjaGl0ZWN0dXJlLiBUaGF0IHNob3VsZCBwcm92aWRlIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3Igd2hhdGV2ZXIgSSdtIHRyb3VibGVzaG9vdGluZyBvciBpbnZlc3RpZ2F0aW5nLiBMZXQncyBnZXQgdG8gaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNTQ5LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxMTo0MzowMi42OTAxNDExODRaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzgwOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL01ha2VmaWxlXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogSVNDXFxuICAgMjpcXHRvYmotJChDT05GSUdfQVRINUspXFx0XFx0Kz0gYXRoNWsvXFxuICAgMzpcXHRvYmotJChDT05GSUdfQVRIOUtfSFcpXFx0XFx0Kz0gYXRoOWsvXFxuICAgNDpcXHRvYmotJChDT05GSUdfQ0FSTDkxNzApXFx0XFx0Kz0gY2FybDkxNzAvXFxuICAgNTpcXHRvYmotJChDT05GSUdfQVRINktMKVxcdFxcdCs9IGF0aDZrbC9cXG4gICA2OlxcdG9iai0kKENPTkZJR19BUjU1MjMpXFx0XFx0Kz0gYXI1NTIzL1xcbiAgIDc6XFx0b2JqLSQoQ09ORklHX1dJTDYyMTApXFx0XFx0Kz0gd2lsNjIxMC9cXG4gICA4OlxcdG9iai0kKENPTkZJR19BVEgxMEspXFx0XFx0Kz0gYXRoMTBrL1xcbiAgIDk6XFx0b2JqLSQoQ09ORklHX1dDTjM2WFgpXFx0XFx0Kz0gd2NuMzZ4eC9cXG4gIDEwOlxcdG9iai0kKENPTkZJR19BVEgxMUspXFx0XFx0Kz0gYXRoMTFrL1xcbiAgMTE6XFx0b2JqLSQoQ09ORklHX0FUSDEySylcXHRcXHQrPSBhdGgxMmsvXFxuICAxMjpcXHRcXG4gIDEzOlxcdG9iai0kKENPTkZJR19BVEhfQ09NTU9OKVxcdCs9IGF0aC5vXFxuICAxNDpcXHRcXG4gIDE1OlxcdGF0aC1vYmpzIDo9XFx0bWFpbi5vIFxcXFxcXG4gIDE2OlxcdFxcdFxcdHJlZ2QubyBcXFxcXFxuICAxNzpcXHRcXHRcXHRody5vIFxcXFxcXG4gIDE4OlxcdFxcdFxcdGtleS5vIFxcXFxcXG4gIDE5OlxcdFxcdFxcdGRmc19wYXR0ZXJuX2RldGVjdG9yLm8gXFxcXFxcbiAgMjA6XFx0XFx0XFx0ZGZzX3ByaV9kZXRlY3Rvci5vXFxuICAyMTpcXHRcXG4gIDIyOlxcdGF0aC0kKENPTkZJR19BVEhfREVCVUcpICs9IGRlYnVnLm9cXG4gIDIzOlxcdGF0aC0kKENPTkZJR19BVEhfVFJBQ0VQT0lOVFMpICs9IHRyYWNlLm9cXG4gIDI0OlxcdFxcbiAgMjU6XFx0Q0ZMQUdTX3RyYWNlLm8gOj0gLUkkKHNyYylcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTE6NDM6MDIuNjkwMjIxMTY0WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIwODQ3NDE0MDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBCdWlsZCBEZXBlbmRlbmN5IENoYWluKipcblxuUmlnaHQsIHNvIEkgbmVlZCB0byB0cmFjZSB0aGlzIGRlcGVuZGVuY3kuIE15IHN0YXJ0aW5nIHBvaW50IGlzIHRoYXQgYENPTkZJR19BVEhfQ09NTU9OYCBsZWFkcyB0byB0aGUgY29tcGlsYXRpb24gb2YgYGF0aC5vYCwgYW5kIGNydWNpYWxseSwgdGhhdCBpbmNsdWRlcyBgcmVnZC5vYC4gVGhhdCdzIHRoZSBjb3JlIHJlbGF0aW9uc2hpcCBJJ20gdHJ5aW5nIHRvIHVuZGVyc3RhbmQg4oCTIGhvdyBgcmVnZC5vYCBnZXRzIGJ1aWx0IGludG8gdGhlIGltYWdlLiBOb3csIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgYWN0dWFsbHkgKnNlbGVjdHMqIG9yICplbmFibGVzKiBgQVRIX0NPTU1PTmAgaW4gdGhlIGZpcnN0IHBsYWNlLiBNeSBpbW1lZGlhdGUgYXBwcm9hY2ggd2lsbCBiZSB0byBsZXZlcmFnZSB0aGUgS2NvbmZpZyBmaWxlcywgSSBuZWVkIHRvIHVzZSBgZ3JlcGAgdG8gaHVudCBmb3IgaW5zdGFuY2VzIG9mIGBBVEhfQ09NTU9OYCBhbmQgc2VlIHdoZXJlIGl0IHNob3dzIHVwIGFzIGEgZGVwZW5kZW5jeS4gSSdsbCBzZWFyY2ggdG8gZGV0ZXJtaW5lIHdoYXQgb3RoZXIgY29uZmlncyBhcmUgaW52b2x2ZWQgaW4gZW5hYmxpbmcgYEFUSF9DT01NT05gLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjI0OCwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTE6NDM6MDQuNzc0OTY2Mzg4WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODcxMTI1NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJBVEhfQ09NTU9OXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IElTQ1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9LY29uZmlnOjI6Y29uZmlnIEFUSF9DT01NT05cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvS2NvbmZpZy0zLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvTWFrZWZpbGU9MTE9b2JqLSQoQ09ORklHX0FUSDEySylcXHRcXHQrPSBhdGgxMmsvXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL01ha2VmaWxlLTEyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9NYWtlZmlsZToxMzpvYmotJChDT05GSUdfQVRIX0NPTU1PTilcXHQrPSBhdGgub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9NYWtlZmlsZS0xNC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hcjU1MjMvS2NvbmZpZz0yPWNvbmZpZyBBUjU1MjNcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hcjU1MjMvS2NvbmZpZy00LVxcdGRlcGVuZHMgb24gTUFDODAyMTEgXFx1MDAyNlxcdTAwMjYgVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2FyNTUyMy9LY29uZmlnOjU6XFx0c2VsZWN0IEFUSF9DT01NT05cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXI1NTIzL0tjb25maWctNi1cXHRzZWxlY3QgRldfTE9BREVSXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWc9Mj1jb25maWcgQVRIMTBLXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctNC1cXHRkZXBlbmRzIG9uIE1BQzgwMjExIFxcdTAwMjZcXHUwMDI2IEhBU19ETUFcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWc6NTpcXHRzZWxlY3QgQVRIX0NPTU1PTlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy02LVxcdHNlbGVjdCBDUkMzMlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnPTI9Y29uZmlnIEFUSDExS1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTQtXFx0ZGVwZW5kcyBvbiBNQUM4MDIxMSBcXHUwMDI2XFx1MDAyNiBIQVNfRE1BXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjU6XFx0c2VsZWN0IEFUSF9DT01NT05cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctNi1cXHRzZWxlY3QgUUNPTV9RTUlfSEVMUEVSU1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDVrL0tjb25maWc9Mj1jb25maWcgQVRINUtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9LY29uZmlnLTQtXFx0ZGVwZW5kcyBvbiAoUENJIHx8IEFUSDI1KSBcXHUwMDI2XFx1MDAyNiBNQUM4MDIxMVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9LY29uZmlnOjU6XFx0c2VsZWN0IEFUSF9DT01NT05cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNWsvS2NvbmZpZy02LVxcdHNlbGVjdCBNQUM4MDIxMV9MRURTIGlmIExFRFNfQ0xBU1M9eSB8fCBMRURTX0NMQVNTPU1BQzgwMjExXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZz00PWNvbmZpZyBBVEg5S19DT01NT05cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy01LVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6NjpcXHRzZWxlY3QgQVRIX0NPTU1PTlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTctY29uZmlnIEFUSDlLX0NPTU1PTl9ERUJVR1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL0tjb25maWc9Mj1jb25maWcgQ0FSTDkxNzBcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9jYXJsOTE3MC9LY29uZmlnLTQtXFx0ZGVwZW5kcyBvbiBVU0IgXFx1MDAyNlxcdTAwMjYgTUFDODAyMTFcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvS2NvbmZpZzo1OlxcdHNlbGVjdCBBVEhfQ09NTU9OXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL0tjb25maWctNi1cXHRzZWxlY3QgRldfTE9BREVSXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDExOjQzOjA0LjgzMzY4MjgyM1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMTY3MjQ0MjA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgVVNCIERyaXZlciBSZWd1bGF0b3J5IERvbWFpbiBJbml0aWFsaXphdGlvbioqXG5cbk9rYXksIGxldCdzIGRpdmUgaW4uIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIFVTQiBkcml2ZXJzIGFyZSB1c2luZyB0aGUgYGF0aF9yZWdkX2luaXRgIGZ1bmN0aW9uIG9yIHRoZSBgYXRoX3dvcmxkX3JlZ2RvbV8qYCBzeW1ib2xzIOKAkyB0aG9zZSBhcmUga2V5IGluZGljYXRvcnMgb2YgaG93IHJlZ3VsYXRvcnkgZG9tYWlucyBhcmUgYmVpbmcgaGFuZGxlZC4gTXkgaW5pdGlhbCBmb2N1cyB3aWxsIGJlIG9uIHRoZSBgY2FybDkxNzBgIGFuZCBgYXRoOWtfaHRjYCBkcml2ZXJzLCBnaXZlbiB0aGVpciBoaXN0b3J5IGFuZCBwb3RlbnRpYWwgZm9yIHJlZ3VsYXRvcnkgaW50ZXJhY3Rpb25zLiBJJ2xsIG5lZWQgdG8gc2NydXRpbml6ZSB0aGVtIGNsb3NlbHkuIFRvIGdldCBhIGNvbXByZWhlbnNpdmUgdW5kZXJzdGFuZGluZyBvZiB0aGUgYGF0aDlrX2h0Y2AgZHJpdmVyJ3MgcmVndWxhdG9yeSBjb25maWd1cmF0aW9uLCBJIHNob3VsZCBwcm9iYWJseSBhbHNvIGNoZWNrIGl0cyBhc3NvY2lhdGVkIEtjb25maWcgZmlsZS4gVGhpcyB3aWxsIGxpa2VseSBzaG93IHRoZSBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMgcmVsYXRlZCB0byByZWd1bGF0b3J5IGRvbWFpbiBzdXBwb3J0IHdpdGhpbiB0aGF0IHNwZWNpZmljIGRyaXZlci4gVGltZSB0byBkaWcgaW4hXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzMzQxLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTE6NDM6MDcuMDAwOTI5NTM4WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MjE2MzA1NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJBVEg5S19IVENcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnPTEzPWNvbmZpZyBBVEg5S19CVENPRVhfU1VQUE9SVFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE0LVxcdGJvb2wgXFxcIkF0aGVyb3MgYmx1ZXRvb3RoIGNvZXhpc3RlbmNlIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTU6XFx0ZGVwZW5kcyBvbiAoQVRIOUsgfHwgQVRIOUtfSFRDKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE2LVxcdGRlZmF1bHQgeVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc9MTU2PWNvbmZpZyBBVEg5S19QQ0lfTk9fRUVQUk9NXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTcyOmNvbmZpZyBBVEg5S19IVENcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNzMtXFx0dHJpc3RhdGUgXFxcIkF0aGVyb3MgSFRDIGJhc2VkIHdpcmVsZXNzIGNhcmRzIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xODYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTg3OmNvbmZpZyBBVEg5S19IVENfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE4OC1cXHRib29sIFxcXCJBdGhlcm9zIGF0aDlrX2h0YyBkZWJ1Z2dpbmdcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTg5OlxcdGRlcGVuZHMgb24gQVRIOUtfSFRDIFxcdTAwMjZcXHUwMDI2IERFQlVHX0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTkwLVxcdHNlbGVjdCBBVEg5S19DT01NT05fREVCVUdcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnPTIwNj1jb25maWcgQVRIOUtfQ09NTU9OX1NQRUNUUkFMXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMjA3LVxcdGJvb2wgXFxcIkF0aGVyb3MgYXRoOWsvYXRoOWtfaHRjIHNwZWN0cmFsIHNjYW4gc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoyMDg6XFx0ZGVwZW5kcyBvbiBBVEg5S19ERUJVR0ZTIHx8IEFUSDlLX0hUQ19ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMjA5LVxcdHNlbGVjdCBSRUxBWVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlPTY4PWF0aDlrX2h0Yy15ICs9XFx0aHRjX2hzdC5vIFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS03Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6Nzc6YXRoOWtfaHRjLSQoQ09ORklHX0FUSDlLX0hUQ19ERUJVR0ZTKSArPSBodGNfZHJ2X2RlYnVnLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtNzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlOjc5Om9iai0kKENPTkZJR19BVEg5S19IVEMpICs9IGF0aDlrX2h0Yy5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTgwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwM19lZXByb20uYz0zMzkwPXN0YXRpYyBib29sIGF0aDlrX2h3X2FyOTMwMF9maWxsX2VlcHJvbShzdHJ1Y3QgYXRoX2h3ICphaClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDNfZWVwcm9tLmMtMzQwMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAzX2VlcHJvbS5jOjM0MDE6I2lmIGRlZmluZWQoQ09ORklHX0FUSDlLX0RFQlVHRlMpIHx8IGRlZmluZWQoQ09ORklHX0FUSDlLX0hUQ19ERUJVR0ZTKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDNfZWVwcm9tLmMtMzQwMi1zdGF0aWMgdTMyIGFyOTAwM19kdW1wX21vZGFsX2VlcHJvbShjaGFyICpidWYsIHUzMiBsZW4sIHUzMiBzaXplLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYz0yMzI9c3RhdGljIGlubGluZSB2b2lkIGF0aDlrX3NrYl9xdWV1ZV9jb21wbGV0ZShzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTIzOC1cXHR3aGlsZSAoKHNrYiA9IF9fc2tiX2RlcXVldWUocXVldWUpKSAhPSBOVUxMKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzoyMzk6I2lmZGVmIENPTkZJR19BVEg5S19IVENfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMjQwLVxcdFxcdGludCBsbiA9IHNrYi1cXHUwMDNlbGVuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYz0zNzY9c3RhdGljIGludCBoaWZfdXNiX3NlbmRfdHgoc3RydWN0IGhpZl9kZXZpY2VfdXNiICpoaWZfZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0zOTktXFx0LyogTWdtdC9CZWFjb24gZnJhbWVzIGRvbid0IHVzZSB0aGUgVFggYnVmZmVyIHBvb2wgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjQwMDpcXHRpZiAoKHR4X2N0bC1cXHUwMDNldHlwZSA9PSBBVEg5S19IVENfTUdNVCkgfHxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjQwMTpcXHQgICAgKHR4X2N0bC1cXHUwMDNldHlwZSA9PSBBVEg5S19IVENfQkVBQ09OKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNDAyLVxcdFxcdHJldCA9IGhpZl91c2Jfc2VuZF9tZ210KGhpZl9kZXYsIHNrYik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQwNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjQwNzpcXHRpZiAoKHR4X2N0bC1cXHUwMDNldHlwZSA9PSBBVEg5S19IVENfTk9STUFMKSB8fFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NDA4OlxcdCAgICAodHhfY3RsLVxcdTAwM2V0eXBlID09IEFUSDlLX0hUQ19BTVBEVSkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQwOS1cXHRcXHRfX3NrYl9xdWV1ZV90YWlsKFxcdTAwMjZoaWZfZGV2LVxcdTAwM2V0eC50eF9za2JfcXVldWUsIHNrYik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jPTQ4Nz1zdGF0aWMgaW5saW5lIGJvb2wgY2hlY2tfaW5kZXgoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTggaWR4KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00OTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo0OTM6XFx0aWYgKCh0eF9jdGwtXFx1MDAzZXR5cGUgPT0gQVRIOUtfSFRDX0FNUERVKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNDk0LVxcdCAgICAodHhfY3RsLVxcdTAwM2VzdGFfaWR4ID09IGlkeCkpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9NTY9ZW51bSBodGNfb3Btb2RlIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC02NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6NjU6I2RlZmluZSBBVEg5S19IVENfQU1QRFUgIDFcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6NjY6I2RlZmluZSBBVEg5S19IVENfTk9STUFMIDJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6Njc6I2RlZmluZSBBVEg5S19IVENfQkVBQ09OIDNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6Njg6I2RlZmluZSBBVEg5S19IVENfTUdNVCAgIDRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNjktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjcwOiNkZWZpbmUgQVRIOUtfSFRDX1RYX0NUU09OTFkgICAgICAweDFcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6NzE6I2RlZmluZSBBVEg5S19IVENfVFhfUlRTQ1RTICAgICAgIDB4MlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC03Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9NzM9c3RydWN0IHR4X2ZyYW1lX2hkciB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNzctXFx0dTggdGlkbm87XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjc4OlxcdF9fYmUzMiBmbGFnczsgLyogQVRIOUtfSFRDX1RYXyogKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNzktXFx0dTgga2V5X3R5cGU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9MTk0PXN0cnVjdCBhdGg5a19odGNfdGFyZ2V0X3J4X3N0YXRzIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0xOTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjIwMDojZGVmaW5lIEFUSDlLX0hUQ19NQVhfVklGIDJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MjAxOiNkZWZpbmUgQVRIOUtfSFRDX01BWF9CQ05fVklGIDJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMjAyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTI0OT1zdHJ1Y3QgYXRoOWtfdmlmX2l0ZXJfZGF0YSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMjUzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyNTQ6I2RlZmluZSBBVEg5S19IVENfTUFYX1NUQSA4XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI1NTojZGVmaW5lIEFUSDlLX0hUQ19NQVhfVElEIDhcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMjU2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTI2ND1zdHJ1Y3QgYXRoOWtfaHRjX3N0YSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI2NS1cXHR1OCBpbmRleDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MjY2OlxcdGVudW0gdGlkX2FnZ3Jfc3RhdGUgdGlkX3N0YXRlW0FUSDlLX0hUQ19NQVhfVElEXTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMjY3LVxcdHN0cnVjdCB3b3JrX3N0cnVjdCByY191cGRhdGVfd29yaztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0yNzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI3MTojZGVmaW5lIEFUSDlLX0hUQ19SWEJVRiAyNTZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMjcyLSNkZWZpbmUgSFRDX1JYX0ZSQU1FX0hFQURFUl9TSVpFIDQwXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9MjgxPXN0cnVjdCBhdGg5a19odGNfcngge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI4Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6Mjg3OiNkZWZpbmUgQVRIOUtfSFRDX1RYX0NMRUFOVVBfSU5URVJWQUwgNTAgLyogbXMgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6Mjg4OiNkZWZpbmUgQVRIOUtfSFRDX1RYX1RJTUVPVVRfSU5URVJWQUwgMzAwMCAvKiBtcyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyODk6I2RlZmluZSBBVEg5S19IVENfVFhfUkVTRVJWRSAxMFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyOTA6I2RlZmluZSBBVEg5S19IVENfVFhfVElNRU9VVF9DT1VOVCA0MFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyOTE6I2RlZmluZSBBVEg5S19IVENfVFhfVEhSRVNIT0xEIChNQVhfVFhfQlVGX05VTSAtIEFUSDlLX0hUQ19UWF9SRVNFUlZFKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0yOTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI5MzojZGVmaW5lIEFUSDlLX0hUQ19PUF9UWF9RVUVVRVNfU1RPUCBCSVQoMClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6Mjk0OiNkZWZpbmUgQVRIOUtfSFRDX09QX1RYX0RSQUlOICAgICAgIEJJVCgxKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0yOTUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9MzExPXN0cnVjdCBhdGg5a19odGNfdHhfY3RsIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MzEyOlxcdHU4IHR5cGU7IC8qIEFUSDlLX0hUQ18qICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTMxMy1cXHR1OCBlcGlkO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTMxOT1zdGF0aWMgaW5saW5lIHN0cnVjdCBhdGg5a19odGNfdHhfY3RsICpIVENfU0tCX0NCKHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMzI3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDozMjg6I2lmZGVmIENPTkZJR19BVEg5S19IVENfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0zMjktI2RlZmluZSBfX1NUQVRfU0FGRShoaWZfZGV2LCBleHByKVxcdGRvIHsgKChoaWZfZGV2KS1cXHUwMDNlaHRjX2hhbmRsZS1cXHUwMDNlZHJ2X3ByaXYgPyAoZXhwcikgOiAwKTsgfSB3aGlsZSAoMClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD0zODg9c3RhdGljIGlubGluZSB2b2lkIGF0aDlrX2h0Y19lcnJfc3RhdF9yeChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMzkyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDozOTM6I2VuZGlmIC8qIENPTkZJR19BVEg5S19IVENfREVCVUdGUyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0zOTQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9NDA5PXN0cnVjdCBodGNfYmVhY29uIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC00MTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjQxNjpcXHRzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqYnNsb3RbQVRIOUtfSFRDX01BWF9CQ05fVklGXTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNDE3LVxcdHUzMiBibWlzc2NudDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD00NTY9c3RydWN0IGF0aDlrX2h0Y19wcml2IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC00NzgtXFx0dTggc3RhX3Nsb3Q7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjQ3OTpcXHR1OCB2aWZfc3RhX3Bvc1tBVEg5S19IVENfTUFYX1ZJRl07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTQ4MC1cXHR1OCBudW1faWJzc192aWY7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNTM1LVxcdHN0cnVjdCBkZWxheWVkX3dvcmsgZHV0eV9jeWNsZV93b3JrO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo1MzY6I2lmZGVmIENPTkZJR19BVEg5S19IVENfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC01MzctXFx0c3RydWN0IGF0aDlrX2RlYnVnIGRlYnVnO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTY0MT1pbnQgYXRoOWtfaHRjX3Jlc3VtZShzdHJ1Y3QgaHRjX3RhcmdldCAqaHRjX2hhbmRsZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTY0Mi0jZW5kaWZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6NjQzOiNpZmRlZiBDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNjQ0LWludCBhdGg5a19odGNfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX2h3ICphaCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9NjQ4PXN0YXRpYyBpbmxpbmUgdm9pZCBhdGg5a19odGNfZGVpbml0X2RlYnVnKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC02NTAtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo2NTE6I2VuZGlmIC8qIENPTkZJR19BVEg5S19IVENfREVCVUdGUyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC02NTItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYz0xMTE9c3RhdGljIHZvaWQgYXRoOWtfaHRjX2JlYWNvbl9jb25maWdfYXAoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMTE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jOjExNzpcXHRhdGg5a19jbW5fYmVhY29uX2NvbmZpZ19hcChhaCwgY29uZiwgQVRIOUtfSFRDX01BWF9CQ05fVklGKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYy0xMTgtXFx0YXRoOWtfaHRjX2JlYWNvbl9pbml0KHByaXYsIGNvbmYsIGZhbHNlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jPTE5MT1zdGF0aWMgdm9pZCBhdGg5a19odGNfc2VuZF9iZWFjb24oc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMjQyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jOjI0MzpcXHR0eF9jdGwtXFx1MDAzZXR5cGUgPSBBVEg5S19IVENfQkVBQ09OO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTI0NC1cXHR0eF9jdGwtXFx1MDAzZWVwaWQgPSBwcml2LVxcdTAwM2ViZWFjb25fZXA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYz0yNjQ9c3RhdGljIGludCBhdGg5a19odGNfY2hvb3NlX2JzbG90KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTI3Ni1cXHR0c2Z0dSA9IFRTRl9UT19UVSh0c2YgXFx1MDAzZVxcdTAwM2UgMzIsIHRzZik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmM6Mjc3OlxcdHNsb3QgPSAoKHRzZnR1ICUgaW50dmFsKSAqIEFUSDlLX0hUQ19NQVhfQkNOX1ZJRikgLyBpbnR2YWw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmM6Mjc4OlxcdHNsb3QgPSBBVEg5S19IVENfTUFYX0JDTl9WSUYgLSBzbG90IC0gMTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYy0yNzktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYz0zMjU9dm9pZCBhdGg5a19odGNfYXNzaWduX2JzbG90KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTMzMi1cXHRzcGluX2xvY2tfYmgoXFx1MDAyNnByaXYtXFx1MDAzZWJlYWNvbl9sb2NrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYzozMzM6XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFUSDlLX0hUQ19NQVhfQkNOX1ZJRjsgaSsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMzM0LVxcdFxcdGlmIChwcml2LVxcdTAwM2ViZWFjb24uYnNsb3RbaV0gPT0gTlVMTCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmM9MzY1PXZvaWQgYXRoOWtfaHRjX3NldF90c2ZhZGp1c3Qoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMzgwLVxcdCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jOjM4MTpcXHR0c2ZhZGp1c3QgPSBjdXJfY29uZi1cXHUwMDNlYmVhY29uX2ludGVydmFsICogYXZwLVxcdTAwM2Vic2xvdCAvIEFUSDlLX0hUQ19NQVhfQkNOX1ZJRjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYy0zODItXFx0YXZwLVxcdTAwM2V0c2ZhZGp1c3QgPSBjcHVfdG9fbGU2NChUVV9UT19VU0VDKHRzZmFkanVzdCkpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYz0zOTg9c3RhdGljIGNvbnN0IGNoYXIgYXRoOWtfaHRjX2dzdHJpbmdzX3N0YXRzW11bRVRIX0dTVFJJTkdfTEVOXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMtNDE4LX07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYzo0MTk6I2RlZmluZSBBVEg5S19IVENfU1NUQVRTX0xFTiBBUlJBWV9TSVpFKGF0aDlrX2h0Y19nc3RyaW5nc19zdGF0cylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jLTQyMC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM9NDMwPWludCBhdGg5a19odGNfZ2V0X2V0X3NzZXRfY291bnQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jLTQzMy1cXHRpZiAoc3NldCA9PSBFVEhfU1NfU1RBVFMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYzo0MzQ6XFx0XFx0cmV0dXJuIEFUSDlLX0hUQ19TU1RBVFNfTEVOO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMtNDM1LVxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYz00NDg9dm9pZCBhdGg5a19odGNfZ2V0X2V0X3N0YXRzKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYy00NzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYzo0NzQ6XFx0V0FSTl9PTihpICE9IEFUSDlLX0hUQ19TU1RBVFNfTEVOKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jLTQ3NS19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM9NjA2PXN0YXRpYyBpbnQgYXRoOWtfaW5pdF9wcml2KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy02NzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jOjY3NDpcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgQVRIOUtfSFRDX01BWF9CQ05fVklGOyBpKyspXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jLTY3NS1cXHRcXHRwcml2LVxcdTAwM2ViZWFjb24uYnNsb3RbaV0gPSBOVUxMO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jPTE4ND12b2lkIGF0aDlrX2h0Y19yZXNldChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMjMzLVxcdG1vZF90aW1lcihcXHUwMDI2cHJpdi1cXHUwMDNldHguY2xlYW51cF90aW1lcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6MjM0OlxcdFxcdCAgamlmZmllcyArIG1zZWNzX3RvX2ppZmZpZXMoQVRIOUtfSFRDX1RYX0NMRUFOVVBfSU5URVJWQUwpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMjM1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jPTI0MD1zdGF0aWMgaW50IGF0aDlrX2h0Y19zZXRfY2hhbm5lbChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMzExLVxcdG1vZF90aW1lcihcXHUwMDI2cHJpdi1cXHUwMDNldHguY2xlYW51cF90aW1lcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6MzEyOlxcdFxcdCAgamlmZmllcyArIG1zZWNzX3RvX2ppZmZpZXMoQVRIOUtfSFRDX1RYX0NMRUFOVVBfSU5URVJWQUwpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMzEzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jPTM1MD1zdGF0aWMgaW50IGF0aDlrX2h0Y19hZGRfbW9uaXRvcl9pbnRlcmZhY2Uoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTM1Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6MzU4OlxcdGlmICgocHJpdi1cXHUwMDNlbnZpZnMgXFx1MDAzZT0gQVRIOUtfSFRDX01BWF9WSUYpIHx8XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjM1OTpcXHQgICAgKHByaXYtXFx1MDAzZW5zdGF0aW9ucyBcXHUwMDNlPSBBVEg5S19IVENfTUFYX1NUQSkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMzYwLVxcdFxcdHJldCA9IC1FTk9CVUZTO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTM2NC1cXHRzdGFfaWR4ID0gZmZ6KHByaXYtXFx1MDAzZXN0YV9zbG90KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6MzY1OlxcdGlmICgoc3RhX2lkeCBcXHUwMDNjIDApIHx8IChzdGFfaWR4IFxcdTAwM2UgQVRIOUtfSFRDX01BWF9TVEEpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTM2Ni1cXHRcXHRyZXQgPSAtRU5PQlVGUztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYz00NjY9c3RhdGljIGludCBhdGg5a19odGNfYWRkX3N0YXRpb24oc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTQ3Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6NDc4OlxcdGlmIChwcml2LVxcdTAwM2Vuc3RhdGlvbnMgXFx1MDAzZT0gQVRIOUtfSFRDX01BWF9TVEEpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTQ3OS1cXHRcXHRyZXR1cm4gLUVOT0JVRlM7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtNDgxLVxcdHN0YV9pZHggPSBmZnoocHJpdi1cXHUwMDNlc3RhX3Nsb3QpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzo0ODI6XFx0aWYgKChzdGFfaWR4IFxcdTAwM2MgMCkgfHwgKHN0YV9pZHggXFx1MDAzZSBBVEg5S19IVENfTUFYX1NUQSkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTQ4My1cXHRcXHRyZXR1cm4gLUVOT0JVRlM7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM9NzAyPXN0YXRpYyBpbnQgYXRoOWtfaHRjX3R4X2FnZ3Jfb3BlcihzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtNzEzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzo3MTQ6XFx0aWYgKHRpZCBcXHUwMDNlPSBBVEg5S19IVENfTUFYX1RJRClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtNzE1LVxcdFxcdHJldHVybiAtRUlOVkFMO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jPTkwNz1zdGF0aWMgaW50IGF0aDlrX2h0Y19zdGFydChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy05NjAtXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZwcml2LVxcdTAwM2V0eC50eF9sb2NrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6OTYxOlxcdHByaXYtXFx1MDAzZXR4LmZsYWdzIFxcdTAwMjY9IH5BVEg5S19IVENfT1BfVFhfUVVFVUVTX1NUT1A7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTk2Mi1cXHRzcGluX3VubG9ja19iaChcXHUwMDI2cHJpdi1cXHUwMDNldHgudHhfbG9jayk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtOTY2LVxcdG1vZF90aW1lcihcXHUwMDI2cHJpdi1cXHUwMDNldHguY2xlYW51cF90aW1lcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6OTY3OlxcdFxcdCAgamlmZmllcyArIG1zZWNzX3RvX2ppZmZpZXMoQVRIOUtfSFRDX1RYX0NMRUFOVVBfSU5URVJWQUwpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtOTY4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jPTE2NTg9c3RhdGljIGludCBhdGg5a19odGNfYW1wZHVfYWN0aW9uKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTE2ODgtXFx0Y2FzZSBJRUVFODAyMTFfQU1QRFVfVFhfT1BFUkFUSU9OQUw6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjE2ODk6XFx0XFx0aWYgKHRpZCBcXHUwMDNlPSBBVEg5S19IVENfTUFYX1RJRCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0xNjkwLVxcdFxcdFxcdHJldCA9IC1FSU5WQUw7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM9MTg3ND1zdHJ1Y3QgaWVlZTgwMjExX29wcyBhdGg5a19odGNfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTE5MDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjE5MDc6I2lmZGVmIENPTkZJR19BVEg5S19IVENfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0xOTA4LVxcdC5nZXRfZXRfc3NldF9jb3VudCAgPSBhdGg5a19odGNfZ2V0X2V0X3NzZXRfY291bnQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9MjM9c3RhdGljIGNvbnN0IGludCBzdWJ0eXBlX3R4cV90b19od3FbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0yOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6MzA6I2RlZmluZSBBVEg5S19IVENfSU5JVF9UWFEoc3VidHlwZSkgZG8ge1xcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMzEtXFx0XFx0cWkudHFpX3N1YnR5cGUgPSBzdWJ0eXBlX3R4cV90b19od3Fbc3VidHlwZV07XFx0XFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTU2PXZvaWQgYXRoOWtfaHRjX2NoZWNrX3N0b3BfcXVldWVzKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy01OS1cXHRwcml2LVxcdTAwM2V0eC5xdWV1ZWRfY250Kys7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjYwOlxcdGlmICgocHJpdi1cXHUwMDNldHgucXVldWVkX2NudCBcXHUwMDNlPSBBVEg5S19IVENfVFhfVEhSRVNIT0xEKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo2MTpcXHQgICAgIShwcml2LVxcdTAwM2V0eC5mbGFncyBcXHUwMDI2IEFUSDlLX0hUQ19PUF9UWF9RVUVVRVNfU1RPUCkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NjI6XFx0XFx0cHJpdi1cXHUwMDNldHguZmxhZ3MgfD0gQVRIOUtfSFRDX09QX1RYX1FVRVVFU19TVE9QO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy02My1cXHRcXHRpZWVlODAyMTFfc3RvcF9xdWV1ZXMocHJpdi1cXHUwMDNlaHcpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTY4PXZvaWQgYXRoOWtfaHRjX2NoZWNrX3dha2VfcXVldWVzKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy03MC1cXHRzcGluX2xvY2tfYmgoXFx1MDAyNnByaXYtXFx1MDAzZXR4LnR4X2xvY2spO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo3MTpcXHRpZiAoKHByaXYtXFx1MDAzZXR4LnF1ZXVlZF9jbnQgXFx1MDAzYyBBVEg5S19IVENfVFhfVEhSRVNIT0xEKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo3MjpcXHQgICAgKHByaXYtXFx1MDAzZXR4LmZsYWdzIFxcdTAwMjYgQVRIOUtfSFRDX09QX1RYX1FVRVVFU19TVE9QKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo3MzpcXHRcXHRwcml2LVxcdTAwM2V0eC5mbGFncyBcXHUwMDI2PSB+QVRIOUtfSFRDX09QX1RYX1FVRVVFU19TVE9QO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy03NC1cXHRcXHRpZWVlODAyMTFfd2FrZV9xdWV1ZXMocHJpdi1cXHUwMDNlaHcpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTIxND1zdGF0aWMgdm9pZCBhdGg5a19odGNfdHhfbWdtdChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMjQwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzoyNDE6XFx0dHhfY3RsLVxcdTAwM2V0eXBlID0gQVRIOUtfSFRDX01HTVQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTI0Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz0yNjA9c3RhdGljIHZvaWQgYXRoOWtfaHRjX3R4X2RhdGEoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTI5Mi1cXHRpZiAodHhfaW5mby1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRUVFODAyMTFfVFhfQ1RMX0FNUERVKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjI5MzpcXHRcXHR0eF9jdGwtXFx1MDAzZXR5cGUgPSBBVEg5S19IVENfQU1QRFU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjI5NDpcXHRcXHR0eF9oZHIuZGF0YV90eXBlID0gQVRIOUtfSFRDX0FNUERVO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0yOTUtXFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6Mjk2OlxcdFxcdHR4X2N0bC1cXHUwMDNldHlwZSA9IEFUSDlLX0hUQ19OT1JNQUw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjI5NzpcXHRcXHR0eF9oZHIuZGF0YV90eXBlID0gQVRIOUtfSFRDX05PUk1BTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMjk4LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0zMTItXFx0XFx0aWYgKHNrYi1cXHUwMDNlbGVuIFxcdTAwM2UgcHJpdi1cXHUwMDNlaHctXFx1MDAzZXdpcGh5LVxcdTAwM2VydHNfdGhyZXNob2xkKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzozMTM6XFx0XFx0XFx0ZmxhZ3MgfD0gQVRIOUtfSFRDX1RYX1JUU0NUUztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMzE0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0zMTUtXFx0LyogQ1RTLXRvLXNlbGYgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6MzE2OlxcdGlmICghKGZsYWdzIFxcdTAwMjYgQVRIOUtfSFRDX1RYX1JUU0NUUykgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMzE3LVxcdCAgICAodmlmIFxcdTAwMjZcXHUwMDI2IHZpZi1cXHUwMDNlYnNzX2NvbmYudXNlX2N0c19wcm90KSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6MzE4OlxcdFxcdGZsYWdzIHw9IEFUSDlLX0hUQ19UWF9DVFNPTkxZO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0zMTktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9MzkyPXN0YXRpYyBpbmxpbmUgYm9vbCBfX2F0aDlrX2h0Y19jaGVja190eF9hZ2dyKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0zOTctXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZwcml2LVxcdTAwM2V0eC50eF9sb2NrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6Mzk4OlxcdGlmICgodGlkIFxcdTAwM2MgQVRIOUtfSFRDX01BWF9USUQpIFxcdTAwMjZcXHUwMDI2IChpc3RhLVxcdTAwM2V0aWRfc3RhdGVbdGlkXSA9PSBBR0dSX1NUT1ApKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0zOTktXFx0XFx0cmV0ID0gdHJ1ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz00NDU9c3RhdGljIHZvaWQgYXRoOWtfaHRjX3R4X3Byb2Nlc3Moc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ3OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NDc5OlxcdGlmICh0eHMtXFx1MDAzZXRzX2ZsYWdzIFxcdTAwMjYgQVRIOUtfSFRDX1RYU1RBVF9BQ0spIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDgwLVxcdFxcdHR4X2luZm8tXFx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9UWF9TVEFUX0FDSztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00ODQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjQ4NTpcXHRpZiAodHhzLVxcdTAwM2V0c19mbGFncyBcXHUwMDI2IEFUSDlLX0hUQ19UWFNUQVRfRklMVClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDg2LVxcdFxcdHR4X2luZm8tXFx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9UWF9TVEFUX1RYX0ZJTFRFUkVEO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00ODctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjQ4ODpcXHRpZiAodHhzLVxcdTAwM2V0c19mbGFncyBcXHUwMDI2IEFUSDlLX0hUQ19UWFNUQVRfUlRDX0NUUylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDg5LVxcdFxcdHJhdGUtXFx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9UWF9SQ19VU0VfUlRTX0NUUztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00OTEtXFx0cmF0ZS1cXHUwMDNlY291bnQgPSAxO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo0OTI6XFx0cmF0ZS1cXHUwMDNlaWR4ID0gTVModHhzLVxcdTAwM2V0c19yYXRlLCBBVEg5S19IVENfVFhTVEFUX1JBVEUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00OTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjQ5NDpcXHRpZiAodHhzLVxcdTAwM2V0c19mbGFncyBcXHUwMDI2IEFUSDlLX0hUQ19UWFNUQVRfTUNTKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ5NS1cXHRcXHRyYXRlLVxcdTAwM2VmbGFncyB8PSBJRUVFODAyMTFfVFhfUkNfTUNTO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00OTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjQ5NzpcXHRcXHRpZiAodHhzLVxcdTAwM2V0c19mbGFncyBcXHUwMDI2IEFUSDlLX0hUQ19UWFNUQVRfQ1c0MClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDk4LVxcdFxcdFxcdHJhdGUtXFx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9UWF9SQ180MF9NSFpfV0lEVEg7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjQ5OTpcXHRcXHRpZiAodHhzLVxcdTAwM2V0c19mbGFncyBcXHUwMDI2IEFUSDlLX0hUQ19UWFNUQVRfU0dJKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy01MDAtXFx0XFx0XFx0cmF0ZS1cXHUwMDNlZmxhZ3MgfD0gSUVFRTgwMjExX1RYX1JDX1NIT1JUX0dJO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTUzOT12b2lkIGF0aDlrX2h0Y190eF9kcmFpbihzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNTQzLVxcdHNwaW5fbG9ja19iaChcXHUwMDI2cHJpdi1cXHUwMDNldHgudHhfbG9jayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjU0NDpcXHRwcml2LVxcdTAwM2V0eC5mbGFncyB8PSBBVEg5S19IVENfT1BfVFhfRFJBSU47XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTU0NS1cXHRzcGluX3VubG9ja19iaChcXHUwMDI2cHJpdi1cXHUwMDNldHgudHhfbG9jayk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNTczLVxcdHNwaW5fbG9ja19iaChcXHUwMDI2cHJpdi1cXHUwMDNldHgudHhfbG9jayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjU3NDpcXHRwcml2LVxcdTAwM2V0eC5mbGFncyBcXHUwMDI2PSB+QVRIOUtfSFRDX09QX1RYX0RSQUlOO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy01NzUtXFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNnByaXYtXFx1MDAzZXR4LnR4X2xvY2spO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTU3OD12b2lkIGF0aDlrX3R4X2ZhaWxlZF90YXNrbGV0KHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy01ODItXFx0c3Bpbl9sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2V0eC50eF9sb2NrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NTgzOlxcdGlmIChwcml2LVxcdTAwM2V0eC5mbGFncyBcXHUwMDI2IEFUSDlLX0hUQ19PUF9UWF9EUkFJTikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy01ODQtXFx0XFx0c3Bpbl91bmxvY2soXFx1MDAyNnByaXYtXFx1MDAzZXR4LnR4X2xvY2spO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTYxOD1zdGF0aWMgc3RydWN0IHNrX2J1ZmYqIGF0aDlrX2h0Y190eF9nZXRfcGFja2V0KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy02MjQtXFx0dW5zaWduZWQgbG9uZyBmbGFncztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NjI1OlxcdHU4IGVwaWQgPSBNUyh0eHMtXFx1MDAzZXRzX3JhdGUsIEFUSDlLX0hUQ19UWFNUQVRfRVBJRCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTYyNi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz03MTY9c3RhdGljIGlubGluZSBib29sIGNoZWNrX3BhY2tldChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNzI0LVxcdFxcdCAgICAgICB0eF9jdGwtXFx1MDAzZXRpbWVzdGFtcCArXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjcyNTpcXHRcXHQgICAgICAgbXNlY3NfdG9famlmZmllcyhBVEg5S19IVENfVFhfVElNRU9VVF9JTlRFUlZBTCkpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTcyNi1cXHRcXHRhdGhfZGJnKGNvbW1vbiwgWE1JVCwgXFxcIkRyb3BwaW5nIGEgcGFja2V0IGR1ZSB0byBUWCB0aW1lb3V0XFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz03NjE9dm9pZCBhdGg5a19odGNfdHhfY2xlYW51cF90aW1lcihzdHJ1Y3QgdGltZXJfbGlzdCAqdClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy03NzYtXFx0XFx0XFx0XFx0ZXZlbnQtXFx1MDAzZXR4cy5jb29raWUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjc3NzpcXHRcXHRcXHRcXHRNUyhldmVudC1cXHUwMDNldHhzLnRzX3JhdGUsIEFUSDlLX0hUQ19UWFNUQVRfRVBJRCkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy03NzgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNzg0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo3ODU6XFx0XFx0aWYgKCsrZXZlbnQtXFx1MDAzZWNvdW50IFxcdTAwM2U9IEFUSDlLX0hUQ19UWF9USU1FT1VUX0NPVU5UKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTc4Ni1cXHRcXHRcXHRsaXN0X2RlbChcXHUwMDI2ZXZlbnQtXFx1MDAzZWxpc3QpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTgwNS1cXHRtb2RfdGltZXIoXFx1MDAyNnByaXYtXFx1MDAzZXR4LmNsZWFudXBfdGltZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjgwNjpcXHRcXHQgIGppZmZpZXMgKyBtc2Vjc190b19qaWZmaWVzKEFUSDlLX0hUQ19UWF9DTEVBTlVQX0lOVEVSVkFMKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTgwNy19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9ODI3PWJvb2wgYXRoOWtfaHRjX3R4cV9zZXR1cChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsIGludCBzdWJ0eXBlKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTgzNC1cXHRtZW1zZXQoXFx1MDAyNnFpLCAwLCBzaXplb2YocWkpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6ODM1OlxcdEFUSDlLX0hUQ19JTklUX1RYUShzdWJ0eXBlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtODM2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTg1Mj1pbnQgYXRoOWtfaHRjX2NhYnFfc2V0dXAoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTg1Ni1cXHRtZW1zZXQoXFx1MDAyNnFpLCAwLCBzaXplb2YocWkpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6ODU3OlxcdEFUSDlLX0hUQ19JTklUX1RYUSgwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtODU4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTExODc9aW50IGF0aDlrX3J4X2luaXQoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTExOTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjExOTQ6XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFUSDlLX0hUQ19SWEJVRjsgaSsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTExOTUtXFx0XFx0c3RydWN0IGF0aDlrX2h0Y19yeGJ1ZiAqcnhidWYgPVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jPTEzOD12b2lkIGF0aDlrX3dtaV9ldmVudF90YXNrbGV0KHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYy0xNzgtXFx0XFx0XFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZwcml2LVxcdTAwM2V0eC50eF9sb2NrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmM6MTc5OlxcdFxcdFxcdGlmIChwcml2LVxcdTAwM2V0eC5mbGFncyBcXHUwMDI2IEFUSDlLX0hUQ19PUF9UWF9EUkFJTikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYy0xODAtXFx0XFx0XFx0XFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNnByaXYtXFx1MDAzZXR4LnR4X2xvY2spO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oPTM5PXN0cnVjdCB3bWlfZXZlbnRfc3diYSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmgtNTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oOjUxOiNkZWZpbmUgQVRIOUtfSFRDX1RYU1RBVF9BQ0sgICAgICAgIEJJVCgwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo1MjojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfRklMVCAgICAgICBCSVQoMSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6NTM6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX1JUQ19DVFMgICAgQklUKDIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oOjU0OiNkZWZpbmUgQVRIOUtfSFRDX1RYU1RBVF9NQ1MgICAgICAgIEJJVCgzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo1NTojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfQ1c0MCAgICAgICBCSVQoNClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6NTY6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX1NHSSAgICAgICAgQklUKDUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oLTU3LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oLTYzLSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo2NDojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfUkFURSAgICAgICAweDBmXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oOjY1OiNkZWZpbmUgQVRIOUtfSFRDX1RYU1RBVF9SQVRFX1MgICAgIDBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmgtNjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oOjY3OiNkZWZpbmUgQVRIOUtfSFRDX1RYU1RBVF9FUElEICAgICAgIDB4ZjBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6Njg6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX0VQSURfUyAgICAgNFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaC02OS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTE6NDM6MDcuMDUzMDk3OTI0WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE5NzY5NTExMzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRGl2aW5nIGludG8gUmVndWxhdG9yeSBEb21haW4gQ2hhbmdlcyBpbiBgYXRoYCoqXG5cbk9rYXksIGxldCdzIHRha2UgYSBjbG9zZXIgbG9vayBhdCB0aGF0IHBhdGNoLCBzaGFsbCB3ZT8gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIGdvaW5nIHRvIGJlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgKnByZWNpc2VseSogd2hhdCB0aGUgY2hhbmdlIGlzIGFjY29tcGxpc2hpbmcuIFNvLCBJJ20gZ29pbmcgdG8gc3RhcnQgYnkgZ29pbmcgbGluZSBieSBsaW5lIHRocm91Z2ggdGhhdCBmaWxlLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gdGhlIHJlZ3VsYXRvcnkgZG9tYWluIGltcGxlbWVudGF0aW9uIHdpdGhpbiB0aGUgYGF0aGAgZHJpdmVyLiBJJ2xsIHplcm8gaW4gb24gbGluZXMgcm91Z2hseSBiZXR3ZWVuIDQwIGFuZCAxMjA7IHRoYXQgc2VlbXMgbGlrZSBhIGxpa2VseSByZWdpb24gdG8gaG91c2UgdGhlIGNvcmUgbG9naWMgZm9yIHJlZ3VsYXRvcnkgZG9tYWluIG1hbmFnZW1lbnQuIEknbGwgbmVlZCB0byByZWZyZXNoIG15c2VsZiBvbiBob3cgcmVndWxhdG9yeSBkb21haW5zIGFyZSBoYW5kbGVkIHdpdGhpbiB0aGUgYGF0aGAgYXJjaGl0ZWN0dXJlLCBzbyBJIGNhbiBzZWUgd2hlcmUgdGhlIHBhdGNoIGlzIGltcGFjdGluZyB0aGF0IGZsb3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2MDU3LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTE6NDM6MDkuMDMwMDUyMTM2WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg5NDYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNDAsXG4gIFwiTGluZUNvdW50XCI6IDgwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgNDA6XFx0XFx0XFx0XFx0XFx0XFx0IE5MODAyMTFfUlJGX05PX0lSKVxcbiAgNDE6XFx0I2RlZmluZSBBVEhfMkdIWl9DSDE0XFx0XFx0UkVHX1JVTEUoMjQ4NC0xMCwgMjQ4NCsxMCwgNDAsIDAsIDIwLFxcXFxcXG4gIDQyOlxcdFxcdFxcdFxcdFxcdFxcdCBOTDgwMjExX1JSRl9OT19JUiB8IFxcXFxcXG4gIDQzOlxcdFxcdFxcdFxcdFxcdFxcdCBOTDgwMjExX1JSRl9OT19PRkRNKVxcbiAgNDQ6XFx0XFxuICA0NTpcXHQvKiBXZSBhbGxvdyBJQlNTIG9uIHRoZXNlIG9uIGEgY2FzZSBieSBjYXNlIGJhc2lzIGJ5IHJlZ3VsYXRvcnkgZG9tYWluICovXFxuICA0NjpcXHQjZGVmaW5lIEFUSF81R0haXzUxNTBfNTM1MFxcdFJFR19SVUxFKDUxNTAtMTAsIDUyNDArMTAsIDgwLCAwLCAzMCwgMCksXFxcXFxcbiAgNDc6XFx0XFx0XFx0XFx0XFx0UkVHX1JVTEUoNTI2MC0xMCwgNTM1MCsxMCwgODAsIDAsIDMwLFxcXFxcXG4gIDQ4OlxcdFxcdFxcdFxcdFxcdFxcdCBOTDgwMjExX1JSRl9OT19JUilcXG4gIDQ5OlxcdCNkZWZpbmUgQVRIXzVHSFpfNTQ3MF81ODUwXFx0UkVHX1JVTEUoNTQ3MC0xMCwgNTg1MCsxMCwgODAsIDAsIDMwLFxcXFxcXG4gIDUwOlxcdFxcdFxcdFxcdFxcdFxcdCBOTDgwMjExX1JSRl9OT19JUilcXG4gIDUxOlxcdCNkZWZpbmUgQVRIXzVHSFpfNTcyNV81ODUwXFx0UkVHX1JVTEUoNTcyNS0xMCwgNTg1MCsxMCwgODAsIDAsIDMwLFxcXFxcXG4gIDUyOlxcdFxcdFxcdFxcdFxcdFxcdCBOTDgwMjExX1JSRl9OT19JUilcXG4gIDUzOlxcdFxcbiAgNTQ6XFx0I2RlZmluZSBBVEhfMkdIWl9BTExcXHRcXHRBVEhfMkdIWl9DSDAxXzExLCBcXFxcXFxuICA1NTpcXHRcXHRcXHRcXHRcXHRBVEhfMkdIWl9DSDEyXzEzLCBcXFxcXFxuICA1NjpcXHRcXHRcXHRcXHRcXHRBVEhfMkdIWl9DSDE0XFxuICA1NzpcXHRcXG4gIDU4OlxcdCNkZWZpbmUgQVRIXzVHSFpfQUxMXFx0XFx0QVRIXzVHSFpfNTE1MF81MzUwLCBcXFxcXFxuICA1OTpcXHRcXHRcXHRcXHRcXHRBVEhfNUdIWl81NDcwXzU4NTBcXG4gIDYwOlxcdFxcbiAgNjE6XFx0LyogVGhpcyBvbmUgc2tpcHMgd2hhdCB3ZSBjYWxsIFxcXCJtaWQgYmFuZFxcXCIgKi9cXG4gIDYyOlxcdCNkZWZpbmUgQVRIXzVHSFpfTk9fTUlEQkFORFxcdEFUSF81R0haXzUxNTBfNTM1MCwgXFxcXFxcbiAgNjM6XFx0XFx0XFx0XFx0XFx0QVRIXzVHSFpfNTcyNV81ODUwXFxuICA2NDpcXHRcXG4gIDY1OlxcdC8qIENhbiBiZSB1c2VkIGZvcjpcXG4gIDY2OlxcdCAqIDB4NjAsIDB4NjEsIDB4NjIgKi9cXG4gIDY3OlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiBhdGhfd29ybGRfcmVnZG9tXzYwXzYxXzYyID0ge1xcbiAgNjg6XFx0XFx0Lm5fcmVnX3J1bGVzID0gNixcXG4gIDY5OlxcdFxcdC5hbHBoYTIgPSAgXFxcIjk5XFxcIixcXG4gIDcwOlxcdFxcdC5yZWdfcnVsZXMgPSB7XFxuICA3MTpcXHRcXHRcXHRBVEhfMkdIWl9BTEwsXFxuICA3MjpcXHRcXHRcXHRBVEhfNUdIWl9BTEwsXFxuICA3MzpcXHRcXHR9XFxuICA3NDpcXHR9O1xcbiAgNzU6XFx0XFxuICA3NjpcXHQvKiBDYW4gYmUgdXNlZCBieSAweDYzIGFuZCAweDY1ICovXFxuICA3NzpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW4gYXRoX3dvcmxkX3JlZ2RvbV82M182NSA9IHtcXG4gIDc4OlxcdFxcdC5uX3JlZ19ydWxlcyA9IDUsXFxuICA3OTpcXHRcXHQuYWxwaGEyID0gIFxcXCI5OVxcXCIsXFxuICA4MDpcXHRcXHQucmVnX3J1bGVzID0ge1xcbiAgODE6XFx0XFx0XFx0QVRIXzJHSFpfQ0gwMV8xMSxcXG4gIDgyOlxcdFxcdFxcdEFUSF8yR0haX0NIMTJfMTMsXFxuICA4MzpcXHRcXHRcXHRBVEhfNUdIWl9OT19NSURCQU5ELFxcbiAgODQ6XFx0XFx0fVxcbiAgODU6XFx0fTtcXG4gIDg2OlxcdFxcbiAgODc6XFx0LyogQ2FuIGJlIHVzZWQgYnkgMHg2NCBvbmx5ICovXFxuICA4ODpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW4gYXRoX3dvcmxkX3JlZ2RvbV82NCA9IHtcXG4gIDg5OlxcdFxcdC5uX3JlZ19ydWxlcyA9IDQsXFxuICA5MDpcXHRcXHQuYWxwaGEyID0gIFxcXCI5OVxcXCIsXFxuICA5MTpcXHRcXHQucmVnX3J1bGVzID0ge1xcbiAgOTI6XFx0XFx0XFx0QVRIXzJHSFpfQ0gwMV8xMSxcXG4gIDkzOlxcdFxcdFxcdEFUSF81R0haX05PX01JREJBTkQsXFxuICA5NDpcXHRcXHR9XFxuICA5NTpcXHR9O1xcbiAgOTY6XFx0XFxuICA5NzpcXHQvKiBDYW4gYmUgdXNlZCBieSAweDY2IGFuZCAweDY5ICovXFxuICA5ODpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW4gYXRoX3dvcmxkX3JlZ2RvbV82Nl82OSA9IHtcXG4gIDk5OlxcdFxcdC5uX3JlZ19ydWxlcyA9IDQsXFxuIDEwMDpcXHRcXHQuYWxwaGEyID0gIFxcXCI5OVxcXCIsXFxuIDEwMTpcXHRcXHQucmVnX3J1bGVzID0ge1xcbiAxMDI6XFx0XFx0XFx0QVRIXzJHSFpfQ0gwMV8xMSxcXG4gMTAzOlxcdFxcdFxcdEFUSF81R0haX0FMTCxcXG4gMTA0OlxcdFxcdH1cXG4gMTA1OlxcdH07XFxuIDEwNjpcXHRcXG4gMTA3OlxcdC8qIENhbiBiZSB1c2VkIGJ5IDB4NjcsIDB4NjgsIDB4NkEgYW5kIDB4NkMgKi9cXG4gMTA4OlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiBhdGhfd29ybGRfcmVnZG9tXzY3XzY4XzZBXzZDID0ge1xcbiAxMDk6XFx0XFx0Lm5fcmVnX3J1bGVzID0gNSxcXG4gMTEwOlxcdFxcdC5hbHBoYTIgPSAgXFxcIjk5XFxcIixcXG4gMTExOlxcdFxcdC5yZWdfcnVsZXMgPSB7XFxuIDExMjpcXHRcXHRcXHRBVEhfMkdIWl9DSDAxXzExLFxcbiAxMTM6XFx0XFx0XFx0QVRIXzJHSFpfQ0gxMl8xMyxcXG4gMTE0OlxcdFxcdFxcdEFUSF81R0haX0FMTCxcXG4gMTE1OlxcdFxcdH1cXG4gMTE2OlxcdH07XFxuIDExNzpcXHRcXG4gMTE4OlxcdHN0YXRpYyBib29sIGR5bmFtaWNfY291bnRyeV91c2VyX3Bvc3NpYmxlKHN0cnVjdCBhdGhfcmVndWxhdG9yeSAqcmVnKVxcbiAxMTk6XFx0e1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxMTo0MzowOS4wMzAxNDI5MDZaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzY1ODc4MTQ4NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFJlZ3VsYXRvcnkgRG9tYWluIENoYW5nZXMqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY2hhbmdlIGluIGByZWdkLmNgLiAgTG9va3MgbGlrZSB0aGUgZGVmaW5pdGlvbiBgQVRIXzVHSFpfNTE1MF81MzUwYCB3YXMgcHJldmlvdXNseSBhIHNpbmdsZSByZWd1bGF0b3J5IHJ1bGUgc3Bhbm5pbmcgNTE1MCB0byA1MzUwIE1Iei4gVGhlIG9sZGVyIHJ1bGUgd2FzOiBgUkVHX1JVTEUoNTE1MC0xMCwgNTM1MCsxMCwgODAsIDAsIDMwLCBOTDgwMjExX1JSRl9OT19JUilgLiBOb3csIHRoZXkndmUgc3BsaXQgaXQgaW50byAqdHdvKiBzZXBhcmF0ZSBydWxlczogYFJFR19SVUxFKDUxNTAtMTAsIDUyNDArMTAsIDgwLCAwLCAzMCwgMClgIGFuZCBgUkVHX1JVTEUoNTI2MC0xMCwgNTM1MCsxMCwgODAsIDAsIDMwLCBOTDgwMjExX1JSRl9OT19JUilgLlxuXG5UaGlzIGlzIGEgc2lnbmlmaWNhbnQgY2hhbmdlIGJlY2F1c2UgdGhpcyBub3cgbWVhbnMgdGhhdCBhbGwgdGhvc2UgYGF0aF93b3JsZF9yZWdkb21fKmAgc3RydWN0dXJlcyB0aGF0IHJlbHkgb24gYEFUSF81R0haXzUxNTBfNTM1MGAgKGVpdGhlciBkaXJlY3RseSBvciB2aWEgYEFUSF81R0haX0FMTGAgb3IgYEFUSF81R0haX05PX01JREJBTkRgKSBub3cgaGF2ZSBhbiBleHRyYSByZWd1bGF0b3J5IHJ1bGUuIEknbGwgbmVlZCB0byBkb3VibGUtY2hlY2sgbXkgdW5kZXJzdGFuZGluZywgYnV0IGl0IHNlZW1zIHRoYXQgYC5uX3JlZ19ydWxlc2AgaW4gdGhvc2Ugc3RydWN0cyBtdXN0IGhhdmUgYmVlbiBpbmNyZW1lbnRlZCBieSBvbmUuIFNvLCA1IHJ1bGVzIGFyZSBub3cgNiwgNCBpcyBub3cgNSwgMyBpcyBub3cgNCwgYW5kIHNvIG9uLlxuXG5OZXh0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgYnJvYWRlciBpbXBsaWNhdGlvbnMgb2YgdGhpcyBzcGxpdC4gSSdsbCBuZWVkIHRvIGludmVzdGlnYXRlIGhvdyB0aGVzZSByZWd1bGF0b3J5IGRvbWFpbnMgYXJlIHJlZ2lzdGVyZWQgd2l0aGluIHRoZSBzeXN0ZW0uICBJJ2xsIHN0YXJ0IGJ5IGNoZWNraW5nIHRoZSBpbml0aWFsaXphdGlvbiBwcm9jZXNzLiBMZXQncyBzZWUgd2hhdCBgYXRoX3JlZ2RfaW5pdGAgZG9lcy4gVW5kZXJzdGFuZGluZyB0aGF0IHNob3VsZCBnaXZlIG1lIGEgZ29vZCBoYW5kbGUgb24gaG93IHRoZSBjb2RlIHdpbGwgcmVhY3QgdG8gdGhlc2UgYWRkZWQgcnVsZXMuIFRoaXMgY2hhbmdlIGNvdWxkIHBvdGVudGlhbGx5IGludHJvZHVjZSBzdWJ0bGUgc2lkZSBlZmZlY3RzLCBzbyBJIHdpbGwgaGF2ZSB0byBmb2xsb3cgdGhlIGNvZGUgYW5kIGNoZWNrLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzgzMywiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyOSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDExOjQzOjEyLjY4ODkyNzI2WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkyNTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNjMwLFxuICBcIkxpbmVDb3VudFwiOiA4MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNjMwOlxcdFxcdFxcdFxcdHJldHVybiBcXHUwMDI2cmVnRG9tYWluUGFpcnNbaV07XFxuIDYzMTpcXHRcXHR9XFxuIDYzMjpcXHRcXHRyZXR1cm4gTlVMTDtcXG4gNjMzOlxcdH1cXG4gNjM0OlxcdFxcbiA2MzU6XFx0c3RhdGljIGludFxcbiA2MzY6XFx0YXRoX3JlZ2RfaW5pdF93aXBoeShzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZyxcXG4gNjM3OlxcdFxcdFxcdCAgICBzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbiA2Mzg6XFx0XFx0XFx0ICAgIHZvaWQgKCpyZWdfbm90aWZpZXIpKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuIDYzOTpcXHRcXHRcXHRcXHRcXHRcXHQgc3RydWN0IHJlZ3VsYXRvcnlfcmVxdWVzdCAqcmVxdWVzdCkpXFxuIDY0MDpcXHR7XFxuIDY0MTpcXHRcXHRjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiAqcmVnZDtcXG4gNjQyOlxcdFxcbiA2NDM6XFx0XFx0d2lwaHktXFx1MDAzZXJlZ19ub3RpZmllciA9IHJlZ19ub3RpZmllcjtcXG4gNjQ0OlxcdFxcdHdpcGh5LVxcdTAwM2VyZWd1bGF0b3J5X2ZsYWdzIHw9IFJFR1VMQVRPUllfU1RSSUNUX1JFRyB8XFxuIDY0NTpcXHRcXHRcXHRcXHRcXHQgICBSRUdVTEFUT1JZX0NVU1RPTV9SRUc7XFxuIDY0NjpcXHRcXG4gNjQ3OlxcdFxcdGlmIChhdGhfaXNfd29ybGRfcmVnZChyZWcpKSB7XFxuIDY0ODpcXHRcXHRcXHQvKlxcbiA2NDk6XFx0XFx0XFx0ICogQW55dGhpbmcgYXBwbGllZCBoZXJlIChwcmlvciB0byB3aXBoeSByZWdpc3RyYXRpb24pIGdldHNcXG4gNjUwOlxcdFxcdFxcdCAqIHNhdmVkIG9uIHRoZSB3aXBoeSBvcmlnXyogcGFyYW1ldGVyc1xcbiA2NTE6XFx0XFx0XFx0ICovXFxuIDY1MjpcXHRcXHRcXHRyZWdkID0gYXRoX3dvcmxkX3JlZ2RvbWFpbihyZWcpO1xcbiA2NTM6XFx0XFx0XFx0d2lwaHktXFx1MDAzZXJlZ3VsYXRvcnlfZmxhZ3MgfD0gUkVHVUxBVE9SWV9DT1VOVFJZX0lFX0ZPTExPV19QT1dFUjtcXG4gNjU0OlxcdFxcdH0gZWxzZSB7XFxuIDY1NTpcXHRcXHRcXHQvKlxcbiA2NTY6XFx0XFx0XFx0ICogVGhpcyBnZXRzIGFwcGxpZWQgaW4gdGhlIGNhc2Ugb2YgdGhlIGFic2VuY2Ugb2YgQ1JEQSxcXG4gNjU3OlxcdFxcdFxcdCAqIGl0J3Mgb3VyIG93biBjdXN0b20gd29ybGQgcmVndWxhdG9yeSBkb21haW4sIHNpbWlsYXIgdG9cXG4gNjU4OlxcdFxcdFxcdCAqIGNmZzgwMjExJ3MgYnV0IHdlIGVuYWJsZSBwYXNzaXZlIHNjYW5uaW5nLlxcbiA2NTk6XFx0XFx0XFx0ICovXFxuIDY2MDpcXHRcXHRcXHRyZWdkID0gYXRoX2RlZmF1bHRfd29ybGRfcmVnZG9tYWluKCk7XFxuIDY2MTpcXHRcXHR9XFxuIDY2MjpcXHRcXG4gNjYzOlxcdFxcdHdpcGh5X2FwcGx5X2N1c3RvbV9yZWd1bGF0b3J5KHdpcGh5LCByZWdkKTtcXG4gNjY0OlxcdFxcdGF0aF9yZWdfYXBwbHlfcmFkYXJfZmxhZ3Mod2lwaHksIHJlZyk7XFxuIDY2NTpcXHRcXHRhdGhfcmVnX2FwcGx5X3dvcmxkX2ZsYWdzKHdpcGh5LCBOTDgwMjExX1JFR0RPTV9TRVRfQllfRFJJVkVSLCByZWcpO1xcbiA2NjY6XFx0XFx0cmV0dXJuIDA7XFxuIDY2NzpcXHR9XFxuIDY2ODpcXHRcXG4gNjY5OlxcdC8qXFxuIDY3MDpcXHQgKiBTb21lIHVzZXJzIGhhdmUgcmVwb3J0ZWQgdGhlaXIgRUVQUk9NIHByb2dyYW1tZWQgd2l0aFxcbiA2NzE6XFx0ICogMHg4MDAwIHNldCwgdGhpcyBpcyBub3QgYSBzdXBwb3J0ZWQgcmVndWxhdG9yeSBkb21haW5cXG4gNjcyOlxcdCAqIGJ1dCBzaW5jZSB3ZSBoYXZlIG1vcmUgdGhhbiBvbmUgdXNlciB3aXRoIGl0IHdlIG5lZWRcXG4gNjczOlxcdCAqIGEgc29sdXRpb24gZm9yIHRoZW0uIFdlIGRlZmF1bHQgdG8gMHg2NCwgd2hpY2ggaXMgdGhlXFxuIDY3NDpcXHQgKiBkZWZhdWx0IEF0aGVyb3Mgd29ybGQgcmVndWxhdG9yeSBkb21haW4uXFxuIDY3NTpcXHQgKi9cXG4gNjc2OlxcdHN0YXRpYyB2b2lkIGF0aF9yZWdkX3Nhbml0aXplKHN0cnVjdCBhdGhfcmVndWxhdG9yeSAqcmVnKVxcbiA2Nzc6XFx0e1xcbiA2Nzg6XFx0XFx0aWYgKHJlZy1cXHUwMDNlY3VycmVudF9yZCAhPSBDT1VOVFJZX0VSRF9GTEFHKVxcbiA2Nzk6XFx0XFx0XFx0cmV0dXJuO1xcbiA2ODA6XFx0XFx0cHJpbnRrKEtFUk5fREVCVUcgXFxcImF0aDogRUVQUk9NIHJlZ2RvbWFpbiBzYW5pdGl6ZWRcXFxcblxcXCIpO1xcbiA2ODE6XFx0XFx0cmVnLVxcdTAwM2VjdXJyZW50X3JkID0gMHg2NDtcXG4gNjgyOlxcdH1cXG4gNjgzOlxcdFxcbiA2ODQ6XFx0c3RhdGljIGludCBfX2F0aF9yZWdkX2luaXQoc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcpXFxuIDY4NTpcXHR7XFxuIDY4NjpcXHRcXHRzdHJ1Y3QgY291bnRyeV9jb2RlX3RvX2VudW1fcmQgKmNvdW50cnkgPSBOVUxMO1xcbiA2ODc6XFx0XFx0dTE2IHJlZ2RtbjtcXG4gNjg4OlxcdFxcbiA2ODk6XFx0XFx0aWYgKCFyZWcpXFxuIDY5MDpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gNjkxOlxcdFxcbiA2OTI6XFx0XFx0YXRoX3JlZ2Rfc2FuaXRpemUocmVnKTtcXG4gNjkzOlxcdFxcbiA2OTQ6XFx0XFx0cHJpbnRrKEtFUk5fREVCVUcgXFxcImF0aDogRUVQUk9NIHJlZ2RvbWFpbjogMHglMHhcXFxcblxcXCIsIHJlZy1cXHUwMDNlY3VycmVudF9yZCk7XFxuIDY5NTpcXHRcXG4gNjk2OlxcdFxcdGlmICghYXRoX3JlZ2RfaXNfZWVwcm9tX3ZhbGlkKHJlZykpIHtcXG4gNjk3OlxcdFxcdFxcdHByX2VycihcXFwiSW52YWxpZCBFRVBST00gY29udGVudHNcXFxcblxcXCIpO1xcbiA2OTg6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIDY5OTpcXHRcXHR9XFxuIDcwMDpcXHRcXG4gNzAxOlxcdFxcdHJlZ2RtbiA9IGF0aF9yZWdkX2dldF9lZXByb21SRChyZWcpO1xcbiA3MDI6XFx0XFx0cmVnLVxcdTAwM2Vjb3VudHJ5X2NvZGUgPSBhdGhfcmVnZF9nZXRfZGVmYXVsdF9jb3VudHJ5KHJlZ2Rtbik7XFxuIDcwMzpcXHRcXG4gNzA0OlxcdFxcdGlmIChyZWctXFx1MDAzZWNvdW50cnlfY29kZSA9PSBDVFJZX0RFRkFVTFQgXFx1MDAyNlxcdTAwMjZcXG4gNzA1OlxcdFxcdCAgICByZWdkbW4gPT0gQ1RSWV9ERUZBVUxUKSB7XFxuIDcwNjpcXHRcXHRcXHRwcmludGsoS0VSTl9ERUJVRyBcXFwiYXRoOiBFRVBST00gaW5kaWNhdGVzIGRlZmF1bHQgXFxcIlxcbiA3MDc6XFx0XFx0XFx0ICAgICAgIFxcXCJjb3VudHJ5IGNvZGUgc2hvdWxkIGJlIHVzZWRcXFxcblxcXCIpO1xcbiA3MDg6XFx0XFx0XFx0cmVnLVxcdTAwM2Vjb3VudHJ5X2NvZGUgPSBDVFJZX1VOSVRFRF9TVEFURVM7XFxuIDcwOTpcXHRcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDExOjQzOjEyLjY4OTAyMjMyWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjYyNzc4OTU1NTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipEaXNzZWN0aW5nIHRoZSBSZWd1bGF0b3J5IEluaXRpYWxpemF0aW9uKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIHJlZ3VsYXRvcnkgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgZm9yIGEgd2lyZWxlc3MgZGV2aWNlLiBUaGUgdHJhaWwgc3RhcnRzIHdpdGggYGF0aF9yZWdkX2luaXRfd2lwaHlgLCBhbmQgSSBzZWUgaXQgaW1tZWRpYXRlbHkgaGFuZHMgb2ZmIHRvIGB3aXBoeV9hcHBseV9jdXN0b21fcmVndWxhdG9yeWAg4oCTIHRoYXQncyB0aGUga2V5IGZ1bmN0aW9uLiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyAqYWN0dWFsbHkqIGhhcHBlbmluZyBoZXJlLiBJdCdzIHRpbWUgdG8gY3JhY2sgb3BlbiBgbmV0L3dpcmVsZXNzL3JlZy5jYCBhbmQgZGl2ZSBpbnRvIHRoZSBzb3VyY2UgY29kZSBmb3IgYHdpcGh5X2FwcGx5X2N1c3RvbV9yZWd1bGF0b3J5YC4gSSB3YW50IHRvIHNlZSBwcmVjaXNlbHkgaG93IHRoYXQgZnVuY3Rpb24gdGFrZXMgdGhlIGB3aXBoeWAgc3RydWN0dXJlIGFuZCB0aGUgYHJlZ2RgIChyZWd1bGF0b3J5IGRvbWFpbikgc3RydWN0dXJlLCBhbmQgYXBwbGllcyB0aGUgY3VzdG9tIHJlZ3VsYXRvcnkgc2V0dGluZ3MuIFdoYXQgcGFyYW1ldGVycyBhcmUgYmVpbmcgcGFzc2VkPyBIb3cgYXJlIHRoZXkgYmVpbmcgcHJvY2Vzc2VkPyBXaGF0J3MgdGhlIGNvbnRyb2wgZmxvdz8gVGhpcyBmdW5jdGlvbiBpcyBsaWtlbHkgdGhlIGxpbmNocGluIG9mIGhvdyB0aGUgZHJpdmVyIGludGVyYWN0cyB3aXRoIHRoZSByZWd1bGF0b3J5IGRvbWFpbiBkYXRhLCBzbyB1bmRlcnN0YW5kaW5nIGl0cyBndXRzIGlzIGNyaXRpY2FsIHRvIHNlZWluZyBob3cgdGhpcyBkcml2ZXIgd29ya3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5ODg2LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxMTo0NDoxNS40Njc5ODAxNVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzYzNjg2NTIzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIndpcGh5X2FwcGx5X2N1c3RvbV9yZWd1bGF0b3J5XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC93aXJlbGVzc1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvd2lyZWxlc3MvcmVnLmM9MjU5Mz1zdGF0aWMgdm9pZCBoYW5kbGVfYmFuZF9jdXN0b20oc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4tLVxcbm5ldC93aXJlbGVzcy9yZWcuYy0yNjEyLS8qIFVzZWQgYnkgZHJpdmVycyBwcmlvciB0byB3aXBoeSByZWdpc3RyYXRpb24gKi9cXG5uZXQvd2lyZWxlc3MvcmVnLmM6MjYxMzp2b2lkIHdpcGh5X2FwcGx5X2N1c3RvbV9yZWd1bGF0b3J5KHN0cnVjdCB3aXBoeSAqd2lwaHksXFxubmV0L3dpcmVsZXNzL3JlZy5jLTI2MTQtXFx0XFx0XFx0XFx0ICAgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW4gKnJlZ2QpXFxuLS1cXG5uZXQvd2lyZWxlc3MvcmVnLmMtMjY0Ny19XFxubmV0L3dpcmVsZXNzL3JlZy5jOjI2NDg6RVhQT1JUX1NZTUJPTCh3aXBoeV9hcHBseV9jdXN0b21fcmVndWxhdG9yeSk7XFxubmV0L3dpcmVsZXNzL3JlZy5jLTI2NDktXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDExOjQ0OjE1LjgzMTY3MjM0M1oiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNzQxNzgxMjgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYGF0aDlrX2h0Y2AgVVNCIERyaXZlciBmb3IgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgYXRoOWtfaHRjYCwgd2hpY2ggSSBrbm93IGlzIGEgVVNCIGRyaXZlciwgbXVjaCBsaWtlIGBjYXJsOTE3MGAuIE15IGluaXRpYWwgZm9jdXMgaXMgb24gdGhlIHByb2JlIHBhdGggYW5kIGhvdyB0aGUgZmlybXdhcmUgYW5kIGhhcmR3YXJlIGFyZSBpbml0aWFsaXplZCB3aXRoaW4gdGhpcyBkcml2ZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIGBhdGg5a19odGNgIGlzIHN1Y2Nlc3NmdWxseSBwcm9iZWQgaW4gZW52aXJvbm1lbnRzIGxpa2Ugc3l6a2FsbGVyIG9yIFFFTVUuIFRoaW5raW5nIGFib3V0IHN5emthbGxlcidzIFVTQiBmdXp6aW5nIGNhcGFiaWxpdGllcywgcGFydGljdWxhcmx5IHVzaW5nIHJhdyBnYWRnZXRzLCBgdXNiLWZ1enplcmAsIG9yIHZ1c2IsIHRoZSBhYmlsaXR5IHRvIHByb2JlIFVTQiBkcml2ZXJzIGJlY29tZXMgYSBjcml0aWNhbCBhdmVudWUuIEkgbmVlZCB0byBrbm93ICpob3cqIGBhdGg5a19odGNgIGdldHMgcHJvYmVkLiBUaGVyZWZvcmUsIEknbSBkaXZpbmcgZGVlcGVyIGludG8gdGhlIHByb2JlIHJvdXRpbmUuIEknbGwgZXhhbWluZSB0aGUgY29kZSBhdCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuY2AuIFRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgbG9naWMgd2lsbCByZXNpZGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBlbnRyeSBwb2ludHMgZm9yIGZ1enppbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwMzczLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDExOjQ0OjE4LjU3MzQ1NjM4NloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTIwOTgxODcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXRoOWtfaW5pdF9kZXZpY2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9haGIuYz01NT1zdGF0aWMgaW50IGF0aF9haGJfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9haGIuYy05OC1cXHRkZXZfaWQgPSAodTE2KShrZXJuZWxfdWxvbmdfdClvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoXFx1MDAyNnBkZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FoYi5jOjk5OlxcdHJldCA9IGF0aDlrX2luaXRfZGV2aWNlKGRldl9pZCwgc2MsIFxcdTAwMjZhdGhfYWhiX2J1c19vcHMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9haGIuYy0xMDAtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2F0aDlrLmg9MTEzMD12b2lkIGF0aF9yZXN0YXJ0X3dvcmsoc3RydWN0IGF0aF9zb2Z0YyAqc2MpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hdGg5ay5oOjExMzE6aW50IGF0aDlrX2luaXRfZGV2aWNlKHUxNiBkZXZpZCwgc3RydWN0IGF0aF9zb2Z0YyAqc2MsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2F0aDlrLmgtMTEzMi1cXHRcXHQgICAgY29uc3Qgc3RydWN0IGF0aF9idXNfb3BzICpidXNfb3BzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYz03ODU9c3RhdGljIGludCBhdGg5a19pbml0X2Zpcm13YXJlX3ZlcnNpb24oc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jLTgyNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM6ODI4OnN0YXRpYyBpbnQgYXRoOWtfaW5pdF9kZXZpY2Uoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy04MjktXFx0XFx0XFx0ICAgICB1MTYgZGV2aWQsIGNoYXIgKnByb2R1Y3QsIHUzMiBkcnZfaW5mbylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYz05MzE9aW50IGF0aDlrX2h0Y19wcm9iZV9kZXZpY2Uoc3RydWN0IGh0Y190YXJnZXQgKmh0Y19oYW5kbGUsIHN0cnVjdCBkZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy05NjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jOjk2MzpcXHRyZXQgPSBhdGg5a19pbml0X2RldmljZShwcml2LCBkZXZpZCwgcHJvZHVjdCwgZHJ2X2luZm8pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy05NjQtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmM9OTAzPXN0YXRpYyB2b2lkIGF0aDlrX3NldF9od19jYXBhYihzdHJ1Y3QgYXRoX3NvZnRjICpzYywgc3RydWN0IGllZWU4MDIxMV9odyAqaHcpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jLTEwMDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYzoxMDA0OmludCBhdGg5a19pbml0X2RldmljZSh1MTYgZGV2aWQsIHN0cnVjdCBhdGhfc29mdGMgKnNjLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmMtMTAwNS1cXHRcXHQgICAgY29uc3Qgc3RydWN0IGF0aF9idXNfb3BzICpidXNfb3BzKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3BjaS5jPTg4ND1zdGF0aWMgaW50IGF0aF9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9wY2kuYy05NzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3BjaS5jOjk3OTpcXHRyZXQgPSBhdGg5a19pbml0X2RldmljZShpZC1cXHUwMDNlZGV2aWNlLCBzYywgXFx1MDAyNmF0aF9wY2lfYnVzX29wcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3BjaS5jLTk4MC1cXHRpZiAocmV0KSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDExOjQ0OjE4LjYyNTU2MTg1MVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozMzUxMzAwMDc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIGhvdyBJJ2QgYXBwcm9hY2ggdGhhdCBrZXJuZWwgbW9kdWxlIGludmVzdGlnYXRpb24sIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgYW4gZXhwZXJ0OlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIGBhdGg5a19odGNgIFByb2JlIFBhdGgqKlxuXG5SaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gaXQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgYGF0aDlrX2h0Y2AgZHJpdmVyIGdldHMgbG9hZGVkLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gdGhlIFVTQiBIaWdoLVRocm91Z2hwdXQgQ2FwYWJpbGl0eSAoSFRDKSBpbml0aWFsaXphdGlvbi4gTXkgc3RhcnRpbmcgcG9pbnQgaXMgdGhlIG1vc3QgbG9naWNhbCBwbGFjZTogYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmNgLiBUaGF0J3Mgd2hlcmUgdGhlIFVTQi1zcGVjaWZpYyBISUYgKEhvc3QgSW50ZXJmYWNlKSBjb2RlIGZvciB0aGUgYXRoOWsgZmFtaWx5IHdpbGwgbGl2ZSwgYW5kIHRoZSBgYXRoOWtfaHRjYCBtb2R1bGUgaXMgdGhlIG9uZSByZXNwb25zaWJsZSBmb3IgdGhlIEhUQyBjb25uZWN0aW9uLCBzbyBpdCdzIGEgdmVyeSBnb29kIGZpcnN0IGd1ZXNzLlxuXG5NeSBleHBlY3RhdGlvbiBpcyB0byBmaW5kIHRoZSBVU0IgcHJvYmUgZnVuY3Rpb24gZGVmaW5lZCBoZXJlLiBJJ2xsIGxpa2VseSBiZSBzY2FubmluZyBmb3IgdGhpbmdzIGxpa2UgYHVzYl9kcml2ZXJgIHN0cnVjdHVyZXMsIGxpa2VseSBpbiB0aGUgZm9ybSBvZiBhIG1vZHVsZSBpbml0IGZ1bmN0aW9uIGxpa2UgYG1vZHVsZV9pbml0KGF0aDlrX2h0Y191c2JfaW5pdClgLiBJ4oCZbGwgYmUgbG9va2luZyBmb3Igd2hlcmUgdGhlIFVTQiBkZXZpY2UgSURzIGFyZSBtYXRjaGVkLCBwcm9iYWJseSBpbiBhIGB1c2JfZGV2aWNlX2lkYCB0YWJsZS4gSSdtIGV4cGVjdGluZyB0byBzZWUgd2hlcmUgdGhlIGRyaXZlciByZWdpc3RlcnMgaXRzZWxmIHdpdGggdGhlIFVTQiBjb3JlLCBhbmQgY3J1Y2lhbGx5LCB3aGVyZSB0aGUgYWN0dWFsIGBhdGg5a19odGNgIGRldmljZSBzdHJ1Y3R1cmUgaXMgYWxsb2NhdGVkIGFuZCBpbml0aWFsaXplZC4gSSdsbCBiZSBtZW50YWxseSB0cmFjaW5nIHRoZSBleGVjdXRpb24gZmxvdyBvZiB0aGUgcHJvYmUgZnVuY3Rpb24sIGxvb2tpbmcgZm9yIGFueSBjb25kaXRpb25hbCBzdGF0ZW1lbnRzIG9yIGVycm9yIGhhbmRsaW5nIHRoYXQgY291bGQgaW1wYWN0IHRoZSBtb2R1bGUncyBzdWNjZXNzIGluIGF0dGFjaGluZyB0byBhIHBhcnRpY3VsYXIgVVNCIGRldmljZS4gSSB3aWxsIGFsc28gbWFrZSBzdXJlIHRvIGNoZWNrIGFsbCB0aGUgcmVsYXRlZCBmdW5jdGlvbnMgY2FsbHMgdGhhdCBhcmUgdXNlZCBkdXJpbmcgdGhpcyBwcm9iZS5cblxuRXNzZW50aWFsbHksIEkgYW0gdHJ5aW5nIHRvIGFzY2VydGFpbiBwcmVjaXNlbHkgaG93IGFuZCB3aGVuIHRoZSBgYXRoOWtfaHRjYCBkcml2ZXIgYmluZHMgdG8gYSBtYXRjaGluZyBVU0IgZGV2aWNlLiBGcm9tIHRoZXJlLCBJJ2xsIGJlIGFibGUgdG8gYnVpbGQgYSBjbGVhcmVyIHVuZGVyc3RhbmRpbmcgb2YgcG90ZW50aWFsIHByb2JsZW1zIGFuZCBvcHRpbWl6YXRpb24gc3RyYXRlZ2llcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzE3MzYsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxMTo0NDoyMS45NzY4NjQ0ODZaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAyNzEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTI2MCxcbiAgXCJMaW5lQ291bnRcIjogODBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTI2MDpcXHRcXHRcXHRcXHRcXHRoaWZfZGV2LVxcdTAwM2VpZF9pbmZvKTtcXG4xMjYxOlxcdFxcdGlmIChyZXQpIHtcXG4xMjYyOlxcdFxcdFxcdHJldCA9IC1FSU5WQUw7XFxuMTI2MzpcXHRcXHRcXHRnb3RvIGVycl9odGNfaHdfaW5pdDtcXG4xMjY0OlxcdFxcdH1cXG4xMjY1OlxcdFxcbjEyNjY6XFx0XFx0cmVsZWFzZV9maXJtd2FyZShmdyk7XFxuMTI2NzpcXHRcXHRoaWZfZGV2LVxcdTAwM2VmbGFncyB8PSBISUZfVVNCX1JFQURZO1xcbjEyNjg6XFx0XFx0Y29tcGxldGVfYWxsKFxcdTAwMjZoaWZfZGV2LVxcdTAwM2Vmd19kb25lKTtcXG4xMjY5OlxcdFxcbjEyNzA6XFx0XFx0cmV0dXJuO1xcbjEyNzE6XFx0XFxuMTI3MjpcXHRlcnJfaHRjX2h3X2luaXQ6XFxuMTI3MzpcXHRcXHRhdGg5a19oaWZfdXNiX2Rldl9kZWluaXQoaGlmX2Rldik7XFxuMTI3NDpcXHRlcnJfZGV2X2luaXQ6XFxuMTI3NTpcXHRcXHRhdGg5a19odGNfaHdfZnJlZShoaWZfZGV2LVxcdTAwM2VodGNfaGFuZGxlKTtcXG4xMjc2OlxcdGVycl9kZXZfYWxsb2M6XFxuMTI3NzpcXHRcXHRyZWxlYXNlX2Zpcm13YXJlKGZ3KTtcXG4xMjc4OlxcdGVycl9mdzpcXG4xMjc5OlxcdFxcdGF0aDlrX2hpZl91c2JfZmlybXdhcmVfZmFpbChoaWZfZGV2KTtcXG4xMjgwOlxcdH1cXG4xMjgxOlxcdFxcbjEyODI6XFx0LypcXG4xMjgzOlxcdCAqIEFuIGV4YWN0IGNvcHkgb2YgdGhlIGZ1bmN0aW9uIGZyb20gemQxMjExcncuXFxuMTI4NDpcXHQgKi9cXG4xMjg1OlxcdHN0YXRpYyBpbnQgc2VuZF9lamVjdF9jb21tYW5kKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRlcmZhY2UpXFxuMTI4NjpcXHR7XFxuMTI4NzpcXHRcXHRzdHJ1Y3QgdXNiX2RldmljZSAqdWRldiA9IGludGVyZmFjZV90b191c2JkZXYoaW50ZXJmYWNlKTtcXG4xMjg4OlxcdFxcdHN0cnVjdCB1c2JfaG9zdF9pbnRlcmZhY2UgKmlmYWNlX2Rlc2MgPSBpbnRlcmZhY2UtXFx1MDAzZWN1cl9hbHRzZXR0aW5nO1xcbjEyODk6XFx0XFx0c3RydWN0IHVzYl9lbmRwb2ludF9kZXNjcmlwdG9yICplbmRwb2ludDtcXG4xMjkwOlxcdFxcdHVuc2lnbmVkIGNoYXIgKmNtZDtcXG4xMjkxOlxcdFxcdHU4IGJ1bGtfb3V0X2VwO1xcbjEyOTI6XFx0XFx0aW50IHI7XFxuMTI5MzpcXHRcXG4xMjk0OlxcdFxcdGlmIChpZmFjZV9kZXNjLVxcdTAwM2VkZXNjLmJOdW1FbmRwb2ludHMgXFx1MDAzYyAyKVxcbjEyOTU6XFx0XFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuMTI5NjpcXHRcXG4xMjk3OlxcdFxcdC8qIEZpbmQgYnVsayBvdXQgZW5kcG9pbnQgKi9cXG4xMjk4OlxcdFxcdGZvciAociA9IDE7IHIgXFx1MDAzZT0gMDsgci0tKSB7XFxuMTI5OTpcXHRcXHRcXHRlbmRwb2ludCA9IFxcdTAwMjZpZmFjZV9kZXNjLVxcdTAwM2VlbmRwb2ludFtyXS5kZXNjO1xcbjEzMDA6XFx0XFx0XFx0aWYgKHVzYl9lbmRwb2ludF9kaXJfb3V0KGVuZHBvaW50KSBcXHUwMDI2XFx1MDAyNlxcbjEzMDE6XFx0XFx0XFx0ICAgIHVzYl9lbmRwb2ludF94ZmVyX2J1bGsoZW5kcG9pbnQpKSB7XFxuMTMwMjpcXHRcXHRcXHRcXHRidWxrX291dF9lcCA9IGVuZHBvaW50LVxcdTAwM2ViRW5kcG9pbnRBZGRyZXNzO1xcbjEzMDM6XFx0XFx0XFx0XFx0YnJlYWs7XFxuMTMwNDpcXHRcXHRcXHR9XFxuMTMwNTpcXHRcXHR9XFxuMTMwNjpcXHRcXHRpZiAociA9PSAtMSkge1xcbjEzMDc6XFx0XFx0XFx0ZGV2X2VycihcXHUwMDI2dWRldi1cXHUwMDNlZGV2LFxcbjEzMDg6XFx0XFx0XFx0XFx0XFxcImF0aDlrX2h0YzogQ291bGQgbm90IGZpbmQgYnVsayBvdXQgZW5kcG9pbnRcXFxcblxcXCIpO1xcbjEzMDk6XFx0XFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuMTMxMDpcXHRcXHR9XFxuMTMxMTpcXHRcXG4xMzEyOlxcdFxcdGNtZCA9IGt6YWxsb2MoMzEsIEdGUF9LRVJORUwpO1xcbjEzMTM6XFx0XFx0aWYgKGNtZCA9PSBOVUxMKVxcbjEzMTQ6XFx0XFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuMTMxNTpcXHRcXG4xMzE2OlxcdFxcdC8qIFVTQiBidWxrIGNvbW1hbmQgYmxvY2sgKi9cXG4xMzE3OlxcdFxcdGNtZFswXSA9IDB4NTU7XFx0LyogYnVsayBjb21tYW5kIHNpZ25hdHVyZSAqL1xcbjEzMTg6XFx0XFx0Y21kWzFdID0gMHg1MztcXHQvKiBidWxrIGNvbW1hbmQgc2lnbmF0dXJlICovXFxuMTMxOTpcXHRcXHRjbWRbMl0gPSAweDQyO1xcdC8qIGJ1bGsgY29tbWFuZCBzaWduYXR1cmUgKi9cXG4xMzIwOlxcdFxcdGNtZFszXSA9IDB4NDM7XFx0LyogYnVsayBjb21tYW5kIHNpZ25hdHVyZSAqL1xcbjEzMjE6XFx0XFx0Y21kWzE0XSA9IDY7XFx0LyogY29tbWFuZCBsZW5ndGggKi9cXG4xMzIyOlxcdFxcbjEzMjM6XFx0XFx0Y21kWzE1XSA9IDB4MWI7XFx0LyogU0NTSSBjb21tYW5kOiBTVEFSVCBTVE9QIFVOSVQgKi9cXG4xMzI0OlxcdFxcdGNtZFsxOV0gPSAweDI7XFx0LyogZWplY3QgZGlzYyAqL1xcbjEzMjU6XFx0XFxuMTMyNjpcXHRcXHRkZXZfaW5mbyhcXHUwMDI2dWRldi1cXHUwMDNlZGV2LCBcXFwiRWplY3Rpbmcgc3RvcmFnZSBkZXZpY2UuLi5cXFxcblxcXCIpO1xcbjEzMjc6XFx0XFx0ciA9IHVzYl9idWxrX21zZyh1ZGV2LCB1c2Jfc25kYnVsa3BpcGUodWRldiwgYnVsa19vdXRfZXApLFxcbjEzMjg6XFx0XFx0XFx0Y21kLCAzMSwgTlVMTCwgMiAqIFVTQl9NU0dfVElNRU9VVCk7XFxuMTMyOTpcXHRcXHRrZnJlZShjbWQpO1xcbjEzMzA6XFx0XFx0aWYgKHIpXFxuMTMzMTpcXHRcXHRcXHRyZXR1cm4gcjtcXG4xMzMyOlxcdFxcbjEzMzM6XFx0XFx0LyogQXQgdGhpcyBwb2ludCwgdGhlIGRldmljZSBkaXNjb25uZWN0cyBhbmQgcmVjb25uZWN0cyB3aXRoIHRoZSByZWFsXFxuMTMzNDpcXHRcXHQgKiBJRCBudW1iZXJzLiAqL1xcbjEzMzU6XFx0XFxuMTMzNjpcXHRcXHR1c2Jfc2V0X2ludGZkYXRhKGludGVyZmFjZSwgTlVMTCk7XFxuMTMzNzpcXHRcXHRyZXR1cm4gMDtcXG4xMzM4OlxcdH1cXG4xMzM5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxMTo0NDoyMS45NzY5Njg1MjZaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzI0OTU0MTA0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbnZlc3RpZ2F0aXZlIFByb2Nlc3MgZm9yIFJlZ3VsYXRvcnkgRG9tYWluIEluaXRpYWxpemF0aW9uKipcblxuT2theSwgaGVyZSdzIHRoZSBnYW1lIHBsYW4uIEknbSBmb2N1c2luZyBvbiB0aGUgYGF0aDlrX2h0Y2AgZHJpdmVyIGFuZCBpdHMgcmVndWxhdG9yeSBkb21haW4gaGFuZGxpbmcuIEkga25vdyB0aGF0IGBhdGg5a19odGNgIGxvYWRzIGZpcm13YXJlIChgcmVsZWFzZV9maXJtd2FyZWApIGJlZm9yZSBpdCBpbml0aWFsaXplcyB0aGUgZGV2aWNlIGFuZCBjYWxscyBgYXRoX3JlZ2RfaW5pdGAuIEJ1dCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgKmZ1bGwqIHBpY3R1cmUgaGVyZS5cblxuTXkgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgdGhlIGBhdGhfd29ybGRfcmVnZG9tXypgIGZ1bmN0aW9ucy4gQXJlIHRob3NlIHRoZSBvbmx5IHBvaW50cyBvZiBjb250YWN0IHdpdGggcmVndWxhdG9yeSBjb2RlLCBvciBpcyB0aGVyZSBhbm90aGVyIHNwb3Qgd2hlcmUgYGF0aF9yZWdkYCBpcyBjYWxsZWQgaW50byBhY3Rpb24/XG5cbkknbSB0aGlua2luZyBhYm91dCB0aGUgYmlnZ2VyIHBpY3R1cmUsIHNvIEknbGwgYWxzbyBzdGFydCBjaGVja2luZyBmb3IgaW50ZXJhY3Rpb25zIHdpdGggdGhlIHJlZ3VsYXRvcnkgZG9tYWluIGZ1bmN0aW9uYWxpdHkgdGhyb3VnaCBvdGhlciBtZXRob2RzLiBOZXRsaW5rIGFuZCBjZmc4MDIxMSBjb21tYW5kcywgYW55dGhpbmcgaW4gc3lzZnMg4oCTIHRob3NlIGFyZSBhbGwgcG9zc2liaWxpdGllcy4gSSB3YW50IHRvIHNlZSBpZiBhbnl0aGluZyBkaXJlY3RseSBhY2Nlc3NlcyBmdW5jdGlvbnMgZGVmaW5lZCBpbiBgcmVnZC5jYCBvciB1dGlsaXplcyB0aGVzZSBzcGVjaWZpYyByZWdkb21haW5zLlxuXG5UbyBtYWtlIHN1cmUgSSdtIGNvdmVyaW5nIGFsbCBiYXNlcywgSSB3aWxsIHBlcmZvcm0gYSBjb21wcmVoZW5zaXZlIHNlYXJjaCB0aHJvdWdob3V0IHRoZSBlbnRpcmUga2VybmVsIGNvZGViYXNlLiBJIHdpbGwgc2VhcmNoIGZvciBpbnN0YW5jZXMgb2YgYW55dGhpbmcgd2l0aCB0aGUgcHJlZml4ZXMgYGF0aF9yZWdfYCwgYGF0aF9yZWdkX2AsIG9yIGBhdGhfd29ybGRfcmVnZG9tYC4gSSdtIGdvaW5nIHRvIGZpbmQgYWxsIHRoZSBwaWVjZXMgYW5kIHB1dCB0aGVtIHRvZ2V0aGVyIHRvIGVuc3VyZSBJIHVuZGVyc3RhbmQgaG93IHRoaXMgd2hvbGUgcmVndWxhdG9yeSBtZWNoYW5pc20gd29ya3Mgd2l0aGluIHRoZSBrZXJuZWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzNDM0LCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTE6NDQ6MjUuMjI2NTEzODU5WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjg1MjA2NzIyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF0aF9yZWdkXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM9OTkwOD1zdGF0aWMgaW50IGF0aDEwa19tYWNfZ2V0X3dyZGRfcmVndWxhdG9yeShzdHJ1Y3QgYXRoMTBrICphciwgdTE2ICpyZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtOTk0Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jOjk5NDc6XFx0KnJkID0gYXRoX3JlZ2RfZmluZF9jb3VudHJ5X2J5X25hbWUoYWxwaGEyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTk5NDgtXFx0aWYgKCpyZCA9PSAweGZmZmYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jPTk5NzE9aW50IGF0aDEwa19tYWNfcmVnaXN0ZXIoc3RydWN0IGF0aDEwayAqYXIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTEwMzAyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM6MTAzMDM6XFx0cmV0ID0gYXRoX3JlZ2RfaW5pdChcXHUwMDI2YXItXFx1MDAzZWF0aF9jb21tb24ucmVndWxhdG9yeSwgYXItXFx1MDAzZWh3LVxcdTAwM2V3aXBoeSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTEwMzA0LVxcdFxcdFxcdCAgICBhdGgxMGtfcmVnX25vdGlmaWVyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9iYXNlLmM9MzAyNT1hdGg1a19pbml0KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDVrL2Jhc2UuYy0zMTM1LVxcdHJlZ3VsYXRvcnktXFx1MDAzZWN1cnJlbnRfcmQgPSBhaC1cXHUwMDNlYWhfY2FwYWJpbGl0aWVzLmNhcF9lZXByb20uZWVfcmVnZG9tYWluO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9iYXNlLmM6MzEzNjpcXHRyZXQgPSBhdGhfcmVnZF9pbml0KHJlZ3VsYXRvcnksIGh3LVxcdTAwM2V3aXBoeSwgYXRoNWtfcmVnX25vdGlmaWVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNWsvYmFzZS5jLTMxMzctXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDVrL3BoeS5jPTI3NjE9YXRoNWtfZ2V0X21heF9jdGxfcG93ZXIoc3RydWN0IGF0aDVrX2h3ICphaCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9waHkuYy0yNzc0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9waHkuYzoyNzc1OlxcdGN0bF9tb2RlID0gYXRoX3JlZ2RfZ2V0X2JhbmRfY3RsKHJlZ3VsYXRvcnksIGNoYW5uZWwtXFx1MDAzZWJhbmQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9waHkuYy0yNzc2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jPTgyOD1zdGF0aWMgaW50IGF0aDlrX2luaXRfZGV2aWNlKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy04NTEtXFx0LyogSW5pdGlhbGl6ZSByZWd1bGF0b3J5ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jOjg1MjpcXHRlcnJvciA9IGF0aF9yZWdkX2luaXQoXFx1MDAyNmNvbW1vbi1cXHUwMDNlcmVndWxhdG9yeSwgcHJpdi1cXHUwMDNlaHctXFx1MDAzZXdpcGh5LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy04NTMtXFx0XFx0XFx0ICAgICAgYXRoOWtfcmVnX25vdGlmaWVyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9ody5jPTExNzc9dTMyIGF0aDlrX3JlZ2RfZ2V0X2N0bChzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZywgc3RydWN0IGF0aDlrX2NoYW5uZWwgKmNoYW4pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h3LmMtMTE3OC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h3LmM6MTE3OTpcXHR1MzIgY3RsID0gYXRoX3JlZ2RfZ2V0X2JhbmRfY3RsKHJlZywgY2hhbi1cXHUwMDNlY2hhbi1cXHUwMDNlYmFuZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h3LmMtMTE4MC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmM9MTAwND1pbnQgYXRoOWtfaW5pdF9kZXZpY2UodTE2IGRldmlkLCBzdHJ1Y3QgYXRoX3NvZnRjICpzYyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmMtMTAyMi1cXHQvKiBJbml0aWFsaXplIHJlZ3VsYXRvcnkgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jOjEwMjM6XFx0ZXJyb3IgPSBhdGhfcmVnZF9pbml0KFxcdTAwMjZjb21tb24tXFx1MDAzZXJlZ3VsYXRvcnksIHNjLVxcdTAwM2Vody1cXHUwMDNld2lwaHksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYy0xMDI0LVxcdFxcdFxcdCAgICAgIGF0aDlrX3JlZ19ub3RpZmllcik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvbWFpbi5jPTE5NTM9aW50IGNhcmw5MTcwX3JlZ2lzdGVyKHN0cnVjdCBhcjkxNzAgKmFyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL21haW4uYy0xOTcwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9jYXJsOTE3MC9tYWluLmM6MTk3MTpcXHRlcnIgPSBhdGhfcmVnZF9pbml0KHJlZ3VsYXRvcnksIGFyLVxcdTAwM2Vody1cXHUwMDNld2lwaHksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL21haW4uYy0xOTcyLVxcdFxcdFxcdCAgICBjYXJsOTE3MF9yZWdfbm90aWZpZXIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL3BoeS5jPTEyOTE9c3RhdGljIHZvaWQgY2FybDkxNzBfY2FsY19jdGwoc3RydWN0IGFyOTE3MCAqYXIsIHUzMiBmcmVxLCBlbnVtIGNhcmw5MTcwX2J3IGJ3KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL3BoeS5jLTEzMjYtXFx0ICogaHByZWcuYzo6emZIcEdldFJlZ3VsYXRvcnlEb21haW4oKSBhbmRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvcGh5LmM6MTMyNzpcXHQgKiBhdGgvcmVnZC5jOjphdGhfcmVnZF9nZXRfYmFuZF9jdGwoKSAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL3BoeS5jLTEzMjgtXFx0ICogZS5nLiBmb3IgRkNDM19XT1JMRCB0aGUgT1RVUyBwcm9jZWR1cmVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9jYXJsOTE3MC9waHkuYy0xMzMxLVxcdCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9jYXJsOTE3MC9waHkuYzoxMzMyOlxcdGN0bF9ncnAgPSBhdGhfcmVnZF9nZXRfYmFuZF9jdGwoXFx1MDAyNmFyLVxcdTAwM2Vjb21tb24ucmVndWxhdG9yeSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvcGh5LmMtMTMzMy1cXHRcXHRcXHRcXHRcXHRhci1cXHUwMDNlaHctXFx1MDAzZWNvbmYuY2hhbmRlZi5jaGFuLVxcdTAwM2ViYW5kKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzoyNjpzdGF0aWMgaW50IF9fYXRoX3JlZ2RfaW5pdChzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0yNy1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM9MTk5PXN0YXRpYyBpbmxpbmUgYm9vbCBpc193d3Jfc2t1KHUxNiByZWdkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0yMDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzoyMDY6c3RhdGljIHUxNiBhdGhfcmVnZF9nZXRfZWVwcm9tUkQoc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0yMDcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYz0yMTE9Ym9vbCBhdGhfaXNfd29ybGRfcmVnZChzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTIxMi17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzoyMTM6XFx0cmV0dXJuIGlzX3d3cl9za3UoYXRoX3JlZ2RfZ2V0X2VlcHJvbVJEKHJlZykpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjE0LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM9NDM3PXN0YXRpYyB2b2lkIGF0aF9yZWdfYXBwbHlfd29ybGRfZmxhZ3Moc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNDU4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NDU5OnUxNiBhdGhfcmVnZF9maW5kX2NvdW50cnlfYnlfbmFtZShjaGFyICphbHBoYTIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy00NjAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy00NjktfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NDcwOkVYUE9SVF9TWU1CT0woYXRoX3JlZ2RfZmluZF9jb3VudHJ5X2J5X25hbWUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNDcxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM9NDcyPXN0YXRpYyBpbnQgX19hdGhfcmVnX2R5bl9jb3VudHJ5KHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTQ4MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjQ4MjpcXHRjb3VudHJ5X2NvZGUgPSBhdGhfcmVnZF9maW5kX2NvdW50cnlfYnlfbmFtZShyZXF1ZXN0LVxcdTAwM2VhbHBoYTIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNDgzLVxcdGlmIChjb3VudHJ5X2NvZGUgPT0gKHUxNikgLTEpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTQ4OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjQ4OTpcXHRfX2F0aF9yZWdkX2luaXQocmVnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTQ5MC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM9NTUwPUVYUE9SVF9TWU1CT0woYXRoX3JlZ19ub3RpZmllcl9hcHBseSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy01NTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo1NTI6c3RhdGljIGJvb2wgYXRoX3JlZ2RfaXNfZWVwcm9tX3ZhbGlkKHN0cnVjdCBhdGhfcmVndWxhdG9yeSAqcmVnKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNTUzLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjU1NDpcXHR1MTYgcmQgPSBhdGhfcmVnZF9nZXRfZWVwcm9tUkQocmVnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTU1NS1cXHRpbnQgaTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM9NTgxPXN0YXRpYyBzdHJ1Y3QgY291bnRyeV9jb2RlX3RvX2VudW1fcmQqXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo1ODI6YXRoX3JlZ2RfZmluZF9jb3VudHJ5KHUxNiBjb3VudHJ5Q29kZSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTU4My17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jPTU5ND1zdGF0aWMgc3RydWN0IGNvdW50cnlfY29kZV90b19lbnVtX3JkKlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NTk1OmF0aF9yZWdkX2ZpbmRfY291bnRyeV9ieV9yZChpbnQgcmVnZG1uKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNTk2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNjA2LS8qIFJldHVybnMgdGhlIG1hcCBvZiB0aGUgRUVQUk9NIHNldCBSRCB0byBhIGNvdW50cnkgY29kZSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NjA3OnN0YXRpYyB1MTYgYXRoX3JlZ2RfZ2V0X2RlZmF1bHRfY291bnRyeSh1MTYgcmQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy02MDgte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy02MTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo2MTM6XFx0XFx0Y291bnRyeSA9IGF0aF9yZWdkX2ZpbmRfY291bnRyeShjYyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy02MTQtXFx0XFx0aWYgKGNvdW50cnkgIT0gTlVMTClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM9NjM1PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjYzNjphdGhfcmVnZF9pbml0X3dpcGh5KHN0cnVjdCBhdGhfcmVndWxhdG9yeSAqcmVnLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNjM3LVxcdFxcdCAgICBzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy02NzUtICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo2NzY6c3RhdGljIHZvaWQgYXRoX3JlZ2Rfc2FuaXRpemUoc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy02Nzcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy02ODMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo2ODQ6c3RhdGljIGludCBfX2F0aF9yZWdkX2luaXQoc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy02ODUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy02OTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo2OTI6XFx0YXRoX3JlZ2Rfc2FuaXRpemUocmVnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTY5My1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNjk1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6Njk2OlxcdGlmICghYXRoX3JlZ2RfaXNfZWVwcm9tX3ZhbGlkKHJlZykpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTY5Ny1cXHRcXHRwcl9lcnIoXFxcIkludmFsaWQgRUVQUk9NIGNvbnRlbnRzXFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNzAwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NzAxOlxcdHJlZ2RtbiA9IGF0aF9yZWdkX2dldF9lZXByb21SRChyZWcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NzAyOlxcdHJlZy1cXHUwMDNlY291bnRyeV9jb2RlID0gYXRoX3JlZ2RfZ2V0X2RlZmF1bHRfY291bnRyeShyZWdkbW4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNzAzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy03MTUtXFx0XFx0ICAgICAgIFxcXCJtYXAgc2VhcmNoXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjcxNjpcXHRcXHRjb3VudHJ5ID0gYXRoX3JlZ2RfZmluZF9jb3VudHJ5KHJlZy1cXHUwMDNlY291bnRyeV9jb2RlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTcxNy1cXHRcXHRpZiAoY291bnRyeSA9PSBOVUxMKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTczOS1cXHRpZiAoIWNvdW50cnkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo3NDA6XFx0XFx0Y291bnRyeSA9IGF0aF9yZWdkX2ZpbmRfY291bnRyeV9ieV9yZChyZWdkbW4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNzQxLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYz03NTg9aW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo3NTk6YXRoX3JlZ2RfaW5pdChzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTc2MC1cXHQgICAgICBzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy03NjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo3Njg6XFx0ciA9IF9fYXRoX3JlZ2RfaW5pdChyZWcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNzY5LVxcdGlmIChyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy03NzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo3NzY6XFx0YXRoX3JlZ2RfaW5pdF93aXBoeShyZWcsIHdpcGh5LCByZWdfbm90aWZpZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNzc3LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy03NzktfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NzgwOkVYUE9SVF9TWU1CT0woYXRoX3JlZ2RfaW5pdCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy03ODEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo3ODI6dTMyIGF0aF9yZWdkX2dldF9iYW5kX2N0bChzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTc4My1cXHRcXHRcXHQgIGVudW0gbmw4MDIxMV9iYW5kIGJhbmQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTc4Ni1cXHQgICAgKHJlZy1cXHUwMDNlY291bnRyeV9jb2RlID09IENUUllfREVGQVVMVCBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6Nzg3OlxcdCAgICAgaXNfd3dyX3NrdShhdGhfcmVnZF9nZXRfZWVwcm9tUkQocmVnKSkpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy03ODgtXFx0XFx0cmV0dXJuIFNEX05PX0NUTDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNzkwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NzkxOlxcdGlmIChhdGhfcmVnZF9nZXRfZWVwcm9tUkQocmVnKSA9PSBDVFJZX0RFRkFVTFQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTc5Mi1cXHRcXHRzd2l0Y2ggKHJlZy1cXHUwMDNlcmVnaW9uKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTgxMi19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo4MTM6RVhQT1JUX1NZTUJPTChhdGhfcmVnZF9nZXRfYmFuZF9jdGwpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuaD0yNjI9Ym9vbCBhdGhfaXNfNDlnaHpfYWxsb3dlZCh1MTYgcmVkb21haW4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmg6MjYzOnUxNiBhdGhfcmVnZF9maW5kX2NvdW50cnlfYnlfbmFtZShjaGFyICphbHBoYTIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmg6MjY0OmludCBhdGhfcmVnZF9pbml0KHN0cnVjdCBhdGhfcmVndWxhdG9yeSAqcmVnLCBzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmgtMjY1LVxcdFxcdCAgdm9pZCAoKnJlZ19ub3RpZmllcikoc3RydWN0IHdpcGh5ICp3aXBoeSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5oLTI2Ni1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHJlZ3VsYXRvcnlfcmVxdWVzdCAqcmVxdWVzdCkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmg6MjY3OnUzMiBhdGhfcmVnZF9nZXRfYmFuZF9jdGwoc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuaC0yNjgtXFx0XFx0XFx0ICBlbnVtIG5sODAyMTFfYmFuZCBiYW5kKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTE6NDQ6MjYuOTExNzI5MzkxWiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI3Mzg4NTg2ODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBhdGhfcmVnZCBJbml0aWFsaXphdGlvbioqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBvYnNlcnZhdGlvbiBpcyB0aGF0IGBhdGhfcmVnZF9pbml0YCBzZWVtcyBwcmV0dHkgY3J1Y2lhbCwgYW5kIGl0J3MgYmVpbmcgY2FsbGVkIGJ5IGEgZGl2ZXJzZSByYW5nZSBvZiBkcml2ZXJzLiBJIHNlZSBpdCBpbnZva2VkIGJ5IHRoZSBgYXRoMTBrYCwgYGF0aDVrYCwgYGF0aDlrX2h0Y2AsIGBhdGg5a2AsIGFuZCBgY2FybDkxNzBgIGZhbWlsaWVzLiBUaGVzZSBjb3ZlciBhIGJyb2FkIHNwZWN0cnVtIG9mIGhhcmR3YXJlIGludGVyZmFjZXM6IFBDSSwgU05PQywgU0RJTywgQUhCLCBhbmQgVVNCLiBUaGF0J3MgYSBzdHJvbmcgaW5kaWNhdGlvbiB0aGF0IHRoaXMgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24gaXMgZnVuZGFtZW50YWwgdG8gcmVndWxhdG9yeSBkb21haW4gbWFuYWdlbWVudCBhY3Jvc3MgYSBsb3Qgb2YgZGlmZmVyZW50IGRldmljZXMuXG5cbkhvbGQgb24gYSBzZWNvbmQsIHRob3VnaC4gSSBuZWVkIHRvIGJlIHRob3JvdWdoLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgYmlnIHBpY3R1cmUuIFdoYXQgYWJvdXQgYGF0aF9yZWdfbm90aWZpZXJfYXBwbHlgPyBJIHJlbWVtYmVyIHRoYXQsIGJ1dCB3aGVyZSBkb2VzIGl0IGZpdCBpbnRvIHRoZSBwaWN0dXJlPyBJJ20gZ29pbmcgdG8gaGF2ZSB0byBjaGVjayB3aGVyZSB0aGF0J3MgY2FsbGVkLCBiZWNhdXNlIEknbSBiZXR0aW5nIHRoYXQncyBhbiBpbXBvcnRhbnQgcGllY2Ugb2YgdGhlIHB1enpsZS4gSSBuZWVkIHRvIHNlZSBob3cgdGhlc2UgdHdvIGZ1bmN0aW9ucyByZWxhdGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4MTI4LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDExOjQ0OjI5LjY1MDU5MDk0NFoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTEzMTEzNjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXRoX3JlZ19ub3RpZmllcl9hcHBseVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYz0zNTYxPXN0YXRpYyB2b2lkIGF0aDEwa19yZWdfbm90aWZpZXIoc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtMzU2Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jOjM1Njg6XFx0YXRoX3JlZ19ub3RpZmllcl9hcHBseSh3aXBoeSwgcmVxdWVzdCwgXFx1MDAyNmFyLVxcdTAwM2VhdGhfY29tbW9uLnJlZ3VsYXRvcnkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtMzU2OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9iYXNlLmM9MjUyPXN0YXRpYyB2b2lkIGF0aDVrX3JlZ19ub3RpZmllcihzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDVrL2Jhc2UuYy0yNTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDVrL2Jhc2UuYzoyNTk6XFx0YXRoX3JlZ19ub3RpZmllcl9hcHBseSh3aXBoeSwgcmVxdWVzdCwgcmVndWxhdG9yeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDVrL2Jhc2UuYy0yNjAtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jPTIyND1zdGF0aWMgdm9pZCBhdGg5a19yZWdfbm90aWZpZXIoc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy0yMjktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jOjIzMDpcXHRhdGhfcmVnX25vdGlmaWVyX2FwcGx5KHdpcGh5LCByZXF1ZXN0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy0yMzEtXFx0XFx0XFx0ICAgICAgIGF0aDlrX2h3X3JlZ3VsYXRvcnkocHJpdi1cXHUwMDNlYWgpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmM9MjQ5PXN0YXRpYyB2b2lkIGF0aDlrX3JlZ19ub3RpZmllcihzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYy0yNTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYzoyNTc6XFx0YXRoX3JlZ19ub3RpZmllcl9hcHBseSh3aXBoeSwgcmVxdWVzdCwgcmVnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jLTI1OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9jYXJsOTE3MC9tYWluLmM9MTk0ND1zdGF0aWMgdm9pZCBjYXJsOTE3MF9yZWdfbm90aWZpZXIoc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9jYXJsOTE3MC9tYWluLmMtMTk0OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvbWFpbi5jOjE5NTA6XFx0YXRoX3JlZ19ub3RpZmllcl9hcHBseSh3aXBoeSwgcmVxdWVzdCwgXFx1MDAyNmFyLVxcdTAwM2Vjb21tb24ucmVndWxhdG9yeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL21haW4uYy0xOTUxLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM9NDk2PXN0YXRpYyB2b2lkIGF0aF9yZWdfZHluX2NvdW50cnkoc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNTA4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NTA5OnZvaWQgYXRoX3JlZ19ub3RpZmllcl9hcHBseShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNTEwLVxcdFxcdFxcdCAgICBzdHJ1Y3QgcmVndWxhdG9yeV9yZXF1ZXN0ICpyZXF1ZXN0LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy01NDktfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NTUwOkVYUE9SVF9TWU1CT0woYXRoX3JlZ19ub3RpZmllcl9hcHBseSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy01NTEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5oPTI2Nz11MzIgYXRoX3JlZ2RfZ2V0X2JhbmRfY3RsKHN0cnVjdCBhdGhfcmVndWxhdG9yeSAqcmVnLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmgtMjY4LVxcdFxcdFxcdCAgZW51bSBubDgwMjExX2JhbmQgYmFuZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuaDoyNjk6dm9pZCBhdGhfcmVnX25vdGlmaWVyX2FwcGx5KHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuaC0yNzAtXFx0XFx0XFx0ICAgIHN0cnVjdCByZWd1bGF0b3J5X3JlcXVlc3QgKnJlcXVlc3QsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDExOjQ0OjI5LjcwMTkwNjdaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjgxODAyMDA0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgUmVndWxhdG9yeSBEb21haW4gQ2hhbmdlcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGhvdyB0aGUgc3lzdGVtIGhhbmRsZXMgY2hhbmdlcyB0byB0aGUgcmVndWxhdG9yeSBkb21haW4uIEl0IGxvb2tzIGxpa2UgYGF0aF9yZWdfbm90aWZpZXJfYXBwbHlgIGlzIHRoZSBrZXkgZnVuY3Rpb24uIFRoaXMgaXMgdHJpZ2dlcmVkLCBpdCBzZWVtcywgd2hlbiBzb21lb25lIOKAkyBtYXliZSB0aHJvdWdoIGBubDgwMjExYCBmcm9tIHVzZXJzcGFjZSDigJMgc2V0cyBhIG5ldyByZWd1bGF0b3J5IGRvbWFpbiBvciBjb3VudHJ5IGNvZGUuIFRoYXQgbWFrZXMgc2Vuc2UsIGhhbmRsaW5nIHRob3NlIHVwZGF0ZXMgaXMgY3JpdGljYWwgZm9yIGNvbXBsaWFuY2UgYW5kIHByb3BlciBvcGVyYXRpb24uXG5cbk15IG5leHQgc3RlcCBpcyB0byBkaXZlIGludG8gdGhlIHNvdXJjZSBjb2RlIGZvciBgYXRoX3JlZ19ub3RpZmllcl9hcHBseWAuIFNwZWNpZmljYWxseSwgSSdsbCBiZSBjaGVja2luZyBvdXQgdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jYCBmaWxlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGhhcHBlbnMgKndpdGhpbiogdGhhdCBmdW5jdGlvbiB0byBnZXQgYSBmdWxsIHBpY3R1cmUgb2YgdGhlIHJlZ3VsYXRvcnkgY2hhbmdlIHByb2Nlc3MuIEknbSBnb2luZyB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBkYXRhIHN0cnVjdHVyZXMgdXNlZCwgdGhlIGNhbGxzIHRvIGxvd2VyLWxldmVsIGZ1bmN0aW9ucywgYW5kIGFueSBlcnJvciBoYW5kbGluZy4gVGhpcyBpcyBhIGNyaXRpY2FsIGFyZWEsIHNvIEkgd2FudCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIGl0IGNvbXBsZXRlbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5NTEwLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTE6NDQ6MzIuNTE5OTI5MjMzWiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkwNzExLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNTAwLFxuICBcIkxpbmVDb3VudFwiOiA2MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNTAwOlxcdFxcdGlmIChfX2F0aF9yZWdfZHluX2NvdW50cnkod2lwaHksIHJlZywgcmVxdWVzdCkpXFxuIDUwMTpcXHRcXHRcXHRyZXR1cm47XFxuIDUwMjpcXHRcXG4gNTAzOlxcdFxcdHByaW50ayhLRVJOX0RFQlVHIFxcXCJhdGg6IHJlZ2RvbWFpbiAweCUweCBcXFwiXFxuIDUwNDpcXHRcXHRcXHRcXHQgIFxcXCJkeW5hbWljYWxseSB1cGRhdGVkIGJ5ICVzXFxcXG5cXFwiLFxcbiA1MDU6XFx0XFx0ICAgICAgIHJlZy1cXHUwMDNlY3VycmVudF9yZCxcXG4gNTA2OlxcdFxcdCAgICAgICByZWdfaW5pdGlhdG9yX25hbWUocmVxdWVzdC1cXHUwMDNlaW5pdGlhdG9yKSk7XFxuIDUwNzpcXHR9XFxuIDUwODpcXHRcXG4gNTA5OlxcdHZvaWQgYXRoX3JlZ19ub3RpZmllcl9hcHBseShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbiA1MTA6XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCByZWd1bGF0b3J5X3JlcXVlc3QgKnJlcXVlc3QsXFxuIDUxMTpcXHRcXHRcXHRcXHQgICAgc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcpXFxuIDUxMjpcXHR7XFxuIDUxMzpcXHRcXHRzdHJ1Y3QgYXRoX2NvbW1vbiAqY29tbW9uID0gY29udGFpbmVyX29mKHJlZywgc3RydWN0IGF0aF9jb21tb24sXFxuIDUxNDpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgcmVndWxhdG9yeSk7XFxuIDUxNTpcXHRcXHQvKiBXZSBhbHdheXMgYXBwbHkgdGhpcyAqL1xcbiA1MTY6XFx0XFx0YXRoX3JlZ19hcHBseV9yYWRhcl9mbGFncyh3aXBoeSwgcmVnKTtcXG4gNTE3OlxcdFxcbiA1MTg6XFx0XFx0LypcXG4gNTE5OlxcdFxcdCAqIFRoaXMgd291bGQgaGFwcGVuIHdoZW4gd2UgaGF2ZSBzZW50IGEgY3VzdG9tIHJlZ3VsYXRvcnkgcmVxdWVzdFxcbiA1MjA6XFx0XFx0ICogYSB3b3JsZCByZWd1bGF0b3J5IGRvbWFpbiBhbmQgdGhlIHNjaGVkdWxlciBoYXNuJ3QgeWV0IHByb2Nlc3NlZFxcbiA1MjE6XFx0XFx0ICogYW55IHBlbmRpbmcgcmVxdWVzdHMgaW4gdGhlIHF1ZXVlLlxcbiA1MjI6XFx0XFx0ICovXFxuIDUyMzpcXHRcXHRpZiAoIXJlcXVlc3QpXFxuIDUyNDpcXHRcXHRcXHRyZXR1cm47XFxuIDUyNTpcXHRcXG4gNTI2OlxcdFxcdHJlZy1cXHUwMDNlcmVnaW9uID0gcmVxdWVzdC1cXHUwMDNlZGZzX3JlZ2lvbjtcXG4gNTI3OlxcdFxcdHN3aXRjaCAocmVxdWVzdC1cXHUwMDNlaW5pdGlhdG9yKSB7XFxuIDUyODpcXHRcXHRjYXNlIE5MODAyMTFfUkVHRE9NX1NFVF9CWV9DT1JFOlxcbiA1Mjk6XFx0XFx0XFx0LypcXG4gNTMwOlxcdFxcdFxcdCAqIElmIGNvbW1vbi1cXHUwMDNlcmVnX3dvcmxkX2NvcHkgaXMgd29ybGQgcm9hbWluZyBpdCBtZWFucyB3ZSAqd2VyZSpcXG4gNTMxOlxcdFxcdFxcdCAqIHdvcmxkIHJvYW1pbmcuLi4gc28gd2Ugbm93IGhhdmUgdG8gcmVzdG9yZSB0aGF0IGRhdGEuXFxuIDUzMjpcXHRcXHRcXHQgKi9cXG4gNTMzOlxcdFxcdFxcdGlmICghYXRoX2lzX3dvcmxkX3JlZ2QoXFx1MDAyNmNvbW1vbi1cXHUwMDNlcmVnX3dvcmxkX2NvcHkpKVxcbiA1MzQ6XFx0XFx0XFx0XFx0YnJlYWs7XFxuIDUzNTpcXHRcXG4gNTM2OlxcdFxcdFxcdG1lbWNweShyZWcsIFxcdTAwMjZjb21tb24tXFx1MDAzZXJlZ193b3JsZF9jb3B5LFxcbiA1Mzc6XFx0XFx0XFx0ICAgICAgIHNpemVvZihzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkpKTtcXG4gNTM4OlxcdFxcdFxcdGJyZWFrO1xcbiA1Mzk6XFx0XFx0Y2FzZSBOTDgwMjExX1JFR0RPTV9TRVRfQllfRFJJVkVSOlxcbiA1NDA6XFx0XFx0XFx0YnJlYWs7XFxuIDU0MTpcXHRcXHRjYXNlIE5MODAyMTFfUkVHRE9NX1NFVF9CWV9VU0VSOlxcbiA1NDI6XFx0XFx0XFx0aWYgKGF0aF9yZWdfZHluX2NvdW50cnlfdXNlcl9hbGxvdyhyZWcpKVxcbiA1NDM6XFx0XFx0XFx0XFx0YXRoX3JlZ19keW5fY291bnRyeSh3aXBoeSwgcmVnLCByZXF1ZXN0KTtcXG4gNTQ0OlxcdFxcdFxcdGJyZWFrO1xcbiA1NDU6XFx0XFx0Y2FzZSBOTDgwMjExX1JFR0RPTV9TRVRfQllfQ09VTlRSWV9JRTpcXG4gNTQ2OlxcdFxcdFxcdGF0aF9yZWdfZHluX2NvdW50cnkod2lwaHksIHJlZywgcmVxdWVzdCk7XFxuIDU0NzpcXHRcXHRcXHRicmVhaztcXG4gNTQ4OlxcdFxcdH1cXG4gNTQ5OlxcdH1cXG4gNTUwOlxcdEVYUE9SVF9TWU1CT0woYXRoX3JlZ19ub3RpZmllcl9hcHBseSk7XFxuIDU1MTpcXHRcXG4gNTUyOlxcdHN0YXRpYyBib29sIGF0aF9yZWdkX2lzX2VlcHJvbV92YWxpZChzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZylcXG4gNTUzOlxcdHtcXG4gNTU0OlxcdFxcdHUxNiByZCA9IGF0aF9yZWdkX2dldF9lZXByb21SRChyZWcpO1xcbiA1NTU6XFx0XFx0aW50IGk7XFxuIDU1NjpcXHRcXG4gNTU3OlxcdFxcdGlmIChyZCBcXHUwMDI2IENPVU5UUllfRVJEX0ZMQUcpIHtcXG4gNTU4OlxcdFxcdFxcdC8qIEVFUFJPTSB2YWx1ZSBpcyBhIGNvdW50cnkgY29kZSAqL1xcbiA1NTk6XFx0XFx0XFx0dTE2IGNjID0gcmQgXFx1MDAyNiB+Q09VTlRSWV9FUkRfRkxBRztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTE6NDQ6MzIuNTIwMDIxNDEzWiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjY0NjI0MjU0NTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgQXRoZXJvcyBXaXJlbGVzcyBSZWd1bGF0b3J5IERvbWFpbiBJbml0aWFsaXphdGlvbioqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gV2hlbiBvbmUgb2YgdGhlc2UgQXRoZXJvcyB3aXJlbGVzcyBkZXZpY2VzIOKAkyBsaWtlIGFuIGF0aDlrX2h0YywgY2FybDkxNzAgVVNCIGRldmljZSwgb3IgYSBQQ0kgYXRoOWsvYXRoMTBrL2F0aDVrIGNhcmQg4oCTIGdldHMgcHJvYmVkIGFuZCBpbml0aWFsaXplZCwgdGhlIGBhdGhfcmVnZF9pbml0YCBmdW5jdGlvbiBnZXRzIGNhbGxlZC4gTWFrZXMgc2Vuc2Ugc28gZmFyLlxuXG5Ob3csIHdpdGhpbiBgYXRoX3JlZ2RfaW5pdGAsIHRoZSBjb2RlIGRpdmVzIGludG8gYF9fYXRoX3JlZ2RfaW5pdChyZWcpYCBhbmQgdGhlbiBjYWxscyBgYXRoX3JlZ2RfaW5pdF93aXBoeShyZWcsIHdpcGh5LCByZWdfbm90aWZpZXIpYC4gVGhpcyBpcyB3aGVyZSBpdCBnZXRzIGludGVyZXN0aW5nLCBhcyBpdCBhcHBlYXJzIHRvIGJlIHJlc3BvbnNpYmxlIGZvciBzZXR0aW5nIHVwIHRoZSByZWd1bGF0b3J5IGRvbWFpbiBpbmZvcm1hdGlvbi5cblxuSW5zaWRlIGBhdGhfcmVnZF9pbml0X3dpcGh5YCwgaXQgY2hlY2tzIGlmIGBhdGhfaXNfd29ybGRfcmVnZChyZWcpYCBpcyB0cnVlLiBJZiBpdCAqaXMqIHRydWUsIHdlJ3JlIGxpa2VseSBkZWFsaW5nIHdpdGggYSB3b3JsZCByZWd1bGF0b3J5IGRvbWFpbiwgYW5kIHRoZSBjb2RlIGNhbGxzIGByZWdkID0gYXRoX3dvcmxkX3JlZ2RvbWFpbihyZWcpO2AuIE90aGVyd2lzZSwgaXQgdXNlcyBgcmVnZCA9IGF0aF9kZWZhdWx0X3dvcmxkX3JlZ2RvbWFpbigpO2AuIFNvIGl0IHNlZW1zIHRoZXJlJ3MgYSBkaXN0aW5jdGlvbiBiYXNlZCBvbiB3aGV0aGVyIGEgd29ybGQgcmVndWxhdG9yeSBkb21haW4gaXMgaW4gdXNlIG9yIG5vdC4gVGhpcyBpcyBsaWtlbHkgYW4gaW1wb3J0YW50IGRpc3RpbmN0aW9uIHRvIGNoZWNrIGxhdGVyLlxuXG5DcnVjaWFsbHksIGl0IHRoZW4gY2FsbHMgYHdpcGh5X2FwcGx5X2N1c3RvbV9yZWd1bGF0b3J5KHdpcGh5LCByZWdkKTtgLiBUaGlzIGlzIHdoZXJlIHRoZSBtYWdpYyBoYXBwZW5zLCBzbyBsZXQncyBkaWcgaW50byB0aGF0IGZ1bmN0aW9uJ3MgaW1wbGVtZW50YXRpb24uIEl0IGxvb2tzIGxpa2UgdGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgKmFjdHVhbGx5IGFwcGx5aW5nKiB0aGUgcmVndWxhdG9yeSBydWxlcyB0byB0aGUgd2lyZWxlc3MgaW50ZXJmYWNlIChgd2lwaHlgKS4gU3BlY2lmaWNhbGx5LCBpdCdzIGl0ZXJhdGluZyBvdmVyIHRoZSBgcmVnZC1cdTAwM2VuX3JlZ19ydWxlc2AgYW5kIGByZWdkLVx1MDAzZXJlZ19ydWxlc2AgZmllbGRzLCB3aGljaCBhbG1vc3QgY2VydGFpbmx5IGNvbnRhaW4gdGhlIHJlZ3VsYXRvcnkgZG9tYWluIGRhdGEuIEknbGwgbmVlZCB0byBnbyBsb29rIGF0IGB3aXBoeV9hcHBseV9jdXN0b21fcmVndWxhdG9yeWAgaW4gYG5ldC93aXJlbGVzcy9yZWcuY2AgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgZGV0YWlscyBvZiBob3cgdGhvc2UgcnVsZXMgYXJlIGFwcGxpZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwNzUyLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTE6NDQ6MzguOTgyNDUwNFoiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzcwNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L3dpcmVsZXNzL3JlZy5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI2MTAsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjI2MTA6XFx0fVxcbjI2MTE6XFx0XFxuMjYxMjpcXHQvKiBVc2VkIGJ5IGRyaXZlcnMgcHJpb3IgdG8gd2lwaHkgcmVnaXN0cmF0aW9uICovXFxuMjYxMzpcXHR2b2lkIHdpcGh5X2FwcGx5X2N1c3RvbV9yZWd1bGF0b3J5KHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuMjYxNDpcXHRcXHRcXHRcXHRcXHQgICBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiAqcmVnZClcXG4yNjE1OlxcdHtcXG4yNjE2OlxcdFxcdGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluICpuZXdfcmVnZCwgKnRtcDtcXG4yNjE3OlxcdFxcdGVudW0gbmw4MDIxMV9iYW5kIGJhbmQ7XFxuMjYxODpcXHRcXHR1bnNpZ25lZCBpbnQgYmFuZHNfc2V0ID0gMDtcXG4yNjE5OlxcdFxcbjI2MjA6XFx0XFx0V0FSTighKHdpcGh5LVxcdTAwM2VyZWd1bGF0b3J5X2ZsYWdzIFxcdTAwMjYgUkVHVUxBVE9SWV9DVVNUT01fUkVHKSxcXG4yNjIxOlxcdFxcdCAgICAgXFxcIndpcGh5IHNob3VsZCBoYXZlIFJFR1VMQVRPUllfQ1VTVE9NX1JFR1xcXFxuXFxcIik7XFxuMjYyMjpcXHRcXHR3aXBoeS1cXHUwMDNlcmVndWxhdG9yeV9mbGFncyB8PSBSRUdVTEFUT1JZX0NVU1RPTV9SRUc7XFxuMjYyMzpcXHRcXG4yNjI0OlxcdFxcdGZvciAoYmFuZCA9IDA7IGJhbmQgXFx1MDAzYyBOVU1fTkw4MDIxMV9CQU5EUzsgYmFuZCsrKSB7XFxuMjYyNTpcXHRcXHRcXHRpZiAoIXdpcGh5LVxcdTAwM2ViYW5kc1tiYW5kXSlcXG4yNjI2OlxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbjI2Mjc6XFx0XFx0XFx0aGFuZGxlX2JhbmRfY3VzdG9tKHdpcGh5LCB3aXBoeS1cXHUwMDNlYmFuZHNbYmFuZF0sIHJlZ2QpO1xcbjI2Mjg6XFx0XFx0XFx0YmFuZHNfc2V0Kys7XFxuMjYyOTpcXHRcXHR9XFxuMjYzMDpcXHRcXG4yNjMxOlxcdFxcdC8qXFxuMjYzMjpcXHRcXHQgKiBubyBwb2ludCBpbiBjYWxsaW5nIHRoaXMgaWYgaXQgd29uJ3QgaGF2ZSBhbnkgZWZmZWN0XFxuMjYzMzpcXHRcXHQgKiBvbiB5b3VyIGRldmljZSdzIHN1cHBvcnRlZCBiYW5kcy5cXG4yNjM0OlxcdFxcdCAqL1xcbjI2MzU6XFx0XFx0V0FSTl9PTighYmFuZHNfc2V0KTtcXG4yNjM2OlxcdFxcdG5ld19yZWdkID0gcmVnX2NvcHlfcmVnZChyZWdkKTtcXG4yNjM3OlxcdFxcdGlmIChJU19FUlIobmV3X3JlZ2QpKVxcbjI2Mzg6XFx0XFx0XFx0cmV0dXJuO1xcbjI2Mzk6XFx0XFxuMjY0MDpcXHRcXHRydG5sX2xvY2soKTtcXG4yNjQxOlxcdFxcdHNjb3BlZF9ndWFyZCh3aXBoeSwgd2lwaHkpIHtcXG4yNjQyOlxcdFxcdFxcdHRtcCA9IGdldF93aXBoeV9yZWdkb20od2lwaHkpO1xcbjI2NDM6XFx0XFx0XFx0cmN1X2Fzc2lnbl9wb2ludGVyKHdpcGh5LVxcdTAwM2VyZWdkLCBuZXdfcmVnZCk7XFxuMjY0NDpcXHRcXHRcXHRyY3VfZnJlZV9yZWdkb20odG1wKTtcXG4yNjQ1OlxcdFxcdH1cXG4yNjQ2OlxcdFxcdHJ0bmxfdW5sb2NrKCk7XFxuMjY0NzpcXHR9XFxuMjY0ODpcXHRFWFBPUlRfU1lNQk9MKHdpcGh5X2FwcGx5X2N1c3RvbV9yZWd1bGF0b3J5KTtcXG4yNjQ5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxMTo0NDozOC45ODI2Mjk0WiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE3OTE1OTMwNTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyB0aGUgUmVnaXN0cmF0aW9uIFJ1bGUgSGFuZGxpbmcqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBob3cgd2UncmUgaGFuZGxpbmcgcmVnaXN0cmF0aW9uIHJ1bGVzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgaGFuZGxlX2JhbmRfY3VzdG9tYCBhbmQgYHJlZ19jb3B5X3JlZ2QocmVnZClgIGFyZSBnb2luZyB0byBiZSB0aGUgd29ya2hvcnNlcyBwcm9jZXNzaW5nIHRoZSBgcmVnZC1cdTAwM2VuX3JlZ19ydWxlc2AgYW5kIGByZWdkLVx1MDAzZXJlZ19ydWxlc2AgbWVtYmVycyBvZiB0aGUgYHJlZ2RgIHN0cnVjdHVyZS4gVGhlc2UgYXJlIGNsZWFybHkga2V5IGNvbXBvbmVudHMgaW4gbWFuYWdpbmcgdGhlIHJlZ3VsYXRvcnkgZG9tYWluIHNldHRpbmdzLiBOb3csIEkgc2hvdWxkIHByb2JhYmx5IGRvdWJsZS1jaGVjayBob3cgYGhhbmRsZV9iYW5kX2N1c3RvbWAgYWN0dWFsbHkgZnVuY3Rpb25zLiBMZXQncyBkaXZlIGludG8gYG5ldC93aXJlbGVzcy9yZWcuY2AgdG8gc2VlIHByZWNpc2VseSB3aGF0J3MgZ29pbmcgb24gd2l0aGluIHRoYXQgZnVuY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyMDk1LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxMTo0NDo0MC43NzQyMjU1MjNaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc1MzIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC93aXJlbGVzcy9yZWcuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyNTkwLFxuICBcIkxpbmVDb3VudFwiOiAyNVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIyNTkwOlxcdFxcdGNoYW4tXFx1MDAzZW1heF9wb3dlciA9IGNoYW4tXFx1MDAzZW1heF9yZWdfcG93ZXI7XFxuMjU5MTpcXHR9XFxuMjU5MjpcXHRcXG4yNTkzOlxcdHN0YXRpYyB2b2lkIGhhbmRsZV9iYW5kX2N1c3RvbShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbjI1OTQ6XFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBpZWVlODAyMTFfc3VwcG9ydGVkX2JhbmQgKnNiYW5kLFxcbjI1OTU6XFx0XFx0XFx0XFx0ICAgICAgIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluICpyZWdkKVxcbjI1OTY6XFx0e1xcbjI1OTc6XFx0XFx0dW5zaWduZWQgaW50IGk7XFxuMjU5ODpcXHRcXG4yNTk5OlxcdFxcdGlmICghc2JhbmQpXFxuMjYwMDpcXHRcXHRcXHRyZXR1cm47XFxuMjYwMTpcXHRcXG4yNjAyOlxcdFxcdC8qXFxuMjYwMzpcXHRcXHQgKiBXZSBjdXJyZW50bHkgYXNzdW1lIHRoYXQgeW91IGFsd2F5cyB3YW50IGF0IGxlYXN0IDIwIE1IeixcXG4yNjA0OlxcdFxcdCAqIG90aGVyd2lzZSBjaGFubmVsIDEyIG1pZ2h0IGdldCBlbmFibGVkIGlmIHRoaXMgcnVsZSBpc1xcbjI2MDU6XFx0XFx0ICogY29tcGF0aWJsZSB0byBVUywgd2hpY2ggcGVybWl0cyAyNDAyIC0gMjQ3MiBNSHouXFxuMjYwNjpcXHRcXHQgKi9cXG4yNjA3OlxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBzYmFuZC1cXHUwMDNlbl9jaGFubmVsczsgaSsrKVxcbjI2MDg6XFx0XFx0XFx0aGFuZGxlX2NoYW5uZWxfY3VzdG9tKHdpcGh5LCBcXHUwMDI2c2JhbmQtXFx1MDAzZWNoYW5uZWxzW2ldLCByZWdkLFxcbjI2MDk6XFx0XFx0XFx0XFx0XFx0ICAgICAgTUhaX1RPX0tIWigyMCkpO1xcbjI2MTA6XFx0fVxcbjI2MTE6XFx0XFxuMjYxMjpcXHQvKiBVc2VkIGJ5IGRyaXZlcnMgcHJpb3IgdG8gd2lwaHkgcmVnaXN0cmF0aW9uICovXFxuMjYxMzpcXHR2b2lkIHdpcGh5X2FwcGx5X2N1c3RvbV9yZWd1bGF0b3J5KHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuMjYxNDpcXHRcXHRcXHRcXHRcXHQgICBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiAqcmVnZClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTE6NDQ6NDAuNzc0NDA0MTMzWiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjY5MTgzMjUyNDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBGZWFzaWJpbGl0eSBBbmFseXNpcyBmb3IgUmVndWxhdG9yeSBUYWJsZSBNb2RpZmljYXRpb25zIGluIGF0aC9yZWdkLmMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBuZWVkIHRvIGRldGVybWluZSBpZiBpdCdzIHdvcnRoIGZ1enppbmcuIEluaXRpYWxseSwgSSB3YXMgdGhpbmtpbmcgYWJvdXQgdGhlIFVTQiB3aXJlbGVzcyBkcml2ZXJzIGBjYXJsOTE3MGAgb3IgYGF0aDlrX2h0Y2AuICBJIGtub3cgc3l6a2FsbGVyIGNhbiBlbXVsYXRlIHRoZXNlIHZpYSBVU0IgUmF3IEdhZGdldC4gIEkndmUgZ290IHRvIGNoZWNrLCB0aG91Z2gsIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgdmlydHVhbCBidXNlcyBvciBpbXBsZW1lbnRhdGlvbnMgdXNpbmcgdGhlIGBhdGhgIGRyaXZlcnMgYmVzaWRlcyB0aG9zZS4gTm9wZSwgbm8gYG1hYzgwMjExX2h3c2ltYCB1c2UuXG5cblJpZ2h0LCBiYWNrIHRvIHRoZSBjb3JlIHF1ZXN0aW9uOiBjYW4gc3l6a2FsbGVyJ3MgVVNCIGZ1enppbmcgZXZlbiB0b3VjaCB0aGUgY29kZSBpbiBxdWVzdGlvbj8gWWVzLCBpdCBhYnNvbHV0ZWx5IGNhbi4gU3l6a2FsbGVyIHN1cHBvcnRzIFVTQiBkZXZpY2UgcHJvYmluZyBhbmQgZnV6emluZywgdGFyZ2V0aW5nIHdpcmVsZXNzIGRyaXZlcnMgbGlrZSBgYXRoOWtfaHRjYCwgYGNhcmw5MTcwYCwgYW5kIG90aGVycy5cblxuQnV0IGlzIHRoaXMganVzdCBhIHJlZ3VsYXRvcnkgdGFibGUgY2hhbmdlPyAgVGltZSB0byByZXZpc2l0IHRoZSBmdXp6aW5nIHRyaWFnZSBwaGlsb3NvcGh5LiAgUmVhY2hhYmlsaXR5IGlzIGtleS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGNvZGUgaXMgKnJlYWNoYWJsZSogaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gIEl0J3Mgbm90IGVub3VnaCBpZiBpdCdzIGdvdCBuZXcgYXNzZXJ0aW9ucyBvciByZWZhY3RvcmVkIGNvZGUgdGhhdCdzIG5vdCByZWFjaGFibGUuICBcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBJcyB0aGUgbW9kaWZpZWQgY29kZSBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuY2AgcmVhY2hhYmxlPyBZZXMhIFRoZSBgYXRoL2AgY29kZSBpcyB1c2VkIGJ5IFVTQiB3aXJlbGVzcyBkcml2ZXJzIGBjYXJsOTE3MGAgYW5kIGBhdGg5a19odGNgLiBXaGVuIHRoZXNlIGRldmljZXMgYXJlIGNvbm5lY3RlZCAob3IgZW11bGF0ZWQgd2l0aCBVU0IgcmF3IGdhZGdldCksIHRoZSBwcm9iZSBwYXRocywgc3RhcnRpbmcgd2l0aCBgY2FybDkxNzBfcmVnaXN0ZXJgIC1cdTAwM2UgYGF0aF9yZWdkX2luaXRgIG9yIGBhdGg5a19odGNfcHJvYmVfZGV2aWNlYCAtXHUwMDNlIGBhdGg5a19pbml0X2RldmljZWAgLVx1MDAzZSBgYXRoX3JlZ2RfaW5pdGAsIGFyZSByZWxldmFudC4gSW1wb3J0YW50bHksIGBhdGhfcmVnZF9pbml0YCBsZWFkcyB0byBgYXRoX3JlZ2RfaW5pdF93aXBoeWAsIHdoaWNoIGFjY2Vzc2VzIHRoZSBtb2RpZmllZCByZWd1bGF0b3J5IGRvbWFpbiBkYXRhIHN0cnVjdHVyZXMuIFRoZSBjaGFuZ2VzIG1vZGlmeSBgQVRIXzVHSFpfNTE1MF81MzUwYCBhbmQgdGhlIGFzc29jaWF0ZWQgYG5fcmVnX3J1bGVzYC4gQWxzbywgdGhlcmUgYXJlIGByZWdfY29weV9yZWdkYCBhbmQgYHdpcGh5X2FwcGx5X2N1c3RvbV9yZWd1bGF0b3J5YCBpbiBtYWM4MDIxMS9jZmc4MDIxMSwgdGhhdCBwcm9jZXNzIHRoZXNlIGRhdGEgc3RydWN0dXJlcyBhbmQgZnJlcXVlbmN5IHJ1bGVzLiBTbywgeWVhaCwgdGhpcyBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZS5cblxuTGV0J3MgcXVpY2tseSBjaGVjayB3aGljaCBmdW5jdGlvbnMgYXJlIHRoZSBlbnRyeXBvaW50cyBvciBjb250YWluIHRoZSBsb2dpYyB3aXRoaW4gYHJlZ2QuY2A6IGBhdGhfcmVnZF9pbml0YCwgYGF0aF9yZWdkX2luaXRfd2lwaHlgLCBgYXRoX3dvcmxkX3JlZ2RvbWFpbmAsIGBhdGhfZGVmYXVsdF93b3JsZF9yZWdkb21haW5gLCBhbmQgYGF0aF9yZWdfbm90aWZpZXJfYXBwbHlgLiBUaGVuLCBJJ2xsIHJldmlldyBhbnkgb3RoZXIgZnVuY3Rpb25zIHRoYXQgbWF5IGJlIHJlbGV2YW50IHRvIHRoZSBjaGFuZ2VkIGNvZGUuXG5cbkNvbmNsdXNpb246ICBUaGlzIGlzIGFic29sdXRlbHkgd29ydGggZnV6emluZy4gSXQgdG91Y2hlcyByZWFjaGFibGUsIGV4ZWN1dGFibGUgY29kZSwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgcmVndWxhdG9yeSBkb21haW4gZGF0YSBzdHJ1Y3R1cmVzIGFuZCBhc3NvY2lhdGVkIGZ1bmN0aW9ucyBhY2Nlc3NlZCB0aHJvdWdoIFVTQiB3aXJlbGVzcyBkcml2ZXIgcHJvYmUgcGF0aHMuIFRoZSBjaGFuZ2VzIG1vZGlmeSBjcml0aWNhbCByZWd1bGF0b3J5IGluZm9ybWF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0Mjc2MCwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyNDcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxMTo0NDo0Ny42OTI3MzE2NDRaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3ODQzMzc3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5bYS16QS1aX10uKlxcXFwoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0yNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjI2OnN0YXRpYyBpbnQgX19hdGhfcmVnZF9pbml0KHN0cnVjdCBhdGhfcmVndWxhdG9yeSAqcmVnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTI3LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYz0xMDg9c3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluIGF0aF93b3JsZF9yZWdkb21fNjdfNjhfNkFfNkMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTExNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjExODpzdGF0aWMgYm9vbCBkeW5hbWljX2NvdW50cnlfdXNlcl9wb3NzaWJsZShzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTExOS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTE4OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjE5MDpzdGF0aWMgYm9vbCBhdGhfcmVnX2R5bl9jb3VudHJ5X3VzZXJfYWxsb3coc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0xOTEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0xOTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzoxOTk6c3RhdGljIGlubGluZSBib29sIGlzX3d3cl9za3UodTE2IHJlZ2QpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0yMDAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0yMDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzoyMDY6c3RhdGljIHUxNiBhdGhfcmVnZF9nZXRfZWVwcm9tUkQoc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0yMDcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0yMTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzoyMTE6Ym9vbCBhdGhfaXNfd29ybGRfcmVnZChzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTIxMi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTIxNC19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzoyMTU6RVhQT1JUX1NZTUJPTChhdGhfaXNfd29ybGRfcmVnZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0yMTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzoyMTc6c3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluICphdGhfZGVmYXVsdF93b3JsZF9yZWdkb21haW4odm9pZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTIxOC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jPTIyMz1zdGF0aWMgY29uc3Qgc3RydWN0XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzoyMjQ6aWVlZTgwMjExX3JlZ2RvbWFpbiAqYXRoX3dvcmxkX3JlZ2RvbWFpbihzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTIyNS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTI0OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjI1MDpib29sIGF0aF9pc180OWdoel9hbGxvd2VkKHUxNiByZWdkb21haW4pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0yNTEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0yNTQtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6MjU1OkVYUE9SVF9TWU1CT0woYXRoX2lzXzQ5Z2h6X2FsbG93ZWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjU2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjU3LS8qIEZyZXF1ZW5jeSBpcyBvbmUgd2hlcmUgcmFkYXIgZGV0ZWN0aW9uIGlzIHJlcXVpcmVkICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzoyNTg6c3RhdGljIGJvb2wgYXRoX2lzX3JhZGFyX2ZyZXEodTE2IGNlbnRlcl9mcmVxLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjU5LVxcdFxcdFxcdCAgICAgIHN0cnVjdCBhdGhfcmVndWxhdG9yeSAqcmVnKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0yNjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzoyNjc6c3RhdGljIHZvaWQgYXRoX2ZvcmNlX2NsZWFyX25vX2lyX2NoYW4oc3RydWN0IHdpcGh5ICp3aXBoeSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTI2OC1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjgwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6MjgxOnN0YXRpYyB2b2lkIGF0aF9mb3JjZV9jbGVhcl9ub19pcl9mcmVxKHN0cnVjdCB3aXBoeSAqd2lwaHksIHUxNiBjZW50ZXJfZnJlcSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTI4Mi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTI5MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjI5MjpzdGF0aWMgdm9pZCBhdGhfZm9yY2Vfbm9faXJfY2hhbihzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjkzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjk2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6Mjk3OnN0YXRpYyB2b2lkIGF0aF9mb3JjZV9ub19pcl9mcmVxKHN0cnVjdCB3aXBoeSAqd2lwaHksIHUxNiBjZW50ZXJfZnJlcSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTI5OC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jPTMwOD1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6MzA5Ol9fYXRoX3JlZ19hcHBseV9iZWFjb25pbmdfZmxhZ3Moc3RydWN0IHdpcGh5ICp3aXBoeSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTMxMC1cXHRcXHRcXHRcXHRzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM9MzM5PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzozNDA6YXRoX3JlZ19hcHBseV9iZWFjb25pbmdfZmxhZ3Moc3RydWN0IHdpcGh5ICp3aXBoeSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTM0MS1cXHRcXHRcXHQgICAgICBzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM9Mzc2PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzozNzc6YXRoX3JlZ19hcHBseV9pcl9mbGFncyhzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMzc4LVxcdFxcdCAgICAgICBzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNDA0LS8qIEFsd2F5cyBhcHBseSBSYWRhci9ERlMgcnVsZXMgb24gZnJlcSByYW5nZSA1NTAwIE1IeiAtIDU3MDAgTUh6ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo0MDU6c3RhdGljIHZvaWQgYXRoX3JlZ19hcHBseV9yYWRhcl9mbGFncyhzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNDA2LVxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBhdGhfcmVndWxhdG9yeSAqcmVnKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy00MzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo0Mzc6c3RhdGljIHZvaWQgYXRoX3JlZ19hcHBseV93b3JsZF9mbGFncyhzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNDM4LVxcdFxcdFxcdFxcdCAgICAgIGVudW0gbmw4MDIxMV9yZWdfaW5pdGlhdG9yIGluaXRpYXRvcixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNDU4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NDU5OnUxNiBhdGhfcmVnZF9maW5kX2NvdW50cnlfYnlfbmFtZShjaGFyICphbHBoYTIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy00NjAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy00NjktfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NDcwOkVYUE9SVF9TWU1CT0woYXRoX3JlZ2RfZmluZF9jb3VudHJ5X2J5X25hbWUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNDcxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NDcyOnN0YXRpYyBpbnQgX19hdGhfcmVnX2R5bl9jb3VudHJ5KHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy00NzMtXFx0XFx0XFx0XFx0IHN0cnVjdCBhdGhfcmVndWxhdG9yeSAqcmVnLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy00OTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo0OTY6c3RhdGljIHZvaWQgYXRoX3JlZ19keW5fY291bnRyeShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNDk3LVxcdFxcdFxcdFxcdHN0cnVjdCBhdGhfcmVndWxhdG9yeSAqcmVnLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy01MDgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo1MDk6dm9pZCBhdGhfcmVnX25vdGlmaWVyX2FwcGx5KHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy01MTAtXFx0XFx0XFx0ICAgIHN0cnVjdCByZWd1bGF0b3J5X3JlcXVlc3QgKnJlcXVlc3QsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTU0OS19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo1NTA6RVhQT1JUX1NZTUJPTChhdGhfcmVnX25vdGlmaWVyX2FwcGx5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTU1MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjU1MjpzdGF0aWMgYm9vbCBhdGhfcmVnZF9pc19lZXByb21fdmFsaWQoc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy01NTMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYz01ODE9c3RhdGljIHN0cnVjdCBjb3VudHJ5X2NvZGVfdG9fZW51bV9yZCpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjU4MjphdGhfcmVnZF9maW5kX2NvdW50cnkodTE2IGNvdW50cnlDb2RlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNTgzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM9NTk0PXN0YXRpYyBzdHJ1Y3QgY291bnRyeV9jb2RlX3RvX2VudW1fcmQqXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo1OTU6YXRoX3JlZ2RfZmluZF9jb3VudHJ5X2J5X3JkKGludCByZWdkbW4pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy01OTYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy02MDYtLyogUmV0dXJucyB0aGUgbWFwIG9mIHRoZSBFRVBST00gc2V0IFJEIHRvIGEgY291bnRyeSBjb2RlICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo2MDc6c3RhdGljIHUxNiBhdGhfcmVnZF9nZXRfZGVmYXVsdF9jb3VudHJ5KHUxNiByZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTYwOC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jPTYyMT1zdGF0aWMgc3RydWN0IHJlZ19kbW5fcGFpcl9tYXBwaW5nKlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NjIyOmF0aF9nZXRfcmVncGFpcihpbnQgcmVnZG1uKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNjIzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM9NjM1PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjYzNjphdGhfcmVnZF9pbml0X3dpcGh5KHN0cnVjdCBhdGhfcmVndWxhdG9yeSAqcmVnLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNjM3LVxcdFxcdCAgICBzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy02NzUtICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo2NzY6c3RhdGljIHZvaWQgYXRoX3JlZ2Rfc2FuaXRpemUoc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy02Nzcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy02ODMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo2ODQ6c3RhdGljIGludCBfX2F0aF9yZWdkX2luaXQoc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy02ODUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYz03NTg9aW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo3NTk6YXRoX3JlZ2RfaW5pdChzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTc2MC1cXHQgICAgICBzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy03NzktfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NzgwOkVYUE9SVF9TWU1CT0woYXRoX3JlZ2RfaW5pdCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy03ODEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo3ODI6dTMyIGF0aF9yZWdkX2dldF9iYW5kX2N0bChzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTc4My1cXHRcXHRcXHQgIGVudW0gbmw4MDIxMV9iYW5kIGJhbmQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTgxMi19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo4MTM6RVhQT1JUX1NZTUJPTChhdGhfcmVnZF9nZXRfYmFuZF9jdGwpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxMTo0NDo0Ny43NDA1ODAyOVoiLCJTZXEiOjM3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozMjUwNzI0ODQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkNvbmZpZ3VyaW5nIHRoZSBXaXJlbGVzcyBEcml2ZXIqKlxuXG5Pa2F5LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJ3ZlIGdvdCB0aGUgY29ycmVjdCBjb25maWd1cmF0aW9ucyBpbiBwbGFjZSBmb3IgdGhpcyB3aXJlbGVzcyBkcml2ZXIuIEZpcnN0LCBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgSSd2ZSBlbmFibGVkIHRoZSBjb3JlIGNvbXBvbmVudHM6IGBBVEhfQ09NTU9OYCwgYEFUSDlLX0hUQ2AgKG9yIHBvdGVudGlhbGx5IG9uZSBvZiB0aGUgYWx0ZXJuYXRpdmVzIGxpa2UgYENBUkw5MTcwYCwgYEFUSDlLYCwgb3IgYEFUSDEwS2AgZGVwZW5kaW5nIG9uIHRoZSBleGFjdCBoYXJkd2FyZSksIGBNQUM4MDIxMWAsIGBDRkc4MDIxMWAsIGFuZCBgVVNCYC4gSXQncyBhIHN0YW5kYXJkIHNldCBmb3IgYSByZWFzb24sIGJ1dCBpdCdzIGFsd2F5cyBnb29kIHRvIGRvdWJsZS1jaGVjay5cblxuTm93LCBsZXQncyBkaWcgaW50byB0aGUgZGVwZW5kZW5jaWVzLiBTcGVjaWZpY2FsbHksIEknbGwgc3RhcnQgd2l0aCBgQVRIX0NPTU1PTmAuIEkga25vdyB0aGF0IGBBVEhfQ09NTU9OYCBpcyBzZWxlY3RlZCBieSBzZXZlcmFsIG90aGVyIGNvbmZpZ3VyYXRpb25zIGxpa2UgYEFUSDlLX0NPTU1PTmAsIGBDQVJMOTE3MGAsIGFuZCBgQVRIMTBLYCwgd2hpY2ggbWFrZXMgc2Vuc2UuIEp1c3QgZ2xhbmNpbmcgYXQgdGhlIG9wdGlvbnMsIGBDQVJMOTE3MGAgZGVwZW5kcyBvbiBgVVNCYCBhbmQgYE1BQzgwMjExYCwgYW5kIGl0IHNlbGVjdHMgYm90aCBgQVRIX0NPTU1PTmAgYW5kIGBGV19MT0FERVJgLiBUaGF0J3MgaW1wb3J0YW50IHRvIHJlbWVtYmVyLiBPbiB0aGUgb3RoZXIgaGFuZCwgYEFUSDlLX0hUQ2AgYWxzbyByZWxpZXMgb24gYFVTQmAgYW5kIGBNQUM4MDIxMWAsIGFuZCB0aGVuIGl0IHNlbGVjdHMgYEFUSDlLX0NPTU1PTmAsIHdoaWNoIGluIHR1cm4sIHNlbGVjdHMgYEFUSF9DT01NT05gLiBPa2F5LCB0aGF0IG1ha2VzIGl0IGNsZWFyZXIuIEknbGwgbWFrZSBzdXJlIHRvIHZlcmlmeSB3aGF0IGV4YWN0bHkgYEFUSDlLX0hUQ2AgZGVwZW5kcyBvbiBhbmQgc2VsZWN0cy4gQWx3YXlzIGdvb2QgdG8gaGF2ZSBhIHNvbGlkIHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoZXNlIGRlcGVuZGVuY2llcyBjaGFpbiB0b2dldGhlci5cblxuXG4iLCJJbnB1dFRva2VucyI6NDc3NzksIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTE6NDQ6NTAuOTkxMzA4MzczWiIsIlNlcSI6MzgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk5NDUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE3MCxcbiAgXCJMaW5lQ291bnRcIjogMjVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE3MDpcXHRcXHQgIElmIHVuc3VyZSBzYXkgTi5cXG4gMTcxOlxcdFxcbiAxNzI6XFx0Y29uZmlnIEFUSDlLX0hUQ1xcbiAxNzM6XFx0XFx0dHJpc3RhdGUgXFxcIkF0aGVyb3MgSFRDIGJhc2VkIHdpcmVsZXNzIGNhcmRzIHN1cHBvcnRcXFwiXFxuIDE3NDpcXHRcXHRkZXBlbmRzIG9uIFVTQiBcXHUwMDI2XFx1MDAyNiBNQUM4MDIxMVxcbiAxNzU6XFx0XFx0c2VsZWN0IE1BQzgwMjExX0xFRFMgaWYgTEVEU19DTEFTUz15IHx8IExFRFNfQ0xBU1M9TUFDODAyMTFcXG4gMTc2OlxcdFxcdHNlbGVjdCBBVEg5S19IV1xcbiAxNzc6XFx0XFx0c2VsZWN0IEFUSDlLX0NPTU1PTlxcbiAxNzg6XFx0XFx0aGVscFxcbiAxNzk6XFx0XFx0ICBTdXBwb3J0IGZvciBBdGhlcm9zIEhUQyBiYXNlZCBjYXJkcy5cXG4gMTgwOlxcdFxcdCAgQ2hpcHNldHMgc3VwcG9ydGVkOiBBUjkyNzFcXG4gMTgxOlxcdFxcbiAxODI6XFx0XFx0ICBGb3IgbW9yZSBpbmZvcm1hdGlvbjpcXG4gMTgzOlxcdFxcdCAgaHR0cHM6Ly93aXJlbGVzcy53aWtpLmtlcm5lbC5vcmcvZW4vdXNlcnMvRHJpdmVycy9hdGg5a19odGNcXG4gMTg0OlxcdFxcbiAxODU6XFx0XFx0ICBUaGUgYnVpbHQgbW9kdWxlIHdpbGwgYmUgYXRoOWtfaHRjLlxcbiAxODY6XFx0XFxuIDE4NzpcXHRjb25maWcgQVRIOUtfSFRDX0RFQlVHRlNcXG4gMTg4OlxcdFxcdGJvb2wgXFxcIkF0aGVyb3MgYXRoOWtfaHRjIGRlYnVnZ2luZ1xcXCJcXG4gMTg5OlxcdFxcdGRlcGVuZHMgb24gQVRIOUtfSFRDIFxcdTAwMjZcXHUwMDI2IERFQlVHX0ZTXFxuIDE5MDpcXHRcXHRzZWxlY3QgQVRIOUtfQ09NTU9OX0RFQlVHXFxuIDE5MTpcXHRcXHRoZWxwXFxuIDE5MjpcXHRcXHQgIFNheSBZLCBpZiB5b3UgbmVlZCBhY2Nlc3MgdG8gYXRoOWtfaHRjJ3Mgc3RhdGlzdGljcy5cXG4gMTkzOlxcdFxcdCAgQXMgd2VsbCBhcyBhY2Nlc3MgdG8gdGhlIEZGVC9zcGVjdHJhbCBkYXRhLlxcbiAxOTQ6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDExOjQ0OjUwLjk5MTQwOTI3M1oiLCJTZXEiOjM5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0NDczOTc2OTA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKldvcnRoRnV6emluZyBDb25maXJtYXRpb24qKlxuXG5Pa2F5LCBzbyB0aGlzIFdvcnRoRnV6emluZyBmaW5kaW5nIGNoZWNrcyBvdXQuIFRoZSBwYXRjaCBpcyBkZWZpbml0ZWx5IHRvdWNoaW5nIHJlZ3VsYXRvcnkgZGVmaW5pdGlvbnMgd2l0aGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jYC4gVGhpcyBpcyBzaWduaWZpY2FudCBiZWNhdXNlIHRob3NlIGRlZmluaXRpb25zIGFyZSBjcml0aWNhbCBmb3IgQXRoZXJvcyB3aXJlbGVzcyBkcml2ZXJzLCBhbmQgY3J1Y2lhbGx5LCB0aGV5IGluY2x1ZGUgVVNCLWFjY2Vzc2libGUgZHJpdmVycyBsaWtlIGBhdGg5a19odGNgIGFuZCBgY2FybDkxNzBgLiBXZSdyZSB1c2luZyBVU0IgUmF3IEdhZGdldCBmb3IgZW11bGF0aW9uIGFuZCBmdXp6aW5nIHdpdGhpbiBhIHN0YW5kYXJkIFFFTVUgc2V0dXAsIHNvIHRoYXQncyBhIGtleSBwaWVjZSBvZiB0aGUgcHV6emxlLlxuXG5UaGUgcmVhbCBjb25uZWN0aW9uIGhlcmUgaXMgaG93IGBhdGhfcmVnZF9pbml0YCwgYGF0aF9yZWdkX2luaXRfd2lwaHlgLCBgYXRoX3dvcmxkX3JlZ2RvbWFpbmAsIGFuZCBgd2lwaHlfYXBwbHlfY3VzdG9tX3JlZ3VsYXRvcnlgIGhhbmRsZSB0aGUgcGFyc2luZyBhbmQgYXBwbGljYXRpb24gb2YgdGhlc2UgcmVndWxhdG9yeSBydWxlcy4gVGhleSdyZSBhbGwgaW52b2x2ZWQgd2hlbiBhbiBBdGhlcm9zIGludGVyZmFjZSBpcyBpbml0aWFsaXplZCwgcmVnaXN0ZXJlZCwgb3Igd2hlbiBpdHMgcmVndWxhdG9yeSBkb21haW4gaXMgcXVlcmllZCBvciB1cGRhdGVkLiBUaG9zZSBmdW5jdGlvbnMgYXJlIHRoZSBicmlkZ2UgaW50byB0aGUga2VybmVsJ3MgY2ZnODAyMTEvbWFjODAyMTEgc3RhdGUsIHdoaWNoIGlzIGV4YWN0bHkgd2hlcmUgd2UncmUgbG9va2luZyB0byBmaW5kIGJ1Z3MuXG5cbkxldCdzIHF1aWNrbHkgY29uZmlybSB0aG9zZSBGb2N1c1N5bWJvbHMgYXJlIGNvcnJlY3QuIEknbGwgbWVudGFsbHkgcnVuIHRocm91Z2g6IGBhdGhfcmVnZF9pbml0YCwgYGF0aF9yZWdkX2luaXRfd2lwaHlgLCBgYXRoX3dvcmxkX3JlZ2RvbWFpbmAsIGBhdGhfZGVmYXVsdF93b3JsZF9yZWdkb21haW5gLCBhbmQgYGF0aF9yZWdfbm90aWZpZXJfYXBwbHlgLiBZdXAsIHRob3NlIGFyZSBhbGwgcmlnaHQgb24gcG9pbnQuXG5cbkRvdWJsZS1jaGVja2luZyB0aGUgRW5hYmxlQ29uZmlncywganVzdCB0byBiZSBzdXJlOiBgQVRIX0NPTU1PTmAsIGBBVEg5S19IVENgLCBgQ0FSTDkxNzBgLCBgQ0ZHODAyMTFgLCBgTUFDODAyMTFgLCBhbmQgYFVTQmAg4oCTIGFsbCBvZiB0aG9zZSBtYWtlIHBlcmZlY3Qgc2Vuc2UgaW4gdGhpcyBjb250ZXh0LlxuXG5BbHJpZ2h0LCBJJ20gY29uZmlkZW50IGluIHRoZSBhbmFseXNpcy4gVGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuIFRoaXMgaXMgYSBzb2xpZCBmaW5kaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODc4MCwiT3V0cHV0VG9rZW5zIjoyNDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMTUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxMTo0NDo1NS40NjUzOTAxODFaIiwiU2VxIjo0MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3ODM1MTQ5NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQVRIX0NPTU1PTlwiLFxuICAgIFwiQVRIOUtfSFRDXCIsXG4gICAgXCJDQVJMOTE3MFwiLFxuICAgIFwiQ0ZHODAyMTFcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJVU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJhdGhfcmVnZF9pbml0XCIsXG4gICAgXCJhdGhfcmVnZF9pbml0X3dpcGh5XCIsXG4gICAgXCJhdGhfd29ybGRfcmVnZG9tYWluXCIsXG4gICAgXCJhdGhfZGVmYXVsdF93b3JsZF9yZWdkb21haW5cIixcbiAgICBcImF0aF9yZWdfbm90aWZpZXJfYXBwbHlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBzcGxpdHMgdGhlIDVHSHogNTE1MC01MzUwIE1IeiByZWd1bGF0b3J5IHJ1bGUgaW50byBzZXBhcmF0ZSA1MTUwLTUyNDAgTUh6IGFuZCA1MjYwLTUzNTAgTUh6IHJ1bGVzIGFuZCB1cGRhdGVzIHJ1bGUgY291bnRzIGFjcm9zcyBBdGhlcm9zIHdvcmxkIHJlZ3VsYXRvcnkgZG9tYWluIGRlZmluaXRpb25zIGluIGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMuIFRoaXMgY29kZSBpcyBleGVjdXRlZCBkdXJpbmcgaW5pdGlhbGl6YXRpb24gYW5kIHJlZ3VsYXRvcnkgdXBkYXRlcyBvZiBBdGhlcm9zIHdpcmVsZXNzIGRyaXZlcnMsIGluY2x1ZGluZyBVU0ItZHJpdmVuIGRldmljZXMgKHN1Y2ggYXMgYXRoOWtfaHRjIGFuZCBjYXJsOTE3MCkgd2hpY2ggYXJlIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIFVTQiBlbXVsYXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQVRIX0NPTU1PTlwiLFxuICAgIFwiQVRIOUtfSFRDXCIsXG4gICAgXCJDQVJMOTE3MFwiLFxuICAgIFwiQ0ZHODAyMTFcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJVU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJhdGhfcmVnZF9pbml0XCIsXG4gICAgXCJhdGhfcmVnZF9pbml0X3dpcGh5XCIsXG4gICAgXCJhdGhfd29ybGRfcmVnZG9tYWluXCIsXG4gICAgXCJhdGhfZGVmYXVsdF93b3JsZF9yZWdkb21haW5cIixcbiAgICBcImF0aF9yZWdfbm90aWZpZXJfYXBwbHlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBzcGxpdHMgdGhlIDVHSHogNTE1MC01MzUwIE1IeiByZWd1bGF0b3J5IHJ1bGUgaW50byBzZXBhcmF0ZSA1MTUwLTUyNDAgTUh6IGFuZCA1MjYwLTUzNTAgTUh6IHJ1bGVzIGFuZCB1cGRhdGVzIHJ1bGUgY291bnRzIGFjcm9zcyBBdGhlcm9zIHdvcmxkIHJlZ3VsYXRvcnkgZG9tYWluIGRlZmluaXRpb25zIGluIGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMuIFRoaXMgY29kZSBpcyBleGVjdXRlZCBkdXJpbmcgaW5pdGlhbGl6YXRpb24gYW5kIHJlZ3VsYXRvcnkgdXBkYXRlcyBvZiBBdGhlcm9zIHdpcmVsZXNzIGRyaXZlcnMsIGluY2x1ZGluZyBVU0ItZHJpdmVuIGRldmljZXMgKHN1Y2ggYXMgYXRoOWtfaHRjIGFuZCBjYXJsOTE3MCkgd2hpY2ggYXJlIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIFVTQiBlbXVsYXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDExOjQ0OjU1LjU0Mzc1MDc1NVoiLCJTZXEiOjQxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODg4ODc4MDg4NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxMTo0NDo1NS41NDQzODAxNTVaIiwiU2VxIjo0MiwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo4ODg4NzE3NTA3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgc3RhdGljIGNvbnN0YW50IHJlZ3VsYXRvcnkgZG9tYWluIGRlZmluaXRpb25zIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jYC4gU3BlY2lmaWNhbGx5LCBpdCBzcGxpdHMgdGhlIGBBVEhfNUdIWl81MTUwXzUzNTBgIG1hY3JvIGludG8gdHdvIHNlcGFyYXRlIHJlZ3VsYXRvcnkgcnVsZXMgKDUxNTAtNTI0MCBNSHogYW5kIDUyNjAtNTM1MCBNSHopIGFuZCBhZGp1c3RzIHRoZSBgbl9yZWdfcnVsZXNgIGZpZWxkIGluIHNldmVyYWwgc3RhdGljIGNvbnN0IGBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbmAgaW5zdGFuY2VzIGFjY29yZGluZ2x5LlxcblxcbkFsbCBhZmZlY3RlZCBkYXRhIHN0cnVjdHVyZXMgYXJlIGNvbXBpbGUtdGltZSBjb25zdGFudCB0YWJsZXMgd2l0aCBmdWxseSBpbml0aWFsaXplZCBmaWVsZHMuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IGR5bmFtaWMgb3Igc3RhY2sgYWxsb2NhdGlvbnMsIGRvZXMgbm90IG1vZGlmeSBhbnkgYnVmZmVycyBvciBwYWRkaW5nIGNvcGllZCB0byB1c2Vyc3BhY2UsIGFuZCBpbnRyb2R1Y2VzIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLiBJZiBhbnkgYXJyYXkgaW5kZXhpbmcgb3IgcnVsZSBjb3VudCBtaXNtYXRjaGVzIHdlcmUgdG8gb2NjdXIsIHRoZXkgd291bGQgYmUgYm91bmRzIHZpb2xhdGlvbnMgZGV0ZWN0YWJsZSBieSBzdGFuZGFyZCBLQVNBTi4gVGhlcmVmb3JlLCB0aGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgdGhhdCB3YXJyYW50IGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbi5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAxMjljYjE1OWZiOWM1Y2Q0OGVhZDQ3Y2M3MDRmNzk4NmVkY2E0MDkyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBTZXAgNSAxMTo0Mjo0NSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jXG5pbmRleCBmMTVlN2JkNjkwYjViLi5iMTI5YWYwZWVkODg1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuY1xuQEAgLTQzLDcgKzQzLDggQEAgc3RhdGljIGludCBfX2F0aF9yZWdkX2luaXQoc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcpO1xuIFx0XHRcdFx0XHQgTkw4MDIxMV9SUkZfTk9fT0ZETSlcbiBcbiAvKiBXZSBhbGxvdyBJQlNTIG9uIHRoZXNlIG9uIGEgY2FzZSBieSBjYXNlIGJhc2lzIGJ5IHJlZ3VsYXRvcnkgZG9tYWluICovXG4tI2RlZmluZSBBVEhfNUdIWl81MTUwXzUzNTBcdFJFR19SVUxFKDUxNTAtMTAsIDUzNTArMTAsIDgwLCAwLCAzMCxcXFxuKyNkZWZpbmUgQVRIXzVHSFpfNTE1MF81MzUwXHRSRUdfUlVMRSg1MTUwLTEwLCA1MjQwKzEwLCA4MCwgMCwgMzAsIDApLFxcXG4rXHRcdFx0XHRSRUdfUlVMRSg1MjYwLTEwLCA1MzUwKzEwLCA4MCwgMCwgMzAsXFxcbiBcdFx0XHRcdFx0IE5MODAyMTFfUlJGX05PX0lSKVxuICNkZWZpbmUgQVRIXzVHSFpfNTQ3MF81ODUwXHRSRUdfUlVMRSg1NDcwLTEwLCA1ODUwKzEwLCA4MCwgMCwgMzAsXFxcbiBcdFx0XHRcdFx0IE5MODAyMTFfUlJGX05PX0lSKVxuQEAgLTY0LDcgKzY1LDcgQEAgc3RhdGljIGludCBfX2F0aF9yZWdkX2luaXQoc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcpO1xuIC8qIENhbiBiZSB1c2VkIGZvcjpcbiAgKiAweDYwLCAweDYxLCAweDYyICovXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluIGF0aF93b3JsZF9yZWdkb21fNjBfNjFfNjIgPSB7XG4tXHQubl9yZWdfcnVsZXMgPSA1LFxuK1x0Lm5fcmVnX3J1bGVzID0gNixcbiBcdC5hbHBoYTIgPSAgXCI5OVwiLFxuIFx0LnJlZ19ydWxlcyA9IHtcbiBcdFx0QVRIXzJHSFpfQUxMLFxuQEAgLTc0LDcgKzc1LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluIGF0aF93b3JsZF9yZWdkb21fNjBfNjFfNjIgPSB7XG4gXG4gLyogQ2FuIGJlIHVzZWQgYnkgMHg2MyBhbmQgMHg2NSAqL1xuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiBhdGhfd29ybGRfcmVnZG9tXzYzXzY1ID0ge1xuLVx0Lm5fcmVnX3J1bGVzID0gNCxcbitcdC5uX3JlZ19ydWxlcyA9IDUsXG4gXHQuYWxwaGEyID0gIFwiOTlcIixcbiBcdC5yZWdfcnVsZXMgPSB7XG4gXHRcdEFUSF8yR0haX0NIMDFfMTEsXG5AQCAtODUsNyArODYsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW4gYXRoX3dvcmxkX3JlZ2RvbV82M182NSA9IHtcbiBcbiAvKiBDYW4gYmUgdXNlZCBieSAweDY0IG9ubHkgKi9cbiBzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW4gYXRoX3dvcmxkX3JlZ2RvbV82NCA9IHtcbi1cdC5uX3JlZ19ydWxlcyA9IDMsXG4rXHQubl9yZWdfcnVsZXMgPSA0LFxuIFx0LmFscGhhMiA9ICBcIjk5XCIsXG4gXHQucmVnX3J1bGVzID0ge1xuIFx0XHRBVEhfMkdIWl9DSDAxXzExLFxuQEAgLTk1LDcgKzk2LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluIGF0aF93b3JsZF9yZWdkb21fNjQgPSB7XG4gXG4gLyogQ2FuIGJlIHVzZWQgYnkgMHg2NiBhbmQgMHg2OSAqL1xuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiBhdGhfd29ybGRfcmVnZG9tXzY2XzY5ID0ge1xuLVx0Lm5fcmVnX3J1bGVzID0gMyxcbitcdC5uX3JlZ19ydWxlcyA9IDQsXG4gXHQuYWxwaGEyID0gIFwiOTlcIixcbiBcdC5yZWdfcnVsZXMgPSB7XG4gXHRcdEFUSF8yR0haX0NIMDFfMTEsXG5AQCAtMTA1LDcgKzEwNiw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiBhdGhfd29ybGRfcmVnZG9tXzY2XzY5ID0ge1xuIFxuIC8qIENhbiBiZSB1c2VkIGJ5IDB4NjcsIDB4NjgsIDB4NkEgYW5kIDB4NkMgKi9cbiBzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW4gYXRoX3dvcmxkX3JlZ2RvbV82N182OF82QV82QyA9IHtcbi1cdC5uX3JlZ19ydWxlcyA9IDQsXG4rXHQubl9yZWdfcnVsZXMgPSA1LFxuIFx0LmFscGhhMiA9ICBcIjk5XCIsXG4gXHQucmVnX3J1bGVzID0ge1xuIFx0XHRBVEhfMkdIWl9DSDAxXzExLFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTE6NDQ6NTUuNTQ0MzgxMzM1WiIsIlNlcSI6NDMsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjU3MDUyMTQ3MTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqS01TQU4gRnV6emluZyBFdmFsdWF0aW9uKipcblxuQWxyaWdodCwgbGV0J3MgYXNzZXNzIHRoaXMgcGF0Y2ggYW5kIGZpZ3VyZSBvdXQgdGhlIGZ1enppbmcgc3RyYXRlZ3kuIFRoZSBjb3JlIHF1ZXN0aW9uIGlzOiBkb2VzIHRoaXMgY2hhbmdlIHdhcnJhbnQgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uLCBvciBjYW4gd2Ugc3RpY2sgd2l0aCBzdGFuZGFyZCBLQVNBTj9cblxuRmlyc3QsIEkgbmVlZCB0byBpbnNwZWN0IHRoZSBkaWZmLiBJdCBsb29rcyBsaWtlIHdlJ3JlIHRvdWNoaW5nIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jYC4gUmlnaHQsIHNvIHRoaXMgaXMgYWJvdXQgcmVndWxhdG9yeSBkb21haW4gZGVmaW5pdGlvbnMgaW4gdGhlIGF0aCB3aXJlbGVzcyBkcml2ZXIuIE9rYXksIHRoZSBjb2RlIHNuaXBwZXQgc2hvd3MgdGhhdCBgQVRIXzVHSFpfNTE1MF81MzUwYCBoYXMgYmVlbiBjaGFuZ2VkLiBJdCB1c2VkIHRvIGJlIGEgc2luZ2xlIGBSRUdfUlVMRWAgbWFjcm8gZGVmaW5pdGlvbiwgYnV0IG5vdyBpdCdzIHR3byBzZXBhcmF0ZSBvbmVzLiBBbmQsIGl0IGFwcGVhcnMgdGhlIGAubl9yZWdfcnVsZXNgIGZpZWxkcyBoYXZlIGJlZW4gdXBkYXRlZCBpbiBzZXZlcmFsIGBzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW5gIGRlZmluaXRpb25zLiBTcGVjaWZpY2FsbHkgdGhlIGNvdW50cyBvZiB0aGUgcmVndWxhdG9yeSBydWxlcyB3ZXJlIGluY3JlYXNlZC5cblxuVGhpcyBzdHJvbmdseSBzdWdnZXN0cyBjaGFuZ2VzIHRvIGhvdyB0aGVzZSByZWd1bGF0b3J5IHJ1bGVzIGFyZSBkZWZpbmVkIGFuZCBoYW5kbGVkLiAgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBgUkVHX1JVTEVgIGV4cGFuZHMgdG8sIGFuZCB3aGF0J3MgaW4gYHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluYC4gTW9yZSBjb250ZXh0IGlzIG5lZWRlZCBoZXJlLiBBcmUgdGhlc2UgY2FsY3VsYXRpb25zIHVzZWQgaW4gdGhlIGRyaXZlciwgYW5kIGFyZSB0aGV5IGRpcmVjdGx5IGV4cG9zZWQgdG8gdXNlcmxhbmQ/IElmIHNvLCB0aGlzIGNvdWxkIHBvdGVudGlhbGx5IGxlYWQgdG8gbWVtb3J5IGNvcnJ1cHRpb24uXG5cblRpbWUgdG8gbG9vayBhdCB0aGUgZGVmaW5pdGlvbnMgb2YgYFJFR19SVUxFYCBhbmQgYHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluYCB3aXRoaW4gdGhhdCBmaWxlLCBhbmQgdGhlbiBob3cgdGhleSdyZSAqdXNlZCouIEknbGwgbmVlZCB0byB1c2UgYHJlYWQtZmlsZWAgb3IgYGdyZXBwZXJgIHRvIGdldCBhIGJldHRlciBoYW5kbGUgb24gdGhlIGltcGxpY2F0aW9ucyBoZXJlLiBUaGVuLCBJIGNhbiBtYWtlIGEgbW9yZSBpbmZvcm1lZCBkZWNpc2lvbiBhYm91dCB0aGUgZnV6emluZyByZXF1aXJlbWVudHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwMjEsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NzAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxMTo0NTowMS4yNDk2MDAxNzZaIiwiU2VxIjo0NCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5MzI1NTM2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlJFR19SVUxFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYz0yNj1zdGF0aWMgaW50IF9fYXRoX3JlZ2RfaW5pdChzdHJ1Y3QgYXRoX3JlZ3VsYXRvcnkgKnJlZyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTM1LS8qIE9ubHkgdGhlc2UgY2hhbm5lbHMgYWxsIGFsbG93IGFjdGl2ZSBzY2FuIG9uIGFsbCB3b3JsZCByZWd1bGF0b3J5IGRvbWFpbnMgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjM2OiNkZWZpbmUgQVRIXzJHSFpfQ0gwMV8xMVxcdFJFR19SVUxFKDI0MTItMTAsIDI0NjIrMTAsIDQwLCAwLCAyMCwgMClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTM3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMzgtLyogV2UgZW5hYmxlIGFjdGl2ZSBzY2FuIG9uIHRoZXNlIGEgY2FzZSBieSBjYXNlIGJhc2lzIGJ5IHJlZ3VsYXRvcnkgZG9tYWluICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzozOTojZGVmaW5lIEFUSF8yR0haX0NIMTJfMTNcXHRSRUdfUlVMRSgyNDY3LTEwLCAyNDcyKzEwLCA0MCwgMCwgMjAsXFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNDAtXFx0XFx0XFx0XFx0XFx0IE5MODAyMTFfUlJGX05PX0lSKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NDE6I2RlZmluZSBBVEhfMkdIWl9DSDE0XFx0XFx0UkVHX1JVTEUoMjQ4NC0xMCwgMjQ4NCsxMCwgNDAsIDAsIDIwLFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTQyLVxcdFxcdFxcdFxcdFxcdCBOTDgwMjExX1JSRl9OT19JUiB8IFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNDUtLyogV2UgYWxsb3cgSUJTUyBvbiB0aGVzZSBvbiBhIGNhc2UgYnkgY2FzZSBiYXNpcyBieSByZWd1bGF0b3J5IGRvbWFpbiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6NDY6I2RlZmluZSBBVEhfNUdIWl81MTUwXzUzNTBcXHRSRUdfUlVMRSg1MTUwLTEwLCA1MjQwKzEwLCA4MCwgMCwgMzAsIDApLFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjQ3OlxcdFxcdFxcdFxcdFJFR19SVUxFKDUyNjAtMTAsIDUzNTArMTAsIDgwLCAwLCAzMCxcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy00OC1cXHRcXHRcXHRcXHRcXHQgTkw4MDIxMV9SUkZfTk9fSVIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo0OTojZGVmaW5lIEFUSF81R0haXzU0NzBfNTg1MFxcdFJFR19SVUxFKDU0NzAtMTAsIDU4NTArMTAsIDgwLCAwLCAzMCxcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy01MC1cXHRcXHRcXHRcXHRcXHQgTkw4MDIxMV9SUkZfTk9fSVIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo1MTojZGVmaW5lIEFUSF81R0haXzU3MjVfNTg1MFxcdFJFR19SVUxFKDU3MjUtMTAsIDU4NTArMTAsIDgwLCAwLCAzMCxcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy01Mi1cXHRcXHRcXHRcXHRcXHQgTkw4MDIxMV9SUkZfTk9fSVIpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDExOjQ1OjAxLjI5ODkzNDkxMloiLCJTZXEiOjQ1LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxODkyNDgxMTM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBSZWd1bGF0b3J5IERldGFpbHMqKlxuXG5BbHJpZ2h0LCBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIGhvdyB0aGVzZSByZWd1bGF0b3J5IHJ1bGVzIGFyZSBzdHJ1Y3R1cmVkLiBUaGUgZmlyc3QgcGxhY2UgSSdtIGdvaW5nIHRvIGxvb2sgaXMgYGluY2x1ZGUvbmV0L3JlZ3VsYXRvcnkuaGAuIFRoYXQncyB3aGVyZSBJJ2QgZXhwZWN0IHRvIGZpbmQgdGhlIGRlZmluaXRpb25zIGZvciBgUkVHX1JVTEVgIGFuZCBgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW5gLiBJdCdzIGEgcHJldHR5IHN0YW5kYXJkIGxvY2F0aW9uIGZvciB0aGF0IGtpbmQgb2YgY29yZSB3aXJlbGVzcyByZWd1bGF0b3J5IGRhdGEuIEhvcGVmdWxseSwgaXQncyBhbGwgY2xlYXJseSBsYWlkIG91dCBpbiB0aGVyZSwgYW5kIEkgY2FuIHF1aWNrbHkgZ2V0IGEgZ29vZCB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzdHJ1Y3R1cmUgYW5kIGhvdyB0aGUgZGlmZmVyZW50IGVsZW1lbnRzIHJlbGF0ZSB0byBlYWNoIG90aGVyLiBJJ2xsIHByb2JhYmx5IGJlIGNoZWNraW5nIHRoaW5ncyBsaWtlIGRhdGEgdHlwZXMsIGFueSBlbWJlZGRlZCBzdHJ1Y3R1cmVzLCBhbmQgaG93IHRoZSBydWxlcyBhcmUgYWN0dWFsbHkgc3RvcmVkIGFuZCBhY2Nlc3NlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDY1MCwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDExOjQ1OjAzLjE5MTQyNDcwN1oiLCJTZXEiOjQ2LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc0MTUyNzc5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCIjZGVmaW5lIFJFR19SVUxFXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmg9MjkwMD1zdHJ1Y3QgcnhfcmVvcmRlcl9xdWV1ZV9yZW1vdmVfcGFyYW1zIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmgtMjkxNi0vKiBGcmVxIHVuaXRzIGluIE1IeiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmg6MjkxNzojZGVmaW5lIFJFR19SVUxFX1NUQVJUX0ZSRVFcXHRcXHRcXHQweDAwMDBmZmZmXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuaDoyOTE4OiNkZWZpbmUgUkVHX1JVTEVfRU5EX0ZSRVFcXHRcXHRcXHQweGZmZmYwMDAwXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuaDoyOTE5OiNkZWZpbmUgUkVHX1JVTEVfRkxBR1NcXHRcXHRcXHRcXHQweDAwMDBmZmZmXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuaDoyOTIwOiNkZWZpbmUgUkVHX1JVTEVfTUFYX0JXXFx0XFx0XFx0XFx0MHgwMDAwZmZmZlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmg6MjkyMTojZGVmaW5lIFJFR19SVUxFX1JFR19QV1JcXHRcXHRcXHQweDAwZmYwMDAwXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuaDoyOTIyOiNkZWZpbmUgUkVHX1JVTEVfQU5UX0dBSU5cXHRcXHRcXHQweGZmMDAwMDAwXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuaDoyOTIzOiNkZWZpbmUgUkVHX1JVTEVfUFNEX0lORk9cXHRcXHRcXHRCSVQoMClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5oOjI5MjQ6I2RlZmluZSBSRUdfUlVMRV9QU0RfRUlSUFxcdFxcdFxcdDB4ZmYwMDAwXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuaC0yOTI1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuaD0zMjEyPXN0cnVjdCBhdGgxMmtfd21pX3J4X3Jlb3JkZXJfcXVldWVfcmVtb3ZlX2FyZyB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5oLTMyMjgtLyogRnJlcSB1bml0cyBpbiBNSHogKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5oOjMyMjk6I2RlZmluZSBSRUdfUlVMRV9TVEFSVF9GUkVRXFx0XFx0XFx0MHgwMDAwZmZmZlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmg6MzIzMDojZGVmaW5lIFJFR19SVUxFX0VORF9GUkVRXFx0XFx0XFx0MHhmZmZmMDAwMFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmg6MzIzMTojZGVmaW5lIFJFR19SVUxFX0ZMQUdTXFx0XFx0XFx0XFx0MHgwMDAwZmZmZlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmg6MzIzMjojZGVmaW5lIFJFR19SVUxFX01BWF9CV1xcdFxcdFxcdFxcdDB4MDAwMGZmZmZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5oOjMyMzM6I2RlZmluZSBSRUdfUlVMRV9SRUdfUFdSXFx0XFx0XFx0MHgwMGZmMDAwMFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmg6MzIzNDojZGVmaW5lIFJFR19SVUxFX0FOVF9HQUlOXFx0XFx0XFx0MHhmZjAwMDAwMFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmg6MzIzNTojZGVmaW5lIFJFR19SVUxFX1BTRF9JTkZPXFx0XFx0XFx0QklUKDIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuaDozMjM2OiNkZWZpbmUgUkVHX1JVTEVfUFNEX0VJUlBcXHRcXHRcXHQweGZmZmYwMDAwXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuaC0zMjM3LVxcbi0tXFxuaW5jbHVkZS9uZXQvcmVndWxhdG9yeS5oPTIxNz1zdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiB7XFxuLS1cXG5pbmNsdWRlL25ldC9yZWd1bGF0b3J5LmgtMjI0LVxcbmluY2x1ZGUvbmV0L3JlZ3VsYXRvcnkuaDoyMjU6I2RlZmluZSBSRUdfUlVMRV9FWFQoc3RhcnQsIGVuZCwgYncsIGdhaW4sIGVpcnAsIGRmc19jYWMsIHJlZ19mbGFncylcXHRcXFxcXFxuaW5jbHVkZS9uZXQvcmVndWxhdG9yeS5oLTIyNi17XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi0tXFxuaW5jbHVkZS9uZXQvcmVndWxhdG9yeS5oLTIzNS1cXG5pbmNsdWRlL25ldC9yZWd1bGF0b3J5Lmg6MjM2OiNkZWZpbmUgUkVHX1JVTEUoc3RhcnQsIGVuZCwgYncsIGdhaW4sIGVpcnAsIHJlZ19mbGFncykgXFxcXFxcbmluY2x1ZGUvbmV0L3JlZ3VsYXRvcnkuaC0yMzctXFx0UkVHX1JVTEVfRVhUKHN0YXJ0LCBlbmQsIGJ3LCBnYWluLCBlaXJwLCAwLCByZWdfZmxhZ3MpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDExOjQ1OjA0LjkzMjk3NDg2NloiLCJTZXEiOjQ3LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxNzU2NjI3OTU1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKlJlZ3VsYXRvcnkgRG9tYWluIERlZXAgRGl2ZSoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiBob3cgdGhlIHJlZ3VsYXRvcnkgZG9tYWluIGluZm9ybWF0aW9uIGlzIHN0cnVjdHVyZWQsIHNwZWNpZmljYWxseSBpbiB0aGUgY29udGV4dCBvZiB0aGUgZHJpdmVyIEknbSBsb29raW5nIGF0LiBSaWdodCwgbGV0J3MgaGVhZCBvdmVyIHRvIHRoZSBgaW5jbHVkZS9uZXQvcmVndWxhdG9yeS5oYCBoZWFkZXIgZmlsZS4gSSdtIHRoaW5raW5nIGFyb3VuZCBsaW5lIDIxNyBzaG91bGQgYmUgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBJIHJlY2FsbCB0aGF0J3Mgb2Z0ZW4gd2hlcmUgdGhlIGNvcmUgZGF0YSBzdHJ1Y3R1cmVzIG9yIGVudW1zIHJlbGF0ZWQgdG8gcmVndWxhdG9yeSBpbmZvcm1hdGlvbiBkZWZpbml0aW9ucyByZXNpZGUsIG9yIHBlcmhhcHMgd2hlcmUgdGhlIHN0cnVjdHVyZXMgdGhhdCBob2xkIHRoZSBjaGFubmVsIGFuZCBwb3dlciBjb25zdHJhaW50cyBhcmUgZGVjbGFyZWQuIEhvcGVmdWxseSwgSSdsbCBmaW5kIHRoZSBzdHJ1Y3R1cmUgSSdtIGxvb2tpbmcgZm9yIHRoZXJlIGFuZCBnZXQgYSBxdWljayByZWZyZXNoZXIgb24gaG93IHRoZSByZWd1bGF0b3J5IGluZm9ybWF0aW9uIGlzIGxhaWQgb3V0IGluIHRoaXMgc3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODk3LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTE6NDU6MDYuNjg5NjA1OTRaIiwiU2VxIjo0OCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njk1ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiaW5jbHVkZS9uZXQvcmVndWxhdG9yeS5oXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIxMCxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDIxMDpcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX3dtbV9ydWxlIHdtbV9ydWxlO1xcbiAyMTE6XFx0XFx0dTMyIGZsYWdzO1xcbiAyMTI6XFx0XFx0dTMyIGRmc19jYWNfbXM7XFxuIDIxMzpcXHRcXHRib29sIGhhc193bW07XFxuIDIxNDpcXHRcXHRzOCBwc2Q7XFxuIDIxNTpcXHR9O1xcbiAyMTY6XFx0XFxuIDIxNzpcXHRzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiB7XFxuIDIxODpcXHRcXHRzdHJ1Y3QgcmN1X2hlYWQgcmN1X2hlYWQ7XFxuIDIxOTpcXHRcXHR1MzIgbl9yZWdfcnVsZXM7XFxuIDIyMDpcXHRcXHRjaGFyIGFscGhhMlszXTtcXG4gMjIxOlxcdFxcdGVudW0gbmw4MDIxMV9kZnNfcmVnaW9ucyBkZnNfcmVnaW9uO1xcbiAyMjI6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9yZWdfcnVsZSByZWdfcnVsZXNbXTtcXG4gMjIzOlxcdH07XFxuIDIyNDpcXHRcXG4gMjI1OlxcdCNkZWZpbmUgUkVHX1JVTEVfRVhUKHN0YXJ0LCBlbmQsIGJ3LCBnYWluLCBlaXJwLCBkZnNfY2FjLCByZWdfZmxhZ3MpXFx0XFxcXFxcbiAyMjY6XFx0e1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gMjI3OlxcdFxcdC5mcmVxX3JhbmdlLnN0YXJ0X2ZyZXFfa2h6ID0gTUhaX1RPX0tIWihzdGFydCksXFx0XFx0XFx0XFxcXFxcbiAyMjg6XFx0XFx0LmZyZXFfcmFuZ2UuZW5kX2ZyZXFfa2h6ID0gTUhaX1RPX0tIWihlbmQpLFxcdFxcdFxcdFxcXFxcXG4gMjI5OlxcdFxcdC5mcmVxX3JhbmdlLm1heF9iYW5kd2lkdGhfa2h6ID0gTUhaX1RPX0tIWihidyksXFx0XFx0XFx0XFxcXFxcbiAyMzA6XFx0XFx0LnBvd2VyX3J1bGUubWF4X2FudGVubmFfZ2FpbiA9IERCSV9UT19NQkkoZ2FpbiksXFx0XFx0XFxcXFxcbiAyMzE6XFx0XFx0LnBvd2VyX3J1bGUubWF4X2VpcnAgPSBEQk1fVE9fTUJNKGVpcnApLFxcdFxcdFxcdFxcXFxcXG4gMjMyOlxcdFxcdC5mbGFncyA9IHJlZ19mbGFncyxcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIDIzMzpcXHRcXHQuZGZzX2NhY19tcyA9IGRmc19jYWMsXFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiAyMzQ6XFx0fVxcbiAyMzU6XFx0XFxuIDIzNjpcXHQjZGVmaW5lIFJFR19SVUxFKHN0YXJ0LCBlbmQsIGJ3LCBnYWluLCBlaXJwLCByZWdfZmxhZ3MpIFxcXFxcXG4gMjM3OlxcdFxcdFJFR19SVUxFX0VYVChzdGFydCwgZW5kLCBidywgZ2FpbiwgZWlycCwgMCwgcmVnX2ZsYWdzKVxcbiAyMzg6XFx0XFxuIDIzOTpcXHQjZW5kaWZcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTE6NDU6MDYuNjg5Njc3MVoiLCJTZXEiOjQ5LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxODk4MDM0NTA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqTmF2aWdhdGluZyB0aGUgQXRoZXJvcyBXaXJlbGVzcyBSZWd1bGF0b3J5IERvbWFpbiBDb2RlKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBpc3N1ZSwgYW5kIHRoZSBwcm9ibGVtIGxpa2VseSByZXNpZGVzIHdpdGhpbiB0aGUgcmVndWxhdG9yeSBkb21haW4gaGFuZGxpbmcgZm9yIEF0aGVyb3Mgd2lyZWxlc3MgZHJpdmVycy4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gZGl2ZSBkaXJlY3RseSBpbnRvIHRoZSBjb2RlLiBMZXQncyBzZWUuLi4gSSdtIGdvaW5nIHRvIHN0YXJ0IGJ5IGNvbmZpcm1pbmcgdGhlIGRlZmluaXRpb25zIG9mIHRoZSBrZXkgc3RydWN0dXJlcyB1c2VkIGZvciByZWd1bGF0b3J5IGRvbWFpbiBjb25maWd1cmF0aW9uLiBUaGF0IG1lYW5zIGRpZ2dpbmcgaW50byBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuY2AuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiBob3cgdGhleSd2ZSBzdHJ1Y3R1cmVkIHRoYXQsIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGUgcmVndWxhdG9yeSBkb21haW4gc3RydWN0dXJlcywgYW5kIHdoZXJlIHRoZSBjb3JlIGxvZ2ljIHJlc2lkZXMuIFRoYXQgZmlsZSBpcyB1c3VhbGx5IHRoZSBnby10byBzcG90IGZvciB0aGVzZSBraW5kcyBvZiBkZXRhaWxzIHdpdGggQXRoZXJvcy4gRnJvbSB0aGVyZSwgSSBjYW4gYW5hbHl6ZSB0aGUgZGF0YSBzdHJ1Y3R1cmVzIHRvIHVuZGVyc3RhbmQgaG93IHRoZSByZWd1bGF0b3J5IHBhcmFtZXRlcnMgYW5kIGNoYW5uZWxzIGFyZSByZXByZXNlbnRlZC4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIHNvbGlkIGZvdW5kYXRpb24gZm9yIHRyYWNpbmcgdGhlIGFjdHVhbCBpc3N1ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjY3MCwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTE6NDU6MDguNTg3NzE0MzU1WiIsIlNlcSI6NTAsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0ODEzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDU1LFxuICBcIkxpbmVDb3VudFwiOiA2MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDU1OlxcdFxcdFxcdFxcdFxcdEFUSF8yR0haX0NIMTJfMTMsIFxcXFxcXG4gIDU2OlxcdFxcdFxcdFxcdFxcdEFUSF8yR0haX0NIMTRcXG4gIDU3OlxcdFxcbiAgNTg6XFx0I2RlZmluZSBBVEhfNUdIWl9BTExcXHRcXHRBVEhfNUdIWl81MTUwXzUzNTAsIFxcXFxcXG4gIDU5OlxcdFxcdFxcdFxcdFxcdEFUSF81R0haXzU0NzBfNTg1MFxcbiAgNjA6XFx0XFxuICA2MTpcXHQvKiBUaGlzIG9uZSBza2lwcyB3aGF0IHdlIGNhbGwgXFxcIm1pZCBiYW5kXFxcIiAqL1xcbiAgNjI6XFx0I2RlZmluZSBBVEhfNUdIWl9OT19NSURCQU5EXFx0QVRIXzVHSFpfNTE1MF81MzUwLCBcXFxcXFxuICA2MzpcXHRcXHRcXHRcXHRcXHRBVEhfNUdIWl81NzI1XzU4NTBcXG4gIDY0OlxcdFxcbiAgNjU6XFx0LyogQ2FuIGJlIHVzZWQgZm9yOlxcbiAgNjY6XFx0ICogMHg2MCwgMHg2MSwgMHg2MiAqL1xcbiAgNjc6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluIGF0aF93b3JsZF9yZWdkb21fNjBfNjFfNjIgPSB7XFxuICA2ODpcXHRcXHQubl9yZWdfcnVsZXMgPSA2LFxcbiAgNjk6XFx0XFx0LmFscGhhMiA9ICBcXFwiOTlcXFwiLFxcbiAgNzA6XFx0XFx0LnJlZ19ydWxlcyA9IHtcXG4gIDcxOlxcdFxcdFxcdEFUSF8yR0haX0FMTCxcXG4gIDcyOlxcdFxcdFxcdEFUSF81R0haX0FMTCxcXG4gIDczOlxcdFxcdH1cXG4gIDc0OlxcdH07XFxuICA3NTpcXHRcXG4gIDc2OlxcdC8qIENhbiBiZSB1c2VkIGJ5IDB4NjMgYW5kIDB4NjUgKi9cXG4gIDc3OlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiBhdGhfd29ybGRfcmVnZG9tXzYzXzY1ID0ge1xcbiAgNzg6XFx0XFx0Lm5fcmVnX3J1bGVzID0gNSxcXG4gIDc5OlxcdFxcdC5hbHBoYTIgPSAgXFxcIjk5XFxcIixcXG4gIDgwOlxcdFxcdC5yZWdfcnVsZXMgPSB7XFxuICA4MTpcXHRcXHRcXHRBVEhfMkdIWl9DSDAxXzExLFxcbiAgODI6XFx0XFx0XFx0QVRIXzJHSFpfQ0gxMl8xMyxcXG4gIDgzOlxcdFxcdFxcdEFUSF81R0haX05PX01JREJBTkQsXFxuICA4NDpcXHRcXHR9XFxuICA4NTpcXHR9O1xcbiAgODY6XFx0XFxuICA4NzpcXHQvKiBDYW4gYmUgdXNlZCBieSAweDY0IG9ubHkgKi9cXG4gIDg4OlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiBhdGhfd29ybGRfcmVnZG9tXzY0ID0ge1xcbiAgODk6XFx0XFx0Lm5fcmVnX3J1bGVzID0gNCxcXG4gIDkwOlxcdFxcdC5hbHBoYTIgPSAgXFxcIjk5XFxcIixcXG4gIDkxOlxcdFxcdC5yZWdfcnVsZXMgPSB7XFxuICA5MjpcXHRcXHRcXHRBVEhfMkdIWl9DSDAxXzExLFxcbiAgOTM6XFx0XFx0XFx0QVRIXzVHSFpfTk9fTUlEQkFORCxcXG4gIDk0OlxcdFxcdH1cXG4gIDk1OlxcdH07XFxuICA5NjpcXHRcXG4gIDk3OlxcdC8qIENhbiBiZSB1c2VkIGJ5IDB4NjYgYW5kIDB4NjkgKi9cXG4gIDk4OlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiBhdGhfd29ybGRfcmVnZG9tXzY2XzY5ID0ge1xcbiAgOTk6XFx0XFx0Lm5fcmVnX3J1bGVzID0gNCxcXG4gMTAwOlxcdFxcdC5hbHBoYTIgPSAgXFxcIjk5XFxcIixcXG4gMTAxOlxcdFxcdC5yZWdfcnVsZXMgPSB7XFxuIDEwMjpcXHRcXHRcXHRBVEhfMkdIWl9DSDAxXzExLFxcbiAxMDM6XFx0XFx0XFx0QVRIXzVHSFpfQUxMLFxcbiAxMDQ6XFx0XFx0fVxcbiAxMDU6XFx0fTtcXG4gMTA2OlxcdFxcbiAxMDc6XFx0LyogQ2FuIGJlIHVzZWQgYnkgMHg2NywgMHg2OCwgMHg2QSBhbmQgMHg2QyAqL1xcbiAxMDg6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluIGF0aF93b3JsZF9yZWdkb21fNjdfNjhfNkFfNkMgPSB7XFxuIDEwOTpcXHRcXHQubl9yZWdfcnVsZXMgPSA1LFxcbiAxMTA6XFx0XFx0LmFscGhhMiA9ICBcXFwiOTlcXFwiLFxcbiAxMTE6XFx0XFx0LnJlZ19ydWxlcyA9IHtcXG4gMTEyOlxcdFxcdFxcdEFUSF8yR0haX0NIMDFfMTEsXFxuIDExMzpcXHRcXHRcXHRBVEhfMkdIWl9DSDEyXzEzLFxcbiAxMTQ6XFx0XFx0XFx0QVRIXzVHSFpfQUxMLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxMTo0NTowOC41ODc4NjU2MDVaIiwiU2VxIjo1MSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzQ1OTgwNjM3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFJlZ3VsYXRvcnkgRG9tYWluIFVwZGF0ZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcmVndWxhdG9yeSBkb21haW4gZGVmaW5pdGlvbiwgc3BlY2lmaWNhbGx5IGBBVEhfNUdIWl81MTUwXzUzNTBgLiBCZWZvcmUsIGl0IHdhcyBkZWZpbmVkIGJ5IGEgc2luZ2xlIHJ1bGU6IGBSRUdfUlVMRSg1MTUwLTEwLCA1MzUwKzEwLCA4MCwgMCwgMzAsIE5MODAyMTFfUlJGX05PX0lSKWAuIE5vdywgaXQncyBiZWVuIHNwbGl0IGludG8gdHdvIHJ1bGVzLCB3aGljaCBpcyBpbnRlcmVzdGluZy4gV2UgaGF2ZTogYFJFR19SVUxFKDUxNTAtMTAsIDUyNDArMTAsIDgwLCAwLCAzMCwgMClgIGFuZCBgUkVHX1JVTEUoNTI2MC0xMCwgNTM1MCsxMCwgODAsIDAsIDMwLCBOTDgwMjExX1JSRl9OT19JUilgLiBJIHNlZSB0aGUgbG9naWMsIHNwbGl0dGluZyB0aGF0IGNvbnRpZ3VvdXMgYmFuZCBpbnRvIHR3byBwaWVjZXMsIG1vc3QgbGlrZWx5IHRvIGFjY29tbW9kYXRlIHNvbWUgbmV3IHJlZ3VsYXRvcnkgcmVxdWlyZW1lbnQgb3IgcGVyaGFwcyB0byBlbmFibGUgRHluYW1pYyBGcmVxdWVuY3kgU2VsZWN0aW9uIChERlMpIG9uIGEgc2VjdGlvbiBvZiB0aGF0IGJhbmQuXG5cbk5hdHVyYWxseSwgdGhlIGAubl9yZWdfcnVsZXNgIG1lbWJlciBvZiBhbnkgYHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluYCB1c2luZyBgQVRIXzVHSFpfNTE1MF81MzUwYCAoZWl0aGVyIGRpcmVjdGx5IG9yIHZpYSBgQVRIXzVHSFpfQUxMYCBvciBgQVRIXzVHSFpfTk9fTUlEQkFORGApIGhhcyBiZWVuIGluY3JlbWVudGVkIHRvIHJlZmxlY3QgdGhpcyBjaGFuZ2UuIFRoZXNlIGFyZSBhbGwgZGVjbGFyZWQgYXMgYHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbmAsIHdoaWNoIG1lYW5zIHRoZXNlIHN0cnVjdHVyZXMgYXJlIGluaXRpYWxpemVkIGF0IGNvbXBpbGUgdGltZS5cblxuSW4gQywgdGhlIGBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbmAgdXNlcyBhIGZsZXhpYmxlIGFycmF5IG1lbWJlciBgc3RydWN0IGllZWU4MDIxMV9yZWdfcnVsZSByZWdfcnVsZXNbXWAsIHdoaWNoIGlzIHN0YW5kYXJkIHByYWN0aWNlIGluIHRoZXNlIHJlZ3VsYXRvcnkgZG9tYWluIGRlZmluaXRpb25zLiBTaW5jZSB0aGVzZSBhcmUgc3RhdGljIGBjb25zdGAgc3RydWN0dXJlcywgdGhlIGVudGlyZSBgcmVnX3J1bGVzW11gIGFycmF5IGlzIHBvcHVsYXRlZCBhdCBjb21waWxlIHRpbWUgd2l0aCBzdGF0aWMgYGNvbnN0YCBkYXRhIHVzaW5nIGRlc2lnbmF0ZWQgaW5pdGlhbGl6ZXJzLiBUaGF0J3MgZ29vZCwgbWluaW1pemVzIHJ1bnRpbWUgb3ZlcmhlYWQuXG5cbk5vdyBJIG5lZWQgdG8gc2VlIHdoZXJlIHRoZXNlIGBhdGhfd29ybGRfcmVnZG9tXypgIHZhcmlhYmxlcyBhcmUgYWN0dWFsbHkgdXNlZCB3aXRoaW4gdGhlIGNvZGViYXNlIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIGltcGFjdCBvZiB0aGlzIGNoYW5nZS4gSSdsbCBuZWVkIHRvIHRyYWNlIHRob3NlIHVzYWdlcyB0byBzZWUgaWYgYW55IGxvZ2ljIG5lZWRzIHRvIGJlIHVwZGF0ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc5MzMsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNDQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxMTo0NToxMi4wNDc2NzU3MTlaIiwiU2VxIjo1MiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2NzU1NzY2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF0aF93b3JsZF9yZWdkb21fXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jPTI2PXN0YXRpYyBpbnQgX19hdGhfcmVnZF9pbml0KHN0cnVjdCBhdGhfcmVndWxhdG9yeSAqcmVnKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtNjYtICogMHg2MCwgMHg2MSwgMHg2MiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6Njc6c3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluIGF0aF93b3JsZF9yZWdkb21fNjBfNjFfNjIgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy02OC1cXHQubl9yZWdfcnVsZXMgPSA2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy03Ni0vKiBDYW4gYmUgdXNlZCBieSAweDYzIGFuZCAweDY1ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo3NzpzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW4gYXRoX3dvcmxkX3JlZ2RvbV82M182NSA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTc4LVxcdC5uX3JlZ19ydWxlcyA9IDUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTg3LS8qIENhbiBiZSB1c2VkIGJ5IDB4NjQgb25seSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6ODg6c3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluIGF0aF93b3JsZF9yZWdkb21fNjQgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy04OS1cXHQubl9yZWdfcnVsZXMgPSA0LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy05Ny0vKiBDYW4gYmUgdXNlZCBieSAweDY2IGFuZCAweDY5ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzo5ODpzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW4gYXRoX3dvcmxkX3JlZ2RvbV82Nl82OSA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTk5LVxcdC5uX3JlZ19ydWxlcyA9IDQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTEwNy0vKiBDYW4gYmUgdXNlZCBieSAweDY3LCAweDY4LCAweDZBIGFuZCAweDZDICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzoxMDg6c3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluIGF0aF93b3JsZF9yZWdkb21fNjdfNjhfNkFfNkMgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0xMDktXFx0Lm5fcmVnX3J1bGVzID0gNSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM9MjE3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbiAqYXRoX2RlZmF1bHRfd29ybGRfcmVnZG9tYWluKHZvaWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTIxOS1cXHQvKiB0aGlzIGlzIHRoZSBtb3N0IHJlc3RyaWN0aXZlICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzoyMjA6XFx0cmV0dXJuIFxcdTAwMjZhdGhfd29ybGRfcmVnZG9tXzY0O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjIxLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM9MjI0PWllZWU4MDIxMV9yZWdkb21haW4gKmF0aF93b3JsZF9yZWdkb21haW4oc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTIyOS1cXHRjYXNlIDB4NjI6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzoyMzA6XFx0XFx0cmV0dXJuIFxcdTAwMjZhdGhfd29ybGRfcmVnZG9tXzYwXzYxXzYyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjMxLVxcdGNhc2UgMHg2MzpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTIzMi1cXHRjYXNlIDB4NjU6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYzoyMzM6XFx0XFx0cmV0dXJuIFxcdTAwMjZhdGhfd29ybGRfcmVnZG9tXzYzXzY1O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjM0LVxcdGNhc2UgMHg2NDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjIzNTpcXHRcXHRyZXR1cm4gXFx1MDAyNmF0aF93b3JsZF9yZWdkb21fNjQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0yMzYtXFx0Y2FzZSAweDY2OlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMtMjM3LVxcdGNhc2UgMHg2OTpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jOjIzODpcXHRcXHRyZXR1cm4gXFx1MDAyNmF0aF93b3JsZF9yZWdkb21fNjZfNjk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0yMzktXFx0Y2FzZSAweDY3Olxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYy0yNDItXFx0Y2FzZSAweDZDOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmM6MjQzOlxcdFxcdHJldHVybiBcXHUwMDI2YXRoX3dvcmxkX3JlZ2RvbV82N182OF82QV82QztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jLTI0NC1cXHRkZWZhdWx0OlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxMTo0NToxMi4xMDQ0MzYyNjVaIiwiU2VxIjo1MywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NjM3MDU1NzM0NTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXhhbWluaW5nIHRoZSBBdGhlcm9zIFJlZ3VsYXRvcnkgRG9tYWluIENvZGUqKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIGluLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHJlZ3VsYXRvcnkgZG9tYWluIHJ1bGVzIGFyZSBoYW5kbGVkLCBzcGVjaWZpY2FsbHkgaW4gcmVsYXRpb24gdG8gYGF0aF93b3JsZF9yZWdkb21haW4oKWAuIE15IGZvY3VzIGlzIGN1cnJlbnRseSBvbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmNgIGZpbGUuIEknbSBnb2luZyB0byBzdGFydCBieSBnb2luZyBkZWVwZXIgaW50byB0aGlzIGNvZGUsIGZvY3VzaW5nIG9uIHRoZSBzZWN0aW9uIGZyb20gYXJvdW5kIGxpbmUgMjE1IHRvIGxpbmUgMzAwLiBJIG5lZWQgdG8gcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGlzIGltcGxlbWVudGF0aW9uIGRlYWxzIHdpdGggc3BlY2lmaWMgcGFyYW1ldGVycyBhbmQgbWFrZSBhIGNvbXBhcmlzb24gdG8gYW5vdGhlciBtb2RlbCBpbiBteSBtaW5kLiBUaW1lIHRvIGdldCBkb3duIGludG8gdGhlIGRldGFpbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk5ODYsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxMTo0NjoxNS44MTAwMTIzODFaIiwiU2VxIjo1NCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAxNTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjE1LFxuICBcIkxpbmVDb3VudFwiOiA4MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjE1OlxcdEVYUE9SVF9TWU1CT0woYXRoX2lzX3dvcmxkX3JlZ2QpO1xcbiAyMTY6XFx0XFxuIDIxNzpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW4gKmF0aF9kZWZhdWx0X3dvcmxkX3JlZ2RvbWFpbih2b2lkKVxcbiAyMTg6XFx0e1xcbiAyMTk6XFx0XFx0LyogdGhpcyBpcyB0aGUgbW9zdCByZXN0cmljdGl2ZSAqL1xcbiAyMjA6XFx0XFx0cmV0dXJuIFxcdTAwMjZhdGhfd29ybGRfcmVnZG9tXzY0O1xcbiAyMjE6XFx0fVxcbiAyMjI6XFx0XFxuIDIyMzpcXHRzdGF0aWMgY29uc3Qgc3RydWN0XFxuIDIyNDpcXHRpZWVlODAyMTFfcmVnZG9tYWluICphdGhfd29ybGRfcmVnZG9tYWluKHN0cnVjdCBhdGhfcmVndWxhdG9yeSAqcmVnKVxcbiAyMjU6XFx0e1xcbiAyMjY6XFx0XFx0c3dpdGNoIChyZWctXFx1MDAzZXJlZ3BhaXItXFx1MDAzZXJlZ19kb21haW4pIHtcXG4gMjI3OlxcdFxcdGNhc2UgMHg2MDpcXG4gMjI4OlxcdFxcdGNhc2UgMHg2MTpcXG4gMjI5OlxcdFxcdGNhc2UgMHg2MjpcXG4gMjMwOlxcdFxcdFxcdHJldHVybiBcXHUwMDI2YXRoX3dvcmxkX3JlZ2RvbV82MF82MV82MjtcXG4gMjMxOlxcdFxcdGNhc2UgMHg2MzpcXG4gMjMyOlxcdFxcdGNhc2UgMHg2NTpcXG4gMjMzOlxcdFxcdFxcdHJldHVybiBcXHUwMDI2YXRoX3dvcmxkX3JlZ2RvbV82M182NTtcXG4gMjM0OlxcdFxcdGNhc2UgMHg2NDpcXG4gMjM1OlxcdFxcdFxcdHJldHVybiBcXHUwMDI2YXRoX3dvcmxkX3JlZ2RvbV82NDtcXG4gMjM2OlxcdFxcdGNhc2UgMHg2NjpcXG4gMjM3OlxcdFxcdGNhc2UgMHg2OTpcXG4gMjM4OlxcdFxcdFxcdHJldHVybiBcXHUwMDI2YXRoX3dvcmxkX3JlZ2RvbV82Nl82OTtcXG4gMjM5OlxcdFxcdGNhc2UgMHg2NzpcXG4gMjQwOlxcdFxcdGNhc2UgMHg2ODpcXG4gMjQxOlxcdFxcdGNhc2UgMHg2QTpcXG4gMjQyOlxcdFxcdGNhc2UgMHg2QzpcXG4gMjQzOlxcdFxcdFxcdHJldHVybiBcXHUwMDI2YXRoX3dvcmxkX3JlZ2RvbV82N182OF82QV82QztcXG4gMjQ0OlxcdFxcdGRlZmF1bHQ6XFxuIDI0NTpcXHRcXHRcXHRXQVJOX09OKDEpO1xcbiAyNDY6XFx0XFx0XFx0cmV0dXJuIGF0aF9kZWZhdWx0X3dvcmxkX3JlZ2RvbWFpbigpO1xcbiAyNDc6XFx0XFx0fVxcbiAyNDg6XFx0fVxcbiAyNDk6XFx0XFxuIDI1MDpcXHRib29sIGF0aF9pc180OWdoel9hbGxvd2VkKHUxNiByZWdkb21haW4pXFxuIDI1MTpcXHR7XFxuIDI1MjpcXHRcXHQvKiBwb3NzaWJseSBtb3JlICovXFxuIDI1MzpcXHRcXHRyZXR1cm4gcmVnZG9tYWluID09IE1LSzlfTUtLQztcXG4gMjU0OlxcdH1cXG4gMjU1OlxcdEVYUE9SVF9TWU1CT0woYXRoX2lzXzQ5Z2h6X2FsbG93ZWQpO1xcbiAyNTY6XFx0XFxuIDI1NzpcXHQvKiBGcmVxdWVuY3kgaXMgb25lIHdoZXJlIHJhZGFyIGRldGVjdGlvbiBpcyByZXF1aXJlZCAqL1xcbiAyNTg6XFx0c3RhdGljIGJvb2wgYXRoX2lzX3JhZGFyX2ZyZXEodTE2IGNlbnRlcl9mcmVxLFxcbiAyNTk6XFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGF0aF9yZWd1bGF0b3J5ICpyZWcpXFxuIDI2MDpcXHRcXG4gMjYxOlxcdHtcXG4gMjYyOlxcdFxcdGlmIChyZWctXFx1MDAzZWNvdW50cnlfY29kZSA9PSBDVFJZX0lORElBKVxcbiAyNjM6XFx0XFx0XFx0cmV0dXJuIChjZW50ZXJfZnJlcSBcXHUwMDNlPSA1NTAwIFxcdTAwMjZcXHUwMDI2IGNlbnRlcl9mcmVxIFxcdTAwM2M9IDU3MDApO1xcbiAyNjQ6XFx0XFx0cmV0dXJuIChjZW50ZXJfZnJlcSBcXHUwMDNlPSA1MjYwIFxcdTAwMjZcXHUwMDI2IGNlbnRlcl9mcmVxIFxcdTAwM2M9IDU3MDApO1xcbiAyNjU6XFx0fVxcbiAyNjY6XFx0XFxuIDI2NzpcXHRzdGF0aWMgdm9pZCBhdGhfZm9yY2VfY2xlYXJfbm9faXJfY2hhbihzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbiAyNjg6XFx0XFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2gpXFxuIDI2OTpcXHR7XFxuIDI3MDpcXHRcXHRjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JlZ19ydWxlICpyZWdfcnVsZTtcXG4gMjcxOlxcdFxcbiAyNzI6XFx0XFx0cmVnX3J1bGUgPSBmcmVxX3JlZ19pbmZvKHdpcGh5LCBNSFpfVE9fS0haKGNoLVxcdTAwM2VjZW50ZXJfZnJlcSkpO1xcbiAyNzM6XFx0XFx0aWYgKElTX0VSUihyZWdfcnVsZSkpXFxuIDI3NDpcXHRcXHRcXHRyZXR1cm47XFxuIDI3NTpcXHRcXG4gMjc2OlxcdFxcdGlmICghKHJlZ19ydWxlLVxcdTAwM2VmbGFncyBcXHUwMDI2IE5MODAyMTFfUlJGX05PX0lSKSlcXG4gMjc3OlxcdFxcdFxcdGlmIChjaC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRUVFODAyMTFfQ0hBTl9OT19JUilcXG4gMjc4OlxcdFxcdFxcdFxcdGNoLVxcdTAwM2VmbGFncyBcXHUwMDI2PSB+SUVFRTgwMjExX0NIQU5fTk9fSVI7XFxuIDI3OTpcXHR9XFxuIDI4MDpcXHRcXG4gMjgxOlxcdHN0YXRpYyB2b2lkIGF0aF9mb3JjZV9jbGVhcl9ub19pcl9mcmVxKHN0cnVjdCB3aXBoeSAqd2lwaHksIHUxNiBjZW50ZXJfZnJlcSlcXG4gMjgyOlxcdHtcXG4gMjgzOlxcdFxcdHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2g7XFxuIDI4NDpcXHRcXG4gMjg1OlxcdFxcdGNoID0gaWVlZTgwMjExX2dldF9jaGFubmVsKHdpcGh5LCBjZW50ZXJfZnJlcSk7XFxuIDI4NjpcXHRcXHRpZiAoIWNoKVxcbiAyODc6XFx0XFx0XFx0cmV0dXJuO1xcbiAyODg6XFx0XFxuIDI4OTpcXHRcXHRhdGhfZm9yY2VfY2xlYXJfbm9faXJfY2hhbih3aXBoeSwgY2gpO1xcbiAyOTA6XFx0fVxcbiAyOTE6XFx0XFxuIDI5MjpcXHRzdGF0aWMgdm9pZCBhdGhfZm9yY2Vfbm9faXJfY2hhbihzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoKVxcbiAyOTM6XFx0e1xcbiAyOTQ6XFx0XFx0Y2gtXFx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9DSEFOX05PX0lSO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxMTo0NjoxNS44MTAxMTU0OTFaIiwiU2VxIjo1NSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6ODYyMTQxNjE1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipLTVNBTiBBc3Nlc3NtZW50OiBObyBDb25jZXJucyBIZXJlKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBUaGlzIHBhdGNoIGlzIGVzc2VudGlhbGx5IHJlZmluaW5nIGhvdyB3ZSBkZWZpbmUgcmVndWxhdG9yeSBydWxlcyBmb3IgdGhlIDUgR0h6IGJhbmQuIFNwZWNpZmljYWxseSwgaXQncyBzcGxpdHRpbmcgYSBzaW5nbGUgcnVsZSBpbnRvIHR3byBzdWItcmFuZ2VzOiA1MTUwLTUyNDAgTUh6ICh3aXRob3V0IE5PX0lSKSBhbmQgNTI2MC01MzUwIE1IeiAod2l0aCBOT19JUikuIFRoZSBjcnVjaWFsIHBhcnQgaXMgdGhhdCBpdCB1cGRhdGVzIHRoZSBgbl9yZWdfcnVsZXNgIGNvdW50cyBpbiB0aGUgc3RhdGljIGBpZWVlODAyMTFfcmVnZG9tYWluYCB0YWJsZXMgdG8gcmVmbGVjdCB0aGlzIGNoYW5nZS5cblxuTm93LCBsZXQncyBtZXRpY3Vsb3VzbHkgdmVyaWZ5IHRoaXMuIEkgbmVlZCB0byBtYWtlIGFic29sdXRlbHkgc3VyZSB0aGVyZSBhcmVuJ3QgYW55IHNuZWFreSBpc3N1ZXMuIEknbSBnb2luZyB0aHJvdWdoIHRoZSBtYWNybyBleHBhbnNpb25zIGZvciBgQVRIXzJHSFpfQUxMYCBhbmQgYEFUSF81R0haX0FMTGAgdG8gZW5zdXJlIHRoZSBydWxlIGNvdW50cyBhcmUgY29ycmVjdCBhZnRlciB0aGUgc3BsaXQgYW5kIHVwZGF0aW5nIHRoZSB2YXJpb3VzIGBhdGhfd29ybGRfcmVnZG9tXypgIHN0cnVjdHVyZXMsIGNvbmZpcm1pbmcgdGhhdCB0aGUgYC5uX3JlZ19ydWxlc2AgZmllbGQgY29ycmVjdGx5IHJlZmxlY3RzIHRoZSBzdW0gb2YgaXRzIGNvbnN0aXR1ZW50cy4gSSdtIGNvbmZpcm1pbmcgdGhpbmdzIGxpa2UgYGF0aF93b3JsZF9yZWdkb21fNjBfNjFfNjJgIGhhdmluZyA2IHJ1bGVzICgzIGZvciAyR0h6LCAzIGZvciA1R0h6KSBhbmQgc28gb24uIEFsbCB0aGVzZSBhcmUgc3RhdGljIGNvbnN0YW50IHJlZ3VsYXRvcnkgdGFibGVzLlxuXG5NeSBhbmFseXNpcyBib2lscyBkb3duIHRvIHRoaXM6IGFyZSB0aGVyZSBhbnkgcmlza3Mgb2YgS01TQU4gZmluZGluZyB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciBsZWFrcyB0byB1c2Vyc3BhY2U/IFRoZSBhbnN3ZXIgaXMgYSBjbGVhciBcIm5vXCIuIFRoZXJlJ3Mgbm8gZHluYW1pYyBtZW1vcnkgYWxsb2NhdGlvbiwgc28gbm8gY2hhbmNlIG9mIHVuaW5pdGlhbGl6ZWQgaGVhcCBkYXRhLiBUaGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIGFuZCBjZXJ0YWlubHkgbm8gY29weS10by11c2VyIG9mIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGUgY29kZSBpcyBvbmx5IG1vZGlmeWluZyBzdGF0aWMgY29uc3QgZGF0YSBzdHJ1Y3R1cmVzIHRoYXQgYXJlIGZ1bGx5IGluaXRpYWxpemVkIGF0IGNvbXBpbGUgdGltZS5cblxuV2UgbmVlZCB0byBiZSBzdXJlLiBMZXQncyBydW4gZG93biB0aGUgY2hlY2tsaXN0LlxuKiAgIERvZXMgaXQgaW50cm9kdWNlIG9yIG1vZGlmeSBrZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2Ugd2hlcmUgZmllbGRzL3BhZGRpbmcgbWlnaHQgbm90IGJlIGluaXRpYWxpemVkPyBOby5cbiogICBEb2VzIGl0IGludHJvZHVjZSBjb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgZGVwZW5kaW5nIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzPyBOby5cbiogICBEb2VzIGl0IGFsbG9jYXRlIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzIGNvdWxkIGJlIHJlYWQ/IE5vLlxuKiAgIERvZXMgaXQgbW9kaWZ5IGJvdW5kcyBjaGVja3MvbGVuZ3RocyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcyB1bmluaXRpYWxpemVkIGJ5dGVzPyBOby5cblxuS0FTQU4sIG91ciBzdGFuZGFyZCBtZW1vcnkgYm91bmRzIGNoZWNrZXIsIHdpbGwgY2F0Y2ggYW55IG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzZXMgaWYgdGhlcmUgd2VyZSBhbnkgaXNzdWVzIHdpdGggdGhlIHVwZGF0ZWQgY291bnRzLiBCdXQgS01TQU4sIHdoaWNoIHRhcmdldHMgdW5pbml0aWFsaXplZCByZWFkcywgaXMgc2ltcGx5IG5vdCBhcHBsaWNhYmxlIGhlcmUuXG5cbktNU0FOIGRldGVjdHMgcmVhZHMgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgYW5kIGxlYWtzIG9mIHVuaW5pdGlhbGl6ZWQgZGF0YSB0byB1c2VyIHNwYWNlLiBUaGlzIHBhdGNoIHNvbGVseSBkZWFscyB3aXRoIGNvbXBpbGUtdGltZSBjb25zdGFudCByZWd1bGF0b3J5IGRvbWFpbiBydWxlcy4gVGhlcmUncyBubyBkeW5hbWljIGFsbG9jYXRpb24gb3Igc3RhY2stYWxsb2NhdGVkIG1lbW9yeSBhbmQgbm8gdW5pbml0aWFsaXplZCBmaWVsZHMgb3IgYnVmZmVycyBhcmUgY3JlYXRlZCBvciBhY2Nlc3NlZC5cblxuVGhlcmVmb3JlLCBgTmVlZHNLTVNBTmAgc2hvdWxkIGJlIGZhbHNlLiBObyBmdXJ0aGVyIGludmVzdGlnYXRpb24gb3IgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgaXMgbmVjZXNzYXJ5LiBUaGlzIGlzIGEgY2xlYW4sIHNhZmUsIGFuZCBzdHJhaWdodGZvcndhcmQgdXBkYXRlIHRvIHRoZSByZWd1bGF0b3J5IGRvbWFpbiBkZWZpbml0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE1MTAsIk91dHB1dFRva2VucyI6MjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAxOCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDExOjQ2OjI0LjQzMTUzNDgyNVoiLCJTZXEiOjU2LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3OTkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgc3RhdGljIGNvbnN0YW50IHJlZ3VsYXRvcnkgZG9tYWluIGRlZmluaXRpb25zIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jYC4gU3BlY2lmaWNhbGx5LCBpdCBzcGxpdHMgdGhlIGBBVEhfNUdIWl81MTUwXzUzNTBgIG1hY3JvIGludG8gdHdvIHNlcGFyYXRlIHJlZ3VsYXRvcnkgcnVsZXMgKDUxNTAtNTI0MCBNSHogYW5kIDUyNjAtNTM1MCBNSHopIGFuZCBhZGp1c3RzIHRoZSBgbl9yZWdfcnVsZXNgIGZpZWxkIGluIHNldmVyYWwgc3RhdGljIGNvbnN0IGBzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbmAgaW5zdGFuY2VzIGFjY29yZGluZ2x5LlxcblxcbkFsbCBhZmZlY3RlZCBkYXRhIHN0cnVjdHVyZXMgYXJlIGNvbXBpbGUtdGltZSBjb25zdGFudCB0YWJsZXMgd2l0aCBmdWxseSBpbml0aWFsaXplZCBmaWVsZHMuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IGR5bmFtaWMgb3Igc3RhY2sgYWxsb2NhdGlvbnMsIGRvZXMgbm90IG1vZGlmeSBhbnkgYnVmZmVycyBvciBwYWRkaW5nIGNvcGllZCB0byB1c2Vyc3BhY2UsIGFuZCBpbnRyb2R1Y2VzIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLiBJZiBhbnkgYXJyYXkgaW5kZXhpbmcgb3IgcnVsZSBjb3VudCBtaXNtYXRjaGVzIHdlcmUgdG8gb2NjdXIsIHRoZXkgd291bGQgYmUgYm91bmRzIHZpb2xhdGlvbnMgZGV0ZWN0YWJsZSBieSBzdGFuZGFyZCBLQVNBTi4gVGhlcmVmb3JlLCB0aGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgdGhhdCB3YXJyYW50IGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbi5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBzdGF0aWMgY29uc3RhbnQgcmVndWxhdG9yeSBkb21haW4gZGVmaW5pdGlvbnMgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmNgLiBTcGVjaWZpY2FsbHksIGl0IHNwbGl0cyB0aGUgYEFUSF81R0haXzUxNTBfNTM1MGAgbWFjcm8gaW50byB0d28gc2VwYXJhdGUgcmVndWxhdG9yeSBydWxlcyAoNTE1MC01MjQwIE1IeiBhbmQgNTI2MC01MzUwIE1IeikgYW5kIGFkanVzdHMgdGhlIGBuX3JlZ19ydWxlc2AgZmllbGQgaW4gc2V2ZXJhbCBzdGF0aWMgY29uc3QgYHN0cnVjdCBpZWVlODAyMTFfcmVnZG9tYWluYCBpbnN0YW5jZXMgYWNjb3JkaW5nbHkuXFxuXFxuQWxsIGFmZmVjdGVkIGRhdGEgc3RydWN0dXJlcyBhcmUgY29tcGlsZS10aW1lIGNvbnN0YW50IHRhYmxlcyB3aXRoIGZ1bGx5IGluaXRpYWxpemVkIGZpZWxkcy4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgZHluYW1pYyBvciBzdGFjayBhbGxvY2F0aW9ucywgZG9lcyBub3QgbW9kaWZ5IGFueSBidWZmZXJzIG9yIHBhZGRpbmcgY29waWVkIHRvIHVzZXJzcGFjZSwgYW5kIGludHJvZHVjZXMgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMuIElmIGFueSBhcnJheSBpbmRleGluZyBvciBydWxlIGNvdW50IG1pc21hdGNoZXMgd2VyZSB0byBvY2N1ciwgdGhleSB3b3VsZCBiZSBib3VuZHMgdmlvbGF0aW9ucyBkZXRlY3RhYmxlIGJ5IHN0YW5kYXJkIEtBU0FOLiBUaGVyZWZvcmUsIHRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyB0aGF0IHdhcnJhbnQgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowvt6vm[1] Phase: Succeeded StartedAt: 2026-09-05 11:46:35 +0000 UTC FinishedAt: 2026-09-05 11:46:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvt6vm[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-09-05 11:46:35 +0000 UTC FinishedAt: 2026-09-05 11:46:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvt6vm[2] Phase: Running StartedAt: 2026-09-05 11:46:35 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvt6vm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH_COMMON","ATH9K_HTC","CARL9170","CFG80211","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath_regd_init","ath_regd_init_wiphy","ath_world_regdomain","ath_default_world_regdomain","ath_reg_notifier_apply"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH_COMMON","ATH9K_HTC","CARL9170","CFG80211","MAC80211","USB"],"series_id":"764cfd86-7f28-4073-a0cc-0e241ce5a697","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN) Phase: Running StartedAt: 2026-09-05 11:46:35 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +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":["ATH_COMMON","ATH9K_HTC","CARL9170","CFG80211","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath_regd_init","ath_regd_init_wiphy","ath_world_regdomain","ath_default_world_regdomain","ath_reg_notifier_apply"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH_COMMON","ATH9K_HTC","CARL9170","CFG80211","MAC80211","USB"],"series_id":"764cfd86-7f28-4073-a0cc-0e241ce5a697","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-workflowvt6vm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH_COMMON","ATH9K_HTC","CARL9170","CFG80211","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath_regd_init","ath_regd_init_wiphy","ath_world_regdomain","ath_default_world_regdomain","ath_reg_notifier_apply"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH_COMMON","ATH9K_HTC","CARL9170","CFG80211","MAC80211","USB"],"series_id":"764cfd86-7f28-4073-a0cc-0e241ce5a697","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-05 11:46:35 +0000 UTC FinishedAt: 2026-09-05 11:46:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvt6vm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH_COMMON","ATH9K_HTC","CARL9170","CFG80211","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath_regd_init","ath_regd_init_wiphy","ath_world_regdomain","ath_default_world_regdomain","ath_reg_notifier_apply"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH_COMMON","ATH9K_HTC","CARL9170","CFG80211","MAC80211","USB"],"series_id":"764cfd86-7f28-4073-a0cc-0e241ce5a697","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-05 11:46:35 +0000 UTC FinishedAt: 2026-09-05 11:46:40 +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":["ATH_COMMON","ATH9K_HTC","CARL9170","CFG80211","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvt6vm/series-workflowvt6vm-convert-artifact-2648038674/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvt6vm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH_COMMON","ATH9K_HTC","CARL9170","CFG80211","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath_regd_init","ath_regd_init_wiphy","ath_world_regdomain","ath_default_world_regdomain","ath_reg_notifier_apply"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH_COMMON","ATH9K_HTC","CARL9170","CFG80211","MAC80211","USB"],"series_id":"764cfd86-7f28-4073-a0cc-0e241ce5a697","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-05 11:46:45 +0000 UTC FinishedAt: 2026-09-05 12:03:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvt6vm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH_COMMON","ATH9K_HTC","CARL9170","CFG80211","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath_regd_init","ath_regd_init_wiphy","ath_world_regdomain","ath_default_world_regdomain","ath_reg_notifier_apply"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH_COMMON","ATH9K_HTC","CARL9170","CFG80211","MAC80211","USB"],"series_id":"764cfd86-7f28-4073-a0cc-0e241ce5a697","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-05 11:46:45 +0000 UTC FinishedAt: 2026-09-05 12:03:08 +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:*884b0154-7e40-489d-9546-e77d6c08178c,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-workflowvt6vm/series-workflowvt6vm-convert-artifact-2648038674/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": "adfe897c-09b9-46e8-b53a-f8db42be237d", "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-workflowvt6vm/series-workflowvt6vm-build-action-770727568/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvt6vm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH_COMMON","ATH9K_HTC","CARL9170","CFG80211","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath_regd_init","ath_regd_init_wiphy","ath_world_regdomain","ath_default_world_regdomain","ath_reg_notifier_apply"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH_COMMON","ATH9K_HTC","CARL9170","CFG80211","MAC80211","USB"],"series_id":"764cfd86-7f28-4073-a0cc-0e241ce5a697","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-05 11:46:45 +0000 UTC FinishedAt: 2026-09-05 12:02:58 +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:*884b0154-7e40-489d-9546-e77d6c08178c,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-workflowvt6vm/series-workflowvt6vm-convert-artifact-2648038674/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": "adfe897c-09b9-46e8-b53a-f8db42be237d", "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-workflowvt6vm/series-workflowvt6vm-build-action-770727568/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvt6vm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH_COMMON","ATH9K_HTC","CARL9170","CFG80211","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath_regd_init","ath_regd_init_wiphy","ath_world_regdomain","ath_default_world_regdomain","ath_reg_notifier_apply"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH_COMMON","ATH9K_HTC","CARL9170","CFG80211","MAC80211","USB"],"series_id":"764cfd86-7f28-4073-a0cc-0e241ce5a697","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-05 12:03:08 +0000 UTC FinishedAt: 2026-09-05 12:03:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvt6vm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH_COMMON","ATH9K_HTC","CARL9170","CFG80211","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath_regd_init","ath_regd_init_wiphy","ath_world_regdomain","ath_default_world_regdomain","ath_reg_notifier_apply"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH_COMMON","ATH9K_HTC","CARL9170","CFG80211","MAC80211","USB"],"series_id":"764cfd86-7f28-4073-a0cc-0e241ce5a697","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-05 12:03:08 +0000 UTC FinishedAt: 2026-09-05 12:03:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvt6vm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH_COMMON","ATH9K_HTC","CARL9170","CFG80211","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath_regd_init","ath_regd_init_wiphy","ath_world_regdomain","ath_default_world_regdomain","ath_reg_notifier_apply"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH_COMMON","ATH9K_HTC","CARL9170","CFG80211","MAC80211","USB"],"series_id":"764cfd86-7f28-4073-a0cc-0e241ce5a697","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-05 12:03:08 +0000 UTC FinishedAt: 2026-09-05 12:03:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvt6vm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH_COMMON","ATH9K_HTC","CARL9170","CFG80211","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath_regd_init","ath_regd_init_wiphy","ath_world_regdomain","ath_default_world_regdomain","ath_reg_notifier_apply"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH_COMMON","ATH9K_HTC","CARL9170","CFG80211","MAC80211","USB"],"series_id":"764cfd86-7f28-4073-a0cc-0e241ce5a697","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-05 12:03:08 +0000 UTC FinishedAt: 2026-09-05 12:03:13 +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":["ATH_COMMON","ATH9K_HTC","CARL9170","CFG80211","MAC80211","USB"],"series_id":"764cfd86-7f28-4073-a0cc-0e241ce5a697","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-workflowvt6vm/series-workflowvt6vm-convert-artifact-1814473517/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvt6vm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH_COMMON","ATH9K_HTC","CARL9170","CFG80211","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath_regd_init","ath_regd_init_wiphy","ath_world_regdomain","ath_default_world_regdomain","ath_reg_notifier_apply"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH_COMMON","ATH9K_HTC","CARL9170","CFG80211","MAC80211","USB"],"series_id":"764cfd86-7f28-4073-a0cc-0e241ce5a697","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-05 12:03:18 +0000 UTC FinishedAt: 2026-09-05 12:05:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvt6vm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH_COMMON","ATH9K_HTC","CARL9170","CFG80211","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath_regd_init","ath_regd_init_wiphy","ath_world_regdomain","ath_default_world_regdomain","ath_reg_notifier_apply"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH_COMMON","ATH9K_HTC","CARL9170","CFG80211","MAC80211","USB"],"series_id":"764cfd86-7f28-4073-a0cc-0e241ce5a697","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-05 12:03:18 +0000 UTC FinishedAt: 2026-09-05 12:05:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*adfe897c-09b9-46e8-b53a-f8db42be237d,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-workflowvt6vm/series-workflowvt6vm-build-action-770727568/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-workflowvt6vm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH_COMMON","ATH9K_HTC","CARL9170","CFG80211","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath_regd_init","ath_regd_init_wiphy","ath_world_regdomain","ath_default_world_regdomain","ath_reg_notifier_apply"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH_COMMON","ATH9K_HTC","CARL9170","CFG80211","MAC80211","USB"],"series_id":"764cfd86-7f28-4073-a0cc-0e241ce5a697","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-05 12:05:21 +0000 UTC FinishedAt: 2026-09-05 12:05:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvt6vm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH_COMMON","ATH9K_HTC","CARL9170","CFG80211","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath_regd_init","ath_regd_init_wiphy","ath_world_regdomain","ath_default_world_regdomain","ath_reg_notifier_apply"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH_COMMON","ATH9K_HTC","CARL9170","CFG80211","MAC80211","USB"],"series_id":"764cfd86-7f28-4073-a0cc-0e241ce5a697","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-05 12:05:21 +0000 UTC FinishedAt: 2026-09-05 12:05:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvt6vm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH_COMMON","ATH9K_HTC","CARL9170","CFG80211","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath_regd_init","ath_regd_init_wiphy","ath_world_regdomain","ath_default_world_regdomain","ath_reg_notifier_apply"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH_COMMON","ATH9K_HTC","CARL9170","CFG80211","MAC80211","USB"],"series_id":"764cfd86-7f28-4073-a0cc-0e241ce5a697","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-05 12:05:21 +0000 UTC FinishedAt: 2026-09-05 12:22:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvt6vm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH_COMMON","ATH9K_HTC","CARL9170","CFG80211","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath_regd_init","ath_regd_init_wiphy","ath_world_regdomain","ath_default_world_regdomain","ath_reg_notifier_apply"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH_COMMON","ATH9K_HTC","CARL9170","CFG80211","MAC80211","USB"],"series_id":"764cfd86-7f28-4073-a0cc-0e241ce5a697","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-05 12:05:21 +0000 UTC FinishedAt: 2026-09-05 12:22:28 +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:*884b0154-7e40-489d-9546-e77d6c08178c,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-workflowvt6vm/series-workflowvt6vm-convert-artifact-1814473517/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": "76471b2d-0327-44c9-be84-8ae6f071b268", "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-workflowvt6vm/series-workflowvt6vm-build-action-1567289225/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvt6vm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH_COMMON","ATH9K_HTC","CARL9170","CFG80211","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath_regd_init","ath_regd_init_wiphy","ath_world_regdomain","ath_default_world_regdomain","ath_reg_notifier_apply"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH_COMMON","ATH9K_HTC","CARL9170","CFG80211","MAC80211","USB"],"series_id":"764cfd86-7f28-4073-a0cc-0e241ce5a697","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-05 12:05:21 +0000 UTC FinishedAt: 2026-09-05 12:22:18 +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:*884b0154-7e40-489d-9546-e77d6c08178c,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-workflowvt6vm/series-workflowvt6vm-convert-artifact-1814473517/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": "76471b2d-0327-44c9-be84-8ae6f071b268", "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-workflowvt6vm/series-workflowvt6vm-build-action-1567289225/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvt6vm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH_COMMON","ATH9K_HTC","CARL9170","CFG80211","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath_regd_init","ath_regd_init_wiphy","ath_world_regdomain","ath_default_world_regdomain","ath_reg_notifier_apply"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH_COMMON","ATH9K_HTC","CARL9170","CFG80211","MAC80211","USB"],"series_id":"764cfd86-7f28-4073-a0cc-0e241ce5a697","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-05 12:22:28 +0000 UTC FinishedAt: 2026-09-05 12:22:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvt6vm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH_COMMON","ATH9K_HTC","CARL9170","CFG80211","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath_regd_init","ath_regd_init_wiphy","ath_world_regdomain","ath_default_world_regdomain","ath_reg_notifier_apply"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH_COMMON","ATH9K_HTC","CARL9170","CFG80211","MAC80211","USB"],"series_id":"764cfd86-7f28-4073-a0cc-0e241ce5a697","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-05 12:22:28 +0000 UTC FinishedAt: 2026-09-05 12:22:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvt6vm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH_COMMON","ATH9K_HTC","CARL9170","CFG80211","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath_regd_init","ath_regd_init_wiphy","ath_world_regdomain","ath_default_world_regdomain","ath_reg_notifier_apply"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH_COMMON","ATH9K_HTC","CARL9170","CFG80211","MAC80211","USB"],"series_id":"764cfd86-7f28-4073-a0cc-0e241ce5a697","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: Running StartedAt: 2026-09-05 12:22:28 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvt6vm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH_COMMON","ATH9K_HTC","CARL9170","CFG80211","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath_regd_init","ath_regd_init_wiphy","ath_world_regdomain","ath_default_world_regdomain","ath_reg_notifier_apply"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH_COMMON","ATH9K_HTC","CARL9170","CFG80211","MAC80211","USB"],"series_id":"764cfd86-7f28-4073-a0cc-0e241ce5a697","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: Running StartedAt: 2026-09-05 12:22:28 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +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:*76471b2d-0327-44c9-be84-8ae6f071b268,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-workflowvt6vm/series-workflowvt6vm-build-action-1567289225/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil