Name: series-workflow569zd Phase: Succeeded StartedAt: 2026-09-12 13:22:12 +0000 UTC FinishedAt: 2026-09-12 15:00:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow569zd[0] Phase: Succeeded StartedAt: 2026-09-12 13:22:12 +0000 UTC FinishedAt: 2026-09-12 13:26:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflow569zd[0].run-triage Phase: Succeeded StartedAt: 2026-09-12 13:22:12 +0000 UTC FinishedAt: 2026-09-12 13:26:38 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "df2908090cda368b01ff43709f51890076c56157", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NFC", "NFC_DIGITAL", "NFC_SIM", "NFC_PORT100" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "df2908090cda368b01ff43709f51890076c56157", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NFC", "NFC_DIGITAL", "NFC_SIM", "NFC_PORT100" ], "series_id": "d7cd074c-db82-4528-8676-7c8e205b760a" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "digital_tg_recv_dep_req", "digital_tg_send_dep_res", "digital_tg_recv_atr_req" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "", "base_commit": "df2908090cda368b01ff43709f51890076c56157", "base_tree": "axboe" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEyIDEzOjIzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GQyYjMzQ7LAogICAgJiMzNDtORkNfRElHSVRBTCYjMzQ7LAogICAgJiMzNDtORkNfU0lNJiMzNDssCiAgICAmIzM0O05GQ19QT1JUMTAwJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEmIzM0OywKICAgICYjMzQ7ZGlnaXRhbF90Z19zZW5kX2RlcF9yZXMmIzM0OywKICAgICYjMzQ7ZGlnaXRhbF90Z19yZWN2X2F0cl9yZXEmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIHJlYWQgaW4gYGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxKClgIHdoZXJlIGByZXNwLVx1MDAzZWRhdGFbM11gIHdhcyByZWFkIHdpdGhvdXQgZmlyc3QgdmVyaWZ5aW5nIHRoYXQgYHJlc3AtXHUwMDNlbGVuYCB3YXMgYXQgbGVhc3QgYHNpemUgJiM0MzsgMWAgKDQgYnl0ZXMpLiBcblxuVGhpcyBpcyBhIGJvdW5kcy1jaGVja2luZyBpc3N1ZTogYWNjZXNzaW5nIGJ5dGVzIGJleW9uZCBgcmVzcC1cdTAwM2VsZW5gIGlzIGFuIG91dC1vZi1ib3VuZHMgYWNjZXNzIGRpcmVjdGx5IGRldGVjdGFibGUgYnkgS0FTQU4gKGUuZy4sIHNsYWItb3V0LW9mLWJvdW5kcyBvbiBza2IgZGF0YSkuIFRoZSBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIGFueSB1bmluaXRpYWxpemVkIHN0YWNrIG9yIGhlYXAgdmFyaWFibGVzLCBkb2VzIG5vdCBleHBvc2UgdW5pbml0aWFsaXplZCBwYWRkaW5nIG9yIHN0cnVjdCBmaWVsZHMgdG8gdXNlciBzcGFjZSwgYW5kIGRvZXMgbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBiYXNlZCBvbiB1bmluaXRpYWxpemVkIG1lbW9yeS4gQmVjYXVzZSBzdGFuZGFyZCBLQVNBTiBmdWxseSBjb3ZlcnMgdGhpcyBjbGFzcyBvZiBidWdzIGFuZCBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBhcmUgaW50cm9kdWNlZCwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGlucHV0IHZhbGlkYXRpb24gaW4gdGhlIE5GQyBkaWdpdGFsIHRhcmdldCBtb2RlIERFUCByZXF1ZXN0IGhhbmRsaW5nIChkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcSkgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIGFjY2VzcyB3aGVuIHRoZSBESUQgYml0IGlzIHNldCBieSB2ZXJpZnlpbmcgZnJhbWUgbGVuZ3RoIGFnYWluc3QgZXhwZWN0ZWQgc2l6ZSBhbmQgY29ycmVjdGx5IGluZGV4aW5nIHJlc3AtXHUwMDNlZGF0YS4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgdmlydHVhbCBORkMgZHJpdmVycyAoZS5nLiBuZmNzaW0pIGFuZCBlbXVsYXRlZCBVU0IgTkZDIGRvbmdsZXMgKHBvcnQxMDApLCBtYWtpbmcgaXQgd29ydGggZnV6emluZyBmb3IgYm91bmRhcnkgaXNzdWVzIGFuZCBzdGF0ZSB0cmFuc2l0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMiAxMzoyMzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDEwMjBmMjY5ZTg1NTY2NzE0MGJjMDRmODNhOTY4NDk5MDlhZjc1ZGRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IFNlcCAxMiAxMzoyMzozMCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbmZjL2RpZ2l0YWxfZGVwLmMgYi9uZXQvbmZjL2RpZ2l0YWxfZGVwLmNcbmluZGV4IDM5ODJmYTA4NDczN2YuLmFlNTQwN2ZjYTEyZDQgMTAwNjQ0XG4tLS0gYS9uZXQvbmZjL2RpZ2l0YWxfZGVwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZmMvZGlnaXRhbF9kZXAuY1xuQEAgLTExMTcsMTIgJiM0MzsxMTE3LDEyIEBAIHN0YXRpYyB2b2lkIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcbiBcdHBmYiA9IGRlcF9yZXEtXHUwMDNlcGZiO1xuIFxuIFx0aWYgKERJR0lUQUxfTkZDX0RFUF9ESURfQklUX1NFVChwZmIpKSB7XG4tXHRcdGlmIChkZGV2LVx1MDAzZWRpZCBcdTAwMjZcdTAwMjYgKGRkZXYtXHUwMDNlZGlkID09IHJlc3AtXHUwMDNlZGF0YVszXSkpIHtcbi1cdFx0XHRzaXplJiM0MzsmIzQzOztcbi1cdFx0fSBlbHNlIHtcbiYjNDM7XHRcdGlmIChyZXNwLVx1MDAzZWxlbiBcdTAwM2Mgc2l6ZSAmIzQzOyAxIHx8ICFkZGV2LVx1MDAzZWRpZCB8fFxuJiM0MztcdFx0ICAgIGRkZXYtXHUwMDNlZGlkICE9IHJlc3AtXHUwMDNlZGF0YVtzaXplXSkge1xuIFx0XHRcdHJjID0gLUVJTztcbiBcdFx0XHRnb3RvIGV4aXQ7XG4gXHRcdH1cbiYjNDM7XHRcdHNpemUmIzQzOyYjNDM7O1xuIFx0fSBlbHNlIGlmIChkZGV2LVx1MDAzZWRpZCkge1xuIFx0XHRyYyA9IC1FSU87XG4gXHRcdGdvdG8gZXhpdDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMiAxMzoyMzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4ybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORkMmIzM0OywKICAgICYjMzQ7TkZDX0RJR0lUQUwmIzM0OywKICAgICYjMzQ7TkZDX1NJTSYjMzQ7LAogICAgJiMzNDtORkNfUE9SVDEwMCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxJiMzNDssCiAgICAmIzM0O2RpZ2l0YWxfdGdfc2VuZF9kZXBfcmVzJiMzNDssCiAgICAmIzM0O2RpZ2l0YWxfdGdfcmVjdl9hdHJfcmVxJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGlucHV0IHZhbGlkYXRpb24gaW4gdGhlIE5GQyBkaWdpdGFsIHRhcmdldCBtb2RlIERFUCByZXF1ZXN0IGhhbmRsaW5nIChkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcSkgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIGFjY2VzcyB3aGVuIHRoZSBESUQgYml0IGlzIHNldCBieSB2ZXJpZnlpbmcgZnJhbWUgbGVuZ3RoIGFnYWluc3QgZXhwZWN0ZWQgc2l6ZSBhbmQgY29ycmVjdGx5IGluZGV4aW5nIHJlc3AtXHUwMDNlZGF0YS4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgdmlydHVhbCBORkMgZHJpdmVycyAoZS5nLiBuZmNzaW0pIGFuZCBlbXVsYXRlZCBVU0IgTkZDIGRvbmdsZXMgKHBvcnQxMDApLCBtYWtpbmcgaXQgd29ydGggZnV6emluZyBmb3IgYm91bmRhcnkgaXNzdWVzIGFuZCBzdGF0ZSB0cmFuc2l0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDEwMjBmMjY5ZTg1NTY2NzE0MGJjMDRmODNhOTY4NDk5MDlhZjc1ZGQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IFNlcCAxMiAxMzoyMzozMCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9uZmMvZGlnaXRhbF9kZXAuYyBiL25ldC9uZmMvZGlnaXRhbF9kZXAuYwppbmRleCAzOTgyZmEwODQ3MzdmLi5hZTU0MDdmY2ExMmQ0IDEwMDY0NAotLS0gYS9uZXQvbmZjL2RpZ2l0YWxfZGVwLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25mYy9kaWdpdGFsX2RlcC5jCkBAIC0xMTE3LDEyICYjNDM7MTExNywxMiBAQCBzdGF0aWMgdm9pZCBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB2b2lkICphcmcsCiAJcGZiID0gZGVwX3JlcS0mZ3Q7cGZiOwogCiAJaWYgKERJR0lUQUxfTkZDX0RFUF9ESURfQklUX1NFVChwZmIpKSB7Ci0JCWlmIChkZGV2LSZndDtkaWQgJmFtcDsmYW1wOyAoZGRldi0mZ3Q7ZGlkID09IHJlc3AtJmd0O2RhdGFbM10pKSB7Ci0JCQlzaXplJiM0MzsmIzQzOzsKLQkJfSBlbHNlIHsKJiM0MzsJCWlmIChyZXNwLSZndDtsZW4gJmx0OyBzaXplICYjNDM7IDEgfHwgIWRkZXYtJmd0O2RpZCB8fAomIzQzOwkJICAgIGRkZXYtJmd0O2RpZCAhPSByZXNwLSZndDtkYXRhW3NpemVdKSB7CiAJCQlyYyA9IC1FSU87CiAJCQlnb3RvIGV4aXQ7CiAJCX0KJiM0MzsJCXNpemUmIzQzOyYjNDM7OwogCX0gZWxzZSBpZiAoZGRldi0mZ3Q7ZGlkKSB7CiAJCXJjID0gLUVJTzsKIAkJZ290byBleGl0Owo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMiAxMzoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTU5CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogNDYxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlRyaWFnZSBvZiBgbmV0L25mYy9kaWdpdGFsX2RlcC5jYCBQYXRjaCBmb3IgU3l6a2FsbGVyIEZ1enppbmcqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IGEgcGF0Y2ggZm9yIGBuZXQvbmZjL2RpZ2l0YWxfZGVwLmNgIGFuZCBteSBnb2FsIGlzIHRvIGZpZ3VyZSBvdXQgaWYgaXQmIzM5O3Mgd29ydGggdGhyb3dpbmcgYXQgc3l6a2FsbGVyLiBGaXJzdCwgbGV0JiMzOTtzIGRvIGEgcXVpY2sgcmlzayBhc3Nlc3NtZW50LiBUaGlzIGlzIGp1c3Qgcm91dGluZSBrZXJuZWwgY29kZSByZXZpZXcsIGxvb2tpbmcgZm9yIHBvdGVudGlhbCBidWdzIHRvIGZlZWQgaW50byB0aGUgZnV6emluZyBwaXBlbGluZSDigJMgcHVyZWx5IGRlZmVuc2l2ZSBzZWN1cml0eSBzdHVmZiwgbm8gbmVmYXJpb3VzIGludGVudCBoZXJlLiBJJiMzOTttIGp1c3QgYW5hbHl6aW5nIGEgY29kZSBjaGFuZ2UgYW5kIGFzc2Vzc2luZyBpdHMgcG90ZW50aWFsIGZvciBleHBsb2l0YXRpb24gdGhyb3VnaCBmdXp6aW5nLiBUaGF0IHNlZW1zIHRvdGFsbHkgYmVuaWduIGFuZCBmYWxscyBzcXVhcmVseSB3aXRoaW4gbXkgcmVtaXQuCgpOb3csIGxldCYjMzk7cyBkaXZlIGludG8gdGhlIHBhdGNoIGl0c2VsZi4gSXQgbG9va3MgbGlrZSB3ZSYjMzk7dmUgZ290IGEgY2hhbmdlIGluIGBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcWAuIFRoZSBvcmlnaW5hbCBjaGVjayB3YXMgY29tcGFyaW5nIGEgZGV2aWNlIElEIChgZGRldi0mZ3Q7ZGlkYCkgd2l0aCBgcmVzcC0mZ3Q7ZGF0YVszXWAgd2hlbiB0aGUgYERJR0lUQUxfTkZDX0RFUF9ESURfQklUX1NFVGAgaXMgdHJ1ZS4gVGhlIHBhdGNoIGhhcyBjaGFuZ2VkIHRoYXQgY2hlY2suIEl0IG5vdyBjaGVja3MgdGhlIGxlbmd0aCBgcmVzcC0mZ3Q7bGVuYCBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gYHNpemUmIzQzOzFgLiBJdCBhbHNvIGNoZWNrcyBpZiBhIGRldmljZSBJRCBgZGRldi0mZ3Q7ZGlkYCBleGlzdHMsIGFuZCBpZiBpdCBkb2VzLCBpdCBjaGVja3MgdGhhdCB0aGUgZXhwZWN0ZWQgRElEIChgZGRldi0mZ3Q7ZGlkYCkgbWF0Y2hlcyBgcmVzcC0mZ3Q7ZGF0YVtzaXplXWAuIElmIGFueSBvZiB0aGVzZSBjaGVja3MgZmFpbCwgaXQgcmV0dXJucyBhbiBgRUlPYCBlcnJvci4gU28gd2UgaGF2ZSBtb3JlIGNvbXByZWhlbnNpdmUgY2hlY2tzLgoKVGhlIGtleSBoZXJlIGlzIHVuZGVyc3RhbmRpbmcgdGhlIGNvbnRleHQgb2YgdGhhdCBmdW5jdGlvbiwgYGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCYjMzk7cyBnb2luZyBvbiAqYXJvdW5kKiB0aGlzIGNvZGUuIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgZnVuY3Rpb24gZG9lcyAtIHdoaWNoIEkgY2FuIGRvIHVzaW5nIG15IHRydXN0eSB0b29scy4gSSYjMzk7bGwgdXNlIGVpdGhlciBgcmVhZC1maWxlYCBvciBgZ3JlcHBlcmAgdG8gc2VlIGhvdyB0aGUgZnVuY3Rpb24gaXMgdXNlZCwgd2hhdCBkYXRhIHN0cnVjdHVyZXMgaXQgb3BlcmF0ZXMgb24sIGFuZCB3aGF0IHRoZSBvdmVyYWxsIGZsb3cgaXMuIFRoYXQmIzM5O2xsIHByb3ZpZGUgdGhlIG5lY2Vzc2FyeSBjb250ZXh0IHRvIGRldGVybWluZSBpZiB0aGlzIHBhdGNoIGlzIGFjdHVhbGx5IGludGVyZXN0aW5nIGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLCBhbmQgaWRlbnRpZnkgY3JpdGljYWwgY29kZSBwYXRocyBhbmQgcG90ZW50aWFsIGZvY3VzIHN5bWJvbHMgZm9yIHN5emthbGxlci4gQWZ0ZXIgdGhpcywgSSBuZWVkIHRvIGNvbWUgdXAgd2l0aCBzb21lIHJlYXNvbmluZyB0byBleHBsYWluIHRoaXMgZGVjaXNpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTIgMTM6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvbmZjL2RpZ2l0YWxfZGVwLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMTAwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzExMDA6XHRcdFx0Z290byBleGl0O1xuMTEwMTpcdFx0fVxuMTEwMjpcdFxuMTEwMzpcdFx0aWYgKHJlc3AtXHUwMDNlbGVuIFx1MDAzZSBkZGV2LVx1MDAzZWxvY2FsX3BheWxvYWRfbWF4KSB7XG4xMTA0Olx0XHRcdHJjID0gLUVNU0dTSVpFO1xuMTEwNTpcdFx0XHRnb3RvIGV4aXQ7XG4xMTA2Olx0XHR9XG4xMTA3Olx0XG4xMTA4Olx0XHRzaXplID0gc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKTtcbjExMDk6XHRcdGRlcF9yZXEgPSAoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKilyZXNwLVx1MDAzZWRhdGE7XG4xMTEwOlx0XG4xMTExOlx0XHRpZiAocmVzcC1cdTAwM2VsZW4gXHUwMDNjIHNpemUgfHwgZGVwX3JlcS1cdTAwM2VkaXIgIT0gRElHSVRBTF9ORkNfREVQX0ZSQU1FX0RJUl9PVVQgfHxcbjExMTI6XHRcdCAgICBkZXBfcmVxLVx1MDAzZWNtZCAhPSBESUdJVEFMX0NNRF9ERVBfUkVRKSB7XG4xMTEzOlx0XHRcdHJjID0gLUVJTztcbjExMTQ6XHRcdFx0Z290byBleGl0O1xuMTExNTpcdFx0fVxuMTExNjpcdFxuMTExNzpcdFx0cGZiID0gZGVwX3JlcS1cdTAwM2VwZmI7XG4xMTE4Olx0XG4xMTE5Olx0XHRpZiAoRElHSVRBTF9ORkNfREVQX0RJRF9CSVRfU0VUKHBmYikpIHtcbjExMjA6XHRcdFx0aWYgKHJlc3AtXHUwMDNlbGVuIFx1MDAzYyBzaXplICYjNDM7IDEgfHwgIWRkZXYtXHUwMDNlZGlkIHx8XG4xMTIxOlx0XHRcdCAgICBkZGV2LVx1MDAzZWRpZCAhPSByZXNwLVx1MDAzZWRhdGFbc2l6ZV0pIHtcbjExMjI6XHRcdFx0XHRyYyA9IC1FSU87XG4xMTIzOlx0XHRcdFx0Z290byBleGl0O1xuMTEyNDpcdFx0XHR9XG4xMTI1Olx0XHRcdHNpemUmIzQzOyYjNDM7O1xuMTEyNjpcdFx0fSBlbHNlIGlmIChkZGV2LVx1MDAzZWRpZCkge1xuMTEyNzpcdFx0XHRyYyA9IC1FSU87XG4xMTI4Olx0XHRcdGdvdG8gZXhpdDtcbjExMjk6XHRcdH1cbjExMzA6XHRcbjExMzE6XHRcdGlmIChESUdJVEFMX05GQ19ERVBfTkFEX0JJVF9TRVQocGZiKSkge1xuMTEzMjpcdFx0XHRyYyA9IC1FSU87XG4xMTMzOlx0XHRcdGdvdG8gZXhpdDtcbjExMzQ6XHRcdH1cbjExMzU6XHRcbjExMzY6XHRcdGlmIChzaXplIFx1MDAzZSByZXNwLVx1MDAzZWxlbikge1xuMTEzNzpcdFx0XHRyYyA9IC1FSU87XG4xMTM4Olx0XHRcdGdvdG8gZXhpdDtcbjExMzk6XHRcdH1cbjExNDA6XHRcbjExNDE6XHRcdHNrYl9wdWxsKHJlc3AsIHNpemUpO1xuMTE0MjpcdFxuMTE0MzpcdFx0c3dpdGNoIChESUdJVEFMX05GQ19ERVBfUEZCX1RZUEUocGZiKSkge1xuMTE0NDpcdFx0Y2FzZSBESUdJVEFMX05GQ19ERVBfUEZCX0lfUERVOlxuMTE0NTpcdFx0XHRwcl9kZWJ1ZyhcJiMzNDtESUdJVEFMX05GQ19ERVBfUEZCX0lfUERVXFxuXCYjMzQ7KTtcbjExNDY6XHRcbjExNDc6XHRcdFx0aWYgKGRkZXYtXHUwMDNlYXRuX2NvdW50KSB7XG4xMTQ4Olx0XHRcdFx0LyogVGhlIHRhcmdldCBoYXMgcmVjZWl2ZWQgKGFuZCByZXBsaWVkIHRvKSBhdCBsZWFzdCBvbmVcbjExNDk6XHRcdFx0XHQgKiBBVE4gREVQX1JFUS5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMiAxMzoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NjI0CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMTcxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgVGhvdWdodHMgb24gTkZDIEZ1enppbmcgaW4gU3l6a2FsbGVyKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgbmV0L25mYy9kaWdpdGFsX2RlcC5jYCwgd2hpY2ggSSBrbm93IGlzIHBhcnQgb2YgdGhlIE5GQyBEaWdpdGFsIFByb3RvY29sIHdpdGhpbiB0aGUgTkZDIHN1YnN5c3RlbS4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzOiBjYW4gd2UgZXZlbiAqcmVhY2gqIE5GQyB3aXRoaW4gdGhlIHN0YW5kYXJkIFN5emthbGxlciBzZXR1cCBvciBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBJJiMzOTttIHRoaW5raW5nIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lLCB0eXBpY2FsIGZ1enppbmcgc2NlbmFyaW9zLgoKSG9sZCBvbiwgSSB2YWd1ZWx5IHJlY2FsbCBzb21lIG1lbnRpb24gb2YgTkZDIGZ1enppbmcgaW4gU3l6a2FsbGVyLiBMZXQmIzM5O3MgY29uZmlybSAtIGRvZXMgU3l6a2FsbGVyIGFjdHVhbGx5IHN1cHBvcnQgTkZDLCBvciBhbSBJIG1pc3Rha2VuPyBJZiBzbywgd2hhdCBkcml2ZXJzIG9yIGludGVyZmFjZXMgZW5hYmxlIHRoaXMgc3VwcG9ydD8KCk15IG1pbmQgaXMgcmFjaW5nIHRocm91Z2ggcG9zc2liaWxpdGllcy4gSSYjMzk7bSB0aGlua2luZyBvZiBkcml2ZXJzIGxpa2UgYG5mY3NpbWAgKHRoYXQmIzM5O3MgdGhlIE5GQyBzaW11bGF0b3IgZHJpdmVyLCByaWdodD8gYGRyaXZlcnMvbmZjL25mY3NpbS5jYCksIHZpcnR1YWwgTkZDIGludGVyZmFjZXMsIHJhdyBzb2NrZXRzLCBOZXRsaW5rLCBhbmQgZXZlbiB0aGF0IGNsZXZlciBwbjUzMyBVU0IgZW11bGF0aW9uIHRocm91Z2ggdGhlIHN5emthbGxlciBVU0IgcmF3IGdhZGdldC4gTm93IEkgaGF2ZSB0byBnbyB0aHJvdWdoIGBuZmNzaW1gIG9yIG90aGVyIHZpcnR1YWwgZHJpdmVycyBmcm9tIHRoZSBrZXJuZWwgdHJlZSBmb3IgbW9yZSBpbnNpZ2h0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMiAxMzoyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZmNfZGlnaXRhbF9kZXYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25mYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25mYy9uZmNzaW0uYy0xNS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jOjE2OiNkZWZpbmUgTkZDU0lNX0VSUihkLCBmbXQsIGFyZ3MuLi4pIG5mY19lcnIoXHUwMDI2ZC1cdTAwM2VuZmNfZGlnaXRhbF9kZXYtXHUwMDNlbmZjX2Rldi1cdTAwM2VkZXYsIFxcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0xNy1cdFx0XHRcdFx0ICAgIFwmIzM0OyVzOiBcJiMzNDsgZm10LCBfX2Z1bmNfXywgIyMgYXJncylcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTE4LVxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MTk6I2RlZmluZSBORkNTSU1fREJHKGQsIGZtdCwgYXJncy4uLikgZGV2X2RiZyhcdTAwMjZkLVx1MDAzZW5mY19kaWdpdGFsX2Rldi1cdTAwM2VuZmNfZGV2LVx1MDAzZWRldiwgXFxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTIwLVx0XHRcdFx0XHQgICAgXCYjMzQ7JXM6IFwmIzM0OyBmbXQsIF9fZnVuY19fLCAjIyBhcmdzKVxuLS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jPTMxPXN0cnVjdCBuZmNzaW0ge1xuZHJpdmVycy9uZmMvbmZjc2ltLmM6MzI6XHRzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpuZmNfZGlnaXRhbF9kZXY7XG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zMy1cbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYz0xODI9c3RhdGljIHZvaWQgbmZjc2ltX3JlY3Zfd3Eoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTE5Ny1cbmRyaXZlcnMvbmZjL25mY3NpbS5jOjE5ODpcdGRldi1cdTAwM2VjYihkZXYtXHUwMDNlbmZjX2RpZ2l0YWxfZGV2LCBkZXYtXHUwMDNlYXJnLCBza2IpO1xuZHJpdmVycy9uZmMvbmZjc2ltLmMtMTk5LX1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTIwMC1cbmRyaXZlcnMvbmZjL25mY3NpbS5jOjIwMTpzdGF0aWMgaW50IG5mY3NpbV9zZW5kKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHN0cnVjdCBza19idWZmICpza2IsXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yMDItXHRcdCAgICAgICB1MTYgdGltZW91dCwgbmZjX2RpZ2l0YWxfY21kX2NvbXBsZXRlX3QgY2IsIHZvaWQgKmFyZylcbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yMzktXG5kcml2ZXJzL25mYy9uZmNzaW0uYzoyNDA6c3RhdGljIHZvaWQgbmZjc2ltX2Fib3J0X2NtZChzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2KVxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjQxLXtcbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yNDYtXG5kcml2ZXJzL25mYy9uZmNzaW0uYzoyNDc6c3RhdGljIGludCBuZmNzaW1fc3dpdGNoX3JmKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIGJvb2wgb24pXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yNDgte1xuLS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTI1NS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jOjI1NjpzdGF0aWMgaW50IG5mY3NpbV9pbl9jb25maWd1cmVfaHcoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTI1Ny1cdFx0XHRcdFx0ICBpbnQgdHlwZSwgaW50IHBhcmFtKVxuLS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTI3OC1cbmRyaXZlcnMvbmZjL25mY3NpbS5jOjI3OTpzdGF0aWMgaW50IG5mY3NpbV9pbl9zZW5kX2NtZChzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjgwLVx0XHRcdCAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MTYgdGltZW91dCxcbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yODUtXG5kcml2ZXJzL25mYy9uZmNzaW0uYzoyODY6c3RhdGljIGludCBuZmNzaW1fdGdfY29uZmlndXJlX2h3KHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yODctXHRcdFx0XHRcdCAgaW50IHR5cGUsIGludCBwYXJhbSlcbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zMDgtXG5kcml2ZXJzL25mYy9uZmNzaW0uYzozMDk6c3RhdGljIGludCBuZmNzaW1fdGdfc2VuZF9jbWQoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTMxMC1cdFx0XHQgICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTE2IHRpbWVvdXQsXG4tLVxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzE1LVxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MzE2OnN0YXRpYyBpbnQgbmZjc2ltX3RnX2xpc3RlbihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB1MTYgdGltZW91dCxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTMxNy1cdFx0XHQgICAgbmZjX2RpZ2l0YWxfY21kX2NvbXBsZXRlX3QgY2IsIHZvaWQgKmFyZylcbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYz0zNDY9c3RhdGljIHZvaWQgbmZjc2ltX2RlYnVnZnNfaW5pdF9kZXYoc3RydWN0IG5mY3NpbSAqZGV2KVxuLS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTM1Ny1cbmRyaXZlcnMvbmZjL25mY3NpbS5jOjM1ODpcdGlkeCA9IGRldi1cdTAwM2VuZmNfZGlnaXRhbF9kZXYtXHUwMDNlbmZjX2Rldi1cdTAwM2VpZHg7XG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zNTktXHRuID0gc25wcmludGYoZGV2bmFtZSwgc2l6ZW9mKGRldm5hbWUpLCBcJiMzNDtuZmMlZFwmIzM0OywgaWR4KTtcbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYz0zNzA9c3RhdGljIHN0cnVjdCBuZmNzaW0gKm5mY3NpbV9kZXZpY2VfbmV3KHN0cnVjdCBuZmNzaW1fbGluayAqbGlua19pbixcbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zODItXG5kcml2ZXJzL25mYy9uZmNzaW0uYzozODM6XHRkZXYtXHUwMDNlbmZjX2RpZ2l0YWxfZGV2ID1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTM4NC1cdFx0XHRuZmNfZGlnaXRhbF9hbGxvY2F0ZV9kZXZpY2UoXHUwMDI2bmZjc2ltX2RpZ2l0YWxfb3BzLFxuLS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTM4Ny1cdFx0XHRcdFx0XHQgICAgMCwgMCk7XG5kcml2ZXJzL25mYy9uZmNzaW0uYzozODg6XHRpZiAoIWRldi1cdTAwM2VuZmNfZGlnaXRhbF9kZXYpIHtcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTM4OS1cdFx0a2ZyZWUoZGV2KTtcbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zOTItXG5kcml2ZXJzL25mYy9uZmNzaW0uYzozOTM6XHRuZmNfZGlnaXRhbF9zZXRfZHJ2ZGF0YShkZXYtXHUwMDNlbmZjX2RpZ2l0YWxfZGV2LCBkZXYpO1xuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzk0LVxuLS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTM5Ny1cbmRyaXZlcnMvbmZjL25mY3NpbS5jOjM5ODpcdHJjID0gbmZjX2RpZ2l0YWxfcmVnaXN0ZXJfZGV2aWNlKGRldi1cdTAwM2VuZmNfZGlnaXRhbF9kZXYpO1xuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzk5LVx0aWYgKHJjKSB7XG5kcml2ZXJzL25mYy9uZmNzaW0uYy00MDAtXHRcdHByX2VycihcJiMzNDtDb3VsZCBub3QgcmVnaXN0ZXIgZGlnaXRhbCBkZXZpY2UgKCVkKVxcblwmIzM0OywgcmMpO1xuZHJpdmVycy9uZmMvbmZjc2ltLmM6NDAxOlx0XHRuZmNfZGlnaXRhbF9mcmVlX2RldmljZShkZXYtXHUwMDNlbmZjX2RpZ2l0YWxfZGV2KTtcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQwMi1cdFx0a2ZyZWUoZGV2KTtcbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYz00MTI9c3RhdGljIHZvaWQgbmZjc2ltX2RldmljZV9mcmVlKHN0cnVjdCBuZmNzaW0gKmRldilcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQxMy17XG5kcml2ZXJzL25mYy9uZmNzaW0uYzo0MTQ6XHRuZmNfZGlnaXRhbF91bnJlZ2lzdGVyX2RldmljZShkZXYtXHUwMDNlbmZjX2RpZ2l0YWxfZGV2KTtcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQxNS1cbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYy00MjItXG5kcml2ZXJzL25mYy9uZmNzaW0uYzo0MjM6XHRuZmNfZGlnaXRhbF9mcmVlX2RldmljZShkZXYtXHUwMDNlbmZjX2RpZ2l0YWxfZGV2KTtcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQyNC1cbi0tXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM9NDM5PXN0cnVjdCBwb3J0MTAwIHtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo0NDA6XHRzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpuZmNfZGlnaXRhbF9kZXY7XG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtNDQxLVxuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYz05MzE9c3RhdGljIHZvaWQgcG9ydDEwMF9zZW5kX2NvbXBsZXRlKHN0cnVjdCB1cmIgKnVyYilcbi0tXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtOTU0LVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjk1NTpzdGF0aWMgdm9pZCBwb3J0MTAwX2Fib3J0X2NtZChzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2KVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTk1Ni17XG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jPTEwMjU9c3RhdGljIHUxNiBwb3J0MTAwX2dldF9maXJtd2FyZV92ZXJzaW9uKHN0cnVjdCBwb3J0MTAwICpkZXYpXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEwNDYtXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTA0NzpzdGF0aWMgaW50IHBvcnQxMDBfc3dpdGNoX3JmKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIGJvb2wgb24pXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTA0OC17XG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEwNzEtXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTA3MjpzdGF0aWMgaW50IHBvcnQxMDBfaW5fc2V0X3JmKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHU4IHJmKVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEwNzMte1xuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMTAwLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjExMDE6c3RhdGljIGludCBwb3J0MTAwX2luX3NldF9mcmFtaW5nKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIGludCBwYXJhbSlcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMTAyLXtcbi0tXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTE0Mi1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxMTQzOnN0YXRpYyBpbnQgcG9ydDEwMF9pbl9jb25maWd1cmVfaHcoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgaW50IHR5cGUsXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTE0NC1cdFx0XHRcdCAgIGludCBwYXJhbSlcbi0tXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM9MTE1NT1zdGF0aWMgdm9pZCBwb3J0MTAwX2luX2NvbW1fcmZfY29tcGxldGUoc3RydWN0IHBvcnQxMDAgKmRldiwgdm9pZCAqYXJnLFxuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMjAwLWV4aXQ6XG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTIwMTpcdGNiKGRldi1cdTAwM2VuZmNfZGlnaXRhbF9kZXYsIGNiX2FyZy1cdTAwM2Vjb21wbGV0ZV9hcmcsIHJlc3ApO1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEyMDItXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEyMDUtXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTIwNjpzdGF0aWMgaW50IHBvcnQxMDBfaW5fc2VuZF9jbWQoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMjA3LVx0XHRcdCAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MTYgX3RpbWVvdXQsXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEyMjgtXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTIyOTpzdGF0aWMgaW50IHBvcnQxMDBfdGdfc2V0X3JmKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHU4IHJmKVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEyMzAte1xuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMjU3LVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjEyNTg6c3RhdGljIGludCBwb3J0MTAwX3RnX3NldF9mcmFtaW5nKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIGludCBwYXJhbSlcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMjU5LXtcbi0tXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTI5OS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxMzAwOnN0YXRpYyBpbnQgcG9ydDEwMF90Z19jb25maWd1cmVfaHcoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgaW50IHR5cGUsXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTMwMS1cdFx0XHRcdCAgIGludCBwYXJhbSlcbi0tXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM9MTMzMj1zdGF0aWMgdm9pZCBwb3J0MTAwX3RnX2NvbW1fcmZfY29tcGxldGUoc3RydWN0IHBvcnQxMDAgKmRldiwgdm9pZCAqYXJnLFxuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMzY2LWV4aXQ6XG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTM2NzpcdGNiKGRldi1cdTAwM2VuZmNfZGlnaXRhbF9kZXYsIGNiX2FyZy1cdTAwM2Vjb21wbGV0ZV9hcmcsIHJlc3ApO1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEzNjgtXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEzNzEtXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTM3MjpzdGF0aWMgaW50IHBvcnQxMDBfdGdfc2VuZF9jbWQoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMzczLVx0XHRcdCAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MTYgdGltZW91dCxcbi0tXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTM5OS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxNDAwOnN0YXRpYyBpbnQgcG9ydDEwMF9saXN0ZW5fbWRhYShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE0MDEtXHRcdFx0ICAgICAgIHN0cnVjdCBkaWdpdGFsX3RnX21kYWFfcGFyYW1zICpwYXJhbXMsXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE0NTUtXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTQ1NjpzdGF0aWMgaW50IHBvcnQxMDBfbGlzdGVuKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHUxNiB0aW1lb3V0LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE0NTctXHRcdFx0ICBuZmNfZGlnaXRhbF9jbWRfY29tcGxldGVfdCBjYiwgdm9pZCAqYXJnKVxuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYz0xNDg5PXN0YXRpYyBpbnQgcG9ydDEwMF9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlLFxuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xNTcxLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjE1NzI6XHRkZXYtXHUwMDNlbmZjX2RpZ2l0YWxfZGV2ID0gbmZjX2RpZ2l0YWxfYWxsb2NhdGVfZGV2aWNlKFx1MDAyNnBvcnQxMDBfZGlnaXRhbF9vcHMsXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTU3My1cdFx0XHRcdFx0XHRcdCAgIFBPUlQxMDBfUFJPVE9DT0xTLFxuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xNTc2LVx0XHRcdFx0XHRcdFx0ICAgZGV2LVx1MDAzZXNrYl90YWlscm9vbSk7XG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTU3NzpcdGlmICghZGV2LVx1MDAzZW5mY19kaWdpdGFsX2Rldikge1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE1NzgtXHRcdG5mY19lcnIoXHUwMDI2aW50ZXJmYWNlLVx1MDAzZWRldixcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxNTc5Olx0XHRcdFwmIzM0O0NvdWxkIG5vdCBhbGxvY2F0ZSBuZmNfZGlnaXRhbF9kZXZcXG5cJiMzNDspO1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE1ODAtXHRcdHJjID0gLUVOT01FTTtcbi0tXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTU4My1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxNTg0Olx0bmZjX2RpZ2l0YWxfc2V0X3BhcmVudF9kZXYoZGV2LVx1MDAzZW5mY19kaWdpdGFsX2RldiwgXHUwMDI2aW50ZXJmYWNlLVx1MDAzZWRldik7XG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTU4NTpcdG5mY19kaWdpdGFsX3NldF9kcnZkYXRhKGRldi1cdTAwM2VuZmNfZGlnaXRhbF9kZXYsIGRldik7XG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTU4Ni1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxNTg3Olx0cmMgPSBuZmNfZGlnaXRhbF9yZWdpc3Rlcl9kZXZpY2UoZGV2LVx1MDAzZW5mY19kaWdpdGFsX2Rldik7XG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTU4OC1cdGlmIChyYykge1xuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xNTk2LWZyZWVfbmZjX2RldjpcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxNTk3Olx0bmZjX2RpZ2l0YWxfZnJlZV9kZXZpY2UoZGV2LVx1MDAzZW5mY19kaWdpdGFsX2Rldik7XG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTU5OC1cbi0tXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM9MTYwOD1zdGF0aWMgdm9pZCBwb3J0MTAwX2Rpc2Nvbm5lY3Qoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSlcbi0tXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTYxNC1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxNjE1Olx0bmZjX2RpZ2l0YWxfdW5yZWdpc3Rlcl9kZXZpY2UoZGV2LVx1MDAzZW5mY19kaWdpdGFsX2Rldik7XG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTYxNjpcdG5mY19kaWdpdGFsX2ZyZWVfZGV2aWNlKGRldi1cdTAwM2VuZmNfZGlnaXRhbF9kZXYpO1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE2MTctXG4tLVxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYz0yMTc9c3RydWN0IHN0OTVoZl9jb250ZXh0IHtcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtMjE4LVx0c3RydWN0IHN0OTVoZl9zcGlfY29udGV4dCBzcGljb250ZXh0O1xuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzoyMTk6XHRzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2O1xuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy0yMjAtXHRzdHJ1Y3QgbmZjX2RldiAqbmZjZGV2O1xuLS1cbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM9NTMxPXN0YXRpYyBpbnQgaXNvMTQ0NDNfY29uZmlnX2ZkdChzdHJ1Y3Qgc3Q5NWhmX2NvbnRleHQgKnN0OTVjb250ZXh0LCBpbnQgd3R4bSlcbi0tXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTUzNC1cdHN0cnVjdCBkZXZpY2UgKmRldiA9IFx1MDAyNnN0OTVjb250ZXh0LVx1MDAzZXNwaWNvbnRleHQuc3BpZGV2LVx1MDAzZWRldjtcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6NTM1Olx0c3RydWN0IG5mY19kaWdpdGFsX2RldiAqbmZjZGRldiA9IHN0OTVjb250ZXh0LVx1MDAzZWRkZXY7XG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTUzNi1cdHVuc2lnbmVkIGNoYXIgcHBfdHlwZWI7XG4tLVxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYz02MDI9c3RhdGljIGludCBzdDk1aGZfaGFuZGxlX3d0eChzdHJ1Y3Qgc3Q5NWhmX2NvbnRleHQgKnN0Y29udGV4dCxcbi0tXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTYwOC1cdHN0cnVjdCBwYXJhbV9saXN0IG5ld19wYXJhbXNbMV07XG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jOjYwOTpcdHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKm5mY2RkZXYgPSBzdGNvbnRleHQtXHUwMDNlZGRldjtcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtNjEwLVx0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2c3Rjb250ZXh0LVx1MDAzZW5mY2Rldi1cdTAwM2VkZXY7XG4tLVxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYz02OTM9c3RhdGljIGludCBzdDk1aGZfcmVzcG9uc2VfaGFuZGxlcihzdHJ1Y3Qgc3Q5NWhmX2NvbnRleHQgKnN0Y29udGV4dCxcbi0tXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTY5OS1cdHVuc2lnbmVkIGNoYXIgdmFsX21tO1xuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzo3MDA6XHRzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpuZmNkZGV2ID0gc3Rjb250ZXh0LVx1MDAzZWRkZXY7XG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTcwMS1cdHN0cnVjdCBkZXZpY2UgKmRldiA9IFx1MDAyNnN0Y29udGV4dC1cdTAwM2VuZmNkZXYtXHUwMDNlZGV2O1xuLS1cbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM9NzY2PXN0YXRpYyBpcnFyZXR1cm5fdCBzdDk1aGZfaXJxX3RocmVhZF9oYW5kbGVyKGludCBpcnEsIHZvaWQgICpzdDk1aGZjb250ZXh0KVxuLS1cbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtODY4LS8qIE5GQyBvcHMgZnVuY3Rpb25zIGRlZmluaXRpb24gKi9cbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6ODY5OnN0YXRpYyBpbnQgc3Q5NWhmX2luX2NvbmZpZ3VyZV9odyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy04NzAtXHRcdFx0XHQgIGludCB0eXBlLFxuLS1cbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM9OTAxPXN0YXRpYyBpbnQgcmZfb2ZmKHN0cnVjdCBzdDk1aGZfY29udGV4dCAqc3Rjb250ZXh0KVxuLS1cbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtOTE0LVxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzo5MTU6c3RhdGljIGludCBzdDk1aGZfaW5fc2VuZF9jbWQoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtOTE2LVx0XHRcdCAgICAgIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy05ODgtLyogcDJwIHdpbGwgYmUgc3VwcG9ydGVkIGluIGEgbGF0ZXIgcmVsZWFzZSAhICovXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jOjk4OTpzdGF0aWMgaW50IHN0OTVoZl90Z19jb25maWd1cmVfaHcoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtOTkwLVx0XHRcdFx0ICBpbnQgdHlwZSxcbi0tXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTk5NS1cbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6OTk2OnN0YXRpYyBpbnQgc3Q5NWhmX3RnX3NlbmRfY21kKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTk5Ny1cdFx0XHQgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtMTAwNC1cbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6MTAwNTpzdGF0aWMgaW50IHN0OTVoZl90Z19saXN0ZW4oc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtMTAwNi1cdFx0XHQgICAgdTE2IHRpbWVvdXQsXG4tLVxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy0xMDEyLVxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzoxMDEzOnN0YXRpYyBpbnQgc3Q5NWhmX3RnX2dldF9yZl90ZWNoKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHU4ICpyZl90ZWNoKVxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy0xMDE0LXtcbi0tXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTEwMTctXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jOjEwMTg6c3RhdGljIGludCBzdDk1aGZfc3dpdGNoX3JmKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIGJvb2wgb24pXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTEwMTkte1xuLS1cbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtMTAzMy0vKiBUT0RPIHN0OTVoZl9hYm9ydF9jbWQgKi9cbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6MTAzNDpzdGF0aWMgdm9pZCBzdDk1aGZfYWJvcnRfY21kKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYpXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTEwMzUte1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM9NDMwPXN0cnVjdCB0cmY3OTcwYSB7XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy00MzUtXHRzdHJ1Y3QgcmVndWxhdG9yXHRcdCp2ZGRpb19yZWd1bGF0b3I7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjQzNjpcdHN0cnVjdCBuZmNfZGlnaXRhbF9kZXZcdFx0KmRkZXY7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTQzNy1cdHUzMlx0XHRcdFx0cXVpcmtzO1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM9MTE0Nz1zdGF0aWMgaW50IHRyZjc5NzBhX3N3aXRjaF9yZl9vbihzdHJ1Y3QgdHJmNzk3MGEgKnRyZilcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExNzEtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjExNzI6c3RhdGljIGludCB0cmY3OTcwYV9zd2l0Y2hfcmYoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgYm9vbCBvbilcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTE3My17XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYz0xMzEyPXN0YXRpYyBpbnQgdHJmNzk3MGFfaW5fY29uZmlnX2ZyYW1pbmcoc3RydWN0IHRyZjc5NzBhICp0cmYsIGludCBmcmFtaW5nKVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTM4Ni1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTM4NzpzdGF0aWMgaW50IHRyZjc5NzBhX2luX2NvbmZpZ3VyZV9odyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBpbnQgdHlwZSxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTM4OC1cdFx0XHRcdCAgICBpbnQgcGFyYW0pXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYz0xNDM5PXN0YXRpYyBpbnQgdHJmNzk3MGFfcGVyX2NtZF9jb25maWcoc3RydWN0IHRyZjc5NzBhICp0cmYsXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNTA3LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNTA4OnN0YXRpYyBpbnQgdHJmNzk3MGFfc2VuZF9jbWQoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTUwOS1cdFx0XHQgICAgIHN0cnVjdCBza19idWZmICpza2IsIHUxNiB0aW1lb3V0LFxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM9MTY3MD1zdGF0aWMgaW50IHRyZjc5NzBhX3RnX2NvbmZpZ19mcmFtaW5nKHN0cnVjdCB0cmY3OTcwYSAqdHJmLCBpbnQgZnJhbWluZylcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE3MjgtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE3Mjk6c3RhdGljIGludCB0cmY3OTcwYV90Z19jb25maWd1cmVfaHcoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgaW50IHR5cGUsXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE3MzAtXHRcdFx0XHQgICAgaW50IHBhcmFtKVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTc2NC1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTc2NTpzdGF0aWMgaW50IF90cmY3OTcwYV90Z19saXN0ZW4oc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdTE2IHRpbWVvdXQsXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE3NjYtXHRcdFx0ICAgICAgIG5mY19kaWdpdGFsX2NtZF9jb21wbGV0ZV90IGNiLCB2b2lkICphcmcsXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xODQzLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxODQ0OnN0YXRpYyBpbnQgdHJmNzk3MGFfdGdfbGlzdGVuKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHUxNiB0aW1lb3V0LFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xODQ1LVx0XHRcdCAgICAgIG5mY19kaWdpdGFsX2NtZF9jb21wbGV0ZV90IGNiLCB2b2lkICphcmcpXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xODU0LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxODU1OnN0YXRpYyBpbnQgdHJmNzk3MGFfdGdfbGlzdGVuX21kKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE4NTYtXHRcdFx0XHQgdTE2IHRpbWVvdXQsIG5mY19kaWdpdGFsX2NtZF9jb21wbGV0ZV90IGNiLFxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTg3Ny1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTg3ODpzdGF0aWMgaW50IHRyZjc5NzBhX3RnX2dldF9yZl90ZWNoKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHU4ICpyZl90ZWNoKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xODc5LXtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE4ODktXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE4OTA6c3RhdGljIHZvaWQgdHJmNzk3MGFfYWJvcnRfY21kKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE4OTEte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEyIDEzOjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExNjc2CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTAyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgVGhvdWdodHMgb24gTkZDIERyaXZlciBJbnZlc3RpZ2F0aW9uKioKCk9rYXksIHNvIEkmIzM5O3ZlIHNwb3R0ZWQgYHBvcnQxMDBgLiBSaWdodCwgdGhhdCYjMzk7cyBhIFVTQiBORkMgZHJpdmVyLiBHb29kLiBJIHNlZSBpdHMgcHJvYmUgZnVuY3Rpb24sIGBwb3J0MTAwX3Byb2JlYC4gVGhhdCYjMzk7cyB0aGUgZW50cnkgcG9pbnQgdG8gaG93IGl0IGhhbmRsZXMgaXRzIGZ1bmN0aW9uYWxpdHkuIEltbWVkaWF0ZWx5LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IGVtdWxhdGlvbiBzdHJhdGVnaWVzLiBVU0IgZHJpdmVycyBhcmUgb2Z0ZW4gcmlwZSBmb3IgZnV6emluZywgYW5kIEkga25vdyB0aGF0IHN5emthbGxlciBoYXMgdGhhdCByYXcgZ2FkZ2V0IHNldHVwLCB0aGUgYGR1bW15X2hjZGAgYW5kIGByYXdfZ2FkZ2V0YCBzdHVmZi4gVGhhdCBjb3VsZCBiZSBhIGRpcmVjdCBsaW5lIHRvIG1hbmlwdWxhdGUgdGhlIGRyaXZlciB3aXRob3V0IG5lZWRpbmcgYWN0dWFsIGhhcmR3YXJlLiBJIHNob3VsZCBwcm9iYWJseSBhbHNvIGNvbnNpZGVyIGludGVyYWN0aW5nIHdpdGggb3IgZXZlbiBjcmVhdGluZyBhbiBgbmZjc2ltYCBpbnN0YW5jZSBhcyBhbm90aGVyIGF2ZW51ZSBmb3IgdGVzdGluZy4KCkZ1cnRoZXJtb3JlLCBteSBtaW5kIGp1bXBzIHRvIGludmVzdGlnYXRpbmcgaG93IHRoZSBkcml2ZXImIzM5O3MgaW5uZXIgd29ya2luZ3MgYXJlIHVzZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkYXRhIGZsb3csIGFuZCBzcGVjaWZpY2FsbHksIEkmIzM5O20gY3VyaW91cyBhYm91dCB0aGUgZnVuY3Rpb24gYGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxYC4gSG93IGlzIHRoaXMgZnVuY3Rpb24gYWN0dWFsbHkgKnVzZWQqPyBXaGF0IGFyZSB0aGUgY2FsbGluZyBjb250ZXh0cz8gTGV0JiMzOTtzIHRyYWNlIGJhY2sgdGhlIGNhbGxlcnMgb2YgdGhpcyBmdW5jdGlvbi4gVW5kZXJzdGFuZGluZyBpdHMgaW50ZXJhY3Rpb24gd2l0aCB0aGUgZHJpdmVyIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciBncmFzcCBvZiB0aGUgcG90ZW50aWFsIGF0dGFjayBzdXJmYWNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEyIDEzOjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25mYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmZjL2RpZ2l0YWxfZGVwLmM9MTA2PXN0YXRpYyB2b2lkIGRpZ2l0YWxfaW5fcmVjdl9kZXBfcmVzKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDctXHRcdFx0XHQgICAgc3RydWN0IHNrX2J1ZmYgKnJlc3ApO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwODpzdGF0aWMgdm9pZCBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB2b2lkICphcmcsXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTA5LVx0XHRcdFx0ICAgIHN0cnVjdCBza19idWZmICpyZXNwKTtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9OTc4PXN0YXRpYyBpbnQgZGlnaXRhbF90Z19zZW5kX2FjayhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDEyLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwMTM6XHRyYyA9IGRpZ2l0YWxfdGdfc2VuZF9jbWQoZGRldiwgc2tiLCAxNTAwLCBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcSxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDE0LVx0XHRcdFx0IGRhdGFfZXhjaCk7XG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTEwMjQ9c3RhdGljIGludCBkaWdpdGFsX3RnX3NlbmRfYXRuKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYpXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwNTEtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTA1MjpcdHJjID0gZGlnaXRhbF90Z19zZW5kX2NtZChkZGV2LCBza2IsIDE1MDAsIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxLFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwNTMtXHRcdFx0XHQgTlVMTCk7XG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTEwNjA9c3RhdGljIGludCBkaWdpdGFsX3RnX3NlbmRfc2F2ZWRfc2tiKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYpXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwNjktXHRyYyA9IGRpZ2l0YWxfdGdfc2VuZF9jbWQoZGRldiwgZGRldi1cdTAwM2VzYXZlZF9za2IsIDE1MDAsXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTA3MDpcdFx0XHRcdCBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcSwgTlVMTCk7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTA3MS1cdGlmIChyYylcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTA3Ni1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDc3OnN0YXRpYyB2b2lkIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDc4LVx0XHRcdFx0ICAgIHN0cnVjdCBza19idWZmICpyZXNwKVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz0xMjk3PWludCBkaWdpdGFsX3RnX3NlbmRfZGVwX3JlcyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzMxLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEzMzI6XHRyYyA9IGRpZ2l0YWxfdGdfc2VuZF9jbWQoZGRldiwgdG1wX3NrYiwgMTUwMCwgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEsXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTMzMy1cdFx0XHRcdCBOVUxMKTtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9MTM0OD1zdGF0aWMgdm9pZCBkaWdpdGFsX3RnX3NlbmRfcHNsX3Jlc19jb21wbGV0ZShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzU5LVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEzNjA6XHRkaWdpdGFsX3RnX2xpc3RlbihkZGV2LCAxNTAwLCBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcSwgTlVMTCk7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTM2MS1cbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9MTQ2Nz1zdGF0aWMgdm9pZCBkaWdpdGFsX3RnX3NlbmRfYXRyX3Jlc19jb21wbGV0ZShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xNDg1LVx0ZWxzZVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjE0ODY6XHRcdGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxKGRkZXYsIGFyZywgcmVzcCk7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTQ4Ny19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTIgMTM6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMwNzMKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAzMDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaDogTkZDIERJRCBIYW5kbGluZyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNvcmUgbG9naWMgb2YgdGhpcyBwYXRjaC4gSXQgYXBwZWFycyB0byBiZSByZWxhdGVkIHRvIGhhbmRsaW5nIHRoZSBEZXZpY2UgSUQgKERJRCkgZmllbGQgd2l0aGluIHRoZSBORkMgRGlnaXRhbCBERVAgcHJvdG9jb2wuIEkmIzM5O20gZm9jdXNpbmcgb24gdGhlIGNoYW5nZXMgbWFkZSB0byB0aGUgYHBmYmAgdmFyaWFibGUgYW5kIHRoZSBjb25kaXRpb25hbCBsb2dpYyBzdXJyb3VuZGluZyB0aGUgYGRkZXYtJmd0O2RpZGAgY2hlY2suCgpMb29raW5nIGF0IHRoZSBvcmlnaW5hbCBjb2RlIGFuZCB0aGUgcGF0Y2ggc2lkZS1ieS1zaWRlIHJlYWxseSBoZWxwcy4gSW4gdGhlIG9yaWdpbmFsLCBpdCBzZWVtcyB0aGVyZSYjMzk7cyBhbiBleHBsaWNpdCBjaGVjazogaWYgYSBESUQgYml0IGlzIHNldCwgYW5kIGlmIGBkZGV2LSZndDtkaWRgICpleGlzdHMqIGFuZCBtYXRjaGVzIGByZXNwLSZndDtkYXRhWzNdYCwgdGhlbiB0aGUgc2l6ZSBpcyBpbmNyZW1lbnRlZC4gVGhlIHBhdGNoIHNlZW1zIHRvIGJlIHVwZGF0aW5nIGhvdyB0aGlzIHNpemUgaW5jcmVtZW50IGFuZCBlcnJvciBjb25kaXRpb24gaXMgaGFuZGxlZC4KClRoZSBuZXcgY29kZSBoYXMgc29tZSBjb25kaXRpb25zOiAKMS4gYHJlc3AtJmd0O2xlbiAmbHQ7IHNpemUgJiM0MzsgMWA6IGNoZWNrcyBpZiB0aGUgcmVzcG9uc2UgaXMgYmlnIGVub3VnaAoyLiBgIWRkZXYtJmd0O2RpZGA6IGNoZWNrcyBpZiB0aGVyZSBpcyBubyBgZGRldi0mZ3Q7ZGlkYAozLiBgZGRldi0mZ3Q7ZGlkICE9IHJlc3AtJmd0O2RhdGFbc2l6ZV1gOiBjb21wYXJlcyBgZGRldi0mZ3Q7ZGlkYCB0byB3aGF0JiMzOTtzIGluIHRoZSByZXNwb25zZSBkYXRhCgpJJiMzOTttIHN0YXJ0aW5nIHRvIGdldCBpdC4gVGhlIHBhdGNoIHRpZ2h0ZW5zIHRoZSBlcnJvciBjb25kaXRpb25zIHRvIHByZXZlbnQgYSBwb3RlbnRpYWwgYnVmZmVyIHVuZGVyZmxvdyBvciBpbmNvcnJlY3QgRElEIGNvbXBhcmlzb24uIFRoZSBpbXBvcnRhbnQgYml0IGlzIHRvIGNoZWNrIHRoZSBgcmVzcC0mZ3Q7bGVuYCBmaWVsZC4gQWxzbywgdGhlIHBhdGNoIGFwcGVhcnMgdG8gc2ltcGxpZnkgdGhlIGxvZ2ljIGJ5IGNvbWJpbmluZyB0aGUgZXhpc3RlbmNlIGFuZCB0aGUgY29tcGFyaXNvbiBvZiBgZGRldi0mZ3Q7ZGlkYC4KCldhaXQsIGJhY2sgdXAuIEkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUgYWJvdXQgdGhhdCBpbmRleGluZy4gTGV0JiMzOTtzIGxvb2sgdXAgYHNpemVvZihzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcylgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgc3RydWN0dXJlIGxvb2tzIGxpa2UgdG8ga25vdyB0aGUgb2Zmc2V0cyBhbmQgd2hlcmUgdGhlIERJRCBpcyBleHBlY3RlZCB0byByZXNpZGUgaW4gdGhlIGJ1ZmZlci4gVGhhdCBgc2l6ZWAgdmFyaWFibGUgaXMgYSBjcml0aWNhbCBwaWVjZSBvZiB0aGUgcHV6emxlIGhlcmUsIGFuZCB0aGUgY2hhbmdlcyB0byB0aGUgb3JpZ2luYWwgYGlmYCBzdGF0ZW1lbnRzIGRlcGVuZHMgb24gaXQhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEyIDEzOjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25mYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmZjL2RpZ2l0YWxfZGVwLmM9OTQ9c3RydWN0IGRpZ2l0YWxfcHNsX3JlcyB7XG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTk5LVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwMDpzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyB7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTAxLVx0dTggZGlyO1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz0yMDA9ZGlnaXRhbF9zZW5kX2RlcF9kYXRhX3ByZXAoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoyMDE6XHRcdFx0ICAgc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKmRlcF9yZXFfcmVzLFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTIwMi1cdFx0XHQgICBzdHJ1Y3QgZGlnaXRhbF9kYXRhX2V4Y2ggKmRhdGFfZXhjaClcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9NTI5PXN0YXRpYyBpbnQgZGlnaXRhbF9pbl9zZW5kX2FjayhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01MzEte1xubmV0L25mYy9kaWdpdGFsX2RlcC5jOjUzMjpcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVxO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTUzMy1cdHN0cnVjdCBza19idWZmICpza2I7XG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTUzOS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo1NDA6XHRza2JfcHVzaChza2IsIHNpemVvZihzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcykpO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTU0MS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo1NDI6XHRkZXBfcmVxID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopc2tiLVx1MDAzZWRhdGE7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNTQzLVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz01NjY9c3RhdGljIGludCBkaWdpdGFsX2luX3NlbmRfbmFjayhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01Njgte1xubmV0L25mYy9kaWdpdGFsX2RlcC5jOjU2OTpcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVxO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTU3MC1cdHN0cnVjdCBza19idWZmICpza2I7XG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTU3Ni1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo1Nzc6XHRza2JfcHVzaChza2IsIHNpemVvZihzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcykpO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTU3OC1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo1Nzk6XHRkZXBfcmVxID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopc2tiLVx1MDAzZWRhdGE7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNTgwLVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz01OTg9c3RhdGljIGludCBkaWdpdGFsX2luX3NlbmRfYXRuKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTYwMC17XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NjAxOlx0c3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKmRlcF9yZXE7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjAyLVx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjA4LVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjYwOTpcdHNrYl9wdXNoKHNrYiwgc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKSk7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjEwLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjYxMTpcdGRlcF9yZXEgPSAoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKilza2ItXHUwMDNlZGF0YTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02MTItXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTYyOT1zdGF0aWMgaW50IGRpZ2l0YWxfaW5fc2VuZF9ydG94KHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTYzMS17XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NjMyOlx0c3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKmRlcF9yZXE7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjMzLVx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjQ2LVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjY0NzpcdHNrYl9wdXNoKHNrYiwgc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKSk7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjQ4LVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjY0OTpcdGRlcF9yZXEgPSAoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKilza2ItXHUwMDNlZGF0YTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02NTAtXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTY4Nj1zdGF0aWMgdm9pZCBkaWdpdGFsX2luX3JlY3ZfZGVwX3JlcyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB2b2lkICphcmcsXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTY4OS1cdHN0cnVjdCBkaWdpdGFsX2RhdGFfZXhjaCAqZGF0YV9leGNoID0gYXJnO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jOjY5MDpcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVzO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTY5MS1cdHU4IHBmYjtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNzU1LVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjc1NjpcdHNpemUgPSBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jOjc1NzpcdGRlcF9yZXMgPSAoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKilyZXNwLVx1MDAzZWRhdGE7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNzU4LVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz05MDQ9aW50IGRpZ2l0YWxfaW5fc2VuZF9kZXBfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTkwNy17XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6OTA4Olx0c3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKmRlcF9yZXE7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtOTA5LVx0c3RydWN0IHNrX2J1ZmYgKmNoYWluaW5nX3NrYiwgKnRtcF9za2I7XG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTkxMS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo5MTI6XHRza2JfcHVzaChza2IsIHNpemVvZihzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcykpO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTkxMy1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo5MTQ6XHRkZXBfcmVxID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopc2tiLVx1MDAzZWRhdGE7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtOTE1LVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz05Nzg9c3RhdGljIGludCBkaWdpdGFsX3RnX3NlbmRfYWNrKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTk4MC17XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6OTgxOlx0c3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKmRlcF9yZXM7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtOTgyLVx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtOTg4LVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjk4OTpcdHNrYl9wdXNoKHNrYiwgc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKSk7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtOTkwLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjk5MTpcdGRlcF9yZXMgPSAoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKilza2ItXHUwMDNlZGF0YTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05OTItXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTEwMjQ9c3RhdGljIGludCBkaWdpdGFsX3RnX3NlbmRfYXRuKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYpXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTAyNS17XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTAyNjpcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVzO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwMjctXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDMzLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwMzQ6XHRza2JfcHVzaChza2IsIHNpemVvZihzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcykpO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwMzUtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTAzNjpcdGRlcF9yZXMgPSAoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKilza2ItXHUwMDNlZGF0YTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDM3LVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz0xMDc3PXN0YXRpYyB2b2lkIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTA4MC1cdGludCByYztcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDgxOlx0c3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKmRlcF9yZXE7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTA4Mi1cdHU4IHBmYjtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTEwNy1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMTA4Olx0c2l6ZSA9IHNpemVvZihzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3Jlcyk7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTEwOTpcdGRlcF9yZXEgPSAoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKilyZXNwLVx1MDAzZWRhdGE7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTExMC1cbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9MTI5Nz1pbnQgZGlnaXRhbF90Z19zZW5kX2RlcF9yZXMoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMjk4LXtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMjk5Olx0c3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKmRlcF9yZXM7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTMwMC1cdHN0cnVjdCBza19idWZmICpjaGFpbmluZ19za2IsICp0bXBfc2tiO1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzAyLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEzMDM6XHRza2JfcHVzaChza2IsIHNpemVvZihzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcykpO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEzMDQtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTMwNTpcdGRlcF9yZXMgPSAoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKilza2ItXHUwMDNlZGF0YTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzA2LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMiAxMzoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjM4OQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKlBlZXJpbmcgaW50byB0aGUgRGVwdGhzIG9mIGBzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3Jlc2AqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGBzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3Jlc2AuIEl0JiMzOTtzIGNydWNpYWwgZm9yIG15IGN1cnJlbnQgYW5hbHlzaXMsIHNvIEkgaGF2ZSB0byBtYWtlIHN1cmUgSSBoYXZlIGEgc29saWQgdW5kZXJzdGFuZGluZyBvZiB0aGlzLiBMZXQmIzM5O3MgZGVsdmUgaW50byBpdHMgZGVmaW5pdGlvbiBhbmQgbWV0aWN1bG91c2x5IHBhcnNlIGl0cyBjb21wb25lbnRzLiBGcm9tIHRoZSB3YXkgdGhpcyBpcyBuYW1lZCwgSSBhc3N1bWUgaXQmIzM5O3MgaW52b2x2ZWQgaW4gZGlnaXRhbCBkZXBlbmRlbmN5IHJlcXVlc3QgYW5kIHJlc3BvbnNlOyBJJiMzOTtsbCBzZWUgaWYgdGhhdCYjMzk7cyBhY2N1cmF0ZSBhcyBJIHJldmlldyBpdC4gQW55IGluc2lnaHQgSSBjYW4gZ2V0IGZyb20gaXRzIGRlZmluaXRpb24gd2lsbCBiZSBpbnZhbHVhYmxlLiBUaW1lIHRvIG1ldGljdWxvdXNseSBkaXNzZWN0IHRoaXMgc3RydWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMiAxMzoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9uZmMvZGlnaXRhbF9kZXAuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDk1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgOTU6XHRcdHU4IGRpcjtcbiAgOTY6XHRcdHU4IGNtZDtcbiAgOTc6XHRcdHU4IGRpZDtcbiAgOTg6XHR9IF9fcGFja2VkO1xuICA5OTpcdFxuIDEwMDpcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzIHtcbiAxMDE6XHRcdHU4IGRpcjtcbiAxMDI6XHRcdHU4IGNtZDtcbiAxMDM6XHRcdHU4IHBmYjtcbiAxMDQ6XHR9IF9fcGFja2VkO1xuIDEwNTpcdFxuIDEwNjpcdHN0YXRpYyB2b2lkIGRpZ2l0YWxfaW5fcmVjdl9kZXBfcmVzKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcbiAxMDc6XHRcdFx0XHRcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqcmVzcCk7XG4gMTA4Olx0c3RhdGljIHZvaWQgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxuIDEwOTpcdFx0XHRcdFx0ICAgIHN0cnVjdCBza19idWZmICpyZXNwKTtcbiAxMTA6XHRcbiAxMTE6XHRzdGF0aWMgY29uc3QgdTggZGlnaXRhbF9wYXlsb2FkX2JpdHNfbWFwWzRdID0ge1xuIDExMjpcdFx0WzBdID0gNjQsXG4gMTEzOlx0XHRbMV0gPSAxMjgsXG4gMTE0Olx0XHRbMl0gPSAxOTIsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEyIDEzOjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2ODkyCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMjY0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBEaWdpdGFsIE5GQyBERVAgUmVxdWVzdC9SZXNwb25zZSBWdWxuZXJhYmlsaXR5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBkaWdpdGFsX2RlcF9yZXFfcmVzYCBzdHJ1Y3Qg4oCTIGl0JiMzOTtzIGp1c3QgMyBieXRlczogZGlyLCBjbWQsIGFuZCBwZmIuIFRoYXQmIzM5O3Mgc3RyYWlnaHRmb3J3YXJkLiBXaGljaCBtZWFucyB0aGUgaW5pdGlhbCBgc2l6ZWAgaXMgc2V0IHRvIDMg4oCTIG1ha2VzIHBlcmZlY3Qgc2Vuc2UsIHVzaW5nIGBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpYC4gTm93LCBiZWZvcmUgdGhlIHBhdGNoIHdhcyBhcHBsaWVkLCB0aGluZ3Mgd2VyZSBhIGJpdOKApiBzbG9wcHkuIFRoZSBjb2RlIHdhcyBkb2luZyB0aGlzOiBgZGRldi0mZ3Q7ZGlkID09IHJlc3AtJmd0O2RhdGFbM11gLiBUaGUgcHJvYmxlbT8gYHJlc3AtJmd0O2RhdGFbM11gIGFjY2Vzc2VzIHRoZSAqZm91cnRoKiBieXRlLCB0aGF0JiMzOTtzIGluZGV4IDMuIEJ1dCBoZXJlJiMzOTtzIHRoZSBraWNrZXIsIHRoZSBjaGVjayB3YXM6IGBpZiAocmVzcC0mZ3Q7bGVuICZsdDsgc2l6ZSB8fCAuLi4pYCB3aGVyZSBgc2l6ZWAgd2FzIHN0aWxsIHRoYXQgaW5pdGlhbCAzLgoKU28sIGlmIGByZXNwLSZndDtsZW5gIHdhcyBleGFjdGx5IDMgYW5kIHRoZSBgRElHSVRBTF9ORkNfREVQX0RJRF9CSVRfU0VUKHBmYilgIGNvbmRpdGlvbiB3YXMgdHJ1ZSwgd2UmIzM5O2QgaGl0IHRoYXQgT09CIHJlYWQuICBXZSYjMzk7ZCBiZSByZWFkaW5nICpvbmUqIGJ5dGUgcGFzdCB0aGUgYWxsb2NhdGVkIG1lbW9yeSBmb3IgYHJlc3AtJmd0O2RhdGFgIOKAkyB0aGF0JiMzOTtzIGEgY2xhc3NpYyBidWZmZXIgb3Zlci1yZWFkIHNpdHVhdGlvbi4gTm90IGdvb2QuCgpUaGUgcGF0Y2ggZml4ZXMgdGhpcyBieSBtYWtpbmcgdGhlIGxlbmd0aCBjaGVjayBtb3JlIHJvYnVzdC4gSXQmIzM5O3Mgbm93IGNoZWNraW5nIGBpZiAocmVzcC0mZ3Q7bGVuICZsdDsgc2l6ZSAmIzQzOyAxIHx8ICFkZGV2LSZndDtkaWQgfHwgZGRldi0mZ3Q7ZGlkICE9IHJlc3AtJmd0O2RhdGFbc2l6ZV0pYCBmaXJzdCwgKnRoZW4qIGluY3JlbWVudGluZyBgc2l6ZWAuIFRoYXQgYHNpemUgJiM0MzsgMWAgaXMgY3JpdGljYWwg4oCTIGl0IGVuc3VyZXMgd2UgaGF2ZSBlbm91Z2ggc3BhY2UgYmVmb3JlIHRoYXQgY29tcGFyaXNvbiB3aXRoIGByZXNwLSZndDtkYXRhW3NpemVdYC4gQSBzaW1wbGUgZml4LCBidXQgYSBuZWNlc3Nhcnkgb25lIHRvIHByZXZlbnQgdGhlIG91dC1vZi1ib3VuZHMgcmVhZC4gIEl0JiMzOTtzIHNpbWlsYXIgdG8gaG93IGl0IHdhcyBkb25lIGVhcmxpZXIgaW4gYGRpZ2l0YWxfaW5fcmVjdl9kZXBfcmVzYCBhcm91bmQgbGluZSA3NTUgaW4gdGhlIHNvdXJjZSBjb2RlOyBJIHNob3VsZCBwcm9iYWJseSBrZWVwIHRoYXQgYXMgYSB0ZW1wbGF0ZSBuZXh0IHRpbWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEyIDEzOjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L25mYy9kaWdpdGFsX2RlcC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNzU1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDM1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA3NTU6XHRcbiA3NTY6XHRcdHNpemUgPSBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpO1xuIDc1NzpcdFx0ZGVwX3JlcyA9IChzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqKXJlc3AtXHUwMDNlZGF0YTtcbiA3NTg6XHRcbiA3NTk6XHRcdGlmIChyZXNwLVx1MDAzZWxlbiBcdTAwM2Mgc2l6ZSB8fCBkZXBfcmVzLVx1MDAzZWRpciAhPSBESUdJVEFMX05GQ19ERVBfRlJBTUVfRElSX0lOIHx8XG4gNzYwOlx0XHQgICAgZGVwX3Jlcy1cdTAwM2VjbWQgIT0gRElHSVRBTF9DTURfREVQX1JFUykge1xuIDc2MTpcdFx0XHRyYyA9IC1FSU87XG4gNzYyOlx0XHRcdGdvdG8gZXJyb3I7XG4gNzYzOlx0XHR9XG4gNzY0Olx0XG4gNzY1Olx0XHRwZmIgPSBkZXBfcmVzLVx1MDAzZXBmYjtcbiA3NjY6XHRcbiA3Njc6XHRcdGlmIChESUdJVEFMX05GQ19ERVBfRElEX0JJVF9TRVQocGZiKSkge1xuIDc2ODpcdFx0XHRQUk9UT0NPTF9FUlIoXCYjMzQ7MTQuOC4yLjFcJiMzNDspO1xuIDc2OTpcdFx0XHRyYyA9IC1FSU87XG4gNzcwOlx0XHRcdGdvdG8gZXJyb3I7XG4gNzcxOlx0XHR9XG4gNzcyOlx0XG4gNzczOlx0XHRpZiAoRElHSVRBTF9ORkNfREVQX05BRF9CSVRfU0VUKHBmYikpIHtcbiA3NzQ6XHRcdFx0cmMgPSAtRUlPO1xuIDc3NTpcdFx0XHRnb3RvIGV4aXQ7XG4gNzc2Olx0XHR9XG4gNzc3Olx0XG4gNzc4Olx0XHRpZiAoc2l6ZSBcdTAwM2UgcmVzcC1cdTAwM2VsZW4pIHtcbiA3Nzk6XHRcdFx0cmMgPSAtRUlPO1xuIDc4MDpcdFx0XHRnb3RvIGVycm9yO1xuIDc4MTpcdFx0fVxuIDc4MjpcdFxuIDc4MzpcdFx0c2tiX3B1bGwocmVzcCwgc2l6ZSk7XG4gNzg0Olx0XG4gNzg1Olx0XHRzd2l0Y2ggKERJR0lUQUxfTkZDX0RFUF9QRkJfVFlQRShwZmIpKSB7XG4gNzg2Olx0XHRjYXNlIERJR0lUQUxfTkZDX0RFUF9QRkJfSV9QRFU6XG4gNzg3Olx0XHRcdGlmIChESUdJVEFMX05GQ19ERVBfUEZCX1BOSShwZmIpICE9IGRkZXYtXHUwMDNlY3Vycl9uZmNfZGVwX3BuaSkge1xuIDc4ODpcdFx0XHRcdFBST1RPQ09MX0VSUihcJiMzNDsxNC4xMi4zLjNcJiMzNDspO1xuIDc4OTpcdFx0XHRcdHJjID0gLUVJTztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTIgMTM6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTgxNDUKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSBwcm9jZXNzLCBwcmVzZW50ZWQgYXMgYSBmaXJzdC1wZXJzb24gYWNjb3VudCBhc3N1bWluZyBleHBlcnRpc2UgaW4gdGhlIGZpZWxkOgoKKipEaXZpbmcgaW50byB0aGUgYG5ldC9uZmMvZGlnaXRhbF9kZXAuY2AgS2NvbmZpZyBPcHRpb25zKioKCkFscmlnaHQsIHRpbWUgdG8gZ2V0IGludG8gdGhlIG5pdHR5LWdyaXR0eS4gSSYjMzk7bSBmb2N1c2luZyBvbiBgbmV0L25mYy9kaWdpdGFsX2RlcC5jYCBub3cgYW5kIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gd2hpY2ggS2NvbmZpZyBvcHRpb25zIGdvdmVybiBpdHMgY29tcGlsYXRpb24uIEkmIzM5O20gdGhpbmtpbmcgSSYjMzk7bGwgc3RhcnQgYnkgcXVpY2tseSBzY2FubmluZyB0aGUgcmVsZXZhbnQgS2NvbmZpZyBmaWxlcy4gUHJvYmFibHkgd2l0aGluIHRoZSBgbmV0L25mYy9gIGRpcmVjdG9yeSBhbmQgcG90ZW50aWFsbHkgdXBzdHJlYW0gb25lcywgdG8gZW5zdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueSBkZXBlbmRlbmNpZXMgdGhhdCBjb3VsZCBhZmZlY3QgdGhpcyBzcGVjaWZpYyBtb2R1bGUuIEl0JiMzOTtzIGNydWNpYWwgdG8gaWRlbnRpZnkgdGhlIHJlbGV2YW50IGRlcGVuZGVuY2llcyBhcyB0aGVzZSBLY29uZmlnIG9wdGlvbnMgbm90IG9ubHkgY29udHJvbCBpZiB0aGUgc291cmNlIGZpbGUgaXMgY29tcGlsZWQgaW50byB0aGUga2VybmVsIGJ1dCBhbHNvIHdoaWNoIHN1Yi1mZWF0dXJlcyBvZiB0aGUgbW9kdWxlIGFyZSBhY3RpdmUgb3Igbm90LCBvciBldmVuIGlmIGl0IGRlcGVuZHMgb24gYSBzcGVjaWZpYyBoYXJkd2FyZSBjb25maWd1cmF0aW9uLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZSBmbGFncyB0aWVkIHRvIHNwZWNpZmljIE5GQyBjb250cm9sbGVycywgYW55IGZlYXR1cmUgc3dpdGNoZXMgcmVsYXRlZCB0byBkaWdpdGFsIHByb3RvY29sIG5lZ290aWF0aW9uLCBvciBwZXJoYXBzIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGJhc2VkIG9uIHRoZSBwcmVzZW5jZSBvZiBjZXJ0YWluIGhhcmR3YXJlIGZlYXR1cmVzLiBVbmRlcnN0YW5kaW5nIHRoZSBLY29uZmlnIHN0cnVjdHVyZSBoZXJlIGlzIGZ1bmRhbWVudGFsIHRvIHVuZGVyc3RhbmRpbmcgdGhpcyBtb2R1bGUuIEl0JiMzOTtzIGEgcXVpY2sgYnV0IGVzc2VudGlhbCBzdGVwIHRvIGVuc3VyZSB0aGlzIG1vZHVsZSB3b3JrcyBhcyBpbnRlbmRlZCwgYW5kIGNhbiBiZSBjb25maWd1cmVkIGNvcnJlY3RseSwgZ2l2ZW4gZGlmZmVyZW50IHRhcmdldCBoYXJkd2FyZSBhbmQgdXNlIGNhc2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMiAxMzoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkaWdpdGFsX2RlcCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25mYy9NYWtlZmlsZT0xMT1uZmMtb2JqcyA6PSBjb3JlLm8gbmV0bGluay5vIGFmX25mYy5vIHJhd3NvY2subyBsbGNwX2NvcmUubyBsbGNwX2NvbW1hbmRzLm8gXFxcbi0tXG5uZXQvbmZjL01ha2VmaWxlLTEzLVxubmV0L25mYy9NYWtlZmlsZToxNDpuZmNfZGlnaXRhbC1vYmpzIDo9IGRpZ2l0YWxfY29yZS5vIGRpZ2l0YWxfdGVjaG5vbG9neS5vIGRpZ2l0YWxfZGVwLm9cbi0tXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jPTU4Nj1zdGF0aWMgaW50IGRpZ2l0YWxfZGV2X2Rvd24oc3RydWN0IG5mY19kZXYgKm5mY19kZXYpXG4tLVxubmV0L25mYy9kaWdpdGFsX2NvcmUuYy01OTQtXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jOjU5NTpzdGF0aWMgaW50IGRpZ2l0YWxfZGVwX2xpbmtfdXAoc3RydWN0IG5mY19kZXYgKm5mY19kZXYsXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTU5Ni1cdFx0XHQgICAgICAgc3RydWN0IG5mY190YXJnZXQgKnRhcmdldCxcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTYwOS1cbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmM6NjEwOnN0YXRpYyBpbnQgZGlnaXRhbF9kZXBfbGlua19kb3duKHN0cnVjdCBuZmNfZGV2ICpuZmNfZGV2KVxubmV0L25mYy9kaWdpdGFsX2NvcmUuYy02MTEte1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmM9NzQ0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZjX29wcyBkaWdpdGFsX25mY19vcHMgPSB7XG4tLVxubmV0L25mYy9kaWdpdGFsX2NvcmUuYy03NDgtXHQuc3RvcF9wb2xsID0gZGlnaXRhbF9zdG9wX3BvbGwsXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jOjc0OTpcdC5kZXBfbGlua191cCA9IGRpZ2l0YWxfZGVwX2xpbmtfdXAsXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jOjc1MDpcdC5kZXBfbGlua19kb3duID0gZGlnaXRhbF9kZXBfbGlua19kb3duLFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYy03NTEtXHQuYWN0aXZhdGVfdGFyZ2V0ID0gZGlnaXRhbF9hY3RpdmF0ZV90YXJnZXQsXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTk0PXN0cnVjdCBkaWdpdGFsX3BzbF9yZXMge1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05OS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDA6c3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMge1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwMS1cdHU4IGRpcjtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9MjAwPWRpZ2l0YWxfc2VuZF9kZXBfZGF0YV9wcmVwKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MjAxOlx0XHRcdCAgIHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVxX3Jlcyxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0yMDItXHRcdFx0ICAgc3RydWN0IGRpZ2l0YWxfZGF0YV9leGNoICpkYXRhX2V4Y2gpXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTUyOT1zdGF0aWMgaW50IGRpZ2l0YWxfaW5fc2VuZF9hY2soc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNTMxLXtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo1MzI6XHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3JlcTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01MzMtXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01MzktXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NTQwOlx0c2tiX3B1c2goc2tiLCBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpKTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01NDEtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NTQyOlx0ZGVwX3JlcSA9IChzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqKXNrYi1cdTAwM2VkYXRhO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTU0My1cbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9NTY2PXN0YXRpYyBpbnQgZGlnaXRhbF9pbl9zZW5kX25hY2soc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNTY4LXtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo1Njk6XHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3JlcTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01NzAtXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01NzYtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NTc3Olx0c2tiX3B1c2goc2tiLCBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpKTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01NzgtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NTc5Olx0ZGVwX3JlcSA9IChzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqKXNrYi1cdTAwM2VkYXRhO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTU4MC1cbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9NTk4PXN0YXRpYyBpbnQgZGlnaXRhbF9pbl9zZW5kX2F0bihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02MDAte1xubmV0L25mYy9kaWdpdGFsX2RlcC5jOjYwMTpcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVxO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTYwMi1cdHN0cnVjdCBza19idWZmICpza2I7XG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTYwOC1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo2MDk6XHRza2JfcHVzaChza2IsIHNpemVvZihzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcykpO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTYxMC1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo2MTE6XHRkZXBfcmVxID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopc2tiLVx1MDAzZWRhdGE7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjEyLVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz02Mjk9c3RhdGljIGludCBkaWdpdGFsX2luX3NlbmRfcnRveChzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02MzEte1xubmV0L25mYy9kaWdpdGFsX2RlcC5jOjYzMjpcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVxO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTYzMy1cdHN0cnVjdCBza19idWZmICpza2I7XG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTY0Ni1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo2NDc6XHRza2JfcHVzaChza2IsIHNpemVvZihzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcykpO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTY0OC1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo2NDk6XHRkZXBfcmVxID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopc2tiLVx1MDAzZWRhdGE7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjUwLVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz02ODY9c3RhdGljIHZvaWQgZGlnaXRhbF9pbl9yZWN2X2RlcF9yZXMoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02ODktXHRzdHJ1Y3QgZGlnaXRhbF9kYXRhX2V4Y2ggKmRhdGFfZXhjaCA9IGFyZztcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo2OTA6XHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3Jlcztcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02OTEtXHR1OCBwZmI7XG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTc1NS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo3NTY6XHRzaXplID0gc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo3NTc6XHRkZXBfcmVzID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopcmVzcC1cdTAwM2VkYXRhO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTc1OC1cbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9OTA0PWludCBkaWdpdGFsX2luX3NlbmRfZGVwX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05MDcte1xubmV0L25mYy9kaWdpdGFsX2RlcC5jOjkwODpcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVxO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTkwOS1cdHN0cnVjdCBza19idWZmICpjaGFpbmluZ19za2IsICp0bXBfc2tiO1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05MTEtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6OTEyOlx0c2tiX3B1c2goc2tiLCBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpKTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05MTMtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6OTE0Olx0ZGVwX3JlcSA9IChzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqKXNrYi1cdTAwM2VkYXRhO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTkxNS1cbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9OTc4PXN0YXRpYyBpbnQgZGlnaXRhbF90Z19zZW5kX2FjayhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05ODAte1xubmV0L25mYy9kaWdpdGFsX2RlcC5jOjk4MTpcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVzO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTk4Mi1cdHN0cnVjdCBza19idWZmICpza2I7XG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTk4OC1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo5ODk6XHRza2JfcHVzaChza2IsIHNpemVvZihzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcykpO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTk5MC1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo5OTE6XHRkZXBfcmVzID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopc2tiLVx1MDAzZWRhdGE7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtOTkyLVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz0xMDI0PXN0YXRpYyBpbnQgZGlnaXRhbF90Z19zZW5kX2F0bihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2KVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwMjUte1xubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwMjY6XHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3Jlcztcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDI3LVx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTAzMy1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDM0Olx0c2tiX3B1c2goc2tiLCBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpKTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDM1LVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwMzY6XHRkZXBfcmVzID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopc2tiLVx1MDAzZWRhdGE7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTAzNy1cbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9MTA3Nz1zdGF0aWMgdm9pZCBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB2b2lkICphcmcsXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwODAtXHRpbnQgcmM7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTA4MTpcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVxO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwODItXHR1OCBwZmI7XG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTExMDctXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTEwODpcdHNpemUgPSBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jOjExMDk6XHRkZXBfcmVxID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopcmVzcC1cdTAwM2VkYXRhO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTExMTAtXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTEyOTc9aW50IGRpZ2l0YWxfdGdfc2VuZF9kZXBfcmVzKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHN0cnVjdCBza19idWZmICpza2IpXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTI5OC17XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTI5OTpcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVzO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEzMDAtXHRzdHJ1Y3Qgc2tfYnVmZiAqY2hhaW5pbmdfc2tiLCAqdG1wX3NrYjtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTMwMi1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMzAzOlx0c2tiX3B1c2goc2tiLCBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpKTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzA0LVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEzMDU6XHRkZXBfcmVzID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopc2tiLVx1MDAzZWRhdGE7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTMwNi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTIgMTM6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE0ODMKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBORkMgRGlnaXRhbCBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQmIzM5O3MgdHJpZ2dlcmluZyB0aGUgYG5mY19kaWdpdGFsYCBjb21wb25lbnQgd2l0aGluIHRoZSBORkMgc3lzdGVtLiBUaGUgbG9naWNhbCBzdGFydGluZyBwb2ludCBpcyB0aGUgYG5ldC9uZmMvTWFrZWZpbGVgLiBJdCYjMzk7cyB3aGVyZSB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiBsaXZlcy4gVGhhdCYjMzk7cyB3aGVyZSBJIG5lZWQgdG8gZGlnIGluIHRvIGZpbmQgdGhlIHNwZWNpZmljIGNvbmZpZyBvcHRpb25zIHRoYXQgZ292ZXJuIHRoZSBpbmNsdXNpb24gb2YgYG5mY19kaWdpdGFsYC4gSG9wZWZ1bGx5LCBpdCYjMzk7cyBhIHN0cmFpZ2h0Zm9yd2FyZCBkZXBlbmRlbmN5IGNoYWluLiBJJiMzOTtsbCBwcm9iYWJseSBiZSBsb29raW5nIGZvciBhbiBgaWZkZWZgIG9yIGEgc2ltaWxhciBjb25kaXRpb25hbCBzdGF0ZW1lbnQgdGhhdCBjaGVja3MgZm9yIHNvbWUgS2NvbmZpZyBzeW1ib2wuIFRpbWUgdG8gc2VlIHdoYXQgdGhlIGJ1aWxkIHByb2Nlc3MgaGFzIHRvIHNheS4gSSYjMzk7bSBob3BpbmcgaXQmIzM5O3Mgd2VsbC1kb2N1bWVudGVkIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMiAxMzoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9uZmMvTWFrZWZpbGUmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDI1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4gICAyOlx0I1xuICAgMzpcdCMgTWFrZWZpbGUgZm9yIHRoZSBMaW51eCBORkMgc3Vic3lzdGVtLlxuICAgNDpcdCNcbiAgIDU6XHRcbiAgIDY6XHRvYmotJChDT05GSUdfTkZDKSAmIzQzOz0gbmZjLm9cbiAgIDc6XHRvYmotJChDT05GSUdfTkZDX05DSSkgJiM0Mzs9IG5jaS9cbiAgIDg6XHRvYmotJChDT05GSUdfTkZDX0hDSSkgJiM0Mzs9IGhjaS9cbiAgIDk6XHRvYmotJChDT05GSUdfTkZDX0RJR0lUQUwpICYjNDM7PSBuZmNfZGlnaXRhbC5vXG4gIDEwOlx0XG4gIDExOlx0bmZjLW9ianMgOj0gY29yZS5vIG5ldGxpbmsubyBhZl9uZmMubyByYXdzb2NrLm8gbGxjcF9jb3JlLm8gbGxjcF9jb21tYW5kcy5vIFxcXG4gIDEyOlx0XHRcdGxsY3Bfc29jay5vXG4gIDEzOlx0XG4gIDE0Olx0bmZjX2RpZ2l0YWwtb2JqcyA6PSBkaWdpdGFsX2NvcmUubyBkaWdpdGFsX3RlY2hub2xvZ3kubyBkaWdpdGFsX2RlcC5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEyIDEzOjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxOTIyCgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogNDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXhhbWluaW5nIHRoZSBORkMgRGlnaXRhbCBEcml2ZXIgQnVpbGQgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJIHNlZSB0aGlzIGxpbmU6IGBvYmotJChDT05GSUdfTkZDX0RJR0lUQUwpICYjNDM7PSBuZmNfZGlnaXRhbC5vYC4gTXkgYnJhaW4gaW1tZWRpYXRlbHkgdHJhbnNsYXRlcyB0aGlzIHRvOiAmIzM0O1RoZSBgbmZjX2RpZ2l0YWwub2Agb2JqZWN0IGZpbGUgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUgYnVpbGQsIGJ1dCBvbmx5IGlmIHRoZSBgQ09ORklHX05GQ19ESUdJVEFMYCBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb24gaXMgZW5hYmxlZC4mIzM0OyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIG9uIGBORkNfRElHSVRBTGAuIFdoZXJlIGlzIHRoYXQgZGVmaW5lZD8gSXQgaXMgcHJvYmFibHkgZGVmaW5lZCBpbiBgbmV0L25mYy9LY29uZmlnYC4gTGV0JiMzOTtzIGNoZWNrIHRoZXJlIHRvIHNlZSB3aGF0IGl0IGRlcGVuZHMgb24uIEkmIzM5O2xsIG5lZWQgdG8ga25vdyB0aGlzIGluZm9ybWF0aW9uIHRvIHVuZGVyc3RhbmQgaWYgYW5kIHdoZW4gdGhlIGRyaXZlciB3aWxsIGJlIGJ1aWx0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMiAxMzoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkZDX0RJR0lUQUwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmZjJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZmMvS2NvbmZpZz02PW1lbnVjb25maWcgTkZDXG4tLVxubmV0L25mYy9LY29uZmlnLTE2LVxubmV0L25mYy9LY29uZmlnOjE3OmNvbmZpZyBORkNfRElHSVRBTFxubmV0L25mYy9LY29uZmlnLTE4LVx0ZGVwZW5kcyBvbiBORkNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTIgMTM6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjIyMTcKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGxpa2UgeW91cnNlbGY6CgoqKkRpdmluZyBpbnRvIHRoZSBgbmV0L25mYy9LY29uZmlnYCBGaWxlKioKCkFscmlnaHQsIGxldCYjMzk7cyB0YWtlIGEgcXVpY2sgbG9vayBhdCBgbmV0L25mYy9LY29uZmlnYCwgc3BlY2lmaWNhbGx5IGFyb3VuZCBsaW5lIDE3LiBNeSBtZW50YWwgbW9kZWwsIGJhc2VkIG9uIHByZXZpb3VzIGludGVyYWN0aW9ucyB3aXRoIHRoZSBORkMgc3Vic3lzdGVtLCBpcyBzdWdnZXN0aW5nIHNvbWV0aGluZyBpbiB0aGF0IGFyZWEuIEl0JiMzOTtzIGxpa2VseSBhIGNvbmZpZ3VyYXRpb24gb3B0aW9uIG9yIGRlcGVuZGVuY3kgZGVmaW5pdGlvbiwgcGVyaGFwcyByZWxhdGVkIHRvIGEgZmVhdHVyZSBmbGFnLCBhIGhhcmR3YXJlIGRyaXZlciwgb3IgYSBnZW5lcmFsIGVuYWJsaW5nL2Rpc2FibGluZyBvZiBhIGNvcmUgTkZDIGNvbXBvbmVudC4gSSYjMzk7bSBpbW1lZGlhdGVseSBleHBlY3RpbmcgdG8gc2VlIGVpdGhlciBhIGBjb25maWdgIHN0YXRlbWVudCwgYSBgZGVwZW5kcyBvbmAgY2xhdXNlLCBvciBtYXliZSBldmVuIGFuIGBpZmAgc3RhdGVtZW50IGNvbnRyb2xsaW5nIHRoZSBpbmNsdXNpb24gb2Ygb3RoZXIgS2NvbmZpZyBmcmFnbWVudHMuIEdpdmVuIHRoZSBwb3NpdGlvbiBpbiB0aGUgZmlsZSwgaXQmIzM5O3MgcHJvYmFibHkgbm90IGEgdG9wLWxldmVsIHN5bWJvbCwgYW5kIG1pZ2h0IGJlIG5lc3RlZCB1bmRlciBhbm90aGVyIG9wdGlvbi4gSSYjMzk7bSBwcmVwYXJlZCB0byBxdWlja2x5IHNjYW4gZm9yIGtleXdvcmRzIGxpa2UgJiMzNDtORkMmIzM0OywgJiMzNDtQTjUzMiYjMzQ7LCAmIzM0O0hBTCYjMzQ7LCBvciBwb3RlbnRpYWxseSwgYSBtb2R1bGUgbmFtZSBJIHJlY29nbml6ZS4gTXkgaW50ZW50aW9uIGlzIHRvIGltbWVkaWF0ZWx5IGlkZW50aWZ5IHRoZSBzY29wZSBvZiB3aGF0IHRoZSBLY29uZmlnIGNvbnRyb2xzLCBpdHMgZGVwZW5kZW5jaWVzLCBhbmQgYW55IGltcGxpY2F0aW9ucyBpdCBoYXMgZm9yIHRoZSBidWlsZCBjb25maWd1cmF0aW9uLiBJJiMzOTttIHRyeWluZyB0byBnZXQgYSBxdWljayBtYXAgb2Ygd2hhdCYjMzk7cyAqdGhlcmUqIHRvIGhlbHAgbWUgZm9ybXVsYXRlIG15IG5leHQgc3RlcCBpbiB0aGlzIGludmVzdGlnYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEyIDEzOjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L25mYy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0I1xuICAgMzpcdCMgTkZDIHN1YnN5c3RlbSBjb25maWd1cmF0aW9uXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdG1lbnVjb25maWcgTkZDXG4gICA3Olx0XHRkZXBlbmRzIG9uIFJGS0lMTCB8fCAhUkZLSUxMXG4gICA4Olx0XHR0cmlzdGF0ZSBcJiMzNDtORkMgc3Vic3lzdGVtIHN1cHBvcnRcJiMzNDtcbiAgIDk6XHRcdGRlZmF1bHQgblxuICAxMDpcdFx0aGVscFxuICAxMTpcdFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIGJ1aWxkIHN1cHBvcnQgZm9yIE5GQyAoTmVhciBmaWVsZFxuICAxMjpcdFx0ICBjb21tdW5pY2F0aW9uKSBkZXZpY2VzLlxuICAxMzpcdFxuICAxNDpcdFx0ICBUbyBjb21waWxlIHRoaXMgc3VwcG9ydCBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZSB3aWxsXG4gIDE1Olx0XHQgIGJlIGNhbGxlZCBuZmMuXG4gIDE2Olx0XG4gIDE3Olx0Y29uZmlnIE5GQ19ESUdJVEFMXG4gIDE4Olx0XHRkZXBlbmRzIG9uIE5GQ1xuICAxOTpcdFx0c2VsZWN0IENSQ19DQ0lUVFxuICAyMDpcdFx0c2VsZWN0IENSQ19JVFVfVFxuICAyMTpcdFx0dHJpc3RhdGUgXCYjMzQ7TkZDIERpZ2l0YWwgUHJvdG9jb2wgc3RhY2sgc3VwcG9ydFwmIzM0O1xuICAyMjpcdFx0ZGVmYXVsdCBuXG4gIDIzOlx0XHRoZWxwXG4gIDI0Olx0XHQgIFNheSBZIGlmIHlvdSB3YW50IHRvIGJ1aWxkIE5GQyBkaWdpdGFsIHByb3RvY29sIHN0YWNrIHN1cHBvcnQuXG4gIDI1Olx0XHQgIFRoaXMgaXMgbmVlZGVkIGJ5IE5GQyBjaGlwc2V0cyB3aG9zZSBmaXJtd2FyZSBvbmx5IGltcGxlbWVudFxuICAyNjpcdFx0ICB0aGUgTkZDIGFuYWxvZyBsYXllci5cbiAgMjc6XHRcbiAgMjg6XHRcdCAgVG8gY29tcGlsZSB0aGlzIHN1cHBvcnQgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGUgd2lsbFxuICAyOTpcdFx0ICBiZSBjYWxsZWQgbmZjX2RpZ2l0YWwuXG4gIDMwOlx0XG4gIDMxOlx0c291cmNlIFwmIzM0O25ldC9uZmMvbmNpL0tjb25maWdcJiMzNDtcbiAgMzI6XHRzb3VyY2UgXCYjMzQ7bmV0L25mYy9oY2kvS2NvbmZpZ1wmIzM0O1xuICAzMzpcdFxuICAzNDpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25mYy9LY29uZmlnXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEyIDEzOjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyOTUzCgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIE5GQ19ESUdJVEFMIERyaXZlciBEZXBlbmRlbmNpZXMqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW4uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O1doYXQgc3BlY2lmaWNhbGx5IGFyZSB0aGVzZSBkcml2ZXJzIGRvaW5nLCBhbmQgd2hhdCBvdGhlciBjb21wb25lbnRzIGFyZSB0aGV5IHRpZ2h0bHkgY291cGxlZCB3aXRoPyYjMzQ7IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBlY29zeXN0ZW0gc3Vycm91bmRpbmcgYE5GQ19ESUdJVEFMYC4gSSYjMzk7bSBnb2luZyB0byBzdGFydCBieSBsb29raW5nIGZvciB0aGUgc2VsZWN0aW9uIGFuZCBkZXBlbmRlbmN5IHJlbGF0aW9uc2hpcHMgb24gdGhpcyBjb25maWd1cmF0aW9uIG9wdGlvbi4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHRoaW5raW5nOgoKKiAgICoqV2hvIGlzIGNob29zaW5nIGBORkNfRElHSVRBTGA/KiogV2hhdCBvdGhlciBjb25maWd1cmF0aW9ucyBtaWdodCBiZSBwcmVyZXF1aXNpdGVzLCBvciB3aGF0IGZlYXR1cmVzIGFyZSBleHBsaWNpdGx5IHJlcXVlc3RpbmcgaXQ/IFRoaXMgd2lsbCBnaXZlIG1lIGEgZmlyc3QgaW5kaWNhdGlvbiBvZiB0aGUgc2NvcGUgYW5kIHVzZSBjYXNlLgoqICAgKipXaGF0IHJlbGllcyBvbiBpdD8qKiBJJiMzOTttIGxvb2tpbmcgZm9yIGRpcmVjdCBkZXBlbmRlbmNpZXMsIG9mIGNvdXJzZSwgYnV0IGFsc28gaW5kaXJlY3Qgb25lcy4gVW5kZXJzdGFuZGluZyB0aGUgY2FzY2FkaW5nIGVmZmVjdHMgaXMga2V5LiBXaGF0IG1vZHVsZXMgb3IgZnVuY3Rpb25hbGl0eSBiZWNvbWUgYXZhaWxhYmxlIG9yIHVuYXZhaWxhYmxlIGJhc2VkIG9uIHRoZSBzZWxlY3Rpb24gb2YgYE5GQ19ESUdJVEFMYD8gQXJlIHRoZXJlIHBsYXRmb3JtLXNwZWNpZmljIGNvbnNpZGVyYXRpb25zIEkgbmVlZCB0byBrZWVwIGluIG1pbmQ/IEFyZSB0aGVyZSBhbnkgcG90ZW50aWFsIGNvbmZsaWN0cyBJIG5lZWQgdG8gY29uc2lkZXI/CiogICAqKlRoZSBkcml2ZXJzIGFuZCB0aGVpciByb2xlOioqIEkgd2lsbCBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBwdXJwb3NlIGFuZCBmdW5jdGlvbmFsaXR5IG9mIHRoZSBkcml2ZXJzIGludm9sdmVkLiBBcmUgdGhleSBpbXBsZW1lbnRpbmcgTkZDIHByb3RvY29sIHN0YWNrcz8gQ29udHJvbGxpbmcgaGFyZHdhcmUgaW50ZXJmYWNlcz8gTWFuYWdpbmcgc2VjdXJpdHkgYXNwZWN0cz8gSG93IGRvIHRoZXkgaW50ZXJhY3Qgd2l0aCBvdGhlciBwYXJ0cyBvZiB0aGUgc3lzdGVtLCBsaWtlIHRoZSBrZXJuZWwmIzM5O3MgTkZDIGZyYW1ld29yayBvciB1c2VyLXNwYWNlIGFwcGxpY2F0aW9ucz8KCk15IGdvYWwgaXMgdG8gZGV2ZWxvcCBhIGNsZWFyIG1lbnRhbCBtYXAgb2YgYE5GQ19ESUdJVEFMYCYjMzk7cyBwb3NpdGlvbiBpbiB0aGUgb3ZlcmFsbCBzeXN0ZW0gYXJjaGl0ZWN0dXJlLiBUaGlzIGNvbnRleHR1YWwgdW5kZXJzdGFuZGluZyBpcyBlc3NlbnRpYWwgYmVmb3JlIEkgY2FuIGJlZ2luIHRvIGFzc2VzcyBhbnkgcG90ZW50aWFsIHJpc2tzLCBvcHRpbWl6YXRpb25zLCBvciBhcmVhcyBmb3IgaW1wcm92ZW1lbnQuIFRpbWUgdG8gc3RhcnQgZGlnZ2luZyEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTIgMTM6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TkZDX0RJR0lUQUwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25mYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25mYy9LY29uZmlnPTk9Y29uZmlnIE5GQ19UUkY3OTcwQVxuZHJpdmVycy9uZmMvS2NvbmZpZy0xMC1cdHRyaXN0YXRlIFwmIzM0O1RleGFzIEluc3RydW1lbnRzIFRSRjc5NzBhIE5GQyBkcml2ZXJcJiMzNDtcbmRyaXZlcnMvbmZjL0tjb25maWc6MTE6XHRkZXBlbmRzIG9uIFNQSSBcdTAwMjZcdTAwMjYgTkZDX0RJR0lUQUwgXHUwMDI2XHUwMDI2IEdQSU9MSUJcbmRyaXZlcnMvbmZjL0tjb25maWctMTItXHRoZWxwXG4tLVxuZHJpdmVycy9uZmMvS2NvbmZpZz0zMT1jb25maWcgTkZDX1NJTVxuZHJpdmVycy9uZmMvS2NvbmZpZy0zMi1cdHRyaXN0YXRlIFwmIzM0O05GQyBoYXJkd2FyZSBzaW11bGF0b3IgZHJpdmVyXCYjMzQ7XG5kcml2ZXJzL25mYy9LY29uZmlnOjMzOlx0ZGVwZW5kcyBvbiBORkNfRElHSVRBTFxuZHJpdmVycy9uZmMvS2NvbmZpZy0zNC1cdGhlbHBcbi0tXG5kcml2ZXJzL25mYy9LY29uZmlnPTQyPWNvbmZpZyBORkNfUE9SVDEwMFxuLS1cbmRyaXZlcnMvbmZjL0tjb25maWctNDQtXHRkZXBlbmRzIG9uIFVTQlxuZHJpdmVycy9uZmMvS2NvbmZpZzo0NTpcdGRlcGVuZHMgb24gTkZDX0RJR0lUQUxcbmRyaXZlcnMvbmZjL0tjb25maWctNDYtXHRoZWxwXG4tLVxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjctXG5kcml2ZXJzL25mYy9uZmNzaW0uYzoyODojZGVmaW5lIE5GQ1NJTV9DQVBBQklMSVRJRVMgKE5GQ19ESUdJVEFMX0RSVl9DQVBTX0lOX0NSQyAgIHwgXFxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjI5Olx0XHRcdCAgICAgTkZDX0RJR0lUQUxfRFJWX0NBUFNfVEdfQ1JDKVxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzAtXG4tLVxuZHJpdmVycy9uZmMvbmZjc2ltLmM9MjU2PXN0YXRpYyBpbnQgbmZjc2ltX2luX2NvbmZpZ3VyZV9odyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxuLS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTI2MS1cdHN3aXRjaCAodHlwZSkge1xuZHJpdmVycy9uZmMvbmZjc2ltLmM6MjYyOlx0Y2FzZSBORkNfRElHSVRBTF9DT05GSUdfUkZfVEVDSDpcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTI2My1cdFx0ZGV2LVx1MDAzZXVwID0gdHJ1ZTtcbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yNjctXG5kcml2ZXJzL25mYy9uZmNzaW0uYzoyNjg6XHRjYXNlIE5GQ19ESUdJVEFMX0NPTkZJR19GUkFNSU5HOlxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjY5LVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYz0yODY9c3RhdGljIGludCBuZmNzaW1fdGdfY29uZmlndXJlX2h3KHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXG4tLVxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjkxLVx0c3dpdGNoICh0eXBlKSB7XG5kcml2ZXJzL25mYy9uZmNzaW0uYzoyOTI6XHRjYXNlIE5GQ19ESUdJVEFMX0NPTkZJR19SRl9URUNIOlxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjkzLVx0XHRkZXYtXHUwMDNldXAgPSB0cnVlO1xuLS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTI5Ny1cbmRyaXZlcnMvbmZjL25mY3NpbS5jOjI5ODpcdGNhc2UgTkZDX0RJR0lUQUxfQ09ORklHX0ZSQU1JTkc6XG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yOTktXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0yNS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyNjojZGVmaW5lIFBPUlQxMDBfQ0FQQUJJTElUSUVTIChORkNfRElHSVRBTF9EUlZfQ0FQU19JTl9DUkMgfCBcXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI3Olx0XHRcdCAgICAgIE5GQ19ESUdJVEFMX0RSVl9DQVBTX1RHX0NSQylcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0yOC1cbi0tXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM9MTE4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcG9ydDEwMF9pbl9yZl9zZXR0aW5nIGluX3JmX3NldHRpbmdzW10gPSB7XG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTE5Olx0W05GQ19ESUdJVEFMX1JGX1RFQ0hfMjEyRl0gPSB7XG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTIwLVx0XHQuaW5fc2VuZF9zZXRfbnVtYmVyID0gMSxcbi0tXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTI0LVx0fSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxMjU6XHRbTkZDX0RJR0lUQUxfUkZfVEVDSF80MjRGXSA9IHtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMjYtXHRcdC5pbl9zZW5kX3NldF9udW1iZXIgPSAxLFxuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMzAtXHR9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjEzMTpcdFtORkNfRElHSVRBTF9SRl9URUNIXzEwNkFdID0ge1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEzMi1cdFx0LmluX3NlbmRfc2V0X251bWJlciA9IDIsXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEzNi1cdH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTM3Olx0W05GQ19ESUdJVEFMX1JGX1RFQ0hfMTA2Ql0gPSB7XG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTM4LVx0XHQuaW5fc2VuZF9zZXRfbnVtYmVyID0gMyxcbi0tXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTQyLVx0fSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxNDM6XHQvKiBFbnN1cmVzIHRoZSBhcnJheSBoYXMgTkZDX0RJR0lUQUxfUkZfVEVDSF9MQVNUIGVsZW1lbnRzICovXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTQ0Olx0W05GQ19ESUdJVEFMX1JGX1RFQ0hfTEFTVF0gPSB7IDAgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xNDUtfTtcbi0tXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM9MTY3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcG9ydDEwMF90Z19yZl9zZXR0aW5nIHRnX3JmX3NldHRpbmdzW10gPSB7XG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTY4Olx0W05GQ19ESUdJVEFMX1JGX1RFQ0hfMTA2QV0gPSB7XG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTY5LVx0XHQudGdfc2V0X251bWJlciA9IDgsXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE3MS1cdH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTcyOlx0W05GQ19ESUdJVEFMX1JGX1RFQ0hfMjEyRl0gPSB7XG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTczLVx0XHQudGdfc2V0X251bWJlciA9IDgsXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE3NS1cdH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTc2Olx0W05GQ19ESUdJVEFMX1JGX1RFQ0hfNDI0Rl0gPSB7XG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTc3LVx0XHQudGdfc2V0X251bWJlciA9IDgsXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE3OS1cdH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTgwOlx0LyogRW5zdXJlcyB0aGUgYXJyYXkgaGFzIE5GQ19ESUdJVEFMX1JGX1RFQ0hfTEFTVCBlbGVtZW50cyAqL1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjE4MTpcdFtORkNfRElHSVRBTF9SRl9URUNIX0xBU1RdID0geyAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTgyLVxuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYz0yMjE9aW5fcHJvdG9jb2xzW11bUE9SVDEwMF9JTl9NQVhfTlVNX1BST1RPQ09MUyAmIzQzOyAxXSA9IHtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyMjI6XHRbTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX1NIT1JUXSA9IHtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0yMjMtXHRcdHsgUE9SVDEwMF9JTl9QUk9UX0lOSVRJQUxfR1VBUkRfVElNRSwgICAgICA2IH0sXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTI0My1cdH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjQ0Olx0W05GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQV9TVEFOREFSRF0gPSB7XG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMjQ1LVx0XHR7IFBPUlQxMDBfSU5fUFJPVF9JTklUSUFMX0dVQVJEX1RJTUUsICAgICAgNiB9LFxuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0yNjUtXHR9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI2NjpcdFtORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfU1RBTkRBUkRfV0lUSF9DUkNfQV0gPSB7XG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMjY3LVx0XHR7IFBPUlQxMDBfSU5fUFJPVF9JTklUSUFMX0dVQVJEX1RJTUUsICAgICAgNiB9LFxuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0yODctXHR9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI4ODpcdFtORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfVDFUXSA9IHtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0yODktXHRcdC8qIG5mY19kaWdpdGFsX2ZyYW1pbmdfbmZjYV9zaG9ydCAqL1xuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0yOTUtXHR9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI5NjpcdFtORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfVDJUXSA9IHtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0yOTctXHRcdC8qIG5mY19kaWdpdGFsX2ZyYW1pbmdfbmZjYV9zdGFuZGFyZCAqL1xuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0zMDEtXHR9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjMwMjpcdFtORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfVDRUXSA9IHtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0zMDMtXHRcdC8qIG5mY19kaWdpdGFsX2ZyYW1pbmdfbmZjYV9zdGFuZGFyZF93aXRoX2NyY19hICovXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTMwNS1cdH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzA2Olx0W05GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQV9ORkNfREVQXSA9IHtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0zMDctXHRcdC8qIG5mY19kaWdpdGFsX2ZyYW1pbmdfbmZjYV9zdGFuZGFyZCAqL1xuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0zMDktXHR9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjMxMDpcdFtORkNfRElHSVRBTF9GUkFNSU5HX05GQ0ZdID0ge1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTMxMS1cdFx0eyBQT1JUMTAwX0lOX1BST1RfSU5JVElBTF9HVUFSRF9USU1FLCAgICAgMTggfSxcbi0tXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzMxLVx0fSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozMzI6XHRbTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNGX1QzVF0gPSB7XG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzMzLVx0XHQvKiBuZmNfZGlnaXRhbF9mcmFtaW5nX25mY2YgKi9cbi0tXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzM1LVx0fSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozMzY6XHRbTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNGX05GQ19ERVBdID0ge1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTMzNy1cdFx0LyogbmZjX2RpZ2l0YWxfZnJhbWluZ19uZmNmICovXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTM1OC1cdH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzU5Olx0W05GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDX0RFUF9BQ1RJVkFURURdID0ge1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTM2MC1cdFx0eyBQT1JUMTAwX0lOX1BST1RfRU5ELCAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzYxLVx0fSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozNjI6XHRbTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNCXSA9IHtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0zNjMtXHRcdHsgUE9SVDEwMF9JTl9QUk9UX0lOSVRJQUxfR1VBUkRfVElNRSwgICAgIDIwIH0sXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTM4My1cdH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6Mzg0Olx0W05GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQl9UNFRdID0ge1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTM4NS1cdFx0LyogbmZjX2RpZ2l0YWxfZnJhbWluZ19uZmNiICovXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTM4Ny1cdH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6Mzg4Olx0LyogRW5zdXJlcyB0aGUgYXJyYXkgaGFzIE5GQ19ESUdJVEFMX0ZSQU1JTkdfTEFTVCBlbGVtZW50cyAqL1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjM4OTpcdFtORkNfRElHSVRBTF9GUkFNSU5HX0xBU1RdID0ge1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTM5MC1cdFx0eyBQT1JUMTAwX0lOX1BST1RfRU5ELCAwIH0sXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jPTM5NT10Z19wcm90b2NvbHNbXVtQT1JUMTAwX1RHX01BWF9OVU1fUFJPVE9DT0xTICYjNDM7IDFdID0ge1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjM5NjpcdFtORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfU0hPUlRdID0ge1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTM5Ny1cdFx0eyBQT1JUMTAwX1RHX1BST1RfRU5ELCAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzk4LVx0fSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozOTk6XHRbTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX1NUQU5EQVJEXSA9IHtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy00MDAtXHRcdHsgUE9SVDEwMF9UR19QUk9UX0VORCwgMCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTQwMS1cdH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6NDAyOlx0W05GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQV9TVEFOREFSRF9XSVRIX0NSQ19BXSA9IHtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy00MDMtXHRcdHsgUE9SVDEwMF9UR19QUk9UX0VORCwgMCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTQwNC1cdH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6NDA1Olx0W05GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQV9UMVRdID0ge1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTQwNi1cdFx0eyBQT1JUMTAwX1RHX1BST1RfRU5ELCAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtNDA3LVx0fSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo0MDg6XHRbTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX1QyVF0gPSB7XG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtNDA5LVx0XHR7IFBPUlQxMDBfVEdfUFJPVF9FTkQsIDAgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy00MTAtXHR9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjQxMTpcdFtORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfTkZDX0RFUF0gPSB7XG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtNDEyLVx0XHR7IFBPUlQxMDBfVEdfUFJPVF9UVSwgICAgIDEgfSxcbi0tXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtNDE2LVx0fSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo0MTc6XHRbTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNGXSA9IHtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy00MTgtXHRcdHsgUE9SVDEwMF9UR19QUk9UX0VORCwgMCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTQxOS1cdH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6NDIwOlx0W05GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDRl9UM1RdID0ge1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTQyMS1cdFx0eyBQT1JUMTAwX1RHX1BST1RfRU5ELCAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtNDIyLVx0fSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo0MjM6XHRbTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNGX05GQ19ERVBdID0ge1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTQyNC1cdFx0eyBQT1JUMTAwX1RHX1BST1RfVFUsICAgICAxIH0sXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTQyOC1cdH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6NDI5Olx0W05GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDX0RFUF9BQ1RJVkFURURdID0ge1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTQzMC1cdFx0eyBQT1JUMTAwX1RHX1BST1RfUkZfT0ZGLCAxIH0sXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTQzMi1cdH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6NDMzOlx0LyogRW5zdXJlcyB0aGUgYXJyYXkgaGFzIE5GQ19ESUdJVEFMX0ZSQU1JTkdfTEFTVCBlbGVtZW50cyAqL1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjQzNDpcdFtORkNfRElHSVRBTF9GUkFNSU5HX0xBU1RdID0ge1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTQzNS1cdFx0eyBQT1JUMTAwX1RHX1BST1RfRU5ELCAgICAwIH0sXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jPTEwNzI9c3RhdGljIGludCBwb3J0MTAwX2luX3NldF9yZihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB1OCByZilcbi0tXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTA3OC1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxMDc5Olx0aWYgKHJmIFx1MDAzZT0gTkZDX0RJR0lUQUxfUkZfVEVDSF9MQVNUKVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEwODAtXHRcdHJldHVybiAtRUlOVkFMO1xuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYz0xMTAxPXN0YXRpYyBpbnQgcG9ydDEwMF9pbl9zZXRfZnJhbWluZyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBpbnQgcGFyYW0pXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTExMTAtXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTExMTpcdGlmIChwYXJhbSBcdTAwM2U9IE5GQ19ESUdJVEFMX0ZSQU1JTkdfTEFTVClcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMTEyLVx0XHRyZXR1cm4gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM9MTE0Mz1zdGF0aWMgaW50IHBvcnQxMDBfaW5fY29uZmlndXJlX2h3KHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIGludCB0eXBlLFxuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMTQ1LXtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxMTQ2Olx0aWYgKHR5cGUgPT0gTkZDX0RJR0lUQUxfQ09ORklHX1JGX1RFQ0gpXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTE0Ny1cdFx0cmV0dXJuIHBvcnQxMDBfaW5fc2V0X3JmKGRkZXYsIHBhcmFtKTtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMTQ4LVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjExNDk6XHRpZiAodHlwZSA9PSBORkNfRElHSVRBTF9DT05GSUdfRlJBTUlORylcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMTUwLVx0XHRyZXR1cm4gcG9ydDEwMF9pbl9zZXRfZnJhbWluZyhkZGV2LCBwYXJhbSk7XG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jPTEyMjk9c3RhdGljIGludCBwb3J0MTAwX3RnX3NldF9yZihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB1OCByZilcbi0tXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTIzNS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxMjM2Olx0aWYgKHJmIFx1MDAzZT0gTkZDX0RJR0lUQUxfUkZfVEVDSF9MQVNUKVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEyMzctXHRcdHJldHVybiAtRUlOVkFMO1xuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYz0xMjU4PXN0YXRpYyBpbnQgcG9ydDEwMF90Z19zZXRfZnJhbWluZyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBpbnQgcGFyYW0pXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEyNjctXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTI2ODpcdGlmIChwYXJhbSBcdTAwM2U9IE5GQ19ESUdJVEFMX0ZSQU1JTkdfTEFTVClcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMjY5LVx0XHRyZXR1cm4gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM9MTMwMD1zdGF0aWMgaW50IHBvcnQxMDBfdGdfY29uZmlndXJlX2h3KHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIGludCB0eXBlLFxuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMzAyLXtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxMzAzOlx0aWYgKHR5cGUgPT0gTkZDX0RJR0lUQUxfQ09ORklHX1JGX1RFQ0gpXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTMwNC1cdFx0cmV0dXJuIHBvcnQxMDBfdGdfc2V0X3JmKGRkZXYsIHBhcmFtKTtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMzA1LVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjEzMDY6XHRpZiAodHlwZSA9PSBORkNfRElHSVRBTF9DT05GSUdfRlJBTUlORylcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMzA3LVx0XHRyZXR1cm4gcG9ydDEwMF90Z19zZXRfZnJhbWluZyhkZGV2LCBwYXJhbSk7XG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jPTE0MDA9c3RhdGljIGludCBwb3J0MTAwX2xpc3Rlbl9tZGFhKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE0MTAtXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTQxMTpcdHJjID0gcG9ydDEwMF90Z19jb25maWd1cmVfaHcoZGRldiwgTkZDX0RJR0lUQUxfQ09ORklHX1JGX1RFQ0gsXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTQxMjpcdFx0XHRcdCAgICAgTkZDX0RJR0lUQUxfUkZfVEVDSF8xMDZBKTtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xNDEzLVx0aWYgKHJjKVxuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xNDE1LVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjE0MTY6XHRyYyA9IHBvcnQxMDBfdGdfY29uZmlndXJlX2h3KGRkZXYsIE5GQ19ESUdJVEFMX0NPTkZJR19GUkFNSU5HLFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjE0MTc6XHRcdFx0XHQgICAgIE5GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQV9ORkNfREVQKTtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xNDE4LVx0aWYgKHJjKVxuLS1cbmRyaXZlcnMvbmZjL3N0OTVoZi9LY29uZmlnPTI9Y29uZmlnIE5GQ19TVDk1SEZcbmRyaXZlcnMvbmZjL3N0OTVoZi9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtTVDk1SEYgTkZDIFRyYW5zY2VpdmVyIGRyaXZlclwmIzM0O1xuZHJpdmVycy9uZmMvc3Q5NWhmL0tjb25maWc6NDpcdGRlcGVuZHMgb24gU1BJIFx1MDAyNlx1MDAyNiBORkNfRElHSVRBTFxuZHJpdmVycy9uZmMvc3Q5NWhmL0tjb25maWctNS1cdGhlbHBcbi0tXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTMwLS8qIGRyaXZlciBjYXBhYmlsaXRpZXMgKi9cbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6MzE6I2RlZmluZSBTVDk1SEZfQ0FQQUJJTElUSUVTXHRcdE5GQ19ESUdJVEFMX0RSVl9DQVBTX0lOX0NSQ1xuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy0zMi1cbi0tXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jPTM3ND1zdGF0aWMgaW50IHN0OTVoZl9zZWxlY3RfcHJvdG9jb2woc3RydWN0IHN0OTVoZl9jb250ZXh0ICpzdGNvbnRleHQsIGludCB0eXBlKVxuLS1cbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtMzgxLVx0c3dpdGNoICh0eXBlKSB7XG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jOjM4MjpcdGNhc2UgTkZDX0RJR0lUQUxfUkZfVEVDSF8xMDZBOlxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzozODM6XHRcdHN0Y29udGV4dC1cdTAwM2VjdXJyZW50X3JmX3RlY2ggPSBORkNfRElHSVRBTF9SRl9URUNIXzEwNkE7XG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTM4NC1cdFx0cmVzdWx0ID0gc3Q5NWhmX3NlbmRfcmVjdl9jbWQoc3Rjb250ZXh0LFxuLS1cbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtNDAyLVx0XHRicmVhaztcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6NDAzOlx0Y2FzZSBORkNfRElHSVRBTF9SRl9URUNIXzEwNkI6XG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jOjQwNDpcdFx0c3Rjb250ZXh0LVx1MDAzZWN1cnJlbnRfcmZfdGVjaCA9IE5GQ19ESUdJVEFMX1JGX1RFQ0hfMTA2QjtcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtNDA1LVx0XHRyZXN1bHQgPSBzdDk1aGZfc2VuZF9yZWN2X2NtZChzdGNvbnRleHQsXG4tLVxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy00MjktXHRcdGJyZWFrO1xuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzo0MzA6XHRjYXNlIE5GQ19ESUdJVEFMX1JGX1RFQ0hfSVNPMTU2OTM6XG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jOjQzMTpcdFx0c3Rjb250ZXh0LVx1MDAzZWN1cnJlbnRfcmZfdGVjaCA9IE5GQ19ESUdJVEFMX1JGX1RFQ0hfSVNPMTU2OTM7XG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTQzMi1cdFx0cmVzdWx0ID0gc3Q5NWhmX3NlbmRfcmVjdl9jbWQoc3Rjb250ZXh0LFxuLS1cbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM9NjQ4PXN0YXRpYyBpbnQgc3Q5NWhmX2Vycm9yX2hhbmRsaW5nKHN0cnVjdCBzdDk1aGZfY29udGV4dCAqc3Rjb250ZXh0LFxuLS1cbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtNjY2LVx0c3dpdGNoIChzdGNvbnRleHQtXHUwMDNlY3VycmVudF9yZl90ZWNoKSB7XG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jOjY2NzpcdGNhc2UgTkZDX0RJR0lUQUxfUkZfVEVDSF8xMDZBOlxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy02NjgtXHRcdGlmIChzdGNvbnRleHQtXHUwMDNlc2VuZHJjdl90cmZsYWcgPT0gVFJGTEFHX05GQ0FfU1REX0ZSQU1FX0NSQykge1xuLS1cbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtNjc3LVx0XHRicmVhaztcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6Njc4Olx0Y2FzZSBORkNfRElHSVRBTF9SRl9URUNIXzEwNkI6XG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jOjY3OTpcdGNhc2UgTkZDX0RJR0lUQUxfUkZfVEVDSF9JU08xNTY5MzpcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtNjgwLVx0XHRlcnJvcl9ieXRlID0gc2tiX3Jlc3AtXHUwMDNlZGF0YVtyZXNfbGVuIC0gMV07XG4tLVxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYz02OTM9c3RhdGljIGludCBzdDk1aGZfcmVzcG9uc2VfaGFuZGxlcihzdHJ1Y3Qgc3Q5NWhmX2NvbnRleHQgKnN0Y29udGV4dCxcbi0tXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTczNi1cdHN3aXRjaCAoc3Rjb250ZXh0LVx1MDAzZWN1cnJlbnRfcmZfdGVjaCkge1xuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzo3Mzc6XHRjYXNlIE5GQ19ESUdJVEFMX1JGX1RFQ0hfMTA2QTpcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtNzM4LVx0XHRpZiAoc3Rjb250ZXh0LVx1MDAzZXNlbmRyY3ZfdHJmbGFnID09IFRSRkxBR19ORkNBX1NURF9GUkFNRV9DUkMpXG4tLVxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy03NDItXHRcdGJyZWFrO1xuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzo3NDM6XHRjYXNlIE5GQ19ESUdJVEFMX1JGX1RFQ0hfMTA2QjpcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6NzQ0Olx0Y2FzZSBORkNfRElHSVRBTF9SRl9URUNIX0lTTzE1NjkzOlxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy03NDUtXHRcdHNrYl90cmltKHNrYl9yZXNwLCAoc2tiX2xlbiAtIDMpKTtcbi0tXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jPTg2OT1zdGF0aWMgaW50IHN0OTVoZl9pbl9jb25maWd1cmVfaHcoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbi0tXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTg3NC1cbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6ODc1Olx0aWYgKHR5cGUgPT0gTkZDX0RJR0lUQUxfQ09ORklHX1JGX1RFQ0gpXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTg3Ni1cdFx0cmV0dXJuIHN0OTVoZl9zZWxlY3RfcHJvdG9jb2woc3Rjb250ZXh0LCBwYXJhbSk7XG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTg3Ny1cbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6ODc4Olx0aWYgKHR5cGUgPT0gTkZDX0RJR0lUQUxfQ09ORklHX0ZSQU1JTkcpIHtcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtODc5LVx0XHRzd2l0Y2ggKHBhcmFtKSB7XG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jOjg4MDpcdFx0Y2FzZSBORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfU0hPUlQ6XG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTg4MS1cdFx0XHRzdGNvbnRleHQtXHUwMDNlc2VuZHJjdl90cmZsYWcgPSBUUkZMQUdfTkZDQV9TSE9SVF9GUkFNRTtcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtODgyLVx0XHRcdGJyZWFrO1xuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzo4ODM6XHRcdGNhc2UgTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX1NUQU5EQVJEOlxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy04ODQtXHRcdFx0c3Rjb250ZXh0LVx1MDAzZXNlbmRyY3ZfdHJmbGFnID0gVFJGTEFHX05GQ0FfU1REX0ZSQU1FO1xuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy04ODUtXHRcdFx0YnJlYWs7XG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jOjg4NjpcdFx0Y2FzZSBORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfVDRUOlxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzo4ODc6XHRcdGNhc2UgTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX05GQ19ERVA6XG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jOjg4ODpcdFx0Y2FzZSBORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfU1RBTkRBUkRfV0lUSF9DUkNfQTpcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtODg5LVx0XHRcdHN0Y29udGV4dC1cdTAwM2VzZW5kcmN2X3RyZmxhZyA9IFRSRkxBR19ORkNBX1NURF9GUkFNRV9DUkM7XG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTg5MC1cdFx0XHRicmVhaztcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6ODkxOlx0XHRjYXNlIE5GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQjpcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6ODkyOlx0XHRjYXNlIE5GQ19ESUdJVEFMX0ZSQU1JTkdfSVNPMTU2OTNfSU5WRU5UT1JZOlxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzo4OTM6XHRcdGNhc2UgTkZDX0RJR0lUQUxfRlJBTUlOR19JU08xNTY5M19UNVQ6XG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTg5NC1cdFx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jPTkxNT1zdGF0aWMgaW50IHN0OTVoZl9pbl9zZW5kX2NtZChzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxuLS1cbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtOTMwLVx0c3dpdGNoIChzdGNvbnRleHQtXHUwMDNlY3VycmVudF9yZl90ZWNoKSB7XG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jOjkzMTpcdGNhc2UgTkZDX0RJR0lUQUxfUkZfVEVDSF8xMDZBOlxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy05MzItXHRcdGxlbl9kYXRhX3RvX3RhZyA9IHNrYi1cdTAwM2VsZW4gJiM0MzsgMTtcbi0tXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTkzNC1cdFx0YnJlYWs7XG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jOjkzNTpcdGNhc2UgTkZDX0RJR0lUQUxfUkZfVEVDSF8xMDZCOlxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzo5MzY6XHRjYXNlIE5GQ19ESUdJVEFMX1JGX1RFQ0hfSVNPMTU2OTM6XG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTkzNy1cdFx0bGVuX2RhdGFfdG9fdGFnID0gc2tiLVx1MDAzZWxlbjtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkzLSAqIG1lc3NlcyB1cCB0aGUgZGF0YSByZXR1cm5lZCBzbyBpdCBpcyBvbmx5IGVuYWJsZWQgd2hlbiB0aGUgZnJhbWluZyBpc1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5NDogKiAmIzM5O05GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQV9UMlQmIzM5OyBhbmQgdGhlIGNvbW1hbmQgaXMgbm90IGEgcmVhZCBjb21tYW5kLlxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05NS0gKiBVbmZvcnR1bmF0ZWx5LCB0aGF0IG1lYW5zIHRoYXQgdGhlIGRyaXZlciBoYXMgdG8gcGVlayBpbnRvIHR4IGZyYW1lc1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5NjogKiB3aGVuIHRoZSBmcmFtaW5nIGlzICYjMzk7TkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX1QyVCYjMzk7LiAgVGhpcyBpcyBkb25lIGJ5XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk3LSAqIHRoZSB0cmY3OTcwYV9wZXJfY21kX2NvbmZpZygpIHJvdXRpbmUuXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYz02MTc9c3RhdGljIGludCB0cmY3OTcwYV9tb2RlX2RldGVjdChzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgdTggKnJmX3RlY2gpXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02MjctXHRjYXNlIFRSRjc5MDcwQV9ORkNfVEFSR0VUX1BST1RPQ09MXzEwNkE6XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjYyODpcdFx0dGVjaCA9IE5GQ19ESUdJVEFMX1JGX1RFQ0hfMTA2QTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjI5LVx0XHRicmVhaztcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjMwLVx0Y2FzZSBUUkY3OTA3MEFfTkZDX1RBUkdFVF9QUk9UT0NPTF8xMDZCOlxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo2MzE6XHRcdHRlY2ggPSBORkNfRElHSVRBTF9SRl9URUNIXzEwNkI7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTYzMi1cdFx0YnJlYWs7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTYzMy1cdGNhc2UgVFJGNzkwNzBBX05GQ19UQVJHRVRfUFJPVE9DT0xfMjEyRjpcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NjM0Olx0XHR0ZWNoID0gTkZDX0RJR0lUQUxfUkZfVEVDSF8yMTJGO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02MzUtXHRcdGJyZWFrO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02MzYtXHRjYXNlIFRSRjc5MDcwQV9ORkNfVEFSR0VUX1BST1RPQ09MXzQyNEY6XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjYzNzpcdFx0dGVjaCA9IE5GQ19ESUdJVEFMX1JGX1RFQ0hfNDI0RjtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjM4LVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jPTc4Mz1zdGF0aWMgdm9pZCB0cmY3OTcwYV9kcmFpbl9maWZvKHN0cnVjdCB0cmY3OTcwYSAqdHJmLCB1OCBzdGF0dXMpXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04MjgtXHQvKiBJZiByZWNlaXZlZCBUeXBlIDIgQUNLL05BQ0ssIHNoaWZ0IHJpZ2h0IDQgYml0cyBhbmQgcGFzcyB1cCAqL1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo4Mjk6XHRpZiAoKHRyZi1cdTAwM2VmcmFtaW5nID09IE5GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQV9UMlQpIFx1MDAyNlx1MDAyNiAoc2tiLVx1MDAzZWxlbiA9PSAxKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODMwLVx0ICAgICh0cmYtXHUwMDNlc3BlY2lhbF9mY25fcmVnMSA9PSBUUkY3OTcwQV9TUEVDSUFMX0ZDTl9SRUcxXzRfQklUX1JYKSkge1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM9ODY1PXN0YXRpYyBpcnFyZXR1cm5fdCB0cmY3OTcwYV9pcnEoaW50IGlycSwgdm9pZCAqZGV2X2lkKVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTUxLVx0XHRcdHN3aXRjaCAodHJmLVx1MDAzZWZyYW1pbmcpIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTUyOlx0XHRcdGNhc2UgTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX1NUQU5EQVJEOlxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05NTMtXHRcdFx0XHR0cmYtXHUwMDNldHhfY21kID0gVFJGNzk3MEFfQ01EX1RSQU5TTUlUX05PX0NSQztcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk1Ni1cdFx0XHRcdGJyZWFrO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5NTc6XHRcdFx0Y2FzZSBORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfU1RBTkRBUkRfV0lUSF9DUkNfQTpcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTU4LVx0XHRcdFx0dHJmLVx1MDAzZXR4X2NtZCA9IFRSRjc5NzBBX0NNRF9UUkFOU01JVDtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk2MS1cdFx0XHRcdGJyZWFrO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5NjI6XHRcdFx0Y2FzZSBORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfQU5USUNPTF9DT01QTEVURTpcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTYzLVx0XHRcdFx0cmV0ID0gdHJmNzk3MGFfd3JpdGUodHJmLFxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM9MTIxOD1zdGF0aWMgaW50IHRyZjc5NzBhX2luX2NvbmZpZ19yZl90ZWNoKHN0cnVjdCB0cmY3OTcwYSAqdHJmLCBpbnQgdGVjaClcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyMjQtXHRzd2l0Y2ggKHRlY2gpIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTIyNTpcdGNhc2UgTkZDX0RJR0lUQUxfUkZfVEVDSF8xMDZBOlxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjI2LVx0XHR0cmYtXHUwMDNlaXNvX2N0cmxfdGVjaCA9IFRSRjc5NzBBX0lTT19DVFJMXzE0NDQzQV8xMDY7XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjMxLVx0XHRicmVhaztcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTIzMjpcdGNhc2UgTkZDX0RJR0lUQUxfUkZfVEVDSF8xMDZCOlxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjMzLVx0XHR0cmYtXHUwMDNlaXNvX2N0cmxfdGVjaCA9IFRSRjc5NzBBX0lTT19DVFJMXzE0NDQzQl8xMDY7XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjM4LVx0XHRicmVhaztcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTIzOTpcdGNhc2UgTkZDX0RJR0lUQUxfUkZfVEVDSF8yMTJGOlxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjQwLVx0XHR0cmYtXHUwMDNlaXNvX2N0cmxfdGVjaCA9IFRSRjc5NzBBX0lTT19DVFJMX0ZFTElDQV8yMTI7XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjQ1LVx0XHRicmVhaztcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTI0NjpcdGNhc2UgTkZDX0RJR0lUQUxfUkZfVEVDSF80MjRGOlxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjQ3LVx0XHR0cmYtXHUwMDNlaXNvX2N0cmxfdGVjaCA9IFRSRjc5NzBBX0lTT19DVFJMX0ZFTElDQV80MjQ7XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjUyLVx0XHRicmVhaztcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTI1MzpcdGNhc2UgTkZDX0RJR0lUQUxfUkZfVEVDSF9JU08xNTY5MzpcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI1NC1cdFx0dHJmLVx1MDAzZWlzb19jdHJsX3RlY2ggPSBUUkY3OTcwQV9JU09fQ1RSTF8xNTY5M19TR0xfMU9GNF8yNjQ4O1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM9MTMxMj1zdGF0aWMgaW50IHRyZjc5NzBhX2luX2NvbmZpZ19mcmFtaW5nKHN0cnVjdCB0cmY3OTcwYSAqdHJmLCBpbnQgZnJhbWluZylcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzMjAtXHRzd2l0Y2ggKGZyYW1pbmcpIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTMyMTpcdGNhc2UgTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX1NIT1JUOlxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMzIyOlx0Y2FzZSBORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfU1RBTkRBUkQ6XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzMjMtXHRcdHRyZi1cdTAwM2V0eF9jbWQgPSBUUkY3OTcwQV9DTURfVFJBTlNNSVRfTk9fQ1JDO1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTMyNS1cdFx0YnJlYWs7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEzMjY6XHRjYXNlIE5GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQV9TVEFOREFSRF9XSVRIX0NSQ19BOlxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMzI3Olx0Y2FzZSBORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfVDRUOlxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMzI4Olx0Y2FzZSBORkNfRElHSVRBTF9GUkFNSU5HX05GQ0I6XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEzMjk6XHRjYXNlIE5GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQl9UNFQ6XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEzMzA6XHRjYXNlIE5GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDRjpcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTMzMTpcdGNhc2UgTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNGX1QzVDpcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTMzMjpcdGNhc2UgTkZDX0RJR0lUQUxfRlJBTUlOR19JU08xNTY5M19JTlZFTlRPUlk6XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEzMzM6XHRjYXNlIE5GQ19ESUdJVEFMX0ZSQU1JTkdfSVNPMTU2OTNfVDVUOlxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMzM0Olx0Y2FzZSBORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfTkZDX0RFUDpcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTMzNTpcdGNhc2UgTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNGX05GQ19ERVA6XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzMzYtXHRcdHRyZi1cdTAwM2V0eF9jbWQgPSBUUkY3OTcwQV9DTURfVFJBTlNNSVQ7XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzM4LVx0XHRicmVhaztcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTMzOTpcdGNhc2UgTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX1QyVDpcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTM0MC1cdFx0dHJmLVx1MDAzZXR4X2NtZCA9IFRSRjc5NzBBX0NNRF9UUkFOU01JVDtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jPTEzODc9c3RhdGljIGludCB0cmY3OTcwYV9pbl9jb25maWd1cmVfaHcoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgaW50IHR5cGUsXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDA2LVx0c3dpdGNoICh0eXBlKSB7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE0MDc6XHRjYXNlIE5GQ19ESUdJVEFMX0NPTkZJR19SRl9URUNIOlxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDA4LVx0XHRyZXQgPSB0cmY3OTcwYV9pbl9jb25maWdfcmZfdGVjaCh0cmYsIHBhcmFtKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQwOS1cdFx0YnJlYWs7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE0MTA6XHRjYXNlIE5GQ19ESUdJVEFMX0NPTkZJR19GUkFNSU5HOlxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDExLVx0XHRyZXQgPSB0cmY3OTcwYV9pbl9jb25maWdfZnJhbWluZyh0cmYsIHBhcmFtKTtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jPTE0Mzk9c3RhdGljIGludCB0cmY3OTcwYV9wZXJfY21kX2NvbmZpZyhzdHJ1Y3QgdHJmNzk3MGEgKnRyZixcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0NTYtXHQgKi9cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTQ1NzpcdGlmICgodHJmLVx1MDAzZXRlY2hub2xvZ3kgPT0gTkZDX0RJR0lUQUxfUkZfVEVDSF8xMDZBKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTQ1ODpcdCAgICAodHJmLVx1MDAzZWZyYW1pbmcgPT0gTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX1QyVCkpIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQ1OS1cdFx0aWYgKHJlcVswXSA9PSBORkNfVDJUX0NNRF9SRUFEKVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQ3MS1cdFx0fVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNDcyOlx0fSBlbHNlIGlmICh0cmYtXHUwMDNldGVjaG5vbG9neSA9PSBORkNfRElHSVRBTF9SRl9URUNIX0lTTzE1NjkzKSB7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0NzMtXHRcdGlzb19jdHJsID0gdHJmLVx1MDAzZWlzb19jdHJsIFx1MDAyNiB+VFJGNzk3MEFfSVNPX0NUUkxfUkZJRF9TUEVFRF9NQVNLO1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQ5OC1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTQ5OTpcdFx0aWYgKCh0cmYtXHUwMDNlZnJhbWluZyA9PSBORkNfRElHSVRBTF9GUkFNSU5HX0lTTzE1NjkzX1Q1VCkgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE1MDAtXHRcdCAgICB0cmY3OTcwYV9pc19pc28xNTY5M193cml0ZV9vcl9sb2NrKHJlcVsxXSkgXHUwMDI2XHUwMDI2XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYz0xNTA4PXN0YXRpYyBpbnQgdHJmNzk3MGFfc2VuZF9jbWQoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE1ODQtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE1ODU6XHRpZiAodHJmLVx1MDAzZWZyYW1pbmcgPT0gTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX1NIT1JUKSB7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE1ODYtXHRcdHByZWZpeFszXSA9IDB4MDA7XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYz0xNjEyPXN0YXRpYyBpbnQgdHJmNzk3MGFfdGdfY29uZmlnX3JmX3RlY2goc3RydWN0IHRyZjc5NzBhICp0cmYsIGludCB0ZWNoKVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTYxOC1cdHN3aXRjaCAodGVjaCkge1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNjE5Olx0Y2FzZSBORkNfRElHSVRBTF9SRl9URUNIXzEwNkE6XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE2MjAtXHRcdHRyZi1cdTAwM2Vpc29fY3RybF90ZWNoID0gVFJGNzk3MEFfSVNPX0NUUkxfTkZDX05GQ19DRV9NT0RFIHxcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE2MjUtXHRcdGJyZWFrO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNjI2Olx0Y2FzZSBORkNfRElHSVRBTF9SRl9URUNIXzIxMkY6XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE2MjctXHRcdHRyZi1cdTAwM2Vpc29fY3RybF90ZWNoID0gVFJGNzk3MEFfSVNPX0NUUkxfTkZDX05GQ19DRV9NT0RFIHxcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE2MzItXHRcdGJyZWFrO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNjMzOlx0Y2FzZSBORkNfRElHSVRBTF9SRl9URUNIXzQyNEY6XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE2MzQtXHRcdHRyZi1cdTAwM2Vpc29fY3RybF90ZWNoID0gVFJGNzk3MEFfSVNPX0NUUkxfTkZDX05GQ19DRV9NT0RFIHxcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE2NTMtXHQgKi9cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTY1NDpcdGlmICgodHJmLVx1MDAzZWZyYW1pbmcgPT0gTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNfREVQX0FDVElWQVRFRCkgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE2NTUtXHQgICAgKHRyZi1cdTAwM2Vpc29fY3RybF90ZWNoICE9IHRyZi1cdTAwM2Vpc29fY3RybCkpIHtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jPTE2NzA9c3RhdGljIGludCB0cmY3OTcwYV90Z19jb25maWdfZnJhbWluZyhzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgaW50IGZyYW1pbmcpXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNjc3LVx0c3dpdGNoIChmcmFtaW5nKSB7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE2Nzg6XHRjYXNlIE5GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQV9ORkNfREVQOlxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNjc5LVx0XHR0cmYtXHUwMDNldHhfY21kID0gVFJGNzk3MEFfQ01EX1RSQU5TTUlUX05PX0NSQztcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE2ODEtXHRcdGJyZWFrO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNjgyOlx0Y2FzZSBORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfU1RBTkRBUkQ6XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE2ODM6XHRjYXNlIE5GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQV9TVEFOREFSRF9XSVRIX0NSQ19BOlxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNjg0Olx0Y2FzZSBORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfQU5USUNPTF9DT01QTEVURTpcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTY4NS1cdFx0LyogVGhlc2Ugb25lcyBhcmUgYXBwbGllZCBpbiB0aGUgaW50ZXJydXB0IGhhbmRsZXIgKi9cbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE2ODctXHRcdGJyZWFrO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNjg4Olx0Y2FzZSBORkNfRElHSVRBTF9GUkFNSU5HX05GQ0ZfTkZDX0RFUDpcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTY4OS1cdFx0dHJmLVx1MDAzZXR4X2NtZCA9IFRSRjc5NzBBX0NNRF9UUkFOU01JVDtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE2OTEtXHRcdGJyZWFrO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNjkyOlx0Y2FzZSBORkNfRElHSVRBTF9GUkFNSU5HX05GQ19ERVBfQUNUSVZBVEVEOlxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNjkzLVx0XHR0cmYtXHUwMDNldHhfY21kID0gVFJGNzk3MEFfQ01EX1RSQU5TTUlUO1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM9MTcyOT1zdGF0aWMgaW50IHRyZjc5NzBhX3RnX2NvbmZpZ3VyZV9odyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBpbnQgdHlwZSxcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE3NDgtXHRzd2l0Y2ggKHR5cGUpIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTc0OTpcdGNhc2UgTkZDX0RJR0lUQUxfQ09ORklHX1JGX1RFQ0g6XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE3NTAtXHRcdHJldCA9IHRyZjc5NzBhX3RnX2NvbmZpZ19yZl90ZWNoKHRyZiwgcGFyYW0pO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNzUxLVx0XHRicmVhaztcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTc1MjpcdGNhc2UgTkZDX0RJR0lUQUxfQ09ORklHX0ZSQU1JTkc6XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE3NTMtXHRcdHJldCA9IHRyZjc5NzBhX3RnX2NvbmZpZ19mcmFtaW5nKHRyZiwgcGFyYW0pO1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM9MTg1NT1zdGF0aWMgaW50IHRyZjc5NzBhX3RnX2xpc3Rlbl9tZChzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTg2NC1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTg2NTpcdHJldCA9IHRyZjc5NzBhX3RnX2NvbmZpZ3VyZV9odyhkZGV2LCBORkNfRElHSVRBTF9DT05GSUdfUkZfVEVDSCxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTg2NjpcdFx0XHRcdCAgICAgICBORkNfRElHSVRBTF9SRl9URUNIXzEwNkEpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xODY3LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE4NjktXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE4NzA6XHRyZXQgPSB0cmY3OTcwYV90Z19jb25maWd1cmVfaHcoZGRldiwgTkZDX0RJR0lUQUxfQ09ORklHX0ZSQU1JTkcsXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE4NzE6XHRcdFx0XHQgICAgICAgTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX05GQ19ERVApO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xODcyLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jPTIwNDU9c3RhdGljIGludCB0cmY3OTcwYV9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMjE3NS1cdFx0XHRcdFx0XHRUUkY3OTcwQV9TVVBQT1JURURfUFJPVE9DT0xTLFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoyMTc2Olx0XHRcdFx0XHRcdE5GQ19ESUdJVEFMX0RSVl9DQVBTX0lOX0NSQyB8XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjIxNzc6XHRcdFx0XHRcdFx0TkZDX0RJR0lUQUxfRFJWX0NBUFNfVEdfQ1JDLCAwLFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0yMTc4LVx0XHRcdFx0XHRcdDApO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMiAxMzoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjI3NwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDY0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBORkMgRHJpdmVyIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgTkZDLXJlbGF0ZWQgY29uZmlndXJhdGlvbnMgYW5kIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGVpciByZWxhdGlvbnNoaXBzLiBTcGVjaWZpY2FsbHksIEkgc2VlIHRoYXQgYE5GQ19QT1JUMTAwYCBpcyBkZXBlbmRlbnQgb24gYm90aCBgVVNCYCBhbmQgYE5GQ19ESUdJVEFMYC4gVGhhdCBtYWtlcyBzZW5zZTsgYE5GQ19QT1JUMTAwYCBwcm9iYWJseSByZWZlcnMgdG8gYSBzcGVjaWZpYyB0eXBlIG9mIE5GQyByZWFkZXIgdGhhdCBpbnRlcmZhY2VzIHZpYSBVU0IuIEFuZCBvZiBjb3Vyc2UsIGl0IG5lZWRzIHRoZSB1bmRlcmx5aW5nIGRpZ2l0YWwgTkZDIHN1cHBvcnQuIFRoZW4gSSBzZWUgYE5GQ19TSU1gIG9ubHkgZGVwZW5kcyBvbiBgTkZDX0RJR0lUQUxgLCB3aGljaCBsaWtlbHkgbWVhbnMgYE5GQ19TSU1gIHN1cHBvcnQgdXNlcyBORkMgZnVuY3Rpb25hbGl0eSBidXQgbm90IGEgVVNCIGNvbm5lY3Rpb24uCgpUbyBnZXQgYSBjbGVhcmVyIHBpY3R1cmUgb2YgaG93IHRoZXNlIG9wdGlvbnMgYXJlIHN0cnVjdHVyZWQsIEkgc2hvdWxkIGRpdmUgaW50byB0aGUgS2NvbmZpZyBmaWxlIGZvciB0aGUgTkZDIGRyaXZlcnMuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgYGRyaXZlcnMvbmZjL0tjb25maWdgIHRvIHNlZSB0aGUgY29tcGxldGUgY29udGV4dCBhcm91bmQgYE5GQ19QT1JUMTAwYCBhbmQgYE5GQ19TSU1gLiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIGluZm9ybWF0aW9uIGFib3V0IGRlZmF1bHQgdmFsdWVzLCBoZWxwIHRleHQsIGFuZCBvdGhlciBkZXBlbmRlbmNpZXMgdGhhdCBJIGhhdmVuJiMzOTt0IGNvbnNpZGVyZWQgeWV0LiBVbmRlcnN0YW5kaW5nIHRoZSBLY29uZmlnIGhpZXJhcmNoeSBpcyBrZXkgdG8gbWFraW5nIHN1cmUgbXkgY29uZmlndXJhdGlvbnMgYXJlIGNvcnJlY3QgYW5kIGRvbiYjMzk7dCBpbnRyb2R1Y2UgYW55IGNvbmZsaWN0cy4gVGltZSB0byBkaWcgaW4hCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEyIDEzOjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZmMvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDMwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDI1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgMzA6XHRcbiAgMzE6XHRjb25maWcgTkZDX1NJTVxuICAzMjpcdFx0dHJpc3RhdGUgXCYjMzQ7TkZDIGhhcmR3YXJlIHNpbXVsYXRvciBkcml2ZXJcJiMzNDtcbiAgMzM6XHRcdGRlcGVuZHMgb24gTkZDX0RJR0lUQUxcbiAgMzQ6XHRcdGhlbHBcbiAgMzU6XHRcdCAgVGhpcyBkcml2ZXIgZGVjbGFyZXMgdHdvIHZpcnR1YWwgTkZDIGRldmljZXMgc3VwcG9ydGluZyBORkMtREVQXG4gIDM2Olx0XHQgIHByb3RvY29sLiBBbiBMTENQIGNvbm5lY3Rpb24gY2FuIGJlIGVzdGFibGlzaGVkIGJldHdlZW4gdGhlbSBhbmRcbiAgMzc6XHRcdCAgYWxsIHBhY2tldHMgc2VudCBmcm9tIG9uZSBkZXZpY2UgaXMgc2VudCBiYWNrIHRvIHRoZSBvdGhlciwgYWN0aW5nIGFzXG4gIDM4Olx0XHQgIGxvb3BiYWNrIGRldmljZXMuXG4gIDM5Olx0XG4gIDQwOlx0XHQgIElmIHVuc3VyZSwgc2F5IE4uXG4gIDQxOlx0XG4gIDQyOlx0Y29uZmlnIE5GQ19QT1JUMTAwXG4gIDQzOlx0XHR0cmlzdGF0ZSBcJiMzNDtTb255IE5GQyBQb3J0LTEwMCBTZXJpZXMgVVNCIGRldmljZSBzdXBwb3J0XCYjMzQ7XG4gIDQ0Olx0XHRkZXBlbmRzIG9uIFVTQlxuICA0NTpcdFx0ZGVwZW5kcyBvbiBORkNfRElHSVRBTFxuICA0NjpcdFx0aGVscFxuICA0NzpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgU29ueSBQb3J0LTEwMCBjaGlwIGJhc2VkIFVTQiBkZXZpY2VzIHN1Y2ggYXMgdGhlXG4gIDQ4Olx0XHQgIFJDLVMzODAgZG9uZ2xlLlxuICA0OTpcdFxuICA1MDpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuICA1MTpcdFxuICA1MjpcdGNvbmZpZyBORkNfVklSVFVBTF9OQ0lcbiAgNTM6XHRcdHRyaXN0YXRlIFwmIzM0O05DSSBkZXZpY2Ugc2ltdWxhdG9yIGRyaXZlclwmIzM0O1xuICA1NDpcdFx0ZGVwZW5kcyBvbiBORkNfTkNJXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEyIDEzOjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2OTU0CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMjQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IE5GQyBGdXp6aW5nIEh5cG90aGVzaXMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkmIzM5O20gbG9va2luZyBhdCBgTkZDX1NJTWAsIHRoYXQgdmlydHVhbCBORkMgZHJpdmVyLCBlc3NlbnRpYWxseSBhIGxvb3BiYWNrIGZvciBORkMtREVQLiBJbnRlcmVzdGluZywgYSBjbG9zZWQgc3lzdGVtIHRvIGV4cGxvcmUgYW5kIHBlcmhhcHMgbGV2ZXJhZ2UuIFRoZW4gdGhlcmUmIzM5O3MgYE5GQ19QT1JUMTAwYCwgd2hpY2ggaXMgU29ueSYjMzk7cyBORkMgVVNCIGRldmljZSBkcml2ZXIsIG9idmlvdXNseSBVU0ItZGVwZW5kZW50LiBOb3cgdGhlIGNydWNpYWwgY29ubmVjdGlvbjogc3l6a2FsbGVyIGhhcyBVU0IgZnV6emluZyBjYXBhYmlsaXRpZXMgd2l0aCBpdHMgZ2FkZ2V0IGFuZCByYXdfZ2FkZ2V0IGZlYXR1cmVzLCBhbmQgaXQmIzM5O3MgYWxyZWFkeSBoYW1tZXJpbmcgYXdheSBhdCBORkMgc29ja2V0cyAoQUZfTkZDKSBhbmQgbmV0bGluay4gVGhpcyBpcyBwcm9taXNpbmcsIGVzcGVjaWFsbHkgZ2l2ZW4gaG93IGFnZ3Jlc3NpdmVseSBzeXprYWxsZXIgdGFyZ2V0cyBgbmV0L25mYy9gIGdlbmVyYWxseSwgcmV2ZWFsaW5nIHBsZW50eSBvZiBidWdzLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtEb2VzIHN5emthbGxlciBoYXZlIE5GQyBzeXNjYWxsIGRlc2NyaXB0aW9ucywgb3IgaXMgaXQgYWxyZWFkeSBmdXp6aW5nIE5GQyBlZmZlY3RpdmVseT8mIzM0OyBJdCBtYWtlcyBzZW5zZSB0byB2ZXJpZnkuCgpBIHF1aWNrIGNoZWNrIGNvbmZpcm1zIGBBRl9ORkNgIGlzIGluZGVlZCBwcmVzZW50IGluIHRoZSBrZXJuZWwgdmlhIGBuZXQvbmZjL2FmX25mYy5jYC4gTm93LCBJIHdhbnQgdG8gdW5kZXJzdGFuZCAqaG93KiBgZGlnaXRhbF9kZXBgIGlzIGludm9rZWQuIFdoYXQgYXJlIHRoZSBjYWxsaW5nIHBhdHRlcm5zPyBJJiMzOTtsbCB1c2UgYGRpZ2l0YWxfZGVwYCBvciBgbmZjX2RpZ2l0YWxgIGFzIHRoZSBzZWFyY2ggdGVybXMgd2l0aGluIGBuZXQvbmZjL2AgZm9yIG1vcmUgY29udGV4dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTIgMTM6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmZjJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZmMvZGlnaXRhbF9kZXAuYz0xMDY9c3RhdGljIHZvaWQgZGlnaXRhbF9pbl9yZWN2X2RlcF9yZXMoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwNy1cdFx0XHRcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqcmVzcCk7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTA4OnN0YXRpYyB2b2lkIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDktXHRcdFx0XHQgICAgc3RydWN0IHNrX2J1ZmYgKnJlc3ApO1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz05Nzg9c3RhdGljIGludCBkaWdpdGFsX3RnX3NlbmRfYWNrKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwMTItXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTAxMzpcdHJjID0gZGlnaXRhbF90Z19zZW5kX2NtZChkZGV2LCBza2IsIDE1MDAsIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxLFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwMTQtXHRcdFx0XHQgZGF0YV9leGNoKTtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9MTAyND1zdGF0aWMgaW50IGRpZ2l0YWxfdGdfc2VuZF9hdG4oc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldilcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTA1MS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDUyOlx0cmMgPSBkaWdpdGFsX3RnX3NlbmRfY21kKGRkZXYsIHNrYiwgMTUwMCwgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEsXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTA1My1cdFx0XHRcdCBOVUxMKTtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9MTA2MD1zdGF0aWMgaW50IGRpZ2l0YWxfdGdfc2VuZF9zYXZlZF9za2Ioc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldilcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTA2OS1cdHJjID0gZGlnaXRhbF90Z19zZW5kX2NtZChkZGV2LCBkZGV2LVx1MDAzZXNhdmVkX3NrYiwgMTUwMCxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDcwOlx0XHRcdFx0IGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxLCBOVUxMKTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDcxLVx0aWYgKHJjKVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDc2LVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwNzc6c3RhdGljIHZvaWQgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwNzgtXHRcdFx0XHQgICAgc3RydWN0IHNrX2J1ZmYgKnJlc3ApXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTEyOTc9aW50IGRpZ2l0YWxfdGdfc2VuZF9kZXBfcmVzKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEzMzEtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTMzMjpcdHJjID0gZGlnaXRhbF90Z19zZW5kX2NtZChkZGV2LCB0bXBfc2tiLCAxNTAwLCBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcSxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzMzLVx0XHRcdFx0IE5VTEwpO1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz0xMzQ4PXN0YXRpYyB2b2lkIGRpZ2l0YWxfdGdfc2VuZF9wc2xfcmVzX2NvbXBsZXRlKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEzNTktXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTM2MDpcdGRpZ2l0YWxfdGdfbGlzdGVuKGRkZXYsIDE1MDAsIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxLCBOVUxMKTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzYxLVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz0xNDY3PXN0YXRpYyB2b2lkIGRpZ2l0YWxfdGdfc2VuZF9hdHJfcmVzX2NvbXBsZXRlKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTE0ODUtXHRlbHNlXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTQ4NjpcdFx0ZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEoZGRldiwgYXJnLCByZXNwKTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xNDg3LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTIgMTM6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzg1MjMKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAxMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIERFUCBSZXF1ZXN0IEhhbmRsaW5nKioKCk9rYXksIHNvIGBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcWAgaXMgdGhlIGtleSBmdW5jdGlvbiwgdGhlIHJlY2VpdmUgaGFuZGxlciBmb3IgREVQIHJlcXVlc3RzIGluIHRhcmdldCBtb2RlLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB0cmFjZSB0aGUgZXhlY3V0aW9uIGZsb3cgYW5kIHNlZSB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGFjdHVhbGx5IHRyaWdnZXJlZCBkdXJpbmcgREVQIGxpbmsgc2V0dXAgb3IgdGFyZ2V0IG9wZXJhdGlvbnMuIEkmIzM5O2xsIG5lZWQgdG8gaWRlbnRpZnkgdGhlIHBvaW50cyBvZiBvcmlnaW4uCgpGaXJzdCwgSSBuZWVkIHRvIGNoZWNrIGBuZXQvbmZjL2RpZ2l0YWxfZGVwLmNgIHRvIHNlZSBob3cgcmVzcG9uc2VzIGFyZSBoYW5kbGVkLiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSBmdW5jdGlvbiBjYWxscyB0aGF0IG1pZ2h0IHJlbGF0ZSB0byB0aGUgdHJpZ2dlci4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGludGVyZXN0ZWQgaW4gYGRpZ2l0YWxfdGdfc2VuZF9hdHJfcmVzX2NvbXBsZXRlYCwgYGRpZ2l0YWxfdGdfc2VuZF9kZXBfcmVzYCwgYW5kIGBkaWdpdGFsX3RnX3NlbmRfcHNsX3Jlc19jb21wbGV0ZWAsIHRvIHNlZSBpZiB0aGVyZSBpcyBhbnkgaW5kaWNhdGlvbiBvZiB0aGUgY2FsbCB0byB0aGUgcmVjZWl2ZSBoYW5kbGVyLgoKTmV4dCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSB0YXJnZXQgbGlzdGVucyBhbmQgaW5pdGlhdGVzIGl0c2VsZi4gRm9yIHRoaXMgcGFydCwgSSBzaG91bGQgZXhhbWluZSBgZGlnaXRhbF90ZWNobm9sb2d5LmNgIGFuZCBgZGlnaXRhbF9jb3JlLmNgIHRvIGRldGVybWluZSBob3cgdGhlIERFUCBvcGVyYXRpb25zIGFyZSBpbml0aWF0ZWQuIFRoYXQgc2hvdWxkIGdpdmUgYSBtb3JlIGNvbXBsZXRlIHBpY3R1cmUgb2YgdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMiAxMzoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkaWdpdGFsX3RnXyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25mYy9kaWdpdGFsLmg9NDg9aW50IGRpZ2l0YWxfc2VuZF9jbWQoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdTggY21kX3R5cGUsXG5uZXQvbmZjL2RpZ2l0YWwuaDo0OTpcdFx0ICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZGlnaXRhbF90Z19tZGFhX3BhcmFtcyAqcGFyYW1zLFxubmV0L25mYy9kaWdpdGFsLmgtNTAtXHRcdCAgICAgdTE2IHRpbWVvdXQsIG5mY19kaWdpdGFsX2NtZF9jb21wbGV0ZV90IGNtZF9jYixcbi0tXG5uZXQvbmZjL2RpZ2l0YWwuaD04Mz1pbnQgZGlnaXRhbF9pbl9zZW5kX2RlcF9yZXEoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbi0tXG5uZXQvbmZjL2RpZ2l0YWwuaC04Ni1cbm5ldC9uZmMvZGlnaXRhbC5oOjg3OmludCBkaWdpdGFsX3RnX2NvbmZpZ3VyZV9odyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBpbnQgdHlwZSwgaW50IHBhcmFtKTtcbm5ldC9uZmMvZGlnaXRhbC5oOjg4OnN0YXRpYyBpbmxpbmUgaW50IGRpZ2l0YWxfdGdfc2VuZF9jbWQoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbm5ldC9uZmMvZGlnaXRhbC5oLTg5LVx0XHRcdHN0cnVjdCBza19idWZmICpza2IsIHUxNiB0aW1lb3V0LFxuLS1cbm5ldC9uZmMvZGlnaXRhbC5oLTk1LVxubmV0L25mYy9kaWdpdGFsLmg6OTY6dm9pZCBkaWdpdGFsX3RnX3JlY3Zfc2Vuc19yZXEoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxubmV0L25mYy9kaWdpdGFsLmgtOTctXHRcdFx0ICAgICAgc3RydWN0IHNrX2J1ZmYgKnJlc3ApO1xubmV0L25mYy9kaWdpdGFsLmgtOTgtXG5uZXQvbmZjL2RpZ2l0YWwuaDo5OTp2b2lkIGRpZ2l0YWxfdGdfcmVjdl9zZW5zZl9yZXEoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxubmV0L25mYy9kaWdpdGFsLmgtMTAwLVx0XHRcdCAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqcmVzcCk7XG5uZXQvbmZjL2RpZ2l0YWwuaC0xMDEtXG5uZXQvbmZjL2RpZ2l0YWwuaDoxMDI6c3RhdGljIGlubGluZSBpbnQgZGlnaXRhbF90Z19saXN0ZW4oc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdTE2IHRpbWVvdXQsXG5uZXQvbmZjL2RpZ2l0YWwuaC0xMDMtXHRcdFx0XHQgICAgbmZjX2RpZ2l0YWxfY21kX2NvbXBsZXRlX3QgY2IsIHZvaWQgKmFyZylcbi0tXG5uZXQvbmZjL2RpZ2l0YWwuaC0xMDgtXG5uZXQvbmZjL2RpZ2l0YWwuaDoxMDk6dm9pZCBkaWdpdGFsX3RnX3JlY3ZfYXRyX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB2b2lkICphcmcsXG5uZXQvbmZjL2RpZ2l0YWwuaC0xMTAtXHRcdFx0ICAgICBzdHJ1Y3Qgc2tfYnVmZiAqcmVzcCk7XG5uZXQvbmZjL2RpZ2l0YWwuaC0xMTEtXG5uZXQvbmZjL2RpZ2l0YWwuaDoxMTI6aW50IGRpZ2l0YWxfdGdfc2VuZF9kZXBfcmVzKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHN0cnVjdCBza19idWZmICpza2IpO1xubmV0L25mYy9kaWdpdGFsLmgtMTEzLVxubmV0L25mYy9kaWdpdGFsLmg6MTE0OmludCBkaWdpdGFsX3RnX2xpc3Rlbl9uZmNhKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHU4IHJmX3RlY2gpO1xubmV0L25mYy9kaWdpdGFsLmg6MTE1OmludCBkaWdpdGFsX3RnX2xpc3Rlbl9uZmNmKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHU4IHJmX3RlY2gpO1xubmV0L25mYy9kaWdpdGFsLmg6MTE2OnZvaWQgZGlnaXRhbF90Z19yZWN2X21kX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB2b2lkICphcmcsXG5uZXQvbmZjL2RpZ2l0YWwuaC0xMTctXHRcdFx0ICAgIHN0cnVjdCBza19idWZmICpyZXNwKTtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jPTI3PXN0cnVjdCBkaWdpdGFsX2NtZCB7XG4tLVxubmV0L25mYy9kaWdpdGFsX2NvcmUuYy0zNS1cdHN0cnVjdCBza19idWZmICpyZXNwO1xubmV0L25mYy9kaWdpdGFsX2NvcmUuYzozNjpcdHN0cnVjdCBkaWdpdGFsX3RnX21kYWFfcGFyYW1zICptZGFhX3BhcmFtcztcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtMzctXG4tLVxubmV0L25mYy9kaWdpdGFsX2NvcmUuYz0xNTI9c3RhdGljIHZvaWQgZGlnaXRhbF93cV9jbWQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtMTU1LVx0c3RydWN0IGRpZ2l0YWxfY21kICpjbWQ7XG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jOjE1NjpcdHN0cnVjdCBkaWdpdGFsX3RnX21kYWFfcGFyYW1zICpwYXJhbXM7XG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTE1Ny1cdHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYgPSBjb250YWluZXJfb2Yod29yayxcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jPTIyNz1pbnQgZGlnaXRhbF9zZW5kX2NtZChzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB1OCBjbWRfdHlwZSxcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmM6MjI4Olx0XHQgICAgIHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBkaWdpdGFsX3RnX21kYWFfcGFyYW1zICpwYXJhbXMsXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTIyOS1cdFx0ICAgICB1MTYgdGltZW91dCwgbmZjX2RpZ2l0YWxfY21kX2NvbXBsZXRlX3QgY21kX2NiLFxuLS1cbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmM9MjU1PWludCBkaWdpdGFsX2luX2NvbmZpZ3VyZV9odyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBpbnQgdHlwZSwgaW50IHBhcmFtKVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtMjY1LVxubmV0L25mYy9kaWdpdGFsX2NvcmUuYzoyNjY6aW50IGRpZ2l0YWxfdGdfY29uZmlndXJlX2h3KHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIGludCB0eXBlLCBpbnQgcGFyYW0pXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTI2Ny17XG4tLVxubmV0L25mYy9kaWdpdGFsX2NvcmUuYy0yNzYtXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jOjI3NzpzdGF0aWMgaW50IGRpZ2l0YWxfdGdfbGlzdGVuX21kYWEoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdTggcmZfdGVjaClcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtMjc4LXtcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmM6Mjc5Olx0c3RydWN0IGRpZ2l0YWxfdGdfbWRhYV9wYXJhbXMgKnBhcmFtcztcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtMjgwLVx0aW50IHJjO1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtMjk1LVx0cmMgPSBkaWdpdGFsX3NlbmRfY21kKGRkZXYsIERJR0lUQUxfQ01EX1RHX0xJU1RFTl9NREFBLCBOVUxMLCBwYXJhbXMsXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jOjI5NjpcdFx0XHQgICAgICA1MDAsIGRpZ2l0YWxfdGdfcmVjdl9hdHJfcmVxLCBOVUxMKTtcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtMjk3LVx0aWYgKHJjKVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtMzAyLVxubmV0L25mYy9kaWdpdGFsX2NvcmUuYzozMDM6c3RhdGljIGludCBkaWdpdGFsX3RnX2xpc3Rlbl9tZChzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB1OCByZl90ZWNoKVxubmV0L25mYy9kaWdpdGFsX2NvcmUuYy0zMDQte1xubmV0L25mYy9kaWdpdGFsX2NvcmUuYy0zMDUtXHRyZXR1cm4gZGlnaXRhbF9zZW5kX2NtZChkZGV2LCBESUdJVEFMX0NNRF9UR19MSVNURU5fTUQsIE5VTEwsIE5VTEwsIDUwMCxcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmM6MzA2Olx0XHRcdFx0ZGlnaXRhbF90Z19yZWN2X21kX3JlcSwgTlVMTCk7XG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTMwNy19XG4tLVxubmV0L25mYy9kaWdpdGFsX2NvcmUuYz00NzY9c3RhdGljIGludCBkaWdpdGFsX3N0YXJ0X3BvbGwoc3RydWN0IG5mY19kZXYgKm5mY19kZXYsIF9fdTMyIGltX3Byb3RvY29scyxcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTUyOC1cdFx0XHRkaWdpdGFsX2FkZF9wb2xsX3RlY2goZGRldiwgMCxcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmM6NTI5Olx0XHRcdFx0XHQgICAgICBkaWdpdGFsX3RnX2xpc3Rlbl9tZGFhKTtcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtNTMwLVx0XHR9IGVsc2UgaWYgKGRkZXYtXHUwMDNlb3BzLVx1MDAzZXRnX2xpc3Rlbl9tZCkge1xubmV0L25mYy9kaWdpdGFsX2NvcmUuYy01MzEtXHRcdFx0ZGlnaXRhbF9hZGRfcG9sbF90ZWNoKGRkZXYsIDAsXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jOjUzMjpcdFx0XHRcdFx0ICAgICAgZGlnaXRhbF90Z19saXN0ZW5fbWQpO1xubmV0L25mYy9kaWdpdGFsX2NvcmUuYy01MzMtXHRcdH0gZWxzZSB7XG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTUzNC1cdFx0XHRkaWdpdGFsX2FkZF9wb2xsX3RlY2goZGRldiwgTkZDX0RJR0lUQUxfUkZfVEVDSF8xMDZBLFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYzo1MzU6XHRcdFx0XHRcdCAgICAgIGRpZ2l0YWxfdGdfbGlzdGVuX25mY2EpO1xubmV0L25mYy9kaWdpdGFsX2NvcmUuYy01MzYtXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTUzNy1cdFx0XHRkaWdpdGFsX2FkZF9wb2xsX3RlY2goZGRldiwgTkZDX0RJR0lUQUxfUkZfVEVDSF8yMTJGLFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYzo1Mzg6XHRcdFx0XHRcdCAgICAgIGRpZ2l0YWxfdGdfbGlzdGVuX25mY2YpO1xubmV0L25mYy9kaWdpdGFsX2NvcmUuYy01MzktXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTU0MC1cdFx0XHRkaWdpdGFsX2FkZF9wb2xsX3RlY2goZGRldiwgTkZDX0RJR0lUQUxfUkZfVEVDSF80MjRGLFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYzo1NDE6XHRcdFx0XHRcdCAgICAgIGRpZ2l0YWxfdGdfbGlzdGVuX25mY2YpO1xubmV0L25mYy9kaWdpdGFsX2NvcmUuYy01NDItXHRcdH1cbi0tXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jPTY0MT1zdGF0aWMgdm9pZCBkaWdpdGFsX2RlYWN0aXZhdGVfdGFyZ2V0KHN0cnVjdCBuZmNfZGV2ICpuZmNfZGV2LFxuLS1cbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtNjU1LVxubmV0L25mYy9kaWdpdGFsX2NvcmUuYzo2NTY6c3RhdGljIGludCBkaWdpdGFsX3RnX3NlbmQoc3RydWN0IG5mY19kZXYgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtNjU3LXtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTY1OS1cbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmM6NjYwOlx0cmV0dXJuIGRpZ2l0YWxfdGdfc2VuZF9kZXBfcmVzKGRkZXYsIHNrYik7XG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTY2MS19XG4tLVxubmV0L25mYy9kaWdpdGFsX2NvcmUuYz03NDQ9c3RhdGljIGNvbnN0IHN0cnVjdCBuZmNfb3BzIGRpZ2l0YWxfbmZjX29wcyA9IHtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTc1Mi1cdC5kZWFjdGl2YXRlX3RhcmdldCA9IGRpZ2l0YWxfZGVhY3RpdmF0ZV90YXJnZXQsXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jOjc1MzpcdC50bV9zZW5kID0gZGlnaXRhbF90Z19zZW5kLFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYy03NTQtXHQuaW1fdHJhbnNjZWl2ZSA9IGRpZ2l0YWxfaW5fc2VuZCxcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9MTA2PXN0YXRpYyB2b2lkIGRpZ2l0YWxfaW5fcmVjdl9kZXBfcmVzKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDctXHRcdFx0XHQgICAgc3RydWN0IHNrX2J1ZmYgKnJlc3ApO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwODpzdGF0aWMgdm9pZCBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB2b2lkICphcmcsXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTA5LVx0XHRcdFx0ICAgIHN0cnVjdCBza19idWZmICpyZXNwKTtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9OTA0PWludCBkaWdpdGFsX2luX3NlbmRfZGVwX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05NTAtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6OTUxOnN0YXRpYyB2b2lkIGRpZ2l0YWxfdGdfc2V0X3JmX3RlY2goc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdTggcmZfdGVjaClcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05NTIte1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05NzctXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6OTc4OnN0YXRpYyBpbnQgZGlnaXRhbF90Z19zZW5kX2FjayhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTk3OS1cdFx0XHQgICAgICAgc3RydWN0IGRpZ2l0YWxfZGF0YV9leGNoICpkYXRhX2V4Y2gpXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwMTItXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTAxMzpcdHJjID0gZGlnaXRhbF90Z19zZW5kX2NtZChkZGV2LCBza2IsIDE1MDAsIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxLFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwMTQtXHRcdFx0XHQgZGF0YV9leGNoKTtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTAyMy1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDI0OnN0YXRpYyBpbnQgZGlnaXRhbF90Z19zZW5kX2F0bihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2KVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwMjUte1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDUxLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwNTI6XHRyYyA9IGRpZ2l0YWxfdGdfc2VuZF9jbWQoZGRldiwgc2tiLCAxNTAwLCBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcSxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDUzLVx0XHRcdFx0IE5VTEwpO1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDU5LVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwNjA6c3RhdGljIGludCBkaWdpdGFsX3RnX3NlbmRfc2F2ZWRfc2tiKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYpXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTA2MS17XG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwNjgtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTA2OTpcdHJjID0gZGlnaXRhbF90Z19zZW5kX2NtZChkZGV2LCBkZGV2LVx1MDAzZXNhdmVkX3NrYiwgMTUwMCxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDcwOlx0XHRcdFx0IGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxLCBOVUxMKTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDcxLVx0aWYgKHJjKVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDc2LVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwNzc6c3RhdGljIHZvaWQgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwNzgtXHRcdFx0XHQgICAgc3RydWN0IHNrX2J1ZmYgKnJlc3ApXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTExNTYtXHRcdFx0ICogd2hpY2ggaXMgdGhlIHByZXZpb3VzIERFUF9SRVMgc2F2ZWQgaW5cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMTU3Olx0XHRcdCAqIGRpZ2l0YWxfdGdfc2VuZF9kZXBfcmVzKCkuXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTE1OC1cdFx0XHQgKi9cbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTE2MC1cdFx0XHQgIERJR0lUQUxfTkZDX0RFUF9QRkJfUE5JKGRkZXYtXHUwMDNlY3Vycl9uZmNfZGVwX3BuaSAtIDEpKSB7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTE2MTpcdFx0XHRcdHJjID0gZGlnaXRhbF90Z19zZW5kX3NhdmVkX3NrYihkZGV2KTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMTYyLVx0XHRcdFx0aWYgKHJjKVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMTg0LVx0XHRyZXNwID0gZGlnaXRhbF9yZWN2X2RlcF9kYXRhX2dhdGhlcihkZGV2LCBwZmIsIHJlc3AsXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTE4NTpcdFx0XHRcdFx0XHQgICAgZGlnaXRhbF90Z19zZW5kX2FjaywgTlVMTCk7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTE4Ni1cdFx0aWYgKElTX0VSUihyZXNwKSkge1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMjEwLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEyMTE6XHRcdFx0cmMgPSBkaWdpdGFsX3RnX3NlbmRfc2F2ZWRfc2tiKGRkZXYpO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEyMTItXHRcdFx0aWYgKHJjKVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMjMwLVx0XHRcdFx0XHRcdGRkZXYtXHUwMDNlY3Vycl9uZmNfZGVwX3BuaSkge1xubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEyMzE6XHRcdFx0XHRyYyA9IGRpZ2l0YWxfdGdfc2VuZF9zYXZlZF9za2IoZGRldik7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTIzMi1cdFx0XHRcdGlmIChyYylcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTI1NC1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMjU1Olx0XHRyYyA9IGRpZ2l0YWxfdGdfc2VuZF9kZXBfcmVzKGRkZXYsIGRkZXYtXHUwMDNlY2hhaW5pbmdfc2tiKTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMjU2LVx0XHRpZiAocmMpXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEyNjUtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTI2NjpcdFx0cmMgPSBkaWdpdGFsX3RnX3NlbmRfYXRuKGRkZXYpO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEyNjctXHRcdGlmIChyYylcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTI5Ni1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMjk3OmludCBkaWdpdGFsX3RnX3NlbmRfZGVwX3JlcyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEyOTgte1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzMxLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEzMzI6XHRyYyA9IGRpZ2l0YWxfdGdfc2VuZF9jbWQoZGRldiwgdG1wX3NrYiwgMTUwMCwgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEsXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTMzMy1cdFx0XHRcdCBOVUxMKTtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTM0Ny1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMzQ4OnN0YXRpYyB2b2lkIGRpZ2l0YWxfdGdfc2VuZF9wc2xfcmVzX2NvbXBsZXRlKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTM0OS1cdFx0XHRcdFx0ICAgICB2b2lkICphcmcsIHN0cnVjdCBza19idWZmICpyZXNwKVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzU1LVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEzNTY6XHRkaWdpdGFsX3RnX3NldF9yZl90ZWNoKGRkZXYsIHJmX3RlY2gpO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEzNTctXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTM1ODpcdGRpZ2l0YWxfdGdfY29uZmlndXJlX2h3KGRkZXYsIE5GQ19ESUdJVEFMX0NPTkZJR19SRl9URUNILCByZl90ZWNoKTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzU5LVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEzNjA6XHRkaWdpdGFsX3RnX2xpc3RlbihkZGV2LCAxNTAwLCBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcSwgTlVMTCk7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTM2MS1cbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTM2NC1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMzY1OnN0YXRpYyBpbnQgZGlnaXRhbF90Z19zZW5kX3BzbF9yZXMoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdTggZGlkLFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEzNjYtXHRcdFx0XHQgICB1OCByZl90ZWNoKVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzg5LVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEzOTA6XHRyYyA9IGRpZ2l0YWxfdGdfc2VuZF9jbWQoZGRldiwgc2tiLCAwLCBkaWdpdGFsX3RnX3NlbmRfcHNsX3Jlc19jb21wbGV0ZSxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzkxLVx0XHRcdFx0ICh2b2lkICopKHVuc2lnbmVkIGxvbmcpcmZfdGVjaCk7XG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEzOTctXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTM5ODpzdGF0aWMgdm9pZCBkaWdpdGFsX3RnX3JlY3ZfcHNsX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB2b2lkICphcmcsXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTM5OS1cdFx0XHRcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqcmVzcClcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTQ2MC1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxNDYxOlx0cmMgPSBkaWdpdGFsX3RnX3NlbmRfcHNsX3JlcyhkZGV2LCBwc2xfcmVxLVx1MDAzZWRpZCwgcmZfdGVjaCk7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTQ2Mi1cbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTQ2Ni1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxNDY3OnN0YXRpYyB2b2lkIGRpZ2l0YWxfdGdfc2VuZF9hdHJfcmVzX2NvbXBsZXRlKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTQ2OC1cdFx0XHRcdFx0ICAgICB2b2lkICphcmcsIHN0cnVjdCBza19idWZmICpyZXNwKVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xNDgzLVx0aWYgKHJlc3AtXHUwMDNlZGF0YVtvZmZzZXRdID09IERJR0lUQUxfQ01EX1BTTF9SRVEpXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTQ4NDpcdFx0ZGlnaXRhbF90Z19yZWN2X3BzbF9yZXEoZGRldiwgYXJnLCByZXNwKTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xNDg1LVx0ZWxzZVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjE0ODY6XHRcdGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxKGRkZXYsIGFyZywgcmVzcCk7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTQ4Ny19XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTQ4OC1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxNDg5OnN0YXRpYyBpbnQgZGlnaXRhbF90Z19zZW5kX2F0cl9yZXMoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xNDkwLVx0XHRcdFx0ICAgc3RydWN0IGRpZ2l0YWxfYXRyX3JlcSAqYXRyX3JlcSlcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTUzMi1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxNTMzOlx0cmMgPSBkaWdpdGFsX3RnX3NlbmRfY21kKGRkZXYsIHNrYiwgOTk5LFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjE1MzQ6XHRcdFx0XHQgZGlnaXRhbF90Z19zZW5kX2F0cl9yZXNfY29tcGxldGUsIE5VTEwpO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTE1MzUtXHRpZiAocmMpXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTE1NDAtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTU0MTp2b2lkIGRpZ2l0YWxfdGdfcmVjdl9hdHJfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xNTQyLVx0XHRcdCAgICAgc3RydWN0IHNrX2J1ZmYgKnJlc3ApXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTE1NjEtXHRcdG1pbl9zaXplID0gRElHSVRBTF9BVFJfUkVRX01JTl9TSVpFICYjNDM7IDI7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTU2MjpcdFx0ZGlnaXRhbF90Z19zZXRfcmZfdGVjaChkZGV2LCBORkNfRElHSVRBTF9SRl9URUNIXzEwNkEpO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTE1NjMtXHR9IGVsc2Uge1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTE1NjQtXHRcdG1pbl9zaXplID0gRElHSVRBTF9BVFJfUkVRX01JTl9TSVpFICYjNDM7IDE7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTU2NTpcdFx0ZGlnaXRhbF90Z19zZXRfcmZfdGVjaChkZGV2LCBORkNfRElHSVRBTF9SRl9URUNIXzIxMkYpO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTE1NjYtXHR9XG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTE2MDUtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTYwNjpcdHJjID0gZGlnaXRhbF90Z19jb25maWd1cmVfaHcoZGRldiwgTkZDX0RJR0lUQUxfQ09ORklHX0ZSQU1JTkcsXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTYwNy1cdFx0XHRcdCAgICAgTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNfREVQX0FDVElWQVRFRCk7XG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTE2MTAtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTYxMTpcdHJjID0gZGlnaXRhbF90Z19zZW5kX2F0cl9yZXMoZGRldiwgYXRyX3JlcSk7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTYxMi1cdGlmIChyYylcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jPTg5NT1pbnQgZGlnaXRhbF9pbl9zZW5kX2lzbzE1NjkzX2ludl9yZXEoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdTggcmZfdGVjaClcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTkzNC1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6OTM1OnN0YXRpYyBpbnQgZGlnaXRhbF90Z19zZW5kX3NlbF9yZXMoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldilcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtOTM2LXtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTk0OC1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6OTQ5Olx0cmMgPSBkaWdpdGFsX3RnX2NvbmZpZ3VyZV9odyhkZGV2LCBORkNfRElHSVRBTF9DT05GSUdfRlJBTUlORyxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtOTUwLVx0XHRcdFx0ICAgICBORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfQU5USUNPTF9DT01QTEVURSk7XG4tLVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy05NTUtXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjk1NjpcdHJjID0gZGlnaXRhbF90Z19zZW5kX2NtZChkZGV2LCBza2IsIDMwMCwgZGlnaXRhbF90Z19yZWN2X2F0cl9yZXEsXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTk1Ny1cdFx0XHRcdCBOVUxMKTtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTk2My1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6OTY0OnN0YXRpYyB2b2lkIGRpZ2l0YWxfdGdfcmVjdl9zZWxfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtOTY1LVx0XHRcdFx0ICAgIHN0cnVjdCBza19idWZmICpyZXNwKVxuLS1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtOTg0LVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzo5ODU6XHRyYyA9IGRpZ2l0YWxfdGdfc2VuZF9zZWxfcmVzKGRkZXYpO1xubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy05ODYtXG4tLVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy05OTMtXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjk5NDpzdGF0aWMgaW50IGRpZ2l0YWxfdGdfc2VuZF9zZGRfcmVzKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYpXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTk5NS17XG4tLVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMDEzLVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMDE0Olx0cmMgPSBkaWdpdGFsX3RnX2NvbmZpZ3VyZV9odyhkZGV2LCBORkNfRElHSVRBTF9DT05GSUdfRlJBTUlORyxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTAxNS1cdFx0XHRcdE5GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQV9TVEFOREFSRF9XSVRIX0NSQ19BKTtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEwMjAtXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjEwMjE6XHRyYyA9IGRpZ2l0YWxfdGdfc2VuZF9jbWQoZGRldiwgc2tiLCAzMDAsIGRpZ2l0YWxfdGdfcmVjdl9zZWxfcmVxLFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMDIyLVx0XHRcdFx0IE5VTEwpO1xuLS1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTAyOC1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTAyOTpzdGF0aWMgdm9pZCBkaWdpdGFsX3RnX3JlY3Zfc2RkX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB2b2lkICphcmcsXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEwMzAtXHRcdFx0XHQgICAgc3RydWN0IHNrX2J1ZmYgKnJlc3ApXG4tLVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMDQ4LVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMDQ5Olx0cmMgPSBkaWdpdGFsX3RnX3NlbmRfc2RkX3JlcyhkZGV2KTtcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTA1MC1cbi0tXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEwNTctXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjEwNTg6c3RhdGljIGludCBkaWdpdGFsX3RnX3NlbmRfc2Vuc19yZXMoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldilcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTA1OS17XG4tLVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMDcyLVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMDczOlx0cmMgPSBkaWdpdGFsX3RnX2NvbmZpZ3VyZV9odyhkZGV2LCBORkNfRElHSVRBTF9DT05GSUdfRlJBTUlORyxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTA3NC1cdFx0XHRcdCAgICAgTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX1NUQU5EQVJEKTtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEwNzktXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjEwODA6XHRyYyA9IGRpZ2l0YWxfdGdfc2VuZF9jbWQoZGRldiwgc2tiLCAzMDAsIGRpZ2l0YWxfdGdfcmVjdl9zZGRfcmVxLFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMDgxLVx0XHRcdFx0IE5VTEwpO1xuLS1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTA4Ny1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTA4ODp2b2lkIGRpZ2l0YWxfdGdfcmVjdl9zZW5zX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB2b2lkICphcmcsXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEwODktXHRcdFx0ICAgICAgc3RydWN0IHNrX2J1ZmYgKnJlc3ApXG4tLVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMTA3LVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMTA4Olx0cmMgPSBkaWdpdGFsX3RnX3NlbmRfc2Vuc19yZXMoZGRldik7XG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTExMDktXG4tLVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMTE2LVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMTE3OnN0YXRpYyB2b2lkIGRpZ2l0YWxfdGdfcmVjdl9hdHJfb3Jfc2Vuc2ZfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTExMTgtXHRcdHZvaWQgKmFyZywgc3RydWN0IHNrX2J1ZmYgKnJlc3ApXG4tLVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMTIxLVx0XHRcdChyZXNwLVx1MDAzZWRhdGFbMV0gPT0gRElHSVRBTF9DTURfU0VOU0ZfUkVRKSlcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTEyMjpcdFx0ZGlnaXRhbF90Z19yZWN2X3NlbnNmX3JlcShkZGV2LCBhcmcsIHJlc3ApO1xubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMTIzLVx0ZWxzZVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMTI0Olx0XHRkaWdpdGFsX3RnX3JlY3ZfYXRyX3JlcShkZGV2LCBhcmcsIHJlc3ApO1xubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMTI1LVxuLS1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTEyOC1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTEyOTpzdGF0aWMgaW50IGRpZ2l0YWxfdGdfc2VuZF9zZW5zZl9yZXMoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTEzMC1cdFx0XHQgICAgICBzdHJ1Y3QgZGlnaXRhbF9zZW5zZl9yZXEgKnNlbnNmX3JlcSlcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTExNzItXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjExNzM6XHRyYyA9IGRpZ2l0YWxfdGdfc2VuZF9jbWQoZGRldiwgc2tiLCAzMDAsXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjExNzQ6XHRcdFx0XHQgZGlnaXRhbF90Z19yZWN2X2F0cl9vcl9zZW5zZl9yZXEsIE5VTEwpO1xubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMTc1LVx0aWYgKHJjKVxuLS1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTE4MC1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTE4MTp2b2lkIGRpZ2l0YWxfdGdfcmVjdl9zZW5zZl9yZXEoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMTgyLVx0XHRcdCAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqcmVzcClcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyMTMtXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjEyMTQ6XHRyYyA9IGRpZ2l0YWxfdGdfc2VuZF9zZW5zZl9yZXMoZGRldiwgc2Vuc2ZfcmVxKTtcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTIxNS1cbi0tXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyMjItXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjEyMjM6c3RhdGljIGludCBkaWdpdGFsX3RnX2NvbmZpZ19uZmNhKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYpXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyMjQte1xuLS1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTIyNi1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTIyNzpcdHJjID0gZGlnaXRhbF90Z19jb25maWd1cmVfaHcoZGRldiwgTkZDX0RJR0lUQUxfQ09ORklHX1JGX1RFQ0gsXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyMjgtXHRcdFx0XHQgICAgIE5GQ19ESUdJVEFMX1JGX1RFQ0hfMTA2QSk7XG4tLVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjMxLVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMjMyOlx0cmV0dXJuIGRpZ2l0YWxfdGdfY29uZmlndXJlX2h3KGRkZXYsIE5GQ19ESUdJVEFMX0NPTkZJR19GUkFNSU5HLFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjMzLVx0XHRcdFx0ICAgICAgIE5GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQV9ORkNfREVQKTtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyMzUtXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjEyMzY6aW50IGRpZ2l0YWxfdGdfbGlzdGVuX25mY2Eoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdTggcmZfdGVjaClcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTIzNy17XG4tLVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjM5LVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMjQwOlx0cmMgPSBkaWdpdGFsX3RnX2NvbmZpZ19uZmNhKGRkZXYpO1xubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjQxLVx0aWYgKHJjKVxuLS1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTI0My1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTI0NDpcdHJldHVybiBkaWdpdGFsX3RnX2xpc3RlbihkZGV2LCAzMDAsIGRpZ2l0YWxfdGdfcmVjdl9zZW5zX3JlcSwgTlVMTCk7XG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyNDUtfVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjQ2LVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMjQ3OnN0YXRpYyBpbnQgZGlnaXRhbF90Z19jb25maWdfbmZjZihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB1OCByZl90ZWNoKVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjQ4LXtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyNTAtXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjEyNTE6XHRyYyA9IGRpZ2l0YWxfdGdfY29uZmlndXJlX2h3KGRkZXYsIE5GQ19ESUdJVEFMX0NPTkZJR19SRl9URUNILCByZl90ZWNoKTtcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTI1Mi1cdGlmIChyYylcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyNTQtXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjEyNTU6XHRyZXR1cm4gZGlnaXRhbF90Z19jb25maWd1cmVfaHcoZGRldiwgTkZDX0RJR0lUQUxfQ09ORklHX0ZSQU1JTkcsXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyNTYtXHRcdFx0XHQgICAgICAgTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNGX05GQ19ERVApO1xuLS1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTI1OC1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTI1OTppbnQgZGlnaXRhbF90Z19saXN0ZW5fbmZjZihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB1OCByZl90ZWNoKVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjYwLXtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyNjItXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjEyNjM6XHRyYyA9IGRpZ2l0YWxfdGdfY29uZmlnX25mY2YoZGRldiwgcmZfdGVjaCk7XG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyNjQtXHRpZiAocmMpXG4tLVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjY2LVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMjY3Olx0cmV0dXJuIGRpZ2l0YWxfdGdfbGlzdGVuKGRkZXYsIDMwMCwgZGlnaXRhbF90Z19yZWN2X3NlbnNmX3JlcSwgTlVMTCk7XG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyNjgtfVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjY5LVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMjcwOnZvaWQgZGlnaXRhbF90Z19yZWN2X21kX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB2b2lkICphcmcsXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyNzEtXHRcdFx0ICAgIHN0cnVjdCBza19idWZmICpyZXNwKVxuLS1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTI4Ni1cdGNhc2UgTkZDX0RJR0lUQUxfUkZfVEVDSF8xMDZBOlxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMjg3Olx0XHRyYyA9IGRpZ2l0YWxfdGdfY29uZmlnX25mY2EoZGRldik7XG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyODgtXHRcdGlmIChyYylcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTI4OS1cdFx0XHRnb3RvIGV4aXRfZnJlZV9za2I7XG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjEyOTA6XHRcdGRpZ2l0YWxfdGdfcmVjdl9zZW5zX3JlcShkZGV2LCBhcmcsIHJlc3ApO1xubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjkxLVx0XHRicmVhaztcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyOTMtXHRjYXNlIE5GQ19ESUdJVEFMX1JGX1RFQ0hfNDI0Rjpcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTI5NDpcdFx0cmMgPSBkaWdpdGFsX3RnX2NvbmZpZ19uZmNmKGRkZXYsIHJmX3RlY2gpO1xubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjk1LVx0XHRpZiAocmMpXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyOTYtXHRcdFx0Z290byBleGl0X2ZyZWVfc2tiO1xubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMjk3Olx0XHRkaWdpdGFsX3RnX3JlY3Zfc2Vuc2ZfcmVxKGRkZXYsIGFyZywgcmVzcCk7XG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyOTgtXHRcdGJyZWFrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMiAxMzoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0Nzg2MgoJCQkJCQkJb3V0cHV0OiAxOTQKCQkJCQkJCXRob3VnaHRzOiAyMDU0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIE5GQyBEaWdpdGFsIFRhcmdldCBNb2RlIEZ1bmN0aW9uYWxpdHkgZm9yIEZ1enppbmcqKgoKT2theSwgc28gSSBuZWVkIHRvIHN1bW1hcml6ZSB0aGlzIHBhdGNoJiMzOTtzIGltcGxpY2F0aW9ucyBmb3IgZnV6emluZywgZm9jdXNpbmcgb24gaG93IHRoZSBjb2RlIG1vZGlmaWNhdGlvbiBpbXBhY3RzIHJlYWNoYWJsZSBhbmQgdGVzdGFibGUgY29kZSBwYXRocy4gRmlyc3QsIEkgc2VlIHRoYXQgYGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxYCBpcyB0aGUga2V5IGZ1bmN0aW9uIGhlcmUuIEl0JiMzOTtzICpzdGF0aWMgdm9pZCogaW4gYG5ldC9uZmMvZGlnaXRhbF9kZXAuY2AsIHdoaWNoIGluaXRpYWxseSBtYWRlIG1lIHBhdXNlIGJlY2F1c2Ugc3RhdGljIGZ1bmN0aW9ucyBjYW4gc29tZXRpbWVzIGJlIHRyaWNreSBmb3Igc3ltYm9sIGNvdmVyYWdlLCBidXQgaW4gdGhpcyBjYXNlLCBpdCAqaXMqIGEgc3RhdGljIGZ1bmN0aW9uIHdpdGhpbiBhIGAuY2AgZmlsZSwgKmFuZCogaXRzIGFkZHJlc3MgaXMgdGFrZW4sIHNwZWNpZmljYWxseSBhcyBhIGNhbGxiYWNrOiBgZGlnaXRhbF90Z19zZW5kX2NtZCguLi4sIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxLCAuLi4pYC4gVGhpcyBpcyBpbXBvcnRhbnQuIEJlY2F1c2UgdGhlIGFkZHJlc3MgaXMgdGFrZW4sIHRoZSBjb21waWxlciAqbXVzdCogZ2VuZXJhdGUgYSBkaXN0aW5jdCBzeW1ib2wgZm9yIHRoaXMgZnVuY3Rpb24sIGVuc3VyaW5nIGl0JiMzOTtzIGFkZHJlc3NhYmxlLgoKTG9va2luZyBkZWVwZXIsIEkgaWRlbnRpZmllZCBvdGhlciByZWxhdGVkIGZ1bmN0aW9uczogYGRpZ2l0YWxfdGdfc2VuZF9kZXBfcmVzYCAoZXhwb3J0ZWQpIGFuZCBgZGlnaXRhbF90Z19yZWN2X2F0cl9yZXFgIChub24tc3RhdGljKSBhcmUgYWxzbyByZWxldmFudC4gYGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxYCBpcyB0aGUgZGlyZWN0IHRhcmdldCBvZiB0aGUgcGF0Y2gsIGFuZCB0aG9zZSBhcmUgZW50cnkgcG9pbnRzIHRoYXQgbGVhZCB0byBpdC4KCkkgdGhlbiBjb25zaWRlcmVkIHJlYWNoYWJpbGl0eS4gQ3J1Y2lhbGx5LCB0aGlzIGlzbiYjMzk7dCBqdXN0IHRoZW9yZXRpY2FsIGNvZGUuIFRoZSBORkMgc3RhY2sgaXMgYWNjZXNzaWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIGBuZmNzaW1gICh0aGUgc29mdHdhcmUgc2ltdWxhdG9yIGRyaXZlcikgcHJvdmlkZXMgYSB2aXJ0dWFsIE5GQyBkZXZpY2UgdGhhdCBjYW4gcmVhY2ggdGhpcyBjb2RlLCBhcyBkb2VzIGBwb3J0MTAwYCAoZW11bGF0ZWQgVVNCIGRldmljZSkgdmlhIHN5emthbGxlciwgd2hpY2ggaXMgc3RhbmRhcmQgZm9yIGZ1enppbmcgcmF3IFVTQiBnYWRnZXQgdHJhZmZpYy4gVGhpcyBjb2RlIGFsc28gdG91Y2hlcyB0aGUgbmV0d29yaywgZHJpdmVyIGNvZGUsIGFuZCBzbyBpcyBleGVjdXRhYmxlLiBJdCYjMzk7cyBub3QgdW5yZWFjaGFibGUgaGFyZHdhcmUgb3IgYSB0ZWFyZG93biBjYWxsYmFjay4gU28sIHllcywgdGhlIGNyaXRlcmlhIGZvciAmIzM0O1dvcnRoRnV6emluZyYjMzQ7IGFyZSBtZXQuCgpSZWdhcmRpbmcgYnVpbGQgY29uZmlndXJhdGlvbnMsIHRvIGJ1aWxkIGFuZCBydW4gdGhpcyBjb2RlLCBJJiMzOTtkIG5lZWQ6IGBORkNgLCBgTkZDX0RJR0lUQUxgLCBgTkZDX1NJTWAsIGFuZCBgTkZDX1BPUlQxMDBgLiBBbmQgYmVjYXVzZSBMTENQIGlzIGNvbXBpbGVkIGludG8gYG5mYy5vYCBpZiBDT05GSUdfTkZDIGlzIGVuYWJsZWQsIGl0IHNob3VsZCBhbHNvIGJlIGZ1enphYmxlLCBnaXZlbiBpdHMgcmVsYXRpb24gdG8gTkZDLgoKTm93LCBhcyBmb3Igd2hhdCBpcyBiZWluZyBhbHRlcmVkLCBpdCYjMzk7cyBhIGNyaXRpY2FsIGNoZWNrIGluIHRoZSBERVAgcmVxdWVzdCBoYW5kbGVyIHdpdGhpbiBgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXFgLiBUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyByZWFkIHdoZW4gcHJvY2Vzc2luZyBERVAgcmVxdWVzdHMgd2l0aCBhIERJRCAoRGV2aWNlIElkZW50aWZpZXIpLiBCZWZvcmUgdGhlIHBhdGNoLCBhIGJ1ZmZlciBhY2Nlc3Mgd2FzIGRvbmUgd2l0aG91dCBwcm9wZXIgbGVuZ3RoIGNoZWNraW5nLiBUaGUgcGF0Y2ggYWRkcyBgcmVzcC0mZ3Q7bGVuICZsdDsgc2l6ZSAmIzQzOyAxYCwgdmFsaWRhdGVzIGBkZGV2LSZndDtkaWRgLCBhbmQgaW5kZXhlcyB3aXRoIGByZXNwLSZndDtkYXRhW3NpemVdYCB0byBlbnN1cmUgdGhhdCB0aGUgcmVhZCBzdGF5cyB3aXRoaW4gYnVmZmVyIGJvdW5kcy4gRnV6emluZyB0aGlzIHdpbGwgYmUgY3J1Y2lhbCB0byB2ZXJpZnkgY29ycmVjdCBwYXJzaW5nIG9mIERFUCBmcmFtZXMsIGVzcGVjaWFsbHkgdGhvc2Ugd2l0aCBESUQgYW5kIGVkZ2UtY2FzZSBsZW5ndGhzLCBlbnN1cmluZyB0aGF0IHRoZSBwYXRjaCBwcmV2ZW50cyByZWdyZXNzaW9ucyBhbmQgcG90ZW50aWFsIHN0YXRlIGNvcnJ1cHRpb24gZHVlIHRvIG91dC1vZi1ib3VuZHMgcmVhZHMuIFRoZSBhZGRlZCBjaGVja3MgYXJlIGEgcGVyZmVjdCBvcHBvcnR1bml0eSBmb3IgZnV6emluZy4KCk15IHByaW1hcnkgZm9jdXMgc3ltYm9scyBmb3IgZnV6emluZyB3aWxsIGJlOiBgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXFgLCB3aGljaCBpcyAqdGhlKiBtb2RpZmllZCBmdW5jdGlvbi4gQnV0IGFsc28gaW5jbHVkaW5nIGBkaWdpdGFsX3RnX3NlbmRfZGVwX3Jlc2AgYW5kIGBkaWdpdGFsX3RnX3JlY3ZfYXRyX3JlcWAgaXMgaW1wb3J0YW50IHNpbmNlIHRoZXkgcHJvdmlkZSBlbnRyeXBvaW50cyBhbmQgcmVsYXRlZCBmdW5jdGlvbnMuCgpGaW5hbGx5LCBJJiMzOTt2ZSBjb25maXJtZWQgdGhhdCB0aGUgJiMzOTtXb3J0aEZ1enppbmcmIzM5OyBkZWNpc2lvbiBpcyBzb3VuZCwgdGhlIGV4cGxhbmF0aW9uIGlzIGNvbmNpc2UsIHRoZSBmb2N1cyBzeW1ib2xzIGFyZSBzcGVjaWZpYywgYW5kIHRoZSBjb25maWd1cmF0aW9ucyBhcmUgY2xlYXJseSBsaXN0ZWQuIEkgY2FuIG5vdyBwcm9jZWVkIHRvIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEyIDEzOjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORkMmIzM0OywKICAgICYjMzQ7TkZDX0RJR0lUQUwmIzM0OywKICAgICYjMzQ7TkZDX1NJTSYjMzQ7LAogICAgJiMzNDtORkNfUE9SVDEwMCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxJiMzNDssCiAgICAmIzM0O2RpZ2l0YWxfdGdfc2VuZF9kZXBfcmVzJiMzNDssCiAgICAmIzM0O2RpZ2l0YWxfdGdfcmVjdl9hdHJfcmVxJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGlucHV0IHZhbGlkYXRpb24gaW4gdGhlIE5GQyBkaWdpdGFsIHRhcmdldCBtb2RlIERFUCByZXF1ZXN0IGhhbmRsaW5nIChkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcSkgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIGFjY2VzcyB3aGVuIHRoZSBESUQgYml0IGlzIHNldCBieSB2ZXJpZnlpbmcgZnJhbWUgbGVuZ3RoIGFnYWluc3QgZXhwZWN0ZWQgc2l6ZSBhbmQgY29ycmVjdGx5IGluZGV4aW5nIHJlc3AtXHUwMDNlZGF0YS4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgdmlydHVhbCBORkMgZHJpdmVycyAoZS5nLiBuZmNzaW0pIGFuZCBlbXVsYXRlZCBVU0IgTkZDIGRvbmdsZXMgKHBvcnQxMDApLCBtYWtpbmcgaXQgd29ydGggZnV6emluZyBmb3IgYm91bmRhcnkgaXNzdWVzIGFuZCBzdGF0ZSB0cmFuc2l0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkZDJiMzNDssCiAgICAmIzM0O05GQ19ESUdJVEFMJiMzNDssCiAgICAmIzM0O05GQ19TSU0mIzM0OywKICAgICYjMzQ7TkZDX1BPUlQxMDAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcSYjMzQ7LAogICAgJiMzNDtkaWdpdGFsX3RnX3NlbmRfZGVwX3JlcyYjMzQ7LAogICAgJiMzNDtkaWdpdGFsX3RnX3JlY3ZfYXRyX3JlcSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBpbnB1dCB2YWxpZGF0aW9uIGluIHRoZSBORkMgZGlnaXRhbCB0YXJnZXQgbW9kZSBERVAgcmVxdWVzdCBoYW5kbGluZyAoZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEpIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyBhY2Nlc3Mgd2hlbiB0aGUgRElEIGJpdCBpcyBzZXQgYnkgdmVyaWZ5aW5nIGZyYW1lIGxlbmd0aCBhZ2FpbnN0IGV4cGVjdGVkIHNpemUgYW5kIGNvcnJlY3RseSBpbmRleGluZyByZXNwLVx1MDAzZWRhdGEuIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIHZpcnR1YWwgTkZDIGRyaXZlcnMgKGUuZy4gbmZjc2ltKSBhbmQgZW11bGF0ZWQgVVNCIE5GQyBkb25nbGVzIChwb3J0MTAwKSwgbWFraW5nIGl0IHdvcnRoIGZ1enppbmcgZm9yIGJvdW5kYXJ5IGlzc3VlcyBhbmQgc3RhdGUgdHJhbnNpdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEyIDEzOjI1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTIgMTM6MjU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIHJlYWQgaW4gYGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxKClgIHdoZXJlIGByZXNwLVx1MDAzZWRhdGFbM11gIHdhcyByZWFkIHdpdGhvdXQgZmlyc3QgdmVyaWZ5aW5nIHRoYXQgYHJlc3AtXHUwMDNlbGVuYCB3YXMgYXQgbGVhc3QgYHNpemUgJiM0MzsgMWAgKDQgYnl0ZXMpLiBcblxuVGhpcyBpcyBhIGJvdW5kcy1jaGVja2luZyBpc3N1ZTogYWNjZXNzaW5nIGJ5dGVzIGJleW9uZCBgcmVzcC1cdTAwM2VsZW5gIGlzIGFuIG91dC1vZi1ib3VuZHMgYWNjZXNzIGRpcmVjdGx5IGRldGVjdGFibGUgYnkgS0FTQU4gKGUuZy4sIHNsYWItb3V0LW9mLWJvdW5kcyBvbiBza2IgZGF0YSkuIFRoZSBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIGFueSB1bmluaXRpYWxpemVkIHN0YWNrIG9yIGhlYXAgdmFyaWFibGVzLCBkb2VzIG5vdCBleHBvc2UgdW5pbml0aWFsaXplZCBwYWRkaW5nIG9yIHN0cnVjdCBmaWVsZHMgdG8gdXNlciBzcGFjZSwgYW5kIGRvZXMgbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBiYXNlZCBvbiB1bmluaXRpYWxpemVkIG1lbW9yeS4gQmVjYXVzZSBzdGFuZGFyZCBLQVNBTiBmdWxseSBjb3ZlcnMgdGhpcyBjbGFzcyBvZiBidWdzIGFuZCBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBhcmUgaW50cm9kdWNlZCwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAxMDIwZjI2OWU4NTU2NjcxNDBiYzA0ZjgzYTk2ODQ5OTA5YWY3NWRkCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBTZXAgMTIgMTM6MjM6MzAgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvbmZjL2RpZ2l0YWxfZGVwLmMgYi9uZXQvbmZjL2RpZ2l0YWxfZGVwLmMKaW5kZXggMzk4MmZhMDg0NzM3Zi4uYWU1NDA3ZmNhMTJkNCAxMDA2NDQKLS0tIGEvbmV0L25mYy9kaWdpdGFsX2RlcC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZmMvZGlnaXRhbF9kZXAuYwpAQCAtMTExNywxMiAmIzQzOzExMTcsMTIgQEAgc3RhdGljIHZvaWQgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLAogCXBmYiA9IGRlcF9yZXEtJmd0O3BmYjsKIAogCWlmIChESUdJVEFMX05GQ19ERVBfRElEX0JJVF9TRVQocGZiKSkgewotCQlpZiAoZGRldi0mZ3Q7ZGlkICZhbXA7JmFtcDsgKGRkZXYtJmd0O2RpZCA9PSByZXNwLSZndDtkYXRhWzNdKSkgewotCQkJc2l6ZSYjNDM7JiM0Mzs7Ci0JCX0gZWxzZSB7CiYjNDM7CQlpZiAocmVzcC0mZ3Q7bGVuICZsdDsgc2l6ZSAmIzQzOyAxIHx8ICFkZGV2LSZndDtkaWQgfHwKJiM0MzsJCSAgICBkZGV2LSZndDtkaWQgIT0gcmVzcC0mZ3Q7ZGF0YVtzaXplXSkgewogCQkJcmMgPSAtRUlPOwogCQkJZ290byBleGl0OwogCQl9CiYjNDM7CQlzaXplJiM0MzsmIzQzOzsKIAl9IGVsc2UgaWYgKGRkZXYtJmd0O2RpZCkgewogCQlyYyA9IC1FSU87CiAJCWdvdG8gZXhpdDsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEyIDEzOjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNzEKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxODQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBORkMgRGlnaXRhbCBERVAgQ29kZSBmb3IgRnV6emluZyBTdHJhdGVneSoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgcmlnaHQgZnV6emluZyBhcHByb2FjaCBmb3IgdGhpcyBwYXRjaCB0byBgbmV0L25mYy9kaWdpdGFsX2RlcC5jYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGFzc2VzcyB3aGV0aGVyIEkgbmVlZCB0aGUgaGVhdmllciBoYW1tZXIgb2YgS01TQU4gb3IgaWYgc3RhbmRhcmQgS0FTQU4gd2lsbCBkbyB0aGUgam9iLiBUaGlzIHNlZW1zIGxpa2UgYSBzdHJhaWdodGZvcndhcmQgYW5hbHlzaXMsIGEgZGUtZnJhbWluZyB0YXNrIHJlYWxseSwganVzdCBkZXRlcm1pbmluZyB0aGUgYXBwcm9wcmlhdGUgc2FuaXRpemVyIGNvbmZpZ3VyYXRpb24uIE5vIHJlZCBmbGFncyBoZXJlIOKAkyBJJiMzOTttIG5vdCBkZWFsaW5nIHdpdGggbWFsd2FyZSBnZW5lcmF0aW9uIG9yIGV4cGxvaXQgYW5hbHlzaXMsIHB1cmVseSBjb2RlIHJldmlldy4gVGhpcyBpcyBhIGJlbmlnbiwgZGVmZW5zaXZlIFFBIHRhc2suIEdvb2QsIHNhZmUgdG8gcHJvY2VlZC4KCkZpcnN0IHN0ZXAgaXMgdG8gZGlnIGludG8gdGhlIGNvZGUgaXRzZWxmLiBJJiMzOTtsbCBuZWVkIHRvIGluc3BlY3QgYG5ldC9uZmMvZGlnaXRhbF9kZXAuY2AgZGlyZWN0bHksIHByb2JhYmx5IHVzaW5nIGByZWFkLWZpbGVgIG9yIGBncmVwcGVyYCB0byBnZXQgYXQgYGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxYC4gSSBuZWVkIGEgY2xlYXIgdW5kZXJzdGFuZGluZyBvZiB3aGF0IHRoYXQgZnVuY3Rpb24gZG9lcyB0byBpbmZvcm0gbXkgZGVjaXNpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEyIDEzOjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L25mYy9kaWdpdGFsX2RlcC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTEwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxMTAwOlx0XHRcdGdvdG8gZXhpdDtcbjExMDE6XHRcdH1cbjExMDI6XHRcbjExMDM6XHRcdGlmIChyZXNwLVx1MDAzZWxlbiBcdTAwM2UgZGRldi1cdTAwM2Vsb2NhbF9wYXlsb2FkX21heCkge1xuMTEwNDpcdFx0XHRyYyA9IC1FTVNHU0laRTtcbjExMDU6XHRcdFx0Z290byBleGl0O1xuMTEwNjpcdFx0fVxuMTEwNzpcdFxuMTEwODpcdFx0c2l6ZSA9IHNpemVvZihzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3Jlcyk7XG4xMTA5Olx0XHRkZXBfcmVxID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopcmVzcC1cdTAwM2VkYXRhO1xuMTExMDpcdFxuMTExMTpcdFx0aWYgKHJlc3AtXHUwMDNlbGVuIFx1MDAzYyBzaXplIHx8IGRlcF9yZXEtXHUwMDNlZGlyICE9IERJR0lUQUxfTkZDX0RFUF9GUkFNRV9ESVJfT1VUIHx8XG4xMTEyOlx0XHQgICAgZGVwX3JlcS1cdTAwM2VjbWQgIT0gRElHSVRBTF9DTURfREVQX1JFUSkge1xuMTExMzpcdFx0XHRyYyA9IC1FSU87XG4xMTE0Olx0XHRcdGdvdG8gZXhpdDtcbjExMTU6XHRcdH1cbjExMTY6XHRcbjExMTc6XHRcdHBmYiA9IGRlcF9yZXEtXHUwMDNlcGZiO1xuMTExODpcdFxuMTExOTpcdFx0aWYgKERJR0lUQUxfTkZDX0RFUF9ESURfQklUX1NFVChwZmIpKSB7XG4xMTIwOlx0XHRcdGlmIChyZXNwLVx1MDAzZWxlbiBcdTAwM2Mgc2l6ZSAmIzQzOyAxIHx8ICFkZGV2LVx1MDAzZWRpZCB8fFxuMTEyMTpcdFx0XHQgICAgZGRldi1cdTAwM2VkaWQgIT0gcmVzcC1cdTAwM2VkYXRhW3NpemVdKSB7XG4xMTIyOlx0XHRcdFx0cmMgPSAtRUlPO1xuMTEyMzpcdFx0XHRcdGdvdG8gZXhpdDtcbjExMjQ6XHRcdFx0fVxuMTEyNTpcdFx0XHRzaXplJiM0MzsmIzQzOztcbjExMjY6XHRcdH0gZWxzZSBpZiAoZGRldi1cdTAwM2VkaWQpIHtcbjExMjc6XHRcdFx0cmMgPSAtRUlPO1xuMTEyODpcdFx0XHRnb3RvIGV4aXQ7XG4xMTI5Olx0XHR9XG4xMTMwOlx0XG4xMTMxOlx0XHRpZiAoRElHSVRBTF9ORkNfREVQX05BRF9CSVRfU0VUKHBmYikpIHtcbjExMzI6XHRcdFx0cmMgPSAtRUlPO1xuMTEzMzpcdFx0XHRnb3RvIGV4aXQ7XG4xMTM0Olx0XHR9XG4xMTM1Olx0XG4xMTM2Olx0XHRpZiAoc2l6ZSBcdTAwM2UgcmVzcC1cdTAwM2VsZW4pIHtcbjExMzc6XHRcdFx0cmMgPSAtRUlPO1xuMTEzODpcdFx0XHRnb3RvIGV4aXQ7XG4xMTM5Olx0XHR9XG4xMTQwOlx0XG4xMTQxOlx0XHRza2JfcHVsbChyZXNwLCBzaXplKTtcbjExNDI6XHRcbjExNDM6XHRcdHN3aXRjaCAoRElHSVRBTF9ORkNfREVQX1BGQl9UWVBFKHBmYikpIHtcbjExNDQ6XHRcdGNhc2UgRElHSVRBTF9ORkNfREVQX1BGQl9JX1BEVTpcbjExNDU6XHRcdFx0cHJfZGVidWcoXCYjMzQ7RElHSVRBTF9ORkNfREVQX1BGQl9JX1BEVVxcblwmIzM0Oyk7XG4xMTQ2Olx0XG4xMTQ3Olx0XHRcdGlmIChkZGV2LVx1MDAzZWF0bl9jb3VudCkge1xuMTE0ODpcdFx0XHRcdC8qIFRoZSB0YXJnZXQgaGFzIHJlY2VpdmVkIChhbmQgcmVwbGllZCB0bykgYXQgbGVhc3Qgb25lXG4xMTQ5Olx0XHRcdFx0ICogQVROIERFUF9SRVEuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEyIDEzOjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzMTAKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA3NDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTkZDIERyaXZlciBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYGRpZmZgIHJlbGF0ZWQgdG8gdGhlIGBkaWdpdGFsX2RlcC5jYCBmaWxlLiBSaWdodCBhd2F5LCBJIHNlZSBhIHBvdGVudGlhbCBpc3N1ZTogYW4gb3V0LW9mLWJvdW5kcyByZWFkLiBUaGUgb3JpZ2luYWwgY29kZSB3YXMgYWNjZXNzaW5nIGByZXNwLSZndDtkYXRhWzNdYCB3aXRob3V0IHByb3Blcmx5IGNoZWNraW5nIGlmIGByZXNwLSZndDtsZW5gIHdhcyBsYXJnZSBlbm91Z2guIEVzc2VudGlhbGx5LCB0aGUgY29kZSB3YXMgdnVsbmVyYWJsZSB0byBhIHJlYWQgcGFzdCB0aGUgZW5kIG9mIHRoZSBgcmVzcGAgZGF0YSBidWZmZXIuIEl0JiMzOTtzIHN1YnRsZSwgYnV0IGFjY2Vzc2luZyBgcmVzcC0mZ3Q7ZGF0YVszXWAgd2hlbiB0aGUgYnVmZmVyIGxlbmd0aCAoYHJlc3AtJmd0O2xlbmApIGlzIG9ubHkgMyBpcyBhIHJlY2lwZSBmb3IgZGlzYXN0ZXIuIEl0JiMzOTtzIGEgY2xhc3NpYyBvZmYtYnktb25lIGVycm9yIG9yIHNpbWlsYXIuCgpUaGUgZml4IGlzIHN0cmFpZ2h0Zm9yd2FyZC4gVGhleSYjMzk7dmUgYWRkZWQgYSBib3VuZHMgY2hlY2s6IGByZXNwLSZndDtsZW4gJmx0OyBzaXplICYjNDM7IDFgLiBUaGlzIGltbWVkaWF0ZWx5IGZsYWdzIHRoZSBpc3N1ZSBpZiB0aGUgYnVmZmVyIGlzbiYjMzk7dCBsYXJnZSBlbm91Z2ggdG8gYWNjb21tb2RhdGUgdGhlIGFjY2Vzcy4gVGhleSYjMzk7dmUgYWxzbyBjbGVhbmVkIHVwIHRoZSBjb25kaXRpb25hbCwgZXhwbGljaXRseSBjaGVja2luZyBmb3IgYCFkZGV2LSZndDtkaWRgIG9yIGEgbWlzbWF0Y2ggaW4gdGhlIERJRCB2YWx1ZS4gVGhleSBhcmUgYWxzbyB1c2luZyBgcmVzcC0mZ3Q7ZGF0YVtzaXplXWAgaW5zdGVhZCBvZiBgcmVzcC0mZ3Q7ZGF0YVszXWAgbm93LCB3aGljaCBtYWtlcyB0aGUgbG9naWMgbW9yZSByb2J1c3QuIFRoaXMgaXMgYSBtdWNoIGJldHRlciBhcHByb2FjaC4KCk5vdywgbXkgbWluZCBpcyBhbHJlYWR5IHRoaW5raW5nIGFib3V0IHdoZXRoZXIgdGhpcyBraW5kIG9mIGJ1ZyB3b3VsZCBoYXZlIGJlZW4gZmxhZ2dlZCBieSBhIG1lbW9yeSBzYW5pdGl6ZXIuIEdpdmVuIHRoYXQgaXQmIzM5O3MgYW4gb3V0LW9mLWJvdW5kcyByZWFkLCBteSBpbW1lZGlhdGUgdGhvdWdodCBpcyBLQVNBTi4gSXQmIzM5O3MgZGVzaWduZWQgdG8gY2F0Y2ggdGhlc2Uga2luZHMgb2YgbWVtb3J5IGFjY2VzcyB2aW9sYXRpb25zLiBJIG5lZWQgdG8gY29uZmlybSB0aGUgY29uZGl0aW9ucyBhcm91bmQgYHJlc3BgLCBidXQgSSBzdHJvbmdseSBzdXNwZWN0IHRoYXQgaWYgdGhpcyBidWcgd2FzIHRyaWdnZXJlZCB1bmRlciBLQVNBTiwgaXQgd291bGQgaGF2ZSBiZWVuIGZsYWdnZWQgaW1tZWRpYXRlbHkuCgpMZXQgbWUgcXVpY2tseSByZXZpZXcgdGhlIGNhbGxlciB0byBzZWUgd2hlcmUgYHJlc3BgIGNvbWVzIGZyb20gdG8gc29saWRpZnkgbXkgY29uY2x1c2lvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEyIDEzOjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25mYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25mYy9kaWdpdGFsX2RlcC5jPTEwNj1zdGF0aWMgdm9pZCBkaWdpdGFsX2luX3JlY3ZfZGVwX3JlcyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB2b2lkICphcmcsXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTA3LVx0XHRcdFx0ICAgIHN0cnVjdCBza19idWZmICpyZXNwKTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDg6c3RhdGljIHZvaWQgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwOS1cdFx0XHRcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqcmVzcCk7XG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTk3OD1zdGF0aWMgaW50IGRpZ2l0YWxfdGdfc2VuZF9hY2soc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTAxMi1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDEzOlx0cmMgPSBkaWdpdGFsX3RnX3NlbmRfY21kKGRkZXYsIHNrYiwgMTUwMCwgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEsXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTAxNC1cdFx0XHRcdCBkYXRhX2V4Y2gpO1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz0xMDI0PXN0YXRpYyBpbnQgZGlnaXRhbF90Z19zZW5kX2F0bihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2KVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDUxLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwNTI6XHRyYyA9IGRpZ2l0YWxfdGdfc2VuZF9jbWQoZGRldiwgc2tiLCAxNTAwLCBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcSxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDUzLVx0XHRcdFx0IE5VTEwpO1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz0xMDYwPXN0YXRpYyBpbnQgZGlnaXRhbF90Z19zZW5kX3NhdmVkX3NrYihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2KVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDY5LVx0cmMgPSBkaWdpdGFsX3RnX3NlbmRfY21kKGRkZXYsIGRkZXYtXHUwMDNlc2F2ZWRfc2tiLCAxNTAwLFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwNzA6XHRcdFx0XHQgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEsIE5VTEwpO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwNzEtXHRpZiAocmMpXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwNzYtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTA3NzpzdGF0aWMgdm9pZCBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB2b2lkICphcmcsXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTA3OC1cdFx0XHRcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqcmVzcClcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9MTI5Nz1pbnQgZGlnaXRhbF90Z19zZW5kX2RlcF9yZXMoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTMzMS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMzMyOlx0cmMgPSBkaWdpdGFsX3RnX3NlbmRfY21kKGRkZXYsIHRtcF9za2IsIDE1MDAsIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxLFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEzMzMtXHRcdFx0XHQgTlVMTCk7XG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTEzNDg9c3RhdGljIHZvaWQgZGlnaXRhbF90Z19zZW5kX3BzbF9yZXNfY29tcGxldGUoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTM1OS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMzYwOlx0ZGlnaXRhbF90Z19saXN0ZW4oZGRldiwgMTUwMCwgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEsIE5VTEwpO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEzNjEtXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTE0Njc9c3RhdGljIHZvaWQgZGlnaXRhbF90Z19zZW5kX2F0cl9yZXNfY29tcGxldGUoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTQ4NS1cdGVsc2Vcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxNDg2Olx0XHRkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcShkZGV2LCBhcmcsIHJlc3ApO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTE0ODctfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM5LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMiAxMzoyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NDcwCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogNzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2YgdGhlIHByb3ZpZGVkIGNvZGUgc25pcHBldCwgZm9jdXNpbmcgb24gdGhlIGBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcWAgZnVuY3Rpb246CgoqKkFuYWx5emluZyB0aGUgRGF0YSBUcmFuc2ZlciBpbiBgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXFgKioKCk9rYXksIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IGBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcWAsIHNwZWNpZmljYWxseSB0aGUgaGFuZGxpbmcgb2YgYSByZWNlaXZlZCBgc2tiYCAoc29ja2V0IGJ1ZmZlcikgdGhhdCByZXByZXNlbnRzIGEgcmVzcG9uc2UgdG8gYSB0YXJnZXQgREVQIChEYXRhIEV4ZWN1dGlvbiBQcmV2ZW50aW9uKSByZXF1ZXN0LiBUaGUgY3J1Y2lhbCBxdWVzdGlvbiBoZXJlIGlzIHdoZXRoZXIgdGhpcyBmdW5jdGlvbiBjb3BpZXMgYW55IGRhdGEgZnJvbSB0aGUga2VybmVsIHNwYWNlIHRvIHVzZXIgc3BhY2UsIGJlY2F1c2UgdGhhdCBpcyBvZnRlbiB3aGVyZSBtZW1vcnkgaXNzdWVzIGFyaXNlLiBJIG5lZWQgdG8gYmUgZGlsaWdlbnQgYWJvdXQgd2hlcmUgdGhlIGRhdGEgZmxvdyBpcyBvY2N1cnJpbmcuCgpUbyBnZXQgYSBkZWZpbml0aXZlIGFuc3dlciwgSSYjMzk7bSBnb2luZyB0byBkaXZlIGludG8gdGhlIGNvZGUuIEkmIzM5O2xsIGZvY3VzIG15IGF0dGVudGlvbiBvbiBsaW5lcyAxMTQwIHRocm91Z2ggMTI5MCBvZiBgZGlnaXRhbF9kZXAuY2AuIFRoaXMgcmFuZ2Ugc2hvdWxkIGNvbnRhaW4gdGhlIGNvcmUgbG9naWMgZm9yIHByb2Nlc3NpbmcgdGhlIGluY29taW5nIHJlc3BvbnNlIGFuZCwgY3JpdGljYWxseSwgYW55IGRhdGEgdHJhbnNmZXIgb3BlcmF0aW9ucyByZWxhdGVkIHRvIERFUCByZXF1ZXN0cy4gSSYjMzk7bGwgYmUgbG9va2luZyBzcGVjaWZpY2FsbHkgZm9yIGNhbGxzIHRoYXQgaW5kaWNhdGUgdXNlci1zcGFjZSBkYXRhIGNvcGllcyBzdWNoIGFzIGBjb3B5X3RvX3VzZXIoKWAgb3Igb3RoZXIgZnVuY3Rpb25zIHRoYXQgcGVyZm9ybSBhIHNpbWlsYXIgcm9sZS4gQW55IGRpcmVjdCBpbnRlcmFjdGlvbiB3aXRoIHVzZXItc3BhY2UgbWVtb3J5IHdpdGhpbiB0aGF0IGZ1bmN0aW9uIHJhbmdlIHdpbGwgYmUgaW50ZXJlc3RpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEyIDEzOjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L25mYy9kaWdpdGFsX2RlcC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTE0MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxMTQwOlx0XG4xMTQxOlx0XHRza2JfcHVsbChyZXNwLCBzaXplKTtcbjExNDI6XHRcbjExNDM6XHRcdHN3aXRjaCAoRElHSVRBTF9ORkNfREVQX1BGQl9UWVBFKHBmYikpIHtcbjExNDQ6XHRcdGNhc2UgRElHSVRBTF9ORkNfREVQX1BGQl9JX1BEVTpcbjExNDU6XHRcdFx0cHJfZGVidWcoXCYjMzQ7RElHSVRBTF9ORkNfREVQX1BGQl9JX1BEVVxcblwmIzM0Oyk7XG4xMTQ2Olx0XG4xMTQ3Olx0XHRcdGlmIChkZGV2LVx1MDAzZWF0bl9jb3VudCkge1xuMTE0ODpcdFx0XHRcdC8qIFRoZSB0YXJnZXQgaGFzIHJlY2VpdmVkIChhbmQgcmVwbGllZCB0bykgYXQgbGVhc3Qgb25lXG4xMTQ5Olx0XHRcdFx0ICogQVROIERFUF9SRVEuXG4xMTUwOlx0XHRcdFx0ICovXG4xMTUxOlx0XHRcdFx0ZGRldi1cdTAwM2VhdG5fY291bnQgPSAwO1xuMTE1MjpcdFxuMTE1MzpcdFx0XHRcdC8qIHBuaSBvZiByZXNwIFBEVSBlcXVhbCB0byB0aGUgdGFyZ2V0IGN1cnJlbnQgcG5pIC0gMVxuMTE1NDpcdFx0XHRcdCAqIG1lYW5zIHJlc3AgaXMgdGhlIHByZXZpb3VzIERFUF9SRVEgUERVIHJlY2VpdmVkIGZyb21cbjExNTU6XHRcdFx0XHQgKiB0aGUgaW5pdGlhdG9yIHNvIHRoZSB0YXJnZXQgcmVwbGllcyB3aXRoIHNhdmVkX3NrYlxuMTE1NjpcdFx0XHRcdCAqIHdoaWNoIGlzIHRoZSBwcmV2aW91cyBERVBfUkVTIHNhdmVkIGluXG4xMTU3Olx0XHRcdFx0ICogZGlnaXRhbF90Z19zZW5kX2RlcF9yZXMoKS5cbjExNTg6XHRcdFx0XHQgKi9cbjExNTk6XHRcdFx0XHRpZiAoRElHSVRBTF9ORkNfREVQX1BGQl9QTkkocGZiKSA9PVxuMTE2MDpcdFx0XHRcdCAgRElHSVRBTF9ORkNfREVQX1BGQl9QTkkoZGRldi1cdTAwM2VjdXJyX25mY19kZXBfcG5pIC0gMSkpIHtcbjExNjE6XHRcdFx0XHRcdHJjID0gZGlnaXRhbF90Z19zZW5kX3NhdmVkX3NrYihkZGV2KTtcbjExNjI6XHRcdFx0XHRcdGlmIChyYylcbjExNjM6XHRcdFx0XHRcdFx0Z290byBleGl0O1xuMTE2NDpcdFxuMTE2NTpcdFx0XHRcdFx0Z290byBmcmVlX3Jlc3A7XG4xMTY2Olx0XHRcdFx0fVxuMTE2NzpcdFxuMTE2ODpcdFx0XHRcdC8qIGF0bl9jb3VudCBcdTAwM2UgMCBhbmQgUERVIHBuaSAhPSBjdXJyX25mY19kZXBfcG5pIC0gMVxuMTE2OTpcdFx0XHRcdCAqIG1lYW5zIHRoZSB0YXJnZXQgcHJvYmFibHkgZGlkIG5vdCByZWNlaXZlZCB0aGUgbGFzdFxuMTE3MDpcdFx0XHRcdCAqIERFUF9SRVEgUERVIHNlbnQgYnkgdGhlIGluaXRpYXRvci4gVGhlIHRhcmdldFxuMTE3MTpcdFx0XHRcdCAqIGZhbGxiYWNrcyB0byBub3JtYWwgcHJvY2Vzc2luZyB0aGVuLlxuMTE3MjpcdFx0XHRcdCAqL1xuMTE3MzpcdFx0XHR9XG4xMTc0Olx0XG4xMTc1Olx0XHRcdGlmIChESUdJVEFMX05GQ19ERVBfUEZCX1BOSShwZmIpICE9IGRkZXYtXHUwMDNlY3Vycl9uZmNfZGVwX3BuaSkge1xuMTE3NjpcdFx0XHRcdFBST1RPQ09MX0VSUihcJiMzNDsxNC4xMi4zLjRcJiMzNDspO1xuMTE3NzpcdFx0XHRcdHJjID0gLUVJTztcbjExNzg6XHRcdFx0XHRnb3RvIGV4aXQ7XG4xMTc5Olx0XHRcdH1cbjExODA6XHRcbjExODE6XHRcdFx0a2ZyZWVfc2tiKGRkZXYtXHUwMDNlc2F2ZWRfc2tiKTtcbjExODI6XHRcdFx0ZGRldi1cdTAwM2VzYXZlZF9za2IgPSBOVUxMO1xuMTE4MzpcdFxuMTE4NDpcdFx0XHRyZXNwID0gZGlnaXRhbF9yZWN2X2RlcF9kYXRhX2dhdGhlcihkZGV2LCBwZmIsIHJlc3AsXG4xMTg1Olx0XHRcdFx0XHRcdFx0ICAgIGRpZ2l0YWxfdGdfc2VuZF9hY2ssIE5VTEwpO1xuMTE4NjpcdFx0XHRpZiAoSVNfRVJSKHJlc3ApKSB7XG4xMTg3Olx0XHRcdFx0cmMgPSBQVFJfRVJSKHJlc3ApO1xuMTE4ODpcdFx0XHRcdHJlc3AgPSBOVUxMO1xuMTE4OTpcdFx0XHRcdGdvdG8gZXhpdDtcbjExOTA6XHRcdFx0fVxuMTE5MTpcdFxuMTE5MjpcdFx0XHQvKiBJZiByZXNwIGlzIE5VTEwgdGhlbiB3ZSYjMzk7cmUgc3RpbGwgY2hhaW5pbmcgc28gcmV0dXJuIGFuZFxuMTE5MzpcdFx0XHQgKiB3YWl0IGZvciB0aGUgbmV4dCBwYXJ0IG9mIHRoZSBQRFUuICBFbHNlLCB0aGUgUERVIGlzXG4xMTk0Olx0XHRcdCAqIGNvbXBsZXRlIHNvIHBhc3MgaXQgdXAuXG4xMTk1Olx0XHRcdCAqL1xuMTE5NjpcdFx0XHRpZiAoIXJlc3ApXG4xMTk3Olx0XHRcdFx0cmV0dXJuO1xuMTE5ODpcdFxuMTE5OTpcdFx0XHRyYyA9IDA7XG4xMjAwOlx0XHRcdGJyZWFrO1xuMTIwMTpcdFx0Y2FzZSBESUdJVEFMX05GQ19ERVBfUEZCX0FDS19OQUNLX1BEVTpcbjEyMDI6XHRcdFx0aWYgKERJR0lUQUxfTkZDX0RFUF9OQUNLX0JJVF9TRVQocGZiKSkgeyAvKiBOQUNLICovXG4xMjAzOlx0XHRcdFx0aWYgKERJR0lUQUxfTkZDX0RFUF9QRkJfUE5JKHBmYiAmIzQzOyAxKSAhPVxuMTIwNDpcdFx0XHRcdFx0XHRcdGRkZXYtXHUwMDNlY3Vycl9uZmNfZGVwX3BuaSkge1xuMTIwNTpcdFx0XHRcdFx0cmMgPSAtRUlPO1xuMTIwNjpcdFx0XHRcdFx0Z290byBleGl0O1xuMTIwNzpcdFx0XHRcdH1cbjEyMDg6XHRcbjEyMDk6XHRcdFx0XHRkZGV2LVx1MDAzZWF0bl9jb3VudCA9IDA7XG4xMjEwOlx0XG4xMjExOlx0XHRcdFx0cmMgPSBkaWdpdGFsX3RnX3NlbmRfc2F2ZWRfc2tiKGRkZXYpO1xuMTIxMjpcdFx0XHRcdGlmIChyYylcbjEyMTM6XHRcdFx0XHRcdGdvdG8gZXhpdDtcbjEyMTQ6XHRcbjEyMTU6XHRcdFx0XHRnb3RvIGZyZWVfcmVzcDtcbjEyMTY6XHRcdFx0fVxuMTIxNzpcdFxuMTIxODpcdFx0XHQvKiBBQ0sgKi9cbjEyMTk6XHRcdFx0aWYgKGRkZXYtXHUwMDNlYXRuX2NvdW50KSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEyIDEzOjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcwNjQKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZCwgaW4gdGhlIGZpcnN0IHBlcnNvbiBhbmQgdGFyZ2V0ZWQgdG93YXJkcyBhbiBleHBlcnQ6CgoqKkRlZXAgRGl2ZSBpbnRvIGBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcWAqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0JiMzOTtzIGdvaW5nIG9uICpuZXh0KiB3aXRoaW4gdGhpcyBgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXFgIGZ1bmN0aW9uLiBJdCYjMzk7cyB0aGUgbHluY2hwaW4sIGlzbiYjMzk7dCBpdD8gVGhlIHN0YXJ0aW5nIHBvaW50IG9mIGFuIGltcG9ydGFudCBwcm9jZXNzLiBJIG5lZWQgdG8gY29uc2lkZXIgYWxsIGFuZ2xlcyBhbmQgZW5zdXJlIG5vdGhpbmcgaXMgbWlzc2VkIHRoYXQgd291bGQgaW1wYWN0IHRoZSBkZXNpZ24gb2YgdGhlIHdpZGVyIHN5c3RlbS4KCkkmIzM5O20gdGhpbmtpbmcsICYjMzQ7d2hhdCBhcmUgdGhlIG1vc3QgaW1wb3J0YW50IGFyZWFzIHRvIGJlIGludmVzdGlnYXRlZD8mIzM0Oy4gSXQgbG9va3MgdG8gbWUgbGlrZSBpdCYjMzk7cyBwcmltYXJpbHkgcmVzcG9uc2libGUgZm9yIGhhbmRsaW5nIHNvbWUgc29ydCBvZiBkZXBlbmRlbmN5IHJlcXVlc3Qgd2l0aGluIHRoZSBkaWdpdGFsIHNpZ25hbCBwcm9jZXNzaW5nIGNoYWluLiBHaXZlbiBpdHMgbmFtZSwgSSYjMzk7bSBhc3N1bWluZyBpdCYjMzk7cyByZWxhdGVkIHRvIHNvbWUgZGlnaXRhbCB0cmFuc21pc3Npb24gZ3JvdXAuIFdlIGhhdmUgdG8gY29uc2lkZXIgZmFjdG9ycyByZWxhdGluZyB0byBpdHMgcmVjZXB0aW9uIGFuZCBwcm9jZXNzaW5nIHdpdGhpbiB0aGlzIGZ1bmN0aW9uLiBXaGF0IGFyZSB0aGUgbGlrZWx5IGRhdGEgc3RydWN0dXJlcyBiZWluZyB1c2VkIGhlcmU/IElzIGl0IGEgc3RyYWlnaHRmb3J3YXJkIGJ1ZmZlciwgb3Igc29tZXRoaW5nIG1vcmUgY29tcGxleCB3aXRoIG1ldGFkYXRhPyBBcmUgdGhlcmUgYW55IGVycm9yIGNvbmRpdGlvbnMgdGhhdCBuZWVkIHRvIGJlIGFjY291bnRlZCBmb3I/IFdoYXQgaGFwcGVucyBpZiB0aGUgcmVxdWVzdCBpcyBtYWxmb3JtZWQgb3IgaW52YWxpZD8gRG9lcyBpdCBpbW1lZGlhdGVseSByZXR1cm4gYW4gZXJyb3IgY29kZSBvciBkb2VzIGl0IHRyaWdnZXIgYSBzcGVjaWZpYyBraW5kIG9mIGNhbGxiYWNrIG9yIGV2ZW50PyBJcyB0aGVyZSBhIHN0YXRlIG1hY2hpbmUgdGhhdCBJIG5lZWQgdG8gYmUgYXdhcmUgb2Y/IEFyZSB0aGVyZSBjb25jdXJyZW5jeSBjb25zaWRlcmF0aW9ucyB0aGF0IEkgbmVlZCB0byBrZWVwIGluIG1pbmQsIGkuZS4gaXMgdGhpcyBmdW5jdGlvbiBjYWxsZWQgZnJvbSBtdWx0aXBsZSB0aHJlYWRzPwoKSSBhbHNvIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcmVsYXRpb25zaGlwIHRvIHRoZSByZXN0IG9mIHRoZSBzeXN0ZW0uIFdoYXQgb3RoZXIgZnVuY3Rpb25zIG9yIG1vZHVsZXMgZG9lcyBgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXFgIGNhbGwsIGFuZCB3aGljaCBvbmVzIGNhbGwgaXQ/IFdoYXQgYXJlIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhlc2UgY2FsbHMgaW4gdGVybXMgb2YgcmVzb3VyY2UgdXRpbGl6YXRpb24gYW5kIGxhdGVuY3k/IERvZXMgaXQgaW50ZXJhY3Qgd2l0aCBhbnkgaGFyZHdhcmUgZGlyZWN0bHk/IEFuZCwgaWYgc28sIGFyZSB0aGVyZSBhbnkgaGFyZHdhcmUtc3BlY2lmaWMgY29uc2lkZXJhdGlvbnMgaW4gdGVybXMgb2YgdGltaW5nIG9yIHN5bmNocm9uaXphdGlvbj8gSSYjMzk7bGwgcHJvYmFibHkgbmVlZCB0byB0cmFjZSBpdHMgY2FsbCBzdGFjayBhbmQgZGF0YSBmbG93IHRvIGdldCBhIGNvbXBsZXRlIHBpY3R1cmUuIFRoaXMgaXMgbXkgY2hhbmNlIHRvIGRldGVybWluZSBpZiB0aGlzIHBpZWNlIG9mIGNvZGUgaXMgZWZmaWNpZW50IGFuZCB3ZWxsLWRlc2lnbmVkLCBvciBpZiB0aGVyZSYjMzk7cyByb29tIGZvciBpbXByb3ZlbWVudC4KClVsdGltYXRlbHksIEkgd2FudCB0byBmb3JtIGFuIGFjY3VyYXRlIG1lbnRhbCBtb2RlbCBvZiB3aGF0IHRoaXMgZnVuY3Rpb24gZG9lcyBhbmQgaG93IGl0IGZpdHMgaW50byB0aGUgb3ZlcmFsbCBzY2hlbWUgb2YgdGhpbmdzLiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSBrZXkgaW5zaWdodHMgdGhhdCB3aWxsIGluZm9ybSBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzeXN0ZW0mIzM5O3MgZGVzaWduIGFuZCB3aWxsIGRldGVybWluZSBob3cgSSB3aWxsIGFwcHJvYWNoIHRoaXMgcHJvYmxlbS4gTGV0JiMzOTtzIGRpZyBpbiBhbmQgc2VlIHdoYXQgc2VjcmV0cyB0aGlzIGZ1bmN0aW9uIGhvbGRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQyLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMiAxMzoyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9uZmMvZGlnaXRhbF9kZXAuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEyMjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogODAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTIyMDpcdFx0XHRcdC8qIFRoZSB0YXJnZXQgaGFzIHByZXZpb3VzbHkgcmVjZWl2ZWQgb25lIG9yIG1vcmUgQVROXG4xMjIxOlx0XHRcdFx0ICogUERVcy5cbjEyMjI6XHRcdFx0XHQgKi9cbjEyMjM6XHRcdFx0XHRkZGV2LVx1MDAzZWF0bl9jb3VudCA9IDA7XG4xMjI0Olx0XG4xMjI1Olx0XHRcdFx0LyogSWYgdGhlIEFDSyBQTkkgaXMgZXF1YWwgdG8gdGhlIHRhcmdldCBQTkkgLSAxIG1lYW5zXG4xMjI2Olx0XHRcdFx0ICogdGhhdCB0aGUgaW5pdGlhdG9yIGRpZCBub3QgcmVjZWl2ZSB0aGUgcHJldmlvdXMgUERVXG4xMjI3Olx0XHRcdFx0ICogc2VudCBieSB0aGUgdGFyZ2V0IHNvIHJlLXNlbmQgaXQuXG4xMjI4Olx0XHRcdFx0ICovXG4xMjI5Olx0XHRcdFx0aWYgKERJR0lUQUxfTkZDX0RFUF9QRkJfUE5JKHBmYiAmIzQzOyAxKSA9PVxuMTIzMDpcdFx0XHRcdFx0XHRcdGRkZXYtXHUwMDNlY3Vycl9uZmNfZGVwX3BuaSkge1xuMTIzMTpcdFx0XHRcdFx0cmMgPSBkaWdpdGFsX3RnX3NlbmRfc2F2ZWRfc2tiKGRkZXYpO1xuMTIzMjpcdFx0XHRcdFx0aWYgKHJjKVxuMTIzMzpcdFx0XHRcdFx0XHRnb3RvIGV4aXQ7XG4xMjM0Olx0XG4xMjM1Olx0XHRcdFx0XHRnb3RvIGZyZWVfcmVzcDtcbjEyMzY6XHRcdFx0XHR9XG4xMjM3Olx0XG4xMjM4Olx0XHRcdFx0LyogT3RoZXJ3aXNlLCB0aGUgdGFyZ2V0IGRpZCBub3QgcmVjZWl2ZSB0aGUgcHJldmlvdXNcbjEyMzk6XHRcdFx0XHQgKiBBQ0sgUERVIGZyb20gdGhlIGluaXRpYXRvci4gRmFsbGJhY2sgdG8gbm9ybWFsXG4xMjQwOlx0XHRcdFx0ICogcHJvY2Vzc2luZyBvZiBjaGFpbmVkIFBEVSB0aGVuLlxuMTI0MTpcdFx0XHRcdCAqL1xuMTI0MjpcdFx0XHR9XG4xMjQzOlx0XG4xMjQ0Olx0XHRcdC8qIEtlZXAgb24gc2VuZGluZyBjaGFpbmVkIFBEVSAqL1xuMTI0NTpcdFx0XHRpZiAoIWRkZXYtXHUwMDNlY2hhaW5pbmdfc2tiIHx8XG4xMjQ2Olx0XHRcdCAgICBESUdJVEFMX05GQ19ERVBfUEZCX1BOSShwZmIpICE9XG4xMjQ3Olx0XHRcdFx0XHRcdGRkZXYtXHUwMDNlY3Vycl9uZmNfZGVwX3BuaSkge1xuMTI0ODpcdFx0XHRcdHJjID0gLUVJTztcbjEyNDk6XHRcdFx0XHRnb3RvIGV4aXQ7XG4xMjUwOlx0XHRcdH1cbjEyNTE6XHRcbjEyNTI6XHRcdFx0a2ZyZWVfc2tiKGRkZXYtXHUwMDNlc2F2ZWRfc2tiKTtcbjEyNTM6XHRcdFx0ZGRldi1cdTAwM2VzYXZlZF9za2IgPSBOVUxMO1xuMTI1NDpcdFxuMTI1NTpcdFx0XHRyYyA9IGRpZ2l0YWxfdGdfc2VuZF9kZXBfcmVzKGRkZXYsIGRkZXYtXHUwMDNlY2hhaW5pbmdfc2tiKTtcbjEyNTY6XHRcdFx0aWYgKHJjKVxuMTI1NzpcdFx0XHRcdGdvdG8gZXhpdDtcbjEyNTg6XHRcbjEyNTk6XHRcdFx0Z290byBmcmVlX3Jlc3A7XG4xMjYwOlx0XHRjYXNlIERJR0lUQUxfTkZDX0RFUF9QRkJfU1VQRVJWSVNPUl9QRFU6XG4xMjYxOlx0XHRcdGlmIChESUdJVEFMX05GQ19ERVBfUEZCX0lTX1RJTUVPVVQocGZiKSkge1xuMTI2MjpcdFx0XHRcdHJjID0gLUVJTlZBTDtcbjEyNjM6XHRcdFx0XHRnb3RvIGV4aXQ7XG4xMjY0Olx0XHRcdH1cbjEyNjU6XHRcbjEyNjY6XHRcdFx0cmMgPSBkaWdpdGFsX3RnX3NlbmRfYXRuKGRkZXYpO1xuMTI2NzpcdFx0XHRpZiAocmMpXG4xMjY4Olx0XHRcdFx0Z290byBleGl0O1xuMTI2OTpcdFxuMTI3MDpcdFx0XHRkZGV2LVx1MDAzZWF0bl9jb3VudCYjNDM7JiM0Mzs7XG4xMjcxOlx0XG4xMjcyOlx0XHRcdGdvdG8gZnJlZV9yZXNwO1xuMTI3MzpcdFx0fVxuMTI3NDpcdFxuMTI3NTpcdFx0cmMgPSBuZmNfdG1fZGF0YV9yZWNlaXZlZChkZGV2LVx1MDAzZW5mY19kZXYsIHJlc3ApO1xuMTI3NjpcdFx0aWYgKHJjKVxuMTI3NzpcdFx0XHRyZXNwID0gTlVMTDtcbjEyNzg6XHRcbjEyNzk6XHRleGl0OlxuMTI4MDpcdFx0a2ZyZWVfc2tiKGRkZXYtXHUwMDNlY2hhaW5pbmdfc2tiKTtcbjEyODE6XHRcdGRkZXYtXHUwMDNlY2hhaW5pbmdfc2tiID0gTlVMTDtcbjEyODI6XHRcbjEyODM6XHRcdGRkZXYtXHUwMDNlYXRuX2NvdW50ID0gMDtcbjEyODQ6XHRcbjEyODU6XHRcdGtmcmVlX3NrYihkZGV2LVx1MDAzZXNhdmVkX3NrYik7XG4xMjg2Olx0XHRkZGV2LVx1MDAzZXNhdmVkX3NrYiA9IE5VTEw7XG4xMjg3Olx0XG4xMjg4Olx0XHRpZiAocmMpXG4xMjg5Olx0XHRcdGtmcmVlX3NrYihyZXNwKTtcbjEyOTA6XHRcbjEyOTE6XHRcdHJldHVybjtcbjEyOTI6XHRcbjEyOTM6XHRmcmVlX3Jlc3A6XG4xMjk0Olx0XHRkZXZfa2ZyZWVfc2tiKHJlc3ApO1xuMTI5NTpcdH1cbjEyOTY6XHRcbjEyOTc6XHRpbnQgZGlnaXRhbF90Z19zZW5kX2RlcF9yZXMoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbjEyOTg6XHR7XG4xMjk5Olx0XHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3JlcztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTIgMTM6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODczMQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDMzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE5GQyBEaWdpdGFsIERFUCBESUQgSGFuZGxpbmcqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggaW4gYG5ldC9uZmMvZGlnaXRhbF9kZXAuY2AgY29uY2VybmluZyBESUQgKERhdGEgSUQpIGhhbmRsaW5nIHdpdGhpbiB0aGUgRGlnaXRhbCBERVAgKERldmljZS10by1EZXZpY2UgUHJvdG9jb2wpIGZvciBORkMuIFRoZSBjb3JlIG9mIHRoaXMgc2VlbXMgdG8gYmUgY2VudGVyZWQgYXJvdW5kIGBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcWAgYW5kIHRoZSB2ZXJpZmljYXRpb24gb2YgdGhlIERJRCBmaWVsZCB3aXRoaW4gYSByZWNlaXZlZCBERVAgcmVxdWVzdC4KCkVzc2VudGlhbGx5LCBpdCBjaGVja3MgaWYgYSBESUQgaXMgcHJlc2VudCAoYERJR0lUQUxfTkZDX0RFUF9ESURfQklUX1NFVGApIGluIHRoZSBQcm90b2NvbCBGb3JtYXQgQnl0ZSAoUEZCKSBhbmQgdGhlbiBjb21wYXJlcyBpdCB0byB0aGUgZGV2aWNlJiMzOTtzIGV4cGVjdGVkIERJRCAoYGRkZXYtJmd0O2RpZGApLiBUaGUgb3JpZ2luYWwgY29kZSBoYWQgYSBzdWJ0bGUgZmxhdyB0aGF0IHRoaXMgcGF0Y2ggYWltcyB0byBmaXguIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoYXQgZmxhdywgYXMgdGhlIGxvZ2ljIGlzIHNvbWV3aGF0IGNvbnZvbHV0ZWQuCgpIZXJlJiMzOTtzIHRoZSBwcm9ibGVtIEkgc2VlIG5vdzogVGhlIGluaXRpYWwgY29uZGl0aW9uYWwgc3RhdGVtZW50IGluIHRoZSBgaWYgKERJR0lUQUxfTkZDX0RFUF9ESURfQklUX1NFVChwZmIpKWAgYmxvY2sgdXNlZCB0byB2ZXJpZnkgdGhlIERJRC4gVGhlIG9yaWdpbmFsIGNvZGUgaW5jcmVtZW50ZWQgYHNpemUmIzQzOyYjNDM7YCBpZiB0aGUgRElEcyBtYXRjaGVkIGJ1dCwgaWYgdGhlIERJRHMgZGlkIG5vdCBtYXRjaCwgaXQgd291bGQgZXJyb3Igb3V0IGFuZCBleGl0LiBUaGlzIHdvcmtzIGFzIGludGVuZGVkLgoKVGhlIHBhdGNoIGFpbXMgdG8gc29sdmUgYSBjYXNlIHdoZXJlIGlmIHRoZSBgcmVzcC0mZ3Q7bGVuYCBpcyB0b28gc21hbGwsIGFuIG91dC1vZi1ib3VuZHMgcmVhZCB3b3VsZCBoYXBwZW4gYW5kIGEgY3Jhc2ggY291bGQgb2NjdXIuIFRoZSBwYXRjaCBmaXhlcyB0aGlzIGJ5IGNoZWNraW5nIGByZXNwLSZndDtsZW4gJmx0OyBzaXplICYjNDM7IDFgIGJlZm9yZSBjb21wYXJpbmcgdGhlIERJRC4gVGhlIG90aGVyIHBhcnQgb2YgdGhlIGZpeCBpcyB0byBzaW1wbGlmeSB0aGUgYGVsc2VgIGNsYXVzZTogaWYgYSBESUQgaXMgZXhwZWN0ZWQgYnV0IG5vdCBwcmVzZW50LCBlcnJvciBvdXQuCgpOb3csIGxldCYjMzk7cyBzd2l0Y2ggZ2VhcnMgYW5kIGNoZWNrIGhvdyBgZGlnaXRhbF9pbl9yZWN2X2RlcF9yZXNgIGRvZXMgdGhlIERJRCBjaGVja2luZywgdG8gbWFrZSBzdXJlIHRoaXMgZml4IGlzIGNvbnNpc3RlbnQgYWNyb3NzIHRoZSBjb2RlYmFzZS4gSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCB0aGUgY2hhbmdlcyBtYWRlIGhlcmUgYXJlIGFsc28gcmVmbGVjdGVkIChvciBjb25zaWRlcmVkKSBpbiB0aGUgaW5jb21pbmcgcmVzcG9uc2Ugc2lkZSBvZiB0aGluZ3MuIEl0JiMzOTtzIGNydWNpYWwgZm9yIHN5bW1ldHJpY2FsIGJlaGF2aW9yIHRvIG1haW50YWluIGRhdGEgaW50ZWdyaXR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ0LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMiAxMzoyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtESUdJVEFMX05GQ19ERVBfRElEX0JJVF9TRVQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmZjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNTItI2RlZmluZSBESUdJVEFMX05GQ19ERVBfTkFEX0JJVF9TRVQocGZiKSAoKHBmYikgXHUwMDI2IDB4MDgpXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NTM6I2RlZmluZSBESUdJVEFMX05GQ19ERVBfRElEX0JJVF9TRVQocGZiKSAoKHBmYikgXHUwMDI2IERJR0lUQUxfTkZDX0RFUF9QRkJfRElEX0JJVClcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01NC0jZGVmaW5lIERJR0lUQUxfTkZDX0RFUF9QRkJfUE5JKHBmYikgICAgICgocGZiKSBcdTAwMjYgMHgwMylcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9Njg2PXN0YXRpYyB2b2lkIGRpZ2l0YWxfaW5fcmVjdl9kZXBfcmVzKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNzY2LVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjc2NzpcdGlmIChESUdJVEFMX05GQ19ERVBfRElEX0JJVF9TRVQocGZiKSkge1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTc2OC1cdFx0UFJPVE9DT0xfRVJSKFwmIzM0OzE0LjguMi4xXCYjMzQ7KTtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9MTA3Nz1zdGF0aWMgdm9pZCBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB2b2lkICphcmcsXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTExMTgtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTExOTpcdGlmIChESUdJVEFMX05GQ19ERVBfRElEX0JJVF9TRVQocGZiKSkge1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTExMjAtXHRcdGlmIChyZXNwLVx1MDAzZWxlbiBcdTAwM2Mgc2l6ZSAmIzQzOyAxIHx8ICFkZGV2LVx1MDAzZWRpZCB8fFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ1LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMiAxMzoyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5OTMwCgkJCQkJCQlvdXRwdXQ6IDE5OQoJCQkJCQkJdGhvdWdodHM6IDExNDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaCBmb3IgS01TQU4gUmVsZXZhbmNlKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoZSBjb21taXQgZml4ZXMgd2hhdCBsb29rcyBsaWtlIGEgY2xhc3NpYyBvdXQtb2YtYm91bmRzIHJlYWQgdnVsbmVyYWJpbGl0eS4gU3l6a2FsbGVyIHByb2JhYmx5IGZvdW5kIGl0LCBzcGVjaWZpY2FsbHksIGFjY2Vzc2luZyBgcmVzcC0mZ3Q7ZGF0YVszXWAgd2hlbiBgcmVzcC0mZ3Q7bGVuYCB3YXMgb25seSAzLiBUaGUgYHNpemVgIHZhcmlhYmxlIGlzIHNldCB0byB0aGUgc2l6ZSBvZiBgc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXNgLCB3aGljaCBpcyAzIGJ5dGVzLCBidXQgdGhlIGNvbmRpdGlvbmFsIGNoZWNrIGJlZm9yZSB0aGUgZml4IG9ubHkgY2hlY2tlZCBmb3IgYHJlc3AtJmd0O2xlbiAmZ3Q7PSAzYC4gVGhlbiwgaWYgYSBjZXJ0YWluIGJpdCB3YXMgc2V0LCB0aGUgY29kZSBhdHRlbXB0ZWQgdG8gYWNjZXNzIGByZXNwLSZndDtkYXRhWzNdYC4gSWYgYHJlc3AtJmd0O2xlbmAgd2FzIGV4YWN0bHkgMywgdGhhdCYjMzk7cyBhIG9uZS1ieXRlIG91dC1vZi1ib3VuZHMgcmVhZCBmcm9tIHRoZSBlbmQgb2YgdGhlIGByZXNwLSZndDtkYXRhYCBidWZmZXIuIEtBU0FOIHdvdWxkIGltbWVkaWF0ZWx5IGNhdGNoIHRoYXQuCgpOb3csIHRoZSBxdWVzdGlvbiBpcywgZG9lcyB0aGlzIHJlcXVpcmUgS01TQU4/IExldCYjMzk7cyBnbyB0aHJvdWdoIHRoZSBjaGVja2xpc3QuCgoxLiAgKipVc2VyLXNwYWNlIGV4cG9zdXJlPyoqIE5vcGUuIE5vdGhpbmcgaGVyZSBnZXRzIGNvcGllZCB0byB1c2VyIHNwYWNlLgoyLiAgKipVbmluaXRpYWxpemVkIHZhcmlhYmxlIHNoZW5hbmlnYW5zPyoqIE5vdCBhdCBhbGwuIGByZXNwLSZndDtsZW5gLCBgc2l6ZWAsIGBkZGV2LSZndDtkaWRgLCBhbmQgdGhlIHNwZWNpZmljIGJ5dGUgb2YgYHJlc3AtJmd0O2RhdGFgIGFyZSBhbGwgd2VsbC1kZWZpbmVkIGFuZCBpbml0aWFsaXplZC4gYHNpemVgIGlzIGFuIGludGVnZXIgaW5pdGlhbGl6ZWQgd2l0aCBgc2l6ZW9mKClgLiBgcmVzcC0mZ3Q7ZGF0YWAgaXMganVzdCB0aGUgTkZDIHBhY2tldCB0aGF0IHdhcyByZWNlaXZlZC4KMy4gICoqTmV3IGFsbG9jYXRpb25zIG9yIGRhdGEgc3RydWN0dXJlcz8qKiBObyBuZXcgYWxsb2NhdGlvbnMgb3IgbW9kaWZpY2F0aW9ucyB0byBkYXRhIHN0cnVjdHVyZSBpbml0aWFsaXphdGlvbnMgYXJlIGFkZGVkIG9yIG1vZGlmaWVkIGJ5IHRoZSBwYXRjaC4KNC4gICoqQm91bmRzIGNoZWNrcyBleHBvc2luZyB1bmluaXRpYWxpemVkIGJ5dGVzPyoqIEFjdHVhbGx5LCB0aGUgcGF0Y2ggKnRpZ2h0ZW5zKiBib3VuZHMgY2hlY2tzLiBJdCBhZGRzIGFuIGV4dHJhIGNoZWNrIChgcmVzcC0mZ3Q7bGVuICZsdDsgc2l6ZSAmIzQzOyAxYCkgdG8gZW5zdXJlIHdlIGRvbiYjMzk7dCByZWFkIG91dC1vZi1ib3VuZHMuIFRoZSBjb2RlIGlzICpyZXN0cmljdGluZyogYWNjZXNzLCBub3QgZXhwYW5kaW5nIGl0LgoKV2FpdCwgaXMgdGhlcmUgYW55IGNoYW5jZSB0aGF0IGByZXNwLSZndDtkYXRhW3NpemVdYCBjb3VsZCBiZSB1bmluaXRpYWxpemVkIG1lbW9yeT8gTm8uIFRoZSBjb2RlIGV4cGxpY2l0bHkgY2hlY2tzIGByZXNwLSZndDtsZW5gIGJlZm9yZSBhY2Nlc3NpbmcgdGhlIGRhdGEuIEV2ZW4gaWYgYHJlc3AtJmd0O2RhdGFgIGlzIGFuIHNrYiBkYXRhIGJ1ZmZlciwgdGhlIGNvZGUgY2hlY2tzIHRoZSBsZW5ndGggb2YgKnZhbGlkKiByZWNlaXZlZCBkYXRhLCB3aGljaCBpcyBpbmRpY2F0ZWQgYnkgYHJlc3AtJmd0O2xlbmAuIEJlZm9yZSB0aGUgcGF0Y2gsIGF0dGVtcHRpbmcgdG8gcmVhZCBwYXN0IHRoZSB2YWx1ZSBvZiBgcmVzcC0mZ3Q7bGVuYCB3YXMgYW4gb3V0LW9mLWJvdW5kcyByZWFkIChjYXVnaHQgYnkgS0FTQU4pLCB0aGUgcGF0Y2ggaGFzIGZpeGVkIHRoaXMgYW5kIG5vdyB0aGUgY29kZSBkb2VzIG5vdCByZWFkIHBhc3QgdGhlIGFsbG9jYXRlZCBidWZmZXIuIFRoZSBwYXRjaCBmaXhlcyB0aGlzIGJ5IGNoZWNraW5nIGByZXNwLSZndDtsZW4gJmx0OyBzaXplICYjNDM7IDFgLiBUaGUgY2hhbmdlIG1vZGlmaWVzIGJvdW5kcyBjaGVja2luZyBpbiBhIHdheSB0aGF0IHJlc3RyaWN0cyBhY2Nlc3MuCgpUaGUgY29yZSBvZiB0aGUgcHJvYmxlbSBoZXJlIHdhcyBhIEtBU0FOIGRldGVjdGFibGUgb3V0LW9mLWJvdW5kcyByZWFkLCBhbmQgdGhlIHBhdGNoIGZpeGVzIGl0IGJ5IGltcGxlbWVudGluZyBhIHByb3BlciBib3VuZHMgY2hlY2ssIG5vdCBieSBleHBvc2luZyBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkuCgpTbywgYWNjb3JkaW5nIHRvIHRoZSBydWxlcywgc2luY2UgS0FTQU4gaGFuZGxlcyB0aGUgdHlwZSBvZiBidWcgdGhpcyBwYXRjaCBhZGRyZXNzZXMsIGFuZCB0aGUgcGF0Y2ggZG9lc24mIzM5O3QgaW50cm9kdWNlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLCB0aGlzIGRvZXNuJiMzOTt0IG5lZWQgS01TQU4uIFRoaXMgcGF0Y2ggZmFsbHMgaW50byB0aGUgY2F0ZWdvcnkgb2YgJiMzNDtwcmltYXJpbHkgcmlza3Mgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgLi4uICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQgYnkgS0FTQU4pJiMzNDsuIFRoZSBzdHJ1Y3R1cmVzIGFyZSBmdWxseSBpbml0aWFsaXplZCBvciBjaGVja2VkLgoKVGhlcmVmb3JlLCBgTmVlZHNLTVNBTiA9IGZhbHNlYC4gSXQgaXMgYSBjbGFzc2ljIEtBU0FOIGlzc3VlLiBUaGUgcGF0Y2ggYWRkcyBhIGxlbmd0aCBjaGVjayBhbmQgZG9lc24mIzM5O3QgZG8gYW55dGhpbmcgZWxzZS4KCkxldCYjMzk7cyBwcmVwYXJlIHRoZSBqdXN0aWZpY2F0aW9uLCBjb250cmFzdGluZyBLQVNBTiBhbmQgS01TQU4uCkluIHRoZSBgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEoKWAgZnVuY3Rpb24sIHRoZSBkcml2ZXIgaGFuZGxlcyBpbmNvbWluZyBORkMgREVQIHJlcXVlc3RzLiBQcmV2aW91c2x5LCB3aGVuIHRoZSBESUQgYml0IGluIHRoZSBQRkIgYnl0ZSB3YXMgc2V0LCBpdCB1bmNvbmRpdGlvbmFsbHkgY2hlY2tlZCBgcmVzcC0mZ3Q7ZGF0YVszXWAgd2l0aG91dCBlbnN1cmluZyBgcmVzcC0mZ3Q7bGVuICZndDs9IDRgIChzaW5jZSB0aGUgcHJpb3IgY2hlY2sgb25seSBlbnN1cmVkIGByZXNwLSZndDtsZW4gJmd0Oz0gM2ApLCBsZWFkaW5nIHRvIGEgcG90ZW50aWFsIDEtYnl0ZSBvdXQtb2YtYm91bmRzIHJlYWQuIE91dC1vZi1ib3VuZHMgcmVhZCBkZXRlY3Rpb24gb24gc2xhYi9za2IgYnVmZmVycyBpcyBoYW5kbGVkIGRpcmVjdGx5IGJ5IEtBU0FOIChlLmcuLCBzbGFiLW91dC1vZi1ib3VuZHMpLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSwgZG9lcyBub3QgYWx0ZXIgc3RydWN0dXJlcyBjb3BpZWQgdG8gdXNlcnNwYWNlLCBkb2VzIG5vdCBsZWF2ZSBhbnkgdmFyaWFibGVzIHVuaW5pdGlhbGl6ZWQsIGFuZCBhY3R1YWxseSB0aWdodGVucyBsZW5ndGggdmFsaWRhdGlvbiBvbiBpbmNvbWluZyBkYXRhIGJlZm9yZSBpbmRleGluZyB0aGUgYnVmZmVyLiBObyB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciBpbmZvcm1hdGlvbiBsZWFrcyBhcmUgaW50cm9kdWNlZCBvciBleHBvc2VkLiBUaGVyZWZvcmUsIGBOZWVkc0tNU0FOPWZhbHNlYC4KTGV0JiMzOTtzIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ni8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTIgMTM6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyByZWFkIGluIGBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcSgpYCB3aGVyZSBgcmVzcC1cdTAwM2VkYXRhWzNdYCB3YXMgcmVhZCB3aXRob3V0IGZpcnN0IHZlcmlmeWluZyB0aGF0IGByZXNwLVx1MDAzZWxlbmAgd2FzIGF0IGxlYXN0IGBzaXplICYjNDM7IDFgICg0IGJ5dGVzKS4gXG5cblRoaXMgaXMgYSBib3VuZHMtY2hlY2tpbmcgaXNzdWU6IGFjY2Vzc2luZyBieXRlcyBiZXlvbmQgYHJlc3AtXHUwMDNlbGVuYCBpcyBhbiBvdXQtb2YtYm91bmRzIGFjY2VzcyBkaXJlY3RseSBkZXRlY3RhYmxlIGJ5IEtBU0FOIChlLmcuLCBzbGFiLW91dC1vZi1ib3VuZHMgb24gc2tiIGRhdGEpLiBUaGUgY2hhbmdlIGRvZXMgbm90IGludHJvZHVjZSBhbnkgdW5pbml0aWFsaXplZCBzdGFjayBvciBoZWFwIHZhcmlhYmxlcywgZG9lcyBub3QgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgcGFkZGluZyBvciBzdHJ1Y3QgZmllbGRzIHRvIHVzZXIgc3BhY2UsIGFuZCBkb2VzIG5vdCBhbHRlciBjb250cm9sIGZsb3cgYmFzZWQgb24gdW5pbml0aWFsaXplZCBtZW1vcnkuIEJlY2F1c2Ugc3RhbmRhcmQgS0FTQU4gZnVsbHkgY292ZXJzIHRoaXMgY2xhc3Mgb2YgYnVncyBhbmQgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgYXJlIGludHJvZHVjZWQsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyByZWFkIGluIGBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcSgpYCB3aGVyZSBgcmVzcC1cdTAwM2VkYXRhWzNdYCB3YXMgcmVhZCB3aXRob3V0IGZpcnN0IHZlcmlmeWluZyB0aGF0IGByZXNwLVx1MDAzZWxlbmAgd2FzIGF0IGxlYXN0IGBzaXplICYjNDM7IDFgICg0IGJ5dGVzKS4gXG5cblRoaXMgaXMgYSBib3VuZHMtY2hlY2tpbmcgaXNzdWU6IGFjY2Vzc2luZyBieXRlcyBiZXlvbmQgYHJlc3AtXHUwMDNlbGVuYCBpcyBhbiBvdXQtb2YtYm91bmRzIGFjY2VzcyBkaXJlY3RseSBkZXRlY3RhYmxlIGJ5IEtBU0FOIChlLmcuLCBzbGFiLW91dC1vZi1ib3VuZHMgb24gc2tiIGRhdGEpLiBUaGUgY2hhbmdlIGRvZXMgbm90IGludHJvZHVjZSBhbnkgdW5pbml0aWFsaXplZCBzdGFjayBvciBoZWFwIHZhcmlhYmxlcywgZG9lcyBub3QgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgcGFkZGluZyBvciBzdHJ1Y3QgZmllbGRzIHRvIHVzZXIgc3BhY2UsIGFuZCBkb2VzIG5vdCBhbHRlciBjb250cm9sIGZsb3cgYmFzZWQgb24gdW5pbml0aWFsaXplZCBtZW1vcnkuIEJlY2F1c2Ugc3RhbmRhcmQgS0FTQU4gZnVsbHkgY292ZXJzIHRoaXMgY2xhc3Mgb2YgYnVncyBhbmQgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgYXJlIGludHJvZHVjZWQsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0xMlQxMzoyMzozMi4yODIyNzI4MzVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzQ4OTQ2NTA5MzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkZDXCIsXG4gICAgXCJORkNfRElHSVRBTFwiLFxuICAgIFwiTkZDX1NJTVwiLFxuICAgIFwiTkZDX1BPUlQxMDBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcVwiLFxuICAgIFwiZGlnaXRhbF90Z19zZW5kX2RlcF9yZXNcIixcbiAgICBcImRpZ2l0YWxfdGdfcmVjdl9hdHJfcmVxXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIHJlYWQgaW4gYGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxKClgIHdoZXJlIGByZXNwLVxcdTAwM2VkYXRhWzNdYCB3YXMgcmVhZCB3aXRob3V0IGZpcnN0IHZlcmlmeWluZyB0aGF0IGByZXNwLVxcdTAwM2VsZW5gIHdhcyBhdCBsZWFzdCBgc2l6ZSArIDFgICg0IGJ5dGVzKS4gXFxuXFxuVGhpcyBpcyBhIGJvdW5kcy1jaGVja2luZyBpc3N1ZTogYWNjZXNzaW5nIGJ5dGVzIGJleW9uZCBgcmVzcC1cXHUwMDNlbGVuYCBpcyBhbiBvdXQtb2YtYm91bmRzIGFjY2VzcyBkaXJlY3RseSBkZXRlY3RhYmxlIGJ5IEtBU0FOIChlLmcuLCBzbGFiLW91dC1vZi1ib3VuZHMgb24gc2tiIGRhdGEpLiBUaGUgY2hhbmdlIGRvZXMgbm90IGludHJvZHVjZSBhbnkgdW5pbml0aWFsaXplZCBzdGFjayBvciBoZWFwIHZhcmlhYmxlcywgZG9lcyBub3QgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgcGFkZGluZyBvciBzdHJ1Y3QgZmllbGRzIHRvIHVzZXIgc3BhY2UsIGFuZCBkb2VzIG5vdCBhbHRlciBjb250cm9sIGZsb3cgYmFzZWQgb24gdW5pbml0aWFsaXplZCBtZW1vcnkuIEJlY2F1c2Ugc3RhbmRhcmQgS0FTQU4gZnVsbHkgY292ZXJzIHRoaXMgY2xhc3Mgb2YgYnVncyBhbmQgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgYXJlIGludHJvZHVjZWQsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGlucHV0IHZhbGlkYXRpb24gaW4gdGhlIE5GQyBkaWdpdGFsIHRhcmdldCBtb2RlIERFUCByZXF1ZXN0IGhhbmRsaW5nIChkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcSkgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIGFjY2VzcyB3aGVuIHRoZSBESUQgYml0IGlzIHNldCBieSB2ZXJpZnlpbmcgZnJhbWUgbGVuZ3RoIGFnYWluc3QgZXhwZWN0ZWQgc2l6ZSBhbmQgY29ycmVjdGx5IGluZGV4aW5nIHJlc3AtXFx1MDAzZWRhdGEuIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIHZpcnR1YWwgTkZDIGRyaXZlcnMgKGUuZy4gbmZjc2ltKSBhbmQgZW11bGF0ZWQgVVNCIE5GQyBkb25nbGVzIChwb3J0MTAwKSwgbWFraW5nIGl0IHdvcnRoIGZ1enppbmcgZm9yIGJvdW5kYXJ5IGlzc3VlcyBhbmQgc3RhdGUgdHJhbnNpdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEyVDEzOjIzOjMyLjI4MjI3ODIyNVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ4OTkyNTA0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDEwMjBmMjY5ZTg1NTY2NzE0MGJjMDRmODNhOTY4NDk5MDlhZjc1ZGRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFNhdCBTZXAgMTIgMTM6MjM6MzAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L25mYy9kaWdpdGFsX2RlcC5jIGIvbmV0L25mYy9kaWdpdGFsX2RlcC5jXFxuaW5kZXggMzk4MmZhMDg0NzM3Zi4uYWU1NDA3ZmNhMTJkNCAxMDA2NDRcXG4tLS0gYS9uZXQvbmZjL2RpZ2l0YWxfZGVwLmNcXG4rKysgYi9uZXQvbmZjL2RpZ2l0YWxfZGVwLmNcXG5AQCAtMTExNywxMiArMTExNywxMiBAQCBzdGF0aWMgdm9pZCBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB2b2lkICphcmcsXFxuIFxcdHBmYiA9IGRlcF9yZXEtXFx1MDAzZXBmYjtcXG4gXFxuIFxcdGlmIChESUdJVEFMX05GQ19ERVBfRElEX0JJVF9TRVQocGZiKSkge1xcbi1cXHRcXHRpZiAoZGRldi1cXHUwMDNlZGlkIFxcdTAwMjZcXHUwMDI2IChkZGV2LVxcdTAwM2VkaWQgPT0gcmVzcC1cXHUwMDNlZGF0YVszXSkpIHtcXG4tXFx0XFx0XFx0c2l6ZSsrO1xcbi1cXHRcXHR9IGVsc2Uge1xcbitcXHRcXHRpZiAocmVzcC1cXHUwMDNlbGVuIFxcdTAwM2Mgc2l6ZSArIDEgfHwgIWRkZXYtXFx1MDAzZWRpZCB8fFxcbitcXHRcXHQgICAgZGRldi1cXHUwMDNlZGlkICE9IHJlc3AtXFx1MDAzZWRhdGFbc2l6ZV0pIHtcXG4gXFx0XFx0XFx0cmMgPSAtRUlPO1xcbiBcXHRcXHRcXHRnb3RvIGV4aXQ7XFxuIFxcdFxcdH1cXG4rXFx0XFx0c2l6ZSsrO1xcbiBcXHR9IGVsc2UgaWYgKGRkZXYtXFx1MDAzZWRpZCkge1xcbiBcXHRcXHRyYyA9IC1FSU87XFxuIFxcdFxcdGdvdG8gZXhpdDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTJUMTM6MjM6MzMuNzczMzIwNDE0WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjoxMzA3NzcyMTM5NDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkZDXCIsXG4gICAgXCJORkNfRElHSVRBTFwiLFxuICAgIFwiTkZDX1NJTVwiLFxuICAgIFwiTkZDX1BPUlQxMDBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcVwiLFxuICAgIFwiZGlnaXRhbF90Z19zZW5kX2RlcF9yZXNcIixcbiAgICBcImRpZ2l0YWxfdGdfcmVjdl9hdHJfcmVxXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgaW5wdXQgdmFsaWRhdGlvbiBpbiB0aGUgTkZDIGRpZ2l0YWwgdGFyZ2V0IG1vZGUgREVQIHJlcXVlc3QgaGFuZGxpbmcgKGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxKSB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgYWNjZXNzIHdoZW4gdGhlIERJRCBiaXQgaXMgc2V0IGJ5IHZlcmlmeWluZyBmcmFtZSBsZW5ndGggYWdhaW5zdCBleHBlY3RlZCBzaXplIGFuZCBjb3JyZWN0bHkgaW5kZXhpbmcgcmVzcC1cXHUwMDNlZGF0YS4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgdmlydHVhbCBORkMgZHJpdmVycyAoZS5nLiBuZmNzaW0pIGFuZCBlbXVsYXRlZCBVU0IgTkZDIGRvbmdsZXMgKHBvcnQxMDApLCBtYWtpbmcgaXQgd29ydGggZnV6emluZyBmb3IgYm91bmRhcnkgaXNzdWVzIGFuZCBzdGF0ZSB0cmFuc2l0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAxMDIwZjI2OWU4NTU2NjcxNDBiYzA0ZjgzYTk2ODQ5OTA5YWY3NWRkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBTZXAgMTIgMTM6MjM6MzAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbmZjL2RpZ2l0YWxfZGVwLmMgYi9uZXQvbmZjL2RpZ2l0YWxfZGVwLmNcbmluZGV4IDM5ODJmYTA4NDczN2YuLmFlNTQwN2ZjYTEyZDQgMTAwNjQ0XG4tLS0gYS9uZXQvbmZjL2RpZ2l0YWxfZGVwLmNcbisrKyBiL25ldC9uZmMvZGlnaXRhbF9kZXAuY1xuQEAgLTExMTcsMTIgKzExMTcsMTIgQEAgc3RhdGljIHZvaWQgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxuIFx0cGZiID0gZGVwX3JlcS1cdTAwM2VwZmI7XG4gXG4gXHRpZiAoRElHSVRBTF9ORkNfREVQX0RJRF9CSVRfU0VUKHBmYikpIHtcbi1cdFx0aWYgKGRkZXYtXHUwMDNlZGlkIFx1MDAyNlx1MDAyNiAoZGRldi1cdTAwM2VkaWQgPT0gcmVzcC1cdTAwM2VkYXRhWzNdKSkge1xuLVx0XHRcdHNpemUrKztcbi1cdFx0fSBlbHNlIHtcbitcdFx0aWYgKHJlc3AtXHUwMDNlbGVuIFx1MDAzYyBzaXplICsgMSB8fCAhZGRldi1cdTAwM2VkaWQgfHxcbitcdFx0ICAgIGRkZXYtXHUwMDNlZGlkICE9IHJlc3AtXHUwMDNlZGF0YVtzaXplXSkge1xuIFx0XHRcdHJjID0gLUVJTztcbiBcdFx0XHRnb3RvIGV4aXQ7XG4gXHRcdH1cbitcdFx0c2l6ZSsrO1xuIFx0fSBlbHNlIGlmIChkZGV2LVx1MDAzZWRpZCkge1xuIFx0XHRyYyA9IC1FSU87XG4gXHRcdGdvdG8gZXhpdDtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEyVDEzOjIzOjMzLjc3MzMyMjgxNFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjE2MjM0MTMzNTAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlRyaWFnZSBvZiBgbmV0L25mYy9kaWdpdGFsX2RlcC5jYCBQYXRjaCBmb3IgU3l6a2FsbGVyIEZ1enppbmcqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCBhIHBhdGNoIGZvciBgbmV0L25mYy9kaWdpdGFsX2RlcC5jYCBhbmQgbXkgZ29hbCBpcyB0byBmaWd1cmUgb3V0IGlmIGl0J3Mgd29ydGggdGhyb3dpbmcgYXQgc3l6a2FsbGVyLiBGaXJzdCwgbGV0J3MgZG8gYSBxdWljayByaXNrIGFzc2Vzc21lbnQuIFRoaXMgaXMganVzdCByb3V0aW5lIGtlcm5lbCBjb2RlIHJldmlldywgbG9va2luZyBmb3IgcG90ZW50aWFsIGJ1Z3MgdG8gZmVlZCBpbnRvIHRoZSBmdXp6aW5nIHBpcGVsaW5lIOKAkyBwdXJlbHkgZGVmZW5zaXZlIHNlY3VyaXR5IHN0dWZmLCBubyBuZWZhcmlvdXMgaW50ZW50IGhlcmUuIEknbSBqdXN0IGFuYWx5emluZyBhIGNvZGUgY2hhbmdlIGFuZCBhc3Nlc3NpbmcgaXRzIHBvdGVudGlhbCBmb3IgZXhwbG9pdGF0aW9uIHRocm91Z2ggZnV6emluZy4gVGhhdCBzZWVtcyB0b3RhbGx5IGJlbmlnbiBhbmQgZmFsbHMgc3F1YXJlbHkgd2l0aGluIG15IHJlbWl0LlxuXG5Ob3csIGxldCdzIGRpdmUgaW50byB0aGUgcGF0Y2ggaXRzZWxmLiBJdCBsb29rcyBsaWtlIHdlJ3ZlIGdvdCBhIGNoYW5nZSBpbiBgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXFgLiBUaGUgb3JpZ2luYWwgY2hlY2sgd2FzIGNvbXBhcmluZyBhIGRldmljZSBJRCAoYGRkZXYtXHUwMDNlZGlkYCkgd2l0aCBgcmVzcC1cdTAwM2VkYXRhWzNdYCB3aGVuIHRoZSBgRElHSVRBTF9ORkNfREVQX0RJRF9CSVRfU0VUYCBpcyB0cnVlLiBUaGUgcGF0Y2ggaGFzIGNoYW5nZWQgdGhhdCBjaGVjay4gSXQgbm93IGNoZWNrcyB0aGUgbGVuZ3RoIGByZXNwLVx1MDAzZWxlbmAgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIGBzaXplKzFgLiBJdCBhbHNvIGNoZWNrcyBpZiBhIGRldmljZSBJRCBgZGRldi1cdTAwM2VkaWRgIGV4aXN0cywgYW5kIGlmIGl0IGRvZXMsIGl0IGNoZWNrcyB0aGF0IHRoZSBleHBlY3RlZCBESUQgKGBkZGV2LVx1MDAzZWRpZGApIG1hdGNoZXMgYHJlc3AtXHUwMDNlZGF0YVtzaXplXWAuIElmIGFueSBvZiB0aGVzZSBjaGVja3MgZmFpbCwgaXQgcmV0dXJucyBhbiBgRUlPYCBlcnJvci4gU28gd2UgaGF2ZSBtb3JlIGNvbXByZWhlbnNpdmUgY2hlY2tzLlxuXG5UaGUga2V5IGhlcmUgaXMgdW5kZXJzdGFuZGluZyB0aGUgY29udGV4dCBvZiB0aGF0IGZ1bmN0aW9uLCBgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXFgLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0J3MgZ29pbmcgb24gKmFyb3VuZCogdGhpcyBjb2RlLiBMZXQncyBzZWUgd2hhdCB0aGUgZnVuY3Rpb24gZG9lcyAtIHdoaWNoIEkgY2FuIGRvIHVzaW5nIG15IHRydXN0eSB0b29scy4gSSdsbCB1c2UgZWl0aGVyIGByZWFkLWZpbGVgIG9yIGBncmVwcGVyYCB0byBzZWUgaG93IHRoZSBmdW5jdGlvbiBpcyB1c2VkLCB3aGF0IGRhdGEgc3RydWN0dXJlcyBpdCBvcGVyYXRlcyBvbiwgYW5kIHdoYXQgdGhlIG92ZXJhbGwgZmxvdyBpcy4gVGhhdCdsbCBwcm92aWRlIHRoZSBuZWNlc3NhcnkgY29udGV4dCB0byBkZXRlcm1pbmUgaWYgdGhpcyBwYXRjaCBpcyBhY3R1YWxseSBpbnRlcmVzdGluZyBmcm9tIGEgZnV6emluZyBwZXJzcGVjdGl2ZSwgYW5kIGlkZW50aWZ5IGNyaXRpY2FsIGNvZGUgcGF0aHMgYW5kIHBvdGVudGlhbCBmb2N1cyBzeW1ib2xzIGZvciBzeXprYWxsZXIuIEFmdGVyIHRoaXMsIEkgbmVlZCB0byBjb21lIHVwIHdpdGggc29tZSByZWFzb25pbmcgdG8gZXhwbGFpbiB0aGlzIGRlY2lzaW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTU5LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYxLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTJUMTM6MjM6NTAuMDA3NDU5MTE3WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTg5OTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L25mYy9kaWdpdGFsX2RlcC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDExMDAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjExMDA6XFx0XFx0XFx0Z290byBleGl0O1xcbjExMDE6XFx0XFx0fVxcbjExMDI6XFx0XFxuMTEwMzpcXHRcXHRpZiAocmVzcC1cXHUwMDNlbGVuIFxcdTAwM2UgZGRldi1cXHUwMDNlbG9jYWxfcGF5bG9hZF9tYXgpIHtcXG4xMTA0OlxcdFxcdFxcdHJjID0gLUVNU0dTSVpFO1xcbjExMDU6XFx0XFx0XFx0Z290byBleGl0O1xcbjExMDY6XFx0XFx0fVxcbjExMDc6XFx0XFxuMTEwODpcXHRcXHRzaXplID0gc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKTtcXG4xMTA5OlxcdFxcdGRlcF9yZXEgPSAoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKilyZXNwLVxcdTAwM2VkYXRhO1xcbjExMTA6XFx0XFxuMTExMTpcXHRcXHRpZiAocmVzcC1cXHUwMDNlbGVuIFxcdTAwM2Mgc2l6ZSB8fCBkZXBfcmVxLVxcdTAwM2VkaXIgIT0gRElHSVRBTF9ORkNfREVQX0ZSQU1FX0RJUl9PVVQgfHxcXG4xMTEyOlxcdFxcdCAgICBkZXBfcmVxLVxcdTAwM2VjbWQgIT0gRElHSVRBTF9DTURfREVQX1JFUSkge1xcbjExMTM6XFx0XFx0XFx0cmMgPSAtRUlPO1xcbjExMTQ6XFx0XFx0XFx0Z290byBleGl0O1xcbjExMTU6XFx0XFx0fVxcbjExMTY6XFx0XFxuMTExNzpcXHRcXHRwZmIgPSBkZXBfcmVxLVxcdTAwM2VwZmI7XFxuMTExODpcXHRcXG4xMTE5OlxcdFxcdGlmIChESUdJVEFMX05GQ19ERVBfRElEX0JJVF9TRVQocGZiKSkge1xcbjExMjA6XFx0XFx0XFx0aWYgKHJlc3AtXFx1MDAzZWxlbiBcXHUwMDNjIHNpemUgKyAxIHx8ICFkZGV2LVxcdTAwM2VkaWQgfHxcXG4xMTIxOlxcdFxcdFxcdCAgICBkZGV2LVxcdTAwM2VkaWQgIT0gcmVzcC1cXHUwMDNlZGF0YVtzaXplXSkge1xcbjExMjI6XFx0XFx0XFx0XFx0cmMgPSAtRUlPO1xcbjExMjM6XFx0XFx0XFx0XFx0Z290byBleGl0O1xcbjExMjQ6XFx0XFx0XFx0fVxcbjExMjU6XFx0XFx0XFx0c2l6ZSsrO1xcbjExMjY6XFx0XFx0fSBlbHNlIGlmIChkZGV2LVxcdTAwM2VkaWQpIHtcXG4xMTI3OlxcdFxcdFxcdHJjID0gLUVJTztcXG4xMTI4OlxcdFxcdFxcdGdvdG8gZXhpdDtcXG4xMTI5OlxcdFxcdH1cXG4xMTMwOlxcdFxcbjExMzE6XFx0XFx0aWYgKERJR0lUQUxfTkZDX0RFUF9OQURfQklUX1NFVChwZmIpKSB7XFxuMTEzMjpcXHRcXHRcXHRyYyA9IC1FSU87XFxuMTEzMzpcXHRcXHRcXHRnb3RvIGV4aXQ7XFxuMTEzNDpcXHRcXHR9XFxuMTEzNTpcXHRcXG4xMTM2OlxcdFxcdGlmIChzaXplIFxcdTAwM2UgcmVzcC1cXHUwMDNlbGVuKSB7XFxuMTEzNzpcXHRcXHRcXHRyYyA9IC1FSU87XFxuMTEzODpcXHRcXHRcXHRnb3RvIGV4aXQ7XFxuMTEzOTpcXHRcXHR9XFxuMTE0MDpcXHRcXG4xMTQxOlxcdFxcdHNrYl9wdWxsKHJlc3AsIHNpemUpO1xcbjExNDI6XFx0XFxuMTE0MzpcXHRcXHRzd2l0Y2ggKERJR0lUQUxfTkZDX0RFUF9QRkJfVFlQRShwZmIpKSB7XFxuMTE0NDpcXHRcXHRjYXNlIERJR0lUQUxfTkZDX0RFUF9QRkJfSV9QRFU6XFxuMTE0NTpcXHRcXHRcXHRwcl9kZWJ1ZyhcXFwiRElHSVRBTF9ORkNfREVQX1BGQl9JX1BEVVxcXFxuXFxcIik7XFxuMTE0NjpcXHRcXG4xMTQ3OlxcdFxcdFxcdGlmIChkZGV2LVxcdTAwM2VhdG5fY291bnQpIHtcXG4xMTQ4OlxcdFxcdFxcdFxcdC8qIFRoZSB0YXJnZXQgaGFzIHJlY2VpdmVkIChhbmQgcmVwbGllZCB0bykgYXQgbGVhc3Qgb25lXFxuMTE0OTpcXHRcXHRcXHRcXHQgKiBBVE4gREVQX1JFUS5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTJUMTM6MjM6NTAuMDA3NTU5NzU3WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MjgyNDI3MjAxMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIFRob3VnaHRzIG9uIE5GQyBGdXp6aW5nIGluIFN5emthbGxlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBuZXQvbmZjL2RpZ2l0YWxfZGVwLmNgLCB3aGljaCBJIGtub3cgaXMgcGFydCBvZiB0aGUgTkZDIERpZ2l0YWwgUHJvdG9jb2wgd2l0aGluIHRoZSBORkMgc3Vic3lzdGVtLiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXM6IGNhbiB3ZSBldmVuICpyZWFjaCogTkZDIHdpdGhpbiB0aGUgc3RhbmRhcmQgU3l6a2FsbGVyIHNldHVwIG9yIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IEknbSB0aGlua2luZyBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZSwgdHlwaWNhbCBmdXp6aW5nIHNjZW5hcmlvcy5cblxuSG9sZCBvbiwgSSB2YWd1ZWx5IHJlY2FsbCBzb21lIG1lbnRpb24gb2YgTkZDIGZ1enppbmcgaW4gU3l6a2FsbGVyLiBMZXQncyBjb25maXJtIC0gZG9lcyBTeXprYWxsZXIgYWN0dWFsbHkgc3VwcG9ydCBORkMsIG9yIGFtIEkgbWlzdGFrZW4/IElmIHNvLCB3aGF0IGRyaXZlcnMgb3IgaW50ZXJmYWNlcyBlbmFibGUgdGhpcyBzdXBwb3J0P1xuXG5NeSBtaW5kIGlzIHJhY2luZyB0aHJvdWdoIHBvc3NpYmlsaXRpZXMuIEknbSB0aGlua2luZyBvZiBkcml2ZXJzIGxpa2UgYG5mY3NpbWAgKHRoYXQncyB0aGUgTkZDIHNpbXVsYXRvciBkcml2ZXIsIHJpZ2h0PyBgZHJpdmVycy9uZmMvbmZjc2ltLmNgKSwgdmlydHVhbCBORkMgaW50ZXJmYWNlcywgcmF3IHNvY2tldHMsIE5ldGxpbmssIGFuZCBldmVuIHRoYXQgY2xldmVyIHBuNTMzIFVTQiBlbXVsYXRpb24gdGhyb3VnaCB0aGUgc3l6a2FsbGVyIFVTQiByYXcgZ2FkZ2V0LiBOb3cgSSBoYXZlIHRvIGdvIHRocm91Z2ggYG5mY3NpbWAgb3Igb3RoZXIgdmlydHVhbCBkcml2ZXJzIGZyb20gdGhlIGtlcm5lbCB0cmVlIGZvciBtb3JlIGluc2lnaHRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjI0LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTJUMTM6MjM6NTIuODMxODMzOTg5WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1NjU0MjAzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mY19kaWdpdGFsX2RldlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25mY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25mYy9uZmNzaW0uYy0xNS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYzoxNjojZGVmaW5lIE5GQ1NJTV9FUlIoZCwgZm10LCBhcmdzLi4uKSBuZmNfZXJyKFxcdTAwMjZkLVxcdTAwM2VuZmNfZGlnaXRhbF9kZXYtXFx1MDAzZW5mY19kZXYtXFx1MDAzZWRldiwgXFxcXFxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTE3LVxcdFxcdFxcdFxcdFxcdCAgICBcXFwiJXM6IFxcXCIgZm10LCBfX2Z1bmNfXywgIyMgYXJncylcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0xOC1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYzoxOTojZGVmaW5lIE5GQ1NJTV9EQkcoZCwgZm10LCBhcmdzLi4uKSBkZXZfZGJnKFxcdTAwMjZkLVxcdTAwM2VuZmNfZGlnaXRhbF9kZXYtXFx1MDAzZW5mY19kZXYtXFx1MDAzZWRldiwgXFxcXFxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTIwLVxcdFxcdFxcdFxcdFxcdCAgICBcXFwiJXM6IFxcXCIgZm10LCBfX2Z1bmNfXywgIyMgYXJncylcXG4tLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jPTMxPXN0cnVjdCBuZmNzaW0ge1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjMyOlxcdHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKm5mY19kaWdpdGFsX2RldjtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zMy1cXG4tLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jPTE4Mj1zdGF0aWMgdm9pZCBuZmNzaW1fcmVjdl93cShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0xOTctXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MTk4OlxcdGRldi1cXHUwMDNlY2IoZGV2LVxcdTAwM2VuZmNfZGlnaXRhbF9kZXYsIGRldi1cXHUwMDNlYXJnLCBza2IpO1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTE5OS19XFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjAwLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjIwMTpzdGF0aWMgaW50IG5mY3NpbV9zZW5kKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHN0cnVjdCBza19idWZmICpza2IsXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjAyLVxcdFxcdCAgICAgICB1MTYgdGltZW91dCwgbmZjX2RpZ2l0YWxfY21kX2NvbXBsZXRlX3QgY2IsIHZvaWQgKmFyZylcXG4tLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTIzOS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYzoyNDA6c3RhdGljIHZvaWQgbmZjc2ltX2Fib3J0X2NtZChzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2KVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTI0MS17XFxuLS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yNDYtXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MjQ3OnN0YXRpYyBpbnQgbmZjc2ltX3N3aXRjaF9yZihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBib29sIG9uKVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTI0OC17XFxuLS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yNTUtXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MjU2OnN0YXRpYyBpbnQgbmZjc2ltX2luX2NvbmZpZ3VyZV9odyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTI1Ny1cXHRcXHRcXHRcXHRcXHQgIGludCB0eXBlLCBpbnQgcGFyYW0pXFxuLS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yNzgtXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6Mjc5OnN0YXRpYyBpbnQgbmZjc2ltX2luX3NlbmRfY21kKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjgwLVxcdFxcdFxcdCAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MTYgdGltZW91dCxcXG4tLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTI4NS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYzoyODY6c3RhdGljIGludCBuZmNzaW1fdGdfY29uZmlndXJlX2h3KHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjg3LVxcdFxcdFxcdFxcdFxcdCAgaW50IHR5cGUsIGludCBwYXJhbSlcXG4tLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTMwOC1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYzozMDk6c3RhdGljIGludCBuZmNzaW1fdGdfc2VuZF9jbWQoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zMTAtXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBza19idWZmICpza2IsIHUxNiB0aW1lb3V0LFxcbi0tXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzE1LVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjMxNjpzdGF0aWMgaW50IG5mY3NpbV90Z19saXN0ZW4oc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdTE2IHRpbWVvdXQsXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzE3LVxcdFxcdFxcdCAgICBuZmNfZGlnaXRhbF9jbWRfY29tcGxldGVfdCBjYiwgdm9pZCAqYXJnKVxcbi0tXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM9MzQ2PXN0YXRpYyB2b2lkIG5mY3NpbV9kZWJ1Z2ZzX2luaXRfZGV2KHN0cnVjdCBuZmNzaW0gKmRldilcXG4tLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTM1Ny1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYzozNTg6XFx0aWR4ID0gZGV2LVxcdTAwM2VuZmNfZGlnaXRhbF9kZXYtXFx1MDAzZW5mY19kZXYtXFx1MDAzZWlkeDtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zNTktXFx0biA9IHNucHJpbnRmKGRldm5hbWUsIHNpemVvZihkZXZuYW1lKSwgXFxcIm5mYyVkXFxcIiwgaWR4KTtcXG4tLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jPTM3MD1zdGF0aWMgc3RydWN0IG5mY3NpbSAqbmZjc2ltX2RldmljZV9uZXcoc3RydWN0IG5mY3NpbV9saW5rICpsaW5rX2luLFxcbi0tXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzgyLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjM4MzpcXHRkZXYtXFx1MDAzZW5mY19kaWdpdGFsX2RldiA9XFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzg0LVxcdFxcdFxcdG5mY19kaWdpdGFsX2FsbG9jYXRlX2RldmljZShcXHUwMDI2bmZjc2ltX2RpZ2l0YWxfb3BzLFxcbi0tXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzg3LVxcdFxcdFxcdFxcdFxcdFxcdCAgICAwLCAwKTtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYzozODg6XFx0aWYgKCFkZXYtXFx1MDAzZW5mY19kaWdpdGFsX2Rldikge1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTM4OS1cXHRcXHRrZnJlZShkZXYpO1xcbi0tXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzkyLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjM5MzpcXHRuZmNfZGlnaXRhbF9zZXRfZHJ2ZGF0YShkZXYtXFx1MDAzZW5mY19kaWdpdGFsX2RldiwgZGV2KTtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zOTQtXFxuLS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zOTctXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6Mzk4OlxcdHJjID0gbmZjX2RpZ2l0YWxfcmVnaXN0ZXJfZGV2aWNlKGRldi1cXHUwMDNlbmZjX2RpZ2l0YWxfZGV2KTtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zOTktXFx0aWYgKHJjKSB7XFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtNDAwLVxcdFxcdHByX2VycihcXFwiQ291bGQgbm90IHJlZ2lzdGVyIGRpZ2l0YWwgZGV2aWNlICglZClcXFxcblxcXCIsIHJjKTtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYzo0MDE6XFx0XFx0bmZjX2RpZ2l0YWxfZnJlZV9kZXZpY2UoZGV2LVxcdTAwM2VuZmNfZGlnaXRhbF9kZXYpO1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQwMi1cXHRcXHRrZnJlZShkZXYpO1xcbi0tXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM9NDEyPXN0YXRpYyB2b2lkIG5mY3NpbV9kZXZpY2VfZnJlZShzdHJ1Y3QgbmZjc2ltICpkZXYpXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtNDEzLXtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYzo0MTQ6XFx0bmZjX2RpZ2l0YWxfdW5yZWdpc3Rlcl9kZXZpY2UoZGV2LVxcdTAwM2VuZmNfZGlnaXRhbF9kZXYpO1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQxNS1cXG4tLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQyMi1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYzo0MjM6XFx0bmZjX2RpZ2l0YWxfZnJlZV9kZXZpY2UoZGV2LVxcdTAwM2VuZmNfZGlnaXRhbF9kZXYpO1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQyNC1cXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYz00Mzk9c3RydWN0IHBvcnQxMDAge1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo0NDA6XFx0c3RydWN0IG5mY19kaWdpdGFsX2RldiAqbmZjX2RpZ2l0YWxfZGV2O1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy00NDEtXFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM9OTMxPXN0YXRpYyB2b2lkIHBvcnQxMDBfc2VuZF9jb21wbGV0ZShzdHJ1Y3QgdXJiICp1cmIpXFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtOTU0LVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo5NTU6c3RhdGljIHZvaWQgcG9ydDEwMF9hYm9ydF9jbWQoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldilcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtOTU2LXtcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYz0xMDI1PXN0YXRpYyB1MTYgcG9ydDEwMF9nZXRfZmlybXdhcmVfdmVyc2lvbihzdHJ1Y3QgcG9ydDEwMCAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEwNDYtXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjEwNDc6c3RhdGljIGludCBwb3J0MTAwX3N3aXRjaF9yZihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBib29sIG9uKVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMDQ4LXtcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMDcxLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxMDcyOnN0YXRpYyBpbnQgcG9ydDEwMF9pbl9zZXRfcmYoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdTggcmYpXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEwNzMte1xcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTExMDAtXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjExMDE6c3RhdGljIGludCBwb3J0MTAwX2luX3NldF9mcmFtaW5nKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIGludCBwYXJhbSlcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTEwMi17XFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTE0Mi1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTE0MzpzdGF0aWMgaW50IHBvcnQxMDBfaW5fY29uZmlndXJlX2h3KHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIGludCB0eXBlLFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMTQ0LVxcdFxcdFxcdFxcdCAgIGludCBwYXJhbSlcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYz0xMTU1PXN0YXRpYyB2b2lkIHBvcnQxMDBfaW5fY29tbV9yZl9jb21wbGV0ZShzdHJ1Y3QgcG9ydDEwMCAqZGV2LCB2b2lkICphcmcsXFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTIwMC1leGl0OlxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxMjAxOlxcdGNiKGRldi1cXHUwMDNlbmZjX2RpZ2l0YWxfZGV2LCBjYl9hcmctXFx1MDAzZWNvbXBsZXRlX2FyZywgcmVzcCk7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEyMDItXFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTIwNS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTIwNjpzdGF0aWMgaW50IHBvcnQxMDBfaW5fc2VuZF9jbWQoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTIwNy1cXHRcXHRcXHQgICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTE2IF90aW1lb3V0LFxcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEyMjgtXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjEyMjk6c3RhdGljIGludCBwb3J0MTAwX3RnX3NldF9yZihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB1OCByZilcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTIzMC17XFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTI1Ny1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTI1ODpzdGF0aWMgaW50IHBvcnQxMDBfdGdfc2V0X2ZyYW1pbmcoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgaW50IHBhcmFtKVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMjU5LXtcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMjk5LVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxMzAwOnN0YXRpYyBpbnQgcG9ydDEwMF90Z19jb25maWd1cmVfaHcoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgaW50IHR5cGUsXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEzMDEtXFx0XFx0XFx0XFx0ICAgaW50IHBhcmFtKVxcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jPTEzMzI9c3RhdGljIHZvaWQgcG9ydDEwMF90Z19jb21tX3JmX2NvbXBsZXRlKHN0cnVjdCBwb3J0MTAwICpkZXYsIHZvaWQgKmFyZyxcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMzY2LWV4aXQ6XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjEzNjc6XFx0Y2IoZGV2LVxcdTAwM2VuZmNfZGlnaXRhbF9kZXYsIGNiX2FyZy1cXHUwMDNlY29tcGxldGVfYXJnLCByZXNwKTtcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTM2OC1cXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMzcxLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxMzcyOnN0YXRpYyBpbnQgcG9ydDEwMF90Z19zZW5kX2NtZChzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMzczLVxcdFxcdFxcdCAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MTYgdGltZW91dCxcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMzk5LVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxNDAwOnN0YXRpYyBpbnQgcG9ydDEwMF9saXN0ZW5fbWRhYShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xNDAxLVxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgZGlnaXRhbF90Z19tZGFhX3BhcmFtcyAqcGFyYW1zLFxcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE0NTUtXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjE0NTY6c3RhdGljIGludCBwb3J0MTAwX2xpc3RlbihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB1MTYgdGltZW91dCxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTQ1Ny1cXHRcXHRcXHQgIG5mY19kaWdpdGFsX2NtZF9jb21wbGV0ZV90IGNiLCB2b2lkICphcmcpXFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM9MTQ4OT1zdGF0aWMgaW50IHBvcnQxMDBfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSxcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xNTcxLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxNTcyOlxcdGRldi1cXHUwMDNlbmZjX2RpZ2l0YWxfZGV2ID0gbmZjX2RpZ2l0YWxfYWxsb2NhdGVfZGV2aWNlKFxcdTAwMjZwb3J0MTAwX2RpZ2l0YWxfb3BzLFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xNTczLVxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgIFBPUlQxMDBfUFJPVE9DT0xTLFxcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE1NzYtXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgZGV2LVxcdTAwM2Vza2JfdGFpbHJvb20pO1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxNTc3OlxcdGlmICghZGV2LVxcdTAwM2VuZmNfZGlnaXRhbF9kZXYpIHtcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTU3OC1cXHRcXHRuZmNfZXJyKFxcdTAwMjZpbnRlcmZhY2UtXFx1MDAzZWRldixcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTU3OTpcXHRcXHRcXHRcXFwiQ291bGQgbm90IGFsbG9jYXRlIG5mY19kaWdpdGFsX2RldlxcXFxuXFxcIik7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE1ODAtXFx0XFx0cmMgPSAtRU5PTUVNO1xcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE1ODMtXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjE1ODQ6XFx0bmZjX2RpZ2l0YWxfc2V0X3BhcmVudF9kZXYoZGV2LVxcdTAwM2VuZmNfZGlnaXRhbF9kZXYsIFxcdTAwMjZpbnRlcmZhY2UtXFx1MDAzZWRldik7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjE1ODU6XFx0bmZjX2RpZ2l0YWxfc2V0X2RydmRhdGEoZGV2LVxcdTAwM2VuZmNfZGlnaXRhbF9kZXYsIGRldik7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE1ODYtXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjE1ODc6XFx0cmMgPSBuZmNfZGlnaXRhbF9yZWdpc3Rlcl9kZXZpY2UoZGV2LVxcdTAwM2VuZmNfZGlnaXRhbF9kZXYpO1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xNTg4LVxcdGlmIChyYykge1xcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE1OTYtZnJlZV9uZmNfZGV2OlxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxNTk3OlxcdG5mY19kaWdpdGFsX2ZyZWVfZGV2aWNlKGRldi1cXHUwMDNlbmZjX2RpZ2l0YWxfZGV2KTtcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTU5OC1cXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYz0xNjA4PXN0YXRpYyB2b2lkIHBvcnQxMDBfZGlzY29ubmVjdChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlKVxcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE2MTQtXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjE2MTU6XFx0bmZjX2RpZ2l0YWxfdW5yZWdpc3Rlcl9kZXZpY2UoZGV2LVxcdTAwM2VuZmNfZGlnaXRhbF9kZXYpO1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxNjE2OlxcdG5mY19kaWdpdGFsX2ZyZWVfZGV2aWNlKGRldi1cXHUwMDNlbmZjX2RpZ2l0YWxfZGV2KTtcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTYxNy1cXG4tLVxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM9MjE3PXN0cnVjdCBzdDk1aGZfY29udGV4dCB7XFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy0yMTgtXFx0c3RydWN0IHN0OTVoZl9zcGlfY29udGV4dCBzcGljb250ZXh0O1xcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6MjE5OlxcdHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXY7XFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy0yMjAtXFx0c3RydWN0IG5mY19kZXYgKm5mY2RldjtcXG4tLVxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM9NTMxPXN0YXRpYyBpbnQgaXNvMTQ0NDNfY29uZmlnX2ZkdChzdHJ1Y3Qgc3Q5NWhmX2NvbnRleHQgKnN0OTVjb250ZXh0LCBpbnQgd3R4bSlcXG4tLVxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtNTM0LVxcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFxcdTAwMjZzdDk1Y29udGV4dC1cXHUwMDNlc3BpY29udGV4dC5zcGlkZXYtXFx1MDAzZWRldjtcXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jOjUzNTpcXHRzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpuZmNkZGV2ID0gc3Q5NWNvbnRleHQtXFx1MDAzZWRkZXY7XFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy01MzYtXFx0dW5zaWduZWQgY2hhciBwcF90eXBlYjtcXG4tLVxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM9NjAyPXN0YXRpYyBpbnQgc3Q5NWhmX2hhbmRsZV93dHgoc3RydWN0IHN0OTVoZl9jb250ZXh0ICpzdGNvbnRleHQsXFxuLS1cXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTYwOC1cXHRzdHJ1Y3QgcGFyYW1fbGlzdCBuZXdfcGFyYW1zWzFdO1xcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6NjA5OlxcdHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKm5mY2RkZXYgPSBzdGNvbnRleHQtXFx1MDAzZWRkZXY7XFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy02MTAtXFx0c3RydWN0IGRldmljZSAqZGV2ID0gXFx1MDAyNnN0Y29udGV4dC1cXHUwMDNlbmZjZGV2LVxcdTAwM2VkZXY7XFxuLS1cXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jPTY5Mz1zdGF0aWMgaW50IHN0OTVoZl9yZXNwb25zZV9oYW5kbGVyKHN0cnVjdCBzdDk1aGZfY29udGV4dCAqc3Rjb250ZXh0LFxcbi0tXFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy02OTktXFx0dW5zaWduZWQgY2hhciB2YWxfbW07XFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzo3MDA6XFx0c3RydWN0IG5mY19kaWdpdGFsX2RldiAqbmZjZGRldiA9IHN0Y29udGV4dC1cXHUwMDNlZGRldjtcXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTcwMS1cXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcXHUwMDI2c3Rjb250ZXh0LVxcdTAwM2VuZmNkZXYtXFx1MDAzZWRldjtcXG4tLVxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM9NzY2PXN0YXRpYyBpcnFyZXR1cm5fdCBzdDk1aGZfaXJxX3RocmVhZF9oYW5kbGVyKGludCBpcnEsIHZvaWQgICpzdDk1aGZjb250ZXh0KVxcbi0tXFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy04NjgtLyogTkZDIG9wcyBmdW5jdGlvbnMgZGVmaW5pdGlvbiAqL1xcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6ODY5OnN0YXRpYyBpbnQgc3Q5NWhmX2luX2NvbmZpZ3VyZV9odyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtODcwLVxcdFxcdFxcdFxcdCAgaW50IHR5cGUsXFxuLS1cXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jPTkwMT1zdGF0aWMgaW50IHJmX29mZihzdHJ1Y3Qgc3Q5NWhmX2NvbnRleHQgKnN0Y29udGV4dClcXG4tLVxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtOTE0LVxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6OTE1OnN0YXRpYyBpbnQgc3Q5NWhmX2luX3NlbmRfY21kKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy05MTYtXFx0XFx0XFx0ICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtOTg4LS8qIHAycCB3aWxsIGJlIHN1cHBvcnRlZCBpbiBhIGxhdGVyIHJlbGVhc2UgISAqL1xcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6OTg5OnN0YXRpYyBpbnQgc3Q5NWhmX3RnX2NvbmZpZ3VyZV9odyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtOTkwLVxcdFxcdFxcdFxcdCAgaW50IHR5cGUsXFxuLS1cXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTk5NS1cXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jOjk5NjpzdGF0aWMgaW50IHN0OTVoZl90Z19zZW5kX2NtZChzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtOTk3LVxcdFxcdFxcdCAgICAgIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTEwMDQtXFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzoxMDA1OnN0YXRpYyBpbnQgc3Q5NWhmX3RnX2xpc3RlbihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtMTAwNi1cXHRcXHRcXHQgICAgdTE2IHRpbWVvdXQsXFxuLS1cXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTEwMTItXFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzoxMDEzOnN0YXRpYyBpbnQgc3Q5NWhmX3RnX2dldF9yZl90ZWNoKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHU4ICpyZl90ZWNoKVxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtMTAxNC17XFxuLS1cXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTEwMTctXFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzoxMDE4OnN0YXRpYyBpbnQgc3Q5NWhmX3N3aXRjaF9yZihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBib29sIG9uKVxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtMTAxOS17XFxuLS1cXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTEwMzMtLyogVE9ETyBzdDk1aGZfYWJvcnRfY21kICovXFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzoxMDM0OnN0YXRpYyB2b2lkIHN0OTVoZl9hYm9ydF9jbWQoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldilcXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTEwMzUte1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYz00MzA9c3RydWN0IHRyZjc5NzBhIHtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNDM1LVxcdHN0cnVjdCByZWd1bGF0b3JcXHRcXHQqdmRkaW9fcmVndWxhdG9yO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NDM2OlxcdHN0cnVjdCBuZmNfZGlnaXRhbF9kZXZcXHRcXHQqZGRldjtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTQzNy1cXHR1MzJcXHRcXHRcXHRcXHRxdWlya3M7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jPTExNDc9c3RhdGljIGludCB0cmY3OTcwYV9zd2l0Y2hfcmZfb24oc3RydWN0IHRyZjc5NzBhICp0cmYpXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExNzEtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMTcyOnN0YXRpYyBpbnQgdHJmNzk3MGFfc3dpdGNoX3JmKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIGJvb2wgb24pXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTczLXtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM9MTMxMj1zdGF0aWMgaW50IHRyZjc5NzBhX2luX2NvbmZpZ19mcmFtaW5nKHN0cnVjdCB0cmY3OTcwYSAqdHJmLCBpbnQgZnJhbWluZylcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTM4Ni1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEzODc6c3RhdGljIGludCB0cmY3OTcwYV9pbl9jb25maWd1cmVfaHcoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgaW50IHR5cGUsXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzg4LVxcdFxcdFxcdFxcdCAgICBpbnQgcGFyYW0pXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jPTE0Mzk9c3RhdGljIGludCB0cmY3OTcwYV9wZXJfY21kX2NvbmZpZyhzdHJ1Y3QgdHJmNzk3MGEgKnRyZixcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTUwNy1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE1MDg6c3RhdGljIGludCB0cmY3OTcwYV9zZW5kX2NtZChzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTUwOS1cXHRcXHRcXHQgICAgIHN0cnVjdCBza19idWZmICpza2IsIHUxNiB0aW1lb3V0LFxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYz0xNjcwPXN0YXRpYyBpbnQgdHJmNzk3MGFfdGdfY29uZmlnX2ZyYW1pbmcoc3RydWN0IHRyZjc5NzBhICp0cmYsIGludCBmcmFtaW5nKVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNzI4LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTcyOTpzdGF0aWMgaW50IHRyZjc5NzBhX3RnX2NvbmZpZ3VyZV9odyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBpbnQgdHlwZSxcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE3MzAtXFx0XFx0XFx0XFx0ICAgIGludCBwYXJhbSlcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTc2NC1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE3NjU6c3RhdGljIGludCBfdHJmNzk3MGFfdGdfbGlzdGVuKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHUxNiB0aW1lb3V0LFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTc2Ni1cXHRcXHRcXHQgICAgICAgbmZjX2RpZ2l0YWxfY21kX2NvbXBsZXRlX3QgY2IsIHZvaWQgKmFyZyxcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTg0My1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE4NDQ6c3RhdGljIGludCB0cmY3OTcwYV90Z19saXN0ZW4oc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdTE2IHRpbWVvdXQsXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xODQ1LVxcdFxcdFxcdCAgICAgIG5mY19kaWdpdGFsX2NtZF9jb21wbGV0ZV90IGNiLCB2b2lkICphcmcpXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE4NTQtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxODU1OnN0YXRpYyBpbnQgdHJmNzk3MGFfdGdfbGlzdGVuX21kKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xODU2LVxcdFxcdFxcdFxcdCB1MTYgdGltZW91dCwgbmZjX2RpZ2l0YWxfY21kX2NvbXBsZXRlX3QgY2IsXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE4NzctXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxODc4OnN0YXRpYyBpbnQgdHJmNzk3MGFfdGdfZ2V0X3JmX3RlY2goc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdTggKnJmX3RlY2gpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xODc5LXtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTg4OS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE4OTA6c3RhdGljIHZvaWQgdHJmNzk3MGFfYWJvcnRfY21kKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xODkxLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTJUMTM6MjM6NTIuODc3NDk1NzkyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MzUxMzMxMDA4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIFRob3VnaHRzIG9uIE5GQyBEcml2ZXIgSW52ZXN0aWdhdGlvbioqXG5cbk9rYXksIHNvIEkndmUgc3BvdHRlZCBgcG9ydDEwMGAuIFJpZ2h0LCB0aGF0J3MgYSBVU0IgTkZDIGRyaXZlci4gR29vZC4gSSBzZWUgaXRzIHByb2JlIGZ1bmN0aW9uLCBgcG9ydDEwMF9wcm9iZWAuIFRoYXQncyB0aGUgZW50cnkgcG9pbnQgdG8gaG93IGl0IGhhbmRsZXMgaXRzIGZ1bmN0aW9uYWxpdHkuIEltbWVkaWF0ZWx5LCBJJ20gdGhpbmtpbmcgYWJvdXQgZW11bGF0aW9uIHN0cmF0ZWdpZXMuIFVTQiBkcml2ZXJzIGFyZSBvZnRlbiByaXBlIGZvciBmdXp6aW5nLCBhbmQgSSBrbm93IHRoYXQgc3l6a2FsbGVyIGhhcyB0aGF0IHJhdyBnYWRnZXQgc2V0dXAsIHRoZSBgZHVtbXlfaGNkYCBhbmQgYHJhd19nYWRnZXRgIHN0dWZmLiBUaGF0IGNvdWxkIGJlIGEgZGlyZWN0IGxpbmUgdG8gbWFuaXB1bGF0ZSB0aGUgZHJpdmVyIHdpdGhvdXQgbmVlZGluZyBhY3R1YWwgaGFyZHdhcmUuIEkgc2hvdWxkIHByb2JhYmx5IGFsc28gY29uc2lkZXIgaW50ZXJhY3Rpbmcgd2l0aCBvciBldmVuIGNyZWF0aW5nIGFuIGBuZmNzaW1gIGluc3RhbmNlIGFzIGFub3RoZXIgYXZlbnVlIGZvciB0ZXN0aW5nLlxuXG5GdXJ0aGVybW9yZSwgbXkgbWluZCBqdW1wcyB0byBpbnZlc3RpZ2F0aW5nIGhvdyB0aGUgZHJpdmVyJ3MgaW5uZXIgd29ya2luZ3MgYXJlIHVzZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkYXRhIGZsb3csIGFuZCBzcGVjaWZpY2FsbHksIEknbSBjdXJpb3VzIGFib3V0IHRoZSBmdW5jdGlvbiBgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXFgLiBIb3cgaXMgdGhpcyBmdW5jdGlvbiBhY3R1YWxseSAqdXNlZCo/IFdoYXQgYXJlIHRoZSBjYWxsaW5nIGNvbnRleHRzPyBMZXQncyB0cmFjZSBiYWNrIHRoZSBjYWxsZXJzIG9mIHRoaXMgZnVuY3Rpb24uIFVuZGVyc3RhbmRpbmcgaXRzIGludGVyYWN0aW9uIHdpdGggdGhlIGRyaXZlciB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgZ3Jhc3Agb2YgdGhlIHBvdGVudGlhbCBhdHRhY2sgc3VyZmFjZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE2NzYsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTJUMTM6MjM6NTYuMzkwODA3ODUzWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3NDU2MDcyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25mYy9kaWdpdGFsX2RlcC5jPTEwNj1zdGF0aWMgdm9pZCBkaWdpdGFsX2luX3JlY3ZfZGVwX3JlcyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB2b2lkICphcmcsXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwNy1cXHRcXHRcXHRcXHQgICAgc3RydWN0IHNrX2J1ZmYgKnJlc3ApO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDg6c3RhdGljIHZvaWQgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDktXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBza19idWZmICpyZXNwKTtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz05Nzg9c3RhdGljIGludCBkaWdpdGFsX3RnX3NlbmRfYWNrKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTAxMi1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTAxMzpcXHRyYyA9IGRpZ2l0YWxfdGdfc2VuZF9jbWQoZGRldiwgc2tiLCAxNTAwLCBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcSxcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTAxNC1cXHRcXHRcXHRcXHQgZGF0YV9leGNoKTtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz0xMDI0PXN0YXRpYyBpbnQgZGlnaXRhbF90Z19zZW5kX2F0bihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2KVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwNTEtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwNTI6XFx0cmMgPSBkaWdpdGFsX3RnX3NlbmRfY21kKGRkZXYsIHNrYiwgMTUwMCwgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEsXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwNTMtXFx0XFx0XFx0XFx0IE5VTEwpO1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTEwNjA9c3RhdGljIGludCBkaWdpdGFsX3RnX3NlbmRfc2F2ZWRfc2tiKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYpXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTA2OS1cXHRyYyA9IGRpZ2l0YWxfdGdfc2VuZF9jbWQoZGRldiwgZGRldi1cXHUwMDNlc2F2ZWRfc2tiLCAxNTAwLFxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDcwOlxcdFxcdFxcdFxcdCBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcSwgTlVMTCk7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwNzEtXFx0aWYgKHJjKVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwNzYtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwNzc6c3RhdGljIHZvaWQgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDc4LVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqcmVzcClcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz0xMjk3PWludCBkaWdpdGFsX3RnX3NlbmRfZGVwX3JlcyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEzMzEtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEzMzI6XFx0cmMgPSBkaWdpdGFsX3RnX3NlbmRfY21kKGRkZXYsIHRtcF9za2IsIDE1MDAsIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxLFxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzMzLVxcdFxcdFxcdFxcdCBOVUxMKTtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz0xMzQ4PXN0YXRpYyB2b2lkIGRpZ2l0YWxfdGdfc2VuZF9wc2xfcmVzX2NvbXBsZXRlKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTM1OS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTM2MDpcXHRkaWdpdGFsX3RnX2xpc3RlbihkZGV2LCAxNTAwLCBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcSwgTlVMTCk7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEzNjEtXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9MTQ2Nz1zdGF0aWMgdm9pZCBkaWdpdGFsX3RnX3NlbmRfYXRyX3Jlc19jb21wbGV0ZShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTE0ODUtXFx0ZWxzZVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxNDg2OlxcdFxcdGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxKGRkZXYsIGFyZywgcmVzcCk7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTE0ODctfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMlQxMzoyMzo1Ni40MzgyNzAzNTZaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjo0NDE2MzQ0Mzk2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2g6IE5GQyBESUQgSGFuZGxpbmcqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gdW5kZXJzdGFuZCB0aGUgY29yZSBsb2dpYyBvZiB0aGlzIHBhdGNoLiBJdCBhcHBlYXJzIHRvIGJlIHJlbGF0ZWQgdG8gaGFuZGxpbmcgdGhlIERldmljZSBJRCAoRElEKSBmaWVsZCB3aXRoaW4gdGhlIE5GQyBEaWdpdGFsIERFUCBwcm90b2NvbC4gSSdtIGZvY3VzaW5nIG9uIHRoZSBjaGFuZ2VzIG1hZGUgdG8gdGhlIGBwZmJgIHZhcmlhYmxlIGFuZCB0aGUgY29uZGl0aW9uYWwgbG9naWMgc3Vycm91bmRpbmcgdGhlIGBkZGV2LVx1MDAzZWRpZGAgY2hlY2suXG5cbkxvb2tpbmcgYXQgdGhlIG9yaWdpbmFsIGNvZGUgYW5kIHRoZSBwYXRjaCBzaWRlLWJ5LXNpZGUgcmVhbGx5IGhlbHBzLiBJbiB0aGUgb3JpZ2luYWwsIGl0IHNlZW1zIHRoZXJlJ3MgYW4gZXhwbGljaXQgY2hlY2s6IGlmIGEgRElEIGJpdCBpcyBzZXQsIGFuZCBpZiBgZGRldi1cdTAwM2VkaWRgICpleGlzdHMqIGFuZCBtYXRjaGVzIGByZXNwLVx1MDAzZWRhdGFbM11gLCB0aGVuIHRoZSBzaXplIGlzIGluY3JlbWVudGVkLiBUaGUgcGF0Y2ggc2VlbXMgdG8gYmUgdXBkYXRpbmcgaG93IHRoaXMgc2l6ZSBpbmNyZW1lbnQgYW5kIGVycm9yIGNvbmRpdGlvbiBpcyBoYW5kbGVkLlxuXG5UaGUgbmV3IGNvZGUgaGFzIHNvbWUgY29uZGl0aW9uczogXG4xLiBgcmVzcC1cdTAwM2VsZW4gXHUwMDNjIHNpemUgKyAxYDogY2hlY2tzIGlmIHRoZSByZXNwb25zZSBpcyBiaWcgZW5vdWdoXG4yLiBgIWRkZXYtXHUwMDNlZGlkYDogY2hlY2tzIGlmIHRoZXJlIGlzIG5vIGBkZGV2LVx1MDAzZWRpZGBcbjMuIGBkZGV2LVx1MDAzZWRpZCAhPSByZXNwLVx1MDAzZWRhdGFbc2l6ZV1gOiBjb21wYXJlcyBgZGRldi1cdTAwM2VkaWRgIHRvIHdoYXQncyBpbiB0aGUgcmVzcG9uc2UgZGF0YVxuXG5JJ20gc3RhcnRpbmcgdG8gZ2V0IGl0LiBUaGUgcGF0Y2ggdGlnaHRlbnMgdGhlIGVycm9yIGNvbmRpdGlvbnMgdG8gcHJldmVudCBhIHBvdGVudGlhbCBidWZmZXIgdW5kZXJmbG93IG9yIGluY29ycmVjdCBESUQgY29tcGFyaXNvbi4gVGhlIGltcG9ydGFudCBiaXQgaXMgdG8gY2hlY2sgdGhlIGByZXNwLVx1MDAzZWxlbmAgZmllbGQuIEFsc28sIHRoZSBwYXRjaCBhcHBlYXJzIHRvIHNpbXBsaWZ5IHRoZSBsb2dpYyBieSBjb21iaW5pbmcgdGhlIGV4aXN0ZW5jZSBhbmQgdGhlIGNvbXBhcmlzb24gb2YgYGRkZXYtXHUwMDNlZGlkYC5cblxuV2FpdCwgYmFjayB1cC4gSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgc3VyZSBhYm91dCB0aGF0IGluZGV4aW5nLiBMZXQncyBsb29rIHVwIGBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIHN0cnVjdHVyZSBsb29rcyBsaWtlIHRvIGtub3cgdGhlIG9mZnNldHMgYW5kIHdoZXJlIHRoZSBESUQgaXMgZXhwZWN0ZWQgdG8gcmVzaWRlIGluIHRoZSBidWZmZXIuIFRoYXQgYHNpemVgIHZhcmlhYmxlIGlzIGEgY3JpdGljYWwgcGllY2Ugb2YgdGhlIHB1enpsZSBoZXJlLCBhbmQgdGhlIGNoYW5nZXMgdG8gdGhlIG9yaWdpbmFsIGBpZmAgc3RhdGVtZW50cyBkZXBlbmRzIG9uIGl0IVxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzA3MywiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMlQxMzoyNDowMC44NTQ2MTgwMDFaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1NDc5MjgyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25mYy9kaWdpdGFsX2RlcC5jPTk0PXN0cnVjdCBkaWdpdGFsX3BzbF9yZXMge1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTk5LVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDA6c3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMge1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDEtXFx0dTggZGlyO1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTIwMD1kaWdpdGFsX3NlbmRfZGVwX2RhdGFfcHJlcChzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoyMDE6XFx0XFx0XFx0ICAgc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKmRlcF9yZXFfcmVzLFxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0yMDItXFx0XFx0XFx0ICAgc3RydWN0IGRpZ2l0YWxfZGF0YV9leGNoICpkYXRhX2V4Y2gpXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9NTI5PXN0YXRpYyBpbnQgZGlnaXRhbF9pbl9zZW5kX2FjayhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTUzMS17XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjUzMjpcXHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3JlcTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNTMzLVxcdHN0cnVjdCBza19idWZmICpza2I7XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNTM5LVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo1NDA6XFx0c2tiX3B1c2goc2tiLCBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpKTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNTQxLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo1NDI6XFx0ZGVwX3JlcSA9IChzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqKXNrYi1cXHUwMDNlZGF0YTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNTQzLVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTU2Nj1zdGF0aWMgaW50IGRpZ2l0YWxfaW5fc2VuZF9uYWNrKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNTY4LXtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NTY5OlxcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVxO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01NzAtXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01NzYtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjU3NzpcXHRza2JfcHVzaChza2IsIHNpemVvZihzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcykpO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01NzgtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjU3OTpcXHRkZXBfcmVxID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopc2tiLVxcdTAwM2VkYXRhO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01ODAtXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9NTk4PXN0YXRpYyBpbnQgZGlnaXRhbF9pbl9zZW5kX2F0bihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTYwMC17XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjYwMTpcXHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3JlcTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjAyLVxcdHN0cnVjdCBza19idWZmICpza2I7XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjA4LVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo2MDk6XFx0c2tiX3B1c2goc2tiLCBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpKTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjEwLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo2MTE6XFx0ZGVwX3JlcSA9IChzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqKXNrYi1cXHUwMDNlZGF0YTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjEyLVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTYyOT1zdGF0aWMgaW50IGRpZ2l0YWxfaW5fc2VuZF9ydG94KHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjMxLXtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NjMyOlxcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVxO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02MzMtXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02NDYtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjY0NzpcXHRza2JfcHVzaChza2IsIHNpemVvZihzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcykpO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02NDgtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjY0OTpcXHRkZXBfcmVxID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopc2tiLVxcdTAwM2VkYXRhO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02NTAtXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9Njg2PXN0YXRpYyB2b2lkIGRpZ2l0YWxfaW5fcmVjdl9kZXBfcmVzKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02ODktXFx0c3RydWN0IGRpZ2l0YWxfZGF0YV9leGNoICpkYXRhX2V4Y2ggPSBhcmc7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjY5MDpcXHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3JlcztcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjkxLVxcdHU4IHBmYjtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy03NTUtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjc1NjpcXHRzaXplID0gc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NzU3OlxcdGRlcF9yZXMgPSAoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKilyZXNwLVxcdTAwM2VkYXRhO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy03NTgtXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9OTA0PWludCBkaWdpdGFsX2luX3NlbmRfZGVwX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTkwNy17XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjkwODpcXHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3JlcTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtOTA5LVxcdHN0cnVjdCBza19idWZmICpjaGFpbmluZ19za2IsICp0bXBfc2tiO1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTkxMS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6OTEyOlxcdHNrYl9wdXNoKHNrYiwgc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKSk7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTkxMy1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6OTE0OlxcdGRlcF9yZXEgPSAoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKilza2ItXFx1MDAzZWRhdGE7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTkxNS1cXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz05Nzg9c3RhdGljIGludCBkaWdpdGFsX3RnX3NlbmRfYWNrKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtOTgwLXtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6OTgxOlxcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVzO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05ODItXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05ODgtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjk4OTpcXHRza2JfcHVzaChza2IsIHNpemVvZihzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcykpO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05OTAtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjk5MTpcXHRkZXBfcmVzID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopc2tiLVxcdTAwM2VkYXRhO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05OTItXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9MTAyND1zdGF0aWMgaW50IGRpZ2l0YWxfdGdfc2VuZF9hdG4oc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldilcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTAyNS17XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwMjY6XFx0c3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKmRlcF9yZXM7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwMjctXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDMzLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDM0OlxcdHNrYl9wdXNoKHNrYiwgc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKSk7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwMzUtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwMzY6XFx0ZGVwX3JlcyA9IChzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqKXNrYi1cXHUwMDNlZGF0YTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTAzNy1cXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz0xMDc3PXN0YXRpYyB2b2lkIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDgwLVxcdGludCByYztcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTA4MTpcXHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3JlcTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTA4Mi1cXHR1OCBwZmI7XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTEwNy1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTEwODpcXHRzaXplID0gc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTEwOTpcXHRkZXBfcmVxID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopcmVzcC1cXHUwMDNlZGF0YTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTExMC1cXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz0xMjk3PWludCBkaWdpdGFsX3RnX3NlbmRfZGVwX3JlcyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMjk4LXtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTI5OTpcXHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3JlcztcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTMwMC1cXHRzdHJ1Y3Qgc2tfYnVmZiAqY2hhaW5pbmdfc2tiLCAqdG1wX3NrYjtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzAyLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMzAzOlxcdHNrYl9wdXNoKHNrYiwgc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKSk7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEzMDQtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEzMDU6XFx0ZGVwX3JlcyA9IChzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqKXNrYi1cXHUwMDNlZGF0YTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTMwNi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTJUMTM6MjQ6MDAuOTAwMTAyOTc0WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjIwNzIyNjA2OTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKlBlZXJpbmcgaW50byB0aGUgRGVwdGhzIG9mIGBzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3Jlc2AqKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBgc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXNgLiBJdCdzIGNydWNpYWwgZm9yIG15IGN1cnJlbnQgYW5hbHlzaXMsIHNvIEkgaGF2ZSB0byBtYWtlIHN1cmUgSSBoYXZlIGEgc29saWQgdW5kZXJzdGFuZGluZyBvZiB0aGlzLiBMZXQncyBkZWx2ZSBpbnRvIGl0cyBkZWZpbml0aW9uIGFuZCBtZXRpY3Vsb3VzbHkgcGFyc2UgaXRzIGNvbXBvbmVudHMuIEZyb20gdGhlIHdheSB0aGlzIGlzIG5hbWVkLCBJIGFzc3VtZSBpdCdzIGludm9sdmVkIGluIGRpZ2l0YWwgZGVwZW5kZW5jeSByZXF1ZXN0IGFuZCByZXNwb25zZTsgSSdsbCBzZWUgaWYgdGhhdCdzIGFjY3VyYXRlIGFzIEkgcmV2aWV3IGl0LiBBbnkgaW5zaWdodCBJIGNhbiBnZXQgZnJvbSBpdHMgZGVmaW5pdGlvbiB3aWxsIGJlIGludmFsdWFibGUuIFRpbWUgdG8gbWV0aWN1bG91c2x5IGRpc3NlY3QgdGhpcyBzdHJ1Y3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2Mzg5LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTJUMTM6MjQ6MDIuOTcyMzY2NjI4WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MTU3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbmZjL2RpZ2l0YWxfZGVwLmNcIixcbiAgXCJGaXJzdExpbmVcIjogOTUsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgOTU6XFx0XFx0dTggZGlyO1xcbiAgOTY6XFx0XFx0dTggY21kO1xcbiAgOTc6XFx0XFx0dTggZGlkO1xcbiAgOTg6XFx0fSBfX3BhY2tlZDtcXG4gIDk5OlxcdFxcbiAxMDA6XFx0c3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMge1xcbiAxMDE6XFx0XFx0dTggZGlyO1xcbiAxMDI6XFx0XFx0dTggY21kO1xcbiAxMDM6XFx0XFx0dTggcGZiO1xcbiAxMDQ6XFx0fSBfX3BhY2tlZDtcXG4gMTA1OlxcdFxcbiAxMDY6XFx0c3RhdGljIHZvaWQgZGlnaXRhbF9pbl9yZWN2X2RlcF9yZXMoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxcbiAxMDc6XFx0XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBza19idWZmICpyZXNwKTtcXG4gMTA4OlxcdHN0YXRpYyB2b2lkIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcXG4gMTA5OlxcdFxcdFxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqcmVzcCk7XFxuIDExMDpcXHRcXG4gMTExOlxcdHN0YXRpYyBjb25zdCB1OCBkaWdpdGFsX3BheWxvYWRfYml0c19tYXBbNF0gPSB7XFxuIDExMjpcXHRcXHRbMF0gPSA2NCxcXG4gMTEzOlxcdFxcdFsxXSA9IDEyOCxcXG4gMTE0OlxcdFxcdFsyXSA9IDE5MixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTJUMTM6MjQ6MDIuOTcyNTIwMDg4WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjM2OTQwNDMzODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIERpZ2l0YWwgTkZDIERFUCBSZXF1ZXN0L1Jlc3BvbnNlIFZ1bG5lcmFiaWxpdHkqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBkaWdpdGFsX2RlcF9yZXFfcmVzYCBzdHJ1Y3Qg4oCTIGl0J3MganVzdCAzIGJ5dGVzOiBkaXIsIGNtZCwgYW5kIHBmYi4gVGhhdCdzIHN0cmFpZ2h0Zm9yd2FyZC4gV2hpY2ggbWVhbnMgdGhlIGluaXRpYWwgYHNpemVgIGlzIHNldCB0byAzIOKAkyBtYWtlcyBwZXJmZWN0IHNlbnNlLCB1c2luZyBgc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKWAuIE5vdywgYmVmb3JlIHRoZSBwYXRjaCB3YXMgYXBwbGllZCwgdGhpbmdzIHdlcmUgYSBiaXTigKYgc2xvcHB5LiBUaGUgY29kZSB3YXMgZG9pbmcgdGhpczogYGRkZXYtXHUwMDNlZGlkID09IHJlc3AtXHUwMDNlZGF0YVszXWAuIFRoZSBwcm9ibGVtPyBgcmVzcC1cdTAwM2VkYXRhWzNdYCBhY2Nlc3NlcyB0aGUgKmZvdXJ0aCogYnl0ZSwgdGhhdCdzIGluZGV4IDMuIEJ1dCBoZXJlJ3MgdGhlIGtpY2tlciwgdGhlIGNoZWNrIHdhczogYGlmIChyZXNwLVx1MDAzZWxlbiBcdTAwM2Mgc2l6ZSB8fCAuLi4pYCB3aGVyZSBgc2l6ZWAgd2FzIHN0aWxsIHRoYXQgaW5pdGlhbCAzLlxuXG5TbywgaWYgYHJlc3AtXHUwMDNlbGVuYCB3YXMgZXhhY3RseSAzIGFuZCB0aGUgYERJR0lUQUxfTkZDX0RFUF9ESURfQklUX1NFVChwZmIpYCBjb25kaXRpb24gd2FzIHRydWUsIHdlJ2QgaGl0IHRoYXQgT09CIHJlYWQuICBXZSdkIGJlIHJlYWRpbmcgKm9uZSogYnl0ZSBwYXN0IHRoZSBhbGxvY2F0ZWQgbWVtb3J5IGZvciBgcmVzcC1cdTAwM2VkYXRhYCDigJMgdGhhdCdzIGEgY2xhc3NpYyBidWZmZXIgb3Zlci1yZWFkIHNpdHVhdGlvbi4gTm90IGdvb2QuXG5cblRoZSBwYXRjaCBmaXhlcyB0aGlzIGJ5IG1ha2luZyB0aGUgbGVuZ3RoIGNoZWNrIG1vcmUgcm9idXN0LiBJdCdzIG5vdyBjaGVja2luZyBgaWYgKHJlc3AtXHUwMDNlbGVuIFx1MDAzYyBzaXplICsgMSB8fCAhZGRldi1cdTAwM2VkaWQgfHwgZGRldi1cdTAwM2VkaWQgIT0gcmVzcC1cdTAwM2VkYXRhW3NpemVdKWAgZmlyc3QsICp0aGVuKiBpbmNyZW1lbnRpbmcgYHNpemVgLiBUaGF0IGBzaXplICsgMWAgaXMgY3JpdGljYWwg4oCTIGl0IGVuc3VyZXMgd2UgaGF2ZSBlbm91Z2ggc3BhY2UgYmVmb3JlIHRoYXQgY29tcGFyaXNvbiB3aXRoIGByZXNwLVx1MDAzZWRhdGFbc2l6ZV1gLiBBIHNpbXBsZSBmaXgsIGJ1dCBhIG5lY2Vzc2FyeSBvbmUgdG8gcHJldmVudCB0aGUgb3V0LW9mLWJvdW5kcyByZWFkLiAgSXQncyBzaW1pbGFyIHRvIGhvdyBpdCB3YXMgZG9uZSBlYXJsaWVyIGluIGBkaWdpdGFsX2luX3JlY3ZfZGVwX3Jlc2AgYXJvdW5kIGxpbmUgNzU1IGluIHRoZSBzb3VyY2UgY29kZTsgSSBzaG91bGQgcHJvYmFibHkga2VlcCB0aGF0IGFzIGEgdGVtcGxhdGUgbmV4dCB0aW1lLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjg5MiwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2NCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEyVDEzOjI0OjA2LjY2NjU2NzQxWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMTI3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbmZjL2RpZ2l0YWxfZGVwLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNzU1LFxuICBcIkxpbmVDb3VudFwiOiAzNVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNzU1OlxcdFxcbiA3NTY6XFx0XFx0c2l6ZSA9IHNpemVvZihzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3Jlcyk7XFxuIDc1NzpcXHRcXHRkZXBfcmVzID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopcmVzcC1cXHUwMDNlZGF0YTtcXG4gNzU4OlxcdFxcbiA3NTk6XFx0XFx0aWYgKHJlc3AtXFx1MDAzZWxlbiBcXHUwMDNjIHNpemUgfHwgZGVwX3Jlcy1cXHUwMDNlZGlyICE9IERJR0lUQUxfTkZDX0RFUF9GUkFNRV9ESVJfSU4gfHxcXG4gNzYwOlxcdFxcdCAgICBkZXBfcmVzLVxcdTAwM2VjbWQgIT0gRElHSVRBTF9DTURfREVQX1JFUykge1xcbiA3NjE6XFx0XFx0XFx0cmMgPSAtRUlPO1xcbiA3NjI6XFx0XFx0XFx0Z290byBlcnJvcjtcXG4gNzYzOlxcdFxcdH1cXG4gNzY0OlxcdFxcbiA3NjU6XFx0XFx0cGZiID0gZGVwX3Jlcy1cXHUwMDNlcGZiO1xcbiA3NjY6XFx0XFxuIDc2NzpcXHRcXHRpZiAoRElHSVRBTF9ORkNfREVQX0RJRF9CSVRfU0VUKHBmYikpIHtcXG4gNzY4OlxcdFxcdFxcdFBST1RPQ09MX0VSUihcXFwiMTQuOC4yLjFcXFwiKTtcXG4gNzY5OlxcdFxcdFxcdHJjID0gLUVJTztcXG4gNzcwOlxcdFxcdFxcdGdvdG8gZXJyb3I7XFxuIDc3MTpcXHRcXHR9XFxuIDc3MjpcXHRcXG4gNzczOlxcdFxcdGlmIChESUdJVEFMX05GQ19ERVBfTkFEX0JJVF9TRVQocGZiKSkge1xcbiA3NzQ6XFx0XFx0XFx0cmMgPSAtRUlPO1xcbiA3NzU6XFx0XFx0XFx0Z290byBleGl0O1xcbiA3NzY6XFx0XFx0fVxcbiA3Nzc6XFx0XFxuIDc3ODpcXHRcXHRpZiAoc2l6ZSBcXHUwMDNlIHJlc3AtXFx1MDAzZWxlbikge1xcbiA3Nzk6XFx0XFx0XFx0cmMgPSAtRUlPO1xcbiA3ODA6XFx0XFx0XFx0Z290byBlcnJvcjtcXG4gNzgxOlxcdFxcdH1cXG4gNzgyOlxcdFxcbiA3ODM6XFx0XFx0c2tiX3B1bGwocmVzcCwgc2l6ZSk7XFxuIDc4NDpcXHRcXG4gNzg1OlxcdFxcdHN3aXRjaCAoRElHSVRBTF9ORkNfREVQX1BGQl9UWVBFKHBmYikpIHtcXG4gNzg2OlxcdFxcdGNhc2UgRElHSVRBTF9ORkNfREVQX1BGQl9JX1BEVTpcXG4gNzg3OlxcdFxcdFxcdGlmIChESUdJVEFMX05GQ19ERVBfUEZCX1BOSShwZmIpICE9IGRkZXYtXFx1MDAzZWN1cnJfbmZjX2RlcF9wbmkpIHtcXG4gNzg4OlxcdFxcdFxcdFxcdFBST1RPQ09MX0VSUihcXFwiMTQuMTIuMy4zXFxcIik7XFxuIDc4OTpcXHRcXHRcXHRcXHRyYyA9IC1FSU87XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEyVDEzOjI0OjA2LjY2NjcwMDg2WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjM1OTY4Mzk1MTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSBwcm9jZXNzLCBwcmVzZW50ZWQgYXMgYSBmaXJzdC1wZXJzb24gYWNjb3VudCBhc3N1bWluZyBleHBlcnRpc2UgaW4gdGhlIGZpZWxkOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBgbmV0L25mYy9kaWdpdGFsX2RlcC5jYCBLY29uZmlnIE9wdGlvbnMqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCBpbnRvIHRoZSBuaXR0eS1ncml0dHkuIEknbSBmb2N1c2luZyBvbiBgbmV0L25mYy9kaWdpdGFsX2RlcC5jYCBub3cgYW5kIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gd2hpY2ggS2NvbmZpZyBvcHRpb25zIGdvdmVybiBpdHMgY29tcGlsYXRpb24uIEknbSB0aGlua2luZyBJJ2xsIHN0YXJ0IGJ5IHF1aWNrbHkgc2Nhbm5pbmcgdGhlIHJlbGV2YW50IEtjb25maWcgZmlsZXMuIFByb2JhYmx5IHdpdGhpbiB0aGUgYG5ldC9uZmMvYCBkaXJlY3RvcnkgYW5kIHBvdGVudGlhbGx5IHVwc3RyZWFtIG9uZXMsIHRvIGVuc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueSBkZXBlbmRlbmNpZXMgdGhhdCBjb3VsZCBhZmZlY3QgdGhpcyBzcGVjaWZpYyBtb2R1bGUuIEl0J3MgY3J1Y2lhbCB0byBpZGVudGlmeSB0aGUgcmVsZXZhbnQgZGVwZW5kZW5jaWVzIGFzIHRoZXNlIEtjb25maWcgb3B0aW9ucyBub3Qgb25seSBjb250cm9sIGlmIHRoZSBzb3VyY2UgZmlsZSBpcyBjb21waWxlZCBpbnRvIHRoZSBrZXJuZWwgYnV0IGFsc28gd2hpY2ggc3ViLWZlYXR1cmVzIG9mIHRoZSBtb2R1bGUgYXJlIGFjdGl2ZSBvciBub3QsIG9yIGV2ZW4gaWYgaXQgZGVwZW5kcyBvbiBhIHNwZWNpZmljIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24uIEknbGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2UgZmxhZ3MgdGllZCB0byBzcGVjaWZpYyBORkMgY29udHJvbGxlcnMsIGFueSBmZWF0dXJlIHN3aXRjaGVzIHJlbGF0ZWQgdG8gZGlnaXRhbCBwcm90b2NvbCBuZWdvdGlhdGlvbiwgb3IgcGVyaGFwcyBjb25kaXRpb25hbCBjb21waWxhdGlvbiBiYXNlZCBvbiB0aGUgcHJlc2VuY2Ugb2YgY2VydGFpbiBoYXJkd2FyZSBmZWF0dXJlcy4gVW5kZXJzdGFuZGluZyB0aGUgS2NvbmZpZyBzdHJ1Y3R1cmUgaGVyZSBpcyBmdW5kYW1lbnRhbCB0byB1bmRlcnN0YW5kaW5nIHRoaXMgbW9kdWxlLiBJdCdzIGEgcXVpY2sgYnV0IGVzc2VudGlhbCBzdGVwIHRvIGVuc3VyZSB0aGlzIG1vZHVsZSB3b3JrcyBhcyBpbnRlbmRlZCwgYW5kIGNhbiBiZSBjb25maWd1cmVkIGNvcnJlY3RseSwgZ2l2ZW4gZGlmZmVyZW50IHRhcmdldCBoYXJkd2FyZSBhbmQgdXNlIGNhc2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODE0NSwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTJUMTM6MjQ6MTAuMjYzNTQyMzc4WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjQxMzI0MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkaWdpdGFsX2RlcFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmZjXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZmMvTWFrZWZpbGU9MTE9bmZjLW9ianMgOj0gY29yZS5vIG5ldGxpbmsubyBhZl9uZmMubyByYXdzb2NrLm8gbGxjcF9jb3JlLm8gbGxjcF9jb21tYW5kcy5vIFxcXFxcXG4tLVxcbm5ldC9uZmMvTWFrZWZpbGUtMTMtXFxubmV0L25mYy9NYWtlZmlsZToxNDpuZmNfZGlnaXRhbC1vYmpzIDo9IGRpZ2l0YWxfY29yZS5vIGRpZ2l0YWxfdGVjaG5vbG9neS5vIGRpZ2l0YWxfZGVwLm9cXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmM9NTg2PXN0YXRpYyBpbnQgZGlnaXRhbF9kZXZfZG93bihzdHJ1Y3QgbmZjX2RldiAqbmZjX2RldilcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtNTk0LVxcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmM6NTk1OnN0YXRpYyBpbnQgZGlnaXRhbF9kZXBfbGlua191cChzdHJ1Y3QgbmZjX2RldiAqbmZjX2RldixcXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTU5Ni1cXHRcXHRcXHQgICAgICAgc3RydWN0IG5mY190YXJnZXQgKnRhcmdldCxcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtNjA5LVxcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmM6NjEwOnN0YXRpYyBpbnQgZGlnaXRhbF9kZXBfbGlua19kb3duKHN0cnVjdCBuZmNfZGV2ICpuZmNfZGV2KVxcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtNjExLXtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmM9NzQ0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZjX29wcyBkaWdpdGFsX25mY19vcHMgPSB7XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTc0OC1cXHQuc3RvcF9wb2xsID0gZGlnaXRhbF9zdG9wX3BvbGwsXFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYzo3NDk6XFx0LmRlcF9saW5rX3VwID0gZGlnaXRhbF9kZXBfbGlua191cCxcXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jOjc1MDpcXHQuZGVwX2xpbmtfZG93biA9IGRpZ2l0YWxfZGVwX2xpbmtfZG93bixcXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTc1MS1cXHQuYWN0aXZhdGVfdGFyZ2V0ID0gZGlnaXRhbF9hY3RpdmF0ZV90YXJnZXQsXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9OTQ9c3RydWN0IGRpZ2l0YWxfcHNsX3JlcyB7XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtOTktXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwMDpzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyB7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwMS1cXHR1OCBkaXI7XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9MjAwPWRpZ2l0YWxfc2VuZF9kZXBfZGF0YV9wcmVwKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjIwMTpcXHRcXHRcXHQgICBzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3JlcV9yZXMsXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTIwMi1cXHRcXHRcXHQgICBzdHJ1Y3QgZGlnaXRhbF9kYXRhX2V4Y2ggKmRhdGFfZXhjaClcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz01Mjk9c3RhdGljIGludCBkaWdpdGFsX2luX3NlbmRfYWNrKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNTMxLXtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NTMyOlxcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVxO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01MzMtXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01MzktXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjU0MDpcXHRza2JfcHVzaChza2IsIHNpemVvZihzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcykpO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01NDEtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjU0MjpcXHRkZXBfcmVxID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopc2tiLVxcdTAwM2VkYXRhO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01NDMtXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9NTY2PXN0YXRpYyBpbnQgZGlnaXRhbF9pbl9zZW5kX25hY2soc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01Njgte1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo1Njk6XFx0c3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKmRlcF9yZXE7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTU3MC1cXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTU3Ni1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NTc3OlxcdHNrYl9wdXNoKHNrYiwgc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKSk7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTU3OC1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NTc5OlxcdGRlcF9yZXEgPSAoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKilza2ItXFx1MDAzZWRhdGE7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTU4MC1cXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz01OTg9c3RhdGljIGludCBkaWdpdGFsX2luX3NlbmRfYXRuKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjAwLXtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NjAxOlxcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVxO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02MDItXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02MDgtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjYwOTpcXHRza2JfcHVzaChza2IsIHNpemVvZihzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcykpO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02MTAtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjYxMTpcXHRkZXBfcmVxID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopc2tiLVxcdTAwM2VkYXRhO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02MTItXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9NjI5PXN0YXRpYyBpbnQgZGlnaXRhbF9pbl9zZW5kX3J0b3goc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02MzEte1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo2MzI6XFx0c3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKmRlcF9yZXE7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTYzMy1cXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTY0Ni1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NjQ3OlxcdHNrYl9wdXNoKHNrYiwgc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKSk7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTY0OC1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NjQ5OlxcdGRlcF9yZXEgPSAoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKilza2ItXFx1MDAzZWRhdGE7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTY1MC1cXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz02ODY9c3RhdGljIHZvaWQgZGlnaXRhbF9pbl9yZWN2X2RlcF9yZXMoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTY4OS1cXHRzdHJ1Y3QgZGlnaXRhbF9kYXRhX2V4Y2ggKmRhdGFfZXhjaCA9IGFyZztcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NjkwOlxcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVzO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02OTEtXFx0dTggcGZiO1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTc1NS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NzU2OlxcdHNpemUgPSBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo3NTc6XFx0ZGVwX3JlcyA9IChzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqKXJlc3AtXFx1MDAzZWRhdGE7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTc1OC1cXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz05MDQ9aW50IGRpZ2l0YWxfaW5fc2VuZF9kZXBfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtOTA3LXtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6OTA4OlxcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVxO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05MDktXFx0c3RydWN0IHNrX2J1ZmYgKmNoYWluaW5nX3NrYiwgKnRtcF9za2I7XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtOTExLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo5MTI6XFx0c2tiX3B1c2goc2tiLCBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpKTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtOTEzLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo5MTQ6XFx0ZGVwX3JlcSA9IChzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqKXNrYi1cXHUwMDNlZGF0YTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtOTE1LVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTk3OD1zdGF0aWMgaW50IGRpZ2l0YWxfdGdfc2VuZF9hY2soc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05ODAte1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo5ODE6XFx0c3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKmRlcF9yZXM7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTk4Mi1cXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTk4OC1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6OTg5OlxcdHNrYl9wdXNoKHNrYiwgc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKSk7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTk5MC1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6OTkxOlxcdGRlcF9yZXMgPSAoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKilza2ItXFx1MDAzZWRhdGE7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTk5Mi1cXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz0xMDI0PXN0YXRpYyBpbnQgZGlnaXRhbF90Z19zZW5kX2F0bihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2KVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDI1LXtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTAyNjpcXHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3JlcztcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTAyNy1cXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwMzMtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwMzQ6XFx0c2tiX3B1c2goc2tiLCBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpKTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTAzNS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTAzNjpcXHRkZXBfcmVzID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopc2tiLVxcdTAwM2VkYXRhO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDM3LVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTEwNzc9c3RhdGljIHZvaWQgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwODAtXFx0aW50IHJjO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDgxOlxcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVxO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDgyLVxcdHU4IHBmYjtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMTA3LVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMTA4OlxcdHNpemUgPSBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMTA5OlxcdGRlcF9yZXEgPSAoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKilyZXNwLVxcdTAwM2VkYXRhO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMTEwLVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTEyOTc9aW50IGRpZ2l0YWxfdGdfc2VuZF9kZXBfcmVzKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHN0cnVjdCBza19idWZmICpza2IpXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEyOTgte1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMjk5OlxcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVzO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzAwLVxcdHN0cnVjdCBza19idWZmICpjaGFpbmluZ19za2IsICp0bXBfc2tiO1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEzMDItXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEzMDM6XFx0c2tiX3B1c2goc2tiLCBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpKTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTMwNC1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTMwNTpcXHRkZXBfcmVzID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopc2tiLVxcdTAwM2VkYXRhO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzA2LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMlQxMzoyNDoxMC4zMDk5NTg2NzFaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MTg3MjQ5NzgwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgTkZDIERpZ2l0YWwgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQncyB0cmlnZ2VyaW5nIHRoZSBgbmZjX2RpZ2l0YWxgIGNvbXBvbmVudCB3aXRoaW4gdGhlIE5GQyBzeXN0ZW0uIFRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IGlzIHRoZSBgbmV0L25mYy9NYWtlZmlsZWAuIEl0J3Mgd2hlcmUgdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24gbGl2ZXMuIFRoYXQncyB3aGVyZSBJIG5lZWQgdG8gZGlnIGluIHRvIGZpbmQgdGhlIHNwZWNpZmljIGNvbmZpZyBvcHRpb25zIHRoYXQgZ292ZXJuIHRoZSBpbmNsdXNpb24gb2YgYG5mY19kaWdpdGFsYC4gSG9wZWZ1bGx5LCBpdCdzIGEgc3RyYWlnaHRmb3J3YXJkIGRlcGVuZGVuY3kgY2hhaW4uIEknbGwgcHJvYmFibHkgYmUgbG9va2luZyBmb3IgYW4gYGlmZGVmYCBvciBhIHNpbWlsYXIgY29uZGl0aW9uYWwgc3RhdGVtZW50IHRoYXQgY2hlY2tzIGZvciBzb21lIEtjb25maWcgc3ltYm9sLiBUaW1lIHRvIHNlZSB3aGF0IHRoZSBidWlsZCBwcm9jZXNzIGhhcyB0byBzYXkuIEknbSBob3BpbmcgaXQncyB3ZWxsLWRvY3VtZW50ZWQhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxNDgzLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTJUMTM6MjQ6MTIuMTgyNDU5NDI3WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwNzAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9uZmMvTWFrZWZpbGVcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIE1ha2VmaWxlIGZvciB0aGUgTGludXggTkZDIHN1YnN5c3RlbS5cXG4gICA0OlxcdCNcXG4gICA1OlxcdFxcbiAgIDY6XFx0b2JqLSQoQ09ORklHX05GQykgKz0gbmZjLm9cXG4gICA3OlxcdG9iai0kKENPTkZJR19ORkNfTkNJKSArPSBuY2kvXFxuICAgODpcXHRvYmotJChDT05GSUdfTkZDX0hDSSkgKz0gaGNpL1xcbiAgIDk6XFx0b2JqLSQoQ09ORklHX05GQ19ESUdJVEFMKSArPSBuZmNfZGlnaXRhbC5vXFxuICAxMDpcXHRcXG4gIDExOlxcdG5mYy1vYmpzIDo9IGNvcmUubyBuZXRsaW5rLm8gYWZfbmZjLm8gcmF3c29jay5vIGxsY3BfY29yZS5vIGxsY3BfY29tbWFuZHMubyBcXFxcXFxuICAxMjpcXHRcXHRcXHRsbGNwX3NvY2sub1xcbiAgMTM6XFx0XFxuICAxNDpcXHRuZmNfZGlnaXRhbC1vYmpzIDo9IGRpZ2l0YWxfY29yZS5vIGRpZ2l0YWxfdGVjaG5vbG9neS5vIGRpZ2l0YWxfZGVwLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTJUMTM6MjQ6MTIuMTgyNTIyMzY3WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjIzMjMwNDE0MTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXhhbWluaW5nIHRoZSBORkMgRGlnaXRhbCBEcml2ZXIgQnVpbGQgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgc2VlIHRoaXMgbGluZTogYG9iai0kKENPTkZJR19ORkNfRElHSVRBTCkgKz0gbmZjX2RpZ2l0YWwub2AuIE15IGJyYWluIGltbWVkaWF0ZWx5IHRyYW5zbGF0ZXMgdGhpcyB0bzogXCJUaGUgYG5mY19kaWdpdGFsLm9gIG9iamVjdCBmaWxlIHdpbGwgYmUgaW5jbHVkZWQgaW4gdGhlIGJ1aWxkLCBidXQgb25seSBpZiB0aGUgYENPTkZJR19ORkNfRElHSVRBTGAga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIGVuYWJsZWQuXCIgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBvbiBgTkZDX0RJR0lUQUxgLiBXaGVyZSBpcyB0aGF0IGRlZmluZWQ/IEl0IGlzIHByb2JhYmx5IGRlZmluZWQgaW4gYG5ldC9uZmMvS2NvbmZpZ2AuIExldCdzIGNoZWNrIHRoZXJlIHRvIHNlZSB3aGF0IGl0IGRlcGVuZHMgb24uIEknbGwgbmVlZCB0byBrbm93IHRoaXMgaW5mb3JtYXRpb24gdG8gdW5kZXJzdGFuZCBpZiBhbmQgd2hlbiB0aGUgZHJpdmVyIHdpbGwgYmUgYnVpbHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxOTIyLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMlQxMzoyNDoxNC41MDU1NjcxMTFaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4NTI1MzgxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORkNfRElHSVRBTFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmZjXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZmMvS2NvbmZpZz02PW1lbnVjb25maWcgTkZDXFxuLS1cXG5uZXQvbmZjL0tjb25maWctMTYtXFxubmV0L25mYy9LY29uZmlnOjE3OmNvbmZpZyBORkNfRElHSVRBTFxcbm5ldC9uZmMvS2NvbmZpZy0xOC1cXHRkZXBlbmRzIG9uIE5GQ1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMlQxMzoyNDoxNC41NjQwOTU0NjJaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MzQzMDYxNzk4NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgbGlrZSB5b3Vyc2VsZjpcblxuKipEaXZpbmcgaW50byB0aGUgYG5ldC9uZmMvS2NvbmZpZ2AgRmlsZSoqXG5cbkFscmlnaHQsIGxldCdzIHRha2UgYSBxdWljayBsb29rIGF0IGBuZXQvbmZjL0tjb25maWdgLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgMTcuIE15IG1lbnRhbCBtb2RlbCwgYmFzZWQgb24gcHJldmlvdXMgaW50ZXJhY3Rpb25zIHdpdGggdGhlIE5GQyBzdWJzeXN0ZW0sIGlzIHN1Z2dlc3Rpbmcgc29tZXRoaW5nIGluIHRoYXQgYXJlYS4gSXQncyBsaWtlbHkgYSBjb25maWd1cmF0aW9uIG9wdGlvbiBvciBkZXBlbmRlbmN5IGRlZmluaXRpb24sIHBlcmhhcHMgcmVsYXRlZCB0byBhIGZlYXR1cmUgZmxhZywgYSBoYXJkd2FyZSBkcml2ZXIsIG9yIGEgZ2VuZXJhbCBlbmFibGluZy9kaXNhYmxpbmcgb2YgYSBjb3JlIE5GQyBjb21wb25lbnQuIEknbSBpbW1lZGlhdGVseSBleHBlY3RpbmcgdG8gc2VlIGVpdGhlciBhIGBjb25maWdgIHN0YXRlbWVudCwgYSBgZGVwZW5kcyBvbmAgY2xhdXNlLCBvciBtYXliZSBldmVuIGFuIGBpZmAgc3RhdGVtZW50IGNvbnRyb2xsaW5nIHRoZSBpbmNsdXNpb24gb2Ygb3RoZXIgS2NvbmZpZyBmcmFnbWVudHMuIEdpdmVuIHRoZSBwb3NpdGlvbiBpbiB0aGUgZmlsZSwgaXQncyBwcm9iYWJseSBub3QgYSB0b3AtbGV2ZWwgc3ltYm9sLCBhbmQgbWlnaHQgYmUgbmVzdGVkIHVuZGVyIGFub3RoZXIgb3B0aW9uLiBJJ20gcHJlcGFyZWQgdG8gcXVpY2tseSBzY2FuIGZvciBrZXl3b3JkcyBsaWtlIFwiTkZDXCIsIFwiUE41MzJcIiwgXCJIQUxcIiwgb3IgcG90ZW50aWFsbHksIGEgbW9kdWxlIG5hbWUgSSByZWNvZ25pemUuIE15IGludGVudGlvbiBpcyB0byBpbW1lZGlhdGVseSBpZGVudGlmeSB0aGUgc2NvcGUgb2Ygd2hhdCB0aGUgS2NvbmZpZyBjb250cm9scywgaXRzIGRlcGVuZGVuY2llcywgYW5kIGFueSBpbXBsaWNhdGlvbnMgaXQgaGFzIGZvciB0aGUgYnVpbGQgY29uZmlndXJhdGlvbi4gSSdtIHRyeWluZyB0byBnZXQgYSBxdWljayBtYXAgb2Ygd2hhdCdzICp0aGVyZSogdG8gaGVscCBtZSBmb3JtdWxhdGUgbXkgbmV4dCBzdGVwIGluIHRoaXMgaW52ZXN0aWdhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjIyMTcsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMlQxMzoyNDoxNy45OTQ3MTYxNzZaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODA0NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L25mYy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDM1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIE5GQyBzdWJzeXN0ZW0gY29uZmlndXJhdGlvblxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRtZW51Y29uZmlnIE5GQ1xcbiAgIDc6XFx0XFx0ZGVwZW5kcyBvbiBSRktJTEwgfHwgIVJGS0lMTFxcbiAgIDg6XFx0XFx0dHJpc3RhdGUgXFxcIk5GQyBzdWJzeXN0ZW0gc3VwcG9ydFxcXCJcXG4gICA5OlxcdFxcdGRlZmF1bHQgblxcbiAgMTA6XFx0XFx0aGVscFxcbiAgMTE6XFx0XFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIGJ1aWxkIHN1cHBvcnQgZm9yIE5GQyAoTmVhciBmaWVsZFxcbiAgMTI6XFx0XFx0ICBjb21tdW5pY2F0aW9uKSBkZXZpY2VzLlxcbiAgMTM6XFx0XFxuICAxNDpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBzdXBwb3J0IGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlIHdpbGxcXG4gIDE1OlxcdFxcdCAgYmUgY2FsbGVkIG5mYy5cXG4gIDE2OlxcdFxcbiAgMTc6XFx0Y29uZmlnIE5GQ19ESUdJVEFMXFxuICAxODpcXHRcXHRkZXBlbmRzIG9uIE5GQ1xcbiAgMTk6XFx0XFx0c2VsZWN0IENSQ19DQ0lUVFxcbiAgMjA6XFx0XFx0c2VsZWN0IENSQ19JVFVfVFxcbiAgMjE6XFx0XFx0dHJpc3RhdGUgXFxcIk5GQyBEaWdpdGFsIFByb3RvY29sIHN0YWNrIHN1cHBvcnRcXFwiXFxuICAyMjpcXHRcXHRkZWZhdWx0IG5cXG4gIDIzOlxcdFxcdGhlbHBcXG4gIDI0OlxcdFxcdCAgU2F5IFkgaWYgeW91IHdhbnQgdG8gYnVpbGQgTkZDIGRpZ2l0YWwgcHJvdG9jb2wgc3RhY2sgc3VwcG9ydC5cXG4gIDI1OlxcdFxcdCAgVGhpcyBpcyBuZWVkZWQgYnkgTkZDIGNoaXBzZXRzIHdob3NlIGZpcm13YXJlIG9ubHkgaW1wbGVtZW50XFxuICAyNjpcXHRcXHQgIHRoZSBORkMgYW5hbG9nIGxheWVyLlxcbiAgMjc6XFx0XFxuICAyODpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBzdXBwb3J0IGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlIHdpbGxcXG4gIDI5OlxcdFxcdCAgYmUgY2FsbGVkIG5mY19kaWdpdGFsLlxcbiAgMzA6XFx0XFxuICAzMTpcXHRzb3VyY2UgXFxcIm5ldC9uZmMvbmNpL0tjb25maWdcXFwiXFxuICAzMjpcXHRzb3VyY2UgXFxcIm5ldC9uZmMvaGNpL0tjb25maWdcXFwiXFxuICAzMzpcXHRcXG4gIDM0OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZmMvS2NvbmZpZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTJUMTM6MjQ6MTcuOTk0Nzk4OTc2WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjI2ODE4OTU0MjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyBORkNfRElHSVRBTCBEcml2ZXIgRGVwZW5kZW5jaWVzKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiV2hhdCBzcGVjaWZpY2FsbHkgYXJlIHRoZXNlIGRyaXZlcnMgZG9pbmcsIGFuZCB3aGF0IG90aGVyIGNvbXBvbmVudHMgYXJlIHRoZXkgdGlnaHRseSBjb3VwbGVkIHdpdGg/XCIgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGVjb3N5c3RlbSBzdXJyb3VuZGluZyBgTkZDX0RJR0lUQUxgLiBJJ20gZ29pbmcgdG8gc3RhcnQgYnkgbG9va2luZyBmb3IgdGhlIHNlbGVjdGlvbiBhbmQgZGVwZW5kZW5jeSByZWxhdGlvbnNoaXBzIG9uIHRoaXMgY29uZmlndXJhdGlvbiBvcHRpb24uIFNwZWNpZmljYWxseSwgSSdtIHRoaW5raW5nOlxuXG4qICAgKipXaG8gaXMgY2hvb3NpbmcgYE5GQ19ESUdJVEFMYD8qKiBXaGF0IG90aGVyIGNvbmZpZ3VyYXRpb25zIG1pZ2h0IGJlIHByZXJlcXVpc2l0ZXMsIG9yIHdoYXQgZmVhdHVyZXMgYXJlIGV4cGxpY2l0bHkgcmVxdWVzdGluZyBpdD8gVGhpcyB3aWxsIGdpdmUgbWUgYSBmaXJzdCBpbmRpY2F0aW9uIG9mIHRoZSBzY29wZSBhbmQgdXNlIGNhc2UuXG4qICAgKipXaGF0IHJlbGllcyBvbiBpdD8qKiBJJ20gbG9va2luZyBmb3IgZGlyZWN0IGRlcGVuZGVuY2llcywgb2YgY291cnNlLCBidXQgYWxzbyBpbmRpcmVjdCBvbmVzLiBVbmRlcnN0YW5kaW5nIHRoZSBjYXNjYWRpbmcgZWZmZWN0cyBpcyBrZXkuIFdoYXQgbW9kdWxlcyBvciBmdW5jdGlvbmFsaXR5IGJlY29tZSBhdmFpbGFibGUgb3IgdW5hdmFpbGFibGUgYmFzZWQgb24gdGhlIHNlbGVjdGlvbiBvZiBgTkZDX0RJR0lUQUxgPyBBcmUgdGhlcmUgcGxhdGZvcm0tc3BlY2lmaWMgY29uc2lkZXJhdGlvbnMgSSBuZWVkIHRvIGtlZXAgaW4gbWluZD8gQXJlIHRoZXJlIGFueSBwb3RlbnRpYWwgY29uZmxpY3RzIEkgbmVlZCB0byBjb25zaWRlcj9cbiogICAqKlRoZSBkcml2ZXJzIGFuZCB0aGVpciByb2xlOioqIEkgd2lsbCBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBwdXJwb3NlIGFuZCBmdW5jdGlvbmFsaXR5IG9mIHRoZSBkcml2ZXJzIGludm9sdmVkLiBBcmUgdGhleSBpbXBsZW1lbnRpbmcgTkZDIHByb3RvY29sIHN0YWNrcz8gQ29udHJvbGxpbmcgaGFyZHdhcmUgaW50ZXJmYWNlcz8gTWFuYWdpbmcgc2VjdXJpdHkgYXNwZWN0cz8gSG93IGRvIHRoZXkgaW50ZXJhY3Qgd2l0aCBvdGhlciBwYXJ0cyBvZiB0aGUgc3lzdGVtLCBsaWtlIHRoZSBrZXJuZWwncyBORkMgZnJhbWV3b3JrIG9yIHVzZXItc3BhY2UgYXBwbGljYXRpb25zP1xuXG5NeSBnb2FsIGlzIHRvIGRldmVsb3AgYSBjbGVhciBtZW50YWwgbWFwIG9mIGBORkNfRElHSVRBTGAncyBwb3NpdGlvbiBpbiB0aGUgb3ZlcmFsbCBzeXN0ZW0gYXJjaGl0ZWN0dXJlLiBUaGlzIGNvbnRleHR1YWwgdW5kZXJzdGFuZGluZyBpcyBlc3NlbnRpYWwgYmVmb3JlIEkgY2FuIGJlZ2luIHRvIGFzc2VzcyBhbnkgcG90ZW50aWFsIHJpc2tzLCBvcHRpbWl6YXRpb25zLCBvciBhcmVhcyBmb3IgaW1wcm92ZW1lbnQuIFRpbWUgdG8gc3RhcnQgZGlnZ2luZyFcblxuXG4iLCJJbnB1dFRva2VucyI6MjI5NTMsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEyVDEzOjI0OjIwLjY3NjY5NzY4MloiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDcwNTM4NDMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTkZDX0RJR0lUQUxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZmMvS2NvbmZpZz05PWNvbmZpZyBORkNfVFJGNzk3MEFcXG5kcml2ZXJzL25mYy9LY29uZmlnLTEwLVxcdHRyaXN0YXRlIFxcXCJUZXhhcyBJbnN0cnVtZW50cyBUUkY3OTcwYSBORkMgZHJpdmVyXFxcIlxcbmRyaXZlcnMvbmZjL0tjb25maWc6MTE6XFx0ZGVwZW5kcyBvbiBTUEkgXFx1MDAyNlxcdTAwMjYgTkZDX0RJR0lUQUwgXFx1MDAyNlxcdTAwMjYgR1BJT0xJQlxcbmRyaXZlcnMvbmZjL0tjb25maWctMTItXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZmMvS2NvbmZpZz0zMT1jb25maWcgTkZDX1NJTVxcbmRyaXZlcnMvbmZjL0tjb25maWctMzItXFx0dHJpc3RhdGUgXFxcIk5GQyBoYXJkd2FyZSBzaW11bGF0b3IgZHJpdmVyXFxcIlxcbmRyaXZlcnMvbmZjL0tjb25maWc6MzM6XFx0ZGVwZW5kcyBvbiBORkNfRElHSVRBTFxcbmRyaXZlcnMvbmZjL0tjb25maWctMzQtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZmMvS2NvbmZpZz00Mj1jb25maWcgTkZDX1BPUlQxMDBcXG4tLVxcbmRyaXZlcnMvbmZjL0tjb25maWctNDQtXFx0ZGVwZW5kcyBvbiBVU0JcXG5kcml2ZXJzL25mYy9LY29uZmlnOjQ1OlxcdGRlcGVuZHMgb24gTkZDX0RJR0lUQUxcXG5kcml2ZXJzL25mYy9LY29uZmlnLTQ2LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTI3LVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjI4OiNkZWZpbmUgTkZDU0lNX0NBUEFCSUxJVElFUyAoTkZDX0RJR0lUQUxfRFJWX0NBUFNfSU5fQ1JDICAgfCBcXFxcXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6Mjk6XFx0XFx0XFx0ICAgICBORkNfRElHSVRBTF9EUlZfQ0FQU19UR19DUkMpXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzAtXFxuLS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYz0yNTY9c3RhdGljIGludCBuZmNzaW1faW5fY29uZmlndXJlX2h3KHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXFxuLS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yNjEtXFx0c3dpdGNoICh0eXBlKSB7XFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MjYyOlxcdGNhc2UgTkZDX0RJR0lUQUxfQ09ORklHX1JGX1RFQ0g6XFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjYzLVxcdFxcdGRldi1cXHUwMDNldXAgPSB0cnVlO1xcbi0tXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjY3LVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjI2ODpcXHRjYXNlIE5GQ19ESUdJVEFMX0NPTkZJR19GUkFNSU5HOlxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTI2OS1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jPTI4Nj1zdGF0aWMgaW50IG5mY3NpbV90Z19jb25maWd1cmVfaHcoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcXG4tLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTI5MS1cXHRzd2l0Y2ggKHR5cGUpIHtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYzoyOTI6XFx0Y2FzZSBORkNfRElHSVRBTF9DT05GSUdfUkZfVEVDSDpcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yOTMtXFx0XFx0ZGV2LVxcdTAwM2V1cCA9IHRydWU7XFxuLS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yOTctXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6Mjk4OlxcdGNhc2UgTkZDX0RJR0lUQUxfQ09ORklHX0ZSQU1JTkc6XFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjk5LVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTI1LVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyNjojZGVmaW5lIFBPUlQxMDBfQ0FQQUJJTElUSUVTIChORkNfRElHSVRBTF9EUlZfQ0FQU19JTl9DUkMgfCBcXFxcXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI3OlxcdFxcdFxcdCAgICAgIE5GQ19ESUdJVEFMX0RSVl9DQVBTX1RHX0NSQylcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMjgtXFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM9MTE4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcG9ydDEwMF9pbl9yZl9zZXR0aW5nIGluX3JmX3NldHRpbmdzW10gPSB7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjExOTpcXHRbTkZDX0RJR0lUQUxfUkZfVEVDSF8yMTJGXSA9IHtcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTIwLVxcdFxcdC5pbl9zZW5kX3NldF9udW1iZXIgPSAxLFxcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEyNC1cXHR9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxMjU6XFx0W05GQ19ESUdJVEFMX1JGX1RFQ0hfNDI0Rl0gPSB7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEyNi1cXHRcXHQuaW5fc2VuZF9zZXRfbnVtYmVyID0gMSxcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMzAtXFx0fSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTMxOlxcdFtORkNfRElHSVRBTF9SRl9URUNIXzEwNkFdID0ge1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMzItXFx0XFx0LmluX3NlbmRfc2V0X251bWJlciA9IDIsXFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTM2LVxcdH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjEzNzpcXHRbTkZDX0RJR0lUQUxfUkZfVEVDSF8xMDZCXSA9IHtcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTM4LVxcdFxcdC5pbl9zZW5kX3NldF9udW1iZXIgPSAzLFxcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE0Mi1cXHR9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxNDM6XFx0LyogRW5zdXJlcyB0aGUgYXJyYXkgaGFzIE5GQ19ESUdJVEFMX1JGX1RFQ0hfTEFTVCBlbGVtZW50cyAqL1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxNDQ6XFx0W05GQ19ESUdJVEFMX1JGX1RFQ0hfTEFTVF0gPSB7IDAgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTQ1LX07XFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM9MTY3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcG9ydDEwMF90Z19yZl9zZXR0aW5nIHRnX3JmX3NldHRpbmdzW10gPSB7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjE2ODpcXHRbTkZDX0RJR0lUQUxfUkZfVEVDSF8xMDZBXSA9IHtcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTY5LVxcdFxcdC50Z19zZXRfbnVtYmVyID0gOCxcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xNzEtXFx0fSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTcyOlxcdFtORkNfRElHSVRBTF9SRl9URUNIXzIxMkZdID0ge1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xNzMtXFx0XFx0LnRnX3NldF9udW1iZXIgPSA4LFxcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE3NS1cXHR9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxNzY6XFx0W05GQ19ESUdJVEFMX1JGX1RFQ0hfNDI0Rl0gPSB7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE3Ny1cXHRcXHQudGdfc2V0X251bWJlciA9IDgsXFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTc5LVxcdH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjE4MDpcXHQvKiBFbnN1cmVzIHRoZSBhcnJheSBoYXMgTkZDX0RJR0lUQUxfUkZfVEVDSF9MQVNUIGVsZW1lbnRzICovXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjE4MTpcXHRbTkZDX0RJR0lUQUxfUkZfVEVDSF9MQVNUXSA9IHsgMCB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xODItXFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM9MjIxPWluX3Byb3RvY29sc1tdW1BPUlQxMDBfSU5fTUFYX05VTV9QUk9UT0NPTFMgKyAxXSA9IHtcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjIyOlxcdFtORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfU0hPUlRdID0ge1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0yMjMtXFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfSU5JVElBTF9HVUFSRF9USU1FLCAgICAgIDYgfSxcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0yNDMtXFx0fSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjQ0OlxcdFtORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfU1RBTkRBUkRdID0ge1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0yNDUtXFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfSU5JVElBTF9HVUFSRF9USU1FLCAgICAgIDYgfSxcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0yNjUtXFx0fSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjY2OlxcdFtORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfU1RBTkRBUkRfV0lUSF9DUkNfQV0gPSB7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTI2Ny1cXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9JTklUSUFMX0dVQVJEX1RJTUUsICAgICAgNiB9LFxcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTI4Ny1cXHR9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyODg6XFx0W05GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQV9UMVRdID0ge1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0yODktXFx0XFx0LyogbmZjX2RpZ2l0YWxfZnJhbWluZ19uZmNhX3Nob3J0ICovXFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMjk1LVxcdH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI5NjpcXHRbTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX1QyVF0gPSB7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTI5Ny1cXHRcXHQvKiBuZmNfZGlnaXRhbF9mcmFtaW5nX25mY2Ffc3RhbmRhcmQgKi9cXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0zMDEtXFx0fSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzAyOlxcdFtORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfVDRUXSA9IHtcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzAzLVxcdFxcdC8qIG5mY19kaWdpdGFsX2ZyYW1pbmdfbmZjYV9zdGFuZGFyZF93aXRoX2NyY19hICovXFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzA1LVxcdH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjMwNjpcXHRbTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX05GQ19ERVBdID0ge1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0zMDctXFx0XFx0LyogbmZjX2RpZ2l0YWxfZnJhbWluZ19uZmNhX3N0YW5kYXJkICovXFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzA5LVxcdH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjMxMDpcXHRbTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNGXSA9IHtcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzExLVxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX0lOSVRJQUxfR1VBUkRfVElNRSwgICAgIDE4IH0sXFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzMxLVxcdH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjMzMjpcXHRbTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNGX1QzVF0gPSB7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTMzMy1cXHRcXHQvKiBuZmNfZGlnaXRhbF9mcmFtaW5nX25mY2YgKi9cXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0zMzUtXFx0fSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzM2OlxcdFtORkNfRElHSVRBTF9GUkFNSU5HX05GQ0ZfTkZDX0RFUF0gPSB7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTMzNy1cXHRcXHQvKiBuZmNfZGlnaXRhbF9mcmFtaW5nX25mY2YgKi9cXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0zNTgtXFx0fSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzU5OlxcdFtORkNfRElHSVRBTF9GUkFNSU5HX05GQ19ERVBfQUNUSVZBVEVEXSA9IHtcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzYwLVxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX0VORCwgMCB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0zNjEtXFx0fSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzYyOlxcdFtORkNfRElHSVRBTF9GUkFNSU5HX05GQ0JdID0ge1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0zNjMtXFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfSU5JVElBTF9HVUFSRF9USU1FLCAgICAgMjAgfSxcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0zODMtXFx0fSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6Mzg0OlxcdFtORkNfRElHSVRBTF9GUkFNSU5HX05GQ0JfVDRUXSA9IHtcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzg1LVxcdFxcdC8qIG5mY19kaWdpdGFsX2ZyYW1pbmdfbmZjYiAqL1xcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTM4Ny1cXHR9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozODg6XFx0LyogRW5zdXJlcyB0aGUgYXJyYXkgaGFzIE5GQ19ESUdJVEFMX0ZSQU1JTkdfTEFTVCBlbGVtZW50cyAqL1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozODk6XFx0W05GQ19ESUdJVEFMX0ZSQU1JTkdfTEFTVF0gPSB7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTM5MC1cXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9FTkQsIDAgfSxcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYz0zOTU9dGdfcHJvdG9jb2xzW11bUE9SVDEwMF9UR19NQVhfTlVNX1BST1RPQ09MUyArIDFdID0ge1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozOTY6XFx0W05GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQV9TSE9SVF0gPSB7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTM5Ny1cXHRcXHR7IFBPUlQxMDBfVEdfUFJPVF9FTkQsIDAgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzk4LVxcdH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjM5OTpcXHRbTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX1NUQU5EQVJEXSA9IHtcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtNDAwLVxcdFxcdHsgUE9SVDEwMF9UR19QUk9UX0VORCwgMCB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy00MDEtXFx0fSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6NDAyOlxcdFtORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfU1RBTkRBUkRfV0lUSF9DUkNfQV0gPSB7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTQwMy1cXHRcXHR7IFBPUlQxMDBfVEdfUFJPVF9FTkQsIDAgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtNDA0LVxcdH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjQwNTpcXHRbTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX1QxVF0gPSB7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTQwNi1cXHRcXHR7IFBPUlQxMDBfVEdfUFJPVF9FTkQsIDAgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtNDA3LVxcdH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjQwODpcXHRbTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX1QyVF0gPSB7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTQwOS1cXHRcXHR7IFBPUlQxMDBfVEdfUFJPVF9FTkQsIDAgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtNDEwLVxcdH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjQxMTpcXHRbTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX05GQ19ERVBdID0ge1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy00MTItXFx0XFx0eyBQT1JUMTAwX1RHX1BST1RfVFUsICAgICAxIH0sXFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtNDE2LVxcdH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjQxNzpcXHRbTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNGXSA9IHtcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtNDE4LVxcdFxcdHsgUE9SVDEwMF9UR19QUk9UX0VORCwgMCB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy00MTktXFx0fSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6NDIwOlxcdFtORkNfRElHSVRBTF9GUkFNSU5HX05GQ0ZfVDNUXSA9IHtcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtNDIxLVxcdFxcdHsgUE9SVDEwMF9UR19QUk9UX0VORCwgMCB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy00MjItXFx0fSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6NDIzOlxcdFtORkNfRElHSVRBTF9GUkFNSU5HX05GQ0ZfTkZDX0RFUF0gPSB7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTQyNC1cXHRcXHR7IFBPUlQxMDBfVEdfUFJPVF9UVSwgICAgIDEgfSxcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy00MjgtXFx0fSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6NDI5OlxcdFtORkNfRElHSVRBTF9GUkFNSU5HX05GQ19ERVBfQUNUSVZBVEVEXSA9IHtcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtNDMwLVxcdFxcdHsgUE9SVDEwMF9UR19QUk9UX1JGX09GRiwgMSB9LFxcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTQzMi1cXHR9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo0MzM6XFx0LyogRW5zdXJlcyB0aGUgYXJyYXkgaGFzIE5GQ19ESUdJVEFMX0ZSQU1JTkdfTEFTVCBlbGVtZW50cyAqL1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo0MzQ6XFx0W05GQ19ESUdJVEFMX0ZSQU1JTkdfTEFTVF0gPSB7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTQzNS1cXHRcXHR7IFBPUlQxMDBfVEdfUFJPVF9FTkQsICAgIDAgfSxcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYz0xMDcyPXN0YXRpYyBpbnQgcG9ydDEwMF9pbl9zZXRfcmYoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdTggcmYpXFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTA3OC1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTA3OTpcXHRpZiAocmYgXFx1MDAzZT0gTkZDX0RJR0lUQUxfUkZfVEVDSF9MQVNUKVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMDgwLVxcdFxcdHJldHVybiAtRUlOVkFMO1xcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jPTExMDE9c3RhdGljIGludCBwb3J0MTAwX2luX3NldF9mcmFtaW5nKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIGludCBwYXJhbSlcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMTEwLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxMTExOlxcdGlmIChwYXJhbSBcXHUwMDNlPSBORkNfRElHSVRBTF9GUkFNSU5HX0xBU1QpXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTExMTItXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM9MTE0Mz1zdGF0aWMgaW50IHBvcnQxMDBfaW5fY29uZmlndXJlX2h3KHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIGludCB0eXBlLFxcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTExNDUte1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxMTQ2OlxcdGlmICh0eXBlID09IE5GQ19ESUdJVEFMX0NPTkZJR19SRl9URUNIKVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMTQ3LVxcdFxcdHJldHVybiBwb3J0MTAwX2luX3NldF9yZihkZGV2LCBwYXJhbSk7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTExNDgtXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjExNDk6XFx0aWYgKHR5cGUgPT0gTkZDX0RJR0lUQUxfQ09ORklHX0ZSQU1JTkcpXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTExNTAtXFx0XFx0cmV0dXJuIHBvcnQxMDBfaW5fc2V0X2ZyYW1pbmcoZGRldiwgcGFyYW0pO1xcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jPTEyMjk9c3RhdGljIGludCBwb3J0MTAwX3RnX3NldF9yZihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB1OCByZilcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMjM1LVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxMjM2OlxcdGlmIChyZiBcXHUwMDNlPSBORkNfRElHSVRBTF9SRl9URUNIX0xBU1QpXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEyMzctXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM9MTI1OD1zdGF0aWMgaW50IHBvcnQxMDBfdGdfc2V0X2ZyYW1pbmcoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgaW50IHBhcmFtKVxcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEyNjctXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjEyNjg6XFx0aWYgKHBhcmFtIFxcdTAwM2U9IE5GQ19ESUdJVEFMX0ZSQU1JTkdfTEFTVClcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTI2OS1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYz0xMzAwPXN0YXRpYyBpbnQgcG9ydDEwMF90Z19jb25maWd1cmVfaHcoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgaW50IHR5cGUsXFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTMwMi17XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjEzMDM6XFx0aWYgKHR5cGUgPT0gTkZDX0RJR0lUQUxfQ09ORklHX1JGX1RFQ0gpXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEzMDQtXFx0XFx0cmV0dXJuIHBvcnQxMDBfdGdfc2V0X3JmKGRkZXYsIHBhcmFtKTtcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTMwNS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTMwNjpcXHRpZiAodHlwZSA9PSBORkNfRElHSVRBTF9DT05GSUdfRlJBTUlORylcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTMwNy1cXHRcXHRyZXR1cm4gcG9ydDEwMF90Z19zZXRfZnJhbWluZyhkZGV2LCBwYXJhbSk7XFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM9MTQwMD1zdGF0aWMgaW50IHBvcnQxMDBfbGlzdGVuX21kYWEoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xNDEwLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxNDExOlxcdHJjID0gcG9ydDEwMF90Z19jb25maWd1cmVfaHcoZGRldiwgTkZDX0RJR0lUQUxfQ09ORklHX1JGX1RFQ0gsXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjE0MTI6XFx0XFx0XFx0XFx0ICAgICBORkNfRElHSVRBTF9SRl9URUNIXzEwNkEpO1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xNDEzLVxcdGlmIChyYylcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xNDE1LVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxNDE2OlxcdHJjID0gcG9ydDEwMF90Z19jb25maWd1cmVfaHcoZGRldiwgTkZDX0RJR0lUQUxfQ09ORklHX0ZSQU1JTkcsXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjE0MTc6XFx0XFx0XFx0XFx0ICAgICBORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfTkZDX0RFUCk7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE0MTgtXFx0aWYgKHJjKVxcbi0tXFxuZHJpdmVycy9uZmMvc3Q5NWhmL0tjb25maWc9Mj1jb25maWcgTkZDX1NUOTVIRlxcbmRyaXZlcnMvbmZjL3N0OTVoZi9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIlNUOTVIRiBORkMgVHJhbnNjZWl2ZXIgZHJpdmVyXFxcIlxcbmRyaXZlcnMvbmZjL3N0OTVoZi9LY29uZmlnOjQ6XFx0ZGVwZW5kcyBvbiBTUEkgXFx1MDAyNlxcdTAwMjYgTkZDX0RJR0lUQUxcXG5kcml2ZXJzL25mYy9zdDk1aGYvS2NvbmZpZy01LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtMzAtLyogZHJpdmVyIGNhcGFiaWxpdGllcyAqL1xcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6MzE6I2RlZmluZSBTVDk1SEZfQ0FQQUJJTElUSUVTXFx0XFx0TkZDX0RJR0lUQUxfRFJWX0NBUFNfSU5fQ1JDXFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy0zMi1cXG4tLVxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM9Mzc0PXN0YXRpYyBpbnQgc3Q5NWhmX3NlbGVjdF9wcm90b2NvbChzdHJ1Y3Qgc3Q5NWhmX2NvbnRleHQgKnN0Y29udGV4dCwgaW50IHR5cGUpXFxuLS1cXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTM4MS1cXHRzd2l0Y2ggKHR5cGUpIHtcXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jOjM4MjpcXHRjYXNlIE5GQ19ESUdJVEFMX1JGX1RFQ0hfMTA2QTpcXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jOjM4MzpcXHRcXHRzdGNvbnRleHQtXFx1MDAzZWN1cnJlbnRfcmZfdGVjaCA9IE5GQ19ESUdJVEFMX1JGX1RFQ0hfMTA2QTtcXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTM4NC1cXHRcXHRyZXN1bHQgPSBzdDk1aGZfc2VuZF9yZWN2X2NtZChzdGNvbnRleHQsXFxuLS1cXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTQwMi1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jOjQwMzpcXHRjYXNlIE5GQ19ESUdJVEFMX1JGX1RFQ0hfMTA2QjpcXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jOjQwNDpcXHRcXHRzdGNvbnRleHQtXFx1MDAzZWN1cnJlbnRfcmZfdGVjaCA9IE5GQ19ESUdJVEFMX1JGX1RFQ0hfMTA2QjtcXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTQwNS1cXHRcXHRyZXN1bHQgPSBzdDk1aGZfc2VuZF9yZWN2X2NtZChzdGNvbnRleHQsXFxuLS1cXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTQyOS1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jOjQzMDpcXHRjYXNlIE5GQ19ESUdJVEFMX1JGX1RFQ0hfSVNPMTU2OTM6XFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzo0MzE6XFx0XFx0c3Rjb250ZXh0LVxcdTAwM2VjdXJyZW50X3JmX3RlY2ggPSBORkNfRElHSVRBTF9SRl9URUNIX0lTTzE1NjkzO1xcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtNDMyLVxcdFxcdHJlc3VsdCA9IHN0OTVoZl9zZW5kX3JlY3ZfY21kKHN0Y29udGV4dCxcXG4tLVxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM9NjQ4PXN0YXRpYyBpbnQgc3Q5NWhmX2Vycm9yX2hhbmRsaW5nKHN0cnVjdCBzdDk1aGZfY29udGV4dCAqc3Rjb250ZXh0LFxcbi0tXFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy02NjYtXFx0c3dpdGNoIChzdGNvbnRleHQtXFx1MDAzZWN1cnJlbnRfcmZfdGVjaCkge1xcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6NjY3OlxcdGNhc2UgTkZDX0RJR0lUQUxfUkZfVEVDSF8xMDZBOlxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtNjY4LVxcdFxcdGlmIChzdGNvbnRleHQtXFx1MDAzZXNlbmRyY3ZfdHJmbGFnID09IFRSRkxBR19ORkNBX1NURF9GUkFNRV9DUkMpIHtcXG4tLVxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtNjc3LVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6Njc4OlxcdGNhc2UgTkZDX0RJR0lUQUxfUkZfVEVDSF8xMDZCOlxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6Njc5OlxcdGNhc2UgTkZDX0RJR0lUQUxfUkZfVEVDSF9JU08xNTY5MzpcXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTY4MC1cXHRcXHRlcnJvcl9ieXRlID0gc2tiX3Jlc3AtXFx1MDAzZWRhdGFbcmVzX2xlbiAtIDFdO1xcbi0tXFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYz02OTM9c3RhdGljIGludCBzdDk1aGZfcmVzcG9uc2VfaGFuZGxlcihzdHJ1Y3Qgc3Q5NWhmX2NvbnRleHQgKnN0Y29udGV4dCxcXG4tLVxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtNzM2LVxcdHN3aXRjaCAoc3Rjb250ZXh0LVxcdTAwM2VjdXJyZW50X3JmX3RlY2gpIHtcXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jOjczNzpcXHRjYXNlIE5GQ19ESUdJVEFMX1JGX1RFQ0hfMTA2QTpcXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTczOC1cXHRcXHRpZiAoc3Rjb250ZXh0LVxcdTAwM2VzZW5kcmN2X3RyZmxhZyA9PSBUUkZMQUdfTkZDQV9TVERfRlJBTUVfQ1JDKVxcbi0tXFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy03NDItXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzo3NDM6XFx0Y2FzZSBORkNfRElHSVRBTF9SRl9URUNIXzEwNkI6XFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzo3NDQ6XFx0Y2FzZSBORkNfRElHSVRBTF9SRl9URUNIX0lTTzE1NjkzOlxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtNzQ1LVxcdFxcdHNrYl90cmltKHNrYl9yZXNwLCAoc2tiX2xlbiAtIDMpKTtcXG4tLVxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM9ODY5PXN0YXRpYyBpbnQgc3Q5NWhmX2luX2NvbmZpZ3VyZV9odyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxcbi0tXFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy04NzQtXFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzo4NzU6XFx0aWYgKHR5cGUgPT0gTkZDX0RJR0lUQUxfQ09ORklHX1JGX1RFQ0gpXFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy04NzYtXFx0XFx0cmV0dXJuIHN0OTVoZl9zZWxlY3RfcHJvdG9jb2woc3Rjb250ZXh0LCBwYXJhbSk7XFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy04NzctXFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzo4Nzg6XFx0aWYgKHR5cGUgPT0gTkZDX0RJR0lUQUxfQ09ORklHX0ZSQU1JTkcpIHtcXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTg3OS1cXHRcXHRzd2l0Y2ggKHBhcmFtKSB7XFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzo4ODA6XFx0XFx0Y2FzZSBORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfU0hPUlQ6XFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy04ODEtXFx0XFx0XFx0c3Rjb250ZXh0LVxcdTAwM2VzZW5kcmN2X3RyZmxhZyA9IFRSRkxBR19ORkNBX1NIT1JUX0ZSQU1FO1xcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtODgyLVxcdFxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6ODgzOlxcdFxcdGNhc2UgTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX1NUQU5EQVJEOlxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtODg0LVxcdFxcdFxcdHN0Y29udGV4dC1cXHUwMDNlc2VuZHJjdl90cmZsYWcgPSBUUkZMQUdfTkZDQV9TVERfRlJBTUU7XFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy04ODUtXFx0XFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzo4ODY6XFx0XFx0Y2FzZSBORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfVDRUOlxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6ODg3OlxcdFxcdGNhc2UgTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX05GQ19ERVA6XFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzo4ODg6XFx0XFx0Y2FzZSBORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfU1RBTkRBUkRfV0lUSF9DUkNfQTpcXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTg4OS1cXHRcXHRcXHRzdGNvbnRleHQtXFx1MDAzZXNlbmRyY3ZfdHJmbGFnID0gVFJGTEFHX05GQ0FfU1REX0ZSQU1FX0NSQztcXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTg5MC1cXHRcXHRcXHRicmVhaztcXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jOjg5MTpcXHRcXHRjYXNlIE5GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQjpcXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jOjg5MjpcXHRcXHRjYXNlIE5GQ19ESUdJVEFMX0ZSQU1JTkdfSVNPMTU2OTNfSU5WRU5UT1JZOlxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6ODkzOlxcdFxcdGNhc2UgTkZDX0RJR0lUQUxfRlJBTUlOR19JU08xNTY5M19UNVQ6XFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy04OTQtXFx0XFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jPTkxNT1zdGF0aWMgaW50IHN0OTVoZl9pbl9zZW5kX2NtZChzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxcbi0tXFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy05MzAtXFx0c3dpdGNoIChzdGNvbnRleHQtXFx1MDAzZWN1cnJlbnRfcmZfdGVjaCkge1xcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6OTMxOlxcdGNhc2UgTkZDX0RJR0lUQUxfUkZfVEVDSF8xMDZBOlxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtOTMyLVxcdFxcdGxlbl9kYXRhX3RvX3RhZyA9IHNrYi1cXHUwMDNlbGVuICsgMTtcXG4tLVxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtOTM0LVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6OTM1OlxcdGNhc2UgTkZDX0RJR0lUQUxfUkZfVEVDSF8xMDZCOlxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6OTM2OlxcdGNhc2UgTkZDX0RJR0lUQUxfUkZfVEVDSF9JU08xNTY5MzpcXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTkzNy1cXHRcXHRsZW5fZGF0YV90b190YWcgPSBza2ItXFx1MDAzZWxlbjtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTMtICogbWVzc2VzIHVwIHRoZSBkYXRhIHJldHVybmVkIHNvIGl0IGlzIG9ubHkgZW5hYmxlZCB3aGVuIHRoZSBmcmFtaW5nIGlzXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5NDogKiAnTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX1QyVCcgYW5kIHRoZSBjb21tYW5kIGlzIG5vdCBhIHJlYWQgY29tbWFuZC5cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk1LSAqIFVuZm9ydHVuYXRlbHksIHRoYXQgbWVhbnMgdGhhdCB0aGUgZHJpdmVyIGhhcyB0byBwZWVrIGludG8gdHggZnJhbWVzXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5NjogKiB3aGVuIHRoZSBmcmFtaW5nIGlzICdORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfVDJUJy4gIFRoaXMgaXMgZG9uZSBieVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTctICogdGhlIHRyZjc5NzBhX3Blcl9jbWRfY29uZmlnKCkgcm91dGluZS5cXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM9NjE3PXN0YXRpYyBpbnQgdHJmNzk3MGFfbW9kZV9kZXRlY3Qoc3RydWN0IHRyZjc5NzBhICp0cmYsIHU4ICpyZl90ZWNoKVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02MjctXFx0Y2FzZSBUUkY3OTA3MEFfTkZDX1RBUkdFVF9QUk9UT0NPTF8xMDZBOlxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NjI4OlxcdFxcdHRlY2ggPSBORkNfRElHSVRBTF9SRl9URUNIXzEwNkE7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02MjktXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02MzAtXFx0Y2FzZSBUUkY3OTA3MEFfTkZDX1RBUkdFVF9QUk9UT0NPTF8xMDZCOlxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NjMxOlxcdFxcdHRlY2ggPSBORkNfRElHSVRBTF9SRl9URUNIXzEwNkI7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02MzItXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02MzMtXFx0Y2FzZSBUUkY3OTA3MEFfTkZDX1RBUkdFVF9QUk9UT0NPTF8yMTJGOlxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NjM0OlxcdFxcdHRlY2ggPSBORkNfRElHSVRBTF9SRl9URUNIXzIxMkY7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02MzUtXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02MzYtXFx0Y2FzZSBUUkY3OTA3MEFfTkZDX1RBUkdFVF9QUk9UT0NPTF80MjRGOlxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NjM3OlxcdFxcdHRlY2ggPSBORkNfRElHSVRBTF9SRl9URUNIXzQyNEY7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02MzgtXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jPTc4Mz1zdGF0aWMgdm9pZCB0cmY3OTcwYV9kcmFpbl9maWZvKHN0cnVjdCB0cmY3OTcwYSAqdHJmLCB1OCBzdGF0dXMpXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTgyOC1cXHQvKiBJZiByZWNlaXZlZCBUeXBlIDIgQUNLL05BQ0ssIHNoaWZ0IHJpZ2h0IDQgYml0cyBhbmQgcGFzcyB1cCAqL1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6ODI5OlxcdGlmICgodHJmLVxcdTAwM2VmcmFtaW5nID09IE5GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQV9UMlQpIFxcdTAwMjZcXHUwMDI2IChza2ItXFx1MDAzZWxlbiA9PSAxKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODMwLVxcdCAgICAodHJmLVxcdTAwM2VzcGVjaWFsX2Zjbl9yZWcxID09IFRSRjc5NzBBX1NQRUNJQUxfRkNOX1JFRzFfNF9CSVRfUlgpKSB7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jPTg2NT1zdGF0aWMgaXJxcmV0dXJuX3QgdHJmNzk3MGFfaXJxKGludCBpcnEsIHZvaWQgKmRldl9pZClcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTUxLVxcdFxcdFxcdHN3aXRjaCAodHJmLVxcdTAwM2VmcmFtaW5nKSB7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5NTI6XFx0XFx0XFx0Y2FzZSBORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfU1RBTkRBUkQ6XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05NTMtXFx0XFx0XFx0XFx0dHJmLVxcdTAwM2V0eF9jbWQgPSBUUkY3OTcwQV9DTURfVFJBTlNNSVRfTk9fQ1JDO1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05NTYtXFx0XFx0XFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5NTc6XFx0XFx0XFx0Y2FzZSBORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfU1RBTkRBUkRfV0lUSF9DUkNfQTpcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk1OC1cXHRcXHRcXHRcXHR0cmYtXFx1MDAzZXR4X2NtZCA9IFRSRjc5NzBBX0NNRF9UUkFOU01JVDtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTYxLVxcdFxcdFxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTYyOlxcdFxcdFxcdGNhc2UgTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX0FOVElDT0xfQ09NUExFVEU6XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05NjMtXFx0XFx0XFx0XFx0cmV0ID0gdHJmNzk3MGFfd3JpdGUodHJmLFxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYz0xMjE4PXN0YXRpYyBpbnQgdHJmNzk3MGFfaW5fY29uZmlnX3JmX3RlY2goc3RydWN0IHRyZjc5NzBhICp0cmYsIGludCB0ZWNoKVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjI0LVxcdHN3aXRjaCAodGVjaCkge1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTIyNTpcXHRjYXNlIE5GQ19ESUdJVEFMX1JGX1RFQ0hfMTA2QTpcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyMjYtXFx0XFx0dHJmLVxcdTAwM2Vpc29fY3RybF90ZWNoID0gVFJGNzk3MEFfSVNPX0NUUkxfMTQ0NDNBXzEwNjtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTIzMS1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEyMzI6XFx0Y2FzZSBORkNfRElHSVRBTF9SRl9URUNIXzEwNkI6XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjMzLVxcdFxcdHRyZi1cXHUwMDNlaXNvX2N0cmxfdGVjaCA9IFRSRjc5NzBBX0lTT19DVFJMXzE0NDQzQl8xMDY7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyMzgtXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMjM5OlxcdGNhc2UgTkZDX0RJR0lUQUxfUkZfVEVDSF8yMTJGOlxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI0MC1cXHRcXHR0cmYtXFx1MDAzZWlzb19jdHJsX3RlY2ggPSBUUkY3OTcwQV9JU09fQ1RSTF9GRUxJQ0FfMjEyO1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjQ1LVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTI0NjpcXHRjYXNlIE5GQ19ESUdJVEFMX1JGX1RFQ0hfNDI0RjpcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyNDctXFx0XFx0dHJmLVxcdTAwM2Vpc29fY3RybF90ZWNoID0gVFJGNzk3MEFfSVNPX0NUUkxfRkVMSUNBXzQyNDtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI1Mi1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEyNTM6XFx0Y2FzZSBORkNfRElHSVRBTF9SRl9URUNIX0lTTzE1NjkzOlxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI1NC1cXHRcXHR0cmYtXFx1MDAzZWlzb19jdHJsX3RlY2ggPSBUUkY3OTcwQV9JU09fQ1RSTF8xNTY5M19TR0xfMU9GNF8yNjQ4O1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYz0xMzEyPXN0YXRpYyBpbnQgdHJmNzk3MGFfaW5fY29uZmlnX2ZyYW1pbmcoc3RydWN0IHRyZjc5NzBhICp0cmYsIGludCBmcmFtaW5nKVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzIwLVxcdHN3aXRjaCAoZnJhbWluZykge1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTMyMTpcXHRjYXNlIE5GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQV9TSE9SVDpcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEzMjI6XFx0Y2FzZSBORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfU1RBTkRBUkQ6XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzIzLVxcdFxcdHRyZi1cXHUwMDNldHhfY21kID0gVFJGNzk3MEFfQ01EX1RSQU5TTUlUX05PX0NSQztcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTMyNS1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEzMjY6XFx0Y2FzZSBORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfU1RBTkRBUkRfV0lUSF9DUkNfQTpcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEzMjc6XFx0Y2FzZSBORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfVDRUOlxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTMyODpcXHRjYXNlIE5GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQjpcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEzMjk6XFx0Y2FzZSBORkNfRElHSVRBTF9GUkFNSU5HX05GQ0JfVDRUOlxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTMzMDpcXHRjYXNlIE5GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDRjpcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEzMzE6XFx0Y2FzZSBORkNfRElHSVRBTF9GUkFNSU5HX05GQ0ZfVDNUOlxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTMzMjpcXHRjYXNlIE5GQ19ESUdJVEFMX0ZSQU1JTkdfSVNPMTU2OTNfSU5WRU5UT1JZOlxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTMzMzpcXHRjYXNlIE5GQ19ESUdJVEFMX0ZSQU1JTkdfSVNPMTU2OTNfVDVUOlxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTMzNDpcXHRjYXNlIE5GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQV9ORkNfREVQOlxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTMzNTpcXHRjYXNlIE5GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDRl9ORkNfREVQOlxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTMzNi1cXHRcXHR0cmYtXFx1MDAzZXR4X2NtZCA9IFRSRjc5NzBBX0NNRF9UUkFOU01JVDtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTMzOC1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEzMzk6XFx0Y2FzZSBORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfVDJUOlxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTM0MC1cXHRcXHR0cmYtXFx1MDAzZXR4X2NtZCA9IFRSRjc5NzBBX0NNRF9UUkFOU01JVDtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM9MTM4Nz1zdGF0aWMgaW50IHRyZjc5NzBhX2luX2NvbmZpZ3VyZV9odyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBpbnQgdHlwZSxcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQwNi1cXHRzd2l0Y2ggKHR5cGUpIHtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE0MDc6XFx0Y2FzZSBORkNfRElHSVRBTF9DT05GSUdfUkZfVEVDSDpcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0MDgtXFx0XFx0cmV0ID0gdHJmNzk3MGFfaW5fY29uZmlnX3JmX3RlY2godHJmLCBwYXJhbSk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDA5LVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTQxMDpcXHRjYXNlIE5GQ19ESUdJVEFMX0NPTkZJR19GUkFNSU5HOlxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQxMS1cXHRcXHRyZXQgPSB0cmY3OTcwYV9pbl9jb25maWdfZnJhbWluZyh0cmYsIHBhcmFtKTtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM9MTQzOT1zdGF0aWMgaW50IHRyZjc5NzBhX3Blcl9jbWRfY29uZmlnKHN0cnVjdCB0cmY3OTcwYSAqdHJmLFxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDU2LVxcdCAqL1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTQ1NzpcXHRpZiAoKHRyZi1cXHUwMDNldGVjaG5vbG9neSA9PSBORkNfRElHSVRBTF9SRl9URUNIXzEwNkEpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNDU4OlxcdCAgICAodHJmLVxcdTAwM2VmcmFtaW5nID09IE5GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQV9UMlQpKSB7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDU5LVxcdFxcdGlmIChyZXFbMF0gPT0gTkZDX1QyVF9DTURfUkVBRClcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQ3MS1cXHRcXHR9XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNDcyOlxcdH0gZWxzZSBpZiAodHJmLVxcdTAwM2V0ZWNobm9sb2d5ID09IE5GQ19ESUdJVEFMX1JGX1RFQ0hfSVNPMTU2OTMpIHtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0NzMtXFx0XFx0aXNvX2N0cmwgPSB0cmYtXFx1MDAzZWlzb19jdHJsIFxcdTAwMjYgflRSRjc5NzBBX0lTT19DVFJMX1JGSURfU1BFRURfTUFTSztcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQ5OC1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE0OTk6XFx0XFx0aWYgKCh0cmYtXFx1MDAzZWZyYW1pbmcgPT0gTkZDX0RJR0lUQUxfRlJBTUlOR19JU08xNTY5M19UNVQpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNTAwLVxcdFxcdCAgICB0cmY3OTcwYV9pc19pc28xNTY5M193cml0ZV9vcl9sb2NrKHJlcVsxXSkgXFx1MDAyNlxcdTAwMjZcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM9MTUwOD1zdGF0aWMgaW50IHRyZjc5NzBhX3NlbmRfY21kKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE1ODQtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNTg1OlxcdGlmICh0cmYtXFx1MDAzZWZyYW1pbmcgPT0gTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX1NIT1JUKSB7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNTg2LVxcdFxcdHByZWZpeFszXSA9IDB4MDA7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jPTE2MTI9c3RhdGljIGludCB0cmY3OTcwYV90Z19jb25maWdfcmZfdGVjaChzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgaW50IHRlY2gpXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE2MTgtXFx0c3dpdGNoICh0ZWNoKSB7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNjE5OlxcdGNhc2UgTkZDX0RJR0lUQUxfUkZfVEVDSF8xMDZBOlxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTYyMC1cXHRcXHR0cmYtXFx1MDAzZWlzb19jdHJsX3RlY2ggPSBUUkY3OTcwQV9JU09fQ1RSTF9ORkNfTkZDX0NFX01PREUgfFxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNjI1LVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTYyNjpcXHRjYXNlIE5GQ19ESUdJVEFMX1JGX1RFQ0hfMjEyRjpcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE2MjctXFx0XFx0dHJmLVxcdTAwM2Vpc29fY3RybF90ZWNoID0gVFJGNzk3MEFfSVNPX0NUUkxfTkZDX05GQ19DRV9NT0RFIHxcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTYzMi1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE2MzM6XFx0Y2FzZSBORkNfRElHSVRBTF9SRl9URUNIXzQyNEY6XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNjM0LVxcdFxcdHRyZi1cXHUwMDNlaXNvX2N0cmxfdGVjaCA9IFRSRjc5NzBBX0lTT19DVFJMX05GQ19ORkNfQ0VfTU9ERSB8XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE2NTMtXFx0ICovXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNjU0OlxcdGlmICgodHJmLVxcdTAwM2VmcmFtaW5nID09IE5GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDX0RFUF9BQ1RJVkFURUQpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNjU1LVxcdCAgICAodHJmLVxcdTAwM2Vpc29fY3RybF90ZWNoICE9IHRyZi1cXHUwMDNlaXNvX2N0cmwpKSB7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jPTE2NzA9c3RhdGljIGludCB0cmY3OTcwYV90Z19jb25maWdfZnJhbWluZyhzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgaW50IGZyYW1pbmcpXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE2NzctXFx0c3dpdGNoIChmcmFtaW5nKSB7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNjc4OlxcdGNhc2UgTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX05GQ19ERVA6XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNjc5LVxcdFxcdHRyZi1cXHUwMDNldHhfY21kID0gVFJGNzk3MEFfQ01EX1RSQU5TTUlUX05PX0NSQztcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTY4MS1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE2ODI6XFx0Y2FzZSBORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfU1RBTkRBUkQ6XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNjgzOlxcdGNhc2UgTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX1NUQU5EQVJEX1dJVEhfQ1JDX0E6XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNjg0OlxcdGNhc2UgTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX0FOVElDT0xfQ09NUExFVEU6XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNjg1LVxcdFxcdC8qIFRoZXNlIG9uZXMgYXJlIGFwcGxpZWQgaW4gdGhlIGludGVycnVwdCBoYW5kbGVyICovXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE2ODctXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNjg4OlxcdGNhc2UgTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNGX05GQ19ERVA6XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNjg5LVxcdFxcdHRyZi1cXHUwMDNldHhfY21kID0gVFJGNzk3MEFfQ01EX1RSQU5TTUlUO1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNjkxLVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTY5MjpcXHRjYXNlIE5GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDX0RFUF9BQ1RJVkFURUQ6XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNjkzLVxcdFxcdHRyZi1cXHUwMDNldHhfY21kID0gVFJGNzk3MEFfQ01EX1RSQU5TTUlUO1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYz0xNzI5PXN0YXRpYyBpbnQgdHJmNzk3MGFfdGdfY29uZmlndXJlX2h3KHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIGludCB0eXBlLFxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNzQ4LVxcdHN3aXRjaCAodHlwZSkge1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTc0OTpcXHRjYXNlIE5GQ19ESUdJVEFMX0NPTkZJR19SRl9URUNIOlxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTc1MC1cXHRcXHRyZXQgPSB0cmY3OTcwYV90Z19jb25maWdfcmZfdGVjaCh0cmYsIHBhcmFtKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE3NTEtXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNzUyOlxcdGNhc2UgTkZDX0RJR0lUQUxfQ09ORklHX0ZSQU1JTkc6XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNzUzLVxcdFxcdHJldCA9IHRyZjc5NzBhX3RnX2NvbmZpZ19mcmFtaW5nKHRyZiwgcGFyYW0pO1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYz0xODU1PXN0YXRpYyBpbnQgdHJmNzk3MGFfdGdfbGlzdGVuX21kKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE4NjQtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxODY1OlxcdHJldCA9IHRyZjc5NzBhX3RnX2NvbmZpZ3VyZV9odyhkZGV2LCBORkNfRElHSVRBTF9DT05GSUdfUkZfVEVDSCxcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE4NjY6XFx0XFx0XFx0XFx0ICAgICAgIE5GQ19ESUdJVEFMX1JGX1RFQ0hfMTA2QSk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xODY3LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE4NjktXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxODcwOlxcdHJldCA9IHRyZjc5NzBhX3RnX2NvbmZpZ3VyZV9odyhkZGV2LCBORkNfRElHSVRBTF9DT05GSUdfRlJBTUlORyxcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE4NzE6XFx0XFx0XFx0XFx0ICAgICAgIE5GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQV9ORkNfREVQKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE4NzItXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM9MjA0NT1zdGF0aWMgaW50IHRyZjc5NzBhX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTIxNzUtXFx0XFx0XFx0XFx0XFx0XFx0VFJGNzk3MEFfU1VQUE9SVEVEX1BST1RPQ09MUyxcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjIxNzY6XFx0XFx0XFx0XFx0XFx0XFx0TkZDX0RJR0lUQUxfRFJWX0NBUFNfSU5fQ1JDIHxcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjIxNzc6XFx0XFx0XFx0XFx0XFx0XFx0TkZDX0RJR0lUQUxfRFJWX0NBUFNfVEdfQ1JDLCAwLFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMjE3OC1cXHRcXHRcXHRcXHRcXHRcXHQwKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTJUMTM6MjQ6MjAuNzIzNzU4OTk1WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjE4NDUwNTU5MjU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBORkMgRHJpdmVyIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIE5GQy1yZWxhdGVkIGNvbmZpZ3VyYXRpb25zIGFuZCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlaXIgcmVsYXRpb25zaGlwcy4gU3BlY2lmaWNhbGx5LCBJIHNlZSB0aGF0IGBORkNfUE9SVDEwMGAgaXMgZGVwZW5kZW50IG9uIGJvdGggYFVTQmAgYW5kIGBORkNfRElHSVRBTGAuIFRoYXQgbWFrZXMgc2Vuc2U7IGBORkNfUE9SVDEwMGAgcHJvYmFibHkgcmVmZXJzIHRvIGEgc3BlY2lmaWMgdHlwZSBvZiBORkMgcmVhZGVyIHRoYXQgaW50ZXJmYWNlcyB2aWEgVVNCLiBBbmQgb2YgY291cnNlLCBpdCBuZWVkcyB0aGUgdW5kZXJseWluZyBkaWdpdGFsIE5GQyBzdXBwb3J0LiBUaGVuIEkgc2VlIGBORkNfU0lNYCBvbmx5IGRlcGVuZHMgb24gYE5GQ19ESUdJVEFMYCwgd2hpY2ggbGlrZWx5IG1lYW5zIGBORkNfU0lNYCBzdXBwb3J0IHVzZXMgTkZDIGZ1bmN0aW9uYWxpdHkgYnV0IG5vdCBhIFVTQiBjb25uZWN0aW9uLlxuXG5UbyBnZXQgYSBjbGVhcmVyIHBpY3R1cmUgb2YgaG93IHRoZXNlIG9wdGlvbnMgYXJlIHN0cnVjdHVyZWQsIEkgc2hvdWxkIGRpdmUgaW50byB0aGUgS2NvbmZpZyBmaWxlIGZvciB0aGUgTkZDIGRyaXZlcnMuIEknbGwgbmVlZCB0byBjaGVjayBgZHJpdmVycy9uZmMvS2NvbmZpZ2AgdG8gc2VlIHRoZSBjb21wbGV0ZSBjb250ZXh0IGFyb3VuZCBgTkZDX1BPUlQxMDBgIGFuZCBgTkZDX1NJTWAuIEknbSBleHBlY3RpbmcgdG8gZmluZCBpbmZvcm1hdGlvbiBhYm91dCBkZWZhdWx0IHZhbHVlcywgaGVscCB0ZXh0LCBhbmQgb3RoZXIgZGVwZW5kZW5jaWVzIHRoYXQgSSBoYXZlbid0IGNvbnNpZGVyZWQgeWV0LiBVbmRlcnN0YW5kaW5nIHRoZSBLY29uZmlnIGhpZXJhcmNoeSBpcyBrZXkgdG8gbWFraW5nIHN1cmUgbXkgY29uZmlndXJhdGlvbnMgYXJlIGNvcnJlY3QgYW5kIGRvbid0IGludHJvZHVjZSBhbnkgY29uZmxpY3RzLiBUaW1lIHRvIGRpZyBpbiFcblxuXG4iLCJJbnB1dFRva2VucyI6MzYyNzcsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMlQxMzoyNDozOS4xNzQzMjExMTlaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njk1NzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZmMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAzMCxcbiAgXCJMaW5lQ291bnRcIjogMjVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAzMDpcXHRcXG4gIDMxOlxcdGNvbmZpZyBORkNfU0lNXFxuICAzMjpcXHRcXHR0cmlzdGF0ZSBcXFwiTkZDIGhhcmR3YXJlIHNpbXVsYXRvciBkcml2ZXJcXFwiXFxuICAzMzpcXHRcXHRkZXBlbmRzIG9uIE5GQ19ESUdJVEFMXFxuICAzNDpcXHRcXHRoZWxwXFxuICAzNTpcXHRcXHQgIFRoaXMgZHJpdmVyIGRlY2xhcmVzIHR3byB2aXJ0dWFsIE5GQyBkZXZpY2VzIHN1cHBvcnRpbmcgTkZDLURFUFxcbiAgMzY6XFx0XFx0ICBwcm90b2NvbC4gQW4gTExDUCBjb25uZWN0aW9uIGNhbiBiZSBlc3RhYmxpc2hlZCBiZXR3ZWVuIHRoZW0gYW5kXFxuICAzNzpcXHRcXHQgIGFsbCBwYWNrZXRzIHNlbnQgZnJvbSBvbmUgZGV2aWNlIGlzIHNlbnQgYmFjayB0byB0aGUgb3RoZXIsIGFjdGluZyBhc1xcbiAgMzg6XFx0XFx0ICBsb29wYmFjayBkZXZpY2VzLlxcbiAgMzk6XFx0XFxuICA0MDpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuICA0MTpcXHRcXG4gIDQyOlxcdGNvbmZpZyBORkNfUE9SVDEwMFxcbiAgNDM6XFx0XFx0dHJpc3RhdGUgXFxcIlNvbnkgTkZDIFBvcnQtMTAwIFNlcmllcyBVU0IgZGV2aWNlIHN1cHBvcnRcXFwiXFxuICA0NDpcXHRcXHRkZXBlbmRzIG9uIFVTQlxcbiAgNDU6XFx0XFx0ZGVwZW5kcyBvbiBORkNfRElHSVRBTFxcbiAgNDY6XFx0XFx0aGVscFxcbiAgNDc6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgU29ueSBQb3J0LTEwMCBjaGlwIGJhc2VkIFVTQiBkZXZpY2VzIHN1Y2ggYXMgdGhlXFxuICA0ODpcXHRcXHQgIFJDLVMzODAgZG9uZ2xlLlxcbiAgNDk6XFx0XFxuICA1MDpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuICA1MTpcXHRcXG4gIDUyOlxcdGNvbmZpZyBORkNfVklSVFVBTF9OQ0lcXG4gIDUzOlxcdFxcdHRyaXN0YXRlIFxcXCJOQ0kgZGV2aWNlIHNpbXVsYXRvciBkcml2ZXJcXFwiXFxuICA1NDpcXHRcXHRkZXBlbmRzIG9uIE5GQ19OQ0lcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTJUMTM6MjQ6MzkuMTc0MzkzMTQ4WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjE2MDkxMzU3OTI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IE5GQyBGdXp6aW5nIEh5cG90aGVzaXMqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJJ20gbG9va2luZyBhdCBgTkZDX1NJTWAsIHRoYXQgdmlydHVhbCBORkMgZHJpdmVyLCBlc3NlbnRpYWxseSBhIGxvb3BiYWNrIGZvciBORkMtREVQLiBJbnRlcmVzdGluZywgYSBjbG9zZWQgc3lzdGVtIHRvIGV4cGxvcmUgYW5kIHBlcmhhcHMgbGV2ZXJhZ2UuIFRoZW4gdGhlcmUncyBgTkZDX1BPUlQxMDBgLCB3aGljaCBpcyBTb255J3MgTkZDIFVTQiBkZXZpY2UgZHJpdmVyLCBvYnZpb3VzbHkgVVNCLWRlcGVuZGVudC4gTm93IHRoZSBjcnVjaWFsIGNvbm5lY3Rpb246IHN5emthbGxlciBoYXMgVVNCIGZ1enppbmcgY2FwYWJpbGl0aWVzIHdpdGggaXRzIGdhZGdldCBhbmQgcmF3X2dhZGdldCBmZWF0dXJlcywgYW5kIGl0J3MgYWxyZWFkeSBoYW1tZXJpbmcgYXdheSBhdCBORkMgc29ja2V0cyAoQUZfTkZDKSBhbmQgbmV0bGluay4gVGhpcyBpcyBwcm9taXNpbmcsIGVzcGVjaWFsbHkgZ2l2ZW4gaG93IGFnZ3Jlc3NpdmVseSBzeXprYWxsZXIgdGFyZ2V0cyBgbmV0L25mYy9gIGdlbmVyYWxseSwgcmV2ZWFsaW5nIHBsZW50eSBvZiBidWdzLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJEb2VzIHN5emthbGxlciBoYXZlIE5GQyBzeXNjYWxsIGRlc2NyaXB0aW9ucywgb3IgaXMgaXQgYWxyZWFkeSBmdXp6aW5nIE5GQyBlZmZlY3RpdmVseT9cIiBJdCBtYWtlcyBzZW5zZSB0byB2ZXJpZnkuXG5cbkEgcXVpY2sgY2hlY2sgY29uZmlybXMgYEFGX05GQ2AgaXMgaW5kZWVkIHByZXNlbnQgaW4gdGhlIGtlcm5lbCB2aWEgYG5ldC9uZmMvYWZfbmZjLmNgLiBOb3csIEkgd2FudCB0byB1bmRlcnN0YW5kICpob3cqIGBkaWdpdGFsX2RlcGAgaXMgaW52b2tlZC4gV2hhdCBhcmUgdGhlIGNhbGxpbmcgcGF0dGVybnM/IEknbGwgdXNlIGBkaWdpdGFsX2RlcGAgb3IgYG5mY19kaWdpdGFsYCBhcyB0aGUgc2VhcmNoIHRlcm1zIHdpdGhpbiBgbmV0L25mYy9gIGZvciBtb3JlIGNvbnRleHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2OTU0LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQ0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTJUMTM6MjQ6NTUuMjY1NzUzNDE0WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjI2NTM5MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmZjXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZmMvZGlnaXRhbF9kZXAuYz0xMDY9c3RhdGljIHZvaWQgZGlnaXRhbF9pbl9yZWN2X2RlcF9yZXMoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDctXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBza19idWZmICpyZXNwKTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTA4OnN0YXRpYyB2b2lkIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTA5LVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqcmVzcCk7XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9OTc4PXN0YXRpYyBpbnQgZGlnaXRhbF90Z19zZW5kX2FjayhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwMTItXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwMTM6XFx0cmMgPSBkaWdpdGFsX3RnX3NlbmRfY21kKGRkZXYsIHNrYiwgMTUwMCwgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEsXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwMTQtXFx0XFx0XFx0XFx0IGRhdGFfZXhjaCk7XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9MTAyND1zdGF0aWMgaW50IGRpZ2l0YWxfdGdfc2VuZF9hdG4oc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldilcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDUxLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDUyOlxcdHJjID0gZGlnaXRhbF90Z19zZW5kX2NtZChkZGV2LCBza2IsIDE1MDAsIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxLFxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDUzLVxcdFxcdFxcdFxcdCBOVUxMKTtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz0xMDYwPXN0YXRpYyBpbnQgZGlnaXRhbF90Z19zZW5kX3NhdmVkX3NrYihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2KVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwNjktXFx0cmMgPSBkaWdpdGFsX3RnX3NlbmRfY21kKGRkZXYsIGRkZXYtXFx1MDAzZXNhdmVkX3NrYiwgMTUwMCxcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTA3MDpcXHRcXHRcXHRcXHQgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEsIE5VTEwpO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDcxLVxcdGlmIChyYylcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDc2LVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDc3OnN0YXRpYyB2b2lkIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTA3OC1cXHRcXHRcXHRcXHQgICAgc3RydWN0IHNrX2J1ZmYgKnJlc3ApXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9MTI5Nz1pbnQgZGlnaXRhbF90Z19zZW5kX2RlcF9yZXMoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzMxLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMzMyOlxcdHJjID0gZGlnaXRhbF90Z19zZW5kX2NtZChkZGV2LCB0bXBfc2tiLCAxNTAwLCBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcSxcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTMzMy1cXHRcXHRcXHRcXHQgTlVMTCk7XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9MTM0OD1zdGF0aWMgdm9pZCBkaWdpdGFsX3RnX3NlbmRfcHNsX3Jlc19jb21wbGV0ZShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEzNTktXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEzNjA6XFx0ZGlnaXRhbF90Z19saXN0ZW4oZGRldiwgMTUwMCwgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEsIE5VTEwpO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzYxLVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTE0Njc9c3RhdGljIHZvaWQgZGlnaXRhbF90Z19zZW5kX2F0cl9yZXNfY29tcGxldGUoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xNDg1LVxcdGVsc2VcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTQ4NjpcXHRcXHRkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcShkZGV2LCBhcmcsIHJlc3ApO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xNDg3LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTJUMTM6MjQ6NTUuMzEyMDIzNTk3WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjI1MTcxNzczNDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIERFUCBSZXF1ZXN0IEhhbmRsaW5nKipcblxuT2theSwgc28gYGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxYCBpcyB0aGUga2V5IGZ1bmN0aW9uLCB0aGUgcmVjZWl2ZSBoYW5kbGVyIGZvciBERVAgcmVxdWVzdHMgaW4gdGFyZ2V0IG1vZGUuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHRyYWNlIHRoZSBleGVjdXRpb24gZmxvdyBhbmQgc2VlIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgYWN0dWFsbHkgdHJpZ2dlcmVkIGR1cmluZyBERVAgbGluayBzZXR1cCBvciB0YXJnZXQgb3BlcmF0aW9ucy4gSSdsbCBuZWVkIHRvIGlkZW50aWZ5IHRoZSBwb2ludHMgb2Ygb3JpZ2luLlxuXG5GaXJzdCwgSSBuZWVkIHRvIGNoZWNrIGBuZXQvbmZjL2RpZ2l0YWxfZGVwLmNgIHRvIHNlZSBob3cgcmVzcG9uc2VzIGFyZSBoYW5kbGVkLiBJJ20gbG9va2luZyBmb3IgdGhlIGZ1bmN0aW9uIGNhbGxzIHRoYXQgbWlnaHQgcmVsYXRlIHRvIHRoZSB0cmlnZ2VyLiBTcGVjaWZpY2FsbHksIEknbSBpbnRlcmVzdGVkIGluIGBkaWdpdGFsX3RnX3NlbmRfYXRyX3Jlc19jb21wbGV0ZWAsIGBkaWdpdGFsX3RnX3NlbmRfZGVwX3Jlc2AsIGFuZCBgZGlnaXRhbF90Z19zZW5kX3BzbF9yZXNfY29tcGxldGVgLCB0byBzZWUgaWYgdGhlcmUgaXMgYW55IGluZGljYXRpb24gb2YgdGhlIGNhbGwgdG8gdGhlIHJlY2VpdmUgaGFuZGxlci5cblxuTmV4dCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSB0YXJnZXQgbGlzdGVucyBhbmQgaW5pdGlhdGVzIGl0c2VsZi4gRm9yIHRoaXMgcGFydCwgSSBzaG91bGQgZXhhbWluZSBgZGlnaXRhbF90ZWNobm9sb2d5LmNgIGFuZCBgZGlnaXRhbF9jb3JlLmNgIHRvIGRldGVybWluZSBob3cgdGhlIERFUCBvcGVyYXRpb25zIGFyZSBpbml0aWF0ZWQuIFRoYXQgc2hvdWxkIGdpdmUgYSBtb3JlIGNvbXBsZXRlIHBpY3R1cmUgb2YgdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozODUyMywiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMlQxMzoyNDo1Ny44MjkyMDMxNDlaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5NDg5OTkyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRpZ2l0YWxfdGdfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25mYy9kaWdpdGFsLmg9NDg9aW50IGRpZ2l0YWxfc2VuZF9jbWQoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdTggY21kX3R5cGUsXFxubmV0L25mYy9kaWdpdGFsLmg6NDk6XFx0XFx0ICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZGlnaXRhbF90Z19tZGFhX3BhcmFtcyAqcGFyYW1zLFxcbm5ldC9uZmMvZGlnaXRhbC5oLTUwLVxcdFxcdCAgICAgdTE2IHRpbWVvdXQsIG5mY19kaWdpdGFsX2NtZF9jb21wbGV0ZV90IGNtZF9jYixcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbC5oPTgzPWludCBkaWdpdGFsX2luX3NlbmRfZGVwX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxcbi0tXFxubmV0L25mYy9kaWdpdGFsLmgtODYtXFxubmV0L25mYy9kaWdpdGFsLmg6ODc6aW50IGRpZ2l0YWxfdGdfY29uZmlndXJlX2h3KHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIGludCB0eXBlLCBpbnQgcGFyYW0pO1xcbm5ldC9uZmMvZGlnaXRhbC5oOjg4OnN0YXRpYyBpbmxpbmUgaW50IGRpZ2l0YWxfdGdfc2VuZF9jbWQoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcXG5uZXQvbmZjL2RpZ2l0YWwuaC04OS1cXHRcXHRcXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MTYgdGltZW91dCxcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbC5oLTk1LVxcbm5ldC9uZmMvZGlnaXRhbC5oOjk2OnZvaWQgZGlnaXRhbF90Z19yZWN2X3NlbnNfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcXG5uZXQvbmZjL2RpZ2l0YWwuaC05Ny1cXHRcXHRcXHQgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqcmVzcCk7XFxubmV0L25mYy9kaWdpdGFsLmgtOTgtXFxubmV0L25mYy9kaWdpdGFsLmg6OTk6dm9pZCBkaWdpdGFsX3RnX3JlY3Zfc2Vuc2ZfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcXG5uZXQvbmZjL2RpZ2l0YWwuaC0xMDAtXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBza19idWZmICpyZXNwKTtcXG5uZXQvbmZjL2RpZ2l0YWwuaC0xMDEtXFxubmV0L25mYy9kaWdpdGFsLmg6MTAyOnN0YXRpYyBpbmxpbmUgaW50IGRpZ2l0YWxfdGdfbGlzdGVuKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHUxNiB0aW1lb3V0LFxcbm5ldC9uZmMvZGlnaXRhbC5oLTEwMy1cXHRcXHRcXHRcXHQgICAgbmZjX2RpZ2l0YWxfY21kX2NvbXBsZXRlX3QgY2IsIHZvaWQgKmFyZylcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbC5oLTEwOC1cXG5uZXQvbmZjL2RpZ2l0YWwuaDoxMDk6dm9pZCBkaWdpdGFsX3RnX3JlY3ZfYXRyX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB2b2lkICphcmcsXFxubmV0L25mYy9kaWdpdGFsLmgtMTEwLVxcdFxcdFxcdCAgICAgc3RydWN0IHNrX2J1ZmYgKnJlc3ApO1xcbm5ldC9uZmMvZGlnaXRhbC5oLTExMS1cXG5uZXQvbmZjL2RpZ2l0YWwuaDoxMTI6aW50IGRpZ2l0YWxfdGdfc2VuZF9kZXBfcmVzKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHN0cnVjdCBza19idWZmICpza2IpO1xcbm5ldC9uZmMvZGlnaXRhbC5oLTExMy1cXG5uZXQvbmZjL2RpZ2l0YWwuaDoxMTQ6aW50IGRpZ2l0YWxfdGdfbGlzdGVuX25mY2Eoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdTggcmZfdGVjaCk7XFxubmV0L25mYy9kaWdpdGFsLmg6MTE1OmludCBkaWdpdGFsX3RnX2xpc3Rlbl9uZmNmKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHU4IHJmX3RlY2gpO1xcbm5ldC9uZmMvZGlnaXRhbC5oOjExNjp2b2lkIGRpZ2l0YWxfdGdfcmVjdl9tZF9yZXEoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxcbm5ldC9uZmMvZGlnaXRhbC5oLTExNy1cXHRcXHRcXHQgICAgc3RydWN0IHNrX2J1ZmYgKnJlc3ApO1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYz0yNz1zdHJ1Y3QgZGlnaXRhbF9jbWQge1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYy0zNS1cXHRzdHJ1Y3Qgc2tfYnVmZiAqcmVzcDtcXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jOjM2OlxcdHN0cnVjdCBkaWdpdGFsX3RnX21kYWFfcGFyYW1zICptZGFhX3BhcmFtcztcXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTM3LVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYz0xNTI9c3RhdGljIHZvaWQgZGlnaXRhbF93cV9jbWQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYy0xNTUtXFx0c3RydWN0IGRpZ2l0YWxfY21kICpjbWQ7XFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYzoxNTY6XFx0c3RydWN0IGRpZ2l0YWxfdGdfbWRhYV9wYXJhbXMgKnBhcmFtcztcXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTE1Ny1cXHRzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2ID0gY29udGFpbmVyX29mKHdvcmssXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jPTIyNz1pbnQgZGlnaXRhbF9zZW5kX2NtZChzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB1OCBjbWRfdHlwZSxcXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jOjIyODpcXHRcXHQgICAgIHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBkaWdpdGFsX3RnX21kYWFfcGFyYW1zICpwYXJhbXMsXFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYy0yMjktXFx0XFx0ICAgICB1MTYgdGltZW91dCwgbmZjX2RpZ2l0YWxfY21kX2NvbXBsZXRlX3QgY21kX2NiLFxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYz0yNTU9aW50IGRpZ2l0YWxfaW5fY29uZmlndXJlX2h3KHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIGludCB0eXBlLCBpbnQgcGFyYW0pXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTI2NS1cXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jOjI2NjppbnQgZGlnaXRhbF90Z19jb25maWd1cmVfaHcoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgaW50IHR5cGUsIGludCBwYXJhbSlcXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTI2Ny17XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTI3Ni1cXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jOjI3NzpzdGF0aWMgaW50IGRpZ2l0YWxfdGdfbGlzdGVuX21kYWEoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdTggcmZfdGVjaClcXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTI3OC17XFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYzoyNzk6XFx0c3RydWN0IGRpZ2l0YWxfdGdfbWRhYV9wYXJhbXMgKnBhcmFtcztcXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTI4MC1cXHRpbnQgcmM7XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTI5NS1cXHRyYyA9IGRpZ2l0YWxfc2VuZF9jbWQoZGRldiwgRElHSVRBTF9DTURfVEdfTElTVEVOX01EQUEsIE5VTEwsIHBhcmFtcyxcXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jOjI5NjpcXHRcXHRcXHQgICAgICA1MDAsIGRpZ2l0YWxfdGdfcmVjdl9hdHJfcmVxLCBOVUxMKTtcXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTI5Ny1cXHRpZiAocmMpXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTMwMi1cXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jOjMwMzpzdGF0aWMgaW50IGRpZ2l0YWxfdGdfbGlzdGVuX21kKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHU4IHJmX3RlY2gpXFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYy0zMDQte1xcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtMzA1LVxcdHJldHVybiBkaWdpdGFsX3NlbmRfY21kKGRkZXYsIERJR0lUQUxfQ01EX1RHX0xJU1RFTl9NRCwgTlVMTCwgTlVMTCwgNTAwLFxcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmM6MzA2OlxcdFxcdFxcdFxcdGRpZ2l0YWxfdGdfcmVjdl9tZF9yZXEsIE5VTEwpO1xcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtMzA3LX1cXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmM9NDc2PXN0YXRpYyBpbnQgZGlnaXRhbF9zdGFydF9wb2xsKHN0cnVjdCBuZmNfZGV2ICpuZmNfZGV2LCBfX3UzMiBpbV9wcm90b2NvbHMsXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTUyOC1cXHRcXHRcXHRkaWdpdGFsX2FkZF9wb2xsX3RlY2goZGRldiwgMCxcXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jOjUyOTpcXHRcXHRcXHRcXHRcXHQgICAgICBkaWdpdGFsX3RnX2xpc3Rlbl9tZGFhKTtcXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTUzMC1cXHRcXHR9IGVsc2UgaWYgKGRkZXYtXFx1MDAzZW9wcy1cXHUwMDNldGdfbGlzdGVuX21kKSB7XFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYy01MzEtXFx0XFx0XFx0ZGlnaXRhbF9hZGRfcG9sbF90ZWNoKGRkZXYsIDAsXFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYzo1MzI6XFx0XFx0XFx0XFx0XFx0ICAgICAgZGlnaXRhbF90Z19saXN0ZW5fbWQpO1xcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtNTMzLVxcdFxcdH0gZWxzZSB7XFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYy01MzQtXFx0XFx0XFx0ZGlnaXRhbF9hZGRfcG9sbF90ZWNoKGRkZXYsIE5GQ19ESUdJVEFMX1JGX1RFQ0hfMTA2QSxcXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jOjUzNTpcXHRcXHRcXHRcXHRcXHQgICAgICBkaWdpdGFsX3RnX2xpc3Rlbl9uZmNhKTtcXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTUzNi1cXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTUzNy1cXHRcXHRcXHRkaWdpdGFsX2FkZF9wb2xsX3RlY2goZGRldiwgTkZDX0RJR0lUQUxfUkZfVEVDSF8yMTJGLFxcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmM6NTM4OlxcdFxcdFxcdFxcdFxcdCAgICAgIGRpZ2l0YWxfdGdfbGlzdGVuX25mY2YpO1xcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtNTM5LVxcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtNTQwLVxcdFxcdFxcdGRpZ2l0YWxfYWRkX3BvbGxfdGVjaChkZGV2LCBORkNfRElHSVRBTF9SRl9URUNIXzQyNEYsXFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYzo1NDE6XFx0XFx0XFx0XFx0XFx0ICAgICAgZGlnaXRhbF90Z19saXN0ZW5fbmZjZik7XFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYy01NDItXFx0XFx0fVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYz02NDE9c3RhdGljIHZvaWQgZGlnaXRhbF9kZWFjdGl2YXRlX3RhcmdldChzdHJ1Y3QgbmZjX2RldiAqbmZjX2RldixcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtNjU1LVxcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmM6NjU2OnN0YXRpYyBpbnQgZGlnaXRhbF90Z19zZW5kKHN0cnVjdCBuZmNfZGV2ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYy02NTcte1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYy02NTktXFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYzo2NjA6XFx0cmV0dXJuIGRpZ2l0YWxfdGdfc2VuZF9kZXBfcmVzKGRkZXYsIHNrYik7XFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYy02NjEtfVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYz03NDQ9c3RhdGljIGNvbnN0IHN0cnVjdCBuZmNfb3BzIGRpZ2l0YWxfbmZjX29wcyA9IHtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtNzUyLVxcdC5kZWFjdGl2YXRlX3RhcmdldCA9IGRpZ2l0YWxfZGVhY3RpdmF0ZV90YXJnZXQsXFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYzo3NTM6XFx0LnRtX3NlbmQgPSBkaWdpdGFsX3RnX3NlbmQsXFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYy03NTQtXFx0LmltX3RyYW5zY2VpdmUgPSBkaWdpdGFsX2luX3NlbmQsXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9MTA2PXN0YXRpYyB2b2lkIGRpZ2l0YWxfaW5fcmVjdl9kZXBfcmVzKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTA3LVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqcmVzcCk7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwODpzdGF0aWMgdm9pZCBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB2b2lkICphcmcsXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwOS1cXHRcXHRcXHRcXHQgICAgc3RydWN0IHNrX2J1ZmYgKnJlc3ApO1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTkwND1pbnQgZGlnaXRhbF9pbl9zZW5kX2RlcF9yZXEoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05NTAtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjk1MTpzdGF0aWMgdm9pZCBkaWdpdGFsX3RnX3NldF9yZl90ZWNoKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHU4IHJmX3RlY2gpXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTk1Mi17XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtOTc3LVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo5Nzg6c3RhdGljIGludCBkaWdpdGFsX3RnX3NlbmRfYWNrKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTk3OS1cXHRcXHRcXHQgICAgICAgc3RydWN0IGRpZ2l0YWxfZGF0YV9leGNoICpkYXRhX2V4Y2gpXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTAxMi1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTAxMzpcXHRyYyA9IGRpZ2l0YWxfdGdfc2VuZF9jbWQoZGRldiwgc2tiLCAxNTAwLCBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcSxcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTAxNC1cXHRcXHRcXHRcXHQgZGF0YV9leGNoKTtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDIzLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDI0OnN0YXRpYyBpbnQgZGlnaXRhbF90Z19zZW5kX2F0bihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2KVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDI1LXtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDUxLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDUyOlxcdHJjID0gZGlnaXRhbF90Z19zZW5kX2NtZChkZGV2LCBza2IsIDE1MDAsIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxLFxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDUzLVxcdFxcdFxcdFxcdCBOVUxMKTtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDU5LVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDYwOnN0YXRpYyBpbnQgZGlnaXRhbF90Z19zZW5kX3NhdmVkX3NrYihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2KVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDYxLXtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDY4LVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDY5OlxcdHJjID0gZGlnaXRhbF90Z19zZW5kX2NtZChkZGV2LCBkZGV2LVxcdTAwM2VzYXZlZF9za2IsIDE1MDAsXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwNzA6XFx0XFx0XFx0XFx0IGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxLCBOVUxMKTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTA3MS1cXHRpZiAocmMpXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTA3Ni1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTA3NzpzdGF0aWMgdm9pZCBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB2b2lkICphcmcsXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwNzgtXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBza19idWZmICpyZXNwKVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTExNTYtXFx0XFx0XFx0ICogd2hpY2ggaXMgdGhlIHByZXZpb3VzIERFUF9SRVMgc2F2ZWQgaW5cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTE1NzpcXHRcXHRcXHQgKiBkaWdpdGFsX3RnX3NlbmRfZGVwX3JlcygpLlxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMTU4LVxcdFxcdFxcdCAqL1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTExNjAtXFx0XFx0XFx0ICBESUdJVEFMX05GQ19ERVBfUEZCX1BOSShkZGV2LVxcdTAwM2VjdXJyX25mY19kZXBfcG5pIC0gMSkpIHtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTE2MTpcXHRcXHRcXHRcXHRyYyA9IGRpZ2l0YWxfdGdfc2VuZF9zYXZlZF9za2IoZGRldik7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTExNjItXFx0XFx0XFx0XFx0aWYgKHJjKVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTExODQtXFx0XFx0cmVzcCA9IGRpZ2l0YWxfcmVjdl9kZXBfZGF0YV9nYXRoZXIoZGRldiwgcGZiLCByZXNwLFxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMTg1OlxcdFxcdFxcdFxcdFxcdFxcdCAgICBkaWdpdGFsX3RnX3NlbmRfYWNrLCBOVUxMKTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTE4Ni1cXHRcXHRpZiAoSVNfRVJSKHJlc3ApKSB7XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTIxMC1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTIxMTpcXHRcXHRcXHRyYyA9IGRpZ2l0YWxfdGdfc2VuZF9zYXZlZF9za2IoZGRldik7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEyMTItXFx0XFx0XFx0aWYgKHJjKVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEyMzAtXFx0XFx0XFx0XFx0XFx0XFx0ZGRldi1cXHUwMDNlY3Vycl9uZmNfZGVwX3BuaSkge1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMjMxOlxcdFxcdFxcdFxcdHJjID0gZGlnaXRhbF90Z19zZW5kX3NhdmVkX3NrYihkZGV2KTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTIzMi1cXHRcXHRcXHRcXHRpZiAocmMpXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTI1NC1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTI1NTpcXHRcXHRyYyA9IGRpZ2l0YWxfdGdfc2VuZF9kZXBfcmVzKGRkZXYsIGRkZXYtXFx1MDAzZWNoYWluaW5nX3NrYik7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEyNTYtXFx0XFx0aWYgKHJjKVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEyNjUtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEyNjY6XFx0XFx0cmMgPSBkaWdpdGFsX3RnX3NlbmRfYXRuKGRkZXYpO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMjY3LVxcdFxcdGlmIChyYylcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMjk2LVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMjk3OmludCBkaWdpdGFsX3RnX3NlbmRfZGVwX3JlcyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMjk4LXtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzMxLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMzMyOlxcdHJjID0gZGlnaXRhbF90Z19zZW5kX2NtZChkZGV2LCB0bXBfc2tiLCAxNTAwLCBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcSxcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTMzMy1cXHRcXHRcXHRcXHQgTlVMTCk7XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTM0Ny1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTM0ODpzdGF0aWMgdm9pZCBkaWdpdGFsX3RnX3NlbmRfcHNsX3Jlc19jb21wbGV0ZShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzQ5LVxcdFxcdFxcdFxcdFxcdCAgICAgdm9pZCAqYXJnLCBzdHJ1Y3Qgc2tfYnVmZiAqcmVzcClcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzU1LVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMzU2OlxcdGRpZ2l0YWxfdGdfc2V0X3JmX3RlY2goZGRldiwgcmZfdGVjaCk7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEzNTctXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEzNTg6XFx0ZGlnaXRhbF90Z19jb25maWd1cmVfaHcoZGRldiwgTkZDX0RJR0lUQUxfQ09ORklHX1JGX1RFQ0gsIHJmX3RlY2gpO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzU5LVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMzYwOlxcdGRpZ2l0YWxfdGdfbGlzdGVuKGRkZXYsIDE1MDAsIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxLCBOVUxMKTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTM2MS1cXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzY0LVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMzY1OnN0YXRpYyBpbnQgZGlnaXRhbF90Z19zZW5kX3BzbF9yZXMoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdTggZGlkLFxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzY2LVxcdFxcdFxcdFxcdCAgIHU4IHJmX3RlY2gpXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTM4OS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTM5MDpcXHRyYyA9IGRpZ2l0YWxfdGdfc2VuZF9jbWQoZGRldiwgc2tiLCAwLCBkaWdpdGFsX3RnX3NlbmRfcHNsX3Jlc19jb21wbGV0ZSxcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTM5MS1cXHRcXHRcXHRcXHQgKHZvaWQgKikodW5zaWduZWQgbG9uZylyZl90ZWNoKTtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzk3LVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMzk4OnN0YXRpYyB2b2lkIGRpZ2l0YWxfdGdfcmVjdl9wc2xfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTM5OS1cXHRcXHRcXHRcXHQgICAgc3RydWN0IHNrX2J1ZmYgKnJlc3ApXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTQ2MC1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTQ2MTpcXHRyYyA9IGRpZ2l0YWxfdGdfc2VuZF9wc2xfcmVzKGRkZXYsIHBzbF9yZXEtXFx1MDAzZWRpZCwgcmZfdGVjaCk7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTE0NjItXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTQ2Ni1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTQ2NzpzdGF0aWMgdm9pZCBkaWdpdGFsX3RnX3NlbmRfYXRyX3Jlc19jb21wbGV0ZShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xNDY4LVxcdFxcdFxcdFxcdFxcdCAgICAgdm9pZCAqYXJnLCBzdHJ1Y3Qgc2tfYnVmZiAqcmVzcClcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xNDgzLVxcdGlmIChyZXNwLVxcdTAwM2VkYXRhW29mZnNldF0gPT0gRElHSVRBTF9DTURfUFNMX1JFUSlcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTQ4NDpcXHRcXHRkaWdpdGFsX3RnX3JlY3ZfcHNsX3JlcShkZGV2LCBhcmcsIHJlc3ApO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xNDg1LVxcdGVsc2VcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTQ4NjpcXHRcXHRkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcShkZGV2LCBhcmcsIHJlc3ApO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xNDg3LX1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTQ4OC1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTQ4OTpzdGF0aWMgaW50IGRpZ2l0YWxfdGdfc2VuZF9hdHJfcmVzKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTE0OTAtXFx0XFx0XFx0XFx0ICAgc3RydWN0IGRpZ2l0YWxfYXRyX3JlcSAqYXRyX3JlcSlcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xNTMyLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxNTMzOlxcdHJjID0gZGlnaXRhbF90Z19zZW5kX2NtZChkZGV2LCBza2IsIDk5OSxcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTUzNDpcXHRcXHRcXHRcXHQgZGlnaXRhbF90Z19zZW5kX2F0cl9yZXNfY29tcGxldGUsIE5VTEwpO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xNTM1LVxcdGlmIChyYylcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xNTQwLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxNTQxOnZvaWQgZGlnaXRhbF90Z19yZWN2X2F0cl9yZXEoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xNTQyLVxcdFxcdFxcdCAgICAgc3RydWN0IHNrX2J1ZmYgKnJlc3ApXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTU2MS1cXHRcXHRtaW5fc2l6ZSA9IERJR0lUQUxfQVRSX1JFUV9NSU5fU0laRSArIDI7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjE1NjI6XFx0XFx0ZGlnaXRhbF90Z19zZXRfcmZfdGVjaChkZGV2LCBORkNfRElHSVRBTF9SRl9URUNIXzEwNkEpO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xNTYzLVxcdH0gZWxzZSB7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTE1NjQtXFx0XFx0bWluX3NpemUgPSBESUdJVEFMX0FUUl9SRVFfTUlOX1NJWkUgKyAxO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxNTY1OlxcdFxcdGRpZ2l0YWxfdGdfc2V0X3JmX3RlY2goZGRldiwgTkZDX0RJR0lUQUxfUkZfVEVDSF8yMTJGKTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTU2Ni1cXHR9XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTYwNS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTYwNjpcXHRyYyA9IGRpZ2l0YWxfdGdfY29uZmlndXJlX2h3KGRkZXYsIE5GQ19ESUdJVEFMX0NPTkZJR19GUkFNSU5HLFxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xNjA3LVxcdFxcdFxcdFxcdCAgICAgTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNfREVQX0FDVElWQVRFRCk7XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTYxMC1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTYxMTpcXHRyYyA9IGRpZ2l0YWxfdGdfc2VuZF9hdHJfcmVzKGRkZXYsIGF0cl9yZXEpO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xNjEyLVxcdGlmIChyYylcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM9ODk1PWludCBkaWdpdGFsX2luX3NlbmRfaXNvMTU2OTNfaW52X3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB1OCByZl90ZWNoKVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy05MzQtXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzo5MzU6c3RhdGljIGludCBkaWdpdGFsX3RnX3NlbmRfc2VsX3JlcyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2KVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtOTM2LXtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtOTQ4LVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6OTQ5OlxcdHJjID0gZGlnaXRhbF90Z19jb25maWd1cmVfaHcoZGRldiwgTkZDX0RJR0lUQUxfQ09ORklHX0ZSQU1JTkcsXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy05NTAtXFx0XFx0XFx0XFx0ICAgICBORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfQU5USUNPTF9DT01QTEVURSk7XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTk1NS1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjk1NjpcXHRyYyA9IGRpZ2l0YWxfdGdfc2VuZF9jbWQoZGRldiwgc2tiLCAzMDAsIGRpZ2l0YWxfdGdfcmVjdl9hdHJfcmVxLFxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtOTU3LVxcdFxcdFxcdFxcdCBOVUxMKTtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtOTYzLVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6OTY0OnN0YXRpYyB2b2lkIGRpZ2l0YWxfdGdfcmVjdl9zZWxfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTk2NS1cXHRcXHRcXHRcXHQgICAgc3RydWN0IHNrX2J1ZmYgKnJlc3ApXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTk4NC1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjk4NTpcXHRyYyA9IGRpZ2l0YWxfdGdfc2VuZF9zZWxfcmVzKGRkZXYpO1xcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtOTg2LVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy05OTMtXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzo5OTQ6c3RhdGljIGludCBkaWdpdGFsX3RnX3NlbmRfc2RkX3JlcyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2KVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtOTk1LXtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTAxMy1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjEwMTQ6XFx0cmMgPSBkaWdpdGFsX3RnX2NvbmZpZ3VyZV9odyhkZGV2LCBORkNfRElHSVRBTF9DT05GSUdfRlJBTUlORyxcXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEwMTUtXFx0XFx0XFx0XFx0TkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX1NUQU5EQVJEX1dJVEhfQ1JDX0EpO1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMDIwLVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTAyMTpcXHRyYyA9IGRpZ2l0YWxfdGdfc2VuZF9jbWQoZGRldiwgc2tiLCAzMDAsIGRpZ2l0YWxfdGdfcmVjdl9zZWxfcmVxLFxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTAyMi1cXHRcXHRcXHRcXHQgTlVMTCk7XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEwMjgtXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMDI5OnN0YXRpYyB2b2lkIGRpZ2l0YWxfdGdfcmVjdl9zZGRfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEwMzAtXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBza19idWZmICpyZXNwKVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMDQ4LVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTA0OTpcXHRyYyA9IGRpZ2l0YWxfdGdfc2VuZF9zZGRfcmVzKGRkZXYpO1xcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTA1MC1cXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTA1Ny1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjEwNTg6c3RhdGljIGludCBkaWdpdGFsX3RnX3NlbmRfc2Vuc19yZXMoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldilcXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEwNTkte1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMDcyLVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTA3MzpcXHRyYyA9IGRpZ2l0YWxfdGdfY29uZmlndXJlX2h3KGRkZXYsIE5GQ19ESUdJVEFMX0NPTkZJR19GUkFNSU5HLFxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTA3NC1cXHRcXHRcXHRcXHQgICAgIE5GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQV9TVEFOREFSRCk7XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEwNzktXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMDgwOlxcdHJjID0gZGlnaXRhbF90Z19zZW5kX2NtZChkZGV2LCBza2IsIDMwMCwgZGlnaXRhbF90Z19yZWN2X3NkZF9yZXEsXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMDgxLVxcdFxcdFxcdFxcdCBOVUxMKTtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTA4Ny1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjEwODg6dm9pZCBkaWdpdGFsX3RnX3JlY3Zfc2Vuc19yZXEoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTA4OS1cXHRcXHRcXHQgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqcmVzcClcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTEwNy1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjExMDg6XFx0cmMgPSBkaWdpdGFsX3RnX3NlbmRfc2Vuc19yZXMoZGRldik7XFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMTA5LVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMTE2LVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTExNzpzdGF0aWMgdm9pZCBkaWdpdGFsX3RnX3JlY3ZfYXRyX29yX3NlbnNmX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTExOC1cXHRcXHR2b2lkICphcmcsIHN0cnVjdCBza19idWZmICpyZXNwKVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMTIxLVxcdFxcdFxcdChyZXNwLVxcdTAwM2VkYXRhWzFdID09IERJR0lUQUxfQ01EX1NFTlNGX1JFUSkpXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMTIyOlxcdFxcdGRpZ2l0YWxfdGdfcmVjdl9zZW5zZl9yZXEoZGRldiwgYXJnLCByZXNwKTtcXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTExMjMtXFx0ZWxzZVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTEyNDpcXHRcXHRkaWdpdGFsX3RnX3JlY3ZfYXRyX3JlcShkZGV2LCBhcmcsIHJlc3ApO1xcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTEyNS1cXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTEyOC1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjExMjk6c3RhdGljIGludCBkaWdpdGFsX3RnX3NlbmRfc2Vuc2ZfcmVzKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMTMwLVxcdFxcdFxcdCAgICAgIHN0cnVjdCBkaWdpdGFsX3NlbnNmX3JlcSAqc2Vuc2ZfcmVxKVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMTcyLVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTE3MzpcXHRyYyA9IGRpZ2l0YWxfdGdfc2VuZF9jbWQoZGRldiwgc2tiLCAzMDAsXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMTc0OlxcdFxcdFxcdFxcdCBkaWdpdGFsX3RnX3JlY3ZfYXRyX29yX3NlbnNmX3JlcSwgTlVMTCk7XFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMTc1LVxcdGlmIChyYylcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTE4MC1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjExODE6dm9pZCBkaWdpdGFsX3RnX3JlY3Zfc2Vuc2ZfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTExODItXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBza19idWZmICpyZXNwKVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjEzLVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTIxNDpcXHRyYyA9IGRpZ2l0YWxfdGdfc2VuZF9zZW5zZl9yZXMoZGRldiwgc2Vuc2ZfcmVxKTtcXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyMTUtXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyMjItXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMjIzOnN0YXRpYyBpbnQgZGlnaXRhbF90Z19jb25maWdfbmZjYShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2KVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTIyNC17XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyMjYtXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMjI3OlxcdHJjID0gZGlnaXRhbF90Z19jb25maWd1cmVfaHcoZGRldiwgTkZDX0RJR0lUQUxfQ09ORklHX1JGX1RFQ0gsXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjI4LVxcdFxcdFxcdFxcdCAgICAgTkZDX0RJR0lUQUxfUkZfVEVDSF8xMDZBKTtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTIzMS1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjEyMzI6XFx0cmV0dXJuIGRpZ2l0YWxfdGdfY29uZmlndXJlX2h3KGRkZXYsIE5GQ19ESUdJVEFMX0NPTkZJR19GUkFNSU5HLFxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTIzMy1cXHRcXHRcXHRcXHQgICAgICAgTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX05GQ19ERVApO1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjM1LVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTIzNjppbnQgZGlnaXRhbF90Z19saXN0ZW5fbmZjYShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB1OCByZl90ZWNoKVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTIzNy17XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyMzktXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMjQwOlxcdHJjID0gZGlnaXRhbF90Z19jb25maWdfbmZjYShkZGV2KTtcXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyNDEtXFx0aWYgKHJjKVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjQzLVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTI0NDpcXHRyZXR1cm4gZGlnaXRhbF90Z19saXN0ZW4oZGRldiwgMzAwLCBkaWdpdGFsX3RnX3JlY3Zfc2Vuc19yZXEsIE5VTEwpO1xcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTI0NS19XFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjQ2LVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTI0NzpzdGF0aWMgaW50IGRpZ2l0YWxfdGdfY29uZmlnX25mY2Yoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdTggcmZfdGVjaClcXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyNDgte1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjUwLVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTI1MTpcXHRyYyA9IGRpZ2l0YWxfdGdfY29uZmlndXJlX2h3KGRkZXYsIE5GQ19ESUdJVEFMX0NPTkZJR19SRl9URUNILCByZl90ZWNoKTtcXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyNTItXFx0aWYgKHJjKVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjU0LVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTI1NTpcXHRyZXR1cm4gZGlnaXRhbF90Z19jb25maWd1cmVfaHcoZGRldiwgTkZDX0RJR0lUQUxfQ09ORklHX0ZSQU1JTkcsXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjU2LVxcdFxcdFxcdFxcdCAgICAgICBORkNfRElHSVRBTF9GUkFNSU5HX05GQ0ZfTkZDX0RFUCk7XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyNTgtXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMjU5OmludCBkaWdpdGFsX3RnX2xpc3Rlbl9uZmNmKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHU4IHJmX3RlY2gpXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjYwLXtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTI2Mi1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjEyNjM6XFx0cmMgPSBkaWdpdGFsX3RnX2NvbmZpZ19uZmNmKGRkZXYsIHJmX3RlY2gpO1xcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTI2NC1cXHRpZiAocmMpXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyNjYtXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMjY3OlxcdHJldHVybiBkaWdpdGFsX3RnX2xpc3RlbihkZGV2LCAzMDAsIGRpZ2l0YWxfdGdfcmVjdl9zZW5zZl9yZXEsIE5VTEwpO1xcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTI2OC19XFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjY5LVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTI3MDp2b2lkIGRpZ2l0YWxfdGdfcmVjdl9tZF9yZXEoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTI3MS1cXHRcXHRcXHQgICAgc3RydWN0IHNrX2J1ZmYgKnJlc3ApXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyODYtXFx0Y2FzZSBORkNfRElHSVRBTF9SRl9URUNIXzEwNkE6XFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMjg3OlxcdFxcdHJjID0gZGlnaXRhbF90Z19jb25maWdfbmZjYShkZGV2KTtcXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyODgtXFx0XFx0aWYgKHJjKVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTI4OS1cXHRcXHRcXHRnb3RvIGV4aXRfZnJlZV9za2I7XFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMjkwOlxcdFxcdGRpZ2l0YWxfdGdfcmVjdl9zZW5zX3JlcShkZGV2LCBhcmcsIHJlc3ApO1xcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTI5MS1cXHRcXHRicmVhaztcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTI5My1cXHRjYXNlIE5GQ19ESUdJVEFMX1JGX1RFQ0hfNDI0RjpcXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjEyOTQ6XFx0XFx0cmMgPSBkaWdpdGFsX3RnX2NvbmZpZ19uZmNmKGRkZXYsIHJmX3RlY2gpO1xcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTI5NS1cXHRcXHRpZiAocmMpXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjk2LVxcdFxcdFxcdGdvdG8gZXhpdF9mcmVlX3NrYjtcXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjEyOTc6XFx0XFx0ZGlnaXRhbF90Z19yZWN2X3NlbnNmX3JlcShkZGV2LCBhcmcsIHJlc3ApO1xcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTI5OC1cXHRcXHRicmVhaztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTJUMTM6MjQ6NTcuODc4Njk5MjMxWiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjQ2NTk0Mzc0NDg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIE5GQyBEaWdpdGFsIFRhcmdldCBNb2RlIEZ1bmN0aW9uYWxpdHkgZm9yIEZ1enppbmcqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gc3VtbWFyaXplIHRoaXMgcGF0Y2gncyBpbXBsaWNhdGlvbnMgZm9yIGZ1enppbmcsIGZvY3VzaW5nIG9uIGhvdyB0aGUgY29kZSBtb2RpZmljYXRpb24gaW1wYWN0cyByZWFjaGFibGUgYW5kIHRlc3RhYmxlIGNvZGUgcGF0aHMuIEZpcnN0LCBJIHNlZSB0aGF0IGBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcWAgaXMgdGhlIGtleSBmdW5jdGlvbiBoZXJlLiBJdCdzICpzdGF0aWMgdm9pZCogaW4gYG5ldC9uZmMvZGlnaXRhbF9kZXAuY2AsIHdoaWNoIGluaXRpYWxseSBtYWRlIG1lIHBhdXNlIGJlY2F1c2Ugc3RhdGljIGZ1bmN0aW9ucyBjYW4gc29tZXRpbWVzIGJlIHRyaWNreSBmb3Igc3ltYm9sIGNvdmVyYWdlLCBidXQgaW4gdGhpcyBjYXNlLCBpdCAqaXMqIGEgc3RhdGljIGZ1bmN0aW9uIHdpdGhpbiBhIGAuY2AgZmlsZSwgKmFuZCogaXRzIGFkZHJlc3MgaXMgdGFrZW4sIHNwZWNpZmljYWxseSBhcyBhIGNhbGxiYWNrOiBgZGlnaXRhbF90Z19zZW5kX2NtZCguLi4sIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxLCAuLi4pYC4gVGhpcyBpcyBpbXBvcnRhbnQuIEJlY2F1c2UgdGhlIGFkZHJlc3MgaXMgdGFrZW4sIHRoZSBjb21waWxlciAqbXVzdCogZ2VuZXJhdGUgYSBkaXN0aW5jdCBzeW1ib2wgZm9yIHRoaXMgZnVuY3Rpb24sIGVuc3VyaW5nIGl0J3MgYWRkcmVzc2FibGUuXG5cbkxvb2tpbmcgZGVlcGVyLCBJIGlkZW50aWZpZWQgb3RoZXIgcmVsYXRlZCBmdW5jdGlvbnM6IGBkaWdpdGFsX3RnX3NlbmRfZGVwX3Jlc2AgKGV4cG9ydGVkKSBhbmQgYGRpZ2l0YWxfdGdfcmVjdl9hdHJfcmVxYCAobm9uLXN0YXRpYykgYXJlIGFsc28gcmVsZXZhbnQuIGBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcWAgaXMgdGhlIGRpcmVjdCB0YXJnZXQgb2YgdGhlIHBhdGNoLCBhbmQgdGhvc2UgYXJlIGVudHJ5IHBvaW50cyB0aGF0IGxlYWQgdG8gaXQuXG5cbkkgdGhlbiBjb25zaWRlcmVkIHJlYWNoYWJpbGl0eS4gQ3J1Y2lhbGx5LCB0aGlzIGlzbid0IGp1c3QgdGhlb3JldGljYWwgY29kZS4gVGhlIE5GQyBzdGFjayBpcyBhY2Nlc3NpYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gYG5mY3NpbWAgKHRoZSBzb2Z0d2FyZSBzaW11bGF0b3IgZHJpdmVyKSBwcm92aWRlcyBhIHZpcnR1YWwgTkZDIGRldmljZSB0aGF0IGNhbiByZWFjaCB0aGlzIGNvZGUsIGFzIGRvZXMgYHBvcnQxMDBgIChlbXVsYXRlZCBVU0IgZGV2aWNlKSB2aWEgc3l6a2FsbGVyLCB3aGljaCBpcyBzdGFuZGFyZCBmb3IgZnV6emluZyByYXcgVVNCIGdhZGdldCB0cmFmZmljLiBUaGlzIGNvZGUgYWxzbyB0b3VjaGVzIHRoZSBuZXR3b3JrLCBkcml2ZXIgY29kZSwgYW5kIHNvIGlzIGV4ZWN1dGFibGUuIEl0J3Mgbm90IHVucmVhY2hhYmxlIGhhcmR3YXJlIG9yIGEgdGVhcmRvd24gY2FsbGJhY2suIFNvLCB5ZXMsIHRoZSBjcml0ZXJpYSBmb3IgXCJXb3J0aEZ1enppbmdcIiBhcmUgbWV0LlxuXG5SZWdhcmRpbmcgYnVpbGQgY29uZmlndXJhdGlvbnMsIHRvIGJ1aWxkIGFuZCBydW4gdGhpcyBjb2RlLCBJJ2QgbmVlZDogYE5GQ2AsIGBORkNfRElHSVRBTGAsIGBORkNfU0lNYCwgYW5kIGBORkNfUE9SVDEwMGAuIEFuZCBiZWNhdXNlIExMQ1AgaXMgY29tcGlsZWQgaW50byBgbmZjLm9gIGlmIENPTkZJR19ORkMgaXMgZW5hYmxlZCwgaXQgc2hvdWxkIGFsc28gYmUgZnV6emFibGUsIGdpdmVuIGl0cyByZWxhdGlvbiB0byBORkMuXG5cbk5vdywgYXMgZm9yIHdoYXQgaXMgYmVpbmcgYWx0ZXJlZCwgaXQncyBhIGNyaXRpY2FsIGNoZWNrIGluIHRoZSBERVAgcmVxdWVzdCBoYW5kbGVyIHdpdGhpbiBgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXFgLiBUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyByZWFkIHdoZW4gcHJvY2Vzc2luZyBERVAgcmVxdWVzdHMgd2l0aCBhIERJRCAoRGV2aWNlIElkZW50aWZpZXIpLiBCZWZvcmUgdGhlIHBhdGNoLCBhIGJ1ZmZlciBhY2Nlc3Mgd2FzIGRvbmUgd2l0aG91dCBwcm9wZXIgbGVuZ3RoIGNoZWNraW5nLiBUaGUgcGF0Y2ggYWRkcyBgcmVzcC1cdTAwM2VsZW4gXHUwMDNjIHNpemUgKyAxYCwgdmFsaWRhdGVzIGBkZGV2LVx1MDAzZWRpZGAsIGFuZCBpbmRleGVzIHdpdGggYHJlc3AtXHUwMDNlZGF0YVtzaXplXWAgdG8gZW5zdXJlIHRoYXQgdGhlIHJlYWQgc3RheXMgd2l0aGluIGJ1ZmZlciBib3VuZHMuIEZ1enppbmcgdGhpcyB3aWxsIGJlIGNydWNpYWwgdG8gdmVyaWZ5IGNvcnJlY3QgcGFyc2luZyBvZiBERVAgZnJhbWVzLCBlc3BlY2lhbGx5IHRob3NlIHdpdGggRElEIGFuZCBlZGdlLWNhc2UgbGVuZ3RocywgZW5zdXJpbmcgdGhhdCB0aGUgcGF0Y2ggcHJldmVudHMgcmVncmVzc2lvbnMgYW5kIHBvdGVudGlhbCBzdGF0ZSBjb3JydXB0aW9uIGR1ZSB0byBvdXQtb2YtYm91bmRzIHJlYWRzLiBUaGUgYWRkZWQgY2hlY2tzIGFyZSBhIHBlcmZlY3Qgb3Bwb3J0dW5pdHkgZm9yIGZ1enppbmcuXG5cbk15IHByaW1hcnkgZm9jdXMgc3ltYm9scyBmb3IgZnV6emluZyB3aWxsIGJlOiBgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXFgLCB3aGljaCBpcyAqdGhlKiBtb2RpZmllZCBmdW5jdGlvbi4gQnV0IGFsc28gaW5jbHVkaW5nIGBkaWdpdGFsX3RnX3NlbmRfZGVwX3Jlc2AgYW5kIGBkaWdpdGFsX3RnX3JlY3ZfYXRyX3JlcWAgaXMgaW1wb3J0YW50IHNpbmNlIHRoZXkgcHJvdmlkZSBlbnRyeXBvaW50cyBhbmQgcmVsYXRlZCBmdW5jdGlvbnMuXG5cbkZpbmFsbHksIEkndmUgY29uZmlybWVkIHRoYXQgdGhlICdXb3J0aEZ1enppbmcnIGRlY2lzaW9uIGlzIHNvdW5kLCB0aGUgZXhwbGFuYXRpb24gaXMgY29uY2lzZSwgdGhlIGZvY3VzIHN5bWJvbHMgYXJlIHNwZWNpZmljLCBhbmQgdGhlIGNvbmZpZ3VyYXRpb25zIGFyZSBjbGVhcmx5IGxpc3RlZC4gSSBjYW4gbm93IHByb2NlZWQgdG8gYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDc4NjIsIk91dHB1dFRva2VucyI6MTk0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjA1NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMlQxMzoyNTo0NC40NzMwNzY4OVoiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc3NDUzMzU3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORkNcIixcbiAgICBcIk5GQ19ESUdJVEFMXCIsXG4gICAgXCJORkNfU0lNXCIsXG4gICAgXCJORkNfUE9SVDEwMFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxXCIsXG4gICAgXCJkaWdpdGFsX3RnX3NlbmRfZGVwX3Jlc1wiLFxuICAgIFwiZGlnaXRhbF90Z19yZWN2X2F0cl9yZXFcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBpbnB1dCB2YWxpZGF0aW9uIGluIHRoZSBORkMgZGlnaXRhbCB0YXJnZXQgbW9kZSBERVAgcmVxdWVzdCBoYW5kbGluZyAoZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEpIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyBhY2Nlc3Mgd2hlbiB0aGUgRElEIGJpdCBpcyBzZXQgYnkgdmVyaWZ5aW5nIGZyYW1lIGxlbmd0aCBhZ2FpbnN0IGV4cGVjdGVkIHNpemUgYW5kIGNvcnJlY3RseSBpbmRleGluZyByZXNwLVxcdTAwM2VkYXRhLiBUaGUgY29kZSBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSB2aXJ0dWFsIE5GQyBkcml2ZXJzIChlLmcuIG5mY3NpbSkgYW5kIGVtdWxhdGVkIFVTQiBORkMgZG9uZ2xlcyAocG9ydDEwMCksIG1ha2luZyBpdCB3b3J0aCBmdXp6aW5nIGZvciBib3VuZGFyeSBpc3N1ZXMgYW5kIHN0YXRlIHRyYW5zaXRpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GQ1wiLFxuICAgIFwiTkZDX0RJR0lUQUxcIixcbiAgICBcIk5GQ19TSU1cIixcbiAgICBcIk5GQ19QT1JUMTAwXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZGlnaXRhbF90Z19yZWN2X2RlcF9yZXFcIixcbiAgICBcImRpZ2l0YWxfdGdfc2VuZF9kZXBfcmVzXCIsXG4gICAgXCJkaWdpdGFsX3RnX3JlY3ZfYXRyX3JlcVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGlucHV0IHZhbGlkYXRpb24gaW4gdGhlIE5GQyBkaWdpdGFsIHRhcmdldCBtb2RlIERFUCByZXF1ZXN0IGhhbmRsaW5nIChkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcSkgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIGFjY2VzcyB3aGVuIHRoZSBESUQgYml0IGlzIHNldCBieSB2ZXJpZnlpbmcgZnJhbWUgbGVuZ3RoIGFnYWluc3QgZXhwZWN0ZWQgc2l6ZSBhbmQgY29ycmVjdGx5IGluZGV4aW5nIHJlc3AtXFx1MDAzZWRhdGEuIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIHZpcnR1YWwgTkZDIGRyaXZlcnMgKGUuZy4gbmZjc2ltKSBhbmQgZW11bGF0ZWQgVVNCIE5GQyBkb25nbGVzIChwb3J0MTAwKSwgbWFraW5nIGl0IHdvcnRoIGZ1enppbmcgZm9yIGJvdW5kYXJ5IGlzc3VlcyBhbmQgc3RhdGUgdHJhbnNpdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEyVDEzOjI1OjQ0LjU1MDUzODM3N1oiLCJTZXEiOjMzLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDI2MjYzNzM1MzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMlQxMzoyNTo0NC41NTA5NzY1NTdaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo0MjYyNTkyOTg2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyByZWFkIGluIGBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcSgpYCB3aGVyZSBgcmVzcC1cXHUwMDNlZGF0YVszXWAgd2FzIHJlYWQgd2l0aG91dCBmaXJzdCB2ZXJpZnlpbmcgdGhhdCBgcmVzcC1cXHUwMDNlbGVuYCB3YXMgYXQgbGVhc3QgYHNpemUgKyAxYCAoNCBieXRlcykuIFxcblxcblRoaXMgaXMgYSBib3VuZHMtY2hlY2tpbmcgaXNzdWU6IGFjY2Vzc2luZyBieXRlcyBiZXlvbmQgYHJlc3AtXFx1MDAzZWxlbmAgaXMgYW4gb3V0LW9mLWJvdW5kcyBhY2Nlc3MgZGlyZWN0bHkgZGV0ZWN0YWJsZSBieSBLQVNBTiAoZS5nLiwgc2xhYi1vdXQtb2YtYm91bmRzIG9uIHNrYiBkYXRhKS4gVGhlIGNoYW5nZSBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHVuaW5pdGlhbGl6ZWQgc3RhY2sgb3IgaGVhcCB2YXJpYWJsZXMsIGRvZXMgbm90IGV4cG9zZSB1bmluaXRpYWxpemVkIHBhZGRpbmcgb3Igc3RydWN0IGZpZWxkcyB0byB1c2VyIHNwYWNlLCBhbmQgZG9lcyBub3QgYWx0ZXIgY29udHJvbCBmbG93IGJhc2VkIG9uIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBCZWNhdXNlIHN0YW5kYXJkIEtBU0FOIGZ1bGx5IGNvdmVycyB0aGlzIGNsYXNzIG9mIGJ1Z3MgYW5kIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIGFyZSBpbnRyb2R1Y2VkLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAxMDIwZjI2OWU4NTU2NjcxNDBiYzA0ZjgzYTk2ODQ5OTA5YWY3NWRkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBTZXAgMTIgMTM6MjM6MzAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbmZjL2RpZ2l0YWxfZGVwLmMgYi9uZXQvbmZjL2RpZ2l0YWxfZGVwLmNcbmluZGV4IDM5ODJmYTA4NDczN2YuLmFlNTQwN2ZjYTEyZDQgMTAwNjQ0XG4tLS0gYS9uZXQvbmZjL2RpZ2l0YWxfZGVwLmNcbisrKyBiL25ldC9uZmMvZGlnaXRhbF9kZXAuY1xuQEAgLTExMTcsMTIgKzExMTcsMTIgQEAgc3RhdGljIHZvaWQgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxuIFx0cGZiID0gZGVwX3JlcS1cdTAwM2VwZmI7XG4gXG4gXHRpZiAoRElHSVRBTF9ORkNfREVQX0RJRF9CSVRfU0VUKHBmYikpIHtcbi1cdFx0aWYgKGRkZXYtXHUwMDNlZGlkIFx1MDAyNlx1MDAyNiAoZGRldi1cdTAwM2VkaWQgPT0gcmVzcC1cdTAwM2VkYXRhWzNdKSkge1xuLVx0XHRcdHNpemUrKztcbi1cdFx0fSBlbHNlIHtcbitcdFx0aWYgKHJlc3AtXHUwMDNlbGVuIFx1MDAzYyBzaXplICsgMSB8fCAhZGRldi1cdTAwM2VkaWQgfHxcbitcdFx0ICAgIGRkZXYtXHUwMDNlZGlkICE9IHJlc3AtXHUwMDNlZGF0YVtzaXplXSkge1xuIFx0XHRcdHJjID0gLUVJTztcbiBcdFx0XHRnb3RvIGV4aXQ7XG4gXHRcdH1cbitcdFx0c2l6ZSsrO1xuIFx0fSBlbHNlIGlmIChkZGV2LVx1MDAzZWRpZCkge1xuIFx0XHRyYyA9IC1FSU87XG4gXHRcdGdvdG8gZXhpdDtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEyVDEzOjI1OjQ0LjU1MDk3NzY2N1oiLCJTZXEiOjM1LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoxMTM0NjY3NTE1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE5GQyBEaWdpdGFsIERFUCBDb2RlIGZvciBGdXp6aW5nIFN0cmF0ZWd5KipcblxuT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHJpZ2h0IGZ1enppbmcgYXBwcm9hY2ggZm9yIHRoaXMgcGF0Y2ggdG8gYG5ldC9uZmMvZGlnaXRhbF9kZXAuY2AuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBhc3Nlc3Mgd2hldGhlciBJIG5lZWQgdGhlIGhlYXZpZXIgaGFtbWVyIG9mIEtNU0FOIG9yIGlmIHN0YW5kYXJkIEtBU0FOIHdpbGwgZG8gdGhlIGpvYi4gVGhpcyBzZWVtcyBsaWtlIGEgc3RyYWlnaHRmb3J3YXJkIGFuYWx5c2lzLCBhIGRlLWZyYW1pbmcgdGFzayByZWFsbHksIGp1c3QgZGV0ZXJtaW5pbmcgdGhlIGFwcHJvcHJpYXRlIHNhbml0aXplciBjb25maWd1cmF0aW9uLiBObyByZWQgZmxhZ3MgaGVyZSDigJMgSSdtIG5vdCBkZWFsaW5nIHdpdGggbWFsd2FyZSBnZW5lcmF0aW9uIG9yIGV4cGxvaXQgYW5hbHlzaXMsIHB1cmVseSBjb2RlIHJldmlldy4gVGhpcyBpcyBhIGJlbmlnbiwgZGVmZW5zaXZlIFFBIHRhc2suIEdvb2QsIHNhZmUgdG8gcHJvY2VlZC5cblxuRmlyc3Qgc3RlcCBpcyB0byBkaWcgaW50byB0aGUgY29kZSBpdHNlbGYuIEknbGwgbmVlZCB0byBpbnNwZWN0IGBuZXQvbmZjL2RpZ2l0YWxfZGVwLmNgIGRpcmVjdGx5LCBwcm9iYWJseSB1c2luZyBgcmVhZC1maWxlYCBvciBgZ3JlcHBlcmAgdG8gZ2V0IGF0IGBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcWAuIEkgbmVlZCBhIGNsZWFyIHVuZGVyc3RhbmRpbmcgb2Ygd2hhdCB0aGF0IGZ1bmN0aW9uIGRvZXMgdG8gaW5mb3JtIG15IGRlY2lzaW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTcxLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTg0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTJUMTM6MjU6NTUuODk3NjU2NzYxWiIsIlNlcSI6MzYsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMDIzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbmZjL2RpZ2l0YWxfZGVwLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTEwMCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTEwMDpcXHRcXHRcXHRnb3RvIGV4aXQ7XFxuMTEwMTpcXHRcXHR9XFxuMTEwMjpcXHRcXG4xMTAzOlxcdFxcdGlmIChyZXNwLVxcdTAwM2VsZW4gXFx1MDAzZSBkZGV2LVxcdTAwM2Vsb2NhbF9wYXlsb2FkX21heCkge1xcbjExMDQ6XFx0XFx0XFx0cmMgPSAtRU1TR1NJWkU7XFxuMTEwNTpcXHRcXHRcXHRnb3RvIGV4aXQ7XFxuMTEwNjpcXHRcXHR9XFxuMTEwNzpcXHRcXG4xMTA4OlxcdFxcdHNpemUgPSBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpO1xcbjExMDk6XFx0XFx0ZGVwX3JlcSA9IChzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqKXJlc3AtXFx1MDAzZWRhdGE7XFxuMTExMDpcXHRcXG4xMTExOlxcdFxcdGlmIChyZXNwLVxcdTAwM2VsZW4gXFx1MDAzYyBzaXplIHx8IGRlcF9yZXEtXFx1MDAzZWRpciAhPSBESUdJVEFMX05GQ19ERVBfRlJBTUVfRElSX09VVCB8fFxcbjExMTI6XFx0XFx0ICAgIGRlcF9yZXEtXFx1MDAzZWNtZCAhPSBESUdJVEFMX0NNRF9ERVBfUkVRKSB7XFxuMTExMzpcXHRcXHRcXHRyYyA9IC1FSU87XFxuMTExNDpcXHRcXHRcXHRnb3RvIGV4aXQ7XFxuMTExNTpcXHRcXHR9XFxuMTExNjpcXHRcXG4xMTE3OlxcdFxcdHBmYiA9IGRlcF9yZXEtXFx1MDAzZXBmYjtcXG4xMTE4OlxcdFxcbjExMTk6XFx0XFx0aWYgKERJR0lUQUxfTkZDX0RFUF9ESURfQklUX1NFVChwZmIpKSB7XFxuMTEyMDpcXHRcXHRcXHRpZiAocmVzcC1cXHUwMDNlbGVuIFxcdTAwM2Mgc2l6ZSArIDEgfHwgIWRkZXYtXFx1MDAzZWRpZCB8fFxcbjExMjE6XFx0XFx0XFx0ICAgIGRkZXYtXFx1MDAzZWRpZCAhPSByZXNwLVxcdTAwM2VkYXRhW3NpemVdKSB7XFxuMTEyMjpcXHRcXHRcXHRcXHRyYyA9IC1FSU87XFxuMTEyMzpcXHRcXHRcXHRcXHRnb3RvIGV4aXQ7XFxuMTEyNDpcXHRcXHRcXHR9XFxuMTEyNTpcXHRcXHRcXHRzaXplKys7XFxuMTEyNjpcXHRcXHR9IGVsc2UgaWYgKGRkZXYtXFx1MDAzZWRpZCkge1xcbjExMjc6XFx0XFx0XFx0cmMgPSAtRUlPO1xcbjExMjg6XFx0XFx0XFx0Z290byBleGl0O1xcbjExMjk6XFx0XFx0fVxcbjExMzA6XFx0XFxuMTEzMTpcXHRcXHRpZiAoRElHSVRBTF9ORkNfREVQX05BRF9CSVRfU0VUKHBmYikpIHtcXG4xMTMyOlxcdFxcdFxcdHJjID0gLUVJTztcXG4xMTMzOlxcdFxcdFxcdGdvdG8gZXhpdDtcXG4xMTM0OlxcdFxcdH1cXG4xMTM1OlxcdFxcbjExMzY6XFx0XFx0aWYgKHNpemUgXFx1MDAzZSByZXNwLVxcdTAwM2VsZW4pIHtcXG4xMTM3OlxcdFxcdFxcdHJjID0gLUVJTztcXG4xMTM4OlxcdFxcdFxcdGdvdG8gZXhpdDtcXG4xMTM5OlxcdFxcdH1cXG4xMTQwOlxcdFxcbjExNDE6XFx0XFx0c2tiX3B1bGwocmVzcCwgc2l6ZSk7XFxuMTE0MjpcXHRcXG4xMTQzOlxcdFxcdHN3aXRjaCAoRElHSVRBTF9ORkNfREVQX1BGQl9UWVBFKHBmYikpIHtcXG4xMTQ0OlxcdFxcdGNhc2UgRElHSVRBTF9ORkNfREVQX1BGQl9JX1BEVTpcXG4xMTQ1OlxcdFxcdFxcdHByX2RlYnVnKFxcXCJESUdJVEFMX05GQ19ERVBfUEZCX0lfUERVXFxcXG5cXFwiKTtcXG4xMTQ2OlxcdFxcbjExNDc6XFx0XFx0XFx0aWYgKGRkZXYtXFx1MDAzZWF0bl9jb3VudCkge1xcbjExNDg6XFx0XFx0XFx0XFx0LyogVGhlIHRhcmdldCBoYXMgcmVjZWl2ZWQgKGFuZCByZXBsaWVkIHRvKSBhdCBsZWFzdCBvbmVcXG4xMTQ5OlxcdFxcdFxcdFxcdCAqIEFUTiBERVBfUkVRLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMlQxMzoyNTo1NS44OTc3NjAzMTFaIiwiU2VxIjozNywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6NDY3NDE2MjU2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBORkMgRHJpdmVyIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSdtIGxvb2tpbmcgYXQgdGhpcyBgZGlmZmAgcmVsYXRlZCB0byB0aGUgYGRpZ2l0YWxfZGVwLmNgIGZpbGUuIFJpZ2h0IGF3YXksIEkgc2VlIGEgcG90ZW50aWFsIGlzc3VlOiBhbiBvdXQtb2YtYm91bmRzIHJlYWQuIFRoZSBvcmlnaW5hbCBjb2RlIHdhcyBhY2Nlc3NpbmcgYHJlc3AtXHUwMDNlZGF0YVszXWAgd2l0aG91dCBwcm9wZXJseSBjaGVja2luZyBpZiBgcmVzcC1cdTAwM2VsZW5gIHdhcyBsYXJnZSBlbm91Z2guIEVzc2VudGlhbGx5LCB0aGUgY29kZSB3YXMgdnVsbmVyYWJsZSB0byBhIHJlYWQgcGFzdCB0aGUgZW5kIG9mIHRoZSBgcmVzcGAgZGF0YSBidWZmZXIuIEl0J3Mgc3VidGxlLCBidXQgYWNjZXNzaW5nIGByZXNwLVx1MDAzZWRhdGFbM11gIHdoZW4gdGhlIGJ1ZmZlciBsZW5ndGggKGByZXNwLVx1MDAzZWxlbmApIGlzIG9ubHkgMyBpcyBhIHJlY2lwZSBmb3IgZGlzYXN0ZXIuIEl0J3MgYSBjbGFzc2ljIG9mZi1ieS1vbmUgZXJyb3Igb3Igc2ltaWxhci5cblxuVGhlIGZpeCBpcyBzdHJhaWdodGZvcndhcmQuIFRoZXkndmUgYWRkZWQgYSBib3VuZHMgY2hlY2s6IGByZXNwLVx1MDAzZWxlbiBcdTAwM2Mgc2l6ZSArIDFgLiBUaGlzIGltbWVkaWF0ZWx5IGZsYWdzIHRoZSBpc3N1ZSBpZiB0aGUgYnVmZmVyIGlzbid0IGxhcmdlIGVub3VnaCB0byBhY2NvbW1vZGF0ZSB0aGUgYWNjZXNzLiBUaGV5J3ZlIGFsc28gY2xlYW5lZCB1cCB0aGUgY29uZGl0aW9uYWwsIGV4cGxpY2l0bHkgY2hlY2tpbmcgZm9yIGAhZGRldi1cdTAwM2VkaWRgIG9yIGEgbWlzbWF0Y2ggaW4gdGhlIERJRCB2YWx1ZS4gVGhleSBhcmUgYWxzbyB1c2luZyBgcmVzcC1cdTAwM2VkYXRhW3NpemVdYCBpbnN0ZWFkIG9mIGByZXNwLVx1MDAzZWRhdGFbM11gIG5vdywgd2hpY2ggbWFrZXMgdGhlIGxvZ2ljIG1vcmUgcm9idXN0LiBUaGlzIGlzIGEgbXVjaCBiZXR0ZXIgYXBwcm9hY2guXG5cbk5vdywgbXkgbWluZCBpcyBhbHJlYWR5IHRoaW5raW5nIGFib3V0IHdoZXRoZXIgdGhpcyBraW5kIG9mIGJ1ZyB3b3VsZCBoYXZlIGJlZW4gZmxhZ2dlZCBieSBhIG1lbW9yeSBzYW5pdGl6ZXIuIEdpdmVuIHRoYXQgaXQncyBhbiBvdXQtb2YtYm91bmRzIHJlYWQsIG15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIEtBU0FOLiBJdCdzIGRlc2lnbmVkIHRvIGNhdGNoIHRoZXNlIGtpbmRzIG9mIG1lbW9yeSBhY2Nlc3MgdmlvbGF0aW9ucy4gSSBuZWVkIHRvIGNvbmZpcm0gdGhlIGNvbmRpdGlvbnMgYXJvdW5kIGByZXNwYCwgYnV0IEkgc3Ryb25nbHkgc3VzcGVjdCB0aGF0IGlmIHRoaXMgYnVnIHdhcyB0cmlnZ2VyZWQgdW5kZXIgS0FTQU4sIGl0IHdvdWxkIGhhdmUgYmVlbiBmbGFnZ2VkIGltbWVkaWF0ZWx5LlxuXG5MZXQgbWUgcXVpY2tseSByZXZpZXcgdGhlIGNhbGxlciB0byBzZWUgd2hlcmUgYHJlc3BgIGNvbWVzIGZyb20gdG8gc29saWRpZnkgbXkgY29uY2x1c2lvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzMTAsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NDAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMlQxMzoyNjowMC41NzE5MjU2NDRaIiwiU2VxIjozOCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwNTc0MzAyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZmMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZmMvZGlnaXRhbF9kZXAuYz0xMDY9c3RhdGljIHZvaWQgZGlnaXRhbF9pbl9yZWN2X2RlcF9yZXMoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDctXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBza19idWZmICpyZXNwKTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTA4OnN0YXRpYyB2b2lkIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTA5LVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqcmVzcCk7XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9OTc4PXN0YXRpYyBpbnQgZGlnaXRhbF90Z19zZW5kX2FjayhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwMTItXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwMTM6XFx0cmMgPSBkaWdpdGFsX3RnX3NlbmRfY21kKGRkZXYsIHNrYiwgMTUwMCwgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEsXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwMTQtXFx0XFx0XFx0XFx0IGRhdGFfZXhjaCk7XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9MTAyND1zdGF0aWMgaW50IGRpZ2l0YWxfdGdfc2VuZF9hdG4oc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldilcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDUxLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDUyOlxcdHJjID0gZGlnaXRhbF90Z19zZW5kX2NtZChkZGV2LCBza2IsIDE1MDAsIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxLFxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDUzLVxcdFxcdFxcdFxcdCBOVUxMKTtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz0xMDYwPXN0YXRpYyBpbnQgZGlnaXRhbF90Z19zZW5kX3NhdmVkX3NrYihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2KVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwNjktXFx0cmMgPSBkaWdpdGFsX3RnX3NlbmRfY21kKGRkZXYsIGRkZXYtXFx1MDAzZXNhdmVkX3NrYiwgMTUwMCxcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTA3MDpcXHRcXHRcXHRcXHQgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEsIE5VTEwpO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDcxLVxcdGlmIChyYylcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDc2LVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDc3OnN0YXRpYyB2b2lkIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTA3OC1cXHRcXHRcXHRcXHQgICAgc3RydWN0IHNrX2J1ZmYgKnJlc3ApXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9MTI5Nz1pbnQgZGlnaXRhbF90Z19zZW5kX2RlcF9yZXMoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzMxLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMzMyOlxcdHJjID0gZGlnaXRhbF90Z19zZW5kX2NtZChkZGV2LCB0bXBfc2tiLCAxNTAwLCBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcSxcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTMzMy1cXHRcXHRcXHRcXHQgTlVMTCk7XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9MTM0OD1zdGF0aWMgdm9pZCBkaWdpdGFsX3RnX3NlbmRfcHNsX3Jlc19jb21wbGV0ZShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEzNTktXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEzNjA6XFx0ZGlnaXRhbF90Z19saXN0ZW4oZGRldiwgMTUwMCwgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEsIE5VTEwpO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzYxLVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTE0Njc9c3RhdGljIHZvaWQgZGlnaXRhbF90Z19zZW5kX2F0cl9yZXNfY29tcGxldGUoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xNDg1LVxcdGVsc2VcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTQ4NjpcXHRcXHRkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcShkZGV2LCBhcmcsIHJlc3ApO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xNDg3LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTJUMTM6MjY6MDAuNjIyNTAzNDM2WiIsIlNlcSI6MzksIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjI5NDcxODE2NTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhbmFseXNpcyBvZiB0aGUgcHJvdmlkZWQgY29kZSBzbmlwcGV0LCBmb2N1c2luZyBvbiB0aGUgYGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxYCBmdW5jdGlvbjpcblxuKipBbmFseXppbmcgdGhlIERhdGEgVHJhbnNmZXIgaW4gYGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxYCoqXG5cbk9rYXksIHNvIHdlJ3JlIGxvb2tpbmcgYXQgYGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxYCwgc3BlY2lmaWNhbGx5IHRoZSBoYW5kbGluZyBvZiBhIHJlY2VpdmVkIGBza2JgIChzb2NrZXQgYnVmZmVyKSB0aGF0IHJlcHJlc2VudHMgYSByZXNwb25zZSB0byBhIHRhcmdldCBERVAgKERhdGEgRXhlY3V0aW9uIFByZXZlbnRpb24pIHJlcXVlc3QuIFRoZSBjcnVjaWFsIHF1ZXN0aW9uIGhlcmUgaXMgd2hldGhlciB0aGlzIGZ1bmN0aW9uIGNvcGllcyBhbnkgZGF0YSBmcm9tIHRoZSBrZXJuZWwgc3BhY2UgdG8gdXNlciBzcGFjZSwgYmVjYXVzZSB0aGF0IGlzIG9mdGVuIHdoZXJlIG1lbW9yeSBpc3N1ZXMgYXJpc2UuIEkgbmVlZCB0byBiZSBkaWxpZ2VudCBhYm91dCB3aGVyZSB0aGUgZGF0YSBmbG93IGlzIG9jY3VycmluZy5cblxuVG8gZ2V0IGEgZGVmaW5pdGl2ZSBhbnN3ZXIsIEknbSBnb2luZyB0byBkaXZlIGludG8gdGhlIGNvZGUuIEknbGwgZm9jdXMgbXkgYXR0ZW50aW9uIG9uIGxpbmVzIDExNDAgdGhyb3VnaCAxMjkwIG9mIGBkaWdpdGFsX2RlcC5jYC4gVGhpcyByYW5nZSBzaG91bGQgY29udGFpbiB0aGUgY29yZSBsb2dpYyBmb3IgcHJvY2Vzc2luZyB0aGUgaW5jb21pbmcgcmVzcG9uc2UgYW5kLCBjcml0aWNhbGx5LCBhbnkgZGF0YSB0cmFuc2ZlciBvcGVyYXRpb25zIHJlbGF0ZWQgdG8gREVQIHJlcXVlc3RzLiBJJ2xsIGJlIGxvb2tpbmcgc3BlY2lmaWNhbGx5IGZvciBjYWxscyB0aGF0IGluZGljYXRlIHVzZXItc3BhY2UgZGF0YSBjb3BpZXMgc3VjaCBhcyBgY29weV90b191c2VyKClgIG9yIG90aGVyIGZ1bmN0aW9ucyB0aGF0IHBlcmZvcm0gYSBzaW1pbGFyIHJvbGUuIEFueSBkaXJlY3QgaW50ZXJhY3Rpb24gd2l0aCB1c2VyLXNwYWNlIG1lbW9yeSB3aXRoaW4gdGhhdCBmdW5jdGlvbiByYW5nZSB3aWxsIGJlIGludGVyZXN0aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NDcwLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTJUMTM6MjY6MDMuNTY5Njg3MDA5WiIsIlNlcSI6NDAsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NjU3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbmZjL2RpZ2l0YWxfZGVwLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTE0MCxcbiAgXCJMaW5lQ291bnRcIjogODBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTE0MDpcXHRcXG4xMTQxOlxcdFxcdHNrYl9wdWxsKHJlc3AsIHNpemUpO1xcbjExNDI6XFx0XFxuMTE0MzpcXHRcXHRzd2l0Y2ggKERJR0lUQUxfTkZDX0RFUF9QRkJfVFlQRShwZmIpKSB7XFxuMTE0NDpcXHRcXHRjYXNlIERJR0lUQUxfTkZDX0RFUF9QRkJfSV9QRFU6XFxuMTE0NTpcXHRcXHRcXHRwcl9kZWJ1ZyhcXFwiRElHSVRBTF9ORkNfREVQX1BGQl9JX1BEVVxcXFxuXFxcIik7XFxuMTE0NjpcXHRcXG4xMTQ3OlxcdFxcdFxcdGlmIChkZGV2LVxcdTAwM2VhdG5fY291bnQpIHtcXG4xMTQ4OlxcdFxcdFxcdFxcdC8qIFRoZSB0YXJnZXQgaGFzIHJlY2VpdmVkIChhbmQgcmVwbGllZCB0bykgYXQgbGVhc3Qgb25lXFxuMTE0OTpcXHRcXHRcXHRcXHQgKiBBVE4gREVQX1JFUS5cXG4xMTUwOlxcdFxcdFxcdFxcdCAqL1xcbjExNTE6XFx0XFx0XFx0XFx0ZGRldi1cXHUwMDNlYXRuX2NvdW50ID0gMDtcXG4xMTUyOlxcdFxcbjExNTM6XFx0XFx0XFx0XFx0LyogcG5pIG9mIHJlc3AgUERVIGVxdWFsIHRvIHRoZSB0YXJnZXQgY3VycmVudCBwbmkgLSAxXFxuMTE1NDpcXHRcXHRcXHRcXHQgKiBtZWFucyByZXNwIGlzIHRoZSBwcmV2aW91cyBERVBfUkVRIFBEVSByZWNlaXZlZCBmcm9tXFxuMTE1NTpcXHRcXHRcXHRcXHQgKiB0aGUgaW5pdGlhdG9yIHNvIHRoZSB0YXJnZXQgcmVwbGllcyB3aXRoIHNhdmVkX3NrYlxcbjExNTY6XFx0XFx0XFx0XFx0ICogd2hpY2ggaXMgdGhlIHByZXZpb3VzIERFUF9SRVMgc2F2ZWQgaW5cXG4xMTU3OlxcdFxcdFxcdFxcdCAqIGRpZ2l0YWxfdGdfc2VuZF9kZXBfcmVzKCkuXFxuMTE1ODpcXHRcXHRcXHRcXHQgKi9cXG4xMTU5OlxcdFxcdFxcdFxcdGlmIChESUdJVEFMX05GQ19ERVBfUEZCX1BOSShwZmIpID09XFxuMTE2MDpcXHRcXHRcXHRcXHQgIERJR0lUQUxfTkZDX0RFUF9QRkJfUE5JKGRkZXYtXFx1MDAzZWN1cnJfbmZjX2RlcF9wbmkgLSAxKSkge1xcbjExNjE6XFx0XFx0XFx0XFx0XFx0cmMgPSBkaWdpdGFsX3RnX3NlbmRfc2F2ZWRfc2tiKGRkZXYpO1xcbjExNjI6XFx0XFx0XFx0XFx0XFx0aWYgKHJjKVxcbjExNjM6XFx0XFx0XFx0XFx0XFx0XFx0Z290byBleGl0O1xcbjExNjQ6XFx0XFxuMTE2NTpcXHRcXHRcXHRcXHRcXHRnb3RvIGZyZWVfcmVzcDtcXG4xMTY2OlxcdFxcdFxcdFxcdH1cXG4xMTY3OlxcdFxcbjExNjg6XFx0XFx0XFx0XFx0LyogYXRuX2NvdW50IFxcdTAwM2UgMCBhbmQgUERVIHBuaSAhPSBjdXJyX25mY19kZXBfcG5pIC0gMVxcbjExNjk6XFx0XFx0XFx0XFx0ICogbWVhbnMgdGhlIHRhcmdldCBwcm9iYWJseSBkaWQgbm90IHJlY2VpdmVkIHRoZSBsYXN0XFxuMTE3MDpcXHRcXHRcXHRcXHQgKiBERVBfUkVRIFBEVSBzZW50IGJ5IHRoZSBpbml0aWF0b3IuIFRoZSB0YXJnZXRcXG4xMTcxOlxcdFxcdFxcdFxcdCAqIGZhbGxiYWNrcyB0byBub3JtYWwgcHJvY2Vzc2luZyB0aGVuLlxcbjExNzI6XFx0XFx0XFx0XFx0ICovXFxuMTE3MzpcXHRcXHRcXHR9XFxuMTE3NDpcXHRcXG4xMTc1OlxcdFxcdFxcdGlmIChESUdJVEFMX05GQ19ERVBfUEZCX1BOSShwZmIpICE9IGRkZXYtXFx1MDAzZWN1cnJfbmZjX2RlcF9wbmkpIHtcXG4xMTc2OlxcdFxcdFxcdFxcdFBST1RPQ09MX0VSUihcXFwiMTQuMTIuMy40XFxcIik7XFxuMTE3NzpcXHRcXHRcXHRcXHRyYyA9IC1FSU87XFxuMTE3ODpcXHRcXHRcXHRcXHRnb3RvIGV4aXQ7XFxuMTE3OTpcXHRcXHRcXHR9XFxuMTE4MDpcXHRcXG4xMTgxOlxcdFxcdFxcdGtmcmVlX3NrYihkZGV2LVxcdTAwM2VzYXZlZF9za2IpO1xcbjExODI6XFx0XFx0XFx0ZGRldi1cXHUwMDNlc2F2ZWRfc2tiID0gTlVMTDtcXG4xMTgzOlxcdFxcbjExODQ6XFx0XFx0XFx0cmVzcCA9IGRpZ2l0YWxfcmVjdl9kZXBfZGF0YV9nYXRoZXIoZGRldiwgcGZiLCByZXNwLFxcbjExODU6XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgIGRpZ2l0YWxfdGdfc2VuZF9hY2ssIE5VTEwpO1xcbjExODY6XFx0XFx0XFx0aWYgKElTX0VSUihyZXNwKSkge1xcbjExODc6XFx0XFx0XFx0XFx0cmMgPSBQVFJfRVJSKHJlc3ApO1xcbjExODg6XFx0XFx0XFx0XFx0cmVzcCA9IE5VTEw7XFxuMTE4OTpcXHRcXHRcXHRcXHRnb3RvIGV4aXQ7XFxuMTE5MDpcXHRcXHRcXHR9XFxuMTE5MTpcXHRcXG4xMTkyOlxcdFxcdFxcdC8qIElmIHJlc3AgaXMgTlVMTCB0aGVuIHdlJ3JlIHN0aWxsIGNoYWluaW5nIHNvIHJldHVybiBhbmRcXG4xMTkzOlxcdFxcdFxcdCAqIHdhaXQgZm9yIHRoZSBuZXh0IHBhcnQgb2YgdGhlIFBEVS4gIEVsc2UsIHRoZSBQRFUgaXNcXG4xMTk0OlxcdFxcdFxcdCAqIGNvbXBsZXRlIHNvIHBhc3MgaXQgdXAuXFxuMTE5NTpcXHRcXHRcXHQgKi9cXG4xMTk2OlxcdFxcdFxcdGlmICghcmVzcClcXG4xMTk3OlxcdFxcdFxcdFxcdHJldHVybjtcXG4xMTk4OlxcdFxcbjExOTk6XFx0XFx0XFx0cmMgPSAwO1xcbjEyMDA6XFx0XFx0XFx0YnJlYWs7XFxuMTIwMTpcXHRcXHRjYXNlIERJR0lUQUxfTkZDX0RFUF9QRkJfQUNLX05BQ0tfUERVOlxcbjEyMDI6XFx0XFx0XFx0aWYgKERJR0lUQUxfTkZDX0RFUF9OQUNLX0JJVF9TRVQocGZiKSkgeyAvKiBOQUNLICovXFxuMTIwMzpcXHRcXHRcXHRcXHRpZiAoRElHSVRBTF9ORkNfREVQX1BGQl9QTkkocGZiICsgMSkgIT1cXG4xMjA0OlxcdFxcdFxcdFxcdFxcdFxcdFxcdGRkZXYtXFx1MDAzZWN1cnJfbmZjX2RlcF9wbmkpIHtcXG4xMjA1OlxcdFxcdFxcdFxcdFxcdHJjID0gLUVJTztcXG4xMjA2OlxcdFxcdFxcdFxcdFxcdGdvdG8gZXhpdDtcXG4xMjA3OlxcdFxcdFxcdFxcdH1cXG4xMjA4OlxcdFxcbjEyMDk6XFx0XFx0XFx0XFx0ZGRldi1cXHUwMDNlYXRuX2NvdW50ID0gMDtcXG4xMjEwOlxcdFxcbjEyMTE6XFx0XFx0XFx0XFx0cmMgPSBkaWdpdGFsX3RnX3NlbmRfc2F2ZWRfc2tiKGRkZXYpO1xcbjEyMTI6XFx0XFx0XFx0XFx0aWYgKHJjKVxcbjEyMTM6XFx0XFx0XFx0XFx0XFx0Z290byBleGl0O1xcbjEyMTQ6XFx0XFxuMTIxNTpcXHRcXHRcXHRcXHRnb3RvIGZyZWVfcmVzcDtcXG4xMjE2OlxcdFxcdFxcdH1cXG4xMjE3OlxcdFxcbjEyMTg6XFx0XFx0XFx0LyogQUNLICovXFxuMTIxOTpcXHRcXHRcXHRpZiAoZGRldi1cXHUwMDNlYXRuX2NvdW50KSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEyVDEzOjI2OjAzLjU2OTgzNTM3OVoiLCJTZXEiOjQxLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoxMDU2MTAzMzQ0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkLCBpbiB0aGUgZmlyc3QgcGVyc29uIGFuZCB0YXJnZXRlZCB0b3dhcmRzIGFuIGV4cGVydDpcblxuKipEZWVwIERpdmUgaW50byBgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXFgKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQncyBnb2luZyBvbiAqbmV4dCogd2l0aGluIHRoaXMgYGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxYCBmdW5jdGlvbi4gSXQncyB0aGUgbHluY2hwaW4sIGlzbid0IGl0PyBUaGUgc3RhcnRpbmcgcG9pbnQgb2YgYW4gaW1wb3J0YW50IHByb2Nlc3MuIEkgbmVlZCB0byBjb25zaWRlciBhbGwgYW5nbGVzIGFuZCBlbnN1cmUgbm90aGluZyBpcyBtaXNzZWQgdGhhdCB3b3VsZCBpbXBhY3QgdGhlIGRlc2lnbiBvZiB0aGUgd2lkZXIgc3lzdGVtLlxuXG5JJ20gdGhpbmtpbmcsIFwid2hhdCBhcmUgdGhlIG1vc3QgaW1wb3J0YW50IGFyZWFzIHRvIGJlIGludmVzdGlnYXRlZD9cIi4gSXQgbG9va3MgdG8gbWUgbGlrZSBpdCdzIHByaW1hcmlseSByZXNwb25zaWJsZSBmb3IgaGFuZGxpbmcgc29tZSBzb3J0IG9mIGRlcGVuZGVuY3kgcmVxdWVzdCB3aXRoaW4gdGhlIGRpZ2l0YWwgc2lnbmFsIHByb2Nlc3NpbmcgY2hhaW4uIEdpdmVuIGl0cyBuYW1lLCBJJ20gYXNzdW1pbmcgaXQncyByZWxhdGVkIHRvIHNvbWUgZGlnaXRhbCB0cmFuc21pc3Npb24gZ3JvdXAuIFdlIGhhdmUgdG8gY29uc2lkZXIgZmFjdG9ycyByZWxhdGluZyB0byBpdHMgcmVjZXB0aW9uIGFuZCBwcm9jZXNzaW5nIHdpdGhpbiB0aGlzIGZ1bmN0aW9uLiBXaGF0IGFyZSB0aGUgbGlrZWx5IGRhdGEgc3RydWN0dXJlcyBiZWluZyB1c2VkIGhlcmU/IElzIGl0IGEgc3RyYWlnaHRmb3J3YXJkIGJ1ZmZlciwgb3Igc29tZXRoaW5nIG1vcmUgY29tcGxleCB3aXRoIG1ldGFkYXRhPyBBcmUgdGhlcmUgYW55IGVycm9yIGNvbmRpdGlvbnMgdGhhdCBuZWVkIHRvIGJlIGFjY291bnRlZCBmb3I/IFdoYXQgaGFwcGVucyBpZiB0aGUgcmVxdWVzdCBpcyBtYWxmb3JtZWQgb3IgaW52YWxpZD8gRG9lcyBpdCBpbW1lZGlhdGVseSByZXR1cm4gYW4gZXJyb3IgY29kZSBvciBkb2VzIGl0IHRyaWdnZXIgYSBzcGVjaWZpYyBraW5kIG9mIGNhbGxiYWNrIG9yIGV2ZW50PyBJcyB0aGVyZSBhIHN0YXRlIG1hY2hpbmUgdGhhdCBJIG5lZWQgdG8gYmUgYXdhcmUgb2Y/IEFyZSB0aGVyZSBjb25jdXJyZW5jeSBjb25zaWRlcmF0aW9ucyB0aGF0IEkgbmVlZCB0byBrZWVwIGluIG1pbmQsIGkuZS4gaXMgdGhpcyBmdW5jdGlvbiBjYWxsZWQgZnJvbSBtdWx0aXBsZSB0aHJlYWRzP1xuXG5JIGFsc28gbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByZWxhdGlvbnNoaXAgdG8gdGhlIHJlc3Qgb2YgdGhlIHN5c3RlbS4gV2hhdCBvdGhlciBmdW5jdGlvbnMgb3IgbW9kdWxlcyBkb2VzIGBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcWAgY2FsbCwgYW5kIHdoaWNoIG9uZXMgY2FsbCBpdD8gV2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGVzZSBjYWxscyBpbiB0ZXJtcyBvZiByZXNvdXJjZSB1dGlsaXphdGlvbiBhbmQgbGF0ZW5jeT8gRG9lcyBpdCBpbnRlcmFjdCB3aXRoIGFueSBoYXJkd2FyZSBkaXJlY3RseT8gQW5kLCBpZiBzbywgYXJlIHRoZXJlIGFueSBoYXJkd2FyZS1zcGVjaWZpYyBjb25zaWRlcmF0aW9ucyBpbiB0ZXJtcyBvZiB0aW1pbmcgb3Igc3luY2hyb25pemF0aW9uPyBJJ2xsIHByb2JhYmx5IG5lZWQgdG8gdHJhY2UgaXRzIGNhbGwgc3RhY2sgYW5kIGRhdGEgZmxvdyB0byBnZXQgYSBjb21wbGV0ZSBwaWN0dXJlLiBUaGlzIGlzIG15IGNoYW5jZSB0byBkZXRlcm1pbmUgaWYgdGhpcyBwaWVjZSBvZiBjb2RlIGlzIGVmZmljaWVudCBhbmQgd2VsbC1kZXNpZ25lZCwgb3IgaWYgdGhlcmUncyByb29tIGZvciBpbXByb3ZlbWVudC5cblxuVWx0aW1hdGVseSwgSSB3YW50IHRvIGZvcm0gYW4gYWNjdXJhdGUgbWVudGFsIG1vZGVsIG9mIHdoYXQgdGhpcyBmdW5jdGlvbiBkb2VzIGFuZCBob3cgaXQgZml0cyBpbnRvIHRoZSBvdmVyYWxsIHNjaGVtZSBvZiB0aGluZ3MuIEknbSBsb29raW5nIGZvciB0aGUga2V5IGluc2lnaHRzIHRoYXQgd2lsbCBpbmZvcm0gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgc3lzdGVtJ3MgZGVzaWduIGFuZCB3aWxsIGRldGVybWluZSBob3cgSSB3aWxsIGFwcHJvYWNoIHRoaXMgcHJvYmxlbS4gTGV0J3MgZGlnIGluIGFuZCBzZWUgd2hhdCBzZWNyZXRzIHRoaXMgZnVuY3Rpb24gaG9sZHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcwNjQsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEyVDEzOjI2OjE0LjEzMDg3MDY3WiIsIlNlcSI6NDIsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MzgwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbmZjL2RpZ2l0YWxfZGVwLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTIyMCxcbiAgXCJMaW5lQ291bnRcIjogODBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTIyMDpcXHRcXHRcXHRcXHQvKiBUaGUgdGFyZ2V0IGhhcyBwcmV2aW91c2x5IHJlY2VpdmVkIG9uZSBvciBtb3JlIEFUTlxcbjEyMjE6XFx0XFx0XFx0XFx0ICogUERVcy5cXG4xMjIyOlxcdFxcdFxcdFxcdCAqL1xcbjEyMjM6XFx0XFx0XFx0XFx0ZGRldi1cXHUwMDNlYXRuX2NvdW50ID0gMDtcXG4xMjI0OlxcdFxcbjEyMjU6XFx0XFx0XFx0XFx0LyogSWYgdGhlIEFDSyBQTkkgaXMgZXF1YWwgdG8gdGhlIHRhcmdldCBQTkkgLSAxIG1lYW5zXFxuMTIyNjpcXHRcXHRcXHRcXHQgKiB0aGF0IHRoZSBpbml0aWF0b3IgZGlkIG5vdCByZWNlaXZlIHRoZSBwcmV2aW91cyBQRFVcXG4xMjI3OlxcdFxcdFxcdFxcdCAqIHNlbnQgYnkgdGhlIHRhcmdldCBzbyByZS1zZW5kIGl0LlxcbjEyMjg6XFx0XFx0XFx0XFx0ICovXFxuMTIyOTpcXHRcXHRcXHRcXHRpZiAoRElHSVRBTF9ORkNfREVQX1BGQl9QTkkocGZiICsgMSkgPT1cXG4xMjMwOlxcdFxcdFxcdFxcdFxcdFxcdFxcdGRkZXYtXFx1MDAzZWN1cnJfbmZjX2RlcF9wbmkpIHtcXG4xMjMxOlxcdFxcdFxcdFxcdFxcdHJjID0gZGlnaXRhbF90Z19zZW5kX3NhdmVkX3NrYihkZGV2KTtcXG4xMjMyOlxcdFxcdFxcdFxcdFxcdGlmIChyYylcXG4xMjMzOlxcdFxcdFxcdFxcdFxcdFxcdGdvdG8gZXhpdDtcXG4xMjM0OlxcdFxcbjEyMzU6XFx0XFx0XFx0XFx0XFx0Z290byBmcmVlX3Jlc3A7XFxuMTIzNjpcXHRcXHRcXHRcXHR9XFxuMTIzNzpcXHRcXG4xMjM4OlxcdFxcdFxcdFxcdC8qIE90aGVyd2lzZSwgdGhlIHRhcmdldCBkaWQgbm90IHJlY2VpdmUgdGhlIHByZXZpb3VzXFxuMTIzOTpcXHRcXHRcXHRcXHQgKiBBQ0sgUERVIGZyb20gdGhlIGluaXRpYXRvci4gRmFsbGJhY2sgdG8gbm9ybWFsXFxuMTI0MDpcXHRcXHRcXHRcXHQgKiBwcm9jZXNzaW5nIG9mIGNoYWluZWQgUERVIHRoZW4uXFxuMTI0MTpcXHRcXHRcXHRcXHQgKi9cXG4xMjQyOlxcdFxcdFxcdH1cXG4xMjQzOlxcdFxcbjEyNDQ6XFx0XFx0XFx0LyogS2VlcCBvbiBzZW5kaW5nIGNoYWluZWQgUERVICovXFxuMTI0NTpcXHRcXHRcXHRpZiAoIWRkZXYtXFx1MDAzZWNoYWluaW5nX3NrYiB8fFxcbjEyNDY6XFx0XFx0XFx0ICAgIERJR0lUQUxfTkZDX0RFUF9QRkJfUE5JKHBmYikgIT1cXG4xMjQ3OlxcdFxcdFxcdFxcdFxcdFxcdGRkZXYtXFx1MDAzZWN1cnJfbmZjX2RlcF9wbmkpIHtcXG4xMjQ4OlxcdFxcdFxcdFxcdHJjID0gLUVJTztcXG4xMjQ5OlxcdFxcdFxcdFxcdGdvdG8gZXhpdDtcXG4xMjUwOlxcdFxcdFxcdH1cXG4xMjUxOlxcdFxcbjEyNTI6XFx0XFx0XFx0a2ZyZWVfc2tiKGRkZXYtXFx1MDAzZXNhdmVkX3NrYik7XFxuMTI1MzpcXHRcXHRcXHRkZGV2LVxcdTAwM2VzYXZlZF9za2IgPSBOVUxMO1xcbjEyNTQ6XFx0XFxuMTI1NTpcXHRcXHRcXHRyYyA9IGRpZ2l0YWxfdGdfc2VuZF9kZXBfcmVzKGRkZXYsIGRkZXYtXFx1MDAzZWNoYWluaW5nX3NrYik7XFxuMTI1NjpcXHRcXHRcXHRpZiAocmMpXFxuMTI1NzpcXHRcXHRcXHRcXHRnb3RvIGV4aXQ7XFxuMTI1ODpcXHRcXG4xMjU5OlxcdFxcdFxcdGdvdG8gZnJlZV9yZXNwO1xcbjEyNjA6XFx0XFx0Y2FzZSBESUdJVEFMX05GQ19ERVBfUEZCX1NVUEVSVklTT1JfUERVOlxcbjEyNjE6XFx0XFx0XFx0aWYgKERJR0lUQUxfTkZDX0RFUF9QRkJfSVNfVElNRU9VVChwZmIpKSB7XFxuMTI2MjpcXHRcXHRcXHRcXHRyYyA9IC1FSU5WQUw7XFxuMTI2MzpcXHRcXHRcXHRcXHRnb3RvIGV4aXQ7XFxuMTI2NDpcXHRcXHRcXHR9XFxuMTI2NTpcXHRcXG4xMjY2OlxcdFxcdFxcdHJjID0gZGlnaXRhbF90Z19zZW5kX2F0bihkZGV2KTtcXG4xMjY3OlxcdFxcdFxcdGlmIChyYylcXG4xMjY4OlxcdFxcdFxcdFxcdGdvdG8gZXhpdDtcXG4xMjY5OlxcdFxcbjEyNzA6XFx0XFx0XFx0ZGRldi1cXHUwMDNlYXRuX2NvdW50Kys7XFxuMTI3MTpcXHRcXG4xMjcyOlxcdFxcdFxcdGdvdG8gZnJlZV9yZXNwO1xcbjEyNzM6XFx0XFx0fVxcbjEyNzQ6XFx0XFxuMTI3NTpcXHRcXHRyYyA9IG5mY190bV9kYXRhX3JlY2VpdmVkKGRkZXYtXFx1MDAzZW5mY19kZXYsIHJlc3ApO1xcbjEyNzY6XFx0XFx0aWYgKHJjKVxcbjEyNzc6XFx0XFx0XFx0cmVzcCA9IE5VTEw7XFxuMTI3ODpcXHRcXG4xMjc5OlxcdGV4aXQ6XFxuMTI4MDpcXHRcXHRrZnJlZV9za2IoZGRldi1cXHUwMDNlY2hhaW5pbmdfc2tiKTtcXG4xMjgxOlxcdFxcdGRkZXYtXFx1MDAzZWNoYWluaW5nX3NrYiA9IE5VTEw7XFxuMTI4MjpcXHRcXG4xMjgzOlxcdFxcdGRkZXYtXFx1MDAzZWF0bl9jb3VudCA9IDA7XFxuMTI4NDpcXHRcXG4xMjg1OlxcdFxcdGtmcmVlX3NrYihkZGV2LVxcdTAwM2VzYXZlZF9za2IpO1xcbjEyODY6XFx0XFx0ZGRldi1cXHUwMDNlc2F2ZWRfc2tiID0gTlVMTDtcXG4xMjg3OlxcdFxcbjEyODg6XFx0XFx0aWYgKHJjKVxcbjEyODk6XFx0XFx0XFx0a2ZyZWVfc2tiKHJlc3ApO1xcbjEyOTA6XFx0XFxuMTI5MTpcXHRcXHRyZXR1cm47XFxuMTI5MjpcXHRcXG4xMjkzOlxcdGZyZWVfcmVzcDpcXG4xMjk0OlxcdFxcdGRldl9rZnJlZV9za2IocmVzcCk7XFxuMTI5NTpcXHR9XFxuMTI5NjpcXHRcXG4xMjk3OlxcdGludCBkaWdpdGFsX3RnX3NlbmRfZGVwX3JlcyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbjEyOTg6XFx0e1xcbjEyOTk6XFx0XFx0c3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKmRlcF9yZXM7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEyVDEzOjI2OjE0LjEzMTAyNjdaIiwiU2VxIjo0MywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6NDQyNjY1MjI3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE5GQyBEaWdpdGFsIERFUCBESUQgSGFuZGxpbmcqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggaW4gYG5ldC9uZmMvZGlnaXRhbF9kZXAuY2AgY29uY2VybmluZyBESUQgKERhdGEgSUQpIGhhbmRsaW5nIHdpdGhpbiB0aGUgRGlnaXRhbCBERVAgKERldmljZS10by1EZXZpY2UgUHJvdG9jb2wpIGZvciBORkMuIFRoZSBjb3JlIG9mIHRoaXMgc2VlbXMgdG8gYmUgY2VudGVyZWQgYXJvdW5kIGBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcWAgYW5kIHRoZSB2ZXJpZmljYXRpb24gb2YgdGhlIERJRCBmaWVsZCB3aXRoaW4gYSByZWNlaXZlZCBERVAgcmVxdWVzdC5cblxuRXNzZW50aWFsbHksIGl0IGNoZWNrcyBpZiBhIERJRCBpcyBwcmVzZW50IChgRElHSVRBTF9ORkNfREVQX0RJRF9CSVRfU0VUYCkgaW4gdGhlIFByb3RvY29sIEZvcm1hdCBCeXRlIChQRkIpIGFuZCB0aGVuIGNvbXBhcmVzIGl0IHRvIHRoZSBkZXZpY2UncyBleHBlY3RlZCBESUQgKGBkZGV2LVx1MDAzZWRpZGApLiBUaGUgb3JpZ2luYWwgY29kZSBoYWQgYSBzdWJ0bGUgZmxhdyB0aGF0IHRoaXMgcGF0Y2ggYWltcyB0byBmaXguIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoYXQgZmxhdywgYXMgdGhlIGxvZ2ljIGlzIHNvbWV3aGF0IGNvbnZvbHV0ZWQuXG5cbkhlcmUncyB0aGUgcHJvYmxlbSBJIHNlZSBub3c6IFRoZSBpbml0aWFsIGNvbmRpdGlvbmFsIHN0YXRlbWVudCBpbiB0aGUgYGlmIChESUdJVEFMX05GQ19ERVBfRElEX0JJVF9TRVQocGZiKSlgIGJsb2NrIHVzZWQgdG8gdmVyaWZ5IHRoZSBESUQuIFRoZSBvcmlnaW5hbCBjb2RlIGluY3JlbWVudGVkIGBzaXplKytgIGlmIHRoZSBESURzIG1hdGNoZWQgYnV0LCBpZiB0aGUgRElEcyBkaWQgbm90IG1hdGNoLCBpdCB3b3VsZCBlcnJvciBvdXQgYW5kIGV4aXQuIFRoaXMgd29ya3MgYXMgaW50ZW5kZWQuXG5cblRoZSBwYXRjaCBhaW1zIHRvIHNvbHZlIGEgY2FzZSB3aGVyZSBpZiB0aGUgYHJlc3AtXHUwMDNlbGVuYCBpcyB0b28gc21hbGwsIGFuIG91dC1vZi1ib3VuZHMgcmVhZCB3b3VsZCBoYXBwZW4gYW5kIGEgY3Jhc2ggY291bGQgb2NjdXIuIFRoZSBwYXRjaCBmaXhlcyB0aGlzIGJ5IGNoZWNraW5nIGByZXNwLVx1MDAzZWxlbiBcdTAwM2Mgc2l6ZSArIDFgIGJlZm9yZSBjb21wYXJpbmcgdGhlIERJRC4gVGhlIG90aGVyIHBhcnQgb2YgdGhlIGZpeCBpcyB0byBzaW1wbGlmeSB0aGUgYGVsc2VgIGNsYXVzZTogaWYgYSBESUQgaXMgZXhwZWN0ZWQgYnV0IG5vdCBwcmVzZW50LCBlcnJvciBvdXQuXG5cbk5vdywgbGV0J3Mgc3dpdGNoIGdlYXJzIGFuZCBjaGVjayBob3cgYGRpZ2l0YWxfaW5fcmVjdl9kZXBfcmVzYCBkb2VzIHRoZSBESUQgY2hlY2tpbmcsIHRvIG1ha2Ugc3VyZSB0aGlzIGZpeCBpcyBjb25zaXN0ZW50IGFjcm9zcyB0aGUgY29kZWJhc2UuIEkgbmVlZCB0byBjb25maXJtIHRoYXQgdGhlIGNoYW5nZXMgbWFkZSBoZXJlIGFyZSBhbHNvIHJlZmxlY3RlZCAob3IgY29uc2lkZXJlZCkgaW4gdGhlIGluY29taW5nIHJlc3BvbnNlIHNpZGUgb2YgdGhpbmdzLiBJdCdzIGNydWNpYWwgZm9yIHN5bW1ldHJpY2FsIGJlaGF2aW9yIHRvIG1haW50YWluIGRhdGEgaW50ZWdyaXR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NzMxLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTJUMTM6MjY6MTguNTU3NjgxOTYzWiIsIlNlcSI6NDQsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzE3MTQ5MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJESUdJVEFMX05GQ19ERVBfRElEX0JJVF9TRVRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25mYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25mYy9kaWdpdGFsX2RlcC5jLTUyLSNkZWZpbmUgRElHSVRBTF9ORkNfREVQX05BRF9CSVRfU0VUKHBmYikgKChwZmIpIFxcdTAwMjYgMHgwOClcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NTM6I2RlZmluZSBESUdJVEFMX05GQ19ERVBfRElEX0JJVF9TRVQocGZiKSAoKHBmYikgXFx1MDAyNiBESUdJVEFMX05GQ19ERVBfUEZCX0RJRF9CSVQpXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTU0LSNkZWZpbmUgRElHSVRBTF9ORkNfREVQX1BGQl9QTkkocGZiKSAgICAgKChwZmIpIFxcdTAwMjYgMHgwMylcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz02ODY9c3RhdGljIHZvaWQgZGlnaXRhbF9pbl9yZWN2X2RlcF9yZXMoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTc2Ni1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NzY3OlxcdGlmIChESUdJVEFMX05GQ19ERVBfRElEX0JJVF9TRVQocGZiKSkge1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy03NjgtXFx0XFx0UFJPVE9DT0xfRVJSKFxcXCIxNC44LjIuMVxcXCIpO1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTEwNzc9c3RhdGljIHZvaWQgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTExMTgtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjExMTk6XFx0aWYgKERJR0lUQUxfTkZDX0RFUF9ESURfQklUX1NFVChwZmIpKSB7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTExMjAtXFx0XFx0aWYgKHJlc3AtXFx1MDAzZWxlbiBcXHUwMDNjIHNpemUgKyAxIHx8ICFkZGV2LVxcdTAwM2VkaWQgfHxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTJUMTM6MjY6MTguNjA0ODYwNTc2WiIsIlNlcSI6NDUsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjg1NzIwMTgwMzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQYXRjaCBmb3IgS01TQU4gUmVsZXZhbmNlKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgY29tbWl0IGZpeGVzIHdoYXQgbG9va3MgbGlrZSBhIGNsYXNzaWMgb3V0LW9mLWJvdW5kcyByZWFkIHZ1bG5lcmFiaWxpdHkuIFN5emthbGxlciBwcm9iYWJseSBmb3VuZCBpdCwgc3BlY2lmaWNhbGx5LCBhY2Nlc3NpbmcgYHJlc3AtXHUwMDNlZGF0YVszXWAgd2hlbiBgcmVzcC1cdTAwM2VsZW5gIHdhcyBvbmx5IDMuIFRoZSBgc2l6ZWAgdmFyaWFibGUgaXMgc2V0IHRvIHRoZSBzaXplIG9mIGBzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3Jlc2AsIHdoaWNoIGlzIDMgYnl0ZXMsIGJ1dCB0aGUgY29uZGl0aW9uYWwgY2hlY2sgYmVmb3JlIHRoZSBmaXggb25seSBjaGVja2VkIGZvciBgcmVzcC1cdTAwM2VsZW4gXHUwMDNlPSAzYC4gVGhlbiwgaWYgYSBjZXJ0YWluIGJpdCB3YXMgc2V0LCB0aGUgY29kZSBhdHRlbXB0ZWQgdG8gYWNjZXNzIGByZXNwLVx1MDAzZWRhdGFbM11gLiBJZiBgcmVzcC1cdTAwM2VsZW5gIHdhcyBleGFjdGx5IDMsIHRoYXQncyBhIG9uZS1ieXRlIG91dC1vZi1ib3VuZHMgcmVhZCBmcm9tIHRoZSBlbmQgb2YgdGhlIGByZXNwLVx1MDAzZWRhdGFgIGJ1ZmZlci4gS0FTQU4gd291bGQgaW1tZWRpYXRlbHkgY2F0Y2ggdGhhdC5cblxuTm93LCB0aGUgcXVlc3Rpb24gaXMsIGRvZXMgdGhpcyByZXF1aXJlIEtNU0FOPyBMZXQncyBnbyB0aHJvdWdoIHRoZSBjaGVja2xpc3QuXG5cbjEuICAqKlVzZXItc3BhY2UgZXhwb3N1cmU/KiogTm9wZS4gTm90aGluZyBoZXJlIGdldHMgY29waWVkIHRvIHVzZXIgc3BhY2UuXG4yLiAgKipVbmluaXRpYWxpemVkIHZhcmlhYmxlIHNoZW5hbmlnYW5zPyoqIE5vdCBhdCBhbGwuIGByZXNwLVx1MDAzZWxlbmAsIGBzaXplYCwgYGRkZXYtXHUwMDNlZGlkYCwgYW5kIHRoZSBzcGVjaWZpYyBieXRlIG9mIGByZXNwLVx1MDAzZWRhdGFgIGFyZSBhbGwgd2VsbC1kZWZpbmVkIGFuZCBpbml0aWFsaXplZC4gYHNpemVgIGlzIGFuIGludGVnZXIgaW5pdGlhbGl6ZWQgd2l0aCBgc2l6ZW9mKClgLiBgcmVzcC1cdTAwM2VkYXRhYCBpcyBqdXN0IHRoZSBORkMgcGFja2V0IHRoYXQgd2FzIHJlY2VpdmVkLlxuMy4gICoqTmV3IGFsbG9jYXRpb25zIG9yIGRhdGEgc3RydWN0dXJlcz8qKiBObyBuZXcgYWxsb2NhdGlvbnMgb3IgbW9kaWZpY2F0aW9ucyB0byBkYXRhIHN0cnVjdHVyZSBpbml0aWFsaXphdGlvbnMgYXJlIGFkZGVkIG9yIG1vZGlmaWVkIGJ5IHRoZSBwYXRjaC5cbjQuICAqKkJvdW5kcyBjaGVja3MgZXhwb3NpbmcgdW5pbml0aWFsaXplZCBieXRlcz8qKiBBY3R1YWxseSwgdGhlIHBhdGNoICp0aWdodGVucyogYm91bmRzIGNoZWNrcy4gSXQgYWRkcyBhbiBleHRyYSBjaGVjayAoYHJlc3AtXHUwMDNlbGVuIFx1MDAzYyBzaXplICsgMWApIHRvIGVuc3VyZSB3ZSBkb24ndCByZWFkIG91dC1vZi1ib3VuZHMuIFRoZSBjb2RlIGlzICpyZXN0cmljdGluZyogYWNjZXNzLCBub3QgZXhwYW5kaW5nIGl0LlxuXG5XYWl0LCBpcyB0aGVyZSBhbnkgY2hhbmNlIHRoYXQgYHJlc3AtXHUwMDNlZGF0YVtzaXplXWAgY291bGQgYmUgdW5pbml0aWFsaXplZCBtZW1vcnk/IE5vLiBUaGUgY29kZSBleHBsaWNpdGx5IGNoZWNrcyBgcmVzcC1cdTAwM2VsZW5gIGJlZm9yZSBhY2Nlc3NpbmcgdGhlIGRhdGEuIEV2ZW4gaWYgYHJlc3AtXHUwMDNlZGF0YWAgaXMgYW4gc2tiIGRhdGEgYnVmZmVyLCB0aGUgY29kZSBjaGVja3MgdGhlIGxlbmd0aCBvZiAqdmFsaWQqIHJlY2VpdmVkIGRhdGEsIHdoaWNoIGlzIGluZGljYXRlZCBieSBgcmVzcC1cdTAwM2VsZW5gLiBCZWZvcmUgdGhlIHBhdGNoLCBhdHRlbXB0aW5nIHRvIHJlYWQgcGFzdCB0aGUgdmFsdWUgb2YgYHJlc3AtXHUwMDNlbGVuYCB3YXMgYW4gb3V0LW9mLWJvdW5kcyByZWFkIChjYXVnaHQgYnkgS0FTQU4pLCB0aGUgcGF0Y2ggaGFzIGZpeGVkIHRoaXMgYW5kIG5vdyB0aGUgY29kZSBkb2VzIG5vdCByZWFkIHBhc3QgdGhlIGFsbG9jYXRlZCBidWZmZXIuIFRoZSBwYXRjaCBmaXhlcyB0aGlzIGJ5IGNoZWNraW5nIGByZXNwLVx1MDAzZWxlbiBcdTAwM2Mgc2l6ZSArIDFgLiBUaGUgY2hhbmdlIG1vZGlmaWVzIGJvdW5kcyBjaGVja2luZyBpbiBhIHdheSB0aGF0IHJlc3RyaWN0cyBhY2Nlc3MuXG5cblRoZSBjb3JlIG9mIHRoZSBwcm9ibGVtIGhlcmUgd2FzIGEgS0FTQU4gZGV0ZWN0YWJsZSBvdXQtb2YtYm91bmRzIHJlYWQsIGFuZCB0aGUgcGF0Y2ggZml4ZXMgaXQgYnkgaW1wbGVtZW50aW5nIGEgcHJvcGVyIGJvdW5kcyBjaGVjaywgbm90IGJ5IGV4cG9zaW5nIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeS5cblxuU28sIGFjY29yZGluZyB0byB0aGUgcnVsZXMsIHNpbmNlIEtBU0FOIGhhbmRsZXMgdGhlIHR5cGUgb2YgYnVnIHRoaXMgcGF0Y2ggYWRkcmVzc2VzLCBhbmQgdGhlIHBhdGNoIGRvZXNuJ3QgaW50cm9kdWNlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLCB0aGlzIGRvZXNuJ3QgbmVlZCBLTVNBTi4gVGhpcyBwYXRjaCBmYWxscyBpbnRvIHRoZSBjYXRlZ29yeSBvZiBcInByaW1hcmlseSByaXNrcyBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCAuLi4gKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodCBieSBLQVNBTilcIi4gVGhlIHN0cnVjdHVyZXMgYXJlIGZ1bGx5IGluaXRpYWxpemVkIG9yIGNoZWNrZWQuXG5cblRoZXJlZm9yZSwgYE5lZWRzS01TQU4gPSBmYWxzZWAuIEl0IGlzIGEgY2xhc3NpYyBLQVNBTiBpc3N1ZS4gVGhlIHBhdGNoIGFkZHMgYSBsZW5ndGggY2hlY2sgYW5kIGRvZXNuJ3QgZG8gYW55dGhpbmcgZWxzZS5cblxuTGV0J3MgcHJlcGFyZSB0aGUganVzdGlmaWNhdGlvbiwgY29udHJhc3RpbmcgS0FTQU4gYW5kIEtNU0FOLlxuSW4gdGhlIGBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcSgpYCBmdW5jdGlvbiwgdGhlIGRyaXZlciBoYW5kbGVzIGluY29taW5nIE5GQyBERVAgcmVxdWVzdHMuIFByZXZpb3VzbHksIHdoZW4gdGhlIERJRCBiaXQgaW4gdGhlIFBGQiBieXRlIHdhcyBzZXQsIGl0IHVuY29uZGl0aW9uYWxseSBjaGVja2VkIGByZXNwLVx1MDAzZWRhdGFbM11gIHdpdGhvdXQgZW5zdXJpbmcgYHJlc3AtXHUwMDNlbGVuIFx1MDAzZT0gNGAgKHNpbmNlIHRoZSBwcmlvciBjaGVjayBvbmx5IGVuc3VyZWQgYHJlc3AtXHUwMDNlbGVuIFx1MDAzZT0gM2ApLCBsZWFkaW5nIHRvIGEgcG90ZW50aWFsIDEtYnl0ZSBvdXQtb2YtYm91bmRzIHJlYWQuIE91dC1vZi1ib3VuZHMgcmVhZCBkZXRlY3Rpb24gb24gc2xhYi9za2IgYnVmZmVycyBpcyBoYW5kbGVkIGRpcmVjdGx5IGJ5IEtBU0FOIChlLmcuLCBzbGFiLW91dC1vZi1ib3VuZHMpLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSwgZG9lcyBub3QgYWx0ZXIgc3RydWN0dXJlcyBjb3BpZWQgdG8gdXNlcnNwYWNlLCBkb2VzIG5vdCBsZWF2ZSBhbnkgdmFyaWFibGVzIHVuaW5pdGlhbGl6ZWQsIGFuZCBhY3R1YWxseSB0aWdodGVucyBsZW5ndGggdmFsaWRhdGlvbiBvbiBpbmNvbWluZyBkYXRhIGJlZm9yZSBpbmRleGluZyB0aGUgYnVmZmVyLiBObyB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciBpbmZvcm1hdGlvbiBsZWFrcyBhcmUgaW50cm9kdWNlZCBvciBleHBvc2VkLiBUaGVyZWZvcmUsIGBOZWVkc0tNU0FOPWZhbHNlYC5cbkxldCdzIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTkzMCwiT3V0cHV0VG9rZW5zIjoxOTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTQzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEyVDEzOjI2OjI3LjE3Njg4Mjg5OVoiLCJTZXEiOjQ2LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxNzI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyByZWFkIGluIGBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcSgpYCB3aGVyZSBgcmVzcC1cXHUwMDNlZGF0YVszXWAgd2FzIHJlYWQgd2l0aG91dCBmaXJzdCB2ZXJpZnlpbmcgdGhhdCBgcmVzcC1cXHUwMDNlbGVuYCB3YXMgYXQgbGVhc3QgYHNpemUgKyAxYCAoNCBieXRlcykuIFxcblxcblRoaXMgaXMgYSBib3VuZHMtY2hlY2tpbmcgaXNzdWU6IGFjY2Vzc2luZyBieXRlcyBiZXlvbmQgYHJlc3AtXFx1MDAzZWxlbmAgaXMgYW4gb3V0LW9mLWJvdW5kcyBhY2Nlc3MgZGlyZWN0bHkgZGV0ZWN0YWJsZSBieSBLQVNBTiAoZS5nLiwgc2xhYi1vdXQtb2YtYm91bmRzIG9uIHNrYiBkYXRhKS4gVGhlIGNoYW5nZSBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHVuaW5pdGlhbGl6ZWQgc3RhY2sgb3IgaGVhcCB2YXJpYWJsZXMsIGRvZXMgbm90IGV4cG9zZSB1bmluaXRpYWxpemVkIHBhZGRpbmcgb3Igc3RydWN0IGZpZWxkcyB0byB1c2VyIHNwYWNlLCBhbmQgZG9lcyBub3QgYWx0ZXIgY29udHJvbCBmbG93IGJhc2VkIG9uIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBCZWNhdXNlIHN0YW5kYXJkIEtBU0FOIGZ1bGx5IGNvdmVycyB0aGlzIGNsYXNzIG9mIGJ1Z3MgYW5kIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIGFyZSBpbnRyb2R1Y2VkLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIHJlYWQgaW4gYGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxKClgIHdoZXJlIGByZXNwLVxcdTAwM2VkYXRhWzNdYCB3YXMgcmVhZCB3aXRob3V0IGZpcnN0IHZlcmlmeWluZyB0aGF0IGByZXNwLVxcdTAwM2VsZW5gIHdhcyBhdCBsZWFzdCBgc2l6ZSArIDFgICg0IGJ5dGVzKS4gXFxuXFxuVGhpcyBpcyBhIGJvdW5kcy1jaGVja2luZyBpc3N1ZTogYWNjZXNzaW5nIGJ5dGVzIGJleW9uZCBgcmVzcC1cXHUwMDNlbGVuYCBpcyBhbiBvdXQtb2YtYm91bmRzIGFjY2VzcyBkaXJlY3RseSBkZXRlY3RhYmxlIGJ5IEtBU0FOIChlLmcuLCBzbGFiLW91dC1vZi1ib3VuZHMgb24gc2tiIGRhdGEpLiBUaGUgY2hhbmdlIGRvZXMgbm90IGludHJvZHVjZSBhbnkgdW5pbml0aWFsaXplZCBzdGFjayBvciBoZWFwIHZhcmlhYmxlcywgZG9lcyBub3QgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgcGFkZGluZyBvciBzdHJ1Y3QgZmllbGRzIHRvIHVzZXIgc3BhY2UsIGFuZCBkb2VzIG5vdCBhbHRlciBjb250cm9sIGZsb3cgYmFzZWQgb24gdW5pbml0aWFsaXplZCBtZW1vcnkuIEJlY2F1c2Ugc3RhbmRhcmQgS0FTQU4gZnVsbHkgY292ZXJzIHRoaXMgY2xhc3Mgb2YgYnVncyBhbmQgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgYXJlIGludHJvZHVjZWQsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow569zd[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-12 13:22:12 +0000 UTC FinishedAt: 2026-09-12 13:26:28 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "df2908090cda368b01ff43709f51890076c56157", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NFC", "NFC_DIGITAL", "NFC_SIM", "NFC_PORT100" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "df2908090cda368b01ff43709f51890076c56157", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NFC", "NFC_DIGITAL", "NFC_SIM", "NFC_PORT100" ], "series_id": "d7cd074c-db82-4528-8676-7c8e205b760a" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "digital_tg_recv_dep_req", "digital_tg_send_dep_res", "digital_tg_recv_atr_req" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "", "base_commit": "df2908090cda368b01ff43709f51890076c56157", "base_tree": "axboe" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEyIDEzOjIzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GQyYjMzQ7LAogICAgJiMzNDtORkNfRElHSVRBTCYjMzQ7LAogICAgJiMzNDtORkNfU0lNJiMzNDssCiAgICAmIzM0O05GQ19QT1JUMTAwJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEmIzM0OywKICAgICYjMzQ7ZGlnaXRhbF90Z19zZW5kX2RlcF9yZXMmIzM0OywKICAgICYjMzQ7ZGlnaXRhbF90Z19yZWN2X2F0cl9yZXEmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIHJlYWQgaW4gYGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxKClgIHdoZXJlIGByZXNwLVx1MDAzZWRhdGFbM11gIHdhcyByZWFkIHdpdGhvdXQgZmlyc3QgdmVyaWZ5aW5nIHRoYXQgYHJlc3AtXHUwMDNlbGVuYCB3YXMgYXQgbGVhc3QgYHNpemUgJiM0MzsgMWAgKDQgYnl0ZXMpLiBcblxuVGhpcyBpcyBhIGJvdW5kcy1jaGVja2luZyBpc3N1ZTogYWNjZXNzaW5nIGJ5dGVzIGJleW9uZCBgcmVzcC1cdTAwM2VsZW5gIGlzIGFuIG91dC1vZi1ib3VuZHMgYWNjZXNzIGRpcmVjdGx5IGRldGVjdGFibGUgYnkgS0FTQU4gKGUuZy4sIHNsYWItb3V0LW9mLWJvdW5kcyBvbiBza2IgZGF0YSkuIFRoZSBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIGFueSB1bmluaXRpYWxpemVkIHN0YWNrIG9yIGhlYXAgdmFyaWFibGVzLCBkb2VzIG5vdCBleHBvc2UgdW5pbml0aWFsaXplZCBwYWRkaW5nIG9yIHN0cnVjdCBmaWVsZHMgdG8gdXNlciBzcGFjZSwgYW5kIGRvZXMgbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBiYXNlZCBvbiB1bmluaXRpYWxpemVkIG1lbW9yeS4gQmVjYXVzZSBzdGFuZGFyZCBLQVNBTiBmdWxseSBjb3ZlcnMgdGhpcyBjbGFzcyBvZiBidWdzIGFuZCBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBhcmUgaW50cm9kdWNlZCwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGlucHV0IHZhbGlkYXRpb24gaW4gdGhlIE5GQyBkaWdpdGFsIHRhcmdldCBtb2RlIERFUCByZXF1ZXN0IGhhbmRsaW5nIChkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcSkgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIGFjY2VzcyB3aGVuIHRoZSBESUQgYml0IGlzIHNldCBieSB2ZXJpZnlpbmcgZnJhbWUgbGVuZ3RoIGFnYWluc3QgZXhwZWN0ZWQgc2l6ZSBhbmQgY29ycmVjdGx5IGluZGV4aW5nIHJlc3AtXHUwMDNlZGF0YS4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgdmlydHVhbCBORkMgZHJpdmVycyAoZS5nLiBuZmNzaW0pIGFuZCBlbXVsYXRlZCBVU0IgTkZDIGRvbmdsZXMgKHBvcnQxMDApLCBtYWtpbmcgaXQgd29ydGggZnV6emluZyBmb3IgYm91bmRhcnkgaXNzdWVzIGFuZCBzdGF0ZSB0cmFuc2l0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMiAxMzoyMzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDEwMjBmMjY5ZTg1NTY2NzE0MGJjMDRmODNhOTY4NDk5MDlhZjc1ZGRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IFNlcCAxMiAxMzoyMzozMCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbmZjL2RpZ2l0YWxfZGVwLmMgYi9uZXQvbmZjL2RpZ2l0YWxfZGVwLmNcbmluZGV4IDM5ODJmYTA4NDczN2YuLmFlNTQwN2ZjYTEyZDQgMTAwNjQ0XG4tLS0gYS9uZXQvbmZjL2RpZ2l0YWxfZGVwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZmMvZGlnaXRhbF9kZXAuY1xuQEAgLTExMTcsMTIgJiM0MzsxMTE3LDEyIEBAIHN0YXRpYyB2b2lkIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcbiBcdHBmYiA9IGRlcF9yZXEtXHUwMDNlcGZiO1xuIFxuIFx0aWYgKERJR0lUQUxfTkZDX0RFUF9ESURfQklUX1NFVChwZmIpKSB7XG4tXHRcdGlmIChkZGV2LVx1MDAzZWRpZCBcdTAwMjZcdTAwMjYgKGRkZXYtXHUwMDNlZGlkID09IHJlc3AtXHUwMDNlZGF0YVszXSkpIHtcbi1cdFx0XHRzaXplJiM0MzsmIzQzOztcbi1cdFx0fSBlbHNlIHtcbiYjNDM7XHRcdGlmIChyZXNwLVx1MDAzZWxlbiBcdTAwM2Mgc2l6ZSAmIzQzOyAxIHx8ICFkZGV2LVx1MDAzZWRpZCB8fFxuJiM0MztcdFx0ICAgIGRkZXYtXHUwMDNlZGlkICE9IHJlc3AtXHUwMDNlZGF0YVtzaXplXSkge1xuIFx0XHRcdHJjID0gLUVJTztcbiBcdFx0XHRnb3RvIGV4aXQ7XG4gXHRcdH1cbiYjNDM7XHRcdHNpemUmIzQzOyYjNDM7O1xuIFx0fSBlbHNlIGlmIChkZGV2LVx1MDAzZWRpZCkge1xuIFx0XHRyYyA9IC1FSU87XG4gXHRcdGdvdG8gZXhpdDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMiAxMzoyMzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4ybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORkMmIzM0OywKICAgICYjMzQ7TkZDX0RJR0lUQUwmIzM0OywKICAgICYjMzQ7TkZDX1NJTSYjMzQ7LAogICAgJiMzNDtORkNfUE9SVDEwMCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxJiMzNDssCiAgICAmIzM0O2RpZ2l0YWxfdGdfc2VuZF9kZXBfcmVzJiMzNDssCiAgICAmIzM0O2RpZ2l0YWxfdGdfcmVjdl9hdHJfcmVxJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGlucHV0IHZhbGlkYXRpb24gaW4gdGhlIE5GQyBkaWdpdGFsIHRhcmdldCBtb2RlIERFUCByZXF1ZXN0IGhhbmRsaW5nIChkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcSkgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIGFjY2VzcyB3aGVuIHRoZSBESUQgYml0IGlzIHNldCBieSB2ZXJpZnlpbmcgZnJhbWUgbGVuZ3RoIGFnYWluc3QgZXhwZWN0ZWQgc2l6ZSBhbmQgY29ycmVjdGx5IGluZGV4aW5nIHJlc3AtXHUwMDNlZGF0YS4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgdmlydHVhbCBORkMgZHJpdmVycyAoZS5nLiBuZmNzaW0pIGFuZCBlbXVsYXRlZCBVU0IgTkZDIGRvbmdsZXMgKHBvcnQxMDApLCBtYWtpbmcgaXQgd29ydGggZnV6emluZyBmb3IgYm91bmRhcnkgaXNzdWVzIGFuZCBzdGF0ZSB0cmFuc2l0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDEwMjBmMjY5ZTg1NTY2NzE0MGJjMDRmODNhOTY4NDk5MDlhZjc1ZGQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IFNlcCAxMiAxMzoyMzozMCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9uZmMvZGlnaXRhbF9kZXAuYyBiL25ldC9uZmMvZGlnaXRhbF9kZXAuYwppbmRleCAzOTgyZmEwODQ3MzdmLi5hZTU0MDdmY2ExMmQ0IDEwMDY0NAotLS0gYS9uZXQvbmZjL2RpZ2l0YWxfZGVwLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25mYy9kaWdpdGFsX2RlcC5jCkBAIC0xMTE3LDEyICYjNDM7MTExNywxMiBAQCBzdGF0aWMgdm9pZCBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB2b2lkICphcmcsCiAJcGZiID0gZGVwX3JlcS0mZ3Q7cGZiOwogCiAJaWYgKERJR0lUQUxfTkZDX0RFUF9ESURfQklUX1NFVChwZmIpKSB7Ci0JCWlmIChkZGV2LSZndDtkaWQgJmFtcDsmYW1wOyAoZGRldi0mZ3Q7ZGlkID09IHJlc3AtJmd0O2RhdGFbM10pKSB7Ci0JCQlzaXplJiM0MzsmIzQzOzsKLQkJfSBlbHNlIHsKJiM0MzsJCWlmIChyZXNwLSZndDtsZW4gJmx0OyBzaXplICYjNDM7IDEgfHwgIWRkZXYtJmd0O2RpZCB8fAomIzQzOwkJICAgIGRkZXYtJmd0O2RpZCAhPSByZXNwLSZndDtkYXRhW3NpemVdKSB7CiAJCQlyYyA9IC1FSU87CiAJCQlnb3RvIGV4aXQ7CiAJCX0KJiM0MzsJCXNpemUmIzQzOyYjNDM7OwogCX0gZWxzZSBpZiAoZGRldi0mZ3Q7ZGlkKSB7CiAJCXJjID0gLUVJTzsKIAkJZ290byBleGl0Owo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMiAxMzoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTU5CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogNDYxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlRyaWFnZSBvZiBgbmV0L25mYy9kaWdpdGFsX2RlcC5jYCBQYXRjaCBmb3IgU3l6a2FsbGVyIEZ1enppbmcqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IGEgcGF0Y2ggZm9yIGBuZXQvbmZjL2RpZ2l0YWxfZGVwLmNgIGFuZCBteSBnb2FsIGlzIHRvIGZpZ3VyZSBvdXQgaWYgaXQmIzM5O3Mgd29ydGggdGhyb3dpbmcgYXQgc3l6a2FsbGVyLiBGaXJzdCwgbGV0JiMzOTtzIGRvIGEgcXVpY2sgcmlzayBhc3Nlc3NtZW50LiBUaGlzIGlzIGp1c3Qgcm91dGluZSBrZXJuZWwgY29kZSByZXZpZXcsIGxvb2tpbmcgZm9yIHBvdGVudGlhbCBidWdzIHRvIGZlZWQgaW50byB0aGUgZnV6emluZyBwaXBlbGluZSDigJMgcHVyZWx5IGRlZmVuc2l2ZSBzZWN1cml0eSBzdHVmZiwgbm8gbmVmYXJpb3VzIGludGVudCBoZXJlLiBJJiMzOTttIGp1c3QgYW5hbHl6aW5nIGEgY29kZSBjaGFuZ2UgYW5kIGFzc2Vzc2luZyBpdHMgcG90ZW50aWFsIGZvciBleHBsb2l0YXRpb24gdGhyb3VnaCBmdXp6aW5nLiBUaGF0IHNlZW1zIHRvdGFsbHkgYmVuaWduIGFuZCBmYWxscyBzcXVhcmVseSB3aXRoaW4gbXkgcmVtaXQuCgpOb3csIGxldCYjMzk7cyBkaXZlIGludG8gdGhlIHBhdGNoIGl0c2VsZi4gSXQgbG9va3MgbGlrZSB3ZSYjMzk7dmUgZ290IGEgY2hhbmdlIGluIGBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcWAuIFRoZSBvcmlnaW5hbCBjaGVjayB3YXMgY29tcGFyaW5nIGEgZGV2aWNlIElEIChgZGRldi0mZ3Q7ZGlkYCkgd2l0aCBgcmVzcC0mZ3Q7ZGF0YVszXWAgd2hlbiB0aGUgYERJR0lUQUxfTkZDX0RFUF9ESURfQklUX1NFVGAgaXMgdHJ1ZS4gVGhlIHBhdGNoIGhhcyBjaGFuZ2VkIHRoYXQgY2hlY2suIEl0IG5vdyBjaGVja3MgdGhlIGxlbmd0aCBgcmVzcC0mZ3Q7bGVuYCBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gYHNpemUmIzQzOzFgLiBJdCBhbHNvIGNoZWNrcyBpZiBhIGRldmljZSBJRCBgZGRldi0mZ3Q7ZGlkYCBleGlzdHMsIGFuZCBpZiBpdCBkb2VzLCBpdCBjaGVja3MgdGhhdCB0aGUgZXhwZWN0ZWQgRElEIChgZGRldi0mZ3Q7ZGlkYCkgbWF0Y2hlcyBgcmVzcC0mZ3Q7ZGF0YVtzaXplXWAuIElmIGFueSBvZiB0aGVzZSBjaGVja3MgZmFpbCwgaXQgcmV0dXJucyBhbiBgRUlPYCBlcnJvci4gU28gd2UgaGF2ZSBtb3JlIGNvbXByZWhlbnNpdmUgY2hlY2tzLgoKVGhlIGtleSBoZXJlIGlzIHVuZGVyc3RhbmRpbmcgdGhlIGNvbnRleHQgb2YgdGhhdCBmdW5jdGlvbiwgYGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCYjMzk7cyBnb2luZyBvbiAqYXJvdW5kKiB0aGlzIGNvZGUuIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgZnVuY3Rpb24gZG9lcyAtIHdoaWNoIEkgY2FuIGRvIHVzaW5nIG15IHRydXN0eSB0b29scy4gSSYjMzk7bGwgdXNlIGVpdGhlciBgcmVhZC1maWxlYCBvciBgZ3JlcHBlcmAgdG8gc2VlIGhvdyB0aGUgZnVuY3Rpb24gaXMgdXNlZCwgd2hhdCBkYXRhIHN0cnVjdHVyZXMgaXQgb3BlcmF0ZXMgb24sIGFuZCB3aGF0IHRoZSBvdmVyYWxsIGZsb3cgaXMuIFRoYXQmIzM5O2xsIHByb3ZpZGUgdGhlIG5lY2Vzc2FyeSBjb250ZXh0IHRvIGRldGVybWluZSBpZiB0aGlzIHBhdGNoIGlzIGFjdHVhbGx5IGludGVyZXN0aW5nIGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLCBhbmQgaWRlbnRpZnkgY3JpdGljYWwgY29kZSBwYXRocyBhbmQgcG90ZW50aWFsIGZvY3VzIHN5bWJvbHMgZm9yIHN5emthbGxlci4gQWZ0ZXIgdGhpcywgSSBuZWVkIHRvIGNvbWUgdXAgd2l0aCBzb21lIHJlYXNvbmluZyB0byBleHBsYWluIHRoaXMgZGVjaXNpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTIgMTM6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvbmZjL2RpZ2l0YWxfZGVwLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMTAwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzExMDA6XHRcdFx0Z290byBleGl0O1xuMTEwMTpcdFx0fVxuMTEwMjpcdFxuMTEwMzpcdFx0aWYgKHJlc3AtXHUwMDNlbGVuIFx1MDAzZSBkZGV2LVx1MDAzZWxvY2FsX3BheWxvYWRfbWF4KSB7XG4xMTA0Olx0XHRcdHJjID0gLUVNU0dTSVpFO1xuMTEwNTpcdFx0XHRnb3RvIGV4aXQ7XG4xMTA2Olx0XHR9XG4xMTA3Olx0XG4xMTA4Olx0XHRzaXplID0gc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKTtcbjExMDk6XHRcdGRlcF9yZXEgPSAoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKilyZXNwLVx1MDAzZWRhdGE7XG4xMTEwOlx0XG4xMTExOlx0XHRpZiAocmVzcC1cdTAwM2VsZW4gXHUwMDNjIHNpemUgfHwgZGVwX3JlcS1cdTAwM2VkaXIgIT0gRElHSVRBTF9ORkNfREVQX0ZSQU1FX0RJUl9PVVQgfHxcbjExMTI6XHRcdCAgICBkZXBfcmVxLVx1MDAzZWNtZCAhPSBESUdJVEFMX0NNRF9ERVBfUkVRKSB7XG4xMTEzOlx0XHRcdHJjID0gLUVJTztcbjExMTQ6XHRcdFx0Z290byBleGl0O1xuMTExNTpcdFx0fVxuMTExNjpcdFxuMTExNzpcdFx0cGZiID0gZGVwX3JlcS1cdTAwM2VwZmI7XG4xMTE4Olx0XG4xMTE5Olx0XHRpZiAoRElHSVRBTF9ORkNfREVQX0RJRF9CSVRfU0VUKHBmYikpIHtcbjExMjA6XHRcdFx0aWYgKHJlc3AtXHUwMDNlbGVuIFx1MDAzYyBzaXplICYjNDM7IDEgfHwgIWRkZXYtXHUwMDNlZGlkIHx8XG4xMTIxOlx0XHRcdCAgICBkZGV2LVx1MDAzZWRpZCAhPSByZXNwLVx1MDAzZWRhdGFbc2l6ZV0pIHtcbjExMjI6XHRcdFx0XHRyYyA9IC1FSU87XG4xMTIzOlx0XHRcdFx0Z290byBleGl0O1xuMTEyNDpcdFx0XHR9XG4xMTI1Olx0XHRcdHNpemUmIzQzOyYjNDM7O1xuMTEyNjpcdFx0fSBlbHNlIGlmIChkZGV2LVx1MDAzZWRpZCkge1xuMTEyNzpcdFx0XHRyYyA9IC1FSU87XG4xMTI4Olx0XHRcdGdvdG8gZXhpdDtcbjExMjk6XHRcdH1cbjExMzA6XHRcbjExMzE6XHRcdGlmIChESUdJVEFMX05GQ19ERVBfTkFEX0JJVF9TRVQocGZiKSkge1xuMTEzMjpcdFx0XHRyYyA9IC1FSU87XG4xMTMzOlx0XHRcdGdvdG8gZXhpdDtcbjExMzQ6XHRcdH1cbjExMzU6XHRcbjExMzY6XHRcdGlmIChzaXplIFx1MDAzZSByZXNwLVx1MDAzZWxlbikge1xuMTEzNzpcdFx0XHRyYyA9IC1FSU87XG4xMTM4Olx0XHRcdGdvdG8gZXhpdDtcbjExMzk6XHRcdH1cbjExNDA6XHRcbjExNDE6XHRcdHNrYl9wdWxsKHJlc3AsIHNpemUpO1xuMTE0MjpcdFxuMTE0MzpcdFx0c3dpdGNoIChESUdJVEFMX05GQ19ERVBfUEZCX1RZUEUocGZiKSkge1xuMTE0NDpcdFx0Y2FzZSBESUdJVEFMX05GQ19ERVBfUEZCX0lfUERVOlxuMTE0NTpcdFx0XHRwcl9kZWJ1ZyhcJiMzNDtESUdJVEFMX05GQ19ERVBfUEZCX0lfUERVXFxuXCYjMzQ7KTtcbjExNDY6XHRcbjExNDc6XHRcdFx0aWYgKGRkZXYtXHUwMDNlYXRuX2NvdW50KSB7XG4xMTQ4Olx0XHRcdFx0LyogVGhlIHRhcmdldCBoYXMgcmVjZWl2ZWQgKGFuZCByZXBsaWVkIHRvKSBhdCBsZWFzdCBvbmVcbjExNDk6XHRcdFx0XHQgKiBBVE4gREVQX1JFUS5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMiAxMzoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NjI0CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMTcxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgVGhvdWdodHMgb24gTkZDIEZ1enppbmcgaW4gU3l6a2FsbGVyKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgbmV0L25mYy9kaWdpdGFsX2RlcC5jYCwgd2hpY2ggSSBrbm93IGlzIHBhcnQgb2YgdGhlIE5GQyBEaWdpdGFsIFByb3RvY29sIHdpdGhpbiB0aGUgTkZDIHN1YnN5c3RlbS4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzOiBjYW4gd2UgZXZlbiAqcmVhY2gqIE5GQyB3aXRoaW4gdGhlIHN0YW5kYXJkIFN5emthbGxlciBzZXR1cCBvciBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBJJiMzOTttIHRoaW5raW5nIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lLCB0eXBpY2FsIGZ1enppbmcgc2NlbmFyaW9zLgoKSG9sZCBvbiwgSSB2YWd1ZWx5IHJlY2FsbCBzb21lIG1lbnRpb24gb2YgTkZDIGZ1enppbmcgaW4gU3l6a2FsbGVyLiBMZXQmIzM5O3MgY29uZmlybSAtIGRvZXMgU3l6a2FsbGVyIGFjdHVhbGx5IHN1cHBvcnQgTkZDLCBvciBhbSBJIG1pc3Rha2VuPyBJZiBzbywgd2hhdCBkcml2ZXJzIG9yIGludGVyZmFjZXMgZW5hYmxlIHRoaXMgc3VwcG9ydD8KCk15IG1pbmQgaXMgcmFjaW5nIHRocm91Z2ggcG9zc2liaWxpdGllcy4gSSYjMzk7bSB0aGlua2luZyBvZiBkcml2ZXJzIGxpa2UgYG5mY3NpbWAgKHRoYXQmIzM5O3MgdGhlIE5GQyBzaW11bGF0b3IgZHJpdmVyLCByaWdodD8gYGRyaXZlcnMvbmZjL25mY3NpbS5jYCksIHZpcnR1YWwgTkZDIGludGVyZmFjZXMsIHJhdyBzb2NrZXRzLCBOZXRsaW5rLCBhbmQgZXZlbiB0aGF0IGNsZXZlciBwbjUzMyBVU0IgZW11bGF0aW9uIHRocm91Z2ggdGhlIHN5emthbGxlciBVU0IgcmF3IGdhZGdldC4gTm93IEkgaGF2ZSB0byBnbyB0aHJvdWdoIGBuZmNzaW1gIG9yIG90aGVyIHZpcnR1YWwgZHJpdmVycyBmcm9tIHRoZSBrZXJuZWwgdHJlZSBmb3IgbW9yZSBpbnNpZ2h0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMiAxMzoyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZmNfZGlnaXRhbF9kZXYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25mYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25mYy9uZmNzaW0uYy0xNS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jOjE2OiNkZWZpbmUgTkZDU0lNX0VSUihkLCBmbXQsIGFyZ3MuLi4pIG5mY19lcnIoXHUwMDI2ZC1cdTAwM2VuZmNfZGlnaXRhbF9kZXYtXHUwMDNlbmZjX2Rldi1cdTAwM2VkZXYsIFxcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0xNy1cdFx0XHRcdFx0ICAgIFwmIzM0OyVzOiBcJiMzNDsgZm10LCBfX2Z1bmNfXywgIyMgYXJncylcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTE4LVxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MTk6I2RlZmluZSBORkNTSU1fREJHKGQsIGZtdCwgYXJncy4uLikgZGV2X2RiZyhcdTAwMjZkLVx1MDAzZW5mY19kaWdpdGFsX2Rldi1cdTAwM2VuZmNfZGV2LVx1MDAzZWRldiwgXFxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTIwLVx0XHRcdFx0XHQgICAgXCYjMzQ7JXM6IFwmIzM0OyBmbXQsIF9fZnVuY19fLCAjIyBhcmdzKVxuLS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jPTMxPXN0cnVjdCBuZmNzaW0ge1xuZHJpdmVycy9uZmMvbmZjc2ltLmM6MzI6XHRzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpuZmNfZGlnaXRhbF9kZXY7XG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zMy1cbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYz0xODI9c3RhdGljIHZvaWQgbmZjc2ltX3JlY3Zfd3Eoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTE5Ny1cbmRyaXZlcnMvbmZjL25mY3NpbS5jOjE5ODpcdGRldi1cdTAwM2VjYihkZXYtXHUwMDNlbmZjX2RpZ2l0YWxfZGV2LCBkZXYtXHUwMDNlYXJnLCBza2IpO1xuZHJpdmVycy9uZmMvbmZjc2ltLmMtMTk5LX1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTIwMC1cbmRyaXZlcnMvbmZjL25mY3NpbS5jOjIwMTpzdGF0aWMgaW50IG5mY3NpbV9zZW5kKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHN0cnVjdCBza19idWZmICpza2IsXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yMDItXHRcdCAgICAgICB1MTYgdGltZW91dCwgbmZjX2RpZ2l0YWxfY21kX2NvbXBsZXRlX3QgY2IsIHZvaWQgKmFyZylcbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yMzktXG5kcml2ZXJzL25mYy9uZmNzaW0uYzoyNDA6c3RhdGljIHZvaWQgbmZjc2ltX2Fib3J0X2NtZChzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2KVxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjQxLXtcbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yNDYtXG5kcml2ZXJzL25mYy9uZmNzaW0uYzoyNDc6c3RhdGljIGludCBuZmNzaW1fc3dpdGNoX3JmKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIGJvb2wgb24pXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yNDgte1xuLS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTI1NS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jOjI1NjpzdGF0aWMgaW50IG5mY3NpbV9pbl9jb25maWd1cmVfaHcoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTI1Ny1cdFx0XHRcdFx0ICBpbnQgdHlwZSwgaW50IHBhcmFtKVxuLS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTI3OC1cbmRyaXZlcnMvbmZjL25mY3NpbS5jOjI3OTpzdGF0aWMgaW50IG5mY3NpbV9pbl9zZW5kX2NtZChzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjgwLVx0XHRcdCAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MTYgdGltZW91dCxcbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yODUtXG5kcml2ZXJzL25mYy9uZmNzaW0uYzoyODY6c3RhdGljIGludCBuZmNzaW1fdGdfY29uZmlndXJlX2h3KHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yODctXHRcdFx0XHRcdCAgaW50IHR5cGUsIGludCBwYXJhbSlcbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zMDgtXG5kcml2ZXJzL25mYy9uZmNzaW0uYzozMDk6c3RhdGljIGludCBuZmNzaW1fdGdfc2VuZF9jbWQoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTMxMC1cdFx0XHQgICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTE2IHRpbWVvdXQsXG4tLVxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzE1LVxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MzE2OnN0YXRpYyBpbnQgbmZjc2ltX3RnX2xpc3RlbihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB1MTYgdGltZW91dCxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTMxNy1cdFx0XHQgICAgbmZjX2RpZ2l0YWxfY21kX2NvbXBsZXRlX3QgY2IsIHZvaWQgKmFyZylcbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYz0zNDY9c3RhdGljIHZvaWQgbmZjc2ltX2RlYnVnZnNfaW5pdF9kZXYoc3RydWN0IG5mY3NpbSAqZGV2KVxuLS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTM1Ny1cbmRyaXZlcnMvbmZjL25mY3NpbS5jOjM1ODpcdGlkeCA9IGRldi1cdTAwM2VuZmNfZGlnaXRhbF9kZXYtXHUwMDNlbmZjX2Rldi1cdTAwM2VpZHg7XG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zNTktXHRuID0gc25wcmludGYoZGV2bmFtZSwgc2l6ZW9mKGRldm5hbWUpLCBcJiMzNDtuZmMlZFwmIzM0OywgaWR4KTtcbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYz0zNzA9c3RhdGljIHN0cnVjdCBuZmNzaW0gKm5mY3NpbV9kZXZpY2VfbmV3KHN0cnVjdCBuZmNzaW1fbGluayAqbGlua19pbixcbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zODItXG5kcml2ZXJzL25mYy9uZmNzaW0uYzozODM6XHRkZXYtXHUwMDNlbmZjX2RpZ2l0YWxfZGV2ID1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTM4NC1cdFx0XHRuZmNfZGlnaXRhbF9hbGxvY2F0ZV9kZXZpY2UoXHUwMDI2bmZjc2ltX2RpZ2l0YWxfb3BzLFxuLS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTM4Ny1cdFx0XHRcdFx0XHQgICAgMCwgMCk7XG5kcml2ZXJzL25mYy9uZmNzaW0uYzozODg6XHRpZiAoIWRldi1cdTAwM2VuZmNfZGlnaXRhbF9kZXYpIHtcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTM4OS1cdFx0a2ZyZWUoZGV2KTtcbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zOTItXG5kcml2ZXJzL25mYy9uZmNzaW0uYzozOTM6XHRuZmNfZGlnaXRhbF9zZXRfZHJ2ZGF0YShkZXYtXHUwMDNlbmZjX2RpZ2l0YWxfZGV2LCBkZXYpO1xuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzk0LVxuLS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTM5Ny1cbmRyaXZlcnMvbmZjL25mY3NpbS5jOjM5ODpcdHJjID0gbmZjX2RpZ2l0YWxfcmVnaXN0ZXJfZGV2aWNlKGRldi1cdTAwM2VuZmNfZGlnaXRhbF9kZXYpO1xuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzk5LVx0aWYgKHJjKSB7XG5kcml2ZXJzL25mYy9uZmNzaW0uYy00MDAtXHRcdHByX2VycihcJiMzNDtDb3VsZCBub3QgcmVnaXN0ZXIgZGlnaXRhbCBkZXZpY2UgKCVkKVxcblwmIzM0OywgcmMpO1xuZHJpdmVycy9uZmMvbmZjc2ltLmM6NDAxOlx0XHRuZmNfZGlnaXRhbF9mcmVlX2RldmljZShkZXYtXHUwMDNlbmZjX2RpZ2l0YWxfZGV2KTtcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQwMi1cdFx0a2ZyZWUoZGV2KTtcbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYz00MTI9c3RhdGljIHZvaWQgbmZjc2ltX2RldmljZV9mcmVlKHN0cnVjdCBuZmNzaW0gKmRldilcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQxMy17XG5kcml2ZXJzL25mYy9uZmNzaW0uYzo0MTQ6XHRuZmNfZGlnaXRhbF91bnJlZ2lzdGVyX2RldmljZShkZXYtXHUwMDNlbmZjX2RpZ2l0YWxfZGV2KTtcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQxNS1cbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYy00MjItXG5kcml2ZXJzL25mYy9uZmNzaW0uYzo0MjM6XHRuZmNfZGlnaXRhbF9mcmVlX2RldmljZShkZXYtXHUwMDNlbmZjX2RpZ2l0YWxfZGV2KTtcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQyNC1cbi0tXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM9NDM5PXN0cnVjdCBwb3J0MTAwIHtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo0NDA6XHRzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpuZmNfZGlnaXRhbF9kZXY7XG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtNDQxLVxuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYz05MzE9c3RhdGljIHZvaWQgcG9ydDEwMF9zZW5kX2NvbXBsZXRlKHN0cnVjdCB1cmIgKnVyYilcbi0tXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtOTU0LVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjk1NTpzdGF0aWMgdm9pZCBwb3J0MTAwX2Fib3J0X2NtZChzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2KVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTk1Ni17XG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jPTEwMjU9c3RhdGljIHUxNiBwb3J0MTAwX2dldF9maXJtd2FyZV92ZXJzaW9uKHN0cnVjdCBwb3J0MTAwICpkZXYpXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEwNDYtXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTA0NzpzdGF0aWMgaW50IHBvcnQxMDBfc3dpdGNoX3JmKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIGJvb2wgb24pXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTA0OC17XG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEwNzEtXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTA3MjpzdGF0aWMgaW50IHBvcnQxMDBfaW5fc2V0X3JmKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHU4IHJmKVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEwNzMte1xuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMTAwLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjExMDE6c3RhdGljIGludCBwb3J0MTAwX2luX3NldF9mcmFtaW5nKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIGludCBwYXJhbSlcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMTAyLXtcbi0tXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTE0Mi1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxMTQzOnN0YXRpYyBpbnQgcG9ydDEwMF9pbl9jb25maWd1cmVfaHcoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgaW50IHR5cGUsXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTE0NC1cdFx0XHRcdCAgIGludCBwYXJhbSlcbi0tXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM9MTE1NT1zdGF0aWMgdm9pZCBwb3J0MTAwX2luX2NvbW1fcmZfY29tcGxldGUoc3RydWN0IHBvcnQxMDAgKmRldiwgdm9pZCAqYXJnLFxuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMjAwLWV4aXQ6XG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTIwMTpcdGNiKGRldi1cdTAwM2VuZmNfZGlnaXRhbF9kZXYsIGNiX2FyZy1cdTAwM2Vjb21wbGV0ZV9hcmcsIHJlc3ApO1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEyMDItXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEyMDUtXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTIwNjpzdGF0aWMgaW50IHBvcnQxMDBfaW5fc2VuZF9jbWQoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMjA3LVx0XHRcdCAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MTYgX3RpbWVvdXQsXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEyMjgtXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTIyOTpzdGF0aWMgaW50IHBvcnQxMDBfdGdfc2V0X3JmKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHU4IHJmKVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEyMzAte1xuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMjU3LVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjEyNTg6c3RhdGljIGludCBwb3J0MTAwX3RnX3NldF9mcmFtaW5nKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIGludCBwYXJhbSlcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMjU5LXtcbi0tXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTI5OS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxMzAwOnN0YXRpYyBpbnQgcG9ydDEwMF90Z19jb25maWd1cmVfaHcoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgaW50IHR5cGUsXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTMwMS1cdFx0XHRcdCAgIGludCBwYXJhbSlcbi0tXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM9MTMzMj1zdGF0aWMgdm9pZCBwb3J0MTAwX3RnX2NvbW1fcmZfY29tcGxldGUoc3RydWN0IHBvcnQxMDAgKmRldiwgdm9pZCAqYXJnLFxuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMzY2LWV4aXQ6XG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTM2NzpcdGNiKGRldi1cdTAwM2VuZmNfZGlnaXRhbF9kZXYsIGNiX2FyZy1cdTAwM2Vjb21wbGV0ZV9hcmcsIHJlc3ApO1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEzNjgtXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEzNzEtXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTM3MjpzdGF0aWMgaW50IHBvcnQxMDBfdGdfc2VuZF9jbWQoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMzczLVx0XHRcdCAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MTYgdGltZW91dCxcbi0tXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTM5OS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxNDAwOnN0YXRpYyBpbnQgcG9ydDEwMF9saXN0ZW5fbWRhYShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE0MDEtXHRcdFx0ICAgICAgIHN0cnVjdCBkaWdpdGFsX3RnX21kYWFfcGFyYW1zICpwYXJhbXMsXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE0NTUtXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTQ1NjpzdGF0aWMgaW50IHBvcnQxMDBfbGlzdGVuKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHUxNiB0aW1lb3V0LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE0NTctXHRcdFx0ICBuZmNfZGlnaXRhbF9jbWRfY29tcGxldGVfdCBjYiwgdm9pZCAqYXJnKVxuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYz0xNDg5PXN0YXRpYyBpbnQgcG9ydDEwMF9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlLFxuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xNTcxLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjE1NzI6XHRkZXYtXHUwMDNlbmZjX2RpZ2l0YWxfZGV2ID0gbmZjX2RpZ2l0YWxfYWxsb2NhdGVfZGV2aWNlKFx1MDAyNnBvcnQxMDBfZGlnaXRhbF9vcHMsXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTU3My1cdFx0XHRcdFx0XHRcdCAgIFBPUlQxMDBfUFJPVE9DT0xTLFxuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xNTc2LVx0XHRcdFx0XHRcdFx0ICAgZGV2LVx1MDAzZXNrYl90YWlscm9vbSk7XG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTU3NzpcdGlmICghZGV2LVx1MDAzZW5mY19kaWdpdGFsX2Rldikge1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE1NzgtXHRcdG5mY19lcnIoXHUwMDI2aW50ZXJmYWNlLVx1MDAzZWRldixcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxNTc5Olx0XHRcdFwmIzM0O0NvdWxkIG5vdCBhbGxvY2F0ZSBuZmNfZGlnaXRhbF9kZXZcXG5cJiMzNDspO1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE1ODAtXHRcdHJjID0gLUVOT01FTTtcbi0tXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTU4My1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxNTg0Olx0bmZjX2RpZ2l0YWxfc2V0X3BhcmVudF9kZXYoZGV2LVx1MDAzZW5mY19kaWdpdGFsX2RldiwgXHUwMDI2aW50ZXJmYWNlLVx1MDAzZWRldik7XG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTU4NTpcdG5mY19kaWdpdGFsX3NldF9kcnZkYXRhKGRldi1cdTAwM2VuZmNfZGlnaXRhbF9kZXYsIGRldik7XG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTU4Ni1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxNTg3Olx0cmMgPSBuZmNfZGlnaXRhbF9yZWdpc3Rlcl9kZXZpY2UoZGV2LVx1MDAzZW5mY19kaWdpdGFsX2Rldik7XG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTU4OC1cdGlmIChyYykge1xuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xNTk2LWZyZWVfbmZjX2RldjpcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxNTk3Olx0bmZjX2RpZ2l0YWxfZnJlZV9kZXZpY2UoZGV2LVx1MDAzZW5mY19kaWdpdGFsX2Rldik7XG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTU5OC1cbi0tXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM9MTYwOD1zdGF0aWMgdm9pZCBwb3J0MTAwX2Rpc2Nvbm5lY3Qoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSlcbi0tXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTYxNC1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxNjE1Olx0bmZjX2RpZ2l0YWxfdW5yZWdpc3Rlcl9kZXZpY2UoZGV2LVx1MDAzZW5mY19kaWdpdGFsX2Rldik7XG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTYxNjpcdG5mY19kaWdpdGFsX2ZyZWVfZGV2aWNlKGRldi1cdTAwM2VuZmNfZGlnaXRhbF9kZXYpO1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE2MTctXG4tLVxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYz0yMTc9c3RydWN0IHN0OTVoZl9jb250ZXh0IHtcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtMjE4LVx0c3RydWN0IHN0OTVoZl9zcGlfY29udGV4dCBzcGljb250ZXh0O1xuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzoyMTk6XHRzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2O1xuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy0yMjAtXHRzdHJ1Y3QgbmZjX2RldiAqbmZjZGV2O1xuLS1cbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM9NTMxPXN0YXRpYyBpbnQgaXNvMTQ0NDNfY29uZmlnX2ZkdChzdHJ1Y3Qgc3Q5NWhmX2NvbnRleHQgKnN0OTVjb250ZXh0LCBpbnQgd3R4bSlcbi0tXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTUzNC1cdHN0cnVjdCBkZXZpY2UgKmRldiA9IFx1MDAyNnN0OTVjb250ZXh0LVx1MDAzZXNwaWNvbnRleHQuc3BpZGV2LVx1MDAzZWRldjtcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6NTM1Olx0c3RydWN0IG5mY19kaWdpdGFsX2RldiAqbmZjZGRldiA9IHN0OTVjb250ZXh0LVx1MDAzZWRkZXY7XG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTUzNi1cdHVuc2lnbmVkIGNoYXIgcHBfdHlwZWI7XG4tLVxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYz02MDI9c3RhdGljIGludCBzdDk1aGZfaGFuZGxlX3d0eChzdHJ1Y3Qgc3Q5NWhmX2NvbnRleHQgKnN0Y29udGV4dCxcbi0tXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTYwOC1cdHN0cnVjdCBwYXJhbV9saXN0IG5ld19wYXJhbXNbMV07XG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jOjYwOTpcdHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKm5mY2RkZXYgPSBzdGNvbnRleHQtXHUwMDNlZGRldjtcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtNjEwLVx0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2c3Rjb250ZXh0LVx1MDAzZW5mY2Rldi1cdTAwM2VkZXY7XG4tLVxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYz02OTM9c3RhdGljIGludCBzdDk1aGZfcmVzcG9uc2VfaGFuZGxlcihzdHJ1Y3Qgc3Q5NWhmX2NvbnRleHQgKnN0Y29udGV4dCxcbi0tXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTY5OS1cdHVuc2lnbmVkIGNoYXIgdmFsX21tO1xuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzo3MDA6XHRzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpuZmNkZGV2ID0gc3Rjb250ZXh0LVx1MDAzZWRkZXY7XG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTcwMS1cdHN0cnVjdCBkZXZpY2UgKmRldiA9IFx1MDAyNnN0Y29udGV4dC1cdTAwM2VuZmNkZXYtXHUwMDNlZGV2O1xuLS1cbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM9NzY2PXN0YXRpYyBpcnFyZXR1cm5fdCBzdDk1aGZfaXJxX3RocmVhZF9oYW5kbGVyKGludCBpcnEsIHZvaWQgICpzdDk1aGZjb250ZXh0KVxuLS1cbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtODY4LS8qIE5GQyBvcHMgZnVuY3Rpb25zIGRlZmluaXRpb24gKi9cbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6ODY5OnN0YXRpYyBpbnQgc3Q5NWhmX2luX2NvbmZpZ3VyZV9odyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy04NzAtXHRcdFx0XHQgIGludCB0eXBlLFxuLS1cbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM9OTAxPXN0YXRpYyBpbnQgcmZfb2ZmKHN0cnVjdCBzdDk1aGZfY29udGV4dCAqc3Rjb250ZXh0KVxuLS1cbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtOTE0LVxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzo5MTU6c3RhdGljIGludCBzdDk1aGZfaW5fc2VuZF9jbWQoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtOTE2LVx0XHRcdCAgICAgIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy05ODgtLyogcDJwIHdpbGwgYmUgc3VwcG9ydGVkIGluIGEgbGF0ZXIgcmVsZWFzZSAhICovXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jOjk4OTpzdGF0aWMgaW50IHN0OTVoZl90Z19jb25maWd1cmVfaHcoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtOTkwLVx0XHRcdFx0ICBpbnQgdHlwZSxcbi0tXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTk5NS1cbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6OTk2OnN0YXRpYyBpbnQgc3Q5NWhmX3RnX3NlbmRfY21kKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTk5Ny1cdFx0XHQgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtMTAwNC1cbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6MTAwNTpzdGF0aWMgaW50IHN0OTVoZl90Z19saXN0ZW4oc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtMTAwNi1cdFx0XHQgICAgdTE2IHRpbWVvdXQsXG4tLVxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy0xMDEyLVxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzoxMDEzOnN0YXRpYyBpbnQgc3Q5NWhmX3RnX2dldF9yZl90ZWNoKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHU4ICpyZl90ZWNoKVxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy0xMDE0LXtcbi0tXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTEwMTctXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jOjEwMTg6c3RhdGljIGludCBzdDk1aGZfc3dpdGNoX3JmKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIGJvb2wgb24pXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTEwMTkte1xuLS1cbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtMTAzMy0vKiBUT0RPIHN0OTVoZl9hYm9ydF9jbWQgKi9cbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6MTAzNDpzdGF0aWMgdm9pZCBzdDk1aGZfYWJvcnRfY21kKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYpXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTEwMzUte1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM9NDMwPXN0cnVjdCB0cmY3OTcwYSB7XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy00MzUtXHRzdHJ1Y3QgcmVndWxhdG9yXHRcdCp2ZGRpb19yZWd1bGF0b3I7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjQzNjpcdHN0cnVjdCBuZmNfZGlnaXRhbF9kZXZcdFx0KmRkZXY7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTQzNy1cdHUzMlx0XHRcdFx0cXVpcmtzO1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM9MTE0Nz1zdGF0aWMgaW50IHRyZjc5NzBhX3N3aXRjaF9yZl9vbihzdHJ1Y3QgdHJmNzk3MGEgKnRyZilcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExNzEtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjExNzI6c3RhdGljIGludCB0cmY3OTcwYV9zd2l0Y2hfcmYoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgYm9vbCBvbilcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTE3My17XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYz0xMzEyPXN0YXRpYyBpbnQgdHJmNzk3MGFfaW5fY29uZmlnX2ZyYW1pbmcoc3RydWN0IHRyZjc5NzBhICp0cmYsIGludCBmcmFtaW5nKVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTM4Ni1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTM4NzpzdGF0aWMgaW50IHRyZjc5NzBhX2luX2NvbmZpZ3VyZV9odyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBpbnQgdHlwZSxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTM4OC1cdFx0XHRcdCAgICBpbnQgcGFyYW0pXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYz0xNDM5PXN0YXRpYyBpbnQgdHJmNzk3MGFfcGVyX2NtZF9jb25maWcoc3RydWN0IHRyZjc5NzBhICp0cmYsXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNTA3LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNTA4OnN0YXRpYyBpbnQgdHJmNzk3MGFfc2VuZF9jbWQoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTUwOS1cdFx0XHQgICAgIHN0cnVjdCBza19idWZmICpza2IsIHUxNiB0aW1lb3V0LFxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM9MTY3MD1zdGF0aWMgaW50IHRyZjc5NzBhX3RnX2NvbmZpZ19mcmFtaW5nKHN0cnVjdCB0cmY3OTcwYSAqdHJmLCBpbnQgZnJhbWluZylcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE3MjgtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE3Mjk6c3RhdGljIGludCB0cmY3OTcwYV90Z19jb25maWd1cmVfaHcoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgaW50IHR5cGUsXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE3MzAtXHRcdFx0XHQgICAgaW50IHBhcmFtKVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTc2NC1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTc2NTpzdGF0aWMgaW50IF90cmY3OTcwYV90Z19saXN0ZW4oc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdTE2IHRpbWVvdXQsXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE3NjYtXHRcdFx0ICAgICAgIG5mY19kaWdpdGFsX2NtZF9jb21wbGV0ZV90IGNiLCB2b2lkICphcmcsXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xODQzLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxODQ0OnN0YXRpYyBpbnQgdHJmNzk3MGFfdGdfbGlzdGVuKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHUxNiB0aW1lb3V0LFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xODQ1LVx0XHRcdCAgICAgIG5mY19kaWdpdGFsX2NtZF9jb21wbGV0ZV90IGNiLCB2b2lkICphcmcpXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xODU0LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxODU1OnN0YXRpYyBpbnQgdHJmNzk3MGFfdGdfbGlzdGVuX21kKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE4NTYtXHRcdFx0XHQgdTE2IHRpbWVvdXQsIG5mY19kaWdpdGFsX2NtZF9jb21wbGV0ZV90IGNiLFxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTg3Ny1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTg3ODpzdGF0aWMgaW50IHRyZjc5NzBhX3RnX2dldF9yZl90ZWNoKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHU4ICpyZl90ZWNoKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xODc5LXtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE4ODktXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE4OTA6c3RhdGljIHZvaWQgdHJmNzk3MGFfYWJvcnRfY21kKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE4OTEte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEyIDEzOjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExNjc2CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTAyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgVGhvdWdodHMgb24gTkZDIERyaXZlciBJbnZlc3RpZ2F0aW9uKioKCk9rYXksIHNvIEkmIzM5O3ZlIHNwb3R0ZWQgYHBvcnQxMDBgLiBSaWdodCwgdGhhdCYjMzk7cyBhIFVTQiBORkMgZHJpdmVyLiBHb29kLiBJIHNlZSBpdHMgcHJvYmUgZnVuY3Rpb24sIGBwb3J0MTAwX3Byb2JlYC4gVGhhdCYjMzk7cyB0aGUgZW50cnkgcG9pbnQgdG8gaG93IGl0IGhhbmRsZXMgaXRzIGZ1bmN0aW9uYWxpdHkuIEltbWVkaWF0ZWx5LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IGVtdWxhdGlvbiBzdHJhdGVnaWVzLiBVU0IgZHJpdmVycyBhcmUgb2Z0ZW4gcmlwZSBmb3IgZnV6emluZywgYW5kIEkga25vdyB0aGF0IHN5emthbGxlciBoYXMgdGhhdCByYXcgZ2FkZ2V0IHNldHVwLCB0aGUgYGR1bW15X2hjZGAgYW5kIGByYXdfZ2FkZ2V0YCBzdHVmZi4gVGhhdCBjb3VsZCBiZSBhIGRpcmVjdCBsaW5lIHRvIG1hbmlwdWxhdGUgdGhlIGRyaXZlciB3aXRob3V0IG5lZWRpbmcgYWN0dWFsIGhhcmR3YXJlLiBJIHNob3VsZCBwcm9iYWJseSBhbHNvIGNvbnNpZGVyIGludGVyYWN0aW5nIHdpdGggb3IgZXZlbiBjcmVhdGluZyBhbiBgbmZjc2ltYCBpbnN0YW5jZSBhcyBhbm90aGVyIGF2ZW51ZSBmb3IgdGVzdGluZy4KCkZ1cnRoZXJtb3JlLCBteSBtaW5kIGp1bXBzIHRvIGludmVzdGlnYXRpbmcgaG93IHRoZSBkcml2ZXImIzM5O3MgaW5uZXIgd29ya2luZ3MgYXJlIHVzZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkYXRhIGZsb3csIGFuZCBzcGVjaWZpY2FsbHksIEkmIzM5O20gY3VyaW91cyBhYm91dCB0aGUgZnVuY3Rpb24gYGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxYC4gSG93IGlzIHRoaXMgZnVuY3Rpb24gYWN0dWFsbHkgKnVzZWQqPyBXaGF0IGFyZSB0aGUgY2FsbGluZyBjb250ZXh0cz8gTGV0JiMzOTtzIHRyYWNlIGJhY2sgdGhlIGNhbGxlcnMgb2YgdGhpcyBmdW5jdGlvbi4gVW5kZXJzdGFuZGluZyBpdHMgaW50ZXJhY3Rpb24gd2l0aCB0aGUgZHJpdmVyIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciBncmFzcCBvZiB0aGUgcG90ZW50aWFsIGF0dGFjayBzdXJmYWNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEyIDEzOjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25mYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmZjL2RpZ2l0YWxfZGVwLmM9MTA2PXN0YXRpYyB2b2lkIGRpZ2l0YWxfaW5fcmVjdl9kZXBfcmVzKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDctXHRcdFx0XHQgICAgc3RydWN0IHNrX2J1ZmYgKnJlc3ApO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwODpzdGF0aWMgdm9pZCBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB2b2lkICphcmcsXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTA5LVx0XHRcdFx0ICAgIHN0cnVjdCBza19idWZmICpyZXNwKTtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9OTc4PXN0YXRpYyBpbnQgZGlnaXRhbF90Z19zZW5kX2FjayhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDEyLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwMTM6XHRyYyA9IGRpZ2l0YWxfdGdfc2VuZF9jbWQoZGRldiwgc2tiLCAxNTAwLCBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcSxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDE0LVx0XHRcdFx0IGRhdGFfZXhjaCk7XG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTEwMjQ9c3RhdGljIGludCBkaWdpdGFsX3RnX3NlbmRfYXRuKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYpXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwNTEtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTA1MjpcdHJjID0gZGlnaXRhbF90Z19zZW5kX2NtZChkZGV2LCBza2IsIDE1MDAsIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxLFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwNTMtXHRcdFx0XHQgTlVMTCk7XG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTEwNjA9c3RhdGljIGludCBkaWdpdGFsX3RnX3NlbmRfc2F2ZWRfc2tiKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYpXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwNjktXHRyYyA9IGRpZ2l0YWxfdGdfc2VuZF9jbWQoZGRldiwgZGRldi1cdTAwM2VzYXZlZF9za2IsIDE1MDAsXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTA3MDpcdFx0XHRcdCBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcSwgTlVMTCk7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTA3MS1cdGlmIChyYylcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTA3Ni1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDc3OnN0YXRpYyB2b2lkIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDc4LVx0XHRcdFx0ICAgIHN0cnVjdCBza19idWZmICpyZXNwKVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz0xMjk3PWludCBkaWdpdGFsX3RnX3NlbmRfZGVwX3JlcyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzMxLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEzMzI6XHRyYyA9IGRpZ2l0YWxfdGdfc2VuZF9jbWQoZGRldiwgdG1wX3NrYiwgMTUwMCwgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEsXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTMzMy1cdFx0XHRcdCBOVUxMKTtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9MTM0OD1zdGF0aWMgdm9pZCBkaWdpdGFsX3RnX3NlbmRfcHNsX3Jlc19jb21wbGV0ZShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzU5LVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEzNjA6XHRkaWdpdGFsX3RnX2xpc3RlbihkZGV2LCAxNTAwLCBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcSwgTlVMTCk7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTM2MS1cbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9MTQ2Nz1zdGF0aWMgdm9pZCBkaWdpdGFsX3RnX3NlbmRfYXRyX3Jlc19jb21wbGV0ZShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xNDg1LVx0ZWxzZVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjE0ODY6XHRcdGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxKGRkZXYsIGFyZywgcmVzcCk7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTQ4Ny19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTIgMTM6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMwNzMKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAzMDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaDogTkZDIERJRCBIYW5kbGluZyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNvcmUgbG9naWMgb2YgdGhpcyBwYXRjaC4gSXQgYXBwZWFycyB0byBiZSByZWxhdGVkIHRvIGhhbmRsaW5nIHRoZSBEZXZpY2UgSUQgKERJRCkgZmllbGQgd2l0aGluIHRoZSBORkMgRGlnaXRhbCBERVAgcHJvdG9jb2wuIEkmIzM5O20gZm9jdXNpbmcgb24gdGhlIGNoYW5nZXMgbWFkZSB0byB0aGUgYHBmYmAgdmFyaWFibGUgYW5kIHRoZSBjb25kaXRpb25hbCBsb2dpYyBzdXJyb3VuZGluZyB0aGUgYGRkZXYtJmd0O2RpZGAgY2hlY2suCgpMb29raW5nIGF0IHRoZSBvcmlnaW5hbCBjb2RlIGFuZCB0aGUgcGF0Y2ggc2lkZS1ieS1zaWRlIHJlYWxseSBoZWxwcy4gSW4gdGhlIG9yaWdpbmFsLCBpdCBzZWVtcyB0aGVyZSYjMzk7cyBhbiBleHBsaWNpdCBjaGVjazogaWYgYSBESUQgYml0IGlzIHNldCwgYW5kIGlmIGBkZGV2LSZndDtkaWRgICpleGlzdHMqIGFuZCBtYXRjaGVzIGByZXNwLSZndDtkYXRhWzNdYCwgdGhlbiB0aGUgc2l6ZSBpcyBpbmNyZW1lbnRlZC4gVGhlIHBhdGNoIHNlZW1zIHRvIGJlIHVwZGF0aW5nIGhvdyB0aGlzIHNpemUgaW5jcmVtZW50IGFuZCBlcnJvciBjb25kaXRpb24gaXMgaGFuZGxlZC4KClRoZSBuZXcgY29kZSBoYXMgc29tZSBjb25kaXRpb25zOiAKMS4gYHJlc3AtJmd0O2xlbiAmbHQ7IHNpemUgJiM0MzsgMWA6IGNoZWNrcyBpZiB0aGUgcmVzcG9uc2UgaXMgYmlnIGVub3VnaAoyLiBgIWRkZXYtJmd0O2RpZGA6IGNoZWNrcyBpZiB0aGVyZSBpcyBubyBgZGRldi0mZ3Q7ZGlkYAozLiBgZGRldi0mZ3Q7ZGlkICE9IHJlc3AtJmd0O2RhdGFbc2l6ZV1gOiBjb21wYXJlcyBgZGRldi0mZ3Q7ZGlkYCB0byB3aGF0JiMzOTtzIGluIHRoZSByZXNwb25zZSBkYXRhCgpJJiMzOTttIHN0YXJ0aW5nIHRvIGdldCBpdC4gVGhlIHBhdGNoIHRpZ2h0ZW5zIHRoZSBlcnJvciBjb25kaXRpb25zIHRvIHByZXZlbnQgYSBwb3RlbnRpYWwgYnVmZmVyIHVuZGVyZmxvdyBvciBpbmNvcnJlY3QgRElEIGNvbXBhcmlzb24uIFRoZSBpbXBvcnRhbnQgYml0IGlzIHRvIGNoZWNrIHRoZSBgcmVzcC0mZ3Q7bGVuYCBmaWVsZC4gQWxzbywgdGhlIHBhdGNoIGFwcGVhcnMgdG8gc2ltcGxpZnkgdGhlIGxvZ2ljIGJ5IGNvbWJpbmluZyB0aGUgZXhpc3RlbmNlIGFuZCB0aGUgY29tcGFyaXNvbiBvZiBgZGRldi0mZ3Q7ZGlkYC4KCldhaXQsIGJhY2sgdXAuIEkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUgYWJvdXQgdGhhdCBpbmRleGluZy4gTGV0JiMzOTtzIGxvb2sgdXAgYHNpemVvZihzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcylgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgc3RydWN0dXJlIGxvb2tzIGxpa2UgdG8ga25vdyB0aGUgb2Zmc2V0cyBhbmQgd2hlcmUgdGhlIERJRCBpcyBleHBlY3RlZCB0byByZXNpZGUgaW4gdGhlIGJ1ZmZlci4gVGhhdCBgc2l6ZWAgdmFyaWFibGUgaXMgYSBjcml0aWNhbCBwaWVjZSBvZiB0aGUgcHV6emxlIGhlcmUsIGFuZCB0aGUgY2hhbmdlcyB0byB0aGUgb3JpZ2luYWwgYGlmYCBzdGF0ZW1lbnRzIGRlcGVuZHMgb24gaXQhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEyIDEzOjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25mYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmZjL2RpZ2l0YWxfZGVwLmM9OTQ9c3RydWN0IGRpZ2l0YWxfcHNsX3JlcyB7XG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTk5LVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwMDpzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyB7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTAxLVx0dTggZGlyO1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz0yMDA9ZGlnaXRhbF9zZW5kX2RlcF9kYXRhX3ByZXAoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoyMDE6XHRcdFx0ICAgc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKmRlcF9yZXFfcmVzLFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTIwMi1cdFx0XHQgICBzdHJ1Y3QgZGlnaXRhbF9kYXRhX2V4Y2ggKmRhdGFfZXhjaClcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9NTI5PXN0YXRpYyBpbnQgZGlnaXRhbF9pbl9zZW5kX2FjayhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01MzEte1xubmV0L25mYy9kaWdpdGFsX2RlcC5jOjUzMjpcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVxO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTUzMy1cdHN0cnVjdCBza19idWZmICpza2I7XG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTUzOS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo1NDA6XHRza2JfcHVzaChza2IsIHNpemVvZihzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcykpO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTU0MS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo1NDI6XHRkZXBfcmVxID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopc2tiLVx1MDAzZWRhdGE7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNTQzLVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz01NjY9c3RhdGljIGludCBkaWdpdGFsX2luX3NlbmRfbmFjayhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01Njgte1xubmV0L25mYy9kaWdpdGFsX2RlcC5jOjU2OTpcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVxO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTU3MC1cdHN0cnVjdCBza19idWZmICpza2I7XG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTU3Ni1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo1Nzc6XHRza2JfcHVzaChza2IsIHNpemVvZihzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcykpO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTU3OC1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo1Nzk6XHRkZXBfcmVxID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopc2tiLVx1MDAzZWRhdGE7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNTgwLVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz01OTg9c3RhdGljIGludCBkaWdpdGFsX2luX3NlbmRfYXRuKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTYwMC17XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NjAxOlx0c3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKmRlcF9yZXE7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjAyLVx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjA4LVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjYwOTpcdHNrYl9wdXNoKHNrYiwgc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKSk7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjEwLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjYxMTpcdGRlcF9yZXEgPSAoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKilza2ItXHUwMDNlZGF0YTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02MTItXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTYyOT1zdGF0aWMgaW50IGRpZ2l0YWxfaW5fc2VuZF9ydG94KHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTYzMS17XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NjMyOlx0c3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKmRlcF9yZXE7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjMzLVx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjQ2LVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjY0NzpcdHNrYl9wdXNoKHNrYiwgc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKSk7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjQ4LVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjY0OTpcdGRlcF9yZXEgPSAoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKilza2ItXHUwMDNlZGF0YTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02NTAtXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTY4Nj1zdGF0aWMgdm9pZCBkaWdpdGFsX2luX3JlY3ZfZGVwX3JlcyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB2b2lkICphcmcsXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTY4OS1cdHN0cnVjdCBkaWdpdGFsX2RhdGFfZXhjaCAqZGF0YV9leGNoID0gYXJnO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jOjY5MDpcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVzO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTY5MS1cdHU4IHBmYjtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNzU1LVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjc1NjpcdHNpemUgPSBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jOjc1NzpcdGRlcF9yZXMgPSAoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKilyZXNwLVx1MDAzZWRhdGE7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNzU4LVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz05MDQ9aW50IGRpZ2l0YWxfaW5fc2VuZF9kZXBfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTkwNy17XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6OTA4Olx0c3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKmRlcF9yZXE7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtOTA5LVx0c3RydWN0IHNrX2J1ZmYgKmNoYWluaW5nX3NrYiwgKnRtcF9za2I7XG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTkxMS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo5MTI6XHRza2JfcHVzaChza2IsIHNpemVvZihzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcykpO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTkxMy1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo5MTQ6XHRkZXBfcmVxID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopc2tiLVx1MDAzZWRhdGE7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtOTE1LVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz05Nzg9c3RhdGljIGludCBkaWdpdGFsX3RnX3NlbmRfYWNrKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTk4MC17XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6OTgxOlx0c3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKmRlcF9yZXM7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtOTgyLVx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtOTg4LVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjk4OTpcdHNrYl9wdXNoKHNrYiwgc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKSk7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtOTkwLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjk5MTpcdGRlcF9yZXMgPSAoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKilza2ItXHUwMDNlZGF0YTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05OTItXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTEwMjQ9c3RhdGljIGludCBkaWdpdGFsX3RnX3NlbmRfYXRuKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYpXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTAyNS17XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTAyNjpcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVzO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwMjctXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDMzLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwMzQ6XHRza2JfcHVzaChza2IsIHNpemVvZihzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcykpO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwMzUtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTAzNjpcdGRlcF9yZXMgPSAoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKilza2ItXHUwMDNlZGF0YTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDM3LVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz0xMDc3PXN0YXRpYyB2b2lkIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTA4MC1cdGludCByYztcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDgxOlx0c3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKmRlcF9yZXE7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTA4Mi1cdHU4IHBmYjtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTEwNy1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMTA4Olx0c2l6ZSA9IHNpemVvZihzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3Jlcyk7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTEwOTpcdGRlcF9yZXEgPSAoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKilyZXNwLVx1MDAzZWRhdGE7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTExMC1cbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9MTI5Nz1pbnQgZGlnaXRhbF90Z19zZW5kX2RlcF9yZXMoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMjk4LXtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMjk5Olx0c3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKmRlcF9yZXM7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTMwMC1cdHN0cnVjdCBza19idWZmICpjaGFpbmluZ19za2IsICp0bXBfc2tiO1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzAyLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEzMDM6XHRza2JfcHVzaChza2IsIHNpemVvZihzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcykpO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEzMDQtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTMwNTpcdGRlcF9yZXMgPSAoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKilza2ItXHUwMDNlZGF0YTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzA2LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMiAxMzoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjM4OQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKlBlZXJpbmcgaW50byB0aGUgRGVwdGhzIG9mIGBzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3Jlc2AqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGBzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3Jlc2AuIEl0JiMzOTtzIGNydWNpYWwgZm9yIG15IGN1cnJlbnQgYW5hbHlzaXMsIHNvIEkgaGF2ZSB0byBtYWtlIHN1cmUgSSBoYXZlIGEgc29saWQgdW5kZXJzdGFuZGluZyBvZiB0aGlzLiBMZXQmIzM5O3MgZGVsdmUgaW50byBpdHMgZGVmaW5pdGlvbiBhbmQgbWV0aWN1bG91c2x5IHBhcnNlIGl0cyBjb21wb25lbnRzLiBGcm9tIHRoZSB3YXkgdGhpcyBpcyBuYW1lZCwgSSBhc3N1bWUgaXQmIzM5O3MgaW52b2x2ZWQgaW4gZGlnaXRhbCBkZXBlbmRlbmN5IHJlcXVlc3QgYW5kIHJlc3BvbnNlOyBJJiMzOTtsbCBzZWUgaWYgdGhhdCYjMzk7cyBhY2N1cmF0ZSBhcyBJIHJldmlldyBpdC4gQW55IGluc2lnaHQgSSBjYW4gZ2V0IGZyb20gaXRzIGRlZmluaXRpb24gd2lsbCBiZSBpbnZhbHVhYmxlLiBUaW1lIHRvIG1ldGljdWxvdXNseSBkaXNzZWN0IHRoaXMgc3RydWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMiAxMzoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9uZmMvZGlnaXRhbF9kZXAuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDk1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgOTU6XHRcdHU4IGRpcjtcbiAgOTY6XHRcdHU4IGNtZDtcbiAgOTc6XHRcdHU4IGRpZDtcbiAgOTg6XHR9IF9fcGFja2VkO1xuICA5OTpcdFxuIDEwMDpcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzIHtcbiAxMDE6XHRcdHU4IGRpcjtcbiAxMDI6XHRcdHU4IGNtZDtcbiAxMDM6XHRcdHU4IHBmYjtcbiAxMDQ6XHR9IF9fcGFja2VkO1xuIDEwNTpcdFxuIDEwNjpcdHN0YXRpYyB2b2lkIGRpZ2l0YWxfaW5fcmVjdl9kZXBfcmVzKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcbiAxMDc6XHRcdFx0XHRcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqcmVzcCk7XG4gMTA4Olx0c3RhdGljIHZvaWQgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxuIDEwOTpcdFx0XHRcdFx0ICAgIHN0cnVjdCBza19idWZmICpyZXNwKTtcbiAxMTA6XHRcbiAxMTE6XHRzdGF0aWMgY29uc3QgdTggZGlnaXRhbF9wYXlsb2FkX2JpdHNfbWFwWzRdID0ge1xuIDExMjpcdFx0WzBdID0gNjQsXG4gMTEzOlx0XHRbMV0gPSAxMjgsXG4gMTE0Olx0XHRbMl0gPSAxOTIsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEyIDEzOjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2ODkyCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMjY0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBEaWdpdGFsIE5GQyBERVAgUmVxdWVzdC9SZXNwb25zZSBWdWxuZXJhYmlsaXR5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBkaWdpdGFsX2RlcF9yZXFfcmVzYCBzdHJ1Y3Qg4oCTIGl0JiMzOTtzIGp1c3QgMyBieXRlczogZGlyLCBjbWQsIGFuZCBwZmIuIFRoYXQmIzM5O3Mgc3RyYWlnaHRmb3J3YXJkLiBXaGljaCBtZWFucyB0aGUgaW5pdGlhbCBgc2l6ZWAgaXMgc2V0IHRvIDMg4oCTIG1ha2VzIHBlcmZlY3Qgc2Vuc2UsIHVzaW5nIGBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpYC4gTm93LCBiZWZvcmUgdGhlIHBhdGNoIHdhcyBhcHBsaWVkLCB0aGluZ3Mgd2VyZSBhIGJpdOKApiBzbG9wcHkuIFRoZSBjb2RlIHdhcyBkb2luZyB0aGlzOiBgZGRldi0mZ3Q7ZGlkID09IHJlc3AtJmd0O2RhdGFbM11gLiBUaGUgcHJvYmxlbT8gYHJlc3AtJmd0O2RhdGFbM11gIGFjY2Vzc2VzIHRoZSAqZm91cnRoKiBieXRlLCB0aGF0JiMzOTtzIGluZGV4IDMuIEJ1dCBoZXJlJiMzOTtzIHRoZSBraWNrZXIsIHRoZSBjaGVjayB3YXM6IGBpZiAocmVzcC0mZ3Q7bGVuICZsdDsgc2l6ZSB8fCAuLi4pYCB3aGVyZSBgc2l6ZWAgd2FzIHN0aWxsIHRoYXQgaW5pdGlhbCAzLgoKU28sIGlmIGByZXNwLSZndDtsZW5gIHdhcyBleGFjdGx5IDMgYW5kIHRoZSBgRElHSVRBTF9ORkNfREVQX0RJRF9CSVRfU0VUKHBmYilgIGNvbmRpdGlvbiB3YXMgdHJ1ZSwgd2UmIzM5O2QgaGl0IHRoYXQgT09CIHJlYWQuICBXZSYjMzk7ZCBiZSByZWFkaW5nICpvbmUqIGJ5dGUgcGFzdCB0aGUgYWxsb2NhdGVkIG1lbW9yeSBmb3IgYHJlc3AtJmd0O2RhdGFgIOKAkyB0aGF0JiMzOTtzIGEgY2xhc3NpYyBidWZmZXIgb3Zlci1yZWFkIHNpdHVhdGlvbi4gTm90IGdvb2QuCgpUaGUgcGF0Y2ggZml4ZXMgdGhpcyBieSBtYWtpbmcgdGhlIGxlbmd0aCBjaGVjayBtb3JlIHJvYnVzdC4gSXQmIzM5O3Mgbm93IGNoZWNraW5nIGBpZiAocmVzcC0mZ3Q7bGVuICZsdDsgc2l6ZSAmIzQzOyAxIHx8ICFkZGV2LSZndDtkaWQgfHwgZGRldi0mZ3Q7ZGlkICE9IHJlc3AtJmd0O2RhdGFbc2l6ZV0pYCBmaXJzdCwgKnRoZW4qIGluY3JlbWVudGluZyBgc2l6ZWAuIFRoYXQgYHNpemUgJiM0MzsgMWAgaXMgY3JpdGljYWwg4oCTIGl0IGVuc3VyZXMgd2UgaGF2ZSBlbm91Z2ggc3BhY2UgYmVmb3JlIHRoYXQgY29tcGFyaXNvbiB3aXRoIGByZXNwLSZndDtkYXRhW3NpemVdYC4gQSBzaW1wbGUgZml4LCBidXQgYSBuZWNlc3Nhcnkgb25lIHRvIHByZXZlbnQgdGhlIG91dC1vZi1ib3VuZHMgcmVhZC4gIEl0JiMzOTtzIHNpbWlsYXIgdG8gaG93IGl0IHdhcyBkb25lIGVhcmxpZXIgaW4gYGRpZ2l0YWxfaW5fcmVjdl9kZXBfcmVzYCBhcm91bmQgbGluZSA3NTUgaW4gdGhlIHNvdXJjZSBjb2RlOyBJIHNob3VsZCBwcm9iYWJseSBrZWVwIHRoYXQgYXMgYSB0ZW1wbGF0ZSBuZXh0IHRpbWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEyIDEzOjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L25mYy9kaWdpdGFsX2RlcC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNzU1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDM1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA3NTU6XHRcbiA3NTY6XHRcdHNpemUgPSBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpO1xuIDc1NzpcdFx0ZGVwX3JlcyA9IChzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqKXJlc3AtXHUwMDNlZGF0YTtcbiA3NTg6XHRcbiA3NTk6XHRcdGlmIChyZXNwLVx1MDAzZWxlbiBcdTAwM2Mgc2l6ZSB8fCBkZXBfcmVzLVx1MDAzZWRpciAhPSBESUdJVEFMX05GQ19ERVBfRlJBTUVfRElSX0lOIHx8XG4gNzYwOlx0XHQgICAgZGVwX3Jlcy1cdTAwM2VjbWQgIT0gRElHSVRBTF9DTURfREVQX1JFUykge1xuIDc2MTpcdFx0XHRyYyA9IC1FSU87XG4gNzYyOlx0XHRcdGdvdG8gZXJyb3I7XG4gNzYzOlx0XHR9XG4gNzY0Olx0XG4gNzY1Olx0XHRwZmIgPSBkZXBfcmVzLVx1MDAzZXBmYjtcbiA3NjY6XHRcbiA3Njc6XHRcdGlmIChESUdJVEFMX05GQ19ERVBfRElEX0JJVF9TRVQocGZiKSkge1xuIDc2ODpcdFx0XHRQUk9UT0NPTF9FUlIoXCYjMzQ7MTQuOC4yLjFcJiMzNDspO1xuIDc2OTpcdFx0XHRyYyA9IC1FSU87XG4gNzcwOlx0XHRcdGdvdG8gZXJyb3I7XG4gNzcxOlx0XHR9XG4gNzcyOlx0XG4gNzczOlx0XHRpZiAoRElHSVRBTF9ORkNfREVQX05BRF9CSVRfU0VUKHBmYikpIHtcbiA3NzQ6XHRcdFx0cmMgPSAtRUlPO1xuIDc3NTpcdFx0XHRnb3RvIGV4aXQ7XG4gNzc2Olx0XHR9XG4gNzc3Olx0XG4gNzc4Olx0XHRpZiAoc2l6ZSBcdTAwM2UgcmVzcC1cdTAwM2VsZW4pIHtcbiA3Nzk6XHRcdFx0cmMgPSAtRUlPO1xuIDc4MDpcdFx0XHRnb3RvIGVycm9yO1xuIDc4MTpcdFx0fVxuIDc4MjpcdFxuIDc4MzpcdFx0c2tiX3B1bGwocmVzcCwgc2l6ZSk7XG4gNzg0Olx0XG4gNzg1Olx0XHRzd2l0Y2ggKERJR0lUQUxfTkZDX0RFUF9QRkJfVFlQRShwZmIpKSB7XG4gNzg2Olx0XHRjYXNlIERJR0lUQUxfTkZDX0RFUF9QRkJfSV9QRFU6XG4gNzg3Olx0XHRcdGlmIChESUdJVEFMX05GQ19ERVBfUEZCX1BOSShwZmIpICE9IGRkZXYtXHUwMDNlY3Vycl9uZmNfZGVwX3BuaSkge1xuIDc4ODpcdFx0XHRcdFBST1RPQ09MX0VSUihcJiMzNDsxNC4xMi4zLjNcJiMzNDspO1xuIDc4OTpcdFx0XHRcdHJjID0gLUVJTztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTIgMTM6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTgxNDUKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSBwcm9jZXNzLCBwcmVzZW50ZWQgYXMgYSBmaXJzdC1wZXJzb24gYWNjb3VudCBhc3N1bWluZyBleHBlcnRpc2UgaW4gdGhlIGZpZWxkOgoKKipEaXZpbmcgaW50byB0aGUgYG5ldC9uZmMvZGlnaXRhbF9kZXAuY2AgS2NvbmZpZyBPcHRpb25zKioKCkFscmlnaHQsIHRpbWUgdG8gZ2V0IGludG8gdGhlIG5pdHR5LWdyaXR0eS4gSSYjMzk7bSBmb2N1c2luZyBvbiBgbmV0L25mYy9kaWdpdGFsX2RlcC5jYCBub3cgYW5kIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gd2hpY2ggS2NvbmZpZyBvcHRpb25zIGdvdmVybiBpdHMgY29tcGlsYXRpb24uIEkmIzM5O20gdGhpbmtpbmcgSSYjMzk7bGwgc3RhcnQgYnkgcXVpY2tseSBzY2FubmluZyB0aGUgcmVsZXZhbnQgS2NvbmZpZyBmaWxlcy4gUHJvYmFibHkgd2l0aGluIHRoZSBgbmV0L25mYy9gIGRpcmVjdG9yeSBhbmQgcG90ZW50aWFsbHkgdXBzdHJlYW0gb25lcywgdG8gZW5zdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueSBkZXBlbmRlbmNpZXMgdGhhdCBjb3VsZCBhZmZlY3QgdGhpcyBzcGVjaWZpYyBtb2R1bGUuIEl0JiMzOTtzIGNydWNpYWwgdG8gaWRlbnRpZnkgdGhlIHJlbGV2YW50IGRlcGVuZGVuY2llcyBhcyB0aGVzZSBLY29uZmlnIG9wdGlvbnMgbm90IG9ubHkgY29udHJvbCBpZiB0aGUgc291cmNlIGZpbGUgaXMgY29tcGlsZWQgaW50byB0aGUga2VybmVsIGJ1dCBhbHNvIHdoaWNoIHN1Yi1mZWF0dXJlcyBvZiB0aGUgbW9kdWxlIGFyZSBhY3RpdmUgb3Igbm90LCBvciBldmVuIGlmIGl0IGRlcGVuZHMgb24gYSBzcGVjaWZpYyBoYXJkd2FyZSBjb25maWd1cmF0aW9uLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZSBmbGFncyB0aWVkIHRvIHNwZWNpZmljIE5GQyBjb250cm9sbGVycywgYW55IGZlYXR1cmUgc3dpdGNoZXMgcmVsYXRlZCB0byBkaWdpdGFsIHByb3RvY29sIG5lZ290aWF0aW9uLCBvciBwZXJoYXBzIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGJhc2VkIG9uIHRoZSBwcmVzZW5jZSBvZiBjZXJ0YWluIGhhcmR3YXJlIGZlYXR1cmVzLiBVbmRlcnN0YW5kaW5nIHRoZSBLY29uZmlnIHN0cnVjdHVyZSBoZXJlIGlzIGZ1bmRhbWVudGFsIHRvIHVuZGVyc3RhbmRpbmcgdGhpcyBtb2R1bGUuIEl0JiMzOTtzIGEgcXVpY2sgYnV0IGVzc2VudGlhbCBzdGVwIHRvIGVuc3VyZSB0aGlzIG1vZHVsZSB3b3JrcyBhcyBpbnRlbmRlZCwgYW5kIGNhbiBiZSBjb25maWd1cmVkIGNvcnJlY3RseSwgZ2l2ZW4gZGlmZmVyZW50IHRhcmdldCBoYXJkd2FyZSBhbmQgdXNlIGNhc2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMiAxMzoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkaWdpdGFsX2RlcCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25mYy9NYWtlZmlsZT0xMT1uZmMtb2JqcyA6PSBjb3JlLm8gbmV0bGluay5vIGFmX25mYy5vIHJhd3NvY2subyBsbGNwX2NvcmUubyBsbGNwX2NvbW1hbmRzLm8gXFxcbi0tXG5uZXQvbmZjL01ha2VmaWxlLTEzLVxubmV0L25mYy9NYWtlZmlsZToxNDpuZmNfZGlnaXRhbC1vYmpzIDo9IGRpZ2l0YWxfY29yZS5vIGRpZ2l0YWxfdGVjaG5vbG9neS5vIGRpZ2l0YWxfZGVwLm9cbi0tXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jPTU4Nj1zdGF0aWMgaW50IGRpZ2l0YWxfZGV2X2Rvd24oc3RydWN0IG5mY19kZXYgKm5mY19kZXYpXG4tLVxubmV0L25mYy9kaWdpdGFsX2NvcmUuYy01OTQtXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jOjU5NTpzdGF0aWMgaW50IGRpZ2l0YWxfZGVwX2xpbmtfdXAoc3RydWN0IG5mY19kZXYgKm5mY19kZXYsXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTU5Ni1cdFx0XHQgICAgICAgc3RydWN0IG5mY190YXJnZXQgKnRhcmdldCxcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTYwOS1cbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmM6NjEwOnN0YXRpYyBpbnQgZGlnaXRhbF9kZXBfbGlua19kb3duKHN0cnVjdCBuZmNfZGV2ICpuZmNfZGV2KVxubmV0L25mYy9kaWdpdGFsX2NvcmUuYy02MTEte1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmM9NzQ0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZjX29wcyBkaWdpdGFsX25mY19vcHMgPSB7XG4tLVxubmV0L25mYy9kaWdpdGFsX2NvcmUuYy03NDgtXHQuc3RvcF9wb2xsID0gZGlnaXRhbF9zdG9wX3BvbGwsXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jOjc0OTpcdC5kZXBfbGlua191cCA9IGRpZ2l0YWxfZGVwX2xpbmtfdXAsXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jOjc1MDpcdC5kZXBfbGlua19kb3duID0gZGlnaXRhbF9kZXBfbGlua19kb3duLFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYy03NTEtXHQuYWN0aXZhdGVfdGFyZ2V0ID0gZGlnaXRhbF9hY3RpdmF0ZV90YXJnZXQsXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTk0PXN0cnVjdCBkaWdpdGFsX3BzbF9yZXMge1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05OS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDA6c3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMge1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwMS1cdHU4IGRpcjtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9MjAwPWRpZ2l0YWxfc2VuZF9kZXBfZGF0YV9wcmVwKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MjAxOlx0XHRcdCAgIHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVxX3Jlcyxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0yMDItXHRcdFx0ICAgc3RydWN0IGRpZ2l0YWxfZGF0YV9leGNoICpkYXRhX2V4Y2gpXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTUyOT1zdGF0aWMgaW50IGRpZ2l0YWxfaW5fc2VuZF9hY2soc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNTMxLXtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo1MzI6XHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3JlcTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01MzMtXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01MzktXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NTQwOlx0c2tiX3B1c2goc2tiLCBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpKTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01NDEtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NTQyOlx0ZGVwX3JlcSA9IChzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqKXNrYi1cdTAwM2VkYXRhO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTU0My1cbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9NTY2PXN0YXRpYyBpbnQgZGlnaXRhbF9pbl9zZW5kX25hY2soc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNTY4LXtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo1Njk6XHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3JlcTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01NzAtXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01NzYtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NTc3Olx0c2tiX3B1c2goc2tiLCBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpKTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01NzgtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NTc5Olx0ZGVwX3JlcSA9IChzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqKXNrYi1cdTAwM2VkYXRhO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTU4MC1cbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9NTk4PXN0YXRpYyBpbnQgZGlnaXRhbF9pbl9zZW5kX2F0bihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02MDAte1xubmV0L25mYy9kaWdpdGFsX2RlcC5jOjYwMTpcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVxO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTYwMi1cdHN0cnVjdCBza19idWZmICpza2I7XG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTYwOC1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo2MDk6XHRza2JfcHVzaChza2IsIHNpemVvZihzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcykpO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTYxMC1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo2MTE6XHRkZXBfcmVxID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopc2tiLVx1MDAzZWRhdGE7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjEyLVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz02Mjk9c3RhdGljIGludCBkaWdpdGFsX2luX3NlbmRfcnRveChzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02MzEte1xubmV0L25mYy9kaWdpdGFsX2RlcC5jOjYzMjpcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVxO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTYzMy1cdHN0cnVjdCBza19idWZmICpza2I7XG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTY0Ni1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo2NDc6XHRza2JfcHVzaChza2IsIHNpemVvZihzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcykpO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTY0OC1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo2NDk6XHRkZXBfcmVxID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopc2tiLVx1MDAzZWRhdGE7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjUwLVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz02ODY9c3RhdGljIHZvaWQgZGlnaXRhbF9pbl9yZWN2X2RlcF9yZXMoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02ODktXHRzdHJ1Y3QgZGlnaXRhbF9kYXRhX2V4Y2ggKmRhdGFfZXhjaCA9IGFyZztcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo2OTA6XHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3Jlcztcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02OTEtXHR1OCBwZmI7XG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTc1NS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo3NTY6XHRzaXplID0gc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo3NTc6XHRkZXBfcmVzID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopcmVzcC1cdTAwM2VkYXRhO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTc1OC1cbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9OTA0PWludCBkaWdpdGFsX2luX3NlbmRfZGVwX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05MDcte1xubmV0L25mYy9kaWdpdGFsX2RlcC5jOjkwODpcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVxO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTkwOS1cdHN0cnVjdCBza19idWZmICpjaGFpbmluZ19za2IsICp0bXBfc2tiO1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05MTEtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6OTEyOlx0c2tiX3B1c2goc2tiLCBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpKTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05MTMtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6OTE0Olx0ZGVwX3JlcSA9IChzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqKXNrYi1cdTAwM2VkYXRhO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTkxNS1cbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9OTc4PXN0YXRpYyBpbnQgZGlnaXRhbF90Z19zZW5kX2FjayhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05ODAte1xubmV0L25mYy9kaWdpdGFsX2RlcC5jOjk4MTpcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVzO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTk4Mi1cdHN0cnVjdCBza19idWZmICpza2I7XG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTk4OC1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo5ODk6XHRza2JfcHVzaChza2IsIHNpemVvZihzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcykpO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTk5MC1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo5OTE6XHRkZXBfcmVzID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopc2tiLVx1MDAzZWRhdGE7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtOTkyLVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz0xMDI0PXN0YXRpYyBpbnQgZGlnaXRhbF90Z19zZW5kX2F0bihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2KVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwMjUte1xubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwMjY6XHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3Jlcztcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDI3LVx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTAzMy1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDM0Olx0c2tiX3B1c2goc2tiLCBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpKTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDM1LVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwMzY6XHRkZXBfcmVzID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopc2tiLVx1MDAzZWRhdGE7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTAzNy1cbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9MTA3Nz1zdGF0aWMgdm9pZCBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB2b2lkICphcmcsXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwODAtXHRpbnQgcmM7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTA4MTpcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVxO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwODItXHR1OCBwZmI7XG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTExMDctXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTEwODpcdHNpemUgPSBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jOjExMDk6XHRkZXBfcmVxID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopcmVzcC1cdTAwM2VkYXRhO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTExMTAtXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTEyOTc9aW50IGRpZ2l0YWxfdGdfc2VuZF9kZXBfcmVzKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHN0cnVjdCBza19idWZmICpza2IpXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTI5OC17XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTI5OTpcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVzO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEzMDAtXHRzdHJ1Y3Qgc2tfYnVmZiAqY2hhaW5pbmdfc2tiLCAqdG1wX3NrYjtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTMwMi1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMzAzOlx0c2tiX3B1c2goc2tiLCBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpKTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzA0LVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEzMDU6XHRkZXBfcmVzID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopc2tiLVx1MDAzZWRhdGE7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTMwNi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTIgMTM6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE0ODMKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBORkMgRGlnaXRhbCBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQmIzM5O3MgdHJpZ2dlcmluZyB0aGUgYG5mY19kaWdpdGFsYCBjb21wb25lbnQgd2l0aGluIHRoZSBORkMgc3lzdGVtLiBUaGUgbG9naWNhbCBzdGFydGluZyBwb2ludCBpcyB0aGUgYG5ldC9uZmMvTWFrZWZpbGVgLiBJdCYjMzk7cyB3aGVyZSB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiBsaXZlcy4gVGhhdCYjMzk7cyB3aGVyZSBJIG5lZWQgdG8gZGlnIGluIHRvIGZpbmQgdGhlIHNwZWNpZmljIGNvbmZpZyBvcHRpb25zIHRoYXQgZ292ZXJuIHRoZSBpbmNsdXNpb24gb2YgYG5mY19kaWdpdGFsYC4gSG9wZWZ1bGx5LCBpdCYjMzk7cyBhIHN0cmFpZ2h0Zm9yd2FyZCBkZXBlbmRlbmN5IGNoYWluLiBJJiMzOTtsbCBwcm9iYWJseSBiZSBsb29raW5nIGZvciBhbiBgaWZkZWZgIG9yIGEgc2ltaWxhciBjb25kaXRpb25hbCBzdGF0ZW1lbnQgdGhhdCBjaGVja3MgZm9yIHNvbWUgS2NvbmZpZyBzeW1ib2wuIFRpbWUgdG8gc2VlIHdoYXQgdGhlIGJ1aWxkIHByb2Nlc3MgaGFzIHRvIHNheS4gSSYjMzk7bSBob3BpbmcgaXQmIzM5O3Mgd2VsbC1kb2N1bWVudGVkIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMiAxMzoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9uZmMvTWFrZWZpbGUmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDI1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4gICAyOlx0I1xuICAgMzpcdCMgTWFrZWZpbGUgZm9yIHRoZSBMaW51eCBORkMgc3Vic3lzdGVtLlxuICAgNDpcdCNcbiAgIDU6XHRcbiAgIDY6XHRvYmotJChDT05GSUdfTkZDKSAmIzQzOz0gbmZjLm9cbiAgIDc6XHRvYmotJChDT05GSUdfTkZDX05DSSkgJiM0Mzs9IG5jaS9cbiAgIDg6XHRvYmotJChDT05GSUdfTkZDX0hDSSkgJiM0Mzs9IGhjaS9cbiAgIDk6XHRvYmotJChDT05GSUdfTkZDX0RJR0lUQUwpICYjNDM7PSBuZmNfZGlnaXRhbC5vXG4gIDEwOlx0XG4gIDExOlx0bmZjLW9ianMgOj0gY29yZS5vIG5ldGxpbmsubyBhZl9uZmMubyByYXdzb2NrLm8gbGxjcF9jb3JlLm8gbGxjcF9jb21tYW5kcy5vIFxcXG4gIDEyOlx0XHRcdGxsY3Bfc29jay5vXG4gIDEzOlx0XG4gIDE0Olx0bmZjX2RpZ2l0YWwtb2JqcyA6PSBkaWdpdGFsX2NvcmUubyBkaWdpdGFsX3RlY2hub2xvZ3kubyBkaWdpdGFsX2RlcC5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEyIDEzOjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxOTIyCgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogNDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXhhbWluaW5nIHRoZSBORkMgRGlnaXRhbCBEcml2ZXIgQnVpbGQgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJIHNlZSB0aGlzIGxpbmU6IGBvYmotJChDT05GSUdfTkZDX0RJR0lUQUwpICYjNDM7PSBuZmNfZGlnaXRhbC5vYC4gTXkgYnJhaW4gaW1tZWRpYXRlbHkgdHJhbnNsYXRlcyB0aGlzIHRvOiAmIzM0O1RoZSBgbmZjX2RpZ2l0YWwub2Agb2JqZWN0IGZpbGUgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUgYnVpbGQsIGJ1dCBvbmx5IGlmIHRoZSBgQ09ORklHX05GQ19ESUdJVEFMYCBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb24gaXMgZW5hYmxlZC4mIzM0OyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIG9uIGBORkNfRElHSVRBTGAuIFdoZXJlIGlzIHRoYXQgZGVmaW5lZD8gSXQgaXMgcHJvYmFibHkgZGVmaW5lZCBpbiBgbmV0L25mYy9LY29uZmlnYC4gTGV0JiMzOTtzIGNoZWNrIHRoZXJlIHRvIHNlZSB3aGF0IGl0IGRlcGVuZHMgb24uIEkmIzM5O2xsIG5lZWQgdG8ga25vdyB0aGlzIGluZm9ybWF0aW9uIHRvIHVuZGVyc3RhbmQgaWYgYW5kIHdoZW4gdGhlIGRyaXZlciB3aWxsIGJlIGJ1aWx0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMiAxMzoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkZDX0RJR0lUQUwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmZjJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZmMvS2NvbmZpZz02PW1lbnVjb25maWcgTkZDXG4tLVxubmV0L25mYy9LY29uZmlnLTE2LVxubmV0L25mYy9LY29uZmlnOjE3OmNvbmZpZyBORkNfRElHSVRBTFxubmV0L25mYy9LY29uZmlnLTE4LVx0ZGVwZW5kcyBvbiBORkNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTIgMTM6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjIyMTcKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGxpa2UgeW91cnNlbGY6CgoqKkRpdmluZyBpbnRvIHRoZSBgbmV0L25mYy9LY29uZmlnYCBGaWxlKioKCkFscmlnaHQsIGxldCYjMzk7cyB0YWtlIGEgcXVpY2sgbG9vayBhdCBgbmV0L25mYy9LY29uZmlnYCwgc3BlY2lmaWNhbGx5IGFyb3VuZCBsaW5lIDE3LiBNeSBtZW50YWwgbW9kZWwsIGJhc2VkIG9uIHByZXZpb3VzIGludGVyYWN0aW9ucyB3aXRoIHRoZSBORkMgc3Vic3lzdGVtLCBpcyBzdWdnZXN0aW5nIHNvbWV0aGluZyBpbiB0aGF0IGFyZWEuIEl0JiMzOTtzIGxpa2VseSBhIGNvbmZpZ3VyYXRpb24gb3B0aW9uIG9yIGRlcGVuZGVuY3kgZGVmaW5pdGlvbiwgcGVyaGFwcyByZWxhdGVkIHRvIGEgZmVhdHVyZSBmbGFnLCBhIGhhcmR3YXJlIGRyaXZlciwgb3IgYSBnZW5lcmFsIGVuYWJsaW5nL2Rpc2FibGluZyBvZiBhIGNvcmUgTkZDIGNvbXBvbmVudC4gSSYjMzk7bSBpbW1lZGlhdGVseSBleHBlY3RpbmcgdG8gc2VlIGVpdGhlciBhIGBjb25maWdgIHN0YXRlbWVudCwgYSBgZGVwZW5kcyBvbmAgY2xhdXNlLCBvciBtYXliZSBldmVuIGFuIGBpZmAgc3RhdGVtZW50IGNvbnRyb2xsaW5nIHRoZSBpbmNsdXNpb24gb2Ygb3RoZXIgS2NvbmZpZyBmcmFnbWVudHMuIEdpdmVuIHRoZSBwb3NpdGlvbiBpbiB0aGUgZmlsZSwgaXQmIzM5O3MgcHJvYmFibHkgbm90IGEgdG9wLWxldmVsIHN5bWJvbCwgYW5kIG1pZ2h0IGJlIG5lc3RlZCB1bmRlciBhbm90aGVyIG9wdGlvbi4gSSYjMzk7bSBwcmVwYXJlZCB0byBxdWlja2x5IHNjYW4gZm9yIGtleXdvcmRzIGxpa2UgJiMzNDtORkMmIzM0OywgJiMzNDtQTjUzMiYjMzQ7LCAmIzM0O0hBTCYjMzQ7LCBvciBwb3RlbnRpYWxseSwgYSBtb2R1bGUgbmFtZSBJIHJlY29nbml6ZS4gTXkgaW50ZW50aW9uIGlzIHRvIGltbWVkaWF0ZWx5IGlkZW50aWZ5IHRoZSBzY29wZSBvZiB3aGF0IHRoZSBLY29uZmlnIGNvbnRyb2xzLCBpdHMgZGVwZW5kZW5jaWVzLCBhbmQgYW55IGltcGxpY2F0aW9ucyBpdCBoYXMgZm9yIHRoZSBidWlsZCBjb25maWd1cmF0aW9uLiBJJiMzOTttIHRyeWluZyB0byBnZXQgYSBxdWljayBtYXAgb2Ygd2hhdCYjMzk7cyAqdGhlcmUqIHRvIGhlbHAgbWUgZm9ybXVsYXRlIG15IG5leHQgc3RlcCBpbiB0aGlzIGludmVzdGlnYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEyIDEzOjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L25mYy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0I1xuICAgMzpcdCMgTkZDIHN1YnN5c3RlbSBjb25maWd1cmF0aW9uXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdG1lbnVjb25maWcgTkZDXG4gICA3Olx0XHRkZXBlbmRzIG9uIFJGS0lMTCB8fCAhUkZLSUxMXG4gICA4Olx0XHR0cmlzdGF0ZSBcJiMzNDtORkMgc3Vic3lzdGVtIHN1cHBvcnRcJiMzNDtcbiAgIDk6XHRcdGRlZmF1bHQgblxuICAxMDpcdFx0aGVscFxuICAxMTpcdFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIGJ1aWxkIHN1cHBvcnQgZm9yIE5GQyAoTmVhciBmaWVsZFxuICAxMjpcdFx0ICBjb21tdW5pY2F0aW9uKSBkZXZpY2VzLlxuICAxMzpcdFxuICAxNDpcdFx0ICBUbyBjb21waWxlIHRoaXMgc3VwcG9ydCBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZSB3aWxsXG4gIDE1Olx0XHQgIGJlIGNhbGxlZCBuZmMuXG4gIDE2Olx0XG4gIDE3Olx0Y29uZmlnIE5GQ19ESUdJVEFMXG4gIDE4Olx0XHRkZXBlbmRzIG9uIE5GQ1xuICAxOTpcdFx0c2VsZWN0IENSQ19DQ0lUVFxuICAyMDpcdFx0c2VsZWN0IENSQ19JVFVfVFxuICAyMTpcdFx0dHJpc3RhdGUgXCYjMzQ7TkZDIERpZ2l0YWwgUHJvdG9jb2wgc3RhY2sgc3VwcG9ydFwmIzM0O1xuICAyMjpcdFx0ZGVmYXVsdCBuXG4gIDIzOlx0XHRoZWxwXG4gIDI0Olx0XHQgIFNheSBZIGlmIHlvdSB3YW50IHRvIGJ1aWxkIE5GQyBkaWdpdGFsIHByb3RvY29sIHN0YWNrIHN1cHBvcnQuXG4gIDI1Olx0XHQgIFRoaXMgaXMgbmVlZGVkIGJ5IE5GQyBjaGlwc2V0cyB3aG9zZSBmaXJtd2FyZSBvbmx5IGltcGxlbWVudFxuICAyNjpcdFx0ICB0aGUgTkZDIGFuYWxvZyBsYXllci5cbiAgMjc6XHRcbiAgMjg6XHRcdCAgVG8gY29tcGlsZSB0aGlzIHN1cHBvcnQgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGUgd2lsbFxuICAyOTpcdFx0ICBiZSBjYWxsZWQgbmZjX2RpZ2l0YWwuXG4gIDMwOlx0XG4gIDMxOlx0c291cmNlIFwmIzM0O25ldC9uZmMvbmNpL0tjb25maWdcJiMzNDtcbiAgMzI6XHRzb3VyY2UgXCYjMzQ7bmV0L25mYy9oY2kvS2NvbmZpZ1wmIzM0O1xuICAzMzpcdFxuICAzNDpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25mYy9LY29uZmlnXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEyIDEzOjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyOTUzCgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIE5GQ19ESUdJVEFMIERyaXZlciBEZXBlbmRlbmNpZXMqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW4uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O1doYXQgc3BlY2lmaWNhbGx5IGFyZSB0aGVzZSBkcml2ZXJzIGRvaW5nLCBhbmQgd2hhdCBvdGhlciBjb21wb25lbnRzIGFyZSB0aGV5IHRpZ2h0bHkgY291cGxlZCB3aXRoPyYjMzQ7IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBlY29zeXN0ZW0gc3Vycm91bmRpbmcgYE5GQ19ESUdJVEFMYC4gSSYjMzk7bSBnb2luZyB0byBzdGFydCBieSBsb29raW5nIGZvciB0aGUgc2VsZWN0aW9uIGFuZCBkZXBlbmRlbmN5IHJlbGF0aW9uc2hpcHMgb24gdGhpcyBjb25maWd1cmF0aW9uIG9wdGlvbi4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHRoaW5raW5nOgoKKiAgICoqV2hvIGlzIGNob29zaW5nIGBORkNfRElHSVRBTGA/KiogV2hhdCBvdGhlciBjb25maWd1cmF0aW9ucyBtaWdodCBiZSBwcmVyZXF1aXNpdGVzLCBvciB3aGF0IGZlYXR1cmVzIGFyZSBleHBsaWNpdGx5IHJlcXVlc3RpbmcgaXQ/IFRoaXMgd2lsbCBnaXZlIG1lIGEgZmlyc3QgaW5kaWNhdGlvbiBvZiB0aGUgc2NvcGUgYW5kIHVzZSBjYXNlLgoqICAgKipXaGF0IHJlbGllcyBvbiBpdD8qKiBJJiMzOTttIGxvb2tpbmcgZm9yIGRpcmVjdCBkZXBlbmRlbmNpZXMsIG9mIGNvdXJzZSwgYnV0IGFsc28gaW5kaXJlY3Qgb25lcy4gVW5kZXJzdGFuZGluZyB0aGUgY2FzY2FkaW5nIGVmZmVjdHMgaXMga2V5LiBXaGF0IG1vZHVsZXMgb3IgZnVuY3Rpb25hbGl0eSBiZWNvbWUgYXZhaWxhYmxlIG9yIHVuYXZhaWxhYmxlIGJhc2VkIG9uIHRoZSBzZWxlY3Rpb24gb2YgYE5GQ19ESUdJVEFMYD8gQXJlIHRoZXJlIHBsYXRmb3JtLXNwZWNpZmljIGNvbnNpZGVyYXRpb25zIEkgbmVlZCB0byBrZWVwIGluIG1pbmQ/IEFyZSB0aGVyZSBhbnkgcG90ZW50aWFsIGNvbmZsaWN0cyBJIG5lZWQgdG8gY29uc2lkZXI/CiogICAqKlRoZSBkcml2ZXJzIGFuZCB0aGVpciByb2xlOioqIEkgd2lsbCBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBwdXJwb3NlIGFuZCBmdW5jdGlvbmFsaXR5IG9mIHRoZSBkcml2ZXJzIGludm9sdmVkLiBBcmUgdGhleSBpbXBsZW1lbnRpbmcgTkZDIHByb3RvY29sIHN0YWNrcz8gQ29udHJvbGxpbmcgaGFyZHdhcmUgaW50ZXJmYWNlcz8gTWFuYWdpbmcgc2VjdXJpdHkgYXNwZWN0cz8gSG93IGRvIHRoZXkgaW50ZXJhY3Qgd2l0aCBvdGhlciBwYXJ0cyBvZiB0aGUgc3lzdGVtLCBsaWtlIHRoZSBrZXJuZWwmIzM5O3MgTkZDIGZyYW1ld29yayBvciB1c2VyLXNwYWNlIGFwcGxpY2F0aW9ucz8KCk15IGdvYWwgaXMgdG8gZGV2ZWxvcCBhIGNsZWFyIG1lbnRhbCBtYXAgb2YgYE5GQ19ESUdJVEFMYCYjMzk7cyBwb3NpdGlvbiBpbiB0aGUgb3ZlcmFsbCBzeXN0ZW0gYXJjaGl0ZWN0dXJlLiBUaGlzIGNvbnRleHR1YWwgdW5kZXJzdGFuZGluZyBpcyBlc3NlbnRpYWwgYmVmb3JlIEkgY2FuIGJlZ2luIHRvIGFzc2VzcyBhbnkgcG90ZW50aWFsIHJpc2tzLCBvcHRpbWl6YXRpb25zLCBvciBhcmVhcyBmb3IgaW1wcm92ZW1lbnQuIFRpbWUgdG8gc3RhcnQgZGlnZ2luZyEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTIgMTM6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TkZDX0RJR0lUQUwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25mYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25mYy9LY29uZmlnPTk9Y29uZmlnIE5GQ19UUkY3OTcwQVxuZHJpdmVycy9uZmMvS2NvbmZpZy0xMC1cdHRyaXN0YXRlIFwmIzM0O1RleGFzIEluc3RydW1lbnRzIFRSRjc5NzBhIE5GQyBkcml2ZXJcJiMzNDtcbmRyaXZlcnMvbmZjL0tjb25maWc6MTE6XHRkZXBlbmRzIG9uIFNQSSBcdTAwMjZcdTAwMjYgTkZDX0RJR0lUQUwgXHUwMDI2XHUwMDI2IEdQSU9MSUJcbmRyaXZlcnMvbmZjL0tjb25maWctMTItXHRoZWxwXG4tLVxuZHJpdmVycy9uZmMvS2NvbmZpZz0zMT1jb25maWcgTkZDX1NJTVxuZHJpdmVycy9uZmMvS2NvbmZpZy0zMi1cdHRyaXN0YXRlIFwmIzM0O05GQyBoYXJkd2FyZSBzaW11bGF0b3IgZHJpdmVyXCYjMzQ7XG5kcml2ZXJzL25mYy9LY29uZmlnOjMzOlx0ZGVwZW5kcyBvbiBORkNfRElHSVRBTFxuZHJpdmVycy9uZmMvS2NvbmZpZy0zNC1cdGhlbHBcbi0tXG5kcml2ZXJzL25mYy9LY29uZmlnPTQyPWNvbmZpZyBORkNfUE9SVDEwMFxuLS1cbmRyaXZlcnMvbmZjL0tjb25maWctNDQtXHRkZXBlbmRzIG9uIFVTQlxuZHJpdmVycy9uZmMvS2NvbmZpZzo0NTpcdGRlcGVuZHMgb24gTkZDX0RJR0lUQUxcbmRyaXZlcnMvbmZjL0tjb25maWctNDYtXHRoZWxwXG4tLVxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjctXG5kcml2ZXJzL25mYy9uZmNzaW0uYzoyODojZGVmaW5lIE5GQ1NJTV9DQVBBQklMSVRJRVMgKE5GQ19ESUdJVEFMX0RSVl9DQVBTX0lOX0NSQyAgIHwgXFxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjI5Olx0XHRcdCAgICAgTkZDX0RJR0lUQUxfRFJWX0NBUFNfVEdfQ1JDKVxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzAtXG4tLVxuZHJpdmVycy9uZmMvbmZjc2ltLmM9MjU2PXN0YXRpYyBpbnQgbmZjc2ltX2luX2NvbmZpZ3VyZV9odyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxuLS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTI2MS1cdHN3aXRjaCAodHlwZSkge1xuZHJpdmVycy9uZmMvbmZjc2ltLmM6MjYyOlx0Y2FzZSBORkNfRElHSVRBTF9DT05GSUdfUkZfVEVDSDpcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTI2My1cdFx0ZGV2LVx1MDAzZXVwID0gdHJ1ZTtcbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yNjctXG5kcml2ZXJzL25mYy9uZmNzaW0uYzoyNjg6XHRjYXNlIE5GQ19ESUdJVEFMX0NPTkZJR19GUkFNSU5HOlxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjY5LVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYz0yODY9c3RhdGljIGludCBuZmNzaW1fdGdfY29uZmlndXJlX2h3KHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXG4tLVxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjkxLVx0c3dpdGNoICh0eXBlKSB7XG5kcml2ZXJzL25mYy9uZmNzaW0uYzoyOTI6XHRjYXNlIE5GQ19ESUdJVEFMX0NPTkZJR19SRl9URUNIOlxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjkzLVx0XHRkZXYtXHUwMDNldXAgPSB0cnVlO1xuLS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTI5Ny1cbmRyaXZlcnMvbmZjL25mY3NpbS5jOjI5ODpcdGNhc2UgTkZDX0RJR0lUQUxfQ09ORklHX0ZSQU1JTkc6XG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yOTktXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0yNS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyNjojZGVmaW5lIFBPUlQxMDBfQ0FQQUJJTElUSUVTIChORkNfRElHSVRBTF9EUlZfQ0FQU19JTl9DUkMgfCBcXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI3Olx0XHRcdCAgICAgIE5GQ19ESUdJVEFMX0RSVl9DQVBTX1RHX0NSQylcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0yOC1cbi0tXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM9MTE4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcG9ydDEwMF9pbl9yZl9zZXR0aW5nIGluX3JmX3NldHRpbmdzW10gPSB7XG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTE5Olx0W05GQ19ESUdJVEFMX1JGX1RFQ0hfMjEyRl0gPSB7XG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTIwLVx0XHQuaW5fc2VuZF9zZXRfbnVtYmVyID0gMSxcbi0tXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTI0LVx0fSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxMjU6XHRbTkZDX0RJR0lUQUxfUkZfVEVDSF80MjRGXSA9IHtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMjYtXHRcdC5pbl9zZW5kX3NldF9udW1iZXIgPSAxLFxuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMzAtXHR9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjEzMTpcdFtORkNfRElHSVRBTF9SRl9URUNIXzEwNkFdID0ge1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEzMi1cdFx0LmluX3NlbmRfc2V0X251bWJlciA9IDIsXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEzNi1cdH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTM3Olx0W05GQ19ESUdJVEFMX1JGX1RFQ0hfMTA2Ql0gPSB7XG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTM4LVx0XHQuaW5fc2VuZF9zZXRfbnVtYmVyID0gMyxcbi0tXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTQyLVx0fSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxNDM6XHQvKiBFbnN1cmVzIHRoZSBhcnJheSBoYXMgTkZDX0RJR0lUQUxfUkZfVEVDSF9MQVNUIGVsZW1lbnRzICovXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTQ0Olx0W05GQ19ESUdJVEFMX1JGX1RFQ0hfTEFTVF0gPSB7IDAgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xNDUtfTtcbi0tXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM9MTY3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcG9ydDEwMF90Z19yZl9zZXR0aW5nIHRnX3JmX3NldHRpbmdzW10gPSB7XG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTY4Olx0W05GQ19ESUdJVEFMX1JGX1RFQ0hfMTA2QV0gPSB7XG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTY5LVx0XHQudGdfc2V0X251bWJlciA9IDgsXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE3MS1cdH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTcyOlx0W05GQ19ESUdJVEFMX1JGX1RFQ0hfMjEyRl0gPSB7XG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTczLVx0XHQudGdfc2V0X251bWJlciA9IDgsXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE3NS1cdH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTc2Olx0W05GQ19ESUdJVEFMX1JGX1RFQ0hfNDI0Rl0gPSB7XG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTc3LVx0XHQudGdfc2V0X251bWJlciA9IDgsXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE3OS1cdH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTgwOlx0LyogRW5zdXJlcyB0aGUgYXJyYXkgaGFzIE5GQ19ESUdJVEFMX1JGX1RFQ0hfTEFTVCBlbGVtZW50cyAqL1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjE4MTpcdFtORkNfRElHSVRBTF9SRl9URUNIX0xBU1RdID0geyAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTgyLVxuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYz0yMjE9aW5fcHJvdG9jb2xzW11bUE9SVDEwMF9JTl9NQVhfTlVNX1BST1RPQ09MUyAmIzQzOyAxXSA9IHtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyMjI6XHRbTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX1NIT1JUXSA9IHtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0yMjMtXHRcdHsgUE9SVDEwMF9JTl9QUk9UX0lOSVRJQUxfR1VBUkRfVElNRSwgICAgICA2IH0sXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTI0My1cdH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjQ0Olx0W05GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQV9TVEFOREFSRF0gPSB7XG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMjQ1LVx0XHR7IFBPUlQxMDBfSU5fUFJPVF9JTklUSUFMX0dVQVJEX1RJTUUsICAgICAgNiB9LFxuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0yNjUtXHR9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI2NjpcdFtORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfU1RBTkRBUkRfV0lUSF9DUkNfQV0gPSB7XG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMjY3LVx0XHR7IFBPUlQxMDBfSU5fUFJPVF9JTklUSUFMX0dVQVJEX1RJTUUsICAgICAgNiB9LFxuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0yODctXHR9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI4ODpcdFtORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfVDFUXSA9IHtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0yODktXHRcdC8qIG5mY19kaWdpdGFsX2ZyYW1pbmdfbmZjYV9zaG9ydCAqL1xuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0yOTUtXHR9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI5NjpcdFtORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfVDJUXSA9IHtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0yOTctXHRcdC8qIG5mY19kaWdpdGFsX2ZyYW1pbmdfbmZjYV9zdGFuZGFyZCAqL1xuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0zMDEtXHR9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjMwMjpcdFtORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfVDRUXSA9IHtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0zMDMtXHRcdC8qIG5mY19kaWdpdGFsX2ZyYW1pbmdfbmZjYV9zdGFuZGFyZF93aXRoX2NyY19hICovXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTMwNS1cdH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzA2Olx0W05GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQV9ORkNfREVQXSA9IHtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0zMDctXHRcdC8qIG5mY19kaWdpdGFsX2ZyYW1pbmdfbmZjYV9zdGFuZGFyZCAqL1xuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0zMDktXHR9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjMxMDpcdFtORkNfRElHSVRBTF9GUkFNSU5HX05GQ0ZdID0ge1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTMxMS1cdFx0eyBQT1JUMTAwX0lOX1BST1RfSU5JVElBTF9HVUFSRF9USU1FLCAgICAgMTggfSxcbi0tXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzMxLVx0fSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozMzI6XHRbTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNGX1QzVF0gPSB7XG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzMzLVx0XHQvKiBuZmNfZGlnaXRhbF9mcmFtaW5nX25mY2YgKi9cbi0tXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzM1LVx0fSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozMzY6XHRbTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNGX05GQ19ERVBdID0ge1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTMzNy1cdFx0LyogbmZjX2RpZ2l0YWxfZnJhbWluZ19uZmNmICovXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTM1OC1cdH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzU5Olx0W05GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDX0RFUF9BQ1RJVkFURURdID0ge1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTM2MC1cdFx0eyBQT1JUMTAwX0lOX1BST1RfRU5ELCAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzYxLVx0fSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozNjI6XHRbTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNCXSA9IHtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0zNjMtXHRcdHsgUE9SVDEwMF9JTl9QUk9UX0lOSVRJQUxfR1VBUkRfVElNRSwgICAgIDIwIH0sXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTM4My1cdH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6Mzg0Olx0W05GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQl9UNFRdID0ge1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTM4NS1cdFx0LyogbmZjX2RpZ2l0YWxfZnJhbWluZ19uZmNiICovXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTM4Ny1cdH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6Mzg4Olx0LyogRW5zdXJlcyB0aGUgYXJyYXkgaGFzIE5GQ19ESUdJVEFMX0ZSQU1JTkdfTEFTVCBlbGVtZW50cyAqL1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjM4OTpcdFtORkNfRElHSVRBTF9GUkFNSU5HX0xBU1RdID0ge1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTM5MC1cdFx0eyBQT1JUMTAwX0lOX1BST1RfRU5ELCAwIH0sXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jPTM5NT10Z19wcm90b2NvbHNbXVtQT1JUMTAwX1RHX01BWF9OVU1fUFJPVE9DT0xTICYjNDM7IDFdID0ge1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjM5NjpcdFtORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfU0hPUlRdID0ge1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTM5Ny1cdFx0eyBQT1JUMTAwX1RHX1BST1RfRU5ELCAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzk4LVx0fSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozOTk6XHRbTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX1NUQU5EQVJEXSA9IHtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy00MDAtXHRcdHsgUE9SVDEwMF9UR19QUk9UX0VORCwgMCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTQwMS1cdH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6NDAyOlx0W05GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQV9TVEFOREFSRF9XSVRIX0NSQ19BXSA9IHtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy00MDMtXHRcdHsgUE9SVDEwMF9UR19QUk9UX0VORCwgMCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTQwNC1cdH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6NDA1Olx0W05GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQV9UMVRdID0ge1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTQwNi1cdFx0eyBQT1JUMTAwX1RHX1BST1RfRU5ELCAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtNDA3LVx0fSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo0MDg6XHRbTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX1QyVF0gPSB7XG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtNDA5LVx0XHR7IFBPUlQxMDBfVEdfUFJPVF9FTkQsIDAgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy00MTAtXHR9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjQxMTpcdFtORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfTkZDX0RFUF0gPSB7XG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtNDEyLVx0XHR7IFBPUlQxMDBfVEdfUFJPVF9UVSwgICAgIDEgfSxcbi0tXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtNDE2LVx0fSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo0MTc6XHRbTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNGXSA9IHtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy00MTgtXHRcdHsgUE9SVDEwMF9UR19QUk9UX0VORCwgMCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTQxOS1cdH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6NDIwOlx0W05GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDRl9UM1RdID0ge1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTQyMS1cdFx0eyBQT1JUMTAwX1RHX1BST1RfRU5ELCAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtNDIyLVx0fSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo0MjM6XHRbTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNGX05GQ19ERVBdID0ge1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTQyNC1cdFx0eyBQT1JUMTAwX1RHX1BST1RfVFUsICAgICAxIH0sXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTQyOC1cdH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6NDI5Olx0W05GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDX0RFUF9BQ1RJVkFURURdID0ge1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTQzMC1cdFx0eyBQT1JUMTAwX1RHX1BST1RfUkZfT0ZGLCAxIH0sXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTQzMi1cdH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6NDMzOlx0LyogRW5zdXJlcyB0aGUgYXJyYXkgaGFzIE5GQ19ESUdJVEFMX0ZSQU1JTkdfTEFTVCBlbGVtZW50cyAqL1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjQzNDpcdFtORkNfRElHSVRBTF9GUkFNSU5HX0xBU1RdID0ge1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTQzNS1cdFx0eyBQT1JUMTAwX1RHX1BST1RfRU5ELCAgICAwIH0sXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jPTEwNzI9c3RhdGljIGludCBwb3J0MTAwX2luX3NldF9yZihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB1OCByZilcbi0tXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTA3OC1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxMDc5Olx0aWYgKHJmIFx1MDAzZT0gTkZDX0RJR0lUQUxfUkZfVEVDSF9MQVNUKVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEwODAtXHRcdHJldHVybiAtRUlOVkFMO1xuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYz0xMTAxPXN0YXRpYyBpbnQgcG9ydDEwMF9pbl9zZXRfZnJhbWluZyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBpbnQgcGFyYW0pXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTExMTAtXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTExMTpcdGlmIChwYXJhbSBcdTAwM2U9IE5GQ19ESUdJVEFMX0ZSQU1JTkdfTEFTVClcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMTEyLVx0XHRyZXR1cm4gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM9MTE0Mz1zdGF0aWMgaW50IHBvcnQxMDBfaW5fY29uZmlndXJlX2h3KHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIGludCB0eXBlLFxuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMTQ1LXtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxMTQ2Olx0aWYgKHR5cGUgPT0gTkZDX0RJR0lUQUxfQ09ORklHX1JGX1RFQ0gpXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTE0Ny1cdFx0cmV0dXJuIHBvcnQxMDBfaW5fc2V0X3JmKGRkZXYsIHBhcmFtKTtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMTQ4LVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjExNDk6XHRpZiAodHlwZSA9PSBORkNfRElHSVRBTF9DT05GSUdfRlJBTUlORylcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMTUwLVx0XHRyZXR1cm4gcG9ydDEwMF9pbl9zZXRfZnJhbWluZyhkZGV2LCBwYXJhbSk7XG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jPTEyMjk9c3RhdGljIGludCBwb3J0MTAwX3RnX3NldF9yZihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB1OCByZilcbi0tXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTIzNS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxMjM2Olx0aWYgKHJmIFx1MDAzZT0gTkZDX0RJR0lUQUxfUkZfVEVDSF9MQVNUKVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEyMzctXHRcdHJldHVybiAtRUlOVkFMO1xuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYz0xMjU4PXN0YXRpYyBpbnQgcG9ydDEwMF90Z19zZXRfZnJhbWluZyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBpbnQgcGFyYW0pXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEyNjctXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTI2ODpcdGlmIChwYXJhbSBcdTAwM2U9IE5GQ19ESUdJVEFMX0ZSQU1JTkdfTEFTVClcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMjY5LVx0XHRyZXR1cm4gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM9MTMwMD1zdGF0aWMgaW50IHBvcnQxMDBfdGdfY29uZmlndXJlX2h3KHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIGludCB0eXBlLFxuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMzAyLXtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxMzAzOlx0aWYgKHR5cGUgPT0gTkZDX0RJR0lUQUxfQ09ORklHX1JGX1RFQ0gpXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTMwNC1cdFx0cmV0dXJuIHBvcnQxMDBfdGdfc2V0X3JmKGRkZXYsIHBhcmFtKTtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMzA1LVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjEzMDY6XHRpZiAodHlwZSA9PSBORkNfRElHSVRBTF9DT05GSUdfRlJBTUlORylcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMzA3LVx0XHRyZXR1cm4gcG9ydDEwMF90Z19zZXRfZnJhbWluZyhkZGV2LCBwYXJhbSk7XG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jPTE0MDA9c3RhdGljIGludCBwb3J0MTAwX2xpc3Rlbl9tZGFhKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE0MTAtXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTQxMTpcdHJjID0gcG9ydDEwMF90Z19jb25maWd1cmVfaHcoZGRldiwgTkZDX0RJR0lUQUxfQ09ORklHX1JGX1RFQ0gsXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTQxMjpcdFx0XHRcdCAgICAgTkZDX0RJR0lUQUxfUkZfVEVDSF8xMDZBKTtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xNDEzLVx0aWYgKHJjKVxuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xNDE1LVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjE0MTY6XHRyYyA9IHBvcnQxMDBfdGdfY29uZmlndXJlX2h3KGRkZXYsIE5GQ19ESUdJVEFMX0NPTkZJR19GUkFNSU5HLFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjE0MTc6XHRcdFx0XHQgICAgIE5GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQV9ORkNfREVQKTtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xNDE4LVx0aWYgKHJjKVxuLS1cbmRyaXZlcnMvbmZjL3N0OTVoZi9LY29uZmlnPTI9Y29uZmlnIE5GQ19TVDk1SEZcbmRyaXZlcnMvbmZjL3N0OTVoZi9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtTVDk1SEYgTkZDIFRyYW5zY2VpdmVyIGRyaXZlclwmIzM0O1xuZHJpdmVycy9uZmMvc3Q5NWhmL0tjb25maWc6NDpcdGRlcGVuZHMgb24gU1BJIFx1MDAyNlx1MDAyNiBORkNfRElHSVRBTFxuZHJpdmVycy9uZmMvc3Q5NWhmL0tjb25maWctNS1cdGhlbHBcbi0tXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTMwLS8qIGRyaXZlciBjYXBhYmlsaXRpZXMgKi9cbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6MzE6I2RlZmluZSBTVDk1SEZfQ0FQQUJJTElUSUVTXHRcdE5GQ19ESUdJVEFMX0RSVl9DQVBTX0lOX0NSQ1xuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy0zMi1cbi0tXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jPTM3ND1zdGF0aWMgaW50IHN0OTVoZl9zZWxlY3RfcHJvdG9jb2woc3RydWN0IHN0OTVoZl9jb250ZXh0ICpzdGNvbnRleHQsIGludCB0eXBlKVxuLS1cbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtMzgxLVx0c3dpdGNoICh0eXBlKSB7XG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jOjM4MjpcdGNhc2UgTkZDX0RJR0lUQUxfUkZfVEVDSF8xMDZBOlxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzozODM6XHRcdHN0Y29udGV4dC1cdTAwM2VjdXJyZW50X3JmX3RlY2ggPSBORkNfRElHSVRBTF9SRl9URUNIXzEwNkE7XG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTM4NC1cdFx0cmVzdWx0ID0gc3Q5NWhmX3NlbmRfcmVjdl9jbWQoc3Rjb250ZXh0LFxuLS1cbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtNDAyLVx0XHRicmVhaztcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6NDAzOlx0Y2FzZSBORkNfRElHSVRBTF9SRl9URUNIXzEwNkI6XG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jOjQwNDpcdFx0c3Rjb250ZXh0LVx1MDAzZWN1cnJlbnRfcmZfdGVjaCA9IE5GQ19ESUdJVEFMX1JGX1RFQ0hfMTA2QjtcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtNDA1LVx0XHRyZXN1bHQgPSBzdDk1aGZfc2VuZF9yZWN2X2NtZChzdGNvbnRleHQsXG4tLVxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy00MjktXHRcdGJyZWFrO1xuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzo0MzA6XHRjYXNlIE5GQ19ESUdJVEFMX1JGX1RFQ0hfSVNPMTU2OTM6XG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jOjQzMTpcdFx0c3Rjb250ZXh0LVx1MDAzZWN1cnJlbnRfcmZfdGVjaCA9IE5GQ19ESUdJVEFMX1JGX1RFQ0hfSVNPMTU2OTM7XG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTQzMi1cdFx0cmVzdWx0ID0gc3Q5NWhmX3NlbmRfcmVjdl9jbWQoc3Rjb250ZXh0LFxuLS1cbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM9NjQ4PXN0YXRpYyBpbnQgc3Q5NWhmX2Vycm9yX2hhbmRsaW5nKHN0cnVjdCBzdDk1aGZfY29udGV4dCAqc3Rjb250ZXh0LFxuLS1cbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtNjY2LVx0c3dpdGNoIChzdGNvbnRleHQtXHUwMDNlY3VycmVudF9yZl90ZWNoKSB7XG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jOjY2NzpcdGNhc2UgTkZDX0RJR0lUQUxfUkZfVEVDSF8xMDZBOlxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy02NjgtXHRcdGlmIChzdGNvbnRleHQtXHUwMDNlc2VuZHJjdl90cmZsYWcgPT0gVFJGTEFHX05GQ0FfU1REX0ZSQU1FX0NSQykge1xuLS1cbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtNjc3LVx0XHRicmVhaztcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6Njc4Olx0Y2FzZSBORkNfRElHSVRBTF9SRl9URUNIXzEwNkI6XG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jOjY3OTpcdGNhc2UgTkZDX0RJR0lUQUxfUkZfVEVDSF9JU08xNTY5MzpcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtNjgwLVx0XHRlcnJvcl9ieXRlID0gc2tiX3Jlc3AtXHUwMDNlZGF0YVtyZXNfbGVuIC0gMV07XG4tLVxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYz02OTM9c3RhdGljIGludCBzdDk1aGZfcmVzcG9uc2VfaGFuZGxlcihzdHJ1Y3Qgc3Q5NWhmX2NvbnRleHQgKnN0Y29udGV4dCxcbi0tXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTczNi1cdHN3aXRjaCAoc3Rjb250ZXh0LVx1MDAzZWN1cnJlbnRfcmZfdGVjaCkge1xuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzo3Mzc6XHRjYXNlIE5GQ19ESUdJVEFMX1JGX1RFQ0hfMTA2QTpcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtNzM4LVx0XHRpZiAoc3Rjb250ZXh0LVx1MDAzZXNlbmRyY3ZfdHJmbGFnID09IFRSRkxBR19ORkNBX1NURF9GUkFNRV9DUkMpXG4tLVxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy03NDItXHRcdGJyZWFrO1xuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzo3NDM6XHRjYXNlIE5GQ19ESUdJVEFMX1JGX1RFQ0hfMTA2QjpcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6NzQ0Olx0Y2FzZSBORkNfRElHSVRBTF9SRl9URUNIX0lTTzE1NjkzOlxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy03NDUtXHRcdHNrYl90cmltKHNrYl9yZXNwLCAoc2tiX2xlbiAtIDMpKTtcbi0tXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jPTg2OT1zdGF0aWMgaW50IHN0OTVoZl9pbl9jb25maWd1cmVfaHcoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbi0tXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTg3NC1cbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6ODc1Olx0aWYgKHR5cGUgPT0gTkZDX0RJR0lUQUxfQ09ORklHX1JGX1RFQ0gpXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTg3Ni1cdFx0cmV0dXJuIHN0OTVoZl9zZWxlY3RfcHJvdG9jb2woc3Rjb250ZXh0LCBwYXJhbSk7XG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTg3Ny1cbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6ODc4Olx0aWYgKHR5cGUgPT0gTkZDX0RJR0lUQUxfQ09ORklHX0ZSQU1JTkcpIHtcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtODc5LVx0XHRzd2l0Y2ggKHBhcmFtKSB7XG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jOjg4MDpcdFx0Y2FzZSBORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfU0hPUlQ6XG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTg4MS1cdFx0XHRzdGNvbnRleHQtXHUwMDNlc2VuZHJjdl90cmZsYWcgPSBUUkZMQUdfTkZDQV9TSE9SVF9GUkFNRTtcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtODgyLVx0XHRcdGJyZWFrO1xuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzo4ODM6XHRcdGNhc2UgTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX1NUQU5EQVJEOlxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy04ODQtXHRcdFx0c3Rjb250ZXh0LVx1MDAzZXNlbmRyY3ZfdHJmbGFnID0gVFJGTEFHX05GQ0FfU1REX0ZSQU1FO1xuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy04ODUtXHRcdFx0YnJlYWs7XG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jOjg4NjpcdFx0Y2FzZSBORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfVDRUOlxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzo4ODc6XHRcdGNhc2UgTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX05GQ19ERVA6XG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jOjg4ODpcdFx0Y2FzZSBORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfU1RBTkRBUkRfV0lUSF9DUkNfQTpcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtODg5LVx0XHRcdHN0Y29udGV4dC1cdTAwM2VzZW5kcmN2X3RyZmxhZyA9IFRSRkxBR19ORkNBX1NURF9GUkFNRV9DUkM7XG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTg5MC1cdFx0XHRicmVhaztcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6ODkxOlx0XHRjYXNlIE5GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQjpcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6ODkyOlx0XHRjYXNlIE5GQ19ESUdJVEFMX0ZSQU1JTkdfSVNPMTU2OTNfSU5WRU5UT1JZOlxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzo4OTM6XHRcdGNhc2UgTkZDX0RJR0lUQUxfRlJBTUlOR19JU08xNTY5M19UNVQ6XG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTg5NC1cdFx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jPTkxNT1zdGF0aWMgaW50IHN0OTVoZl9pbl9zZW5kX2NtZChzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxuLS1cbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtOTMwLVx0c3dpdGNoIChzdGNvbnRleHQtXHUwMDNlY3VycmVudF9yZl90ZWNoKSB7XG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jOjkzMTpcdGNhc2UgTkZDX0RJR0lUQUxfUkZfVEVDSF8xMDZBOlxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy05MzItXHRcdGxlbl9kYXRhX3RvX3RhZyA9IHNrYi1cdTAwM2VsZW4gJiM0MzsgMTtcbi0tXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTkzNC1cdFx0YnJlYWs7XG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jOjkzNTpcdGNhc2UgTkZDX0RJR0lUQUxfUkZfVEVDSF8xMDZCOlxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzo5MzY6XHRjYXNlIE5GQ19ESUdJVEFMX1JGX1RFQ0hfSVNPMTU2OTM6XG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTkzNy1cdFx0bGVuX2RhdGFfdG9fdGFnID0gc2tiLVx1MDAzZWxlbjtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTkzLSAqIG1lc3NlcyB1cCB0aGUgZGF0YSByZXR1cm5lZCBzbyBpdCBpcyBvbmx5IGVuYWJsZWQgd2hlbiB0aGUgZnJhbWluZyBpc1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5NDogKiAmIzM5O05GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQV9UMlQmIzM5OyBhbmQgdGhlIGNvbW1hbmQgaXMgbm90IGEgcmVhZCBjb21tYW5kLlxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05NS0gKiBVbmZvcnR1bmF0ZWx5LCB0aGF0IG1lYW5zIHRoYXQgdGhlIGRyaXZlciBoYXMgdG8gcGVlayBpbnRvIHR4IGZyYW1lc1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5NjogKiB3aGVuIHRoZSBmcmFtaW5nIGlzICYjMzk7TkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX1QyVCYjMzk7LiAgVGhpcyBpcyBkb25lIGJ5XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk3LSAqIHRoZSB0cmY3OTcwYV9wZXJfY21kX2NvbmZpZygpIHJvdXRpbmUuXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYz02MTc9c3RhdGljIGludCB0cmY3OTcwYV9tb2RlX2RldGVjdChzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgdTggKnJmX3RlY2gpXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02MjctXHRjYXNlIFRSRjc5MDcwQV9ORkNfVEFSR0VUX1BST1RPQ09MXzEwNkE6XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjYyODpcdFx0dGVjaCA9IE5GQ19ESUdJVEFMX1JGX1RFQ0hfMTA2QTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjI5LVx0XHRicmVhaztcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjMwLVx0Y2FzZSBUUkY3OTA3MEFfTkZDX1RBUkdFVF9QUk9UT0NPTF8xMDZCOlxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo2MzE6XHRcdHRlY2ggPSBORkNfRElHSVRBTF9SRl9URUNIXzEwNkI7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTYzMi1cdFx0YnJlYWs7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTYzMy1cdGNhc2UgVFJGNzkwNzBBX05GQ19UQVJHRVRfUFJPVE9DT0xfMjEyRjpcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NjM0Olx0XHR0ZWNoID0gTkZDX0RJR0lUQUxfUkZfVEVDSF8yMTJGO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02MzUtXHRcdGJyZWFrO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02MzYtXHRjYXNlIFRSRjc5MDcwQV9ORkNfVEFSR0VUX1BST1RPQ09MXzQyNEY6XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjYzNzpcdFx0dGVjaCA9IE5GQ19ESUdJVEFMX1JGX1RFQ0hfNDI0RjtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNjM4LVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jPTc4Mz1zdGF0aWMgdm9pZCB0cmY3OTcwYV9kcmFpbl9maWZvKHN0cnVjdCB0cmY3OTcwYSAqdHJmLCB1OCBzdGF0dXMpXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy04MjgtXHQvKiBJZiByZWNlaXZlZCBUeXBlIDIgQUNLL05BQ0ssIHNoaWZ0IHJpZ2h0IDQgYml0cyBhbmQgcGFzcyB1cCAqL1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo4Mjk6XHRpZiAoKHRyZi1cdTAwM2VmcmFtaW5nID09IE5GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQV9UMlQpIFx1MDAyNlx1MDAyNiAoc2tiLVx1MDAzZWxlbiA9PSAxKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODMwLVx0ICAgICh0cmYtXHUwMDNlc3BlY2lhbF9mY25fcmVnMSA9PSBUUkY3OTcwQV9TUEVDSUFMX0ZDTl9SRUcxXzRfQklUX1JYKSkge1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM9ODY1PXN0YXRpYyBpcnFyZXR1cm5fdCB0cmY3OTcwYV9pcnEoaW50IGlycSwgdm9pZCAqZGV2X2lkKVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTUxLVx0XHRcdHN3aXRjaCAodHJmLVx1MDAzZWZyYW1pbmcpIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTUyOlx0XHRcdGNhc2UgTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX1NUQU5EQVJEOlxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05NTMtXHRcdFx0XHR0cmYtXHUwMDNldHhfY21kID0gVFJGNzk3MEFfQ01EX1RSQU5TTUlUX05PX0NSQztcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk1Ni1cdFx0XHRcdGJyZWFrO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5NTc6XHRcdFx0Y2FzZSBORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfU1RBTkRBUkRfV0lUSF9DUkNfQTpcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTU4LVx0XHRcdFx0dHJmLVx1MDAzZXR4X2NtZCA9IFRSRjc5NzBBX0NNRF9UUkFOU01JVDtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk2MS1cdFx0XHRcdGJyZWFrO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5NjI6XHRcdFx0Y2FzZSBORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfQU5USUNPTF9DT01QTEVURTpcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTYzLVx0XHRcdFx0cmV0ID0gdHJmNzk3MGFfd3JpdGUodHJmLFxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM9MTIxOD1zdGF0aWMgaW50IHRyZjc5NzBhX2luX2NvbmZpZ19yZl90ZWNoKHN0cnVjdCB0cmY3OTcwYSAqdHJmLCBpbnQgdGVjaClcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyMjQtXHRzd2l0Y2ggKHRlY2gpIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTIyNTpcdGNhc2UgTkZDX0RJR0lUQUxfUkZfVEVDSF8xMDZBOlxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjI2LVx0XHR0cmYtXHUwMDNlaXNvX2N0cmxfdGVjaCA9IFRSRjc5NzBBX0lTT19DVFJMXzE0NDQzQV8xMDY7XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjMxLVx0XHRicmVhaztcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTIzMjpcdGNhc2UgTkZDX0RJR0lUQUxfUkZfVEVDSF8xMDZCOlxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjMzLVx0XHR0cmYtXHUwMDNlaXNvX2N0cmxfdGVjaCA9IFRSRjc5NzBBX0lTT19DVFJMXzE0NDQzQl8xMDY7XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjM4LVx0XHRicmVhaztcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTIzOTpcdGNhc2UgTkZDX0RJR0lUQUxfUkZfVEVDSF8yMTJGOlxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjQwLVx0XHR0cmYtXHUwMDNlaXNvX2N0cmxfdGVjaCA9IFRSRjc5NzBBX0lTT19DVFJMX0ZFTElDQV8yMTI7XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjQ1LVx0XHRicmVhaztcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTI0NjpcdGNhc2UgTkZDX0RJR0lUQUxfUkZfVEVDSF80MjRGOlxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjQ3LVx0XHR0cmYtXHUwMDNlaXNvX2N0cmxfdGVjaCA9IFRSRjc5NzBBX0lTT19DVFJMX0ZFTElDQV80MjQ7XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjUyLVx0XHRicmVhaztcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTI1MzpcdGNhc2UgTkZDX0RJR0lUQUxfUkZfVEVDSF9JU08xNTY5MzpcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI1NC1cdFx0dHJmLVx1MDAzZWlzb19jdHJsX3RlY2ggPSBUUkY3OTcwQV9JU09fQ1RSTF8xNTY5M19TR0xfMU9GNF8yNjQ4O1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM9MTMxMj1zdGF0aWMgaW50IHRyZjc5NzBhX2luX2NvbmZpZ19mcmFtaW5nKHN0cnVjdCB0cmY3OTcwYSAqdHJmLCBpbnQgZnJhbWluZylcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzMjAtXHRzd2l0Y2ggKGZyYW1pbmcpIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTMyMTpcdGNhc2UgTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX1NIT1JUOlxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMzIyOlx0Y2FzZSBORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfU1RBTkRBUkQ6XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzMjMtXHRcdHRyZi1cdTAwM2V0eF9jbWQgPSBUUkY3OTcwQV9DTURfVFJBTlNNSVRfTk9fQ1JDO1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTMyNS1cdFx0YnJlYWs7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEzMjY6XHRjYXNlIE5GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQV9TVEFOREFSRF9XSVRIX0NSQ19BOlxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMzI3Olx0Y2FzZSBORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfVDRUOlxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMzI4Olx0Y2FzZSBORkNfRElHSVRBTF9GUkFNSU5HX05GQ0I6XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEzMjk6XHRjYXNlIE5GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQl9UNFQ6XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEzMzA6XHRjYXNlIE5GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDRjpcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTMzMTpcdGNhc2UgTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNGX1QzVDpcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTMzMjpcdGNhc2UgTkZDX0RJR0lUQUxfRlJBTUlOR19JU08xNTY5M19JTlZFTlRPUlk6XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEzMzM6XHRjYXNlIE5GQ19ESUdJVEFMX0ZSQU1JTkdfSVNPMTU2OTNfVDVUOlxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMzM0Olx0Y2FzZSBORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfTkZDX0RFUDpcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTMzNTpcdGNhc2UgTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNGX05GQ19ERVA6XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzMzYtXHRcdHRyZi1cdTAwM2V0eF9jbWQgPSBUUkY3OTcwQV9DTURfVFJBTlNNSVQ7XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzM4LVx0XHRicmVhaztcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTMzOTpcdGNhc2UgTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX1QyVDpcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTM0MC1cdFx0dHJmLVx1MDAzZXR4X2NtZCA9IFRSRjc5NzBBX0NNRF9UUkFOU01JVDtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jPTEzODc9c3RhdGljIGludCB0cmY3OTcwYV9pbl9jb25maWd1cmVfaHcoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgaW50IHR5cGUsXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDA2LVx0c3dpdGNoICh0eXBlKSB7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE0MDc6XHRjYXNlIE5GQ19ESUdJVEFMX0NPTkZJR19SRl9URUNIOlxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDA4LVx0XHRyZXQgPSB0cmY3OTcwYV9pbl9jb25maWdfcmZfdGVjaCh0cmYsIHBhcmFtKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQwOS1cdFx0YnJlYWs7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE0MTA6XHRjYXNlIE5GQ19ESUdJVEFMX0NPTkZJR19GUkFNSU5HOlxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDExLVx0XHRyZXQgPSB0cmY3OTcwYV9pbl9jb25maWdfZnJhbWluZyh0cmYsIHBhcmFtKTtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jPTE0Mzk9c3RhdGljIGludCB0cmY3OTcwYV9wZXJfY21kX2NvbmZpZyhzdHJ1Y3QgdHJmNzk3MGEgKnRyZixcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0NTYtXHQgKi9cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTQ1NzpcdGlmICgodHJmLVx1MDAzZXRlY2hub2xvZ3kgPT0gTkZDX0RJR0lUQUxfUkZfVEVDSF8xMDZBKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTQ1ODpcdCAgICAodHJmLVx1MDAzZWZyYW1pbmcgPT0gTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX1QyVCkpIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQ1OS1cdFx0aWYgKHJlcVswXSA9PSBORkNfVDJUX0NNRF9SRUFEKVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQ3MS1cdFx0fVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNDcyOlx0fSBlbHNlIGlmICh0cmYtXHUwMDNldGVjaG5vbG9neSA9PSBORkNfRElHSVRBTF9SRl9URUNIX0lTTzE1NjkzKSB7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0NzMtXHRcdGlzb19jdHJsID0gdHJmLVx1MDAzZWlzb19jdHJsIFx1MDAyNiB+VFJGNzk3MEFfSVNPX0NUUkxfUkZJRF9TUEVFRF9NQVNLO1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQ5OC1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTQ5OTpcdFx0aWYgKCh0cmYtXHUwMDNlZnJhbWluZyA9PSBORkNfRElHSVRBTF9GUkFNSU5HX0lTTzE1NjkzX1Q1VCkgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE1MDAtXHRcdCAgICB0cmY3OTcwYV9pc19pc28xNTY5M193cml0ZV9vcl9sb2NrKHJlcVsxXSkgXHUwMDI2XHUwMDI2XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYz0xNTA4PXN0YXRpYyBpbnQgdHJmNzk3MGFfc2VuZF9jbWQoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE1ODQtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE1ODU6XHRpZiAodHJmLVx1MDAzZWZyYW1pbmcgPT0gTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX1NIT1JUKSB7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE1ODYtXHRcdHByZWZpeFszXSA9IDB4MDA7XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYz0xNjEyPXN0YXRpYyBpbnQgdHJmNzk3MGFfdGdfY29uZmlnX3JmX3RlY2goc3RydWN0IHRyZjc5NzBhICp0cmYsIGludCB0ZWNoKVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTYxOC1cdHN3aXRjaCAodGVjaCkge1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNjE5Olx0Y2FzZSBORkNfRElHSVRBTF9SRl9URUNIXzEwNkE6XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE2MjAtXHRcdHRyZi1cdTAwM2Vpc29fY3RybF90ZWNoID0gVFJGNzk3MEFfSVNPX0NUUkxfTkZDX05GQ19DRV9NT0RFIHxcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE2MjUtXHRcdGJyZWFrO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNjI2Olx0Y2FzZSBORkNfRElHSVRBTF9SRl9URUNIXzIxMkY6XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE2MjctXHRcdHRyZi1cdTAwM2Vpc29fY3RybF90ZWNoID0gVFJGNzk3MEFfSVNPX0NUUkxfTkZDX05GQ19DRV9NT0RFIHxcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE2MzItXHRcdGJyZWFrO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNjMzOlx0Y2FzZSBORkNfRElHSVRBTF9SRl9URUNIXzQyNEY6XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE2MzQtXHRcdHRyZi1cdTAwM2Vpc29fY3RybF90ZWNoID0gVFJGNzk3MEFfSVNPX0NUUkxfTkZDX05GQ19DRV9NT0RFIHxcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE2NTMtXHQgKi9cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTY1NDpcdGlmICgodHJmLVx1MDAzZWZyYW1pbmcgPT0gTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNfREVQX0FDVElWQVRFRCkgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE2NTUtXHQgICAgKHRyZi1cdTAwM2Vpc29fY3RybF90ZWNoICE9IHRyZi1cdTAwM2Vpc29fY3RybCkpIHtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jPTE2NzA9c3RhdGljIGludCB0cmY3OTcwYV90Z19jb25maWdfZnJhbWluZyhzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgaW50IGZyYW1pbmcpXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNjc3LVx0c3dpdGNoIChmcmFtaW5nKSB7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE2Nzg6XHRjYXNlIE5GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQV9ORkNfREVQOlxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNjc5LVx0XHR0cmYtXHUwMDNldHhfY21kID0gVFJGNzk3MEFfQ01EX1RSQU5TTUlUX05PX0NSQztcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE2ODEtXHRcdGJyZWFrO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNjgyOlx0Y2FzZSBORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfU1RBTkRBUkQ6XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE2ODM6XHRjYXNlIE5GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQV9TVEFOREFSRF9XSVRIX0NSQ19BOlxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNjg0Olx0Y2FzZSBORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfQU5USUNPTF9DT01QTEVURTpcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTY4NS1cdFx0LyogVGhlc2Ugb25lcyBhcmUgYXBwbGllZCBpbiB0aGUgaW50ZXJydXB0IGhhbmRsZXIgKi9cbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE2ODctXHRcdGJyZWFrO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNjg4Olx0Y2FzZSBORkNfRElHSVRBTF9GUkFNSU5HX05GQ0ZfTkZDX0RFUDpcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTY4OS1cdFx0dHJmLVx1MDAzZXR4X2NtZCA9IFRSRjc5NzBBX0NNRF9UUkFOU01JVDtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE2OTEtXHRcdGJyZWFrO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNjkyOlx0Y2FzZSBORkNfRElHSVRBTF9GUkFNSU5HX05GQ19ERVBfQUNUSVZBVEVEOlxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNjkzLVx0XHR0cmYtXHUwMDNldHhfY21kID0gVFJGNzk3MEFfQ01EX1RSQU5TTUlUO1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM9MTcyOT1zdGF0aWMgaW50IHRyZjc5NzBhX3RnX2NvbmZpZ3VyZV9odyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBpbnQgdHlwZSxcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE3NDgtXHRzd2l0Y2ggKHR5cGUpIHtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTc0OTpcdGNhc2UgTkZDX0RJR0lUQUxfQ09ORklHX1JGX1RFQ0g6XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE3NTAtXHRcdHJldCA9IHRyZjc5NzBhX3RnX2NvbmZpZ19yZl90ZWNoKHRyZiwgcGFyYW0pO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNzUxLVx0XHRicmVhaztcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTc1MjpcdGNhc2UgTkZDX0RJR0lUQUxfQ09ORklHX0ZSQU1JTkc6XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE3NTMtXHRcdHJldCA9IHRyZjc5NzBhX3RnX2NvbmZpZ19mcmFtaW5nKHRyZiwgcGFyYW0pO1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM9MTg1NT1zdGF0aWMgaW50IHRyZjc5NzBhX3RnX2xpc3Rlbl9tZChzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTg2NC1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTg2NTpcdHJldCA9IHRyZjc5NzBhX3RnX2NvbmZpZ3VyZV9odyhkZGV2LCBORkNfRElHSVRBTF9DT05GSUdfUkZfVEVDSCxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTg2NjpcdFx0XHRcdCAgICAgICBORkNfRElHSVRBTF9SRl9URUNIXzEwNkEpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xODY3LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE4NjktXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE4NzA6XHRyZXQgPSB0cmY3OTcwYV90Z19jb25maWd1cmVfaHcoZGRldiwgTkZDX0RJR0lUQUxfQ09ORklHX0ZSQU1JTkcsXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE4NzE6XHRcdFx0XHQgICAgICAgTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX05GQ19ERVApO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xODcyLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jPTIwNDU9c3RhdGljIGludCB0cmY3OTcwYV9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMjE3NS1cdFx0XHRcdFx0XHRUUkY3OTcwQV9TVVBQT1JURURfUFJPVE9DT0xTLFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoyMTc2Olx0XHRcdFx0XHRcdE5GQ19ESUdJVEFMX0RSVl9DQVBTX0lOX0NSQyB8XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjIxNzc6XHRcdFx0XHRcdFx0TkZDX0RJR0lUQUxfRFJWX0NBUFNfVEdfQ1JDLCAwLFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0yMTc4LVx0XHRcdFx0XHRcdDApO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMiAxMzoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjI3NwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDY0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBORkMgRHJpdmVyIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgTkZDLXJlbGF0ZWQgY29uZmlndXJhdGlvbnMgYW5kIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGVpciByZWxhdGlvbnNoaXBzLiBTcGVjaWZpY2FsbHksIEkgc2VlIHRoYXQgYE5GQ19QT1JUMTAwYCBpcyBkZXBlbmRlbnQgb24gYm90aCBgVVNCYCBhbmQgYE5GQ19ESUdJVEFMYC4gVGhhdCBtYWtlcyBzZW5zZTsgYE5GQ19QT1JUMTAwYCBwcm9iYWJseSByZWZlcnMgdG8gYSBzcGVjaWZpYyB0eXBlIG9mIE5GQyByZWFkZXIgdGhhdCBpbnRlcmZhY2VzIHZpYSBVU0IuIEFuZCBvZiBjb3Vyc2UsIGl0IG5lZWRzIHRoZSB1bmRlcmx5aW5nIGRpZ2l0YWwgTkZDIHN1cHBvcnQuIFRoZW4gSSBzZWUgYE5GQ19TSU1gIG9ubHkgZGVwZW5kcyBvbiBgTkZDX0RJR0lUQUxgLCB3aGljaCBsaWtlbHkgbWVhbnMgYE5GQ19TSU1gIHN1cHBvcnQgdXNlcyBORkMgZnVuY3Rpb25hbGl0eSBidXQgbm90IGEgVVNCIGNvbm5lY3Rpb24uCgpUbyBnZXQgYSBjbGVhcmVyIHBpY3R1cmUgb2YgaG93IHRoZXNlIG9wdGlvbnMgYXJlIHN0cnVjdHVyZWQsIEkgc2hvdWxkIGRpdmUgaW50byB0aGUgS2NvbmZpZyBmaWxlIGZvciB0aGUgTkZDIGRyaXZlcnMuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgYGRyaXZlcnMvbmZjL0tjb25maWdgIHRvIHNlZSB0aGUgY29tcGxldGUgY29udGV4dCBhcm91bmQgYE5GQ19QT1JUMTAwYCBhbmQgYE5GQ19TSU1gLiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIGluZm9ybWF0aW9uIGFib3V0IGRlZmF1bHQgdmFsdWVzLCBoZWxwIHRleHQsIGFuZCBvdGhlciBkZXBlbmRlbmNpZXMgdGhhdCBJIGhhdmVuJiMzOTt0IGNvbnNpZGVyZWQgeWV0LiBVbmRlcnN0YW5kaW5nIHRoZSBLY29uZmlnIGhpZXJhcmNoeSBpcyBrZXkgdG8gbWFraW5nIHN1cmUgbXkgY29uZmlndXJhdGlvbnMgYXJlIGNvcnJlY3QgYW5kIGRvbiYjMzk7dCBpbnRyb2R1Y2UgYW55IGNvbmZsaWN0cy4gVGltZSB0byBkaWcgaW4hCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEyIDEzOjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZmMvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDMwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDI1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgMzA6XHRcbiAgMzE6XHRjb25maWcgTkZDX1NJTVxuICAzMjpcdFx0dHJpc3RhdGUgXCYjMzQ7TkZDIGhhcmR3YXJlIHNpbXVsYXRvciBkcml2ZXJcJiMzNDtcbiAgMzM6XHRcdGRlcGVuZHMgb24gTkZDX0RJR0lUQUxcbiAgMzQ6XHRcdGhlbHBcbiAgMzU6XHRcdCAgVGhpcyBkcml2ZXIgZGVjbGFyZXMgdHdvIHZpcnR1YWwgTkZDIGRldmljZXMgc3VwcG9ydGluZyBORkMtREVQXG4gIDM2Olx0XHQgIHByb3RvY29sLiBBbiBMTENQIGNvbm5lY3Rpb24gY2FuIGJlIGVzdGFibGlzaGVkIGJldHdlZW4gdGhlbSBhbmRcbiAgMzc6XHRcdCAgYWxsIHBhY2tldHMgc2VudCBmcm9tIG9uZSBkZXZpY2UgaXMgc2VudCBiYWNrIHRvIHRoZSBvdGhlciwgYWN0aW5nIGFzXG4gIDM4Olx0XHQgIGxvb3BiYWNrIGRldmljZXMuXG4gIDM5Olx0XG4gIDQwOlx0XHQgIElmIHVuc3VyZSwgc2F5IE4uXG4gIDQxOlx0XG4gIDQyOlx0Y29uZmlnIE5GQ19QT1JUMTAwXG4gIDQzOlx0XHR0cmlzdGF0ZSBcJiMzNDtTb255IE5GQyBQb3J0LTEwMCBTZXJpZXMgVVNCIGRldmljZSBzdXBwb3J0XCYjMzQ7XG4gIDQ0Olx0XHRkZXBlbmRzIG9uIFVTQlxuICA0NTpcdFx0ZGVwZW5kcyBvbiBORkNfRElHSVRBTFxuICA0NjpcdFx0aGVscFxuICA0NzpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgU29ueSBQb3J0LTEwMCBjaGlwIGJhc2VkIFVTQiBkZXZpY2VzIHN1Y2ggYXMgdGhlXG4gIDQ4Olx0XHQgIFJDLVMzODAgZG9uZ2xlLlxuICA0OTpcdFxuICA1MDpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuICA1MTpcdFxuICA1MjpcdGNvbmZpZyBORkNfVklSVFVBTF9OQ0lcbiAgNTM6XHRcdHRyaXN0YXRlIFwmIzM0O05DSSBkZXZpY2Ugc2ltdWxhdG9yIGRyaXZlclwmIzM0O1xuICA1NDpcdFx0ZGVwZW5kcyBvbiBORkNfTkNJXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEyIDEzOjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2OTU0CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMjQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IE5GQyBGdXp6aW5nIEh5cG90aGVzaXMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkmIzM5O20gbG9va2luZyBhdCBgTkZDX1NJTWAsIHRoYXQgdmlydHVhbCBORkMgZHJpdmVyLCBlc3NlbnRpYWxseSBhIGxvb3BiYWNrIGZvciBORkMtREVQLiBJbnRlcmVzdGluZywgYSBjbG9zZWQgc3lzdGVtIHRvIGV4cGxvcmUgYW5kIHBlcmhhcHMgbGV2ZXJhZ2UuIFRoZW4gdGhlcmUmIzM5O3MgYE5GQ19QT1JUMTAwYCwgd2hpY2ggaXMgU29ueSYjMzk7cyBORkMgVVNCIGRldmljZSBkcml2ZXIsIG9idmlvdXNseSBVU0ItZGVwZW5kZW50LiBOb3cgdGhlIGNydWNpYWwgY29ubmVjdGlvbjogc3l6a2FsbGVyIGhhcyBVU0IgZnV6emluZyBjYXBhYmlsaXRpZXMgd2l0aCBpdHMgZ2FkZ2V0IGFuZCByYXdfZ2FkZ2V0IGZlYXR1cmVzLCBhbmQgaXQmIzM5O3MgYWxyZWFkeSBoYW1tZXJpbmcgYXdheSBhdCBORkMgc29ja2V0cyAoQUZfTkZDKSBhbmQgbmV0bGluay4gVGhpcyBpcyBwcm9taXNpbmcsIGVzcGVjaWFsbHkgZ2l2ZW4gaG93IGFnZ3Jlc3NpdmVseSBzeXprYWxsZXIgdGFyZ2V0cyBgbmV0L25mYy9gIGdlbmVyYWxseSwgcmV2ZWFsaW5nIHBsZW50eSBvZiBidWdzLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtEb2VzIHN5emthbGxlciBoYXZlIE5GQyBzeXNjYWxsIGRlc2NyaXB0aW9ucywgb3IgaXMgaXQgYWxyZWFkeSBmdXp6aW5nIE5GQyBlZmZlY3RpdmVseT8mIzM0OyBJdCBtYWtlcyBzZW5zZSB0byB2ZXJpZnkuCgpBIHF1aWNrIGNoZWNrIGNvbmZpcm1zIGBBRl9ORkNgIGlzIGluZGVlZCBwcmVzZW50IGluIHRoZSBrZXJuZWwgdmlhIGBuZXQvbmZjL2FmX25mYy5jYC4gTm93LCBJIHdhbnQgdG8gdW5kZXJzdGFuZCAqaG93KiBgZGlnaXRhbF9kZXBgIGlzIGludm9rZWQuIFdoYXQgYXJlIHRoZSBjYWxsaW5nIHBhdHRlcm5zPyBJJiMzOTtsbCB1c2UgYGRpZ2l0YWxfZGVwYCBvciBgbmZjX2RpZ2l0YWxgIGFzIHRoZSBzZWFyY2ggdGVybXMgd2l0aGluIGBuZXQvbmZjL2AgZm9yIG1vcmUgY29udGV4dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTIgMTM6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmZjJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZmMvZGlnaXRhbF9kZXAuYz0xMDY9c3RhdGljIHZvaWQgZGlnaXRhbF9pbl9yZWN2X2RlcF9yZXMoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwNy1cdFx0XHRcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqcmVzcCk7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTA4OnN0YXRpYyB2b2lkIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDktXHRcdFx0XHQgICAgc3RydWN0IHNrX2J1ZmYgKnJlc3ApO1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz05Nzg9c3RhdGljIGludCBkaWdpdGFsX3RnX3NlbmRfYWNrKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwMTItXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTAxMzpcdHJjID0gZGlnaXRhbF90Z19zZW5kX2NtZChkZGV2LCBza2IsIDE1MDAsIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxLFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwMTQtXHRcdFx0XHQgZGF0YV9leGNoKTtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9MTAyND1zdGF0aWMgaW50IGRpZ2l0YWxfdGdfc2VuZF9hdG4oc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldilcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTA1MS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDUyOlx0cmMgPSBkaWdpdGFsX3RnX3NlbmRfY21kKGRkZXYsIHNrYiwgMTUwMCwgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEsXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTA1My1cdFx0XHRcdCBOVUxMKTtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9MTA2MD1zdGF0aWMgaW50IGRpZ2l0YWxfdGdfc2VuZF9zYXZlZF9za2Ioc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldilcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTA2OS1cdHJjID0gZGlnaXRhbF90Z19zZW5kX2NtZChkZGV2LCBkZGV2LVx1MDAzZXNhdmVkX3NrYiwgMTUwMCxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDcwOlx0XHRcdFx0IGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxLCBOVUxMKTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDcxLVx0aWYgKHJjKVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDc2LVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwNzc6c3RhdGljIHZvaWQgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwNzgtXHRcdFx0XHQgICAgc3RydWN0IHNrX2J1ZmYgKnJlc3ApXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTEyOTc9aW50IGRpZ2l0YWxfdGdfc2VuZF9kZXBfcmVzKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEzMzEtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTMzMjpcdHJjID0gZGlnaXRhbF90Z19zZW5kX2NtZChkZGV2LCB0bXBfc2tiLCAxNTAwLCBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcSxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzMzLVx0XHRcdFx0IE5VTEwpO1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz0xMzQ4PXN0YXRpYyB2b2lkIGRpZ2l0YWxfdGdfc2VuZF9wc2xfcmVzX2NvbXBsZXRlKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEzNTktXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTM2MDpcdGRpZ2l0YWxfdGdfbGlzdGVuKGRkZXYsIDE1MDAsIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxLCBOVUxMKTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzYxLVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz0xNDY3PXN0YXRpYyB2b2lkIGRpZ2l0YWxfdGdfc2VuZF9hdHJfcmVzX2NvbXBsZXRlKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTE0ODUtXHRlbHNlXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTQ4NjpcdFx0ZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEoZGRldiwgYXJnLCByZXNwKTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xNDg3LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTIgMTM6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzg1MjMKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAxMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIERFUCBSZXF1ZXN0IEhhbmRsaW5nKioKCk9rYXksIHNvIGBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcWAgaXMgdGhlIGtleSBmdW5jdGlvbiwgdGhlIHJlY2VpdmUgaGFuZGxlciBmb3IgREVQIHJlcXVlc3RzIGluIHRhcmdldCBtb2RlLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB0cmFjZSB0aGUgZXhlY3V0aW9uIGZsb3cgYW5kIHNlZSB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGFjdHVhbGx5IHRyaWdnZXJlZCBkdXJpbmcgREVQIGxpbmsgc2V0dXAgb3IgdGFyZ2V0IG9wZXJhdGlvbnMuIEkmIzM5O2xsIG5lZWQgdG8gaWRlbnRpZnkgdGhlIHBvaW50cyBvZiBvcmlnaW4uCgpGaXJzdCwgSSBuZWVkIHRvIGNoZWNrIGBuZXQvbmZjL2RpZ2l0YWxfZGVwLmNgIHRvIHNlZSBob3cgcmVzcG9uc2VzIGFyZSBoYW5kbGVkLiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSBmdW5jdGlvbiBjYWxscyB0aGF0IG1pZ2h0IHJlbGF0ZSB0byB0aGUgdHJpZ2dlci4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGludGVyZXN0ZWQgaW4gYGRpZ2l0YWxfdGdfc2VuZF9hdHJfcmVzX2NvbXBsZXRlYCwgYGRpZ2l0YWxfdGdfc2VuZF9kZXBfcmVzYCwgYW5kIGBkaWdpdGFsX3RnX3NlbmRfcHNsX3Jlc19jb21wbGV0ZWAsIHRvIHNlZSBpZiB0aGVyZSBpcyBhbnkgaW5kaWNhdGlvbiBvZiB0aGUgY2FsbCB0byB0aGUgcmVjZWl2ZSBoYW5kbGVyLgoKTmV4dCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSB0YXJnZXQgbGlzdGVucyBhbmQgaW5pdGlhdGVzIGl0c2VsZi4gRm9yIHRoaXMgcGFydCwgSSBzaG91bGQgZXhhbWluZSBgZGlnaXRhbF90ZWNobm9sb2d5LmNgIGFuZCBgZGlnaXRhbF9jb3JlLmNgIHRvIGRldGVybWluZSBob3cgdGhlIERFUCBvcGVyYXRpb25zIGFyZSBpbml0aWF0ZWQuIFRoYXQgc2hvdWxkIGdpdmUgYSBtb3JlIGNvbXBsZXRlIHBpY3R1cmUgb2YgdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMiAxMzoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkaWdpdGFsX3RnXyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25mYy9kaWdpdGFsLmg9NDg9aW50IGRpZ2l0YWxfc2VuZF9jbWQoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdTggY21kX3R5cGUsXG5uZXQvbmZjL2RpZ2l0YWwuaDo0OTpcdFx0ICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZGlnaXRhbF90Z19tZGFhX3BhcmFtcyAqcGFyYW1zLFxubmV0L25mYy9kaWdpdGFsLmgtNTAtXHRcdCAgICAgdTE2IHRpbWVvdXQsIG5mY19kaWdpdGFsX2NtZF9jb21wbGV0ZV90IGNtZF9jYixcbi0tXG5uZXQvbmZjL2RpZ2l0YWwuaD04Mz1pbnQgZGlnaXRhbF9pbl9zZW5kX2RlcF9yZXEoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbi0tXG5uZXQvbmZjL2RpZ2l0YWwuaC04Ni1cbm5ldC9uZmMvZGlnaXRhbC5oOjg3OmludCBkaWdpdGFsX3RnX2NvbmZpZ3VyZV9odyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBpbnQgdHlwZSwgaW50IHBhcmFtKTtcbm5ldC9uZmMvZGlnaXRhbC5oOjg4OnN0YXRpYyBpbmxpbmUgaW50IGRpZ2l0YWxfdGdfc2VuZF9jbWQoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbm5ldC9uZmMvZGlnaXRhbC5oLTg5LVx0XHRcdHN0cnVjdCBza19idWZmICpza2IsIHUxNiB0aW1lb3V0LFxuLS1cbm5ldC9uZmMvZGlnaXRhbC5oLTk1LVxubmV0L25mYy9kaWdpdGFsLmg6OTY6dm9pZCBkaWdpdGFsX3RnX3JlY3Zfc2Vuc19yZXEoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxubmV0L25mYy9kaWdpdGFsLmgtOTctXHRcdFx0ICAgICAgc3RydWN0IHNrX2J1ZmYgKnJlc3ApO1xubmV0L25mYy9kaWdpdGFsLmgtOTgtXG5uZXQvbmZjL2RpZ2l0YWwuaDo5OTp2b2lkIGRpZ2l0YWxfdGdfcmVjdl9zZW5zZl9yZXEoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxubmV0L25mYy9kaWdpdGFsLmgtMTAwLVx0XHRcdCAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqcmVzcCk7XG5uZXQvbmZjL2RpZ2l0YWwuaC0xMDEtXG5uZXQvbmZjL2RpZ2l0YWwuaDoxMDI6c3RhdGljIGlubGluZSBpbnQgZGlnaXRhbF90Z19saXN0ZW4oc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdTE2IHRpbWVvdXQsXG5uZXQvbmZjL2RpZ2l0YWwuaC0xMDMtXHRcdFx0XHQgICAgbmZjX2RpZ2l0YWxfY21kX2NvbXBsZXRlX3QgY2IsIHZvaWQgKmFyZylcbi0tXG5uZXQvbmZjL2RpZ2l0YWwuaC0xMDgtXG5uZXQvbmZjL2RpZ2l0YWwuaDoxMDk6dm9pZCBkaWdpdGFsX3RnX3JlY3ZfYXRyX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB2b2lkICphcmcsXG5uZXQvbmZjL2RpZ2l0YWwuaC0xMTAtXHRcdFx0ICAgICBzdHJ1Y3Qgc2tfYnVmZiAqcmVzcCk7XG5uZXQvbmZjL2RpZ2l0YWwuaC0xMTEtXG5uZXQvbmZjL2RpZ2l0YWwuaDoxMTI6aW50IGRpZ2l0YWxfdGdfc2VuZF9kZXBfcmVzKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHN0cnVjdCBza19idWZmICpza2IpO1xubmV0L25mYy9kaWdpdGFsLmgtMTEzLVxubmV0L25mYy9kaWdpdGFsLmg6MTE0OmludCBkaWdpdGFsX3RnX2xpc3Rlbl9uZmNhKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHU4IHJmX3RlY2gpO1xubmV0L25mYy9kaWdpdGFsLmg6MTE1OmludCBkaWdpdGFsX3RnX2xpc3Rlbl9uZmNmKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHU4IHJmX3RlY2gpO1xubmV0L25mYy9kaWdpdGFsLmg6MTE2OnZvaWQgZGlnaXRhbF90Z19yZWN2X21kX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB2b2lkICphcmcsXG5uZXQvbmZjL2RpZ2l0YWwuaC0xMTctXHRcdFx0ICAgIHN0cnVjdCBza19idWZmICpyZXNwKTtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jPTI3PXN0cnVjdCBkaWdpdGFsX2NtZCB7XG4tLVxubmV0L25mYy9kaWdpdGFsX2NvcmUuYy0zNS1cdHN0cnVjdCBza19idWZmICpyZXNwO1xubmV0L25mYy9kaWdpdGFsX2NvcmUuYzozNjpcdHN0cnVjdCBkaWdpdGFsX3RnX21kYWFfcGFyYW1zICptZGFhX3BhcmFtcztcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtMzctXG4tLVxubmV0L25mYy9kaWdpdGFsX2NvcmUuYz0xNTI9c3RhdGljIHZvaWQgZGlnaXRhbF93cV9jbWQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtMTU1LVx0c3RydWN0IGRpZ2l0YWxfY21kICpjbWQ7XG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jOjE1NjpcdHN0cnVjdCBkaWdpdGFsX3RnX21kYWFfcGFyYW1zICpwYXJhbXM7XG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTE1Ny1cdHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYgPSBjb250YWluZXJfb2Yod29yayxcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jPTIyNz1pbnQgZGlnaXRhbF9zZW5kX2NtZChzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB1OCBjbWRfdHlwZSxcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmM6MjI4Olx0XHQgICAgIHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBkaWdpdGFsX3RnX21kYWFfcGFyYW1zICpwYXJhbXMsXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTIyOS1cdFx0ICAgICB1MTYgdGltZW91dCwgbmZjX2RpZ2l0YWxfY21kX2NvbXBsZXRlX3QgY21kX2NiLFxuLS1cbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmM9MjU1PWludCBkaWdpdGFsX2luX2NvbmZpZ3VyZV9odyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBpbnQgdHlwZSwgaW50IHBhcmFtKVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtMjY1LVxubmV0L25mYy9kaWdpdGFsX2NvcmUuYzoyNjY6aW50IGRpZ2l0YWxfdGdfY29uZmlndXJlX2h3KHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIGludCB0eXBlLCBpbnQgcGFyYW0pXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTI2Ny17XG4tLVxubmV0L25mYy9kaWdpdGFsX2NvcmUuYy0yNzYtXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jOjI3NzpzdGF0aWMgaW50IGRpZ2l0YWxfdGdfbGlzdGVuX21kYWEoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdTggcmZfdGVjaClcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtMjc4LXtcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmM6Mjc5Olx0c3RydWN0IGRpZ2l0YWxfdGdfbWRhYV9wYXJhbXMgKnBhcmFtcztcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtMjgwLVx0aW50IHJjO1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtMjk1LVx0cmMgPSBkaWdpdGFsX3NlbmRfY21kKGRkZXYsIERJR0lUQUxfQ01EX1RHX0xJU1RFTl9NREFBLCBOVUxMLCBwYXJhbXMsXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jOjI5NjpcdFx0XHQgICAgICA1MDAsIGRpZ2l0YWxfdGdfcmVjdl9hdHJfcmVxLCBOVUxMKTtcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtMjk3LVx0aWYgKHJjKVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtMzAyLVxubmV0L25mYy9kaWdpdGFsX2NvcmUuYzozMDM6c3RhdGljIGludCBkaWdpdGFsX3RnX2xpc3Rlbl9tZChzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB1OCByZl90ZWNoKVxubmV0L25mYy9kaWdpdGFsX2NvcmUuYy0zMDQte1xubmV0L25mYy9kaWdpdGFsX2NvcmUuYy0zMDUtXHRyZXR1cm4gZGlnaXRhbF9zZW5kX2NtZChkZGV2LCBESUdJVEFMX0NNRF9UR19MSVNURU5fTUQsIE5VTEwsIE5VTEwsIDUwMCxcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmM6MzA2Olx0XHRcdFx0ZGlnaXRhbF90Z19yZWN2X21kX3JlcSwgTlVMTCk7XG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTMwNy19XG4tLVxubmV0L25mYy9kaWdpdGFsX2NvcmUuYz00NzY9c3RhdGljIGludCBkaWdpdGFsX3N0YXJ0X3BvbGwoc3RydWN0IG5mY19kZXYgKm5mY19kZXYsIF9fdTMyIGltX3Byb3RvY29scyxcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTUyOC1cdFx0XHRkaWdpdGFsX2FkZF9wb2xsX3RlY2goZGRldiwgMCxcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmM6NTI5Olx0XHRcdFx0XHQgICAgICBkaWdpdGFsX3RnX2xpc3Rlbl9tZGFhKTtcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtNTMwLVx0XHR9IGVsc2UgaWYgKGRkZXYtXHUwMDNlb3BzLVx1MDAzZXRnX2xpc3Rlbl9tZCkge1xubmV0L25mYy9kaWdpdGFsX2NvcmUuYy01MzEtXHRcdFx0ZGlnaXRhbF9hZGRfcG9sbF90ZWNoKGRkZXYsIDAsXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jOjUzMjpcdFx0XHRcdFx0ICAgICAgZGlnaXRhbF90Z19saXN0ZW5fbWQpO1xubmV0L25mYy9kaWdpdGFsX2NvcmUuYy01MzMtXHRcdH0gZWxzZSB7XG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTUzNC1cdFx0XHRkaWdpdGFsX2FkZF9wb2xsX3RlY2goZGRldiwgTkZDX0RJR0lUQUxfUkZfVEVDSF8xMDZBLFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYzo1MzU6XHRcdFx0XHRcdCAgICAgIGRpZ2l0YWxfdGdfbGlzdGVuX25mY2EpO1xubmV0L25mYy9kaWdpdGFsX2NvcmUuYy01MzYtXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTUzNy1cdFx0XHRkaWdpdGFsX2FkZF9wb2xsX3RlY2goZGRldiwgTkZDX0RJR0lUQUxfUkZfVEVDSF8yMTJGLFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYzo1Mzg6XHRcdFx0XHRcdCAgICAgIGRpZ2l0YWxfdGdfbGlzdGVuX25mY2YpO1xubmV0L25mYy9kaWdpdGFsX2NvcmUuYy01MzktXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTU0MC1cdFx0XHRkaWdpdGFsX2FkZF9wb2xsX3RlY2goZGRldiwgTkZDX0RJR0lUQUxfUkZfVEVDSF80MjRGLFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYzo1NDE6XHRcdFx0XHRcdCAgICAgIGRpZ2l0YWxfdGdfbGlzdGVuX25mY2YpO1xubmV0L25mYy9kaWdpdGFsX2NvcmUuYy01NDItXHRcdH1cbi0tXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jPTY0MT1zdGF0aWMgdm9pZCBkaWdpdGFsX2RlYWN0aXZhdGVfdGFyZ2V0KHN0cnVjdCBuZmNfZGV2ICpuZmNfZGV2LFxuLS1cbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtNjU1LVxubmV0L25mYy9kaWdpdGFsX2NvcmUuYzo2NTY6c3RhdGljIGludCBkaWdpdGFsX3RnX3NlbmQoc3RydWN0IG5mY19kZXYgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtNjU3LXtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTY1OS1cbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmM6NjYwOlx0cmV0dXJuIGRpZ2l0YWxfdGdfc2VuZF9kZXBfcmVzKGRkZXYsIHNrYik7XG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTY2MS19XG4tLVxubmV0L25mYy9kaWdpdGFsX2NvcmUuYz03NDQ9c3RhdGljIGNvbnN0IHN0cnVjdCBuZmNfb3BzIGRpZ2l0YWxfbmZjX29wcyA9IHtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTc1Mi1cdC5kZWFjdGl2YXRlX3RhcmdldCA9IGRpZ2l0YWxfZGVhY3RpdmF0ZV90YXJnZXQsXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jOjc1MzpcdC50bV9zZW5kID0gZGlnaXRhbF90Z19zZW5kLFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYy03NTQtXHQuaW1fdHJhbnNjZWl2ZSA9IGRpZ2l0YWxfaW5fc2VuZCxcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9MTA2PXN0YXRpYyB2b2lkIGRpZ2l0YWxfaW5fcmVjdl9kZXBfcmVzKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDctXHRcdFx0XHQgICAgc3RydWN0IHNrX2J1ZmYgKnJlc3ApO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwODpzdGF0aWMgdm9pZCBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB2b2lkICphcmcsXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTA5LVx0XHRcdFx0ICAgIHN0cnVjdCBza19idWZmICpyZXNwKTtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9OTA0PWludCBkaWdpdGFsX2luX3NlbmRfZGVwX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05NTAtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6OTUxOnN0YXRpYyB2b2lkIGRpZ2l0YWxfdGdfc2V0X3JmX3RlY2goc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdTggcmZfdGVjaClcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05NTIte1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05NzctXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6OTc4OnN0YXRpYyBpbnQgZGlnaXRhbF90Z19zZW5kX2FjayhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTk3OS1cdFx0XHQgICAgICAgc3RydWN0IGRpZ2l0YWxfZGF0YV9leGNoICpkYXRhX2V4Y2gpXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwMTItXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTAxMzpcdHJjID0gZGlnaXRhbF90Z19zZW5kX2NtZChkZGV2LCBza2IsIDE1MDAsIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxLFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwMTQtXHRcdFx0XHQgZGF0YV9leGNoKTtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTAyMy1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDI0OnN0YXRpYyBpbnQgZGlnaXRhbF90Z19zZW5kX2F0bihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2KVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwMjUte1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDUxLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwNTI6XHRyYyA9IGRpZ2l0YWxfdGdfc2VuZF9jbWQoZGRldiwgc2tiLCAxNTAwLCBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcSxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDUzLVx0XHRcdFx0IE5VTEwpO1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDU5LVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwNjA6c3RhdGljIGludCBkaWdpdGFsX3RnX3NlbmRfc2F2ZWRfc2tiKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYpXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTA2MS17XG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwNjgtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTA2OTpcdHJjID0gZGlnaXRhbF90Z19zZW5kX2NtZChkZGV2LCBkZGV2LVx1MDAzZXNhdmVkX3NrYiwgMTUwMCxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDcwOlx0XHRcdFx0IGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxLCBOVUxMKTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDcxLVx0aWYgKHJjKVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDc2LVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwNzc6c3RhdGljIHZvaWQgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwNzgtXHRcdFx0XHQgICAgc3RydWN0IHNrX2J1ZmYgKnJlc3ApXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTExNTYtXHRcdFx0ICogd2hpY2ggaXMgdGhlIHByZXZpb3VzIERFUF9SRVMgc2F2ZWQgaW5cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMTU3Olx0XHRcdCAqIGRpZ2l0YWxfdGdfc2VuZF9kZXBfcmVzKCkuXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTE1OC1cdFx0XHQgKi9cbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTE2MC1cdFx0XHQgIERJR0lUQUxfTkZDX0RFUF9QRkJfUE5JKGRkZXYtXHUwMDNlY3Vycl9uZmNfZGVwX3BuaSAtIDEpKSB7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTE2MTpcdFx0XHRcdHJjID0gZGlnaXRhbF90Z19zZW5kX3NhdmVkX3NrYihkZGV2KTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMTYyLVx0XHRcdFx0aWYgKHJjKVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMTg0LVx0XHRyZXNwID0gZGlnaXRhbF9yZWN2X2RlcF9kYXRhX2dhdGhlcihkZGV2LCBwZmIsIHJlc3AsXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTE4NTpcdFx0XHRcdFx0XHQgICAgZGlnaXRhbF90Z19zZW5kX2FjaywgTlVMTCk7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTE4Ni1cdFx0aWYgKElTX0VSUihyZXNwKSkge1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMjEwLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEyMTE6XHRcdFx0cmMgPSBkaWdpdGFsX3RnX3NlbmRfc2F2ZWRfc2tiKGRkZXYpO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEyMTItXHRcdFx0aWYgKHJjKVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMjMwLVx0XHRcdFx0XHRcdGRkZXYtXHUwMDNlY3Vycl9uZmNfZGVwX3BuaSkge1xubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEyMzE6XHRcdFx0XHRyYyA9IGRpZ2l0YWxfdGdfc2VuZF9zYXZlZF9za2IoZGRldik7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTIzMi1cdFx0XHRcdGlmIChyYylcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTI1NC1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMjU1Olx0XHRyYyA9IGRpZ2l0YWxfdGdfc2VuZF9kZXBfcmVzKGRkZXYsIGRkZXYtXHUwMDNlY2hhaW5pbmdfc2tiKTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMjU2LVx0XHRpZiAocmMpXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEyNjUtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTI2NjpcdFx0cmMgPSBkaWdpdGFsX3RnX3NlbmRfYXRuKGRkZXYpO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEyNjctXHRcdGlmIChyYylcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTI5Ni1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMjk3OmludCBkaWdpdGFsX3RnX3NlbmRfZGVwX3JlcyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEyOTgte1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzMxLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEzMzI6XHRyYyA9IGRpZ2l0YWxfdGdfc2VuZF9jbWQoZGRldiwgdG1wX3NrYiwgMTUwMCwgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEsXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTMzMy1cdFx0XHRcdCBOVUxMKTtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTM0Ny1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMzQ4OnN0YXRpYyB2b2lkIGRpZ2l0YWxfdGdfc2VuZF9wc2xfcmVzX2NvbXBsZXRlKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTM0OS1cdFx0XHRcdFx0ICAgICB2b2lkICphcmcsIHN0cnVjdCBza19idWZmICpyZXNwKVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzU1LVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEzNTY6XHRkaWdpdGFsX3RnX3NldF9yZl90ZWNoKGRkZXYsIHJmX3RlY2gpO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEzNTctXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTM1ODpcdGRpZ2l0YWxfdGdfY29uZmlndXJlX2h3KGRkZXYsIE5GQ19ESUdJVEFMX0NPTkZJR19SRl9URUNILCByZl90ZWNoKTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzU5LVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEzNjA6XHRkaWdpdGFsX3RnX2xpc3RlbihkZGV2LCAxNTAwLCBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcSwgTlVMTCk7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTM2MS1cbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTM2NC1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMzY1OnN0YXRpYyBpbnQgZGlnaXRhbF90Z19zZW5kX3BzbF9yZXMoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdTggZGlkLFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEzNjYtXHRcdFx0XHQgICB1OCByZl90ZWNoKVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzg5LVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEzOTA6XHRyYyA9IGRpZ2l0YWxfdGdfc2VuZF9jbWQoZGRldiwgc2tiLCAwLCBkaWdpdGFsX3RnX3NlbmRfcHNsX3Jlc19jb21wbGV0ZSxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzkxLVx0XHRcdFx0ICh2b2lkICopKHVuc2lnbmVkIGxvbmcpcmZfdGVjaCk7XG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEzOTctXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTM5ODpzdGF0aWMgdm9pZCBkaWdpdGFsX3RnX3JlY3ZfcHNsX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB2b2lkICphcmcsXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTM5OS1cdFx0XHRcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqcmVzcClcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTQ2MC1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxNDYxOlx0cmMgPSBkaWdpdGFsX3RnX3NlbmRfcHNsX3JlcyhkZGV2LCBwc2xfcmVxLVx1MDAzZWRpZCwgcmZfdGVjaCk7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTQ2Mi1cbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTQ2Ni1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxNDY3OnN0YXRpYyB2b2lkIGRpZ2l0YWxfdGdfc2VuZF9hdHJfcmVzX2NvbXBsZXRlKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTQ2OC1cdFx0XHRcdFx0ICAgICB2b2lkICphcmcsIHN0cnVjdCBza19idWZmICpyZXNwKVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xNDgzLVx0aWYgKHJlc3AtXHUwMDNlZGF0YVtvZmZzZXRdID09IERJR0lUQUxfQ01EX1BTTF9SRVEpXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTQ4NDpcdFx0ZGlnaXRhbF90Z19yZWN2X3BzbF9yZXEoZGRldiwgYXJnLCByZXNwKTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xNDg1LVx0ZWxzZVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjE0ODY6XHRcdGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxKGRkZXYsIGFyZywgcmVzcCk7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTQ4Ny19XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTQ4OC1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxNDg5OnN0YXRpYyBpbnQgZGlnaXRhbF90Z19zZW5kX2F0cl9yZXMoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xNDkwLVx0XHRcdFx0ICAgc3RydWN0IGRpZ2l0YWxfYXRyX3JlcSAqYXRyX3JlcSlcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTUzMi1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxNTMzOlx0cmMgPSBkaWdpdGFsX3RnX3NlbmRfY21kKGRkZXYsIHNrYiwgOTk5LFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjE1MzQ6XHRcdFx0XHQgZGlnaXRhbF90Z19zZW5kX2F0cl9yZXNfY29tcGxldGUsIE5VTEwpO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTE1MzUtXHRpZiAocmMpXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTE1NDAtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTU0MTp2b2lkIGRpZ2l0YWxfdGdfcmVjdl9hdHJfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xNTQyLVx0XHRcdCAgICAgc3RydWN0IHNrX2J1ZmYgKnJlc3ApXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTE1NjEtXHRcdG1pbl9zaXplID0gRElHSVRBTF9BVFJfUkVRX01JTl9TSVpFICYjNDM7IDI7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTU2MjpcdFx0ZGlnaXRhbF90Z19zZXRfcmZfdGVjaChkZGV2LCBORkNfRElHSVRBTF9SRl9URUNIXzEwNkEpO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTE1NjMtXHR9IGVsc2Uge1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTE1NjQtXHRcdG1pbl9zaXplID0gRElHSVRBTF9BVFJfUkVRX01JTl9TSVpFICYjNDM7IDE7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTU2NTpcdFx0ZGlnaXRhbF90Z19zZXRfcmZfdGVjaChkZGV2LCBORkNfRElHSVRBTF9SRl9URUNIXzIxMkYpO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTE1NjYtXHR9XG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTE2MDUtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTYwNjpcdHJjID0gZGlnaXRhbF90Z19jb25maWd1cmVfaHcoZGRldiwgTkZDX0RJR0lUQUxfQ09ORklHX0ZSQU1JTkcsXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTYwNy1cdFx0XHRcdCAgICAgTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNfREVQX0FDVElWQVRFRCk7XG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTE2MTAtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTYxMTpcdHJjID0gZGlnaXRhbF90Z19zZW5kX2F0cl9yZXMoZGRldiwgYXRyX3JlcSk7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTYxMi1cdGlmIChyYylcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jPTg5NT1pbnQgZGlnaXRhbF9pbl9zZW5kX2lzbzE1NjkzX2ludl9yZXEoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdTggcmZfdGVjaClcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTkzNC1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6OTM1OnN0YXRpYyBpbnQgZGlnaXRhbF90Z19zZW5kX3NlbF9yZXMoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldilcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtOTM2LXtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTk0OC1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6OTQ5Olx0cmMgPSBkaWdpdGFsX3RnX2NvbmZpZ3VyZV9odyhkZGV2LCBORkNfRElHSVRBTF9DT05GSUdfRlJBTUlORyxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtOTUwLVx0XHRcdFx0ICAgICBORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfQU5USUNPTF9DT01QTEVURSk7XG4tLVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy05NTUtXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjk1NjpcdHJjID0gZGlnaXRhbF90Z19zZW5kX2NtZChkZGV2LCBza2IsIDMwMCwgZGlnaXRhbF90Z19yZWN2X2F0cl9yZXEsXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTk1Ny1cdFx0XHRcdCBOVUxMKTtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTk2My1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6OTY0OnN0YXRpYyB2b2lkIGRpZ2l0YWxfdGdfcmVjdl9zZWxfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtOTY1LVx0XHRcdFx0ICAgIHN0cnVjdCBza19idWZmICpyZXNwKVxuLS1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtOTg0LVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzo5ODU6XHRyYyA9IGRpZ2l0YWxfdGdfc2VuZF9zZWxfcmVzKGRkZXYpO1xubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy05ODYtXG4tLVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy05OTMtXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjk5NDpzdGF0aWMgaW50IGRpZ2l0YWxfdGdfc2VuZF9zZGRfcmVzKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYpXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTk5NS17XG4tLVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMDEzLVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMDE0Olx0cmMgPSBkaWdpdGFsX3RnX2NvbmZpZ3VyZV9odyhkZGV2LCBORkNfRElHSVRBTF9DT05GSUdfRlJBTUlORyxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTAxNS1cdFx0XHRcdE5GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQV9TVEFOREFSRF9XSVRIX0NSQ19BKTtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEwMjAtXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjEwMjE6XHRyYyA9IGRpZ2l0YWxfdGdfc2VuZF9jbWQoZGRldiwgc2tiLCAzMDAsIGRpZ2l0YWxfdGdfcmVjdl9zZWxfcmVxLFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMDIyLVx0XHRcdFx0IE5VTEwpO1xuLS1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTAyOC1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTAyOTpzdGF0aWMgdm9pZCBkaWdpdGFsX3RnX3JlY3Zfc2RkX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB2b2lkICphcmcsXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEwMzAtXHRcdFx0XHQgICAgc3RydWN0IHNrX2J1ZmYgKnJlc3ApXG4tLVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMDQ4LVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMDQ5Olx0cmMgPSBkaWdpdGFsX3RnX3NlbmRfc2RkX3JlcyhkZGV2KTtcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTA1MC1cbi0tXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEwNTctXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjEwNTg6c3RhdGljIGludCBkaWdpdGFsX3RnX3NlbmRfc2Vuc19yZXMoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldilcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTA1OS17XG4tLVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMDcyLVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMDczOlx0cmMgPSBkaWdpdGFsX3RnX2NvbmZpZ3VyZV9odyhkZGV2LCBORkNfRElHSVRBTF9DT05GSUdfRlJBTUlORyxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTA3NC1cdFx0XHRcdCAgICAgTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX1NUQU5EQVJEKTtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEwNzktXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjEwODA6XHRyYyA9IGRpZ2l0YWxfdGdfc2VuZF9jbWQoZGRldiwgc2tiLCAzMDAsIGRpZ2l0YWxfdGdfcmVjdl9zZGRfcmVxLFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMDgxLVx0XHRcdFx0IE5VTEwpO1xuLS1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTA4Ny1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTA4ODp2b2lkIGRpZ2l0YWxfdGdfcmVjdl9zZW5zX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB2b2lkICphcmcsXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEwODktXHRcdFx0ICAgICAgc3RydWN0IHNrX2J1ZmYgKnJlc3ApXG4tLVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMTA3LVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMTA4Olx0cmMgPSBkaWdpdGFsX3RnX3NlbmRfc2Vuc19yZXMoZGRldik7XG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTExMDktXG4tLVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMTE2LVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMTE3OnN0YXRpYyB2b2lkIGRpZ2l0YWxfdGdfcmVjdl9hdHJfb3Jfc2Vuc2ZfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTExMTgtXHRcdHZvaWQgKmFyZywgc3RydWN0IHNrX2J1ZmYgKnJlc3ApXG4tLVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMTIxLVx0XHRcdChyZXNwLVx1MDAzZWRhdGFbMV0gPT0gRElHSVRBTF9DTURfU0VOU0ZfUkVRKSlcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTEyMjpcdFx0ZGlnaXRhbF90Z19yZWN2X3NlbnNmX3JlcShkZGV2LCBhcmcsIHJlc3ApO1xubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMTIzLVx0ZWxzZVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMTI0Olx0XHRkaWdpdGFsX3RnX3JlY3ZfYXRyX3JlcShkZGV2LCBhcmcsIHJlc3ApO1xubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMTI1LVxuLS1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTEyOC1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTEyOTpzdGF0aWMgaW50IGRpZ2l0YWxfdGdfc2VuZF9zZW5zZl9yZXMoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTEzMC1cdFx0XHQgICAgICBzdHJ1Y3QgZGlnaXRhbF9zZW5zZl9yZXEgKnNlbnNmX3JlcSlcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTExNzItXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjExNzM6XHRyYyA9IGRpZ2l0YWxfdGdfc2VuZF9jbWQoZGRldiwgc2tiLCAzMDAsXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjExNzQ6XHRcdFx0XHQgZGlnaXRhbF90Z19yZWN2X2F0cl9vcl9zZW5zZl9yZXEsIE5VTEwpO1xubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMTc1LVx0aWYgKHJjKVxuLS1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTE4MC1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTE4MTp2b2lkIGRpZ2l0YWxfdGdfcmVjdl9zZW5zZl9yZXEoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMTgyLVx0XHRcdCAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqcmVzcClcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyMTMtXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjEyMTQ6XHRyYyA9IGRpZ2l0YWxfdGdfc2VuZF9zZW5zZl9yZXMoZGRldiwgc2Vuc2ZfcmVxKTtcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTIxNS1cbi0tXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyMjItXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjEyMjM6c3RhdGljIGludCBkaWdpdGFsX3RnX2NvbmZpZ19uZmNhKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYpXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyMjQte1xuLS1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTIyNi1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTIyNzpcdHJjID0gZGlnaXRhbF90Z19jb25maWd1cmVfaHcoZGRldiwgTkZDX0RJR0lUQUxfQ09ORklHX1JGX1RFQ0gsXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyMjgtXHRcdFx0XHQgICAgIE5GQ19ESUdJVEFMX1JGX1RFQ0hfMTA2QSk7XG4tLVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjMxLVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMjMyOlx0cmV0dXJuIGRpZ2l0YWxfdGdfY29uZmlndXJlX2h3KGRkZXYsIE5GQ19ESUdJVEFMX0NPTkZJR19GUkFNSU5HLFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjMzLVx0XHRcdFx0ICAgICAgIE5GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQV9ORkNfREVQKTtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyMzUtXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjEyMzY6aW50IGRpZ2l0YWxfdGdfbGlzdGVuX25mY2Eoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdTggcmZfdGVjaClcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTIzNy17XG4tLVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjM5LVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMjQwOlx0cmMgPSBkaWdpdGFsX3RnX2NvbmZpZ19uZmNhKGRkZXYpO1xubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjQxLVx0aWYgKHJjKVxuLS1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTI0My1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTI0NDpcdHJldHVybiBkaWdpdGFsX3RnX2xpc3RlbihkZGV2LCAzMDAsIGRpZ2l0YWxfdGdfcmVjdl9zZW5zX3JlcSwgTlVMTCk7XG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyNDUtfVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjQ2LVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMjQ3OnN0YXRpYyBpbnQgZGlnaXRhbF90Z19jb25maWdfbmZjZihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB1OCByZl90ZWNoKVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjQ4LXtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyNTAtXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjEyNTE6XHRyYyA9IGRpZ2l0YWxfdGdfY29uZmlndXJlX2h3KGRkZXYsIE5GQ19ESUdJVEFMX0NPTkZJR19SRl9URUNILCByZl90ZWNoKTtcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTI1Mi1cdGlmIChyYylcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyNTQtXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjEyNTU6XHRyZXR1cm4gZGlnaXRhbF90Z19jb25maWd1cmVfaHcoZGRldiwgTkZDX0RJR0lUQUxfQ09ORklHX0ZSQU1JTkcsXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyNTYtXHRcdFx0XHQgICAgICAgTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNGX05GQ19ERVApO1xuLS1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTI1OC1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTI1OTppbnQgZGlnaXRhbF90Z19saXN0ZW5fbmZjZihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB1OCByZl90ZWNoKVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjYwLXtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyNjItXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjEyNjM6XHRyYyA9IGRpZ2l0YWxfdGdfY29uZmlnX25mY2YoZGRldiwgcmZfdGVjaCk7XG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyNjQtXHRpZiAocmMpXG4tLVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjY2LVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMjY3Olx0cmV0dXJuIGRpZ2l0YWxfdGdfbGlzdGVuKGRkZXYsIDMwMCwgZGlnaXRhbF90Z19yZWN2X3NlbnNmX3JlcSwgTlVMTCk7XG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyNjgtfVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjY5LVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMjcwOnZvaWQgZGlnaXRhbF90Z19yZWN2X21kX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB2b2lkICphcmcsXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyNzEtXHRcdFx0ICAgIHN0cnVjdCBza19idWZmICpyZXNwKVxuLS1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTI4Ni1cdGNhc2UgTkZDX0RJR0lUQUxfUkZfVEVDSF8xMDZBOlxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMjg3Olx0XHRyYyA9IGRpZ2l0YWxfdGdfY29uZmlnX25mY2EoZGRldik7XG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyODgtXHRcdGlmIChyYylcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTI4OS1cdFx0XHRnb3RvIGV4aXRfZnJlZV9za2I7XG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjEyOTA6XHRcdGRpZ2l0YWxfdGdfcmVjdl9zZW5zX3JlcShkZGV2LCBhcmcsIHJlc3ApO1xubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjkxLVx0XHRicmVhaztcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyOTMtXHRjYXNlIE5GQ19ESUdJVEFMX1JGX1RFQ0hfNDI0Rjpcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTI5NDpcdFx0cmMgPSBkaWdpdGFsX3RnX2NvbmZpZ19uZmNmKGRkZXYsIHJmX3RlY2gpO1xubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjk1LVx0XHRpZiAocmMpXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyOTYtXHRcdFx0Z290byBleGl0X2ZyZWVfc2tiO1xubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMjk3Olx0XHRkaWdpdGFsX3RnX3JlY3Zfc2Vuc2ZfcmVxKGRkZXYsIGFyZywgcmVzcCk7XG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyOTgtXHRcdGJyZWFrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMiAxMzoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0Nzg2MgoJCQkJCQkJb3V0cHV0OiAxOTQKCQkJCQkJCXRob3VnaHRzOiAyMDU0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIE5GQyBEaWdpdGFsIFRhcmdldCBNb2RlIEZ1bmN0aW9uYWxpdHkgZm9yIEZ1enppbmcqKgoKT2theSwgc28gSSBuZWVkIHRvIHN1bW1hcml6ZSB0aGlzIHBhdGNoJiMzOTtzIGltcGxpY2F0aW9ucyBmb3IgZnV6emluZywgZm9jdXNpbmcgb24gaG93IHRoZSBjb2RlIG1vZGlmaWNhdGlvbiBpbXBhY3RzIHJlYWNoYWJsZSBhbmQgdGVzdGFibGUgY29kZSBwYXRocy4gRmlyc3QsIEkgc2VlIHRoYXQgYGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxYCBpcyB0aGUga2V5IGZ1bmN0aW9uIGhlcmUuIEl0JiMzOTtzICpzdGF0aWMgdm9pZCogaW4gYG5ldC9uZmMvZGlnaXRhbF9kZXAuY2AsIHdoaWNoIGluaXRpYWxseSBtYWRlIG1lIHBhdXNlIGJlY2F1c2Ugc3RhdGljIGZ1bmN0aW9ucyBjYW4gc29tZXRpbWVzIGJlIHRyaWNreSBmb3Igc3ltYm9sIGNvdmVyYWdlLCBidXQgaW4gdGhpcyBjYXNlLCBpdCAqaXMqIGEgc3RhdGljIGZ1bmN0aW9uIHdpdGhpbiBhIGAuY2AgZmlsZSwgKmFuZCogaXRzIGFkZHJlc3MgaXMgdGFrZW4sIHNwZWNpZmljYWxseSBhcyBhIGNhbGxiYWNrOiBgZGlnaXRhbF90Z19zZW5kX2NtZCguLi4sIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxLCAuLi4pYC4gVGhpcyBpcyBpbXBvcnRhbnQuIEJlY2F1c2UgdGhlIGFkZHJlc3MgaXMgdGFrZW4sIHRoZSBjb21waWxlciAqbXVzdCogZ2VuZXJhdGUgYSBkaXN0aW5jdCBzeW1ib2wgZm9yIHRoaXMgZnVuY3Rpb24sIGVuc3VyaW5nIGl0JiMzOTtzIGFkZHJlc3NhYmxlLgoKTG9va2luZyBkZWVwZXIsIEkgaWRlbnRpZmllZCBvdGhlciByZWxhdGVkIGZ1bmN0aW9uczogYGRpZ2l0YWxfdGdfc2VuZF9kZXBfcmVzYCAoZXhwb3J0ZWQpIGFuZCBgZGlnaXRhbF90Z19yZWN2X2F0cl9yZXFgIChub24tc3RhdGljKSBhcmUgYWxzbyByZWxldmFudC4gYGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxYCBpcyB0aGUgZGlyZWN0IHRhcmdldCBvZiB0aGUgcGF0Y2gsIGFuZCB0aG9zZSBhcmUgZW50cnkgcG9pbnRzIHRoYXQgbGVhZCB0byBpdC4KCkkgdGhlbiBjb25zaWRlcmVkIHJlYWNoYWJpbGl0eS4gQ3J1Y2lhbGx5LCB0aGlzIGlzbiYjMzk7dCBqdXN0IHRoZW9yZXRpY2FsIGNvZGUuIFRoZSBORkMgc3RhY2sgaXMgYWNjZXNzaWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIGBuZmNzaW1gICh0aGUgc29mdHdhcmUgc2ltdWxhdG9yIGRyaXZlcikgcHJvdmlkZXMgYSB2aXJ0dWFsIE5GQyBkZXZpY2UgdGhhdCBjYW4gcmVhY2ggdGhpcyBjb2RlLCBhcyBkb2VzIGBwb3J0MTAwYCAoZW11bGF0ZWQgVVNCIGRldmljZSkgdmlhIHN5emthbGxlciwgd2hpY2ggaXMgc3RhbmRhcmQgZm9yIGZ1enppbmcgcmF3IFVTQiBnYWRnZXQgdHJhZmZpYy4gVGhpcyBjb2RlIGFsc28gdG91Y2hlcyB0aGUgbmV0d29yaywgZHJpdmVyIGNvZGUsIGFuZCBzbyBpcyBleGVjdXRhYmxlLiBJdCYjMzk7cyBub3QgdW5yZWFjaGFibGUgaGFyZHdhcmUgb3IgYSB0ZWFyZG93biBjYWxsYmFjay4gU28sIHllcywgdGhlIGNyaXRlcmlhIGZvciAmIzM0O1dvcnRoRnV6emluZyYjMzQ7IGFyZSBtZXQuCgpSZWdhcmRpbmcgYnVpbGQgY29uZmlndXJhdGlvbnMsIHRvIGJ1aWxkIGFuZCBydW4gdGhpcyBjb2RlLCBJJiMzOTtkIG5lZWQ6IGBORkNgLCBgTkZDX0RJR0lUQUxgLCBgTkZDX1NJTWAsIGFuZCBgTkZDX1BPUlQxMDBgLiBBbmQgYmVjYXVzZSBMTENQIGlzIGNvbXBpbGVkIGludG8gYG5mYy5vYCBpZiBDT05GSUdfTkZDIGlzIGVuYWJsZWQsIGl0IHNob3VsZCBhbHNvIGJlIGZ1enphYmxlLCBnaXZlbiBpdHMgcmVsYXRpb24gdG8gTkZDLgoKTm93LCBhcyBmb3Igd2hhdCBpcyBiZWluZyBhbHRlcmVkLCBpdCYjMzk7cyBhIGNyaXRpY2FsIGNoZWNrIGluIHRoZSBERVAgcmVxdWVzdCBoYW5kbGVyIHdpdGhpbiBgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXFgLiBUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyByZWFkIHdoZW4gcHJvY2Vzc2luZyBERVAgcmVxdWVzdHMgd2l0aCBhIERJRCAoRGV2aWNlIElkZW50aWZpZXIpLiBCZWZvcmUgdGhlIHBhdGNoLCBhIGJ1ZmZlciBhY2Nlc3Mgd2FzIGRvbmUgd2l0aG91dCBwcm9wZXIgbGVuZ3RoIGNoZWNraW5nLiBUaGUgcGF0Y2ggYWRkcyBgcmVzcC0mZ3Q7bGVuICZsdDsgc2l6ZSAmIzQzOyAxYCwgdmFsaWRhdGVzIGBkZGV2LSZndDtkaWRgLCBhbmQgaW5kZXhlcyB3aXRoIGByZXNwLSZndDtkYXRhW3NpemVdYCB0byBlbnN1cmUgdGhhdCB0aGUgcmVhZCBzdGF5cyB3aXRoaW4gYnVmZmVyIGJvdW5kcy4gRnV6emluZyB0aGlzIHdpbGwgYmUgY3J1Y2lhbCB0byB2ZXJpZnkgY29ycmVjdCBwYXJzaW5nIG9mIERFUCBmcmFtZXMsIGVzcGVjaWFsbHkgdGhvc2Ugd2l0aCBESUQgYW5kIGVkZ2UtY2FzZSBsZW5ndGhzLCBlbnN1cmluZyB0aGF0IHRoZSBwYXRjaCBwcmV2ZW50cyByZWdyZXNzaW9ucyBhbmQgcG90ZW50aWFsIHN0YXRlIGNvcnJ1cHRpb24gZHVlIHRvIG91dC1vZi1ib3VuZHMgcmVhZHMuIFRoZSBhZGRlZCBjaGVja3MgYXJlIGEgcGVyZmVjdCBvcHBvcnR1bml0eSBmb3IgZnV6emluZy4KCk15IHByaW1hcnkgZm9jdXMgc3ltYm9scyBmb3IgZnV6emluZyB3aWxsIGJlOiBgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXFgLCB3aGljaCBpcyAqdGhlKiBtb2RpZmllZCBmdW5jdGlvbi4gQnV0IGFsc28gaW5jbHVkaW5nIGBkaWdpdGFsX3RnX3NlbmRfZGVwX3Jlc2AgYW5kIGBkaWdpdGFsX3RnX3JlY3ZfYXRyX3JlcWAgaXMgaW1wb3J0YW50IHNpbmNlIHRoZXkgcHJvdmlkZSBlbnRyeXBvaW50cyBhbmQgcmVsYXRlZCBmdW5jdGlvbnMuCgpGaW5hbGx5LCBJJiMzOTt2ZSBjb25maXJtZWQgdGhhdCB0aGUgJiMzOTtXb3J0aEZ1enppbmcmIzM5OyBkZWNpc2lvbiBpcyBzb3VuZCwgdGhlIGV4cGxhbmF0aW9uIGlzIGNvbmNpc2UsIHRoZSBmb2N1cyBzeW1ib2xzIGFyZSBzcGVjaWZpYywgYW5kIHRoZSBjb25maWd1cmF0aW9ucyBhcmUgY2xlYXJseSBsaXN0ZWQuIEkgY2FuIG5vdyBwcm9jZWVkIHRvIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEyIDEzOjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORkMmIzM0OywKICAgICYjMzQ7TkZDX0RJR0lUQUwmIzM0OywKICAgICYjMzQ7TkZDX1NJTSYjMzQ7LAogICAgJiMzNDtORkNfUE9SVDEwMCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxJiMzNDssCiAgICAmIzM0O2RpZ2l0YWxfdGdfc2VuZF9kZXBfcmVzJiMzNDssCiAgICAmIzM0O2RpZ2l0YWxfdGdfcmVjdl9hdHJfcmVxJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGlucHV0IHZhbGlkYXRpb24gaW4gdGhlIE5GQyBkaWdpdGFsIHRhcmdldCBtb2RlIERFUCByZXF1ZXN0IGhhbmRsaW5nIChkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcSkgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIGFjY2VzcyB3aGVuIHRoZSBESUQgYml0IGlzIHNldCBieSB2ZXJpZnlpbmcgZnJhbWUgbGVuZ3RoIGFnYWluc3QgZXhwZWN0ZWQgc2l6ZSBhbmQgY29ycmVjdGx5IGluZGV4aW5nIHJlc3AtXHUwMDNlZGF0YS4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgdmlydHVhbCBORkMgZHJpdmVycyAoZS5nLiBuZmNzaW0pIGFuZCBlbXVsYXRlZCBVU0IgTkZDIGRvbmdsZXMgKHBvcnQxMDApLCBtYWtpbmcgaXQgd29ydGggZnV6emluZyBmb3IgYm91bmRhcnkgaXNzdWVzIGFuZCBzdGF0ZSB0cmFuc2l0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkZDJiMzNDssCiAgICAmIzM0O05GQ19ESUdJVEFMJiMzNDssCiAgICAmIzM0O05GQ19TSU0mIzM0OywKICAgICYjMzQ7TkZDX1BPUlQxMDAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcSYjMzQ7LAogICAgJiMzNDtkaWdpdGFsX3RnX3NlbmRfZGVwX3JlcyYjMzQ7LAogICAgJiMzNDtkaWdpdGFsX3RnX3JlY3ZfYXRyX3JlcSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBpbnB1dCB2YWxpZGF0aW9uIGluIHRoZSBORkMgZGlnaXRhbCB0YXJnZXQgbW9kZSBERVAgcmVxdWVzdCBoYW5kbGluZyAoZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEpIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyBhY2Nlc3Mgd2hlbiB0aGUgRElEIGJpdCBpcyBzZXQgYnkgdmVyaWZ5aW5nIGZyYW1lIGxlbmd0aCBhZ2FpbnN0IGV4cGVjdGVkIHNpemUgYW5kIGNvcnJlY3RseSBpbmRleGluZyByZXNwLVx1MDAzZWRhdGEuIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIHZpcnR1YWwgTkZDIGRyaXZlcnMgKGUuZy4gbmZjc2ltKSBhbmQgZW11bGF0ZWQgVVNCIE5GQyBkb25nbGVzIChwb3J0MTAwKSwgbWFraW5nIGl0IHdvcnRoIGZ1enppbmcgZm9yIGJvdW5kYXJ5IGlzc3VlcyBhbmQgc3RhdGUgdHJhbnNpdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEyIDEzOjI1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTIgMTM6MjU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIHJlYWQgaW4gYGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxKClgIHdoZXJlIGByZXNwLVx1MDAzZWRhdGFbM11gIHdhcyByZWFkIHdpdGhvdXQgZmlyc3QgdmVyaWZ5aW5nIHRoYXQgYHJlc3AtXHUwMDNlbGVuYCB3YXMgYXQgbGVhc3QgYHNpemUgJiM0MzsgMWAgKDQgYnl0ZXMpLiBcblxuVGhpcyBpcyBhIGJvdW5kcy1jaGVja2luZyBpc3N1ZTogYWNjZXNzaW5nIGJ5dGVzIGJleW9uZCBgcmVzcC1cdTAwM2VsZW5gIGlzIGFuIG91dC1vZi1ib3VuZHMgYWNjZXNzIGRpcmVjdGx5IGRldGVjdGFibGUgYnkgS0FTQU4gKGUuZy4sIHNsYWItb3V0LW9mLWJvdW5kcyBvbiBza2IgZGF0YSkuIFRoZSBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIGFueSB1bmluaXRpYWxpemVkIHN0YWNrIG9yIGhlYXAgdmFyaWFibGVzLCBkb2VzIG5vdCBleHBvc2UgdW5pbml0aWFsaXplZCBwYWRkaW5nIG9yIHN0cnVjdCBmaWVsZHMgdG8gdXNlciBzcGFjZSwgYW5kIGRvZXMgbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBiYXNlZCBvbiB1bmluaXRpYWxpemVkIG1lbW9yeS4gQmVjYXVzZSBzdGFuZGFyZCBLQVNBTiBmdWxseSBjb3ZlcnMgdGhpcyBjbGFzcyBvZiBidWdzIGFuZCBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBhcmUgaW50cm9kdWNlZCwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAxMDIwZjI2OWU4NTU2NjcxNDBiYzA0ZjgzYTk2ODQ5OTA5YWY3NWRkCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBTZXAgMTIgMTM6MjM6MzAgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvbmZjL2RpZ2l0YWxfZGVwLmMgYi9uZXQvbmZjL2RpZ2l0YWxfZGVwLmMKaW5kZXggMzk4MmZhMDg0NzM3Zi4uYWU1NDA3ZmNhMTJkNCAxMDA2NDQKLS0tIGEvbmV0L25mYy9kaWdpdGFsX2RlcC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZmMvZGlnaXRhbF9kZXAuYwpAQCAtMTExNywxMiAmIzQzOzExMTcsMTIgQEAgc3RhdGljIHZvaWQgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLAogCXBmYiA9IGRlcF9yZXEtJmd0O3BmYjsKIAogCWlmIChESUdJVEFMX05GQ19ERVBfRElEX0JJVF9TRVQocGZiKSkgewotCQlpZiAoZGRldi0mZ3Q7ZGlkICZhbXA7JmFtcDsgKGRkZXYtJmd0O2RpZCA9PSByZXNwLSZndDtkYXRhWzNdKSkgewotCQkJc2l6ZSYjNDM7JiM0Mzs7Ci0JCX0gZWxzZSB7CiYjNDM7CQlpZiAocmVzcC0mZ3Q7bGVuICZsdDsgc2l6ZSAmIzQzOyAxIHx8ICFkZGV2LSZndDtkaWQgfHwKJiM0MzsJCSAgICBkZGV2LSZndDtkaWQgIT0gcmVzcC0mZ3Q7ZGF0YVtzaXplXSkgewogCQkJcmMgPSAtRUlPOwogCQkJZ290byBleGl0OwogCQl9CiYjNDM7CQlzaXplJiM0MzsmIzQzOzsKIAl9IGVsc2UgaWYgKGRkZXYtJmd0O2RpZCkgewogCQlyYyA9IC1FSU87CiAJCWdvdG8gZXhpdDsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEyIDEzOjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNzEKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxODQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBORkMgRGlnaXRhbCBERVAgQ29kZSBmb3IgRnV6emluZyBTdHJhdGVneSoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgcmlnaHQgZnV6emluZyBhcHByb2FjaCBmb3IgdGhpcyBwYXRjaCB0byBgbmV0L25mYy9kaWdpdGFsX2RlcC5jYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGFzc2VzcyB3aGV0aGVyIEkgbmVlZCB0aGUgaGVhdmllciBoYW1tZXIgb2YgS01TQU4gb3IgaWYgc3RhbmRhcmQgS0FTQU4gd2lsbCBkbyB0aGUgam9iLiBUaGlzIHNlZW1zIGxpa2UgYSBzdHJhaWdodGZvcndhcmQgYW5hbHlzaXMsIGEgZGUtZnJhbWluZyB0YXNrIHJlYWxseSwganVzdCBkZXRlcm1pbmluZyB0aGUgYXBwcm9wcmlhdGUgc2FuaXRpemVyIGNvbmZpZ3VyYXRpb24uIE5vIHJlZCBmbGFncyBoZXJlIOKAkyBJJiMzOTttIG5vdCBkZWFsaW5nIHdpdGggbWFsd2FyZSBnZW5lcmF0aW9uIG9yIGV4cGxvaXQgYW5hbHlzaXMsIHB1cmVseSBjb2RlIHJldmlldy4gVGhpcyBpcyBhIGJlbmlnbiwgZGVmZW5zaXZlIFFBIHRhc2suIEdvb2QsIHNhZmUgdG8gcHJvY2VlZC4KCkZpcnN0IHN0ZXAgaXMgdG8gZGlnIGludG8gdGhlIGNvZGUgaXRzZWxmLiBJJiMzOTtsbCBuZWVkIHRvIGluc3BlY3QgYG5ldC9uZmMvZGlnaXRhbF9kZXAuY2AgZGlyZWN0bHksIHByb2JhYmx5IHVzaW5nIGByZWFkLWZpbGVgIG9yIGBncmVwcGVyYCB0byBnZXQgYXQgYGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxYC4gSSBuZWVkIGEgY2xlYXIgdW5kZXJzdGFuZGluZyBvZiB3aGF0IHRoYXQgZnVuY3Rpb24gZG9lcyB0byBpbmZvcm0gbXkgZGVjaXNpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEyIDEzOjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L25mYy9kaWdpdGFsX2RlcC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTEwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxMTAwOlx0XHRcdGdvdG8gZXhpdDtcbjExMDE6XHRcdH1cbjExMDI6XHRcbjExMDM6XHRcdGlmIChyZXNwLVx1MDAzZWxlbiBcdTAwM2UgZGRldi1cdTAwM2Vsb2NhbF9wYXlsb2FkX21heCkge1xuMTEwNDpcdFx0XHRyYyA9IC1FTVNHU0laRTtcbjExMDU6XHRcdFx0Z290byBleGl0O1xuMTEwNjpcdFx0fVxuMTEwNzpcdFxuMTEwODpcdFx0c2l6ZSA9IHNpemVvZihzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3Jlcyk7XG4xMTA5Olx0XHRkZXBfcmVxID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopcmVzcC1cdTAwM2VkYXRhO1xuMTExMDpcdFxuMTExMTpcdFx0aWYgKHJlc3AtXHUwMDNlbGVuIFx1MDAzYyBzaXplIHx8IGRlcF9yZXEtXHUwMDNlZGlyICE9IERJR0lUQUxfTkZDX0RFUF9GUkFNRV9ESVJfT1VUIHx8XG4xMTEyOlx0XHQgICAgZGVwX3JlcS1cdTAwM2VjbWQgIT0gRElHSVRBTF9DTURfREVQX1JFUSkge1xuMTExMzpcdFx0XHRyYyA9IC1FSU87XG4xMTE0Olx0XHRcdGdvdG8gZXhpdDtcbjExMTU6XHRcdH1cbjExMTY6XHRcbjExMTc6XHRcdHBmYiA9IGRlcF9yZXEtXHUwMDNlcGZiO1xuMTExODpcdFxuMTExOTpcdFx0aWYgKERJR0lUQUxfTkZDX0RFUF9ESURfQklUX1NFVChwZmIpKSB7XG4xMTIwOlx0XHRcdGlmIChyZXNwLVx1MDAzZWxlbiBcdTAwM2Mgc2l6ZSAmIzQzOyAxIHx8ICFkZGV2LVx1MDAzZWRpZCB8fFxuMTEyMTpcdFx0XHQgICAgZGRldi1cdTAwM2VkaWQgIT0gcmVzcC1cdTAwM2VkYXRhW3NpemVdKSB7XG4xMTIyOlx0XHRcdFx0cmMgPSAtRUlPO1xuMTEyMzpcdFx0XHRcdGdvdG8gZXhpdDtcbjExMjQ6XHRcdFx0fVxuMTEyNTpcdFx0XHRzaXplJiM0MzsmIzQzOztcbjExMjY6XHRcdH0gZWxzZSBpZiAoZGRldi1cdTAwM2VkaWQpIHtcbjExMjc6XHRcdFx0cmMgPSAtRUlPO1xuMTEyODpcdFx0XHRnb3RvIGV4aXQ7XG4xMTI5Olx0XHR9XG4xMTMwOlx0XG4xMTMxOlx0XHRpZiAoRElHSVRBTF9ORkNfREVQX05BRF9CSVRfU0VUKHBmYikpIHtcbjExMzI6XHRcdFx0cmMgPSAtRUlPO1xuMTEzMzpcdFx0XHRnb3RvIGV4aXQ7XG4xMTM0Olx0XHR9XG4xMTM1Olx0XG4xMTM2Olx0XHRpZiAoc2l6ZSBcdTAwM2UgcmVzcC1cdTAwM2VsZW4pIHtcbjExMzc6XHRcdFx0cmMgPSAtRUlPO1xuMTEzODpcdFx0XHRnb3RvIGV4aXQ7XG4xMTM5Olx0XHR9XG4xMTQwOlx0XG4xMTQxOlx0XHRza2JfcHVsbChyZXNwLCBzaXplKTtcbjExNDI6XHRcbjExNDM6XHRcdHN3aXRjaCAoRElHSVRBTF9ORkNfREVQX1BGQl9UWVBFKHBmYikpIHtcbjExNDQ6XHRcdGNhc2UgRElHSVRBTF9ORkNfREVQX1BGQl9JX1BEVTpcbjExNDU6XHRcdFx0cHJfZGVidWcoXCYjMzQ7RElHSVRBTF9ORkNfREVQX1BGQl9JX1BEVVxcblwmIzM0Oyk7XG4xMTQ2Olx0XG4xMTQ3Olx0XHRcdGlmIChkZGV2LVx1MDAzZWF0bl9jb3VudCkge1xuMTE0ODpcdFx0XHRcdC8qIFRoZSB0YXJnZXQgaGFzIHJlY2VpdmVkIChhbmQgcmVwbGllZCB0bykgYXQgbGVhc3Qgb25lXG4xMTQ5Olx0XHRcdFx0ICogQVROIERFUF9SRVEuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEyIDEzOjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzMTAKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA3NDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTkZDIERyaXZlciBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYGRpZmZgIHJlbGF0ZWQgdG8gdGhlIGBkaWdpdGFsX2RlcC5jYCBmaWxlLiBSaWdodCBhd2F5LCBJIHNlZSBhIHBvdGVudGlhbCBpc3N1ZTogYW4gb3V0LW9mLWJvdW5kcyByZWFkLiBUaGUgb3JpZ2luYWwgY29kZSB3YXMgYWNjZXNzaW5nIGByZXNwLSZndDtkYXRhWzNdYCB3aXRob3V0IHByb3Blcmx5IGNoZWNraW5nIGlmIGByZXNwLSZndDtsZW5gIHdhcyBsYXJnZSBlbm91Z2guIEVzc2VudGlhbGx5LCB0aGUgY29kZSB3YXMgdnVsbmVyYWJsZSB0byBhIHJlYWQgcGFzdCB0aGUgZW5kIG9mIHRoZSBgcmVzcGAgZGF0YSBidWZmZXIuIEl0JiMzOTtzIHN1YnRsZSwgYnV0IGFjY2Vzc2luZyBgcmVzcC0mZ3Q7ZGF0YVszXWAgd2hlbiB0aGUgYnVmZmVyIGxlbmd0aCAoYHJlc3AtJmd0O2xlbmApIGlzIG9ubHkgMyBpcyBhIHJlY2lwZSBmb3IgZGlzYXN0ZXIuIEl0JiMzOTtzIGEgY2xhc3NpYyBvZmYtYnktb25lIGVycm9yIG9yIHNpbWlsYXIuCgpUaGUgZml4IGlzIHN0cmFpZ2h0Zm9yd2FyZC4gVGhleSYjMzk7dmUgYWRkZWQgYSBib3VuZHMgY2hlY2s6IGByZXNwLSZndDtsZW4gJmx0OyBzaXplICYjNDM7IDFgLiBUaGlzIGltbWVkaWF0ZWx5IGZsYWdzIHRoZSBpc3N1ZSBpZiB0aGUgYnVmZmVyIGlzbiYjMzk7dCBsYXJnZSBlbm91Z2ggdG8gYWNjb21tb2RhdGUgdGhlIGFjY2Vzcy4gVGhleSYjMzk7dmUgYWxzbyBjbGVhbmVkIHVwIHRoZSBjb25kaXRpb25hbCwgZXhwbGljaXRseSBjaGVja2luZyBmb3IgYCFkZGV2LSZndDtkaWRgIG9yIGEgbWlzbWF0Y2ggaW4gdGhlIERJRCB2YWx1ZS4gVGhleSBhcmUgYWxzbyB1c2luZyBgcmVzcC0mZ3Q7ZGF0YVtzaXplXWAgaW5zdGVhZCBvZiBgcmVzcC0mZ3Q7ZGF0YVszXWAgbm93LCB3aGljaCBtYWtlcyB0aGUgbG9naWMgbW9yZSByb2J1c3QuIFRoaXMgaXMgYSBtdWNoIGJldHRlciBhcHByb2FjaC4KCk5vdywgbXkgbWluZCBpcyBhbHJlYWR5IHRoaW5raW5nIGFib3V0IHdoZXRoZXIgdGhpcyBraW5kIG9mIGJ1ZyB3b3VsZCBoYXZlIGJlZW4gZmxhZ2dlZCBieSBhIG1lbW9yeSBzYW5pdGl6ZXIuIEdpdmVuIHRoYXQgaXQmIzM5O3MgYW4gb3V0LW9mLWJvdW5kcyByZWFkLCBteSBpbW1lZGlhdGUgdGhvdWdodCBpcyBLQVNBTi4gSXQmIzM5O3MgZGVzaWduZWQgdG8gY2F0Y2ggdGhlc2Uga2luZHMgb2YgbWVtb3J5IGFjY2VzcyB2aW9sYXRpb25zLiBJIG5lZWQgdG8gY29uZmlybSB0aGUgY29uZGl0aW9ucyBhcm91bmQgYHJlc3BgLCBidXQgSSBzdHJvbmdseSBzdXNwZWN0IHRoYXQgaWYgdGhpcyBidWcgd2FzIHRyaWdnZXJlZCB1bmRlciBLQVNBTiwgaXQgd291bGQgaGF2ZSBiZWVuIGZsYWdnZWQgaW1tZWRpYXRlbHkuCgpMZXQgbWUgcXVpY2tseSByZXZpZXcgdGhlIGNhbGxlciB0byBzZWUgd2hlcmUgYHJlc3BgIGNvbWVzIGZyb20gdG8gc29saWRpZnkgbXkgY29uY2x1c2lvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEyIDEzOjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25mYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25mYy9kaWdpdGFsX2RlcC5jPTEwNj1zdGF0aWMgdm9pZCBkaWdpdGFsX2luX3JlY3ZfZGVwX3JlcyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB2b2lkICphcmcsXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTA3LVx0XHRcdFx0ICAgIHN0cnVjdCBza19idWZmICpyZXNwKTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDg6c3RhdGljIHZvaWQgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwOS1cdFx0XHRcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqcmVzcCk7XG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTk3OD1zdGF0aWMgaW50IGRpZ2l0YWxfdGdfc2VuZF9hY2soc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTAxMi1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDEzOlx0cmMgPSBkaWdpdGFsX3RnX3NlbmRfY21kKGRkZXYsIHNrYiwgMTUwMCwgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEsXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTAxNC1cdFx0XHRcdCBkYXRhX2V4Y2gpO1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz0xMDI0PXN0YXRpYyBpbnQgZGlnaXRhbF90Z19zZW5kX2F0bihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2KVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDUxLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwNTI6XHRyYyA9IGRpZ2l0YWxfdGdfc2VuZF9jbWQoZGRldiwgc2tiLCAxNTAwLCBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcSxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDUzLVx0XHRcdFx0IE5VTEwpO1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz0xMDYwPXN0YXRpYyBpbnQgZGlnaXRhbF90Z19zZW5kX3NhdmVkX3NrYihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2KVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDY5LVx0cmMgPSBkaWdpdGFsX3RnX3NlbmRfY21kKGRkZXYsIGRkZXYtXHUwMDNlc2F2ZWRfc2tiLCAxNTAwLFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwNzA6XHRcdFx0XHQgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEsIE5VTEwpO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwNzEtXHRpZiAocmMpXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwNzYtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTA3NzpzdGF0aWMgdm9pZCBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB2b2lkICphcmcsXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTA3OC1cdFx0XHRcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqcmVzcClcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9MTI5Nz1pbnQgZGlnaXRhbF90Z19zZW5kX2RlcF9yZXMoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTMzMS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMzMyOlx0cmMgPSBkaWdpdGFsX3RnX3NlbmRfY21kKGRkZXYsIHRtcF9za2IsIDE1MDAsIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxLFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEzMzMtXHRcdFx0XHQgTlVMTCk7XG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTEzNDg9c3RhdGljIHZvaWQgZGlnaXRhbF90Z19zZW5kX3BzbF9yZXNfY29tcGxldGUoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTM1OS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMzYwOlx0ZGlnaXRhbF90Z19saXN0ZW4oZGRldiwgMTUwMCwgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEsIE5VTEwpO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEzNjEtXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTE0Njc9c3RhdGljIHZvaWQgZGlnaXRhbF90Z19zZW5kX2F0cl9yZXNfY29tcGxldGUoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTQ4NS1cdGVsc2Vcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxNDg2Olx0XHRkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcShkZGV2LCBhcmcsIHJlc3ApO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTE0ODctfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM5LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMiAxMzoyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NDcwCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogNzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2YgdGhlIHByb3ZpZGVkIGNvZGUgc25pcHBldCwgZm9jdXNpbmcgb24gdGhlIGBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcWAgZnVuY3Rpb246CgoqKkFuYWx5emluZyB0aGUgRGF0YSBUcmFuc2ZlciBpbiBgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXFgKioKCk9rYXksIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IGBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcWAsIHNwZWNpZmljYWxseSB0aGUgaGFuZGxpbmcgb2YgYSByZWNlaXZlZCBgc2tiYCAoc29ja2V0IGJ1ZmZlcikgdGhhdCByZXByZXNlbnRzIGEgcmVzcG9uc2UgdG8gYSB0YXJnZXQgREVQIChEYXRhIEV4ZWN1dGlvbiBQcmV2ZW50aW9uKSByZXF1ZXN0LiBUaGUgY3J1Y2lhbCBxdWVzdGlvbiBoZXJlIGlzIHdoZXRoZXIgdGhpcyBmdW5jdGlvbiBjb3BpZXMgYW55IGRhdGEgZnJvbSB0aGUga2VybmVsIHNwYWNlIHRvIHVzZXIgc3BhY2UsIGJlY2F1c2UgdGhhdCBpcyBvZnRlbiB3aGVyZSBtZW1vcnkgaXNzdWVzIGFyaXNlLiBJIG5lZWQgdG8gYmUgZGlsaWdlbnQgYWJvdXQgd2hlcmUgdGhlIGRhdGEgZmxvdyBpcyBvY2N1cnJpbmcuCgpUbyBnZXQgYSBkZWZpbml0aXZlIGFuc3dlciwgSSYjMzk7bSBnb2luZyB0byBkaXZlIGludG8gdGhlIGNvZGUuIEkmIzM5O2xsIGZvY3VzIG15IGF0dGVudGlvbiBvbiBsaW5lcyAxMTQwIHRocm91Z2ggMTI5MCBvZiBgZGlnaXRhbF9kZXAuY2AuIFRoaXMgcmFuZ2Ugc2hvdWxkIGNvbnRhaW4gdGhlIGNvcmUgbG9naWMgZm9yIHByb2Nlc3NpbmcgdGhlIGluY29taW5nIHJlc3BvbnNlIGFuZCwgY3JpdGljYWxseSwgYW55IGRhdGEgdHJhbnNmZXIgb3BlcmF0aW9ucyByZWxhdGVkIHRvIERFUCByZXF1ZXN0cy4gSSYjMzk7bGwgYmUgbG9va2luZyBzcGVjaWZpY2FsbHkgZm9yIGNhbGxzIHRoYXQgaW5kaWNhdGUgdXNlci1zcGFjZSBkYXRhIGNvcGllcyBzdWNoIGFzIGBjb3B5X3RvX3VzZXIoKWAgb3Igb3RoZXIgZnVuY3Rpb25zIHRoYXQgcGVyZm9ybSBhIHNpbWlsYXIgcm9sZS4gQW55IGRpcmVjdCBpbnRlcmFjdGlvbiB3aXRoIHVzZXItc3BhY2UgbWVtb3J5IHdpdGhpbiB0aGF0IGZ1bmN0aW9uIHJhbmdlIHdpbGwgYmUgaW50ZXJlc3RpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEyIDEzOjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L25mYy9kaWdpdGFsX2RlcC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTE0MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxMTQwOlx0XG4xMTQxOlx0XHRza2JfcHVsbChyZXNwLCBzaXplKTtcbjExNDI6XHRcbjExNDM6XHRcdHN3aXRjaCAoRElHSVRBTF9ORkNfREVQX1BGQl9UWVBFKHBmYikpIHtcbjExNDQ6XHRcdGNhc2UgRElHSVRBTF9ORkNfREVQX1BGQl9JX1BEVTpcbjExNDU6XHRcdFx0cHJfZGVidWcoXCYjMzQ7RElHSVRBTF9ORkNfREVQX1BGQl9JX1BEVVxcblwmIzM0Oyk7XG4xMTQ2Olx0XG4xMTQ3Olx0XHRcdGlmIChkZGV2LVx1MDAzZWF0bl9jb3VudCkge1xuMTE0ODpcdFx0XHRcdC8qIFRoZSB0YXJnZXQgaGFzIHJlY2VpdmVkIChhbmQgcmVwbGllZCB0bykgYXQgbGVhc3Qgb25lXG4xMTQ5Olx0XHRcdFx0ICogQVROIERFUF9SRVEuXG4xMTUwOlx0XHRcdFx0ICovXG4xMTUxOlx0XHRcdFx0ZGRldi1cdTAwM2VhdG5fY291bnQgPSAwO1xuMTE1MjpcdFxuMTE1MzpcdFx0XHRcdC8qIHBuaSBvZiByZXNwIFBEVSBlcXVhbCB0byB0aGUgdGFyZ2V0IGN1cnJlbnQgcG5pIC0gMVxuMTE1NDpcdFx0XHRcdCAqIG1lYW5zIHJlc3AgaXMgdGhlIHByZXZpb3VzIERFUF9SRVEgUERVIHJlY2VpdmVkIGZyb21cbjExNTU6XHRcdFx0XHQgKiB0aGUgaW5pdGlhdG9yIHNvIHRoZSB0YXJnZXQgcmVwbGllcyB3aXRoIHNhdmVkX3NrYlxuMTE1NjpcdFx0XHRcdCAqIHdoaWNoIGlzIHRoZSBwcmV2aW91cyBERVBfUkVTIHNhdmVkIGluXG4xMTU3Olx0XHRcdFx0ICogZGlnaXRhbF90Z19zZW5kX2RlcF9yZXMoKS5cbjExNTg6XHRcdFx0XHQgKi9cbjExNTk6XHRcdFx0XHRpZiAoRElHSVRBTF9ORkNfREVQX1BGQl9QTkkocGZiKSA9PVxuMTE2MDpcdFx0XHRcdCAgRElHSVRBTF9ORkNfREVQX1BGQl9QTkkoZGRldi1cdTAwM2VjdXJyX25mY19kZXBfcG5pIC0gMSkpIHtcbjExNjE6XHRcdFx0XHRcdHJjID0gZGlnaXRhbF90Z19zZW5kX3NhdmVkX3NrYihkZGV2KTtcbjExNjI6XHRcdFx0XHRcdGlmIChyYylcbjExNjM6XHRcdFx0XHRcdFx0Z290byBleGl0O1xuMTE2NDpcdFxuMTE2NTpcdFx0XHRcdFx0Z290byBmcmVlX3Jlc3A7XG4xMTY2Olx0XHRcdFx0fVxuMTE2NzpcdFxuMTE2ODpcdFx0XHRcdC8qIGF0bl9jb3VudCBcdTAwM2UgMCBhbmQgUERVIHBuaSAhPSBjdXJyX25mY19kZXBfcG5pIC0gMVxuMTE2OTpcdFx0XHRcdCAqIG1lYW5zIHRoZSB0YXJnZXQgcHJvYmFibHkgZGlkIG5vdCByZWNlaXZlZCB0aGUgbGFzdFxuMTE3MDpcdFx0XHRcdCAqIERFUF9SRVEgUERVIHNlbnQgYnkgdGhlIGluaXRpYXRvci4gVGhlIHRhcmdldFxuMTE3MTpcdFx0XHRcdCAqIGZhbGxiYWNrcyB0byBub3JtYWwgcHJvY2Vzc2luZyB0aGVuLlxuMTE3MjpcdFx0XHRcdCAqL1xuMTE3MzpcdFx0XHR9XG4xMTc0Olx0XG4xMTc1Olx0XHRcdGlmIChESUdJVEFMX05GQ19ERVBfUEZCX1BOSShwZmIpICE9IGRkZXYtXHUwMDNlY3Vycl9uZmNfZGVwX3BuaSkge1xuMTE3NjpcdFx0XHRcdFBST1RPQ09MX0VSUihcJiMzNDsxNC4xMi4zLjRcJiMzNDspO1xuMTE3NzpcdFx0XHRcdHJjID0gLUVJTztcbjExNzg6XHRcdFx0XHRnb3RvIGV4aXQ7XG4xMTc5Olx0XHRcdH1cbjExODA6XHRcbjExODE6XHRcdFx0a2ZyZWVfc2tiKGRkZXYtXHUwMDNlc2F2ZWRfc2tiKTtcbjExODI6XHRcdFx0ZGRldi1cdTAwM2VzYXZlZF9za2IgPSBOVUxMO1xuMTE4MzpcdFxuMTE4NDpcdFx0XHRyZXNwID0gZGlnaXRhbF9yZWN2X2RlcF9kYXRhX2dhdGhlcihkZGV2LCBwZmIsIHJlc3AsXG4xMTg1Olx0XHRcdFx0XHRcdFx0ICAgIGRpZ2l0YWxfdGdfc2VuZF9hY2ssIE5VTEwpO1xuMTE4NjpcdFx0XHRpZiAoSVNfRVJSKHJlc3ApKSB7XG4xMTg3Olx0XHRcdFx0cmMgPSBQVFJfRVJSKHJlc3ApO1xuMTE4ODpcdFx0XHRcdHJlc3AgPSBOVUxMO1xuMTE4OTpcdFx0XHRcdGdvdG8gZXhpdDtcbjExOTA6XHRcdFx0fVxuMTE5MTpcdFxuMTE5MjpcdFx0XHQvKiBJZiByZXNwIGlzIE5VTEwgdGhlbiB3ZSYjMzk7cmUgc3RpbGwgY2hhaW5pbmcgc28gcmV0dXJuIGFuZFxuMTE5MzpcdFx0XHQgKiB3YWl0IGZvciB0aGUgbmV4dCBwYXJ0IG9mIHRoZSBQRFUuICBFbHNlLCB0aGUgUERVIGlzXG4xMTk0Olx0XHRcdCAqIGNvbXBsZXRlIHNvIHBhc3MgaXQgdXAuXG4xMTk1Olx0XHRcdCAqL1xuMTE5NjpcdFx0XHRpZiAoIXJlc3ApXG4xMTk3Olx0XHRcdFx0cmV0dXJuO1xuMTE5ODpcdFxuMTE5OTpcdFx0XHRyYyA9IDA7XG4xMjAwOlx0XHRcdGJyZWFrO1xuMTIwMTpcdFx0Y2FzZSBESUdJVEFMX05GQ19ERVBfUEZCX0FDS19OQUNLX1BEVTpcbjEyMDI6XHRcdFx0aWYgKERJR0lUQUxfTkZDX0RFUF9OQUNLX0JJVF9TRVQocGZiKSkgeyAvKiBOQUNLICovXG4xMjAzOlx0XHRcdFx0aWYgKERJR0lUQUxfTkZDX0RFUF9QRkJfUE5JKHBmYiAmIzQzOyAxKSAhPVxuMTIwNDpcdFx0XHRcdFx0XHRcdGRkZXYtXHUwMDNlY3Vycl9uZmNfZGVwX3BuaSkge1xuMTIwNTpcdFx0XHRcdFx0cmMgPSAtRUlPO1xuMTIwNjpcdFx0XHRcdFx0Z290byBleGl0O1xuMTIwNzpcdFx0XHRcdH1cbjEyMDg6XHRcbjEyMDk6XHRcdFx0XHRkZGV2LVx1MDAzZWF0bl9jb3VudCA9IDA7XG4xMjEwOlx0XG4xMjExOlx0XHRcdFx0cmMgPSBkaWdpdGFsX3RnX3NlbmRfc2F2ZWRfc2tiKGRkZXYpO1xuMTIxMjpcdFx0XHRcdGlmIChyYylcbjEyMTM6XHRcdFx0XHRcdGdvdG8gZXhpdDtcbjEyMTQ6XHRcbjEyMTU6XHRcdFx0XHRnb3RvIGZyZWVfcmVzcDtcbjEyMTY6XHRcdFx0fVxuMTIxNzpcdFxuMTIxODpcdFx0XHQvKiBBQ0sgKi9cbjEyMTk6XHRcdFx0aWYgKGRkZXYtXHUwMDNlYXRuX2NvdW50KSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEyIDEzOjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcwNjQKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZCwgaW4gdGhlIGZpcnN0IHBlcnNvbiBhbmQgdGFyZ2V0ZWQgdG93YXJkcyBhbiBleHBlcnQ6CgoqKkRlZXAgRGl2ZSBpbnRvIGBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcWAqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0JiMzOTtzIGdvaW5nIG9uICpuZXh0KiB3aXRoaW4gdGhpcyBgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXFgIGZ1bmN0aW9uLiBJdCYjMzk7cyB0aGUgbHluY2hwaW4sIGlzbiYjMzk7dCBpdD8gVGhlIHN0YXJ0aW5nIHBvaW50IG9mIGFuIGltcG9ydGFudCBwcm9jZXNzLiBJIG5lZWQgdG8gY29uc2lkZXIgYWxsIGFuZ2xlcyBhbmQgZW5zdXJlIG5vdGhpbmcgaXMgbWlzc2VkIHRoYXQgd291bGQgaW1wYWN0IHRoZSBkZXNpZ24gb2YgdGhlIHdpZGVyIHN5c3RlbS4KCkkmIzM5O20gdGhpbmtpbmcsICYjMzQ7d2hhdCBhcmUgdGhlIG1vc3QgaW1wb3J0YW50IGFyZWFzIHRvIGJlIGludmVzdGlnYXRlZD8mIzM0Oy4gSXQgbG9va3MgdG8gbWUgbGlrZSBpdCYjMzk7cyBwcmltYXJpbHkgcmVzcG9uc2libGUgZm9yIGhhbmRsaW5nIHNvbWUgc29ydCBvZiBkZXBlbmRlbmN5IHJlcXVlc3Qgd2l0aGluIHRoZSBkaWdpdGFsIHNpZ25hbCBwcm9jZXNzaW5nIGNoYWluLiBHaXZlbiBpdHMgbmFtZSwgSSYjMzk7bSBhc3N1bWluZyBpdCYjMzk7cyByZWxhdGVkIHRvIHNvbWUgZGlnaXRhbCB0cmFuc21pc3Npb24gZ3JvdXAuIFdlIGhhdmUgdG8gY29uc2lkZXIgZmFjdG9ycyByZWxhdGluZyB0byBpdHMgcmVjZXB0aW9uIGFuZCBwcm9jZXNzaW5nIHdpdGhpbiB0aGlzIGZ1bmN0aW9uLiBXaGF0IGFyZSB0aGUgbGlrZWx5IGRhdGEgc3RydWN0dXJlcyBiZWluZyB1c2VkIGhlcmU/IElzIGl0IGEgc3RyYWlnaHRmb3J3YXJkIGJ1ZmZlciwgb3Igc29tZXRoaW5nIG1vcmUgY29tcGxleCB3aXRoIG1ldGFkYXRhPyBBcmUgdGhlcmUgYW55IGVycm9yIGNvbmRpdGlvbnMgdGhhdCBuZWVkIHRvIGJlIGFjY291bnRlZCBmb3I/IFdoYXQgaGFwcGVucyBpZiB0aGUgcmVxdWVzdCBpcyBtYWxmb3JtZWQgb3IgaW52YWxpZD8gRG9lcyBpdCBpbW1lZGlhdGVseSByZXR1cm4gYW4gZXJyb3IgY29kZSBvciBkb2VzIGl0IHRyaWdnZXIgYSBzcGVjaWZpYyBraW5kIG9mIGNhbGxiYWNrIG9yIGV2ZW50PyBJcyB0aGVyZSBhIHN0YXRlIG1hY2hpbmUgdGhhdCBJIG5lZWQgdG8gYmUgYXdhcmUgb2Y/IEFyZSB0aGVyZSBjb25jdXJyZW5jeSBjb25zaWRlcmF0aW9ucyB0aGF0IEkgbmVlZCB0byBrZWVwIGluIG1pbmQsIGkuZS4gaXMgdGhpcyBmdW5jdGlvbiBjYWxsZWQgZnJvbSBtdWx0aXBsZSB0aHJlYWRzPwoKSSBhbHNvIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcmVsYXRpb25zaGlwIHRvIHRoZSByZXN0IG9mIHRoZSBzeXN0ZW0uIFdoYXQgb3RoZXIgZnVuY3Rpb25zIG9yIG1vZHVsZXMgZG9lcyBgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXFgIGNhbGwsIGFuZCB3aGljaCBvbmVzIGNhbGwgaXQ/IFdoYXQgYXJlIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhlc2UgY2FsbHMgaW4gdGVybXMgb2YgcmVzb3VyY2UgdXRpbGl6YXRpb24gYW5kIGxhdGVuY3k/IERvZXMgaXQgaW50ZXJhY3Qgd2l0aCBhbnkgaGFyZHdhcmUgZGlyZWN0bHk/IEFuZCwgaWYgc28sIGFyZSB0aGVyZSBhbnkgaGFyZHdhcmUtc3BlY2lmaWMgY29uc2lkZXJhdGlvbnMgaW4gdGVybXMgb2YgdGltaW5nIG9yIHN5bmNocm9uaXphdGlvbj8gSSYjMzk7bGwgcHJvYmFibHkgbmVlZCB0byB0cmFjZSBpdHMgY2FsbCBzdGFjayBhbmQgZGF0YSBmbG93IHRvIGdldCBhIGNvbXBsZXRlIHBpY3R1cmUuIFRoaXMgaXMgbXkgY2hhbmNlIHRvIGRldGVybWluZSBpZiB0aGlzIHBpZWNlIG9mIGNvZGUgaXMgZWZmaWNpZW50IGFuZCB3ZWxsLWRlc2lnbmVkLCBvciBpZiB0aGVyZSYjMzk7cyByb29tIGZvciBpbXByb3ZlbWVudC4KClVsdGltYXRlbHksIEkgd2FudCB0byBmb3JtIGFuIGFjY3VyYXRlIG1lbnRhbCBtb2RlbCBvZiB3aGF0IHRoaXMgZnVuY3Rpb24gZG9lcyBhbmQgaG93IGl0IGZpdHMgaW50byB0aGUgb3ZlcmFsbCBzY2hlbWUgb2YgdGhpbmdzLiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSBrZXkgaW5zaWdodHMgdGhhdCB3aWxsIGluZm9ybSBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzeXN0ZW0mIzM5O3MgZGVzaWduIGFuZCB3aWxsIGRldGVybWluZSBob3cgSSB3aWxsIGFwcHJvYWNoIHRoaXMgcHJvYmxlbS4gTGV0JiMzOTtzIGRpZyBpbiBhbmQgc2VlIHdoYXQgc2VjcmV0cyB0aGlzIGZ1bmN0aW9uIGhvbGRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQyLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMiAxMzoyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9uZmMvZGlnaXRhbF9kZXAuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEyMjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogODAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTIyMDpcdFx0XHRcdC8qIFRoZSB0YXJnZXQgaGFzIHByZXZpb3VzbHkgcmVjZWl2ZWQgb25lIG9yIG1vcmUgQVROXG4xMjIxOlx0XHRcdFx0ICogUERVcy5cbjEyMjI6XHRcdFx0XHQgKi9cbjEyMjM6XHRcdFx0XHRkZGV2LVx1MDAzZWF0bl9jb3VudCA9IDA7XG4xMjI0Olx0XG4xMjI1Olx0XHRcdFx0LyogSWYgdGhlIEFDSyBQTkkgaXMgZXF1YWwgdG8gdGhlIHRhcmdldCBQTkkgLSAxIG1lYW5zXG4xMjI2Olx0XHRcdFx0ICogdGhhdCB0aGUgaW5pdGlhdG9yIGRpZCBub3QgcmVjZWl2ZSB0aGUgcHJldmlvdXMgUERVXG4xMjI3Olx0XHRcdFx0ICogc2VudCBieSB0aGUgdGFyZ2V0IHNvIHJlLXNlbmQgaXQuXG4xMjI4Olx0XHRcdFx0ICovXG4xMjI5Olx0XHRcdFx0aWYgKERJR0lUQUxfTkZDX0RFUF9QRkJfUE5JKHBmYiAmIzQzOyAxKSA9PVxuMTIzMDpcdFx0XHRcdFx0XHRcdGRkZXYtXHUwMDNlY3Vycl9uZmNfZGVwX3BuaSkge1xuMTIzMTpcdFx0XHRcdFx0cmMgPSBkaWdpdGFsX3RnX3NlbmRfc2F2ZWRfc2tiKGRkZXYpO1xuMTIzMjpcdFx0XHRcdFx0aWYgKHJjKVxuMTIzMzpcdFx0XHRcdFx0XHRnb3RvIGV4aXQ7XG4xMjM0Olx0XG4xMjM1Olx0XHRcdFx0XHRnb3RvIGZyZWVfcmVzcDtcbjEyMzY6XHRcdFx0XHR9XG4xMjM3Olx0XG4xMjM4Olx0XHRcdFx0LyogT3RoZXJ3aXNlLCB0aGUgdGFyZ2V0IGRpZCBub3QgcmVjZWl2ZSB0aGUgcHJldmlvdXNcbjEyMzk6XHRcdFx0XHQgKiBBQ0sgUERVIGZyb20gdGhlIGluaXRpYXRvci4gRmFsbGJhY2sgdG8gbm9ybWFsXG4xMjQwOlx0XHRcdFx0ICogcHJvY2Vzc2luZyBvZiBjaGFpbmVkIFBEVSB0aGVuLlxuMTI0MTpcdFx0XHRcdCAqL1xuMTI0MjpcdFx0XHR9XG4xMjQzOlx0XG4xMjQ0Olx0XHRcdC8qIEtlZXAgb24gc2VuZGluZyBjaGFpbmVkIFBEVSAqL1xuMTI0NTpcdFx0XHRpZiAoIWRkZXYtXHUwMDNlY2hhaW5pbmdfc2tiIHx8XG4xMjQ2Olx0XHRcdCAgICBESUdJVEFMX05GQ19ERVBfUEZCX1BOSShwZmIpICE9XG4xMjQ3Olx0XHRcdFx0XHRcdGRkZXYtXHUwMDNlY3Vycl9uZmNfZGVwX3BuaSkge1xuMTI0ODpcdFx0XHRcdHJjID0gLUVJTztcbjEyNDk6XHRcdFx0XHRnb3RvIGV4aXQ7XG4xMjUwOlx0XHRcdH1cbjEyNTE6XHRcbjEyNTI6XHRcdFx0a2ZyZWVfc2tiKGRkZXYtXHUwMDNlc2F2ZWRfc2tiKTtcbjEyNTM6XHRcdFx0ZGRldi1cdTAwM2VzYXZlZF9za2IgPSBOVUxMO1xuMTI1NDpcdFxuMTI1NTpcdFx0XHRyYyA9IGRpZ2l0YWxfdGdfc2VuZF9kZXBfcmVzKGRkZXYsIGRkZXYtXHUwMDNlY2hhaW5pbmdfc2tiKTtcbjEyNTY6XHRcdFx0aWYgKHJjKVxuMTI1NzpcdFx0XHRcdGdvdG8gZXhpdDtcbjEyNTg6XHRcbjEyNTk6XHRcdFx0Z290byBmcmVlX3Jlc3A7XG4xMjYwOlx0XHRjYXNlIERJR0lUQUxfTkZDX0RFUF9QRkJfU1VQRVJWSVNPUl9QRFU6XG4xMjYxOlx0XHRcdGlmIChESUdJVEFMX05GQ19ERVBfUEZCX0lTX1RJTUVPVVQocGZiKSkge1xuMTI2MjpcdFx0XHRcdHJjID0gLUVJTlZBTDtcbjEyNjM6XHRcdFx0XHRnb3RvIGV4aXQ7XG4xMjY0Olx0XHRcdH1cbjEyNjU6XHRcbjEyNjY6XHRcdFx0cmMgPSBkaWdpdGFsX3RnX3NlbmRfYXRuKGRkZXYpO1xuMTI2NzpcdFx0XHRpZiAocmMpXG4xMjY4Olx0XHRcdFx0Z290byBleGl0O1xuMTI2OTpcdFxuMTI3MDpcdFx0XHRkZGV2LVx1MDAzZWF0bl9jb3VudCYjNDM7JiM0Mzs7XG4xMjcxOlx0XG4xMjcyOlx0XHRcdGdvdG8gZnJlZV9yZXNwO1xuMTI3MzpcdFx0fVxuMTI3NDpcdFxuMTI3NTpcdFx0cmMgPSBuZmNfdG1fZGF0YV9yZWNlaXZlZChkZGV2LVx1MDAzZW5mY19kZXYsIHJlc3ApO1xuMTI3NjpcdFx0aWYgKHJjKVxuMTI3NzpcdFx0XHRyZXNwID0gTlVMTDtcbjEyNzg6XHRcbjEyNzk6XHRleGl0OlxuMTI4MDpcdFx0a2ZyZWVfc2tiKGRkZXYtXHUwMDNlY2hhaW5pbmdfc2tiKTtcbjEyODE6XHRcdGRkZXYtXHUwMDNlY2hhaW5pbmdfc2tiID0gTlVMTDtcbjEyODI6XHRcbjEyODM6XHRcdGRkZXYtXHUwMDNlYXRuX2NvdW50ID0gMDtcbjEyODQ6XHRcbjEyODU6XHRcdGtmcmVlX3NrYihkZGV2LVx1MDAzZXNhdmVkX3NrYik7XG4xMjg2Olx0XHRkZGV2LVx1MDAzZXNhdmVkX3NrYiA9IE5VTEw7XG4xMjg3Olx0XG4xMjg4Olx0XHRpZiAocmMpXG4xMjg5Olx0XHRcdGtmcmVlX3NrYihyZXNwKTtcbjEyOTA6XHRcbjEyOTE6XHRcdHJldHVybjtcbjEyOTI6XHRcbjEyOTM6XHRmcmVlX3Jlc3A6XG4xMjk0Olx0XHRkZXZfa2ZyZWVfc2tiKHJlc3ApO1xuMTI5NTpcdH1cbjEyOTY6XHRcbjEyOTc6XHRpbnQgZGlnaXRhbF90Z19zZW5kX2RlcF9yZXMoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbjEyOTg6XHR7XG4xMjk5Olx0XHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3JlcztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTIgMTM6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODczMQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDMzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE5GQyBEaWdpdGFsIERFUCBESUQgSGFuZGxpbmcqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggaW4gYG5ldC9uZmMvZGlnaXRhbF9kZXAuY2AgY29uY2VybmluZyBESUQgKERhdGEgSUQpIGhhbmRsaW5nIHdpdGhpbiB0aGUgRGlnaXRhbCBERVAgKERldmljZS10by1EZXZpY2UgUHJvdG9jb2wpIGZvciBORkMuIFRoZSBjb3JlIG9mIHRoaXMgc2VlbXMgdG8gYmUgY2VudGVyZWQgYXJvdW5kIGBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcWAgYW5kIHRoZSB2ZXJpZmljYXRpb24gb2YgdGhlIERJRCBmaWVsZCB3aXRoaW4gYSByZWNlaXZlZCBERVAgcmVxdWVzdC4KCkVzc2VudGlhbGx5LCBpdCBjaGVja3MgaWYgYSBESUQgaXMgcHJlc2VudCAoYERJR0lUQUxfTkZDX0RFUF9ESURfQklUX1NFVGApIGluIHRoZSBQcm90b2NvbCBGb3JtYXQgQnl0ZSAoUEZCKSBhbmQgdGhlbiBjb21wYXJlcyBpdCB0byB0aGUgZGV2aWNlJiMzOTtzIGV4cGVjdGVkIERJRCAoYGRkZXYtJmd0O2RpZGApLiBUaGUgb3JpZ2luYWwgY29kZSBoYWQgYSBzdWJ0bGUgZmxhdyB0aGF0IHRoaXMgcGF0Y2ggYWltcyB0byBmaXguIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoYXQgZmxhdywgYXMgdGhlIGxvZ2ljIGlzIHNvbWV3aGF0IGNvbnZvbHV0ZWQuCgpIZXJlJiMzOTtzIHRoZSBwcm9ibGVtIEkgc2VlIG5vdzogVGhlIGluaXRpYWwgY29uZGl0aW9uYWwgc3RhdGVtZW50IGluIHRoZSBgaWYgKERJR0lUQUxfTkZDX0RFUF9ESURfQklUX1NFVChwZmIpKWAgYmxvY2sgdXNlZCB0byB2ZXJpZnkgdGhlIERJRC4gVGhlIG9yaWdpbmFsIGNvZGUgaW5jcmVtZW50ZWQgYHNpemUmIzQzOyYjNDM7YCBpZiB0aGUgRElEcyBtYXRjaGVkIGJ1dCwgaWYgdGhlIERJRHMgZGlkIG5vdCBtYXRjaCwgaXQgd291bGQgZXJyb3Igb3V0IGFuZCBleGl0LiBUaGlzIHdvcmtzIGFzIGludGVuZGVkLgoKVGhlIHBhdGNoIGFpbXMgdG8gc29sdmUgYSBjYXNlIHdoZXJlIGlmIHRoZSBgcmVzcC0mZ3Q7bGVuYCBpcyB0b28gc21hbGwsIGFuIG91dC1vZi1ib3VuZHMgcmVhZCB3b3VsZCBoYXBwZW4gYW5kIGEgY3Jhc2ggY291bGQgb2NjdXIuIFRoZSBwYXRjaCBmaXhlcyB0aGlzIGJ5IGNoZWNraW5nIGByZXNwLSZndDtsZW4gJmx0OyBzaXplICYjNDM7IDFgIGJlZm9yZSBjb21wYXJpbmcgdGhlIERJRC4gVGhlIG90aGVyIHBhcnQgb2YgdGhlIGZpeCBpcyB0byBzaW1wbGlmeSB0aGUgYGVsc2VgIGNsYXVzZTogaWYgYSBESUQgaXMgZXhwZWN0ZWQgYnV0IG5vdCBwcmVzZW50LCBlcnJvciBvdXQuCgpOb3csIGxldCYjMzk7cyBzd2l0Y2ggZ2VhcnMgYW5kIGNoZWNrIGhvdyBgZGlnaXRhbF9pbl9yZWN2X2RlcF9yZXNgIGRvZXMgdGhlIERJRCBjaGVja2luZywgdG8gbWFrZSBzdXJlIHRoaXMgZml4IGlzIGNvbnNpc3RlbnQgYWNyb3NzIHRoZSBjb2RlYmFzZS4gSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCB0aGUgY2hhbmdlcyBtYWRlIGhlcmUgYXJlIGFsc28gcmVmbGVjdGVkIChvciBjb25zaWRlcmVkKSBpbiB0aGUgaW5jb21pbmcgcmVzcG9uc2Ugc2lkZSBvZiB0aGluZ3MuIEl0JiMzOTtzIGNydWNpYWwgZm9yIHN5bW1ldHJpY2FsIGJlaGF2aW9yIHRvIG1haW50YWluIGRhdGEgaW50ZWdyaXR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ0LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMiAxMzoyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtESUdJVEFMX05GQ19ERVBfRElEX0JJVF9TRVQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmZjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNTItI2RlZmluZSBESUdJVEFMX05GQ19ERVBfTkFEX0JJVF9TRVQocGZiKSAoKHBmYikgXHUwMDI2IDB4MDgpXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NTM6I2RlZmluZSBESUdJVEFMX05GQ19ERVBfRElEX0JJVF9TRVQocGZiKSAoKHBmYikgXHUwMDI2IERJR0lUQUxfTkZDX0RFUF9QRkJfRElEX0JJVClcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01NC0jZGVmaW5lIERJR0lUQUxfTkZDX0RFUF9QRkJfUE5JKHBmYikgICAgICgocGZiKSBcdTAwMjYgMHgwMylcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9Njg2PXN0YXRpYyB2b2lkIGRpZ2l0YWxfaW5fcmVjdl9kZXBfcmVzKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNzY2LVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjc2NzpcdGlmIChESUdJVEFMX05GQ19ERVBfRElEX0JJVF9TRVQocGZiKSkge1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTc2OC1cdFx0UFJPVE9DT0xfRVJSKFwmIzM0OzE0LjguMi4xXCYjMzQ7KTtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9MTA3Nz1zdGF0aWMgdm9pZCBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB2b2lkICphcmcsXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTExMTgtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTExOTpcdGlmIChESUdJVEFMX05GQ19ERVBfRElEX0JJVF9TRVQocGZiKSkge1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTExMjAtXHRcdGlmIChyZXNwLVx1MDAzZWxlbiBcdTAwM2Mgc2l6ZSAmIzQzOyAxIHx8ICFkZGV2LVx1MDAzZWRpZCB8fFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ1LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMiAxMzoyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5OTMwCgkJCQkJCQlvdXRwdXQ6IDE5OQoJCQkJCQkJdGhvdWdodHM6IDExNDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaCBmb3IgS01TQU4gUmVsZXZhbmNlKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoZSBjb21taXQgZml4ZXMgd2hhdCBsb29rcyBsaWtlIGEgY2xhc3NpYyBvdXQtb2YtYm91bmRzIHJlYWQgdnVsbmVyYWJpbGl0eS4gU3l6a2FsbGVyIHByb2JhYmx5IGZvdW5kIGl0LCBzcGVjaWZpY2FsbHksIGFjY2Vzc2luZyBgcmVzcC0mZ3Q7ZGF0YVszXWAgd2hlbiBgcmVzcC0mZ3Q7bGVuYCB3YXMgb25seSAzLiBUaGUgYHNpemVgIHZhcmlhYmxlIGlzIHNldCB0byB0aGUgc2l6ZSBvZiBgc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXNgLCB3aGljaCBpcyAzIGJ5dGVzLCBidXQgdGhlIGNvbmRpdGlvbmFsIGNoZWNrIGJlZm9yZSB0aGUgZml4IG9ubHkgY2hlY2tlZCBmb3IgYHJlc3AtJmd0O2xlbiAmZ3Q7PSAzYC4gVGhlbiwgaWYgYSBjZXJ0YWluIGJpdCB3YXMgc2V0LCB0aGUgY29kZSBhdHRlbXB0ZWQgdG8gYWNjZXNzIGByZXNwLSZndDtkYXRhWzNdYC4gSWYgYHJlc3AtJmd0O2xlbmAgd2FzIGV4YWN0bHkgMywgdGhhdCYjMzk7cyBhIG9uZS1ieXRlIG91dC1vZi1ib3VuZHMgcmVhZCBmcm9tIHRoZSBlbmQgb2YgdGhlIGByZXNwLSZndDtkYXRhYCBidWZmZXIuIEtBU0FOIHdvdWxkIGltbWVkaWF0ZWx5IGNhdGNoIHRoYXQuCgpOb3csIHRoZSBxdWVzdGlvbiBpcywgZG9lcyB0aGlzIHJlcXVpcmUgS01TQU4/IExldCYjMzk7cyBnbyB0aHJvdWdoIHRoZSBjaGVja2xpc3QuCgoxLiAgKipVc2VyLXNwYWNlIGV4cG9zdXJlPyoqIE5vcGUuIE5vdGhpbmcgaGVyZSBnZXRzIGNvcGllZCB0byB1c2VyIHNwYWNlLgoyLiAgKipVbmluaXRpYWxpemVkIHZhcmlhYmxlIHNoZW5hbmlnYW5zPyoqIE5vdCBhdCBhbGwuIGByZXNwLSZndDtsZW5gLCBgc2l6ZWAsIGBkZGV2LSZndDtkaWRgLCBhbmQgdGhlIHNwZWNpZmljIGJ5dGUgb2YgYHJlc3AtJmd0O2RhdGFgIGFyZSBhbGwgd2VsbC1kZWZpbmVkIGFuZCBpbml0aWFsaXplZC4gYHNpemVgIGlzIGFuIGludGVnZXIgaW5pdGlhbGl6ZWQgd2l0aCBgc2l6ZW9mKClgLiBgcmVzcC0mZ3Q7ZGF0YWAgaXMganVzdCB0aGUgTkZDIHBhY2tldCB0aGF0IHdhcyByZWNlaXZlZC4KMy4gICoqTmV3IGFsbG9jYXRpb25zIG9yIGRhdGEgc3RydWN0dXJlcz8qKiBObyBuZXcgYWxsb2NhdGlvbnMgb3IgbW9kaWZpY2F0aW9ucyB0byBkYXRhIHN0cnVjdHVyZSBpbml0aWFsaXphdGlvbnMgYXJlIGFkZGVkIG9yIG1vZGlmaWVkIGJ5IHRoZSBwYXRjaC4KNC4gICoqQm91bmRzIGNoZWNrcyBleHBvc2luZyB1bmluaXRpYWxpemVkIGJ5dGVzPyoqIEFjdHVhbGx5LCB0aGUgcGF0Y2ggKnRpZ2h0ZW5zKiBib3VuZHMgY2hlY2tzLiBJdCBhZGRzIGFuIGV4dHJhIGNoZWNrIChgcmVzcC0mZ3Q7bGVuICZsdDsgc2l6ZSAmIzQzOyAxYCkgdG8gZW5zdXJlIHdlIGRvbiYjMzk7dCByZWFkIG91dC1vZi1ib3VuZHMuIFRoZSBjb2RlIGlzICpyZXN0cmljdGluZyogYWNjZXNzLCBub3QgZXhwYW5kaW5nIGl0LgoKV2FpdCwgaXMgdGhlcmUgYW55IGNoYW5jZSB0aGF0IGByZXNwLSZndDtkYXRhW3NpemVdYCBjb3VsZCBiZSB1bmluaXRpYWxpemVkIG1lbW9yeT8gTm8uIFRoZSBjb2RlIGV4cGxpY2l0bHkgY2hlY2tzIGByZXNwLSZndDtsZW5gIGJlZm9yZSBhY2Nlc3NpbmcgdGhlIGRhdGEuIEV2ZW4gaWYgYHJlc3AtJmd0O2RhdGFgIGlzIGFuIHNrYiBkYXRhIGJ1ZmZlciwgdGhlIGNvZGUgY2hlY2tzIHRoZSBsZW5ndGggb2YgKnZhbGlkKiByZWNlaXZlZCBkYXRhLCB3aGljaCBpcyBpbmRpY2F0ZWQgYnkgYHJlc3AtJmd0O2xlbmAuIEJlZm9yZSB0aGUgcGF0Y2gsIGF0dGVtcHRpbmcgdG8gcmVhZCBwYXN0IHRoZSB2YWx1ZSBvZiBgcmVzcC0mZ3Q7bGVuYCB3YXMgYW4gb3V0LW9mLWJvdW5kcyByZWFkIChjYXVnaHQgYnkgS0FTQU4pLCB0aGUgcGF0Y2ggaGFzIGZpeGVkIHRoaXMgYW5kIG5vdyB0aGUgY29kZSBkb2VzIG5vdCByZWFkIHBhc3QgdGhlIGFsbG9jYXRlZCBidWZmZXIuIFRoZSBwYXRjaCBmaXhlcyB0aGlzIGJ5IGNoZWNraW5nIGByZXNwLSZndDtsZW4gJmx0OyBzaXplICYjNDM7IDFgLiBUaGUgY2hhbmdlIG1vZGlmaWVzIGJvdW5kcyBjaGVja2luZyBpbiBhIHdheSB0aGF0IHJlc3RyaWN0cyBhY2Nlc3MuCgpUaGUgY29yZSBvZiB0aGUgcHJvYmxlbSBoZXJlIHdhcyBhIEtBU0FOIGRldGVjdGFibGUgb3V0LW9mLWJvdW5kcyByZWFkLCBhbmQgdGhlIHBhdGNoIGZpeGVzIGl0IGJ5IGltcGxlbWVudGluZyBhIHByb3BlciBib3VuZHMgY2hlY2ssIG5vdCBieSBleHBvc2luZyBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkuCgpTbywgYWNjb3JkaW5nIHRvIHRoZSBydWxlcywgc2luY2UgS0FTQU4gaGFuZGxlcyB0aGUgdHlwZSBvZiBidWcgdGhpcyBwYXRjaCBhZGRyZXNzZXMsIGFuZCB0aGUgcGF0Y2ggZG9lc24mIzM5O3QgaW50cm9kdWNlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLCB0aGlzIGRvZXNuJiMzOTt0IG5lZWQgS01TQU4uIFRoaXMgcGF0Y2ggZmFsbHMgaW50byB0aGUgY2F0ZWdvcnkgb2YgJiMzNDtwcmltYXJpbHkgcmlza3Mgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgLi4uICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQgYnkgS0FTQU4pJiMzNDsuIFRoZSBzdHJ1Y3R1cmVzIGFyZSBmdWxseSBpbml0aWFsaXplZCBvciBjaGVja2VkLgoKVGhlcmVmb3JlLCBgTmVlZHNLTVNBTiA9IGZhbHNlYC4gSXQgaXMgYSBjbGFzc2ljIEtBU0FOIGlzc3VlLiBUaGUgcGF0Y2ggYWRkcyBhIGxlbmd0aCBjaGVjayBhbmQgZG9lc24mIzM5O3QgZG8gYW55dGhpbmcgZWxzZS4KCkxldCYjMzk7cyBwcmVwYXJlIHRoZSBqdXN0aWZpY2F0aW9uLCBjb250cmFzdGluZyBLQVNBTiBhbmQgS01TQU4uCkluIHRoZSBgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEoKWAgZnVuY3Rpb24sIHRoZSBkcml2ZXIgaGFuZGxlcyBpbmNvbWluZyBORkMgREVQIHJlcXVlc3RzLiBQcmV2aW91c2x5LCB3aGVuIHRoZSBESUQgYml0IGluIHRoZSBQRkIgYnl0ZSB3YXMgc2V0LCBpdCB1bmNvbmRpdGlvbmFsbHkgY2hlY2tlZCBgcmVzcC0mZ3Q7ZGF0YVszXWAgd2l0aG91dCBlbnN1cmluZyBgcmVzcC0mZ3Q7bGVuICZndDs9IDRgIChzaW5jZSB0aGUgcHJpb3IgY2hlY2sgb25seSBlbnN1cmVkIGByZXNwLSZndDtsZW4gJmd0Oz0gM2ApLCBsZWFkaW5nIHRvIGEgcG90ZW50aWFsIDEtYnl0ZSBvdXQtb2YtYm91bmRzIHJlYWQuIE91dC1vZi1ib3VuZHMgcmVhZCBkZXRlY3Rpb24gb24gc2xhYi9za2IgYnVmZmVycyBpcyBoYW5kbGVkIGRpcmVjdGx5IGJ5IEtBU0FOIChlLmcuLCBzbGFiLW91dC1vZi1ib3VuZHMpLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSwgZG9lcyBub3QgYWx0ZXIgc3RydWN0dXJlcyBjb3BpZWQgdG8gdXNlcnNwYWNlLCBkb2VzIG5vdCBsZWF2ZSBhbnkgdmFyaWFibGVzIHVuaW5pdGlhbGl6ZWQsIGFuZCBhY3R1YWxseSB0aWdodGVucyBsZW5ndGggdmFsaWRhdGlvbiBvbiBpbmNvbWluZyBkYXRhIGJlZm9yZSBpbmRleGluZyB0aGUgYnVmZmVyLiBObyB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciBpbmZvcm1hdGlvbiBsZWFrcyBhcmUgaW50cm9kdWNlZCBvciBleHBvc2VkLiBUaGVyZWZvcmUsIGBOZWVkc0tNU0FOPWZhbHNlYC4KTGV0JiMzOTtzIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ni8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTIgMTM6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyByZWFkIGluIGBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcSgpYCB3aGVyZSBgcmVzcC1cdTAwM2VkYXRhWzNdYCB3YXMgcmVhZCB3aXRob3V0IGZpcnN0IHZlcmlmeWluZyB0aGF0IGByZXNwLVx1MDAzZWxlbmAgd2FzIGF0IGxlYXN0IGBzaXplICYjNDM7IDFgICg0IGJ5dGVzKS4gXG5cblRoaXMgaXMgYSBib3VuZHMtY2hlY2tpbmcgaXNzdWU6IGFjY2Vzc2luZyBieXRlcyBiZXlvbmQgYHJlc3AtXHUwMDNlbGVuYCBpcyBhbiBvdXQtb2YtYm91bmRzIGFjY2VzcyBkaXJlY3RseSBkZXRlY3RhYmxlIGJ5IEtBU0FOIChlLmcuLCBzbGFiLW91dC1vZi1ib3VuZHMgb24gc2tiIGRhdGEpLiBUaGUgY2hhbmdlIGRvZXMgbm90IGludHJvZHVjZSBhbnkgdW5pbml0aWFsaXplZCBzdGFjayBvciBoZWFwIHZhcmlhYmxlcywgZG9lcyBub3QgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgcGFkZGluZyBvciBzdHJ1Y3QgZmllbGRzIHRvIHVzZXIgc3BhY2UsIGFuZCBkb2VzIG5vdCBhbHRlciBjb250cm9sIGZsb3cgYmFzZWQgb24gdW5pbml0aWFsaXplZCBtZW1vcnkuIEJlY2F1c2Ugc3RhbmRhcmQgS0FTQU4gZnVsbHkgY292ZXJzIHRoaXMgY2xhc3Mgb2YgYnVncyBhbmQgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgYXJlIGludHJvZHVjZWQsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyByZWFkIGluIGBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcSgpYCB3aGVyZSBgcmVzcC1cdTAwM2VkYXRhWzNdYCB3YXMgcmVhZCB3aXRob3V0IGZpcnN0IHZlcmlmeWluZyB0aGF0IGByZXNwLVx1MDAzZWxlbmAgd2FzIGF0IGxlYXN0IGBzaXplICYjNDM7IDFgICg0IGJ5dGVzKS4gXG5cblRoaXMgaXMgYSBib3VuZHMtY2hlY2tpbmcgaXNzdWU6IGFjY2Vzc2luZyBieXRlcyBiZXlvbmQgYHJlc3AtXHUwMDNlbGVuYCBpcyBhbiBvdXQtb2YtYm91bmRzIGFjY2VzcyBkaXJlY3RseSBkZXRlY3RhYmxlIGJ5IEtBU0FOIChlLmcuLCBzbGFiLW91dC1vZi1ib3VuZHMgb24gc2tiIGRhdGEpLiBUaGUgY2hhbmdlIGRvZXMgbm90IGludHJvZHVjZSBhbnkgdW5pbml0aWFsaXplZCBzdGFjayBvciBoZWFwIHZhcmlhYmxlcywgZG9lcyBub3QgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgcGFkZGluZyBvciBzdHJ1Y3QgZmllbGRzIHRvIHVzZXIgc3BhY2UsIGFuZCBkb2VzIG5vdCBhbHRlciBjb250cm9sIGZsb3cgYmFzZWQgb24gdW5pbml0aWFsaXplZCBtZW1vcnkuIEJlY2F1c2Ugc3RhbmRhcmQgS0FTQU4gZnVsbHkgY292ZXJzIHRoaXMgY2xhc3Mgb2YgYnVncyBhbmQgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgYXJlIGludHJvZHVjZWQsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0xMlQxMzoyMzozMi4yODIyNzI4MzVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzQ4OTQ2NTA5MzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkZDXCIsXG4gICAgXCJORkNfRElHSVRBTFwiLFxuICAgIFwiTkZDX1NJTVwiLFxuICAgIFwiTkZDX1BPUlQxMDBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcVwiLFxuICAgIFwiZGlnaXRhbF90Z19zZW5kX2RlcF9yZXNcIixcbiAgICBcImRpZ2l0YWxfdGdfcmVjdl9hdHJfcmVxXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIHJlYWQgaW4gYGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxKClgIHdoZXJlIGByZXNwLVxcdTAwM2VkYXRhWzNdYCB3YXMgcmVhZCB3aXRob3V0IGZpcnN0IHZlcmlmeWluZyB0aGF0IGByZXNwLVxcdTAwM2VsZW5gIHdhcyBhdCBsZWFzdCBgc2l6ZSArIDFgICg0IGJ5dGVzKS4gXFxuXFxuVGhpcyBpcyBhIGJvdW5kcy1jaGVja2luZyBpc3N1ZTogYWNjZXNzaW5nIGJ5dGVzIGJleW9uZCBgcmVzcC1cXHUwMDNlbGVuYCBpcyBhbiBvdXQtb2YtYm91bmRzIGFjY2VzcyBkaXJlY3RseSBkZXRlY3RhYmxlIGJ5IEtBU0FOIChlLmcuLCBzbGFiLW91dC1vZi1ib3VuZHMgb24gc2tiIGRhdGEpLiBUaGUgY2hhbmdlIGRvZXMgbm90IGludHJvZHVjZSBhbnkgdW5pbml0aWFsaXplZCBzdGFjayBvciBoZWFwIHZhcmlhYmxlcywgZG9lcyBub3QgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgcGFkZGluZyBvciBzdHJ1Y3QgZmllbGRzIHRvIHVzZXIgc3BhY2UsIGFuZCBkb2VzIG5vdCBhbHRlciBjb250cm9sIGZsb3cgYmFzZWQgb24gdW5pbml0aWFsaXplZCBtZW1vcnkuIEJlY2F1c2Ugc3RhbmRhcmQgS0FTQU4gZnVsbHkgY292ZXJzIHRoaXMgY2xhc3Mgb2YgYnVncyBhbmQgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgYXJlIGludHJvZHVjZWQsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGlucHV0IHZhbGlkYXRpb24gaW4gdGhlIE5GQyBkaWdpdGFsIHRhcmdldCBtb2RlIERFUCByZXF1ZXN0IGhhbmRsaW5nIChkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcSkgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIGFjY2VzcyB3aGVuIHRoZSBESUQgYml0IGlzIHNldCBieSB2ZXJpZnlpbmcgZnJhbWUgbGVuZ3RoIGFnYWluc3QgZXhwZWN0ZWQgc2l6ZSBhbmQgY29ycmVjdGx5IGluZGV4aW5nIHJlc3AtXFx1MDAzZWRhdGEuIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIHZpcnR1YWwgTkZDIGRyaXZlcnMgKGUuZy4gbmZjc2ltKSBhbmQgZW11bGF0ZWQgVVNCIE5GQyBkb25nbGVzIChwb3J0MTAwKSwgbWFraW5nIGl0IHdvcnRoIGZ1enppbmcgZm9yIGJvdW5kYXJ5IGlzc3VlcyBhbmQgc3RhdGUgdHJhbnNpdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEyVDEzOjIzOjMyLjI4MjI3ODIyNVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ4OTkyNTA0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDEwMjBmMjY5ZTg1NTY2NzE0MGJjMDRmODNhOTY4NDk5MDlhZjc1ZGRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFNhdCBTZXAgMTIgMTM6MjM6MzAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L25mYy9kaWdpdGFsX2RlcC5jIGIvbmV0L25mYy9kaWdpdGFsX2RlcC5jXFxuaW5kZXggMzk4MmZhMDg0NzM3Zi4uYWU1NDA3ZmNhMTJkNCAxMDA2NDRcXG4tLS0gYS9uZXQvbmZjL2RpZ2l0YWxfZGVwLmNcXG4rKysgYi9uZXQvbmZjL2RpZ2l0YWxfZGVwLmNcXG5AQCAtMTExNywxMiArMTExNywxMiBAQCBzdGF0aWMgdm9pZCBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB2b2lkICphcmcsXFxuIFxcdHBmYiA9IGRlcF9yZXEtXFx1MDAzZXBmYjtcXG4gXFxuIFxcdGlmIChESUdJVEFMX05GQ19ERVBfRElEX0JJVF9TRVQocGZiKSkge1xcbi1cXHRcXHRpZiAoZGRldi1cXHUwMDNlZGlkIFxcdTAwMjZcXHUwMDI2IChkZGV2LVxcdTAwM2VkaWQgPT0gcmVzcC1cXHUwMDNlZGF0YVszXSkpIHtcXG4tXFx0XFx0XFx0c2l6ZSsrO1xcbi1cXHRcXHR9IGVsc2Uge1xcbitcXHRcXHRpZiAocmVzcC1cXHUwMDNlbGVuIFxcdTAwM2Mgc2l6ZSArIDEgfHwgIWRkZXYtXFx1MDAzZWRpZCB8fFxcbitcXHRcXHQgICAgZGRldi1cXHUwMDNlZGlkICE9IHJlc3AtXFx1MDAzZWRhdGFbc2l6ZV0pIHtcXG4gXFx0XFx0XFx0cmMgPSAtRUlPO1xcbiBcXHRcXHRcXHRnb3RvIGV4aXQ7XFxuIFxcdFxcdH1cXG4rXFx0XFx0c2l6ZSsrO1xcbiBcXHR9IGVsc2UgaWYgKGRkZXYtXFx1MDAzZWRpZCkge1xcbiBcXHRcXHRyYyA9IC1FSU87XFxuIFxcdFxcdGdvdG8gZXhpdDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTJUMTM6MjM6MzMuNzczMzIwNDE0WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjoxMzA3NzcyMTM5NDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkZDXCIsXG4gICAgXCJORkNfRElHSVRBTFwiLFxuICAgIFwiTkZDX1NJTVwiLFxuICAgIFwiTkZDX1BPUlQxMDBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcVwiLFxuICAgIFwiZGlnaXRhbF90Z19zZW5kX2RlcF9yZXNcIixcbiAgICBcImRpZ2l0YWxfdGdfcmVjdl9hdHJfcmVxXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgaW5wdXQgdmFsaWRhdGlvbiBpbiB0aGUgTkZDIGRpZ2l0YWwgdGFyZ2V0IG1vZGUgREVQIHJlcXVlc3QgaGFuZGxpbmcgKGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxKSB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgYWNjZXNzIHdoZW4gdGhlIERJRCBiaXQgaXMgc2V0IGJ5IHZlcmlmeWluZyBmcmFtZSBsZW5ndGggYWdhaW5zdCBleHBlY3RlZCBzaXplIGFuZCBjb3JyZWN0bHkgaW5kZXhpbmcgcmVzcC1cXHUwMDNlZGF0YS4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgdmlydHVhbCBORkMgZHJpdmVycyAoZS5nLiBuZmNzaW0pIGFuZCBlbXVsYXRlZCBVU0IgTkZDIGRvbmdsZXMgKHBvcnQxMDApLCBtYWtpbmcgaXQgd29ydGggZnV6emluZyBmb3IgYm91bmRhcnkgaXNzdWVzIGFuZCBzdGF0ZSB0cmFuc2l0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAxMDIwZjI2OWU4NTU2NjcxNDBiYzA0ZjgzYTk2ODQ5OTA5YWY3NWRkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBTZXAgMTIgMTM6MjM6MzAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbmZjL2RpZ2l0YWxfZGVwLmMgYi9uZXQvbmZjL2RpZ2l0YWxfZGVwLmNcbmluZGV4IDM5ODJmYTA4NDczN2YuLmFlNTQwN2ZjYTEyZDQgMTAwNjQ0XG4tLS0gYS9uZXQvbmZjL2RpZ2l0YWxfZGVwLmNcbisrKyBiL25ldC9uZmMvZGlnaXRhbF9kZXAuY1xuQEAgLTExMTcsMTIgKzExMTcsMTIgQEAgc3RhdGljIHZvaWQgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxuIFx0cGZiID0gZGVwX3JlcS1cdTAwM2VwZmI7XG4gXG4gXHRpZiAoRElHSVRBTF9ORkNfREVQX0RJRF9CSVRfU0VUKHBmYikpIHtcbi1cdFx0aWYgKGRkZXYtXHUwMDNlZGlkIFx1MDAyNlx1MDAyNiAoZGRldi1cdTAwM2VkaWQgPT0gcmVzcC1cdTAwM2VkYXRhWzNdKSkge1xuLVx0XHRcdHNpemUrKztcbi1cdFx0fSBlbHNlIHtcbitcdFx0aWYgKHJlc3AtXHUwMDNlbGVuIFx1MDAzYyBzaXplICsgMSB8fCAhZGRldi1cdTAwM2VkaWQgfHxcbitcdFx0ICAgIGRkZXYtXHUwMDNlZGlkICE9IHJlc3AtXHUwMDNlZGF0YVtzaXplXSkge1xuIFx0XHRcdHJjID0gLUVJTztcbiBcdFx0XHRnb3RvIGV4aXQ7XG4gXHRcdH1cbitcdFx0c2l6ZSsrO1xuIFx0fSBlbHNlIGlmIChkZGV2LVx1MDAzZWRpZCkge1xuIFx0XHRyYyA9IC1FSU87XG4gXHRcdGdvdG8gZXhpdDtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEyVDEzOjIzOjMzLjc3MzMyMjgxNFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjE2MjM0MTMzNTAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlRyaWFnZSBvZiBgbmV0L25mYy9kaWdpdGFsX2RlcC5jYCBQYXRjaCBmb3IgU3l6a2FsbGVyIEZ1enppbmcqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCBhIHBhdGNoIGZvciBgbmV0L25mYy9kaWdpdGFsX2RlcC5jYCBhbmQgbXkgZ29hbCBpcyB0byBmaWd1cmUgb3V0IGlmIGl0J3Mgd29ydGggdGhyb3dpbmcgYXQgc3l6a2FsbGVyLiBGaXJzdCwgbGV0J3MgZG8gYSBxdWljayByaXNrIGFzc2Vzc21lbnQuIFRoaXMgaXMganVzdCByb3V0aW5lIGtlcm5lbCBjb2RlIHJldmlldywgbG9va2luZyBmb3IgcG90ZW50aWFsIGJ1Z3MgdG8gZmVlZCBpbnRvIHRoZSBmdXp6aW5nIHBpcGVsaW5lIOKAkyBwdXJlbHkgZGVmZW5zaXZlIHNlY3VyaXR5IHN0dWZmLCBubyBuZWZhcmlvdXMgaW50ZW50IGhlcmUuIEknbSBqdXN0IGFuYWx5emluZyBhIGNvZGUgY2hhbmdlIGFuZCBhc3Nlc3NpbmcgaXRzIHBvdGVudGlhbCBmb3IgZXhwbG9pdGF0aW9uIHRocm91Z2ggZnV6emluZy4gVGhhdCBzZWVtcyB0b3RhbGx5IGJlbmlnbiBhbmQgZmFsbHMgc3F1YXJlbHkgd2l0aGluIG15IHJlbWl0LlxuXG5Ob3csIGxldCdzIGRpdmUgaW50byB0aGUgcGF0Y2ggaXRzZWxmLiBJdCBsb29rcyBsaWtlIHdlJ3ZlIGdvdCBhIGNoYW5nZSBpbiBgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXFgLiBUaGUgb3JpZ2luYWwgY2hlY2sgd2FzIGNvbXBhcmluZyBhIGRldmljZSBJRCAoYGRkZXYtXHUwMDNlZGlkYCkgd2l0aCBgcmVzcC1cdTAwM2VkYXRhWzNdYCB3aGVuIHRoZSBgRElHSVRBTF9ORkNfREVQX0RJRF9CSVRfU0VUYCBpcyB0cnVlLiBUaGUgcGF0Y2ggaGFzIGNoYW5nZWQgdGhhdCBjaGVjay4gSXQgbm93IGNoZWNrcyB0aGUgbGVuZ3RoIGByZXNwLVx1MDAzZWxlbmAgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIGBzaXplKzFgLiBJdCBhbHNvIGNoZWNrcyBpZiBhIGRldmljZSBJRCBgZGRldi1cdTAwM2VkaWRgIGV4aXN0cywgYW5kIGlmIGl0IGRvZXMsIGl0IGNoZWNrcyB0aGF0IHRoZSBleHBlY3RlZCBESUQgKGBkZGV2LVx1MDAzZWRpZGApIG1hdGNoZXMgYHJlc3AtXHUwMDNlZGF0YVtzaXplXWAuIElmIGFueSBvZiB0aGVzZSBjaGVja3MgZmFpbCwgaXQgcmV0dXJucyBhbiBgRUlPYCBlcnJvci4gU28gd2UgaGF2ZSBtb3JlIGNvbXByZWhlbnNpdmUgY2hlY2tzLlxuXG5UaGUga2V5IGhlcmUgaXMgdW5kZXJzdGFuZGluZyB0aGUgY29udGV4dCBvZiB0aGF0IGZ1bmN0aW9uLCBgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXFgLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0J3MgZ29pbmcgb24gKmFyb3VuZCogdGhpcyBjb2RlLiBMZXQncyBzZWUgd2hhdCB0aGUgZnVuY3Rpb24gZG9lcyAtIHdoaWNoIEkgY2FuIGRvIHVzaW5nIG15IHRydXN0eSB0b29scy4gSSdsbCB1c2UgZWl0aGVyIGByZWFkLWZpbGVgIG9yIGBncmVwcGVyYCB0byBzZWUgaG93IHRoZSBmdW5jdGlvbiBpcyB1c2VkLCB3aGF0IGRhdGEgc3RydWN0dXJlcyBpdCBvcGVyYXRlcyBvbiwgYW5kIHdoYXQgdGhlIG92ZXJhbGwgZmxvdyBpcy4gVGhhdCdsbCBwcm92aWRlIHRoZSBuZWNlc3NhcnkgY29udGV4dCB0byBkZXRlcm1pbmUgaWYgdGhpcyBwYXRjaCBpcyBhY3R1YWxseSBpbnRlcmVzdGluZyBmcm9tIGEgZnV6emluZyBwZXJzcGVjdGl2ZSwgYW5kIGlkZW50aWZ5IGNyaXRpY2FsIGNvZGUgcGF0aHMgYW5kIHBvdGVudGlhbCBmb2N1cyBzeW1ib2xzIGZvciBzeXprYWxsZXIuIEFmdGVyIHRoaXMsIEkgbmVlZCB0byBjb21lIHVwIHdpdGggc29tZSByZWFzb25pbmcgdG8gZXhwbGFpbiB0aGlzIGRlY2lzaW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTU5LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYxLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTJUMTM6MjM6NTAuMDA3NDU5MTE3WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTg5OTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L25mYy9kaWdpdGFsX2RlcC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDExMDAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjExMDA6XFx0XFx0XFx0Z290byBleGl0O1xcbjExMDE6XFx0XFx0fVxcbjExMDI6XFx0XFxuMTEwMzpcXHRcXHRpZiAocmVzcC1cXHUwMDNlbGVuIFxcdTAwM2UgZGRldi1cXHUwMDNlbG9jYWxfcGF5bG9hZF9tYXgpIHtcXG4xMTA0OlxcdFxcdFxcdHJjID0gLUVNU0dTSVpFO1xcbjExMDU6XFx0XFx0XFx0Z290byBleGl0O1xcbjExMDY6XFx0XFx0fVxcbjExMDc6XFx0XFxuMTEwODpcXHRcXHRzaXplID0gc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKTtcXG4xMTA5OlxcdFxcdGRlcF9yZXEgPSAoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKilyZXNwLVxcdTAwM2VkYXRhO1xcbjExMTA6XFx0XFxuMTExMTpcXHRcXHRpZiAocmVzcC1cXHUwMDNlbGVuIFxcdTAwM2Mgc2l6ZSB8fCBkZXBfcmVxLVxcdTAwM2VkaXIgIT0gRElHSVRBTF9ORkNfREVQX0ZSQU1FX0RJUl9PVVQgfHxcXG4xMTEyOlxcdFxcdCAgICBkZXBfcmVxLVxcdTAwM2VjbWQgIT0gRElHSVRBTF9DTURfREVQX1JFUSkge1xcbjExMTM6XFx0XFx0XFx0cmMgPSAtRUlPO1xcbjExMTQ6XFx0XFx0XFx0Z290byBleGl0O1xcbjExMTU6XFx0XFx0fVxcbjExMTY6XFx0XFxuMTExNzpcXHRcXHRwZmIgPSBkZXBfcmVxLVxcdTAwM2VwZmI7XFxuMTExODpcXHRcXG4xMTE5OlxcdFxcdGlmIChESUdJVEFMX05GQ19ERVBfRElEX0JJVF9TRVQocGZiKSkge1xcbjExMjA6XFx0XFx0XFx0aWYgKHJlc3AtXFx1MDAzZWxlbiBcXHUwMDNjIHNpemUgKyAxIHx8ICFkZGV2LVxcdTAwM2VkaWQgfHxcXG4xMTIxOlxcdFxcdFxcdCAgICBkZGV2LVxcdTAwM2VkaWQgIT0gcmVzcC1cXHUwMDNlZGF0YVtzaXplXSkge1xcbjExMjI6XFx0XFx0XFx0XFx0cmMgPSAtRUlPO1xcbjExMjM6XFx0XFx0XFx0XFx0Z290byBleGl0O1xcbjExMjQ6XFx0XFx0XFx0fVxcbjExMjU6XFx0XFx0XFx0c2l6ZSsrO1xcbjExMjY6XFx0XFx0fSBlbHNlIGlmIChkZGV2LVxcdTAwM2VkaWQpIHtcXG4xMTI3OlxcdFxcdFxcdHJjID0gLUVJTztcXG4xMTI4OlxcdFxcdFxcdGdvdG8gZXhpdDtcXG4xMTI5OlxcdFxcdH1cXG4xMTMwOlxcdFxcbjExMzE6XFx0XFx0aWYgKERJR0lUQUxfTkZDX0RFUF9OQURfQklUX1NFVChwZmIpKSB7XFxuMTEzMjpcXHRcXHRcXHRyYyA9IC1FSU87XFxuMTEzMzpcXHRcXHRcXHRnb3RvIGV4aXQ7XFxuMTEzNDpcXHRcXHR9XFxuMTEzNTpcXHRcXG4xMTM2OlxcdFxcdGlmIChzaXplIFxcdTAwM2UgcmVzcC1cXHUwMDNlbGVuKSB7XFxuMTEzNzpcXHRcXHRcXHRyYyA9IC1FSU87XFxuMTEzODpcXHRcXHRcXHRnb3RvIGV4aXQ7XFxuMTEzOTpcXHRcXHR9XFxuMTE0MDpcXHRcXG4xMTQxOlxcdFxcdHNrYl9wdWxsKHJlc3AsIHNpemUpO1xcbjExNDI6XFx0XFxuMTE0MzpcXHRcXHRzd2l0Y2ggKERJR0lUQUxfTkZDX0RFUF9QRkJfVFlQRShwZmIpKSB7XFxuMTE0NDpcXHRcXHRjYXNlIERJR0lUQUxfTkZDX0RFUF9QRkJfSV9QRFU6XFxuMTE0NTpcXHRcXHRcXHRwcl9kZWJ1ZyhcXFwiRElHSVRBTF9ORkNfREVQX1BGQl9JX1BEVVxcXFxuXFxcIik7XFxuMTE0NjpcXHRcXG4xMTQ3OlxcdFxcdFxcdGlmIChkZGV2LVxcdTAwM2VhdG5fY291bnQpIHtcXG4xMTQ4OlxcdFxcdFxcdFxcdC8qIFRoZSB0YXJnZXQgaGFzIHJlY2VpdmVkIChhbmQgcmVwbGllZCB0bykgYXQgbGVhc3Qgb25lXFxuMTE0OTpcXHRcXHRcXHRcXHQgKiBBVE4gREVQX1JFUS5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTJUMTM6MjM6NTAuMDA3NTU5NzU3WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MjgyNDI3MjAxMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIFRob3VnaHRzIG9uIE5GQyBGdXp6aW5nIGluIFN5emthbGxlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBuZXQvbmZjL2RpZ2l0YWxfZGVwLmNgLCB3aGljaCBJIGtub3cgaXMgcGFydCBvZiB0aGUgTkZDIERpZ2l0YWwgUHJvdG9jb2wgd2l0aGluIHRoZSBORkMgc3Vic3lzdGVtLiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXM6IGNhbiB3ZSBldmVuICpyZWFjaCogTkZDIHdpdGhpbiB0aGUgc3RhbmRhcmQgU3l6a2FsbGVyIHNldHVwIG9yIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IEknbSB0aGlua2luZyBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZSwgdHlwaWNhbCBmdXp6aW5nIHNjZW5hcmlvcy5cblxuSG9sZCBvbiwgSSB2YWd1ZWx5IHJlY2FsbCBzb21lIG1lbnRpb24gb2YgTkZDIGZ1enppbmcgaW4gU3l6a2FsbGVyLiBMZXQncyBjb25maXJtIC0gZG9lcyBTeXprYWxsZXIgYWN0dWFsbHkgc3VwcG9ydCBORkMsIG9yIGFtIEkgbWlzdGFrZW4/IElmIHNvLCB3aGF0IGRyaXZlcnMgb3IgaW50ZXJmYWNlcyBlbmFibGUgdGhpcyBzdXBwb3J0P1xuXG5NeSBtaW5kIGlzIHJhY2luZyB0aHJvdWdoIHBvc3NpYmlsaXRpZXMuIEknbSB0aGlua2luZyBvZiBkcml2ZXJzIGxpa2UgYG5mY3NpbWAgKHRoYXQncyB0aGUgTkZDIHNpbXVsYXRvciBkcml2ZXIsIHJpZ2h0PyBgZHJpdmVycy9uZmMvbmZjc2ltLmNgKSwgdmlydHVhbCBORkMgaW50ZXJmYWNlcywgcmF3IHNvY2tldHMsIE5ldGxpbmssIGFuZCBldmVuIHRoYXQgY2xldmVyIHBuNTMzIFVTQiBlbXVsYXRpb24gdGhyb3VnaCB0aGUgc3l6a2FsbGVyIFVTQiByYXcgZ2FkZ2V0LiBOb3cgSSBoYXZlIHRvIGdvIHRocm91Z2ggYG5mY3NpbWAgb3Igb3RoZXIgdmlydHVhbCBkcml2ZXJzIGZyb20gdGhlIGtlcm5lbCB0cmVlIGZvciBtb3JlIGluc2lnaHRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjI0LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTJUMTM6MjM6NTIuODMxODMzOTg5WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1NjU0MjAzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mY19kaWdpdGFsX2RldlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25mY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25mYy9uZmNzaW0uYy0xNS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYzoxNjojZGVmaW5lIE5GQ1NJTV9FUlIoZCwgZm10LCBhcmdzLi4uKSBuZmNfZXJyKFxcdTAwMjZkLVxcdTAwM2VuZmNfZGlnaXRhbF9kZXYtXFx1MDAzZW5mY19kZXYtXFx1MDAzZWRldiwgXFxcXFxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTE3LVxcdFxcdFxcdFxcdFxcdCAgICBcXFwiJXM6IFxcXCIgZm10LCBfX2Z1bmNfXywgIyMgYXJncylcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0xOC1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYzoxOTojZGVmaW5lIE5GQ1NJTV9EQkcoZCwgZm10LCBhcmdzLi4uKSBkZXZfZGJnKFxcdTAwMjZkLVxcdTAwM2VuZmNfZGlnaXRhbF9kZXYtXFx1MDAzZW5mY19kZXYtXFx1MDAzZWRldiwgXFxcXFxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTIwLVxcdFxcdFxcdFxcdFxcdCAgICBcXFwiJXM6IFxcXCIgZm10LCBfX2Z1bmNfXywgIyMgYXJncylcXG4tLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jPTMxPXN0cnVjdCBuZmNzaW0ge1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjMyOlxcdHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKm5mY19kaWdpdGFsX2RldjtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zMy1cXG4tLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jPTE4Mj1zdGF0aWMgdm9pZCBuZmNzaW1fcmVjdl93cShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0xOTctXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MTk4OlxcdGRldi1cXHUwMDNlY2IoZGV2LVxcdTAwM2VuZmNfZGlnaXRhbF9kZXYsIGRldi1cXHUwMDNlYXJnLCBza2IpO1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTE5OS19XFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjAwLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjIwMTpzdGF0aWMgaW50IG5mY3NpbV9zZW5kKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHN0cnVjdCBza19idWZmICpza2IsXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjAyLVxcdFxcdCAgICAgICB1MTYgdGltZW91dCwgbmZjX2RpZ2l0YWxfY21kX2NvbXBsZXRlX3QgY2IsIHZvaWQgKmFyZylcXG4tLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTIzOS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYzoyNDA6c3RhdGljIHZvaWQgbmZjc2ltX2Fib3J0X2NtZChzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2KVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTI0MS17XFxuLS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yNDYtXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MjQ3OnN0YXRpYyBpbnQgbmZjc2ltX3N3aXRjaF9yZihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBib29sIG9uKVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTI0OC17XFxuLS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yNTUtXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MjU2OnN0YXRpYyBpbnQgbmZjc2ltX2luX2NvbmZpZ3VyZV9odyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTI1Ny1cXHRcXHRcXHRcXHRcXHQgIGludCB0eXBlLCBpbnQgcGFyYW0pXFxuLS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yNzgtXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6Mjc5OnN0YXRpYyBpbnQgbmZjc2ltX2luX3NlbmRfY21kKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjgwLVxcdFxcdFxcdCAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MTYgdGltZW91dCxcXG4tLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTI4NS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYzoyODY6c3RhdGljIGludCBuZmNzaW1fdGdfY29uZmlndXJlX2h3KHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjg3LVxcdFxcdFxcdFxcdFxcdCAgaW50IHR5cGUsIGludCBwYXJhbSlcXG4tLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTMwOC1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYzozMDk6c3RhdGljIGludCBuZmNzaW1fdGdfc2VuZF9jbWQoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zMTAtXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBza19idWZmICpza2IsIHUxNiB0aW1lb3V0LFxcbi0tXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzE1LVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjMxNjpzdGF0aWMgaW50IG5mY3NpbV90Z19saXN0ZW4oc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdTE2IHRpbWVvdXQsXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzE3LVxcdFxcdFxcdCAgICBuZmNfZGlnaXRhbF9jbWRfY29tcGxldGVfdCBjYiwgdm9pZCAqYXJnKVxcbi0tXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM9MzQ2PXN0YXRpYyB2b2lkIG5mY3NpbV9kZWJ1Z2ZzX2luaXRfZGV2KHN0cnVjdCBuZmNzaW0gKmRldilcXG4tLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTM1Ny1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYzozNTg6XFx0aWR4ID0gZGV2LVxcdTAwM2VuZmNfZGlnaXRhbF9kZXYtXFx1MDAzZW5mY19kZXYtXFx1MDAzZWlkeDtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zNTktXFx0biA9IHNucHJpbnRmKGRldm5hbWUsIHNpemVvZihkZXZuYW1lKSwgXFxcIm5mYyVkXFxcIiwgaWR4KTtcXG4tLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jPTM3MD1zdGF0aWMgc3RydWN0IG5mY3NpbSAqbmZjc2ltX2RldmljZV9uZXcoc3RydWN0IG5mY3NpbV9saW5rICpsaW5rX2luLFxcbi0tXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzgyLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjM4MzpcXHRkZXYtXFx1MDAzZW5mY19kaWdpdGFsX2RldiA9XFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzg0LVxcdFxcdFxcdG5mY19kaWdpdGFsX2FsbG9jYXRlX2RldmljZShcXHUwMDI2bmZjc2ltX2RpZ2l0YWxfb3BzLFxcbi0tXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzg3LVxcdFxcdFxcdFxcdFxcdFxcdCAgICAwLCAwKTtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYzozODg6XFx0aWYgKCFkZXYtXFx1MDAzZW5mY19kaWdpdGFsX2Rldikge1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTM4OS1cXHRcXHRrZnJlZShkZXYpO1xcbi0tXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzkyLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjM5MzpcXHRuZmNfZGlnaXRhbF9zZXRfZHJ2ZGF0YShkZXYtXFx1MDAzZW5mY19kaWdpdGFsX2RldiwgZGV2KTtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zOTQtXFxuLS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zOTctXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6Mzk4OlxcdHJjID0gbmZjX2RpZ2l0YWxfcmVnaXN0ZXJfZGV2aWNlKGRldi1cXHUwMDNlbmZjX2RpZ2l0YWxfZGV2KTtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zOTktXFx0aWYgKHJjKSB7XFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtNDAwLVxcdFxcdHByX2VycihcXFwiQ291bGQgbm90IHJlZ2lzdGVyIGRpZ2l0YWwgZGV2aWNlICglZClcXFxcblxcXCIsIHJjKTtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYzo0MDE6XFx0XFx0bmZjX2RpZ2l0YWxfZnJlZV9kZXZpY2UoZGV2LVxcdTAwM2VuZmNfZGlnaXRhbF9kZXYpO1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQwMi1cXHRcXHRrZnJlZShkZXYpO1xcbi0tXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM9NDEyPXN0YXRpYyB2b2lkIG5mY3NpbV9kZXZpY2VfZnJlZShzdHJ1Y3QgbmZjc2ltICpkZXYpXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtNDEzLXtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYzo0MTQ6XFx0bmZjX2RpZ2l0YWxfdW5yZWdpc3Rlcl9kZXZpY2UoZGV2LVxcdTAwM2VuZmNfZGlnaXRhbF9kZXYpO1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQxNS1cXG4tLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQyMi1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYzo0MjM6XFx0bmZjX2RpZ2l0YWxfZnJlZV9kZXZpY2UoZGV2LVxcdTAwM2VuZmNfZGlnaXRhbF9kZXYpO1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQyNC1cXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYz00Mzk9c3RydWN0IHBvcnQxMDAge1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo0NDA6XFx0c3RydWN0IG5mY19kaWdpdGFsX2RldiAqbmZjX2RpZ2l0YWxfZGV2O1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy00NDEtXFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM9OTMxPXN0YXRpYyB2b2lkIHBvcnQxMDBfc2VuZF9jb21wbGV0ZShzdHJ1Y3QgdXJiICp1cmIpXFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtOTU0LVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo5NTU6c3RhdGljIHZvaWQgcG9ydDEwMF9hYm9ydF9jbWQoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldilcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtOTU2LXtcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYz0xMDI1PXN0YXRpYyB1MTYgcG9ydDEwMF9nZXRfZmlybXdhcmVfdmVyc2lvbihzdHJ1Y3QgcG9ydDEwMCAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEwNDYtXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjEwNDc6c3RhdGljIGludCBwb3J0MTAwX3N3aXRjaF9yZihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBib29sIG9uKVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMDQ4LXtcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMDcxLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxMDcyOnN0YXRpYyBpbnQgcG9ydDEwMF9pbl9zZXRfcmYoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdTggcmYpXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEwNzMte1xcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTExMDAtXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjExMDE6c3RhdGljIGludCBwb3J0MTAwX2luX3NldF9mcmFtaW5nKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIGludCBwYXJhbSlcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTEwMi17XFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTE0Mi1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTE0MzpzdGF0aWMgaW50IHBvcnQxMDBfaW5fY29uZmlndXJlX2h3KHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIGludCB0eXBlLFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMTQ0LVxcdFxcdFxcdFxcdCAgIGludCBwYXJhbSlcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYz0xMTU1PXN0YXRpYyB2b2lkIHBvcnQxMDBfaW5fY29tbV9yZl9jb21wbGV0ZShzdHJ1Y3QgcG9ydDEwMCAqZGV2LCB2b2lkICphcmcsXFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTIwMC1leGl0OlxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxMjAxOlxcdGNiKGRldi1cXHUwMDNlbmZjX2RpZ2l0YWxfZGV2LCBjYl9hcmctXFx1MDAzZWNvbXBsZXRlX2FyZywgcmVzcCk7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEyMDItXFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTIwNS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTIwNjpzdGF0aWMgaW50IHBvcnQxMDBfaW5fc2VuZF9jbWQoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTIwNy1cXHRcXHRcXHQgICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTE2IF90aW1lb3V0LFxcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEyMjgtXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjEyMjk6c3RhdGljIGludCBwb3J0MTAwX3RnX3NldF9yZihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB1OCByZilcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTIzMC17XFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTI1Ny1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTI1ODpzdGF0aWMgaW50IHBvcnQxMDBfdGdfc2V0X2ZyYW1pbmcoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgaW50IHBhcmFtKVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMjU5LXtcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMjk5LVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxMzAwOnN0YXRpYyBpbnQgcG9ydDEwMF90Z19jb25maWd1cmVfaHcoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgaW50IHR5cGUsXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEzMDEtXFx0XFx0XFx0XFx0ICAgaW50IHBhcmFtKVxcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jPTEzMzI9c3RhdGljIHZvaWQgcG9ydDEwMF90Z19jb21tX3JmX2NvbXBsZXRlKHN0cnVjdCBwb3J0MTAwICpkZXYsIHZvaWQgKmFyZyxcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMzY2LWV4aXQ6XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjEzNjc6XFx0Y2IoZGV2LVxcdTAwM2VuZmNfZGlnaXRhbF9kZXYsIGNiX2FyZy1cXHUwMDNlY29tcGxldGVfYXJnLCByZXNwKTtcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTM2OC1cXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMzcxLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxMzcyOnN0YXRpYyBpbnQgcG9ydDEwMF90Z19zZW5kX2NtZChzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMzczLVxcdFxcdFxcdCAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MTYgdGltZW91dCxcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMzk5LVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxNDAwOnN0YXRpYyBpbnQgcG9ydDEwMF9saXN0ZW5fbWRhYShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xNDAxLVxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgZGlnaXRhbF90Z19tZGFhX3BhcmFtcyAqcGFyYW1zLFxcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE0NTUtXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjE0NTY6c3RhdGljIGludCBwb3J0MTAwX2xpc3RlbihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB1MTYgdGltZW91dCxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTQ1Ny1cXHRcXHRcXHQgIG5mY19kaWdpdGFsX2NtZF9jb21wbGV0ZV90IGNiLCB2b2lkICphcmcpXFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM9MTQ4OT1zdGF0aWMgaW50IHBvcnQxMDBfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSxcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xNTcxLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxNTcyOlxcdGRldi1cXHUwMDNlbmZjX2RpZ2l0YWxfZGV2ID0gbmZjX2RpZ2l0YWxfYWxsb2NhdGVfZGV2aWNlKFxcdTAwMjZwb3J0MTAwX2RpZ2l0YWxfb3BzLFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xNTczLVxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgIFBPUlQxMDBfUFJPVE9DT0xTLFxcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE1NzYtXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgZGV2LVxcdTAwM2Vza2JfdGFpbHJvb20pO1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxNTc3OlxcdGlmICghZGV2LVxcdTAwM2VuZmNfZGlnaXRhbF9kZXYpIHtcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTU3OC1cXHRcXHRuZmNfZXJyKFxcdTAwMjZpbnRlcmZhY2UtXFx1MDAzZWRldixcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTU3OTpcXHRcXHRcXHRcXFwiQ291bGQgbm90IGFsbG9jYXRlIG5mY19kaWdpdGFsX2RldlxcXFxuXFxcIik7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE1ODAtXFx0XFx0cmMgPSAtRU5PTUVNO1xcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE1ODMtXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjE1ODQ6XFx0bmZjX2RpZ2l0YWxfc2V0X3BhcmVudF9kZXYoZGV2LVxcdTAwM2VuZmNfZGlnaXRhbF9kZXYsIFxcdTAwMjZpbnRlcmZhY2UtXFx1MDAzZWRldik7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjE1ODU6XFx0bmZjX2RpZ2l0YWxfc2V0X2RydmRhdGEoZGV2LVxcdTAwM2VuZmNfZGlnaXRhbF9kZXYsIGRldik7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE1ODYtXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjE1ODc6XFx0cmMgPSBuZmNfZGlnaXRhbF9yZWdpc3Rlcl9kZXZpY2UoZGV2LVxcdTAwM2VuZmNfZGlnaXRhbF9kZXYpO1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xNTg4LVxcdGlmIChyYykge1xcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE1OTYtZnJlZV9uZmNfZGV2OlxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxNTk3OlxcdG5mY19kaWdpdGFsX2ZyZWVfZGV2aWNlKGRldi1cXHUwMDNlbmZjX2RpZ2l0YWxfZGV2KTtcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTU5OC1cXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYz0xNjA4PXN0YXRpYyB2b2lkIHBvcnQxMDBfZGlzY29ubmVjdChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlKVxcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE2MTQtXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjE2MTU6XFx0bmZjX2RpZ2l0YWxfdW5yZWdpc3Rlcl9kZXZpY2UoZGV2LVxcdTAwM2VuZmNfZGlnaXRhbF9kZXYpO1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxNjE2OlxcdG5mY19kaWdpdGFsX2ZyZWVfZGV2aWNlKGRldi1cXHUwMDNlbmZjX2RpZ2l0YWxfZGV2KTtcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTYxNy1cXG4tLVxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM9MjE3PXN0cnVjdCBzdDk1aGZfY29udGV4dCB7XFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy0yMTgtXFx0c3RydWN0IHN0OTVoZl9zcGlfY29udGV4dCBzcGljb250ZXh0O1xcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6MjE5OlxcdHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXY7XFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy0yMjAtXFx0c3RydWN0IG5mY19kZXYgKm5mY2RldjtcXG4tLVxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM9NTMxPXN0YXRpYyBpbnQgaXNvMTQ0NDNfY29uZmlnX2ZkdChzdHJ1Y3Qgc3Q5NWhmX2NvbnRleHQgKnN0OTVjb250ZXh0LCBpbnQgd3R4bSlcXG4tLVxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtNTM0LVxcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFxcdTAwMjZzdDk1Y29udGV4dC1cXHUwMDNlc3BpY29udGV4dC5zcGlkZXYtXFx1MDAzZWRldjtcXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jOjUzNTpcXHRzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpuZmNkZGV2ID0gc3Q5NWNvbnRleHQtXFx1MDAzZWRkZXY7XFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy01MzYtXFx0dW5zaWduZWQgY2hhciBwcF90eXBlYjtcXG4tLVxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM9NjAyPXN0YXRpYyBpbnQgc3Q5NWhmX2hhbmRsZV93dHgoc3RydWN0IHN0OTVoZl9jb250ZXh0ICpzdGNvbnRleHQsXFxuLS1cXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTYwOC1cXHRzdHJ1Y3QgcGFyYW1fbGlzdCBuZXdfcGFyYW1zWzFdO1xcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6NjA5OlxcdHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKm5mY2RkZXYgPSBzdGNvbnRleHQtXFx1MDAzZWRkZXY7XFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy02MTAtXFx0c3RydWN0IGRldmljZSAqZGV2ID0gXFx1MDAyNnN0Y29udGV4dC1cXHUwMDNlbmZjZGV2LVxcdTAwM2VkZXY7XFxuLS1cXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jPTY5Mz1zdGF0aWMgaW50IHN0OTVoZl9yZXNwb25zZV9oYW5kbGVyKHN0cnVjdCBzdDk1aGZfY29udGV4dCAqc3Rjb250ZXh0LFxcbi0tXFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy02OTktXFx0dW5zaWduZWQgY2hhciB2YWxfbW07XFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzo3MDA6XFx0c3RydWN0IG5mY19kaWdpdGFsX2RldiAqbmZjZGRldiA9IHN0Y29udGV4dC1cXHUwMDNlZGRldjtcXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTcwMS1cXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcXHUwMDI2c3Rjb250ZXh0LVxcdTAwM2VuZmNkZXYtXFx1MDAzZWRldjtcXG4tLVxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM9NzY2PXN0YXRpYyBpcnFyZXR1cm5fdCBzdDk1aGZfaXJxX3RocmVhZF9oYW5kbGVyKGludCBpcnEsIHZvaWQgICpzdDk1aGZjb250ZXh0KVxcbi0tXFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy04NjgtLyogTkZDIG9wcyBmdW5jdGlvbnMgZGVmaW5pdGlvbiAqL1xcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6ODY5OnN0YXRpYyBpbnQgc3Q5NWhmX2luX2NvbmZpZ3VyZV9odyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtODcwLVxcdFxcdFxcdFxcdCAgaW50IHR5cGUsXFxuLS1cXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jPTkwMT1zdGF0aWMgaW50IHJmX29mZihzdHJ1Y3Qgc3Q5NWhmX2NvbnRleHQgKnN0Y29udGV4dClcXG4tLVxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtOTE0LVxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6OTE1OnN0YXRpYyBpbnQgc3Q5NWhmX2luX3NlbmRfY21kKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy05MTYtXFx0XFx0XFx0ICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtOTg4LS8qIHAycCB3aWxsIGJlIHN1cHBvcnRlZCBpbiBhIGxhdGVyIHJlbGVhc2UgISAqL1xcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6OTg5OnN0YXRpYyBpbnQgc3Q5NWhmX3RnX2NvbmZpZ3VyZV9odyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtOTkwLVxcdFxcdFxcdFxcdCAgaW50IHR5cGUsXFxuLS1cXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTk5NS1cXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jOjk5NjpzdGF0aWMgaW50IHN0OTVoZl90Z19zZW5kX2NtZChzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtOTk3LVxcdFxcdFxcdCAgICAgIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTEwMDQtXFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzoxMDA1OnN0YXRpYyBpbnQgc3Q5NWhmX3RnX2xpc3RlbihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtMTAwNi1cXHRcXHRcXHQgICAgdTE2IHRpbWVvdXQsXFxuLS1cXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTEwMTItXFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzoxMDEzOnN0YXRpYyBpbnQgc3Q5NWhmX3RnX2dldF9yZl90ZWNoKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHU4ICpyZl90ZWNoKVxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtMTAxNC17XFxuLS1cXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTEwMTctXFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzoxMDE4OnN0YXRpYyBpbnQgc3Q5NWhmX3N3aXRjaF9yZihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBib29sIG9uKVxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtMTAxOS17XFxuLS1cXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTEwMzMtLyogVE9ETyBzdDk1aGZfYWJvcnRfY21kICovXFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzoxMDM0OnN0YXRpYyB2b2lkIHN0OTVoZl9hYm9ydF9jbWQoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldilcXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTEwMzUte1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYz00MzA9c3RydWN0IHRyZjc5NzBhIHtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNDM1LVxcdHN0cnVjdCByZWd1bGF0b3JcXHRcXHQqdmRkaW9fcmVndWxhdG9yO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NDM2OlxcdHN0cnVjdCBuZmNfZGlnaXRhbF9kZXZcXHRcXHQqZGRldjtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTQzNy1cXHR1MzJcXHRcXHRcXHRcXHRxdWlya3M7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jPTExNDc9c3RhdGljIGludCB0cmY3OTcwYV9zd2l0Y2hfcmZfb24oc3RydWN0IHRyZjc5NzBhICp0cmYpXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExNzEtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMTcyOnN0YXRpYyBpbnQgdHJmNzk3MGFfc3dpdGNoX3JmKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIGJvb2wgb24pXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTczLXtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM9MTMxMj1zdGF0aWMgaW50IHRyZjc5NzBhX2luX2NvbmZpZ19mcmFtaW5nKHN0cnVjdCB0cmY3OTcwYSAqdHJmLCBpbnQgZnJhbWluZylcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTM4Ni1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEzODc6c3RhdGljIGludCB0cmY3OTcwYV9pbl9jb25maWd1cmVfaHcoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgaW50IHR5cGUsXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzg4LVxcdFxcdFxcdFxcdCAgICBpbnQgcGFyYW0pXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jPTE0Mzk9c3RhdGljIGludCB0cmY3OTcwYV9wZXJfY21kX2NvbmZpZyhzdHJ1Y3QgdHJmNzk3MGEgKnRyZixcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTUwNy1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE1MDg6c3RhdGljIGludCB0cmY3OTcwYV9zZW5kX2NtZChzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTUwOS1cXHRcXHRcXHQgICAgIHN0cnVjdCBza19idWZmICpza2IsIHUxNiB0aW1lb3V0LFxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYz0xNjcwPXN0YXRpYyBpbnQgdHJmNzk3MGFfdGdfY29uZmlnX2ZyYW1pbmcoc3RydWN0IHRyZjc5NzBhICp0cmYsIGludCBmcmFtaW5nKVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNzI4LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTcyOTpzdGF0aWMgaW50IHRyZjc5NzBhX3RnX2NvbmZpZ3VyZV9odyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBpbnQgdHlwZSxcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE3MzAtXFx0XFx0XFx0XFx0ICAgIGludCBwYXJhbSlcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTc2NC1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE3NjU6c3RhdGljIGludCBfdHJmNzk3MGFfdGdfbGlzdGVuKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHUxNiB0aW1lb3V0LFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTc2Ni1cXHRcXHRcXHQgICAgICAgbmZjX2RpZ2l0YWxfY21kX2NvbXBsZXRlX3QgY2IsIHZvaWQgKmFyZyxcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTg0My1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE4NDQ6c3RhdGljIGludCB0cmY3OTcwYV90Z19saXN0ZW4oc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdTE2IHRpbWVvdXQsXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xODQ1LVxcdFxcdFxcdCAgICAgIG5mY19kaWdpdGFsX2NtZF9jb21wbGV0ZV90IGNiLCB2b2lkICphcmcpXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE4NTQtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxODU1OnN0YXRpYyBpbnQgdHJmNzk3MGFfdGdfbGlzdGVuX21kKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xODU2LVxcdFxcdFxcdFxcdCB1MTYgdGltZW91dCwgbmZjX2RpZ2l0YWxfY21kX2NvbXBsZXRlX3QgY2IsXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE4NzctXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxODc4OnN0YXRpYyBpbnQgdHJmNzk3MGFfdGdfZ2V0X3JmX3RlY2goc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdTggKnJmX3RlY2gpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xODc5LXtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTg4OS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE4OTA6c3RhdGljIHZvaWQgdHJmNzk3MGFfYWJvcnRfY21kKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xODkxLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTJUMTM6MjM6NTIuODc3NDk1NzkyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MzUxMzMxMDA4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIFRob3VnaHRzIG9uIE5GQyBEcml2ZXIgSW52ZXN0aWdhdGlvbioqXG5cbk9rYXksIHNvIEkndmUgc3BvdHRlZCBgcG9ydDEwMGAuIFJpZ2h0LCB0aGF0J3MgYSBVU0IgTkZDIGRyaXZlci4gR29vZC4gSSBzZWUgaXRzIHByb2JlIGZ1bmN0aW9uLCBgcG9ydDEwMF9wcm9iZWAuIFRoYXQncyB0aGUgZW50cnkgcG9pbnQgdG8gaG93IGl0IGhhbmRsZXMgaXRzIGZ1bmN0aW9uYWxpdHkuIEltbWVkaWF0ZWx5LCBJJ20gdGhpbmtpbmcgYWJvdXQgZW11bGF0aW9uIHN0cmF0ZWdpZXMuIFVTQiBkcml2ZXJzIGFyZSBvZnRlbiByaXBlIGZvciBmdXp6aW5nLCBhbmQgSSBrbm93IHRoYXQgc3l6a2FsbGVyIGhhcyB0aGF0IHJhdyBnYWRnZXQgc2V0dXAsIHRoZSBgZHVtbXlfaGNkYCBhbmQgYHJhd19nYWRnZXRgIHN0dWZmLiBUaGF0IGNvdWxkIGJlIGEgZGlyZWN0IGxpbmUgdG8gbWFuaXB1bGF0ZSB0aGUgZHJpdmVyIHdpdGhvdXQgbmVlZGluZyBhY3R1YWwgaGFyZHdhcmUuIEkgc2hvdWxkIHByb2JhYmx5IGFsc28gY29uc2lkZXIgaW50ZXJhY3Rpbmcgd2l0aCBvciBldmVuIGNyZWF0aW5nIGFuIGBuZmNzaW1gIGluc3RhbmNlIGFzIGFub3RoZXIgYXZlbnVlIGZvciB0ZXN0aW5nLlxuXG5GdXJ0aGVybW9yZSwgbXkgbWluZCBqdW1wcyB0byBpbnZlc3RpZ2F0aW5nIGhvdyB0aGUgZHJpdmVyJ3MgaW5uZXIgd29ya2luZ3MgYXJlIHVzZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkYXRhIGZsb3csIGFuZCBzcGVjaWZpY2FsbHksIEknbSBjdXJpb3VzIGFib3V0IHRoZSBmdW5jdGlvbiBgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXFgLiBIb3cgaXMgdGhpcyBmdW5jdGlvbiBhY3R1YWxseSAqdXNlZCo/IFdoYXQgYXJlIHRoZSBjYWxsaW5nIGNvbnRleHRzPyBMZXQncyB0cmFjZSBiYWNrIHRoZSBjYWxsZXJzIG9mIHRoaXMgZnVuY3Rpb24uIFVuZGVyc3RhbmRpbmcgaXRzIGludGVyYWN0aW9uIHdpdGggdGhlIGRyaXZlciB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgZ3Jhc3Agb2YgdGhlIHBvdGVudGlhbCBhdHRhY2sgc3VyZmFjZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE2NzYsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTJUMTM6MjM6NTYuMzkwODA3ODUzWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3NDU2MDcyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25mYy9kaWdpdGFsX2RlcC5jPTEwNj1zdGF0aWMgdm9pZCBkaWdpdGFsX2luX3JlY3ZfZGVwX3JlcyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB2b2lkICphcmcsXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwNy1cXHRcXHRcXHRcXHQgICAgc3RydWN0IHNrX2J1ZmYgKnJlc3ApO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDg6c3RhdGljIHZvaWQgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDktXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBza19idWZmICpyZXNwKTtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz05Nzg9c3RhdGljIGludCBkaWdpdGFsX3RnX3NlbmRfYWNrKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTAxMi1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTAxMzpcXHRyYyA9IGRpZ2l0YWxfdGdfc2VuZF9jbWQoZGRldiwgc2tiLCAxNTAwLCBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcSxcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTAxNC1cXHRcXHRcXHRcXHQgZGF0YV9leGNoKTtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz0xMDI0PXN0YXRpYyBpbnQgZGlnaXRhbF90Z19zZW5kX2F0bihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2KVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwNTEtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwNTI6XFx0cmMgPSBkaWdpdGFsX3RnX3NlbmRfY21kKGRkZXYsIHNrYiwgMTUwMCwgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEsXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwNTMtXFx0XFx0XFx0XFx0IE5VTEwpO1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTEwNjA9c3RhdGljIGludCBkaWdpdGFsX3RnX3NlbmRfc2F2ZWRfc2tiKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYpXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTA2OS1cXHRyYyA9IGRpZ2l0YWxfdGdfc2VuZF9jbWQoZGRldiwgZGRldi1cXHUwMDNlc2F2ZWRfc2tiLCAxNTAwLFxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDcwOlxcdFxcdFxcdFxcdCBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcSwgTlVMTCk7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwNzEtXFx0aWYgKHJjKVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwNzYtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwNzc6c3RhdGljIHZvaWQgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDc4LVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqcmVzcClcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz0xMjk3PWludCBkaWdpdGFsX3RnX3NlbmRfZGVwX3JlcyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEzMzEtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEzMzI6XFx0cmMgPSBkaWdpdGFsX3RnX3NlbmRfY21kKGRkZXYsIHRtcF9za2IsIDE1MDAsIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxLFxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzMzLVxcdFxcdFxcdFxcdCBOVUxMKTtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz0xMzQ4PXN0YXRpYyB2b2lkIGRpZ2l0YWxfdGdfc2VuZF9wc2xfcmVzX2NvbXBsZXRlKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTM1OS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTM2MDpcXHRkaWdpdGFsX3RnX2xpc3RlbihkZGV2LCAxNTAwLCBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcSwgTlVMTCk7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEzNjEtXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9MTQ2Nz1zdGF0aWMgdm9pZCBkaWdpdGFsX3RnX3NlbmRfYXRyX3Jlc19jb21wbGV0ZShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTE0ODUtXFx0ZWxzZVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxNDg2OlxcdFxcdGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxKGRkZXYsIGFyZywgcmVzcCk7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTE0ODctfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMlQxMzoyMzo1Ni40MzgyNzAzNTZaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjo0NDE2MzQ0Mzk2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2g6IE5GQyBESUQgSGFuZGxpbmcqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gdW5kZXJzdGFuZCB0aGUgY29yZSBsb2dpYyBvZiB0aGlzIHBhdGNoLiBJdCBhcHBlYXJzIHRvIGJlIHJlbGF0ZWQgdG8gaGFuZGxpbmcgdGhlIERldmljZSBJRCAoRElEKSBmaWVsZCB3aXRoaW4gdGhlIE5GQyBEaWdpdGFsIERFUCBwcm90b2NvbC4gSSdtIGZvY3VzaW5nIG9uIHRoZSBjaGFuZ2VzIG1hZGUgdG8gdGhlIGBwZmJgIHZhcmlhYmxlIGFuZCB0aGUgY29uZGl0aW9uYWwgbG9naWMgc3Vycm91bmRpbmcgdGhlIGBkZGV2LVx1MDAzZWRpZGAgY2hlY2suXG5cbkxvb2tpbmcgYXQgdGhlIG9yaWdpbmFsIGNvZGUgYW5kIHRoZSBwYXRjaCBzaWRlLWJ5LXNpZGUgcmVhbGx5IGhlbHBzLiBJbiB0aGUgb3JpZ2luYWwsIGl0IHNlZW1zIHRoZXJlJ3MgYW4gZXhwbGljaXQgY2hlY2s6IGlmIGEgRElEIGJpdCBpcyBzZXQsIGFuZCBpZiBgZGRldi1cdTAwM2VkaWRgICpleGlzdHMqIGFuZCBtYXRjaGVzIGByZXNwLVx1MDAzZWRhdGFbM11gLCB0aGVuIHRoZSBzaXplIGlzIGluY3JlbWVudGVkLiBUaGUgcGF0Y2ggc2VlbXMgdG8gYmUgdXBkYXRpbmcgaG93IHRoaXMgc2l6ZSBpbmNyZW1lbnQgYW5kIGVycm9yIGNvbmRpdGlvbiBpcyBoYW5kbGVkLlxuXG5UaGUgbmV3IGNvZGUgaGFzIHNvbWUgY29uZGl0aW9uczogXG4xLiBgcmVzcC1cdTAwM2VsZW4gXHUwMDNjIHNpemUgKyAxYDogY2hlY2tzIGlmIHRoZSByZXNwb25zZSBpcyBiaWcgZW5vdWdoXG4yLiBgIWRkZXYtXHUwMDNlZGlkYDogY2hlY2tzIGlmIHRoZXJlIGlzIG5vIGBkZGV2LVx1MDAzZWRpZGBcbjMuIGBkZGV2LVx1MDAzZWRpZCAhPSByZXNwLVx1MDAzZWRhdGFbc2l6ZV1gOiBjb21wYXJlcyBgZGRldi1cdTAwM2VkaWRgIHRvIHdoYXQncyBpbiB0aGUgcmVzcG9uc2UgZGF0YVxuXG5JJ20gc3RhcnRpbmcgdG8gZ2V0IGl0LiBUaGUgcGF0Y2ggdGlnaHRlbnMgdGhlIGVycm9yIGNvbmRpdGlvbnMgdG8gcHJldmVudCBhIHBvdGVudGlhbCBidWZmZXIgdW5kZXJmbG93IG9yIGluY29ycmVjdCBESUQgY29tcGFyaXNvbi4gVGhlIGltcG9ydGFudCBiaXQgaXMgdG8gY2hlY2sgdGhlIGByZXNwLVx1MDAzZWxlbmAgZmllbGQuIEFsc28sIHRoZSBwYXRjaCBhcHBlYXJzIHRvIHNpbXBsaWZ5IHRoZSBsb2dpYyBieSBjb21iaW5pbmcgdGhlIGV4aXN0ZW5jZSBhbmQgdGhlIGNvbXBhcmlzb24gb2YgYGRkZXYtXHUwMDNlZGlkYC5cblxuV2FpdCwgYmFjayB1cC4gSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgc3VyZSBhYm91dCB0aGF0IGluZGV4aW5nLiBMZXQncyBsb29rIHVwIGBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIHN0cnVjdHVyZSBsb29rcyBsaWtlIHRvIGtub3cgdGhlIG9mZnNldHMgYW5kIHdoZXJlIHRoZSBESUQgaXMgZXhwZWN0ZWQgdG8gcmVzaWRlIGluIHRoZSBidWZmZXIuIFRoYXQgYHNpemVgIHZhcmlhYmxlIGlzIGEgY3JpdGljYWwgcGllY2Ugb2YgdGhlIHB1enpsZSBoZXJlLCBhbmQgdGhlIGNoYW5nZXMgdG8gdGhlIG9yaWdpbmFsIGBpZmAgc3RhdGVtZW50cyBkZXBlbmRzIG9uIGl0IVxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzA3MywiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMlQxMzoyNDowMC44NTQ2MTgwMDFaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1NDc5MjgyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25mYy9kaWdpdGFsX2RlcC5jPTk0PXN0cnVjdCBkaWdpdGFsX3BzbF9yZXMge1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTk5LVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDA6c3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMge1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDEtXFx0dTggZGlyO1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTIwMD1kaWdpdGFsX3NlbmRfZGVwX2RhdGFfcHJlcChzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoyMDE6XFx0XFx0XFx0ICAgc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKmRlcF9yZXFfcmVzLFxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0yMDItXFx0XFx0XFx0ICAgc3RydWN0IGRpZ2l0YWxfZGF0YV9leGNoICpkYXRhX2V4Y2gpXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9NTI5PXN0YXRpYyBpbnQgZGlnaXRhbF9pbl9zZW5kX2FjayhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTUzMS17XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjUzMjpcXHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3JlcTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNTMzLVxcdHN0cnVjdCBza19idWZmICpza2I7XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNTM5LVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo1NDA6XFx0c2tiX3B1c2goc2tiLCBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpKTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNTQxLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo1NDI6XFx0ZGVwX3JlcSA9IChzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqKXNrYi1cXHUwMDNlZGF0YTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNTQzLVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTU2Nj1zdGF0aWMgaW50IGRpZ2l0YWxfaW5fc2VuZF9uYWNrKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNTY4LXtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NTY5OlxcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVxO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01NzAtXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01NzYtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjU3NzpcXHRza2JfcHVzaChza2IsIHNpemVvZihzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcykpO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01NzgtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjU3OTpcXHRkZXBfcmVxID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopc2tiLVxcdTAwM2VkYXRhO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01ODAtXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9NTk4PXN0YXRpYyBpbnQgZGlnaXRhbF9pbl9zZW5kX2F0bihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTYwMC17XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjYwMTpcXHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3JlcTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjAyLVxcdHN0cnVjdCBza19idWZmICpza2I7XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjA4LVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo2MDk6XFx0c2tiX3B1c2goc2tiLCBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpKTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjEwLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo2MTE6XFx0ZGVwX3JlcSA9IChzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqKXNrYi1cXHUwMDNlZGF0YTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjEyLVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTYyOT1zdGF0aWMgaW50IGRpZ2l0YWxfaW5fc2VuZF9ydG94KHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjMxLXtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NjMyOlxcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVxO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02MzMtXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02NDYtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjY0NzpcXHRza2JfcHVzaChza2IsIHNpemVvZihzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcykpO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02NDgtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjY0OTpcXHRkZXBfcmVxID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopc2tiLVxcdTAwM2VkYXRhO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02NTAtXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9Njg2PXN0YXRpYyB2b2lkIGRpZ2l0YWxfaW5fcmVjdl9kZXBfcmVzKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02ODktXFx0c3RydWN0IGRpZ2l0YWxfZGF0YV9leGNoICpkYXRhX2V4Y2ggPSBhcmc7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjY5MDpcXHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3JlcztcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjkxLVxcdHU4IHBmYjtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy03NTUtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjc1NjpcXHRzaXplID0gc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NzU3OlxcdGRlcF9yZXMgPSAoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKilyZXNwLVxcdTAwM2VkYXRhO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy03NTgtXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9OTA0PWludCBkaWdpdGFsX2luX3NlbmRfZGVwX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTkwNy17XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjkwODpcXHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3JlcTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtOTA5LVxcdHN0cnVjdCBza19idWZmICpjaGFpbmluZ19za2IsICp0bXBfc2tiO1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTkxMS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6OTEyOlxcdHNrYl9wdXNoKHNrYiwgc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKSk7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTkxMy1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6OTE0OlxcdGRlcF9yZXEgPSAoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKilza2ItXFx1MDAzZWRhdGE7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTkxNS1cXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz05Nzg9c3RhdGljIGludCBkaWdpdGFsX3RnX3NlbmRfYWNrKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtOTgwLXtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6OTgxOlxcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVzO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05ODItXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05ODgtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjk4OTpcXHRza2JfcHVzaChza2IsIHNpemVvZihzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcykpO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05OTAtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjk5MTpcXHRkZXBfcmVzID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopc2tiLVxcdTAwM2VkYXRhO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05OTItXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9MTAyND1zdGF0aWMgaW50IGRpZ2l0YWxfdGdfc2VuZF9hdG4oc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldilcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTAyNS17XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwMjY6XFx0c3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKmRlcF9yZXM7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwMjctXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDMzLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDM0OlxcdHNrYl9wdXNoKHNrYiwgc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKSk7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwMzUtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwMzY6XFx0ZGVwX3JlcyA9IChzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqKXNrYi1cXHUwMDNlZGF0YTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTAzNy1cXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz0xMDc3PXN0YXRpYyB2b2lkIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDgwLVxcdGludCByYztcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTA4MTpcXHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3JlcTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTA4Mi1cXHR1OCBwZmI7XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTEwNy1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTEwODpcXHRzaXplID0gc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTEwOTpcXHRkZXBfcmVxID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopcmVzcC1cXHUwMDNlZGF0YTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTExMC1cXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz0xMjk3PWludCBkaWdpdGFsX3RnX3NlbmRfZGVwX3JlcyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMjk4LXtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTI5OTpcXHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3JlcztcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTMwMC1cXHRzdHJ1Y3Qgc2tfYnVmZiAqY2hhaW5pbmdfc2tiLCAqdG1wX3NrYjtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzAyLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMzAzOlxcdHNrYl9wdXNoKHNrYiwgc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKSk7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEzMDQtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEzMDU6XFx0ZGVwX3JlcyA9IChzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqKXNrYi1cXHUwMDNlZGF0YTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTMwNi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTJUMTM6MjQ6MDAuOTAwMTAyOTc0WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjIwNzIyNjA2OTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKlBlZXJpbmcgaW50byB0aGUgRGVwdGhzIG9mIGBzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3Jlc2AqKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBgc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXNgLiBJdCdzIGNydWNpYWwgZm9yIG15IGN1cnJlbnQgYW5hbHlzaXMsIHNvIEkgaGF2ZSB0byBtYWtlIHN1cmUgSSBoYXZlIGEgc29saWQgdW5kZXJzdGFuZGluZyBvZiB0aGlzLiBMZXQncyBkZWx2ZSBpbnRvIGl0cyBkZWZpbml0aW9uIGFuZCBtZXRpY3Vsb3VzbHkgcGFyc2UgaXRzIGNvbXBvbmVudHMuIEZyb20gdGhlIHdheSB0aGlzIGlzIG5hbWVkLCBJIGFzc3VtZSBpdCdzIGludm9sdmVkIGluIGRpZ2l0YWwgZGVwZW5kZW5jeSByZXF1ZXN0IGFuZCByZXNwb25zZTsgSSdsbCBzZWUgaWYgdGhhdCdzIGFjY3VyYXRlIGFzIEkgcmV2aWV3IGl0LiBBbnkgaW5zaWdodCBJIGNhbiBnZXQgZnJvbSBpdHMgZGVmaW5pdGlvbiB3aWxsIGJlIGludmFsdWFibGUuIFRpbWUgdG8gbWV0aWN1bG91c2x5IGRpc3NlY3QgdGhpcyBzdHJ1Y3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2Mzg5LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTJUMTM6MjQ6MDIuOTcyMzY2NjI4WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MTU3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbmZjL2RpZ2l0YWxfZGVwLmNcIixcbiAgXCJGaXJzdExpbmVcIjogOTUsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgOTU6XFx0XFx0dTggZGlyO1xcbiAgOTY6XFx0XFx0dTggY21kO1xcbiAgOTc6XFx0XFx0dTggZGlkO1xcbiAgOTg6XFx0fSBfX3BhY2tlZDtcXG4gIDk5OlxcdFxcbiAxMDA6XFx0c3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMge1xcbiAxMDE6XFx0XFx0dTggZGlyO1xcbiAxMDI6XFx0XFx0dTggY21kO1xcbiAxMDM6XFx0XFx0dTggcGZiO1xcbiAxMDQ6XFx0fSBfX3BhY2tlZDtcXG4gMTA1OlxcdFxcbiAxMDY6XFx0c3RhdGljIHZvaWQgZGlnaXRhbF9pbl9yZWN2X2RlcF9yZXMoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxcbiAxMDc6XFx0XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBza19idWZmICpyZXNwKTtcXG4gMTA4OlxcdHN0YXRpYyB2b2lkIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcXG4gMTA5OlxcdFxcdFxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqcmVzcCk7XFxuIDExMDpcXHRcXG4gMTExOlxcdHN0YXRpYyBjb25zdCB1OCBkaWdpdGFsX3BheWxvYWRfYml0c19tYXBbNF0gPSB7XFxuIDExMjpcXHRcXHRbMF0gPSA2NCxcXG4gMTEzOlxcdFxcdFsxXSA9IDEyOCxcXG4gMTE0OlxcdFxcdFsyXSA9IDE5MixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTJUMTM6MjQ6MDIuOTcyNTIwMDg4WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjM2OTQwNDMzODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIERpZ2l0YWwgTkZDIERFUCBSZXF1ZXN0L1Jlc3BvbnNlIFZ1bG5lcmFiaWxpdHkqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBkaWdpdGFsX2RlcF9yZXFfcmVzYCBzdHJ1Y3Qg4oCTIGl0J3MganVzdCAzIGJ5dGVzOiBkaXIsIGNtZCwgYW5kIHBmYi4gVGhhdCdzIHN0cmFpZ2h0Zm9yd2FyZC4gV2hpY2ggbWVhbnMgdGhlIGluaXRpYWwgYHNpemVgIGlzIHNldCB0byAzIOKAkyBtYWtlcyBwZXJmZWN0IHNlbnNlLCB1c2luZyBgc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKWAuIE5vdywgYmVmb3JlIHRoZSBwYXRjaCB3YXMgYXBwbGllZCwgdGhpbmdzIHdlcmUgYSBiaXTigKYgc2xvcHB5LiBUaGUgY29kZSB3YXMgZG9pbmcgdGhpczogYGRkZXYtXHUwMDNlZGlkID09IHJlc3AtXHUwMDNlZGF0YVszXWAuIFRoZSBwcm9ibGVtPyBgcmVzcC1cdTAwM2VkYXRhWzNdYCBhY2Nlc3NlcyB0aGUgKmZvdXJ0aCogYnl0ZSwgdGhhdCdzIGluZGV4IDMuIEJ1dCBoZXJlJ3MgdGhlIGtpY2tlciwgdGhlIGNoZWNrIHdhczogYGlmIChyZXNwLVx1MDAzZWxlbiBcdTAwM2Mgc2l6ZSB8fCAuLi4pYCB3aGVyZSBgc2l6ZWAgd2FzIHN0aWxsIHRoYXQgaW5pdGlhbCAzLlxuXG5TbywgaWYgYHJlc3AtXHUwMDNlbGVuYCB3YXMgZXhhY3RseSAzIGFuZCB0aGUgYERJR0lUQUxfTkZDX0RFUF9ESURfQklUX1NFVChwZmIpYCBjb25kaXRpb24gd2FzIHRydWUsIHdlJ2QgaGl0IHRoYXQgT09CIHJlYWQuICBXZSdkIGJlIHJlYWRpbmcgKm9uZSogYnl0ZSBwYXN0IHRoZSBhbGxvY2F0ZWQgbWVtb3J5IGZvciBgcmVzcC1cdTAwM2VkYXRhYCDigJMgdGhhdCdzIGEgY2xhc3NpYyBidWZmZXIgb3Zlci1yZWFkIHNpdHVhdGlvbi4gTm90IGdvb2QuXG5cblRoZSBwYXRjaCBmaXhlcyB0aGlzIGJ5IG1ha2luZyB0aGUgbGVuZ3RoIGNoZWNrIG1vcmUgcm9idXN0LiBJdCdzIG5vdyBjaGVja2luZyBgaWYgKHJlc3AtXHUwMDNlbGVuIFx1MDAzYyBzaXplICsgMSB8fCAhZGRldi1cdTAwM2VkaWQgfHwgZGRldi1cdTAwM2VkaWQgIT0gcmVzcC1cdTAwM2VkYXRhW3NpemVdKWAgZmlyc3QsICp0aGVuKiBpbmNyZW1lbnRpbmcgYHNpemVgLiBUaGF0IGBzaXplICsgMWAgaXMgY3JpdGljYWwg4oCTIGl0IGVuc3VyZXMgd2UgaGF2ZSBlbm91Z2ggc3BhY2UgYmVmb3JlIHRoYXQgY29tcGFyaXNvbiB3aXRoIGByZXNwLVx1MDAzZWRhdGFbc2l6ZV1gLiBBIHNpbXBsZSBmaXgsIGJ1dCBhIG5lY2Vzc2FyeSBvbmUgdG8gcHJldmVudCB0aGUgb3V0LW9mLWJvdW5kcyByZWFkLiAgSXQncyBzaW1pbGFyIHRvIGhvdyBpdCB3YXMgZG9uZSBlYXJsaWVyIGluIGBkaWdpdGFsX2luX3JlY3ZfZGVwX3Jlc2AgYXJvdW5kIGxpbmUgNzU1IGluIHRoZSBzb3VyY2UgY29kZTsgSSBzaG91bGQgcHJvYmFibHkga2VlcCB0aGF0IGFzIGEgdGVtcGxhdGUgbmV4dCB0aW1lLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjg5MiwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2NCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEyVDEzOjI0OjA2LjY2NjU2NzQxWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMTI3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbmZjL2RpZ2l0YWxfZGVwLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNzU1LFxuICBcIkxpbmVDb3VudFwiOiAzNVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNzU1OlxcdFxcbiA3NTY6XFx0XFx0c2l6ZSA9IHNpemVvZihzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3Jlcyk7XFxuIDc1NzpcXHRcXHRkZXBfcmVzID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopcmVzcC1cXHUwMDNlZGF0YTtcXG4gNzU4OlxcdFxcbiA3NTk6XFx0XFx0aWYgKHJlc3AtXFx1MDAzZWxlbiBcXHUwMDNjIHNpemUgfHwgZGVwX3Jlcy1cXHUwMDNlZGlyICE9IERJR0lUQUxfTkZDX0RFUF9GUkFNRV9ESVJfSU4gfHxcXG4gNzYwOlxcdFxcdCAgICBkZXBfcmVzLVxcdTAwM2VjbWQgIT0gRElHSVRBTF9DTURfREVQX1JFUykge1xcbiA3NjE6XFx0XFx0XFx0cmMgPSAtRUlPO1xcbiA3NjI6XFx0XFx0XFx0Z290byBlcnJvcjtcXG4gNzYzOlxcdFxcdH1cXG4gNzY0OlxcdFxcbiA3NjU6XFx0XFx0cGZiID0gZGVwX3Jlcy1cXHUwMDNlcGZiO1xcbiA3NjY6XFx0XFxuIDc2NzpcXHRcXHRpZiAoRElHSVRBTF9ORkNfREVQX0RJRF9CSVRfU0VUKHBmYikpIHtcXG4gNzY4OlxcdFxcdFxcdFBST1RPQ09MX0VSUihcXFwiMTQuOC4yLjFcXFwiKTtcXG4gNzY5OlxcdFxcdFxcdHJjID0gLUVJTztcXG4gNzcwOlxcdFxcdFxcdGdvdG8gZXJyb3I7XFxuIDc3MTpcXHRcXHR9XFxuIDc3MjpcXHRcXG4gNzczOlxcdFxcdGlmIChESUdJVEFMX05GQ19ERVBfTkFEX0JJVF9TRVQocGZiKSkge1xcbiA3NzQ6XFx0XFx0XFx0cmMgPSAtRUlPO1xcbiA3NzU6XFx0XFx0XFx0Z290byBleGl0O1xcbiA3NzY6XFx0XFx0fVxcbiA3Nzc6XFx0XFxuIDc3ODpcXHRcXHRpZiAoc2l6ZSBcXHUwMDNlIHJlc3AtXFx1MDAzZWxlbikge1xcbiA3Nzk6XFx0XFx0XFx0cmMgPSAtRUlPO1xcbiA3ODA6XFx0XFx0XFx0Z290byBlcnJvcjtcXG4gNzgxOlxcdFxcdH1cXG4gNzgyOlxcdFxcbiA3ODM6XFx0XFx0c2tiX3B1bGwocmVzcCwgc2l6ZSk7XFxuIDc4NDpcXHRcXG4gNzg1OlxcdFxcdHN3aXRjaCAoRElHSVRBTF9ORkNfREVQX1BGQl9UWVBFKHBmYikpIHtcXG4gNzg2OlxcdFxcdGNhc2UgRElHSVRBTF9ORkNfREVQX1BGQl9JX1BEVTpcXG4gNzg3OlxcdFxcdFxcdGlmIChESUdJVEFMX05GQ19ERVBfUEZCX1BOSShwZmIpICE9IGRkZXYtXFx1MDAzZWN1cnJfbmZjX2RlcF9wbmkpIHtcXG4gNzg4OlxcdFxcdFxcdFxcdFBST1RPQ09MX0VSUihcXFwiMTQuMTIuMy4zXFxcIik7XFxuIDc4OTpcXHRcXHRcXHRcXHRyYyA9IC1FSU87XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEyVDEzOjI0OjA2LjY2NjcwMDg2WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjM1OTY4Mzk1MTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSBwcm9jZXNzLCBwcmVzZW50ZWQgYXMgYSBmaXJzdC1wZXJzb24gYWNjb3VudCBhc3N1bWluZyBleHBlcnRpc2UgaW4gdGhlIGZpZWxkOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBgbmV0L25mYy9kaWdpdGFsX2RlcC5jYCBLY29uZmlnIE9wdGlvbnMqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCBpbnRvIHRoZSBuaXR0eS1ncml0dHkuIEknbSBmb2N1c2luZyBvbiBgbmV0L25mYy9kaWdpdGFsX2RlcC5jYCBub3cgYW5kIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gd2hpY2ggS2NvbmZpZyBvcHRpb25zIGdvdmVybiBpdHMgY29tcGlsYXRpb24uIEknbSB0aGlua2luZyBJJ2xsIHN0YXJ0IGJ5IHF1aWNrbHkgc2Nhbm5pbmcgdGhlIHJlbGV2YW50IEtjb25maWcgZmlsZXMuIFByb2JhYmx5IHdpdGhpbiB0aGUgYG5ldC9uZmMvYCBkaXJlY3RvcnkgYW5kIHBvdGVudGlhbGx5IHVwc3RyZWFtIG9uZXMsIHRvIGVuc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueSBkZXBlbmRlbmNpZXMgdGhhdCBjb3VsZCBhZmZlY3QgdGhpcyBzcGVjaWZpYyBtb2R1bGUuIEl0J3MgY3J1Y2lhbCB0byBpZGVudGlmeSB0aGUgcmVsZXZhbnQgZGVwZW5kZW5jaWVzIGFzIHRoZXNlIEtjb25maWcgb3B0aW9ucyBub3Qgb25seSBjb250cm9sIGlmIHRoZSBzb3VyY2UgZmlsZSBpcyBjb21waWxlZCBpbnRvIHRoZSBrZXJuZWwgYnV0IGFsc28gd2hpY2ggc3ViLWZlYXR1cmVzIG9mIHRoZSBtb2R1bGUgYXJlIGFjdGl2ZSBvciBub3QsIG9yIGV2ZW4gaWYgaXQgZGVwZW5kcyBvbiBhIHNwZWNpZmljIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24uIEknbGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2UgZmxhZ3MgdGllZCB0byBzcGVjaWZpYyBORkMgY29udHJvbGxlcnMsIGFueSBmZWF0dXJlIHN3aXRjaGVzIHJlbGF0ZWQgdG8gZGlnaXRhbCBwcm90b2NvbCBuZWdvdGlhdGlvbiwgb3IgcGVyaGFwcyBjb25kaXRpb25hbCBjb21waWxhdGlvbiBiYXNlZCBvbiB0aGUgcHJlc2VuY2Ugb2YgY2VydGFpbiBoYXJkd2FyZSBmZWF0dXJlcy4gVW5kZXJzdGFuZGluZyB0aGUgS2NvbmZpZyBzdHJ1Y3R1cmUgaGVyZSBpcyBmdW5kYW1lbnRhbCB0byB1bmRlcnN0YW5kaW5nIHRoaXMgbW9kdWxlLiBJdCdzIGEgcXVpY2sgYnV0IGVzc2VudGlhbCBzdGVwIHRvIGVuc3VyZSB0aGlzIG1vZHVsZSB3b3JrcyBhcyBpbnRlbmRlZCwgYW5kIGNhbiBiZSBjb25maWd1cmVkIGNvcnJlY3RseSwgZ2l2ZW4gZGlmZmVyZW50IHRhcmdldCBoYXJkd2FyZSBhbmQgdXNlIGNhc2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODE0NSwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTJUMTM6MjQ6MTAuMjYzNTQyMzc4WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjQxMzI0MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkaWdpdGFsX2RlcFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmZjXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZmMvTWFrZWZpbGU9MTE9bmZjLW9ianMgOj0gY29yZS5vIG5ldGxpbmsubyBhZl9uZmMubyByYXdzb2NrLm8gbGxjcF9jb3JlLm8gbGxjcF9jb21tYW5kcy5vIFxcXFxcXG4tLVxcbm5ldC9uZmMvTWFrZWZpbGUtMTMtXFxubmV0L25mYy9NYWtlZmlsZToxNDpuZmNfZGlnaXRhbC1vYmpzIDo9IGRpZ2l0YWxfY29yZS5vIGRpZ2l0YWxfdGVjaG5vbG9neS5vIGRpZ2l0YWxfZGVwLm9cXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmM9NTg2PXN0YXRpYyBpbnQgZGlnaXRhbF9kZXZfZG93bihzdHJ1Y3QgbmZjX2RldiAqbmZjX2RldilcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtNTk0LVxcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmM6NTk1OnN0YXRpYyBpbnQgZGlnaXRhbF9kZXBfbGlua191cChzdHJ1Y3QgbmZjX2RldiAqbmZjX2RldixcXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTU5Ni1cXHRcXHRcXHQgICAgICAgc3RydWN0IG5mY190YXJnZXQgKnRhcmdldCxcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtNjA5LVxcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmM6NjEwOnN0YXRpYyBpbnQgZGlnaXRhbF9kZXBfbGlua19kb3duKHN0cnVjdCBuZmNfZGV2ICpuZmNfZGV2KVxcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtNjExLXtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmM9NzQ0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZjX29wcyBkaWdpdGFsX25mY19vcHMgPSB7XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTc0OC1cXHQuc3RvcF9wb2xsID0gZGlnaXRhbF9zdG9wX3BvbGwsXFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYzo3NDk6XFx0LmRlcF9saW5rX3VwID0gZGlnaXRhbF9kZXBfbGlua191cCxcXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jOjc1MDpcXHQuZGVwX2xpbmtfZG93biA9IGRpZ2l0YWxfZGVwX2xpbmtfZG93bixcXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTc1MS1cXHQuYWN0aXZhdGVfdGFyZ2V0ID0gZGlnaXRhbF9hY3RpdmF0ZV90YXJnZXQsXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9OTQ9c3RydWN0IGRpZ2l0YWxfcHNsX3JlcyB7XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtOTktXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwMDpzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyB7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwMS1cXHR1OCBkaXI7XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9MjAwPWRpZ2l0YWxfc2VuZF9kZXBfZGF0YV9wcmVwKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjIwMTpcXHRcXHRcXHQgICBzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3JlcV9yZXMsXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTIwMi1cXHRcXHRcXHQgICBzdHJ1Y3QgZGlnaXRhbF9kYXRhX2V4Y2ggKmRhdGFfZXhjaClcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz01Mjk9c3RhdGljIGludCBkaWdpdGFsX2luX3NlbmRfYWNrKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNTMxLXtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NTMyOlxcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVxO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01MzMtXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01MzktXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjU0MDpcXHRza2JfcHVzaChza2IsIHNpemVvZihzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcykpO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01NDEtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjU0MjpcXHRkZXBfcmVxID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopc2tiLVxcdTAwM2VkYXRhO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01NDMtXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9NTY2PXN0YXRpYyBpbnQgZGlnaXRhbF9pbl9zZW5kX25hY2soc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01Njgte1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo1Njk6XFx0c3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKmRlcF9yZXE7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTU3MC1cXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTU3Ni1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NTc3OlxcdHNrYl9wdXNoKHNrYiwgc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKSk7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTU3OC1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NTc5OlxcdGRlcF9yZXEgPSAoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKilza2ItXFx1MDAzZWRhdGE7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTU4MC1cXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz01OTg9c3RhdGljIGludCBkaWdpdGFsX2luX3NlbmRfYXRuKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjAwLXtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NjAxOlxcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVxO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02MDItXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02MDgtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjYwOTpcXHRza2JfcHVzaChza2IsIHNpemVvZihzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcykpO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02MTAtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjYxMTpcXHRkZXBfcmVxID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopc2tiLVxcdTAwM2VkYXRhO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02MTItXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9NjI5PXN0YXRpYyBpbnQgZGlnaXRhbF9pbl9zZW5kX3J0b3goc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02MzEte1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo2MzI6XFx0c3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKmRlcF9yZXE7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTYzMy1cXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTY0Ni1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NjQ3OlxcdHNrYl9wdXNoKHNrYiwgc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKSk7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTY0OC1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NjQ5OlxcdGRlcF9yZXEgPSAoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKilza2ItXFx1MDAzZWRhdGE7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTY1MC1cXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz02ODY9c3RhdGljIHZvaWQgZGlnaXRhbF9pbl9yZWN2X2RlcF9yZXMoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTY4OS1cXHRzdHJ1Y3QgZGlnaXRhbF9kYXRhX2V4Y2ggKmRhdGFfZXhjaCA9IGFyZztcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NjkwOlxcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVzO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02OTEtXFx0dTggcGZiO1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTc1NS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NzU2OlxcdHNpemUgPSBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo3NTc6XFx0ZGVwX3JlcyA9IChzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqKXJlc3AtXFx1MDAzZWRhdGE7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTc1OC1cXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz05MDQ9aW50IGRpZ2l0YWxfaW5fc2VuZF9kZXBfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtOTA3LXtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6OTA4OlxcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVxO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05MDktXFx0c3RydWN0IHNrX2J1ZmYgKmNoYWluaW5nX3NrYiwgKnRtcF9za2I7XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtOTExLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo5MTI6XFx0c2tiX3B1c2goc2tiLCBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpKTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtOTEzLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo5MTQ6XFx0ZGVwX3JlcSA9IChzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqKXNrYi1cXHUwMDNlZGF0YTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtOTE1LVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTk3OD1zdGF0aWMgaW50IGRpZ2l0YWxfdGdfc2VuZF9hY2soc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05ODAte1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo5ODE6XFx0c3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKmRlcF9yZXM7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTk4Mi1cXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTk4OC1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6OTg5OlxcdHNrYl9wdXNoKHNrYiwgc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKSk7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTk5MC1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6OTkxOlxcdGRlcF9yZXMgPSAoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKilza2ItXFx1MDAzZWRhdGE7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTk5Mi1cXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz0xMDI0PXN0YXRpYyBpbnQgZGlnaXRhbF90Z19zZW5kX2F0bihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2KVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDI1LXtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTAyNjpcXHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3JlcztcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTAyNy1cXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwMzMtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwMzQ6XFx0c2tiX3B1c2goc2tiLCBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpKTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTAzNS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTAzNjpcXHRkZXBfcmVzID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopc2tiLVxcdTAwM2VkYXRhO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDM3LVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTEwNzc9c3RhdGljIHZvaWQgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwODAtXFx0aW50IHJjO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDgxOlxcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVxO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDgyLVxcdHU4IHBmYjtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMTA3LVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMTA4OlxcdHNpemUgPSBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMTA5OlxcdGRlcF9yZXEgPSAoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKilyZXNwLVxcdTAwM2VkYXRhO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMTEwLVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTEyOTc9aW50IGRpZ2l0YWxfdGdfc2VuZF9kZXBfcmVzKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHN0cnVjdCBza19idWZmICpza2IpXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEyOTgte1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMjk5OlxcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVzO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzAwLVxcdHN0cnVjdCBza19idWZmICpjaGFpbmluZ19za2IsICp0bXBfc2tiO1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEzMDItXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEzMDM6XFx0c2tiX3B1c2goc2tiLCBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpKTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTMwNC1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTMwNTpcXHRkZXBfcmVzID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopc2tiLVxcdTAwM2VkYXRhO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzA2LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMlQxMzoyNDoxMC4zMDk5NTg2NzFaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MTg3MjQ5NzgwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgTkZDIERpZ2l0YWwgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQncyB0cmlnZ2VyaW5nIHRoZSBgbmZjX2RpZ2l0YWxgIGNvbXBvbmVudCB3aXRoaW4gdGhlIE5GQyBzeXN0ZW0uIFRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IGlzIHRoZSBgbmV0L25mYy9NYWtlZmlsZWAuIEl0J3Mgd2hlcmUgdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24gbGl2ZXMuIFRoYXQncyB3aGVyZSBJIG5lZWQgdG8gZGlnIGluIHRvIGZpbmQgdGhlIHNwZWNpZmljIGNvbmZpZyBvcHRpb25zIHRoYXQgZ292ZXJuIHRoZSBpbmNsdXNpb24gb2YgYG5mY19kaWdpdGFsYC4gSG9wZWZ1bGx5LCBpdCdzIGEgc3RyYWlnaHRmb3J3YXJkIGRlcGVuZGVuY3kgY2hhaW4uIEknbGwgcHJvYmFibHkgYmUgbG9va2luZyBmb3IgYW4gYGlmZGVmYCBvciBhIHNpbWlsYXIgY29uZGl0aW9uYWwgc3RhdGVtZW50IHRoYXQgY2hlY2tzIGZvciBzb21lIEtjb25maWcgc3ltYm9sLiBUaW1lIHRvIHNlZSB3aGF0IHRoZSBidWlsZCBwcm9jZXNzIGhhcyB0byBzYXkuIEknbSBob3BpbmcgaXQncyB3ZWxsLWRvY3VtZW50ZWQhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxNDgzLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTJUMTM6MjQ6MTIuMTgyNDU5NDI3WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwNzAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9uZmMvTWFrZWZpbGVcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIE1ha2VmaWxlIGZvciB0aGUgTGludXggTkZDIHN1YnN5c3RlbS5cXG4gICA0OlxcdCNcXG4gICA1OlxcdFxcbiAgIDY6XFx0b2JqLSQoQ09ORklHX05GQykgKz0gbmZjLm9cXG4gICA3OlxcdG9iai0kKENPTkZJR19ORkNfTkNJKSArPSBuY2kvXFxuICAgODpcXHRvYmotJChDT05GSUdfTkZDX0hDSSkgKz0gaGNpL1xcbiAgIDk6XFx0b2JqLSQoQ09ORklHX05GQ19ESUdJVEFMKSArPSBuZmNfZGlnaXRhbC5vXFxuICAxMDpcXHRcXG4gIDExOlxcdG5mYy1vYmpzIDo9IGNvcmUubyBuZXRsaW5rLm8gYWZfbmZjLm8gcmF3c29jay5vIGxsY3BfY29yZS5vIGxsY3BfY29tbWFuZHMubyBcXFxcXFxuICAxMjpcXHRcXHRcXHRsbGNwX3NvY2sub1xcbiAgMTM6XFx0XFxuICAxNDpcXHRuZmNfZGlnaXRhbC1vYmpzIDo9IGRpZ2l0YWxfY29yZS5vIGRpZ2l0YWxfdGVjaG5vbG9neS5vIGRpZ2l0YWxfZGVwLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTJUMTM6MjQ6MTIuMTgyNTIyMzY3WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjIzMjMwNDE0MTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXhhbWluaW5nIHRoZSBORkMgRGlnaXRhbCBEcml2ZXIgQnVpbGQgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgc2VlIHRoaXMgbGluZTogYG9iai0kKENPTkZJR19ORkNfRElHSVRBTCkgKz0gbmZjX2RpZ2l0YWwub2AuIE15IGJyYWluIGltbWVkaWF0ZWx5IHRyYW5zbGF0ZXMgdGhpcyB0bzogXCJUaGUgYG5mY19kaWdpdGFsLm9gIG9iamVjdCBmaWxlIHdpbGwgYmUgaW5jbHVkZWQgaW4gdGhlIGJ1aWxkLCBidXQgb25seSBpZiB0aGUgYENPTkZJR19ORkNfRElHSVRBTGAga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIGVuYWJsZWQuXCIgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBvbiBgTkZDX0RJR0lUQUxgLiBXaGVyZSBpcyB0aGF0IGRlZmluZWQ/IEl0IGlzIHByb2JhYmx5IGRlZmluZWQgaW4gYG5ldC9uZmMvS2NvbmZpZ2AuIExldCdzIGNoZWNrIHRoZXJlIHRvIHNlZSB3aGF0IGl0IGRlcGVuZHMgb24uIEknbGwgbmVlZCB0byBrbm93IHRoaXMgaW5mb3JtYXRpb24gdG8gdW5kZXJzdGFuZCBpZiBhbmQgd2hlbiB0aGUgZHJpdmVyIHdpbGwgYmUgYnVpbHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxOTIyLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMlQxMzoyNDoxNC41MDU1NjcxMTFaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4NTI1MzgxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORkNfRElHSVRBTFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmZjXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZmMvS2NvbmZpZz02PW1lbnVjb25maWcgTkZDXFxuLS1cXG5uZXQvbmZjL0tjb25maWctMTYtXFxubmV0L25mYy9LY29uZmlnOjE3OmNvbmZpZyBORkNfRElHSVRBTFxcbm5ldC9uZmMvS2NvbmZpZy0xOC1cXHRkZXBlbmRzIG9uIE5GQ1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMlQxMzoyNDoxNC41NjQwOTU0NjJaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MzQzMDYxNzk4NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgbGlrZSB5b3Vyc2VsZjpcblxuKipEaXZpbmcgaW50byB0aGUgYG5ldC9uZmMvS2NvbmZpZ2AgRmlsZSoqXG5cbkFscmlnaHQsIGxldCdzIHRha2UgYSBxdWljayBsb29rIGF0IGBuZXQvbmZjL0tjb25maWdgLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgMTcuIE15IG1lbnRhbCBtb2RlbCwgYmFzZWQgb24gcHJldmlvdXMgaW50ZXJhY3Rpb25zIHdpdGggdGhlIE5GQyBzdWJzeXN0ZW0sIGlzIHN1Z2dlc3Rpbmcgc29tZXRoaW5nIGluIHRoYXQgYXJlYS4gSXQncyBsaWtlbHkgYSBjb25maWd1cmF0aW9uIG9wdGlvbiBvciBkZXBlbmRlbmN5IGRlZmluaXRpb24sIHBlcmhhcHMgcmVsYXRlZCB0byBhIGZlYXR1cmUgZmxhZywgYSBoYXJkd2FyZSBkcml2ZXIsIG9yIGEgZ2VuZXJhbCBlbmFibGluZy9kaXNhYmxpbmcgb2YgYSBjb3JlIE5GQyBjb21wb25lbnQuIEknbSBpbW1lZGlhdGVseSBleHBlY3RpbmcgdG8gc2VlIGVpdGhlciBhIGBjb25maWdgIHN0YXRlbWVudCwgYSBgZGVwZW5kcyBvbmAgY2xhdXNlLCBvciBtYXliZSBldmVuIGFuIGBpZmAgc3RhdGVtZW50IGNvbnRyb2xsaW5nIHRoZSBpbmNsdXNpb24gb2Ygb3RoZXIgS2NvbmZpZyBmcmFnbWVudHMuIEdpdmVuIHRoZSBwb3NpdGlvbiBpbiB0aGUgZmlsZSwgaXQncyBwcm9iYWJseSBub3QgYSB0b3AtbGV2ZWwgc3ltYm9sLCBhbmQgbWlnaHQgYmUgbmVzdGVkIHVuZGVyIGFub3RoZXIgb3B0aW9uLiBJJ20gcHJlcGFyZWQgdG8gcXVpY2tseSBzY2FuIGZvciBrZXl3b3JkcyBsaWtlIFwiTkZDXCIsIFwiUE41MzJcIiwgXCJIQUxcIiwgb3IgcG90ZW50aWFsbHksIGEgbW9kdWxlIG5hbWUgSSByZWNvZ25pemUuIE15IGludGVudGlvbiBpcyB0byBpbW1lZGlhdGVseSBpZGVudGlmeSB0aGUgc2NvcGUgb2Ygd2hhdCB0aGUgS2NvbmZpZyBjb250cm9scywgaXRzIGRlcGVuZGVuY2llcywgYW5kIGFueSBpbXBsaWNhdGlvbnMgaXQgaGFzIGZvciB0aGUgYnVpbGQgY29uZmlndXJhdGlvbi4gSSdtIHRyeWluZyB0byBnZXQgYSBxdWljayBtYXAgb2Ygd2hhdCdzICp0aGVyZSogdG8gaGVscCBtZSBmb3JtdWxhdGUgbXkgbmV4dCBzdGVwIGluIHRoaXMgaW52ZXN0aWdhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjIyMTcsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMlQxMzoyNDoxNy45OTQ3MTYxNzZaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODA0NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L25mYy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDM1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIE5GQyBzdWJzeXN0ZW0gY29uZmlndXJhdGlvblxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRtZW51Y29uZmlnIE5GQ1xcbiAgIDc6XFx0XFx0ZGVwZW5kcyBvbiBSRktJTEwgfHwgIVJGS0lMTFxcbiAgIDg6XFx0XFx0dHJpc3RhdGUgXFxcIk5GQyBzdWJzeXN0ZW0gc3VwcG9ydFxcXCJcXG4gICA5OlxcdFxcdGRlZmF1bHQgblxcbiAgMTA6XFx0XFx0aGVscFxcbiAgMTE6XFx0XFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIGJ1aWxkIHN1cHBvcnQgZm9yIE5GQyAoTmVhciBmaWVsZFxcbiAgMTI6XFx0XFx0ICBjb21tdW5pY2F0aW9uKSBkZXZpY2VzLlxcbiAgMTM6XFx0XFxuICAxNDpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBzdXBwb3J0IGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlIHdpbGxcXG4gIDE1OlxcdFxcdCAgYmUgY2FsbGVkIG5mYy5cXG4gIDE2OlxcdFxcbiAgMTc6XFx0Y29uZmlnIE5GQ19ESUdJVEFMXFxuICAxODpcXHRcXHRkZXBlbmRzIG9uIE5GQ1xcbiAgMTk6XFx0XFx0c2VsZWN0IENSQ19DQ0lUVFxcbiAgMjA6XFx0XFx0c2VsZWN0IENSQ19JVFVfVFxcbiAgMjE6XFx0XFx0dHJpc3RhdGUgXFxcIk5GQyBEaWdpdGFsIFByb3RvY29sIHN0YWNrIHN1cHBvcnRcXFwiXFxuICAyMjpcXHRcXHRkZWZhdWx0IG5cXG4gIDIzOlxcdFxcdGhlbHBcXG4gIDI0OlxcdFxcdCAgU2F5IFkgaWYgeW91IHdhbnQgdG8gYnVpbGQgTkZDIGRpZ2l0YWwgcHJvdG9jb2wgc3RhY2sgc3VwcG9ydC5cXG4gIDI1OlxcdFxcdCAgVGhpcyBpcyBuZWVkZWQgYnkgTkZDIGNoaXBzZXRzIHdob3NlIGZpcm13YXJlIG9ubHkgaW1wbGVtZW50XFxuICAyNjpcXHRcXHQgIHRoZSBORkMgYW5hbG9nIGxheWVyLlxcbiAgMjc6XFx0XFxuICAyODpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBzdXBwb3J0IGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlIHdpbGxcXG4gIDI5OlxcdFxcdCAgYmUgY2FsbGVkIG5mY19kaWdpdGFsLlxcbiAgMzA6XFx0XFxuICAzMTpcXHRzb3VyY2UgXFxcIm5ldC9uZmMvbmNpL0tjb25maWdcXFwiXFxuICAzMjpcXHRzb3VyY2UgXFxcIm5ldC9uZmMvaGNpL0tjb25maWdcXFwiXFxuICAzMzpcXHRcXG4gIDM0OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZmMvS2NvbmZpZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTJUMTM6MjQ6MTcuOTk0Nzk4OTc2WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjI2ODE4OTU0MjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyBORkNfRElHSVRBTCBEcml2ZXIgRGVwZW5kZW5jaWVzKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiV2hhdCBzcGVjaWZpY2FsbHkgYXJlIHRoZXNlIGRyaXZlcnMgZG9pbmcsIGFuZCB3aGF0IG90aGVyIGNvbXBvbmVudHMgYXJlIHRoZXkgdGlnaHRseSBjb3VwbGVkIHdpdGg/XCIgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGVjb3N5c3RlbSBzdXJyb3VuZGluZyBgTkZDX0RJR0lUQUxgLiBJJ20gZ29pbmcgdG8gc3RhcnQgYnkgbG9va2luZyBmb3IgdGhlIHNlbGVjdGlvbiBhbmQgZGVwZW5kZW5jeSByZWxhdGlvbnNoaXBzIG9uIHRoaXMgY29uZmlndXJhdGlvbiBvcHRpb24uIFNwZWNpZmljYWxseSwgSSdtIHRoaW5raW5nOlxuXG4qICAgKipXaG8gaXMgY2hvb3NpbmcgYE5GQ19ESUdJVEFMYD8qKiBXaGF0IG90aGVyIGNvbmZpZ3VyYXRpb25zIG1pZ2h0IGJlIHByZXJlcXVpc2l0ZXMsIG9yIHdoYXQgZmVhdHVyZXMgYXJlIGV4cGxpY2l0bHkgcmVxdWVzdGluZyBpdD8gVGhpcyB3aWxsIGdpdmUgbWUgYSBmaXJzdCBpbmRpY2F0aW9uIG9mIHRoZSBzY29wZSBhbmQgdXNlIGNhc2UuXG4qICAgKipXaGF0IHJlbGllcyBvbiBpdD8qKiBJJ20gbG9va2luZyBmb3IgZGlyZWN0IGRlcGVuZGVuY2llcywgb2YgY291cnNlLCBidXQgYWxzbyBpbmRpcmVjdCBvbmVzLiBVbmRlcnN0YW5kaW5nIHRoZSBjYXNjYWRpbmcgZWZmZWN0cyBpcyBrZXkuIFdoYXQgbW9kdWxlcyBvciBmdW5jdGlvbmFsaXR5IGJlY29tZSBhdmFpbGFibGUgb3IgdW5hdmFpbGFibGUgYmFzZWQgb24gdGhlIHNlbGVjdGlvbiBvZiBgTkZDX0RJR0lUQUxgPyBBcmUgdGhlcmUgcGxhdGZvcm0tc3BlY2lmaWMgY29uc2lkZXJhdGlvbnMgSSBuZWVkIHRvIGtlZXAgaW4gbWluZD8gQXJlIHRoZXJlIGFueSBwb3RlbnRpYWwgY29uZmxpY3RzIEkgbmVlZCB0byBjb25zaWRlcj9cbiogICAqKlRoZSBkcml2ZXJzIGFuZCB0aGVpciByb2xlOioqIEkgd2lsbCBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBwdXJwb3NlIGFuZCBmdW5jdGlvbmFsaXR5IG9mIHRoZSBkcml2ZXJzIGludm9sdmVkLiBBcmUgdGhleSBpbXBsZW1lbnRpbmcgTkZDIHByb3RvY29sIHN0YWNrcz8gQ29udHJvbGxpbmcgaGFyZHdhcmUgaW50ZXJmYWNlcz8gTWFuYWdpbmcgc2VjdXJpdHkgYXNwZWN0cz8gSG93IGRvIHRoZXkgaW50ZXJhY3Qgd2l0aCBvdGhlciBwYXJ0cyBvZiB0aGUgc3lzdGVtLCBsaWtlIHRoZSBrZXJuZWwncyBORkMgZnJhbWV3b3JrIG9yIHVzZXItc3BhY2UgYXBwbGljYXRpb25zP1xuXG5NeSBnb2FsIGlzIHRvIGRldmVsb3AgYSBjbGVhciBtZW50YWwgbWFwIG9mIGBORkNfRElHSVRBTGAncyBwb3NpdGlvbiBpbiB0aGUgb3ZlcmFsbCBzeXN0ZW0gYXJjaGl0ZWN0dXJlLiBUaGlzIGNvbnRleHR1YWwgdW5kZXJzdGFuZGluZyBpcyBlc3NlbnRpYWwgYmVmb3JlIEkgY2FuIGJlZ2luIHRvIGFzc2VzcyBhbnkgcG90ZW50aWFsIHJpc2tzLCBvcHRpbWl6YXRpb25zLCBvciBhcmVhcyBmb3IgaW1wcm92ZW1lbnQuIFRpbWUgdG8gc3RhcnQgZGlnZ2luZyFcblxuXG4iLCJJbnB1dFRva2VucyI6MjI5NTMsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEyVDEzOjI0OjIwLjY3NjY5NzY4MloiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDcwNTM4NDMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTkZDX0RJR0lUQUxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZmMvS2NvbmZpZz05PWNvbmZpZyBORkNfVFJGNzk3MEFcXG5kcml2ZXJzL25mYy9LY29uZmlnLTEwLVxcdHRyaXN0YXRlIFxcXCJUZXhhcyBJbnN0cnVtZW50cyBUUkY3OTcwYSBORkMgZHJpdmVyXFxcIlxcbmRyaXZlcnMvbmZjL0tjb25maWc6MTE6XFx0ZGVwZW5kcyBvbiBTUEkgXFx1MDAyNlxcdTAwMjYgTkZDX0RJR0lUQUwgXFx1MDAyNlxcdTAwMjYgR1BJT0xJQlxcbmRyaXZlcnMvbmZjL0tjb25maWctMTItXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZmMvS2NvbmZpZz0zMT1jb25maWcgTkZDX1NJTVxcbmRyaXZlcnMvbmZjL0tjb25maWctMzItXFx0dHJpc3RhdGUgXFxcIk5GQyBoYXJkd2FyZSBzaW11bGF0b3IgZHJpdmVyXFxcIlxcbmRyaXZlcnMvbmZjL0tjb25maWc6MzM6XFx0ZGVwZW5kcyBvbiBORkNfRElHSVRBTFxcbmRyaXZlcnMvbmZjL0tjb25maWctMzQtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZmMvS2NvbmZpZz00Mj1jb25maWcgTkZDX1BPUlQxMDBcXG4tLVxcbmRyaXZlcnMvbmZjL0tjb25maWctNDQtXFx0ZGVwZW5kcyBvbiBVU0JcXG5kcml2ZXJzL25mYy9LY29uZmlnOjQ1OlxcdGRlcGVuZHMgb24gTkZDX0RJR0lUQUxcXG5kcml2ZXJzL25mYy9LY29uZmlnLTQ2LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTI3LVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjI4OiNkZWZpbmUgTkZDU0lNX0NBUEFCSUxJVElFUyAoTkZDX0RJR0lUQUxfRFJWX0NBUFNfSU5fQ1JDICAgfCBcXFxcXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6Mjk6XFx0XFx0XFx0ICAgICBORkNfRElHSVRBTF9EUlZfQ0FQU19UR19DUkMpXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzAtXFxuLS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYz0yNTY9c3RhdGljIGludCBuZmNzaW1faW5fY29uZmlndXJlX2h3KHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXFxuLS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yNjEtXFx0c3dpdGNoICh0eXBlKSB7XFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MjYyOlxcdGNhc2UgTkZDX0RJR0lUQUxfQ09ORklHX1JGX1RFQ0g6XFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjYzLVxcdFxcdGRldi1cXHUwMDNldXAgPSB0cnVlO1xcbi0tXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjY3LVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjI2ODpcXHRjYXNlIE5GQ19ESUdJVEFMX0NPTkZJR19GUkFNSU5HOlxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTI2OS1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jPTI4Nj1zdGF0aWMgaW50IG5mY3NpbV90Z19jb25maWd1cmVfaHcoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcXG4tLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTI5MS1cXHRzd2l0Y2ggKHR5cGUpIHtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYzoyOTI6XFx0Y2FzZSBORkNfRElHSVRBTF9DT05GSUdfUkZfVEVDSDpcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yOTMtXFx0XFx0ZGV2LVxcdTAwM2V1cCA9IHRydWU7XFxuLS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yOTctXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6Mjk4OlxcdGNhc2UgTkZDX0RJR0lUQUxfQ09ORklHX0ZSQU1JTkc6XFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjk5LVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTI1LVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyNjojZGVmaW5lIFBPUlQxMDBfQ0FQQUJJTElUSUVTIChORkNfRElHSVRBTF9EUlZfQ0FQU19JTl9DUkMgfCBcXFxcXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI3OlxcdFxcdFxcdCAgICAgIE5GQ19ESUdJVEFMX0RSVl9DQVBTX1RHX0NSQylcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMjgtXFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM9MTE4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcG9ydDEwMF9pbl9yZl9zZXR0aW5nIGluX3JmX3NldHRpbmdzW10gPSB7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjExOTpcXHRbTkZDX0RJR0lUQUxfUkZfVEVDSF8yMTJGXSA9IHtcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTIwLVxcdFxcdC5pbl9zZW5kX3NldF9udW1iZXIgPSAxLFxcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEyNC1cXHR9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxMjU6XFx0W05GQ19ESUdJVEFMX1JGX1RFQ0hfNDI0Rl0gPSB7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEyNi1cXHRcXHQuaW5fc2VuZF9zZXRfbnVtYmVyID0gMSxcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMzAtXFx0fSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTMxOlxcdFtORkNfRElHSVRBTF9SRl9URUNIXzEwNkFdID0ge1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMzItXFx0XFx0LmluX3NlbmRfc2V0X251bWJlciA9IDIsXFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTM2LVxcdH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjEzNzpcXHRbTkZDX0RJR0lUQUxfUkZfVEVDSF8xMDZCXSA9IHtcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTM4LVxcdFxcdC5pbl9zZW5kX3NldF9udW1iZXIgPSAzLFxcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE0Mi1cXHR9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxNDM6XFx0LyogRW5zdXJlcyB0aGUgYXJyYXkgaGFzIE5GQ19ESUdJVEFMX1JGX1RFQ0hfTEFTVCBlbGVtZW50cyAqL1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxNDQ6XFx0W05GQ19ESUdJVEFMX1JGX1RFQ0hfTEFTVF0gPSB7IDAgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTQ1LX07XFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM9MTY3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcG9ydDEwMF90Z19yZl9zZXR0aW5nIHRnX3JmX3NldHRpbmdzW10gPSB7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjE2ODpcXHRbTkZDX0RJR0lUQUxfUkZfVEVDSF8xMDZBXSA9IHtcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTY5LVxcdFxcdC50Z19zZXRfbnVtYmVyID0gOCxcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xNzEtXFx0fSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTcyOlxcdFtORkNfRElHSVRBTF9SRl9URUNIXzIxMkZdID0ge1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xNzMtXFx0XFx0LnRnX3NldF9udW1iZXIgPSA4LFxcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE3NS1cXHR9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxNzY6XFx0W05GQ19ESUdJVEFMX1JGX1RFQ0hfNDI0Rl0gPSB7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE3Ny1cXHRcXHQudGdfc2V0X251bWJlciA9IDgsXFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTc5LVxcdH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjE4MDpcXHQvKiBFbnN1cmVzIHRoZSBhcnJheSBoYXMgTkZDX0RJR0lUQUxfUkZfVEVDSF9MQVNUIGVsZW1lbnRzICovXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjE4MTpcXHRbTkZDX0RJR0lUQUxfUkZfVEVDSF9MQVNUXSA9IHsgMCB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xODItXFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM9MjIxPWluX3Byb3RvY29sc1tdW1BPUlQxMDBfSU5fTUFYX05VTV9QUk9UT0NPTFMgKyAxXSA9IHtcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjIyOlxcdFtORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfU0hPUlRdID0ge1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0yMjMtXFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfSU5JVElBTF9HVUFSRF9USU1FLCAgICAgIDYgfSxcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0yNDMtXFx0fSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjQ0OlxcdFtORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfU1RBTkRBUkRdID0ge1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0yNDUtXFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfSU5JVElBTF9HVUFSRF9USU1FLCAgICAgIDYgfSxcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0yNjUtXFx0fSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjY2OlxcdFtORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfU1RBTkRBUkRfV0lUSF9DUkNfQV0gPSB7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTI2Ny1cXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9JTklUSUFMX0dVQVJEX1RJTUUsICAgICAgNiB9LFxcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTI4Ny1cXHR9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyODg6XFx0W05GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQV9UMVRdID0ge1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0yODktXFx0XFx0LyogbmZjX2RpZ2l0YWxfZnJhbWluZ19uZmNhX3Nob3J0ICovXFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMjk1LVxcdH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI5NjpcXHRbTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX1QyVF0gPSB7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTI5Ny1cXHRcXHQvKiBuZmNfZGlnaXRhbF9mcmFtaW5nX25mY2Ffc3RhbmRhcmQgKi9cXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0zMDEtXFx0fSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzAyOlxcdFtORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfVDRUXSA9IHtcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzAzLVxcdFxcdC8qIG5mY19kaWdpdGFsX2ZyYW1pbmdfbmZjYV9zdGFuZGFyZF93aXRoX2NyY19hICovXFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzA1LVxcdH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjMwNjpcXHRbTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX05GQ19ERVBdID0ge1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0zMDctXFx0XFx0LyogbmZjX2RpZ2l0YWxfZnJhbWluZ19uZmNhX3N0YW5kYXJkICovXFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzA5LVxcdH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjMxMDpcXHRbTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNGXSA9IHtcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzExLVxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX0lOSVRJQUxfR1VBUkRfVElNRSwgICAgIDE4IH0sXFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzMxLVxcdH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjMzMjpcXHRbTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNGX1QzVF0gPSB7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTMzMy1cXHRcXHQvKiBuZmNfZGlnaXRhbF9mcmFtaW5nX25mY2YgKi9cXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0zMzUtXFx0fSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzM2OlxcdFtORkNfRElHSVRBTF9GUkFNSU5HX05GQ0ZfTkZDX0RFUF0gPSB7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTMzNy1cXHRcXHQvKiBuZmNfZGlnaXRhbF9mcmFtaW5nX25mY2YgKi9cXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0zNTgtXFx0fSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzU5OlxcdFtORkNfRElHSVRBTF9GUkFNSU5HX05GQ19ERVBfQUNUSVZBVEVEXSA9IHtcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzYwLVxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX0VORCwgMCB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0zNjEtXFx0fSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzYyOlxcdFtORkNfRElHSVRBTF9GUkFNSU5HX05GQ0JdID0ge1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0zNjMtXFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfSU5JVElBTF9HVUFSRF9USU1FLCAgICAgMjAgfSxcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0zODMtXFx0fSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6Mzg0OlxcdFtORkNfRElHSVRBTF9GUkFNSU5HX05GQ0JfVDRUXSA9IHtcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzg1LVxcdFxcdC8qIG5mY19kaWdpdGFsX2ZyYW1pbmdfbmZjYiAqL1xcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTM4Ny1cXHR9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozODg6XFx0LyogRW5zdXJlcyB0aGUgYXJyYXkgaGFzIE5GQ19ESUdJVEFMX0ZSQU1JTkdfTEFTVCBlbGVtZW50cyAqL1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozODk6XFx0W05GQ19ESUdJVEFMX0ZSQU1JTkdfTEFTVF0gPSB7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTM5MC1cXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9FTkQsIDAgfSxcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYz0zOTU9dGdfcHJvdG9jb2xzW11bUE9SVDEwMF9UR19NQVhfTlVNX1BST1RPQ09MUyArIDFdID0ge1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozOTY6XFx0W05GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQV9TSE9SVF0gPSB7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTM5Ny1cXHRcXHR7IFBPUlQxMDBfVEdfUFJPVF9FTkQsIDAgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzk4LVxcdH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjM5OTpcXHRbTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX1NUQU5EQVJEXSA9IHtcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtNDAwLVxcdFxcdHsgUE9SVDEwMF9UR19QUk9UX0VORCwgMCB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy00MDEtXFx0fSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6NDAyOlxcdFtORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfU1RBTkRBUkRfV0lUSF9DUkNfQV0gPSB7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTQwMy1cXHRcXHR7IFBPUlQxMDBfVEdfUFJPVF9FTkQsIDAgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtNDA0LVxcdH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjQwNTpcXHRbTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX1QxVF0gPSB7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTQwNi1cXHRcXHR7IFBPUlQxMDBfVEdfUFJPVF9FTkQsIDAgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtNDA3LVxcdH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjQwODpcXHRbTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX1QyVF0gPSB7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTQwOS1cXHRcXHR7IFBPUlQxMDBfVEdfUFJPVF9FTkQsIDAgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtNDEwLVxcdH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjQxMTpcXHRbTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX05GQ19ERVBdID0ge1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy00MTItXFx0XFx0eyBQT1JUMTAwX1RHX1BST1RfVFUsICAgICAxIH0sXFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtNDE2LVxcdH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjQxNzpcXHRbTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNGXSA9IHtcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtNDE4LVxcdFxcdHsgUE9SVDEwMF9UR19QUk9UX0VORCwgMCB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy00MTktXFx0fSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6NDIwOlxcdFtORkNfRElHSVRBTF9GUkFNSU5HX05GQ0ZfVDNUXSA9IHtcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtNDIxLVxcdFxcdHsgUE9SVDEwMF9UR19QUk9UX0VORCwgMCB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy00MjItXFx0fSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6NDIzOlxcdFtORkNfRElHSVRBTF9GUkFNSU5HX05GQ0ZfTkZDX0RFUF0gPSB7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTQyNC1cXHRcXHR7IFBPUlQxMDBfVEdfUFJPVF9UVSwgICAgIDEgfSxcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy00MjgtXFx0fSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6NDI5OlxcdFtORkNfRElHSVRBTF9GUkFNSU5HX05GQ19ERVBfQUNUSVZBVEVEXSA9IHtcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtNDMwLVxcdFxcdHsgUE9SVDEwMF9UR19QUk9UX1JGX09GRiwgMSB9LFxcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTQzMi1cXHR9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo0MzM6XFx0LyogRW5zdXJlcyB0aGUgYXJyYXkgaGFzIE5GQ19ESUdJVEFMX0ZSQU1JTkdfTEFTVCBlbGVtZW50cyAqL1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo0MzQ6XFx0W05GQ19ESUdJVEFMX0ZSQU1JTkdfTEFTVF0gPSB7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTQzNS1cXHRcXHR7IFBPUlQxMDBfVEdfUFJPVF9FTkQsICAgIDAgfSxcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYz0xMDcyPXN0YXRpYyBpbnQgcG9ydDEwMF9pbl9zZXRfcmYoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdTggcmYpXFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTA3OC1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTA3OTpcXHRpZiAocmYgXFx1MDAzZT0gTkZDX0RJR0lUQUxfUkZfVEVDSF9MQVNUKVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMDgwLVxcdFxcdHJldHVybiAtRUlOVkFMO1xcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jPTExMDE9c3RhdGljIGludCBwb3J0MTAwX2luX3NldF9mcmFtaW5nKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIGludCBwYXJhbSlcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMTEwLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxMTExOlxcdGlmIChwYXJhbSBcXHUwMDNlPSBORkNfRElHSVRBTF9GUkFNSU5HX0xBU1QpXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTExMTItXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM9MTE0Mz1zdGF0aWMgaW50IHBvcnQxMDBfaW5fY29uZmlndXJlX2h3KHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIGludCB0eXBlLFxcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTExNDUte1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxMTQ2OlxcdGlmICh0eXBlID09IE5GQ19ESUdJVEFMX0NPTkZJR19SRl9URUNIKVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMTQ3LVxcdFxcdHJldHVybiBwb3J0MTAwX2luX3NldF9yZihkZGV2LCBwYXJhbSk7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTExNDgtXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjExNDk6XFx0aWYgKHR5cGUgPT0gTkZDX0RJR0lUQUxfQ09ORklHX0ZSQU1JTkcpXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTExNTAtXFx0XFx0cmV0dXJuIHBvcnQxMDBfaW5fc2V0X2ZyYW1pbmcoZGRldiwgcGFyYW0pO1xcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jPTEyMjk9c3RhdGljIGludCBwb3J0MTAwX3RnX3NldF9yZihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB1OCByZilcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMjM1LVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxMjM2OlxcdGlmIChyZiBcXHUwMDNlPSBORkNfRElHSVRBTF9SRl9URUNIX0xBU1QpXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEyMzctXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM9MTI1OD1zdGF0aWMgaW50IHBvcnQxMDBfdGdfc2V0X2ZyYW1pbmcoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgaW50IHBhcmFtKVxcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEyNjctXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjEyNjg6XFx0aWYgKHBhcmFtIFxcdTAwM2U9IE5GQ19ESUdJVEFMX0ZSQU1JTkdfTEFTVClcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTI2OS1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYz0xMzAwPXN0YXRpYyBpbnQgcG9ydDEwMF90Z19jb25maWd1cmVfaHcoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgaW50IHR5cGUsXFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTMwMi17XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjEzMDM6XFx0aWYgKHR5cGUgPT0gTkZDX0RJR0lUQUxfQ09ORklHX1JGX1RFQ0gpXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEzMDQtXFx0XFx0cmV0dXJuIHBvcnQxMDBfdGdfc2V0X3JmKGRkZXYsIHBhcmFtKTtcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTMwNS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTMwNjpcXHRpZiAodHlwZSA9PSBORkNfRElHSVRBTF9DT05GSUdfRlJBTUlORylcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTMwNy1cXHRcXHRyZXR1cm4gcG9ydDEwMF90Z19zZXRfZnJhbWluZyhkZGV2LCBwYXJhbSk7XFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM9MTQwMD1zdGF0aWMgaW50IHBvcnQxMDBfbGlzdGVuX21kYWEoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xNDEwLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxNDExOlxcdHJjID0gcG9ydDEwMF90Z19jb25maWd1cmVfaHcoZGRldiwgTkZDX0RJR0lUQUxfQ09ORklHX1JGX1RFQ0gsXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjE0MTI6XFx0XFx0XFx0XFx0ICAgICBORkNfRElHSVRBTF9SRl9URUNIXzEwNkEpO1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xNDEzLVxcdGlmIChyYylcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xNDE1LVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxNDE2OlxcdHJjID0gcG9ydDEwMF90Z19jb25maWd1cmVfaHcoZGRldiwgTkZDX0RJR0lUQUxfQ09ORklHX0ZSQU1JTkcsXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjE0MTc6XFx0XFx0XFx0XFx0ICAgICBORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfTkZDX0RFUCk7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE0MTgtXFx0aWYgKHJjKVxcbi0tXFxuZHJpdmVycy9uZmMvc3Q5NWhmL0tjb25maWc9Mj1jb25maWcgTkZDX1NUOTVIRlxcbmRyaXZlcnMvbmZjL3N0OTVoZi9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIlNUOTVIRiBORkMgVHJhbnNjZWl2ZXIgZHJpdmVyXFxcIlxcbmRyaXZlcnMvbmZjL3N0OTVoZi9LY29uZmlnOjQ6XFx0ZGVwZW5kcyBvbiBTUEkgXFx1MDAyNlxcdTAwMjYgTkZDX0RJR0lUQUxcXG5kcml2ZXJzL25mYy9zdDk1aGYvS2NvbmZpZy01LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtMzAtLyogZHJpdmVyIGNhcGFiaWxpdGllcyAqL1xcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6MzE6I2RlZmluZSBTVDk1SEZfQ0FQQUJJTElUSUVTXFx0XFx0TkZDX0RJR0lUQUxfRFJWX0NBUFNfSU5fQ1JDXFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy0zMi1cXG4tLVxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM9Mzc0PXN0YXRpYyBpbnQgc3Q5NWhmX3NlbGVjdF9wcm90b2NvbChzdHJ1Y3Qgc3Q5NWhmX2NvbnRleHQgKnN0Y29udGV4dCwgaW50IHR5cGUpXFxuLS1cXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTM4MS1cXHRzd2l0Y2ggKHR5cGUpIHtcXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jOjM4MjpcXHRjYXNlIE5GQ19ESUdJVEFMX1JGX1RFQ0hfMTA2QTpcXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jOjM4MzpcXHRcXHRzdGNvbnRleHQtXFx1MDAzZWN1cnJlbnRfcmZfdGVjaCA9IE5GQ19ESUdJVEFMX1JGX1RFQ0hfMTA2QTtcXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTM4NC1cXHRcXHRyZXN1bHQgPSBzdDk1aGZfc2VuZF9yZWN2X2NtZChzdGNvbnRleHQsXFxuLS1cXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTQwMi1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jOjQwMzpcXHRjYXNlIE5GQ19ESUdJVEFMX1JGX1RFQ0hfMTA2QjpcXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jOjQwNDpcXHRcXHRzdGNvbnRleHQtXFx1MDAzZWN1cnJlbnRfcmZfdGVjaCA9IE5GQ19ESUdJVEFMX1JGX1RFQ0hfMTA2QjtcXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTQwNS1cXHRcXHRyZXN1bHQgPSBzdDk1aGZfc2VuZF9yZWN2X2NtZChzdGNvbnRleHQsXFxuLS1cXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTQyOS1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jOjQzMDpcXHRjYXNlIE5GQ19ESUdJVEFMX1JGX1RFQ0hfSVNPMTU2OTM6XFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzo0MzE6XFx0XFx0c3Rjb250ZXh0LVxcdTAwM2VjdXJyZW50X3JmX3RlY2ggPSBORkNfRElHSVRBTF9SRl9URUNIX0lTTzE1NjkzO1xcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtNDMyLVxcdFxcdHJlc3VsdCA9IHN0OTVoZl9zZW5kX3JlY3ZfY21kKHN0Y29udGV4dCxcXG4tLVxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM9NjQ4PXN0YXRpYyBpbnQgc3Q5NWhmX2Vycm9yX2hhbmRsaW5nKHN0cnVjdCBzdDk1aGZfY29udGV4dCAqc3Rjb250ZXh0LFxcbi0tXFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy02NjYtXFx0c3dpdGNoIChzdGNvbnRleHQtXFx1MDAzZWN1cnJlbnRfcmZfdGVjaCkge1xcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6NjY3OlxcdGNhc2UgTkZDX0RJR0lUQUxfUkZfVEVDSF8xMDZBOlxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtNjY4LVxcdFxcdGlmIChzdGNvbnRleHQtXFx1MDAzZXNlbmRyY3ZfdHJmbGFnID09IFRSRkxBR19ORkNBX1NURF9GUkFNRV9DUkMpIHtcXG4tLVxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtNjc3LVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6Njc4OlxcdGNhc2UgTkZDX0RJR0lUQUxfUkZfVEVDSF8xMDZCOlxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6Njc5OlxcdGNhc2UgTkZDX0RJR0lUQUxfUkZfVEVDSF9JU08xNTY5MzpcXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTY4MC1cXHRcXHRlcnJvcl9ieXRlID0gc2tiX3Jlc3AtXFx1MDAzZWRhdGFbcmVzX2xlbiAtIDFdO1xcbi0tXFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYz02OTM9c3RhdGljIGludCBzdDk1aGZfcmVzcG9uc2VfaGFuZGxlcihzdHJ1Y3Qgc3Q5NWhmX2NvbnRleHQgKnN0Y29udGV4dCxcXG4tLVxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtNzM2LVxcdHN3aXRjaCAoc3Rjb250ZXh0LVxcdTAwM2VjdXJyZW50X3JmX3RlY2gpIHtcXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jOjczNzpcXHRjYXNlIE5GQ19ESUdJVEFMX1JGX1RFQ0hfMTA2QTpcXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTczOC1cXHRcXHRpZiAoc3Rjb250ZXh0LVxcdTAwM2VzZW5kcmN2X3RyZmxhZyA9PSBUUkZMQUdfTkZDQV9TVERfRlJBTUVfQ1JDKVxcbi0tXFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy03NDItXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzo3NDM6XFx0Y2FzZSBORkNfRElHSVRBTF9SRl9URUNIXzEwNkI6XFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzo3NDQ6XFx0Y2FzZSBORkNfRElHSVRBTF9SRl9URUNIX0lTTzE1NjkzOlxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtNzQ1LVxcdFxcdHNrYl90cmltKHNrYl9yZXNwLCAoc2tiX2xlbiAtIDMpKTtcXG4tLVxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM9ODY5PXN0YXRpYyBpbnQgc3Q5NWhmX2luX2NvbmZpZ3VyZV9odyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxcbi0tXFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy04NzQtXFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzo4NzU6XFx0aWYgKHR5cGUgPT0gTkZDX0RJR0lUQUxfQ09ORklHX1JGX1RFQ0gpXFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy04NzYtXFx0XFx0cmV0dXJuIHN0OTVoZl9zZWxlY3RfcHJvdG9jb2woc3Rjb250ZXh0LCBwYXJhbSk7XFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy04NzctXFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzo4Nzg6XFx0aWYgKHR5cGUgPT0gTkZDX0RJR0lUQUxfQ09ORklHX0ZSQU1JTkcpIHtcXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTg3OS1cXHRcXHRzd2l0Y2ggKHBhcmFtKSB7XFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzo4ODA6XFx0XFx0Y2FzZSBORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfU0hPUlQ6XFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy04ODEtXFx0XFx0XFx0c3Rjb250ZXh0LVxcdTAwM2VzZW5kcmN2X3RyZmxhZyA9IFRSRkxBR19ORkNBX1NIT1JUX0ZSQU1FO1xcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtODgyLVxcdFxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6ODgzOlxcdFxcdGNhc2UgTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX1NUQU5EQVJEOlxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtODg0LVxcdFxcdFxcdHN0Y29udGV4dC1cXHUwMDNlc2VuZHJjdl90cmZsYWcgPSBUUkZMQUdfTkZDQV9TVERfRlJBTUU7XFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy04ODUtXFx0XFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzo4ODY6XFx0XFx0Y2FzZSBORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfVDRUOlxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6ODg3OlxcdFxcdGNhc2UgTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX05GQ19ERVA6XFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzo4ODg6XFx0XFx0Y2FzZSBORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfU1RBTkRBUkRfV0lUSF9DUkNfQTpcXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTg4OS1cXHRcXHRcXHRzdGNvbnRleHQtXFx1MDAzZXNlbmRyY3ZfdHJmbGFnID0gVFJGTEFHX05GQ0FfU1REX0ZSQU1FX0NSQztcXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTg5MC1cXHRcXHRcXHRicmVhaztcXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jOjg5MTpcXHRcXHRjYXNlIE5GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQjpcXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jOjg5MjpcXHRcXHRjYXNlIE5GQ19ESUdJVEFMX0ZSQU1JTkdfSVNPMTU2OTNfSU5WRU5UT1JZOlxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6ODkzOlxcdFxcdGNhc2UgTkZDX0RJR0lUQUxfRlJBTUlOR19JU08xNTY5M19UNVQ6XFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy04OTQtXFx0XFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jPTkxNT1zdGF0aWMgaW50IHN0OTVoZl9pbl9zZW5kX2NtZChzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxcbi0tXFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy05MzAtXFx0c3dpdGNoIChzdGNvbnRleHQtXFx1MDAzZWN1cnJlbnRfcmZfdGVjaCkge1xcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6OTMxOlxcdGNhc2UgTkZDX0RJR0lUQUxfUkZfVEVDSF8xMDZBOlxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtOTMyLVxcdFxcdGxlbl9kYXRhX3RvX3RhZyA9IHNrYi1cXHUwMDNlbGVuICsgMTtcXG4tLVxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtOTM0LVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6OTM1OlxcdGNhc2UgTkZDX0RJR0lUQUxfUkZfVEVDSF8xMDZCOlxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6OTM2OlxcdGNhc2UgTkZDX0RJR0lUQUxfUkZfVEVDSF9JU08xNTY5MzpcXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTkzNy1cXHRcXHRsZW5fZGF0YV90b190YWcgPSBza2ItXFx1MDAzZWxlbjtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTMtICogbWVzc2VzIHVwIHRoZSBkYXRhIHJldHVybmVkIHNvIGl0IGlzIG9ubHkgZW5hYmxlZCB3aGVuIHRoZSBmcmFtaW5nIGlzXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5NDogKiAnTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX1QyVCcgYW5kIHRoZSBjb21tYW5kIGlzIG5vdCBhIHJlYWQgY29tbWFuZC5cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk1LSAqIFVuZm9ydHVuYXRlbHksIHRoYXQgbWVhbnMgdGhhdCB0aGUgZHJpdmVyIGhhcyB0byBwZWVrIGludG8gdHggZnJhbWVzXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5NjogKiB3aGVuIHRoZSBmcmFtaW5nIGlzICdORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfVDJUJy4gIFRoaXMgaXMgZG9uZSBieVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTctICogdGhlIHRyZjc5NzBhX3Blcl9jbWRfY29uZmlnKCkgcm91dGluZS5cXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM9NjE3PXN0YXRpYyBpbnQgdHJmNzk3MGFfbW9kZV9kZXRlY3Qoc3RydWN0IHRyZjc5NzBhICp0cmYsIHU4ICpyZl90ZWNoKVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02MjctXFx0Y2FzZSBUUkY3OTA3MEFfTkZDX1RBUkdFVF9QUk9UT0NPTF8xMDZBOlxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NjI4OlxcdFxcdHRlY2ggPSBORkNfRElHSVRBTF9SRl9URUNIXzEwNkE7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02MjktXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02MzAtXFx0Y2FzZSBUUkY3OTA3MEFfTkZDX1RBUkdFVF9QUk9UT0NPTF8xMDZCOlxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NjMxOlxcdFxcdHRlY2ggPSBORkNfRElHSVRBTF9SRl9URUNIXzEwNkI7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02MzItXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02MzMtXFx0Y2FzZSBUUkY3OTA3MEFfTkZDX1RBUkdFVF9QUk9UT0NPTF8yMTJGOlxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NjM0OlxcdFxcdHRlY2ggPSBORkNfRElHSVRBTF9SRl9URUNIXzIxMkY7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02MzUtXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02MzYtXFx0Y2FzZSBUUkY3OTA3MEFfTkZDX1RBUkdFVF9QUk9UT0NPTF80MjRGOlxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NjM3OlxcdFxcdHRlY2ggPSBORkNfRElHSVRBTF9SRl9URUNIXzQyNEY7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy02MzgtXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jPTc4Mz1zdGF0aWMgdm9pZCB0cmY3OTcwYV9kcmFpbl9maWZvKHN0cnVjdCB0cmY3OTcwYSAqdHJmLCB1OCBzdGF0dXMpXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTgyOC1cXHQvKiBJZiByZWNlaXZlZCBUeXBlIDIgQUNLL05BQ0ssIHNoaWZ0IHJpZ2h0IDQgYml0cyBhbmQgcGFzcyB1cCAqL1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6ODI5OlxcdGlmICgodHJmLVxcdTAwM2VmcmFtaW5nID09IE5GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQV9UMlQpIFxcdTAwMjZcXHUwMDI2IChza2ItXFx1MDAzZWxlbiA9PSAxKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtODMwLVxcdCAgICAodHJmLVxcdTAwM2VzcGVjaWFsX2Zjbl9yZWcxID09IFRSRjc5NzBBX1NQRUNJQUxfRkNOX1JFRzFfNF9CSVRfUlgpKSB7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jPTg2NT1zdGF0aWMgaXJxcmV0dXJuX3QgdHJmNzk3MGFfaXJxKGludCBpcnEsIHZvaWQgKmRldl9pZClcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTUxLVxcdFxcdFxcdHN3aXRjaCAodHJmLVxcdTAwM2VmcmFtaW5nKSB7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5NTI6XFx0XFx0XFx0Y2FzZSBORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfU1RBTkRBUkQ6XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05NTMtXFx0XFx0XFx0XFx0dHJmLVxcdTAwM2V0eF9jbWQgPSBUUkY3OTcwQV9DTURfVFJBTlNNSVRfTk9fQ1JDO1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05NTYtXFx0XFx0XFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo5NTc6XFx0XFx0XFx0Y2FzZSBORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfU1RBTkRBUkRfV0lUSF9DUkNfQTpcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTk1OC1cXHRcXHRcXHRcXHR0cmYtXFx1MDAzZXR4X2NtZCA9IFRSRjc5NzBBX0NNRF9UUkFOU01JVDtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtOTYxLVxcdFxcdFxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6OTYyOlxcdFxcdFxcdGNhc2UgTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX0FOVElDT0xfQ09NUExFVEU6XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy05NjMtXFx0XFx0XFx0XFx0cmV0ID0gdHJmNzk3MGFfd3JpdGUodHJmLFxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYz0xMjE4PXN0YXRpYyBpbnQgdHJmNzk3MGFfaW5fY29uZmlnX3JmX3RlY2goc3RydWN0IHRyZjc5NzBhICp0cmYsIGludCB0ZWNoKVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjI0LVxcdHN3aXRjaCAodGVjaCkge1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTIyNTpcXHRjYXNlIE5GQ19ESUdJVEFMX1JGX1RFQ0hfMTA2QTpcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyMjYtXFx0XFx0dHJmLVxcdTAwM2Vpc29fY3RybF90ZWNoID0gVFJGNzk3MEFfSVNPX0NUUkxfMTQ0NDNBXzEwNjtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTIzMS1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEyMzI6XFx0Y2FzZSBORkNfRElHSVRBTF9SRl9URUNIXzEwNkI6XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjMzLVxcdFxcdHRyZi1cXHUwMDNlaXNvX2N0cmxfdGVjaCA9IFRSRjc5NzBBX0lTT19DVFJMXzE0NDQzQl8xMDY7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyMzgtXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMjM5OlxcdGNhc2UgTkZDX0RJR0lUQUxfUkZfVEVDSF8yMTJGOlxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI0MC1cXHRcXHR0cmYtXFx1MDAzZWlzb19jdHJsX3RlY2ggPSBUUkY3OTcwQV9JU09fQ1RSTF9GRUxJQ0FfMjEyO1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMjQ1LVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTI0NjpcXHRjYXNlIE5GQ19ESUdJVEFMX1JGX1RFQ0hfNDI0RjpcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEyNDctXFx0XFx0dHJmLVxcdTAwM2Vpc29fY3RybF90ZWNoID0gVFJGNzk3MEFfSVNPX0NUUkxfRkVMSUNBXzQyNDtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI1Mi1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEyNTM6XFx0Y2FzZSBORkNfRElHSVRBTF9SRl9URUNIX0lTTzE1NjkzOlxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTI1NC1cXHRcXHR0cmYtXFx1MDAzZWlzb19jdHJsX3RlY2ggPSBUUkY3OTcwQV9JU09fQ1RSTF8xNTY5M19TR0xfMU9GNF8yNjQ4O1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYz0xMzEyPXN0YXRpYyBpbnQgdHJmNzk3MGFfaW5fY29uZmlnX2ZyYW1pbmcoc3RydWN0IHRyZjc5NzBhICp0cmYsIGludCBmcmFtaW5nKVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzIwLVxcdHN3aXRjaCAoZnJhbWluZykge1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTMyMTpcXHRjYXNlIE5GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQV9TSE9SVDpcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEzMjI6XFx0Y2FzZSBORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfU1RBTkRBUkQ6XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzIzLVxcdFxcdHRyZi1cXHUwMDNldHhfY21kID0gVFJGNzk3MEFfQ01EX1RSQU5TTUlUX05PX0NSQztcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTMyNS1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEzMjY6XFx0Y2FzZSBORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfU1RBTkRBUkRfV0lUSF9DUkNfQTpcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEzMjc6XFx0Y2FzZSBORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfVDRUOlxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTMyODpcXHRjYXNlIE5GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQjpcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEzMjk6XFx0Y2FzZSBORkNfRElHSVRBTF9GUkFNSU5HX05GQ0JfVDRUOlxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTMzMDpcXHRjYXNlIE5GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDRjpcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEzMzE6XFx0Y2FzZSBORkNfRElHSVRBTF9GUkFNSU5HX05GQ0ZfVDNUOlxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTMzMjpcXHRjYXNlIE5GQ19ESUdJVEFMX0ZSQU1JTkdfSVNPMTU2OTNfSU5WRU5UT1JZOlxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTMzMzpcXHRjYXNlIE5GQ19ESUdJVEFMX0ZSQU1JTkdfSVNPMTU2OTNfVDVUOlxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTMzNDpcXHRjYXNlIE5GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQV9ORkNfREVQOlxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTMzNTpcXHRjYXNlIE5GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDRl9ORkNfREVQOlxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTMzNi1cXHRcXHR0cmYtXFx1MDAzZXR4X2NtZCA9IFRSRjc5NzBBX0NNRF9UUkFOU01JVDtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTMzOC1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEzMzk6XFx0Y2FzZSBORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfVDJUOlxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTM0MC1cXHRcXHR0cmYtXFx1MDAzZXR4X2NtZCA9IFRSRjc5NzBBX0NNRF9UUkFOU01JVDtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM9MTM4Nz1zdGF0aWMgaW50IHRyZjc5NzBhX2luX2NvbmZpZ3VyZV9odyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBpbnQgdHlwZSxcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQwNi1cXHRzd2l0Y2ggKHR5cGUpIHtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE0MDc6XFx0Y2FzZSBORkNfRElHSVRBTF9DT05GSUdfUkZfVEVDSDpcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0MDgtXFx0XFx0cmV0ID0gdHJmNzk3MGFfaW5fY29uZmlnX3JmX3RlY2godHJmLCBwYXJhbSk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDA5LVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTQxMDpcXHRjYXNlIE5GQ19ESUdJVEFMX0NPTkZJR19GUkFNSU5HOlxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQxMS1cXHRcXHRyZXQgPSB0cmY3OTcwYV9pbl9jb25maWdfZnJhbWluZyh0cmYsIHBhcmFtKTtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM9MTQzOT1zdGF0aWMgaW50IHRyZjc5NzBhX3Blcl9jbWRfY29uZmlnKHN0cnVjdCB0cmY3OTcwYSAqdHJmLFxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDU2LVxcdCAqL1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTQ1NzpcXHRpZiAoKHRyZi1cXHUwMDNldGVjaG5vbG9neSA9PSBORkNfRElHSVRBTF9SRl9URUNIXzEwNkEpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNDU4OlxcdCAgICAodHJmLVxcdTAwM2VmcmFtaW5nID09IE5GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQV9UMlQpKSB7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNDU5LVxcdFxcdGlmIChyZXFbMF0gPT0gTkZDX1QyVF9DTURfUkVBRClcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQ3MS1cXHRcXHR9XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNDcyOlxcdH0gZWxzZSBpZiAodHJmLVxcdTAwM2V0ZWNobm9sb2d5ID09IE5GQ19ESUdJVEFMX1JGX1RFQ0hfSVNPMTU2OTMpIHtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE0NzMtXFx0XFx0aXNvX2N0cmwgPSB0cmYtXFx1MDAzZWlzb19jdHJsIFxcdTAwMjYgflRSRjc5NzBBX0lTT19DVFJMX1JGSURfU1BFRURfTUFTSztcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTQ5OC1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE0OTk6XFx0XFx0aWYgKCh0cmYtXFx1MDAzZWZyYW1pbmcgPT0gTkZDX0RJR0lUQUxfRlJBTUlOR19JU08xNTY5M19UNVQpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNTAwLVxcdFxcdCAgICB0cmY3OTcwYV9pc19pc28xNTY5M193cml0ZV9vcl9sb2NrKHJlcVsxXSkgXFx1MDAyNlxcdTAwMjZcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM9MTUwOD1zdGF0aWMgaW50IHRyZjc5NzBhX3NlbmRfY21kKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE1ODQtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNTg1OlxcdGlmICh0cmYtXFx1MDAzZWZyYW1pbmcgPT0gTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX1NIT1JUKSB7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNTg2LVxcdFxcdHByZWZpeFszXSA9IDB4MDA7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jPTE2MTI9c3RhdGljIGludCB0cmY3OTcwYV90Z19jb25maWdfcmZfdGVjaChzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgaW50IHRlY2gpXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE2MTgtXFx0c3dpdGNoICh0ZWNoKSB7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNjE5OlxcdGNhc2UgTkZDX0RJR0lUQUxfUkZfVEVDSF8xMDZBOlxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTYyMC1cXHRcXHR0cmYtXFx1MDAzZWlzb19jdHJsX3RlY2ggPSBUUkY3OTcwQV9JU09fQ1RSTF9ORkNfTkZDX0NFX01PREUgfFxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNjI1LVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTYyNjpcXHRjYXNlIE5GQ19ESUdJVEFMX1JGX1RFQ0hfMjEyRjpcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE2MjctXFx0XFx0dHJmLVxcdTAwM2Vpc29fY3RybF90ZWNoID0gVFJGNzk3MEFfSVNPX0NUUkxfTkZDX05GQ19DRV9NT0RFIHxcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTYzMi1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE2MzM6XFx0Y2FzZSBORkNfRElHSVRBTF9SRl9URUNIXzQyNEY6XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNjM0LVxcdFxcdHRyZi1cXHUwMDNlaXNvX2N0cmxfdGVjaCA9IFRSRjc5NzBBX0lTT19DVFJMX05GQ19ORkNfQ0VfTU9ERSB8XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE2NTMtXFx0ICovXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNjU0OlxcdGlmICgodHJmLVxcdTAwM2VmcmFtaW5nID09IE5GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDX0RFUF9BQ1RJVkFURUQpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNjU1LVxcdCAgICAodHJmLVxcdTAwM2Vpc29fY3RybF90ZWNoICE9IHRyZi1cXHUwMDNlaXNvX2N0cmwpKSB7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jPTE2NzA9c3RhdGljIGludCB0cmY3OTcwYV90Z19jb25maWdfZnJhbWluZyhzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgaW50IGZyYW1pbmcpXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE2NzctXFx0c3dpdGNoIChmcmFtaW5nKSB7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNjc4OlxcdGNhc2UgTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX05GQ19ERVA6XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNjc5LVxcdFxcdHRyZi1cXHUwMDNldHhfY21kID0gVFJGNzk3MEFfQ01EX1RSQU5TTUlUX05PX0NSQztcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTY4MS1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE2ODI6XFx0Y2FzZSBORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfU1RBTkRBUkQ6XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNjgzOlxcdGNhc2UgTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX1NUQU5EQVJEX1dJVEhfQ1JDX0E6XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNjg0OlxcdGNhc2UgTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX0FOVElDT0xfQ09NUExFVEU6XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNjg1LVxcdFxcdC8qIFRoZXNlIG9uZXMgYXJlIGFwcGxpZWQgaW4gdGhlIGludGVycnVwdCBoYW5kbGVyICovXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE2ODctXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNjg4OlxcdGNhc2UgTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNGX05GQ19ERVA6XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNjg5LVxcdFxcdHRyZi1cXHUwMDNldHhfY21kID0gVFJGNzk3MEFfQ01EX1RSQU5TTUlUO1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNjkxLVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTY5MjpcXHRjYXNlIE5GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDX0RFUF9BQ1RJVkFURUQ6XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNjkzLVxcdFxcdHRyZi1cXHUwMDNldHhfY21kID0gVFJGNzk3MEFfQ01EX1RSQU5TTUlUO1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYz0xNzI5PXN0YXRpYyBpbnQgdHJmNzk3MGFfdGdfY29uZmlndXJlX2h3KHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIGludCB0eXBlLFxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNzQ4LVxcdHN3aXRjaCAodHlwZSkge1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTc0OTpcXHRjYXNlIE5GQ19ESUdJVEFMX0NPTkZJR19SRl9URUNIOlxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTc1MC1cXHRcXHRyZXQgPSB0cmY3OTcwYV90Z19jb25maWdfcmZfdGVjaCh0cmYsIHBhcmFtKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE3NTEtXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNzUyOlxcdGNhc2UgTkZDX0RJR0lUQUxfQ09ORklHX0ZSQU1JTkc6XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNzUzLVxcdFxcdHJldCA9IHRyZjc5NzBhX3RnX2NvbmZpZ19mcmFtaW5nKHRyZiwgcGFyYW0pO1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYz0xODU1PXN0YXRpYyBpbnQgdHJmNzk3MGFfdGdfbGlzdGVuX21kKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE4NjQtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxODY1OlxcdHJldCA9IHRyZjc5NzBhX3RnX2NvbmZpZ3VyZV9odyhkZGV2LCBORkNfRElHSVRBTF9DT05GSUdfUkZfVEVDSCxcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE4NjY6XFx0XFx0XFx0XFx0ICAgICAgIE5GQ19ESUdJVEFMX1JGX1RFQ0hfMTA2QSk7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xODY3LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE4NjktXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxODcwOlxcdHJldCA9IHRyZjc5NzBhX3RnX2NvbmZpZ3VyZV9odyhkZGV2LCBORkNfRElHSVRBTF9DT05GSUdfRlJBTUlORyxcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE4NzE6XFx0XFx0XFx0XFx0ICAgICAgIE5GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQV9ORkNfREVQKTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE4NzItXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM9MjA0NT1zdGF0aWMgaW50IHRyZjc5NzBhX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTIxNzUtXFx0XFx0XFx0XFx0XFx0XFx0VFJGNzk3MEFfU1VQUE9SVEVEX1BST1RPQ09MUyxcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjIxNzY6XFx0XFx0XFx0XFx0XFx0XFx0TkZDX0RJR0lUQUxfRFJWX0NBUFNfSU5fQ1JDIHxcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjIxNzc6XFx0XFx0XFx0XFx0XFx0XFx0TkZDX0RJR0lUQUxfRFJWX0NBUFNfVEdfQ1JDLCAwLFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMjE3OC1cXHRcXHRcXHRcXHRcXHRcXHQwKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTJUMTM6MjQ6MjAuNzIzNzU4OTk1WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjE4NDUwNTU5MjU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBORkMgRHJpdmVyIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIE5GQy1yZWxhdGVkIGNvbmZpZ3VyYXRpb25zIGFuZCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlaXIgcmVsYXRpb25zaGlwcy4gU3BlY2lmaWNhbGx5LCBJIHNlZSB0aGF0IGBORkNfUE9SVDEwMGAgaXMgZGVwZW5kZW50IG9uIGJvdGggYFVTQmAgYW5kIGBORkNfRElHSVRBTGAuIFRoYXQgbWFrZXMgc2Vuc2U7IGBORkNfUE9SVDEwMGAgcHJvYmFibHkgcmVmZXJzIHRvIGEgc3BlY2lmaWMgdHlwZSBvZiBORkMgcmVhZGVyIHRoYXQgaW50ZXJmYWNlcyB2aWEgVVNCLiBBbmQgb2YgY291cnNlLCBpdCBuZWVkcyB0aGUgdW5kZXJseWluZyBkaWdpdGFsIE5GQyBzdXBwb3J0LiBUaGVuIEkgc2VlIGBORkNfU0lNYCBvbmx5IGRlcGVuZHMgb24gYE5GQ19ESUdJVEFMYCwgd2hpY2ggbGlrZWx5IG1lYW5zIGBORkNfU0lNYCBzdXBwb3J0IHVzZXMgTkZDIGZ1bmN0aW9uYWxpdHkgYnV0IG5vdCBhIFVTQiBjb25uZWN0aW9uLlxuXG5UbyBnZXQgYSBjbGVhcmVyIHBpY3R1cmUgb2YgaG93IHRoZXNlIG9wdGlvbnMgYXJlIHN0cnVjdHVyZWQsIEkgc2hvdWxkIGRpdmUgaW50byB0aGUgS2NvbmZpZyBmaWxlIGZvciB0aGUgTkZDIGRyaXZlcnMuIEknbGwgbmVlZCB0byBjaGVjayBgZHJpdmVycy9uZmMvS2NvbmZpZ2AgdG8gc2VlIHRoZSBjb21wbGV0ZSBjb250ZXh0IGFyb3VuZCBgTkZDX1BPUlQxMDBgIGFuZCBgTkZDX1NJTWAuIEknbSBleHBlY3RpbmcgdG8gZmluZCBpbmZvcm1hdGlvbiBhYm91dCBkZWZhdWx0IHZhbHVlcywgaGVscCB0ZXh0LCBhbmQgb3RoZXIgZGVwZW5kZW5jaWVzIHRoYXQgSSBoYXZlbid0IGNvbnNpZGVyZWQgeWV0LiBVbmRlcnN0YW5kaW5nIHRoZSBLY29uZmlnIGhpZXJhcmNoeSBpcyBrZXkgdG8gbWFraW5nIHN1cmUgbXkgY29uZmlndXJhdGlvbnMgYXJlIGNvcnJlY3QgYW5kIGRvbid0IGludHJvZHVjZSBhbnkgY29uZmxpY3RzLiBUaW1lIHRvIGRpZyBpbiFcblxuXG4iLCJJbnB1dFRva2VucyI6MzYyNzcsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMlQxMzoyNDozOS4xNzQzMjExMTlaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njk1NzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZmMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAzMCxcbiAgXCJMaW5lQ291bnRcIjogMjVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAzMDpcXHRcXG4gIDMxOlxcdGNvbmZpZyBORkNfU0lNXFxuICAzMjpcXHRcXHR0cmlzdGF0ZSBcXFwiTkZDIGhhcmR3YXJlIHNpbXVsYXRvciBkcml2ZXJcXFwiXFxuICAzMzpcXHRcXHRkZXBlbmRzIG9uIE5GQ19ESUdJVEFMXFxuICAzNDpcXHRcXHRoZWxwXFxuICAzNTpcXHRcXHQgIFRoaXMgZHJpdmVyIGRlY2xhcmVzIHR3byB2aXJ0dWFsIE5GQyBkZXZpY2VzIHN1cHBvcnRpbmcgTkZDLURFUFxcbiAgMzY6XFx0XFx0ICBwcm90b2NvbC4gQW4gTExDUCBjb25uZWN0aW9uIGNhbiBiZSBlc3RhYmxpc2hlZCBiZXR3ZWVuIHRoZW0gYW5kXFxuICAzNzpcXHRcXHQgIGFsbCBwYWNrZXRzIHNlbnQgZnJvbSBvbmUgZGV2aWNlIGlzIHNlbnQgYmFjayB0byB0aGUgb3RoZXIsIGFjdGluZyBhc1xcbiAgMzg6XFx0XFx0ICBsb29wYmFjayBkZXZpY2VzLlxcbiAgMzk6XFx0XFxuICA0MDpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuICA0MTpcXHRcXG4gIDQyOlxcdGNvbmZpZyBORkNfUE9SVDEwMFxcbiAgNDM6XFx0XFx0dHJpc3RhdGUgXFxcIlNvbnkgTkZDIFBvcnQtMTAwIFNlcmllcyBVU0IgZGV2aWNlIHN1cHBvcnRcXFwiXFxuICA0NDpcXHRcXHRkZXBlbmRzIG9uIFVTQlxcbiAgNDU6XFx0XFx0ZGVwZW5kcyBvbiBORkNfRElHSVRBTFxcbiAgNDY6XFx0XFx0aGVscFxcbiAgNDc6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgU29ueSBQb3J0LTEwMCBjaGlwIGJhc2VkIFVTQiBkZXZpY2VzIHN1Y2ggYXMgdGhlXFxuICA0ODpcXHRcXHQgIFJDLVMzODAgZG9uZ2xlLlxcbiAgNDk6XFx0XFxuICA1MDpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuICA1MTpcXHRcXG4gIDUyOlxcdGNvbmZpZyBORkNfVklSVFVBTF9OQ0lcXG4gIDUzOlxcdFxcdHRyaXN0YXRlIFxcXCJOQ0kgZGV2aWNlIHNpbXVsYXRvciBkcml2ZXJcXFwiXFxuICA1NDpcXHRcXHRkZXBlbmRzIG9uIE5GQ19OQ0lcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTJUMTM6MjQ6MzkuMTc0MzkzMTQ4WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjE2MDkxMzU3OTI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IE5GQyBGdXp6aW5nIEh5cG90aGVzaXMqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJJ20gbG9va2luZyBhdCBgTkZDX1NJTWAsIHRoYXQgdmlydHVhbCBORkMgZHJpdmVyLCBlc3NlbnRpYWxseSBhIGxvb3BiYWNrIGZvciBORkMtREVQLiBJbnRlcmVzdGluZywgYSBjbG9zZWQgc3lzdGVtIHRvIGV4cGxvcmUgYW5kIHBlcmhhcHMgbGV2ZXJhZ2UuIFRoZW4gdGhlcmUncyBgTkZDX1BPUlQxMDBgLCB3aGljaCBpcyBTb255J3MgTkZDIFVTQiBkZXZpY2UgZHJpdmVyLCBvYnZpb3VzbHkgVVNCLWRlcGVuZGVudC4gTm93IHRoZSBjcnVjaWFsIGNvbm5lY3Rpb246IHN5emthbGxlciBoYXMgVVNCIGZ1enppbmcgY2FwYWJpbGl0aWVzIHdpdGggaXRzIGdhZGdldCBhbmQgcmF3X2dhZGdldCBmZWF0dXJlcywgYW5kIGl0J3MgYWxyZWFkeSBoYW1tZXJpbmcgYXdheSBhdCBORkMgc29ja2V0cyAoQUZfTkZDKSBhbmQgbmV0bGluay4gVGhpcyBpcyBwcm9taXNpbmcsIGVzcGVjaWFsbHkgZ2l2ZW4gaG93IGFnZ3Jlc3NpdmVseSBzeXprYWxsZXIgdGFyZ2V0cyBgbmV0L25mYy9gIGdlbmVyYWxseSwgcmV2ZWFsaW5nIHBsZW50eSBvZiBidWdzLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJEb2VzIHN5emthbGxlciBoYXZlIE5GQyBzeXNjYWxsIGRlc2NyaXB0aW9ucywgb3IgaXMgaXQgYWxyZWFkeSBmdXp6aW5nIE5GQyBlZmZlY3RpdmVseT9cIiBJdCBtYWtlcyBzZW5zZSB0byB2ZXJpZnkuXG5cbkEgcXVpY2sgY2hlY2sgY29uZmlybXMgYEFGX05GQ2AgaXMgaW5kZWVkIHByZXNlbnQgaW4gdGhlIGtlcm5lbCB2aWEgYG5ldC9uZmMvYWZfbmZjLmNgLiBOb3csIEkgd2FudCB0byB1bmRlcnN0YW5kICpob3cqIGBkaWdpdGFsX2RlcGAgaXMgaW52b2tlZC4gV2hhdCBhcmUgdGhlIGNhbGxpbmcgcGF0dGVybnM/IEknbGwgdXNlIGBkaWdpdGFsX2RlcGAgb3IgYG5mY19kaWdpdGFsYCBhcyB0aGUgc2VhcmNoIHRlcm1zIHdpdGhpbiBgbmV0L25mYy9gIGZvciBtb3JlIGNvbnRleHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2OTU0LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQ0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTJUMTM6MjQ6NTUuMjY1NzUzNDE0WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjI2NTM5MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmZjXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZmMvZGlnaXRhbF9kZXAuYz0xMDY9c3RhdGljIHZvaWQgZGlnaXRhbF9pbl9yZWN2X2RlcF9yZXMoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDctXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBza19idWZmICpyZXNwKTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTA4OnN0YXRpYyB2b2lkIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTA5LVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqcmVzcCk7XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9OTc4PXN0YXRpYyBpbnQgZGlnaXRhbF90Z19zZW5kX2FjayhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwMTItXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwMTM6XFx0cmMgPSBkaWdpdGFsX3RnX3NlbmRfY21kKGRkZXYsIHNrYiwgMTUwMCwgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEsXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwMTQtXFx0XFx0XFx0XFx0IGRhdGFfZXhjaCk7XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9MTAyND1zdGF0aWMgaW50IGRpZ2l0YWxfdGdfc2VuZF9hdG4oc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldilcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDUxLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDUyOlxcdHJjID0gZGlnaXRhbF90Z19zZW5kX2NtZChkZGV2LCBza2IsIDE1MDAsIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxLFxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDUzLVxcdFxcdFxcdFxcdCBOVUxMKTtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz0xMDYwPXN0YXRpYyBpbnQgZGlnaXRhbF90Z19zZW5kX3NhdmVkX3NrYihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2KVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwNjktXFx0cmMgPSBkaWdpdGFsX3RnX3NlbmRfY21kKGRkZXYsIGRkZXYtXFx1MDAzZXNhdmVkX3NrYiwgMTUwMCxcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTA3MDpcXHRcXHRcXHRcXHQgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEsIE5VTEwpO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDcxLVxcdGlmIChyYylcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDc2LVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDc3OnN0YXRpYyB2b2lkIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTA3OC1cXHRcXHRcXHRcXHQgICAgc3RydWN0IHNrX2J1ZmYgKnJlc3ApXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9MTI5Nz1pbnQgZGlnaXRhbF90Z19zZW5kX2RlcF9yZXMoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzMxLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMzMyOlxcdHJjID0gZGlnaXRhbF90Z19zZW5kX2NtZChkZGV2LCB0bXBfc2tiLCAxNTAwLCBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcSxcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTMzMy1cXHRcXHRcXHRcXHQgTlVMTCk7XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9MTM0OD1zdGF0aWMgdm9pZCBkaWdpdGFsX3RnX3NlbmRfcHNsX3Jlc19jb21wbGV0ZShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEzNTktXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEzNjA6XFx0ZGlnaXRhbF90Z19saXN0ZW4oZGRldiwgMTUwMCwgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEsIE5VTEwpO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzYxLVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTE0Njc9c3RhdGljIHZvaWQgZGlnaXRhbF90Z19zZW5kX2F0cl9yZXNfY29tcGxldGUoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xNDg1LVxcdGVsc2VcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTQ4NjpcXHRcXHRkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcShkZGV2LCBhcmcsIHJlc3ApO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xNDg3LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTJUMTM6MjQ6NTUuMzEyMDIzNTk3WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjI1MTcxNzczNDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIERFUCBSZXF1ZXN0IEhhbmRsaW5nKipcblxuT2theSwgc28gYGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxYCBpcyB0aGUga2V5IGZ1bmN0aW9uLCB0aGUgcmVjZWl2ZSBoYW5kbGVyIGZvciBERVAgcmVxdWVzdHMgaW4gdGFyZ2V0IG1vZGUuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHRyYWNlIHRoZSBleGVjdXRpb24gZmxvdyBhbmQgc2VlIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgYWN0dWFsbHkgdHJpZ2dlcmVkIGR1cmluZyBERVAgbGluayBzZXR1cCBvciB0YXJnZXQgb3BlcmF0aW9ucy4gSSdsbCBuZWVkIHRvIGlkZW50aWZ5IHRoZSBwb2ludHMgb2Ygb3JpZ2luLlxuXG5GaXJzdCwgSSBuZWVkIHRvIGNoZWNrIGBuZXQvbmZjL2RpZ2l0YWxfZGVwLmNgIHRvIHNlZSBob3cgcmVzcG9uc2VzIGFyZSBoYW5kbGVkLiBJJ20gbG9va2luZyBmb3IgdGhlIGZ1bmN0aW9uIGNhbGxzIHRoYXQgbWlnaHQgcmVsYXRlIHRvIHRoZSB0cmlnZ2VyLiBTcGVjaWZpY2FsbHksIEknbSBpbnRlcmVzdGVkIGluIGBkaWdpdGFsX3RnX3NlbmRfYXRyX3Jlc19jb21wbGV0ZWAsIGBkaWdpdGFsX3RnX3NlbmRfZGVwX3Jlc2AsIGFuZCBgZGlnaXRhbF90Z19zZW5kX3BzbF9yZXNfY29tcGxldGVgLCB0byBzZWUgaWYgdGhlcmUgaXMgYW55IGluZGljYXRpb24gb2YgdGhlIGNhbGwgdG8gdGhlIHJlY2VpdmUgaGFuZGxlci5cblxuTmV4dCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSB0YXJnZXQgbGlzdGVucyBhbmQgaW5pdGlhdGVzIGl0c2VsZi4gRm9yIHRoaXMgcGFydCwgSSBzaG91bGQgZXhhbWluZSBgZGlnaXRhbF90ZWNobm9sb2d5LmNgIGFuZCBgZGlnaXRhbF9jb3JlLmNgIHRvIGRldGVybWluZSBob3cgdGhlIERFUCBvcGVyYXRpb25zIGFyZSBpbml0aWF0ZWQuIFRoYXQgc2hvdWxkIGdpdmUgYSBtb3JlIGNvbXBsZXRlIHBpY3R1cmUgb2YgdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozODUyMywiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMlQxMzoyNDo1Ny44MjkyMDMxNDlaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5NDg5OTkyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRpZ2l0YWxfdGdfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25mYy9kaWdpdGFsLmg9NDg9aW50IGRpZ2l0YWxfc2VuZF9jbWQoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdTggY21kX3R5cGUsXFxubmV0L25mYy9kaWdpdGFsLmg6NDk6XFx0XFx0ICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZGlnaXRhbF90Z19tZGFhX3BhcmFtcyAqcGFyYW1zLFxcbm5ldC9uZmMvZGlnaXRhbC5oLTUwLVxcdFxcdCAgICAgdTE2IHRpbWVvdXQsIG5mY19kaWdpdGFsX2NtZF9jb21wbGV0ZV90IGNtZF9jYixcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbC5oPTgzPWludCBkaWdpdGFsX2luX3NlbmRfZGVwX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxcbi0tXFxubmV0L25mYy9kaWdpdGFsLmgtODYtXFxubmV0L25mYy9kaWdpdGFsLmg6ODc6aW50IGRpZ2l0YWxfdGdfY29uZmlndXJlX2h3KHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIGludCB0eXBlLCBpbnQgcGFyYW0pO1xcbm5ldC9uZmMvZGlnaXRhbC5oOjg4OnN0YXRpYyBpbmxpbmUgaW50IGRpZ2l0YWxfdGdfc2VuZF9jbWQoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcXG5uZXQvbmZjL2RpZ2l0YWwuaC04OS1cXHRcXHRcXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MTYgdGltZW91dCxcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbC5oLTk1LVxcbm5ldC9uZmMvZGlnaXRhbC5oOjk2OnZvaWQgZGlnaXRhbF90Z19yZWN2X3NlbnNfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcXG5uZXQvbmZjL2RpZ2l0YWwuaC05Ny1cXHRcXHRcXHQgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqcmVzcCk7XFxubmV0L25mYy9kaWdpdGFsLmgtOTgtXFxubmV0L25mYy9kaWdpdGFsLmg6OTk6dm9pZCBkaWdpdGFsX3RnX3JlY3Zfc2Vuc2ZfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcXG5uZXQvbmZjL2RpZ2l0YWwuaC0xMDAtXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBza19idWZmICpyZXNwKTtcXG5uZXQvbmZjL2RpZ2l0YWwuaC0xMDEtXFxubmV0L25mYy9kaWdpdGFsLmg6MTAyOnN0YXRpYyBpbmxpbmUgaW50IGRpZ2l0YWxfdGdfbGlzdGVuKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHUxNiB0aW1lb3V0LFxcbm5ldC9uZmMvZGlnaXRhbC5oLTEwMy1cXHRcXHRcXHRcXHQgICAgbmZjX2RpZ2l0YWxfY21kX2NvbXBsZXRlX3QgY2IsIHZvaWQgKmFyZylcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbC5oLTEwOC1cXG5uZXQvbmZjL2RpZ2l0YWwuaDoxMDk6dm9pZCBkaWdpdGFsX3RnX3JlY3ZfYXRyX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB2b2lkICphcmcsXFxubmV0L25mYy9kaWdpdGFsLmgtMTEwLVxcdFxcdFxcdCAgICAgc3RydWN0IHNrX2J1ZmYgKnJlc3ApO1xcbm5ldC9uZmMvZGlnaXRhbC5oLTExMS1cXG5uZXQvbmZjL2RpZ2l0YWwuaDoxMTI6aW50IGRpZ2l0YWxfdGdfc2VuZF9kZXBfcmVzKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHN0cnVjdCBza19idWZmICpza2IpO1xcbm5ldC9uZmMvZGlnaXRhbC5oLTExMy1cXG5uZXQvbmZjL2RpZ2l0YWwuaDoxMTQ6aW50IGRpZ2l0YWxfdGdfbGlzdGVuX25mY2Eoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdTggcmZfdGVjaCk7XFxubmV0L25mYy9kaWdpdGFsLmg6MTE1OmludCBkaWdpdGFsX3RnX2xpc3Rlbl9uZmNmKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHU4IHJmX3RlY2gpO1xcbm5ldC9uZmMvZGlnaXRhbC5oOjExNjp2b2lkIGRpZ2l0YWxfdGdfcmVjdl9tZF9yZXEoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxcbm5ldC9uZmMvZGlnaXRhbC5oLTExNy1cXHRcXHRcXHQgICAgc3RydWN0IHNrX2J1ZmYgKnJlc3ApO1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYz0yNz1zdHJ1Y3QgZGlnaXRhbF9jbWQge1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYy0zNS1cXHRzdHJ1Y3Qgc2tfYnVmZiAqcmVzcDtcXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jOjM2OlxcdHN0cnVjdCBkaWdpdGFsX3RnX21kYWFfcGFyYW1zICptZGFhX3BhcmFtcztcXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTM3LVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYz0xNTI9c3RhdGljIHZvaWQgZGlnaXRhbF93cV9jbWQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYy0xNTUtXFx0c3RydWN0IGRpZ2l0YWxfY21kICpjbWQ7XFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYzoxNTY6XFx0c3RydWN0IGRpZ2l0YWxfdGdfbWRhYV9wYXJhbXMgKnBhcmFtcztcXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTE1Ny1cXHRzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2ID0gY29udGFpbmVyX29mKHdvcmssXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jPTIyNz1pbnQgZGlnaXRhbF9zZW5kX2NtZChzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB1OCBjbWRfdHlwZSxcXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jOjIyODpcXHRcXHQgICAgIHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBkaWdpdGFsX3RnX21kYWFfcGFyYW1zICpwYXJhbXMsXFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYy0yMjktXFx0XFx0ICAgICB1MTYgdGltZW91dCwgbmZjX2RpZ2l0YWxfY21kX2NvbXBsZXRlX3QgY21kX2NiLFxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYz0yNTU9aW50IGRpZ2l0YWxfaW5fY29uZmlndXJlX2h3KHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIGludCB0eXBlLCBpbnQgcGFyYW0pXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTI2NS1cXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jOjI2NjppbnQgZGlnaXRhbF90Z19jb25maWd1cmVfaHcoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgaW50IHR5cGUsIGludCBwYXJhbSlcXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTI2Ny17XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTI3Ni1cXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jOjI3NzpzdGF0aWMgaW50IGRpZ2l0YWxfdGdfbGlzdGVuX21kYWEoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdTggcmZfdGVjaClcXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTI3OC17XFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYzoyNzk6XFx0c3RydWN0IGRpZ2l0YWxfdGdfbWRhYV9wYXJhbXMgKnBhcmFtcztcXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTI4MC1cXHRpbnQgcmM7XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTI5NS1cXHRyYyA9IGRpZ2l0YWxfc2VuZF9jbWQoZGRldiwgRElHSVRBTF9DTURfVEdfTElTVEVOX01EQUEsIE5VTEwsIHBhcmFtcyxcXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jOjI5NjpcXHRcXHRcXHQgICAgICA1MDAsIGRpZ2l0YWxfdGdfcmVjdl9hdHJfcmVxLCBOVUxMKTtcXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTI5Ny1cXHRpZiAocmMpXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTMwMi1cXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jOjMwMzpzdGF0aWMgaW50IGRpZ2l0YWxfdGdfbGlzdGVuX21kKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHU4IHJmX3RlY2gpXFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYy0zMDQte1xcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtMzA1LVxcdHJldHVybiBkaWdpdGFsX3NlbmRfY21kKGRkZXYsIERJR0lUQUxfQ01EX1RHX0xJU1RFTl9NRCwgTlVMTCwgTlVMTCwgNTAwLFxcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmM6MzA2OlxcdFxcdFxcdFxcdGRpZ2l0YWxfdGdfcmVjdl9tZF9yZXEsIE5VTEwpO1xcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtMzA3LX1cXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmM9NDc2PXN0YXRpYyBpbnQgZGlnaXRhbF9zdGFydF9wb2xsKHN0cnVjdCBuZmNfZGV2ICpuZmNfZGV2LCBfX3UzMiBpbV9wcm90b2NvbHMsXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTUyOC1cXHRcXHRcXHRkaWdpdGFsX2FkZF9wb2xsX3RlY2goZGRldiwgMCxcXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jOjUyOTpcXHRcXHRcXHRcXHRcXHQgICAgICBkaWdpdGFsX3RnX2xpc3Rlbl9tZGFhKTtcXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTUzMC1cXHRcXHR9IGVsc2UgaWYgKGRkZXYtXFx1MDAzZW9wcy1cXHUwMDNldGdfbGlzdGVuX21kKSB7XFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYy01MzEtXFx0XFx0XFx0ZGlnaXRhbF9hZGRfcG9sbF90ZWNoKGRkZXYsIDAsXFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYzo1MzI6XFx0XFx0XFx0XFx0XFx0ICAgICAgZGlnaXRhbF90Z19saXN0ZW5fbWQpO1xcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtNTMzLVxcdFxcdH0gZWxzZSB7XFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYy01MzQtXFx0XFx0XFx0ZGlnaXRhbF9hZGRfcG9sbF90ZWNoKGRkZXYsIE5GQ19ESUdJVEFMX1JGX1RFQ0hfMTA2QSxcXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jOjUzNTpcXHRcXHRcXHRcXHRcXHQgICAgICBkaWdpdGFsX3RnX2xpc3Rlbl9uZmNhKTtcXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTUzNi1cXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTUzNy1cXHRcXHRcXHRkaWdpdGFsX2FkZF9wb2xsX3RlY2goZGRldiwgTkZDX0RJR0lUQUxfUkZfVEVDSF8yMTJGLFxcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmM6NTM4OlxcdFxcdFxcdFxcdFxcdCAgICAgIGRpZ2l0YWxfdGdfbGlzdGVuX25mY2YpO1xcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtNTM5LVxcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtNTQwLVxcdFxcdFxcdGRpZ2l0YWxfYWRkX3BvbGxfdGVjaChkZGV2LCBORkNfRElHSVRBTF9SRl9URUNIXzQyNEYsXFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYzo1NDE6XFx0XFx0XFx0XFx0XFx0ICAgICAgZGlnaXRhbF90Z19saXN0ZW5fbmZjZik7XFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYy01NDItXFx0XFx0fVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYz02NDE9c3RhdGljIHZvaWQgZGlnaXRhbF9kZWFjdGl2YXRlX3RhcmdldChzdHJ1Y3QgbmZjX2RldiAqbmZjX2RldixcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtNjU1LVxcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmM6NjU2OnN0YXRpYyBpbnQgZGlnaXRhbF90Z19zZW5kKHN0cnVjdCBuZmNfZGV2ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYy02NTcte1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYy02NTktXFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYzo2NjA6XFx0cmV0dXJuIGRpZ2l0YWxfdGdfc2VuZF9kZXBfcmVzKGRkZXYsIHNrYik7XFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYy02NjEtfVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYz03NDQ9c3RhdGljIGNvbnN0IHN0cnVjdCBuZmNfb3BzIGRpZ2l0YWxfbmZjX29wcyA9IHtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtNzUyLVxcdC5kZWFjdGl2YXRlX3RhcmdldCA9IGRpZ2l0YWxfZGVhY3RpdmF0ZV90YXJnZXQsXFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYzo3NTM6XFx0LnRtX3NlbmQgPSBkaWdpdGFsX3RnX3NlbmQsXFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYy03NTQtXFx0LmltX3RyYW5zY2VpdmUgPSBkaWdpdGFsX2luX3NlbmQsXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9MTA2PXN0YXRpYyB2b2lkIGRpZ2l0YWxfaW5fcmVjdl9kZXBfcmVzKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTA3LVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqcmVzcCk7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwODpzdGF0aWMgdm9pZCBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB2b2lkICphcmcsXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwOS1cXHRcXHRcXHRcXHQgICAgc3RydWN0IHNrX2J1ZmYgKnJlc3ApO1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTkwND1pbnQgZGlnaXRhbF9pbl9zZW5kX2RlcF9yZXEoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05NTAtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjk1MTpzdGF0aWMgdm9pZCBkaWdpdGFsX3RnX3NldF9yZl90ZWNoKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHU4IHJmX3RlY2gpXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTk1Mi17XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtOTc3LVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo5Nzg6c3RhdGljIGludCBkaWdpdGFsX3RnX3NlbmRfYWNrKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTk3OS1cXHRcXHRcXHQgICAgICAgc3RydWN0IGRpZ2l0YWxfZGF0YV9leGNoICpkYXRhX2V4Y2gpXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTAxMi1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTAxMzpcXHRyYyA9IGRpZ2l0YWxfdGdfc2VuZF9jbWQoZGRldiwgc2tiLCAxNTAwLCBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcSxcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTAxNC1cXHRcXHRcXHRcXHQgZGF0YV9leGNoKTtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDIzLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDI0OnN0YXRpYyBpbnQgZGlnaXRhbF90Z19zZW5kX2F0bihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2KVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDI1LXtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDUxLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDUyOlxcdHJjID0gZGlnaXRhbF90Z19zZW5kX2NtZChkZGV2LCBza2IsIDE1MDAsIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxLFxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDUzLVxcdFxcdFxcdFxcdCBOVUxMKTtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDU5LVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDYwOnN0YXRpYyBpbnQgZGlnaXRhbF90Z19zZW5kX3NhdmVkX3NrYihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2KVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDYxLXtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDY4LVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDY5OlxcdHJjID0gZGlnaXRhbF90Z19zZW5kX2NtZChkZGV2LCBkZGV2LVxcdTAwM2VzYXZlZF9za2IsIDE1MDAsXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwNzA6XFx0XFx0XFx0XFx0IGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxLCBOVUxMKTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTA3MS1cXHRpZiAocmMpXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTA3Ni1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTA3NzpzdGF0aWMgdm9pZCBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB2b2lkICphcmcsXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwNzgtXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBza19idWZmICpyZXNwKVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTExNTYtXFx0XFx0XFx0ICogd2hpY2ggaXMgdGhlIHByZXZpb3VzIERFUF9SRVMgc2F2ZWQgaW5cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTE1NzpcXHRcXHRcXHQgKiBkaWdpdGFsX3RnX3NlbmRfZGVwX3JlcygpLlxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMTU4LVxcdFxcdFxcdCAqL1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTExNjAtXFx0XFx0XFx0ICBESUdJVEFMX05GQ19ERVBfUEZCX1BOSShkZGV2LVxcdTAwM2VjdXJyX25mY19kZXBfcG5pIC0gMSkpIHtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTE2MTpcXHRcXHRcXHRcXHRyYyA9IGRpZ2l0YWxfdGdfc2VuZF9zYXZlZF9za2IoZGRldik7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTExNjItXFx0XFx0XFx0XFx0aWYgKHJjKVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTExODQtXFx0XFx0cmVzcCA9IGRpZ2l0YWxfcmVjdl9kZXBfZGF0YV9nYXRoZXIoZGRldiwgcGZiLCByZXNwLFxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMTg1OlxcdFxcdFxcdFxcdFxcdFxcdCAgICBkaWdpdGFsX3RnX3NlbmRfYWNrLCBOVUxMKTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTE4Ni1cXHRcXHRpZiAoSVNfRVJSKHJlc3ApKSB7XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTIxMC1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTIxMTpcXHRcXHRcXHRyYyA9IGRpZ2l0YWxfdGdfc2VuZF9zYXZlZF9za2IoZGRldik7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEyMTItXFx0XFx0XFx0aWYgKHJjKVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEyMzAtXFx0XFx0XFx0XFx0XFx0XFx0ZGRldi1cXHUwMDNlY3Vycl9uZmNfZGVwX3BuaSkge1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMjMxOlxcdFxcdFxcdFxcdHJjID0gZGlnaXRhbF90Z19zZW5kX3NhdmVkX3NrYihkZGV2KTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTIzMi1cXHRcXHRcXHRcXHRpZiAocmMpXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTI1NC1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTI1NTpcXHRcXHRyYyA9IGRpZ2l0YWxfdGdfc2VuZF9kZXBfcmVzKGRkZXYsIGRkZXYtXFx1MDAzZWNoYWluaW5nX3NrYik7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEyNTYtXFx0XFx0aWYgKHJjKVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEyNjUtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEyNjY6XFx0XFx0cmMgPSBkaWdpdGFsX3RnX3NlbmRfYXRuKGRkZXYpO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMjY3LVxcdFxcdGlmIChyYylcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMjk2LVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMjk3OmludCBkaWdpdGFsX3RnX3NlbmRfZGVwX3JlcyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMjk4LXtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzMxLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMzMyOlxcdHJjID0gZGlnaXRhbF90Z19zZW5kX2NtZChkZGV2LCB0bXBfc2tiLCAxNTAwLCBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcSxcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTMzMy1cXHRcXHRcXHRcXHQgTlVMTCk7XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTM0Ny1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTM0ODpzdGF0aWMgdm9pZCBkaWdpdGFsX3RnX3NlbmRfcHNsX3Jlc19jb21wbGV0ZShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzQ5LVxcdFxcdFxcdFxcdFxcdCAgICAgdm9pZCAqYXJnLCBzdHJ1Y3Qgc2tfYnVmZiAqcmVzcClcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzU1LVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMzU2OlxcdGRpZ2l0YWxfdGdfc2V0X3JmX3RlY2goZGRldiwgcmZfdGVjaCk7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEzNTctXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEzNTg6XFx0ZGlnaXRhbF90Z19jb25maWd1cmVfaHcoZGRldiwgTkZDX0RJR0lUQUxfQ09ORklHX1JGX1RFQ0gsIHJmX3RlY2gpO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzU5LVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMzYwOlxcdGRpZ2l0YWxfdGdfbGlzdGVuKGRkZXYsIDE1MDAsIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxLCBOVUxMKTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTM2MS1cXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzY0LVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMzY1OnN0YXRpYyBpbnQgZGlnaXRhbF90Z19zZW5kX3BzbF9yZXMoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdTggZGlkLFxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzY2LVxcdFxcdFxcdFxcdCAgIHU4IHJmX3RlY2gpXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTM4OS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTM5MDpcXHRyYyA9IGRpZ2l0YWxfdGdfc2VuZF9jbWQoZGRldiwgc2tiLCAwLCBkaWdpdGFsX3RnX3NlbmRfcHNsX3Jlc19jb21wbGV0ZSxcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTM5MS1cXHRcXHRcXHRcXHQgKHZvaWQgKikodW5zaWduZWQgbG9uZylyZl90ZWNoKTtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzk3LVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMzk4OnN0YXRpYyB2b2lkIGRpZ2l0YWxfdGdfcmVjdl9wc2xfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTM5OS1cXHRcXHRcXHRcXHQgICAgc3RydWN0IHNrX2J1ZmYgKnJlc3ApXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTQ2MC1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTQ2MTpcXHRyYyA9IGRpZ2l0YWxfdGdfc2VuZF9wc2xfcmVzKGRkZXYsIHBzbF9yZXEtXFx1MDAzZWRpZCwgcmZfdGVjaCk7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTE0NjItXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTQ2Ni1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTQ2NzpzdGF0aWMgdm9pZCBkaWdpdGFsX3RnX3NlbmRfYXRyX3Jlc19jb21wbGV0ZShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xNDY4LVxcdFxcdFxcdFxcdFxcdCAgICAgdm9pZCAqYXJnLCBzdHJ1Y3Qgc2tfYnVmZiAqcmVzcClcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xNDgzLVxcdGlmIChyZXNwLVxcdTAwM2VkYXRhW29mZnNldF0gPT0gRElHSVRBTF9DTURfUFNMX1JFUSlcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTQ4NDpcXHRcXHRkaWdpdGFsX3RnX3JlY3ZfcHNsX3JlcShkZGV2LCBhcmcsIHJlc3ApO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xNDg1LVxcdGVsc2VcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTQ4NjpcXHRcXHRkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcShkZGV2LCBhcmcsIHJlc3ApO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xNDg3LX1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTQ4OC1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTQ4OTpzdGF0aWMgaW50IGRpZ2l0YWxfdGdfc2VuZF9hdHJfcmVzKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTE0OTAtXFx0XFx0XFx0XFx0ICAgc3RydWN0IGRpZ2l0YWxfYXRyX3JlcSAqYXRyX3JlcSlcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xNTMyLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxNTMzOlxcdHJjID0gZGlnaXRhbF90Z19zZW5kX2NtZChkZGV2LCBza2IsIDk5OSxcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTUzNDpcXHRcXHRcXHRcXHQgZGlnaXRhbF90Z19zZW5kX2F0cl9yZXNfY29tcGxldGUsIE5VTEwpO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xNTM1LVxcdGlmIChyYylcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xNTQwLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxNTQxOnZvaWQgZGlnaXRhbF90Z19yZWN2X2F0cl9yZXEoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xNTQyLVxcdFxcdFxcdCAgICAgc3RydWN0IHNrX2J1ZmYgKnJlc3ApXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTU2MS1cXHRcXHRtaW5fc2l6ZSA9IERJR0lUQUxfQVRSX1JFUV9NSU5fU0laRSArIDI7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjE1NjI6XFx0XFx0ZGlnaXRhbF90Z19zZXRfcmZfdGVjaChkZGV2LCBORkNfRElHSVRBTF9SRl9URUNIXzEwNkEpO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xNTYzLVxcdH0gZWxzZSB7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTE1NjQtXFx0XFx0bWluX3NpemUgPSBESUdJVEFMX0FUUl9SRVFfTUlOX1NJWkUgKyAxO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxNTY1OlxcdFxcdGRpZ2l0YWxfdGdfc2V0X3JmX3RlY2goZGRldiwgTkZDX0RJR0lUQUxfUkZfVEVDSF8yMTJGKTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTU2Ni1cXHR9XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTYwNS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTYwNjpcXHRyYyA9IGRpZ2l0YWxfdGdfY29uZmlndXJlX2h3KGRkZXYsIE5GQ19ESUdJVEFMX0NPTkZJR19GUkFNSU5HLFxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xNjA3LVxcdFxcdFxcdFxcdCAgICAgTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNfREVQX0FDVElWQVRFRCk7XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTYxMC1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTYxMTpcXHRyYyA9IGRpZ2l0YWxfdGdfc2VuZF9hdHJfcmVzKGRkZXYsIGF0cl9yZXEpO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xNjEyLVxcdGlmIChyYylcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM9ODk1PWludCBkaWdpdGFsX2luX3NlbmRfaXNvMTU2OTNfaW52X3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB1OCByZl90ZWNoKVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy05MzQtXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzo5MzU6c3RhdGljIGludCBkaWdpdGFsX3RnX3NlbmRfc2VsX3JlcyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2KVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtOTM2LXtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtOTQ4LVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6OTQ5OlxcdHJjID0gZGlnaXRhbF90Z19jb25maWd1cmVfaHcoZGRldiwgTkZDX0RJR0lUQUxfQ09ORklHX0ZSQU1JTkcsXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy05NTAtXFx0XFx0XFx0XFx0ICAgICBORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfQU5USUNPTF9DT01QTEVURSk7XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTk1NS1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjk1NjpcXHRyYyA9IGRpZ2l0YWxfdGdfc2VuZF9jbWQoZGRldiwgc2tiLCAzMDAsIGRpZ2l0YWxfdGdfcmVjdl9hdHJfcmVxLFxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtOTU3LVxcdFxcdFxcdFxcdCBOVUxMKTtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtOTYzLVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6OTY0OnN0YXRpYyB2b2lkIGRpZ2l0YWxfdGdfcmVjdl9zZWxfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTk2NS1cXHRcXHRcXHRcXHQgICAgc3RydWN0IHNrX2J1ZmYgKnJlc3ApXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTk4NC1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjk4NTpcXHRyYyA9IGRpZ2l0YWxfdGdfc2VuZF9zZWxfcmVzKGRkZXYpO1xcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtOTg2LVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy05OTMtXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzo5OTQ6c3RhdGljIGludCBkaWdpdGFsX3RnX3NlbmRfc2RkX3JlcyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2KVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtOTk1LXtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTAxMy1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjEwMTQ6XFx0cmMgPSBkaWdpdGFsX3RnX2NvbmZpZ3VyZV9odyhkZGV2LCBORkNfRElHSVRBTF9DT05GSUdfRlJBTUlORyxcXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEwMTUtXFx0XFx0XFx0XFx0TkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX1NUQU5EQVJEX1dJVEhfQ1JDX0EpO1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMDIwLVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTAyMTpcXHRyYyA9IGRpZ2l0YWxfdGdfc2VuZF9jbWQoZGRldiwgc2tiLCAzMDAsIGRpZ2l0YWxfdGdfcmVjdl9zZWxfcmVxLFxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTAyMi1cXHRcXHRcXHRcXHQgTlVMTCk7XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEwMjgtXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMDI5OnN0YXRpYyB2b2lkIGRpZ2l0YWxfdGdfcmVjdl9zZGRfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEwMzAtXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBza19idWZmICpyZXNwKVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMDQ4LVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTA0OTpcXHRyYyA9IGRpZ2l0YWxfdGdfc2VuZF9zZGRfcmVzKGRkZXYpO1xcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTA1MC1cXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTA1Ny1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjEwNTg6c3RhdGljIGludCBkaWdpdGFsX3RnX3NlbmRfc2Vuc19yZXMoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldilcXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEwNTkte1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMDcyLVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTA3MzpcXHRyYyA9IGRpZ2l0YWxfdGdfY29uZmlndXJlX2h3KGRkZXYsIE5GQ19ESUdJVEFMX0NPTkZJR19GUkFNSU5HLFxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTA3NC1cXHRcXHRcXHRcXHQgICAgIE5GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQV9TVEFOREFSRCk7XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEwNzktXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMDgwOlxcdHJjID0gZGlnaXRhbF90Z19zZW5kX2NtZChkZGV2LCBza2IsIDMwMCwgZGlnaXRhbF90Z19yZWN2X3NkZF9yZXEsXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMDgxLVxcdFxcdFxcdFxcdCBOVUxMKTtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTA4Ny1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjEwODg6dm9pZCBkaWdpdGFsX3RnX3JlY3Zfc2Vuc19yZXEoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTA4OS1cXHRcXHRcXHQgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqcmVzcClcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTEwNy1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjExMDg6XFx0cmMgPSBkaWdpdGFsX3RnX3NlbmRfc2Vuc19yZXMoZGRldik7XFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMTA5LVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMTE2LVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTExNzpzdGF0aWMgdm9pZCBkaWdpdGFsX3RnX3JlY3ZfYXRyX29yX3NlbnNmX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTExOC1cXHRcXHR2b2lkICphcmcsIHN0cnVjdCBza19idWZmICpyZXNwKVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMTIxLVxcdFxcdFxcdChyZXNwLVxcdTAwM2VkYXRhWzFdID09IERJR0lUQUxfQ01EX1NFTlNGX1JFUSkpXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMTIyOlxcdFxcdGRpZ2l0YWxfdGdfcmVjdl9zZW5zZl9yZXEoZGRldiwgYXJnLCByZXNwKTtcXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTExMjMtXFx0ZWxzZVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTEyNDpcXHRcXHRkaWdpdGFsX3RnX3JlY3ZfYXRyX3JlcShkZGV2LCBhcmcsIHJlc3ApO1xcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTEyNS1cXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTEyOC1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjExMjk6c3RhdGljIGludCBkaWdpdGFsX3RnX3NlbmRfc2Vuc2ZfcmVzKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMTMwLVxcdFxcdFxcdCAgICAgIHN0cnVjdCBkaWdpdGFsX3NlbnNmX3JlcSAqc2Vuc2ZfcmVxKVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMTcyLVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTE3MzpcXHRyYyA9IGRpZ2l0YWxfdGdfc2VuZF9jbWQoZGRldiwgc2tiLCAzMDAsXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMTc0OlxcdFxcdFxcdFxcdCBkaWdpdGFsX3RnX3JlY3ZfYXRyX29yX3NlbnNmX3JlcSwgTlVMTCk7XFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMTc1LVxcdGlmIChyYylcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTE4MC1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjExODE6dm9pZCBkaWdpdGFsX3RnX3JlY3Zfc2Vuc2ZfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTExODItXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBza19idWZmICpyZXNwKVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjEzLVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTIxNDpcXHRyYyA9IGRpZ2l0YWxfdGdfc2VuZF9zZW5zZl9yZXMoZGRldiwgc2Vuc2ZfcmVxKTtcXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyMTUtXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyMjItXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMjIzOnN0YXRpYyBpbnQgZGlnaXRhbF90Z19jb25maWdfbmZjYShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2KVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTIyNC17XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyMjYtXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMjI3OlxcdHJjID0gZGlnaXRhbF90Z19jb25maWd1cmVfaHcoZGRldiwgTkZDX0RJR0lUQUxfQ09ORklHX1JGX1RFQ0gsXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjI4LVxcdFxcdFxcdFxcdCAgICAgTkZDX0RJR0lUQUxfUkZfVEVDSF8xMDZBKTtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTIzMS1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjEyMzI6XFx0cmV0dXJuIGRpZ2l0YWxfdGdfY29uZmlndXJlX2h3KGRkZXYsIE5GQ19ESUdJVEFMX0NPTkZJR19GUkFNSU5HLFxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTIzMy1cXHRcXHRcXHRcXHQgICAgICAgTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX05GQ19ERVApO1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjM1LVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTIzNjppbnQgZGlnaXRhbF90Z19saXN0ZW5fbmZjYShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB1OCByZl90ZWNoKVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTIzNy17XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyMzktXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMjQwOlxcdHJjID0gZGlnaXRhbF90Z19jb25maWdfbmZjYShkZGV2KTtcXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyNDEtXFx0aWYgKHJjKVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjQzLVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTI0NDpcXHRyZXR1cm4gZGlnaXRhbF90Z19saXN0ZW4oZGRldiwgMzAwLCBkaWdpdGFsX3RnX3JlY3Zfc2Vuc19yZXEsIE5VTEwpO1xcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTI0NS19XFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjQ2LVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTI0NzpzdGF0aWMgaW50IGRpZ2l0YWxfdGdfY29uZmlnX25mY2Yoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdTggcmZfdGVjaClcXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyNDgte1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjUwLVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTI1MTpcXHRyYyA9IGRpZ2l0YWxfdGdfY29uZmlndXJlX2h3KGRkZXYsIE5GQ19ESUdJVEFMX0NPTkZJR19SRl9URUNILCByZl90ZWNoKTtcXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyNTItXFx0aWYgKHJjKVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjU0LVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTI1NTpcXHRyZXR1cm4gZGlnaXRhbF90Z19jb25maWd1cmVfaHcoZGRldiwgTkZDX0RJR0lUQUxfQ09ORklHX0ZSQU1JTkcsXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjU2LVxcdFxcdFxcdFxcdCAgICAgICBORkNfRElHSVRBTF9GUkFNSU5HX05GQ0ZfTkZDX0RFUCk7XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyNTgtXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMjU5OmludCBkaWdpdGFsX3RnX2xpc3Rlbl9uZmNmKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHU4IHJmX3RlY2gpXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjYwLXtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTI2Mi1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjEyNjM6XFx0cmMgPSBkaWdpdGFsX3RnX2NvbmZpZ19uZmNmKGRkZXYsIHJmX3RlY2gpO1xcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTI2NC1cXHRpZiAocmMpXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyNjYtXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMjY3OlxcdHJldHVybiBkaWdpdGFsX3RnX2xpc3RlbihkZGV2LCAzMDAsIGRpZ2l0YWxfdGdfcmVjdl9zZW5zZl9yZXEsIE5VTEwpO1xcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTI2OC19XFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjY5LVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTI3MDp2b2lkIGRpZ2l0YWxfdGdfcmVjdl9tZF9yZXEoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTI3MS1cXHRcXHRcXHQgICAgc3RydWN0IHNrX2J1ZmYgKnJlc3ApXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyODYtXFx0Y2FzZSBORkNfRElHSVRBTF9SRl9URUNIXzEwNkE6XFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMjg3OlxcdFxcdHJjID0gZGlnaXRhbF90Z19jb25maWdfbmZjYShkZGV2KTtcXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyODgtXFx0XFx0aWYgKHJjKVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTI4OS1cXHRcXHRcXHRnb3RvIGV4aXRfZnJlZV9za2I7XFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMjkwOlxcdFxcdGRpZ2l0YWxfdGdfcmVjdl9zZW5zX3JlcShkZGV2LCBhcmcsIHJlc3ApO1xcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTI5MS1cXHRcXHRicmVhaztcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTI5My1cXHRjYXNlIE5GQ19ESUdJVEFMX1JGX1RFQ0hfNDI0RjpcXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjEyOTQ6XFx0XFx0cmMgPSBkaWdpdGFsX3RnX2NvbmZpZ19uZmNmKGRkZXYsIHJmX3RlY2gpO1xcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTI5NS1cXHRcXHRpZiAocmMpXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjk2LVxcdFxcdFxcdGdvdG8gZXhpdF9mcmVlX3NrYjtcXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjEyOTc6XFx0XFx0ZGlnaXRhbF90Z19yZWN2X3NlbnNmX3JlcShkZGV2LCBhcmcsIHJlc3ApO1xcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTI5OC1cXHRcXHRicmVhaztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTJUMTM6MjQ6NTcuODc4Njk5MjMxWiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjQ2NTk0Mzc0NDg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIE5GQyBEaWdpdGFsIFRhcmdldCBNb2RlIEZ1bmN0aW9uYWxpdHkgZm9yIEZ1enppbmcqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gc3VtbWFyaXplIHRoaXMgcGF0Y2gncyBpbXBsaWNhdGlvbnMgZm9yIGZ1enppbmcsIGZvY3VzaW5nIG9uIGhvdyB0aGUgY29kZSBtb2RpZmljYXRpb24gaW1wYWN0cyByZWFjaGFibGUgYW5kIHRlc3RhYmxlIGNvZGUgcGF0aHMuIEZpcnN0LCBJIHNlZSB0aGF0IGBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcWAgaXMgdGhlIGtleSBmdW5jdGlvbiBoZXJlLiBJdCdzICpzdGF0aWMgdm9pZCogaW4gYG5ldC9uZmMvZGlnaXRhbF9kZXAuY2AsIHdoaWNoIGluaXRpYWxseSBtYWRlIG1lIHBhdXNlIGJlY2F1c2Ugc3RhdGljIGZ1bmN0aW9ucyBjYW4gc29tZXRpbWVzIGJlIHRyaWNreSBmb3Igc3ltYm9sIGNvdmVyYWdlLCBidXQgaW4gdGhpcyBjYXNlLCBpdCAqaXMqIGEgc3RhdGljIGZ1bmN0aW9uIHdpdGhpbiBhIGAuY2AgZmlsZSwgKmFuZCogaXRzIGFkZHJlc3MgaXMgdGFrZW4sIHNwZWNpZmljYWxseSBhcyBhIGNhbGxiYWNrOiBgZGlnaXRhbF90Z19zZW5kX2NtZCguLi4sIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxLCAuLi4pYC4gVGhpcyBpcyBpbXBvcnRhbnQuIEJlY2F1c2UgdGhlIGFkZHJlc3MgaXMgdGFrZW4sIHRoZSBjb21waWxlciAqbXVzdCogZ2VuZXJhdGUgYSBkaXN0aW5jdCBzeW1ib2wgZm9yIHRoaXMgZnVuY3Rpb24sIGVuc3VyaW5nIGl0J3MgYWRkcmVzc2FibGUuXG5cbkxvb2tpbmcgZGVlcGVyLCBJIGlkZW50aWZpZWQgb3RoZXIgcmVsYXRlZCBmdW5jdGlvbnM6IGBkaWdpdGFsX3RnX3NlbmRfZGVwX3Jlc2AgKGV4cG9ydGVkKSBhbmQgYGRpZ2l0YWxfdGdfcmVjdl9hdHJfcmVxYCAobm9uLXN0YXRpYykgYXJlIGFsc28gcmVsZXZhbnQuIGBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcWAgaXMgdGhlIGRpcmVjdCB0YXJnZXQgb2YgdGhlIHBhdGNoLCBhbmQgdGhvc2UgYXJlIGVudHJ5IHBvaW50cyB0aGF0IGxlYWQgdG8gaXQuXG5cbkkgdGhlbiBjb25zaWRlcmVkIHJlYWNoYWJpbGl0eS4gQ3J1Y2lhbGx5LCB0aGlzIGlzbid0IGp1c3QgdGhlb3JldGljYWwgY29kZS4gVGhlIE5GQyBzdGFjayBpcyBhY2Nlc3NpYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gYG5mY3NpbWAgKHRoZSBzb2Z0d2FyZSBzaW11bGF0b3IgZHJpdmVyKSBwcm92aWRlcyBhIHZpcnR1YWwgTkZDIGRldmljZSB0aGF0IGNhbiByZWFjaCB0aGlzIGNvZGUsIGFzIGRvZXMgYHBvcnQxMDBgIChlbXVsYXRlZCBVU0IgZGV2aWNlKSB2aWEgc3l6a2FsbGVyLCB3aGljaCBpcyBzdGFuZGFyZCBmb3IgZnV6emluZyByYXcgVVNCIGdhZGdldCB0cmFmZmljLiBUaGlzIGNvZGUgYWxzbyB0b3VjaGVzIHRoZSBuZXR3b3JrLCBkcml2ZXIgY29kZSwgYW5kIHNvIGlzIGV4ZWN1dGFibGUuIEl0J3Mgbm90IHVucmVhY2hhYmxlIGhhcmR3YXJlIG9yIGEgdGVhcmRvd24gY2FsbGJhY2suIFNvLCB5ZXMsIHRoZSBjcml0ZXJpYSBmb3IgXCJXb3J0aEZ1enppbmdcIiBhcmUgbWV0LlxuXG5SZWdhcmRpbmcgYnVpbGQgY29uZmlndXJhdGlvbnMsIHRvIGJ1aWxkIGFuZCBydW4gdGhpcyBjb2RlLCBJJ2QgbmVlZDogYE5GQ2AsIGBORkNfRElHSVRBTGAsIGBORkNfU0lNYCwgYW5kIGBORkNfUE9SVDEwMGAuIEFuZCBiZWNhdXNlIExMQ1AgaXMgY29tcGlsZWQgaW50byBgbmZjLm9gIGlmIENPTkZJR19ORkMgaXMgZW5hYmxlZCwgaXQgc2hvdWxkIGFsc28gYmUgZnV6emFibGUsIGdpdmVuIGl0cyByZWxhdGlvbiB0byBORkMuXG5cbk5vdywgYXMgZm9yIHdoYXQgaXMgYmVpbmcgYWx0ZXJlZCwgaXQncyBhIGNyaXRpY2FsIGNoZWNrIGluIHRoZSBERVAgcmVxdWVzdCBoYW5kbGVyIHdpdGhpbiBgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXFgLiBUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyByZWFkIHdoZW4gcHJvY2Vzc2luZyBERVAgcmVxdWVzdHMgd2l0aCBhIERJRCAoRGV2aWNlIElkZW50aWZpZXIpLiBCZWZvcmUgdGhlIHBhdGNoLCBhIGJ1ZmZlciBhY2Nlc3Mgd2FzIGRvbmUgd2l0aG91dCBwcm9wZXIgbGVuZ3RoIGNoZWNraW5nLiBUaGUgcGF0Y2ggYWRkcyBgcmVzcC1cdTAwM2VsZW4gXHUwMDNjIHNpemUgKyAxYCwgdmFsaWRhdGVzIGBkZGV2LVx1MDAzZWRpZGAsIGFuZCBpbmRleGVzIHdpdGggYHJlc3AtXHUwMDNlZGF0YVtzaXplXWAgdG8gZW5zdXJlIHRoYXQgdGhlIHJlYWQgc3RheXMgd2l0aGluIGJ1ZmZlciBib3VuZHMuIEZ1enppbmcgdGhpcyB3aWxsIGJlIGNydWNpYWwgdG8gdmVyaWZ5IGNvcnJlY3QgcGFyc2luZyBvZiBERVAgZnJhbWVzLCBlc3BlY2lhbGx5IHRob3NlIHdpdGggRElEIGFuZCBlZGdlLWNhc2UgbGVuZ3RocywgZW5zdXJpbmcgdGhhdCB0aGUgcGF0Y2ggcHJldmVudHMgcmVncmVzc2lvbnMgYW5kIHBvdGVudGlhbCBzdGF0ZSBjb3JydXB0aW9uIGR1ZSB0byBvdXQtb2YtYm91bmRzIHJlYWRzLiBUaGUgYWRkZWQgY2hlY2tzIGFyZSBhIHBlcmZlY3Qgb3Bwb3J0dW5pdHkgZm9yIGZ1enppbmcuXG5cbk15IHByaW1hcnkgZm9jdXMgc3ltYm9scyBmb3IgZnV6emluZyB3aWxsIGJlOiBgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXFgLCB3aGljaCBpcyAqdGhlKiBtb2RpZmllZCBmdW5jdGlvbi4gQnV0IGFsc28gaW5jbHVkaW5nIGBkaWdpdGFsX3RnX3NlbmRfZGVwX3Jlc2AgYW5kIGBkaWdpdGFsX3RnX3JlY3ZfYXRyX3JlcWAgaXMgaW1wb3J0YW50IHNpbmNlIHRoZXkgcHJvdmlkZSBlbnRyeXBvaW50cyBhbmQgcmVsYXRlZCBmdW5jdGlvbnMuXG5cbkZpbmFsbHksIEkndmUgY29uZmlybWVkIHRoYXQgdGhlICdXb3J0aEZ1enppbmcnIGRlY2lzaW9uIGlzIHNvdW5kLCB0aGUgZXhwbGFuYXRpb24gaXMgY29uY2lzZSwgdGhlIGZvY3VzIHN5bWJvbHMgYXJlIHNwZWNpZmljLCBhbmQgdGhlIGNvbmZpZ3VyYXRpb25zIGFyZSBjbGVhcmx5IGxpc3RlZC4gSSBjYW4gbm93IHByb2NlZWQgdG8gYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDc4NjIsIk91dHB1dFRva2VucyI6MTk0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjA1NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMlQxMzoyNTo0NC40NzMwNzY4OVoiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc3NDUzMzU3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORkNcIixcbiAgICBcIk5GQ19ESUdJVEFMXCIsXG4gICAgXCJORkNfU0lNXCIsXG4gICAgXCJORkNfUE9SVDEwMFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxXCIsXG4gICAgXCJkaWdpdGFsX3RnX3NlbmRfZGVwX3Jlc1wiLFxuICAgIFwiZGlnaXRhbF90Z19yZWN2X2F0cl9yZXFcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBpbnB1dCB2YWxpZGF0aW9uIGluIHRoZSBORkMgZGlnaXRhbCB0YXJnZXQgbW9kZSBERVAgcmVxdWVzdCBoYW5kbGluZyAoZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEpIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyBhY2Nlc3Mgd2hlbiB0aGUgRElEIGJpdCBpcyBzZXQgYnkgdmVyaWZ5aW5nIGZyYW1lIGxlbmd0aCBhZ2FpbnN0IGV4cGVjdGVkIHNpemUgYW5kIGNvcnJlY3RseSBpbmRleGluZyByZXNwLVxcdTAwM2VkYXRhLiBUaGUgY29kZSBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSB2aXJ0dWFsIE5GQyBkcml2ZXJzIChlLmcuIG5mY3NpbSkgYW5kIGVtdWxhdGVkIFVTQiBORkMgZG9uZ2xlcyAocG9ydDEwMCksIG1ha2luZyBpdCB3b3J0aCBmdXp6aW5nIGZvciBib3VuZGFyeSBpc3N1ZXMgYW5kIHN0YXRlIHRyYW5zaXRpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GQ1wiLFxuICAgIFwiTkZDX0RJR0lUQUxcIixcbiAgICBcIk5GQ19TSU1cIixcbiAgICBcIk5GQ19QT1JUMTAwXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZGlnaXRhbF90Z19yZWN2X2RlcF9yZXFcIixcbiAgICBcImRpZ2l0YWxfdGdfc2VuZF9kZXBfcmVzXCIsXG4gICAgXCJkaWdpdGFsX3RnX3JlY3ZfYXRyX3JlcVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGlucHV0IHZhbGlkYXRpb24gaW4gdGhlIE5GQyBkaWdpdGFsIHRhcmdldCBtb2RlIERFUCByZXF1ZXN0IGhhbmRsaW5nIChkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcSkgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIGFjY2VzcyB3aGVuIHRoZSBESUQgYml0IGlzIHNldCBieSB2ZXJpZnlpbmcgZnJhbWUgbGVuZ3RoIGFnYWluc3QgZXhwZWN0ZWQgc2l6ZSBhbmQgY29ycmVjdGx5IGluZGV4aW5nIHJlc3AtXFx1MDAzZWRhdGEuIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIHZpcnR1YWwgTkZDIGRyaXZlcnMgKGUuZy4gbmZjc2ltKSBhbmQgZW11bGF0ZWQgVVNCIE5GQyBkb25nbGVzIChwb3J0MTAwKSwgbWFraW5nIGl0IHdvcnRoIGZ1enppbmcgZm9yIGJvdW5kYXJ5IGlzc3VlcyBhbmQgc3RhdGUgdHJhbnNpdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEyVDEzOjI1OjQ0LjU1MDUzODM3N1oiLCJTZXEiOjMzLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDI2MjYzNzM1MzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMlQxMzoyNTo0NC41NTA5NzY1NTdaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo0MjYyNTkyOTg2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyByZWFkIGluIGBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcSgpYCB3aGVyZSBgcmVzcC1cXHUwMDNlZGF0YVszXWAgd2FzIHJlYWQgd2l0aG91dCBmaXJzdCB2ZXJpZnlpbmcgdGhhdCBgcmVzcC1cXHUwMDNlbGVuYCB3YXMgYXQgbGVhc3QgYHNpemUgKyAxYCAoNCBieXRlcykuIFxcblxcblRoaXMgaXMgYSBib3VuZHMtY2hlY2tpbmcgaXNzdWU6IGFjY2Vzc2luZyBieXRlcyBiZXlvbmQgYHJlc3AtXFx1MDAzZWxlbmAgaXMgYW4gb3V0LW9mLWJvdW5kcyBhY2Nlc3MgZGlyZWN0bHkgZGV0ZWN0YWJsZSBieSBLQVNBTiAoZS5nLiwgc2xhYi1vdXQtb2YtYm91bmRzIG9uIHNrYiBkYXRhKS4gVGhlIGNoYW5nZSBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHVuaW5pdGlhbGl6ZWQgc3RhY2sgb3IgaGVhcCB2YXJpYWJsZXMsIGRvZXMgbm90IGV4cG9zZSB1bmluaXRpYWxpemVkIHBhZGRpbmcgb3Igc3RydWN0IGZpZWxkcyB0byB1c2VyIHNwYWNlLCBhbmQgZG9lcyBub3QgYWx0ZXIgY29udHJvbCBmbG93IGJhc2VkIG9uIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBCZWNhdXNlIHN0YW5kYXJkIEtBU0FOIGZ1bGx5IGNvdmVycyB0aGlzIGNsYXNzIG9mIGJ1Z3MgYW5kIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIGFyZSBpbnRyb2R1Y2VkLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAxMDIwZjI2OWU4NTU2NjcxNDBiYzA0ZjgzYTk2ODQ5OTA5YWY3NWRkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBTZXAgMTIgMTM6MjM6MzAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbmZjL2RpZ2l0YWxfZGVwLmMgYi9uZXQvbmZjL2RpZ2l0YWxfZGVwLmNcbmluZGV4IDM5ODJmYTA4NDczN2YuLmFlNTQwN2ZjYTEyZDQgMTAwNjQ0XG4tLS0gYS9uZXQvbmZjL2RpZ2l0YWxfZGVwLmNcbisrKyBiL25ldC9uZmMvZGlnaXRhbF9kZXAuY1xuQEAgLTExMTcsMTIgKzExMTcsMTIgQEAgc3RhdGljIHZvaWQgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxuIFx0cGZiID0gZGVwX3JlcS1cdTAwM2VwZmI7XG4gXG4gXHRpZiAoRElHSVRBTF9ORkNfREVQX0RJRF9CSVRfU0VUKHBmYikpIHtcbi1cdFx0aWYgKGRkZXYtXHUwMDNlZGlkIFx1MDAyNlx1MDAyNiAoZGRldi1cdTAwM2VkaWQgPT0gcmVzcC1cdTAwM2VkYXRhWzNdKSkge1xuLVx0XHRcdHNpemUrKztcbi1cdFx0fSBlbHNlIHtcbitcdFx0aWYgKHJlc3AtXHUwMDNlbGVuIFx1MDAzYyBzaXplICsgMSB8fCAhZGRldi1cdTAwM2VkaWQgfHxcbitcdFx0ICAgIGRkZXYtXHUwMDNlZGlkICE9IHJlc3AtXHUwMDNlZGF0YVtzaXplXSkge1xuIFx0XHRcdHJjID0gLUVJTztcbiBcdFx0XHRnb3RvIGV4aXQ7XG4gXHRcdH1cbitcdFx0c2l6ZSsrO1xuIFx0fSBlbHNlIGlmIChkZGV2LVx1MDAzZWRpZCkge1xuIFx0XHRyYyA9IC1FSU87XG4gXHRcdGdvdG8gZXhpdDtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEyVDEzOjI1OjQ0LjU1MDk3NzY2N1oiLCJTZXEiOjM1LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoxMTM0NjY3NTE1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE5GQyBEaWdpdGFsIERFUCBDb2RlIGZvciBGdXp6aW5nIFN0cmF0ZWd5KipcblxuT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHJpZ2h0IGZ1enppbmcgYXBwcm9hY2ggZm9yIHRoaXMgcGF0Y2ggdG8gYG5ldC9uZmMvZGlnaXRhbF9kZXAuY2AuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBhc3Nlc3Mgd2hldGhlciBJIG5lZWQgdGhlIGhlYXZpZXIgaGFtbWVyIG9mIEtNU0FOIG9yIGlmIHN0YW5kYXJkIEtBU0FOIHdpbGwgZG8gdGhlIGpvYi4gVGhpcyBzZWVtcyBsaWtlIGEgc3RyYWlnaHRmb3J3YXJkIGFuYWx5c2lzLCBhIGRlLWZyYW1pbmcgdGFzayByZWFsbHksIGp1c3QgZGV0ZXJtaW5pbmcgdGhlIGFwcHJvcHJpYXRlIHNhbml0aXplciBjb25maWd1cmF0aW9uLiBObyByZWQgZmxhZ3MgaGVyZSDigJMgSSdtIG5vdCBkZWFsaW5nIHdpdGggbWFsd2FyZSBnZW5lcmF0aW9uIG9yIGV4cGxvaXQgYW5hbHlzaXMsIHB1cmVseSBjb2RlIHJldmlldy4gVGhpcyBpcyBhIGJlbmlnbiwgZGVmZW5zaXZlIFFBIHRhc2suIEdvb2QsIHNhZmUgdG8gcHJvY2VlZC5cblxuRmlyc3Qgc3RlcCBpcyB0byBkaWcgaW50byB0aGUgY29kZSBpdHNlbGYuIEknbGwgbmVlZCB0byBpbnNwZWN0IGBuZXQvbmZjL2RpZ2l0YWxfZGVwLmNgIGRpcmVjdGx5LCBwcm9iYWJseSB1c2luZyBgcmVhZC1maWxlYCBvciBgZ3JlcHBlcmAgdG8gZ2V0IGF0IGBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcWAuIEkgbmVlZCBhIGNsZWFyIHVuZGVyc3RhbmRpbmcgb2Ygd2hhdCB0aGF0IGZ1bmN0aW9uIGRvZXMgdG8gaW5mb3JtIG15IGRlY2lzaW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTcxLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTg0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTJUMTM6MjU6NTUuODk3NjU2NzYxWiIsIlNlcSI6MzYsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMDIzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbmZjL2RpZ2l0YWxfZGVwLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTEwMCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTEwMDpcXHRcXHRcXHRnb3RvIGV4aXQ7XFxuMTEwMTpcXHRcXHR9XFxuMTEwMjpcXHRcXG4xMTAzOlxcdFxcdGlmIChyZXNwLVxcdTAwM2VsZW4gXFx1MDAzZSBkZGV2LVxcdTAwM2Vsb2NhbF9wYXlsb2FkX21heCkge1xcbjExMDQ6XFx0XFx0XFx0cmMgPSAtRU1TR1NJWkU7XFxuMTEwNTpcXHRcXHRcXHRnb3RvIGV4aXQ7XFxuMTEwNjpcXHRcXHR9XFxuMTEwNzpcXHRcXG4xMTA4OlxcdFxcdHNpemUgPSBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpO1xcbjExMDk6XFx0XFx0ZGVwX3JlcSA9IChzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqKXJlc3AtXFx1MDAzZWRhdGE7XFxuMTExMDpcXHRcXG4xMTExOlxcdFxcdGlmIChyZXNwLVxcdTAwM2VsZW4gXFx1MDAzYyBzaXplIHx8IGRlcF9yZXEtXFx1MDAzZWRpciAhPSBESUdJVEFMX05GQ19ERVBfRlJBTUVfRElSX09VVCB8fFxcbjExMTI6XFx0XFx0ICAgIGRlcF9yZXEtXFx1MDAzZWNtZCAhPSBESUdJVEFMX0NNRF9ERVBfUkVRKSB7XFxuMTExMzpcXHRcXHRcXHRyYyA9IC1FSU87XFxuMTExNDpcXHRcXHRcXHRnb3RvIGV4aXQ7XFxuMTExNTpcXHRcXHR9XFxuMTExNjpcXHRcXG4xMTE3OlxcdFxcdHBmYiA9IGRlcF9yZXEtXFx1MDAzZXBmYjtcXG4xMTE4OlxcdFxcbjExMTk6XFx0XFx0aWYgKERJR0lUQUxfTkZDX0RFUF9ESURfQklUX1NFVChwZmIpKSB7XFxuMTEyMDpcXHRcXHRcXHRpZiAocmVzcC1cXHUwMDNlbGVuIFxcdTAwM2Mgc2l6ZSArIDEgfHwgIWRkZXYtXFx1MDAzZWRpZCB8fFxcbjExMjE6XFx0XFx0XFx0ICAgIGRkZXYtXFx1MDAzZWRpZCAhPSByZXNwLVxcdTAwM2VkYXRhW3NpemVdKSB7XFxuMTEyMjpcXHRcXHRcXHRcXHRyYyA9IC1FSU87XFxuMTEyMzpcXHRcXHRcXHRcXHRnb3RvIGV4aXQ7XFxuMTEyNDpcXHRcXHRcXHR9XFxuMTEyNTpcXHRcXHRcXHRzaXplKys7XFxuMTEyNjpcXHRcXHR9IGVsc2UgaWYgKGRkZXYtXFx1MDAzZWRpZCkge1xcbjExMjc6XFx0XFx0XFx0cmMgPSAtRUlPO1xcbjExMjg6XFx0XFx0XFx0Z290byBleGl0O1xcbjExMjk6XFx0XFx0fVxcbjExMzA6XFx0XFxuMTEzMTpcXHRcXHRpZiAoRElHSVRBTF9ORkNfREVQX05BRF9CSVRfU0VUKHBmYikpIHtcXG4xMTMyOlxcdFxcdFxcdHJjID0gLUVJTztcXG4xMTMzOlxcdFxcdFxcdGdvdG8gZXhpdDtcXG4xMTM0OlxcdFxcdH1cXG4xMTM1OlxcdFxcbjExMzY6XFx0XFx0aWYgKHNpemUgXFx1MDAzZSByZXNwLVxcdTAwM2VsZW4pIHtcXG4xMTM3OlxcdFxcdFxcdHJjID0gLUVJTztcXG4xMTM4OlxcdFxcdFxcdGdvdG8gZXhpdDtcXG4xMTM5OlxcdFxcdH1cXG4xMTQwOlxcdFxcbjExNDE6XFx0XFx0c2tiX3B1bGwocmVzcCwgc2l6ZSk7XFxuMTE0MjpcXHRcXG4xMTQzOlxcdFxcdHN3aXRjaCAoRElHSVRBTF9ORkNfREVQX1BGQl9UWVBFKHBmYikpIHtcXG4xMTQ0OlxcdFxcdGNhc2UgRElHSVRBTF9ORkNfREVQX1BGQl9JX1BEVTpcXG4xMTQ1OlxcdFxcdFxcdHByX2RlYnVnKFxcXCJESUdJVEFMX05GQ19ERVBfUEZCX0lfUERVXFxcXG5cXFwiKTtcXG4xMTQ2OlxcdFxcbjExNDc6XFx0XFx0XFx0aWYgKGRkZXYtXFx1MDAzZWF0bl9jb3VudCkge1xcbjExNDg6XFx0XFx0XFx0XFx0LyogVGhlIHRhcmdldCBoYXMgcmVjZWl2ZWQgKGFuZCByZXBsaWVkIHRvKSBhdCBsZWFzdCBvbmVcXG4xMTQ5OlxcdFxcdFxcdFxcdCAqIEFUTiBERVBfUkVRLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMlQxMzoyNTo1NS44OTc3NjAzMTFaIiwiU2VxIjozNywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6NDY3NDE2MjU2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBORkMgRHJpdmVyIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSdtIGxvb2tpbmcgYXQgdGhpcyBgZGlmZmAgcmVsYXRlZCB0byB0aGUgYGRpZ2l0YWxfZGVwLmNgIGZpbGUuIFJpZ2h0IGF3YXksIEkgc2VlIGEgcG90ZW50aWFsIGlzc3VlOiBhbiBvdXQtb2YtYm91bmRzIHJlYWQuIFRoZSBvcmlnaW5hbCBjb2RlIHdhcyBhY2Nlc3NpbmcgYHJlc3AtXHUwMDNlZGF0YVszXWAgd2l0aG91dCBwcm9wZXJseSBjaGVja2luZyBpZiBgcmVzcC1cdTAwM2VsZW5gIHdhcyBsYXJnZSBlbm91Z2guIEVzc2VudGlhbGx5LCB0aGUgY29kZSB3YXMgdnVsbmVyYWJsZSB0byBhIHJlYWQgcGFzdCB0aGUgZW5kIG9mIHRoZSBgcmVzcGAgZGF0YSBidWZmZXIuIEl0J3Mgc3VidGxlLCBidXQgYWNjZXNzaW5nIGByZXNwLVx1MDAzZWRhdGFbM11gIHdoZW4gdGhlIGJ1ZmZlciBsZW5ndGggKGByZXNwLVx1MDAzZWxlbmApIGlzIG9ubHkgMyBpcyBhIHJlY2lwZSBmb3IgZGlzYXN0ZXIuIEl0J3MgYSBjbGFzc2ljIG9mZi1ieS1vbmUgZXJyb3Igb3Igc2ltaWxhci5cblxuVGhlIGZpeCBpcyBzdHJhaWdodGZvcndhcmQuIFRoZXkndmUgYWRkZWQgYSBib3VuZHMgY2hlY2s6IGByZXNwLVx1MDAzZWxlbiBcdTAwM2Mgc2l6ZSArIDFgLiBUaGlzIGltbWVkaWF0ZWx5IGZsYWdzIHRoZSBpc3N1ZSBpZiB0aGUgYnVmZmVyIGlzbid0IGxhcmdlIGVub3VnaCB0byBhY2NvbW1vZGF0ZSB0aGUgYWNjZXNzLiBUaGV5J3ZlIGFsc28gY2xlYW5lZCB1cCB0aGUgY29uZGl0aW9uYWwsIGV4cGxpY2l0bHkgY2hlY2tpbmcgZm9yIGAhZGRldi1cdTAwM2VkaWRgIG9yIGEgbWlzbWF0Y2ggaW4gdGhlIERJRCB2YWx1ZS4gVGhleSBhcmUgYWxzbyB1c2luZyBgcmVzcC1cdTAwM2VkYXRhW3NpemVdYCBpbnN0ZWFkIG9mIGByZXNwLVx1MDAzZWRhdGFbM11gIG5vdywgd2hpY2ggbWFrZXMgdGhlIGxvZ2ljIG1vcmUgcm9idXN0LiBUaGlzIGlzIGEgbXVjaCBiZXR0ZXIgYXBwcm9hY2guXG5cbk5vdywgbXkgbWluZCBpcyBhbHJlYWR5IHRoaW5raW5nIGFib3V0IHdoZXRoZXIgdGhpcyBraW5kIG9mIGJ1ZyB3b3VsZCBoYXZlIGJlZW4gZmxhZ2dlZCBieSBhIG1lbW9yeSBzYW5pdGl6ZXIuIEdpdmVuIHRoYXQgaXQncyBhbiBvdXQtb2YtYm91bmRzIHJlYWQsIG15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIEtBU0FOLiBJdCdzIGRlc2lnbmVkIHRvIGNhdGNoIHRoZXNlIGtpbmRzIG9mIG1lbW9yeSBhY2Nlc3MgdmlvbGF0aW9ucy4gSSBuZWVkIHRvIGNvbmZpcm0gdGhlIGNvbmRpdGlvbnMgYXJvdW5kIGByZXNwYCwgYnV0IEkgc3Ryb25nbHkgc3VzcGVjdCB0aGF0IGlmIHRoaXMgYnVnIHdhcyB0cmlnZ2VyZWQgdW5kZXIgS0FTQU4sIGl0IHdvdWxkIGhhdmUgYmVlbiBmbGFnZ2VkIGltbWVkaWF0ZWx5LlxuXG5MZXQgbWUgcXVpY2tseSByZXZpZXcgdGhlIGNhbGxlciB0byBzZWUgd2hlcmUgYHJlc3BgIGNvbWVzIGZyb20gdG8gc29saWRpZnkgbXkgY29uY2x1c2lvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzMTAsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NDAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMlQxMzoyNjowMC41NzE5MjU2NDRaIiwiU2VxIjozOCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwNTc0MzAyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZmMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZmMvZGlnaXRhbF9kZXAuYz0xMDY9c3RhdGljIHZvaWQgZGlnaXRhbF9pbl9yZWN2X2RlcF9yZXMoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDctXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBza19idWZmICpyZXNwKTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTA4OnN0YXRpYyB2b2lkIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTA5LVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqcmVzcCk7XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9OTc4PXN0YXRpYyBpbnQgZGlnaXRhbF90Z19zZW5kX2FjayhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwMTItXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwMTM6XFx0cmMgPSBkaWdpdGFsX3RnX3NlbmRfY21kKGRkZXYsIHNrYiwgMTUwMCwgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEsXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwMTQtXFx0XFx0XFx0XFx0IGRhdGFfZXhjaCk7XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9MTAyND1zdGF0aWMgaW50IGRpZ2l0YWxfdGdfc2VuZF9hdG4oc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldilcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDUxLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDUyOlxcdHJjID0gZGlnaXRhbF90Z19zZW5kX2NtZChkZGV2LCBza2IsIDE1MDAsIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxLFxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDUzLVxcdFxcdFxcdFxcdCBOVUxMKTtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz0xMDYwPXN0YXRpYyBpbnQgZGlnaXRhbF90Z19zZW5kX3NhdmVkX3NrYihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2KVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwNjktXFx0cmMgPSBkaWdpdGFsX3RnX3NlbmRfY21kKGRkZXYsIGRkZXYtXFx1MDAzZXNhdmVkX3NrYiwgMTUwMCxcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTA3MDpcXHRcXHRcXHRcXHQgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEsIE5VTEwpO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDcxLVxcdGlmIChyYylcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDc2LVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDc3OnN0YXRpYyB2b2lkIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTA3OC1cXHRcXHRcXHRcXHQgICAgc3RydWN0IHNrX2J1ZmYgKnJlc3ApXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9MTI5Nz1pbnQgZGlnaXRhbF90Z19zZW5kX2RlcF9yZXMoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzMxLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMzMyOlxcdHJjID0gZGlnaXRhbF90Z19zZW5kX2NtZChkZGV2LCB0bXBfc2tiLCAxNTAwLCBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcSxcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTMzMy1cXHRcXHRcXHRcXHQgTlVMTCk7XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9MTM0OD1zdGF0aWMgdm9pZCBkaWdpdGFsX3RnX3NlbmRfcHNsX3Jlc19jb21wbGV0ZShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEzNTktXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEzNjA6XFx0ZGlnaXRhbF90Z19saXN0ZW4oZGRldiwgMTUwMCwgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEsIE5VTEwpO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzYxLVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTE0Njc9c3RhdGljIHZvaWQgZGlnaXRhbF90Z19zZW5kX2F0cl9yZXNfY29tcGxldGUoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xNDg1LVxcdGVsc2VcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTQ4NjpcXHRcXHRkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcShkZGV2LCBhcmcsIHJlc3ApO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xNDg3LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTJUMTM6MjY6MDAuNjIyNTAzNDM2WiIsIlNlcSI6MzksIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjI5NDcxODE2NTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhbmFseXNpcyBvZiB0aGUgcHJvdmlkZWQgY29kZSBzbmlwcGV0LCBmb2N1c2luZyBvbiB0aGUgYGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxYCBmdW5jdGlvbjpcblxuKipBbmFseXppbmcgdGhlIERhdGEgVHJhbnNmZXIgaW4gYGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxYCoqXG5cbk9rYXksIHNvIHdlJ3JlIGxvb2tpbmcgYXQgYGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxYCwgc3BlY2lmaWNhbGx5IHRoZSBoYW5kbGluZyBvZiBhIHJlY2VpdmVkIGBza2JgIChzb2NrZXQgYnVmZmVyKSB0aGF0IHJlcHJlc2VudHMgYSByZXNwb25zZSB0byBhIHRhcmdldCBERVAgKERhdGEgRXhlY3V0aW9uIFByZXZlbnRpb24pIHJlcXVlc3QuIFRoZSBjcnVjaWFsIHF1ZXN0aW9uIGhlcmUgaXMgd2hldGhlciB0aGlzIGZ1bmN0aW9uIGNvcGllcyBhbnkgZGF0YSBmcm9tIHRoZSBrZXJuZWwgc3BhY2UgdG8gdXNlciBzcGFjZSwgYmVjYXVzZSB0aGF0IGlzIG9mdGVuIHdoZXJlIG1lbW9yeSBpc3N1ZXMgYXJpc2UuIEkgbmVlZCB0byBiZSBkaWxpZ2VudCBhYm91dCB3aGVyZSB0aGUgZGF0YSBmbG93IGlzIG9jY3VycmluZy5cblxuVG8gZ2V0IGEgZGVmaW5pdGl2ZSBhbnN3ZXIsIEknbSBnb2luZyB0byBkaXZlIGludG8gdGhlIGNvZGUuIEknbGwgZm9jdXMgbXkgYXR0ZW50aW9uIG9uIGxpbmVzIDExNDAgdGhyb3VnaCAxMjkwIG9mIGBkaWdpdGFsX2RlcC5jYC4gVGhpcyByYW5nZSBzaG91bGQgY29udGFpbiB0aGUgY29yZSBsb2dpYyBmb3IgcHJvY2Vzc2luZyB0aGUgaW5jb21pbmcgcmVzcG9uc2UgYW5kLCBjcml0aWNhbGx5LCBhbnkgZGF0YSB0cmFuc2ZlciBvcGVyYXRpb25zIHJlbGF0ZWQgdG8gREVQIHJlcXVlc3RzLiBJJ2xsIGJlIGxvb2tpbmcgc3BlY2lmaWNhbGx5IGZvciBjYWxscyB0aGF0IGluZGljYXRlIHVzZXItc3BhY2UgZGF0YSBjb3BpZXMgc3VjaCBhcyBgY29weV90b191c2VyKClgIG9yIG90aGVyIGZ1bmN0aW9ucyB0aGF0IHBlcmZvcm0gYSBzaW1pbGFyIHJvbGUuIEFueSBkaXJlY3QgaW50ZXJhY3Rpb24gd2l0aCB1c2VyLXNwYWNlIG1lbW9yeSB3aXRoaW4gdGhhdCBmdW5jdGlvbiByYW5nZSB3aWxsIGJlIGludGVyZXN0aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NDcwLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTJUMTM6MjY6MDMuNTY5Njg3MDA5WiIsIlNlcSI6NDAsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NjU3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbmZjL2RpZ2l0YWxfZGVwLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTE0MCxcbiAgXCJMaW5lQ291bnRcIjogODBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTE0MDpcXHRcXG4xMTQxOlxcdFxcdHNrYl9wdWxsKHJlc3AsIHNpemUpO1xcbjExNDI6XFx0XFxuMTE0MzpcXHRcXHRzd2l0Y2ggKERJR0lUQUxfTkZDX0RFUF9QRkJfVFlQRShwZmIpKSB7XFxuMTE0NDpcXHRcXHRjYXNlIERJR0lUQUxfTkZDX0RFUF9QRkJfSV9QRFU6XFxuMTE0NTpcXHRcXHRcXHRwcl9kZWJ1ZyhcXFwiRElHSVRBTF9ORkNfREVQX1BGQl9JX1BEVVxcXFxuXFxcIik7XFxuMTE0NjpcXHRcXG4xMTQ3OlxcdFxcdFxcdGlmIChkZGV2LVxcdTAwM2VhdG5fY291bnQpIHtcXG4xMTQ4OlxcdFxcdFxcdFxcdC8qIFRoZSB0YXJnZXQgaGFzIHJlY2VpdmVkIChhbmQgcmVwbGllZCB0bykgYXQgbGVhc3Qgb25lXFxuMTE0OTpcXHRcXHRcXHRcXHQgKiBBVE4gREVQX1JFUS5cXG4xMTUwOlxcdFxcdFxcdFxcdCAqL1xcbjExNTE6XFx0XFx0XFx0XFx0ZGRldi1cXHUwMDNlYXRuX2NvdW50ID0gMDtcXG4xMTUyOlxcdFxcbjExNTM6XFx0XFx0XFx0XFx0LyogcG5pIG9mIHJlc3AgUERVIGVxdWFsIHRvIHRoZSB0YXJnZXQgY3VycmVudCBwbmkgLSAxXFxuMTE1NDpcXHRcXHRcXHRcXHQgKiBtZWFucyByZXNwIGlzIHRoZSBwcmV2aW91cyBERVBfUkVRIFBEVSByZWNlaXZlZCBmcm9tXFxuMTE1NTpcXHRcXHRcXHRcXHQgKiB0aGUgaW5pdGlhdG9yIHNvIHRoZSB0YXJnZXQgcmVwbGllcyB3aXRoIHNhdmVkX3NrYlxcbjExNTY6XFx0XFx0XFx0XFx0ICogd2hpY2ggaXMgdGhlIHByZXZpb3VzIERFUF9SRVMgc2F2ZWQgaW5cXG4xMTU3OlxcdFxcdFxcdFxcdCAqIGRpZ2l0YWxfdGdfc2VuZF9kZXBfcmVzKCkuXFxuMTE1ODpcXHRcXHRcXHRcXHQgKi9cXG4xMTU5OlxcdFxcdFxcdFxcdGlmIChESUdJVEFMX05GQ19ERVBfUEZCX1BOSShwZmIpID09XFxuMTE2MDpcXHRcXHRcXHRcXHQgIERJR0lUQUxfTkZDX0RFUF9QRkJfUE5JKGRkZXYtXFx1MDAzZWN1cnJfbmZjX2RlcF9wbmkgLSAxKSkge1xcbjExNjE6XFx0XFx0XFx0XFx0XFx0cmMgPSBkaWdpdGFsX3RnX3NlbmRfc2F2ZWRfc2tiKGRkZXYpO1xcbjExNjI6XFx0XFx0XFx0XFx0XFx0aWYgKHJjKVxcbjExNjM6XFx0XFx0XFx0XFx0XFx0XFx0Z290byBleGl0O1xcbjExNjQ6XFx0XFxuMTE2NTpcXHRcXHRcXHRcXHRcXHRnb3RvIGZyZWVfcmVzcDtcXG4xMTY2OlxcdFxcdFxcdFxcdH1cXG4xMTY3OlxcdFxcbjExNjg6XFx0XFx0XFx0XFx0LyogYXRuX2NvdW50IFxcdTAwM2UgMCBhbmQgUERVIHBuaSAhPSBjdXJyX25mY19kZXBfcG5pIC0gMVxcbjExNjk6XFx0XFx0XFx0XFx0ICogbWVhbnMgdGhlIHRhcmdldCBwcm9iYWJseSBkaWQgbm90IHJlY2VpdmVkIHRoZSBsYXN0XFxuMTE3MDpcXHRcXHRcXHRcXHQgKiBERVBfUkVRIFBEVSBzZW50IGJ5IHRoZSBpbml0aWF0b3IuIFRoZSB0YXJnZXRcXG4xMTcxOlxcdFxcdFxcdFxcdCAqIGZhbGxiYWNrcyB0byBub3JtYWwgcHJvY2Vzc2luZyB0aGVuLlxcbjExNzI6XFx0XFx0XFx0XFx0ICovXFxuMTE3MzpcXHRcXHRcXHR9XFxuMTE3NDpcXHRcXG4xMTc1OlxcdFxcdFxcdGlmIChESUdJVEFMX05GQ19ERVBfUEZCX1BOSShwZmIpICE9IGRkZXYtXFx1MDAzZWN1cnJfbmZjX2RlcF9wbmkpIHtcXG4xMTc2OlxcdFxcdFxcdFxcdFBST1RPQ09MX0VSUihcXFwiMTQuMTIuMy40XFxcIik7XFxuMTE3NzpcXHRcXHRcXHRcXHRyYyA9IC1FSU87XFxuMTE3ODpcXHRcXHRcXHRcXHRnb3RvIGV4aXQ7XFxuMTE3OTpcXHRcXHRcXHR9XFxuMTE4MDpcXHRcXG4xMTgxOlxcdFxcdFxcdGtmcmVlX3NrYihkZGV2LVxcdTAwM2VzYXZlZF9za2IpO1xcbjExODI6XFx0XFx0XFx0ZGRldi1cXHUwMDNlc2F2ZWRfc2tiID0gTlVMTDtcXG4xMTgzOlxcdFxcbjExODQ6XFx0XFx0XFx0cmVzcCA9IGRpZ2l0YWxfcmVjdl9kZXBfZGF0YV9nYXRoZXIoZGRldiwgcGZiLCByZXNwLFxcbjExODU6XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgIGRpZ2l0YWxfdGdfc2VuZF9hY2ssIE5VTEwpO1xcbjExODY6XFx0XFx0XFx0aWYgKElTX0VSUihyZXNwKSkge1xcbjExODc6XFx0XFx0XFx0XFx0cmMgPSBQVFJfRVJSKHJlc3ApO1xcbjExODg6XFx0XFx0XFx0XFx0cmVzcCA9IE5VTEw7XFxuMTE4OTpcXHRcXHRcXHRcXHRnb3RvIGV4aXQ7XFxuMTE5MDpcXHRcXHRcXHR9XFxuMTE5MTpcXHRcXG4xMTkyOlxcdFxcdFxcdC8qIElmIHJlc3AgaXMgTlVMTCB0aGVuIHdlJ3JlIHN0aWxsIGNoYWluaW5nIHNvIHJldHVybiBhbmRcXG4xMTkzOlxcdFxcdFxcdCAqIHdhaXQgZm9yIHRoZSBuZXh0IHBhcnQgb2YgdGhlIFBEVS4gIEVsc2UsIHRoZSBQRFUgaXNcXG4xMTk0OlxcdFxcdFxcdCAqIGNvbXBsZXRlIHNvIHBhc3MgaXQgdXAuXFxuMTE5NTpcXHRcXHRcXHQgKi9cXG4xMTk2OlxcdFxcdFxcdGlmICghcmVzcClcXG4xMTk3OlxcdFxcdFxcdFxcdHJldHVybjtcXG4xMTk4OlxcdFxcbjExOTk6XFx0XFx0XFx0cmMgPSAwO1xcbjEyMDA6XFx0XFx0XFx0YnJlYWs7XFxuMTIwMTpcXHRcXHRjYXNlIERJR0lUQUxfTkZDX0RFUF9QRkJfQUNLX05BQ0tfUERVOlxcbjEyMDI6XFx0XFx0XFx0aWYgKERJR0lUQUxfTkZDX0RFUF9OQUNLX0JJVF9TRVQocGZiKSkgeyAvKiBOQUNLICovXFxuMTIwMzpcXHRcXHRcXHRcXHRpZiAoRElHSVRBTF9ORkNfREVQX1BGQl9QTkkocGZiICsgMSkgIT1cXG4xMjA0OlxcdFxcdFxcdFxcdFxcdFxcdFxcdGRkZXYtXFx1MDAzZWN1cnJfbmZjX2RlcF9wbmkpIHtcXG4xMjA1OlxcdFxcdFxcdFxcdFxcdHJjID0gLUVJTztcXG4xMjA2OlxcdFxcdFxcdFxcdFxcdGdvdG8gZXhpdDtcXG4xMjA3OlxcdFxcdFxcdFxcdH1cXG4xMjA4OlxcdFxcbjEyMDk6XFx0XFx0XFx0XFx0ZGRldi1cXHUwMDNlYXRuX2NvdW50ID0gMDtcXG4xMjEwOlxcdFxcbjEyMTE6XFx0XFx0XFx0XFx0cmMgPSBkaWdpdGFsX3RnX3NlbmRfc2F2ZWRfc2tiKGRkZXYpO1xcbjEyMTI6XFx0XFx0XFx0XFx0aWYgKHJjKVxcbjEyMTM6XFx0XFx0XFx0XFx0XFx0Z290byBleGl0O1xcbjEyMTQ6XFx0XFxuMTIxNTpcXHRcXHRcXHRcXHRnb3RvIGZyZWVfcmVzcDtcXG4xMjE2OlxcdFxcdFxcdH1cXG4xMjE3OlxcdFxcbjEyMTg6XFx0XFx0XFx0LyogQUNLICovXFxuMTIxOTpcXHRcXHRcXHRpZiAoZGRldi1cXHUwMDNlYXRuX2NvdW50KSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEyVDEzOjI2OjAzLjU2OTgzNTM3OVoiLCJTZXEiOjQxLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoxMDU2MTAzMzQ0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkLCBpbiB0aGUgZmlyc3QgcGVyc29uIGFuZCB0YXJnZXRlZCB0b3dhcmRzIGFuIGV4cGVydDpcblxuKipEZWVwIERpdmUgaW50byBgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXFgKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQncyBnb2luZyBvbiAqbmV4dCogd2l0aGluIHRoaXMgYGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxYCBmdW5jdGlvbi4gSXQncyB0aGUgbHluY2hwaW4sIGlzbid0IGl0PyBUaGUgc3RhcnRpbmcgcG9pbnQgb2YgYW4gaW1wb3J0YW50IHByb2Nlc3MuIEkgbmVlZCB0byBjb25zaWRlciBhbGwgYW5nbGVzIGFuZCBlbnN1cmUgbm90aGluZyBpcyBtaXNzZWQgdGhhdCB3b3VsZCBpbXBhY3QgdGhlIGRlc2lnbiBvZiB0aGUgd2lkZXIgc3lzdGVtLlxuXG5JJ20gdGhpbmtpbmcsIFwid2hhdCBhcmUgdGhlIG1vc3QgaW1wb3J0YW50IGFyZWFzIHRvIGJlIGludmVzdGlnYXRlZD9cIi4gSXQgbG9va3MgdG8gbWUgbGlrZSBpdCdzIHByaW1hcmlseSByZXNwb25zaWJsZSBmb3IgaGFuZGxpbmcgc29tZSBzb3J0IG9mIGRlcGVuZGVuY3kgcmVxdWVzdCB3aXRoaW4gdGhlIGRpZ2l0YWwgc2lnbmFsIHByb2Nlc3NpbmcgY2hhaW4uIEdpdmVuIGl0cyBuYW1lLCBJJ20gYXNzdW1pbmcgaXQncyByZWxhdGVkIHRvIHNvbWUgZGlnaXRhbCB0cmFuc21pc3Npb24gZ3JvdXAuIFdlIGhhdmUgdG8gY29uc2lkZXIgZmFjdG9ycyByZWxhdGluZyB0byBpdHMgcmVjZXB0aW9uIGFuZCBwcm9jZXNzaW5nIHdpdGhpbiB0aGlzIGZ1bmN0aW9uLiBXaGF0IGFyZSB0aGUgbGlrZWx5IGRhdGEgc3RydWN0dXJlcyBiZWluZyB1c2VkIGhlcmU/IElzIGl0IGEgc3RyYWlnaHRmb3J3YXJkIGJ1ZmZlciwgb3Igc29tZXRoaW5nIG1vcmUgY29tcGxleCB3aXRoIG1ldGFkYXRhPyBBcmUgdGhlcmUgYW55IGVycm9yIGNvbmRpdGlvbnMgdGhhdCBuZWVkIHRvIGJlIGFjY291bnRlZCBmb3I/IFdoYXQgaGFwcGVucyBpZiB0aGUgcmVxdWVzdCBpcyBtYWxmb3JtZWQgb3IgaW52YWxpZD8gRG9lcyBpdCBpbW1lZGlhdGVseSByZXR1cm4gYW4gZXJyb3IgY29kZSBvciBkb2VzIGl0IHRyaWdnZXIgYSBzcGVjaWZpYyBraW5kIG9mIGNhbGxiYWNrIG9yIGV2ZW50PyBJcyB0aGVyZSBhIHN0YXRlIG1hY2hpbmUgdGhhdCBJIG5lZWQgdG8gYmUgYXdhcmUgb2Y/IEFyZSB0aGVyZSBjb25jdXJyZW5jeSBjb25zaWRlcmF0aW9ucyB0aGF0IEkgbmVlZCB0byBrZWVwIGluIG1pbmQsIGkuZS4gaXMgdGhpcyBmdW5jdGlvbiBjYWxsZWQgZnJvbSBtdWx0aXBsZSB0aHJlYWRzP1xuXG5JIGFsc28gbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByZWxhdGlvbnNoaXAgdG8gdGhlIHJlc3Qgb2YgdGhlIHN5c3RlbS4gV2hhdCBvdGhlciBmdW5jdGlvbnMgb3IgbW9kdWxlcyBkb2VzIGBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcWAgY2FsbCwgYW5kIHdoaWNoIG9uZXMgY2FsbCBpdD8gV2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGVzZSBjYWxscyBpbiB0ZXJtcyBvZiByZXNvdXJjZSB1dGlsaXphdGlvbiBhbmQgbGF0ZW5jeT8gRG9lcyBpdCBpbnRlcmFjdCB3aXRoIGFueSBoYXJkd2FyZSBkaXJlY3RseT8gQW5kLCBpZiBzbywgYXJlIHRoZXJlIGFueSBoYXJkd2FyZS1zcGVjaWZpYyBjb25zaWRlcmF0aW9ucyBpbiB0ZXJtcyBvZiB0aW1pbmcgb3Igc3luY2hyb25pemF0aW9uPyBJJ2xsIHByb2JhYmx5IG5lZWQgdG8gdHJhY2UgaXRzIGNhbGwgc3RhY2sgYW5kIGRhdGEgZmxvdyB0byBnZXQgYSBjb21wbGV0ZSBwaWN0dXJlLiBUaGlzIGlzIG15IGNoYW5jZSB0byBkZXRlcm1pbmUgaWYgdGhpcyBwaWVjZSBvZiBjb2RlIGlzIGVmZmljaWVudCBhbmQgd2VsbC1kZXNpZ25lZCwgb3IgaWYgdGhlcmUncyByb29tIGZvciBpbXByb3ZlbWVudC5cblxuVWx0aW1hdGVseSwgSSB3YW50IHRvIGZvcm0gYW4gYWNjdXJhdGUgbWVudGFsIG1vZGVsIG9mIHdoYXQgdGhpcyBmdW5jdGlvbiBkb2VzIGFuZCBob3cgaXQgZml0cyBpbnRvIHRoZSBvdmVyYWxsIHNjaGVtZSBvZiB0aGluZ3MuIEknbSBsb29raW5nIGZvciB0aGUga2V5IGluc2lnaHRzIHRoYXQgd2lsbCBpbmZvcm0gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgc3lzdGVtJ3MgZGVzaWduIGFuZCB3aWxsIGRldGVybWluZSBob3cgSSB3aWxsIGFwcHJvYWNoIHRoaXMgcHJvYmxlbS4gTGV0J3MgZGlnIGluIGFuZCBzZWUgd2hhdCBzZWNyZXRzIHRoaXMgZnVuY3Rpb24gaG9sZHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcwNjQsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEyVDEzOjI2OjE0LjEzMDg3MDY3WiIsIlNlcSI6NDIsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MzgwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbmZjL2RpZ2l0YWxfZGVwLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTIyMCxcbiAgXCJMaW5lQ291bnRcIjogODBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTIyMDpcXHRcXHRcXHRcXHQvKiBUaGUgdGFyZ2V0IGhhcyBwcmV2aW91c2x5IHJlY2VpdmVkIG9uZSBvciBtb3JlIEFUTlxcbjEyMjE6XFx0XFx0XFx0XFx0ICogUERVcy5cXG4xMjIyOlxcdFxcdFxcdFxcdCAqL1xcbjEyMjM6XFx0XFx0XFx0XFx0ZGRldi1cXHUwMDNlYXRuX2NvdW50ID0gMDtcXG4xMjI0OlxcdFxcbjEyMjU6XFx0XFx0XFx0XFx0LyogSWYgdGhlIEFDSyBQTkkgaXMgZXF1YWwgdG8gdGhlIHRhcmdldCBQTkkgLSAxIG1lYW5zXFxuMTIyNjpcXHRcXHRcXHRcXHQgKiB0aGF0IHRoZSBpbml0aWF0b3IgZGlkIG5vdCByZWNlaXZlIHRoZSBwcmV2aW91cyBQRFVcXG4xMjI3OlxcdFxcdFxcdFxcdCAqIHNlbnQgYnkgdGhlIHRhcmdldCBzbyByZS1zZW5kIGl0LlxcbjEyMjg6XFx0XFx0XFx0XFx0ICovXFxuMTIyOTpcXHRcXHRcXHRcXHRpZiAoRElHSVRBTF9ORkNfREVQX1BGQl9QTkkocGZiICsgMSkgPT1cXG4xMjMwOlxcdFxcdFxcdFxcdFxcdFxcdFxcdGRkZXYtXFx1MDAzZWN1cnJfbmZjX2RlcF9wbmkpIHtcXG4xMjMxOlxcdFxcdFxcdFxcdFxcdHJjID0gZGlnaXRhbF90Z19zZW5kX3NhdmVkX3NrYihkZGV2KTtcXG4xMjMyOlxcdFxcdFxcdFxcdFxcdGlmIChyYylcXG4xMjMzOlxcdFxcdFxcdFxcdFxcdFxcdGdvdG8gZXhpdDtcXG4xMjM0OlxcdFxcbjEyMzU6XFx0XFx0XFx0XFx0XFx0Z290byBmcmVlX3Jlc3A7XFxuMTIzNjpcXHRcXHRcXHRcXHR9XFxuMTIzNzpcXHRcXG4xMjM4OlxcdFxcdFxcdFxcdC8qIE90aGVyd2lzZSwgdGhlIHRhcmdldCBkaWQgbm90IHJlY2VpdmUgdGhlIHByZXZpb3VzXFxuMTIzOTpcXHRcXHRcXHRcXHQgKiBBQ0sgUERVIGZyb20gdGhlIGluaXRpYXRvci4gRmFsbGJhY2sgdG8gbm9ybWFsXFxuMTI0MDpcXHRcXHRcXHRcXHQgKiBwcm9jZXNzaW5nIG9mIGNoYWluZWQgUERVIHRoZW4uXFxuMTI0MTpcXHRcXHRcXHRcXHQgKi9cXG4xMjQyOlxcdFxcdFxcdH1cXG4xMjQzOlxcdFxcbjEyNDQ6XFx0XFx0XFx0LyogS2VlcCBvbiBzZW5kaW5nIGNoYWluZWQgUERVICovXFxuMTI0NTpcXHRcXHRcXHRpZiAoIWRkZXYtXFx1MDAzZWNoYWluaW5nX3NrYiB8fFxcbjEyNDY6XFx0XFx0XFx0ICAgIERJR0lUQUxfTkZDX0RFUF9QRkJfUE5JKHBmYikgIT1cXG4xMjQ3OlxcdFxcdFxcdFxcdFxcdFxcdGRkZXYtXFx1MDAzZWN1cnJfbmZjX2RlcF9wbmkpIHtcXG4xMjQ4OlxcdFxcdFxcdFxcdHJjID0gLUVJTztcXG4xMjQ5OlxcdFxcdFxcdFxcdGdvdG8gZXhpdDtcXG4xMjUwOlxcdFxcdFxcdH1cXG4xMjUxOlxcdFxcbjEyNTI6XFx0XFx0XFx0a2ZyZWVfc2tiKGRkZXYtXFx1MDAzZXNhdmVkX3NrYik7XFxuMTI1MzpcXHRcXHRcXHRkZGV2LVxcdTAwM2VzYXZlZF9za2IgPSBOVUxMO1xcbjEyNTQ6XFx0XFxuMTI1NTpcXHRcXHRcXHRyYyA9IGRpZ2l0YWxfdGdfc2VuZF9kZXBfcmVzKGRkZXYsIGRkZXYtXFx1MDAzZWNoYWluaW5nX3NrYik7XFxuMTI1NjpcXHRcXHRcXHRpZiAocmMpXFxuMTI1NzpcXHRcXHRcXHRcXHRnb3RvIGV4aXQ7XFxuMTI1ODpcXHRcXG4xMjU5OlxcdFxcdFxcdGdvdG8gZnJlZV9yZXNwO1xcbjEyNjA6XFx0XFx0Y2FzZSBESUdJVEFMX05GQ19ERVBfUEZCX1NVUEVSVklTT1JfUERVOlxcbjEyNjE6XFx0XFx0XFx0aWYgKERJR0lUQUxfTkZDX0RFUF9QRkJfSVNfVElNRU9VVChwZmIpKSB7XFxuMTI2MjpcXHRcXHRcXHRcXHRyYyA9IC1FSU5WQUw7XFxuMTI2MzpcXHRcXHRcXHRcXHRnb3RvIGV4aXQ7XFxuMTI2NDpcXHRcXHRcXHR9XFxuMTI2NTpcXHRcXG4xMjY2OlxcdFxcdFxcdHJjID0gZGlnaXRhbF90Z19zZW5kX2F0bihkZGV2KTtcXG4xMjY3OlxcdFxcdFxcdGlmIChyYylcXG4xMjY4OlxcdFxcdFxcdFxcdGdvdG8gZXhpdDtcXG4xMjY5OlxcdFxcbjEyNzA6XFx0XFx0XFx0ZGRldi1cXHUwMDNlYXRuX2NvdW50Kys7XFxuMTI3MTpcXHRcXG4xMjcyOlxcdFxcdFxcdGdvdG8gZnJlZV9yZXNwO1xcbjEyNzM6XFx0XFx0fVxcbjEyNzQ6XFx0XFxuMTI3NTpcXHRcXHRyYyA9IG5mY190bV9kYXRhX3JlY2VpdmVkKGRkZXYtXFx1MDAzZW5mY19kZXYsIHJlc3ApO1xcbjEyNzY6XFx0XFx0aWYgKHJjKVxcbjEyNzc6XFx0XFx0XFx0cmVzcCA9IE5VTEw7XFxuMTI3ODpcXHRcXG4xMjc5OlxcdGV4aXQ6XFxuMTI4MDpcXHRcXHRrZnJlZV9za2IoZGRldi1cXHUwMDNlY2hhaW5pbmdfc2tiKTtcXG4xMjgxOlxcdFxcdGRkZXYtXFx1MDAzZWNoYWluaW5nX3NrYiA9IE5VTEw7XFxuMTI4MjpcXHRcXG4xMjgzOlxcdFxcdGRkZXYtXFx1MDAzZWF0bl9jb3VudCA9IDA7XFxuMTI4NDpcXHRcXG4xMjg1OlxcdFxcdGtmcmVlX3NrYihkZGV2LVxcdTAwM2VzYXZlZF9za2IpO1xcbjEyODY6XFx0XFx0ZGRldi1cXHUwMDNlc2F2ZWRfc2tiID0gTlVMTDtcXG4xMjg3OlxcdFxcbjEyODg6XFx0XFx0aWYgKHJjKVxcbjEyODk6XFx0XFx0XFx0a2ZyZWVfc2tiKHJlc3ApO1xcbjEyOTA6XFx0XFxuMTI5MTpcXHRcXHRyZXR1cm47XFxuMTI5MjpcXHRcXG4xMjkzOlxcdGZyZWVfcmVzcDpcXG4xMjk0OlxcdFxcdGRldl9rZnJlZV9za2IocmVzcCk7XFxuMTI5NTpcXHR9XFxuMTI5NjpcXHRcXG4xMjk3OlxcdGludCBkaWdpdGFsX3RnX3NlbmRfZGVwX3JlcyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbjEyOTg6XFx0e1xcbjEyOTk6XFx0XFx0c3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKmRlcF9yZXM7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEyVDEzOjI2OjE0LjEzMTAyNjdaIiwiU2VxIjo0MywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6NDQyNjY1MjI3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE5GQyBEaWdpdGFsIERFUCBESUQgSGFuZGxpbmcqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggaW4gYG5ldC9uZmMvZGlnaXRhbF9kZXAuY2AgY29uY2VybmluZyBESUQgKERhdGEgSUQpIGhhbmRsaW5nIHdpdGhpbiB0aGUgRGlnaXRhbCBERVAgKERldmljZS10by1EZXZpY2UgUHJvdG9jb2wpIGZvciBORkMuIFRoZSBjb3JlIG9mIHRoaXMgc2VlbXMgdG8gYmUgY2VudGVyZWQgYXJvdW5kIGBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcWAgYW5kIHRoZSB2ZXJpZmljYXRpb24gb2YgdGhlIERJRCBmaWVsZCB3aXRoaW4gYSByZWNlaXZlZCBERVAgcmVxdWVzdC5cblxuRXNzZW50aWFsbHksIGl0IGNoZWNrcyBpZiBhIERJRCBpcyBwcmVzZW50IChgRElHSVRBTF9ORkNfREVQX0RJRF9CSVRfU0VUYCkgaW4gdGhlIFByb3RvY29sIEZvcm1hdCBCeXRlIChQRkIpIGFuZCB0aGVuIGNvbXBhcmVzIGl0IHRvIHRoZSBkZXZpY2UncyBleHBlY3RlZCBESUQgKGBkZGV2LVx1MDAzZWRpZGApLiBUaGUgb3JpZ2luYWwgY29kZSBoYWQgYSBzdWJ0bGUgZmxhdyB0aGF0IHRoaXMgcGF0Y2ggYWltcyB0byBmaXguIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoYXQgZmxhdywgYXMgdGhlIGxvZ2ljIGlzIHNvbWV3aGF0IGNvbnZvbHV0ZWQuXG5cbkhlcmUncyB0aGUgcHJvYmxlbSBJIHNlZSBub3c6IFRoZSBpbml0aWFsIGNvbmRpdGlvbmFsIHN0YXRlbWVudCBpbiB0aGUgYGlmIChESUdJVEFMX05GQ19ERVBfRElEX0JJVF9TRVQocGZiKSlgIGJsb2NrIHVzZWQgdG8gdmVyaWZ5IHRoZSBESUQuIFRoZSBvcmlnaW5hbCBjb2RlIGluY3JlbWVudGVkIGBzaXplKytgIGlmIHRoZSBESURzIG1hdGNoZWQgYnV0LCBpZiB0aGUgRElEcyBkaWQgbm90IG1hdGNoLCBpdCB3b3VsZCBlcnJvciBvdXQgYW5kIGV4aXQuIFRoaXMgd29ya3MgYXMgaW50ZW5kZWQuXG5cblRoZSBwYXRjaCBhaW1zIHRvIHNvbHZlIGEgY2FzZSB3aGVyZSBpZiB0aGUgYHJlc3AtXHUwMDNlbGVuYCBpcyB0b28gc21hbGwsIGFuIG91dC1vZi1ib3VuZHMgcmVhZCB3b3VsZCBoYXBwZW4gYW5kIGEgY3Jhc2ggY291bGQgb2NjdXIuIFRoZSBwYXRjaCBmaXhlcyB0aGlzIGJ5IGNoZWNraW5nIGByZXNwLVx1MDAzZWxlbiBcdTAwM2Mgc2l6ZSArIDFgIGJlZm9yZSBjb21wYXJpbmcgdGhlIERJRC4gVGhlIG90aGVyIHBhcnQgb2YgdGhlIGZpeCBpcyB0byBzaW1wbGlmeSB0aGUgYGVsc2VgIGNsYXVzZTogaWYgYSBESUQgaXMgZXhwZWN0ZWQgYnV0IG5vdCBwcmVzZW50LCBlcnJvciBvdXQuXG5cbk5vdywgbGV0J3Mgc3dpdGNoIGdlYXJzIGFuZCBjaGVjayBob3cgYGRpZ2l0YWxfaW5fcmVjdl9kZXBfcmVzYCBkb2VzIHRoZSBESUQgY2hlY2tpbmcsIHRvIG1ha2Ugc3VyZSB0aGlzIGZpeCBpcyBjb25zaXN0ZW50IGFjcm9zcyB0aGUgY29kZWJhc2UuIEkgbmVlZCB0byBjb25maXJtIHRoYXQgdGhlIGNoYW5nZXMgbWFkZSBoZXJlIGFyZSBhbHNvIHJlZmxlY3RlZCAob3IgY29uc2lkZXJlZCkgaW4gdGhlIGluY29taW5nIHJlc3BvbnNlIHNpZGUgb2YgdGhpbmdzLiBJdCdzIGNydWNpYWwgZm9yIHN5bW1ldHJpY2FsIGJlaGF2aW9yIHRvIG1haW50YWluIGRhdGEgaW50ZWdyaXR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NzMxLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTJUMTM6MjY6MTguNTU3NjgxOTYzWiIsIlNlcSI6NDQsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzE3MTQ5MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJESUdJVEFMX05GQ19ERVBfRElEX0JJVF9TRVRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25mYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25mYy9kaWdpdGFsX2RlcC5jLTUyLSNkZWZpbmUgRElHSVRBTF9ORkNfREVQX05BRF9CSVRfU0VUKHBmYikgKChwZmIpIFxcdTAwMjYgMHgwOClcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NTM6I2RlZmluZSBESUdJVEFMX05GQ19ERVBfRElEX0JJVF9TRVQocGZiKSAoKHBmYikgXFx1MDAyNiBESUdJVEFMX05GQ19ERVBfUEZCX0RJRF9CSVQpXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTU0LSNkZWZpbmUgRElHSVRBTF9ORkNfREVQX1BGQl9QTkkocGZiKSAgICAgKChwZmIpIFxcdTAwMjYgMHgwMylcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz02ODY9c3RhdGljIHZvaWQgZGlnaXRhbF9pbl9yZWN2X2RlcF9yZXMoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTc2Ni1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NzY3OlxcdGlmIChESUdJVEFMX05GQ19ERVBfRElEX0JJVF9TRVQocGZiKSkge1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy03NjgtXFx0XFx0UFJPVE9DT0xfRVJSKFxcXCIxNC44LjIuMVxcXCIpO1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTEwNzc9c3RhdGljIHZvaWQgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTExMTgtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjExMTk6XFx0aWYgKERJR0lUQUxfTkZDX0RFUF9ESURfQklUX1NFVChwZmIpKSB7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTExMjAtXFx0XFx0aWYgKHJlc3AtXFx1MDAzZWxlbiBcXHUwMDNjIHNpemUgKyAxIHx8ICFkZGV2LVxcdTAwM2VkaWQgfHxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTJUMTM6MjY6MTguNjA0ODYwNTc2WiIsIlNlcSI6NDUsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjg1NzIwMTgwMzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQYXRjaCBmb3IgS01TQU4gUmVsZXZhbmNlKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgY29tbWl0IGZpeGVzIHdoYXQgbG9va3MgbGlrZSBhIGNsYXNzaWMgb3V0LW9mLWJvdW5kcyByZWFkIHZ1bG5lcmFiaWxpdHkuIFN5emthbGxlciBwcm9iYWJseSBmb3VuZCBpdCwgc3BlY2lmaWNhbGx5LCBhY2Nlc3NpbmcgYHJlc3AtXHUwMDNlZGF0YVszXWAgd2hlbiBgcmVzcC1cdTAwM2VsZW5gIHdhcyBvbmx5IDMuIFRoZSBgc2l6ZWAgdmFyaWFibGUgaXMgc2V0IHRvIHRoZSBzaXplIG9mIGBzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3Jlc2AsIHdoaWNoIGlzIDMgYnl0ZXMsIGJ1dCB0aGUgY29uZGl0aW9uYWwgY2hlY2sgYmVmb3JlIHRoZSBmaXggb25seSBjaGVja2VkIGZvciBgcmVzcC1cdTAwM2VsZW4gXHUwMDNlPSAzYC4gVGhlbiwgaWYgYSBjZXJ0YWluIGJpdCB3YXMgc2V0LCB0aGUgY29kZSBhdHRlbXB0ZWQgdG8gYWNjZXNzIGByZXNwLVx1MDAzZWRhdGFbM11gLiBJZiBgcmVzcC1cdTAwM2VsZW5gIHdhcyBleGFjdGx5IDMsIHRoYXQncyBhIG9uZS1ieXRlIG91dC1vZi1ib3VuZHMgcmVhZCBmcm9tIHRoZSBlbmQgb2YgdGhlIGByZXNwLVx1MDAzZWRhdGFgIGJ1ZmZlci4gS0FTQU4gd291bGQgaW1tZWRpYXRlbHkgY2F0Y2ggdGhhdC5cblxuTm93LCB0aGUgcXVlc3Rpb24gaXMsIGRvZXMgdGhpcyByZXF1aXJlIEtNU0FOPyBMZXQncyBnbyB0aHJvdWdoIHRoZSBjaGVja2xpc3QuXG5cbjEuICAqKlVzZXItc3BhY2UgZXhwb3N1cmU/KiogTm9wZS4gTm90aGluZyBoZXJlIGdldHMgY29waWVkIHRvIHVzZXIgc3BhY2UuXG4yLiAgKipVbmluaXRpYWxpemVkIHZhcmlhYmxlIHNoZW5hbmlnYW5zPyoqIE5vdCBhdCBhbGwuIGByZXNwLVx1MDAzZWxlbmAsIGBzaXplYCwgYGRkZXYtXHUwMDNlZGlkYCwgYW5kIHRoZSBzcGVjaWZpYyBieXRlIG9mIGByZXNwLVx1MDAzZWRhdGFgIGFyZSBhbGwgd2VsbC1kZWZpbmVkIGFuZCBpbml0aWFsaXplZC4gYHNpemVgIGlzIGFuIGludGVnZXIgaW5pdGlhbGl6ZWQgd2l0aCBgc2l6ZW9mKClgLiBgcmVzcC1cdTAwM2VkYXRhYCBpcyBqdXN0IHRoZSBORkMgcGFja2V0IHRoYXQgd2FzIHJlY2VpdmVkLlxuMy4gICoqTmV3IGFsbG9jYXRpb25zIG9yIGRhdGEgc3RydWN0dXJlcz8qKiBObyBuZXcgYWxsb2NhdGlvbnMgb3IgbW9kaWZpY2F0aW9ucyB0byBkYXRhIHN0cnVjdHVyZSBpbml0aWFsaXphdGlvbnMgYXJlIGFkZGVkIG9yIG1vZGlmaWVkIGJ5IHRoZSBwYXRjaC5cbjQuICAqKkJvdW5kcyBjaGVja3MgZXhwb3NpbmcgdW5pbml0aWFsaXplZCBieXRlcz8qKiBBY3R1YWxseSwgdGhlIHBhdGNoICp0aWdodGVucyogYm91bmRzIGNoZWNrcy4gSXQgYWRkcyBhbiBleHRyYSBjaGVjayAoYHJlc3AtXHUwMDNlbGVuIFx1MDAzYyBzaXplICsgMWApIHRvIGVuc3VyZSB3ZSBkb24ndCByZWFkIG91dC1vZi1ib3VuZHMuIFRoZSBjb2RlIGlzICpyZXN0cmljdGluZyogYWNjZXNzLCBub3QgZXhwYW5kaW5nIGl0LlxuXG5XYWl0LCBpcyB0aGVyZSBhbnkgY2hhbmNlIHRoYXQgYHJlc3AtXHUwMDNlZGF0YVtzaXplXWAgY291bGQgYmUgdW5pbml0aWFsaXplZCBtZW1vcnk/IE5vLiBUaGUgY29kZSBleHBsaWNpdGx5IGNoZWNrcyBgcmVzcC1cdTAwM2VsZW5gIGJlZm9yZSBhY2Nlc3NpbmcgdGhlIGRhdGEuIEV2ZW4gaWYgYHJlc3AtXHUwMDNlZGF0YWAgaXMgYW4gc2tiIGRhdGEgYnVmZmVyLCB0aGUgY29kZSBjaGVja3MgdGhlIGxlbmd0aCBvZiAqdmFsaWQqIHJlY2VpdmVkIGRhdGEsIHdoaWNoIGlzIGluZGljYXRlZCBieSBgcmVzcC1cdTAwM2VsZW5gLiBCZWZvcmUgdGhlIHBhdGNoLCBhdHRlbXB0aW5nIHRvIHJlYWQgcGFzdCB0aGUgdmFsdWUgb2YgYHJlc3AtXHUwMDNlbGVuYCB3YXMgYW4gb3V0LW9mLWJvdW5kcyByZWFkIChjYXVnaHQgYnkgS0FTQU4pLCB0aGUgcGF0Y2ggaGFzIGZpeGVkIHRoaXMgYW5kIG5vdyB0aGUgY29kZSBkb2VzIG5vdCByZWFkIHBhc3QgdGhlIGFsbG9jYXRlZCBidWZmZXIuIFRoZSBwYXRjaCBmaXhlcyB0aGlzIGJ5IGNoZWNraW5nIGByZXNwLVx1MDAzZWxlbiBcdTAwM2Mgc2l6ZSArIDFgLiBUaGUgY2hhbmdlIG1vZGlmaWVzIGJvdW5kcyBjaGVja2luZyBpbiBhIHdheSB0aGF0IHJlc3RyaWN0cyBhY2Nlc3MuXG5cblRoZSBjb3JlIG9mIHRoZSBwcm9ibGVtIGhlcmUgd2FzIGEgS0FTQU4gZGV0ZWN0YWJsZSBvdXQtb2YtYm91bmRzIHJlYWQsIGFuZCB0aGUgcGF0Y2ggZml4ZXMgaXQgYnkgaW1wbGVtZW50aW5nIGEgcHJvcGVyIGJvdW5kcyBjaGVjaywgbm90IGJ5IGV4cG9zaW5nIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeS5cblxuU28sIGFjY29yZGluZyB0byB0aGUgcnVsZXMsIHNpbmNlIEtBU0FOIGhhbmRsZXMgdGhlIHR5cGUgb2YgYnVnIHRoaXMgcGF0Y2ggYWRkcmVzc2VzLCBhbmQgdGhlIHBhdGNoIGRvZXNuJ3QgaW50cm9kdWNlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLCB0aGlzIGRvZXNuJ3QgbmVlZCBLTVNBTi4gVGhpcyBwYXRjaCBmYWxscyBpbnRvIHRoZSBjYXRlZ29yeSBvZiBcInByaW1hcmlseSByaXNrcyBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCAuLi4gKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodCBieSBLQVNBTilcIi4gVGhlIHN0cnVjdHVyZXMgYXJlIGZ1bGx5IGluaXRpYWxpemVkIG9yIGNoZWNrZWQuXG5cblRoZXJlZm9yZSwgYE5lZWRzS01TQU4gPSBmYWxzZWAuIEl0IGlzIGEgY2xhc3NpYyBLQVNBTiBpc3N1ZS4gVGhlIHBhdGNoIGFkZHMgYSBsZW5ndGggY2hlY2sgYW5kIGRvZXNuJ3QgZG8gYW55dGhpbmcgZWxzZS5cblxuTGV0J3MgcHJlcGFyZSB0aGUganVzdGlmaWNhdGlvbiwgY29udHJhc3RpbmcgS0FTQU4gYW5kIEtNU0FOLlxuSW4gdGhlIGBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcSgpYCBmdW5jdGlvbiwgdGhlIGRyaXZlciBoYW5kbGVzIGluY29taW5nIE5GQyBERVAgcmVxdWVzdHMuIFByZXZpb3VzbHksIHdoZW4gdGhlIERJRCBiaXQgaW4gdGhlIFBGQiBieXRlIHdhcyBzZXQsIGl0IHVuY29uZGl0aW9uYWxseSBjaGVja2VkIGByZXNwLVx1MDAzZWRhdGFbM11gIHdpdGhvdXQgZW5zdXJpbmcgYHJlc3AtXHUwMDNlbGVuIFx1MDAzZT0gNGAgKHNpbmNlIHRoZSBwcmlvciBjaGVjayBvbmx5IGVuc3VyZWQgYHJlc3AtXHUwMDNlbGVuIFx1MDAzZT0gM2ApLCBsZWFkaW5nIHRvIGEgcG90ZW50aWFsIDEtYnl0ZSBvdXQtb2YtYm91bmRzIHJlYWQuIE91dC1vZi1ib3VuZHMgcmVhZCBkZXRlY3Rpb24gb24gc2xhYi9za2IgYnVmZmVycyBpcyBoYW5kbGVkIGRpcmVjdGx5IGJ5IEtBU0FOIChlLmcuLCBzbGFiLW91dC1vZi1ib3VuZHMpLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSwgZG9lcyBub3QgYWx0ZXIgc3RydWN0dXJlcyBjb3BpZWQgdG8gdXNlcnNwYWNlLCBkb2VzIG5vdCBsZWF2ZSBhbnkgdmFyaWFibGVzIHVuaW5pdGlhbGl6ZWQsIGFuZCBhY3R1YWxseSB0aWdodGVucyBsZW5ndGggdmFsaWRhdGlvbiBvbiBpbmNvbWluZyBkYXRhIGJlZm9yZSBpbmRleGluZyB0aGUgYnVmZmVyLiBObyB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciBpbmZvcm1hdGlvbiBsZWFrcyBhcmUgaW50cm9kdWNlZCBvciBleHBvc2VkLiBUaGVyZWZvcmUsIGBOZWVkc0tNU0FOPWZhbHNlYC5cbkxldCdzIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTkzMCwiT3V0cHV0VG9rZW5zIjoxOTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTQzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEyVDEzOjI2OjI3LjE3Njg4Mjg5OVoiLCJTZXEiOjQ2LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxNzI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyByZWFkIGluIGBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcSgpYCB3aGVyZSBgcmVzcC1cXHUwMDNlZGF0YVszXWAgd2FzIHJlYWQgd2l0aG91dCBmaXJzdCB2ZXJpZnlpbmcgdGhhdCBgcmVzcC1cXHUwMDNlbGVuYCB3YXMgYXQgbGVhc3QgYHNpemUgKyAxYCAoNCBieXRlcykuIFxcblxcblRoaXMgaXMgYSBib3VuZHMtY2hlY2tpbmcgaXNzdWU6IGFjY2Vzc2luZyBieXRlcyBiZXlvbmQgYHJlc3AtXFx1MDAzZWxlbmAgaXMgYW4gb3V0LW9mLWJvdW5kcyBhY2Nlc3MgZGlyZWN0bHkgZGV0ZWN0YWJsZSBieSBLQVNBTiAoZS5nLiwgc2xhYi1vdXQtb2YtYm91bmRzIG9uIHNrYiBkYXRhKS4gVGhlIGNoYW5nZSBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHVuaW5pdGlhbGl6ZWQgc3RhY2sgb3IgaGVhcCB2YXJpYWJsZXMsIGRvZXMgbm90IGV4cG9zZSB1bmluaXRpYWxpemVkIHBhZGRpbmcgb3Igc3RydWN0IGZpZWxkcyB0byB1c2VyIHNwYWNlLCBhbmQgZG9lcyBub3QgYWx0ZXIgY29udHJvbCBmbG93IGJhc2VkIG9uIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBCZWNhdXNlIHN0YW5kYXJkIEtBU0FOIGZ1bGx5IGNvdmVycyB0aGlzIGNsYXNzIG9mIGJ1Z3MgYW5kIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIGFyZSBpbnRyb2R1Y2VkLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIHJlYWQgaW4gYGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxKClgIHdoZXJlIGByZXNwLVxcdTAwM2VkYXRhWzNdYCB3YXMgcmVhZCB3aXRob3V0IGZpcnN0IHZlcmlmeWluZyB0aGF0IGByZXNwLVxcdTAwM2VsZW5gIHdhcyBhdCBsZWFzdCBgc2l6ZSArIDFgICg0IGJ5dGVzKS4gXFxuXFxuVGhpcyBpcyBhIGJvdW5kcy1jaGVja2luZyBpc3N1ZTogYWNjZXNzaW5nIGJ5dGVzIGJleW9uZCBgcmVzcC1cXHUwMDNlbGVuYCBpcyBhbiBvdXQtb2YtYm91bmRzIGFjY2VzcyBkaXJlY3RseSBkZXRlY3RhYmxlIGJ5IEtBU0FOIChlLmcuLCBzbGFiLW91dC1vZi1ib3VuZHMgb24gc2tiIGRhdGEpLiBUaGUgY2hhbmdlIGRvZXMgbm90IGludHJvZHVjZSBhbnkgdW5pbml0aWFsaXplZCBzdGFjayBvciBoZWFwIHZhcmlhYmxlcywgZG9lcyBub3QgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgcGFkZGluZyBvciBzdHJ1Y3QgZmllbGRzIHRvIHVzZXIgc3BhY2UsIGFuZCBkb2VzIG5vdCBhbHRlciBjb250cm9sIGZsb3cgYmFzZWQgb24gdW5pbml0aWFsaXplZCBtZW1vcnkuIEJlY2F1c2Ugc3RhbmRhcmQgS0FTQU4gZnVsbHkgY292ZXJzIHRoaXMgY2xhc3Mgb2YgYnVncyBhbmQgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgYXJlIGludHJvZHVjZWQsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow569zd[1] Phase: Succeeded StartedAt: 2026-09-12 13:26:38 +0000 UTC FinishedAt: 2026-09-12 13:26:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflow569zd[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-09-12 13:26:38 +0000 UTC FinishedAt: 2026-09-12 13:26:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflow569zd[2] Phase: Succeeded StartedAt: 2026-09-12 13:26:38 +0000 UTC FinishedAt: 2026-09-12 15:00:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow569zd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_PORT100"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"base_commit":"df2908090cda368b01ff43709f51890076c56157","base_tree":"axboe","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["digital_tg_recv_dep_req","digital_tg_send_dep_res","digital_tg_recv_atr_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_PORT100"],"series_id":"d7cd074c-db82-4528-8676-7c8e205b760a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-09-12 13:26:38 +0000 UTC FinishedAt: 2026-09-12 15:00:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_PORT100"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"fuzz":{"base_commit":"df2908090cda368b01ff43709f51890076c56157","base_tree":"axboe","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["digital_tg_recv_dep_req","digital_tg_send_dep_res","digital_tg_recv_atr_req"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_PORT100"],"series_id":"d7cd074c-db82-4528-8676-7c8e205b760a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow569zd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_PORT100"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"base_commit":"df2908090cda368b01ff43709f51890076c56157","base_tree":"axboe","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["digital_tg_recv_dep_req","digital_tg_send_dep_res","digital_tg_recv_atr_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_PORT100"],"series_id":"d7cd074c-db82-4528-8676-7c8e205b760a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-09-12 13:26:38 +0000 UTC FinishedAt: 2026-09-12 13:26:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflow569zd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_PORT100"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"base_commit":"df2908090cda368b01ff43709f51890076c56157","base_tree":"axboe","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["digital_tg_recv_dep_req","digital_tg_send_dep_res","digital_tg_recv_atr_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_PORT100"],"series_id":"d7cd074c-db82-4528-8676-7c8e205b760a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-09-12 13:26:38 +0000 UTC FinishedAt: 2026-09-12 13:26:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_PORT100"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow569zd/series-workflow569zd-convert-artifact-1623872801/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow569zd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_PORT100"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"base_commit":"df2908090cda368b01ff43709f51890076c56157","base_tree":"axboe","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["digital_tg_recv_dep_req","digital_tg_send_dep_res","digital_tg_recv_atr_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_PORT100"],"series_id":"d7cd074c-db82-4528-8676-7c8e205b760a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-09-12 13:26:48 +0000 UTC FinishedAt: 2026-09-12 13:42:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflow569zd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_PORT100"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"base_commit":"df2908090cda368b01ff43709f51890076c56157","base_tree":"axboe","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["digital_tg_recv_dep_req","digital_tg_send_dep_res","digital_tg_recv_atr_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_PORT100"],"series_id":"d7cd074c-db82-4528-8676-7c8e205b760a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-09-12 13:26:48 +0000 UTC FinishedAt: 2026-09-12 13:42:53 +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:*0c8d5dee-b3c7-4af1-8f80-2ff1034fdafa,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-workflow569zd/series-workflow569zd-convert-artifact-1623872801/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": "8734b7fb-96d9-4947-bdc6-874b13f86890", "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-workflow569zd/series-workflow569zd-build-action-1095445583/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow569zd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_PORT100"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"base_commit":"df2908090cda368b01ff43709f51890076c56157","base_tree":"axboe","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["digital_tg_recv_dep_req","digital_tg_send_dep_res","digital_tg_recv_atr_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_PORT100"],"series_id":"d7cd074c-db82-4528-8676-7c8e205b760a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-09-12 13:26:48 +0000 UTC FinishedAt: 2026-09-12 13:42:43 +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:*0c8d5dee-b3c7-4af1-8f80-2ff1034fdafa,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-workflow569zd/series-workflow569zd-convert-artifact-1623872801/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": "8734b7fb-96d9-4947-bdc6-874b13f86890", "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-workflow569zd/series-workflow569zd-build-action-1095445583/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow569zd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_PORT100"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"base_commit":"df2908090cda368b01ff43709f51890076c56157","base_tree":"axboe","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["digital_tg_recv_dep_req","digital_tg_send_dep_res","digital_tg_recv_atr_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_PORT100"],"series_id":"d7cd074c-db82-4528-8676-7c8e205b760a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-09-12 13:42:53 +0000 UTC FinishedAt: 2026-09-12 13:42:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflow569zd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_PORT100"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"base_commit":"df2908090cda368b01ff43709f51890076c56157","base_tree":"axboe","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["digital_tg_recv_dep_req","digital_tg_send_dep_res","digital_tg_recv_atr_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_PORT100"],"series_id":"d7cd074c-db82-4528-8676-7c8e205b760a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-09-12 13:42:53 +0000 UTC FinishedAt: 2026-09-12 13:42:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflow569zd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_PORT100"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"base_commit":"df2908090cda368b01ff43709f51890076c56157","base_tree":"axboe","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["digital_tg_recv_dep_req","digital_tg_send_dep_res","digital_tg_recv_atr_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_PORT100"],"series_id":"d7cd074c-db82-4528-8676-7c8e205b760a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-09-12 13:42:53 +0000 UTC FinishedAt: 2026-09-12 13:43:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflow569zd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_PORT100"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"base_commit":"df2908090cda368b01ff43709f51890076c56157","base_tree":"axboe","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["digital_tg_recv_dep_req","digital_tg_send_dep_res","digital_tg_recv_atr_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_PORT100"],"series_id":"d7cd074c-db82-4528-8676-7c8e205b760a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-09-12 13:42:53 +0000 UTC FinishedAt: 2026-09-12 13:42:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_PORT100"],"series_id":"d7cd074c-db82-4528-8676-7c8e205b760a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow569zd/series-workflow569zd-convert-artifact-774509684/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow569zd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_PORT100"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"base_commit":"df2908090cda368b01ff43709f51890076c56157","base_tree":"axboe","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["digital_tg_recv_dep_req","digital_tg_send_dep_res","digital_tg_recv_atr_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_PORT100"],"series_id":"d7cd074c-db82-4528-8676-7c8e205b760a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-09-12 13:43:03 +0000 UTC FinishedAt: 2026-09-12 13:44:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow569zd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_PORT100"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"base_commit":"df2908090cda368b01ff43709f51890076c56157","base_tree":"axboe","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["digital_tg_recv_dep_req","digital_tg_send_dep_res","digital_tg_recv_atr_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_PORT100"],"series_id":"d7cd074c-db82-4528-8676-7c8e205b760a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-09-12 13:43:03 +0000 UTC FinishedAt: 2026-09-12 13:44:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*8734b7fb-96d9-4947-bdc6-874b13f86890,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-workflow569zd/series-workflow569zd-build-action-1095445583/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-workflow569zd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_PORT100"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"base_commit":"df2908090cda368b01ff43709f51890076c56157","base_tree":"axboe","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["digital_tg_recv_dep_req","digital_tg_send_dep_res","digital_tg_recv_atr_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_PORT100"],"series_id":"d7cd074c-db82-4528-8676-7c8e205b760a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-09-12 13:44:59 +0000 UTC FinishedAt: 2026-09-12 13:44:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow569zd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_PORT100"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"base_commit":"df2908090cda368b01ff43709f51890076c56157","base_tree":"axboe","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["digital_tg_recv_dep_req","digital_tg_send_dep_res","digital_tg_recv_atr_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_PORT100"],"series_id":"d7cd074c-db82-4528-8676-7c8e205b760a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-09-12 13:44:59 +0000 UTC FinishedAt: 2026-09-12 13:44:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow569zd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_PORT100"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"base_commit":"df2908090cda368b01ff43709f51890076c56157","base_tree":"axboe","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["digital_tg_recv_dep_req","digital_tg_send_dep_res","digital_tg_recv_atr_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_PORT100"],"series_id":"d7cd074c-db82-4528-8676-7c8e205b760a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-09-12 13:44:59 +0000 UTC FinishedAt: 2026-09-12 14:01:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow569zd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_PORT100"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"base_commit":"df2908090cda368b01ff43709f51890076c56157","base_tree":"axboe","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["digital_tg_recv_dep_req","digital_tg_send_dep_res","digital_tg_recv_atr_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_PORT100"],"series_id":"d7cd074c-db82-4528-8676-7c8e205b760a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-09-12 13:44:59 +0000 UTC FinishedAt: 2026-09-12 14:01:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*0c8d5dee-b3c7-4af1-8f80-2ff1034fdafa,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-workflow569zd/series-workflow569zd-convert-artifact-774509684/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": "189719b2-5059-441d-a10f-484becc7335b", "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-workflow569zd/series-workflow569zd-build-action-3798550848/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow569zd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_PORT100"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"base_commit":"df2908090cda368b01ff43709f51890076c56157","base_tree":"axboe","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["digital_tg_recv_dep_req","digital_tg_send_dep_res","digital_tg_recv_atr_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_PORT100"],"series_id":"d7cd074c-db82-4528-8676-7c8e205b760a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-09-12 13:44:59 +0000 UTC FinishedAt: 2026-09-12 14:00:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*0c8d5dee-b3c7-4af1-8f80-2ff1034fdafa,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-workflow569zd/series-workflow569zd-convert-artifact-774509684/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": "189719b2-5059-441d-a10f-484becc7335b", "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-workflow569zd/series-workflow569zd-build-action-3798550848/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow569zd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_PORT100"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"base_commit":"df2908090cda368b01ff43709f51890076c56157","base_tree":"axboe","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["digital_tg_recv_dep_req","digital_tg_send_dep_res","digital_tg_recv_atr_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_PORT100"],"series_id":"d7cd074c-db82-4528-8676-7c8e205b760a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-09-12 14:01:06 +0000 UTC FinishedAt: 2026-09-12 14:01:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow569zd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_PORT100"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"base_commit":"df2908090cda368b01ff43709f51890076c56157","base_tree":"axboe","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["digital_tg_recv_dep_req","digital_tg_send_dep_res","digital_tg_recv_atr_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_PORT100"],"series_id":"d7cd074c-db82-4528-8676-7c8e205b760a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-09-12 14:01:06 +0000 UTC FinishedAt: 2026-09-12 14:01:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow569zd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_PORT100"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"base_commit":"df2908090cda368b01ff43709f51890076c56157","base_tree":"axboe","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["digital_tg_recv_dep_req","digital_tg_send_dep_res","digital_tg_recv_atr_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_PORT100"],"series_id":"d7cd074c-db82-4528-8676-7c8e205b760a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-09-12 14:01:06 +0000 UTC FinishedAt: 2026-09-12 14:03:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflow569zd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_PORT100"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"base_commit":"df2908090cda368b01ff43709f51890076c56157","base_tree":"axboe","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["digital_tg_recv_dep_req","digital_tg_send_dep_res","digital_tg_recv_atr_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_PORT100"],"series_id":"d7cd074c-db82-4528-8676-7c8e205b760a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-09-12 14:01:06 +0000 UTC FinishedAt: 2026-09-12 14:03:13 +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:*189719b2-5059-441d-a10f-484becc7335b,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-workflow569zd/series-workflow569zd-build-action-3798550848/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-workflow569zd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_PORT100"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"base_commit":"df2908090cda368b01ff43709f51890076c56157","base_tree":"axboe","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["digital_tg_recv_dep_req","digital_tg_send_dep_res","digital_tg_recv_atr_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_PORT100"],"series_id":"d7cd074c-db82-4528-8676-7c8e205b760a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-09-12 14:03:23 +0000 UTC FinishedAt: 2026-09-12 15:00:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow569zd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_PORT100"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"base_commit":"df2908090cda368b01ff43709f51890076c56157","base_tree":"axboe","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["digital_tg_recv_dep_req","digital_tg_send_dep_res","digital_tg_recv_atr_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_PORT100"],"series_id":"d7cd074c-db82-4528-8676-7c8e205b760a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-09-12 14:03:23 +0000 UTC FinishedAt: 2026-09-12 15:00:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"base_commit":"df2908090cda368b01ff43709f51890076c56157","base_tree":"axboe","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["digital_tg_recv_dep_req","digital_tg_send_dep_res","digital_tg_recv_atr_req"],"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:*8734b7fb-96d9-4947-bdc6-874b13f86890,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*189719b2-5059-441d-a10f-484becc7335b,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-workflow569zd/series-workflow569zd-build-action-1095445583/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-workflow569zd/series-workflow569zd-build-action-3798550848/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow569zd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_PORT100"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"base_commit":"df2908090cda368b01ff43709f51890076c56157","base_tree":"axboe","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["digital_tg_recv_dep_req","digital_tg_send_dep_res","digital_tg_recv_atr_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_PORT100"],"series_id":"d7cd074c-db82-4528-8676-7c8e205b760a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-09-12 14:03:23 +0000 UTC FinishedAt: 2026-09-12 14:03:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflow569zd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_PORT100"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"base_commit":"df2908090cda368b01ff43709f51890076c56157","base_tree":"axboe","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["digital_tg_recv_dep_req","digital_tg_send_dep_res","digital_tg_recv_atr_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_PORT100"],"series_id":"d7cd074c-db82-4528-8676-7c8e205b760a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-09-12 14:03:23 +0000 UTC FinishedAt: 2026-09-12 14:03:29 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"base_commit":"df2908090cda368b01ff43709f51890076c56157","base_tree":"axboe","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["digital_tg_recv_dep_req","digital_tg_send_dep_res","digital_tg_recv_atr_req"],"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-workflow569zd/series-workflow569zd-convert-artifact-128061853/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow569zd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_PORT100"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"base_commit":"df2908090cda368b01ff43709f51890076c56157","base_tree":"axboe","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["digital_tg_recv_dep_req","digital_tg_send_dep_res","digital_tg_recv_atr_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_PORT100"],"series_id":"d7cd074c-db82-4528-8676-7c8e205b760a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-09-12 14:03:23 +0000 UTC FinishedAt: 2026-09-12 14:03:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflow569zd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_PORT100"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"base_commit":"df2908090cda368b01ff43709f51890076c56157","base_tree":"axboe","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["digital_tg_recv_dep_req","digital_tg_send_dep_res","digital_tg_recv_atr_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_PORT100"],"series_id":"d7cd074c-db82-4528-8676-7c8e205b760a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-09-12 14:03:23 +0000 UTC FinishedAt: 2026-09-12 14:03:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflow569zd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_PORT100"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"base_commit":"df2908090cda368b01ff43709f51890076c56157","base_tree":"axboe","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["digital_tg_recv_dep_req","digital_tg_send_dep_res","digital_tg_recv_atr_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_PORT100"],"series_id":"d7cd074c-db82-4528-8676-7c8e205b760a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-09-12 14:03:23 +0000 UTC FinishedAt: 2026-09-12 14:03:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflow569zd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_PORT100"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"base_commit":"df2908090cda368b01ff43709f51890076c56157","base_tree":"axboe","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["digital_tg_recv_dep_req","digital_tg_send_dep_res","digital_tg_recv_atr_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_PORT100"],"series_id":"d7cd074c-db82-4528-8676-7c8e205b760a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-09-12 14:03:33 +0000 UTC FinishedAt: 2026-09-12 15:00:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow569zd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_PORT100"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"base_commit":"df2908090cda368b01ff43709f51890076c56157","base_tree":"axboe","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["digital_tg_recv_dep_req","digital_tg_send_dep_res","digital_tg_recv_atr_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_PORT100"],"series_id":"d7cd074c-db82-4528-8676-7c8e205b760a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-09-12 14:03:33 +0000 UTC FinishedAt: 2026-09-12 15:00:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*8734b7fb-96d9-4947-bdc6-874b13f86890,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*189719b2-5059-441d-a10f-484becc7335b,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-workflow569zd/series-workflow569zd-build-action-1095445583/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-workflow569zd/series-workflow569zd-build-action-3798550848/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-workflow569zd/series-workflow569zd-convert-artifact-128061853/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,}