Name: series-workflow9jrxh Phase: Succeeded StartedAt: 2026-09-08 17:08:10 +0000 UTC FinishedAt: 2026-09-08 21:24:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jrxh[0] Phase: Succeeded StartedAt: 2026-09-08 17:08:10 +0000 UTC FinishedAt: 2026-09-08 17:44:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jrxh[0].run-triage Phase: Succeeded StartedAt: 2026-09-08 17:08:10 +0000 UTC FinishedAt: 2026-09-08 17:44:33 +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": [ "MAC80211", "CFG80211" ], "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": [ "MAC80211", "CFG80211" ], "series_id": "96df9d93-a1b2-45ce-b2db-73e7ee806aae" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ieee80211_next_txq", "ieee80211_txq_schedule_start" ], "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+CgkJCTx0ZD4yMDI2LzA5LzA4IDE3OjQyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O0NGRzgwMjExJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aWVlZTgwMjExX25leHRfdHhxJiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV90eHFfc2NoZWR1bGVfc3RhcnQmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgYm9vbGVhbiBmaWVsZCBgc2NoZWR1bGVfb3BlbmAgdG8gYHN0cnVjdCBpZWVlODAyMTFfbG9jYWxgIHRvIGRlY291cGxlIHRoZSBzY2hlZHVsaW5nIG9wZW4vY2xvc2VkIHN0YXRlIGZyb20gdGhlIGBzY2hlZHVsZV9yb3VuZGAgY291bnRlciBpbiBtYWM4MDIxMSYjMzk7cyBUWCBxdWV1ZSBzY2hlZHVsaW5nIGxvZ2ljLlxuXG4tIGBzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsYCBpcyBhbGxvY2F0ZWQgdmlhIGBremFsbG9jKClgIGR1cmluZyB3aXBoeSByZWdpc3RyYXRpb24sIGVuc3VyaW5nIGFsbCBmaWVsZHMgaW5jbHVkaW5nIGBzY2hlZHVsZV9vcGVuYCBhcmUgemVyby1pbml0aWFsaXplZC5cbi0gVGhlIG5ldyBmaWVsZCBpcyBvbmx5IHVzZWQgaW50ZXJuYWxseSB3aXRoaW4gYG5ldC9tYWM4MDIxMS90eC5jYCBmb3IgVFggcXVldWUgc2NoZWR1bGluZyBjb250cm9sIGZsb3cgYW5kIGlzIG5ldmVyIGNvcGllZCB0byB1c2VyIHNwYWNlIG9yIHVzZWQgaW4gYW4gdW5pbml0aWFsaXplZCBzdGF0ZS5cbi0gTm8gbmV3IGJ1ZmZlcnMsIHN0YWNrIG9iamVjdHMsIG5ldGxpbmsgYXR0cmlidXRlcywgaW9jdGxzLCBvciB1c2VyLXNwYWNlIGNvcGllcyBhcmUgaW50cm9kdWNlZCBvciBtb2RpZmllZC5cblxuQ29uc2VxdWVudGx5LCB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGluZm9ybWF0aW9uIGxlYWtzLCBhbmQgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB0cmFuc21pdCBxdWV1ZSBzY2hlZHVsaW5nIGxvZ2ljIGluIG1hYzgwMjExIChuZXQvbWFjODAyMTEvdHguYyksIGRlY291cGxpbmcgcXVldWUgc2NoZWR1bGUgb3BlbiBzdGF0ZSB0cmFja2luZyBmcm9tIHRoZSBzY2hlZHVsZSByb3VuZCBjb3VudGVyLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGFuZCBleGVjdXRhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB1c2luZyB2aXJ0dWFsIHdpcmVsZXNzIGRyaXZlcnMgKHN1Y2ggYXMgbWFjODAyMTFfaHdzaW0pIGFuZCBzdGFuZGFyZCB3aXJlbGVzcyBuZXRsaW5rL3BhY2tldCBpbnRlcmZhY2VzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDE3OjQyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYzdiZmYxYjI0NTM0MjYzNmZmYzA1YjVkYTM3NGJkODNkYTIwMTI3NFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgU2VwIDggMTc6NDI6NTEgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmggYi9uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaFxuaW5kZXggNTNiMGIwOGQzNDU5Ny4uNjUzMTEzNDBkYjQwNiAxMDA2NDRcbi0tLSBhL25ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaFxuQEAgLTE0NjgsNiAmIzQzOzE0NjgsNyBAQCBzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsIHtcbiBcdHNwaW5sb2NrX3QgYWN0aXZlX3R4cV9sb2NrW0lFRUU4MDIxMV9OVU1fQUNTXTtcbiBcdHN0cnVjdCBsaXN0X2hlYWQgYWN0aXZlX3R4cXNbSUVFRTgwMjExX05VTV9BQ1NdO1xuIFx0dTE2IHNjaGVkdWxlX3JvdW5kW0lFRUU4MDIxMV9OVU1fQUNTXTtcbiYjNDM7XHRib29sIHNjaGVkdWxlX29wZW5bSUVFRTgwMjExX05VTV9BQ1NdO1xuIFxuIFx0Lyogc2VyaWFsaXplcyBpZWVlODAyMTFfaGFuZGxlX3dha2VfdHhfcXVldWUgKi9cbiBcdHNwaW5sb2NrX3QgaGFuZGxlX3dha2VfdHhfcXVldWVfbG9jaztcbmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvdHguYyBiL25ldC9tYWM4MDIxMS90eC5jXG5pbmRleCBjMzMwOTI5NjBkZjI2Li5jNjY1Y2VkOWMwNWNiIDEwMDY0NFxuLS0tIGEvbmV0L21hYzgwMjExL3R4LmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9tYWM4MDIxMS90eC5jXG5AQCAtNDEyMiw3ICYjNDM7NDEyMiw3IEBAIHN0cnVjdCBpZWVlODAyMTFfdHhxICppZWVlODAyMTFfbmV4dF90eHEoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHU4IGFjKVxuIFxuIFx0c3Bpbl9sb2NrX2JoKFx1MDAyNmxvY2FsLVx1MDAzZWFjdGl2ZV90eHFfbG9ja1thY10pO1xuIFxuLVx0aWYgKCFsb2NhbC1cdTAwM2VzY2hlZHVsZV9yb3VuZFthY10pXG4mIzQzO1x0aWYgKCFsb2NhbC1cdTAwM2VzY2hlZHVsZV9vcGVuW2FjXSlcbiBcdFx0Z290byBvdXQ7XG4gXG4gIGJlZ2luOlxuQEAgLTQzNDcsMTIgJiM0Mzs0MzQ3LDEyIEBAIHZvaWQgaWVlZTgwMjExX3R4cV9zY2hlZHVsZV9zdGFydChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgdTggYWMpXG4gXG4gXHRzcGluX2xvY2tfYmgoXHUwMDI2bG9jYWwtXHUwMDNlYWN0aXZlX3R4cV9sb2NrW2FjXSk7XG4gXG4tXHRpZiAoaWVlZTgwMjExX3R4cV9zY2hlZHVsZV9haXJ0aW1lX2NoZWNrKGxvY2FsLCBhYykpIHtcbiYjNDM7XHRsb2NhbC1cdTAwM2VzY2hlZHVsZV9vcGVuW2FjXSA9XG4mIzQzO1x0XHRpZWVlODAyMTFfdHhxX3NjaGVkdWxlX2FpcnRpbWVfY2hlY2sobG9jYWwsIGFjKTtcbiYjNDM7XHRpZiAobG9jYWwtXHUwMDNlc2NoZWR1bGVfb3BlblthY10pIHtcbiBcdFx0bG9jYWwtXHUwMDNlc2NoZWR1bGVfcm91bmRbYWNdJiM0MzsmIzQzOztcbiBcdFx0aWYgKCFsb2NhbC1cdTAwM2VzY2hlZHVsZV9yb3VuZFthY10pXG4gXHRcdFx0bG9jYWwtXHUwMDNlc2NoZWR1bGVfcm91bmRbYWNdJiM0MzsmIzQzOztcbi1cdH0gZWxzZSB7XG4tXHRcdGxvY2FsLVx1MDAzZXNjaGVkdWxlX3JvdW5kW2FjXSA9IDA7XG4gXHR9XG4gXG4gXHRzcGluX3VubG9ja19iaChcdTAwMjZsb2NhbC1cdTAwM2VhY3RpdmVfdHhxX2xvY2tbYWNdKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxNzo0MjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtDRkc4MDIxMSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2llZWU4MDIxMV9uZXh0X3R4cSYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfdHhxX3NjaGVkdWxlX3N0YXJ0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB0cmFuc21pdCBxdWV1ZSBzY2hlZHVsaW5nIGxvZ2ljIGluIG1hYzgwMjExIChuZXQvbWFjODAyMTEvdHguYyksIGRlY291cGxpbmcgcXVldWUgc2NoZWR1bGUgb3BlbiBzdGF0ZSB0cmFja2luZyBmcm9tIHRoZSBzY2hlZHVsZSByb3VuZCBjb3VudGVyLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGFuZCBleGVjdXRhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB1c2luZyB2aXJ0dWFsIHdpcmVsZXNzIGRyaXZlcnMgKHN1Y2ggYXMgbWFjODAyMTFfaHdzaW0pIGFuZCBzdGFuZGFyZCB3aXJlbGVzcyBuZXRsaW5rL3BhY2tldCBpbnRlcmZhY2VzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYzdiZmYxYjI0NTM0MjYzNmZmYzA1YjVkYTM3NGJkODNkYTIwMTI3NApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgU2VwIDggMTc6NDI6NTEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaCBiL25ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oCmluZGV4IDUzYjBiMDhkMzQ1OTcuLjY1MzExMzQwZGI0MDYgMTAwNjQ0Ci0tLSBhL25ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oCkBAIC0xNDY4LDYgJiM0MzsxNDY4LDcgQEAgc3RydWN0IGllZWU4MDIxMV9sb2NhbCB7CiAJc3BpbmxvY2tfdCBhY3RpdmVfdHhxX2xvY2tbSUVFRTgwMjExX05VTV9BQ1NdOwogCXN0cnVjdCBsaXN0X2hlYWQgYWN0aXZlX3R4cXNbSUVFRTgwMjExX05VTV9BQ1NdOwogCXUxNiBzY2hlZHVsZV9yb3VuZFtJRUVFODAyMTFfTlVNX0FDU107CiYjNDM7CWJvb2wgc2NoZWR1bGVfb3BlbltJRUVFODAyMTFfTlVNX0FDU107CiAKIAkvKiBzZXJpYWxpemVzIGllZWU4MDIxMV9oYW5kbGVfd2FrZV90eF9xdWV1ZSAqLwogCXNwaW5sb2NrX3QgaGFuZGxlX3dha2VfdHhfcXVldWVfbG9jazsKZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS90eC5jIGIvbmV0L21hYzgwMjExL3R4LmMKaW5kZXggYzMzMDkyOTYwZGYyNi4uYzY2NWNlZDljMDVjYiAxMDA2NDQKLS0tIGEvbmV0L21hYzgwMjExL3R4LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L21hYzgwMjExL3R4LmMKQEAgLTQxMjIsNyAmIzQzOzQxMjIsNyBAQCBzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqaWVlZTgwMjExX25leHRfdHhxKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCB1OCBhYykKIAogCXNwaW5fbG9ja19iaCgmYW1wO2xvY2FsLSZndDthY3RpdmVfdHhxX2xvY2tbYWNdKTsKIAotCWlmICghbG9jYWwtJmd0O3NjaGVkdWxlX3JvdW5kW2FjXSkKJiM0MzsJaWYgKCFsb2NhbC0mZ3Q7c2NoZWR1bGVfb3BlblthY10pCiAJCWdvdG8gb3V0OwogCiAgYmVnaW46CkBAIC00MzQ3LDEyICYjNDM7NDM0NywxMiBAQCB2b2lkIGllZWU4MDIxMV90eHFfc2NoZWR1bGVfc3RhcnQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHU4IGFjKQogCiAJc3Bpbl9sb2NrX2JoKCZhbXA7bG9jYWwtJmd0O2FjdGl2ZV90eHFfbG9ja1thY10pOwogCi0JaWYgKGllZWU4MDIxMV90eHFfc2NoZWR1bGVfYWlydGltZV9jaGVjayhsb2NhbCwgYWMpKSB7CiYjNDM7CWxvY2FsLSZndDtzY2hlZHVsZV9vcGVuW2FjXSA9CiYjNDM7CQlpZWVlODAyMTFfdHhxX3NjaGVkdWxlX2FpcnRpbWVfY2hlY2sobG9jYWwsIGFjKTsKJiM0MzsJaWYgKGxvY2FsLSZndDtzY2hlZHVsZV9vcGVuW2FjXSkgewogCQlsb2NhbC0mZ3Q7c2NoZWR1bGVfcm91bmRbYWNdJiM0MzsmIzQzOzsKIAkJaWYgKCFsb2NhbC0mZ3Q7c2NoZWR1bGVfcm91bmRbYWNdKQogCQkJbG9jYWwtJmd0O3NjaGVkdWxlX3JvdW5kW2FjXSYjNDM7JiM0Mzs7Ci0JfSBlbHNlIHsKLQkJbG9jYWwtJmd0O3NjaGVkdWxlX3JvdW5kW2FjXSA9IDA7CiAJfQogCiAJc3Bpbl91bmxvY2tfYmgoJmFtcDtsb2NhbC0mZ3Q7YWN0aXZlX3R4cV9sb2NrW2FjXSk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDE3OjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzOTkKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAxOTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaCBmb3IgUG90ZW50aWFsIElzc3VlcyoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIFRoZSBmaXJzdCB0aGluZyBJJiMzOTttIGRvaW5nIGlzIGdldHRpbmcgYSBmZWVsIGZvciB0aGUgc2NvcGUuIFRoaXMgcGF0Y2ggaGl0cyBgbmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmhgIGFuZCBgbmV0L21hYzgwMjExL3R4LmNgLCBzbyBpdCYjMzk7cyBwcm9iYWJseSByZWxhdGVkIHRvIDgwMi4xMSB3aXJlbGVzcyB0cmFuc21pc3Npb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgYmVpbmcgY2hhbmdlZCBhbmQgd2hldGhlciBpdCBpbnRyb2R1Y2VzIGFueXRoaW5nIHByb2JsZW1hdGljLgoKSSYjMzk7bSB6ZXJvaW5nIGluIG9uIGBuZXQvbWFjODAyMTEvdHguY2AsIHBhcnRpY3VsYXJseSBhcm91bmQgbGluZXMgNDEyMiBhbmQgNDM0Ny4gSSB3YW50IHRvIHNlZSB3aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBtaWdodCBhZmZlY3QgdGhpcyBjb2RlLCB3aGF0IGZ1bmN0aW9ucyBhcmUgY2FsbGVkLCBhbmQgaG93IGRlZXBseSB0aGlzIG1vZGlmaWNhdGlvbiBnb2VzLiBDcml0aWNhbGx5LCBJIGhhdmUgdG8gY29uc2lkZXIgd2hldGhlciB0aGlzIGFyZWEgaXMgcmVhY2hhYmxlIHdpdGhpbiBhIHN0YW5kYXJkIGZ1enppbmcgc2V0dXAg4oCTIHRoaW5rIGBtYWM4MDIxMV9od3NpbWAsIGBubDgwMjExYCwgdGhvc2Ugc29ydHMgb2Ygc2ltdWxhdGVkIHdpZmkgZGV2aWNlcyB0aGF0IHN5emthbGxlciBoYW1tZXJzLiBJdCYjMzk7cyBlc3NlbnRpYWwgdG8gdW5kZXJzdGFuZCBpZiBvdXIgZnV6emluZyBlZmZvcnRzIGFyZSBsaWtlbHkgdG8gaGl0IHRoaXMgbmV3IGNvZGUgcGF0aC4KClRvIGdldCBhIGJldHRlciBncmlwIG9uIHRoZSBzaXR1YXRpb24gSSB0aGluayBJJiMzOTtsbCB1c2UgZWl0aGVyIGByZWFkLWZpbGVgIG9yIGBncmVwcGVyYCB0byBpbnNwZWN0IGBuZXQvbWFjODAyMTEvdHguY2AsIHdoaWNoIHNob3VsZCBwcm92aWRlIGVub3VnaCBjb250ZXh0dWFsIGRldGFpbC4gSSBzaG91bGQgYWxzbyBjaGVjayB0aGUgYEtjb25maWdgIGZpbGVzIHJlbGF0ZWQgdG8gdGhpcyBwYXJ0IG9mIHRoZSBrZXJuZWwsIGluIGNhc2UgdGhlcmUgYXJlIGFueSBjb25kaXRpb25hbCBkZXBlbmRlbmNpZXMgb3IgZmVhdHVyZXMgdGhhdCBhcmUgbmV3bHkgZW5hYmxlZCBvciBkaXNhYmxlZC4gVGhpcyB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgY29kZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxNzo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS90eC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDExNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDs0MTE1Olx0c3RydWN0IGllZWU4MDIxMV90eHEgKmllZWU4MDIxMV9uZXh0X3R4cShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgdTggYWMpXG40MTE2Olx0e1xuNDExNzpcdFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBod190b19sb2NhbChodyk7XG40MTE4Olx0XHRzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqcmV0ID0gTlVMTDtcbjQxMTk6XHRcdHN0cnVjdCB0eHFfaW5mbyAqdHhxaSA9IE5VTEwsICpoZWFkID0gTlVMTDtcbjQxMjA6XHRcdGJvb2wgZm91bmRfZWxpZ2libGVfdHhxID0gZmFsc2U7XG40MTIxOlx0XHRib29sIGFxbF9jaGVjaztcbjQxMjI6XHRcbjQxMjM6XHRcdHNwaW5fbG9ja19iaChcdTAwMjZsb2NhbC1cdTAwM2VhY3RpdmVfdHhxX2xvY2tbYWNdKTtcbjQxMjQ6XHRcbjQxMjU6XHRcdGlmICghbG9jYWwtXHUwMDNlc2NoZWR1bGVfb3BlblthY10pXG40MTI2Olx0XHRcdGdvdG8gb3V0O1xuNDEyNzpcdFxuNDEyODpcdCBiZWdpbjpcbjQxMjk6XHRcdHR4cWkgPSBsaXN0X2ZpcnN0X2VudHJ5X29yX251bGwoXHUwMDI2bG9jYWwtXHUwMDNlYWN0aXZlX3R4cXNbYWNdLFxuNDEzMDpcdFx0XHRcdFx0XHRzdHJ1Y3QgdHhxX2luZm8sXG40MTMxOlx0XHRcdFx0XHRcdHNjaGVkdWxlX29yZGVyKTtcbjQxMzI6XHRcdGlmICghdHhxaSlcbjQxMzM6XHRcdFx0Z290byBvdXQ7XG40MTM0Olx0XG40MTM1Olx0XHRpZiAodHhxaSA9PSBoZWFkKSB7XG40MTM2Olx0XHRcdGlmICghZm91bmRfZWxpZ2libGVfdHhxKVxuNDEzNzpcdFx0XHRcdGdvdG8gb3V0O1xuNDEzODpcdFx0XHRlbHNlXG40MTM5Olx0XHRcdFx0Zm91bmRfZWxpZ2libGVfdHhxID0gZmFsc2U7XG40MTQwOlx0XHR9XG40MTQxOlx0XG40MTQyOlx0XHRpZiAoIWhlYWQpXG40MTQzOlx0XHRcdGhlYWQgPSB0eHFpO1xuNDE0NDpcdFxuNDE0NTpcdFx0YXFsX2NoZWNrID0gaWVlZTgwMjExX3R4cV9haXJ0aW1lX2NoZWNrKGh3LCBcdTAwMjZ0eHFpLVx1MDAzZXR4cSk7XG40MTQ2Olx0XHRpZiAoYXFsX2NoZWNrKVxuNDE0NzpcdFx0XHRmb3VuZF9lbGlnaWJsZV90eHEgPSB0cnVlO1xuNDE0ODpcdFxuNDE0OTpcdFx0aWYgKHR4cWktXHUwMDNldHhxLnN0YSkge1xuNDE1MDpcdFx0XHRzdHJ1Y3Qgc3RhX2luZm8gKnN0YSA9IGNvbnRhaW5lcl9vZih0eHFpLVx1MDAzZXR4cS5zdGEsXG40MTUxOlx0XHRcdFx0XHRcdFx0ICAgIHN0cnVjdCBzdGFfaW5mbywgc3RhKTtcbjQxNTI6XHRcbjQxNTM6XHRcdFx0aWYgKGllZWU4MDIxMV9zdGFfZGVmaWNpdChzdGEsIHR4cWktXHUwMDNldHhxLmFjKSBcdTAwM2MgMCkge1xuNDE1NDpcdFx0XHRcdHN0YS1cdTAwM2VhaXJ0aW1lW3R4cWktXHUwMDNldHhxLmFjXS5kZWZpY2l0ICYjNDM7PVxuNDE1NTpcdFx0XHRcdFx0c3RhLVx1MDAzZWFpcnRpbWVfd2VpZ2h0O1xuNDE1NjpcdFxuNDE1NzpcdFx0XHRcdGFxbF9jaGVjayA9IGZhbHNlO1xuNDE1ODpcdFx0XHR9XG40MTU5Olx0XHR9XG40MTYwOlx0XG40MTYxOlx0XHRpZiAoIWFxbF9jaGVjaykge1xuNDE2MjpcdFx0XHRsaXN0X21vdmVfdGFpbChcdTAwMjZ0eHFpLVx1MDAzZXNjaGVkdWxlX29yZGVyLFxuNDE2MzpcdFx0XHRcdFx0ICAgXHUwMDI2bG9jYWwtXHUwMDNlYWN0aXZlX3R4cXNbdHhxaS1cdTAwM2V0eHEuYWNdKTtcbjQxNjQ6XHRcdFx0Z290byBiZWdpbjtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxNzo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NzQyCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRoaW5raW5nLCBleHByZXNzZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqRGl2aW5nIGludG8gdGhlIE1BQzgwMjExIFRyYW5zbWlzc2lvbiBDb2RlKioKCk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5IHdpdGggYG5ldC9tYWM4MDIxMS90eC5jYC4gTGV0JiMzOTtzIHplcm8gaW4gb24gYSBzcGVjaWZpYyBwb2ludCB0byBhdm9pZCBnZXR0aW5nIGxvc3QgaW4gdGhlIHdlZWRzIHJpZ2h0IGF3YXkuIEkmIzM5O20gZ29pbmcgdG8ganVtcCB0byBsaW5lIDQzNDcuIEJhc2VkIG9uIG15IHBhc3QgZXhwZXJpZW5jZSB3aXRoIE1BQzgwMjExLCBJIGV4cGVjdCB0aGlzIGFyZWEgdG8gbGlrZWx5IGRlYWwgd2l0aOKApiBbSGVyZSwgSSYjMzk7ZCBmaWxsIGluIHRoZSBsaWtlbHkgZnVuY3Rpb24gYmFzZWQgb24gbXkgZXhwZXJ0aXNlIC0gc29tZXRoaW5nIGxpa2U6ICYjMzQ74oCmcmV0cmFuc21pc3Npb24gbG9naWMsIHJhdGUgYWRhcHRhdGlvbiwgb3IgcG9zc2libHkgZnJhbWUgYWdncmVnYXRpb24mIzM0Oy5dLiBUaGlzIHNwZWNpZmljIGxpbmUsIHN1cnJvdW5kZWQgYnkgdGhlIGNvZGUgYXJvdW5kIGl0LCB3aWxsIHN1cmVseSBwcm92aWRlIHNvbWUgY3JpdGljYWwgaW5zaWdodHMuIExldOKAmXMgc2VlIHdoYXQmIzM5O3MgcmVhbGx5IGhhcHBlbmluZyBpbiB0aGF0IHNlY3Rpb24gb2YgdGhlIHRyYW5zbWlzc2lvbiBwcm9jZXNzLiBUaGlzIHNwb3Qgc2VlbXMgcHJvbWlzaW5nIGZvciBleGFtaW5pbmcgdGhlIG51YW5jZXMgb2YgaG93IHRoZSBNQUMgbGF5ZXIgaGFuZGxlcyBwYWNrZXQgdHJhbnNtaXNzaW9uLiBMZXQmIzM5O3Mgc2VlIGlmIHRoaXMganVtcCBwcm92aWRlcyB0aGUgZGF0YSBJIG5lZWQhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTc6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvdHguYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQzNDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7NDM0MDpcdFx0cmV0dXJuIHRydWU7XG40MzQxOlx0fVxuNDM0MjpcdEVYUE9SVF9TWU1CT0woaWVlZTgwMjExX3R4cV9tYXlfdHJhbnNtaXQpO1xuNDM0MzpcdFxuNDM0NDpcdHZvaWQgaWVlZTgwMjExX3R4cV9zY2hlZHVsZV9zdGFydChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgdTggYWMpXG40MzQ1Olx0e1xuNDM0NjpcdFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBod190b19sb2NhbChodyk7XG40MzQ3Olx0XG40MzQ4Olx0XHRzcGluX2xvY2tfYmgoXHUwMDI2bG9jYWwtXHUwMDNlYWN0aXZlX3R4cV9sb2NrW2FjXSk7XG40MzQ5Olx0XG40MzUwOlx0XHRsb2NhbC1cdTAwM2VzY2hlZHVsZV9vcGVuW2FjXSA9XG40MzUxOlx0XHRcdGllZWU4MDIxMV90eHFfc2NoZWR1bGVfYWlydGltZV9jaGVjayhsb2NhbCwgYWMpO1xuNDM1MjpcdFx0aWYgKGxvY2FsLVx1MDAzZXNjaGVkdWxlX29wZW5bYWNdKSB7XG40MzUzOlx0XHRcdGxvY2FsLVx1MDAzZXNjaGVkdWxlX3JvdW5kW2FjXSYjNDM7JiM0Mzs7XG40MzU0Olx0XHRcdGlmICghbG9jYWwtXHUwMDNlc2NoZWR1bGVfcm91bmRbYWNdKVxuNDM1NTpcdFx0XHRcdGxvY2FsLVx1MDAzZXNjaGVkdWxlX3JvdW5kW2FjXSYjNDM7JiM0Mzs7XG40MzU2Olx0XHR9XG40MzU3Olx0XG40MzU4Olx0XHRzcGluX3VubG9ja19iaChcdTAwMjZsb2NhbC1cdTAwM2VhY3RpdmVfdHhxX2xvY2tbYWNdKTtcbjQzNTk6XHR9XG40MzYwOlx0RVhQT1JUX1NZTUJPTChpZWVlODAyMTFfdHhxX3NjaGVkdWxlX3N0YXJ0KTtcbjQzNjE6XHRcbjQzNjI6XHR2b2lkIF9faWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbjQzNjM6XHRcdFx0XHRcdCAgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbjQzNjQ6XHRcdFx0XHRcdCAgdTMyIGluZm9fZmxhZ3MsXG40MzY1Olx0XHRcdFx0XHQgIHUzMiBjdHJsX2ZsYWdzKVxuNDM2NjpcdHtcbjQzNjc6XHRcdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gSUVFRTgwMjExX0RFVl9UT19TVUJfSUYoZGV2KTtcbjQzNjg6XHRcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gc2RhdGEtXHUwMDNlbG9jYWw7XG40MzY5Olx0XHRzdHJ1Y3QgaWVlZTgwMjExX3R4X2luZm8gKmluZm87XG40MzcwOlx0XHRzdHJ1Y3Qgc3RhX2luZm8gKnN0YTtcbjQzNzE6XHRcdHN0cnVjdCBza19idWZmICpuZXh0O1xuNDM3MjpcdFx0Ym9vbCBncm91cF9hZGRyZXNzZWQ7XG40MzczOlx0XHRpbnQgbGVuID0gc2tiLVx1MDAzZWxlbjtcbjQzNzQ6XHRcbjQzNzU6XHRcdGlmICh1bmxpa2VseSghaWVlZTgwMjExX3NkYXRhX3J1bm5pbmcoc2RhdGEpIHx8IHNrYi1cdTAwM2VsZW4gXHUwMDNjIEVUSF9ITEVOKSkge1xuNDM3NjpcdFx0XHRrZnJlZV9za2Ioc2tiKTtcbjQzNzc6XHRcdFx0cmV0dXJuO1xuNDM3ODpcdFx0fVxuNDM3OTpcdFxuNDM4MDpcdFx0c2tfcGFjaW5nX3NoaWZ0X3VwZGF0ZShza2ItXHUwMDNlc2ssIHNkYXRhLVx1MDAzZWxvY2FsLVx1MDAzZWh3LnR4X3NrX3BhY2luZ19zaGlmdCk7XG40MzgxOlx0XG40MzgyOlx0XHRyY3VfcmVhZF9sb2NrKCk7XG40MzgzOlx0XG40Mzg0Olx0XHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tZXNoKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikgXHUwMDI2XHUwMDI2XG40Mzg1Olx0XHQgICAgaWVlZTgwMjExX2h3X2NoZWNrKFx1MDAyNmxvY2FsLVx1MDAzZWh3LCBTVVBQT1JUX0ZBU1RfWE1JVCkgXHUwMDI2XHUwMDI2XG40Mzg2Olx0XHQgICAgaWVlZTgwMjExX21lc2hfeG1pdF9mYXN0KHNkYXRhLCBza2IsIGN0cmxfZmxhZ3MpKVxuNDM4NzpcdFx0XHRnb3RvIG91dDtcbjQzODg6XHRcbjQzODk6XHRcdGlmIChpZWVlODAyMTFfbG9va3VwX3JhX3N0YShzZGF0YSwgc2tiLCBcdTAwMjZzdGEpKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDE3OjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU5MTQKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIHRoZSBtYWM4MDIxMSBLY29uZmlnKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgaW50byB0aGUgZGV0YWlscyBvZiB0aGUgbWFjODAyMTEgS2NvbmZpZyBmaWxlLiBJIG5lZWQgdG8gcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMsIGRlcGVuZGVuY2llcywgYW5kIGhvdyB0aGV5IHJlbGF0ZSB0byB0aGUgb3ZlcmFsbCBkcml2ZXIgYXJjaGl0ZWN0dXJlLiBJJiMzOTttIHRoaW5raW5nIHNwZWNpZmljYWxseSBhYm91dCBob3cgdmFyaW91cyBmZWF0dXJlcyBhcmUgZW5hYmxlZCBvciBkaXNhYmxlZCwgYW5kIHRoZSBpbXBhY3Qgb24gdGhlIHJlc3VsdGluZyBrZXJuZWwgaW1hZ2Ugc2l6ZSBhbmQgZnVuY3Rpb25hbGl0eS4gSSYjMzk7bSBnb2luZyB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBkZXBlbmRlbmNpZXMg4oCTIHRob3NlIGBkZXBlbmRzIG9uYCBzdGF0ZW1lbnRzIGFyZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBob3cgb3B0aW9ucyBpbnRlcmFjdCBhbmQgd2hpY2ggZmVhdHVyZXMgY2FuIGJlIGNvbWJpbmVkLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBhbnkgY2hhbmdlcyBvciBhZGRpdGlvbnMgc2luY2UgdGhlIGxhc3QgdGltZSBJIHJldmlld2VkIGl0IOKAkyBtYXliZSBhIG5ldyByZWd1bGF0b3J5IGRvbWFpbiBjb25maWd1cmF0aW9uIG9wdGlvbiwgYSBuZXcgcG93ZXItc2F2aW5nIGZlYXR1cmUsIG9yIGEgY2hhbmdlIGluIHRoZSBkZWZhdWx0IGJlaGF2aW9yIG9mIGEgc3BlY2lmaWMgd2lyZWxlc3Mgc3RhbmRhcmQuIEFyZSB0aGVyZSBhbnkgbmV3IGhhcmR3YXJlIHBsYXRmb3JtcyBzdXBwb3J0ZWQsIGFuZCBob3cgaXMgdGhhdCByZWZsZWN0ZWQgaW4gdGhlIEtjb25maWc/IEkmIzM5O2xsIGFsc28gdHJ5IHRvIGdhdWdlIHRoZSBsZXZlbCBvZiBtb2R1bGFyaXphdGlvbiDigJMgY2FuIEkgZWFzaWx5IGRpc2FibGUgcGFydHMgSSBkb24mIzM5O3QgbmVlZCwgb3IgYXJlIHRoZXJlIHRpZ2h0bHkgY291cGxlZCBmZWF0dXJlcz8gVGltZSB0byBnZXQgc3RhcnRlZCEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxNzo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTUFDODAyMTEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyOmNvbmZpZyBNQUM4MDIxMVxubmV0L21hYzgwMjExL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0dlbmVyaWMgSUVFRSA4MDIuMTEgTmV0d29ya2luZyBTdGFjayAobWFjODAyMTEpXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9MTk9aWYgTUFDODAyMTEgIT0gblxubmV0L21hYzgwMjExL0tjb25maWctMjAtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMTpjb25maWcgTUFDODAyMTFfSEFTX1JDXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMi1cdGJvb2xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzLVxubmV0L21hYzgwMjExL0tjb25maWc6MjQ6Y29uZmlnIE1BQzgwMjExX1JDX01JTlNUUkVMXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNS1cdGJvb2wgXCYjMzQ7TWluc3RyZWxcJiMzNDsgaWYgRVhQRVJUXG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9MzE9Y2hvaWNlXG4tLVxubmV0L21hYzgwMjExL0tjb25maWctNDAtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo0MTpjb25maWcgTUFDODAyMTFfUkNfREVGQVVMVF9NSU5TVFJFTFxubmV0L21hYzgwMjExL0tjb25maWctNDItXHRib29sIFwmIzM0O01pbnN0cmVsXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9NDg9ZW5kY2hvaWNlXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00OS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjUwOmNvbmZpZyBNQUM4MDIxMV9SQ19ERUZBVUxUXG5uZXQvbWFjODAyMTEvS2NvbmZpZy01MS1cdHN0cmluZ1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnPTU3PWNvbW1lbnQgXCYjMzQ7U29tZSB3aXJlbGVzcyBkcml2ZXJzIHJlcXVpcmUgYSByYXRlIGNvbnRyb2wgYWxnb3JpdGhtXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctNTktXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo2MDpjb25maWcgTUFDODAyMTFfS1VOSVRfVEVTVFxubmV0L21hYzgwMjExL0tjb25maWctNjEtXHR0cmlzdGF0ZSBcJiMzNDtLVW5pdCB0ZXN0cyBmb3IgbWFjODAyMTFcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTY5LVxubmV0L21hYzgwMjExL0tjb25maWc6NzA6Y29uZmlnIE1BQzgwMjExX01FU0hcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTcxLVx0Ym9vbCBcJiMzNDtFbmFibGUgbWFjODAyMTEgbWVzaCBuZXR3b3JraW5nIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy03OC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjc5OmNvbmZpZyBNQUM4MDIxMV9MRURTXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04MC1cdGJvb2wgXCYjMzQ7RW5hYmxlIExFRCB0cmlnZ2Vyc1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTg3LVxubmV0L21hYzgwMjExL0tjb25maWc6ODg6Y29uZmlnIE1BQzgwMjExX0RFQlVHRlNcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTg5LVx0Ym9vbCBcJiMzNDtFeHBvcnQgbWFjODAyMTEgaW50ZXJuYWxzIGluIERlYnVnRlNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy05Ni1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjk3OmNvbmZpZyBNQUM4MDIxMV9NRVNTQUdFX1RSQUNJTkdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTk4LVx0Ym9vbCBcJiMzNDtUcmFjZSBhbGwgbWFjODAyMTEgZGVidWcgbWVzc2FnZXNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMDktXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMTA6bWVudWNvbmZpZyBNQUM4MDIxMV9ERUJVR19NRU5VXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTEtXHRib29sIFwmIzM0O1NlbGVjdCBtYWM4MDIxMSBkZWJ1Z2dpbmcgZmVhdHVyZXNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTUtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMTY6Y29uZmlnIE1BQzgwMjExX05PSU5MSU5FXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTctXHRib29sIFwmIzM0O0RvIG5vdCBpbmxpbmUgVFgvUlggaGFuZGxlcnNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMzEtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMzI6Y29uZmlnIE1BQzgwMjExX1ZFUkJPU0VfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEzMy1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBkZWJ1Z2dpbmcgb3V0cHV0XCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTQyLVxubmV0L21hYzgwMjExL0tjb25maWc6MTQzOmNvbmZpZyBNQUM4MDIxMV9NTE1FX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNDQtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWFuYWdlZCBNTE1FIG91dHB1dFwmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE1My1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE1NDpjb25maWcgTUFDODAyMTFfU1RBX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNTUtXHRib29sIFwmIzM0O1ZlcmJvc2Ugc3RhdGlvbiBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNjItXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNjM6Y29uZmlnIE1BQzgwMjExX0hUX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNjQtXHRib29sIFwmIzM0O1ZlcmJvc2UgSFQgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTc0LVxubmV0L21hYzgwMjExL0tjb25maWc6MTc1OmNvbmZpZyBNQUM4MDIxMV9PQ0JfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE3Ni1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBPQ0IgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTg1LVxubmV0L21hYzgwMjExL0tjb25maWc6MTg2OmNvbmZpZyBNQUM4MDIxMV9JQlNTX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xODctXHRib29sIFwmIzM0O1ZlcmJvc2UgSUJTUyBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xOTYtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxOTc6Y29uZmlnIE1BQzgwMjExX1BTX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xOTgtXHRib29sIFwmIzM0O1ZlcmJvc2UgcG93ZXJzYXZlIG1vZGUgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjA4LVxubmV0L21hYzgwMjExL0tjb25maWc6MjA5OmNvbmZpZyBNQUM4MDIxMV9NUExfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIxMC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIHBlZXIgbGluayBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMjEtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMjI6Y29uZmlnIE1BQzgwMjExX01QQVRIX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMjMtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBwYXRoIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzNC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIzNTpjb25maWcgTUFDODAyMTFfTUhXTVBfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzNi1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIEhXTVAgcm91dGluZyBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNDctXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNDg6Y29uZmlnIE1BQzgwMjExX01FU0hfU1lOQ19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjQ5LVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggc3luY2hyb25pemF0aW9uIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI1OC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI1OTpjb25maWcgTUFDODAyMTFfTUVTSF9DU0FfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2MC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIGNoYW5uZWwgc3dpdGNoIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2OS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI3MDpjb25maWcgTUFDODAyMTFfTUVTSF9QU19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjcxLVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggcG93ZXJzYXZlIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI4MC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI4MTpjb25maWcgTUFDODAyMTFfVERMU19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjgyLVx0Ym9vbCBcJiMzNDtWZXJib3NlIFRETFMgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjkyLVxubmV0L21hYzgwMjExL0tjb25maWc6MjkzOmNvbmZpZyBNQUM4MDIxMV9ERUJVR19DT1VOVEVSU1xubmV0L21hYzgwMjExL0tjb25maWctMjk0LVx0Ym9vbCBcJiMzNDtFeHRyYSBzdGF0aXN0aWNzIGZvciBUWC9SWCBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zMDctXG5uZXQvbWFjODAyMTEvS2NvbmZpZzozMDg6Y29uZmlnIE1BQzgwMjExX1NUQV9IQVNIX01BWF9TSVpFXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zMDktXHRpbnQgXCYjMzQ7U3RhdGlvbiBoYXNoIHRhYmxlIG1heGltdW0gc2l6ZVwmIzM0OyBpZiBNQUM4MDIxMV9ERUJVR19NRU5VXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTc6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODM4MQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgTUFDODAyMTEgRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGluLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBjaGVjayB0aGUgYEtjb25maWdgIGZpbGUsIHNwZWNpZmljYWxseSB0aGUgYmVnaW5uaW5nIG9mIGBuZXQvbWFjODAyMTEvS2NvbmZpZ2AuIEkmIzM5O20gZ29pbmcgc3RyYWlnaHQgZm9yIHRoYXQgZmlsZSBiZWNhdXNlIGl0JiMzOTtzIHdoZXJlIHRoZSBjb3JlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgaW5jbHVkaW5nIGRlcGVuZGVuY2llcywgYXJlIGRlZmluZWQgZm9yIGBNQUM4MDIxMWAuIEkgd2FudCB0byBxdWlja2x5IHVuZGVyc3RhbmQgd2hhdCBvdGhlciBrZXJuZWwgZmVhdHVyZXMgb3IgaGFyZHdhcmUgY29uZmlndXJhdGlvbnMgbmVlZCB0byBiZSBpbiBwbGFjZSAqYmVmb3JlKiBgTUFDODAyMTFgIGlzIGV2ZW4gY29uc2lkZXJlZC4gVGhpcyBpcyBjcnVjaWFsIGZvciBkZWJ1Z2dpbmcgYnVpbGQgaXNzdWVzLCB1bmRlcnN0YW5kaW5nIGRyaXZlciBjb21wYXRpYmlsaXR5LCBvciBldmVuIGFzc2Vzc2luZyB0aGUgYXJjaGl0ZWN0dXJhbCBjb25zdHJhaW50cyBvZiBhIHBhcnRpY3VsYXIgd2lyZWxlc3Mgc2V0dXAuIEnigJltIHRoaW5raW5nLCBmb3IgaW5zdGFuY2UsIGFyZSB0aGVyZSBhbnkgYmFzZSB3aXJlbGVzcyBQSFkgcmVxdWlyZW1lbnRzLCBvciBhcmUgdGhlcmUgZGVwZW5kZW5jaWVzIG9uIHNwZWNpZmljIG5ldHdvcmsgbGF5ZXIgZnVuY3Rpb25hbGl0aWVzIGxpa2UgYSBwYXJ0aWN1bGFyIHZlcnNpb24gb2YgdGhlIGdlbmVyaWMgbmV0d29yayBzdGFjaz8gR3JhYmJpbmcgdGhhdCBkZXBlbmRlbmN5IGluZm9ybWF0aW9uIHdpbGwgZ2l2ZSBtZSB0aGUgYnJvYWQgc3Ryb2tlcyBvZiBob3cgdGhpcyB3b3Jrcy4gSSYjMzk7bSBmb2N1c2luZyBvbiB0aGUgKmRlcGVuZHMgb24qIGNsYXVzZXMgaW4gYEtjb25maWdgIHRvIGdldCB0aGF0IGJpcmQmIzM5O3MtZXllIHZpZXcuIFRoaXMgaXMgYWxsIGFib3V0IGNvbnRleHQ7IHVuZGVyc3RhbmRpbmcgdGhlIHN1cnJvdW5kaW5nIGNvbmRpdGlvbnMgaXMga2V5IHRvIHVuZGVyc3RhbmRpbmcgaG93IGBNQUM4MDIxMWAgaW50ZWdyYXRlcyB3aXRoIHRoZSByZXN0IG9mIHRoZSBrZXJuZWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDE3OjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDI1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRjb25maWcgTUFDODAyMTFcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O0dlbmVyaWMgSUVFRSA4MDIuMTEgTmV0d29ya2luZyBTdGFjayAobWFjODAyMTEpXCYjMzQ7XG4gICA0Olx0XHRkZXBlbmRzIG9uIENGRzgwMjExXG4gICA1Olx0XHRzZWxlY3QgQ1JZUFRPXG4gICA2Olx0XHRzZWxlY3QgQ1JZUFRPX0xJQl9BRVNfQ0JDX01BQ1NcbiAgIDc6XHRcdHNlbGVjdCBDUllQVE9fTElCX0FSQzRcbiAgIDg6XHRcdHNlbGVjdCBDUllQVE9fQUVTXG4gICA5Olx0XHRzZWxlY3QgQ1JZUFRPX0NDTVxuICAxMDpcdFx0c2VsZWN0IENSWVBUT19HQ01cbiAgMTE6XHRcdHNlbGVjdCBDUkMzMlxuICAxMjpcdFx0aGVscFxuICAxMzpcdFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIHRoZSBoYXJkd2FyZSBpbmRlcGVuZGVudCBJRUVFIDgwMi4xMVxuICAxNDpcdFx0ICBuZXR3b3JraW5nIHN0YWNrLlxuICAxNTpcdFxuICAxNjpcdGNvbW1lbnQgXCYjMzQ7Q0ZHODAyMTEgbmVlZHMgdG8gYmUgZW5hYmxlZCBmb3IgTUFDODAyMTFcJiMzNDtcbiAgMTc6XHRcdGRlcGVuZHMgb24gQ0ZHODAyMTE9blxuICAxODpcdFxuICAxOTpcdGlmIE1BQzgwMjExICE9IG5cbiAgMjA6XHRcbiAgMjE6XHRjb25maWcgTUFDODAyMTFfSEFTX1JDXG4gIDIyOlx0XHRib29sXG4gIDIzOlx0XG4gIDI0Olx0Y29uZmlnIE1BQzgwMjExX1JDX01JTlNUUkVMXG4gIDI1Olx0XHRib29sIFwmIzM0O01pbnN0cmVsXCYjMzQ7IGlmIEVYUEVSVFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxNzo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MDYyCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogNDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhIGZpcnN0LXBlcnNvbiBleHBlcnQgc3VtbWFyeToKCioqQW5hbHl6aW5nIGBpZWVlODAyMTFfbmV4dF90eHFgIGFuZCBgaWVlZTgwMjExX3R4cV9zY2hlZHVsZV9zdGFydGAqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBNeSBmb2N1cyBpcyBvbiB1bmRlcnN0YW5kaW5nICpob3cqIGFuZCAqd2hlcmUqIGBpZWVlODAyMTFfbmV4dF90eHFgIGFuZCBgaWVlZTgwMjExX3R4cV9zY2hlZHVsZV9zdGFydGAgYXJlIGJlaW5nIHVzZWQuIEVzc2VudGlhbGx5LCBJIHdhbnQgdG8gdHJhY2UgdGhlIGNhbGxzLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgY29udGV4dCBpbiB3aGljaCB0aGVzZSBmdW5jdGlvbnMgYXJlIGJlaW5nIGludm9rZWQgaW4gdGhlIDgwMi4xMSBzdGFjay4gV2hhdCYjMzk7cyB0aGUgY29udHJvbCBmbG93PyBXaGF0IG90aGVyIGZ1bmN0aW9ucyBhcmUgdGhleSBpbnRlcmFjdGluZyB3aXRoPyBXaGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIG9mIHNjaGVkdWxpbmcgYW5kIHNlbGVjdGlvbiBvZiB0aGVzZSB0cmFuc21pc3Npb24gcXVldWVzPwoKU3BlY2lmaWNhbGx5LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBkYXRhIHN0cnVjdHVyZXMgYmVpbmcgbWFuaXB1bGF0ZWQgd2l0aGluIHRoZXNlIGZ1bmN0aW9ucy4gYGllZWU4MDIxMV9uZXh0X3R4cWAgaXMgbGlrZWx5IHJldHVybmluZyBhIGhhbmRsZSB0byB0aGUgbmV4dCBhdmFpbGFibGUgdHJhbnNtaXQgcXVldWUsIHByZXN1bWFibHkgYmFzZWQgb24gc29tZSBzY2hlZHVsaW5nIHBvbGljeS4gU28sIHdoYXQmIzM5O3MgdGhlIGxvZ2ljIGJlaGluZCB0aGF0IHBvbGljeT8gSXMgaXQgc3RyaWN0bHkgUW9TLWJhc2VkPyBJcyB0aGVyZSBzb21lIHJvdW5kLXJvYmluIGludm9sdmVkPyBIb3cgZG9lcyB0aGlzIGludGVyYWN0IHdpdGggdGhlIHZhcmlvdXMgaGFyZHdhcmUgcXVldWVzIGFuZCB0aGVpciBjYXBhYmlsaXRpZXM/IEFyZSB3ZSBsb29raW5nIGF0IGEgc3lzdGVtLXdpZGUgdHJhZmZpYyBzY2hlZHVsZXIgdGhhdCB0aGVzZSBmdW5jdGlvbnMgYXJlIHBsdWdnZWQgaW50bywgb3IgaXMgaXQgbW9yZSBsb2NhbGl6ZWQgdG8gYSBzcGVjaWZpYyBkcml2ZXIgb3IgZGV2aWNlPwoKQW5kIHRoZW4gYGllZWU4MDIxMV90eHFfc2NoZWR1bGVfc3RhcnRgIOKAkyB0aGlzIGlzIHdoZXJlIHRoZSAqYWN0aW9uKiBpcy4gSXQmIzM5O3MgdGhlIHBvaW50IHdoZXJlIHRyYW5zbWlzc2lvbiBhY3R1YWxseSBiZWdpbnMuIEkgbmVlZCB0byBpZGVudGlmeSB0aGUgaW5wdXRzIHRvIHRoaXMgZnVuY3Rpb24g4oCTIGFyZSB3ZSB0YWxraW5nIGFib3V0IHJhdGUgYWRhcHRhdGlvbiwgcG93ZXIgbWFuYWdlbWVudCwgYmFja29mZiBtYW5hZ2VtZW50LCBvciBvdGhlciBjb21wbGV4LCBwZXItcXVldWUgY29uc2lkZXJhdGlvbnM/IFdoYXQmIzM5O3MgdGhlIHJlbGF0aW9uc2hpcCBvZiB0aGlzIGZ1bmN0aW9uIHRvIGFueSBoYXJkd2FyZS1zcGVjaWZpYyBETUEgb3IgZGVzY3JpcHRvciBtYW5hZ2VtZW50LCB0aGUgbG93ZXIgbGF5ZXIuIEkgbmVlZCB0byBjb25zaWRlciBhbGwgb2YgdGhlIHBvc3NpYmlsaXRpZXMgdGhhdCBjb3VsZCBhcmlzZS4gSSYjMzk7bSBpbWFnaW5pbmcgaG93IHRoZXNlIGZ1bmN0aW9ucyBhcmUgYmVpbmcgaW50ZXJ0d2luZWQgd2l0aCBvdGhlciB0YXNrcyB0aGF0IGNvdWxkIGJlIHRha2luZyBwbGFjZSBvbiBhbiA4MDIuMTEgbmV0d29yay4KClRoaXMgYW5hbHlzaXMgd2lsbCBnaXZlIG1lIGEgY2xlYXIgcGljdHVyZSBvZiBob3cgdGhlIG92ZXJhbGwgdHJhbnNtaXNzaW9uIHByb2Nlc3Mgd29ya3MgZm9yIHRoaXMgcGFydGljdWxhciA4MDIuMTEgaW1wbGVtZW50YXRpb24uIEkgc2hvdWxkIGJlIGFibGUgdG8gaWRlbnRpZnkgYm90dGxlbmVja3MsIHBvdGVudGlhbCBhcmVhcyBmb3Igb3B0aW1pemF0aW9uLCBvciBldmVuIHBvdGVudGlhbCBidWdzIG9yIHJhY2UgY29uZGl0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTc6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aWVlZTgwMjExX25leHRfdHhxfGllZWU4MDIxMV90eHFfc2NoZWR1bGVfc3RhcnQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHRfcnguYz0zMzc1PXN0YXRpYyB2b2lkIGF0aDEwa19odHRfcnhfdHhfZmV0Y2hfaW5kKHN0cnVjdCBhdGgxMGsgKmFyLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0X3J4LmMtMzQ2NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0X3J4LmM6MzQ2NjpcdFx0aWVlZTgwMjExX3R4cV9zY2hlZHVsZV9zdGFydChodywgdHhxLVx1MDAzZWFjKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0X3J4LmMtMzQ2Ny1cdFx0bWF5X3R4ID0gaWVlZTgwMjExX3R4cV9tYXlfdHJhbnNtaXQoaHcsIHR4cSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYz00NDc1PXN0YXRpYyBpbnQgYXRoMTBrX21hY19zY2hlZHVsZV90eHEoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHUzMiBhYylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTQ0NzktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jOjQ0ODA6XHRpZWVlODAyMTFfdHhxX3NjaGVkdWxlX3N0YXJ0KGh3LCBhYyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jOjQ0ODE6XHR3aGlsZSAoKHR4cSA9IGllZWU4MDIxMV9uZXh0X3R4cShodywgYWMpKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy00NDgyLVx0XHR3aGlsZSAoYXRoMTBrX21hY190eF9jYW5fcHVzaChodywgdHhxKSkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM9NDc1Nz1zdGF0aWMgdm9pZCBhdGgxMGtfbWFjX29wX3dha2VfdHhfcXVldWUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy00NzY5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYzo0NzcwOlx0aWVlZTgwMjExX3R4cV9zY2hlZHVsZV9zdGFydChodywgYWMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYzo0NzcxOlx0dHhxID0gaWVlZTgwMjExX25leHRfdHhxKGh3LCBhYyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTQ3NzItXHRpZiAoIXR4cSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jPTE5ODA9dm9pZCBhdGhfdHhxX3NjaGVkdWxlKHN0cnVjdCBhdGhfc29mdGMgKnNjLCBzdHJ1Y3QgYXRoX3R4cSAqdHhxKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtMTk5My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM6MTk5NDpcdGllZWU4MDIxMV90eHFfc2NoZWR1bGVfc3RhcnQoaHcsIHR4cS1cdTAwM2VtYWM4MDIxMV9xbnVtKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtMTk5NS1cdHNwaW5fbG9ja19iaChcdTAwMjZzYy1cdTAwM2VjaGFuX2xvY2spO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtMTk5OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM6MjAwMDpcdHdoaWxlICgocXVldWUgPSBpZWVlODAyMTFfbmV4dF90eHEoaHcsIHR4cS1cdTAwM2VtYWM4MDIxMV9xbnVtKSkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtMjAwMS1cdFx0Ym9vbCBmb3JjZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmM9NTY0PW10NzZfdHhxX3NjaGVkdWxlX2xpc3Qoc3RydWN0IG10NzZfcGh5ICpwaHksIGVudW0gbXQ3Nl90eHFfaWQgcWlkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYy01NzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmM6NTc2Olx0XHR0eHEgPSBpZWVlODAyMTFfbmV4dF90eHEocGh5LVx1MDAzZWh3LCBxaWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jLTU3Ny1cdFx0aWYgKCF0eHEpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jPTYzOD12b2lkIG10NzZfdHhxX3NjaGVkdWxlKHN0cnVjdCBtdDc2X3BoeSAqcGh5LCBlbnVtIG10NzZfdHhxX2lkIHFpZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmMtNjQ4LVx0ZG8ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jOjY0OTpcdFx0aWVlZTgwMjExX3R4cV9zY2hlZHVsZV9zdGFydChwaHktXHUwMDNlaHcsIHFpZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmMtNjUwLVx0XHRsZW4gPSBtdDc2X3R4cV9zY2hlZHVsZV9saXN0KHBoeSwgcWlkKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYz00ODI2PXN0YXRpYyB2b2lkIHJ0dzg5X2NvcmVfdHhxX3NjaGVkdWxlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggYWMsIGJvb2wgKnJlaW52b2tlKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTQ4MzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzo0ODM3Olx0aWVlZTgwMjExX3R4cV9zY2hlZHVsZV9zdGFydChodywgYWMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM6NDgzODpcdHdoaWxlICgodHhxID0gaWVlZTgwMjExX25leHRfdHhxKGh3LCBhYykpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy00ODM5LVx0XHRydHd0eHEgPSAoc3RydWN0IHJ0dzg5X3R4cSAqKXR4cS1cdTAwM2VkcnZfcHJpdjtcbi0tXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTExNi0gKiBvYnRhaW4gdGhlIG5leHQgcXVldWUgdG8gcHVsbCBmcmFtZXMgZnJvbSwgdGhlIGRyaXZlciBjYWxsc1xuaW5jbHVkZS9uZXQvbWFjODAyMTEuaDoxMTc6ICogaWVlZTgwMjExX25leHRfdHhxKCkuIFRoZSBkcml2ZXIgaXMgdGhlbiBleHBlY3RlZCB0byByZXR1cm4gdGhlIHR4cSB1c2luZ1xuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC0xMTgtICogaWVlZTgwMjExX3JldHVybl90eHEoKS5cbi0tXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oPTc3MzY9dm9pZCBpZWVlODAyMTFfdW5yZXNlcnZlX3RpZChzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLCB1OCB0aWQpO1xuLS1cbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNzc0Mi0gKiBAdHhxOiBwb2ludGVyIG9idGFpbmVkIGZyb20gc3RhdGlvbiBvciB2aXJ0dWFsIGludGVyZmFjZSwgb3IgZnJvbVxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaDo3NzQzOiAqXHRpZWVlODAyMTFfbmV4dF90eHEoKVxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC03NzQ0LSAqXG4tLVxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaD03NzU4PXN0cnVjdCBza19idWZmICppZWVlODAyMTFfdHhfZGVxdWV1ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTc3NjktICogQHR4cTogcG9pbnRlciBvYnRhaW5lZCBmcm9tIHN0YXRpb24gb3IgdmlydHVhbCBpbnRlcmZhY2UsIG9yIGZyb21cbmluY2x1ZGUvbmV0L21hYzgwMjExLmg6Nzc3MDogKlx0aWVlZTgwMjExX25leHRfdHhxKClcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNzc3MS0gKlxuLS1cbmluY2x1ZGUvbmV0L21hYzgwMjExLmg9Nzc5NT12b2lkIGllZWU4MDIxMV9oYW5kbGVfd2FrZV90eF9xdWV1ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTc3OTgtLyoqXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oOjc3OTk6ICogaWVlZTgwMjExX25leHRfdHhxIC0gZ2V0IG5leHQgdHggcXVldWUgdG8gcHVsbCBwYWNrZXRzIGZyb21cbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNzgwMC0gKlxuLS1cbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNzgwNy0gKi9cbmluY2x1ZGUvbmV0L21hYzgwMjExLmg6NzgwODpzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqaWVlZTgwMjExX25leHRfdHhxKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCB1OCBhYyk7XG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTc4MDktXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTc4MTAtLyoqXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oOjc4MTE6ICogaWVlZTgwMjExX3R4cV9zY2hlZHVsZV9zdGFydCAtIHN0YXJ0IG5ldyBzY2hlZHVsaW5nIHJvdW5kIGZvciBUWFFzXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTc4MTItICpcbi0tXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTc4MTUtICpcbmluY2x1ZGUvbmV0L21hYzgwMjExLmg6NzgxNjogKiBTaG91bGQgYmUgY2FsbGVkIGJlZm9yZSBpZWVlODAyMTFfbmV4dF90eHEoKSBvciBpZWVlODAyMTFfcmV0dXJuX3R4cSgpLlxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC03ODE3LSAqIFRoZSBkcml2ZXIgbXVzdCBub3QgY2FsbCBtdWx0aXBsZSBUWFEgc2NoZWR1bGluZyByb3VuZHMgY29uY3VycmVudGx5LlxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC03ODE4LSAqL1xuaW5jbHVkZS9uZXQvbWFjODAyMTEuaDo3ODE5OnZvaWQgaWVlZTgwMjExX3R4cV9zY2hlZHVsZV9zdGFydChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgdTggYWMpO1xuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC03ODIwLVxuLS1cbmluY2x1ZGUvbmV0L21hYzgwMjExLmg9Nzg0Mj1pZWVlODAyMTFfc2NoZWR1bGVfdHhxKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqdHhxKVxuLS1cbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNzg0Ny0vKipcbmluY2x1ZGUvbmV0L21hYzgwMjExLmg6Nzg0ODogKiBpZWVlODAyMTFfcmV0dXJuX3R4cSAtIHJldHVybiBhIFRYUSBwcmV2aW91c2x5IGFjcXVpcmVkIGJ5IGllZWU4MDIxMV9uZXh0X3R4cSgpXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTc4NDktICpcbi0tXG5uZXQvbWFjODAyMTEvdHguYz00MTAxPWllZWU4MDIxMV90eHFfa2VlcF9hY3RpdmUoc3RydWN0IHR4cV9pbmZvICp0eHFpKVxuLS1cbm5ldC9tYWM4MDIxMS90eC5jLTQxMTQtXG5uZXQvbWFjODAyMTEvdHguYzo0MTE1OnN0cnVjdCBpZWVlODAyMTFfdHhxICppZWVlODAyMTFfbmV4dF90eHEoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHU4IGFjKVxubmV0L21hYzgwMjExL3R4LmMtNDExNi17XG4tLVxubmV0L21hYzgwMjExL3R4LmMtNDE3Ny19XG5uZXQvbWFjODAyMTEvdHguYzo0MTc4OkVYUE9SVF9TWU1CT0woaWVlZTgwMjExX25leHRfdHhxKTtcbm5ldC9tYWM4MDIxMS90eC5jLTQxNzktXG5uZXQvbWFjODAyMTEvdHguYz00MTgwPXZvaWQgX19pZWVlODAyMTFfc2NoZWR1bGVfdHhxKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbm5ldC9tYWM4MDIxMS90eC5jLTQxOTktXHRcdCAqIGdldCBpbW1lZGlhdGVseSBtb3ZlZCB0byB0aGUgYmFjayBvZiB0aGUgbGlzdCBvbiB0aGUgbmV4dFxubmV0L21hYzgwMjExL3R4LmM6NDIwMDpcdFx0ICogY2FsbCB0byBpZWVlODAyMTFfbmV4dF90eHEoKS5cbm5ldC9tYWM4MDIxMS90eC5jLTQyMDEtXHRcdCAqL1xuLS1cbm5ldC9tYWM4MDIxMS90eC5jPTQzNDI9RVhQT1JUX1NZTUJPTChpZWVlODAyMTFfdHhxX21heV90cmFuc21pdCk7XG5uZXQvbWFjODAyMTEvdHguYy00MzQzLVxubmV0L21hYzgwMjExL3R4LmM6NDM0NDp2b2lkIGllZWU4MDIxMV90eHFfc2NoZWR1bGVfc3RhcnQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHU4IGFjKVxubmV0L21hYzgwMjExL3R4LmMtNDM0NS17XG4tLVxubmV0L21hYzgwMjExL3R4LmMtNDM1OS19XG5uZXQvbWFjODAyMTEvdHguYzo0MzYwOkVYUE9SVF9TWU1CT0woaWVlZTgwMjExX3R4cV9zY2hlZHVsZV9zdGFydCk7XG5uZXQvbWFjODAyMTEvdHguYy00MzYxLVxuLS1cbm5ldC9tYWM4MDIxMS91dGlsLmM9MzA1PXZvaWQgaWVlZTgwMjExX2hhbmRsZV93YWtlX3R4X3F1ZXVlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbm5ldC9tYWM4MDIxMS91dGlsLmMtMzEzLVxubmV0L21hYzgwMjExL3V0aWwuYzozMTQ6XHQvKiBVc2UgaWVlZTgwMjExX25leHRfdHhxKCkgZm9yIGFpcnRpbWUgZmFpcm5lc3MgYWNjb3VudGluZyAqL1xubmV0L21hYzgwMjExL3V0aWwuYzozMTU6XHRpZWVlODAyMTFfdHhxX3NjaGVkdWxlX3N0YXJ0KGh3LCB0eHEtXHUwMDNlYWMpO1xubmV0L21hYzgwMjExL3V0aWwuYzozMTY6XHR3aGlsZSAoKHF1ZXVlID0gaWVlZTgwMjExX25leHRfdHhxKGh3LCB0eHEtXHUwMDNlYWMpKSkge1xubmV0L21hYzgwMjExL3V0aWwuYy0zMTctXHRcdHdha2VfdHhfcHVzaF9xdWV1ZShsb2NhbCwgc2RhdGEsIHF1ZXVlKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTc6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI5MTAKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBtYWM4MDIxMSBTdWJzeXN0ZW0gYW5kIGl0cyBGdXp6aW5nIExhbmRzY2FwZSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGZvY3VzIGlzIG9uIHRoZXNlIGZ1bmN0aW9uczogYGllZWU4MDIxMV9uZXh0X3R4cWAsIGBpZWVlODAyMTFfdHhxX3NjaGVkdWxlX3N0YXJ0YCwgYW5kIGBpZWVlODAyMTFfaGFuZGxlX3dha2VfdHhfcXVldWVgLiBUaGV5JiMzOTtyZSBhbGwgZmlybWx5IHJvb3RlZCBpbiB0aGUgYG5ldC9tYWM4MDIxMWAgY29yZSwgc3BlY2lmaWNhbGx5IHdpdGhpbiBgdHguY2AgYW5kIGB1dGlsLmNgLiBUaGF0JiMzOTtzIHRoZSBoZWFydCBvZiB0aGUgbWF0dGVyLiBBbmQgSSBzZWUgdGhhdCBgaWVlZTgwMjExX2hhbmRsZV93YWtlX3R4X3F1ZXVlYCBjYWxscyB0aGUgb3RoZXIgdHdvLCB3aGljaCBpcyBhbiBpbXBvcnRhbnQgaW50ZXJkZXBlbmRlbmN5IHRvIG5vdGUuCgpOb3csIGNvbnNpZGVyaW5nIHRoZSBmdXp6aW5nIGFzcGVjdCwgc3l6a2FsbGVyIGlzIGFjdGl2ZWx5IHRhcmdldGluZyBtYWM4MDIxMS4gSXQmIzM5O3MgZG9pbmcgdGhpcyBlaXRoZXIgdGhyb3VnaCBgbWFjODAyMTFfaHdzaW1gLCB3aGljaCBpcyBlc3NlbnRpYWxseSBhIHNvZnR3YXJlIGVtdWxhdGlvbiBvZiBhIHdpcmVsZXNzIGRldmljZSwgb3IgdmlhIHRoZSBzdGFuZGFyZCBpbnRlcmZhY2VzIHdlJiMzOTtyZSBhbGwgZmFtaWxpYXIgd2l0aDogbmw4MDIxMSwgc29ja2V0IGludGVyZmFjZXMsIGFuZCB2aXJ0dWFsIGRldmljZXMuIFRoYXQmIzM5O3MgYSBnb29kIGFwcHJvYWNoIHRvIGVuc3VyZSBicm9hZCBjb3ZlcmFnZS4KClRoZSBuZXh0IGNyaXRpY2FsIHN0ZXAgaXMgdG8gdmVyaWZ5IHRoZSBjb25uZWN0aW9uIGJldHdlZW4gYG1hYzgwMjExX2h3c2ltYCBhbmQgbWFjODAyMTEgaXRzZWxmLiBJJiMzOTtkIGV4cGVjdCBhIGRlcGVuZGVuY3ksIGFuZCBpbmRlZWQsIGBNQUM4MDIxMV9IV1NJTWAgcmVsaWVzIG9uIGBNQUM4MDIxMWAuIFRoYXQmIzM5O3Mgd2hhdCBJIHRob3VnaHQsIGJ1dCBJJiMzOTtsbCBkb3VibGUtY2hlY2sgdGhlIGBLY29uZmlnYCBmb3IgYE1BQzgwMjExX0hXU0lNYCBqdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbi4gSXQmIzM5O3MgYWx3YXlzIGdvb2QgdG8gYmUgdGhvcm91Z2ggd2hlbiB5b3UmIzM5O3JlIGRlYWxpbmcgd2l0aCB0aGVzZSBzeXN0ZW1zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxNzo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTUFDODAyMTFfSFdTSU0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnOjE6Y29uZmlnIE1BQzgwMjExX0hXU0lNXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWctMi1cdHRyaXN0YXRlIFwmIzM0O1NpbXVsYXRlZCByYWRpbyB0ZXN0aW5nIHRvb2wgZm9yIG1hYzgwMjExXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDE3OjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzNjEwCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTA5NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE1BQzgwMjExIFBhdGNoIGZvciBUWCBRdWV1ZSBTY2hlZHVsaW5nKioKCk9rYXksIHNvIHRoZSBpbml0aWFsIGZvY3VzIGlzIGBNQUM4MDIxMWAgYXMgdGhlIGtleSBjb25maWd1cmF0aW9uIG9wdGlvbi4gUmlnaHQsIGl0IGRlcGVuZHMgb24gYENGRzgwMjExYC4gQ29uZmlybWVkIGJ5IHJlLWV4YW1pbmluZyBgbmV0L21hYzgwMjExL0tjb25maWdgLiBTbywgYE1BQzgwMjExYCBhbmQgYENGRzgwMjExYCBhcmUgdGhlIHJlcXVpcmVkIGNvbmZpZ3MuCgpOb3csIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBwYXRjaC4gVGhlIGRpZmYgc2hvd3MgbW9kaWZpY2F0aW9ucyB0byBgaWVlZTgwMjExX2kuaGAgYW5kIGB0eC5jYC4gSW4gYGllZWU4MDIxMV9pLmhgLCB0aGV5JiMzOTt2ZSBhZGRlZCBgc2NoZWR1bGVfb3BlbmAgYXMgYSBib29sZWFuIGFsb25nc2lkZSBgc2NoZWR1bGVfcm91bmRgIHdpdGhpbiB0aGUgYGllZWU4MDIxMV9sb2NhbGAgc3RydWN0LiBUaGUgY29yZSBjaGFuZ2UgaXMgaW4gYHR4LmNgIHdpdGggdGhlIGludHJvZHVjdGlvbiBvZiBgc2NoZWR1bGVfb3BlbmAuIFByZXZpb3VzbHksIHRoZSBjb2RlIGNoZWNrZWQgYCFsb2NhbC0mZ3Q7c2NoZWR1bGVfcm91bmRbYWNdYCBpbiBgaWVlZTgwMjExX25leHRfdHhxYCwgd2hpY2ggbm93IGNoZWNrcyBgIWxvY2FsLSZndDtzY2hlZHVsZV9vcGVuW2FjXWAuIFRoaXMgaXMgdGhlIGltcG9ydGFudCBkaXN0aW5jdGlvbiBoZXJlLgoKVGhlIHJhdGlvbmFsZSBiZWhpbmQgdGhlIGNoYW5nZSBpcyBjbGVhcjogIHRoZSBwcmV2aW91cyBiZWhhdmlvciB3YXMgdG8gcmVzZXQgYHNjaGVkdWxlX3JvdW5kYCB0byB6ZXJvIGlmIHRoZSBgc2NoZWR1bGVfYWlydGltZV9jaGVja2AgZmFpbGVkLiBUaGF0JiMzOTtzIG5vdCBpZGVhbCBiZWNhdXNlIHRoZSBgc2NoZWR1bGVfcm91bmRgIGZpZWxkIGNhbiBiZSB1c2VkIGZvciByb3VuZCBkZXRlY3Rpb24gb3IgZGVmaWNpdCBjYWxjdWxhdGlvbiBhcyB3ZWxsLiBSZXNldHRpbmcgaXQgY291bGQgaW50cm9kdWNlIHN1YnRsZSBpc3N1ZXMgd2l0aCB0aGUgcm91bmQgY291bnRlci4gVGhlIG5ldyBgc2NoZWR1bGVfb3BlbmAgZmxhZyBwcm92aWRlcyBhIHNlcGFyYXRlIHdheSB0byB0cmFjayB3aGV0aGVyIHNjaGVkdWxpbmcgaXMgJiMzNDtvcGVuJiMzNDsgd2l0aG91dCBpbnRlcmZlcmluZyB3aXRoIHRoZSBwcm9wZXIgb3BlcmF0aW9uIG9mIGBzY2hlZHVsZV9yb3VuZGAuICBgc2NoZWR1bGVfb3BlbmAgaXMgbm93IGRpcmVjdGx5IHNldCB0byB0aGUgcmVzdWx0IG9mIGBzY2hlZHVsZV9haXJ0aW1lX2NoZWNrYC4KCkl0IG1ha2VzIHNlbnNlOyB0aGlzIGNoYW5nZSBtb2RpZmllcyBzdGF0ZSBtYW5hZ2VtZW50IHdpdGhpbiB0aGUgVFggcXVldWUgc2NoZWR1bGluZyBsb2dpYyBpbiBtYWM4MDIxMS4gVGhpcyBpcyBkZWZpbml0ZWx5IHNvbWV0aGluZyB0aGF0IGNvdWxkIGJlIHRyaWdnZXJlZCBkdXJpbmcgdmlydHVhbGl6ZWQgZnV6emluZywgbGlrZSB3aXRoIG1hYzgwMjExX2h3c2ltLCBuZXRsaW5rIC8gbmw4MDIxMSwgb3IgZHVyaW5nIHdpZmkgdHJhbnNtaXNzaW9uLgoKTGV0IG1lIG5vdyBwaW5wb2ludCBzb21lIGtleSBmdW5jdGlvbnMgaW52b2x2ZWQ6IGBpZWVlODAyMTFfbmV4dF90eHFgIGFuZCBgaWVlZTgwMjExX3R4cV9zY2hlZHVsZV9zdGFydGAuCgpJIHNob3VsZCBwcm9iYWJseSBsb29rIGZvciBvdGhlciBjb2RlIHdoaWNoIHVzZXMgdGhlIGFkZGVkIGBzY2hlZHVsZV9vcGVuYCBmaWVsZCBvciB0aGUgb3JpZ2luYWwgYHNjaGVkdWxlX3JvdW5kYCBmaWVsZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbXBsZXRlIGltcGFjdCBvbiB0aGUgVFggcXVldWUgc2NoZWR1bGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTc6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2NoZWR1bGVfcm91bmQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oPTk2Mz1lbnVtIHR4cV9pbmZvX2ZsYWdzIHtcbi0tXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC05NzctICogQHNjaGVkdWxlX29yZGVyOiB1c2VkIHdpdGggaWVlZTgwMjExX2xvY2FsLVx1MDAzZWFjdGl2ZV90eHFzXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaDo5Nzg6ICogQHNjaGVkdWxlX3JvdW5kOiBjb3VudGVyIHRvIHByZXZlbnQgaW5maW5pdGUgbG9vcHMgb24gVFhRIHNjaGVkdWxpbmdcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTk3OS0gKiBAZmxhZ3M6IFRYUSBmbGFncyBmcm9tIFx1MDAyNmVudW0gdHhxX2luZm9fZmxhZ3Ncbi0tXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaD05ODI9c3RydWN0IHR4cV9pbmZvIHtcbi0tXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC05ODYtXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaDo5ODc6XHR1MTYgc2NoZWR1bGVfcm91bmQ7XG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC05ODgtXHRzdHJ1Y3QgbGlzdF9oZWFkIHNjaGVkdWxlX29yZGVyO1xuLS1cbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oPTE0NTc9c3RydWN0IGllZWU4MDIxMV9sb2NhbCB7XG4tLVxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMTQ2OS1cdHN0cnVjdCBsaXN0X2hlYWQgYWN0aXZlX3R4cXNbSUVFRTgwMjExX05VTV9BQ1NdO1xubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg6MTQ3MDpcdHUxNiBzY2hlZHVsZV9yb3VuZFtJRUVFODAyMTFfTlVNX0FDU107XG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC0xNDcxLVx0Ym9vbCBzY2hlZHVsZV9vcGVuW0lFRUU4MDIxMV9OVU1fQUNTXTtcbi0tXG5uZXQvbWFjODAyMTEvdHguYz00MTE1PXN0cnVjdCBpZWVlODAyMTFfdHhxICppZWVlODAyMTFfbmV4dF90eHEoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHU4IGFjKVxuLS1cbm5ldC9tYWM4MDIxMS90eC5jLTQxNjYtXG5uZXQvbWFjODAyMTEvdHguYzo0MTY3Olx0aWYgKHR4cWktXHUwMDNlc2NoZWR1bGVfcm91bmQgPT0gbG9jYWwtXHUwMDNlc2NoZWR1bGVfcm91bmRbYWNdKVxubmV0L21hYzgwMjExL3R4LmMtNDE2OC1cdFx0Z290byBvdXQ7XG4tLVxubmV0L21hYzgwMjExL3R4LmMtNDE3MC1cdGxpc3RfZGVsX2luaXQoXHUwMDI2dHhxaS1cdTAwM2VzY2hlZHVsZV9vcmRlcik7XG5uZXQvbWFjODAyMTEvdHguYzo0MTcxOlx0dHhxaS1cdTAwM2VzY2hlZHVsZV9yb3VuZCA9IGxvY2FsLVx1MDAzZXNjaGVkdWxlX3JvdW5kW2FjXTtcbm5ldC9tYWM4MDIxMS90eC5jLTQxNzItXHRyZXQgPSBcdTAwMjZ0eHFpLVx1MDAzZXR4cTtcbi0tXG5uZXQvbWFjODAyMTEvdHguYz00MzQ0PXZvaWQgaWVlZTgwMjExX3R4cV9zY2hlZHVsZV9zdGFydChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgdTggYWMpXG4tLVxubmV0L21hYzgwMjExL3R4LmMtNDM1Mi1cdGlmIChsb2NhbC1cdTAwM2VzY2hlZHVsZV9vcGVuW2FjXSkge1xubmV0L21hYzgwMjExL3R4LmM6NDM1MzpcdFx0bG9jYWwtXHUwMDNlc2NoZWR1bGVfcm91bmRbYWNdJiM0MzsmIzQzOztcbm5ldC9tYWM4MDIxMS90eC5jOjQzNTQ6XHRcdGlmICghbG9jYWwtXHUwMDNlc2NoZWR1bGVfcm91bmRbYWNdKVxubmV0L21hYzgwMjExL3R4LmM6NDM1NTpcdFx0XHRsb2NhbC1cdTAwM2VzY2hlZHVsZV9yb3VuZFthY10mIzQzOyYjNDM7O1xubmV0L21hYzgwMjExL3R4LmMtNDM1Ni1cdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTc6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTYxODgKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAyODUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgU2NoZWR1bGluZyBCdWcgaW4gbWFjODAyMTEqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYml0IG9mIGNvZGU6IGB0eHFpLSZndDtzY2hlZHVsZV9yb3VuZCA9PSBsb2NhbC0mZ3Q7c2NoZWR1bGVfcm91bmRbYWNdYCBpbnNpZGUgYGllZWU4MDIxMV9uZXh0X3R4cWAuIEludGVyZXN0aW5nISBJdCBsb29rcyBsaWtlIHRoZXJlIHdhcyBhIG5hc3R5IGJ1ZyB3aGVyZSBgc2NoZWR1bGVfcm91bmRgIGJlaW5nIGluaXRpYWxpemVkIHRvIHplcm8gY2F1c2VkIHNvbWUgaXNzdWVzLiBJdCBlaXRoZXIgY29uZmxpY3RlZCB3aXRoIHVuaW5pdGlhbGl6ZWQgdmFsdWVzIGZvciBgdHhxaS0mZ3Q7c2NoZWR1bGVfcm91bmRgLCBvciBpdCBjYXVzZWQgcHJvYmxlbXMgd2hlbiBzY2hlZHVsaW5nIHdhcyB0dXJuZWQgb2ZmIGFuZCB0aGVuIGJhY2sgb24uIEkgbmVlZCB0byBrZWVwIGluIG1pbmQgdGhhdCBJJiMzOTttIGRlYWxpbmcgd2l0aCBgaWVlZTgwMjExX25leHRfdHhxYCBhbmQgYGllZWU4MDIxMV90eHFfc2NoZWR1bGVfc3RhcnRgLiBUaG9zZSBhcmUgdGhlIGZ1bmN0aW9ucyB0aGF0IHdlcmUgbW9kaWZpZWQgdG8gYWRkcmVzcyB0aGlzLgoKUmlnaHQsIGxldCYjMzk7cyBzZWUgaG93IHRoaXMgcGxheXMgb3V0IGluIHRlcm1zIG9mIGZ1enppbmcuIFRoYW5rZnVsbHksIFdvcnRoRnV6emluZyBjb25maXJtcyB0aGlzIGlzIGEgZ29vZCB0YXJnZXQuIE1hYzgwMjExIGlzIGEgY2VudHJhbCBwaWVjZSwgcGFydCBvZiB0aGUgY29yZSBJRUVFIDgwMi4xMSBzdGFjayB1c2VkIGJ5IHZhcmlvdXMgZHJpdmVycyBhbmQgdGVzdCBoYXJuZXNzZXMsIGluY2x1ZGluZyBtYWM4MDIxMV9od3NpbSwgc28gaXQgc2hvdWxkIGJlIGVhc3kgdG8gcmVhY2guIEFuZCB5ZXMsIGl0JiMzOTtzIHJlYWNoYWJsZSBpbiBRRU1VIGFuZCB0aGUgc3RhbmRhcmQgZnV6emluZyBlbnZpcm9ubWVudHMuIEV4Y2VsbGVudC4KClRoZSBmb2N1cyBoZXJlIGlzIGNsZWFybHkgb24gYGllZWU4MDIxMV9uZXh0X3R4cWAgYW5kIGBpZWVlODAyMTFfdHhxX3NjaGVkdWxlX3N0YXJ0YCwgd2hpY2ggbWFrZXMgc2Vuc2UgZ2l2ZW4gdGhlIGluaXRpYWwgY29kZSBzbmlwcGV0LgoKTm93LCBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50cy4gVGhlIHJlbGV2YW50IGNvbmZpZyBvcHRpb25zIGFyZSBgTUFDODAyMTFgIGFuZCBgQ0ZHODAyMTFgLiBUaGF0IGlzIGltcG9ydGFudCBpbmZvcm1hdGlvbiB0aGF0IEkgbmVlZCB0byBrZWVwIGluIG1pbmQuCgpGaW5hbGx5LCBJJiMzOTtsbCB0YWtlIGEgcXVpY2sgbG9vayBhdCBgbmV0L21hYzgwMjExL01ha2VmaWxlYCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBkZXBlbmRlbmNpZXMgb3IgcmVxdWlyZW1lbnRzIEkgbmVlZCB0byBiZSBhd2FyZSBvZiBiZWZvcmUgSSBkaWcgaW4gZGVlcGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxNzo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0eC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvTWFrZWZpbGU9NT1tYWM4MDIxMS15IDo9IFxcXG4tLVxubmV0L21hYzgwMjExL01ha2VmaWxlLTEyLVx0c2Nhbi5vIG9mZmNoYW5uZWwubyBcXFxubmV0L21hYzgwMjExL01ha2VmaWxlOjEzOlx0aHQubyBhZ2ctdHgubyBhZ2ctcngubyBcXFxubmV0L21hYzgwMjExL01ha2VmaWxlLTE0LVx0dmh0Lm8gXFxcbi0tXG5uZXQvbWFjODAyMTEvTWFrZWZpbGUtMjgtXHRzcGVjdG1nbXQubyBcXFxubmV0L21hYzgwMjExL01ha2VmaWxlOjI5Olx0dHgubyBcXFxubmV0L21hYzgwMjExL01ha2VmaWxlLTMwLVx0a2V5Lm8gXFxcbi0tXG5uZXQvbWFjODAyMTEvYWdnLXR4LmM9NzU0PUVYUE9SVF9TWU1CT0woaWVlZTgwMjExX3N0YXJ0X3R4X2JhX3Nlc3Npb24pO1xubmV0L21hYzgwMjExL2FnZy10eC5jLTc1NS1cbm5ldC9tYWM4MDIxMS9hZ2ctdHguYzo3NTY6c3RhdGljIHZvaWQgaWVlZTgwMjExX2FnZ190eF9vcGVyYXRpb25hbChzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYy03NTctXHRcdFx0XHRcdCBzdHJ1Y3Qgc3RhX2luZm8gKnN0YSwgdTE2IHRpZClcbi0tXG5uZXQvbWFjODAyMTEvYWdnLXR4LmM9Nzk5PXZvaWQgaWVlZTgwMjExX3N0YXJ0X3R4X2JhX2NiKHN0cnVjdCBzdGFfaW5mbyAqc3RhLCBpbnQgdGlkLFxuLS1cbm5ldC9tYWM4MDIxMS9hZ2ctdHguYy04MjAtXHRpZiAodGVzdF9iaXQoSFRfQUdHX1NUQVRFX1JFU1BPTlNFX1JFQ0VJVkVELCBcdTAwMjZ0aWRfdHgtXHUwMDNlc3RhdGUpKVxubmV0L21hYzgwMjExL2FnZy10eC5jOjgyMTpcdFx0aWVlZTgwMjExX2FnZ190eF9vcGVyYXRpb25hbChsb2NhbCwgc3RhLCB0aWQpO1xubmV0L21hYzgwMjExL2FnZy10eC5jLTgyMi19XG4tLVxubmV0L21hYzgwMjExL2FnZy10eC5jPTk3Nz12b2lkIGllZWU4MDIxMV9wcm9jZXNzX2FkZGJhX3Jlc3Aoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG4tLVxubmV0L21hYzgwMjExL2FnZy10eC5jLTEwNTEtXHRcdGlmICh0ZXN0X2JpdChIVF9BR0dfU1RBVEVfRFJWX1JFQURZLCBcdTAwMjZ0aWRfdHgtXHUwMDNlc3RhdGUpKVxubmV0L21hYzgwMjExL2FnZy10eC5jOjEwNTI6XHRcdFx0aWVlZTgwMjExX2FnZ190eF9vcGVyYXRpb25hbChsb2NhbCwgc3RhLCB0aWQpO1xubmV0L21hYzgwMjExL2FnZy10eC5jLTEwNTMtXG4tLVxubmV0L21hYzgwMjExL2NmZy5jPTM3MDg9c3RhdGljIGludCBpZWVlODAyMTFfc2V0X3R4X3Bvd2VyKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTM3NjEtXG5uZXQvbWFjODAyMTEvY2ZnLmM6Mzc2MjpcdFx0XHRpZiAodHhwX3R5cGUgIT0gbGluay1cdTAwM2Vjb25mLVx1MDAzZXR4cG93ZXJfdHlwZSkge1xubmV0L21hYzgwMjExL2NmZy5jLTM3NjMtXHRcdFx0XHR1cGRhdGVfdHhwX3R5cGUgPSB0cnVlO1xubmV0L21hYzgwMjExL2NmZy5jOjM3NjQ6XHRcdFx0XHRsaW5rLVx1MDAzZWNvbmYtXHUwMDNldHhwb3dlcl90eXBlID0gdHhwX3R5cGU7XG5uZXQvbWFjODAyMTEvY2ZnLmMtMzc2NS1cdFx0XHR9XG5uZXQvbWFjODAyMTEvY2ZnLmMtMzc2Ni1cbm5ldC9tYWM4MDIxMS9jZmcuYzozNzY3Olx0XHRcdGllZWU4MDIxMV9yZWNhbGNfdHhwb3dlcihsaW5rLCB1cGRhdGVfdHhwX3R5cGUpO1xubmV0L21hYzgwMjExL2NmZy5jLTM3NjgtXHRcdH1cbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtMzc5MC1cdFx0XHRsaW5rLVx1MDAzZXVzZXJfcG93ZXJfbGV2ZWwgPSBsb2NhbC1cdTAwM2V1c2VyX3Bvd2VyX2xldmVsO1xubmV0L21hYzgwMjExL2NmZy5jOjM3OTE6XHRcdFx0aWYgKHR4cF90eXBlICE9IGxpbmstXHUwMDNlY29uZi1cdTAwM2V0eHBvd2VyX3R5cGUpXG5uZXQvbWFjODAyMTEvY2ZnLmMtMzc5Mi1cdFx0XHRcdHVwZGF0ZV90eHBfdHlwZSA9IHRydWU7XG5uZXQvbWFjODAyMTEvY2ZnLmM6Mzc5MzpcdFx0XHRsaW5rLVx1MDAzZWNvbmYtXHUwMDNldHhwb3dlcl90eXBlID0gdHhwX3R5cGU7XG5uZXQvbWFjODAyMTEvY2ZnLmMtMzc5NC1cdFx0fVxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy0zODA5LVxubmV0L21hYzgwMjExL2NmZy5jOjM4MTA6XHRcdFx0aWVlZTgwMjExX3JlY2FsY190eHBvd2VyKGxpbmssIHVwZGF0ZV90eHBfdHlwZSk7XG5uZXQvbWFjODAyMTEvY2ZnLmMtMzgxMS1cdFx0fVxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy0zODE4LVx0XHRcdHNkYXRhLVx1MDAzZWRlZmxpbmsudXNlcl9wb3dlcl9sZXZlbCA9IGxvY2FsLVx1MDAzZXVzZXJfcG93ZXJfbGV2ZWw7XG5uZXQvbWFjODAyMTEvY2ZnLmM6MzgxOTpcdFx0XHRpZiAodHhwX3R5cGUgIT0gc2RhdGEtXHUwMDNldmlmLmJzc19jb25mLnR4cG93ZXJfdHlwZSlcbm5ldC9tYWM4MDIxMS9jZmcuYy0zODIwLVx0XHRcdFx0dXBkYXRlX3R4cF90eXBlID0gdHJ1ZTtcbm5ldC9tYWM4MDIxMS9jZmcuYzozODIxOlx0XHRcdHNkYXRhLVx1MDAzZXZpZi5ic3NfY29uZi50eHBvd2VyX3R5cGUgPSB0eHBfdHlwZTtcbm5ldC9tYWM4MDIxMS9jZmcuYy0zODIyLVxubmV0L21hYzgwMjExL2NmZy5jOjM4MjM6XHRcdFx0aWVlZTgwMjExX3JlY2FsY190eHBvd2VyKFx1MDAyNnNkYXRhLVx1MDAzZWRlZmxpbmssXG5uZXQvbWFjODAyMTEvY2ZnLmMtMzgyNC1cdFx0XHRcdFx0XHQgdXBkYXRlX3R4cF90eXBlKTtcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmM9MzgzNT1zdGF0aWMgaW50IGllZWU4MDIxMV9nZXRfdHhfcG93ZXIoc3RydWN0IHdpcGh5ICp3aXBoeSxcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtMzg0NC1cbm5ldC9tYWM4MDIxMS9jZmcuYzozODQ1Olx0aWYgKGxvY2FsLVx1MDAzZW9wcy1cdTAwM2VnZXRfdHhwb3dlciBcdTAwMjZcdTAwMjZcbm5ldC9tYWM4MDIxMS9jZmcuYy0zODQ2LVx0ICAgIChzZGF0YS1cdTAwM2VmbGFncyBcdTAwMjYgSUVFRTgwMjExX1NEQVRBX0lOX0RSSVZFUikpXG5uZXQvbWFjODAyMTEvY2ZnLmM6Mzg0NzpcdFx0cmV0dXJuIGRydl9nZXRfdHhwb3dlcihsb2NhbCwgc2RhdGEsIGxpbmtfaWQsIGRibSk7XG5uZXQvbWFjODAyMTEvY2ZnLmMtMzg0OC1cbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtMzg1NC1cdFx0aWYgKGxpbmtfZGF0YSlcbm5ldC9tYWM4MDIxMS9jZmcuYzozODU1Olx0XHRcdCpkYm0gPSBsaW5rX2RhdGEtXHUwMDNlY29uZi1cdTAwM2V0eHBvd2VyO1xubmV0L21hYzgwMjExL2NmZy5jLTM4NTYtXHRcdGVsc2Vcbi0tXG5uZXQvbWFjODAyMTEvY2hhbi5jPTExODE9c3RhdGljIGludCBpZWVlODAyMTFfYXNzaWduX2xpbmtfY2hhbmN0eChzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluayxcbi0tXG5uZXQvbWFjODAyMTEvY2hhbi5jLTEyMzEtXHRpZiAobmV3X2N0eCBcdTAwMjZcdTAwMjYgaWVlZTgwMjExX2NoYW5jdHhfbnVtX2Fzc2lnbmVkKGxvY2FsLCBuZXdfY3R4KSBcdTAwM2UgMCkge1xubmV0L21hYzgwMjExL2NoYW4uYzoxMjMyOlx0XHRpZWVlODAyMTFfcmVjYWxjX3R4cG93ZXIobGluaywgZmFsc2UpO1xubmV0L21hYzgwMjExL2NoYW4uYy0xMjMzLVx0XHRpZWVlODAyMTFfcmVjYWxjX2NoYW5jdHhfbWluX2RlZihsb2NhbCwgbmV3X2N0eCk7XG4tLVxubmV0L21hYzgwMjExL2NoYW4uYz0xODg1PXN0YXRpYyBpbnQgaWVlZTgwMjExX3ZpZl91c2VfcmVzZXJ2ZWRfc3dpdGNoKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKVxuLS1cbm5ldC9tYWM4MDIxMS9jaGFuLmMtMjA2NS1cbm5ldC9tYWM4MDIxMS9jaGFuLmM6MjA2NjpcdFx0XHRpZWVlODAyMTFfcmVjYWxjX3R4cG93ZXIobGluaywgZmFsc2UpO1xubmV0L21hYzgwMjExL2NoYW4uYy0yMDY3LVx0XHR9XG4tLVxubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmM9MzUwPUlFRUU4MDIxMV9JRl9GSUxFKHN0YXRlLCBzdGF0ZSwgTEhFWCk7XG5uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuYzozNTE6SUVFRTgwMjExX0lGX0xJTktfRklMRSh0eHBvd2VyLCBjb25mLVx1MDAzZXR4cG93ZXIsIERFQyk7XG5uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuYy0zNTItSUVFRTgwMjExX0lGX0xJTktfRklMRShhcF9wb3dlcl9sZXZlbCwgYXBfcG93ZXJfbGV2ZWwsIERFQyk7XG4tLVxubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmM9OTgyPXN0YXRpYyB2b2lkIGFkZF9saW5rX2ZpbGVzKHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rLFxuLS1cbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5jLTk4NC17XG5uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuYzo5ODU6XHRERUJVR0ZTX0FERChkZW50cnksIHR4cG93ZXIpO1xubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmMtOTg2LVx0REVCVUdGU19BREQoZGVudHJ5LCB1c2VyX3Bvd2VyX2xldmVsKTtcbi0tXG5uZXQvbWFjODAyMTEvZHJpdmVyLW9wcy5oPTEyOTM9c3RhdGljIGlubGluZSB1MzIgZHJ2X2dldF9leHBlY3RlZF90aHJvdWdocHV0KHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxuLS1cbm5ldC9tYWM4MDIxMS9kcml2ZXItb3BzLmgtMTMwNS1cbm5ldC9tYWM4MDIxMS9kcml2ZXItb3BzLmg6MTMwNjpzdGF0aWMgaW5saW5lIGludCBkcnZfZ2V0X3R4cG93ZXIoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG5uZXQvbWFjODAyMTEvZHJpdmVyLW9wcy5oLTEzMDctXHRcdFx0XHQgIHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9kcml2ZXItb3BzLmgtMTMxNC1cbm5ldC9tYWM4MDIxMS9kcml2ZXItb3BzLmg6MTMxNTpcdGlmICghbG9jYWwtXHUwMDNlb3BzLVx1MDAzZWdldF90eHBvd2VyKVxubmV0L21hYzgwMjExL2RyaXZlci1vcHMuaC0xMzE2LVx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG5uZXQvbWFjODAyMTEvZHJpdmVyLW9wcy5oLTEzMTctXG5uZXQvbWFjODAyMTEvZHJpdmVyLW9wcy5oOjEzMTg6XHRyZXQgPSBsb2NhbC1cdTAwM2VvcHMtXHUwMDNlZ2V0X3R4cG93ZXIoXHUwMDI2bG9jYWwtXHUwMDNlaHcsIFx1MDAyNnNkYXRhLVx1MDAzZXZpZiwgbGlua19pZCwgZGJtKTtcbm5ldC9tYWM4MDIxMS9kcml2ZXItb3BzLmg6MTMxOTpcdHRyYWNlX2Rydl9nZXRfdHhwb3dlcihsb2NhbCwgc2RhdGEsIGxpbmtfaWQsICpkYm0sIHJldCk7XG5uZXQvbWFjODAyMTEvZHJpdmVyLW9wcy5oLTEzMjAtXG4tLVxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg9NzU3PXN0cnVjdCBtZXNoX3RhYmxlIHtcbi0tXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC03NjktICogQHJodDogaGFzaCB0YWJsZSBjb250YWluaW5nIHN0cnVjdCBpZWVlODAyMTFfbWVzaF9mYXN0X3R4LCB1c2luZyBza2IgREEgYXMga2V5XG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaDo3NzA6ICogQHdhbGtfaGVhZDogbGlua2VkIGxpc3QgY29udGFpbmluZyBhbGwgaWVlZTgwMjExX21lc2hfZmFzdF90eCBvYmplY3RzXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC03NzEtICogQHdhbGtfbG9jazogbG9jayBwcm90ZWN0aW5nIHdhbGtfaGVhZCBhbmQgcmh0XG4tLVxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg9MjIxMD12b2lkIGllZWU4MDIxMV9kZWxfdmlydHVhbF9tb25pdG9yKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKTtcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTIyMTEtXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaDoyMjEyOmJvb2wgX19pZWVlODAyMTFfcmVjYWxjX3R4cG93ZXIoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmspO1xubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg6MjIxMzp2b2lkIGllZWU4MDIxMV9yZWNhbGNfdHhwb3dlcihzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluayxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTIyMTQtXHRcdFx0ICAgICAgYm9vbCB1cGRhdGVfYnNzKTtcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYy00MS0gKiBBcyBhIGNvbnNlcXVlbmNlLCByZWFkcyAodHJhdmVyc2Fscykgb2YgdGhlIGxpc3QgY2FuIGJlIHByb3RlY3RlZFxubmV0L21hYzgwMjExL2lmYWNlLmM6NDI6ICogYnkgZWl0aGVyIHRoZSBSVE5MLCB0aGUgd2lwaHkgbXV0ZXgsIHRoZSBpZmxpc3RfbXR4IG9yIFJDVS5cbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTQzLSAqL1xuLS1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jPTQ1PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9pZmFjZV93b3JrKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXBoeV93b3JrICp3b3JrKTtcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTQ2LVxubmV0L21hYzgwMjExL2lmYWNlLmM6NDc6Ym9vbCBfX2llZWU4MDIxMV9yZWNhbGNfdHhwb3dlcihzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluaylcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTQ4LXtcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYy02Ny1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjY4Olx0aWYgKHBvd2VyICE9IGxpbmstXHUwMDNlY29uZi1cdTAwM2V0eHBvd2VyKSB7XG5uZXQvbWFjODAyMTEvaWZhY2UuYzo2OTpcdFx0bGluay1cdTAwM2Vjb25mLVx1MDAzZXR4cG93ZXIgPSBwb3dlcjtcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTcwLVx0XHRyZXR1cm4gdHJ1ZTtcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYy03NS1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjc2OnZvaWQgaWVlZTgwMjExX3JlY2FsY190eHBvd2VyKHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rLFxubmV0L21hYzgwMjExL2lmYWNlLmMtNzctXHRcdFx0ICAgICAgYm9vbCB1cGRhdGVfYnNzKVxubmV0L21hYzgwMjExL2lmYWNlLmMtNzgte1xubmV0L21hYzgwMjExL2lmYWNlLmM6Nzk6XHRpZiAoX19pZWVlODAyMTFfcmVjYWxjX3R4cG93ZXIobGluaykgfHxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTgwLVx0ICAgICh1cGRhdGVfYnNzIFx1MDAyNlx1MDAyNiBpZWVlODAyMTFfc2RhdGFfcnVubmluZyhsaW5rLVx1MDAzZXNkYXRhKSkpXG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmM9MTg3OD1zdGF0aWMgdm9pZCBpZWVlODAyMTFfc2V0dXBfc2RhdGEoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmMtMTg5Ny1cdHNkYXRhLVx1MDAzZXZpZi5jZmcuaWRsZSA9IHRydWU7XG5uZXQvbWFjODAyMTEvaWZhY2UuYzoxODk4Olx0c2RhdGEtXHUwMDNldmlmLmJzc19jb25mLnR4cG93ZXIgPSBJTlRfTUlOOyAvKiB1bnNldCAqL1xubmV0L21hYzgwMjExL2lmYWNlLmMtMTg5OS1cbi0tXG5uZXQvbWFjODAyMTEva2V5LmM9NTk2PWllZWU4MDIxMV9rZXlfYWxsb2ModTMyIGNpcGhlciwgaW50IGlkeCwgc2l6ZV90IGtleV9sZW4sXG4tLVxubmV0L21hYzgwMjExL2tleS5jLTYzOS1cdFx0fVxubmV0L21hYzgwMjExL2tleS5jOjY0MDpcdFx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2a2V5LVx1MDAzZXUudGtpcC50eGxvY2spO1xubmV0L21hYzgwMjExL2tleS5jLTY0MS1cdFx0YnJlYWs7XG4tLVxubmV0L21hYzgwMjExL2tleS5oPTU5PXN0cnVjdCBpZWVlODAyMTFfa2V5IHtcbi0tXG5uZXQvbWFjODAyMTEva2V5LmgtNzItXHRcdFx0LyogcHJvdGVjdHMgdHggY29udGV4dCAqL1xubmV0L21hYzgwMjExL2tleS5oOjczOlx0XHRcdHNwaW5sb2NrX3QgdHhsb2NrO1xubmV0L21hYzgwMjExL2tleS5oLTc0LVxuLS1cbm5ldC9tYWM4MDIxMS9saW5rLmM9OTU9dm9pZCBpZWVlODAyMTFfbGlua19pbml0KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9saW5rLmMtMTI3LVx0bGluay1cdTAwM2V1c2VyX3Bvd2VyX2xldmVsID0gc2RhdGEtXHUwMDNlbG9jYWwtXHUwMDNldXNlcl9wb3dlcl9sZXZlbDtcbm5ldC9tYWM4MDIxMS9saW5rLmM6MTI4Olx0bGlua19jb25mLVx1MDAzZXR4cG93ZXIgPSBJTlRfTUlOO1xubmV0L21hYzgwMjExL2xpbmsuYy0xMjktXG4tLVxubmV0L21hYzgwMjExL21haW4uYz05Nj1zdGF0aWMgdTMyIGllZWU4MDIxMV9jYWxjX2h3X2NvbmZfY2hhbihzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbi0tXG5uZXQvbWFjODAyMTEvbWFpbi5jLTE3OC1cdFx0XHRjb250aW51ZTtcbm5ldC9tYWM4MDIxMS9tYWluLmM6MTc5Olx0XHRpZiAoc2RhdGEtXHUwMDNldmlmLmJzc19jb25mLnR4cG93ZXIgPT0gSU5UX01JTilcbm5ldC9tYWM4MDIxMS9tYWluLmMtMTgwLVx0XHRcdGNvbnRpbnVlO1xubmV0L21hYzgwMjExL21haW4uYzoxODE6XHRcdHBvd2VyID0gbWluKHBvd2VyLCBzZGF0YS1cdTAwM2V2aWYuYnNzX2NvbmYudHhwb3dlcik7XG5uZXQvbWFjODAyMTEvbWFpbi5jLTE4Mi1cdH1cbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jPTM2Nzc9c3RhdGljIHU2NCBpZWVlODAyMTFfaGFuZGxlX3B3cl9jb25zdHIoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmssXG4tLVxubmV0L21hYzgwMjExL21sbWUuYy0zNzM4LVx0bGluay1cdTAwM2VhcF9wb3dlcl9sZXZlbCA9IG5ld19hcF9sZXZlbDtcbm5ldC9tYWM4MDIxMS9tbG1lLmM6MzczOTpcdGlmIChfX2llZWU4MDIxMV9yZWNhbGNfdHhwb3dlcihsaW5rKSlcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMzc0MC1cdFx0cmV0dXJuIEJTU19DSEFOR0VEX1RYUE9XRVI7XG4tLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM9Mzc4MD1pZWVlODAyMTFfc3RhX2N1cnJlbnRfYndfcnhfZnJvbV9zdGEoc3RydWN0IGxpbmtfc3RhX2luZm8gKmxpbmtfc3RhLFxuLS1cbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTM3OTAtXHQgKiBhdCBhIGhpZ2hlciBiYW5kd2lkdGggZmlyc3Qgd2hpbGUgcmVkdWNpbmcgYmFuZHdpZHRoLCBhbmRcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jOjM3OTE6XHQgKiBjaGFuZ2UgdGhlIGNoYW5jdHggb25seSBhZnRlciB0aGUgcGVlciBhY2NlcHRzLCBldGMuKVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMzc5Mi1cdCAqL1xuLS1cbm5ldC9tYWM4MDIxMS90a2lwLmM9MTUyPXN0YXRpYyB2b2lkIGllZWU4MDIxMV9jb21wdXRlX3RraXBfcDFrKHN0cnVjdCBpZWVlODAyMTFfa2V5ICprZXksIHUzMiBpdjMyKVxuLS1cbm5ldC9tYWM4MDIxMS90a2lwLmMtMTU3LVxubmV0L21hYzgwMjExL3RraXAuYzoxNTg6XHRsb2NrZGVwX2Fzc2VydF9oZWxkKFx1MDAyNmtleS1cdTAwM2V1LnRraXAudHhsb2NrKTtcbm5ldC9tYWM4MDIxMS90a2lwLmMtMTU5LVxuLS1cbm5ldC9tYWM4MDIxMS90a2lwLmM9MTcxPXZvaWQgaWVlZTgwMjExX2dldF90a2lwX3Axa19pdihzdHJ1Y3QgaWVlZTgwMjExX2tleV9jb25mICprZXljb25mLFxuLS1cbm5ldC9tYWM4MDIxMS90a2lwLmMtMTc3LVxubmV0L21hYzgwMjExL3RraXAuYzoxNzg6XHRzcGluX2xvY2tfYmgoXHUwMDI2a2V5LVx1MDAzZXUudGtpcC50eGxvY2spO1xubmV0L21hYzgwMjExL3RraXAuYy0xNzktXHRpZWVlODAyMTFfY29tcHV0ZV90a2lwX3AxayhrZXksIGl2MzIpO1xubmV0L21hYzgwMjExL3RraXAuYy0xODAtXHRtZW1jcHkocDFrLCBjdHgtXHUwMDNlcDFrLCBzaXplb2YoY3R4LVx1MDAzZXAxaykpO1xubmV0L21hYzgwMjExL3RraXAuYzoxODE6XHRzcGluX3VubG9ja19iaChcdTAwMjZrZXktXHUwMDNldS50a2lwLnR4bG9jayk7XG5uZXQvbWFjODAyMTEvdGtpcC5jLTE4Mi19XG4tLVxubmV0L21hYzgwMjExL3RraXAuYz0xOTY9dm9pZCBpZWVlODAyMTFfZ2V0X3RraXBfcDJrKHN0cnVjdCBpZWVlODAyMTFfa2V5X2NvbmYgKmtleWNvbmYsXG4tLVxubmV0L21hYzgwMjExL3RraXAuYy0yMDctXG5uZXQvbWFjODAyMTEvdGtpcC5jOjIwODpcdHNwaW5fbG9jayhcdTAwMjZrZXktXHUwMDNldS50a2lwLnR4bG9jayk7XG5uZXQvbWFjODAyMTEvdGtpcC5jLTIwOS1cdGllZWU4MDIxMV9jb21wdXRlX3RraXBfcDFrKGtleSwgaXYzMik7XG5uZXQvbWFjODAyMTEvdGtpcC5jLTIxMC1cdHRraXBfbWl4aW5nX3BoYXNlMih0aywgY3R4LCBpdjE2LCBwMmspO1xubmV0L21hYzgwMjExL3RraXAuYzoyMTE6XHRzcGluX3VubG9jayhcdTAwMjZrZXktXHUwMDNldS50a2lwLnR4bG9jayk7XG5uZXQvbWFjODAyMTEvdGtpcC5jLTIxMi19XG4tLVxubmV0L21hYzgwMjExL3RyYWNlLmg9NDcxPVRSQUNFX0VWRU5UKGRydl9saW5rX2luZm9fY2hhbmdlZCxcbi0tXG5uZXQvbWFjODAyMTEvdHJhY2UuaC01MDMtXHRcdF9fZmllbGQoYm9vbCwgaGlkZGVuX3NzaWQpXG5uZXQvbWFjODAyMTEvdHJhY2UuaDo1MDQ6XHRcdF9fZmllbGQoaW50LCB0eHBvd2VyKVxubmV0L21hYzgwMjExL3RyYWNlLmgtNTA1LVx0XHRfX2ZpZWxkKHU4LCBwMnBfb3BwcHNfY3R3aW5kb3cpXG4tLVxubmV0L21hYzgwMjExL3RyYWNlLmgtNTMzLVx0XHRfX2VudHJ5LVx1MDAzZWhpZGRlbl9zc2lkID0gbGlua19jb25mLVx1MDAzZWhpZGRlbl9zc2lkO1xubmV0L21hYzgwMjExL3RyYWNlLmg6NTM0Olx0XHRfX2VudHJ5LVx1MDAzZXR4cG93ZXIgPSBsaW5rX2NvbmYtXHUwMDNldHhwb3dlcjtcbm5ldC9tYWM4MDIxMS90cmFjZS5oLTUzNS1cdFx0X19lbnRyeS1cdTAwM2VwMnBfb3BwcHNfY3R3aW5kb3cgPSBsaW5rX2NvbmYtXHUwMDNlcDJwX25vYV9hdHRyLm9wcHBzX2N0d2luZG93O1xuLS1cbm5ldC9tYWM4MDIxMS90cmFjZS5oPTIyMjQ9REVGSU5FX0VWRU5UKGNoYW5zd2l0Y2hfZXZ0LCBkcnZfY2hhbm5lbF9zd2l0Y2hfcnhfYmVhY29uLFxuLS1cbm5ldC9tYWM4MDIxMS90cmFjZS5oLTIyMzAtXG5uZXQvbWFjODAyMTEvdHJhY2UuaDoyMjMxOlRSQUNFX0VWRU5UKGRydl9nZXRfdHhwb3dlcixcbm5ldC9tYWM4MDIxMS90cmFjZS5oLTIyMzItXHRUUF9QUk9UTyhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbi0tXG5uZXQvbWFjODAyMTEvdHguYz00NTE2PWllZWU4MDIxMV9jb252ZXJ0X3RvX3VuaWNhc3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvbWFjODAyMTEvdHguYy00NTY1LVxubmV0L21hYzgwMjExL3R4LmM6NDU2NjpzdGF0aWMgdm9pZCBpZWVlODAyMTFfbWxvX211bHRpY2FzdF90eF9vbmUoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG5uZXQvbWFjODAyMTEvdHguYy00NTY3LVx0XHRcdFx0XHQgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MzIgY3RybF9mbGFncyxcbi0tXG5uZXQvbWFjODAyMTEvdHguYz00NTgwPXN0YXRpYyB2b2lkIGllZWU4MDIxMV9tbG9fbXVsdGljYXN0X3R4KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L21hYzgwMjExL3R4LmMtNDU5Ni1cdGZvcl9lYWNoX3NldF9iaXQobGluaywgXHUwMDI2bGlua3MsIElFRUU4MDIxMV9NTERfTUFYX05VTV9MSU5LUykge1xubmV0L21hYzgwMjExL3R4LmM6NDU5NzpcdFx0aWVlZTgwMjExX21sb19tdWx0aWNhc3RfdHhfb25lKHNkYXRhLCBza2IsIGN0cmxfZmxhZ3MsIGxpbmspO1xubmV0L21hYzgwMjExL3R4LmMtNDU5OC1cdFx0Y3RybF9mbGFncyA9IDA7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDE3OjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyODYwCgkJCQkJCQlvdXRwdXQ6IDE1NwoJCQkJCQkJdGhvdWdodHM6IDE4MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCYjMzk7cyBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBhZnRlciByZXZpZXdpbmcgdGhpcyBjb2RlIGNoYW5nZSwgaGVyZSYjMzk7cyBteSBxdWljayB0YWtlLiBUaGlzIHBhdGNoIGlzICpkZWZpbml0ZWx5KiB3b3J0aCBmdXp6aW5nLCB0aGF0JiMzOTtzIGEgc29saWQgJiMzNDt0cnVlJiMzNDsgZnJvbSBtZS4gSSYjMzk7dmUgcGlucG9pbnRlZCBhIGNvdXBsZSBvZiBrZXkgZnVuY3Rpb25zIHRvIHRhcmdldDogYGllZWU4MDIxMV9uZXh0X3R4cWAgYW5kIGBpZWVlODAyMTFfdHhxX3NjaGVkdWxlX3N0YXJ0YC4gVGhlc2UgYXJlIHRoZSBmb2NhbCBwb2ludHMsIHRoZSBseW5jaHBpbnMgb2YgdGhpcyBjaGFuZ2UuCgpJJiMzOTttIHNlZWluZyBtb2RpZmljYXRpb25zIHdpdGhpbiB0aGUgdHJhbnNtaXQgcXVldWUgc2NoZWR1bGluZyBzdGF0ZSBsb2dpYywgc3BlY2lmaWNhbGx5IHJlZ2FyZGluZyB0aGUgYHNjaGVkdWxlX29wZW5gIGZsYWcgYW5kIGhvdyByb3VuZCB1cGRhdGVzIGFyZSBoYW5kbGVkLiBUaGUgZnVuY3Rpb24gbmFtZXMgYWxvbmUgdHJpZ2dlciBzb21lIHdhcm5pbmcgYmVsbHMsIEkgdGhpbmsgdGhlcmUgaXMgYSBnb29kIHBvc3NpYmlsaXR5IG9mIHNvbWUgaW50ZXJlc3Rpbmcgc3RhdGUgdHJhbnNpdGlvbnMgdG8gZXhwbG9yZS4KCkkmIzM5O20gdGhpbmtpbmcgdGhpcyBpcyBhbGwgaGFwcGVuaW5nIHdpdGhpbiB0aGUgbWFjODAyMTEgd2lyZWxlc3Mgc3Vic3lzdGVtLCB3aGljaCBpcyBnb29kIG5ld3MgZm9yIGZ1enppbmcuIFdlIGtub3cgbWFjODAyMTEgaXMgb2Z0ZW4gYWNjZXNzaWJsZSB0aHJvdWdoIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB1c2luZyB2aXJ0dWFsIG9yIHNpbXVsYXRlZCB3aXJlbGVzcyBkcml2ZXJzIOKAkyBtYWM4MDIxMV9od3NpbSBiZWluZyB0aGUgb2J2aW91cyBleGFtcGxlLiBUaGVuIHlvdSBoYXZlIE5ldGxpbmsgaW50ZXJmYWNlcyBhcyBhbm90aGVyIHZlcnkgdXNlZnVsIGF0dGFjayB2ZWN0b3IsIHNvIHRoYXQgYWxsIGxvb2tzIGxpa2UgYSBncmVhdCBzZXQgb2Ygb3B0aW9ucyB0byBjb25zaWRlciB3aGVuIHdlIHN0YXJ0IHRvIGZvcm0gYSB0ZXN0LgoKU28sIEkmIzM5O20gdGhpbmtpbmcgd2UgY2FuIGNhbGwgdGhpcyBgc2V0LXJlc3VsdHNgLCBhbmQgbW92ZSBmb3J3YXJkIHdpdGggdGhlIHBsYW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDE3OjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtDRkc4MDIxMSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2llZWU4MDIxMV9uZXh0X3R4cSYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfdHhxX3NjaGVkdWxlX3N0YXJ0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB0cmFuc21pdCBxdWV1ZSBzY2hlZHVsaW5nIGxvZ2ljIGluIG1hYzgwMjExIChuZXQvbWFjODAyMTEvdHguYyksIGRlY291cGxpbmcgcXVldWUgc2NoZWR1bGUgb3BlbiBzdGF0ZSB0cmFja2luZyBmcm9tIHRoZSBzY2hlZHVsZSByb3VuZCBjb3VudGVyLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGFuZCBleGVjdXRhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB1c2luZyB2aXJ0dWFsIHdpcmVsZXNzIGRyaXZlcnMgKHN1Y2ggYXMgbWFjODAyMTFfaHdzaW0pIGFuZCBzdGFuZGFyZCB3aXJlbGVzcyBuZXRsaW5rL3BhY2tldCBpbnRlcmZhY2VzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtDRkc4MDIxMSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2llZWU4MDIxMV9uZXh0X3R4cSYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfdHhxX3NjaGVkdWxlX3N0YXJ0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB0cmFuc21pdCBxdWV1ZSBzY2hlZHVsaW5nIGxvZ2ljIGluIG1hYzgwMjExIChuZXQvbWFjODAyMTEvdHguYyksIGRlY291cGxpbmcgcXVldWUgc2NoZWR1bGUgb3BlbiBzdGF0ZSB0cmFja2luZyBmcm9tIHRoZSBzY2hlZHVsZSByb3VuZCBjb3VudGVyLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGFuZCBleGVjdXRhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB1c2luZyB2aXJ0dWFsIHdpcmVsZXNzIGRyaXZlcnMgKHN1Y2ggYXMgbWFjODAyMTFfaHdzaW0pIGFuZCBzdGFuZGFyZCB3aXJlbGVzcyBuZXRsaW5rL3BhY2tldCBpbnRlcmZhY2VzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxNzo0MzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDE3OjQzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGJvb2xlYW4gZmllbGQgYHNjaGVkdWxlX29wZW5gIHRvIGBzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsYCB0byBkZWNvdXBsZSB0aGUgc2NoZWR1bGluZyBvcGVuL2Nsb3NlZCBzdGF0ZSBmcm9tIHRoZSBgc2NoZWR1bGVfcm91bmRgIGNvdW50ZXIgaW4gbWFjODAyMTEmIzM5O3MgVFggcXVldWUgc2NoZWR1bGluZyBsb2dpYy5cblxuLSBgc3RydWN0IGllZWU4MDIxMV9sb2NhbGAgaXMgYWxsb2NhdGVkIHZpYSBga3phbGxvYygpYCBkdXJpbmcgd2lwaHkgcmVnaXN0cmF0aW9uLCBlbnN1cmluZyBhbGwgZmllbGRzIGluY2x1ZGluZyBgc2NoZWR1bGVfb3BlbmAgYXJlIHplcm8taW5pdGlhbGl6ZWQuXG4tIFRoZSBuZXcgZmllbGQgaXMgb25seSB1c2VkIGludGVybmFsbHkgd2l0aGluIGBuZXQvbWFjODAyMTEvdHguY2AgZm9yIFRYIHF1ZXVlIHNjaGVkdWxpbmcgY29udHJvbCBmbG93IGFuZCBpcyBuZXZlciBjb3BpZWQgdG8gdXNlciBzcGFjZSBvciB1c2VkIGluIGFuIHVuaW5pdGlhbGl6ZWQgc3RhdGUuXG4tIE5vIG5ldyBidWZmZXJzLCBzdGFjayBvYmplY3RzLCBuZXRsaW5rIGF0dHJpYnV0ZXMsIGlvY3Rscywgb3IgdXNlci1zcGFjZSBjb3BpZXMgYXJlIGludHJvZHVjZWQgb3IgbW9kaWZpZWQuXG5cbkNvbnNlcXVlbnRseSwgdGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciBpbmZvcm1hdGlvbiBsZWFrcywgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYzdiZmYxYjI0NTM0MjYzNmZmYzA1YjVkYTM3NGJkODNkYTIwMTI3NApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgU2VwIDggMTc6NDI6NTEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaCBiL25ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oCmluZGV4IDUzYjBiMDhkMzQ1OTcuLjY1MzExMzQwZGI0MDYgMTAwNjQ0Ci0tLSBhL25ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oCkBAIC0xNDY4LDYgJiM0MzsxNDY4LDcgQEAgc3RydWN0IGllZWU4MDIxMV9sb2NhbCB7CiAJc3BpbmxvY2tfdCBhY3RpdmVfdHhxX2xvY2tbSUVFRTgwMjExX05VTV9BQ1NdOwogCXN0cnVjdCBsaXN0X2hlYWQgYWN0aXZlX3R4cXNbSUVFRTgwMjExX05VTV9BQ1NdOwogCXUxNiBzY2hlZHVsZV9yb3VuZFtJRUVFODAyMTFfTlVNX0FDU107CiYjNDM7CWJvb2wgc2NoZWR1bGVfb3BlbltJRUVFODAyMTFfTlVNX0FDU107CiAKIAkvKiBzZXJpYWxpemVzIGllZWU4MDIxMV9oYW5kbGVfd2FrZV90eF9xdWV1ZSAqLwogCXNwaW5sb2NrX3QgaGFuZGxlX3dha2VfdHhfcXVldWVfbG9jazsKZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS90eC5jIGIvbmV0L21hYzgwMjExL3R4LmMKaW5kZXggYzMzMDkyOTYwZGYyNi4uYzY2NWNlZDljMDVjYiAxMDA2NDQKLS0tIGEvbmV0L21hYzgwMjExL3R4LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L21hYzgwMjExL3R4LmMKQEAgLTQxMjIsNyAmIzQzOzQxMjIsNyBAQCBzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqaWVlZTgwMjExX25leHRfdHhxKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCB1OCBhYykKIAogCXNwaW5fbG9ja19iaCgmYW1wO2xvY2FsLSZndDthY3RpdmVfdHhxX2xvY2tbYWNdKTsKIAotCWlmICghbG9jYWwtJmd0O3NjaGVkdWxlX3JvdW5kW2FjXSkKJiM0MzsJaWYgKCFsb2NhbC0mZ3Q7c2NoZWR1bGVfb3BlblthY10pCiAJCWdvdG8gb3V0OwogCiAgYmVnaW46CkBAIC00MzQ3LDEyICYjNDM7NDM0NywxMiBAQCB2b2lkIGllZWU4MDIxMV90eHFfc2NoZWR1bGVfc3RhcnQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHU4IGFjKQogCiAJc3Bpbl9sb2NrX2JoKCZhbXA7bG9jYWwtJmd0O2FjdGl2ZV90eHFfbG9ja1thY10pOwogCi0JaWYgKGllZWU4MDIxMV90eHFfc2NoZWR1bGVfYWlydGltZV9jaGVjayhsb2NhbCwgYWMpKSB7CiYjNDM7CWxvY2FsLSZndDtzY2hlZHVsZV9vcGVuW2FjXSA9CiYjNDM7CQlpZWVlODAyMTFfdHhxX3NjaGVkdWxlX2FpcnRpbWVfY2hlY2sobG9jYWwsIGFjKTsKJiM0MzsJaWYgKGxvY2FsLSZndDtzY2hlZHVsZV9vcGVuW2FjXSkgewogCQlsb2NhbC0mZ3Q7c2NoZWR1bGVfcm91bmRbYWNdJiM0MzsmIzQzOzsKIAkJaWYgKCFsb2NhbC0mZ3Q7c2NoZWR1bGVfcm91bmRbYWNdKQogCQkJbG9jYWwtJmd0O3NjaGVkdWxlX3JvdW5kW2FjXSYjNDM7JiM0Mzs7Ci0JfSBlbHNlIHsKLQkJbG9jYWwtJmd0O3NjaGVkdWxlX3JvdW5kW2FjXSA9IDA7CiAJfQogCiAJc3Bpbl91bmxvY2tfYmgoJmFtcDtsb2NhbC0mZ3Q7YWN0aXZlX3R4cV9sb2NrW2FjXSk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxNzo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjExCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogOTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaCYjMzk7cyBJbXBhY3QqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW4uIE15IGZpcnN0IHN0ZXAgaXMgYWx3YXlzIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgY2hhbmdlcy4gVGhlIHBhdGNoIGFmZmVjdHMgYG5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oYCBhbmQgYG5ldC9tYWM4MDIxMS90eC5jYCwgc28gaXQmIzM5O3MgbGlrZWx5IHRvdWNoaW5nIGludGVybmFsIGRhdGEgc3RydWN0dXJlcyBhbmQgdGhlIHRyYW5zbWl0IHBhdGggd2l0aGluIHRoZSBtYWM4MDIxMSBzdGFjay4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZXNlIGZpbGVzIGluIHRoZSBicm9hZGVyIGNvbnRleHQuCgpOb3csIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZWZmZWN0cy4gSSYjMzk7bSBnb2luZyB0byBsb29rIGF0IGhvdyBgc3RydWN0IGllZWU4MDIxMV9sb2NhbGAgaXMgYWxsb2NhdGVkIGFuZCBpbml0aWFsaXplZCwgc2luY2UgdGhhdCYjMzk7cyBhIGNvcmUgc3RydWN0dXJlLCBhbmQgYWxzbyB0cmFjayBkb3duIGhvdyBgc2NoZWR1bGVfb3BlbmAgaXMgdXNlZDsgdGhlc2UgYXJlIG9mdGVuIGdvb2QgaW5kaWNhdG9ycyBvZiB3aGVyZSBhIHN1YnRsZSBjaGFuZ2UgbGlrZSB0aGlzIG1pZ2h0IGhhdmUgdGhlIGxhcmdlc3QgcmlwcGxlIGVmZmVjdC4gSSYjMzk7bGwgcHJvYmFibHkgZG8gYSBxdWljayBgZ3JlcGAgZm9yIHRob3NlIHRlcm1zIGFjcm9zcyB0aGUgcmVsZXZhbnQgc291cmNlIHRyZWUsIG9yIEkgbWlnaHQgc2ltcGx5IHJlYWQgdGhlIGZpbGVzIGRpcmVjdGx5IGlmIHRoZSBjb2RlYmFzZSBpcyByZWxhdGl2ZWx5IHNtYWxsLCBvciBpZiB0aGUgc2VhcmNoIHR1cm5zIHVwIHRvbyBtYW55IGZhbHNlIHBvc2l0aXZlcy4gSXQmIzM5O3MgdGltZSB0byBkaWcgaW50byB0aGUgZGV0YWlscy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTc6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2NoZWR1bGVfcm91bmQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg9OTYzPWVudW0gdHhxX2luZm9fZmxhZ3Mge1xuLS1cbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTk3Ny0gKiBAc2NoZWR1bGVfb3JkZXI6IHVzZWQgd2l0aCBpZWVlODAyMTFfbG9jYWwtXHUwMDNlYWN0aXZlX3R4cXNcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oOjk3ODogKiBAc2NoZWR1bGVfcm91bmQ6IGNvdW50ZXIgdG8gcHJldmVudCBpbmZpbml0ZSBsb29wcyBvbiBUWFEgc2NoZWR1bGluZ1xubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtOTc5LSAqIEBmbGFnczogVFhRIGZsYWdzIGZyb20gXHUwMDI2ZW51bSB0eHFfaW5mb19mbGFnc1xuLS1cbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oPTk4Mj1zdHJ1Y3QgdHhxX2luZm8ge1xuLS1cbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTk4Ni1cbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oOjk4NzpcdHUxNiBzY2hlZHVsZV9yb3VuZDtcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTk4OC1cdHN0cnVjdCBsaXN0X2hlYWQgc2NoZWR1bGVfb3JkZXI7XG4tLVxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg9MTQ1Nz1zdHJ1Y3QgaWVlZTgwMjExX2xvY2FsIHtcbi0tXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC0xNDY5LVx0c3RydWN0IGxpc3RfaGVhZCBhY3RpdmVfdHhxc1tJRUVFODAyMTFfTlVNX0FDU107XG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaDoxNDcwOlx0dTE2IHNjaGVkdWxlX3JvdW5kW0lFRUU4MDIxMV9OVU1fQUNTXTtcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTE0NzEtXHRib29sIHNjaGVkdWxlX29wZW5bSUVFRTgwMjExX05VTV9BQ1NdO1xuLS1cbm5ldC9tYWM4MDIxMS90eC5jPTQxMTU9c3RydWN0IGllZWU4MDIxMV90eHEgKmllZWU4MDIxMV9uZXh0X3R4cShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgdTggYWMpXG4tLVxubmV0L21hYzgwMjExL3R4LmMtNDE2Ni1cbm5ldC9tYWM4MDIxMS90eC5jOjQxNjc6XHRpZiAodHhxaS1cdTAwM2VzY2hlZHVsZV9yb3VuZCA9PSBsb2NhbC1cdTAwM2VzY2hlZHVsZV9yb3VuZFthY10pXG5uZXQvbWFjODAyMTEvdHguYy00MTY4LVx0XHRnb3RvIG91dDtcbi0tXG5uZXQvbWFjODAyMTEvdHguYy00MTcwLVx0bGlzdF9kZWxfaW5pdChcdTAwMjZ0eHFpLVx1MDAzZXNjaGVkdWxlX29yZGVyKTtcbm5ldC9tYWM4MDIxMS90eC5jOjQxNzE6XHR0eHFpLVx1MDAzZXNjaGVkdWxlX3JvdW5kID0gbG9jYWwtXHUwMDNlc2NoZWR1bGVfcm91bmRbYWNdO1xubmV0L21hYzgwMjExL3R4LmMtNDE3Mi1cdHJldCA9IFx1MDAyNnR4cWktXHUwMDNldHhxO1xuLS1cbm5ldC9tYWM4MDIxMS90eC5jPTQzNDQ9dm9pZCBpZWVlODAyMTFfdHhxX3NjaGVkdWxlX3N0YXJ0KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCB1OCBhYylcbi0tXG5uZXQvbWFjODAyMTEvdHguYy00MzUyLVx0aWYgKGxvY2FsLVx1MDAzZXNjaGVkdWxlX29wZW5bYWNdKSB7XG5uZXQvbWFjODAyMTEvdHguYzo0MzUzOlx0XHRsb2NhbC1cdTAwM2VzY2hlZHVsZV9yb3VuZFthY10mIzQzOyYjNDM7O1xubmV0L21hYzgwMjExL3R4LmM6NDM1NDpcdFx0aWYgKCFsb2NhbC1cdTAwM2VzY2hlZHVsZV9yb3VuZFthY10pXG5uZXQvbWFjODAyMTEvdHguYzo0MzU1Olx0XHRcdGxvY2FsLVx1MDAzZXNjaGVkdWxlX3JvdW5kW2FjXSYjNDM7JiM0Mzs7XG5uZXQvbWFjODAyMTEvdHguYy00MzU2LVx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxNzo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzOTA2CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogNTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqUGVlcmluZyBpbnRvIHRoZSBJRUVFIDgwMi4xMSBMb2NhbCBTdHJ1Y3R1cmUqKgoKQWxyaWdodCwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBsaWZlY3ljbGUgb2YgdGhlIGBzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsYC4gTXkgaW1tZWRpYXRlIGdvYWwgaXMgdG8gdHJhY2UgaXRzIGFsbG9jYXRpb24gYW5kIHN1YnNlcXVlbnQgaW5pdGlhbGl6YXRpb24uIFRoYXQmIzM5O3MgdXN1YWxseSB0aGUgY3J1eCBvZiB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgaGFyZHdhcmUgYWJzdHJhY3Rpb24gbGF5ZXIgZm9yIGFuIDgwMi4xMSBkZXZpY2UgY29tZXMgdG8gbGlmZS4KCk15IGluaXRpYWwgYXBwcm9hY2ggaXMgdG8gZ28gc3RyYWlnaHQgdG8gdGhlIGZ1bmN0aW9ucyB0aGF0IGxpa2VseSBoYW5kbGUgdGhpcy4gSSYjMzk7bGwgc2VhcmNoIGZvciBjYWxscyB0byBmdW5jdGlvbnMgbGlrZSBgaWVlZTgwMjExX2FsbG9jX2h3YCwgYGFsbG9jX2llZWU4MDIxMWAsIG9yIGFueXRoaW5nIHdpdGggYSBzaW1pbGFyIG5hbWluZyBjb252ZW50aW9uLiBUaGF0IHNob3VsZCBnZXQgbWUgdG8gdGhlIHJpZ2h0IHNwb3RzIHF1aWNrbHkuIEhvcGVmdWxseSwgdGhlc2UgZnVuY3Rpb25zIGhhdmUgZW5vdWdoIGNsdWVzIGJ1aWx0IGludG8gdGhlaXIgbmFtZXMgdG8gZm9sbG93IHRoZSB0aHJlYWQgdG8gdGhlIHJpZ2h0IGRhdGEgc3RydWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxNzo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA1MjI3IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5uZXQvbWFjODAyMTEvYWdnLXJ4LmM9NTY9dm9pZCBfX2llZWU4MDIxMV9zdG9wX3J4X2JhX3Nlc3Npb24oc3RydWN0IHN0YV9pbmZvICpzdGEsIHUxNiB0aWQsXG4tLVxubmV0L21hYzgwMjExL2FnZy1yeC5jLTU4LXtcbm5ldC9tYWM4MDIxMS9hZ2ctcnguYzo1OTpcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gc3RhLVx1MDAzZWxvY2FsO1xubmV0L21hYzgwMjExL2FnZy1yeC5jLTYwLVx0c3RydWN0IHRpZF9hbXBkdV9yeCAqdGlkX3J4O1xuLS1cbm5ldC9tYWM4MDIxMS9hZ2ctcnguYz0yMzI9c3RhdGljIHZvaWQgaWVlZTgwMjExX3NlbmRfYWRkYmFfcmVzcChzdHJ1Y3Qgc3RhX2luZm8gKnN0YSwgdTggKmRhLCB1MTYgdGlkLFxuLS1cbm5ldC9tYWM4MDIxMS9hZ2ctcnguYy0yMzctXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IHN0YS1cdTAwM2VzZGF0YTtcbm5ldC9tYWM4MDIxMS9hZ2ctcnguYzoyMzg6XHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHNkYXRhLVx1MDAzZWxvY2FsO1xubmV0L21hYzgwMjExL2FnZy1yeC5jLTIzOS1cdHN0cnVjdCBza19idWZmICpza2I7XG4tLVxubmV0L21hYzgwMjExL2FnZy1yeC5jPTI3Nj12b2lkIF9faWVlZTgwMjExX3N0YXJ0X3J4X2JhX3Nlc3Npb24oc3RydWN0IHN0YV9pbmZvICpzdGEsXG4tLVxubmV0L21hYzgwMjExL2FnZy1yeC5jLTI4Mi17XG5uZXQvbWFjODAyMTEvYWdnLXJ4LmM6MjgzOlx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzdGEtXHUwMDNlc2RhdGEtXHUwMDNlbG9jYWw7XG5uZXQvbWFjODAyMTEvYWdnLXJ4LmMtMjg0LVx0c3RydWN0IHRpZF9hbXBkdV9yeCAqdGlkX2FnZ19yeDtcbi0tXG5uZXQvbWFjODAyMTEvYWdnLXJ4LmMtNDcxLVxubmV0L21hYzgwMjExL2FnZy1yeC5jOjQ3Mjp2b2lkIGllZWU4MDIxMV9wcm9jZXNzX2FkZGJhX3JlcXVlc3Qoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG5uZXQvbWFjODAyMTEvYWdnLXJ4LmMtNDczLVx0XHRcdFx0ICAgICBzdHJ1Y3Qgc3RhX2luZm8gKnN0YSxcbi0tXG5uZXQvbWFjODAyMTEvYWdnLXR4LmM9NjE9c3RhdGljIHZvaWQgaWVlZTgwMjExX3NlbmRfYWRkYmFfcmVxdWVzdChzdHJ1Y3Qgc3RhX2luZm8gKnN0YSwgdTE2IHRpZCxcbi0tXG5uZXQvbWFjODAyMTEvYWdnLXR4LmMtNjUtXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IHN0YS1cdTAwM2VzZGF0YTtcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYzo2NjpcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gc2RhdGEtXHUwMDNlbG9jYWw7XG5uZXQvbWFjODAyMTEvYWdnLXR4LmMtNjctXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuLS1cbm5ldC9tYWM4MDIxMS9hZ2ctdHguYz0xMDQ9dm9pZCBpZWVlODAyMTFfc2VuZF9iYXIoc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZiwgdTggKnJhLCB1MTYgdGlkLCB1MTYgc3NuKVxuLS1cbm5ldC9tYWM4MDIxMS9hZ2ctdHguYy0xMDYtXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IHZpZl90b19zZGF0YSh2aWYpO1xubmV0L21hYzgwMjExL2FnZy10eC5jOjEwNzpcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gc2RhdGEtXHUwMDNlbG9jYWw7XG5uZXQvbWFjODAyMTEvYWdnLXR4LmMtMTA4LVx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbi0tXG5uZXQvbWFjODAyMTEvYWdnLXR4LmM9MjMzPWllZWU4MDIxMV9hZ2dfc3BsaWNlX3BhY2tldHMoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL2FnZy10eC5jLTIzNS17XG5uZXQvbWFjODAyMTEvYWdnLXR4LmM6MjM2Olx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cdTAwM2Vsb2NhbDtcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYy0yMzctXHRpbnQgcXVldWUgPSBzZGF0YS1cdTAwM2V2aWYuaHdfcXVldWVbaWVlZTgwMjExX2FjX2Zyb21fdGlkKHRpZCldO1xuLS1cbm5ldC9tYWM4MDIxMS9hZ2ctdHguYz0yOTE9aW50IF9faWVlZTgwMjExX3N0b3BfdHhfYmFfc2Vzc2lvbihzdHJ1Y3Qgc3RhX2luZm8gKnN0YSwgdTE2IHRpZCxcbi0tXG5uZXQvbWFjODAyMTEvYWdnLXR4LmMtMjkzLXtcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYzoyOTQ6XHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHN0YS1cdTAwM2Vsb2NhbDtcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYy0yOTUtXHRzdHJ1Y3QgdGlkX2FtcGR1X3R4ICp0aWRfdHg7XG4tLVxubmV0L21hYzgwMjExL2FnZy10eC5jPTQ0NT1zdGF0aWMgdm9pZCBpZWVlODAyMTFfc2VuZF9hZGRiYV93aXRoX3RpbWVvdXQoc3RydWN0IHN0YV9pbmZvICpzdGEsXG4tLVxubmV0L21hYzgwMjExL2FnZy10eC5jLTQ0OC1cdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gc3RhLVx1MDAzZXNkYXRhO1xubmV0L21hYzgwMjExL2FnZy10eC5jOjQ0OTpcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gc3RhLVx1MDAzZWxvY2FsO1xubmV0L21hYzgwMjExL2FnZy10eC5jLTQ1MC1cdHU4IHRpZCA9IHRpZF90eC1cdTAwM2V0aWQ7XG4tLVxubmV0L21hYzgwMjExL2FnZy10eC5jPTQ5ND12b2lkIGllZWU4MDIxMV90eF9iYV9zZXNzaW9uX2hhbmRsZV9zdGFydChzdHJ1Y3Qgc3RhX2luZm8gKnN0YSwgaW50IHRpZClcbi0tXG5uZXQvbWFjODAyMTEvYWdnLXR4LmMtNDk2LVx0c3RydWN0IHRpZF9hbXBkdV90eCAqdGlkX3R4O1xubmV0L21hYzgwMjExL2FnZy10eC5jOjQ5NzpcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gc3RhLVx1MDAzZWxvY2FsO1xubmV0L21hYzgwMjExL2FnZy10eC5jLTQ5OC1cdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gc3RhLVx1MDAzZXNkYXRhO1xuLS1cbm5ldC9tYWM4MDIxMS9hZ2ctdHguYz02MDM9aW50IGllZWU4MDIxMV9zdGFydF90eF9iYV9zZXNzaW9uKHN0cnVjdCBpZWVlODAyMTFfc3RhICpwdWJzdGEsIHUxNiB0aWQsXG4tLVxubmV0L21hYzgwMjExL2FnZy10eC5jLTYwNy1cdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gc3RhLVx1MDAzZXNkYXRhO1xubmV0L21hYzgwMjExL2FnZy10eC5jOjYwODpcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gc2RhdGEtXHUwMDNlbG9jYWw7XG5uZXQvbWFjODAyMTEvYWdnLXR4LmMtNjA5LVx0c3RydWN0IHRpZF9hbXBkdV90eCAqdGlkX3R4O1xuLS1cbm5ldC9tYWM4MDIxMS9hZ2ctdHguYz03NTQ9RVhQT1JUX1NZTUJPTChpZWVlODAyMTFfc3RhcnRfdHhfYmFfc2Vzc2lvbik7XG5uZXQvbWFjODAyMTEvYWdnLXR4LmMtNzU1LVxubmV0L21hYzgwMjExL2FnZy10eC5jOjc1NjpzdGF0aWMgdm9pZCBpZWVlODAyMTFfYWdnX3R4X29wZXJhdGlvbmFsKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxubmV0L21hYzgwMjExL2FnZy10eC5jLTc1Ny1cdFx0XHRcdFx0IHN0cnVjdCBzdGFfaW5mbyAqc3RhLCB1MTYgdGlkKVxuLS1cbm5ldC9tYWM4MDIxMS9hZ2ctdHguYz03OTk9dm9pZCBpZWVlODAyMTFfc3RhcnRfdHhfYmFfY2Ioc3RydWN0IHN0YV9pbmZvICpzdGEsIGludCB0aWQsXG4tLVxubmV0L21hYzgwMjExL2FnZy10eC5jLTgwMi1cdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gc3RhLVx1MDAzZXNkYXRhO1xubmV0L21hYzgwMjExL2FnZy10eC5jOjgwMzpcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gc2RhdGEtXHUwMDNlbG9jYWw7XG5uZXQvbWFjODAyMTEvYWdnLXR4LmMtODA0LVxuLS1cbm5ldC9tYWM4MDIxMS9hZ2ctdHguYz04NTA9dm9pZCBpZWVlODAyMTFfc3RhcnRfdHhfYmFfY2JfaXJxc2FmZShzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuLS1cbm5ldC9tYWM4MDIxMS9hZ2ctdHguYy04NTMtXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IHZpZl90b19zZGF0YSh2aWYpO1xubmV0L21hYzgwMjExL2FnZy10eC5jOjg1NDpcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gc2RhdGEtXHUwMDNlbG9jYWw7XG5uZXQvbWFjODAyMTEvYWdnLXR4LmMtODU1LVx0c3RydWN0IHN0YV9pbmZvICpzdGE7XG4tLVxubmV0L21hYzgwMjExL2FnZy10eC5jPTg3Mj1pbnQgaWVlZTgwMjExX3N0b3BfdHhfYmFfc2Vzc2lvbihzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqcHVic3RhLCB1MTYgdGlkKVxuLS1cbm5ldC9tYWM4MDIxMS9hZ2ctdHguYy04NzUtXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IHN0YS1cdTAwM2VzZGF0YTtcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYzo4NzY6XHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHNkYXRhLVx1MDAzZWxvY2FsO1xubmV0L21hYzgwMjExL2FnZy10eC5jLTg3Ny1cdHN0cnVjdCB0aWRfYW1wZHVfdHggKnRpZF90eDtcbi0tXG5uZXQvbWFjODAyMTEvYWdnLXR4LmM9OTU0PXZvaWQgaWVlZTgwMjExX3N0b3BfdHhfYmFfY2JfaXJxc2FmZShzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuLS1cbm5ldC9tYWM4MDIxMS9hZ2ctdHguYy05NTctXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IHZpZl90b19zZGF0YSh2aWYpO1xubmV0L21hYzgwMjExL2FnZy10eC5jOjk1ODpcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gc2RhdGEtXHUwMDNlbG9jYWw7XG5uZXQvbWFjODAyMTEvYWdnLXR4LmMtOTU5LVx0c3RydWN0IHN0YV9pbmZvICpzdGE7XG4tLVxubmV0L21hYzgwMjExL2FnZy10eC5jPTk3ND1FWFBPUlRfU1lNQk9MKGllZWU4MDIxMV9zdG9wX3R4X2JhX2NiX2lycXNhZmUpO1xuLS1cbm5ldC9tYWM4MDIxMS9hZ2ctdHguYy05NzYtXG5uZXQvbWFjODAyMTEvYWdnLXR4LmM6OTc3OnZvaWQgaWVlZTgwMjExX3Byb2Nlc3NfYWRkYmFfcmVzcChzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYy05NzgtXHRcdFx0XHQgIHN0cnVjdCBzdGFfaW5mbyAqc3RhLFxuLS1cbm5ldC9tYWM4MDIxMS9hcC5jPTE0PWllZWU4MDIxMV9zZW5kX2VtbF9vcF9tb2RlX25vdGlmKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9hcC5jLTE3LVx0aW50IGxlbiA9IElFRUU4MDIxMV9NSU5fQUNUSU9OX1NJWkUoZW1sX29tbik7XG5uZXQvbWFjODAyMTEvYXAuYzoxODpcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gc2RhdGEtXHUwMDNlbG9jYWw7XG5uZXQvbWFjODAyMTEvYXAuYy0xOS1cdHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdDtcbi0tXG5uZXQvbWFjODAyMTEvYXAuYz01MT1pZWVlODAyMTFfcnhfZW1sX29wX21vZGVfbm90aWYoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL2FwLmMtNTgtXHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQgPSAodm9pZCAqKXNrYi1cdTAwM2VkYXRhO1xubmV0L21hYzgwMjExL2FwLmM6NTk6XHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHNkYXRhLVx1MDAzZWxvY2FsO1xubmV0L21hYzgwMjExL2FwLmMtNjAtXHR1OCBjb250cm9sID0gbWdtdC1cdTAwM2V1LmFjdGlvbi5lbWxfb21uLmNvbnRyb2w7XG4tLVxubmV0L21hYzgwMjExL2FwLmM9MzI0PXZvaWQgaWVlZTgwMjExX3Vocl9kaXNhYmxlX2RiZV9hbGxfc3RhcyhzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluaylcbi0tXG5uZXQvbWFjODAyMTEvYXAuYy0zMjYtXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IGxpbmstXHUwMDNlc2RhdGE7XG5uZXQvbWFjODAyMTEvYXAuYzozMjc6XHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHNkYXRhLVx1MDAzZWxvY2FsO1xubmV0L21hYzgwMjExL2FwLmMtMzI4LVx0c3RydWN0IGllZWU4MDIxMV9jaGFuY3R4X2NvbmYgKmNoYW5jdHhfY29uZjtcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmM9OTY9c3RhdGljIGludCBpZWVlODAyMTFfc2V0X21vbl9vcHRpb25zKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy05OC17XG5uZXQvbWFjODAyMTEvY2ZnLmM6OTk6XHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHNkYXRhLVx1MDAzZWxvY2FsO1xubmV0L21hYzgwMjExL2NmZy5jLTEwMC1cdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKm1vbml0b3Jfc2RhdGEgPSBOVUxMO1xuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYz0yMDY9c3RhdGljIHN0cnVjdCB3aXJlbGVzc19kZXYgKmllZWU4MDIxMV9hZGRfaWZhY2Uoc3RydWN0IHdpcGh5ICp3aXBoeSxcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjExLXtcbm5ldC9tYWM4MDIxMS9jZmcuYzoyMTI6XHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHdpcGh5X3ByaXYod2lwaHkpO1xubmV0L21hYzgwMjExL2NmZy5jLTIxMy1cdHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXY7XG4tLVxubmV0L21hYzgwMjExL2NmZy5jPTI1OT1zdGF0aWMgaW50IGllZWU4MDIxMV9jaGFuZ2VfaWZhY2Uoc3RydWN0IHdpcGh5ICp3aXBoeSxcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjY0LVx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBJRUVFODAyMTFfREVWX1RPX1NVQl9JRihkZXYpO1xubmV0L21hYzgwMjExL2NmZy5jOjI2NTpcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gc2RhdGEtXHUwMDNlbG9jYWw7XG5uZXQvbWFjODAyMTEvY2ZnLmMtMjY2LVx0c3RydWN0IHN0YV9pbmZvICpzdGE7XG4tLVxubmV0L21hYzgwMjExL2NmZy5jPTU4NT1zdGF0aWMgaW50IGllZWU4MDIxMV9zZXRfdHgoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTU4Ny17XG5uZXQvbWFjODAyMTEvY2ZnLmM6NTg4Olx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cdTAwM2Vsb2NhbDtcbm5ldC9tYWM4MDIxMS9jZmcuYy01ODktXHRzdHJ1Y3QgaWVlZTgwMjExX2tleSAqa2V5O1xuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYz02MTM9c3RhdGljIGludCBpZWVlODAyMTFfYWRkX2tleShzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy02MTktXHRcdGllZWU4MDIxMV9saW5rX29yX2RlZmxpbmsoc2RhdGEsIGxpbmtfaWQsIGZhbHNlKTtcbm5ldC9tYWM4MDIxMS9jZmcuYzo2MjA6XHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHNkYXRhLVx1MDAzZWxvY2FsO1xubmV0L21hYzgwMjExL2NmZy5jLTYyMS1cdHN0cnVjdCBzdGFfaW5mbyAqc3RhID0gTlVMTDtcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmM9NzM5PWllZWU4MDIxMV9sb29rdXBfa2V5KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLCBpbnQgbGlua19pZCxcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtNzQxLXtcbm5ldC9tYWM4MDIxMS9jZmcuYzo3NDI6XHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCBfX21heWJlX3VudXNlZCA9IHNkYXRhLVx1MDAzZWxvY2FsO1xubmV0L21hYzgwMjExL2NmZy5jLTc0My1cdHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rID0gXHUwMDI2c2RhdGEtXHUwMDNlZGVmbGluaztcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmM9Nzk3PXN0YXRpYyBpbnQgaWVlZTgwMjExX2RlbF9rZXkoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2Rldixcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtODAxLVx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBJRUVFODAyMTFfV0RFVl9UT19TVUJfSUYod2Rldik7XG5uZXQvbWFjODAyMTEvY2ZnLmM6ODAyOlx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cdTAwM2Vsb2NhbDtcbm5ldC9tYWM4MDIxMS9jZmcuYy04MDMtXHRzdHJ1Y3QgaWVlZTgwMjExX2tleSAqa2V5O1xuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYz05OTk9c3RhdGljIGludCBpZWVlODAyMTFfZHVtcF9zdGF0aW9uKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTEwMDItXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IElFRUU4MDIxMV9XREVWX1RPX1NVQl9JRih3ZGV2KTtcbm5ldC9tYWM4MDIxMS9jZmcuYzoxMDAzOlx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cdTAwM2Vsb2NhbDtcbm5ldC9tYWM4MDIxMS9jZmcuYy0xMDA0LVx0c3RydWN0IHN0YV9pbmZvICpzdGE7XG4tLVxubmV0L21hYzgwMjExL2NmZy5jPTEwMjY9c3RhdGljIGludCBpZWVlODAyMTFfZHVtcF9zdXJ2ZXkoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtMTAyOC17XG5uZXQvbWFjODAyMTEvY2ZnLmM6MTAyOTpcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gd2Rldl9wcml2KGRldi1cdTAwM2VpZWVlODAyMTFfcHRyKTtcbm5ldC9tYWM4MDIxMS9jZmcuYy0xMDMwLVxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYz0xMDM0PXN0YXRpYyBpbnQgaWVlZTgwMjExX2dldF9zdGF0aW9uKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTEwMzgtXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IElFRUU4MDIxMV9XREVWX1RPX1NVQl9JRih3ZGV2KTtcbm5ldC9tYWM4MDIxMS9jZmcuYzoxMDM5Olx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cdTAwM2Vsb2NhbDtcbm5ldC9tYWM4MDIxMS9jZmcuYy0xMDQwLVx0c3RydWN0IHN0YV9pbmZvICpzdGE7XG4tLVxubmV0L21hYzgwMjExL2NmZy5jPTEwNjA9c3RhdGljIGludCBpZWVlODAyMTFfc2V0X21vbml0b3JfY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy0xMDYzLXtcbm5ldC9tYWM4MDIxMS9jZmcuYzoxMDY0Olx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSB3aXBoeV9wcml2KHdpcGh5KTtcbm5ldC9tYWM4MDIxMS9jZmcuYy0xMDY1LVx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGE7XG4tLVxubmV0L21hYzgwMjExL2NmZy5jPTE0MjU9c3RhdGljIHZvaWQgaWVlZTgwMjExX3VwZGF0ZV9hcF9iYW5kd2lkdGgoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmssXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTE0Mjcte1xubmV0L21hYzgwMjExL2NmZy5jOjE0Mjg6XHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IGxpbmstXHUwMDNlc2RhdGEtXHUwMDNlbG9jYWw7XG5uZXQvbWFjODAyMTEvY2ZnLmMtMTQyOS1cdHN0cnVjdCBpZWVlODAyMTFfY2hhbmN0eF9jb25mICpjaGFuY3R4X2NvbmY7XG4tLVxubmV0L21hYzgwMjExL2NmZy5jPTE2MzE9c3RhdGljIGludCBpZWVlODAyMTFfc3RhcnRfYXAoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtMTYzNC1cdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gSUVFRTgwMjExX0RFVl9UT19TVUJfSUYoZGV2KTtcbm5ldC9tYWM4MDIxMS9jZmcuYzoxNjM1Olx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cdTAwM2Vsb2NhbDtcbm5ldC9tYWM4MDIxMS9jZmcuYy0xNjM2LVx0c3RydWN0IGJlYWNvbl9kYXRhICpvbGQ7XG4tLVxubmV0L21hYzgwMjExL2NmZy5jPTIwMTE9c3RhdGljIGludCBpZWVlODAyMTFfc3RvcF9hcChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy0yMDE1LVx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqdmxhbjtcbm5ldC9tYWM4MDIxMS9jZmcuYzoyMDE2Olx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cdTAwM2Vsb2NhbDtcbm5ldC9tYWM4MDIxMS9jZmcuYy0yMDE3LVx0c3RydWN0IGJlYWNvbl9kYXRhICpvbGRfYmVhY29uO1xuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy0yMTI5LVxubmV0L21hYzgwMjExL2NmZy5jOjIxMzA6c3RhdGljIGludCBzdGFfYXBwbHlfYXV0aF9mbGFncyhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbm5ldC9tYWM4MDIxMS9jZmcuYy0yMTMxLVx0XHRcdFx0c3RydWN0IHN0YV9pbmZvICpzdGEsXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTIxODktXG5uZXQvbWFjODAyMTEvY2ZnLmM6MjE5MDpzdGF0aWMgdm9pZCBzdGFfYXBwbHlfbWVzaF9wYXJhbXMoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjE5MS1cdFx0XHRcdCAgc3RydWN0IHN0YV9pbmZvICpzdGEsXG4tLVxubmV0L21hYzgwMjExL2NmZy5jPTIyNTU9ZW51bSBzdGFfbGlua19hcHBseV9tb2RlIHtcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjI2MC1cbm5ldC9tYWM4MDIxMS9jZmcuYzoyMjYxOnN0YXRpYyBpbnQgc3RhX2xpbmtfYXBwbHlfcGFyYW1ldGVycyhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbm5ldC9tYWM4MDIxMS9jZmcuYy0yMjYyLVx0XHRcdFx0ICAgICBzdHJ1Y3Qgc3RhX2luZm8gKnN0YSxcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjQ0OS1cbm5ldC9tYWM4MDIxMS9jZmcuYzoyNDUwOnN0YXRpYyBpbnQgc3RhX2FwcGx5X3BhcmFtZXRlcnMoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjQ1MS1cdFx0XHRcdHN0cnVjdCBzdGFfaW5mbyAqc3RhLFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYz0yNjM0PXN0YXRpYyBpbnQgaWVlZTgwMjExX2FkZF9zdGF0aW9uKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTI2Mzcte1xubmV0L21hYzgwMjExL2NmZy5jOjI2Mzg6XHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHdpcGh5X3ByaXYod2lwaHkpO1xubmV0L21hYzgwMjExL2NmZy5jLTI2MzktXHRzdHJ1Y3Qgc3RhX2luZm8gKnN0YTtcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmM9MjcxND1zdGF0aWMgaW50IGllZWU4MDIxMV9kZWxfc3RhdGlvbihzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy0yNzI3LVxubmV0L21hYzgwMjExL2NmZy5jOjI3Mjg6c3RhdGljIGludCBpZWVlODAyMTFfc2V0X3N0YV80YWRkcihzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbm5ldC9tYWM4MDIxMS9jZmcuYy0yNzI5LVx0XHRcdFx0ICAgc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL2NmZy5jPTI3ODc9c3RhdGljIGludCBpZWVlODAyMTFfY2hhbmdlX3N0YXRpb24oc3RydWN0IHdpcGh5ICp3aXBoeSxcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjc5MS1cdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gSUVFRTgwMjExX1dERVZfVE9fU1VCX0lGKHdkZXYpO1xubmV0L21hYzgwMjExL2NmZy5jOjI3OTI6XHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHdpcGh5X3ByaXYod2lwaHkpO1xubmV0L21hYzgwMjExL2NmZy5jLTI3OTMtXHRzdHJ1Y3Qgc3RhX2luZm8gKnN0YTtcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmM9MzQyNz1zdGF0aWMgaW50IGllZWU4MDIxMV9zZXRfdHhxX3BhcmFtcyhzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy0zNDMwLXtcbm5ldC9tYWM4MDIxMS9jZmcuYzozNDMxOlx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSB3aXBoeV9wcml2KHdpcGh5KTtcbm5ldC9tYWM4MDIxMS9jZmcuYy0zNDMyLVx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBJRUVFODAyMTFfREVWX1RPX1NVQl9JRihkZXYpO1xuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYz0zNTY3PWllZWU4MDIxMV9zY2hlZF9zY2FuX3N0b3Aoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtMzU2OS17XG5uZXQvbWFjODAyMTEvY2ZnLmM6MzU3MDpcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gd2lwaHlfcHJpdih3aXBoeSk7XG5uZXQvbWFjODAyMTEvY2ZnLmMtMzU3MS1cbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmM9MzYzOT1zdGF0aWMgaW50IGllZWU4MDIxMV9zZXRfd2lwaHlfcGFyYW1zKHN0cnVjdCB3aXBoeSAqd2lwaHksIGludCByYWRpb19pZHgsXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTM2NDEte1xubmV0L21hYzgwMjExL2NmZy5jOjM2NDI6XHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHdpcGh5X3ByaXYod2lwaHkpO1xubmV0L21hYzgwMjExL2NmZy5jLTM2NDMtXHRpbnQgZXJyO1xuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYz0zNzA4PXN0YXRpYyBpbnQgaWVlZTgwMjExX3NldF90eF9wb3dlcihzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy0zNzExLXtcbm5ldC9tYWM4MDIxMS9jZmcuYzozNzEyOlx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSB3aXBoeV9wcml2KHdpcGh5KTtcbm5ldC9tYWM4MDIxMS9jZmcuYy0zNzEzLVx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGE7XG4tLVxubmV0L21hYzgwMjExL2NmZy5jPTM4MzU9c3RhdGljIGludCBpZWVlODAyMTFfZ2V0X3R4X3Bvd2VyKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTM4NDAte1xubmV0L21hYzgwMjExL2NmZy5jOjM4NDE6XHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHdpcGh5X3ByaXYod2lwaHkpO1xubmV0L21hYzgwMjExL2NmZy5jLTM4NDItXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IElFRUU4MDIxMV9XREVWX1RPX1NVQl9JRih3ZGV2KTtcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmM9Mzg2Nz1zdGF0aWMgdm9pZCBpZWVlODAyMTFfcmZraWxsX3BvbGwoc3RydWN0IHdpcGh5ICp3aXBoeSlcbm5ldC9tYWM4MDIxMS9jZmcuYy0zODY4LXtcbm5ldC9tYWM4MDIxMS9jZmcuYzozODY5Olx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSB3aXBoeV9wcml2KHdpcGh5KTtcbm5ldC9tYWM4MDIxMS9jZmcuYy0zODcwLVxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYz0zODc1PXN0YXRpYyBpbnQgaWVlZTgwMjExX3Rlc3Rtb2RlX2NtZChzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy0zODc4LXtcbm5ldC9tYWM4MDIxMS9jZmcuYzozODc5Olx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSB3aXBoeV9wcml2KHdpcGh5KTtcbm5ldC9tYWM4MDIxMS9jZmcuYy0zODgwLVx0c3RydWN0IGllZWU4MDIxMV92aWYgKnZpZiA9IE5VTEw7XG4tLVxubmV0L21hYzgwMjExL2NmZy5jPTM4OTY9c3RhdGljIGludCBpZWVlODAyMTFfdGVzdG1vZGVfZHVtcChzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy0zOTAwLXtcbm5ldC9tYWM4MDIxMS9jZmcuYzozOTAxOlx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSB3aXBoeV9wcml2KHdpcGh5KTtcbm5ldC9tYWM4MDIxMS9jZmcuYy0zOTAyLVxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYz0zOTgzPXN0YXRpYyBpbnQgaWVlZTgwMjExX3NldF9wb3dlcl9tZ210KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTM5ODYtXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IElFRUU4MDIxMV9ERVZfVE9fU1VCX0lGKGRldik7XG5uZXQvbWFjODAyMTEvY2ZnLmM6Mzk4NzpcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gd2Rldl9wcml2KGRldi1cdTAwM2VpZWVlODAyMTFfcHRyKTtcbm5ldC9tYWM4MDIxMS9jZmcuYy0zOTg4LVx0dW5zaWduZWQgaW50IGxpbmtfaWQ7XG4tLVxubmV0L21hYzgwMjExL2NmZy5jPTQxMDM9c3RhdGljIGludCBpZWVlODAyMTFfc2V0X2JpdHJhdGVfbWFzayhzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy00MTA5LVx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBJRUVFODAyMTFfREVWX1RPX1NVQl9JRihkZXYpO1xubmV0L21hYzgwMjExL2NmZy5jOjQxMTA6XHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHdkZXZfcHJpdihkZXYtXHUwMDNlaWVlZTgwMjExX3B0cik7XG5uZXQvbWFjODAyMTEvY2ZnLmMtNDExMS1cdGludCBpLCByZXQ7XG4tLVxubmV0L21hYzgwMjExL2NmZy5jPTQxNzM9c3RhdGljIGJvb2wgaWVlZTgwMjExX2lzX3NjYW5fb25nb2luZyhzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxubmV0L21hYzgwMjExL2NmZy5jOjQxNzQ6XHRcdFx0XHQgICAgICBzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbm5ldC9tYWM4MDIxMS9jZmcuYy00MTc1LVx0XHRcdFx0ICAgICAgc3RydWN0IGNmZzgwMjExX2NoYW5fZGVmICpjaGFuZGVmKVxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYz00MjEwPXN0YXRpYyBpbnQgaWVlZTgwMjExX3N0YXJ0X3JhZGFyX2RldGVjdGlvbihzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy00MjE2LVx0c3RydWN0IGllZWU4MDIxMV9jaGFuX3JlcSBjaGFucmVxID0geyAub3BlciA9ICpjaGFuZGVmIH07XG5uZXQvbWFjODAyMTEvY2ZnLmM6NDIxNzpcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gc2RhdGEtXHUwMDNlbG9jYWw7XG5uZXQvbWFjODAyMTEvY2ZnLmMtNDIxOC1cdHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rX2RhdGE7XG4tLVxubmV0L21hYzgwMjExL2NmZy5jPTQyNDU9c3RhdGljIHZvaWQgaWVlZTgwMjExX2VuZF9jYWMoc3RydWN0IHdpcGh5ICp3aXBoeSxcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtNDI0OC1cdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gSUVFRTgwMjExX0RFVl9UT19TVUJfSUYoZGV2KTtcbm5ldC9tYWM4MDIxMS9jZmcuYzo0MjQ5Olx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cdTAwM2Vsb2NhbDtcbm5ldC9tYWM4MDIxMS9jZmcuYy00MjUwLVx0c3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmtfZGF0YTtcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmM9NDM3NT12b2lkIGllZWU4MDIxMV9jc2FfZmluaXNoKHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsIHVuc2lnbmVkIGludCBsaW5rX2lkKVxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy00Mzc3LVx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSB2aWZfdG9fc2RhdGEodmlmKTtcbm5ldC9tYWM4MDIxMS9jZmcuYzo0Mzc4Olx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cdTAwM2Vsb2NhbDtcbm5ldC9tYWM4MDIxMS9jZmcuYy00Mzc5LVx0c3RydWN0IGllZWU4MDIxMV9ic3NfY29uZiAqdHhfYnNzX2NvbmY7XG4tLVxubmV0L21hYzgwMjExL2NmZy5jPTQ0MTc9dm9pZCBpZWVlODAyMTFfY2hhbm5lbF9zd2l0Y2hfZGlzY29ubmVjdChzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmKVxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy00NDIwLVx0c3RydWN0IGllZWU4MDIxMV9pZl9tYW5hZ2VkICppZm1nZCA9IFx1MDAyNnNkYXRhLVx1MDAzZXUubWdkO1xubmV0L21hYzgwMjExL2NmZy5jOjQ0MjE6XHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHNkYXRhLVx1MDAzZWxvY2FsO1xubmV0L21hYzgwMjExL2NmZy5jLTQ0MjItXG4tLVxubmV0L21hYzgwMjExL2NmZy5jPTQ0Njc9c3RhdGljIGludCBfX2llZWU4MDIxMV9jc2FfZmluYWxpemUoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmtfZGF0YSlcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtNDQ2OS1cdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gbGlua19kYXRhLVx1MDAzZXNkYXRhO1xubmV0L21hYzgwMjExL2NmZy5jOjQ0NzA6XHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHNkYXRhLVx1MDAzZWxvY2FsO1xubmV0L21hYzgwMjExL2NmZy5jLTQ0NzEtXHRzdHJ1Y3QgaWVlZTgwMjExX2Jzc19jb25mICpsaW5rX2NvbmYgPSBsaW5rX2RhdGEtXHUwMDNlY29uZjtcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmM9NDU0ND12b2lkIGllZWU4MDIxMV9jc2FfZmluYWxpemVfd29yayhzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lwaHlfd29yayAqd29yaylcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtNDU0OC1cdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gbGluay1cdTAwM2VzZGF0YTtcbm5ldC9tYWM4MDIxMS9jZmcuYzo0NTQ5Olx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cdTAwM2Vsb2NhbDtcbm5ldC9tYWM4MDIxMS9jZmcuYy00NTUwLVxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYz00NzA0PV9faWVlZTgwMjExX2NoYW5uZWxfc3dpdGNoKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTQ3MTEtXHR9O1xubmV0L21hYzgwMjExL2NmZy5jOjQ3MTI6XHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHNkYXRhLVx1MDAzZWxvY2FsO1xubmV0L21hYzgwMjExL2NmZy5jLTQ3MTMtXHRzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWxfc3dpdGNoIGNoX3N3aXRjaCA9IHtcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmM9NDgyMz1pbnQgaWVlZTgwMjExX2NoYW5uZWxfc3dpdGNoKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTQ4MjYtXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IElFRUU4MDIxMV9ERVZfVE9fU1VCX0lGKGRldik7XG5uZXQvbWFjODAyMTEvY2ZnLmM6NDgyNzpcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gc2RhdGEtXHUwMDNlbG9jYWw7XG5uZXQvbWFjODAyMTEvY2ZnLmMtNDgyOC1cbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtNDgzMy1cbm5ldC9tYWM4MDIxMS9jZmcuYzo0ODM0OmludCBpZWVlODAyMTFfYXR0YWNoX2Fja19za2Ioc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsIHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvbWFjODAyMTEvY2ZnLmMtNDgzNS1cdFx0XHQgICAgIHU2NCAqY29va2llLCBnZnBfdCBnZnApXG4tLVxubmV0L21hYzgwMjExL2NmZy5jPTQ4NjQ9aWVlZTgwMjExX3VwZGF0ZV9tZ210X2ZyYW1lX3JlZ2lzdHJhdGlvbnMoc3RydWN0IHdpcGh5ICp3aXBoeSxcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtNDg2Ny17XG5uZXQvbWFjODAyMTEvY2ZnLmM6NDg2ODpcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gd2lwaHlfcHJpdih3aXBoeSk7XG5uZXQvbWFjODAyMTEvY2ZnLmMtNDg2OS1cdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gSUVFRTgwMjExX1dERVZfVE9fU1VCX0lGKHdkZXYpO1xuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYz00OTAyPXN0YXRpYyBpbnQgaWVlZTgwMjExX3NldF9hbnRlbm5hKHN0cnVjdCB3aXBoeSAqd2lwaHksIGludCByYWRpb19pZHgsXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTQ5MDQte1xubmV0L21hYzgwMjExL2NmZy5jOjQ5MDU6XHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHdpcGh5X3ByaXYod2lwaHkpO1xubmV0L21hYzgwMjExL2NmZy5jLTQ5MDYtXHRpbnQgcmV0O1xuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYz00OTE5PXN0YXRpYyBpbnQgaWVlZTgwMjExX2dldF9hbnRlbm5hKHN0cnVjdCB3aXBoeSAqd2lwaHksIGludCByYWRpb19pZHgsXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTQ5MjEte1xubmV0L21hYzgwMjExL2NmZy5jOjQ5MjI6XHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHdpcGh5X3ByaXYod2lwaHkpO1xubmV0L21hYzgwMjExL2NmZy5jLTQ5MjMtXG4tLVxubmV0L21hYzgwMjExL2NmZy5jPTQ5Mjc9c3RhdGljIGludCBpZWVlODAyMTFfc2V0X3Jla2V5X2RhdGEoc3RydWN0IHdpcGh5ICp3aXBoeSxcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtNDkzMC17XG5uZXQvbWFjODAyMTEvY2ZnLmM6NDkzMTpcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gd2lwaHlfcHJpdih3aXBoeSk7XG5uZXQvbWFjODAyMTEvY2ZnLmMtNDkzMi1cdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gSUVFRTgwMjExX0RFVl9UT19TVUJfSUYoZGV2KTtcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmM9NDk0Mj1zdGF0aWMgaW50IGllZWU4MDIxMV9wcm9iZV9wZWVyKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTQ5NDUtXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IElFRUU4MDIxMV9ERVZfVE9fU1VCX0lGKGRldik7XG5uZXQvbWFjODAyMTEvY2ZnLmM6NDk0NjpcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gc2RhdGEtXHUwMDNlbG9jYWw7XG5uZXQvbWFjODAyMTEvY2ZnLmMtNDk0Ny1cdHN0cnVjdCBpZWVlODAyMTFfcW9zX2hkciAqbnVsbGZ1bmM7XG4tLVxubmV0L21hYzgwMjExL2NmZy5jPTUwNjU9c3RhdGljIGludCBpZWVlODAyMTFfY2ZnX2dldF9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTUwNzAtXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IElFRUU4MDIxMV9XREVWX1RPX1NVQl9JRih3ZGV2KTtcbm5ldC9tYWM4MDIxMS9jZmcuYzo1MDcxOlx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSB3aXBoeV9wcml2KHdpcGh5KTtcbm5ldC9tYWM4MDIxMS9jZmcuYy01MDcyLVx0c3RydWN0IGllZWU4MDIxMV9jaGFuY3R4X2NvbmYgKmNoYW5jdHhfY29uZjtcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmM9NTE4MD1zdGF0aWMgaW50IGllZWU4MDIxMV9kZWxfdHhfdHMoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtNTE4NC1cdHN0cnVjdCBpZWVlODAyMTFfaWZfbWFuYWdlZCAqaWZtZ2QgPSBcdTAwMjZzZGF0YS1cdTAwM2V1Lm1nZDtcbm5ldC9tYWM4MDIxMS9jZmcuYzo1MTg1Olx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSB3aXBoeV9wcml2KHdpcGh5KTtcbm5ldC9tYWM4MDIxMS9jZmcuYy01MTg2LVx0aW50IGFjO1xuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYz01MzY4PXN0YXRpYyBpbnQgaWVlZTgwMjExX2dldF90eHFfc3RhdHMoc3RydWN0IHdpcGh5ICp3aXBoeSxcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtNTM3MS17XG5uZXQvbWFjODAyMTEvY2ZnLmM6NTM3MjpcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gd2lwaHlfcHJpdih3aXBoeSk7XG5uZXQvbWFjODAyMTEvY2ZnLmMtNTM3My1cdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhO1xuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYz01NDA4PWllZWU4MDIxMV9nZXRfZnRtX3Jlc3BvbmRlcl9zdGF0cyhzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy01NDExLXtcbm5ldC9tYWM4MDIxMS9jZmcuYzo1NDEyOlx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSB3aXBoeV9wcml2KHdpcGh5KTtcbm5ldC9tYWM4MDIxMS9jZmcuYy01NDEzLVx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBJRUVFODAyMTFfREVWX1RPX1NVQl9JRihkZXYpO1xuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYz01NDE5PWllZWU4MDIxMV9zdGFydF9wbXNyKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKmRldixcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtNTQyMS17XG5uZXQvbWFjODAyMTEvY2ZnLmM6NTQyMjpcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gd2lwaHlfcHJpdih3aXBoeSk7XG5uZXQvbWFjODAyMTEvY2ZnLmMtNTQyMy1cdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gSUVFRTgwMjExX1dERVZfVE9fU1VCX0lGKGRldik7XG4tLVxubmV0L21hYzgwMjExL2NmZy5jPTU0Mjk9aWVlZTgwMjExX2Fib3J0X3Btc3Ioc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqZGV2LFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy01NDMxLXtcbm5ldC9tYWM4MDIxMS9jZmcuYzo1NDMyOlx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSB3aXBoeV9wcml2KHdpcGh5KTtcbm5ldC9tYWM4MDIxMS9jZmcuYy01NDMzLVx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBJRUVFODAyMTFfV0RFVl9UT19TVUJfSUYoZGV2KTtcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmM9NTQ4Mj1zdGF0aWMgaW50IGllZWU4MDIxMV9zZXRfc2FyX3NwZWNzKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTU0ODQte1xubmV0L21hYzgwMjExL2NmZy5jOjU0ODU6XHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHdpcGh5X3ByaXYod2lwaHkpO1xubmV0L21hYzgwMjExL2NmZy5jLTU0ODYtXG4tLVxubmV0L21hYzgwMjExL2NmZy5jPTU1OTU9c3RhdGljIGludCBpZWVlODAyMTFfY29sb3JfY2hhbmdlX2ZpbmFsaXplKHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rKVxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy01NTk3LVx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBsaW5rLVx1MDAzZXNkYXRhO1xubmV0L21hYzgwMjExL2NmZy5jOjU1OTg6XHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHNkYXRhLVx1MDAzZWxvY2FsO1xubmV0L21hYzgwMjExL2NmZy5jLTU1OTktXHR1NjQgY2hhbmdlZCA9IDA7XG4tLVxubmV0L21hYzgwMjExL2NmZy5jPTU2MjA9dm9pZCBpZWVlODAyMTFfY29sb3JfY2hhbmdlX2ZpbmFsaXplX3dvcmsoc3RydWN0IHdpcGh5ICp3aXBoeSxcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtNTYyNy1cdHN0cnVjdCBpZWVlODAyMTFfYnNzX2NvbmYgKmxpbmtfY29uZiA9IGxpbmstXHUwMDNlY29uZjtcbm5ldC9tYWM4MDIxMS9jZmcuYzo1NjI4Olx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cdTAwM2Vsb2NhbDtcbm5ldC9tYWM4MDIxMS9jZmcuYy01NjI5LVxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYz01NzE5PWllZWU4MDIxMV9jb2xvcl9jaGFuZ2Uoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtNTcyMi1cdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gSUVFRTgwMjExX0RFVl9UT19TVUJfSUYoZGV2KTtcbm5ldC9tYWM4MDIxMS9jZmcuYzo1NzIzOlx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cdTAwM2Vsb2NhbDtcbm5ldC9tYWM4MDIxMS9jZmcuYy01NzI0LVx0c3RydWN0IGllZWU4MDIxMV9ic3NfY29uZiAqbGlua19jb25mO1xuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYz01Nzc5PWllZWU4MDIxMV9zZXRfcmFkYXJfYmFja2dyb3VuZChzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy01NzgxLXtcbm5ldC9tYWM4MDIxMS9jZmcuYzo1NzgyOlx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSB3aXBoeV9wcml2KHdpcGh5KTtcbm5ldC9tYWM4MDIxMS9jZmcuYy01NzgzLVxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYz01ODE5PWllZWU4MDIxMV9hZGRfbGlua19zdGF0aW9uKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTU4MjItXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IElFRUU4MDIxMV9ERVZfVE9fU1VCX0lGKGRldik7XG5uZXQvbWFjODAyMTEvY2ZnLmM6NTgyMzpcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gd2lwaHlfcHJpdih3aXBoeSk7XG5uZXQvbWFjODAyMTEvY2ZnLmMtNTgyNC1cdHN0cnVjdCBzdGFfaW5mbyAqc3RhO1xuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYz01ODYxPWllZWU4MDIxMV9tb2RfbGlua19zdGF0aW9uKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTU4NjQtXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IElFRUU4MDIxMV9ERVZfVE9fU1VCX0lGKGRldik7XG5uZXQvbWFjODAyMTEvY2ZnLmM6NTg2NTpcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gd2lwaHlfcHJpdih3aXBoeSk7XG5uZXQvbWFjODAyMTEvY2ZnLmMtNTg2Ni1cdHN0cnVjdCBzdGFfaW5mbyAqc3RhO1xuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYz01OTA2PXN0YXRpYyBpbnQgaWVlZTgwMjExX3NldF9od190aW1lc3RhbXAoc3RydWN0IHdpcGh5ICp3aXBoeSxcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtNTkxMC1cdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gSUVFRTgwMjExX0RFVl9UT19TVUJfSUYoZGV2KTtcbm5ldC9tYWM4MDIxMS9jZmcuYzo1OTExOlx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cdTAwM2Vsb2NhbDtcbm5ldC9tYWM4MDIxMS9jZmcuYy01OTEyLVxuLS1cbm5ldC9tYWM4MDIxMS9jaGFuLmM9MTExPXN0YXRpYyB2b2lkXG5uZXQvbWFjODAyMTEvY2hhbi5jOjExMjppZWVlODAyMTFfY2hhbmN0eF91c2VyX2l0ZXJfbmV4dChzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbm5ldC9tYWM4MDIxMS9jaGFuLmMtMTEzLVx0XHRcdFx0IHN0cnVjdCBpZWVlODAyMTFfY2hhbmN0eCAqY3R4LFxuLS1cbm5ldC9tYWM4MDIxMS9jaGFuLmMtMTkwLVxubmV0L21hYzgwMjExL2NoYW4uYzoxOTE6aW50IGllZWU4MDIxMV9jaGFuY3R4X251bV9hc3NpZ25lZChzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbm5ldC9tYWM4MDIxMS9jaGFuLmMtMTkyLVx0XHRcdFx0ICAgc3RydWN0IGllZWU4MDIxMV9jaGFuY3R4ICpjdHgpXG4tLVxubmV0L21hYzgwMjExL2NoYW4uYy0yMDItXG5uZXQvbWFjODAyMTEvY2hhbi5jOjIwMzpzdGF0aWMgaW50IGllZWU4MDIxMV9jaGFuY3R4X251bV9yZXNlcnZlZChzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbm5ldC9tYWM4MDIxMS9jaGFuLmMtMjA0LVx0XHRcdFx0XHQgIHN0cnVjdCBpZWVlODAyMTFfY2hhbmN0eCAqY3R4KVxuLS1cbm5ldC9tYWM4MDIxMS9jaGFuLmMtMjE0LVxubmV0L21hYzgwMjExL2NoYW4uYzoyMTU6aW50IGllZWU4MDIxMV9jaGFuY3R4X3JlZmNvdW50KHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxubmV0L21hYzgwMjExL2NoYW4uYy0yMTYtXHRcdFx0ICAgICAgIHN0cnVjdCBpZWVlODAyMTFfY2hhbmN0eCAqY3R4KVxuLS1cbm5ldC9tYWM4MDIxMS9jaGFuLmMtMjMzLVxubmV0L21hYzgwMjExL2NoYW4uYzoyMzQ6c3RhdGljIGludCBpZWVlODAyMTFfbnVtX2NoYW5jdHgoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsIGludCByYWRpb19pZHgpXG5uZXQvbWFjODAyMTEvY2hhbi5jLTIzNS17XG4tLVxubmV0L21hYzgwMjExL2NoYW4uYy0yNDktXG5uZXQvbWFjODAyMTEvY2hhbi5jOjI1MDpzdGF0aWMgYm9vbCBpZWVlODAyMTFfY2FuX2NyZWF0ZV9uZXdfY2hhbmN0eChzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbm5ldC9tYWM4MDIxMS9jaGFuLmMtMjUxLVx0XHRcdFx0XHQgICAgIGludCByYWRpb19pZHgpXG4tLVxubmV0L21hYzgwMjExL2NoYW4uYz0yNjA9aWVlZTgwMjExX2xpbmtfZ2V0X2NoYW5jdHgoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmspXG5uZXQvbWFjODAyMTEvY2hhbi5jLTI2MS17XG5uZXQvbWFjODAyMTEvY2hhbi5jOjI2MjpcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsIF9fbWF5YmVfdW51c2VkID0gbGluay1cdTAwM2VzZGF0YS1cdTAwM2Vsb2NhbDtcbm5ldC9tYWM4MDIxMS9jaGFuLmMtMjYzLVx0c3RydWN0IGllZWU4MDIxMV9jaGFuY3R4X2NvbmYgKmNvbmY7XG4tLVxubmV0L21hYzgwMjExL2NoYW4uYz0zMzM9c3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfY2hhbl9yZXEgKlxubmV0L21hYzgwMjExL2NoYW4uYzozMzQ6X2llZWU4MDIxMV9jaGFuY3R4X2NvbXBhdGlibGUoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG5uZXQvbWFjODAyMTEvY2hhbi5jLTMzNS1cdFx0XHQgICAgICBzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqc2tpcF9saW5rLFxuLS1cbm5ldC9tYWM4MDIxMS9jaGFuLmM9MzU4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5fcmVxICpcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxNzo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzM3MgoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDQ1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqVHJhY2luZyB0aGUgSUVFRTgwMjExIExvY2FsIFN0cnVjdHVyZSBBbGxvY2F0aW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGluLiBJIG5lZWQgdG8gZmlndXJlIG91dCBwcmVjaXNlbHkgd2hlcmUgdGhlIGBzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsYCBpcyBiZWluZyBhbGxvY2F0ZWQgd2l0aGluIHRoZSB3aXJlbGVzcyBzdGFjay4gTXkgaW5pdGlhbCBodW5jaCBpcyB0aGF0IGl0JiMzOTtzIGxpa2VseSBoYW5kbGVkIGJ5IGVpdGhlciBgaWVlZTgwMjExX2FsbG9jX2h3YCBvciBwZXJoYXBzIGB3aXBoeV9uZXdfbm1gIOKAkyBvciBwb3RlbnRpYWxseSBzb21ldGhpbmcgZWxzZSBlbnRpcmVseSBpbiB0aGF0IGluc3RhbnRpYXRpb24gY2hhaW4sIHNvIEkgbmVlZCB0byBjaGVjayB0aG9zZSBhcmVhcy4gSSBuZWVkIHRvIHBpbnBvaW50IHRoZSBleGFjdCBmdW5jdGlvbiByZXNwb25zaWJsZS4gSXQmIzM5O3MgY3J1Y2lhbCB0byB1bmRlcnN0YW5kIHRoaXMgaW5pdGlhbCBhbGxvY2F0aW9uIHBvaW50IHRvIHRoZW4gdHJhY2sgbWVtb3J5IG1hbmFnZW1lbnQsIGluaXRpYWxpemF0aW9uLCBhbmQgdWx0aW1hdGVseSwgaG93IHRoaXMgY29yZSBzdHJ1Y3R1cmUgdGllcyBpbnRvIHRoZSB3aWRlciBmcmFtZXdvcmsuIEdvdHRhIGxvY2F0ZSBpdCBhbmQgY2hlY2sgd2hhdCBlbHNlIHRoZSBhbGxvY2F0aW5nIGZ1bmN0aW9uIG1pZ2h0IGJlIGRvaW5nIGF0IHRoZSB0aW1lIG9mIGluc3RhbnRpYXRpb24sIGFuZCBsb29rIGZvciBwb3RlbnRpYWwgaG9va3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDE3OjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2llZWU4MDIxMV9hbGxvY19odyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvbWFpbi5jPTc3NT1zdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV92aHRfY2FwIG1hYzgwMjExX3ZodF9jYXBhX21vZF9tYXNrID0ge1xuLS1cbm5ldC9tYWM4MDIxMS9tYWluLmMtNzkyLVxubmV0L21hYzgwMjExL21haW4uYzo3OTM6c3RydWN0IGllZWU4MDIxMV9odyAqaWVlZTgwMjExX2FsbG9jX2h3X25tKHNpemVfdCBwcml2X2RhdGFfbGVuLFxubmV0L21hYzgwMjExL21haW4uYy03OTQtXHRcdFx0XHRcdCAgIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfb3BzICpvcHMsXG4tLVxubmV0L21hYzgwMjExL21haW4uYy0xMDUwLX1cbm5ldC9tYWM4MDIxMS9tYWluLmM6MTA1MTpFWFBPUlRfU1lNQk9MKGllZWU4MDIxMV9hbGxvY19od19ubSk7XG5uZXQvbWFjODAyMTEvbWFpbi5jLTEwNTItXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDE3OjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3ODkwCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBgbWFjODAyMTFgIEluaXRpYWxpemF0aW9uKioKCk9rYXksIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiBob3cgdGhlIGBsb2NhbGAgc3RydWN0dXJlIGlzIGFsbG9jYXRlZCB3aXRoaW4gdGhlIGBtYWM4MDIxMWAgc3Vic3lzdGVtLiBJIHJlY2FsbCB0aGF0JiMzOTtzIHRoZSBjb3JlIHN0cnVjdHVyZSByZXByZXNlbnRpbmcgYSBwYXJ0aWN1bGFyIHdpcmVsZXNzIGRldmljZS4gSSYjMzk7bGwgbmVlZCB0byBnbyB0byBgbmV0L21hYzgwMjExL21haW4uY2AgYW5kIHRha2UgYSBsb29rIGFyb3VuZCBsaW5lIDc5MywgdGhlcmUgc2hvdWxkIGJlIHNvbWUgcmVsZXZhbnQgY29kZSBhcm91bmQgdGhlIGRyaXZlciBpbml0aWFsaXphdGlvbiBwcm9jZXNzLiBMZXQmIzM5O3Mgc2VlIGhvdyB0aGF0IGNydWNpYWwgYGxvY2FsYCB2YXJpYWJsZSBjb21lcyBpbnRvIGJlaW5nLi4uIEl0JiMzOTtzIGFsbCBhYm91dCB1bmRlcnN0YW5kaW5nIHJlc291cmNlIG1hbmFnZW1lbnQgYW5kIGhvdyB0aGUgZHJpdmVyIGdldHMgc2V0IHVwLCBzbyBJIGNhbiBzZWUgYW55IHBvdGVudGlhbCBjb25jdXJyZW5jeSBwcm9ibGVtcy4gSSYjMzk7bSBhZnRlciB0aGUgYWxsb2NhdGlvbiBpdHNlbGYsIHRoZSByZWxldmFudCBhcmd1bWVudHMsIGFuZCBhbnkgaW50ZXJhY3Rpb25zIHdpdGggdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUgc2V0dXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDE3OjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL21haW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDc5MywKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNzkzOlx0c3RydWN0IGllZWU4MDIxMV9odyAqaWVlZTgwMjExX2FsbG9jX2h3X25tKHNpemVfdCBwcml2X2RhdGFfbGVuLFxuIDc5NDpcdFx0XHRcdFx0XHQgICBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX29wcyAqb3BzLFxuIDc5NTpcdFx0XHRcdFx0XHQgICBjb25zdCBjaGFyICpyZXF1ZXN0ZWRfbmFtZSlcbiA3OTY6XHR7XG4gNzk3Olx0XHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbDtcbiA3OTg6XHRcdGludCBwcml2X3NpemUsIGk7XG4gNzk5Olx0XHRzdHJ1Y3Qgd2lwaHkgKndpcGh5O1xuIDgwMDpcdFx0Ym9vbCBlbXVsYXRlX2NoYW5jdHg7XG4gODAxOlx0XG4gODAyOlx0XHRpZiAoV0FSTl9PTighb3BzLVx1MDAzZXR4IHx8ICFvcHMtXHUwMDNlc3RhcnQgfHwgIW9wcy1cdTAwM2VzdG9wIHx8ICFvcHMtXHUwMDNlY29uZmlnIHx8XG4gODAzOlx0XHRcdCAgICAhb3BzLVx1MDAzZWFkZF9pbnRlcmZhY2UgfHwgIW9wcy1cdTAwM2VyZW1vdmVfaW50ZXJmYWNlIHx8XG4gODA0Olx0XHRcdCAgICAhb3BzLVx1MDAzZWNvbmZpZ3VyZV9maWx0ZXIgfHwgIW9wcy1cdTAwM2V3YWtlX3R4X3F1ZXVlKSlcbiA4MDU6XHRcdFx0cmV0dXJuIE5VTEw7XG4gODA2Olx0XG4gODA3Olx0XHRpZiAoV0FSTl9PTihvcHMtXHUwMDNlc3RhX3N0YXRlIFx1MDAyNlx1MDAyNiAob3BzLVx1MDAzZXN0YV9hZGQgfHwgb3BzLVx1MDAzZXN0YV9yZW1vdmUpKSlcbiA4MDg6XHRcdFx0cmV0dXJuIE5VTEw7XG4gODA5Olx0XG4gODEwOlx0XHRpZiAoV0FSTl9PTighIW9wcy1cdTAwM2VsaW5rX2luZm9fY2hhbmdlZCAhPSAhIW9wcy1cdTAwM2V2aWZfY2ZnX2NoYW5nZWQgfHxcbiA4MTE6XHRcdFx0ICAgIChvcHMtXHUwMDNlbGlua19pbmZvX2NoYW5nZWQgXHUwMDI2XHUwMDI2IG9wcy1cdTAwM2Vic3NfaW5mb19jaGFuZ2VkKSkpXG4gODEyOlx0XHRcdHJldHVybiBOVUxMO1xuIDgxMzpcdFxuIDgxNDpcdFx0LyogY2hlY2sgYWxsIG9yIG5vIGNoYW5uZWwgY29udGV4dCBvcGVyYXRpb25zIGV4aXN0ICovXG4gODE1Olx0XHRpZiAob3BzLVx1MDAzZWFkZF9jaGFuY3R4ID09IGllZWU4MDIxMV9lbXVsYXRlX2FkZF9jaGFuY3R4IFx1MDAyNlx1MDAyNlxuIDgxNjpcdFx0ICAgIG9wcy1cdTAwM2VyZW1vdmVfY2hhbmN0eCA9PSBpZWVlODAyMTFfZW11bGF0ZV9yZW1vdmVfY2hhbmN0eCBcdTAwMjZcdTAwMjZcbiA4MTc6XHRcdCAgICBvcHMtXHUwMDNlY2hhbmdlX2NoYW5jdHggPT0gaWVlZTgwMjExX2VtdWxhdGVfY2hhbmdlX2NoYW5jdHgpIHtcbiA4MTg6XHRcdFx0aWYgKFdBUk5fT04ob3BzLVx1MDAzZWFzc2lnbl92aWZfY2hhbmN0eCB8fFxuIDgxOTpcdFx0XHRcdCAgICBvcHMtXHUwMDNldW5hc3NpZ25fdmlmX2NoYW5jdHgpKVxuIDgyMDpcdFx0XHRcdHJldHVybiBOVUxMO1xuIDgyMTpcdFx0XHRlbXVsYXRlX2NoYW5jdHggPSB0cnVlO1xuIDgyMjpcdFx0fSBlbHNlIHtcbiA4MjM6XHRcdFx0aWYgKFdBUk5fT04ob3BzLVx1MDAzZWFkZF9jaGFuY3R4ID09IGllZWU4MDIxMV9lbXVsYXRlX2FkZF9jaGFuY3R4IHx8XG4gODI0Olx0XHRcdFx0ICAgIG9wcy1cdTAwM2VyZW1vdmVfY2hhbmN0eCA9PSBpZWVlODAyMTFfZW11bGF0ZV9yZW1vdmVfY2hhbmN0eCB8fFxuIDgyNTpcdFx0XHRcdCAgICBvcHMtXHUwMDNlY2hhbmdlX2NoYW5jdHggPT0gaWVlZTgwMjExX2VtdWxhdGVfY2hhbmdlX2NoYW5jdHgpKVxuIDgyNjpcdFx0XHRcdHJldHVybiBOVUxMO1xuIDgyNzpcdFx0XHRpZiAoV0FSTl9PTighb3BzLVx1MDAzZWFkZF9jaGFuY3R4IHx8XG4gODI4Olx0XHRcdFx0ICAgICFvcHMtXHUwMDNlcmVtb3ZlX2NoYW5jdHggfHxcbiA4Mjk6XHRcdFx0XHQgICAgIW9wcy1cdTAwM2VjaGFuZ2VfY2hhbmN0eCB8fFxuIDgzMDpcdFx0XHRcdCAgICAhb3BzLVx1MDAzZWFzc2lnbl92aWZfY2hhbmN0eCB8fFxuIDgzMTpcdFx0XHRcdCAgICAhb3BzLVx1MDAzZXVuYXNzaWduX3ZpZl9jaGFuY3R4KSlcbiA4MzI6XHRcdFx0XHRyZXR1cm4gTlVMTDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTc6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg5MjgKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIGNvZGUuCgoqKkFuYWx5emluZyBgaWVlZTgwMjExX2FsbG9jX2h3X25tYCoqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCBpbnRvIHRoZSB3ZWVkcyBvZiBgaWVlZTgwMjExX2FsbG9jX2h3X25tYC4gTGV0JiMzOTtzIGFzc3VtZSB0aGlzIGlzIHRoZSBoYXJkd2FyZSBhbGxvY2F0aW9uIGZ1bmN0aW9uIGZvciBhbiA4MDIuMTEgZGV2aWNlLCB3aXRoICYjMzQ7bm0mIzM0OyBwcm9iYWJseSByZWZlcnJpbmcgdG8gJiMzNDtuZXcgbW9kZWwmIzM0OyBvciBhIHNwZWNpZmljIGltcGxlbWVudGF0aW9uLiBJJiMzOTtsbCBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgZnVuY3Rpb24gaW50ZXJmYWNlcyB3aXRoIHRoZSBleGlzdGluZyA4MDIuMTEgc3RhY2suIEkmIzM5O20gbG9va2luZyBmb3IgbWVtb3J5IGFsbG9jYXRpb24gcGF0dGVybnMsIGluaXRpYWxpemF0aW9uIHN0ZXBzLCBhbmQgaG93IHRoZSBkcml2ZXIgZ2V0cyBpbnRlZ3JhdGVkLiBJIGV4cGVjdCB0byBzZWUgY2FsbHMgdG8gbG93ZXItbGV2ZWwgaGFyZHdhcmUgaW5pdGlhbGl6YXRpb24gcm91dGluZXMuIEFyZSB0aGV5IHVzaW5nIERNQT8gSG93IGFyZSB0aGUgaW50ZXJydXB0IGhhbmRsZXJzIHNldCB1cD8gQW55IHBvdGVudGlhbCBsb2NraW5nIG1lY2hhbmlzbXM/IERvZXMgdGhpcyB1c2UgYSBjdXN0b20gZGVzY3JpcHRvciBmb3JtYXQgb3IgYXJlIHRoZXkgZm9sbG93aW5nIGEgc3RhbmRhcmQgb25lPyBJIG5lZWQgdG8gYW5hbHl6ZSBob3cgdGhpcyBhbGxvY2F0ZXMgdGhlICpodyogc3RydWN0dXJlIGFuZCBpZiBpdCB1c2VzIGEgKmNmZyogc3RydWN0dXJlIHRvIGluaXRpYWxpemUgaXQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoaXMgd2lsbCBiZSBnZW5lcmljIHRvIHNldmVyYWwgaGFyZHdhcmUgcGxhdGZvcm1zLCBvciBpZiBpdCBpcyBwbGF0Zm9ybS1zcGVjaWZpYy4gQW55IG9mIHRoZXNlIHdvdWxkIGFmZmVjdCBwZXJmb3JtYW5jZSBhbmQgc3RhYmlsaXR5IGRvd24gdGhlIGxpbmUuIEkgYW0gcmVhbGx5IGludGVyZXN0ZWQgaW4gaG93IHRoZXkgaW5pdGlhbGl6ZSB0aGUgaGFyZHdhcmUgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTc6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvbWFpbi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogODMzLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA4MzM6XHRcdFx0ZW11bGF0ZV9jaGFuY3R4ID0gZmFsc2U7XG4gODM0Olx0XHR9XG4gODM1Olx0XG4gODM2Olx0XHQvKiBFbnN1cmUgMzItYnl0ZSBhbGlnbm1lbnQgb2Ygb3VyIHByaXZhdGUgZGF0YSBhbmQgaHcgcHJpdmF0ZSBkYXRhLlxuIDgzNzpcdFx0ICogV2UgdXNlIHRoZSB3aXBoeSBwcml2IGRhdGEgZm9yIGJvdGggb3VyIGllZWU4MDIxMV9sb2NhbCBhbmQgZm9yXG4gODM4Olx0XHQgKiB0aGUgZHJpdmVyJiMzOTtzIHByaXZhdGUgZGF0YVxuIDgzOTpcdFx0ICpcbiA4NDA6XHRcdCAqIEluIG1lbW9yeSBpdCYjMzk7bGwgYmUgbGlrZSB0aGlzOlxuIDg0MTpcdFx0ICpcbiA4NDI6XHRcdCAqICYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7XG4gODQzOlx0XHQgKiB8IHN0cnVjdCB3aXBoeVx0ICAgIHxcbiA4NDQ6XHRcdCAqICYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7XG4gODQ1Olx0XHQgKiB8IHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgIHxcbiA4NDY6XHRcdCAqICYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7XG4gODQ3Olx0XHQgKiB8IGRyaXZlciYjMzk7cyBwcml2YXRlIGRhdGEgICB8XG4gODQ4Olx0XHQgKiAmIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzO1xuIDg0OTpcdFx0ICpcbiA4NTA6XHRcdCAqL1xuIDg1MTpcdFx0cHJpdl9zaXplID0gQUxJR04oc2l6ZW9mKCpsb2NhbCksIE5FVERFVl9BTElHTikgJiM0MzsgcHJpdl9kYXRhX2xlbjtcbiA4NTI6XHRcbiA4NTM6XHRcdHdpcGh5ID0gd2lwaHlfbmV3X25tKFx1MDAyNm1hYzgwMjExX2NvbmZpZ19vcHMsIHByaXZfc2l6ZSwgcmVxdWVzdGVkX25hbWUpO1xuIDg1NDpcdFxuIDg1NTpcdFx0aWYgKCF3aXBoeSlcbiA4NTY6XHRcdFx0cmV0dXJuIE5VTEw7XG4gODU3Olx0XG4gODU4Olx0XHR3aXBoeS1cdTAwM2VtZ210X3N0eXBlcyA9IGllZWU4MDIxMV9kZWZhdWx0X21nbXRfc3R5cGVzO1xuIDg1OTpcdFxuIDg2MDpcdFx0d2lwaHktXHUwMDNlcHJpdmlkID0gbWFjODAyMTFfd2lwaHlfcHJpdmlkO1xuIDg2MTpcdFxuIDg2MjpcdFx0d2lwaHktXHUwMDNlZmxhZ3MgfD0gV0lQSFlfRkxBR19ORVROU19PSyB8XG4gODYzOlx0XHRcdFx0V0lQSFlfRkxBR180QUREUl9BUCB8XG4gODY0Olx0XHRcdFx0V0lQSFlfRkxBR180QUREUl9TVEFUSU9OIHxcbiA4NjU6XHRcdFx0XHRXSVBIWV9GTEFHX1JFUE9SVFNfT0JTUyB8XG4gODY2Olx0XHRcdFx0V0lQSFlfRkxBR19PRkZDSEFOX1RYO1xuIDg2NzpcdFxuIDg2ODpcdFx0aWYgKGVtdWxhdGVfY2hhbmN0eCB8fCBvcHMtXHUwMDNlcmVtYWluX29uX2NoYW5uZWwpXG4gODY5Olx0XHRcdHdpcGh5LVx1MDAzZWZsYWdzIHw9IFdJUEhZX0ZMQUdfSEFTX1JFTUFJTl9PTl9DSEFOTkVMO1xuIDg3MDpcdFxuIDg3MTpcdFx0d2lwaHktXHUwMDNlYnNzX3BhcmFtX3N1cHBvcnQgPSBXSVBIWV9CU1NfUEFSQU1fQ1RTX1BST1QgfFxuIDg3MjpcdFx0XHRcdFx0ICAgV0lQSFlfQlNTX1BBUkFNX1NIT1JUX1BSRUFNQkxFIHxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTc6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk4OTEKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSYjMzk7bSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczoKCioqRGl2aW5nIGludG8gd2lwaHlfbmV3X25tIGFuZCBNZW1vcnkgQWxsb2NhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYHdpcGh5X25ld19ubWAuIFJpZ2h0IGF3YXksIG15IHJhZGFyIGdvZXMgdXAgYmVjYXVzZSBJIHNlZSBga3phbGxvY2AgaXMgYmVpbmcgdXNlZC4gVGhhdCYjMzk7cyBhIGtleSBmdW5jdGlvbiBmb3IgYWxsb2NhdGluZyBtZW1vcnksIHNwZWNpZmljYWxseSBmb3IgaW5pdGlhbGl6aW5nIGl0IHRvIHplcm8uIEluIHRoaXMgY2FzZSwgaXQmIzM5O3MgZ3JhYmJpbmcgc3BhY2UgZm9yIGJvdGggdGhlIGB3aXBoeWAgc3RydWN0dXJlIGl0c2VsZiAqYW5kKiB0aGUgcHJpdmF0ZSBkYXRhIGFzc29jaWF0ZWQgd2l0aCBpdC4gVGhpcyBpcyBwcmV0dHkgc3RhbmRhcmQgcHJhY3RpY2UsIGJ1dCBpdCYjMzk7cyAqY3JpdGljYWwqIHRvIHZlcmlmeSB0aGlzIGFsbG9jYXRpb24gbWV0aG9kIHRob3JvdWdobHkuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBpcyBiZWluZyBoYW5kbGVkIGNvcnJlY3RseSwgcGFydGljdWxhcmx5IGluIHRoaXMgY29udGV4dC4gVGhlIHNpemUgY2FsY3VsYXRpb24sIGFueSBwb3RlbnRpYWwgb2ZmLWJ5LW9uZSBlcnJvcnMsIGFuZCBhbGlnbm1lbnQgaXNzdWVzIGFyZSBnb2luZyB0byBiZSBteSBwcmltYXJ5IGNvbmNlcm5zLiBJIHdpbGwgYWxzbyBiZSBvbiB0aGUgbG9va291dCBmb3IgcG90ZW50aWFsIG1lbW9yeSBsZWFrcywgcGFydGljdWxhcmx5IGlmIHNvbWV0aGluZyBoYXBwZW5zIHRvIGRlLWFsbG9jYXRlIG9uZSBwYXJ0IGFuZCBub3QgdGhlIG90aGVyLCBsZWFkaW5nIHRvIGEgaGFsZi1mcmVlZCBjaHVuayBvZiBtZW1vcnkuIExldCYjMzk7cyBkZWx2ZSBpbiBhbmQgbWFrZSBzdXJlIHRoaXMgaXMgZG9uZSBzb3VuZGx5IGFuZCBzYWZlbHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDE3OjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3dpcGh5X25ld19ubSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3MvY29yZS5jPTUxOD1zdGF0aWMgdm9pZCBjZmc4MDIxMV93aXBoeV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5uZXQvd2lyZWxlc3MvY29yZS5jLTU0OC1cbm5ldC93aXJlbGVzcy9jb3JlLmM6NTQ5OnN0cnVjdCB3aXBoeSAqd2lwaHlfbmV3X25tKGNvbnN0IHN0cnVjdCBjZmc4MDIxMV9vcHMgKm9wcywgaW50IHNpemVvZl9wcml2LFxubmV0L3dpcmVsZXNzL2NvcmUuYy01NTAtXHRcdFx0ICAgY29uc3QgY2hhciAqcmVxdWVzdGVkX25hbWUpXG4tLVxubmV0L3dpcmVsZXNzL2NvcmUuYy03MDItfVxubmV0L3dpcmVsZXNzL2NvcmUuYzo3MDM6RVhQT1JUX1NZTUJPTCh3aXBoeV9uZXdfbm0pO1xubmV0L3dpcmVsZXNzL2NvcmUuYy03MDQtXG4tLVxubmV0L3dpcmVsZXNzL3Rlc3RzL3V0aWwuYz0xMz1pbnQgdF93aXBoeV9pbml0KHN0cnVjdCBrdW5pdF9yZXNvdXJjZSAqcmVzb3VyY2UsIHZvaWQgKmN0eClcbi0tXG5uZXQvd2lyZWxlc3MvdGVzdHMvdXRpbC5jLTIyLVxubmV0L3dpcmVsZXNzL3Rlc3RzL3V0aWwuYzoyMzpcdHdpcGh5ID0gd2lwaHlfbmV3X25tKG9wcywgc2l6ZW9mKCpwcml2KSwgXCYjMzQ7a3VuaXRcJiMzNDspO1xubmV0L3dpcmVsZXNzL3Rlc3RzL3V0aWwuYy0yNC1cdEtVTklUX0FTU0VSVF9OT1RfTlVMTCh0ZXN0LCB3aXBoeSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDE3OjQ0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNDc0CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipEaXZpbmcgaW50byBgd2lwaHlfbmV3X25tYCoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgYSBuZXcgV2ktRmkgUEhZIGlzIGJlaW5nIGhhbmRsZWQgaW50ZXJuYWxseS4gTGV0JiMzOTtzIHN0YXJ0IGJ5IGxvb2tpbmcgYXQgYHdpcGh5X25ld19ubWAgaW4gYG5ldC93aXJlbGVzcy9jb3JlLmNgLiBUaGF0IGZ1bmN0aW9uIG5hbWUgc3VnZ2VzdHMgaXQmIzM5O3MgdGhlIHJpZ2h0IHBsYWNlIHRvIGJlZ2lu4oCUbGlrZWx5IHdoZXJlIHRoZSBuZXcgYHdpcGh5YCBzdHJ1Y3R1cmUgaXMgYWxsb2NhdGVkIGFuZCBpbml0aWFsaXplZCwgc3BlY2lmaWNhbGx5IHdoZW4gYSBuZXcgTmV0bGluayBtZXNzYWdlIGlzIHJlY2VpdmVkLCBnaXZlbiB0aGUgc3VmZml4IGBfbm1gIChOZXRsaW5rKS4gSSYjMzk7bGwgd2FudCB0byBjYXJlZnVsbHkgZXhhbWluZSB0aGUgYXJndW1lbnRzIHBhc3NlZCB0byB0aGlzIGZ1bmN0aW9uLCB0aGUgaW50ZXJuYWwgZGF0YSBzdHJ1Y3R1cmVzIGl0IG1hbmlwdWxhdGVzLCBhbmQgdGhlIG92ZXJhbGwgYWxsb2NhdGlvbiBhbmQgaW5pdGlhbGl6YXRpb24gcHJvY2Vzcy4gSSBzdXNwZWN0IEkmIzM5O2xsIHNlZSBzb21lIGNhbGxzIHRvIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBmdW5jdGlvbnMgc2V0dGluZyB1cCB0aGUgYmFzaWMgcHJvcGVydGllcyBvZiB0aGUgYHdpcGh5YCBvYmplY3QuIEnigJltIGV4cGVjdGluZyBhIGhpZ2gtbGV2ZWwgZnVuY3Rpb24uIEl04oCZbGwgcHJvYmFibHkgaGFuZGxlIHRoZSBhbGxvY2F0aW9uLCBpbml0aWFsIHNldHVwLCBhbmQgcG90ZW50aWFsbHkgcmVnaXN0cmF0aW9uIHdpdGggdGhlIGtlcm5lbCYjMzk7cyB3aXJlbGVzcyBzdWJzeXN0ZW0uIExldCYjMzk7cyBzZWUgd2hhdCBpdCBoYXMgdG8gdGVsbCBtZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTc6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3MvY29yZS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNTQ5LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA1NDk6XHRzdHJ1Y3Qgd2lwaHkgKndpcGh5X25ld19ubShjb25zdCBzdHJ1Y3QgY2ZnODAyMTFfb3BzICpvcHMsIGludCBzaXplb2ZfcHJpdixcbiA1NTA6XHRcdFx0XHQgICBjb25zdCBjaGFyICpyZXF1ZXN0ZWRfbmFtZSlcbiA1NTE6XHR7XG4gNTUyOlx0XHRzdGF0aWMgYXRvbWljX3Qgd2lwaHlfY291bnRlciA9IEFUT01JQ19JTklUKDApO1xuIDU1MzpcdFxuIDU1NDpcdFx0c3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2O1xuIDU1NTpcdFx0aW50IGFsbG9jX3NpemU7XG4gNTU2Olx0XG4gNTU3Olx0XHRXQVJOX09OKG9wcy1cdTAwM2VhZGRfa2V5IFx1MDAyNlx1MDAyNiAoIW9wcy1cdTAwM2VkZWxfa2V5IHx8ICFvcHMtXHUwMDNlc2V0X2RlZmF1bHRfa2V5KSk7XG4gNTU4Olx0XHRXQVJOX09OKG9wcy1cdTAwM2VhdXRoIFx1MDAyNlx1MDAyNiAoIW9wcy1cdTAwM2Vhc3NvYyB8fCAhb3BzLVx1MDAzZWRlYXV0aCB8fCAhb3BzLVx1MDAzZWRpc2Fzc29jKSk7XG4gNTU5Olx0XHRXQVJOX09OKG9wcy1cdTAwM2Vjb25uZWN0IFx1MDAyNlx1MDAyNiAhb3BzLVx1MDAzZWRpc2Nvbm5lY3QpO1xuIDU2MDpcdFx0V0FSTl9PTihvcHMtXHUwMDNlam9pbl9pYnNzIFx1MDAyNlx1MDAyNiAhb3BzLVx1MDAzZWxlYXZlX2lic3MpO1xuIDU2MTpcdFx0V0FSTl9PTihvcHMtXHUwMDNlYWRkX3ZpcnR1YWxfaW50ZiBcdTAwMjZcdTAwMjYgIW9wcy1cdTAwM2VkZWxfdmlydHVhbF9pbnRmKTtcbiA1NjI6XHRcdFdBUk5fT04ob3BzLVx1MDAzZWFkZF9zdGF0aW9uIFx1MDAyNlx1MDAyNiAhb3BzLVx1MDAzZWRlbF9zdGF0aW9uKTtcbiA1NjM6XHRcdFdBUk5fT04ob3BzLVx1MDAzZWFkZF9tcGF0aCBcdTAwMjZcdTAwMjYgIW9wcy1cdTAwM2VkZWxfbXBhdGgpO1xuIDU2NDpcdFx0V0FSTl9PTihvcHMtXHUwMDNlam9pbl9tZXNoIFx1MDAyNlx1MDAyNiAhb3BzLVx1MDAzZWxlYXZlX21lc2gpO1xuIDU2NTpcdFx0V0FSTl9PTihvcHMtXHUwMDNlc3RhcnRfcDJwX2RldmljZSBcdTAwMjZcdTAwMjYgIW9wcy1cdTAwM2VzdG9wX3AycF9kZXZpY2UpO1xuIDU2NjpcdFx0V0FSTl9PTihvcHMtXHUwMDNlc3RhcnRfYXAgXHUwMDI2XHUwMDI2ICFvcHMtXHUwMDNlc3RvcF9hcCk7XG4gNTY3Olx0XHRXQVJOX09OKG9wcy1cdTAwM2Vqb2luX29jYiBcdTAwMjZcdTAwMjYgIW9wcy1cdTAwM2VsZWF2ZV9vY2IpO1xuIDU2ODpcdFx0V0FSTl9PTihvcHMtXHUwMDNlc3VzcGVuZCBcdTAwMjZcdTAwMjYgIW9wcy1cdTAwM2VyZXN1bWUpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxNzo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTIxMwoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipEaXZpbmcgaW50byBgd2lwaHlfbmV3X25tYCBBbGxvY2F0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gZm9jdXNpbmcgb24gdGhlIGFsbG9jYXRpb24gc2lkZSBvZiB0aGluZ3MgaW4gYHdpcGh5X25ld19ubWAgcmlnaHQgbm93LiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIHNwZWNpZmljIG1lbW9yeSBhbGxvY2F0aW9uIHN0cmF0ZWdpZXMgZW1wbG95ZWQgd2l0aGluIHRoaXMgZnVuY3Rpb24uIEl0JiMzOTtzIGNydWNpYWwsIG9idmlvdXNseSwgYmVjYXVzZSBhbnkgcGVyZm9ybWFuY2UgYm90dGxlbmVja3Mgb3IgcG90ZW50aWFsIG1lbW9yeSBsZWFrcyBvZnRlbiByZWFyIHRoZWlyIGhlYWRzIGVhcmx5IG9uIGluIHRoZSBwcm9jZXNzIG9mIGNyZWF0aW5nIGEgbmV3IFdpLUZpIFBIWSBvYmplY3QuIEkgbmVlZCB0byB0cmFjZSB0aHJvdWdoIHRoZSBjb2RlLCBtYXliZSBJJiMzOTtsbCBnbyB0aHJvdWdoIHRoZSBjYWxsIHN0YWNrIHRvIHNlZSB3aGVyZSB0aGlzIG9iamVjdCBpcyBjYWxsZWQuIExldCYjMzk7cyBzZWUgaG93IG11Y2ggbWVtb3J5IHdlJiMzOTtyZSB0YWxraW5nIGFib3V0LCB3aGF0JiMzOTtzIGFsbG9jYXRlZCBvbiB0aGUgaGVhcCB2ZXJzdXMgb24gdGhlIHN0YWNrLCBhbmQgaWYgdGhlcmUgYXJlIGFueSBzdWJ0bGUgaW5lZmZpY2llbmNpZXMgaGFwcGVuaW5nLiBJIHdhbnQgdG8gY2hlY2sgZm9yIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDE3OjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L3dpcmVsZXNzL2NvcmUuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDU2OSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNTY5Olx0XHRXQVJOX09OKG9wcy1cdTAwM2VzY2hlZF9zY2FuX3N0YXJ0IFx1MDAyNlx1MDAyNiAhb3BzLVx1MDAzZXNjaGVkX3NjYW5fc3RvcCk7XG4gNTcwOlx0XHRXQVJOX09OKG9wcy1cdTAwM2VyZW1haW5fb25fY2hhbm5lbCBcdTAwMjZcdTAwMjYgIW9wcy1cdTAwM2VjYW5jZWxfcmVtYWluX29uX2NoYW5uZWwpO1xuIDU3MTpcdFx0V0FSTl9PTihvcHMtXHUwMDNldGRsc19jaGFubmVsX3N3aXRjaCBcdTAwMjZcdTAwMjYgIW9wcy1cdTAwM2V0ZGxzX2NhbmNlbF9jaGFubmVsX3N3aXRjaCk7XG4gNTcyOlx0XHRXQVJOX09OKG9wcy1cdTAwM2VhZGRfdHhfdHMgXHUwMDI2XHUwMDI2ICFvcHMtXHUwMDNlZGVsX3R4X3RzKTtcbiA1NzM6XHRcbiA1NzQ6XHRcdGFsbG9jX3NpemUgPSBzaXplb2YoKnJkZXYpICYjNDM7IHNpemVvZl9wcml2O1xuIDU3NTpcdFxuIDU3NjpcdFx0cmRldiA9IGt6YWxsb2MoYWxsb2Nfc2l6ZSwgR0ZQX0tFUk5FTCk7XG4gNTc3Olx0XHRpZiAoIXJkZXYpXG4gNTc4Olx0XHRcdHJldHVybiBOVUxMO1xuIDU3OTpcdFxuIDU4MDpcdFx0cmRldi1cdTAwM2VvcHMgPSBvcHM7XG4gNTgxOlx0XG4gNTgyOlx0XHRyZGV2LVx1MDAzZXdpcGh5X2lkeCA9IGF0b21pY19pbmNfcmV0dXJuKFx1MDAyNndpcGh5X2NvdW50ZXIpO1xuIDU4MzpcdFxuIDU4NDpcdFx0aWYgKHVubGlrZWx5KHJkZXYtXHUwMDNld2lwaHlfaWR4IFx1MDAzYyAwKSkge1xuIDU4NTpcdFx0XHQvKiB1Z2gsIHdyYXBwZWQhICovXG4gNTg2Olx0XHRcdGF0b21pY19kZWMoXHUwMDI2d2lwaHlfY291bnRlcik7XG4gNTg3Olx0XHRcdGtmcmVlKHJkZXYpO1xuIDU4ODpcdFx0XHRyZXR1cm4gTlVMTDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTc6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE3OTQKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiA4NDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBtYWM4MDIxMSBUWCBRdWV1ZSBTY2hlZHVsaW5nIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbWFjODAyMTFgLiBUaGUgYGxvY2FsYCBzdHJ1Y3QsIHdoaWNoIGlzIGFsbG9jYXRlZCB3aXRoIGBremFsbG9jYCwgbWVhbnMgYm90aCBgc2NoZWR1bGVfb3BlbmAgYW5kIGBzY2hlZHVsZV9yb3VuZGAgYXJlIGluaXRpYWxseSB6ZXJvZWQuIFRoYXQmIzM5O3MgdGhlIGJhc2VsaW5lLiBOb3cgbGV0JiMzOTtzIGRpZyBpbnRvIHRoZSBjb2RlIGl0c2VsZi4KClRoZSBmaXJzdCBjaGFuZ2UgaXMgdGhlIGFkZGl0aW9uIG9mIGEgYGJvb2wgc2NoZWR1bGVfb3BlbltJRUVFODAyMTFfTlVNX0FDU11gIGFycmF5IHRvIHRoZSBgaWVlZTgwMjExX2xvY2FsYCBzdHJ1Y3QgaW4gYGllZWU4MDIxMV9pLmhgLiBUaGlzIGFycmF5IGhhcyB0aGUgc2FtZSBzaXplIGFzIGBzY2hlZHVsZV9yb3VuZGAsIHdoaWNoIG1ha2VzIG1lIHRoaW5rIHRoZXkmIzM5O3JlIHNvbWVob3cgcmVsYXRlZCBhbmQgYm90aCBwZXItQUMuIFRoaXMgaXMgd2hlcmUgaXQgZ2V0cyBpbnRlcmVzdGluZywgd2l0aCB0aGUgY2hhbmdlcyBpbiBgbmV0L21hYzgwMjExL3R4LmNgLgoKSW4gYGllZWU4MDIxMV9uZXh0X3R4cWAsIHRoZSBvcmlnaW5hbCBjaGVjayB3YXMgYCFsb2NhbC0mZ3Q7c2NoZWR1bGVfcm91bmRbYWNdYC4gTm93IHRoYXQmIzM5O3MgYmVlbiByZXBsYWNlZCB3aXRoIGAhbG9jYWwtJmd0O3NjaGVkdWxlX29wZW5bYWNdYC4gSXQgbG9va3MgbGlrZSB0aGUgaW50ZW50IGlzIHRvIG5vdyB1c2UgYHNjaGVkdWxlX29wZW5gIHRvIGRldGVybWluZSBpZiB3ZSBzaG91bGQgbG9vayBmb3IgYSBUWFEuCgpUaGUgYGllZWU4MDIxMV90eHFfc2NoZWR1bGVfc3RhcnRgIGZ1bmN0aW9uIGhhcyBtb3JlIHNpZ25pZmljYW50IGNoYW5nZXMuIFRoZSBvcmlnaW5hbCBjb2RlIHVuY29uZGl0aW9uYWxseSByZXNldHMgYGxvY2FsLSZndDtzY2hlZHVsZV9yb3VuZFthY11gIHRvIHplcm8gaWYgdGhlIGFpcnRpbWUgY2hlY2sgZmFpbHMuIFRoZSBwYXRjaCBjaGFuZ2VzIHRoaXMgdG8gdXNlIHRoZSByZXR1cm4gdmFsdWUgb2YgYGllZWU4MDIxMV90eHFfc2NoZWR1bGVfYWlydGltZV9jaGVja2AgdG8gc2V0IGBsb2NhbC0mZ3Q7c2NoZWR1bGVfb3BlblthY11gLiBJdCB0aGVuIHVwZGF0ZXMgYHNjaGVkdWxlX3JvdW5kYCBvbmx5IGlmIGBzY2hlZHVsZV9vcGVuYCBpcyB0cnVlLiBDcml0aWNhbGx5LCB0aGUgcGF0Y2ggYWxzbyBub3cgdW5jb25kaXRpb25hbGx5IHNldHMgYHNjaGVkdWxlX29wZW5gLiBJbiBhZGRpdGlvbiwgaXQgaW5jcmVtZW50cyBgc2NoZWR1bGVfcm91bmRgIGlmIGl0IGlzIHNldC4gVGhlIGFkZGVkIGNvZGUgYWxzbyBoYW5kbGVzIHRoZSBjYXNlIHdoZW4gYHNjaGVkdWxlX3JvdW5kYCB3cmFwcywgd2hpY2ggaW5kaWNhdGVzIGEgY291bnRlciB0aGF0IGlzIHN1cHBvc2VkIHRvIGJlIG1vbm90b25pY2FsbHkgaW5jcmVhc2luZy4KClNvLCBJIHRoaW5rIEkgc2VlIHdoYXQmIzM5O3MgaGFwcGVuaW5nLiBUaGUgaW50cm9kdWN0aW9uIG9mIGBzY2hlZHVsZV9vcGVuYCBpcyBwcm9iYWJseSB0byBvcHRpbWl6ZSB0aGUgVFhRIHNjaGVkdWxpbmcuIFRoZSBgYWlydGltZV9jaGVja2AgZnVuY3Rpb24gcHJvYmFibHkgZGV0ZXJtaW5lcyBpZiB0aGUgQUMgaGFzIGF2YWlsYWJsZSBhaXJ0aW1lIHRvIHRyYW5zbWl0LiBSYXRoZXIgdGhhbiByZXNldHRpbmcgYHNjaGVkdWxlX3JvdW5kYCBkaXJlY3RseSAoYW5kIHByZXZlbnRpbmcgYW55IFRYUSBjb25zaWRlcmF0aW9uKSwgYHNjaGVkdWxlX29wZW5gIGlzIG5vdyB1c2VkIGFzIGEgZ2F0ZS4gTm93IHdlIGNvbmRpdGlvbmFsbHkgaW5jcmVtZW50IGBzY2hlZHVsZV9yb3VuZGAgb25seSB3aGVuIHRoZSBhaXJ0aW1lIGNoZWNrIHBhc3NlcywgYW5kIGJ5IGV4dGVuc2lvbiwgd2Ugb25seSBnbyBpbnRvIHRoZSBsb2dpYyBpbiBgaWVlZTgwMjExX25leHRfdHhxYCB0aGF0IHVzZXMgYHNjaGVkdWxlX3JvdW5kYCBpZiBgc2NoZWR1bGVfb3BlbmAgaXMgdHJ1ZS4KClRoaXMgbWFrZXMgc2Vuc2UuIEJ5IHVzaW5nIGEgc2VwYXJhdGUgZmxhZywgd2UgY2FuIG1ha2UgdGhlIHNjaGVkdWxpbmcgbG9naWMgbW9yZSBudWFuY2VkIGFuZCBwb3NzaWJseSBtb3JlIGVmZmljaWVudCBieSBleHBsaWNpdGx5IGVuYWJsaW5nIG9yIGRpc2FibGluZyBUWFEgY29uc2lkZXJhdGlvbi4gSXQmIzM5O3MgYSBuaWNlLCBjbGVhbiB3YXkgdG8gaW50cm9kdWNlIGEgc2NoZWR1bGluZyBvcHRpbWl6YXRpb24gYmFzZWQgb24gYWlydGltZSBhdmFpbGFiaWxpdHkuIFRoZSB3cmFwIGFyb3VuZCBjaGVjayBtYWtlcyBtZSB0aGluayB0aGF0IHRoZXNlIGFyZSBjb3VudGVycyB0aGF0IGFyZSB1c2VkIHRvIGRldGVybWluZSB3aGljaCBUWFEgd2Ugc2hvdWxkIGNvbnNpZGVyIG5leHQuIE5vdywgSSBzaG91bGQgcHJvYmFibHkgbG9vayBhdCB3aGF0IGBpZWVlODAyMTFfdHhxX3NjaGVkdWxlX2FpcnRpbWVfY2hlY2tgIGFjdHVhbGx5ICpkb2VzKi4gVGhhdCB3aWxsIGJlIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgZnVsbCBpbXBsaWNhdGlvbnMgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTc6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvdHguYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQxMTUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogODAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7NDExNTpcdHN0cnVjdCBpZWVlODAyMTFfdHhxICppZWVlODAyMTFfbmV4dF90eHEoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHU4IGFjKVxuNDExNjpcdHtcbjQxMTc6XHRcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gaHdfdG9fbG9jYWwoaHcpO1xuNDExODpcdFx0c3RydWN0IGllZWU4MDIxMV90eHEgKnJldCA9IE5VTEw7XG40MTE5Olx0XHRzdHJ1Y3QgdHhxX2luZm8gKnR4cWkgPSBOVUxMLCAqaGVhZCA9IE5VTEw7XG40MTIwOlx0XHRib29sIGZvdW5kX2VsaWdpYmxlX3R4cSA9IGZhbHNlO1xuNDEyMTpcdFx0Ym9vbCBhcWxfY2hlY2s7XG40MTIyOlx0XG40MTIzOlx0XHRzcGluX2xvY2tfYmgoXHUwMDI2bG9jYWwtXHUwMDNlYWN0aXZlX3R4cV9sb2NrW2FjXSk7XG40MTI0Olx0XG40MTI1Olx0XHRpZiAoIWxvY2FsLVx1MDAzZXNjaGVkdWxlX29wZW5bYWNdKVxuNDEyNjpcdFx0XHRnb3RvIG91dDtcbjQxMjc6XHRcbjQxMjg6XHQgYmVnaW46XG40MTI5Olx0XHR0eHFpID0gbGlzdF9maXJzdF9lbnRyeV9vcl9udWxsKFx1MDAyNmxvY2FsLVx1MDAzZWFjdGl2ZV90eHFzW2FjXSxcbjQxMzA6XHRcdFx0XHRcdFx0c3RydWN0IHR4cV9pbmZvLFxuNDEzMTpcdFx0XHRcdFx0XHRzY2hlZHVsZV9vcmRlcik7XG40MTMyOlx0XHRpZiAoIXR4cWkpXG40MTMzOlx0XHRcdGdvdG8gb3V0O1xuNDEzNDpcdFxuNDEzNTpcdFx0aWYgKHR4cWkgPT0gaGVhZCkge1xuNDEzNjpcdFx0XHRpZiAoIWZvdW5kX2VsaWdpYmxlX3R4cSlcbjQxMzc6XHRcdFx0XHRnb3RvIG91dDtcbjQxMzg6XHRcdFx0ZWxzZVxuNDEzOTpcdFx0XHRcdGZvdW5kX2VsaWdpYmxlX3R4cSA9IGZhbHNlO1xuNDE0MDpcdFx0fVxuNDE0MTpcdFxuNDE0MjpcdFx0aWYgKCFoZWFkKVxuNDE0MzpcdFx0XHRoZWFkID0gdHhxaTtcbjQxNDQ6XHRcbjQxNDU6XHRcdGFxbF9jaGVjayA9IGllZWU4MDIxMV90eHFfYWlydGltZV9jaGVjayhodywgXHUwMDI2dHhxaS1cdTAwM2V0eHEpO1xuNDE0NjpcdFx0aWYgKGFxbF9jaGVjaylcbjQxNDc6XHRcdFx0Zm91bmRfZWxpZ2libGVfdHhxID0gdHJ1ZTtcbjQxNDg6XHRcbjQxNDk6XHRcdGlmICh0eHFpLVx1MDAzZXR4cS5zdGEpIHtcbjQxNTA6XHRcdFx0c3RydWN0IHN0YV9pbmZvICpzdGEgPSBjb250YWluZXJfb2YodHhxaS1cdTAwM2V0eHEuc3RhLFxuNDE1MTpcdFx0XHRcdFx0XHRcdCAgICBzdHJ1Y3Qgc3RhX2luZm8sIHN0YSk7XG40MTUyOlx0XG40MTUzOlx0XHRcdGlmIChpZWVlODAyMTFfc3RhX2RlZmljaXQoc3RhLCB0eHFpLVx1MDAzZXR4cS5hYykgXHUwMDNjIDApIHtcbjQxNTQ6XHRcdFx0XHRzdGEtXHUwMDNlYWlydGltZVt0eHFpLVx1MDAzZXR4cS5hY10uZGVmaWNpdCAmIzQzOz1cbjQxNTU6XHRcdFx0XHRcdHN0YS1cdTAwM2VhaXJ0aW1lX3dlaWdodDtcbjQxNTY6XHRcbjQxNTc6XHRcdFx0XHRhcWxfY2hlY2sgPSBmYWxzZTtcbjQxNTg6XHRcdFx0fVxuNDE1OTpcdFx0fVxuNDE2MDpcdFxuNDE2MTpcdFx0aWYgKCFhcWxfY2hlY2spIHtcbjQxNjI6XHRcdFx0bGlzdF9tb3ZlX3RhaWwoXHUwMDI2dHhxaS1cdTAwM2VzY2hlZHVsZV9vcmRlcixcbjQxNjM6XHRcdFx0XHRcdCAgIFx1MDAyNmxvY2FsLVx1MDAzZWFjdGl2ZV90eHFzW3R4cWktXHUwMDNldHhxLmFjXSk7XG40MTY0Olx0XHRcdGdvdG8gYmVnaW47XG40MTY1Olx0XHR9XG40MTY2Olx0XG40MTY3Olx0XHRpZiAodHhxaS1cdTAwM2VzY2hlZHVsZV9yb3VuZCA9PSBsb2NhbC1cdTAwM2VzY2hlZHVsZV9yb3VuZFthY10pXG40MTY4Olx0XHRcdGdvdG8gb3V0O1xuNDE2OTpcdFxuNDE3MDpcdFx0bGlzdF9kZWxfaW5pdChcdTAwMjZ0eHFpLVx1MDAzZXNjaGVkdWxlX29yZGVyKTtcbjQxNzE6XHRcdHR4cWktXHUwMDNlc2NoZWR1bGVfcm91bmQgPSBsb2NhbC1cdTAwM2VzY2hlZHVsZV9yb3VuZFthY107XG40MTcyOlx0XHRyZXQgPSBcdTAwMjZ0eHFpLVx1MDAzZXR4cTtcbjQxNzM6XHRcbjQxNzQ6XHRvdXQ6XG40MTc1Olx0XHRzcGluX3VubG9ja19iaChcdTAwMjZsb2NhbC1cdTAwM2VhY3RpdmVfdHhxX2xvY2tbYWNdKTtcbjQxNzY6XHRcdHJldHVybiByZXQ7XG40MTc3Olx0fVxuNDE3ODpcdEVYUE9SVF9TWU1CT0woaWVlZTgwMjExX25leHRfdHhxKTtcbjQxNzk6XHRcbjQxODA6XHR2b2lkIF9faWVlZTgwMjExX3NjaGVkdWxlX3R4cShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbjQxODE6XHRcdFx0XHQgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqdHhxLFxuNDE4MjpcdFx0XHRcdCAgICAgIGJvb2wgZm9yY2UpXG40MTgzOlx0e1xuNDE4NDpcdFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBod190b19sb2NhbChodyk7XG40MTg1Olx0XHRzdHJ1Y3QgdHhxX2luZm8gKnR4cWkgPSB0b190eHFfaW5mbyh0eHEpO1xuNDE4NjpcdFx0Ym9vbCBoYXNfcXVldWU7XG40MTg3Olx0XG40MTg4Olx0XHRzcGluX2xvY2tfYmgoXHUwMDI2bG9jYWwtXHUwMDNlYWN0aXZlX3R4cV9sb2NrW3R4cS1cdTAwM2VhY10pO1xuNDE4OTpcdFxuNDE5MDpcdFx0aGFzX3F1ZXVlID0gZm9yY2UgfHxcbjQxOTE6XHRcdFx0ICAgICghdGVzdF9iaXQoSUVFRTgwMjExX1RYUV9TVE9QLCBcdTAwMjZ0eHFpLVx1MDAzZWZsYWdzKSBcdTAwMjZcdTAwMjZcbjQxOTI6XHRcdFx0ICAgICB0eHFfaGFzX3F1ZXVlKHR4cSkpO1xuNDE5MzpcdFx0aWYgKGxpc3RfZW1wdHkoXHUwMDI2dHhxaS1cdTAwM2VzY2hlZHVsZV9vcmRlcikgXHUwMDI2XHUwMDI2XG40MTk0Olx0XHQgICAgKGhhc19xdWV1ZSB8fCBpZWVlODAyMTFfdHhxX2tlZXBfYWN0aXZlKHR4cWkpKSkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQxLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxNzo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDYzMgoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIGxpbmUgb2YgdGhpbmtpbmcsIHByZXNlbnRlZCBhcyBpZiBpdCB3ZXJlIG15IG93bjoKCioqRGl2aW5nIERlZXAgaW50byB0aGUgTUFDODAyMTEgVFggUGF0aCoqCgpPa2F5LCBzbyB3ZSYjMzk7cmUgbG9va2luZyBhdCB0aGUgYnJvYWRlciBpc3N1ZSwgYnV0IEkgbmVlZCB0byB6b29tIGluIG9uIGEgdmVyeSBzcGVjaWZpYyBhcmVhLiBUbyB0cnVseSB1bmRlcnN0YW5kIHRoaXMsIEkgbmVlZCB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkmIzM5O20gZ29pbmcgdG8gc2hpZnQgZ2VhcnMgYW5kIGdvIHN0cmFpZ2h0IGludG8gdGhlIGNvZGUuIFNwZWNpZmljYWxseSwgSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aG9zZSBjcml0aWNhbCB0cmFuc21pdCBvcGVyYXRpb25zLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBhIGZvY3VzZWQgaW52ZXN0aWdhdGlvbi4gSSBuZWVkIHRvIHRha2UgYSBsb29rIGF0IHRoZSBgbmV0L21hYzgwMjExL3R4LmNgIGZpbGU7IHRoYXQmIzM5O3Mgd2hlcmUgdGhlIGhlYXJ0IG9mIHRoZSB0cmFuc21pdCBwYXRoIHJlc2lkZXMuIEFuZCBub3QganVzdCB0aGUgd2hvbGUgZmlsZSwgSSYjMzk7bSB0aGlua2luZyBsaW5lcyA0MzQwLTQzNzAuIFRoYXQgc2VjdGlvbiBpcyB1c3VhbGx5IGEgcmVhbCBob3RzcG90IGZvciBbaW5zZXJ0IHJlbGV2YW50IHRlY2huaWNhbCBhcmVhIC0gZS5nLiwgcmF0ZSBjb250cm9sLCBmcmFtZSBhZ2dyZWdhdGlvbiwgaGFyZHdhcmUgcXVldWUgaW50ZXJhY3Rpb25dLiBUaGlzIHNwZWNpZmljIHJhbmdlIGxpa2VseSBob2xkcyB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgW3N0YXRlIHNwZWNpZmljIHJlbGV2YW50IGFyZWEgLSBlLmcuLCBob3cgdGhlIGRyaXZlciBoYW5kbGVzIGZyYW1lIGFja25vd2xlZGdlbWVudHMsIHRoZSBsb2dpYyBiZWhpbmQgdGhlIHJldHJhbnNtaXNzaW9uIHRpbWVycywgb3IgdGhlIG51YW5jZXMgb2YgcG93ZXIgc2F2ZSBtb2RlIHRyYW5zaXRpb25zXS4gSSBjYW4gc2VlIGl0IG5vdywgdGhlIGxpbmVzIHNob3VsZCBiZSB0YWxraW5nIGFib3V0Li4uIFthZGQgeW91ciB0ZWNobmljYWwgcHJlZGljdGlvbiBiYXNlZCBvbiB0aGUgY29udGV4dCAtIGUuZy4sIHRoZSBzcGVjaWZpYyBxdWV1ZSBhc3NpZ25tZW50IG9yIGFueSBmcmFtZSBwcm9jZXNzaW5nIG9jY3VycmluZ10uLi4gVGhhdCYjMzk7cyB3aGVyZSBJIHNob3VsZCBmb2N1cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Mi8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTc6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvdHguYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQzNDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7NDM0MDpcdFx0cmV0dXJuIHRydWU7XG40MzQxOlx0fVxuNDM0MjpcdEVYUE9SVF9TWU1CT0woaWVlZTgwMjExX3R4cV9tYXlfdHJhbnNtaXQpO1xuNDM0MzpcdFxuNDM0NDpcdHZvaWQgaWVlZTgwMjExX3R4cV9zY2hlZHVsZV9zdGFydChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgdTggYWMpXG40MzQ1Olx0e1xuNDM0NjpcdFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBod190b19sb2NhbChodyk7XG40MzQ3Olx0XG40MzQ4Olx0XHRzcGluX2xvY2tfYmgoXHUwMDI2bG9jYWwtXHUwMDNlYWN0aXZlX3R4cV9sb2NrW2FjXSk7XG40MzQ5Olx0XG40MzUwOlx0XHRsb2NhbC1cdTAwM2VzY2hlZHVsZV9vcGVuW2FjXSA9XG40MzUxOlx0XHRcdGllZWU4MDIxMV90eHFfc2NoZWR1bGVfYWlydGltZV9jaGVjayhsb2NhbCwgYWMpO1xuNDM1MjpcdFx0aWYgKGxvY2FsLVx1MDAzZXNjaGVkdWxlX29wZW5bYWNdKSB7XG40MzUzOlx0XHRcdGxvY2FsLVx1MDAzZXNjaGVkdWxlX3JvdW5kW2FjXSYjNDM7JiM0Mzs7XG40MzU0Olx0XHRcdGlmICghbG9jYWwtXHUwMDNlc2NoZWR1bGVfcm91bmRbYWNdKVxuNDM1NTpcdFx0XHRcdGxvY2FsLVx1MDAzZXNjaGVkdWxlX3JvdW5kW2FjXSYjNDM7JiM0Mzs7XG40MzU2Olx0XHR9XG40MzU3Olx0XG40MzU4Olx0XHRzcGluX3VubG9ja19iaChcdTAwMjZsb2NhbC1cdTAwM2VhY3RpdmVfdHhxX2xvY2tbYWNdKTtcbjQzNTk6XHR9XG40MzYwOlx0RVhQT1JUX1NZTUJPTChpZWVlODAyMTFfdHhxX3NjaGVkdWxlX3N0YXJ0KTtcbjQzNjE6XHRcbjQzNjI6XHR2b2lkIF9faWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbjQzNjM6XHRcdFx0XHRcdCAgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbjQzNjQ6XHRcdFx0XHRcdCAgdTMyIGluZm9fZmxhZ3MsXG40MzY1Olx0XHRcdFx0XHQgIHUzMiBjdHJsX2ZsYWdzKVxuNDM2NjpcdHtcbjQzNjc6XHRcdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gSUVFRTgwMjExX0RFVl9UT19TVUJfSUYoZGV2KTtcbjQzNjg6XHRcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gc2RhdGEtXHUwMDNlbG9jYWw7XG40MzY5Olx0XHRzdHJ1Y3QgaWVlZTgwMjExX3R4X2luZm8gKmluZm87XG40MzcwOlx0XHRzdHJ1Y3Qgc3RhX2luZm8gKnN0YTtcbjQzNzE6XHRcdHN0cnVjdCBza19idWZmICpuZXh0O1xuNDM3MjpcdFx0Ym9vbCBncm91cF9hZGRyZXNzZWQ7XG40MzczOlx0XHRpbnQgbGVuID0gc2tiLVx1MDAzZWxlbjtcbjQzNzQ6XHRcbjQzNzU6XHRcdGlmICh1bmxpa2VseSghaWVlZTgwMjExX3NkYXRhX3J1bm5pbmcoc2RhdGEpIHx8IHNrYi1cdTAwM2VsZW4gXHUwMDNjIEVUSF9ITEVOKSkge1xuNDM3NjpcdFx0XHRrZnJlZV9za2Ioc2tiKTtcbjQzNzc6XHRcdFx0cmV0dXJuO1xuNDM3ODpcdFx0fVxuNDM3OTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxNzo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTY3NgoJCQkJCQkJb3V0cHV0OiAyMjAKCQkJCQkJCXRob3VnaHRzOiA0NDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBTYWZldHkgb2YgYSBNQUM4MDIxMSBTY2hlZHVsaW5nIENoYW5nZSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBXZSYjMzk7cmUgbG9va2luZyBhdCBhIGNoYW5nZSByZWxhdGVkIHRvIHRoZSBhaXJ0aW1lIHNjaGVkdWxpbmcgd2l0aGluIHRoZSBNQUM4MDIxMSBsYXllciwgc3BlY2lmaWNhbGx5IGRlYWxpbmcgd2l0aCB0aGUgYHNjaGVkdWxlX29wZW5gIGJvb2xlYW4gYXJyYXkuIFRoaXMgaXMgcGFydCBvZiB0aGUgYGllZWU4MDIxMV9sb2NhbGAgc3RydWN0dXJlLCB3aGljaCBpcyBhbGxvY2F0ZWQgd2l0aCBga3phbGxvY2AuIFRoaXMgaXMgaW1wb3J0YW50LCBhcyBga3phbGxvY2AgZ3VhcmFudGVlcyB6ZXJvLWluaXRpYWxpemF0aW9uLCB3aGljaCBpcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuCgpUaGUgY29yZSBvZiB0aGUgY2hhbmdlIGludm9sdmVzIGhvdyB3ZSB0cmFjayB3aGV0aGVyIGEgcXVldWUgaXMgb3BlbiBmb3Igc2NoZWR1bGluZy4gUHJldmlvdXNseSwgd2Ugd2VyZSB1c2luZyBgc2NoZWR1bGVfcm91bmRgIGZvciB0aGlzLCBidXQgdGhhdCBwcmVzZW50ZWQgcG90ZW50aWFsIGNvbmZsaWN0cy4gTm93LCBgc2NoZWR1bGVfb3BlblthY11gIGlzIHNldCBiYXNlZCBvbiB0aGUgYGllZWU4MDIxMV90eHFfc2NoZWR1bGVfYWlydGltZV9jaGVjaygpYCBmdW5jdGlvbiB3aXRoaW4gdGhlIGBpZWVlODAyMTFfdHhxX3NjaGVkdWxlX3N0YXJ0KClgIGZ1bmN0aW9uIGFuZCBjaGVja2VkIHdpdGhpbiB0aGUgYGllZWU4MDIxMV9uZXh0X3R4cSgpYCBmdW5jdGlvbi4gU28sIHdlJiMzOTtyZSBkZWNvdXBsaW5nIHRoZSAmIzM0O29wZW4vY2xvc2VkJiMzNDsgc3RhdGUgZnJvbSB0aGUgcm91bmQgY291bnRlciB1c2luZyB0aGlzIGJvb2xlYW4uCgpNeSBwcmltYXJ5IGNvbmNlcm4sIGFzIGFsd2F5cywgaXMgd2hldGhlciB0aGlzIGludHJvZHVjZXMgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzc3Vlcy4gU28gSSBuZWVkIHRvIGdvIHRocm91Z2ggbXkgbWVudGFsIGNoZWNrbGlzdDoKCjEuICBgc2NoZWR1bGVfb3BlbmAgaXMgcGFydCBvZiBgc3RydWN0IGllZWU4MDIxMV9sb2NhbGAsIGFsbG9jYXRlZCB3aXRoIGBremFsbG9jYCwgZW5zdXJpbmcgaXQgc3RhcnRzIGFzIGFsbCB6ZXJvcy4gR29vZC4KMi4gIE5vIGRhdGEgZnJvbSB0aGVzZSBzdHJ1Y3R1cmVzIGdldHMgY29waWVkIHRvIHVzZXIgc3BhY2UsIGVsaW1pbmF0aW5nIGEgd2hvbGUgY2xhc3Mgb2YgcG90ZW50aWFsIHByb2JsZW1zLiBFeGNlbGxlbnQuCjMuICBXZSYjMzk7cmUgbm90IHJlYWRpbmcgb3IgdXNpbmcgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGlzIGlzIGNyaXRpY2FsLiBgc2NoZWR1bGVfb3BlbmAgaXMgc2V0IGJlZm9yZSBiZWluZyByZWFkIGFuZCBpcyB6ZXJvLWluaXRpYWxpemVkIGFueXdheS4KNC4gIE5vIHN0YWNrIG9yIGhlYXAgYnVmZmVycyBhcmUgYmVpbmcgbGVmdCB1bmluaXRpYWxpemVkLgoKRG9lcyB0aGlzIGNoYW5nZSBpbnRyb2R1Y2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzPyBUaGUgYW5zd2VyIGlzIGEgc29saWQgJiMzNDtuby4mIzM0OwoKTm93LCB0byBtYWtlIHN1cmUsIGxldCYjMzk7cyBzdGVwIHRocm91Z2ggdGhlIHF1ZXN0aW9ucy4KCiogICBBcmUgd2Ugc2VuZGluZyBhbnkga2VybmVsIHN0cnVjdHVyZXMgdG8gdXNlciBzcGFjZT8gTm9wZS4KKiAgIElzIHRoZXJlIGNvbmRpdGlvbmFsIGxvZ2ljIGRlcGVuZGVudCBvbiBhbnkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXM/IEFic29sdXRlbHkgbm90LiBgbG9jYWxgIGlzIHplcm9lZCBieSBhbGxvY2F0aW9uLCBhbmQgYHNjaGVkdWxlX29wZW5gIGlzIGV4cGxpY2l0bHkgc2V0IGJlZm9yZSBiZWluZyByZWFkLgoqICAgQXJlIHdlIGFsbG9jYXRpbmcgb3IgaW5pdGlhbGl6aW5nIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzIGNvdWxkIGJlIHJlYWQ/IE5vLgoqICAgSGF2ZSB3ZSBtb2RpZmllZCBhbnkgYm91bmRzIGNoZWNrcyBvciBsZW5ndGhzIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgZGF0YT8gTm8uCgpTaW5jZSB0aGlzIGlzIHB1cmVseSBpbnRlcm5hbCBzY2hlZHVsaW5nIGxvZ2ljIHdpdGhpbiBtYWM4MDIxMSwgYW5kIHdlJiMzOTt2ZSB2ZXJpZmllZCB0aGF0IHRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSBjb25jZXJucywgS0FTQU4gYW5kIHN0YW5kYXJkIGRldGVjdG9ycyBkb24mIzM5O3QgcmVhbGx5IGNvbWUgaW50byBwbGF5IGhlcmUuIFdlJiMzOTtyZSBzYWZlIGZyb20gS01TQU4gY29uY2VybnMsIHRvby4gSXTigJlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQsIGJ1dCBhIGdvb2QgcHJhY3RpY2UuCk5lZWRzS01TQU4gPSBmYWxzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTc6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGJvb2xlYW4gZmllbGQgYHNjaGVkdWxlX29wZW5gIHRvIGBzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsYCB0byBkZWNvdXBsZSB0aGUgc2NoZWR1bGluZyBvcGVuL2Nsb3NlZCBzdGF0ZSBmcm9tIHRoZSBgc2NoZWR1bGVfcm91bmRgIGNvdW50ZXIgaW4gbWFjODAyMTEmIzM5O3MgVFggcXVldWUgc2NoZWR1bGluZyBsb2dpYy5cblxuLSBgc3RydWN0IGllZWU4MDIxMV9sb2NhbGAgaXMgYWxsb2NhdGVkIHZpYSBga3phbGxvYygpYCBkdXJpbmcgd2lwaHkgcmVnaXN0cmF0aW9uLCBlbnN1cmluZyBhbGwgZmllbGRzIGluY2x1ZGluZyBgc2NoZWR1bGVfb3BlbmAgYXJlIHplcm8taW5pdGlhbGl6ZWQuXG4tIFRoZSBuZXcgZmllbGQgaXMgb25seSB1c2VkIGludGVybmFsbHkgd2l0aGluIGBuZXQvbWFjODAyMTEvdHguY2AgZm9yIFRYIHF1ZXVlIHNjaGVkdWxpbmcgY29udHJvbCBmbG93IGFuZCBpcyBuZXZlciBjb3BpZWQgdG8gdXNlciBzcGFjZSBvciB1c2VkIGluIGFuIHVuaW5pdGlhbGl6ZWQgc3RhdGUuXG4tIE5vIG5ldyBidWZmZXJzLCBzdGFjayBvYmplY3RzLCBuZXRsaW5rIGF0dHJpYnV0ZXMsIGlvY3Rscywgb3IgdXNlci1zcGFjZSBjb3BpZXMgYXJlIGludHJvZHVjZWQgb3IgbW9kaWZpZWQuXG5cbkNvbnNlcXVlbnRseSwgdGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciBpbmZvcm1hdGlvbiBsZWFrcywgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGJvb2xlYW4gZmllbGQgYHNjaGVkdWxlX29wZW5gIHRvIGBzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsYCB0byBkZWNvdXBsZSB0aGUgc2NoZWR1bGluZyBvcGVuL2Nsb3NlZCBzdGF0ZSBmcm9tIHRoZSBgc2NoZWR1bGVfcm91bmRgIGNvdW50ZXIgaW4gbWFjODAyMTEmIzM5O3MgVFggcXVldWUgc2NoZWR1bGluZyBsb2dpYy5cblxuLSBgc3RydWN0IGllZWU4MDIxMV9sb2NhbGAgaXMgYWxsb2NhdGVkIHZpYSBga3phbGxvYygpYCBkdXJpbmcgd2lwaHkgcmVnaXN0cmF0aW9uLCBlbnN1cmluZyBhbGwgZmllbGRzIGluY2x1ZGluZyBgc2NoZWR1bGVfb3BlbmAgYXJlIHplcm8taW5pdGlhbGl6ZWQuXG4tIFRoZSBuZXcgZmllbGQgaXMgb25seSB1c2VkIGludGVybmFsbHkgd2l0aGluIGBuZXQvbWFjODAyMTEvdHguY2AgZm9yIFRYIHF1ZXVlIHNjaGVkdWxpbmcgY29udHJvbCBmbG93IGFuZCBpcyBuZXZlciBjb3BpZWQgdG8gdXNlciBzcGFjZSBvciB1c2VkIGluIGFuIHVuaW5pdGlhbGl6ZWQgc3RhdGUuXG4tIE5vIG5ldyBidWZmZXJzLCBzdGFjayBvYmplY3RzLCBuZXRsaW5rIGF0dHJpYnV0ZXMsIGlvY3Rscywgb3IgdXNlci1zcGFjZSBjb3BpZXMgYXJlIGludHJvZHVjZWQgb3IgbW9kaWZpZWQuXG5cbkNvbnNlcXVlbnRseSwgdGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciBpbmZvcm1hdGlvbiBsZWFrcywgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxNzo0Mjo1Mi41OTY2NDk5NjRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4OTg0MzU2OTA4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiQ0ZHODAyMTFcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpZWVlODAyMTFfbmV4dF90eHFcIixcbiAgICBcImllZWU4MDIxMV90eHFfc2NoZWR1bGVfc3RhcnRcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBib29sZWFuIGZpZWxkIGBzY2hlZHVsZV9vcGVuYCB0byBgc3RydWN0IGllZWU4MDIxMV9sb2NhbGAgdG8gZGVjb3VwbGUgdGhlIHNjaGVkdWxpbmcgb3Blbi9jbG9zZWQgc3RhdGUgZnJvbSB0aGUgYHNjaGVkdWxlX3JvdW5kYCBjb3VudGVyIGluIG1hYzgwMjExJ3MgVFggcXVldWUgc2NoZWR1bGluZyBsb2dpYy5cXG5cXG4tIGBzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsYCBpcyBhbGxvY2F0ZWQgdmlhIGBremFsbG9jKClgIGR1cmluZyB3aXBoeSByZWdpc3RyYXRpb24sIGVuc3VyaW5nIGFsbCBmaWVsZHMgaW5jbHVkaW5nIGBzY2hlZHVsZV9vcGVuYCBhcmUgemVyby1pbml0aWFsaXplZC5cXG4tIFRoZSBuZXcgZmllbGQgaXMgb25seSB1c2VkIGludGVybmFsbHkgd2l0aGluIGBuZXQvbWFjODAyMTEvdHguY2AgZm9yIFRYIHF1ZXVlIHNjaGVkdWxpbmcgY29udHJvbCBmbG93IGFuZCBpcyBuZXZlciBjb3BpZWQgdG8gdXNlciBzcGFjZSBvciB1c2VkIGluIGFuIHVuaW5pdGlhbGl6ZWQgc3RhdGUuXFxuLSBObyBuZXcgYnVmZmVycywgc3RhY2sgb2JqZWN0cywgbmV0bGluayBhdHRyaWJ1dGVzLCBpb2N0bHMsIG9yIHVzZXItc3BhY2UgY29waWVzIGFyZSBpbnRyb2R1Y2VkIG9yIG1vZGlmaWVkLlxcblxcbkNvbnNlcXVlbnRseSwgdGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciBpbmZvcm1hdGlvbiBsZWFrcywgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB0cmFuc21pdCBxdWV1ZSBzY2hlZHVsaW5nIGxvZ2ljIGluIG1hYzgwMjExIChuZXQvbWFjODAyMTEvdHguYyksIGRlY291cGxpbmcgcXVldWUgc2NoZWR1bGUgb3BlbiBzdGF0ZSB0cmFja2luZyBmcm9tIHRoZSBzY2hlZHVsZSByb3VuZCBjb3VudGVyLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGFuZCBleGVjdXRhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB1c2luZyB2aXJ0dWFsIHdpcmVsZXNzIGRyaXZlcnMgKHN1Y2ggYXMgbWFjODAyMTFfaHdzaW0pIGFuZCBzdGFuZGFyZCB3aXJlbGVzcyBuZXRsaW5rL3BhY2tldCBpbnRlcmZhY2VzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxNzo0Mjo1Mi41OTY2NTY4NDRaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY3ODU4ODg4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGM3YmZmMWIyNDUzNDI2MzZmZmMwNWI1ZGEzNzRiZDgzZGEyMDEyNzRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBTZXAgOCAxNzo0Mjo1MSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaCBiL25ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oXFxuaW5kZXggNTNiMGIwOGQzNDU5Ny4uNjUzMTEzNDBkYjQwNiAxMDA2NDRcXG4tLS0gYS9uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaFxcbisrKyBiL25ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oXFxuQEAgLTE0NjgsNiArMTQ2OCw3IEBAIHN0cnVjdCBpZWVlODAyMTFfbG9jYWwge1xcbiBcXHRzcGlubG9ja190IGFjdGl2ZV90eHFfbG9ja1tJRUVFODAyMTFfTlVNX0FDU107XFxuIFxcdHN0cnVjdCBsaXN0X2hlYWQgYWN0aXZlX3R4cXNbSUVFRTgwMjExX05VTV9BQ1NdO1xcbiBcXHR1MTYgc2NoZWR1bGVfcm91bmRbSUVFRTgwMjExX05VTV9BQ1NdO1xcbitcXHRib29sIHNjaGVkdWxlX29wZW5bSUVFRTgwMjExX05VTV9BQ1NdO1xcbiBcXG4gXFx0Lyogc2VyaWFsaXplcyBpZWVlODAyMTFfaGFuZGxlX3dha2VfdHhfcXVldWUgKi9cXG4gXFx0c3BpbmxvY2tfdCBoYW5kbGVfd2FrZV90eF9xdWV1ZV9sb2NrO1xcbmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvdHguYyBiL25ldC9tYWM4MDIxMS90eC5jXFxuaW5kZXggYzMzMDkyOTYwZGYyNi4uYzY2NWNlZDljMDVjYiAxMDA2NDRcXG4tLS0gYS9uZXQvbWFjODAyMTEvdHguY1xcbisrKyBiL25ldC9tYWM4MDIxMS90eC5jXFxuQEAgLTQxMjIsNyArNDEyMiw3IEBAIHN0cnVjdCBpZWVlODAyMTFfdHhxICppZWVlODAyMTFfbmV4dF90eHEoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHU4IGFjKVxcbiBcXG4gXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZsb2NhbC1cXHUwMDNlYWN0aXZlX3R4cV9sb2NrW2FjXSk7XFxuIFxcbi1cXHRpZiAoIWxvY2FsLVxcdTAwM2VzY2hlZHVsZV9yb3VuZFthY10pXFxuK1xcdGlmICghbG9jYWwtXFx1MDAzZXNjaGVkdWxlX29wZW5bYWNdKVxcbiBcXHRcXHRnb3RvIG91dDtcXG4gXFxuICBiZWdpbjpcXG5AQCAtNDM0NywxMiArNDM0NywxMiBAQCB2b2lkIGllZWU4MDIxMV90eHFfc2NoZWR1bGVfc3RhcnQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHU4IGFjKVxcbiBcXG4gXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZsb2NhbC1cXHUwMDNlYWN0aXZlX3R4cV9sb2NrW2FjXSk7XFxuIFxcbi1cXHRpZiAoaWVlZTgwMjExX3R4cV9zY2hlZHVsZV9haXJ0aW1lX2NoZWNrKGxvY2FsLCBhYykpIHtcXG4rXFx0bG9jYWwtXFx1MDAzZXNjaGVkdWxlX29wZW5bYWNdID1cXG4rXFx0XFx0aWVlZTgwMjExX3R4cV9zY2hlZHVsZV9haXJ0aW1lX2NoZWNrKGxvY2FsLCBhYyk7XFxuK1xcdGlmIChsb2NhbC1cXHUwMDNlc2NoZWR1bGVfb3BlblthY10pIHtcXG4gXFx0XFx0bG9jYWwtXFx1MDAzZXNjaGVkdWxlX3JvdW5kW2FjXSsrO1xcbiBcXHRcXHRpZiAoIWxvY2FsLVxcdTAwM2VzY2hlZHVsZV9yb3VuZFthY10pXFxuIFxcdFxcdFxcdGxvY2FsLVxcdTAwM2VzY2hlZHVsZV9yb3VuZFthY10rKztcXG4tXFx0fSBlbHNlIHtcXG4tXFx0XFx0bG9jYWwtXFx1MDAzZXNjaGVkdWxlX3JvdW5kW2FjXSA9IDA7XFxuIFxcdH1cXG4gXFxuIFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZsb2NhbC1cXHUwMDNlYWN0aXZlX3R4cV9sb2NrW2FjXSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE3OjQyOjUzLjI3NjI0NTQ4MloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MzcyMDYyNzE2OTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIkNGRzgwMjExXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaWVlZTgwMjExX25leHRfdHhxXCIsXG4gICAgXCJpZWVlODAyMTFfdHhxX3NjaGVkdWxlX3N0YXJ0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHRyYW5zbWl0IHF1ZXVlIHNjaGVkdWxpbmcgbG9naWMgaW4gbWFjODAyMTEgKG5ldC9tYWM4MDIxMS90eC5jKSwgZGVjb3VwbGluZyBxdWV1ZSBzY2hlZHVsZSBvcGVuIHN0YXRlIHRyYWNraW5nIGZyb20gdGhlIHNjaGVkdWxlIHJvdW5kIGNvdW50ZXIuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgYW5kIGV4ZWN1dGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHVzaW5nIHZpcnR1YWwgd2lyZWxlc3MgZHJpdmVycyAoc3VjaCBhcyBtYWM4MDIxMV9od3NpbSkgYW5kIHN0YW5kYXJkIHdpcmVsZXNzIG5ldGxpbmsvcGFja2V0IGludGVyZmFjZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYzdiZmYxYjI0NTM0MjYzNmZmYzA1YjVkYTM3NGJkODNkYTIwMTI3NFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgU2VwIDggMTc6NDI6NTEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaCBiL25ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oXG5pbmRleCA1M2IwYjA4ZDM0NTk3Li42NTMxMTM0MGRiNDA2IDEwMDY0NFxuLS0tIGEvbmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmhcbisrKyBiL25ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oXG5AQCAtMTQ2OCw2ICsxNDY4LDcgQEAgc3RydWN0IGllZWU4MDIxMV9sb2NhbCB7XG4gXHRzcGlubG9ja190IGFjdGl2ZV90eHFfbG9ja1tJRUVFODAyMTFfTlVNX0FDU107XG4gXHRzdHJ1Y3QgbGlzdF9oZWFkIGFjdGl2ZV90eHFzW0lFRUU4MDIxMV9OVU1fQUNTXTtcbiBcdHUxNiBzY2hlZHVsZV9yb3VuZFtJRUVFODAyMTFfTlVNX0FDU107XG4rXHRib29sIHNjaGVkdWxlX29wZW5bSUVFRTgwMjExX05VTV9BQ1NdO1xuIFxuIFx0Lyogc2VyaWFsaXplcyBpZWVlODAyMTFfaGFuZGxlX3dha2VfdHhfcXVldWUgKi9cbiBcdHNwaW5sb2NrX3QgaGFuZGxlX3dha2VfdHhfcXVldWVfbG9jaztcbmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvdHguYyBiL25ldC9tYWM4MDIxMS90eC5jXG5pbmRleCBjMzMwOTI5NjBkZjI2Li5jNjY1Y2VkOWMwNWNiIDEwMDY0NFxuLS0tIGEvbmV0L21hYzgwMjExL3R4LmNcbisrKyBiL25ldC9tYWM4MDIxMS90eC5jXG5AQCAtNDEyMiw3ICs0MTIyLDcgQEAgc3RydWN0IGllZWU4MDIxMV90eHEgKmllZWU4MDIxMV9uZXh0X3R4cShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgdTggYWMpXG4gXG4gXHRzcGluX2xvY2tfYmgoXHUwMDI2bG9jYWwtXHUwMDNlYWN0aXZlX3R4cV9sb2NrW2FjXSk7XG4gXG4tXHRpZiAoIWxvY2FsLVx1MDAzZXNjaGVkdWxlX3JvdW5kW2FjXSlcbitcdGlmICghbG9jYWwtXHUwMDNlc2NoZWR1bGVfb3BlblthY10pXG4gXHRcdGdvdG8gb3V0O1xuIFxuICBiZWdpbjpcbkBAIC00MzQ3LDEyICs0MzQ3LDEyIEBAIHZvaWQgaWVlZTgwMjExX3R4cV9zY2hlZHVsZV9zdGFydChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgdTggYWMpXG4gXG4gXHRzcGluX2xvY2tfYmgoXHUwMDI2bG9jYWwtXHUwMDNlYWN0aXZlX3R4cV9sb2NrW2FjXSk7XG4gXG4tXHRpZiAoaWVlZTgwMjExX3R4cV9zY2hlZHVsZV9haXJ0aW1lX2NoZWNrKGxvY2FsLCBhYykpIHtcbitcdGxvY2FsLVx1MDAzZXNjaGVkdWxlX29wZW5bYWNdID1cbitcdFx0aWVlZTgwMjExX3R4cV9zY2hlZHVsZV9haXJ0aW1lX2NoZWNrKGxvY2FsLCBhYyk7XG4rXHRpZiAobG9jYWwtXHUwMDNlc2NoZWR1bGVfb3BlblthY10pIHtcbiBcdFx0bG9jYWwtXHUwMDNlc2NoZWR1bGVfcm91bmRbYWNdKys7XG4gXHRcdGlmICghbG9jYWwtXHUwMDNlc2NoZWR1bGVfcm91bmRbYWNdKVxuIFx0XHRcdGxvY2FsLVx1MDAzZXNjaGVkdWxlX3JvdW5kW2FjXSsrO1xuLVx0fSBlbHNlIHtcbi1cdFx0bG9jYWwtXHUwMDNlc2NoZWR1bGVfcm91bmRbYWNdID0gMDtcbiBcdH1cbiBcbiBcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmxvY2FsLVx1MDAzZWFjdGl2ZV90eHFfbG9ja1thY10pO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTc6NDI6NTMuMjc2MjQ3MzgyWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NjEyOTIyNTgyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBhdGNoIGZvciBQb3RlbnRpYWwgSXNzdWVzKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIFRoZSBmaXJzdCB0aGluZyBJJ20gZG9pbmcgaXMgZ2V0dGluZyBhIGZlZWwgZm9yIHRoZSBzY29wZS4gVGhpcyBwYXRjaCBoaXRzIGBuZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaGAgYW5kIGBuZXQvbWFjODAyMTEvdHguY2AsIHNvIGl0J3MgcHJvYmFibHkgcmVsYXRlZCB0byA4MDIuMTEgd2lyZWxlc3MgdHJhbnNtaXNzaW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgYmVpbmcgY2hhbmdlZCBhbmQgd2hldGhlciBpdCBpbnRyb2R1Y2VzIGFueXRoaW5nIHByb2JsZW1hdGljLlxuXG5JJ20gemVyb2luZyBpbiBvbiBgbmV0L21hYzgwMjExL3R4LmNgLCBwYXJ0aWN1bGFybHkgYXJvdW5kIGxpbmVzIDQxMjIgYW5kIDQzNDcuIEkgd2FudCB0byBzZWUgd2hhdCBjb25maWd1cmF0aW9uIG9wdGlvbnMgbWlnaHQgYWZmZWN0IHRoaXMgY29kZSwgd2hhdCBmdW5jdGlvbnMgYXJlIGNhbGxlZCwgYW5kIGhvdyBkZWVwbHkgdGhpcyBtb2RpZmljYXRpb24gZ29lcy4gQ3JpdGljYWxseSwgSSBoYXZlIHRvIGNvbnNpZGVyIHdoZXRoZXIgdGhpcyBhcmVhIGlzIHJlYWNoYWJsZSB3aXRoaW4gYSBzdGFuZGFyZCBmdXp6aW5nIHNldHVwIOKAkyB0aGluayBgbWFjODAyMTFfaHdzaW1gLCBgbmw4MDIxMWAsIHRob3NlIHNvcnRzIG9mIHNpbXVsYXRlZCB3aWZpIGRldmljZXMgdGhhdCBzeXprYWxsZXIgaGFtbWVycy4gSXQncyBlc3NlbnRpYWwgdG8gdW5kZXJzdGFuZCBpZiBvdXIgZnV6emluZyBlZmZvcnRzIGFyZSBsaWtlbHkgdG8gaGl0IHRoaXMgbmV3IGNvZGUgcGF0aC5cblxuVG8gZ2V0IGEgYmV0dGVyIGdyaXAgb24gdGhlIHNpdHVhdGlvbiBJIHRoaW5rIEknbGwgdXNlIGVpdGhlciBgcmVhZC1maWxlYCBvciBgZ3JlcHBlcmAgdG8gaW5zcGVjdCBgbmV0L21hYzgwMjExL3R4LmNgLCB3aGljaCBzaG91bGQgcHJvdmlkZSBlbm91Z2ggY29udGV4dHVhbCBkZXRhaWwuIEkgc2hvdWxkIGFsc28gY2hlY2sgdGhlIGBLY29uZmlnYCBmaWxlcyByZWxhdGVkIHRvIHRoaXMgcGFydCBvZiB0aGUga2VybmVsLCBpbiBjYXNlIHRoZXJlIGFyZSBhbnkgY29uZGl0aW9uYWwgZGVwZW5kZW5jaWVzIG9yIGZlYXR1cmVzIHRoYXQgYXJlIG5ld2x5IGVuYWJsZWQgb3IgZGlzYWJsZWQuIFRoaXMgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGNvZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzOTksIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTcsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxNzo0Mjo1OS40MDU0ODYyNTdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzgzMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L21hYzgwMjExL3R4LmNcIixcbiAgXCJGaXJzdExpbmVcIjogNDExNSxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiNDExNTpcXHRzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqaWVlZTgwMjExX25leHRfdHhxKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCB1OCBhYylcXG40MTE2OlxcdHtcXG40MTE3OlxcdFxcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gaHdfdG9fbG9jYWwoaHcpO1xcbjQxMTg6XFx0XFx0c3RydWN0IGllZWU4MDIxMV90eHEgKnJldCA9IE5VTEw7XFxuNDExOTpcXHRcXHRzdHJ1Y3QgdHhxX2luZm8gKnR4cWkgPSBOVUxMLCAqaGVhZCA9IE5VTEw7XFxuNDEyMDpcXHRcXHRib29sIGZvdW5kX2VsaWdpYmxlX3R4cSA9IGZhbHNlO1xcbjQxMjE6XFx0XFx0Ym9vbCBhcWxfY2hlY2s7XFxuNDEyMjpcXHRcXG40MTIzOlxcdFxcdHNwaW5fbG9ja19iaChcXHUwMDI2bG9jYWwtXFx1MDAzZWFjdGl2ZV90eHFfbG9ja1thY10pO1xcbjQxMjQ6XFx0XFxuNDEyNTpcXHRcXHRpZiAoIWxvY2FsLVxcdTAwM2VzY2hlZHVsZV9vcGVuW2FjXSlcXG40MTI2OlxcdFxcdFxcdGdvdG8gb3V0O1xcbjQxMjc6XFx0XFxuNDEyODpcXHQgYmVnaW46XFxuNDEyOTpcXHRcXHR0eHFpID0gbGlzdF9maXJzdF9lbnRyeV9vcl9udWxsKFxcdTAwMjZsb2NhbC1cXHUwMDNlYWN0aXZlX3R4cXNbYWNdLFxcbjQxMzA6XFx0XFx0XFx0XFx0XFx0XFx0c3RydWN0IHR4cV9pbmZvLFxcbjQxMzE6XFx0XFx0XFx0XFx0XFx0XFx0c2NoZWR1bGVfb3JkZXIpO1xcbjQxMzI6XFx0XFx0aWYgKCF0eHFpKVxcbjQxMzM6XFx0XFx0XFx0Z290byBvdXQ7XFxuNDEzNDpcXHRcXG40MTM1OlxcdFxcdGlmICh0eHFpID09IGhlYWQpIHtcXG40MTM2OlxcdFxcdFxcdGlmICghZm91bmRfZWxpZ2libGVfdHhxKVxcbjQxMzc6XFx0XFx0XFx0XFx0Z290byBvdXQ7XFxuNDEzODpcXHRcXHRcXHRlbHNlXFxuNDEzOTpcXHRcXHRcXHRcXHRmb3VuZF9lbGlnaWJsZV90eHEgPSBmYWxzZTtcXG40MTQwOlxcdFxcdH1cXG40MTQxOlxcdFxcbjQxNDI6XFx0XFx0aWYgKCFoZWFkKVxcbjQxNDM6XFx0XFx0XFx0aGVhZCA9IHR4cWk7XFxuNDE0NDpcXHRcXG40MTQ1OlxcdFxcdGFxbF9jaGVjayA9IGllZWU4MDIxMV90eHFfYWlydGltZV9jaGVjayhodywgXFx1MDAyNnR4cWktXFx1MDAzZXR4cSk7XFxuNDE0NjpcXHRcXHRpZiAoYXFsX2NoZWNrKVxcbjQxNDc6XFx0XFx0XFx0Zm91bmRfZWxpZ2libGVfdHhxID0gdHJ1ZTtcXG40MTQ4OlxcdFxcbjQxNDk6XFx0XFx0aWYgKHR4cWktXFx1MDAzZXR4cS5zdGEpIHtcXG40MTUwOlxcdFxcdFxcdHN0cnVjdCBzdGFfaW5mbyAqc3RhID0gY29udGFpbmVyX29mKHR4cWktXFx1MDAzZXR4cS5zdGEsXFxuNDE1MTpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgc3RydWN0IHN0YV9pbmZvLCBzdGEpO1xcbjQxNTI6XFx0XFxuNDE1MzpcXHRcXHRcXHRpZiAoaWVlZTgwMjExX3N0YV9kZWZpY2l0KHN0YSwgdHhxaS1cXHUwMDNldHhxLmFjKSBcXHUwMDNjIDApIHtcXG40MTU0OlxcdFxcdFxcdFxcdHN0YS1cXHUwMDNlYWlydGltZVt0eHFpLVxcdTAwM2V0eHEuYWNdLmRlZmljaXQgKz1cXG40MTU1OlxcdFxcdFxcdFxcdFxcdHN0YS1cXHUwMDNlYWlydGltZV93ZWlnaHQ7XFxuNDE1NjpcXHRcXG40MTU3OlxcdFxcdFxcdFxcdGFxbF9jaGVjayA9IGZhbHNlO1xcbjQxNTg6XFx0XFx0XFx0fVxcbjQxNTk6XFx0XFx0fVxcbjQxNjA6XFx0XFxuNDE2MTpcXHRcXHRpZiAoIWFxbF9jaGVjaykge1xcbjQxNjI6XFx0XFx0XFx0bGlzdF9tb3ZlX3RhaWwoXFx1MDAyNnR4cWktXFx1MDAzZXNjaGVkdWxlX29yZGVyLFxcbjQxNjM6XFx0XFx0XFx0XFx0XFx0ICAgXFx1MDAyNmxvY2FsLVxcdTAwM2VhY3RpdmVfdHhxc1t0eHFpLVxcdTAwM2V0eHEuYWNdKTtcXG40MTY0OlxcdFxcdFxcdGdvdG8gYmVnaW47XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE3OjQyOjU5LjQwNTkyODE3N1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIwMjEyNTYxMzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhpbmtpbmcsIGV4cHJlc3NlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNQUM4MDIxMSBUcmFuc21pc3Npb24gQ29kZSoqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5IHdpdGggYG5ldC9tYWM4MDIxMS90eC5jYC4gTGV0J3MgemVybyBpbiBvbiBhIHNwZWNpZmljIHBvaW50IHRvIGF2b2lkIGdldHRpbmcgbG9zdCBpbiB0aGUgd2VlZHMgcmlnaHQgYXdheS4gSSdtIGdvaW5nIHRvIGp1bXAgdG8gbGluZSA0MzQ3LiBCYXNlZCBvbiBteSBwYXN0IGV4cGVyaWVuY2Ugd2l0aCBNQUM4MDIxMSwgSSBleHBlY3QgdGhpcyBhcmVhIHRvIGxpa2VseSBkZWFsIHdpdGjigKYgW0hlcmUsIEknZCBmaWxsIGluIHRoZSBsaWtlbHkgZnVuY3Rpb24gYmFzZWQgb24gbXkgZXhwZXJ0aXNlIC0gc29tZXRoaW5nIGxpa2U6IFwi4oCmcmV0cmFuc21pc3Npb24gbG9naWMsIHJhdGUgYWRhcHRhdGlvbiwgb3IgcG9zc2libHkgZnJhbWUgYWdncmVnYXRpb25cIi5dLiBUaGlzIHNwZWNpZmljIGxpbmUsIHN1cnJvdW5kZWQgYnkgdGhlIGNvZGUgYXJvdW5kIGl0LCB3aWxsIHN1cmVseSBwcm92aWRlIHNvbWUgY3JpdGljYWwgaW5zaWdodHMuIExldOKAmXMgc2VlIHdoYXQncyByZWFsbHkgaGFwcGVuaW5nIGluIHRoYXQgc2VjdGlvbiBvZiB0aGUgdHJhbnNtaXNzaW9uIHByb2Nlc3MuIFRoaXMgc3BvdCBzZWVtcyBwcm9taXNpbmcgZm9yIGV4YW1pbmluZyB0aGUgbnVhbmNlcyBvZiBob3cgdGhlIE1BQyBsYXllciBoYW5kbGVzIHBhY2tldCB0cmFuc21pc3Npb24uIExldCdzIHNlZSBpZiB0aGlzIGp1bXAgcHJvdmlkZXMgdGhlIGRhdGEgSSBuZWVkIVxuXG5cbiIsIklucHV0VG9rZW5zIjo0NzQyLCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxNzo0MzowMS40MjcxODc0MTJaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTQ0MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L21hYzgwMjExL3R4LmNcIixcbiAgXCJGaXJzdExpbmVcIjogNDM0MCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiNDM0MDpcXHRcXHRyZXR1cm4gdHJ1ZTtcXG40MzQxOlxcdH1cXG40MzQyOlxcdEVYUE9SVF9TWU1CT0woaWVlZTgwMjExX3R4cV9tYXlfdHJhbnNtaXQpO1xcbjQzNDM6XFx0XFxuNDM0NDpcXHR2b2lkIGllZWU4MDIxMV90eHFfc2NoZWR1bGVfc3RhcnQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHU4IGFjKVxcbjQzNDU6XFx0e1xcbjQzNDY6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBod190b19sb2NhbChodyk7XFxuNDM0NzpcXHRcXG40MzQ4OlxcdFxcdHNwaW5fbG9ja19iaChcXHUwMDI2bG9jYWwtXFx1MDAzZWFjdGl2ZV90eHFfbG9ja1thY10pO1xcbjQzNDk6XFx0XFxuNDM1MDpcXHRcXHRsb2NhbC1cXHUwMDNlc2NoZWR1bGVfb3BlblthY10gPVxcbjQzNTE6XFx0XFx0XFx0aWVlZTgwMjExX3R4cV9zY2hlZHVsZV9haXJ0aW1lX2NoZWNrKGxvY2FsLCBhYyk7XFxuNDM1MjpcXHRcXHRpZiAobG9jYWwtXFx1MDAzZXNjaGVkdWxlX29wZW5bYWNdKSB7XFxuNDM1MzpcXHRcXHRcXHRsb2NhbC1cXHUwMDNlc2NoZWR1bGVfcm91bmRbYWNdKys7XFxuNDM1NDpcXHRcXHRcXHRpZiAoIWxvY2FsLVxcdTAwM2VzY2hlZHVsZV9yb3VuZFthY10pXFxuNDM1NTpcXHRcXHRcXHRcXHRsb2NhbC1cXHUwMDNlc2NoZWR1bGVfcm91bmRbYWNdKys7XFxuNDM1NjpcXHRcXHR9XFxuNDM1NzpcXHRcXG40MzU4OlxcdFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZsb2NhbC1cXHUwMDNlYWN0aXZlX3R4cV9sb2NrW2FjXSk7XFxuNDM1OTpcXHR9XFxuNDM2MDpcXHRFWFBPUlRfU1lNQk9MKGllZWU4MDIxMV90eHFfc2NoZWR1bGVfc3RhcnQpO1xcbjQzNjE6XFx0XFxuNDM2MjpcXHR2b2lkIF9faWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG40MzYzOlxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG40MzY0OlxcdFxcdFxcdFxcdFxcdCAgdTMyIGluZm9fZmxhZ3MsXFxuNDM2NTpcXHRcXHRcXHRcXHRcXHQgIHUzMiBjdHJsX2ZsYWdzKVxcbjQzNjY6XFx0e1xcbjQzNjc6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBJRUVFODAyMTFfREVWX1RPX1NVQl9JRihkZXYpO1xcbjQzNjg6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cXHUwMDNlbG9jYWw7XFxuNDM2OTpcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX3R4X2luZm8gKmluZm87XFxuNDM3MDpcXHRcXHRzdHJ1Y3Qgc3RhX2luZm8gKnN0YTtcXG40MzcxOlxcdFxcdHN0cnVjdCBza19idWZmICpuZXh0O1xcbjQzNzI6XFx0XFx0Ym9vbCBncm91cF9hZGRyZXNzZWQ7XFxuNDM3MzpcXHRcXHRpbnQgbGVuID0gc2tiLVxcdTAwM2VsZW47XFxuNDM3NDpcXHRcXG40Mzc1OlxcdFxcdGlmICh1bmxpa2VseSghaWVlZTgwMjExX3NkYXRhX3J1bm5pbmcoc2RhdGEpIHx8IHNrYi1cXHUwMDNlbGVuIFxcdTAwM2MgRVRIX0hMRU4pKSB7XFxuNDM3NjpcXHRcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG40Mzc3OlxcdFxcdFxcdHJldHVybjtcXG40Mzc4OlxcdFxcdH1cXG40Mzc5OlxcdFxcbjQzODA6XFx0XFx0c2tfcGFjaW5nX3NoaWZ0X3VwZGF0ZShza2ItXFx1MDAzZXNrLCBzZGF0YS1cXHUwMDNlbG9jYWwtXFx1MDAzZWh3LnR4X3NrX3BhY2luZ19zaGlmdCk7XFxuNDM4MTpcXHRcXG40MzgyOlxcdFxcdHJjdV9yZWFkX2xvY2soKTtcXG40MzgzOlxcdFxcbjQzODQ6XFx0XFx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWVzaChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikgXFx1MDAyNlxcdTAwMjZcXG40Mzg1OlxcdFxcdCAgICBpZWVlODAyMTFfaHdfY2hlY2soXFx1MDAyNmxvY2FsLVxcdTAwM2VodywgU1VQUE9SVF9GQVNUX1hNSVQpIFxcdTAwMjZcXHUwMDI2XFxuNDM4NjpcXHRcXHQgICAgaWVlZTgwMjExX21lc2hfeG1pdF9mYXN0KHNkYXRhLCBza2IsIGN0cmxfZmxhZ3MpKVxcbjQzODc6XFx0XFx0XFx0Z290byBvdXQ7XFxuNDM4ODpcXHRcXG40Mzg5OlxcdFxcdGlmIChpZWVlODAyMTFfbG9va3VwX3JhX3N0YShzZGF0YSwgc2tiLCBcXHUwMDI2c3RhKSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTc6NDM6MDEuNDI3NzQ1NTYyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjM2Njk3MDE3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgbWFjODAyMTEgS2NvbmZpZyoqXG5cbkFscmlnaHQsIGxldCdzIGdldCBpbnRvIHRoZSBkZXRhaWxzIG9mIHRoZSBtYWM4MDIxMSBLY29uZmlnIGZpbGUuIEkgbmVlZCB0byByZWZyZXNoIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgZGVwZW5kZW5jaWVzLCBhbmQgaG93IHRoZXkgcmVsYXRlIHRvIHRoZSBvdmVyYWxsIGRyaXZlciBhcmNoaXRlY3R1cmUuIEknbSB0aGlua2luZyBzcGVjaWZpY2FsbHkgYWJvdXQgaG93IHZhcmlvdXMgZmVhdHVyZXMgYXJlIGVuYWJsZWQgb3IgZGlzYWJsZWQsIGFuZCB0aGUgaW1wYWN0IG9uIHRoZSByZXN1bHRpbmcga2VybmVsIGltYWdlIHNpemUgYW5kIGZ1bmN0aW9uYWxpdHkuIEknbSBnb2luZyB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBkZXBlbmRlbmNpZXMg4oCTIHRob3NlIGBkZXBlbmRzIG9uYCBzdGF0ZW1lbnRzIGFyZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBob3cgb3B0aW9ucyBpbnRlcmFjdCBhbmQgd2hpY2ggZmVhdHVyZXMgY2FuIGJlIGNvbWJpbmVkLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIGFueSBjaGFuZ2VzIG9yIGFkZGl0aW9ucyBzaW5jZSB0aGUgbGFzdCB0aW1lIEkgcmV2aWV3ZWQgaXQg4oCTIG1heWJlIGEgbmV3IHJlZ3VsYXRvcnkgZG9tYWluIGNvbmZpZ3VyYXRpb24gb3B0aW9uLCBhIG5ldyBwb3dlci1zYXZpbmcgZmVhdHVyZSwgb3IgYSBjaGFuZ2UgaW4gdGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgYSBzcGVjaWZpYyB3aXJlbGVzcyBzdGFuZGFyZC4gQXJlIHRoZXJlIGFueSBuZXcgaGFyZHdhcmUgcGxhdGZvcm1zIHN1cHBvcnRlZCwgYW5kIGhvdyBpcyB0aGF0IHJlZmxlY3RlZCBpbiB0aGUgS2NvbmZpZz8gSSdsbCBhbHNvIHRyeSB0byBnYXVnZSB0aGUgbGV2ZWwgb2YgbW9kdWxhcml6YXRpb24g4oCTIGNhbiBJIGVhc2lseSBkaXNhYmxlIHBhcnRzIEkgZG9uJ3QgbmVlZCwgb3IgYXJlIHRoZXJlIHRpZ2h0bHkgY291cGxlZCBmZWF0dXJlcz8gVGltZSB0byBnZXQgc3RhcnRlZCFcblxuXG4iLCJJbnB1dFRva2VucyI6NTkxNCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTc6NDM6MDMuNzk0NzIwMjkxWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg0MzM0NjI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNQUM4MDIxMVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbWFjODAyMTEvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxubmV0L21hYzgwMjExL0tjb25maWc6Mjpjb25maWcgTUFDODAyMTFcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJHZW5lcmljIElFRUUgODAyLjExIE5ldHdvcmtpbmcgU3RhY2sgKG1hYzgwMjExKVxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTE5PWlmIE1BQzgwMjExICE9IG5cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMTpjb25maWcgTUFDODAyMTFfSEFTX1JDXFxubmV0L21hYzgwMjExL0tjb25maWctMjItXFx0Ym9vbFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI0OmNvbmZpZyBNQUM4MDIxMV9SQ19NSU5TVFJFTFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI1LVxcdGJvb2wgXFxcIk1pbnN0cmVsXFxcIiBpZiBFWFBFUlRcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTMxPWNob2ljZVxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctNDAtXFxubmV0L21hYzgwMjExL0tjb25maWc6NDE6Y29uZmlnIE1BQzgwMjExX1JDX0RFRkFVTFRfTUlOU1RSRUxcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00Mi1cXHRib29sIFxcXCJNaW5zdHJlbFxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTQ4PWVuZGNob2ljZVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQ5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjUwOmNvbmZpZyBNQUM4MDIxMV9SQ19ERUZBVUxUXFxubmV0L21hYzgwMjExL0tjb25maWctNTEtXFx0c3RyaW5nXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZz01Nz1jb21tZW50IFxcXCJTb21lIHdpcmVsZXNzIGRyaXZlcnMgcmVxdWlyZSBhIHJhdGUgY29udHJvbCBhbGdvcml0aG1cXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy01OS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo2MDpjb25maWcgTUFDODAyMTFfS1VOSVRfVEVTVFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTYxLVxcdHRyaXN0YXRlIFxcXCJLVW5pdCB0ZXN0cyBmb3IgbWFjODAyMTFcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTY5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjcwOmNvbmZpZyBNQUM4MDIxMV9NRVNIXFxubmV0L21hYzgwMjExL0tjb25maWctNzEtXFx0Ym9vbCBcXFwiRW5hYmxlIG1hYzgwMjExIG1lc2ggbmV0d29ya2luZyBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctNzgtXFxubmV0L21hYzgwMjExL0tjb25maWc6Nzk6Y29uZmlnIE1BQzgwMjExX0xFRFNcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04MC1cXHRib29sIFxcXCJFbmFibGUgTEVEIHRyaWdnZXJzXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctODctXFxubmV0L21hYzgwMjExL0tjb25maWc6ODg6Y29uZmlnIE1BQzgwMjExX0RFQlVHRlNcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04OS1cXHRib29sIFxcXCJFeHBvcnQgbWFjODAyMTEgaW50ZXJuYWxzIGluIERlYnVnRlNcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy05Ni1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo5Nzpjb25maWcgTUFDODAyMTFfTUVTU0FHRV9UUkFDSU5HXFxubmV0L21hYzgwMjExL0tjb25maWctOTgtXFx0Ym9vbCBcXFwiVHJhY2UgYWxsIG1hYzgwMjExIGRlYnVnIG1lc3NhZ2VzXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTA5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjExMDptZW51Y29uZmlnIE1BQzgwMjExX0RFQlVHX01FTlVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTEtXFx0Ym9vbCBcXFwiU2VsZWN0IG1hYzgwMjExIGRlYnVnZ2luZyBmZWF0dXJlc1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExNS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMTY6Y29uZmlnIE1BQzgwMjExX05PSU5MSU5FXFxubmV0L21hYzgwMjExL0tjb25maWctMTE3LVxcdGJvb2wgXFxcIkRvIG5vdCBpbmxpbmUgVFgvUlggaGFuZGxlcnNcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMzEtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTMyOmNvbmZpZyBNQUM4MDIxMV9WRVJCT1NFX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTMzLVxcdGJvb2wgXFxcIlZlcmJvc2UgZGVidWdnaW5nIG91dHB1dFxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE0Mi1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNDM6Y29uZmlnIE1BQzgwMjExX01MTUVfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNDQtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtYW5hZ2VkIE1MTUUgb3V0cHV0XFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTUzLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE1NDpjb25maWcgTUFDODAyMTFfU1RBX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTU1LVxcdGJvb2wgXFxcIlZlcmJvc2Ugc3RhdGlvbiBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNjItXFxubmV0L21hYzgwMjExL0tjb25maWc6MTYzOmNvbmZpZyBNQUM4MDIxMV9IVF9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE2NC1cXHRib29sIFxcXCJWZXJib3NlIEhUIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE3NC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNzU6Y29uZmlnIE1BQzgwMjExX09DQl9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE3Ni1cXHRib29sIFxcXCJWZXJib3NlIE9DQiBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xODUtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTg2OmNvbmZpZyBNQUM4MDIxMV9JQlNTX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTg3LVxcdGJvb2wgXFxcIlZlcmJvc2UgSUJTUyBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xOTYtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTk3OmNvbmZpZyBNQUM4MDIxMV9QU19ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE5OC1cXHRib29sIFxcXCJWZXJib3NlIHBvd2Vyc2F2ZSBtb2RlIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIwOC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMDk6Y29uZmlnIE1BQzgwMjExX01QTF9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIxMC1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggcGVlciBsaW5rIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyMS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMjI6Y29uZmlnIE1BQzgwMjExX01QQVRIX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjIzLVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBwYXRoIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzNC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMzU6Y29uZmlnIE1BQzgwMjExX01IV01QX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjM2LVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBIV01QIHJvdXRpbmcgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjQ3LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI0ODpjb25maWcgTUFDODAyMTFfTUVTSF9TWU5DX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjQ5LVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBzeW5jaHJvbml6YXRpb24gZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjU4LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI1OTpjb25maWcgTUFDODAyMTFfTUVTSF9DU0FfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNjAtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIGNoYW5uZWwgc3dpdGNoIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2OS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNzA6Y29uZmlnIE1BQzgwMjExX01FU0hfUFNfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNzEtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIHBvd2Vyc2F2ZSBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yODAtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjgxOmNvbmZpZyBNQUM4MDIxMV9URExTX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjgyLVxcdGJvb2wgXFxcIlZlcmJvc2UgVERMUyBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yOTItXFxubmV0L21hYzgwMjExL0tjb25maWc6MjkzOmNvbmZpZyBNQUM4MDIxMV9ERUJVR19DT1VOVEVSU1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI5NC1cXHRib29sIFxcXCJFeHRyYSBzdGF0aXN0aWNzIGZvciBUWC9SWCBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zMDctXFxubmV0L21hYzgwMjExL0tjb25maWc6MzA4OmNvbmZpZyBNQUM4MDIxMV9TVEFfSEFTSF9NQVhfU0laRVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMwOS1cXHRpbnQgXFxcIlN0YXRpb24gaGFzaCB0YWJsZSBtYXhpbXVtIHNpemVcXFwiIGlmIE1BQzgwMjExX0RFQlVHX01FTlVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTc6NDM6MDMuODc5MDU5NjJaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNTIwMjM5ODA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIE1BQzgwMjExIERlcGVuZGVuY2llcyoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW4uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGNoZWNrIHRoZSBgS2NvbmZpZ2AgZmlsZSwgc3BlY2lmaWNhbGx5IHRoZSBiZWdpbm5pbmcgb2YgYG5ldC9tYWM4MDIxMS9LY29uZmlnYC4gSSdtIGdvaW5nIHN0cmFpZ2h0IGZvciB0aGF0IGZpbGUgYmVjYXVzZSBpdCdzIHdoZXJlIHRoZSBjb3JlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgaW5jbHVkaW5nIGRlcGVuZGVuY2llcywgYXJlIGRlZmluZWQgZm9yIGBNQUM4MDIxMWAuIEkgd2FudCB0byBxdWlja2x5IHVuZGVyc3RhbmQgd2hhdCBvdGhlciBrZXJuZWwgZmVhdHVyZXMgb3IgaGFyZHdhcmUgY29uZmlndXJhdGlvbnMgbmVlZCB0byBiZSBpbiBwbGFjZSAqYmVmb3JlKiBgTUFDODAyMTFgIGlzIGV2ZW4gY29uc2lkZXJlZC4gVGhpcyBpcyBjcnVjaWFsIGZvciBkZWJ1Z2dpbmcgYnVpbGQgaXNzdWVzLCB1bmRlcnN0YW5kaW5nIGRyaXZlciBjb21wYXRpYmlsaXR5LCBvciBldmVuIGFzc2Vzc2luZyB0aGUgYXJjaGl0ZWN0dXJhbCBjb25zdHJhaW50cyBvZiBhIHBhcnRpY3VsYXIgd2lyZWxlc3Mgc2V0dXAuIEnigJltIHRoaW5raW5nLCBmb3IgaW5zdGFuY2UsIGFyZSB0aGVyZSBhbnkgYmFzZSB3aXJlbGVzcyBQSFkgcmVxdWlyZW1lbnRzLCBvciBhcmUgdGhlcmUgZGVwZW5kZW5jaWVzIG9uIHNwZWNpZmljIG5ldHdvcmsgbGF5ZXIgZnVuY3Rpb25hbGl0aWVzIGxpa2UgYSBwYXJ0aWN1bGFyIHZlcnNpb24gb2YgdGhlIGdlbmVyaWMgbmV0d29yayBzdGFjaz8gR3JhYmJpbmcgdGhhdCBkZXBlbmRlbmN5IGluZm9ybWF0aW9uIHdpbGwgZ2l2ZSBtZSB0aGUgYnJvYWQgc3Ryb2tlcyBvZiBob3cgdGhpcyB3b3Jrcy4gSSdtIGZvY3VzaW5nIG9uIHRoZSAqZGVwZW5kcyBvbiogY2xhdXNlcyBpbiBgS2NvbmZpZ2AgdG8gZ2V0IHRoYXQgYmlyZCdzLWV5ZSB2aWV3LiBUaGlzIGlzIGFsbCBhYm91dCBjb250ZXh0OyB1bmRlcnN0YW5kaW5nIHRoZSBzdXJyb3VuZGluZyBjb25kaXRpb25zIGlzIGtleSB0byB1bmRlcnN0YW5kaW5nIGhvdyBgTUFDODAyMTFgIGludGVncmF0ZXMgd2l0aCB0aGUgcmVzdCBvZiB0aGUga2VybmVsLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MzgxLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTc6NDM6MDYuMzk5MzAyNDQ3WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4MjMzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbWFjODAyMTEvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyNVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIE1BQzgwMjExXFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiR2VuZXJpYyBJRUVFIDgwMi4xMSBOZXR3b3JraW5nIFN0YWNrIChtYWM4MDIxMSlcXFwiXFxuICAgNDpcXHRcXHRkZXBlbmRzIG9uIENGRzgwMjExXFxuICAgNTpcXHRcXHRzZWxlY3QgQ1JZUFRPXFxuICAgNjpcXHRcXHRzZWxlY3QgQ1JZUFRPX0xJQl9BRVNfQ0JDX01BQ1NcXG4gICA3OlxcdFxcdHNlbGVjdCBDUllQVE9fTElCX0FSQzRcXG4gICA4OlxcdFxcdHNlbGVjdCBDUllQVE9fQUVTXFxuICAgOTpcXHRcXHRzZWxlY3QgQ1JZUFRPX0NDTVxcbiAgMTA6XFx0XFx0c2VsZWN0IENSWVBUT19HQ01cXG4gIDExOlxcdFxcdHNlbGVjdCBDUkMzMlxcbiAgMTI6XFx0XFx0aGVscFxcbiAgMTM6XFx0XFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIHRoZSBoYXJkd2FyZSBpbmRlcGVuZGVudCBJRUVFIDgwMi4xMVxcbiAgMTQ6XFx0XFx0ICBuZXR3b3JraW5nIHN0YWNrLlxcbiAgMTU6XFx0XFxuICAxNjpcXHRjb21tZW50IFxcXCJDRkc4MDIxMSBuZWVkcyB0byBiZSBlbmFibGVkIGZvciBNQUM4MDIxMVxcXCJcXG4gIDE3OlxcdFxcdGRlcGVuZHMgb24gQ0ZHODAyMTE9blxcbiAgMTg6XFx0XFxuICAxOTpcXHRpZiBNQUM4MDIxMSAhPSBuXFxuICAyMDpcXHRcXG4gIDIxOlxcdGNvbmZpZyBNQUM4MDIxMV9IQVNfUkNcXG4gIDIyOlxcdFxcdGJvb2xcXG4gIDIzOlxcdFxcbiAgMjQ6XFx0Y29uZmlnIE1BQzgwMjExX1JDX01JTlNUUkVMXFxuICAyNTpcXHRcXHRib29sIFxcXCJNaW5zdHJlbFxcXCIgaWYgRVhQRVJUXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE3OjQzOjA2LjM5OTUxNDk1N1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozMTM1MDUyMTE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhIGZpcnN0LXBlcnNvbiBleHBlcnQgc3VtbWFyeTpcblxuKipBbmFseXppbmcgYGllZWU4MDIxMV9uZXh0X3R4cWAgYW5kIGBpZWVlODAyMTFfdHhxX3NjaGVkdWxlX3N0YXJ0YCoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzLiBNeSBmb2N1cyBpcyBvbiB1bmRlcnN0YW5kaW5nICpob3cqIGFuZCAqd2hlcmUqIGBpZWVlODAyMTFfbmV4dF90eHFgIGFuZCBgaWVlZTgwMjExX3R4cV9zY2hlZHVsZV9zdGFydGAgYXJlIGJlaW5nIHVzZWQuIEVzc2VudGlhbGx5LCBJIHdhbnQgdG8gdHJhY2UgdGhlIGNhbGxzLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgY29udGV4dCBpbiB3aGljaCB0aGVzZSBmdW5jdGlvbnMgYXJlIGJlaW5nIGludm9rZWQgaW4gdGhlIDgwMi4xMSBzdGFjay4gV2hhdCdzIHRoZSBjb250cm9sIGZsb3c/IFdoYXQgb3RoZXIgZnVuY3Rpb25zIGFyZSB0aGV5IGludGVyYWN0aW5nIHdpdGg/IFdoYXQgYXJlIHRoZSBpbXBsaWNhdGlvbnMgb2Ygc2NoZWR1bGluZyBhbmQgc2VsZWN0aW9uIG9mIHRoZXNlIHRyYW5zbWlzc2lvbiBxdWV1ZXM/XG5cblNwZWNpZmljYWxseSwgSSdtIHRoaW5raW5nIGFib3V0IHRoZSBkYXRhIHN0cnVjdHVyZXMgYmVpbmcgbWFuaXB1bGF0ZWQgd2l0aGluIHRoZXNlIGZ1bmN0aW9ucy4gYGllZWU4MDIxMV9uZXh0X3R4cWAgaXMgbGlrZWx5IHJldHVybmluZyBhIGhhbmRsZSB0byB0aGUgbmV4dCBhdmFpbGFibGUgdHJhbnNtaXQgcXVldWUsIHByZXN1bWFibHkgYmFzZWQgb24gc29tZSBzY2hlZHVsaW5nIHBvbGljeS4gU28sIHdoYXQncyB0aGUgbG9naWMgYmVoaW5kIHRoYXQgcG9saWN5PyBJcyBpdCBzdHJpY3RseSBRb1MtYmFzZWQ/IElzIHRoZXJlIHNvbWUgcm91bmQtcm9iaW4gaW52b2x2ZWQ/IEhvdyBkb2VzIHRoaXMgaW50ZXJhY3Qgd2l0aCB0aGUgdmFyaW91cyBoYXJkd2FyZSBxdWV1ZXMgYW5kIHRoZWlyIGNhcGFiaWxpdGllcz8gQXJlIHdlIGxvb2tpbmcgYXQgYSBzeXN0ZW0td2lkZSB0cmFmZmljIHNjaGVkdWxlciB0aGF0IHRoZXNlIGZ1bmN0aW9ucyBhcmUgcGx1Z2dlZCBpbnRvLCBvciBpcyBpdCBtb3JlIGxvY2FsaXplZCB0byBhIHNwZWNpZmljIGRyaXZlciBvciBkZXZpY2U/XG5cbkFuZCB0aGVuIGBpZWVlODAyMTFfdHhxX3NjaGVkdWxlX3N0YXJ0YCDigJMgdGhpcyBpcyB3aGVyZSB0aGUgKmFjdGlvbiogaXMuIEl0J3MgdGhlIHBvaW50IHdoZXJlIHRyYW5zbWlzc2lvbiBhY3R1YWxseSBiZWdpbnMuIEkgbmVlZCB0byBpZGVudGlmeSB0aGUgaW5wdXRzIHRvIHRoaXMgZnVuY3Rpb24g4oCTIGFyZSB3ZSB0YWxraW5nIGFib3V0IHJhdGUgYWRhcHRhdGlvbiwgcG93ZXIgbWFuYWdlbWVudCwgYmFja29mZiBtYW5hZ2VtZW50LCBvciBvdGhlciBjb21wbGV4LCBwZXItcXVldWUgY29uc2lkZXJhdGlvbnM/IFdoYXQncyB0aGUgcmVsYXRpb25zaGlwIG9mIHRoaXMgZnVuY3Rpb24gdG8gYW55IGhhcmR3YXJlLXNwZWNpZmljIERNQSBvciBkZXNjcmlwdG9yIG1hbmFnZW1lbnQsIHRoZSBsb3dlciBsYXllci4gSSBuZWVkIHRvIGNvbnNpZGVyIGFsbCBvZiB0aGUgcG9zc2liaWxpdGllcyB0aGF0IGNvdWxkIGFyaXNlLiBJJ20gaW1hZ2luaW5nIGhvdyB0aGVzZSBmdW5jdGlvbnMgYXJlIGJlaW5nIGludGVydHdpbmVkIHdpdGggb3RoZXIgdGFza3MgdGhhdCBjb3VsZCBiZSB0YWtpbmcgcGxhY2Ugb24gYW4gODAyLjExIG5ldHdvcmsuXG5cblRoaXMgYW5hbHlzaXMgd2lsbCBnaXZlIG1lIGEgY2xlYXIgcGljdHVyZSBvZiBob3cgdGhlIG92ZXJhbGwgdHJhbnNtaXNzaW9uIHByb2Nlc3Mgd29ya3MgZm9yIHRoaXMgcGFydGljdWxhciA4MDIuMTEgaW1wbGVtZW50YXRpb24uIEkgc2hvdWxkIGJlIGFibGUgdG8gaWRlbnRpZnkgYm90dGxlbmVja3MsIHBvdGVudGlhbCBhcmVhcyBmb3Igb3B0aW1pemF0aW9uLCBvciBldmVuIHBvdGVudGlhbCBidWdzIG9yIHJhY2UgY29uZGl0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTA2MiwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTc6NDM6MDkuNTM0NTcxMzEzWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMDI0NzQwMTE4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImllZWU4MDIxMV9uZXh0X3R4cXxpZWVlODAyMTFfdHhxX3NjaGVkdWxlX3N0YXJ0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0X3J4LmM9MzM3NT1zdGF0aWMgdm9pZCBhdGgxMGtfaHR0X3J4X3R4X2ZldGNoX2luZChzdHJ1Y3QgYXRoMTBrICphciwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0X3J4LmMtMzQ2NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2h0dF9yeC5jOjM0NjY6XFx0XFx0aWVlZTgwMjExX3R4cV9zY2hlZHVsZV9zdGFydChodywgdHhxLVxcdTAwM2VhYyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHRfcnguYy0zNDY3LVxcdFxcdG1heV90eCA9IGllZWU4MDIxMV90eHFfbWF5X3RyYW5zbWl0KGh3LCB0eHEpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYz00NDc1PXN0YXRpYyBpbnQgYXRoMTBrX21hY19zY2hlZHVsZV90eHEoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHUzMiBhYylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtNDQ3OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jOjQ0ODA6XFx0aWVlZTgwMjExX3R4cV9zY2hlZHVsZV9zdGFydChodywgYWMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM6NDQ4MTpcXHR3aGlsZSAoKHR4cSA9IGllZWU4MDIxMV9uZXh0X3R4cShodywgYWMpKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtNDQ4Mi1cXHRcXHR3aGlsZSAoYXRoMTBrX21hY190eF9jYW5fcHVzaChodywgdHhxKSkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYz00NzU3PXN0YXRpYyB2b2lkIGF0aDEwa19tYWNfb3Bfd2FrZV90eF9xdWV1ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtNDc2OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jOjQ3NzA6XFx0aWVlZTgwMjExX3R4cV9zY2hlZHVsZV9zdGFydChodywgYWMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM6NDc3MTpcXHR0eHEgPSBpZWVlODAyMTFfbmV4dF90eHEoaHcsIGFjKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTQ3NzItXFx0aWYgKCF0eHEpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jPTE5ODA9dm9pZCBhdGhfdHhxX3NjaGVkdWxlKHN0cnVjdCBhdGhfc29mdGMgKnNjLCBzdHJ1Y3QgYXRoX3R4cSAqdHhxKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYy0xOTkzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM6MTk5NDpcXHRpZWVlODAyMTFfdHhxX3NjaGVkdWxlX3N0YXJ0KGh3LCB0eHEtXFx1MDAzZW1hYzgwMjExX3FudW0pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtMTk5NS1cXHRzcGluX2xvY2tfYmgoXFx1MDAyNnNjLVxcdTAwM2VjaGFuX2xvY2spO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYy0xOTk5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM6MjAwMDpcXHR3aGlsZSAoKHF1ZXVlID0gaWVlZTgwMjExX25leHRfdHhxKGh3LCB0eHEtXFx1MDAzZW1hYzgwMjExX3FudW0pKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtMjAwMS1cXHRcXHRib29sIGZvcmNlO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jPTU2ND1tdDc2X3R4cV9zY2hlZHVsZV9saXN0KHN0cnVjdCBtdDc2X3BoeSAqcGh5LCBlbnVtIG10NzZfdHhxX2lkIHFpZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYy01NzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jOjU3NjpcXHRcXHR0eHEgPSBpZWVlODAyMTFfbmV4dF90eHEocGh5LVxcdTAwM2VodywgcWlkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmMtNTc3LVxcdFxcdGlmICghdHhxKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jPTYzOD12b2lkIG10NzZfdHhxX3NjaGVkdWxlKHN0cnVjdCBtdDc2X3BoeSAqcGh5LCBlbnVtIG10NzZfdHhxX2lkIHFpZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYy02NDgtXFx0ZG8ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYzo2NDk6XFx0XFx0aWVlZTgwMjExX3R4cV9zY2hlZHVsZV9zdGFydChwaHktXFx1MDAzZWh3LCBxaWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYy02NTAtXFx0XFx0bGVuID0gbXQ3Nl90eHFfc2NoZWR1bGVfbGlzdChwaHksIHFpZCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYz00ODI2PXN0YXRpYyB2b2lkIHJ0dzg5X2NvcmVfdHhxX3NjaGVkdWxlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggYWMsIGJvb2wgKnJlaW52b2tlKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNDgzNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzo0ODM3OlxcdGllZWU4MDIxMV90eHFfc2NoZWR1bGVfc3RhcnQoaHcsIGFjKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzo0ODM4OlxcdHdoaWxlICgodHhxID0gaWVlZTgwMjExX25leHRfdHhxKGh3LCBhYykpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNDgzOS1cXHRcXHRydHd0eHEgPSAoc3RydWN0IHJ0dzg5X3R4cSAqKXR4cS1cXHUwMDNlZHJ2X3ByaXY7XFxuLS1cXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTExNi0gKiBvYnRhaW4gdGhlIG5leHQgcXVldWUgdG8gcHVsbCBmcmFtZXMgZnJvbSwgdGhlIGRyaXZlciBjYWxsc1xcbmluY2x1ZGUvbmV0L21hYzgwMjExLmg6MTE3OiAqIGllZWU4MDIxMV9uZXh0X3R4cSgpLiBUaGUgZHJpdmVyIGlzIHRoZW4gZXhwZWN0ZWQgdG8gcmV0dXJuIHRoZSB0eHEgdXNpbmdcXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTExOC0gKiBpZWVlODAyMTFfcmV0dXJuX3R4cSgpLlxcbi0tXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaD03NzM2PXZvaWQgaWVlZTgwMjExX3VucmVzZXJ2ZV90aWQoc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSwgdTggdGlkKTtcXG4tLVxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNzc0Mi0gKiBAdHhxOiBwb2ludGVyIG9idGFpbmVkIGZyb20gc3RhdGlvbiBvciB2aXJ0dWFsIGludGVyZmFjZSwgb3IgZnJvbVxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmg6Nzc0MzogKlxcdGllZWU4MDIxMV9uZXh0X3R4cSgpXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC03NzQ0LSAqXFxuLS1cXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oPTc3NTg9c3RydWN0IHNrX2J1ZmYgKmllZWU4MDIxMV90eF9kZXF1ZXVlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbi0tXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC03NzY5LSAqIEB0eHE6IHBvaW50ZXIgb2J0YWluZWQgZnJvbSBzdGF0aW9uIG9yIHZpcnR1YWwgaW50ZXJmYWNlLCBvciBmcm9tXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaDo3NzcwOiAqXFx0aWVlZTgwMjExX25leHRfdHhxKClcXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTc3NzEtICpcXG4tLVxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmg9Nzc5NT12b2lkIGllZWU4MDIxMV9oYW5kbGVfd2FrZV90eF9xdWV1ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNzc5OC0vKipcXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oOjc3OTk6ICogaWVlZTgwMjExX25leHRfdHhxIC0gZ2V0IG5leHQgdHggcXVldWUgdG8gcHVsbCBwYWNrZXRzIGZyb21cXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTc4MDAtICpcXG4tLVxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNzgwNy0gKi9cXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oOjc4MDg6c3RydWN0IGllZWU4MDIxMV90eHEgKmllZWU4MDIxMV9uZXh0X3R4cShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgdTggYWMpO1xcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNzgwOS1cXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTc4MTAtLyoqXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaDo3ODExOiAqIGllZWU4MDIxMV90eHFfc2NoZWR1bGVfc3RhcnQgLSBzdGFydCBuZXcgc2NoZWR1bGluZyByb3VuZCBmb3IgVFhRc1xcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNzgxMi0gKlxcbi0tXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC03ODE1LSAqXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaDo3ODE2OiAqIFNob3VsZCBiZSBjYWxsZWQgYmVmb3JlIGllZWU4MDIxMV9uZXh0X3R4cSgpIG9yIGllZWU4MDIxMV9yZXR1cm5fdHhxKCkuXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC03ODE3LSAqIFRoZSBkcml2ZXIgbXVzdCBub3QgY2FsbCBtdWx0aXBsZSBUWFEgc2NoZWR1bGluZyByb3VuZHMgY29uY3VycmVudGx5LlxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNzgxOC0gKi9cXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oOjc4MTk6dm9pZCBpZWVlODAyMTFfdHhxX3NjaGVkdWxlX3N0YXJ0KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCB1OCBhYyk7XFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC03ODIwLVxcbi0tXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaD03ODQyPWllZWU4MDIxMV9zY2hlZHVsZV90eHEoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfdHhxICp0eHEpXFxuLS1cXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTc4NDctLyoqXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaDo3ODQ4OiAqIGllZWU4MDIxMV9yZXR1cm5fdHhxIC0gcmV0dXJuIGEgVFhRIHByZXZpb3VzbHkgYWNxdWlyZWQgYnkgaWVlZTgwMjExX25leHRfdHhxKClcXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTc4NDktICpcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jPTQxMDE9aWVlZTgwMjExX3R4cV9rZWVwX2FjdGl2ZShzdHJ1Y3QgdHhxX2luZm8gKnR4cWkpXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy00MTE0LVxcbm5ldC9tYWM4MDIxMS90eC5jOjQxMTU6c3RydWN0IGllZWU4MDIxMV90eHEgKmllZWU4MDIxMV9uZXh0X3R4cShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgdTggYWMpXFxubmV0L21hYzgwMjExL3R4LmMtNDExNi17XFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy00MTc3LX1cXG5uZXQvbWFjODAyMTEvdHguYzo0MTc4OkVYUE9SVF9TWU1CT0woaWVlZTgwMjExX25leHRfdHhxKTtcXG5uZXQvbWFjODAyMTEvdHguYy00MTc5LVxcbm5ldC9tYWM4MDIxMS90eC5jPTQxODA9dm9pZCBfX2llZWU4MDIxMV9zY2hlZHVsZV90eHEoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy00MTk5LVxcdFxcdCAqIGdldCBpbW1lZGlhdGVseSBtb3ZlZCB0byB0aGUgYmFjayBvZiB0aGUgbGlzdCBvbiB0aGUgbmV4dFxcbm5ldC9tYWM4MDIxMS90eC5jOjQyMDA6XFx0XFx0ICogY2FsbCB0byBpZWVlODAyMTFfbmV4dF90eHEoKS5cXG5uZXQvbWFjODAyMTEvdHguYy00MjAxLVxcdFxcdCAqL1xcbi0tXFxubmV0L21hYzgwMjExL3R4LmM9NDM0Mj1FWFBPUlRfU1lNQk9MKGllZWU4MDIxMV90eHFfbWF5X3RyYW5zbWl0KTtcXG5uZXQvbWFjODAyMTEvdHguYy00MzQzLVxcbm5ldC9tYWM4MDIxMS90eC5jOjQzNDQ6dm9pZCBpZWVlODAyMTFfdHhxX3NjaGVkdWxlX3N0YXJ0KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCB1OCBhYylcXG5uZXQvbWFjODAyMTEvdHguYy00MzQ1LXtcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jLTQzNTktfVxcbm5ldC9tYWM4MDIxMS90eC5jOjQzNjA6RVhQT1JUX1NZTUJPTChpZWVlODAyMTFfdHhxX3NjaGVkdWxlX3N0YXJ0KTtcXG5uZXQvbWFjODAyMTEvdHguYy00MzYxLVxcbi0tXFxubmV0L21hYzgwMjExL3V0aWwuYz0zMDU9dm9pZCBpZWVlODAyMTFfaGFuZGxlX3dha2VfdHhfcXVldWUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5uZXQvbWFjODAyMTEvdXRpbC5jLTMxMy1cXG5uZXQvbWFjODAyMTEvdXRpbC5jOjMxNDpcXHQvKiBVc2UgaWVlZTgwMjExX25leHRfdHhxKCkgZm9yIGFpcnRpbWUgZmFpcm5lc3MgYWNjb3VudGluZyAqL1xcbm5ldC9tYWM4MDIxMS91dGlsLmM6MzE1OlxcdGllZWU4MDIxMV90eHFfc2NoZWR1bGVfc3RhcnQoaHcsIHR4cS1cXHUwMDNlYWMpO1xcbm5ldC9tYWM4MDIxMS91dGlsLmM6MzE2OlxcdHdoaWxlICgocXVldWUgPSBpZWVlODAyMTFfbmV4dF90eHEoaHcsIHR4cS1cXHUwMDNlYWMpKSkge1xcbm5ldC9tYWM4MDIxMS91dGlsLmMtMzE3LVxcdFxcdHdha2VfdHhfcHVzaF9xdWV1ZShsb2NhbCwgc2RhdGEsIHF1ZXVlKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTc6NDM6MTIuNTU5MzE2MzkxWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQzODc3NTk4MDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBtYWM4MDIxMSBTdWJzeXN0ZW0gYW5kIGl0cyBGdXp6aW5nIExhbmRzY2FwZSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBmb2N1cyBpcyBvbiB0aGVzZSBmdW5jdGlvbnM6IGBpZWVlODAyMTFfbmV4dF90eHFgLCBgaWVlZTgwMjExX3R4cV9zY2hlZHVsZV9zdGFydGAsIGFuZCBgaWVlZTgwMjExX2hhbmRsZV93YWtlX3R4X3F1ZXVlYC4gVGhleSdyZSBhbGwgZmlybWx5IHJvb3RlZCBpbiB0aGUgYG5ldC9tYWM4MDIxMWAgY29yZSwgc3BlY2lmaWNhbGx5IHdpdGhpbiBgdHguY2AgYW5kIGB1dGlsLmNgLiBUaGF0J3MgdGhlIGhlYXJ0IG9mIHRoZSBtYXR0ZXIuIEFuZCBJIHNlZSB0aGF0IGBpZWVlODAyMTFfaGFuZGxlX3dha2VfdHhfcXVldWVgIGNhbGxzIHRoZSBvdGhlciB0d28sIHdoaWNoIGlzIGFuIGltcG9ydGFudCBpbnRlcmRlcGVuZGVuY3kgdG8gbm90ZS5cblxuTm93LCBjb25zaWRlcmluZyB0aGUgZnV6emluZyBhc3BlY3QsIHN5emthbGxlciBpcyBhY3RpdmVseSB0YXJnZXRpbmcgbWFjODAyMTEuIEl0J3MgZG9pbmcgdGhpcyBlaXRoZXIgdGhyb3VnaCBgbWFjODAyMTFfaHdzaW1gLCB3aGljaCBpcyBlc3NlbnRpYWxseSBhIHNvZnR3YXJlIGVtdWxhdGlvbiBvZiBhIHdpcmVsZXNzIGRldmljZSwgb3IgdmlhIHRoZSBzdGFuZGFyZCBpbnRlcmZhY2VzIHdlJ3JlIGFsbCBmYW1pbGlhciB3aXRoOiBubDgwMjExLCBzb2NrZXQgaW50ZXJmYWNlcywgYW5kIHZpcnR1YWwgZGV2aWNlcy4gVGhhdCdzIGEgZ29vZCBhcHByb2FjaCB0byBlbnN1cmUgYnJvYWQgY292ZXJhZ2UuXG5cblRoZSBuZXh0IGNyaXRpY2FsIHN0ZXAgaXMgdG8gdmVyaWZ5IHRoZSBjb25uZWN0aW9uIGJldHdlZW4gYG1hYzgwMjExX2h3c2ltYCBhbmQgbWFjODAyMTEgaXRzZWxmLiBJJ2QgZXhwZWN0IGEgZGVwZW5kZW5jeSwgYW5kIGluZGVlZCwgYE1BQzgwMjExX0hXU0lNYCByZWxpZXMgb24gYE1BQzgwMjExYC4gVGhhdCdzIHdoYXQgSSB0aG91Z2h0LCBidXQgSSdsbCBkb3VibGUtY2hlY2sgdGhlIGBLY29uZmlnYCBmb3IgYE1BQzgwMjExX0hXU0lNYCBqdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbi4gSXQncyBhbHdheXMgZ29vZCB0byBiZSB0aG9yb3VnaCB3aGVuIHlvdSdyZSBkZWFsaW5nIHdpdGggdGhlc2Ugc3lzdGVtcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI5MTAsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTc6NDM6MTYuOTQ3MDgwNjQ1WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzkxMTU5NDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1BQzgwMjExX0hXU0lNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWc6MTpjb25maWcgTUFDODAyMTFfSFdTSU1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWctMi1cXHR0cmlzdGF0ZSBcXFwiU2ltdWxhdGVkIHJhZGlvIHRlc3RpbmcgdG9vbCBmb3IgbWFjODAyMTFcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE3OjQzOjE3LjEyNjIwMTc0MloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2MDA3NDM0MDI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTUFDODAyMTEgUGF0Y2ggZm9yIFRYIFF1ZXVlIFNjaGVkdWxpbmcqKlxuXG5Pa2F5LCBzbyB0aGUgaW5pdGlhbCBmb2N1cyBpcyBgTUFDODAyMTFgIGFzIHRoZSBrZXkgY29uZmlndXJhdGlvbiBvcHRpb24uIFJpZ2h0LCBpdCBkZXBlbmRzIG9uIGBDRkc4MDIxMWAuIENvbmZpcm1lZCBieSByZS1leGFtaW5pbmcgYG5ldC9tYWM4MDIxMS9LY29uZmlnYC4gU28sIGBNQUM4MDIxMWAgYW5kIGBDRkc4MDIxMWAgYXJlIHRoZSByZXF1aXJlZCBjb25maWdzLlxuXG5Ob3csIGxldCdzIGRpdmUgaW50byB0aGlzIHBhdGNoLiBUaGUgZGlmZiBzaG93cyBtb2RpZmljYXRpb25zIHRvIGBpZWVlODAyMTFfaS5oYCBhbmQgYHR4LmNgLiBJbiBgaWVlZTgwMjExX2kuaGAsIHRoZXkndmUgYWRkZWQgYHNjaGVkdWxlX29wZW5gIGFzIGEgYm9vbGVhbiBhbG9uZ3NpZGUgYHNjaGVkdWxlX3JvdW5kYCB3aXRoaW4gdGhlIGBpZWVlODAyMTFfbG9jYWxgIHN0cnVjdC4gVGhlIGNvcmUgY2hhbmdlIGlzIGluIGB0eC5jYCB3aXRoIHRoZSBpbnRyb2R1Y3Rpb24gb2YgYHNjaGVkdWxlX29wZW5gLiBQcmV2aW91c2x5LCB0aGUgY29kZSBjaGVja2VkIGAhbG9jYWwtXHUwMDNlc2NoZWR1bGVfcm91bmRbYWNdYCBpbiBgaWVlZTgwMjExX25leHRfdHhxYCwgd2hpY2ggbm93IGNoZWNrcyBgIWxvY2FsLVx1MDAzZXNjaGVkdWxlX29wZW5bYWNdYC4gVGhpcyBpcyB0aGUgaW1wb3J0YW50IGRpc3RpbmN0aW9uIGhlcmUuXG5cblRoZSByYXRpb25hbGUgYmVoaW5kIHRoZSBjaGFuZ2UgaXMgY2xlYXI6ICB0aGUgcHJldmlvdXMgYmVoYXZpb3Igd2FzIHRvIHJlc2V0IGBzY2hlZHVsZV9yb3VuZGAgdG8gemVybyBpZiB0aGUgYHNjaGVkdWxlX2FpcnRpbWVfY2hlY2tgIGZhaWxlZC4gVGhhdCdzIG5vdCBpZGVhbCBiZWNhdXNlIHRoZSBgc2NoZWR1bGVfcm91bmRgIGZpZWxkIGNhbiBiZSB1c2VkIGZvciByb3VuZCBkZXRlY3Rpb24gb3IgZGVmaWNpdCBjYWxjdWxhdGlvbiBhcyB3ZWxsLiBSZXNldHRpbmcgaXQgY291bGQgaW50cm9kdWNlIHN1YnRsZSBpc3N1ZXMgd2l0aCB0aGUgcm91bmQgY291bnRlci4gVGhlIG5ldyBgc2NoZWR1bGVfb3BlbmAgZmxhZyBwcm92aWRlcyBhIHNlcGFyYXRlIHdheSB0byB0cmFjayB3aGV0aGVyIHNjaGVkdWxpbmcgaXMgXCJvcGVuXCIgd2l0aG91dCBpbnRlcmZlcmluZyB3aXRoIHRoZSBwcm9wZXIgb3BlcmF0aW9uIG9mIGBzY2hlZHVsZV9yb3VuZGAuICBgc2NoZWR1bGVfb3BlbmAgaXMgbm93IGRpcmVjdGx5IHNldCB0byB0aGUgcmVzdWx0IG9mIGBzY2hlZHVsZV9haXJ0aW1lX2NoZWNrYC5cblxuSXQgbWFrZXMgc2Vuc2U7IHRoaXMgY2hhbmdlIG1vZGlmaWVzIHN0YXRlIG1hbmFnZW1lbnQgd2l0aGluIHRoZSBUWCBxdWV1ZSBzY2hlZHVsaW5nIGxvZ2ljIGluIG1hYzgwMjExLiBUaGlzIGlzIGRlZmluaXRlbHkgc29tZXRoaW5nIHRoYXQgY291bGQgYmUgdHJpZ2dlcmVkIGR1cmluZyB2aXJ0dWFsaXplZCBmdXp6aW5nLCBsaWtlIHdpdGggbWFjODAyMTFfaHdzaW0sIG5ldGxpbmsgLyBubDgwMjExLCBvciBkdXJpbmcgd2lmaSB0cmFuc21pc3Npb24uXG5cbkxldCBtZSBub3cgcGlucG9pbnQgc29tZSBrZXkgZnVuY3Rpb25zIGludm9sdmVkOiBgaWVlZTgwMjExX25leHRfdHhxYCBhbmQgYGllZWU4MDIxMV90eHFfc2NoZWR1bGVfc3RhcnRgLlxuXG5JIHNob3VsZCBwcm9iYWJseSBsb29rIGZvciBvdGhlciBjb2RlIHdoaWNoIHVzZXMgdGhlIGFkZGVkIGBzY2hlZHVsZV9vcGVuYCBmaWVsZCBvciB0aGUgb3JpZ2luYWwgYHNjaGVkdWxlX3JvdW5kYCBmaWVsZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbXBsZXRlIGltcGFjdCBvbiB0aGUgVFggcXVldWUgc2NoZWR1bGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM2MTAsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDk3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE3OjQzOjIzLjEzMzYzOTg4OVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzIzNDY2NDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2NoZWR1bGVfcm91bmRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L21hYzgwMjExL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaD05NjM9ZW51bSB0eHFfaW5mb19mbGFncyB7XFxuLS1cXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC05NzctICogQHNjaGVkdWxlX29yZGVyOiB1c2VkIHdpdGggaWVlZTgwMjExX2xvY2FsLVxcdTAwM2VhY3RpdmVfdHhxc1xcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oOjk3ODogKiBAc2NoZWR1bGVfcm91bmQ6IGNvdW50ZXIgdG8gcHJldmVudCBpbmZpbml0ZSBsb29wcyBvbiBUWFEgc2NoZWR1bGluZ1xcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTk3OS0gKiBAZmxhZ3M6IFRYUSBmbGFncyBmcm9tIFxcdTAwMjZlbnVtIHR4cV9pbmZvX2ZsYWdzXFxuLS1cXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaD05ODI9c3RydWN0IHR4cV9pbmZvIHtcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTk4Ni1cXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaDo5ODc6XFx0dTE2IHNjaGVkdWxlX3JvdW5kO1xcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTk4OC1cXHRzdHJ1Y3QgbGlzdF9oZWFkIHNjaGVkdWxlX29yZGVyO1xcbi0tXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg9MTQ1Nz1zdHJ1Y3QgaWVlZTgwMjExX2xvY2FsIHtcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTE0NjktXFx0c3RydWN0IGxpc3RfaGVhZCBhY3RpdmVfdHhxc1tJRUVFODAyMTFfTlVNX0FDU107XFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg6MTQ3MDpcXHR1MTYgc2NoZWR1bGVfcm91bmRbSUVFRTgwMjExX05VTV9BQ1NdO1xcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTE0NzEtXFx0Ym9vbCBzY2hlZHVsZV9vcGVuW0lFRUU4MDIxMV9OVU1fQUNTXTtcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jPTQxMTU9c3RydWN0IGllZWU4MDIxMV90eHEgKmllZWU4MDIxMV9uZXh0X3R4cShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgdTggYWMpXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy00MTY2LVxcbm5ldC9tYWM4MDIxMS90eC5jOjQxNjc6XFx0aWYgKHR4cWktXFx1MDAzZXNjaGVkdWxlX3JvdW5kID09IGxvY2FsLVxcdTAwM2VzY2hlZHVsZV9yb3VuZFthY10pXFxubmV0L21hYzgwMjExL3R4LmMtNDE2OC1cXHRcXHRnb3RvIG91dDtcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jLTQxNzAtXFx0bGlzdF9kZWxfaW5pdChcXHUwMDI2dHhxaS1cXHUwMDNlc2NoZWR1bGVfb3JkZXIpO1xcbm5ldC9tYWM4MDIxMS90eC5jOjQxNzE6XFx0dHhxaS1cXHUwMDNlc2NoZWR1bGVfcm91bmQgPSBsb2NhbC1cXHUwMDNlc2NoZWR1bGVfcm91bmRbYWNdO1xcbm5ldC9tYWM4MDIxMS90eC5jLTQxNzItXFx0cmV0ID0gXFx1MDAyNnR4cWktXFx1MDAzZXR4cTtcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jPTQzNDQ9dm9pZCBpZWVlODAyMTFfdHhxX3NjaGVkdWxlX3N0YXJ0KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCB1OCBhYylcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jLTQzNTItXFx0aWYgKGxvY2FsLVxcdTAwM2VzY2hlZHVsZV9vcGVuW2FjXSkge1xcbm5ldC9tYWM4MDIxMS90eC5jOjQzNTM6XFx0XFx0bG9jYWwtXFx1MDAzZXNjaGVkdWxlX3JvdW5kW2FjXSsrO1xcbm5ldC9tYWM4MDIxMS90eC5jOjQzNTQ6XFx0XFx0aWYgKCFsb2NhbC1cXHUwMDNlc2NoZWR1bGVfcm91bmRbYWNdKVxcbm5ldC9tYWM4MDIxMS90eC5jOjQzNTU6XFx0XFx0XFx0bG9jYWwtXFx1MDAzZXNjaGVkdWxlX3JvdW5kW2FjXSsrO1xcbm5ldC9tYWM4MDIxMS90eC5jLTQzNTYtXFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxNzo0MzoyMy4yMDU5OTI0MDhaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Mzc4Njk3NzI1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBTY2hlZHVsaW5nIEJ1ZyBpbiBtYWM4MDIxMSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYml0IG9mIGNvZGU6IGB0eHFpLVx1MDAzZXNjaGVkdWxlX3JvdW5kID09IGxvY2FsLVx1MDAzZXNjaGVkdWxlX3JvdW5kW2FjXWAgaW5zaWRlIGBpZWVlODAyMTFfbmV4dF90eHFgLiBJbnRlcmVzdGluZyEgSXQgbG9va3MgbGlrZSB0aGVyZSB3YXMgYSBuYXN0eSBidWcgd2hlcmUgYHNjaGVkdWxlX3JvdW5kYCBiZWluZyBpbml0aWFsaXplZCB0byB6ZXJvIGNhdXNlZCBzb21lIGlzc3Vlcy4gSXQgZWl0aGVyIGNvbmZsaWN0ZWQgd2l0aCB1bmluaXRpYWxpemVkIHZhbHVlcyBmb3IgYHR4cWktXHUwMDNlc2NoZWR1bGVfcm91bmRgLCBvciBpdCBjYXVzZWQgcHJvYmxlbXMgd2hlbiBzY2hlZHVsaW5nIHdhcyB0dXJuZWQgb2ZmIGFuZCB0aGVuIGJhY2sgb24uIEkgbmVlZCB0byBrZWVwIGluIG1pbmQgdGhhdCBJJ20gZGVhbGluZyB3aXRoIGBpZWVlODAyMTFfbmV4dF90eHFgIGFuZCBgaWVlZTgwMjExX3R4cV9zY2hlZHVsZV9zdGFydGAuIFRob3NlIGFyZSB0aGUgZnVuY3Rpb25zIHRoYXQgd2VyZSBtb2RpZmllZCB0byBhZGRyZXNzIHRoaXMuXG5cblJpZ2h0LCBsZXQncyBzZWUgaG93IHRoaXMgcGxheXMgb3V0IGluIHRlcm1zIG9mIGZ1enppbmcuIFRoYW5rZnVsbHksIFdvcnRoRnV6emluZyBjb25maXJtcyB0aGlzIGlzIGEgZ29vZCB0YXJnZXQuIE1hYzgwMjExIGlzIGEgY2VudHJhbCBwaWVjZSwgcGFydCBvZiB0aGUgY29yZSBJRUVFIDgwMi4xMSBzdGFjayB1c2VkIGJ5IHZhcmlvdXMgZHJpdmVycyBhbmQgdGVzdCBoYXJuZXNzZXMsIGluY2x1ZGluZyBtYWM4MDIxMV9od3NpbSwgc28gaXQgc2hvdWxkIGJlIGVhc3kgdG8gcmVhY2guIEFuZCB5ZXMsIGl0J3MgcmVhY2hhYmxlIGluIFFFTVUgYW5kIHRoZSBzdGFuZGFyZCBmdXp6aW5nIGVudmlyb25tZW50cy4gRXhjZWxsZW50LlxuXG5UaGUgZm9jdXMgaGVyZSBpcyBjbGVhcmx5IG9uIGBpZWVlODAyMTFfbmV4dF90eHFgIGFuZCBgaWVlZTgwMjExX3R4cV9zY2hlZHVsZV9zdGFydGAsIHdoaWNoIG1ha2VzIHNlbnNlIGdpdmVuIHRoZSBpbml0aWFsIGNvZGUgc25pcHBldC5cblxuTm93LCBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnRzLiBUaGUgcmVsZXZhbnQgY29uZmlnIG9wdGlvbnMgYXJlIGBNQUM4MDIxMWAgYW5kIGBDRkc4MDIxMWAuIFRoYXQgaXMgaW1wb3J0YW50IGluZm9ybWF0aW9uIHRoYXQgSSBuZWVkIHRvIGtlZXAgaW4gbWluZC5cblxuRmluYWxseSwgSSdsbCB0YWtlIGEgcXVpY2sgbG9vayBhdCBgbmV0L21hYzgwMjExL01ha2VmaWxlYCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBkZXBlbmRlbmNpZXMgb3IgcmVxdWlyZW1lbnRzIEkgbmVlZCB0byBiZSBhd2FyZSBvZiBiZWZvcmUgSSBkaWcgaW4gZGVlcGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjE4OCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxNzo0MzoyNi45OTI5NzI4NDNaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg1MTY3NTc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInR4Lm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L21hYzgwMjExL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbWFjODAyMTEvTWFrZWZpbGU9NT1tYWM4MDIxMS15IDo9IFxcXFxcXG4tLVxcbm5ldC9tYWM4MDIxMS9NYWtlZmlsZS0xMi1cXHRzY2FuLm8gb2ZmY2hhbm5lbC5vIFxcXFxcXG5uZXQvbWFjODAyMTEvTWFrZWZpbGU6MTM6XFx0aHQubyBhZ2ctdHgubyBhZ2ctcngubyBcXFxcXFxubmV0L21hYzgwMjExL01ha2VmaWxlLTE0LVxcdHZodC5vIFxcXFxcXG4tLVxcbm5ldC9tYWM4MDIxMS9NYWtlZmlsZS0yOC1cXHRzcGVjdG1nbXQubyBcXFxcXFxubmV0L21hYzgwMjExL01ha2VmaWxlOjI5OlxcdHR4Lm8gXFxcXFxcbm5ldC9tYWM4MDIxMS9NYWtlZmlsZS0zMC1cXHRrZXkubyBcXFxcXFxuLS1cXG5uZXQvbWFjODAyMTEvYWdnLXR4LmM9NzU0PUVYUE9SVF9TWU1CT0woaWVlZTgwMjExX3N0YXJ0X3R4X2JhX3Nlc3Npb24pO1xcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYy03NTUtXFxubmV0L21hYzgwMjExL2FnZy10eC5jOjc1NjpzdGF0aWMgdm9pZCBpZWVlODAyMTFfYWdnX3R4X29wZXJhdGlvbmFsKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYy03NTctXFx0XFx0XFx0XFx0XFx0IHN0cnVjdCBzdGFfaW5mbyAqc3RhLCB1MTYgdGlkKVxcbi0tXFxubmV0L21hYzgwMjExL2FnZy10eC5jPTc5OT12b2lkIGllZWU4MDIxMV9zdGFydF90eF9iYV9jYihzdHJ1Y3Qgc3RhX2luZm8gKnN0YSwgaW50IHRpZCxcXG4tLVxcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYy04MjAtXFx0aWYgKHRlc3RfYml0KEhUX0FHR19TVEFURV9SRVNQT05TRV9SRUNFSVZFRCwgXFx1MDAyNnRpZF90eC1cXHUwMDNlc3RhdGUpKVxcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYzo4MjE6XFx0XFx0aWVlZTgwMjExX2FnZ190eF9vcGVyYXRpb25hbChsb2NhbCwgc3RhLCB0aWQpO1xcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYy04MjItfVxcbi0tXFxubmV0L21hYzgwMjExL2FnZy10eC5jPTk3Nz12b2lkIGllZWU4MDIxMV9wcm9jZXNzX2FkZGJhX3Jlc3Aoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxuLS1cXG5uZXQvbWFjODAyMTEvYWdnLXR4LmMtMTA1MS1cXHRcXHRpZiAodGVzdF9iaXQoSFRfQUdHX1NUQVRFX0RSVl9SRUFEWSwgXFx1MDAyNnRpZF90eC1cXHUwMDNlc3RhdGUpKVxcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYzoxMDUyOlxcdFxcdFxcdGllZWU4MDIxMV9hZ2dfdHhfb3BlcmF0aW9uYWwobG9jYWwsIHN0YSwgdGlkKTtcXG5uZXQvbWFjODAyMTEvYWdnLXR4LmMtMTA1My1cXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYz0zNzA4PXN0YXRpYyBpbnQgaWVlZTgwMjExX3NldF90eF9wb3dlcihzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTM3NjEtXFxubmV0L21hYzgwMjExL2NmZy5jOjM3NjI6XFx0XFx0XFx0aWYgKHR4cF90eXBlICE9IGxpbmstXFx1MDAzZWNvbmYtXFx1MDAzZXR4cG93ZXJfdHlwZSkge1xcbm5ldC9tYWM4MDIxMS9jZmcuYy0zNzYzLVxcdFxcdFxcdFxcdHVwZGF0ZV90eHBfdHlwZSA9IHRydWU7XFxubmV0L21hYzgwMjExL2NmZy5jOjM3NjQ6XFx0XFx0XFx0XFx0bGluay1cXHUwMDNlY29uZi1cXHUwMDNldHhwb3dlcl90eXBlID0gdHhwX3R5cGU7XFxubmV0L21hYzgwMjExL2NmZy5jLTM3NjUtXFx0XFx0XFx0fVxcbm5ldC9tYWM4MDIxMS9jZmcuYy0zNzY2LVxcbm5ldC9tYWM4MDIxMS9jZmcuYzozNzY3OlxcdFxcdFxcdGllZWU4MDIxMV9yZWNhbGNfdHhwb3dlcihsaW5rLCB1cGRhdGVfdHhwX3R5cGUpO1xcbm5ldC9tYWM4MDIxMS9jZmcuYy0zNzY4LVxcdFxcdH1cXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy0zNzkwLVxcdFxcdFxcdGxpbmstXFx1MDAzZXVzZXJfcG93ZXJfbGV2ZWwgPSBsb2NhbC1cXHUwMDNldXNlcl9wb3dlcl9sZXZlbDtcXG5uZXQvbWFjODAyMTEvY2ZnLmM6Mzc5MTpcXHRcXHRcXHRpZiAodHhwX3R5cGUgIT0gbGluay1cXHUwMDNlY29uZi1cXHUwMDNldHhwb3dlcl90eXBlKVxcbm5ldC9tYWM4MDIxMS9jZmcuYy0zNzkyLVxcdFxcdFxcdFxcdHVwZGF0ZV90eHBfdHlwZSA9IHRydWU7XFxubmV0L21hYzgwMjExL2NmZy5jOjM3OTM6XFx0XFx0XFx0bGluay1cXHUwMDNlY29uZi1cXHUwMDNldHhwb3dlcl90eXBlID0gdHhwX3R5cGU7XFxubmV0L21hYzgwMjExL2NmZy5jLTM3OTQtXFx0XFx0fVxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTM4MDktXFxubmV0L21hYzgwMjExL2NmZy5jOjM4MTA6XFx0XFx0XFx0aWVlZTgwMjExX3JlY2FsY190eHBvd2VyKGxpbmssIHVwZGF0ZV90eHBfdHlwZSk7XFxubmV0L21hYzgwMjExL2NmZy5jLTM4MTEtXFx0XFx0fVxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTM4MTgtXFx0XFx0XFx0c2RhdGEtXFx1MDAzZWRlZmxpbmsudXNlcl9wb3dlcl9sZXZlbCA9IGxvY2FsLVxcdTAwM2V1c2VyX3Bvd2VyX2xldmVsO1xcbm5ldC9tYWM4MDIxMS9jZmcuYzozODE5OlxcdFxcdFxcdGlmICh0eHBfdHlwZSAhPSBzZGF0YS1cXHUwMDNldmlmLmJzc19jb25mLnR4cG93ZXJfdHlwZSlcXG5uZXQvbWFjODAyMTEvY2ZnLmMtMzgyMC1cXHRcXHRcXHRcXHR1cGRhdGVfdHhwX3R5cGUgPSB0cnVlO1xcbm5ldC9tYWM4MDIxMS9jZmcuYzozODIxOlxcdFxcdFxcdHNkYXRhLVxcdTAwM2V2aWYuYnNzX2NvbmYudHhwb3dlcl90eXBlID0gdHhwX3R5cGU7XFxubmV0L21hYzgwMjExL2NmZy5jLTM4MjItXFxubmV0L21hYzgwMjExL2NmZy5jOjM4MjM6XFx0XFx0XFx0aWVlZTgwMjExX3JlY2FsY190eHBvd2VyKFxcdTAwMjZzZGF0YS1cXHUwMDNlZGVmbGluayxcXG5uZXQvbWFjODAyMTEvY2ZnLmMtMzgyNC1cXHRcXHRcXHRcXHRcXHRcXHQgdXBkYXRlX3R4cF90eXBlKTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYz0zODM1PXN0YXRpYyBpbnQgaWVlZTgwMjExX2dldF90eF9wb3dlcihzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTM4NDQtXFxubmV0L21hYzgwMjExL2NmZy5jOjM4NDU6XFx0aWYgKGxvY2FsLVxcdTAwM2VvcHMtXFx1MDAzZWdldF90eHBvd2VyIFxcdTAwMjZcXHUwMDI2XFxubmV0L21hYzgwMjExL2NmZy5jLTM4NDYtXFx0ICAgIChzZGF0YS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRUVFODAyMTFfU0RBVEFfSU5fRFJJVkVSKSlcXG5uZXQvbWFjODAyMTEvY2ZnLmM6Mzg0NzpcXHRcXHRyZXR1cm4gZHJ2X2dldF90eHBvd2VyKGxvY2FsLCBzZGF0YSwgbGlua19pZCwgZGJtKTtcXG5uZXQvbWFjODAyMTEvY2ZnLmMtMzg0OC1cXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy0zODU0LVxcdFxcdGlmIChsaW5rX2RhdGEpXFxubmV0L21hYzgwMjExL2NmZy5jOjM4NTU6XFx0XFx0XFx0KmRibSA9IGxpbmtfZGF0YS1cXHUwMDNlY29uZi1cXHUwMDNldHhwb3dlcjtcXG5uZXQvbWFjODAyMTEvY2ZnLmMtMzg1Ni1cXHRcXHRlbHNlXFxuLS1cXG5uZXQvbWFjODAyMTEvY2hhbi5jPTExODE9c3RhdGljIGludCBpZWVlODAyMTFfYXNzaWduX2xpbmtfY2hhbmN0eChzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluayxcXG4tLVxcbm5ldC9tYWM4MDIxMS9jaGFuLmMtMTIzMS1cXHRpZiAobmV3X2N0eCBcXHUwMDI2XFx1MDAyNiBpZWVlODAyMTFfY2hhbmN0eF9udW1fYXNzaWduZWQobG9jYWwsIG5ld19jdHgpIFxcdTAwM2UgMCkge1xcbm5ldC9tYWM4MDIxMS9jaGFuLmM6MTIzMjpcXHRcXHRpZWVlODAyMTFfcmVjYWxjX3R4cG93ZXIobGluaywgZmFsc2UpO1xcbm5ldC9tYWM4MDIxMS9jaGFuLmMtMTIzMy1cXHRcXHRpZWVlODAyMTFfcmVjYWxjX2NoYW5jdHhfbWluX2RlZihsb2NhbCwgbmV3X2N0eCk7XFxuLS1cXG5uZXQvbWFjODAyMTEvY2hhbi5jPTE4ODU9c3RhdGljIGludCBpZWVlODAyMTFfdmlmX3VzZV9yZXNlcnZlZF9zd2l0Y2goc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwpXFxuLS1cXG5uZXQvbWFjODAyMTEvY2hhbi5jLTIwNjUtXFxubmV0L21hYzgwMjExL2NoYW4uYzoyMDY2OlxcdFxcdFxcdGllZWU4MDIxMV9yZWNhbGNfdHhwb3dlcihsaW5rLCBmYWxzZSk7XFxubmV0L21hYzgwMjExL2NoYW4uYy0yMDY3LVxcdFxcdH1cXG4tLVxcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5jPTM1MD1JRUVFODAyMTFfSUZfRklMRShzdGF0ZSwgc3RhdGUsIExIRVgpO1xcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5jOjM1MTpJRUVFODAyMTFfSUZfTElOS19GSUxFKHR4cG93ZXIsIGNvbmYtXFx1MDAzZXR4cG93ZXIsIERFQyk7XFxubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmMtMzUyLUlFRUU4MDIxMV9JRl9MSU5LX0ZJTEUoYXBfcG93ZXJfbGV2ZWwsIGFwX3Bvd2VyX2xldmVsLCBERUMpO1xcbi0tXFxubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmM9OTgyPXN0YXRpYyB2b2lkIGFkZF9saW5rX2ZpbGVzKHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rLFxcbi0tXFxubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmMtOTg0LXtcXG5uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuYzo5ODU6XFx0REVCVUdGU19BREQoZGVudHJ5LCB0eHBvd2VyKTtcXG5uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuYy05ODYtXFx0REVCVUdGU19BREQoZGVudHJ5LCB1c2VyX3Bvd2VyX2xldmVsKTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9kcml2ZXItb3BzLmg9MTI5Mz1zdGF0aWMgaW5saW5lIHUzMiBkcnZfZ2V0X2V4cGVjdGVkX3Rocm91Z2hwdXQoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxuLS1cXG5uZXQvbWFjODAyMTEvZHJpdmVyLW9wcy5oLTEzMDUtXFxubmV0L21hYzgwMjExL2RyaXZlci1vcHMuaDoxMzA2OnN0YXRpYyBpbmxpbmUgaW50IGRydl9nZXRfdHhwb3dlcihzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcXG5uZXQvbWFjODAyMTEvZHJpdmVyLW9wcy5oLTEzMDctXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9kcml2ZXItb3BzLmgtMTMxNC1cXG5uZXQvbWFjODAyMTEvZHJpdmVyLW9wcy5oOjEzMTU6XFx0aWYgKCFsb2NhbC1cXHUwMDNlb3BzLVxcdTAwM2VnZXRfdHhwb3dlcilcXG5uZXQvbWFjODAyMTEvZHJpdmVyLW9wcy5oLTEzMTYtXFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbm5ldC9tYWM4MDIxMS9kcml2ZXItb3BzLmgtMTMxNy1cXG5uZXQvbWFjODAyMTEvZHJpdmVyLW9wcy5oOjEzMTg6XFx0cmV0ID0gbG9jYWwtXFx1MDAzZW9wcy1cXHUwMDNlZ2V0X3R4cG93ZXIoXFx1MDAyNmxvY2FsLVxcdTAwM2VodywgXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYsIGxpbmtfaWQsIGRibSk7XFxubmV0L21hYzgwMjExL2RyaXZlci1vcHMuaDoxMzE5OlxcdHRyYWNlX2Rydl9nZXRfdHhwb3dlcihsb2NhbCwgc2RhdGEsIGxpbmtfaWQsICpkYm0sIHJldCk7XFxubmV0L21hYzgwMjExL2RyaXZlci1vcHMuaC0xMzIwLVxcbi0tXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg9NzU3PXN0cnVjdCBtZXNoX3RhYmxlIHtcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTc2OS0gKiBAcmh0OiBoYXNoIHRhYmxlIGNvbnRhaW5pbmcgc3RydWN0IGllZWU4MDIxMV9tZXNoX2Zhc3RfdHgsIHVzaW5nIHNrYiBEQSBhcyBrZXlcXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaDo3NzA6ICogQHdhbGtfaGVhZDogbGlua2VkIGxpc3QgY29udGFpbmluZyBhbGwgaWVlZTgwMjExX21lc2hfZmFzdF90eCBvYmplY3RzXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtNzcxLSAqIEB3YWxrX2xvY2s6IGxvY2sgcHJvdGVjdGluZyB3YWxrX2hlYWQgYW5kIHJodFxcbi0tXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg9MjIxMD12b2lkIGllZWU4MDIxMV9kZWxfdmlydHVhbF9tb25pdG9yKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKTtcXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC0yMjExLVxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oOjIyMTI6Ym9vbCBfX2llZWU4MDIxMV9yZWNhbGNfdHhwb3dlcihzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluayk7XFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg6MjIxMzp2b2lkIGllZWU4MDIxMV9yZWNhbGNfdHhwb3dlcihzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluayxcXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC0yMjE0LVxcdFxcdFxcdCAgICAgIGJvb2wgdXBkYXRlX2Jzcyk7XFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYy00MS0gKiBBcyBhIGNvbnNlcXVlbmNlLCByZWFkcyAodHJhdmVyc2Fscykgb2YgdGhlIGxpc3QgY2FuIGJlIHByb3RlY3RlZFxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjQyOiAqIGJ5IGVpdGhlciB0aGUgUlROTCwgdGhlIHdpcGh5IG11dGV4LCB0aGUgaWZsaXN0X210eCBvciBSQ1UuXFxubmV0L21hYzgwMjExL2lmYWNlLmMtNDMtICovXFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYz00NT1zdGF0aWMgdm9pZCBpZWVlODAyMTFfaWZhY2Vfd29yayhzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lwaHlfd29yayAqd29yayk7XFxubmV0L21hYzgwMjExL2lmYWNlLmMtNDYtXFxubmV0L21hYzgwMjExL2lmYWNlLmM6NDc6Ym9vbCBfX2llZWU4MDIxMV9yZWNhbGNfdHhwb3dlcihzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluaylcXG5uZXQvbWFjODAyMTEvaWZhY2UuYy00OC17XFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYy02Ny1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYzo2ODpcXHRpZiAocG93ZXIgIT0gbGluay1cXHUwMDNlY29uZi1cXHUwMDNldHhwb3dlcikge1xcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjY5OlxcdFxcdGxpbmstXFx1MDAzZWNvbmYtXFx1MDAzZXR4cG93ZXIgPSBwb3dlcjtcXG5uZXQvbWFjODAyMTEvaWZhY2UuYy03MC1cXHRcXHRyZXR1cm4gdHJ1ZTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTc1LVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjc2OnZvaWQgaWVlZTgwMjExX3JlY2FsY190eHBvd2VyKHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rLFxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTc3LVxcdFxcdFxcdCAgICAgIGJvb2wgdXBkYXRlX2JzcylcXG5uZXQvbWFjODAyMTEvaWZhY2UuYy03OC17XFxubmV0L21hYzgwMjExL2lmYWNlLmM6Nzk6XFx0aWYgKF9faWVlZTgwMjExX3JlY2FsY190eHBvd2VyKGxpbmspIHx8XFxubmV0L21hYzgwMjExL2lmYWNlLmMtODAtXFx0ICAgICh1cGRhdGVfYnNzIFxcdTAwMjZcXHUwMDI2IGllZWU4MDIxMV9zZGF0YV9ydW5uaW5nKGxpbmstXFx1MDAzZXNkYXRhKSkpXFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYz0xODc4PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9zZXR1cF9zZGF0YShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTE4OTctXFx0c2RhdGEtXFx1MDAzZXZpZi5jZmcuaWRsZSA9IHRydWU7XFxubmV0L21hYzgwMjExL2lmYWNlLmM6MTg5ODpcXHRzZGF0YS1cXHUwMDNldmlmLmJzc19jb25mLnR4cG93ZXIgPSBJTlRfTUlOOyAvKiB1bnNldCAqL1xcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTE4OTktXFxuLS1cXG5uZXQvbWFjODAyMTEva2V5LmM9NTk2PWllZWU4MDIxMV9rZXlfYWxsb2ModTMyIGNpcGhlciwgaW50IGlkeCwgc2l6ZV90IGtleV9sZW4sXFxuLS1cXG5uZXQvbWFjODAyMTEva2V5LmMtNjM5LVxcdFxcdH1cXG5uZXQvbWFjODAyMTEva2V5LmM6NjQwOlxcdFxcdHNwaW5fbG9ja19pbml0KFxcdTAwMjZrZXktXFx1MDAzZXUudGtpcC50eGxvY2spO1xcbm5ldC9tYWM4MDIxMS9rZXkuYy02NDEtXFx0XFx0YnJlYWs7XFxuLS1cXG5uZXQvbWFjODAyMTEva2V5Lmg9NTk9c3RydWN0IGllZWU4MDIxMV9rZXkge1xcbi0tXFxubmV0L21hYzgwMjExL2tleS5oLTcyLVxcdFxcdFxcdC8qIHByb3RlY3RzIHR4IGNvbnRleHQgKi9cXG5uZXQvbWFjODAyMTEva2V5Lmg6NzM6XFx0XFx0XFx0c3BpbmxvY2tfdCB0eGxvY2s7XFxubmV0L21hYzgwMjExL2tleS5oLTc0LVxcbi0tXFxubmV0L21hYzgwMjExL2xpbmsuYz05NT12b2lkIGllZWU4MDIxMV9saW5rX2luaXQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvbGluay5jLTEyNy1cXHRsaW5rLVxcdTAwM2V1c2VyX3Bvd2VyX2xldmVsID0gc2RhdGEtXFx1MDAzZWxvY2FsLVxcdTAwM2V1c2VyX3Bvd2VyX2xldmVsO1xcbm5ldC9tYWM4MDIxMS9saW5rLmM6MTI4OlxcdGxpbmtfY29uZi1cXHUwMDNldHhwb3dlciA9IElOVF9NSU47XFxubmV0L21hYzgwMjExL2xpbmsuYy0xMjktXFxuLS1cXG5uZXQvbWFjODAyMTEvbWFpbi5jPTk2PXN0YXRpYyB1MzIgaWVlZTgwMjExX2NhbGNfaHdfY29uZl9jaGFuKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbi0tXFxubmV0L21hYzgwMjExL21haW4uYy0xNzgtXFx0XFx0XFx0Y29udGludWU7XFxubmV0L21hYzgwMjExL21haW4uYzoxNzk6XFx0XFx0aWYgKHNkYXRhLVxcdTAwM2V2aWYuYnNzX2NvbmYudHhwb3dlciA9PSBJTlRfTUlOKVxcbm5ldC9tYWM4MDIxMS9tYWluLmMtMTgwLVxcdFxcdFxcdGNvbnRpbnVlO1xcbm5ldC9tYWM4MDIxMS9tYWluLmM6MTgxOlxcdFxcdHBvd2VyID0gbWluKHBvd2VyLCBzZGF0YS1cXHUwMDNldmlmLmJzc19jb25mLnR4cG93ZXIpO1xcbm5ldC9tYWM4MDIxMS9tYWluLmMtMTgyLVxcdH1cXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM9MzY3Nz1zdGF0aWMgdTY0IGllZWU4MDIxMV9oYW5kbGVfcHdyX2NvbnN0cihzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluayxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMzczOC1cXHRsaW5rLVxcdTAwM2VhcF9wb3dlcl9sZXZlbCA9IG5ld19hcF9sZXZlbDtcXG5uZXQvbWFjODAyMTEvbWxtZS5jOjM3Mzk6XFx0aWYgKF9faWVlZTgwMjExX3JlY2FsY190eHBvd2VyKGxpbmspKVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMzc0MC1cXHRcXHRyZXR1cm4gQlNTX0NIQU5HRURfVFhQT1dFUjtcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jPTM3ODA9aWVlZTgwMjExX3N0YV9jdXJyZW50X2J3X3J4X2Zyb21fc3RhKHN0cnVjdCBsaW5rX3N0YV9pbmZvICpsaW5rX3N0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTM3OTAtXFx0ICogYXQgYSBoaWdoZXIgYmFuZHdpZHRoIGZpcnN0IHdoaWxlIHJlZHVjaW5nIGJhbmR3aWR0aCwgYW5kXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM6Mzc5MTpcXHQgKiBjaGFuZ2UgdGhlIGNoYW5jdHggb25seSBhZnRlciB0aGUgcGVlciBhY2NlcHRzLCBldGMuKVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTM3OTItXFx0ICovXFxuLS1cXG5uZXQvbWFjODAyMTEvdGtpcC5jPTE1Mj1zdGF0aWMgdm9pZCBpZWVlODAyMTFfY29tcHV0ZV90a2lwX3AxayhzdHJ1Y3QgaWVlZTgwMjExX2tleSAqa2V5LCB1MzIgaXYzMilcXG4tLVxcbm5ldC9tYWM4MDIxMS90a2lwLmMtMTU3LVxcbm5ldC9tYWM4MDIxMS90a2lwLmM6MTU4OlxcdGxvY2tkZXBfYXNzZXJ0X2hlbGQoXFx1MDAyNmtleS1cXHUwMDNldS50a2lwLnR4bG9jayk7XFxubmV0L21hYzgwMjExL3RraXAuYy0xNTktXFxuLS1cXG5uZXQvbWFjODAyMTEvdGtpcC5jPTE3MT12b2lkIGllZWU4MDIxMV9nZXRfdGtpcF9wMWtfaXYoc3RydWN0IGllZWU4MDIxMV9rZXlfY29uZiAqa2V5Y29uZixcXG4tLVxcbm5ldC9tYWM4MDIxMS90a2lwLmMtMTc3LVxcbm5ldC9tYWM4MDIxMS90a2lwLmM6MTc4OlxcdHNwaW5fbG9ja19iaChcXHUwMDI2a2V5LVxcdTAwM2V1LnRraXAudHhsb2NrKTtcXG5uZXQvbWFjODAyMTEvdGtpcC5jLTE3OS1cXHRpZWVlODAyMTFfY29tcHV0ZV90a2lwX3AxayhrZXksIGl2MzIpO1xcbm5ldC9tYWM4MDIxMS90a2lwLmMtMTgwLVxcdG1lbWNweShwMWssIGN0eC1cXHUwMDNlcDFrLCBzaXplb2YoY3R4LVxcdTAwM2VwMWspKTtcXG5uZXQvbWFjODAyMTEvdGtpcC5jOjE4MTpcXHRzcGluX3VubG9ja19iaChcXHUwMDI2a2V5LVxcdTAwM2V1LnRraXAudHhsb2NrKTtcXG5uZXQvbWFjODAyMTEvdGtpcC5jLTE4Mi19XFxuLS1cXG5uZXQvbWFjODAyMTEvdGtpcC5jPTE5Nj12b2lkIGllZWU4MDIxMV9nZXRfdGtpcF9wMmsoc3RydWN0IGllZWU4MDIxMV9rZXlfY29uZiAqa2V5Y29uZixcXG4tLVxcbm5ldC9tYWM4MDIxMS90a2lwLmMtMjA3LVxcbm5ldC9tYWM4MDIxMS90a2lwLmM6MjA4OlxcdHNwaW5fbG9jayhcXHUwMDI2a2V5LVxcdTAwM2V1LnRraXAudHhsb2NrKTtcXG5uZXQvbWFjODAyMTEvdGtpcC5jLTIwOS1cXHRpZWVlODAyMTFfY29tcHV0ZV90a2lwX3AxayhrZXksIGl2MzIpO1xcbm5ldC9tYWM4MDIxMS90a2lwLmMtMjEwLVxcdHRraXBfbWl4aW5nX3BoYXNlMih0aywgY3R4LCBpdjE2LCBwMmspO1xcbm5ldC9tYWM4MDIxMS90a2lwLmM6MjExOlxcdHNwaW5fdW5sb2NrKFxcdTAwMjZrZXktXFx1MDAzZXUudGtpcC50eGxvY2spO1xcbm5ldC9tYWM4MDIxMS90a2lwLmMtMjEyLX1cXG4tLVxcbm5ldC9tYWM4MDIxMS90cmFjZS5oPTQ3MT1UUkFDRV9FVkVOVChkcnZfbGlua19pbmZvX2NoYW5nZWQsXFxuLS1cXG5uZXQvbWFjODAyMTEvdHJhY2UuaC01MDMtXFx0XFx0X19maWVsZChib29sLCBoaWRkZW5fc3NpZClcXG5uZXQvbWFjODAyMTEvdHJhY2UuaDo1MDQ6XFx0XFx0X19maWVsZChpbnQsIHR4cG93ZXIpXFxubmV0L21hYzgwMjExL3RyYWNlLmgtNTA1LVxcdFxcdF9fZmllbGQodTgsIHAycF9vcHBwc19jdHdpbmRvdylcXG4tLVxcbm5ldC9tYWM4MDIxMS90cmFjZS5oLTUzMy1cXHRcXHRfX2VudHJ5LVxcdTAwM2VoaWRkZW5fc3NpZCA9IGxpbmtfY29uZi1cXHUwMDNlaGlkZGVuX3NzaWQ7XFxubmV0L21hYzgwMjExL3RyYWNlLmg6NTM0OlxcdFxcdF9fZW50cnktXFx1MDAzZXR4cG93ZXIgPSBsaW5rX2NvbmYtXFx1MDAzZXR4cG93ZXI7XFxubmV0L21hYzgwMjExL3RyYWNlLmgtNTM1LVxcdFxcdF9fZW50cnktXFx1MDAzZXAycF9vcHBwc19jdHdpbmRvdyA9IGxpbmtfY29uZi1cXHUwMDNlcDJwX25vYV9hdHRyLm9wcHBzX2N0d2luZG93O1xcbi0tXFxubmV0L21hYzgwMjExL3RyYWNlLmg9MjIyND1ERUZJTkVfRVZFTlQoY2hhbnN3aXRjaF9ldnQsIGRydl9jaGFubmVsX3N3aXRjaF9yeF9iZWFjb24sXFxuLS1cXG5uZXQvbWFjODAyMTEvdHJhY2UuaC0yMjMwLVxcbm5ldC9tYWM4MDIxMS90cmFjZS5oOjIyMzE6VFJBQ0VfRVZFTlQoZHJ2X2dldF90eHBvd2VyLFxcbm5ldC9tYWM4MDIxMS90cmFjZS5oLTIyMzItXFx0VFBfUFJPVE8oc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYz00NTE2PWllZWU4MDIxMV9jb252ZXJ0X3RvX3VuaWNhc3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jLTQ1NjUtXFxubmV0L21hYzgwMjExL3R4LmM6NDU2NjpzdGF0aWMgdm9pZCBpZWVlODAyMTFfbWxvX211bHRpY2FzdF90eF9vbmUoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxubmV0L21hYzgwMjExL3R4LmMtNDU2Ny1cXHRcXHRcXHRcXHRcXHQgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MzIgY3RybF9mbGFncyxcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jPTQ1ODA9c3RhdGljIHZvaWQgaWVlZTgwMjExX21sb19tdWx0aWNhc3RfdHgoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jLTQ1OTYtXFx0Zm9yX2VhY2hfc2V0X2JpdChsaW5rLCBcXHUwMDI2bGlua3MsIElFRUU4MDIxMV9NTERfTUFYX05VTV9MSU5LUykge1xcbm5ldC9tYWM4MDIxMS90eC5jOjQ1OTc6XFx0XFx0aWVlZTgwMjExX21sb19tdWx0aWNhc3RfdHhfb25lKHNkYXRhLCBza2IsIGN0cmxfZmxhZ3MsIGxpbmspO1xcbm5ldC9tYWM4MDIxMS90eC5jLTQ1OTgtXFx0XFx0Y3RybF9mbGFncyA9IDA7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE3OjQzOjI3LjA3ODE0NzYxMVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozMjY0MzMwOTI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJ3MgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBhZnRlciByZXZpZXdpbmcgdGhpcyBjb2RlIGNoYW5nZSwgaGVyZSdzIG15IHF1aWNrIHRha2UuIFRoaXMgcGF0Y2ggaXMgKmRlZmluaXRlbHkqIHdvcnRoIGZ1enppbmcsIHRoYXQncyBhIHNvbGlkIFwidHJ1ZVwiIGZyb20gbWUuIEkndmUgcGlucG9pbnRlZCBhIGNvdXBsZSBvZiBrZXkgZnVuY3Rpb25zIHRvIHRhcmdldDogYGllZWU4MDIxMV9uZXh0X3R4cWAgYW5kIGBpZWVlODAyMTFfdHhxX3NjaGVkdWxlX3N0YXJ0YC4gVGhlc2UgYXJlIHRoZSBmb2NhbCBwb2ludHMsIHRoZSBseW5jaHBpbnMgb2YgdGhpcyBjaGFuZ2UuXG5cbkknbSBzZWVpbmcgbW9kaWZpY2F0aW9ucyB3aXRoaW4gdGhlIHRyYW5zbWl0IHF1ZXVlIHNjaGVkdWxpbmcgc3RhdGUgbG9naWMsIHNwZWNpZmljYWxseSByZWdhcmRpbmcgdGhlIGBzY2hlZHVsZV9vcGVuYCBmbGFnIGFuZCBob3cgcm91bmQgdXBkYXRlcyBhcmUgaGFuZGxlZC4gVGhlIGZ1bmN0aW9uIG5hbWVzIGFsb25lIHRyaWdnZXIgc29tZSB3YXJuaW5nIGJlbGxzLCBJIHRoaW5rIHRoZXJlIGlzIGEgZ29vZCBwb3NzaWJpbGl0eSBvZiBzb21lIGludGVyZXN0aW5nIHN0YXRlIHRyYW5zaXRpb25zIHRvIGV4cGxvcmUuXG5cbkknbSB0aGlua2luZyB0aGlzIGlzIGFsbCBoYXBwZW5pbmcgd2l0aGluIHRoZSBtYWM4MDIxMSB3aXJlbGVzcyBzdWJzeXN0ZW0sIHdoaWNoIGlzIGdvb2QgbmV3cyBmb3IgZnV6emluZy4gV2Uga25vdyBtYWM4MDIxMSBpcyBvZnRlbiBhY2Nlc3NpYmxlIHRocm91Z2ggdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHVzaW5nIHZpcnR1YWwgb3Igc2ltdWxhdGVkIHdpcmVsZXNzIGRyaXZlcnMg4oCTIG1hYzgwMjExX2h3c2ltIGJlaW5nIHRoZSBvYnZpb3VzIGV4YW1wbGUuIFRoZW4geW91IGhhdmUgTmV0bGluayBpbnRlcmZhY2VzIGFzIGFub3RoZXIgdmVyeSB1c2VmdWwgYXR0YWNrIHZlY3Rvciwgc28gdGhhdCBhbGwgbG9va3MgbGlrZSBhIGdyZWF0IHNldCBvZiBvcHRpb25zIHRvIGNvbnNpZGVyIHdoZW4gd2Ugc3RhcnQgdG8gZm9ybSBhIHRlc3QuXG5cblNvLCBJJ20gdGhpbmtpbmcgd2UgY2FuIGNhbGwgdGhpcyBgc2V0LXJlc3VsdHNgLCBhbmQgbW92ZSBmb3J3YXJkIHdpdGggdGhlIHBsYW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyODYwLCJPdXRwdXRUb2tlbnMiOjE1NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxNzo0MzozMC4zNDI0ODMwNzVaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDAwMjk0NDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJDRkc4MDIxMVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImllZWU4MDIxMV9uZXh0X3R4cVwiLFxuICAgIFwiaWVlZTgwMjExX3R4cV9zY2hlZHVsZV9zdGFydFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB0cmFuc21pdCBxdWV1ZSBzY2hlZHVsaW5nIGxvZ2ljIGluIG1hYzgwMjExIChuZXQvbWFjODAyMTEvdHguYyksIGRlY291cGxpbmcgcXVldWUgc2NoZWR1bGUgb3BlbiBzdGF0ZSB0cmFja2luZyBmcm9tIHRoZSBzY2hlZHVsZSByb3VuZCBjb3VudGVyLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGFuZCBleGVjdXRhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB1c2luZyB2aXJ0dWFsIHdpcmVsZXNzIGRyaXZlcnMgKHN1Y2ggYXMgbWFjODAyMTFfaHdzaW0pIGFuZCBzdGFuZGFyZCB3aXJlbGVzcyBuZXRsaW5rL3BhY2tldCBpbnRlcmZhY2VzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJDRkc4MDIxMVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImllZWU4MDIxMV9uZXh0X3R4cVwiLFxuICAgIFwiaWVlZTgwMjExX3R4cV9zY2hlZHVsZV9zdGFydFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB0cmFuc21pdCBxdWV1ZSBzY2hlZHVsaW5nIGxvZ2ljIGluIG1hYzgwMjExIChuZXQvbWFjODAyMTEvdHguYyksIGRlY291cGxpbmcgcXVldWUgc2NoZWR1bGUgb3BlbiBzdGF0ZSB0cmFja2luZyBmcm9tIHRoZSBzY2hlZHVsZSByb3VuZCBjb3VudGVyLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGFuZCBleGVjdXRhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB1c2luZyB2aXJ0dWFsIHdpcmVsZXNzIGRyaXZlcnMgKHN1Y2ggYXMgbWFjODAyMTFfaHdzaW0pIGFuZCBzdGFuZGFyZCB3aXJlbGVzcyBuZXRsaW5rL3BhY2tldCBpbnRlcmZhY2VzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxNzo0MzozMC40ODI1MjE2MDNaIiwiU2VxIjoyMSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxOTU3NjgyNjk3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTc6NDM6MzAuNDgzMDgwNzEzWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6NTE5NTcxMTcxMjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBib29sZWFuIGZpZWxkIGBzY2hlZHVsZV9vcGVuYCB0byBgc3RydWN0IGllZWU4MDIxMV9sb2NhbGAgdG8gZGVjb3VwbGUgdGhlIHNjaGVkdWxpbmcgb3Blbi9jbG9zZWQgc3RhdGUgZnJvbSB0aGUgYHNjaGVkdWxlX3JvdW5kYCBjb3VudGVyIGluIG1hYzgwMjExJ3MgVFggcXVldWUgc2NoZWR1bGluZyBsb2dpYy5cXG5cXG4tIGBzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsYCBpcyBhbGxvY2F0ZWQgdmlhIGBremFsbG9jKClgIGR1cmluZyB3aXBoeSByZWdpc3RyYXRpb24sIGVuc3VyaW5nIGFsbCBmaWVsZHMgaW5jbHVkaW5nIGBzY2hlZHVsZV9vcGVuYCBhcmUgemVyby1pbml0aWFsaXplZC5cXG4tIFRoZSBuZXcgZmllbGQgaXMgb25seSB1c2VkIGludGVybmFsbHkgd2l0aGluIGBuZXQvbWFjODAyMTEvdHguY2AgZm9yIFRYIHF1ZXVlIHNjaGVkdWxpbmcgY29udHJvbCBmbG93IGFuZCBpcyBuZXZlciBjb3BpZWQgdG8gdXNlciBzcGFjZSBvciB1c2VkIGluIGFuIHVuaW5pdGlhbGl6ZWQgc3RhdGUuXFxuLSBObyBuZXcgYnVmZmVycywgc3RhY2sgb2JqZWN0cywgbmV0bGluayBhdHRyaWJ1dGVzLCBpb2N0bHMsIG9yIHVzZXItc3BhY2UgY29waWVzIGFyZSBpbnRyb2R1Y2VkIG9yIG1vZGlmaWVkLlxcblxcbkNvbnNlcXVlbnRseSwgdGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciBpbmZvcm1hdGlvbiBsZWFrcywgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGM3YmZmMWIyNDUzNDI2MzZmZmMwNWI1ZGEzNzRiZDgzZGEyMDEyNzRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIFNlcCA4IDE3OjQyOjUxIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmggYi9uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaFxuaW5kZXggNTNiMGIwOGQzNDU5Ny4uNjUzMTEzNDBkYjQwNiAxMDA2NDRcbi0tLSBhL25ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oXG4rKysgYi9uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaFxuQEAgLTE0NjgsNiArMTQ2OCw3IEBAIHN0cnVjdCBpZWVlODAyMTFfbG9jYWwge1xuIFx0c3BpbmxvY2tfdCBhY3RpdmVfdHhxX2xvY2tbSUVFRTgwMjExX05VTV9BQ1NdO1xuIFx0c3RydWN0IGxpc3RfaGVhZCBhY3RpdmVfdHhxc1tJRUVFODAyMTFfTlVNX0FDU107XG4gXHR1MTYgc2NoZWR1bGVfcm91bmRbSUVFRTgwMjExX05VTV9BQ1NdO1xuK1x0Ym9vbCBzY2hlZHVsZV9vcGVuW0lFRUU4MDIxMV9OVU1fQUNTXTtcbiBcbiBcdC8qIHNlcmlhbGl6ZXMgaWVlZTgwMjExX2hhbmRsZV93YWtlX3R4X3F1ZXVlICovXG4gXHRzcGlubG9ja190IGhhbmRsZV93YWtlX3R4X3F1ZXVlX2xvY2s7XG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL3R4LmMgYi9uZXQvbWFjODAyMTEvdHguY1xuaW5kZXggYzMzMDkyOTYwZGYyNi4uYzY2NWNlZDljMDVjYiAxMDA2NDRcbi0tLSBhL25ldC9tYWM4MDIxMS90eC5jXG4rKysgYi9uZXQvbWFjODAyMTEvdHguY1xuQEAgLTQxMjIsNyArNDEyMiw3IEBAIHN0cnVjdCBpZWVlODAyMTFfdHhxICppZWVlODAyMTFfbmV4dF90eHEoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHU4IGFjKVxuIFxuIFx0c3Bpbl9sb2NrX2JoKFx1MDAyNmxvY2FsLVx1MDAzZWFjdGl2ZV90eHFfbG9ja1thY10pO1xuIFxuLVx0aWYgKCFsb2NhbC1cdTAwM2VzY2hlZHVsZV9yb3VuZFthY10pXG4rXHRpZiAoIWxvY2FsLVx1MDAzZXNjaGVkdWxlX29wZW5bYWNdKVxuIFx0XHRnb3RvIG91dDtcbiBcbiAgYmVnaW46XG5AQCAtNDM0NywxMiArNDM0NywxMiBAQCB2b2lkIGllZWU4MDIxMV90eHFfc2NoZWR1bGVfc3RhcnQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHU4IGFjKVxuIFxuIFx0c3Bpbl9sb2NrX2JoKFx1MDAyNmxvY2FsLVx1MDAzZWFjdGl2ZV90eHFfbG9ja1thY10pO1xuIFxuLVx0aWYgKGllZWU4MDIxMV90eHFfc2NoZWR1bGVfYWlydGltZV9jaGVjayhsb2NhbCwgYWMpKSB7XG4rXHRsb2NhbC1cdTAwM2VzY2hlZHVsZV9vcGVuW2FjXSA9XG4rXHRcdGllZWU4MDIxMV90eHFfc2NoZWR1bGVfYWlydGltZV9jaGVjayhsb2NhbCwgYWMpO1xuK1x0aWYgKGxvY2FsLVx1MDAzZXNjaGVkdWxlX29wZW5bYWNdKSB7XG4gXHRcdGxvY2FsLVx1MDAzZXNjaGVkdWxlX3JvdW5kW2FjXSsrO1xuIFx0XHRpZiAoIWxvY2FsLVx1MDAzZXNjaGVkdWxlX3JvdW5kW2FjXSlcbiBcdFx0XHRsb2NhbC1cdTAwM2VzY2hlZHVsZV9yb3VuZFthY10rKztcbi1cdH0gZWxzZSB7XG4tXHRcdGxvY2FsLVx1MDAzZXNjaGVkdWxlX3JvdW5kW2FjXSA9IDA7XG4gXHR9XG4gXG4gXHRzcGluX3VubG9ja19iaChcdTAwMjZsb2NhbC1cdTAwM2VhY3RpdmVfdHhxX2xvY2tbYWNdKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE3OjQzOjMwLjQ4MzA4MTk3M1oiLCJTZXEiOjIzLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMDgwODQwNjY0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBhdGNoJ3MgSW1wYWN0KipcblxuT2theSwgbGV0J3MgZGl2ZSBpbi4gTXkgZmlyc3Qgc3RlcCBpcyBhbHdheXMgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBjaGFuZ2VzLiBUaGUgcGF0Y2ggYWZmZWN0cyBgbmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmhgIGFuZCBgbmV0L21hYzgwMjExL3R4LmNgLCBzbyBpdCdzIGxpa2VseSB0b3VjaGluZyBpbnRlcm5hbCBkYXRhIHN0cnVjdHVyZXMgYW5kIHRoZSB0cmFuc21pdCBwYXRoIHdpdGhpbiB0aGUgbWFjODAyMTEgc3RhY2suIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGVzZSBmaWxlcyBpbiB0aGUgYnJvYWRlciBjb250ZXh0LlxuXG5Ob3csIEknbGwgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBlZmZlY3RzLiBJJ20gZ29pbmcgdG8gbG9vayBhdCBob3cgYHN0cnVjdCBpZWVlODAyMTFfbG9jYWxgIGlzIGFsbG9jYXRlZCBhbmQgaW5pdGlhbGl6ZWQsIHNpbmNlIHRoYXQncyBhIGNvcmUgc3RydWN0dXJlLCBhbmQgYWxzbyB0cmFjayBkb3duIGhvdyBgc2NoZWR1bGVfb3BlbmAgaXMgdXNlZDsgdGhlc2UgYXJlIG9mdGVuIGdvb2QgaW5kaWNhdG9ycyBvZiB3aGVyZSBhIHN1YnRsZSBjaGFuZ2UgbGlrZSB0aGlzIG1pZ2h0IGhhdmUgdGhlIGxhcmdlc3QgcmlwcGxlIGVmZmVjdC4gSSdsbCBwcm9iYWJseSBkbyBhIHF1aWNrIGBncmVwYCBmb3IgdGhvc2UgdGVybXMgYWNyb3NzIHRoZSByZWxldmFudCBzb3VyY2UgdHJlZSwgb3IgSSBtaWdodCBzaW1wbHkgcmVhZCB0aGUgZmlsZXMgZGlyZWN0bHkgaWYgdGhlIGNvZGViYXNlIGlzIHJlbGF0aXZlbHkgc21hbGwsIG9yIGlmIHRoZSBzZWFyY2ggdHVybnMgdXAgdG9vIG1hbnkgZmFsc2UgcG9zaXRpdmVzLiBJdCdzIHRpbWUgdG8gZGlnIGludG8gdGhlIGRldGFpbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2MTEsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE3OjQzOjUxLjI5MTQ5MzEyNloiLCJTZXEiOjI0LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODMwNTkxNDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2NoZWR1bGVfcm91bmRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L21hYzgwMjExXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oPTk2Mz1lbnVtIHR4cV9pbmZvX2ZsYWdzIHtcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTk3Ny0gKiBAc2NoZWR1bGVfb3JkZXI6IHVzZWQgd2l0aCBpZWVlODAyMTFfbG9jYWwtXFx1MDAzZWFjdGl2ZV90eHFzXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg6OTc4OiAqIEBzY2hlZHVsZV9yb3VuZDogY291bnRlciB0byBwcmV2ZW50IGluZmluaXRlIGxvb3BzIG9uIFRYUSBzY2hlZHVsaW5nXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtOTc5LSAqIEBmbGFnczogVFhRIGZsYWdzIGZyb20gXFx1MDAyNmVudW0gdHhxX2luZm9fZmxhZ3NcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oPTk4Mj1zdHJ1Y3QgdHhxX2luZm8ge1xcbi0tXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtOTg2LVxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oOjk4NzpcXHR1MTYgc2NoZWR1bGVfcm91bmQ7XFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtOTg4LVxcdHN0cnVjdCBsaXN0X2hlYWQgc2NoZWR1bGVfb3JkZXI7XFxuLS1cXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaD0xNDU3PXN0cnVjdCBpZWVlODAyMTFfbG9jYWwge1xcbi0tXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMTQ2OS1cXHRzdHJ1Y3QgbGlzdF9oZWFkIGFjdGl2ZV90eHFzW0lFRUU4MDIxMV9OVU1fQUNTXTtcXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaDoxNDcwOlxcdHUxNiBzY2hlZHVsZV9yb3VuZFtJRUVFODAyMTFfTlVNX0FDU107XFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMTQ3MS1cXHRib29sIHNjaGVkdWxlX29wZW5bSUVFRTgwMjExX05VTV9BQ1NdO1xcbi0tXFxubmV0L21hYzgwMjExL3R4LmM9NDExNT1zdHJ1Y3QgaWVlZTgwMjExX3R4cSAqaWVlZTgwMjExX25leHRfdHhxKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCB1OCBhYylcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jLTQxNjYtXFxubmV0L21hYzgwMjExL3R4LmM6NDE2NzpcXHRpZiAodHhxaS1cXHUwMDNlc2NoZWR1bGVfcm91bmQgPT0gbG9jYWwtXFx1MDAzZXNjaGVkdWxlX3JvdW5kW2FjXSlcXG5uZXQvbWFjODAyMTEvdHguYy00MTY4LVxcdFxcdGdvdG8gb3V0O1xcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtNDE3MC1cXHRsaXN0X2RlbF9pbml0KFxcdTAwMjZ0eHFpLVxcdTAwM2VzY2hlZHVsZV9vcmRlcik7XFxubmV0L21hYzgwMjExL3R4LmM6NDE3MTpcXHR0eHFpLVxcdTAwM2VzY2hlZHVsZV9yb3VuZCA9IGxvY2FsLVxcdTAwM2VzY2hlZHVsZV9yb3VuZFthY107XFxubmV0L21hYzgwMjExL3R4LmMtNDE3Mi1cXHRyZXQgPSBcXHUwMDI2dHhxaS1cXHUwMDNldHhxO1xcbi0tXFxubmV0L21hYzgwMjExL3R4LmM9NDM0ND12b2lkIGllZWU4MDIxMV90eHFfc2NoZWR1bGVfc3RhcnQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHU4IGFjKVxcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtNDM1Mi1cXHRpZiAobG9jYWwtXFx1MDAzZXNjaGVkdWxlX29wZW5bYWNdKSB7XFxubmV0L21hYzgwMjExL3R4LmM6NDM1MzpcXHRcXHRsb2NhbC1cXHUwMDNlc2NoZWR1bGVfcm91bmRbYWNdKys7XFxubmV0L21hYzgwMjExL3R4LmM6NDM1NDpcXHRcXHRpZiAoIWxvY2FsLVxcdTAwM2VzY2hlZHVsZV9yb3VuZFthY10pXFxubmV0L21hYzgwMjExL3R4LmM6NDM1NTpcXHRcXHRcXHRsb2NhbC1cXHUwMDNlc2NoZWR1bGVfcm91bmRbYWNdKys7XFxubmV0L21hYzgwMjExL3R4LmMtNDM1Ni1cXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE3OjQzOjUxLjM3NDU1Njc3NFoiLCJTZXEiOjI1LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxODEzMzg2Njc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipQZWVyaW5nIGludG8gdGhlIElFRUUgODAyLjExIExvY2FsIFN0cnVjdHVyZSoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgbGlmZWN5Y2xlIG9mIHRoZSBgc3RydWN0IGllZWU4MDIxMV9sb2NhbGAuIE15IGltbWVkaWF0ZSBnb2FsIGlzIHRvIHRyYWNlIGl0cyBhbGxvY2F0aW9uIGFuZCBzdWJzZXF1ZW50IGluaXRpYWxpemF0aW9uLiBUaGF0J3MgdXN1YWxseSB0aGUgY3J1eCBvZiB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgaGFyZHdhcmUgYWJzdHJhY3Rpb24gbGF5ZXIgZm9yIGFuIDgwMi4xMSBkZXZpY2UgY29tZXMgdG8gbGlmZS5cblxuTXkgaW5pdGlhbCBhcHByb2FjaCBpcyB0byBnbyBzdHJhaWdodCB0byB0aGUgZnVuY3Rpb25zIHRoYXQgbGlrZWx5IGhhbmRsZSB0aGlzLiBJJ2xsIHNlYXJjaCBmb3IgY2FsbHMgdG8gZnVuY3Rpb25zIGxpa2UgYGllZWU4MDIxMV9hbGxvY19od2AsIGBhbGxvY19pZWVlODAyMTFgLCBvciBhbnl0aGluZyB3aXRoIGEgc2ltaWxhciBuYW1pbmcgY29udmVudGlvbi4gVGhhdCBzaG91bGQgZ2V0IG1lIHRvIHRoZSByaWdodCBzcG90cyBxdWlja2x5LiBIb3BlZnVsbHksIHRoZXNlIGZ1bmN0aW9ucyBoYXZlIGVub3VnaCBjbHVlcyBidWlsdCBpbnRvIHRoZWlyIG5hbWVzIHRvIGZvbGxvdyB0aGUgdGhyZWFkIHRvIHRoZSByaWdodCBkYXRhIHN0cnVjdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzkwNiwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE3OjQzOjUzLjE4Nzk0NjA2M1oiLCJTZXEiOjI2LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTE3ODIwOTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RydWN0IGllZWU4MDIxMV9sb2NhbFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbWFjODAyMTFcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA1MjI3IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5uZXQvbWFjODAyMTEvYWdnLXJ4LmM9NTY9dm9pZCBfX2llZWU4MDIxMV9zdG9wX3J4X2JhX3Nlc3Npb24oc3RydWN0IHN0YV9pbmZvICpzdGEsIHUxNiB0aWQsXFxuLS1cXG5uZXQvbWFjODAyMTEvYWdnLXJ4LmMtNTgte1xcbm5ldC9tYWM4MDIxMS9hZ2ctcnguYzo1OTpcXHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHN0YS1cXHUwMDNlbG9jYWw7XFxubmV0L21hYzgwMjExL2FnZy1yeC5jLTYwLVxcdHN0cnVjdCB0aWRfYW1wZHVfcnggKnRpZF9yeDtcXG4tLVxcbm5ldC9tYWM4MDIxMS9hZ2ctcnguYz0yMzI9c3RhdGljIHZvaWQgaWVlZTgwMjExX3NlbmRfYWRkYmFfcmVzcChzdHJ1Y3Qgc3RhX2luZm8gKnN0YSwgdTggKmRhLCB1MTYgdGlkLFxcbi0tXFxubmV0L21hYzgwMjExL2FnZy1yeC5jLTIzNy1cXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IHN0YS1cXHUwMDNlc2RhdGE7XFxubmV0L21hYzgwMjExL2FnZy1yeC5jOjIzODpcXHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHNkYXRhLVxcdTAwM2Vsb2NhbDtcXG5uZXQvbWFjODAyMTEvYWdnLXJ4LmMtMjM5LVxcdHN0cnVjdCBza19idWZmICpza2I7XFxuLS1cXG5uZXQvbWFjODAyMTEvYWdnLXJ4LmM9Mjc2PXZvaWQgX19pZWVlODAyMTFfc3RhcnRfcnhfYmFfc2Vzc2lvbihzdHJ1Y3Qgc3RhX2luZm8gKnN0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9hZ2ctcnguYy0yODIte1xcbm5ldC9tYWM4MDIxMS9hZ2ctcnguYzoyODM6XFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzdGEtXFx1MDAzZXNkYXRhLVxcdTAwM2Vsb2NhbDtcXG5uZXQvbWFjODAyMTEvYWdnLXJ4LmMtMjg0LVxcdHN0cnVjdCB0aWRfYW1wZHVfcnggKnRpZF9hZ2dfcng7XFxuLS1cXG5uZXQvbWFjODAyMTEvYWdnLXJ4LmMtNDcxLVxcbm5ldC9tYWM4MDIxMS9hZ2ctcnguYzo0NzI6dm9pZCBpZWVlODAyMTFfcHJvY2Vzc19hZGRiYV9yZXF1ZXN0KHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbm5ldC9tYWM4MDIxMS9hZ2ctcnguYy00NzMtXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3Qgc3RhX2luZm8gKnN0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYz02MT1zdGF0aWMgdm9pZCBpZWVlODAyMTFfc2VuZF9hZGRiYV9yZXF1ZXN0KHN0cnVjdCBzdGFfaW5mbyAqc3RhLCB1MTYgdGlkLFxcbi0tXFxubmV0L21hYzgwMjExL2FnZy10eC5jLTY1LVxcdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gc3RhLVxcdTAwM2VzZGF0YTtcXG5uZXQvbWFjODAyMTEvYWdnLXR4LmM6NjY6XFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cXHUwMDNlbG9jYWw7XFxubmV0L21hYzgwMjExL2FnZy10eC5jLTY3LVxcdHN0cnVjdCBza19idWZmICpza2I7XFxuLS1cXG5uZXQvbWFjODAyMTEvYWdnLXR4LmM9MTA0PXZvaWQgaWVlZTgwMjExX3NlbmRfYmFyKHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsIHU4ICpyYSwgdTE2IHRpZCwgdTE2IHNzbilcXG4tLVxcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYy0xMDYtXFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSB2aWZfdG9fc2RhdGEodmlmKTtcXG5uZXQvbWFjODAyMTEvYWdnLXR4LmM6MTA3OlxcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gc2RhdGEtXFx1MDAzZWxvY2FsO1xcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYy0xMDgtXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4tLVxcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYz0yMzM9aWVlZTgwMjExX2FnZ19zcGxpY2VfcGFja2V0cyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYy0yMzUte1xcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYzoyMzY6XFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cXHUwMDNlbG9jYWw7XFxubmV0L21hYzgwMjExL2FnZy10eC5jLTIzNy1cXHRpbnQgcXVldWUgPSBzZGF0YS1cXHUwMDNldmlmLmh3X3F1ZXVlW2llZWU4MDIxMV9hY19mcm9tX3RpZCh0aWQpXTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYz0yOTE9aW50IF9faWVlZTgwMjExX3N0b3BfdHhfYmFfc2Vzc2lvbihzdHJ1Y3Qgc3RhX2luZm8gKnN0YSwgdTE2IHRpZCxcXG4tLVxcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYy0yOTMte1xcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYzoyOTQ6XFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzdGEtXFx1MDAzZWxvY2FsO1xcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYy0yOTUtXFx0c3RydWN0IHRpZF9hbXBkdV90eCAqdGlkX3R4O1xcbi0tXFxubmV0L21hYzgwMjExL2FnZy10eC5jPTQ0NT1zdGF0aWMgdm9pZCBpZWVlODAyMTFfc2VuZF9hZGRiYV93aXRoX3RpbWVvdXQoc3RydWN0IHN0YV9pbmZvICpzdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvYWdnLXR4LmMtNDQ4LVxcdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gc3RhLVxcdTAwM2VzZGF0YTtcXG5uZXQvbWFjODAyMTEvYWdnLXR4LmM6NDQ5OlxcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gc3RhLVxcdTAwM2Vsb2NhbDtcXG5uZXQvbWFjODAyMTEvYWdnLXR4LmMtNDUwLVxcdHU4IHRpZCA9IHRpZF90eC1cXHUwMDNldGlkO1xcbi0tXFxubmV0L21hYzgwMjExL2FnZy10eC5jPTQ5ND12b2lkIGllZWU4MDIxMV90eF9iYV9zZXNzaW9uX2hhbmRsZV9zdGFydChzdHJ1Y3Qgc3RhX2luZm8gKnN0YSwgaW50IHRpZClcXG4tLVxcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYy00OTYtXFx0c3RydWN0IHRpZF9hbXBkdV90eCAqdGlkX3R4O1xcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYzo0OTc6XFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzdGEtXFx1MDAzZWxvY2FsO1xcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYy00OTgtXFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBzdGEtXFx1MDAzZXNkYXRhO1xcbi0tXFxubmV0L21hYzgwMjExL2FnZy10eC5jPTYwMz1pbnQgaWVlZTgwMjExX3N0YXJ0X3R4X2JhX3Nlc3Npb24oc3RydWN0IGllZWU4MDIxMV9zdGEgKnB1YnN0YSwgdTE2IHRpZCxcXG4tLVxcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYy02MDctXFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBzdGEtXFx1MDAzZXNkYXRhO1xcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYzo2MDg6XFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cXHUwMDNlbG9jYWw7XFxubmV0L21hYzgwMjExL2FnZy10eC5jLTYwOS1cXHRzdHJ1Y3QgdGlkX2FtcGR1X3R4ICp0aWRfdHg7XFxuLS1cXG5uZXQvbWFjODAyMTEvYWdnLXR4LmM9NzU0PUVYUE9SVF9TWU1CT0woaWVlZTgwMjExX3N0YXJ0X3R4X2JhX3Nlc3Npb24pO1xcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYy03NTUtXFxubmV0L21hYzgwMjExL2FnZy10eC5jOjc1NjpzdGF0aWMgdm9pZCBpZWVlODAyMTFfYWdnX3R4X29wZXJhdGlvbmFsKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYy03NTctXFx0XFx0XFx0XFx0XFx0IHN0cnVjdCBzdGFfaW5mbyAqc3RhLCB1MTYgdGlkKVxcbi0tXFxubmV0L21hYzgwMjExL2FnZy10eC5jPTc5OT12b2lkIGllZWU4MDIxMV9zdGFydF90eF9iYV9jYihzdHJ1Y3Qgc3RhX2luZm8gKnN0YSwgaW50IHRpZCxcXG4tLVxcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYy04MDItXFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBzdGEtXFx1MDAzZXNkYXRhO1xcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYzo4MDM6XFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cXHUwMDNlbG9jYWw7XFxubmV0L21hYzgwMjExL2FnZy10eC5jLTgwNC1cXG4tLVxcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYz04NTA9dm9pZCBpZWVlODAyMTFfc3RhcnRfdHhfYmFfY2JfaXJxc2FmZShzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbi0tXFxubmV0L21hYzgwMjExL2FnZy10eC5jLTg1My1cXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IHZpZl90b19zZGF0YSh2aWYpO1xcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYzo4NTQ6XFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cXHUwMDNlbG9jYWw7XFxubmV0L21hYzgwMjExL2FnZy10eC5jLTg1NS1cXHRzdHJ1Y3Qgc3RhX2luZm8gKnN0YTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYz04NzI9aW50IGllZWU4MDIxMV9zdG9wX3R4X2JhX3Nlc3Npb24oc3RydWN0IGllZWU4MDIxMV9zdGEgKnB1YnN0YSwgdTE2IHRpZClcXG4tLVxcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYy04NzUtXFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBzdGEtXFx1MDAzZXNkYXRhO1xcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYzo4NzY6XFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cXHUwMDNlbG9jYWw7XFxubmV0L21hYzgwMjExL2FnZy10eC5jLTg3Ny1cXHRzdHJ1Y3QgdGlkX2FtcGR1X3R4ICp0aWRfdHg7XFxuLS1cXG5uZXQvbWFjODAyMTEvYWdnLXR4LmM9OTU0PXZvaWQgaWVlZTgwMjExX3N0b3BfdHhfYmFfY2JfaXJxc2FmZShzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbi0tXFxubmV0L21hYzgwMjExL2FnZy10eC5jLTk1Ny1cXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IHZpZl90b19zZGF0YSh2aWYpO1xcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYzo5NTg6XFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cXHUwMDNlbG9jYWw7XFxubmV0L21hYzgwMjExL2FnZy10eC5jLTk1OS1cXHRzdHJ1Y3Qgc3RhX2luZm8gKnN0YTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYz05NzQ9RVhQT1JUX1NZTUJPTChpZWVlODAyMTFfc3RvcF90eF9iYV9jYl9pcnFzYWZlKTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYy05NzYtXFxubmV0L21hYzgwMjExL2FnZy10eC5jOjk3Nzp2b2lkIGllZWU4MDIxMV9wcm9jZXNzX2FkZGJhX3Jlc3Aoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxubmV0L21hYzgwMjExL2FnZy10eC5jLTk3OC1cXHRcXHRcXHRcXHQgIHN0cnVjdCBzdGFfaW5mbyAqc3RhLFxcbi0tXFxubmV0L21hYzgwMjExL2FwLmM9MTQ9aWVlZTgwMjExX3NlbmRfZW1sX29wX21vZGVfbm90aWYoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvYXAuYy0xNy1cXHRpbnQgbGVuID0gSUVFRTgwMjExX01JTl9BQ1RJT05fU0laRShlbWxfb21uKTtcXG5uZXQvbWFjODAyMTEvYXAuYzoxODpcXHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHNkYXRhLVxcdTAwM2Vsb2NhbDtcXG5uZXQvbWFjODAyMTEvYXAuYy0xOS1cXHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQ7XFxuLS1cXG5uZXQvbWFjODAyMTEvYXAuYz01MT1pZWVlODAyMTFfcnhfZW1sX29wX21vZGVfbm90aWYoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvYXAuYy01OC1cXHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQgPSAodm9pZCAqKXNrYi1cXHUwMDNlZGF0YTtcXG5uZXQvbWFjODAyMTEvYXAuYzo1OTpcXHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHNkYXRhLVxcdTAwM2Vsb2NhbDtcXG5uZXQvbWFjODAyMTEvYXAuYy02MC1cXHR1OCBjb250cm9sID0gbWdtdC1cXHUwMDNldS5hY3Rpb24uZW1sX29tbi5jb250cm9sO1xcbi0tXFxubmV0L21hYzgwMjExL2FwLmM9MzI0PXZvaWQgaWVlZTgwMjExX3Vocl9kaXNhYmxlX2RiZV9hbGxfc3RhcyhzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluaylcXG4tLVxcbm5ldC9tYWM4MDIxMS9hcC5jLTMyNi1cXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IGxpbmstXFx1MDAzZXNkYXRhO1xcbm5ldC9tYWM4MDIxMS9hcC5jOjMyNzpcXHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHNkYXRhLVxcdTAwM2Vsb2NhbDtcXG5uZXQvbWFjODAyMTEvYXAuYy0zMjgtXFx0c3RydWN0IGllZWU4MDIxMV9jaGFuY3R4X2NvbmYgKmNoYW5jdHhfY29uZjtcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYz05Nj1zdGF0aWMgaW50IGllZWU4MDIxMV9zZXRfbW9uX29wdGlvbnMoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtOTgte1xcbm5ldC9tYWM4MDIxMS9jZmcuYzo5OTpcXHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHNkYXRhLVxcdTAwM2Vsb2NhbDtcXG5uZXQvbWFjODAyMTEvY2ZnLmMtMTAwLVxcdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKm1vbml0b3Jfc2RhdGEgPSBOVUxMO1xcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jPTIwNj1zdGF0aWMgc3RydWN0IHdpcmVsZXNzX2RldiAqaWVlZTgwMjExX2FkZF9pZmFjZShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTIxMS17XFxubmV0L21hYzgwMjExL2NmZy5jOjIxMjpcXHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHdpcGh5X3ByaXYod2lwaHkpO1xcbm5ldC9tYWM4MDIxMS9jZmcuYy0yMTMtXFx0c3RydWN0IHdpcmVsZXNzX2RldiAqd2RldjtcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYz0yNTk9c3RhdGljIGludCBpZWVlODAyMTFfY2hhbmdlX2lmYWNlKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjY0LVxcdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gSUVFRTgwMjExX0RFVl9UT19TVUJfSUYoZGV2KTtcXG5uZXQvbWFjODAyMTEvY2ZnLmM6MjY1OlxcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gc2RhdGEtXFx1MDAzZWxvY2FsO1xcbm5ldC9tYWM4MDIxMS9jZmcuYy0yNjYtXFx0c3RydWN0IHN0YV9pbmZvICpzdGE7XFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmM9NTg1PXN0YXRpYyBpbnQgaWVlZTgwMjExX3NldF90eChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy01ODcte1xcbm5ldC9tYWM4MDIxMS9jZmcuYzo1ODg6XFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cXHUwMDNlbG9jYWw7XFxubmV0L21hYzgwMjExL2NmZy5jLTU4OS1cXHRzdHJ1Y3QgaWVlZTgwMjExX2tleSAqa2V5O1xcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jPTYxMz1zdGF0aWMgaW50IGllZWU4MDIxMV9hZGRfa2V5KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtNjE5LVxcdFxcdGllZWU4MDIxMV9saW5rX29yX2RlZmxpbmsoc2RhdGEsIGxpbmtfaWQsIGZhbHNlKTtcXG5uZXQvbWFjODAyMTEvY2ZnLmM6NjIwOlxcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gc2RhdGEtXFx1MDAzZWxvY2FsO1xcbm5ldC9tYWM4MDIxMS9jZmcuYy02MjEtXFx0c3RydWN0IHN0YV9pbmZvICpzdGEgPSBOVUxMO1xcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jPTczOT1pZWVlODAyMTFfbG9va3VwX2tleShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSwgaW50IGxpbmtfaWQsXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtNzQxLXtcXG5uZXQvbWFjODAyMTEvY2ZnLmM6NzQyOlxcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsIF9fbWF5YmVfdW51c2VkID0gc2RhdGEtXFx1MDAzZWxvY2FsO1xcbm5ldC9tYWM4MDIxMS9jZmcuYy03NDMtXFx0c3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmsgPSBcXHUwMDI2c2RhdGEtXFx1MDAzZWRlZmxpbms7XFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmM9Nzk3PXN0YXRpYyBpbnQgaWVlZTgwMjExX2RlbF9rZXkoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy04MDEtXFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBJRUVFODAyMTFfV0RFVl9UT19TVUJfSUYod2Rldik7XFxubmV0L21hYzgwMjExL2NmZy5jOjgwMjpcXHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHNkYXRhLVxcdTAwM2Vsb2NhbDtcXG5uZXQvbWFjODAyMTEvY2ZnLmMtODAzLVxcdHN0cnVjdCBpZWVlODAyMTFfa2V5ICprZXk7XFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmM9OTk5PXN0YXRpYyBpbnQgaWVlZTgwMjExX2R1bXBfc3RhdGlvbihzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTEwMDItXFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBJRUVFODAyMTFfV0RFVl9UT19TVUJfSUYod2Rldik7XFxubmV0L21hYzgwMjExL2NmZy5jOjEwMDM6XFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cXHUwMDNlbG9jYWw7XFxubmV0L21hYzgwMjExL2NmZy5jLTEwMDQtXFx0c3RydWN0IHN0YV9pbmZvICpzdGE7XFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmM9MTAyNj1zdGF0aWMgaW50IGllZWU4MDIxMV9kdW1wX3N1cnZleShzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTEwMjgte1xcbm5ldC9tYWM4MDIxMS9jZmcuYzoxMDI5OlxcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gd2Rldl9wcml2KGRldi1cXHUwMDNlaWVlZTgwMjExX3B0cik7XFxubmV0L21hYzgwMjExL2NmZy5jLTEwMzAtXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmM9MTAzND1zdGF0aWMgaW50IGllZWU4MDIxMV9nZXRfc3RhdGlvbihzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTEwMzgtXFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBJRUVFODAyMTFfV0RFVl9UT19TVUJfSUYod2Rldik7XFxubmV0L21hYzgwMjExL2NmZy5jOjEwMzk6XFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cXHUwMDNlbG9jYWw7XFxubmV0L21hYzgwMjExL2NmZy5jLTEwNDAtXFx0c3RydWN0IHN0YV9pbmZvICpzdGE7XFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmM9MTA2MD1zdGF0aWMgaW50IGllZWU4MDIxMV9zZXRfbW9uaXRvcl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtMTA2My17XFxubmV0L21hYzgwMjExL2NmZy5jOjEwNjQ6XFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSB3aXBoeV9wcml2KHdpcGh5KTtcXG5uZXQvbWFjODAyMTEvY2ZnLmMtMTA2NS1cXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYz0xNDI1PXN0YXRpYyB2b2lkIGllZWU4MDIxMV91cGRhdGVfYXBfYmFuZHdpZHRoKHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rLFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTE0Mjcte1xcbm5ldC9tYWM4MDIxMS9jZmcuYzoxNDI4OlxcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gbGluay1cXHUwMDNlc2RhdGEtXFx1MDAzZWxvY2FsO1xcbm5ldC9tYWM4MDIxMS9jZmcuYy0xNDI5LVxcdHN0cnVjdCBpZWVlODAyMTFfY2hhbmN0eF9jb25mICpjaGFuY3R4X2NvbmY7XFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmM9MTYzMT1zdGF0aWMgaW50IGllZWU4MDIxMV9zdGFydF9hcChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTE2MzQtXFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBJRUVFODAyMTFfREVWX1RPX1NVQl9JRihkZXYpO1xcbm5ldC9tYWM4MDIxMS9jZmcuYzoxNjM1OlxcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gc2RhdGEtXFx1MDAzZWxvY2FsO1xcbm5ldC9tYWM4MDIxMS9jZmcuYy0xNjM2LVxcdHN0cnVjdCBiZWFjb25fZGF0YSAqb2xkO1xcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jPTIwMTE9c3RhdGljIGludCBpZWVlODAyMTFfc3RvcF9hcChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTIwMTUtXFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqdmxhbjtcXG5uZXQvbWFjODAyMTEvY2ZnLmM6MjAxNjpcXHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHNkYXRhLVxcdTAwM2Vsb2NhbDtcXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjAxNy1cXHRzdHJ1Y3QgYmVhY29uX2RhdGEgKm9sZF9iZWFjb247XFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjEyOS1cXG5uZXQvbWFjODAyMTEvY2ZnLmM6MjEzMDpzdGF0aWMgaW50IHN0YV9hcHBseV9hdXRoX2ZsYWdzKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbm5ldC9tYWM4MDIxMS9jZmcuYy0yMTMxLVxcdFxcdFxcdFxcdHN0cnVjdCBzdGFfaW5mbyAqc3RhLFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTIxODktXFxubmV0L21hYzgwMjExL2NmZy5jOjIxOTA6c3RhdGljIHZvaWQgc3RhX2FwcGx5X21lc2hfcGFyYW1zKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbm5ldC9tYWM4MDIxMS9jZmcuYy0yMTkxLVxcdFxcdFxcdFxcdCAgc3RydWN0IHN0YV9pbmZvICpzdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmM9MjI1NT1lbnVtIHN0YV9saW5rX2FwcGx5X21vZGUge1xcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTIyNjAtXFxubmV0L21hYzgwMjExL2NmZy5jOjIyNjE6c3RhdGljIGludCBzdGFfbGlua19hcHBseV9wYXJhbWV0ZXJzKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbm5ldC9tYWM4MDIxMS9jZmcuYy0yMjYyLVxcdFxcdFxcdFxcdCAgICAgc3RydWN0IHN0YV9pbmZvICpzdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjQ0OS1cXG5uZXQvbWFjODAyMTEvY2ZnLmM6MjQ1MDpzdGF0aWMgaW50IHN0YV9hcHBseV9wYXJhbWV0ZXJzKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbm5ldC9tYWM4MDIxMS9jZmcuYy0yNDUxLVxcdFxcdFxcdFxcdHN0cnVjdCBzdGFfaW5mbyAqc3RhLFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jPTI2MzQ9c3RhdGljIGludCBpZWVlODAyMTFfYWRkX3N0YXRpb24oc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy0yNjM3LXtcXG5uZXQvbWFjODAyMTEvY2ZnLmM6MjYzODpcXHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHdpcGh5X3ByaXYod2lwaHkpO1xcbm5ldC9tYWM4MDIxMS9jZmcuYy0yNjM5LVxcdHN0cnVjdCBzdGFfaW5mbyAqc3RhO1xcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jPTI3MTQ9c3RhdGljIGludCBpZWVlODAyMTFfZGVsX3N0YXRpb24oc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy0yNzI3LVxcbm5ldC9tYWM4MDIxMS9jZmcuYzoyNzI4OnN0YXRpYyBpbnQgaWVlZTgwMjExX3NldF9zdGFfNGFkZHIoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxubmV0L21hYzgwMjExL2NmZy5jLTI3MjktXFx0XFx0XFx0XFx0ICAgc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmM9Mjc4Nz1zdGF0aWMgaW50IGllZWU4MDIxMV9jaGFuZ2Vfc3RhdGlvbihzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTI3OTEtXFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBJRUVFODAyMTFfV0RFVl9UT19TVUJfSUYod2Rldik7XFxubmV0L21hYzgwMjExL2NmZy5jOjI3OTI6XFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSB3aXBoeV9wcml2KHdpcGh5KTtcXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjc5My1cXHRzdHJ1Y3Qgc3RhX2luZm8gKnN0YTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYz0zNDI3PXN0YXRpYyBpbnQgaWVlZTgwMjExX3NldF90eHFfcGFyYW1zKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtMzQzMC17XFxubmV0L21hYzgwMjExL2NmZy5jOjM0MzE6XFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSB3aXBoeV9wcml2KHdpcGh5KTtcXG5uZXQvbWFjODAyMTEvY2ZnLmMtMzQzMi1cXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IElFRUU4MDIxMV9ERVZfVE9fU1VCX0lGKGRldik7XFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmM9MzU2Nz1pZWVlODAyMTFfc2NoZWRfc2Nhbl9zdG9wKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtMzU2OS17XFxubmV0L21hYzgwMjExL2NmZy5jOjM1NzA6XFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSB3aXBoeV9wcml2KHdpcGh5KTtcXG5uZXQvbWFjODAyMTEvY2ZnLmMtMzU3MS1cXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYz0zNjM5PXN0YXRpYyBpbnQgaWVlZTgwMjExX3NldF93aXBoeV9wYXJhbXMoc3RydWN0IHdpcGh5ICp3aXBoeSwgaW50IHJhZGlvX2lkeCxcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy0zNjQxLXtcXG5uZXQvbWFjODAyMTEvY2ZnLmM6MzY0MjpcXHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHdpcGh5X3ByaXYod2lwaHkpO1xcbm5ldC9tYWM4MDIxMS9jZmcuYy0zNjQzLVxcdGludCBlcnI7XFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmM9MzcwOD1zdGF0aWMgaW50IGllZWU4MDIxMV9zZXRfdHhfcG93ZXIoc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy0zNzExLXtcXG5uZXQvbWFjODAyMTEvY2ZnLmM6MzcxMjpcXHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHdpcGh5X3ByaXYod2lwaHkpO1xcbm5ldC9tYWM4MDIxMS9jZmcuYy0zNzEzLVxcdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhO1xcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jPTM4MzU9c3RhdGljIGludCBpZWVlODAyMTFfZ2V0X3R4X3Bvd2VyKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtMzg0MC17XFxubmV0L21hYzgwMjExL2NmZy5jOjM4NDE6XFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSB3aXBoeV9wcml2KHdpcGh5KTtcXG5uZXQvbWFjODAyMTEvY2ZnLmMtMzg0Mi1cXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IElFRUU4MDIxMV9XREVWX1RPX1NVQl9JRih3ZGV2KTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYz0zODY3PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9yZmtpbGxfcG9sbChzdHJ1Y3Qgd2lwaHkgKndpcGh5KVxcbm5ldC9tYWM4MDIxMS9jZmcuYy0zODY4LXtcXG5uZXQvbWFjODAyMTEvY2ZnLmM6Mzg2OTpcXHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHdpcGh5X3ByaXYod2lwaHkpO1xcbm5ldC9tYWM4MDIxMS9jZmcuYy0zODcwLVxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jPTM4NzU9c3RhdGljIGludCBpZWVlODAyMTFfdGVzdG1vZGVfY21kKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtMzg3OC17XFxubmV0L21hYzgwMjExL2NmZy5jOjM4Nzk6XFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSB3aXBoeV9wcml2KHdpcGh5KTtcXG5uZXQvbWFjODAyMTEvY2ZnLmMtMzg4MC1cXHRzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmID0gTlVMTDtcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYz0zODk2PXN0YXRpYyBpbnQgaWVlZTgwMjExX3Rlc3Rtb2RlX2R1bXAoc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy0zOTAwLXtcXG5uZXQvbWFjODAyMTEvY2ZnLmM6MzkwMTpcXHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHdpcGh5X3ByaXYod2lwaHkpO1xcbm5ldC9tYWM4MDIxMS9jZmcuYy0zOTAyLVxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jPTM5ODM9c3RhdGljIGludCBpZWVlODAyMTFfc2V0X3Bvd2VyX21nbXQoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy0zOTg2LVxcdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gSUVFRTgwMjExX0RFVl9UT19TVUJfSUYoZGV2KTtcXG5uZXQvbWFjODAyMTEvY2ZnLmM6Mzk4NzpcXHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHdkZXZfcHJpdihkZXYtXFx1MDAzZWllZWU4MDIxMV9wdHIpO1xcbm5ldC9tYWM4MDIxMS9jZmcuYy0zOTg4LVxcdHVuc2lnbmVkIGludCBsaW5rX2lkO1xcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jPTQxMDM9c3RhdGljIGludCBpZWVlODAyMTFfc2V0X2JpdHJhdGVfbWFzayhzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTQxMDktXFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBJRUVFODAyMTFfREVWX1RPX1NVQl9JRihkZXYpO1xcbm5ldC9tYWM4MDIxMS9jZmcuYzo0MTEwOlxcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gd2Rldl9wcml2KGRldi1cXHUwMDNlaWVlZTgwMjExX3B0cik7XFxubmV0L21hYzgwMjExL2NmZy5jLTQxMTEtXFx0aW50IGksIHJldDtcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYz00MTczPXN0YXRpYyBib29sIGllZWU4MDIxMV9pc19zY2FuX29uZ29pbmcoc3RydWN0IHdpcGh5ICp3aXBoeSxcXG5uZXQvbWFjODAyMTEvY2ZnLmM6NDE3NDpcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcXG5uZXQvbWFjODAyMTEvY2ZnLmMtNDE3NS1cXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgY2ZnODAyMTFfY2hhbl9kZWYgKmNoYW5kZWYpXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmM9NDIxMD1zdGF0aWMgaW50IGllZWU4MDIxMV9zdGFydF9yYWRhcl9kZXRlY3Rpb24oc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy00MjE2LVxcdHN0cnVjdCBpZWVlODAyMTFfY2hhbl9yZXEgY2hhbnJlcSA9IHsgLm9wZXIgPSAqY2hhbmRlZiB9O1xcbm5ldC9tYWM4MDIxMS9jZmcuYzo0MjE3OlxcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gc2RhdGEtXFx1MDAzZWxvY2FsO1xcbm5ldC9tYWM4MDIxMS9jZmcuYy00MjE4LVxcdHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rX2RhdGE7XFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmM9NDI0NT1zdGF0aWMgdm9pZCBpZWVlODAyMTFfZW5kX2NhYyhzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTQyNDgtXFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBJRUVFODAyMTFfREVWX1RPX1NVQl9JRihkZXYpO1xcbm5ldC9tYWM4MDIxMS9jZmcuYzo0MjQ5OlxcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gc2RhdGEtXFx1MDAzZWxvY2FsO1xcbm5ldC9tYWM4MDIxMS9jZmcuYy00MjUwLVxcdHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rX2RhdGE7XFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmM9NDM3NT12b2lkIGllZWU4MDIxMV9jc2FfZmluaXNoKHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsIHVuc2lnbmVkIGludCBsaW5rX2lkKVxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTQzNzctXFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSB2aWZfdG9fc2RhdGEodmlmKTtcXG5uZXQvbWFjODAyMTEvY2ZnLmM6NDM3ODpcXHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHNkYXRhLVxcdTAwM2Vsb2NhbDtcXG5uZXQvbWFjODAyMTEvY2ZnLmMtNDM3OS1cXHRzdHJ1Y3QgaWVlZTgwMjExX2Jzc19jb25mICp0eF9ic3NfY29uZjtcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYz00NDE3PXZvaWQgaWVlZTgwMjExX2NoYW5uZWxfc3dpdGNoX2Rpc2Nvbm5lY3Qoc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZilcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy00NDIwLVxcdHN0cnVjdCBpZWVlODAyMTFfaWZfbWFuYWdlZCAqaWZtZ2QgPSBcXHUwMDI2c2RhdGEtXFx1MDAzZXUubWdkO1xcbm5ldC9tYWM4MDIxMS9jZmcuYzo0NDIxOlxcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gc2RhdGEtXFx1MDAzZWxvY2FsO1xcbm5ldC9tYWM4MDIxMS9jZmcuYy00NDIyLVxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jPTQ0Njc9c3RhdGljIGludCBfX2llZWU4MDIxMV9jc2FfZmluYWxpemUoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmtfZGF0YSlcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy00NDY5LVxcdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gbGlua19kYXRhLVxcdTAwM2VzZGF0YTtcXG5uZXQvbWFjODAyMTEvY2ZnLmM6NDQ3MDpcXHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHNkYXRhLVxcdTAwM2Vsb2NhbDtcXG5uZXQvbWFjODAyMTEvY2ZnLmMtNDQ3MS1cXHRzdHJ1Y3QgaWVlZTgwMjExX2Jzc19jb25mICpsaW5rX2NvbmYgPSBsaW5rX2RhdGEtXFx1MDAzZWNvbmY7XFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmM9NDU0ND12b2lkIGllZWU4MDIxMV9jc2FfZmluYWxpemVfd29yayhzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lwaHlfd29yayAqd29yaylcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy00NTQ4LVxcdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gbGluay1cXHUwMDNlc2RhdGE7XFxubmV0L21hYzgwMjExL2NmZy5jOjQ1NDk6XFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cXHUwMDNlbG9jYWw7XFxubmV0L21hYzgwMjExL2NmZy5jLTQ1NTAtXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmM9NDcwND1fX2llZWU4MDIxMV9jaGFubmVsX3N3aXRjaChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTQ3MTEtXFx0fTtcXG5uZXQvbWFjODAyMTEvY2ZnLmM6NDcxMjpcXHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHNkYXRhLVxcdTAwM2Vsb2NhbDtcXG5uZXQvbWFjODAyMTEvY2ZnLmMtNDcxMy1cXHRzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWxfc3dpdGNoIGNoX3N3aXRjaCA9IHtcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYz00ODIzPWludCBpZWVlODAyMTFfY2hhbm5lbF9zd2l0Y2goc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy00ODI2LVxcdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gSUVFRTgwMjExX0RFVl9UT19TVUJfSUYoZGV2KTtcXG5uZXQvbWFjODAyMTEvY2ZnLmM6NDgyNzpcXHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHNkYXRhLVxcdTAwM2Vsb2NhbDtcXG5uZXQvbWFjODAyMTEvY2ZnLmMtNDgyOC1cXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy00ODMzLVxcbm5ldC9tYWM4MDIxMS9jZmcuYzo0ODM0OmludCBpZWVlODAyMTFfYXR0YWNoX2Fja19za2Ioc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsIHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L21hYzgwMjExL2NmZy5jLTQ4MzUtXFx0XFx0XFx0ICAgICB1NjQgKmNvb2tpZSwgZ2ZwX3QgZ2ZwKVxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jPTQ4NjQ9aWVlZTgwMjExX3VwZGF0ZV9tZ210X2ZyYW1lX3JlZ2lzdHJhdGlvbnMoc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy00ODY3LXtcXG5uZXQvbWFjODAyMTEvY2ZnLmM6NDg2ODpcXHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHdpcGh5X3ByaXYod2lwaHkpO1xcbm5ldC9tYWM4MDIxMS9jZmcuYy00ODY5LVxcdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gSUVFRTgwMjExX1dERVZfVE9fU1VCX0lGKHdkZXYpO1xcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jPTQ5MDI9c3RhdGljIGludCBpZWVlODAyMTFfc2V0X2FudGVubmEoc3RydWN0IHdpcGh5ICp3aXBoeSwgaW50IHJhZGlvX2lkeCxcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy00OTA0LXtcXG5uZXQvbWFjODAyMTEvY2ZnLmM6NDkwNTpcXHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHdpcGh5X3ByaXYod2lwaHkpO1xcbm5ldC9tYWM4MDIxMS9jZmcuYy00OTA2LVxcdGludCByZXQ7XFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmM9NDkxOT1zdGF0aWMgaW50IGllZWU4MDIxMV9nZXRfYW50ZW5uYShzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBpbnQgcmFkaW9faWR4LFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTQ5MjEte1xcbm5ldC9tYWM4MDIxMS9jZmcuYzo0OTIyOlxcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gd2lwaHlfcHJpdih3aXBoeSk7XFxubmV0L21hYzgwMjExL2NmZy5jLTQ5MjMtXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmM9NDkyNz1zdGF0aWMgaW50IGllZWU4MDIxMV9zZXRfcmVrZXlfZGF0YShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTQ5MzAte1xcbm5ldC9tYWM4MDIxMS9jZmcuYzo0OTMxOlxcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gd2lwaHlfcHJpdih3aXBoeSk7XFxubmV0L21hYzgwMjExL2NmZy5jLTQ5MzItXFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBJRUVFODAyMTFfREVWX1RPX1NVQl9JRihkZXYpO1xcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jPTQ5NDI9c3RhdGljIGludCBpZWVlODAyMTFfcHJvYmVfcGVlcihzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTQ5NDUtXFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBJRUVFODAyMTFfREVWX1RPX1NVQl9JRihkZXYpO1xcbm5ldC9tYWM4MDIxMS9jZmcuYzo0OTQ2OlxcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gc2RhdGEtXFx1MDAzZWxvY2FsO1xcbm5ldC9tYWM4MDIxMS9jZmcuYy00OTQ3LVxcdHN0cnVjdCBpZWVlODAyMTFfcW9zX2hkciAqbnVsbGZ1bmM7XFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmM9NTA2NT1zdGF0aWMgaW50IGllZWU4MDIxMV9jZmdfZ2V0X2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy01MDcwLVxcdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gSUVFRTgwMjExX1dERVZfVE9fU1VCX0lGKHdkZXYpO1xcbm5ldC9tYWM4MDIxMS9jZmcuYzo1MDcxOlxcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gd2lwaHlfcHJpdih3aXBoeSk7XFxubmV0L21hYzgwMjExL2NmZy5jLTUwNzItXFx0c3RydWN0IGllZWU4MDIxMV9jaGFuY3R4X2NvbmYgKmNoYW5jdHhfY29uZjtcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYz01MTgwPXN0YXRpYyBpbnQgaWVlZTgwMjExX2RlbF90eF90cyhzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTUxODQtXFx0c3RydWN0IGllZWU4MDIxMV9pZl9tYW5hZ2VkICppZm1nZCA9IFxcdTAwMjZzZGF0YS1cXHUwMDNldS5tZ2Q7XFxubmV0L21hYzgwMjExL2NmZy5jOjUxODU6XFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSB3aXBoeV9wcml2KHdpcGh5KTtcXG5uZXQvbWFjODAyMTEvY2ZnLmMtNTE4Ni1cXHRpbnQgYWM7XFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmM9NTM2OD1zdGF0aWMgaW50IGllZWU4MDIxMV9nZXRfdHhxX3N0YXRzKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtNTM3MS17XFxubmV0L21hYzgwMjExL2NmZy5jOjUzNzI6XFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSB3aXBoeV9wcml2KHdpcGh5KTtcXG5uZXQvbWFjODAyMTEvY2ZnLmMtNTM3My1cXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYz01NDA4PWllZWU4MDIxMV9nZXRfZnRtX3Jlc3BvbmRlcl9zdGF0cyhzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTU0MTEte1xcbm5ldC9tYWM4MDIxMS9jZmcuYzo1NDEyOlxcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gd2lwaHlfcHJpdih3aXBoeSk7XFxubmV0L21hYzgwMjExL2NmZy5jLTU0MTMtXFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBJRUVFODAyMTFfREVWX1RPX1NVQl9JRihkZXYpO1xcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jPTU0MTk9aWVlZTgwMjExX3N0YXJ0X3Btc3Ioc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqZGV2LFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTU0MjEte1xcbm5ldC9tYWM4MDIxMS9jZmcuYzo1NDIyOlxcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gd2lwaHlfcHJpdih3aXBoeSk7XFxubmV0L21hYzgwMjExL2NmZy5jLTU0MjMtXFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBJRUVFODAyMTFfV0RFVl9UT19TVUJfSUYoZGV2KTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYz01NDI5PWllZWU4MDIxMV9hYm9ydF9wbXNyKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKmRldixcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy01NDMxLXtcXG5uZXQvbWFjODAyMTEvY2ZnLmM6NTQzMjpcXHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHdpcGh5X3ByaXYod2lwaHkpO1xcbm5ldC9tYWM4MDIxMS9jZmcuYy01NDMzLVxcdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gSUVFRTgwMjExX1dERVZfVE9fU1VCX0lGKGRldik7XFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmM9NTQ4Mj1zdGF0aWMgaW50IGllZWU4MDIxMV9zZXRfc2FyX3NwZWNzKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtNTQ4NC17XFxubmV0L21hYzgwMjExL2NmZy5jOjU0ODU6XFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSB3aXBoeV9wcml2KHdpcGh5KTtcXG5uZXQvbWFjODAyMTEvY2ZnLmMtNTQ4Ni1cXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYz01NTk1PXN0YXRpYyBpbnQgaWVlZTgwMjExX2NvbG9yX2NoYW5nZV9maW5hbGl6ZShzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluaylcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy01NTk3LVxcdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gbGluay1cXHUwMDNlc2RhdGE7XFxubmV0L21hYzgwMjExL2NmZy5jOjU1OTg6XFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cXHUwMDNlbG9jYWw7XFxubmV0L21hYzgwMjExL2NmZy5jLTU1OTktXFx0dTY0IGNoYW5nZWQgPSAwO1xcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jPTU2MjA9dm9pZCBpZWVlODAyMTFfY29sb3JfY2hhbmdlX2ZpbmFsaXplX3dvcmsoc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy01NjI3LVxcdHN0cnVjdCBpZWVlODAyMTFfYnNzX2NvbmYgKmxpbmtfY29uZiA9IGxpbmstXFx1MDAzZWNvbmY7XFxubmV0L21hYzgwMjExL2NmZy5jOjU2Mjg6XFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cXHUwMDNlbG9jYWw7XFxubmV0L21hYzgwMjExL2NmZy5jLTU2MjktXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmM9NTcxOT1pZWVlODAyMTFfY29sb3JfY2hhbmdlKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtNTcyMi1cXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IElFRUU4MDIxMV9ERVZfVE9fU1VCX0lGKGRldik7XFxubmV0L21hYzgwMjExL2NmZy5jOjU3MjM6XFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cXHUwMDNlbG9jYWw7XFxubmV0L21hYzgwMjExL2NmZy5jLTU3MjQtXFx0c3RydWN0IGllZWU4MDIxMV9ic3NfY29uZiAqbGlua19jb25mO1xcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jPTU3Nzk9aWVlZTgwMjExX3NldF9yYWRhcl9iYWNrZ3JvdW5kKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtNTc4MS17XFxubmV0L21hYzgwMjExL2NmZy5jOjU3ODI6XFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSB3aXBoeV9wcml2KHdpcGh5KTtcXG5uZXQvbWFjODAyMTEvY2ZnLmMtNTc4My1cXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYz01ODE5PWllZWU4MDIxMV9hZGRfbGlua19zdGF0aW9uKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtNTgyMi1cXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IElFRUU4MDIxMV9ERVZfVE9fU1VCX0lGKGRldik7XFxubmV0L21hYzgwMjExL2NmZy5jOjU4MjM6XFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSB3aXBoeV9wcml2KHdpcGh5KTtcXG5uZXQvbWFjODAyMTEvY2ZnLmMtNTgyNC1cXHRzdHJ1Y3Qgc3RhX2luZm8gKnN0YTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYz01ODYxPWllZWU4MDIxMV9tb2RfbGlua19zdGF0aW9uKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtNTg2NC1cXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IElFRUU4MDIxMV9ERVZfVE9fU1VCX0lGKGRldik7XFxubmV0L21hYzgwMjExL2NmZy5jOjU4NjU6XFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSB3aXBoeV9wcml2KHdpcGh5KTtcXG5uZXQvbWFjODAyMTEvY2ZnLmMtNTg2Ni1cXHRzdHJ1Y3Qgc3RhX2luZm8gKnN0YTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYz01OTA2PXN0YXRpYyBpbnQgaWVlZTgwMjExX3NldF9od190aW1lc3RhbXAoc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy01OTEwLVxcdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gSUVFRTgwMjExX0RFVl9UT19TVUJfSUYoZGV2KTtcXG5uZXQvbWFjODAyMTEvY2ZnLmM6NTkxMTpcXHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHNkYXRhLVxcdTAwM2Vsb2NhbDtcXG5uZXQvbWFjODAyMTEvY2ZnLmMtNTkxMi1cXG4tLVxcbm5ldC9tYWM4MDIxMS9jaGFuLmM9MTExPXN0YXRpYyB2b2lkXFxubmV0L21hYzgwMjExL2NoYW4uYzoxMTI6aWVlZTgwMjExX2NoYW5jdHhfdXNlcl9pdGVyX25leHQoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxubmV0L21hYzgwMjExL2NoYW4uYy0xMTMtXFx0XFx0XFx0XFx0IHN0cnVjdCBpZWVlODAyMTFfY2hhbmN0eCAqY3R4LFxcbi0tXFxubmV0L21hYzgwMjExL2NoYW4uYy0xOTAtXFxubmV0L21hYzgwMjExL2NoYW4uYzoxOTE6aW50IGllZWU4MDIxMV9jaGFuY3R4X251bV9hc3NpZ25lZChzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcXG5uZXQvbWFjODAyMTEvY2hhbi5jLTE5Mi1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5jdHggKmN0eClcXG4tLVxcbm5ldC9tYWM4MDIxMS9jaGFuLmMtMjAyLVxcbm5ldC9tYWM4MDIxMS9jaGFuLmM6MjAzOnN0YXRpYyBpbnQgaWVlZTgwMjExX2NoYW5jdHhfbnVtX3Jlc2VydmVkKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbm5ldC9tYWM4MDIxMS9jaGFuLmMtMjA0LVxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IGllZWU4MDIxMV9jaGFuY3R4ICpjdHgpXFxuLS1cXG5uZXQvbWFjODAyMTEvY2hhbi5jLTIxNC1cXG5uZXQvbWFjODAyMTEvY2hhbi5jOjIxNTppbnQgaWVlZTgwMjExX2NoYW5jdHhfcmVmY291bnQoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxubmV0L21hYzgwMjExL2NoYW4uYy0yMTYtXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBpZWVlODAyMTFfY2hhbmN0eCAqY3R4KVxcbi0tXFxubmV0L21hYzgwMjExL2NoYW4uYy0yMzMtXFxubmV0L21hYzgwMjExL2NoYW4uYzoyMzQ6c3RhdGljIGludCBpZWVlODAyMTFfbnVtX2NoYW5jdHgoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsIGludCByYWRpb19pZHgpXFxubmV0L21hYzgwMjExL2NoYW4uYy0yMzUte1xcbi0tXFxubmV0L21hYzgwMjExL2NoYW4uYy0yNDktXFxubmV0L21hYzgwMjExL2NoYW4uYzoyNTA6c3RhdGljIGJvb2wgaWVlZTgwMjExX2Nhbl9jcmVhdGVfbmV3X2NoYW5jdHgoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxubmV0L21hYzgwMjExL2NoYW4uYy0yNTEtXFx0XFx0XFx0XFx0XFx0ICAgICBpbnQgcmFkaW9faWR4KVxcbi0tXFxubmV0L21hYzgwMjExL2NoYW4uYz0yNjA9aWVlZTgwMjExX2xpbmtfZ2V0X2NoYW5jdHgoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmspXFxubmV0L21hYzgwMjExL2NoYW4uYy0yNjEte1xcbm5ldC9tYWM4MDIxMS9jaGFuLmM6MjYyOlxcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsIF9fbWF5YmVfdW51c2VkID0gbGluay1cXHUwMDNlc2RhdGEtXFx1MDAzZWxvY2FsO1xcbm5ldC9tYWM4MDIxMS9jaGFuLmMtMjYzLVxcdHN0cnVjdCBpZWVlODAyMTFfY2hhbmN0eF9jb25mICpjb25mO1xcbi0tXFxubmV0L21hYzgwMjExL2NoYW4uYz0zMzM9c3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfY2hhbl9yZXEgKlxcbm5ldC9tYWM4MDIxMS9jaGFuLmM6MzM0Ol9pZWVlODAyMTFfY2hhbmN0eF9jb21wYXRpYmxlKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbm5ldC9tYWM4MDIxMS9jaGFuLmMtMzM1LVxcdFxcdFxcdCAgICAgIHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpza2lwX2xpbmssXFxuLS1cXG5uZXQvbWFjODAyMTEvY2hhbi5jPTM1OD1zdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9jaGFuX3JlcSAqXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE3OjQzOjUzLjI3OTczNzYzMloiLCJTZXEiOjI3LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMDQ1NDEwOTQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKlRyYWNpbmcgdGhlIElFRUU4MDIxMSBMb2NhbCBTdHJ1Y3R1cmUgQWxsb2NhdGlvbioqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW4uIEkgbmVlZCB0byBmaWd1cmUgb3V0IHByZWNpc2VseSB3aGVyZSB0aGUgYHN0cnVjdCBpZWVlODAyMTFfbG9jYWxgIGlzIGJlaW5nIGFsbG9jYXRlZCB3aXRoaW4gdGhlIHdpcmVsZXNzIHN0YWNrLiBNeSBpbml0aWFsIGh1bmNoIGlzIHRoYXQgaXQncyBsaWtlbHkgaGFuZGxlZCBieSBlaXRoZXIgYGllZWU4MDIxMV9hbGxvY19od2Agb3IgcGVyaGFwcyBgd2lwaHlfbmV3X25tYCDigJMgb3IgcG90ZW50aWFsbHkgc29tZXRoaW5nIGVsc2UgZW50aXJlbHkgaW4gdGhhdCBpbnN0YW50aWF0aW9uIGNoYWluLCBzbyBJIG5lZWQgdG8gY2hlY2sgdGhvc2UgYXJlYXMuIEkgbmVlZCB0byBwaW5wb2ludCB0aGUgZXhhY3QgZnVuY3Rpb24gcmVzcG9uc2libGUuIEl0J3MgY3J1Y2lhbCB0byB1bmRlcnN0YW5kIHRoaXMgaW5pdGlhbCBhbGxvY2F0aW9uIHBvaW50IHRvIHRoZW4gdHJhY2sgbWVtb3J5IG1hbmFnZW1lbnQsIGluaXRpYWxpemF0aW9uLCBhbmQgdWx0aW1hdGVseSwgaG93IHRoaXMgY29yZSBzdHJ1Y3R1cmUgdGllcyBpbnRvIHRoZSB3aWRlciBmcmFtZXdvcmsuIEdvdHRhIGxvY2F0ZSBpdCBhbmQgY2hlY2sgd2hhdCBlbHNlIHRoZSBhbGxvY2F0aW5nIGZ1bmN0aW9uIG1pZ2h0IGJlIGRvaW5nIGF0IHRoZSB0aW1lIG9mIGluc3RhbnRpYXRpb24sIGFuZCBsb29rIGZvciBwb3RlbnRpYWwgaG9va3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3MzcyLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTc6NDM6NTUuMzI1MTUxOTg2WiIsIlNlcSI6MjgsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NDQwMDQwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpZWVlODAyMTFfYWxsb2NfaHdcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L21hYzgwMjExXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9tYWluLmM9Nzc1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3ZodF9jYXAgbWFjODAyMTFfdmh0X2NhcGFfbW9kX21hc2sgPSB7XFxuLS1cXG5uZXQvbWFjODAyMTEvbWFpbi5jLTc5Mi1cXG5uZXQvbWFjODAyMTEvbWFpbi5jOjc5MzpzdHJ1Y3QgaWVlZTgwMjExX2h3ICppZWVlODAyMTFfYWxsb2NfaHdfbm0oc2l6ZV90IHByaXZfZGF0YV9sZW4sXFxubmV0L21hYzgwMjExL21haW4uYy03OTQtXFx0XFx0XFx0XFx0XFx0ICAgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgKm9wcyxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tYWluLmMtMTA1MC19XFxubmV0L21hYzgwMjExL21haW4uYzoxMDUxOkVYUE9SVF9TWU1CT0woaWVlZTgwMjExX2FsbG9jX2h3X25tKTtcXG5uZXQvbWFjODAyMTEvbWFpbi5jLTEwNTItXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE3OjQzOjU1LjQxOTU1NzgyNVoiLCJTZXEiOjI5LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxNzYzMTYxMjA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgYG1hYzgwMjExYCBJbml0aWFsaXphdGlvbioqXG5cbk9rYXksIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiBob3cgdGhlIGBsb2NhbGAgc3RydWN0dXJlIGlzIGFsbG9jYXRlZCB3aXRoaW4gdGhlIGBtYWM4MDIxMWAgc3Vic3lzdGVtLiBJIHJlY2FsbCB0aGF0J3MgdGhlIGNvcmUgc3RydWN0dXJlIHJlcHJlc2VudGluZyBhIHBhcnRpY3VsYXIgd2lyZWxlc3MgZGV2aWNlLiBJJ2xsIG5lZWQgdG8gZ28gdG8gYG5ldC9tYWM4MDIxMS9tYWluLmNgIGFuZCB0YWtlIGEgbG9vayBhcm91bmQgbGluZSA3OTMsIHRoZXJlIHNob3VsZCBiZSBzb21lIHJlbGV2YW50IGNvZGUgYXJvdW5kIHRoZSBkcml2ZXIgaW5pdGlhbGl6YXRpb24gcHJvY2Vzcy4gTGV0J3Mgc2VlIGhvdyB0aGF0IGNydWNpYWwgYGxvY2FsYCB2YXJpYWJsZSBjb21lcyBpbnRvIGJlaW5nLi4uIEl0J3MgYWxsIGFib3V0IHVuZGVyc3RhbmRpbmcgcmVzb3VyY2UgbWFuYWdlbWVudCBhbmQgaG93IHRoZSBkcml2ZXIgZ2V0cyBzZXQgdXAsIHNvIEkgY2FuIHNlZSBhbnkgcG90ZW50aWFsIGNvbmN1cnJlbmN5IHByb2JsZW1zLiBJJ20gYWZ0ZXIgdGhlIGFsbG9jYXRpb24gaXRzZWxmLCB0aGUgcmVsZXZhbnQgYXJndW1lbnRzLCBhbmQgYW55IGludGVyYWN0aW9ucyB3aXRoIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlIHNldHVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzg5MCwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE3OjQzOjU3LjE4MjcyMjA0NFoiLCJTZXEiOjMwLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTQ4NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L21hYzgwMjExL21haW4uY1wiLFxuICBcIkZpcnN0TGluZVwiOiA3OTMsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA3OTM6XFx0c3RydWN0IGllZWU4MDIxMV9odyAqaWVlZTgwMjExX2FsbG9jX2h3X25tKHNpemVfdCBwcml2X2RhdGFfbGVuLFxcbiA3OTQ6XFx0XFx0XFx0XFx0XFx0XFx0ICAgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgKm9wcyxcXG4gNzk1OlxcdFxcdFxcdFxcdFxcdFxcdCAgIGNvbnN0IGNoYXIgKnJlcXVlc3RlZF9uYW1lKVxcbiA3OTY6XFx0e1xcbiA3OTc6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWw7XFxuIDc5ODpcXHRcXHRpbnQgcHJpdl9zaXplLCBpO1xcbiA3OTk6XFx0XFx0c3RydWN0IHdpcGh5ICp3aXBoeTtcXG4gODAwOlxcdFxcdGJvb2wgZW11bGF0ZV9jaGFuY3R4O1xcbiA4MDE6XFx0XFxuIDgwMjpcXHRcXHRpZiAoV0FSTl9PTighb3BzLVxcdTAwM2V0eCB8fCAhb3BzLVxcdTAwM2VzdGFydCB8fCAhb3BzLVxcdTAwM2VzdG9wIHx8ICFvcHMtXFx1MDAzZWNvbmZpZyB8fFxcbiA4MDM6XFx0XFx0XFx0ICAgICFvcHMtXFx1MDAzZWFkZF9pbnRlcmZhY2UgfHwgIW9wcy1cXHUwMDNlcmVtb3ZlX2ludGVyZmFjZSB8fFxcbiA4MDQ6XFx0XFx0XFx0ICAgICFvcHMtXFx1MDAzZWNvbmZpZ3VyZV9maWx0ZXIgfHwgIW9wcy1cXHUwMDNld2FrZV90eF9xdWV1ZSkpXFxuIDgwNTpcXHRcXHRcXHRyZXR1cm4gTlVMTDtcXG4gODA2OlxcdFxcbiA4MDc6XFx0XFx0aWYgKFdBUk5fT04ob3BzLVxcdTAwM2VzdGFfc3RhdGUgXFx1MDAyNlxcdTAwMjYgKG9wcy1cXHUwMDNlc3RhX2FkZCB8fCBvcHMtXFx1MDAzZXN0YV9yZW1vdmUpKSlcXG4gODA4OlxcdFxcdFxcdHJldHVybiBOVUxMO1xcbiA4MDk6XFx0XFxuIDgxMDpcXHRcXHRpZiAoV0FSTl9PTighIW9wcy1cXHUwMDNlbGlua19pbmZvX2NoYW5nZWQgIT0gISFvcHMtXFx1MDAzZXZpZl9jZmdfY2hhbmdlZCB8fFxcbiA4MTE6XFx0XFx0XFx0ICAgIChvcHMtXFx1MDAzZWxpbmtfaW5mb19jaGFuZ2VkIFxcdTAwMjZcXHUwMDI2IG9wcy1cXHUwMDNlYnNzX2luZm9fY2hhbmdlZCkpKVxcbiA4MTI6XFx0XFx0XFx0cmV0dXJuIE5VTEw7XFxuIDgxMzpcXHRcXG4gODE0OlxcdFxcdC8qIGNoZWNrIGFsbCBvciBubyBjaGFubmVsIGNvbnRleHQgb3BlcmF0aW9ucyBleGlzdCAqL1xcbiA4MTU6XFx0XFx0aWYgKG9wcy1cXHUwMDNlYWRkX2NoYW5jdHggPT0gaWVlZTgwMjExX2VtdWxhdGVfYWRkX2NoYW5jdHggXFx1MDAyNlxcdTAwMjZcXG4gODE2OlxcdFxcdCAgICBvcHMtXFx1MDAzZXJlbW92ZV9jaGFuY3R4ID09IGllZWU4MDIxMV9lbXVsYXRlX3JlbW92ZV9jaGFuY3R4IFxcdTAwMjZcXHUwMDI2XFxuIDgxNzpcXHRcXHQgICAgb3BzLVxcdTAwM2VjaGFuZ2VfY2hhbmN0eCA9PSBpZWVlODAyMTFfZW11bGF0ZV9jaGFuZ2VfY2hhbmN0eCkge1xcbiA4MTg6XFx0XFx0XFx0aWYgKFdBUk5fT04ob3BzLVxcdTAwM2Vhc3NpZ25fdmlmX2NoYW5jdHggfHxcXG4gODE5OlxcdFxcdFxcdFxcdCAgICBvcHMtXFx1MDAzZXVuYXNzaWduX3ZpZl9jaGFuY3R4KSlcXG4gODIwOlxcdFxcdFxcdFxcdHJldHVybiBOVUxMO1xcbiA4MjE6XFx0XFx0XFx0ZW11bGF0ZV9jaGFuY3R4ID0gdHJ1ZTtcXG4gODIyOlxcdFxcdH0gZWxzZSB7XFxuIDgyMzpcXHRcXHRcXHRpZiAoV0FSTl9PTihvcHMtXFx1MDAzZWFkZF9jaGFuY3R4ID09IGllZWU4MDIxMV9lbXVsYXRlX2FkZF9jaGFuY3R4IHx8XFxuIDgyNDpcXHRcXHRcXHRcXHQgICAgb3BzLVxcdTAwM2VyZW1vdmVfY2hhbmN0eCA9PSBpZWVlODAyMTFfZW11bGF0ZV9yZW1vdmVfY2hhbmN0eCB8fFxcbiA4MjU6XFx0XFx0XFx0XFx0ICAgIG9wcy1cXHUwMDNlY2hhbmdlX2NoYW5jdHggPT0gaWVlZTgwMjExX2VtdWxhdGVfY2hhbmdlX2NoYW5jdHgpKVxcbiA4MjY6XFx0XFx0XFx0XFx0cmV0dXJuIE5VTEw7XFxuIDgyNzpcXHRcXHRcXHRpZiAoV0FSTl9PTighb3BzLVxcdTAwM2VhZGRfY2hhbmN0eCB8fFxcbiA4Mjg6XFx0XFx0XFx0XFx0ICAgICFvcHMtXFx1MDAzZXJlbW92ZV9jaGFuY3R4IHx8XFxuIDgyOTpcXHRcXHRcXHRcXHQgICAgIW9wcy1cXHUwMDNlY2hhbmdlX2NoYW5jdHggfHxcXG4gODMwOlxcdFxcdFxcdFxcdCAgICAhb3BzLVxcdTAwM2Vhc3NpZ25fdmlmX2NoYW5jdHggfHxcXG4gODMxOlxcdFxcdFxcdFxcdCAgICAhb3BzLVxcdTAwM2V1bmFzc2lnbl92aWZfY2hhbmN0eCkpXFxuIDgzMjpcXHRcXHRcXHRcXHRyZXR1cm4gTlVMTDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTc6NDM6NTcuMTgyODgzMDA0WiIsIlNlcSI6MzEsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI2OTQ2NjM4NzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzIGNvZGUuXG5cbioqQW5hbHl6aW5nIGBpZWVlODAyMTFfYWxsb2NfaHdfbm1gKipcblxuQWxyaWdodCwgdGltZSB0byBnZXQgaW50byB0aGUgd2VlZHMgb2YgYGllZWU4MDIxMV9hbGxvY19od19ubWAuIExldCdzIGFzc3VtZSB0aGlzIGlzIHRoZSBoYXJkd2FyZSBhbGxvY2F0aW9uIGZ1bmN0aW9uIGZvciBhbiA4MDIuMTEgZGV2aWNlLCB3aXRoIFwibm1cIiBwcm9iYWJseSByZWZlcnJpbmcgdG8gXCJuZXcgbW9kZWxcIiBvciBhIHNwZWNpZmljIGltcGxlbWVudGF0aW9uLiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBmdW5jdGlvbiBpbnRlcmZhY2VzIHdpdGggdGhlIGV4aXN0aW5nIDgwMi4xMSBzdGFjay4gSSdtIGxvb2tpbmcgZm9yIG1lbW9yeSBhbGxvY2F0aW9uIHBhdHRlcm5zLCBpbml0aWFsaXphdGlvbiBzdGVwcywgYW5kIGhvdyB0aGUgZHJpdmVyIGdldHMgaW50ZWdyYXRlZC4gSSBleHBlY3QgdG8gc2VlIGNhbGxzIHRvIGxvd2VyLWxldmVsIGhhcmR3YXJlIGluaXRpYWxpemF0aW9uIHJvdXRpbmVzLiBBcmUgdGhleSB1c2luZyBETUE/IEhvdyBhcmUgdGhlIGludGVycnVwdCBoYW5kbGVycyBzZXQgdXA/IEFueSBwb3RlbnRpYWwgbG9ja2luZyBtZWNoYW5pc21zPyBEb2VzIHRoaXMgdXNlIGEgY3VzdG9tIGRlc2NyaXB0b3IgZm9ybWF0IG9yIGFyZSB0aGV5IGZvbGxvd2luZyBhIHN0YW5kYXJkIG9uZT8gSSBuZWVkIHRvIGFuYWx5emUgaG93IHRoaXMgYWxsb2NhdGVzIHRoZSAqaHcqIHN0cnVjdHVyZSBhbmQgaWYgaXQgdXNlcyBhICpjZmcqIHN0cnVjdHVyZSB0byBpbml0aWFsaXplIGl0LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGlzIHdpbGwgYmUgZ2VuZXJpYyB0byBzZXZlcmFsIGhhcmR3YXJlIHBsYXRmb3Jtcywgb3IgaWYgaXQgaXMgcGxhdGZvcm0tc3BlY2lmaWMuIEFueSBvZiB0aGVzZSB3b3VsZCBhZmZlY3QgcGVyZm9ybWFuY2UgYW5kIHN0YWJpbGl0eSBkb3duIHRoZSBsaW5lLiBJIGFtIHJlYWxseSBpbnRlcmVzdGVkIGluIGhvdyB0aGV5IGluaXRpYWxpemUgdGhlIGhhcmR3YXJlIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4OTI4LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxNzo0Mzo1OS44Nzc1NDkyNThaIiwiU2VxIjozMiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY3ODMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9tYWM4MDIxMS9tYWluLmNcIixcbiAgXCJGaXJzdExpbmVcIjogODMzLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgODMzOlxcdFxcdFxcdGVtdWxhdGVfY2hhbmN0eCA9IGZhbHNlO1xcbiA4MzQ6XFx0XFx0fVxcbiA4MzU6XFx0XFxuIDgzNjpcXHRcXHQvKiBFbnN1cmUgMzItYnl0ZSBhbGlnbm1lbnQgb2Ygb3VyIHByaXZhdGUgZGF0YSBhbmQgaHcgcHJpdmF0ZSBkYXRhLlxcbiA4Mzc6XFx0XFx0ICogV2UgdXNlIHRoZSB3aXBoeSBwcml2IGRhdGEgZm9yIGJvdGggb3VyIGllZWU4MDIxMV9sb2NhbCBhbmQgZm9yXFxuIDgzODpcXHRcXHQgKiB0aGUgZHJpdmVyJ3MgcHJpdmF0ZSBkYXRhXFxuIDgzOTpcXHRcXHQgKlxcbiA4NDA6XFx0XFx0ICogSW4gbWVtb3J5IGl0J2xsIGJlIGxpa2UgdGhpczpcXG4gODQxOlxcdFxcdCAqXFxuIDg0MjpcXHRcXHQgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcXG4gODQzOlxcdFxcdCAqIHwgc3RydWN0IHdpcGh5XFx0ICAgIHxcXG4gODQ0OlxcdFxcdCAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xcbiA4NDU6XFx0XFx0ICogfCBzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICB8XFxuIDg0NjpcXHRcXHQgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcXG4gODQ3OlxcdFxcdCAqIHwgZHJpdmVyJ3MgcHJpdmF0ZSBkYXRhICAgfFxcbiA4NDg6XFx0XFx0ICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXFxuIDg0OTpcXHRcXHQgKlxcbiA4NTA6XFx0XFx0ICovXFxuIDg1MTpcXHRcXHRwcml2X3NpemUgPSBBTElHTihzaXplb2YoKmxvY2FsKSwgTkVUREVWX0FMSUdOKSArIHByaXZfZGF0YV9sZW47XFxuIDg1MjpcXHRcXG4gODUzOlxcdFxcdHdpcGh5ID0gd2lwaHlfbmV3X25tKFxcdTAwMjZtYWM4MDIxMV9jb25maWdfb3BzLCBwcml2X3NpemUsIHJlcXVlc3RlZF9uYW1lKTtcXG4gODU0OlxcdFxcbiA4NTU6XFx0XFx0aWYgKCF3aXBoeSlcXG4gODU2OlxcdFxcdFxcdHJldHVybiBOVUxMO1xcbiA4NTc6XFx0XFxuIDg1ODpcXHRcXHR3aXBoeS1cXHUwMDNlbWdtdF9zdHlwZXMgPSBpZWVlODAyMTFfZGVmYXVsdF9tZ210X3N0eXBlcztcXG4gODU5OlxcdFxcbiA4NjA6XFx0XFx0d2lwaHktXFx1MDAzZXByaXZpZCA9IG1hYzgwMjExX3dpcGh5X3ByaXZpZDtcXG4gODYxOlxcdFxcbiA4NjI6XFx0XFx0d2lwaHktXFx1MDAzZWZsYWdzIHw9IFdJUEhZX0ZMQUdfTkVUTlNfT0sgfFxcbiA4NjM6XFx0XFx0XFx0XFx0V0lQSFlfRkxBR180QUREUl9BUCB8XFxuIDg2NDpcXHRcXHRcXHRcXHRXSVBIWV9GTEFHXzRBRERSX1NUQVRJT04gfFxcbiA4NjU6XFx0XFx0XFx0XFx0V0lQSFlfRkxBR19SRVBPUlRTX09CU1MgfFxcbiA4NjY6XFx0XFx0XFx0XFx0V0lQSFlfRkxBR19PRkZDSEFOX1RYO1xcbiA4Njc6XFx0XFxuIDg2ODpcXHRcXHRpZiAoZW11bGF0ZV9jaGFuY3R4IHx8IG9wcy1cXHUwMDNlcmVtYWluX29uX2NoYW5uZWwpXFxuIDg2OTpcXHRcXHRcXHR3aXBoeS1cXHUwMDNlZmxhZ3MgfD0gV0lQSFlfRkxBR19IQVNfUkVNQUlOX09OX0NIQU5ORUw7XFxuIDg3MDpcXHRcXG4gODcxOlxcdFxcdHdpcGh5LVxcdTAwM2Vic3NfcGFyYW1fc3VwcG9ydCA9IFdJUEhZX0JTU19QQVJBTV9DVFNfUFJPVCB8XFxuIDg3MjpcXHRcXHRcXHRcXHRcXHQgICBXSVBIWV9CU1NfUEFSQU1fU0hPUlRfUFJFQU1CTEUgfFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxNzo0Mzo1OS44Nzc3MTg0ODhaIiwiU2VxIjozMywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Mjk5NTk3ODMyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gd2lwaHlfbmV3X25tIGFuZCBNZW1vcnkgQWxsb2NhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGB3aXBoeV9uZXdfbm1gLiBSaWdodCBhd2F5LCBteSByYWRhciBnb2VzIHVwIGJlY2F1c2UgSSBzZWUgYGt6YWxsb2NgIGlzIGJlaW5nIHVzZWQuIFRoYXQncyBhIGtleSBmdW5jdGlvbiBmb3IgYWxsb2NhdGluZyBtZW1vcnksIHNwZWNpZmljYWxseSBmb3IgaW5pdGlhbGl6aW5nIGl0IHRvIHplcm8uIEluIHRoaXMgY2FzZSwgaXQncyBncmFiYmluZyBzcGFjZSBmb3IgYm90aCB0aGUgYHdpcGh5YCBzdHJ1Y3R1cmUgaXRzZWxmICphbmQqIHRoZSBwcml2YXRlIGRhdGEgYXNzb2NpYXRlZCB3aXRoIGl0LiBUaGlzIGlzIHByZXR0eSBzdGFuZGFyZCBwcmFjdGljZSwgYnV0IGl0J3MgKmNyaXRpY2FsKiB0byB2ZXJpZnkgdGhpcyBhbGxvY2F0aW9uIG1ldGhvZCB0aG9yb3VnaGx5LiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgaXMgYmVpbmcgaGFuZGxlZCBjb3JyZWN0bHksIHBhcnRpY3VsYXJseSBpbiB0aGlzIGNvbnRleHQuIFRoZSBzaXplIGNhbGN1bGF0aW9uLCBhbnkgcG90ZW50aWFsIG9mZi1ieS1vbmUgZXJyb3JzLCBhbmQgYWxpZ25tZW50IGlzc3VlcyBhcmUgZ29pbmcgdG8gYmUgbXkgcHJpbWFyeSBjb25jZXJucy4gSSB3aWxsIGFsc28gYmUgb24gdGhlIGxvb2tvdXQgZm9yIHBvdGVudGlhbCBtZW1vcnkgbGVha3MsIHBhcnRpY3VsYXJseSBpZiBzb21ldGhpbmcgaGFwcGVucyB0byBkZS1hbGxvY2F0ZSBvbmUgcGFydCBhbmQgbm90IHRoZSBvdGhlciwgbGVhZGluZyB0byBhIGhhbGYtZnJlZWQgY2h1bmsgb2YgbWVtb3J5LiBMZXQncyBkZWx2ZSBpbiBhbmQgbWFrZSBzdXJlIHRoaXMgaXMgZG9uZSBzb3VuZGx5IGFuZCBzYWZlbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5ODkxLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxNzo0NDowMi44NzM2OTk4OTZaIiwiU2VxIjozNCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg2ODQxMDI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIndpcGh5X25ld19ubVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvd2lyZWxlc3NcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3dpcmVsZXNzL2NvcmUuYz01MTg9c3RhdGljIHZvaWQgY2ZnODAyMTFfd2lwaHlfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5uZXQvd2lyZWxlc3MvY29yZS5jLTU0OC1cXG5uZXQvd2lyZWxlc3MvY29yZS5jOjU0OTpzdHJ1Y3Qgd2lwaHkgKndpcGh5X25ld19ubShjb25zdCBzdHJ1Y3QgY2ZnODAyMTFfb3BzICpvcHMsIGludCBzaXplb2ZfcHJpdixcXG5uZXQvd2lyZWxlc3MvY29yZS5jLTU1MC1cXHRcXHRcXHQgICBjb25zdCBjaGFyICpyZXF1ZXN0ZWRfbmFtZSlcXG4tLVxcbm5ldC93aXJlbGVzcy9jb3JlLmMtNzAyLX1cXG5uZXQvd2lyZWxlc3MvY29yZS5jOjcwMzpFWFBPUlRfU1lNQk9MKHdpcGh5X25ld19ubSk7XFxubmV0L3dpcmVsZXNzL2NvcmUuYy03MDQtXFxuLS1cXG5uZXQvd2lyZWxlc3MvdGVzdHMvdXRpbC5jPTEzPWludCB0X3dpcGh5X2luaXQoc3RydWN0IGt1bml0X3Jlc291cmNlICpyZXNvdXJjZSwgdm9pZCAqY3R4KVxcbi0tXFxubmV0L3dpcmVsZXNzL3Rlc3RzL3V0aWwuYy0yMi1cXG5uZXQvd2lyZWxlc3MvdGVzdHMvdXRpbC5jOjIzOlxcdHdpcGh5ID0gd2lwaHlfbmV3X25tKG9wcywgc2l6ZW9mKCpwcml2KSwgXFxcImt1bml0XFxcIik7XFxubmV0L3dpcmVsZXNzL3Rlc3RzL3V0aWwuYy0yNC1cXHRLVU5JVF9BU1NFUlRfTk9UX05VTEwodGVzdCwgd2lwaHkpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxNzo0NDowMi45NjA1NDU4MjVaIiwiU2VxIjozNSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjMyMDQ5MDgwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipEaXZpbmcgaW50byBgd2lwaHlfbmV3X25tYCoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBhIG5ldyBXaS1GaSBQSFkgaXMgYmVpbmcgaGFuZGxlZCBpbnRlcm5hbGx5LiBMZXQncyBzdGFydCBieSBsb29raW5nIGF0IGB3aXBoeV9uZXdfbm1gIGluIGBuZXQvd2lyZWxlc3MvY29yZS5jYC4gVGhhdCBmdW5jdGlvbiBuYW1lIHN1Z2dlc3RzIGl0J3MgdGhlIHJpZ2h0IHBsYWNlIHRvIGJlZ2lu4oCUbGlrZWx5IHdoZXJlIHRoZSBuZXcgYHdpcGh5YCBzdHJ1Y3R1cmUgaXMgYWxsb2NhdGVkIGFuZCBpbml0aWFsaXplZCwgc3BlY2lmaWNhbGx5IHdoZW4gYSBuZXcgTmV0bGluayBtZXNzYWdlIGlzIHJlY2VpdmVkLCBnaXZlbiB0aGUgc3VmZml4IGBfbm1gIChOZXRsaW5rKS4gSSdsbCB3YW50IHRvIGNhcmVmdWxseSBleGFtaW5lIHRoZSBhcmd1bWVudHMgcGFzc2VkIHRvIHRoaXMgZnVuY3Rpb24sIHRoZSBpbnRlcm5hbCBkYXRhIHN0cnVjdHVyZXMgaXQgbWFuaXB1bGF0ZXMsIGFuZCB0aGUgb3ZlcmFsbCBhbGxvY2F0aW9uIGFuZCBpbml0aWFsaXphdGlvbiBwcm9jZXNzLiBJIHN1c3BlY3QgSSdsbCBzZWUgc29tZSBjYWxscyB0byBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZnVuY3Rpb25zIHNldHRpbmcgdXAgdGhlIGJhc2ljIHByb3BlcnRpZXMgb2YgdGhlIGB3aXBoeWAgb2JqZWN0LiBJ4oCZbSBleHBlY3RpbmcgYSBoaWdoLWxldmVsIGZ1bmN0aW9uLiBJdOKAmWxsIHByb2JhYmx5IGhhbmRsZSB0aGUgYWxsb2NhdGlvbiwgaW5pdGlhbCBzZXR1cCwgYW5kIHBvdGVudGlhbGx5IHJlZ2lzdHJhdGlvbiB3aXRoIHRoZSBrZXJuZWwncyB3aXJlbGVzcyBzdWJzeXN0ZW0uIExldCdzIHNlZSB3aGF0IGl0IGhhcyB0byB0ZWxsIG1lLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDQ3NCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE3OjQ0OjA1LjI4MTAzOTM4NVoiLCJTZXEiOjM2LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTEzMTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L3dpcmVsZXNzL2NvcmUuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA1NDksXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA1NDk6XFx0c3RydWN0IHdpcGh5ICp3aXBoeV9uZXdfbm0oY29uc3Qgc3RydWN0IGNmZzgwMjExX29wcyAqb3BzLCBpbnQgc2l6ZW9mX3ByaXYsXFxuIDU1MDpcXHRcXHRcXHRcXHQgICBjb25zdCBjaGFyICpyZXF1ZXN0ZWRfbmFtZSlcXG4gNTUxOlxcdHtcXG4gNTUyOlxcdFxcdHN0YXRpYyBhdG9taWNfdCB3aXBoeV9jb3VudGVyID0gQVRPTUlDX0lOSVQoMCk7XFxuIDU1MzpcXHRcXG4gNTU0OlxcdFxcdHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldjtcXG4gNTU1OlxcdFxcdGludCBhbGxvY19zaXplO1xcbiA1NTY6XFx0XFxuIDU1NzpcXHRcXHRXQVJOX09OKG9wcy1cXHUwMDNlYWRkX2tleSBcXHUwMDI2XFx1MDAyNiAoIW9wcy1cXHUwMDNlZGVsX2tleSB8fCAhb3BzLVxcdTAwM2VzZXRfZGVmYXVsdF9rZXkpKTtcXG4gNTU4OlxcdFxcdFdBUk5fT04ob3BzLVxcdTAwM2VhdXRoIFxcdTAwMjZcXHUwMDI2ICghb3BzLVxcdTAwM2Vhc3NvYyB8fCAhb3BzLVxcdTAwM2VkZWF1dGggfHwgIW9wcy1cXHUwMDNlZGlzYXNzb2MpKTtcXG4gNTU5OlxcdFxcdFdBUk5fT04ob3BzLVxcdTAwM2Vjb25uZWN0IFxcdTAwMjZcXHUwMDI2ICFvcHMtXFx1MDAzZWRpc2Nvbm5lY3QpO1xcbiA1NjA6XFx0XFx0V0FSTl9PTihvcHMtXFx1MDAzZWpvaW5faWJzcyBcXHUwMDI2XFx1MDAyNiAhb3BzLVxcdTAwM2VsZWF2ZV9pYnNzKTtcXG4gNTYxOlxcdFxcdFdBUk5fT04ob3BzLVxcdTAwM2VhZGRfdmlydHVhbF9pbnRmIFxcdTAwMjZcXHUwMDI2ICFvcHMtXFx1MDAzZWRlbF92aXJ0dWFsX2ludGYpO1xcbiA1NjI6XFx0XFx0V0FSTl9PTihvcHMtXFx1MDAzZWFkZF9zdGF0aW9uIFxcdTAwMjZcXHUwMDI2ICFvcHMtXFx1MDAzZWRlbF9zdGF0aW9uKTtcXG4gNTYzOlxcdFxcdFdBUk5fT04ob3BzLVxcdTAwM2VhZGRfbXBhdGggXFx1MDAyNlxcdTAwMjYgIW9wcy1cXHUwMDNlZGVsX21wYXRoKTtcXG4gNTY0OlxcdFxcdFdBUk5fT04ob3BzLVxcdTAwM2Vqb2luX21lc2ggXFx1MDAyNlxcdTAwMjYgIW9wcy1cXHUwMDNlbGVhdmVfbWVzaCk7XFxuIDU2NTpcXHRcXHRXQVJOX09OKG9wcy1cXHUwMDNlc3RhcnRfcDJwX2RldmljZSBcXHUwMDI2XFx1MDAyNiAhb3BzLVxcdTAwM2VzdG9wX3AycF9kZXZpY2UpO1xcbiA1NjY6XFx0XFx0V0FSTl9PTihvcHMtXFx1MDAzZXN0YXJ0X2FwIFxcdTAwMjZcXHUwMDI2ICFvcHMtXFx1MDAzZXN0b3BfYXApO1xcbiA1Njc6XFx0XFx0V0FSTl9PTihvcHMtXFx1MDAzZWpvaW5fb2NiIFxcdTAwMjZcXHUwMDI2ICFvcHMtXFx1MDAzZWxlYXZlX29jYik7XFxuIDU2ODpcXHRcXHRXQVJOX09OKG9wcy1cXHUwMDNlc3VzcGVuZCBcXHUwMDI2XFx1MDAyNiAhb3BzLVxcdTAwM2VyZXN1bWUpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxNzo0NDowNS4yODExOTIxNTVaIiwiU2VxIjozNywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTk5MjA2OTYxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkRpdmluZyBpbnRvIGB3aXBoeV9uZXdfbm1gIEFsbG9jYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gZm9jdXNpbmcgb24gdGhlIGFsbG9jYXRpb24gc2lkZSBvZiB0aGluZ3MgaW4gYHdpcGh5X25ld19ubWAgcmlnaHQgbm93LiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIHNwZWNpZmljIG1lbW9yeSBhbGxvY2F0aW9uIHN0cmF0ZWdpZXMgZW1wbG95ZWQgd2l0aGluIHRoaXMgZnVuY3Rpb24uIEl0J3MgY3J1Y2lhbCwgb2J2aW91c2x5LCBiZWNhdXNlIGFueSBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcyBvciBwb3RlbnRpYWwgbWVtb3J5IGxlYWtzIG9mdGVuIHJlYXIgdGhlaXIgaGVhZHMgZWFybHkgb24gaW4gdGhlIHByb2Nlc3Mgb2YgY3JlYXRpbmcgYSBuZXcgV2ktRmkgUEhZIG9iamVjdC4gSSBuZWVkIHRvIHRyYWNlIHRocm91Z2ggdGhlIGNvZGUsIG1heWJlIEknbGwgZ28gdGhyb3VnaCB0aGUgY2FsbCBzdGFjayB0byBzZWUgd2hlcmUgdGhpcyBvYmplY3QgaXMgY2FsbGVkLiBMZXQncyBzZWUgaG93IG11Y2ggbWVtb3J5IHdlJ3JlIHRhbGtpbmcgYWJvdXQsIHdoYXQncyBhbGxvY2F0ZWQgb24gdGhlIGhlYXAgdmVyc3VzIG9uIHRoZSBzdGFjaywgYW5kIGlmIHRoZXJlIGFyZSBhbnkgc3VidGxlIGluZWZmaWNpZW5jaWVzIGhhcHBlbmluZy4gSSB3YW50IHRvIGNoZWNrIGZvciBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTIxMywiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTc6NDQ6MDcuMjczMjY0NjcxWiIsIlNlcSI6MzgsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NTI1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvd2lyZWxlc3MvY29yZS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDU2OSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDU2OTpcXHRcXHRXQVJOX09OKG9wcy1cXHUwMDNlc2NoZWRfc2Nhbl9zdGFydCBcXHUwMDI2XFx1MDAyNiAhb3BzLVxcdTAwM2VzY2hlZF9zY2FuX3N0b3ApO1xcbiA1NzA6XFx0XFx0V0FSTl9PTihvcHMtXFx1MDAzZXJlbWFpbl9vbl9jaGFubmVsIFxcdTAwMjZcXHUwMDI2ICFvcHMtXFx1MDAzZWNhbmNlbF9yZW1haW5fb25fY2hhbm5lbCk7XFxuIDU3MTpcXHRcXHRXQVJOX09OKG9wcy1cXHUwMDNldGRsc19jaGFubmVsX3N3aXRjaCBcXHUwMDI2XFx1MDAyNiAhb3BzLVxcdTAwM2V0ZGxzX2NhbmNlbF9jaGFubmVsX3N3aXRjaCk7XFxuIDU3MjpcXHRcXHRXQVJOX09OKG9wcy1cXHUwMDNlYWRkX3R4X3RzIFxcdTAwMjZcXHUwMDI2ICFvcHMtXFx1MDAzZWRlbF90eF90cyk7XFxuIDU3MzpcXHRcXG4gNTc0OlxcdFxcdGFsbG9jX3NpemUgPSBzaXplb2YoKnJkZXYpICsgc2l6ZW9mX3ByaXY7XFxuIDU3NTpcXHRcXG4gNTc2OlxcdFxcdHJkZXYgPSBremFsbG9jKGFsbG9jX3NpemUsIEdGUF9LRVJORUwpO1xcbiA1Nzc6XFx0XFx0aWYgKCFyZGV2KVxcbiA1Nzg6XFx0XFx0XFx0cmV0dXJuIE5VTEw7XFxuIDU3OTpcXHRcXG4gNTgwOlxcdFxcdHJkZXYtXFx1MDAzZW9wcyA9IG9wcztcXG4gNTgxOlxcdFxcbiA1ODI6XFx0XFx0cmRldi1cXHUwMDNld2lwaHlfaWR4ID0gYXRvbWljX2luY19yZXR1cm4oXFx1MDAyNndpcGh5X2NvdW50ZXIpO1xcbiA1ODM6XFx0XFxuIDU4NDpcXHRcXHRpZiAodW5saWtlbHkocmRldi1cXHUwMDNld2lwaHlfaWR4IFxcdTAwM2MgMCkpIHtcXG4gNTg1OlxcdFxcdFxcdC8qIHVnaCwgd3JhcHBlZCEgKi9cXG4gNTg2OlxcdFxcdFxcdGF0b21pY19kZWMoXFx1MDAyNndpcGh5X2NvdW50ZXIpO1xcbiA1ODc6XFx0XFx0XFx0a2ZyZWUocmRldik7XFxuIDU4ODpcXHRcXHRcXHRyZXR1cm4gTlVMTDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTc6NDQ6MDcuMjczNDIxOTkxWiIsIlNlcSI6MzksIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjY1NjM2NzY0MjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBtYWM4MDIxMSBUWCBRdWV1ZSBTY2hlZHVsaW5nIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYG1hYzgwMjExYC4gVGhlIGBsb2NhbGAgc3RydWN0LCB3aGljaCBpcyBhbGxvY2F0ZWQgd2l0aCBga3phbGxvY2AsIG1lYW5zIGJvdGggYHNjaGVkdWxlX29wZW5gIGFuZCBgc2NoZWR1bGVfcm91bmRgIGFyZSBpbml0aWFsbHkgemVyb2VkLiBUaGF0J3MgdGhlIGJhc2VsaW5lLiBOb3cgbGV0J3MgZGlnIGludG8gdGhlIGNvZGUgaXRzZWxmLlxuXG5UaGUgZmlyc3QgY2hhbmdlIGlzIHRoZSBhZGRpdGlvbiBvZiBhIGBib29sIHNjaGVkdWxlX29wZW5bSUVFRTgwMjExX05VTV9BQ1NdYCBhcnJheSB0byB0aGUgYGllZWU4MDIxMV9sb2NhbGAgc3RydWN0IGluIGBpZWVlODAyMTFfaS5oYC4gVGhpcyBhcnJheSBoYXMgdGhlIHNhbWUgc2l6ZSBhcyBgc2NoZWR1bGVfcm91bmRgLCB3aGljaCBtYWtlcyBtZSB0aGluayB0aGV5J3JlIHNvbWVob3cgcmVsYXRlZCBhbmQgYm90aCBwZXItQUMuIFRoaXMgaXMgd2hlcmUgaXQgZ2V0cyBpbnRlcmVzdGluZywgd2l0aCB0aGUgY2hhbmdlcyBpbiBgbmV0L21hYzgwMjExL3R4LmNgLlxuXG5JbiBgaWVlZTgwMjExX25leHRfdHhxYCwgdGhlIG9yaWdpbmFsIGNoZWNrIHdhcyBgIWxvY2FsLVx1MDAzZXNjaGVkdWxlX3JvdW5kW2FjXWAuIE5vdyB0aGF0J3MgYmVlbiByZXBsYWNlZCB3aXRoIGAhbG9jYWwtXHUwMDNlc2NoZWR1bGVfb3BlblthY11gLiBJdCBsb29rcyBsaWtlIHRoZSBpbnRlbnQgaXMgdG8gbm93IHVzZSBgc2NoZWR1bGVfb3BlbmAgdG8gZGV0ZXJtaW5lIGlmIHdlIHNob3VsZCBsb29rIGZvciBhIFRYUS5cblxuVGhlIGBpZWVlODAyMTFfdHhxX3NjaGVkdWxlX3N0YXJ0YCBmdW5jdGlvbiBoYXMgbW9yZSBzaWduaWZpY2FudCBjaGFuZ2VzLiBUaGUgb3JpZ2luYWwgY29kZSB1bmNvbmRpdGlvbmFsbHkgcmVzZXRzIGBsb2NhbC1cdTAwM2VzY2hlZHVsZV9yb3VuZFthY11gIHRvIHplcm8gaWYgdGhlIGFpcnRpbWUgY2hlY2sgZmFpbHMuIFRoZSBwYXRjaCBjaGFuZ2VzIHRoaXMgdG8gdXNlIHRoZSByZXR1cm4gdmFsdWUgb2YgYGllZWU4MDIxMV90eHFfc2NoZWR1bGVfYWlydGltZV9jaGVja2AgdG8gc2V0IGBsb2NhbC1cdTAwM2VzY2hlZHVsZV9vcGVuW2FjXWAuIEl0IHRoZW4gdXBkYXRlcyBgc2NoZWR1bGVfcm91bmRgIG9ubHkgaWYgYHNjaGVkdWxlX29wZW5gIGlzIHRydWUuIENyaXRpY2FsbHksIHRoZSBwYXRjaCBhbHNvIG5vdyB1bmNvbmRpdGlvbmFsbHkgc2V0cyBgc2NoZWR1bGVfb3BlbmAuIEluIGFkZGl0aW9uLCBpdCBpbmNyZW1lbnRzIGBzY2hlZHVsZV9yb3VuZGAgaWYgaXQgaXMgc2V0LiBUaGUgYWRkZWQgY29kZSBhbHNvIGhhbmRsZXMgdGhlIGNhc2Ugd2hlbiBgc2NoZWR1bGVfcm91bmRgIHdyYXBzLCB3aGljaCBpbmRpY2F0ZXMgYSBjb3VudGVyIHRoYXQgaXMgc3VwcG9zZWQgdG8gYmUgbW9ub3RvbmljYWxseSBpbmNyZWFzaW5nLlxuXG5TbywgSSB0aGluayBJIHNlZSB3aGF0J3MgaGFwcGVuaW5nLiBUaGUgaW50cm9kdWN0aW9uIG9mIGBzY2hlZHVsZV9vcGVuYCBpcyBwcm9iYWJseSB0byBvcHRpbWl6ZSB0aGUgVFhRIHNjaGVkdWxpbmcuIFRoZSBgYWlydGltZV9jaGVja2AgZnVuY3Rpb24gcHJvYmFibHkgZGV0ZXJtaW5lcyBpZiB0aGUgQUMgaGFzIGF2YWlsYWJsZSBhaXJ0aW1lIHRvIHRyYW5zbWl0LiBSYXRoZXIgdGhhbiByZXNldHRpbmcgYHNjaGVkdWxlX3JvdW5kYCBkaXJlY3RseSAoYW5kIHByZXZlbnRpbmcgYW55IFRYUSBjb25zaWRlcmF0aW9uKSwgYHNjaGVkdWxlX29wZW5gIGlzIG5vdyB1c2VkIGFzIGEgZ2F0ZS4gTm93IHdlIGNvbmRpdGlvbmFsbHkgaW5jcmVtZW50IGBzY2hlZHVsZV9yb3VuZGAgb25seSB3aGVuIHRoZSBhaXJ0aW1lIGNoZWNrIHBhc3NlcywgYW5kIGJ5IGV4dGVuc2lvbiwgd2Ugb25seSBnbyBpbnRvIHRoZSBsb2dpYyBpbiBgaWVlZTgwMjExX25leHRfdHhxYCB0aGF0IHVzZXMgYHNjaGVkdWxlX3JvdW5kYCBpZiBgc2NoZWR1bGVfb3BlbmAgaXMgdHJ1ZS5cblxuVGhpcyBtYWtlcyBzZW5zZS4gQnkgdXNpbmcgYSBzZXBhcmF0ZSBmbGFnLCB3ZSBjYW4gbWFrZSB0aGUgc2NoZWR1bGluZyBsb2dpYyBtb3JlIG51YW5jZWQgYW5kIHBvc3NpYmx5IG1vcmUgZWZmaWNpZW50IGJ5IGV4cGxpY2l0bHkgZW5hYmxpbmcgb3IgZGlzYWJsaW5nIFRYUSBjb25zaWRlcmF0aW9uLiBJdCdzIGEgbmljZSwgY2xlYW4gd2F5IHRvIGludHJvZHVjZSBhIHNjaGVkdWxpbmcgb3B0aW1pemF0aW9uIGJhc2VkIG9uIGFpcnRpbWUgYXZhaWxhYmlsaXR5LiBUaGUgd3JhcCBhcm91bmQgY2hlY2sgbWFrZXMgbWUgdGhpbmsgdGhhdCB0aGVzZSBhcmUgY291bnRlcnMgdGhhdCBhcmUgdXNlZCB0byBkZXRlcm1pbmUgd2hpY2ggVFhRIHdlIHNob3VsZCBjb25zaWRlciBuZXh0LiBOb3csIEkgc2hvdWxkIHByb2JhYmx5IGxvb2sgYXQgd2hhdCBgaWVlZTgwMjExX3R4cV9zY2hlZHVsZV9haXJ0aW1lX2NoZWNrYCBhY3R1YWxseSAqZG9lcyouIFRoYXQgd2lsbCBiZSB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGZ1bGwgaW1wbGljYXRpb25zIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxNzk0LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODQyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTc6NDQ6MTMuODM3MTAzMzU4WiIsIlNlcSI6NDAsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxNDM3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbWFjODAyMTEvdHguY1wiLFxuICBcIkZpcnN0TGluZVwiOiA0MTE1LFxuICBcIkxpbmVDb3VudFwiOiA4MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCI0MTE1OlxcdHN0cnVjdCBpZWVlODAyMTFfdHhxICppZWVlODAyMTFfbmV4dF90eHEoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHU4IGFjKVxcbjQxMTY6XFx0e1xcbjQxMTc6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBod190b19sb2NhbChodyk7XFxuNDExODpcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqcmV0ID0gTlVMTDtcXG40MTE5OlxcdFxcdHN0cnVjdCB0eHFfaW5mbyAqdHhxaSA9IE5VTEwsICpoZWFkID0gTlVMTDtcXG40MTIwOlxcdFxcdGJvb2wgZm91bmRfZWxpZ2libGVfdHhxID0gZmFsc2U7XFxuNDEyMTpcXHRcXHRib29sIGFxbF9jaGVjaztcXG40MTIyOlxcdFxcbjQxMjM6XFx0XFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZsb2NhbC1cXHUwMDNlYWN0aXZlX3R4cV9sb2NrW2FjXSk7XFxuNDEyNDpcXHRcXG40MTI1OlxcdFxcdGlmICghbG9jYWwtXFx1MDAzZXNjaGVkdWxlX29wZW5bYWNdKVxcbjQxMjY6XFx0XFx0XFx0Z290byBvdXQ7XFxuNDEyNzpcXHRcXG40MTI4OlxcdCBiZWdpbjpcXG40MTI5OlxcdFxcdHR4cWkgPSBsaXN0X2ZpcnN0X2VudHJ5X29yX251bGwoXFx1MDAyNmxvY2FsLVxcdTAwM2VhY3RpdmVfdHhxc1thY10sXFxuNDEzMDpcXHRcXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgdHhxX2luZm8sXFxuNDEzMTpcXHRcXHRcXHRcXHRcXHRcXHRzY2hlZHVsZV9vcmRlcik7XFxuNDEzMjpcXHRcXHRpZiAoIXR4cWkpXFxuNDEzMzpcXHRcXHRcXHRnb3RvIG91dDtcXG40MTM0OlxcdFxcbjQxMzU6XFx0XFx0aWYgKHR4cWkgPT0gaGVhZCkge1xcbjQxMzY6XFx0XFx0XFx0aWYgKCFmb3VuZF9lbGlnaWJsZV90eHEpXFxuNDEzNzpcXHRcXHRcXHRcXHRnb3RvIG91dDtcXG40MTM4OlxcdFxcdFxcdGVsc2VcXG40MTM5OlxcdFxcdFxcdFxcdGZvdW5kX2VsaWdpYmxlX3R4cSA9IGZhbHNlO1xcbjQxNDA6XFx0XFx0fVxcbjQxNDE6XFx0XFxuNDE0MjpcXHRcXHRpZiAoIWhlYWQpXFxuNDE0MzpcXHRcXHRcXHRoZWFkID0gdHhxaTtcXG40MTQ0OlxcdFxcbjQxNDU6XFx0XFx0YXFsX2NoZWNrID0gaWVlZTgwMjExX3R4cV9haXJ0aW1lX2NoZWNrKGh3LCBcXHUwMDI2dHhxaS1cXHUwMDNldHhxKTtcXG40MTQ2OlxcdFxcdGlmIChhcWxfY2hlY2spXFxuNDE0NzpcXHRcXHRcXHRmb3VuZF9lbGlnaWJsZV90eHEgPSB0cnVlO1xcbjQxNDg6XFx0XFxuNDE0OTpcXHRcXHRpZiAodHhxaS1cXHUwMDNldHhxLnN0YSkge1xcbjQxNTA6XFx0XFx0XFx0c3RydWN0IHN0YV9pbmZvICpzdGEgPSBjb250YWluZXJfb2YodHhxaS1cXHUwMDNldHhxLnN0YSxcXG40MTUxOlxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICBzdHJ1Y3Qgc3RhX2luZm8sIHN0YSk7XFxuNDE1MjpcXHRcXG40MTUzOlxcdFxcdFxcdGlmIChpZWVlODAyMTFfc3RhX2RlZmljaXQoc3RhLCB0eHFpLVxcdTAwM2V0eHEuYWMpIFxcdTAwM2MgMCkge1xcbjQxNTQ6XFx0XFx0XFx0XFx0c3RhLVxcdTAwM2VhaXJ0aW1lW3R4cWktXFx1MDAzZXR4cS5hY10uZGVmaWNpdCArPVxcbjQxNTU6XFx0XFx0XFx0XFx0XFx0c3RhLVxcdTAwM2VhaXJ0aW1lX3dlaWdodDtcXG40MTU2OlxcdFxcbjQxNTc6XFx0XFx0XFx0XFx0YXFsX2NoZWNrID0gZmFsc2U7XFxuNDE1ODpcXHRcXHRcXHR9XFxuNDE1OTpcXHRcXHR9XFxuNDE2MDpcXHRcXG40MTYxOlxcdFxcdGlmICghYXFsX2NoZWNrKSB7XFxuNDE2MjpcXHRcXHRcXHRsaXN0X21vdmVfdGFpbChcXHUwMDI2dHhxaS1cXHUwMDNlc2NoZWR1bGVfb3JkZXIsXFxuNDE2MzpcXHRcXHRcXHRcXHRcXHQgICBcXHUwMDI2bG9jYWwtXFx1MDAzZWFjdGl2ZV90eHFzW3R4cWktXFx1MDAzZXR4cS5hY10pO1xcbjQxNjQ6XFx0XFx0XFx0Z290byBiZWdpbjtcXG40MTY1OlxcdFxcdH1cXG40MTY2OlxcdFxcbjQxNjc6XFx0XFx0aWYgKHR4cWktXFx1MDAzZXNjaGVkdWxlX3JvdW5kID09IGxvY2FsLVxcdTAwM2VzY2hlZHVsZV9yb3VuZFthY10pXFxuNDE2ODpcXHRcXHRcXHRnb3RvIG91dDtcXG40MTY5OlxcdFxcbjQxNzA6XFx0XFx0bGlzdF9kZWxfaW5pdChcXHUwMDI2dHhxaS1cXHUwMDNlc2NoZWR1bGVfb3JkZXIpO1xcbjQxNzE6XFx0XFx0dHhxaS1cXHUwMDNlc2NoZWR1bGVfcm91bmQgPSBsb2NhbC1cXHUwMDNlc2NoZWR1bGVfcm91bmRbYWNdO1xcbjQxNzI6XFx0XFx0cmV0ID0gXFx1MDAyNnR4cWktXFx1MDAzZXR4cTtcXG40MTczOlxcdFxcbjQxNzQ6XFx0b3V0OlxcbjQxNzU6XFx0XFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNmxvY2FsLVxcdTAwM2VhY3RpdmVfdHhxX2xvY2tbYWNdKTtcXG40MTc2OlxcdFxcdHJldHVybiByZXQ7XFxuNDE3NzpcXHR9XFxuNDE3ODpcXHRFWFBPUlRfU1lNQk9MKGllZWU4MDIxMV9uZXh0X3R4cSk7XFxuNDE3OTpcXHRcXG40MTgwOlxcdHZvaWQgX19pZWVlODAyMTFfc2NoZWR1bGVfdHhxKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbjQxODE6XFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV90eHEgKnR4cSxcXG40MTgyOlxcdFxcdFxcdFxcdCAgICAgIGJvb2wgZm9yY2UpXFxuNDE4MzpcXHR7XFxuNDE4NDpcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IGh3X3RvX2xvY2FsKGh3KTtcXG40MTg1OlxcdFxcdHN0cnVjdCB0eHFfaW5mbyAqdHhxaSA9IHRvX3R4cV9pbmZvKHR4cSk7XFxuNDE4NjpcXHRcXHRib29sIGhhc19xdWV1ZTtcXG40MTg3OlxcdFxcbjQxODg6XFx0XFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZsb2NhbC1cXHUwMDNlYWN0aXZlX3R4cV9sb2NrW3R4cS1cXHUwMDNlYWNdKTtcXG40MTg5OlxcdFxcbjQxOTA6XFx0XFx0aGFzX3F1ZXVlID0gZm9yY2UgfHxcXG40MTkxOlxcdFxcdFxcdCAgICAoIXRlc3RfYml0KElFRUU4MDIxMV9UWFFfU1RPUCwgXFx1MDAyNnR4cWktXFx1MDAzZWZsYWdzKSBcXHUwMDI2XFx1MDAyNlxcbjQxOTI6XFx0XFx0XFx0ICAgICB0eHFfaGFzX3F1ZXVlKHR4cSkpO1xcbjQxOTM6XFx0XFx0aWYgKGxpc3RfZW1wdHkoXFx1MDAyNnR4cWktXFx1MDAzZXNjaGVkdWxlX29yZGVyKSBcXHUwMDI2XFx1MDAyNlxcbjQxOTQ6XFx0XFx0ICAgIChoYXNfcXVldWUgfHwgaWVlZTgwMjExX3R4cV9rZWVwX2FjdGl2ZSh0eHFpKSkpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTc6NDQ6MTMuODM3NTIxNjk4WiIsIlNlcSI6NDEsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI5NzU0ODU3MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSBsaW5lIG9mIHRoaW5raW5nLCBwcmVzZW50ZWQgYXMgaWYgaXQgd2VyZSBteSBvd246XG5cbioqRGl2aW5nIERlZXAgaW50byB0aGUgTUFDODAyMTEgVFggUGF0aCoqXG5cbk9rYXksIHNvIHdlJ3JlIGxvb2tpbmcgYXQgdGhlIGJyb2FkZXIgaXNzdWUsIGJ1dCBJIG5lZWQgdG8gem9vbSBpbiBvbiBhIHZlcnkgc3BlY2lmaWMgYXJlYS4gVG8gdHJ1bHkgdW5kZXJzdGFuZCB0aGlzLCBJIG5lZWQgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJJ20gZ29pbmcgdG8gc2hpZnQgZ2VhcnMgYW5kIGdvIHN0cmFpZ2h0IGludG8gdGhlIGNvZGUuIFNwZWNpZmljYWxseSwgSSdtIHRoaW5raW5nIGFib3V0IHRob3NlIGNyaXRpY2FsIHRyYW5zbWl0IG9wZXJhdGlvbnMuIExldCdzIHN0YXJ0IHdpdGggYSBmb2N1c2VkIGludmVzdGlnYXRpb24uIEkgbmVlZCB0byB0YWtlIGEgbG9vayBhdCB0aGUgYG5ldC9tYWM4MDIxMS90eC5jYCBmaWxlOyB0aGF0J3Mgd2hlcmUgdGhlIGhlYXJ0IG9mIHRoZSB0cmFuc21pdCBwYXRoIHJlc2lkZXMuIEFuZCBub3QganVzdCB0aGUgd2hvbGUgZmlsZSwgSSdtIHRoaW5raW5nIGxpbmVzIDQzNDAtNDM3MC4gVGhhdCBzZWN0aW9uIGlzIHVzdWFsbHkgYSByZWFsIGhvdHNwb3QgZm9yIFtpbnNlcnQgcmVsZXZhbnQgdGVjaG5pY2FsIGFyZWEgLSBlLmcuLCByYXRlIGNvbnRyb2wsIGZyYW1lIGFnZ3JlZ2F0aW9uLCBoYXJkd2FyZSBxdWV1ZSBpbnRlcmFjdGlvbl0uIFRoaXMgc3BlY2lmaWMgcmFuZ2UgbGlrZWx5IGhvbGRzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBbc3RhdGUgc3BlY2lmaWMgcmVsZXZhbnQgYXJlYSAtIGUuZy4sIGhvdyB0aGUgZHJpdmVyIGhhbmRsZXMgZnJhbWUgYWNrbm93bGVkZ2VtZW50cywgdGhlIGxvZ2ljIGJlaGluZCB0aGUgcmV0cmFuc21pc3Npb24gdGltZXJzLCBvciB0aGUgbnVhbmNlcyBvZiBwb3dlciBzYXZlIG1vZGUgdHJhbnNpdGlvbnNdLiBJIGNhbiBzZWUgaXQgbm93LCB0aGUgbGluZXMgc2hvdWxkIGJlIHRhbGtpbmcgYWJvdXQuLi4gW2FkZCB5b3VyIHRlY2huaWNhbCBwcmVkaWN0aW9uIGJhc2VkIG9uIHRoZSBjb250ZXh0IC0gZS5nLiwgdGhlIHNwZWNpZmljIHF1ZXVlIGFzc2lnbm1lbnQgb3IgYW55IGZyYW1lIHByb2Nlc3Npbmcgb2NjdXJyaW5nXS4uLiBUaGF0J3Mgd2hlcmUgSSBzaG91bGQgZm9jdXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0NjMyLCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxNzo0NDoxNi44MTMwMTE3OTdaIiwiU2VxIjo0MiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM5MjY3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbWFjODAyMTEvdHguY1wiLFxuICBcIkZpcnN0TGluZVwiOiA0MzQwLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCI0MzQwOlxcdFxcdHJldHVybiB0cnVlO1xcbjQzNDE6XFx0fVxcbjQzNDI6XFx0RVhQT1JUX1NZTUJPTChpZWVlODAyMTFfdHhxX21heV90cmFuc21pdCk7XFxuNDM0MzpcXHRcXG40MzQ0OlxcdHZvaWQgaWVlZTgwMjExX3R4cV9zY2hlZHVsZV9zdGFydChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgdTggYWMpXFxuNDM0NTpcXHR7XFxuNDM0NjpcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IGh3X3RvX2xvY2FsKGh3KTtcXG40MzQ3OlxcdFxcbjQzNDg6XFx0XFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZsb2NhbC1cXHUwMDNlYWN0aXZlX3R4cV9sb2NrW2FjXSk7XFxuNDM0OTpcXHRcXG40MzUwOlxcdFxcdGxvY2FsLVxcdTAwM2VzY2hlZHVsZV9vcGVuW2FjXSA9XFxuNDM1MTpcXHRcXHRcXHRpZWVlODAyMTFfdHhxX3NjaGVkdWxlX2FpcnRpbWVfY2hlY2sobG9jYWwsIGFjKTtcXG40MzUyOlxcdFxcdGlmIChsb2NhbC1cXHUwMDNlc2NoZWR1bGVfb3BlblthY10pIHtcXG40MzUzOlxcdFxcdFxcdGxvY2FsLVxcdTAwM2VzY2hlZHVsZV9yb3VuZFthY10rKztcXG40MzU0OlxcdFxcdFxcdGlmICghbG9jYWwtXFx1MDAzZXNjaGVkdWxlX3JvdW5kW2FjXSlcXG40MzU1OlxcdFxcdFxcdFxcdGxvY2FsLVxcdTAwM2VzY2hlZHVsZV9yb3VuZFthY10rKztcXG40MzU2OlxcdFxcdH1cXG40MzU3OlxcdFxcbjQzNTg6XFx0XFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNmxvY2FsLVxcdTAwM2VhY3RpdmVfdHhxX2xvY2tbYWNdKTtcXG40MzU5OlxcdH1cXG40MzYwOlxcdEVYUE9SVF9TWU1CT0woaWVlZTgwMjExX3R4cV9zY2hlZHVsZV9zdGFydCk7XFxuNDM2MTpcXHRcXG40MzYyOlxcdHZvaWQgX19pZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbjQzNjM6XFx0XFx0XFx0XFx0XFx0ICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbjQzNjQ6XFx0XFx0XFx0XFx0XFx0ICB1MzIgaW5mb19mbGFncyxcXG40MzY1OlxcdFxcdFxcdFxcdFxcdCAgdTMyIGN0cmxfZmxhZ3MpXFxuNDM2NjpcXHR7XFxuNDM2NzpcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IElFRUU4MDIxMV9ERVZfVE9fU1VCX0lGKGRldik7XFxuNDM2ODpcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHNkYXRhLVxcdTAwM2Vsb2NhbDtcXG40MzY5OlxcdFxcdHN0cnVjdCBpZWVlODAyMTFfdHhfaW5mbyAqaW5mbztcXG40MzcwOlxcdFxcdHN0cnVjdCBzdGFfaW5mbyAqc3RhO1xcbjQzNzE6XFx0XFx0c3RydWN0IHNrX2J1ZmYgKm5leHQ7XFxuNDM3MjpcXHRcXHRib29sIGdyb3VwX2FkZHJlc3NlZDtcXG40MzczOlxcdFxcdGludCBsZW4gPSBza2ItXFx1MDAzZWxlbjtcXG40Mzc0OlxcdFxcbjQzNzU6XFx0XFx0aWYgKHVubGlrZWx5KCFpZWVlODAyMTFfc2RhdGFfcnVubmluZyhzZGF0YSkgfHwgc2tiLVxcdTAwM2VsZW4gXFx1MDAzYyBFVEhfSExFTikpIHtcXG40Mzc2OlxcdFxcdFxcdGtmcmVlX3NrYihza2IpO1xcbjQzNzc6XFx0XFx0XFx0cmV0dXJuO1xcbjQzNzg6XFx0XFx0fVxcbjQzNzk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE3OjQ0OjE2LjgxNTQwODU5N1oiLCJTZXEiOjQzLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1NjI0NzM4NDIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgU2FmZXR5IG9mIGEgTUFDODAyMTEgU2NoZWR1bGluZyBDaGFuZ2UqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFdlJ3JlIGxvb2tpbmcgYXQgYSBjaGFuZ2UgcmVsYXRlZCB0byB0aGUgYWlydGltZSBzY2hlZHVsaW5nIHdpdGhpbiB0aGUgTUFDODAyMTEgbGF5ZXIsIHNwZWNpZmljYWxseSBkZWFsaW5nIHdpdGggdGhlIGBzY2hlZHVsZV9vcGVuYCBib29sZWFuIGFycmF5LiBUaGlzIGlzIHBhcnQgb2YgdGhlIGBpZWVlODAyMTFfbG9jYWxgIHN0cnVjdHVyZSwgd2hpY2ggaXMgYWxsb2NhdGVkIHdpdGggYGt6YWxsb2NgLiBUaGlzIGlzIGltcG9ydGFudCwgYXMgYGt6YWxsb2NgIGd1YXJhbnRlZXMgemVyby1pbml0aWFsaXphdGlvbiwgd2hpY2ggaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LlxuXG5UaGUgY29yZSBvZiB0aGUgY2hhbmdlIGludm9sdmVzIGhvdyB3ZSB0cmFjayB3aGV0aGVyIGEgcXVldWUgaXMgb3BlbiBmb3Igc2NoZWR1bGluZy4gUHJldmlvdXNseSwgd2Ugd2VyZSB1c2luZyBgc2NoZWR1bGVfcm91bmRgIGZvciB0aGlzLCBidXQgdGhhdCBwcmVzZW50ZWQgcG90ZW50aWFsIGNvbmZsaWN0cy4gTm93LCBgc2NoZWR1bGVfb3BlblthY11gIGlzIHNldCBiYXNlZCBvbiB0aGUgYGllZWU4MDIxMV90eHFfc2NoZWR1bGVfYWlydGltZV9jaGVjaygpYCBmdW5jdGlvbiB3aXRoaW4gdGhlIGBpZWVlODAyMTFfdHhxX3NjaGVkdWxlX3N0YXJ0KClgIGZ1bmN0aW9uIGFuZCBjaGVja2VkIHdpdGhpbiB0aGUgYGllZWU4MDIxMV9uZXh0X3R4cSgpYCBmdW5jdGlvbi4gU28sIHdlJ3JlIGRlY291cGxpbmcgdGhlIFwib3Blbi9jbG9zZWRcIiBzdGF0ZSBmcm9tIHRoZSByb3VuZCBjb3VudGVyIHVzaW5nIHRoaXMgYm9vbGVhbi5cblxuTXkgcHJpbWFyeSBjb25jZXJuLCBhcyBhbHdheXMsIGlzIHdoZXRoZXIgdGhpcyBpbnRyb2R1Y2VzIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZXMuIFNvIEkgbmVlZCB0byBnbyB0aHJvdWdoIG15IG1lbnRhbCBjaGVja2xpc3Q6XG5cbjEuICBgc2NoZWR1bGVfb3BlbmAgaXMgcGFydCBvZiBgc3RydWN0IGllZWU4MDIxMV9sb2NhbGAsIGFsbG9jYXRlZCB3aXRoIGBremFsbG9jYCwgZW5zdXJpbmcgaXQgc3RhcnRzIGFzIGFsbCB6ZXJvcy4gR29vZC5cbjIuICBObyBkYXRhIGZyb20gdGhlc2Ugc3RydWN0dXJlcyBnZXRzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBlbGltaW5hdGluZyBhIHdob2xlIGNsYXNzIG9mIHBvdGVudGlhbCBwcm9ibGVtcy4gRXhjZWxsZW50LlxuMy4gIFdlJ3JlIG5vdCByZWFkaW5nIG9yIHVzaW5nIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhpcyBpcyBjcml0aWNhbC4gYHNjaGVkdWxlX29wZW5gIGlzIHNldCBiZWZvcmUgYmVpbmcgcmVhZCBhbmQgaXMgemVyby1pbml0aWFsaXplZCBhbnl3YXkuXG40LiAgTm8gc3RhY2sgb3IgaGVhcCBidWZmZXJzIGFyZSBiZWluZyBsZWZ0IHVuaW5pdGlhbGl6ZWQuXG5cbkRvZXMgdGhpcyBjaGFuZ2UgaW50cm9kdWNlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcz8gVGhlIGFuc3dlciBpcyBhIHNvbGlkIFwibm8uXCJcblxuTm93LCB0byBtYWtlIHN1cmUsIGxldCdzIHN0ZXAgdGhyb3VnaCB0aGUgcXVlc3Rpb25zLlxuXG4qICAgQXJlIHdlIHNlbmRpbmcgYW55IGtlcm5lbCBzdHJ1Y3R1cmVzIHRvIHVzZXIgc3BhY2U/IE5vcGUuXG4qICAgSXMgdGhlcmUgY29uZGl0aW9uYWwgbG9naWMgZGVwZW5kZW50IG9uIGFueSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcz8gQWJzb2x1dGVseSBub3QuIGBsb2NhbGAgaXMgemVyb2VkIGJ5IGFsbG9jYXRpb24sIGFuZCBgc2NoZWR1bGVfb3BlbmAgaXMgZXhwbGljaXRseSBzZXQgYmVmb3JlIGJlaW5nIHJlYWQuXG4qICAgQXJlIHdlIGFsbG9jYXRpbmcgb3IgaW5pdGlhbGl6aW5nIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzIGNvdWxkIGJlIHJlYWQ/IE5vLlxuKiAgIEhhdmUgd2UgbW9kaWZpZWQgYW55IGJvdW5kcyBjaGVja3Mgb3IgbGVuZ3RocyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIGRhdGE/IE5vLlxuXG5TaW5jZSB0aGlzIGlzIHB1cmVseSBpbnRlcm5hbCBzY2hlZHVsaW5nIGxvZ2ljIHdpdGhpbiBtYWM4MDIxMSwgYW5kIHdlJ3ZlIHZlcmlmaWVkIHRoYXQgdGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGNvbmNlcm5zLCBLQVNBTiBhbmQgc3RhbmRhcmQgZGV0ZWN0b3JzIGRvbid0IHJlYWxseSBjb21lIGludG8gcGxheSBoZXJlLiBXZSdyZSBzYWZlIGZyb20gS01TQU4gY29uY2VybnMsIHRvby4gSXTigJlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQsIGJ1dCBhIGdvb2QgcHJhY3RpY2UuXG5OZWVkc0tNU0FOID0gZmFsc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1Njc2LCJPdXRwdXRUb2tlbnMiOjIyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ0OSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE3OjQ0OjIyLjQ0MDE1MTAxWiIsIlNlcSI6NDQsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzIxNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgYm9vbGVhbiBmaWVsZCBgc2NoZWR1bGVfb3BlbmAgdG8gYHN0cnVjdCBpZWVlODAyMTFfbG9jYWxgIHRvIGRlY291cGxlIHRoZSBzY2hlZHVsaW5nIG9wZW4vY2xvc2VkIHN0YXRlIGZyb20gdGhlIGBzY2hlZHVsZV9yb3VuZGAgY291bnRlciBpbiBtYWM4MDIxMSdzIFRYIHF1ZXVlIHNjaGVkdWxpbmcgbG9naWMuXFxuXFxuLSBgc3RydWN0IGllZWU4MDIxMV9sb2NhbGAgaXMgYWxsb2NhdGVkIHZpYSBga3phbGxvYygpYCBkdXJpbmcgd2lwaHkgcmVnaXN0cmF0aW9uLCBlbnN1cmluZyBhbGwgZmllbGRzIGluY2x1ZGluZyBgc2NoZWR1bGVfb3BlbmAgYXJlIHplcm8taW5pdGlhbGl6ZWQuXFxuLSBUaGUgbmV3IGZpZWxkIGlzIG9ubHkgdXNlZCBpbnRlcm5hbGx5IHdpdGhpbiBgbmV0L21hYzgwMjExL3R4LmNgIGZvciBUWCBxdWV1ZSBzY2hlZHVsaW5nIGNvbnRyb2wgZmxvdyBhbmQgaXMgbmV2ZXIgY29waWVkIHRvIHVzZXIgc3BhY2Ugb3IgdXNlZCBpbiBhbiB1bmluaXRpYWxpemVkIHN0YXRlLlxcbi0gTm8gbmV3IGJ1ZmZlcnMsIHN0YWNrIG9iamVjdHMsIG5ldGxpbmsgYXR0cmlidXRlcywgaW9jdGxzLCBvciB1c2VyLXNwYWNlIGNvcGllcyBhcmUgaW50cm9kdWNlZCBvciBtb2RpZmllZC5cXG5cXG5Db25zZXF1ZW50bHksIHRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgaW5mb3JtYXRpb24gbGVha3MsIGFuZCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgYm9vbGVhbiBmaWVsZCBgc2NoZWR1bGVfb3BlbmAgdG8gYHN0cnVjdCBpZWVlODAyMTFfbG9jYWxgIHRvIGRlY291cGxlIHRoZSBzY2hlZHVsaW5nIG9wZW4vY2xvc2VkIHN0YXRlIGZyb20gdGhlIGBzY2hlZHVsZV9yb3VuZGAgY291bnRlciBpbiBtYWM4MDIxMSdzIFRYIHF1ZXVlIHNjaGVkdWxpbmcgbG9naWMuXFxuXFxuLSBgc3RydWN0IGllZWU4MDIxMV9sb2NhbGAgaXMgYWxsb2NhdGVkIHZpYSBga3phbGxvYygpYCBkdXJpbmcgd2lwaHkgcmVnaXN0cmF0aW9uLCBlbnN1cmluZyBhbGwgZmllbGRzIGluY2x1ZGluZyBgc2NoZWR1bGVfb3BlbmAgYXJlIHplcm8taW5pdGlhbGl6ZWQuXFxuLSBUaGUgbmV3IGZpZWxkIGlzIG9ubHkgdXNlZCBpbnRlcm5hbGx5IHdpdGhpbiBgbmV0L21hYzgwMjExL3R4LmNgIGZvciBUWCBxdWV1ZSBzY2hlZHVsaW5nIGNvbnRyb2wgZmxvdyBhbmQgaXMgbmV2ZXIgY29waWVkIHRvIHVzZXIgc3BhY2Ugb3IgdXNlZCBpbiBhbiB1bmluaXRpYWxpemVkIHN0YXRlLlxcbi0gTm8gbmV3IGJ1ZmZlcnMsIHN0YWNrIG9iamVjdHMsIG5ldGxpbmsgYXR0cmlidXRlcywgaW9jdGxzLCBvciB1c2VyLXNwYWNlIGNvcGllcyBhcmUgaW50cm9kdWNlZCBvciBtb2RpZmllZC5cXG5cXG5Db25zZXF1ZW50bHksIHRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgaW5mb3JtYXRpb24gbGVha3MsIGFuZCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow9jrxh[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-08 17:08:10 +0000 UTC FinishedAt: 2026-09-08 17:44:23 +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": [ "MAC80211", "CFG80211" ], "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": [ "MAC80211", "CFG80211" ], "series_id": "96df9d93-a1b2-45ce-b2db-73e7ee806aae" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ieee80211_next_txq", "ieee80211_txq_schedule_start" ], "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+CgkJCTx0ZD4yMDI2LzA5LzA4IDE3OjQyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O0NGRzgwMjExJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aWVlZTgwMjExX25leHRfdHhxJiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV90eHFfc2NoZWR1bGVfc3RhcnQmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgYm9vbGVhbiBmaWVsZCBgc2NoZWR1bGVfb3BlbmAgdG8gYHN0cnVjdCBpZWVlODAyMTFfbG9jYWxgIHRvIGRlY291cGxlIHRoZSBzY2hlZHVsaW5nIG9wZW4vY2xvc2VkIHN0YXRlIGZyb20gdGhlIGBzY2hlZHVsZV9yb3VuZGAgY291bnRlciBpbiBtYWM4MDIxMSYjMzk7cyBUWCBxdWV1ZSBzY2hlZHVsaW5nIGxvZ2ljLlxuXG4tIGBzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsYCBpcyBhbGxvY2F0ZWQgdmlhIGBremFsbG9jKClgIGR1cmluZyB3aXBoeSByZWdpc3RyYXRpb24sIGVuc3VyaW5nIGFsbCBmaWVsZHMgaW5jbHVkaW5nIGBzY2hlZHVsZV9vcGVuYCBhcmUgemVyby1pbml0aWFsaXplZC5cbi0gVGhlIG5ldyBmaWVsZCBpcyBvbmx5IHVzZWQgaW50ZXJuYWxseSB3aXRoaW4gYG5ldC9tYWM4MDIxMS90eC5jYCBmb3IgVFggcXVldWUgc2NoZWR1bGluZyBjb250cm9sIGZsb3cgYW5kIGlzIG5ldmVyIGNvcGllZCB0byB1c2VyIHNwYWNlIG9yIHVzZWQgaW4gYW4gdW5pbml0aWFsaXplZCBzdGF0ZS5cbi0gTm8gbmV3IGJ1ZmZlcnMsIHN0YWNrIG9iamVjdHMsIG5ldGxpbmsgYXR0cmlidXRlcywgaW9jdGxzLCBvciB1c2VyLXNwYWNlIGNvcGllcyBhcmUgaW50cm9kdWNlZCBvciBtb2RpZmllZC5cblxuQ29uc2VxdWVudGx5LCB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGluZm9ybWF0aW9uIGxlYWtzLCBhbmQgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB0cmFuc21pdCBxdWV1ZSBzY2hlZHVsaW5nIGxvZ2ljIGluIG1hYzgwMjExIChuZXQvbWFjODAyMTEvdHguYyksIGRlY291cGxpbmcgcXVldWUgc2NoZWR1bGUgb3BlbiBzdGF0ZSB0cmFja2luZyBmcm9tIHRoZSBzY2hlZHVsZSByb3VuZCBjb3VudGVyLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGFuZCBleGVjdXRhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB1c2luZyB2aXJ0dWFsIHdpcmVsZXNzIGRyaXZlcnMgKHN1Y2ggYXMgbWFjODAyMTFfaHdzaW0pIGFuZCBzdGFuZGFyZCB3aXJlbGVzcyBuZXRsaW5rL3BhY2tldCBpbnRlcmZhY2VzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDE3OjQyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYzdiZmYxYjI0NTM0MjYzNmZmYzA1YjVkYTM3NGJkODNkYTIwMTI3NFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgU2VwIDggMTc6NDI6NTEgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmggYi9uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaFxuaW5kZXggNTNiMGIwOGQzNDU5Ny4uNjUzMTEzNDBkYjQwNiAxMDA2NDRcbi0tLSBhL25ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaFxuQEAgLTE0NjgsNiAmIzQzOzE0NjgsNyBAQCBzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsIHtcbiBcdHNwaW5sb2NrX3QgYWN0aXZlX3R4cV9sb2NrW0lFRUU4MDIxMV9OVU1fQUNTXTtcbiBcdHN0cnVjdCBsaXN0X2hlYWQgYWN0aXZlX3R4cXNbSUVFRTgwMjExX05VTV9BQ1NdO1xuIFx0dTE2IHNjaGVkdWxlX3JvdW5kW0lFRUU4MDIxMV9OVU1fQUNTXTtcbiYjNDM7XHRib29sIHNjaGVkdWxlX29wZW5bSUVFRTgwMjExX05VTV9BQ1NdO1xuIFxuIFx0Lyogc2VyaWFsaXplcyBpZWVlODAyMTFfaGFuZGxlX3dha2VfdHhfcXVldWUgKi9cbiBcdHNwaW5sb2NrX3QgaGFuZGxlX3dha2VfdHhfcXVldWVfbG9jaztcbmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvdHguYyBiL25ldC9tYWM4MDIxMS90eC5jXG5pbmRleCBjMzMwOTI5NjBkZjI2Li5jNjY1Y2VkOWMwNWNiIDEwMDY0NFxuLS0tIGEvbmV0L21hYzgwMjExL3R4LmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9tYWM4MDIxMS90eC5jXG5AQCAtNDEyMiw3ICYjNDM7NDEyMiw3IEBAIHN0cnVjdCBpZWVlODAyMTFfdHhxICppZWVlODAyMTFfbmV4dF90eHEoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHU4IGFjKVxuIFxuIFx0c3Bpbl9sb2NrX2JoKFx1MDAyNmxvY2FsLVx1MDAzZWFjdGl2ZV90eHFfbG9ja1thY10pO1xuIFxuLVx0aWYgKCFsb2NhbC1cdTAwM2VzY2hlZHVsZV9yb3VuZFthY10pXG4mIzQzO1x0aWYgKCFsb2NhbC1cdTAwM2VzY2hlZHVsZV9vcGVuW2FjXSlcbiBcdFx0Z290byBvdXQ7XG4gXG4gIGJlZ2luOlxuQEAgLTQzNDcsMTIgJiM0Mzs0MzQ3LDEyIEBAIHZvaWQgaWVlZTgwMjExX3R4cV9zY2hlZHVsZV9zdGFydChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgdTggYWMpXG4gXG4gXHRzcGluX2xvY2tfYmgoXHUwMDI2bG9jYWwtXHUwMDNlYWN0aXZlX3R4cV9sb2NrW2FjXSk7XG4gXG4tXHRpZiAoaWVlZTgwMjExX3R4cV9zY2hlZHVsZV9haXJ0aW1lX2NoZWNrKGxvY2FsLCBhYykpIHtcbiYjNDM7XHRsb2NhbC1cdTAwM2VzY2hlZHVsZV9vcGVuW2FjXSA9XG4mIzQzO1x0XHRpZWVlODAyMTFfdHhxX3NjaGVkdWxlX2FpcnRpbWVfY2hlY2sobG9jYWwsIGFjKTtcbiYjNDM7XHRpZiAobG9jYWwtXHUwMDNlc2NoZWR1bGVfb3BlblthY10pIHtcbiBcdFx0bG9jYWwtXHUwMDNlc2NoZWR1bGVfcm91bmRbYWNdJiM0MzsmIzQzOztcbiBcdFx0aWYgKCFsb2NhbC1cdTAwM2VzY2hlZHVsZV9yb3VuZFthY10pXG4gXHRcdFx0bG9jYWwtXHUwMDNlc2NoZWR1bGVfcm91bmRbYWNdJiM0MzsmIzQzOztcbi1cdH0gZWxzZSB7XG4tXHRcdGxvY2FsLVx1MDAzZXNjaGVkdWxlX3JvdW5kW2FjXSA9IDA7XG4gXHR9XG4gXG4gXHRzcGluX3VubG9ja19iaChcdTAwMjZsb2NhbC1cdTAwM2VhY3RpdmVfdHhxX2xvY2tbYWNdKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxNzo0MjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtDRkc4MDIxMSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2llZWU4MDIxMV9uZXh0X3R4cSYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfdHhxX3NjaGVkdWxlX3N0YXJ0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB0cmFuc21pdCBxdWV1ZSBzY2hlZHVsaW5nIGxvZ2ljIGluIG1hYzgwMjExIChuZXQvbWFjODAyMTEvdHguYyksIGRlY291cGxpbmcgcXVldWUgc2NoZWR1bGUgb3BlbiBzdGF0ZSB0cmFja2luZyBmcm9tIHRoZSBzY2hlZHVsZSByb3VuZCBjb3VudGVyLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGFuZCBleGVjdXRhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB1c2luZyB2aXJ0dWFsIHdpcmVsZXNzIGRyaXZlcnMgKHN1Y2ggYXMgbWFjODAyMTFfaHdzaW0pIGFuZCBzdGFuZGFyZCB3aXJlbGVzcyBuZXRsaW5rL3BhY2tldCBpbnRlcmZhY2VzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYzdiZmYxYjI0NTM0MjYzNmZmYzA1YjVkYTM3NGJkODNkYTIwMTI3NApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgU2VwIDggMTc6NDI6NTEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaCBiL25ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oCmluZGV4IDUzYjBiMDhkMzQ1OTcuLjY1MzExMzQwZGI0MDYgMTAwNjQ0Ci0tLSBhL25ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oCkBAIC0xNDY4LDYgJiM0MzsxNDY4LDcgQEAgc3RydWN0IGllZWU4MDIxMV9sb2NhbCB7CiAJc3BpbmxvY2tfdCBhY3RpdmVfdHhxX2xvY2tbSUVFRTgwMjExX05VTV9BQ1NdOwogCXN0cnVjdCBsaXN0X2hlYWQgYWN0aXZlX3R4cXNbSUVFRTgwMjExX05VTV9BQ1NdOwogCXUxNiBzY2hlZHVsZV9yb3VuZFtJRUVFODAyMTFfTlVNX0FDU107CiYjNDM7CWJvb2wgc2NoZWR1bGVfb3BlbltJRUVFODAyMTFfTlVNX0FDU107CiAKIAkvKiBzZXJpYWxpemVzIGllZWU4MDIxMV9oYW5kbGVfd2FrZV90eF9xdWV1ZSAqLwogCXNwaW5sb2NrX3QgaGFuZGxlX3dha2VfdHhfcXVldWVfbG9jazsKZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS90eC5jIGIvbmV0L21hYzgwMjExL3R4LmMKaW5kZXggYzMzMDkyOTYwZGYyNi4uYzY2NWNlZDljMDVjYiAxMDA2NDQKLS0tIGEvbmV0L21hYzgwMjExL3R4LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L21hYzgwMjExL3R4LmMKQEAgLTQxMjIsNyAmIzQzOzQxMjIsNyBAQCBzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqaWVlZTgwMjExX25leHRfdHhxKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCB1OCBhYykKIAogCXNwaW5fbG9ja19iaCgmYW1wO2xvY2FsLSZndDthY3RpdmVfdHhxX2xvY2tbYWNdKTsKIAotCWlmICghbG9jYWwtJmd0O3NjaGVkdWxlX3JvdW5kW2FjXSkKJiM0MzsJaWYgKCFsb2NhbC0mZ3Q7c2NoZWR1bGVfb3BlblthY10pCiAJCWdvdG8gb3V0OwogCiAgYmVnaW46CkBAIC00MzQ3LDEyICYjNDM7NDM0NywxMiBAQCB2b2lkIGllZWU4MDIxMV90eHFfc2NoZWR1bGVfc3RhcnQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHU4IGFjKQogCiAJc3Bpbl9sb2NrX2JoKCZhbXA7bG9jYWwtJmd0O2FjdGl2ZV90eHFfbG9ja1thY10pOwogCi0JaWYgKGllZWU4MDIxMV90eHFfc2NoZWR1bGVfYWlydGltZV9jaGVjayhsb2NhbCwgYWMpKSB7CiYjNDM7CWxvY2FsLSZndDtzY2hlZHVsZV9vcGVuW2FjXSA9CiYjNDM7CQlpZWVlODAyMTFfdHhxX3NjaGVkdWxlX2FpcnRpbWVfY2hlY2sobG9jYWwsIGFjKTsKJiM0MzsJaWYgKGxvY2FsLSZndDtzY2hlZHVsZV9vcGVuW2FjXSkgewogCQlsb2NhbC0mZ3Q7c2NoZWR1bGVfcm91bmRbYWNdJiM0MzsmIzQzOzsKIAkJaWYgKCFsb2NhbC0mZ3Q7c2NoZWR1bGVfcm91bmRbYWNdKQogCQkJbG9jYWwtJmd0O3NjaGVkdWxlX3JvdW5kW2FjXSYjNDM7JiM0Mzs7Ci0JfSBlbHNlIHsKLQkJbG9jYWwtJmd0O3NjaGVkdWxlX3JvdW5kW2FjXSA9IDA7CiAJfQogCiAJc3Bpbl91bmxvY2tfYmgoJmFtcDtsb2NhbC0mZ3Q7YWN0aXZlX3R4cV9sb2NrW2FjXSk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDE3OjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzOTkKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAxOTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaCBmb3IgUG90ZW50aWFsIElzc3VlcyoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIFRoZSBmaXJzdCB0aGluZyBJJiMzOTttIGRvaW5nIGlzIGdldHRpbmcgYSBmZWVsIGZvciB0aGUgc2NvcGUuIFRoaXMgcGF0Y2ggaGl0cyBgbmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmhgIGFuZCBgbmV0L21hYzgwMjExL3R4LmNgLCBzbyBpdCYjMzk7cyBwcm9iYWJseSByZWxhdGVkIHRvIDgwMi4xMSB3aXJlbGVzcyB0cmFuc21pc3Npb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgYmVpbmcgY2hhbmdlZCBhbmQgd2hldGhlciBpdCBpbnRyb2R1Y2VzIGFueXRoaW5nIHByb2JsZW1hdGljLgoKSSYjMzk7bSB6ZXJvaW5nIGluIG9uIGBuZXQvbWFjODAyMTEvdHguY2AsIHBhcnRpY3VsYXJseSBhcm91bmQgbGluZXMgNDEyMiBhbmQgNDM0Ny4gSSB3YW50IHRvIHNlZSB3aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBtaWdodCBhZmZlY3QgdGhpcyBjb2RlLCB3aGF0IGZ1bmN0aW9ucyBhcmUgY2FsbGVkLCBhbmQgaG93IGRlZXBseSB0aGlzIG1vZGlmaWNhdGlvbiBnb2VzLiBDcml0aWNhbGx5LCBJIGhhdmUgdG8gY29uc2lkZXIgd2hldGhlciB0aGlzIGFyZWEgaXMgcmVhY2hhYmxlIHdpdGhpbiBhIHN0YW5kYXJkIGZ1enppbmcgc2V0dXAg4oCTIHRoaW5rIGBtYWM4MDIxMV9od3NpbWAsIGBubDgwMjExYCwgdGhvc2Ugc29ydHMgb2Ygc2ltdWxhdGVkIHdpZmkgZGV2aWNlcyB0aGF0IHN5emthbGxlciBoYW1tZXJzLiBJdCYjMzk7cyBlc3NlbnRpYWwgdG8gdW5kZXJzdGFuZCBpZiBvdXIgZnV6emluZyBlZmZvcnRzIGFyZSBsaWtlbHkgdG8gaGl0IHRoaXMgbmV3IGNvZGUgcGF0aC4KClRvIGdldCBhIGJldHRlciBncmlwIG9uIHRoZSBzaXR1YXRpb24gSSB0aGluayBJJiMzOTtsbCB1c2UgZWl0aGVyIGByZWFkLWZpbGVgIG9yIGBncmVwcGVyYCB0byBpbnNwZWN0IGBuZXQvbWFjODAyMTEvdHguY2AsIHdoaWNoIHNob3VsZCBwcm92aWRlIGVub3VnaCBjb250ZXh0dWFsIGRldGFpbC4gSSBzaG91bGQgYWxzbyBjaGVjayB0aGUgYEtjb25maWdgIGZpbGVzIHJlbGF0ZWQgdG8gdGhpcyBwYXJ0IG9mIHRoZSBrZXJuZWwsIGluIGNhc2UgdGhlcmUgYXJlIGFueSBjb25kaXRpb25hbCBkZXBlbmRlbmNpZXMgb3IgZmVhdHVyZXMgdGhhdCBhcmUgbmV3bHkgZW5hYmxlZCBvciBkaXNhYmxlZC4gVGhpcyB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgY29kZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxNzo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS90eC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDExNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDs0MTE1Olx0c3RydWN0IGllZWU4MDIxMV90eHEgKmllZWU4MDIxMV9uZXh0X3R4cShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgdTggYWMpXG40MTE2Olx0e1xuNDExNzpcdFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBod190b19sb2NhbChodyk7XG40MTE4Olx0XHRzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqcmV0ID0gTlVMTDtcbjQxMTk6XHRcdHN0cnVjdCB0eHFfaW5mbyAqdHhxaSA9IE5VTEwsICpoZWFkID0gTlVMTDtcbjQxMjA6XHRcdGJvb2wgZm91bmRfZWxpZ2libGVfdHhxID0gZmFsc2U7XG40MTIxOlx0XHRib29sIGFxbF9jaGVjaztcbjQxMjI6XHRcbjQxMjM6XHRcdHNwaW5fbG9ja19iaChcdTAwMjZsb2NhbC1cdTAwM2VhY3RpdmVfdHhxX2xvY2tbYWNdKTtcbjQxMjQ6XHRcbjQxMjU6XHRcdGlmICghbG9jYWwtXHUwMDNlc2NoZWR1bGVfb3BlblthY10pXG40MTI2Olx0XHRcdGdvdG8gb3V0O1xuNDEyNzpcdFxuNDEyODpcdCBiZWdpbjpcbjQxMjk6XHRcdHR4cWkgPSBsaXN0X2ZpcnN0X2VudHJ5X29yX251bGwoXHUwMDI2bG9jYWwtXHUwMDNlYWN0aXZlX3R4cXNbYWNdLFxuNDEzMDpcdFx0XHRcdFx0XHRzdHJ1Y3QgdHhxX2luZm8sXG40MTMxOlx0XHRcdFx0XHRcdHNjaGVkdWxlX29yZGVyKTtcbjQxMzI6XHRcdGlmICghdHhxaSlcbjQxMzM6XHRcdFx0Z290byBvdXQ7XG40MTM0Olx0XG40MTM1Olx0XHRpZiAodHhxaSA9PSBoZWFkKSB7XG40MTM2Olx0XHRcdGlmICghZm91bmRfZWxpZ2libGVfdHhxKVxuNDEzNzpcdFx0XHRcdGdvdG8gb3V0O1xuNDEzODpcdFx0XHRlbHNlXG40MTM5Olx0XHRcdFx0Zm91bmRfZWxpZ2libGVfdHhxID0gZmFsc2U7XG40MTQwOlx0XHR9XG40MTQxOlx0XG40MTQyOlx0XHRpZiAoIWhlYWQpXG40MTQzOlx0XHRcdGhlYWQgPSB0eHFpO1xuNDE0NDpcdFxuNDE0NTpcdFx0YXFsX2NoZWNrID0gaWVlZTgwMjExX3R4cV9haXJ0aW1lX2NoZWNrKGh3LCBcdTAwMjZ0eHFpLVx1MDAzZXR4cSk7XG40MTQ2Olx0XHRpZiAoYXFsX2NoZWNrKVxuNDE0NzpcdFx0XHRmb3VuZF9lbGlnaWJsZV90eHEgPSB0cnVlO1xuNDE0ODpcdFxuNDE0OTpcdFx0aWYgKHR4cWktXHUwMDNldHhxLnN0YSkge1xuNDE1MDpcdFx0XHRzdHJ1Y3Qgc3RhX2luZm8gKnN0YSA9IGNvbnRhaW5lcl9vZih0eHFpLVx1MDAzZXR4cS5zdGEsXG40MTUxOlx0XHRcdFx0XHRcdFx0ICAgIHN0cnVjdCBzdGFfaW5mbywgc3RhKTtcbjQxNTI6XHRcbjQxNTM6XHRcdFx0aWYgKGllZWU4MDIxMV9zdGFfZGVmaWNpdChzdGEsIHR4cWktXHUwMDNldHhxLmFjKSBcdTAwM2MgMCkge1xuNDE1NDpcdFx0XHRcdHN0YS1cdTAwM2VhaXJ0aW1lW3R4cWktXHUwMDNldHhxLmFjXS5kZWZpY2l0ICYjNDM7PVxuNDE1NTpcdFx0XHRcdFx0c3RhLVx1MDAzZWFpcnRpbWVfd2VpZ2h0O1xuNDE1NjpcdFxuNDE1NzpcdFx0XHRcdGFxbF9jaGVjayA9IGZhbHNlO1xuNDE1ODpcdFx0XHR9XG40MTU5Olx0XHR9XG40MTYwOlx0XG40MTYxOlx0XHRpZiAoIWFxbF9jaGVjaykge1xuNDE2MjpcdFx0XHRsaXN0X21vdmVfdGFpbChcdTAwMjZ0eHFpLVx1MDAzZXNjaGVkdWxlX29yZGVyLFxuNDE2MzpcdFx0XHRcdFx0ICAgXHUwMDI2bG9jYWwtXHUwMDNlYWN0aXZlX3R4cXNbdHhxaS1cdTAwM2V0eHEuYWNdKTtcbjQxNjQ6XHRcdFx0Z290byBiZWdpbjtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxNzo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NzQyCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRoaW5raW5nLCBleHByZXNzZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqRGl2aW5nIGludG8gdGhlIE1BQzgwMjExIFRyYW5zbWlzc2lvbiBDb2RlKioKCk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5IHdpdGggYG5ldC9tYWM4MDIxMS90eC5jYC4gTGV0JiMzOTtzIHplcm8gaW4gb24gYSBzcGVjaWZpYyBwb2ludCB0byBhdm9pZCBnZXR0aW5nIGxvc3QgaW4gdGhlIHdlZWRzIHJpZ2h0IGF3YXkuIEkmIzM5O20gZ29pbmcgdG8ganVtcCB0byBsaW5lIDQzNDcuIEJhc2VkIG9uIG15IHBhc3QgZXhwZXJpZW5jZSB3aXRoIE1BQzgwMjExLCBJIGV4cGVjdCB0aGlzIGFyZWEgdG8gbGlrZWx5IGRlYWwgd2l0aOKApiBbSGVyZSwgSSYjMzk7ZCBmaWxsIGluIHRoZSBsaWtlbHkgZnVuY3Rpb24gYmFzZWQgb24gbXkgZXhwZXJ0aXNlIC0gc29tZXRoaW5nIGxpa2U6ICYjMzQ74oCmcmV0cmFuc21pc3Npb24gbG9naWMsIHJhdGUgYWRhcHRhdGlvbiwgb3IgcG9zc2libHkgZnJhbWUgYWdncmVnYXRpb24mIzM0Oy5dLiBUaGlzIHNwZWNpZmljIGxpbmUsIHN1cnJvdW5kZWQgYnkgdGhlIGNvZGUgYXJvdW5kIGl0LCB3aWxsIHN1cmVseSBwcm92aWRlIHNvbWUgY3JpdGljYWwgaW5zaWdodHMuIExldOKAmXMgc2VlIHdoYXQmIzM5O3MgcmVhbGx5IGhhcHBlbmluZyBpbiB0aGF0IHNlY3Rpb24gb2YgdGhlIHRyYW5zbWlzc2lvbiBwcm9jZXNzLiBUaGlzIHNwb3Qgc2VlbXMgcHJvbWlzaW5nIGZvciBleGFtaW5pbmcgdGhlIG51YW5jZXMgb2YgaG93IHRoZSBNQUMgbGF5ZXIgaGFuZGxlcyBwYWNrZXQgdHJhbnNtaXNzaW9uLiBMZXQmIzM5O3Mgc2VlIGlmIHRoaXMganVtcCBwcm92aWRlcyB0aGUgZGF0YSBJIG5lZWQhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTc6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvdHguYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQzNDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7NDM0MDpcdFx0cmV0dXJuIHRydWU7XG40MzQxOlx0fVxuNDM0MjpcdEVYUE9SVF9TWU1CT0woaWVlZTgwMjExX3R4cV9tYXlfdHJhbnNtaXQpO1xuNDM0MzpcdFxuNDM0NDpcdHZvaWQgaWVlZTgwMjExX3R4cV9zY2hlZHVsZV9zdGFydChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgdTggYWMpXG40MzQ1Olx0e1xuNDM0NjpcdFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBod190b19sb2NhbChodyk7XG40MzQ3Olx0XG40MzQ4Olx0XHRzcGluX2xvY2tfYmgoXHUwMDI2bG9jYWwtXHUwMDNlYWN0aXZlX3R4cV9sb2NrW2FjXSk7XG40MzQ5Olx0XG40MzUwOlx0XHRsb2NhbC1cdTAwM2VzY2hlZHVsZV9vcGVuW2FjXSA9XG40MzUxOlx0XHRcdGllZWU4MDIxMV90eHFfc2NoZWR1bGVfYWlydGltZV9jaGVjayhsb2NhbCwgYWMpO1xuNDM1MjpcdFx0aWYgKGxvY2FsLVx1MDAzZXNjaGVkdWxlX29wZW5bYWNdKSB7XG40MzUzOlx0XHRcdGxvY2FsLVx1MDAzZXNjaGVkdWxlX3JvdW5kW2FjXSYjNDM7JiM0Mzs7XG40MzU0Olx0XHRcdGlmICghbG9jYWwtXHUwMDNlc2NoZWR1bGVfcm91bmRbYWNdKVxuNDM1NTpcdFx0XHRcdGxvY2FsLVx1MDAzZXNjaGVkdWxlX3JvdW5kW2FjXSYjNDM7JiM0Mzs7XG40MzU2Olx0XHR9XG40MzU3Olx0XG40MzU4Olx0XHRzcGluX3VubG9ja19iaChcdTAwMjZsb2NhbC1cdTAwM2VhY3RpdmVfdHhxX2xvY2tbYWNdKTtcbjQzNTk6XHR9XG40MzYwOlx0RVhQT1JUX1NZTUJPTChpZWVlODAyMTFfdHhxX3NjaGVkdWxlX3N0YXJ0KTtcbjQzNjE6XHRcbjQzNjI6XHR2b2lkIF9faWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbjQzNjM6XHRcdFx0XHRcdCAgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbjQzNjQ6XHRcdFx0XHRcdCAgdTMyIGluZm9fZmxhZ3MsXG40MzY1Olx0XHRcdFx0XHQgIHUzMiBjdHJsX2ZsYWdzKVxuNDM2NjpcdHtcbjQzNjc6XHRcdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gSUVFRTgwMjExX0RFVl9UT19TVUJfSUYoZGV2KTtcbjQzNjg6XHRcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gc2RhdGEtXHUwMDNlbG9jYWw7XG40MzY5Olx0XHRzdHJ1Y3QgaWVlZTgwMjExX3R4X2luZm8gKmluZm87XG40MzcwOlx0XHRzdHJ1Y3Qgc3RhX2luZm8gKnN0YTtcbjQzNzE6XHRcdHN0cnVjdCBza19idWZmICpuZXh0O1xuNDM3MjpcdFx0Ym9vbCBncm91cF9hZGRyZXNzZWQ7XG40MzczOlx0XHRpbnQgbGVuID0gc2tiLVx1MDAzZWxlbjtcbjQzNzQ6XHRcbjQzNzU6XHRcdGlmICh1bmxpa2VseSghaWVlZTgwMjExX3NkYXRhX3J1bm5pbmcoc2RhdGEpIHx8IHNrYi1cdTAwM2VsZW4gXHUwMDNjIEVUSF9ITEVOKSkge1xuNDM3NjpcdFx0XHRrZnJlZV9za2Ioc2tiKTtcbjQzNzc6XHRcdFx0cmV0dXJuO1xuNDM3ODpcdFx0fVxuNDM3OTpcdFxuNDM4MDpcdFx0c2tfcGFjaW5nX3NoaWZ0X3VwZGF0ZShza2ItXHUwMDNlc2ssIHNkYXRhLVx1MDAzZWxvY2FsLVx1MDAzZWh3LnR4X3NrX3BhY2luZ19zaGlmdCk7XG40MzgxOlx0XG40MzgyOlx0XHRyY3VfcmVhZF9sb2NrKCk7XG40MzgzOlx0XG40Mzg0Olx0XHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tZXNoKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikgXHUwMDI2XHUwMDI2XG40Mzg1Olx0XHQgICAgaWVlZTgwMjExX2h3X2NoZWNrKFx1MDAyNmxvY2FsLVx1MDAzZWh3LCBTVVBQT1JUX0ZBU1RfWE1JVCkgXHUwMDI2XHUwMDI2XG40Mzg2Olx0XHQgICAgaWVlZTgwMjExX21lc2hfeG1pdF9mYXN0KHNkYXRhLCBza2IsIGN0cmxfZmxhZ3MpKVxuNDM4NzpcdFx0XHRnb3RvIG91dDtcbjQzODg6XHRcbjQzODk6XHRcdGlmIChpZWVlODAyMTFfbG9va3VwX3JhX3N0YShzZGF0YSwgc2tiLCBcdTAwMjZzdGEpKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDE3OjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU5MTQKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIHRoZSBtYWM4MDIxMSBLY29uZmlnKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgaW50byB0aGUgZGV0YWlscyBvZiB0aGUgbWFjODAyMTEgS2NvbmZpZyBmaWxlLiBJIG5lZWQgdG8gcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMsIGRlcGVuZGVuY2llcywgYW5kIGhvdyB0aGV5IHJlbGF0ZSB0byB0aGUgb3ZlcmFsbCBkcml2ZXIgYXJjaGl0ZWN0dXJlLiBJJiMzOTttIHRoaW5raW5nIHNwZWNpZmljYWxseSBhYm91dCBob3cgdmFyaW91cyBmZWF0dXJlcyBhcmUgZW5hYmxlZCBvciBkaXNhYmxlZCwgYW5kIHRoZSBpbXBhY3Qgb24gdGhlIHJlc3VsdGluZyBrZXJuZWwgaW1hZ2Ugc2l6ZSBhbmQgZnVuY3Rpb25hbGl0eS4gSSYjMzk7bSBnb2luZyB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBkZXBlbmRlbmNpZXMg4oCTIHRob3NlIGBkZXBlbmRzIG9uYCBzdGF0ZW1lbnRzIGFyZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBob3cgb3B0aW9ucyBpbnRlcmFjdCBhbmQgd2hpY2ggZmVhdHVyZXMgY2FuIGJlIGNvbWJpbmVkLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBhbnkgY2hhbmdlcyBvciBhZGRpdGlvbnMgc2luY2UgdGhlIGxhc3QgdGltZSBJIHJldmlld2VkIGl0IOKAkyBtYXliZSBhIG5ldyByZWd1bGF0b3J5IGRvbWFpbiBjb25maWd1cmF0aW9uIG9wdGlvbiwgYSBuZXcgcG93ZXItc2F2aW5nIGZlYXR1cmUsIG9yIGEgY2hhbmdlIGluIHRoZSBkZWZhdWx0IGJlaGF2aW9yIG9mIGEgc3BlY2lmaWMgd2lyZWxlc3Mgc3RhbmRhcmQuIEFyZSB0aGVyZSBhbnkgbmV3IGhhcmR3YXJlIHBsYXRmb3JtcyBzdXBwb3J0ZWQsIGFuZCBob3cgaXMgdGhhdCByZWZsZWN0ZWQgaW4gdGhlIEtjb25maWc/IEkmIzM5O2xsIGFsc28gdHJ5IHRvIGdhdWdlIHRoZSBsZXZlbCBvZiBtb2R1bGFyaXphdGlvbiDigJMgY2FuIEkgZWFzaWx5IGRpc2FibGUgcGFydHMgSSBkb24mIzM5O3QgbmVlZCwgb3IgYXJlIHRoZXJlIHRpZ2h0bHkgY291cGxlZCBmZWF0dXJlcz8gVGltZSB0byBnZXQgc3RhcnRlZCEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxNzo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTUFDODAyMTEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyOmNvbmZpZyBNQUM4MDIxMVxubmV0L21hYzgwMjExL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0dlbmVyaWMgSUVFRSA4MDIuMTEgTmV0d29ya2luZyBTdGFjayAobWFjODAyMTEpXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9MTk9aWYgTUFDODAyMTEgIT0gblxubmV0L21hYzgwMjExL0tjb25maWctMjAtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMTpjb25maWcgTUFDODAyMTFfSEFTX1JDXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMi1cdGJvb2xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzLVxubmV0L21hYzgwMjExL0tjb25maWc6MjQ6Y29uZmlnIE1BQzgwMjExX1JDX01JTlNUUkVMXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNS1cdGJvb2wgXCYjMzQ7TWluc3RyZWxcJiMzNDsgaWYgRVhQRVJUXG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9MzE9Y2hvaWNlXG4tLVxubmV0L21hYzgwMjExL0tjb25maWctNDAtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo0MTpjb25maWcgTUFDODAyMTFfUkNfREVGQVVMVF9NSU5TVFJFTFxubmV0L21hYzgwMjExL0tjb25maWctNDItXHRib29sIFwmIzM0O01pbnN0cmVsXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9NDg9ZW5kY2hvaWNlXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00OS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjUwOmNvbmZpZyBNQUM4MDIxMV9SQ19ERUZBVUxUXG5uZXQvbWFjODAyMTEvS2NvbmZpZy01MS1cdHN0cmluZ1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnPTU3PWNvbW1lbnQgXCYjMzQ7U29tZSB3aXJlbGVzcyBkcml2ZXJzIHJlcXVpcmUgYSByYXRlIGNvbnRyb2wgYWxnb3JpdGhtXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctNTktXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo2MDpjb25maWcgTUFDODAyMTFfS1VOSVRfVEVTVFxubmV0L21hYzgwMjExL0tjb25maWctNjEtXHR0cmlzdGF0ZSBcJiMzNDtLVW5pdCB0ZXN0cyBmb3IgbWFjODAyMTFcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTY5LVxubmV0L21hYzgwMjExL0tjb25maWc6NzA6Y29uZmlnIE1BQzgwMjExX01FU0hcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTcxLVx0Ym9vbCBcJiMzNDtFbmFibGUgbWFjODAyMTEgbWVzaCBuZXR3b3JraW5nIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy03OC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjc5OmNvbmZpZyBNQUM4MDIxMV9MRURTXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04MC1cdGJvb2wgXCYjMzQ7RW5hYmxlIExFRCB0cmlnZ2Vyc1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTg3LVxubmV0L21hYzgwMjExL0tjb25maWc6ODg6Y29uZmlnIE1BQzgwMjExX0RFQlVHRlNcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTg5LVx0Ym9vbCBcJiMzNDtFeHBvcnQgbWFjODAyMTEgaW50ZXJuYWxzIGluIERlYnVnRlNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy05Ni1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjk3OmNvbmZpZyBNQUM4MDIxMV9NRVNTQUdFX1RSQUNJTkdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTk4LVx0Ym9vbCBcJiMzNDtUcmFjZSBhbGwgbWFjODAyMTEgZGVidWcgbWVzc2FnZXNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMDktXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMTA6bWVudWNvbmZpZyBNQUM4MDIxMV9ERUJVR19NRU5VXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTEtXHRib29sIFwmIzM0O1NlbGVjdCBtYWM4MDIxMSBkZWJ1Z2dpbmcgZmVhdHVyZXNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTUtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMTY6Y29uZmlnIE1BQzgwMjExX05PSU5MSU5FXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTctXHRib29sIFwmIzM0O0RvIG5vdCBpbmxpbmUgVFgvUlggaGFuZGxlcnNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMzEtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMzI6Y29uZmlnIE1BQzgwMjExX1ZFUkJPU0VfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEzMy1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBkZWJ1Z2dpbmcgb3V0cHV0XCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTQyLVxubmV0L21hYzgwMjExL0tjb25maWc6MTQzOmNvbmZpZyBNQUM4MDIxMV9NTE1FX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNDQtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWFuYWdlZCBNTE1FIG91dHB1dFwmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE1My1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE1NDpjb25maWcgTUFDODAyMTFfU1RBX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNTUtXHRib29sIFwmIzM0O1ZlcmJvc2Ugc3RhdGlvbiBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNjItXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNjM6Y29uZmlnIE1BQzgwMjExX0hUX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNjQtXHRib29sIFwmIzM0O1ZlcmJvc2UgSFQgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTc0LVxubmV0L21hYzgwMjExL0tjb25maWc6MTc1OmNvbmZpZyBNQUM4MDIxMV9PQ0JfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE3Ni1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBPQ0IgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTg1LVxubmV0L21hYzgwMjExL0tjb25maWc6MTg2OmNvbmZpZyBNQUM4MDIxMV9JQlNTX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xODctXHRib29sIFwmIzM0O1ZlcmJvc2UgSUJTUyBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xOTYtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxOTc6Y29uZmlnIE1BQzgwMjExX1BTX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xOTgtXHRib29sIFwmIzM0O1ZlcmJvc2UgcG93ZXJzYXZlIG1vZGUgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjA4LVxubmV0L21hYzgwMjExL0tjb25maWc6MjA5OmNvbmZpZyBNQUM4MDIxMV9NUExfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIxMC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIHBlZXIgbGluayBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMjEtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMjI6Y29uZmlnIE1BQzgwMjExX01QQVRIX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMjMtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBwYXRoIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzNC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIzNTpjb25maWcgTUFDODAyMTFfTUhXTVBfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzNi1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIEhXTVAgcm91dGluZyBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNDctXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNDg6Y29uZmlnIE1BQzgwMjExX01FU0hfU1lOQ19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjQ5LVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggc3luY2hyb25pemF0aW9uIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI1OC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI1OTpjb25maWcgTUFDODAyMTFfTUVTSF9DU0FfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2MC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIGNoYW5uZWwgc3dpdGNoIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2OS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI3MDpjb25maWcgTUFDODAyMTFfTUVTSF9QU19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjcxLVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggcG93ZXJzYXZlIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI4MC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI4MTpjb25maWcgTUFDODAyMTFfVERMU19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjgyLVx0Ym9vbCBcJiMzNDtWZXJib3NlIFRETFMgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjkyLVxubmV0L21hYzgwMjExL0tjb25maWc6MjkzOmNvbmZpZyBNQUM4MDIxMV9ERUJVR19DT1VOVEVSU1xubmV0L21hYzgwMjExL0tjb25maWctMjk0LVx0Ym9vbCBcJiMzNDtFeHRyYSBzdGF0aXN0aWNzIGZvciBUWC9SWCBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zMDctXG5uZXQvbWFjODAyMTEvS2NvbmZpZzozMDg6Y29uZmlnIE1BQzgwMjExX1NUQV9IQVNIX01BWF9TSVpFXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zMDktXHRpbnQgXCYjMzQ7U3RhdGlvbiBoYXNoIHRhYmxlIG1heGltdW0gc2l6ZVwmIzM0OyBpZiBNQUM4MDIxMV9ERUJVR19NRU5VXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTc6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODM4MQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgTUFDODAyMTEgRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGluLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBjaGVjayB0aGUgYEtjb25maWdgIGZpbGUsIHNwZWNpZmljYWxseSB0aGUgYmVnaW5uaW5nIG9mIGBuZXQvbWFjODAyMTEvS2NvbmZpZ2AuIEkmIzM5O20gZ29pbmcgc3RyYWlnaHQgZm9yIHRoYXQgZmlsZSBiZWNhdXNlIGl0JiMzOTtzIHdoZXJlIHRoZSBjb3JlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgaW5jbHVkaW5nIGRlcGVuZGVuY2llcywgYXJlIGRlZmluZWQgZm9yIGBNQUM4MDIxMWAuIEkgd2FudCB0byBxdWlja2x5IHVuZGVyc3RhbmQgd2hhdCBvdGhlciBrZXJuZWwgZmVhdHVyZXMgb3IgaGFyZHdhcmUgY29uZmlndXJhdGlvbnMgbmVlZCB0byBiZSBpbiBwbGFjZSAqYmVmb3JlKiBgTUFDODAyMTFgIGlzIGV2ZW4gY29uc2lkZXJlZC4gVGhpcyBpcyBjcnVjaWFsIGZvciBkZWJ1Z2dpbmcgYnVpbGQgaXNzdWVzLCB1bmRlcnN0YW5kaW5nIGRyaXZlciBjb21wYXRpYmlsaXR5LCBvciBldmVuIGFzc2Vzc2luZyB0aGUgYXJjaGl0ZWN0dXJhbCBjb25zdHJhaW50cyBvZiBhIHBhcnRpY3VsYXIgd2lyZWxlc3Mgc2V0dXAuIEnigJltIHRoaW5raW5nLCBmb3IgaW5zdGFuY2UsIGFyZSB0aGVyZSBhbnkgYmFzZSB3aXJlbGVzcyBQSFkgcmVxdWlyZW1lbnRzLCBvciBhcmUgdGhlcmUgZGVwZW5kZW5jaWVzIG9uIHNwZWNpZmljIG5ldHdvcmsgbGF5ZXIgZnVuY3Rpb25hbGl0aWVzIGxpa2UgYSBwYXJ0aWN1bGFyIHZlcnNpb24gb2YgdGhlIGdlbmVyaWMgbmV0d29yayBzdGFjaz8gR3JhYmJpbmcgdGhhdCBkZXBlbmRlbmN5IGluZm9ybWF0aW9uIHdpbGwgZ2l2ZSBtZSB0aGUgYnJvYWQgc3Ryb2tlcyBvZiBob3cgdGhpcyB3b3Jrcy4gSSYjMzk7bSBmb2N1c2luZyBvbiB0aGUgKmRlcGVuZHMgb24qIGNsYXVzZXMgaW4gYEtjb25maWdgIHRvIGdldCB0aGF0IGJpcmQmIzM5O3MtZXllIHZpZXcuIFRoaXMgaXMgYWxsIGFib3V0IGNvbnRleHQ7IHVuZGVyc3RhbmRpbmcgdGhlIHN1cnJvdW5kaW5nIGNvbmRpdGlvbnMgaXMga2V5IHRvIHVuZGVyc3RhbmRpbmcgaG93IGBNQUM4MDIxMWAgaW50ZWdyYXRlcyB3aXRoIHRoZSByZXN0IG9mIHRoZSBrZXJuZWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDE3OjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDI1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRjb25maWcgTUFDODAyMTFcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O0dlbmVyaWMgSUVFRSA4MDIuMTEgTmV0d29ya2luZyBTdGFjayAobWFjODAyMTEpXCYjMzQ7XG4gICA0Olx0XHRkZXBlbmRzIG9uIENGRzgwMjExXG4gICA1Olx0XHRzZWxlY3QgQ1JZUFRPXG4gICA2Olx0XHRzZWxlY3QgQ1JZUFRPX0xJQl9BRVNfQ0JDX01BQ1NcbiAgIDc6XHRcdHNlbGVjdCBDUllQVE9fTElCX0FSQzRcbiAgIDg6XHRcdHNlbGVjdCBDUllQVE9fQUVTXG4gICA5Olx0XHRzZWxlY3QgQ1JZUFRPX0NDTVxuICAxMDpcdFx0c2VsZWN0IENSWVBUT19HQ01cbiAgMTE6XHRcdHNlbGVjdCBDUkMzMlxuICAxMjpcdFx0aGVscFxuICAxMzpcdFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIHRoZSBoYXJkd2FyZSBpbmRlcGVuZGVudCBJRUVFIDgwMi4xMVxuICAxNDpcdFx0ICBuZXR3b3JraW5nIHN0YWNrLlxuICAxNTpcdFxuICAxNjpcdGNvbW1lbnQgXCYjMzQ7Q0ZHODAyMTEgbmVlZHMgdG8gYmUgZW5hYmxlZCBmb3IgTUFDODAyMTFcJiMzNDtcbiAgMTc6XHRcdGRlcGVuZHMgb24gQ0ZHODAyMTE9blxuICAxODpcdFxuICAxOTpcdGlmIE1BQzgwMjExICE9IG5cbiAgMjA6XHRcbiAgMjE6XHRjb25maWcgTUFDODAyMTFfSEFTX1JDXG4gIDIyOlx0XHRib29sXG4gIDIzOlx0XG4gIDI0Olx0Y29uZmlnIE1BQzgwMjExX1JDX01JTlNUUkVMXG4gIDI1Olx0XHRib29sIFwmIzM0O01pbnN0cmVsXCYjMzQ7IGlmIEVYUEVSVFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxNzo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MDYyCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogNDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhIGZpcnN0LXBlcnNvbiBleHBlcnQgc3VtbWFyeToKCioqQW5hbHl6aW5nIGBpZWVlODAyMTFfbmV4dF90eHFgIGFuZCBgaWVlZTgwMjExX3R4cV9zY2hlZHVsZV9zdGFydGAqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBNeSBmb2N1cyBpcyBvbiB1bmRlcnN0YW5kaW5nICpob3cqIGFuZCAqd2hlcmUqIGBpZWVlODAyMTFfbmV4dF90eHFgIGFuZCBgaWVlZTgwMjExX3R4cV9zY2hlZHVsZV9zdGFydGAgYXJlIGJlaW5nIHVzZWQuIEVzc2VudGlhbGx5LCBJIHdhbnQgdG8gdHJhY2UgdGhlIGNhbGxzLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgY29udGV4dCBpbiB3aGljaCB0aGVzZSBmdW5jdGlvbnMgYXJlIGJlaW5nIGludm9rZWQgaW4gdGhlIDgwMi4xMSBzdGFjay4gV2hhdCYjMzk7cyB0aGUgY29udHJvbCBmbG93PyBXaGF0IG90aGVyIGZ1bmN0aW9ucyBhcmUgdGhleSBpbnRlcmFjdGluZyB3aXRoPyBXaGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIG9mIHNjaGVkdWxpbmcgYW5kIHNlbGVjdGlvbiBvZiB0aGVzZSB0cmFuc21pc3Npb24gcXVldWVzPwoKU3BlY2lmaWNhbGx5LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBkYXRhIHN0cnVjdHVyZXMgYmVpbmcgbWFuaXB1bGF0ZWQgd2l0aGluIHRoZXNlIGZ1bmN0aW9ucy4gYGllZWU4MDIxMV9uZXh0X3R4cWAgaXMgbGlrZWx5IHJldHVybmluZyBhIGhhbmRsZSB0byB0aGUgbmV4dCBhdmFpbGFibGUgdHJhbnNtaXQgcXVldWUsIHByZXN1bWFibHkgYmFzZWQgb24gc29tZSBzY2hlZHVsaW5nIHBvbGljeS4gU28sIHdoYXQmIzM5O3MgdGhlIGxvZ2ljIGJlaGluZCB0aGF0IHBvbGljeT8gSXMgaXQgc3RyaWN0bHkgUW9TLWJhc2VkPyBJcyB0aGVyZSBzb21lIHJvdW5kLXJvYmluIGludm9sdmVkPyBIb3cgZG9lcyB0aGlzIGludGVyYWN0IHdpdGggdGhlIHZhcmlvdXMgaGFyZHdhcmUgcXVldWVzIGFuZCB0aGVpciBjYXBhYmlsaXRpZXM/IEFyZSB3ZSBsb29raW5nIGF0IGEgc3lzdGVtLXdpZGUgdHJhZmZpYyBzY2hlZHVsZXIgdGhhdCB0aGVzZSBmdW5jdGlvbnMgYXJlIHBsdWdnZWQgaW50bywgb3IgaXMgaXQgbW9yZSBsb2NhbGl6ZWQgdG8gYSBzcGVjaWZpYyBkcml2ZXIgb3IgZGV2aWNlPwoKQW5kIHRoZW4gYGllZWU4MDIxMV90eHFfc2NoZWR1bGVfc3RhcnRgIOKAkyB0aGlzIGlzIHdoZXJlIHRoZSAqYWN0aW9uKiBpcy4gSXQmIzM5O3MgdGhlIHBvaW50IHdoZXJlIHRyYW5zbWlzc2lvbiBhY3R1YWxseSBiZWdpbnMuIEkgbmVlZCB0byBpZGVudGlmeSB0aGUgaW5wdXRzIHRvIHRoaXMgZnVuY3Rpb24g4oCTIGFyZSB3ZSB0YWxraW5nIGFib3V0IHJhdGUgYWRhcHRhdGlvbiwgcG93ZXIgbWFuYWdlbWVudCwgYmFja29mZiBtYW5hZ2VtZW50LCBvciBvdGhlciBjb21wbGV4LCBwZXItcXVldWUgY29uc2lkZXJhdGlvbnM/IFdoYXQmIzM5O3MgdGhlIHJlbGF0aW9uc2hpcCBvZiB0aGlzIGZ1bmN0aW9uIHRvIGFueSBoYXJkd2FyZS1zcGVjaWZpYyBETUEgb3IgZGVzY3JpcHRvciBtYW5hZ2VtZW50LCB0aGUgbG93ZXIgbGF5ZXIuIEkgbmVlZCB0byBjb25zaWRlciBhbGwgb2YgdGhlIHBvc3NpYmlsaXRpZXMgdGhhdCBjb3VsZCBhcmlzZS4gSSYjMzk7bSBpbWFnaW5pbmcgaG93IHRoZXNlIGZ1bmN0aW9ucyBhcmUgYmVpbmcgaW50ZXJ0d2luZWQgd2l0aCBvdGhlciB0YXNrcyB0aGF0IGNvdWxkIGJlIHRha2luZyBwbGFjZSBvbiBhbiA4MDIuMTEgbmV0d29yay4KClRoaXMgYW5hbHlzaXMgd2lsbCBnaXZlIG1lIGEgY2xlYXIgcGljdHVyZSBvZiBob3cgdGhlIG92ZXJhbGwgdHJhbnNtaXNzaW9uIHByb2Nlc3Mgd29ya3MgZm9yIHRoaXMgcGFydGljdWxhciA4MDIuMTEgaW1wbGVtZW50YXRpb24uIEkgc2hvdWxkIGJlIGFibGUgdG8gaWRlbnRpZnkgYm90dGxlbmVja3MsIHBvdGVudGlhbCBhcmVhcyBmb3Igb3B0aW1pemF0aW9uLCBvciBldmVuIHBvdGVudGlhbCBidWdzIG9yIHJhY2UgY29uZGl0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTc6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aWVlZTgwMjExX25leHRfdHhxfGllZWU4MDIxMV90eHFfc2NoZWR1bGVfc3RhcnQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHRfcnguYz0zMzc1PXN0YXRpYyB2b2lkIGF0aDEwa19odHRfcnhfdHhfZmV0Y2hfaW5kKHN0cnVjdCBhdGgxMGsgKmFyLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0X3J4LmMtMzQ2NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0X3J4LmM6MzQ2NjpcdFx0aWVlZTgwMjExX3R4cV9zY2hlZHVsZV9zdGFydChodywgdHhxLVx1MDAzZWFjKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0X3J4LmMtMzQ2Ny1cdFx0bWF5X3R4ID0gaWVlZTgwMjExX3R4cV9tYXlfdHJhbnNtaXQoaHcsIHR4cSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYz00NDc1PXN0YXRpYyBpbnQgYXRoMTBrX21hY19zY2hlZHVsZV90eHEoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHUzMiBhYylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTQ0NzktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jOjQ0ODA6XHRpZWVlODAyMTFfdHhxX3NjaGVkdWxlX3N0YXJ0KGh3LCBhYyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jOjQ0ODE6XHR3aGlsZSAoKHR4cSA9IGllZWU4MDIxMV9uZXh0X3R4cShodywgYWMpKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy00NDgyLVx0XHR3aGlsZSAoYXRoMTBrX21hY190eF9jYW5fcHVzaChodywgdHhxKSkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM9NDc1Nz1zdGF0aWMgdm9pZCBhdGgxMGtfbWFjX29wX3dha2VfdHhfcXVldWUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy00NzY5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYzo0NzcwOlx0aWVlZTgwMjExX3R4cV9zY2hlZHVsZV9zdGFydChodywgYWMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYzo0NzcxOlx0dHhxID0gaWVlZTgwMjExX25leHRfdHhxKGh3LCBhYyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTQ3NzItXHRpZiAoIXR4cSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jPTE5ODA9dm9pZCBhdGhfdHhxX3NjaGVkdWxlKHN0cnVjdCBhdGhfc29mdGMgKnNjLCBzdHJ1Y3QgYXRoX3R4cSAqdHhxKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtMTk5My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM6MTk5NDpcdGllZWU4MDIxMV90eHFfc2NoZWR1bGVfc3RhcnQoaHcsIHR4cS1cdTAwM2VtYWM4MDIxMV9xbnVtKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtMTk5NS1cdHNwaW5fbG9ja19iaChcdTAwMjZzYy1cdTAwM2VjaGFuX2xvY2spO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtMTk5OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM6MjAwMDpcdHdoaWxlICgocXVldWUgPSBpZWVlODAyMTFfbmV4dF90eHEoaHcsIHR4cS1cdTAwM2VtYWM4MDIxMV9xbnVtKSkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtMjAwMS1cdFx0Ym9vbCBmb3JjZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmM9NTY0PW10NzZfdHhxX3NjaGVkdWxlX2xpc3Qoc3RydWN0IG10NzZfcGh5ICpwaHksIGVudW0gbXQ3Nl90eHFfaWQgcWlkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYy01NzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmM6NTc2Olx0XHR0eHEgPSBpZWVlODAyMTFfbmV4dF90eHEocGh5LVx1MDAzZWh3LCBxaWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jLTU3Ny1cdFx0aWYgKCF0eHEpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jPTYzOD12b2lkIG10NzZfdHhxX3NjaGVkdWxlKHN0cnVjdCBtdDc2X3BoeSAqcGh5LCBlbnVtIG10NzZfdHhxX2lkIHFpZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmMtNjQ4LVx0ZG8ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jOjY0OTpcdFx0aWVlZTgwMjExX3R4cV9zY2hlZHVsZV9zdGFydChwaHktXHUwMDNlaHcsIHFpZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmMtNjUwLVx0XHRsZW4gPSBtdDc2X3R4cV9zY2hlZHVsZV9saXN0KHBoeSwgcWlkKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYz00ODI2PXN0YXRpYyB2b2lkIHJ0dzg5X2NvcmVfdHhxX3NjaGVkdWxlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggYWMsIGJvb2wgKnJlaW52b2tlKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTQ4MzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzo0ODM3Olx0aWVlZTgwMjExX3R4cV9zY2hlZHVsZV9zdGFydChodywgYWMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM6NDgzODpcdHdoaWxlICgodHhxID0gaWVlZTgwMjExX25leHRfdHhxKGh3LCBhYykpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy00ODM5LVx0XHRydHd0eHEgPSAoc3RydWN0IHJ0dzg5X3R4cSAqKXR4cS1cdTAwM2VkcnZfcHJpdjtcbi0tXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTExNi0gKiBvYnRhaW4gdGhlIG5leHQgcXVldWUgdG8gcHVsbCBmcmFtZXMgZnJvbSwgdGhlIGRyaXZlciBjYWxsc1xuaW5jbHVkZS9uZXQvbWFjODAyMTEuaDoxMTc6ICogaWVlZTgwMjExX25leHRfdHhxKCkuIFRoZSBkcml2ZXIgaXMgdGhlbiBleHBlY3RlZCB0byByZXR1cm4gdGhlIHR4cSB1c2luZ1xuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC0xMTgtICogaWVlZTgwMjExX3JldHVybl90eHEoKS5cbi0tXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oPTc3MzY9dm9pZCBpZWVlODAyMTFfdW5yZXNlcnZlX3RpZChzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLCB1OCB0aWQpO1xuLS1cbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNzc0Mi0gKiBAdHhxOiBwb2ludGVyIG9idGFpbmVkIGZyb20gc3RhdGlvbiBvciB2aXJ0dWFsIGludGVyZmFjZSwgb3IgZnJvbVxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaDo3NzQzOiAqXHRpZWVlODAyMTFfbmV4dF90eHEoKVxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC03NzQ0LSAqXG4tLVxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaD03NzU4PXN0cnVjdCBza19idWZmICppZWVlODAyMTFfdHhfZGVxdWV1ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTc3NjktICogQHR4cTogcG9pbnRlciBvYnRhaW5lZCBmcm9tIHN0YXRpb24gb3IgdmlydHVhbCBpbnRlcmZhY2UsIG9yIGZyb21cbmluY2x1ZGUvbmV0L21hYzgwMjExLmg6Nzc3MDogKlx0aWVlZTgwMjExX25leHRfdHhxKClcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNzc3MS0gKlxuLS1cbmluY2x1ZGUvbmV0L21hYzgwMjExLmg9Nzc5NT12b2lkIGllZWU4MDIxMV9oYW5kbGVfd2FrZV90eF9xdWV1ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTc3OTgtLyoqXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oOjc3OTk6ICogaWVlZTgwMjExX25leHRfdHhxIC0gZ2V0IG5leHQgdHggcXVldWUgdG8gcHVsbCBwYWNrZXRzIGZyb21cbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNzgwMC0gKlxuLS1cbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNzgwNy0gKi9cbmluY2x1ZGUvbmV0L21hYzgwMjExLmg6NzgwODpzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqaWVlZTgwMjExX25leHRfdHhxKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCB1OCBhYyk7XG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTc4MDktXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTc4MTAtLyoqXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oOjc4MTE6ICogaWVlZTgwMjExX3R4cV9zY2hlZHVsZV9zdGFydCAtIHN0YXJ0IG5ldyBzY2hlZHVsaW5nIHJvdW5kIGZvciBUWFFzXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTc4MTItICpcbi0tXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTc4MTUtICpcbmluY2x1ZGUvbmV0L21hYzgwMjExLmg6NzgxNjogKiBTaG91bGQgYmUgY2FsbGVkIGJlZm9yZSBpZWVlODAyMTFfbmV4dF90eHEoKSBvciBpZWVlODAyMTFfcmV0dXJuX3R4cSgpLlxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC03ODE3LSAqIFRoZSBkcml2ZXIgbXVzdCBub3QgY2FsbCBtdWx0aXBsZSBUWFEgc2NoZWR1bGluZyByb3VuZHMgY29uY3VycmVudGx5LlxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC03ODE4LSAqL1xuaW5jbHVkZS9uZXQvbWFjODAyMTEuaDo3ODE5OnZvaWQgaWVlZTgwMjExX3R4cV9zY2hlZHVsZV9zdGFydChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgdTggYWMpO1xuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC03ODIwLVxuLS1cbmluY2x1ZGUvbmV0L21hYzgwMjExLmg9Nzg0Mj1pZWVlODAyMTFfc2NoZWR1bGVfdHhxKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqdHhxKVxuLS1cbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNzg0Ny0vKipcbmluY2x1ZGUvbmV0L21hYzgwMjExLmg6Nzg0ODogKiBpZWVlODAyMTFfcmV0dXJuX3R4cSAtIHJldHVybiBhIFRYUSBwcmV2aW91c2x5IGFjcXVpcmVkIGJ5IGllZWU4MDIxMV9uZXh0X3R4cSgpXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTc4NDktICpcbi0tXG5uZXQvbWFjODAyMTEvdHguYz00MTAxPWllZWU4MDIxMV90eHFfa2VlcF9hY3RpdmUoc3RydWN0IHR4cV9pbmZvICp0eHFpKVxuLS1cbm5ldC9tYWM4MDIxMS90eC5jLTQxMTQtXG5uZXQvbWFjODAyMTEvdHguYzo0MTE1OnN0cnVjdCBpZWVlODAyMTFfdHhxICppZWVlODAyMTFfbmV4dF90eHEoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHU4IGFjKVxubmV0L21hYzgwMjExL3R4LmMtNDExNi17XG4tLVxubmV0L21hYzgwMjExL3R4LmMtNDE3Ny19XG5uZXQvbWFjODAyMTEvdHguYzo0MTc4OkVYUE9SVF9TWU1CT0woaWVlZTgwMjExX25leHRfdHhxKTtcbm5ldC9tYWM4MDIxMS90eC5jLTQxNzktXG5uZXQvbWFjODAyMTEvdHguYz00MTgwPXZvaWQgX19pZWVlODAyMTFfc2NoZWR1bGVfdHhxKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbm5ldC9tYWM4MDIxMS90eC5jLTQxOTktXHRcdCAqIGdldCBpbW1lZGlhdGVseSBtb3ZlZCB0byB0aGUgYmFjayBvZiB0aGUgbGlzdCBvbiB0aGUgbmV4dFxubmV0L21hYzgwMjExL3R4LmM6NDIwMDpcdFx0ICogY2FsbCB0byBpZWVlODAyMTFfbmV4dF90eHEoKS5cbm5ldC9tYWM4MDIxMS90eC5jLTQyMDEtXHRcdCAqL1xuLS1cbm5ldC9tYWM4MDIxMS90eC5jPTQzNDI9RVhQT1JUX1NZTUJPTChpZWVlODAyMTFfdHhxX21heV90cmFuc21pdCk7XG5uZXQvbWFjODAyMTEvdHguYy00MzQzLVxubmV0L21hYzgwMjExL3R4LmM6NDM0NDp2b2lkIGllZWU4MDIxMV90eHFfc2NoZWR1bGVfc3RhcnQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHU4IGFjKVxubmV0L21hYzgwMjExL3R4LmMtNDM0NS17XG4tLVxubmV0L21hYzgwMjExL3R4LmMtNDM1OS19XG5uZXQvbWFjODAyMTEvdHguYzo0MzYwOkVYUE9SVF9TWU1CT0woaWVlZTgwMjExX3R4cV9zY2hlZHVsZV9zdGFydCk7XG5uZXQvbWFjODAyMTEvdHguYy00MzYxLVxuLS1cbm5ldC9tYWM4MDIxMS91dGlsLmM9MzA1PXZvaWQgaWVlZTgwMjExX2hhbmRsZV93YWtlX3R4X3F1ZXVlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbm5ldC9tYWM4MDIxMS91dGlsLmMtMzEzLVxubmV0L21hYzgwMjExL3V0aWwuYzozMTQ6XHQvKiBVc2UgaWVlZTgwMjExX25leHRfdHhxKCkgZm9yIGFpcnRpbWUgZmFpcm5lc3MgYWNjb3VudGluZyAqL1xubmV0L21hYzgwMjExL3V0aWwuYzozMTU6XHRpZWVlODAyMTFfdHhxX3NjaGVkdWxlX3N0YXJ0KGh3LCB0eHEtXHUwMDNlYWMpO1xubmV0L21hYzgwMjExL3V0aWwuYzozMTY6XHR3aGlsZSAoKHF1ZXVlID0gaWVlZTgwMjExX25leHRfdHhxKGh3LCB0eHEtXHUwMDNlYWMpKSkge1xubmV0L21hYzgwMjExL3V0aWwuYy0zMTctXHRcdHdha2VfdHhfcHVzaF9xdWV1ZShsb2NhbCwgc2RhdGEsIHF1ZXVlKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTc6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI5MTAKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBtYWM4MDIxMSBTdWJzeXN0ZW0gYW5kIGl0cyBGdXp6aW5nIExhbmRzY2FwZSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGZvY3VzIGlzIG9uIHRoZXNlIGZ1bmN0aW9uczogYGllZWU4MDIxMV9uZXh0X3R4cWAsIGBpZWVlODAyMTFfdHhxX3NjaGVkdWxlX3N0YXJ0YCwgYW5kIGBpZWVlODAyMTFfaGFuZGxlX3dha2VfdHhfcXVldWVgLiBUaGV5JiMzOTtyZSBhbGwgZmlybWx5IHJvb3RlZCBpbiB0aGUgYG5ldC9tYWM4MDIxMWAgY29yZSwgc3BlY2lmaWNhbGx5IHdpdGhpbiBgdHguY2AgYW5kIGB1dGlsLmNgLiBUaGF0JiMzOTtzIHRoZSBoZWFydCBvZiB0aGUgbWF0dGVyLiBBbmQgSSBzZWUgdGhhdCBgaWVlZTgwMjExX2hhbmRsZV93YWtlX3R4X3F1ZXVlYCBjYWxscyB0aGUgb3RoZXIgdHdvLCB3aGljaCBpcyBhbiBpbXBvcnRhbnQgaW50ZXJkZXBlbmRlbmN5IHRvIG5vdGUuCgpOb3csIGNvbnNpZGVyaW5nIHRoZSBmdXp6aW5nIGFzcGVjdCwgc3l6a2FsbGVyIGlzIGFjdGl2ZWx5IHRhcmdldGluZyBtYWM4MDIxMS4gSXQmIzM5O3MgZG9pbmcgdGhpcyBlaXRoZXIgdGhyb3VnaCBgbWFjODAyMTFfaHdzaW1gLCB3aGljaCBpcyBlc3NlbnRpYWxseSBhIHNvZnR3YXJlIGVtdWxhdGlvbiBvZiBhIHdpcmVsZXNzIGRldmljZSwgb3IgdmlhIHRoZSBzdGFuZGFyZCBpbnRlcmZhY2VzIHdlJiMzOTtyZSBhbGwgZmFtaWxpYXIgd2l0aDogbmw4MDIxMSwgc29ja2V0IGludGVyZmFjZXMsIGFuZCB2aXJ0dWFsIGRldmljZXMuIFRoYXQmIzM5O3MgYSBnb29kIGFwcHJvYWNoIHRvIGVuc3VyZSBicm9hZCBjb3ZlcmFnZS4KClRoZSBuZXh0IGNyaXRpY2FsIHN0ZXAgaXMgdG8gdmVyaWZ5IHRoZSBjb25uZWN0aW9uIGJldHdlZW4gYG1hYzgwMjExX2h3c2ltYCBhbmQgbWFjODAyMTEgaXRzZWxmLiBJJiMzOTtkIGV4cGVjdCBhIGRlcGVuZGVuY3ksIGFuZCBpbmRlZWQsIGBNQUM4MDIxMV9IV1NJTWAgcmVsaWVzIG9uIGBNQUM4MDIxMWAuIFRoYXQmIzM5O3Mgd2hhdCBJIHRob3VnaHQsIGJ1dCBJJiMzOTtsbCBkb3VibGUtY2hlY2sgdGhlIGBLY29uZmlnYCBmb3IgYE1BQzgwMjExX0hXU0lNYCBqdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbi4gSXQmIzM5O3MgYWx3YXlzIGdvb2QgdG8gYmUgdGhvcm91Z2ggd2hlbiB5b3UmIzM5O3JlIGRlYWxpbmcgd2l0aCB0aGVzZSBzeXN0ZW1zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxNzo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTUFDODAyMTFfSFdTSU0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnOjE6Y29uZmlnIE1BQzgwMjExX0hXU0lNXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWctMi1cdHRyaXN0YXRlIFwmIzM0O1NpbXVsYXRlZCByYWRpbyB0ZXN0aW5nIHRvb2wgZm9yIG1hYzgwMjExXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDE3OjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzNjEwCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTA5NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE1BQzgwMjExIFBhdGNoIGZvciBUWCBRdWV1ZSBTY2hlZHVsaW5nKioKCk9rYXksIHNvIHRoZSBpbml0aWFsIGZvY3VzIGlzIGBNQUM4MDIxMWAgYXMgdGhlIGtleSBjb25maWd1cmF0aW9uIG9wdGlvbi4gUmlnaHQsIGl0IGRlcGVuZHMgb24gYENGRzgwMjExYC4gQ29uZmlybWVkIGJ5IHJlLWV4YW1pbmluZyBgbmV0L21hYzgwMjExL0tjb25maWdgLiBTbywgYE1BQzgwMjExYCBhbmQgYENGRzgwMjExYCBhcmUgdGhlIHJlcXVpcmVkIGNvbmZpZ3MuCgpOb3csIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBwYXRjaC4gVGhlIGRpZmYgc2hvd3MgbW9kaWZpY2F0aW9ucyB0byBgaWVlZTgwMjExX2kuaGAgYW5kIGB0eC5jYC4gSW4gYGllZWU4MDIxMV9pLmhgLCB0aGV5JiMzOTt2ZSBhZGRlZCBgc2NoZWR1bGVfb3BlbmAgYXMgYSBib29sZWFuIGFsb25nc2lkZSBgc2NoZWR1bGVfcm91bmRgIHdpdGhpbiB0aGUgYGllZWU4MDIxMV9sb2NhbGAgc3RydWN0LiBUaGUgY29yZSBjaGFuZ2UgaXMgaW4gYHR4LmNgIHdpdGggdGhlIGludHJvZHVjdGlvbiBvZiBgc2NoZWR1bGVfb3BlbmAuIFByZXZpb3VzbHksIHRoZSBjb2RlIGNoZWNrZWQgYCFsb2NhbC0mZ3Q7c2NoZWR1bGVfcm91bmRbYWNdYCBpbiBgaWVlZTgwMjExX25leHRfdHhxYCwgd2hpY2ggbm93IGNoZWNrcyBgIWxvY2FsLSZndDtzY2hlZHVsZV9vcGVuW2FjXWAuIFRoaXMgaXMgdGhlIGltcG9ydGFudCBkaXN0aW5jdGlvbiBoZXJlLgoKVGhlIHJhdGlvbmFsZSBiZWhpbmQgdGhlIGNoYW5nZSBpcyBjbGVhcjogIHRoZSBwcmV2aW91cyBiZWhhdmlvciB3YXMgdG8gcmVzZXQgYHNjaGVkdWxlX3JvdW5kYCB0byB6ZXJvIGlmIHRoZSBgc2NoZWR1bGVfYWlydGltZV9jaGVja2AgZmFpbGVkLiBUaGF0JiMzOTtzIG5vdCBpZGVhbCBiZWNhdXNlIHRoZSBgc2NoZWR1bGVfcm91bmRgIGZpZWxkIGNhbiBiZSB1c2VkIGZvciByb3VuZCBkZXRlY3Rpb24gb3IgZGVmaWNpdCBjYWxjdWxhdGlvbiBhcyB3ZWxsLiBSZXNldHRpbmcgaXQgY291bGQgaW50cm9kdWNlIHN1YnRsZSBpc3N1ZXMgd2l0aCB0aGUgcm91bmQgY291bnRlci4gVGhlIG5ldyBgc2NoZWR1bGVfb3BlbmAgZmxhZyBwcm92aWRlcyBhIHNlcGFyYXRlIHdheSB0byB0cmFjayB3aGV0aGVyIHNjaGVkdWxpbmcgaXMgJiMzNDtvcGVuJiMzNDsgd2l0aG91dCBpbnRlcmZlcmluZyB3aXRoIHRoZSBwcm9wZXIgb3BlcmF0aW9uIG9mIGBzY2hlZHVsZV9yb3VuZGAuICBgc2NoZWR1bGVfb3BlbmAgaXMgbm93IGRpcmVjdGx5IHNldCB0byB0aGUgcmVzdWx0IG9mIGBzY2hlZHVsZV9haXJ0aW1lX2NoZWNrYC4KCkl0IG1ha2VzIHNlbnNlOyB0aGlzIGNoYW5nZSBtb2RpZmllcyBzdGF0ZSBtYW5hZ2VtZW50IHdpdGhpbiB0aGUgVFggcXVldWUgc2NoZWR1bGluZyBsb2dpYyBpbiBtYWM4MDIxMS4gVGhpcyBpcyBkZWZpbml0ZWx5IHNvbWV0aGluZyB0aGF0IGNvdWxkIGJlIHRyaWdnZXJlZCBkdXJpbmcgdmlydHVhbGl6ZWQgZnV6emluZywgbGlrZSB3aXRoIG1hYzgwMjExX2h3c2ltLCBuZXRsaW5rIC8gbmw4MDIxMSwgb3IgZHVyaW5nIHdpZmkgdHJhbnNtaXNzaW9uLgoKTGV0IG1lIG5vdyBwaW5wb2ludCBzb21lIGtleSBmdW5jdGlvbnMgaW52b2x2ZWQ6IGBpZWVlODAyMTFfbmV4dF90eHFgIGFuZCBgaWVlZTgwMjExX3R4cV9zY2hlZHVsZV9zdGFydGAuCgpJIHNob3VsZCBwcm9iYWJseSBsb29rIGZvciBvdGhlciBjb2RlIHdoaWNoIHVzZXMgdGhlIGFkZGVkIGBzY2hlZHVsZV9vcGVuYCBmaWVsZCBvciB0aGUgb3JpZ2luYWwgYHNjaGVkdWxlX3JvdW5kYCBmaWVsZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbXBsZXRlIGltcGFjdCBvbiB0aGUgVFggcXVldWUgc2NoZWR1bGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTc6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2NoZWR1bGVfcm91bmQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oPTk2Mz1lbnVtIHR4cV9pbmZvX2ZsYWdzIHtcbi0tXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC05NzctICogQHNjaGVkdWxlX29yZGVyOiB1c2VkIHdpdGggaWVlZTgwMjExX2xvY2FsLVx1MDAzZWFjdGl2ZV90eHFzXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaDo5Nzg6ICogQHNjaGVkdWxlX3JvdW5kOiBjb3VudGVyIHRvIHByZXZlbnQgaW5maW5pdGUgbG9vcHMgb24gVFhRIHNjaGVkdWxpbmdcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTk3OS0gKiBAZmxhZ3M6IFRYUSBmbGFncyBmcm9tIFx1MDAyNmVudW0gdHhxX2luZm9fZmxhZ3Ncbi0tXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaD05ODI9c3RydWN0IHR4cV9pbmZvIHtcbi0tXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC05ODYtXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaDo5ODc6XHR1MTYgc2NoZWR1bGVfcm91bmQ7XG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC05ODgtXHRzdHJ1Y3QgbGlzdF9oZWFkIHNjaGVkdWxlX29yZGVyO1xuLS1cbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oPTE0NTc9c3RydWN0IGllZWU4MDIxMV9sb2NhbCB7XG4tLVxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMTQ2OS1cdHN0cnVjdCBsaXN0X2hlYWQgYWN0aXZlX3R4cXNbSUVFRTgwMjExX05VTV9BQ1NdO1xubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg6MTQ3MDpcdHUxNiBzY2hlZHVsZV9yb3VuZFtJRUVFODAyMTFfTlVNX0FDU107XG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC0xNDcxLVx0Ym9vbCBzY2hlZHVsZV9vcGVuW0lFRUU4MDIxMV9OVU1fQUNTXTtcbi0tXG5uZXQvbWFjODAyMTEvdHguYz00MTE1PXN0cnVjdCBpZWVlODAyMTFfdHhxICppZWVlODAyMTFfbmV4dF90eHEoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHU4IGFjKVxuLS1cbm5ldC9tYWM4MDIxMS90eC5jLTQxNjYtXG5uZXQvbWFjODAyMTEvdHguYzo0MTY3Olx0aWYgKHR4cWktXHUwMDNlc2NoZWR1bGVfcm91bmQgPT0gbG9jYWwtXHUwMDNlc2NoZWR1bGVfcm91bmRbYWNdKVxubmV0L21hYzgwMjExL3R4LmMtNDE2OC1cdFx0Z290byBvdXQ7XG4tLVxubmV0L21hYzgwMjExL3R4LmMtNDE3MC1cdGxpc3RfZGVsX2luaXQoXHUwMDI2dHhxaS1cdTAwM2VzY2hlZHVsZV9vcmRlcik7XG5uZXQvbWFjODAyMTEvdHguYzo0MTcxOlx0dHhxaS1cdTAwM2VzY2hlZHVsZV9yb3VuZCA9IGxvY2FsLVx1MDAzZXNjaGVkdWxlX3JvdW5kW2FjXTtcbm5ldC9tYWM4MDIxMS90eC5jLTQxNzItXHRyZXQgPSBcdTAwMjZ0eHFpLVx1MDAzZXR4cTtcbi0tXG5uZXQvbWFjODAyMTEvdHguYz00MzQ0PXZvaWQgaWVlZTgwMjExX3R4cV9zY2hlZHVsZV9zdGFydChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgdTggYWMpXG4tLVxubmV0L21hYzgwMjExL3R4LmMtNDM1Mi1cdGlmIChsb2NhbC1cdTAwM2VzY2hlZHVsZV9vcGVuW2FjXSkge1xubmV0L21hYzgwMjExL3R4LmM6NDM1MzpcdFx0bG9jYWwtXHUwMDNlc2NoZWR1bGVfcm91bmRbYWNdJiM0MzsmIzQzOztcbm5ldC9tYWM4MDIxMS90eC5jOjQzNTQ6XHRcdGlmICghbG9jYWwtXHUwMDNlc2NoZWR1bGVfcm91bmRbYWNdKVxubmV0L21hYzgwMjExL3R4LmM6NDM1NTpcdFx0XHRsb2NhbC1cdTAwM2VzY2hlZHVsZV9yb3VuZFthY10mIzQzOyYjNDM7O1xubmV0L21hYzgwMjExL3R4LmMtNDM1Ni1cdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTc6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTYxODgKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAyODUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgU2NoZWR1bGluZyBCdWcgaW4gbWFjODAyMTEqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYml0IG9mIGNvZGU6IGB0eHFpLSZndDtzY2hlZHVsZV9yb3VuZCA9PSBsb2NhbC0mZ3Q7c2NoZWR1bGVfcm91bmRbYWNdYCBpbnNpZGUgYGllZWU4MDIxMV9uZXh0X3R4cWAuIEludGVyZXN0aW5nISBJdCBsb29rcyBsaWtlIHRoZXJlIHdhcyBhIG5hc3R5IGJ1ZyB3aGVyZSBgc2NoZWR1bGVfcm91bmRgIGJlaW5nIGluaXRpYWxpemVkIHRvIHplcm8gY2F1c2VkIHNvbWUgaXNzdWVzLiBJdCBlaXRoZXIgY29uZmxpY3RlZCB3aXRoIHVuaW5pdGlhbGl6ZWQgdmFsdWVzIGZvciBgdHhxaS0mZ3Q7c2NoZWR1bGVfcm91bmRgLCBvciBpdCBjYXVzZWQgcHJvYmxlbXMgd2hlbiBzY2hlZHVsaW5nIHdhcyB0dXJuZWQgb2ZmIGFuZCB0aGVuIGJhY2sgb24uIEkgbmVlZCB0byBrZWVwIGluIG1pbmQgdGhhdCBJJiMzOTttIGRlYWxpbmcgd2l0aCBgaWVlZTgwMjExX25leHRfdHhxYCBhbmQgYGllZWU4MDIxMV90eHFfc2NoZWR1bGVfc3RhcnRgLiBUaG9zZSBhcmUgdGhlIGZ1bmN0aW9ucyB0aGF0IHdlcmUgbW9kaWZpZWQgdG8gYWRkcmVzcyB0aGlzLgoKUmlnaHQsIGxldCYjMzk7cyBzZWUgaG93IHRoaXMgcGxheXMgb3V0IGluIHRlcm1zIG9mIGZ1enppbmcuIFRoYW5rZnVsbHksIFdvcnRoRnV6emluZyBjb25maXJtcyB0aGlzIGlzIGEgZ29vZCB0YXJnZXQuIE1hYzgwMjExIGlzIGEgY2VudHJhbCBwaWVjZSwgcGFydCBvZiB0aGUgY29yZSBJRUVFIDgwMi4xMSBzdGFjayB1c2VkIGJ5IHZhcmlvdXMgZHJpdmVycyBhbmQgdGVzdCBoYXJuZXNzZXMsIGluY2x1ZGluZyBtYWM4MDIxMV9od3NpbSwgc28gaXQgc2hvdWxkIGJlIGVhc3kgdG8gcmVhY2guIEFuZCB5ZXMsIGl0JiMzOTtzIHJlYWNoYWJsZSBpbiBRRU1VIGFuZCB0aGUgc3RhbmRhcmQgZnV6emluZyBlbnZpcm9ubWVudHMuIEV4Y2VsbGVudC4KClRoZSBmb2N1cyBoZXJlIGlzIGNsZWFybHkgb24gYGllZWU4MDIxMV9uZXh0X3R4cWAgYW5kIGBpZWVlODAyMTFfdHhxX3NjaGVkdWxlX3N0YXJ0YCwgd2hpY2ggbWFrZXMgc2Vuc2UgZ2l2ZW4gdGhlIGluaXRpYWwgY29kZSBzbmlwcGV0LgoKTm93LCBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50cy4gVGhlIHJlbGV2YW50IGNvbmZpZyBvcHRpb25zIGFyZSBgTUFDODAyMTFgIGFuZCBgQ0ZHODAyMTFgLiBUaGF0IGlzIGltcG9ydGFudCBpbmZvcm1hdGlvbiB0aGF0IEkgbmVlZCB0byBrZWVwIGluIG1pbmQuCgpGaW5hbGx5LCBJJiMzOTtsbCB0YWtlIGEgcXVpY2sgbG9vayBhdCBgbmV0L21hYzgwMjExL01ha2VmaWxlYCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBkZXBlbmRlbmNpZXMgb3IgcmVxdWlyZW1lbnRzIEkgbmVlZCB0byBiZSBhd2FyZSBvZiBiZWZvcmUgSSBkaWcgaW4gZGVlcGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxNzo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0eC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvTWFrZWZpbGU9NT1tYWM4MDIxMS15IDo9IFxcXG4tLVxubmV0L21hYzgwMjExL01ha2VmaWxlLTEyLVx0c2Nhbi5vIG9mZmNoYW5uZWwubyBcXFxubmV0L21hYzgwMjExL01ha2VmaWxlOjEzOlx0aHQubyBhZ2ctdHgubyBhZ2ctcngubyBcXFxubmV0L21hYzgwMjExL01ha2VmaWxlLTE0LVx0dmh0Lm8gXFxcbi0tXG5uZXQvbWFjODAyMTEvTWFrZWZpbGUtMjgtXHRzcGVjdG1nbXQubyBcXFxubmV0L21hYzgwMjExL01ha2VmaWxlOjI5Olx0dHgubyBcXFxubmV0L21hYzgwMjExL01ha2VmaWxlLTMwLVx0a2V5Lm8gXFxcbi0tXG5uZXQvbWFjODAyMTEvYWdnLXR4LmM9NzU0PUVYUE9SVF9TWU1CT0woaWVlZTgwMjExX3N0YXJ0X3R4X2JhX3Nlc3Npb24pO1xubmV0L21hYzgwMjExL2FnZy10eC5jLTc1NS1cbm5ldC9tYWM4MDIxMS9hZ2ctdHguYzo3NTY6c3RhdGljIHZvaWQgaWVlZTgwMjExX2FnZ190eF9vcGVyYXRpb25hbChzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYy03NTctXHRcdFx0XHRcdCBzdHJ1Y3Qgc3RhX2luZm8gKnN0YSwgdTE2IHRpZClcbi0tXG5uZXQvbWFjODAyMTEvYWdnLXR4LmM9Nzk5PXZvaWQgaWVlZTgwMjExX3N0YXJ0X3R4X2JhX2NiKHN0cnVjdCBzdGFfaW5mbyAqc3RhLCBpbnQgdGlkLFxuLS1cbm5ldC9tYWM4MDIxMS9hZ2ctdHguYy04MjAtXHRpZiAodGVzdF9iaXQoSFRfQUdHX1NUQVRFX1JFU1BPTlNFX1JFQ0VJVkVELCBcdTAwMjZ0aWRfdHgtXHUwMDNlc3RhdGUpKVxubmV0L21hYzgwMjExL2FnZy10eC5jOjgyMTpcdFx0aWVlZTgwMjExX2FnZ190eF9vcGVyYXRpb25hbChsb2NhbCwgc3RhLCB0aWQpO1xubmV0L21hYzgwMjExL2FnZy10eC5jLTgyMi19XG4tLVxubmV0L21hYzgwMjExL2FnZy10eC5jPTk3Nz12b2lkIGllZWU4MDIxMV9wcm9jZXNzX2FkZGJhX3Jlc3Aoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG4tLVxubmV0L21hYzgwMjExL2FnZy10eC5jLTEwNTEtXHRcdGlmICh0ZXN0X2JpdChIVF9BR0dfU1RBVEVfRFJWX1JFQURZLCBcdTAwMjZ0aWRfdHgtXHUwMDNlc3RhdGUpKVxubmV0L21hYzgwMjExL2FnZy10eC5jOjEwNTI6XHRcdFx0aWVlZTgwMjExX2FnZ190eF9vcGVyYXRpb25hbChsb2NhbCwgc3RhLCB0aWQpO1xubmV0L21hYzgwMjExL2FnZy10eC5jLTEwNTMtXG4tLVxubmV0L21hYzgwMjExL2NmZy5jPTM3MDg9c3RhdGljIGludCBpZWVlODAyMTFfc2V0X3R4X3Bvd2VyKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTM3NjEtXG5uZXQvbWFjODAyMTEvY2ZnLmM6Mzc2MjpcdFx0XHRpZiAodHhwX3R5cGUgIT0gbGluay1cdTAwM2Vjb25mLVx1MDAzZXR4cG93ZXJfdHlwZSkge1xubmV0L21hYzgwMjExL2NmZy5jLTM3NjMtXHRcdFx0XHR1cGRhdGVfdHhwX3R5cGUgPSB0cnVlO1xubmV0L21hYzgwMjExL2NmZy5jOjM3NjQ6XHRcdFx0XHRsaW5rLVx1MDAzZWNvbmYtXHUwMDNldHhwb3dlcl90eXBlID0gdHhwX3R5cGU7XG5uZXQvbWFjODAyMTEvY2ZnLmMtMzc2NS1cdFx0XHR9XG5uZXQvbWFjODAyMTEvY2ZnLmMtMzc2Ni1cbm5ldC9tYWM4MDIxMS9jZmcuYzozNzY3Olx0XHRcdGllZWU4MDIxMV9yZWNhbGNfdHhwb3dlcihsaW5rLCB1cGRhdGVfdHhwX3R5cGUpO1xubmV0L21hYzgwMjExL2NmZy5jLTM3NjgtXHRcdH1cbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtMzc5MC1cdFx0XHRsaW5rLVx1MDAzZXVzZXJfcG93ZXJfbGV2ZWwgPSBsb2NhbC1cdTAwM2V1c2VyX3Bvd2VyX2xldmVsO1xubmV0L21hYzgwMjExL2NmZy5jOjM3OTE6XHRcdFx0aWYgKHR4cF90eXBlICE9IGxpbmstXHUwMDNlY29uZi1cdTAwM2V0eHBvd2VyX3R5cGUpXG5uZXQvbWFjODAyMTEvY2ZnLmMtMzc5Mi1cdFx0XHRcdHVwZGF0ZV90eHBfdHlwZSA9IHRydWU7XG5uZXQvbWFjODAyMTEvY2ZnLmM6Mzc5MzpcdFx0XHRsaW5rLVx1MDAzZWNvbmYtXHUwMDNldHhwb3dlcl90eXBlID0gdHhwX3R5cGU7XG5uZXQvbWFjODAyMTEvY2ZnLmMtMzc5NC1cdFx0fVxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy0zODA5LVxubmV0L21hYzgwMjExL2NmZy5jOjM4MTA6XHRcdFx0aWVlZTgwMjExX3JlY2FsY190eHBvd2VyKGxpbmssIHVwZGF0ZV90eHBfdHlwZSk7XG5uZXQvbWFjODAyMTEvY2ZnLmMtMzgxMS1cdFx0fVxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy0zODE4LVx0XHRcdHNkYXRhLVx1MDAzZWRlZmxpbmsudXNlcl9wb3dlcl9sZXZlbCA9IGxvY2FsLVx1MDAzZXVzZXJfcG93ZXJfbGV2ZWw7XG5uZXQvbWFjODAyMTEvY2ZnLmM6MzgxOTpcdFx0XHRpZiAodHhwX3R5cGUgIT0gc2RhdGEtXHUwMDNldmlmLmJzc19jb25mLnR4cG93ZXJfdHlwZSlcbm5ldC9tYWM4MDIxMS9jZmcuYy0zODIwLVx0XHRcdFx0dXBkYXRlX3R4cF90eXBlID0gdHJ1ZTtcbm5ldC9tYWM4MDIxMS9jZmcuYzozODIxOlx0XHRcdHNkYXRhLVx1MDAzZXZpZi5ic3NfY29uZi50eHBvd2VyX3R5cGUgPSB0eHBfdHlwZTtcbm5ldC9tYWM4MDIxMS9jZmcuYy0zODIyLVxubmV0L21hYzgwMjExL2NmZy5jOjM4MjM6XHRcdFx0aWVlZTgwMjExX3JlY2FsY190eHBvd2VyKFx1MDAyNnNkYXRhLVx1MDAzZWRlZmxpbmssXG5uZXQvbWFjODAyMTEvY2ZnLmMtMzgyNC1cdFx0XHRcdFx0XHQgdXBkYXRlX3R4cF90eXBlKTtcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmM9MzgzNT1zdGF0aWMgaW50IGllZWU4MDIxMV9nZXRfdHhfcG93ZXIoc3RydWN0IHdpcGh5ICp3aXBoeSxcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtMzg0NC1cbm5ldC9tYWM4MDIxMS9jZmcuYzozODQ1Olx0aWYgKGxvY2FsLVx1MDAzZW9wcy1cdTAwM2VnZXRfdHhwb3dlciBcdTAwMjZcdTAwMjZcbm5ldC9tYWM4MDIxMS9jZmcuYy0zODQ2LVx0ICAgIChzZGF0YS1cdTAwM2VmbGFncyBcdTAwMjYgSUVFRTgwMjExX1NEQVRBX0lOX0RSSVZFUikpXG5uZXQvbWFjODAyMTEvY2ZnLmM6Mzg0NzpcdFx0cmV0dXJuIGRydl9nZXRfdHhwb3dlcihsb2NhbCwgc2RhdGEsIGxpbmtfaWQsIGRibSk7XG5uZXQvbWFjODAyMTEvY2ZnLmMtMzg0OC1cbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtMzg1NC1cdFx0aWYgKGxpbmtfZGF0YSlcbm5ldC9tYWM4MDIxMS9jZmcuYzozODU1Olx0XHRcdCpkYm0gPSBsaW5rX2RhdGEtXHUwMDNlY29uZi1cdTAwM2V0eHBvd2VyO1xubmV0L21hYzgwMjExL2NmZy5jLTM4NTYtXHRcdGVsc2Vcbi0tXG5uZXQvbWFjODAyMTEvY2hhbi5jPTExODE9c3RhdGljIGludCBpZWVlODAyMTFfYXNzaWduX2xpbmtfY2hhbmN0eChzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluayxcbi0tXG5uZXQvbWFjODAyMTEvY2hhbi5jLTEyMzEtXHRpZiAobmV3X2N0eCBcdTAwMjZcdTAwMjYgaWVlZTgwMjExX2NoYW5jdHhfbnVtX2Fzc2lnbmVkKGxvY2FsLCBuZXdfY3R4KSBcdTAwM2UgMCkge1xubmV0L21hYzgwMjExL2NoYW4uYzoxMjMyOlx0XHRpZWVlODAyMTFfcmVjYWxjX3R4cG93ZXIobGluaywgZmFsc2UpO1xubmV0L21hYzgwMjExL2NoYW4uYy0xMjMzLVx0XHRpZWVlODAyMTFfcmVjYWxjX2NoYW5jdHhfbWluX2RlZihsb2NhbCwgbmV3X2N0eCk7XG4tLVxubmV0L21hYzgwMjExL2NoYW4uYz0xODg1PXN0YXRpYyBpbnQgaWVlZTgwMjExX3ZpZl91c2VfcmVzZXJ2ZWRfc3dpdGNoKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKVxuLS1cbm5ldC9tYWM4MDIxMS9jaGFuLmMtMjA2NS1cbm5ldC9tYWM4MDIxMS9jaGFuLmM6MjA2NjpcdFx0XHRpZWVlODAyMTFfcmVjYWxjX3R4cG93ZXIobGluaywgZmFsc2UpO1xubmV0L21hYzgwMjExL2NoYW4uYy0yMDY3LVx0XHR9XG4tLVxubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmM9MzUwPUlFRUU4MDIxMV9JRl9GSUxFKHN0YXRlLCBzdGF0ZSwgTEhFWCk7XG5uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuYzozNTE6SUVFRTgwMjExX0lGX0xJTktfRklMRSh0eHBvd2VyLCBjb25mLVx1MDAzZXR4cG93ZXIsIERFQyk7XG5uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuYy0zNTItSUVFRTgwMjExX0lGX0xJTktfRklMRShhcF9wb3dlcl9sZXZlbCwgYXBfcG93ZXJfbGV2ZWwsIERFQyk7XG4tLVxubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmM9OTgyPXN0YXRpYyB2b2lkIGFkZF9saW5rX2ZpbGVzKHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rLFxuLS1cbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5jLTk4NC17XG5uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuYzo5ODU6XHRERUJVR0ZTX0FERChkZW50cnksIHR4cG93ZXIpO1xubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmMtOTg2LVx0REVCVUdGU19BREQoZGVudHJ5LCB1c2VyX3Bvd2VyX2xldmVsKTtcbi0tXG5uZXQvbWFjODAyMTEvZHJpdmVyLW9wcy5oPTEyOTM9c3RhdGljIGlubGluZSB1MzIgZHJ2X2dldF9leHBlY3RlZF90aHJvdWdocHV0KHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxuLS1cbm5ldC9tYWM4MDIxMS9kcml2ZXItb3BzLmgtMTMwNS1cbm5ldC9tYWM4MDIxMS9kcml2ZXItb3BzLmg6MTMwNjpzdGF0aWMgaW5saW5lIGludCBkcnZfZ2V0X3R4cG93ZXIoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG5uZXQvbWFjODAyMTEvZHJpdmVyLW9wcy5oLTEzMDctXHRcdFx0XHQgIHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9kcml2ZXItb3BzLmgtMTMxNC1cbm5ldC9tYWM4MDIxMS9kcml2ZXItb3BzLmg6MTMxNTpcdGlmICghbG9jYWwtXHUwMDNlb3BzLVx1MDAzZWdldF90eHBvd2VyKVxubmV0L21hYzgwMjExL2RyaXZlci1vcHMuaC0xMzE2LVx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG5uZXQvbWFjODAyMTEvZHJpdmVyLW9wcy5oLTEzMTctXG5uZXQvbWFjODAyMTEvZHJpdmVyLW9wcy5oOjEzMTg6XHRyZXQgPSBsb2NhbC1cdTAwM2VvcHMtXHUwMDNlZ2V0X3R4cG93ZXIoXHUwMDI2bG9jYWwtXHUwMDNlaHcsIFx1MDAyNnNkYXRhLVx1MDAzZXZpZiwgbGlua19pZCwgZGJtKTtcbm5ldC9tYWM4MDIxMS9kcml2ZXItb3BzLmg6MTMxOTpcdHRyYWNlX2Rydl9nZXRfdHhwb3dlcihsb2NhbCwgc2RhdGEsIGxpbmtfaWQsICpkYm0sIHJldCk7XG5uZXQvbWFjODAyMTEvZHJpdmVyLW9wcy5oLTEzMjAtXG4tLVxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg9NzU3PXN0cnVjdCBtZXNoX3RhYmxlIHtcbi0tXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC03NjktICogQHJodDogaGFzaCB0YWJsZSBjb250YWluaW5nIHN0cnVjdCBpZWVlODAyMTFfbWVzaF9mYXN0X3R4LCB1c2luZyBza2IgREEgYXMga2V5XG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaDo3NzA6ICogQHdhbGtfaGVhZDogbGlua2VkIGxpc3QgY29udGFpbmluZyBhbGwgaWVlZTgwMjExX21lc2hfZmFzdF90eCBvYmplY3RzXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC03NzEtICogQHdhbGtfbG9jazogbG9jayBwcm90ZWN0aW5nIHdhbGtfaGVhZCBhbmQgcmh0XG4tLVxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg9MjIxMD12b2lkIGllZWU4MDIxMV9kZWxfdmlydHVhbF9tb25pdG9yKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKTtcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTIyMTEtXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaDoyMjEyOmJvb2wgX19pZWVlODAyMTFfcmVjYWxjX3R4cG93ZXIoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmspO1xubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg6MjIxMzp2b2lkIGllZWU4MDIxMV9yZWNhbGNfdHhwb3dlcihzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluayxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTIyMTQtXHRcdFx0ICAgICAgYm9vbCB1cGRhdGVfYnNzKTtcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYy00MS0gKiBBcyBhIGNvbnNlcXVlbmNlLCByZWFkcyAodHJhdmVyc2Fscykgb2YgdGhlIGxpc3QgY2FuIGJlIHByb3RlY3RlZFxubmV0L21hYzgwMjExL2lmYWNlLmM6NDI6ICogYnkgZWl0aGVyIHRoZSBSVE5MLCB0aGUgd2lwaHkgbXV0ZXgsIHRoZSBpZmxpc3RfbXR4IG9yIFJDVS5cbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTQzLSAqL1xuLS1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jPTQ1PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9pZmFjZV93b3JrKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXBoeV93b3JrICp3b3JrKTtcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTQ2LVxubmV0L21hYzgwMjExL2lmYWNlLmM6NDc6Ym9vbCBfX2llZWU4MDIxMV9yZWNhbGNfdHhwb3dlcihzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluaylcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTQ4LXtcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYy02Ny1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjY4Olx0aWYgKHBvd2VyICE9IGxpbmstXHUwMDNlY29uZi1cdTAwM2V0eHBvd2VyKSB7XG5uZXQvbWFjODAyMTEvaWZhY2UuYzo2OTpcdFx0bGluay1cdTAwM2Vjb25mLVx1MDAzZXR4cG93ZXIgPSBwb3dlcjtcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTcwLVx0XHRyZXR1cm4gdHJ1ZTtcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYy03NS1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjc2OnZvaWQgaWVlZTgwMjExX3JlY2FsY190eHBvd2VyKHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rLFxubmV0L21hYzgwMjExL2lmYWNlLmMtNzctXHRcdFx0ICAgICAgYm9vbCB1cGRhdGVfYnNzKVxubmV0L21hYzgwMjExL2lmYWNlLmMtNzgte1xubmV0L21hYzgwMjExL2lmYWNlLmM6Nzk6XHRpZiAoX19pZWVlODAyMTFfcmVjYWxjX3R4cG93ZXIobGluaykgfHxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTgwLVx0ICAgICh1cGRhdGVfYnNzIFx1MDAyNlx1MDAyNiBpZWVlODAyMTFfc2RhdGFfcnVubmluZyhsaW5rLVx1MDAzZXNkYXRhKSkpXG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmM9MTg3OD1zdGF0aWMgdm9pZCBpZWVlODAyMTFfc2V0dXBfc2RhdGEoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmMtMTg5Ny1cdHNkYXRhLVx1MDAzZXZpZi5jZmcuaWRsZSA9IHRydWU7XG5uZXQvbWFjODAyMTEvaWZhY2UuYzoxODk4Olx0c2RhdGEtXHUwMDNldmlmLmJzc19jb25mLnR4cG93ZXIgPSBJTlRfTUlOOyAvKiB1bnNldCAqL1xubmV0L21hYzgwMjExL2lmYWNlLmMtMTg5OS1cbi0tXG5uZXQvbWFjODAyMTEva2V5LmM9NTk2PWllZWU4MDIxMV9rZXlfYWxsb2ModTMyIGNpcGhlciwgaW50IGlkeCwgc2l6ZV90IGtleV9sZW4sXG4tLVxubmV0L21hYzgwMjExL2tleS5jLTYzOS1cdFx0fVxubmV0L21hYzgwMjExL2tleS5jOjY0MDpcdFx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2a2V5LVx1MDAzZXUudGtpcC50eGxvY2spO1xubmV0L21hYzgwMjExL2tleS5jLTY0MS1cdFx0YnJlYWs7XG4tLVxubmV0L21hYzgwMjExL2tleS5oPTU5PXN0cnVjdCBpZWVlODAyMTFfa2V5IHtcbi0tXG5uZXQvbWFjODAyMTEva2V5LmgtNzItXHRcdFx0LyogcHJvdGVjdHMgdHggY29udGV4dCAqL1xubmV0L21hYzgwMjExL2tleS5oOjczOlx0XHRcdHNwaW5sb2NrX3QgdHhsb2NrO1xubmV0L21hYzgwMjExL2tleS5oLTc0LVxuLS1cbm5ldC9tYWM4MDIxMS9saW5rLmM9OTU9dm9pZCBpZWVlODAyMTFfbGlua19pbml0KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9saW5rLmMtMTI3LVx0bGluay1cdTAwM2V1c2VyX3Bvd2VyX2xldmVsID0gc2RhdGEtXHUwMDNlbG9jYWwtXHUwMDNldXNlcl9wb3dlcl9sZXZlbDtcbm5ldC9tYWM4MDIxMS9saW5rLmM6MTI4Olx0bGlua19jb25mLVx1MDAzZXR4cG93ZXIgPSBJTlRfTUlOO1xubmV0L21hYzgwMjExL2xpbmsuYy0xMjktXG4tLVxubmV0L21hYzgwMjExL21haW4uYz05Nj1zdGF0aWMgdTMyIGllZWU4MDIxMV9jYWxjX2h3X2NvbmZfY2hhbihzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbi0tXG5uZXQvbWFjODAyMTEvbWFpbi5jLTE3OC1cdFx0XHRjb250aW51ZTtcbm5ldC9tYWM4MDIxMS9tYWluLmM6MTc5Olx0XHRpZiAoc2RhdGEtXHUwMDNldmlmLmJzc19jb25mLnR4cG93ZXIgPT0gSU5UX01JTilcbm5ldC9tYWM4MDIxMS9tYWluLmMtMTgwLVx0XHRcdGNvbnRpbnVlO1xubmV0L21hYzgwMjExL21haW4uYzoxODE6XHRcdHBvd2VyID0gbWluKHBvd2VyLCBzZGF0YS1cdTAwM2V2aWYuYnNzX2NvbmYudHhwb3dlcik7XG5uZXQvbWFjODAyMTEvbWFpbi5jLTE4Mi1cdH1cbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jPTM2Nzc9c3RhdGljIHU2NCBpZWVlODAyMTFfaGFuZGxlX3B3cl9jb25zdHIoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmssXG4tLVxubmV0L21hYzgwMjExL21sbWUuYy0zNzM4LVx0bGluay1cdTAwM2VhcF9wb3dlcl9sZXZlbCA9IG5ld19hcF9sZXZlbDtcbm5ldC9tYWM4MDIxMS9tbG1lLmM6MzczOTpcdGlmIChfX2llZWU4MDIxMV9yZWNhbGNfdHhwb3dlcihsaW5rKSlcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMzc0MC1cdFx0cmV0dXJuIEJTU19DSEFOR0VEX1RYUE9XRVI7XG4tLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM9Mzc4MD1pZWVlODAyMTFfc3RhX2N1cnJlbnRfYndfcnhfZnJvbV9zdGEoc3RydWN0IGxpbmtfc3RhX2luZm8gKmxpbmtfc3RhLFxuLS1cbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTM3OTAtXHQgKiBhdCBhIGhpZ2hlciBiYW5kd2lkdGggZmlyc3Qgd2hpbGUgcmVkdWNpbmcgYmFuZHdpZHRoLCBhbmRcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jOjM3OTE6XHQgKiBjaGFuZ2UgdGhlIGNoYW5jdHggb25seSBhZnRlciB0aGUgcGVlciBhY2NlcHRzLCBldGMuKVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMzc5Mi1cdCAqL1xuLS1cbm5ldC9tYWM4MDIxMS90a2lwLmM9MTUyPXN0YXRpYyB2b2lkIGllZWU4MDIxMV9jb21wdXRlX3RraXBfcDFrKHN0cnVjdCBpZWVlODAyMTFfa2V5ICprZXksIHUzMiBpdjMyKVxuLS1cbm5ldC9tYWM4MDIxMS90a2lwLmMtMTU3LVxubmV0L21hYzgwMjExL3RraXAuYzoxNTg6XHRsb2NrZGVwX2Fzc2VydF9oZWxkKFx1MDAyNmtleS1cdTAwM2V1LnRraXAudHhsb2NrKTtcbm5ldC9tYWM4MDIxMS90a2lwLmMtMTU5LVxuLS1cbm5ldC9tYWM4MDIxMS90a2lwLmM9MTcxPXZvaWQgaWVlZTgwMjExX2dldF90a2lwX3Axa19pdihzdHJ1Y3QgaWVlZTgwMjExX2tleV9jb25mICprZXljb25mLFxuLS1cbm5ldC9tYWM4MDIxMS90a2lwLmMtMTc3LVxubmV0L21hYzgwMjExL3RraXAuYzoxNzg6XHRzcGluX2xvY2tfYmgoXHUwMDI2a2V5LVx1MDAzZXUudGtpcC50eGxvY2spO1xubmV0L21hYzgwMjExL3RraXAuYy0xNzktXHRpZWVlODAyMTFfY29tcHV0ZV90a2lwX3AxayhrZXksIGl2MzIpO1xubmV0L21hYzgwMjExL3RraXAuYy0xODAtXHRtZW1jcHkocDFrLCBjdHgtXHUwMDNlcDFrLCBzaXplb2YoY3R4LVx1MDAzZXAxaykpO1xubmV0L21hYzgwMjExL3RraXAuYzoxODE6XHRzcGluX3VubG9ja19iaChcdTAwMjZrZXktXHUwMDNldS50a2lwLnR4bG9jayk7XG5uZXQvbWFjODAyMTEvdGtpcC5jLTE4Mi19XG4tLVxubmV0L21hYzgwMjExL3RraXAuYz0xOTY9dm9pZCBpZWVlODAyMTFfZ2V0X3RraXBfcDJrKHN0cnVjdCBpZWVlODAyMTFfa2V5X2NvbmYgKmtleWNvbmYsXG4tLVxubmV0L21hYzgwMjExL3RraXAuYy0yMDctXG5uZXQvbWFjODAyMTEvdGtpcC5jOjIwODpcdHNwaW5fbG9jayhcdTAwMjZrZXktXHUwMDNldS50a2lwLnR4bG9jayk7XG5uZXQvbWFjODAyMTEvdGtpcC5jLTIwOS1cdGllZWU4MDIxMV9jb21wdXRlX3RraXBfcDFrKGtleSwgaXYzMik7XG5uZXQvbWFjODAyMTEvdGtpcC5jLTIxMC1cdHRraXBfbWl4aW5nX3BoYXNlMih0aywgY3R4LCBpdjE2LCBwMmspO1xubmV0L21hYzgwMjExL3RraXAuYzoyMTE6XHRzcGluX3VubG9jayhcdTAwMjZrZXktXHUwMDNldS50a2lwLnR4bG9jayk7XG5uZXQvbWFjODAyMTEvdGtpcC5jLTIxMi19XG4tLVxubmV0L21hYzgwMjExL3RyYWNlLmg9NDcxPVRSQUNFX0VWRU5UKGRydl9saW5rX2luZm9fY2hhbmdlZCxcbi0tXG5uZXQvbWFjODAyMTEvdHJhY2UuaC01MDMtXHRcdF9fZmllbGQoYm9vbCwgaGlkZGVuX3NzaWQpXG5uZXQvbWFjODAyMTEvdHJhY2UuaDo1MDQ6XHRcdF9fZmllbGQoaW50LCB0eHBvd2VyKVxubmV0L21hYzgwMjExL3RyYWNlLmgtNTA1LVx0XHRfX2ZpZWxkKHU4LCBwMnBfb3BwcHNfY3R3aW5kb3cpXG4tLVxubmV0L21hYzgwMjExL3RyYWNlLmgtNTMzLVx0XHRfX2VudHJ5LVx1MDAzZWhpZGRlbl9zc2lkID0gbGlua19jb25mLVx1MDAzZWhpZGRlbl9zc2lkO1xubmV0L21hYzgwMjExL3RyYWNlLmg6NTM0Olx0XHRfX2VudHJ5LVx1MDAzZXR4cG93ZXIgPSBsaW5rX2NvbmYtXHUwMDNldHhwb3dlcjtcbm5ldC9tYWM4MDIxMS90cmFjZS5oLTUzNS1cdFx0X19lbnRyeS1cdTAwM2VwMnBfb3BwcHNfY3R3aW5kb3cgPSBsaW5rX2NvbmYtXHUwMDNlcDJwX25vYV9hdHRyLm9wcHBzX2N0d2luZG93O1xuLS1cbm5ldC9tYWM4MDIxMS90cmFjZS5oPTIyMjQ9REVGSU5FX0VWRU5UKGNoYW5zd2l0Y2hfZXZ0LCBkcnZfY2hhbm5lbF9zd2l0Y2hfcnhfYmVhY29uLFxuLS1cbm5ldC9tYWM4MDIxMS90cmFjZS5oLTIyMzAtXG5uZXQvbWFjODAyMTEvdHJhY2UuaDoyMjMxOlRSQUNFX0VWRU5UKGRydl9nZXRfdHhwb3dlcixcbm5ldC9tYWM4MDIxMS90cmFjZS5oLTIyMzItXHRUUF9QUk9UTyhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbi0tXG5uZXQvbWFjODAyMTEvdHguYz00NTE2PWllZWU4MDIxMV9jb252ZXJ0X3RvX3VuaWNhc3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvbWFjODAyMTEvdHguYy00NTY1LVxubmV0L21hYzgwMjExL3R4LmM6NDU2NjpzdGF0aWMgdm9pZCBpZWVlODAyMTFfbWxvX211bHRpY2FzdF90eF9vbmUoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG5uZXQvbWFjODAyMTEvdHguYy00NTY3LVx0XHRcdFx0XHQgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MzIgY3RybF9mbGFncyxcbi0tXG5uZXQvbWFjODAyMTEvdHguYz00NTgwPXN0YXRpYyB2b2lkIGllZWU4MDIxMV9tbG9fbXVsdGljYXN0X3R4KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L21hYzgwMjExL3R4LmMtNDU5Ni1cdGZvcl9lYWNoX3NldF9iaXQobGluaywgXHUwMDI2bGlua3MsIElFRUU4MDIxMV9NTERfTUFYX05VTV9MSU5LUykge1xubmV0L21hYzgwMjExL3R4LmM6NDU5NzpcdFx0aWVlZTgwMjExX21sb19tdWx0aWNhc3RfdHhfb25lKHNkYXRhLCBza2IsIGN0cmxfZmxhZ3MsIGxpbmspO1xubmV0L21hYzgwMjExL3R4LmMtNDU5OC1cdFx0Y3RybF9mbGFncyA9IDA7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDE3OjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyODYwCgkJCQkJCQlvdXRwdXQ6IDE1NwoJCQkJCQkJdGhvdWdodHM6IDE4MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCYjMzk7cyBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBhZnRlciByZXZpZXdpbmcgdGhpcyBjb2RlIGNoYW5nZSwgaGVyZSYjMzk7cyBteSBxdWljayB0YWtlLiBUaGlzIHBhdGNoIGlzICpkZWZpbml0ZWx5KiB3b3J0aCBmdXp6aW5nLCB0aGF0JiMzOTtzIGEgc29saWQgJiMzNDt0cnVlJiMzNDsgZnJvbSBtZS4gSSYjMzk7dmUgcGlucG9pbnRlZCBhIGNvdXBsZSBvZiBrZXkgZnVuY3Rpb25zIHRvIHRhcmdldDogYGllZWU4MDIxMV9uZXh0X3R4cWAgYW5kIGBpZWVlODAyMTFfdHhxX3NjaGVkdWxlX3N0YXJ0YC4gVGhlc2UgYXJlIHRoZSBmb2NhbCBwb2ludHMsIHRoZSBseW5jaHBpbnMgb2YgdGhpcyBjaGFuZ2UuCgpJJiMzOTttIHNlZWluZyBtb2RpZmljYXRpb25zIHdpdGhpbiB0aGUgdHJhbnNtaXQgcXVldWUgc2NoZWR1bGluZyBzdGF0ZSBsb2dpYywgc3BlY2lmaWNhbGx5IHJlZ2FyZGluZyB0aGUgYHNjaGVkdWxlX29wZW5gIGZsYWcgYW5kIGhvdyByb3VuZCB1cGRhdGVzIGFyZSBoYW5kbGVkLiBUaGUgZnVuY3Rpb24gbmFtZXMgYWxvbmUgdHJpZ2dlciBzb21lIHdhcm5pbmcgYmVsbHMsIEkgdGhpbmsgdGhlcmUgaXMgYSBnb29kIHBvc3NpYmlsaXR5IG9mIHNvbWUgaW50ZXJlc3Rpbmcgc3RhdGUgdHJhbnNpdGlvbnMgdG8gZXhwbG9yZS4KCkkmIzM5O20gdGhpbmtpbmcgdGhpcyBpcyBhbGwgaGFwcGVuaW5nIHdpdGhpbiB0aGUgbWFjODAyMTEgd2lyZWxlc3Mgc3Vic3lzdGVtLCB3aGljaCBpcyBnb29kIG5ld3MgZm9yIGZ1enppbmcuIFdlIGtub3cgbWFjODAyMTEgaXMgb2Z0ZW4gYWNjZXNzaWJsZSB0aHJvdWdoIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB1c2luZyB2aXJ0dWFsIG9yIHNpbXVsYXRlZCB3aXJlbGVzcyBkcml2ZXJzIOKAkyBtYWM4MDIxMV9od3NpbSBiZWluZyB0aGUgb2J2aW91cyBleGFtcGxlLiBUaGVuIHlvdSBoYXZlIE5ldGxpbmsgaW50ZXJmYWNlcyBhcyBhbm90aGVyIHZlcnkgdXNlZnVsIGF0dGFjayB2ZWN0b3IsIHNvIHRoYXQgYWxsIGxvb2tzIGxpa2UgYSBncmVhdCBzZXQgb2Ygb3B0aW9ucyB0byBjb25zaWRlciB3aGVuIHdlIHN0YXJ0IHRvIGZvcm0gYSB0ZXN0LgoKU28sIEkmIzM5O20gdGhpbmtpbmcgd2UgY2FuIGNhbGwgdGhpcyBgc2V0LXJlc3VsdHNgLCBhbmQgbW92ZSBmb3J3YXJkIHdpdGggdGhlIHBsYW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDE3OjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtDRkc4MDIxMSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2llZWU4MDIxMV9uZXh0X3R4cSYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfdHhxX3NjaGVkdWxlX3N0YXJ0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB0cmFuc21pdCBxdWV1ZSBzY2hlZHVsaW5nIGxvZ2ljIGluIG1hYzgwMjExIChuZXQvbWFjODAyMTEvdHguYyksIGRlY291cGxpbmcgcXVldWUgc2NoZWR1bGUgb3BlbiBzdGF0ZSB0cmFja2luZyBmcm9tIHRoZSBzY2hlZHVsZSByb3VuZCBjb3VudGVyLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGFuZCBleGVjdXRhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB1c2luZyB2aXJ0dWFsIHdpcmVsZXNzIGRyaXZlcnMgKHN1Y2ggYXMgbWFjODAyMTFfaHdzaW0pIGFuZCBzdGFuZGFyZCB3aXJlbGVzcyBuZXRsaW5rL3BhY2tldCBpbnRlcmZhY2VzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtDRkc4MDIxMSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2llZWU4MDIxMV9uZXh0X3R4cSYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfdHhxX3NjaGVkdWxlX3N0YXJ0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB0cmFuc21pdCBxdWV1ZSBzY2hlZHVsaW5nIGxvZ2ljIGluIG1hYzgwMjExIChuZXQvbWFjODAyMTEvdHguYyksIGRlY291cGxpbmcgcXVldWUgc2NoZWR1bGUgb3BlbiBzdGF0ZSB0cmFja2luZyBmcm9tIHRoZSBzY2hlZHVsZSByb3VuZCBjb3VudGVyLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGFuZCBleGVjdXRhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB1c2luZyB2aXJ0dWFsIHdpcmVsZXNzIGRyaXZlcnMgKHN1Y2ggYXMgbWFjODAyMTFfaHdzaW0pIGFuZCBzdGFuZGFyZCB3aXJlbGVzcyBuZXRsaW5rL3BhY2tldCBpbnRlcmZhY2VzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxNzo0MzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDE3OjQzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGJvb2xlYW4gZmllbGQgYHNjaGVkdWxlX29wZW5gIHRvIGBzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsYCB0byBkZWNvdXBsZSB0aGUgc2NoZWR1bGluZyBvcGVuL2Nsb3NlZCBzdGF0ZSBmcm9tIHRoZSBgc2NoZWR1bGVfcm91bmRgIGNvdW50ZXIgaW4gbWFjODAyMTEmIzM5O3MgVFggcXVldWUgc2NoZWR1bGluZyBsb2dpYy5cblxuLSBgc3RydWN0IGllZWU4MDIxMV9sb2NhbGAgaXMgYWxsb2NhdGVkIHZpYSBga3phbGxvYygpYCBkdXJpbmcgd2lwaHkgcmVnaXN0cmF0aW9uLCBlbnN1cmluZyBhbGwgZmllbGRzIGluY2x1ZGluZyBgc2NoZWR1bGVfb3BlbmAgYXJlIHplcm8taW5pdGlhbGl6ZWQuXG4tIFRoZSBuZXcgZmllbGQgaXMgb25seSB1c2VkIGludGVybmFsbHkgd2l0aGluIGBuZXQvbWFjODAyMTEvdHguY2AgZm9yIFRYIHF1ZXVlIHNjaGVkdWxpbmcgY29udHJvbCBmbG93IGFuZCBpcyBuZXZlciBjb3BpZWQgdG8gdXNlciBzcGFjZSBvciB1c2VkIGluIGFuIHVuaW5pdGlhbGl6ZWQgc3RhdGUuXG4tIE5vIG5ldyBidWZmZXJzLCBzdGFjayBvYmplY3RzLCBuZXRsaW5rIGF0dHJpYnV0ZXMsIGlvY3Rscywgb3IgdXNlci1zcGFjZSBjb3BpZXMgYXJlIGludHJvZHVjZWQgb3IgbW9kaWZpZWQuXG5cbkNvbnNlcXVlbnRseSwgdGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciBpbmZvcm1hdGlvbiBsZWFrcywgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYzdiZmYxYjI0NTM0MjYzNmZmYzA1YjVkYTM3NGJkODNkYTIwMTI3NApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgU2VwIDggMTc6NDI6NTEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaCBiL25ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oCmluZGV4IDUzYjBiMDhkMzQ1OTcuLjY1MzExMzQwZGI0MDYgMTAwNjQ0Ci0tLSBhL25ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oCkBAIC0xNDY4LDYgJiM0MzsxNDY4LDcgQEAgc3RydWN0IGllZWU4MDIxMV9sb2NhbCB7CiAJc3BpbmxvY2tfdCBhY3RpdmVfdHhxX2xvY2tbSUVFRTgwMjExX05VTV9BQ1NdOwogCXN0cnVjdCBsaXN0X2hlYWQgYWN0aXZlX3R4cXNbSUVFRTgwMjExX05VTV9BQ1NdOwogCXUxNiBzY2hlZHVsZV9yb3VuZFtJRUVFODAyMTFfTlVNX0FDU107CiYjNDM7CWJvb2wgc2NoZWR1bGVfb3BlbltJRUVFODAyMTFfTlVNX0FDU107CiAKIAkvKiBzZXJpYWxpemVzIGllZWU4MDIxMV9oYW5kbGVfd2FrZV90eF9xdWV1ZSAqLwogCXNwaW5sb2NrX3QgaGFuZGxlX3dha2VfdHhfcXVldWVfbG9jazsKZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS90eC5jIGIvbmV0L21hYzgwMjExL3R4LmMKaW5kZXggYzMzMDkyOTYwZGYyNi4uYzY2NWNlZDljMDVjYiAxMDA2NDQKLS0tIGEvbmV0L21hYzgwMjExL3R4LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L21hYzgwMjExL3R4LmMKQEAgLTQxMjIsNyAmIzQzOzQxMjIsNyBAQCBzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqaWVlZTgwMjExX25leHRfdHhxKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCB1OCBhYykKIAogCXNwaW5fbG9ja19iaCgmYW1wO2xvY2FsLSZndDthY3RpdmVfdHhxX2xvY2tbYWNdKTsKIAotCWlmICghbG9jYWwtJmd0O3NjaGVkdWxlX3JvdW5kW2FjXSkKJiM0MzsJaWYgKCFsb2NhbC0mZ3Q7c2NoZWR1bGVfb3BlblthY10pCiAJCWdvdG8gb3V0OwogCiAgYmVnaW46CkBAIC00MzQ3LDEyICYjNDM7NDM0NywxMiBAQCB2b2lkIGllZWU4MDIxMV90eHFfc2NoZWR1bGVfc3RhcnQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHU4IGFjKQogCiAJc3Bpbl9sb2NrX2JoKCZhbXA7bG9jYWwtJmd0O2FjdGl2ZV90eHFfbG9ja1thY10pOwogCi0JaWYgKGllZWU4MDIxMV90eHFfc2NoZWR1bGVfYWlydGltZV9jaGVjayhsb2NhbCwgYWMpKSB7CiYjNDM7CWxvY2FsLSZndDtzY2hlZHVsZV9vcGVuW2FjXSA9CiYjNDM7CQlpZWVlODAyMTFfdHhxX3NjaGVkdWxlX2FpcnRpbWVfY2hlY2sobG9jYWwsIGFjKTsKJiM0MzsJaWYgKGxvY2FsLSZndDtzY2hlZHVsZV9vcGVuW2FjXSkgewogCQlsb2NhbC0mZ3Q7c2NoZWR1bGVfcm91bmRbYWNdJiM0MzsmIzQzOzsKIAkJaWYgKCFsb2NhbC0mZ3Q7c2NoZWR1bGVfcm91bmRbYWNdKQogCQkJbG9jYWwtJmd0O3NjaGVkdWxlX3JvdW5kW2FjXSYjNDM7JiM0Mzs7Ci0JfSBlbHNlIHsKLQkJbG9jYWwtJmd0O3NjaGVkdWxlX3JvdW5kW2FjXSA9IDA7CiAJfQogCiAJc3Bpbl91bmxvY2tfYmgoJmFtcDtsb2NhbC0mZ3Q7YWN0aXZlX3R4cV9sb2NrW2FjXSk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxNzo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjExCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogOTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaCYjMzk7cyBJbXBhY3QqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW4uIE15IGZpcnN0IHN0ZXAgaXMgYWx3YXlzIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgY2hhbmdlcy4gVGhlIHBhdGNoIGFmZmVjdHMgYG5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oYCBhbmQgYG5ldC9tYWM4MDIxMS90eC5jYCwgc28gaXQmIzM5O3MgbGlrZWx5IHRvdWNoaW5nIGludGVybmFsIGRhdGEgc3RydWN0dXJlcyBhbmQgdGhlIHRyYW5zbWl0IHBhdGggd2l0aGluIHRoZSBtYWM4MDIxMSBzdGFjay4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZXNlIGZpbGVzIGluIHRoZSBicm9hZGVyIGNvbnRleHQuCgpOb3csIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZWZmZWN0cy4gSSYjMzk7bSBnb2luZyB0byBsb29rIGF0IGhvdyBgc3RydWN0IGllZWU4MDIxMV9sb2NhbGAgaXMgYWxsb2NhdGVkIGFuZCBpbml0aWFsaXplZCwgc2luY2UgdGhhdCYjMzk7cyBhIGNvcmUgc3RydWN0dXJlLCBhbmQgYWxzbyB0cmFjayBkb3duIGhvdyBgc2NoZWR1bGVfb3BlbmAgaXMgdXNlZDsgdGhlc2UgYXJlIG9mdGVuIGdvb2QgaW5kaWNhdG9ycyBvZiB3aGVyZSBhIHN1YnRsZSBjaGFuZ2UgbGlrZSB0aGlzIG1pZ2h0IGhhdmUgdGhlIGxhcmdlc3QgcmlwcGxlIGVmZmVjdC4gSSYjMzk7bGwgcHJvYmFibHkgZG8gYSBxdWljayBgZ3JlcGAgZm9yIHRob3NlIHRlcm1zIGFjcm9zcyB0aGUgcmVsZXZhbnQgc291cmNlIHRyZWUsIG9yIEkgbWlnaHQgc2ltcGx5IHJlYWQgdGhlIGZpbGVzIGRpcmVjdGx5IGlmIHRoZSBjb2RlYmFzZSBpcyByZWxhdGl2ZWx5IHNtYWxsLCBvciBpZiB0aGUgc2VhcmNoIHR1cm5zIHVwIHRvbyBtYW55IGZhbHNlIHBvc2l0aXZlcy4gSXQmIzM5O3MgdGltZSB0byBkaWcgaW50byB0aGUgZGV0YWlscy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTc6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2NoZWR1bGVfcm91bmQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg9OTYzPWVudW0gdHhxX2luZm9fZmxhZ3Mge1xuLS1cbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTk3Ny0gKiBAc2NoZWR1bGVfb3JkZXI6IHVzZWQgd2l0aCBpZWVlODAyMTFfbG9jYWwtXHUwMDNlYWN0aXZlX3R4cXNcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oOjk3ODogKiBAc2NoZWR1bGVfcm91bmQ6IGNvdW50ZXIgdG8gcHJldmVudCBpbmZpbml0ZSBsb29wcyBvbiBUWFEgc2NoZWR1bGluZ1xubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtOTc5LSAqIEBmbGFnczogVFhRIGZsYWdzIGZyb20gXHUwMDI2ZW51bSB0eHFfaW5mb19mbGFnc1xuLS1cbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oPTk4Mj1zdHJ1Y3QgdHhxX2luZm8ge1xuLS1cbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTk4Ni1cbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oOjk4NzpcdHUxNiBzY2hlZHVsZV9yb3VuZDtcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTk4OC1cdHN0cnVjdCBsaXN0X2hlYWQgc2NoZWR1bGVfb3JkZXI7XG4tLVxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg9MTQ1Nz1zdHJ1Y3QgaWVlZTgwMjExX2xvY2FsIHtcbi0tXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC0xNDY5LVx0c3RydWN0IGxpc3RfaGVhZCBhY3RpdmVfdHhxc1tJRUVFODAyMTFfTlVNX0FDU107XG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaDoxNDcwOlx0dTE2IHNjaGVkdWxlX3JvdW5kW0lFRUU4MDIxMV9OVU1fQUNTXTtcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTE0NzEtXHRib29sIHNjaGVkdWxlX29wZW5bSUVFRTgwMjExX05VTV9BQ1NdO1xuLS1cbm5ldC9tYWM4MDIxMS90eC5jPTQxMTU9c3RydWN0IGllZWU4MDIxMV90eHEgKmllZWU4MDIxMV9uZXh0X3R4cShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgdTggYWMpXG4tLVxubmV0L21hYzgwMjExL3R4LmMtNDE2Ni1cbm5ldC9tYWM4MDIxMS90eC5jOjQxNjc6XHRpZiAodHhxaS1cdTAwM2VzY2hlZHVsZV9yb3VuZCA9PSBsb2NhbC1cdTAwM2VzY2hlZHVsZV9yb3VuZFthY10pXG5uZXQvbWFjODAyMTEvdHguYy00MTY4LVx0XHRnb3RvIG91dDtcbi0tXG5uZXQvbWFjODAyMTEvdHguYy00MTcwLVx0bGlzdF9kZWxfaW5pdChcdTAwMjZ0eHFpLVx1MDAzZXNjaGVkdWxlX29yZGVyKTtcbm5ldC9tYWM4MDIxMS90eC5jOjQxNzE6XHR0eHFpLVx1MDAzZXNjaGVkdWxlX3JvdW5kID0gbG9jYWwtXHUwMDNlc2NoZWR1bGVfcm91bmRbYWNdO1xubmV0L21hYzgwMjExL3R4LmMtNDE3Mi1cdHJldCA9IFx1MDAyNnR4cWktXHUwMDNldHhxO1xuLS1cbm5ldC9tYWM4MDIxMS90eC5jPTQzNDQ9dm9pZCBpZWVlODAyMTFfdHhxX3NjaGVkdWxlX3N0YXJ0KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCB1OCBhYylcbi0tXG5uZXQvbWFjODAyMTEvdHguYy00MzUyLVx0aWYgKGxvY2FsLVx1MDAzZXNjaGVkdWxlX29wZW5bYWNdKSB7XG5uZXQvbWFjODAyMTEvdHguYzo0MzUzOlx0XHRsb2NhbC1cdTAwM2VzY2hlZHVsZV9yb3VuZFthY10mIzQzOyYjNDM7O1xubmV0L21hYzgwMjExL3R4LmM6NDM1NDpcdFx0aWYgKCFsb2NhbC1cdTAwM2VzY2hlZHVsZV9yb3VuZFthY10pXG5uZXQvbWFjODAyMTEvdHguYzo0MzU1Olx0XHRcdGxvY2FsLVx1MDAzZXNjaGVkdWxlX3JvdW5kW2FjXSYjNDM7JiM0Mzs7XG5uZXQvbWFjODAyMTEvdHguYy00MzU2LVx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxNzo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzOTA2CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogNTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqUGVlcmluZyBpbnRvIHRoZSBJRUVFIDgwMi4xMSBMb2NhbCBTdHJ1Y3R1cmUqKgoKQWxyaWdodCwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBsaWZlY3ljbGUgb2YgdGhlIGBzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsYC4gTXkgaW1tZWRpYXRlIGdvYWwgaXMgdG8gdHJhY2UgaXRzIGFsbG9jYXRpb24gYW5kIHN1YnNlcXVlbnQgaW5pdGlhbGl6YXRpb24uIFRoYXQmIzM5O3MgdXN1YWxseSB0aGUgY3J1eCBvZiB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgaGFyZHdhcmUgYWJzdHJhY3Rpb24gbGF5ZXIgZm9yIGFuIDgwMi4xMSBkZXZpY2UgY29tZXMgdG8gbGlmZS4KCk15IGluaXRpYWwgYXBwcm9hY2ggaXMgdG8gZ28gc3RyYWlnaHQgdG8gdGhlIGZ1bmN0aW9ucyB0aGF0IGxpa2VseSBoYW5kbGUgdGhpcy4gSSYjMzk7bGwgc2VhcmNoIGZvciBjYWxscyB0byBmdW5jdGlvbnMgbGlrZSBgaWVlZTgwMjExX2FsbG9jX2h3YCwgYGFsbG9jX2llZWU4MDIxMWAsIG9yIGFueXRoaW5nIHdpdGggYSBzaW1pbGFyIG5hbWluZyBjb252ZW50aW9uLiBUaGF0IHNob3VsZCBnZXQgbWUgdG8gdGhlIHJpZ2h0IHNwb3RzIHF1aWNrbHkuIEhvcGVmdWxseSwgdGhlc2UgZnVuY3Rpb25zIGhhdmUgZW5vdWdoIGNsdWVzIGJ1aWx0IGludG8gdGhlaXIgbmFtZXMgdG8gZm9sbG93IHRoZSB0aHJlYWQgdG8gdGhlIHJpZ2h0IGRhdGEgc3RydWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxNzo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA1MjI3IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5uZXQvbWFjODAyMTEvYWdnLXJ4LmM9NTY9dm9pZCBfX2llZWU4MDIxMV9zdG9wX3J4X2JhX3Nlc3Npb24oc3RydWN0IHN0YV9pbmZvICpzdGEsIHUxNiB0aWQsXG4tLVxubmV0L21hYzgwMjExL2FnZy1yeC5jLTU4LXtcbm5ldC9tYWM4MDIxMS9hZ2ctcnguYzo1OTpcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gc3RhLVx1MDAzZWxvY2FsO1xubmV0L21hYzgwMjExL2FnZy1yeC5jLTYwLVx0c3RydWN0IHRpZF9hbXBkdV9yeCAqdGlkX3J4O1xuLS1cbm5ldC9tYWM4MDIxMS9hZ2ctcnguYz0yMzI9c3RhdGljIHZvaWQgaWVlZTgwMjExX3NlbmRfYWRkYmFfcmVzcChzdHJ1Y3Qgc3RhX2luZm8gKnN0YSwgdTggKmRhLCB1MTYgdGlkLFxuLS1cbm5ldC9tYWM4MDIxMS9hZ2ctcnguYy0yMzctXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IHN0YS1cdTAwM2VzZGF0YTtcbm5ldC9tYWM4MDIxMS9hZ2ctcnguYzoyMzg6XHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHNkYXRhLVx1MDAzZWxvY2FsO1xubmV0L21hYzgwMjExL2FnZy1yeC5jLTIzOS1cdHN0cnVjdCBza19idWZmICpza2I7XG4tLVxubmV0L21hYzgwMjExL2FnZy1yeC5jPTI3Nj12b2lkIF9faWVlZTgwMjExX3N0YXJ0X3J4X2JhX3Nlc3Npb24oc3RydWN0IHN0YV9pbmZvICpzdGEsXG4tLVxubmV0L21hYzgwMjExL2FnZy1yeC5jLTI4Mi17XG5uZXQvbWFjODAyMTEvYWdnLXJ4LmM6MjgzOlx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzdGEtXHUwMDNlc2RhdGEtXHUwMDNlbG9jYWw7XG5uZXQvbWFjODAyMTEvYWdnLXJ4LmMtMjg0LVx0c3RydWN0IHRpZF9hbXBkdV9yeCAqdGlkX2FnZ19yeDtcbi0tXG5uZXQvbWFjODAyMTEvYWdnLXJ4LmMtNDcxLVxubmV0L21hYzgwMjExL2FnZy1yeC5jOjQ3Mjp2b2lkIGllZWU4MDIxMV9wcm9jZXNzX2FkZGJhX3JlcXVlc3Qoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG5uZXQvbWFjODAyMTEvYWdnLXJ4LmMtNDczLVx0XHRcdFx0ICAgICBzdHJ1Y3Qgc3RhX2luZm8gKnN0YSxcbi0tXG5uZXQvbWFjODAyMTEvYWdnLXR4LmM9NjE9c3RhdGljIHZvaWQgaWVlZTgwMjExX3NlbmRfYWRkYmFfcmVxdWVzdChzdHJ1Y3Qgc3RhX2luZm8gKnN0YSwgdTE2IHRpZCxcbi0tXG5uZXQvbWFjODAyMTEvYWdnLXR4LmMtNjUtXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IHN0YS1cdTAwM2VzZGF0YTtcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYzo2NjpcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gc2RhdGEtXHUwMDNlbG9jYWw7XG5uZXQvbWFjODAyMTEvYWdnLXR4LmMtNjctXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuLS1cbm5ldC9tYWM4MDIxMS9hZ2ctdHguYz0xMDQ9dm9pZCBpZWVlODAyMTFfc2VuZF9iYXIoc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZiwgdTggKnJhLCB1MTYgdGlkLCB1MTYgc3NuKVxuLS1cbm5ldC9tYWM4MDIxMS9hZ2ctdHguYy0xMDYtXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IHZpZl90b19zZGF0YSh2aWYpO1xubmV0L21hYzgwMjExL2FnZy10eC5jOjEwNzpcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gc2RhdGEtXHUwMDNlbG9jYWw7XG5uZXQvbWFjODAyMTEvYWdnLXR4LmMtMTA4LVx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbi0tXG5uZXQvbWFjODAyMTEvYWdnLXR4LmM9MjMzPWllZWU4MDIxMV9hZ2dfc3BsaWNlX3BhY2tldHMoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL2FnZy10eC5jLTIzNS17XG5uZXQvbWFjODAyMTEvYWdnLXR4LmM6MjM2Olx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cdTAwM2Vsb2NhbDtcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYy0yMzctXHRpbnQgcXVldWUgPSBzZGF0YS1cdTAwM2V2aWYuaHdfcXVldWVbaWVlZTgwMjExX2FjX2Zyb21fdGlkKHRpZCldO1xuLS1cbm5ldC9tYWM4MDIxMS9hZ2ctdHguYz0yOTE9aW50IF9faWVlZTgwMjExX3N0b3BfdHhfYmFfc2Vzc2lvbihzdHJ1Y3Qgc3RhX2luZm8gKnN0YSwgdTE2IHRpZCxcbi0tXG5uZXQvbWFjODAyMTEvYWdnLXR4LmMtMjkzLXtcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYzoyOTQ6XHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHN0YS1cdTAwM2Vsb2NhbDtcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYy0yOTUtXHRzdHJ1Y3QgdGlkX2FtcGR1X3R4ICp0aWRfdHg7XG4tLVxubmV0L21hYzgwMjExL2FnZy10eC5jPTQ0NT1zdGF0aWMgdm9pZCBpZWVlODAyMTFfc2VuZF9hZGRiYV93aXRoX3RpbWVvdXQoc3RydWN0IHN0YV9pbmZvICpzdGEsXG4tLVxubmV0L21hYzgwMjExL2FnZy10eC5jLTQ0OC1cdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gc3RhLVx1MDAzZXNkYXRhO1xubmV0L21hYzgwMjExL2FnZy10eC5jOjQ0OTpcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gc3RhLVx1MDAzZWxvY2FsO1xubmV0L21hYzgwMjExL2FnZy10eC5jLTQ1MC1cdHU4IHRpZCA9IHRpZF90eC1cdTAwM2V0aWQ7XG4tLVxubmV0L21hYzgwMjExL2FnZy10eC5jPTQ5ND12b2lkIGllZWU4MDIxMV90eF9iYV9zZXNzaW9uX2hhbmRsZV9zdGFydChzdHJ1Y3Qgc3RhX2luZm8gKnN0YSwgaW50IHRpZClcbi0tXG5uZXQvbWFjODAyMTEvYWdnLXR4LmMtNDk2LVx0c3RydWN0IHRpZF9hbXBkdV90eCAqdGlkX3R4O1xubmV0L21hYzgwMjExL2FnZy10eC5jOjQ5NzpcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gc3RhLVx1MDAzZWxvY2FsO1xubmV0L21hYzgwMjExL2FnZy10eC5jLTQ5OC1cdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gc3RhLVx1MDAzZXNkYXRhO1xuLS1cbm5ldC9tYWM4MDIxMS9hZ2ctdHguYz02MDM9aW50IGllZWU4MDIxMV9zdGFydF90eF9iYV9zZXNzaW9uKHN0cnVjdCBpZWVlODAyMTFfc3RhICpwdWJzdGEsIHUxNiB0aWQsXG4tLVxubmV0L21hYzgwMjExL2FnZy10eC5jLTYwNy1cdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gc3RhLVx1MDAzZXNkYXRhO1xubmV0L21hYzgwMjExL2FnZy10eC5jOjYwODpcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gc2RhdGEtXHUwMDNlbG9jYWw7XG5uZXQvbWFjODAyMTEvYWdnLXR4LmMtNjA5LVx0c3RydWN0IHRpZF9hbXBkdV90eCAqdGlkX3R4O1xuLS1cbm5ldC9tYWM4MDIxMS9hZ2ctdHguYz03NTQ9RVhQT1JUX1NZTUJPTChpZWVlODAyMTFfc3RhcnRfdHhfYmFfc2Vzc2lvbik7XG5uZXQvbWFjODAyMTEvYWdnLXR4LmMtNzU1LVxubmV0L21hYzgwMjExL2FnZy10eC5jOjc1NjpzdGF0aWMgdm9pZCBpZWVlODAyMTFfYWdnX3R4X29wZXJhdGlvbmFsKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxubmV0L21hYzgwMjExL2FnZy10eC5jLTc1Ny1cdFx0XHRcdFx0IHN0cnVjdCBzdGFfaW5mbyAqc3RhLCB1MTYgdGlkKVxuLS1cbm5ldC9tYWM4MDIxMS9hZ2ctdHguYz03OTk9dm9pZCBpZWVlODAyMTFfc3RhcnRfdHhfYmFfY2Ioc3RydWN0IHN0YV9pbmZvICpzdGEsIGludCB0aWQsXG4tLVxubmV0L21hYzgwMjExL2FnZy10eC5jLTgwMi1cdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gc3RhLVx1MDAzZXNkYXRhO1xubmV0L21hYzgwMjExL2FnZy10eC5jOjgwMzpcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gc2RhdGEtXHUwMDNlbG9jYWw7XG5uZXQvbWFjODAyMTEvYWdnLXR4LmMtODA0LVxuLS1cbm5ldC9tYWM4MDIxMS9hZ2ctdHguYz04NTA9dm9pZCBpZWVlODAyMTFfc3RhcnRfdHhfYmFfY2JfaXJxc2FmZShzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuLS1cbm5ldC9tYWM4MDIxMS9hZ2ctdHguYy04NTMtXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IHZpZl90b19zZGF0YSh2aWYpO1xubmV0L21hYzgwMjExL2FnZy10eC5jOjg1NDpcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gc2RhdGEtXHUwMDNlbG9jYWw7XG5uZXQvbWFjODAyMTEvYWdnLXR4LmMtODU1LVx0c3RydWN0IHN0YV9pbmZvICpzdGE7XG4tLVxubmV0L21hYzgwMjExL2FnZy10eC5jPTg3Mj1pbnQgaWVlZTgwMjExX3N0b3BfdHhfYmFfc2Vzc2lvbihzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqcHVic3RhLCB1MTYgdGlkKVxuLS1cbm5ldC9tYWM4MDIxMS9hZ2ctdHguYy04NzUtXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IHN0YS1cdTAwM2VzZGF0YTtcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYzo4NzY6XHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHNkYXRhLVx1MDAzZWxvY2FsO1xubmV0L21hYzgwMjExL2FnZy10eC5jLTg3Ny1cdHN0cnVjdCB0aWRfYW1wZHVfdHggKnRpZF90eDtcbi0tXG5uZXQvbWFjODAyMTEvYWdnLXR4LmM9OTU0PXZvaWQgaWVlZTgwMjExX3N0b3BfdHhfYmFfY2JfaXJxc2FmZShzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuLS1cbm5ldC9tYWM4MDIxMS9hZ2ctdHguYy05NTctXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IHZpZl90b19zZGF0YSh2aWYpO1xubmV0L21hYzgwMjExL2FnZy10eC5jOjk1ODpcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gc2RhdGEtXHUwMDNlbG9jYWw7XG5uZXQvbWFjODAyMTEvYWdnLXR4LmMtOTU5LVx0c3RydWN0IHN0YV9pbmZvICpzdGE7XG4tLVxubmV0L21hYzgwMjExL2FnZy10eC5jPTk3ND1FWFBPUlRfU1lNQk9MKGllZWU4MDIxMV9zdG9wX3R4X2JhX2NiX2lycXNhZmUpO1xuLS1cbm5ldC9tYWM4MDIxMS9hZ2ctdHguYy05NzYtXG5uZXQvbWFjODAyMTEvYWdnLXR4LmM6OTc3OnZvaWQgaWVlZTgwMjExX3Byb2Nlc3NfYWRkYmFfcmVzcChzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYy05NzgtXHRcdFx0XHQgIHN0cnVjdCBzdGFfaW5mbyAqc3RhLFxuLS1cbm5ldC9tYWM4MDIxMS9hcC5jPTE0PWllZWU4MDIxMV9zZW5kX2VtbF9vcF9tb2RlX25vdGlmKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9hcC5jLTE3LVx0aW50IGxlbiA9IElFRUU4MDIxMV9NSU5fQUNUSU9OX1NJWkUoZW1sX29tbik7XG5uZXQvbWFjODAyMTEvYXAuYzoxODpcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gc2RhdGEtXHUwMDNlbG9jYWw7XG5uZXQvbWFjODAyMTEvYXAuYy0xOS1cdHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdDtcbi0tXG5uZXQvbWFjODAyMTEvYXAuYz01MT1pZWVlODAyMTFfcnhfZW1sX29wX21vZGVfbm90aWYoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL2FwLmMtNTgtXHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQgPSAodm9pZCAqKXNrYi1cdTAwM2VkYXRhO1xubmV0L21hYzgwMjExL2FwLmM6NTk6XHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHNkYXRhLVx1MDAzZWxvY2FsO1xubmV0L21hYzgwMjExL2FwLmMtNjAtXHR1OCBjb250cm9sID0gbWdtdC1cdTAwM2V1LmFjdGlvbi5lbWxfb21uLmNvbnRyb2w7XG4tLVxubmV0L21hYzgwMjExL2FwLmM9MzI0PXZvaWQgaWVlZTgwMjExX3Vocl9kaXNhYmxlX2RiZV9hbGxfc3RhcyhzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluaylcbi0tXG5uZXQvbWFjODAyMTEvYXAuYy0zMjYtXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IGxpbmstXHUwMDNlc2RhdGE7XG5uZXQvbWFjODAyMTEvYXAuYzozMjc6XHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHNkYXRhLVx1MDAzZWxvY2FsO1xubmV0L21hYzgwMjExL2FwLmMtMzI4LVx0c3RydWN0IGllZWU4MDIxMV9jaGFuY3R4X2NvbmYgKmNoYW5jdHhfY29uZjtcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmM9OTY9c3RhdGljIGludCBpZWVlODAyMTFfc2V0X21vbl9vcHRpb25zKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy05OC17XG5uZXQvbWFjODAyMTEvY2ZnLmM6OTk6XHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHNkYXRhLVx1MDAzZWxvY2FsO1xubmV0L21hYzgwMjExL2NmZy5jLTEwMC1cdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKm1vbml0b3Jfc2RhdGEgPSBOVUxMO1xuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYz0yMDY9c3RhdGljIHN0cnVjdCB3aXJlbGVzc19kZXYgKmllZWU4MDIxMV9hZGRfaWZhY2Uoc3RydWN0IHdpcGh5ICp3aXBoeSxcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjExLXtcbm5ldC9tYWM4MDIxMS9jZmcuYzoyMTI6XHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHdpcGh5X3ByaXYod2lwaHkpO1xubmV0L21hYzgwMjExL2NmZy5jLTIxMy1cdHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXY7XG4tLVxubmV0L21hYzgwMjExL2NmZy5jPTI1OT1zdGF0aWMgaW50IGllZWU4MDIxMV9jaGFuZ2VfaWZhY2Uoc3RydWN0IHdpcGh5ICp3aXBoeSxcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjY0LVx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBJRUVFODAyMTFfREVWX1RPX1NVQl9JRihkZXYpO1xubmV0L21hYzgwMjExL2NmZy5jOjI2NTpcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gc2RhdGEtXHUwMDNlbG9jYWw7XG5uZXQvbWFjODAyMTEvY2ZnLmMtMjY2LVx0c3RydWN0IHN0YV9pbmZvICpzdGE7XG4tLVxubmV0L21hYzgwMjExL2NmZy5jPTU4NT1zdGF0aWMgaW50IGllZWU4MDIxMV9zZXRfdHgoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTU4Ny17XG5uZXQvbWFjODAyMTEvY2ZnLmM6NTg4Olx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cdTAwM2Vsb2NhbDtcbm5ldC9tYWM4MDIxMS9jZmcuYy01ODktXHRzdHJ1Y3QgaWVlZTgwMjExX2tleSAqa2V5O1xuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYz02MTM9c3RhdGljIGludCBpZWVlODAyMTFfYWRkX2tleShzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy02MTktXHRcdGllZWU4MDIxMV9saW5rX29yX2RlZmxpbmsoc2RhdGEsIGxpbmtfaWQsIGZhbHNlKTtcbm5ldC9tYWM4MDIxMS9jZmcuYzo2MjA6XHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHNkYXRhLVx1MDAzZWxvY2FsO1xubmV0L21hYzgwMjExL2NmZy5jLTYyMS1cdHN0cnVjdCBzdGFfaW5mbyAqc3RhID0gTlVMTDtcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmM9NzM5PWllZWU4MDIxMV9sb29rdXBfa2V5KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLCBpbnQgbGlua19pZCxcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtNzQxLXtcbm5ldC9tYWM4MDIxMS9jZmcuYzo3NDI6XHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCBfX21heWJlX3VudXNlZCA9IHNkYXRhLVx1MDAzZWxvY2FsO1xubmV0L21hYzgwMjExL2NmZy5jLTc0My1cdHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rID0gXHUwMDI2c2RhdGEtXHUwMDNlZGVmbGluaztcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmM9Nzk3PXN0YXRpYyBpbnQgaWVlZTgwMjExX2RlbF9rZXkoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2Rldixcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtODAxLVx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBJRUVFODAyMTFfV0RFVl9UT19TVUJfSUYod2Rldik7XG5uZXQvbWFjODAyMTEvY2ZnLmM6ODAyOlx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cdTAwM2Vsb2NhbDtcbm5ldC9tYWM4MDIxMS9jZmcuYy04MDMtXHRzdHJ1Y3QgaWVlZTgwMjExX2tleSAqa2V5O1xuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYz05OTk9c3RhdGljIGludCBpZWVlODAyMTFfZHVtcF9zdGF0aW9uKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTEwMDItXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IElFRUU4MDIxMV9XREVWX1RPX1NVQl9JRih3ZGV2KTtcbm5ldC9tYWM4MDIxMS9jZmcuYzoxMDAzOlx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cdTAwM2Vsb2NhbDtcbm5ldC9tYWM4MDIxMS9jZmcuYy0xMDA0LVx0c3RydWN0IHN0YV9pbmZvICpzdGE7XG4tLVxubmV0L21hYzgwMjExL2NmZy5jPTEwMjY9c3RhdGljIGludCBpZWVlODAyMTFfZHVtcF9zdXJ2ZXkoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtMTAyOC17XG5uZXQvbWFjODAyMTEvY2ZnLmM6MTAyOTpcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gd2Rldl9wcml2KGRldi1cdTAwM2VpZWVlODAyMTFfcHRyKTtcbm5ldC9tYWM4MDIxMS9jZmcuYy0xMDMwLVxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYz0xMDM0PXN0YXRpYyBpbnQgaWVlZTgwMjExX2dldF9zdGF0aW9uKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTEwMzgtXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IElFRUU4MDIxMV9XREVWX1RPX1NVQl9JRih3ZGV2KTtcbm5ldC9tYWM4MDIxMS9jZmcuYzoxMDM5Olx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cdTAwM2Vsb2NhbDtcbm5ldC9tYWM4MDIxMS9jZmcuYy0xMDQwLVx0c3RydWN0IHN0YV9pbmZvICpzdGE7XG4tLVxubmV0L21hYzgwMjExL2NmZy5jPTEwNjA9c3RhdGljIGludCBpZWVlODAyMTFfc2V0X21vbml0b3JfY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy0xMDYzLXtcbm5ldC9tYWM4MDIxMS9jZmcuYzoxMDY0Olx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSB3aXBoeV9wcml2KHdpcGh5KTtcbm5ldC9tYWM4MDIxMS9jZmcuYy0xMDY1LVx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGE7XG4tLVxubmV0L21hYzgwMjExL2NmZy5jPTE0MjU9c3RhdGljIHZvaWQgaWVlZTgwMjExX3VwZGF0ZV9hcF9iYW5kd2lkdGgoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmssXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTE0Mjcte1xubmV0L21hYzgwMjExL2NmZy5jOjE0Mjg6XHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IGxpbmstXHUwMDNlc2RhdGEtXHUwMDNlbG9jYWw7XG5uZXQvbWFjODAyMTEvY2ZnLmMtMTQyOS1cdHN0cnVjdCBpZWVlODAyMTFfY2hhbmN0eF9jb25mICpjaGFuY3R4X2NvbmY7XG4tLVxubmV0L21hYzgwMjExL2NmZy5jPTE2MzE9c3RhdGljIGludCBpZWVlODAyMTFfc3RhcnRfYXAoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtMTYzNC1cdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gSUVFRTgwMjExX0RFVl9UT19TVUJfSUYoZGV2KTtcbm5ldC9tYWM4MDIxMS9jZmcuYzoxNjM1Olx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cdTAwM2Vsb2NhbDtcbm5ldC9tYWM4MDIxMS9jZmcuYy0xNjM2LVx0c3RydWN0IGJlYWNvbl9kYXRhICpvbGQ7XG4tLVxubmV0L21hYzgwMjExL2NmZy5jPTIwMTE9c3RhdGljIGludCBpZWVlODAyMTFfc3RvcF9hcChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy0yMDE1LVx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqdmxhbjtcbm5ldC9tYWM4MDIxMS9jZmcuYzoyMDE2Olx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cdTAwM2Vsb2NhbDtcbm5ldC9tYWM4MDIxMS9jZmcuYy0yMDE3LVx0c3RydWN0IGJlYWNvbl9kYXRhICpvbGRfYmVhY29uO1xuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy0yMTI5LVxubmV0L21hYzgwMjExL2NmZy5jOjIxMzA6c3RhdGljIGludCBzdGFfYXBwbHlfYXV0aF9mbGFncyhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbm5ldC9tYWM4MDIxMS9jZmcuYy0yMTMxLVx0XHRcdFx0c3RydWN0IHN0YV9pbmZvICpzdGEsXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTIxODktXG5uZXQvbWFjODAyMTEvY2ZnLmM6MjE5MDpzdGF0aWMgdm9pZCBzdGFfYXBwbHlfbWVzaF9wYXJhbXMoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjE5MS1cdFx0XHRcdCAgc3RydWN0IHN0YV9pbmZvICpzdGEsXG4tLVxubmV0L21hYzgwMjExL2NmZy5jPTIyNTU9ZW51bSBzdGFfbGlua19hcHBseV9tb2RlIHtcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjI2MC1cbm5ldC9tYWM4MDIxMS9jZmcuYzoyMjYxOnN0YXRpYyBpbnQgc3RhX2xpbmtfYXBwbHlfcGFyYW1ldGVycyhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbm5ldC9tYWM4MDIxMS9jZmcuYy0yMjYyLVx0XHRcdFx0ICAgICBzdHJ1Y3Qgc3RhX2luZm8gKnN0YSxcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjQ0OS1cbm5ldC9tYWM4MDIxMS9jZmcuYzoyNDUwOnN0YXRpYyBpbnQgc3RhX2FwcGx5X3BhcmFtZXRlcnMoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjQ1MS1cdFx0XHRcdHN0cnVjdCBzdGFfaW5mbyAqc3RhLFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYz0yNjM0PXN0YXRpYyBpbnQgaWVlZTgwMjExX2FkZF9zdGF0aW9uKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTI2Mzcte1xubmV0L21hYzgwMjExL2NmZy5jOjI2Mzg6XHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHdpcGh5X3ByaXYod2lwaHkpO1xubmV0L21hYzgwMjExL2NmZy5jLTI2MzktXHRzdHJ1Y3Qgc3RhX2luZm8gKnN0YTtcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmM9MjcxND1zdGF0aWMgaW50IGllZWU4MDIxMV9kZWxfc3RhdGlvbihzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy0yNzI3LVxubmV0L21hYzgwMjExL2NmZy5jOjI3Mjg6c3RhdGljIGludCBpZWVlODAyMTFfc2V0X3N0YV80YWRkcihzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbm5ldC9tYWM4MDIxMS9jZmcuYy0yNzI5LVx0XHRcdFx0ICAgc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL2NmZy5jPTI3ODc9c3RhdGljIGludCBpZWVlODAyMTFfY2hhbmdlX3N0YXRpb24oc3RydWN0IHdpcGh5ICp3aXBoeSxcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjc5MS1cdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gSUVFRTgwMjExX1dERVZfVE9fU1VCX0lGKHdkZXYpO1xubmV0L21hYzgwMjExL2NmZy5jOjI3OTI6XHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHdpcGh5X3ByaXYod2lwaHkpO1xubmV0L21hYzgwMjExL2NmZy5jLTI3OTMtXHRzdHJ1Y3Qgc3RhX2luZm8gKnN0YTtcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmM9MzQyNz1zdGF0aWMgaW50IGllZWU4MDIxMV9zZXRfdHhxX3BhcmFtcyhzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy0zNDMwLXtcbm5ldC9tYWM4MDIxMS9jZmcuYzozNDMxOlx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSB3aXBoeV9wcml2KHdpcGh5KTtcbm5ldC9tYWM4MDIxMS9jZmcuYy0zNDMyLVx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBJRUVFODAyMTFfREVWX1RPX1NVQl9JRihkZXYpO1xuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYz0zNTY3PWllZWU4MDIxMV9zY2hlZF9zY2FuX3N0b3Aoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtMzU2OS17XG5uZXQvbWFjODAyMTEvY2ZnLmM6MzU3MDpcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gd2lwaHlfcHJpdih3aXBoeSk7XG5uZXQvbWFjODAyMTEvY2ZnLmMtMzU3MS1cbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmM9MzYzOT1zdGF0aWMgaW50IGllZWU4MDIxMV9zZXRfd2lwaHlfcGFyYW1zKHN0cnVjdCB3aXBoeSAqd2lwaHksIGludCByYWRpb19pZHgsXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTM2NDEte1xubmV0L21hYzgwMjExL2NmZy5jOjM2NDI6XHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHdpcGh5X3ByaXYod2lwaHkpO1xubmV0L21hYzgwMjExL2NmZy5jLTM2NDMtXHRpbnQgZXJyO1xuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYz0zNzA4PXN0YXRpYyBpbnQgaWVlZTgwMjExX3NldF90eF9wb3dlcihzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy0zNzExLXtcbm5ldC9tYWM4MDIxMS9jZmcuYzozNzEyOlx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSB3aXBoeV9wcml2KHdpcGh5KTtcbm5ldC9tYWM4MDIxMS9jZmcuYy0zNzEzLVx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGE7XG4tLVxubmV0L21hYzgwMjExL2NmZy5jPTM4MzU9c3RhdGljIGludCBpZWVlODAyMTFfZ2V0X3R4X3Bvd2VyKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTM4NDAte1xubmV0L21hYzgwMjExL2NmZy5jOjM4NDE6XHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHdpcGh5X3ByaXYod2lwaHkpO1xubmV0L21hYzgwMjExL2NmZy5jLTM4NDItXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IElFRUU4MDIxMV9XREVWX1RPX1NVQl9JRih3ZGV2KTtcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmM9Mzg2Nz1zdGF0aWMgdm9pZCBpZWVlODAyMTFfcmZraWxsX3BvbGwoc3RydWN0IHdpcGh5ICp3aXBoeSlcbm5ldC9tYWM4MDIxMS9jZmcuYy0zODY4LXtcbm5ldC9tYWM4MDIxMS9jZmcuYzozODY5Olx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSB3aXBoeV9wcml2KHdpcGh5KTtcbm5ldC9tYWM4MDIxMS9jZmcuYy0zODcwLVxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYz0zODc1PXN0YXRpYyBpbnQgaWVlZTgwMjExX3Rlc3Rtb2RlX2NtZChzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy0zODc4LXtcbm5ldC9tYWM4MDIxMS9jZmcuYzozODc5Olx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSB3aXBoeV9wcml2KHdpcGh5KTtcbm5ldC9tYWM4MDIxMS9jZmcuYy0zODgwLVx0c3RydWN0IGllZWU4MDIxMV92aWYgKnZpZiA9IE5VTEw7XG4tLVxubmV0L21hYzgwMjExL2NmZy5jPTM4OTY9c3RhdGljIGludCBpZWVlODAyMTFfdGVzdG1vZGVfZHVtcChzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy0zOTAwLXtcbm5ldC9tYWM4MDIxMS9jZmcuYzozOTAxOlx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSB3aXBoeV9wcml2KHdpcGh5KTtcbm5ldC9tYWM4MDIxMS9jZmcuYy0zOTAyLVxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYz0zOTgzPXN0YXRpYyBpbnQgaWVlZTgwMjExX3NldF9wb3dlcl9tZ210KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTM5ODYtXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IElFRUU4MDIxMV9ERVZfVE9fU1VCX0lGKGRldik7XG5uZXQvbWFjODAyMTEvY2ZnLmM6Mzk4NzpcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gd2Rldl9wcml2KGRldi1cdTAwM2VpZWVlODAyMTFfcHRyKTtcbm5ldC9tYWM4MDIxMS9jZmcuYy0zOTg4LVx0dW5zaWduZWQgaW50IGxpbmtfaWQ7XG4tLVxubmV0L21hYzgwMjExL2NmZy5jPTQxMDM9c3RhdGljIGludCBpZWVlODAyMTFfc2V0X2JpdHJhdGVfbWFzayhzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy00MTA5LVx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBJRUVFODAyMTFfREVWX1RPX1NVQl9JRihkZXYpO1xubmV0L21hYzgwMjExL2NmZy5jOjQxMTA6XHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHdkZXZfcHJpdihkZXYtXHUwMDNlaWVlZTgwMjExX3B0cik7XG5uZXQvbWFjODAyMTEvY2ZnLmMtNDExMS1cdGludCBpLCByZXQ7XG4tLVxubmV0L21hYzgwMjExL2NmZy5jPTQxNzM9c3RhdGljIGJvb2wgaWVlZTgwMjExX2lzX3NjYW5fb25nb2luZyhzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxubmV0L21hYzgwMjExL2NmZy5jOjQxNzQ6XHRcdFx0XHQgICAgICBzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbm5ldC9tYWM4MDIxMS9jZmcuYy00MTc1LVx0XHRcdFx0ICAgICAgc3RydWN0IGNmZzgwMjExX2NoYW5fZGVmICpjaGFuZGVmKVxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYz00MjEwPXN0YXRpYyBpbnQgaWVlZTgwMjExX3N0YXJ0X3JhZGFyX2RldGVjdGlvbihzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy00MjE2LVx0c3RydWN0IGllZWU4MDIxMV9jaGFuX3JlcSBjaGFucmVxID0geyAub3BlciA9ICpjaGFuZGVmIH07XG5uZXQvbWFjODAyMTEvY2ZnLmM6NDIxNzpcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gc2RhdGEtXHUwMDNlbG9jYWw7XG5uZXQvbWFjODAyMTEvY2ZnLmMtNDIxOC1cdHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rX2RhdGE7XG4tLVxubmV0L21hYzgwMjExL2NmZy5jPTQyNDU9c3RhdGljIHZvaWQgaWVlZTgwMjExX2VuZF9jYWMoc3RydWN0IHdpcGh5ICp3aXBoeSxcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtNDI0OC1cdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gSUVFRTgwMjExX0RFVl9UT19TVUJfSUYoZGV2KTtcbm5ldC9tYWM4MDIxMS9jZmcuYzo0MjQ5Olx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cdTAwM2Vsb2NhbDtcbm5ldC9tYWM4MDIxMS9jZmcuYy00MjUwLVx0c3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmtfZGF0YTtcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmM9NDM3NT12b2lkIGllZWU4MDIxMV9jc2FfZmluaXNoKHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsIHVuc2lnbmVkIGludCBsaW5rX2lkKVxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy00Mzc3LVx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSB2aWZfdG9fc2RhdGEodmlmKTtcbm5ldC9tYWM4MDIxMS9jZmcuYzo0Mzc4Olx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cdTAwM2Vsb2NhbDtcbm5ldC9tYWM4MDIxMS9jZmcuYy00Mzc5LVx0c3RydWN0IGllZWU4MDIxMV9ic3NfY29uZiAqdHhfYnNzX2NvbmY7XG4tLVxubmV0L21hYzgwMjExL2NmZy5jPTQ0MTc9dm9pZCBpZWVlODAyMTFfY2hhbm5lbF9zd2l0Y2hfZGlzY29ubmVjdChzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmKVxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy00NDIwLVx0c3RydWN0IGllZWU4MDIxMV9pZl9tYW5hZ2VkICppZm1nZCA9IFx1MDAyNnNkYXRhLVx1MDAzZXUubWdkO1xubmV0L21hYzgwMjExL2NmZy5jOjQ0MjE6XHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHNkYXRhLVx1MDAzZWxvY2FsO1xubmV0L21hYzgwMjExL2NmZy5jLTQ0MjItXG4tLVxubmV0L21hYzgwMjExL2NmZy5jPTQ0Njc9c3RhdGljIGludCBfX2llZWU4MDIxMV9jc2FfZmluYWxpemUoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmtfZGF0YSlcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtNDQ2OS1cdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gbGlua19kYXRhLVx1MDAzZXNkYXRhO1xubmV0L21hYzgwMjExL2NmZy5jOjQ0NzA6XHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHNkYXRhLVx1MDAzZWxvY2FsO1xubmV0L21hYzgwMjExL2NmZy5jLTQ0NzEtXHRzdHJ1Y3QgaWVlZTgwMjExX2Jzc19jb25mICpsaW5rX2NvbmYgPSBsaW5rX2RhdGEtXHUwMDNlY29uZjtcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmM9NDU0ND12b2lkIGllZWU4MDIxMV9jc2FfZmluYWxpemVfd29yayhzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lwaHlfd29yayAqd29yaylcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtNDU0OC1cdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gbGluay1cdTAwM2VzZGF0YTtcbm5ldC9tYWM4MDIxMS9jZmcuYzo0NTQ5Olx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cdTAwM2Vsb2NhbDtcbm5ldC9tYWM4MDIxMS9jZmcuYy00NTUwLVxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYz00NzA0PV9faWVlZTgwMjExX2NoYW5uZWxfc3dpdGNoKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTQ3MTEtXHR9O1xubmV0L21hYzgwMjExL2NmZy5jOjQ3MTI6XHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHNkYXRhLVx1MDAzZWxvY2FsO1xubmV0L21hYzgwMjExL2NmZy5jLTQ3MTMtXHRzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWxfc3dpdGNoIGNoX3N3aXRjaCA9IHtcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmM9NDgyMz1pbnQgaWVlZTgwMjExX2NoYW5uZWxfc3dpdGNoKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTQ4MjYtXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IElFRUU4MDIxMV9ERVZfVE9fU1VCX0lGKGRldik7XG5uZXQvbWFjODAyMTEvY2ZnLmM6NDgyNzpcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gc2RhdGEtXHUwMDNlbG9jYWw7XG5uZXQvbWFjODAyMTEvY2ZnLmMtNDgyOC1cbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtNDgzMy1cbm5ldC9tYWM4MDIxMS9jZmcuYzo0ODM0OmludCBpZWVlODAyMTFfYXR0YWNoX2Fja19za2Ioc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsIHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvbWFjODAyMTEvY2ZnLmMtNDgzNS1cdFx0XHQgICAgIHU2NCAqY29va2llLCBnZnBfdCBnZnApXG4tLVxubmV0L21hYzgwMjExL2NmZy5jPTQ4NjQ9aWVlZTgwMjExX3VwZGF0ZV9tZ210X2ZyYW1lX3JlZ2lzdHJhdGlvbnMoc3RydWN0IHdpcGh5ICp3aXBoeSxcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtNDg2Ny17XG5uZXQvbWFjODAyMTEvY2ZnLmM6NDg2ODpcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gd2lwaHlfcHJpdih3aXBoeSk7XG5uZXQvbWFjODAyMTEvY2ZnLmMtNDg2OS1cdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gSUVFRTgwMjExX1dERVZfVE9fU1VCX0lGKHdkZXYpO1xuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYz00OTAyPXN0YXRpYyBpbnQgaWVlZTgwMjExX3NldF9hbnRlbm5hKHN0cnVjdCB3aXBoeSAqd2lwaHksIGludCByYWRpb19pZHgsXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTQ5MDQte1xubmV0L21hYzgwMjExL2NmZy5jOjQ5MDU6XHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHdpcGh5X3ByaXYod2lwaHkpO1xubmV0L21hYzgwMjExL2NmZy5jLTQ5MDYtXHRpbnQgcmV0O1xuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYz00OTE5PXN0YXRpYyBpbnQgaWVlZTgwMjExX2dldF9hbnRlbm5hKHN0cnVjdCB3aXBoeSAqd2lwaHksIGludCByYWRpb19pZHgsXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTQ5MjEte1xubmV0L21hYzgwMjExL2NmZy5jOjQ5MjI6XHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHdpcGh5X3ByaXYod2lwaHkpO1xubmV0L21hYzgwMjExL2NmZy5jLTQ5MjMtXG4tLVxubmV0L21hYzgwMjExL2NmZy5jPTQ5Mjc9c3RhdGljIGludCBpZWVlODAyMTFfc2V0X3Jla2V5X2RhdGEoc3RydWN0IHdpcGh5ICp3aXBoeSxcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtNDkzMC17XG5uZXQvbWFjODAyMTEvY2ZnLmM6NDkzMTpcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gd2lwaHlfcHJpdih3aXBoeSk7XG5uZXQvbWFjODAyMTEvY2ZnLmMtNDkzMi1cdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gSUVFRTgwMjExX0RFVl9UT19TVUJfSUYoZGV2KTtcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmM9NDk0Mj1zdGF0aWMgaW50IGllZWU4MDIxMV9wcm9iZV9wZWVyKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTQ5NDUtXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IElFRUU4MDIxMV9ERVZfVE9fU1VCX0lGKGRldik7XG5uZXQvbWFjODAyMTEvY2ZnLmM6NDk0NjpcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gc2RhdGEtXHUwMDNlbG9jYWw7XG5uZXQvbWFjODAyMTEvY2ZnLmMtNDk0Ny1cdHN0cnVjdCBpZWVlODAyMTFfcW9zX2hkciAqbnVsbGZ1bmM7XG4tLVxubmV0L21hYzgwMjExL2NmZy5jPTUwNjU9c3RhdGljIGludCBpZWVlODAyMTFfY2ZnX2dldF9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTUwNzAtXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IElFRUU4MDIxMV9XREVWX1RPX1NVQl9JRih3ZGV2KTtcbm5ldC9tYWM4MDIxMS9jZmcuYzo1MDcxOlx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSB3aXBoeV9wcml2KHdpcGh5KTtcbm5ldC9tYWM4MDIxMS9jZmcuYy01MDcyLVx0c3RydWN0IGllZWU4MDIxMV9jaGFuY3R4X2NvbmYgKmNoYW5jdHhfY29uZjtcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmM9NTE4MD1zdGF0aWMgaW50IGllZWU4MDIxMV9kZWxfdHhfdHMoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtNTE4NC1cdHN0cnVjdCBpZWVlODAyMTFfaWZfbWFuYWdlZCAqaWZtZ2QgPSBcdTAwMjZzZGF0YS1cdTAwM2V1Lm1nZDtcbm5ldC9tYWM4MDIxMS9jZmcuYzo1MTg1Olx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSB3aXBoeV9wcml2KHdpcGh5KTtcbm5ldC9tYWM4MDIxMS9jZmcuYy01MTg2LVx0aW50IGFjO1xuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYz01MzY4PXN0YXRpYyBpbnQgaWVlZTgwMjExX2dldF90eHFfc3RhdHMoc3RydWN0IHdpcGh5ICp3aXBoeSxcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtNTM3MS17XG5uZXQvbWFjODAyMTEvY2ZnLmM6NTM3MjpcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gd2lwaHlfcHJpdih3aXBoeSk7XG5uZXQvbWFjODAyMTEvY2ZnLmMtNTM3My1cdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhO1xuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYz01NDA4PWllZWU4MDIxMV9nZXRfZnRtX3Jlc3BvbmRlcl9zdGF0cyhzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy01NDExLXtcbm5ldC9tYWM4MDIxMS9jZmcuYzo1NDEyOlx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSB3aXBoeV9wcml2KHdpcGh5KTtcbm5ldC9tYWM4MDIxMS9jZmcuYy01NDEzLVx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBJRUVFODAyMTFfREVWX1RPX1NVQl9JRihkZXYpO1xuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYz01NDE5PWllZWU4MDIxMV9zdGFydF9wbXNyKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKmRldixcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtNTQyMS17XG5uZXQvbWFjODAyMTEvY2ZnLmM6NTQyMjpcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gd2lwaHlfcHJpdih3aXBoeSk7XG5uZXQvbWFjODAyMTEvY2ZnLmMtNTQyMy1cdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gSUVFRTgwMjExX1dERVZfVE9fU1VCX0lGKGRldik7XG4tLVxubmV0L21hYzgwMjExL2NmZy5jPTU0Mjk9aWVlZTgwMjExX2Fib3J0X3Btc3Ioc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqZGV2LFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy01NDMxLXtcbm5ldC9tYWM4MDIxMS9jZmcuYzo1NDMyOlx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSB3aXBoeV9wcml2KHdpcGh5KTtcbm5ldC9tYWM4MDIxMS9jZmcuYy01NDMzLVx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBJRUVFODAyMTFfV0RFVl9UT19TVUJfSUYoZGV2KTtcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmM9NTQ4Mj1zdGF0aWMgaW50IGllZWU4MDIxMV9zZXRfc2FyX3NwZWNzKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTU0ODQte1xubmV0L21hYzgwMjExL2NmZy5jOjU0ODU6XHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHdpcGh5X3ByaXYod2lwaHkpO1xubmV0L21hYzgwMjExL2NmZy5jLTU0ODYtXG4tLVxubmV0L21hYzgwMjExL2NmZy5jPTU1OTU9c3RhdGljIGludCBpZWVlODAyMTFfY29sb3JfY2hhbmdlX2ZpbmFsaXplKHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rKVxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy01NTk3LVx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBsaW5rLVx1MDAzZXNkYXRhO1xubmV0L21hYzgwMjExL2NmZy5jOjU1OTg6XHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHNkYXRhLVx1MDAzZWxvY2FsO1xubmV0L21hYzgwMjExL2NmZy5jLTU1OTktXHR1NjQgY2hhbmdlZCA9IDA7XG4tLVxubmV0L21hYzgwMjExL2NmZy5jPTU2MjA9dm9pZCBpZWVlODAyMTFfY29sb3JfY2hhbmdlX2ZpbmFsaXplX3dvcmsoc3RydWN0IHdpcGh5ICp3aXBoeSxcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtNTYyNy1cdHN0cnVjdCBpZWVlODAyMTFfYnNzX2NvbmYgKmxpbmtfY29uZiA9IGxpbmstXHUwMDNlY29uZjtcbm5ldC9tYWM4MDIxMS9jZmcuYzo1NjI4Olx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cdTAwM2Vsb2NhbDtcbm5ldC9tYWM4MDIxMS9jZmcuYy01NjI5LVxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYz01NzE5PWllZWU4MDIxMV9jb2xvcl9jaGFuZ2Uoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtNTcyMi1cdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gSUVFRTgwMjExX0RFVl9UT19TVUJfSUYoZGV2KTtcbm5ldC9tYWM4MDIxMS9jZmcuYzo1NzIzOlx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cdTAwM2Vsb2NhbDtcbm5ldC9tYWM4MDIxMS9jZmcuYy01NzI0LVx0c3RydWN0IGllZWU4MDIxMV9ic3NfY29uZiAqbGlua19jb25mO1xuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYz01Nzc5PWllZWU4MDIxMV9zZXRfcmFkYXJfYmFja2dyb3VuZChzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy01NzgxLXtcbm5ldC9tYWM4MDIxMS9jZmcuYzo1NzgyOlx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSB3aXBoeV9wcml2KHdpcGh5KTtcbm5ldC9tYWM4MDIxMS9jZmcuYy01NzgzLVxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYz01ODE5PWllZWU4MDIxMV9hZGRfbGlua19zdGF0aW9uKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTU4MjItXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IElFRUU4MDIxMV9ERVZfVE9fU1VCX0lGKGRldik7XG5uZXQvbWFjODAyMTEvY2ZnLmM6NTgyMzpcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gd2lwaHlfcHJpdih3aXBoeSk7XG5uZXQvbWFjODAyMTEvY2ZnLmMtNTgyNC1cdHN0cnVjdCBzdGFfaW5mbyAqc3RhO1xuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYz01ODYxPWllZWU4MDIxMV9tb2RfbGlua19zdGF0aW9uKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTU4NjQtXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IElFRUU4MDIxMV9ERVZfVE9fU1VCX0lGKGRldik7XG5uZXQvbWFjODAyMTEvY2ZnLmM6NTg2NTpcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gd2lwaHlfcHJpdih3aXBoeSk7XG5uZXQvbWFjODAyMTEvY2ZnLmMtNTg2Ni1cdHN0cnVjdCBzdGFfaW5mbyAqc3RhO1xuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYz01OTA2PXN0YXRpYyBpbnQgaWVlZTgwMjExX3NldF9od190aW1lc3RhbXAoc3RydWN0IHdpcGh5ICp3aXBoeSxcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtNTkxMC1cdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gSUVFRTgwMjExX0RFVl9UT19TVUJfSUYoZGV2KTtcbm5ldC9tYWM4MDIxMS9jZmcuYzo1OTExOlx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cdTAwM2Vsb2NhbDtcbm5ldC9tYWM4MDIxMS9jZmcuYy01OTEyLVxuLS1cbm5ldC9tYWM4MDIxMS9jaGFuLmM9MTExPXN0YXRpYyB2b2lkXG5uZXQvbWFjODAyMTEvY2hhbi5jOjExMjppZWVlODAyMTFfY2hhbmN0eF91c2VyX2l0ZXJfbmV4dChzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbm5ldC9tYWM4MDIxMS9jaGFuLmMtMTEzLVx0XHRcdFx0IHN0cnVjdCBpZWVlODAyMTFfY2hhbmN0eCAqY3R4LFxuLS1cbm5ldC9tYWM4MDIxMS9jaGFuLmMtMTkwLVxubmV0L21hYzgwMjExL2NoYW4uYzoxOTE6aW50IGllZWU4MDIxMV9jaGFuY3R4X251bV9hc3NpZ25lZChzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbm5ldC9tYWM4MDIxMS9jaGFuLmMtMTkyLVx0XHRcdFx0ICAgc3RydWN0IGllZWU4MDIxMV9jaGFuY3R4ICpjdHgpXG4tLVxubmV0L21hYzgwMjExL2NoYW4uYy0yMDItXG5uZXQvbWFjODAyMTEvY2hhbi5jOjIwMzpzdGF0aWMgaW50IGllZWU4MDIxMV9jaGFuY3R4X251bV9yZXNlcnZlZChzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbm5ldC9tYWM4MDIxMS9jaGFuLmMtMjA0LVx0XHRcdFx0XHQgIHN0cnVjdCBpZWVlODAyMTFfY2hhbmN0eCAqY3R4KVxuLS1cbm5ldC9tYWM4MDIxMS9jaGFuLmMtMjE0LVxubmV0L21hYzgwMjExL2NoYW4uYzoyMTU6aW50IGllZWU4MDIxMV9jaGFuY3R4X3JlZmNvdW50KHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxubmV0L21hYzgwMjExL2NoYW4uYy0yMTYtXHRcdFx0ICAgICAgIHN0cnVjdCBpZWVlODAyMTFfY2hhbmN0eCAqY3R4KVxuLS1cbm5ldC9tYWM4MDIxMS9jaGFuLmMtMjMzLVxubmV0L21hYzgwMjExL2NoYW4uYzoyMzQ6c3RhdGljIGludCBpZWVlODAyMTFfbnVtX2NoYW5jdHgoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsIGludCByYWRpb19pZHgpXG5uZXQvbWFjODAyMTEvY2hhbi5jLTIzNS17XG4tLVxubmV0L21hYzgwMjExL2NoYW4uYy0yNDktXG5uZXQvbWFjODAyMTEvY2hhbi5jOjI1MDpzdGF0aWMgYm9vbCBpZWVlODAyMTFfY2FuX2NyZWF0ZV9uZXdfY2hhbmN0eChzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbm5ldC9tYWM4MDIxMS9jaGFuLmMtMjUxLVx0XHRcdFx0XHQgICAgIGludCByYWRpb19pZHgpXG4tLVxubmV0L21hYzgwMjExL2NoYW4uYz0yNjA9aWVlZTgwMjExX2xpbmtfZ2V0X2NoYW5jdHgoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmspXG5uZXQvbWFjODAyMTEvY2hhbi5jLTI2MS17XG5uZXQvbWFjODAyMTEvY2hhbi5jOjI2MjpcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsIF9fbWF5YmVfdW51c2VkID0gbGluay1cdTAwM2VzZGF0YS1cdTAwM2Vsb2NhbDtcbm5ldC9tYWM4MDIxMS9jaGFuLmMtMjYzLVx0c3RydWN0IGllZWU4MDIxMV9jaGFuY3R4X2NvbmYgKmNvbmY7XG4tLVxubmV0L21hYzgwMjExL2NoYW4uYz0zMzM9c3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfY2hhbl9yZXEgKlxubmV0L21hYzgwMjExL2NoYW4uYzozMzQ6X2llZWU4MDIxMV9jaGFuY3R4X2NvbXBhdGlibGUoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG5uZXQvbWFjODAyMTEvY2hhbi5jLTMzNS1cdFx0XHQgICAgICBzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqc2tpcF9saW5rLFxuLS1cbm5ldC9tYWM4MDIxMS9jaGFuLmM9MzU4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5fcmVxICpcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxNzo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzM3MgoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDQ1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqVHJhY2luZyB0aGUgSUVFRTgwMjExIExvY2FsIFN0cnVjdHVyZSBBbGxvY2F0aW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGluLiBJIG5lZWQgdG8gZmlndXJlIG91dCBwcmVjaXNlbHkgd2hlcmUgdGhlIGBzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsYCBpcyBiZWluZyBhbGxvY2F0ZWQgd2l0aGluIHRoZSB3aXJlbGVzcyBzdGFjay4gTXkgaW5pdGlhbCBodW5jaCBpcyB0aGF0IGl0JiMzOTtzIGxpa2VseSBoYW5kbGVkIGJ5IGVpdGhlciBgaWVlZTgwMjExX2FsbG9jX2h3YCBvciBwZXJoYXBzIGB3aXBoeV9uZXdfbm1gIOKAkyBvciBwb3RlbnRpYWxseSBzb21ldGhpbmcgZWxzZSBlbnRpcmVseSBpbiB0aGF0IGluc3RhbnRpYXRpb24gY2hhaW4sIHNvIEkgbmVlZCB0byBjaGVjayB0aG9zZSBhcmVhcy4gSSBuZWVkIHRvIHBpbnBvaW50IHRoZSBleGFjdCBmdW5jdGlvbiByZXNwb25zaWJsZS4gSXQmIzM5O3MgY3J1Y2lhbCB0byB1bmRlcnN0YW5kIHRoaXMgaW5pdGlhbCBhbGxvY2F0aW9uIHBvaW50IHRvIHRoZW4gdHJhY2sgbWVtb3J5IG1hbmFnZW1lbnQsIGluaXRpYWxpemF0aW9uLCBhbmQgdWx0aW1hdGVseSwgaG93IHRoaXMgY29yZSBzdHJ1Y3R1cmUgdGllcyBpbnRvIHRoZSB3aWRlciBmcmFtZXdvcmsuIEdvdHRhIGxvY2F0ZSBpdCBhbmQgY2hlY2sgd2hhdCBlbHNlIHRoZSBhbGxvY2F0aW5nIGZ1bmN0aW9uIG1pZ2h0IGJlIGRvaW5nIGF0IHRoZSB0aW1lIG9mIGluc3RhbnRpYXRpb24sIGFuZCBsb29rIGZvciBwb3RlbnRpYWwgaG9va3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDE3OjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2llZWU4MDIxMV9hbGxvY19odyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvbWFpbi5jPTc3NT1zdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV92aHRfY2FwIG1hYzgwMjExX3ZodF9jYXBhX21vZF9tYXNrID0ge1xuLS1cbm5ldC9tYWM4MDIxMS9tYWluLmMtNzkyLVxubmV0L21hYzgwMjExL21haW4uYzo3OTM6c3RydWN0IGllZWU4MDIxMV9odyAqaWVlZTgwMjExX2FsbG9jX2h3X25tKHNpemVfdCBwcml2X2RhdGFfbGVuLFxubmV0L21hYzgwMjExL21haW4uYy03OTQtXHRcdFx0XHRcdCAgIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfb3BzICpvcHMsXG4tLVxubmV0L21hYzgwMjExL21haW4uYy0xMDUwLX1cbm5ldC9tYWM4MDIxMS9tYWluLmM6MTA1MTpFWFBPUlRfU1lNQk9MKGllZWU4MDIxMV9hbGxvY19od19ubSk7XG5uZXQvbWFjODAyMTEvbWFpbi5jLTEwNTItXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDE3OjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3ODkwCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBgbWFjODAyMTFgIEluaXRpYWxpemF0aW9uKioKCk9rYXksIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiBob3cgdGhlIGBsb2NhbGAgc3RydWN0dXJlIGlzIGFsbG9jYXRlZCB3aXRoaW4gdGhlIGBtYWM4MDIxMWAgc3Vic3lzdGVtLiBJIHJlY2FsbCB0aGF0JiMzOTtzIHRoZSBjb3JlIHN0cnVjdHVyZSByZXByZXNlbnRpbmcgYSBwYXJ0aWN1bGFyIHdpcmVsZXNzIGRldmljZS4gSSYjMzk7bGwgbmVlZCB0byBnbyB0byBgbmV0L21hYzgwMjExL21haW4uY2AgYW5kIHRha2UgYSBsb29rIGFyb3VuZCBsaW5lIDc5MywgdGhlcmUgc2hvdWxkIGJlIHNvbWUgcmVsZXZhbnQgY29kZSBhcm91bmQgdGhlIGRyaXZlciBpbml0aWFsaXphdGlvbiBwcm9jZXNzLiBMZXQmIzM5O3Mgc2VlIGhvdyB0aGF0IGNydWNpYWwgYGxvY2FsYCB2YXJpYWJsZSBjb21lcyBpbnRvIGJlaW5nLi4uIEl0JiMzOTtzIGFsbCBhYm91dCB1bmRlcnN0YW5kaW5nIHJlc291cmNlIG1hbmFnZW1lbnQgYW5kIGhvdyB0aGUgZHJpdmVyIGdldHMgc2V0IHVwLCBzbyBJIGNhbiBzZWUgYW55IHBvdGVudGlhbCBjb25jdXJyZW5jeSBwcm9ibGVtcy4gSSYjMzk7bSBhZnRlciB0aGUgYWxsb2NhdGlvbiBpdHNlbGYsIHRoZSByZWxldmFudCBhcmd1bWVudHMsIGFuZCBhbnkgaW50ZXJhY3Rpb25zIHdpdGggdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUgc2V0dXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDE3OjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL21haW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDc5MywKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNzkzOlx0c3RydWN0IGllZWU4MDIxMV9odyAqaWVlZTgwMjExX2FsbG9jX2h3X25tKHNpemVfdCBwcml2X2RhdGFfbGVuLFxuIDc5NDpcdFx0XHRcdFx0XHQgICBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX29wcyAqb3BzLFxuIDc5NTpcdFx0XHRcdFx0XHQgICBjb25zdCBjaGFyICpyZXF1ZXN0ZWRfbmFtZSlcbiA3OTY6XHR7XG4gNzk3Olx0XHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbDtcbiA3OTg6XHRcdGludCBwcml2X3NpemUsIGk7XG4gNzk5Olx0XHRzdHJ1Y3Qgd2lwaHkgKndpcGh5O1xuIDgwMDpcdFx0Ym9vbCBlbXVsYXRlX2NoYW5jdHg7XG4gODAxOlx0XG4gODAyOlx0XHRpZiAoV0FSTl9PTighb3BzLVx1MDAzZXR4IHx8ICFvcHMtXHUwMDNlc3RhcnQgfHwgIW9wcy1cdTAwM2VzdG9wIHx8ICFvcHMtXHUwMDNlY29uZmlnIHx8XG4gODAzOlx0XHRcdCAgICAhb3BzLVx1MDAzZWFkZF9pbnRlcmZhY2UgfHwgIW9wcy1cdTAwM2VyZW1vdmVfaW50ZXJmYWNlIHx8XG4gODA0Olx0XHRcdCAgICAhb3BzLVx1MDAzZWNvbmZpZ3VyZV9maWx0ZXIgfHwgIW9wcy1cdTAwM2V3YWtlX3R4X3F1ZXVlKSlcbiA4MDU6XHRcdFx0cmV0dXJuIE5VTEw7XG4gODA2Olx0XG4gODA3Olx0XHRpZiAoV0FSTl9PTihvcHMtXHUwMDNlc3RhX3N0YXRlIFx1MDAyNlx1MDAyNiAob3BzLVx1MDAzZXN0YV9hZGQgfHwgb3BzLVx1MDAzZXN0YV9yZW1vdmUpKSlcbiA4MDg6XHRcdFx0cmV0dXJuIE5VTEw7XG4gODA5Olx0XG4gODEwOlx0XHRpZiAoV0FSTl9PTighIW9wcy1cdTAwM2VsaW5rX2luZm9fY2hhbmdlZCAhPSAhIW9wcy1cdTAwM2V2aWZfY2ZnX2NoYW5nZWQgfHxcbiA4MTE6XHRcdFx0ICAgIChvcHMtXHUwMDNlbGlua19pbmZvX2NoYW5nZWQgXHUwMDI2XHUwMDI2IG9wcy1cdTAwM2Vic3NfaW5mb19jaGFuZ2VkKSkpXG4gODEyOlx0XHRcdHJldHVybiBOVUxMO1xuIDgxMzpcdFxuIDgxNDpcdFx0LyogY2hlY2sgYWxsIG9yIG5vIGNoYW5uZWwgY29udGV4dCBvcGVyYXRpb25zIGV4aXN0ICovXG4gODE1Olx0XHRpZiAob3BzLVx1MDAzZWFkZF9jaGFuY3R4ID09IGllZWU4MDIxMV9lbXVsYXRlX2FkZF9jaGFuY3R4IFx1MDAyNlx1MDAyNlxuIDgxNjpcdFx0ICAgIG9wcy1cdTAwM2VyZW1vdmVfY2hhbmN0eCA9PSBpZWVlODAyMTFfZW11bGF0ZV9yZW1vdmVfY2hhbmN0eCBcdTAwMjZcdTAwMjZcbiA4MTc6XHRcdCAgICBvcHMtXHUwMDNlY2hhbmdlX2NoYW5jdHggPT0gaWVlZTgwMjExX2VtdWxhdGVfY2hhbmdlX2NoYW5jdHgpIHtcbiA4MTg6XHRcdFx0aWYgKFdBUk5fT04ob3BzLVx1MDAzZWFzc2lnbl92aWZfY2hhbmN0eCB8fFxuIDgxOTpcdFx0XHRcdCAgICBvcHMtXHUwMDNldW5hc3NpZ25fdmlmX2NoYW5jdHgpKVxuIDgyMDpcdFx0XHRcdHJldHVybiBOVUxMO1xuIDgyMTpcdFx0XHRlbXVsYXRlX2NoYW5jdHggPSB0cnVlO1xuIDgyMjpcdFx0fSBlbHNlIHtcbiA4MjM6XHRcdFx0aWYgKFdBUk5fT04ob3BzLVx1MDAzZWFkZF9jaGFuY3R4ID09IGllZWU4MDIxMV9lbXVsYXRlX2FkZF9jaGFuY3R4IHx8XG4gODI0Olx0XHRcdFx0ICAgIG9wcy1cdTAwM2VyZW1vdmVfY2hhbmN0eCA9PSBpZWVlODAyMTFfZW11bGF0ZV9yZW1vdmVfY2hhbmN0eCB8fFxuIDgyNTpcdFx0XHRcdCAgICBvcHMtXHUwMDNlY2hhbmdlX2NoYW5jdHggPT0gaWVlZTgwMjExX2VtdWxhdGVfY2hhbmdlX2NoYW5jdHgpKVxuIDgyNjpcdFx0XHRcdHJldHVybiBOVUxMO1xuIDgyNzpcdFx0XHRpZiAoV0FSTl9PTighb3BzLVx1MDAzZWFkZF9jaGFuY3R4IHx8XG4gODI4Olx0XHRcdFx0ICAgICFvcHMtXHUwMDNlcmVtb3ZlX2NoYW5jdHggfHxcbiA4Mjk6XHRcdFx0XHQgICAgIW9wcy1cdTAwM2VjaGFuZ2VfY2hhbmN0eCB8fFxuIDgzMDpcdFx0XHRcdCAgICAhb3BzLVx1MDAzZWFzc2lnbl92aWZfY2hhbmN0eCB8fFxuIDgzMTpcdFx0XHRcdCAgICAhb3BzLVx1MDAzZXVuYXNzaWduX3ZpZl9jaGFuY3R4KSlcbiA4MzI6XHRcdFx0XHRyZXR1cm4gTlVMTDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTc6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg5MjgKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIGNvZGUuCgoqKkFuYWx5emluZyBgaWVlZTgwMjExX2FsbG9jX2h3X25tYCoqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCBpbnRvIHRoZSB3ZWVkcyBvZiBgaWVlZTgwMjExX2FsbG9jX2h3X25tYC4gTGV0JiMzOTtzIGFzc3VtZSB0aGlzIGlzIHRoZSBoYXJkd2FyZSBhbGxvY2F0aW9uIGZ1bmN0aW9uIGZvciBhbiA4MDIuMTEgZGV2aWNlLCB3aXRoICYjMzQ7bm0mIzM0OyBwcm9iYWJseSByZWZlcnJpbmcgdG8gJiMzNDtuZXcgbW9kZWwmIzM0OyBvciBhIHNwZWNpZmljIGltcGxlbWVudGF0aW9uLiBJJiMzOTtsbCBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgZnVuY3Rpb24gaW50ZXJmYWNlcyB3aXRoIHRoZSBleGlzdGluZyA4MDIuMTEgc3RhY2suIEkmIzM5O20gbG9va2luZyBmb3IgbWVtb3J5IGFsbG9jYXRpb24gcGF0dGVybnMsIGluaXRpYWxpemF0aW9uIHN0ZXBzLCBhbmQgaG93IHRoZSBkcml2ZXIgZ2V0cyBpbnRlZ3JhdGVkLiBJIGV4cGVjdCB0byBzZWUgY2FsbHMgdG8gbG93ZXItbGV2ZWwgaGFyZHdhcmUgaW5pdGlhbGl6YXRpb24gcm91dGluZXMuIEFyZSB0aGV5IHVzaW5nIERNQT8gSG93IGFyZSB0aGUgaW50ZXJydXB0IGhhbmRsZXJzIHNldCB1cD8gQW55IHBvdGVudGlhbCBsb2NraW5nIG1lY2hhbmlzbXM/IERvZXMgdGhpcyB1c2UgYSBjdXN0b20gZGVzY3JpcHRvciBmb3JtYXQgb3IgYXJlIHRoZXkgZm9sbG93aW5nIGEgc3RhbmRhcmQgb25lPyBJIG5lZWQgdG8gYW5hbHl6ZSBob3cgdGhpcyBhbGxvY2F0ZXMgdGhlICpodyogc3RydWN0dXJlIGFuZCBpZiBpdCB1c2VzIGEgKmNmZyogc3RydWN0dXJlIHRvIGluaXRpYWxpemUgaXQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoaXMgd2lsbCBiZSBnZW5lcmljIHRvIHNldmVyYWwgaGFyZHdhcmUgcGxhdGZvcm1zLCBvciBpZiBpdCBpcyBwbGF0Zm9ybS1zcGVjaWZpYy4gQW55IG9mIHRoZXNlIHdvdWxkIGFmZmVjdCBwZXJmb3JtYW5jZSBhbmQgc3RhYmlsaXR5IGRvd24gdGhlIGxpbmUuIEkgYW0gcmVhbGx5IGludGVyZXN0ZWQgaW4gaG93IHRoZXkgaW5pdGlhbGl6ZSB0aGUgaGFyZHdhcmUgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTc6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvbWFpbi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogODMzLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA4MzM6XHRcdFx0ZW11bGF0ZV9jaGFuY3R4ID0gZmFsc2U7XG4gODM0Olx0XHR9XG4gODM1Olx0XG4gODM2Olx0XHQvKiBFbnN1cmUgMzItYnl0ZSBhbGlnbm1lbnQgb2Ygb3VyIHByaXZhdGUgZGF0YSBhbmQgaHcgcHJpdmF0ZSBkYXRhLlxuIDgzNzpcdFx0ICogV2UgdXNlIHRoZSB3aXBoeSBwcml2IGRhdGEgZm9yIGJvdGggb3VyIGllZWU4MDIxMV9sb2NhbCBhbmQgZm9yXG4gODM4Olx0XHQgKiB0aGUgZHJpdmVyJiMzOTtzIHByaXZhdGUgZGF0YVxuIDgzOTpcdFx0ICpcbiA4NDA6XHRcdCAqIEluIG1lbW9yeSBpdCYjMzk7bGwgYmUgbGlrZSB0aGlzOlxuIDg0MTpcdFx0ICpcbiA4NDI6XHRcdCAqICYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7XG4gODQzOlx0XHQgKiB8IHN0cnVjdCB3aXBoeVx0ICAgIHxcbiA4NDQ6XHRcdCAqICYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7XG4gODQ1Olx0XHQgKiB8IHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgIHxcbiA4NDY6XHRcdCAqICYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7XG4gODQ3Olx0XHQgKiB8IGRyaXZlciYjMzk7cyBwcml2YXRlIGRhdGEgICB8XG4gODQ4Olx0XHQgKiAmIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzO1xuIDg0OTpcdFx0ICpcbiA4NTA6XHRcdCAqL1xuIDg1MTpcdFx0cHJpdl9zaXplID0gQUxJR04oc2l6ZW9mKCpsb2NhbCksIE5FVERFVl9BTElHTikgJiM0MzsgcHJpdl9kYXRhX2xlbjtcbiA4NTI6XHRcbiA4NTM6XHRcdHdpcGh5ID0gd2lwaHlfbmV3X25tKFx1MDAyNm1hYzgwMjExX2NvbmZpZ19vcHMsIHByaXZfc2l6ZSwgcmVxdWVzdGVkX25hbWUpO1xuIDg1NDpcdFxuIDg1NTpcdFx0aWYgKCF3aXBoeSlcbiA4NTY6XHRcdFx0cmV0dXJuIE5VTEw7XG4gODU3Olx0XG4gODU4Olx0XHR3aXBoeS1cdTAwM2VtZ210X3N0eXBlcyA9IGllZWU4MDIxMV9kZWZhdWx0X21nbXRfc3R5cGVzO1xuIDg1OTpcdFxuIDg2MDpcdFx0d2lwaHktXHUwMDNlcHJpdmlkID0gbWFjODAyMTFfd2lwaHlfcHJpdmlkO1xuIDg2MTpcdFxuIDg2MjpcdFx0d2lwaHktXHUwMDNlZmxhZ3MgfD0gV0lQSFlfRkxBR19ORVROU19PSyB8XG4gODYzOlx0XHRcdFx0V0lQSFlfRkxBR180QUREUl9BUCB8XG4gODY0Olx0XHRcdFx0V0lQSFlfRkxBR180QUREUl9TVEFUSU9OIHxcbiA4NjU6XHRcdFx0XHRXSVBIWV9GTEFHX1JFUE9SVFNfT0JTUyB8XG4gODY2Olx0XHRcdFx0V0lQSFlfRkxBR19PRkZDSEFOX1RYO1xuIDg2NzpcdFxuIDg2ODpcdFx0aWYgKGVtdWxhdGVfY2hhbmN0eCB8fCBvcHMtXHUwMDNlcmVtYWluX29uX2NoYW5uZWwpXG4gODY5Olx0XHRcdHdpcGh5LVx1MDAzZWZsYWdzIHw9IFdJUEhZX0ZMQUdfSEFTX1JFTUFJTl9PTl9DSEFOTkVMO1xuIDg3MDpcdFxuIDg3MTpcdFx0d2lwaHktXHUwMDNlYnNzX3BhcmFtX3N1cHBvcnQgPSBXSVBIWV9CU1NfUEFSQU1fQ1RTX1BST1QgfFxuIDg3MjpcdFx0XHRcdFx0ICAgV0lQSFlfQlNTX1BBUkFNX1NIT1JUX1BSRUFNQkxFIHxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTc6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk4OTEKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSYjMzk7bSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczoKCioqRGl2aW5nIGludG8gd2lwaHlfbmV3X25tIGFuZCBNZW1vcnkgQWxsb2NhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYHdpcGh5X25ld19ubWAuIFJpZ2h0IGF3YXksIG15IHJhZGFyIGdvZXMgdXAgYmVjYXVzZSBJIHNlZSBga3phbGxvY2AgaXMgYmVpbmcgdXNlZC4gVGhhdCYjMzk7cyBhIGtleSBmdW5jdGlvbiBmb3IgYWxsb2NhdGluZyBtZW1vcnksIHNwZWNpZmljYWxseSBmb3IgaW5pdGlhbGl6aW5nIGl0IHRvIHplcm8uIEluIHRoaXMgY2FzZSwgaXQmIzM5O3MgZ3JhYmJpbmcgc3BhY2UgZm9yIGJvdGggdGhlIGB3aXBoeWAgc3RydWN0dXJlIGl0c2VsZiAqYW5kKiB0aGUgcHJpdmF0ZSBkYXRhIGFzc29jaWF0ZWQgd2l0aCBpdC4gVGhpcyBpcyBwcmV0dHkgc3RhbmRhcmQgcHJhY3RpY2UsIGJ1dCBpdCYjMzk7cyAqY3JpdGljYWwqIHRvIHZlcmlmeSB0aGlzIGFsbG9jYXRpb24gbWV0aG9kIHRob3JvdWdobHkuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBpcyBiZWluZyBoYW5kbGVkIGNvcnJlY3RseSwgcGFydGljdWxhcmx5IGluIHRoaXMgY29udGV4dC4gVGhlIHNpemUgY2FsY3VsYXRpb24sIGFueSBwb3RlbnRpYWwgb2ZmLWJ5LW9uZSBlcnJvcnMsIGFuZCBhbGlnbm1lbnQgaXNzdWVzIGFyZSBnb2luZyB0byBiZSBteSBwcmltYXJ5IGNvbmNlcm5zLiBJIHdpbGwgYWxzbyBiZSBvbiB0aGUgbG9va291dCBmb3IgcG90ZW50aWFsIG1lbW9yeSBsZWFrcywgcGFydGljdWxhcmx5IGlmIHNvbWV0aGluZyBoYXBwZW5zIHRvIGRlLWFsbG9jYXRlIG9uZSBwYXJ0IGFuZCBub3QgdGhlIG90aGVyLCBsZWFkaW5nIHRvIGEgaGFsZi1mcmVlZCBjaHVuayBvZiBtZW1vcnkuIExldCYjMzk7cyBkZWx2ZSBpbiBhbmQgbWFrZSBzdXJlIHRoaXMgaXMgZG9uZSBzb3VuZGx5IGFuZCBzYWZlbHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDE3OjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3dpcGh5X25ld19ubSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3MvY29yZS5jPTUxOD1zdGF0aWMgdm9pZCBjZmc4MDIxMV93aXBoeV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5uZXQvd2lyZWxlc3MvY29yZS5jLTU0OC1cbm5ldC93aXJlbGVzcy9jb3JlLmM6NTQ5OnN0cnVjdCB3aXBoeSAqd2lwaHlfbmV3X25tKGNvbnN0IHN0cnVjdCBjZmc4MDIxMV9vcHMgKm9wcywgaW50IHNpemVvZl9wcml2LFxubmV0L3dpcmVsZXNzL2NvcmUuYy01NTAtXHRcdFx0ICAgY29uc3QgY2hhciAqcmVxdWVzdGVkX25hbWUpXG4tLVxubmV0L3dpcmVsZXNzL2NvcmUuYy03MDItfVxubmV0L3dpcmVsZXNzL2NvcmUuYzo3MDM6RVhQT1JUX1NZTUJPTCh3aXBoeV9uZXdfbm0pO1xubmV0L3dpcmVsZXNzL2NvcmUuYy03MDQtXG4tLVxubmV0L3dpcmVsZXNzL3Rlc3RzL3V0aWwuYz0xMz1pbnQgdF93aXBoeV9pbml0KHN0cnVjdCBrdW5pdF9yZXNvdXJjZSAqcmVzb3VyY2UsIHZvaWQgKmN0eClcbi0tXG5uZXQvd2lyZWxlc3MvdGVzdHMvdXRpbC5jLTIyLVxubmV0L3dpcmVsZXNzL3Rlc3RzL3V0aWwuYzoyMzpcdHdpcGh5ID0gd2lwaHlfbmV3X25tKG9wcywgc2l6ZW9mKCpwcml2KSwgXCYjMzQ7a3VuaXRcJiMzNDspO1xubmV0L3dpcmVsZXNzL3Rlc3RzL3V0aWwuYy0yNC1cdEtVTklUX0FTU0VSVF9OT1RfTlVMTCh0ZXN0LCB3aXBoeSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDE3OjQ0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNDc0CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipEaXZpbmcgaW50byBgd2lwaHlfbmV3X25tYCoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgYSBuZXcgV2ktRmkgUEhZIGlzIGJlaW5nIGhhbmRsZWQgaW50ZXJuYWxseS4gTGV0JiMzOTtzIHN0YXJ0IGJ5IGxvb2tpbmcgYXQgYHdpcGh5X25ld19ubWAgaW4gYG5ldC93aXJlbGVzcy9jb3JlLmNgLiBUaGF0IGZ1bmN0aW9uIG5hbWUgc3VnZ2VzdHMgaXQmIzM5O3MgdGhlIHJpZ2h0IHBsYWNlIHRvIGJlZ2lu4oCUbGlrZWx5IHdoZXJlIHRoZSBuZXcgYHdpcGh5YCBzdHJ1Y3R1cmUgaXMgYWxsb2NhdGVkIGFuZCBpbml0aWFsaXplZCwgc3BlY2lmaWNhbGx5IHdoZW4gYSBuZXcgTmV0bGluayBtZXNzYWdlIGlzIHJlY2VpdmVkLCBnaXZlbiB0aGUgc3VmZml4IGBfbm1gIChOZXRsaW5rKS4gSSYjMzk7bGwgd2FudCB0byBjYXJlZnVsbHkgZXhhbWluZSB0aGUgYXJndW1lbnRzIHBhc3NlZCB0byB0aGlzIGZ1bmN0aW9uLCB0aGUgaW50ZXJuYWwgZGF0YSBzdHJ1Y3R1cmVzIGl0IG1hbmlwdWxhdGVzLCBhbmQgdGhlIG92ZXJhbGwgYWxsb2NhdGlvbiBhbmQgaW5pdGlhbGl6YXRpb24gcHJvY2Vzcy4gSSBzdXNwZWN0IEkmIzM5O2xsIHNlZSBzb21lIGNhbGxzIHRvIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBmdW5jdGlvbnMgc2V0dGluZyB1cCB0aGUgYmFzaWMgcHJvcGVydGllcyBvZiB0aGUgYHdpcGh5YCBvYmplY3QuIEnigJltIGV4cGVjdGluZyBhIGhpZ2gtbGV2ZWwgZnVuY3Rpb24uIEl04oCZbGwgcHJvYmFibHkgaGFuZGxlIHRoZSBhbGxvY2F0aW9uLCBpbml0aWFsIHNldHVwLCBhbmQgcG90ZW50aWFsbHkgcmVnaXN0cmF0aW9uIHdpdGggdGhlIGtlcm5lbCYjMzk7cyB3aXJlbGVzcyBzdWJzeXN0ZW0uIExldCYjMzk7cyBzZWUgd2hhdCBpdCBoYXMgdG8gdGVsbCBtZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTc6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3MvY29yZS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNTQ5LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA1NDk6XHRzdHJ1Y3Qgd2lwaHkgKndpcGh5X25ld19ubShjb25zdCBzdHJ1Y3QgY2ZnODAyMTFfb3BzICpvcHMsIGludCBzaXplb2ZfcHJpdixcbiA1NTA6XHRcdFx0XHQgICBjb25zdCBjaGFyICpyZXF1ZXN0ZWRfbmFtZSlcbiA1NTE6XHR7XG4gNTUyOlx0XHRzdGF0aWMgYXRvbWljX3Qgd2lwaHlfY291bnRlciA9IEFUT01JQ19JTklUKDApO1xuIDU1MzpcdFxuIDU1NDpcdFx0c3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2O1xuIDU1NTpcdFx0aW50IGFsbG9jX3NpemU7XG4gNTU2Olx0XG4gNTU3Olx0XHRXQVJOX09OKG9wcy1cdTAwM2VhZGRfa2V5IFx1MDAyNlx1MDAyNiAoIW9wcy1cdTAwM2VkZWxfa2V5IHx8ICFvcHMtXHUwMDNlc2V0X2RlZmF1bHRfa2V5KSk7XG4gNTU4Olx0XHRXQVJOX09OKG9wcy1cdTAwM2VhdXRoIFx1MDAyNlx1MDAyNiAoIW9wcy1cdTAwM2Vhc3NvYyB8fCAhb3BzLVx1MDAzZWRlYXV0aCB8fCAhb3BzLVx1MDAzZWRpc2Fzc29jKSk7XG4gNTU5Olx0XHRXQVJOX09OKG9wcy1cdTAwM2Vjb25uZWN0IFx1MDAyNlx1MDAyNiAhb3BzLVx1MDAzZWRpc2Nvbm5lY3QpO1xuIDU2MDpcdFx0V0FSTl9PTihvcHMtXHUwMDNlam9pbl9pYnNzIFx1MDAyNlx1MDAyNiAhb3BzLVx1MDAzZWxlYXZlX2lic3MpO1xuIDU2MTpcdFx0V0FSTl9PTihvcHMtXHUwMDNlYWRkX3ZpcnR1YWxfaW50ZiBcdTAwMjZcdTAwMjYgIW9wcy1cdTAwM2VkZWxfdmlydHVhbF9pbnRmKTtcbiA1NjI6XHRcdFdBUk5fT04ob3BzLVx1MDAzZWFkZF9zdGF0aW9uIFx1MDAyNlx1MDAyNiAhb3BzLVx1MDAzZWRlbF9zdGF0aW9uKTtcbiA1NjM6XHRcdFdBUk5fT04ob3BzLVx1MDAzZWFkZF9tcGF0aCBcdTAwMjZcdTAwMjYgIW9wcy1cdTAwM2VkZWxfbXBhdGgpO1xuIDU2NDpcdFx0V0FSTl9PTihvcHMtXHUwMDNlam9pbl9tZXNoIFx1MDAyNlx1MDAyNiAhb3BzLVx1MDAzZWxlYXZlX21lc2gpO1xuIDU2NTpcdFx0V0FSTl9PTihvcHMtXHUwMDNlc3RhcnRfcDJwX2RldmljZSBcdTAwMjZcdTAwMjYgIW9wcy1cdTAwM2VzdG9wX3AycF9kZXZpY2UpO1xuIDU2NjpcdFx0V0FSTl9PTihvcHMtXHUwMDNlc3RhcnRfYXAgXHUwMDI2XHUwMDI2ICFvcHMtXHUwMDNlc3RvcF9hcCk7XG4gNTY3Olx0XHRXQVJOX09OKG9wcy1cdTAwM2Vqb2luX29jYiBcdTAwMjZcdTAwMjYgIW9wcy1cdTAwM2VsZWF2ZV9vY2IpO1xuIDU2ODpcdFx0V0FSTl9PTihvcHMtXHUwMDNlc3VzcGVuZCBcdTAwMjZcdTAwMjYgIW9wcy1cdTAwM2VyZXN1bWUpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxNzo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTIxMwoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipEaXZpbmcgaW50byBgd2lwaHlfbmV3X25tYCBBbGxvY2F0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gZm9jdXNpbmcgb24gdGhlIGFsbG9jYXRpb24gc2lkZSBvZiB0aGluZ3MgaW4gYHdpcGh5X25ld19ubWAgcmlnaHQgbm93LiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIHNwZWNpZmljIG1lbW9yeSBhbGxvY2F0aW9uIHN0cmF0ZWdpZXMgZW1wbG95ZWQgd2l0aGluIHRoaXMgZnVuY3Rpb24uIEl0JiMzOTtzIGNydWNpYWwsIG9idmlvdXNseSwgYmVjYXVzZSBhbnkgcGVyZm9ybWFuY2UgYm90dGxlbmVja3Mgb3IgcG90ZW50aWFsIG1lbW9yeSBsZWFrcyBvZnRlbiByZWFyIHRoZWlyIGhlYWRzIGVhcmx5IG9uIGluIHRoZSBwcm9jZXNzIG9mIGNyZWF0aW5nIGEgbmV3IFdpLUZpIFBIWSBvYmplY3QuIEkgbmVlZCB0byB0cmFjZSB0aHJvdWdoIHRoZSBjb2RlLCBtYXliZSBJJiMzOTtsbCBnbyB0aHJvdWdoIHRoZSBjYWxsIHN0YWNrIHRvIHNlZSB3aGVyZSB0aGlzIG9iamVjdCBpcyBjYWxsZWQuIExldCYjMzk7cyBzZWUgaG93IG11Y2ggbWVtb3J5IHdlJiMzOTtyZSB0YWxraW5nIGFib3V0LCB3aGF0JiMzOTtzIGFsbG9jYXRlZCBvbiB0aGUgaGVhcCB2ZXJzdXMgb24gdGhlIHN0YWNrLCBhbmQgaWYgdGhlcmUgYXJlIGFueSBzdWJ0bGUgaW5lZmZpY2llbmNpZXMgaGFwcGVuaW5nLiBJIHdhbnQgdG8gY2hlY2sgZm9yIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDE3OjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L3dpcmVsZXNzL2NvcmUuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDU2OSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNTY5Olx0XHRXQVJOX09OKG9wcy1cdTAwM2VzY2hlZF9zY2FuX3N0YXJ0IFx1MDAyNlx1MDAyNiAhb3BzLVx1MDAzZXNjaGVkX3NjYW5fc3RvcCk7XG4gNTcwOlx0XHRXQVJOX09OKG9wcy1cdTAwM2VyZW1haW5fb25fY2hhbm5lbCBcdTAwMjZcdTAwMjYgIW9wcy1cdTAwM2VjYW5jZWxfcmVtYWluX29uX2NoYW5uZWwpO1xuIDU3MTpcdFx0V0FSTl9PTihvcHMtXHUwMDNldGRsc19jaGFubmVsX3N3aXRjaCBcdTAwMjZcdTAwMjYgIW9wcy1cdTAwM2V0ZGxzX2NhbmNlbF9jaGFubmVsX3N3aXRjaCk7XG4gNTcyOlx0XHRXQVJOX09OKG9wcy1cdTAwM2VhZGRfdHhfdHMgXHUwMDI2XHUwMDI2ICFvcHMtXHUwMDNlZGVsX3R4X3RzKTtcbiA1NzM6XHRcbiA1NzQ6XHRcdGFsbG9jX3NpemUgPSBzaXplb2YoKnJkZXYpICYjNDM7IHNpemVvZl9wcml2O1xuIDU3NTpcdFxuIDU3NjpcdFx0cmRldiA9IGt6YWxsb2MoYWxsb2Nfc2l6ZSwgR0ZQX0tFUk5FTCk7XG4gNTc3Olx0XHRpZiAoIXJkZXYpXG4gNTc4Olx0XHRcdHJldHVybiBOVUxMO1xuIDU3OTpcdFxuIDU4MDpcdFx0cmRldi1cdTAwM2VvcHMgPSBvcHM7XG4gNTgxOlx0XG4gNTgyOlx0XHRyZGV2LVx1MDAzZXdpcGh5X2lkeCA9IGF0b21pY19pbmNfcmV0dXJuKFx1MDAyNndpcGh5X2NvdW50ZXIpO1xuIDU4MzpcdFxuIDU4NDpcdFx0aWYgKHVubGlrZWx5KHJkZXYtXHUwMDNld2lwaHlfaWR4IFx1MDAzYyAwKSkge1xuIDU4NTpcdFx0XHQvKiB1Z2gsIHdyYXBwZWQhICovXG4gNTg2Olx0XHRcdGF0b21pY19kZWMoXHUwMDI2d2lwaHlfY291bnRlcik7XG4gNTg3Olx0XHRcdGtmcmVlKHJkZXYpO1xuIDU4ODpcdFx0XHRyZXR1cm4gTlVMTDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTc6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE3OTQKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiA4NDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBtYWM4MDIxMSBUWCBRdWV1ZSBTY2hlZHVsaW5nIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbWFjODAyMTFgLiBUaGUgYGxvY2FsYCBzdHJ1Y3QsIHdoaWNoIGlzIGFsbG9jYXRlZCB3aXRoIGBremFsbG9jYCwgbWVhbnMgYm90aCBgc2NoZWR1bGVfb3BlbmAgYW5kIGBzY2hlZHVsZV9yb3VuZGAgYXJlIGluaXRpYWxseSB6ZXJvZWQuIFRoYXQmIzM5O3MgdGhlIGJhc2VsaW5lLiBOb3cgbGV0JiMzOTtzIGRpZyBpbnRvIHRoZSBjb2RlIGl0c2VsZi4KClRoZSBmaXJzdCBjaGFuZ2UgaXMgdGhlIGFkZGl0aW9uIG9mIGEgYGJvb2wgc2NoZWR1bGVfb3BlbltJRUVFODAyMTFfTlVNX0FDU11gIGFycmF5IHRvIHRoZSBgaWVlZTgwMjExX2xvY2FsYCBzdHJ1Y3QgaW4gYGllZWU4MDIxMV9pLmhgLiBUaGlzIGFycmF5IGhhcyB0aGUgc2FtZSBzaXplIGFzIGBzY2hlZHVsZV9yb3VuZGAsIHdoaWNoIG1ha2VzIG1lIHRoaW5rIHRoZXkmIzM5O3JlIHNvbWVob3cgcmVsYXRlZCBhbmQgYm90aCBwZXItQUMuIFRoaXMgaXMgd2hlcmUgaXQgZ2V0cyBpbnRlcmVzdGluZywgd2l0aCB0aGUgY2hhbmdlcyBpbiBgbmV0L21hYzgwMjExL3R4LmNgLgoKSW4gYGllZWU4MDIxMV9uZXh0X3R4cWAsIHRoZSBvcmlnaW5hbCBjaGVjayB3YXMgYCFsb2NhbC0mZ3Q7c2NoZWR1bGVfcm91bmRbYWNdYC4gTm93IHRoYXQmIzM5O3MgYmVlbiByZXBsYWNlZCB3aXRoIGAhbG9jYWwtJmd0O3NjaGVkdWxlX29wZW5bYWNdYC4gSXQgbG9va3MgbGlrZSB0aGUgaW50ZW50IGlzIHRvIG5vdyB1c2UgYHNjaGVkdWxlX29wZW5gIHRvIGRldGVybWluZSBpZiB3ZSBzaG91bGQgbG9vayBmb3IgYSBUWFEuCgpUaGUgYGllZWU4MDIxMV90eHFfc2NoZWR1bGVfc3RhcnRgIGZ1bmN0aW9uIGhhcyBtb3JlIHNpZ25pZmljYW50IGNoYW5nZXMuIFRoZSBvcmlnaW5hbCBjb2RlIHVuY29uZGl0aW9uYWxseSByZXNldHMgYGxvY2FsLSZndDtzY2hlZHVsZV9yb3VuZFthY11gIHRvIHplcm8gaWYgdGhlIGFpcnRpbWUgY2hlY2sgZmFpbHMuIFRoZSBwYXRjaCBjaGFuZ2VzIHRoaXMgdG8gdXNlIHRoZSByZXR1cm4gdmFsdWUgb2YgYGllZWU4MDIxMV90eHFfc2NoZWR1bGVfYWlydGltZV9jaGVja2AgdG8gc2V0IGBsb2NhbC0mZ3Q7c2NoZWR1bGVfb3BlblthY11gLiBJdCB0aGVuIHVwZGF0ZXMgYHNjaGVkdWxlX3JvdW5kYCBvbmx5IGlmIGBzY2hlZHVsZV9vcGVuYCBpcyB0cnVlLiBDcml0aWNhbGx5LCB0aGUgcGF0Y2ggYWxzbyBub3cgdW5jb25kaXRpb25hbGx5IHNldHMgYHNjaGVkdWxlX29wZW5gLiBJbiBhZGRpdGlvbiwgaXQgaW5jcmVtZW50cyBgc2NoZWR1bGVfcm91bmRgIGlmIGl0IGlzIHNldC4gVGhlIGFkZGVkIGNvZGUgYWxzbyBoYW5kbGVzIHRoZSBjYXNlIHdoZW4gYHNjaGVkdWxlX3JvdW5kYCB3cmFwcywgd2hpY2ggaW5kaWNhdGVzIGEgY291bnRlciB0aGF0IGlzIHN1cHBvc2VkIHRvIGJlIG1vbm90b25pY2FsbHkgaW5jcmVhc2luZy4KClNvLCBJIHRoaW5rIEkgc2VlIHdoYXQmIzM5O3MgaGFwcGVuaW5nLiBUaGUgaW50cm9kdWN0aW9uIG9mIGBzY2hlZHVsZV9vcGVuYCBpcyBwcm9iYWJseSB0byBvcHRpbWl6ZSB0aGUgVFhRIHNjaGVkdWxpbmcuIFRoZSBgYWlydGltZV9jaGVja2AgZnVuY3Rpb24gcHJvYmFibHkgZGV0ZXJtaW5lcyBpZiB0aGUgQUMgaGFzIGF2YWlsYWJsZSBhaXJ0aW1lIHRvIHRyYW5zbWl0LiBSYXRoZXIgdGhhbiByZXNldHRpbmcgYHNjaGVkdWxlX3JvdW5kYCBkaXJlY3RseSAoYW5kIHByZXZlbnRpbmcgYW55IFRYUSBjb25zaWRlcmF0aW9uKSwgYHNjaGVkdWxlX29wZW5gIGlzIG5vdyB1c2VkIGFzIGEgZ2F0ZS4gTm93IHdlIGNvbmRpdGlvbmFsbHkgaW5jcmVtZW50IGBzY2hlZHVsZV9yb3VuZGAgb25seSB3aGVuIHRoZSBhaXJ0aW1lIGNoZWNrIHBhc3NlcywgYW5kIGJ5IGV4dGVuc2lvbiwgd2Ugb25seSBnbyBpbnRvIHRoZSBsb2dpYyBpbiBgaWVlZTgwMjExX25leHRfdHhxYCB0aGF0IHVzZXMgYHNjaGVkdWxlX3JvdW5kYCBpZiBgc2NoZWR1bGVfb3BlbmAgaXMgdHJ1ZS4KClRoaXMgbWFrZXMgc2Vuc2UuIEJ5IHVzaW5nIGEgc2VwYXJhdGUgZmxhZywgd2UgY2FuIG1ha2UgdGhlIHNjaGVkdWxpbmcgbG9naWMgbW9yZSBudWFuY2VkIGFuZCBwb3NzaWJseSBtb3JlIGVmZmljaWVudCBieSBleHBsaWNpdGx5IGVuYWJsaW5nIG9yIGRpc2FibGluZyBUWFEgY29uc2lkZXJhdGlvbi4gSXQmIzM5O3MgYSBuaWNlLCBjbGVhbiB3YXkgdG8gaW50cm9kdWNlIGEgc2NoZWR1bGluZyBvcHRpbWl6YXRpb24gYmFzZWQgb24gYWlydGltZSBhdmFpbGFiaWxpdHkuIFRoZSB3cmFwIGFyb3VuZCBjaGVjayBtYWtlcyBtZSB0aGluayB0aGF0IHRoZXNlIGFyZSBjb3VudGVycyB0aGF0IGFyZSB1c2VkIHRvIGRldGVybWluZSB3aGljaCBUWFEgd2Ugc2hvdWxkIGNvbnNpZGVyIG5leHQuIE5vdywgSSBzaG91bGQgcHJvYmFibHkgbG9vayBhdCB3aGF0IGBpZWVlODAyMTFfdHhxX3NjaGVkdWxlX2FpcnRpbWVfY2hlY2tgIGFjdHVhbGx5ICpkb2VzKi4gVGhhdCB3aWxsIGJlIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgZnVsbCBpbXBsaWNhdGlvbnMgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTc6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvdHguYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQxMTUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogODAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7NDExNTpcdHN0cnVjdCBpZWVlODAyMTFfdHhxICppZWVlODAyMTFfbmV4dF90eHEoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHU4IGFjKVxuNDExNjpcdHtcbjQxMTc6XHRcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gaHdfdG9fbG9jYWwoaHcpO1xuNDExODpcdFx0c3RydWN0IGllZWU4MDIxMV90eHEgKnJldCA9IE5VTEw7XG40MTE5Olx0XHRzdHJ1Y3QgdHhxX2luZm8gKnR4cWkgPSBOVUxMLCAqaGVhZCA9IE5VTEw7XG40MTIwOlx0XHRib29sIGZvdW5kX2VsaWdpYmxlX3R4cSA9IGZhbHNlO1xuNDEyMTpcdFx0Ym9vbCBhcWxfY2hlY2s7XG40MTIyOlx0XG40MTIzOlx0XHRzcGluX2xvY2tfYmgoXHUwMDI2bG9jYWwtXHUwMDNlYWN0aXZlX3R4cV9sb2NrW2FjXSk7XG40MTI0Olx0XG40MTI1Olx0XHRpZiAoIWxvY2FsLVx1MDAzZXNjaGVkdWxlX29wZW5bYWNdKVxuNDEyNjpcdFx0XHRnb3RvIG91dDtcbjQxMjc6XHRcbjQxMjg6XHQgYmVnaW46XG40MTI5Olx0XHR0eHFpID0gbGlzdF9maXJzdF9lbnRyeV9vcl9udWxsKFx1MDAyNmxvY2FsLVx1MDAzZWFjdGl2ZV90eHFzW2FjXSxcbjQxMzA6XHRcdFx0XHRcdFx0c3RydWN0IHR4cV9pbmZvLFxuNDEzMTpcdFx0XHRcdFx0XHRzY2hlZHVsZV9vcmRlcik7XG40MTMyOlx0XHRpZiAoIXR4cWkpXG40MTMzOlx0XHRcdGdvdG8gb3V0O1xuNDEzNDpcdFxuNDEzNTpcdFx0aWYgKHR4cWkgPT0gaGVhZCkge1xuNDEzNjpcdFx0XHRpZiAoIWZvdW5kX2VsaWdpYmxlX3R4cSlcbjQxMzc6XHRcdFx0XHRnb3RvIG91dDtcbjQxMzg6XHRcdFx0ZWxzZVxuNDEzOTpcdFx0XHRcdGZvdW5kX2VsaWdpYmxlX3R4cSA9IGZhbHNlO1xuNDE0MDpcdFx0fVxuNDE0MTpcdFxuNDE0MjpcdFx0aWYgKCFoZWFkKVxuNDE0MzpcdFx0XHRoZWFkID0gdHhxaTtcbjQxNDQ6XHRcbjQxNDU6XHRcdGFxbF9jaGVjayA9IGllZWU4MDIxMV90eHFfYWlydGltZV9jaGVjayhodywgXHUwMDI2dHhxaS1cdTAwM2V0eHEpO1xuNDE0NjpcdFx0aWYgKGFxbF9jaGVjaylcbjQxNDc6XHRcdFx0Zm91bmRfZWxpZ2libGVfdHhxID0gdHJ1ZTtcbjQxNDg6XHRcbjQxNDk6XHRcdGlmICh0eHFpLVx1MDAzZXR4cS5zdGEpIHtcbjQxNTA6XHRcdFx0c3RydWN0IHN0YV9pbmZvICpzdGEgPSBjb250YWluZXJfb2YodHhxaS1cdTAwM2V0eHEuc3RhLFxuNDE1MTpcdFx0XHRcdFx0XHRcdCAgICBzdHJ1Y3Qgc3RhX2luZm8sIHN0YSk7XG40MTUyOlx0XG40MTUzOlx0XHRcdGlmIChpZWVlODAyMTFfc3RhX2RlZmljaXQoc3RhLCB0eHFpLVx1MDAzZXR4cS5hYykgXHUwMDNjIDApIHtcbjQxNTQ6XHRcdFx0XHRzdGEtXHUwMDNlYWlydGltZVt0eHFpLVx1MDAzZXR4cS5hY10uZGVmaWNpdCAmIzQzOz1cbjQxNTU6XHRcdFx0XHRcdHN0YS1cdTAwM2VhaXJ0aW1lX3dlaWdodDtcbjQxNTY6XHRcbjQxNTc6XHRcdFx0XHRhcWxfY2hlY2sgPSBmYWxzZTtcbjQxNTg6XHRcdFx0fVxuNDE1OTpcdFx0fVxuNDE2MDpcdFxuNDE2MTpcdFx0aWYgKCFhcWxfY2hlY2spIHtcbjQxNjI6XHRcdFx0bGlzdF9tb3ZlX3RhaWwoXHUwMDI2dHhxaS1cdTAwM2VzY2hlZHVsZV9vcmRlcixcbjQxNjM6XHRcdFx0XHRcdCAgIFx1MDAyNmxvY2FsLVx1MDAzZWFjdGl2ZV90eHFzW3R4cWktXHUwMDNldHhxLmFjXSk7XG40MTY0Olx0XHRcdGdvdG8gYmVnaW47XG40MTY1Olx0XHR9XG40MTY2Olx0XG40MTY3Olx0XHRpZiAodHhxaS1cdTAwM2VzY2hlZHVsZV9yb3VuZCA9PSBsb2NhbC1cdTAwM2VzY2hlZHVsZV9yb3VuZFthY10pXG40MTY4Olx0XHRcdGdvdG8gb3V0O1xuNDE2OTpcdFxuNDE3MDpcdFx0bGlzdF9kZWxfaW5pdChcdTAwMjZ0eHFpLVx1MDAzZXNjaGVkdWxlX29yZGVyKTtcbjQxNzE6XHRcdHR4cWktXHUwMDNlc2NoZWR1bGVfcm91bmQgPSBsb2NhbC1cdTAwM2VzY2hlZHVsZV9yb3VuZFthY107XG40MTcyOlx0XHRyZXQgPSBcdTAwMjZ0eHFpLVx1MDAzZXR4cTtcbjQxNzM6XHRcbjQxNzQ6XHRvdXQ6XG40MTc1Olx0XHRzcGluX3VubG9ja19iaChcdTAwMjZsb2NhbC1cdTAwM2VhY3RpdmVfdHhxX2xvY2tbYWNdKTtcbjQxNzY6XHRcdHJldHVybiByZXQ7XG40MTc3Olx0fVxuNDE3ODpcdEVYUE9SVF9TWU1CT0woaWVlZTgwMjExX25leHRfdHhxKTtcbjQxNzk6XHRcbjQxODA6XHR2b2lkIF9faWVlZTgwMjExX3NjaGVkdWxlX3R4cShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbjQxODE6XHRcdFx0XHQgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqdHhxLFxuNDE4MjpcdFx0XHRcdCAgICAgIGJvb2wgZm9yY2UpXG40MTgzOlx0e1xuNDE4NDpcdFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBod190b19sb2NhbChodyk7XG40MTg1Olx0XHRzdHJ1Y3QgdHhxX2luZm8gKnR4cWkgPSB0b190eHFfaW5mbyh0eHEpO1xuNDE4NjpcdFx0Ym9vbCBoYXNfcXVldWU7XG40MTg3Olx0XG40MTg4Olx0XHRzcGluX2xvY2tfYmgoXHUwMDI2bG9jYWwtXHUwMDNlYWN0aXZlX3R4cV9sb2NrW3R4cS1cdTAwM2VhY10pO1xuNDE4OTpcdFxuNDE5MDpcdFx0aGFzX3F1ZXVlID0gZm9yY2UgfHxcbjQxOTE6XHRcdFx0ICAgICghdGVzdF9iaXQoSUVFRTgwMjExX1RYUV9TVE9QLCBcdTAwMjZ0eHFpLVx1MDAzZWZsYWdzKSBcdTAwMjZcdTAwMjZcbjQxOTI6XHRcdFx0ICAgICB0eHFfaGFzX3F1ZXVlKHR4cSkpO1xuNDE5MzpcdFx0aWYgKGxpc3RfZW1wdHkoXHUwMDI2dHhxaS1cdTAwM2VzY2hlZHVsZV9vcmRlcikgXHUwMDI2XHUwMDI2XG40MTk0Olx0XHQgICAgKGhhc19xdWV1ZSB8fCBpZWVlODAyMTFfdHhxX2tlZXBfYWN0aXZlKHR4cWkpKSkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQxLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxNzo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDYzMgoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIGxpbmUgb2YgdGhpbmtpbmcsIHByZXNlbnRlZCBhcyBpZiBpdCB3ZXJlIG15IG93bjoKCioqRGl2aW5nIERlZXAgaW50byB0aGUgTUFDODAyMTEgVFggUGF0aCoqCgpPa2F5LCBzbyB3ZSYjMzk7cmUgbG9va2luZyBhdCB0aGUgYnJvYWRlciBpc3N1ZSwgYnV0IEkgbmVlZCB0byB6b29tIGluIG9uIGEgdmVyeSBzcGVjaWZpYyBhcmVhLiBUbyB0cnVseSB1bmRlcnN0YW5kIHRoaXMsIEkgbmVlZCB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkmIzM5O20gZ29pbmcgdG8gc2hpZnQgZ2VhcnMgYW5kIGdvIHN0cmFpZ2h0IGludG8gdGhlIGNvZGUuIFNwZWNpZmljYWxseSwgSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aG9zZSBjcml0aWNhbCB0cmFuc21pdCBvcGVyYXRpb25zLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBhIGZvY3VzZWQgaW52ZXN0aWdhdGlvbi4gSSBuZWVkIHRvIHRha2UgYSBsb29rIGF0IHRoZSBgbmV0L21hYzgwMjExL3R4LmNgIGZpbGU7IHRoYXQmIzM5O3Mgd2hlcmUgdGhlIGhlYXJ0IG9mIHRoZSB0cmFuc21pdCBwYXRoIHJlc2lkZXMuIEFuZCBub3QganVzdCB0aGUgd2hvbGUgZmlsZSwgSSYjMzk7bSB0aGlua2luZyBsaW5lcyA0MzQwLTQzNzAuIFRoYXQgc2VjdGlvbiBpcyB1c3VhbGx5IGEgcmVhbCBob3RzcG90IGZvciBbaW5zZXJ0IHJlbGV2YW50IHRlY2huaWNhbCBhcmVhIC0gZS5nLiwgcmF0ZSBjb250cm9sLCBmcmFtZSBhZ2dyZWdhdGlvbiwgaGFyZHdhcmUgcXVldWUgaW50ZXJhY3Rpb25dLiBUaGlzIHNwZWNpZmljIHJhbmdlIGxpa2VseSBob2xkcyB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgW3N0YXRlIHNwZWNpZmljIHJlbGV2YW50IGFyZWEgLSBlLmcuLCBob3cgdGhlIGRyaXZlciBoYW5kbGVzIGZyYW1lIGFja25vd2xlZGdlbWVudHMsIHRoZSBsb2dpYyBiZWhpbmQgdGhlIHJldHJhbnNtaXNzaW9uIHRpbWVycywgb3IgdGhlIG51YW5jZXMgb2YgcG93ZXIgc2F2ZSBtb2RlIHRyYW5zaXRpb25zXS4gSSBjYW4gc2VlIGl0IG5vdywgdGhlIGxpbmVzIHNob3VsZCBiZSB0YWxraW5nIGFib3V0Li4uIFthZGQgeW91ciB0ZWNobmljYWwgcHJlZGljdGlvbiBiYXNlZCBvbiB0aGUgY29udGV4dCAtIGUuZy4sIHRoZSBzcGVjaWZpYyBxdWV1ZSBhc3NpZ25tZW50IG9yIGFueSBmcmFtZSBwcm9jZXNzaW5nIG9jY3VycmluZ10uLi4gVGhhdCYjMzk7cyB3aGVyZSBJIHNob3VsZCBmb2N1cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Mi8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTc6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvdHguYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQzNDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7NDM0MDpcdFx0cmV0dXJuIHRydWU7XG40MzQxOlx0fVxuNDM0MjpcdEVYUE9SVF9TWU1CT0woaWVlZTgwMjExX3R4cV9tYXlfdHJhbnNtaXQpO1xuNDM0MzpcdFxuNDM0NDpcdHZvaWQgaWVlZTgwMjExX3R4cV9zY2hlZHVsZV9zdGFydChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgdTggYWMpXG40MzQ1Olx0e1xuNDM0NjpcdFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBod190b19sb2NhbChodyk7XG40MzQ3Olx0XG40MzQ4Olx0XHRzcGluX2xvY2tfYmgoXHUwMDI2bG9jYWwtXHUwMDNlYWN0aXZlX3R4cV9sb2NrW2FjXSk7XG40MzQ5Olx0XG40MzUwOlx0XHRsb2NhbC1cdTAwM2VzY2hlZHVsZV9vcGVuW2FjXSA9XG40MzUxOlx0XHRcdGllZWU4MDIxMV90eHFfc2NoZWR1bGVfYWlydGltZV9jaGVjayhsb2NhbCwgYWMpO1xuNDM1MjpcdFx0aWYgKGxvY2FsLVx1MDAzZXNjaGVkdWxlX29wZW5bYWNdKSB7XG40MzUzOlx0XHRcdGxvY2FsLVx1MDAzZXNjaGVkdWxlX3JvdW5kW2FjXSYjNDM7JiM0Mzs7XG40MzU0Olx0XHRcdGlmICghbG9jYWwtXHUwMDNlc2NoZWR1bGVfcm91bmRbYWNdKVxuNDM1NTpcdFx0XHRcdGxvY2FsLVx1MDAzZXNjaGVkdWxlX3JvdW5kW2FjXSYjNDM7JiM0Mzs7XG40MzU2Olx0XHR9XG40MzU3Olx0XG40MzU4Olx0XHRzcGluX3VubG9ja19iaChcdTAwMjZsb2NhbC1cdTAwM2VhY3RpdmVfdHhxX2xvY2tbYWNdKTtcbjQzNTk6XHR9XG40MzYwOlx0RVhQT1JUX1NZTUJPTChpZWVlODAyMTFfdHhxX3NjaGVkdWxlX3N0YXJ0KTtcbjQzNjE6XHRcbjQzNjI6XHR2b2lkIF9faWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbjQzNjM6XHRcdFx0XHRcdCAgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbjQzNjQ6XHRcdFx0XHRcdCAgdTMyIGluZm9fZmxhZ3MsXG40MzY1Olx0XHRcdFx0XHQgIHUzMiBjdHJsX2ZsYWdzKVxuNDM2NjpcdHtcbjQzNjc6XHRcdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gSUVFRTgwMjExX0RFVl9UT19TVUJfSUYoZGV2KTtcbjQzNjg6XHRcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gc2RhdGEtXHUwMDNlbG9jYWw7XG40MzY5Olx0XHRzdHJ1Y3QgaWVlZTgwMjExX3R4X2luZm8gKmluZm87XG40MzcwOlx0XHRzdHJ1Y3Qgc3RhX2luZm8gKnN0YTtcbjQzNzE6XHRcdHN0cnVjdCBza19idWZmICpuZXh0O1xuNDM3MjpcdFx0Ym9vbCBncm91cF9hZGRyZXNzZWQ7XG40MzczOlx0XHRpbnQgbGVuID0gc2tiLVx1MDAzZWxlbjtcbjQzNzQ6XHRcbjQzNzU6XHRcdGlmICh1bmxpa2VseSghaWVlZTgwMjExX3NkYXRhX3J1bm5pbmcoc2RhdGEpIHx8IHNrYi1cdTAwM2VsZW4gXHUwMDNjIEVUSF9ITEVOKSkge1xuNDM3NjpcdFx0XHRrZnJlZV9za2Ioc2tiKTtcbjQzNzc6XHRcdFx0cmV0dXJuO1xuNDM3ODpcdFx0fVxuNDM3OTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxNzo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTY3NgoJCQkJCQkJb3V0cHV0OiAyMjAKCQkJCQkJCXRob3VnaHRzOiA0NDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBTYWZldHkgb2YgYSBNQUM4MDIxMSBTY2hlZHVsaW5nIENoYW5nZSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBXZSYjMzk7cmUgbG9va2luZyBhdCBhIGNoYW5nZSByZWxhdGVkIHRvIHRoZSBhaXJ0aW1lIHNjaGVkdWxpbmcgd2l0aGluIHRoZSBNQUM4MDIxMSBsYXllciwgc3BlY2lmaWNhbGx5IGRlYWxpbmcgd2l0aCB0aGUgYHNjaGVkdWxlX29wZW5gIGJvb2xlYW4gYXJyYXkuIFRoaXMgaXMgcGFydCBvZiB0aGUgYGllZWU4MDIxMV9sb2NhbGAgc3RydWN0dXJlLCB3aGljaCBpcyBhbGxvY2F0ZWQgd2l0aCBga3phbGxvY2AuIFRoaXMgaXMgaW1wb3J0YW50LCBhcyBga3phbGxvY2AgZ3VhcmFudGVlcyB6ZXJvLWluaXRpYWxpemF0aW9uLCB3aGljaCBpcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuCgpUaGUgY29yZSBvZiB0aGUgY2hhbmdlIGludm9sdmVzIGhvdyB3ZSB0cmFjayB3aGV0aGVyIGEgcXVldWUgaXMgb3BlbiBmb3Igc2NoZWR1bGluZy4gUHJldmlvdXNseSwgd2Ugd2VyZSB1c2luZyBgc2NoZWR1bGVfcm91bmRgIGZvciB0aGlzLCBidXQgdGhhdCBwcmVzZW50ZWQgcG90ZW50aWFsIGNvbmZsaWN0cy4gTm93LCBgc2NoZWR1bGVfb3BlblthY11gIGlzIHNldCBiYXNlZCBvbiB0aGUgYGllZWU4MDIxMV90eHFfc2NoZWR1bGVfYWlydGltZV9jaGVjaygpYCBmdW5jdGlvbiB3aXRoaW4gdGhlIGBpZWVlODAyMTFfdHhxX3NjaGVkdWxlX3N0YXJ0KClgIGZ1bmN0aW9uIGFuZCBjaGVja2VkIHdpdGhpbiB0aGUgYGllZWU4MDIxMV9uZXh0X3R4cSgpYCBmdW5jdGlvbi4gU28sIHdlJiMzOTtyZSBkZWNvdXBsaW5nIHRoZSAmIzM0O29wZW4vY2xvc2VkJiMzNDsgc3RhdGUgZnJvbSB0aGUgcm91bmQgY291bnRlciB1c2luZyB0aGlzIGJvb2xlYW4uCgpNeSBwcmltYXJ5IGNvbmNlcm4sIGFzIGFsd2F5cywgaXMgd2hldGhlciB0aGlzIGludHJvZHVjZXMgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzc3Vlcy4gU28gSSBuZWVkIHRvIGdvIHRocm91Z2ggbXkgbWVudGFsIGNoZWNrbGlzdDoKCjEuICBgc2NoZWR1bGVfb3BlbmAgaXMgcGFydCBvZiBgc3RydWN0IGllZWU4MDIxMV9sb2NhbGAsIGFsbG9jYXRlZCB3aXRoIGBremFsbG9jYCwgZW5zdXJpbmcgaXQgc3RhcnRzIGFzIGFsbCB6ZXJvcy4gR29vZC4KMi4gIE5vIGRhdGEgZnJvbSB0aGVzZSBzdHJ1Y3R1cmVzIGdldHMgY29waWVkIHRvIHVzZXIgc3BhY2UsIGVsaW1pbmF0aW5nIGEgd2hvbGUgY2xhc3Mgb2YgcG90ZW50aWFsIHByb2JsZW1zLiBFeGNlbGxlbnQuCjMuICBXZSYjMzk7cmUgbm90IHJlYWRpbmcgb3IgdXNpbmcgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGlzIGlzIGNyaXRpY2FsLiBgc2NoZWR1bGVfb3BlbmAgaXMgc2V0IGJlZm9yZSBiZWluZyByZWFkIGFuZCBpcyB6ZXJvLWluaXRpYWxpemVkIGFueXdheS4KNC4gIE5vIHN0YWNrIG9yIGhlYXAgYnVmZmVycyBhcmUgYmVpbmcgbGVmdCB1bmluaXRpYWxpemVkLgoKRG9lcyB0aGlzIGNoYW5nZSBpbnRyb2R1Y2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzPyBUaGUgYW5zd2VyIGlzIGEgc29saWQgJiMzNDtuby4mIzM0OwoKTm93LCB0byBtYWtlIHN1cmUsIGxldCYjMzk7cyBzdGVwIHRocm91Z2ggdGhlIHF1ZXN0aW9ucy4KCiogICBBcmUgd2Ugc2VuZGluZyBhbnkga2VybmVsIHN0cnVjdHVyZXMgdG8gdXNlciBzcGFjZT8gTm9wZS4KKiAgIElzIHRoZXJlIGNvbmRpdGlvbmFsIGxvZ2ljIGRlcGVuZGVudCBvbiBhbnkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXM/IEFic29sdXRlbHkgbm90LiBgbG9jYWxgIGlzIHplcm9lZCBieSBhbGxvY2F0aW9uLCBhbmQgYHNjaGVkdWxlX29wZW5gIGlzIGV4cGxpY2l0bHkgc2V0IGJlZm9yZSBiZWluZyByZWFkLgoqICAgQXJlIHdlIGFsbG9jYXRpbmcgb3IgaW5pdGlhbGl6aW5nIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzIGNvdWxkIGJlIHJlYWQ/IE5vLgoqICAgSGF2ZSB3ZSBtb2RpZmllZCBhbnkgYm91bmRzIGNoZWNrcyBvciBsZW5ndGhzIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgZGF0YT8gTm8uCgpTaW5jZSB0aGlzIGlzIHB1cmVseSBpbnRlcm5hbCBzY2hlZHVsaW5nIGxvZ2ljIHdpdGhpbiBtYWM4MDIxMSwgYW5kIHdlJiMzOTt2ZSB2ZXJpZmllZCB0aGF0IHRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSBjb25jZXJucywgS0FTQU4gYW5kIHN0YW5kYXJkIGRldGVjdG9ycyBkb24mIzM5O3QgcmVhbGx5IGNvbWUgaW50byBwbGF5IGhlcmUuIFdlJiMzOTtyZSBzYWZlIGZyb20gS01TQU4gY29uY2VybnMsIHRvby4gSXTigJlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQsIGJ1dCBhIGdvb2QgcHJhY3RpY2UuCk5lZWRzS01TQU4gPSBmYWxzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTc6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGJvb2xlYW4gZmllbGQgYHNjaGVkdWxlX29wZW5gIHRvIGBzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsYCB0byBkZWNvdXBsZSB0aGUgc2NoZWR1bGluZyBvcGVuL2Nsb3NlZCBzdGF0ZSBmcm9tIHRoZSBgc2NoZWR1bGVfcm91bmRgIGNvdW50ZXIgaW4gbWFjODAyMTEmIzM5O3MgVFggcXVldWUgc2NoZWR1bGluZyBsb2dpYy5cblxuLSBgc3RydWN0IGllZWU4MDIxMV9sb2NhbGAgaXMgYWxsb2NhdGVkIHZpYSBga3phbGxvYygpYCBkdXJpbmcgd2lwaHkgcmVnaXN0cmF0aW9uLCBlbnN1cmluZyBhbGwgZmllbGRzIGluY2x1ZGluZyBgc2NoZWR1bGVfb3BlbmAgYXJlIHplcm8taW5pdGlhbGl6ZWQuXG4tIFRoZSBuZXcgZmllbGQgaXMgb25seSB1c2VkIGludGVybmFsbHkgd2l0aGluIGBuZXQvbWFjODAyMTEvdHguY2AgZm9yIFRYIHF1ZXVlIHNjaGVkdWxpbmcgY29udHJvbCBmbG93IGFuZCBpcyBuZXZlciBjb3BpZWQgdG8gdXNlciBzcGFjZSBvciB1c2VkIGluIGFuIHVuaW5pdGlhbGl6ZWQgc3RhdGUuXG4tIE5vIG5ldyBidWZmZXJzLCBzdGFjayBvYmplY3RzLCBuZXRsaW5rIGF0dHJpYnV0ZXMsIGlvY3Rscywgb3IgdXNlci1zcGFjZSBjb3BpZXMgYXJlIGludHJvZHVjZWQgb3IgbW9kaWZpZWQuXG5cbkNvbnNlcXVlbnRseSwgdGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciBpbmZvcm1hdGlvbiBsZWFrcywgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGJvb2xlYW4gZmllbGQgYHNjaGVkdWxlX29wZW5gIHRvIGBzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsYCB0byBkZWNvdXBsZSB0aGUgc2NoZWR1bGluZyBvcGVuL2Nsb3NlZCBzdGF0ZSBmcm9tIHRoZSBgc2NoZWR1bGVfcm91bmRgIGNvdW50ZXIgaW4gbWFjODAyMTEmIzM5O3MgVFggcXVldWUgc2NoZWR1bGluZyBsb2dpYy5cblxuLSBgc3RydWN0IGllZWU4MDIxMV9sb2NhbGAgaXMgYWxsb2NhdGVkIHZpYSBga3phbGxvYygpYCBkdXJpbmcgd2lwaHkgcmVnaXN0cmF0aW9uLCBlbnN1cmluZyBhbGwgZmllbGRzIGluY2x1ZGluZyBgc2NoZWR1bGVfb3BlbmAgYXJlIHplcm8taW5pdGlhbGl6ZWQuXG4tIFRoZSBuZXcgZmllbGQgaXMgb25seSB1c2VkIGludGVybmFsbHkgd2l0aGluIGBuZXQvbWFjODAyMTEvdHguY2AgZm9yIFRYIHF1ZXVlIHNjaGVkdWxpbmcgY29udHJvbCBmbG93IGFuZCBpcyBuZXZlciBjb3BpZWQgdG8gdXNlciBzcGFjZSBvciB1c2VkIGluIGFuIHVuaW5pdGlhbGl6ZWQgc3RhdGUuXG4tIE5vIG5ldyBidWZmZXJzLCBzdGFjayBvYmplY3RzLCBuZXRsaW5rIGF0dHJpYnV0ZXMsIGlvY3Rscywgb3IgdXNlci1zcGFjZSBjb3BpZXMgYXJlIGludHJvZHVjZWQgb3IgbW9kaWZpZWQuXG5cbkNvbnNlcXVlbnRseSwgdGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciBpbmZvcm1hdGlvbiBsZWFrcywgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxNzo0Mjo1Mi41OTY2NDk5NjRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4OTg0MzU2OTA4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiQ0ZHODAyMTFcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpZWVlODAyMTFfbmV4dF90eHFcIixcbiAgICBcImllZWU4MDIxMV90eHFfc2NoZWR1bGVfc3RhcnRcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBib29sZWFuIGZpZWxkIGBzY2hlZHVsZV9vcGVuYCB0byBgc3RydWN0IGllZWU4MDIxMV9sb2NhbGAgdG8gZGVjb3VwbGUgdGhlIHNjaGVkdWxpbmcgb3Blbi9jbG9zZWQgc3RhdGUgZnJvbSB0aGUgYHNjaGVkdWxlX3JvdW5kYCBjb3VudGVyIGluIG1hYzgwMjExJ3MgVFggcXVldWUgc2NoZWR1bGluZyBsb2dpYy5cXG5cXG4tIGBzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsYCBpcyBhbGxvY2F0ZWQgdmlhIGBremFsbG9jKClgIGR1cmluZyB3aXBoeSByZWdpc3RyYXRpb24sIGVuc3VyaW5nIGFsbCBmaWVsZHMgaW5jbHVkaW5nIGBzY2hlZHVsZV9vcGVuYCBhcmUgemVyby1pbml0aWFsaXplZC5cXG4tIFRoZSBuZXcgZmllbGQgaXMgb25seSB1c2VkIGludGVybmFsbHkgd2l0aGluIGBuZXQvbWFjODAyMTEvdHguY2AgZm9yIFRYIHF1ZXVlIHNjaGVkdWxpbmcgY29udHJvbCBmbG93IGFuZCBpcyBuZXZlciBjb3BpZWQgdG8gdXNlciBzcGFjZSBvciB1c2VkIGluIGFuIHVuaW5pdGlhbGl6ZWQgc3RhdGUuXFxuLSBObyBuZXcgYnVmZmVycywgc3RhY2sgb2JqZWN0cywgbmV0bGluayBhdHRyaWJ1dGVzLCBpb2N0bHMsIG9yIHVzZXItc3BhY2UgY29waWVzIGFyZSBpbnRyb2R1Y2VkIG9yIG1vZGlmaWVkLlxcblxcbkNvbnNlcXVlbnRseSwgdGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciBpbmZvcm1hdGlvbiBsZWFrcywgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB0cmFuc21pdCBxdWV1ZSBzY2hlZHVsaW5nIGxvZ2ljIGluIG1hYzgwMjExIChuZXQvbWFjODAyMTEvdHguYyksIGRlY291cGxpbmcgcXVldWUgc2NoZWR1bGUgb3BlbiBzdGF0ZSB0cmFja2luZyBmcm9tIHRoZSBzY2hlZHVsZSByb3VuZCBjb3VudGVyLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGFuZCBleGVjdXRhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB1c2luZyB2aXJ0dWFsIHdpcmVsZXNzIGRyaXZlcnMgKHN1Y2ggYXMgbWFjODAyMTFfaHdzaW0pIGFuZCBzdGFuZGFyZCB3aXJlbGVzcyBuZXRsaW5rL3BhY2tldCBpbnRlcmZhY2VzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxNzo0Mjo1Mi41OTY2NTY4NDRaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY3ODU4ODg4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGM3YmZmMWIyNDUzNDI2MzZmZmMwNWI1ZGEzNzRiZDgzZGEyMDEyNzRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBTZXAgOCAxNzo0Mjo1MSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaCBiL25ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oXFxuaW5kZXggNTNiMGIwOGQzNDU5Ny4uNjUzMTEzNDBkYjQwNiAxMDA2NDRcXG4tLS0gYS9uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaFxcbisrKyBiL25ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oXFxuQEAgLTE0NjgsNiArMTQ2OCw3IEBAIHN0cnVjdCBpZWVlODAyMTFfbG9jYWwge1xcbiBcXHRzcGlubG9ja190IGFjdGl2ZV90eHFfbG9ja1tJRUVFODAyMTFfTlVNX0FDU107XFxuIFxcdHN0cnVjdCBsaXN0X2hlYWQgYWN0aXZlX3R4cXNbSUVFRTgwMjExX05VTV9BQ1NdO1xcbiBcXHR1MTYgc2NoZWR1bGVfcm91bmRbSUVFRTgwMjExX05VTV9BQ1NdO1xcbitcXHRib29sIHNjaGVkdWxlX29wZW5bSUVFRTgwMjExX05VTV9BQ1NdO1xcbiBcXG4gXFx0Lyogc2VyaWFsaXplcyBpZWVlODAyMTFfaGFuZGxlX3dha2VfdHhfcXVldWUgKi9cXG4gXFx0c3BpbmxvY2tfdCBoYW5kbGVfd2FrZV90eF9xdWV1ZV9sb2NrO1xcbmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvdHguYyBiL25ldC9tYWM4MDIxMS90eC5jXFxuaW5kZXggYzMzMDkyOTYwZGYyNi4uYzY2NWNlZDljMDVjYiAxMDA2NDRcXG4tLS0gYS9uZXQvbWFjODAyMTEvdHguY1xcbisrKyBiL25ldC9tYWM4MDIxMS90eC5jXFxuQEAgLTQxMjIsNyArNDEyMiw3IEBAIHN0cnVjdCBpZWVlODAyMTFfdHhxICppZWVlODAyMTFfbmV4dF90eHEoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHU4IGFjKVxcbiBcXG4gXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZsb2NhbC1cXHUwMDNlYWN0aXZlX3R4cV9sb2NrW2FjXSk7XFxuIFxcbi1cXHRpZiAoIWxvY2FsLVxcdTAwM2VzY2hlZHVsZV9yb3VuZFthY10pXFxuK1xcdGlmICghbG9jYWwtXFx1MDAzZXNjaGVkdWxlX29wZW5bYWNdKVxcbiBcXHRcXHRnb3RvIG91dDtcXG4gXFxuICBiZWdpbjpcXG5AQCAtNDM0NywxMiArNDM0NywxMiBAQCB2b2lkIGllZWU4MDIxMV90eHFfc2NoZWR1bGVfc3RhcnQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHU4IGFjKVxcbiBcXG4gXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZsb2NhbC1cXHUwMDNlYWN0aXZlX3R4cV9sb2NrW2FjXSk7XFxuIFxcbi1cXHRpZiAoaWVlZTgwMjExX3R4cV9zY2hlZHVsZV9haXJ0aW1lX2NoZWNrKGxvY2FsLCBhYykpIHtcXG4rXFx0bG9jYWwtXFx1MDAzZXNjaGVkdWxlX29wZW5bYWNdID1cXG4rXFx0XFx0aWVlZTgwMjExX3R4cV9zY2hlZHVsZV9haXJ0aW1lX2NoZWNrKGxvY2FsLCBhYyk7XFxuK1xcdGlmIChsb2NhbC1cXHUwMDNlc2NoZWR1bGVfb3BlblthY10pIHtcXG4gXFx0XFx0bG9jYWwtXFx1MDAzZXNjaGVkdWxlX3JvdW5kW2FjXSsrO1xcbiBcXHRcXHRpZiAoIWxvY2FsLVxcdTAwM2VzY2hlZHVsZV9yb3VuZFthY10pXFxuIFxcdFxcdFxcdGxvY2FsLVxcdTAwM2VzY2hlZHVsZV9yb3VuZFthY10rKztcXG4tXFx0fSBlbHNlIHtcXG4tXFx0XFx0bG9jYWwtXFx1MDAzZXNjaGVkdWxlX3JvdW5kW2FjXSA9IDA7XFxuIFxcdH1cXG4gXFxuIFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZsb2NhbC1cXHUwMDNlYWN0aXZlX3R4cV9sb2NrW2FjXSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE3OjQyOjUzLjI3NjI0NTQ4MloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MzcyMDYyNzE2OTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIkNGRzgwMjExXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaWVlZTgwMjExX25leHRfdHhxXCIsXG4gICAgXCJpZWVlODAyMTFfdHhxX3NjaGVkdWxlX3N0YXJ0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHRyYW5zbWl0IHF1ZXVlIHNjaGVkdWxpbmcgbG9naWMgaW4gbWFjODAyMTEgKG5ldC9tYWM4MDIxMS90eC5jKSwgZGVjb3VwbGluZyBxdWV1ZSBzY2hlZHVsZSBvcGVuIHN0YXRlIHRyYWNraW5nIGZyb20gdGhlIHNjaGVkdWxlIHJvdW5kIGNvdW50ZXIuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgYW5kIGV4ZWN1dGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHVzaW5nIHZpcnR1YWwgd2lyZWxlc3MgZHJpdmVycyAoc3VjaCBhcyBtYWM4MDIxMV9od3NpbSkgYW5kIHN0YW5kYXJkIHdpcmVsZXNzIG5ldGxpbmsvcGFja2V0IGludGVyZmFjZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYzdiZmYxYjI0NTM0MjYzNmZmYzA1YjVkYTM3NGJkODNkYTIwMTI3NFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgU2VwIDggMTc6NDI6NTEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaCBiL25ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oXG5pbmRleCA1M2IwYjA4ZDM0NTk3Li42NTMxMTM0MGRiNDA2IDEwMDY0NFxuLS0tIGEvbmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmhcbisrKyBiL25ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oXG5AQCAtMTQ2OCw2ICsxNDY4LDcgQEAgc3RydWN0IGllZWU4MDIxMV9sb2NhbCB7XG4gXHRzcGlubG9ja190IGFjdGl2ZV90eHFfbG9ja1tJRUVFODAyMTFfTlVNX0FDU107XG4gXHRzdHJ1Y3QgbGlzdF9oZWFkIGFjdGl2ZV90eHFzW0lFRUU4MDIxMV9OVU1fQUNTXTtcbiBcdHUxNiBzY2hlZHVsZV9yb3VuZFtJRUVFODAyMTFfTlVNX0FDU107XG4rXHRib29sIHNjaGVkdWxlX29wZW5bSUVFRTgwMjExX05VTV9BQ1NdO1xuIFxuIFx0Lyogc2VyaWFsaXplcyBpZWVlODAyMTFfaGFuZGxlX3dha2VfdHhfcXVldWUgKi9cbiBcdHNwaW5sb2NrX3QgaGFuZGxlX3dha2VfdHhfcXVldWVfbG9jaztcbmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvdHguYyBiL25ldC9tYWM4MDIxMS90eC5jXG5pbmRleCBjMzMwOTI5NjBkZjI2Li5jNjY1Y2VkOWMwNWNiIDEwMDY0NFxuLS0tIGEvbmV0L21hYzgwMjExL3R4LmNcbisrKyBiL25ldC9tYWM4MDIxMS90eC5jXG5AQCAtNDEyMiw3ICs0MTIyLDcgQEAgc3RydWN0IGllZWU4MDIxMV90eHEgKmllZWU4MDIxMV9uZXh0X3R4cShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgdTggYWMpXG4gXG4gXHRzcGluX2xvY2tfYmgoXHUwMDI2bG9jYWwtXHUwMDNlYWN0aXZlX3R4cV9sb2NrW2FjXSk7XG4gXG4tXHRpZiAoIWxvY2FsLVx1MDAzZXNjaGVkdWxlX3JvdW5kW2FjXSlcbitcdGlmICghbG9jYWwtXHUwMDNlc2NoZWR1bGVfb3BlblthY10pXG4gXHRcdGdvdG8gb3V0O1xuIFxuICBiZWdpbjpcbkBAIC00MzQ3LDEyICs0MzQ3LDEyIEBAIHZvaWQgaWVlZTgwMjExX3R4cV9zY2hlZHVsZV9zdGFydChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgdTggYWMpXG4gXG4gXHRzcGluX2xvY2tfYmgoXHUwMDI2bG9jYWwtXHUwMDNlYWN0aXZlX3R4cV9sb2NrW2FjXSk7XG4gXG4tXHRpZiAoaWVlZTgwMjExX3R4cV9zY2hlZHVsZV9haXJ0aW1lX2NoZWNrKGxvY2FsLCBhYykpIHtcbitcdGxvY2FsLVx1MDAzZXNjaGVkdWxlX29wZW5bYWNdID1cbitcdFx0aWVlZTgwMjExX3R4cV9zY2hlZHVsZV9haXJ0aW1lX2NoZWNrKGxvY2FsLCBhYyk7XG4rXHRpZiAobG9jYWwtXHUwMDNlc2NoZWR1bGVfb3BlblthY10pIHtcbiBcdFx0bG9jYWwtXHUwMDNlc2NoZWR1bGVfcm91bmRbYWNdKys7XG4gXHRcdGlmICghbG9jYWwtXHUwMDNlc2NoZWR1bGVfcm91bmRbYWNdKVxuIFx0XHRcdGxvY2FsLVx1MDAzZXNjaGVkdWxlX3JvdW5kW2FjXSsrO1xuLVx0fSBlbHNlIHtcbi1cdFx0bG9jYWwtXHUwMDNlc2NoZWR1bGVfcm91bmRbYWNdID0gMDtcbiBcdH1cbiBcbiBcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmxvY2FsLVx1MDAzZWFjdGl2ZV90eHFfbG9ja1thY10pO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTc6NDI6NTMuMjc2MjQ3MzgyWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NjEyOTIyNTgyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBhdGNoIGZvciBQb3RlbnRpYWwgSXNzdWVzKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIFRoZSBmaXJzdCB0aGluZyBJJ20gZG9pbmcgaXMgZ2V0dGluZyBhIGZlZWwgZm9yIHRoZSBzY29wZS4gVGhpcyBwYXRjaCBoaXRzIGBuZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaGAgYW5kIGBuZXQvbWFjODAyMTEvdHguY2AsIHNvIGl0J3MgcHJvYmFibHkgcmVsYXRlZCB0byA4MDIuMTEgd2lyZWxlc3MgdHJhbnNtaXNzaW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgYmVpbmcgY2hhbmdlZCBhbmQgd2hldGhlciBpdCBpbnRyb2R1Y2VzIGFueXRoaW5nIHByb2JsZW1hdGljLlxuXG5JJ20gemVyb2luZyBpbiBvbiBgbmV0L21hYzgwMjExL3R4LmNgLCBwYXJ0aWN1bGFybHkgYXJvdW5kIGxpbmVzIDQxMjIgYW5kIDQzNDcuIEkgd2FudCB0byBzZWUgd2hhdCBjb25maWd1cmF0aW9uIG9wdGlvbnMgbWlnaHQgYWZmZWN0IHRoaXMgY29kZSwgd2hhdCBmdW5jdGlvbnMgYXJlIGNhbGxlZCwgYW5kIGhvdyBkZWVwbHkgdGhpcyBtb2RpZmljYXRpb24gZ29lcy4gQ3JpdGljYWxseSwgSSBoYXZlIHRvIGNvbnNpZGVyIHdoZXRoZXIgdGhpcyBhcmVhIGlzIHJlYWNoYWJsZSB3aXRoaW4gYSBzdGFuZGFyZCBmdXp6aW5nIHNldHVwIOKAkyB0aGluayBgbWFjODAyMTFfaHdzaW1gLCBgbmw4MDIxMWAsIHRob3NlIHNvcnRzIG9mIHNpbXVsYXRlZCB3aWZpIGRldmljZXMgdGhhdCBzeXprYWxsZXIgaGFtbWVycy4gSXQncyBlc3NlbnRpYWwgdG8gdW5kZXJzdGFuZCBpZiBvdXIgZnV6emluZyBlZmZvcnRzIGFyZSBsaWtlbHkgdG8gaGl0IHRoaXMgbmV3IGNvZGUgcGF0aC5cblxuVG8gZ2V0IGEgYmV0dGVyIGdyaXAgb24gdGhlIHNpdHVhdGlvbiBJIHRoaW5rIEknbGwgdXNlIGVpdGhlciBgcmVhZC1maWxlYCBvciBgZ3JlcHBlcmAgdG8gaW5zcGVjdCBgbmV0L21hYzgwMjExL3R4LmNgLCB3aGljaCBzaG91bGQgcHJvdmlkZSBlbm91Z2ggY29udGV4dHVhbCBkZXRhaWwuIEkgc2hvdWxkIGFsc28gY2hlY2sgdGhlIGBLY29uZmlnYCBmaWxlcyByZWxhdGVkIHRvIHRoaXMgcGFydCBvZiB0aGUga2VybmVsLCBpbiBjYXNlIHRoZXJlIGFyZSBhbnkgY29uZGl0aW9uYWwgZGVwZW5kZW5jaWVzIG9yIGZlYXR1cmVzIHRoYXQgYXJlIG5ld2x5IGVuYWJsZWQgb3IgZGlzYWJsZWQuIFRoaXMgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGNvZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzOTksIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTcsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxNzo0Mjo1OS40MDU0ODYyNTdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzgzMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L21hYzgwMjExL3R4LmNcIixcbiAgXCJGaXJzdExpbmVcIjogNDExNSxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiNDExNTpcXHRzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqaWVlZTgwMjExX25leHRfdHhxKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCB1OCBhYylcXG40MTE2OlxcdHtcXG40MTE3OlxcdFxcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gaHdfdG9fbG9jYWwoaHcpO1xcbjQxMTg6XFx0XFx0c3RydWN0IGllZWU4MDIxMV90eHEgKnJldCA9IE5VTEw7XFxuNDExOTpcXHRcXHRzdHJ1Y3QgdHhxX2luZm8gKnR4cWkgPSBOVUxMLCAqaGVhZCA9IE5VTEw7XFxuNDEyMDpcXHRcXHRib29sIGZvdW5kX2VsaWdpYmxlX3R4cSA9IGZhbHNlO1xcbjQxMjE6XFx0XFx0Ym9vbCBhcWxfY2hlY2s7XFxuNDEyMjpcXHRcXG40MTIzOlxcdFxcdHNwaW5fbG9ja19iaChcXHUwMDI2bG9jYWwtXFx1MDAzZWFjdGl2ZV90eHFfbG9ja1thY10pO1xcbjQxMjQ6XFx0XFxuNDEyNTpcXHRcXHRpZiAoIWxvY2FsLVxcdTAwM2VzY2hlZHVsZV9vcGVuW2FjXSlcXG40MTI2OlxcdFxcdFxcdGdvdG8gb3V0O1xcbjQxMjc6XFx0XFxuNDEyODpcXHQgYmVnaW46XFxuNDEyOTpcXHRcXHR0eHFpID0gbGlzdF9maXJzdF9lbnRyeV9vcl9udWxsKFxcdTAwMjZsb2NhbC1cXHUwMDNlYWN0aXZlX3R4cXNbYWNdLFxcbjQxMzA6XFx0XFx0XFx0XFx0XFx0XFx0c3RydWN0IHR4cV9pbmZvLFxcbjQxMzE6XFx0XFx0XFx0XFx0XFx0XFx0c2NoZWR1bGVfb3JkZXIpO1xcbjQxMzI6XFx0XFx0aWYgKCF0eHFpKVxcbjQxMzM6XFx0XFx0XFx0Z290byBvdXQ7XFxuNDEzNDpcXHRcXG40MTM1OlxcdFxcdGlmICh0eHFpID09IGhlYWQpIHtcXG40MTM2OlxcdFxcdFxcdGlmICghZm91bmRfZWxpZ2libGVfdHhxKVxcbjQxMzc6XFx0XFx0XFx0XFx0Z290byBvdXQ7XFxuNDEzODpcXHRcXHRcXHRlbHNlXFxuNDEzOTpcXHRcXHRcXHRcXHRmb3VuZF9lbGlnaWJsZV90eHEgPSBmYWxzZTtcXG40MTQwOlxcdFxcdH1cXG40MTQxOlxcdFxcbjQxNDI6XFx0XFx0aWYgKCFoZWFkKVxcbjQxNDM6XFx0XFx0XFx0aGVhZCA9IHR4cWk7XFxuNDE0NDpcXHRcXG40MTQ1OlxcdFxcdGFxbF9jaGVjayA9IGllZWU4MDIxMV90eHFfYWlydGltZV9jaGVjayhodywgXFx1MDAyNnR4cWktXFx1MDAzZXR4cSk7XFxuNDE0NjpcXHRcXHRpZiAoYXFsX2NoZWNrKVxcbjQxNDc6XFx0XFx0XFx0Zm91bmRfZWxpZ2libGVfdHhxID0gdHJ1ZTtcXG40MTQ4OlxcdFxcbjQxNDk6XFx0XFx0aWYgKHR4cWktXFx1MDAzZXR4cS5zdGEpIHtcXG40MTUwOlxcdFxcdFxcdHN0cnVjdCBzdGFfaW5mbyAqc3RhID0gY29udGFpbmVyX29mKHR4cWktXFx1MDAzZXR4cS5zdGEsXFxuNDE1MTpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgc3RydWN0IHN0YV9pbmZvLCBzdGEpO1xcbjQxNTI6XFx0XFxuNDE1MzpcXHRcXHRcXHRpZiAoaWVlZTgwMjExX3N0YV9kZWZpY2l0KHN0YSwgdHhxaS1cXHUwMDNldHhxLmFjKSBcXHUwMDNjIDApIHtcXG40MTU0OlxcdFxcdFxcdFxcdHN0YS1cXHUwMDNlYWlydGltZVt0eHFpLVxcdTAwM2V0eHEuYWNdLmRlZmljaXQgKz1cXG40MTU1OlxcdFxcdFxcdFxcdFxcdHN0YS1cXHUwMDNlYWlydGltZV93ZWlnaHQ7XFxuNDE1NjpcXHRcXG40MTU3OlxcdFxcdFxcdFxcdGFxbF9jaGVjayA9IGZhbHNlO1xcbjQxNTg6XFx0XFx0XFx0fVxcbjQxNTk6XFx0XFx0fVxcbjQxNjA6XFx0XFxuNDE2MTpcXHRcXHRpZiAoIWFxbF9jaGVjaykge1xcbjQxNjI6XFx0XFx0XFx0bGlzdF9tb3ZlX3RhaWwoXFx1MDAyNnR4cWktXFx1MDAzZXNjaGVkdWxlX29yZGVyLFxcbjQxNjM6XFx0XFx0XFx0XFx0XFx0ICAgXFx1MDAyNmxvY2FsLVxcdTAwM2VhY3RpdmVfdHhxc1t0eHFpLVxcdTAwM2V0eHEuYWNdKTtcXG40MTY0OlxcdFxcdFxcdGdvdG8gYmVnaW47XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE3OjQyOjU5LjQwNTkyODE3N1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIwMjEyNTYxMzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhpbmtpbmcsIGV4cHJlc3NlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNQUM4MDIxMSBUcmFuc21pc3Npb24gQ29kZSoqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5IHdpdGggYG5ldC9tYWM4MDIxMS90eC5jYC4gTGV0J3MgemVybyBpbiBvbiBhIHNwZWNpZmljIHBvaW50IHRvIGF2b2lkIGdldHRpbmcgbG9zdCBpbiB0aGUgd2VlZHMgcmlnaHQgYXdheS4gSSdtIGdvaW5nIHRvIGp1bXAgdG8gbGluZSA0MzQ3LiBCYXNlZCBvbiBteSBwYXN0IGV4cGVyaWVuY2Ugd2l0aCBNQUM4MDIxMSwgSSBleHBlY3QgdGhpcyBhcmVhIHRvIGxpa2VseSBkZWFsIHdpdGjigKYgW0hlcmUsIEknZCBmaWxsIGluIHRoZSBsaWtlbHkgZnVuY3Rpb24gYmFzZWQgb24gbXkgZXhwZXJ0aXNlIC0gc29tZXRoaW5nIGxpa2U6IFwi4oCmcmV0cmFuc21pc3Npb24gbG9naWMsIHJhdGUgYWRhcHRhdGlvbiwgb3IgcG9zc2libHkgZnJhbWUgYWdncmVnYXRpb25cIi5dLiBUaGlzIHNwZWNpZmljIGxpbmUsIHN1cnJvdW5kZWQgYnkgdGhlIGNvZGUgYXJvdW5kIGl0LCB3aWxsIHN1cmVseSBwcm92aWRlIHNvbWUgY3JpdGljYWwgaW5zaWdodHMuIExldOKAmXMgc2VlIHdoYXQncyByZWFsbHkgaGFwcGVuaW5nIGluIHRoYXQgc2VjdGlvbiBvZiB0aGUgdHJhbnNtaXNzaW9uIHByb2Nlc3MuIFRoaXMgc3BvdCBzZWVtcyBwcm9taXNpbmcgZm9yIGV4YW1pbmluZyB0aGUgbnVhbmNlcyBvZiBob3cgdGhlIE1BQyBsYXllciBoYW5kbGVzIHBhY2tldCB0cmFuc21pc3Npb24uIExldCdzIHNlZSBpZiB0aGlzIGp1bXAgcHJvdmlkZXMgdGhlIGRhdGEgSSBuZWVkIVxuXG5cbiIsIklucHV0VG9rZW5zIjo0NzQyLCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxNzo0MzowMS40MjcxODc0MTJaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTQ0MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L21hYzgwMjExL3R4LmNcIixcbiAgXCJGaXJzdExpbmVcIjogNDM0MCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiNDM0MDpcXHRcXHRyZXR1cm4gdHJ1ZTtcXG40MzQxOlxcdH1cXG40MzQyOlxcdEVYUE9SVF9TWU1CT0woaWVlZTgwMjExX3R4cV9tYXlfdHJhbnNtaXQpO1xcbjQzNDM6XFx0XFxuNDM0NDpcXHR2b2lkIGllZWU4MDIxMV90eHFfc2NoZWR1bGVfc3RhcnQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHU4IGFjKVxcbjQzNDU6XFx0e1xcbjQzNDY6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBod190b19sb2NhbChodyk7XFxuNDM0NzpcXHRcXG40MzQ4OlxcdFxcdHNwaW5fbG9ja19iaChcXHUwMDI2bG9jYWwtXFx1MDAzZWFjdGl2ZV90eHFfbG9ja1thY10pO1xcbjQzNDk6XFx0XFxuNDM1MDpcXHRcXHRsb2NhbC1cXHUwMDNlc2NoZWR1bGVfb3BlblthY10gPVxcbjQzNTE6XFx0XFx0XFx0aWVlZTgwMjExX3R4cV9zY2hlZHVsZV9haXJ0aW1lX2NoZWNrKGxvY2FsLCBhYyk7XFxuNDM1MjpcXHRcXHRpZiAobG9jYWwtXFx1MDAzZXNjaGVkdWxlX29wZW5bYWNdKSB7XFxuNDM1MzpcXHRcXHRcXHRsb2NhbC1cXHUwMDNlc2NoZWR1bGVfcm91bmRbYWNdKys7XFxuNDM1NDpcXHRcXHRcXHRpZiAoIWxvY2FsLVxcdTAwM2VzY2hlZHVsZV9yb3VuZFthY10pXFxuNDM1NTpcXHRcXHRcXHRcXHRsb2NhbC1cXHUwMDNlc2NoZWR1bGVfcm91bmRbYWNdKys7XFxuNDM1NjpcXHRcXHR9XFxuNDM1NzpcXHRcXG40MzU4OlxcdFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZsb2NhbC1cXHUwMDNlYWN0aXZlX3R4cV9sb2NrW2FjXSk7XFxuNDM1OTpcXHR9XFxuNDM2MDpcXHRFWFBPUlRfU1lNQk9MKGllZWU4MDIxMV90eHFfc2NoZWR1bGVfc3RhcnQpO1xcbjQzNjE6XFx0XFxuNDM2MjpcXHR2b2lkIF9faWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG40MzYzOlxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG40MzY0OlxcdFxcdFxcdFxcdFxcdCAgdTMyIGluZm9fZmxhZ3MsXFxuNDM2NTpcXHRcXHRcXHRcXHRcXHQgIHUzMiBjdHJsX2ZsYWdzKVxcbjQzNjY6XFx0e1xcbjQzNjc6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBJRUVFODAyMTFfREVWX1RPX1NVQl9JRihkZXYpO1xcbjQzNjg6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cXHUwMDNlbG9jYWw7XFxuNDM2OTpcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX3R4X2luZm8gKmluZm87XFxuNDM3MDpcXHRcXHRzdHJ1Y3Qgc3RhX2luZm8gKnN0YTtcXG40MzcxOlxcdFxcdHN0cnVjdCBza19idWZmICpuZXh0O1xcbjQzNzI6XFx0XFx0Ym9vbCBncm91cF9hZGRyZXNzZWQ7XFxuNDM3MzpcXHRcXHRpbnQgbGVuID0gc2tiLVxcdTAwM2VsZW47XFxuNDM3NDpcXHRcXG40Mzc1OlxcdFxcdGlmICh1bmxpa2VseSghaWVlZTgwMjExX3NkYXRhX3J1bm5pbmcoc2RhdGEpIHx8IHNrYi1cXHUwMDNlbGVuIFxcdTAwM2MgRVRIX0hMRU4pKSB7XFxuNDM3NjpcXHRcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG40Mzc3OlxcdFxcdFxcdHJldHVybjtcXG40Mzc4OlxcdFxcdH1cXG40Mzc5OlxcdFxcbjQzODA6XFx0XFx0c2tfcGFjaW5nX3NoaWZ0X3VwZGF0ZShza2ItXFx1MDAzZXNrLCBzZGF0YS1cXHUwMDNlbG9jYWwtXFx1MDAzZWh3LnR4X3NrX3BhY2luZ19zaGlmdCk7XFxuNDM4MTpcXHRcXG40MzgyOlxcdFxcdHJjdV9yZWFkX2xvY2soKTtcXG40MzgzOlxcdFxcbjQzODQ6XFx0XFx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWVzaChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikgXFx1MDAyNlxcdTAwMjZcXG40Mzg1OlxcdFxcdCAgICBpZWVlODAyMTFfaHdfY2hlY2soXFx1MDAyNmxvY2FsLVxcdTAwM2VodywgU1VQUE9SVF9GQVNUX1hNSVQpIFxcdTAwMjZcXHUwMDI2XFxuNDM4NjpcXHRcXHQgICAgaWVlZTgwMjExX21lc2hfeG1pdF9mYXN0KHNkYXRhLCBza2IsIGN0cmxfZmxhZ3MpKVxcbjQzODc6XFx0XFx0XFx0Z290byBvdXQ7XFxuNDM4ODpcXHRcXG40Mzg5OlxcdFxcdGlmIChpZWVlODAyMTFfbG9va3VwX3JhX3N0YShzZGF0YSwgc2tiLCBcXHUwMDI2c3RhKSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTc6NDM6MDEuNDI3NzQ1NTYyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjM2Njk3MDE3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgbWFjODAyMTEgS2NvbmZpZyoqXG5cbkFscmlnaHQsIGxldCdzIGdldCBpbnRvIHRoZSBkZXRhaWxzIG9mIHRoZSBtYWM4MDIxMSBLY29uZmlnIGZpbGUuIEkgbmVlZCB0byByZWZyZXNoIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgZGVwZW5kZW5jaWVzLCBhbmQgaG93IHRoZXkgcmVsYXRlIHRvIHRoZSBvdmVyYWxsIGRyaXZlciBhcmNoaXRlY3R1cmUuIEknbSB0aGlua2luZyBzcGVjaWZpY2FsbHkgYWJvdXQgaG93IHZhcmlvdXMgZmVhdHVyZXMgYXJlIGVuYWJsZWQgb3IgZGlzYWJsZWQsIGFuZCB0aGUgaW1wYWN0IG9uIHRoZSByZXN1bHRpbmcga2VybmVsIGltYWdlIHNpemUgYW5kIGZ1bmN0aW9uYWxpdHkuIEknbSBnb2luZyB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBkZXBlbmRlbmNpZXMg4oCTIHRob3NlIGBkZXBlbmRzIG9uYCBzdGF0ZW1lbnRzIGFyZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBob3cgb3B0aW9ucyBpbnRlcmFjdCBhbmQgd2hpY2ggZmVhdHVyZXMgY2FuIGJlIGNvbWJpbmVkLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIGFueSBjaGFuZ2VzIG9yIGFkZGl0aW9ucyBzaW5jZSB0aGUgbGFzdCB0aW1lIEkgcmV2aWV3ZWQgaXQg4oCTIG1heWJlIGEgbmV3IHJlZ3VsYXRvcnkgZG9tYWluIGNvbmZpZ3VyYXRpb24gb3B0aW9uLCBhIG5ldyBwb3dlci1zYXZpbmcgZmVhdHVyZSwgb3IgYSBjaGFuZ2UgaW4gdGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgYSBzcGVjaWZpYyB3aXJlbGVzcyBzdGFuZGFyZC4gQXJlIHRoZXJlIGFueSBuZXcgaGFyZHdhcmUgcGxhdGZvcm1zIHN1cHBvcnRlZCwgYW5kIGhvdyBpcyB0aGF0IHJlZmxlY3RlZCBpbiB0aGUgS2NvbmZpZz8gSSdsbCBhbHNvIHRyeSB0byBnYXVnZSB0aGUgbGV2ZWwgb2YgbW9kdWxhcml6YXRpb24g4oCTIGNhbiBJIGVhc2lseSBkaXNhYmxlIHBhcnRzIEkgZG9uJ3QgbmVlZCwgb3IgYXJlIHRoZXJlIHRpZ2h0bHkgY291cGxlZCBmZWF0dXJlcz8gVGltZSB0byBnZXQgc3RhcnRlZCFcblxuXG4iLCJJbnB1dFRva2VucyI6NTkxNCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTc6NDM6MDMuNzk0NzIwMjkxWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg0MzM0NjI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNQUM4MDIxMVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbWFjODAyMTEvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxubmV0L21hYzgwMjExL0tjb25maWc6Mjpjb25maWcgTUFDODAyMTFcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJHZW5lcmljIElFRUUgODAyLjExIE5ldHdvcmtpbmcgU3RhY2sgKG1hYzgwMjExKVxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTE5PWlmIE1BQzgwMjExICE9IG5cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMTpjb25maWcgTUFDODAyMTFfSEFTX1JDXFxubmV0L21hYzgwMjExL0tjb25maWctMjItXFx0Ym9vbFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI0OmNvbmZpZyBNQUM4MDIxMV9SQ19NSU5TVFJFTFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI1LVxcdGJvb2wgXFxcIk1pbnN0cmVsXFxcIiBpZiBFWFBFUlRcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTMxPWNob2ljZVxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctNDAtXFxubmV0L21hYzgwMjExL0tjb25maWc6NDE6Y29uZmlnIE1BQzgwMjExX1JDX0RFRkFVTFRfTUlOU1RSRUxcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00Mi1cXHRib29sIFxcXCJNaW5zdHJlbFxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTQ4PWVuZGNob2ljZVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQ5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjUwOmNvbmZpZyBNQUM4MDIxMV9SQ19ERUZBVUxUXFxubmV0L21hYzgwMjExL0tjb25maWctNTEtXFx0c3RyaW5nXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZz01Nz1jb21tZW50IFxcXCJTb21lIHdpcmVsZXNzIGRyaXZlcnMgcmVxdWlyZSBhIHJhdGUgY29udHJvbCBhbGdvcml0aG1cXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy01OS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo2MDpjb25maWcgTUFDODAyMTFfS1VOSVRfVEVTVFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTYxLVxcdHRyaXN0YXRlIFxcXCJLVW5pdCB0ZXN0cyBmb3IgbWFjODAyMTFcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTY5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjcwOmNvbmZpZyBNQUM4MDIxMV9NRVNIXFxubmV0L21hYzgwMjExL0tjb25maWctNzEtXFx0Ym9vbCBcXFwiRW5hYmxlIG1hYzgwMjExIG1lc2ggbmV0d29ya2luZyBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctNzgtXFxubmV0L21hYzgwMjExL0tjb25maWc6Nzk6Y29uZmlnIE1BQzgwMjExX0xFRFNcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04MC1cXHRib29sIFxcXCJFbmFibGUgTEVEIHRyaWdnZXJzXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctODctXFxubmV0L21hYzgwMjExL0tjb25maWc6ODg6Y29uZmlnIE1BQzgwMjExX0RFQlVHRlNcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04OS1cXHRib29sIFxcXCJFeHBvcnQgbWFjODAyMTEgaW50ZXJuYWxzIGluIERlYnVnRlNcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy05Ni1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo5Nzpjb25maWcgTUFDODAyMTFfTUVTU0FHRV9UUkFDSU5HXFxubmV0L21hYzgwMjExL0tjb25maWctOTgtXFx0Ym9vbCBcXFwiVHJhY2UgYWxsIG1hYzgwMjExIGRlYnVnIG1lc3NhZ2VzXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTA5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjExMDptZW51Y29uZmlnIE1BQzgwMjExX0RFQlVHX01FTlVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTEtXFx0Ym9vbCBcXFwiU2VsZWN0IG1hYzgwMjExIGRlYnVnZ2luZyBmZWF0dXJlc1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExNS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMTY6Y29uZmlnIE1BQzgwMjExX05PSU5MSU5FXFxubmV0L21hYzgwMjExL0tjb25maWctMTE3LVxcdGJvb2wgXFxcIkRvIG5vdCBpbmxpbmUgVFgvUlggaGFuZGxlcnNcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMzEtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTMyOmNvbmZpZyBNQUM4MDIxMV9WRVJCT1NFX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTMzLVxcdGJvb2wgXFxcIlZlcmJvc2UgZGVidWdnaW5nIG91dHB1dFxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE0Mi1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNDM6Y29uZmlnIE1BQzgwMjExX01MTUVfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNDQtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtYW5hZ2VkIE1MTUUgb3V0cHV0XFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTUzLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE1NDpjb25maWcgTUFDODAyMTFfU1RBX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTU1LVxcdGJvb2wgXFxcIlZlcmJvc2Ugc3RhdGlvbiBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNjItXFxubmV0L21hYzgwMjExL0tjb25maWc6MTYzOmNvbmZpZyBNQUM4MDIxMV9IVF9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE2NC1cXHRib29sIFxcXCJWZXJib3NlIEhUIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE3NC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNzU6Y29uZmlnIE1BQzgwMjExX09DQl9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE3Ni1cXHRib29sIFxcXCJWZXJib3NlIE9DQiBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xODUtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTg2OmNvbmZpZyBNQUM4MDIxMV9JQlNTX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTg3LVxcdGJvb2wgXFxcIlZlcmJvc2UgSUJTUyBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xOTYtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTk3OmNvbmZpZyBNQUM4MDIxMV9QU19ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE5OC1cXHRib29sIFxcXCJWZXJib3NlIHBvd2Vyc2F2ZSBtb2RlIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIwOC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMDk6Y29uZmlnIE1BQzgwMjExX01QTF9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIxMC1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggcGVlciBsaW5rIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyMS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMjI6Y29uZmlnIE1BQzgwMjExX01QQVRIX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjIzLVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBwYXRoIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzNC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMzU6Y29uZmlnIE1BQzgwMjExX01IV01QX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjM2LVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBIV01QIHJvdXRpbmcgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjQ3LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI0ODpjb25maWcgTUFDODAyMTFfTUVTSF9TWU5DX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjQ5LVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBzeW5jaHJvbml6YXRpb24gZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjU4LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI1OTpjb25maWcgTUFDODAyMTFfTUVTSF9DU0FfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNjAtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIGNoYW5uZWwgc3dpdGNoIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2OS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNzA6Y29uZmlnIE1BQzgwMjExX01FU0hfUFNfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNzEtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIHBvd2Vyc2F2ZSBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yODAtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjgxOmNvbmZpZyBNQUM4MDIxMV9URExTX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjgyLVxcdGJvb2wgXFxcIlZlcmJvc2UgVERMUyBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yOTItXFxubmV0L21hYzgwMjExL0tjb25maWc6MjkzOmNvbmZpZyBNQUM4MDIxMV9ERUJVR19DT1VOVEVSU1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI5NC1cXHRib29sIFxcXCJFeHRyYSBzdGF0aXN0aWNzIGZvciBUWC9SWCBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zMDctXFxubmV0L21hYzgwMjExL0tjb25maWc6MzA4OmNvbmZpZyBNQUM4MDIxMV9TVEFfSEFTSF9NQVhfU0laRVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMwOS1cXHRpbnQgXFxcIlN0YXRpb24gaGFzaCB0YWJsZSBtYXhpbXVtIHNpemVcXFwiIGlmIE1BQzgwMjExX0RFQlVHX01FTlVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTc6NDM6MDMuODc5MDU5NjJaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNTIwMjM5ODA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIE1BQzgwMjExIERlcGVuZGVuY2llcyoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW4uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGNoZWNrIHRoZSBgS2NvbmZpZ2AgZmlsZSwgc3BlY2lmaWNhbGx5IHRoZSBiZWdpbm5pbmcgb2YgYG5ldC9tYWM4MDIxMS9LY29uZmlnYC4gSSdtIGdvaW5nIHN0cmFpZ2h0IGZvciB0aGF0IGZpbGUgYmVjYXVzZSBpdCdzIHdoZXJlIHRoZSBjb3JlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgaW5jbHVkaW5nIGRlcGVuZGVuY2llcywgYXJlIGRlZmluZWQgZm9yIGBNQUM4MDIxMWAuIEkgd2FudCB0byBxdWlja2x5IHVuZGVyc3RhbmQgd2hhdCBvdGhlciBrZXJuZWwgZmVhdHVyZXMgb3IgaGFyZHdhcmUgY29uZmlndXJhdGlvbnMgbmVlZCB0byBiZSBpbiBwbGFjZSAqYmVmb3JlKiBgTUFDODAyMTFgIGlzIGV2ZW4gY29uc2lkZXJlZC4gVGhpcyBpcyBjcnVjaWFsIGZvciBkZWJ1Z2dpbmcgYnVpbGQgaXNzdWVzLCB1bmRlcnN0YW5kaW5nIGRyaXZlciBjb21wYXRpYmlsaXR5LCBvciBldmVuIGFzc2Vzc2luZyB0aGUgYXJjaGl0ZWN0dXJhbCBjb25zdHJhaW50cyBvZiBhIHBhcnRpY3VsYXIgd2lyZWxlc3Mgc2V0dXAuIEnigJltIHRoaW5raW5nLCBmb3IgaW5zdGFuY2UsIGFyZSB0aGVyZSBhbnkgYmFzZSB3aXJlbGVzcyBQSFkgcmVxdWlyZW1lbnRzLCBvciBhcmUgdGhlcmUgZGVwZW5kZW5jaWVzIG9uIHNwZWNpZmljIG5ldHdvcmsgbGF5ZXIgZnVuY3Rpb25hbGl0aWVzIGxpa2UgYSBwYXJ0aWN1bGFyIHZlcnNpb24gb2YgdGhlIGdlbmVyaWMgbmV0d29yayBzdGFjaz8gR3JhYmJpbmcgdGhhdCBkZXBlbmRlbmN5IGluZm9ybWF0aW9uIHdpbGwgZ2l2ZSBtZSB0aGUgYnJvYWQgc3Ryb2tlcyBvZiBob3cgdGhpcyB3b3Jrcy4gSSdtIGZvY3VzaW5nIG9uIHRoZSAqZGVwZW5kcyBvbiogY2xhdXNlcyBpbiBgS2NvbmZpZ2AgdG8gZ2V0IHRoYXQgYmlyZCdzLWV5ZSB2aWV3LiBUaGlzIGlzIGFsbCBhYm91dCBjb250ZXh0OyB1bmRlcnN0YW5kaW5nIHRoZSBzdXJyb3VuZGluZyBjb25kaXRpb25zIGlzIGtleSB0byB1bmRlcnN0YW5kaW5nIGhvdyBgTUFDODAyMTFgIGludGVncmF0ZXMgd2l0aCB0aGUgcmVzdCBvZiB0aGUga2VybmVsLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MzgxLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTc6NDM6MDYuMzk5MzAyNDQ3WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4MjMzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbWFjODAyMTEvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyNVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIE1BQzgwMjExXFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiR2VuZXJpYyBJRUVFIDgwMi4xMSBOZXR3b3JraW5nIFN0YWNrIChtYWM4MDIxMSlcXFwiXFxuICAgNDpcXHRcXHRkZXBlbmRzIG9uIENGRzgwMjExXFxuICAgNTpcXHRcXHRzZWxlY3QgQ1JZUFRPXFxuICAgNjpcXHRcXHRzZWxlY3QgQ1JZUFRPX0xJQl9BRVNfQ0JDX01BQ1NcXG4gICA3OlxcdFxcdHNlbGVjdCBDUllQVE9fTElCX0FSQzRcXG4gICA4OlxcdFxcdHNlbGVjdCBDUllQVE9fQUVTXFxuICAgOTpcXHRcXHRzZWxlY3QgQ1JZUFRPX0NDTVxcbiAgMTA6XFx0XFx0c2VsZWN0IENSWVBUT19HQ01cXG4gIDExOlxcdFxcdHNlbGVjdCBDUkMzMlxcbiAgMTI6XFx0XFx0aGVscFxcbiAgMTM6XFx0XFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIHRoZSBoYXJkd2FyZSBpbmRlcGVuZGVudCBJRUVFIDgwMi4xMVxcbiAgMTQ6XFx0XFx0ICBuZXR3b3JraW5nIHN0YWNrLlxcbiAgMTU6XFx0XFxuICAxNjpcXHRjb21tZW50IFxcXCJDRkc4MDIxMSBuZWVkcyB0byBiZSBlbmFibGVkIGZvciBNQUM4MDIxMVxcXCJcXG4gIDE3OlxcdFxcdGRlcGVuZHMgb24gQ0ZHODAyMTE9blxcbiAgMTg6XFx0XFxuICAxOTpcXHRpZiBNQUM4MDIxMSAhPSBuXFxuICAyMDpcXHRcXG4gIDIxOlxcdGNvbmZpZyBNQUM4MDIxMV9IQVNfUkNcXG4gIDIyOlxcdFxcdGJvb2xcXG4gIDIzOlxcdFxcbiAgMjQ6XFx0Y29uZmlnIE1BQzgwMjExX1JDX01JTlNUUkVMXFxuICAyNTpcXHRcXHRib29sIFxcXCJNaW5zdHJlbFxcXCIgaWYgRVhQRVJUXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE3OjQzOjA2LjM5OTUxNDk1N1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozMTM1MDUyMTE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhIGZpcnN0LXBlcnNvbiBleHBlcnQgc3VtbWFyeTpcblxuKipBbmFseXppbmcgYGllZWU4MDIxMV9uZXh0X3R4cWAgYW5kIGBpZWVlODAyMTFfdHhxX3NjaGVkdWxlX3N0YXJ0YCoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzLiBNeSBmb2N1cyBpcyBvbiB1bmRlcnN0YW5kaW5nICpob3cqIGFuZCAqd2hlcmUqIGBpZWVlODAyMTFfbmV4dF90eHFgIGFuZCBgaWVlZTgwMjExX3R4cV9zY2hlZHVsZV9zdGFydGAgYXJlIGJlaW5nIHVzZWQuIEVzc2VudGlhbGx5LCBJIHdhbnQgdG8gdHJhY2UgdGhlIGNhbGxzLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgY29udGV4dCBpbiB3aGljaCB0aGVzZSBmdW5jdGlvbnMgYXJlIGJlaW5nIGludm9rZWQgaW4gdGhlIDgwMi4xMSBzdGFjay4gV2hhdCdzIHRoZSBjb250cm9sIGZsb3c/IFdoYXQgb3RoZXIgZnVuY3Rpb25zIGFyZSB0aGV5IGludGVyYWN0aW5nIHdpdGg/IFdoYXQgYXJlIHRoZSBpbXBsaWNhdGlvbnMgb2Ygc2NoZWR1bGluZyBhbmQgc2VsZWN0aW9uIG9mIHRoZXNlIHRyYW5zbWlzc2lvbiBxdWV1ZXM/XG5cblNwZWNpZmljYWxseSwgSSdtIHRoaW5raW5nIGFib3V0IHRoZSBkYXRhIHN0cnVjdHVyZXMgYmVpbmcgbWFuaXB1bGF0ZWQgd2l0aGluIHRoZXNlIGZ1bmN0aW9ucy4gYGllZWU4MDIxMV9uZXh0X3R4cWAgaXMgbGlrZWx5IHJldHVybmluZyBhIGhhbmRsZSB0byB0aGUgbmV4dCBhdmFpbGFibGUgdHJhbnNtaXQgcXVldWUsIHByZXN1bWFibHkgYmFzZWQgb24gc29tZSBzY2hlZHVsaW5nIHBvbGljeS4gU28sIHdoYXQncyB0aGUgbG9naWMgYmVoaW5kIHRoYXQgcG9saWN5PyBJcyBpdCBzdHJpY3RseSBRb1MtYmFzZWQ/IElzIHRoZXJlIHNvbWUgcm91bmQtcm9iaW4gaW52b2x2ZWQ/IEhvdyBkb2VzIHRoaXMgaW50ZXJhY3Qgd2l0aCB0aGUgdmFyaW91cyBoYXJkd2FyZSBxdWV1ZXMgYW5kIHRoZWlyIGNhcGFiaWxpdGllcz8gQXJlIHdlIGxvb2tpbmcgYXQgYSBzeXN0ZW0td2lkZSB0cmFmZmljIHNjaGVkdWxlciB0aGF0IHRoZXNlIGZ1bmN0aW9ucyBhcmUgcGx1Z2dlZCBpbnRvLCBvciBpcyBpdCBtb3JlIGxvY2FsaXplZCB0byBhIHNwZWNpZmljIGRyaXZlciBvciBkZXZpY2U/XG5cbkFuZCB0aGVuIGBpZWVlODAyMTFfdHhxX3NjaGVkdWxlX3N0YXJ0YCDigJMgdGhpcyBpcyB3aGVyZSB0aGUgKmFjdGlvbiogaXMuIEl0J3MgdGhlIHBvaW50IHdoZXJlIHRyYW5zbWlzc2lvbiBhY3R1YWxseSBiZWdpbnMuIEkgbmVlZCB0byBpZGVudGlmeSB0aGUgaW5wdXRzIHRvIHRoaXMgZnVuY3Rpb24g4oCTIGFyZSB3ZSB0YWxraW5nIGFib3V0IHJhdGUgYWRhcHRhdGlvbiwgcG93ZXIgbWFuYWdlbWVudCwgYmFja29mZiBtYW5hZ2VtZW50LCBvciBvdGhlciBjb21wbGV4LCBwZXItcXVldWUgY29uc2lkZXJhdGlvbnM/IFdoYXQncyB0aGUgcmVsYXRpb25zaGlwIG9mIHRoaXMgZnVuY3Rpb24gdG8gYW55IGhhcmR3YXJlLXNwZWNpZmljIERNQSBvciBkZXNjcmlwdG9yIG1hbmFnZW1lbnQsIHRoZSBsb3dlciBsYXllci4gSSBuZWVkIHRvIGNvbnNpZGVyIGFsbCBvZiB0aGUgcG9zc2liaWxpdGllcyB0aGF0IGNvdWxkIGFyaXNlLiBJJ20gaW1hZ2luaW5nIGhvdyB0aGVzZSBmdW5jdGlvbnMgYXJlIGJlaW5nIGludGVydHdpbmVkIHdpdGggb3RoZXIgdGFza3MgdGhhdCBjb3VsZCBiZSB0YWtpbmcgcGxhY2Ugb24gYW4gODAyLjExIG5ldHdvcmsuXG5cblRoaXMgYW5hbHlzaXMgd2lsbCBnaXZlIG1lIGEgY2xlYXIgcGljdHVyZSBvZiBob3cgdGhlIG92ZXJhbGwgdHJhbnNtaXNzaW9uIHByb2Nlc3Mgd29ya3MgZm9yIHRoaXMgcGFydGljdWxhciA4MDIuMTEgaW1wbGVtZW50YXRpb24uIEkgc2hvdWxkIGJlIGFibGUgdG8gaWRlbnRpZnkgYm90dGxlbmVja3MsIHBvdGVudGlhbCBhcmVhcyBmb3Igb3B0aW1pemF0aW9uLCBvciBldmVuIHBvdGVudGlhbCBidWdzIG9yIHJhY2UgY29uZGl0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTA2MiwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTc6NDM6MDkuNTM0NTcxMzEzWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMDI0NzQwMTE4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImllZWU4MDIxMV9uZXh0X3R4cXxpZWVlODAyMTFfdHhxX3NjaGVkdWxlX3N0YXJ0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0X3J4LmM9MzM3NT1zdGF0aWMgdm9pZCBhdGgxMGtfaHR0X3J4X3R4X2ZldGNoX2luZChzdHJ1Y3QgYXRoMTBrICphciwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0X3J4LmMtMzQ2NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2h0dF9yeC5jOjM0NjY6XFx0XFx0aWVlZTgwMjExX3R4cV9zY2hlZHVsZV9zdGFydChodywgdHhxLVxcdTAwM2VhYyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHRfcnguYy0zNDY3LVxcdFxcdG1heV90eCA9IGllZWU4MDIxMV90eHFfbWF5X3RyYW5zbWl0KGh3LCB0eHEpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYz00NDc1PXN0YXRpYyBpbnQgYXRoMTBrX21hY19zY2hlZHVsZV90eHEoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHUzMiBhYylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtNDQ3OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jOjQ0ODA6XFx0aWVlZTgwMjExX3R4cV9zY2hlZHVsZV9zdGFydChodywgYWMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM6NDQ4MTpcXHR3aGlsZSAoKHR4cSA9IGllZWU4MDIxMV9uZXh0X3R4cShodywgYWMpKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtNDQ4Mi1cXHRcXHR3aGlsZSAoYXRoMTBrX21hY190eF9jYW5fcHVzaChodywgdHhxKSkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYz00NzU3PXN0YXRpYyB2b2lkIGF0aDEwa19tYWNfb3Bfd2FrZV90eF9xdWV1ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtNDc2OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jOjQ3NzA6XFx0aWVlZTgwMjExX3R4cV9zY2hlZHVsZV9zdGFydChodywgYWMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM6NDc3MTpcXHR0eHEgPSBpZWVlODAyMTFfbmV4dF90eHEoaHcsIGFjKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTQ3NzItXFx0aWYgKCF0eHEpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jPTE5ODA9dm9pZCBhdGhfdHhxX3NjaGVkdWxlKHN0cnVjdCBhdGhfc29mdGMgKnNjLCBzdHJ1Y3QgYXRoX3R4cSAqdHhxKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYy0xOTkzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM6MTk5NDpcXHRpZWVlODAyMTFfdHhxX3NjaGVkdWxlX3N0YXJ0KGh3LCB0eHEtXFx1MDAzZW1hYzgwMjExX3FudW0pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtMTk5NS1cXHRzcGluX2xvY2tfYmgoXFx1MDAyNnNjLVxcdTAwM2VjaGFuX2xvY2spO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYy0xOTk5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM6MjAwMDpcXHR3aGlsZSAoKHF1ZXVlID0gaWVlZTgwMjExX25leHRfdHhxKGh3LCB0eHEtXFx1MDAzZW1hYzgwMjExX3FudW0pKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtMjAwMS1cXHRcXHRib29sIGZvcmNlO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jPTU2ND1tdDc2X3R4cV9zY2hlZHVsZV9saXN0KHN0cnVjdCBtdDc2X3BoeSAqcGh5LCBlbnVtIG10NzZfdHhxX2lkIHFpZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYy01NzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jOjU3NjpcXHRcXHR0eHEgPSBpZWVlODAyMTFfbmV4dF90eHEocGh5LVxcdTAwM2VodywgcWlkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3R4LmMtNTc3LVxcdFxcdGlmICghdHhxKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni90eC5jPTYzOD12b2lkIG10NzZfdHhxX3NjaGVkdWxlKHN0cnVjdCBtdDc2X3BoeSAqcGh5LCBlbnVtIG10NzZfdHhxX2lkIHFpZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYy02NDgtXFx0ZG8ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYzo2NDk6XFx0XFx0aWVlZTgwMjExX3R4cV9zY2hlZHVsZV9zdGFydChwaHktXFx1MDAzZWh3LCBxaWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvdHguYy02NTAtXFx0XFx0bGVuID0gbXQ3Nl90eHFfc2NoZWR1bGVfbGlzdChwaHksIHFpZCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYz00ODI2PXN0YXRpYyB2b2lkIHJ0dzg5X2NvcmVfdHhxX3NjaGVkdWxlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggYWMsIGJvb2wgKnJlaW52b2tlKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNDgzNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzo0ODM3OlxcdGllZWU4MDIxMV90eHFfc2NoZWR1bGVfc3RhcnQoaHcsIGFjKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzo0ODM4OlxcdHdoaWxlICgodHhxID0gaWVlZTgwMjExX25leHRfdHhxKGh3LCBhYykpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNDgzOS1cXHRcXHRydHd0eHEgPSAoc3RydWN0IHJ0dzg5X3R4cSAqKXR4cS1cXHUwMDNlZHJ2X3ByaXY7XFxuLS1cXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTExNi0gKiBvYnRhaW4gdGhlIG5leHQgcXVldWUgdG8gcHVsbCBmcmFtZXMgZnJvbSwgdGhlIGRyaXZlciBjYWxsc1xcbmluY2x1ZGUvbmV0L21hYzgwMjExLmg6MTE3OiAqIGllZWU4MDIxMV9uZXh0X3R4cSgpLiBUaGUgZHJpdmVyIGlzIHRoZW4gZXhwZWN0ZWQgdG8gcmV0dXJuIHRoZSB0eHEgdXNpbmdcXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTExOC0gKiBpZWVlODAyMTFfcmV0dXJuX3R4cSgpLlxcbi0tXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaD03NzM2PXZvaWQgaWVlZTgwMjExX3VucmVzZXJ2ZV90aWQoc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSwgdTggdGlkKTtcXG4tLVxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNzc0Mi0gKiBAdHhxOiBwb2ludGVyIG9idGFpbmVkIGZyb20gc3RhdGlvbiBvciB2aXJ0dWFsIGludGVyZmFjZSwgb3IgZnJvbVxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmg6Nzc0MzogKlxcdGllZWU4MDIxMV9uZXh0X3R4cSgpXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC03NzQ0LSAqXFxuLS1cXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oPTc3NTg9c3RydWN0IHNrX2J1ZmYgKmllZWU4MDIxMV90eF9kZXF1ZXVlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbi0tXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC03NzY5LSAqIEB0eHE6IHBvaW50ZXIgb2J0YWluZWQgZnJvbSBzdGF0aW9uIG9yIHZpcnR1YWwgaW50ZXJmYWNlLCBvciBmcm9tXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaDo3NzcwOiAqXFx0aWVlZTgwMjExX25leHRfdHhxKClcXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTc3NzEtICpcXG4tLVxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmg9Nzc5NT12b2lkIGllZWU4MDIxMV9oYW5kbGVfd2FrZV90eF9xdWV1ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNzc5OC0vKipcXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oOjc3OTk6ICogaWVlZTgwMjExX25leHRfdHhxIC0gZ2V0IG5leHQgdHggcXVldWUgdG8gcHVsbCBwYWNrZXRzIGZyb21cXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTc4MDAtICpcXG4tLVxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNzgwNy0gKi9cXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oOjc4MDg6c3RydWN0IGllZWU4MDIxMV90eHEgKmllZWU4MDIxMV9uZXh0X3R4cShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgdTggYWMpO1xcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNzgwOS1cXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTc4MTAtLyoqXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaDo3ODExOiAqIGllZWU4MDIxMV90eHFfc2NoZWR1bGVfc3RhcnQgLSBzdGFydCBuZXcgc2NoZWR1bGluZyByb3VuZCBmb3IgVFhRc1xcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNzgxMi0gKlxcbi0tXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC03ODE1LSAqXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaDo3ODE2OiAqIFNob3VsZCBiZSBjYWxsZWQgYmVmb3JlIGllZWU4MDIxMV9uZXh0X3R4cSgpIG9yIGllZWU4MDIxMV9yZXR1cm5fdHhxKCkuXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC03ODE3LSAqIFRoZSBkcml2ZXIgbXVzdCBub3QgY2FsbCBtdWx0aXBsZSBUWFEgc2NoZWR1bGluZyByb3VuZHMgY29uY3VycmVudGx5LlxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNzgxOC0gKi9cXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oOjc4MTk6dm9pZCBpZWVlODAyMTFfdHhxX3NjaGVkdWxlX3N0YXJ0KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCB1OCBhYyk7XFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC03ODIwLVxcbi0tXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaD03ODQyPWllZWU4MDIxMV9zY2hlZHVsZV90eHEoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfdHhxICp0eHEpXFxuLS1cXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTc4NDctLyoqXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaDo3ODQ4OiAqIGllZWU4MDIxMV9yZXR1cm5fdHhxIC0gcmV0dXJuIGEgVFhRIHByZXZpb3VzbHkgYWNxdWlyZWQgYnkgaWVlZTgwMjExX25leHRfdHhxKClcXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTc4NDktICpcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jPTQxMDE9aWVlZTgwMjExX3R4cV9rZWVwX2FjdGl2ZShzdHJ1Y3QgdHhxX2luZm8gKnR4cWkpXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy00MTE0LVxcbm5ldC9tYWM4MDIxMS90eC5jOjQxMTU6c3RydWN0IGllZWU4MDIxMV90eHEgKmllZWU4MDIxMV9uZXh0X3R4cShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgdTggYWMpXFxubmV0L21hYzgwMjExL3R4LmMtNDExNi17XFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy00MTc3LX1cXG5uZXQvbWFjODAyMTEvdHguYzo0MTc4OkVYUE9SVF9TWU1CT0woaWVlZTgwMjExX25leHRfdHhxKTtcXG5uZXQvbWFjODAyMTEvdHguYy00MTc5LVxcbm5ldC9tYWM4MDIxMS90eC5jPTQxODA9dm9pZCBfX2llZWU4MDIxMV9zY2hlZHVsZV90eHEoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy00MTk5LVxcdFxcdCAqIGdldCBpbW1lZGlhdGVseSBtb3ZlZCB0byB0aGUgYmFjayBvZiB0aGUgbGlzdCBvbiB0aGUgbmV4dFxcbm5ldC9tYWM4MDIxMS90eC5jOjQyMDA6XFx0XFx0ICogY2FsbCB0byBpZWVlODAyMTFfbmV4dF90eHEoKS5cXG5uZXQvbWFjODAyMTEvdHguYy00MjAxLVxcdFxcdCAqL1xcbi0tXFxubmV0L21hYzgwMjExL3R4LmM9NDM0Mj1FWFBPUlRfU1lNQk9MKGllZWU4MDIxMV90eHFfbWF5X3RyYW5zbWl0KTtcXG5uZXQvbWFjODAyMTEvdHguYy00MzQzLVxcbm5ldC9tYWM4MDIxMS90eC5jOjQzNDQ6dm9pZCBpZWVlODAyMTFfdHhxX3NjaGVkdWxlX3N0YXJ0KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCB1OCBhYylcXG5uZXQvbWFjODAyMTEvdHguYy00MzQ1LXtcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jLTQzNTktfVxcbm5ldC9tYWM4MDIxMS90eC5jOjQzNjA6RVhQT1JUX1NZTUJPTChpZWVlODAyMTFfdHhxX3NjaGVkdWxlX3N0YXJ0KTtcXG5uZXQvbWFjODAyMTEvdHguYy00MzYxLVxcbi0tXFxubmV0L21hYzgwMjExL3V0aWwuYz0zMDU9dm9pZCBpZWVlODAyMTFfaGFuZGxlX3dha2VfdHhfcXVldWUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5uZXQvbWFjODAyMTEvdXRpbC5jLTMxMy1cXG5uZXQvbWFjODAyMTEvdXRpbC5jOjMxNDpcXHQvKiBVc2UgaWVlZTgwMjExX25leHRfdHhxKCkgZm9yIGFpcnRpbWUgZmFpcm5lc3MgYWNjb3VudGluZyAqL1xcbm5ldC9tYWM4MDIxMS91dGlsLmM6MzE1OlxcdGllZWU4MDIxMV90eHFfc2NoZWR1bGVfc3RhcnQoaHcsIHR4cS1cXHUwMDNlYWMpO1xcbm5ldC9tYWM4MDIxMS91dGlsLmM6MzE2OlxcdHdoaWxlICgocXVldWUgPSBpZWVlODAyMTFfbmV4dF90eHEoaHcsIHR4cS1cXHUwMDNlYWMpKSkge1xcbm5ldC9tYWM4MDIxMS91dGlsLmMtMzE3LVxcdFxcdHdha2VfdHhfcHVzaF9xdWV1ZShsb2NhbCwgc2RhdGEsIHF1ZXVlKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTc6NDM6MTIuNTU5MzE2MzkxWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQzODc3NTk4MDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBtYWM4MDIxMSBTdWJzeXN0ZW0gYW5kIGl0cyBGdXp6aW5nIExhbmRzY2FwZSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBmb2N1cyBpcyBvbiB0aGVzZSBmdW5jdGlvbnM6IGBpZWVlODAyMTFfbmV4dF90eHFgLCBgaWVlZTgwMjExX3R4cV9zY2hlZHVsZV9zdGFydGAsIGFuZCBgaWVlZTgwMjExX2hhbmRsZV93YWtlX3R4X3F1ZXVlYC4gVGhleSdyZSBhbGwgZmlybWx5IHJvb3RlZCBpbiB0aGUgYG5ldC9tYWM4MDIxMWAgY29yZSwgc3BlY2lmaWNhbGx5IHdpdGhpbiBgdHguY2AgYW5kIGB1dGlsLmNgLiBUaGF0J3MgdGhlIGhlYXJ0IG9mIHRoZSBtYXR0ZXIuIEFuZCBJIHNlZSB0aGF0IGBpZWVlODAyMTFfaGFuZGxlX3dha2VfdHhfcXVldWVgIGNhbGxzIHRoZSBvdGhlciB0d28sIHdoaWNoIGlzIGFuIGltcG9ydGFudCBpbnRlcmRlcGVuZGVuY3kgdG8gbm90ZS5cblxuTm93LCBjb25zaWRlcmluZyB0aGUgZnV6emluZyBhc3BlY3QsIHN5emthbGxlciBpcyBhY3RpdmVseSB0YXJnZXRpbmcgbWFjODAyMTEuIEl0J3MgZG9pbmcgdGhpcyBlaXRoZXIgdGhyb3VnaCBgbWFjODAyMTFfaHdzaW1gLCB3aGljaCBpcyBlc3NlbnRpYWxseSBhIHNvZnR3YXJlIGVtdWxhdGlvbiBvZiBhIHdpcmVsZXNzIGRldmljZSwgb3IgdmlhIHRoZSBzdGFuZGFyZCBpbnRlcmZhY2VzIHdlJ3JlIGFsbCBmYW1pbGlhciB3aXRoOiBubDgwMjExLCBzb2NrZXQgaW50ZXJmYWNlcywgYW5kIHZpcnR1YWwgZGV2aWNlcy4gVGhhdCdzIGEgZ29vZCBhcHByb2FjaCB0byBlbnN1cmUgYnJvYWQgY292ZXJhZ2UuXG5cblRoZSBuZXh0IGNyaXRpY2FsIHN0ZXAgaXMgdG8gdmVyaWZ5IHRoZSBjb25uZWN0aW9uIGJldHdlZW4gYG1hYzgwMjExX2h3c2ltYCBhbmQgbWFjODAyMTEgaXRzZWxmLiBJJ2QgZXhwZWN0IGEgZGVwZW5kZW5jeSwgYW5kIGluZGVlZCwgYE1BQzgwMjExX0hXU0lNYCByZWxpZXMgb24gYE1BQzgwMjExYC4gVGhhdCdzIHdoYXQgSSB0aG91Z2h0LCBidXQgSSdsbCBkb3VibGUtY2hlY2sgdGhlIGBLY29uZmlnYCBmb3IgYE1BQzgwMjExX0hXU0lNYCBqdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbi4gSXQncyBhbHdheXMgZ29vZCB0byBiZSB0aG9yb3VnaCB3aGVuIHlvdSdyZSBkZWFsaW5nIHdpdGggdGhlc2Ugc3lzdGVtcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI5MTAsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTc6NDM6MTYuOTQ3MDgwNjQ1WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzkxMTU5NDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1BQzgwMjExX0hXU0lNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWc6MTpjb25maWcgTUFDODAyMTFfSFdTSU1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWctMi1cXHR0cmlzdGF0ZSBcXFwiU2ltdWxhdGVkIHJhZGlvIHRlc3RpbmcgdG9vbCBmb3IgbWFjODAyMTFcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE3OjQzOjE3LjEyNjIwMTc0MloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2MDA3NDM0MDI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTUFDODAyMTEgUGF0Y2ggZm9yIFRYIFF1ZXVlIFNjaGVkdWxpbmcqKlxuXG5Pa2F5LCBzbyB0aGUgaW5pdGlhbCBmb2N1cyBpcyBgTUFDODAyMTFgIGFzIHRoZSBrZXkgY29uZmlndXJhdGlvbiBvcHRpb24uIFJpZ2h0LCBpdCBkZXBlbmRzIG9uIGBDRkc4MDIxMWAuIENvbmZpcm1lZCBieSByZS1leGFtaW5pbmcgYG5ldC9tYWM4MDIxMS9LY29uZmlnYC4gU28sIGBNQUM4MDIxMWAgYW5kIGBDRkc4MDIxMWAgYXJlIHRoZSByZXF1aXJlZCBjb25maWdzLlxuXG5Ob3csIGxldCdzIGRpdmUgaW50byB0aGlzIHBhdGNoLiBUaGUgZGlmZiBzaG93cyBtb2RpZmljYXRpb25zIHRvIGBpZWVlODAyMTFfaS5oYCBhbmQgYHR4LmNgLiBJbiBgaWVlZTgwMjExX2kuaGAsIHRoZXkndmUgYWRkZWQgYHNjaGVkdWxlX29wZW5gIGFzIGEgYm9vbGVhbiBhbG9uZ3NpZGUgYHNjaGVkdWxlX3JvdW5kYCB3aXRoaW4gdGhlIGBpZWVlODAyMTFfbG9jYWxgIHN0cnVjdC4gVGhlIGNvcmUgY2hhbmdlIGlzIGluIGB0eC5jYCB3aXRoIHRoZSBpbnRyb2R1Y3Rpb24gb2YgYHNjaGVkdWxlX29wZW5gLiBQcmV2aW91c2x5LCB0aGUgY29kZSBjaGVja2VkIGAhbG9jYWwtXHUwMDNlc2NoZWR1bGVfcm91bmRbYWNdYCBpbiBgaWVlZTgwMjExX25leHRfdHhxYCwgd2hpY2ggbm93IGNoZWNrcyBgIWxvY2FsLVx1MDAzZXNjaGVkdWxlX29wZW5bYWNdYC4gVGhpcyBpcyB0aGUgaW1wb3J0YW50IGRpc3RpbmN0aW9uIGhlcmUuXG5cblRoZSByYXRpb25hbGUgYmVoaW5kIHRoZSBjaGFuZ2UgaXMgY2xlYXI6ICB0aGUgcHJldmlvdXMgYmVoYXZpb3Igd2FzIHRvIHJlc2V0IGBzY2hlZHVsZV9yb3VuZGAgdG8gemVybyBpZiB0aGUgYHNjaGVkdWxlX2FpcnRpbWVfY2hlY2tgIGZhaWxlZC4gVGhhdCdzIG5vdCBpZGVhbCBiZWNhdXNlIHRoZSBgc2NoZWR1bGVfcm91bmRgIGZpZWxkIGNhbiBiZSB1c2VkIGZvciByb3VuZCBkZXRlY3Rpb24gb3IgZGVmaWNpdCBjYWxjdWxhdGlvbiBhcyB3ZWxsLiBSZXNldHRpbmcgaXQgY291bGQgaW50cm9kdWNlIHN1YnRsZSBpc3N1ZXMgd2l0aCB0aGUgcm91bmQgY291bnRlci4gVGhlIG5ldyBgc2NoZWR1bGVfb3BlbmAgZmxhZyBwcm92aWRlcyBhIHNlcGFyYXRlIHdheSB0byB0cmFjayB3aGV0aGVyIHNjaGVkdWxpbmcgaXMgXCJvcGVuXCIgd2l0aG91dCBpbnRlcmZlcmluZyB3aXRoIHRoZSBwcm9wZXIgb3BlcmF0aW9uIG9mIGBzY2hlZHVsZV9yb3VuZGAuICBgc2NoZWR1bGVfb3BlbmAgaXMgbm93IGRpcmVjdGx5IHNldCB0byB0aGUgcmVzdWx0IG9mIGBzY2hlZHVsZV9haXJ0aW1lX2NoZWNrYC5cblxuSXQgbWFrZXMgc2Vuc2U7IHRoaXMgY2hhbmdlIG1vZGlmaWVzIHN0YXRlIG1hbmFnZW1lbnQgd2l0aGluIHRoZSBUWCBxdWV1ZSBzY2hlZHVsaW5nIGxvZ2ljIGluIG1hYzgwMjExLiBUaGlzIGlzIGRlZmluaXRlbHkgc29tZXRoaW5nIHRoYXQgY291bGQgYmUgdHJpZ2dlcmVkIGR1cmluZyB2aXJ0dWFsaXplZCBmdXp6aW5nLCBsaWtlIHdpdGggbWFjODAyMTFfaHdzaW0sIG5ldGxpbmsgLyBubDgwMjExLCBvciBkdXJpbmcgd2lmaSB0cmFuc21pc3Npb24uXG5cbkxldCBtZSBub3cgcGlucG9pbnQgc29tZSBrZXkgZnVuY3Rpb25zIGludm9sdmVkOiBgaWVlZTgwMjExX25leHRfdHhxYCBhbmQgYGllZWU4MDIxMV90eHFfc2NoZWR1bGVfc3RhcnRgLlxuXG5JIHNob3VsZCBwcm9iYWJseSBsb29rIGZvciBvdGhlciBjb2RlIHdoaWNoIHVzZXMgdGhlIGFkZGVkIGBzY2hlZHVsZV9vcGVuYCBmaWVsZCBvciB0aGUgb3JpZ2luYWwgYHNjaGVkdWxlX3JvdW5kYCBmaWVsZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbXBsZXRlIGltcGFjdCBvbiB0aGUgVFggcXVldWUgc2NoZWR1bGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM2MTAsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDk3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE3OjQzOjIzLjEzMzYzOTg4OVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzIzNDY2NDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2NoZWR1bGVfcm91bmRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L21hYzgwMjExL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaD05NjM9ZW51bSB0eHFfaW5mb19mbGFncyB7XFxuLS1cXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC05NzctICogQHNjaGVkdWxlX29yZGVyOiB1c2VkIHdpdGggaWVlZTgwMjExX2xvY2FsLVxcdTAwM2VhY3RpdmVfdHhxc1xcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oOjk3ODogKiBAc2NoZWR1bGVfcm91bmQ6IGNvdW50ZXIgdG8gcHJldmVudCBpbmZpbml0ZSBsb29wcyBvbiBUWFEgc2NoZWR1bGluZ1xcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTk3OS0gKiBAZmxhZ3M6IFRYUSBmbGFncyBmcm9tIFxcdTAwMjZlbnVtIHR4cV9pbmZvX2ZsYWdzXFxuLS1cXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaD05ODI9c3RydWN0IHR4cV9pbmZvIHtcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTk4Ni1cXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaDo5ODc6XFx0dTE2IHNjaGVkdWxlX3JvdW5kO1xcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTk4OC1cXHRzdHJ1Y3QgbGlzdF9oZWFkIHNjaGVkdWxlX29yZGVyO1xcbi0tXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg9MTQ1Nz1zdHJ1Y3QgaWVlZTgwMjExX2xvY2FsIHtcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTE0NjktXFx0c3RydWN0IGxpc3RfaGVhZCBhY3RpdmVfdHhxc1tJRUVFODAyMTFfTlVNX0FDU107XFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg6MTQ3MDpcXHR1MTYgc2NoZWR1bGVfcm91bmRbSUVFRTgwMjExX05VTV9BQ1NdO1xcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTE0NzEtXFx0Ym9vbCBzY2hlZHVsZV9vcGVuW0lFRUU4MDIxMV9OVU1fQUNTXTtcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jPTQxMTU9c3RydWN0IGllZWU4MDIxMV90eHEgKmllZWU4MDIxMV9uZXh0X3R4cShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgdTggYWMpXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy00MTY2LVxcbm5ldC9tYWM4MDIxMS90eC5jOjQxNjc6XFx0aWYgKHR4cWktXFx1MDAzZXNjaGVkdWxlX3JvdW5kID09IGxvY2FsLVxcdTAwM2VzY2hlZHVsZV9yb3VuZFthY10pXFxubmV0L21hYzgwMjExL3R4LmMtNDE2OC1cXHRcXHRnb3RvIG91dDtcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jLTQxNzAtXFx0bGlzdF9kZWxfaW5pdChcXHUwMDI2dHhxaS1cXHUwMDNlc2NoZWR1bGVfb3JkZXIpO1xcbm5ldC9tYWM4MDIxMS90eC5jOjQxNzE6XFx0dHhxaS1cXHUwMDNlc2NoZWR1bGVfcm91bmQgPSBsb2NhbC1cXHUwMDNlc2NoZWR1bGVfcm91bmRbYWNdO1xcbm5ldC9tYWM4MDIxMS90eC5jLTQxNzItXFx0cmV0ID0gXFx1MDAyNnR4cWktXFx1MDAzZXR4cTtcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jPTQzNDQ9dm9pZCBpZWVlODAyMTFfdHhxX3NjaGVkdWxlX3N0YXJ0KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCB1OCBhYylcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jLTQzNTItXFx0aWYgKGxvY2FsLVxcdTAwM2VzY2hlZHVsZV9vcGVuW2FjXSkge1xcbm5ldC9tYWM4MDIxMS90eC5jOjQzNTM6XFx0XFx0bG9jYWwtXFx1MDAzZXNjaGVkdWxlX3JvdW5kW2FjXSsrO1xcbm5ldC9tYWM4MDIxMS90eC5jOjQzNTQ6XFx0XFx0aWYgKCFsb2NhbC1cXHUwMDNlc2NoZWR1bGVfcm91bmRbYWNdKVxcbm5ldC9tYWM4MDIxMS90eC5jOjQzNTU6XFx0XFx0XFx0bG9jYWwtXFx1MDAzZXNjaGVkdWxlX3JvdW5kW2FjXSsrO1xcbm5ldC9tYWM4MDIxMS90eC5jLTQzNTYtXFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxNzo0MzoyMy4yMDU5OTI0MDhaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Mzc4Njk3NzI1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBTY2hlZHVsaW5nIEJ1ZyBpbiBtYWM4MDIxMSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYml0IG9mIGNvZGU6IGB0eHFpLVx1MDAzZXNjaGVkdWxlX3JvdW5kID09IGxvY2FsLVx1MDAzZXNjaGVkdWxlX3JvdW5kW2FjXWAgaW5zaWRlIGBpZWVlODAyMTFfbmV4dF90eHFgLiBJbnRlcmVzdGluZyEgSXQgbG9va3MgbGlrZSB0aGVyZSB3YXMgYSBuYXN0eSBidWcgd2hlcmUgYHNjaGVkdWxlX3JvdW5kYCBiZWluZyBpbml0aWFsaXplZCB0byB6ZXJvIGNhdXNlZCBzb21lIGlzc3Vlcy4gSXQgZWl0aGVyIGNvbmZsaWN0ZWQgd2l0aCB1bmluaXRpYWxpemVkIHZhbHVlcyBmb3IgYHR4cWktXHUwMDNlc2NoZWR1bGVfcm91bmRgLCBvciBpdCBjYXVzZWQgcHJvYmxlbXMgd2hlbiBzY2hlZHVsaW5nIHdhcyB0dXJuZWQgb2ZmIGFuZCB0aGVuIGJhY2sgb24uIEkgbmVlZCB0byBrZWVwIGluIG1pbmQgdGhhdCBJJ20gZGVhbGluZyB3aXRoIGBpZWVlODAyMTFfbmV4dF90eHFgIGFuZCBgaWVlZTgwMjExX3R4cV9zY2hlZHVsZV9zdGFydGAuIFRob3NlIGFyZSB0aGUgZnVuY3Rpb25zIHRoYXQgd2VyZSBtb2RpZmllZCB0byBhZGRyZXNzIHRoaXMuXG5cblJpZ2h0LCBsZXQncyBzZWUgaG93IHRoaXMgcGxheXMgb3V0IGluIHRlcm1zIG9mIGZ1enppbmcuIFRoYW5rZnVsbHksIFdvcnRoRnV6emluZyBjb25maXJtcyB0aGlzIGlzIGEgZ29vZCB0YXJnZXQuIE1hYzgwMjExIGlzIGEgY2VudHJhbCBwaWVjZSwgcGFydCBvZiB0aGUgY29yZSBJRUVFIDgwMi4xMSBzdGFjayB1c2VkIGJ5IHZhcmlvdXMgZHJpdmVycyBhbmQgdGVzdCBoYXJuZXNzZXMsIGluY2x1ZGluZyBtYWM4MDIxMV9od3NpbSwgc28gaXQgc2hvdWxkIGJlIGVhc3kgdG8gcmVhY2guIEFuZCB5ZXMsIGl0J3MgcmVhY2hhYmxlIGluIFFFTVUgYW5kIHRoZSBzdGFuZGFyZCBmdXp6aW5nIGVudmlyb25tZW50cy4gRXhjZWxsZW50LlxuXG5UaGUgZm9jdXMgaGVyZSBpcyBjbGVhcmx5IG9uIGBpZWVlODAyMTFfbmV4dF90eHFgIGFuZCBgaWVlZTgwMjExX3R4cV9zY2hlZHVsZV9zdGFydGAsIHdoaWNoIG1ha2VzIHNlbnNlIGdpdmVuIHRoZSBpbml0aWFsIGNvZGUgc25pcHBldC5cblxuTm93LCBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnRzLiBUaGUgcmVsZXZhbnQgY29uZmlnIG9wdGlvbnMgYXJlIGBNQUM4MDIxMWAgYW5kIGBDRkc4MDIxMWAuIFRoYXQgaXMgaW1wb3J0YW50IGluZm9ybWF0aW9uIHRoYXQgSSBuZWVkIHRvIGtlZXAgaW4gbWluZC5cblxuRmluYWxseSwgSSdsbCB0YWtlIGEgcXVpY2sgbG9vayBhdCBgbmV0L21hYzgwMjExL01ha2VmaWxlYCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBkZXBlbmRlbmNpZXMgb3IgcmVxdWlyZW1lbnRzIEkgbmVlZCB0byBiZSBhd2FyZSBvZiBiZWZvcmUgSSBkaWcgaW4gZGVlcGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjE4OCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxNzo0MzoyNi45OTI5NzI4NDNaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg1MTY3NTc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInR4Lm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L21hYzgwMjExL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbWFjODAyMTEvTWFrZWZpbGU9NT1tYWM4MDIxMS15IDo9IFxcXFxcXG4tLVxcbm5ldC9tYWM4MDIxMS9NYWtlZmlsZS0xMi1cXHRzY2FuLm8gb2ZmY2hhbm5lbC5vIFxcXFxcXG5uZXQvbWFjODAyMTEvTWFrZWZpbGU6MTM6XFx0aHQubyBhZ2ctdHgubyBhZ2ctcngubyBcXFxcXFxubmV0L21hYzgwMjExL01ha2VmaWxlLTE0LVxcdHZodC5vIFxcXFxcXG4tLVxcbm5ldC9tYWM4MDIxMS9NYWtlZmlsZS0yOC1cXHRzcGVjdG1nbXQubyBcXFxcXFxubmV0L21hYzgwMjExL01ha2VmaWxlOjI5OlxcdHR4Lm8gXFxcXFxcbm5ldC9tYWM4MDIxMS9NYWtlZmlsZS0zMC1cXHRrZXkubyBcXFxcXFxuLS1cXG5uZXQvbWFjODAyMTEvYWdnLXR4LmM9NzU0PUVYUE9SVF9TWU1CT0woaWVlZTgwMjExX3N0YXJ0X3R4X2JhX3Nlc3Npb24pO1xcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYy03NTUtXFxubmV0L21hYzgwMjExL2FnZy10eC5jOjc1NjpzdGF0aWMgdm9pZCBpZWVlODAyMTFfYWdnX3R4X29wZXJhdGlvbmFsKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYy03NTctXFx0XFx0XFx0XFx0XFx0IHN0cnVjdCBzdGFfaW5mbyAqc3RhLCB1MTYgdGlkKVxcbi0tXFxubmV0L21hYzgwMjExL2FnZy10eC5jPTc5OT12b2lkIGllZWU4MDIxMV9zdGFydF90eF9iYV9jYihzdHJ1Y3Qgc3RhX2luZm8gKnN0YSwgaW50IHRpZCxcXG4tLVxcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYy04MjAtXFx0aWYgKHRlc3RfYml0KEhUX0FHR19TVEFURV9SRVNQT05TRV9SRUNFSVZFRCwgXFx1MDAyNnRpZF90eC1cXHUwMDNlc3RhdGUpKVxcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYzo4MjE6XFx0XFx0aWVlZTgwMjExX2FnZ190eF9vcGVyYXRpb25hbChsb2NhbCwgc3RhLCB0aWQpO1xcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYy04MjItfVxcbi0tXFxubmV0L21hYzgwMjExL2FnZy10eC5jPTk3Nz12b2lkIGllZWU4MDIxMV9wcm9jZXNzX2FkZGJhX3Jlc3Aoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxuLS1cXG5uZXQvbWFjODAyMTEvYWdnLXR4LmMtMTA1MS1cXHRcXHRpZiAodGVzdF9iaXQoSFRfQUdHX1NUQVRFX0RSVl9SRUFEWSwgXFx1MDAyNnRpZF90eC1cXHUwMDNlc3RhdGUpKVxcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYzoxMDUyOlxcdFxcdFxcdGllZWU4MDIxMV9hZ2dfdHhfb3BlcmF0aW9uYWwobG9jYWwsIHN0YSwgdGlkKTtcXG5uZXQvbWFjODAyMTEvYWdnLXR4LmMtMTA1My1cXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYz0zNzA4PXN0YXRpYyBpbnQgaWVlZTgwMjExX3NldF90eF9wb3dlcihzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTM3NjEtXFxubmV0L21hYzgwMjExL2NmZy5jOjM3NjI6XFx0XFx0XFx0aWYgKHR4cF90eXBlICE9IGxpbmstXFx1MDAzZWNvbmYtXFx1MDAzZXR4cG93ZXJfdHlwZSkge1xcbm5ldC9tYWM4MDIxMS9jZmcuYy0zNzYzLVxcdFxcdFxcdFxcdHVwZGF0ZV90eHBfdHlwZSA9IHRydWU7XFxubmV0L21hYzgwMjExL2NmZy5jOjM3NjQ6XFx0XFx0XFx0XFx0bGluay1cXHUwMDNlY29uZi1cXHUwMDNldHhwb3dlcl90eXBlID0gdHhwX3R5cGU7XFxubmV0L21hYzgwMjExL2NmZy5jLTM3NjUtXFx0XFx0XFx0fVxcbm5ldC9tYWM4MDIxMS9jZmcuYy0zNzY2LVxcbm5ldC9tYWM4MDIxMS9jZmcuYzozNzY3OlxcdFxcdFxcdGllZWU4MDIxMV9yZWNhbGNfdHhwb3dlcihsaW5rLCB1cGRhdGVfdHhwX3R5cGUpO1xcbm5ldC9tYWM4MDIxMS9jZmcuYy0zNzY4LVxcdFxcdH1cXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy0zNzkwLVxcdFxcdFxcdGxpbmstXFx1MDAzZXVzZXJfcG93ZXJfbGV2ZWwgPSBsb2NhbC1cXHUwMDNldXNlcl9wb3dlcl9sZXZlbDtcXG5uZXQvbWFjODAyMTEvY2ZnLmM6Mzc5MTpcXHRcXHRcXHRpZiAodHhwX3R5cGUgIT0gbGluay1cXHUwMDNlY29uZi1cXHUwMDNldHhwb3dlcl90eXBlKVxcbm5ldC9tYWM4MDIxMS9jZmcuYy0zNzkyLVxcdFxcdFxcdFxcdHVwZGF0ZV90eHBfdHlwZSA9IHRydWU7XFxubmV0L21hYzgwMjExL2NmZy5jOjM3OTM6XFx0XFx0XFx0bGluay1cXHUwMDNlY29uZi1cXHUwMDNldHhwb3dlcl90eXBlID0gdHhwX3R5cGU7XFxubmV0L21hYzgwMjExL2NmZy5jLTM3OTQtXFx0XFx0fVxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTM4MDktXFxubmV0L21hYzgwMjExL2NmZy5jOjM4MTA6XFx0XFx0XFx0aWVlZTgwMjExX3JlY2FsY190eHBvd2VyKGxpbmssIHVwZGF0ZV90eHBfdHlwZSk7XFxubmV0L21hYzgwMjExL2NmZy5jLTM4MTEtXFx0XFx0fVxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTM4MTgtXFx0XFx0XFx0c2RhdGEtXFx1MDAzZWRlZmxpbmsudXNlcl9wb3dlcl9sZXZlbCA9IGxvY2FsLVxcdTAwM2V1c2VyX3Bvd2VyX2xldmVsO1xcbm5ldC9tYWM4MDIxMS9jZmcuYzozODE5OlxcdFxcdFxcdGlmICh0eHBfdHlwZSAhPSBzZGF0YS1cXHUwMDNldmlmLmJzc19jb25mLnR4cG93ZXJfdHlwZSlcXG5uZXQvbWFjODAyMTEvY2ZnLmMtMzgyMC1cXHRcXHRcXHRcXHR1cGRhdGVfdHhwX3R5cGUgPSB0cnVlO1xcbm5ldC9tYWM4MDIxMS9jZmcuYzozODIxOlxcdFxcdFxcdHNkYXRhLVxcdTAwM2V2aWYuYnNzX2NvbmYudHhwb3dlcl90eXBlID0gdHhwX3R5cGU7XFxubmV0L21hYzgwMjExL2NmZy5jLTM4MjItXFxubmV0L21hYzgwMjExL2NmZy5jOjM4MjM6XFx0XFx0XFx0aWVlZTgwMjExX3JlY2FsY190eHBvd2VyKFxcdTAwMjZzZGF0YS1cXHUwMDNlZGVmbGluayxcXG5uZXQvbWFjODAyMTEvY2ZnLmMtMzgyNC1cXHRcXHRcXHRcXHRcXHRcXHQgdXBkYXRlX3R4cF90eXBlKTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYz0zODM1PXN0YXRpYyBpbnQgaWVlZTgwMjExX2dldF90eF9wb3dlcihzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTM4NDQtXFxubmV0L21hYzgwMjExL2NmZy5jOjM4NDU6XFx0aWYgKGxvY2FsLVxcdTAwM2VvcHMtXFx1MDAzZWdldF90eHBvd2VyIFxcdTAwMjZcXHUwMDI2XFxubmV0L21hYzgwMjExL2NmZy5jLTM4NDYtXFx0ICAgIChzZGF0YS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRUVFODAyMTFfU0RBVEFfSU5fRFJJVkVSKSlcXG5uZXQvbWFjODAyMTEvY2ZnLmM6Mzg0NzpcXHRcXHRyZXR1cm4gZHJ2X2dldF90eHBvd2VyKGxvY2FsLCBzZGF0YSwgbGlua19pZCwgZGJtKTtcXG5uZXQvbWFjODAyMTEvY2ZnLmMtMzg0OC1cXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy0zODU0LVxcdFxcdGlmIChsaW5rX2RhdGEpXFxubmV0L21hYzgwMjExL2NmZy5jOjM4NTU6XFx0XFx0XFx0KmRibSA9IGxpbmtfZGF0YS1cXHUwMDNlY29uZi1cXHUwMDNldHhwb3dlcjtcXG5uZXQvbWFjODAyMTEvY2ZnLmMtMzg1Ni1cXHRcXHRlbHNlXFxuLS1cXG5uZXQvbWFjODAyMTEvY2hhbi5jPTExODE9c3RhdGljIGludCBpZWVlODAyMTFfYXNzaWduX2xpbmtfY2hhbmN0eChzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluayxcXG4tLVxcbm5ldC9tYWM4MDIxMS9jaGFuLmMtMTIzMS1cXHRpZiAobmV3X2N0eCBcXHUwMDI2XFx1MDAyNiBpZWVlODAyMTFfY2hhbmN0eF9udW1fYXNzaWduZWQobG9jYWwsIG5ld19jdHgpIFxcdTAwM2UgMCkge1xcbm5ldC9tYWM4MDIxMS9jaGFuLmM6MTIzMjpcXHRcXHRpZWVlODAyMTFfcmVjYWxjX3R4cG93ZXIobGluaywgZmFsc2UpO1xcbm5ldC9tYWM4MDIxMS9jaGFuLmMtMTIzMy1cXHRcXHRpZWVlODAyMTFfcmVjYWxjX2NoYW5jdHhfbWluX2RlZihsb2NhbCwgbmV3X2N0eCk7XFxuLS1cXG5uZXQvbWFjODAyMTEvY2hhbi5jPTE4ODU9c3RhdGljIGludCBpZWVlODAyMTFfdmlmX3VzZV9yZXNlcnZlZF9zd2l0Y2goc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwpXFxuLS1cXG5uZXQvbWFjODAyMTEvY2hhbi5jLTIwNjUtXFxubmV0L21hYzgwMjExL2NoYW4uYzoyMDY2OlxcdFxcdFxcdGllZWU4MDIxMV9yZWNhbGNfdHhwb3dlcihsaW5rLCBmYWxzZSk7XFxubmV0L21hYzgwMjExL2NoYW4uYy0yMDY3LVxcdFxcdH1cXG4tLVxcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5jPTM1MD1JRUVFODAyMTFfSUZfRklMRShzdGF0ZSwgc3RhdGUsIExIRVgpO1xcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5jOjM1MTpJRUVFODAyMTFfSUZfTElOS19GSUxFKHR4cG93ZXIsIGNvbmYtXFx1MDAzZXR4cG93ZXIsIERFQyk7XFxubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmMtMzUyLUlFRUU4MDIxMV9JRl9MSU5LX0ZJTEUoYXBfcG93ZXJfbGV2ZWwsIGFwX3Bvd2VyX2xldmVsLCBERUMpO1xcbi0tXFxubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmM9OTgyPXN0YXRpYyB2b2lkIGFkZF9saW5rX2ZpbGVzKHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rLFxcbi0tXFxubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmMtOTg0LXtcXG5uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuYzo5ODU6XFx0REVCVUdGU19BREQoZGVudHJ5LCB0eHBvd2VyKTtcXG5uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuYy05ODYtXFx0REVCVUdGU19BREQoZGVudHJ5LCB1c2VyX3Bvd2VyX2xldmVsKTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9kcml2ZXItb3BzLmg9MTI5Mz1zdGF0aWMgaW5saW5lIHUzMiBkcnZfZ2V0X2V4cGVjdGVkX3Rocm91Z2hwdXQoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxuLS1cXG5uZXQvbWFjODAyMTEvZHJpdmVyLW9wcy5oLTEzMDUtXFxubmV0L21hYzgwMjExL2RyaXZlci1vcHMuaDoxMzA2OnN0YXRpYyBpbmxpbmUgaW50IGRydl9nZXRfdHhwb3dlcihzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcXG5uZXQvbWFjODAyMTEvZHJpdmVyLW9wcy5oLTEzMDctXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9kcml2ZXItb3BzLmgtMTMxNC1cXG5uZXQvbWFjODAyMTEvZHJpdmVyLW9wcy5oOjEzMTU6XFx0aWYgKCFsb2NhbC1cXHUwMDNlb3BzLVxcdTAwM2VnZXRfdHhwb3dlcilcXG5uZXQvbWFjODAyMTEvZHJpdmVyLW9wcy5oLTEzMTYtXFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbm5ldC9tYWM4MDIxMS9kcml2ZXItb3BzLmgtMTMxNy1cXG5uZXQvbWFjODAyMTEvZHJpdmVyLW9wcy5oOjEzMTg6XFx0cmV0ID0gbG9jYWwtXFx1MDAzZW9wcy1cXHUwMDNlZ2V0X3R4cG93ZXIoXFx1MDAyNmxvY2FsLVxcdTAwM2VodywgXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYsIGxpbmtfaWQsIGRibSk7XFxubmV0L21hYzgwMjExL2RyaXZlci1vcHMuaDoxMzE5OlxcdHRyYWNlX2Rydl9nZXRfdHhwb3dlcihsb2NhbCwgc2RhdGEsIGxpbmtfaWQsICpkYm0sIHJldCk7XFxubmV0L21hYzgwMjExL2RyaXZlci1vcHMuaC0xMzIwLVxcbi0tXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg9NzU3PXN0cnVjdCBtZXNoX3RhYmxlIHtcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTc2OS0gKiBAcmh0OiBoYXNoIHRhYmxlIGNvbnRhaW5pbmcgc3RydWN0IGllZWU4MDIxMV9tZXNoX2Zhc3RfdHgsIHVzaW5nIHNrYiBEQSBhcyBrZXlcXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaDo3NzA6ICogQHdhbGtfaGVhZDogbGlua2VkIGxpc3QgY29udGFpbmluZyBhbGwgaWVlZTgwMjExX21lc2hfZmFzdF90eCBvYmplY3RzXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtNzcxLSAqIEB3YWxrX2xvY2s6IGxvY2sgcHJvdGVjdGluZyB3YWxrX2hlYWQgYW5kIHJodFxcbi0tXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg9MjIxMD12b2lkIGllZWU4MDIxMV9kZWxfdmlydHVhbF9tb25pdG9yKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKTtcXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC0yMjExLVxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oOjIyMTI6Ym9vbCBfX2llZWU4MDIxMV9yZWNhbGNfdHhwb3dlcihzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluayk7XFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg6MjIxMzp2b2lkIGllZWU4MDIxMV9yZWNhbGNfdHhwb3dlcihzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluayxcXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC0yMjE0LVxcdFxcdFxcdCAgICAgIGJvb2wgdXBkYXRlX2Jzcyk7XFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYy00MS0gKiBBcyBhIGNvbnNlcXVlbmNlLCByZWFkcyAodHJhdmVyc2Fscykgb2YgdGhlIGxpc3QgY2FuIGJlIHByb3RlY3RlZFxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjQyOiAqIGJ5IGVpdGhlciB0aGUgUlROTCwgdGhlIHdpcGh5IG11dGV4LCB0aGUgaWZsaXN0X210eCBvciBSQ1UuXFxubmV0L21hYzgwMjExL2lmYWNlLmMtNDMtICovXFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYz00NT1zdGF0aWMgdm9pZCBpZWVlODAyMTFfaWZhY2Vfd29yayhzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lwaHlfd29yayAqd29yayk7XFxubmV0L21hYzgwMjExL2lmYWNlLmMtNDYtXFxubmV0L21hYzgwMjExL2lmYWNlLmM6NDc6Ym9vbCBfX2llZWU4MDIxMV9yZWNhbGNfdHhwb3dlcihzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluaylcXG5uZXQvbWFjODAyMTEvaWZhY2UuYy00OC17XFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYy02Ny1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYzo2ODpcXHRpZiAocG93ZXIgIT0gbGluay1cXHUwMDNlY29uZi1cXHUwMDNldHhwb3dlcikge1xcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjY5OlxcdFxcdGxpbmstXFx1MDAzZWNvbmYtXFx1MDAzZXR4cG93ZXIgPSBwb3dlcjtcXG5uZXQvbWFjODAyMTEvaWZhY2UuYy03MC1cXHRcXHRyZXR1cm4gdHJ1ZTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTc1LVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjc2OnZvaWQgaWVlZTgwMjExX3JlY2FsY190eHBvd2VyKHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rLFxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTc3LVxcdFxcdFxcdCAgICAgIGJvb2wgdXBkYXRlX2JzcylcXG5uZXQvbWFjODAyMTEvaWZhY2UuYy03OC17XFxubmV0L21hYzgwMjExL2lmYWNlLmM6Nzk6XFx0aWYgKF9faWVlZTgwMjExX3JlY2FsY190eHBvd2VyKGxpbmspIHx8XFxubmV0L21hYzgwMjExL2lmYWNlLmMtODAtXFx0ICAgICh1cGRhdGVfYnNzIFxcdTAwMjZcXHUwMDI2IGllZWU4MDIxMV9zZGF0YV9ydW5uaW5nKGxpbmstXFx1MDAzZXNkYXRhKSkpXFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYz0xODc4PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9zZXR1cF9zZGF0YShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTE4OTctXFx0c2RhdGEtXFx1MDAzZXZpZi5jZmcuaWRsZSA9IHRydWU7XFxubmV0L21hYzgwMjExL2lmYWNlLmM6MTg5ODpcXHRzZGF0YS1cXHUwMDNldmlmLmJzc19jb25mLnR4cG93ZXIgPSBJTlRfTUlOOyAvKiB1bnNldCAqL1xcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTE4OTktXFxuLS1cXG5uZXQvbWFjODAyMTEva2V5LmM9NTk2PWllZWU4MDIxMV9rZXlfYWxsb2ModTMyIGNpcGhlciwgaW50IGlkeCwgc2l6ZV90IGtleV9sZW4sXFxuLS1cXG5uZXQvbWFjODAyMTEva2V5LmMtNjM5LVxcdFxcdH1cXG5uZXQvbWFjODAyMTEva2V5LmM6NjQwOlxcdFxcdHNwaW5fbG9ja19pbml0KFxcdTAwMjZrZXktXFx1MDAzZXUudGtpcC50eGxvY2spO1xcbm5ldC9tYWM4MDIxMS9rZXkuYy02NDEtXFx0XFx0YnJlYWs7XFxuLS1cXG5uZXQvbWFjODAyMTEva2V5Lmg9NTk9c3RydWN0IGllZWU4MDIxMV9rZXkge1xcbi0tXFxubmV0L21hYzgwMjExL2tleS5oLTcyLVxcdFxcdFxcdC8qIHByb3RlY3RzIHR4IGNvbnRleHQgKi9cXG5uZXQvbWFjODAyMTEva2V5Lmg6NzM6XFx0XFx0XFx0c3BpbmxvY2tfdCB0eGxvY2s7XFxubmV0L21hYzgwMjExL2tleS5oLTc0LVxcbi0tXFxubmV0L21hYzgwMjExL2xpbmsuYz05NT12b2lkIGllZWU4MDIxMV9saW5rX2luaXQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvbGluay5jLTEyNy1cXHRsaW5rLVxcdTAwM2V1c2VyX3Bvd2VyX2xldmVsID0gc2RhdGEtXFx1MDAzZWxvY2FsLVxcdTAwM2V1c2VyX3Bvd2VyX2xldmVsO1xcbm5ldC9tYWM4MDIxMS9saW5rLmM6MTI4OlxcdGxpbmtfY29uZi1cXHUwMDNldHhwb3dlciA9IElOVF9NSU47XFxubmV0L21hYzgwMjExL2xpbmsuYy0xMjktXFxuLS1cXG5uZXQvbWFjODAyMTEvbWFpbi5jPTk2PXN0YXRpYyB1MzIgaWVlZTgwMjExX2NhbGNfaHdfY29uZl9jaGFuKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbi0tXFxubmV0L21hYzgwMjExL21haW4uYy0xNzgtXFx0XFx0XFx0Y29udGludWU7XFxubmV0L21hYzgwMjExL21haW4uYzoxNzk6XFx0XFx0aWYgKHNkYXRhLVxcdTAwM2V2aWYuYnNzX2NvbmYudHhwb3dlciA9PSBJTlRfTUlOKVxcbm5ldC9tYWM4MDIxMS9tYWluLmMtMTgwLVxcdFxcdFxcdGNvbnRpbnVlO1xcbm5ldC9tYWM4MDIxMS9tYWluLmM6MTgxOlxcdFxcdHBvd2VyID0gbWluKHBvd2VyLCBzZGF0YS1cXHUwMDNldmlmLmJzc19jb25mLnR4cG93ZXIpO1xcbm5ldC9tYWM4MDIxMS9tYWluLmMtMTgyLVxcdH1cXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM9MzY3Nz1zdGF0aWMgdTY0IGllZWU4MDIxMV9oYW5kbGVfcHdyX2NvbnN0cihzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluayxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMzczOC1cXHRsaW5rLVxcdTAwM2VhcF9wb3dlcl9sZXZlbCA9IG5ld19hcF9sZXZlbDtcXG5uZXQvbWFjODAyMTEvbWxtZS5jOjM3Mzk6XFx0aWYgKF9faWVlZTgwMjExX3JlY2FsY190eHBvd2VyKGxpbmspKVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMzc0MC1cXHRcXHRyZXR1cm4gQlNTX0NIQU5HRURfVFhQT1dFUjtcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jPTM3ODA9aWVlZTgwMjExX3N0YV9jdXJyZW50X2J3X3J4X2Zyb21fc3RhKHN0cnVjdCBsaW5rX3N0YV9pbmZvICpsaW5rX3N0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTM3OTAtXFx0ICogYXQgYSBoaWdoZXIgYmFuZHdpZHRoIGZpcnN0IHdoaWxlIHJlZHVjaW5nIGJhbmR3aWR0aCwgYW5kXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM6Mzc5MTpcXHQgKiBjaGFuZ2UgdGhlIGNoYW5jdHggb25seSBhZnRlciB0aGUgcGVlciBhY2NlcHRzLCBldGMuKVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTM3OTItXFx0ICovXFxuLS1cXG5uZXQvbWFjODAyMTEvdGtpcC5jPTE1Mj1zdGF0aWMgdm9pZCBpZWVlODAyMTFfY29tcHV0ZV90a2lwX3AxayhzdHJ1Y3QgaWVlZTgwMjExX2tleSAqa2V5LCB1MzIgaXYzMilcXG4tLVxcbm5ldC9tYWM4MDIxMS90a2lwLmMtMTU3LVxcbm5ldC9tYWM4MDIxMS90a2lwLmM6MTU4OlxcdGxvY2tkZXBfYXNzZXJ0X2hlbGQoXFx1MDAyNmtleS1cXHUwMDNldS50a2lwLnR4bG9jayk7XFxubmV0L21hYzgwMjExL3RraXAuYy0xNTktXFxuLS1cXG5uZXQvbWFjODAyMTEvdGtpcC5jPTE3MT12b2lkIGllZWU4MDIxMV9nZXRfdGtpcF9wMWtfaXYoc3RydWN0IGllZWU4MDIxMV9rZXlfY29uZiAqa2V5Y29uZixcXG4tLVxcbm5ldC9tYWM4MDIxMS90a2lwLmMtMTc3LVxcbm5ldC9tYWM4MDIxMS90a2lwLmM6MTc4OlxcdHNwaW5fbG9ja19iaChcXHUwMDI2a2V5LVxcdTAwM2V1LnRraXAudHhsb2NrKTtcXG5uZXQvbWFjODAyMTEvdGtpcC5jLTE3OS1cXHRpZWVlODAyMTFfY29tcHV0ZV90a2lwX3AxayhrZXksIGl2MzIpO1xcbm5ldC9tYWM4MDIxMS90a2lwLmMtMTgwLVxcdG1lbWNweShwMWssIGN0eC1cXHUwMDNlcDFrLCBzaXplb2YoY3R4LVxcdTAwM2VwMWspKTtcXG5uZXQvbWFjODAyMTEvdGtpcC5jOjE4MTpcXHRzcGluX3VubG9ja19iaChcXHUwMDI2a2V5LVxcdTAwM2V1LnRraXAudHhsb2NrKTtcXG5uZXQvbWFjODAyMTEvdGtpcC5jLTE4Mi19XFxuLS1cXG5uZXQvbWFjODAyMTEvdGtpcC5jPTE5Nj12b2lkIGllZWU4MDIxMV9nZXRfdGtpcF9wMmsoc3RydWN0IGllZWU4MDIxMV9rZXlfY29uZiAqa2V5Y29uZixcXG4tLVxcbm5ldC9tYWM4MDIxMS90a2lwLmMtMjA3LVxcbm5ldC9tYWM4MDIxMS90a2lwLmM6MjA4OlxcdHNwaW5fbG9jayhcXHUwMDI2a2V5LVxcdTAwM2V1LnRraXAudHhsb2NrKTtcXG5uZXQvbWFjODAyMTEvdGtpcC5jLTIwOS1cXHRpZWVlODAyMTFfY29tcHV0ZV90a2lwX3AxayhrZXksIGl2MzIpO1xcbm5ldC9tYWM4MDIxMS90a2lwLmMtMjEwLVxcdHRraXBfbWl4aW5nX3BoYXNlMih0aywgY3R4LCBpdjE2LCBwMmspO1xcbm5ldC9tYWM4MDIxMS90a2lwLmM6MjExOlxcdHNwaW5fdW5sb2NrKFxcdTAwMjZrZXktXFx1MDAzZXUudGtpcC50eGxvY2spO1xcbm5ldC9tYWM4MDIxMS90a2lwLmMtMjEyLX1cXG4tLVxcbm5ldC9tYWM4MDIxMS90cmFjZS5oPTQ3MT1UUkFDRV9FVkVOVChkcnZfbGlua19pbmZvX2NoYW5nZWQsXFxuLS1cXG5uZXQvbWFjODAyMTEvdHJhY2UuaC01MDMtXFx0XFx0X19maWVsZChib29sLCBoaWRkZW5fc3NpZClcXG5uZXQvbWFjODAyMTEvdHJhY2UuaDo1MDQ6XFx0XFx0X19maWVsZChpbnQsIHR4cG93ZXIpXFxubmV0L21hYzgwMjExL3RyYWNlLmgtNTA1LVxcdFxcdF9fZmllbGQodTgsIHAycF9vcHBwc19jdHdpbmRvdylcXG4tLVxcbm5ldC9tYWM4MDIxMS90cmFjZS5oLTUzMy1cXHRcXHRfX2VudHJ5LVxcdTAwM2VoaWRkZW5fc3NpZCA9IGxpbmtfY29uZi1cXHUwMDNlaGlkZGVuX3NzaWQ7XFxubmV0L21hYzgwMjExL3RyYWNlLmg6NTM0OlxcdFxcdF9fZW50cnktXFx1MDAzZXR4cG93ZXIgPSBsaW5rX2NvbmYtXFx1MDAzZXR4cG93ZXI7XFxubmV0L21hYzgwMjExL3RyYWNlLmgtNTM1LVxcdFxcdF9fZW50cnktXFx1MDAzZXAycF9vcHBwc19jdHdpbmRvdyA9IGxpbmtfY29uZi1cXHUwMDNlcDJwX25vYV9hdHRyLm9wcHBzX2N0d2luZG93O1xcbi0tXFxubmV0L21hYzgwMjExL3RyYWNlLmg9MjIyND1ERUZJTkVfRVZFTlQoY2hhbnN3aXRjaF9ldnQsIGRydl9jaGFubmVsX3N3aXRjaF9yeF9iZWFjb24sXFxuLS1cXG5uZXQvbWFjODAyMTEvdHJhY2UuaC0yMjMwLVxcbm5ldC9tYWM4MDIxMS90cmFjZS5oOjIyMzE6VFJBQ0VfRVZFTlQoZHJ2X2dldF90eHBvd2VyLFxcbm5ldC9tYWM4MDIxMS90cmFjZS5oLTIyMzItXFx0VFBfUFJPVE8oc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYz00NTE2PWllZWU4MDIxMV9jb252ZXJ0X3RvX3VuaWNhc3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jLTQ1NjUtXFxubmV0L21hYzgwMjExL3R4LmM6NDU2NjpzdGF0aWMgdm9pZCBpZWVlODAyMTFfbWxvX211bHRpY2FzdF90eF9vbmUoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxubmV0L21hYzgwMjExL3R4LmMtNDU2Ny1cXHRcXHRcXHRcXHRcXHQgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MzIgY3RybF9mbGFncyxcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jPTQ1ODA9c3RhdGljIHZvaWQgaWVlZTgwMjExX21sb19tdWx0aWNhc3RfdHgoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jLTQ1OTYtXFx0Zm9yX2VhY2hfc2V0X2JpdChsaW5rLCBcXHUwMDI2bGlua3MsIElFRUU4MDIxMV9NTERfTUFYX05VTV9MSU5LUykge1xcbm5ldC9tYWM4MDIxMS90eC5jOjQ1OTc6XFx0XFx0aWVlZTgwMjExX21sb19tdWx0aWNhc3RfdHhfb25lKHNkYXRhLCBza2IsIGN0cmxfZmxhZ3MsIGxpbmspO1xcbm5ldC9tYWM4MDIxMS90eC5jLTQ1OTgtXFx0XFx0Y3RybF9mbGFncyA9IDA7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE3OjQzOjI3LjA3ODE0NzYxMVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozMjY0MzMwOTI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJ3MgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBhZnRlciByZXZpZXdpbmcgdGhpcyBjb2RlIGNoYW5nZSwgaGVyZSdzIG15IHF1aWNrIHRha2UuIFRoaXMgcGF0Y2ggaXMgKmRlZmluaXRlbHkqIHdvcnRoIGZ1enppbmcsIHRoYXQncyBhIHNvbGlkIFwidHJ1ZVwiIGZyb20gbWUuIEkndmUgcGlucG9pbnRlZCBhIGNvdXBsZSBvZiBrZXkgZnVuY3Rpb25zIHRvIHRhcmdldDogYGllZWU4MDIxMV9uZXh0X3R4cWAgYW5kIGBpZWVlODAyMTFfdHhxX3NjaGVkdWxlX3N0YXJ0YC4gVGhlc2UgYXJlIHRoZSBmb2NhbCBwb2ludHMsIHRoZSBseW5jaHBpbnMgb2YgdGhpcyBjaGFuZ2UuXG5cbkknbSBzZWVpbmcgbW9kaWZpY2F0aW9ucyB3aXRoaW4gdGhlIHRyYW5zbWl0IHF1ZXVlIHNjaGVkdWxpbmcgc3RhdGUgbG9naWMsIHNwZWNpZmljYWxseSByZWdhcmRpbmcgdGhlIGBzY2hlZHVsZV9vcGVuYCBmbGFnIGFuZCBob3cgcm91bmQgdXBkYXRlcyBhcmUgaGFuZGxlZC4gVGhlIGZ1bmN0aW9uIG5hbWVzIGFsb25lIHRyaWdnZXIgc29tZSB3YXJuaW5nIGJlbGxzLCBJIHRoaW5rIHRoZXJlIGlzIGEgZ29vZCBwb3NzaWJpbGl0eSBvZiBzb21lIGludGVyZXN0aW5nIHN0YXRlIHRyYW5zaXRpb25zIHRvIGV4cGxvcmUuXG5cbkknbSB0aGlua2luZyB0aGlzIGlzIGFsbCBoYXBwZW5pbmcgd2l0aGluIHRoZSBtYWM4MDIxMSB3aXJlbGVzcyBzdWJzeXN0ZW0sIHdoaWNoIGlzIGdvb2QgbmV3cyBmb3IgZnV6emluZy4gV2Uga25vdyBtYWM4MDIxMSBpcyBvZnRlbiBhY2Nlc3NpYmxlIHRocm91Z2ggdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHVzaW5nIHZpcnR1YWwgb3Igc2ltdWxhdGVkIHdpcmVsZXNzIGRyaXZlcnMg4oCTIG1hYzgwMjExX2h3c2ltIGJlaW5nIHRoZSBvYnZpb3VzIGV4YW1wbGUuIFRoZW4geW91IGhhdmUgTmV0bGluayBpbnRlcmZhY2VzIGFzIGFub3RoZXIgdmVyeSB1c2VmdWwgYXR0YWNrIHZlY3Rvciwgc28gdGhhdCBhbGwgbG9va3MgbGlrZSBhIGdyZWF0IHNldCBvZiBvcHRpb25zIHRvIGNvbnNpZGVyIHdoZW4gd2Ugc3RhcnQgdG8gZm9ybSBhIHRlc3QuXG5cblNvLCBJJ20gdGhpbmtpbmcgd2UgY2FuIGNhbGwgdGhpcyBgc2V0LXJlc3VsdHNgLCBhbmQgbW92ZSBmb3J3YXJkIHdpdGggdGhlIHBsYW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyODYwLCJPdXRwdXRUb2tlbnMiOjE1NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxNzo0MzozMC4zNDI0ODMwNzVaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDAwMjk0NDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJDRkc4MDIxMVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImllZWU4MDIxMV9uZXh0X3R4cVwiLFxuICAgIFwiaWVlZTgwMjExX3R4cV9zY2hlZHVsZV9zdGFydFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB0cmFuc21pdCBxdWV1ZSBzY2hlZHVsaW5nIGxvZ2ljIGluIG1hYzgwMjExIChuZXQvbWFjODAyMTEvdHguYyksIGRlY291cGxpbmcgcXVldWUgc2NoZWR1bGUgb3BlbiBzdGF0ZSB0cmFja2luZyBmcm9tIHRoZSBzY2hlZHVsZSByb3VuZCBjb3VudGVyLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGFuZCBleGVjdXRhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB1c2luZyB2aXJ0dWFsIHdpcmVsZXNzIGRyaXZlcnMgKHN1Y2ggYXMgbWFjODAyMTFfaHdzaW0pIGFuZCBzdGFuZGFyZCB3aXJlbGVzcyBuZXRsaW5rL3BhY2tldCBpbnRlcmZhY2VzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJDRkc4MDIxMVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImllZWU4MDIxMV9uZXh0X3R4cVwiLFxuICAgIFwiaWVlZTgwMjExX3R4cV9zY2hlZHVsZV9zdGFydFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB0cmFuc21pdCBxdWV1ZSBzY2hlZHVsaW5nIGxvZ2ljIGluIG1hYzgwMjExIChuZXQvbWFjODAyMTEvdHguYyksIGRlY291cGxpbmcgcXVldWUgc2NoZWR1bGUgb3BlbiBzdGF0ZSB0cmFja2luZyBmcm9tIHRoZSBzY2hlZHVsZSByb3VuZCBjb3VudGVyLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGFuZCBleGVjdXRhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB1c2luZyB2aXJ0dWFsIHdpcmVsZXNzIGRyaXZlcnMgKHN1Y2ggYXMgbWFjODAyMTFfaHdzaW0pIGFuZCBzdGFuZGFyZCB3aXJlbGVzcyBuZXRsaW5rL3BhY2tldCBpbnRlcmZhY2VzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxNzo0MzozMC40ODI1MjE2MDNaIiwiU2VxIjoyMSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxOTU3NjgyNjk3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTc6NDM6MzAuNDgzMDgwNzEzWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6NTE5NTcxMTcxMjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBib29sZWFuIGZpZWxkIGBzY2hlZHVsZV9vcGVuYCB0byBgc3RydWN0IGllZWU4MDIxMV9sb2NhbGAgdG8gZGVjb3VwbGUgdGhlIHNjaGVkdWxpbmcgb3Blbi9jbG9zZWQgc3RhdGUgZnJvbSB0aGUgYHNjaGVkdWxlX3JvdW5kYCBjb3VudGVyIGluIG1hYzgwMjExJ3MgVFggcXVldWUgc2NoZWR1bGluZyBsb2dpYy5cXG5cXG4tIGBzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsYCBpcyBhbGxvY2F0ZWQgdmlhIGBremFsbG9jKClgIGR1cmluZyB3aXBoeSByZWdpc3RyYXRpb24sIGVuc3VyaW5nIGFsbCBmaWVsZHMgaW5jbHVkaW5nIGBzY2hlZHVsZV9vcGVuYCBhcmUgemVyby1pbml0aWFsaXplZC5cXG4tIFRoZSBuZXcgZmllbGQgaXMgb25seSB1c2VkIGludGVybmFsbHkgd2l0aGluIGBuZXQvbWFjODAyMTEvdHguY2AgZm9yIFRYIHF1ZXVlIHNjaGVkdWxpbmcgY29udHJvbCBmbG93IGFuZCBpcyBuZXZlciBjb3BpZWQgdG8gdXNlciBzcGFjZSBvciB1c2VkIGluIGFuIHVuaW5pdGlhbGl6ZWQgc3RhdGUuXFxuLSBObyBuZXcgYnVmZmVycywgc3RhY2sgb2JqZWN0cywgbmV0bGluayBhdHRyaWJ1dGVzLCBpb2N0bHMsIG9yIHVzZXItc3BhY2UgY29waWVzIGFyZSBpbnRyb2R1Y2VkIG9yIG1vZGlmaWVkLlxcblxcbkNvbnNlcXVlbnRseSwgdGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciBpbmZvcm1hdGlvbiBsZWFrcywgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGM3YmZmMWIyNDUzNDI2MzZmZmMwNWI1ZGEzNzRiZDgzZGEyMDEyNzRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIFNlcCA4IDE3OjQyOjUxIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmggYi9uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaFxuaW5kZXggNTNiMGIwOGQzNDU5Ny4uNjUzMTEzNDBkYjQwNiAxMDA2NDRcbi0tLSBhL25ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oXG4rKysgYi9uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaFxuQEAgLTE0NjgsNiArMTQ2OCw3IEBAIHN0cnVjdCBpZWVlODAyMTFfbG9jYWwge1xuIFx0c3BpbmxvY2tfdCBhY3RpdmVfdHhxX2xvY2tbSUVFRTgwMjExX05VTV9BQ1NdO1xuIFx0c3RydWN0IGxpc3RfaGVhZCBhY3RpdmVfdHhxc1tJRUVFODAyMTFfTlVNX0FDU107XG4gXHR1MTYgc2NoZWR1bGVfcm91bmRbSUVFRTgwMjExX05VTV9BQ1NdO1xuK1x0Ym9vbCBzY2hlZHVsZV9vcGVuW0lFRUU4MDIxMV9OVU1fQUNTXTtcbiBcbiBcdC8qIHNlcmlhbGl6ZXMgaWVlZTgwMjExX2hhbmRsZV93YWtlX3R4X3F1ZXVlICovXG4gXHRzcGlubG9ja190IGhhbmRsZV93YWtlX3R4X3F1ZXVlX2xvY2s7XG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL3R4LmMgYi9uZXQvbWFjODAyMTEvdHguY1xuaW5kZXggYzMzMDkyOTYwZGYyNi4uYzY2NWNlZDljMDVjYiAxMDA2NDRcbi0tLSBhL25ldC9tYWM4MDIxMS90eC5jXG4rKysgYi9uZXQvbWFjODAyMTEvdHguY1xuQEAgLTQxMjIsNyArNDEyMiw3IEBAIHN0cnVjdCBpZWVlODAyMTFfdHhxICppZWVlODAyMTFfbmV4dF90eHEoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHU4IGFjKVxuIFxuIFx0c3Bpbl9sb2NrX2JoKFx1MDAyNmxvY2FsLVx1MDAzZWFjdGl2ZV90eHFfbG9ja1thY10pO1xuIFxuLVx0aWYgKCFsb2NhbC1cdTAwM2VzY2hlZHVsZV9yb3VuZFthY10pXG4rXHRpZiAoIWxvY2FsLVx1MDAzZXNjaGVkdWxlX29wZW5bYWNdKVxuIFx0XHRnb3RvIG91dDtcbiBcbiAgYmVnaW46XG5AQCAtNDM0NywxMiArNDM0NywxMiBAQCB2b2lkIGllZWU4MDIxMV90eHFfc2NoZWR1bGVfc3RhcnQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHU4IGFjKVxuIFxuIFx0c3Bpbl9sb2NrX2JoKFx1MDAyNmxvY2FsLVx1MDAzZWFjdGl2ZV90eHFfbG9ja1thY10pO1xuIFxuLVx0aWYgKGllZWU4MDIxMV90eHFfc2NoZWR1bGVfYWlydGltZV9jaGVjayhsb2NhbCwgYWMpKSB7XG4rXHRsb2NhbC1cdTAwM2VzY2hlZHVsZV9vcGVuW2FjXSA9XG4rXHRcdGllZWU4MDIxMV90eHFfc2NoZWR1bGVfYWlydGltZV9jaGVjayhsb2NhbCwgYWMpO1xuK1x0aWYgKGxvY2FsLVx1MDAzZXNjaGVkdWxlX29wZW5bYWNdKSB7XG4gXHRcdGxvY2FsLVx1MDAzZXNjaGVkdWxlX3JvdW5kW2FjXSsrO1xuIFx0XHRpZiAoIWxvY2FsLVx1MDAzZXNjaGVkdWxlX3JvdW5kW2FjXSlcbiBcdFx0XHRsb2NhbC1cdTAwM2VzY2hlZHVsZV9yb3VuZFthY10rKztcbi1cdH0gZWxzZSB7XG4tXHRcdGxvY2FsLVx1MDAzZXNjaGVkdWxlX3JvdW5kW2FjXSA9IDA7XG4gXHR9XG4gXG4gXHRzcGluX3VubG9ja19iaChcdTAwMjZsb2NhbC1cdTAwM2VhY3RpdmVfdHhxX2xvY2tbYWNdKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE3OjQzOjMwLjQ4MzA4MTk3M1oiLCJTZXEiOjIzLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMDgwODQwNjY0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBhdGNoJ3MgSW1wYWN0KipcblxuT2theSwgbGV0J3MgZGl2ZSBpbi4gTXkgZmlyc3Qgc3RlcCBpcyBhbHdheXMgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBjaGFuZ2VzLiBUaGUgcGF0Y2ggYWZmZWN0cyBgbmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmhgIGFuZCBgbmV0L21hYzgwMjExL3R4LmNgLCBzbyBpdCdzIGxpa2VseSB0b3VjaGluZyBpbnRlcm5hbCBkYXRhIHN0cnVjdHVyZXMgYW5kIHRoZSB0cmFuc21pdCBwYXRoIHdpdGhpbiB0aGUgbWFjODAyMTEgc3RhY2suIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGVzZSBmaWxlcyBpbiB0aGUgYnJvYWRlciBjb250ZXh0LlxuXG5Ob3csIEknbGwgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBlZmZlY3RzLiBJJ20gZ29pbmcgdG8gbG9vayBhdCBob3cgYHN0cnVjdCBpZWVlODAyMTFfbG9jYWxgIGlzIGFsbG9jYXRlZCBhbmQgaW5pdGlhbGl6ZWQsIHNpbmNlIHRoYXQncyBhIGNvcmUgc3RydWN0dXJlLCBhbmQgYWxzbyB0cmFjayBkb3duIGhvdyBgc2NoZWR1bGVfb3BlbmAgaXMgdXNlZDsgdGhlc2UgYXJlIG9mdGVuIGdvb2QgaW5kaWNhdG9ycyBvZiB3aGVyZSBhIHN1YnRsZSBjaGFuZ2UgbGlrZSB0aGlzIG1pZ2h0IGhhdmUgdGhlIGxhcmdlc3QgcmlwcGxlIGVmZmVjdC4gSSdsbCBwcm9iYWJseSBkbyBhIHF1aWNrIGBncmVwYCBmb3IgdGhvc2UgdGVybXMgYWNyb3NzIHRoZSByZWxldmFudCBzb3VyY2UgdHJlZSwgb3IgSSBtaWdodCBzaW1wbHkgcmVhZCB0aGUgZmlsZXMgZGlyZWN0bHkgaWYgdGhlIGNvZGViYXNlIGlzIHJlbGF0aXZlbHkgc21hbGwsIG9yIGlmIHRoZSBzZWFyY2ggdHVybnMgdXAgdG9vIG1hbnkgZmFsc2UgcG9zaXRpdmVzLiBJdCdzIHRpbWUgdG8gZGlnIGludG8gdGhlIGRldGFpbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2MTEsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE3OjQzOjUxLjI5MTQ5MzEyNloiLCJTZXEiOjI0LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODMwNTkxNDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2NoZWR1bGVfcm91bmRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L21hYzgwMjExXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oPTk2Mz1lbnVtIHR4cV9pbmZvX2ZsYWdzIHtcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTk3Ny0gKiBAc2NoZWR1bGVfb3JkZXI6IHVzZWQgd2l0aCBpZWVlODAyMTFfbG9jYWwtXFx1MDAzZWFjdGl2ZV90eHFzXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg6OTc4OiAqIEBzY2hlZHVsZV9yb3VuZDogY291bnRlciB0byBwcmV2ZW50IGluZmluaXRlIGxvb3BzIG9uIFRYUSBzY2hlZHVsaW5nXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtOTc5LSAqIEBmbGFnczogVFhRIGZsYWdzIGZyb20gXFx1MDAyNmVudW0gdHhxX2luZm9fZmxhZ3NcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oPTk4Mj1zdHJ1Y3QgdHhxX2luZm8ge1xcbi0tXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtOTg2LVxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oOjk4NzpcXHR1MTYgc2NoZWR1bGVfcm91bmQ7XFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtOTg4LVxcdHN0cnVjdCBsaXN0X2hlYWQgc2NoZWR1bGVfb3JkZXI7XFxuLS1cXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaD0xNDU3PXN0cnVjdCBpZWVlODAyMTFfbG9jYWwge1xcbi0tXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMTQ2OS1cXHRzdHJ1Y3QgbGlzdF9oZWFkIGFjdGl2ZV90eHFzW0lFRUU4MDIxMV9OVU1fQUNTXTtcXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaDoxNDcwOlxcdHUxNiBzY2hlZHVsZV9yb3VuZFtJRUVFODAyMTFfTlVNX0FDU107XFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMTQ3MS1cXHRib29sIHNjaGVkdWxlX29wZW5bSUVFRTgwMjExX05VTV9BQ1NdO1xcbi0tXFxubmV0L21hYzgwMjExL3R4LmM9NDExNT1zdHJ1Y3QgaWVlZTgwMjExX3R4cSAqaWVlZTgwMjExX25leHRfdHhxKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCB1OCBhYylcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jLTQxNjYtXFxubmV0L21hYzgwMjExL3R4LmM6NDE2NzpcXHRpZiAodHhxaS1cXHUwMDNlc2NoZWR1bGVfcm91bmQgPT0gbG9jYWwtXFx1MDAzZXNjaGVkdWxlX3JvdW5kW2FjXSlcXG5uZXQvbWFjODAyMTEvdHguYy00MTY4LVxcdFxcdGdvdG8gb3V0O1xcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtNDE3MC1cXHRsaXN0X2RlbF9pbml0KFxcdTAwMjZ0eHFpLVxcdTAwM2VzY2hlZHVsZV9vcmRlcik7XFxubmV0L21hYzgwMjExL3R4LmM6NDE3MTpcXHR0eHFpLVxcdTAwM2VzY2hlZHVsZV9yb3VuZCA9IGxvY2FsLVxcdTAwM2VzY2hlZHVsZV9yb3VuZFthY107XFxubmV0L21hYzgwMjExL3R4LmMtNDE3Mi1cXHRyZXQgPSBcXHUwMDI2dHhxaS1cXHUwMDNldHhxO1xcbi0tXFxubmV0L21hYzgwMjExL3R4LmM9NDM0ND12b2lkIGllZWU4MDIxMV90eHFfc2NoZWR1bGVfc3RhcnQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHU4IGFjKVxcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtNDM1Mi1cXHRpZiAobG9jYWwtXFx1MDAzZXNjaGVkdWxlX29wZW5bYWNdKSB7XFxubmV0L21hYzgwMjExL3R4LmM6NDM1MzpcXHRcXHRsb2NhbC1cXHUwMDNlc2NoZWR1bGVfcm91bmRbYWNdKys7XFxubmV0L21hYzgwMjExL3R4LmM6NDM1NDpcXHRcXHRpZiAoIWxvY2FsLVxcdTAwM2VzY2hlZHVsZV9yb3VuZFthY10pXFxubmV0L21hYzgwMjExL3R4LmM6NDM1NTpcXHRcXHRcXHRsb2NhbC1cXHUwMDNlc2NoZWR1bGVfcm91bmRbYWNdKys7XFxubmV0L21hYzgwMjExL3R4LmMtNDM1Ni1cXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE3OjQzOjUxLjM3NDU1Njc3NFoiLCJTZXEiOjI1LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxODEzMzg2Njc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipQZWVyaW5nIGludG8gdGhlIElFRUUgODAyLjExIExvY2FsIFN0cnVjdHVyZSoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgbGlmZWN5Y2xlIG9mIHRoZSBgc3RydWN0IGllZWU4MDIxMV9sb2NhbGAuIE15IGltbWVkaWF0ZSBnb2FsIGlzIHRvIHRyYWNlIGl0cyBhbGxvY2F0aW9uIGFuZCBzdWJzZXF1ZW50IGluaXRpYWxpemF0aW9uLiBUaGF0J3MgdXN1YWxseSB0aGUgY3J1eCBvZiB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgaGFyZHdhcmUgYWJzdHJhY3Rpb24gbGF5ZXIgZm9yIGFuIDgwMi4xMSBkZXZpY2UgY29tZXMgdG8gbGlmZS5cblxuTXkgaW5pdGlhbCBhcHByb2FjaCBpcyB0byBnbyBzdHJhaWdodCB0byB0aGUgZnVuY3Rpb25zIHRoYXQgbGlrZWx5IGhhbmRsZSB0aGlzLiBJJ2xsIHNlYXJjaCBmb3IgY2FsbHMgdG8gZnVuY3Rpb25zIGxpa2UgYGllZWU4MDIxMV9hbGxvY19od2AsIGBhbGxvY19pZWVlODAyMTFgLCBvciBhbnl0aGluZyB3aXRoIGEgc2ltaWxhciBuYW1pbmcgY29udmVudGlvbi4gVGhhdCBzaG91bGQgZ2V0IG1lIHRvIHRoZSByaWdodCBzcG90cyBxdWlja2x5LiBIb3BlZnVsbHksIHRoZXNlIGZ1bmN0aW9ucyBoYXZlIGVub3VnaCBjbHVlcyBidWlsdCBpbnRvIHRoZWlyIG5hbWVzIHRvIGZvbGxvdyB0aGUgdGhyZWFkIHRvIHRoZSByaWdodCBkYXRhIHN0cnVjdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzkwNiwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE3OjQzOjUzLjE4Nzk0NjA2M1oiLCJTZXEiOjI2LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTE3ODIwOTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RydWN0IGllZWU4MDIxMV9sb2NhbFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbWFjODAyMTFcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA1MjI3IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5uZXQvbWFjODAyMTEvYWdnLXJ4LmM9NTY9dm9pZCBfX2llZWU4MDIxMV9zdG9wX3J4X2JhX3Nlc3Npb24oc3RydWN0IHN0YV9pbmZvICpzdGEsIHUxNiB0aWQsXFxuLS1cXG5uZXQvbWFjODAyMTEvYWdnLXJ4LmMtNTgte1xcbm5ldC9tYWM4MDIxMS9hZ2ctcnguYzo1OTpcXHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHN0YS1cXHUwMDNlbG9jYWw7XFxubmV0L21hYzgwMjExL2FnZy1yeC5jLTYwLVxcdHN0cnVjdCB0aWRfYW1wZHVfcnggKnRpZF9yeDtcXG4tLVxcbm5ldC9tYWM4MDIxMS9hZ2ctcnguYz0yMzI9c3RhdGljIHZvaWQgaWVlZTgwMjExX3NlbmRfYWRkYmFfcmVzcChzdHJ1Y3Qgc3RhX2luZm8gKnN0YSwgdTggKmRhLCB1MTYgdGlkLFxcbi0tXFxubmV0L21hYzgwMjExL2FnZy1yeC5jLTIzNy1cXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IHN0YS1cXHUwMDNlc2RhdGE7XFxubmV0L21hYzgwMjExL2FnZy1yeC5jOjIzODpcXHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHNkYXRhLVxcdTAwM2Vsb2NhbDtcXG5uZXQvbWFjODAyMTEvYWdnLXJ4LmMtMjM5LVxcdHN0cnVjdCBza19idWZmICpza2I7XFxuLS1cXG5uZXQvbWFjODAyMTEvYWdnLXJ4LmM9Mjc2PXZvaWQgX19pZWVlODAyMTFfc3RhcnRfcnhfYmFfc2Vzc2lvbihzdHJ1Y3Qgc3RhX2luZm8gKnN0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9hZ2ctcnguYy0yODIte1xcbm5ldC9tYWM4MDIxMS9hZ2ctcnguYzoyODM6XFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzdGEtXFx1MDAzZXNkYXRhLVxcdTAwM2Vsb2NhbDtcXG5uZXQvbWFjODAyMTEvYWdnLXJ4LmMtMjg0LVxcdHN0cnVjdCB0aWRfYW1wZHVfcnggKnRpZF9hZ2dfcng7XFxuLS1cXG5uZXQvbWFjODAyMTEvYWdnLXJ4LmMtNDcxLVxcbm5ldC9tYWM4MDIxMS9hZ2ctcnguYzo0NzI6dm9pZCBpZWVlODAyMTFfcHJvY2Vzc19hZGRiYV9yZXF1ZXN0KHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbm5ldC9tYWM4MDIxMS9hZ2ctcnguYy00NzMtXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3Qgc3RhX2luZm8gKnN0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYz02MT1zdGF0aWMgdm9pZCBpZWVlODAyMTFfc2VuZF9hZGRiYV9yZXF1ZXN0KHN0cnVjdCBzdGFfaW5mbyAqc3RhLCB1MTYgdGlkLFxcbi0tXFxubmV0L21hYzgwMjExL2FnZy10eC5jLTY1LVxcdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gc3RhLVxcdTAwM2VzZGF0YTtcXG5uZXQvbWFjODAyMTEvYWdnLXR4LmM6NjY6XFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cXHUwMDNlbG9jYWw7XFxubmV0L21hYzgwMjExL2FnZy10eC5jLTY3LVxcdHN0cnVjdCBza19idWZmICpza2I7XFxuLS1cXG5uZXQvbWFjODAyMTEvYWdnLXR4LmM9MTA0PXZvaWQgaWVlZTgwMjExX3NlbmRfYmFyKHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsIHU4ICpyYSwgdTE2IHRpZCwgdTE2IHNzbilcXG4tLVxcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYy0xMDYtXFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSB2aWZfdG9fc2RhdGEodmlmKTtcXG5uZXQvbWFjODAyMTEvYWdnLXR4LmM6MTA3OlxcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gc2RhdGEtXFx1MDAzZWxvY2FsO1xcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYy0xMDgtXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4tLVxcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYz0yMzM9aWVlZTgwMjExX2FnZ19zcGxpY2VfcGFja2V0cyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYy0yMzUte1xcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYzoyMzY6XFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cXHUwMDNlbG9jYWw7XFxubmV0L21hYzgwMjExL2FnZy10eC5jLTIzNy1cXHRpbnQgcXVldWUgPSBzZGF0YS1cXHUwMDNldmlmLmh3X3F1ZXVlW2llZWU4MDIxMV9hY19mcm9tX3RpZCh0aWQpXTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYz0yOTE9aW50IF9faWVlZTgwMjExX3N0b3BfdHhfYmFfc2Vzc2lvbihzdHJ1Y3Qgc3RhX2luZm8gKnN0YSwgdTE2IHRpZCxcXG4tLVxcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYy0yOTMte1xcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYzoyOTQ6XFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzdGEtXFx1MDAzZWxvY2FsO1xcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYy0yOTUtXFx0c3RydWN0IHRpZF9hbXBkdV90eCAqdGlkX3R4O1xcbi0tXFxubmV0L21hYzgwMjExL2FnZy10eC5jPTQ0NT1zdGF0aWMgdm9pZCBpZWVlODAyMTFfc2VuZF9hZGRiYV93aXRoX3RpbWVvdXQoc3RydWN0IHN0YV9pbmZvICpzdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvYWdnLXR4LmMtNDQ4LVxcdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gc3RhLVxcdTAwM2VzZGF0YTtcXG5uZXQvbWFjODAyMTEvYWdnLXR4LmM6NDQ5OlxcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gc3RhLVxcdTAwM2Vsb2NhbDtcXG5uZXQvbWFjODAyMTEvYWdnLXR4LmMtNDUwLVxcdHU4IHRpZCA9IHRpZF90eC1cXHUwMDNldGlkO1xcbi0tXFxubmV0L21hYzgwMjExL2FnZy10eC5jPTQ5ND12b2lkIGllZWU4MDIxMV90eF9iYV9zZXNzaW9uX2hhbmRsZV9zdGFydChzdHJ1Y3Qgc3RhX2luZm8gKnN0YSwgaW50IHRpZClcXG4tLVxcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYy00OTYtXFx0c3RydWN0IHRpZF9hbXBkdV90eCAqdGlkX3R4O1xcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYzo0OTc6XFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzdGEtXFx1MDAzZWxvY2FsO1xcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYy00OTgtXFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBzdGEtXFx1MDAzZXNkYXRhO1xcbi0tXFxubmV0L21hYzgwMjExL2FnZy10eC5jPTYwMz1pbnQgaWVlZTgwMjExX3N0YXJ0X3R4X2JhX3Nlc3Npb24oc3RydWN0IGllZWU4MDIxMV9zdGEgKnB1YnN0YSwgdTE2IHRpZCxcXG4tLVxcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYy02MDctXFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBzdGEtXFx1MDAzZXNkYXRhO1xcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYzo2MDg6XFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cXHUwMDNlbG9jYWw7XFxubmV0L21hYzgwMjExL2FnZy10eC5jLTYwOS1cXHRzdHJ1Y3QgdGlkX2FtcGR1X3R4ICp0aWRfdHg7XFxuLS1cXG5uZXQvbWFjODAyMTEvYWdnLXR4LmM9NzU0PUVYUE9SVF9TWU1CT0woaWVlZTgwMjExX3N0YXJ0X3R4X2JhX3Nlc3Npb24pO1xcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYy03NTUtXFxubmV0L21hYzgwMjExL2FnZy10eC5jOjc1NjpzdGF0aWMgdm9pZCBpZWVlODAyMTFfYWdnX3R4X29wZXJhdGlvbmFsKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYy03NTctXFx0XFx0XFx0XFx0XFx0IHN0cnVjdCBzdGFfaW5mbyAqc3RhLCB1MTYgdGlkKVxcbi0tXFxubmV0L21hYzgwMjExL2FnZy10eC5jPTc5OT12b2lkIGllZWU4MDIxMV9zdGFydF90eF9iYV9jYihzdHJ1Y3Qgc3RhX2luZm8gKnN0YSwgaW50IHRpZCxcXG4tLVxcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYy04MDItXFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBzdGEtXFx1MDAzZXNkYXRhO1xcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYzo4MDM6XFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cXHUwMDNlbG9jYWw7XFxubmV0L21hYzgwMjExL2FnZy10eC5jLTgwNC1cXG4tLVxcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYz04NTA9dm9pZCBpZWVlODAyMTFfc3RhcnRfdHhfYmFfY2JfaXJxc2FmZShzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbi0tXFxubmV0L21hYzgwMjExL2FnZy10eC5jLTg1My1cXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IHZpZl90b19zZGF0YSh2aWYpO1xcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYzo4NTQ6XFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cXHUwMDNlbG9jYWw7XFxubmV0L21hYzgwMjExL2FnZy10eC5jLTg1NS1cXHRzdHJ1Y3Qgc3RhX2luZm8gKnN0YTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYz04NzI9aW50IGllZWU4MDIxMV9zdG9wX3R4X2JhX3Nlc3Npb24oc3RydWN0IGllZWU4MDIxMV9zdGEgKnB1YnN0YSwgdTE2IHRpZClcXG4tLVxcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYy04NzUtXFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBzdGEtXFx1MDAzZXNkYXRhO1xcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYzo4NzY6XFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cXHUwMDNlbG9jYWw7XFxubmV0L21hYzgwMjExL2FnZy10eC5jLTg3Ny1cXHRzdHJ1Y3QgdGlkX2FtcGR1X3R4ICp0aWRfdHg7XFxuLS1cXG5uZXQvbWFjODAyMTEvYWdnLXR4LmM9OTU0PXZvaWQgaWVlZTgwMjExX3N0b3BfdHhfYmFfY2JfaXJxc2FmZShzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbi0tXFxubmV0L21hYzgwMjExL2FnZy10eC5jLTk1Ny1cXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IHZpZl90b19zZGF0YSh2aWYpO1xcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYzo5NTg6XFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cXHUwMDNlbG9jYWw7XFxubmV0L21hYzgwMjExL2FnZy10eC5jLTk1OS1cXHRzdHJ1Y3Qgc3RhX2luZm8gKnN0YTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYz05NzQ9RVhQT1JUX1NZTUJPTChpZWVlODAyMTFfc3RvcF90eF9iYV9jYl9pcnFzYWZlKTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9hZ2ctdHguYy05NzYtXFxubmV0L21hYzgwMjExL2FnZy10eC5jOjk3Nzp2b2lkIGllZWU4MDIxMV9wcm9jZXNzX2FkZGJhX3Jlc3Aoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxubmV0L21hYzgwMjExL2FnZy10eC5jLTk3OC1cXHRcXHRcXHRcXHQgIHN0cnVjdCBzdGFfaW5mbyAqc3RhLFxcbi0tXFxubmV0L21hYzgwMjExL2FwLmM9MTQ9aWVlZTgwMjExX3NlbmRfZW1sX29wX21vZGVfbm90aWYoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvYXAuYy0xNy1cXHRpbnQgbGVuID0gSUVFRTgwMjExX01JTl9BQ1RJT05fU0laRShlbWxfb21uKTtcXG5uZXQvbWFjODAyMTEvYXAuYzoxODpcXHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHNkYXRhLVxcdTAwM2Vsb2NhbDtcXG5uZXQvbWFjODAyMTEvYXAuYy0xOS1cXHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQ7XFxuLS1cXG5uZXQvbWFjODAyMTEvYXAuYz01MT1pZWVlODAyMTFfcnhfZW1sX29wX21vZGVfbm90aWYoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvYXAuYy01OC1cXHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQgPSAodm9pZCAqKXNrYi1cXHUwMDNlZGF0YTtcXG5uZXQvbWFjODAyMTEvYXAuYzo1OTpcXHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHNkYXRhLVxcdTAwM2Vsb2NhbDtcXG5uZXQvbWFjODAyMTEvYXAuYy02MC1cXHR1OCBjb250cm9sID0gbWdtdC1cXHUwMDNldS5hY3Rpb24uZW1sX29tbi5jb250cm9sO1xcbi0tXFxubmV0L21hYzgwMjExL2FwLmM9MzI0PXZvaWQgaWVlZTgwMjExX3Vocl9kaXNhYmxlX2RiZV9hbGxfc3RhcyhzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluaylcXG4tLVxcbm5ldC9tYWM4MDIxMS9hcC5jLTMyNi1cXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IGxpbmstXFx1MDAzZXNkYXRhO1xcbm5ldC9tYWM4MDIxMS9hcC5jOjMyNzpcXHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHNkYXRhLVxcdTAwM2Vsb2NhbDtcXG5uZXQvbWFjODAyMTEvYXAuYy0zMjgtXFx0c3RydWN0IGllZWU4MDIxMV9jaGFuY3R4X2NvbmYgKmNoYW5jdHhfY29uZjtcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYz05Nj1zdGF0aWMgaW50IGllZWU4MDIxMV9zZXRfbW9uX29wdGlvbnMoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtOTgte1xcbm5ldC9tYWM4MDIxMS9jZmcuYzo5OTpcXHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHNkYXRhLVxcdTAwM2Vsb2NhbDtcXG5uZXQvbWFjODAyMTEvY2ZnLmMtMTAwLVxcdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKm1vbml0b3Jfc2RhdGEgPSBOVUxMO1xcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jPTIwNj1zdGF0aWMgc3RydWN0IHdpcmVsZXNzX2RldiAqaWVlZTgwMjExX2FkZF9pZmFjZShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTIxMS17XFxubmV0L21hYzgwMjExL2NmZy5jOjIxMjpcXHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHdpcGh5X3ByaXYod2lwaHkpO1xcbm5ldC9tYWM4MDIxMS9jZmcuYy0yMTMtXFx0c3RydWN0IHdpcmVsZXNzX2RldiAqd2RldjtcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYz0yNTk9c3RhdGljIGludCBpZWVlODAyMTFfY2hhbmdlX2lmYWNlKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjY0LVxcdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gSUVFRTgwMjExX0RFVl9UT19TVUJfSUYoZGV2KTtcXG5uZXQvbWFjODAyMTEvY2ZnLmM6MjY1OlxcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gc2RhdGEtXFx1MDAzZWxvY2FsO1xcbm5ldC9tYWM4MDIxMS9jZmcuYy0yNjYtXFx0c3RydWN0IHN0YV9pbmZvICpzdGE7XFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmM9NTg1PXN0YXRpYyBpbnQgaWVlZTgwMjExX3NldF90eChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy01ODcte1xcbm5ldC9tYWM4MDIxMS9jZmcuYzo1ODg6XFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cXHUwMDNlbG9jYWw7XFxubmV0L21hYzgwMjExL2NmZy5jLTU4OS1cXHRzdHJ1Y3QgaWVlZTgwMjExX2tleSAqa2V5O1xcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jPTYxMz1zdGF0aWMgaW50IGllZWU4MDIxMV9hZGRfa2V5KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtNjE5LVxcdFxcdGllZWU4MDIxMV9saW5rX29yX2RlZmxpbmsoc2RhdGEsIGxpbmtfaWQsIGZhbHNlKTtcXG5uZXQvbWFjODAyMTEvY2ZnLmM6NjIwOlxcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gc2RhdGEtXFx1MDAzZWxvY2FsO1xcbm5ldC9tYWM4MDIxMS9jZmcuYy02MjEtXFx0c3RydWN0IHN0YV9pbmZvICpzdGEgPSBOVUxMO1xcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jPTczOT1pZWVlODAyMTFfbG9va3VwX2tleShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSwgaW50IGxpbmtfaWQsXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtNzQxLXtcXG5uZXQvbWFjODAyMTEvY2ZnLmM6NzQyOlxcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsIF9fbWF5YmVfdW51c2VkID0gc2RhdGEtXFx1MDAzZWxvY2FsO1xcbm5ldC9tYWM4MDIxMS9jZmcuYy03NDMtXFx0c3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmsgPSBcXHUwMDI2c2RhdGEtXFx1MDAzZWRlZmxpbms7XFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmM9Nzk3PXN0YXRpYyBpbnQgaWVlZTgwMjExX2RlbF9rZXkoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy04MDEtXFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBJRUVFODAyMTFfV0RFVl9UT19TVUJfSUYod2Rldik7XFxubmV0L21hYzgwMjExL2NmZy5jOjgwMjpcXHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHNkYXRhLVxcdTAwM2Vsb2NhbDtcXG5uZXQvbWFjODAyMTEvY2ZnLmMtODAzLVxcdHN0cnVjdCBpZWVlODAyMTFfa2V5ICprZXk7XFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmM9OTk5PXN0YXRpYyBpbnQgaWVlZTgwMjExX2R1bXBfc3RhdGlvbihzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTEwMDItXFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBJRUVFODAyMTFfV0RFVl9UT19TVUJfSUYod2Rldik7XFxubmV0L21hYzgwMjExL2NmZy5jOjEwMDM6XFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cXHUwMDNlbG9jYWw7XFxubmV0L21hYzgwMjExL2NmZy5jLTEwMDQtXFx0c3RydWN0IHN0YV9pbmZvICpzdGE7XFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmM9MTAyNj1zdGF0aWMgaW50IGllZWU4MDIxMV9kdW1wX3N1cnZleShzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTEwMjgte1xcbm5ldC9tYWM4MDIxMS9jZmcuYzoxMDI5OlxcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gd2Rldl9wcml2KGRldi1cXHUwMDNlaWVlZTgwMjExX3B0cik7XFxubmV0L21hYzgwMjExL2NmZy5jLTEwMzAtXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmM9MTAzND1zdGF0aWMgaW50IGllZWU4MDIxMV9nZXRfc3RhdGlvbihzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTEwMzgtXFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBJRUVFODAyMTFfV0RFVl9UT19TVUJfSUYod2Rldik7XFxubmV0L21hYzgwMjExL2NmZy5jOjEwMzk6XFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cXHUwMDNlbG9jYWw7XFxubmV0L21hYzgwMjExL2NmZy5jLTEwNDAtXFx0c3RydWN0IHN0YV9pbmZvICpzdGE7XFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmM9MTA2MD1zdGF0aWMgaW50IGllZWU4MDIxMV9zZXRfbW9uaXRvcl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtMTA2My17XFxubmV0L21hYzgwMjExL2NmZy5jOjEwNjQ6XFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSB3aXBoeV9wcml2KHdpcGh5KTtcXG5uZXQvbWFjODAyMTEvY2ZnLmMtMTA2NS1cXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYz0xNDI1PXN0YXRpYyB2b2lkIGllZWU4MDIxMV91cGRhdGVfYXBfYmFuZHdpZHRoKHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rLFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTE0Mjcte1xcbm5ldC9tYWM4MDIxMS9jZmcuYzoxNDI4OlxcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gbGluay1cXHUwMDNlc2RhdGEtXFx1MDAzZWxvY2FsO1xcbm5ldC9tYWM4MDIxMS9jZmcuYy0xNDI5LVxcdHN0cnVjdCBpZWVlODAyMTFfY2hhbmN0eF9jb25mICpjaGFuY3R4X2NvbmY7XFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmM9MTYzMT1zdGF0aWMgaW50IGllZWU4MDIxMV9zdGFydF9hcChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTE2MzQtXFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBJRUVFODAyMTFfREVWX1RPX1NVQl9JRihkZXYpO1xcbm5ldC9tYWM4MDIxMS9jZmcuYzoxNjM1OlxcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gc2RhdGEtXFx1MDAzZWxvY2FsO1xcbm5ldC9tYWM4MDIxMS9jZmcuYy0xNjM2LVxcdHN0cnVjdCBiZWFjb25fZGF0YSAqb2xkO1xcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jPTIwMTE9c3RhdGljIGludCBpZWVlODAyMTFfc3RvcF9hcChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTIwMTUtXFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqdmxhbjtcXG5uZXQvbWFjODAyMTEvY2ZnLmM6MjAxNjpcXHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHNkYXRhLVxcdTAwM2Vsb2NhbDtcXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjAxNy1cXHRzdHJ1Y3QgYmVhY29uX2RhdGEgKm9sZF9iZWFjb247XFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjEyOS1cXG5uZXQvbWFjODAyMTEvY2ZnLmM6MjEzMDpzdGF0aWMgaW50IHN0YV9hcHBseV9hdXRoX2ZsYWdzKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbm5ldC9tYWM4MDIxMS9jZmcuYy0yMTMxLVxcdFxcdFxcdFxcdHN0cnVjdCBzdGFfaW5mbyAqc3RhLFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTIxODktXFxubmV0L21hYzgwMjExL2NmZy5jOjIxOTA6c3RhdGljIHZvaWQgc3RhX2FwcGx5X21lc2hfcGFyYW1zKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbm5ldC9tYWM4MDIxMS9jZmcuYy0yMTkxLVxcdFxcdFxcdFxcdCAgc3RydWN0IHN0YV9pbmZvICpzdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmM9MjI1NT1lbnVtIHN0YV9saW5rX2FwcGx5X21vZGUge1xcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTIyNjAtXFxubmV0L21hYzgwMjExL2NmZy5jOjIyNjE6c3RhdGljIGludCBzdGFfbGlua19hcHBseV9wYXJhbWV0ZXJzKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbm5ldC9tYWM4MDIxMS9jZmcuYy0yMjYyLVxcdFxcdFxcdFxcdCAgICAgc3RydWN0IHN0YV9pbmZvICpzdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjQ0OS1cXG5uZXQvbWFjODAyMTEvY2ZnLmM6MjQ1MDpzdGF0aWMgaW50IHN0YV9hcHBseV9wYXJhbWV0ZXJzKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbm5ldC9tYWM4MDIxMS9jZmcuYy0yNDUxLVxcdFxcdFxcdFxcdHN0cnVjdCBzdGFfaW5mbyAqc3RhLFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jPTI2MzQ9c3RhdGljIGludCBpZWVlODAyMTFfYWRkX3N0YXRpb24oc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy0yNjM3LXtcXG5uZXQvbWFjODAyMTEvY2ZnLmM6MjYzODpcXHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHdpcGh5X3ByaXYod2lwaHkpO1xcbm5ldC9tYWM4MDIxMS9jZmcuYy0yNjM5LVxcdHN0cnVjdCBzdGFfaW5mbyAqc3RhO1xcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jPTI3MTQ9c3RhdGljIGludCBpZWVlODAyMTFfZGVsX3N0YXRpb24oc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy0yNzI3LVxcbm5ldC9tYWM4MDIxMS9jZmcuYzoyNzI4OnN0YXRpYyBpbnQgaWVlZTgwMjExX3NldF9zdGFfNGFkZHIoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxubmV0L21hYzgwMjExL2NmZy5jLTI3MjktXFx0XFx0XFx0XFx0ICAgc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmM9Mjc4Nz1zdGF0aWMgaW50IGllZWU4MDIxMV9jaGFuZ2Vfc3RhdGlvbihzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTI3OTEtXFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBJRUVFODAyMTFfV0RFVl9UT19TVUJfSUYod2Rldik7XFxubmV0L21hYzgwMjExL2NmZy5jOjI3OTI6XFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSB3aXBoeV9wcml2KHdpcGh5KTtcXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjc5My1cXHRzdHJ1Y3Qgc3RhX2luZm8gKnN0YTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYz0zNDI3PXN0YXRpYyBpbnQgaWVlZTgwMjExX3NldF90eHFfcGFyYW1zKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtMzQzMC17XFxubmV0L21hYzgwMjExL2NmZy5jOjM0MzE6XFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSB3aXBoeV9wcml2KHdpcGh5KTtcXG5uZXQvbWFjODAyMTEvY2ZnLmMtMzQzMi1cXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IElFRUU4MDIxMV9ERVZfVE9fU1VCX0lGKGRldik7XFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmM9MzU2Nz1pZWVlODAyMTFfc2NoZWRfc2Nhbl9zdG9wKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtMzU2OS17XFxubmV0L21hYzgwMjExL2NmZy5jOjM1NzA6XFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSB3aXBoeV9wcml2KHdpcGh5KTtcXG5uZXQvbWFjODAyMTEvY2ZnLmMtMzU3MS1cXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYz0zNjM5PXN0YXRpYyBpbnQgaWVlZTgwMjExX3NldF93aXBoeV9wYXJhbXMoc3RydWN0IHdpcGh5ICp3aXBoeSwgaW50IHJhZGlvX2lkeCxcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy0zNjQxLXtcXG5uZXQvbWFjODAyMTEvY2ZnLmM6MzY0MjpcXHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHdpcGh5X3ByaXYod2lwaHkpO1xcbm5ldC9tYWM4MDIxMS9jZmcuYy0zNjQzLVxcdGludCBlcnI7XFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmM9MzcwOD1zdGF0aWMgaW50IGllZWU4MDIxMV9zZXRfdHhfcG93ZXIoc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy0zNzExLXtcXG5uZXQvbWFjODAyMTEvY2ZnLmM6MzcxMjpcXHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHdpcGh5X3ByaXYod2lwaHkpO1xcbm5ldC9tYWM4MDIxMS9jZmcuYy0zNzEzLVxcdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhO1xcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jPTM4MzU9c3RhdGljIGludCBpZWVlODAyMTFfZ2V0X3R4X3Bvd2VyKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtMzg0MC17XFxubmV0L21hYzgwMjExL2NmZy5jOjM4NDE6XFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSB3aXBoeV9wcml2KHdpcGh5KTtcXG5uZXQvbWFjODAyMTEvY2ZnLmMtMzg0Mi1cXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IElFRUU4MDIxMV9XREVWX1RPX1NVQl9JRih3ZGV2KTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYz0zODY3PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9yZmtpbGxfcG9sbChzdHJ1Y3Qgd2lwaHkgKndpcGh5KVxcbm5ldC9tYWM4MDIxMS9jZmcuYy0zODY4LXtcXG5uZXQvbWFjODAyMTEvY2ZnLmM6Mzg2OTpcXHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHdpcGh5X3ByaXYod2lwaHkpO1xcbm5ldC9tYWM4MDIxMS9jZmcuYy0zODcwLVxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jPTM4NzU9c3RhdGljIGludCBpZWVlODAyMTFfdGVzdG1vZGVfY21kKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtMzg3OC17XFxubmV0L21hYzgwMjExL2NmZy5jOjM4Nzk6XFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSB3aXBoeV9wcml2KHdpcGh5KTtcXG5uZXQvbWFjODAyMTEvY2ZnLmMtMzg4MC1cXHRzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmID0gTlVMTDtcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYz0zODk2PXN0YXRpYyBpbnQgaWVlZTgwMjExX3Rlc3Rtb2RlX2R1bXAoc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy0zOTAwLXtcXG5uZXQvbWFjODAyMTEvY2ZnLmM6MzkwMTpcXHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHdpcGh5X3ByaXYod2lwaHkpO1xcbm5ldC9tYWM4MDIxMS9jZmcuYy0zOTAyLVxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jPTM5ODM9c3RhdGljIGludCBpZWVlODAyMTFfc2V0X3Bvd2VyX21nbXQoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy0zOTg2LVxcdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gSUVFRTgwMjExX0RFVl9UT19TVUJfSUYoZGV2KTtcXG5uZXQvbWFjODAyMTEvY2ZnLmM6Mzk4NzpcXHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHdkZXZfcHJpdihkZXYtXFx1MDAzZWllZWU4MDIxMV9wdHIpO1xcbm5ldC9tYWM4MDIxMS9jZmcuYy0zOTg4LVxcdHVuc2lnbmVkIGludCBsaW5rX2lkO1xcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jPTQxMDM9c3RhdGljIGludCBpZWVlODAyMTFfc2V0X2JpdHJhdGVfbWFzayhzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTQxMDktXFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBJRUVFODAyMTFfREVWX1RPX1NVQl9JRihkZXYpO1xcbm5ldC9tYWM4MDIxMS9jZmcuYzo0MTEwOlxcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gd2Rldl9wcml2KGRldi1cXHUwMDNlaWVlZTgwMjExX3B0cik7XFxubmV0L21hYzgwMjExL2NmZy5jLTQxMTEtXFx0aW50IGksIHJldDtcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYz00MTczPXN0YXRpYyBib29sIGllZWU4MDIxMV9pc19zY2FuX29uZ29pbmcoc3RydWN0IHdpcGh5ICp3aXBoeSxcXG5uZXQvbWFjODAyMTEvY2ZnLmM6NDE3NDpcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcXG5uZXQvbWFjODAyMTEvY2ZnLmMtNDE3NS1cXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgY2ZnODAyMTFfY2hhbl9kZWYgKmNoYW5kZWYpXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmM9NDIxMD1zdGF0aWMgaW50IGllZWU4MDIxMV9zdGFydF9yYWRhcl9kZXRlY3Rpb24oc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy00MjE2LVxcdHN0cnVjdCBpZWVlODAyMTFfY2hhbl9yZXEgY2hhbnJlcSA9IHsgLm9wZXIgPSAqY2hhbmRlZiB9O1xcbm5ldC9tYWM4MDIxMS9jZmcuYzo0MjE3OlxcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gc2RhdGEtXFx1MDAzZWxvY2FsO1xcbm5ldC9tYWM4MDIxMS9jZmcuYy00MjE4LVxcdHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rX2RhdGE7XFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmM9NDI0NT1zdGF0aWMgdm9pZCBpZWVlODAyMTFfZW5kX2NhYyhzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTQyNDgtXFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBJRUVFODAyMTFfREVWX1RPX1NVQl9JRihkZXYpO1xcbm5ldC9tYWM4MDIxMS9jZmcuYzo0MjQ5OlxcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gc2RhdGEtXFx1MDAzZWxvY2FsO1xcbm5ldC9tYWM4MDIxMS9jZmcuYy00MjUwLVxcdHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rX2RhdGE7XFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmM9NDM3NT12b2lkIGllZWU4MDIxMV9jc2FfZmluaXNoKHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsIHVuc2lnbmVkIGludCBsaW5rX2lkKVxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTQzNzctXFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSB2aWZfdG9fc2RhdGEodmlmKTtcXG5uZXQvbWFjODAyMTEvY2ZnLmM6NDM3ODpcXHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHNkYXRhLVxcdTAwM2Vsb2NhbDtcXG5uZXQvbWFjODAyMTEvY2ZnLmMtNDM3OS1cXHRzdHJ1Y3QgaWVlZTgwMjExX2Jzc19jb25mICp0eF9ic3NfY29uZjtcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYz00NDE3PXZvaWQgaWVlZTgwMjExX2NoYW5uZWxfc3dpdGNoX2Rpc2Nvbm5lY3Qoc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZilcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy00NDIwLVxcdHN0cnVjdCBpZWVlODAyMTFfaWZfbWFuYWdlZCAqaWZtZ2QgPSBcXHUwMDI2c2RhdGEtXFx1MDAzZXUubWdkO1xcbm5ldC9tYWM4MDIxMS9jZmcuYzo0NDIxOlxcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gc2RhdGEtXFx1MDAzZWxvY2FsO1xcbm5ldC9tYWM4MDIxMS9jZmcuYy00NDIyLVxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jPTQ0Njc9c3RhdGljIGludCBfX2llZWU4MDIxMV9jc2FfZmluYWxpemUoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmtfZGF0YSlcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy00NDY5LVxcdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gbGlua19kYXRhLVxcdTAwM2VzZGF0YTtcXG5uZXQvbWFjODAyMTEvY2ZnLmM6NDQ3MDpcXHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHNkYXRhLVxcdTAwM2Vsb2NhbDtcXG5uZXQvbWFjODAyMTEvY2ZnLmMtNDQ3MS1cXHRzdHJ1Y3QgaWVlZTgwMjExX2Jzc19jb25mICpsaW5rX2NvbmYgPSBsaW5rX2RhdGEtXFx1MDAzZWNvbmY7XFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmM9NDU0ND12b2lkIGllZWU4MDIxMV9jc2FfZmluYWxpemVfd29yayhzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lwaHlfd29yayAqd29yaylcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy00NTQ4LVxcdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gbGluay1cXHUwMDNlc2RhdGE7XFxubmV0L21hYzgwMjExL2NmZy5jOjQ1NDk6XFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cXHUwMDNlbG9jYWw7XFxubmV0L21hYzgwMjExL2NmZy5jLTQ1NTAtXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmM9NDcwND1fX2llZWU4MDIxMV9jaGFubmVsX3N3aXRjaChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTQ3MTEtXFx0fTtcXG5uZXQvbWFjODAyMTEvY2ZnLmM6NDcxMjpcXHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHNkYXRhLVxcdTAwM2Vsb2NhbDtcXG5uZXQvbWFjODAyMTEvY2ZnLmMtNDcxMy1cXHRzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWxfc3dpdGNoIGNoX3N3aXRjaCA9IHtcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYz00ODIzPWludCBpZWVlODAyMTFfY2hhbm5lbF9zd2l0Y2goc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy00ODI2LVxcdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gSUVFRTgwMjExX0RFVl9UT19TVUJfSUYoZGV2KTtcXG5uZXQvbWFjODAyMTEvY2ZnLmM6NDgyNzpcXHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHNkYXRhLVxcdTAwM2Vsb2NhbDtcXG5uZXQvbWFjODAyMTEvY2ZnLmMtNDgyOC1cXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy00ODMzLVxcbm5ldC9tYWM4MDIxMS9jZmcuYzo0ODM0OmludCBpZWVlODAyMTFfYXR0YWNoX2Fja19za2Ioc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsIHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L21hYzgwMjExL2NmZy5jLTQ4MzUtXFx0XFx0XFx0ICAgICB1NjQgKmNvb2tpZSwgZ2ZwX3QgZ2ZwKVxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jPTQ4NjQ9aWVlZTgwMjExX3VwZGF0ZV9tZ210X2ZyYW1lX3JlZ2lzdHJhdGlvbnMoc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy00ODY3LXtcXG5uZXQvbWFjODAyMTEvY2ZnLmM6NDg2ODpcXHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHdpcGh5X3ByaXYod2lwaHkpO1xcbm5ldC9tYWM4MDIxMS9jZmcuYy00ODY5LVxcdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gSUVFRTgwMjExX1dERVZfVE9fU1VCX0lGKHdkZXYpO1xcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jPTQ5MDI9c3RhdGljIGludCBpZWVlODAyMTFfc2V0X2FudGVubmEoc3RydWN0IHdpcGh5ICp3aXBoeSwgaW50IHJhZGlvX2lkeCxcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy00OTA0LXtcXG5uZXQvbWFjODAyMTEvY2ZnLmM6NDkwNTpcXHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHdpcGh5X3ByaXYod2lwaHkpO1xcbm5ldC9tYWM4MDIxMS9jZmcuYy00OTA2LVxcdGludCByZXQ7XFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmM9NDkxOT1zdGF0aWMgaW50IGllZWU4MDIxMV9nZXRfYW50ZW5uYShzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBpbnQgcmFkaW9faWR4LFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTQ5MjEte1xcbm5ldC9tYWM4MDIxMS9jZmcuYzo0OTIyOlxcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gd2lwaHlfcHJpdih3aXBoeSk7XFxubmV0L21hYzgwMjExL2NmZy5jLTQ5MjMtXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmM9NDkyNz1zdGF0aWMgaW50IGllZWU4MDIxMV9zZXRfcmVrZXlfZGF0YShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTQ5MzAte1xcbm5ldC9tYWM4MDIxMS9jZmcuYzo0OTMxOlxcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gd2lwaHlfcHJpdih3aXBoeSk7XFxubmV0L21hYzgwMjExL2NmZy5jLTQ5MzItXFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBJRUVFODAyMTFfREVWX1RPX1NVQl9JRihkZXYpO1xcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jPTQ5NDI9c3RhdGljIGludCBpZWVlODAyMTFfcHJvYmVfcGVlcihzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTQ5NDUtXFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBJRUVFODAyMTFfREVWX1RPX1NVQl9JRihkZXYpO1xcbm5ldC9tYWM4MDIxMS9jZmcuYzo0OTQ2OlxcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gc2RhdGEtXFx1MDAzZWxvY2FsO1xcbm5ldC9tYWM4MDIxMS9jZmcuYy00OTQ3LVxcdHN0cnVjdCBpZWVlODAyMTFfcW9zX2hkciAqbnVsbGZ1bmM7XFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmM9NTA2NT1zdGF0aWMgaW50IGllZWU4MDIxMV9jZmdfZ2V0X2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy01MDcwLVxcdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gSUVFRTgwMjExX1dERVZfVE9fU1VCX0lGKHdkZXYpO1xcbm5ldC9tYWM4MDIxMS9jZmcuYzo1MDcxOlxcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gd2lwaHlfcHJpdih3aXBoeSk7XFxubmV0L21hYzgwMjExL2NmZy5jLTUwNzItXFx0c3RydWN0IGllZWU4MDIxMV9jaGFuY3R4X2NvbmYgKmNoYW5jdHhfY29uZjtcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYz01MTgwPXN0YXRpYyBpbnQgaWVlZTgwMjExX2RlbF90eF90cyhzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTUxODQtXFx0c3RydWN0IGllZWU4MDIxMV9pZl9tYW5hZ2VkICppZm1nZCA9IFxcdTAwMjZzZGF0YS1cXHUwMDNldS5tZ2Q7XFxubmV0L21hYzgwMjExL2NmZy5jOjUxODU6XFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSB3aXBoeV9wcml2KHdpcGh5KTtcXG5uZXQvbWFjODAyMTEvY2ZnLmMtNTE4Ni1cXHRpbnQgYWM7XFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmM9NTM2OD1zdGF0aWMgaW50IGllZWU4MDIxMV9nZXRfdHhxX3N0YXRzKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtNTM3MS17XFxubmV0L21hYzgwMjExL2NmZy5jOjUzNzI6XFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSB3aXBoeV9wcml2KHdpcGh5KTtcXG5uZXQvbWFjODAyMTEvY2ZnLmMtNTM3My1cXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYz01NDA4PWllZWU4MDIxMV9nZXRfZnRtX3Jlc3BvbmRlcl9zdGF0cyhzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTU0MTEte1xcbm5ldC9tYWM4MDIxMS9jZmcuYzo1NDEyOlxcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gd2lwaHlfcHJpdih3aXBoeSk7XFxubmV0L21hYzgwMjExL2NmZy5jLTU0MTMtXFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBJRUVFODAyMTFfREVWX1RPX1NVQl9JRihkZXYpO1xcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jPTU0MTk9aWVlZTgwMjExX3N0YXJ0X3Btc3Ioc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqZGV2LFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTU0MjEte1xcbm5ldC9tYWM4MDIxMS9jZmcuYzo1NDIyOlxcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gd2lwaHlfcHJpdih3aXBoeSk7XFxubmV0L21hYzgwMjExL2NmZy5jLTU0MjMtXFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBJRUVFODAyMTFfV0RFVl9UT19TVUJfSUYoZGV2KTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYz01NDI5PWllZWU4MDIxMV9hYm9ydF9wbXNyKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKmRldixcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy01NDMxLXtcXG5uZXQvbWFjODAyMTEvY2ZnLmM6NTQzMjpcXHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHdpcGh5X3ByaXYod2lwaHkpO1xcbm5ldC9tYWM4MDIxMS9jZmcuYy01NDMzLVxcdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gSUVFRTgwMjExX1dERVZfVE9fU1VCX0lGKGRldik7XFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmM9NTQ4Mj1zdGF0aWMgaW50IGllZWU4MDIxMV9zZXRfc2FyX3NwZWNzKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtNTQ4NC17XFxubmV0L21hYzgwMjExL2NmZy5jOjU0ODU6XFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSB3aXBoeV9wcml2KHdpcGh5KTtcXG5uZXQvbWFjODAyMTEvY2ZnLmMtNTQ4Ni1cXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYz01NTk1PXN0YXRpYyBpbnQgaWVlZTgwMjExX2NvbG9yX2NoYW5nZV9maW5hbGl6ZShzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluaylcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy01NTk3LVxcdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gbGluay1cXHUwMDNlc2RhdGE7XFxubmV0L21hYzgwMjExL2NmZy5jOjU1OTg6XFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cXHUwMDNlbG9jYWw7XFxubmV0L21hYzgwMjExL2NmZy5jLTU1OTktXFx0dTY0IGNoYW5nZWQgPSAwO1xcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jPTU2MjA9dm9pZCBpZWVlODAyMTFfY29sb3JfY2hhbmdlX2ZpbmFsaXplX3dvcmsoc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy01NjI3LVxcdHN0cnVjdCBpZWVlODAyMTFfYnNzX2NvbmYgKmxpbmtfY29uZiA9IGxpbmstXFx1MDAzZWNvbmY7XFxubmV0L21hYzgwMjExL2NmZy5jOjU2Mjg6XFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cXHUwMDNlbG9jYWw7XFxubmV0L21hYzgwMjExL2NmZy5jLTU2MjktXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmM9NTcxOT1pZWVlODAyMTFfY29sb3JfY2hhbmdlKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtNTcyMi1cXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IElFRUU4MDIxMV9ERVZfVE9fU1VCX0lGKGRldik7XFxubmV0L21hYzgwMjExL2NmZy5jOjU3MjM6XFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cXHUwMDNlbG9jYWw7XFxubmV0L21hYzgwMjExL2NmZy5jLTU3MjQtXFx0c3RydWN0IGllZWU4MDIxMV9ic3NfY29uZiAqbGlua19jb25mO1xcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jPTU3Nzk9aWVlZTgwMjExX3NldF9yYWRhcl9iYWNrZ3JvdW5kKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtNTc4MS17XFxubmV0L21hYzgwMjExL2NmZy5jOjU3ODI6XFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSB3aXBoeV9wcml2KHdpcGh5KTtcXG5uZXQvbWFjODAyMTEvY2ZnLmMtNTc4My1cXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYz01ODE5PWllZWU4MDIxMV9hZGRfbGlua19zdGF0aW9uKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtNTgyMi1cXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IElFRUU4MDIxMV9ERVZfVE9fU1VCX0lGKGRldik7XFxubmV0L21hYzgwMjExL2NmZy5jOjU4MjM6XFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSB3aXBoeV9wcml2KHdpcGh5KTtcXG5uZXQvbWFjODAyMTEvY2ZnLmMtNTgyNC1cXHRzdHJ1Y3Qgc3RhX2luZm8gKnN0YTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYz01ODYxPWllZWU4MDIxMV9tb2RfbGlua19zdGF0aW9uKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtNTg2NC1cXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IElFRUU4MDIxMV9ERVZfVE9fU1VCX0lGKGRldik7XFxubmV0L21hYzgwMjExL2NmZy5jOjU4NjU6XFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSB3aXBoeV9wcml2KHdpcGh5KTtcXG5uZXQvbWFjODAyMTEvY2ZnLmMtNTg2Ni1cXHRzdHJ1Y3Qgc3RhX2luZm8gKnN0YTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYz01OTA2PXN0YXRpYyBpbnQgaWVlZTgwMjExX3NldF9od190aW1lc3RhbXAoc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy01OTEwLVxcdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gSUVFRTgwMjExX0RFVl9UT19TVUJfSUYoZGV2KTtcXG5uZXQvbWFjODAyMTEvY2ZnLmM6NTkxMTpcXHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHNkYXRhLVxcdTAwM2Vsb2NhbDtcXG5uZXQvbWFjODAyMTEvY2ZnLmMtNTkxMi1cXG4tLVxcbm5ldC9tYWM4MDIxMS9jaGFuLmM9MTExPXN0YXRpYyB2b2lkXFxubmV0L21hYzgwMjExL2NoYW4uYzoxMTI6aWVlZTgwMjExX2NoYW5jdHhfdXNlcl9pdGVyX25leHQoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxubmV0L21hYzgwMjExL2NoYW4uYy0xMTMtXFx0XFx0XFx0XFx0IHN0cnVjdCBpZWVlODAyMTFfY2hhbmN0eCAqY3R4LFxcbi0tXFxubmV0L21hYzgwMjExL2NoYW4uYy0xOTAtXFxubmV0L21hYzgwMjExL2NoYW4uYzoxOTE6aW50IGllZWU4MDIxMV9jaGFuY3R4X251bV9hc3NpZ25lZChzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcXG5uZXQvbWFjODAyMTEvY2hhbi5jLTE5Mi1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5jdHggKmN0eClcXG4tLVxcbm5ldC9tYWM4MDIxMS9jaGFuLmMtMjAyLVxcbm5ldC9tYWM4MDIxMS9jaGFuLmM6MjAzOnN0YXRpYyBpbnQgaWVlZTgwMjExX2NoYW5jdHhfbnVtX3Jlc2VydmVkKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbm5ldC9tYWM4MDIxMS9jaGFuLmMtMjA0LVxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IGllZWU4MDIxMV9jaGFuY3R4ICpjdHgpXFxuLS1cXG5uZXQvbWFjODAyMTEvY2hhbi5jLTIxNC1cXG5uZXQvbWFjODAyMTEvY2hhbi5jOjIxNTppbnQgaWVlZTgwMjExX2NoYW5jdHhfcmVmY291bnQoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxubmV0L21hYzgwMjExL2NoYW4uYy0yMTYtXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBpZWVlODAyMTFfY2hhbmN0eCAqY3R4KVxcbi0tXFxubmV0L21hYzgwMjExL2NoYW4uYy0yMzMtXFxubmV0L21hYzgwMjExL2NoYW4uYzoyMzQ6c3RhdGljIGludCBpZWVlODAyMTFfbnVtX2NoYW5jdHgoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsIGludCByYWRpb19pZHgpXFxubmV0L21hYzgwMjExL2NoYW4uYy0yMzUte1xcbi0tXFxubmV0L21hYzgwMjExL2NoYW4uYy0yNDktXFxubmV0L21hYzgwMjExL2NoYW4uYzoyNTA6c3RhdGljIGJvb2wgaWVlZTgwMjExX2Nhbl9jcmVhdGVfbmV3X2NoYW5jdHgoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxubmV0L21hYzgwMjExL2NoYW4uYy0yNTEtXFx0XFx0XFx0XFx0XFx0ICAgICBpbnQgcmFkaW9faWR4KVxcbi0tXFxubmV0L21hYzgwMjExL2NoYW4uYz0yNjA9aWVlZTgwMjExX2xpbmtfZ2V0X2NoYW5jdHgoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmspXFxubmV0L21hYzgwMjExL2NoYW4uYy0yNjEte1xcbm5ldC9tYWM4MDIxMS9jaGFuLmM6MjYyOlxcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsIF9fbWF5YmVfdW51c2VkID0gbGluay1cXHUwMDNlc2RhdGEtXFx1MDAzZWxvY2FsO1xcbm5ldC9tYWM4MDIxMS9jaGFuLmMtMjYzLVxcdHN0cnVjdCBpZWVlODAyMTFfY2hhbmN0eF9jb25mICpjb25mO1xcbi0tXFxubmV0L21hYzgwMjExL2NoYW4uYz0zMzM9c3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfY2hhbl9yZXEgKlxcbm5ldC9tYWM4MDIxMS9jaGFuLmM6MzM0Ol9pZWVlODAyMTFfY2hhbmN0eF9jb21wYXRpYmxlKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbm5ldC9tYWM4MDIxMS9jaGFuLmMtMzM1LVxcdFxcdFxcdCAgICAgIHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpza2lwX2xpbmssXFxuLS1cXG5uZXQvbWFjODAyMTEvY2hhbi5jPTM1OD1zdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9jaGFuX3JlcSAqXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE3OjQzOjUzLjI3OTczNzYzMloiLCJTZXEiOjI3LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMDQ1NDEwOTQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKlRyYWNpbmcgdGhlIElFRUU4MDIxMSBMb2NhbCBTdHJ1Y3R1cmUgQWxsb2NhdGlvbioqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW4uIEkgbmVlZCB0byBmaWd1cmUgb3V0IHByZWNpc2VseSB3aGVyZSB0aGUgYHN0cnVjdCBpZWVlODAyMTFfbG9jYWxgIGlzIGJlaW5nIGFsbG9jYXRlZCB3aXRoaW4gdGhlIHdpcmVsZXNzIHN0YWNrLiBNeSBpbml0aWFsIGh1bmNoIGlzIHRoYXQgaXQncyBsaWtlbHkgaGFuZGxlZCBieSBlaXRoZXIgYGllZWU4MDIxMV9hbGxvY19od2Agb3IgcGVyaGFwcyBgd2lwaHlfbmV3X25tYCDigJMgb3IgcG90ZW50aWFsbHkgc29tZXRoaW5nIGVsc2UgZW50aXJlbHkgaW4gdGhhdCBpbnN0YW50aWF0aW9uIGNoYWluLCBzbyBJIG5lZWQgdG8gY2hlY2sgdGhvc2UgYXJlYXMuIEkgbmVlZCB0byBwaW5wb2ludCB0aGUgZXhhY3QgZnVuY3Rpb24gcmVzcG9uc2libGUuIEl0J3MgY3J1Y2lhbCB0byB1bmRlcnN0YW5kIHRoaXMgaW5pdGlhbCBhbGxvY2F0aW9uIHBvaW50IHRvIHRoZW4gdHJhY2sgbWVtb3J5IG1hbmFnZW1lbnQsIGluaXRpYWxpemF0aW9uLCBhbmQgdWx0aW1hdGVseSwgaG93IHRoaXMgY29yZSBzdHJ1Y3R1cmUgdGllcyBpbnRvIHRoZSB3aWRlciBmcmFtZXdvcmsuIEdvdHRhIGxvY2F0ZSBpdCBhbmQgY2hlY2sgd2hhdCBlbHNlIHRoZSBhbGxvY2F0aW5nIGZ1bmN0aW9uIG1pZ2h0IGJlIGRvaW5nIGF0IHRoZSB0aW1lIG9mIGluc3RhbnRpYXRpb24sIGFuZCBsb29rIGZvciBwb3RlbnRpYWwgaG9va3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3MzcyLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTc6NDM6NTUuMzI1MTUxOTg2WiIsIlNlcSI6MjgsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NDQwMDQwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpZWVlODAyMTFfYWxsb2NfaHdcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L21hYzgwMjExXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9tYWluLmM9Nzc1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3ZodF9jYXAgbWFjODAyMTFfdmh0X2NhcGFfbW9kX21hc2sgPSB7XFxuLS1cXG5uZXQvbWFjODAyMTEvbWFpbi5jLTc5Mi1cXG5uZXQvbWFjODAyMTEvbWFpbi5jOjc5MzpzdHJ1Y3QgaWVlZTgwMjExX2h3ICppZWVlODAyMTFfYWxsb2NfaHdfbm0oc2l6ZV90IHByaXZfZGF0YV9sZW4sXFxubmV0L21hYzgwMjExL21haW4uYy03OTQtXFx0XFx0XFx0XFx0XFx0ICAgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgKm9wcyxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tYWluLmMtMTA1MC19XFxubmV0L21hYzgwMjExL21haW4uYzoxMDUxOkVYUE9SVF9TWU1CT0woaWVlZTgwMjExX2FsbG9jX2h3X25tKTtcXG5uZXQvbWFjODAyMTEvbWFpbi5jLTEwNTItXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE3OjQzOjU1LjQxOTU1NzgyNVoiLCJTZXEiOjI5LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxNzYzMTYxMjA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgYG1hYzgwMjExYCBJbml0aWFsaXphdGlvbioqXG5cbk9rYXksIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiBob3cgdGhlIGBsb2NhbGAgc3RydWN0dXJlIGlzIGFsbG9jYXRlZCB3aXRoaW4gdGhlIGBtYWM4MDIxMWAgc3Vic3lzdGVtLiBJIHJlY2FsbCB0aGF0J3MgdGhlIGNvcmUgc3RydWN0dXJlIHJlcHJlc2VudGluZyBhIHBhcnRpY3VsYXIgd2lyZWxlc3MgZGV2aWNlLiBJJ2xsIG5lZWQgdG8gZ28gdG8gYG5ldC9tYWM4MDIxMS9tYWluLmNgIGFuZCB0YWtlIGEgbG9vayBhcm91bmQgbGluZSA3OTMsIHRoZXJlIHNob3VsZCBiZSBzb21lIHJlbGV2YW50IGNvZGUgYXJvdW5kIHRoZSBkcml2ZXIgaW5pdGlhbGl6YXRpb24gcHJvY2Vzcy4gTGV0J3Mgc2VlIGhvdyB0aGF0IGNydWNpYWwgYGxvY2FsYCB2YXJpYWJsZSBjb21lcyBpbnRvIGJlaW5nLi4uIEl0J3MgYWxsIGFib3V0IHVuZGVyc3RhbmRpbmcgcmVzb3VyY2UgbWFuYWdlbWVudCBhbmQgaG93IHRoZSBkcml2ZXIgZ2V0cyBzZXQgdXAsIHNvIEkgY2FuIHNlZSBhbnkgcG90ZW50aWFsIGNvbmN1cnJlbmN5IHByb2JsZW1zLiBJJ20gYWZ0ZXIgdGhlIGFsbG9jYXRpb24gaXRzZWxmLCB0aGUgcmVsZXZhbnQgYXJndW1lbnRzLCBhbmQgYW55IGludGVyYWN0aW9ucyB3aXRoIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlIHNldHVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzg5MCwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE3OjQzOjU3LjE4MjcyMjA0NFoiLCJTZXEiOjMwLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTQ4NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L21hYzgwMjExL21haW4uY1wiLFxuICBcIkZpcnN0TGluZVwiOiA3OTMsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA3OTM6XFx0c3RydWN0IGllZWU4MDIxMV9odyAqaWVlZTgwMjExX2FsbG9jX2h3X25tKHNpemVfdCBwcml2X2RhdGFfbGVuLFxcbiA3OTQ6XFx0XFx0XFx0XFx0XFx0XFx0ICAgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgKm9wcyxcXG4gNzk1OlxcdFxcdFxcdFxcdFxcdFxcdCAgIGNvbnN0IGNoYXIgKnJlcXVlc3RlZF9uYW1lKVxcbiA3OTY6XFx0e1xcbiA3OTc6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWw7XFxuIDc5ODpcXHRcXHRpbnQgcHJpdl9zaXplLCBpO1xcbiA3OTk6XFx0XFx0c3RydWN0IHdpcGh5ICp3aXBoeTtcXG4gODAwOlxcdFxcdGJvb2wgZW11bGF0ZV9jaGFuY3R4O1xcbiA4MDE6XFx0XFxuIDgwMjpcXHRcXHRpZiAoV0FSTl9PTighb3BzLVxcdTAwM2V0eCB8fCAhb3BzLVxcdTAwM2VzdGFydCB8fCAhb3BzLVxcdTAwM2VzdG9wIHx8ICFvcHMtXFx1MDAzZWNvbmZpZyB8fFxcbiA4MDM6XFx0XFx0XFx0ICAgICFvcHMtXFx1MDAzZWFkZF9pbnRlcmZhY2UgfHwgIW9wcy1cXHUwMDNlcmVtb3ZlX2ludGVyZmFjZSB8fFxcbiA4MDQ6XFx0XFx0XFx0ICAgICFvcHMtXFx1MDAzZWNvbmZpZ3VyZV9maWx0ZXIgfHwgIW9wcy1cXHUwMDNld2FrZV90eF9xdWV1ZSkpXFxuIDgwNTpcXHRcXHRcXHRyZXR1cm4gTlVMTDtcXG4gODA2OlxcdFxcbiA4MDc6XFx0XFx0aWYgKFdBUk5fT04ob3BzLVxcdTAwM2VzdGFfc3RhdGUgXFx1MDAyNlxcdTAwMjYgKG9wcy1cXHUwMDNlc3RhX2FkZCB8fCBvcHMtXFx1MDAzZXN0YV9yZW1vdmUpKSlcXG4gODA4OlxcdFxcdFxcdHJldHVybiBOVUxMO1xcbiA4MDk6XFx0XFxuIDgxMDpcXHRcXHRpZiAoV0FSTl9PTighIW9wcy1cXHUwMDNlbGlua19pbmZvX2NoYW5nZWQgIT0gISFvcHMtXFx1MDAzZXZpZl9jZmdfY2hhbmdlZCB8fFxcbiA4MTE6XFx0XFx0XFx0ICAgIChvcHMtXFx1MDAzZWxpbmtfaW5mb19jaGFuZ2VkIFxcdTAwMjZcXHUwMDI2IG9wcy1cXHUwMDNlYnNzX2luZm9fY2hhbmdlZCkpKVxcbiA4MTI6XFx0XFx0XFx0cmV0dXJuIE5VTEw7XFxuIDgxMzpcXHRcXG4gODE0OlxcdFxcdC8qIGNoZWNrIGFsbCBvciBubyBjaGFubmVsIGNvbnRleHQgb3BlcmF0aW9ucyBleGlzdCAqL1xcbiA4MTU6XFx0XFx0aWYgKG9wcy1cXHUwMDNlYWRkX2NoYW5jdHggPT0gaWVlZTgwMjExX2VtdWxhdGVfYWRkX2NoYW5jdHggXFx1MDAyNlxcdTAwMjZcXG4gODE2OlxcdFxcdCAgICBvcHMtXFx1MDAzZXJlbW92ZV9jaGFuY3R4ID09IGllZWU4MDIxMV9lbXVsYXRlX3JlbW92ZV9jaGFuY3R4IFxcdTAwMjZcXHUwMDI2XFxuIDgxNzpcXHRcXHQgICAgb3BzLVxcdTAwM2VjaGFuZ2VfY2hhbmN0eCA9PSBpZWVlODAyMTFfZW11bGF0ZV9jaGFuZ2VfY2hhbmN0eCkge1xcbiA4MTg6XFx0XFx0XFx0aWYgKFdBUk5fT04ob3BzLVxcdTAwM2Vhc3NpZ25fdmlmX2NoYW5jdHggfHxcXG4gODE5OlxcdFxcdFxcdFxcdCAgICBvcHMtXFx1MDAzZXVuYXNzaWduX3ZpZl9jaGFuY3R4KSlcXG4gODIwOlxcdFxcdFxcdFxcdHJldHVybiBOVUxMO1xcbiA4MjE6XFx0XFx0XFx0ZW11bGF0ZV9jaGFuY3R4ID0gdHJ1ZTtcXG4gODIyOlxcdFxcdH0gZWxzZSB7XFxuIDgyMzpcXHRcXHRcXHRpZiAoV0FSTl9PTihvcHMtXFx1MDAzZWFkZF9jaGFuY3R4ID09IGllZWU4MDIxMV9lbXVsYXRlX2FkZF9jaGFuY3R4IHx8XFxuIDgyNDpcXHRcXHRcXHRcXHQgICAgb3BzLVxcdTAwM2VyZW1vdmVfY2hhbmN0eCA9PSBpZWVlODAyMTFfZW11bGF0ZV9yZW1vdmVfY2hhbmN0eCB8fFxcbiA4MjU6XFx0XFx0XFx0XFx0ICAgIG9wcy1cXHUwMDNlY2hhbmdlX2NoYW5jdHggPT0gaWVlZTgwMjExX2VtdWxhdGVfY2hhbmdlX2NoYW5jdHgpKVxcbiA4MjY6XFx0XFx0XFx0XFx0cmV0dXJuIE5VTEw7XFxuIDgyNzpcXHRcXHRcXHRpZiAoV0FSTl9PTighb3BzLVxcdTAwM2VhZGRfY2hhbmN0eCB8fFxcbiA4Mjg6XFx0XFx0XFx0XFx0ICAgICFvcHMtXFx1MDAzZXJlbW92ZV9jaGFuY3R4IHx8XFxuIDgyOTpcXHRcXHRcXHRcXHQgICAgIW9wcy1cXHUwMDNlY2hhbmdlX2NoYW5jdHggfHxcXG4gODMwOlxcdFxcdFxcdFxcdCAgICAhb3BzLVxcdTAwM2Vhc3NpZ25fdmlmX2NoYW5jdHggfHxcXG4gODMxOlxcdFxcdFxcdFxcdCAgICAhb3BzLVxcdTAwM2V1bmFzc2lnbl92aWZfY2hhbmN0eCkpXFxuIDgzMjpcXHRcXHRcXHRcXHRyZXR1cm4gTlVMTDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTc6NDM6NTcuMTgyODgzMDA0WiIsIlNlcSI6MzEsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI2OTQ2NjM4NzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzIGNvZGUuXG5cbioqQW5hbHl6aW5nIGBpZWVlODAyMTFfYWxsb2NfaHdfbm1gKipcblxuQWxyaWdodCwgdGltZSB0byBnZXQgaW50byB0aGUgd2VlZHMgb2YgYGllZWU4MDIxMV9hbGxvY19od19ubWAuIExldCdzIGFzc3VtZSB0aGlzIGlzIHRoZSBoYXJkd2FyZSBhbGxvY2F0aW9uIGZ1bmN0aW9uIGZvciBhbiA4MDIuMTEgZGV2aWNlLCB3aXRoIFwibm1cIiBwcm9iYWJseSByZWZlcnJpbmcgdG8gXCJuZXcgbW9kZWxcIiBvciBhIHNwZWNpZmljIGltcGxlbWVudGF0aW9uLiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBmdW5jdGlvbiBpbnRlcmZhY2VzIHdpdGggdGhlIGV4aXN0aW5nIDgwMi4xMSBzdGFjay4gSSdtIGxvb2tpbmcgZm9yIG1lbW9yeSBhbGxvY2F0aW9uIHBhdHRlcm5zLCBpbml0aWFsaXphdGlvbiBzdGVwcywgYW5kIGhvdyB0aGUgZHJpdmVyIGdldHMgaW50ZWdyYXRlZC4gSSBleHBlY3QgdG8gc2VlIGNhbGxzIHRvIGxvd2VyLWxldmVsIGhhcmR3YXJlIGluaXRpYWxpemF0aW9uIHJvdXRpbmVzLiBBcmUgdGhleSB1c2luZyBETUE/IEhvdyBhcmUgdGhlIGludGVycnVwdCBoYW5kbGVycyBzZXQgdXA/IEFueSBwb3RlbnRpYWwgbG9ja2luZyBtZWNoYW5pc21zPyBEb2VzIHRoaXMgdXNlIGEgY3VzdG9tIGRlc2NyaXB0b3IgZm9ybWF0IG9yIGFyZSB0aGV5IGZvbGxvd2luZyBhIHN0YW5kYXJkIG9uZT8gSSBuZWVkIHRvIGFuYWx5emUgaG93IHRoaXMgYWxsb2NhdGVzIHRoZSAqaHcqIHN0cnVjdHVyZSBhbmQgaWYgaXQgdXNlcyBhICpjZmcqIHN0cnVjdHVyZSB0byBpbml0aWFsaXplIGl0LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGlzIHdpbGwgYmUgZ2VuZXJpYyB0byBzZXZlcmFsIGhhcmR3YXJlIHBsYXRmb3Jtcywgb3IgaWYgaXQgaXMgcGxhdGZvcm0tc3BlY2lmaWMuIEFueSBvZiB0aGVzZSB3b3VsZCBhZmZlY3QgcGVyZm9ybWFuY2UgYW5kIHN0YWJpbGl0eSBkb3duIHRoZSBsaW5lLiBJIGFtIHJlYWxseSBpbnRlcmVzdGVkIGluIGhvdyB0aGV5IGluaXRpYWxpemUgdGhlIGhhcmR3YXJlIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4OTI4LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxNzo0Mzo1OS44Nzc1NDkyNThaIiwiU2VxIjozMiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY3ODMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9tYWM4MDIxMS9tYWluLmNcIixcbiAgXCJGaXJzdExpbmVcIjogODMzLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgODMzOlxcdFxcdFxcdGVtdWxhdGVfY2hhbmN0eCA9IGZhbHNlO1xcbiA4MzQ6XFx0XFx0fVxcbiA4MzU6XFx0XFxuIDgzNjpcXHRcXHQvKiBFbnN1cmUgMzItYnl0ZSBhbGlnbm1lbnQgb2Ygb3VyIHByaXZhdGUgZGF0YSBhbmQgaHcgcHJpdmF0ZSBkYXRhLlxcbiA4Mzc6XFx0XFx0ICogV2UgdXNlIHRoZSB3aXBoeSBwcml2IGRhdGEgZm9yIGJvdGggb3VyIGllZWU4MDIxMV9sb2NhbCBhbmQgZm9yXFxuIDgzODpcXHRcXHQgKiB0aGUgZHJpdmVyJ3MgcHJpdmF0ZSBkYXRhXFxuIDgzOTpcXHRcXHQgKlxcbiA4NDA6XFx0XFx0ICogSW4gbWVtb3J5IGl0J2xsIGJlIGxpa2UgdGhpczpcXG4gODQxOlxcdFxcdCAqXFxuIDg0MjpcXHRcXHQgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcXG4gODQzOlxcdFxcdCAqIHwgc3RydWN0IHdpcGh5XFx0ICAgIHxcXG4gODQ0OlxcdFxcdCAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xcbiA4NDU6XFx0XFx0ICogfCBzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICB8XFxuIDg0NjpcXHRcXHQgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcXG4gODQ3OlxcdFxcdCAqIHwgZHJpdmVyJ3MgcHJpdmF0ZSBkYXRhICAgfFxcbiA4NDg6XFx0XFx0ICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXFxuIDg0OTpcXHRcXHQgKlxcbiA4NTA6XFx0XFx0ICovXFxuIDg1MTpcXHRcXHRwcml2X3NpemUgPSBBTElHTihzaXplb2YoKmxvY2FsKSwgTkVUREVWX0FMSUdOKSArIHByaXZfZGF0YV9sZW47XFxuIDg1MjpcXHRcXG4gODUzOlxcdFxcdHdpcGh5ID0gd2lwaHlfbmV3X25tKFxcdTAwMjZtYWM4MDIxMV9jb25maWdfb3BzLCBwcml2X3NpemUsIHJlcXVlc3RlZF9uYW1lKTtcXG4gODU0OlxcdFxcbiA4NTU6XFx0XFx0aWYgKCF3aXBoeSlcXG4gODU2OlxcdFxcdFxcdHJldHVybiBOVUxMO1xcbiA4NTc6XFx0XFxuIDg1ODpcXHRcXHR3aXBoeS1cXHUwMDNlbWdtdF9zdHlwZXMgPSBpZWVlODAyMTFfZGVmYXVsdF9tZ210X3N0eXBlcztcXG4gODU5OlxcdFxcbiA4NjA6XFx0XFx0d2lwaHktXFx1MDAzZXByaXZpZCA9IG1hYzgwMjExX3dpcGh5X3ByaXZpZDtcXG4gODYxOlxcdFxcbiA4NjI6XFx0XFx0d2lwaHktXFx1MDAzZWZsYWdzIHw9IFdJUEhZX0ZMQUdfTkVUTlNfT0sgfFxcbiA4NjM6XFx0XFx0XFx0XFx0V0lQSFlfRkxBR180QUREUl9BUCB8XFxuIDg2NDpcXHRcXHRcXHRcXHRXSVBIWV9GTEFHXzRBRERSX1NUQVRJT04gfFxcbiA4NjU6XFx0XFx0XFx0XFx0V0lQSFlfRkxBR19SRVBPUlRTX09CU1MgfFxcbiA4NjY6XFx0XFx0XFx0XFx0V0lQSFlfRkxBR19PRkZDSEFOX1RYO1xcbiA4Njc6XFx0XFxuIDg2ODpcXHRcXHRpZiAoZW11bGF0ZV9jaGFuY3R4IHx8IG9wcy1cXHUwMDNlcmVtYWluX29uX2NoYW5uZWwpXFxuIDg2OTpcXHRcXHRcXHR3aXBoeS1cXHUwMDNlZmxhZ3MgfD0gV0lQSFlfRkxBR19IQVNfUkVNQUlOX09OX0NIQU5ORUw7XFxuIDg3MDpcXHRcXG4gODcxOlxcdFxcdHdpcGh5LVxcdTAwM2Vic3NfcGFyYW1fc3VwcG9ydCA9IFdJUEhZX0JTU19QQVJBTV9DVFNfUFJPVCB8XFxuIDg3MjpcXHRcXHRcXHRcXHRcXHQgICBXSVBIWV9CU1NfUEFSQU1fU0hPUlRfUFJFQU1CTEUgfFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxNzo0Mzo1OS44Nzc3MTg0ODhaIiwiU2VxIjozMywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Mjk5NTk3ODMyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gd2lwaHlfbmV3X25tIGFuZCBNZW1vcnkgQWxsb2NhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGB3aXBoeV9uZXdfbm1gLiBSaWdodCBhd2F5LCBteSByYWRhciBnb2VzIHVwIGJlY2F1c2UgSSBzZWUgYGt6YWxsb2NgIGlzIGJlaW5nIHVzZWQuIFRoYXQncyBhIGtleSBmdW5jdGlvbiBmb3IgYWxsb2NhdGluZyBtZW1vcnksIHNwZWNpZmljYWxseSBmb3IgaW5pdGlhbGl6aW5nIGl0IHRvIHplcm8uIEluIHRoaXMgY2FzZSwgaXQncyBncmFiYmluZyBzcGFjZSBmb3IgYm90aCB0aGUgYHdpcGh5YCBzdHJ1Y3R1cmUgaXRzZWxmICphbmQqIHRoZSBwcml2YXRlIGRhdGEgYXNzb2NpYXRlZCB3aXRoIGl0LiBUaGlzIGlzIHByZXR0eSBzdGFuZGFyZCBwcmFjdGljZSwgYnV0IGl0J3MgKmNyaXRpY2FsKiB0byB2ZXJpZnkgdGhpcyBhbGxvY2F0aW9uIG1ldGhvZCB0aG9yb3VnaGx5LiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgaXMgYmVpbmcgaGFuZGxlZCBjb3JyZWN0bHksIHBhcnRpY3VsYXJseSBpbiB0aGlzIGNvbnRleHQuIFRoZSBzaXplIGNhbGN1bGF0aW9uLCBhbnkgcG90ZW50aWFsIG9mZi1ieS1vbmUgZXJyb3JzLCBhbmQgYWxpZ25tZW50IGlzc3VlcyBhcmUgZ29pbmcgdG8gYmUgbXkgcHJpbWFyeSBjb25jZXJucy4gSSB3aWxsIGFsc28gYmUgb24gdGhlIGxvb2tvdXQgZm9yIHBvdGVudGlhbCBtZW1vcnkgbGVha3MsIHBhcnRpY3VsYXJseSBpZiBzb21ldGhpbmcgaGFwcGVucyB0byBkZS1hbGxvY2F0ZSBvbmUgcGFydCBhbmQgbm90IHRoZSBvdGhlciwgbGVhZGluZyB0byBhIGhhbGYtZnJlZWQgY2h1bmsgb2YgbWVtb3J5LiBMZXQncyBkZWx2ZSBpbiBhbmQgbWFrZSBzdXJlIHRoaXMgaXMgZG9uZSBzb3VuZGx5IGFuZCBzYWZlbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5ODkxLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxNzo0NDowMi44NzM2OTk4OTZaIiwiU2VxIjozNCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg2ODQxMDI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIndpcGh5X25ld19ubVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvd2lyZWxlc3NcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3dpcmVsZXNzL2NvcmUuYz01MTg9c3RhdGljIHZvaWQgY2ZnODAyMTFfd2lwaHlfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5uZXQvd2lyZWxlc3MvY29yZS5jLTU0OC1cXG5uZXQvd2lyZWxlc3MvY29yZS5jOjU0OTpzdHJ1Y3Qgd2lwaHkgKndpcGh5X25ld19ubShjb25zdCBzdHJ1Y3QgY2ZnODAyMTFfb3BzICpvcHMsIGludCBzaXplb2ZfcHJpdixcXG5uZXQvd2lyZWxlc3MvY29yZS5jLTU1MC1cXHRcXHRcXHQgICBjb25zdCBjaGFyICpyZXF1ZXN0ZWRfbmFtZSlcXG4tLVxcbm5ldC93aXJlbGVzcy9jb3JlLmMtNzAyLX1cXG5uZXQvd2lyZWxlc3MvY29yZS5jOjcwMzpFWFBPUlRfU1lNQk9MKHdpcGh5X25ld19ubSk7XFxubmV0L3dpcmVsZXNzL2NvcmUuYy03MDQtXFxuLS1cXG5uZXQvd2lyZWxlc3MvdGVzdHMvdXRpbC5jPTEzPWludCB0X3dpcGh5X2luaXQoc3RydWN0IGt1bml0X3Jlc291cmNlICpyZXNvdXJjZSwgdm9pZCAqY3R4KVxcbi0tXFxubmV0L3dpcmVsZXNzL3Rlc3RzL3V0aWwuYy0yMi1cXG5uZXQvd2lyZWxlc3MvdGVzdHMvdXRpbC5jOjIzOlxcdHdpcGh5ID0gd2lwaHlfbmV3X25tKG9wcywgc2l6ZW9mKCpwcml2KSwgXFxcImt1bml0XFxcIik7XFxubmV0L3dpcmVsZXNzL3Rlc3RzL3V0aWwuYy0yNC1cXHRLVU5JVF9BU1NFUlRfTk9UX05VTEwodGVzdCwgd2lwaHkpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxNzo0NDowMi45NjA1NDU4MjVaIiwiU2VxIjozNSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjMyMDQ5MDgwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipEaXZpbmcgaW50byBgd2lwaHlfbmV3X25tYCoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBhIG5ldyBXaS1GaSBQSFkgaXMgYmVpbmcgaGFuZGxlZCBpbnRlcm5hbGx5LiBMZXQncyBzdGFydCBieSBsb29raW5nIGF0IGB3aXBoeV9uZXdfbm1gIGluIGBuZXQvd2lyZWxlc3MvY29yZS5jYC4gVGhhdCBmdW5jdGlvbiBuYW1lIHN1Z2dlc3RzIGl0J3MgdGhlIHJpZ2h0IHBsYWNlIHRvIGJlZ2lu4oCUbGlrZWx5IHdoZXJlIHRoZSBuZXcgYHdpcGh5YCBzdHJ1Y3R1cmUgaXMgYWxsb2NhdGVkIGFuZCBpbml0aWFsaXplZCwgc3BlY2lmaWNhbGx5IHdoZW4gYSBuZXcgTmV0bGluayBtZXNzYWdlIGlzIHJlY2VpdmVkLCBnaXZlbiB0aGUgc3VmZml4IGBfbm1gIChOZXRsaW5rKS4gSSdsbCB3YW50IHRvIGNhcmVmdWxseSBleGFtaW5lIHRoZSBhcmd1bWVudHMgcGFzc2VkIHRvIHRoaXMgZnVuY3Rpb24sIHRoZSBpbnRlcm5hbCBkYXRhIHN0cnVjdHVyZXMgaXQgbWFuaXB1bGF0ZXMsIGFuZCB0aGUgb3ZlcmFsbCBhbGxvY2F0aW9uIGFuZCBpbml0aWFsaXphdGlvbiBwcm9jZXNzLiBJIHN1c3BlY3QgSSdsbCBzZWUgc29tZSBjYWxscyB0byBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZnVuY3Rpb25zIHNldHRpbmcgdXAgdGhlIGJhc2ljIHByb3BlcnRpZXMgb2YgdGhlIGB3aXBoeWAgb2JqZWN0LiBJ4oCZbSBleHBlY3RpbmcgYSBoaWdoLWxldmVsIGZ1bmN0aW9uLiBJdOKAmWxsIHByb2JhYmx5IGhhbmRsZSB0aGUgYWxsb2NhdGlvbiwgaW5pdGlhbCBzZXR1cCwgYW5kIHBvdGVudGlhbGx5IHJlZ2lzdHJhdGlvbiB3aXRoIHRoZSBrZXJuZWwncyB3aXJlbGVzcyBzdWJzeXN0ZW0uIExldCdzIHNlZSB3aGF0IGl0IGhhcyB0byB0ZWxsIG1lLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDQ3NCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE3OjQ0OjA1LjI4MTAzOTM4NVoiLCJTZXEiOjM2LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTEzMTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L3dpcmVsZXNzL2NvcmUuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA1NDksXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA1NDk6XFx0c3RydWN0IHdpcGh5ICp3aXBoeV9uZXdfbm0oY29uc3Qgc3RydWN0IGNmZzgwMjExX29wcyAqb3BzLCBpbnQgc2l6ZW9mX3ByaXYsXFxuIDU1MDpcXHRcXHRcXHRcXHQgICBjb25zdCBjaGFyICpyZXF1ZXN0ZWRfbmFtZSlcXG4gNTUxOlxcdHtcXG4gNTUyOlxcdFxcdHN0YXRpYyBhdG9taWNfdCB3aXBoeV9jb3VudGVyID0gQVRPTUlDX0lOSVQoMCk7XFxuIDU1MzpcXHRcXG4gNTU0OlxcdFxcdHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldjtcXG4gNTU1OlxcdFxcdGludCBhbGxvY19zaXplO1xcbiA1NTY6XFx0XFxuIDU1NzpcXHRcXHRXQVJOX09OKG9wcy1cXHUwMDNlYWRkX2tleSBcXHUwMDI2XFx1MDAyNiAoIW9wcy1cXHUwMDNlZGVsX2tleSB8fCAhb3BzLVxcdTAwM2VzZXRfZGVmYXVsdF9rZXkpKTtcXG4gNTU4OlxcdFxcdFdBUk5fT04ob3BzLVxcdTAwM2VhdXRoIFxcdTAwMjZcXHUwMDI2ICghb3BzLVxcdTAwM2Vhc3NvYyB8fCAhb3BzLVxcdTAwM2VkZWF1dGggfHwgIW9wcy1cXHUwMDNlZGlzYXNzb2MpKTtcXG4gNTU5OlxcdFxcdFdBUk5fT04ob3BzLVxcdTAwM2Vjb25uZWN0IFxcdTAwMjZcXHUwMDI2ICFvcHMtXFx1MDAzZWRpc2Nvbm5lY3QpO1xcbiA1NjA6XFx0XFx0V0FSTl9PTihvcHMtXFx1MDAzZWpvaW5faWJzcyBcXHUwMDI2XFx1MDAyNiAhb3BzLVxcdTAwM2VsZWF2ZV9pYnNzKTtcXG4gNTYxOlxcdFxcdFdBUk5fT04ob3BzLVxcdTAwM2VhZGRfdmlydHVhbF9pbnRmIFxcdTAwMjZcXHUwMDI2ICFvcHMtXFx1MDAzZWRlbF92aXJ0dWFsX2ludGYpO1xcbiA1NjI6XFx0XFx0V0FSTl9PTihvcHMtXFx1MDAzZWFkZF9zdGF0aW9uIFxcdTAwMjZcXHUwMDI2ICFvcHMtXFx1MDAzZWRlbF9zdGF0aW9uKTtcXG4gNTYzOlxcdFxcdFdBUk5fT04ob3BzLVxcdTAwM2VhZGRfbXBhdGggXFx1MDAyNlxcdTAwMjYgIW9wcy1cXHUwMDNlZGVsX21wYXRoKTtcXG4gNTY0OlxcdFxcdFdBUk5fT04ob3BzLVxcdTAwM2Vqb2luX21lc2ggXFx1MDAyNlxcdTAwMjYgIW9wcy1cXHUwMDNlbGVhdmVfbWVzaCk7XFxuIDU2NTpcXHRcXHRXQVJOX09OKG9wcy1cXHUwMDNlc3RhcnRfcDJwX2RldmljZSBcXHUwMDI2XFx1MDAyNiAhb3BzLVxcdTAwM2VzdG9wX3AycF9kZXZpY2UpO1xcbiA1NjY6XFx0XFx0V0FSTl9PTihvcHMtXFx1MDAzZXN0YXJ0X2FwIFxcdTAwMjZcXHUwMDI2ICFvcHMtXFx1MDAzZXN0b3BfYXApO1xcbiA1Njc6XFx0XFx0V0FSTl9PTihvcHMtXFx1MDAzZWpvaW5fb2NiIFxcdTAwMjZcXHUwMDI2ICFvcHMtXFx1MDAzZWxlYXZlX29jYik7XFxuIDU2ODpcXHRcXHRXQVJOX09OKG9wcy1cXHUwMDNlc3VzcGVuZCBcXHUwMDI2XFx1MDAyNiAhb3BzLVxcdTAwM2VyZXN1bWUpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxNzo0NDowNS4yODExOTIxNTVaIiwiU2VxIjozNywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTk5MjA2OTYxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkRpdmluZyBpbnRvIGB3aXBoeV9uZXdfbm1gIEFsbG9jYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gZm9jdXNpbmcgb24gdGhlIGFsbG9jYXRpb24gc2lkZSBvZiB0aGluZ3MgaW4gYHdpcGh5X25ld19ubWAgcmlnaHQgbm93LiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIHNwZWNpZmljIG1lbW9yeSBhbGxvY2F0aW9uIHN0cmF0ZWdpZXMgZW1wbG95ZWQgd2l0aGluIHRoaXMgZnVuY3Rpb24uIEl0J3MgY3J1Y2lhbCwgb2J2aW91c2x5LCBiZWNhdXNlIGFueSBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcyBvciBwb3RlbnRpYWwgbWVtb3J5IGxlYWtzIG9mdGVuIHJlYXIgdGhlaXIgaGVhZHMgZWFybHkgb24gaW4gdGhlIHByb2Nlc3Mgb2YgY3JlYXRpbmcgYSBuZXcgV2ktRmkgUEhZIG9iamVjdC4gSSBuZWVkIHRvIHRyYWNlIHRocm91Z2ggdGhlIGNvZGUsIG1heWJlIEknbGwgZ28gdGhyb3VnaCB0aGUgY2FsbCBzdGFjayB0byBzZWUgd2hlcmUgdGhpcyBvYmplY3QgaXMgY2FsbGVkLiBMZXQncyBzZWUgaG93IG11Y2ggbWVtb3J5IHdlJ3JlIHRhbGtpbmcgYWJvdXQsIHdoYXQncyBhbGxvY2F0ZWQgb24gdGhlIGhlYXAgdmVyc3VzIG9uIHRoZSBzdGFjaywgYW5kIGlmIHRoZXJlIGFyZSBhbnkgc3VidGxlIGluZWZmaWNpZW5jaWVzIGhhcHBlbmluZy4gSSB3YW50IHRvIGNoZWNrIGZvciBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTIxMywiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTc6NDQ6MDcuMjczMjY0NjcxWiIsIlNlcSI6MzgsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NTI1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvd2lyZWxlc3MvY29yZS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDU2OSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDU2OTpcXHRcXHRXQVJOX09OKG9wcy1cXHUwMDNlc2NoZWRfc2Nhbl9zdGFydCBcXHUwMDI2XFx1MDAyNiAhb3BzLVxcdTAwM2VzY2hlZF9zY2FuX3N0b3ApO1xcbiA1NzA6XFx0XFx0V0FSTl9PTihvcHMtXFx1MDAzZXJlbWFpbl9vbl9jaGFubmVsIFxcdTAwMjZcXHUwMDI2ICFvcHMtXFx1MDAzZWNhbmNlbF9yZW1haW5fb25fY2hhbm5lbCk7XFxuIDU3MTpcXHRcXHRXQVJOX09OKG9wcy1cXHUwMDNldGRsc19jaGFubmVsX3N3aXRjaCBcXHUwMDI2XFx1MDAyNiAhb3BzLVxcdTAwM2V0ZGxzX2NhbmNlbF9jaGFubmVsX3N3aXRjaCk7XFxuIDU3MjpcXHRcXHRXQVJOX09OKG9wcy1cXHUwMDNlYWRkX3R4X3RzIFxcdTAwMjZcXHUwMDI2ICFvcHMtXFx1MDAzZWRlbF90eF90cyk7XFxuIDU3MzpcXHRcXG4gNTc0OlxcdFxcdGFsbG9jX3NpemUgPSBzaXplb2YoKnJkZXYpICsgc2l6ZW9mX3ByaXY7XFxuIDU3NTpcXHRcXG4gNTc2OlxcdFxcdHJkZXYgPSBremFsbG9jKGFsbG9jX3NpemUsIEdGUF9LRVJORUwpO1xcbiA1Nzc6XFx0XFx0aWYgKCFyZGV2KVxcbiA1Nzg6XFx0XFx0XFx0cmV0dXJuIE5VTEw7XFxuIDU3OTpcXHRcXG4gNTgwOlxcdFxcdHJkZXYtXFx1MDAzZW9wcyA9IG9wcztcXG4gNTgxOlxcdFxcbiA1ODI6XFx0XFx0cmRldi1cXHUwMDNld2lwaHlfaWR4ID0gYXRvbWljX2luY19yZXR1cm4oXFx1MDAyNndpcGh5X2NvdW50ZXIpO1xcbiA1ODM6XFx0XFxuIDU4NDpcXHRcXHRpZiAodW5saWtlbHkocmRldi1cXHUwMDNld2lwaHlfaWR4IFxcdTAwM2MgMCkpIHtcXG4gNTg1OlxcdFxcdFxcdC8qIHVnaCwgd3JhcHBlZCEgKi9cXG4gNTg2OlxcdFxcdFxcdGF0b21pY19kZWMoXFx1MDAyNndpcGh5X2NvdW50ZXIpO1xcbiA1ODc6XFx0XFx0XFx0a2ZyZWUocmRldik7XFxuIDU4ODpcXHRcXHRcXHRyZXR1cm4gTlVMTDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTc6NDQ6MDcuMjczNDIxOTkxWiIsIlNlcSI6MzksIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjY1NjM2NzY0MjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBtYWM4MDIxMSBUWCBRdWV1ZSBTY2hlZHVsaW5nIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYG1hYzgwMjExYC4gVGhlIGBsb2NhbGAgc3RydWN0LCB3aGljaCBpcyBhbGxvY2F0ZWQgd2l0aCBga3phbGxvY2AsIG1lYW5zIGJvdGggYHNjaGVkdWxlX29wZW5gIGFuZCBgc2NoZWR1bGVfcm91bmRgIGFyZSBpbml0aWFsbHkgemVyb2VkLiBUaGF0J3MgdGhlIGJhc2VsaW5lLiBOb3cgbGV0J3MgZGlnIGludG8gdGhlIGNvZGUgaXRzZWxmLlxuXG5UaGUgZmlyc3QgY2hhbmdlIGlzIHRoZSBhZGRpdGlvbiBvZiBhIGBib29sIHNjaGVkdWxlX29wZW5bSUVFRTgwMjExX05VTV9BQ1NdYCBhcnJheSB0byB0aGUgYGllZWU4MDIxMV9sb2NhbGAgc3RydWN0IGluIGBpZWVlODAyMTFfaS5oYC4gVGhpcyBhcnJheSBoYXMgdGhlIHNhbWUgc2l6ZSBhcyBgc2NoZWR1bGVfcm91bmRgLCB3aGljaCBtYWtlcyBtZSB0aGluayB0aGV5J3JlIHNvbWVob3cgcmVsYXRlZCBhbmQgYm90aCBwZXItQUMuIFRoaXMgaXMgd2hlcmUgaXQgZ2V0cyBpbnRlcmVzdGluZywgd2l0aCB0aGUgY2hhbmdlcyBpbiBgbmV0L21hYzgwMjExL3R4LmNgLlxuXG5JbiBgaWVlZTgwMjExX25leHRfdHhxYCwgdGhlIG9yaWdpbmFsIGNoZWNrIHdhcyBgIWxvY2FsLVx1MDAzZXNjaGVkdWxlX3JvdW5kW2FjXWAuIE5vdyB0aGF0J3MgYmVlbiByZXBsYWNlZCB3aXRoIGAhbG9jYWwtXHUwMDNlc2NoZWR1bGVfb3BlblthY11gLiBJdCBsb29rcyBsaWtlIHRoZSBpbnRlbnQgaXMgdG8gbm93IHVzZSBgc2NoZWR1bGVfb3BlbmAgdG8gZGV0ZXJtaW5lIGlmIHdlIHNob3VsZCBsb29rIGZvciBhIFRYUS5cblxuVGhlIGBpZWVlODAyMTFfdHhxX3NjaGVkdWxlX3N0YXJ0YCBmdW5jdGlvbiBoYXMgbW9yZSBzaWduaWZpY2FudCBjaGFuZ2VzLiBUaGUgb3JpZ2luYWwgY29kZSB1bmNvbmRpdGlvbmFsbHkgcmVzZXRzIGBsb2NhbC1cdTAwM2VzY2hlZHVsZV9yb3VuZFthY11gIHRvIHplcm8gaWYgdGhlIGFpcnRpbWUgY2hlY2sgZmFpbHMuIFRoZSBwYXRjaCBjaGFuZ2VzIHRoaXMgdG8gdXNlIHRoZSByZXR1cm4gdmFsdWUgb2YgYGllZWU4MDIxMV90eHFfc2NoZWR1bGVfYWlydGltZV9jaGVja2AgdG8gc2V0IGBsb2NhbC1cdTAwM2VzY2hlZHVsZV9vcGVuW2FjXWAuIEl0IHRoZW4gdXBkYXRlcyBgc2NoZWR1bGVfcm91bmRgIG9ubHkgaWYgYHNjaGVkdWxlX29wZW5gIGlzIHRydWUuIENyaXRpY2FsbHksIHRoZSBwYXRjaCBhbHNvIG5vdyB1bmNvbmRpdGlvbmFsbHkgc2V0cyBgc2NoZWR1bGVfb3BlbmAuIEluIGFkZGl0aW9uLCBpdCBpbmNyZW1lbnRzIGBzY2hlZHVsZV9yb3VuZGAgaWYgaXQgaXMgc2V0LiBUaGUgYWRkZWQgY29kZSBhbHNvIGhhbmRsZXMgdGhlIGNhc2Ugd2hlbiBgc2NoZWR1bGVfcm91bmRgIHdyYXBzLCB3aGljaCBpbmRpY2F0ZXMgYSBjb3VudGVyIHRoYXQgaXMgc3VwcG9zZWQgdG8gYmUgbW9ub3RvbmljYWxseSBpbmNyZWFzaW5nLlxuXG5TbywgSSB0aGluayBJIHNlZSB3aGF0J3MgaGFwcGVuaW5nLiBUaGUgaW50cm9kdWN0aW9uIG9mIGBzY2hlZHVsZV9vcGVuYCBpcyBwcm9iYWJseSB0byBvcHRpbWl6ZSB0aGUgVFhRIHNjaGVkdWxpbmcuIFRoZSBgYWlydGltZV9jaGVja2AgZnVuY3Rpb24gcHJvYmFibHkgZGV0ZXJtaW5lcyBpZiB0aGUgQUMgaGFzIGF2YWlsYWJsZSBhaXJ0aW1lIHRvIHRyYW5zbWl0LiBSYXRoZXIgdGhhbiByZXNldHRpbmcgYHNjaGVkdWxlX3JvdW5kYCBkaXJlY3RseSAoYW5kIHByZXZlbnRpbmcgYW55IFRYUSBjb25zaWRlcmF0aW9uKSwgYHNjaGVkdWxlX29wZW5gIGlzIG5vdyB1c2VkIGFzIGEgZ2F0ZS4gTm93IHdlIGNvbmRpdGlvbmFsbHkgaW5jcmVtZW50IGBzY2hlZHVsZV9yb3VuZGAgb25seSB3aGVuIHRoZSBhaXJ0aW1lIGNoZWNrIHBhc3NlcywgYW5kIGJ5IGV4dGVuc2lvbiwgd2Ugb25seSBnbyBpbnRvIHRoZSBsb2dpYyBpbiBgaWVlZTgwMjExX25leHRfdHhxYCB0aGF0IHVzZXMgYHNjaGVkdWxlX3JvdW5kYCBpZiBgc2NoZWR1bGVfb3BlbmAgaXMgdHJ1ZS5cblxuVGhpcyBtYWtlcyBzZW5zZS4gQnkgdXNpbmcgYSBzZXBhcmF0ZSBmbGFnLCB3ZSBjYW4gbWFrZSB0aGUgc2NoZWR1bGluZyBsb2dpYyBtb3JlIG51YW5jZWQgYW5kIHBvc3NpYmx5IG1vcmUgZWZmaWNpZW50IGJ5IGV4cGxpY2l0bHkgZW5hYmxpbmcgb3IgZGlzYWJsaW5nIFRYUSBjb25zaWRlcmF0aW9uLiBJdCdzIGEgbmljZSwgY2xlYW4gd2F5IHRvIGludHJvZHVjZSBhIHNjaGVkdWxpbmcgb3B0aW1pemF0aW9uIGJhc2VkIG9uIGFpcnRpbWUgYXZhaWxhYmlsaXR5LiBUaGUgd3JhcCBhcm91bmQgY2hlY2sgbWFrZXMgbWUgdGhpbmsgdGhhdCB0aGVzZSBhcmUgY291bnRlcnMgdGhhdCBhcmUgdXNlZCB0byBkZXRlcm1pbmUgd2hpY2ggVFhRIHdlIHNob3VsZCBjb25zaWRlciBuZXh0LiBOb3csIEkgc2hvdWxkIHByb2JhYmx5IGxvb2sgYXQgd2hhdCBgaWVlZTgwMjExX3R4cV9zY2hlZHVsZV9haXJ0aW1lX2NoZWNrYCBhY3R1YWxseSAqZG9lcyouIFRoYXQgd2lsbCBiZSB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGZ1bGwgaW1wbGljYXRpb25zIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxNzk0LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODQyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTc6NDQ6MTMuODM3MTAzMzU4WiIsIlNlcSI6NDAsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxNDM3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbWFjODAyMTEvdHguY1wiLFxuICBcIkZpcnN0TGluZVwiOiA0MTE1LFxuICBcIkxpbmVDb3VudFwiOiA4MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCI0MTE1OlxcdHN0cnVjdCBpZWVlODAyMTFfdHhxICppZWVlODAyMTFfbmV4dF90eHEoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHU4IGFjKVxcbjQxMTY6XFx0e1xcbjQxMTc6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBod190b19sb2NhbChodyk7XFxuNDExODpcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqcmV0ID0gTlVMTDtcXG40MTE5OlxcdFxcdHN0cnVjdCB0eHFfaW5mbyAqdHhxaSA9IE5VTEwsICpoZWFkID0gTlVMTDtcXG40MTIwOlxcdFxcdGJvb2wgZm91bmRfZWxpZ2libGVfdHhxID0gZmFsc2U7XFxuNDEyMTpcXHRcXHRib29sIGFxbF9jaGVjaztcXG40MTIyOlxcdFxcbjQxMjM6XFx0XFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZsb2NhbC1cXHUwMDNlYWN0aXZlX3R4cV9sb2NrW2FjXSk7XFxuNDEyNDpcXHRcXG40MTI1OlxcdFxcdGlmICghbG9jYWwtXFx1MDAzZXNjaGVkdWxlX29wZW5bYWNdKVxcbjQxMjY6XFx0XFx0XFx0Z290byBvdXQ7XFxuNDEyNzpcXHRcXG40MTI4OlxcdCBiZWdpbjpcXG40MTI5OlxcdFxcdHR4cWkgPSBsaXN0X2ZpcnN0X2VudHJ5X29yX251bGwoXFx1MDAyNmxvY2FsLVxcdTAwM2VhY3RpdmVfdHhxc1thY10sXFxuNDEzMDpcXHRcXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgdHhxX2luZm8sXFxuNDEzMTpcXHRcXHRcXHRcXHRcXHRcXHRzY2hlZHVsZV9vcmRlcik7XFxuNDEzMjpcXHRcXHRpZiAoIXR4cWkpXFxuNDEzMzpcXHRcXHRcXHRnb3RvIG91dDtcXG40MTM0OlxcdFxcbjQxMzU6XFx0XFx0aWYgKHR4cWkgPT0gaGVhZCkge1xcbjQxMzY6XFx0XFx0XFx0aWYgKCFmb3VuZF9lbGlnaWJsZV90eHEpXFxuNDEzNzpcXHRcXHRcXHRcXHRnb3RvIG91dDtcXG40MTM4OlxcdFxcdFxcdGVsc2VcXG40MTM5OlxcdFxcdFxcdFxcdGZvdW5kX2VsaWdpYmxlX3R4cSA9IGZhbHNlO1xcbjQxNDA6XFx0XFx0fVxcbjQxNDE6XFx0XFxuNDE0MjpcXHRcXHRpZiAoIWhlYWQpXFxuNDE0MzpcXHRcXHRcXHRoZWFkID0gdHhxaTtcXG40MTQ0OlxcdFxcbjQxNDU6XFx0XFx0YXFsX2NoZWNrID0gaWVlZTgwMjExX3R4cV9haXJ0aW1lX2NoZWNrKGh3LCBcXHUwMDI2dHhxaS1cXHUwMDNldHhxKTtcXG40MTQ2OlxcdFxcdGlmIChhcWxfY2hlY2spXFxuNDE0NzpcXHRcXHRcXHRmb3VuZF9lbGlnaWJsZV90eHEgPSB0cnVlO1xcbjQxNDg6XFx0XFxuNDE0OTpcXHRcXHRpZiAodHhxaS1cXHUwMDNldHhxLnN0YSkge1xcbjQxNTA6XFx0XFx0XFx0c3RydWN0IHN0YV9pbmZvICpzdGEgPSBjb250YWluZXJfb2YodHhxaS1cXHUwMDNldHhxLnN0YSxcXG40MTUxOlxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICBzdHJ1Y3Qgc3RhX2luZm8sIHN0YSk7XFxuNDE1MjpcXHRcXG40MTUzOlxcdFxcdFxcdGlmIChpZWVlODAyMTFfc3RhX2RlZmljaXQoc3RhLCB0eHFpLVxcdTAwM2V0eHEuYWMpIFxcdTAwM2MgMCkge1xcbjQxNTQ6XFx0XFx0XFx0XFx0c3RhLVxcdTAwM2VhaXJ0aW1lW3R4cWktXFx1MDAzZXR4cS5hY10uZGVmaWNpdCArPVxcbjQxNTU6XFx0XFx0XFx0XFx0XFx0c3RhLVxcdTAwM2VhaXJ0aW1lX3dlaWdodDtcXG40MTU2OlxcdFxcbjQxNTc6XFx0XFx0XFx0XFx0YXFsX2NoZWNrID0gZmFsc2U7XFxuNDE1ODpcXHRcXHRcXHR9XFxuNDE1OTpcXHRcXHR9XFxuNDE2MDpcXHRcXG40MTYxOlxcdFxcdGlmICghYXFsX2NoZWNrKSB7XFxuNDE2MjpcXHRcXHRcXHRsaXN0X21vdmVfdGFpbChcXHUwMDI2dHhxaS1cXHUwMDNlc2NoZWR1bGVfb3JkZXIsXFxuNDE2MzpcXHRcXHRcXHRcXHRcXHQgICBcXHUwMDI2bG9jYWwtXFx1MDAzZWFjdGl2ZV90eHFzW3R4cWktXFx1MDAzZXR4cS5hY10pO1xcbjQxNjQ6XFx0XFx0XFx0Z290byBiZWdpbjtcXG40MTY1OlxcdFxcdH1cXG40MTY2OlxcdFxcbjQxNjc6XFx0XFx0aWYgKHR4cWktXFx1MDAzZXNjaGVkdWxlX3JvdW5kID09IGxvY2FsLVxcdTAwM2VzY2hlZHVsZV9yb3VuZFthY10pXFxuNDE2ODpcXHRcXHRcXHRnb3RvIG91dDtcXG40MTY5OlxcdFxcbjQxNzA6XFx0XFx0bGlzdF9kZWxfaW5pdChcXHUwMDI2dHhxaS1cXHUwMDNlc2NoZWR1bGVfb3JkZXIpO1xcbjQxNzE6XFx0XFx0dHhxaS1cXHUwMDNlc2NoZWR1bGVfcm91bmQgPSBsb2NhbC1cXHUwMDNlc2NoZWR1bGVfcm91bmRbYWNdO1xcbjQxNzI6XFx0XFx0cmV0ID0gXFx1MDAyNnR4cWktXFx1MDAzZXR4cTtcXG40MTczOlxcdFxcbjQxNzQ6XFx0b3V0OlxcbjQxNzU6XFx0XFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNmxvY2FsLVxcdTAwM2VhY3RpdmVfdHhxX2xvY2tbYWNdKTtcXG40MTc2OlxcdFxcdHJldHVybiByZXQ7XFxuNDE3NzpcXHR9XFxuNDE3ODpcXHRFWFBPUlRfU1lNQk9MKGllZWU4MDIxMV9uZXh0X3R4cSk7XFxuNDE3OTpcXHRcXG40MTgwOlxcdHZvaWQgX19pZWVlODAyMTFfc2NoZWR1bGVfdHhxKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbjQxODE6XFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV90eHEgKnR4cSxcXG40MTgyOlxcdFxcdFxcdFxcdCAgICAgIGJvb2wgZm9yY2UpXFxuNDE4MzpcXHR7XFxuNDE4NDpcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IGh3X3RvX2xvY2FsKGh3KTtcXG40MTg1OlxcdFxcdHN0cnVjdCB0eHFfaW5mbyAqdHhxaSA9IHRvX3R4cV9pbmZvKHR4cSk7XFxuNDE4NjpcXHRcXHRib29sIGhhc19xdWV1ZTtcXG40MTg3OlxcdFxcbjQxODg6XFx0XFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZsb2NhbC1cXHUwMDNlYWN0aXZlX3R4cV9sb2NrW3R4cS1cXHUwMDNlYWNdKTtcXG40MTg5OlxcdFxcbjQxOTA6XFx0XFx0aGFzX3F1ZXVlID0gZm9yY2UgfHxcXG40MTkxOlxcdFxcdFxcdCAgICAoIXRlc3RfYml0KElFRUU4MDIxMV9UWFFfU1RPUCwgXFx1MDAyNnR4cWktXFx1MDAzZWZsYWdzKSBcXHUwMDI2XFx1MDAyNlxcbjQxOTI6XFx0XFx0XFx0ICAgICB0eHFfaGFzX3F1ZXVlKHR4cSkpO1xcbjQxOTM6XFx0XFx0aWYgKGxpc3RfZW1wdHkoXFx1MDAyNnR4cWktXFx1MDAzZXNjaGVkdWxlX29yZGVyKSBcXHUwMDI2XFx1MDAyNlxcbjQxOTQ6XFx0XFx0ICAgIChoYXNfcXVldWUgfHwgaWVlZTgwMjExX3R4cV9rZWVwX2FjdGl2ZSh0eHFpKSkpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTc6NDQ6MTMuODM3NTIxNjk4WiIsIlNlcSI6NDEsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI5NzU0ODU3MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSBsaW5lIG9mIHRoaW5raW5nLCBwcmVzZW50ZWQgYXMgaWYgaXQgd2VyZSBteSBvd246XG5cbioqRGl2aW5nIERlZXAgaW50byB0aGUgTUFDODAyMTEgVFggUGF0aCoqXG5cbk9rYXksIHNvIHdlJ3JlIGxvb2tpbmcgYXQgdGhlIGJyb2FkZXIgaXNzdWUsIGJ1dCBJIG5lZWQgdG8gem9vbSBpbiBvbiBhIHZlcnkgc3BlY2lmaWMgYXJlYS4gVG8gdHJ1bHkgdW5kZXJzdGFuZCB0aGlzLCBJIG5lZWQgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJJ20gZ29pbmcgdG8gc2hpZnQgZ2VhcnMgYW5kIGdvIHN0cmFpZ2h0IGludG8gdGhlIGNvZGUuIFNwZWNpZmljYWxseSwgSSdtIHRoaW5raW5nIGFib3V0IHRob3NlIGNyaXRpY2FsIHRyYW5zbWl0IG9wZXJhdGlvbnMuIExldCdzIHN0YXJ0IHdpdGggYSBmb2N1c2VkIGludmVzdGlnYXRpb24uIEkgbmVlZCB0byB0YWtlIGEgbG9vayBhdCB0aGUgYG5ldC9tYWM4MDIxMS90eC5jYCBmaWxlOyB0aGF0J3Mgd2hlcmUgdGhlIGhlYXJ0IG9mIHRoZSB0cmFuc21pdCBwYXRoIHJlc2lkZXMuIEFuZCBub3QganVzdCB0aGUgd2hvbGUgZmlsZSwgSSdtIHRoaW5raW5nIGxpbmVzIDQzNDAtNDM3MC4gVGhhdCBzZWN0aW9uIGlzIHVzdWFsbHkgYSByZWFsIGhvdHNwb3QgZm9yIFtpbnNlcnQgcmVsZXZhbnQgdGVjaG5pY2FsIGFyZWEgLSBlLmcuLCByYXRlIGNvbnRyb2wsIGZyYW1lIGFnZ3JlZ2F0aW9uLCBoYXJkd2FyZSBxdWV1ZSBpbnRlcmFjdGlvbl0uIFRoaXMgc3BlY2lmaWMgcmFuZ2UgbGlrZWx5IGhvbGRzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBbc3RhdGUgc3BlY2lmaWMgcmVsZXZhbnQgYXJlYSAtIGUuZy4sIGhvdyB0aGUgZHJpdmVyIGhhbmRsZXMgZnJhbWUgYWNrbm93bGVkZ2VtZW50cywgdGhlIGxvZ2ljIGJlaGluZCB0aGUgcmV0cmFuc21pc3Npb24gdGltZXJzLCBvciB0aGUgbnVhbmNlcyBvZiBwb3dlciBzYXZlIG1vZGUgdHJhbnNpdGlvbnNdLiBJIGNhbiBzZWUgaXQgbm93LCB0aGUgbGluZXMgc2hvdWxkIGJlIHRhbGtpbmcgYWJvdXQuLi4gW2FkZCB5b3VyIHRlY2huaWNhbCBwcmVkaWN0aW9uIGJhc2VkIG9uIHRoZSBjb250ZXh0IC0gZS5nLiwgdGhlIHNwZWNpZmljIHF1ZXVlIGFzc2lnbm1lbnQgb3IgYW55IGZyYW1lIHByb2Nlc3Npbmcgb2NjdXJyaW5nXS4uLiBUaGF0J3Mgd2hlcmUgSSBzaG91bGQgZm9jdXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0NjMyLCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxNzo0NDoxNi44MTMwMTE3OTdaIiwiU2VxIjo0MiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM5MjY3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbWFjODAyMTEvdHguY1wiLFxuICBcIkZpcnN0TGluZVwiOiA0MzQwLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCI0MzQwOlxcdFxcdHJldHVybiB0cnVlO1xcbjQzNDE6XFx0fVxcbjQzNDI6XFx0RVhQT1JUX1NZTUJPTChpZWVlODAyMTFfdHhxX21heV90cmFuc21pdCk7XFxuNDM0MzpcXHRcXG40MzQ0OlxcdHZvaWQgaWVlZTgwMjExX3R4cV9zY2hlZHVsZV9zdGFydChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgdTggYWMpXFxuNDM0NTpcXHR7XFxuNDM0NjpcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IGh3X3RvX2xvY2FsKGh3KTtcXG40MzQ3OlxcdFxcbjQzNDg6XFx0XFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZsb2NhbC1cXHUwMDNlYWN0aXZlX3R4cV9sb2NrW2FjXSk7XFxuNDM0OTpcXHRcXG40MzUwOlxcdFxcdGxvY2FsLVxcdTAwM2VzY2hlZHVsZV9vcGVuW2FjXSA9XFxuNDM1MTpcXHRcXHRcXHRpZWVlODAyMTFfdHhxX3NjaGVkdWxlX2FpcnRpbWVfY2hlY2sobG9jYWwsIGFjKTtcXG40MzUyOlxcdFxcdGlmIChsb2NhbC1cXHUwMDNlc2NoZWR1bGVfb3BlblthY10pIHtcXG40MzUzOlxcdFxcdFxcdGxvY2FsLVxcdTAwM2VzY2hlZHVsZV9yb3VuZFthY10rKztcXG40MzU0OlxcdFxcdFxcdGlmICghbG9jYWwtXFx1MDAzZXNjaGVkdWxlX3JvdW5kW2FjXSlcXG40MzU1OlxcdFxcdFxcdFxcdGxvY2FsLVxcdTAwM2VzY2hlZHVsZV9yb3VuZFthY10rKztcXG40MzU2OlxcdFxcdH1cXG40MzU3OlxcdFxcbjQzNTg6XFx0XFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNmxvY2FsLVxcdTAwM2VhY3RpdmVfdHhxX2xvY2tbYWNdKTtcXG40MzU5OlxcdH1cXG40MzYwOlxcdEVYUE9SVF9TWU1CT0woaWVlZTgwMjExX3R4cV9zY2hlZHVsZV9zdGFydCk7XFxuNDM2MTpcXHRcXG40MzYyOlxcdHZvaWQgX19pZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbjQzNjM6XFx0XFx0XFx0XFx0XFx0ICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbjQzNjQ6XFx0XFx0XFx0XFx0XFx0ICB1MzIgaW5mb19mbGFncyxcXG40MzY1OlxcdFxcdFxcdFxcdFxcdCAgdTMyIGN0cmxfZmxhZ3MpXFxuNDM2NjpcXHR7XFxuNDM2NzpcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IElFRUU4MDIxMV9ERVZfVE9fU1VCX0lGKGRldik7XFxuNDM2ODpcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHNkYXRhLVxcdTAwM2Vsb2NhbDtcXG40MzY5OlxcdFxcdHN0cnVjdCBpZWVlODAyMTFfdHhfaW5mbyAqaW5mbztcXG40MzcwOlxcdFxcdHN0cnVjdCBzdGFfaW5mbyAqc3RhO1xcbjQzNzE6XFx0XFx0c3RydWN0IHNrX2J1ZmYgKm5leHQ7XFxuNDM3MjpcXHRcXHRib29sIGdyb3VwX2FkZHJlc3NlZDtcXG40MzczOlxcdFxcdGludCBsZW4gPSBza2ItXFx1MDAzZWxlbjtcXG40Mzc0OlxcdFxcbjQzNzU6XFx0XFx0aWYgKHVubGlrZWx5KCFpZWVlODAyMTFfc2RhdGFfcnVubmluZyhzZGF0YSkgfHwgc2tiLVxcdTAwM2VsZW4gXFx1MDAzYyBFVEhfSExFTikpIHtcXG40Mzc2OlxcdFxcdFxcdGtmcmVlX3NrYihza2IpO1xcbjQzNzc6XFx0XFx0XFx0cmV0dXJuO1xcbjQzNzg6XFx0XFx0fVxcbjQzNzk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE3OjQ0OjE2LjgxNTQwODU5N1oiLCJTZXEiOjQzLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1NjI0NzM4NDIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgU2FmZXR5IG9mIGEgTUFDODAyMTEgU2NoZWR1bGluZyBDaGFuZ2UqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFdlJ3JlIGxvb2tpbmcgYXQgYSBjaGFuZ2UgcmVsYXRlZCB0byB0aGUgYWlydGltZSBzY2hlZHVsaW5nIHdpdGhpbiB0aGUgTUFDODAyMTEgbGF5ZXIsIHNwZWNpZmljYWxseSBkZWFsaW5nIHdpdGggdGhlIGBzY2hlZHVsZV9vcGVuYCBib29sZWFuIGFycmF5LiBUaGlzIGlzIHBhcnQgb2YgdGhlIGBpZWVlODAyMTFfbG9jYWxgIHN0cnVjdHVyZSwgd2hpY2ggaXMgYWxsb2NhdGVkIHdpdGggYGt6YWxsb2NgLiBUaGlzIGlzIGltcG9ydGFudCwgYXMgYGt6YWxsb2NgIGd1YXJhbnRlZXMgemVyby1pbml0aWFsaXphdGlvbiwgd2hpY2ggaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LlxuXG5UaGUgY29yZSBvZiB0aGUgY2hhbmdlIGludm9sdmVzIGhvdyB3ZSB0cmFjayB3aGV0aGVyIGEgcXVldWUgaXMgb3BlbiBmb3Igc2NoZWR1bGluZy4gUHJldmlvdXNseSwgd2Ugd2VyZSB1c2luZyBgc2NoZWR1bGVfcm91bmRgIGZvciB0aGlzLCBidXQgdGhhdCBwcmVzZW50ZWQgcG90ZW50aWFsIGNvbmZsaWN0cy4gTm93LCBgc2NoZWR1bGVfb3BlblthY11gIGlzIHNldCBiYXNlZCBvbiB0aGUgYGllZWU4MDIxMV90eHFfc2NoZWR1bGVfYWlydGltZV9jaGVjaygpYCBmdW5jdGlvbiB3aXRoaW4gdGhlIGBpZWVlODAyMTFfdHhxX3NjaGVkdWxlX3N0YXJ0KClgIGZ1bmN0aW9uIGFuZCBjaGVja2VkIHdpdGhpbiB0aGUgYGllZWU4MDIxMV9uZXh0X3R4cSgpYCBmdW5jdGlvbi4gU28sIHdlJ3JlIGRlY291cGxpbmcgdGhlIFwib3Blbi9jbG9zZWRcIiBzdGF0ZSBmcm9tIHRoZSByb3VuZCBjb3VudGVyIHVzaW5nIHRoaXMgYm9vbGVhbi5cblxuTXkgcHJpbWFyeSBjb25jZXJuLCBhcyBhbHdheXMsIGlzIHdoZXRoZXIgdGhpcyBpbnRyb2R1Y2VzIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZXMuIFNvIEkgbmVlZCB0byBnbyB0aHJvdWdoIG15IG1lbnRhbCBjaGVja2xpc3Q6XG5cbjEuICBgc2NoZWR1bGVfb3BlbmAgaXMgcGFydCBvZiBgc3RydWN0IGllZWU4MDIxMV9sb2NhbGAsIGFsbG9jYXRlZCB3aXRoIGBremFsbG9jYCwgZW5zdXJpbmcgaXQgc3RhcnRzIGFzIGFsbCB6ZXJvcy4gR29vZC5cbjIuICBObyBkYXRhIGZyb20gdGhlc2Ugc3RydWN0dXJlcyBnZXRzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBlbGltaW5hdGluZyBhIHdob2xlIGNsYXNzIG9mIHBvdGVudGlhbCBwcm9ibGVtcy4gRXhjZWxsZW50LlxuMy4gIFdlJ3JlIG5vdCByZWFkaW5nIG9yIHVzaW5nIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhpcyBpcyBjcml0aWNhbC4gYHNjaGVkdWxlX29wZW5gIGlzIHNldCBiZWZvcmUgYmVpbmcgcmVhZCBhbmQgaXMgemVyby1pbml0aWFsaXplZCBhbnl3YXkuXG40LiAgTm8gc3RhY2sgb3IgaGVhcCBidWZmZXJzIGFyZSBiZWluZyBsZWZ0IHVuaW5pdGlhbGl6ZWQuXG5cbkRvZXMgdGhpcyBjaGFuZ2UgaW50cm9kdWNlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcz8gVGhlIGFuc3dlciBpcyBhIHNvbGlkIFwibm8uXCJcblxuTm93LCB0byBtYWtlIHN1cmUsIGxldCdzIHN0ZXAgdGhyb3VnaCB0aGUgcXVlc3Rpb25zLlxuXG4qICAgQXJlIHdlIHNlbmRpbmcgYW55IGtlcm5lbCBzdHJ1Y3R1cmVzIHRvIHVzZXIgc3BhY2U/IE5vcGUuXG4qICAgSXMgdGhlcmUgY29uZGl0aW9uYWwgbG9naWMgZGVwZW5kZW50IG9uIGFueSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcz8gQWJzb2x1dGVseSBub3QuIGBsb2NhbGAgaXMgemVyb2VkIGJ5IGFsbG9jYXRpb24sIGFuZCBgc2NoZWR1bGVfb3BlbmAgaXMgZXhwbGljaXRseSBzZXQgYmVmb3JlIGJlaW5nIHJlYWQuXG4qICAgQXJlIHdlIGFsbG9jYXRpbmcgb3IgaW5pdGlhbGl6aW5nIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzIGNvdWxkIGJlIHJlYWQ/IE5vLlxuKiAgIEhhdmUgd2UgbW9kaWZpZWQgYW55IGJvdW5kcyBjaGVja3Mgb3IgbGVuZ3RocyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIGRhdGE/IE5vLlxuXG5TaW5jZSB0aGlzIGlzIHB1cmVseSBpbnRlcm5hbCBzY2hlZHVsaW5nIGxvZ2ljIHdpdGhpbiBtYWM4MDIxMSwgYW5kIHdlJ3ZlIHZlcmlmaWVkIHRoYXQgdGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGNvbmNlcm5zLCBLQVNBTiBhbmQgc3RhbmRhcmQgZGV0ZWN0b3JzIGRvbid0IHJlYWxseSBjb21lIGludG8gcGxheSBoZXJlLiBXZSdyZSBzYWZlIGZyb20gS01TQU4gY29uY2VybnMsIHRvby4gSXTigJlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQsIGJ1dCBhIGdvb2QgcHJhY3RpY2UuXG5OZWVkc0tNU0FOID0gZmFsc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1Njc2LCJPdXRwdXRUb2tlbnMiOjIyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ0OSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE3OjQ0OjIyLjQ0MDE1MTAxWiIsIlNlcSI6NDQsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzIxNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgYm9vbGVhbiBmaWVsZCBgc2NoZWR1bGVfb3BlbmAgdG8gYHN0cnVjdCBpZWVlODAyMTFfbG9jYWxgIHRvIGRlY291cGxlIHRoZSBzY2hlZHVsaW5nIG9wZW4vY2xvc2VkIHN0YXRlIGZyb20gdGhlIGBzY2hlZHVsZV9yb3VuZGAgY291bnRlciBpbiBtYWM4MDIxMSdzIFRYIHF1ZXVlIHNjaGVkdWxpbmcgbG9naWMuXFxuXFxuLSBgc3RydWN0IGllZWU4MDIxMV9sb2NhbGAgaXMgYWxsb2NhdGVkIHZpYSBga3phbGxvYygpYCBkdXJpbmcgd2lwaHkgcmVnaXN0cmF0aW9uLCBlbnN1cmluZyBhbGwgZmllbGRzIGluY2x1ZGluZyBgc2NoZWR1bGVfb3BlbmAgYXJlIHplcm8taW5pdGlhbGl6ZWQuXFxuLSBUaGUgbmV3IGZpZWxkIGlzIG9ubHkgdXNlZCBpbnRlcm5hbGx5IHdpdGhpbiBgbmV0L21hYzgwMjExL3R4LmNgIGZvciBUWCBxdWV1ZSBzY2hlZHVsaW5nIGNvbnRyb2wgZmxvdyBhbmQgaXMgbmV2ZXIgY29waWVkIHRvIHVzZXIgc3BhY2Ugb3IgdXNlZCBpbiBhbiB1bmluaXRpYWxpemVkIHN0YXRlLlxcbi0gTm8gbmV3IGJ1ZmZlcnMsIHN0YWNrIG9iamVjdHMsIG5ldGxpbmsgYXR0cmlidXRlcywgaW9jdGxzLCBvciB1c2VyLXNwYWNlIGNvcGllcyBhcmUgaW50cm9kdWNlZCBvciBtb2RpZmllZC5cXG5cXG5Db25zZXF1ZW50bHksIHRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgaW5mb3JtYXRpb24gbGVha3MsIGFuZCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgYm9vbGVhbiBmaWVsZCBgc2NoZWR1bGVfb3BlbmAgdG8gYHN0cnVjdCBpZWVlODAyMTFfbG9jYWxgIHRvIGRlY291cGxlIHRoZSBzY2hlZHVsaW5nIG9wZW4vY2xvc2VkIHN0YXRlIGZyb20gdGhlIGBzY2hlZHVsZV9yb3VuZGAgY291bnRlciBpbiBtYWM4MDIxMSdzIFRYIHF1ZXVlIHNjaGVkdWxpbmcgbG9naWMuXFxuXFxuLSBgc3RydWN0IGllZWU4MDIxMV9sb2NhbGAgaXMgYWxsb2NhdGVkIHZpYSBga3phbGxvYygpYCBkdXJpbmcgd2lwaHkgcmVnaXN0cmF0aW9uLCBlbnN1cmluZyBhbGwgZmllbGRzIGluY2x1ZGluZyBgc2NoZWR1bGVfb3BlbmAgYXJlIHplcm8taW5pdGlhbGl6ZWQuXFxuLSBUaGUgbmV3IGZpZWxkIGlzIG9ubHkgdXNlZCBpbnRlcm5hbGx5IHdpdGhpbiBgbmV0L21hYzgwMjExL3R4LmNgIGZvciBUWCBxdWV1ZSBzY2hlZHVsaW5nIGNvbnRyb2wgZmxvdyBhbmQgaXMgbmV2ZXIgY29waWVkIHRvIHVzZXIgc3BhY2Ugb3IgdXNlZCBpbiBhbiB1bmluaXRpYWxpemVkIHN0YXRlLlxcbi0gTm8gbmV3IGJ1ZmZlcnMsIHN0YWNrIG9iamVjdHMsIG5ldGxpbmsgYXR0cmlidXRlcywgaW9jdGxzLCBvciB1c2VyLXNwYWNlIGNvcGllcyBhcmUgaW50cm9kdWNlZCBvciBtb2RpZmllZC5cXG5cXG5Db25zZXF1ZW50bHksIHRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgaW5mb3JtYXRpb24gbGVha3MsIGFuZCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow9jrxh[1] Phase: Succeeded StartedAt: 2026-09-08 17:44:33 +0000 UTC FinishedAt: 2026-09-08 17:44:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jrxh[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-09-08 17:44:33 +0000 UTC FinishedAt: 2026-09-08 17:44:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jrxh[2] Phase: Succeeded StartedAt: 2026-09-08 17:44:33 +0000 UTC FinishedAt: 2026-09-08 21:24:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jrxh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"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":["ieee80211_next_txq","ieee80211_txq_schedule_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"96df9d93-a1b2-45ce-b2db-73e7ee806aae","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-09-08 17:44:33 +0000 UTC FinishedAt: 2026-09-08 21:24:22 +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":["MAC80211","CFG80211"],"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":["ieee80211_next_txq","ieee80211_txq_schedule_start"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"96df9d93-a1b2-45ce-b2db-73e7ee806aae","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-workflow9jrxh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"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":["ieee80211_next_txq","ieee80211_txq_schedule_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"96df9d93-a1b2-45ce-b2db-73e7ee806aae","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-08 17:44:33 +0000 UTC FinishedAt: 2026-09-08 17:44:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jrxh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"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":["ieee80211_next_txq","ieee80211_txq_schedule_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"96df9d93-a1b2-45ce-b2db-73e7ee806aae","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-08 17:44:33 +0000 UTC FinishedAt: 2026-09-08 17:44:37 +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":["MAC80211","CFG80211"],"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-workflow9jrxh/series-workflow9jrxh-convert-artifact-1595873761/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9jrxh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"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":["ieee80211_next_txq","ieee80211_txq_schedule_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"96df9d93-a1b2-45ce-b2db-73e7ee806aae","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-08 17:44:43 +0000 UTC FinishedAt: 2026-09-08 18:00:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jrxh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"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":["ieee80211_next_txq","ieee80211_txq_schedule_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"96df9d93-a1b2-45ce-b2db-73e7ee806aae","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-08 17:44:43 +0000 UTC FinishedAt: 2026-09-08 18:00:52 +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:*d4c2fb3f-bcd0-4108-bd43-b90e074293c5,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-workflow9jrxh/series-workflow9jrxh-convert-artifact-1595873761/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": "3642952d-4ddd-41cd-b846-468269365d61", "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-workflow9jrxh/series-workflow9jrxh-build-action-2682185487/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9jrxh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"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":["ieee80211_next_txq","ieee80211_txq_schedule_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"96df9d93-a1b2-45ce-b2db-73e7ee806aae","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-08 17:44:43 +0000 UTC FinishedAt: 2026-09-08 18:00:42 +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:*d4c2fb3f-bcd0-4108-bd43-b90e074293c5,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-workflow9jrxh/series-workflow9jrxh-convert-artifact-1595873761/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": "3642952d-4ddd-41cd-b846-468269365d61", "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-workflow9jrxh/series-workflow9jrxh-build-action-2682185487/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9jrxh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"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":["ieee80211_next_txq","ieee80211_txq_schedule_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"96df9d93-a1b2-45ce-b2db-73e7ee806aae","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-08 18:00:52 +0000 UTC FinishedAt: 2026-09-08 18:00:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jrxh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"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":["ieee80211_next_txq","ieee80211_txq_schedule_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"96df9d93-a1b2-45ce-b2db-73e7ee806aae","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-08 18:00:52 +0000 UTC FinishedAt: 2026-09-08 18:00:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jrxh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"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":["ieee80211_next_txq","ieee80211_txq_schedule_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"96df9d93-a1b2-45ce-b2db-73e7ee806aae","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-08 18:00:52 +0000 UTC FinishedAt: 2026-09-08 18:01:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jrxh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"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":["ieee80211_next_txq","ieee80211_txq_schedule_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"96df9d93-a1b2-45ce-b2db-73e7ee806aae","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-08 18:00:52 +0000 UTC FinishedAt: 2026-09-08 18:00:58 +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":["MAC80211","CFG80211"],"series_id":"96df9d93-a1b2-45ce-b2db-73e7ee806aae","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-workflow9jrxh/series-workflow9jrxh-convert-artifact-3923131444/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9jrxh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"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":["ieee80211_next_txq","ieee80211_txq_schedule_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"96df9d93-a1b2-45ce-b2db-73e7ee806aae","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-08 18:01:03 +0000 UTC FinishedAt: 2026-09-08 18:02:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jrxh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"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":["ieee80211_next_txq","ieee80211_txq_schedule_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"96df9d93-a1b2-45ce-b2db-73e7ee806aae","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-08 18:01:03 +0000 UTC FinishedAt: 2026-09-08 18:02:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*3642952d-4ddd-41cd-b846-468269365d61,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-workflow9jrxh/series-workflow9jrxh-build-action-2682185487/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-workflow9jrxh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"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":["ieee80211_next_txq","ieee80211_txq_schedule_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"96df9d93-a1b2-45ce-b2db-73e7ee806aae","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-08 18:02:54 +0000 UTC FinishedAt: 2026-09-08 18:02:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jrxh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"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":["ieee80211_next_txq","ieee80211_txq_schedule_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"96df9d93-a1b2-45ce-b2db-73e7ee806aae","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-08 18:02:54 +0000 UTC FinishedAt: 2026-09-08 18:02:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jrxh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"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":["ieee80211_next_txq","ieee80211_txq_schedule_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"96df9d93-a1b2-45ce-b2db-73e7ee806aae","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-08 18:02:54 +0000 UTC FinishedAt: 2026-09-08 18:21:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jrxh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"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":["ieee80211_next_txq","ieee80211_txq_schedule_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"96df9d93-a1b2-45ce-b2db-73e7ee806aae","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-08 18:02:54 +0000 UTC FinishedAt: 2026-09-08 18:21:09 +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:*d4c2fb3f-bcd0-4108-bd43-b90e074293c5,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-workflow9jrxh/series-workflow9jrxh-convert-artifact-3923131444/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": "a31668c3-7b1e-4b6e-897d-271c912a7e36", "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-workflow9jrxh/series-workflow9jrxh-build-action-1512087040/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9jrxh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"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":["ieee80211_next_txq","ieee80211_txq_schedule_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"96df9d93-a1b2-45ce-b2db-73e7ee806aae","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-08 18:02:54 +0000 UTC FinishedAt: 2026-09-08 18:20:59 +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:*d4c2fb3f-bcd0-4108-bd43-b90e074293c5,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-workflow9jrxh/series-workflow9jrxh-convert-artifact-3923131444/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": "a31668c3-7b1e-4b6e-897d-271c912a7e36", "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-workflow9jrxh/series-workflow9jrxh-build-action-1512087040/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9jrxh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"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":["ieee80211_next_txq","ieee80211_txq_schedule_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"96df9d93-a1b2-45ce-b2db-73e7ee806aae","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-08 18:21:09 +0000 UTC FinishedAt: 2026-09-08 18:21:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jrxh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"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":["ieee80211_next_txq","ieee80211_txq_schedule_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"96df9d93-a1b2-45ce-b2db-73e7ee806aae","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-08 18:21:09 +0000 UTC FinishedAt: 2026-09-08 18:21:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jrxh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"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":["ieee80211_next_txq","ieee80211_txq_schedule_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"96df9d93-a1b2-45ce-b2db-73e7ee806aae","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-09-08 18:21:09 +0000 UTC FinishedAt: 2026-09-08 18:22:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jrxh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"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":["ieee80211_next_txq","ieee80211_txq_schedule_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"96df9d93-a1b2-45ce-b2db-73e7ee806aae","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-09-08 18:21:09 +0000 UTC FinishedAt: 2026-09-08 18:22:47 +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:*a31668c3-7b1e-4b6e-897d-271c912a7e36,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-workflow9jrxh/series-workflow9jrxh-build-action-1512087040/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-workflow9jrxh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"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":["ieee80211_next_txq","ieee80211_txq_schedule_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"96df9d93-a1b2-45ce-b2db-73e7ee806aae","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-09-08 18:22:57 +0000 UTC FinishedAt: 2026-09-08 21:24:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jrxh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"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":["ieee80211_next_txq","ieee80211_txq_schedule_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"96df9d93-a1b2-45ce-b2db-73e7ee806aae","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-09-08 18:22:57 +0000 UTC FinishedAt: 2026-09-08 21:24:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_next_txq","ieee80211_txq_schedule_start"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*3642952d-4ddd-41cd-b846-468269365d61,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*a31668c3-7b1e-4b6e-897d-271c912a7e36,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow9jrxh/series-workflow9jrxh-build-action-2682185487/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow9jrxh/series-workflow9jrxh-build-action-1512087040/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow9jrxh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"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":["ieee80211_next_txq","ieee80211_txq_schedule_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"96df9d93-a1b2-45ce-b2db-73e7ee806aae","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-09-08 18:22:57 +0000 UTC FinishedAt: 2026-09-08 18:23:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jrxh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"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":["ieee80211_next_txq","ieee80211_txq_schedule_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"96df9d93-a1b2-45ce-b2db-73e7ee806aae","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-09-08 18:22:57 +0000 UTC FinishedAt: 2026-09-08 18:23:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_next_txq","ieee80211_txq_schedule_start"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow9jrxh/series-workflow9jrxh-convert-artifact-469546077/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9jrxh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"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":["ieee80211_next_txq","ieee80211_txq_schedule_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"96df9d93-a1b2-45ce-b2db-73e7ee806aae","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-09-08 18:22:57 +0000 UTC FinishedAt: 2026-09-08 18:22:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jrxh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"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":["ieee80211_next_txq","ieee80211_txq_schedule_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"96df9d93-a1b2-45ce-b2db-73e7ee806aae","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-09-08 18:22:57 +0000 UTC FinishedAt: 2026-09-08 18:22:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jrxh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"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":["ieee80211_next_txq","ieee80211_txq_schedule_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"96df9d93-a1b2-45ce-b2db-73e7ee806aae","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-09-08 18:22:57 +0000 UTC FinishedAt: 2026-09-08 18:22:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jrxh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"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":["ieee80211_next_txq","ieee80211_txq_schedule_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"96df9d93-a1b2-45ce-b2db-73e7ee806aae","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-09-08 18:23:07 +0000 UTC FinishedAt: 2026-09-08 21:24:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jrxh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"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":["ieee80211_next_txq","ieee80211_txq_schedule_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1b60ed34f712e9f606d80951f1586f4274ebadf1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"96df9d93-a1b2-45ce-b2db-73e7ee806aae","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-09-08 18:23:07 +0000 UTC FinishedAt: 2026-09-08 21:24:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*3642952d-4ddd-41cd-b846-468269365d61,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*a31668c3-7b1e-4b6e-897d-271c912a7e36,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Fuzz,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow9jrxh/series-workflow9jrxh-build-action-2682185487/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:/patched,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow9jrxh/series-workflow9jrxh-build-action-1512087040/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:config,Path:/tmp/config.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow9jrxh/series-workflow9jrxh-convert-artifact-469546077/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}