Name: series-workflowcjhrk Phase: Running StartedAt: 2026-06-24 03:49:51 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcjhrk[0] Phase: Running StartedAt: 2026-06-24 03:49:51 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcjhrk[0].run-triage Phase: Running StartedAt: 2026-06-24 03:49:51 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcjhrk[0].run-triage(0) Phase: Running StartedAt: 2026-06-24 03:49:51 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "972c4dd19cb92e03d75b66c426cfade07582a1ba", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "RTW89_CORE", "RTW89_8852AE", "RTW89_8852AU", "RTW89_8922AE", "RTW89_8922AU" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "972c4dd19cb92e03d75b66c426cfade07582a1ba", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "RTW89_CORE", "RTW89_8852AE", "RTW89_8852AU", "RTW89_8922AE", "RTW89_8922AU" ], "series_id": "d9d4d6ed-28cb-4644-b835-9bf1fb19cb98" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "rtw89_fw_h2c_cxdrv_trx_v7", "rtw89_fw_h2c_cxdrv_trx_v9", "rtw89_fw_h2c_cxtxpwr_v7", "rtw89_fw_h2c_cxtxpwr_v9", "_set_wl_tx_power", "_set_wl_rx_gain", "_set_rf_trx_para", "_update_bt_scbd", "_chk_btc_report", "rtw89_btc_c2h_handle" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDAzOjU2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JUVzg5X0NPUkUmIzM0OywKICAgICYjMzQ7UlRXODlfODg1MkFFJiMzNDssCiAgICAmIzM0O1JUVzg5Xzg4NTJBVSYjMzQ7LAogICAgJiMzNDtSVFc4OV84OTIyQUUmIzM0OywKICAgICYjMzQ7UlRXODlfODkyMkFVJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cnR3ODlfZndfaDJjX2N4ZHJ2X3RyeF92NyYjMzQ7LAogICAgJiMzNDtydHc4OV9md19oMmNfY3hkcnZfdHJ4X3Y5JiMzNDssCiAgICAmIzM0O3J0dzg5X2Z3X2gyY19jeHR4cHdyX3Y3JiMzNDssCiAgICAmIzM0O3J0dzg5X2Z3X2gyY19jeHR4cHdyX3Y5JiMzNDssCiAgICAmIzM0O19zZXRfd2xfdHhfcG93ZXImIzM0OywKICAgICYjMzQ7X3NldF93bF9yeF9nYWluJiMzNDssCiAgICAmIzM0O19zZXRfcmZfdHJ4X3BhcmEmIzM0OywKICAgICYjMzQ7X3VwZGF0ZV9idF9zY2JkJiMzNDssCiAgICAmIzM0O19jaGtfYnRjX3JlcG9ydCYjMzQ7LAogICAgJiMzNDtydHc4OV9idGNfYzJoX2hhbmRsZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCB1cGRhdGVzIHRoZSBCbHVldG9vdGggY29leGlzdGVuY2UgKEJUQykgbG9naWMgZm9yIFJlYWx0ZWsgV2ktRmkgZHJpdmVycyAocnR3ODkpLiBJdCBhZGRzIHN1cHBvcnQgZm9yIG5ldyBmaXJtd2FyZSB2ZXJzaW9ucyAodjcsIHY5KSBhbmQgbmV3IGhhcmR3YXJlIChSVEw4OTIyRCksIG1vZGlmeWluZyBob3cgUkYgVFgvUlggcGFyYW1ldGVycyBhcmUgY29uZmlndXJlZCBhbmQgaG93IEJUQyByZXBvcnRzIGFyZSBoYW5kbGVkLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBkcml2ZXImIzM5O3MgY29yZSBsb2dpYyBhbmQgZmlybXdhcmUgY29tbXVuaWNhdGlvbiwgd2hpY2ggY2FuIGJlIHJlYWNoZWQgdmlhIHNvZnR3YXJlLWVtdWxhdGVkIFVTQi9QQ0kgZGV2aWNlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAwMzo1NjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDBkMDJhNWY5ZjdiNGRiODA4MTRlZjIyY2I5ZTUzNjA5MWU2NWQ3MDJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1biAyNCAwMzo1NjoyNCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jXG5pbmRleCAwZjdhZTU3MmVmOTE1MS4uMTM2MWQ0ZDU0NTI4MjEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmNcbkBAIC0xMSw3ICYjNDM7MTEsNyBAQFxuICNpbmNsdWRlIFwmIzM0O3BzLmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDtyZWcuaFwmIzM0O1xuIFxuLSNkZWZpbmUgUlRXODlfQ09FWF9WRVJTSU9OIDB4MDkwMDAwMTNcbiYjNDM7I2RlZmluZSBSVFc4OV9DT0VYX1ZFUlNJT04gMHgwOTAwMDExM1xuICNkZWZpbmUgRkNYREVGX1NURVAgNTAgLyogTVVTVCBcdTAwM2M9IEZDWE1BWF9TVEVQIGFuZCBtYXRjaCB3aXRoIHdsIGZ3Ki9cbiAjZGVmaW5lIEJUQ19FMkdfTElNSVRfREVGIDgwXG4gXG5AQCAtMTMzLDEyNSAmIzQzOzEzMywxNDkgQEAgc3RhdGljIGNvbnN0IHUzMiBjeHRibFtdID0ge1xuIFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3ZlciBydHc4OV9idGNfdmVyX2RlZnNbXSA9IHtcbiBcdC8qIGZpcm13YXJlIHZlcnNpb24gbXVzdCBiZSBpbiBkZWNyZWFzaW5nIG9yZGVyIGZvciBlYWNoIGNoaXAgKi9cbiYjNDM7XHR7UlRMODkyMkQsIFJUVzg5X0ZXX1ZFUl9DT0RFKDAsIDM1LCA5NCwgMCksXG4mIzQzO1x0IC5mY3hidGNycHQgPSAxMSwgLmZjeHRkbWEgPSA4LCAgICAuZmN4c2xvdHMgPSA3LCAuZmN4Y3lzdGEgPSA4LFxuJiM0MztcdCAuZmN4c3RlcCA9IDcsICAgIC5mY3hudWxsc3RhID0gNywgLmZjeG1yZWcgPSA3LCAgLmZjeGdwaW9kYmcgPSA4LFxuJiM0MztcdCAuZmN4YnR2ZXIgPSA4LCAgIC5mY3hidHNjYW4gPSA4LCAgLmZjeGJ0YWZoID0gOCwgLmZjeGJ0ZGV2aW5mbyA9IDgsXG4mIzQzO1x0IC5md2xyb2xlID0gMTAsICAgIC5mcnB0bWFwID0gNSwgICAgLmZjeGN0cmwgPSA5LCAgLmZjeGluaXQgPSAxMCxcbiYjNDM7XHQgLmZ3ZXZudHJwdGwgPSAxLCAgLmZ3YzJoZnVuYyA9IDQsIC5kcnZpbmZvX3ZlciA9IDMsIC5pbmZvX2J1ZiA9IDE4MDAsXG4mIzQzO1x0IC5tYXhfcm9sZV9udW0gPSA2LCAuZmN4b3NpID0gNiwgICAuZmN4bWxvID0gMiwgICAuYnRfZGVzaXJlZCA9IDgsXG4mIzQzO1x0IC5mY3h0cnggPSA5LFxuJiM0MztcdH0sXG4gXHR7UlRMODg1MkJULCBSVFc4OV9GV19WRVJfQ09ERSgwLCAyOSwgMTIyLCAwKSxcbiBcdCAuZmN4YnRjcnB0ID0gOCwgLmZjeHRkbWEgPSA3LCAgICAuZmN4c2xvdHMgPSA3LCAuZmN4Y3lzdGEgPSA3LFxuIFx0IC5mY3hzdGVwID0gNywgICAuZmN4bnVsbHN0YSA9IDcsIC5mY3htcmVnID0gNywgIC5mY3hncGlvZGJnID0gNyxcbiBcdCAuZmN4YnR2ZXIgPSA3LCAgLmZjeGJ0c2NhbiA9IDcsICAuZmN4YnRhZmggPSA3LCAuZmN4YnRkZXZpbmZvID0gNyxcbiBcdCAuZndscm9sZSA9IDcsICAgLmZycHRtYXAgPSAzLCAgICAuZmN4Y3RybCA9IDcsICAuZmN4aW5pdCA9IDcsXG4tXHQgLmZ3ZXZudHJwdGwgPSAxLCAuZndjMmhmdW5jID0gMiwgLmRydmluZm9fdHlwZSA9IDEsIC5pbmZvX2J1ZiA9IDE4MDAsXG4mIzQzO1x0IC5md2V2bnRycHRsID0gMSwgLmZ3YzJoZnVuYyA9IDIsIC5kcnZpbmZvX3ZlciA9IDEsIC5pbmZvX2J1ZiA9IDE4MDAsXG4gXHQgLm1heF9yb2xlX251bSA9IDYsIC5mY3hvc2kgPSAwLCAgLmZjeG1sbyA9IDAsICAgLmJ0X2Rlc2lyZWQgPSA4LFxuJiM0MztcdCAuZmN4dHJ4ID0gMCxcbiBcdH0sXG4gXHR7UlRMODg1MkJULCBSVFc4OV9GV19WRVJfQ09ERSgwLCAyOSwgOTAsIDApLFxuIFx0IC5mY3hidGNycHQgPSA3LCAuZmN4dGRtYSA9IDcsICAgIC5mY3hzbG90cyA9IDcsIC5mY3hjeXN0YSA9IDcsXG4gXHQgLmZjeHN0ZXAgPSA3LCAgIC5mY3hudWxsc3RhID0gNywgLmZjeG1yZWcgPSA3LCAgLmZjeGdwaW9kYmcgPSA3LFxuIFx0IC5mY3hidHZlciA9IDcsICAuZmN4YnRzY2FuID0gNywgIC5mY3hidGFmaCA9IDcsIC5mY3hidGRldmluZm8gPSA3LFxuIFx0IC5md2xyb2xlID0gNywgICAuZnJwdG1hcCA9IDMsICAgIC5mY3hjdHJsID0gNywgIC5mY3hpbml0ID0gNyxcbi1cdCAuZndldm50cnB0bCA9IDEsIC5md2MyaGZ1bmMgPSAyLCAuZHJ2aW5mb190eXBlID0gMSwgLmluZm9fYnVmID0gMTgwMCxcbiYjNDM7XHQgLmZ3ZXZudHJwdGwgPSAxLCAuZndjMmhmdW5jID0gMiwgLmRydmluZm9fdmVyID0gMSwgLmluZm9fYnVmID0gMTgwMCxcbiBcdCAubWF4X3JvbGVfbnVtID0gNiwgLmZjeG9zaSA9IDAsICAuZmN4bWxvID0gMCwgICAuYnRfZGVzaXJlZCA9IDgsXG4mIzQzO1x0IC5mY3h0cnggPSAwLFxuIFx0fSxcbiBcdHtSVEw4OTIyQSwgUlRXODlfRldfVkVSX0NPREUoMCwgMzUsIDcxLCAwKSxcbiBcdCAuZmN4YnRjcnB0ID0gOCwgLmZjeHRkbWEgPSA3LCAgICAuZmN4c2xvdHMgPSA3LCAuZmN4Y3lzdGEgPSA3LFxuIFx0IC5mY3hzdGVwID0gNywgICAuZmN4bnVsbHN0YSA9IDcsIC5mY3htcmVnID0gNywgIC5mY3hncGlvZGJnID0gNyxcbiBcdCAuZmN4YnR2ZXIgPSA3LCAgLmZjeGJ0c2NhbiA9IDcsICAuZmN4YnRhZmggPSA3LCAuZmN4YnRkZXZpbmZvID0gNyxcbiBcdCAuZndscm9sZSA9IDgsICAgLmZycHRtYXAgPSA0LCAgICAuZmN4Y3RybCA9IDcsICAuZmN4aW5pdCA9IDcsXG4tXHQgLmZ3ZXZudHJwdGwgPSAxLCAuZndjMmhmdW5jID0gMywgLmRydmluZm9fdHlwZSA9IDIsIC5pbmZvX2J1ZiA9IDE4MDAsXG4mIzQzO1x0IC5md2V2bnRycHRsID0gMSwgLmZ3YzJoZnVuYyA9IDMsIC5kcnZpbmZvX3ZlciA9IDMsIC5pbmZvX2J1ZiA9IDE4MDAsXG4gXHQgLm1heF9yb2xlX251bSA9IDYsIC5mY3hvc2kgPSAxLCAgLmZjeG1sbyA9IDEsICAgLmJ0X2Rlc2lyZWQgPSA5LFxuJiM0MztcdCAuZmN4dHJ4ID0gNyxcbiBcdH0sXG4gXHR7UlRMODkyMkEsIFJUVzg5X0ZXX1ZFUl9DT0RFKDAsIDM1LCA2MywgMCksXG4gXHQgLmZjeGJ0Y3JwdCA9IDgsIC5mY3h0ZG1hID0gNywgICAgLmZjeHNsb3RzID0gNywgLmZjeGN5c3RhID0gNyxcbiBcdCAuZmN4c3RlcCA9IDcsICAgLmZjeG51bGxzdGEgPSA3LCAuZmN4bXJlZyA9IDcsICAuZmN4Z3Bpb2RiZyA9IDcsXG4gXHQgLmZjeGJ0dmVyID0gNywgIC5mY3hidHNjYW4gPSA3LCAgLmZjeGJ0YWZoID0gNywgLmZjeGJ0ZGV2aW5mbyA9IDcsXG4gXHQgLmZ3bHJvbGUgPSA4LCAgIC5mcnB0bWFwID0gNCwgICAgLmZjeGN0cmwgPSA3LCAgLmZjeGluaXQgPSA3LFxuLVx0IC5md2V2bnRycHRsID0gMSwgLmZ3YzJoZnVuYyA9IDMsIC5kcnZpbmZvX3R5cGUgPSAyLCAuaW5mb19idWYgPSAxODAwLFxuJiM0MztcdCAuZndldm50cnB0bCA9IDEsIC5md2MyaGZ1bmMgPSAzLCAuZHJ2aW5mb192ZXIgPSAyLCAuaW5mb19idWYgPSAxODAwLFxuIFx0IC5tYXhfcm9sZV9udW0gPSA2LCAuZmN4b3NpID0gMSwgIC5mY3htbG8gPSAxLCAgIC5idF9kZXNpcmVkID0gOSxcbiYjNDM7XHQgLmZjeHRyeCA9IDAsXG4gXHR9LFxuIFx0e1JUTDg5MjJBLCBSVFc4OV9GV19WRVJfQ09ERSgwLCAzNSwgOCwgMCksXG4gXHQgLmZjeGJ0Y3JwdCA9IDgsIC5mY3h0ZG1hID0gNywgICAgLmZjeHNsb3RzID0gNywgLmZjeGN5c3RhID0gNyxcbiBcdCAuZmN4c3RlcCA9IDcsICAgLmZjeG51bGxzdGEgPSA3LCAuZmN4bXJlZyA9IDcsICAuZmN4Z3Bpb2RiZyA9IDcsXG4gXHQgLmZjeGJ0dmVyID0gNywgIC5mY3hidHNjYW4gPSA3LCAgLmZjeGJ0YWZoID0gNywgLmZjeGJ0ZGV2aW5mbyA9IDcsXG4gXHQgLmZ3bHJvbGUgPSA4LCAgIC5mcnB0bWFwID0gMywgICAgLmZjeGN0cmwgPSA3LCAgLmZjeGluaXQgPSA3LFxuLVx0IC5md2V2bnRycHRsID0gMSwgLmZ3YzJoZnVuYyA9IDEsIC5kcnZpbmZvX3R5cGUgPSAxLCAuaW5mb19idWYgPSAxODAwLFxuJiM0MztcdCAuZndldm50cnB0bCA9IDEsIC5md2MyaGZ1bmMgPSAxLCAuZHJ2aW5mb192ZXIgPSAxLCAuaW5mb19idWYgPSAxODAwLFxuIFx0IC5tYXhfcm9sZV9udW0gPSA2LCAuZmN4b3NpID0gMCwgIC5mY3htbG8gPSAwLCAgIC5idF9kZXNpcmVkID0gNyxcbiYjNDM7XHQgLmZjeHRyeCA9IDAsXG4gXHR9LFxuIFx0e1JUTDg4NTFCLCBSVFc4OV9GV19WRVJfQ09ERSgwLCAyOSwgMjksIDApLFxuIFx0IC5mY3hidGNycHQgPSAxMDUsIC5mY3h0ZG1hID0gMywgICAgLmZjeHNsb3RzID0gMSwgLmZjeGN5c3RhID0gNSxcbiBcdCAuZmN4c3RlcCA9IDMsICAgLmZjeG51bGxzdGEgPSAyLCAuZmN4bXJlZyA9IDIsICAuZmN4Z3Bpb2RiZyA9IDEsXG4gXHQgLmZjeGJ0dmVyID0gMSwgIC5mY3hidHNjYW4gPSAyLCAgLmZjeGJ0YWZoID0gMiwgLmZjeGJ0ZGV2aW5mbyA9IDEsXG4gXHQgLmZ3bHJvbGUgPSAyLCAgIC5mcnB0bWFwID0gMywgICAgLmZjeGN0cmwgPSAxLCAgLmZjeGluaXQgPSAwLFxuLVx0IC5md2V2bnRycHRsID0gMCwgLmZ3YzJoZnVuYyA9IDEsIC5kcnZpbmZvX3R5cGUgPSAwLCAuaW5mb19idWYgPSAxODAwLFxuJiM0MztcdCAuZndldm50cnB0bCA9IDAsIC5md2MyaGZ1bmMgPSAxLCAuZHJ2aW5mb192ZXIgPSAwLCAuaW5mb19idWYgPSAxODAwLFxuIFx0IC5tYXhfcm9sZV9udW0gPSA2LCAuZmN4b3NpID0gMCwgIC5mY3htbG8gPSAwLCAgIC5idF9kZXNpcmVkID0gNyxcbiYjNDM7XHQgLmZjeHRyeCA9IDAsXG4gXHR9LFxuIFx0e1JUTDg4NTJDLCBSVFc4OV9GV19WRVJfQ09ERSgwLCAyNywgNTcsIDApLFxuIFx0IC5mY3hidGNycHQgPSA0LCAuZmN4dGRtYSA9IDMsICAgIC5mY3hzbG90cyA9IDEsIC5mY3hjeXN0YSA9IDMsXG4gXHQgLmZjeHN0ZXAgPSAzLCAgIC5mY3hudWxsc3RhID0gMiwgLmZjeG1yZWcgPSAxLCAgLmZjeGdwaW9kYmcgPSAxLFxuIFx0IC5mY3hidHZlciA9IDEsICAuZmN4YnRzY2FuID0gMSwgIC5mY3hidGFmaCA9IDIsIC5mY3hidGRldmluZm8gPSAxLFxuIFx0IC5md2xyb2xlID0gMSwgICAuZnJwdG1hcCA9IDMsICAgIC5mY3hjdHJsID0gMSwgIC5mY3hpbml0ID0gMCxcbi1cdCAuZndldm50cnB0bCA9IDAsIC5md2MyaGZ1bmMgPSAxLCAuZHJ2aW5mb190eXBlID0gMCwgLmluZm9fYnVmID0gMTI4MCxcbiYjNDM7XHQgLmZ3ZXZudHJwdGwgPSAwLCAuZndjMmhmdW5jID0gMSwgLmRydmluZm9fdmVyID0gMCwgLmluZm9fYnVmID0gMTI4MCxcbiBcdCAubWF4X3JvbGVfbnVtID0gNSwgLmZjeG9zaSA9IDAsICAuZmN4bWxvID0gMCwgICAuYnRfZGVzaXJlZCA9IDcsXG4mIzQzO1x0IC5mY3h0cnggPSAwLFxuIFx0fSxcbiBcdHtSVEw4ODUyQywgUlRXODlfRldfVkVSX0NPREUoMCwgMjcsIDQyLCAwKSxcbiBcdCAuZmN4YnRjcnB0ID0gNCwgLmZjeHRkbWEgPSAzLCAgICAuZmN4c2xvdHMgPSAxLCAuZmN4Y3lzdGEgPSAzLFxuIFx0IC5mY3hzdGVwID0gMywgICAuZmN4bnVsbHN0YSA9IDIsIC5mY3htcmVnID0gMSwgIC5mY3hncGlvZGJnID0gMSxcbiBcdCAuZmN4YnR2ZXIgPSAxLCAgLmZjeGJ0c2NhbiA9IDEsICAuZmN4YnRhZmggPSAyLCAuZmN4YnRkZXZpbmZvID0gMSxcbiBcdCAuZndscm9sZSA9IDEsICAgLmZycHRtYXAgPSAyLCAgICAuZmN4Y3RybCA9IDEsICAuZmN4aW5pdCA9IDAsXG4tXHQgLmZ3ZXZudHJwdGwgPSAwLCAuZndjMmhmdW5jID0gMSwgLmRydmluZm9fdHlwZSA9IDAsIC5pbmZvX2J1ZiA9IDEyODAsXG4mIzQzO1x0IC5md2V2bnRycHRsID0gMCwgLmZ3YzJoZnVuYyA9IDEsIC5kcnZpbmZvX3ZlciA9IDAsIC5pbmZvX2J1ZiA9IDEyODAsXG4gXHQgLm1heF9yb2xlX251bSA9IDUsIC5mY3hvc2kgPSAwLCAgLmZjeG1sbyA9IDAsICAgLmJ0X2Rlc2lyZWQgPSA3LFxuJiM0MztcdCAuZmN4dHJ4ID0gMCxcbiBcdH0sXG4gXHR7UlRMODg1MkMsIFJUVzg5X0ZXX1ZFUl9DT0RFKDAsIDI3LCAwLCAwKSxcbiBcdCAuZmN4YnRjcnB0ID0gNCwgLmZjeHRkbWEgPSAzLCAgICAuZmN4c2xvdHMgPSAxLCAuZmN4Y3lzdGEgPSAzLFxuIFx0IC5mY3hzdGVwID0gMywgICAuZmN4bnVsbHN0YSA9IDIsIC5mY3htcmVnID0gMSwgIC5mY3hncGlvZGJnID0gMSxcbiBcdCAuZmN4YnR2ZXIgPSAxLCAgLmZjeGJ0c2NhbiA9IDEsICAuZmN4YnRhZmggPSAxLCAuZmN4YnRkZXZpbmZvID0gMSxcbiBcdCAuZndscm9sZSA9IDEsICAgLmZycHRtYXAgPSAyLCAgICAuZmN4Y3RybCA9IDEsICAuZmN4aW5pdCA9IDAsXG4tXHQgLmZ3ZXZudHJwdGwgPSAwLCAuZndjMmhmdW5jID0gMSwgLmRydmluZm9fdHlwZSA9IDAsIC5pbmZvX2J1ZiA9IDEyODAsXG4mIzQzO1x0IC5md2V2bnRycHRsID0gMCwgLmZ3YzJoZnVuYyA9IDEsIC5kcnZpbmZvX3ZlciA9IDAsIC5pbmZvX2J1ZiA9IDEyODAsXG4gXHQgLm1heF9yb2xlX251bSA9IDUsIC5mY3hvc2kgPSAwLCAgLmZjeG1sbyA9IDAsICAgLmJ0X2Rlc2lyZWQgPSA3LFxuJiM0MztcdCAuZmN4dHJ4ID0gMCxcbiBcdH0sXG4gXHR7UlRMODg1MkIsIFJUVzg5X0ZXX1ZFUl9DT0RFKDAsIDI5LCAxMjIsIDApLFxuIFx0IC5mY3hidGNycHQgPSA4LCAuZmN4dGRtYSA9IDcsICAgIC5mY3hzbG90cyA9IDcsIC5mY3hjeXN0YSA9IDcsXG4gXHQgLmZjeHN0ZXAgPSA3LCAgIC5mY3hudWxsc3RhID0gNywgLmZjeG1yZWcgPSA3LCAgLmZjeGdwaW9kYmcgPSA3LFxuIFx0IC5mY3hidHZlciA9IDcsICAuZmN4YnRzY2FuID0gNywgIC5mY3hidGFmaCA9IDcsIC5mY3hidGRldmluZm8gPSA3LFxuIFx0IC5md2xyb2xlID0gNywgICAuZnJwdG1hcCA9IDMsICAgIC5mY3hjdHJsID0gNywgIC5mY3hpbml0ID0gNyxcbi1cdCAuZndldm50cnB0bCA9IDEsIC5md2MyaGZ1bmMgPSAyLCAuZHJ2aW5mb190eXBlID0gMSwgLmluZm9fYnVmID0gMTgwMCxcbiYjNDM7XHQgLmZ3ZXZudHJwdGwgPSAxLCAuZndjMmhmdW5jID0gMiwgLmRydmluZm9fdmVyID0gMSwgLmluZm9fYnVmID0gMTgwMCxcbiBcdCAubWF4X3JvbGVfbnVtID0gNiwgLmZjeG9zaSA9IDAsICAuZmN4bWxvID0gMCwgICAuYnRfZGVzaXJlZCA9IDgsXG4mIzQzO1x0IC5mY3h0cnggPSAwLFxuIFx0fSxcbiBcdHtSVEw4ODUyQiwgUlRXODlfRldfVkVSX0NPREUoMCwgMjksIDI5LCAwKSxcbiBcdCAuZmN4YnRjcnB0ID0gMTA1LCAuZmN4dGRtYSA9IDMsICAuZmN4c2xvdHMgPSAxLCAuZmN4Y3lzdGEgPSA1LFxuIFx0IC5mY3hzdGVwID0gMywgICAuZmN4bnVsbHN0YSA9IDIsIC5mY3htcmVnID0gMiwgIC5mY3hncGlvZGJnID0gMSxcbiBcdCAuZmN4YnR2ZXIgPSAxLCAgLmZjeGJ0c2NhbiA9IDIsICAuZmN4YnRhZmggPSAyLCAuZmN4YnRkZXZpbmZvID0gMSxcbiBcdCAuZndscm9sZSA9IDIsICAgLmZycHRtYXAgPSAzLCAgICAuZmN4Y3RybCA9IDEsICAuZmN4aW5pdCA9IDAsXG4tXHQgLmZ3ZXZudHJwdGwgPSAwLCAuZndjMmhmdW5jID0gMSwgLmRydmluZm9fdHlwZSA9IDAsIC5pbmZvX2J1ZiA9IDE4MDAsXG4mIzQzO1x0IC5md2V2bnRycHRsID0gMCwgLmZ3YzJoZnVuYyA9IDEsIC5kcnZpbmZvX3ZlciA9IDAsIC5pbmZvX2J1ZiA9IDE4MDAsXG4gXHQgLm1heF9yb2xlX251bSA9IDYsIC5mY3hvc2kgPSAwLCAgLmZjeG1sbyA9IDAsICAgLmJ0X2Rlc2lyZWQgPSA3LFxuJiM0MztcdCAuZmN4dHJ4ID0gMCxcbiBcdH0sXG4gXHR7UlRMODg1MkIsIFJUVzg5X0ZXX1ZFUl9DT0RFKDAsIDI5LCAxNCwgMCksXG4gXHQgLmZjeGJ0Y3JwdCA9IDUsIC5mY3h0ZG1hID0gMywgICAgLmZjeHNsb3RzID0gMSwgLmZjeGN5c3RhID0gNCxcbiBcdCAuZmN4c3RlcCA9IDMsICAgLmZjeG51bGxzdGEgPSAyLCAuZmN4bXJlZyA9IDEsICAuZmN4Z3Bpb2RiZyA9IDEsXG4gXHQgLmZjeGJ0dmVyID0gMSwgIC5mY3hidHNjYW4gPSAxLCAgLmZjeGJ0YWZoID0gMiwgLmZjeGJ0ZGV2aW5mbyA9IDEsXG4gXHQgLmZ3bHJvbGUgPSAxLCAgIC5mcnB0bWFwID0gMywgICAgLmZjeGN0cmwgPSAxLCAgLmZjeGluaXQgPSAwLFxuLVx0IC5md2V2bnRycHRsID0gMCwgLmZ3YzJoZnVuYyA9IDEsIC5kcnZpbmZvX3R5cGUgPSAwLCAuaW5mb19idWYgPSAxODAwLFxuJiM0MztcdCAuZndldm50cnB0bCA9IDAsIC5md2MyaGZ1bmMgPSAxLCAuZHJ2aW5mb192ZXIgPSAwLCAuaW5mb19idWYgPSAxODAwLFxuIFx0IC5tYXhfcm9sZV9udW0gPSA2LCAuZmN4b3NpID0gMCwgIC5mY3htbG8gPSAwLCAgIC5idF9kZXNpcmVkID0gNyxcbiYjNDM7XHQgLmZjeHRyeCA9IDAsXG4gXHR9LFxuIFx0e1JUTDg4NTJCLCBSVFc4OV9GV19WRVJfQ09ERSgwLCAyNywgMCwgMCksXG4gXHQgLmZjeGJ0Y3JwdCA9IDQsIC5mY3h0ZG1hID0gMywgICAgLmZjeHNsb3RzID0gMSwgLmZjeGN5c3RhID0gMyxcbiBcdCAuZmN4c3RlcCA9IDMsICAgLmZjeG51bGxzdGEgPSAyLCAuZmN4bXJlZyA9IDEsICAuZmN4Z3Bpb2RiZyA9IDEsXG4gXHQgLmZjeGJ0dmVyID0gMSwgIC5mY3hidHNjYW4gPSAxLCAgLmZjeGJ0YWZoID0gMSwgLmZjeGJ0ZGV2aW5mbyA9IDEsXG4gXHQgLmZ3bHJvbGUgPSAxLCAgIC5mcnB0bWFwID0gMSwgICAgLmZjeGN0cmwgPSAxLCAgLmZjeGluaXQgPSAwLFxuLVx0IC5md2V2bnRycHRsID0gMCwgLmZ3YzJoZnVuYyA9IDEsIC5kcnZpbmZvX3R5cGUgPSAwLCAuaW5mb19idWYgPSAxMjgwLFxuJiM0MztcdCAuZndldm50cnB0bCA9IDAsIC5md2MyaGZ1bmMgPSAxLCAuZHJ2aW5mb192ZXIgPSAwLCAuaW5mb19idWYgPSAxMjgwLFxuIFx0IC5tYXhfcm9sZV9udW0gPSA1LCAuZmN4b3NpID0gMCwgIC5mY3htbG8gPSAwLCAgIC5idF9kZXNpcmVkID0gNyxcbiYjNDM7XHQgLmZjeHRyeCA9IDAsXG4gXHR9LFxuIFx0e1JUTDg4NTJBLCBSVFc4OV9GV19WRVJfQ09ERSgwLCAxMywgMzcsIDApLFxuIFx0IC5mY3hidGNycHQgPSA0LCAuZmN4dGRtYSA9IDMsICAgIC5mY3hzbG90cyA9IDEsIC5mY3hjeXN0YSA9IDMsXG4gXHQgLmZjeHN0ZXAgPSAzLCAgIC5mY3hudWxsc3RhID0gMiwgLmZjeG1yZWcgPSAxLCAgLmZjeGdwaW9kYmcgPSAxLFxuIFx0IC5mY3hidHZlciA9IDEsICAuZmN4YnRzY2FuID0gMSwgIC5mY3hidGFmaCA9IDIsIC5mY3hidGRldmluZm8gPSAxLFxuIFx0IC5md2xyb2xlID0gMSwgICAuZnJwdG1hcCA9IDMsICAgIC5mY3hjdHJsID0gMSwgIC5mY3hpbml0ID0gMCxcbi1cdCAuZndldm50cnB0bCA9IDAsIC5md2MyaGZ1bmMgPSAwLCAuZHJ2aW5mb190eXBlID0gMCwgLmluZm9fYnVmID0gMTI4MCxcbiYjNDM7XHQgLmZ3ZXZudHJwdGwgPSAwLCAuZndjMmhmdW5jID0gMCwgLmRydmluZm9fdmVyID0gMCwgLmluZm9fYnVmID0gMTI4MCxcbiBcdCAubWF4X3JvbGVfbnVtID0gNSwgLmZjeG9zaSA9IDAsICAuZmN4bWxvID0gMCwgICAuYnRfZGVzaXJlZCA9IDcsXG4mIzQzO1x0IC5mY3h0cnggPSAwLFxuIFx0fSxcbiBcdHtSVEw4ODUyQSwgUlRXODlfRldfVkVSX0NPREUoMCwgMTMsIDAsIDApLFxuIFx0IC5mY3hidGNycHQgPSAxLCAuZmN4dGRtYSA9IDEsICAgIC5mY3hzbG90cyA9IDEsIC5mY3hjeXN0YSA9IDIsXG4gXHQgLmZjeHN0ZXAgPSAyLCAgIC5mY3hudWxsc3RhID0gMSwgLmZjeG1yZWcgPSAxLCAgLmZjeGdwaW9kYmcgPSAxLFxuIFx0IC5mY3hidHZlciA9IDEsICAuZmN4YnRzY2FuID0gMSwgIC5mY3hidGFmaCA9IDEsIC5mY3hidGRldmluZm8gPSAxLFxuIFx0IC5md2xyb2xlID0gMCwgICAuZnJwdG1hcCA9IDAsICAgIC5mY3hjdHJsID0gMCwgIC5mY3hpbml0ID0gMCxcbi1cdCAuZndldm50cnB0bCA9IDAsIC5md2MyaGZ1bmMgPSAwLCAuZHJ2aW5mb190eXBlID0gMCwgLmluZm9fYnVmID0gMTAyNCxcbiYjNDM7XHQgLmZ3ZXZudHJwdGwgPSAwLCAuZndjMmhmdW5jID0gMCwgLmRydmluZm9fdmVyID0gMCwgLmluZm9fYnVmID0gMTAyNCxcbiBcdCAubWF4X3JvbGVfbnVtID0gNSwgLmZjeG9zaSA9IDAsICAuZmN4bWxvID0gMCwgICAuYnRfZGVzaXJlZCA9IDcsXG4mIzQzO1x0IC5mY3h0cnggPSAwLFxuIFx0fSxcbiBcbiBcdC8qIGtlZXAgaXQgdG8gYmUgdGhlIGxhc3QgYXMgZGVmYXVsdCBlbnRyeSAqL1xuQEAgLTI2MCw4ICYjNDM7Mjg0LDkgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9idGNfdmVyIHJ0dzg5X2J0Y192ZXJfZGVmc1tdID0ge1xuIFx0IC5mY3hzdGVwID0gMiwgICAuZmN4bnVsbHN0YSA9IDEsIC5mY3htcmVnID0gMSwgIC5mY3hncGlvZGJnID0gMSxcbiBcdCAuZmN4YnR2ZXIgPSAxLCAgLmZjeGJ0c2NhbiA9IDEsICAuZmN4YnRhZmggPSAxLCAuZmN4YnRkZXZpbmZvID0gMSxcbiBcdCAuZndscm9sZSA9IDAsICAgLmZycHRtYXAgPSAwLCAgICAuZmN4Y3RybCA9IDAsICAuZmN4aW5pdCA9IDAsXG4tXHQgLmZ3ZXZudHJwdGwgPSAwLCAuZndjMmhmdW5jID0gMSwgLmRydmluZm9fdHlwZSA9IDAsIC5pbmZvX2J1ZiA9IDEwMjQsXG4mIzQzO1x0IC5md2V2bnRycHRsID0gMCwgLmZ3YzJoZnVuYyA9IDEsIC5kcnZpbmZvX3ZlciA9IDAsIC5pbmZvX2J1ZiA9IDEwMjQsXG4gXHQgLm1heF9yb2xlX251bSA9IDUsIC5mY3hvc2kgPSAwLCAgLmZjeG1sbyA9IDAsICAgLmJ0X2Rlc2lyZWQgPSA3LFxuJiM0MztcdCAuZmN4dHJ4ID0gMCxcbiBcdH0sXG4gfTtcbiBcbkBAIC0yODgsNiAmIzQzOzMxMyw3IEBAIHN0YXRpYyB1MzIgY2hpcF9pZF90b19idF9yb21fY29kZV9pZCh1MzIgaWQpXG4gXHRjYXNlIFJUTDg4NTFCOlxuIFx0XHRyZXR1cm4gMHg4ODUxO1xuIFx0Y2FzZSBSVEw4OTIyQTpcbiYjNDM7XHRjYXNlIFJUTDg5MjJEOlxuIFx0XHRyZXR1cm4gMHg4OTIyO1xuIFx0ZGVmYXVsdDpcbiBcdFx0cmV0dXJuIDA7XG5AQCAtMzIyLDYgJiM0MzszNDgsOCBAQCBzdGF0aWMgY2hhciAqY2hpcF9pZF9zdHIodTMyIGlkKVxuIFx0XHRyZXR1cm4gXCYjMzQ7UlRMODg1MUJcJiMzNDs7XG4gXHRjYXNlIFJUTDg5MjJBOlxuIFx0XHRyZXR1cm4gXCYjMzQ7UlRMODkyMkFcJiMzNDs7XG4mIzQzO1x0Y2FzZSBSVEw4OTIyRDpcbiYjNDM7XHRcdHJldHVybiBcJiMzNDtSVEw4OTIyRFwmIzM0OztcbiBcdGRlZmF1bHQ6XG4gXHRcdHJldHVybiBcJiMzNDtVTktOT1dOXCYjMzQ7O1xuIFx0fVxuQEAgLTQzNCw2ICYjNDM7NDYyLDggQEAgZW51bSBidGNfYjJ3X3Njb3JlYm9hcmQge1xuIFx0QlRDX0JTQ0JfV0xSRksgPSBCSVQoMTEpLFxuIFx0QlRDX0JTQ0JfQlRfSElMTkEgPSBCSVQoMTMpLFxuIFx0QlRDX0JTQ0JfQlRfQ09OTkVDVCA9IEJJVCgxNiksXG4mIzQzO1x0QlRDX0JTQ0JfUEFOX0FDVCA9IEJJVCgyOCksXG4mIzQzO1x0QlRDX0JTQ0JfSEZQX0FDVCA9IEJJVCgyOSksXG4gXHRCVENfQlNDQl9QQVRDSF9DT0RFID0gQklUKDMwKSxcbiBcdEJUQ19CU0NCX0FMTCA9IEdFTk1BU0soMzAsIDApLFxuIH07XG5AQCAtOTIyLDcgJiM0Mzs5NTIsNyBAQCBzdGF0aWMgdm9pZCBfcmVzZXRfYnRjX3ZhcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHR5cGUpXG4gXHRjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3ZlciAqdmVyID0gYnRjLVx1MDAzZXZlcjtcbiBcdHN0cnVjdCBydHc4OV9idGNfY3ggKmN4ID0gXHUwMDI2YnRjLVx1MDAzZWN4O1xuIFx0c3RydWN0IHJ0dzg5X2J0Y193bF9pbmZvICp3bCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC53bDtcbi1cdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcdTAwMjZidGMtXHUwMDNlY3guYnQ7XG4mIzQzO1x0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC5idDA7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2xpbmtfaW5mbyAqYnRfbGluZm8gPSBcdTAwMjZidC1cdTAwM2VsaW5rX2luZm87XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX2xpbmtfaW5mbyAqd2xfbGluZm87XG4gXHR1OCBpO1xuQEAgLTk3Myw4ICYjNDM7MTAwMyw4IEBAIHN0YXRpYyB2b2lkIF9yZXNldF9idGNfdmFyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggdHlwZSlcbiBcdFx0fVxuIFxuIFx0XHRidGMtXHUwMDNlcG9saWN5X2xlbiA9IDA7XG4tXHRcdGJ0Yy1cdTAwM2VidF9yZXFfbGVuID0gMDtcbi1cbiYjNDM7XHRcdGJ0Yy1cdTAwM2VidF9yZXFfbGVuW1JUVzg5X1BIWV8wXSA9IDA7XG4mIzQzO1x0XHRidGMtXHUwMDNlYnRfcmVxX2xlbltSVFc4OV9QSFlfMV0gPSAwO1xuIFx0XHRidGMtXHUwMDNlZG0uY29leF9pbmZvX21hcCA9IEJUQ19DT0VYX0lORk9fQUxMO1xuIFx0XHRidGMtXHUwMDNlZG0ud2xfdHhfbGltaXQudHhfdGltZSA9IEJUQ19NQVhfVFhfVElNRV9ERUY7XG4gXHRcdGJ0Yy1cdTAwM2VkbS53bF90eF9saW1pdC50eF9yZXRyeSA9IEJUQ19NQVhfVFhfUkVUUllfREVGO1xuQEAgLTExMDQsNyAmIzQzOzExMzQsNyBAQCBzdGF0aWMgdm9pZCBfY2hrX2J0Y19lcnIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCB0eXBlLCB1MzIgY250KVxuIHtcbiBcdHN0cnVjdCBydHc4OV9idGMgKmJ0YyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2VidGM7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX2N4ICpjeCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeDtcbi1cdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcdTAwMjZjeC1cdTAwM2VidDtcbiYjNDM7XHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXHUwMDI2Y3gtXHUwMDNlYnQwO1xuIFx0c3RydWN0IHJ0dzg5X2J0Y193bF9pbmZvICp3bCA9IFx1MDAyNmN4LVx1MDAzZXdsO1xuIFx0c3RydWN0IHJ0dzg5X2J0Y19kbSAqZG0gPSBcdTAwMjZidGMtXHUwMDNlZG07XG4gXG5AQCAtMTIxNiw3ICYjNDM7MTI0Niw3IEBAIHN0YXRpYyB2b2lkIF9jaGtfYnRjX2VycihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHR5cGUsIHUzMiBjbnQpXG4gXHRcdFx0ZG0tXHUwMDNlZXJyb3IubWFwLnNsb3Rfbm9fc3luYyA9IGZhbHNlO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgQlRDX0RDTlRfQlRUWF9IQU5HOlxuLVx0XHRjbnQgPSBjeC1cdTAwM2VjbnRfYnRbQlRDX0JDTlRfTE9QUklfVFhdO1xuJiM0MztcdFx0Y250ID0gYnQtXHUwMDNlYmNudFtCVENfQkNOVF9MT1BSSV9UWF07XG4gXG4gXHRcdGlmIChjbnQgPT0gMCBcdTAwMjZcdTAwMjYgYnQtXHUwMDNlbGlua19pbmZvLnNsYXZlX3JvbGUpXG4gXHRcdFx0ZG0tXHUwMDNlY250X2RtW0JUQ19EQ05UX0JUVFhfSEFOR10mIzQzOyYjNDM7O1xuQEAgLTEyMjksMTAgJiM0MzsxMjU5LDEwIEBAIHN0YXRpYyB2b2lkIF9jaGtfYnRjX2VycihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHR5cGUsIHUzMiBjbnQpXG4gXHRcdFx0ZG0tXHUwMDNlZXJyb3IubWFwLmJ0X3R4X2hhbmcgPSBmYWxzZTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJUQ19EQ05UX0JUQ05UX0hBTkc6XG4tXHRcdGNudCA9IGN4LVx1MDAzZWNudF9idFtCVENfQkNOVF9ISVBSSV9SWF0gJiM0Mztcbi1cdFx0ICAgICAgY3gtXHUwMDNlY250X2J0W0JUQ19CQ05UX0hJUFJJX1RYXSAmIzQzO1xuLVx0XHQgICAgICBjeC1cdTAwM2VjbnRfYnRbQlRDX0JDTlRfTE9QUklfUlhdICYjNDM7XG4tXHRcdCAgICAgIGN4LVx1MDAzZWNudF9idFtCVENfQkNOVF9MT1BSSV9UWF07XG4mIzQzO1x0XHRjbnQgPSBidC1cdTAwM2ViY250W0JUQ19CQ05UX0hJUFJJX1JYXSAmIzQzO1xuJiM0MztcdFx0ICAgICAgYnQtXHUwMDNlYmNudFtCVENfQkNOVF9ISVBSSV9UWF0gJiM0MztcbiYjNDM7XHRcdCAgICAgIGJ0LVx1MDAzZWJjbnRbQlRDX0JDTlRfTE9QUklfUlhdICYjNDM7XG4mIzQzO1x0XHQgICAgICBidC1cdTAwM2ViY250W0JUQ19CQ05UX0xPUFJJX1RYXTtcbiBcbiBcdFx0aWYgKGNudCA9PSAwKVxuIFx0XHRcdGRtLVx1MDAzZWNudF9kbVtCVENfRENOVF9CVENOVF9IQU5HXSYjNDM7JiM0Mzs7XG5AQCAtMTI3NCw3ICYjNDM7MTMwNCw3IEBAIHN0YXRpYyB2b2lkIF91cGRhdGVfYnRfcmVwb3J0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggcnB0X3R5cGUsIHU4ICpwZmluZm8pXG4ge1xuIFx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXHUwMDI2cnR3ZGV2LVx1MDAzZWJ0YztcbiBcdGNvbnN0IHN0cnVjdCBydHc4OV9idGNfdmVyICp2ZXIgPSBidGMtXHUwMDNldmVyO1xuLVx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC5idDtcbiYjNDM7XHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXHUwMDI2YnRjLVx1MDAzZWN4LmJ0MDtcbiBcdHN0cnVjdCBydHc4OV9idGNfYnRfbGlua19pbmZvICpidF9saW5mbyA9IFx1MDAyNmJ0LVx1MDAzZWxpbmtfaW5mbztcbiBcdHN0cnVjdCBydHc4OV9idGNfYnRfYTJkcF9kZXNjICphMmRwID0gXHUwMDI2YnRfbGluZm8tXHUwMDNlYTJkcF9kZXNjO1xuIFx0dW5pb24gIHJ0dzg5X2J0Y19mYnRjX2J0dmVyICpwdmVyID0gXHUwMDI2YnRjLVx1MDAzZWZ3aW5mby5ycHRfZmJ0Y19idHZlci5maW5mbztcbkBAIC0xNDE1LDcgJiM0MzsxNDQ1LDcgQEAgc3RhdGljIHUzMiBfY2hrX2J0Y19yZXBvcnQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuIFx0c3RydWN0IHJ0dzg5X2J0Y19kbSAqZG0gPSBcdTAwMjZidGMtXHUwMDNlZG07XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX3JwdF9jbW5faW5mbyAqcGNpbmZvID0gTlVMTDtcbiBcdHN0cnVjdCBydHc4OV9idGNfd2xfaW5mbyAqd2wgPSBcdTAwMjZidGMtXHUwMDNlY3gud2w7XG4tXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXHUwMDI2YnRjLVx1MDAzZWN4LmJ0O1xuJiM0MztcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcdTAwMjZidGMtXHUwMDNlY3guYnQwO1xuIFx0dW5pb24gcnR3ODlfYnRjX2ZidGNfcnB0X2N0cmxfdmVyX2luZm8gKnBycHQgPSBOVUxMO1xuIFx0dW5pb24gcnR3ODlfYnRjX2ZidGNfY3lzdGFfaW5mbyAqcGN5c3RhID0gTlVMTDtcbiBcdHN0cnVjdCBydHc4OV9idGNfcHJwdCAqYnRjX3BycHQgPSBOVUxMO1xuQEAgLTE3MjEsNyAmIzQzOzE3NTEsNyBAQCBzdGF0aWMgdTMyIF9jaGtfYnRjX3JlcG9ydChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4gXHRcdFx0XHRydHdkZXYtXHUwMDNlY2hpcC1cdTAwM2VvcHMtXHUwMDNlYnRjX3VwZGF0ZV9idF9jbnQocnR3ZGV2KTtcbiBcdFx0XHRcdF9jaGtfYnRjX2VycihydHdkZXYsIEJUQ19EQ05UX0JUQ05UX0hBTkcsIDApO1xuIFxuLVx0XHRcdFx0YnRjLVx1MDAzZWN4LmNudF9idFtCVENfQkNOVF9QT0xVVF0gPVxuJiM0MztcdFx0XHRcdGJ0LVx1MDAzZWJjbnRbQlRDX0JDTlRfUE9MVVRdID1cbiBcdFx0XHRcdFx0cnR3ODlfbWFjX2dldF9wbHRfY250KHJ0d2RldixcbiBcdFx0XHRcdFx0XHRcdCAgICAgIFJUVzg5X01BQ18wKTtcbiBcdFx0XHR9XG5AQCAtMTczNiwxNSAmIzQzOzE3NjYsMTUgQEAgc3RhdGljIHUzMiBfY2hrX2J0Y19yZXBvcnQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuIFx0XHRcdFx0bWVtY3B5KFx1MDAyNmRtLVx1MDAzZWdudC5iYW5kW2ldLCBcdTAwMjZwcnB0LVx1MDAzZXY0LmdudF92YWxbaV0sXG4gXHRcdFx0XHQgICAgICAgc2l6ZW9mKGRtLVx1MDAzZWdudC5iYW5kW2ldKSk7XG4gXG4tXHRcdFx0YnRjLVx1MDAzZWN4LmNudF9idFtCVENfQkNOVF9ISVBSSV9UWF0gPVxuJiM0MztcdFx0XHRidC1cdTAwM2ViY250W0JUQ19CQ05UX0hJUFJJX1RYXSA9XG4gXHRcdFx0XHRsZTMyX3RvX2NwdShwcnB0LVx1MDAzZXY0LmJ0X2NudFtCVENfQkNOVF9ISV9UWF0pO1xuLVx0XHRcdGJ0Yy1cdTAwM2VjeC5jbnRfYnRbQlRDX0JDTlRfSElQUklfUlhdID1cbiYjNDM7XHRcdFx0YnQtXHUwMDNlYmNudFtCVENfQkNOVF9ISVBSSV9SWF0gPVxuIFx0XHRcdFx0bGUzMl90b19jcHUocHJwdC1cdTAwM2V2NC5idF9jbnRbQlRDX0JDTlRfSElfUlhdKTtcbi1cdFx0XHRidGMtXHUwMDNlY3guY250X2J0W0JUQ19CQ05UX0xPUFJJX1RYXSA9XG4mIzQzO1x0XHRcdGJ0LVx1MDAzZWJjbnRbQlRDX0JDTlRfTE9QUklfVFhdID1cbiBcdFx0XHRcdGxlMzJfdG9fY3B1KHBycHQtXHUwMDNldjQuYnRfY250W0JUQ19CQ05UX0xPX1RYXSk7XG4tXHRcdFx0YnRjLVx1MDAzZWN4LmNudF9idFtCVENfQkNOVF9MT1BSSV9SWF0gPVxuJiM0MztcdFx0XHRidC1cdTAwM2ViY250W0JUQ19CQ05UX0xPUFJJX1JYXSA9XG4gXHRcdFx0XHRsZTMyX3RvX2NwdShwcnB0LVx1MDAzZXY0LmJ0X2NudFtCVENfQkNOVF9MT19SWF0pO1xuLVx0XHRcdGJ0Yy1cdTAwM2VjeC5jbnRfYnRbQlRDX0JDTlRfUE9MVVRdID1cbiYjNDM7XHRcdFx0YnQtXHUwMDNlYmNudFtCVENfQkNOVF9QT0xVVF0gPVxuIFx0XHRcdFx0bGUzMl90b19jcHUocHJwdC1cdTAwM2V2NC5idF9jbnRbQlRDX0JDTlRfUE9MTFVURURdKTtcbiBcbiBcdFx0XHRfY2hrX2J0Y19lcnIocnR3ZGV2LCBCVENfRENOVF9CVENOVF9IQU5HLCAwKTtcbkBAIC0xNzY4LDE1ICYjNDM7MTc5OCwxNSBAQCBzdGF0aWMgdTMyIF9jaGtfYnRjX3JlcG9ydChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4gXHRcdFx0XHRtZW1jcHkoXHUwMDI2ZG0tXHUwMDNlZ250LmJhbmRbaV0sIFx1MDAyNnBycHQtXHUwMDNldjUuZ250X3ZhbFtpXVswXSxcbiBcdFx0XHRcdCAgICAgICBzaXplb2YoZG0tXHUwMDNlZ250LmJhbmRbaV0pKTtcbiBcbi1cdFx0XHRidGMtXHUwMDNlY3guY250X2J0W0JUQ19CQ05UX0hJUFJJX1RYXSA9XG4mIzQzO1x0XHRcdGJ0LVx1MDAzZWJjbnRbQlRDX0JDTlRfSElQUklfVFhdID1cbiBcdFx0XHRcdGxlMTZfdG9fY3B1KHBycHQtXHUwMDNldjUuYnRfY250W0JUQ19CQ05UX0hJX1RYXSk7XG4tXHRcdFx0YnRjLVx1MDAzZWN4LmNudF9idFtCVENfQkNOVF9ISVBSSV9SWF0gPVxuJiM0MztcdFx0XHRidC1cdTAwM2ViY250W0JUQ19CQ05UX0hJUFJJX1JYXSA9XG4gXHRcdFx0XHRsZTE2X3RvX2NwdShwcnB0LVx1MDAzZXY1LmJ0X2NudFtCVENfQkNOVF9ISV9SWF0pO1xuLVx0XHRcdGJ0Yy1cdTAwM2VjeC5jbnRfYnRbQlRDX0JDTlRfTE9QUklfVFhdID1cbiYjNDM7XHRcdFx0YnQtXHUwMDNlYmNudFtCVENfQkNOVF9MT1BSSV9UWF0gPVxuIFx0XHRcdFx0bGUxNl90b19jcHUocHJwdC1cdTAwM2V2NS5idF9jbnRbQlRDX0JDTlRfTE9fVFhdKTtcbi1cdFx0XHRidGMtXHUwMDNlY3guY250X2J0W0JUQ19CQ05UX0xPUFJJX1JYXSA9XG4mIzQzO1x0XHRcdGJ0LVx1MDAzZWJjbnRbQlRDX0JDTlRfTE9QUklfUlhdID1cbiBcdFx0XHRcdGxlMTZfdG9fY3B1KHBycHQtXHUwMDNldjUuYnRfY250W0JUQ19CQ05UX0xPX1JYXSk7XG4tXHRcdFx0YnRjLVx1MDAzZWN4LmNudF9idFtCVENfQkNOVF9QT0xVVF0gPVxuJiM0MztcdFx0XHRidC1cdTAwM2ViY250W0JUQ19CQ05UX1BPTFVUXSA9XG4gXHRcdFx0XHRsZTE2X3RvX2NwdShwcnB0LVx1MDAzZXY1LmJ0X2NudFtCVENfQkNOVF9QT0xMVVRFRF0pO1xuIFxuIFx0XHRcdF9jaGtfYnRjX2VycihydHdkZXYsIEJUQ19EQ05UX0JUQ05UX0hBTkcsIDApO1xuQEAgLTE3OTUsMTUgJiM0MzsxODI1LDE1IEBAIHN0YXRpYyB1MzIgX2Noa19idGNfcmVwb3J0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbiBcdFx0XHRcdG1lbWNweShcdTAwMjZkbS1cdTAwM2VnbnQuYmFuZFtpXSwgXHUwMDI2cHJwdC1cdTAwM2V2MTA1LmdudF92YWxbaV1bMF0sXG4gXHRcdFx0XHQgICAgICAgc2l6ZW9mKGRtLVx1MDAzZWdudC5iYW5kW2ldKSk7XG4gXG4tXHRcdFx0YnRjLVx1MDAzZWN4LmNudF9idFtCVENfQkNOVF9ISVBSSV9UWF0gPVxuJiM0MztcdFx0XHRidC1cdTAwM2ViY250W0JUQ19CQ05UX0hJUFJJX1RYXSA9XG4gXHRcdFx0XHRsZTE2X3RvX2NwdShwcnB0LVx1MDAzZXYxMDUuYnRfY250W0JUQ19CQ05UX0hJX1RYX1YxMDVdKTtcbi1cdFx0XHRidGMtXHUwMDNlY3guY250X2J0W0JUQ19CQ05UX0hJUFJJX1JYXSA9XG4mIzQzO1x0XHRcdGJ0LVx1MDAzZWJjbnRbQlRDX0JDTlRfSElQUklfUlhdID1cbiBcdFx0XHRcdGxlMTZfdG9fY3B1KHBycHQtXHUwMDNldjEwNS5idF9jbnRbQlRDX0JDTlRfSElfUlhfVjEwNV0pO1xuLVx0XHRcdGJ0Yy1cdTAwM2VjeC5jbnRfYnRbQlRDX0JDTlRfTE9QUklfVFhdID1cbiYjNDM7XHRcdFx0YnQtXHUwMDNlYmNudFtCVENfQkNOVF9MT1BSSV9UWF0gPVxuIFx0XHRcdFx0bGUxNl90b19jcHUocHJwdC1cdTAwM2V2MTA1LmJ0X2NudFtCVENfQkNOVF9MT19UWF9WMTA1XSk7XG4tXHRcdFx0YnRjLVx1MDAzZWN4LmNudF9idFtCVENfQkNOVF9MT1BSSV9SWF0gPVxuJiM0MztcdFx0XHRidC1cdTAwM2ViY250W0JUQ19CQ05UX0xPUFJJX1JYXSA9XG4gXHRcdFx0XHRsZTE2X3RvX2NwdShwcnB0LVx1MDAzZXYxMDUuYnRfY250W0JUQ19CQ05UX0xPX1JYX1YxMDVdKTtcbi1cdFx0XHRidGMtXHUwMDNlY3guY250X2J0W0JUQ19CQ05UX1BPTFVUXSA9XG4mIzQzO1x0XHRcdGJ0LVx1MDAzZWJjbnRbQlRDX0JDTlRfUE9MVVRdID1cbiBcdFx0XHRcdGxlMTZfdG9fY3B1KHBycHQtXHUwMDNldjEwNS5idF9jbnRbQlRDX0JDTlRfUE9MTFVURURfVjEwNV0pO1xuIFxuIFx0XHRcdF9jaGtfYnRjX2VycihydHdkZXYsIEJUQ19EQ05UX0JUQ05UX0hBTkcsIDApO1xuQEAgLTE4MjEsMjEgJiM0MzsxODUxLDIxIEBAIHN0YXRpYyB1MzIgX2Noa19idGNfcmVwb3J0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbiBcdFx0XHRcdG1lbWNweShcdTAwMjZkbS1cdTAwM2VnbnQuYmFuZFtpXSwgXHUwMDI2cHJwdC1cdTAwM2V2Ny5nbnRfdmFsW2ldWzBdLFxuIFx0XHRcdFx0ICAgICAgIHNpemVvZihkbS1cdTAwM2VnbnQuYmFuZFtpXSkpO1xuIFxuLVx0XHRcdGJ0Yy1cdTAwM2VjeC5jbnRfYnRbQlRDX0JDTlRfSElQUklfVFhdID1cbiYjNDM7XHRcdFx0YnQtXHUwMDNlYmNudFtCVENfQkNOVF9ISVBSSV9UWF0gPVxuIFx0XHRcdFx0bGUxNl90b19jcHUocHJwdC1cdTAwM2V2Ny5idF9jbnRbQlRDX0JDTlRfSElfVFhfVjEwNV0pO1xuLVx0XHRcdGJ0Yy1cdTAwM2VjeC5jbnRfYnRbQlRDX0JDTlRfSElQUklfUlhdID1cbiYjNDM7XHRcdFx0YnQtXHUwMDNlYmNudFtCVENfQkNOVF9ISVBSSV9SWF0gPVxuIFx0XHRcdFx0bGUxNl90b19jcHUocHJwdC1cdTAwM2V2Ny5idF9jbnRbQlRDX0JDTlRfSElfUlhfVjEwNV0pO1xuLVx0XHRcdGJ0Yy1cdTAwM2VjeC5jbnRfYnRbQlRDX0JDTlRfTE9QUklfVFhdID1cbiYjNDM7XHRcdFx0YnQtXHUwMDNlYmNudFtCVENfQkNOVF9MT1BSSV9UWF0gPVxuIFx0XHRcdFx0bGUxNl90b19jcHUocHJwdC1cdTAwM2V2Ny5idF9jbnRbQlRDX0JDTlRfTE9fVFhfVjEwNV0pO1xuLVx0XHRcdGJ0Yy1cdTAwM2VjeC5jbnRfYnRbQlRDX0JDTlRfTE9QUklfUlhdID1cbiYjNDM7XHRcdFx0YnQtXHUwMDNlYmNudFtCVENfQkNOVF9MT1BSSV9SWF0gPVxuIFx0XHRcdFx0bGUxNl90b19jcHUocHJwdC1cdTAwM2V2Ny5idF9jbnRbQlRDX0JDTlRfTE9fUlhfVjEwNV0pO1xuIFxuIFx0XHRcdHZhbDEgPSBsZTE2X3RvX2NwdShwcnB0LVx1MDAzZXY3LmJ0X2NudFtCVENfQkNOVF9QT0xMVVRFRF9WMTA1XSk7XG4tXHRcdFx0aWYgKHZhbDEgXHUwMDNlIGJ0Yy1cdTAwM2VjeC5jbnRfYnRbQlRDX0JDTlRfUE9MVVRfTk9XXSlcbi1cdFx0XHRcdHZhbDEgLT0gYnRjLVx1MDAzZWN4LmNudF9idFtCVENfQkNOVF9QT0xVVF9OT1ddOyAvKiBkaWZmICovXG4mIzQzO1x0XHRcdGlmICh2YWwxIFx1MDAzZSBidC1cdTAwM2ViY250W0JUQ19CQ05UX1BPTFVUX05PV10pXG4mIzQzO1x0XHRcdFx0dmFsMSAtPSBidC1cdTAwM2ViY250W0JUQ19CQ05UX1BPTFVUX05PV107IC8qIGRpZmYgKi9cbiBcbi1cdFx0XHRidGMtXHUwMDNlY3guY250X2J0W0JUQ19CQ05UX1BPTFVUX0RJRkZdID0gdmFsMTtcbi1cdFx0XHRidGMtXHUwMDNlY3guY250X2J0W0JUQ19CQ05UX1BPTFVUX05PV10gPVxuJiM0MztcdFx0XHRidC1cdTAwM2ViY250W0JUQ19CQ05UX1BPTFVUX0RJRkZdID0gdmFsMTtcbiYjNDM7XHRcdFx0YnQtXHUwMDNlYmNudFtCVENfQkNOVF9QT0xVVF9OT1ddID1cbiBcdFx0XHRcdGxlMTZfdG9fY3B1KHBycHQtXHUwMDNldjcuYnRfY250W0JUQ19CQ05UX1BPTExVVEVEX1YxMDVdKTtcbiBcbiBcdFx0XHR2YWwxID0gcGZ3aW5mby1cdTAwM2VldmVudFtCVEZfRVZOVF9SUFRdO1xuQEAgLTE4NTMsMjEgJiM0MzsxODgzLDIxIEBAIHN0YXRpYyB1MzIgX2Noa19idGNfcmVwb3J0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbiBcdFx0XHRcdG1lbWNweShcdTAwMjZkbS1cdTAwM2VnbnQuYmFuZFtpXSwgXHUwMDI2cHJwdC1cdTAwM2V2OC5nbnRfdmFsW2ldWzBdLFxuIFx0XHRcdFx0ICAgICAgIHNpemVvZihkbS1cdTAwM2VnbnQuYmFuZFtpXSkpO1xuIFxuLVx0XHRcdGJ0Yy1cdTAwM2VjeC5jbnRfYnRbQlRDX0JDTlRfSElQUklfVFhdID1cbiYjNDM7XHRcdFx0YnQtXHUwMDNlYmNudFtCVENfQkNOVF9ISVBSSV9UWF0gPVxuIFx0XHRcdFx0bGUxNl90b19jcHUocHJwdC1cdTAwM2V2OC5idF9jbnRbQlRDX0JDTlRfSElfVFhfVjEwNV0pO1xuLVx0XHRcdGJ0Yy1cdTAwM2VjeC5jbnRfYnRbQlRDX0JDTlRfSElQUklfUlhdID1cbiYjNDM7XHRcdFx0YnQtXHUwMDNlYmNudFtCVENfQkNOVF9ISVBSSV9SWF0gPVxuIFx0XHRcdFx0bGUxNl90b19jcHUocHJwdC1cdTAwM2V2OC5idF9jbnRbQlRDX0JDTlRfSElfUlhfVjEwNV0pO1xuLVx0XHRcdGJ0Yy1cdTAwM2VjeC5jbnRfYnRbQlRDX0JDTlRfTE9QUklfVFhdID1cbiYjNDM7XHRcdFx0YnQtXHUwMDNlYmNudFtCVENfQkNOVF9MT1BSSV9UWF0gPVxuIFx0XHRcdFx0bGUxNl90b19jcHUocHJwdC1cdTAwM2V2OC5idF9jbnRbQlRDX0JDTlRfTE9fVFhfVjEwNV0pO1xuLVx0XHRcdGJ0Yy1cdTAwM2VjeC5jbnRfYnRbQlRDX0JDTlRfTE9QUklfUlhdID1cbiYjNDM7XHRcdFx0YnQtXHUwMDNlYmNudFtCVENfQkNOVF9MT1BSSV9SWF0gPVxuIFx0XHRcdFx0bGUxNl90b19jcHUocHJwdC1cdTAwM2V2OC5idF9jbnRbQlRDX0JDTlRfTE9fUlhfVjEwNV0pO1xuIFxuIFx0XHRcdHZhbDEgPSBsZTE2X3RvX2NwdShwcnB0LVx1MDAzZXY4LmJ0X2NudFtCVENfQkNOVF9QT0xMVVRFRF9WMTA1XSk7XG4tXHRcdFx0aWYgKHZhbDEgXHUwMDNlIGJ0Yy1cdTAwM2VjeC5jbnRfYnRbQlRDX0JDTlRfUE9MVVRfTk9XXSlcbi1cdFx0XHRcdHZhbDEgLT0gYnRjLVx1MDAzZWN4LmNudF9idFtCVENfQkNOVF9QT0xVVF9OT1ddOyAvKiBkaWZmICovXG4mIzQzO1x0XHRcdGlmICh2YWwxIFx1MDAzZSBidC1cdTAwM2ViY250W0JUQ19CQ05UX1BPTFVUX05PV10pXG4mIzQzO1x0XHRcdFx0dmFsMSAtPSBidC1cdTAwM2ViY250W0JUQ19CQ05UX1BPTFVUX05PV107IC8qIGRpZmYgKi9cbiBcbi1cdFx0XHRidGMtXHUwMDNlY3guY250X2J0W0JUQ19CQ05UX1BPTFVUX0RJRkZdID0gdmFsMTtcbi1cdFx0XHRidGMtXHUwMDNlY3guY250X2J0W0JUQ19CQ05UX1BPTFVUX05PV10gPVxuJiM0MztcdFx0XHRidC1cdTAwM2ViY250W0JUQ19CQ05UX1BPTFVUX0RJRkZdID0gdmFsMTtcbiYjNDM7XHRcdFx0YnQtXHUwMDNlYmNudFtCVENfQkNOVF9QT0xVVF9OT1ddID1cbiBcdFx0XHRcdGxlMTZfdG9fY3B1KHBycHQtXHUwMDNldjguYnRfY250W0JUQ19CQ05UX1BPTExVVEVEX1YxMDVdKTtcbiBcbiBcdFx0XHR2YWwxID0gcGZ3aW5mby1cdTAwM2VldmVudFtCVEZfRVZOVF9SUFRdO1xuQEAgLTE5OTIsMTAgJiM0MzsyMDIyLDEwIEBAIHN0YXRpYyB1MzIgX2Noa19idGNfcmVwb3J0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbiBcdFx0XHQvKiBDaGVjayBkaWZmIHRpbWUgYmV0d2VlbiByZWFsIEJUIHNsb3QgYW5kIEVCVC9FNUcgc2xvdCAqL1xuIFx0XHRcdGlmIChkbS1cdTAwM2V0ZG1hX25vdy50eXBlID09IENYVERNQV9PRkYgXHUwMDI2XHUwMDI2XG4gXHRcdFx0ICAgIGRtLVx1MDAzZXRkbWFfbm93LmV4dF9jdHJsID09IENYRUNUTF9FWFQgXHUwMDI2XHUwMDI2XG4tXHRcdFx0ICAgIGJ0Yy1cdTAwM2VidF9yZXFfbGVuICE9IDApIHtcbiYjNDM7XHRcdFx0ICAgIGJ0Yy1cdTAwM2VidF9yZXFfbGVuW1JUVzg5X1BIWV8wXSAhPSAwKSB7XG4gXHRcdFx0XHRidF9zbG90X3JlYWwgPSBsZTE2X3RvX2NwdShwY3lzdGEtXHUwMDNldjMuY3ljbGVfdGltZS50YXZnW0NYVF9CVF0pO1xuLVx0XHRcdFx0aWYgKGJ0Yy1cdTAwM2VidF9yZXFfbGVuIFx1MDAzZSBidF9zbG90X3JlYWwpIHtcbi1cdFx0XHRcdFx0ZGlmZl90ID0gYnRjLVx1MDAzZWJ0X3JlcV9sZW4gLSBidF9zbG90X3JlYWw7XG4mIzQzO1x0XHRcdFx0aWYgKGJ0Yy1cdTAwM2VidF9yZXFfbGVuW1JUVzg5X1BIWV8wXSBcdTAwM2UgYnRfc2xvdF9yZWFsKSB7XG4mIzQzO1x0XHRcdFx0XHRkaWZmX3QgPSBidGMtXHUwMDNlYnRfcmVxX2xlbltSVFc4OV9QSFlfMF0gLSBidF9zbG90X3JlYWw7XG4gXHRcdFx0XHRcdF9jaGtfYnRjX2VycihydHdkZXYsIEJUQ19EQ05UX0JUX1NMT1RfRFJJRlQsIGRpZmZfdCk7XG4gXHRcdFx0XHR9XG4gXHRcdFx0fVxuQEAgLTIwMzYsMTEgJiM0MzsyMDY2LDExIEBAIHN0YXRpYyB1MzIgX2Noa19idGNfcmVwb3J0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbiBcdFx0XHQvKiBDaGVjayBkaWZmIHRpbWUgYmV0d2VlbiByZWFsIEJUIHNsb3QgYW5kIEVCVC9FNUcgc2xvdCAqL1xuIFx0XHRcdGlmIChkbS1cdTAwM2V0ZG1hX25vdy50eXBlID09IENYVERNQV9PRkYgXHUwMDI2XHUwMDI2XG4gXHRcdFx0ICAgIGRtLVx1MDAzZXRkbWFfbm93LmV4dF9jdHJsID09IENYRUNUTF9FWFQgXHUwMDI2XHUwMDI2XG4tXHRcdFx0ICAgIGJ0Yy1cdTAwM2VidF9yZXFfbGVuICE9IDApIHtcbiYjNDM7XHRcdFx0ICAgIGJ0Yy1cdTAwM2VidF9yZXFfbGVuW1JUVzg5X1BIWV8wXSAhPSAwKSB7XG4gXHRcdFx0XHRidF9zbG90X3JlYWwgPSBsZTE2X3RvX2NwdShwY3lzdGEtXHUwMDNldjQuY3ljbGVfdGltZS50YXZnW0NYVF9CVF0pO1xuIFxuLVx0XHRcdFx0aWYgKGJ0Yy1cdTAwM2VidF9yZXFfbGVuIFx1MDAzZSBidF9zbG90X3JlYWwpIHtcbi1cdFx0XHRcdFx0ZGlmZl90ID0gYnRjLVx1MDAzZWJ0X3JlcV9sZW4gLSBidF9zbG90X3JlYWw7XG4mIzQzO1x0XHRcdFx0aWYgKGJ0Yy1cdTAwM2VidF9yZXFfbGVuW1JUVzg5X1BIWV8wXSBcdTAwM2UgYnRfc2xvdF9yZWFsKSB7XG4mIzQzO1x0XHRcdFx0XHRkaWZmX3QgPSBidGMtXHUwMDNlYnRfcmVxX2xlbltSVFc4OV9QSFlfMF0gLSBidF9zbG90X3JlYWw7XG4gXHRcdFx0XHRcdF9jaGtfYnRjX2VycihydHdkZXYsIEJUQ19EQ05UX0JUX1NMT1RfRFJJRlQsIGRpZmZfdCk7XG4gXHRcdFx0XHR9XG4gXHRcdFx0fVxuQEAgLTIwODEsNyAmIzQzOzIxMTEsNyBAQCBzdGF0aWMgdTMyIF9jaGtfYnRjX3JlcG9ydChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4gXHRcdFx0X2Noa19idGNfZXJyKHJ0d2RldiwgQlRDX0RDTlRfV0xfU0xPVF9EUklGVCwgZGlmZl90KTtcbiBcbiBcdFx0XHQvKiBDaGVjayBkaWZmIHRpbWUgYmV0d2VlbiByZWFsIEJUIHNsb3QgYW5kIEVCVC9FNUcgc2xvdCAqL1xuLVx0XHRcdGJ0X3Nsb3Rfc2V0ID0gYnRjLVx1MDAzZWJ0X3JlcV9sZW47XG4mIzQzO1x0XHRcdGJ0X3Nsb3Rfc2V0ID0gYnRjLVx1MDAzZWJ0X3JlcV9sZW5bUlRXODlfUEhZXzBdO1xuIFx0XHRcdGJ0X3Nsb3RfcmVhbCA9IGxlMTZfdG9fY3B1KHBjeXN0YS1cdTAwM2V2NS5jeWNsZV90aW1lLnRhdmdbQ1hUX0JUXSk7XG4gXHRcdFx0ZGlmZl90ID0gMDtcbiBcdFx0XHRpZiAoZG0tXHUwMDNldGRtYV9ub3cudHlwZSA9PSBDWFRETUFfT0ZGIFx1MDAyNlx1MDAyNlxuQEAgLTI0MDUsNiAmIzQzOzI0MzUsNyBAQCBzdGF0aWMgdTMyIHJ0dzg5X2J0Y19md19ycHRfdmVyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIHJwdF9tYXApXG4gXHRcdFx0YnJlYWs7XG4gXHRcdGNhc2UgMzpcbiBcdFx0Y2FzZSA0OlxuJiM0MztcdFx0Y2FzZSA1OlxuIFx0XHRcdGJpdF9tYXAgPSBCSVQoNSk7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdGRlZmF1bHQ6XG5AQCAtMjQyMCw2ICYjNDM7MjQ1MSw3IEBAIHN0YXRpYyB1MzIgcnR3ODlfYnRjX2Z3X3JwdF92ZXIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgcnB0X21hcClcbiBcdFx0XHRicmVhaztcbiBcdFx0Y2FzZSAzOlxuIFx0XHRjYXNlIDQ6XG4mIzQzO1x0XHRjYXNlIDU6XG4gXHRcdFx0Yml0X21hcCA9IEJJVCg2KTtcbiBcdFx0XHRicmVhaztcbiBcdFx0ZGVmYXVsdDpcbkBAIC0yNDMzLDYgJiM0MzsyNDY1LDcgQEAgc3RhdGljIHUzMiBydHc4OV9idGNfZndfcnB0X3ZlcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiBycHRfbWFwKVxuIFx0XHRcdGJyZWFrO1xuIFx0XHRjYXNlIDM6XG4gXHRcdGNhc2UgNDpcbiYjNDM7XHRcdGNhc2UgNTpcbiBcdFx0XHRiaXRfbWFwID0gQklUKDcpO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHRkZWZhdWx0OlxuQEAgLTI0NDcsNiAmIzQzOzI0ODAsNyBAQCBzdGF0aWMgdTMyIHJ0dzg5X2J0Y19md19ycHRfdmVyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIHJwdF9tYXApXG4gXHRcdGNhc2UgMzpcbiBcdFx0XHRicmVhaztcbiBcdFx0Y2FzZSA0OlxuJiM0MztcdFx0Y2FzZSA1OlxuIFx0XHRcdGJpdF9tYXAgPSBCSVQoOCk7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdGRlZmF1bHQ6XG5AQCAtMjQ2Myw2ICYjNDM7MjQ5Nyw3IEBAIHN0YXRpYyB1MzIgcnR3ODlfYnRjX2Z3X3JwdF92ZXIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgcnB0X21hcClcbiBcdFx0XHRiaXRfbWFwID0gQklUKDgpO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHRjYXNlIDQ6XG4mIzQzO1x0XHRjYXNlIDU6XG4gXHRcdFx0Yml0X21hcCA9IEJJVCg5KTtcbiBcdFx0XHRicmVhaztcbiBcdFx0ZGVmYXVsdDpcbkBAIC0yNDcwLDcgJiM0MzsyNTA1LDEwIEBAIHN0YXRpYyB1MzIgcnR3ODlfYnRjX2Z3X3JwdF92ZXIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgcnB0X21hcClcbiBcdFx0fVxuIFx0XHRicmVhaztcbiBcdGNhc2UgUlBUX0VOX1RFU1Q6XG4tXHRcdGJpdF9tYXAgPSBCSVQoMzEpO1xuJiM0MztcdFx0aWYgKHZlci1cdTAwM2VmcnB0bWFwID09IDUpXG4mIzQzO1x0XHRcdGJpdF9tYXAgPSBCSVQoMTApO1xuJiM0MztcdFx0ZWxzZVxuJiM0MztcdFx0XHRiaXRfbWFwID0gQklUKDMxKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIFJQVF9FTl9XTF9BTEw6XG4gXHRcdHN3aXRjaCAodmVyLVx1MDAzZWZycHRtYXApIHtcbkBAIC0yNDgzLDYgJiM0MzsyNTIxLDcgQEAgc3RhdGljIHUzMiBydHc4OV9idGNfZndfcnB0X3ZlcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiBycHRfbWFwKVxuIFx0XHRcdGJpdF9tYXAgPSBHRU5NQVNLKDIsIDApIHwgQklUKDgpO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHRjYXNlIDQ6XG4mIzQzO1x0XHRjYXNlIDU6XG4gXHRcdFx0Yml0X21hcCA9IEdFTk1BU0soMiwgMCkgfCBCSVQoOSk7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdGRlZmF1bHQ6XG5AQCAtMjUwMiw2ICYjNDM7MjU0MSw3IEBAIHN0YXRpYyB1MzIgcnR3ODlfYnRjX2Z3X3JwdF92ZXIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgcnB0X21hcClcbiBcdFx0XHRiaXRfbWFwID0gR0VOTUFTSyg3LCAzKTtcbiBcdFx0XHRicmVhaztcbiBcdFx0Y2FzZSA0OlxuJiM0MztcdFx0Y2FzZSA1OlxuIFx0XHRcdGJpdF9tYXAgPSBHRU5NQVNLKDgsIDMpO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHRkZWZhdWx0OlxuQEAgLTI1MjEsNiAmIzQzOzI1NjEsNyBAQCBzdGF0aWMgdTMyIHJ0dzg5X2J0Y19md19ycHRfdmVyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIHJwdF9tYXApXG4gXHRcdFx0Yml0X21hcCA9IEdFTk1BU0soOCwgMCk7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdGNhc2UgNDpcbiYjNDM7XHRcdGNhc2UgNTpcbiBcdFx0XHRiaXRfbWFwID0gR0VOTUFTSyg5LCAwKTtcbiBcdFx0XHRicmVhaztcbiBcdFx0ZGVmYXVsdDpcbkBAIC0yNTQwLDYgJiM0MzsyNTgxLDcgQEAgc3RhdGljIHUzMiBydHc4OV9idGNfZndfcnB0X3ZlcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiBycHRfbWFwKVxuIFx0XHRcdGJpdF9tYXAgPSBHRU5NQVNLKDgsIDIpO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHRjYXNlIDQ6XG4mIzQzO1x0XHRjYXNlIDU6XG4gXHRcdFx0Yml0X21hcCA9IEdFTk1BU0soOSwgMik7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdGRlZmF1bHQ6XG5AQCAtMjc0Nyw3ICYjNDM7Mjc4OSw5IEBAIHN0YXRpYyB2b2lkIF9md19zZXRfcG9saWN5KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTE2IHBvbGljeV90eXBlLFxuIFx0ICAgIGRtLVx1MDAzZXRkbWEucnhmbGN0cmwgPT0gQ1hGTENfUU9TTlVMTClcbiBcdFx0YnRjLVx1MDAzZWxwcyA9IDE7XG4gXHRlbHNlXG4tXHRcdGJ0Yy1cdTAwM2VscHMgPSAwO1xuJiM0MztcdFx0YnRjLVx1MDAzZWxwcyA9IGRtLVx1MDAzZWxwc19jdHJsX3NjYmQ7XG4mIzQzO1xuJiM0MztcdGRtLVx1MDAzZWxwc19jdHJsX3NjYmRfbGFzdCA9IGRtLVx1MDAzZWxwc19jdHJsX3NjYmQ7XG4gXG4gXHRpZiAoYnRjLVx1MDAzZWxwcyA9PSAxKVxuIFx0XHRydHc4OV9zZXRfY29leF9jdHJsX2xwcyhydHdkZXYsIGJ0Yy1cdTAwM2VscHMpO1xuQEAgLTI3NjksNzcgJiM0MzsyODEzLDg5IEBAIHN0YXRpYyB2b2lkIF9md19zZXRfcG9saWN5KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTE2IHBvbGljeV90eXBlLFxuIFx0XHRydHc4OV9zZXRfY29leF9jdHJsX2xwcyhydHdkZXYsIGJ0Yy1cdTAwM2VscHMpO1xuIH1cbiBcbi1zdGF0aWMgdm9pZCBfZndfc2V0X2Rydl9pbmZvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggdHlwZSlcbiYjNDM7c3RhdGljIHZvaWQgX2Z3X3NldF9kcnZfaW5mbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IGluZGV4KVxuIHtcbiBcdHN0cnVjdCBydHc4OV9idGMgKmJ0YyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2VidGM7XG4gXHRjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3ZlciAqdmVyID0gYnRjLVx1MDAzZXZlcjtcbi1cdHN0cnVjdCBydHc4OV9idGNfZG0gKmRtID0gXHUwMDI2YnRjLVx1MDAzZWRtO1xuLVx0c3RydWN0IHJ0dzg5X2J0Y193bF9pbmZvICp3bCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC53bDtcbi1cdHN0cnVjdCBydHc4OV9idGNfcmZfdHJ4X3BhcmEgcmZfcGFyYSA9IGRtLVx1MDAzZXJmX3RyeF9wYXJhO1xuIFxuLVx0c3dpdGNoICh0eXBlKSB7XG4mIzQzO1x0c3dpdGNoIChpbmRleCkge1xuIFx0Y2FzZSBDWERSVklORk9fSU5JVDpcbiBcdFx0aWYgKHZlci1cdTAwM2VmY3hpbml0ID09IDcpXG4tXHRcdFx0cnR3ODlfZndfaDJjX2N4ZHJ2X2luaXRfdjcocnR3ZGV2LCB0eXBlKTtcbiYjNDM7XHRcdFx0cnR3ODlfZndfaDJjX2N4ZHJ2X2luaXRfdjcocnR3ZGV2LCBpbmRleCk7XG4gXHRcdGVsc2Vcbi1cdFx0XHRydHc4OV9md19oMmNfY3hkcnZfaW5pdChydHdkZXYsIHR5cGUpO1xuJiM0MztcdFx0XHRydHc4OV9md19oMmNfY3hkcnZfaW5pdChydHdkZXYsIGluZGV4KTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIENYRFJWSU5GT19ST0xFOlxuIFx0XHRpZiAodmVyLVx1MDAzZWZ3bHJvbGUgPT0gMClcbi1cdFx0XHRydHc4OV9md19oMmNfY3hkcnZfcm9sZShydHdkZXYsIHR5cGUpO1xuJiM0MztcdFx0XHRydHc4OV9md19oMmNfY3hkcnZfcm9sZShydHdkZXYsIGluZGV4KTtcbiBcdFx0ZWxzZSBpZiAodmVyLVx1MDAzZWZ3bHJvbGUgPT0gMSlcbi1cdFx0XHRydHc4OV9md19oMmNfY3hkcnZfcm9sZV92MShydHdkZXYsIHR5cGUpO1xuJiM0MztcdFx0XHRydHc4OV9md19oMmNfY3hkcnZfcm9sZV92MShydHdkZXYsIGluZGV4KTtcbiBcdFx0ZWxzZSBpZiAodmVyLVx1MDAzZWZ3bHJvbGUgPT0gMilcbi1cdFx0XHRydHc4OV9md19oMmNfY3hkcnZfcm9sZV92MihydHdkZXYsIHR5cGUpO1xuJiM0MztcdFx0XHRydHc4OV9md19oMmNfY3hkcnZfcm9sZV92MihydHdkZXYsIGluZGV4KTtcbiBcdFx0ZWxzZSBpZiAodmVyLVx1MDAzZWZ3bHJvbGUgPT0gNylcbi1cdFx0XHRydHc4OV9md19oMmNfY3hkcnZfcm9sZV92NyhydHdkZXYsIHR5cGUpO1xuJiM0MztcdFx0XHRydHc4OV9md19oMmNfY3hkcnZfcm9sZV92NyhydHdkZXYsIGluZGV4KTtcbiBcdFx0ZWxzZSBpZiAodmVyLVx1MDAzZWZ3bHJvbGUgPT0gOClcbi1cdFx0XHRydHc4OV9md19oMmNfY3hkcnZfcm9sZV92OChydHdkZXYsIHR5cGUpO1xuJiM0MztcdFx0XHRydHc4OV9md19oMmNfY3hkcnZfcm9sZV92OChydHdkZXYsIGluZGV4KTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIENYRFJWSU5GT19DVFJMOlxuLVx0XHRpZiAodmVyLVx1MDAzZWRydmluZm9fdHlwZSA9PSAxKVxuLVx0XHRcdHR5cGUgPSAyO1xuJiM0MztcdFx0aWYgKHZlci1cdTAwM2VkcnZpbmZvX3ZlciAhPSAwKVxuJiM0MztcdFx0XHRpbmRleCA9IDI7XG4gXG4gXHRcdGlmICh2ZXItXHUwMDNlZmN4Y3RybCA9PSA3KVxuLVx0XHRcdHJ0dzg5X2Z3X2gyY19jeGRydl9jdHJsX3Y3KHJ0d2RldiwgdHlwZSk7XG4mIzQzO1x0XHRcdHJ0dzg5X2Z3X2gyY19jeGRydl9jdHJsX3Y3KHJ0d2RldiwgaW5kZXgpO1xuIFx0XHRlbHNlXG4tXHRcdFx0cnR3ODlfZndfaDJjX2N4ZHJ2X2N0cmwocnR3ZGV2LCB0eXBlKTtcbiYjNDM7XHRcdFx0cnR3ODlfZndfaDJjX2N4ZHJ2X2N0cmwocnR3ZGV2LCBpbmRleCk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBDWERSVklORk9fVFJYOlxuLVx0XHRpZiAodmVyLVx1MDAzZWRydmluZm9fdHlwZSA9PSAxKVxuLVx0XHRcdHR5cGUgPSAzO1xuLVxuLVx0XHRkbS1cdTAwM2V0cnhfaW5mby50eF9wb3dlciA9IHUzMl9nZXRfYml0cyhyZl9wYXJhLndsX3R4X3Bvd2VyLFxuLVx0XHRcdFx0XHRcdCAgICAgUlRXODlfQlRDX1dMX0RFRl9UWF9QV1IpO1xuLVx0XHRkbS1cdTAwM2V0cnhfaW5mby5yeF9nYWluID0gdTMyX2dldF9iaXRzKHJmX3BhcmEud2xfcnhfZ2Fpbixcbi1cdFx0XHRcdFx0XHQgICAgUlRXODlfQlRDX1dMX0RFRl9UWF9QV1IpO1xuLVx0XHRkbS1cdTAwM2V0cnhfaW5mby5idF90eF9wb3dlciA9IHUzMl9nZXRfYml0cyhyZl9wYXJhLmJ0X3R4X3Bvd2VyLFxuLVx0XHRcdFx0XHRcdFx0UlRXODlfQlRDX1dMX0RFRl9UWF9QV1IpO1xuLVx0XHRkbS1cdTAwM2V0cnhfaW5mby5idF9yeF9nYWluID0gdTMyX2dldF9iaXRzKHJmX3BhcmEuYnRfcnhfZ2Fpbixcbi1cdFx0XHRcdFx0XHQgICAgICAgUlRXODlfQlRDX1dMX0RFRl9UWF9QV1IpO1xuLVx0XHRkbS1cdTAwM2V0cnhfaW5mby5jbiA9IHdsLVx1MDAzZWNuX3JlcG9ydDtcbi1cdFx0ZG0tXHUwMDNldHJ4X2luZm8ubmhtID0gd2wtXHUwMDNlbmhtLnB3cjtcbi1cdFx0cnR3ODlfZndfaDJjX2N4ZHJ2X3RyeChydHdkZXYsIHR5cGUpO1xuJiM0MztcdFx0aWYgKHZlci1cdTAwM2VkcnZpbmZvX3ZlciBcdTAwM2UgMSlcbiYjNDM7XHRcdFx0aW5kZXggPSAzO1xuJiM0MztcbiYjNDM7XHRcdGlmICh2ZXItXHUwMDNlZmN4dHJ4ID09IDcpXG4mIzQzO1x0XHRcdHJ0dzg5X2Z3X2gyY19jeGRydl90cnhfdjcocnR3ZGV2LCBpbmRleCk7XG4mIzQzO1x0XHRlbHNlIGlmICh2ZXItXHUwMDNlZmN4dHJ4ID09IDkpXG4mIzQzO1x0XHRcdHJ0dzg5X2Z3X2gyY19jeGRydl90cnhfdjkocnR3ZGV2LCBpbmRleCk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBDWERSVklORk9fUkZLOlxuLVx0XHRpZiAodmVyLVx1MDAzZWRydmluZm9fdHlwZSA9PSAxKVxuJiM0MztcdFx0aWYgKHZlci1cdTAwM2VkcnZpbmZvX3ZlciAhPSAwKVxuIFx0XHRcdHJldHVybjtcbiBcbi1cdFx0cnR3ODlfZndfaDJjX2N4ZHJ2X3JmayhydHdkZXYsIHR5cGUpO1xuJiM0MztcdFx0cnR3ODlfZndfaDJjX2N4ZHJ2X3JmayhydHdkZXYsIGluZGV4KTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIENYRFJWSU5GT19UWFBXUjpcbiYjNDM7XHRcdGlmICh2ZXItXHUwMDNlZHJ2aW5mb192ZXIgPT0gMylcbiYjNDM7XHRcdFx0aW5kZXggPSA0O1xuJiM0MztcbiYjNDM7XHRcdGlmICh2ZXItXHUwMDNlZmN4dHJ4ID09IDcpXG4mIzQzO1x0XHRcdHJ0dzg5X2Z3X2gyY19jeHR4cHdyX3Y3KHJ0d2RldiwgaW5kZXgpO1xuJiM0MztcdFx0ZWxzZSBpZiAodmVyLVx1MDAzZWZjeHRyeCA9PSA5KVxuJiM0MztcdFx0XHRydHc4OV9md19oMmNfY3h0eHB3cl92OShydHdkZXYsIGluZGV4KTtcbiYjNDM7XHRcdGJyZWFrO1xuIFx0Y2FzZSBDWERSVklORk9fRkREVDpcbiYjNDM7XHRcdGlmICh2ZXItXHUwMDNlZHJ2aW5mb192ZXIgPT0gMylcbiYjNDM7XHRcdFx0aW5kZXggPSA1O1xuJiM0MztcdFx0ZWxzZVxuJiM0MztcdFx0XHRyZXR1cm47XG4mIzQzO1xuJiM0MztcdFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQlRDLCBcJiMzNDtkcnZfaW5mbyBGRERUIGluZGV4PSVkXFxuXCYjMzQ7LCBpbmRleCk7XG4mIzQzO1x0XHRicmVhaztcbiBcdGNhc2UgQ1hEUlZJTkZPX01MTzpcbiYjNDM7XHRcdGlmICh2ZXItXHUwMDNlZHJ2aW5mb192ZXIgPT0gMylcbiYjNDM7XHRcdFx0aW5kZXggPSA2O1xuJiM0MztcdFx0ZWxzZVxuJiM0MztcdFx0XHRyZXR1cm47XG4mIzQzO1xuJiM0MztcdFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQlRDLCBcJiMzNDtkcnZfaW5mbyBNTE8gaW5kZXg9JWRcXG5cJiMzNDssIGluZGV4KTtcbiYjNDM7XHRcdGJyZWFrO1xuIFx0Y2FzZSBDWERSVklORk9fT1NJOlxuIFx0XHRpZiAoIXZlci1cdTAwM2VmY3hvc2kpXG4gXHRcdFx0cmV0dXJuO1xuIFxuLVx0XHRpZiAodmVyLVx1MDAzZWRydmluZm9fdHlwZSA9PSAyKVxuLVx0XHRcdHR5cGUgPSA3O1xuJiM0MztcdFx0aWYgKHZlci1cdTAwM2VkcnZpbmZvX3ZlciBcdTAwM2UgMSlcbiYjNDM7XHRcdFx0aW5kZXggPSA3O1xuIFx0XHRlbHNlXG4gXHRcdFx0cmV0dXJuO1xuIFxuLVx0XHRydHc4OV9md19oMmNfY3hkcnZfb3NpX2luZm8ocnR3ZGV2LCB0eXBlKTtcbiYjNDM7XHRcdHJ0dzg5X2Z3X2gyY19jeGRydl9vc2lfaW5mbyhydHdkZXYsIGluZGV4KTtcbiBcdFx0YnJlYWs7XG4gXHRkZWZhdWx0OlxuIFx0XHRicmVhaztcbkBAIC0zMDIxLDUzICYjNDM7MzA3Nyw4NCBAQCBzdGF0aWMgdm9pZCBfc2V0X2J0X2lnbm9yZV93bGFuX2FjdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IGVuYWJsZSlcbiAjZGVmaW5lIEJfQlRDX1dMX1RYX1BPV0VSX1NJR04gQklUKDcpXG4gI2RlZmluZSBCX1RTU0lfV0xfVFhfUE9XRVJfU0lHTiBCSVQoOClcbiBcbi1zdGF0aWMgdm9pZCBfc2V0X3dsX3R4X3Bvd2VyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIGxldmVsKVxuJiM0MztzdGF0aWMgdm9pZCBfc2V0X3dsX3R4X3Bvd2VyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIGxldmVsLCB1OCBwaHlfbWFwKVxuIHtcbiBcdGNvbnN0IHN0cnVjdCBydHc4OV9jaGlwX2luZm8gKmNoaXAgPSBydHdkZXYtXHUwMDNlY2hpcDtcbiBcdHN0cnVjdCBydHc4OV9idGMgKmJ0YyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2VidGM7XG4tXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX2luZm8gKndsID0gXHUwMDI2YnRjLVx1MDAzZWN4LndsO1xuJiM0MztcdGNvbnN0IHN0cnVjdCBydHc4OV9idGNfdmVyICp2ZXIgPSBidGMtXHUwMDNldmVyO1xuJiM0MztcdHN0cnVjdCBydHc4OV9idGNfZG0gKmRtID0gXHUwMDI2YnRjLVx1MDAzZWRtO1xuJiM0MztcdGJvb2wgbGV2ZWxfY2hnID0gZmFsc2U7XG4gXHR1MzIgcHdyX3ZhbDtcbiBcbi1cdGlmICh3bC1cdTAwM2VyZl9wYXJhLnR4X3B3cl9mcmVlcnVuID09IGxldmVsKVxuJiM0MztcdGlmIChwaHlfbWFwIFx1MDAyNiBCSVQoUlRXODlfUEhZXzApKVxuJiM0MztcdFx0bGV2ZWxfY2hnID0gIShkbS1cdTAwM2VyZl90cnhfcGFyYS53bF90eF9wb3dlcltSVFc4OV9QSFlfMF0gPT0gbGV2ZWwpO1xuJiM0MztcbiYjNDM7XHRpZiAocGh5X21hcCBcdTAwMjYgQklUKFJUVzg5X1BIWV8xKSlcbiYjNDM7XHRcdGxldmVsX2NoZyB8PSAhKGRtLVx1MDAzZXJmX3RyeF9wYXJhLndsX3R4X3Bvd2VyW1JUVzg5X1BIWV8xXSA9PSBsZXZlbCk7XG4mIzQzO1xuJiM0MztcdGlmICghbGV2ZWxfY2hnIFx1MDAyNlx1MDAyNiAhYnRjLVx1MDAzZWNsaV9oMmNfY21kKVxuIFx0XHRyZXR1cm47XG4gXG4tXHR3bC1cdTAwM2VyZl9wYXJhLnR4X3B3cl9mcmVlcnVuID0gbGV2ZWw7XG4tXHRidGMtXHUwMDNlZG0ucmZfdHJ4X3BhcmEud2xfdHhfcG93ZXIgPSBsZXZlbDtcbiYjNDM7XHRpZiAocGh5X21hcCBcdTAwMjYgQklUKFJUVzg5X1BIWV8wKSlcbiYjNDM7XHRcdGRtLVx1MDAzZXJmX3RyeF9wYXJhLndsX3R4X3Bvd2VyW1JUVzg5X1BIWV8wXSA9IGxldmVsO1xuIFxuLVx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQlRDLFxuLVx0XHQgICAgXCYjMzQ7W0JUQ10sICVzKCk6IGxldmVsID0gJWRcXG5cJiMzNDssXG4tXHRcdCAgICBfX2Z1bmNfXywgbGV2ZWwpO1xuJiM0MztcdGlmIChwaHlfbWFwIFx1MDAyNiBCSVQoUlRXODlfUEhZXzEpKVxuJiM0MztcdFx0ZG0tXHUwMDNlcmZfdHJ4X3BhcmEud2xfdHhfcG93ZXJbUlRXODlfUEhZXzFdID0gbGV2ZWw7XG4gXG4tXHRpZiAobGV2ZWwgPT0gUlRXODlfQlRDX1dMX0RFRl9UWF9QV1IpIHtcbi1cdFx0cHdyX3ZhbCA9IFdMX1RYX1BPV0VSX05PX0JUQ19DVFJMO1xuLVx0fSBlbHNlIHsgLyogb25seSBhcHBseSBcJiMzNDtmb3JjZSB0eCBwb3dlclwmIzM0OyAqL1xuLVx0XHRwd3JfdmFsID0gRklFTERfUFJFUChXTF9UWF9QT1dFUl9JTlRfUEFSVCwgbGV2ZWwpO1xuLVx0XHRpZiAocHdyX3ZhbCBcdTAwM2UgUlRXODlfQlRDX1dMX0RFRl9UWF9QV1IpXG4tXHRcdFx0cHdyX3ZhbCA9IFJUVzg5X0JUQ19XTF9ERUZfVFhfUFdSO1xuJiM0MztcdGRtLVx1MDAzZXdsX3R4X3B3cl9waHlfbWFwID0gcGh5X21hcDtcbiYjNDM7XHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19CVEMsXG4mIzQzO1x0XHQgICAgXCYjMzQ7W0JUQ10sICVzKCk6IHBoeV9tYXA9MHgleCwgd2xfdHhfcHdyLVx1MDAzZSBwaHkwPSVkLCBwaHkxPSVkXFxuXCYjMzQ7LFxuJiM0MztcdFx0ICAgIF9fZnVuY19fLCBwaHlfbWFwLFxuJiM0MztcdFx0ICAgIGRtLVx1MDAzZXJmX3RyeF9wYXJhLndsX3R4X3Bvd2VyW1JUVzg5X1BIWV8wXSxcbiYjNDM7XHRcdCAgICBkbS1cdTAwM2VyZl90cnhfcGFyYS53bF90eF9wb3dlcltSVFc4OV9QSFlfMV0pO1xuJiM0MztcbiYjNDM7XHRpZiAodmVyLVx1MDAzZWZjeHRyeCA9PSA3IFx1MDAyNlx1MDAyNiBjaGlwLVx1MDAzZWNoaXBfaWQgPT0gUlRMODkyMkEpIHtcbiYjNDM7XHRcdF9md19zZXRfZHJ2X2luZm8ocnR3ZGV2LCBDWERSVklORk9fVFhQV1IpO1xuJiM0MztcdH0gZWxzZSBpZiAodmVyLVx1MDAzZWZjeHRyeCA9PSA5KSB7XG4mIzQzO1x0XHRfZndfc2V0X2Rydl9pbmZvKHJ0d2RldiwgQ1hEUlZJTkZPX1RYUFdSKTtcbiYjNDM7XHR9IGVsc2Uge1xuJiM0MztcdFx0aWYgKGxldmVsID09IFJUVzg5X0JUQ19XTF9ERUZfVFhfUFdSKSB7XG4mIzQzO1x0XHRcdHB3cl92YWwgPSBXTF9UWF9QT1dFUl9OT19CVENfQ1RSTDtcbiYjNDM7XHRcdH0gZWxzZSB7IC8qIG9ubHkgYXBwbHkgXCYjMzQ7Zm9yY2UgdHggcG93ZXJcJiMzNDsgKi9cbiYjNDM7XHRcdFx0cHdyX3ZhbCA9IEZJRUxEX1BSRVAoV0xfVFhfUE9XRVJfSU5UX1BBUlQsIGxldmVsKTtcbiYjNDM7XHRcdFx0aWYgKHB3cl92YWwgXHUwMDNlIFJUVzg5X0JUQ19XTF9ERUZfVFhfUFdSKVxuJiM0MztcdFx0XHRcdHB3cl92YWwgPSBSVFc4OV9CVENfV0xfREVGX1RYX1BXUjtcbiBcbi1cdFx0aWYgKGxldmVsIFx1MDAyNiBCX0JUQ19XTF9UWF9QT1dFUl9TSUdOKVxuLVx0XHRcdHB3cl92YWwgfD0gQl9UU1NJX1dMX1RYX1BPV0VSX1NJR047XG4tXHRcdHB3cl92YWwgfD0gV0xfVFhfUE9XRVJfV0lUSF9CVDtcbiYjNDM7XHRcdFx0aWYgKGxldmVsIFx1MDAyNiBCX0JUQ19XTF9UWF9QT1dFUl9TSUdOKVxuJiM0MztcdFx0XHRcdHB3cl92YWwgfD0gQl9UU1NJX1dMX1RYX1BPV0VSX1NJR047XG4mIzQzO1x0XHRcdHB3cl92YWwgfD0gV0xfVFhfUE9XRVJfV0lUSF9CVDtcbiYjNDM7XHRcdH1cbiYjNDM7XHRcdGNoaXAtXHUwMDNlb3BzLVx1MDAzZWJ0Y19zZXRfd2xfdHhwd3JfY3RybChydHdkZXYsIHB3cl92YWwpO1xuIFx0fVxuLVxuLVx0Y2hpcC1cdTAwM2VvcHMtXHUwMDNlYnRjX3NldF93bF90eHB3cl9jdHJsKHJ0d2RldiwgcHdyX3ZhbCk7XG4gfVxuIFxuLXN0YXRpYyB2b2lkIF9zZXRfd2xfcnhfZ2FpbihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiBsZXZlbClcbiYjNDM7c3RhdGljIHZvaWQgX3NldF93bF9yeF9nYWluKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIGxldmVsLCB1OCBwaHlfbWFwKVxuIHtcbiBcdGNvbnN0IHN0cnVjdCBydHc4OV9jaGlwX2luZm8gKmNoaXAgPSBydHdkZXYtXHUwMDNlY2hpcDtcbiBcdHN0cnVjdCBydHc4OV9idGMgKmJ0YyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2VidGM7XG4tXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX2luZm8gKndsID0gXHUwMDI2YnRjLVx1MDAzZWN4LndsO1xuJiM0MztcdHN0cnVjdCBydHc4OV9idGNfZG0gKmRtID0gXHUwMDI2YnRjLVx1MDAzZWRtO1xuJiM0MztcdGJvb2wgbGV2ZWxfY2hnID0gZmFsc2U7XG4mIzQzO1xuJiM0MztcdGlmIChwaHlfbWFwIFx1MDAyNiBCSVQoUlRXODlfUEhZXzApKVxuJiM0MztcdFx0bGV2ZWxfY2hnID0gIShkbS1cdTAwM2VyZl90cnhfcGFyYS53bF9yeF9nYWluW1JUVzg5X1BIWV8wXSA9PSBsZXZlbCk7XG4gXG4tXHRpZiAod2wtXHUwMDNlcmZfcGFyYS5yeF9nYWluX2ZyZWVydW4gPT0gbGV2ZWwpXG4mIzQzO1x0aWYgKHBoeV9tYXAgXHUwMDI2IEJJVChSVFc4OV9QSFlfMSkpXG4mIzQzO1x0XHRsZXZlbF9jaGcgfD0gIShkbS1cdTAwM2VyZl90cnhfcGFyYS53bF9yeF9nYWluW1JUVzg5X1BIWV8xXSA9PSBsZXZlbCk7XG4mIzQzO1xuJiM0MztcdGlmICghbGV2ZWxfY2hnIFx1MDAyNlx1MDAyNiAhYnRjLVx1MDAzZWNsaV9oMmNfY21kKVxuIFx0XHRyZXR1cm47XG4gXG4tXHR3bC1cdTAwM2VyZl9wYXJhLnJ4X2dhaW5fZnJlZXJ1biA9IGxldmVsO1xuLVx0YnRjLVx1MDAzZWRtLnJmX3RyeF9wYXJhLndsX3J4X2dhaW4gPSBsZXZlbDtcbiYjNDM7XHRpZiAocGh5X21hcCBcdTAwMjYgQklUKFJUVzg5X1BIWV8wKSlcbiYjNDM7XHRcdGRtLVx1MDAzZXJmX3RyeF9wYXJhLndsX3J4X2dhaW5bUlRXODlfUEhZXzBdID0gbGV2ZWw7XG4mIzQzO1xuJiM0MztcdGlmIChwaHlfbWFwIFx1MDAyNiBCSVQoUlRXODlfUEhZXzEpKVxuJiM0MztcdFx0ZG0tXHUwMDNlcmZfdHJ4X3BhcmEud2xfcnhfZ2FpbltSVFc4OV9QSFlfMV0gPSBsZXZlbDtcbiBcbiBcdHJ0dzg5X2RlYnVnKHJ0d2RldiwgUlRXODlfREJHX0JUQyxcbi1cdFx0ICAgIFwmIzM0O1tCVENdLCAlcygpOiBsZXZlbCA9ICVkXFxuXCYjMzQ7LFxuLVx0XHQgICAgX19mdW5jX18sIGxldmVsKTtcbiYjNDM7XHRcdCAgICBcJiMzNDtbQlRDXSwgJXMoKTogcGh5X21hcD0weCV4LCB3bF9yeF9nYWluLVx1MDAzZSBwaHkwPSVkLCBwaHkxPSVkXFxuXCYjMzQ7LFxuJiM0MztcdFx0ICAgIF9fZnVuY19fLCBwaHlfbWFwLFxuJiM0MztcdFx0ICAgIGRtLVx1MDAzZXJmX3RyeF9wYXJhLndsX3J4X2dhaW5bUlRXODlfUEhZXzBdLFxuJiM0MztcdFx0ICAgIGRtLVx1MDAzZXJmX3RyeF9wYXJhLndsX3J4X2dhaW5bUlRXODlfUEhZXzFdKTtcbiBcbiBcdGNoaXAtXHUwMDNlb3BzLVx1MDAzZWJ0Y19zZXRfd2xfcnhfZ2FpbihydHdkZXYsIGxldmVsKTtcbiB9XG5AQCAtMzA3NSwxMSAmIzQzOzMxNjIsMTEgQEAgc3RhdGljIHZvaWQgX3NldF93bF9yeF9nYWluKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIGxldmVsKVxuIHN0YXRpYyB2b2lkIF9zZXRfYnRfdHhfcG93ZXIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCBsZXZlbClcbiB7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcdTAwMjZydHdkZXYtXHUwMDNlYnRjO1xuLVx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC5idDtcbiYjNDM7XHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXHUwMDI2YnRjLVx1MDAzZWN4LmJ0MDtcbiBcdGludCByZXQ7XG4gXHR1OCBidWY7XG4gXG4tXHRpZiAoYnRjLVx1MDAzZWN4LmNudF9idFtCVENfQkNOVF9JTkZPVVBEQVRFXSA9PSAwKVxuJiM0MztcdGlmIChidC1cdTAwM2ViY250W0JUQ19CQ05UX0lORk9VUERBVEVdID09IDApXG4gXHRcdHJldHVybjtcbiBcbiBcdGlmIChidC1cdTAwM2VyZl9wYXJhLnR4X3B3cl9mcmVlcnVuID09IGxldmVsKVxuQEAgLTMwOTMsNyAmIzQzOzMxODAsNyBAQCBzdGF0aWMgdm9pZCBfc2V0X2J0X3R4X3Bvd2VyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggbGV2ZWwpXG4gXHRyZXQgPSBfc2VuZF9md19jbWQocnR3ZGV2LCBCVEZDX1NFVCwgU0VUX0JUX1RYX1BXUiwgXHUwMDI2YnVmLCAxKTtcbiBcdGlmICghcmV0KSB7XG4gXHRcdGJ0LVx1MDAzZXJmX3BhcmEudHhfcHdyX2ZyZWVydW4gPSBsZXZlbDtcbi1cdFx0YnRjLVx1MDAzZWRtLnJmX3RyeF9wYXJhLmJ0X3R4X3Bvd2VyID0gbGV2ZWw7XG4mIzQzO1x0XHRidGMtXHUwMDNlZG0ucmZfdHJ4X3BhcmEuYnRfdHhfcG93ZXJbQlRDX0JUXzFTVF0gPSBsZXZlbDtcbiBcdH1cbiB9XG4gXG5AQCAtMzEwMiw5ICYjNDM7MzE4OSw5IEBAIHN0YXRpYyB2b2lkIF9zZXRfYnRfdHhfcG93ZXIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCBsZXZlbClcbiBzdGF0aWMgdm9pZCBfc2V0X2J0X3J4X2dhaW4oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCBsZXZlbClcbiB7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcdTAwMjZydHdkZXYtXHUwMDNlYnRjO1xuLVx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC5idDtcbiYjNDM7XHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXHUwMDI2YnRjLVx1MDAzZWN4LmJ0MDtcbiBcbi1cdGlmIChidGMtXHUwMDNlY3guY250X2J0W0JUQ19CQ05UX0lORk9VUERBVEVdID09IDApXG4mIzQzO1x0aWYgKGJ0LVx1MDAzZWJjbnRbQlRDX0JDTlRfSU5GT1VQREFURV0gPT0gMClcbiBcdFx0cmV0dXJuO1xuIFxuIFx0aWYgKChidC1cdTAwM2VyZl9wYXJhLnJ4X2dhaW5fZnJlZXJ1biA9PSBsZXZlbCB8fFxuQEAgLTMxMTMsNyAmIzQzOzMyMDAsNyBAQCBzdGF0aWMgdm9pZCBfc2V0X2J0X3J4X2dhaW4oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCBsZXZlbClcbiBcdFx0cmV0dXJuO1xuIFxuIFx0YnQtXHUwMDNlcmZfcGFyYS5yeF9nYWluX2ZyZWVydW4gPSBsZXZlbDtcbi1cdGJ0Yy1cdTAwM2VkbS5yZl90cnhfcGFyYS5idF9yeF9nYWluID0gbGV2ZWw7XG4mIzQzO1x0YnRjLVx1MDAzZWRtLnJmX3RyeF9wYXJhLmJ0X3J4X2dhaW5bQlRDX0JUXzFTVF0gPSBsZXZlbDtcbiBcbiBcdHJ0dzg5X2RlYnVnKHJ0d2RldiwgUlRXODlfREJHX0JUQyxcbiBcdFx0ICAgIFwmIzM0O1tCVENdLCAlcygpOiBsZXZlbCA9ICVkXFxuXCYjMzQ7LFxuQEAgLTMxMzQsMTIgJiM0MzszMjIxLDEzIEBAIHN0YXRpYyB2b2lkIF9zZXRfcmZfdHJ4X3BhcmEoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuIFx0Y29uc3Qgc3RydWN0IHJ0dzg5X2J0Y192ZXIgKnZlciA9IGJ0Yy1cdTAwM2V2ZXI7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX2RtICpkbSA9IFx1MDAyNmJ0Yy1cdTAwM2VkbTtcbiBcdHN0cnVjdCBydHc4OV9idGNfd2xfaW5mbyAqd2wgPSBcdTAwMjZidGMtXHUwMDNlY3gud2w7XG4tXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXHUwMDI2YnRjLVx1MDAzZWN4LmJ0O1xuJiM0MztcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcdTAwMjZidGMtXHUwMDNlY3guYnQwO1xuIFx0c3RydWN0IHJ0dzg5X2J0Y19idF9saW5rX2luZm8gKmIgPSBcdTAwMjZidC1cdTAwM2VsaW5rX2luZm87XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX3NtYXAgKndsX3NtYXAgPSBcdTAwMjZ3bC1cdTAwM2VzdGF0dXMubWFwO1xuLVx0c3RydWN0IHJ0dzg5X2J0Y19yZl90cnhfcGFyYSBwYXJhO1xuJiM0MztcdHN0cnVjdCBydHc4OV9idGNfcmZfdHJ4X3BhcmFfdjkgcGFyYTtcbiYjNDM7XHR1OCBsdiwgbGlua19tb2RlID0gMCwgaSwgZGJjY18yZ19waHkgPSAwO1xuJiM0MztcdHU4IHVsX3BhcmFfbnVtLCBkbF9wYXJhX251bTtcbiBcdHUzMiB3bF9zdGJfY2hnID0gMDtcbi1cdHU4IGxldmVsX2lkID0gMCwgbGlua19tb2RlID0gMCwgaSwgZGJjY18yZ19waHkgPSAwO1xuIFxuIFx0aWYgKHZlci1cdTAwM2Vmd2xyb2xlID09IDApIHtcbiBcdFx0bGlua19tb2RlID0gd2wtXHUwMDNlcm9sZV9pbmZvLmxpbmtfbW9kZTtcbkBAIC0zMTU1LDYgJiM0MzszMjQzLDE4IEBAIHN0YXRpYyB2b2lkIF9zZXRfcmZfdHJ4X3BhcmEoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuIFx0XHRkYmNjXzJnX3BoeSA9IHdsLVx1MDAzZXJvbGVfaW5mb192Mi5kYmNjXzJnX3BoeTtcbiBcdH1cbiBcbiYjNDM7XHRpZiAodmVyLVx1MDAzZWZjeHRyeCA9PSA5IFx1MDAyNlx1MDAyNiBjaGlwLVx1MDAzZXJmX3BhcmFfdWxpbmtfdjkpIHtcbiYjNDM7XHRcdHVsX3BhcmFfbnVtID0gY2hpcC1cdTAwM2VyZl9wYXJhX3VsaW5rX251bV92OTtcbiYjNDM7XHRcdGRsX3BhcmFfbnVtID0gY2hpcC1cdTAwM2VyZl9wYXJhX2RsaW5rX251bV92OTtcbiYjNDM7XHR9IGVsc2UgaWYgKHZlci1cdTAwM2VmY3h0cnggPT0gMCBcdTAwMjZcdTAwMjYgY2hpcC1cdTAwM2VyZl9wYXJhX3VsaW5rX3YwKSB7XG4mIzQzO1x0XHR1bF9wYXJhX251bSA9IGNoaXAtXHUwMDNlcmZfcGFyYV91bGlua19udW1fdjA7XG4mIzQzO1x0XHRkbF9wYXJhX251bSA9IGNoaXAtXHUwMDNlcmZfcGFyYV9kbGlua19udW1fdjA7XG4mIzQzO1x0fSBlbHNlIHtcbiYjNDM7XHRcdHJ0dzg5X3dhcm4ocnR3ZGV2LCBcJiMzNDtbQlRDXSVzKCksIE5vIHJmX3BhcmEgZm9yIHZlcnNlaW9uICVkXFxuXCYjMzQ7LFxuJiM0MztcdFx0XHQgICBfX2Z1bmNfXywgdmVyLVx1MDAzZWZjeHRyeCk7XG4mIzQzO1x0XHRnb3RvIG5leHQ7XG4mIzQzO1x0fVxuJiM0MztcbiBcdC8qIGRlY2lkZSB0cnhfcGFyYV9sZXZlbCAqL1xuIFx0aWYgKGJ0Yy1cdTAwM2VhbnRfdHlwZSA9PSBCVENfQU5UX1NIQVJFRCkge1xuIFx0XHQvKiBmaXggTE5BMiAmIzQzOyBUSUEgZ2FpbiBub3QgY2hhbmdlIGJ5IEdOVF9CVCAqL1xuQEAgLTMxNzYsMzAgJiM0MzszMjc2LDU0IEBAIHN0YXRpYyB2b2lkIF9zZXRfcmZfdHJ4X3BhcmEoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuIFx0XHR9XG4gXHR9XG4gXG4tXHRsZXZlbF9pZCA9IGRtLVx1MDAzZXRyeF9wYXJhX2xldmVsO1xuLVx0aWYgKGxldmVsX2lkIFx1MDAzZT0gY2hpcC1cdTAwM2VyZl9wYXJhX2RsaW5rX251bSB8fFxuLVx0ICAgIGxldmVsX2lkIFx1MDAzZT0gY2hpcC1cdTAwM2VyZl9wYXJhX3VsaW5rX251bSkge1xuJiM0MztcdGx2ID0gZG0tXHUwMDNldHJ4X3BhcmFfbGV2ZWw7XG4mIzQzO1x0aWYgKGx2IFx1MDAzZT0gdWxfcGFyYV9udW0gfHxcbiYjNDM7XHQgICAgbHYgXHUwMDNlPSBkbF9wYXJhX251bSkge1xuIFx0XHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19CVEMsXG4gXHRcdFx0ICAgIFwmIzM0O1tCVENdLCAlcygpOiBpbnZhbGlkIGxldmVsX2lkOiAlZFxcblwmIzM0Oyxcbi1cdFx0XHQgICAgX19mdW5jX18sIGxldmVsX2lkKTtcbiYjNDM7XHRcdFx0ICAgIF9fZnVuY19fLCBsdik7XG4gXHRcdHJldHVybjtcbiBcdH1cbiBcbi1cdGlmICh3bC1cdTAwM2VzdGF0dXMubWFwLnRyYWZmaWNfZGlyIFx1MDAyNiBCSVQoUlRXODlfVEZDX1VMKSlcbi1cdFx0cGFyYSA9IGNoaXAtXHUwMDNlcmZfcGFyYV91bGlua1tsZXZlbF9pZF07XG4tXHRlbHNlXG4tXHRcdHBhcmEgPSBjaGlwLVx1MDAzZXJmX3BhcmFfZGxpbmtbbGV2ZWxfaWRdO1xuJiM0MztcdGlmICh3bC1cdTAwM2VzdGF0dXMubWFwLnRyYWZmaWNfZGlyIFx1MDAyNiBCSVQoUlRXODlfVEZDX1VMKSkge1xuJiM0MztcdFx0aWYgKHZlci1cdTAwM2VmY3h0cnggPT0gOSkge1xuJiM0MztcdFx0XHRwYXJhID0gY2hpcC1cdTAwM2VyZl9wYXJhX3VsaW5rX3Y5W2x2XTtcbiYjNDM7XHRcdH0gZWxzZSB7XG4mIzQzO1x0XHRcdGZvciAoaSA9IFJUVzg5X1BIWV8wOyBpIFx1MDAzYyBSVFc4OV9QSFlfTlVNOyBpJiM0MzsmIzQzOykge1xuJiM0MztcdFx0XHRcdHBhcmEud2xfdHhfcG93ZXJbaV0gPSBjaGlwLVx1MDAzZXJmX3BhcmFfdWxpbmtfdjBbbHZdLndsX3R4X3Bvd2VyO1xuJiM0MztcdFx0XHRcdHBhcmEud2xfcnhfZ2FpbltpXSA9IGNoaXAtXHUwMDNlcmZfcGFyYV91bGlua192MFtsdl0ud2xfcnhfZ2FpbjtcbiYjNDM7XHRcdFx0fVxuJiM0MztcdFx0XHRmb3IgKGkgPSBCVENfQlRfMVNUOyBpIFx1MDAzYyBCVENfQUxMX0JUOyBpJiM0MzsmIzQzOykge1xuJiM0MztcdFx0XHRcdHBhcmEuYnRfdHhfcG93ZXJbaV0gPSBjaGlwLVx1MDAzZXJmX3BhcmFfdWxpbmtfdjBbbHZdLmJ0X3R4X3Bvd2VyO1xuJiM0MztcdFx0XHRcdHBhcmEuYnRfcnhfZ2FpbltpXSA9IGNoaXAtXHUwMDNlcmZfcGFyYV91bGlua192MFtsdl0uYnRfcnhfZ2FpbjtcbiYjNDM7XHRcdFx0fVxuJiM0MztcdFx0fVxuJiM0MztcdH0gZWxzZSB7XG4mIzQzO1x0XHRpZiAodmVyLVx1MDAzZWZjeHRyeCA9PSA5KSB7XG4mIzQzO1x0XHRcdHBhcmEgPSBjaGlwLVx1MDAzZXJmX3BhcmFfZGxpbmtfdjlbbHZdO1xuJiM0MztcdFx0fSBlbHNlIHtcbiYjNDM7XHRcdFx0Zm9yIChpID0gUlRXODlfUEhZXzA7IGkgXHUwMDNjIFJUVzg5X1BIWV9OVU07IGkmIzQzOyYjNDM7KSB7XG4mIzQzO1x0XHRcdFx0cGFyYS53bF90eF9wb3dlcltpXSA9IGNoaXAtXHUwMDNlcmZfcGFyYV9kbGlua192MFtsdl0ud2xfdHhfcG93ZXI7XG4mIzQzO1x0XHRcdFx0cGFyYS53bF9yeF9nYWluW2ldID0gY2hpcC1cdTAwM2VyZl9wYXJhX2RsaW5rX3YwW2x2XS53bF9yeF9nYWluO1xuJiM0MztcdFx0XHR9XG4mIzQzO1x0XHRcdGZvciAoaSA9IEJUQ19CVF8xU1Q7IGkgXHUwMDNjIEJUQ19BTExfQlQ7IGkmIzQzOyYjNDM7KSB7XG4mIzQzO1x0XHRcdFx0cGFyYS5idF90eF9wb3dlcltpXSA9IGNoaXAtXHUwMDNlcmZfcGFyYV9kbGlua192MFtsdl0uYnRfdHhfcG93ZXI7XG4mIzQzO1x0XHRcdFx0cGFyYS5idF9yeF9nYWluW2ldID0gY2hpcC1cdTAwM2VyZl9wYXJhX2RsaW5rX3YwW2x2XS5idF9yeF9nYWluO1xuJiM0MztcdFx0XHR9XG4mIzQzO1x0XHR9XG4mIzQzO1x0fVxuIFxuIFx0aWYgKGRtLVx1MDAzZWZkZHRfdHJhaW4pIHtcbi1cdFx0X3NldF93bF9yeF9nYWluKHJ0d2RldiwgMSk7XG4mIzQzO1x0XHRfc2V0X3dsX3J4X2dhaW4ocnR3ZGV2LCAxLCBSVFc4OV9QSFlfMCk7XG4gXHRcdF93cml0ZV9zY2JkKHJ0d2RldiwgQlRDX1dTQ0JfUlhHQUlOLCB0cnVlKTtcbiBcdH0gZWxzZSB7XG4tXHRcdF9zZXRfd2xfdHhfcG93ZXIocnR3ZGV2LCBwYXJhLndsX3R4X3Bvd2VyKTtcbi1cdFx0X3NldF93bF9yeF9nYWluKHJ0d2RldiwgcGFyYS53bF9yeF9nYWluKTtcbi1cdFx0X3NldF9idF90eF9wb3dlcihydHdkZXYsIHBhcmEuYnRfdHhfcG93ZXIpO1xuLVx0XHRfc2V0X2J0X3J4X2dhaW4ocnR3ZGV2LCBwYXJhLmJ0X3J4X2dhaW4pO1xuJiM0MztcdFx0X3NldF93bF90eF9wb3dlcihydHdkZXYsIHBhcmEud2xfdHhfcG93ZXJbUlRXODlfUEhZXzBdLCBSVFc4OV9QSFlfMCk7XG4mIzQzO1x0XHRfc2V0X3dsX3J4X2dhaW4ocnR3ZGV2LCBwYXJhLndsX3J4X2dhaW5bUlRXODlfUEhZXzBdLCBSVFc4OV9QSFlfMCk7XG4mIzQzO1x0XHRfc2V0X2J0X3R4X3Bvd2VyKHJ0d2RldiwgcGFyYS5idF90eF9wb3dlcltCVENfQlRfMVNUXSk7XG4mIzQzO1x0XHRfc2V0X2J0X3J4X2dhaW4ocnR3ZGV2LCBwYXJhLmJ0X3J4X2dhaW5bQlRDX0JUXzFTVF0pO1xuIFx0fVxuIFxuJiM0MztuZXh0OlxuIFx0aWYgKCFidC1cdTAwM2VlbmFibGUubm93IHx8IGRtLVx1MDAzZXdsX29ubHkgfHwgd2xfc21hcC1cdTAwM2VyZl9vZmYgfHxcbiBcdCAgICB3bF9zbWFwLVx1MDAzZWxwcyA9PSBCVENfTFBTX1JGX09GRiB8fFxuIFx0ICAgIGxpbmtfbW9kZSA9PSBCVENfV0xJTktfNUcgfHxcbkBAIC0zMjIwLDcgJiM0MzszMzQ0LDcgQEAgc3RhdGljIHZvaWQgX3VwZGF0ZV9idGNfc3RhdGVfbWFwKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbiBcdHN0cnVjdCBydHc4OV9idGMgKmJ0YyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2VidGM7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX2N4ICpjeCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeDtcbiBcdHN0cnVjdCBydHc4OV9idGNfd2xfaW5mbyAqd2wgPSBcdTAwMjZjeC1cdTAwM2V3bDtcbi1cdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcdTAwMjZjeC1cdTAwM2VidDtcbiYjNDM7XHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXHUwMDI2Y3gtXHUwMDNlYnQwO1xuIFx0c3RydWN0IHJ0dzg5X2J0Y19idF9saW5rX2luZm8gKmJ0X2xpbmZvID0gXHUwMDI2YnQtXHUwMDNlbGlua19pbmZvO1xuIFxuIFx0aWYgKHdsLVx1MDAzZXN0YXR1cy5tYXAuY29ubmVjdGluZyB8fCB3bC1cdTAwM2VzdGF0dXMubWFwLl80d2F5IHx8XG5AQCAtMzI0Nyw3ICYjNDM7MzM3MSw3IEBAIHN0YXRpYyB2b2lkIF9zZXRfYnRfYWZoX2luZm9fdjAoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuIFx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXHUwMDI2cnR3ZGV2LVx1MDAzZWJ0YztcbiBcdGNvbnN0IHN0cnVjdCBydHc4OV9idGNfdmVyICp2ZXIgPSBidGMtXHUwMDNldmVyO1xuIFx0c3RydWN0IHJ0dzg5X2J0Y193bF9pbmZvICp3bCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC53bDtcbi1cdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcdTAwMjZidGMtXHUwMDNlY3guYnQ7XG4mIzQzO1x0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC5idDA7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2xpbmtfaW5mbyAqYiA9IFx1MDAyNmJ0LVx1MDAzZWxpbmtfaW5mbztcbiBcdHN0cnVjdCBydHc4OV9idGNfd2xfcm9sZV9pbmZvICp3bF9yaW5mbyA9IFx1MDAyNndsLVx1MDAzZXJvbGVfaW5mbztcbiBcdHN0cnVjdCBydHc4OV9idGNfd2xfcm9sZV9pbmZvX3YxICp3bF9yaW5mb192MSA9IFx1MDAyNndsLVx1MDAzZXJvbGVfaW5mb192MTtcbkBAIC0zNDA3LDcgJiM0MzszNTMxLDcgQEAgc3RhdGljIHZvaWQgX3NldF9idF9hZmhfaW5mb192MChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4gXHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19CVEMsXG4gXHRcdCAgICBcJiMzNDtbQlRDXSwgJXMoKTogZW49JWQsIGNoPSVkLCBidz0lZFxcblwmIzM0OyxcbiBcdFx0ICAgIF9fZnVuY19fLCBlbiwgY2gsIGJ3KTtcbi1cdGJ0Yy1cdTAwM2VjeC5jbnRfd2xbQlRDX1dDTlRfQ0hfVVBEQVRFXSYjNDM7JiM0Mzs7XG4mIzQzO1x0d2wtXHUwMDNld2NudFtCVENfV0NOVF9DSF9VUERBVEVdJiM0MzsmIzQzOztcbiB9XG4gXG4gc3RhdGljIHZvaWQgX3NldF9idF9hZmhfaW5mb192MShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG5AQCAtMzQxNyw3ICYjNDM7MzU0MSw3IEBAIHN0YXRpYyB2b2lkIF9zZXRfYnRfYWZoX2luZm9fdjEoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuIFx0c3RydWN0IHJ0dzg5X2J0Y193bF9pbmZvICp3bCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC53bDtcbiBcdHN0cnVjdCBydHc4OV9idGNfd2xfcm9sZV9pbmZvX3Y4ICp3bF9yaW5mbyA9IFx1MDAyNndsLVx1MDAzZXJvbGVfaW5mb192ODtcbiBcdHN0cnVjdCBydHc4OV9idGNfd2xfYWZoX2luZm8gKndsX2FmaCA9IFx1MDAyNndsLVx1MDAzZWFmaF9pbmZvO1xuLVx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC5idDtcbiYjNDM7XHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXHUwMDI2YnRjLVx1MDAzZWN4LmJ0MDtcbiBcdHN0cnVjdCBydHc4OV9idGNfd2xfcmxpbmsgKnJsaW5rO1xuIFx0dTggZW4gPSAwLCBjaCA9IDAsIGJ3ID0gMCwgYnVmWzNdID0ge307XG4gXHR1OCBpLCBqLCBsaW5rX21vZGU7XG5AQCAtMzUwNyw3ICYjNDM7MzYzMSw3IEBAIHN0YXRpYyB2b2lkIF9zZXRfYnRfYWZoX2luZm9fdjEoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuIFx0XHRcdCAgICBcJiMzNDtbQlRDXSwgJXMoKTogZW49JWQsIGNoPSVkLCBidz0lZFxcblwmIzM0OyxcbiBcdFx0XHQgICAgX19mdW5jX18sIGVuLCBjaCwgYncpO1xuIFxuLVx0XHRidGMtXHUwMDNlY3guY250X3dsW0JUQ19XQ05UX0NIX1VQREFURV0mIzQzOyYjNDM7O1xuJiM0MztcdFx0d2wtXHUwMDNld2NudFtCVENfV0NOVF9DSF9VUERBVEVdJiM0MzsmIzQzOztcbiBcdH1cbiB9XG4gXG5AQCAtMzUyMyw3ICYjNDM7MzY0Nyw3IEBAIHN0YXRpYyBib29sIF9jaGVja19mcmVlcnVuKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbiB7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcdTAwMjZydHdkZXYtXHUwMDNlYnRjO1xuIFx0c3RydWN0IHJ0dzg5X2J0Y193bF9pbmZvICp3bCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC53bDtcbi1cdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcdTAwMjZidGMtXHUwMDNlY3guYnQ7XG4mIzQzO1x0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC5idDA7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX3JvbGVfaW5mbyAqd2xfcmluZm8gPSBcdTAwMjZ3bC1cdTAwM2Vyb2xlX2luZm87XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX3JvbGVfaW5mb192MSAqd2xfcmluZm9fdjEgPSBcdTAwMjZ3bC1cdTAwM2Vyb2xlX2luZm9fdjE7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX3JvbGVfaW5mb192MiAqd2xfcmluZm9fdjIgPSBcdTAwMjZ3bC1cdTAwM2Vyb2xlX2luZm9fdjI7XG5AQCAtMzk5Niw5ICYjNDM7NDEyMCw5IEBAIHZvaWQgcnR3ODlfYnRjX3NldF9wb2xpY3lfdjEoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MTYgcG9saWN5X3R5cGUpXG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX2RtICpkbSA9IFx1MDAyNmJ0Yy1cdTAwM2VkbTtcbiBcdHN0cnVjdCBydHc4OV9idGNfZmJ0Y190ZG1hICp0ID0gXHUwMDI2ZG0tXHUwMDNldGRtYTtcbiBcdHN0cnVjdCBydHc4OV9idGNfd2xfcm9sZV9pbmZvX3YxICp3bF9yaW5mbyA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC53bC5yb2xlX2luZm9fdjE7XG4tXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2EyZHBfZGVzYyAqYTJkcCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC5idC5saW5rX2luZm8uYTJkcF9kZXNjO1xuLVx0c3RydWN0IHJ0dzg5X2J0Y19idF9oaWRfZGVzYyAqaGlkID0gXHUwMDI2YnRjLVx1MDAzZWN4LmJ0LmxpbmtfaW5mby5oaWRfZGVzYztcbi1cdHN0cnVjdCBydHc4OV9idGNfYnRfaGZwX2Rlc2MgKmhmcCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC5idC5saW5rX2luZm8uaGZwX2Rlc2M7XG4mIzQzO1x0c3RydWN0IHJ0dzg5X2J0Y19idF9hMmRwX2Rlc2MgKmEyZHAgPSBcdTAwMjZidGMtXHUwMDNlY3guYnQwLmxpbmtfaW5mby5hMmRwX2Rlc2M7XG4mIzQzO1x0c3RydWN0IHJ0dzg5X2J0Y19idF9oaWRfZGVzYyAqaGlkID0gXHUwMDI2YnRjLVx1MDAzZWN4LmJ0MC5saW5rX2luZm8uaGlkX2Rlc2M7XG4mIzQzO1x0c3RydWN0IHJ0dzg5X2J0Y19idF9oZnBfZGVzYyAqaGZwID0gXHUwMDI2YnRjLVx1MDAzZWN4LmJ0MC5saW5rX2luZm8uaGZwX2Rlc2M7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX2luZm8gKndsID0gXHUwMDI2YnRjLVx1MDAzZWN4LndsO1xuIFx0dTggdHlwZSwgbnVsbF9yb2xlO1xuIFx0dTMyIHRibF93MSwgdGJsX2IxLCB0YmxfYjQ7XG5AQCAtNDQzNCw3ICYjNDM7NDU1OCw3IEBAIHZvaWQgcnR3ODlfYnRjX3NldF9wb2xpY3lfdjEoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MTYgcG9saWN5X3R5cGUpXG4gXHRpZiAoZG0tXHUwMDNlbGVha19hcCBcdTAwMjZcdTAwMjYgZG0tXHUwMDNldGRtYS5sZWFrX24gXHUwMDNlIDEpXG4gXHRcdF90ZG1hX3NldF9sZWsoYnRjLCAxKTtcbiBcbi1cdGlmIChkbS1cdTAwM2V0ZG1hX2luc3RhbnRfZXhjdXRlKSB7XG4mIzQzO1x0aWYgKGRtLVx1MDAzZXRkbWFfaW5zdGFudF9leGN1dGUgfHwgZG0tXHUwMDNlbHBzX2N0cmxfY2hhbmdlKSB7XG4gXHRcdGJ0Yy1cdTAwM2VkbS50ZG1hLm9wdGlvbl9jdHJsIHw9IEJJVCgwKTtcbiBcdFx0YnRjLVx1MDAzZXVwZGF0ZV9wb2xpY3lfZm9yY2UgPSB0cnVlO1xuIFx0fVxuQEAgLTQ0NzksNyAmIzQzOzQ2MDMsNyBAQCBzdGF0aWMgdm9pZCBfc2V0X2FudF92MChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgZm9yY2VfZXhlYyxcbiBcdHN0cnVjdCBydHc4OV9idGNfZG0gKmRtID0gXHUwMDI2YnRjLVx1MDAzZWRtO1xuIFx0c3RydWN0IHJ0dzg5X2J0Y19jeCAqY3ggPSBcdTAwMjZidGMtXHUwMDNlY3g7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX2luZm8gKndsID0gXHUwMDI2YnRjLVx1MDAzZWN4LndsO1xuLVx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFx1MDAyNmN4LVx1MDAzZWJ0O1xuJiM0MztcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcdTAwMjZjeC1cdTAwM2VidDA7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX2RiY2NfaW5mbyAqd2xfZGluZm8gPSBcdTAwMjZ3bC1cdTAwM2VkYmNjX2luZm87XG4gXHR1OCBnbnRfd2xfY3RybCwgZ250X2J0X2N0cmwsIHBsdF9jdHJsLCBpLCBiMmcgPSAwO1xuIFx0Ym9vbCBkYmNjX2NoZyA9IGZhbHNlO1xuQEAgLTQ2MDcsNyAmIzQzOzQ3MzEsNyBAQCBzdGF0aWMgdm9pZCBfc2V0X2FudF92MShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgZm9yY2VfZXhlYyxcbiB7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcdTAwMjZydHdkZXYtXHUwMDNlYnRjO1xuIFx0c3RydWN0IHJ0dzg5X2J0Y193bF9pbmZvICp3bCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC53bDtcbi1cdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcdTAwMjZidGMtXHUwMDNlY3guYnQ7XG4mIzQzO1x0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC5idDA7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX3JvbGVfaW5mb192OCAqd2xfcmluZm8gPSBcdTAwMjZ3bC1cdTAwM2Vyb2xlX2luZm9fdjg7XG4gXHR1MzIgYW50X3BhdGhfdHlwZSA9IHJ0dzg5X2dldF9hbnRwYXRoX3R5cGUocGh5X21hcCwgdHlwZSk7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX2RiY2NfaW5mbyAqd2xfZGluZm8gPSBcdTAwMjZ3bC1cdTAwM2VkYmNjX2luZm87XG5AQCAtNDc0Niw3ICYjNDM7NDg3MCw3IEBAIHN0YXRpYyB2b2lkIF9hY3Rpb25fd2xfb2ZmKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggbW9kZSlcbiBcdGlmIChtb2RlID09IEJUQ19XTElOS181Rykge1xuIFx0XHRfc2V0X3BvbGljeShydHdkZXYsIEJUQ19DWFBfT0ZGX0VRMCwgQlRDX0FDVF9XTF9PRkYpO1xuIFx0fSBlbHNlIGlmICh3bC1cdTAwM2VzdGF0dXMubWFwLmxwcyA9PSBCVENfTFBTX1JGX09OKSB7XG4tXHRcdGlmIChidGMtXHUwMDNlY3guYnQubGlua19pbmZvLmEyZHBfZGVzYy5hY3RpdmUpXG4mIzQzO1x0XHRpZiAoYnRjLVx1MDAzZWN4LmJ0MC5saW5rX2luZm8uYTJkcF9kZXNjLmFjdGl2ZSlcbiBcdFx0XHRfc2V0X3BvbGljeShydHdkZXYsIEJUQ19DWFBfT0ZGX0JULCBCVENfQUNUX1dMX09GRik7XG4gXHRcdGVsc2VcbiBcdFx0XHRfc2V0X3BvbGljeShydHdkZXYsIEJUQ19DWFBfT0ZGX0JXQjEsIEJUQ19BQ1RfV0xfT0ZGKTtcbkBAIC00Nzg2LDcgJiM0Mzs0OTEwLDcgQEAgc3RhdGljIHZvaWQgX2FjdGlvbl9idF9vZmYoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuIHN0YXRpYyB2b2lkIF9hY3Rpb25fYnRfaWRsZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4ge1xuIFx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXHUwMDI2cnR3ZGV2LVx1MDAzZWJ0Yztcbi1cdHN0cnVjdCBydHc4OV9idGNfYnRfbGlua19pbmZvICpiID0gXHUwMDI2YnRjLVx1MDAzZWN4LmJ0LmxpbmtfaW5mbztcbiYjNDM7XHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2xpbmtfaW5mbyAqYiA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC5idDAubGlua19pbmZvO1xuIFx0c3RydWN0IHJ0dzg5X2J0Y193bF9pbmZvICp3bCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC53bDtcbiBcbiBcdF9zZXRfYW50KHJ0d2RldiwgTk1fRVhFQywgQlRDX1BIWV9BTEwsIEJUQ19BTlRfVzJHKTtcbkBAIC00ODM0LDcgJiM0Mzs0OTU4LDcgQEAgc3RhdGljIHZvaWQgX2FjdGlvbl9idF9oZnAoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuIFx0XHRpZiAoYnRjLVx1MDAzZWN4LndsLnN0YXR1cy5tYXAuXzR3YXkpIHtcbiBcdFx0XHRfc2V0X3BvbGljeShydHdkZXYsIEJUQ19DWFBfT0ZGX1dMLCBCVENfQUNUX0JUX0hGUCk7XG4gXHRcdH0gZWxzZSBpZiAod2wtXHUwMDNlc3RhdHVzLm1hcC50cmFmZmljX2RpciBcdTAwMjYgQklUKFJUVzg5X1RGQ19VTCkpIHtcbi1cdFx0XHRidGMtXHUwMDNlY3guYnQuc2Nhbl9yeF9sb3dfcHJpID0gdHJ1ZTtcbiYjNDM7XHRcdFx0YnRjLVx1MDAzZWN4LmJ0MC5zY2FuX3J4X2xvd19wcmkgPSB0cnVlO1xuIFx0XHRcdF9zZXRfcG9saWN5KHJ0d2RldiwgQlRDX0NYUF9PRkZfQldCMiwgQlRDX0FDVF9CVF9IRlApO1xuIFx0XHR9IGVsc2Uge1xuIFx0XHRcdF9zZXRfcG9saWN5KHJ0d2RldiwgQlRDX0NYUF9PRkZfQldCMSwgQlRDX0FDVF9CVF9IRlApO1xuQEAgLTQ4NTQsNyAmIzQzOzQ5NzgsNyBAQCBzdGF0aWMgdm9pZCBfYWN0aW9uX2J0X2hpZChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4gXHRjb25zdCBzdHJ1Y3QgcnR3ODlfY2hpcF9pbmZvICpjaGlwID0gcnR3ZGV2LVx1MDAzZWNoaXA7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcdTAwMjZydHdkZXYtXHUwMDNlYnRjO1xuIFx0c3RydWN0IHJ0dzg5X2J0Y193bF9pbmZvICp3bCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC53bDtcbi1cdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcdTAwMjZidGMtXHUwMDNlY3guYnQ7XG4mIzQzO1x0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC5idDA7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2hpZF9kZXNjICpoaWQgPSBcdTAwMjZidC1cdTAwM2VsaW5rX2luZm8uaGlkX2Rlc2M7XG4gXHR1MTYgcG9saWN5X3R5cGUgPSBCVENfQ1hQX09GRl9CVDtcbiBcbkBAIC00ODY0LDcgJiM0Mzs0OTg4LDcgQEAgc3RhdGljIHZvaWQgX2FjdGlvbl9idF9oaWQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuIFx0XHRpZiAod2wtXHUwMDNlc3RhdHVzLm1hcC5fNHdheSkge1xuIFx0XHRcdHBvbGljeV90eXBlID0gQlRDX0NYUF9PRkZfV0w7XG4gXHRcdH0gZWxzZSBpZiAod2wtXHUwMDNlc3RhdHVzLm1hcC50cmFmZmljX2RpciBcdTAwMjYgQklUKFJUVzg5X1RGQ19VTCkpIHtcbi1cdFx0XHRidGMtXHUwMDNlY3guYnQuc2Nhbl9yeF9sb3dfcHJpID0gdHJ1ZTtcbiYjNDM7XHRcdFx0YnRjLVx1MDAzZWN4LmJ0MC5zY2FuX3J4X2xvd19wcmkgPSB0cnVlO1xuIFx0XHRcdGlmIChoaWQtXHUwMDNldHlwZSBcdTAwMjYgQlRDX0hJRF9CTEUpXG4gXHRcdFx0XHRwb2xpY3lfdHlwZSA9IEJUQ19DWFBfT0ZGX0JXQjA7XG4gXHRcdFx0ZWxzZVxuQEAgLTQ5NTYsNyAmIzQzOzUwODAsNyBAQCBzdGF0aWMgdm9pZCBfYWN0aW9uX2J0X2EyZHBzaW5rKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbiBzdGF0aWMgdm9pZCBfYWN0aW9uX2J0X3BhbihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4ge1xuIFx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXHUwMDI2cnR3ZGV2LVx1MDAzZWJ0Yztcbi1cdHN0cnVjdCBydHc4OV9idGNfYnRfbGlua19pbmZvICpidF9saW5mbyA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC5idC5saW5rX2luZm87XG4mIzQzO1x0c3RydWN0IHJ0dzg5X2J0Y19idF9saW5rX2luZm8gKmJ0X2xpbmZvID0gXHUwMDI2YnRjLVx1MDAzZWN4LmJ0MC5saW5rX2luZm87XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2EyZHBfZGVzYyBhMmRwID0gYnRfbGluZm8tXHUwMDNlYTJkcF9kZXNjO1xuIFx0c3RydWN0IHJ0dzg5X2J0Y19idF9wYW5fZGVzYyBwYW4gPSBidF9saW5mby1cdTAwM2VwYW5fZGVzYztcbiBcbkBAIC01MTY4LDcgJiM0Mzs1MjkyLDcgQEAgc3RhdGljIHZvaWQgX3NldF9idGdfY3RybChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX3JvbGVfaW5mbyAqd2xfcmluZm9fdjAgPSBcdTAwMjZ3bC1cdTAwM2Vyb2xlX2luZm87XG4gXHRjb25zdCBzdHJ1Y3QgcnR3ODlfY2hpcF9pbmZvICpjaGlwID0gcnR3ZGV2LVx1MDAzZWNoaXA7XG4gXHRjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3ZlciAqdmVyID0gYnRjLVx1MDAzZXZlcjtcbi1cdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcdTAwMjZidGMtXHUwMDNlY3guYnQ7XG4mIzQzO1x0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC5idDA7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX2RtICpkbSA9IFx1MDAyNmJ0Yy1cdTAwM2VkbTtcbiBcdHN0cnVjdCBfd2xfcmluZm9fbm93IHdsX3JpbmZvO1xuIFx0dTMyIGlzX2J0ZyA9IEJUQ19CVEdDVFJMX0RJU0FCTEU7XG5AQCAtNTI0NSwxMyAmIzQzOzUzNjksMTMgQEAgc3RhdGljIHZvaWQgX3NldF93bF9wcmVhZ2NfY3RybChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4ge1xuIFx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXHUwMDI2cnR3ZGV2LVx1MDAzZWJ0YztcbiBcdHN0cnVjdCBydHc4OV9idGNfZmJ0Y19vdXRzcmNfc2V0X2luZm8gKm9faW5mbyA9IFx1MDAyNmJ0Yy1cdTAwM2VkbS5vc3RfaW5mbztcbi1cdHN0cnVjdCBydHc4OV9idGNfYnRfbGlua19pbmZvICpidF9saW5mbyA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC5idC5saW5rX2luZm87XG4mIzQzO1x0c3RydWN0IHJ0dzg5X2J0Y19idF9saW5rX2luZm8gKmJ0X2xpbmZvID0gXHUwMDI2YnRjLVx1MDAzZWN4LmJ0MC5saW5rX2luZm87XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX2luZm8gKndsID0gXHUwMDI2YnRjLVx1MDAzZWN4LndsO1xuIFx0c3RydWN0IHJ0dzg5X2J0Y193bF9yb2xlX2luZm9fdjIgKnJpbmZvX3YyID0gXHUwMDI2d2wtXHUwMDNlcm9sZV9pbmZvX3YyO1xuIFx0c3RydWN0IHJ0dzg5X2J0Y193bF9yb2xlX2luZm9fdjcgKnJpbmZvX3Y3ID0gXHUwMDI2d2wtXHUwMDNlcm9sZV9pbmZvX3Y3O1xuIFx0c3RydWN0IHJ0dzg5X2J0Y193bF9yb2xlX2luZm9fdjggKnJpbmZvX3Y4ID0gXHUwMDI2d2wtXHUwMDNlcm9sZV9pbmZvX3Y4O1xuIFx0Y29uc3Qgc3RydWN0IHJ0dzg5X2NoaXBfaW5mbyAqY2hpcCA9IHJ0d2Rldi1cdTAwM2VjaGlwO1xuLVx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC5idDtcbiYjNDM7XHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXHUwMDI2YnRjLVx1MDAzZWN4LmJ0MDtcbiBcdHN0cnVjdCBydHc4OV9idGNfZG0gKmRtID0gXHUwMDI2YnRjLVx1MDAzZWRtO1xuIFx0dTggaXNfcHJlYWdjLCB2YWwsIGxpbmtfbW9kZSwgZGJjY18yZ19waHk7XG4gXHR1OCByb2xlX3ZlciA9IHJ0d2Rldi1cdTAwM2VidGMudmVyLVx1MDAzZWZ3bHJvbGU7XG5AQCAtNTI4MSw3ICYjNDM7NTQwNSw3IEBAIHN0YXRpYyB2b2lkIF9zZXRfd2xfcHJlYWdjX2N0cmwoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuIFx0fSBlbHNlIGlmIChsaW5rX21vZGUgPT0gQlRDX1dMSU5LXzVHKSB7XG4gXHRcdGlzX3ByZWFnYyA9IEJUQ19QUkVBR0NfRElTQUJMRTtcbiBcdH0gZWxzZSBpZiAobGlua19tb2RlID09IEJUQ19XTElOS19OT0xJTksgfHxcbi1cdFx0IGJ0Yy1cdTAwM2VjeC5idC5saW5rX2luZm8ucHJvZmlsZV9jbnQubm93ID09IDApIHtcbiYjNDM7XHRcdCBidGMtXHUwMDNlY3guYnQwLmxpbmtfaW5mby5wcm9maWxlX2NudC5ub3cgPT0gMCkge1xuIFx0XHRpc19wcmVhZ2MgPSBCVENfUFJFQUdDX0RJU0FCTEU7XG4gXHR9IGVsc2UgaWYgKGRtLVx1MDAzZXRkbWFfbm93LnR5cGUgIT0gQ1hURE1BX09GRiBcdTAwMjZcdTAwMjZcbiBcdFx0ICFidF9saW5mby1cdTAwM2VoZnBfZGVzYy5leGlzdCBcdTAwMjZcdTAwMjZcbkBAIC01NDMxLDcgJiM0Mzs1NTU1LDcgQEAgc3RhdGljIHZvaWQgX3NldF93bF90eF9saW1pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX2N4ICpjeCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeDtcbiBcdHN0cnVjdCBydHc4OV9idGNfZG0gKmRtID0gXHUwMDI2YnRjLVx1MDAzZWRtO1xuIFx0c3RydWN0IHJ0dzg5X2J0Y193bF9pbmZvICp3bCA9IFx1MDAyNmN4LVx1MDAzZXdsO1xuLVx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFx1MDAyNmN4LVx1MDAzZWJ0O1xuJiM0MztcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcdTAwMjZjeC1cdTAwM2VidDA7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2xpbmtfaW5mbyAqYiA9IFx1MDAyNmJ0LVx1MDAzZWxpbmtfaW5mbztcbiBcdHN0cnVjdCBydHc4OV9idGNfYnRfaGZwX2Rlc2MgKmhmcCA9IFx1MDAyNmItXHUwMDNlaGZwX2Rlc2M7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2hpZF9kZXNjICpoaWQgPSBcdTAwMjZiLVx1MDAzZWhpZF9kZXNjO1xuQEAgLTU1MTgsNyAmIzQzOzU2NDIsNyBAQCBzdGF0aWMgdm9pZCBfc2V0X2J0X3J4X2FnYyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX3JvbGVfaW5mb192MiAqd2xfcmluZm9fdjIgPSBcdTAwMjZ3bC1cdTAwM2Vyb2xlX2luZm9fdjI7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX3JvbGVfaW5mb192NyAqd2xfcmluZm9fdjcgPSBcdTAwMjZ3bC1cdTAwM2Vyb2xlX2luZm9fdjc7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX3JvbGVfaW5mb192OCAqd2xfcmluZm9fdjggPSBcdTAwMjZ3bC1cdTAwM2Vyb2xlX2luZm9fdjg7XG4tXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXHUwMDI2YnRjLVx1MDAzZWN4LmJ0O1xuJiM0MztcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcdTAwMjZidGMtXHUwMDNlY3guYnQwO1xuIFx0Ym9vbCBidF9oaV9sbmFfcnggPSBmYWxzZTtcbiBcdHU4IG1vZGU7XG4gXG5AQCAtNTU0Nyw3ICYjNDM7NTY3MSw3IEBAIHN0YXRpYyB2b2lkIF9zZXRfYnRfcnhfYWdjKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbiBzdGF0aWMgdm9pZCBfc2V0X2J0X3J4X3NjYW5fcHJpKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbiB7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcdTAwMjZydHdkZXYtXHUwMDNlYnRjO1xuLVx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC5idDtcbiYjNDM7XHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXHUwMDI2YnRjLVx1MDAzZWN4LmJ0MDtcbiBcbiBcdF93cml0ZV9zY2JkKHJ0d2RldiwgQlRDX1dTQ0JfUlhTQ0FOX1BSSSwgKGJvb2wpKCEhYnQtXHUwMDNlc2Nhbl9yeF9sb3dfcHJpKSk7XG4gfVxuQEAgLTU1ODYsNyAmIzQzOzU3MTAsNyBAQCBzdGF0aWMgdm9pZCBfYWN0aW9uX2NvbW1vbihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX2luZm8gKndsID0gXHUwMDI2YnRjLVx1MDAzZWN4LndsO1xuIFx0c3RydWN0IHJ0dzg5X2J0Y193bF9yb2xlX2luZm9fdjggKnJpbmZvX3Y4ID0gXHUwMDI2d2wtXHUwMDNlcm9sZV9pbmZvX3Y4O1xuIFx0c3RydWN0IHJ0dzg5X2J0Y193bF9zbWFwICp3bF9zbWFwID0gXHUwMDI2d2wtXHUwMDNlc3RhdHVzLm1hcDtcbi1cdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcdTAwMjZidGMtXHUwMDNlY3guYnQ7XG4mIzQzO1x0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC5idDA7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX2RtICpkbSA9IFx1MDAyNmJ0Yy1cdTAwM2VkbTtcbiBcdHUzMiBidF9yb21fY29kZV9pZCwgYnRfZndfdmVyO1xuIFxuQEAgLTU2MjYsNyAmIzQzOzU3NTAsNyBAQCBzdGF0aWMgdm9pZCBfYWN0aW9uX2NvbW1vbihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4gXHRcdHJ0dzg5X2RlYnVnKHJ0d2RldiwgUlRXODlfREJHX0JUQywgXCYjMzQ7W0JUQ10sIHdyaXRlIHNjYmQ6IDB4JTA4eFxcblwmIzM0OyxcbiBcdFx0XHQgICAgd2wtXHUwMDNlc2NiZCk7XG4gXHRcdHdsLVx1MDAzZXNjYmRfY2hhbmdlID0gZmFsc2U7XG4tXHRcdGJ0Yy1cdTAwM2VjeC5jbnRfd2xbQlRDX1dDTlRfU0NCRFVQREFURV0mIzQzOyYjNDM7O1xuJiM0MztcdFx0d2wtXHUwMDNld2NudFtCVENfV0NOVF9TQ0JEVVBEQVRFXSYjNDM7JiM0Mzs7XG4gXHR9XG4gXG4gXHRpZiAoYnRjLVx1MDAzZXZlci1cdTAwM2VmY3hvc2kpIHtcbkBAIC01NjM4LDE0ICYjNDM7NTc2MiwxNSBAQCBzdGF0aWMgdm9pZCBfYWN0aW9uX2NvbW1vbihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4gXHRcdFx0X2Z3X3NldF9kcnZfaW5mbyhydHdkZXYsIENYRFJWSU5GT19PU0kpO1xuIFx0XHR9XG4gXHR9XG4tXHRidGMtXHUwMDNlZG0udGRtYV9pbnN0YW50X2V4Y3V0ZSA9IDA7XG4mIzQzO1x0ZG0tXHUwMDNldGRtYV9pbnN0YW50X2V4Y3V0ZSA9IDA7XG4mIzQzO1x0ZG0tXHUwMDNlbHBzX2N0cmxfY2hhbmdlID0gZmFsc2U7XG4gXHR3bC1cdTAwM2VwdGFfcmVnX21hY19jaGcgPSBmYWxzZTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgX2FjdGlvbl9ieV9idChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4ge1xuIFx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXHUwMDI2cnR3ZGV2LVx1MDAzZWJ0Yztcbi1cdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcdTAwMjZidGMtXHUwMDNlY3guYnQ7XG4mIzQzO1x0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC5idDA7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2xpbmtfaW5mbyAqYnRfbGluZm8gPSBcdTAwMjZidC1cdTAwM2VsaW5rX2luZm87XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2hpZF9kZXNjIGhpZCA9IGJ0X2xpbmZvLVx1MDAzZWhpZF9kZXNjO1xuIFx0c3RydWN0IHJ0dzg5X2J0Y19idF9hMmRwX2Rlc2MgYTJkcCA9IGJ0X2xpbmZvLVx1MDAzZWEyZHBfZGVzYztcbkBAIC01NzQyLDcgJiM0Mzs1ODY3LDcgQEAgc3RhdGljIHZvaWQgX2FjdGlvbl93bF8yNWdfbWNjKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbiBcdFx0XHRwb2xpY3lfdHlwZSA9IEJUQ19DWFBfT0ZGRV9XTDtcbiBcdFx0ZWxzZSBpZiAoYnRjLVx1MDAzZWN4LndsLnN0YXR1cy52YWwgXHUwMDI2IGJ0Y19zY2FubmluZ19tYXAudmFsKVxuIFx0XHRcdHBvbGljeV90eXBlID0gQlRDX0NYUF9PRkZFXzJHQldNSVhCO1xuLVx0XHRlbHNlIGlmIChidGMtXHUwMDNlY3guYnQubGlua19pbmZvLnN0YXR1cy5tYXAuY29ubmVjdCA9PSAwKVxuJiM0MztcdFx0ZWxzZSBpZiAoYnRjLVx1MDAzZWN4LmJ0MC5saW5rX2luZm8uc3RhdHVzLm1hcC5jb25uZWN0ID09IDApXG4gXHRcdFx0cG9saWN5X3R5cGUgPSBCVENfQ1hQX09GRkVfMkdJU09CO1xuIFx0XHRlbHNlXG4gXHRcdFx0cG9saWN5X3R5cGUgPSBCVENfQ1hQX09GRkVfMkdCV0lTT0I7XG5AQCAtNTc4Niw3ICYjNDM7NTkxMSw3IEBAIHN0YXRpYyB2b2lkIF9hY3Rpb25fd2xfMmdfbWNjKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbiBcdF9zZXRfYW50KHJ0d2RldiwgTk1fRVhFQywgQlRDX1BIWV9BTEwsIEJUQ19BTlRfVzJHKTtcbiBcbiBcdGlmIChidGMtXHUwMDNlYW50X3R5cGUgPT0gQlRDX0FOVF9TSEFSRUQpIHsgLyogc2hhcmVkLWFudGVubmEgKi9cbi1cdFx0aWYgKGJ0Yy1cdTAwM2VjeC5idC5saW5rX2luZm8ucHJvZmlsZV9jbnQubm93ID09IDApXG4mIzQzO1x0XHRpZiAoYnRjLVx1MDAzZWN4LmJ0MC5saW5rX2luZm8ucHJvZmlsZV9jbnQubm93ID09IDApXG4gXHRcdFx0X3NldF9wb2xpY3kocnR3ZGV2LCBCVENfQ1hQX09GRkVfREVGMixcbiBcdFx0XHRcdCAgICBCVENfQUNUX1dMXzJHX01DQyk7XG4gXHRcdGVsc2VcbkBAIC01ODA0LDcgJiM0Mzs1OTI5LDcgQEAgc3RhdGljIHZvaWQgX2FjdGlvbl93bF8yZ19zY2Moc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuIFx0X3NldF9hbnQocnR3ZGV2LCBOTV9FWEVDLCBCVENfUEhZX0FMTCwgQlRDX0FOVF9XMkcpO1xuIFxuIFx0aWYgKGJ0Yy1cdTAwM2VhbnRfdHlwZSA9PSBCVENfQU5UX1NIQVJFRCkgeyAvKiBzaGFyZWQtYW50ZW5uYSAqL1xuLVx0XHRpZiAoYnRjLVx1MDAzZWN4LmJ0LmxpbmtfaW5mby5wcm9maWxlX2NudC5ub3cgPT0gMClcbiYjNDM7XHRcdGlmIChidGMtXHUwMDNlY3guYnQwLmxpbmtfaW5mby5wcm9maWxlX2NudC5ub3cgPT0gMClcbiBcdFx0XHRfc2V0X3BvbGljeShydHdkZXYsXG4gXHRcdFx0XHQgICAgQlRDX0NYUF9PRkZFX0RFRjIsIEJUQ19BQ1RfV0xfMkdfU0NDKTtcbiBcdFx0ZWxzZVxuQEAgLTU4MTksNyAmIzQzOzU5NDQsNyBAQCBzdGF0aWMgdm9pZCBfYWN0aW9uX3dsXzJnX3NjY192MShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4ge1xuIFx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXHUwMDI2cnR3ZGV2LVx1MDAzZWJ0YztcbiBcdHN0cnVjdCBydHc4OV9idGNfd2xfaW5mbyAqd2wgPSBcdTAwMjZidGMtXHUwMDNlY3gud2w7XG4tXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXHUwMDI2YnRjLVx1MDAzZWN4LmJ0O1xuJiM0MztcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcdTAwMjZidGMtXHUwMDNlY3guYnQwO1xuIFx0c3RydWN0IHJ0dzg5X2J0Y19kbSAqZG0gPSBcdTAwMjZidGMtXHUwMDNlZG07XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX3JvbGVfaW5mb192MSAqd2xfcmluZm8gPSBcdTAwMjZ3bC1cdTAwM2Vyb2xlX2luZm9fdjE7XG4gXHR1MTYgcG9saWN5X3R5cGUgPSBCVENfQ1hQX09GRl9CVDtcbkBAIC01ODU2LDcgJiM0Mzs1OTgxLDcgQEAgc3RhdGljIHZvaWQgX2FjdGlvbl93bF8yZ19zY2NfdjEoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuIFx0XHRcdFx0ZG0tXHUwMDNld2xfc2NjLmVidF9udWxsID0gMDtcbiBcdFx0XHRcdHBvbGljeV90eXBlID0gQlRDX0NYUF9PRkZFXzJHSVNPQjtcbiBcdFx0XHR9IGVsc2UgaWYgKGJ0LVx1MDAzZWxpbmtfaW5mby5hMmRwX2Rlc2MuZXhpc3QgXHUwMDI2XHUwMDI2XG4tXHRcdFx0XHQgICBkdXIgXHUwMDNjIGJ0Yy1cdTAwM2VidF9yZXFfbGVuKSB7XG4mIzQzO1x0XHRcdFx0ICAgZHVyIFx1MDAzYyBidGMtXHUwMDNlYnRfcmVxX2xlbltSVFc4OV9QSFlfMF0pIHtcbiBcdFx0XHRcdGRtLVx1MDAzZXdsX3NjYy5lYnRfbnVsbCA9IDE7IC8qIHR4IG51bGwgYXQgRUJUICovXG4gXHRcdFx0XHRwb2xpY3lfdHlwZSA9IEJUQ19DWFBfT0ZGRV8yR0JXTUlYQjI7XG4gXHRcdFx0fSBlbHNlIGlmIChidC1cdTAwM2VsaW5rX2luZm8uYTJkcF9kZXNjLmV4aXN0IHx8XG5AQCAtNTg4MSw3ICYjNDM7NjAwNiw3IEBAIHN0YXRpYyB2b2lkIF9hY3Rpb25fd2xfMmdfc2NjX3YyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbiB7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcdTAwMjZydHdkZXYtXHUwMDNlYnRjO1xuIFx0c3RydWN0IHJ0dzg5X2J0Y193bF9pbmZvICp3bCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC53bDtcbi1cdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcdTAwMjZidGMtXHUwMDNlY3guYnQ7XG4mIzQzO1x0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC5idDA7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX2RtICpkbSA9IFx1MDAyNmJ0Yy1cdTAwM2VkbTtcbiBcdHN0cnVjdCBydHc4OV9idGNfd2xfcm9sZV9pbmZvX3YyICpyaW5mb192MiA9IFx1MDAyNndsLVx1MDAzZXJvbGVfaW5mb192MjtcbiBcdHN0cnVjdCBydHc4OV9idGNfd2xfcm9sZV9pbmZvX3Y3ICpyaW5mb192NyA9IFx1MDAyNndsLVx1MDAzZXJvbGVfaW5mb192NztcbkBAIC01OTI5LDcgJiM0Mzs2MDU0LDcgQEAgc3RhdGljIHZvaWQgX2FjdGlvbl93bF8yZ19zY2NfdjIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuIFx0XHRcdFx0ZG0tXHUwMDNld2xfc2NjLmVidF9udWxsID0gMDtcbiBcdFx0XHRcdHBvbGljeV90eXBlID0gQlRDX0NYUF9PRkZFXzJHSVNPQjtcbiBcdFx0XHR9IGVsc2UgaWYgKGJ0LVx1MDAzZWxpbmtfaW5mby5hMmRwX2Rlc2MuZXhpc3QgXHUwMDI2XHUwMDI2XG4tXHRcdFx0XHQgICBkdXIgXHUwMDNjIGJ0Yy1cdTAwM2VidF9yZXFfbGVuKSB7XG4mIzQzO1x0XHRcdFx0ICAgZHVyIFx1MDAzYyBidGMtXHUwMDNlYnRfcmVxX2xlbltSVFc4OV9QSFlfMF0pIHtcbiBcdFx0XHRcdGRtLVx1MDAzZXdsX3NjYy5lYnRfbnVsbCA9IDE7IC8qIHR4IG51bGwgYXQgRUJUICovXG4gXHRcdFx0XHRwb2xpY3lfdHlwZSA9IEJUQ19DWFBfT0ZGRV8yR0JXTUlYQjI7XG4gXHRcdFx0fSBlbHNlIGlmIChidC1cdTAwM2VsaW5rX2luZm8uYTJkcF9kZXNjLmV4aXN0IHx8XG5AQCAtNTk1NCw3ICYjNDM7NjA3OSw3IEBAIHN0YXRpYyB2b2lkIF9hY3Rpb25fd2xfMmdfc2NjX3Y4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbiB7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcdTAwMjZydHdkZXYtXHUwMDNlYnRjO1xuIFx0c3RydWN0IHJ0dzg5X2J0Y193bF9pbmZvICp3bCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC53bDtcbi1cdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcdTAwMjZidGMtXHUwMDNlY3guYnQ7XG4mIzQzO1x0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC5idDA7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX2RtICpkbSA9IFx1MDAyNmJ0Yy1cdTAwM2VkbTtcbiBcdHUxNiBwb2xpY3lfdHlwZSA9IEJUQ19DWFBfT0ZGX0JUO1xuIFxuQEAgLTU5ODIsNyAmIzQzOzYxMDcsNyBAQCBzdGF0aWMgdm9pZCBfYWN0aW9uX3dsXzJnX2FwKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbiBcdF9zZXRfYW50KHJ0d2RldiwgTk1fRVhFQywgQlRDX1BIWV9BTEwsIEJUQ19BTlRfVzJHKTtcbiBcbiBcdGlmIChidGMtXHUwMDNlYW50X3R5cGUgPT0gQlRDX0FOVF9TSEFSRUQpIHtcbi1cdFx0aWYgKGJ0Yy1cdTAwM2VjeC5idC5saW5rX2luZm8ucHJvZmlsZV9jbnQubm93ID09IDApXG4mIzQzO1x0XHRpZiAoYnRjLVx1MDAzZWN4LmJ0MC5saW5rX2luZm8ucHJvZmlsZV9jbnQubm93ID09IDApXG4gXHRcdFx0X3NldF9wb2xpY3kocnR3ZGV2LCBCVENfQ1hQX09GRkVfREVGMixcbiBcdFx0XHRcdCAgICBCVENfQUNUX1dMXzJHX0FQKTtcbiBcdFx0ZWxzZVxuQEAgLTU5OTksNyAmIzQzOzYxMjQsNyBAQCBzdGF0aWMgdm9pZCBfYWN0aW9uX3dsXzJnX2dvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbiBcdF9zZXRfYW50KHJ0d2RldiwgTk1fRVhFQywgQlRDX1BIWV9BTEwsIEJUQ19BTlRfVzJHKTtcbiBcbiBcdGlmIChidGMtXHUwMDNlYW50X3R5cGUgPT0gQlRDX0FOVF9TSEFSRUQpIHsgLyogc2hhcmVkLWFudGVubmEgKi9cbi1cdFx0aWYgKGJ0Yy1cdTAwM2VjeC5idC5saW5rX2luZm8ucHJvZmlsZV9jbnQubm93ID09IDApXG4mIzQzO1x0XHRpZiAoYnRjLVx1MDAzZWN4LmJ0MC5saW5rX2luZm8ucHJvZmlsZV9jbnQubm93ID09IDApXG4gXHRcdFx0X3NldF9wb2xpY3kocnR3ZGV2LFxuIFx0XHRcdFx0ICAgIEJUQ19DWFBfT0ZGRV9ERUYyLCBCVENfQUNUX1dMXzJHX0dPKTtcbiBcdFx0ZWxzZVxuQEAgLTYwMzAsNyAmIzQzOzYxNTUsNyBAQCBzdGF0aWMgdm9pZCBfYWN0aW9uX3dsXzJnX25hbihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4gXHRfc2V0X2FudChydHdkZXYsIE5NX0VYRUMsIEJUQ19QSFlfQUxMLCBCVENfQU5UX1cyRyk7XG4gXG4gXHRpZiAoYnRjLVx1MDAzZWFudF90eXBlID09IEJUQ19BTlRfU0hBUkVEKSB7IC8qIHNoYXJlZC1hbnRlbm5hICovXG4tXHRcdGlmIChidGMtXHUwMDNlY3guYnQubGlua19pbmZvLnByb2ZpbGVfY250Lm5vdyA9PSAwKVxuJiM0MztcdFx0aWYgKGJ0Yy1cdTAwM2VjeC5idDAubGlua19pbmZvLnByb2ZpbGVfY250Lm5vdyA9PSAwKVxuIFx0XHRcdF9zZXRfcG9saWN5KHJ0d2RldixcbiBcdFx0XHRcdCAgICBCVENfQ1hQX09GRkVfREVGMiwgQlRDX0FDVF9XTF8yR19OQU4pO1xuIFx0XHRlbHNlXG5AQCAtNjA1NCw3ICYjNDM7NjE3OSw3IEBAIHN0YXRpYyB1MzIgX3JlYWRfc2NiZChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4gXHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19CVEMsIFwmIzM0O1tCVENdLCByZWFkIHNjYmQ6IDB4JTA4eFxcblwmIzM0OyxcbiBcdFx0ICAgIHNjYmRfdmFsKTtcbiBcbi1cdGJ0Yy1cdTAwM2VjeC5jbnRfYnRbQlRDX0JDTlRfU0NCRFJFQURdJiM0MzsmIzQzOztcbiYjNDM7XHRidGMtXHUwMDNlY3guYnQwLmJjbnRbQlRDX0JDTlRfU0NCRFJFQURdJiM0MzsmIzQzOztcbiBcdHJldHVybiBzY2JkX3ZhbDtcbiB9XG4gXG5AQCAtNjg3Miw3ICYjNDM7Njk5Nyw3IEBAIHN0YXRpYyB2b2lkIF91cGRhdGVfd2xfaW5mb192NyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHJpZClcbiBcdGlmICh3bF9yaW5mby1cdTAwM2VkYmNjX2VuICE9IHJ0d2Rldi1cdTAwM2VkYmNjX2VuKSB7XG4gXHRcdHdsX3JpbmZvLVx1MDAzZWRiY2NfY2hnID0gMTtcbiBcdFx0d2xfcmluZm8tXHUwMDNlZGJjY19lbiA9IHJ0d2Rldi1cdTAwM2VkYmNjX2VuO1xuLVx0XHRidGMtXHUwMDNlY3guY250X3dsW0JUQ19XQ05UX0RCQ0NfQ0hHXSYjNDM7JiM0Mzs7XG4mIzQzO1x0XHR3bC1cdTAwM2V3Y250W0JUQ19XQ05UX0RCQ0NfQ0hHXSYjNDM7JiM0Mzs7XG4gXHR9XG4gXG4gXHRpZiAocnR3ZGV2LVx1MDAzZWRiY2NfZW4pIHtcbkBAIC03MzE2LDcgJiM0Mzs3NDQxLDcgQEAgc3RhdGljIHZvaWQgX3VwZGF0ZV93bF9pbmZvX3Y4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggcm9sZV9pZCwgdTggcmxpbmtfaWRcbiBcbiBcdGlmICh3bF9yaW5mby1cdTAwM2VkYmNjX2VuICE9IGRiY2NfZW5fb3JpKSB7XG4gXHRcdHdsLVx1MDAzZWRiY2NfY2hnID0gdHJ1ZTtcbi1cdFx0YnRjLVx1MDAzZWN4LmNudF93bFtCVENfV0NOVF9EQkNDX0NIR10mIzQzOyYjNDM7O1xuJiM0MztcdFx0d2wtXHUwMDNld2NudFtCVENfV0NOVF9EQkNDX0NIR10mIzQzOyYjNDM7O1xuIFx0fVxuIH1cbiBcbkBAIC03MzQ3LDcgJiM0Mzs3NDcyLDcgQEAgdm9pZCBydHc4OV9jb2V4X2J0X2RldmluZm9fd29yayhzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lwaHlfd29yayAqd29yaylcbiBcdFx0XHRcdFx0XHRjb2V4X2J0X2RldmluZm9fd29yay53b3JrKTtcbiBcdHN0cnVjdCBydHc4OV9idGMgKmJ0YyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2VidGM7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX2RtICpkbSA9IFx1MDAyNnJ0d2Rldi1cdTAwM2VidGMuZG07XG4tXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2EyZHBfZGVzYyAqYTJkcCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC5idC5saW5rX2luZm8uYTJkcF9kZXNjO1xuJiM0MztcdHN0cnVjdCBydHc4OV9idGNfYnRfYTJkcF9kZXNjICphMmRwID0gXHUwMDI2YnRjLVx1MDAzZWN4LmJ0MC5saW5rX2luZm8uYTJkcF9kZXNjO1xuIFxuIFx0bG9ja2RlcF9hc3NlcnRfd2lwaHkod2lwaHkpO1xuIFxuQEAgLTczNzMsNyAmIzQzOzc0OTgsNyBAQCB2b2lkIHJ0dzg5X2NvZXhfcmZrX2Noa193b3JrKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXBoeV93b3JrICp3b3JrKVxuIFx0aWYgKHdsLVx1MDAzZXJma19pbmZvLnN0YXRlICE9IEJUQ19XUkZLX1NUT1ApIHtcbiBcdFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQlRDLFxuIFx0XHRcdCAgICBcJiMzNDtbQlRDXSwgJXMoKTogUkZLIHRpbWVvdXRcXG5cJiMzNDssIF9fZnVuY19fKTtcbi1cdFx0Y3gtXHUwMDNlY250X3dsW0JUQ19XQ05UX1JGS19USU1FT1VUXSYjNDM7JiM0Mzs7XG4mIzQzO1x0XHR3bC1cdTAwM2V3Y250W0JUQ19XQ05UX1JGS19USU1FT1VUXSYjNDM7JiM0Mzs7XG4gXHRcdGRtLVx1MDAzZWVycm9yLm1hcC53bF9yZmtfdGltZW91dCA9IHRydWU7XG4gXHRcdHdsLVx1MDAzZXJma19pbmZvLnN0YXRlID0gQlRDX1dSRktfU1RPUDtcbiBcdFx0X3dyaXRlX3NjYmQocnR3ZGV2LCBCVENfV1NDQl9XTFJGSywgZmFsc2UpO1xuQEAgLTczODMsMTQgJiM0Mzs3NTA4LDE2IEBAIHZvaWQgcnR3ODlfY29leF9yZmtfY2hrX3dvcmsoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcGh5X3dvcmsgKndvcmspXG4gXG4gc3RhdGljIHZvaWQgX3VwZGF0ZV9idF9zY2JkKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgYm9vbCBvbmx5X3VwZGF0ZSlcbiB7XG4tXHRjb25zdCBzdHJ1Y3QgcnR3ODlfY2hpcF9pbmZvICpjaGlwID0gcnR3ZGV2LVx1MDAzZWNoaXA7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcdTAwMjZydHdkZXYtXHUwMDNlYnRjO1xuLVx0c3RydWN0IHJ0dzg5X2J0Y19jeCAqY3ggPSBcdTAwMjZidGMtXHUwMDNlY3g7XG4tXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXHUwMDI2YnRjLVx1MDAzZWN4LmJ0O1xuLVx0dTMyIHZhbDtcbi1cdGJvb2wgc3RhdHVzX2NoYW5nZSA9IGZhbHNlO1xuJiM0MztcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcdTAwMjZidGMtXHUwMDNlY3guYnQwO1xuJiM0MztcdGNvbnN0IHN0cnVjdCBydHc4OV9idGNfdmVyICp2ZXIgPSBidGMtXHUwMDNldmVyO1xuJiM0MztcdHN0cnVjdCBydHc4OV9idGNfd2xfaW5mbyAqd2wgPSBcdTAwMjZidGMtXHUwMDNlY3gud2w7XG4mIzQzO1x0c3RydWN0IHJ0dzg5X2J0Y19kbSAqZG0gPSBcdTAwMjZydHdkZXYtXHUwMDNlYnRjLmRtO1xuJiM0MztcdGJvb2wgYnRfbGlua19jaGFuZ2UgPSBmYWxzZSwgbHBzX2N0cmwgPSBmYWxzZTtcbiYjNDM7XHR1MzIgdmFsLCBhbnlfYnRfY29ubmVjdDtcbiYjNDM7XHR1OCBtb2RlO1xuIFxuLVx0aWYgKCFjaGlwLVx1MDAzZXNjYmQpXG4mIzQzO1x0aWYgKHJ0d2Rldi1cdTAwM2VjaGlwLVx1MDAzZXNjYmQpXG4gXHRcdHJldHVybjtcbiBcbiBcdHJ0dzg5X2RlYnVnKHJ0d2RldiwgUlRXODlfREJHX0JUQywgXCYjMzQ7W0JUQ10sICVzXFxuXCYjMzQ7LCBfX2Z1bmNfXyk7XG5AQCAtNzQwMywxOCAmIzQzOzc1MzAsMzEgQEAgc3RhdGljIHZvaWQgX3VwZGF0ZV9idF9zY2JkKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgYm9vbCBvbmx5X3VwZGF0ZSlcbiBcdFx0cmV0dXJuO1xuIFx0fVxuIFxuJiM0MztcdGlmICh2ZXItXHUwMDNlZndscm9sZSA9PSAwKVxuJiM0MztcdFx0bW9kZSA9IHdsLVx1MDAzZXJvbGVfaW5mby5saW5rX21vZGU7XG4mIzQzO1x0ZWxzZSBpZiAodmVyLVx1MDAzZWZ3bHJvbGUgPT0gMSlcbiYjNDM7XHRcdG1vZGUgPSB3bC1cdTAwM2Vyb2xlX2luZm9fdjEubGlua19tb2RlO1xuJiM0MztcdGVsc2UgaWYgKHZlci1cdTAwM2Vmd2xyb2xlID09IDIpXG4mIzQzO1x0XHRtb2RlID0gd2wtXHUwMDNlcm9sZV9pbmZvX3YyLmxpbmtfbW9kZTtcbiYjNDM7XHRlbHNlIGlmICh2ZXItXHUwMDNlZndscm9sZSA9PSA3KVxuJiM0MztcdFx0bW9kZSA9IHdsLVx1MDAzZXJvbGVfaW5mb192Ny5saW5rX21vZGU7XG4mIzQzO1x0ZWxzZSBpZiAodmVyLVx1MDAzZWZ3bHJvbGUgPT0gOClcbiYjNDM7XHRcdG1vZGUgPSB3bC1cdTAwM2Vyb2xlX2luZm9fdjgubGlua19tb2RlO1xuJiM0MztcdGVsc2VcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4gXHRpZiAoISh2YWwgXHUwMDI2IEJUQ19CU0NCX09OKSlcbiBcdFx0YnQtXHUwMDNlZW5hYmxlLm5vdyA9IDA7XG4gXHRlbHNlXG4gXHRcdGJ0LVx1MDAzZWVuYWJsZS5ub3cgPSAxO1xuIFxuIFx0aWYgKGJ0LVx1MDAzZWVuYWJsZS5ub3cgIT0gYnQtXHUwMDNlZW5hYmxlLmxhc3QpXG4tXHRcdHN0YXR1c19jaGFuZ2UgPSB0cnVlO1xuJiM0MztcdFx0YnRfbGlua19jaGFuZ2UgPSB0cnVlO1xuIFxuIFx0LyogcmVzZXQgYnQgaW5mbyBpZiBidCByZS1lbmFibGUgKi9cbiBcdGlmIChidC1cdTAwM2VlbmFibGUubm93IFx1MDAyNlx1MDAyNiAhYnQtXHUwMDNlZW5hYmxlLmxhc3QpIHtcbiBcdFx0X3Jlc2V0X2J0Y192YXIocnR3ZGV2LCBCVENfUkVTRVRfQlRJTkZPKTtcbi1cdFx0Y3gtXHUwMDNlY250X2J0W0JUQ19CQ05UX1JFRU5BQkxFXSYjNDM7JiM0Mzs7XG4mIzQzO1x0XHRidC1cdTAwM2ViY250W0JUQ19CQ05UX1JFRU5BQkxFXSYjNDM7JiM0Mzs7XG4gXHRcdGJ0LVx1MDAzZWVuYWJsZS5ub3cgPSAxO1xuIFx0fVxuIFxuQEAgLTc0MjMsMzUgJiM0Mzs3NTYzLDU4IEBAIHN0YXRpYyB2b2lkIF91cGRhdGVfYnRfc2NiZChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgb25seV91cGRhdGUpXG4gXHRidC1cdTAwM2VtYnhfYXZsID0gISEodmFsIFx1MDAyNiBCVENfQlNDQl9BQ1QpO1xuIFxuIFx0aWYgKGJ0LVx1MDAzZXdocWxfdGVzdCAhPSAhISh2YWwgXHUwMDI2IEJUQ19CU0NCX1dIUUwpKVxuLVx0XHRzdGF0dXNfY2hhbmdlID0gdHJ1ZTtcbiYjNDM7XHRcdGJ0X2xpbmtfY2hhbmdlID0gdHJ1ZTtcbiBcbiBcdGJ0LVx1MDAzZXdocWxfdGVzdCA9ICEhKHZhbCBcdTAwMjYgQlRDX0JTQ0JfV0hRTCk7XG4gXHRidC1cdTAwM2VidGdfdHlwZSA9IHZhbCBcdTAwMjYgQlRDX0JTQ0JfQlRfUzEgPyBCVENfQlRfQlRHIDogQlRDX0JUX0FMT05FO1xuIFx0YnQtXHUwMDNlbGlua19pbmZvLmEyZHBfZGVzYy5leGlzdCA9ICEhKHZhbCBcdTAwMjYgQlRDX0JTQ0JfQTJEUF9BQ1QpO1xuJiM0MztcdGJ0LVx1MDAzZWxpbmtfaW5mby5wYW5fZGVzYy5leGlzdCA9ICEhKHZhbCBcdTAwMjYgQlRDX0JTQ0JfUEFOX0FDVCk7XG4mIzQzO1x0YnQtXHUwMDNlbGlua19pbmZvLmhmcF9kZXNjLmV4aXN0ID0gISEodmFsIFx1MDAyNiBCVENfQlNDQl9IRlBfQUNUKTtcbiBcbiBcdGJ0LVx1MDAzZWxuYV9jb25zdHJhaW4gPSAhISh2YWwgXHUwMDI2IEJUQ19CU0NCX0JUX0xOQUIwKSAmIzQzO1xuIFx0XHRcdCAgICAhISh2YWwgXHUwMDI2IEJUQ19CU0NCX0JUX0xOQUIxKSAqIDIgJiM0MzsgNDtcbiBcbiBcdC8qIGlmIHJmayBydW4gMS1cdTAwM2UwICovXG4gXHRpZiAoYnQtXHUwMDNlcmZrX2luZm8ubWFwLnJ1biBcdTAwMjZcdTAwMjYgISh2YWwgXHUwMDI2IEJUQ19CU0NCX1JGS19SVU4pKVxuLVx0XHRzdGF0dXNfY2hhbmdlID0gdHJ1ZTtcbiYjNDM7XHRcdGJ0X2xpbmtfY2hhbmdlID0gdHJ1ZTtcbiBcbiBcdGJ0LVx1MDAzZXJma19pbmZvLm1hcC5ydW4gID0gISEodmFsIFx1MDAyNiBCVENfQlNDQl9SRktfUlVOKTtcbiBcdGJ0LVx1MDAzZXJma19pbmZvLm1hcC5yZXEgPSAhISh2YWwgXHUwMDI2IEJUQ19CU0NCX1JGS19SRVEpO1xuIFx0YnQtXHUwMDNlaGlfbG5hX3J4ID0gISEodmFsIFx1MDAyNiBCVENfQlNDQl9CVF9ISUxOQSk7XG4tXHRidC1cdTAwM2VsaW5rX2luZm8uc3RhdHVzLm1hcC5jb25uZWN0ID0gISEodmFsIFx1MDAyNiBCVENfQlNDQl9CVF9DT05ORUNUKTtcbi1cdGlmIChidC1cdTAwM2VydW5fcGF0Y2hfY29kZSAhPSAhISh2YWwgXHUwMDI2IEJUQ19CU0NCX1BBVENIX0NPREUpKVxuLVx0XHRzdGF0dXNfY2hhbmdlID0gdHJ1ZTtcbiYjNDM7XHRhbnlfYnRfY29ubmVjdCA9ICEhKHZhbCBcdTAwMjYgQlRDX0JTQ0JfQlRfQ09OTkVDVCk7XG4mIzQzO1xuJiM0MztcdC8qIGlmIGNvbm5lY3QgY2hhbmdlICovXG4mIzQzO1x0aWYgKGJ0LVx1MDAzZWxpbmtfaW5mby5zdGF0dXMubWFwLmNvbm5lY3QgIT0gYW55X2J0X2Nvbm5lY3QpXG4mIzQzO1x0XHRidF9saW5rX2NoYW5nZSA9IHRydWU7XG4mIzQzO1xuJiM0MztcdC8qIGlmIHNwZWNpZmljIHByb2ZpbGUgZXhpc3QgKi9cbiYjNDM7XHRpZiAoKChidC1cdTAwM2VsaW5rX2luZm8uYTJkcF9kZXNjLmV4aXN0IHx8IGJ0LVx1MDAzZWxpbmtfaW5mby5wYW5fZGVzYy5leGlzdCB8fFxuJiM0MztcdCAgICAgIGJ0LVx1MDAzZWxpbmtfaW5mby5oZnBfZGVzYy5leGlzdCkgXHUwMDI2XHUwMDI2IG1vZGUgPT0gQlRDX1dMSU5LXzJHX1NUQSkgfHxcbiYjNDM7XHQgICAgYnQtXHUwMDNld2hxbF90ZXN0KVxuJiM0MztcdFx0bHBzX2N0cmwgPSB0cnVlO1xuJiM0MztcbiYjNDM7XHRpZiAoZG0tXHUwMDNlbHBzX2N0cmxfc2NiZCAhPSBscHNfY3RybCkge1xuJiM0MztcdFx0ZG0tXHUwMDNlbHBzX2N0cmxfc2NiZCA9IGxwc19jdHJsO1xuJiM0MztcdFx0YnRfbGlua19jaGFuZ2UgPSB0cnVlO1xuJiM0MztcdFx0ZG0tXHUwMDNlbHBzX2N0cmxfY2hhbmdlID0gdHJ1ZTtcbiYjNDM7XHR9IGVsc2Uge1xuJiM0MztcdFx0ZG0tXHUwMDNlbHBzX2N0cmxfY2hhbmdlID0gZmFsc2U7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRidC1cdTAwM2VsaW5rX2luZm8uc3RhdHVzLm1hcC5jb25uZWN0ID0gYW55X2J0X2Nvbm5lY3Q7XG4gXHRidC1cdTAwM2VydW5fcGF0Y2hfY29kZSA9ICEhKHZhbCBcdTAwMjYgQlRDX0JTQ0JfUEFUQ0hfQ09ERSk7XG4gXG4tXHRpZiAoIW9ubHlfdXBkYXRlIFx1MDAyNlx1MDAyNiBzdGF0dXNfY2hhbmdlKVxuLVx0XHRfcnVuX2NvZXgocnR3ZGV2LCBCVENfUlNOX1VQREFURV9CVF9TQ0JEKTtcbiYjNDM7XHRpZiAoYnRfbGlua19jaGFuZ2UpIHtcbiYjNDM7XHRcdHJ0dzg5X2RlYnVnKHJ0d2RldiwgUlRXODlfREJHX0JUQyxcbiYjNDM7XHRcdFx0ICAgIFwmIzM0O1tCVENdLCAlczogYnQgc3RhdHVzIGNoYW5nZSEhXFxuXCYjMzQ7LCBfX2Z1bmNfXyk7XG4mIzQzO1x0XHQvKiBUT0RPOiBOZWVkIHRvIG5vdGlmeSBkcml2ZXIgdG8gdXBkYXRlIEVYVC1DVFJMLUJULVNMT1QgKi9cbiYjNDM7XHR9XG4gfVxuIFxuICNkZWZpbmUgQlRDX0JUSU5GT19QV1JfTEVOIDVcbiBzdGF0aWMgdm9pZCBfdXBkYXRlX2J0X3R4cHdyX2luZm8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCAqYnVmLCB1MzIgbGVuKVxuIHtcbi1cdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcdTAwMjZydHdkZXYtXHUwMDNlYnRjLmN4LmJ0O1xuJiM0MztcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcdTAwMjZydHdkZXYtXHUwMDNlYnRjLmN4LmJ0MDtcbiBcdHN0cnVjdCBydHc4OV9idGNfYnRfbGlua19pbmZvICpiID0gXHUwMDI2YnQtXHUwMDNlbGlua19pbmZvO1xuIFxuIFx0aWYgKGxlbiAhPSBCVENfQlRJTkZPX1BXUl9MRU4pXG5AQCAtNzQ3MSwxNyAmIzQzOzc2MzQsMTcgQEAgc3RhdGljIGJvb2wgX2Noa193bF9yZmtfcmVxdWVzdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4ge1xuIFx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXHUwMDI2cnR3ZGV2LVx1MDAzZWJ0YztcbiBcdHN0cnVjdCBydHc4OV9idGNfY3ggKmN4ID0gXHUwMDI2YnRjLVx1MDAzZWN4O1xuLVx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFx1MDAyNmN4LVx1MDAzZWJ0O1xuJiM0MztcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcdTAwMjZjeC1cdTAwM2VidDA7XG4gXG4gXHRfdXBkYXRlX2J0X3NjYmQocnR3ZGV2LCB0cnVlKTtcbiBcbi1cdGN4LVx1MDAzZWNudF93bFtCVENfV0NOVF9SRktfUkVRXSYjNDM7JiM0Mzs7XG4mIzQzO1x0Y3gtXHUwMDNld2wud2NudFtCVENfV0NOVF9SRktfUkVRXSYjNDM7JiM0Mzs7XG4gXG4gXHRpZiAoKGJ0LVx1MDAzZXJma19pbmZvLm1hcC5ydW4gfHwgYnQtXHUwMDNlcmZrX2luZm8ubWFwLnJlcSkgXHUwMDI2XHUwMDI2XG4gXHQgICAgIWJ0LVx1MDAzZXJma19pbmZvLm1hcC50aW1lb3V0KSB7XG4tXHRcdGN4LVx1MDAzZWNudF93bFtCVENfV0NOVF9SRktfUkVKRUNUXSYjNDM7JiM0Mzs7XG4mIzQzO1x0XHRjeC1cdTAwM2V3bC53Y250W0JUQ19XQ05UX1JGS19SRUpFQ1RdJiM0MzsmIzQzOztcbiBcdH0gZWxzZSB7XG4tXHRcdGN4LVx1MDAzZWNudF93bFtCVENfV0NOVF9SRktfR09dJiM0MzsmIzQzOztcbiYjNDM7XHRcdGN4LVx1MDAzZXdsLndjbnRbQlRDX1dDTlRfUkZLX0dPXSYjNDM7JiM0Mzs7XG4gXHRcdHJldHVybiB0cnVlO1xuIFx0fVxuIFx0cmV0dXJuIGZhbHNlO1xuQEAgLTc0OTUsNyAmIzQzOzc2NTgsNyBAQCB2b2lkIF9ydW5fY29leChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGVudW0gYnRjX3JlYXNvbl9hbmRfYWN0aW9uIHJlYXNvbilcbiBcdHN0cnVjdCBydHc4OV9idGNfZG0gKmRtID0gXHUwMDI2cnR3ZGV2LVx1MDAzZWJ0Yy5kbTtcbiBcdHN0cnVjdCBydHc4OV9idGNfY3ggKmN4ID0gXHUwMDI2YnRjLVx1MDAzZWN4O1xuIFx0c3RydWN0IHJ0dzg5X2J0Y193bF9pbmZvICp3bCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC53bDtcbi1cdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcdTAwMjZidGMtXHUwMDNlY3guYnQ7XG4mIzQzO1x0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC5idDA7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX3JvbGVfaW5mbyAqd2xfcmluZm8gPSBcdTAwMjZ3bC1cdTAwM2Vyb2xlX2luZm87XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX3JvbGVfaW5mb192MSAqd2xfcmluZm9fdjEgPSBcdTAwMjZ3bC1cdTAwM2Vyb2xlX2luZm9fdjE7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX3JvbGVfaW5mb192MiAqd2xfcmluZm9fdjIgPSBcdTAwMjZ3bC1cdTAwM2Vyb2xlX2luZm9fdjI7XG5AQCAtNzU2MCw3ICYjNDM7NzcyMyw4IEBAIHZvaWQgX3J1bl9jb2V4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgZW51bSBidGNfcmVhc29uX2FuZF9hY3Rpb24gcmVhc29uKVxuIFx0fVxuIFxuIFx0aWYgKHdsLVx1MDAzZXN0YXR1cy5tYXAucmZfb2ZmX3ByZSA9PSB3bC1cdTAwM2VzdGF0dXMubWFwLnJmX29mZiBcdTAwMjZcdTAwMjZcbi1cdCAgICB3bC1cdTAwM2VzdGF0dXMubWFwLmxwc19wcmUgPT0gd2wtXHUwMDNlc3RhdHVzLm1hcC5scHMpIHtcbiYjNDM7XHQgICAgd2wtXHUwMDNlc3RhdHVzLm1hcC5scHNfcHJlID09IHdsLVx1MDAzZXN0YXR1cy5tYXAubHBzIFx1MDAyNlx1MDAyNlxuJiM0MztcdCAgICAhZG0tXHUwMDNlbHBzX2N0cmxfY2hhbmdlIFx1MDAyNlx1MDAyNiAhZG0tXHUwMDNlbHBzX2N0cmxfc2NiZCkge1xuIFx0XHRpZiAocmVhc29uID09IEJUQ19SU05fTlRGWV9QT1dFUk9GRiB8fFxuIFx0XHQgICAgcmVhc29uID09IEJUQ19SU05fTlRGWV9SQURJT19TVEFURSkge1xuIFx0XHRcdHJ0dzg5X2RlYnVnKHJ0d2RldiwgUlRXODlfREJHX0JUQyxcbkBAIC03NTc3LDYgJiM0Mzs3NzQxLDkgQEAgdm9pZCBfcnVuX2NvZXgoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBlbnVtIGJ0Y19yZWFzb25fYW5kX2FjdGlvbiByZWFzb24pXG4gXHRcdH1cbiBcdH1cbiBcbiYjNDM7XHRpZiAocmVhc29uID09IEJUQ19SU05fTlRGWV9JTklUIHx8IHJlYXNvbiA9PSBCVENfUlNOX05URllfUkFESU9fU1RBVEUpXG4mIzQzO1x0XHRfdXBkYXRlX2J0X3NjYmQocnR3ZGV2LCBmYWxzZSk7XG4mIzQzO1xuIFx0ZG0tXHUwMDNlZnJlZXJ1biA9IGZhbHNlO1xuIFx0ZG0tXHUwMDNlY250X2RtW0JUQ19EQ05UX1JVTl0mIzQzOyYjNDM7O1xuIFx0ZG0tXHUwMDNlZmRkdF90cmFpbiA9IEJUQ19GRERUX0RJU0FCTEU7XG5AQCAtNzU5Nyw3ICYjNDM7Nzc2NCw3IEBAIHZvaWQgX3J1bl9jb2V4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgZW51bSBidGNfcmVhc29uX2FuZF9hY3Rpb24gcmVhc29uKVxuIFx0XHRnb3RvIGV4aXQ7XG4gXHR9XG4gXG4tXHRpZiAod2wtXHUwMDNlc3RhdHVzLm1hcC5yZl9vZmYgfHwgd2wtXHUwMDNlc3RhdHVzLm1hcC5scHMgfHwgZG0tXHUwMDNlYnRfb25seSkge1xuJiM0MztcdGlmICh3bC1cdTAwM2VzdGF0dXMubWFwLnJmX29mZiB8fCBkbS1cdTAwM2VidF9vbmx5IHx8IHdsLVx1MDAzZXN0YXR1cy5tYXAubHBzKSB7XG4gXHRcdF9hY3Rpb25fd2xfb2ZmKHJ0d2RldiwgbW9kZSk7XG4gXHRcdGlnbm9fYnQgPSB0cnVlO1xuIFx0XHRnb3RvIGV4aXQ7XG5AQCAtNzYwOCwxMiAmIzQzOzc3NzUsMTIgQEAgdm9pZCBfcnVuX2NvZXgoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBlbnVtIGJ0Y19yZWFzb25fYW5kX2FjdGlvbiByZWFzb24pXG4gXHRcdGdvdG8gZXhpdDtcbiBcdH1cbiBcbi1cdGlmICghY3gtXHUwMDNlYnQuZW5hYmxlLm5vdyBcdTAwMjZcdTAwMjYgIWN4LVx1MDAzZW90aGVyLnR5cGUpIHtcbiYjNDM7XHRpZiAoIWN4LVx1MDAzZWJ0MC5lbmFibGUubm93IFx1MDAyNlx1MDAyNiAhY3gtXHUwMDNlYnRfZXh0LmZ1bmNfdHlwZSkge1xuIFx0XHRfYWN0aW9uX2J0X29mZihydHdkZXYpO1xuIFx0XHRnb3RvIGV4aXQ7XG4gXHR9XG4gXG4tXHRpZiAoY3gtXHUwMDNlYnQud2hxbF90ZXN0KSB7XG4mIzQzO1x0aWYgKGN4LVx1MDAzZWJ0MC53aHFsX3Rlc3QpIHtcbiBcdFx0X2FjdGlvbl9idF93aHFsKHJ0d2Rldik7XG4gXHRcdGdvdG8gZXhpdDtcbiBcdH1cbkBAIC03NzI5LDcgJiM0Mzs3ODk2LDcgQEAgc3RhdGljIHZvaWQgX3NldF9pbml0X2luZm8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuIFx0XHRkbS1cdTAwM2Vpbml0X2luZm8uaW5pdF92Ny53bF9vbmx5ID0gKHU4KWRtLVx1MDAzZXdsX29ubHk7XG4gXHRcdGRtLVx1MDAzZWluaXRfaW5mby5pbml0X3Y3LmJ0X29ubHkgPSAodTgpZG0tXHUwMDNlYnRfb25seTtcbiBcdFx0ZG0tXHUwMDNlaW5pdF9pbmZvLmluaXRfdjcud2xfaW5pdF9vayA9ICh1OCl3bC1cdTAwM2VzdGF0dXMubWFwLmluaXRfb2s7XG4tXHRcdGRtLVx1MDAzZWluaXRfaW5mby5pbml0X3Y3LmN4X290aGVyID0gYnRjLVx1MDAzZWN4Lm90aGVyLnR5cGU7XG4mIzQzO1x0XHRkbS1cdTAwM2Vpbml0X2luZm8uaW5pdF92Ny5jeF9vdGhlciA9IGJ0Yy1cdTAwM2VjeC5idF9leHQuZnVuY190eXBlO1xuIFx0XHRkbS1cdTAwM2Vpbml0X2luZm8uaW5pdF92Ny53bF9ndWFyZF9jaCA9IGNoaXAtXHUwMDNlYWZoX2d1YXJkX2NoO1xuIFx0XHRkbS1cdTAwM2Vpbml0X2luZm8uaW5pdF92Ny5tb2R1bGUgPSBidGMtXHUwMDNlbWRpbmZvLm1kX3Y3O1xuIFx0fSBlbHNlIHtcbkBAIC03NzM3LDcgJiM0Mzs3OTA0LDcgQEAgc3RhdGljIHZvaWQgX3NldF9pbml0X2luZm8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuIFx0XHRkbS1cdTAwM2Vpbml0X2luZm8uaW5pdC5idF9vbmx5ID0gKHU4KWRtLVx1MDAzZWJ0X29ubHk7XG4gXHRcdGRtLVx1MDAzZWluaXRfaW5mby5pbml0LndsX2luaXRfb2sgPSAodTgpd2wtXHUwMDNlc3RhdHVzLm1hcC5pbml0X29rO1xuIFx0XHRkbS1cdTAwM2Vpbml0X2luZm8uaW5pdC5kYmNjX2VuID0gcnR3ZGV2LVx1MDAzZWRiY2NfZW47XG4tXHRcdGRtLVx1MDAzZWluaXRfaW5mby5pbml0LmN4X290aGVyID0gYnRjLVx1MDAzZWN4Lm90aGVyLnR5cGU7XG4mIzQzO1x0XHRkbS1cdTAwM2Vpbml0X2luZm8uaW5pdC5jeF9vdGhlciA9IGJ0Yy1cdTAwM2VjeC5idF9leHQuZnVuY190eXBlO1xuIFx0XHRkbS1cdTAwM2Vpbml0X2luZm8uaW5pdC53bF9ndWFyZF9jaCA9IGNoaXAtXHUwMDNlYWZoX2d1YXJkX2NoO1xuIFx0XHRkbS1cdTAwM2Vpbml0X2luZm8uaW5pdC5tb2R1bGUgPSBidGMtXHUwMDNlbWRpbmZvLm1kO1xuIFx0fVxuQEAgLTc3ODEsNyAmIzQzOzc5NDgsNiBAQCB2b2lkIHJ0dzg5X2J0Y19udGZ5X2luaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCBtb2RlKVxuIFxuIFx0X3dyaXRlX3NjYmQocnR3ZGV2LFxuIFx0XHQgICAgQlRDX1dTQ0JfQUNUSVZFIHwgQlRDX1dTQ0JfT04gfCBCVENfV1NDQl9CVExPRywgdHJ1ZSk7XG4tXHRfdXBkYXRlX2J0X3NjYmQocnR3ZGV2LCB0cnVlKTtcbiBcdGlmIChydHc4OV9tYWNfZ2V0X2N0cmxfcGF0aChydHdkZXYpKSB7XG4gXHRcdHJ0dzg5X2RlYnVnKHJ0d2RldiwgUlRXODlfREJHX0JUQyxcbiBcdFx0XHQgICAgXCYjMzQ7W0JUQ10sICVzKCk6IFBUQSBvd25lciB3YXJuaW5nISFcXG5cJiMzNDssXG5AQCAtNzc5MCw3ICYjNDM7Nzk1Niw3IEBAIHZvaWQgcnR3ODlfYnRjX250ZnlfaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IG1vZGUpXG4gXHR9XG4gXG4gXHRfc2V0X2luaXRfaW5mbyhydHdkZXYpO1xuLVx0X3NldF93bF90eF9wb3dlcihydHdkZXYsIFJUVzg5X0JUQ19XTF9ERUZfVFhfUFdSKTtcbiYjNDM7XHRfc2V0X3dsX3R4X3Bvd2VyKHJ0d2RldiwgUlRXODlfQlRDX1dMX0RFRl9UWF9QV1IsIFJUVzg5X1BIWV8wKTtcbiBcdGJ0Y19md19zZXRfbW9ucmVnKHJ0d2Rldik7XG4gXHRydHc4OV9idGNfZndfc2V0X3Nsb3RzKHJ0d2Rldik7XG4gXHRfZndfc2V0X2Rydl9pbmZvKHJ0d2RldiwgQ1hEUlZJTkZPX0lOSVQpO1xuQEAgLTc4NzcsNyAmIzQzOzgwNDMsNyBAQCB2b2lkIHJ0dzg5X2J0Y19udGZ5X3NwZWNpZmljX3BhY2tldChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4gXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcdTAwMjZydHdkZXYtXHUwMDNlYnRjO1xuIFx0c3RydWN0IHJ0dzg5X2J0Y19jeCAqY3ggPSBcdTAwMjZidGMtXHUwMDNlY3g7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX2luZm8gKndsID0gXHUwMDI2Y3gtXHUwMDNld2w7XG4tXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2xpbmtfaW5mbyAqYiA9IFx1MDAyNmN4LVx1MDAzZWJ0LmxpbmtfaW5mbztcbiYjNDM7XHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2xpbmtfaW5mbyAqYiA9IFx1MDAyNmN4LVx1MDAzZWJ0MC5saW5rX2luZm87XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2hmcF9kZXNjICpoZnAgPSBcdTAwMjZiLVx1MDAzZWhmcF9kZXNjO1xuIFx0c3RydWN0IHJ0dzg5X2J0Y19idF9oaWRfZGVzYyAqaGlkID0gXHUwMDI2Yi1cdTAwM2VoaWRfZGVzYztcbiBcdHUzMiBjbnQ7XG5AQCAtNzg4NiwxNCAmIzQzOzgwNTIsMTQgQEAgdm9pZCBydHc4OV9idGNfbnRmeV9zcGVjaWZpY19wYWNrZXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuIFxuIFx0c3dpdGNoIChwa3RfdHlwZSkge1xuIFx0Y2FzZSBQQUNLRVRfREhDUDpcbi1cdFx0Y250ID0gJiM0MzsmIzQzO2N4LVx1MDAzZWNudF93bFtCVENfV0NOVF9ESENQXTtcbiYjNDM7XHRcdGNudCA9ICYjNDM7JiM0Mzt3bC1cdTAwM2V3Y250W0JUQ19XQ05UX0RIQ1BdO1xuIFx0XHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19CVEMsXG4gXHRcdFx0ICAgIFwmIzM0O1tCVENdLCAlcygpOiBESENQIGNudD0lZFxcblwmIzM0OywgX19mdW5jX18sIGNudCk7XG4gXHRcdHdsLVx1MDAzZXN0YXR1cy5tYXAuY29ubmVjdGluZyA9IHRydWU7XG4gXHRcdGRlbGF5X3dvcmsgPSB0cnVlO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgUEFDS0VUX0VBUE9MOlxuLVx0XHRjbnQgPSAmIzQzOyYjNDM7Y3gtXHUwMDNlY250X3dsW0JUQ19XQ05UX0VBUE9MXTtcbiYjNDM7XHRcdGNudCA9ICYjNDM7JiM0Mzt3bC1cdTAwM2V3Y250W0JUQ19XQ05UX0VBUE9MXTtcbiBcdFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQlRDLFxuIFx0XHRcdCAgICBcJiMzNDtbQlRDXSwgJXMoKTogRUFQT0wgY250PSVkXFxuXCYjMzQ7LCBfX2Z1bmNfXywgY250KTtcbiBcdFx0d2wtXHUwMDNlc3RhdHVzLm1hcC5fNHdheSA9IHRydWU7XG5AQCAtNzkwMiw3ICYjNDM7ODA2OCw3IEBAIHZvaWQgcnR3ODlfYnRjX250Znlfc3BlY2lmaWNfcGFja2V0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbiBcdFx0XHRkZWxheSAvPSAyO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgUEFDS0VUX0VBUE9MX0VORDpcbi1cdFx0Y250ID0gJiM0MzsmIzQzO2N4LVx1MDAzZWNudF93bFtCVENfV0NOVF9FQVBPTF07XG4mIzQzO1x0XHRjbnQgPSAmIzQzOyYjNDM7d2wtXHUwMDNld2NudFtCVENfV0NOVF9FQVBPTF07XG4gXHRcdHJ0dzg5X2RlYnVnKHJ0d2RldiwgUlRXODlfREJHX0JUQyxcbiBcdFx0XHQgICAgXCYjMzQ7W0JUQ10sICVzKCk6IEVBUE9MX0VuZCBjbnQ9JWRcXG5cJiMzNDssXG4gXHRcdFx0ICAgIF9fZnVuY19fLCBjbnQpO1xuQEAgLTc5MTAsNyAmIzQzOzgwNzYsNyBAQCB2b2lkIHJ0dzg5X2J0Y19udGZ5X3NwZWNpZmljX3BhY2tldChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4gXHRcdHdpcGh5X2RlbGF5ZWRfd29ya19jYW5jZWwocnR3ZGV2LVx1MDAzZWh3LVx1MDAzZXdpcGh5LCBcdTAwMjZydHdkZXYtXHUwMDNlY29leF9hY3QxX3dvcmspO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgUEFDS0VUX0FSUDpcbi1cdFx0Y250ID0gJiM0MzsmIzQzO2N4LVx1MDAzZWNudF93bFtCVENfV0NOVF9BUlBdO1xuJiM0MztcdFx0Y250ID0gJiM0MzsmIzQzO3dsLVx1MDAzZXdjbnRbQlRDX1dDTlRfQVJQXTtcbiBcdFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQlRDLFxuIFx0XHRcdCAgICBcJiMzNDtbQlRDXSwgJXMoKTogQVJQIGNudD0lZFxcblwmIzM0OywgX19mdW5jX18sIGNudCk7XG4gXHRcdHJldHVybjtcbkBAIC03OTgyLDcgJiM0Mzs4MTQ4LDcgQEAgc3RhdGljIHU4IF91cGRhdGVfYnRfcnNzaV9sZXZlbChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHJzc2kpXG4ge1xuIFx0Y29uc3Qgc3RydWN0IHJ0dzg5X2NoaXBfaW5mbyAqY2hpcCA9IHJ0d2Rldi1cdTAwM2VjaGlwO1xuIFx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXHUwMDI2cnR3ZGV2LVx1MDAzZWJ0Yztcbi1cdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcdTAwMjZidGMtXHUwMDNlY3guYnQ7XG4mIzQzO1x0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC5idDA7XG4gXHR1OCAqcnNzaV9zdCwgcnNzaV90aCwgcnNzaV9sZXZlbCA9IDA7XG4gXHR1OCBpO1xuIFxuQEAgLTgwMzIsNyAmIzQzOzgxOTgsNyBAQCBzdGF0aWMgdm9pZCBfdXBkYXRlX2J0X2luZm8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCAqYnVmLCB1MzIgbGVuKVxuIFx0Y29uc3Qgc3RydWN0IHJ0dzg5X2NoaXBfaW5mbyAqY2hpcCA9IHJ0d2Rldi1cdTAwM2VjaGlwO1xuIFx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXHUwMDI2cnR3ZGV2LVx1MDAzZWJ0YztcbiBcdHN0cnVjdCBydHc4OV9idGNfY3ggKmN4ID0gXHUwMDI2YnRjLVx1MDAzZWN4O1xuLVx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFx1MDAyNmN4LVx1MDAzZWJ0O1xuJiM0MztcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcdTAwMjZjeC1cdTAwM2VidDA7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2xpbmtfaW5mbyAqYiA9IFx1MDAyNmJ0LVx1MDAzZWxpbmtfaW5mbztcbiBcdHN0cnVjdCBydHc4OV9idGNfYnRfaGZwX2Rlc2MgKmhmcCA9IFx1MDAyNmItXHUwMDNlaGZwX2Rlc2M7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2hpZF9kZXNjICpoaWQgPSBcdTAwMjZiLVx1MDAzZWhpZF9kZXNjO1xuQEAgLTgwNDcsNyAmIzQzOzgyMTMsNyBAQCBzdGF0aWMgdm9pZCBfdXBkYXRlX2J0X2luZm8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCAqYnVmLCB1MzIgbGVuKVxuIFx0XHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19CVEMsXG4gXHRcdFx0ICAgIFwmIzM0O1tCVENdLCAlcygpOiByZXR1cm4gYnkgYnQtaW5mbyBkdXBsaWNhdGUhIVxcblwmIzM0OyxcbiBcdFx0XHQgICAgX19mdW5jX18pO1xuLVx0XHRjeC1cdTAwM2VjbnRfYnRbQlRDX0JDTlRfSU5GT1NBTUVdJiM0MzsmIzQzOztcbiYjNDM7XHRcdGJ0LVx1MDAzZWJjbnRbQlRDX0JDTlRfSU5GT1NBTUVdJiM0MzsmIzQzOztcbiBcdFx0cmV0dXJuO1xuIFx0fVxuIFxuQEAgLTgwNjgsNyAmIzQzOzgyMzQsNyBAQCBzdGF0aWMgdm9pZCBfdXBkYXRlX2J0X2luZm8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCAqYnVmLCB1MzIgbGVuKVxuIFx0Yi1cdTAwM2VzdGF0dXMubWFwLmFjbF9idXN5ID0gYnRpbmZvLmxiMi5hY2xfYnVzeTtcbiBcdGItXHUwMDNlc3RhdHVzLm1hcC5pbnFfcGFnID0gYnRpbmZvLmxiMi5pbnFfcGFnO1xuIFx0YnQtXHUwMDNlaW5xX3BhZy5ub3cgPSBidGluZm8ubGIyLmlucV9wYWc7XG4tXHRjeC1cdTAwM2VjbnRfYnRbQlRDX0JDTlRfSU5RUEFHXSAmIzQzOz0gISEoYnQtXHUwMDNlaW5xX3BhZy5ub3cgXHUwMDI2XHUwMDI2ICFidC1cdTAwM2VpbnFfcGFnLmxhc3QpO1xuJiM0MztcdGJ0LVx1MDAzZWJjbnRbQlRDX0JDTlRfSU5RUEFHXSAmIzQzOz0gISEoYnQtXHUwMDNlaW5xX3BhZy5ub3cgXHUwMDI2XHUwMDI2ICFidC1cdTAwM2VpbnFfcGFnLmxhc3QpO1xuIFxuIFx0aGZwLVx1MDAzZWV4aXN0ID0gYnRpbmZvLmxiMi5oZnA7XG4gXHRiLVx1MDAzZXByb2ZpbGVfY250Lm5vdyAmIzQzOz0gKHU4KWhmcC1cdTAwM2VleGlzdDtcbkBAIC04MDgzLDExICYjNDM7ODI0OSwxMSBAQCBzdGF0aWMgdm9pZCBfdXBkYXRlX2J0X2luZm8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCAqYnVmLCB1MzIgbGVuKVxuIFx0LyogcGFyc2UgcmF3IGluZm8gbG93LUJ5dGUzICovXG4gXHRidGluZm8udmFsID0gYnQtXHUwMDNlcmF3X2luZm9bQlRDX0JUSU5GT19MM107XG4gXHRpZiAoYnRpbmZvLmxiMy5yZXRyeSAhPSAwKVxuLVx0XHRjeC1cdTAwM2VjbnRfYnRbQlRDX0JDTlRfUkVUUlldJiM0MzsmIzQzOztcbiYjNDM7XHRcdGJ0LVx1MDAzZWJjbnRbQlRDX0JDTlRfUkVUUlldJiM0MzsmIzQzOztcbiBcdGItXHUwMDNlY3FkZHIgPSBidGluZm8ubGIzLmNxZGRyO1xuLVx0Y3gtXHUwMDNlY250X2J0W0JUQ19CQ05UX0lOUV0gJiM0Mzs9ICEhKGJ0aW5mby5sYjMuaW5xIFx1MDAyNlx1MDAyNiAhYnQtXHUwMDNlaW5xKTtcbiYjNDM7XHRidC1cdTAwM2ViY250W0JUQ19CQ05UX0lOUV0gJiM0Mzs9ICEhKGJ0aW5mby5sYjMuaW5xIFx1MDAyNlx1MDAyNiAhYnQtXHUwMDNlaW5xKTtcbiBcdGJ0LVx1MDAzZWlucSA9IGJ0aW5mby5sYjMuaW5xO1xuLVx0Y3gtXHUwMDNlY250X2J0W0JUQ19CQ05UX1BBR0VdICYjNDM7PSAhIShidGluZm8ubGIzLnBhZyBcdTAwMjZcdTAwMjYgIWJ0LVx1MDAzZXBhZyk7XG4mIzQzO1x0YnQtXHUwMDNlYmNudFtCVENfQkNOVF9QQUdFXSAmIzQzOz0gISEoYnRpbmZvLmxiMy5wYWcgXHUwMDI2XHUwMDI2ICFidC1cdTAwM2VwYWcpO1xuIFx0YnQtXHUwMDNlcGFnID0gYnRpbmZvLmxiMy5wYWc7XG4gXG4gXHRiLVx1MDAzZXN0YXR1cy5tYXAubWVzaF9idXN5ID0gYnRpbmZvLmxiMy5tZXNoX2J1c3k7XG5AQCAtODExMCwxMSAmIzQzOzgyNzYsMTEgQEAgc3RhdGljIHZvaWQgX3VwZGF0ZV9idF9pbmZvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggKmJ1ZiwgdTMyIGxlbilcbiBcdFx0XHRoaWQtXHUwMDNldHlwZSB8PSBCVENfSElEX1JDVTtcbiBcdH1cbiBcbi1cdGN4LVx1MDAzZWNudF9idFtCVENfQkNOVF9SRUlOSVRdICYjNDM7PSAhIShidGluZm8uaGIxLnJlaW5pdCBcdTAwMjZcdTAwMjYgIWJ0LVx1MDAzZXJlaW5pdCk7XG4mIzQzO1x0YnQtXHUwMDNlYmNudFtCVENfQkNOVF9SRUlOSVRdICYjNDM7PSAhIShidGluZm8uaGIxLnJlaW5pdCBcdTAwMjZcdTAwMjYgIWJ0LVx1MDAzZXJlaW5pdCk7XG4gXHRidC1cdTAwM2VyZWluaXQgPSBidGluZm8uaGIxLnJlaW5pdDtcbi1cdGN4LVx1MDAzZWNudF9idFtCVENfQkNOVF9SRUxJTktdICYjNDM7PSAhIShidGluZm8uaGIxLnJlbGluayBcdTAwMjZcdTAwMjYgIWItXHUwMDNlcmVsaW5rLm5vdyk7XG4mIzQzO1x0YnQtXHUwMDNlYmNudFtCVENfQkNOVF9SRUxJTktdICYjNDM7PSAhIShidGluZm8uaGIxLnJlbGluayBcdTAwMjZcdTAwMjYgIWItXHUwMDNlcmVsaW5rLm5vdyk7XG4gXHRiLVx1MDAzZXJlbGluay5ub3cgPSBidGluZm8uaGIxLnJlbGluaztcbi1cdGN4LVx1MDAzZWNudF9idFtCVENfQkNOVF9JR05PV0xdICYjNDM7PSAhIShidGluZm8uaGIxLmlnbm9fd2wgXHUwMDI2XHUwMDI2ICFidC1cdTAwM2VpZ25vX3dsKTtcbiYjNDM7XHRidC1cdTAwM2ViY250W0JUQ19CQ05UX0lHTk9XTF0gJiM0Mzs9ICEhKGJ0aW5mby5oYjEuaWdub193bCBcdTAwMjZcdTAwMjYgIWJ0LVx1MDAzZWlnbm9fd2wpO1xuIFx0YnQtXHUwMDNlaWdub193bCA9IGJ0aW5mby5oYjEuaWdub193bDtcbiBcbiBcdGlmIChidC1cdTAwM2VpZ25vX3dsIFx1MDAyNlx1MDAyNiAhY3gtXHUwMDNld2wuc3RhdHVzLm1hcC5yZl9vZmYpXG5AQCAtODEyMiw3ICYjNDM7ODI4OCw3IEBAIHN0YXRpYyB2b2lkIF91cGRhdGVfYnRfaW5mbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4ICpidWYsIHUzMiBsZW4pXG4gXG4gXHRidC1cdTAwM2VibGVfc2Nhbl9lbiA9IGJ0aW5mby5oYjEuYmxlX3NjYW47XG4gXG4tXHRjeC1cdTAwM2VjbnRfYnRbQlRDX0JDTlRfUk9MRVNXXSAmIzQzOz0gISEoYnRpbmZvLmhiMS5yb2xlX3N3IFx1MDAyNlx1MDAyNiAhYi1cdTAwM2Vyb2xlX3N3KTtcbiYjNDM7XHRidC1cdTAwM2ViY250W0JUQ19CQ05UX1JPTEVTV10gJiM0Mzs9ICEhKGJ0aW5mby5oYjEucm9sZV9zdyBcdTAwMjZcdTAwMjYgIWItXHUwMDNlcm9sZV9zdyk7XG4gXHRiLVx1MDAzZXJvbGVfc3cgPSBidGluZm8uaGIxLnJvbGVfc3c7XG4gXG4gXHRiLVx1MDAzZW11bHRpX2xpbmsubm93ID0gYnRpbmZvLmhiMS5tdWx0aV9saW5rO1xuQEAgLTgxMzEsNyAmIzQzOzgyOTcsNyBAQCBzdGF0aWMgdm9pZCBfdXBkYXRlX2J0X2luZm8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCAqYnVmLCB1MzIgbGVuKVxuIFx0YnRpbmZvLnZhbCA9IGJ0LVx1MDAzZXJhd19pbmZvW0JUQ19CVElORk9fSDJdO1xuIFx0cGFuLVx1MDAzZWFjdGl2ZSA9ICEhYnRpbmZvLmhiMi5wYW5fYWN0aXZlO1xuIFxuLVx0Y3gtXHUwMDNlY250X2J0W0JUQ19CQ05UX0FGSF0gJiM0Mzs9ICEhKGJ0aW5mby5oYjIuYWZoX3VwZGF0ZSBcdTAwMjZcdTAwMjYgIWItXHUwMDNlYWZoX3VwZGF0ZSk7XG4mIzQzO1x0YnQtXHUwMDNlYmNudFtCVENfQkNOVF9BRkhdICYjNDM7PSAhIShidGluZm8uaGIyLmFmaF91cGRhdGUgXHUwMDI2XHUwMDI2ICFiLVx1MDAzZWFmaF91cGRhdGUpO1xuIFx0Yi1cdTAwM2VhZmhfdXBkYXRlID0gYnRpbmZvLmhiMi5hZmhfdXBkYXRlO1xuIFx0YTJkcC1cdTAwM2VhY3RpdmUgPSBidGluZm8uaGIyLmEyZHBfYWN0aXZlO1xuIFx0Yi1cdTAwM2VzbGF2ZV9yb2xlID0gYnRpbmZvLmhiMi5zbGF2ZTtcbkBAIC04MTQ1LDcgJiM0Mzs4MzExLDcgQEAgc3RhdGljIHZvaWQgX3VwZGF0ZV9idF9pbmZvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggKmJ1ZiwgdTMyIGxlbilcbiBcdGEyZHAtXHUwMDNlYml0cG9vbCA9IGJ0aW5mby5oYjMuYTJkcF9iaXRwb29sO1xuIFxuIFx0aWYgKGItXHUwMDNldHhfM20gIT0gKHUzMilidGluZm8uaGIzLnR4XzNtKVxuLVx0XHRjeC1cdTAwM2VjbnRfYnRbQlRDX0JDTlRfUkFURUNIR10mIzQzOyYjNDM7O1xuJiM0MztcdFx0YnQtXHUwMDNlYmNudFtCVENfQkNOVF9SQVRFQ0hHXSYjNDM7JiM0Mzs7XG4gXHRiLVx1MDAzZXR4XzNtID0gKHUzMilidGluZm8uaGIzLnR4XzNtO1xuIFxuIFx0YTJkcC1cdTAwM2VzaW5rID0gYnRpbmZvLmhiMy5hMmRwX3Npbms7XG5AQCAtODMzOSw3ICYjNDM7ODUwNSw2IEBAIHZvaWQgcnR3ODlfYnRjX250ZnlfcmFkaW9fc3RhdGUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBlbnVtIGJ0Y19yZmN0cmwgcmZfc3RhXG4gXHRcdHJ0dzg5X2J0Y19md19lbl9ycHQocnR3ZGV2LCBSUFRfRU5fTVJFRywgdHJ1ZSk7XG4gXHRcdHZhbCA9IEJUQ19XU0NCX0FDVElWRSB8IEJUQ19XU0NCX09OIHwgQlRDX1dTQ0JfQlRMT0c7XG4gXHRcdF93cml0ZV9zY2JkKHJ0d2RldiwgdmFsLCB0cnVlKTtcbi1cdFx0X3VwZGF0ZV9idF9zY2JkKHJ0d2RldiwgdHJ1ZSk7XG4gXHRcdGNoaXAtXHUwMDNlb3BzLVx1MDAzZWJ0Y19pbml0X2NmZyhydHdkZXYpO1xuIFx0fSBlbHNlIHtcbiBcdFx0cnR3ODlfYnRjX2Z3X2VuX3JwdChydHdkZXYsIFJQVF9FTl9BTEwsIGZhbHNlKTtcbkBAIC04MzQ5LDEwICYjNDM7ODUxNCw2IEBAIHZvaWQgcnR3ODlfYnRjX250ZnlfcmFkaW9fc3RhdGUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBlbnVtIGJ0Y19yZmN0cmwgcmZfc3RhXG4gXHRcdFx0X3dyaXRlX3NjYmQocnR3ZGV2LCBCVENfV1NDQl9BTEwsIGZhbHNlKTtcbiBcdFx0ZWxzZVxuIFx0XHRcdF93cml0ZV9zY2JkKHJ0d2RldiwgQlRDX1dTQ0JfQUNUSVZFLCBmYWxzZSk7XG4tXG4tXHRcdGlmIChyZl9zdGF0ZSA9PSBCVENfUkZDVFJMX0xQU19XTF9PTiBcdTAwMjZcdTAwMjZcbi1cdFx0ICAgIHdsLVx1MDAzZXN0YXR1cy5tYXAubHBzX3ByZSAhPSBCVENfTFBTX09GRilcbi1cdFx0XHRfdXBkYXRlX2J0X3NjYmQocnR3ZGV2LCB0cnVlKTtcbiBcdH1cbiBcbiBcdGJ0Yy1cdTAwM2VkbS5jbnRfZG1bQlRDX0RDTlRfQlRDTlRfSEFOR10gPSAwO1xuQEAgLTg3MDUsNyAmIzQzOzg4NjYsNyBAQCBzdGF0aWMgdTggcnR3ODlfYnRjX2MyaF9nZXRfaW5kZXhfYnlfdmVyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggZnVuYylcbiBcdFx0XHRyZXR1cm4gQlRGX0VWTlRfQlVGX09WRVJGTE9XO1xuIFx0XHRlbHNlIGlmICh2ZXItXHUwMDNlZndjMmhmdW5jID09IDIpXG4gXHRcdFx0cmV0dXJuIGZ1bmM7XG4tXHRcdGVsc2UgaWYgKHZlci1cdTAwM2Vmd2MyaGZ1bmMgPT0gMylcbiYjNDM7XHRcdGVsc2UgaWYgKHZlci1cdTAwM2Vmd2MyaGZ1bmMgPT0gMyB8fCB2ZXItXHUwMDNlZndjMmhmdW5jID09IDQpXG4gXHRcdFx0cmV0dXJuIEJURl9FVk5UX0JVRl9PVkVSRkxPVztcbiBcdFx0ZWxzZVxuIFx0XHRcdHJldHVybiBCVEZfRVZOVF9NQVg7XG5AQCAtODcxNiwxOSAmIzQzOzg4NzcsMjYgQEAgc3RhdGljIHU4IHJ0dzg5X2J0Y19jMmhfZ2V0X2luZGV4X2J5X3ZlcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IGZ1bmMpXG4gXHRcdFx0cmV0dXJuIEJURl9FVk5UX0MySF9MT09QQkFDSztcbiBcdFx0ZWxzZSBpZiAodmVyLVx1MDAzZWZ3YzJoZnVuYyA9PSAyKVxuIFx0XHRcdHJldHVybiBmdW5jO1xuLVx0XHRlbHNlIGlmICh2ZXItXHUwMDNlZndjMmhmdW5jID09IDMpXG4mIzQzO1x0XHRlbHNlIGlmICh2ZXItXHUwMDNlZndjMmhmdW5jID09IDMgfHwgdmVyLVx1MDAzZWZ3YzJoZnVuYyA9PSA0KVxuIFx0XHRcdHJldHVybiBCVEZfRVZOVF9DMkhfTE9PUEJBQ0s7XG4gXHRcdGVsc2VcbiBcdFx0XHRyZXR1cm4gQlRGX0VWTlRfTUFYO1xuIFx0Y2FzZSBCVEZfRVZOVF9DMkhfTE9PUEJBQ0s6XG4gXHRcdGlmICh2ZXItXHUwMDNlZndjMmhmdW5jID09IDIpXG4gXHRcdFx0cmV0dXJuIGZ1bmM7XG4tXHRcdGVsc2UgaWYgKHZlci1cdTAwM2Vmd2MyaGZ1bmMgPT0gMylcbiYjNDM7XHRcdGVsc2UgaWYgKHZlci1cdTAwM2Vmd2MyaGZ1bmMgPT0gMyB8fCB2ZXItXHUwMDNlZndjMmhmdW5jID09IDQpXG4gXHRcdFx0cmV0dXJuIEJURl9FVk5UX0JUX0xFQVVESU9fSU5GTztcbiBcdFx0ZWxzZVxuIFx0XHRcdHJldHVybiBCVEZfRVZOVF9NQVg7XG4gXHRjYXNlIEJURl9FVk5UX0JUX1FVRVJZX1RYUFdSOlxuLVx0XHRpZiAodmVyLVx1MDAzZWZ3YzJoZnVuYyA9PSAzKVxuJiM0MztcdFx0aWYgKHZlci1cdTAwM2Vmd2MyaGZ1bmMgPT0gMyB8fCB2ZXItXHUwMDNlZndjMmhmdW5jID09IDQpXG4mIzQzO1x0XHRcdHJldHVybiBmdW5jO1xuJiM0MztcdFx0ZWxzZVxuJiM0MztcdFx0XHRyZXR1cm4gQlRGX0VWTlRfTUFYO1xuJiM0MztcdGNhc2UgQlRGX0VWTlRfWkJfSU5GTzpcbiYjNDM7XHRjYXNlIEJURl9FVk5UX1pCX0NIOlxuJiM0MztcdGNhc2UgQlRGX0VWTlRfWkJfUVVFUllfVFhQV1I6XG4mIzQzO1x0XHRpZiAodmVyLVx1MDAzZWZ3YzJoZnVuYyA9PSA0KVxuIFx0XHRcdHJldHVybiBmdW5jO1xuIFx0XHRlbHNlXG4gXHRcdFx0cmV0dXJuIEJURl9FVk5UX01BWDtcbkBAIC04NzQyLDYgJiM0Mzs4OTEwLDcgQEAgdm9pZCBydHc4OV9idGNfYzJoX2hhbmRsZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0ICB1MzIgbGVuLCB1OCBjbGFzcywgdTggZnVuYylcbiB7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcdTAwMjZydHdkZXYtXHUwMDNlYnRjO1xuJiM0MztcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcdTAwMjZydHdkZXYtXHUwMDNlYnRjLmN4LmJ0MDtcbiBcdHN0cnVjdCBydHc4OV9idGNfYnRmX2Z3aW5mbyAqcGZ3aW5mbyA9IFx1MDAyNmJ0Yy1cdTAwM2Vmd2luZm87XG4gXHR1OCAqYnVmID0gXHUwMDI2c2tiLVx1MDAzZWRhdGFbUlRXODlfQzJIX0hFQURFUl9MRU5dO1xuIFxuQEAgLTg3NjksMTMgJiM0Mzs4OTM4LDEzIEBAIHZvaWQgcnR3ODlfYnRjX2MyaF9oYW5kbGUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0Y2FzZSBCVEZfRVZOVF9CVF9JTkZPOlxuIFx0XHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19CVEMsXG4gXHRcdFx0ICAgIFwmIzM0O1tCVENdLCBoYW5kbGUgQzJIIEJUIElORk8gd2l0aCBkYXRhICU4cGhcXG5cJiMzNDssIGJ1Zik7XG4tXHRcdGJ0Yy1cdTAwM2VjeC5jbnRfYnRbQlRDX0JDTlRfSU5GT1VQREFURV0mIzQzOyYjNDM7O1xuJiM0MztcdFx0YnQtXHUwMDNlYmNudFtCVENfQkNOVF9JTkZPVVBEQVRFXSYjNDM7JiM0Mzs7XG4gXHRcdF91cGRhdGVfYnRfaW5mbyhydHdkZXYsIGJ1ZiwgbGVuKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEJURl9FVk5UX0JUX1NDQkQ6XG4gXHRcdHJ0dzg5X2RlYnVnKHJ0d2RldiwgUlRXODlfREJHX0JUQyxcbiBcdFx0XHQgICAgXCYjMzQ7W0JUQ10sIGhhbmRsZSBDMkggQlQgU0NCRCB3aXRoIGRhdGEgJThwaFxcblwmIzM0OywgYnVmKTtcbi1cdFx0YnRjLVx1MDAzZWN4LmNudF9idFtCVENfQkNOVF9TQ0JEVVBEQVRFXSYjNDM7JiM0Mzs7XG4mIzQzO1x0XHRidC1cdTAwM2ViY250W0JUQ19CQ05UX1NDQkRVUERBVEVdJiM0MzsmIzQzOztcbiBcdFx0X3VwZGF0ZV9idF9zY2JkKHJ0d2RldiwgZmFsc2UpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgQlRGX0VWTlRfQlRfUFNEOlxuQEAgLTg3OTMsNyAmIzQzOzg5NjIsNyBAQCB2b2lkIHJ0dzg5X2J0Y19jMmhfaGFuZGxlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0YnRjLVx1MDAzZWRtLmNudF9kbVtCVENfRENOVF9DWF9SVU5JTkZPXSYjNDM7JiM0Mzs7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCVEZfRVZOVF9CVF9RVUVSWV9UWFBXUjpcbi1cdFx0YnRjLVx1MDAzZWN4LmNudF9idFtCVENfQkNOVF9CVFRYUFdSX1VQREFURV0mIzQzOyYjNDM7O1xuJiM0MztcdFx0YnQtXHUwMDNlYmNudFtCVENfQkNOVF9CVFRYUFdSX1VQREFURV0mIzQzOyYjNDM7O1xuIFx0XHRfdXBkYXRlX2J0X3R4cHdyX2luZm8ocnR3ZGV2LCBidWYsIGxlbik7XG4gXHR9XG4gfVxuQEAgLTg4MDgsNyAmIzQzOzg5NzcsNyBAQCBzdGF0aWMgaW50IF9zaG93X2N4X2luZm8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBjaGFyICpidWYsIHNpemVfdCBidWZzeilcbiBcdHN0cnVjdCBydHc4OV9oYWwgKmhhbCA9IFx1MDAyNnJ0d2Rldi1cdTAwM2VoYWw7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcdTAwMjZydHdkZXYtXHUwMDNlYnRjO1xuIFx0c3RydWN0IHJ0dzg5X2J0Y19kbSAqZG0gPSBcdTAwMjZidGMtXHUwMDNlZG07XG4tXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXHUwMDI2YnRjLVx1MDAzZWN4LmJ0O1xuJiM0MztcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcdTAwMjZidGMtXHUwMDNlY3guYnQwO1xuIFx0c3RydWN0IHJ0dzg5X2J0Y193bF9pbmZvICp3bCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC53bDtcbiBcdHUzMiB2ZXJfbWFpbiA9IDAsIHZlcl9zdWIgPSAwLCB2ZXJfaG90Zml4ID0gMCwgaWRfYnJhbmNoID0gMDtcbiBcdHU4IGN2LCByZmUsIGlzbywgYW50X251bSwgYW50X3NpbmdsZV9wb3M7XG5AQCAtODg4NSw3ICYjNDM7OTA1NCw3IEBAIHN0YXRpYyBpbnQgX3Nob3dfY3hfaW5mbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnN6KVxuIFxuIFx0cCAmIzQzOz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsXG4gXHRcdCAgICAgICBcJiMzNDszcmRfY29leDolZCwgZGJjYzolZCwgdHhfbnVtOiVkLCByeF9udW06JWRcXG5cJiMzNDssXG4tXHRcdCAgICAgICBidGMtXHUwMDNlY3gub3RoZXIudHlwZSwgcnR3ZGV2LVx1MDAzZWRiY2NfZW4sIGhhbC1cdTAwM2V0eF9uc3MsXG4mIzQzO1x0XHQgICAgICAgYnRjLVx1MDAzZWN4LmJ0X2V4dC5mdW5jX3R5cGUsIHJ0d2Rldi1cdTAwM2VkYmNjX2VuLCBoYWwtXHUwMDNldHhfbnNzLFxuIFx0XHQgICAgICAgaGFsLVx1MDAzZXJ4X25zcyk7XG4gXG4gXHRyZXR1cm4gcCAtIGJ1ZjtcbkBAIC05MDA3LDcgJiM0Mzs5MTc2LDcgQEAgZW51bSBidGNfYnRfYTJkcF90eXBlIHtcbiBzdGF0aWMgaW50IF9zaG93X2J0X3Byb2ZpbGVfaW5mbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnN6KVxuIHtcbiBcdHN0cnVjdCBydHc4OV9idGMgKmJ0YyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2VidGM7XG4tXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2xpbmtfaW5mbyAqYnRfbGluZm8gPSBcdTAwMjZidGMtXHUwMDNlY3guYnQubGlua19pbmZvO1xuJiM0MztcdHN0cnVjdCBydHc4OV9idGNfYnRfbGlua19pbmZvICpidF9saW5mbyA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC5idDAubGlua19pbmZvO1xuIFx0c3RydWN0IHJ0dzg5X2J0Y19idF9oZnBfZGVzYyBoZnAgPSBidF9saW5mby1cdTAwM2VoZnBfZGVzYztcbiBcdHN0cnVjdCBydHc4OV9idGNfYnRfaGlkX2Rlc2MgaGlkID0gYnRfbGluZm8tXHUwMDNlaGlkX2Rlc2M7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2EyZHBfZGVzYyBhMmRwID0gYnRfbGluZm8tXHUwMDNlYTJkcF9kZXNjO1xuQEAgLTkwNjUsNyAmIzQzOzkyMzQsNyBAQCBzdGF0aWMgaW50IF9zaG93X2J0X2luZm8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBjaGFyICpidWYsIHNpemVfdCBidWZzeilcbiBcdHN0cnVjdCBydHc4OV9idGMgKmJ0YyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2VidGM7XG4gXHRjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3ZlciAqdmVyID0gYnRjLVx1MDAzZXZlcjtcbiBcdHN0cnVjdCBydHc4OV9idGNfY3ggKmN4ID0gXHUwMDI2YnRjLVx1MDAzZWN4O1xuLVx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFx1MDAyNmN4LVx1MDAzZWJ0O1xuJiM0MztcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcdTAwMjZjeC1cdTAwM2VidDA7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX2luZm8gKndsID0gXHUwMDI2Y3gtXHUwMDNld2w7XG4gXHR1MzIgdmVyX21haW4gPSBGSUVMRF9HRVQoR0VOTUFTSygzMSwgMjQpLCB3bC1cdTAwM2V2ZXJfaW5mby5md19jb2V4KTtcbiBcdHN0cnVjdCBydHc4OV9idGNfYnRfbGlua19pbmZvICpidF9saW5mbyA9IFx1MDAyNmJ0LVx1MDAzZWxpbmtfaW5mbztcbkBAIC05MTQ0LDE3ICYjNDM7OTMxMywxNyBAQCBzdGF0aWMgaW50IF9zaG93X2J0X2luZm8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBjaGFyICpidWYsIHNpemVfdCBidWZzeilcbiBcbiBcdHAgJiM0Mzs9IHNjbnByaW50ZihwLCBlbmQgLSBwLFxuIFx0XHQgICAgICAgXCYjMzQ7ICUtMTVzIDogcmV0cnk6JWQsIHJlbGluazolZCwgcmF0ZV9jaGc6JWQsIHJlaW5pdDolZCwgcmVlbmFibGU6JWQsIFwmIzM0Oyxcbi1cdFx0ICAgICAgIFwmIzM0O1tzdGF0X2NudF1cJiMzNDssIGN4LVx1MDAzZWNudF9idFtCVENfQkNOVF9SRVRSWV0sXG4tXHRcdCAgICAgICBjeC1cdTAwM2VjbnRfYnRbQlRDX0JDTlRfUkVMSU5LXSxcbi1cdFx0ICAgICAgIGN4LVx1MDAzZWNudF9idFtCVENfQkNOVF9SQVRFQ0hHXSxcbi1cdFx0ICAgICAgIGN4LVx1MDAzZWNudF9idFtCVENfQkNOVF9SRUlOSVRdLFxuLVx0XHQgICAgICAgY3gtXHUwMDNlY250X2J0W0JUQ19CQ05UX1JFRU5BQkxFXSk7XG4mIzQzO1x0XHQgICAgICAgXCYjMzQ7W3N0YXRfY250XVwmIzM0OywgYnQtXHUwMDNlYmNudFtCVENfQkNOVF9SRVRSWV0sXG4mIzQzO1x0XHQgICAgICAgYnQtXHUwMDNlYmNudFtCVENfQkNOVF9SRUxJTktdLFxuJiM0MztcdFx0ICAgICAgIGJ0LVx1MDAzZWJjbnRbQlRDX0JDTlRfUkFURUNIR10sXG4mIzQzO1x0XHQgICAgICAgYnQtXHUwMDNlYmNudFtCVENfQkNOVF9SRUlOSVRdLFxuJiM0MztcdFx0ICAgICAgIGJ0LVx1MDAzZWJjbnRbQlRDX0JDTlRfUkVFTkFCTEVdKTtcbiBcbiBcdHAgJiM0Mzs9IHNjbnByaW50ZihwLCBlbmQgLSBwLFxuIFx0XHQgICAgICAgXCYjMzQ7cm9sZS1zd2l0Y2g6JWQsIGFmaDolZCwgaW5xX3BhZ2U6JWQoaW5xOiVkL3BhZ2U6JWQpLCBpZ25vX3dsOiVkXFxuXCYjMzQ7LFxuLVx0XHQgICAgICAgY3gtXHUwMDNlY250X2J0W0JUQ19CQ05UX1JPTEVTV10sIGN4LVx1MDAzZWNudF9idFtCVENfQkNOVF9BRkhdLFxuLVx0XHQgICAgICAgY3gtXHUwMDNlY250X2J0W0JUQ19CQ05UX0lOUVBBR10sIGN4LVx1MDAzZWNudF9idFtCVENfQkNOVF9JTlFdLFxuLVx0XHQgICAgICAgY3gtXHUwMDNlY250X2J0W0JUQ19CQ05UX1BBR0VdLCBjeC1cdTAwM2VjbnRfYnRbQlRDX0JDTlRfSUdOT1dMXSk7XG4mIzQzO1x0XHQgICAgICAgYnQtXHUwMDNlYmNudFtCVENfQkNOVF9ST0xFU1ddLCBidC1cdTAwM2ViY250W0JUQ19CQ05UX0FGSF0sXG4mIzQzO1x0XHQgICAgICAgYnQtXHUwMDNlYmNudFtCVENfQkNOVF9JTlFQQUddLCBidC1cdTAwM2ViY250W0JUQ19CQ05UX0lOUV0sXG4mIzQzO1x0XHQgICAgICAgYnQtXHUwMDNlYmNudFtCVENfQkNOVF9QQUdFXSwgYnQtXHUwMDNlYmNudFtCVENfQkNOVF9JR05PV0xdKTtcbiBcbiBcdHAgJiM0Mzs9IF9zaG93X2J0X3Byb2ZpbGVfaW5mbyhydHdkZXYsIHAsIGVuZCAtIHApO1xuIFxuQEAgLTkxNjQsMTYgJiM0Mzs5MzMzLDE2IEBAIHN0YXRpYyBpbnQgX3Nob3dfYnRfaW5mbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnN6KVxuIFx0XHQgICAgICAgYnQtXHUwMDNlcmF3X2luZm9bNF0sIGJ0LVx1MDAzZXJhd19pbmZvWzVdLCBidC1cdTAwM2VyYXdfaW5mb1s2XSxcbiBcdFx0ICAgICAgIGJ0LVx1MDAzZXJhd19pbmZvWzddLFxuIFx0XHQgICAgICAgYnQtXHUwMDNlcmF3X2luZm9bMF0gPT0gQlRDX0JUSU5GT19BVVRPID8gXCYjMzQ7YXV0b1wmIzM0OyA6IFwmIzM0O3JlcGx5XCYjMzQ7LFxuLVx0XHQgICAgICAgY3gtXHUwMDNlY250X2J0W0JUQ19CQ05UX0lORk9VUERBVEVdLFxuLVx0XHQgICAgICAgY3gtXHUwMDNlY250X2J0W0JUQ19CQ05UX0lORk9TQU1FXSk7XG4mIzQzO1x0XHQgICAgICAgYnQtXHUwMDNlYmNudFtCVENfQkNOVF9JTkZPVVBEQVRFXSxcbiYjNDM7XHRcdCAgICAgICBidC1cdTAwM2ViY250W0JUQ19CQ05UX0lORk9TQU1FXSk7XG4gXG4gXHRwICYjNDM7PSBzY25wcmludGYocCwgZW5kIC0gcCxcbiBcdFx0ICAgICAgIFwmIzM0OyAlLTE1cyA6IEhpLXJ4ID0gJWQsIEhpLXR4ID0gJWQsIExvLXJ4ID0gJWQsIExvLXR4ID0gJWQgKGJ0X3BvbHV0X3dsX3R4ID0gJWQpXCYjMzQ7LFxuLVx0XHQgICAgICAgXCYjMzQ7W3RyeF9yZXFfY250XVwmIzM0OywgY3gtXHUwMDNlY250X2J0W0JUQ19CQ05UX0hJUFJJX1JYXSxcbi1cdFx0ICAgICAgIGN4LVx1MDAzZWNudF9idFtCVENfQkNOVF9ISVBSSV9UWF0sXG4tXHRcdCAgICAgICBjeC1cdTAwM2VjbnRfYnRbQlRDX0JDTlRfTE9QUklfUlhdLFxuLVx0XHQgICAgICAgY3gtXHUwMDNlY250X2J0W0JUQ19CQ05UX0xPUFJJX1RYXSxcbi1cdFx0ICAgICAgIGN4LVx1MDAzZWNudF9idFtCVENfQkNOVF9QT0xVVF0pO1xuJiM0MztcdFx0ICAgICAgIFwmIzM0O1t0cnhfcmVxX2NudF1cJiMzNDssIGJ0LVx1MDAzZWJjbnRbQlRDX0JDTlRfSElQUklfUlhdLFxuJiM0MztcdFx0ICAgICAgIGJ0LVx1MDAzZWJjbnRbQlRDX0JDTlRfSElQUklfVFhdLFxuJiM0MztcdFx0ICAgICAgIGJ0LVx1MDAzZWJjbnRbQlRDX0JDTlRfTE9QUklfUlhdLFxuJiM0MztcdFx0ICAgICAgIGJ0LVx1MDAzZWJjbnRbQlRDX0JDTlRfTE9QUklfVFhdLFxuJiM0MztcdFx0ICAgICAgIGJ0LVx1MDAzZWJjbnRbQlRDX0JDTlRfUE9MVVRdKTtcbiBcbiBcdGlmICghYnQtXHUwMDNlc2Nhbl9pbmZvX3VwZGF0ZSkge1xuIFx0XHRydHc4OV9idGNfZndfZW5fcnB0KHJ0d2RldiwgUlBUX0VOX0JUX1NDQU5fSU5GTywgdHJ1ZSk7XG5AQCAtOTIwOSw3ICYjNDM7OTM3OCw3IEBAIHN0YXRpYyBpbnQgX3Nob3dfYnRfaW5mbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnN6KVxuIFx0ZWxzZVxuIFx0XHRydHc4OV9idGNfZndfZW5fcnB0KHJ0d2RldiwgUlBUX0VOX0JUX1RYX1BXUl9MVkwsIGZhbHNlKTtcbiBcbi1cdGlmIChjeC1cdTAwM2VjbnRfYnRbQlRDX0JDTlRfQlRUWFBXUl9VUERBVEVdKSB7XG4mIzQzO1x0aWYgKGJ0LVx1MDAzZWJjbnRbQlRDX0JDTlRfQlRUWFBXUl9VUERBVEVdKSB7XG4gXHRcdHAgJiM0Mzs9IHNjbnByaW50ZihwLCBlbmQgLSBwLFxuIFx0XHRcdCAgICAgICBcJiMzNDsgJS0xNXMgOiBicl9pbmRleDoweCV4LCBsZV9pbmRleDoweCV4XCYjMzQ7LFxuIFx0XHRcdCAgICAgICBcJiMzNDtbYnRfdHhwd3JfbHZsXVwmIzM0OyxcbkBAIC05NTg4LDcgJiM0Mzs5NzU3LDcgQEAgc3RhdGljIGludCBfc2hvd19kbV9pbmZvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY2hhciAqYnVmLCBzaXplX3QgYnVmc3opXG4gXHRjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3ZlciAqdmVyID0gYnRjLVx1MDAzZXZlcjtcbiBcdHN0cnVjdCBydHc4OV9idGNfZG0gKmRtID0gXHUwMDI2YnRjLVx1MDAzZWRtO1xuIFx0c3RydWN0IHJ0dzg5X2J0Y193bF9pbmZvICp3bCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC53bDtcbi1cdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcdTAwMjZidGMtXHUwMDNlY3guYnQ7XG4mIzQzO1x0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC5idDA7XG4gXHRjaGFyICpwID0gYnVmLCAqZW5kID0gYnVmICYjNDM7IGJ1ZnN6O1xuIFx0dTggaWdub19idDtcbiBcbkBAIC05NjI3LDMxICYjNDM7OTc5NiwyNSBAQCBzdGF0aWMgaW50IF9zaG93X2RtX2luZm8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBjaGFyICpidWYsIHNpemVfdCBidWZzeilcbiBcdFx0ICAgICAgIChkbS1cdTAwM2V3bF9md19jeF9vZmZsb2FkID09IEJUQ19DWF9GV19PRkZMT0FEID9cbiBcdFx0XHRcJiMzNDtcJiMzNDsgOiBcJiMzNDsoTWlzbWF0Y2ghISlcJiMzNDspKTtcbiBcbi1cdGlmIChkbS1cdTAwM2VyZl90cnhfcGFyYS53bF90eF9wb3dlciA9PSAweGZmKVxuLVx0XHRwICYjNDM7PSBzY25wcmludGYocCwgZW5kIC0gcCxcbi1cdFx0XHQgICAgICAgXCYjMzQ7ICUtMTVzIDogd2xfcnNzaV9sdmw6JWQsIHBhcmFfbHZsOiVkLCB3bF90eF9wd3I6b3JpZywgXCYjMzQ7LFxuLVx0XHRcdCAgICAgICBcJiMzNDtbdHJ4X2N0cmxdXCYjMzQ7LCB3bC1cdTAwM2Vyc3NpX2xldmVsLFxuLVx0XHRcdCAgICAgICBkbS1cdTAwM2V0cnhfcGFyYV9sZXZlbCk7XG4tXG4tXHRlbHNlXG4tXHRcdHAgJiM0Mzs9IHNjbnByaW50ZihwLCBlbmQgLSBwLFxuLVx0XHRcdCAgICAgICBcJiMzNDsgJS0xNXMgOiB3bF9yc3NpX2x2bDolZCwgcGFyYV9sdmw6JWQsIHdsX3R4X3B3cjolZCwgXCYjMzQ7LFxuLVx0XHRcdCAgICAgICBcJiMzNDtbdHJ4X2N0cmxdXCYjMzQ7LCB3bC1cdTAwM2Vyc3NpX2xldmVsLFxuLVx0XHRcdCAgICAgICBkbS1cdTAwM2V0cnhfcGFyYV9sZXZlbCxcbi1cdFx0XHQgICAgICAgZG0tXHUwMDNlcmZfdHJ4X3BhcmEud2xfdHhfcG93ZXIpO1xuJiM0MztcdHAgJiM0Mzs9IHNjbnByaW50ZihwLCBlbmQgLSBwLFxuJiM0MztcdFx0ICAgICAgIFwmIzM0OyAlLTE1cyA6IHdsW3Jzc2lfbHZsOiVkL3BhcmE6JWQvdHhfcHdyOlslZCAlZF0vcnhfbHZsOlslZCAlZF0vbG5hMjolZC9zdGJfY2hnOiVkXVxcbiBcJiMzNDssXG4mIzQzO1x0XHQgICAgICAgXCYjMzQ7W2RtX3JmX2N0cmxdXCYjMzQ7LFxuJiM0MztcdFx0ICAgICAgIHdsLVx1MDAzZXJzc2lfbGV2ZWwsIGRtLVx1MDAzZXRyeF9wYXJhX2xldmVsLFxuJiM0MztcdFx0ICAgICAgIGRtLVx1MDAzZXJmX3RyeF9wYXJhLndsX3R4X3Bvd2VyW1JUVzg5X1BIWV8wXSxcbiYjNDM7XHRcdCAgICAgICBkbS1cdTAwM2VyZl90cnhfcGFyYS53bF90eF9wb3dlcltSVFc4OV9QSFlfMV0sXG4mIzQzO1x0XHQgICAgICAgZG0tXHUwMDNlcmZfdHJ4X3BhcmEud2xfcnhfZ2FpbltSVFc4OV9QSFlfMF0sXG4mIzQzO1x0XHQgICAgICAgZG0tXHUwMDNlcmZfdHJ4X3BhcmEud2xfcnhfZ2FpbltSVFc4OV9QSFlfMV0sXG4mIzQzO1x0XHQgICAgICAgZG0tXHUwMDNld2xfbG5hMiwgZG0tXHUwMDNld2xfc3RiX2NoZyk7XG4gXG4gXHRwICYjNDM7PSBzY25wcmludGYocCwgZW5kIC0gcCxcbi1cdFx0ICAgICAgIFwmIzM0O3dsX3J4X2x2bDolZCwgYnRfdHhfcHdyX2RlYzolZCwgYnRfcnhfbG5hOiVkKCVzLXRibCksIHdsX2J0Z19yeDolZFxcblwmIzM0Oyxcbi1cdFx0ICAgICAgIGRtLVx1MDAzZXJmX3RyeF9wYXJhLndsX3J4X2dhaW4sXG4tXHRcdCAgICAgICBkbS1cdTAwM2VyZl90cnhfcGFyYS5idF90eF9wb3dlcixcbi1cdFx0ICAgICAgIGRtLVx1MDAzZXJmX3RyeF9wYXJhLmJ0X3J4X2dhaW4sXG4tXHRcdCAgICAgICAoYnQtXHUwMDNlaGlfbG5hX3J4ID8gXCYjMzQ7SGlcJiMzNDsgOiBcJiMzNDtPcmlcJiMzNDspLCBkbS1cdTAwM2V3bF9idGdfcngpO1xuJiM0MztcdFx0ICAgICAgIFwmIzM0OyAlLTE1cyA6IHByZV9hZ2M6JWQsIGJ0Z19yeDolZFxcbiBcJiMzNDssXG4mIzQzO1x0XHQgICAgICAgXCYjMzQ7W2RtX2JiX2N0cmxdXCYjMzQ7LCBkbS1cdTAwM2V3bF9wcmVfYWdjLCBkbS1cdTAwM2V3bF9idGdfcngpO1xuIFxuIFx0cCAmIzQzOz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsXG4gXHRcdCAgICAgICBcJiMzNDsgJS0xNXMgOiB3bF90eF9saW1pdFtlbjolZC9tYXhfdDolZHVzL21heF9yZXRyeTolZF0sIGJ0X3Nsb3RfcmVnOiVkLVRVLCBidF9zY2FuX3J4X2xvd19wcmk6JWRcXG5cJiMzNDssXG4gXHRcdCAgICAgICBcJiMzNDtbZG1fY3RybF1cJiMzNDssIGRtLVx1MDAzZXdsX3R4X2xpbWl0LmVuYWJsZSxcbiBcdFx0ICAgICAgIGRtLVx1MDAzZXdsX3R4X2xpbWl0LnR4X3RpbWUsXG4tXHRcdCAgICAgICBkbS1cdTAwM2V3bF90eF9saW1pdC50eF9yZXRyeSwgYnRjLVx1MDAzZWJ0X3JlcV9sZW4sXG4mIzQzO1x0XHQgICAgICAgZG0tXHUwMDNld2xfdHhfbGltaXQudHhfcmV0cnksIGJ0Yy1cdTAwM2VidF9yZXFfbGVuW1JUVzg5X1BIWV8wXSxcbiBcdFx0ICAgICAgIGJ0LVx1MDAzZXNjYW5fcnhfbG93X3ByaSk7XG4gXG4gXHRyZXR1cm4gcCAtIGJ1ZjtcbkBAIC05ODEwLDcgJiM0Mzs5OTczLDcgQEAgc3RhdGljIGludCBfc2hvd19mYnRjX2N5c3RhX3YyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY2hhciAqYnVmLCBzaXplX3QgYnVmc3pcbiBcdHN0cnVjdCBydHc4OV9idGMgKmJ0YyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2VidGM7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0Zl9md2luZm8gKnBmd2luZm8gPSBcdTAwMjZidGMtXHUwMDNlZndpbmZvO1xuIFx0c3RydWN0IHJ0dzg5X2J0Y19kbSAqZG0gPSBcdTAwMjZidGMtXHUwMDNlZG07XG4tXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2EyZHBfZGVzYyAqYTJkcCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC5idC5saW5rX2luZm8uYTJkcF9kZXNjO1xuJiM0MztcdHN0cnVjdCBydHc4OV9idGNfYnRfYTJkcF9kZXNjICphMmRwID0gXHUwMDI2YnRjLVx1MDAzZWN4LmJ0MC5saW5rX2luZm8uYTJkcF9kZXNjO1xuIFx0c3RydWN0IHJ0dzg5X2J0Y19ycHRfY21uX2luZm8gKnBjaW5mbyA9IE5VTEw7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX2ZidGNfY3lzdGFfdjIgKnBjeXN0YV9sZTMyID0gTlVMTDtcbiBcdHVuaW9uIHJ0dzg5X2J0Y19mYnRjX3J4ZmxjdCByO1xuQEAgLTk5NDEsNyAmIzQzOzEwMTA0LDcgQEAgc3RhdGljIGludCBfc2hvd19mYnRjX2N5c3RhX3YyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY2hhciAqYnVmLCBzaXplX3QgYnVmc3pcbiBzdGF0aWMgaW50IF9zaG93X2ZidGNfY3lzdGFfdjMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBjaGFyICpidWYsIHNpemVfdCBidWZzeilcbiB7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcdTAwMjZydHdkZXYtXHUwMDNlYnRjO1xuLVx0c3RydWN0IHJ0dzg5X2J0Y19idF9hMmRwX2Rlc2MgKmEyZHAgPSBcdTAwMjZidGMtXHUwMDNlY3guYnQubGlua19pbmZvLmEyZHBfZGVzYztcbiYjNDM7XHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2EyZHBfZGVzYyAqYTJkcCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC5idDAubGlua19pbmZvLmEyZHBfZGVzYztcbiBcdHN0cnVjdCBydHc4OV9idGNfYnRmX2Z3aW5mbyAqcGZ3aW5mbyA9IFx1MDAyNmJ0Yy1cdTAwM2Vmd2luZm87XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX2RtICpkbSA9IFx1MDAyNmJ0Yy1cdTAwM2VkbTtcbiBcdHN0cnVjdCBydHc4OV9idGNfZmJ0Y19hMmRwX3RyeF9zdGF0ICphMmRwX3RyeDtcbkBAIC0xMDA4MCw3ICYjNDM7MTAyNDMsNyBAQCBzdGF0aWMgaW50IF9zaG93X2ZidGNfY3lzdGFfdjMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBjaGFyICpidWYsIHNpemVfdCBidWZzelxuIHN0YXRpYyBpbnQgX3Nob3dfZmJ0Y19jeXN0YV92NChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnN6KVxuIHtcbiBcdHN0cnVjdCBydHc4OV9idGMgKmJ0YyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2VidGM7XG4tXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2EyZHBfZGVzYyAqYTJkcCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC5idC5saW5rX2luZm8uYTJkcF9kZXNjO1xuJiM0MztcdHN0cnVjdCBydHc4OV9idGNfYnRfYTJkcF9kZXNjICphMmRwID0gXHUwMDI2YnRjLVx1MDAzZWN4LmJ0MC5saW5rX2luZm8uYTJkcF9kZXNjO1xuIFx0c3RydWN0IHJ0dzg5X2J0Y19idGZfZndpbmZvICpwZndpbmZvID0gXHUwMDI2YnRjLVx1MDAzZWZ3aW5mbztcbiBcdHN0cnVjdCBydHc4OV9idGNfZG0gKmRtID0gXHUwMDI2YnRjLVx1MDAzZWRtO1xuIFx0c3RydWN0IHJ0dzg5X2J0Y19mYnRjX2EyZHBfdHJ4X3N0YXRfdjQgKmEyZHBfdHJ4O1xuQEAgLTEwMjE5LDcgJiM0MzsxMDM4Miw3IEBAIHN0YXRpYyBpbnQgX3Nob3dfZmJ0Y19jeXN0YV92NChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnN6XG4gc3RhdGljIGludCBfc2hvd19mYnRjX2N5c3RhX3Y1KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY2hhciAqYnVmLCBzaXplX3QgYnVmc3opXG4ge1xuIFx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXHUwMDI2cnR3ZGV2LVx1MDAzZWJ0Yztcbi1cdHN0cnVjdCBydHc4OV9idGNfYnRfYTJkcF9kZXNjICphMmRwID0gXHUwMDI2YnRjLVx1MDAzZWN4LmJ0LmxpbmtfaW5mby5hMmRwX2Rlc2M7XG4mIzQzO1x0c3RydWN0IHJ0dzg5X2J0Y19idF9hMmRwX2Rlc2MgKmEyZHAgPSBcdTAwMjZidGMtXHUwMDNlY3guYnQwLmxpbmtfaW5mby5hMmRwX2Rlc2M7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0Zl9md2luZm8gKnBmd2luZm8gPSBcdTAwMjZidGMtXHUwMDNlZndpbmZvO1xuIFx0c3RydWN0IHJ0dzg5X2J0Y19kbSAqZG0gPSBcdTAwMjZidGMtXHUwMDNlZG07XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX2ZidGNfYTJkcF90cnhfc3RhdF92NCAqYTJkcF90cng7XG5AQCAtMTAzNTYsNyAmIzQzOzEwNTE5LDcgQEAgc3RhdGljIGludCBfc2hvd19mYnRjX2N5c3RhX3Y1KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY2hhciAqYnVmLCBzaXplX3QgYnVmc3pcbiBcbiBzdGF0aWMgaW50IF9zaG93X2ZidGNfY3lzdGFfdjcoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBjaGFyICpidWYsIHNpemVfdCBidWZzeilcbiB7XG4tXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXHUwMDI2cnR3ZGV2LVx1MDAzZWJ0Yy5jeC5idDtcbiYjNDM7XHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXHUwMDI2cnR3ZGV2LVx1MDAzZWJ0Yy5jeC5idDA7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2EyZHBfZGVzYyAqYTJkcCA9IFx1MDAyNmJ0LVx1MDAzZWxpbmtfaW5mby5hMmRwX2Rlc2M7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0Zl9md2luZm8gKnBmd2luZm8gPSBcdTAwMjZydHdkZXYtXHUwMDNlYnRjLmZ3aW5mbztcbiBcdHN0cnVjdCBydHc4OV9idGNfZmJ0Y19jeXN0YV92NyAqcGN5c3RhID0gTlVMTDtcbkBAIC0xMDg1Myw5ICYjNDM7MTEwMTYsOCBAQCBzdGF0aWMgaW50IF9zaG93X21yZWdfdjEoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBjaGFyICpidWYsIHNpemVfdCBidWZzeilcbiBcdHN0cnVjdCBydHc4OV9idGNfYnRmX2Z3aW5mbyAqcGZ3aW5mbyA9IFx1MDAyNmJ0Yy1cdTAwM2Vmd2luZm87XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX3JwdF9jbW5faW5mbyAqcGNpbmZvID0gTlVMTDtcbiBcdHN0cnVjdCBydHc4OV9idGNfZmJ0Y19tcmVnX3ZhbF92MSAqcG1yZWcgPSBOVUxMO1xuLVx0c3RydWN0IHJ0dzg5X2J0Y19jeCAqY3ggPSBcdTAwMjZidGMtXHUwMDNlY3g7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX2luZm8gKndsID0gXHUwMDI2YnRjLVx1MDAzZWN4LndsO1xuLVx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC5idDtcbiYjNDM7XHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXHUwMDI2YnRjLVx1MDAzZWN4LmJ0MDtcbiBcdHN0cnVjdCBydHc4OV9tYWNfYXhfY29leF9nbnQgZ250X2NmZyA9IHt9O1xuIFx0c3RydWN0IHJ0dzg5X21hY19heF9nbnQgZ250O1xuIFx0Y2hhciAqcCA9IGJ1ZiwgKmVuZCA9IGJ1ZiAmIzQzOyBidWZzejtcbkBAIC0xMDg3MCw5ICYjNDM7MTEwMzIsOSBAQCBzdGF0aWMgaW50IF9zaG93X21yZWdfdjEoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBjaGFyICpidWYsIHNpemVfdCBidWZzeilcbiBcdHAgJiM0Mzs9IHNjbnByaW50ZihwLCBlbmQgLSBwLFxuIFx0XHQgICAgICAgXCYjMzQ7ICUtMTVzIDogV0wtXHUwMDNlQlQ6MHglMDh4KGNudDolZCksIEJULVx1MDAzZVdMOjB4JTA4eCh0b3RhbDolZCwgYnRfdXBkYXRlOiVkKVxcblwmIzM0OyxcbiBcdFx0ICAgICAgIFwmIzM0O1tzY29yZWJvYXJkXVwmIzM0Oywgd2wtXHUwMDNlc2NiZCxcbi1cdFx0ICAgICAgIGN4LVx1MDAzZWNudF93bFtCVENfV0NOVF9TQ0JEVVBEQVRFXSxcbi1cdFx0ICAgICAgIGJ0LVx1MDAzZXNjYmQsIGN4LVx1MDAzZWNudF9idFtCVENfQkNOVF9TQ0JEUkVBRF0sXG4tXHRcdCAgICAgICBjeC1cdTAwM2VjbnRfYnRbQlRDX0JDTlRfU0NCRFVQREFURV0pO1xuJiM0MztcdFx0ICAgICAgIHdsLVx1MDAzZXdjbnRbQlRDX1dDTlRfU0NCRFVQREFURV0sXG4mIzQzO1x0XHQgICAgICAgYnQtXHUwMDNlc2NiZCwgYnQtXHUwMDNlYmNudFtCVENfQkNOVF9TQ0JEUkVBRF0sXG4mIzQzO1x0XHQgICAgICAgYnQtXHUwMDNlYmNudFtCVENfQkNOVF9TQ0JEVVBEQVRFXSk7XG4gXG4gXHRidGMtXHUwMDNlZG0ucHRhX293bmVyID0gcnR3ODlfbWFjX2dldF9jdHJsX3BhdGgocnR3ZGV2KTtcbiBcdF9nZXRfZ250KHJ0d2RldiwgXHUwMDI2Z250X2NmZyk7XG5AQCAtMTA5MzgsOSAmIzQzOzExMTAwLDggQEAgc3RhdGljIGludCBfc2hvd19tcmVnX3YyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY2hhciAqYnVmLCBzaXplX3QgYnVmc3opXG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0Zl9md2luZm8gKnBmd2luZm8gPSBcdTAwMjZidGMtXHUwMDNlZndpbmZvO1xuIFx0c3RydWN0IHJ0dzg5X2J0Y19ycHRfY21uX2luZm8gKnBjaW5mbyA9IE5VTEw7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX2ZidGNfbXJlZ192YWxfdjIgKnBtcmVnID0gTlVMTDtcbi1cdHN0cnVjdCBydHc4OV9idGNfY3ggKmN4ID0gXHUwMDI2YnRjLVx1MDAzZWN4O1xuIFx0c3RydWN0IHJ0dzg5X2J0Y193bF9pbmZvICp3bCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC53bDtcbi1cdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcdTAwMjZidGMtXHUwMDNlY3guYnQ7XG4mIzQzO1x0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC5idDA7XG4gXHRzdHJ1Y3QgcnR3ODlfbWFjX2F4X2NvZXhfZ250IGdudF9jZmcgPSB7fTtcbiBcdHN0cnVjdCBydHc4OV9tYWNfYXhfZ250IGdudDtcbiBcdGNoYXIgKnAgPSBidWYsICplbmQgPSBidWYgJiM0MzsgYnVmc3o7XG5AQCAtMTA5NTUsOSAmIzQzOzExMTE2LDkgQEAgc3RhdGljIGludCBfc2hvd19tcmVnX3YyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY2hhciAqYnVmLCBzaXplX3QgYnVmc3opXG4gXHRwICYjNDM7PSBzY25wcmludGYocCwgZW5kIC0gcCxcbiBcdFx0ICAgICAgIFwmIzM0OyAlLTE1cyA6IFdMLVx1MDAzZUJUOjB4JTA4eChjbnQ6JWQpLCBCVC1cdTAwM2VXTDoweCUwOHgodG90YWw6JWQsIGJ0X3VwZGF0ZTolZClcXG5cJiMzNDssXG4gXHRcdCAgICAgICBcJiMzNDtbc2NvcmVib2FyZF1cJiMzNDssIHdsLVx1MDAzZXNjYmQsXG4tXHRcdCAgICAgICBjeC1cdTAwM2VjbnRfd2xbQlRDX1dDTlRfU0NCRFVQREFURV0sXG4tXHRcdCAgICAgICBidC1cdTAwM2VzY2JkLCBjeC1cdTAwM2VjbnRfYnRbQlRDX0JDTlRfU0NCRFJFQURdLFxuLVx0XHQgICAgICAgY3gtXHUwMDNlY250X2J0W0JUQ19CQ05UX1NDQkRVUERBVEVdKTtcbiYjNDM7XHRcdCAgICAgICB3bC1cdTAwM2V3Y250W0JUQ19XQ05UX1NDQkRVUERBVEVdLFxuJiM0MztcdFx0ICAgICAgIGJ0LVx1MDAzZXNjYmQsIGJ0LVx1MDAzZWJjbnRbQlRDX0JDTlRfU0NCRFJFQURdLFxuJiM0MztcdFx0ICAgICAgIGJ0LVx1MDAzZWJjbnRbQlRDX0JDTlRfU0NCRFVQREFURV0pO1xuIFxuIFx0YnRjLVx1MDAzZWRtLnB0YV9vd25lciA9IHJ0dzg5X21hY19nZXRfY3RybF9wYXRoKHJ0d2Rldik7XG4gXHRfZ2V0X2dudChydHdkZXYsIFx1MDAyNmdudF9jZmcpO1xuQEAgLTExMDI1LDcgJiM0MzsxMTE4Niw3IEBAIHN0YXRpYyBpbnQgX3Nob3dfbXJlZ192NyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnN6KVxuIFx0c3RydWN0IHJ0dzg5X2J0Y19ycHRfY21uX2luZm8gKnBjaW5mbyA9IE5VTEw7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX2N4ICpjeCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeDtcbiBcdHN0cnVjdCBydHc4OV9idGNfd2xfaW5mbyAqd2wgPSBcdTAwMjZjeC1cdTAwM2V3bDtcbi1cdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcdTAwMjZjeC1cdTAwM2VidDtcbiYjNDM7XHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXHUwMDI2Y3gtXHUwMDNlYnQwO1xuIFx0c3RydWN0IHJ0dzg5X21hY19heF9nbnQgKmdudCA9IE5VTEw7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX2RtICpkbSA9IFx1MDAyNmJ0Yy1cdTAwM2VkbTtcbiBcdGNoYXIgKnAgPSBidWYsICplbmQgPSBidWYgJiM0MzsgYnVmc3o7XG5AQCAtMTEwNDAsOSAmIzQzOzExMjAxLDkgQEAgc3RhdGljIGludCBfc2hvd19tcmVnX3Y3KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY2hhciAqYnVmLCBzaXplX3QgYnVmc3opXG4gXHRwICYjNDM7PSBzY25wcmludGYocCwgZW5kIC0gcCxcbiBcdFx0ICAgICAgIFwmIzM0O1xcblxcciAlLTE1cyA6IFdMLVx1MDAzZUJUOjB4JTA4eChjbnQ6JWQpLCBCVC1cdTAwM2VXTDoweCUwOHgodG90YWw6JWQsIGJ0X3VwZGF0ZTolZClcJiMzNDssXG4gXHRcdCAgICAgICBcJiMzNDtbc2NvcmVib2FyZF1cJiMzNDssIHdsLVx1MDAzZXNjYmQsXG4tXHRcdCAgICAgICBjeC1cdTAwM2VjbnRfd2xbQlRDX1dDTlRfU0NCRFVQREFURV0sXG4tXHRcdCAgICAgICBidC1cdTAwM2VzY2JkLCBjeC1cdTAwM2VjbnRfYnRbQlRDX0JDTlRfU0NCRFJFQURdLFxuLVx0XHQgICAgICAgY3gtXHUwMDNlY250X2J0W0JUQ19CQ05UX1NDQkRVUERBVEVdKTtcbiYjNDM7XHRcdCAgICAgICB3bC1cdTAwM2V3Y250W0JUQ19XQ05UX1NDQkRVUERBVEVdLFxuJiM0MztcdFx0ICAgICAgIGJ0LVx1MDAzZXNjYmQsIGJ0LVx1MDAzZWJjbnRbQlRDX0JDTlRfU0NCRFJFQURdLFxuJiM0MztcdFx0ICAgICAgIGJ0LVx1MDAzZWJjbnRbQlRDX0JDTlRfU0NCRFVQREFURV0pO1xuIFxuIFx0LyogVG8gYXZvaWQgSS9PIGlmIFdMIExQUyBvciBwb3dlci1vZmYgICovXG4gXHRkbS1cdTAwM2VwdGFfb3duZXIgPSBydHc4OV9tYWNfZ2V0X2N0cmxfcGF0aChydHdkZXYpO1xuQEAgLTExMTAzLDcgJiM0MzsxMTI2NCw3IEBAIHN0YXRpYyBpbnQgX3Nob3dfc3VtbWFyeV92MShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnN6KVxuIFx0c3RydWN0IHJ0dzg5X2J0Y19jeCAqY3ggPSBcdTAwMjZidGMtXHUwMDNlY3g7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX2RtICpkbSA9IFx1MDAyNmJ0Yy1cdTAwM2VkbTtcbiBcdHN0cnVjdCBydHc4OV9idGNfd2xfaW5mbyAqd2wgPSBcdTAwMjZjeC1cdTAwM2V3bDtcbi1cdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcdTAwMjZjeC1cdTAwM2VidDtcbiYjNDM7XHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXHUwMDI2Y3gtXHUwMDNlYnQwO1xuIFx0dTMyIGNudF9zdW0gPSAwLCAqY250ID0gYnRjLVx1MDAzZWRtLmNudF9ub3RpZnk7XG4gXHRjaGFyICpwID0gYnVmLCAqZW5kID0gYnVmICYjNDM7IGJ1ZnN6O1xuIFx0dTggaTtcbkBAIC0xMTE0NiwxMCAmIzQzOzExMzA3LDEwIEBAIHN0YXRpYyBpbnQgX3Nob3dfc3VtbWFyeV92MShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnN6KVxuIFxuIFx0XHRwICYjNDM7PSBzY25wcmludGYocCwgZW5kIC0gcCxcbiBcdFx0XHQgICAgICAgXCYjMzQ7ICUtMTVzIDogd2xfcmZrW3JlcTolZC9nbzolZC9yZWplY3Q6JWQvdGltZW91dDolZF1cJiMzNDssXG4tXHRcdFx0ICAgICAgIFwmIzM0O1tSRktdXCYjMzQ7LCBjeC1cdTAwM2VjbnRfd2xbQlRDX1dDTlRfUkZLX1JFUV0sXG4tXHRcdFx0ICAgICAgIGN4LVx1MDAzZWNudF93bFtCVENfV0NOVF9SRktfR09dLFxuLVx0XHRcdCAgICAgICBjeC1cdTAwM2VjbnRfd2xbQlRDX1dDTlRfUkZLX1JFSkVDVF0sXG4tXHRcdFx0ICAgICAgIGN4LVx1MDAzZWNudF93bFtCVENfV0NOVF9SRktfVElNRU9VVF0pO1xuJiM0MztcdFx0XHQgICAgICAgXCYjMzQ7W1JGS11cJiMzNDssIHdsLVx1MDAzZXdjbnRbQlRDX1dDTlRfUkZLX1JFUV0sXG4mIzQzO1x0XHRcdCAgICAgICB3bC1cdTAwM2V3Y250W0JUQ19XQ05UX1JGS19HT10sXG4mIzQzO1x0XHRcdCAgICAgICB3bC1cdTAwM2V3Y250W0JUQ19XQ05UX1JGS19SRUpFQ1RdLFxuJiM0MztcdFx0XHQgICAgICAgd2wtXHUwMDNld2NudFtCVENfV0NOVF9SRktfVElNRU9VVF0pO1xuIFxuIFx0XHRwICYjNDM7PSBzY25wcmludGYocCwgZW5kIC0gcCxcbiBcdFx0XHQgICAgICAgXCYjMzQ7LCBidF9yZmtbcmVxOiVkL2dvOiVkL3JlamVjdDolZC90aW1lb3V0OiVkL2ZhaWw6JWRdXFxuXCYjMzQ7LFxuQEAgLTExMjEyLDcgJiM0MzsxMTM3Myw3IEBAIHN0YXRpYyBpbnQgX3Nob3dfc3VtbWFyeV92NChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnN6KVxuIFx0c3RydWN0IHJ0dzg5X2J0Y19jeCAqY3ggPSBcdTAwMjZidGMtXHUwMDNlY3g7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX2RtICpkbSA9IFx1MDAyNmJ0Yy1cdTAwM2VkbTtcbiBcdHN0cnVjdCBydHc4OV9idGNfd2xfaW5mbyAqd2wgPSBcdTAwMjZjeC1cdTAwM2V3bDtcbi1cdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcdTAwMjZjeC1cdTAwM2VidDtcbiYjNDM7XHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXHUwMDI2Y3gtXHUwMDNlYnQwO1xuIFx0dTMyIGNudF9zdW0gPSAwLCAqY250ID0gYnRjLVx1MDAzZWRtLmNudF9ub3RpZnk7XG4gXHRjaGFyICpwID0gYnVmLCAqZW5kID0gYnVmICYjNDM7IGJ1ZnN6O1xuIFx0dTggaTtcbkBAIC0xMTI2MSwxMCAmIzQzOzExNDIyLDEwIEBAIHN0YXRpYyBpbnQgX3Nob3dfc3VtbWFyeV92NChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnN6KVxuIFxuIFx0XHRwICYjNDM7PSBzY25wcmludGYocCwgZW5kIC0gcCxcbiBcdFx0XHQgICAgICAgXCYjMzQ7ICUtMTVzIDogd2xfcmZrW3JlcTolZC9nbzolZC9yZWplY3Q6JWQvdGltZW91dDolZF1cJiMzNDssXG4tXHRcdFx0ICAgICAgIFwmIzM0O1tSRktdXCYjMzQ7LCBjeC1cdTAwM2VjbnRfd2xbQlRDX1dDTlRfUkZLX1JFUV0sXG4tXHRcdFx0ICAgICAgIGN4LVx1MDAzZWNudF93bFtCVENfV0NOVF9SRktfR09dLFxuLVx0XHRcdCAgICAgICBjeC1cdTAwM2VjbnRfd2xbQlRDX1dDTlRfUkZLX1JFSkVDVF0sXG4tXHRcdFx0ICAgICAgIGN4LVx1MDAzZWNudF93bFtCVENfV0NOVF9SRktfVElNRU9VVF0pO1xuJiM0MztcdFx0XHQgICAgICAgXCYjMzQ7W1JGS11cJiMzNDssIHdsLVx1MDAzZXdjbnRbQlRDX1dDTlRfUkZLX1JFUV0sXG4mIzQzO1x0XHRcdCAgICAgICB3bC1cdTAwM2V3Y250W0JUQ19XQ05UX1JGS19HT10sXG4mIzQzO1x0XHRcdCAgICAgICB3bC1cdTAwM2V3Y250W0JUQ19XQ05UX1JGS19SRUpFQ1RdLFxuJiM0MztcdFx0XHQgICAgICAgd2wtXHUwMDNld2NudFtCVENfV0NOVF9SRktfVElNRU9VVF0pO1xuIFxuIFx0XHRwICYjNDM7PSBzY25wcmludGYocCwgZW5kIC0gcCxcbiBcdFx0XHQgICAgICAgXCYjMzQ7LCBidF9yZmtbcmVxOiVkL2dvOiVkL3JlamVjdDolZC90aW1lb3V0OiVkL2ZhaWw6JWRdXFxuXCYjMzQ7LFxuQEAgLTExMzc1LDEwICYjNDM7MTE1MzYsMTAgQEAgc3RhdGljIGludCBfc2hvd19zdW1tYXJ5X3Y1KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY2hhciAqYnVmLCBzaXplX3QgYnVmc3opXG4gXG4gXHRcdHAgJiM0Mzs9IHNjbnByaW50ZihwLCBlbmQgLSBwLFxuIFx0XHRcdCAgICAgICBcJiMzNDsgJS0xNXMgOiB3bF9yZmtbcmVxOiVkL2dvOiVkL3JlamVjdDolZC90b3V0OiVkXVwmIzM0Oyxcbi1cdFx0XHQgICAgICAgXCYjMzQ7W1JGSy9MUFNdXCYjMzQ7LCBjeC1cdTAwM2VjbnRfd2xbQlRDX1dDTlRfUkZLX1JFUV0sXG4tXHRcdFx0ICAgICAgIGN4LVx1MDAzZWNudF93bFtCVENfV0NOVF9SRktfR09dLFxuLVx0XHRcdCAgICAgICBjeC1cdTAwM2VjbnRfd2xbQlRDX1dDTlRfUkZLX1JFSkVDVF0sXG4tXHRcdFx0ICAgICAgIGN4LVx1MDAzZWNudF93bFtCVENfV0NOVF9SRktfVElNRU9VVF0pO1xuJiM0MztcdFx0XHQgICAgICAgXCYjMzQ7W1JGSy9MUFNdXCYjMzQ7LCB3bC1cdTAwM2V3Y250W0JUQ19XQ05UX1JGS19SRVFdLFxuJiM0MztcdFx0XHQgICAgICAgd2wtXHUwMDNld2NudFtCVENfV0NOVF9SRktfR09dLFxuJiM0MztcdFx0XHQgICAgICAgd2wtXHUwMDNld2NudFtCVENfV0NOVF9SRktfUkVKRUNUXSxcbiYjNDM7XHRcdFx0ICAgICAgIHdsLVx1MDAzZXdjbnRbQlRDX1dDTlRfUkZLX1RJTUVPVVRdKTtcbiBcbiBcdFx0cCAmIzQzOz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsXG4gXHRcdFx0ICAgICAgIFwmIzM0OywgYnRfcmZrW3JlcTolZF1cJiMzNDssXG5AQCAtMTE0OTYsMTAgJiM0MzsxMTY1NywxMCBAQCBzdGF0aWMgaW50IF9zaG93X3N1bW1hcnlfdjEwNShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnN6KVxuIFxuIFx0XHRwICYjNDM7PSBzY25wcmludGYocCwgZW5kIC0gcCxcbiBcdFx0XHQgICAgICAgXCYjMzQ7ICUtMTVzIDogd2xfcmZrW3JlcTolZC9nbzolZC9yZWplY3Q6JWQvdG91dDolZF1cJiMzNDssXG4tXHRcdFx0ICAgICAgIFwmIzM0O1tSRksvTFBTXVwmIzM0OywgY3gtXHUwMDNlY250X3dsW0JUQ19XQ05UX1JGS19SRVFdLFxuLVx0XHRcdCAgICAgICBjeC1cdTAwM2VjbnRfd2xbQlRDX1dDTlRfUkZLX0dPXSxcbi1cdFx0XHQgICAgICAgY3gtXHUwMDNlY250X3dsW0JUQ19XQ05UX1JGS19SRUpFQ1RdLFxuLVx0XHRcdCAgICAgICBjeC1cdTAwM2VjbnRfd2xbQlRDX1dDTlRfUkZLX1RJTUVPVVRdKTtcbiYjNDM7XHRcdFx0ICAgICAgIFwmIzM0O1tSRksvTFBTXVwmIzM0Oywgd2wtXHUwMDNld2NudFtCVENfV0NOVF9SRktfUkVRXSxcbiYjNDM7XHRcdFx0ICAgICAgIHdsLVx1MDAzZXdjbnRbQlRDX1dDTlRfUkZLX0dPXSxcbiYjNDM7XHRcdFx0ICAgICAgIHdsLVx1MDAzZXdjbnRbQlRDX1dDTlRfUkZLX1JFSkVDVF0sXG4mIzQzO1x0XHRcdCAgICAgICB3bC1cdTAwM2V3Y250W0JUQ19XQ05UX1JGS19USU1FT1VUXSk7XG4gXG4gXHRcdHAgJiM0Mzs9IHNjbnByaW50ZihwLCBlbmQgLSBwLFxuIFx0XHRcdCAgICAgICBcJiMzNDssIGJ0X3Jma1tyZXE6JWRdXCYjMzQ7LFxuQEAgLTExNjIxLDEwICYjNDM7MTE3ODIsMTAgQEAgc3RhdGljIGludCBfc2hvd19zdW1tYXJ5X3Y3KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY2hhciAqYnVmLCBzaXplX3QgYnVmc3opXG4gXG4gXHRcdHAgJiM0Mzs9IHNjbnByaW50ZihwLCBlbmQgLSBwLFxuIFx0XHRcdCAgICAgICBcJiMzNDtcXG5cXHIgJS0xNXMgOiB3bF9yZmtbcmVxOiVkL2dvOiVkL3JlamVjdDolZC90b3V0OiVkL3RpbWU6JWRtc11cJiMzNDssXG4tXHRcdFx0ICAgICAgIFwmIzM0O1tSRksvTFBTXVwmIzM0OywgY3gtXHUwMDNlY250X3dsW0JUQ19XQ05UX1JGS19SRVFdLFxuLVx0XHRcdCAgICAgICBjeC1cdTAwM2VjbnRfd2xbQlRDX1dDTlRfUkZLX0dPXSxcbi1cdFx0XHQgICAgICAgY3gtXHUwMDNlY250X3dsW0JUQ19XQ05UX1JGS19SRUpFQ1RdLFxuLVx0XHRcdCAgICAgICBjeC1cdTAwM2VjbnRfd2xbQlRDX1dDTlRfUkZLX1RJTUVPVVRdLFxuJiM0MztcdFx0XHQgICAgICAgXCYjMzQ7W1JGSy9MUFNdXCYjMzQ7LCB3bC1cdTAwM2V3Y250W0JUQ19XQ05UX1JGS19SRVFdLFxuJiM0MztcdFx0XHQgICAgICAgd2wtXHUwMDNld2NudFtCVENfV0NOVF9SRktfR09dLFxuJiM0MztcdFx0XHQgICAgICAgd2wtXHUwMDNld2NudFtCVENfV0NOVF9SRktfUkVKRUNUXSxcbiYjNDM7XHRcdFx0ICAgICAgIHdsLVx1MDAzZXdjbnRbQlRDX1dDTlRfUkZLX1RJTUVPVVRdLFxuIFx0XHRcdCAgICAgICB3bC1cdTAwM2VyZmtfaW5mby5wcm9jX3RpbWUpO1xuIFxuIFx0XHRwICYjNDM7PSBzY25wcmludGYocCwgZW5kIC0gcCwgXCYjMzQ7LCBidF9yZmtbcmVxOiVkXVwmIzM0OyxcbkBAIC0xMTczNCwxMCAmIzQzOzExODk1LDEwIEBAIHN0YXRpYyBpbnQgX3Nob3dfc3VtbWFyeV92OChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnN6KVxuIFxuIFx0XHRwICYjNDM7PSBzY25wcmludGYocCwgZW5kIC0gcCxcbiBcdFx0XHQgICAgICAgXCYjMzQ7XFxuXFxyICUtMTVzIDogd2xfcmZrW3JlcTolZC9nbzolZC9yZWplY3Q6JWQvdG91dDolZC90aW1lOiVkbXNdXCYjMzQ7LFxuLVx0XHRcdCAgICAgICBcJiMzNDtbUkZLL0xQU11cJiMzNDssIGN4LVx1MDAzZWNudF93bFtCVENfV0NOVF9SRktfUkVRXSxcbi1cdFx0XHQgICAgICAgY3gtXHUwMDNlY250X3dsW0JUQ19XQ05UX1JGS19HT10sXG4tXHRcdFx0ICAgICAgIGN4LVx1MDAzZWNudF93bFtCVENfV0NOVF9SRktfUkVKRUNUXSxcbi1cdFx0XHQgICAgICAgY3gtXHUwMDNlY250X3dsW0JUQ19XQ05UX1JGS19USU1FT1VUXSxcbiYjNDM7XHRcdFx0ICAgICAgIFwmIzM0O1tSRksvTFBTXVwmIzM0Oywgd2wtXHUwMDNld2NudFtCVENfV0NOVF9SRktfUkVRXSxcbiYjNDM7XHRcdFx0ICAgICAgIHdsLVx1MDAzZXdjbnRbQlRDX1dDTlRfUkZLX0dPXSxcbiYjNDM7XHRcdFx0ICAgICAgIHdsLVx1MDAzZXdjbnRbQlRDX1dDTlRfUkZLX1JFSkVDVF0sXG4mIzQzO1x0XHRcdCAgICAgICB3bC1cdTAwM2V3Y250W0JUQ19XQ05UX1JGS19USU1FT1VUXSxcbiBcdFx0XHQgICAgICAgd2wtXHUwMDNlcmZrX2luZm8ucHJvY190aW1lKTtcbiBcbiBcdFx0cCAmIzQzOz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsIFwmIzM0OywgYnRfcmZrW3JlcTolZF1cJiMzNDssXG5AQCAtMTE4ODYsNyAmIzQzOzEyMDQ3LDcgQEAgdm9pZCBydHc4OV9jb2V4X3JlY29nbml6ZV92ZXIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuIFxuIHZvaWQgcnR3ODlfYnRjX250ZnlfcHJlc2VydmVfYnRfdGltZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiBtcylcbiB7XG4tXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2xpbmtfaW5mbyAqYnRfbGluZm8gPSBcdTAwMjZydHdkZXYtXHUwMDNlYnRjLmN4LmJ0LmxpbmtfaW5mbztcbiYjNDM7XHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2xpbmtfaW5mbyAqYnRfbGluZm8gPSBcdTAwMjZydHdkZXYtXHUwMDNlYnRjLmN4LmJ0MC5saW5rX2luZm87XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2EyZHBfZGVzYyBhMmRwID0gYnRfbGluZm8tXHUwMDNlYTJkcF9kZXNjO1xuIFxuIFx0aWYgKHRlc3RfYml0KFJUVzg5X0ZMQUdfU0VSX0hBTkRMSU5HLCBydHdkZXYtXHUwMDNlZmxhZ3MpKVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmhcbmluZGV4IGVhMmMxZTVkNzBmNTE4Li42YWMxNDYxMTYwN2M5NSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguaFxuQEAgLTMyOSw3ICYjNDM7MzI5LDcgQEAgc3RhdGljIGlubGluZSB1MTYgcnR3ODlfY29leF9xdWVyeV9idF9yZXFfbGVuKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbiB7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcdTAwMjZydHdkZXYtXHUwMDNlYnRjO1xuIFxuLVx0cmV0dXJuIGJ0Yy1cdTAwM2VidF9yZXFfbGVuO1xuJiM0MztcdHJldHVybiBidGMtXHUwMDNlYnRfcmVxX2xlbltwaHlfaWR4XTtcbiB9XG4gXG4gc3RhdGljIGlubGluZSB1MzIgcnR3ODlfZ2V0X2FudHBhdGhfdHlwZSh1OCBwaHlfbWFwLCB1OCB0eXBlKVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmhcbmluZGV4IDU1NDc4ODhkN2U2N2E0Li42OTQ3ZjRjMmMyNWQ4YiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaFxuQEAgLTE0NDUsNiAmIzQzOzE0NDUsMTIgQEAgZW51bSBydHc4OV9idGNfYnRfc3RhdGVfY250IHtcbiBcdEJUQ19CQ05UX05VTSxcbiB9O1xuIFxuJiM0MztlbnVtIHJ0dzg5X2J0Y19idF9yZl9iYW5kIHtcbiYjNDM7XHRCVENfQlRfQjJHID0gMHgwLCAvKiAyLjRHSHogKi9cbiYjNDM7XHRCVENfQlRfQjVHID0gMHgxLCAvKiA1R0h6IG9yIDZHSHogKi9cbiYjNDM7XHRCVENfQlRfQk1BWCA9IDB4MlxuJiM0Mzt9O1xuJiM0MztcbiBlbnVtIHJ0dzg5X2J0Y19idF9wcm9maWxlIHtcbiBcdEJUQ19CVF9OT1BST0ZJTEUgPSAwLFxuIFx0QlRDX0JUX0hGUCA9IEJJVCgwKSxcbkBAIC0xOTc1LDEwICYjNDM7MTk4MSwyNSBAQCBzdHJ1Y3QgcnR3ODlfYnRjX2J0X2xpbmtfaW5mbyB7XG4gXHR1MzIgcnN2ZDogMTk7XG4gfTtcbiBcbi1zdHJ1Y3QgcnR3ODlfYnRjXzNyZGN4X2luZm8ge1xuLVx0dTggdHlwZTsgICAvKiAwOiBub25lLCAxOnppZ2JlZSwgMjpMVEUgICovXG4tXHR1OCBod19jb2V4O1xuLVx0dTE2IHJzdmQ7XG4mIzQzO3N0cnVjdCBydHc4OV9idGNfZXh0c29jX2luZm8ge1xuJiM0MztcdHU4IGNoaXBfaWQ7XG4mIzQzO1x0dTggbWF4X3R4X3B3cjtcbiYjNDM7XHR1OCByZl9iYW5kX21hcDtcbiYjNDM7XHR1OCBhbnRfaXNvX3RvX3dsO1xuJiM0MztcbiYjNDM7XHR1OCBsaW5rX3dlaWdodFtCVENfQlRfQk1BWF07XG4mIzQzO1xuJiM0MztcdHU4IGZ1bmNfdHlwZTsgLyogMDogbm9uZSwgMTp6aWdiZWUsIDI6TFRFICovXG4mIzQzO1x0dTggaHdfY29leDsgLyogSGFyZC1XaXJlIGNvZXggaW50ZXJmYWNlIHN1cHBvcnQgKi9cbiYjNDM7XHR1OCBwdGFfdHlwZTsgLyogMDogUlRLIDQtd2lyZSBtb2RlLCAxOiAzLXdpcmUgbW9kZSAqL1xuJiM0MztcdHU4IHB0YV9yZXFfZXhpc3Q7XG4mIzQzO1xuJiM0MztcdHUzMiBocHRhX2NmZztcbiYjNDM7XHR1MzIgaG1ieF9jZmc7XG4mIzQzO1x0dTMyIHN3b3V0X2NmZztcbiYjNDM7XHR1MzIgc3dpbl9jZmc7XG4mIzQzO1x0dTMyIHByb2ZpbGVfbWFwW0JUQ19CVF9CTUFYXTtcbiYjNDM7XHR1MzIgYmNudFtCVENfQkNOVF9OVU1dO1xuIH07XG4gXG4gc3RydWN0IHJ0dzg5X2J0Y19kbV9lbWFwIHtcbkBAIC0yMDc4LDYgJiM0MzsyMDk5LDcgQEAgc3RydWN0IHJ0dzg5X2J0Y193bF9pbmZvIHtcbiBcdGJvb2wgbGlua19tb2RlX2NoZztcbiBcdGJvb2wgZGJjY19jaGc7XG4gXHR1MzIgc2NiZDtcbiYjNDM7XHR1MzIgd2NudFtCVENfV0NOVF9OVU1dO1xuIH07XG4gXG4gc3RydWN0IHJ0dzg5X2J0Y19tb2R1bGUge1xuQEAgLTIyNDksNiAmIzQzOzIyNzEsMTYgQEAgc3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvIHtcbiBcdHUzMiBzY2FuX2luZm9fdXBkYXRlOiAxO1xuIFx0dTMyIGxuYV9jb25zdHJhaW46IDM7XG4gXHR1MzIgcnN2ZDogMTc7XG4mIzQzO1xuJiM0MztcdHUzMiBiY250W0JUQ19CQ05UX05VTV07XG4mIzQzO307XG4mIzQzO1xuJiM0MzsjZGVmaW5lIFJUVzg5X0JUQ19XTF9ERUZfVFhfUFdSIEdFTk1BU0soNywgMClcbiYjNDM7c3RydWN0IHJ0dzg5X2J0Y19yZl90cnhfcGFyYV92MCB7XG4mIzQzO1x0dTMyIHdsX3R4X3Bvd2VyOyAvKiBhYnNvbHV0ZSBUeCBwb3dlciAoZEJtKSwgMHhmZi1cdTAwM2Ugbm8gQlRDIGNvbnRyb2wgKi9cbiYjNDM7XHR1MzIgd2xfcnhfZ2FpbjsgIC8qIHJ4IGdhaW4gdGFibGUgaW5kZXggKFRCRC4pICovXG4mIzQzO1x0dTggYnRfdHhfcG93ZXI7IC8qIGRlY3JlYXNlIFR4IHBvd2VyIChkQikgKi9cbiYjNDM7XHR1OCBidF9yeF9nYWluOyAgLyogTE5BIGNvbnN0cmFpbiBsZXZlbCAqL1xuIH07XG4gXG4gc3RydWN0IHJ0dzg5X2J0Y19yZl90cnhfcGFyYV92OSB7XG5AQCAtMjI2MiwxMSAmIzQzOzIyOTQsMTEgQEAgc3RydWN0IHJ0dzg5X2J0Y19yZl90cnhfcGFyYV92OSB7XG4gXG4gc3RydWN0IHJ0dzg5X2J0Y19jeCB7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX2luZm8gd2w7XG4tXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gYnQ7XG4tXHRzdHJ1Y3QgcnR3ODlfYnRjXzNyZGN4X2luZm8gb3RoZXI7XG4mIzQzO1x0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvIGJ0MDtcbiYjNDM7XHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gYnQxO1xuJiM0MztcdHN0cnVjdCBydHc4OV9idGNfZXh0c29jX2luZm8gYnRfZXh0O1xuJiM0MztcdHN0cnVjdCBydHc4OV9idGNfcmZfdHJ4X3BhcmFfdjkgcmZfcGFyYTtcbiBcdHUzMiBzdGF0ZV9tYXA7XG4tXHR1MzIgY250X2J0W0JUQ19CQ05UX05VTV07XG4tXHR1MzIgY250X3dsW0JUQ19XQ05UX05VTV07XG4gfTtcbiBcbiBzdHJ1Y3QgcnR3ODlfYnRjX2ZidGNfdGRtYSB7XG5AQCAtMzA0NSwyNCAmIzQzOzMwNzcsMTggQEAgc3RydWN0IHJ0dzg5X2J0Y19mYnRjX2J0ZGV2aW5mbyB7XG4gXHRfX2xlMzIgZmx1c2hfdGltZTtcbiB9IF9fcGFja2VkO1xuIFxuLSNkZWZpbmUgUlRXODlfQlRDX1dMX0RFRl9UWF9QV1IgR0VOTUFTSyg3LCAwKVxuLXN0cnVjdCBydHc4OV9idGNfcmZfdHJ4X3BhcmEge1xuLVx0dTMyIHdsX3R4X3Bvd2VyOyAvKiBhYnNvbHV0ZSBUeCBwb3dlciAoZEJtKSwgMHhmZi1cdTAwM2Ugbm8gQlRDIGNvbnRyb2wgKi9cbi1cdHUzMiB3bF9yeF9nYWluOyAgLyogcnggZ2FpbiB0YWJsZSBpbmRleCAoVEJELikgKi9cbi1cdHU4IGJ0X3R4X3Bvd2VyOyAvKiBkZWNyZWFzZSBUeCBwb3dlciAoZEIpICovXG4tXHR1OCBidF9yeF9nYWluOyAgLyogTE5BIGNvbnN0cmFpbiBsZXZlbCAqL1xuLX07XG4tXG4gc3RydWN0IHJ0dzg5X2J0Y190cnhfaW5mbyB7XG4gXHR1OCB0eF9sdmw7XG4gXHR1OCByeF9sdmw7XG4gXHR1OCB3bF9yc3NpO1xuIFx0dTggYnRfcnNzaTtcbiBcbi1cdHM4IHR4X3Bvd2VyOyAvKiBhYnNvbHV0ZSBUeCBwb3dlciAoZEJtKSwgMHhmZi1cdTAwM2Ugbm8gQlRDIGNvbnRyb2wgKi9cbi1cdHM4IHJ4X2dhaW47ICAvKiByeCBnYWluIHRhYmxlIGluZGV4IChUQkQuKSAqL1xuLVx0czggYnRfdHhfcG93ZXI7IC8qIGRlY3JlYXNlIFR4IHBvd2VyIChkQikgKi9cbi1cdHM4IGJ0X3J4X2dhaW47ICAvKiBMTkEgY29uc3RyYWluIGxldmVsICovXG4mIzQzO1x0czggd2xfdHhfcG93ZXJbUlRXODlfUEhZX05VTV07IC8qIGFic29sdXRlIFR4IHBvd2VyIChkQm0pLCAweGZmLVx1MDAzZSBubyBCVEMgY29udHJvbCAqL1xuJiM0MztcdHM4IHdsX3J4X2dhaW5bUlRXODlfUEhZX05VTV07ICAvKiByeCBnYWluIHRhYmxlIGluZGV4IChUQkQuKSAqL1xuJiM0MztcdHM4IGJ0X3R4X3Bvd2VyW0JUQ19BTExfQlRdOyAvKiBkZWNyZWFzZSBUeCBwb3dlciAoZEIpICovXG4mIzQzO1x0czggYnRfcnhfZ2FpbltCVENfQUxMX0JUXTsgIC8qIExOQSBjb25zdHJhaW4gbGV2ZWwgKi9cbiYjNDM7XHRzOCB6Yl90eF9wb3dlcltCVENfQUxMX0JUXTtcbiYjNDM7XHRzOCB6Yl9yeF9nYWluW0JUQ19BTExfQlRdO1xuIFxuIFx0dTggY247IC8qIGNvbmRpdGlvbl9udW0gKi9cbiBcdHM4IG5obTtcbkBAIC0zMTA5LDcgJiM0MzszMTM1LDcgQEAgc3RydWN0IHJ0dzg5X2J0Y19kbSB7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX2ZidGNfdGRtYSB0ZG1hX25vdztcbiBcdHN0cnVjdCBydHc4OV9tYWNfYXhfY29leF9nbnQgZ250O1xuIFx0dW5pb24gcnR3ODlfYnRjX2luaXRfaW5mb191IGluaXRfaW5mbzsgLyogcGFzcyB0byB3bF9mdyBpZiBvZmZsb2FkICovXG4tXHRzdHJ1Y3QgcnR3ODlfYnRjX3JmX3RyeF9wYXJhIHJmX3RyeF9wYXJhO1xuJiM0MztcdHN0cnVjdCBydHc4OV9idGNfcmZfdHJ4X3BhcmFfdjkgcmZfdHJ4X3BhcmE7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX3R4X2xpbWl0X3BhcmEgd2xfdHhfbGltaXQ7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX2RtX3N0ZXAgZG1fc3RlcDtcbiBcdHN0cnVjdCBydHc4OV9idGNfd2xfc2NjX2N0cmwgd2xfc2NjO1xuQEAgLTMxNDYsNiAmIzQzOzMxNzIsNyBAQCBzdHJ1Y3QgcnR3ODlfYnRjX2RtIHtcbiBcbiBcdHU4IHJ1bl9yZWFzb247XG4gXHR1OCBydW5fYWN0aW9uO1xuJiM0MztcdHU4IHdsX3R4X3B3cl9waHlfbWFwO1xuIFxuIFx0dTggd2xfcHJlX2FnYzogMjtcbiBcdHU4IHdsX2xuYTI6IDE7XG5AQCAtMzE1Myw2ICYjNDM7MzE4MCwxMCBAQCBzdHJ1Y3QgcnR3ODlfYnRjX2RtIHtcbiBcdHU4IHdsX3ByZV9hZ2NfcmI6IDI7XG4gXHR1OCBidF9zZWxlY3Q6IDI7IC8qIDA6czAsIDE6czEsIDI6czAgXHUwMDI2IHMxLCByZWZlciB0byBlbnVtIGJ0Y19idF9pbmRleCAqL1xuIFx0dTggc2xvdF9yZXFfbW9yZTogMTtcbiYjNDM7XHR1OCBscHNfY3RybF9zY2JkOiAxO1xuJiM0MztcbiYjNDM7XHR1OCBscHNfY3RybF9zY2JkX2xhc3Q6IDE7XG4mIzQzO1x0dTggbHBzX2N0cmxfY2hhbmdlOiAxO1xuIH07XG4gXG4gc3RydWN0IHJ0dzg5X2J0Y19jdHJsIHtcbkBAIC0zMTkzLDYgJiM0MzszMjI0LDkgQEAgZW51bSBydHc4OV9idGNfYnRmX2Z3X2V2ZW50IHtcbiBcdEJURl9FVk5UX0JVRl9PVkVSRkxPVyxcbiBcdEJURl9FVk5UX0MySF9MT09QQkFDSyxcbiBcdEJURl9FVk5UX0JUX1FVRVJZX1RYUFdSLCAvKiBmd2MyaGZ1bmMgXHUwMDNlIDMgKi9cbiYjNDM7XHRCVEZfRVZOVF9aQl9JTkZPID0gMTEsXG4mIzQzO1x0QlRGX0VWTlRfWkJfQ0ggPSAxMixcbiYjNDM7XHRCVEZfRVZOVF9aQl9RVUVSWV9UWFBXUiA9IDEzLFxuIFx0QlRGX0VWTlRfTUFYLFxuIH07XG4gXG5AQCAtMzMzNCwxMiAmIzQzOzMzNjgsMTMgQEAgc3RydWN0IHJ0dzg5X2J0Y192ZXIge1xuIFxuIFx0dTggZndldm50cnB0bDtcbiBcdHU4IGZ3YzJoZnVuYztcbi1cdHU4IGRydmluZm9fdHlwZTtcbiYjNDM7XHR1OCBkcnZpbmZvX3ZlcjtcbiBcdHUxNiBpbmZvX2J1ZjtcbiBcdHU4IG1heF9yb2xlX251bTtcbiBcdHU4IGZjeG9zaTtcbiBcdHU4IGZjeG1sbztcbiBcdHU4IGJ0X2Rlc2lyZWQ7XG4mIzQzO1x0dTggZmN4dHJ4O1xuIH07XG4gXG4gc3RydWN0IHJ0dzg5X2J0Y19idGZfZndpbmZvIHtcbkBAIC0zMzg1LDcgJiM0MzszNDIwLDcgQEAgc3RydWN0IHJ0dzg5X2J0YyB7XG4gXHRzdHJ1Y3Qgd2lwaHlfd29yayBkaGNwX25vdGlmeV93b3JrO1xuIFx0c3RydWN0IHdpcGh5X3dvcmsgaWNtcF9ub3RpZnlfd29yaztcbiBcbi1cdHUzMiBidF9yZXFfbGVuO1xuJiM0MztcdHUzMiBidF9yZXFfbGVuW1JUVzg5X1BIWV9OVU1dO1xuIFxuIFx0dTggcG9saWN5W1JUVzg5X0JUQ19QT0xJQ1lfTUFYTEVOXTtcbiBcdHU4IGFudF90eXBlO1xuQEAgLTMzOTcsNiAmIzQzOzM0MzIsNyBAQCBzdHJ1Y3QgcnR3ODlfYnRjIHtcbiBcdGJvb2wgdXBkYXRlX3BvbGljeV9mb3JjZTtcbiBcdGJvb2wgbHBzO1xuIFx0Ym9vbCBtYW51YWxfY3RybDtcbiYjNDM7XHRib29sIGNsaV9oMmNfY21kO1xuIH07XG4gXG4gZW51bSBydHc4OV9idGNfaG1zZyB7XG5AQCAtNDc0NSwxMCAmIzQzOzQ3ODEsMTAgQEAgc3RydWN0IHJ0dzg5X2NoaXBfaW5mbyB7XG4gXG4gXHR1OCBtb25fcmVnX251bTtcbiBcdGNvbnN0IHN0cnVjdCBydHc4OV9idGNfZmJ0Y19tcmVnICptb25fcmVnO1xuLVx0dTggcmZfcGFyYV91bGlua19udW07XG4tXHRjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3JmX3RyeF9wYXJhICpyZl9wYXJhX3VsaW5rO1xuLVx0dTggcmZfcGFyYV9kbGlua19udW07XG4tXHRjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3JmX3RyeF9wYXJhICpyZl9wYXJhX2RsaW5rO1xuJiM0MztcdGNvbnN0IHN0cnVjdCBydHc4OV9idGNfcmZfdHJ4X3BhcmFfdjAgKnJmX3BhcmFfdWxpbmtfdjA7XG4mIzQzO1x0Y29uc3Qgc3RydWN0IHJ0dzg5X2J0Y19yZl90cnhfcGFyYV92MCAqcmZfcGFyYV9kbGlua192MDtcbiYjNDM7XHR1OCByZl9wYXJhX3VsaW5rX251bV92MDtcbiYjNDM7XHR1OCByZl9wYXJhX2RsaW5rX251bV92MDtcbiBcdGNvbnN0IHN0cnVjdCBydHc4OV9idGNfcmZfdHJ4X3BhcmFfdjkgKnJmX3BhcmFfdWxpbmtfdjk7XG4gXHRjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3JmX3RyeF9wYXJhX3Y5ICpyZl9wYXJhX2RsaW5rX3Y5O1xuIFx0dTggcmZfcGFyYV91bGlua19udW1fdjk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jXG5pbmRleCBkNmE1OTRiNzVhYjIwMi4uODA0YWUyYTExMzBkMGYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuY1xuQEAgLTYzMDMsNDggJiM0Mzs2MzAzLDE1OCBAQCBpbnQgcnR3ODlfZndfaDJjX2N4ZHJ2X2N0cmxfdjcoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCB0eXBlKVxuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG4tI2RlZmluZSBIMkNfTEVOX0NYRFJWSU5GT19UUlggKDI4ICYjNDM7IEgyQ19MRU5fQ1hEUlZIRFIpXG4taW50IHJ0dzg5X2Z3X2gyY19jeGRydl90cngoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCB0eXBlKVxuJiM0MztpbnQgcnR3ODlfZndfaDJjX2N4ZHJ2X3RyeF92NyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHR5cGUpXG4ge1xuIFx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXHUwMDI2cnR3ZGV2LVx1MDAzZWJ0YztcbiYjNDM7XHRzdHJ1Y3QgcnR3ODlfYnRjX3JmX3RyeF9wYXJhX3Y5IHJmX3BhcmEgPSBidGMtXHUwMDNlZG0ucmZfdHJ4X3BhcmE7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX3RyeF9pbmZvICp0cnggPSBcdTAwMjZidGMtXHUwMDNlZG0udHJ4X2luZm87XG4mIzQzO1x0c3RydWN0IHJ0dzg5X2J0Y193bF9pbmZvICp3bCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC53bDtcbiYjNDM7XHRzdHJ1Y3QgcnR3ODlfaDJjX2N4dHJ4X3Y3ICpoMmM7XG4mIzQzO1x0dTMyIGxlbiA9IHNpemVvZigqaDJjKTtcbiBcdHN0cnVjdCBza19idWZmICpza2I7XG4tXHR1OCAqY21kO1xuIFx0aW50IHJldDtcbiYjNDM7XHR1OCBpO1xuIFxuLVx0c2tiID0gcnR3ODlfZndfaDJjX2FsbG9jX3NrYl93aXRoX2hkcihydHdkZXYsIEgyQ19MRU5fQ1hEUlZJTkZPX1RSWCk7XG4mIzQzO1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgUlRXODlfUEhZX05VTTsgaSYjNDM7JiM0MzspIHtcbiYjNDM7XHRcdHRyeC1cdTAwM2V3bF90eF9wb3dlcltpXSA9IHUzMl9nZXRfYml0cyhyZl9wYXJhLndsX3R4X3Bvd2VyW2ldLFxuJiM0MztcdFx0XHRcdFx0XHQgICBSVFc4OV9CVENfV0xfREVGX1RYX1BXUik7XG4mIzQzO1x0XHR0cngtXHUwMDNld2xfcnhfZ2FpbltpXSA9IHUzMl9nZXRfYml0cyhyZl9wYXJhLndsX3J4X2dhaW5baV0sXG4mIzQzO1x0XHRcdFx0XHRcdCAgUlRXODlfQlRDX1dMX0RFRl9UWF9QV1IpO1xuJiM0MztcdH1cbiYjNDM7XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBCVENfQUxMX0JUOyBpJiM0MzsmIzQzOykge1xuJiM0MztcdFx0dHJ4LVx1MDAzZWJ0X3R4X3Bvd2VyW2ldID0gdTMyX2dldF9iaXRzKHJmX3BhcmEuYnRfdHhfcG93ZXJbaV0sXG4mIzQzO1x0XHRcdFx0XHRcdCAgIFJUVzg5X0JUQ19XTF9ERUZfVFhfUFdSKTtcbiYjNDM7XHRcdHRyeC1cdTAwM2VidF9yeF9nYWluW2ldID0gdTMyX2dldF9iaXRzKHJmX3BhcmEuYnRfcnhfZ2FpbltpXSxcbiYjNDM7XHRcdFx0XHRcdFx0ICBSVFc4OV9CVENfV0xfREVGX1RYX1BXUik7XG4mIzQzO1x0XHR0cngtXHUwMDNlemJfdHhfcG93ZXJbaV0gPSB1MzJfZ2V0X2JpdHMocmZfcGFyYS56Yl90eF9wb3dlcltpXSxcbiYjNDM7XHRcdFx0XHRcdFx0ICAgUlRXODlfQlRDX1dMX0RFRl9UWF9QV1IpO1xuJiM0MztcdFx0dHJ4LVx1MDAzZXpiX3J4X2dhaW5baV0gPSB1MzJfZ2V0X2JpdHMocmZfcGFyYS56Yl9yeF9nYWluW2ldLFxuJiM0MztcdFx0XHRcdFx0XHQgIFJUVzg5X0JUQ19XTF9ERUZfVFhfUFdSKTtcbiYjNDM7XHR9XG4mIzQzO1x0dHJ4LVx1MDAzZWNuID0gd2wtXHUwMDNlY25fcmVwb3J0O1xuJiM0MztcdHRyeC1cdTAwM2VuaG0gPSB3bC1cdTAwM2VuaG0ucHdyO1xuJiM0MztcbiYjNDM7XHRza2IgPSBydHc4OV9md19oMmNfYWxsb2Nfc2tiX3dpdGhfaGRyKHJ0d2RldiwgbGVuKTtcbiBcdGlmICghc2tiKSB7XG4tXHRcdHJ0dzg5X2VycihydHdkZXYsIFwmIzM0O2ZhaWxlZCB0byBhbGxvYyBza2IgZm9yIGgyYyBjeGRydl90cnhcXG5cJiMzNDspO1xuJiM0MztcdFx0cnR3ODlfZXJyKHJ0d2RldiwgXCYjMzQ7ZmFpbGVkIHRvIGFsbG9jIHNrYiBmb3IgaDJjIGN4dHJ4X3Y5XFxuXCYjMzQ7KTtcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXHR9XG4tXHRza2JfcHV0KHNrYiwgSDJDX0xFTl9DWERSVklORk9fVFJYKTtcbi1cdGNtZCA9IHNrYi1cdTAwM2VkYXRhO1xuJiM0MztcdHNrYl9wdXQoc2tiLCBsZW4pO1xuJiM0MztcdGgyYyA9IChzdHJ1Y3QgcnR3ODlfaDJjX2N4dHJ4X3Y3ICopc2tiLVx1MDAzZWRhdGE7XG4gXG4tXHRSVFc4OV9TRVRfRldDTURfQ1hIRFJfVFlQRShjbWQsIHR5cGUpO1xuLVx0UlRXODlfU0VUX0ZXQ01EX0NYSERSX0xFTihjbWQsIEgyQ19MRU5fQ1hEUlZJTkZPX1RSWCAtIEgyQ19MRU5fQ1hEUlZIRFIpO1xuLVxuLVx0UlRXODlfU0VUX0ZXQ01EX0NYVFJYX1RYTFYoY21kLCB0cngtXHUwMDNldHhfbHZsKTtcbi1cdFJUVzg5X1NFVF9GV0NNRF9DWFRSWF9SWExWKGNtZCwgdHJ4LVx1MDAzZXJ4X2x2bCk7XG4tXHRSVFc4OV9TRVRfRldDTURfQ1hUUlhfV0xSU1NJKGNtZCwgdHJ4LVx1MDAzZXdsX3Jzc2kpO1xuLVx0UlRXODlfU0VUX0ZXQ01EX0NYVFJYX0JUUlNTSShjbWQsIHRyeC1cdTAwM2VidF9yc3NpKTtcbi1cdFJUVzg5X1NFVF9GV0NNRF9DWFRSWF9UWFBXUihjbWQsIHRyeC1cdTAwM2V0eF9wb3dlcik7XG4tXHRSVFc4OV9TRVRfRldDTURfQ1hUUlhfUlhHQUlOKGNtZCwgdHJ4LVx1MDAzZXJ4X2dhaW4pO1xuLVx0UlRXODlfU0VUX0ZXQ01EX0NYVFJYX0JUVFhQV1IoY21kLCB0cngtXHUwMDNlYnRfdHhfcG93ZXIpO1xuLVx0UlRXODlfU0VUX0ZXQ01EX0NYVFJYX0JUUlhHQUlOKGNtZCwgdHJ4LVx1MDAzZWJ0X3J4X2dhaW4pO1xuLVx0UlRXODlfU0VUX0ZXQ01EX0NYVFJYX0NOKGNtZCwgdHJ4LVx1MDAzZWNuKTtcbi1cdFJUVzg5X1NFVF9GV0NNRF9DWFRSWF9OSE0oY21kLCB0cngtXHUwMDNlbmhtKTtcbi1cdFJUVzg5X1NFVF9GV0NNRF9DWFRSWF9CVFBST0ZJTEUoY21kLCB0cngtXHUwMDNlYnRfcHJvZmlsZSk7XG4tXHRSVFc4OV9TRVRfRldDTURfQ1hUUlhfUlNWRDIoY21kLCB0cngtXHUwMDNlcnN2ZDIpO1xuLVx0UlRXODlfU0VUX0ZXQ01EX0NYVFJYX1RYUkFURShjbWQsIHRyeC1cdTAwM2V0eF9yYXRlKTtcbi1cdFJUVzg5X1NFVF9GV0NNRF9DWFRSWF9SWFJBVEUoY21kLCB0cngtXHUwMDNlcnhfcmF0ZSk7XG4tXHRSVFc4OV9TRVRfRldDTURfQ1hUUlhfVFhUUChjbWQsIHRyeC1cdTAwM2V0eF90cCk7XG4tXHRSVFc4OV9TRVRfRldDTURfQ1hUUlhfUlhUUChjbWQsIHRyeC1cdTAwM2VyeF90cCk7XG4tXHRSVFc4OV9TRVRfRldDTURfQ1hUUlhfUlhFUlJSQShjbWQsIHRyeC1cdTAwM2VyeF9lcnJfcmF0aW8pO1xuJiM0MztcdGgyYy1cdTAwM2VoZHIudHlwZSA9IHR5cGU7XG4mIzQzO1x0aDJjLVx1MDAzZWhkci52ZXIgPSBidGMtXHUwMDNldmVyLVx1MDAzZWZjeHRyeDtcbiYjNDM7XHRoMmMtXHUwMDNlaGRyLmxlbiA9IHNpemVvZigqaDJjKSAtIEgyQ19MRU5fQ1hEUlZIRFJfVjc7XG4mIzQzO1xuJiM0MztcdGgyYy1cdTAwM2V2N191OC50eF9sdmwgPSB0cngtXHUwMDNldHhfbHZsO1xuJiM0MztcdGgyYy1cdTAwM2V2N191OC5yeF9sdmwgPSB0cngtXHUwMDNlcnhfbHZsO1xuJiM0MztcdGgyYy1cdTAwM2V2N191OC53bF9yc3NpID0gdHJ4LVx1MDAzZXdsX3Jzc2k7XG4mIzQzO1x0aDJjLVx1MDAzZXY3X3U4LmJ0X3Jzc2kgPSB0cngtXHUwMDNlYnRfcnNzaTtcbiYjNDM7XHRoMmMtXHUwMDNldjdfdTgud2xfdHhfcG93ZXIgPSB0cngtXHUwMDNld2xfdHhfcG93ZXJbUlRXODlfUEhZXzBdO1xuJiM0MztcdGgyYy1cdTAwM2V2N191OC53bF9yeF9nYWluID0gdHJ4LVx1MDAzZXdsX3J4X2dhaW5bUlRXODlfUEhZXzBdO1xuJiM0MztcdGgyYy1cdTAwM2V2N191OC5idF90eF9wb3dlciA9IHRyeC1cdTAwM2VidF90eF9wb3dlcltCVENfQlRfMVNUXTtcbiYjNDM7XHRoMmMtXHUwMDNldjdfdTguYnRfcnhfZ2FpbiA9IHRyeC1cdTAwM2VidF9yeF9nYWluW0JUQ19CVF8xU1RdO1xuJiM0MztcdGgyYy1cdTAwM2V2N191OC56Yl90eF9wb3dlciA9IHRyeC1cdTAwM2V6Yl90eF9wb3dlcltCVENfQlRfMVNUXTtcbiYjNDM7XHRoMmMtXHUwMDNldjdfdTguemJfcnhfZ2FpbiA9IHRyeC1cdTAwM2V6Yl9yeF9nYWluW0JUQ19CVF8xU1RdO1xuJiM0MztcdGgyYy1cdTAwM2V2N191OC5jbiA9IHRyeC1cdTAwM2VjbjtcbiYjNDM7XHRoMmMtXHUwMDNldjdfdTgubmhtID0gdHJ4LVx1MDAzZW5obTtcbiYjNDM7XHRoMmMtXHUwMDNldjdfdTguYnRfcHJvZmlsZSA9IHRyeC1cdTAwM2VidF9wcm9maWxlO1xuJiM0MztcdGgyYy1cdTAwM2V2N191OC5yc3ZkMiA9IHRyeC1cdTAwM2Vyc3ZkMjtcbiYjNDM7XHRoMmMtXHUwMDNldjdfbGUudHhfcmF0ZSA9IGNwdV90b19sZTE2KHRyeC1cdTAwM2V0eF9yYXRlKTtcbiYjNDM7XHRoMmMtXHUwMDNldjdfbGUucnhfcmF0ZSA9IGNwdV90b19sZTE2KHRyeC1cdTAwM2VyeF9yYXRlKTtcbiYjNDM7XHRoMmMtXHUwMDNldjdfbGUudHhfdHAgPSBjcHVfdG9fbGUzMih0cngtXHUwMDNldHhfdHApO1xuJiM0MztcdGgyYy1cdTAwM2V2N19sZS5yeF90cCA9IGNwdV90b19sZTMyKHRyeC1cdTAwM2VyeF90cCk7XG4mIzQzO1x0aDJjLVx1MDAzZXY3X2xlLnJ4X2Vycl9yYXRpbyA9IGNwdV90b19sZTMyKHRyeC1cdTAwM2VyeF9lcnJfcmF0aW8pO1xuIFxuIFx0cnR3ODlfaDJjX3BrdF9zZXRfaGRyKHJ0d2Rldiwgc2tiLCBGV0NNRF9UWVBFX0gyQyxcbiBcdFx0XHQgICAgICBIMkNfQ0FUX09VVFNSQywgQlRGQ19TRVQsXG4tXHRcdFx0ICAgICAgU0VUX0RSVl9JTkZPLCAwLCAwLFxuLVx0XHRcdCAgICAgIEgyQ19MRU5fQ1hEUlZJTkZPX1RSWCk7XG4mIzQzO1x0XHRcdCAgICAgIFNFVF9EUlZfSU5GTywgMCwgMCwgbGVuKTtcbiYjNDM7XG4mIzQzO1x0cmV0ID0gcnR3ODlfaDJjX3R4KHJ0d2Rldiwgc2tiLCBmYWxzZSk7XG4mIzQzO1x0aWYgKHJldCkge1xuJiM0MztcdFx0cnR3ODlfZXJyKHJ0d2RldiwgXCYjMzQ7ZmFpbGVkIHRvIHNlbmQgaDJjXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdGdvdG8gZmFpbDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuJiM0MztmYWlsOlxuJiM0MztcdGRldl9rZnJlZV9za2JfYW55KHNrYik7XG4mIzQzO1xuJiM0MztcdHJldHVybiByZXQ7XG4mIzQzO31cbiYjNDM7XG4mIzQzO2ludCBydHc4OV9md19oMmNfY3hkcnZfdHJ4X3Y5KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggdHlwZSlcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBydHc4OV9idGMgKmJ0YyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2VidGM7XG4mIzQzO1x0c3RydWN0IHJ0dzg5X2J0Y19yZl90cnhfcGFyYV92OSByZl9wYXJhID0gYnRjLVx1MDAzZWRtLnJmX3RyeF9wYXJhO1xuJiM0MztcdHN0cnVjdCBydHc4OV9idGNfdHJ4X2luZm8gKnRyeCA9IFx1MDAyNmJ0Yy1cdTAwM2VkbS50cnhfaW5mbztcbiYjNDM7XHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX2luZm8gKndsID0gXHUwMDI2YnRjLVx1MDAzZWN4LndsO1xuJiM0MztcdHN0cnVjdCBydHc4OV9oMmNfY3h0cnhfdjkgKmgyYztcbiYjNDM7XHR1MzIgbGVuID0gc2l6ZW9mKCpoMmMpO1xuJiM0MztcdHN0cnVjdCBza19idWZmICpza2I7XG4mIzQzO1x0aW50IHJldDtcbiYjNDM7XHR1OCBpO1xuJiM0MztcbiYjNDM7XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBSVFc4OV9QSFlfTlVNOyBpJiM0MzsmIzQzOykge1xuJiM0MztcdFx0dHJ4LVx1MDAzZXdsX3R4X3Bvd2VyW2ldID0gdTMyX2dldF9iaXRzKHJmX3BhcmEud2xfdHhfcG93ZXJbaV0sXG4mIzQzO1x0XHRcdFx0XHRcdCAgIFJUVzg5X0JUQ19XTF9ERUZfVFhfUFdSKTtcbiYjNDM7XHRcdHRyeC1cdTAwM2V3bF9yeF9nYWluW2ldID0gdTMyX2dldF9iaXRzKHJmX3BhcmEud2xfcnhfZ2FpbltpXSxcbiYjNDM7XHRcdFx0XHRcdFx0ICBSVFc4OV9CVENfV0xfREVGX1RYX1BXUik7XG4mIzQzO1x0fVxuJiM0MztcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEJUQ19BTExfQlQ7IGkmIzQzOyYjNDM7KSB7XG4mIzQzO1x0XHR0cngtXHUwMDNlYnRfdHhfcG93ZXJbaV0gPSB1MzJfZ2V0X2JpdHMocmZfcGFyYS5idF90eF9wb3dlcltpXSxcbiYjNDM7XHRcdFx0XHRcdFx0ICAgUlRXODlfQlRDX1dMX0RFRl9UWF9QV1IpO1xuJiM0MztcdFx0dHJ4LVx1MDAzZWJ0X3J4X2dhaW5baV0gPSB1MzJfZ2V0X2JpdHMocmZfcGFyYS5idF9yeF9nYWluW2ldLFxuJiM0MztcdFx0XHRcdFx0XHQgIFJUVzg5X0JUQ19XTF9ERUZfVFhfUFdSKTtcbiYjNDM7XHRcdHRyeC1cdTAwM2V6Yl90eF9wb3dlcltpXSA9IHUzMl9nZXRfYml0cyhyZl9wYXJhLnpiX3R4X3Bvd2VyW2ldLFxuJiM0MztcdFx0XHRcdFx0XHQgICBSVFc4OV9CVENfV0xfREVGX1RYX1BXUik7XG4mIzQzO1x0XHR0cngtXHUwMDNlemJfcnhfZ2FpbltpXSA9IHUzMl9nZXRfYml0cyhyZl9wYXJhLnpiX3J4X2dhaW5baV0sXG4mIzQzO1x0XHRcdFx0XHRcdCAgUlRXODlfQlRDX1dMX0RFRl9UWF9QV1IpO1xuJiM0MztcdH1cbiYjNDM7XHR0cngtXHUwMDNlY24gPSB3bC1cdTAwM2Vjbl9yZXBvcnQ7XG4mIzQzO1x0dHJ4LVx1MDAzZW5obSA9IHdsLVx1MDAzZW5obS5wd3I7XG4mIzQzO1xuJiM0MztcdHNrYiA9IHJ0dzg5X2Z3X2gyY19hbGxvY19za2Jfd2l0aF9oZHIocnR3ZGV2LCBsZW4pO1xuJiM0MztcdGlmICghc2tiKSB7XG4mIzQzO1x0XHRydHc4OV9lcnIocnR3ZGV2LCBcJiMzNDtmYWlsZWQgdG8gYWxsb2Mgc2tiIGZvciBoMmMgY3h0cnhfdjlcXG5cJiMzNDspO1xuJiM0MztcdFx0cmV0dXJuIC1FTk9NRU07XG4mIzQzO1x0fVxuJiM0MztcdHNrYl9wdXQoc2tiLCBsZW4pO1xuJiM0MztcdGgyYyA9IChzdHJ1Y3QgcnR3ODlfaDJjX2N4dHJ4X3Y5ICopc2tiLVx1MDAzZWRhdGE7XG4mIzQzO1xuJiM0MztcdGgyYy1cdTAwM2VoZHIudHlwZSA9IHR5cGU7XG4mIzQzO1x0aDJjLVx1MDAzZWhkci52ZXIgPSBidGMtXHUwMDNldmVyLVx1MDAzZWZjeHRyeDtcbiYjNDM7XHRoMmMtXHUwMDNlaGRyLmxlbiA9IHNpemVvZigqaDJjKSAtIEgyQ19MRU5fQ1hEUlZIRFJfVjc7XG4mIzQzO1xuJiM0MztcdGgyYy1cdTAwM2V2OV91OC50eF9sdmwgPSB0cngtXHUwMDNldHhfbHZsO1xuJiM0MztcdGgyYy1cdTAwM2V2OV91OC5yeF9sdmwgPSB0cngtXHUwMDNlcnhfbHZsO1xuJiM0MztcdGgyYy1cdTAwM2V2OV91OC53bF9yc3NpID0gdHJ4LVx1MDAzZXdsX3Jzc2k7XG4mIzQzO1x0aDJjLVx1MDAzZXY5X3U4LmJ0X3Jzc2kgPSB0cngtXHUwMDNlYnRfcnNzaTtcbiYjNDM7XG4mIzQzO1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgUlRXODlfUEhZX05VTTsgaSYjNDM7JiM0MzspIHtcbiYjNDM7XHRcdGgyYy1cdTAwM2V2OV91OC53bF90eF9wb3dlcltpXSA9IHRyeC1cdTAwM2V3bF90eF9wb3dlcltpXTtcbiYjNDM7XHRcdGgyYy1cdTAwM2V2OV91OC53bF9yeF9nYWluW2ldID0gdHJ4LVx1MDAzZXdsX3J4X2dhaW5baV07XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBCVENfQUxMX0JUOyBpJiM0MzsmIzQzOykge1xuJiM0MztcdFx0aDJjLVx1MDAzZXY5X3U4LmJ0X3R4X3Bvd2VyW2ldID0gdHJ4LVx1MDAzZWJ0X3R4X3Bvd2VyW2ldO1xuJiM0MztcdFx0aDJjLVx1MDAzZXY5X3U4LmJ0X3J4X2dhaW5baV0gPSB0cngtXHUwMDNlYnRfcnhfZ2FpbltpXTtcbiYjNDM7XHRcdGgyYy1cdTAwM2V2OV91OC56Yl90eF9wb3dlcltpXSA9IHRyeC1cdTAwM2V6Yl90eF9wb3dlcltpXTtcbiYjNDM7XHRcdGgyYy1cdTAwM2V2OV91OC56Yl9yeF9nYWluW2ldID0gdHJ4LVx1MDAzZXpiX3J4X2dhaW5baV07XG4mIzQzO1x0fVxuJiM0MztcdGgyYy1cdTAwM2V2OV91OC5jbiA9IHRyeC1cdTAwM2VjbjtcbiYjNDM7XHRoMmMtXHUwMDNldjlfdTgubmhtID0gdHJ4LVx1MDAzZW5obTtcbiYjNDM7XHRoMmMtXHUwMDNldjlfdTguYnRfcHJvZmlsZSA9IHRyeC1cdTAwM2VidF9wcm9maWxlO1xuJiM0MztcdGgyYy1cdTAwM2V2OV91OC5yc3ZkMiA9IHRyeC1cdTAwM2Vyc3ZkMjtcbiYjNDM7XHRoMmMtXHUwMDNldjlfbGUudHhfcmF0ZSA9IGNwdV90b19sZTE2KHRyeC1cdTAwM2V0eF9yYXRlKTtcbiYjNDM7XHRoMmMtXHUwMDNldjlfbGUucnhfcmF0ZSA9IGNwdV90b19sZTE2KHRyeC1cdTAwM2VyeF9yYXRlKTtcbiYjNDM7XHRoMmMtXHUwMDNldjlfbGUudHhfdHAgPSBjcHVfdG9fbGUzMih0cngtXHUwMDNldHhfdHApO1xuJiM0MztcdGgyYy1cdTAwM2V2OV9sZS5yeF90cCA9IGNwdV90b19sZTMyKHRyeC1cdTAwM2VyeF90cCk7XG4mIzQzO1x0aDJjLVx1MDAzZXY5X2xlLnJ4X2Vycl9yYXRpbyA9IGNwdV90b19sZTMyKHRyeC1cdTAwM2VyeF9lcnJfcmF0aW8pO1xuJiM0MztcbiYjNDM7XHRydHc4OV9oMmNfcGt0X3NldF9oZHIocnR3ZGV2LCBza2IsIEZXQ01EX1RZUEVfSDJDLFxuJiM0MztcdFx0XHQgICAgICBIMkNfQ0FUX09VVFNSQywgQlRGQ19TRVQsXG4mIzQzO1x0XHRcdCAgICAgIFNFVF9EUlZfSU5GTywgMCwgMCwgbGVuKTtcbiBcbiBcdHJldCA9IHJ0dzg5X2gyY190eChydHdkZXYsIHNrYiwgZmFsc2UpO1xuIFx0aWYgKHJldCkge1xuQEAgLTY0MDQsNiAmIzQzOzY1MTQsOTAgQEAgaW50IHJ0dzg5X2Z3X2gyY19jeGRydl9yZmsoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCB0eXBlKVxuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG4mIzQzO2ludCBydHc4OV9md19oMmNfY3h0eHB3cl92NyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHR5cGUpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcdTAwMjZydHdkZXYtXHUwMDNlYnRjO1xuJiM0MztcdHN0cnVjdCBydHc4OV9idGNfZG0gKmRtID0gXHUwMDI2YnRjLVx1MDAzZWRtO1xuJiM0MztcdHN0cnVjdCBydHc4OV9idGNfcmZfdHJ4X3BhcmFfdjkgcnAgPSBkbS1cdTAwM2VyZl90cnhfcGFyYTtcbiYjNDM7XHRzdHJ1Y3QgcnR3ODlfaDJjX2N4dHhwd3JfdjcgKmgyYztcbiYjNDM7XHR1MzIgbGVuID0gc2l6ZW9mKCpoMmMpO1xuJiM0MztcdHN0cnVjdCBza19idWZmICpza2I7XG4mIzQzO1x0aW50IHJldDtcbiYjNDM7XG4mIzQzO1x0c2tiID0gcnR3ODlfZndfaDJjX2FsbG9jX3NrYl93aXRoX2hkcihydHdkZXYsIGxlbik7XG4mIzQzO1x0aWYgKCFza2IpIHtcbiYjNDM7XHRcdHJ0dzg5X2VycihydHdkZXYsIFwmIzM0O2ZhaWxlZCB0byBhbGxvYyBza2IgZm9yIGgyYyBjeGRydl9jdHJsXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdHJldHVybiAtRU5PTUVNO1xuJiM0MztcdH1cbiYjNDM7XHRza2JfcHV0KHNrYiwgbGVuKTtcbiYjNDM7XHRoMmMgPSAoc3RydWN0IHJ0dzg5X2gyY19jeHR4cHdyX3Y3ICopc2tiLVx1MDAzZWRhdGE7XG4mIzQzO1xuJiM0MztcdGgyYy1cdTAwM2VoZHIudHlwZSA9IHR5cGU7XG4mIzQzO1x0aDJjLVx1MDAzZWhkci52ZXIgPSBidGMtXHUwMDNldmVyLVx1MDAzZWZjeHRyeDtcbiYjNDM7XHRoMmMtXHUwMDNlaGRyLmxlbiA9IHNpemVvZigqaDJjKSAtIEgyQ19MRU5fQ1hEUlZIRFJfVjc7XG4mIzQzO1x0aDJjLVx1MDAzZXB3ciA9IHJwLndsX3R4X3Bvd2VyW1JUVzg5X1BIWV8wXSBcdTAwMjYgMHhmZjtcbiYjNDM7XG4mIzQzO1x0cnR3ODlfaDJjX3BrdF9zZXRfaGRyKHJ0d2Rldiwgc2tiLCBGV0NNRF9UWVBFX0gyQyxcbiYjNDM7XHRcdFx0ICAgICAgSDJDX0NBVF9PVVRTUkMsIEJURkNfU0VULFxuJiM0MztcdFx0XHQgICAgICBTRVRfRFJWX0lORk8sIDAsIDAsIGxlbik7XG4mIzQzO1xuJiM0MztcdHJldCA9IHJ0dzg5X2gyY190eChydHdkZXYsIHNrYiwgZmFsc2UpO1xuJiM0MztcdGlmIChyZXQpIHtcbiYjNDM7XHRcdHJ0dzg5X2VycihydHdkZXYsIFwmIzM0O2ZhaWxlZCB0byBzZW5kIGgyY1xcblwmIzM0Oyk7XG4mIzQzO1x0XHRnb3RvIGZhaWw7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7ZmFpbDpcbiYjNDM7XHRkZXZfa2ZyZWVfc2tiX2FueShza2IpO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gcmV0O1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztpbnQgcnR3ODlfZndfaDJjX2N4dHhwd3Jfdjkoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCB0eXBlKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXHUwMDI2cnR3ZGV2LVx1MDAzZWJ0YztcbiYjNDM7XHRzdHJ1Y3QgcnR3ODlfYnRjX2RtICpkbSA9IFx1MDAyNmJ0Yy1cdTAwM2VkbTtcbiYjNDM7XHRzdHJ1Y3QgcnR3ODlfYnRjX3JmX3RyeF9wYXJhX3Y5IHJwID0gZG0tXHUwMDNlcmZfdHJ4X3BhcmE7XG4mIzQzO1x0c3RydWN0IHJ0dzg5X2gyY19jeHR4cHdyX3Y5ICpoMmM7XG4mIzQzO1x0dTMyIGxlbiA9IHNpemVvZigqaDJjKTtcbiYjNDM7XHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuJiM0MztcdGludCByZXQ7XG4mIzQzO1xuJiM0MztcdHNrYiA9IHJ0dzg5X2Z3X2gyY19hbGxvY19za2Jfd2l0aF9oZHIocnR3ZGV2LCBsZW4pO1xuJiM0MztcdGlmICghc2tiKSB7XG4mIzQzO1x0XHRydHc4OV9lcnIocnR3ZGV2LCBcJiMzNDtmYWlsZWQgdG8gYWxsb2Mgc2tiIGZvciBoMmMgY3hkcnZfY3RybFxcblwmIzM0Oyk7XG4mIzQzO1x0XHRyZXR1cm4gLUVOT01FTTtcbiYjNDM7XHR9XG4mIzQzO1x0c2tiX3B1dChza2IsIGxlbik7XG4mIzQzO1x0aDJjID0gKHN0cnVjdCBydHc4OV9oMmNfY3h0eHB3cl92OSAqKXNrYi1cdTAwM2VkYXRhO1xuJiM0MztcbiYjNDM7XHRoMmMtXHUwMDNlaGRyLnR5cGUgPSB0eXBlO1xuJiM0MztcdGgyYy1cdTAwM2VoZHIudmVyID0gYnRjLVx1MDAzZXZlci1cdTAwM2VmY3h0cng7XG4mIzQzO1x0aDJjLVx1MDAzZWhkci5sZW4gPSBzaXplb2YoKmgyYykgLSBIMkNfTEVOX0NYRFJWSERSX1Y3O1xuJiM0MztcdGlmIChkbS1cdTAwM2V3bF90eF9wd3JfcGh5X21hcCA9PSBCSVQoUlRXODlfUEhZXzEpKVxuJiM0MztcdFx0aDJjLVx1MDAzZXB3ciA9IHJwLndsX3R4X3Bvd2VyW1JUVzg5X1BIWV8xXSBcdTAwMjYgMHhmZjtcbiYjNDM7XHRlbHNlXG4mIzQzO1x0XHRoMmMtXHUwMDNlcHdyID0gcnAud2xfdHhfcG93ZXJbUlRXODlfUEhZXzBdIFx1MDAyNiAweGZmO1xuJiM0MztcdGgyYy1cdTAwM2ViYW5kID0gZG0tXHUwMDNld2xfdHhfcHdyX3BoeV9tYXA7XG4mIzQzO1xuJiM0MztcdHJ0dzg5X2gyY19wa3Rfc2V0X2hkcihydHdkZXYsIHNrYiwgRldDTURfVFlQRV9IMkMsXG4mIzQzO1x0XHRcdCAgICAgIEgyQ19DQVRfT1VUU1JDLCBCVEZDX1NFVCxcbiYjNDM7XHRcdFx0ICAgICAgU0VUX0RSVl9JTkZPLCAwLCAwLCBsZW4pO1xuJiM0MztcbiYjNDM7XHRyZXQgPSBydHc4OV9oMmNfdHgocnR3ZGV2LCBza2IsIGZhbHNlKTtcbiYjNDM7XHRpZiAocmV0KSB7XG4mIzQzO1x0XHRydHc4OV9lcnIocnR3ZGV2LCBcJiMzNDtmYWlsZWQgdG8gc2VuZCBoMmNcXG5cJiMzNDspO1xuJiM0MztcdFx0Z290byBmYWlsO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO2ZhaWw6XG4mIzQzO1x0ZGV2X2tmcmVlX3NrYl9hbnkoc2tiKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIHJldDtcbiYjNDM7fVxuJiM0MztcbiAjZGVmaW5lIEgyQ19MRU5fUEtUX09GTEQgNFxuIGludCBydHc4OV9md19oMmNfZGVsX3BrdF9vZmZsb2FkKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggaWQpXG4ge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuaFxuaW5kZXggMjA3MjFkNTIwOWFhM2EuLjM2Yzg0MzBhMmU3YWViIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmhcbkBAIC0yNDk5LDYgJiM0MzsyNDk5LDc2IEBAIHN0cnVjdCBydHc4OV9oMmNfY3hpbml0IHtcbiBcdHU4IHJzdmQxO1xuIH0gX19wYWNrZWQ7XG4gXG4mIzQzO3N0cnVjdCBydHc4OV9idGNfdHJ4X2luZm9fdTgge1xuJiM0MztcdHU4IHR4X2x2bDtcbiYjNDM7XHR1OCByeF9sdmw7XG4mIzQzO1x0dTggd2xfcnNzaTtcbiYjNDM7XHR1OCBidF9yc3NpO1xuJiM0MztcbiYjNDM7XHRzOCB3bF90eF9wb3dlcltSVFc4OV9QSFlfTlVNXTsgLyogYWJzb2x1dGUgVHggcG93ZXIgKGRCbSksIDB4ZmYtXHUwMDNlIG5vIEJUQyBjb250cm9sICovXG4mIzQzO1x0czggd2xfcnhfZ2FpbltSVFc4OV9QSFlfTlVNXTsgIC8qIHJ4IGdhaW4gdGFibGUgaW5kZXggKFRCRC4pICovXG4mIzQzO1x0czggYnRfdHhfcG93ZXJbQlRDX0FMTF9CVF07IC8qIGRlY3JlYXNlIFR4IHBvd2VyIChkQikgKi9cbiYjNDM7XHRzOCBidF9yeF9nYWluW0JUQ19BTExfQlRdOyAgLyogTE5BIGNvbnN0cmFpbiBsZXZlbCAqL1xuJiM0MztcdHM4IHpiX3R4X3Bvd2VyW0JUQ19BTExfQlRdO1xuJiM0MztcdHM4IHpiX3J4X2dhaW5bQlRDX0FMTF9CVF07XG4mIzQzO1xuJiM0MztcdHU4IGNuOyAvKiBjb25kaXRpb25fbnVtICovXG4mIzQzO1x0czggbmhtO1xuJiM0MztcdHU4IGJ0X3Byb2ZpbGU7XG4mIzQzO1x0dTggcnN2ZDI7XG4mIzQzO30gX19wYWNrZWQ7XG4mIzQzO1xuJiM0MztzdHJ1Y3QgcnR3ODlfYnRjX3RyeF9pbmZvX3Y3X3U4IHtcbiYjNDM7XHR1OCB0eF9sdmw7XG4mIzQzO1x0dTggcnhfbHZsO1xuJiM0MztcdHU4IHdsX3Jzc2k7XG4mIzQzO1x0dTggYnRfcnNzaTtcbiYjNDM7XG4mIzQzO1x0czggd2xfdHhfcG93ZXI7XG4mIzQzO1x0czggd2xfcnhfZ2FpbjtcbiYjNDM7XHRzOCBidF90eF9wb3dlcjtcbiYjNDM7XHRzOCBidF9yeF9nYWluO1xuJiM0MztcdHM4IHpiX3R4X3Bvd2VyO1xuJiM0MztcdHM4IHpiX3J4X2dhaW47XG4mIzQzO1xuJiM0MztcdHU4IGNuO1xuJiM0MztcdHM4IG5obTtcbiYjNDM7XHR1OCBidF9wcm9maWxlO1xuJiM0MztcdHU4IHJzdmQyO1xuJiM0Mzt9IF9fcGFja2VkO1xuJiM0MztcbiYjNDM7c3RydWN0IHJ0dzg5X2J0Y190cnhfaW5mb19sZSB7XG4mIzQzO1x0X19sZTE2IHR4X3JhdGU7XG4mIzQzO1x0X19sZTE2IHJ4X3JhdGU7XG4mIzQzO1xuJiM0MztcdF9fbGUzMiB0eF90cDtcbiYjNDM7XHRfX2xlMzIgcnhfdHA7XG4mIzQzO1x0X19sZTMyIHJ4X2Vycl9yYXRpbztcbiYjNDM7fSBfX3BhY2tlZDtcbiYjNDM7XG4mIzQzO3N0cnVjdCBydHc4OV9oMmNfY3h0cnhfdjkge1xuJiM0MztcdHN0cnVjdCBydHc4OV9oMmNfY3hoZHJfdjcgaGRyO1xuJiM0MztcdHN0cnVjdCBydHc4OV9idGNfdHJ4X2luZm9fdTggdjlfdTg7XG4mIzQzO1x0c3RydWN0IHJ0dzg5X2J0Y190cnhfaW5mb19sZSB2OV9sZTtcbiYjNDM7fSBfX3BhY2tlZDtcbiYjNDM7XG4mIzQzO3N0cnVjdCBydHc4OV9oMmNfY3h0cnhfdjcge1xuJiM0MztcdHN0cnVjdCBydHc4OV9oMmNfY3hoZHJfdjcgaGRyO1xuJiM0MztcdHN0cnVjdCBydHc4OV9idGNfdHJ4X2luZm9fdjdfdTggdjdfdTg7XG4mIzQzO1x0c3RydWN0IHJ0dzg5X2J0Y190cnhfaW5mb19sZSB2N19sZTtcbiYjNDM7fSBfX3BhY2tlZDtcbiYjNDM7XG4mIzQzO3N0cnVjdCBydHc4OV9oMmNfY3h0eHB3cl92NyB7XG4mIzQzO1x0c3RydWN0IHJ0dzg5X2gyY19jeGhkcl92NyBoZHI7XG4mIzQzO1x0dTggcHdyO1xuJiM0Mzt9IF9fcGFja2VkO1xuJiM0MztcbiYjNDM7c3RydWN0IHJ0dzg5X2gyY19jeHR4cHdyX3Y5IHtcbiYjNDM7XHRzdHJ1Y3QgcnR3ODlfaDJjX2N4aGRyX3Y3IGhkcjtcbiYjNDM7XHR1OCBwd3I7XG4mIzQzO1x0dTggYmFuZDtcbiYjNDM7fSBfX3BhY2tlZDtcbiYjNDM7XG4gI2RlZmluZSBSVFc4OV9IMkNfQ1hJTklUX0FOVF9JTkZPX1BPUyBCSVQoMClcbiAjZGVmaW5lIFJUVzg5X0gyQ19DWElOSVRfQU5UX0lORk9fRElWRVJTSVRZIEJJVCgxKVxuICNkZWZpbmUgUlRXODlfSDJDX0NYSU5JVF9BTlRfSU5GT19CVEdfUE9TIEdFTk1BU0soMywgMilcbkBAIC0yNzYwLDkxICYjNDM7MjgzMCw2IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBSVFc4OV9TRVRfRldDTURfQ1hDVFJMX1RSQUNFX1NURVAodm9pZCAqY21kLCB1MzIgdmFsKVxuIFx0bGUzMnBfcmVwbGFjZV9iaXRzKChfX2xlMzIgKikoKHU4ICopKGNtZCkgJiM0MzsgMiksIHZhbCwgR0VOTUFTSygxOCwgMykpO1xuIH1cbiBcbi1zdGF0aWMgaW5saW5lIHZvaWQgUlRXODlfU0VUX0ZXQ01EX0NYVFJYX1RYTFYodm9pZCAqY21kLCB1OCB2YWwpXG4te1xuLVx0dThwX3JlcGxhY2VfYml0cygodTggKiljbWQgJiM0MzsgMiwgdmFsLCBHRU5NQVNLKDcsIDApKTtcbi19XG4tXG4tc3RhdGljIGlubGluZSB2b2lkIFJUVzg5X1NFVF9GV0NNRF9DWFRSWF9SWExWKHZvaWQgKmNtZCwgdTggdmFsKVxuLXtcbi1cdHU4cF9yZXBsYWNlX2JpdHMoKHU4ICopY21kICYjNDM7IDMsIHZhbCwgR0VOTUFTSyg3LCAwKSk7XG4tfVxuLVxuLXN0YXRpYyBpbmxpbmUgdm9pZCBSVFc4OV9TRVRfRldDTURfQ1hUUlhfV0xSU1NJKHZvaWQgKmNtZCwgdTggdmFsKVxuLXtcbi1cdHU4cF9yZXBsYWNlX2JpdHMoKHU4ICopY21kICYjNDM7IDQsIHZhbCwgR0VOTUFTSyg3LCAwKSk7XG4tfVxuLVxuLXN0YXRpYyBpbmxpbmUgdm9pZCBSVFc4OV9TRVRfRldDTURfQ1hUUlhfQlRSU1NJKHZvaWQgKmNtZCwgdTggdmFsKVxuLXtcbi1cdHU4cF9yZXBsYWNlX2JpdHMoKHU4ICopY21kICYjNDM7IDUsIHZhbCwgR0VOTUFTSyg3LCAwKSk7XG4tfVxuLVxuLXN0YXRpYyBpbmxpbmUgdm9pZCBSVFc4OV9TRVRfRldDTURfQ1hUUlhfVFhQV1Iodm9pZCAqY21kLCBzOCB2YWwpXG4te1xuLVx0dThwX3JlcGxhY2VfYml0cygodTggKiljbWQgJiM0MzsgNiwgdmFsLCBHRU5NQVNLKDcsIDApKTtcbi19XG4tXG4tc3RhdGljIGlubGluZSB2b2lkIFJUVzg5X1NFVF9GV0NNRF9DWFRSWF9SWEdBSU4odm9pZCAqY21kLCBzOCB2YWwpXG4te1xuLVx0dThwX3JlcGxhY2VfYml0cygodTggKiljbWQgJiM0MzsgNywgdmFsLCBHRU5NQVNLKDcsIDApKTtcbi19XG4tXG4tc3RhdGljIGlubGluZSB2b2lkIFJUVzg5X1NFVF9GV0NNRF9DWFRSWF9CVFRYUFdSKHZvaWQgKmNtZCwgczggdmFsKVxuLXtcbi1cdHU4cF9yZXBsYWNlX2JpdHMoKHU4ICopY21kICYjNDM7IDgsIHZhbCwgR0VOTUFTSyg3LCAwKSk7XG4tfVxuLVxuLXN0YXRpYyBpbmxpbmUgdm9pZCBSVFc4OV9TRVRfRldDTURfQ1hUUlhfQlRSWEdBSU4odm9pZCAqY21kLCBzOCB2YWwpXG4te1xuLVx0dThwX3JlcGxhY2VfYml0cygodTggKiljbWQgJiM0MzsgOSwgdmFsLCBHRU5NQVNLKDcsIDApKTtcbi19XG4tXG4tc3RhdGljIGlubGluZSB2b2lkIFJUVzg5X1NFVF9GV0NNRF9DWFRSWF9DTih2b2lkICpjbWQsIHU4IHZhbClcbi17XG4tXHR1OHBfcmVwbGFjZV9iaXRzKCh1OCAqKWNtZCAmIzQzOyAxMCwgdmFsLCBHRU5NQVNLKDcsIDApKTtcbi19XG4tXG4tc3RhdGljIGlubGluZSB2b2lkIFJUVzg5X1NFVF9GV0NNRF9DWFRSWF9OSE0odm9pZCAqY21kLCBzOCB2YWwpXG4te1xuLVx0dThwX3JlcGxhY2VfYml0cygodTggKiljbWQgJiM0MzsgMTEsIHZhbCwgR0VOTUFTSyg3LCAwKSk7XG4tfVxuLVxuLXN0YXRpYyBpbmxpbmUgdm9pZCBSVFc4OV9TRVRfRldDTURfQ1hUUlhfQlRQUk9GSUxFKHZvaWQgKmNtZCwgdTggdmFsKVxuLXtcbi1cdHU4cF9yZXBsYWNlX2JpdHMoKHU4ICopY21kICYjNDM7IDEyLCB2YWwsIEdFTk1BU0soNywgMCkpO1xuLX1cbi1cbi1zdGF0aWMgaW5saW5lIHZvaWQgUlRXODlfU0VUX0ZXQ01EX0NYVFJYX1JTVkQyKHZvaWQgKmNtZCwgdTggdmFsKVxuLXtcbi1cdHU4cF9yZXBsYWNlX2JpdHMoKHU4ICopY21kICYjNDM7IDEzLCB2YWwsIEdFTk1BU0soNywgMCkpO1xuLX1cbi1cbi1zdGF0aWMgaW5saW5lIHZvaWQgUlRXODlfU0VUX0ZXQ01EX0NYVFJYX1RYUkFURSh2b2lkICpjbWQsIHUxNiB2YWwpXG4te1xuLVx0bGUxNnBfcmVwbGFjZV9iaXRzKChfX2xlMTYgKikoKHU4ICopY21kICYjNDM7IDE0KSwgdmFsLCBHRU5NQVNLKDE1LCAwKSk7XG4tfVxuLVxuLXN0YXRpYyBpbmxpbmUgdm9pZCBSVFc4OV9TRVRfRldDTURfQ1hUUlhfUlhSQVRFKHZvaWQgKmNtZCwgdTE2IHZhbClcbi17XG4tXHRsZTE2cF9yZXBsYWNlX2JpdHMoKF9fbGUxNiAqKSgodTggKiljbWQgJiM0MzsgMTYpLCB2YWwsIEdFTk1BU0soMTUsIDApKTtcbi19XG4tXG4tc3RhdGljIGlubGluZSB2b2lkIFJUVzg5X1NFVF9GV0NNRF9DWFRSWF9UWFRQKHZvaWQgKmNtZCwgdTMyIHZhbClcbi17XG4tXHRsZTMycF9yZXBsYWNlX2JpdHMoKF9fbGUzMiAqKSgodTggKiljbWQgJiM0MzsgMTgpLCB2YWwsIEdFTk1BU0soMzEsIDApKTtcbi19XG4tXG4tc3RhdGljIGlubGluZSB2b2lkIFJUVzg5X1NFVF9GV0NNRF9DWFRSWF9SWFRQKHZvaWQgKmNtZCwgdTMyIHZhbClcbi17XG4tXHRsZTMycF9yZXBsYWNlX2JpdHMoKF9fbGUzMiAqKSgodTggKiljbWQgJiM0MzsgMjIpLCB2YWwsIEdFTk1BU0soMzEsIDApKTtcbi19XG4tXG4tc3RhdGljIGlubGluZSB2b2lkIFJUVzg5X1NFVF9GV0NNRF9DWFRSWF9SWEVSUlJBKHZvaWQgKmNtZCwgdTMyIHZhbClcbi17XG4tXHRsZTMycF9yZXBsYWNlX2JpdHMoKF9fbGUzMiAqKSgodTggKiljbWQgJiM0MzsgMjYpLCB2YWwsIEdFTk1BU0soMzEsIDApKTtcbi19XG4tXG4gc3RhdGljIGlubGluZSB2b2lkIFJUVzg5X1NFVF9GV0NNRF9DWFJGS19TVEFURSh2b2lkICpjbWQsIHUzMiB2YWwpXG4ge1xuIFx0bGUzMnBfcmVwbGFjZV9iaXRzKChfX2xlMzIgKikoKHU4ICopKGNtZCkgJiM0MzsgMiksIHZhbCwgR0VOTUFTSygxLCAwKSk7XG5AQCAtNTM5OSw4ICYjNDM7NTM4NCwxMSBAQCBpbnQgcnR3ODlfZndfaDJjX2N4ZHJ2X3JvbGVfdjgoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCB0eXBlKTtcbiBpbnQgcnR3ODlfZndfaDJjX2N4ZHJ2X29zaV9pbmZvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggdHlwZSk7XG4gaW50IHJ0dzg5X2Z3X2gyY19jeGRydl9jdHJsKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggdHlwZSk7XG4gaW50IHJ0dzg5X2Z3X2gyY19jeGRydl9jdHJsX3Y3KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggdHlwZSk7XG4taW50IHJ0dzg5X2Z3X2gyY19jeGRydl90cngoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCB0eXBlKTtcbiYjNDM7aW50IHJ0dzg5X2Z3X2gyY19jeGRydl90cnhfdjcoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCB0eXBlKTtcbiYjNDM7aW50IHJ0dzg5X2Z3X2gyY19jeGRydl90cnhfdjkoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCB0eXBlKTtcbiBpbnQgcnR3ODlfZndfaDJjX2N4ZHJ2X3JmayhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHR5cGUpO1xuJiM0MztpbnQgcnR3ODlfZndfaDJjX2N4dHhwd3Jfdjcoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCB0eXBlKTtcbiYjNDM7aW50IHJ0dzg5X2Z3X2gyY19jeHR4cHdyX3Y5KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggdHlwZSk7XG4gaW50IHJ0dzg5X2Z3X2gyY19kZWxfcGt0X29mZmxvYWQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCBpZCk7XG4gaW50IHJ0dzg5X2Z3X2gyY19hZGRfcGt0X29mZmxvYWQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCAqaWQsXG4gXHRcdFx0XHQgc3RydWN0IHNrX2J1ZmYgKnNrYl9vZmxkKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFiLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFiLmNcbmluZGV4IDYwZjM2MjU5MzY5NjZmLi40Y2FmMjMxYzYyODcwMCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYi5jXG5AQCAtMzU1LDcgJiM0MzszNTUsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X3BtYWNfcmVncyBydHc4ODUxYl9wbWFjX3JlZ3MgPSB7XG4gXHQuYW1wZHVfY3JjX2Vycl9tYXNrID0gQl9DTlRfQU1QRFVfUlhfQ1JDMzJfRVJSLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9idGNfcmZfdHJ4X3BhcmEgcnR3ODlfYnRjXzg4NTFiX3JmX3VsW10gPSB7XG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3JmX3RyeF9wYXJhX3YwIHJ0dzg5X2J0Y184ODUxYl9yZl91bF92MFtdID0ge1xuIFx0ezI1NSwgMCwgMCwgN30sIC8qIDAgLVx1MDAzZSBvcmlnaW5hbCAqL1xuIFx0ezI1NSwgMiwgMCwgN30sIC8qIDEgLVx1MDAzZSBmb3IgQlQtY29ubmVjdGVkIEFDSSBpc3N1ZSBcdTAwMjZcdTAwMjYgQlRHIGNvLXJ4ICovXG4gXHR7MjU1LCAwLCAwLCA3fSwgLyogMiAtXHUwMDNlcmVzZXJ2ZWQgZm9yIHNoYXJlZC1hbnRlbm5hICovXG5AQCAtMzY3LDcgJiM0MzszNjcsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2J0Y19yZl90cnhfcGFyYSBydHc4OV9idGNfODg1MWJfcmZfdWxbXSA9IHtcbiBcdHsxMywgMSwgMCwgN31cbiB9O1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3JmX3RyeF9wYXJhIHJ0dzg5X2J0Y184ODUxYl9yZl9kbFtdID0ge1xuJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2J0Y19yZl90cnhfcGFyYV92MCBydHc4OV9idGNfODg1MWJfcmZfZGxfdjBbXSA9IHtcbiBcdHsyNTUsIDAsIDAsIDd9LCAvKiAwIC1cdTAwM2Ugb3JpZ2luYWwgKi9cbiBcdHsyNTUsIDIsIDAsIDd9LCAvKiAxIC1cdTAwM2UgcmVzZXJ2ZWQgZm9yIHNoYXJlZC1hbnRlbm5hICovXG4gXHR7MjU1LCAwLCAwLCA3fSwgLyogMiAtXHUwMDNlcmVzZXJ2ZWQgZm9yIHNoYXJlZC1hbnRlbm5hICovXG5AQCAtMjczMCwxMCAmIzQzOzI3MzAsMTAgQEAgY29uc3Qgc3RydWN0IHJ0dzg5X2NoaXBfaW5mbyBydHc4ODUxYl9jaGlwX2luZm8gPSB7XG4gXHQucnNzaV90b2xcdFx0PSAyLFxuIFx0Lm1vbl9yZWdfbnVtXHRcdD0gQVJSQVlfU0laRShydHc4OV9idGNfODg1MWJfbW9uX3JlZyksXG4gXHQubW9uX3JlZ1x0XHQ9IHJ0dzg5X2J0Y184ODUxYl9tb25fcmVnLFxuLVx0LnJmX3BhcmFfdWxpbmtfbnVtXHQ9IEFSUkFZX1NJWkUocnR3ODlfYnRjXzg4NTFiX3JmX3VsKSxcbi1cdC5yZl9wYXJhX3VsaW5rXHRcdD0gcnR3ODlfYnRjXzg4NTFiX3JmX3VsLFxuLVx0LnJmX3BhcmFfZGxpbmtfbnVtXHQ9IEFSUkFZX1NJWkUocnR3ODlfYnRjXzg4NTFiX3JmX2RsKSxcbi1cdC5yZl9wYXJhX2RsaW5rXHRcdD0gcnR3ODlfYnRjXzg4NTFiX3JmX2RsLFxuJiM0MztcdC5yZl9wYXJhX3VsaW5rX3YwXHQ9IHJ0dzg5X2J0Y184ODUxYl9yZl91bF92MCxcbiYjNDM7XHQucmZfcGFyYV9kbGlua192MFx0PSBydHc4OV9idGNfODg1MWJfcmZfZGxfdjAsXG4mIzQzO1x0LnJmX3BhcmFfdWxpbmtfbnVtX3YwXHQ9IEFSUkFZX1NJWkUocnR3ODlfYnRjXzg4NTFiX3JmX3VsX3YwKSxcbiYjNDM7XHQucmZfcGFyYV9kbGlua19udW1fdjBcdD0gQVJSQVlfU0laRShydHc4OV9idGNfODg1MWJfcmZfZGxfdjApLFxuIFx0LnJmX3BhcmFfdWxpbmtfdjlcdD0gTlVMTCxcbiBcdC5yZl9wYXJhX2RsaW5rX3Y5XHQ9IE5VTEwsXG4gXHQucmZfcGFyYV91bGlua19udW1fdjlcdD0gMCxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJhLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJhLmNcbmluZGV4IDJjMWYxNjZlNjg3ZjA2Li43OGFkZGMwYWVmNjkwOCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYS5jXG5AQCAtMjA0OSw3ICYjNDM7MjA0OSw3IEBAIHM4IHJ0dzg4NTJhX2J0Y19nZXRfYnRfcnNzaShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHM4IHZhbClcbiBcdHJldHVybiBjbGFtcF90KHM4LCB2YWwgJiM0MzsgNiwgLTEwMCwgMCkgJiM0MzsgMTAwO1xuIH1cbiBcbi1zdGF0aWMgc3RydWN0IHJ0dzg5X2J0Y19yZl90cnhfcGFyYSBydHc4OV9idGNfODg1MmFfcmZfdWxbXSA9IHtcbiYjNDM7c3RhdGljIHN0cnVjdCBydHc4OV9idGNfcmZfdHJ4X3BhcmFfdjAgcnR3ODlfYnRjXzg4NTJhX3JmX3VsX3YwW10gPSB7XG4gXHR7MjU1LCAwLCAwLCA3fSwgLyogMCAtXHUwMDNlIG9yaWdpbmFsICovXG4gXHR7MjU1LCAyLCAwLCA3fSwgLyogMSAtXHUwMDNlIGZvciBCVC1jb25uZWN0ZWQgQUNJIGlzc3VlIFx1MDAyNlx1MDAyNiBCVEcgY28tcnggKi9cbiBcdHsyNTUsIDAsIDAsIDd9LCAvKiAyIC1cdTAwM2VyZXNlcnZlZCBmb3Igc2hhcmVkLWFudGVubmEgKi9cbkBAIC0yMDYxLDcgJiM0MzsyMDYxLDcgQEAgc3RhdGljIHN0cnVjdCBydHc4OV9idGNfcmZfdHJ4X3BhcmEgcnR3ODlfYnRjXzg4NTJhX3JmX3VsW10gPSB7XG4gXHR7MTMsIDEsIDAsIDd9XG4gfTtcbiBcbi1zdGF0aWMgc3RydWN0IHJ0dzg5X2J0Y19yZl90cnhfcGFyYSBydHc4OV9idGNfODg1MmFfcmZfZGxbXSA9IHtcbiYjNDM7c3RhdGljIHN0cnVjdCBydHc4OV9idGNfcmZfdHJ4X3BhcmFfdjAgcnR3ODlfYnRjXzg4NTJhX3JmX2RsX3YwW10gPSB7XG4gXHR7MjU1LCAwLCAwLCA3fSwgLyogMCAtXHUwMDNlIG9yaWdpbmFsICovXG4gXHR7MjU1LCAyLCAwLCA3fSwgLyogMSAtXHUwMDNlIHJlc2VydmVkIGZvciBzaGFyZWQtYW50ZW5uYSAqL1xuIFx0ezI1NSwgMCwgMCwgN30sIC8qIDIgLVx1MDAzZXJlc2VydmVkIGZvciBzaGFyZWQtYW50ZW5uYSAqL1xuQEAgLTIxMDUsMTIgJiM0MzsyMTA1LDEyIEBAIHZvaWQgcnR3ODg1MmFfYnRjX3VwZGF0ZV9idF9jbnQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuIFx0XHRyZXR1cm47XG4gXG4gXHR2YWwgPSBydHc4OV9yZWFkMzIocnR3ZGV2LCBSX0FYX0JUX1NUQVNUX0hJR0gpO1xuLVx0Y3gtXHUwMDNlY250X2J0W0JUQ19CQ05UX0hJUFJJX1RYXSA9IEZJRUxEX0dFVChCX0FYX1NUQVRJU19CVF9ISV9UWF9NQVNLLCB2YWwpO1xuLVx0Y3gtXHUwMDNlY250X2J0W0JUQ19CQ05UX0hJUFJJX1JYXSA9IEZJRUxEX0dFVChCX0FYX1NUQVRJU19CVF9ISV9SWF9NQVNLLCB2YWwpO1xuJiM0MztcdGN4LVx1MDAzZWJ0MC5iY250W0JUQ19CQ05UX0hJUFJJX1RYXSA9IEZJRUxEX0dFVChCX0FYX1NUQVRJU19CVF9ISV9UWF9NQVNLLCB2YWwpO1xuJiM0MztcdGN4LVx1MDAzZWJ0MC5iY250W0JUQ19CQ05UX0hJUFJJX1JYXSA9IEZJRUxEX0dFVChCX0FYX1NUQVRJU19CVF9ISV9SWF9NQVNLLCB2YWwpO1xuIFxuIFx0dmFsID0gcnR3ODlfcmVhZDMyKHJ0d2RldiwgUl9BWF9CVF9TVEFTVF9MT1cpO1xuLVx0Y3gtXHUwMDNlY250X2J0W0JUQ19CQ05UX0xPUFJJX1RYXSA9IEZJRUxEX0dFVChCX0FYX1NUQVRJU19CVF9MT19UWF8xX01BU0ssIHZhbCk7XG4tXHRjeC1cdTAwM2VjbnRfYnRbQlRDX0JDTlRfTE9QUklfUlhdID0gRklFTERfR0VUKEJfQVhfU1RBVElTX0JUX0xPX1JYXzFfTUFTSywgdmFsKTtcbiYjNDM7XHRjeC1cdTAwM2VidDAuYmNudFtCVENfQkNOVF9MT1BSSV9UWF0gPSBGSUVMRF9HRVQoQl9BWF9TVEFUSVNfQlRfTE9fVFhfMV9NQVNLLCB2YWwpO1xuJiM0MztcdGN4LVx1MDAzZWJ0MC5iY250W0JUQ19CQ05UX0xPUFJJX1JYXSA9IEZJRUxEX0dFVChCX0FYX1NUQVRJU19CVF9MT19SWF8xX01BU0ssIHZhbCk7XG4gXG4gXHQvKiBjbG9jay1nYXRlIG9mZiBiZWZvcmUgcmVzZXQgY291bnRlciovXG4gXHRydHc4OV93cml0ZTMyX3NldChydHdkZXYsIFJfQVhfQlRDX0NGRywgQl9BWF9ESVNfQlRDX0NMS19HKTtcbkBAIC0yNDY4LDEwICYjNDM7MjQ2OCwxMCBAQCBjb25zdCBzdHJ1Y3QgcnR3ODlfY2hpcF9pbmZvIHJ0dzg4NTJhX2NoaXBfaW5mbyA9IHtcbiBcdC5yc3NpX3RvbFx0XHQ9IDIsXG4gXHQubW9uX3JlZ19udW1cdFx0PSBBUlJBWV9TSVpFKHJ0dzg5X2J0Y184ODUyYV9tb25fcmVnKSxcbiBcdC5tb25fcmVnXHRcdD0gcnR3ODlfYnRjXzg4NTJhX21vbl9yZWcsXG4tXHQucmZfcGFyYV91bGlua19udW1cdD0gQVJSQVlfU0laRShydHc4OV9idGNfODg1MmFfcmZfdWwpLFxuLVx0LnJmX3BhcmFfdWxpbmtcdFx0PSBydHc4OV9idGNfODg1MmFfcmZfdWwsXG4tXHQucmZfcGFyYV9kbGlua19udW1cdD0gQVJSQVlfU0laRShydHc4OV9idGNfODg1MmFfcmZfZGwpLFxuLVx0LnJmX3BhcmFfZGxpbmtcdFx0PSBydHc4OV9idGNfODg1MmFfcmZfZGwsXG4mIzQzO1x0LnJmX3BhcmFfdWxpbmtfdjBcdD0gcnR3ODlfYnRjXzg4NTJhX3JmX3VsX3YwLFxuJiM0MztcdC5yZl9wYXJhX2RsaW5rX3YwXHQ9IHJ0dzg5X2J0Y184ODUyYV9yZl9kbF92MCxcbiYjNDM7XHQucmZfcGFyYV91bGlua19udW1fdjBcdD0gQVJSQVlfU0laRShydHc4OV9idGNfODg1MmFfcmZfdWxfdjApLFxuJiM0MztcdC5yZl9wYXJhX2RsaW5rX251bV92MFx0PSBBUlJBWV9TSVpFKHJ0dzg5X2J0Y184ODUyYV9yZl9kbF92MCksXG4gXHQucmZfcGFyYV91bGlua192OVx0PSBOVUxMLFxuIFx0LnJmX3BhcmFfZGxpbmtfdjlcdD0gTlVMTCxcbiBcdC5yZl9wYXJhX3VsaW5rX251bV92OVx0PSAwLFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmIuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmIuY1xuaW5kZXggNGU3YjA2OGFhYTc1YjEuLmRlYmNkYjJlYWNkNjk5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJiLmNcbkBAIC0zMDcsNyAmIzQzOzMwNyw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfcG1hY19yZWdzIHJ0dzg4NTJiX3BtYWNfcmVncyA9IHtcbiBcdC5hbXBkdV9jcmNfZXJyX21hc2sgPSBCX0NOVF9BTVBEVV9SWF9DUkMzMl9FUlIsXG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2J0Y19yZl90cnhfcGFyYSBydHc4OV9idGNfODg1MmJfcmZfdWxbXSA9IHtcbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9idGNfcmZfdHJ4X3BhcmFfdjAgcnR3ODlfYnRjXzg4NTJiX3JmX3VsX3YwW10gPSB7XG4gXHR7MjU1LCAwLCAwLCA3fSwgLyogMCAtXHUwMDNlIG9yaWdpbmFsICovXG4gXHR7MjU1LCAyLCAwLCA3fSwgLyogMSAtXHUwMDNlIGZvciBCVC1jb25uZWN0ZWQgQUNJIGlzc3VlIFx1MDAyNlx1MDAyNiBCVEcgY28tcnggKi9cbiBcdHsyNTUsIDAsIDAsIDd9LCAvKiAyIC1cdTAwM2VyZXNlcnZlZCBmb3Igc2hhcmVkLWFudGVubmEgKi9cbkBAIC0zMTksNyAmIzQzOzMxOSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3JmX3RyeF9wYXJhIHJ0dzg5X2J0Y184ODUyYl9yZl91bFtdID0ge1xuIFx0ezEzLCAxLCAwLCA3fVxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9idGNfcmZfdHJ4X3BhcmEgcnR3ODlfYnRjXzg4NTJiX3JmX2RsW10gPSB7XG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3JmX3RyeF9wYXJhX3YwIHJ0dzg5X2J0Y184ODUyYl9yZl9kbF92MFtdID0ge1xuIFx0ezI1NSwgMCwgMCwgN30sIC8qIDAgLVx1MDAzZSBvcmlnaW5hbCAqL1xuIFx0ezI1NSwgMiwgMCwgN30sIC8qIDEgLVx1MDAzZSByZXNlcnZlZCBmb3Igc2hhcmVkLWFudGVubmEgKi9cbiBcdHsyNTUsIDAsIDAsIDd9LCAvKiAyIC1cdTAwM2VyZXNlcnZlZCBmb3Igc2hhcmVkLWFudGVubmEgKi9cbkBAIC0xMDYzLDEwICYjNDM7MTA2MywxMCBAQCBjb25zdCBzdHJ1Y3QgcnR3ODlfY2hpcF9pbmZvIHJ0dzg4NTJiX2NoaXBfaW5mbyA9IHtcbiBcdC5yc3NpX3RvbFx0XHQ9IDIsXG4gXHQubW9uX3JlZ19udW1cdFx0PSBBUlJBWV9TSVpFKHJ0dzg5X2J0Y184ODUyYl9tb25fcmVnKSxcbiBcdC5tb25fcmVnXHRcdD0gcnR3ODlfYnRjXzg4NTJiX21vbl9yZWcsXG4tXHQucmZfcGFyYV91bGlua19udW1cdD0gQVJSQVlfU0laRShydHc4OV9idGNfODg1MmJfcmZfdWwpLFxuLVx0LnJmX3BhcmFfdWxpbmtcdFx0PSBydHc4OV9idGNfODg1MmJfcmZfdWwsXG4tXHQucmZfcGFyYV9kbGlua19udW1cdD0gQVJSQVlfU0laRShydHc4OV9idGNfODg1MmJfcmZfZGwpLFxuLVx0LnJmX3BhcmFfZGxpbmtcdFx0PSBydHc4OV9idGNfODg1MmJfcmZfZGwsXG4mIzQzO1x0LnJmX3BhcmFfdWxpbmtfdjBcdD0gcnR3ODlfYnRjXzg4NTJiX3JmX3VsX3YwLFxuJiM0MztcdC5yZl9wYXJhX2RsaW5rX3YwXHQ9IHJ0dzg5X2J0Y184ODUyYl9yZl9kbF92MCxcbiYjNDM7XHQucmZfcGFyYV91bGlua19udW1fdjBcdD0gQVJSQVlfU0laRShydHc4OV9idGNfODg1MmJfcmZfdWxfdjApLFxuJiM0MztcdC5yZl9wYXJhX2RsaW5rX251bV92MFx0PSBBUlJBWV9TSVpFKHJ0dzg5X2J0Y184ODUyYl9yZl9kbF92MCksXG4gXHQucmZfcGFyYV91bGlua192OVx0PSBOVUxMLFxuIFx0LnJmX3BhcmFfZGxpbmtfdjlcdD0gTlVMTCxcbiBcdC5yZl9wYXJhX3VsaW5rX251bV92OVx0PSAwLFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJ0LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJidC5jXG5pbmRleCA3ZmNjODc3ZjZlYTBjNC4uZmM4YTE3ZmI5NWY0N2QgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJidC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJidC5jXG5AQCAtMjUwLDcgJiM0MzsyNTAsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X3BtYWNfcmVncyBydHc4ODUyYnRfcG1hY19yZWdzID0ge1xuIFx0LmFtcGR1X2NyY19lcnJfbWFzayA9IEJfQ05UX0FNUERVX1JYX0NSQzMyX0VSUixcbiB9O1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3JmX3RyeF9wYXJhIHJ0dzg5X2J0Y184ODUyYnRfcmZfdWxbXSA9IHtcbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9idGNfcmZfdHJ4X3BhcmFfdjAgcnR3ODlfYnRjXzg4NTJidF9yZl91bF92MFtdID0ge1xuIFx0ezI1NSwgMCwgMCwgN30sIC8qIDAgLVx1MDAzZSBvcmlnaW5hbCAqL1xuIFx0ezI1NSwgMiwgMCwgN30sIC8qIDEgLVx1MDAzZSBmb3IgQlQtY29ubmVjdGVkIEFDSSBpc3N1ZSBcdTAwMjZcdTAwMjYgQlRHIGNvLXJ4ICovXG4gXHR7MjU1LCAwLCAwLCA3fSwgLyogMiAtXHUwMDNlcmVzZXJ2ZWQgZm9yIHNoYXJlZC1hbnRlbm5hICovXG5AQCAtMjYyLDcgJiM0MzsyNjIsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2J0Y19yZl90cnhfcGFyYSBydHc4OV9idGNfODg1MmJ0X3JmX3VsW10gPSB7XG4gXHR7MTMsIDEsIDAsIDd9XG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2J0Y19yZl90cnhfcGFyYSBydHc4OV9idGNfODg1MmJ0X3JmX2RsW10gPSB7XG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3JmX3RyeF9wYXJhX3YwIHJ0dzg5X2J0Y184ODUyYnRfcmZfZGxfdjBbXSA9IHtcbiBcdHsyNTUsIDAsIDAsIDd9LCAvKiAwIC1cdTAwM2Ugb3JpZ2luYWwgKi9cbiBcdHsyNTUsIDIsIDAsIDd9LCAvKiAxIC1cdTAwM2UgcmVzZXJ2ZWQgZm9yIHNoYXJlZC1hbnRlbm5hICovXG4gXHR7MjU1LCAwLCAwLCA3fSwgLyogMiAtXHUwMDNlcmVzZXJ2ZWQgZm9yIHNoYXJlZC1hbnRlbm5hICovXG5AQCAtOTAyLDEwICYjNDM7OTAyLDEwIEBAIGNvbnN0IHN0cnVjdCBydHc4OV9jaGlwX2luZm8gcnR3ODg1MmJ0X2NoaXBfaW5mbyA9IHtcbiBcdC5yc3NpX3RvbFx0XHQ9IDIsXG4gXHQubW9uX3JlZ19udW1cdFx0PSBBUlJBWV9TSVpFKHJ0dzg5X2J0Y184ODUyYnRfbW9uX3JlZyksXG4gXHQubW9uX3JlZ1x0XHQ9IHJ0dzg5X2J0Y184ODUyYnRfbW9uX3JlZyxcbi1cdC5yZl9wYXJhX3VsaW5rX251bVx0PSBBUlJBWV9TSVpFKHJ0dzg5X2J0Y184ODUyYnRfcmZfdWwpLFxuLVx0LnJmX3BhcmFfdWxpbmtcdFx0PSBydHc4OV9idGNfODg1MmJ0X3JmX3VsLFxuLVx0LnJmX3BhcmFfZGxpbmtfbnVtXHQ9IEFSUkFZX1NJWkUocnR3ODlfYnRjXzg4NTJidF9yZl9kbCksXG4tXHQucmZfcGFyYV9kbGlua1x0XHQ9IHJ0dzg5X2J0Y184ODUyYnRfcmZfZGwsXG4mIzQzO1x0LnJmX3BhcmFfdWxpbmtfdjBcdD0gcnR3ODlfYnRjXzg4NTJidF9yZl91bF92MCxcbiYjNDM7XHQucmZfcGFyYV9kbGlua192MFx0PSBydHc4OV9idGNfODg1MmJ0X3JmX2RsX3YwLFxuJiM0MztcdC5yZl9wYXJhX3VsaW5rX251bV92MFx0PSBBUlJBWV9TSVpFKHJ0dzg5X2J0Y184ODUyYnRfcmZfdWxfdjApLFxuJiM0MztcdC5yZl9wYXJhX2RsaW5rX251bV92MFx0PSBBUlJBWV9TSVpFKHJ0dzg5X2J0Y184ODUyYnRfcmZfZGxfdjApLFxuIFx0LnJmX3BhcmFfdWxpbmtfdjlcdD0gTlVMTCxcbiBcdC5yZl9wYXJhX2RsaW5rX3Y5XHQ9IE5VTEwsXG4gXHQucmZfcGFyYV91bGlua19udW1fdjlcdD0gMCxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjLmNcbmluZGV4IDM4NjFjY2U0MmIxYmEyLi5iZWM2YWE1NzRlOWQ3OSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYy5jXG5AQCAtMjg2Myw3ICYjNDM7Mjg2Myw3IEBAIHM4IHJ0dzg4NTJjX2J0Y19nZXRfYnRfcnNzaShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHM4IHZhbClcbiBcdHJldHVybiBjbGFtcF90KHM4LCB2YWwgJiM0MzsgNiwgLTEwMCwgMCkgJiM0MzsgMTAwO1xuIH1cbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2J0Y19yZl90cnhfcGFyYSBydHc4OV9idGNfODg1MmNfcmZfdWxbXSA9IHtcbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9idGNfcmZfdHJ4X3BhcmFfdjAgcnR3ODlfYnRjXzg4NTJjX3JmX3VsX3YwW10gPSB7XG4gXHR7MjU1LCAwLCAwLCA3fSwgLyogMCAtXHUwMDNlIG9yaWdpbmFsICovXG4gXHR7MjU1LCAyLCAwLCA3fSwgLyogMSAtXHUwMDNlIGZvciBCVC1jb25uZWN0ZWQgQUNJIGlzc3VlIFx1MDAyNlx1MDAyNiBCVEcgY28tcnggKi9cbiBcdHsyNTUsIDAsIDAsIDd9LCAvKiAyIC1cdTAwM2VyZXNlcnZlZCBmb3Igc2hhcmVkLWFudGVubmEgKi9cbkBAIC0yODc1LDcgJiM0MzsyODc1LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9idGNfcmZfdHJ4X3BhcmEgcnR3ODlfYnRjXzg4NTJjX3JmX3VsW10gPSB7XG4gXHR7MTMsIDEsIDAsIDd9XG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2J0Y19yZl90cnhfcGFyYSBydHc4OV9idGNfODg1MmNfcmZfZGxbXSA9IHtcbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9idGNfcmZfdHJ4X3BhcmFfdjAgcnR3ODlfYnRjXzg4NTJjX3JmX2RsX3YwW10gPSB7XG4gXHR7MjU1LCAwLCAwLCA3fSwgLyogMCAtXHUwMDNlIG9yaWdpbmFsICovXG4gXHR7MjU1LCAyLCAwLCA3fSwgLyogMSAtXHUwMDNlIHJlc2VydmVkIGZvciBzaGFyZWQtYW50ZW5uYSAqL1xuIFx0ezI1NSwgMCwgMCwgN30sIC8qIDIgLVx1MDAzZXJlc2VydmVkIGZvciBzaGFyZWQtYW50ZW5uYSAqL1xuQEAgLTMyNzAsMTAgJiM0MzszMjcwLDEwIEBAIGNvbnN0IHN0cnVjdCBydHc4OV9jaGlwX2luZm8gcnR3ODg1MmNfY2hpcF9pbmZvID0ge1xuIFx0LnJzc2lfdG9sXHRcdD0gMixcbiBcdC5tb25fcmVnX251bVx0XHQ9IEFSUkFZX1NJWkUocnR3ODlfYnRjXzg4NTJjX21vbl9yZWcpLFxuIFx0Lm1vbl9yZWdcdFx0PSBydHc4OV9idGNfODg1MmNfbW9uX3JlZyxcbi1cdC5yZl9wYXJhX3VsaW5rX251bVx0PSBBUlJBWV9TSVpFKHJ0dzg5X2J0Y184ODUyY19yZl91bCksXG4tXHQucmZfcGFyYV91bGlua1x0XHQ9IHJ0dzg5X2J0Y184ODUyY19yZl91bCxcbi1cdC5yZl9wYXJhX2RsaW5rX251bVx0PSBBUlJBWV9TSVpFKHJ0dzg5X2J0Y184ODUyY19yZl9kbCksXG4tXHQucmZfcGFyYV9kbGlua1x0XHQ9IHJ0dzg5X2J0Y184ODUyY19yZl9kbCxcbiYjNDM7XHQucmZfcGFyYV91bGlua192MFx0PSBydHc4OV9idGNfODg1MmNfcmZfdWxfdjAsXG4mIzQzO1x0LnJmX3BhcmFfZGxpbmtfdjBcdD0gcnR3ODlfYnRjXzg4NTJjX3JmX2RsX3YwLFxuJiM0MztcdC5yZl9wYXJhX3VsaW5rX251bV92MFx0PSBBUlJBWV9TSVpFKHJ0dzg5X2J0Y184ODUyY19yZl91bF92MCksXG4mIzQzO1x0LnJmX3BhcmFfZGxpbmtfbnVtX3YwXHQ9IEFSUkFZX1NJWkUocnR3ODlfYnRjXzg4NTJjX3JmX2RsX3YwKSxcbiBcdC5yZl9wYXJhX3VsaW5rX3Y5XHQ9IE5VTEwsXG4gXHQucmZfcGFyYV9kbGlua192OVx0PSBOVUxMLFxuIFx0LnJmX3BhcmFfdWxpbmtfbnVtX3Y5XHQ9IDAsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYS5jXG5pbmRleCBhZDM2MThkZmQ1N2QwMC4uNmQ0MzAxNjYxYjA0YjQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmEuY1xuQEAgLTI3NDUsNyAmIzQzOzI3NDUsNyBAQCBzdGF0aWMgdm9pZCBydHc4OTIyYV9idGNfc2V0X3JmZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4gXHRpZiAobW9kdWxlLVx1MDAzZWt0X3ZlciBcdTAwM2M9IDEpXG4gXHRcdG1vZHVsZS1cdTAwM2V3YV90eXBlIHw9IEJUQ19XQV9IRlBfWkI7XG4gXG4tXHRydHdkZXYtXHUwMDNlYnRjLmN4Lm90aGVyLnR5cGUgPSBCVENfM0NYX05PTkU7XG4mIzQzO1x0cnR3ZGV2LVx1MDAzZWJ0Yy5jeC5idF9leHQuZnVuY190eXBlID0gQlRDXzNDWF9OT05FO1xuIFxuIFx0aWYgKG1vZHVsZS1cdTAwM2VyZmVfdHlwZSA9PSAwKSB7XG4gXHRcdHJ0d2Rldi1cdTAwM2VidGMuZG0uZXJyb3IubWFwLnJmZV90eXBlMCA9IHRydWU7XG5AQCAtMjg3NCw3ICYjNDM7Mjg3NCw3IEBAIHM4IHJ0dzg5MjJhX2J0Y19nZXRfYnRfcnNzaShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHM4IHZhbClcbiBcdHJldHVybiBjbGFtcF90KHM4LCB2YWwsIC0xMDAsIDApICYjNDM7IDEwMDtcbiB9XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9idGNfcmZfdHJ4X3BhcmEgcnR3ODlfYnRjXzg5MjJhX3JmX3VsW10gPSB7XG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3JmX3RyeF9wYXJhX3YwIHJ0dzg5X2J0Y184OTIyYV9yZl91bF92MFtdID0ge1xuIFx0ezI1NSwgMCwgMCwgN30sIC8qIDAgLVx1MDAzZSBvcmlnaW5hbCAqL1xuIFx0ezI1NSwgMiwgMCwgN30sIC8qIDEgLVx1MDAzZSBmb3IgQlQtY29ubmVjdGVkIEFDSSBpc3N1ZSBcdTAwMjZcdTAwMjYgQlRHIGNvLXJ4ICovXG4gXHR7MjU1LCAwLCAwLCA3fSwgLyogMiAtXHUwMDNlcmVzZXJ2ZWQgZm9yIHNoYXJlZC1hbnRlbm5hICovXG5AQCAtMjg4Niw3ICYjNDM7Mjg4Niw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3JmX3RyeF9wYXJhIHJ0dzg5X2J0Y184OTIyYV9yZl91bFtdID0ge1xuIFx0ezEzLCAxLCAwLCA3fVxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9idGNfcmZfdHJ4X3BhcmEgcnR3ODlfYnRjXzg5MjJhX3JmX2RsW10gPSB7XG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3JmX3RyeF9wYXJhX3YwIHJ0dzg5X2J0Y184OTIyYV9yZl9kbF92MFtdID0ge1xuIFx0ezI1NSwgMCwgMCwgN30sIC8qIDAgLVx1MDAzZSBvcmlnaW5hbCAqL1xuIFx0ezI1NSwgMiwgMCwgN30sIC8qIDEgLVx1MDAzZSByZXNlcnZlZCBmb3Igc2hhcmVkLWFudGVubmEgKi9cbiBcdHsyNTUsIDAsIDAsIDd9LCAvKiAyIC1cdTAwM2VyZXNlcnZlZCBmb3Igc2hhcmVkLWFudGVubmEgKi9cbkBAIC0zMjU0LDEwICYjNDM7MzI1NCwxMCBAQCBjb25zdCBzdHJ1Y3QgcnR3ODlfY2hpcF9pbmZvIHJ0dzg5MjJhX2NoaXBfaW5mbyA9IHtcbiBcdC5yc3NpX3RvbFx0XHQ9IDIsXG4gXHQubW9uX3JlZ19udW1cdFx0PSBBUlJBWV9TSVpFKHJ0dzg5X2J0Y184OTIyYV9tb25fcmVnKSxcbiBcdC5tb25fcmVnXHRcdD0gcnR3ODlfYnRjXzg5MjJhX21vbl9yZWcsXG4tXHQucmZfcGFyYV91bGlua19udW1cdD0gQVJSQVlfU0laRShydHc4OV9idGNfODkyMmFfcmZfdWwpLFxuLVx0LnJmX3BhcmFfdWxpbmtcdFx0PSBydHc4OV9idGNfODkyMmFfcmZfdWwsXG4tXHQucmZfcGFyYV9kbGlua19udW1cdD0gQVJSQVlfU0laRShydHc4OV9idGNfODkyMmFfcmZfZGwpLFxuLVx0LnJmX3BhcmFfZGxpbmtcdFx0PSBydHc4OV9idGNfODkyMmFfcmZfZGwsXG4mIzQzO1x0LnJmX3BhcmFfdWxpbmtfdjBcdD0gcnR3ODlfYnRjXzg5MjJhX3JmX3VsX3YwLFxuJiM0MztcdC5yZl9wYXJhX2RsaW5rX3YwXHQ9IHJ0dzg5X2J0Y184OTIyYV9yZl9kbF92MCxcbiYjNDM7XHQucmZfcGFyYV91bGlua19udW1fdjBcdD0gQVJSQVlfU0laRShydHc4OV9idGNfODkyMmFfcmZfdWxfdjApLFxuJiM0MztcdC5yZl9wYXJhX2RsaW5rX251bV92MFx0PSBBUlJBWV9TSVpFKHJ0dzg5X2J0Y184OTIyYV9yZl9kbF92MCksXG4gXHQucmZfcGFyYV91bGlua192OVx0PSBOVUxMLFxuIFx0LnJmX3BhcmFfZGxpbmtfdjlcdD0gTlVMTCxcbiBcdC5yZl9wYXJhX3VsaW5rX251bV92OVx0PSAwLFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuY1xuaW5kZXggODM4YzI2MjMxODk3ZDYuLmY3OGQ2ZDQ2ZTY1ZmJlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmNcbkBAIC0yOTk3LDYgJiM0MzsyOTk3LDQ2IEBAIHN0YXRpYyB1MzIgcnR3ODkyMmRfY2hhbl90b19yZjE4X3ZhbChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4gXG4gc3RhdGljIHZvaWQgcnR3ODkyMmRfYnRjX3NldF9yZmUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuIHtcbiYjNDM7XHR1bmlvbiBydHc4OV9idGNfbW9kdWxlX2luZm8gKm1kID0gXHUwMDI2cnR3ZGV2LVx1MDAzZWJ0Yy5tZGluZm87XG4mIzQzO1x0c3RydWN0IHJ0dzg5X2J0Y19tb2R1bGVfdjcgKm1vZHVsZSA9IFx1MDAyNm1kLVx1MDAzZW1kX3Y3O1xuJiM0MztcbiYjNDM7XHRtb2R1bGUtXHUwMDNlcmZlX3R5cGUgPSBydHdkZXYtXHUwMDNlZWZ1c2UucmZlX3R5cGU7XG4mIzQzO1x0bW9kdWxlLVx1MDAzZWt0X3ZlciA9IHJ0d2Rldi1cdTAwM2VoYWwuY3Y7XG4mIzQzO1x0bW9kdWxlLVx1MDAzZWJ0X3NvbG8gPSAwO1xuJiM0MztcdG1vZHVsZS1cdTAwM2Vzd2l0Y2hfdHlwZSA9IEJUQ19TV0lUQ0hfSU5URVJOQUw7XG4mIzQzO1x0bW9kdWxlLVx1MDAzZXdhX3R5cGUgPSAwO1xuJiM0MztcbiYjNDM7XHRtb2R1bGUtXHUwMDNlYW50LnR5cGUgPSBCVENfQU5UX1NIQVJFRDtcbiYjNDM7XHRtb2R1bGUtXHUwMDNlYW50Lm51bSA9IDI7XG4mIzQzO1x0bW9kdWxlLVx1MDAzZWFudC5pc29sYXRpb24gPSAxMDtcbiYjNDM7XHRtb2R1bGUtXHUwMDNlYW50LmRpdmVyc2l0eSA9IDA7XG4mIzQzO1x0bW9kdWxlLVx1MDAzZWFudC5zaW5nbGVfcG9zID0gUkZfUEFUSF9BO1xuJiM0MztcdG1vZHVsZS1cdTAwM2VhbnQuYnRnX3BvcyA9IFJGX1BBVEhfQjtcbiYjNDM7XG4mIzQzO1x0aWYgKG1vZHVsZS1cdTAwM2VrdF92ZXIgXHUwMDNjPSAxKVxuJiM0MztcdFx0bW9kdWxlLVx1MDAzZXdhX3R5cGUgfD0gQlRDX1dBX0hGUF9aQjtcbiYjNDM7XG4mIzQzO1x0cnR3ZGV2LVx1MDAzZWJ0Yy5jeC5idF9leHQuZnVuY190eXBlID0gQlRDXzNDWF9OT05FO1xuJiM0MztcbiYjNDM7XHRpZiAobW9kdWxlLVx1MDAzZXJmZV90eXBlID09IDApIHtcbiYjNDM7XHRcdHJ0d2Rldi1cdTAwM2VidGMuZG0uZXJyb3IubWFwLnJmZV90eXBlMCA9IHRydWU7XG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRtb2R1bGUtXHUwMDNlYW50Lm51bSA9IChtb2R1bGUtXHUwMDNlcmZlX3R5cGUgJSAyKSA/ICAyIDogMztcbiYjNDM7XG4mIzQzO1x0aWYgKG1vZHVsZS1cdTAwM2VrdF92ZXIgPT0gMClcbiYjNDM7XHRcdG1vZHVsZS1cdTAwM2VhbnQubnVtID0gMjtcbiYjNDM7XG4mIzQzO1x0aWYgKG1vZHVsZS1cdTAwM2VhbnQubnVtID09IDMpIHtcbiYjNDM7XHRcdG1vZHVsZS1cdTAwM2VhbnQudHlwZSA9IEJUQ19BTlRfREVESUNBVEVEO1xuJiM0MztcdFx0bW9kdWxlLVx1MDAzZWJ0X3BvcyA9IEJUQ19CVF9BTE9ORTtcbiYjNDM7XHR9IGVsc2Uge1xuJiM0MztcdFx0bW9kdWxlLVx1MDAzZWFudC50eXBlID0gQlRDX0FOVF9TSEFSRUQ7XG4mIzQzO1x0XHRtb2R1bGUtXHUwMDNlYnRfcG9zID0gQlRDX0JUX0JURztcbiYjNDM7XHR9XG4mIzQzO1x0cnR3ZGV2LVx1MDAzZWJ0Yy5idGdfcG9zID0gbW9kdWxlLVx1MDAzZWFudC5idGdfcG9zO1xuJiM0MztcdHJ0d2Rldi1cdTAwM2VidGMuYW50X3R5cGUgPSBtb2R1bGUtXHUwMDNlYW50LnR5cGU7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIHJ0dzg5MjJkX2J0Y19pbml0X2NmZyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG5AQCAtMzM5MCw2ICYjNDM7MzQzMCwxMCBAQCBjb25zdCBzdHJ1Y3QgcnR3ODlfY2hpcF9pbmZvIHJ0dzg5MjJkX2NoaXBfaW5mbyA9IHtcbiBcdC5yc3NpX3RvbFx0XHQ9IDIsXG4gXHQubW9uX3JlZ19udW1cdFx0PSBBUlJBWV9TSVpFKHJ0dzg5X2J0Y184OTIyZF9tb25fcmVnKSxcbiBcdC5tb25fcmVnXHRcdD0gcnR3ODlfYnRjXzg5MjJkX21vbl9yZWcsXG4mIzQzO1x0LnJmX3BhcmFfdWxpbmtfdjBcdD0gTlVMTCxcbiYjNDM7XHQucmZfcGFyYV9kbGlua192MFx0PSBOVUxMLFxuJiM0MztcdC5yZl9wYXJhX3VsaW5rX251bV92MFx0PSAwLFxuJiM0MztcdC5yZl9wYXJhX2RsaW5rX251bV92MFx0PSAwLFxuIFx0LnJmX3BhcmFfdWxpbmtfdjlcdD0gcnR3ODlfYnRjXzg5MjJkX3JmX3VsX3Y5LFxuIFx0LnJmX3BhcmFfZGxpbmtfdjlcdD0gcnR3ODlfYnRjXzg5MjJkX3JmX2RsX3Y5LFxuIFx0LnJmX3BhcmFfdWxpbmtfbnVtX3Y5XHQ9IEFSUkFZX1NJWkUocnR3ODlfYnRjXzg5MjJkX3JmX3VsX3Y5KSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAwMzo1NjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtSVFc4OV9DT1JFJiMzNDssCiAgICAmIzM0O1JUVzg5Xzg4NTJBRSYjMzQ7LAogICAgJiMzNDtSVFc4OV84ODUyQVUmIzM0OywKICAgICYjMzQ7UlRXODlfODkyMkFFJiMzNDssCiAgICAmIzM0O1JUVzg5Xzg5MjJBVSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3J0dzg5X2Z3X2gyY19jeGRydl90cnhfdjcmIzM0OywKICAgICYjMzQ7cnR3ODlfZndfaDJjX2N4ZHJ2X3RyeF92OSYjMzQ7LAogICAgJiMzNDtydHc4OV9md19oMmNfY3h0eHB3cl92NyYjMzQ7LAogICAgJiMzNDtydHc4OV9md19oMmNfY3h0eHB3cl92OSYjMzQ7LAogICAgJiMzNDtfc2V0X3dsX3R4X3Bvd2VyJiMzNDssCiAgICAmIzM0O19zZXRfd2xfcnhfZ2FpbiYjMzQ7LAogICAgJiMzNDtfc2V0X3JmX3RyeF9wYXJhJiMzNDssCiAgICAmIzM0O191cGRhdGVfYnRfc2NiZCYjMzQ7LAogICAgJiMzNDtfY2hrX2J0Y19yZXBvcnQmIzM0OywKICAgICYjMzQ7cnR3ODlfYnRjX2MyaF9oYW5kbGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggdXBkYXRlcyB0aGUgQmx1ZXRvb3RoIGNvZXhpc3RlbmNlIChCVEMpIGxvZ2ljIGZvciBSZWFsdGVrIFdpLUZpIGRyaXZlcnMgKHJ0dzg5KS4gSXQgYWRkcyBzdXBwb3J0IGZvciBuZXcgZmlybXdhcmUgdmVyc2lvbnMgKHY3LCB2OSkgYW5kIG5ldyBoYXJkd2FyZSAoUlRMODkyMkQpLCBtb2RpZnlpbmcgaG93IFJGIFRYL1JYIHBhcmFtZXRlcnMgYXJlIGNvbmZpZ3VyZWQgYW5kIGhvdyBCVEMgcmVwb3J0cyBhcmUgaGFuZGxlZC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgZHJpdmVyJiMzOTtzIGNvcmUgbG9naWMgYW5kIGZpcm13YXJlIGNvbW11bmljYXRpb24sIHdoaWNoIGNhbiBiZSByZWFjaGVkIHZpYSBzb2Z0d2FyZS1lbXVsYXRlZCBVU0IvUENJIGRldmljZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDBkMDJhNWY5ZjdiNGRiODA4MTRlZjIyY2I5ZTUzNjA5MWU2NWQ3MDIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1biAyNCAwMzo1NjoyNCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMKaW5kZXggMGY3YWU1NzJlZjkxNTEuLjEzNjFkNGQ1NDUyODIxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYwpAQCAtMTEsNyAmIzQzOzExLDcgQEAKICNpbmNsdWRlICYjMzQ7cHMuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O3JlZy5oJiMzNDsKIAotI2RlZmluZSBSVFc4OV9DT0VYX1ZFUlNJT04gMHgwOTAwMDAxMwomIzQzOyNkZWZpbmUgUlRXODlfQ09FWF9WRVJTSU9OIDB4MDkwMDAxMTMKICNkZWZpbmUgRkNYREVGX1NURVAgNTAgLyogTVVTVCAmbHQ7PSBGQ1hNQVhfU1RFUCBhbmQgbWF0Y2ggd2l0aCB3bCBmdyovCiAjZGVmaW5lIEJUQ19FMkdfTElNSVRfREVGIDgwCiAKQEAgLTEzMywxMjUgJiM0MzsxMzMsMTQ5IEBAIHN0YXRpYyBjb25zdCB1MzIgY3h0YmxbXSA9IHsKIAogc3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9idGNfdmVyIHJ0dzg5X2J0Y192ZXJfZGVmc1tdID0gewogCS8qIGZpcm13YXJlIHZlcnNpb24gbXVzdCBiZSBpbiBkZWNyZWFzaW5nIG9yZGVyIGZvciBlYWNoIGNoaXAgKi8KJiM0MzsJe1JUTDg5MjJELCBSVFc4OV9GV19WRVJfQ09ERSgwLCAzNSwgOTQsIDApLAomIzQzOwkgLmZjeGJ0Y3JwdCA9IDExLCAuZmN4dGRtYSA9IDgsICAgIC5mY3hzbG90cyA9IDcsIC5mY3hjeXN0YSA9IDgsCiYjNDM7CSAuZmN4c3RlcCA9IDcsICAgIC5mY3hudWxsc3RhID0gNywgLmZjeG1yZWcgPSA3LCAgLmZjeGdwaW9kYmcgPSA4LAomIzQzOwkgLmZjeGJ0dmVyID0gOCwgICAuZmN4YnRzY2FuID0gOCwgIC5mY3hidGFmaCA9IDgsIC5mY3hidGRldmluZm8gPSA4LAomIzQzOwkgLmZ3bHJvbGUgPSAxMCwgICAgLmZycHRtYXAgPSA1LCAgICAuZmN4Y3RybCA9IDksICAuZmN4aW5pdCA9IDEwLAomIzQzOwkgLmZ3ZXZudHJwdGwgPSAxLCAgLmZ3YzJoZnVuYyA9IDQsIC5kcnZpbmZvX3ZlciA9IDMsIC5pbmZvX2J1ZiA9IDE4MDAsCiYjNDM7CSAubWF4X3JvbGVfbnVtID0gNiwgLmZjeG9zaSA9IDYsICAgLmZjeG1sbyA9IDIsICAgLmJ0X2Rlc2lyZWQgPSA4LAomIzQzOwkgLmZjeHRyeCA9IDksCiYjNDM7CX0sCiAJe1JUTDg4NTJCVCwgUlRXODlfRldfVkVSX0NPREUoMCwgMjksIDEyMiwgMCksCiAJIC5mY3hidGNycHQgPSA4LCAuZmN4dGRtYSA9IDcsICAgIC5mY3hzbG90cyA9IDcsIC5mY3hjeXN0YSA9IDcsCiAJIC5mY3hzdGVwID0gNywgICAuZmN4bnVsbHN0YSA9IDcsIC5mY3htcmVnID0gNywgIC5mY3hncGlvZGJnID0gNywKIAkgLmZjeGJ0dmVyID0gNywgIC5mY3hidHNjYW4gPSA3LCAgLmZjeGJ0YWZoID0gNywgLmZjeGJ0ZGV2aW5mbyA9IDcsCiAJIC5md2xyb2xlID0gNywgICAuZnJwdG1hcCA9IDMsICAgIC5mY3hjdHJsID0gNywgIC5mY3hpbml0ID0gNywKLQkgLmZ3ZXZudHJwdGwgPSAxLCAuZndjMmhmdW5jID0gMiwgLmRydmluZm9fdHlwZSA9IDEsIC5pbmZvX2J1ZiA9IDE4MDAsCiYjNDM7CSAuZndldm50cnB0bCA9IDEsIC5md2MyaGZ1bmMgPSAyLCAuZHJ2aW5mb192ZXIgPSAxLCAuaW5mb19idWYgPSAxODAwLAogCSAubWF4X3JvbGVfbnVtID0gNiwgLmZjeG9zaSA9IDAsICAuZmN4bWxvID0gMCwgICAuYnRfZGVzaXJlZCA9IDgsCiYjNDM7CSAuZmN4dHJ4ID0gMCwKIAl9LAogCXtSVEw4ODUyQlQsIFJUVzg5X0ZXX1ZFUl9DT0RFKDAsIDI5LCA5MCwgMCksCiAJIC5mY3hidGNycHQgPSA3LCAuZmN4dGRtYSA9IDcsICAgIC5mY3hzbG90cyA9IDcsIC5mY3hjeXN0YSA9IDcsCiAJIC5mY3hzdGVwID0gNywgICAuZmN4bnVsbHN0YSA9IDcsIC5mY3htcmVnID0gNywgIC5mY3hncGlvZGJnID0gNywKIAkgLmZjeGJ0dmVyID0gNywgIC5mY3hidHNjYW4gPSA3LCAgLmZjeGJ0YWZoID0gNywgLmZjeGJ0ZGV2aW5mbyA9IDcsCiAJIC5md2xyb2xlID0gNywgICAuZnJwdG1hcCA9IDMsICAgIC5mY3hjdHJsID0gNywgIC5mY3hpbml0ID0gNywKLQkgLmZ3ZXZudHJwdGwgPSAxLCAuZndjMmhmdW5jID0gMiwgLmRydmluZm9fdHlwZSA9IDEsIC5pbmZvX2J1ZiA9IDE4MDAsCiYjNDM7CSAuZndldm50cnB0bCA9IDEsIC5md2MyaGZ1bmMgPSAyLCAuZHJ2aW5mb192ZXIgPSAxLCAuaW5mb19idWYgPSAxODAwLAogCSAubWF4X3JvbGVfbnVtID0gNiwgLmZjeG9zaSA9IDAsICAuZmN4bWxvID0gMCwgICAuYnRfZGVzaXJlZCA9IDgsCiYjNDM7CSAuZmN4dHJ4ID0gMCwKIAl9LAogCXtSVEw4OTIyQSwgUlRXODlfRldfVkVSX0NPREUoMCwgMzUsIDcxLCAwKSwKIAkgLmZjeGJ0Y3JwdCA9IDgsIC5mY3h0ZG1hID0gNywgICAgLmZjeHNsb3RzID0gNywgLmZjeGN5c3RhID0gNywKIAkgLmZjeHN0ZXAgPSA3LCAgIC5mY3hudWxsc3RhID0gNywgLmZjeG1yZWcgPSA3LCAgLmZjeGdwaW9kYmcgPSA3LAogCSAuZmN4YnR2ZXIgPSA3LCAgLmZjeGJ0c2NhbiA9IDcsICAuZmN4YnRhZmggPSA3LCAuZmN4YnRkZXZpbmZvID0gNywKIAkgLmZ3bHJvbGUgPSA4LCAgIC5mcnB0bWFwID0gNCwgICAgLmZjeGN0cmwgPSA3LCAgLmZjeGluaXQgPSA3LAotCSAuZndldm50cnB0bCA9IDEsIC5md2MyaGZ1bmMgPSAzLCAuZHJ2aW5mb190eXBlID0gMiwgLmluZm9fYnVmID0gMTgwMCwKJiM0MzsJIC5md2V2bnRycHRsID0gMSwgLmZ3YzJoZnVuYyA9IDMsIC5kcnZpbmZvX3ZlciA9IDMsIC5pbmZvX2J1ZiA9IDE4MDAsCiAJIC5tYXhfcm9sZV9udW0gPSA2LCAuZmN4b3NpID0gMSwgIC5mY3htbG8gPSAxLCAgIC5idF9kZXNpcmVkID0gOSwKJiM0MzsJIC5mY3h0cnggPSA3LAogCX0sCiAJe1JUTDg5MjJBLCBSVFc4OV9GV19WRVJfQ09ERSgwLCAzNSwgNjMsIDApLAogCSAuZmN4YnRjcnB0ID0gOCwgLmZjeHRkbWEgPSA3LCAgICAuZmN4c2xvdHMgPSA3LCAuZmN4Y3lzdGEgPSA3LAogCSAuZmN4c3RlcCA9IDcsICAgLmZjeG51bGxzdGEgPSA3LCAuZmN4bXJlZyA9IDcsICAuZmN4Z3Bpb2RiZyA9IDcsCiAJIC5mY3hidHZlciA9IDcsICAuZmN4YnRzY2FuID0gNywgIC5mY3hidGFmaCA9IDcsIC5mY3hidGRldmluZm8gPSA3LAogCSAuZndscm9sZSA9IDgsICAgLmZycHRtYXAgPSA0LCAgICAuZmN4Y3RybCA9IDcsICAuZmN4aW5pdCA9IDcsCi0JIC5md2V2bnRycHRsID0gMSwgLmZ3YzJoZnVuYyA9IDMsIC5kcnZpbmZvX3R5cGUgPSAyLCAuaW5mb19idWYgPSAxODAwLAomIzQzOwkgLmZ3ZXZudHJwdGwgPSAxLCAuZndjMmhmdW5jID0gMywgLmRydmluZm9fdmVyID0gMiwgLmluZm9fYnVmID0gMTgwMCwKIAkgLm1heF9yb2xlX251bSA9IDYsIC5mY3hvc2kgPSAxLCAgLmZjeG1sbyA9IDEsICAgLmJ0X2Rlc2lyZWQgPSA5LAomIzQzOwkgLmZjeHRyeCA9IDAsCiAJfSwKIAl7UlRMODkyMkEsIFJUVzg5X0ZXX1ZFUl9DT0RFKDAsIDM1LCA4LCAwKSwKIAkgLmZjeGJ0Y3JwdCA9IDgsIC5mY3h0ZG1hID0gNywgICAgLmZjeHNsb3RzID0gNywgLmZjeGN5c3RhID0gNywKIAkgLmZjeHN0ZXAgPSA3LCAgIC5mY3hudWxsc3RhID0gNywgLmZjeG1yZWcgPSA3LCAgLmZjeGdwaW9kYmcgPSA3LAogCSAuZmN4YnR2ZXIgPSA3LCAgLmZjeGJ0c2NhbiA9IDcsICAuZmN4YnRhZmggPSA3LCAuZmN4YnRkZXZpbmZvID0gNywKIAkgLmZ3bHJvbGUgPSA4LCAgIC5mcnB0bWFwID0gMywgICAgLmZjeGN0cmwgPSA3LCAgLmZjeGluaXQgPSA3LAotCSAuZndldm50cnB0bCA9IDEsIC5md2MyaGZ1bmMgPSAxLCAuZHJ2aW5mb190eXBlID0gMSwgLmluZm9fYnVmID0gMTgwMCwKJiM0MzsJIC5md2V2bnRycHRsID0gMSwgLmZ3YzJoZnVuYyA9IDEsIC5kcnZpbmZvX3ZlciA9IDEsIC5pbmZvX2J1ZiA9IDE4MDAsCiAJIC5tYXhfcm9sZV9udW0gPSA2LCAuZmN4b3NpID0gMCwgIC5mY3htbG8gPSAwLCAgIC5idF9kZXNpcmVkID0gNywKJiM0MzsJIC5mY3h0cnggPSAwLAogCX0sCiAJe1JUTDg4NTFCLCBSVFc4OV9GV19WRVJfQ09ERSgwLCAyOSwgMjksIDApLAogCSAuZmN4YnRjcnB0ID0gMTA1LCAuZmN4dGRtYSA9IDMsICAgIC5mY3hzbG90cyA9IDEsIC5mY3hjeXN0YSA9IDUsCiAJIC5mY3hzdGVwID0gMywgICAuZmN4bnVsbHN0YSA9IDIsIC5mY3htcmVnID0gMiwgIC5mY3hncGlvZGJnID0gMSwKIAkgLmZjeGJ0dmVyID0gMSwgIC5mY3hidHNjYW4gPSAyLCAgLmZjeGJ0YWZoID0gMiwgLmZjeGJ0ZGV2aW5mbyA9IDEsCiAJIC5md2xyb2xlID0gMiwgICAuZnJwdG1hcCA9IDMsICAgIC5mY3hjdHJsID0gMSwgIC5mY3hpbml0ID0gMCwKLQkgLmZ3ZXZudHJwdGwgPSAwLCAuZndjMmhmdW5jID0gMSwgLmRydmluZm9fdHlwZSA9IDAsIC5pbmZvX2J1ZiA9IDE4MDAsCiYjNDM7CSAuZndldm50cnB0bCA9IDAsIC5md2MyaGZ1bmMgPSAxLCAuZHJ2aW5mb192ZXIgPSAwLCAuaW5mb19idWYgPSAxODAwLAogCSAubWF4X3JvbGVfbnVtID0gNiwgLmZjeG9zaSA9IDAsICAuZmN4bWxvID0gMCwgICAuYnRfZGVzaXJlZCA9IDcsCiYjNDM7CSAuZmN4dHJ4ID0gMCwKIAl9LAogCXtSVEw4ODUyQywgUlRXODlfRldfVkVSX0NPREUoMCwgMjcsIDU3LCAwKSwKIAkgLmZjeGJ0Y3JwdCA9IDQsIC5mY3h0ZG1hID0gMywgICAgLmZjeHNsb3RzID0gMSwgLmZjeGN5c3RhID0gMywKIAkgLmZjeHN0ZXAgPSAzLCAgIC5mY3hudWxsc3RhID0gMiwgLmZjeG1yZWcgPSAxLCAgLmZjeGdwaW9kYmcgPSAxLAogCSAuZmN4YnR2ZXIgPSAxLCAgLmZjeGJ0c2NhbiA9IDEsICAuZmN4YnRhZmggPSAyLCAuZmN4YnRkZXZpbmZvID0gMSwKIAkgLmZ3bHJvbGUgPSAxLCAgIC5mcnB0bWFwID0gMywgICAgLmZjeGN0cmwgPSAxLCAgLmZjeGluaXQgPSAwLAotCSAuZndldm50cnB0bCA9IDAsIC5md2MyaGZ1bmMgPSAxLCAuZHJ2aW5mb190eXBlID0gMCwgLmluZm9fYnVmID0gMTI4MCwKJiM0MzsJIC5md2V2bnRycHRsID0gMCwgLmZ3YzJoZnVuYyA9IDEsIC5kcnZpbmZvX3ZlciA9IDAsIC5pbmZvX2J1ZiA9IDEyODAsCiAJIC5tYXhfcm9sZV9udW0gPSA1LCAuZmN4b3NpID0gMCwgIC5mY3htbG8gPSAwLCAgIC5idF9kZXNpcmVkID0gNywKJiM0MzsJIC5mY3h0cnggPSAwLAogCX0sCiAJe1JUTDg4NTJDLCBSVFc4OV9GV19WRVJfQ09ERSgwLCAyNywgNDIsIDApLAogCSAuZmN4YnRjcnB0ID0gNCwgLmZjeHRkbWEgPSAzLCAgICAuZmN4c2xvdHMgPSAxLCAuZmN4Y3lzdGEgPSAzLAogCSAuZmN4c3RlcCA9IDMsICAgLmZjeG51bGxzdGEgPSAyLCAuZmN4bXJlZyA9IDEsICAuZmN4Z3Bpb2RiZyA9IDEsCiAJIC5mY3hidHZlciA9IDEsICAuZmN4YnRzY2FuID0gMSwgIC5mY3hidGFmaCA9IDIsIC5mY3hidGRldmluZm8gPSAxLAogCSAuZndscm9sZSA9IDEsICAgLmZycHRtYXAgPSAyLCAgICAuZmN4Y3RybCA9IDEsICAuZmN4aW5pdCA9IDAsCi0JIC5md2V2bnRycHRsID0gMCwgLmZ3YzJoZnVuYyA9IDEsIC5kcnZpbmZvX3R5cGUgPSAwLCAuaW5mb19idWYgPSAxMjgwLAomIzQzOwkgLmZ3ZXZudHJwdGwgPSAwLCAuZndjMmhmdW5jID0gMSwgLmRydmluZm9fdmVyID0gMCwgLmluZm9fYnVmID0gMTI4MCwKIAkgLm1heF9yb2xlX251bSA9IDUsIC5mY3hvc2kgPSAwLCAgLmZjeG1sbyA9IDAsICAgLmJ0X2Rlc2lyZWQgPSA3LAomIzQzOwkgLmZjeHRyeCA9IDAsCiAJfSwKIAl7UlRMODg1MkMsIFJUVzg5X0ZXX1ZFUl9DT0RFKDAsIDI3LCAwLCAwKSwKIAkgLmZjeGJ0Y3JwdCA9IDQsIC5mY3h0ZG1hID0gMywgICAgLmZjeHNsb3RzID0gMSwgLmZjeGN5c3RhID0gMywKIAkgLmZjeHN0ZXAgPSAzLCAgIC5mY3hudWxsc3RhID0gMiwgLmZjeG1yZWcgPSAxLCAgLmZjeGdwaW9kYmcgPSAxLAogCSAuZmN4YnR2ZXIgPSAxLCAgLmZjeGJ0c2NhbiA9IDEsICAuZmN4YnRhZmggPSAxLCAuZmN4YnRkZXZpbmZvID0gMSwKIAkgLmZ3bHJvbGUgPSAxLCAgIC5mcnB0bWFwID0gMiwgICAgLmZjeGN0cmwgPSAxLCAgLmZjeGluaXQgPSAwLAotCSAuZndldm50cnB0bCA9IDAsIC5md2MyaGZ1bmMgPSAxLCAuZHJ2aW5mb190eXBlID0gMCwgLmluZm9fYnVmID0gMTI4MCwKJiM0MzsJIC5md2V2bnRycHRsID0gMCwgLmZ3YzJoZnVuYyA9IDEsIC5kcnZpbmZvX3ZlciA9IDAsIC5pbmZvX2J1ZiA9IDEyODAsCiAJIC5tYXhfcm9sZV9udW0gPSA1LCAuZmN4b3NpID0gMCwgIC5mY3htbG8gPSAwLCAgIC5idF9kZXNpcmVkID0gNywKJiM0MzsJIC5mY3h0cnggPSAwLAogCX0sCiAJe1JUTDg4NTJCLCBSVFc4OV9GV19WRVJfQ09ERSgwLCAyOSwgMTIyLCAwKSwKIAkgLmZjeGJ0Y3JwdCA9IDgsIC5mY3h0ZG1hID0gNywgICAgLmZjeHNsb3RzID0gNywgLmZjeGN5c3RhID0gNywKIAkgLmZjeHN0ZXAgPSA3LCAgIC5mY3hudWxsc3RhID0gNywgLmZjeG1yZWcgPSA3LCAgLmZjeGdwaW9kYmcgPSA3LAogCSAuZmN4YnR2ZXIgPSA3LCAgLmZjeGJ0c2NhbiA9IDcsICAuZmN4YnRhZmggPSA3LCAuZmN4YnRkZXZpbmZvID0gNywKIAkgLmZ3bHJvbGUgPSA3LCAgIC5mcnB0bWFwID0gMywgICAgLmZjeGN0cmwgPSA3LCAgLmZjeGluaXQgPSA3LAotCSAuZndldm50cnB0bCA9IDEsIC5md2MyaGZ1bmMgPSAyLCAuZHJ2aW5mb190eXBlID0gMSwgLmluZm9fYnVmID0gMTgwMCwKJiM0MzsJIC5md2V2bnRycHRsID0gMSwgLmZ3YzJoZnVuYyA9IDIsIC5kcnZpbmZvX3ZlciA9IDEsIC5pbmZvX2J1ZiA9IDE4MDAsCiAJIC5tYXhfcm9sZV9udW0gPSA2LCAuZmN4b3NpID0gMCwgIC5mY3htbG8gPSAwLCAgIC5idF9kZXNpcmVkID0gOCwKJiM0MzsJIC5mY3h0cnggPSAwLAogCX0sCiAJe1JUTDg4NTJCLCBSVFc4OV9GV19WRVJfQ09ERSgwLCAyOSwgMjksIDApLAogCSAuZmN4YnRjcnB0ID0gMTA1LCAuZmN4dGRtYSA9IDMsICAuZmN4c2xvdHMgPSAxLCAuZmN4Y3lzdGEgPSA1LAogCSAuZmN4c3RlcCA9IDMsICAgLmZjeG51bGxzdGEgPSAyLCAuZmN4bXJlZyA9IDIsICAuZmN4Z3Bpb2RiZyA9IDEsCiAJIC5mY3hidHZlciA9IDEsICAuZmN4YnRzY2FuID0gMiwgIC5mY3hidGFmaCA9IDIsIC5mY3hidGRldmluZm8gPSAxLAogCSAuZndscm9sZSA9IDIsICAgLmZycHRtYXAgPSAzLCAgICAuZmN4Y3RybCA9IDEsICAuZmN4aW5pdCA9IDAsCi0JIC5md2V2bnRycHRsID0gMCwgLmZ3YzJoZnVuYyA9IDEsIC5kcnZpbmZvX3R5cGUgPSAwLCAuaW5mb19idWYgPSAxODAwLAomIzQzOwkgLmZ3ZXZudHJwdGwgPSAwLCAuZndjMmhmdW5jID0gMSwgLmRydmluZm9fdmVyID0gMCwgLmluZm9fYnVmID0gMTgwMCwKIAkgLm1heF9yb2xlX251bSA9IDYsIC5mY3hvc2kgPSAwLCAgLmZjeG1sbyA9IDAsICAgLmJ0X2Rlc2lyZWQgPSA3LAomIzQzOwkgLmZjeHRyeCA9IDAsCiAJfSwKIAl7UlRMODg1MkIsIFJUVzg5X0ZXX1ZFUl9DT0RFKDAsIDI5LCAxNCwgMCksCiAJIC5mY3hidGNycHQgPSA1LCAuZmN4dGRtYSA9IDMsICAgIC5mY3hzbG90cyA9IDEsIC5mY3hjeXN0YSA9IDQsCiAJIC5mY3hzdGVwID0gMywgICAuZmN4bnVsbHN0YSA9IDIsIC5mY3htcmVnID0gMSwgIC5mY3hncGlvZGJnID0gMSwKIAkgLmZjeGJ0dmVyID0gMSwgIC5mY3hidHNjYW4gPSAxLCAgLmZjeGJ0YWZoID0gMiwgLmZjeGJ0ZGV2aW5mbyA9IDEsCiAJIC5md2xyb2xlID0gMSwgICAuZnJwdG1hcCA9IDMsICAgIC5mY3hjdHJsID0gMSwgIC5mY3hpbml0ID0gMCwKLQkgLmZ3ZXZudHJwdGwgPSAwLCAuZndjMmhmdW5jID0gMSwgLmRydmluZm9fdHlwZSA9IDAsIC5pbmZvX2J1ZiA9IDE4MDAsCiYjNDM7CSAuZndldm50cnB0bCA9IDAsIC5md2MyaGZ1bmMgPSAxLCAuZHJ2aW5mb192ZXIgPSAwLCAuaW5mb19idWYgPSAxODAwLAogCSAubWF4X3JvbGVfbnVtID0gNiwgLmZjeG9zaSA9IDAsICAuZmN4bWxvID0gMCwgICAuYnRfZGVzaXJlZCA9IDcsCiYjNDM7CSAuZmN4dHJ4ID0gMCwKIAl9LAogCXtSVEw4ODUyQiwgUlRXODlfRldfVkVSX0NPREUoMCwgMjcsIDAsIDApLAogCSAuZmN4YnRjcnB0ID0gNCwgLmZjeHRkbWEgPSAzLCAgICAuZmN4c2xvdHMgPSAxLCAuZmN4Y3lzdGEgPSAzLAogCSAuZmN4c3RlcCA9IDMsICAgLmZjeG51bGxzdGEgPSAyLCAuZmN4bXJlZyA9IDEsICAuZmN4Z3Bpb2RiZyA9IDEsCiAJIC5mY3hidHZlciA9IDEsICAuZmN4YnRzY2FuID0gMSwgIC5mY3hidGFmaCA9IDEsIC5mY3hidGRldmluZm8gPSAxLAogCSAuZndscm9sZSA9IDEsICAgLmZycHRtYXAgPSAxLCAgICAuZmN4Y3RybCA9IDEsICAuZmN4aW5pdCA9IDAsCi0JIC5md2V2bnRycHRsID0gMCwgLmZ3YzJoZnVuYyA9IDEsIC5kcnZpbmZvX3R5cGUgPSAwLCAuaW5mb19idWYgPSAxMjgwLAomIzQzOwkgLmZ3ZXZudHJwdGwgPSAwLCAuZndjMmhmdW5jID0gMSwgLmRydmluZm9fdmVyID0gMCwgLmluZm9fYnVmID0gMTI4MCwKIAkgLm1heF9yb2xlX251bSA9IDUsIC5mY3hvc2kgPSAwLCAgLmZjeG1sbyA9IDAsICAgLmJ0X2Rlc2lyZWQgPSA3LAomIzQzOwkgLmZjeHRyeCA9IDAsCiAJfSwKIAl7UlRMODg1MkEsIFJUVzg5X0ZXX1ZFUl9DT0RFKDAsIDEzLCAzNywgMCksCiAJIC5mY3hidGNycHQgPSA0LCAuZmN4dGRtYSA9IDMsICAgIC5mY3hzbG90cyA9IDEsIC5mY3hjeXN0YSA9IDMsCiAJIC5mY3hzdGVwID0gMywgICAuZmN4bnVsbHN0YSA9IDIsIC5mY3htcmVnID0gMSwgIC5mY3hncGlvZGJnID0gMSwKIAkgLmZjeGJ0dmVyID0gMSwgIC5mY3hidHNjYW4gPSAxLCAgLmZjeGJ0YWZoID0gMiwgLmZjeGJ0ZGV2aW5mbyA9IDEsCiAJIC5md2xyb2xlID0gMSwgICAuZnJwdG1hcCA9IDMsICAgIC5mY3hjdHJsID0gMSwgIC5mY3hpbml0ID0gMCwKLQkgLmZ3ZXZudHJwdGwgPSAwLCAuZndjMmhmdW5jID0gMCwgLmRydmluZm9fdHlwZSA9IDAsIC5pbmZvX2J1ZiA9IDEyODAsCiYjNDM7CSAuZndldm50cnB0bCA9IDAsIC5md2MyaGZ1bmMgPSAwLCAuZHJ2aW5mb192ZXIgPSAwLCAuaW5mb19idWYgPSAxMjgwLAogCSAubWF4X3JvbGVfbnVtID0gNSwgLmZjeG9zaSA9IDAsICAuZmN4bWxvID0gMCwgICAuYnRfZGVzaXJlZCA9IDcsCiYjNDM7CSAuZmN4dHJ4ID0gMCwKIAl9LAogCXtSVEw4ODUyQSwgUlRXODlfRldfVkVSX0NPREUoMCwgMTMsIDAsIDApLAogCSAuZmN4YnRjcnB0ID0gMSwgLmZjeHRkbWEgPSAxLCAgICAuZmN4c2xvdHMgPSAxLCAuZmN4Y3lzdGEgPSAyLAogCSAuZmN4c3RlcCA9IDIsICAgLmZjeG51bGxzdGEgPSAxLCAuZmN4bXJlZyA9IDEsICAuZmN4Z3Bpb2RiZyA9IDEsCiAJIC5mY3hidHZlciA9IDEsICAuZmN4YnRzY2FuID0gMSwgIC5mY3hidGFmaCA9IDEsIC5mY3hidGRldmluZm8gPSAxLAogCSAuZndscm9sZSA9IDAsICAgLmZycHRtYXAgPSAwLCAgICAuZmN4Y3RybCA9IDAsICAuZmN4aW5pdCA9IDAsCi0JIC5md2V2bnRycHRsID0gMCwgLmZ3YzJoZnVuYyA9IDAsIC5kcnZpbmZvX3R5cGUgPSAwLCAuaW5mb19idWYgPSAxMDI0LAomIzQzOwkgLmZ3ZXZudHJwdGwgPSAwLCAuZndjMmhmdW5jID0gMCwgLmRydmluZm9fdmVyID0gMCwgLmluZm9fYnVmID0gMTAyNCwKIAkgLm1heF9yb2xlX251bSA9IDUsIC5mY3hvc2kgPSAwLCAgLmZjeG1sbyA9IDAsICAgLmJ0X2Rlc2lyZWQgPSA3LAomIzQzOwkgLmZjeHRyeCA9IDAsCiAJfSwKIAogCS8qIGtlZXAgaXQgdG8gYmUgdGhlIGxhc3QgYXMgZGVmYXVsdCBlbnRyeSAqLwpAQCAtMjYwLDggJiM0MzsyODQsOSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2J0Y192ZXIgcnR3ODlfYnRjX3Zlcl9kZWZzW10gPSB7CiAJIC5mY3hzdGVwID0gMiwgICAuZmN4bnVsbHN0YSA9IDEsIC5mY3htcmVnID0gMSwgIC5mY3hncGlvZGJnID0gMSwKIAkgLmZjeGJ0dmVyID0gMSwgIC5mY3hidHNjYW4gPSAxLCAgLmZjeGJ0YWZoID0gMSwgLmZjeGJ0ZGV2aW5mbyA9IDEsCiAJIC5md2xyb2xlID0gMCwgICAuZnJwdG1hcCA9IDAsICAgIC5mY3hjdHJsID0gMCwgIC5mY3hpbml0ID0gMCwKLQkgLmZ3ZXZudHJwdGwgPSAwLCAuZndjMmhmdW5jID0gMSwgLmRydmluZm9fdHlwZSA9IDAsIC5pbmZvX2J1ZiA9IDEwMjQsCiYjNDM7CSAuZndldm50cnB0bCA9IDAsIC5md2MyaGZ1bmMgPSAxLCAuZHJ2aW5mb192ZXIgPSAwLCAuaW5mb19idWYgPSAxMDI0LAogCSAubWF4X3JvbGVfbnVtID0gNSwgLmZjeG9zaSA9IDAsICAuZmN4bWxvID0gMCwgICAuYnRfZGVzaXJlZCA9IDcsCiYjNDM7CSAuZmN4dHJ4ID0gMCwKIAl9LAogfTsKIApAQCAtMjg4LDYgJiM0MzszMTMsNyBAQCBzdGF0aWMgdTMyIGNoaXBfaWRfdG9fYnRfcm9tX2NvZGVfaWQodTMyIGlkKQogCWNhc2UgUlRMODg1MUI6CiAJCXJldHVybiAweDg4NTE7CiAJY2FzZSBSVEw4OTIyQToKJiM0MzsJY2FzZSBSVEw4OTIyRDoKIAkJcmV0dXJuIDB4ODkyMjsKIAlkZWZhdWx0OgogCQlyZXR1cm4gMDsKQEAgLTMyMiw2ICYjNDM7MzQ4LDggQEAgc3RhdGljIGNoYXIgKmNoaXBfaWRfc3RyKHUzMiBpZCkKIAkJcmV0dXJuICYjMzQ7UlRMODg1MUImIzM0OzsKIAljYXNlIFJUTDg5MjJBOgogCQlyZXR1cm4gJiMzNDtSVEw4OTIyQSYjMzQ7OwomIzQzOwljYXNlIFJUTDg5MjJEOgomIzQzOwkJcmV0dXJuICYjMzQ7UlRMODkyMkQmIzM0OzsKIAlkZWZhdWx0OgogCQlyZXR1cm4gJiMzNDtVTktOT1dOJiMzNDs7CiAJfQpAQCAtNDM0LDYgJiM0Mzs0NjIsOCBAQCBlbnVtIGJ0Y19iMndfc2NvcmVib2FyZCB7CiAJQlRDX0JTQ0JfV0xSRksgPSBCSVQoMTEpLAogCUJUQ19CU0NCX0JUX0hJTE5BID0gQklUKDEzKSwKIAlCVENfQlNDQl9CVF9DT05ORUNUID0gQklUKDE2KSwKJiM0MzsJQlRDX0JTQ0JfUEFOX0FDVCA9IEJJVCgyOCksCiYjNDM7CUJUQ19CU0NCX0hGUF9BQ1QgPSBCSVQoMjkpLAogCUJUQ19CU0NCX1BBVENIX0NPREUgPSBCSVQoMzApLAogCUJUQ19CU0NCX0FMTCA9IEdFTk1BU0soMzAsIDApLAogfTsKQEAgLTkyMiw3ICYjNDM7OTUyLDcgQEAgc3RhdGljIHZvaWQgX3Jlc2V0X2J0Y192YXIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCB0eXBlKQogCWNvbnN0IHN0cnVjdCBydHc4OV9idGNfdmVyICp2ZXIgPSBidGMtJmd0O3ZlcjsKIAlzdHJ1Y3QgcnR3ODlfYnRjX2N4ICpjeCA9ICZhbXA7YnRjLSZndDtjeDsKIAlzdHJ1Y3QgcnR3ODlfYnRjX3dsX2luZm8gKndsID0gJmFtcDtidGMtJmd0O2N4LndsOwotCXN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSAmYW1wO2J0Yy0mZ3Q7Y3guYnQ7CiYjNDM7CXN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSAmYW1wO2J0Yy0mZ3Q7Y3guYnQwOwogCXN0cnVjdCBydHc4OV9idGNfYnRfbGlua19pbmZvICpidF9saW5mbyA9ICZhbXA7YnQtJmd0O2xpbmtfaW5mbzsKIAlzdHJ1Y3QgcnR3ODlfYnRjX3dsX2xpbmtfaW5mbyAqd2xfbGluZm87CiAJdTggaTsKQEAgLTk3Myw4ICYjNDM7MTAwMyw4IEBAIHN0YXRpYyB2b2lkIF9yZXNldF9idGNfdmFyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggdHlwZSkKIAkJfQogCiAJCWJ0Yy0mZ3Q7cG9saWN5X2xlbiA9IDA7Ci0JCWJ0Yy0mZ3Q7YnRfcmVxX2xlbiA9IDA7Ci0KJiM0MzsJCWJ0Yy0mZ3Q7YnRfcmVxX2xlbltSVFc4OV9QSFlfMF0gPSAwOwomIzQzOwkJYnRjLSZndDtidF9yZXFfbGVuW1JUVzg5X1BIWV8xXSA9IDA7CiAJCWJ0Yy0mZ3Q7ZG0uY29leF9pbmZvX21hcCA9IEJUQ19DT0VYX0lORk9fQUxMOwogCQlidGMtJmd0O2RtLndsX3R4X2xpbWl0LnR4X3RpbWUgPSBCVENfTUFYX1RYX1RJTUVfREVGOwogCQlidGMtJmd0O2RtLndsX3R4X2xpbWl0LnR4X3JldHJ5ID0gQlRDX01BWF9UWF9SRVRSWV9ERUY7CkBAIC0xMTA0LDcgJiM0MzsxMTM0LDcgQEAgc3RhdGljIHZvaWQgX2Noa19idGNfZXJyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggdHlwZSwgdTMyIGNudCkKIHsKIAlzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSAmYW1wO3J0d2Rldi0mZ3Q7YnRjOwogCXN0cnVjdCBydHc4OV9idGNfY3ggKmN4ID0gJmFtcDtidGMtJmd0O2N4OwotCXN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSAmYW1wO2N4LSZndDtidDsKJiM0MzsJc3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9ICZhbXA7Y3gtJmd0O2J0MDsKIAlzdHJ1Y3QgcnR3ODlfYnRjX3dsX2luZm8gKndsID0gJmFtcDtjeC0mZ3Q7d2w7CiAJc3RydWN0IHJ0dzg5X2J0Y19kbSAqZG0gPSAmYW1wO2J0Yy0mZ3Q7ZG07CiAKQEAgLTEyMTYsNyAmIzQzOzEyNDYsNyBAQCBzdGF0aWMgdm9pZCBfY2hrX2J0Y19lcnIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCB0eXBlLCB1MzIgY250KQogCQkJZG0tJmd0O2Vycm9yLm1hcC5zbG90X25vX3N5bmMgPSBmYWxzZTsKIAkJYnJlYWs7CiAJY2FzZSBCVENfRENOVF9CVFRYX0hBTkc6Ci0JCWNudCA9IGN4LSZndDtjbnRfYnRbQlRDX0JDTlRfTE9QUklfVFhdOwomIzQzOwkJY250ID0gYnQtJmd0O2JjbnRbQlRDX0JDTlRfTE9QUklfVFhdOwogCiAJCWlmIChjbnQgPT0gMCAmYW1wOyZhbXA7IGJ0LSZndDtsaW5rX2luZm8uc2xhdmVfcm9sZSkKIAkJCWRtLSZndDtjbnRfZG1bQlRDX0RDTlRfQlRUWF9IQU5HXSYjNDM7JiM0Mzs7CkBAIC0xMjI5LDEwICYjNDM7MTI1OSwxMCBAQCBzdGF0aWMgdm9pZCBfY2hrX2J0Y19lcnIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCB0eXBlLCB1MzIgY250KQogCQkJZG0tJmd0O2Vycm9yLm1hcC5idF90eF9oYW5nID0gZmFsc2U7CiAJCWJyZWFrOwogCWNhc2UgQlRDX0RDTlRfQlRDTlRfSEFORzoKLQkJY250ID0gY3gtJmd0O2NudF9idFtCVENfQkNOVF9ISVBSSV9SWF0gJiM0MzsKLQkJICAgICAgY3gtJmd0O2NudF9idFtCVENfQkNOVF9ISVBSSV9UWF0gJiM0MzsKLQkJICAgICAgY3gtJmd0O2NudF9idFtCVENfQkNOVF9MT1BSSV9SWF0gJiM0MzsKLQkJICAgICAgY3gtJmd0O2NudF9idFtCVENfQkNOVF9MT1BSSV9UWF07CiYjNDM7CQljbnQgPSBidC0mZ3Q7YmNudFtCVENfQkNOVF9ISVBSSV9SWF0gJiM0MzsKJiM0MzsJCSAgICAgIGJ0LSZndDtiY250W0JUQ19CQ05UX0hJUFJJX1RYXSAmIzQzOwomIzQzOwkJICAgICAgYnQtJmd0O2JjbnRbQlRDX0JDTlRfTE9QUklfUlhdICYjNDM7CiYjNDM7CQkgICAgICBidC0mZ3Q7YmNudFtCVENfQkNOVF9MT1BSSV9UWF07CiAKIAkJaWYgKGNudCA9PSAwKQogCQkJZG0tJmd0O2NudF9kbVtCVENfRENOVF9CVENOVF9IQU5HXSYjNDM7JiM0Mzs7CkBAIC0xMjc0LDcgJiM0MzsxMzA0LDcgQEAgc3RhdGljIHZvaWQgX3VwZGF0ZV9idF9yZXBvcnQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCBycHRfdHlwZSwgdTggKnBmaW5mbykKIHsKIAlzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSAmYW1wO3J0d2Rldi0mZ3Q7YnRjOwogCWNvbnN0IHN0cnVjdCBydHc4OV9idGNfdmVyICp2ZXIgPSBidGMtJmd0O3ZlcjsKLQlzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gJmFtcDtidGMtJmd0O2N4LmJ0OwomIzQzOwlzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gJmFtcDtidGMtJmd0O2N4LmJ0MDsKIAlzdHJ1Y3QgcnR3ODlfYnRjX2J0X2xpbmtfaW5mbyAqYnRfbGluZm8gPSAmYW1wO2J0LSZndDtsaW5rX2luZm87CiAJc3RydWN0IHJ0dzg5X2J0Y19idF9hMmRwX2Rlc2MgKmEyZHAgPSAmYW1wO2J0X2xpbmZvLSZndDthMmRwX2Rlc2M7CiAJdW5pb24gIHJ0dzg5X2J0Y19mYnRjX2J0dmVyICpwdmVyID0gJmFtcDtidGMtJmd0O2Z3aW5mby5ycHRfZmJ0Y19idHZlci5maW5mbzsKQEAgLTE0MTUsNyAmIzQzOzE0NDUsNyBAQCBzdGF0aWMgdTMyIF9jaGtfYnRjX3JlcG9ydChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsCiAJc3RydWN0IHJ0dzg5X2J0Y19kbSAqZG0gPSAmYW1wO2J0Yy0mZ3Q7ZG07CiAJc3RydWN0IHJ0dzg5X2J0Y19ycHRfY21uX2luZm8gKnBjaW5mbyA9IE5VTEw7CiAJc3RydWN0IHJ0dzg5X2J0Y193bF9pbmZvICp3bCA9ICZhbXA7YnRjLSZndDtjeC53bDsKLQlzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gJmFtcDtidGMtJmd0O2N4LmJ0OwomIzQzOwlzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gJmFtcDtidGMtJmd0O2N4LmJ0MDsKIAl1bmlvbiBydHc4OV9idGNfZmJ0Y19ycHRfY3RybF92ZXJfaW5mbyAqcHJwdCA9IE5VTEw7CiAJdW5pb24gcnR3ODlfYnRjX2ZidGNfY3lzdGFfaW5mbyAqcGN5c3RhID0gTlVMTDsKIAlzdHJ1Y3QgcnR3ODlfYnRjX3BycHQgKmJ0Y19wcnB0ID0gTlVMTDsKQEAgLTE3MjEsNyAmIzQzOzE3NTEsNyBAQCBzdGF0aWMgdTMyIF9jaGtfYnRjX3JlcG9ydChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsCiAJCQkJcnR3ZGV2LSZndDtjaGlwLSZndDtvcHMtJmd0O2J0Y191cGRhdGVfYnRfY250KHJ0d2Rldik7CiAJCQkJX2Noa19idGNfZXJyKHJ0d2RldiwgQlRDX0RDTlRfQlRDTlRfSEFORywgMCk7CiAKLQkJCQlidGMtJmd0O2N4LmNudF9idFtCVENfQkNOVF9QT0xVVF0gPQomIzQzOwkJCQlidC0mZ3Q7YmNudFtCVENfQkNOVF9QT0xVVF0gPQogCQkJCQlydHc4OV9tYWNfZ2V0X3BsdF9jbnQocnR3ZGV2LAogCQkJCQkJCSAgICAgIFJUVzg5X01BQ18wKTsKIAkJCX0KQEAgLTE3MzYsMTUgJiM0MzsxNzY2LDE1IEBAIHN0YXRpYyB1MzIgX2Noa19idGNfcmVwb3J0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwKIAkJCQltZW1jcHkoJmFtcDtkbS0mZ3Q7Z250LmJhbmRbaV0sICZhbXA7cHJwdC0mZ3Q7djQuZ250X3ZhbFtpXSwKIAkJCQkgICAgICAgc2l6ZW9mKGRtLSZndDtnbnQuYmFuZFtpXSkpOwogCi0JCQlidGMtJmd0O2N4LmNudF9idFtCVENfQkNOVF9ISVBSSV9UWF0gPQomIzQzOwkJCWJ0LSZndDtiY250W0JUQ19CQ05UX0hJUFJJX1RYXSA9CiAJCQkJbGUzMl90b19jcHUocHJwdC0mZ3Q7djQuYnRfY250W0JUQ19CQ05UX0hJX1RYXSk7Ci0JCQlidGMtJmd0O2N4LmNudF9idFtCVENfQkNOVF9ISVBSSV9SWF0gPQomIzQzOwkJCWJ0LSZndDtiY250W0JUQ19CQ05UX0hJUFJJX1JYXSA9CiAJCQkJbGUzMl90b19jcHUocHJwdC0mZ3Q7djQuYnRfY250W0JUQ19CQ05UX0hJX1JYXSk7Ci0JCQlidGMtJmd0O2N4LmNudF9idFtCVENfQkNOVF9MT1BSSV9UWF0gPQomIzQzOwkJCWJ0LSZndDtiY250W0JUQ19CQ05UX0xPUFJJX1RYXSA9CiAJCQkJbGUzMl90b19jcHUocHJwdC0mZ3Q7djQuYnRfY250W0JUQ19CQ05UX0xPX1RYXSk7Ci0JCQlidGMtJmd0O2N4LmNudF9idFtCVENfQkNOVF9MT1BSSV9SWF0gPQomIzQzOwkJCWJ0LSZndDtiY250W0JUQ19CQ05UX0xPUFJJX1JYXSA9CiAJCQkJbGUzMl90b19jcHUocHJwdC0mZ3Q7djQuYnRfY250W0JUQ19CQ05UX0xPX1JYXSk7Ci0JCQlidGMtJmd0O2N4LmNudF9idFtCVENfQkNOVF9QT0xVVF0gPQomIzQzOwkJCWJ0LSZndDtiY250W0JUQ19CQ05UX1BPTFVUXSA9CiAJCQkJbGUzMl90b19jcHUocHJwdC0mZ3Q7djQuYnRfY250W0JUQ19CQ05UX1BPTExVVEVEXSk7CiAKIAkJCV9jaGtfYnRjX2VycihydHdkZXYsIEJUQ19EQ05UX0JUQ05UX0hBTkcsIDApOwpAQCAtMTc2OCwxNSAmIzQzOzE3OTgsMTUgQEAgc3RhdGljIHUzMiBfY2hrX2J0Y19yZXBvcnQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LAogCQkJCW1lbWNweSgmYW1wO2RtLSZndDtnbnQuYmFuZFtpXSwgJmFtcDtwcnB0LSZndDt2NS5nbnRfdmFsW2ldWzBdLAogCQkJCSAgICAgICBzaXplb2YoZG0tJmd0O2dudC5iYW5kW2ldKSk7CiAKLQkJCWJ0Yy0mZ3Q7Y3guY250X2J0W0JUQ19CQ05UX0hJUFJJX1RYXSA9CiYjNDM7CQkJYnQtJmd0O2JjbnRbQlRDX0JDTlRfSElQUklfVFhdID0KIAkJCQlsZTE2X3RvX2NwdShwcnB0LSZndDt2NS5idF9jbnRbQlRDX0JDTlRfSElfVFhdKTsKLQkJCWJ0Yy0mZ3Q7Y3guY250X2J0W0JUQ19CQ05UX0hJUFJJX1JYXSA9CiYjNDM7CQkJYnQtJmd0O2JjbnRbQlRDX0JDTlRfSElQUklfUlhdID0KIAkJCQlsZTE2X3RvX2NwdShwcnB0LSZndDt2NS5idF9jbnRbQlRDX0JDTlRfSElfUlhdKTsKLQkJCWJ0Yy0mZ3Q7Y3guY250X2J0W0JUQ19CQ05UX0xPUFJJX1RYXSA9CiYjNDM7CQkJYnQtJmd0O2JjbnRbQlRDX0JDTlRfTE9QUklfVFhdID0KIAkJCQlsZTE2X3RvX2NwdShwcnB0LSZndDt2NS5idF9jbnRbQlRDX0JDTlRfTE9fVFhdKTsKLQkJCWJ0Yy0mZ3Q7Y3guY250X2J0W0JUQ19CQ05UX0xPUFJJX1JYXSA9CiYjNDM7CQkJYnQtJmd0O2JjbnRbQlRDX0JDTlRfTE9QUklfUlhdID0KIAkJCQlsZTE2X3RvX2NwdShwcnB0LSZndDt2NS5idF9jbnRbQlRDX0JDTlRfTE9fUlhdKTsKLQkJCWJ0Yy0mZ3Q7Y3guY250X2J0W0JUQ19CQ05UX1BPTFVUXSA9CiYjNDM7CQkJYnQtJmd0O2JjbnRbQlRDX0JDTlRfUE9MVVRdID0KIAkJCQlsZTE2X3RvX2NwdShwcnB0LSZndDt2NS5idF9jbnRbQlRDX0JDTlRfUE9MTFVURURdKTsKIAogCQkJX2Noa19idGNfZXJyKHJ0d2RldiwgQlRDX0RDTlRfQlRDTlRfSEFORywgMCk7CkBAIC0xNzk1LDE1ICYjNDM7MTgyNSwxNSBAQCBzdGF0aWMgdTMyIF9jaGtfYnRjX3JlcG9ydChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsCiAJCQkJbWVtY3B5KCZhbXA7ZG0tJmd0O2dudC5iYW5kW2ldLCAmYW1wO3BycHQtJmd0O3YxMDUuZ250X3ZhbFtpXVswXSwKIAkJCQkgICAgICAgc2l6ZW9mKGRtLSZndDtnbnQuYmFuZFtpXSkpOwogCi0JCQlidGMtJmd0O2N4LmNudF9idFtCVENfQkNOVF9ISVBSSV9UWF0gPQomIzQzOwkJCWJ0LSZndDtiY250W0JUQ19CQ05UX0hJUFJJX1RYXSA9CiAJCQkJbGUxNl90b19jcHUocHJwdC0mZ3Q7djEwNS5idF9jbnRbQlRDX0JDTlRfSElfVFhfVjEwNV0pOwotCQkJYnRjLSZndDtjeC5jbnRfYnRbQlRDX0JDTlRfSElQUklfUlhdID0KJiM0MzsJCQlidC0mZ3Q7YmNudFtCVENfQkNOVF9ISVBSSV9SWF0gPQogCQkJCWxlMTZfdG9fY3B1KHBycHQtJmd0O3YxMDUuYnRfY250W0JUQ19CQ05UX0hJX1JYX1YxMDVdKTsKLQkJCWJ0Yy0mZ3Q7Y3guY250X2J0W0JUQ19CQ05UX0xPUFJJX1RYXSA9CiYjNDM7CQkJYnQtJmd0O2JjbnRbQlRDX0JDTlRfTE9QUklfVFhdID0KIAkJCQlsZTE2X3RvX2NwdShwcnB0LSZndDt2MTA1LmJ0X2NudFtCVENfQkNOVF9MT19UWF9WMTA1XSk7Ci0JCQlidGMtJmd0O2N4LmNudF9idFtCVENfQkNOVF9MT1BSSV9SWF0gPQomIzQzOwkJCWJ0LSZndDtiY250W0JUQ19CQ05UX0xPUFJJX1JYXSA9CiAJCQkJbGUxNl90b19jcHUocHJwdC0mZ3Q7djEwNS5idF9jbnRbQlRDX0JDTlRfTE9fUlhfVjEwNV0pOwotCQkJYnRjLSZndDtjeC5jbnRfYnRbQlRDX0JDTlRfUE9MVVRdID0KJiM0MzsJCQlidC0mZ3Q7YmNudFtCVENfQkNOVF9QT0xVVF0gPQogCQkJCWxlMTZfdG9fY3B1KHBycHQtJmd0O3YxMDUuYnRfY250W0JUQ19CQ05UX1BPTExVVEVEX1YxMDVdKTsKIAogCQkJX2Noa19idGNfZXJyKHJ0d2RldiwgQlRDX0RDTlRfQlRDTlRfSEFORywgMCk7CkBAIC0xODIxLDIxICYjNDM7MTg1MSwyMSBAQCBzdGF0aWMgdTMyIF9jaGtfYnRjX3JlcG9ydChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsCiAJCQkJbWVtY3B5KCZhbXA7ZG0tJmd0O2dudC5iYW5kW2ldLCAmYW1wO3BycHQtJmd0O3Y3LmdudF92YWxbaV1bMF0sCiAJCQkJICAgICAgIHNpemVvZihkbS0mZ3Q7Z250LmJhbmRbaV0pKTsKIAotCQkJYnRjLSZndDtjeC5jbnRfYnRbQlRDX0JDTlRfSElQUklfVFhdID0KJiM0MzsJCQlidC0mZ3Q7YmNudFtCVENfQkNOVF9ISVBSSV9UWF0gPQogCQkJCWxlMTZfdG9fY3B1KHBycHQtJmd0O3Y3LmJ0X2NudFtCVENfQkNOVF9ISV9UWF9WMTA1XSk7Ci0JCQlidGMtJmd0O2N4LmNudF9idFtCVENfQkNOVF9ISVBSSV9SWF0gPQomIzQzOwkJCWJ0LSZndDtiY250W0JUQ19CQ05UX0hJUFJJX1JYXSA9CiAJCQkJbGUxNl90b19jcHUocHJwdC0mZ3Q7djcuYnRfY250W0JUQ19CQ05UX0hJX1JYX1YxMDVdKTsKLQkJCWJ0Yy0mZ3Q7Y3guY250X2J0W0JUQ19CQ05UX0xPUFJJX1RYXSA9CiYjNDM7CQkJYnQtJmd0O2JjbnRbQlRDX0JDTlRfTE9QUklfVFhdID0KIAkJCQlsZTE2X3RvX2NwdShwcnB0LSZndDt2Ny5idF9jbnRbQlRDX0JDTlRfTE9fVFhfVjEwNV0pOwotCQkJYnRjLSZndDtjeC5jbnRfYnRbQlRDX0JDTlRfTE9QUklfUlhdID0KJiM0MzsJCQlidC0mZ3Q7YmNudFtCVENfQkNOVF9MT1BSSV9SWF0gPQogCQkJCWxlMTZfdG9fY3B1KHBycHQtJmd0O3Y3LmJ0X2NudFtCVENfQkNOVF9MT19SWF9WMTA1XSk7CiAKIAkJCXZhbDEgPSBsZTE2X3RvX2NwdShwcnB0LSZndDt2Ny5idF9jbnRbQlRDX0JDTlRfUE9MTFVURURfVjEwNV0pOwotCQkJaWYgKHZhbDEgJmd0OyBidGMtJmd0O2N4LmNudF9idFtCVENfQkNOVF9QT0xVVF9OT1ddKQotCQkJCXZhbDEgLT0gYnRjLSZndDtjeC5jbnRfYnRbQlRDX0JDTlRfUE9MVVRfTk9XXTsgLyogZGlmZiAqLwomIzQzOwkJCWlmICh2YWwxICZndDsgYnQtJmd0O2JjbnRbQlRDX0JDTlRfUE9MVVRfTk9XXSkKJiM0MzsJCQkJdmFsMSAtPSBidC0mZ3Q7YmNudFtCVENfQkNOVF9QT0xVVF9OT1ddOyAvKiBkaWZmICovCiAKLQkJCWJ0Yy0mZ3Q7Y3guY250X2J0W0JUQ19CQ05UX1BPTFVUX0RJRkZdID0gdmFsMTsKLQkJCWJ0Yy0mZ3Q7Y3guY250X2J0W0JUQ19CQ05UX1BPTFVUX05PV10gPQomIzQzOwkJCWJ0LSZndDtiY250W0JUQ19CQ05UX1BPTFVUX0RJRkZdID0gdmFsMTsKJiM0MzsJCQlidC0mZ3Q7YmNudFtCVENfQkNOVF9QT0xVVF9OT1ddID0KIAkJCQlsZTE2X3RvX2NwdShwcnB0LSZndDt2Ny5idF9jbnRbQlRDX0JDTlRfUE9MTFVURURfVjEwNV0pOwogCiAJCQl2YWwxID0gcGZ3aW5mby0mZ3Q7ZXZlbnRbQlRGX0VWTlRfUlBUXTsKQEAgLTE4NTMsMjEgJiM0MzsxODgzLDIxIEBAIHN0YXRpYyB1MzIgX2Noa19idGNfcmVwb3J0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwKIAkJCQltZW1jcHkoJmFtcDtkbS0mZ3Q7Z250LmJhbmRbaV0sICZhbXA7cHJwdC0mZ3Q7djguZ250X3ZhbFtpXVswXSwKIAkJCQkgICAgICAgc2l6ZW9mKGRtLSZndDtnbnQuYmFuZFtpXSkpOwogCi0JCQlidGMtJmd0O2N4LmNudF9idFtCVENfQkNOVF9ISVBSSV9UWF0gPQomIzQzOwkJCWJ0LSZndDtiY250W0JUQ19CQ05UX0hJUFJJX1RYXSA9CiAJCQkJbGUxNl90b19jcHUocHJwdC0mZ3Q7djguYnRfY250W0JUQ19CQ05UX0hJX1RYX1YxMDVdKTsKLQkJCWJ0Yy0mZ3Q7Y3guY250X2J0W0JUQ19CQ05UX0hJUFJJX1JYXSA9CiYjNDM7CQkJYnQtJmd0O2JjbnRbQlRDX0JDTlRfSElQUklfUlhdID0KIAkJCQlsZTE2X3RvX2NwdShwcnB0LSZndDt2OC5idF9jbnRbQlRDX0JDTlRfSElfUlhfVjEwNV0pOwotCQkJYnRjLSZndDtjeC5jbnRfYnRbQlRDX0JDTlRfTE9QUklfVFhdID0KJiM0MzsJCQlidC0mZ3Q7YmNudFtCVENfQkNOVF9MT1BSSV9UWF0gPQogCQkJCWxlMTZfdG9fY3B1KHBycHQtJmd0O3Y4LmJ0X2NudFtCVENfQkNOVF9MT19UWF9WMTA1XSk7Ci0JCQlidGMtJmd0O2N4LmNudF9idFtCVENfQkNOVF9MT1BSSV9SWF0gPQomIzQzOwkJCWJ0LSZndDtiY250W0JUQ19CQ05UX0xPUFJJX1JYXSA9CiAJCQkJbGUxNl90b19jcHUocHJwdC0mZ3Q7djguYnRfY250W0JUQ19CQ05UX0xPX1JYX1YxMDVdKTsKIAogCQkJdmFsMSA9IGxlMTZfdG9fY3B1KHBycHQtJmd0O3Y4LmJ0X2NudFtCVENfQkNOVF9QT0xMVVRFRF9WMTA1XSk7Ci0JCQlpZiAodmFsMSAmZ3Q7IGJ0Yy0mZ3Q7Y3guY250X2J0W0JUQ19CQ05UX1BPTFVUX05PV10pCi0JCQkJdmFsMSAtPSBidGMtJmd0O2N4LmNudF9idFtCVENfQkNOVF9QT0xVVF9OT1ddOyAvKiBkaWZmICovCiYjNDM7CQkJaWYgKHZhbDEgJmd0OyBidC0mZ3Q7YmNudFtCVENfQkNOVF9QT0xVVF9OT1ddKQomIzQzOwkJCQl2YWwxIC09IGJ0LSZndDtiY250W0JUQ19CQ05UX1BPTFVUX05PV107IC8qIGRpZmYgKi8KIAotCQkJYnRjLSZndDtjeC5jbnRfYnRbQlRDX0JDTlRfUE9MVVRfRElGRl0gPSB2YWwxOwotCQkJYnRjLSZndDtjeC5jbnRfYnRbQlRDX0JDTlRfUE9MVVRfTk9XXSA9CiYjNDM7CQkJYnQtJmd0O2JjbnRbQlRDX0JDTlRfUE9MVVRfRElGRl0gPSB2YWwxOwomIzQzOwkJCWJ0LSZndDtiY250W0JUQ19CQ05UX1BPTFVUX05PV10gPQogCQkJCWxlMTZfdG9fY3B1KHBycHQtJmd0O3Y4LmJ0X2NudFtCVENfQkNOVF9QT0xMVVRFRF9WMTA1XSk7CiAKIAkJCXZhbDEgPSBwZndpbmZvLSZndDtldmVudFtCVEZfRVZOVF9SUFRdOwpAQCAtMTk5MiwxMCAmIzQzOzIwMjIsMTAgQEAgc3RhdGljIHUzMiBfY2hrX2J0Y19yZXBvcnQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LAogCQkJLyogQ2hlY2sgZGlmZiB0aW1lIGJldHdlZW4gcmVhbCBCVCBzbG90IGFuZCBFQlQvRTVHIHNsb3QgKi8KIAkJCWlmIChkbS0mZ3Q7dGRtYV9ub3cudHlwZSA9PSBDWFRETUFfT0ZGICZhbXA7JmFtcDsKIAkJCSAgICBkbS0mZ3Q7dGRtYV9ub3cuZXh0X2N0cmwgPT0gQ1hFQ1RMX0VYVCAmYW1wOyZhbXA7Ci0JCQkgICAgYnRjLSZndDtidF9yZXFfbGVuICE9IDApIHsKJiM0MzsJCQkgICAgYnRjLSZndDtidF9yZXFfbGVuW1JUVzg5X1BIWV8wXSAhPSAwKSB7CiAJCQkJYnRfc2xvdF9yZWFsID0gbGUxNl90b19jcHUocGN5c3RhLSZndDt2My5jeWNsZV90aW1lLnRhdmdbQ1hUX0JUXSk7Ci0JCQkJaWYgKGJ0Yy0mZ3Q7YnRfcmVxX2xlbiAmZ3Q7IGJ0X3Nsb3RfcmVhbCkgewotCQkJCQlkaWZmX3QgPSBidGMtJmd0O2J0X3JlcV9sZW4gLSBidF9zbG90X3JlYWw7CiYjNDM7CQkJCWlmIChidGMtJmd0O2J0X3JlcV9sZW5bUlRXODlfUEhZXzBdICZndDsgYnRfc2xvdF9yZWFsKSB7CiYjNDM7CQkJCQlkaWZmX3QgPSBidGMtJmd0O2J0X3JlcV9sZW5bUlRXODlfUEhZXzBdIC0gYnRfc2xvdF9yZWFsOwogCQkJCQlfY2hrX2J0Y19lcnIocnR3ZGV2LCBCVENfRENOVF9CVF9TTE9UX0RSSUZULCBkaWZmX3QpOwogCQkJCX0KIAkJCX0KQEAgLTIwMzYsMTEgJiM0MzsyMDY2LDExIEBAIHN0YXRpYyB1MzIgX2Noa19idGNfcmVwb3J0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwKIAkJCS8qIENoZWNrIGRpZmYgdGltZSBiZXR3ZWVuIHJlYWwgQlQgc2xvdCBhbmQgRUJUL0U1RyBzbG90ICovCiAJCQlpZiAoZG0tJmd0O3RkbWFfbm93LnR5cGUgPT0gQ1hURE1BX09GRiAmYW1wOyZhbXA7CiAJCQkgICAgZG0tJmd0O3RkbWFfbm93LmV4dF9jdHJsID09IENYRUNUTF9FWFQgJmFtcDsmYW1wOwotCQkJICAgIGJ0Yy0mZ3Q7YnRfcmVxX2xlbiAhPSAwKSB7CiYjNDM7CQkJICAgIGJ0Yy0mZ3Q7YnRfcmVxX2xlbltSVFc4OV9QSFlfMF0gIT0gMCkgewogCQkJCWJ0X3Nsb3RfcmVhbCA9IGxlMTZfdG9fY3B1KHBjeXN0YS0mZ3Q7djQuY3ljbGVfdGltZS50YXZnW0NYVF9CVF0pOwogCi0JCQkJaWYgKGJ0Yy0mZ3Q7YnRfcmVxX2xlbiAmZ3Q7IGJ0X3Nsb3RfcmVhbCkgewotCQkJCQlkaWZmX3QgPSBidGMtJmd0O2J0X3JlcV9sZW4gLSBidF9zbG90X3JlYWw7CiYjNDM7CQkJCWlmIChidGMtJmd0O2J0X3JlcV9sZW5bUlRXODlfUEhZXzBdICZndDsgYnRfc2xvdF9yZWFsKSB7CiYjNDM7CQkJCQlkaWZmX3QgPSBidGMtJmd0O2J0X3JlcV9sZW5bUlRXODlfUEhZXzBdIC0gYnRfc2xvdF9yZWFsOwogCQkJCQlfY2hrX2J0Y19lcnIocnR3ZGV2LCBCVENfRENOVF9CVF9TTE9UX0RSSUZULCBkaWZmX3QpOwogCQkJCX0KIAkJCX0KQEAgLTIwODEsNyAmIzQzOzIxMTEsNyBAQCBzdGF0aWMgdTMyIF9jaGtfYnRjX3JlcG9ydChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsCiAJCQlfY2hrX2J0Y19lcnIocnR3ZGV2LCBCVENfRENOVF9XTF9TTE9UX0RSSUZULCBkaWZmX3QpOwogCiAJCQkvKiBDaGVjayBkaWZmIHRpbWUgYmV0d2VlbiByZWFsIEJUIHNsb3QgYW5kIEVCVC9FNUcgc2xvdCAqLwotCQkJYnRfc2xvdF9zZXQgPSBidGMtJmd0O2J0X3JlcV9sZW47CiYjNDM7CQkJYnRfc2xvdF9zZXQgPSBidGMtJmd0O2J0X3JlcV9sZW5bUlRXODlfUEhZXzBdOwogCQkJYnRfc2xvdF9yZWFsID0gbGUxNl90b19jcHUocGN5c3RhLSZndDt2NS5jeWNsZV90aW1lLnRhdmdbQ1hUX0JUXSk7CiAJCQlkaWZmX3QgPSAwOwogCQkJaWYgKGRtLSZndDt0ZG1hX25vdy50eXBlID09IENYVERNQV9PRkYgJmFtcDsmYW1wOwpAQCAtMjQwNSw2ICYjNDM7MjQzNSw3IEBAIHN0YXRpYyB1MzIgcnR3ODlfYnRjX2Z3X3JwdF92ZXIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgcnB0X21hcCkKIAkJCWJyZWFrOwogCQljYXNlIDM6CiAJCWNhc2UgNDoKJiM0MzsJCWNhc2UgNToKIAkJCWJpdF9tYXAgPSBCSVQoNSk7CiAJCQlicmVhazsKIAkJZGVmYXVsdDoKQEAgLTI0MjAsNiAmIzQzOzI0NTEsNyBAQCBzdGF0aWMgdTMyIHJ0dzg5X2J0Y19md19ycHRfdmVyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIHJwdF9tYXApCiAJCQlicmVhazsKIAkJY2FzZSAzOgogCQljYXNlIDQ6CiYjNDM7CQljYXNlIDU6CiAJCQliaXRfbWFwID0gQklUKDYpOwogCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CkBAIC0yNDMzLDYgJiM0MzsyNDY1LDcgQEAgc3RhdGljIHUzMiBydHc4OV9idGNfZndfcnB0X3ZlcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiBycHRfbWFwKQogCQkJYnJlYWs7CiAJCWNhc2UgMzoKIAkJY2FzZSA0OgomIzQzOwkJY2FzZSA1OgogCQkJYml0X21hcCA9IEJJVCg3KTsKIAkJCWJyZWFrOwogCQlkZWZhdWx0OgpAQCAtMjQ0Nyw2ICYjNDM7MjQ4MCw3IEBAIHN0YXRpYyB1MzIgcnR3ODlfYnRjX2Z3X3JwdF92ZXIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgcnB0X21hcCkKIAkJY2FzZSAzOgogCQkJYnJlYWs7CiAJCWNhc2UgNDoKJiM0MzsJCWNhc2UgNToKIAkJCWJpdF9tYXAgPSBCSVQoOCk7CiAJCQlicmVhazsKIAkJZGVmYXVsdDoKQEAgLTI0NjMsNiAmIzQzOzI0OTcsNyBAQCBzdGF0aWMgdTMyIHJ0dzg5X2J0Y19md19ycHRfdmVyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIHJwdF9tYXApCiAJCQliaXRfbWFwID0gQklUKDgpOwogCQkJYnJlYWs7CiAJCWNhc2UgNDoKJiM0MzsJCWNhc2UgNToKIAkJCWJpdF9tYXAgPSBCSVQoOSk7CiAJCQlicmVhazsKIAkJZGVmYXVsdDoKQEAgLTI0NzAsNyAmIzQzOzI1MDUsMTAgQEAgc3RhdGljIHUzMiBydHc4OV9idGNfZndfcnB0X3ZlcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiBycHRfbWFwKQogCQl9CiAJCWJyZWFrOwogCWNhc2UgUlBUX0VOX1RFU1Q6Ci0JCWJpdF9tYXAgPSBCSVQoMzEpOwomIzQzOwkJaWYgKHZlci0mZ3Q7ZnJwdG1hcCA9PSA1KQomIzQzOwkJCWJpdF9tYXAgPSBCSVQoMTApOwomIzQzOwkJZWxzZQomIzQzOwkJCWJpdF9tYXAgPSBCSVQoMzEpOwogCQlicmVhazsKIAljYXNlIFJQVF9FTl9XTF9BTEw6CiAJCXN3aXRjaCAodmVyLSZndDtmcnB0bWFwKSB7CkBAIC0yNDgzLDYgJiM0MzsyNTIxLDcgQEAgc3RhdGljIHUzMiBydHc4OV9idGNfZndfcnB0X3ZlcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiBycHRfbWFwKQogCQkJYml0X21hcCA9IEdFTk1BU0soMiwgMCkgfCBCSVQoOCk7CiAJCQlicmVhazsKIAkJY2FzZSA0OgomIzQzOwkJY2FzZSA1OgogCQkJYml0X21hcCA9IEdFTk1BU0soMiwgMCkgfCBCSVQoOSk7CiAJCQlicmVhazsKIAkJZGVmYXVsdDoKQEAgLTI1MDIsNiAmIzQzOzI1NDEsNyBAQCBzdGF0aWMgdTMyIHJ0dzg5X2J0Y19md19ycHRfdmVyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIHJwdF9tYXApCiAJCQliaXRfbWFwID0gR0VOTUFTSyg3LCAzKTsKIAkJCWJyZWFrOwogCQljYXNlIDQ6CiYjNDM7CQljYXNlIDU6CiAJCQliaXRfbWFwID0gR0VOTUFTSyg4LCAzKTsKIAkJCWJyZWFrOwogCQlkZWZhdWx0OgpAQCAtMjUyMSw2ICYjNDM7MjU2MSw3IEBAIHN0YXRpYyB1MzIgcnR3ODlfYnRjX2Z3X3JwdF92ZXIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgcnB0X21hcCkKIAkJCWJpdF9tYXAgPSBHRU5NQVNLKDgsIDApOwogCQkJYnJlYWs7CiAJCWNhc2UgNDoKJiM0MzsJCWNhc2UgNToKIAkJCWJpdF9tYXAgPSBHRU5NQVNLKDksIDApOwogCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CkBAIC0yNTQwLDYgJiM0MzsyNTgxLDcgQEAgc3RhdGljIHUzMiBydHc4OV9idGNfZndfcnB0X3ZlcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiBycHRfbWFwKQogCQkJYml0X21hcCA9IEdFTk1BU0soOCwgMik7CiAJCQlicmVhazsKIAkJY2FzZSA0OgomIzQzOwkJY2FzZSA1OgogCQkJYml0X21hcCA9IEdFTk1BU0soOSwgMik7CiAJCQlicmVhazsKIAkJZGVmYXVsdDoKQEAgLTI3NDcsNyAmIzQzOzI3ODksOSBAQCBzdGF0aWMgdm9pZCBfZndfc2V0X3BvbGljeShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUxNiBwb2xpY3lfdHlwZSwKIAkgICAgZG0tJmd0O3RkbWEucnhmbGN0cmwgPT0gQ1hGTENfUU9TTlVMTCkKIAkJYnRjLSZndDtscHMgPSAxOwogCWVsc2UKLQkJYnRjLSZndDtscHMgPSAwOwomIzQzOwkJYnRjLSZndDtscHMgPSBkbS0mZ3Q7bHBzX2N0cmxfc2NiZDsKJiM0MzsKJiM0MzsJZG0tJmd0O2xwc19jdHJsX3NjYmRfbGFzdCA9IGRtLSZndDtscHNfY3RybF9zY2JkOwogCiAJaWYgKGJ0Yy0mZ3Q7bHBzID09IDEpCiAJCXJ0dzg5X3NldF9jb2V4X2N0cmxfbHBzKHJ0d2RldiwgYnRjLSZndDtscHMpOwpAQCAtMjc2OSw3NyAmIzQzOzI4MTMsODkgQEAgc3RhdGljIHZvaWQgX2Z3X3NldF9wb2xpY3koc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MTYgcG9saWN5X3R5cGUsCiAJCXJ0dzg5X3NldF9jb2V4X2N0cmxfbHBzKHJ0d2RldiwgYnRjLSZndDtscHMpOwogfQogCi1zdGF0aWMgdm9pZCBfZndfc2V0X2Rydl9pbmZvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggdHlwZSkKJiM0MztzdGF0aWMgdm9pZCBfZndfc2V0X2Rydl9pbmZvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggaW5kZXgpCiB7CiAJc3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gJmFtcDtydHdkZXYtJmd0O2J0YzsKIAljb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3ZlciAqdmVyID0gYnRjLSZndDt2ZXI7Ci0Jc3RydWN0IHJ0dzg5X2J0Y19kbSAqZG0gPSAmYW1wO2J0Yy0mZ3Q7ZG07Ci0Jc3RydWN0IHJ0dzg5X2J0Y193bF9pbmZvICp3bCA9ICZhbXA7YnRjLSZndDtjeC53bDsKLQlzdHJ1Y3QgcnR3ODlfYnRjX3JmX3RyeF9wYXJhIHJmX3BhcmEgPSBkbS0mZ3Q7cmZfdHJ4X3BhcmE7CiAKLQlzd2l0Y2ggKHR5cGUpIHsKJiM0MzsJc3dpdGNoIChpbmRleCkgewogCWNhc2UgQ1hEUlZJTkZPX0lOSVQ6CiAJCWlmICh2ZXItJmd0O2ZjeGluaXQgPT0gNykKLQkJCXJ0dzg5X2Z3X2gyY19jeGRydl9pbml0X3Y3KHJ0d2RldiwgdHlwZSk7CiYjNDM7CQkJcnR3ODlfZndfaDJjX2N4ZHJ2X2luaXRfdjcocnR3ZGV2LCBpbmRleCk7CiAJCWVsc2UKLQkJCXJ0dzg5X2Z3X2gyY19jeGRydl9pbml0KHJ0d2RldiwgdHlwZSk7CiYjNDM7CQkJcnR3ODlfZndfaDJjX2N4ZHJ2X2luaXQocnR3ZGV2LCBpbmRleCk7CiAJCWJyZWFrOwogCWNhc2UgQ1hEUlZJTkZPX1JPTEU6CiAJCWlmICh2ZXItJmd0O2Z3bHJvbGUgPT0gMCkKLQkJCXJ0dzg5X2Z3X2gyY19jeGRydl9yb2xlKHJ0d2RldiwgdHlwZSk7CiYjNDM7CQkJcnR3ODlfZndfaDJjX2N4ZHJ2X3JvbGUocnR3ZGV2LCBpbmRleCk7CiAJCWVsc2UgaWYgKHZlci0mZ3Q7Zndscm9sZSA9PSAxKQotCQkJcnR3ODlfZndfaDJjX2N4ZHJ2X3JvbGVfdjEocnR3ZGV2LCB0eXBlKTsKJiM0MzsJCQlydHc4OV9md19oMmNfY3hkcnZfcm9sZV92MShydHdkZXYsIGluZGV4KTsKIAkJZWxzZSBpZiAodmVyLSZndDtmd2xyb2xlID09IDIpCi0JCQlydHc4OV9md19oMmNfY3hkcnZfcm9sZV92MihydHdkZXYsIHR5cGUpOwomIzQzOwkJCXJ0dzg5X2Z3X2gyY19jeGRydl9yb2xlX3YyKHJ0d2RldiwgaW5kZXgpOwogCQllbHNlIGlmICh2ZXItJmd0O2Z3bHJvbGUgPT0gNykKLQkJCXJ0dzg5X2Z3X2gyY19jeGRydl9yb2xlX3Y3KHJ0d2RldiwgdHlwZSk7CiYjNDM7CQkJcnR3ODlfZndfaDJjX2N4ZHJ2X3JvbGVfdjcocnR3ZGV2LCBpbmRleCk7CiAJCWVsc2UgaWYgKHZlci0mZ3Q7Zndscm9sZSA9PSA4KQotCQkJcnR3ODlfZndfaDJjX2N4ZHJ2X3JvbGVfdjgocnR3ZGV2LCB0eXBlKTsKJiM0MzsJCQlydHc4OV9md19oMmNfY3hkcnZfcm9sZV92OChydHdkZXYsIGluZGV4KTsKIAkJYnJlYWs7CiAJY2FzZSBDWERSVklORk9fQ1RSTDoKLQkJaWYgKHZlci0mZ3Q7ZHJ2aW5mb190eXBlID09IDEpCi0JCQl0eXBlID0gMjsKJiM0MzsJCWlmICh2ZXItJmd0O2RydmluZm9fdmVyICE9IDApCiYjNDM7CQkJaW5kZXggPSAyOwogCiAJCWlmICh2ZXItJmd0O2ZjeGN0cmwgPT0gNykKLQkJCXJ0dzg5X2Z3X2gyY19jeGRydl9jdHJsX3Y3KHJ0d2RldiwgdHlwZSk7CiYjNDM7CQkJcnR3ODlfZndfaDJjX2N4ZHJ2X2N0cmxfdjcocnR3ZGV2LCBpbmRleCk7CiAJCWVsc2UKLQkJCXJ0dzg5X2Z3X2gyY19jeGRydl9jdHJsKHJ0d2RldiwgdHlwZSk7CiYjNDM7CQkJcnR3ODlfZndfaDJjX2N4ZHJ2X2N0cmwocnR3ZGV2LCBpbmRleCk7CiAJCWJyZWFrOwogCWNhc2UgQ1hEUlZJTkZPX1RSWDoKLQkJaWYgKHZlci0mZ3Q7ZHJ2aW5mb190eXBlID09IDEpCi0JCQl0eXBlID0gMzsKLQotCQlkbS0mZ3Q7dHJ4X2luZm8udHhfcG93ZXIgPSB1MzJfZ2V0X2JpdHMocmZfcGFyYS53bF90eF9wb3dlciwKLQkJCQkJCSAgICAgUlRXODlfQlRDX1dMX0RFRl9UWF9QV1IpOwotCQlkbS0mZ3Q7dHJ4X2luZm8ucnhfZ2FpbiA9IHUzMl9nZXRfYml0cyhyZl9wYXJhLndsX3J4X2dhaW4sCi0JCQkJCQkgICAgUlRXODlfQlRDX1dMX0RFRl9UWF9QV1IpOwotCQlkbS0mZ3Q7dHJ4X2luZm8uYnRfdHhfcG93ZXIgPSB1MzJfZ2V0X2JpdHMocmZfcGFyYS5idF90eF9wb3dlciwKLQkJCQkJCQlSVFc4OV9CVENfV0xfREVGX1RYX1BXUik7Ci0JCWRtLSZndDt0cnhfaW5mby5idF9yeF9nYWluID0gdTMyX2dldF9iaXRzKHJmX3BhcmEuYnRfcnhfZ2FpbiwKLQkJCQkJCSAgICAgICBSVFc4OV9CVENfV0xfREVGX1RYX1BXUik7Ci0JCWRtLSZndDt0cnhfaW5mby5jbiA9IHdsLSZndDtjbl9yZXBvcnQ7Ci0JCWRtLSZndDt0cnhfaW5mby5uaG0gPSB3bC0mZ3Q7bmhtLnB3cjsKLQkJcnR3ODlfZndfaDJjX2N4ZHJ2X3RyeChydHdkZXYsIHR5cGUpOwomIzQzOwkJaWYgKHZlci0mZ3Q7ZHJ2aW5mb192ZXIgJmd0OyAxKQomIzQzOwkJCWluZGV4ID0gMzsKJiM0MzsKJiM0MzsJCWlmICh2ZXItJmd0O2ZjeHRyeCA9PSA3KQomIzQzOwkJCXJ0dzg5X2Z3X2gyY19jeGRydl90cnhfdjcocnR3ZGV2LCBpbmRleCk7CiYjNDM7CQllbHNlIGlmICh2ZXItJmd0O2ZjeHRyeCA9PSA5KQomIzQzOwkJCXJ0dzg5X2Z3X2gyY19jeGRydl90cnhfdjkocnR3ZGV2LCBpbmRleCk7CiAJCWJyZWFrOwogCWNhc2UgQ1hEUlZJTkZPX1JGSzoKLQkJaWYgKHZlci0mZ3Q7ZHJ2aW5mb190eXBlID09IDEpCiYjNDM7CQlpZiAodmVyLSZndDtkcnZpbmZvX3ZlciAhPSAwKQogCQkJcmV0dXJuOwogCi0JCXJ0dzg5X2Z3X2gyY19jeGRydl9yZmsocnR3ZGV2LCB0eXBlKTsKJiM0MzsJCXJ0dzg5X2Z3X2gyY19jeGRydl9yZmsocnR3ZGV2LCBpbmRleCk7CiAJCWJyZWFrOwogCWNhc2UgQ1hEUlZJTkZPX1RYUFdSOgomIzQzOwkJaWYgKHZlci0mZ3Q7ZHJ2aW5mb192ZXIgPT0gMykKJiM0MzsJCQlpbmRleCA9IDQ7CiYjNDM7CiYjNDM7CQlpZiAodmVyLSZndDtmY3h0cnggPT0gNykKJiM0MzsJCQlydHc4OV9md19oMmNfY3h0eHB3cl92NyhydHdkZXYsIGluZGV4KTsKJiM0MzsJCWVsc2UgaWYgKHZlci0mZ3Q7ZmN4dHJ4ID09IDkpCiYjNDM7CQkJcnR3ODlfZndfaDJjX2N4dHhwd3JfdjkocnR3ZGV2LCBpbmRleCk7CiYjNDM7CQlicmVhazsKIAljYXNlIENYRFJWSU5GT19GRERUOgomIzQzOwkJaWYgKHZlci0mZ3Q7ZHJ2aW5mb192ZXIgPT0gMykKJiM0MzsJCQlpbmRleCA9IDU7CiYjNDM7CQllbHNlCiYjNDM7CQkJcmV0dXJuOwomIzQzOwomIzQzOwkJcnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQlRDLCAmIzM0O2Rydl9pbmZvIEZERFQgaW5kZXg9JWRcbiYjMzQ7LCBpbmRleCk7CiYjNDM7CQlicmVhazsKIAljYXNlIENYRFJWSU5GT19NTE86CiYjNDM7CQlpZiAodmVyLSZndDtkcnZpbmZvX3ZlciA9PSAzKQomIzQzOwkJCWluZGV4ID0gNjsKJiM0MzsJCWVsc2UKJiM0MzsJCQlyZXR1cm47CiYjNDM7CiYjNDM7CQlydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19CVEMsICYjMzQ7ZHJ2X2luZm8gTUxPIGluZGV4PSVkXG4mIzM0OywgaW5kZXgpOwomIzQzOwkJYnJlYWs7CiAJY2FzZSBDWERSVklORk9fT1NJOgogCQlpZiAoIXZlci0mZ3Q7ZmN4b3NpKQogCQkJcmV0dXJuOwogCi0JCWlmICh2ZXItJmd0O2RydmluZm9fdHlwZSA9PSAyKQotCQkJdHlwZSA9IDc7CiYjNDM7CQlpZiAodmVyLSZndDtkcnZpbmZvX3ZlciAmZ3Q7IDEpCiYjNDM7CQkJaW5kZXggPSA3OwogCQllbHNlCiAJCQlyZXR1cm47CiAKLQkJcnR3ODlfZndfaDJjX2N4ZHJ2X29zaV9pbmZvKHJ0d2RldiwgdHlwZSk7CiYjNDM7CQlydHc4OV9md19oMmNfY3hkcnZfb3NpX2luZm8ocnR3ZGV2LCBpbmRleCk7CiAJCWJyZWFrOwogCWRlZmF1bHQ6CiAJCWJyZWFrOwpAQCAtMzAyMSw1MyAmIzQzOzMwNzcsODQgQEAgc3RhdGljIHZvaWQgX3NldF9idF9pZ25vcmVfd2xhbl9hY3Qoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCBlbmFibGUpCiAjZGVmaW5lIEJfQlRDX1dMX1RYX1BPV0VSX1NJR04gQklUKDcpCiAjZGVmaW5lIEJfVFNTSV9XTF9UWF9QT1dFUl9TSUdOIEJJVCg4KQogCi1zdGF0aWMgdm9pZCBfc2V0X3dsX3R4X3Bvd2VyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIGxldmVsKQomIzQzO3N0YXRpYyB2b2lkIF9zZXRfd2xfdHhfcG93ZXIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgbGV2ZWwsIHU4IHBoeV9tYXApCiB7CiAJY29uc3Qgc3RydWN0IHJ0dzg5X2NoaXBfaW5mbyAqY2hpcCA9IHJ0d2Rldi0mZ3Q7Y2hpcDsKIAlzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSAmYW1wO3J0d2Rldi0mZ3Q7YnRjOwotCXN0cnVjdCBydHc4OV9idGNfd2xfaW5mbyAqd2wgPSAmYW1wO2J0Yy0mZ3Q7Y3gud2w7CiYjNDM7CWNvbnN0IHN0cnVjdCBydHc4OV9idGNfdmVyICp2ZXIgPSBidGMtJmd0O3ZlcjsKJiM0MzsJc3RydWN0IHJ0dzg5X2J0Y19kbSAqZG0gPSAmYW1wO2J0Yy0mZ3Q7ZG07CiYjNDM7CWJvb2wgbGV2ZWxfY2hnID0gZmFsc2U7CiAJdTMyIHB3cl92YWw7CiAKLQlpZiAod2wtJmd0O3JmX3BhcmEudHhfcHdyX2ZyZWVydW4gPT0gbGV2ZWwpCiYjNDM7CWlmIChwaHlfbWFwICZhbXA7IEJJVChSVFc4OV9QSFlfMCkpCiYjNDM7CQlsZXZlbF9jaGcgPSAhKGRtLSZndDtyZl90cnhfcGFyYS53bF90eF9wb3dlcltSVFc4OV9QSFlfMF0gPT0gbGV2ZWwpOwomIzQzOwomIzQzOwlpZiAocGh5X21hcCAmYW1wOyBCSVQoUlRXODlfUEhZXzEpKQomIzQzOwkJbGV2ZWxfY2hnIHw9ICEoZG0tJmd0O3JmX3RyeF9wYXJhLndsX3R4X3Bvd2VyW1JUVzg5X1BIWV8xXSA9PSBsZXZlbCk7CiYjNDM7CiYjNDM7CWlmICghbGV2ZWxfY2hnICZhbXA7JmFtcDsgIWJ0Yy0mZ3Q7Y2xpX2gyY19jbWQpCiAJCXJldHVybjsKIAotCXdsLSZndDtyZl9wYXJhLnR4X3B3cl9mcmVlcnVuID0gbGV2ZWw7Ci0JYnRjLSZndDtkbS5yZl90cnhfcGFyYS53bF90eF9wb3dlciA9IGxldmVsOwomIzQzOwlpZiAocGh5X21hcCAmYW1wOyBCSVQoUlRXODlfUEhZXzApKQomIzQzOwkJZG0tJmd0O3JmX3RyeF9wYXJhLndsX3R4X3Bvd2VyW1JUVzg5X1BIWV8wXSA9IGxldmVsOwogCi0JcnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQlRDLAotCQkgICAgJiMzNDtbQlRDXSwgJXMoKTogbGV2ZWwgPSAlZFxuJiMzNDssCi0JCSAgICBfX2Z1bmNfXywgbGV2ZWwpOwomIzQzOwlpZiAocGh5X21hcCAmYW1wOyBCSVQoUlRXODlfUEhZXzEpKQomIzQzOwkJZG0tJmd0O3JmX3RyeF9wYXJhLndsX3R4X3Bvd2VyW1JUVzg5X1BIWV8xXSA9IGxldmVsOwogCi0JaWYgKGxldmVsID09IFJUVzg5X0JUQ19XTF9ERUZfVFhfUFdSKSB7Ci0JCXB3cl92YWwgPSBXTF9UWF9QT1dFUl9OT19CVENfQ1RSTDsKLQl9IGVsc2UgeyAvKiBvbmx5IGFwcGx5ICYjMzQ7Zm9yY2UgdHggcG93ZXImIzM0OyAqLwotCQlwd3JfdmFsID0gRklFTERfUFJFUChXTF9UWF9QT1dFUl9JTlRfUEFSVCwgbGV2ZWwpOwotCQlpZiAocHdyX3ZhbCAmZ3Q7IFJUVzg5X0JUQ19XTF9ERUZfVFhfUFdSKQotCQkJcHdyX3ZhbCA9IFJUVzg5X0JUQ19XTF9ERUZfVFhfUFdSOwomIzQzOwlkbS0mZ3Q7d2xfdHhfcHdyX3BoeV9tYXAgPSBwaHlfbWFwOwomIzQzOwlydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19CVEMsCiYjNDM7CQkgICAgJiMzNDtbQlRDXSwgJXMoKTogcGh5X21hcD0weCV4LCB3bF90eF9wd3ItJmd0OyBwaHkwPSVkLCBwaHkxPSVkXG4mIzM0OywKJiM0MzsJCSAgICBfX2Z1bmNfXywgcGh5X21hcCwKJiM0MzsJCSAgICBkbS0mZ3Q7cmZfdHJ4X3BhcmEud2xfdHhfcG93ZXJbUlRXODlfUEhZXzBdLAomIzQzOwkJICAgIGRtLSZndDtyZl90cnhfcGFyYS53bF90eF9wb3dlcltSVFc4OV9QSFlfMV0pOwomIzQzOwomIzQzOwlpZiAodmVyLSZndDtmY3h0cnggPT0gNyAmYW1wOyZhbXA7IGNoaXAtJmd0O2NoaXBfaWQgPT0gUlRMODkyMkEpIHsKJiM0MzsJCV9md19zZXRfZHJ2X2luZm8ocnR3ZGV2LCBDWERSVklORk9fVFhQV1IpOwomIzQzOwl9IGVsc2UgaWYgKHZlci0mZ3Q7ZmN4dHJ4ID09IDkpIHsKJiM0MzsJCV9md19zZXRfZHJ2X2luZm8ocnR3ZGV2LCBDWERSVklORk9fVFhQV1IpOwomIzQzOwl9IGVsc2UgewomIzQzOwkJaWYgKGxldmVsID09IFJUVzg5X0JUQ19XTF9ERUZfVFhfUFdSKSB7CiYjNDM7CQkJcHdyX3ZhbCA9IFdMX1RYX1BPV0VSX05PX0JUQ19DVFJMOwomIzQzOwkJfSBlbHNlIHsgLyogb25seSBhcHBseSAmIzM0O2ZvcmNlIHR4IHBvd2VyJiMzNDsgKi8KJiM0MzsJCQlwd3JfdmFsID0gRklFTERfUFJFUChXTF9UWF9QT1dFUl9JTlRfUEFSVCwgbGV2ZWwpOwomIzQzOwkJCWlmIChwd3JfdmFsICZndDsgUlRXODlfQlRDX1dMX0RFRl9UWF9QV1IpCiYjNDM7CQkJCXB3cl92YWwgPSBSVFc4OV9CVENfV0xfREVGX1RYX1BXUjsKIAotCQlpZiAobGV2ZWwgJmFtcDsgQl9CVENfV0xfVFhfUE9XRVJfU0lHTikKLQkJCXB3cl92YWwgfD0gQl9UU1NJX1dMX1RYX1BPV0VSX1NJR047Ci0JCXB3cl92YWwgfD0gV0xfVFhfUE9XRVJfV0lUSF9CVDsKJiM0MzsJCQlpZiAobGV2ZWwgJmFtcDsgQl9CVENfV0xfVFhfUE9XRVJfU0lHTikKJiM0MzsJCQkJcHdyX3ZhbCB8PSBCX1RTU0lfV0xfVFhfUE9XRVJfU0lHTjsKJiM0MzsJCQlwd3JfdmFsIHw9IFdMX1RYX1BPV0VSX1dJVEhfQlQ7CiYjNDM7CQl9CiYjNDM7CQljaGlwLSZndDtvcHMtJmd0O2J0Y19zZXRfd2xfdHhwd3JfY3RybChydHdkZXYsIHB3cl92YWwpOwogCX0KLQotCWNoaXAtJmd0O29wcy0mZ3Q7YnRjX3NldF93bF90eHB3cl9jdHJsKHJ0d2RldiwgcHdyX3ZhbCk7CiB9CiAKLXN0YXRpYyB2b2lkIF9zZXRfd2xfcnhfZ2FpbihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiBsZXZlbCkKJiM0MztzdGF0aWMgdm9pZCBfc2V0X3dsX3J4X2dhaW4oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgbGV2ZWwsIHU4IHBoeV9tYXApCiB7CiAJY29uc3Qgc3RydWN0IHJ0dzg5X2NoaXBfaW5mbyAqY2hpcCA9IHJ0d2Rldi0mZ3Q7Y2hpcDsKIAlzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSAmYW1wO3J0d2Rldi0mZ3Q7YnRjOwotCXN0cnVjdCBydHc4OV9idGNfd2xfaW5mbyAqd2wgPSAmYW1wO2J0Yy0mZ3Q7Y3gud2w7CiYjNDM7CXN0cnVjdCBydHc4OV9idGNfZG0gKmRtID0gJmFtcDtidGMtJmd0O2RtOwomIzQzOwlib29sIGxldmVsX2NoZyA9IGZhbHNlOwomIzQzOwomIzQzOwlpZiAocGh5X21hcCAmYW1wOyBCSVQoUlRXODlfUEhZXzApKQomIzQzOwkJbGV2ZWxfY2hnID0gIShkbS0mZ3Q7cmZfdHJ4X3BhcmEud2xfcnhfZ2FpbltSVFc4OV9QSFlfMF0gPT0gbGV2ZWwpOwogCi0JaWYgKHdsLSZndDtyZl9wYXJhLnJ4X2dhaW5fZnJlZXJ1biA9PSBsZXZlbCkKJiM0MzsJaWYgKHBoeV9tYXAgJmFtcDsgQklUKFJUVzg5X1BIWV8xKSkKJiM0MzsJCWxldmVsX2NoZyB8PSAhKGRtLSZndDtyZl90cnhfcGFyYS53bF9yeF9nYWluW1JUVzg5X1BIWV8xXSA9PSBsZXZlbCk7CiYjNDM7CiYjNDM7CWlmICghbGV2ZWxfY2hnICZhbXA7JmFtcDsgIWJ0Yy0mZ3Q7Y2xpX2gyY19jbWQpCiAJCXJldHVybjsKIAotCXdsLSZndDtyZl9wYXJhLnJ4X2dhaW5fZnJlZXJ1biA9IGxldmVsOwotCWJ0Yy0mZ3Q7ZG0ucmZfdHJ4X3BhcmEud2xfcnhfZ2FpbiA9IGxldmVsOwomIzQzOwlpZiAocGh5X21hcCAmYW1wOyBCSVQoUlRXODlfUEhZXzApKQomIzQzOwkJZG0tJmd0O3JmX3RyeF9wYXJhLndsX3J4X2dhaW5bUlRXODlfUEhZXzBdID0gbGV2ZWw7CiYjNDM7CiYjNDM7CWlmIChwaHlfbWFwICZhbXA7IEJJVChSVFc4OV9QSFlfMSkpCiYjNDM7CQlkbS0mZ3Q7cmZfdHJ4X3BhcmEud2xfcnhfZ2FpbltSVFc4OV9QSFlfMV0gPSBsZXZlbDsKIAogCXJ0dzg5X2RlYnVnKHJ0d2RldiwgUlRXODlfREJHX0JUQywKLQkJICAgICYjMzQ7W0JUQ10sICVzKCk6IGxldmVsID0gJWRcbiYjMzQ7LAotCQkgICAgX19mdW5jX18sIGxldmVsKTsKJiM0MzsJCSAgICAmIzM0O1tCVENdLCAlcygpOiBwaHlfbWFwPTB4JXgsIHdsX3J4X2dhaW4tJmd0OyBwaHkwPSVkLCBwaHkxPSVkXG4mIzM0OywKJiM0MzsJCSAgICBfX2Z1bmNfXywgcGh5X21hcCwKJiM0MzsJCSAgICBkbS0mZ3Q7cmZfdHJ4X3BhcmEud2xfcnhfZ2FpbltSVFc4OV9QSFlfMF0sCiYjNDM7CQkgICAgZG0tJmd0O3JmX3RyeF9wYXJhLndsX3J4X2dhaW5bUlRXODlfUEhZXzFdKTsKIAogCWNoaXAtJmd0O29wcy0mZ3Q7YnRjX3NldF93bF9yeF9nYWluKHJ0d2RldiwgbGV2ZWwpOwogfQpAQCAtMzA3NSwxMSAmIzQzOzMxNjIsMTEgQEAgc3RhdGljIHZvaWQgX3NldF93bF9yeF9nYWluKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIGxldmVsKQogc3RhdGljIHZvaWQgX3NldF9idF90eF9wb3dlcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IGxldmVsKQogewogCXN0cnVjdCBydHc4OV9idGMgKmJ0YyA9ICZhbXA7cnR3ZGV2LSZndDtidGM7Ci0Jc3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9ICZhbXA7YnRjLSZndDtjeC5idDsKJiM0MzsJc3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9ICZhbXA7YnRjLSZndDtjeC5idDA7CiAJaW50IHJldDsKIAl1OCBidWY7CiAKLQlpZiAoYnRjLSZndDtjeC5jbnRfYnRbQlRDX0JDTlRfSU5GT1VQREFURV0gPT0gMCkKJiM0MzsJaWYgKGJ0LSZndDtiY250W0JUQ19CQ05UX0lORk9VUERBVEVdID09IDApCiAJCXJldHVybjsKIAogCWlmIChidC0mZ3Q7cmZfcGFyYS50eF9wd3JfZnJlZXJ1biA9PSBsZXZlbCkKQEAgLTMwOTMsNyAmIzQzOzMxODAsNyBAQCBzdGF0aWMgdm9pZCBfc2V0X2J0X3R4X3Bvd2VyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggbGV2ZWwpCiAJcmV0ID0gX3NlbmRfZndfY21kKHJ0d2RldiwgQlRGQ19TRVQsIFNFVF9CVF9UWF9QV1IsICZhbXA7YnVmLCAxKTsKIAlpZiAoIXJldCkgewogCQlidC0mZ3Q7cmZfcGFyYS50eF9wd3JfZnJlZXJ1biA9IGxldmVsOwotCQlidGMtJmd0O2RtLnJmX3RyeF9wYXJhLmJ0X3R4X3Bvd2VyID0gbGV2ZWw7CiYjNDM7CQlidGMtJmd0O2RtLnJmX3RyeF9wYXJhLmJ0X3R4X3Bvd2VyW0JUQ19CVF8xU1RdID0gbGV2ZWw7CiAJfQogfQogCkBAIC0zMTAyLDkgJiM0MzszMTg5LDkgQEAgc3RhdGljIHZvaWQgX3NldF9idF90eF9wb3dlcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IGxldmVsKQogc3RhdGljIHZvaWQgX3NldF9idF9yeF9nYWluKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggbGV2ZWwpCiB7CiAJc3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gJmFtcDtydHdkZXYtJmd0O2J0YzsKLQlzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gJmFtcDtidGMtJmd0O2N4LmJ0OwomIzQzOwlzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gJmFtcDtidGMtJmd0O2N4LmJ0MDsKIAotCWlmIChidGMtJmd0O2N4LmNudF9idFtCVENfQkNOVF9JTkZPVVBEQVRFXSA9PSAwKQomIzQzOwlpZiAoYnQtJmd0O2JjbnRbQlRDX0JDTlRfSU5GT1VQREFURV0gPT0gMCkKIAkJcmV0dXJuOwogCiAJaWYgKChidC0mZ3Q7cmZfcGFyYS5yeF9nYWluX2ZyZWVydW4gPT0gbGV2ZWwgfHwKQEAgLTMxMTMsNyAmIzQzOzMyMDAsNyBAQCBzdGF0aWMgdm9pZCBfc2V0X2J0X3J4X2dhaW4oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCBsZXZlbCkKIAkJcmV0dXJuOwogCiAJYnQtJmd0O3JmX3BhcmEucnhfZ2Fpbl9mcmVlcnVuID0gbGV2ZWw7Ci0JYnRjLSZndDtkbS5yZl90cnhfcGFyYS5idF9yeF9nYWluID0gbGV2ZWw7CiYjNDM7CWJ0Yy0mZ3Q7ZG0ucmZfdHJ4X3BhcmEuYnRfcnhfZ2FpbltCVENfQlRfMVNUXSA9IGxldmVsOwogCiAJcnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQlRDLAogCQkgICAgJiMzNDtbQlRDXSwgJXMoKTogbGV2ZWwgPSAlZFxuJiMzNDssCkBAIC0zMTM0LDEyICYjNDM7MzIyMSwxMyBAQCBzdGF0aWMgdm9pZCBfc2V0X3JmX3RyeF9wYXJhKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldikKIAljb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3ZlciAqdmVyID0gYnRjLSZndDt2ZXI7CiAJc3RydWN0IHJ0dzg5X2J0Y19kbSAqZG0gPSAmYW1wO2J0Yy0mZ3Q7ZG07CiAJc3RydWN0IHJ0dzg5X2J0Y193bF9pbmZvICp3bCA9ICZhbXA7YnRjLSZndDtjeC53bDsKLQlzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gJmFtcDtidGMtJmd0O2N4LmJ0OwomIzQzOwlzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gJmFtcDtidGMtJmd0O2N4LmJ0MDsKIAlzdHJ1Y3QgcnR3ODlfYnRjX2J0X2xpbmtfaW5mbyAqYiA9ICZhbXA7YnQtJmd0O2xpbmtfaW5mbzsKIAlzdHJ1Y3QgcnR3ODlfYnRjX3dsX3NtYXAgKndsX3NtYXAgPSAmYW1wO3dsLSZndDtzdGF0dXMubWFwOwotCXN0cnVjdCBydHc4OV9idGNfcmZfdHJ4X3BhcmEgcGFyYTsKJiM0MzsJc3RydWN0IHJ0dzg5X2J0Y19yZl90cnhfcGFyYV92OSBwYXJhOwomIzQzOwl1OCBsdiwgbGlua19tb2RlID0gMCwgaSwgZGJjY18yZ19waHkgPSAwOwomIzQzOwl1OCB1bF9wYXJhX251bSwgZGxfcGFyYV9udW07CiAJdTMyIHdsX3N0Yl9jaGcgPSAwOwotCXU4IGxldmVsX2lkID0gMCwgbGlua19tb2RlID0gMCwgaSwgZGJjY18yZ19waHkgPSAwOwogCiAJaWYgKHZlci0mZ3Q7Zndscm9sZSA9PSAwKSB7CiAJCWxpbmtfbW9kZSA9IHdsLSZndDtyb2xlX2luZm8ubGlua19tb2RlOwpAQCAtMzE1NSw2ICYjNDM7MzI0MywxOCBAQCBzdGF0aWMgdm9pZCBfc2V0X3JmX3RyeF9wYXJhKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldikKIAkJZGJjY18yZ19waHkgPSB3bC0mZ3Q7cm9sZV9pbmZvX3YyLmRiY2NfMmdfcGh5OwogCX0KIAomIzQzOwlpZiAodmVyLSZndDtmY3h0cnggPT0gOSAmYW1wOyZhbXA7IGNoaXAtJmd0O3JmX3BhcmFfdWxpbmtfdjkpIHsKJiM0MzsJCXVsX3BhcmFfbnVtID0gY2hpcC0mZ3Q7cmZfcGFyYV91bGlua19udW1fdjk7CiYjNDM7CQlkbF9wYXJhX251bSA9IGNoaXAtJmd0O3JmX3BhcmFfZGxpbmtfbnVtX3Y5OwomIzQzOwl9IGVsc2UgaWYgKHZlci0mZ3Q7ZmN4dHJ4ID09IDAgJmFtcDsmYW1wOyBjaGlwLSZndDtyZl9wYXJhX3VsaW5rX3YwKSB7CiYjNDM7CQl1bF9wYXJhX251bSA9IGNoaXAtJmd0O3JmX3BhcmFfdWxpbmtfbnVtX3YwOwomIzQzOwkJZGxfcGFyYV9udW0gPSBjaGlwLSZndDtyZl9wYXJhX2RsaW5rX251bV92MDsKJiM0MzsJfSBlbHNlIHsKJiM0MzsJCXJ0dzg5X3dhcm4ocnR3ZGV2LCAmIzM0O1tCVENdJXMoKSwgTm8gcmZfcGFyYSBmb3IgdmVyc2Vpb24gJWRcbiYjMzQ7LAomIzQzOwkJCSAgIF9fZnVuY19fLCB2ZXItJmd0O2ZjeHRyeCk7CiYjNDM7CQlnb3RvIG5leHQ7CiYjNDM7CX0KJiM0MzsKIAkvKiBkZWNpZGUgdHJ4X3BhcmFfbGV2ZWwgKi8KIAlpZiAoYnRjLSZndDthbnRfdHlwZSA9PSBCVENfQU5UX1NIQVJFRCkgewogCQkvKiBmaXggTE5BMiAmIzQzOyBUSUEgZ2FpbiBub3QgY2hhbmdlIGJ5IEdOVF9CVCAqLwpAQCAtMzE3NiwzMCAmIzQzOzMyNzYsNTQgQEAgc3RhdGljIHZvaWQgX3NldF9yZl90cnhfcGFyYShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpCiAJCX0KIAl9CiAKLQlsZXZlbF9pZCA9IGRtLSZndDt0cnhfcGFyYV9sZXZlbDsKLQlpZiAobGV2ZWxfaWQgJmd0Oz0gY2hpcC0mZ3Q7cmZfcGFyYV9kbGlua19udW0gfHwKLQkgICAgbGV2ZWxfaWQgJmd0Oz0gY2hpcC0mZ3Q7cmZfcGFyYV91bGlua19udW0pIHsKJiM0MzsJbHYgPSBkbS0mZ3Q7dHJ4X3BhcmFfbGV2ZWw7CiYjNDM7CWlmIChsdiAmZ3Q7PSB1bF9wYXJhX251bSB8fAomIzQzOwkgICAgbHYgJmd0Oz0gZGxfcGFyYV9udW0pIHsKIAkJcnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQlRDLAogCQkJICAgICYjMzQ7W0JUQ10sICVzKCk6IGludmFsaWQgbGV2ZWxfaWQ6ICVkXG4mIzM0OywKLQkJCSAgICBfX2Z1bmNfXywgbGV2ZWxfaWQpOwomIzQzOwkJCSAgICBfX2Z1bmNfXywgbHYpOwogCQlyZXR1cm47CiAJfQogCi0JaWYgKHdsLSZndDtzdGF0dXMubWFwLnRyYWZmaWNfZGlyICZhbXA7IEJJVChSVFc4OV9URkNfVUwpKQotCQlwYXJhID0gY2hpcC0mZ3Q7cmZfcGFyYV91bGlua1tsZXZlbF9pZF07Ci0JZWxzZQotCQlwYXJhID0gY2hpcC0mZ3Q7cmZfcGFyYV9kbGlua1tsZXZlbF9pZF07CiYjNDM7CWlmICh3bC0mZ3Q7c3RhdHVzLm1hcC50cmFmZmljX2RpciAmYW1wOyBCSVQoUlRXODlfVEZDX1VMKSkgewomIzQzOwkJaWYgKHZlci0mZ3Q7ZmN4dHJ4ID09IDkpIHsKJiM0MzsJCQlwYXJhID0gY2hpcC0mZ3Q7cmZfcGFyYV91bGlua192OVtsdl07CiYjNDM7CQl9IGVsc2UgewomIzQzOwkJCWZvciAoaSA9IFJUVzg5X1BIWV8wOyBpICZsdDsgUlRXODlfUEhZX05VTTsgaSYjNDM7JiM0MzspIHsKJiM0MzsJCQkJcGFyYS53bF90eF9wb3dlcltpXSA9IGNoaXAtJmd0O3JmX3BhcmFfdWxpbmtfdjBbbHZdLndsX3R4X3Bvd2VyOwomIzQzOwkJCQlwYXJhLndsX3J4X2dhaW5baV0gPSBjaGlwLSZndDtyZl9wYXJhX3VsaW5rX3YwW2x2XS53bF9yeF9nYWluOwomIzQzOwkJCX0KJiM0MzsJCQlmb3IgKGkgPSBCVENfQlRfMVNUOyBpICZsdDsgQlRDX0FMTF9CVDsgaSYjNDM7JiM0MzspIHsKJiM0MzsJCQkJcGFyYS5idF90eF9wb3dlcltpXSA9IGNoaXAtJmd0O3JmX3BhcmFfdWxpbmtfdjBbbHZdLmJ0X3R4X3Bvd2VyOwomIzQzOwkJCQlwYXJhLmJ0X3J4X2dhaW5baV0gPSBjaGlwLSZndDtyZl9wYXJhX3VsaW5rX3YwW2x2XS5idF9yeF9nYWluOwomIzQzOwkJCX0KJiM0MzsJCX0KJiM0MzsJfSBlbHNlIHsKJiM0MzsJCWlmICh2ZXItJmd0O2ZjeHRyeCA9PSA5KSB7CiYjNDM7CQkJcGFyYSA9IGNoaXAtJmd0O3JmX3BhcmFfZGxpbmtfdjlbbHZdOwomIzQzOwkJfSBlbHNlIHsKJiM0MzsJCQlmb3IgKGkgPSBSVFc4OV9QSFlfMDsgaSAmbHQ7IFJUVzg5X1BIWV9OVU07IGkmIzQzOyYjNDM7KSB7CiYjNDM7CQkJCXBhcmEud2xfdHhfcG93ZXJbaV0gPSBjaGlwLSZndDtyZl9wYXJhX2RsaW5rX3YwW2x2XS53bF90eF9wb3dlcjsKJiM0MzsJCQkJcGFyYS53bF9yeF9nYWluW2ldID0gY2hpcC0mZ3Q7cmZfcGFyYV9kbGlua192MFtsdl0ud2xfcnhfZ2FpbjsKJiM0MzsJCQl9CiYjNDM7CQkJZm9yIChpID0gQlRDX0JUXzFTVDsgaSAmbHQ7IEJUQ19BTExfQlQ7IGkmIzQzOyYjNDM7KSB7CiYjNDM7CQkJCXBhcmEuYnRfdHhfcG93ZXJbaV0gPSBjaGlwLSZndDtyZl9wYXJhX2RsaW5rX3YwW2x2XS5idF90eF9wb3dlcjsKJiM0MzsJCQkJcGFyYS5idF9yeF9nYWluW2ldID0gY2hpcC0mZ3Q7cmZfcGFyYV9kbGlua192MFtsdl0uYnRfcnhfZ2FpbjsKJiM0MzsJCQl9CiYjNDM7CQl9CiYjNDM7CX0KIAogCWlmIChkbS0mZ3Q7ZmRkdF90cmFpbikgewotCQlfc2V0X3dsX3J4X2dhaW4ocnR3ZGV2LCAxKTsKJiM0MzsJCV9zZXRfd2xfcnhfZ2FpbihydHdkZXYsIDEsIFJUVzg5X1BIWV8wKTsKIAkJX3dyaXRlX3NjYmQocnR3ZGV2LCBCVENfV1NDQl9SWEdBSU4sIHRydWUpOwogCX0gZWxzZSB7Ci0JCV9zZXRfd2xfdHhfcG93ZXIocnR3ZGV2LCBwYXJhLndsX3R4X3Bvd2VyKTsKLQkJX3NldF93bF9yeF9nYWluKHJ0d2RldiwgcGFyYS53bF9yeF9nYWluKTsKLQkJX3NldF9idF90eF9wb3dlcihydHdkZXYsIHBhcmEuYnRfdHhfcG93ZXIpOwotCQlfc2V0X2J0X3J4X2dhaW4ocnR3ZGV2LCBwYXJhLmJ0X3J4X2dhaW4pOwomIzQzOwkJX3NldF93bF90eF9wb3dlcihydHdkZXYsIHBhcmEud2xfdHhfcG93ZXJbUlRXODlfUEhZXzBdLCBSVFc4OV9QSFlfMCk7CiYjNDM7CQlfc2V0X3dsX3J4X2dhaW4ocnR3ZGV2LCBwYXJhLndsX3J4X2dhaW5bUlRXODlfUEhZXzBdLCBSVFc4OV9QSFlfMCk7CiYjNDM7CQlfc2V0X2J0X3R4X3Bvd2VyKHJ0d2RldiwgcGFyYS5idF90eF9wb3dlcltCVENfQlRfMVNUXSk7CiYjNDM7CQlfc2V0X2J0X3J4X2dhaW4ocnR3ZGV2LCBwYXJhLmJ0X3J4X2dhaW5bQlRDX0JUXzFTVF0pOwogCX0KIAomIzQzO25leHQ6CiAJaWYgKCFidC0mZ3Q7ZW5hYmxlLm5vdyB8fCBkbS0mZ3Q7d2xfb25seSB8fCB3bF9zbWFwLSZndDtyZl9vZmYgfHwKIAkgICAgd2xfc21hcC0mZ3Q7bHBzID09IEJUQ19MUFNfUkZfT0ZGIHx8CiAJICAgIGxpbmtfbW9kZSA9PSBCVENfV0xJTktfNUcgfHwKQEAgLTMyMjAsNyAmIzQzOzMzNDQsNyBAQCBzdGF0aWMgdm9pZCBfdXBkYXRlX2J0Y19zdGF0ZV9tYXAoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KQogCXN0cnVjdCBydHc4OV9idGMgKmJ0YyA9ICZhbXA7cnR3ZGV2LSZndDtidGM7CiAJc3RydWN0IHJ0dzg5X2J0Y19jeCAqY3ggPSAmYW1wO2J0Yy0mZ3Q7Y3g7CiAJc3RydWN0IHJ0dzg5X2J0Y193bF9pbmZvICp3bCA9ICZhbXA7Y3gtJmd0O3dsOwotCXN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSAmYW1wO2N4LSZndDtidDsKJiM0MzsJc3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9ICZhbXA7Y3gtJmd0O2J0MDsKIAlzdHJ1Y3QgcnR3ODlfYnRjX2J0X2xpbmtfaW5mbyAqYnRfbGluZm8gPSAmYW1wO2J0LSZndDtsaW5rX2luZm87CiAKIAlpZiAod2wtJmd0O3N0YXR1cy5tYXAuY29ubmVjdGluZyB8fCB3bC0mZ3Q7c3RhdHVzLm1hcC5fNHdheSB8fApAQCAtMzI0Nyw3ICYjNDM7MzM3MSw3IEBAIHN0YXRpYyB2b2lkIF9zZXRfYnRfYWZoX2luZm9fdjAoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KQogCXN0cnVjdCBydHc4OV9idGMgKmJ0YyA9ICZhbXA7cnR3ZGV2LSZndDtidGM7CiAJY29uc3Qgc3RydWN0IHJ0dzg5X2J0Y192ZXIgKnZlciA9IGJ0Yy0mZ3Q7dmVyOwogCXN0cnVjdCBydHc4OV9idGNfd2xfaW5mbyAqd2wgPSAmYW1wO2J0Yy0mZ3Q7Y3gud2w7Ci0Jc3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9ICZhbXA7YnRjLSZndDtjeC5idDsKJiM0MzsJc3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9ICZhbXA7YnRjLSZndDtjeC5idDA7CiAJc3RydWN0IHJ0dzg5X2J0Y19idF9saW5rX2luZm8gKmIgPSAmYW1wO2J0LSZndDtsaW5rX2luZm87CiAJc3RydWN0IHJ0dzg5X2J0Y193bF9yb2xlX2luZm8gKndsX3JpbmZvID0gJmFtcDt3bC0mZ3Q7cm9sZV9pbmZvOwogCXN0cnVjdCBydHc4OV9idGNfd2xfcm9sZV9pbmZvX3YxICp3bF9yaW5mb192MSA9ICZhbXA7d2wtJmd0O3JvbGVfaW5mb192MTsKQEAgLTM0MDcsNyAmIzQzOzM1MzEsNyBAQCBzdGF0aWMgdm9pZCBfc2V0X2J0X2FmaF9pbmZvX3YwKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldikKIAlydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19CVEMsCiAJCSAgICAmIzM0O1tCVENdLCAlcygpOiBlbj0lZCwgY2g9JWQsIGJ3PSVkXG4mIzM0OywKIAkJICAgIF9fZnVuY19fLCBlbiwgY2gsIGJ3KTsKLQlidGMtJmd0O2N4LmNudF93bFtCVENfV0NOVF9DSF9VUERBVEVdJiM0MzsmIzQzOzsKJiM0MzsJd2wtJmd0O3djbnRbQlRDX1dDTlRfQ0hfVVBEQVRFXSYjNDM7JiM0Mzs7CiB9CiAKIHN0YXRpYyB2b2lkIF9zZXRfYnRfYWZoX2luZm9fdjEoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KQpAQCAtMzQxNyw3ICYjNDM7MzU0MSw3IEBAIHN0YXRpYyB2b2lkIF9zZXRfYnRfYWZoX2luZm9fdjEoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KQogCXN0cnVjdCBydHc4OV9idGNfd2xfaW5mbyAqd2wgPSAmYW1wO2J0Yy0mZ3Q7Y3gud2w7CiAJc3RydWN0IHJ0dzg5X2J0Y193bF9yb2xlX2luZm9fdjggKndsX3JpbmZvID0gJmFtcDt3bC0mZ3Q7cm9sZV9pbmZvX3Y4OwogCXN0cnVjdCBydHc4OV9idGNfd2xfYWZoX2luZm8gKndsX2FmaCA9ICZhbXA7d2wtJmd0O2FmaF9pbmZvOwotCXN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSAmYW1wO2J0Yy0mZ3Q7Y3guYnQ7CiYjNDM7CXN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSAmYW1wO2J0Yy0mZ3Q7Y3guYnQwOwogCXN0cnVjdCBydHc4OV9idGNfd2xfcmxpbmsgKnJsaW5rOwogCXU4IGVuID0gMCwgY2ggPSAwLCBidyA9IDAsIGJ1ZlszXSA9IHt9OwogCXU4IGksIGosIGxpbmtfbW9kZTsKQEAgLTM1MDcsNyAmIzQzOzM2MzEsNyBAQCBzdGF0aWMgdm9pZCBfc2V0X2J0X2FmaF9pbmZvX3YxKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldikKIAkJCSAgICAmIzM0O1tCVENdLCAlcygpOiBlbj0lZCwgY2g9JWQsIGJ3PSVkXG4mIzM0OywKIAkJCSAgICBfX2Z1bmNfXywgZW4sIGNoLCBidyk7CiAKLQkJYnRjLSZndDtjeC5jbnRfd2xbQlRDX1dDTlRfQ0hfVVBEQVRFXSYjNDM7JiM0Mzs7CiYjNDM7CQl3bC0mZ3Q7d2NudFtCVENfV0NOVF9DSF9VUERBVEVdJiM0MzsmIzQzOzsKIAl9CiB9CiAKQEAgLTM1MjMsNyAmIzQzOzM2NDcsNyBAQCBzdGF0aWMgYm9vbCBfY2hlY2tfZnJlZXJ1bihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpCiB7CiAJc3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gJmFtcDtydHdkZXYtJmd0O2J0YzsKIAlzdHJ1Y3QgcnR3ODlfYnRjX3dsX2luZm8gKndsID0gJmFtcDtidGMtJmd0O2N4LndsOwotCXN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSAmYW1wO2J0Yy0mZ3Q7Y3guYnQ7CiYjNDM7CXN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSAmYW1wO2J0Yy0mZ3Q7Y3guYnQwOwogCXN0cnVjdCBydHc4OV9idGNfd2xfcm9sZV9pbmZvICp3bF9yaW5mbyA9ICZhbXA7d2wtJmd0O3JvbGVfaW5mbzsKIAlzdHJ1Y3QgcnR3ODlfYnRjX3dsX3JvbGVfaW5mb192MSAqd2xfcmluZm9fdjEgPSAmYW1wO3dsLSZndDtyb2xlX2luZm9fdjE7CiAJc3RydWN0IHJ0dzg5X2J0Y193bF9yb2xlX2luZm9fdjIgKndsX3JpbmZvX3YyID0gJmFtcDt3bC0mZ3Q7cm9sZV9pbmZvX3YyOwpAQCAtMzk5Niw5ICYjNDM7NDEyMCw5IEBAIHZvaWQgcnR3ODlfYnRjX3NldF9wb2xpY3lfdjEoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MTYgcG9saWN5X3R5cGUpCiAJc3RydWN0IHJ0dzg5X2J0Y19kbSAqZG0gPSAmYW1wO2J0Yy0mZ3Q7ZG07CiAJc3RydWN0IHJ0dzg5X2J0Y19mYnRjX3RkbWEgKnQgPSAmYW1wO2RtLSZndDt0ZG1hOwogCXN0cnVjdCBydHc4OV9idGNfd2xfcm9sZV9pbmZvX3YxICp3bF9yaW5mbyA9ICZhbXA7YnRjLSZndDtjeC53bC5yb2xlX2luZm9fdjE7Ci0Jc3RydWN0IHJ0dzg5X2J0Y19idF9hMmRwX2Rlc2MgKmEyZHAgPSAmYW1wO2J0Yy0mZ3Q7Y3guYnQubGlua19pbmZvLmEyZHBfZGVzYzsKLQlzdHJ1Y3QgcnR3ODlfYnRjX2J0X2hpZF9kZXNjICpoaWQgPSAmYW1wO2J0Yy0mZ3Q7Y3guYnQubGlua19pbmZvLmhpZF9kZXNjOwotCXN0cnVjdCBydHc4OV9idGNfYnRfaGZwX2Rlc2MgKmhmcCA9ICZhbXA7YnRjLSZndDtjeC5idC5saW5rX2luZm8uaGZwX2Rlc2M7CiYjNDM7CXN0cnVjdCBydHc4OV9idGNfYnRfYTJkcF9kZXNjICphMmRwID0gJmFtcDtidGMtJmd0O2N4LmJ0MC5saW5rX2luZm8uYTJkcF9kZXNjOwomIzQzOwlzdHJ1Y3QgcnR3ODlfYnRjX2J0X2hpZF9kZXNjICpoaWQgPSAmYW1wO2J0Yy0mZ3Q7Y3guYnQwLmxpbmtfaW5mby5oaWRfZGVzYzsKJiM0MzsJc3RydWN0IHJ0dzg5X2J0Y19idF9oZnBfZGVzYyAqaGZwID0gJmFtcDtidGMtJmd0O2N4LmJ0MC5saW5rX2luZm8uaGZwX2Rlc2M7CiAJc3RydWN0IHJ0dzg5X2J0Y193bF9pbmZvICp3bCA9ICZhbXA7YnRjLSZndDtjeC53bDsKIAl1OCB0eXBlLCBudWxsX3JvbGU7CiAJdTMyIHRibF93MSwgdGJsX2IxLCB0YmxfYjQ7CkBAIC00NDM0LDcgJiM0Mzs0NTU4LDcgQEAgdm9pZCBydHc4OV9idGNfc2V0X3BvbGljeV92MShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUxNiBwb2xpY3lfdHlwZSkKIAlpZiAoZG0tJmd0O2xlYWtfYXAgJmFtcDsmYW1wOyBkbS0mZ3Q7dGRtYS5sZWFrX24gJmd0OyAxKQogCQlfdGRtYV9zZXRfbGVrKGJ0YywgMSk7CiAKLQlpZiAoZG0tJmd0O3RkbWFfaW5zdGFudF9leGN1dGUpIHsKJiM0MzsJaWYgKGRtLSZndDt0ZG1hX2luc3RhbnRfZXhjdXRlIHx8IGRtLSZndDtscHNfY3RybF9jaGFuZ2UpIHsKIAkJYnRjLSZndDtkbS50ZG1hLm9wdGlvbl9jdHJsIHw9IEJJVCgwKTsKIAkJYnRjLSZndDt1cGRhdGVfcG9saWN5X2ZvcmNlID0gdHJ1ZTsKIAl9CkBAIC00NDc5LDcgJiM0Mzs0NjAzLDcgQEAgc3RhdGljIHZvaWQgX3NldF9hbnRfdjAoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBib29sIGZvcmNlX2V4ZWMsCiAJc3RydWN0IHJ0dzg5X2J0Y19kbSAqZG0gPSAmYW1wO2J0Yy0mZ3Q7ZG07CiAJc3RydWN0IHJ0dzg5X2J0Y19jeCAqY3ggPSAmYW1wO2J0Yy0mZ3Q7Y3g7CiAJc3RydWN0IHJ0dzg5X2J0Y193bF9pbmZvICp3bCA9ICZhbXA7YnRjLSZndDtjeC53bDsKLQlzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gJmFtcDtjeC0mZ3Q7YnQ7CiYjNDM7CXN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSAmYW1wO2N4LSZndDtidDA7CiAJc3RydWN0IHJ0dzg5X2J0Y193bF9kYmNjX2luZm8gKndsX2RpbmZvID0gJmFtcDt3bC0mZ3Q7ZGJjY19pbmZvOwogCXU4IGdudF93bF9jdHJsLCBnbnRfYnRfY3RybCwgcGx0X2N0cmwsIGksIGIyZyA9IDA7CiAJYm9vbCBkYmNjX2NoZyA9IGZhbHNlOwpAQCAtNDYwNyw3ICYjNDM7NDczMSw3IEBAIHN0YXRpYyB2b2lkIF9zZXRfYW50X3YxKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgYm9vbCBmb3JjZV9leGVjLAogewogCXN0cnVjdCBydHc4OV9idGMgKmJ0YyA9ICZhbXA7cnR3ZGV2LSZndDtidGM7CiAJc3RydWN0IHJ0dzg5X2J0Y193bF9pbmZvICp3bCA9ICZhbXA7YnRjLSZndDtjeC53bDsKLQlzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gJmFtcDtidGMtJmd0O2N4LmJ0OwomIzQzOwlzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gJmFtcDtidGMtJmd0O2N4LmJ0MDsKIAlzdHJ1Y3QgcnR3ODlfYnRjX3dsX3JvbGVfaW5mb192OCAqd2xfcmluZm8gPSAmYW1wO3dsLSZndDtyb2xlX2luZm9fdjg7CiAJdTMyIGFudF9wYXRoX3R5cGUgPSBydHc4OV9nZXRfYW50cGF0aF90eXBlKHBoeV9tYXAsIHR5cGUpOwogCXN0cnVjdCBydHc4OV9idGNfd2xfZGJjY19pbmZvICp3bF9kaW5mbyA9ICZhbXA7d2wtJmd0O2RiY2NfaW5mbzsKQEAgLTQ3NDYsNyAmIzQzOzQ4NzAsNyBAQCBzdGF0aWMgdm9pZCBfYWN0aW9uX3dsX29mZihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IG1vZGUpCiAJaWYgKG1vZGUgPT0gQlRDX1dMSU5LXzVHKSB7CiAJCV9zZXRfcG9saWN5KHJ0d2RldiwgQlRDX0NYUF9PRkZfRVEwLCBCVENfQUNUX1dMX09GRik7CiAJfSBlbHNlIGlmICh3bC0mZ3Q7c3RhdHVzLm1hcC5scHMgPT0gQlRDX0xQU19SRl9PTikgewotCQlpZiAoYnRjLSZndDtjeC5idC5saW5rX2luZm8uYTJkcF9kZXNjLmFjdGl2ZSkKJiM0MzsJCWlmIChidGMtJmd0O2N4LmJ0MC5saW5rX2luZm8uYTJkcF9kZXNjLmFjdGl2ZSkKIAkJCV9zZXRfcG9saWN5KHJ0d2RldiwgQlRDX0NYUF9PRkZfQlQsIEJUQ19BQ1RfV0xfT0ZGKTsKIAkJZWxzZQogCQkJX3NldF9wb2xpY3kocnR3ZGV2LCBCVENfQ1hQX09GRl9CV0IxLCBCVENfQUNUX1dMX09GRik7CkBAIC00Nzg2LDcgJiM0Mzs0OTEwLDcgQEAgc3RhdGljIHZvaWQgX2FjdGlvbl9idF9vZmYoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KQogc3RhdGljIHZvaWQgX2FjdGlvbl9idF9pZGxlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldikKIHsKIAlzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSAmYW1wO3J0d2Rldi0mZ3Q7YnRjOwotCXN0cnVjdCBydHc4OV9idGNfYnRfbGlua19pbmZvICpiID0gJmFtcDtidGMtJmd0O2N4LmJ0LmxpbmtfaW5mbzsKJiM0MzsJc3RydWN0IHJ0dzg5X2J0Y19idF9saW5rX2luZm8gKmIgPSAmYW1wO2J0Yy0mZ3Q7Y3guYnQwLmxpbmtfaW5mbzsKIAlzdHJ1Y3QgcnR3ODlfYnRjX3dsX2luZm8gKndsID0gJmFtcDtidGMtJmd0O2N4LndsOwogCiAJX3NldF9hbnQocnR3ZGV2LCBOTV9FWEVDLCBCVENfUEhZX0FMTCwgQlRDX0FOVF9XMkcpOwpAQCAtNDgzNCw3ICYjNDM7NDk1OCw3IEBAIHN0YXRpYyB2b2lkIF9hY3Rpb25fYnRfaGZwKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldikKIAkJaWYgKGJ0Yy0mZ3Q7Y3gud2wuc3RhdHVzLm1hcC5fNHdheSkgewogCQkJX3NldF9wb2xpY3kocnR3ZGV2LCBCVENfQ1hQX09GRl9XTCwgQlRDX0FDVF9CVF9IRlApOwogCQl9IGVsc2UgaWYgKHdsLSZndDtzdGF0dXMubWFwLnRyYWZmaWNfZGlyICZhbXA7IEJJVChSVFc4OV9URkNfVUwpKSB7Ci0JCQlidGMtJmd0O2N4LmJ0LnNjYW5fcnhfbG93X3ByaSA9IHRydWU7CiYjNDM7CQkJYnRjLSZndDtjeC5idDAuc2Nhbl9yeF9sb3dfcHJpID0gdHJ1ZTsKIAkJCV9zZXRfcG9saWN5KHJ0d2RldiwgQlRDX0NYUF9PRkZfQldCMiwgQlRDX0FDVF9CVF9IRlApOwogCQl9IGVsc2UgewogCQkJX3NldF9wb2xpY3kocnR3ZGV2LCBCVENfQ1hQX09GRl9CV0IxLCBCVENfQUNUX0JUX0hGUCk7CkBAIC00ODU0LDcgJiM0Mzs0OTc4LDcgQEAgc3RhdGljIHZvaWQgX2FjdGlvbl9idF9oaWQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KQogCWNvbnN0IHN0cnVjdCBydHc4OV9jaGlwX2luZm8gKmNoaXAgPSBydHdkZXYtJmd0O2NoaXA7CiAJc3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gJmFtcDtydHdkZXYtJmd0O2J0YzsKIAlzdHJ1Y3QgcnR3ODlfYnRjX3dsX2luZm8gKndsID0gJmFtcDtidGMtJmd0O2N4LndsOwotCXN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSAmYW1wO2J0Yy0mZ3Q7Y3guYnQ7CiYjNDM7CXN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSAmYW1wO2J0Yy0mZ3Q7Y3guYnQwOwogCXN0cnVjdCBydHc4OV9idGNfYnRfaGlkX2Rlc2MgKmhpZCA9ICZhbXA7YnQtJmd0O2xpbmtfaW5mby5oaWRfZGVzYzsKIAl1MTYgcG9saWN5X3R5cGUgPSBCVENfQ1hQX09GRl9CVDsKIApAQCAtNDg2NCw3ICYjNDM7NDk4OCw3IEBAIHN0YXRpYyB2b2lkIF9hY3Rpb25fYnRfaGlkKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldikKIAkJaWYgKHdsLSZndDtzdGF0dXMubWFwLl80d2F5KSB7CiAJCQlwb2xpY3lfdHlwZSA9IEJUQ19DWFBfT0ZGX1dMOwogCQl9IGVsc2UgaWYgKHdsLSZndDtzdGF0dXMubWFwLnRyYWZmaWNfZGlyICZhbXA7IEJJVChSVFc4OV9URkNfVUwpKSB7Ci0JCQlidGMtJmd0O2N4LmJ0LnNjYW5fcnhfbG93X3ByaSA9IHRydWU7CiYjNDM7CQkJYnRjLSZndDtjeC5idDAuc2Nhbl9yeF9sb3dfcHJpID0gdHJ1ZTsKIAkJCWlmIChoaWQtJmd0O3R5cGUgJmFtcDsgQlRDX0hJRF9CTEUpCiAJCQkJcG9saWN5X3R5cGUgPSBCVENfQ1hQX09GRl9CV0IwOwogCQkJZWxzZQpAQCAtNDk1Niw3ICYjNDM7NTA4MCw3IEBAIHN0YXRpYyB2b2lkIF9hY3Rpb25fYnRfYTJkcHNpbmsoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KQogc3RhdGljIHZvaWQgX2FjdGlvbl9idF9wYW4oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KQogewogCXN0cnVjdCBydHc4OV9idGMgKmJ0YyA9ICZhbXA7cnR3ZGV2LSZndDtidGM7Ci0Jc3RydWN0IHJ0dzg5X2J0Y19idF9saW5rX2luZm8gKmJ0X2xpbmZvID0gJmFtcDtidGMtJmd0O2N4LmJ0LmxpbmtfaW5mbzsKJiM0MzsJc3RydWN0IHJ0dzg5X2J0Y19idF9saW5rX2luZm8gKmJ0X2xpbmZvID0gJmFtcDtidGMtJmd0O2N4LmJ0MC5saW5rX2luZm87CiAJc3RydWN0IHJ0dzg5X2J0Y19idF9hMmRwX2Rlc2MgYTJkcCA9IGJ0X2xpbmZvLSZndDthMmRwX2Rlc2M7CiAJc3RydWN0IHJ0dzg5X2J0Y19idF9wYW5fZGVzYyBwYW4gPSBidF9saW5mby0mZ3Q7cGFuX2Rlc2M7CiAKQEAgLTUxNjgsNyAmIzQzOzUyOTIsNyBAQCBzdGF0aWMgdm9pZCBfc2V0X2J0Z19jdHJsKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldikKIAlzdHJ1Y3QgcnR3ODlfYnRjX3dsX3JvbGVfaW5mbyAqd2xfcmluZm9fdjAgPSAmYW1wO3dsLSZndDtyb2xlX2luZm87CiAJY29uc3Qgc3RydWN0IHJ0dzg5X2NoaXBfaW5mbyAqY2hpcCA9IHJ0d2Rldi0mZ3Q7Y2hpcDsKIAljb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3ZlciAqdmVyID0gYnRjLSZndDt2ZXI7Ci0Jc3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9ICZhbXA7YnRjLSZndDtjeC5idDsKJiM0MzsJc3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9ICZhbXA7YnRjLSZndDtjeC5idDA7CiAJc3RydWN0IHJ0dzg5X2J0Y19kbSAqZG0gPSAmYW1wO2J0Yy0mZ3Q7ZG07CiAJc3RydWN0IF93bF9yaW5mb19ub3cgd2xfcmluZm87CiAJdTMyIGlzX2J0ZyA9IEJUQ19CVEdDVFJMX0RJU0FCTEU7CkBAIC01MjQ1LDEzICYjNDM7NTM2OSwxMyBAQCBzdGF0aWMgdm9pZCBfc2V0X3dsX3ByZWFnY19jdHJsKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldikKIHsKIAlzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSAmYW1wO3J0d2Rldi0mZ3Q7YnRjOwogCXN0cnVjdCBydHc4OV9idGNfZmJ0Y19vdXRzcmNfc2V0X2luZm8gKm9faW5mbyA9ICZhbXA7YnRjLSZndDtkbS5vc3RfaW5mbzsKLQlzdHJ1Y3QgcnR3ODlfYnRjX2J0X2xpbmtfaW5mbyAqYnRfbGluZm8gPSAmYW1wO2J0Yy0mZ3Q7Y3guYnQubGlua19pbmZvOwomIzQzOwlzdHJ1Y3QgcnR3ODlfYnRjX2J0X2xpbmtfaW5mbyAqYnRfbGluZm8gPSAmYW1wO2J0Yy0mZ3Q7Y3guYnQwLmxpbmtfaW5mbzsKIAlzdHJ1Y3QgcnR3ODlfYnRjX3dsX2luZm8gKndsID0gJmFtcDtidGMtJmd0O2N4LndsOwogCXN0cnVjdCBydHc4OV9idGNfd2xfcm9sZV9pbmZvX3YyICpyaW5mb192MiA9ICZhbXA7d2wtJmd0O3JvbGVfaW5mb192MjsKIAlzdHJ1Y3QgcnR3ODlfYnRjX3dsX3JvbGVfaW5mb192NyAqcmluZm9fdjcgPSAmYW1wO3dsLSZndDtyb2xlX2luZm9fdjc7CiAJc3RydWN0IHJ0dzg5X2J0Y193bF9yb2xlX2luZm9fdjggKnJpbmZvX3Y4ID0gJmFtcDt3bC0mZ3Q7cm9sZV9pbmZvX3Y4OwogCWNvbnN0IHN0cnVjdCBydHc4OV9jaGlwX2luZm8gKmNoaXAgPSBydHdkZXYtJmd0O2NoaXA7Ci0Jc3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9ICZhbXA7YnRjLSZndDtjeC5idDsKJiM0MzsJc3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9ICZhbXA7YnRjLSZndDtjeC5idDA7CiAJc3RydWN0IHJ0dzg5X2J0Y19kbSAqZG0gPSAmYW1wO2J0Yy0mZ3Q7ZG07CiAJdTggaXNfcHJlYWdjLCB2YWwsIGxpbmtfbW9kZSwgZGJjY18yZ19waHk7CiAJdTggcm9sZV92ZXIgPSBydHdkZXYtJmd0O2J0Yy52ZXItJmd0O2Z3bHJvbGU7CkBAIC01MjgxLDcgJiM0Mzs1NDA1LDcgQEAgc3RhdGljIHZvaWQgX3NldF93bF9wcmVhZ2NfY3RybChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpCiAJfSBlbHNlIGlmIChsaW5rX21vZGUgPT0gQlRDX1dMSU5LXzVHKSB7CiAJCWlzX3ByZWFnYyA9IEJUQ19QUkVBR0NfRElTQUJMRTsKIAl9IGVsc2UgaWYgKGxpbmtfbW9kZSA9PSBCVENfV0xJTktfTk9MSU5LIHx8Ci0JCSBidGMtJmd0O2N4LmJ0LmxpbmtfaW5mby5wcm9maWxlX2NudC5ub3cgPT0gMCkgewomIzQzOwkJIGJ0Yy0mZ3Q7Y3guYnQwLmxpbmtfaW5mby5wcm9maWxlX2NudC5ub3cgPT0gMCkgewogCQlpc19wcmVhZ2MgPSBCVENfUFJFQUdDX0RJU0FCTEU7CiAJfSBlbHNlIGlmIChkbS0mZ3Q7dGRtYV9ub3cudHlwZSAhPSBDWFRETUFfT0ZGICZhbXA7JmFtcDsKIAkJICFidF9saW5mby0mZ3Q7aGZwX2Rlc2MuZXhpc3QgJmFtcDsmYW1wOwpAQCAtNTQzMSw3ICYjNDM7NTU1NSw3IEBAIHN0YXRpYyB2b2lkIF9zZXRfd2xfdHhfbGltaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KQogCXN0cnVjdCBydHc4OV9idGNfY3ggKmN4ID0gJmFtcDtidGMtJmd0O2N4OwogCXN0cnVjdCBydHc4OV9idGNfZG0gKmRtID0gJmFtcDtidGMtJmd0O2RtOwogCXN0cnVjdCBydHc4OV9idGNfd2xfaW5mbyAqd2wgPSAmYW1wO2N4LSZndDt3bDsKLQlzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gJmFtcDtjeC0mZ3Q7YnQ7CiYjNDM7CXN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSAmYW1wO2N4LSZndDtidDA7CiAJc3RydWN0IHJ0dzg5X2J0Y19idF9saW5rX2luZm8gKmIgPSAmYW1wO2J0LSZndDtsaW5rX2luZm87CiAJc3RydWN0IHJ0dzg5X2J0Y19idF9oZnBfZGVzYyAqaGZwID0gJmFtcDtiLSZndDtoZnBfZGVzYzsKIAlzdHJ1Y3QgcnR3ODlfYnRjX2J0X2hpZF9kZXNjICpoaWQgPSAmYW1wO2ItJmd0O2hpZF9kZXNjOwpAQCAtNTUxOCw3ICYjNDM7NTY0Miw3IEBAIHN0YXRpYyB2b2lkIF9zZXRfYnRfcnhfYWdjKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldikKIAlzdHJ1Y3QgcnR3ODlfYnRjX3dsX3JvbGVfaW5mb192MiAqd2xfcmluZm9fdjIgPSAmYW1wO3dsLSZndDtyb2xlX2luZm9fdjI7CiAJc3RydWN0IHJ0dzg5X2J0Y193bF9yb2xlX2luZm9fdjcgKndsX3JpbmZvX3Y3ID0gJmFtcDt3bC0mZ3Q7cm9sZV9pbmZvX3Y3OwogCXN0cnVjdCBydHc4OV9idGNfd2xfcm9sZV9pbmZvX3Y4ICp3bF9yaW5mb192OCA9ICZhbXA7d2wtJmd0O3JvbGVfaW5mb192ODsKLQlzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gJmFtcDtidGMtJmd0O2N4LmJ0OwomIzQzOwlzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gJmFtcDtidGMtJmd0O2N4LmJ0MDsKIAlib29sIGJ0X2hpX2xuYV9yeCA9IGZhbHNlOwogCXU4IG1vZGU7CiAKQEAgLTU1NDcsNyAmIzQzOzU2NzEsNyBAQCBzdGF0aWMgdm9pZCBfc2V0X2J0X3J4X2FnYyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpCiBzdGF0aWMgdm9pZCBfc2V0X2J0X3J4X3NjYW5fcHJpKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldikKIHsKIAlzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSAmYW1wO3J0d2Rldi0mZ3Q7YnRjOwotCXN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSAmYW1wO2J0Yy0mZ3Q7Y3guYnQ7CiYjNDM7CXN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSAmYW1wO2J0Yy0mZ3Q7Y3guYnQwOwogCiAJX3dyaXRlX3NjYmQocnR3ZGV2LCBCVENfV1NDQl9SWFNDQU5fUFJJLCAoYm9vbCkoISFidC0mZ3Q7c2Nhbl9yeF9sb3dfcHJpKSk7CiB9CkBAIC01NTg2LDcgJiM0Mzs1NzEwLDcgQEAgc3RhdGljIHZvaWQgX2FjdGlvbl9jb21tb24oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KQogCXN0cnVjdCBydHc4OV9idGNfd2xfaW5mbyAqd2wgPSAmYW1wO2J0Yy0mZ3Q7Y3gud2w7CiAJc3RydWN0IHJ0dzg5X2J0Y193bF9yb2xlX2luZm9fdjggKnJpbmZvX3Y4ID0gJmFtcDt3bC0mZ3Q7cm9sZV9pbmZvX3Y4OwogCXN0cnVjdCBydHc4OV9idGNfd2xfc21hcCAqd2xfc21hcCA9ICZhbXA7d2wtJmd0O3N0YXR1cy5tYXA7Ci0Jc3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9ICZhbXA7YnRjLSZndDtjeC5idDsKJiM0MzsJc3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9ICZhbXA7YnRjLSZndDtjeC5idDA7CiAJc3RydWN0IHJ0dzg5X2J0Y19kbSAqZG0gPSAmYW1wO2J0Yy0mZ3Q7ZG07CiAJdTMyIGJ0X3JvbV9jb2RlX2lkLCBidF9md192ZXI7CiAKQEAgLTU2MjYsNyAmIzQzOzU3NTAsNyBAQCBzdGF0aWMgdm9pZCBfYWN0aW9uX2NvbW1vbihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpCiAJCXJ0dzg5X2RlYnVnKHJ0d2RldiwgUlRXODlfREJHX0JUQywgJiMzNDtbQlRDXSwgd3JpdGUgc2NiZDogMHglMDh4XG4mIzM0OywKIAkJCSAgICB3bC0mZ3Q7c2NiZCk7CiAJCXdsLSZndDtzY2JkX2NoYW5nZSA9IGZhbHNlOwotCQlidGMtJmd0O2N4LmNudF93bFtCVENfV0NOVF9TQ0JEVVBEQVRFXSYjNDM7JiM0Mzs7CiYjNDM7CQl3bC0mZ3Q7d2NudFtCVENfV0NOVF9TQ0JEVVBEQVRFXSYjNDM7JiM0Mzs7CiAJfQogCiAJaWYgKGJ0Yy0mZ3Q7dmVyLSZndDtmY3hvc2kpIHsKQEAgLTU2MzgsMTQgJiM0Mzs1NzYyLDE1IEBAIHN0YXRpYyB2b2lkIF9hY3Rpb25fY29tbW9uKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldikKIAkJCV9md19zZXRfZHJ2X2luZm8ocnR3ZGV2LCBDWERSVklORk9fT1NJKTsKIAkJfQogCX0KLQlidGMtJmd0O2RtLnRkbWFfaW5zdGFudF9leGN1dGUgPSAwOwomIzQzOwlkbS0mZ3Q7dGRtYV9pbnN0YW50X2V4Y3V0ZSA9IDA7CiYjNDM7CWRtLSZndDtscHNfY3RybF9jaGFuZ2UgPSBmYWxzZTsKIAl3bC0mZ3Q7cHRhX3JlZ19tYWNfY2hnID0gZmFsc2U7CiB9CiAKIHN0YXRpYyB2b2lkIF9hY3Rpb25fYnlfYnQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KQogewogCXN0cnVjdCBydHc4OV9idGMgKmJ0YyA9ICZhbXA7cnR3ZGV2LSZndDtidGM7Ci0Jc3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9ICZhbXA7YnRjLSZndDtjeC5idDsKJiM0MzsJc3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9ICZhbXA7YnRjLSZndDtjeC5idDA7CiAJc3RydWN0IHJ0dzg5X2J0Y19idF9saW5rX2luZm8gKmJ0X2xpbmZvID0gJmFtcDtidC0mZ3Q7bGlua19pbmZvOwogCXN0cnVjdCBydHc4OV9idGNfYnRfaGlkX2Rlc2MgaGlkID0gYnRfbGluZm8tJmd0O2hpZF9kZXNjOwogCXN0cnVjdCBydHc4OV9idGNfYnRfYTJkcF9kZXNjIGEyZHAgPSBidF9saW5mby0mZ3Q7YTJkcF9kZXNjOwpAQCAtNTc0Miw3ICYjNDM7NTg2Nyw3IEBAIHN0YXRpYyB2b2lkIF9hY3Rpb25fd2xfMjVnX21jYyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpCiAJCQlwb2xpY3lfdHlwZSA9IEJUQ19DWFBfT0ZGRV9XTDsKIAkJZWxzZSBpZiAoYnRjLSZndDtjeC53bC5zdGF0dXMudmFsICZhbXA7IGJ0Y19zY2FubmluZ19tYXAudmFsKQogCQkJcG9saWN5X3R5cGUgPSBCVENfQ1hQX09GRkVfMkdCV01JWEI7Ci0JCWVsc2UgaWYgKGJ0Yy0mZ3Q7Y3guYnQubGlua19pbmZvLnN0YXR1cy5tYXAuY29ubmVjdCA9PSAwKQomIzQzOwkJZWxzZSBpZiAoYnRjLSZndDtjeC5idDAubGlua19pbmZvLnN0YXR1cy5tYXAuY29ubmVjdCA9PSAwKQogCQkJcG9saWN5X3R5cGUgPSBCVENfQ1hQX09GRkVfMkdJU09COwogCQllbHNlCiAJCQlwb2xpY3lfdHlwZSA9IEJUQ19DWFBfT0ZGRV8yR0JXSVNPQjsKQEAgLTU3ODYsNyAmIzQzOzU5MTEsNyBAQCBzdGF0aWMgdm9pZCBfYWN0aW9uX3dsXzJnX21jYyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpCiAJX3NldF9hbnQocnR3ZGV2LCBOTV9FWEVDLCBCVENfUEhZX0FMTCwgQlRDX0FOVF9XMkcpOwogCiAJaWYgKGJ0Yy0mZ3Q7YW50X3R5cGUgPT0gQlRDX0FOVF9TSEFSRUQpIHsgLyogc2hhcmVkLWFudGVubmEgKi8KLQkJaWYgKGJ0Yy0mZ3Q7Y3guYnQubGlua19pbmZvLnByb2ZpbGVfY250Lm5vdyA9PSAwKQomIzQzOwkJaWYgKGJ0Yy0mZ3Q7Y3guYnQwLmxpbmtfaW5mby5wcm9maWxlX2NudC5ub3cgPT0gMCkKIAkJCV9zZXRfcG9saWN5KHJ0d2RldiwgQlRDX0NYUF9PRkZFX0RFRjIsCiAJCQkJICAgIEJUQ19BQ1RfV0xfMkdfTUNDKTsKIAkJZWxzZQpAQCAtNTgwNCw3ICYjNDM7NTkyOSw3IEBAIHN0YXRpYyB2b2lkIF9hY3Rpb25fd2xfMmdfc2NjKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldikKIAlfc2V0X2FudChydHdkZXYsIE5NX0VYRUMsIEJUQ19QSFlfQUxMLCBCVENfQU5UX1cyRyk7CiAKIAlpZiAoYnRjLSZndDthbnRfdHlwZSA9PSBCVENfQU5UX1NIQVJFRCkgeyAvKiBzaGFyZWQtYW50ZW5uYSAqLwotCQlpZiAoYnRjLSZndDtjeC5idC5saW5rX2luZm8ucHJvZmlsZV9jbnQubm93ID09IDApCiYjNDM7CQlpZiAoYnRjLSZndDtjeC5idDAubGlua19pbmZvLnByb2ZpbGVfY250Lm5vdyA9PSAwKQogCQkJX3NldF9wb2xpY3kocnR3ZGV2LAogCQkJCSAgICBCVENfQ1hQX09GRkVfREVGMiwgQlRDX0FDVF9XTF8yR19TQ0MpOwogCQllbHNlCkBAIC01ODE5LDcgJiM0Mzs1OTQ0LDcgQEAgc3RhdGljIHZvaWQgX2FjdGlvbl93bF8yZ19zY2NfdjEoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KQogewogCXN0cnVjdCBydHc4OV9idGMgKmJ0YyA9ICZhbXA7cnR3ZGV2LSZndDtidGM7CiAJc3RydWN0IHJ0dzg5X2J0Y193bF9pbmZvICp3bCA9ICZhbXA7YnRjLSZndDtjeC53bDsKLQlzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gJmFtcDtidGMtJmd0O2N4LmJ0OwomIzQzOwlzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gJmFtcDtidGMtJmd0O2N4LmJ0MDsKIAlzdHJ1Y3QgcnR3ODlfYnRjX2RtICpkbSA9ICZhbXA7YnRjLSZndDtkbTsKIAlzdHJ1Y3QgcnR3ODlfYnRjX3dsX3JvbGVfaW5mb192MSAqd2xfcmluZm8gPSAmYW1wO3dsLSZndDtyb2xlX2luZm9fdjE7CiAJdTE2IHBvbGljeV90eXBlID0gQlRDX0NYUF9PRkZfQlQ7CkBAIC01ODU2LDcgJiM0Mzs1OTgxLDcgQEAgc3RhdGljIHZvaWQgX2FjdGlvbl93bF8yZ19zY2NfdjEoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KQogCQkJCWRtLSZndDt3bF9zY2MuZWJ0X251bGwgPSAwOwogCQkJCXBvbGljeV90eXBlID0gQlRDX0NYUF9PRkZFXzJHSVNPQjsKIAkJCX0gZWxzZSBpZiAoYnQtJmd0O2xpbmtfaW5mby5hMmRwX2Rlc2MuZXhpc3QgJmFtcDsmYW1wOwotCQkJCSAgIGR1ciAmbHQ7IGJ0Yy0mZ3Q7YnRfcmVxX2xlbikgewomIzQzOwkJCQkgICBkdXIgJmx0OyBidGMtJmd0O2J0X3JlcV9sZW5bUlRXODlfUEhZXzBdKSB7CiAJCQkJZG0tJmd0O3dsX3NjYy5lYnRfbnVsbCA9IDE7IC8qIHR4IG51bGwgYXQgRUJUICovCiAJCQkJcG9saWN5X3R5cGUgPSBCVENfQ1hQX09GRkVfMkdCV01JWEIyOwogCQkJfSBlbHNlIGlmIChidC0mZ3Q7bGlua19pbmZvLmEyZHBfZGVzYy5leGlzdCB8fApAQCAtNTg4MSw3ICYjNDM7NjAwNiw3IEBAIHN0YXRpYyB2b2lkIF9hY3Rpb25fd2xfMmdfc2NjX3YyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldikKIHsKIAlzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSAmYW1wO3J0d2Rldi0mZ3Q7YnRjOwogCXN0cnVjdCBydHc4OV9idGNfd2xfaW5mbyAqd2wgPSAmYW1wO2J0Yy0mZ3Q7Y3gud2w7Ci0Jc3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9ICZhbXA7YnRjLSZndDtjeC5idDsKJiM0MzsJc3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9ICZhbXA7YnRjLSZndDtjeC5idDA7CiAJc3RydWN0IHJ0dzg5X2J0Y19kbSAqZG0gPSAmYW1wO2J0Yy0mZ3Q7ZG07CiAJc3RydWN0IHJ0dzg5X2J0Y193bF9yb2xlX2luZm9fdjIgKnJpbmZvX3YyID0gJmFtcDt3bC0mZ3Q7cm9sZV9pbmZvX3YyOwogCXN0cnVjdCBydHc4OV9idGNfd2xfcm9sZV9pbmZvX3Y3ICpyaW5mb192NyA9ICZhbXA7d2wtJmd0O3JvbGVfaW5mb192NzsKQEAgLTU5MjksNyAmIzQzOzYwNTQsNyBAQCBzdGF0aWMgdm9pZCBfYWN0aW9uX3dsXzJnX3NjY192MihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpCiAJCQkJZG0tJmd0O3dsX3NjYy5lYnRfbnVsbCA9IDA7CiAJCQkJcG9saWN5X3R5cGUgPSBCVENfQ1hQX09GRkVfMkdJU09COwogCQkJfSBlbHNlIGlmIChidC0mZ3Q7bGlua19pbmZvLmEyZHBfZGVzYy5leGlzdCAmYW1wOyZhbXA7Ci0JCQkJICAgZHVyICZsdDsgYnRjLSZndDtidF9yZXFfbGVuKSB7CiYjNDM7CQkJCSAgIGR1ciAmbHQ7IGJ0Yy0mZ3Q7YnRfcmVxX2xlbltSVFc4OV9QSFlfMF0pIHsKIAkJCQlkbS0mZ3Q7d2xfc2NjLmVidF9udWxsID0gMTsgLyogdHggbnVsbCBhdCBFQlQgKi8KIAkJCQlwb2xpY3lfdHlwZSA9IEJUQ19DWFBfT0ZGRV8yR0JXTUlYQjI7CiAJCQl9IGVsc2UgaWYgKGJ0LSZndDtsaW5rX2luZm8uYTJkcF9kZXNjLmV4aXN0IHx8CkBAIC01OTU0LDcgJiM0Mzs2MDc5LDcgQEAgc3RhdGljIHZvaWQgX2FjdGlvbl93bF8yZ19zY2Nfdjgoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KQogewogCXN0cnVjdCBydHc4OV9idGMgKmJ0YyA9ICZhbXA7cnR3ZGV2LSZndDtidGM7CiAJc3RydWN0IHJ0dzg5X2J0Y193bF9pbmZvICp3bCA9ICZhbXA7YnRjLSZndDtjeC53bDsKLQlzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gJmFtcDtidGMtJmd0O2N4LmJ0OwomIzQzOwlzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gJmFtcDtidGMtJmd0O2N4LmJ0MDsKIAlzdHJ1Y3QgcnR3ODlfYnRjX2RtICpkbSA9ICZhbXA7YnRjLSZndDtkbTsKIAl1MTYgcG9saWN5X3R5cGUgPSBCVENfQ1hQX09GRl9CVDsKIApAQCAtNTk4Miw3ICYjNDM7NjEwNyw3IEBAIHN0YXRpYyB2b2lkIF9hY3Rpb25fd2xfMmdfYXAoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KQogCV9zZXRfYW50KHJ0d2RldiwgTk1fRVhFQywgQlRDX1BIWV9BTEwsIEJUQ19BTlRfVzJHKTsKIAogCWlmIChidGMtJmd0O2FudF90eXBlID09IEJUQ19BTlRfU0hBUkVEKSB7Ci0JCWlmIChidGMtJmd0O2N4LmJ0LmxpbmtfaW5mby5wcm9maWxlX2NudC5ub3cgPT0gMCkKJiM0MzsJCWlmIChidGMtJmd0O2N4LmJ0MC5saW5rX2luZm8ucHJvZmlsZV9jbnQubm93ID09IDApCiAJCQlfc2V0X3BvbGljeShydHdkZXYsIEJUQ19DWFBfT0ZGRV9ERUYyLAogCQkJCSAgICBCVENfQUNUX1dMXzJHX0FQKTsKIAkJZWxzZQpAQCAtNTk5OSw3ICYjNDM7NjEyNCw3IEBAIHN0YXRpYyB2b2lkIF9hY3Rpb25fd2xfMmdfZ28oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KQogCV9zZXRfYW50KHJ0d2RldiwgTk1fRVhFQywgQlRDX1BIWV9BTEwsIEJUQ19BTlRfVzJHKTsKIAogCWlmIChidGMtJmd0O2FudF90eXBlID09IEJUQ19BTlRfU0hBUkVEKSB7IC8qIHNoYXJlZC1hbnRlbm5hICovCi0JCWlmIChidGMtJmd0O2N4LmJ0LmxpbmtfaW5mby5wcm9maWxlX2NudC5ub3cgPT0gMCkKJiM0MzsJCWlmIChidGMtJmd0O2N4LmJ0MC5saW5rX2luZm8ucHJvZmlsZV9jbnQubm93ID09IDApCiAJCQlfc2V0X3BvbGljeShydHdkZXYsCiAJCQkJICAgIEJUQ19DWFBfT0ZGRV9ERUYyLCBCVENfQUNUX1dMXzJHX0dPKTsKIAkJZWxzZQpAQCAtNjAzMCw3ICYjNDM7NjE1NSw3IEBAIHN0YXRpYyB2b2lkIF9hY3Rpb25fd2xfMmdfbmFuKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldikKIAlfc2V0X2FudChydHdkZXYsIE5NX0VYRUMsIEJUQ19QSFlfQUxMLCBCVENfQU5UX1cyRyk7CiAKIAlpZiAoYnRjLSZndDthbnRfdHlwZSA9PSBCVENfQU5UX1NIQVJFRCkgeyAvKiBzaGFyZWQtYW50ZW5uYSAqLwotCQlpZiAoYnRjLSZndDtjeC5idC5saW5rX2luZm8ucHJvZmlsZV9jbnQubm93ID09IDApCiYjNDM7CQlpZiAoYnRjLSZndDtjeC5idDAubGlua19pbmZvLnByb2ZpbGVfY250Lm5vdyA9PSAwKQogCQkJX3NldF9wb2xpY3kocnR3ZGV2LAogCQkJCSAgICBCVENfQ1hQX09GRkVfREVGMiwgQlRDX0FDVF9XTF8yR19OQU4pOwogCQllbHNlCkBAIC02MDU0LDcgJiM0Mzs2MTc5LDcgQEAgc3RhdGljIHUzMiBfcmVhZF9zY2JkKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldikKIAlydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19CVEMsICYjMzQ7W0JUQ10sIHJlYWQgc2NiZDogMHglMDh4XG4mIzM0OywKIAkJICAgIHNjYmRfdmFsKTsKIAotCWJ0Yy0mZ3Q7Y3guY250X2J0W0JUQ19CQ05UX1NDQkRSRUFEXSYjNDM7JiM0Mzs7CiYjNDM7CWJ0Yy0mZ3Q7Y3guYnQwLmJjbnRbQlRDX0JDTlRfU0NCRFJFQURdJiM0MzsmIzQzOzsKIAlyZXR1cm4gc2NiZF92YWw7CiB9CiAKQEAgLTY4NzIsNyAmIzQzOzY5OTcsNyBAQCBzdGF0aWMgdm9pZCBfdXBkYXRlX3dsX2luZm9fdjcoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCByaWQpCiAJaWYgKHdsX3JpbmZvLSZndDtkYmNjX2VuICE9IHJ0d2Rldi0mZ3Q7ZGJjY19lbikgewogCQl3bF9yaW5mby0mZ3Q7ZGJjY19jaGcgPSAxOwogCQl3bF9yaW5mby0mZ3Q7ZGJjY19lbiA9IHJ0d2Rldi0mZ3Q7ZGJjY19lbjsKLQkJYnRjLSZndDtjeC5jbnRfd2xbQlRDX1dDTlRfREJDQ19DSEddJiM0MzsmIzQzOzsKJiM0MzsJCXdsLSZndDt3Y250W0JUQ19XQ05UX0RCQ0NfQ0hHXSYjNDM7JiM0Mzs7CiAJfQogCiAJaWYgKHJ0d2Rldi0mZ3Q7ZGJjY19lbikgewpAQCAtNzMxNiw3ICYjNDM7NzQ0MSw3IEBAIHN0YXRpYyB2b2lkIF91cGRhdGVfd2xfaW5mb192OChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHJvbGVfaWQsIHU4IHJsaW5rX2lkCiAKIAlpZiAod2xfcmluZm8tJmd0O2RiY2NfZW4gIT0gZGJjY19lbl9vcmkpIHsKIAkJd2wtJmd0O2RiY2NfY2hnID0gdHJ1ZTsKLQkJYnRjLSZndDtjeC5jbnRfd2xbQlRDX1dDTlRfREJDQ19DSEddJiM0MzsmIzQzOzsKJiM0MzsJCXdsLSZndDt3Y250W0JUQ19XQ05UX0RCQ0NfQ0hHXSYjNDM7JiM0Mzs7CiAJfQogfQogCkBAIC03MzQ3LDcgJiM0Mzs3NDcyLDcgQEAgdm9pZCBydHc4OV9jb2V4X2J0X2RldmluZm9fd29yayhzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lwaHlfd29yayAqd29yaykKIAkJCQkJCWNvZXhfYnRfZGV2aW5mb193b3JrLndvcmspOwogCXN0cnVjdCBydHc4OV9idGMgKmJ0YyA9ICZhbXA7cnR3ZGV2LSZndDtidGM7CiAJc3RydWN0IHJ0dzg5X2J0Y19kbSAqZG0gPSAmYW1wO3J0d2Rldi0mZ3Q7YnRjLmRtOwotCXN0cnVjdCBydHc4OV9idGNfYnRfYTJkcF9kZXNjICphMmRwID0gJmFtcDtidGMtJmd0O2N4LmJ0LmxpbmtfaW5mby5hMmRwX2Rlc2M7CiYjNDM7CXN0cnVjdCBydHc4OV9idGNfYnRfYTJkcF9kZXNjICphMmRwID0gJmFtcDtidGMtJmd0O2N4LmJ0MC5saW5rX2luZm8uYTJkcF9kZXNjOwogCiAJbG9ja2RlcF9hc3NlcnRfd2lwaHkod2lwaHkpOwogCkBAIC03MzczLDcgJiM0Mzs3NDk4LDcgQEAgdm9pZCBydHc4OV9jb2V4X3Jma19jaGtfd29yayhzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lwaHlfd29yayAqd29yaykKIAlpZiAod2wtJmd0O3Jma19pbmZvLnN0YXRlICE9IEJUQ19XUkZLX1NUT1ApIHsKIAkJcnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQlRDLAogCQkJICAgICYjMzQ7W0JUQ10sICVzKCk6IFJGSyB0aW1lb3V0XG4mIzM0OywgX19mdW5jX18pOwotCQljeC0mZ3Q7Y250X3dsW0JUQ19XQ05UX1JGS19USU1FT1VUXSYjNDM7JiM0Mzs7CiYjNDM7CQl3bC0mZ3Q7d2NudFtCVENfV0NOVF9SRktfVElNRU9VVF0mIzQzOyYjNDM7OwogCQlkbS0mZ3Q7ZXJyb3IubWFwLndsX3Jma190aW1lb3V0ID0gdHJ1ZTsKIAkJd2wtJmd0O3Jma19pbmZvLnN0YXRlID0gQlRDX1dSRktfU1RPUDsKIAkJX3dyaXRlX3NjYmQocnR3ZGV2LCBCVENfV1NDQl9XTFJGSywgZmFsc2UpOwpAQCAtNzM4MywxNCAmIzQzOzc1MDgsMTYgQEAgdm9pZCBydHc4OV9jb2V4X3Jma19jaGtfd29yayhzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lwaHlfd29yayAqd29yaykKIAogc3RhdGljIHZvaWQgX3VwZGF0ZV9idF9zY2JkKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgYm9vbCBvbmx5X3VwZGF0ZSkKIHsKLQljb25zdCBzdHJ1Y3QgcnR3ODlfY2hpcF9pbmZvICpjaGlwID0gcnR3ZGV2LSZndDtjaGlwOwogCXN0cnVjdCBydHc4OV9idGMgKmJ0YyA9ICZhbXA7cnR3ZGV2LSZndDtidGM7Ci0Jc3RydWN0IHJ0dzg5X2J0Y19jeCAqY3ggPSAmYW1wO2J0Yy0mZ3Q7Y3g7Ci0Jc3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9ICZhbXA7YnRjLSZndDtjeC5idDsKLQl1MzIgdmFsOwotCWJvb2wgc3RhdHVzX2NoYW5nZSA9IGZhbHNlOwomIzQzOwlzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gJmFtcDtidGMtJmd0O2N4LmJ0MDsKJiM0MzsJY29uc3Qgc3RydWN0IHJ0dzg5X2J0Y192ZXIgKnZlciA9IGJ0Yy0mZ3Q7dmVyOwomIzQzOwlzdHJ1Y3QgcnR3ODlfYnRjX3dsX2luZm8gKndsID0gJmFtcDtidGMtJmd0O2N4LndsOwomIzQzOwlzdHJ1Y3QgcnR3ODlfYnRjX2RtICpkbSA9ICZhbXA7cnR3ZGV2LSZndDtidGMuZG07CiYjNDM7CWJvb2wgYnRfbGlua19jaGFuZ2UgPSBmYWxzZSwgbHBzX2N0cmwgPSBmYWxzZTsKJiM0MzsJdTMyIHZhbCwgYW55X2J0X2Nvbm5lY3Q7CiYjNDM7CXU4IG1vZGU7CiAKLQlpZiAoIWNoaXAtJmd0O3NjYmQpCiYjNDM7CWlmIChydHdkZXYtJmd0O2NoaXAtJmd0O3NjYmQpCiAJCXJldHVybjsKIAogCXJ0dzg5X2RlYnVnKHJ0d2RldiwgUlRXODlfREJHX0JUQywgJiMzNDtbQlRDXSwgJXNcbiYjMzQ7LCBfX2Z1bmNfXyk7CkBAIC03NDAzLDE4ICYjNDM7NzUzMCwzMSBAQCBzdGF0aWMgdm9pZCBfdXBkYXRlX2J0X3NjYmQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBib29sIG9ubHlfdXBkYXRlKQogCQlyZXR1cm47CiAJfQogCiYjNDM7CWlmICh2ZXItJmd0O2Z3bHJvbGUgPT0gMCkKJiM0MzsJCW1vZGUgPSB3bC0mZ3Q7cm9sZV9pbmZvLmxpbmtfbW9kZTsKJiM0MzsJZWxzZSBpZiAodmVyLSZndDtmd2xyb2xlID09IDEpCiYjNDM7CQltb2RlID0gd2wtJmd0O3JvbGVfaW5mb192MS5saW5rX21vZGU7CiYjNDM7CWVsc2UgaWYgKHZlci0mZ3Q7Zndscm9sZSA9PSAyKQomIzQzOwkJbW9kZSA9IHdsLSZndDtyb2xlX2luZm9fdjIubGlua19tb2RlOwomIzQzOwllbHNlIGlmICh2ZXItJmd0O2Z3bHJvbGUgPT0gNykKJiM0MzsJCW1vZGUgPSB3bC0mZ3Q7cm9sZV9pbmZvX3Y3LmxpbmtfbW9kZTsKJiM0MzsJZWxzZSBpZiAodmVyLSZndDtmd2xyb2xlID09IDgpCiYjNDM7CQltb2RlID0gd2wtJmd0O3JvbGVfaW5mb192OC5saW5rX21vZGU7CiYjNDM7CWVsc2UKJiM0MzsJCXJldHVybjsKJiM0MzsKIAlpZiAoISh2YWwgJmFtcDsgQlRDX0JTQ0JfT04pKQogCQlidC0mZ3Q7ZW5hYmxlLm5vdyA9IDA7CiAJZWxzZQogCQlidC0mZ3Q7ZW5hYmxlLm5vdyA9IDE7CiAKIAlpZiAoYnQtJmd0O2VuYWJsZS5ub3cgIT0gYnQtJmd0O2VuYWJsZS5sYXN0KQotCQlzdGF0dXNfY2hhbmdlID0gdHJ1ZTsKJiM0MzsJCWJ0X2xpbmtfY2hhbmdlID0gdHJ1ZTsKIAogCS8qIHJlc2V0IGJ0IGluZm8gaWYgYnQgcmUtZW5hYmxlICovCiAJaWYgKGJ0LSZndDtlbmFibGUubm93ICZhbXA7JmFtcDsgIWJ0LSZndDtlbmFibGUubGFzdCkgewogCQlfcmVzZXRfYnRjX3ZhcihydHdkZXYsIEJUQ19SRVNFVF9CVElORk8pOwotCQljeC0mZ3Q7Y250X2J0W0JUQ19CQ05UX1JFRU5BQkxFXSYjNDM7JiM0Mzs7CiYjNDM7CQlidC0mZ3Q7YmNudFtCVENfQkNOVF9SRUVOQUJMRV0mIzQzOyYjNDM7OwogCQlidC0mZ3Q7ZW5hYmxlLm5vdyA9IDE7CiAJfQogCkBAIC03NDIzLDM1ICYjNDM7NzU2Myw1OCBAQCBzdGF0aWMgdm9pZCBfdXBkYXRlX2J0X3NjYmQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBib29sIG9ubHlfdXBkYXRlKQogCWJ0LSZndDttYnhfYXZsID0gISEodmFsICZhbXA7IEJUQ19CU0NCX0FDVCk7CiAKIAlpZiAoYnQtJmd0O3docWxfdGVzdCAhPSAhISh2YWwgJmFtcDsgQlRDX0JTQ0JfV0hRTCkpCi0JCXN0YXR1c19jaGFuZ2UgPSB0cnVlOwomIzQzOwkJYnRfbGlua19jaGFuZ2UgPSB0cnVlOwogCiAJYnQtJmd0O3docWxfdGVzdCA9ICEhKHZhbCAmYW1wOyBCVENfQlNDQl9XSFFMKTsKIAlidC0mZ3Q7YnRnX3R5cGUgPSB2YWwgJmFtcDsgQlRDX0JTQ0JfQlRfUzEgPyBCVENfQlRfQlRHIDogQlRDX0JUX0FMT05FOwogCWJ0LSZndDtsaW5rX2luZm8uYTJkcF9kZXNjLmV4aXN0ID0gISEodmFsICZhbXA7IEJUQ19CU0NCX0EyRFBfQUNUKTsKJiM0MzsJYnQtJmd0O2xpbmtfaW5mby5wYW5fZGVzYy5leGlzdCA9ICEhKHZhbCAmYW1wOyBCVENfQlNDQl9QQU5fQUNUKTsKJiM0MzsJYnQtJmd0O2xpbmtfaW5mby5oZnBfZGVzYy5leGlzdCA9ICEhKHZhbCAmYW1wOyBCVENfQlNDQl9IRlBfQUNUKTsKIAogCWJ0LSZndDtsbmFfY29uc3RyYWluID0gISEodmFsICZhbXA7IEJUQ19CU0NCX0JUX0xOQUIwKSAmIzQzOwogCQkJICAgICEhKHZhbCAmYW1wOyBCVENfQlNDQl9CVF9MTkFCMSkgKiAyICYjNDM7IDQ7CiAKIAkvKiBpZiByZmsgcnVuIDEtJmd0OzAgKi8KIAlpZiAoYnQtJmd0O3Jma19pbmZvLm1hcC5ydW4gJmFtcDsmYW1wOyAhKHZhbCAmYW1wOyBCVENfQlNDQl9SRktfUlVOKSkKLQkJc3RhdHVzX2NoYW5nZSA9IHRydWU7CiYjNDM7CQlidF9saW5rX2NoYW5nZSA9IHRydWU7CiAKIAlidC0mZ3Q7cmZrX2luZm8ubWFwLnJ1biAgPSAhISh2YWwgJmFtcDsgQlRDX0JTQ0JfUkZLX1JVTik7CiAJYnQtJmd0O3Jma19pbmZvLm1hcC5yZXEgPSAhISh2YWwgJmFtcDsgQlRDX0JTQ0JfUkZLX1JFUSk7CiAJYnQtJmd0O2hpX2xuYV9yeCA9ICEhKHZhbCAmYW1wOyBCVENfQlNDQl9CVF9ISUxOQSk7Ci0JYnQtJmd0O2xpbmtfaW5mby5zdGF0dXMubWFwLmNvbm5lY3QgPSAhISh2YWwgJmFtcDsgQlRDX0JTQ0JfQlRfQ09OTkVDVCk7Ci0JaWYgKGJ0LSZndDtydW5fcGF0Y2hfY29kZSAhPSAhISh2YWwgJmFtcDsgQlRDX0JTQ0JfUEFUQ0hfQ09ERSkpCi0JCXN0YXR1c19jaGFuZ2UgPSB0cnVlOwomIzQzOwlhbnlfYnRfY29ubmVjdCA9ICEhKHZhbCAmYW1wOyBCVENfQlNDQl9CVF9DT05ORUNUKTsKJiM0MzsKJiM0MzsJLyogaWYgY29ubmVjdCBjaGFuZ2UgKi8KJiM0MzsJaWYgKGJ0LSZndDtsaW5rX2luZm8uc3RhdHVzLm1hcC5jb25uZWN0ICE9IGFueV9idF9jb25uZWN0KQomIzQzOwkJYnRfbGlua19jaGFuZ2UgPSB0cnVlOwomIzQzOwomIzQzOwkvKiBpZiBzcGVjaWZpYyBwcm9maWxlIGV4aXN0ICovCiYjNDM7CWlmICgoKGJ0LSZndDtsaW5rX2luZm8uYTJkcF9kZXNjLmV4aXN0IHx8IGJ0LSZndDtsaW5rX2luZm8ucGFuX2Rlc2MuZXhpc3QgfHwKJiM0MzsJICAgICAgYnQtJmd0O2xpbmtfaW5mby5oZnBfZGVzYy5leGlzdCkgJmFtcDsmYW1wOyBtb2RlID09IEJUQ19XTElOS18yR19TVEEpIHx8CiYjNDM7CSAgICBidC0mZ3Q7d2hxbF90ZXN0KQomIzQzOwkJbHBzX2N0cmwgPSB0cnVlOwomIzQzOwomIzQzOwlpZiAoZG0tJmd0O2xwc19jdHJsX3NjYmQgIT0gbHBzX2N0cmwpIHsKJiM0MzsJCWRtLSZndDtscHNfY3RybF9zY2JkID0gbHBzX2N0cmw7CiYjNDM7CQlidF9saW5rX2NoYW5nZSA9IHRydWU7CiYjNDM7CQlkbS0mZ3Q7bHBzX2N0cmxfY2hhbmdlID0gdHJ1ZTsKJiM0MzsJfSBlbHNlIHsKJiM0MzsJCWRtLSZndDtscHNfY3RybF9jaGFuZ2UgPSBmYWxzZTsKJiM0MzsJfQomIzQzOwomIzQzOwlidC0mZ3Q7bGlua19pbmZvLnN0YXR1cy5tYXAuY29ubmVjdCA9IGFueV9idF9jb25uZWN0OwogCWJ0LSZndDtydW5fcGF0Y2hfY29kZSA9ICEhKHZhbCAmYW1wOyBCVENfQlNDQl9QQVRDSF9DT0RFKTsKIAotCWlmICghb25seV91cGRhdGUgJmFtcDsmYW1wOyBzdGF0dXNfY2hhbmdlKQotCQlfcnVuX2NvZXgocnR3ZGV2LCBCVENfUlNOX1VQREFURV9CVF9TQ0JEKTsKJiM0MzsJaWYgKGJ0X2xpbmtfY2hhbmdlKSB7CiYjNDM7CQlydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19CVEMsCiYjNDM7CQkJICAgICYjMzQ7W0JUQ10sICVzOiBidCBzdGF0dXMgY2hhbmdlISFcbiYjMzQ7LCBfX2Z1bmNfXyk7CiYjNDM7CQkvKiBUT0RPOiBOZWVkIHRvIG5vdGlmeSBkcml2ZXIgdG8gdXBkYXRlIEVYVC1DVFJMLUJULVNMT1QgKi8KJiM0MzsJfQogfQogCiAjZGVmaW5lIEJUQ19CVElORk9fUFdSX0xFTiA1CiBzdGF0aWMgdm9pZCBfdXBkYXRlX2J0X3R4cHdyX2luZm8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCAqYnVmLCB1MzIgbGVuKQogewotCXN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSAmYW1wO3J0d2Rldi0mZ3Q7YnRjLmN4LmJ0OwomIzQzOwlzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gJmFtcDtydHdkZXYtJmd0O2J0Yy5jeC5idDA7CiAJc3RydWN0IHJ0dzg5X2J0Y19idF9saW5rX2luZm8gKmIgPSAmYW1wO2J0LSZndDtsaW5rX2luZm87CiAKIAlpZiAobGVuICE9IEJUQ19CVElORk9fUFdSX0xFTikKQEAgLTc0NzEsMTcgJiM0Mzs3NjM0LDE3IEBAIHN0YXRpYyBib29sIF9jaGtfd2xfcmZrX3JlcXVlc3Qoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KQogewogCXN0cnVjdCBydHc4OV9idGMgKmJ0YyA9ICZhbXA7cnR3ZGV2LSZndDtidGM7CiAJc3RydWN0IHJ0dzg5X2J0Y19jeCAqY3ggPSAmYW1wO2J0Yy0mZ3Q7Y3g7Ci0Jc3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9ICZhbXA7Y3gtJmd0O2J0OwomIzQzOwlzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gJmFtcDtjeC0mZ3Q7YnQwOwogCiAJX3VwZGF0ZV9idF9zY2JkKHJ0d2RldiwgdHJ1ZSk7CiAKLQljeC0mZ3Q7Y250X3dsW0JUQ19XQ05UX1JGS19SRVFdJiM0MzsmIzQzOzsKJiM0MzsJY3gtJmd0O3dsLndjbnRbQlRDX1dDTlRfUkZLX1JFUV0mIzQzOyYjNDM7OwogCiAJaWYgKChidC0mZ3Q7cmZrX2luZm8ubWFwLnJ1biB8fCBidC0mZ3Q7cmZrX2luZm8ubWFwLnJlcSkgJmFtcDsmYW1wOwogCSAgICAhYnQtJmd0O3Jma19pbmZvLm1hcC50aW1lb3V0KSB7Ci0JCWN4LSZndDtjbnRfd2xbQlRDX1dDTlRfUkZLX1JFSkVDVF0mIzQzOyYjNDM7OwomIzQzOwkJY3gtJmd0O3dsLndjbnRbQlRDX1dDTlRfUkZLX1JFSkVDVF0mIzQzOyYjNDM7OwogCX0gZWxzZSB7Ci0JCWN4LSZndDtjbnRfd2xbQlRDX1dDTlRfUkZLX0dPXSYjNDM7JiM0Mzs7CiYjNDM7CQljeC0mZ3Q7d2wud2NudFtCVENfV0NOVF9SRktfR09dJiM0MzsmIzQzOzsKIAkJcmV0dXJuIHRydWU7CiAJfQogCXJldHVybiBmYWxzZTsKQEAgLTc0OTUsNyAmIzQzOzc2NTgsNyBAQCB2b2lkIF9ydW5fY29leChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGVudW0gYnRjX3JlYXNvbl9hbmRfYWN0aW9uIHJlYXNvbikKIAlzdHJ1Y3QgcnR3ODlfYnRjX2RtICpkbSA9ICZhbXA7cnR3ZGV2LSZndDtidGMuZG07CiAJc3RydWN0IHJ0dzg5X2J0Y19jeCAqY3ggPSAmYW1wO2J0Yy0mZ3Q7Y3g7CiAJc3RydWN0IHJ0dzg5X2J0Y193bF9pbmZvICp3bCA9ICZhbXA7YnRjLSZndDtjeC53bDsKLQlzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gJmFtcDtidGMtJmd0O2N4LmJ0OwomIzQzOwlzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gJmFtcDtidGMtJmd0O2N4LmJ0MDsKIAlzdHJ1Y3QgcnR3ODlfYnRjX3dsX3JvbGVfaW5mbyAqd2xfcmluZm8gPSAmYW1wO3dsLSZndDtyb2xlX2luZm87CiAJc3RydWN0IHJ0dzg5X2J0Y193bF9yb2xlX2luZm9fdjEgKndsX3JpbmZvX3YxID0gJmFtcDt3bC0mZ3Q7cm9sZV9pbmZvX3YxOwogCXN0cnVjdCBydHc4OV9idGNfd2xfcm9sZV9pbmZvX3YyICp3bF9yaW5mb192MiA9ICZhbXA7d2wtJmd0O3JvbGVfaW5mb192MjsKQEAgLTc1NjAsNyAmIzQzOzc3MjMsOCBAQCB2b2lkIF9ydW5fY29leChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGVudW0gYnRjX3JlYXNvbl9hbmRfYWN0aW9uIHJlYXNvbikKIAl9CiAKIAlpZiAod2wtJmd0O3N0YXR1cy5tYXAucmZfb2ZmX3ByZSA9PSB3bC0mZ3Q7c3RhdHVzLm1hcC5yZl9vZmYgJmFtcDsmYW1wOwotCSAgICB3bC0mZ3Q7c3RhdHVzLm1hcC5scHNfcHJlID09IHdsLSZndDtzdGF0dXMubWFwLmxwcykgewomIzQzOwkgICAgd2wtJmd0O3N0YXR1cy5tYXAubHBzX3ByZSA9PSB3bC0mZ3Q7c3RhdHVzLm1hcC5scHMgJmFtcDsmYW1wOwomIzQzOwkgICAgIWRtLSZndDtscHNfY3RybF9jaGFuZ2UgJmFtcDsmYW1wOyAhZG0tJmd0O2xwc19jdHJsX3NjYmQpIHsKIAkJaWYgKHJlYXNvbiA9PSBCVENfUlNOX05URllfUE9XRVJPRkYgfHwKIAkJICAgIHJlYXNvbiA9PSBCVENfUlNOX05URllfUkFESU9fU1RBVEUpIHsKIAkJCXJ0dzg5X2RlYnVnKHJ0d2RldiwgUlRXODlfREJHX0JUQywKQEAgLTc1NzcsNiAmIzQzOzc3NDEsOSBAQCB2b2lkIF9ydW5fY29leChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGVudW0gYnRjX3JlYXNvbl9hbmRfYWN0aW9uIHJlYXNvbikKIAkJfQogCX0KIAomIzQzOwlpZiAocmVhc29uID09IEJUQ19SU05fTlRGWV9JTklUIHx8IHJlYXNvbiA9PSBCVENfUlNOX05URllfUkFESU9fU1RBVEUpCiYjNDM7CQlfdXBkYXRlX2J0X3NjYmQocnR3ZGV2LCBmYWxzZSk7CiYjNDM7CiAJZG0tJmd0O2ZyZWVydW4gPSBmYWxzZTsKIAlkbS0mZ3Q7Y250X2RtW0JUQ19EQ05UX1JVTl0mIzQzOyYjNDM7OwogCWRtLSZndDtmZGR0X3RyYWluID0gQlRDX0ZERFRfRElTQUJMRTsKQEAgLTc1OTcsNyAmIzQzOzc3NjQsNyBAQCB2b2lkIF9ydW5fY29leChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGVudW0gYnRjX3JlYXNvbl9hbmRfYWN0aW9uIHJlYXNvbikKIAkJZ290byBleGl0OwogCX0KIAotCWlmICh3bC0mZ3Q7c3RhdHVzLm1hcC5yZl9vZmYgfHwgd2wtJmd0O3N0YXR1cy5tYXAubHBzIHx8IGRtLSZndDtidF9vbmx5KSB7CiYjNDM7CWlmICh3bC0mZ3Q7c3RhdHVzLm1hcC5yZl9vZmYgfHwgZG0tJmd0O2J0X29ubHkgfHwgd2wtJmd0O3N0YXR1cy5tYXAubHBzKSB7CiAJCV9hY3Rpb25fd2xfb2ZmKHJ0d2RldiwgbW9kZSk7CiAJCWlnbm9fYnQgPSB0cnVlOwogCQlnb3RvIGV4aXQ7CkBAIC03NjA4LDEyICYjNDM7Nzc3NSwxMiBAQCB2b2lkIF9ydW5fY29leChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGVudW0gYnRjX3JlYXNvbl9hbmRfYWN0aW9uIHJlYXNvbikKIAkJZ290byBleGl0OwogCX0KIAotCWlmICghY3gtJmd0O2J0LmVuYWJsZS5ub3cgJmFtcDsmYW1wOyAhY3gtJmd0O290aGVyLnR5cGUpIHsKJiM0MzsJaWYgKCFjeC0mZ3Q7YnQwLmVuYWJsZS5ub3cgJmFtcDsmYW1wOyAhY3gtJmd0O2J0X2V4dC5mdW5jX3R5cGUpIHsKIAkJX2FjdGlvbl9idF9vZmYocnR3ZGV2KTsKIAkJZ290byBleGl0OwogCX0KIAotCWlmIChjeC0mZ3Q7YnQud2hxbF90ZXN0KSB7CiYjNDM7CWlmIChjeC0mZ3Q7YnQwLndocWxfdGVzdCkgewogCQlfYWN0aW9uX2J0X3docWwocnR3ZGV2KTsKIAkJZ290byBleGl0OwogCX0KQEAgLTc3MjksNyAmIzQzOzc4OTYsNyBAQCBzdGF0aWMgdm9pZCBfc2V0X2luaXRfaW5mbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpCiAJCWRtLSZndDtpbml0X2luZm8uaW5pdF92Ny53bF9vbmx5ID0gKHU4KWRtLSZndDt3bF9vbmx5OwogCQlkbS0mZ3Q7aW5pdF9pbmZvLmluaXRfdjcuYnRfb25seSA9ICh1OClkbS0mZ3Q7YnRfb25seTsKIAkJZG0tJmd0O2luaXRfaW5mby5pbml0X3Y3LndsX2luaXRfb2sgPSAodTgpd2wtJmd0O3N0YXR1cy5tYXAuaW5pdF9vazsKLQkJZG0tJmd0O2luaXRfaW5mby5pbml0X3Y3LmN4X290aGVyID0gYnRjLSZndDtjeC5vdGhlci50eXBlOwomIzQzOwkJZG0tJmd0O2luaXRfaW5mby5pbml0X3Y3LmN4X290aGVyID0gYnRjLSZndDtjeC5idF9leHQuZnVuY190eXBlOwogCQlkbS0mZ3Q7aW5pdF9pbmZvLmluaXRfdjcud2xfZ3VhcmRfY2ggPSBjaGlwLSZndDthZmhfZ3VhcmRfY2g7CiAJCWRtLSZndDtpbml0X2luZm8uaW5pdF92Ny5tb2R1bGUgPSBidGMtJmd0O21kaW5mby5tZF92NzsKIAl9IGVsc2UgewpAQCAtNzczNyw3ICYjNDM7NzkwNCw3IEBAIHN0YXRpYyB2b2lkIF9zZXRfaW5pdF9pbmZvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldikKIAkJZG0tJmd0O2luaXRfaW5mby5pbml0LmJ0X29ubHkgPSAodTgpZG0tJmd0O2J0X29ubHk7CiAJCWRtLSZndDtpbml0X2luZm8uaW5pdC53bF9pbml0X29rID0gKHU4KXdsLSZndDtzdGF0dXMubWFwLmluaXRfb2s7CiAJCWRtLSZndDtpbml0X2luZm8uaW5pdC5kYmNjX2VuID0gcnR3ZGV2LSZndDtkYmNjX2VuOwotCQlkbS0mZ3Q7aW5pdF9pbmZvLmluaXQuY3hfb3RoZXIgPSBidGMtJmd0O2N4Lm90aGVyLnR5cGU7CiYjNDM7CQlkbS0mZ3Q7aW5pdF9pbmZvLmluaXQuY3hfb3RoZXIgPSBidGMtJmd0O2N4LmJ0X2V4dC5mdW5jX3R5cGU7CiAJCWRtLSZndDtpbml0X2luZm8uaW5pdC53bF9ndWFyZF9jaCA9IGNoaXAtJmd0O2FmaF9ndWFyZF9jaDsKIAkJZG0tJmd0O2luaXRfaW5mby5pbml0Lm1vZHVsZSA9IGJ0Yy0mZ3Q7bWRpbmZvLm1kOwogCX0KQEAgLTc3ODEsNyAmIzQzOzc5NDgsNiBAQCB2b2lkIHJ0dzg5X2J0Y19udGZ5X2luaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCBtb2RlKQogCiAJX3dyaXRlX3NjYmQocnR3ZGV2LAogCQkgICAgQlRDX1dTQ0JfQUNUSVZFIHwgQlRDX1dTQ0JfT04gfCBCVENfV1NDQl9CVExPRywgdHJ1ZSk7Ci0JX3VwZGF0ZV9idF9zY2JkKHJ0d2RldiwgdHJ1ZSk7CiAJaWYgKHJ0dzg5X21hY19nZXRfY3RybF9wYXRoKHJ0d2RldikpIHsKIAkJcnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQlRDLAogCQkJICAgICYjMzQ7W0JUQ10sICVzKCk6IFBUQSBvd25lciB3YXJuaW5nISFcbiYjMzQ7LApAQCAtNzc5MCw3ICYjNDM7Nzk1Niw3IEBAIHZvaWQgcnR3ODlfYnRjX250ZnlfaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IG1vZGUpCiAJfQogCiAJX3NldF9pbml0X2luZm8ocnR3ZGV2KTsKLQlfc2V0X3dsX3R4X3Bvd2VyKHJ0d2RldiwgUlRXODlfQlRDX1dMX0RFRl9UWF9QV1IpOwomIzQzOwlfc2V0X3dsX3R4X3Bvd2VyKHJ0d2RldiwgUlRXODlfQlRDX1dMX0RFRl9UWF9QV1IsIFJUVzg5X1BIWV8wKTsKIAlidGNfZndfc2V0X21vbnJlZyhydHdkZXYpOwogCXJ0dzg5X2J0Y19md19zZXRfc2xvdHMocnR3ZGV2KTsKIAlfZndfc2V0X2Rydl9pbmZvKHJ0d2RldiwgQ1hEUlZJTkZPX0lOSVQpOwpAQCAtNzg3Nyw3ICYjNDM7ODA0Myw3IEBAIHZvaWQgcnR3ODlfYnRjX250Znlfc3BlY2lmaWNfcGFja2V0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwKIAlzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSAmYW1wO3J0d2Rldi0mZ3Q7YnRjOwogCXN0cnVjdCBydHc4OV9idGNfY3ggKmN4ID0gJmFtcDtidGMtJmd0O2N4OwogCXN0cnVjdCBydHc4OV9idGNfd2xfaW5mbyAqd2wgPSAmYW1wO2N4LSZndDt3bDsKLQlzdHJ1Y3QgcnR3ODlfYnRjX2J0X2xpbmtfaW5mbyAqYiA9ICZhbXA7Y3gtJmd0O2J0LmxpbmtfaW5mbzsKJiM0MzsJc3RydWN0IHJ0dzg5X2J0Y19idF9saW5rX2luZm8gKmIgPSAmYW1wO2N4LSZndDtidDAubGlua19pbmZvOwogCXN0cnVjdCBydHc4OV9idGNfYnRfaGZwX2Rlc2MgKmhmcCA9ICZhbXA7Yi0mZ3Q7aGZwX2Rlc2M7CiAJc3RydWN0IHJ0dzg5X2J0Y19idF9oaWRfZGVzYyAqaGlkID0gJmFtcDtiLSZndDtoaWRfZGVzYzsKIAl1MzIgY250OwpAQCAtNzg4NiwxNCAmIzQzOzgwNTIsMTQgQEAgdm9pZCBydHc4OV9idGNfbnRmeV9zcGVjaWZpY19wYWNrZXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LAogCiAJc3dpdGNoIChwa3RfdHlwZSkgewogCWNhc2UgUEFDS0VUX0RIQ1A6Ci0JCWNudCA9ICYjNDM7JiM0MztjeC0mZ3Q7Y250X3dsW0JUQ19XQ05UX0RIQ1BdOwomIzQzOwkJY250ID0gJiM0MzsmIzQzO3dsLSZndDt3Y250W0JUQ19XQ05UX0RIQ1BdOwogCQlydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19CVEMsCiAJCQkgICAgJiMzNDtbQlRDXSwgJXMoKTogREhDUCBjbnQ9JWRcbiYjMzQ7LCBfX2Z1bmNfXywgY250KTsKIAkJd2wtJmd0O3N0YXR1cy5tYXAuY29ubmVjdGluZyA9IHRydWU7CiAJCWRlbGF5X3dvcmsgPSB0cnVlOwogCQlicmVhazsKIAljYXNlIFBBQ0tFVF9FQVBPTDoKLQkJY250ID0gJiM0MzsmIzQzO2N4LSZndDtjbnRfd2xbQlRDX1dDTlRfRUFQT0xdOwomIzQzOwkJY250ID0gJiM0MzsmIzQzO3dsLSZndDt3Y250W0JUQ19XQ05UX0VBUE9MXTsKIAkJcnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQlRDLAogCQkJICAgICYjMzQ7W0JUQ10sICVzKCk6IEVBUE9MIGNudD0lZFxuJiMzNDssIF9fZnVuY19fLCBjbnQpOwogCQl3bC0mZ3Q7c3RhdHVzLm1hcC5fNHdheSA9IHRydWU7CkBAIC03OTAyLDcgJiM0Mzs4MDY4LDcgQEAgdm9pZCBydHc4OV9idGNfbnRmeV9zcGVjaWZpY19wYWNrZXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LAogCQkJZGVsYXkgLz0gMjsKIAkJYnJlYWs7CiAJY2FzZSBQQUNLRVRfRUFQT0xfRU5EOgotCQljbnQgPSAmIzQzOyYjNDM7Y3gtJmd0O2NudF93bFtCVENfV0NOVF9FQVBPTF07CiYjNDM7CQljbnQgPSAmIzQzOyYjNDM7d2wtJmd0O3djbnRbQlRDX1dDTlRfRUFQT0xdOwogCQlydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19CVEMsCiAJCQkgICAgJiMzNDtbQlRDXSwgJXMoKTogRUFQT0xfRW5kIGNudD0lZFxuJiMzNDssCiAJCQkgICAgX19mdW5jX18sIGNudCk7CkBAIC03OTEwLDcgJiM0Mzs4MDc2LDcgQEAgdm9pZCBydHc4OV9idGNfbnRmeV9zcGVjaWZpY19wYWNrZXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LAogCQl3aXBoeV9kZWxheWVkX3dvcmtfY2FuY2VsKHJ0d2Rldi0mZ3Q7aHctJmd0O3dpcGh5LCAmYW1wO3J0d2Rldi0mZ3Q7Y29leF9hY3QxX3dvcmspOwogCQlicmVhazsKIAljYXNlIFBBQ0tFVF9BUlA6Ci0JCWNudCA9ICYjNDM7JiM0MztjeC0mZ3Q7Y250X3dsW0JUQ19XQ05UX0FSUF07CiYjNDM7CQljbnQgPSAmIzQzOyYjNDM7d2wtJmd0O3djbnRbQlRDX1dDTlRfQVJQXTsKIAkJcnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQlRDLAogCQkJICAgICYjMzQ7W0JUQ10sICVzKCk6IEFSUCBjbnQ9JWRcbiYjMzQ7LCBfX2Z1bmNfXywgY250KTsKIAkJcmV0dXJuOwpAQCAtNzk4Miw3ICYjNDM7ODE0OCw3IEBAIHN0YXRpYyB1OCBfdXBkYXRlX2J0X3Jzc2lfbGV2ZWwoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCByc3NpKQogewogCWNvbnN0IHN0cnVjdCBydHc4OV9jaGlwX2luZm8gKmNoaXAgPSBydHdkZXYtJmd0O2NoaXA7CiAJc3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gJmFtcDtydHdkZXYtJmd0O2J0YzsKLQlzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gJmFtcDtidGMtJmd0O2N4LmJ0OwomIzQzOwlzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gJmFtcDtidGMtJmd0O2N4LmJ0MDsKIAl1OCAqcnNzaV9zdCwgcnNzaV90aCwgcnNzaV9sZXZlbCA9IDA7CiAJdTggaTsKIApAQCAtODAzMiw3ICYjNDM7ODE5OCw3IEBAIHN0YXRpYyB2b2lkIF91cGRhdGVfYnRfaW5mbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4ICpidWYsIHUzMiBsZW4pCiAJY29uc3Qgc3RydWN0IHJ0dzg5X2NoaXBfaW5mbyAqY2hpcCA9IHJ0d2Rldi0mZ3Q7Y2hpcDsKIAlzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSAmYW1wO3J0d2Rldi0mZ3Q7YnRjOwogCXN0cnVjdCBydHc4OV9idGNfY3ggKmN4ID0gJmFtcDtidGMtJmd0O2N4OwotCXN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSAmYW1wO2N4LSZndDtidDsKJiM0MzsJc3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9ICZhbXA7Y3gtJmd0O2J0MDsKIAlzdHJ1Y3QgcnR3ODlfYnRjX2J0X2xpbmtfaW5mbyAqYiA9ICZhbXA7YnQtJmd0O2xpbmtfaW5mbzsKIAlzdHJ1Y3QgcnR3ODlfYnRjX2J0X2hmcF9kZXNjICpoZnAgPSAmYW1wO2ItJmd0O2hmcF9kZXNjOwogCXN0cnVjdCBydHc4OV9idGNfYnRfaGlkX2Rlc2MgKmhpZCA9ICZhbXA7Yi0mZ3Q7aGlkX2Rlc2M7CkBAIC04MDQ3LDcgJiM0Mzs4MjEzLDcgQEAgc3RhdGljIHZvaWQgX3VwZGF0ZV9idF9pbmZvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggKmJ1ZiwgdTMyIGxlbikKIAkJcnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQlRDLAogCQkJICAgICYjMzQ7W0JUQ10sICVzKCk6IHJldHVybiBieSBidC1pbmZvIGR1cGxpY2F0ZSEhXG4mIzM0OywKIAkJCSAgICBfX2Z1bmNfXyk7Ci0JCWN4LSZndDtjbnRfYnRbQlRDX0JDTlRfSU5GT1NBTUVdJiM0MzsmIzQzOzsKJiM0MzsJCWJ0LSZndDtiY250W0JUQ19CQ05UX0lORk9TQU1FXSYjNDM7JiM0Mzs7CiAJCXJldHVybjsKIAl9CiAKQEAgLTgwNjgsNyAmIzQzOzgyMzQsNyBAQCBzdGF0aWMgdm9pZCBfdXBkYXRlX2J0X2luZm8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCAqYnVmLCB1MzIgbGVuKQogCWItJmd0O3N0YXR1cy5tYXAuYWNsX2J1c3kgPSBidGluZm8ubGIyLmFjbF9idXN5OwogCWItJmd0O3N0YXR1cy5tYXAuaW5xX3BhZyA9IGJ0aW5mby5sYjIuaW5xX3BhZzsKIAlidC0mZ3Q7aW5xX3BhZy5ub3cgPSBidGluZm8ubGIyLmlucV9wYWc7Ci0JY3gtJmd0O2NudF9idFtCVENfQkNOVF9JTlFQQUddICYjNDM7PSAhIShidC0mZ3Q7aW5xX3BhZy5ub3cgJmFtcDsmYW1wOyAhYnQtJmd0O2lucV9wYWcubGFzdCk7CiYjNDM7CWJ0LSZndDtiY250W0JUQ19CQ05UX0lOUVBBR10gJiM0Mzs9ICEhKGJ0LSZndDtpbnFfcGFnLm5vdyAmYW1wOyZhbXA7ICFidC0mZ3Q7aW5xX3BhZy5sYXN0KTsKIAogCWhmcC0mZ3Q7ZXhpc3QgPSBidGluZm8ubGIyLmhmcDsKIAliLSZndDtwcm9maWxlX2NudC5ub3cgJiM0Mzs9ICh1OCloZnAtJmd0O2V4aXN0OwpAQCAtODA4MywxMSAmIzQzOzgyNDksMTEgQEAgc3RhdGljIHZvaWQgX3VwZGF0ZV9idF9pbmZvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggKmJ1ZiwgdTMyIGxlbikKIAkvKiBwYXJzZSByYXcgaW5mbyBsb3ctQnl0ZTMgKi8KIAlidGluZm8udmFsID0gYnQtJmd0O3Jhd19pbmZvW0JUQ19CVElORk9fTDNdOwogCWlmIChidGluZm8ubGIzLnJldHJ5ICE9IDApCi0JCWN4LSZndDtjbnRfYnRbQlRDX0JDTlRfUkVUUlldJiM0MzsmIzQzOzsKJiM0MzsJCWJ0LSZndDtiY250W0JUQ19CQ05UX1JFVFJZXSYjNDM7JiM0Mzs7CiAJYi0mZ3Q7Y3FkZHIgPSBidGluZm8ubGIzLmNxZGRyOwotCWN4LSZndDtjbnRfYnRbQlRDX0JDTlRfSU5RXSAmIzQzOz0gISEoYnRpbmZvLmxiMy5pbnEgJmFtcDsmYW1wOyAhYnQtJmd0O2lucSk7CiYjNDM7CWJ0LSZndDtiY250W0JUQ19CQ05UX0lOUV0gJiM0Mzs9ICEhKGJ0aW5mby5sYjMuaW5xICZhbXA7JmFtcDsgIWJ0LSZndDtpbnEpOwogCWJ0LSZndDtpbnEgPSBidGluZm8ubGIzLmlucTsKLQljeC0mZ3Q7Y250X2J0W0JUQ19CQ05UX1BBR0VdICYjNDM7PSAhIShidGluZm8ubGIzLnBhZyAmYW1wOyZhbXA7ICFidC0mZ3Q7cGFnKTsKJiM0MzsJYnQtJmd0O2JjbnRbQlRDX0JDTlRfUEFHRV0gJiM0Mzs9ICEhKGJ0aW5mby5sYjMucGFnICZhbXA7JmFtcDsgIWJ0LSZndDtwYWcpOwogCWJ0LSZndDtwYWcgPSBidGluZm8ubGIzLnBhZzsKIAogCWItJmd0O3N0YXR1cy5tYXAubWVzaF9idXN5ID0gYnRpbmZvLmxiMy5tZXNoX2J1c3k7CkBAIC04MTEwLDExICYjNDM7ODI3NiwxMSBAQCBzdGF0aWMgdm9pZCBfdXBkYXRlX2J0X2luZm8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCAqYnVmLCB1MzIgbGVuKQogCQkJaGlkLSZndDt0eXBlIHw9IEJUQ19ISURfUkNVOwogCX0KIAotCWN4LSZndDtjbnRfYnRbQlRDX0JDTlRfUkVJTklUXSAmIzQzOz0gISEoYnRpbmZvLmhiMS5yZWluaXQgJmFtcDsmYW1wOyAhYnQtJmd0O3JlaW5pdCk7CiYjNDM7CWJ0LSZndDtiY250W0JUQ19CQ05UX1JFSU5JVF0gJiM0Mzs9ICEhKGJ0aW5mby5oYjEucmVpbml0ICZhbXA7JmFtcDsgIWJ0LSZndDtyZWluaXQpOwogCWJ0LSZndDtyZWluaXQgPSBidGluZm8uaGIxLnJlaW5pdDsKLQljeC0mZ3Q7Y250X2J0W0JUQ19CQ05UX1JFTElOS10gJiM0Mzs9ICEhKGJ0aW5mby5oYjEucmVsaW5rICZhbXA7JmFtcDsgIWItJmd0O3JlbGluay5ub3cpOwomIzQzOwlidC0mZ3Q7YmNudFtCVENfQkNOVF9SRUxJTktdICYjNDM7PSAhIShidGluZm8uaGIxLnJlbGluayAmYW1wOyZhbXA7ICFiLSZndDtyZWxpbmsubm93KTsKIAliLSZndDtyZWxpbmsubm93ID0gYnRpbmZvLmhiMS5yZWxpbms7Ci0JY3gtJmd0O2NudF9idFtCVENfQkNOVF9JR05PV0xdICYjNDM7PSAhIShidGluZm8uaGIxLmlnbm9fd2wgJmFtcDsmYW1wOyAhYnQtJmd0O2lnbm9fd2wpOwomIzQzOwlidC0mZ3Q7YmNudFtCVENfQkNOVF9JR05PV0xdICYjNDM7PSAhIShidGluZm8uaGIxLmlnbm9fd2wgJmFtcDsmYW1wOyAhYnQtJmd0O2lnbm9fd2wpOwogCWJ0LSZndDtpZ25vX3dsID0gYnRpbmZvLmhiMS5pZ25vX3dsOwogCiAJaWYgKGJ0LSZndDtpZ25vX3dsICZhbXA7JmFtcDsgIWN4LSZndDt3bC5zdGF0dXMubWFwLnJmX29mZikKQEAgLTgxMjIsNyAmIzQzOzgyODgsNyBAQCBzdGF0aWMgdm9pZCBfdXBkYXRlX2J0X2luZm8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCAqYnVmLCB1MzIgbGVuKQogCiAJYnQtJmd0O2JsZV9zY2FuX2VuID0gYnRpbmZvLmhiMS5ibGVfc2NhbjsKIAotCWN4LSZndDtjbnRfYnRbQlRDX0JDTlRfUk9MRVNXXSAmIzQzOz0gISEoYnRpbmZvLmhiMS5yb2xlX3N3ICZhbXA7JmFtcDsgIWItJmd0O3JvbGVfc3cpOwomIzQzOwlidC0mZ3Q7YmNudFtCVENfQkNOVF9ST0xFU1ddICYjNDM7PSAhIShidGluZm8uaGIxLnJvbGVfc3cgJmFtcDsmYW1wOyAhYi0mZ3Q7cm9sZV9zdyk7CiAJYi0mZ3Q7cm9sZV9zdyA9IGJ0aW5mby5oYjEucm9sZV9zdzsKIAogCWItJmd0O211bHRpX2xpbmsubm93ID0gYnRpbmZvLmhiMS5tdWx0aV9saW5rOwpAQCAtODEzMSw3ICYjNDM7ODI5Nyw3IEBAIHN0YXRpYyB2b2lkIF91cGRhdGVfYnRfaW5mbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4ICpidWYsIHUzMiBsZW4pCiAJYnRpbmZvLnZhbCA9IGJ0LSZndDtyYXdfaW5mb1tCVENfQlRJTkZPX0gyXTsKIAlwYW4tJmd0O2FjdGl2ZSA9ICEhYnRpbmZvLmhiMi5wYW5fYWN0aXZlOwogCi0JY3gtJmd0O2NudF9idFtCVENfQkNOVF9BRkhdICYjNDM7PSAhIShidGluZm8uaGIyLmFmaF91cGRhdGUgJmFtcDsmYW1wOyAhYi0mZ3Q7YWZoX3VwZGF0ZSk7CiYjNDM7CWJ0LSZndDtiY250W0JUQ19CQ05UX0FGSF0gJiM0Mzs9ICEhKGJ0aW5mby5oYjIuYWZoX3VwZGF0ZSAmYW1wOyZhbXA7ICFiLSZndDthZmhfdXBkYXRlKTsKIAliLSZndDthZmhfdXBkYXRlID0gYnRpbmZvLmhiMi5hZmhfdXBkYXRlOwogCWEyZHAtJmd0O2FjdGl2ZSA9IGJ0aW5mby5oYjIuYTJkcF9hY3RpdmU7CiAJYi0mZ3Q7c2xhdmVfcm9sZSA9IGJ0aW5mby5oYjIuc2xhdmU7CkBAIC04MTQ1LDcgJiM0Mzs4MzExLDcgQEAgc3RhdGljIHZvaWQgX3VwZGF0ZV9idF9pbmZvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggKmJ1ZiwgdTMyIGxlbikKIAlhMmRwLSZndDtiaXRwb29sID0gYnRpbmZvLmhiMy5hMmRwX2JpdHBvb2w7CiAKIAlpZiAoYi0mZ3Q7dHhfM20gIT0gKHUzMilidGluZm8uaGIzLnR4XzNtKQotCQljeC0mZ3Q7Y250X2J0W0JUQ19CQ05UX1JBVEVDSEddJiM0MzsmIzQzOzsKJiM0MzsJCWJ0LSZndDtiY250W0JUQ19CQ05UX1JBVEVDSEddJiM0MzsmIzQzOzsKIAliLSZndDt0eF8zbSA9ICh1MzIpYnRpbmZvLmhiMy50eF8zbTsKIAogCWEyZHAtJmd0O3NpbmsgPSBidGluZm8uaGIzLmEyZHBfc2luazsKQEAgLTgzMzksNyAmIzQzOzg1MDUsNiBAQCB2b2lkIHJ0dzg5X2J0Y19udGZ5X3JhZGlvX3N0YXRlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgZW51bSBidGNfcmZjdHJsIHJmX3N0YQogCQlydHc4OV9idGNfZndfZW5fcnB0KHJ0d2RldiwgUlBUX0VOX01SRUcsIHRydWUpOwogCQl2YWwgPSBCVENfV1NDQl9BQ1RJVkUgfCBCVENfV1NDQl9PTiB8IEJUQ19XU0NCX0JUTE9HOwogCQlfd3JpdGVfc2NiZChydHdkZXYsIHZhbCwgdHJ1ZSk7Ci0JCV91cGRhdGVfYnRfc2NiZChydHdkZXYsIHRydWUpOwogCQljaGlwLSZndDtvcHMtJmd0O2J0Y19pbml0X2NmZyhydHdkZXYpOwogCX0gZWxzZSB7CiAJCXJ0dzg5X2J0Y19md19lbl9ycHQocnR3ZGV2LCBSUFRfRU5fQUxMLCBmYWxzZSk7CkBAIC04MzQ5LDEwICYjNDM7ODUxNCw2IEBAIHZvaWQgcnR3ODlfYnRjX250ZnlfcmFkaW9fc3RhdGUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBlbnVtIGJ0Y19yZmN0cmwgcmZfc3RhCiAJCQlfd3JpdGVfc2NiZChydHdkZXYsIEJUQ19XU0NCX0FMTCwgZmFsc2UpOwogCQllbHNlCiAJCQlfd3JpdGVfc2NiZChydHdkZXYsIEJUQ19XU0NCX0FDVElWRSwgZmFsc2UpOwotCi0JCWlmIChyZl9zdGF0ZSA9PSBCVENfUkZDVFJMX0xQU19XTF9PTiAmYW1wOyZhbXA7Ci0JCSAgICB3bC0mZ3Q7c3RhdHVzLm1hcC5scHNfcHJlICE9IEJUQ19MUFNfT0ZGKQotCQkJX3VwZGF0ZV9idF9zY2JkKHJ0d2RldiwgdHJ1ZSk7CiAJfQogCiAJYnRjLSZndDtkbS5jbnRfZG1bQlRDX0RDTlRfQlRDTlRfSEFOR10gPSAwOwpAQCAtODcwNSw3ICYjNDM7ODg2Niw3IEBAIHN0YXRpYyB1OCBydHc4OV9idGNfYzJoX2dldF9pbmRleF9ieV92ZXIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCBmdW5jKQogCQkJcmV0dXJuIEJURl9FVk5UX0JVRl9PVkVSRkxPVzsKIAkJZWxzZSBpZiAodmVyLSZndDtmd2MyaGZ1bmMgPT0gMikKIAkJCXJldHVybiBmdW5jOwotCQllbHNlIGlmICh2ZXItJmd0O2Z3YzJoZnVuYyA9PSAzKQomIzQzOwkJZWxzZSBpZiAodmVyLSZndDtmd2MyaGZ1bmMgPT0gMyB8fCB2ZXItJmd0O2Z3YzJoZnVuYyA9PSA0KQogCQkJcmV0dXJuIEJURl9FVk5UX0JVRl9PVkVSRkxPVzsKIAkJZWxzZQogCQkJcmV0dXJuIEJURl9FVk5UX01BWDsKQEAgLTg3MTYsMTkgJiM0Mzs4ODc3LDI2IEBAIHN0YXRpYyB1OCBydHc4OV9idGNfYzJoX2dldF9pbmRleF9ieV92ZXIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCBmdW5jKQogCQkJcmV0dXJuIEJURl9FVk5UX0MySF9MT09QQkFDSzsKIAkJZWxzZSBpZiAodmVyLSZndDtmd2MyaGZ1bmMgPT0gMikKIAkJCXJldHVybiBmdW5jOwotCQllbHNlIGlmICh2ZXItJmd0O2Z3YzJoZnVuYyA9PSAzKQomIzQzOwkJZWxzZSBpZiAodmVyLSZndDtmd2MyaGZ1bmMgPT0gMyB8fCB2ZXItJmd0O2Z3YzJoZnVuYyA9PSA0KQogCQkJcmV0dXJuIEJURl9FVk5UX0MySF9MT09QQkFDSzsKIAkJZWxzZQogCQkJcmV0dXJuIEJURl9FVk5UX01BWDsKIAljYXNlIEJURl9FVk5UX0MySF9MT09QQkFDSzoKIAkJaWYgKHZlci0mZ3Q7ZndjMmhmdW5jID09IDIpCiAJCQlyZXR1cm4gZnVuYzsKLQkJZWxzZSBpZiAodmVyLSZndDtmd2MyaGZ1bmMgPT0gMykKJiM0MzsJCWVsc2UgaWYgKHZlci0mZ3Q7ZndjMmhmdW5jID09IDMgfHwgdmVyLSZndDtmd2MyaGZ1bmMgPT0gNCkKIAkJCXJldHVybiBCVEZfRVZOVF9CVF9MRUFVRElPX0lORk87CiAJCWVsc2UKIAkJCXJldHVybiBCVEZfRVZOVF9NQVg7CiAJY2FzZSBCVEZfRVZOVF9CVF9RVUVSWV9UWFBXUjoKLQkJaWYgKHZlci0mZ3Q7ZndjMmhmdW5jID09IDMpCiYjNDM7CQlpZiAodmVyLSZndDtmd2MyaGZ1bmMgPT0gMyB8fCB2ZXItJmd0O2Z3YzJoZnVuYyA9PSA0KQomIzQzOwkJCXJldHVybiBmdW5jOwomIzQzOwkJZWxzZQomIzQzOwkJCXJldHVybiBCVEZfRVZOVF9NQVg7CiYjNDM7CWNhc2UgQlRGX0VWTlRfWkJfSU5GTzoKJiM0MzsJY2FzZSBCVEZfRVZOVF9aQl9DSDoKJiM0MzsJY2FzZSBCVEZfRVZOVF9aQl9RVUVSWV9UWFBXUjoKJiM0MzsJCWlmICh2ZXItJmd0O2Z3YzJoZnVuYyA9PSA0KQogCQkJcmV0dXJuIGZ1bmM7CiAJCWVsc2UKIAkJCXJldHVybiBCVEZfRVZOVF9NQVg7CkBAIC04NzQyLDYgJiM0Mzs4OTEwLDcgQEAgdm9pZCBydHc4OV9idGNfYzJoX2hhbmRsZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHN0cnVjdCBza19idWZmICpza2IsCiAJCQkgIHUzMiBsZW4sIHU4IGNsYXNzLCB1OCBmdW5jKQogewogCXN0cnVjdCBydHc4OV9idGMgKmJ0YyA9ICZhbXA7cnR3ZGV2LSZndDtidGM7CiYjNDM7CXN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSAmYW1wO3J0d2Rldi0mZ3Q7YnRjLmN4LmJ0MDsKIAlzdHJ1Y3QgcnR3ODlfYnRjX2J0Zl9md2luZm8gKnBmd2luZm8gPSAmYW1wO2J0Yy0mZ3Q7ZndpbmZvOwogCXU4ICpidWYgPSAmYW1wO3NrYi0mZ3Q7ZGF0YVtSVFc4OV9DMkhfSEVBREVSX0xFTl07CiAKQEAgLTg3NjksMTMgJiM0Mzs4OTM4LDEzIEBAIHZvaWQgcnR3ODlfYnRjX2MyaF9oYW5kbGUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCWNhc2UgQlRGX0VWTlRfQlRfSU5GTzoKIAkJcnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQlRDLAogCQkJICAgICYjMzQ7W0JUQ10sIGhhbmRsZSBDMkggQlQgSU5GTyB3aXRoIGRhdGEgJThwaFxuJiMzNDssIGJ1Zik7Ci0JCWJ0Yy0mZ3Q7Y3guY250X2J0W0JUQ19CQ05UX0lORk9VUERBVEVdJiM0MzsmIzQzOzsKJiM0MzsJCWJ0LSZndDtiY250W0JUQ19CQ05UX0lORk9VUERBVEVdJiM0MzsmIzQzOzsKIAkJX3VwZGF0ZV9idF9pbmZvKHJ0d2RldiwgYnVmLCBsZW4pOwogCQlicmVhazsKIAljYXNlIEJURl9FVk5UX0JUX1NDQkQ6CiAJCXJ0dzg5X2RlYnVnKHJ0d2RldiwgUlRXODlfREJHX0JUQywKIAkJCSAgICAmIzM0O1tCVENdLCBoYW5kbGUgQzJIIEJUIFNDQkQgd2l0aCBkYXRhICU4cGhcbiYjMzQ7LCBidWYpOwotCQlidGMtJmd0O2N4LmNudF9idFtCVENfQkNOVF9TQ0JEVVBEQVRFXSYjNDM7JiM0Mzs7CiYjNDM7CQlidC0mZ3Q7YmNudFtCVENfQkNOVF9TQ0JEVVBEQVRFXSYjNDM7JiM0Mzs7CiAJCV91cGRhdGVfYnRfc2NiZChydHdkZXYsIGZhbHNlKTsKIAkJYnJlYWs7CiAJY2FzZSBCVEZfRVZOVF9CVF9QU0Q6CkBAIC04NzkzLDcgJiM0Mzs4OTYyLDcgQEAgdm9pZCBydHc4OV9idGNfYzJoX2hhbmRsZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHN0cnVjdCBza19idWZmICpza2IsCiAJCWJ0Yy0mZ3Q7ZG0uY250X2RtW0JUQ19EQ05UX0NYX1JVTklORk9dJiM0MzsmIzQzOzsKIAkJYnJlYWs7CiAJY2FzZSBCVEZfRVZOVF9CVF9RVUVSWV9UWFBXUjoKLQkJYnRjLSZndDtjeC5jbnRfYnRbQlRDX0JDTlRfQlRUWFBXUl9VUERBVEVdJiM0MzsmIzQzOzsKJiM0MzsJCWJ0LSZndDtiY250W0JUQ19CQ05UX0JUVFhQV1JfVVBEQVRFXSYjNDM7JiM0Mzs7CiAJCV91cGRhdGVfYnRfdHhwd3JfaW5mbyhydHdkZXYsIGJ1ZiwgbGVuKTsKIAl9CiB9CkBAIC04ODA4LDcgJiM0Mzs4OTc3LDcgQEAgc3RhdGljIGludCBfc2hvd19jeF9pbmZvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY2hhciAqYnVmLCBzaXplX3QgYnVmc3opCiAJc3RydWN0IHJ0dzg5X2hhbCAqaGFsID0gJmFtcDtydHdkZXYtJmd0O2hhbDsKIAlzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSAmYW1wO3J0d2Rldi0mZ3Q7YnRjOwogCXN0cnVjdCBydHc4OV9idGNfZG0gKmRtID0gJmFtcDtidGMtJmd0O2RtOwotCXN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSAmYW1wO2J0Yy0mZ3Q7Y3guYnQ7CiYjNDM7CXN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSAmYW1wO2J0Yy0mZ3Q7Y3guYnQwOwogCXN0cnVjdCBydHc4OV9idGNfd2xfaW5mbyAqd2wgPSAmYW1wO2J0Yy0mZ3Q7Y3gud2w7CiAJdTMyIHZlcl9tYWluID0gMCwgdmVyX3N1YiA9IDAsIHZlcl9ob3RmaXggPSAwLCBpZF9icmFuY2ggPSAwOwogCXU4IGN2LCByZmUsIGlzbywgYW50X251bSwgYW50X3NpbmdsZV9wb3M7CkBAIC04ODg1LDcgJiM0Mzs5MDU0LDcgQEAgc3RhdGljIGludCBfc2hvd19jeF9pbmZvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY2hhciAqYnVmLCBzaXplX3QgYnVmc3opCiAKIAlwICYjNDM7PSBzY25wcmludGYocCwgZW5kIC0gcCwKIAkJICAgICAgICYjMzQ7M3JkX2NvZXg6JWQsIGRiY2M6JWQsIHR4X251bTolZCwgcnhfbnVtOiVkXG4mIzM0OywKLQkJICAgICAgIGJ0Yy0mZ3Q7Y3gub3RoZXIudHlwZSwgcnR3ZGV2LSZndDtkYmNjX2VuLCBoYWwtJmd0O3R4X25zcywKJiM0MzsJCSAgICAgICBidGMtJmd0O2N4LmJ0X2V4dC5mdW5jX3R5cGUsIHJ0d2Rldi0mZ3Q7ZGJjY19lbiwgaGFsLSZndDt0eF9uc3MsCiAJCSAgICAgICBoYWwtJmd0O3J4X25zcyk7CiAKIAlyZXR1cm4gcCAtIGJ1ZjsKQEAgLTkwMDcsNyAmIzQzOzkxNzYsNyBAQCBlbnVtIGJ0Y19idF9hMmRwX3R5cGUgewogc3RhdGljIGludCBfc2hvd19idF9wcm9maWxlX2luZm8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBjaGFyICpidWYsIHNpemVfdCBidWZzeikKIHsKIAlzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSAmYW1wO3J0d2Rldi0mZ3Q7YnRjOwotCXN0cnVjdCBydHc4OV9idGNfYnRfbGlua19pbmZvICpidF9saW5mbyA9ICZhbXA7YnRjLSZndDtjeC5idC5saW5rX2luZm87CiYjNDM7CXN0cnVjdCBydHc4OV9idGNfYnRfbGlua19pbmZvICpidF9saW5mbyA9ICZhbXA7YnRjLSZndDtjeC5idDAubGlua19pbmZvOwogCXN0cnVjdCBydHc4OV9idGNfYnRfaGZwX2Rlc2MgaGZwID0gYnRfbGluZm8tJmd0O2hmcF9kZXNjOwogCXN0cnVjdCBydHc4OV9idGNfYnRfaGlkX2Rlc2MgaGlkID0gYnRfbGluZm8tJmd0O2hpZF9kZXNjOwogCXN0cnVjdCBydHc4OV9idGNfYnRfYTJkcF9kZXNjIGEyZHAgPSBidF9saW5mby0mZ3Q7YTJkcF9kZXNjOwpAQCAtOTA2NSw3ICYjNDM7OTIzNCw3IEBAIHN0YXRpYyBpbnQgX3Nob3dfYnRfaW5mbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnN6KQogCXN0cnVjdCBydHc4OV9idGMgKmJ0YyA9ICZhbXA7cnR3ZGV2LSZndDtidGM7CiAJY29uc3Qgc3RydWN0IHJ0dzg5X2J0Y192ZXIgKnZlciA9IGJ0Yy0mZ3Q7dmVyOwogCXN0cnVjdCBydHc4OV9idGNfY3ggKmN4ID0gJmFtcDtidGMtJmd0O2N4OwotCXN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSAmYW1wO2N4LSZndDtidDsKJiM0MzsJc3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9ICZhbXA7Y3gtJmd0O2J0MDsKIAlzdHJ1Y3QgcnR3ODlfYnRjX3dsX2luZm8gKndsID0gJmFtcDtjeC0mZ3Q7d2w7CiAJdTMyIHZlcl9tYWluID0gRklFTERfR0VUKEdFTk1BU0soMzEsIDI0KSwgd2wtJmd0O3Zlcl9pbmZvLmZ3X2NvZXgpOwogCXN0cnVjdCBydHc4OV9idGNfYnRfbGlua19pbmZvICpidF9saW5mbyA9ICZhbXA7YnQtJmd0O2xpbmtfaW5mbzsKQEAgLTkxNDQsMTcgJiM0Mzs5MzEzLDE3IEBAIHN0YXRpYyBpbnQgX3Nob3dfYnRfaW5mbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnN6KQogCiAJcCAmIzQzOz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsCiAJCSAgICAgICAmIzM0OyAlLTE1cyA6IHJldHJ5OiVkLCByZWxpbms6JWQsIHJhdGVfY2hnOiVkLCByZWluaXQ6JWQsIHJlZW5hYmxlOiVkLCAmIzM0OywKLQkJICAgICAgICYjMzQ7W3N0YXRfY250XSYjMzQ7LCBjeC0mZ3Q7Y250X2J0W0JUQ19CQ05UX1JFVFJZXSwKLQkJICAgICAgIGN4LSZndDtjbnRfYnRbQlRDX0JDTlRfUkVMSU5LXSwKLQkJICAgICAgIGN4LSZndDtjbnRfYnRbQlRDX0JDTlRfUkFURUNIR10sCi0JCSAgICAgICBjeC0mZ3Q7Y250X2J0W0JUQ19CQ05UX1JFSU5JVF0sCi0JCSAgICAgICBjeC0mZ3Q7Y250X2J0W0JUQ19CQ05UX1JFRU5BQkxFXSk7CiYjNDM7CQkgICAgICAgJiMzNDtbc3RhdF9jbnRdJiMzNDssIGJ0LSZndDtiY250W0JUQ19CQ05UX1JFVFJZXSwKJiM0MzsJCSAgICAgICBidC0mZ3Q7YmNudFtCVENfQkNOVF9SRUxJTktdLAomIzQzOwkJICAgICAgIGJ0LSZndDtiY250W0JUQ19CQ05UX1JBVEVDSEddLAomIzQzOwkJICAgICAgIGJ0LSZndDtiY250W0JUQ19CQ05UX1JFSU5JVF0sCiYjNDM7CQkgICAgICAgYnQtJmd0O2JjbnRbQlRDX0JDTlRfUkVFTkFCTEVdKTsKIAogCXAgJiM0Mzs9IHNjbnByaW50ZihwLCBlbmQgLSBwLAogCQkgICAgICAgJiMzNDtyb2xlLXN3aXRjaDolZCwgYWZoOiVkLCBpbnFfcGFnZTolZChpbnE6JWQvcGFnZTolZCksIGlnbm9fd2w6JWRcbiYjMzQ7LAotCQkgICAgICAgY3gtJmd0O2NudF9idFtCVENfQkNOVF9ST0xFU1ddLCBjeC0mZ3Q7Y250X2J0W0JUQ19CQ05UX0FGSF0sCi0JCSAgICAgICBjeC0mZ3Q7Y250X2J0W0JUQ19CQ05UX0lOUVBBR10sIGN4LSZndDtjbnRfYnRbQlRDX0JDTlRfSU5RXSwKLQkJICAgICAgIGN4LSZndDtjbnRfYnRbQlRDX0JDTlRfUEFHRV0sIGN4LSZndDtjbnRfYnRbQlRDX0JDTlRfSUdOT1dMXSk7CiYjNDM7CQkgICAgICAgYnQtJmd0O2JjbnRbQlRDX0JDTlRfUk9MRVNXXSwgYnQtJmd0O2JjbnRbQlRDX0JDTlRfQUZIXSwKJiM0MzsJCSAgICAgICBidC0mZ3Q7YmNudFtCVENfQkNOVF9JTlFQQUddLCBidC0mZ3Q7YmNudFtCVENfQkNOVF9JTlFdLAomIzQzOwkJICAgICAgIGJ0LSZndDtiY250W0JUQ19CQ05UX1BBR0VdLCBidC0mZ3Q7YmNudFtCVENfQkNOVF9JR05PV0xdKTsKIAogCXAgJiM0Mzs9IF9zaG93X2J0X3Byb2ZpbGVfaW5mbyhydHdkZXYsIHAsIGVuZCAtIHApOwogCkBAIC05MTY0LDE2ICYjNDM7OTMzMywxNiBAQCBzdGF0aWMgaW50IF9zaG93X2J0X2luZm8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBjaGFyICpidWYsIHNpemVfdCBidWZzeikKIAkJICAgICAgIGJ0LSZndDtyYXdfaW5mb1s0XSwgYnQtJmd0O3Jhd19pbmZvWzVdLCBidC0mZ3Q7cmF3X2luZm9bNl0sCiAJCSAgICAgICBidC0mZ3Q7cmF3X2luZm9bN10sCiAJCSAgICAgICBidC0mZ3Q7cmF3X2luZm9bMF0gPT0gQlRDX0JUSU5GT19BVVRPID8gJiMzNDthdXRvJiMzNDsgOiAmIzM0O3JlcGx5JiMzNDssCi0JCSAgICAgICBjeC0mZ3Q7Y250X2J0W0JUQ19CQ05UX0lORk9VUERBVEVdLAotCQkgICAgICAgY3gtJmd0O2NudF9idFtCVENfQkNOVF9JTkZPU0FNRV0pOwomIzQzOwkJICAgICAgIGJ0LSZndDtiY250W0JUQ19CQ05UX0lORk9VUERBVEVdLAomIzQzOwkJICAgICAgIGJ0LSZndDtiY250W0JUQ19CQ05UX0lORk9TQU1FXSk7CiAKIAlwICYjNDM7PSBzY25wcmludGYocCwgZW5kIC0gcCwKIAkJICAgICAgICYjMzQ7ICUtMTVzIDogSGktcnggPSAlZCwgSGktdHggPSAlZCwgTG8tcnggPSAlZCwgTG8tdHggPSAlZCAoYnRfcG9sdXRfd2xfdHggPSAlZCkmIzM0OywKLQkJICAgICAgICYjMzQ7W3RyeF9yZXFfY250XSYjMzQ7LCBjeC0mZ3Q7Y250X2J0W0JUQ19CQ05UX0hJUFJJX1JYXSwKLQkJICAgICAgIGN4LSZndDtjbnRfYnRbQlRDX0JDTlRfSElQUklfVFhdLAotCQkgICAgICAgY3gtJmd0O2NudF9idFtCVENfQkNOVF9MT1BSSV9SWF0sCi0JCSAgICAgICBjeC0mZ3Q7Y250X2J0W0JUQ19CQ05UX0xPUFJJX1RYXSwKLQkJICAgICAgIGN4LSZndDtjbnRfYnRbQlRDX0JDTlRfUE9MVVRdKTsKJiM0MzsJCSAgICAgICAmIzM0O1t0cnhfcmVxX2NudF0mIzM0OywgYnQtJmd0O2JjbnRbQlRDX0JDTlRfSElQUklfUlhdLAomIzQzOwkJICAgICAgIGJ0LSZndDtiY250W0JUQ19CQ05UX0hJUFJJX1RYXSwKJiM0MzsJCSAgICAgICBidC0mZ3Q7YmNudFtCVENfQkNOVF9MT1BSSV9SWF0sCiYjNDM7CQkgICAgICAgYnQtJmd0O2JjbnRbQlRDX0JDTlRfTE9QUklfVFhdLAomIzQzOwkJICAgICAgIGJ0LSZndDtiY250W0JUQ19CQ05UX1BPTFVUXSk7CiAKIAlpZiAoIWJ0LSZndDtzY2FuX2luZm9fdXBkYXRlKSB7CiAJCXJ0dzg5X2J0Y19md19lbl9ycHQocnR3ZGV2LCBSUFRfRU5fQlRfU0NBTl9JTkZPLCB0cnVlKTsKQEAgLTkyMDksNyAmIzQzOzkzNzgsNyBAQCBzdGF0aWMgaW50IF9zaG93X2J0X2luZm8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBjaGFyICpidWYsIHNpemVfdCBidWZzeikKIAllbHNlCiAJCXJ0dzg5X2J0Y19md19lbl9ycHQocnR3ZGV2LCBSUFRfRU5fQlRfVFhfUFdSX0xWTCwgZmFsc2UpOwogCi0JaWYgKGN4LSZndDtjbnRfYnRbQlRDX0JDTlRfQlRUWFBXUl9VUERBVEVdKSB7CiYjNDM7CWlmIChidC0mZ3Q7YmNudFtCVENfQkNOVF9CVFRYUFdSX1VQREFURV0pIHsKIAkJcCAmIzQzOz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsCiAJCQkgICAgICAgJiMzNDsgJS0xNXMgOiBicl9pbmRleDoweCV4LCBsZV9pbmRleDoweCV4JiMzNDssCiAJCQkgICAgICAgJiMzNDtbYnRfdHhwd3JfbHZsXSYjMzQ7LApAQCAtOTU4OCw3ICYjNDM7OTc1Nyw3IEBAIHN0YXRpYyBpbnQgX3Nob3dfZG1faW5mbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnN6KQogCWNvbnN0IHN0cnVjdCBydHc4OV9idGNfdmVyICp2ZXIgPSBidGMtJmd0O3ZlcjsKIAlzdHJ1Y3QgcnR3ODlfYnRjX2RtICpkbSA9ICZhbXA7YnRjLSZndDtkbTsKIAlzdHJ1Y3QgcnR3ODlfYnRjX3dsX2luZm8gKndsID0gJmFtcDtidGMtJmd0O2N4LndsOwotCXN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSAmYW1wO2J0Yy0mZ3Q7Y3guYnQ7CiYjNDM7CXN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSAmYW1wO2J0Yy0mZ3Q7Y3guYnQwOwogCWNoYXIgKnAgPSBidWYsICplbmQgPSBidWYgJiM0MzsgYnVmc3o7CiAJdTggaWdub19idDsKIApAQCAtOTYyNywzMSAmIzQzOzk3OTYsMjUgQEAgc3RhdGljIGludCBfc2hvd19kbV9pbmZvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY2hhciAqYnVmLCBzaXplX3QgYnVmc3opCiAJCSAgICAgICAoZG0tJmd0O3dsX2Z3X2N4X29mZmxvYWQgPT0gQlRDX0NYX0ZXX09GRkxPQUQgPwogCQkJJiMzNDsmIzM0OyA6ICYjMzQ7KE1pc21hdGNoISEpJiMzNDspKTsKIAotCWlmIChkbS0mZ3Q7cmZfdHJ4X3BhcmEud2xfdHhfcG93ZXIgPT0gMHhmZikKLQkJcCAmIzQzOz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsCi0JCQkgICAgICAgJiMzNDsgJS0xNXMgOiB3bF9yc3NpX2x2bDolZCwgcGFyYV9sdmw6JWQsIHdsX3R4X3B3cjpvcmlnLCAmIzM0OywKLQkJCSAgICAgICAmIzM0O1t0cnhfY3RybF0mIzM0Oywgd2wtJmd0O3Jzc2lfbGV2ZWwsCi0JCQkgICAgICAgZG0tJmd0O3RyeF9wYXJhX2xldmVsKTsKLQotCWVsc2UKLQkJcCAmIzQzOz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsCi0JCQkgICAgICAgJiMzNDsgJS0xNXMgOiB3bF9yc3NpX2x2bDolZCwgcGFyYV9sdmw6JWQsIHdsX3R4X3B3cjolZCwgJiMzNDssCi0JCQkgICAgICAgJiMzNDtbdHJ4X2N0cmxdJiMzNDssIHdsLSZndDtyc3NpX2xldmVsLAotCQkJICAgICAgIGRtLSZndDt0cnhfcGFyYV9sZXZlbCwKLQkJCSAgICAgICBkbS0mZ3Q7cmZfdHJ4X3BhcmEud2xfdHhfcG93ZXIpOwomIzQzOwlwICYjNDM7PSBzY25wcmludGYocCwgZW5kIC0gcCwKJiM0MzsJCSAgICAgICAmIzM0OyAlLTE1cyA6IHdsW3Jzc2lfbHZsOiVkL3BhcmE6JWQvdHhfcHdyOlslZCAlZF0vcnhfbHZsOlslZCAlZF0vbG5hMjolZC9zdGJfY2hnOiVkXVxuICYjMzQ7LAomIzQzOwkJICAgICAgICYjMzQ7W2RtX3JmX2N0cmxdJiMzNDssCiYjNDM7CQkgICAgICAgd2wtJmd0O3Jzc2lfbGV2ZWwsIGRtLSZndDt0cnhfcGFyYV9sZXZlbCwKJiM0MzsJCSAgICAgICBkbS0mZ3Q7cmZfdHJ4X3BhcmEud2xfdHhfcG93ZXJbUlRXODlfUEhZXzBdLAomIzQzOwkJICAgICAgIGRtLSZndDtyZl90cnhfcGFyYS53bF90eF9wb3dlcltSVFc4OV9QSFlfMV0sCiYjNDM7CQkgICAgICAgZG0tJmd0O3JmX3RyeF9wYXJhLndsX3J4X2dhaW5bUlRXODlfUEhZXzBdLAomIzQzOwkJICAgICAgIGRtLSZndDtyZl90cnhfcGFyYS53bF9yeF9nYWluW1JUVzg5X1BIWV8xXSwKJiM0MzsJCSAgICAgICBkbS0mZ3Q7d2xfbG5hMiwgZG0tJmd0O3dsX3N0Yl9jaGcpOwogCiAJcCAmIzQzOz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsCi0JCSAgICAgICAmIzM0O3dsX3J4X2x2bDolZCwgYnRfdHhfcHdyX2RlYzolZCwgYnRfcnhfbG5hOiVkKCVzLXRibCksIHdsX2J0Z19yeDolZFxuJiMzNDssCi0JCSAgICAgICBkbS0mZ3Q7cmZfdHJ4X3BhcmEud2xfcnhfZ2FpbiwKLQkJICAgICAgIGRtLSZndDtyZl90cnhfcGFyYS5idF90eF9wb3dlciwKLQkJICAgICAgIGRtLSZndDtyZl90cnhfcGFyYS5idF9yeF9nYWluLAotCQkgICAgICAgKGJ0LSZndDtoaV9sbmFfcnggPyAmIzM0O0hpJiMzNDsgOiAmIzM0O09yaSYjMzQ7KSwgZG0tJmd0O3dsX2J0Z19yeCk7CiYjNDM7CQkgICAgICAgJiMzNDsgJS0xNXMgOiBwcmVfYWdjOiVkLCBidGdfcng6JWRcbiAmIzM0OywKJiM0MzsJCSAgICAgICAmIzM0O1tkbV9iYl9jdHJsXSYjMzQ7LCBkbS0mZ3Q7d2xfcHJlX2FnYywgZG0tJmd0O3dsX2J0Z19yeCk7CiAKIAlwICYjNDM7PSBzY25wcmludGYocCwgZW5kIC0gcCwKIAkJICAgICAgICYjMzQ7ICUtMTVzIDogd2xfdHhfbGltaXRbZW46JWQvbWF4X3Q6JWR1cy9tYXhfcmV0cnk6JWRdLCBidF9zbG90X3JlZzolZC1UVSwgYnRfc2Nhbl9yeF9sb3dfcHJpOiVkXG4mIzM0OywKIAkJICAgICAgICYjMzQ7W2RtX2N0cmxdJiMzNDssIGRtLSZndDt3bF90eF9saW1pdC5lbmFibGUsCiAJCSAgICAgICBkbS0mZ3Q7d2xfdHhfbGltaXQudHhfdGltZSwKLQkJICAgICAgIGRtLSZndDt3bF90eF9saW1pdC50eF9yZXRyeSwgYnRjLSZndDtidF9yZXFfbGVuLAomIzQzOwkJICAgICAgIGRtLSZndDt3bF90eF9saW1pdC50eF9yZXRyeSwgYnRjLSZndDtidF9yZXFfbGVuW1JUVzg5X1BIWV8wXSwKIAkJICAgICAgIGJ0LSZndDtzY2FuX3J4X2xvd19wcmkpOwogCiAJcmV0dXJuIHAgLSBidWY7CkBAIC05ODEwLDcgJiM0Mzs5OTczLDcgQEAgc3RhdGljIGludCBfc2hvd19mYnRjX2N5c3RhX3YyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY2hhciAqYnVmLCBzaXplX3QgYnVmc3oKIAlzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSAmYW1wO3J0d2Rldi0mZ3Q7YnRjOwogCXN0cnVjdCBydHc4OV9idGNfYnRmX2Z3aW5mbyAqcGZ3aW5mbyA9ICZhbXA7YnRjLSZndDtmd2luZm87CiAJc3RydWN0IHJ0dzg5X2J0Y19kbSAqZG0gPSAmYW1wO2J0Yy0mZ3Q7ZG07Ci0Jc3RydWN0IHJ0dzg5X2J0Y19idF9hMmRwX2Rlc2MgKmEyZHAgPSAmYW1wO2J0Yy0mZ3Q7Y3guYnQubGlua19pbmZvLmEyZHBfZGVzYzsKJiM0MzsJc3RydWN0IHJ0dzg5X2J0Y19idF9hMmRwX2Rlc2MgKmEyZHAgPSAmYW1wO2J0Yy0mZ3Q7Y3guYnQwLmxpbmtfaW5mby5hMmRwX2Rlc2M7CiAJc3RydWN0IHJ0dzg5X2J0Y19ycHRfY21uX2luZm8gKnBjaW5mbyA9IE5VTEw7CiAJc3RydWN0IHJ0dzg5X2J0Y19mYnRjX2N5c3RhX3YyICpwY3lzdGFfbGUzMiA9IE5VTEw7CiAJdW5pb24gcnR3ODlfYnRjX2ZidGNfcnhmbGN0IHI7CkBAIC05OTQxLDcgJiM0MzsxMDEwNCw3IEBAIHN0YXRpYyBpbnQgX3Nob3dfZmJ0Y19jeXN0YV92MihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnN6CiBzdGF0aWMgaW50IF9zaG93X2ZidGNfY3lzdGFfdjMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBjaGFyICpidWYsIHNpemVfdCBidWZzeikKIHsKIAlzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSAmYW1wO3J0d2Rldi0mZ3Q7YnRjOwotCXN0cnVjdCBydHc4OV9idGNfYnRfYTJkcF9kZXNjICphMmRwID0gJmFtcDtidGMtJmd0O2N4LmJ0LmxpbmtfaW5mby5hMmRwX2Rlc2M7CiYjNDM7CXN0cnVjdCBydHc4OV9idGNfYnRfYTJkcF9kZXNjICphMmRwID0gJmFtcDtidGMtJmd0O2N4LmJ0MC5saW5rX2luZm8uYTJkcF9kZXNjOwogCXN0cnVjdCBydHc4OV9idGNfYnRmX2Z3aW5mbyAqcGZ3aW5mbyA9ICZhbXA7YnRjLSZndDtmd2luZm87CiAJc3RydWN0IHJ0dzg5X2J0Y19kbSAqZG0gPSAmYW1wO2J0Yy0mZ3Q7ZG07CiAJc3RydWN0IHJ0dzg5X2J0Y19mYnRjX2EyZHBfdHJ4X3N0YXQgKmEyZHBfdHJ4OwpAQCAtMTAwODAsNyAmIzQzOzEwMjQzLDcgQEAgc3RhdGljIGludCBfc2hvd19mYnRjX2N5c3RhX3YzKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY2hhciAqYnVmLCBzaXplX3QgYnVmc3oKIHN0YXRpYyBpbnQgX3Nob3dfZmJ0Y19jeXN0YV92NChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnN6KQogewogCXN0cnVjdCBydHc4OV9idGMgKmJ0YyA9ICZhbXA7cnR3ZGV2LSZndDtidGM7Ci0Jc3RydWN0IHJ0dzg5X2J0Y19idF9hMmRwX2Rlc2MgKmEyZHAgPSAmYW1wO2J0Yy0mZ3Q7Y3guYnQubGlua19pbmZvLmEyZHBfZGVzYzsKJiM0MzsJc3RydWN0IHJ0dzg5X2J0Y19idF9hMmRwX2Rlc2MgKmEyZHAgPSAmYW1wO2J0Yy0mZ3Q7Y3guYnQwLmxpbmtfaW5mby5hMmRwX2Rlc2M7CiAJc3RydWN0IHJ0dzg5X2J0Y19idGZfZndpbmZvICpwZndpbmZvID0gJmFtcDtidGMtJmd0O2Z3aW5mbzsKIAlzdHJ1Y3QgcnR3ODlfYnRjX2RtICpkbSA9ICZhbXA7YnRjLSZndDtkbTsKIAlzdHJ1Y3QgcnR3ODlfYnRjX2ZidGNfYTJkcF90cnhfc3RhdF92NCAqYTJkcF90cng7CkBAIC0xMDIxOSw3ICYjNDM7MTAzODIsNyBAQCBzdGF0aWMgaW50IF9zaG93X2ZidGNfY3lzdGFfdjQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBjaGFyICpidWYsIHNpemVfdCBidWZzegogc3RhdGljIGludCBfc2hvd19mYnRjX2N5c3RhX3Y1KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY2hhciAqYnVmLCBzaXplX3QgYnVmc3opCiB7CiAJc3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gJmFtcDtydHdkZXYtJmd0O2J0YzsKLQlzdHJ1Y3QgcnR3ODlfYnRjX2J0X2EyZHBfZGVzYyAqYTJkcCA9ICZhbXA7YnRjLSZndDtjeC5idC5saW5rX2luZm8uYTJkcF9kZXNjOwomIzQzOwlzdHJ1Y3QgcnR3ODlfYnRjX2J0X2EyZHBfZGVzYyAqYTJkcCA9ICZhbXA7YnRjLSZndDtjeC5idDAubGlua19pbmZvLmEyZHBfZGVzYzsKIAlzdHJ1Y3QgcnR3ODlfYnRjX2J0Zl9md2luZm8gKnBmd2luZm8gPSAmYW1wO2J0Yy0mZ3Q7ZndpbmZvOwogCXN0cnVjdCBydHc4OV9idGNfZG0gKmRtID0gJmFtcDtidGMtJmd0O2RtOwogCXN0cnVjdCBydHc4OV9idGNfZmJ0Y19hMmRwX3RyeF9zdGF0X3Y0ICphMmRwX3RyeDsKQEAgLTEwMzU2LDcgJiM0MzsxMDUxOSw3IEBAIHN0YXRpYyBpbnQgX3Nob3dfZmJ0Y19jeXN0YV92NShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnN6CiAKIHN0YXRpYyBpbnQgX3Nob3dfZmJ0Y19jeXN0YV92NyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnN6KQogewotCXN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSAmYW1wO3J0d2Rldi0mZ3Q7YnRjLmN4LmJ0OwomIzQzOwlzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gJmFtcDtydHdkZXYtJmd0O2J0Yy5jeC5idDA7CiAJc3RydWN0IHJ0dzg5X2J0Y19idF9hMmRwX2Rlc2MgKmEyZHAgPSAmYW1wO2J0LSZndDtsaW5rX2luZm8uYTJkcF9kZXNjOwogCXN0cnVjdCBydHc4OV9idGNfYnRmX2Z3aW5mbyAqcGZ3aW5mbyA9ICZhbXA7cnR3ZGV2LSZndDtidGMuZndpbmZvOwogCXN0cnVjdCBydHc4OV9idGNfZmJ0Y19jeXN0YV92NyAqcGN5c3RhID0gTlVMTDsKQEAgLTEwODUzLDkgJiM0MzsxMTAxNiw4IEBAIHN0YXRpYyBpbnQgX3Nob3dfbXJlZ192MShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnN6KQogCXN0cnVjdCBydHc4OV9idGNfYnRmX2Z3aW5mbyAqcGZ3aW5mbyA9ICZhbXA7YnRjLSZndDtmd2luZm87CiAJc3RydWN0IHJ0dzg5X2J0Y19ycHRfY21uX2luZm8gKnBjaW5mbyA9IE5VTEw7CiAJc3RydWN0IHJ0dzg5X2J0Y19mYnRjX21yZWdfdmFsX3YxICpwbXJlZyA9IE5VTEw7Ci0Jc3RydWN0IHJ0dzg5X2J0Y19jeCAqY3ggPSAmYW1wO2J0Yy0mZ3Q7Y3g7CiAJc3RydWN0IHJ0dzg5X2J0Y193bF9pbmZvICp3bCA9ICZhbXA7YnRjLSZndDtjeC53bDsKLQlzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gJmFtcDtidGMtJmd0O2N4LmJ0OwomIzQzOwlzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gJmFtcDtidGMtJmd0O2N4LmJ0MDsKIAlzdHJ1Y3QgcnR3ODlfbWFjX2F4X2NvZXhfZ250IGdudF9jZmcgPSB7fTsKIAlzdHJ1Y3QgcnR3ODlfbWFjX2F4X2dudCBnbnQ7CiAJY2hhciAqcCA9IGJ1ZiwgKmVuZCA9IGJ1ZiAmIzQzOyBidWZzejsKQEAgLTEwODcwLDkgJiM0MzsxMTAzMiw5IEBAIHN0YXRpYyBpbnQgX3Nob3dfbXJlZ192MShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnN6KQogCXAgJiM0Mzs9IHNjbnByaW50ZihwLCBlbmQgLSBwLAogCQkgICAgICAgJiMzNDsgJS0xNXMgOiBXTC0mZ3Q7QlQ6MHglMDh4KGNudDolZCksIEJULSZndDtXTDoweCUwOHgodG90YWw6JWQsIGJ0X3VwZGF0ZTolZClcbiYjMzQ7LAogCQkgICAgICAgJiMzNDtbc2NvcmVib2FyZF0mIzM0Oywgd2wtJmd0O3NjYmQsCi0JCSAgICAgICBjeC0mZ3Q7Y250X3dsW0JUQ19XQ05UX1NDQkRVUERBVEVdLAotCQkgICAgICAgYnQtJmd0O3NjYmQsIGN4LSZndDtjbnRfYnRbQlRDX0JDTlRfU0NCRFJFQURdLAotCQkgICAgICAgY3gtJmd0O2NudF9idFtCVENfQkNOVF9TQ0JEVVBEQVRFXSk7CiYjNDM7CQkgICAgICAgd2wtJmd0O3djbnRbQlRDX1dDTlRfU0NCRFVQREFURV0sCiYjNDM7CQkgICAgICAgYnQtJmd0O3NjYmQsIGJ0LSZndDtiY250W0JUQ19CQ05UX1NDQkRSRUFEXSwKJiM0MzsJCSAgICAgICBidC0mZ3Q7YmNudFtCVENfQkNOVF9TQ0JEVVBEQVRFXSk7CiAKIAlidGMtJmd0O2RtLnB0YV9vd25lciA9IHJ0dzg5X21hY19nZXRfY3RybF9wYXRoKHJ0d2Rldik7CiAJX2dldF9nbnQocnR3ZGV2LCAmYW1wO2dudF9jZmcpOwpAQCAtMTA5MzgsOSAmIzQzOzExMTAwLDggQEAgc3RhdGljIGludCBfc2hvd19tcmVnX3YyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY2hhciAqYnVmLCBzaXplX3QgYnVmc3opCiAJc3RydWN0IHJ0dzg5X2J0Y19idGZfZndpbmZvICpwZndpbmZvID0gJmFtcDtidGMtJmd0O2Z3aW5mbzsKIAlzdHJ1Y3QgcnR3ODlfYnRjX3JwdF9jbW5faW5mbyAqcGNpbmZvID0gTlVMTDsKIAlzdHJ1Y3QgcnR3ODlfYnRjX2ZidGNfbXJlZ192YWxfdjIgKnBtcmVnID0gTlVMTDsKLQlzdHJ1Y3QgcnR3ODlfYnRjX2N4ICpjeCA9ICZhbXA7YnRjLSZndDtjeDsKIAlzdHJ1Y3QgcnR3ODlfYnRjX3dsX2luZm8gKndsID0gJmFtcDtidGMtJmd0O2N4LndsOwotCXN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSAmYW1wO2J0Yy0mZ3Q7Y3guYnQ7CiYjNDM7CXN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSAmYW1wO2J0Yy0mZ3Q7Y3guYnQwOwogCXN0cnVjdCBydHc4OV9tYWNfYXhfY29leF9nbnQgZ250X2NmZyA9IHt9OwogCXN0cnVjdCBydHc4OV9tYWNfYXhfZ250IGdudDsKIAljaGFyICpwID0gYnVmLCAqZW5kID0gYnVmICYjNDM7IGJ1ZnN6OwpAQCAtMTA5NTUsOSAmIzQzOzExMTE2LDkgQEAgc3RhdGljIGludCBfc2hvd19tcmVnX3YyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY2hhciAqYnVmLCBzaXplX3QgYnVmc3opCiAJcCAmIzQzOz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsCiAJCSAgICAgICAmIzM0OyAlLTE1cyA6IFdMLSZndDtCVDoweCUwOHgoY250OiVkKSwgQlQtJmd0O1dMOjB4JTA4eCh0b3RhbDolZCwgYnRfdXBkYXRlOiVkKVxuJiMzNDssCiAJCSAgICAgICAmIzM0O1tzY29yZWJvYXJkXSYjMzQ7LCB3bC0mZ3Q7c2NiZCwKLQkJICAgICAgIGN4LSZndDtjbnRfd2xbQlRDX1dDTlRfU0NCRFVQREFURV0sCi0JCSAgICAgICBidC0mZ3Q7c2NiZCwgY3gtJmd0O2NudF9idFtCVENfQkNOVF9TQ0JEUkVBRF0sCi0JCSAgICAgICBjeC0mZ3Q7Y250X2J0W0JUQ19CQ05UX1NDQkRVUERBVEVdKTsKJiM0MzsJCSAgICAgICB3bC0mZ3Q7d2NudFtCVENfV0NOVF9TQ0JEVVBEQVRFXSwKJiM0MzsJCSAgICAgICBidC0mZ3Q7c2NiZCwgYnQtJmd0O2JjbnRbQlRDX0JDTlRfU0NCRFJFQURdLAomIzQzOwkJICAgICAgIGJ0LSZndDtiY250W0JUQ19CQ05UX1NDQkRVUERBVEVdKTsKIAogCWJ0Yy0mZ3Q7ZG0ucHRhX293bmVyID0gcnR3ODlfbWFjX2dldF9jdHJsX3BhdGgocnR3ZGV2KTsKIAlfZ2V0X2dudChydHdkZXYsICZhbXA7Z250X2NmZyk7CkBAIC0xMTAyNSw3ICYjNDM7MTExODYsNyBAQCBzdGF0aWMgaW50IF9zaG93X21yZWdfdjcoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBjaGFyICpidWYsIHNpemVfdCBidWZzeikKIAlzdHJ1Y3QgcnR3ODlfYnRjX3JwdF9jbW5faW5mbyAqcGNpbmZvID0gTlVMTDsKIAlzdHJ1Y3QgcnR3ODlfYnRjX2N4ICpjeCA9ICZhbXA7YnRjLSZndDtjeDsKIAlzdHJ1Y3QgcnR3ODlfYnRjX3dsX2luZm8gKndsID0gJmFtcDtjeC0mZ3Q7d2w7Ci0Jc3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9ICZhbXA7Y3gtJmd0O2J0OwomIzQzOwlzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gJmFtcDtjeC0mZ3Q7YnQwOwogCXN0cnVjdCBydHc4OV9tYWNfYXhfZ250ICpnbnQgPSBOVUxMOwogCXN0cnVjdCBydHc4OV9idGNfZG0gKmRtID0gJmFtcDtidGMtJmd0O2RtOwogCWNoYXIgKnAgPSBidWYsICplbmQgPSBidWYgJiM0MzsgYnVmc3o7CkBAIC0xMTA0MCw5ICYjNDM7MTEyMDEsOSBAQCBzdGF0aWMgaW50IF9zaG93X21yZWdfdjcoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBjaGFyICpidWYsIHNpemVfdCBidWZzeikKIAlwICYjNDM7PSBzY25wcmludGYocCwgZW5kIC0gcCwKIAkJICAgICAgICYjMzQ7XG5cciAlLTE1cyA6IFdMLSZndDtCVDoweCUwOHgoY250OiVkKSwgQlQtJmd0O1dMOjB4JTA4eCh0b3RhbDolZCwgYnRfdXBkYXRlOiVkKSYjMzQ7LAogCQkgICAgICAgJiMzNDtbc2NvcmVib2FyZF0mIzM0Oywgd2wtJmd0O3NjYmQsCi0JCSAgICAgICBjeC0mZ3Q7Y250X3dsW0JUQ19XQ05UX1NDQkRVUERBVEVdLAotCQkgICAgICAgYnQtJmd0O3NjYmQsIGN4LSZndDtjbnRfYnRbQlRDX0JDTlRfU0NCRFJFQURdLAotCQkgICAgICAgY3gtJmd0O2NudF9idFtCVENfQkNOVF9TQ0JEVVBEQVRFXSk7CiYjNDM7CQkgICAgICAgd2wtJmd0O3djbnRbQlRDX1dDTlRfU0NCRFVQREFURV0sCiYjNDM7CQkgICAgICAgYnQtJmd0O3NjYmQsIGJ0LSZndDtiY250W0JUQ19CQ05UX1NDQkRSRUFEXSwKJiM0MzsJCSAgICAgICBidC0mZ3Q7YmNudFtCVENfQkNOVF9TQ0JEVVBEQVRFXSk7CiAKIAkvKiBUbyBhdm9pZCBJL08gaWYgV0wgTFBTIG9yIHBvd2VyLW9mZiAgKi8KIAlkbS0mZ3Q7cHRhX293bmVyID0gcnR3ODlfbWFjX2dldF9jdHJsX3BhdGgocnR3ZGV2KTsKQEAgLTExMTAzLDcgJiM0MzsxMTI2NCw3IEBAIHN0YXRpYyBpbnQgX3Nob3dfc3VtbWFyeV92MShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnN6KQogCXN0cnVjdCBydHc4OV9idGNfY3ggKmN4ID0gJmFtcDtidGMtJmd0O2N4OwogCXN0cnVjdCBydHc4OV9idGNfZG0gKmRtID0gJmFtcDtidGMtJmd0O2RtOwogCXN0cnVjdCBydHc4OV9idGNfd2xfaW5mbyAqd2wgPSAmYW1wO2N4LSZndDt3bDsKLQlzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gJmFtcDtjeC0mZ3Q7YnQ7CiYjNDM7CXN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSAmYW1wO2N4LSZndDtidDA7CiAJdTMyIGNudF9zdW0gPSAwLCAqY250ID0gYnRjLSZndDtkbS5jbnRfbm90aWZ5OwogCWNoYXIgKnAgPSBidWYsICplbmQgPSBidWYgJiM0MzsgYnVmc3o7CiAJdTggaTsKQEAgLTExMTQ2LDEwICYjNDM7MTEzMDcsMTAgQEAgc3RhdGljIGludCBfc2hvd19zdW1tYXJ5X3YxKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY2hhciAqYnVmLCBzaXplX3QgYnVmc3opCiAKIAkJcCAmIzQzOz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsCiAJCQkgICAgICAgJiMzNDsgJS0xNXMgOiB3bF9yZmtbcmVxOiVkL2dvOiVkL3JlamVjdDolZC90aW1lb3V0OiVkXSYjMzQ7LAotCQkJICAgICAgICYjMzQ7W1JGS10mIzM0OywgY3gtJmd0O2NudF93bFtCVENfV0NOVF9SRktfUkVRXSwKLQkJCSAgICAgICBjeC0mZ3Q7Y250X3dsW0JUQ19XQ05UX1JGS19HT10sCi0JCQkgICAgICAgY3gtJmd0O2NudF93bFtCVENfV0NOVF9SRktfUkVKRUNUXSwKLQkJCSAgICAgICBjeC0mZ3Q7Y250X3dsW0JUQ19XQ05UX1JGS19USU1FT1VUXSk7CiYjNDM7CQkJICAgICAgICYjMzQ7W1JGS10mIzM0Oywgd2wtJmd0O3djbnRbQlRDX1dDTlRfUkZLX1JFUV0sCiYjNDM7CQkJICAgICAgIHdsLSZndDt3Y250W0JUQ19XQ05UX1JGS19HT10sCiYjNDM7CQkJICAgICAgIHdsLSZndDt3Y250W0JUQ19XQ05UX1JGS19SRUpFQ1RdLAomIzQzOwkJCSAgICAgICB3bC0mZ3Q7d2NudFtCVENfV0NOVF9SRktfVElNRU9VVF0pOwogCiAJCXAgJiM0Mzs9IHNjbnByaW50ZihwLCBlbmQgLSBwLAogCQkJICAgICAgICYjMzQ7LCBidF9yZmtbcmVxOiVkL2dvOiVkL3JlamVjdDolZC90aW1lb3V0OiVkL2ZhaWw6JWRdXG4mIzM0OywKQEAgLTExMjEyLDcgJiM0MzsxMTM3Myw3IEBAIHN0YXRpYyBpbnQgX3Nob3dfc3VtbWFyeV92NChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnN6KQogCXN0cnVjdCBydHc4OV9idGNfY3ggKmN4ID0gJmFtcDtidGMtJmd0O2N4OwogCXN0cnVjdCBydHc4OV9idGNfZG0gKmRtID0gJmFtcDtidGMtJmd0O2RtOwogCXN0cnVjdCBydHc4OV9idGNfd2xfaW5mbyAqd2wgPSAmYW1wO2N4LSZndDt3bDsKLQlzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gJmFtcDtjeC0mZ3Q7YnQ7CiYjNDM7CXN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSAmYW1wO2N4LSZndDtidDA7CiAJdTMyIGNudF9zdW0gPSAwLCAqY250ID0gYnRjLSZndDtkbS5jbnRfbm90aWZ5OwogCWNoYXIgKnAgPSBidWYsICplbmQgPSBidWYgJiM0MzsgYnVmc3o7CiAJdTggaTsKQEAgLTExMjYxLDEwICYjNDM7MTE0MjIsMTAgQEAgc3RhdGljIGludCBfc2hvd19zdW1tYXJ5X3Y0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY2hhciAqYnVmLCBzaXplX3QgYnVmc3opCiAKIAkJcCAmIzQzOz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsCiAJCQkgICAgICAgJiMzNDsgJS0xNXMgOiB3bF9yZmtbcmVxOiVkL2dvOiVkL3JlamVjdDolZC90aW1lb3V0OiVkXSYjMzQ7LAotCQkJICAgICAgICYjMzQ7W1JGS10mIzM0OywgY3gtJmd0O2NudF93bFtCVENfV0NOVF9SRktfUkVRXSwKLQkJCSAgICAgICBjeC0mZ3Q7Y250X3dsW0JUQ19XQ05UX1JGS19HT10sCi0JCQkgICAgICAgY3gtJmd0O2NudF93bFtCVENfV0NOVF9SRktfUkVKRUNUXSwKLQkJCSAgICAgICBjeC0mZ3Q7Y250X3dsW0JUQ19XQ05UX1JGS19USU1FT1VUXSk7CiYjNDM7CQkJICAgICAgICYjMzQ7W1JGS10mIzM0Oywgd2wtJmd0O3djbnRbQlRDX1dDTlRfUkZLX1JFUV0sCiYjNDM7CQkJICAgICAgIHdsLSZndDt3Y250W0JUQ19XQ05UX1JGS19HT10sCiYjNDM7CQkJICAgICAgIHdsLSZndDt3Y250W0JUQ19XQ05UX1JGS19SRUpFQ1RdLAomIzQzOwkJCSAgICAgICB3bC0mZ3Q7d2NudFtCVENfV0NOVF9SRktfVElNRU9VVF0pOwogCiAJCXAgJiM0Mzs9IHNjbnByaW50ZihwLCBlbmQgLSBwLAogCQkJICAgICAgICYjMzQ7LCBidF9yZmtbcmVxOiVkL2dvOiVkL3JlamVjdDolZC90aW1lb3V0OiVkL2ZhaWw6JWRdXG4mIzM0OywKQEAgLTExMzc1LDEwICYjNDM7MTE1MzYsMTAgQEAgc3RhdGljIGludCBfc2hvd19zdW1tYXJ5X3Y1KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY2hhciAqYnVmLCBzaXplX3QgYnVmc3opCiAKIAkJcCAmIzQzOz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsCiAJCQkgICAgICAgJiMzNDsgJS0xNXMgOiB3bF9yZmtbcmVxOiVkL2dvOiVkL3JlamVjdDolZC90b3V0OiVkXSYjMzQ7LAotCQkJICAgICAgICYjMzQ7W1JGSy9MUFNdJiMzNDssIGN4LSZndDtjbnRfd2xbQlRDX1dDTlRfUkZLX1JFUV0sCi0JCQkgICAgICAgY3gtJmd0O2NudF93bFtCVENfV0NOVF9SRktfR09dLAotCQkJICAgICAgIGN4LSZndDtjbnRfd2xbQlRDX1dDTlRfUkZLX1JFSkVDVF0sCi0JCQkgICAgICAgY3gtJmd0O2NudF93bFtCVENfV0NOVF9SRktfVElNRU9VVF0pOwomIzQzOwkJCSAgICAgICAmIzM0O1tSRksvTFBTXSYjMzQ7LCB3bC0mZ3Q7d2NudFtCVENfV0NOVF9SRktfUkVRXSwKJiM0MzsJCQkgICAgICAgd2wtJmd0O3djbnRbQlRDX1dDTlRfUkZLX0dPXSwKJiM0MzsJCQkgICAgICAgd2wtJmd0O3djbnRbQlRDX1dDTlRfUkZLX1JFSkVDVF0sCiYjNDM7CQkJICAgICAgIHdsLSZndDt3Y250W0JUQ19XQ05UX1JGS19USU1FT1VUXSk7CiAKIAkJcCAmIzQzOz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsCiAJCQkgICAgICAgJiMzNDssIGJ0X3Jma1tyZXE6JWRdJiMzNDssCkBAIC0xMTQ5NiwxMCAmIzQzOzExNjU3LDEwIEBAIHN0YXRpYyBpbnQgX3Nob3dfc3VtbWFyeV92MTA1KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY2hhciAqYnVmLCBzaXplX3QgYnVmc3opCiAKIAkJcCAmIzQzOz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsCiAJCQkgICAgICAgJiMzNDsgJS0xNXMgOiB3bF9yZmtbcmVxOiVkL2dvOiVkL3JlamVjdDolZC90b3V0OiVkXSYjMzQ7LAotCQkJICAgICAgICYjMzQ7W1JGSy9MUFNdJiMzNDssIGN4LSZndDtjbnRfd2xbQlRDX1dDTlRfUkZLX1JFUV0sCi0JCQkgICAgICAgY3gtJmd0O2NudF93bFtCVENfV0NOVF9SRktfR09dLAotCQkJICAgICAgIGN4LSZndDtjbnRfd2xbQlRDX1dDTlRfUkZLX1JFSkVDVF0sCi0JCQkgICAgICAgY3gtJmd0O2NudF93bFtCVENfV0NOVF9SRktfVElNRU9VVF0pOwomIzQzOwkJCSAgICAgICAmIzM0O1tSRksvTFBTXSYjMzQ7LCB3bC0mZ3Q7d2NudFtCVENfV0NOVF9SRktfUkVRXSwKJiM0MzsJCQkgICAgICAgd2wtJmd0O3djbnRbQlRDX1dDTlRfUkZLX0dPXSwKJiM0MzsJCQkgICAgICAgd2wtJmd0O3djbnRbQlRDX1dDTlRfUkZLX1JFSkVDVF0sCiYjNDM7CQkJICAgICAgIHdsLSZndDt3Y250W0JUQ19XQ05UX1JGS19USU1FT1VUXSk7CiAKIAkJcCAmIzQzOz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsCiAJCQkgICAgICAgJiMzNDssIGJ0X3Jma1tyZXE6JWRdJiMzNDssCkBAIC0xMTYyMSwxMCAmIzQzOzExNzgyLDEwIEBAIHN0YXRpYyBpbnQgX3Nob3dfc3VtbWFyeV92NyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnN6KQogCiAJCXAgJiM0Mzs9IHNjbnByaW50ZihwLCBlbmQgLSBwLAogCQkJICAgICAgICYjMzQ7XG5cciAlLTE1cyA6IHdsX3Jma1tyZXE6JWQvZ286JWQvcmVqZWN0OiVkL3RvdXQ6JWQvdGltZTolZG1zXSYjMzQ7LAotCQkJICAgICAgICYjMzQ7W1JGSy9MUFNdJiMzNDssIGN4LSZndDtjbnRfd2xbQlRDX1dDTlRfUkZLX1JFUV0sCi0JCQkgICAgICAgY3gtJmd0O2NudF93bFtCVENfV0NOVF9SRktfR09dLAotCQkJICAgICAgIGN4LSZndDtjbnRfd2xbQlRDX1dDTlRfUkZLX1JFSkVDVF0sCi0JCQkgICAgICAgY3gtJmd0O2NudF93bFtCVENfV0NOVF9SRktfVElNRU9VVF0sCiYjNDM7CQkJICAgICAgICYjMzQ7W1JGSy9MUFNdJiMzNDssIHdsLSZndDt3Y250W0JUQ19XQ05UX1JGS19SRVFdLAomIzQzOwkJCSAgICAgICB3bC0mZ3Q7d2NudFtCVENfV0NOVF9SRktfR09dLAomIzQzOwkJCSAgICAgICB3bC0mZ3Q7d2NudFtCVENfV0NOVF9SRktfUkVKRUNUXSwKJiM0MzsJCQkgICAgICAgd2wtJmd0O3djbnRbQlRDX1dDTlRfUkZLX1RJTUVPVVRdLAogCQkJICAgICAgIHdsLSZndDtyZmtfaW5mby5wcm9jX3RpbWUpOwogCiAJCXAgJiM0Mzs9IHNjbnByaW50ZihwLCBlbmQgLSBwLCAmIzM0OywgYnRfcmZrW3JlcTolZF0mIzM0OywKQEAgLTExNzM0LDEwICYjNDM7MTE4OTUsMTAgQEAgc3RhdGljIGludCBfc2hvd19zdW1tYXJ5X3Y4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY2hhciAqYnVmLCBzaXplX3QgYnVmc3opCiAKIAkJcCAmIzQzOz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsCiAJCQkgICAgICAgJiMzNDtcblxyICUtMTVzIDogd2xfcmZrW3JlcTolZC9nbzolZC9yZWplY3Q6JWQvdG91dDolZC90aW1lOiVkbXNdJiMzNDssCi0JCQkgICAgICAgJiMzNDtbUkZLL0xQU10mIzM0OywgY3gtJmd0O2NudF93bFtCVENfV0NOVF9SRktfUkVRXSwKLQkJCSAgICAgICBjeC0mZ3Q7Y250X3dsW0JUQ19XQ05UX1JGS19HT10sCi0JCQkgICAgICAgY3gtJmd0O2NudF93bFtCVENfV0NOVF9SRktfUkVKRUNUXSwKLQkJCSAgICAgICBjeC0mZ3Q7Y250X3dsW0JUQ19XQ05UX1JGS19USU1FT1VUXSwKJiM0MzsJCQkgICAgICAgJiMzNDtbUkZLL0xQU10mIzM0Oywgd2wtJmd0O3djbnRbQlRDX1dDTlRfUkZLX1JFUV0sCiYjNDM7CQkJICAgICAgIHdsLSZndDt3Y250W0JUQ19XQ05UX1JGS19HT10sCiYjNDM7CQkJICAgICAgIHdsLSZndDt3Y250W0JUQ19XQ05UX1JGS19SRUpFQ1RdLAomIzQzOwkJCSAgICAgICB3bC0mZ3Q7d2NudFtCVENfV0NOVF9SRktfVElNRU9VVF0sCiAJCQkgICAgICAgd2wtJmd0O3Jma19pbmZvLnByb2NfdGltZSk7CiAKIAkJcCAmIzQzOz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsICYjMzQ7LCBidF9yZmtbcmVxOiVkXSYjMzQ7LApAQCAtMTE4ODYsNyAmIzQzOzEyMDQ3LDcgQEAgdm9pZCBydHc4OV9jb2V4X3JlY29nbml6ZV92ZXIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KQogCiB2b2lkIHJ0dzg5X2J0Y19udGZ5X3ByZXNlcnZlX2J0X3RpbWUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgbXMpCiB7Ci0Jc3RydWN0IHJ0dzg5X2J0Y19idF9saW5rX2luZm8gKmJ0X2xpbmZvID0gJmFtcDtydHdkZXYtJmd0O2J0Yy5jeC5idC5saW5rX2luZm87CiYjNDM7CXN0cnVjdCBydHc4OV9idGNfYnRfbGlua19pbmZvICpidF9saW5mbyA9ICZhbXA7cnR3ZGV2LSZndDtidGMuY3guYnQwLmxpbmtfaW5mbzsKIAlzdHJ1Y3QgcnR3ODlfYnRjX2J0X2EyZHBfZGVzYyBhMmRwID0gYnRfbGluZm8tJmd0O2EyZHBfZGVzYzsKIAogCWlmICh0ZXN0X2JpdChSVFc4OV9GTEFHX1NFUl9IQU5ETElORywgcnR3ZGV2LSZndDtmbGFncykpCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5oCmluZGV4IGVhMmMxZTVkNzBmNTE4Li42YWMxNDYxMTYwN2M5NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmgKQEAgLTMyOSw3ICYjNDM7MzI5LDcgQEAgc3RhdGljIGlubGluZSB1MTYgcnR3ODlfY29leF9xdWVyeV9idF9yZXFfbGVuKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwKIHsKIAlzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSAmYW1wO3J0d2Rldi0mZ3Q7YnRjOwogCi0JcmV0dXJuIGJ0Yy0mZ3Q7YnRfcmVxX2xlbjsKJiM0MzsJcmV0dXJuIGJ0Yy0mZ3Q7YnRfcmVxX2xlbltwaHlfaWR4XTsKIH0KIAogc3RhdGljIGlubGluZSB1MzIgcnR3ODlfZ2V0X2FudHBhdGhfdHlwZSh1OCBwaHlfbWFwLCB1OCB0eXBlKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaAppbmRleCA1NTQ3ODg4ZDdlNjdhNC4uNjk0N2Y0YzJjMjVkOGIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oCkBAIC0xNDQ1LDYgJiM0MzsxNDQ1LDEyIEBAIGVudW0gcnR3ODlfYnRjX2J0X3N0YXRlX2NudCB7CiAJQlRDX0JDTlRfTlVNLAogfTsKIAomIzQzO2VudW0gcnR3ODlfYnRjX2J0X3JmX2JhbmQgewomIzQzOwlCVENfQlRfQjJHID0gMHgwLCAvKiAyLjRHSHogKi8KJiM0MzsJQlRDX0JUX0I1RyA9IDB4MSwgLyogNUdIeiBvciA2R0h6ICovCiYjNDM7CUJUQ19CVF9CTUFYID0gMHgyCiYjNDM7fTsKJiM0MzsKIGVudW0gcnR3ODlfYnRjX2J0X3Byb2ZpbGUgewogCUJUQ19CVF9OT1BST0ZJTEUgPSAwLAogCUJUQ19CVF9IRlAgPSBCSVQoMCksCkBAIC0xOTc1LDEwICYjNDM7MTk4MSwyNSBAQCBzdHJ1Y3QgcnR3ODlfYnRjX2J0X2xpbmtfaW5mbyB7CiAJdTMyIHJzdmQ6IDE5OwogfTsKIAotc3RydWN0IHJ0dzg5X2J0Y18zcmRjeF9pbmZvIHsKLQl1OCB0eXBlOyAgIC8qIDA6IG5vbmUsIDE6emlnYmVlLCAyOkxURSAgKi8KLQl1OCBod19jb2V4OwotCXUxNiByc3ZkOwomIzQzO3N0cnVjdCBydHc4OV9idGNfZXh0c29jX2luZm8gewomIzQzOwl1OCBjaGlwX2lkOwomIzQzOwl1OCBtYXhfdHhfcHdyOwomIzQzOwl1OCByZl9iYW5kX21hcDsKJiM0MzsJdTggYW50X2lzb190b193bDsKJiM0MzsKJiM0MzsJdTggbGlua193ZWlnaHRbQlRDX0JUX0JNQVhdOwomIzQzOwomIzQzOwl1OCBmdW5jX3R5cGU7IC8qIDA6IG5vbmUsIDE6emlnYmVlLCAyOkxURSAqLwomIzQzOwl1OCBod19jb2V4OyAvKiBIYXJkLVdpcmUgY29leCBpbnRlcmZhY2Ugc3VwcG9ydCAqLwomIzQzOwl1OCBwdGFfdHlwZTsgLyogMDogUlRLIDQtd2lyZSBtb2RlLCAxOiAzLXdpcmUgbW9kZSAqLwomIzQzOwl1OCBwdGFfcmVxX2V4aXN0OwomIzQzOwomIzQzOwl1MzIgaHB0YV9jZmc7CiYjNDM7CXUzMiBobWJ4X2NmZzsKJiM0MzsJdTMyIHN3b3V0X2NmZzsKJiM0MzsJdTMyIHN3aW5fY2ZnOwomIzQzOwl1MzIgcHJvZmlsZV9tYXBbQlRDX0JUX0JNQVhdOwomIzQzOwl1MzIgYmNudFtCVENfQkNOVF9OVU1dOwogfTsKIAogc3RydWN0IHJ0dzg5X2J0Y19kbV9lbWFwIHsKQEAgLTIwNzgsNiAmIzQzOzIwOTksNyBAQCBzdHJ1Y3QgcnR3ODlfYnRjX3dsX2luZm8gewogCWJvb2wgbGlua19tb2RlX2NoZzsKIAlib29sIGRiY2NfY2hnOwogCXUzMiBzY2JkOwomIzQzOwl1MzIgd2NudFtCVENfV0NOVF9OVU1dOwogfTsKIAogc3RydWN0IHJ0dzg5X2J0Y19tb2R1bGUgewpAQCAtMjI0OSw2ICYjNDM7MjI3MSwxNiBAQCBzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gewogCXUzMiBzY2FuX2luZm9fdXBkYXRlOiAxOwogCXUzMiBsbmFfY29uc3RyYWluOiAzOwogCXUzMiByc3ZkOiAxNzsKJiM0MzsKJiM0MzsJdTMyIGJjbnRbQlRDX0JDTlRfTlVNXTsKJiM0Mzt9OwomIzQzOwomIzQzOyNkZWZpbmUgUlRXODlfQlRDX1dMX0RFRl9UWF9QV1IgR0VOTUFTSyg3LCAwKQomIzQzO3N0cnVjdCBydHc4OV9idGNfcmZfdHJ4X3BhcmFfdjAgewomIzQzOwl1MzIgd2xfdHhfcG93ZXI7IC8qIGFic29sdXRlIFR4IHBvd2VyIChkQm0pLCAweGZmLSZndDsgbm8gQlRDIGNvbnRyb2wgKi8KJiM0MzsJdTMyIHdsX3J4X2dhaW47ICAvKiByeCBnYWluIHRhYmxlIGluZGV4IChUQkQuKSAqLwomIzQzOwl1OCBidF90eF9wb3dlcjsgLyogZGVjcmVhc2UgVHggcG93ZXIgKGRCKSAqLwomIzQzOwl1OCBidF9yeF9nYWluOyAgLyogTE5BIGNvbnN0cmFpbiBsZXZlbCAqLwogfTsKIAogc3RydWN0IHJ0dzg5X2J0Y19yZl90cnhfcGFyYV92OSB7CkBAIC0yMjYyLDExICYjNDM7MjI5NCwxMSBAQCBzdHJ1Y3QgcnR3ODlfYnRjX3JmX3RyeF9wYXJhX3Y5IHsKIAogc3RydWN0IHJ0dzg5X2J0Y19jeCB7CiAJc3RydWN0IHJ0dzg5X2J0Y193bF9pbmZvIHdsOwotCXN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyBidDsKLQlzdHJ1Y3QgcnR3ODlfYnRjXzNyZGN4X2luZm8gb3RoZXI7CiYjNDM7CXN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyBidDA7CiYjNDM7CXN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyBidDE7CiYjNDM7CXN0cnVjdCBydHc4OV9idGNfZXh0c29jX2luZm8gYnRfZXh0OwomIzQzOwlzdHJ1Y3QgcnR3ODlfYnRjX3JmX3RyeF9wYXJhX3Y5IHJmX3BhcmE7CiAJdTMyIHN0YXRlX21hcDsKLQl1MzIgY250X2J0W0JUQ19CQ05UX05VTV07Ci0JdTMyIGNudF93bFtCVENfV0NOVF9OVU1dOwogfTsKIAogc3RydWN0IHJ0dzg5X2J0Y19mYnRjX3RkbWEgewpAQCAtMzA0NSwyNCAmIzQzOzMwNzcsMTggQEAgc3RydWN0IHJ0dzg5X2J0Y19mYnRjX2J0ZGV2aW5mbyB7CiAJX19sZTMyIGZsdXNoX3RpbWU7CiB9IF9fcGFja2VkOwogCi0jZGVmaW5lIFJUVzg5X0JUQ19XTF9ERUZfVFhfUFdSIEdFTk1BU0soNywgMCkKLXN0cnVjdCBydHc4OV9idGNfcmZfdHJ4X3BhcmEgewotCXUzMiB3bF90eF9wb3dlcjsgLyogYWJzb2x1dGUgVHggcG93ZXIgKGRCbSksIDB4ZmYtJmd0OyBubyBCVEMgY29udHJvbCAqLwotCXUzMiB3bF9yeF9nYWluOyAgLyogcnggZ2FpbiB0YWJsZSBpbmRleCAoVEJELikgKi8KLQl1OCBidF90eF9wb3dlcjsgLyogZGVjcmVhc2UgVHggcG93ZXIgKGRCKSAqLwotCXU4IGJ0X3J4X2dhaW47ICAvKiBMTkEgY29uc3RyYWluIGxldmVsICovCi19OwotCiBzdHJ1Y3QgcnR3ODlfYnRjX3RyeF9pbmZvIHsKIAl1OCB0eF9sdmw7CiAJdTggcnhfbHZsOwogCXU4IHdsX3Jzc2k7CiAJdTggYnRfcnNzaTsKIAotCXM4IHR4X3Bvd2VyOyAvKiBhYnNvbHV0ZSBUeCBwb3dlciAoZEJtKSwgMHhmZi0mZ3Q7IG5vIEJUQyBjb250cm9sICovCi0JczggcnhfZ2FpbjsgIC8qIHJ4IGdhaW4gdGFibGUgaW5kZXggKFRCRC4pICovCi0JczggYnRfdHhfcG93ZXI7IC8qIGRlY3JlYXNlIFR4IHBvd2VyIChkQikgKi8KLQlzOCBidF9yeF9nYWluOyAgLyogTE5BIGNvbnN0cmFpbiBsZXZlbCAqLwomIzQzOwlzOCB3bF90eF9wb3dlcltSVFc4OV9QSFlfTlVNXTsgLyogYWJzb2x1dGUgVHggcG93ZXIgKGRCbSksIDB4ZmYtJmd0OyBubyBCVEMgY29udHJvbCAqLwomIzQzOwlzOCB3bF9yeF9nYWluW1JUVzg5X1BIWV9OVU1dOyAgLyogcnggZ2FpbiB0YWJsZSBpbmRleCAoVEJELikgKi8KJiM0MzsJczggYnRfdHhfcG93ZXJbQlRDX0FMTF9CVF07IC8qIGRlY3JlYXNlIFR4IHBvd2VyIChkQikgKi8KJiM0MzsJczggYnRfcnhfZ2FpbltCVENfQUxMX0JUXTsgIC8qIExOQSBjb25zdHJhaW4gbGV2ZWwgKi8KJiM0MzsJczggemJfdHhfcG93ZXJbQlRDX0FMTF9CVF07CiYjNDM7CXM4IHpiX3J4X2dhaW5bQlRDX0FMTF9CVF07CiAKIAl1OCBjbjsgLyogY29uZGl0aW9uX251bSAqLwogCXM4IG5obTsKQEAgLTMxMDksNyAmIzQzOzMxMzUsNyBAQCBzdHJ1Y3QgcnR3ODlfYnRjX2RtIHsKIAlzdHJ1Y3QgcnR3ODlfYnRjX2ZidGNfdGRtYSB0ZG1hX25vdzsKIAlzdHJ1Y3QgcnR3ODlfbWFjX2F4X2NvZXhfZ250IGdudDsKIAl1bmlvbiBydHc4OV9idGNfaW5pdF9pbmZvX3UgaW5pdF9pbmZvOyAvKiBwYXNzIHRvIHdsX2Z3IGlmIG9mZmxvYWQgKi8KLQlzdHJ1Y3QgcnR3ODlfYnRjX3JmX3RyeF9wYXJhIHJmX3RyeF9wYXJhOwomIzQzOwlzdHJ1Y3QgcnR3ODlfYnRjX3JmX3RyeF9wYXJhX3Y5IHJmX3RyeF9wYXJhOwogCXN0cnVjdCBydHc4OV9idGNfd2xfdHhfbGltaXRfcGFyYSB3bF90eF9saW1pdDsKIAlzdHJ1Y3QgcnR3ODlfYnRjX2RtX3N0ZXAgZG1fc3RlcDsKIAlzdHJ1Y3QgcnR3ODlfYnRjX3dsX3NjY19jdHJsIHdsX3NjYzsKQEAgLTMxNDYsNiAmIzQzOzMxNzIsNyBAQCBzdHJ1Y3QgcnR3ODlfYnRjX2RtIHsKIAogCXU4IHJ1bl9yZWFzb247CiAJdTggcnVuX2FjdGlvbjsKJiM0MzsJdTggd2xfdHhfcHdyX3BoeV9tYXA7CiAKIAl1OCB3bF9wcmVfYWdjOiAyOwogCXU4IHdsX2xuYTI6IDE7CkBAIC0zMTUzLDYgJiM0MzszMTgwLDEwIEBAIHN0cnVjdCBydHc4OV9idGNfZG0gewogCXU4IHdsX3ByZV9hZ2NfcmI6IDI7CiAJdTggYnRfc2VsZWN0OiAyOyAvKiAwOnMwLCAxOnMxLCAyOnMwICZhbXA7IHMxLCByZWZlciB0byBlbnVtIGJ0Y19idF9pbmRleCAqLwogCXU4IHNsb3RfcmVxX21vcmU6IDE7CiYjNDM7CXU4IGxwc19jdHJsX3NjYmQ6IDE7CiYjNDM7CiYjNDM7CXU4IGxwc19jdHJsX3NjYmRfbGFzdDogMTsKJiM0MzsJdTggbHBzX2N0cmxfY2hhbmdlOiAxOwogfTsKIAogc3RydWN0IHJ0dzg5X2J0Y19jdHJsIHsKQEAgLTMxOTMsNiAmIzQzOzMyMjQsOSBAQCBlbnVtIHJ0dzg5X2J0Y19idGZfZndfZXZlbnQgewogCUJURl9FVk5UX0JVRl9PVkVSRkxPVywKIAlCVEZfRVZOVF9DMkhfTE9PUEJBQ0ssCiAJQlRGX0VWTlRfQlRfUVVFUllfVFhQV1IsIC8qIGZ3YzJoZnVuYyAmZ3Q7IDMgKi8KJiM0MzsJQlRGX0VWTlRfWkJfSU5GTyA9IDExLAomIzQzOwlCVEZfRVZOVF9aQl9DSCA9IDEyLAomIzQzOwlCVEZfRVZOVF9aQl9RVUVSWV9UWFBXUiA9IDEzLAogCUJURl9FVk5UX01BWCwKIH07CiAKQEAgLTMzMzQsMTIgJiM0MzszMzY4LDEzIEBAIHN0cnVjdCBydHc4OV9idGNfdmVyIHsKIAogCXU4IGZ3ZXZudHJwdGw7CiAJdTggZndjMmhmdW5jOwotCXU4IGRydmluZm9fdHlwZTsKJiM0MzsJdTggZHJ2aW5mb192ZXI7CiAJdTE2IGluZm9fYnVmOwogCXU4IG1heF9yb2xlX251bTsKIAl1OCBmY3hvc2k7CiAJdTggZmN4bWxvOwogCXU4IGJ0X2Rlc2lyZWQ7CiYjNDM7CXU4IGZjeHRyeDsKIH07CiAKIHN0cnVjdCBydHc4OV9idGNfYnRmX2Z3aW5mbyB7CkBAIC0zMzg1LDcgJiM0MzszNDIwLDcgQEAgc3RydWN0IHJ0dzg5X2J0YyB7CiAJc3RydWN0IHdpcGh5X3dvcmsgZGhjcF9ub3RpZnlfd29yazsKIAlzdHJ1Y3Qgd2lwaHlfd29yayBpY21wX25vdGlmeV93b3JrOwogCi0JdTMyIGJ0X3JlcV9sZW47CiYjNDM7CXUzMiBidF9yZXFfbGVuW1JUVzg5X1BIWV9OVU1dOwogCiAJdTggcG9saWN5W1JUVzg5X0JUQ19QT0xJQ1lfTUFYTEVOXTsKIAl1OCBhbnRfdHlwZTsKQEAgLTMzOTcsNiAmIzQzOzM0MzIsNyBAQCBzdHJ1Y3QgcnR3ODlfYnRjIHsKIAlib29sIHVwZGF0ZV9wb2xpY3lfZm9yY2U7CiAJYm9vbCBscHM7CiAJYm9vbCBtYW51YWxfY3RybDsKJiM0MzsJYm9vbCBjbGlfaDJjX2NtZDsKIH07CiAKIGVudW0gcnR3ODlfYnRjX2htc2cgewpAQCAtNDc0NSwxMCAmIzQzOzQ3ODEsMTAgQEAgc3RydWN0IHJ0dzg5X2NoaXBfaW5mbyB7CiAKIAl1OCBtb25fcmVnX251bTsKIAljb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX2ZidGNfbXJlZyAqbW9uX3JlZzsKLQl1OCByZl9wYXJhX3VsaW5rX251bTsKLQljb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3JmX3RyeF9wYXJhICpyZl9wYXJhX3VsaW5rOwotCXU4IHJmX3BhcmFfZGxpbmtfbnVtOwotCWNvbnN0IHN0cnVjdCBydHc4OV9idGNfcmZfdHJ4X3BhcmEgKnJmX3BhcmFfZGxpbms7CiYjNDM7CWNvbnN0IHN0cnVjdCBydHc4OV9idGNfcmZfdHJ4X3BhcmFfdjAgKnJmX3BhcmFfdWxpbmtfdjA7CiYjNDM7CWNvbnN0IHN0cnVjdCBydHc4OV9idGNfcmZfdHJ4X3BhcmFfdjAgKnJmX3BhcmFfZGxpbmtfdjA7CiYjNDM7CXU4IHJmX3BhcmFfdWxpbmtfbnVtX3YwOwomIzQzOwl1OCByZl9wYXJhX2RsaW5rX251bV92MDsKIAljb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3JmX3RyeF9wYXJhX3Y5ICpyZl9wYXJhX3VsaW5rX3Y5OwogCWNvbnN0IHN0cnVjdCBydHc4OV9idGNfcmZfdHJ4X3BhcmFfdjkgKnJmX3BhcmFfZGxpbmtfdjk7CiAJdTggcmZfcGFyYV91bGlua19udW1fdjk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMKaW5kZXggZDZhNTk0Yjc1YWIyMDIuLjgwNGFlMmExMTMwZDBmIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jCkBAIC02MzAzLDQ4ICYjNDM7NjMwMywxNTggQEAgaW50IHJ0dzg5X2Z3X2gyY19jeGRydl9jdHJsX3Y3KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggdHlwZSkKIAlyZXR1cm4gcmV0OwogfQogCi0jZGVmaW5lIEgyQ19MRU5fQ1hEUlZJTkZPX1RSWCAoMjggJiM0MzsgSDJDX0xFTl9DWERSVkhEUikKLWludCBydHc4OV9md19oMmNfY3hkcnZfdHJ4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggdHlwZSkKJiM0MztpbnQgcnR3ODlfZndfaDJjX2N4ZHJ2X3RyeF92NyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHR5cGUpCiB7CiAJc3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gJmFtcDtydHdkZXYtJmd0O2J0YzsKJiM0MzsJc3RydWN0IHJ0dzg5X2J0Y19yZl90cnhfcGFyYV92OSByZl9wYXJhID0gYnRjLSZndDtkbS5yZl90cnhfcGFyYTsKIAlzdHJ1Y3QgcnR3ODlfYnRjX3RyeF9pbmZvICp0cnggPSAmYW1wO2J0Yy0mZ3Q7ZG0udHJ4X2luZm87CiYjNDM7CXN0cnVjdCBydHc4OV9idGNfd2xfaW5mbyAqd2wgPSAmYW1wO2J0Yy0mZ3Q7Y3gud2w7CiYjNDM7CXN0cnVjdCBydHc4OV9oMmNfY3h0cnhfdjcgKmgyYzsKJiM0MzsJdTMyIGxlbiA9IHNpemVvZigqaDJjKTsKIAlzdHJ1Y3Qgc2tfYnVmZiAqc2tiOwotCXU4ICpjbWQ7CiAJaW50IHJldDsKJiM0MzsJdTggaTsKIAotCXNrYiA9IHJ0dzg5X2Z3X2gyY19hbGxvY19za2Jfd2l0aF9oZHIocnR3ZGV2LCBIMkNfTEVOX0NYRFJWSU5GT19UUlgpOwomIzQzOwlmb3IgKGkgPSAwOyBpICZsdDsgUlRXODlfUEhZX05VTTsgaSYjNDM7JiM0MzspIHsKJiM0MzsJCXRyeC0mZ3Q7d2xfdHhfcG93ZXJbaV0gPSB1MzJfZ2V0X2JpdHMocmZfcGFyYS53bF90eF9wb3dlcltpXSwKJiM0MzsJCQkJCQkgICBSVFc4OV9CVENfV0xfREVGX1RYX1BXUik7CiYjNDM7CQl0cngtJmd0O3dsX3J4X2dhaW5baV0gPSB1MzJfZ2V0X2JpdHMocmZfcGFyYS53bF9yeF9nYWluW2ldLAomIzQzOwkJCQkJCSAgUlRXODlfQlRDX1dMX0RFRl9UWF9QV1IpOwomIzQzOwl9CiYjNDM7CWZvciAoaSA9IDA7IGkgJmx0OyBCVENfQUxMX0JUOyBpJiM0MzsmIzQzOykgewomIzQzOwkJdHJ4LSZndDtidF90eF9wb3dlcltpXSA9IHUzMl9nZXRfYml0cyhyZl9wYXJhLmJ0X3R4X3Bvd2VyW2ldLAomIzQzOwkJCQkJCSAgIFJUVzg5X0JUQ19XTF9ERUZfVFhfUFdSKTsKJiM0MzsJCXRyeC0mZ3Q7YnRfcnhfZ2FpbltpXSA9IHUzMl9nZXRfYml0cyhyZl9wYXJhLmJ0X3J4X2dhaW5baV0sCiYjNDM7CQkJCQkJICBSVFc4OV9CVENfV0xfREVGX1RYX1BXUik7CiYjNDM7CQl0cngtJmd0O3piX3R4X3Bvd2VyW2ldID0gdTMyX2dldF9iaXRzKHJmX3BhcmEuemJfdHhfcG93ZXJbaV0sCiYjNDM7CQkJCQkJICAgUlRXODlfQlRDX1dMX0RFRl9UWF9QV1IpOwomIzQzOwkJdHJ4LSZndDt6Yl9yeF9nYWluW2ldID0gdTMyX2dldF9iaXRzKHJmX3BhcmEuemJfcnhfZ2FpbltpXSwKJiM0MzsJCQkJCQkgIFJUVzg5X0JUQ19XTF9ERUZfVFhfUFdSKTsKJiM0MzsJfQomIzQzOwl0cngtJmd0O2NuID0gd2wtJmd0O2NuX3JlcG9ydDsKJiM0MzsJdHJ4LSZndDtuaG0gPSB3bC0mZ3Q7bmhtLnB3cjsKJiM0MzsKJiM0MzsJc2tiID0gcnR3ODlfZndfaDJjX2FsbG9jX3NrYl93aXRoX2hkcihydHdkZXYsIGxlbik7CiAJaWYgKCFza2IpIHsKLQkJcnR3ODlfZXJyKHJ0d2RldiwgJiMzNDtmYWlsZWQgdG8gYWxsb2Mgc2tiIGZvciBoMmMgY3hkcnZfdHJ4XG4mIzM0Oyk7CiYjNDM7CQlydHc4OV9lcnIocnR3ZGV2LCAmIzM0O2ZhaWxlZCB0byBhbGxvYyBza2IgZm9yIGgyYyBjeHRyeF92OVxuJiMzNDspOwogCQlyZXR1cm4gLUVOT01FTTsKIAl9Ci0Jc2tiX3B1dChza2IsIEgyQ19MRU5fQ1hEUlZJTkZPX1RSWCk7Ci0JY21kID0gc2tiLSZndDtkYXRhOwomIzQzOwlza2JfcHV0KHNrYiwgbGVuKTsKJiM0MzsJaDJjID0gKHN0cnVjdCBydHc4OV9oMmNfY3h0cnhfdjcgKilza2ItJmd0O2RhdGE7CiAKLQlSVFc4OV9TRVRfRldDTURfQ1hIRFJfVFlQRShjbWQsIHR5cGUpOwotCVJUVzg5X1NFVF9GV0NNRF9DWEhEUl9MRU4oY21kLCBIMkNfTEVOX0NYRFJWSU5GT19UUlggLSBIMkNfTEVOX0NYRFJWSERSKTsKLQotCVJUVzg5X1NFVF9GV0NNRF9DWFRSWF9UWExWKGNtZCwgdHJ4LSZndDt0eF9sdmwpOwotCVJUVzg5X1NFVF9GV0NNRF9DWFRSWF9SWExWKGNtZCwgdHJ4LSZndDtyeF9sdmwpOwotCVJUVzg5X1NFVF9GV0NNRF9DWFRSWF9XTFJTU0koY21kLCB0cngtJmd0O3dsX3Jzc2kpOwotCVJUVzg5X1NFVF9GV0NNRF9DWFRSWF9CVFJTU0koY21kLCB0cngtJmd0O2J0X3Jzc2kpOwotCVJUVzg5X1NFVF9GV0NNRF9DWFRSWF9UWFBXUihjbWQsIHRyeC0mZ3Q7dHhfcG93ZXIpOwotCVJUVzg5X1NFVF9GV0NNRF9DWFRSWF9SWEdBSU4oY21kLCB0cngtJmd0O3J4X2dhaW4pOwotCVJUVzg5X1NFVF9GV0NNRF9DWFRSWF9CVFRYUFdSKGNtZCwgdHJ4LSZndDtidF90eF9wb3dlcik7Ci0JUlRXODlfU0VUX0ZXQ01EX0NYVFJYX0JUUlhHQUlOKGNtZCwgdHJ4LSZndDtidF9yeF9nYWluKTsKLQlSVFc4OV9TRVRfRldDTURfQ1hUUlhfQ04oY21kLCB0cngtJmd0O2NuKTsKLQlSVFc4OV9TRVRfRldDTURfQ1hUUlhfTkhNKGNtZCwgdHJ4LSZndDtuaG0pOwotCVJUVzg5X1NFVF9GV0NNRF9DWFRSWF9CVFBST0ZJTEUoY21kLCB0cngtJmd0O2J0X3Byb2ZpbGUpOwotCVJUVzg5X1NFVF9GV0NNRF9DWFRSWF9SU1ZEMihjbWQsIHRyeC0mZ3Q7cnN2ZDIpOwotCVJUVzg5X1NFVF9GV0NNRF9DWFRSWF9UWFJBVEUoY21kLCB0cngtJmd0O3R4X3JhdGUpOwotCVJUVzg5X1NFVF9GV0NNRF9DWFRSWF9SWFJBVEUoY21kLCB0cngtJmd0O3J4X3JhdGUpOwotCVJUVzg5X1NFVF9GV0NNRF9DWFRSWF9UWFRQKGNtZCwgdHJ4LSZndDt0eF90cCk7Ci0JUlRXODlfU0VUX0ZXQ01EX0NYVFJYX1JYVFAoY21kLCB0cngtJmd0O3J4X3RwKTsKLQlSVFc4OV9TRVRfRldDTURfQ1hUUlhfUlhFUlJSQShjbWQsIHRyeC0mZ3Q7cnhfZXJyX3JhdGlvKTsKJiM0MzsJaDJjLSZndDtoZHIudHlwZSA9IHR5cGU7CiYjNDM7CWgyYy0mZ3Q7aGRyLnZlciA9IGJ0Yy0mZ3Q7dmVyLSZndDtmY3h0cng7CiYjNDM7CWgyYy0mZ3Q7aGRyLmxlbiA9IHNpemVvZigqaDJjKSAtIEgyQ19MRU5fQ1hEUlZIRFJfVjc7CiYjNDM7CiYjNDM7CWgyYy0mZ3Q7djdfdTgudHhfbHZsID0gdHJ4LSZndDt0eF9sdmw7CiYjNDM7CWgyYy0mZ3Q7djdfdTgucnhfbHZsID0gdHJ4LSZndDtyeF9sdmw7CiYjNDM7CWgyYy0mZ3Q7djdfdTgud2xfcnNzaSA9IHRyeC0mZ3Q7d2xfcnNzaTsKJiM0MzsJaDJjLSZndDt2N191OC5idF9yc3NpID0gdHJ4LSZndDtidF9yc3NpOwomIzQzOwloMmMtJmd0O3Y3X3U4LndsX3R4X3Bvd2VyID0gdHJ4LSZndDt3bF90eF9wb3dlcltSVFc4OV9QSFlfMF07CiYjNDM7CWgyYy0mZ3Q7djdfdTgud2xfcnhfZ2FpbiA9IHRyeC0mZ3Q7d2xfcnhfZ2FpbltSVFc4OV9QSFlfMF07CiYjNDM7CWgyYy0mZ3Q7djdfdTguYnRfdHhfcG93ZXIgPSB0cngtJmd0O2J0X3R4X3Bvd2VyW0JUQ19CVF8xU1RdOwomIzQzOwloMmMtJmd0O3Y3X3U4LmJ0X3J4X2dhaW4gPSB0cngtJmd0O2J0X3J4X2dhaW5bQlRDX0JUXzFTVF07CiYjNDM7CWgyYy0mZ3Q7djdfdTguemJfdHhfcG93ZXIgPSB0cngtJmd0O3piX3R4X3Bvd2VyW0JUQ19CVF8xU1RdOwomIzQzOwloMmMtJmd0O3Y3X3U4LnpiX3J4X2dhaW4gPSB0cngtJmd0O3piX3J4X2dhaW5bQlRDX0JUXzFTVF07CiYjNDM7CWgyYy0mZ3Q7djdfdTguY24gPSB0cngtJmd0O2NuOwomIzQzOwloMmMtJmd0O3Y3X3U4Lm5obSA9IHRyeC0mZ3Q7bmhtOwomIzQzOwloMmMtJmd0O3Y3X3U4LmJ0X3Byb2ZpbGUgPSB0cngtJmd0O2J0X3Byb2ZpbGU7CiYjNDM7CWgyYy0mZ3Q7djdfdTgucnN2ZDIgPSB0cngtJmd0O3JzdmQyOwomIzQzOwloMmMtJmd0O3Y3X2xlLnR4X3JhdGUgPSBjcHVfdG9fbGUxNih0cngtJmd0O3R4X3JhdGUpOwomIzQzOwloMmMtJmd0O3Y3X2xlLnJ4X3JhdGUgPSBjcHVfdG9fbGUxNih0cngtJmd0O3J4X3JhdGUpOwomIzQzOwloMmMtJmd0O3Y3X2xlLnR4X3RwID0gY3B1X3RvX2xlMzIodHJ4LSZndDt0eF90cCk7CiYjNDM7CWgyYy0mZ3Q7djdfbGUucnhfdHAgPSBjcHVfdG9fbGUzMih0cngtJmd0O3J4X3RwKTsKJiM0MzsJaDJjLSZndDt2N19sZS5yeF9lcnJfcmF0aW8gPSBjcHVfdG9fbGUzMih0cngtJmd0O3J4X2Vycl9yYXRpbyk7CiAKIAlydHc4OV9oMmNfcGt0X3NldF9oZHIocnR3ZGV2LCBza2IsIEZXQ01EX1RZUEVfSDJDLAogCQkJICAgICAgSDJDX0NBVF9PVVRTUkMsIEJURkNfU0VULAotCQkJICAgICAgU0VUX0RSVl9JTkZPLCAwLCAwLAotCQkJICAgICAgSDJDX0xFTl9DWERSVklORk9fVFJYKTsKJiM0MzsJCQkgICAgICBTRVRfRFJWX0lORk8sIDAsIDAsIGxlbik7CiYjNDM7CiYjNDM7CXJldCA9IHJ0dzg5X2gyY190eChydHdkZXYsIHNrYiwgZmFsc2UpOwomIzQzOwlpZiAocmV0KSB7CiYjNDM7CQlydHc4OV9lcnIocnR3ZGV2LCAmIzM0O2ZhaWxlZCB0byBzZW5kIGgyY1xuJiMzNDspOwomIzQzOwkJZ290byBmYWlsOwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiAwOwomIzQzO2ZhaWw6CiYjNDM7CWRldl9rZnJlZV9za2JfYW55KHNrYik7CiYjNDM7CiYjNDM7CXJldHVybiByZXQ7CiYjNDM7fQomIzQzOwomIzQzO2ludCBydHc4OV9md19oMmNfY3hkcnZfdHJ4X3Y5KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggdHlwZSkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBydHc4OV9idGMgKmJ0YyA9ICZhbXA7cnR3ZGV2LSZndDtidGM7CiYjNDM7CXN0cnVjdCBydHc4OV9idGNfcmZfdHJ4X3BhcmFfdjkgcmZfcGFyYSA9IGJ0Yy0mZ3Q7ZG0ucmZfdHJ4X3BhcmE7CiYjNDM7CXN0cnVjdCBydHc4OV9idGNfdHJ4X2luZm8gKnRyeCA9ICZhbXA7YnRjLSZndDtkbS50cnhfaW5mbzsKJiM0MzsJc3RydWN0IHJ0dzg5X2J0Y193bF9pbmZvICp3bCA9ICZhbXA7YnRjLSZndDtjeC53bDsKJiM0MzsJc3RydWN0IHJ0dzg5X2gyY19jeHRyeF92OSAqaDJjOwomIzQzOwl1MzIgbGVuID0gc2l6ZW9mKCpoMmMpOwomIzQzOwlzdHJ1Y3Qgc2tfYnVmZiAqc2tiOwomIzQzOwlpbnQgcmV0OwomIzQzOwl1OCBpOwomIzQzOwomIzQzOwlmb3IgKGkgPSAwOyBpICZsdDsgUlRXODlfUEhZX05VTTsgaSYjNDM7JiM0MzspIHsKJiM0MzsJCXRyeC0mZ3Q7d2xfdHhfcG93ZXJbaV0gPSB1MzJfZ2V0X2JpdHMocmZfcGFyYS53bF90eF9wb3dlcltpXSwKJiM0MzsJCQkJCQkgICBSVFc4OV9CVENfV0xfREVGX1RYX1BXUik7CiYjNDM7CQl0cngtJmd0O3dsX3J4X2dhaW5baV0gPSB1MzJfZ2V0X2JpdHMocmZfcGFyYS53bF9yeF9nYWluW2ldLAomIzQzOwkJCQkJCSAgUlRXODlfQlRDX1dMX0RFRl9UWF9QV1IpOwomIzQzOwl9CiYjNDM7CWZvciAoaSA9IDA7IGkgJmx0OyBCVENfQUxMX0JUOyBpJiM0MzsmIzQzOykgewomIzQzOwkJdHJ4LSZndDtidF90eF9wb3dlcltpXSA9IHUzMl9nZXRfYml0cyhyZl9wYXJhLmJ0X3R4X3Bvd2VyW2ldLAomIzQzOwkJCQkJCSAgIFJUVzg5X0JUQ19XTF9ERUZfVFhfUFdSKTsKJiM0MzsJCXRyeC0mZ3Q7YnRfcnhfZ2FpbltpXSA9IHUzMl9nZXRfYml0cyhyZl9wYXJhLmJ0X3J4X2dhaW5baV0sCiYjNDM7CQkJCQkJICBSVFc4OV9CVENfV0xfREVGX1RYX1BXUik7CiYjNDM7CQl0cngtJmd0O3piX3R4X3Bvd2VyW2ldID0gdTMyX2dldF9iaXRzKHJmX3BhcmEuemJfdHhfcG93ZXJbaV0sCiYjNDM7CQkJCQkJICAgUlRXODlfQlRDX1dMX0RFRl9UWF9QV1IpOwomIzQzOwkJdHJ4LSZndDt6Yl9yeF9nYWluW2ldID0gdTMyX2dldF9iaXRzKHJmX3BhcmEuemJfcnhfZ2FpbltpXSwKJiM0MzsJCQkJCQkgIFJUVzg5X0JUQ19XTF9ERUZfVFhfUFdSKTsKJiM0MzsJfQomIzQzOwl0cngtJmd0O2NuID0gd2wtJmd0O2NuX3JlcG9ydDsKJiM0MzsJdHJ4LSZndDtuaG0gPSB3bC0mZ3Q7bmhtLnB3cjsKJiM0MzsKJiM0MzsJc2tiID0gcnR3ODlfZndfaDJjX2FsbG9jX3NrYl93aXRoX2hkcihydHdkZXYsIGxlbik7CiYjNDM7CWlmICghc2tiKSB7CiYjNDM7CQlydHc4OV9lcnIocnR3ZGV2LCAmIzM0O2ZhaWxlZCB0byBhbGxvYyBza2IgZm9yIGgyYyBjeHRyeF92OVxuJiMzNDspOwomIzQzOwkJcmV0dXJuIC1FTk9NRU07CiYjNDM7CX0KJiM0MzsJc2tiX3B1dChza2IsIGxlbik7CiYjNDM7CWgyYyA9IChzdHJ1Y3QgcnR3ODlfaDJjX2N4dHJ4X3Y5ICopc2tiLSZndDtkYXRhOwomIzQzOwomIzQzOwloMmMtJmd0O2hkci50eXBlID0gdHlwZTsKJiM0MzsJaDJjLSZndDtoZHIudmVyID0gYnRjLSZndDt2ZXItJmd0O2ZjeHRyeDsKJiM0MzsJaDJjLSZndDtoZHIubGVuID0gc2l6ZW9mKCpoMmMpIC0gSDJDX0xFTl9DWERSVkhEUl9WNzsKJiM0MzsKJiM0MzsJaDJjLSZndDt2OV91OC50eF9sdmwgPSB0cngtJmd0O3R4X2x2bDsKJiM0MzsJaDJjLSZndDt2OV91OC5yeF9sdmwgPSB0cngtJmd0O3J4X2x2bDsKJiM0MzsJaDJjLSZndDt2OV91OC53bF9yc3NpID0gdHJ4LSZndDt3bF9yc3NpOwomIzQzOwloMmMtJmd0O3Y5X3U4LmJ0X3Jzc2kgPSB0cngtJmd0O2J0X3Jzc2k7CiYjNDM7CiYjNDM7CWZvciAoaSA9IDA7IGkgJmx0OyBSVFc4OV9QSFlfTlVNOyBpJiM0MzsmIzQzOykgewomIzQzOwkJaDJjLSZndDt2OV91OC53bF90eF9wb3dlcltpXSA9IHRyeC0mZ3Q7d2xfdHhfcG93ZXJbaV07CiYjNDM7CQloMmMtJmd0O3Y5X3U4LndsX3J4X2dhaW5baV0gPSB0cngtJmd0O3dsX3J4X2dhaW5baV07CiYjNDM7CX0KJiM0MzsKJiM0MzsJZm9yIChpID0gMDsgaSAmbHQ7IEJUQ19BTExfQlQ7IGkmIzQzOyYjNDM7KSB7CiYjNDM7CQloMmMtJmd0O3Y5X3U4LmJ0X3R4X3Bvd2VyW2ldID0gdHJ4LSZndDtidF90eF9wb3dlcltpXTsKJiM0MzsJCWgyYy0mZ3Q7djlfdTguYnRfcnhfZ2FpbltpXSA9IHRyeC0mZ3Q7YnRfcnhfZ2FpbltpXTsKJiM0MzsJCWgyYy0mZ3Q7djlfdTguemJfdHhfcG93ZXJbaV0gPSB0cngtJmd0O3piX3R4X3Bvd2VyW2ldOwomIzQzOwkJaDJjLSZndDt2OV91OC56Yl9yeF9nYWluW2ldID0gdHJ4LSZndDt6Yl9yeF9nYWluW2ldOwomIzQzOwl9CiYjNDM7CWgyYy0mZ3Q7djlfdTguY24gPSB0cngtJmd0O2NuOwomIzQzOwloMmMtJmd0O3Y5X3U4Lm5obSA9IHRyeC0mZ3Q7bmhtOwomIzQzOwloMmMtJmd0O3Y5X3U4LmJ0X3Byb2ZpbGUgPSB0cngtJmd0O2J0X3Byb2ZpbGU7CiYjNDM7CWgyYy0mZ3Q7djlfdTgucnN2ZDIgPSB0cngtJmd0O3JzdmQyOwomIzQzOwloMmMtJmd0O3Y5X2xlLnR4X3JhdGUgPSBjcHVfdG9fbGUxNih0cngtJmd0O3R4X3JhdGUpOwomIzQzOwloMmMtJmd0O3Y5X2xlLnJ4X3JhdGUgPSBjcHVfdG9fbGUxNih0cngtJmd0O3J4X3JhdGUpOwomIzQzOwloMmMtJmd0O3Y5X2xlLnR4X3RwID0gY3B1X3RvX2xlMzIodHJ4LSZndDt0eF90cCk7CiYjNDM7CWgyYy0mZ3Q7djlfbGUucnhfdHAgPSBjcHVfdG9fbGUzMih0cngtJmd0O3J4X3RwKTsKJiM0MzsJaDJjLSZndDt2OV9sZS5yeF9lcnJfcmF0aW8gPSBjcHVfdG9fbGUzMih0cngtJmd0O3J4X2Vycl9yYXRpbyk7CiYjNDM7CiYjNDM7CXJ0dzg5X2gyY19wa3Rfc2V0X2hkcihydHdkZXYsIHNrYiwgRldDTURfVFlQRV9IMkMsCiYjNDM7CQkJICAgICAgSDJDX0NBVF9PVVRTUkMsIEJURkNfU0VULAomIzQzOwkJCSAgICAgIFNFVF9EUlZfSU5GTywgMCwgMCwgbGVuKTsKIAogCXJldCA9IHJ0dzg5X2gyY190eChydHdkZXYsIHNrYiwgZmFsc2UpOwogCWlmIChyZXQpIHsKQEAgLTY0MDQsNiAmIzQzOzY1MTQsOTAgQEAgaW50IHJ0dzg5X2Z3X2gyY19jeGRydl9yZmsoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCB0eXBlKQogCXJldHVybiByZXQ7CiB9CiAKJiM0MztpbnQgcnR3ODlfZndfaDJjX2N4dHhwd3Jfdjcoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCB0eXBlKQomIzQzO3sKJiM0MzsJc3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gJmFtcDtydHdkZXYtJmd0O2J0YzsKJiM0MzsJc3RydWN0IHJ0dzg5X2J0Y19kbSAqZG0gPSAmYW1wO2J0Yy0mZ3Q7ZG07CiYjNDM7CXN0cnVjdCBydHc4OV9idGNfcmZfdHJ4X3BhcmFfdjkgcnAgPSBkbS0mZ3Q7cmZfdHJ4X3BhcmE7CiYjNDM7CXN0cnVjdCBydHc4OV9oMmNfY3h0eHB3cl92NyAqaDJjOwomIzQzOwl1MzIgbGVuID0gc2l6ZW9mKCpoMmMpOwomIzQzOwlzdHJ1Y3Qgc2tfYnVmZiAqc2tiOwomIzQzOwlpbnQgcmV0OwomIzQzOwomIzQzOwlza2IgPSBydHc4OV9md19oMmNfYWxsb2Nfc2tiX3dpdGhfaGRyKHJ0d2RldiwgbGVuKTsKJiM0MzsJaWYgKCFza2IpIHsKJiM0MzsJCXJ0dzg5X2VycihydHdkZXYsICYjMzQ7ZmFpbGVkIHRvIGFsbG9jIHNrYiBmb3IgaDJjIGN4ZHJ2X2N0cmxcbiYjMzQ7KTsKJiM0MzsJCXJldHVybiAtRU5PTUVNOwomIzQzOwl9CiYjNDM7CXNrYl9wdXQoc2tiLCBsZW4pOwomIzQzOwloMmMgPSAoc3RydWN0IHJ0dzg5X2gyY19jeHR4cHdyX3Y3ICopc2tiLSZndDtkYXRhOwomIzQzOwomIzQzOwloMmMtJmd0O2hkci50eXBlID0gdHlwZTsKJiM0MzsJaDJjLSZndDtoZHIudmVyID0gYnRjLSZndDt2ZXItJmd0O2ZjeHRyeDsKJiM0MzsJaDJjLSZndDtoZHIubGVuID0gc2l6ZW9mKCpoMmMpIC0gSDJDX0xFTl9DWERSVkhEUl9WNzsKJiM0MzsJaDJjLSZndDtwd3IgPSBycC53bF90eF9wb3dlcltSVFc4OV9QSFlfMF0gJmFtcDsgMHhmZjsKJiM0MzsKJiM0MzsJcnR3ODlfaDJjX3BrdF9zZXRfaGRyKHJ0d2Rldiwgc2tiLCBGV0NNRF9UWVBFX0gyQywKJiM0MzsJCQkgICAgICBIMkNfQ0FUX09VVFNSQywgQlRGQ19TRVQsCiYjNDM7CQkJICAgICAgU0VUX0RSVl9JTkZPLCAwLCAwLCBsZW4pOwomIzQzOwomIzQzOwlyZXQgPSBydHc4OV9oMmNfdHgocnR3ZGV2LCBza2IsIGZhbHNlKTsKJiM0MzsJaWYgKHJldCkgewomIzQzOwkJcnR3ODlfZXJyKHJ0d2RldiwgJiMzNDtmYWlsZWQgdG8gc2VuZCBoMmNcbiYjMzQ7KTsKJiM0MzsJCWdvdG8gZmFpbDsKJiM0MzsJfQomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0MztmYWlsOgomIzQzOwlkZXZfa2ZyZWVfc2tiX2FueShza2IpOwomIzQzOwomIzQzOwlyZXR1cm4gcmV0OwomIzQzO30KJiM0MzsKJiM0MztpbnQgcnR3ODlfZndfaDJjX2N4dHhwd3Jfdjkoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCB0eXBlKQomIzQzO3sKJiM0MzsJc3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gJmFtcDtydHdkZXYtJmd0O2J0YzsKJiM0MzsJc3RydWN0IHJ0dzg5X2J0Y19kbSAqZG0gPSAmYW1wO2J0Yy0mZ3Q7ZG07CiYjNDM7CXN0cnVjdCBydHc4OV9idGNfcmZfdHJ4X3BhcmFfdjkgcnAgPSBkbS0mZ3Q7cmZfdHJ4X3BhcmE7CiYjNDM7CXN0cnVjdCBydHc4OV9oMmNfY3h0eHB3cl92OSAqaDJjOwomIzQzOwl1MzIgbGVuID0gc2l6ZW9mKCpoMmMpOwomIzQzOwlzdHJ1Y3Qgc2tfYnVmZiAqc2tiOwomIzQzOwlpbnQgcmV0OwomIzQzOwomIzQzOwlza2IgPSBydHc4OV9md19oMmNfYWxsb2Nfc2tiX3dpdGhfaGRyKHJ0d2RldiwgbGVuKTsKJiM0MzsJaWYgKCFza2IpIHsKJiM0MzsJCXJ0dzg5X2VycihydHdkZXYsICYjMzQ7ZmFpbGVkIHRvIGFsbG9jIHNrYiBmb3IgaDJjIGN4ZHJ2X2N0cmxcbiYjMzQ7KTsKJiM0MzsJCXJldHVybiAtRU5PTUVNOwomIzQzOwl9CiYjNDM7CXNrYl9wdXQoc2tiLCBsZW4pOwomIzQzOwloMmMgPSAoc3RydWN0IHJ0dzg5X2gyY19jeHR4cHdyX3Y5ICopc2tiLSZndDtkYXRhOwomIzQzOwomIzQzOwloMmMtJmd0O2hkci50eXBlID0gdHlwZTsKJiM0MzsJaDJjLSZndDtoZHIudmVyID0gYnRjLSZndDt2ZXItJmd0O2ZjeHRyeDsKJiM0MzsJaDJjLSZndDtoZHIubGVuID0gc2l6ZW9mKCpoMmMpIC0gSDJDX0xFTl9DWERSVkhEUl9WNzsKJiM0MzsJaWYgKGRtLSZndDt3bF90eF9wd3JfcGh5X21hcCA9PSBCSVQoUlRXODlfUEhZXzEpKQomIzQzOwkJaDJjLSZndDtwd3IgPSBycC53bF90eF9wb3dlcltSVFc4OV9QSFlfMV0gJmFtcDsgMHhmZjsKJiM0MzsJZWxzZQomIzQzOwkJaDJjLSZndDtwd3IgPSBycC53bF90eF9wb3dlcltSVFc4OV9QSFlfMF0gJmFtcDsgMHhmZjsKJiM0MzsJaDJjLSZndDtiYW5kID0gZG0tJmd0O3dsX3R4X3B3cl9waHlfbWFwOwomIzQzOwomIzQzOwlydHc4OV9oMmNfcGt0X3NldF9oZHIocnR3ZGV2LCBza2IsIEZXQ01EX1RZUEVfSDJDLAomIzQzOwkJCSAgICAgIEgyQ19DQVRfT1VUU1JDLCBCVEZDX1NFVCwKJiM0MzsJCQkgICAgICBTRVRfRFJWX0lORk8sIDAsIDAsIGxlbik7CiYjNDM7CiYjNDM7CXJldCA9IHJ0dzg5X2gyY190eChydHdkZXYsIHNrYiwgZmFsc2UpOwomIzQzOwlpZiAocmV0KSB7CiYjNDM7CQlydHc4OV9lcnIocnR3ZGV2LCAmIzM0O2ZhaWxlZCB0byBzZW5kIGgyY1xuJiMzNDspOwomIzQzOwkJZ290byBmYWlsOwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiAwOwomIzQzO2ZhaWw6CiYjNDM7CWRldl9rZnJlZV9za2JfYW55KHNrYik7CiYjNDM7CiYjNDM7CXJldHVybiByZXQ7CiYjNDM7fQomIzQzOwogI2RlZmluZSBIMkNfTEVOX1BLVF9PRkxEIDQKIGludCBydHc4OV9md19oMmNfZGVsX3BrdF9vZmZsb2FkKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggaWQpCiB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmgKaW5kZXggMjA3MjFkNTIwOWFhM2EuLjM2Yzg0MzBhMmU3YWViIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5oCkBAIC0yNDk5LDYgJiM0MzsyNDk5LDc2IEBAIHN0cnVjdCBydHc4OV9oMmNfY3hpbml0IHsKIAl1OCByc3ZkMTsKIH0gX19wYWNrZWQ7CiAKJiM0MztzdHJ1Y3QgcnR3ODlfYnRjX3RyeF9pbmZvX3U4IHsKJiM0MzsJdTggdHhfbHZsOwomIzQzOwl1OCByeF9sdmw7CiYjNDM7CXU4IHdsX3Jzc2k7CiYjNDM7CXU4IGJ0X3Jzc2k7CiYjNDM7CiYjNDM7CXM4IHdsX3R4X3Bvd2VyW1JUVzg5X1BIWV9OVU1dOyAvKiBhYnNvbHV0ZSBUeCBwb3dlciAoZEJtKSwgMHhmZi0mZ3Q7IG5vIEJUQyBjb250cm9sICovCiYjNDM7CXM4IHdsX3J4X2dhaW5bUlRXODlfUEhZX05VTV07ICAvKiByeCBnYWluIHRhYmxlIGluZGV4IChUQkQuKSAqLwomIzQzOwlzOCBidF90eF9wb3dlcltCVENfQUxMX0JUXTsgLyogZGVjcmVhc2UgVHggcG93ZXIgKGRCKSAqLwomIzQzOwlzOCBidF9yeF9nYWluW0JUQ19BTExfQlRdOyAgLyogTE5BIGNvbnN0cmFpbiBsZXZlbCAqLwomIzQzOwlzOCB6Yl90eF9wb3dlcltCVENfQUxMX0JUXTsKJiM0MzsJczggemJfcnhfZ2FpbltCVENfQUxMX0JUXTsKJiM0MzsKJiM0MzsJdTggY247IC8qIGNvbmRpdGlvbl9udW0gKi8KJiM0MzsJczggbmhtOwomIzQzOwl1OCBidF9wcm9maWxlOwomIzQzOwl1OCByc3ZkMjsKJiM0Mzt9IF9fcGFja2VkOwomIzQzOwomIzQzO3N0cnVjdCBydHc4OV9idGNfdHJ4X2luZm9fdjdfdTggewomIzQzOwl1OCB0eF9sdmw7CiYjNDM7CXU4IHJ4X2x2bDsKJiM0MzsJdTggd2xfcnNzaTsKJiM0MzsJdTggYnRfcnNzaTsKJiM0MzsKJiM0MzsJczggd2xfdHhfcG93ZXI7CiYjNDM7CXM4IHdsX3J4X2dhaW47CiYjNDM7CXM4IGJ0X3R4X3Bvd2VyOwomIzQzOwlzOCBidF9yeF9nYWluOwomIzQzOwlzOCB6Yl90eF9wb3dlcjsKJiM0MzsJczggemJfcnhfZ2FpbjsKJiM0MzsKJiM0MzsJdTggY247CiYjNDM7CXM4IG5obTsKJiM0MzsJdTggYnRfcHJvZmlsZTsKJiM0MzsJdTggcnN2ZDI7CiYjNDM7fSBfX3BhY2tlZDsKJiM0MzsKJiM0MztzdHJ1Y3QgcnR3ODlfYnRjX3RyeF9pbmZvX2xlIHsKJiM0MzsJX19sZTE2IHR4X3JhdGU7CiYjNDM7CV9fbGUxNiByeF9yYXRlOwomIzQzOwomIzQzOwlfX2xlMzIgdHhfdHA7CiYjNDM7CV9fbGUzMiByeF90cDsKJiM0MzsJX19sZTMyIHJ4X2Vycl9yYXRpbzsKJiM0Mzt9IF9fcGFja2VkOwomIzQzOwomIzQzO3N0cnVjdCBydHc4OV9oMmNfY3h0cnhfdjkgewomIzQzOwlzdHJ1Y3QgcnR3ODlfaDJjX2N4aGRyX3Y3IGhkcjsKJiM0MzsJc3RydWN0IHJ0dzg5X2J0Y190cnhfaW5mb191OCB2OV91ODsKJiM0MzsJc3RydWN0IHJ0dzg5X2J0Y190cnhfaW5mb19sZSB2OV9sZTsKJiM0Mzt9IF9fcGFja2VkOwomIzQzOwomIzQzO3N0cnVjdCBydHc4OV9oMmNfY3h0cnhfdjcgewomIzQzOwlzdHJ1Y3QgcnR3ODlfaDJjX2N4aGRyX3Y3IGhkcjsKJiM0MzsJc3RydWN0IHJ0dzg5X2J0Y190cnhfaW5mb192N191OCB2N191ODsKJiM0MzsJc3RydWN0IHJ0dzg5X2J0Y190cnhfaW5mb19sZSB2N19sZTsKJiM0Mzt9IF9fcGFja2VkOwomIzQzOwomIzQzO3N0cnVjdCBydHc4OV9oMmNfY3h0eHB3cl92NyB7CiYjNDM7CXN0cnVjdCBydHc4OV9oMmNfY3hoZHJfdjcgaGRyOwomIzQzOwl1OCBwd3I7CiYjNDM7fSBfX3BhY2tlZDsKJiM0MzsKJiM0MztzdHJ1Y3QgcnR3ODlfaDJjX2N4dHhwd3JfdjkgewomIzQzOwlzdHJ1Y3QgcnR3ODlfaDJjX2N4aGRyX3Y3IGhkcjsKJiM0MzsJdTggcHdyOwomIzQzOwl1OCBiYW5kOwomIzQzO30gX19wYWNrZWQ7CiYjNDM7CiAjZGVmaW5lIFJUVzg5X0gyQ19DWElOSVRfQU5UX0lORk9fUE9TIEJJVCgwKQogI2RlZmluZSBSVFc4OV9IMkNfQ1hJTklUX0FOVF9JTkZPX0RJVkVSU0lUWSBCSVQoMSkKICNkZWZpbmUgUlRXODlfSDJDX0NYSU5JVF9BTlRfSU5GT19CVEdfUE9TIEdFTk1BU0soMywgMikKQEAgLTI3NjAsOTEgJiM0MzsyODMwLDYgQEAgc3RhdGljIGlubGluZSB2b2lkIFJUVzg5X1NFVF9GV0NNRF9DWENUUkxfVFJBQ0VfU1RFUCh2b2lkICpjbWQsIHUzMiB2YWwpCiAJbGUzMnBfcmVwbGFjZV9iaXRzKChfX2xlMzIgKikoKHU4ICopKGNtZCkgJiM0MzsgMiksIHZhbCwgR0VOTUFTSygxOCwgMykpOwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgUlRXODlfU0VUX0ZXQ01EX0NYVFJYX1RYTFYodm9pZCAqY21kLCB1OCB2YWwpCi17Ci0JdThwX3JlcGxhY2VfYml0cygodTggKiljbWQgJiM0MzsgMiwgdmFsLCBHRU5NQVNLKDcsIDApKTsKLX0KLQotc3RhdGljIGlubGluZSB2b2lkIFJUVzg5X1NFVF9GV0NNRF9DWFRSWF9SWExWKHZvaWQgKmNtZCwgdTggdmFsKQotewotCXU4cF9yZXBsYWNlX2JpdHMoKHU4ICopY21kICYjNDM7IDMsIHZhbCwgR0VOTUFTSyg3LCAwKSk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZCBSVFc4OV9TRVRfRldDTURfQ1hUUlhfV0xSU1NJKHZvaWQgKmNtZCwgdTggdmFsKQotewotCXU4cF9yZXBsYWNlX2JpdHMoKHU4ICopY21kICYjNDM7IDQsIHZhbCwgR0VOTUFTSyg3LCAwKSk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZCBSVFc4OV9TRVRfRldDTURfQ1hUUlhfQlRSU1NJKHZvaWQgKmNtZCwgdTggdmFsKQotewotCXU4cF9yZXBsYWNlX2JpdHMoKHU4ICopY21kICYjNDM7IDUsIHZhbCwgR0VOTUFTSyg3LCAwKSk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZCBSVFc4OV9TRVRfRldDTURfQ1hUUlhfVFhQV1Iodm9pZCAqY21kLCBzOCB2YWwpCi17Ci0JdThwX3JlcGxhY2VfYml0cygodTggKiljbWQgJiM0MzsgNiwgdmFsLCBHRU5NQVNLKDcsIDApKTsKLX0KLQotc3RhdGljIGlubGluZSB2b2lkIFJUVzg5X1NFVF9GV0NNRF9DWFRSWF9SWEdBSU4odm9pZCAqY21kLCBzOCB2YWwpCi17Ci0JdThwX3JlcGxhY2VfYml0cygodTggKiljbWQgJiM0MzsgNywgdmFsLCBHRU5NQVNLKDcsIDApKTsKLX0KLQotc3RhdGljIGlubGluZSB2b2lkIFJUVzg5X1NFVF9GV0NNRF9DWFRSWF9CVFRYUFdSKHZvaWQgKmNtZCwgczggdmFsKQotewotCXU4cF9yZXBsYWNlX2JpdHMoKHU4ICopY21kICYjNDM7IDgsIHZhbCwgR0VOTUFTSyg3LCAwKSk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZCBSVFc4OV9TRVRfRldDTURfQ1hUUlhfQlRSWEdBSU4odm9pZCAqY21kLCBzOCB2YWwpCi17Ci0JdThwX3JlcGxhY2VfYml0cygodTggKiljbWQgJiM0MzsgOSwgdmFsLCBHRU5NQVNLKDcsIDApKTsKLX0KLQotc3RhdGljIGlubGluZSB2b2lkIFJUVzg5X1NFVF9GV0NNRF9DWFRSWF9DTih2b2lkICpjbWQsIHU4IHZhbCkKLXsKLQl1OHBfcmVwbGFjZV9iaXRzKCh1OCAqKWNtZCAmIzQzOyAxMCwgdmFsLCBHRU5NQVNLKDcsIDApKTsKLX0KLQotc3RhdGljIGlubGluZSB2b2lkIFJUVzg5X1NFVF9GV0NNRF9DWFRSWF9OSE0odm9pZCAqY21kLCBzOCB2YWwpCi17Ci0JdThwX3JlcGxhY2VfYml0cygodTggKiljbWQgJiM0MzsgMTEsIHZhbCwgR0VOTUFTSyg3LCAwKSk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZCBSVFc4OV9TRVRfRldDTURfQ1hUUlhfQlRQUk9GSUxFKHZvaWQgKmNtZCwgdTggdmFsKQotewotCXU4cF9yZXBsYWNlX2JpdHMoKHU4ICopY21kICYjNDM7IDEyLCB2YWwsIEdFTk1BU0soNywgMCkpOwotfQotCi1zdGF0aWMgaW5saW5lIHZvaWQgUlRXODlfU0VUX0ZXQ01EX0NYVFJYX1JTVkQyKHZvaWQgKmNtZCwgdTggdmFsKQotewotCXU4cF9yZXBsYWNlX2JpdHMoKHU4ICopY21kICYjNDM7IDEzLCB2YWwsIEdFTk1BU0soNywgMCkpOwotfQotCi1zdGF0aWMgaW5saW5lIHZvaWQgUlRXODlfU0VUX0ZXQ01EX0NYVFJYX1RYUkFURSh2b2lkICpjbWQsIHUxNiB2YWwpCi17Ci0JbGUxNnBfcmVwbGFjZV9iaXRzKChfX2xlMTYgKikoKHU4ICopY21kICYjNDM7IDE0KSwgdmFsLCBHRU5NQVNLKDE1LCAwKSk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZCBSVFc4OV9TRVRfRldDTURfQ1hUUlhfUlhSQVRFKHZvaWQgKmNtZCwgdTE2IHZhbCkKLXsKLQlsZTE2cF9yZXBsYWNlX2JpdHMoKF9fbGUxNiAqKSgodTggKiljbWQgJiM0MzsgMTYpLCB2YWwsIEdFTk1BU0soMTUsIDApKTsKLX0KLQotc3RhdGljIGlubGluZSB2b2lkIFJUVzg5X1NFVF9GV0NNRF9DWFRSWF9UWFRQKHZvaWQgKmNtZCwgdTMyIHZhbCkKLXsKLQlsZTMycF9yZXBsYWNlX2JpdHMoKF9fbGUzMiAqKSgodTggKiljbWQgJiM0MzsgMTgpLCB2YWwsIEdFTk1BU0soMzEsIDApKTsKLX0KLQotc3RhdGljIGlubGluZSB2b2lkIFJUVzg5X1NFVF9GV0NNRF9DWFRSWF9SWFRQKHZvaWQgKmNtZCwgdTMyIHZhbCkKLXsKLQlsZTMycF9yZXBsYWNlX2JpdHMoKF9fbGUzMiAqKSgodTggKiljbWQgJiM0MzsgMjIpLCB2YWwsIEdFTk1BU0soMzEsIDApKTsKLX0KLQotc3RhdGljIGlubGluZSB2b2lkIFJUVzg5X1NFVF9GV0NNRF9DWFRSWF9SWEVSUlJBKHZvaWQgKmNtZCwgdTMyIHZhbCkKLXsKLQlsZTMycF9yZXBsYWNlX2JpdHMoKF9fbGUzMiAqKSgodTggKiljbWQgJiM0MzsgMjYpLCB2YWwsIEdFTk1BU0soMzEsIDApKTsKLX0KLQogc3RhdGljIGlubGluZSB2b2lkIFJUVzg5X1NFVF9GV0NNRF9DWFJGS19TVEFURSh2b2lkICpjbWQsIHUzMiB2YWwpCiB7CiAJbGUzMnBfcmVwbGFjZV9iaXRzKChfX2xlMzIgKikoKHU4ICopKGNtZCkgJiM0MzsgMiksIHZhbCwgR0VOTUFTSygxLCAwKSk7CkBAIC01Mzk5LDggJiM0Mzs1Mzg0LDExIEBAIGludCBydHc4OV9md19oMmNfY3hkcnZfcm9sZV92OChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHR5cGUpOwogaW50IHJ0dzg5X2Z3X2gyY19jeGRydl9vc2lfaW5mbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHR5cGUpOwogaW50IHJ0dzg5X2Z3X2gyY19jeGRydl9jdHJsKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggdHlwZSk7CiBpbnQgcnR3ODlfZndfaDJjX2N4ZHJ2X2N0cmxfdjcoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCB0eXBlKTsKLWludCBydHc4OV9md19oMmNfY3hkcnZfdHJ4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggdHlwZSk7CiYjNDM7aW50IHJ0dzg5X2Z3X2gyY19jeGRydl90cnhfdjcoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCB0eXBlKTsKJiM0MztpbnQgcnR3ODlfZndfaDJjX2N4ZHJ2X3RyeF92OShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHR5cGUpOwogaW50IHJ0dzg5X2Z3X2gyY19jeGRydl9yZmsoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCB0eXBlKTsKJiM0MztpbnQgcnR3ODlfZndfaDJjX2N4dHhwd3Jfdjcoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCB0eXBlKTsKJiM0MztpbnQgcnR3ODlfZndfaDJjX2N4dHhwd3Jfdjkoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCB0eXBlKTsKIGludCBydHc4OV9md19oMmNfZGVsX3BrdF9vZmZsb2FkKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggaWQpOwogaW50IHJ0dzg5X2Z3X2gyY19hZGRfcGt0X29mZmxvYWQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCAqaWQsCiAJCQkJIHN0cnVjdCBza19idWZmICpza2Jfb2ZsZCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFiLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFiLmMKaW5kZXggNjBmMzYyNTkzNjk2NmYuLjRjYWYyMzFjNjI4NzAwIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFiLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYi5jCkBAIC0zNTUsNyAmIzQzOzM1NSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfcG1hY19yZWdzIHJ0dzg4NTFiX3BtYWNfcmVncyA9IHsKIAkuYW1wZHVfY3JjX2Vycl9tYXNrID0gQl9DTlRfQU1QRFVfUlhfQ1JDMzJfRVJSLAogfTsKIAotc3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9idGNfcmZfdHJ4X3BhcmEgcnR3ODlfYnRjXzg4NTFiX3JmX3VsW10gPSB7CiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9idGNfcmZfdHJ4X3BhcmFfdjAgcnR3ODlfYnRjXzg4NTFiX3JmX3VsX3YwW10gPSB7CiAJezI1NSwgMCwgMCwgN30sIC8qIDAgLSZndDsgb3JpZ2luYWwgKi8KIAl7MjU1LCAyLCAwLCA3fSwgLyogMSAtJmd0OyBmb3IgQlQtY29ubmVjdGVkIEFDSSBpc3N1ZSAmYW1wOyZhbXA7IEJURyBjby1yeCAqLwogCXsyNTUsIDAsIDAsIDd9LCAvKiAyIC0mZ3Q7cmVzZXJ2ZWQgZm9yIHNoYXJlZC1hbnRlbm5hICovCkBAIC0zNjcsNyAmIzQzOzM2Nyw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3JmX3RyeF9wYXJhIHJ0dzg5X2J0Y184ODUxYl9yZl91bFtdID0gewogCXsxMywgMSwgMCwgN30KIH07CiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3JmX3RyeF9wYXJhIHJ0dzg5X2J0Y184ODUxYl9yZl9kbFtdID0gewomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3JmX3RyeF9wYXJhX3YwIHJ0dzg5X2J0Y184ODUxYl9yZl9kbF92MFtdID0gewogCXsyNTUsIDAsIDAsIDd9LCAvKiAwIC0mZ3Q7IG9yaWdpbmFsICovCiAJezI1NSwgMiwgMCwgN30sIC8qIDEgLSZndDsgcmVzZXJ2ZWQgZm9yIHNoYXJlZC1hbnRlbm5hICovCiAJezI1NSwgMCwgMCwgN30sIC8qIDIgLSZndDtyZXNlcnZlZCBmb3Igc2hhcmVkLWFudGVubmEgKi8KQEAgLTI3MzAsMTAgJiM0MzsyNzMwLDEwIEBAIGNvbnN0IHN0cnVjdCBydHc4OV9jaGlwX2luZm8gcnR3ODg1MWJfY2hpcF9pbmZvID0gewogCS5yc3NpX3RvbAkJPSAyLAogCS5tb25fcmVnX251bQkJPSBBUlJBWV9TSVpFKHJ0dzg5X2J0Y184ODUxYl9tb25fcmVnKSwKIAkubW9uX3JlZwkJPSBydHc4OV9idGNfODg1MWJfbW9uX3JlZywKLQkucmZfcGFyYV91bGlua19udW0JPSBBUlJBWV9TSVpFKHJ0dzg5X2J0Y184ODUxYl9yZl91bCksCi0JLnJmX3BhcmFfdWxpbmsJCT0gcnR3ODlfYnRjXzg4NTFiX3JmX3VsLAotCS5yZl9wYXJhX2RsaW5rX251bQk9IEFSUkFZX1NJWkUocnR3ODlfYnRjXzg4NTFiX3JmX2RsKSwKLQkucmZfcGFyYV9kbGluawkJPSBydHc4OV9idGNfODg1MWJfcmZfZGwsCiYjNDM7CS5yZl9wYXJhX3VsaW5rX3YwCT0gcnR3ODlfYnRjXzg4NTFiX3JmX3VsX3YwLAomIzQzOwkucmZfcGFyYV9kbGlua192MAk9IHJ0dzg5X2J0Y184ODUxYl9yZl9kbF92MCwKJiM0MzsJLnJmX3BhcmFfdWxpbmtfbnVtX3YwCT0gQVJSQVlfU0laRShydHc4OV9idGNfODg1MWJfcmZfdWxfdjApLAomIzQzOwkucmZfcGFyYV9kbGlua19udW1fdjAJPSBBUlJBWV9TSVpFKHJ0dzg5X2J0Y184ODUxYl9yZl9kbF92MCksCiAJLnJmX3BhcmFfdWxpbmtfdjkJPSBOVUxMLAogCS5yZl9wYXJhX2RsaW5rX3Y5CT0gTlVMTCwKIAkucmZfcGFyYV91bGlua19udW1fdjkJPSAwLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYS5jCmluZGV4IDJjMWYxNjZlNjg3ZjA2Li43OGFkZGMwYWVmNjkwOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmEuYwpAQCAtMjA0OSw3ICYjNDM7MjA0OSw3IEBAIHM4IHJ0dzg4NTJhX2J0Y19nZXRfYnRfcnNzaShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHM4IHZhbCkKIAlyZXR1cm4gY2xhbXBfdChzOCwgdmFsICYjNDM7IDYsIC0xMDAsIDApICYjNDM7IDEwMDsKIH0KIAotc3RhdGljIHN0cnVjdCBydHc4OV9idGNfcmZfdHJ4X3BhcmEgcnR3ODlfYnRjXzg4NTJhX3JmX3VsW10gPSB7CiYjNDM7c3RhdGljIHN0cnVjdCBydHc4OV9idGNfcmZfdHJ4X3BhcmFfdjAgcnR3ODlfYnRjXzg4NTJhX3JmX3VsX3YwW10gPSB7CiAJezI1NSwgMCwgMCwgN30sIC8qIDAgLSZndDsgb3JpZ2luYWwgKi8KIAl7MjU1LCAyLCAwLCA3fSwgLyogMSAtJmd0OyBmb3IgQlQtY29ubmVjdGVkIEFDSSBpc3N1ZSAmYW1wOyZhbXA7IEJURyBjby1yeCAqLwogCXsyNTUsIDAsIDAsIDd9LCAvKiAyIC0mZ3Q7cmVzZXJ2ZWQgZm9yIHNoYXJlZC1hbnRlbm5hICovCkBAIC0yMDYxLDcgJiM0MzsyMDYxLDcgQEAgc3RhdGljIHN0cnVjdCBydHc4OV9idGNfcmZfdHJ4X3BhcmEgcnR3ODlfYnRjXzg4NTJhX3JmX3VsW10gPSB7CiAJezEzLCAxLCAwLCA3fQogfTsKIAotc3RhdGljIHN0cnVjdCBydHc4OV9idGNfcmZfdHJ4X3BhcmEgcnR3ODlfYnRjXzg4NTJhX3JmX2RsW10gPSB7CiYjNDM7c3RhdGljIHN0cnVjdCBydHc4OV9idGNfcmZfdHJ4X3BhcmFfdjAgcnR3ODlfYnRjXzg4NTJhX3JmX2RsX3YwW10gPSB7CiAJezI1NSwgMCwgMCwgN30sIC8qIDAgLSZndDsgb3JpZ2luYWwgKi8KIAl7MjU1LCAyLCAwLCA3fSwgLyogMSAtJmd0OyByZXNlcnZlZCBmb3Igc2hhcmVkLWFudGVubmEgKi8KIAl7MjU1LCAwLCAwLCA3fSwgLyogMiAtJmd0O3Jlc2VydmVkIGZvciBzaGFyZWQtYW50ZW5uYSAqLwpAQCAtMjEwNSwxMiAmIzQzOzIxMDUsMTIgQEAgdm9pZCBydHc4ODUyYV9idGNfdXBkYXRlX2J0X2NudChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpCiAJCXJldHVybjsKIAogCXZhbCA9IHJ0dzg5X3JlYWQzMihydHdkZXYsIFJfQVhfQlRfU1RBU1RfSElHSCk7Ci0JY3gtJmd0O2NudF9idFtCVENfQkNOVF9ISVBSSV9UWF0gPSBGSUVMRF9HRVQoQl9BWF9TVEFUSVNfQlRfSElfVFhfTUFTSywgdmFsKTsKLQljeC0mZ3Q7Y250X2J0W0JUQ19CQ05UX0hJUFJJX1JYXSA9IEZJRUxEX0dFVChCX0FYX1NUQVRJU19CVF9ISV9SWF9NQVNLLCB2YWwpOwomIzQzOwljeC0mZ3Q7YnQwLmJjbnRbQlRDX0JDTlRfSElQUklfVFhdID0gRklFTERfR0VUKEJfQVhfU1RBVElTX0JUX0hJX1RYX01BU0ssIHZhbCk7CiYjNDM7CWN4LSZndDtidDAuYmNudFtCVENfQkNOVF9ISVBSSV9SWF0gPSBGSUVMRF9HRVQoQl9BWF9TVEFUSVNfQlRfSElfUlhfTUFTSywgdmFsKTsKIAogCXZhbCA9IHJ0dzg5X3JlYWQzMihydHdkZXYsIFJfQVhfQlRfU1RBU1RfTE9XKTsKLQljeC0mZ3Q7Y250X2J0W0JUQ19CQ05UX0xPUFJJX1RYXSA9IEZJRUxEX0dFVChCX0FYX1NUQVRJU19CVF9MT19UWF8xX01BU0ssIHZhbCk7Ci0JY3gtJmd0O2NudF9idFtCVENfQkNOVF9MT1BSSV9SWF0gPSBGSUVMRF9HRVQoQl9BWF9TVEFUSVNfQlRfTE9fUlhfMV9NQVNLLCB2YWwpOwomIzQzOwljeC0mZ3Q7YnQwLmJjbnRbQlRDX0JDTlRfTE9QUklfVFhdID0gRklFTERfR0VUKEJfQVhfU1RBVElTX0JUX0xPX1RYXzFfTUFTSywgdmFsKTsKJiM0MzsJY3gtJmd0O2J0MC5iY250W0JUQ19CQ05UX0xPUFJJX1JYXSA9IEZJRUxEX0dFVChCX0FYX1NUQVRJU19CVF9MT19SWF8xX01BU0ssIHZhbCk7CiAKIAkvKiBjbG9jay1nYXRlIG9mZiBiZWZvcmUgcmVzZXQgY291bnRlciovCiAJcnR3ODlfd3JpdGUzMl9zZXQocnR3ZGV2LCBSX0FYX0JUQ19DRkcsIEJfQVhfRElTX0JUQ19DTEtfRyk7CkBAIC0yNDY4LDEwICYjNDM7MjQ2OCwxMCBAQCBjb25zdCBzdHJ1Y3QgcnR3ODlfY2hpcF9pbmZvIHJ0dzg4NTJhX2NoaXBfaW5mbyA9IHsKIAkucnNzaV90b2wJCT0gMiwKIAkubW9uX3JlZ19udW0JCT0gQVJSQVlfU0laRShydHc4OV9idGNfODg1MmFfbW9uX3JlZyksCiAJLm1vbl9yZWcJCT0gcnR3ODlfYnRjXzg4NTJhX21vbl9yZWcsCi0JLnJmX3BhcmFfdWxpbmtfbnVtCT0gQVJSQVlfU0laRShydHc4OV9idGNfODg1MmFfcmZfdWwpLAotCS5yZl9wYXJhX3VsaW5rCQk9IHJ0dzg5X2J0Y184ODUyYV9yZl91bCwKLQkucmZfcGFyYV9kbGlua19udW0JPSBBUlJBWV9TSVpFKHJ0dzg5X2J0Y184ODUyYV9yZl9kbCksCi0JLnJmX3BhcmFfZGxpbmsJCT0gcnR3ODlfYnRjXzg4NTJhX3JmX2RsLAomIzQzOwkucmZfcGFyYV91bGlua192MAk9IHJ0dzg5X2J0Y184ODUyYV9yZl91bF92MCwKJiM0MzsJLnJmX3BhcmFfZGxpbmtfdjAJPSBydHc4OV9idGNfODg1MmFfcmZfZGxfdjAsCiYjNDM7CS5yZl9wYXJhX3VsaW5rX251bV92MAk9IEFSUkFZX1NJWkUocnR3ODlfYnRjXzg4NTJhX3JmX3VsX3YwKSwKJiM0MzsJLnJmX3BhcmFfZGxpbmtfbnVtX3YwCT0gQVJSQVlfU0laRShydHc4OV9idGNfODg1MmFfcmZfZGxfdjApLAogCS5yZl9wYXJhX3VsaW5rX3Y5CT0gTlVMTCwKIAkucmZfcGFyYV9kbGlua192OQk9IE5VTEwsCiAJLnJmX3BhcmFfdWxpbmtfbnVtX3Y5CT0gMCwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmIuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmIuYwppbmRleCA0ZTdiMDY4YWFhNzViMS4uZGViY2RiMmVhY2Q2OTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmIuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJiLmMKQEAgLTMwNyw3ICYjNDM7MzA3LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9wbWFjX3JlZ3MgcnR3ODg1MmJfcG1hY19yZWdzID0gewogCS5hbXBkdV9jcmNfZXJyX21hc2sgPSBCX0NOVF9BTVBEVV9SWF9DUkMzMl9FUlIsCiB9OwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2J0Y19yZl90cnhfcGFyYSBydHc4OV9idGNfODg1MmJfcmZfdWxbXSA9IHsKJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2J0Y19yZl90cnhfcGFyYV92MCBydHc4OV9idGNfODg1MmJfcmZfdWxfdjBbXSA9IHsKIAl7MjU1LCAwLCAwLCA3fSwgLyogMCAtJmd0OyBvcmlnaW5hbCAqLwogCXsyNTUsIDIsIDAsIDd9LCAvKiAxIC0mZ3Q7IGZvciBCVC1jb25uZWN0ZWQgQUNJIGlzc3VlICZhbXA7JmFtcDsgQlRHIGNvLXJ4ICovCiAJezI1NSwgMCwgMCwgN30sIC8qIDIgLSZndDtyZXNlcnZlZCBmb3Igc2hhcmVkLWFudGVubmEgKi8KQEAgLTMxOSw3ICYjNDM7MzE5LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9idGNfcmZfdHJ4X3BhcmEgcnR3ODlfYnRjXzg4NTJiX3JmX3VsW10gPSB7CiAJezEzLCAxLCAwLCA3fQogfTsKIAotc3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9idGNfcmZfdHJ4X3BhcmEgcnR3ODlfYnRjXzg4NTJiX3JmX2RsW10gPSB7CiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9idGNfcmZfdHJ4X3BhcmFfdjAgcnR3ODlfYnRjXzg4NTJiX3JmX2RsX3YwW10gPSB7CiAJezI1NSwgMCwgMCwgN30sIC8qIDAgLSZndDsgb3JpZ2luYWwgKi8KIAl7MjU1LCAyLCAwLCA3fSwgLyogMSAtJmd0OyByZXNlcnZlZCBmb3Igc2hhcmVkLWFudGVubmEgKi8KIAl7MjU1LCAwLCAwLCA3fSwgLyogMiAtJmd0O3Jlc2VydmVkIGZvciBzaGFyZWQtYW50ZW5uYSAqLwpAQCAtMTA2MywxMCAmIzQzOzEwNjMsMTAgQEAgY29uc3Qgc3RydWN0IHJ0dzg5X2NoaXBfaW5mbyBydHc4ODUyYl9jaGlwX2luZm8gPSB7CiAJLnJzc2lfdG9sCQk9IDIsCiAJLm1vbl9yZWdfbnVtCQk9IEFSUkFZX1NJWkUocnR3ODlfYnRjXzg4NTJiX21vbl9yZWcpLAogCS5tb25fcmVnCQk9IHJ0dzg5X2J0Y184ODUyYl9tb25fcmVnLAotCS5yZl9wYXJhX3VsaW5rX251bQk9IEFSUkFZX1NJWkUocnR3ODlfYnRjXzg4NTJiX3JmX3VsKSwKLQkucmZfcGFyYV91bGluawkJPSBydHc4OV9idGNfODg1MmJfcmZfdWwsCi0JLnJmX3BhcmFfZGxpbmtfbnVtCT0gQVJSQVlfU0laRShydHc4OV9idGNfODg1MmJfcmZfZGwpLAotCS5yZl9wYXJhX2RsaW5rCQk9IHJ0dzg5X2J0Y184ODUyYl9yZl9kbCwKJiM0MzsJLnJmX3BhcmFfdWxpbmtfdjAJPSBydHc4OV9idGNfODg1MmJfcmZfdWxfdjAsCiYjNDM7CS5yZl9wYXJhX2RsaW5rX3YwCT0gcnR3ODlfYnRjXzg4NTJiX3JmX2RsX3YwLAomIzQzOwkucmZfcGFyYV91bGlua19udW1fdjAJPSBBUlJBWV9TSVpFKHJ0dzg5X2J0Y184ODUyYl9yZl91bF92MCksCiYjNDM7CS5yZl9wYXJhX2RsaW5rX251bV92MAk9IEFSUkFZX1NJWkUocnR3ODlfYnRjXzg4NTJiX3JmX2RsX3YwKSwKIAkucmZfcGFyYV91bGlua192OQk9IE5VTEwsCiAJLnJmX3BhcmFfZGxpbmtfdjkJPSBOVUxMLAogCS5yZl9wYXJhX3VsaW5rX251bV92OQk9IDAsCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJidC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYnQuYwppbmRleCA3ZmNjODc3ZjZlYTBjNC4uZmM4YTE3ZmI5NWY0N2QgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJ0LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYnQuYwpAQCAtMjUwLDcgJiM0MzsyNTAsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X3BtYWNfcmVncyBydHc4ODUyYnRfcG1hY19yZWdzID0gewogCS5hbXBkdV9jcmNfZXJyX21hc2sgPSBCX0NOVF9BTVBEVV9SWF9DUkMzMl9FUlIsCiB9OwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2J0Y19yZl90cnhfcGFyYSBydHc4OV9idGNfODg1MmJ0X3JmX3VsW10gPSB7CiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9idGNfcmZfdHJ4X3BhcmFfdjAgcnR3ODlfYnRjXzg4NTJidF9yZl91bF92MFtdID0gewogCXsyNTUsIDAsIDAsIDd9LCAvKiAwIC0mZ3Q7IG9yaWdpbmFsICovCiAJezI1NSwgMiwgMCwgN30sIC8qIDEgLSZndDsgZm9yIEJULWNvbm5lY3RlZCBBQ0kgaXNzdWUgJmFtcDsmYW1wOyBCVEcgY28tcnggKi8KIAl7MjU1LCAwLCAwLCA3fSwgLyogMiAtJmd0O3Jlc2VydmVkIGZvciBzaGFyZWQtYW50ZW5uYSAqLwpAQCAtMjYyLDcgJiM0MzsyNjIsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2J0Y19yZl90cnhfcGFyYSBydHc4OV9idGNfODg1MmJ0X3JmX3VsW10gPSB7CiAJezEzLCAxLCAwLCA3fQogfTsKIAotc3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9idGNfcmZfdHJ4X3BhcmEgcnR3ODlfYnRjXzg4NTJidF9yZl9kbFtdID0gewomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3JmX3RyeF9wYXJhX3YwIHJ0dzg5X2J0Y184ODUyYnRfcmZfZGxfdjBbXSA9IHsKIAl7MjU1LCAwLCAwLCA3fSwgLyogMCAtJmd0OyBvcmlnaW5hbCAqLwogCXsyNTUsIDIsIDAsIDd9LCAvKiAxIC0mZ3Q7IHJlc2VydmVkIGZvciBzaGFyZWQtYW50ZW5uYSAqLwogCXsyNTUsIDAsIDAsIDd9LCAvKiAyIC0mZ3Q7cmVzZXJ2ZWQgZm9yIHNoYXJlZC1hbnRlbm5hICovCkBAIC05MDIsMTAgJiM0Mzs5MDIsMTAgQEAgY29uc3Qgc3RydWN0IHJ0dzg5X2NoaXBfaW5mbyBydHc4ODUyYnRfY2hpcF9pbmZvID0gewogCS5yc3NpX3RvbAkJPSAyLAogCS5tb25fcmVnX251bQkJPSBBUlJBWV9TSVpFKHJ0dzg5X2J0Y184ODUyYnRfbW9uX3JlZyksCiAJLm1vbl9yZWcJCT0gcnR3ODlfYnRjXzg4NTJidF9tb25fcmVnLAotCS5yZl9wYXJhX3VsaW5rX251bQk9IEFSUkFZX1NJWkUocnR3ODlfYnRjXzg4NTJidF9yZl91bCksCi0JLnJmX3BhcmFfdWxpbmsJCT0gcnR3ODlfYnRjXzg4NTJidF9yZl91bCwKLQkucmZfcGFyYV9kbGlua19udW0JPSBBUlJBWV9TSVpFKHJ0dzg5X2J0Y184ODUyYnRfcmZfZGwpLAotCS5yZl9wYXJhX2RsaW5rCQk9IHJ0dzg5X2J0Y184ODUyYnRfcmZfZGwsCiYjNDM7CS5yZl9wYXJhX3VsaW5rX3YwCT0gcnR3ODlfYnRjXzg4NTJidF9yZl91bF92MCwKJiM0MzsJLnJmX3BhcmFfZGxpbmtfdjAJPSBydHc4OV9idGNfODg1MmJ0X3JmX2RsX3YwLAomIzQzOwkucmZfcGFyYV91bGlua19udW1fdjAJPSBBUlJBWV9TSVpFKHJ0dzg5X2J0Y184ODUyYnRfcmZfdWxfdjApLAomIzQzOwkucmZfcGFyYV9kbGlua19udW1fdjAJPSBBUlJBWV9TSVpFKHJ0dzg5X2J0Y184ODUyYnRfcmZfZGxfdjApLAogCS5yZl9wYXJhX3VsaW5rX3Y5CT0gTlVMTCwKIAkucmZfcGFyYV9kbGlua192OQk9IE5VTEwsCiAJLnJmX3BhcmFfdWxpbmtfbnVtX3Y5CT0gMCwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmMuYwppbmRleCAzODYxY2NlNDJiMWJhMi4uYmVjNmFhNTc0ZTlkNzkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjLmMKQEAgLTI4NjMsNyAmIzQzOzI4NjMsNyBAQCBzOCBydHc4ODUyY19idGNfZ2V0X2J0X3Jzc2koc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBzOCB2YWwpCiAJcmV0dXJuIGNsYW1wX3QoczgsIHZhbCAmIzQzOyA2LCAtMTAwLCAwKSAmIzQzOyAxMDA7CiB9CiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3JmX3RyeF9wYXJhIHJ0dzg5X2J0Y184ODUyY19yZl91bFtdID0gewomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3JmX3RyeF9wYXJhX3YwIHJ0dzg5X2J0Y184ODUyY19yZl91bF92MFtdID0gewogCXsyNTUsIDAsIDAsIDd9LCAvKiAwIC0mZ3Q7IG9yaWdpbmFsICovCiAJezI1NSwgMiwgMCwgN30sIC8qIDEgLSZndDsgZm9yIEJULWNvbm5lY3RlZCBBQ0kgaXNzdWUgJmFtcDsmYW1wOyBCVEcgY28tcnggKi8KIAl7MjU1LCAwLCAwLCA3fSwgLyogMiAtJmd0O3Jlc2VydmVkIGZvciBzaGFyZWQtYW50ZW5uYSAqLwpAQCAtMjg3NSw3ICYjNDM7Mjg3NSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3JmX3RyeF9wYXJhIHJ0dzg5X2J0Y184ODUyY19yZl91bFtdID0gewogCXsxMywgMSwgMCwgN30KIH07CiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3JmX3RyeF9wYXJhIHJ0dzg5X2J0Y184ODUyY19yZl9kbFtdID0gewomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3JmX3RyeF9wYXJhX3YwIHJ0dzg5X2J0Y184ODUyY19yZl9kbF92MFtdID0gewogCXsyNTUsIDAsIDAsIDd9LCAvKiAwIC0mZ3Q7IG9yaWdpbmFsICovCiAJezI1NSwgMiwgMCwgN30sIC8qIDEgLSZndDsgcmVzZXJ2ZWQgZm9yIHNoYXJlZC1hbnRlbm5hICovCiAJezI1NSwgMCwgMCwgN30sIC8qIDIgLSZndDtyZXNlcnZlZCBmb3Igc2hhcmVkLWFudGVubmEgKi8KQEAgLTMyNzAsMTAgJiM0MzszMjcwLDEwIEBAIGNvbnN0IHN0cnVjdCBydHc4OV9jaGlwX2luZm8gcnR3ODg1MmNfY2hpcF9pbmZvID0gewogCS5yc3NpX3RvbAkJPSAyLAogCS5tb25fcmVnX251bQkJPSBBUlJBWV9TSVpFKHJ0dzg5X2J0Y184ODUyY19tb25fcmVnKSwKIAkubW9uX3JlZwkJPSBydHc4OV9idGNfODg1MmNfbW9uX3JlZywKLQkucmZfcGFyYV91bGlua19udW0JPSBBUlJBWV9TSVpFKHJ0dzg5X2J0Y184ODUyY19yZl91bCksCi0JLnJmX3BhcmFfdWxpbmsJCT0gcnR3ODlfYnRjXzg4NTJjX3JmX3VsLAotCS5yZl9wYXJhX2RsaW5rX251bQk9IEFSUkFZX1NJWkUocnR3ODlfYnRjXzg4NTJjX3JmX2RsKSwKLQkucmZfcGFyYV9kbGluawkJPSBydHc4OV9idGNfODg1MmNfcmZfZGwsCiYjNDM7CS5yZl9wYXJhX3VsaW5rX3YwCT0gcnR3ODlfYnRjXzg4NTJjX3JmX3VsX3YwLAomIzQzOwkucmZfcGFyYV9kbGlua192MAk9IHJ0dzg5X2J0Y184ODUyY19yZl9kbF92MCwKJiM0MzsJLnJmX3BhcmFfdWxpbmtfbnVtX3YwCT0gQVJSQVlfU0laRShydHc4OV9idGNfODg1MmNfcmZfdWxfdjApLAomIzQzOwkucmZfcGFyYV9kbGlua19udW1fdjAJPSBBUlJBWV9TSVpFKHJ0dzg5X2J0Y184ODUyY19yZl9kbF92MCksCiAJLnJmX3BhcmFfdWxpbmtfdjkJPSBOVUxMLAogCS5yZl9wYXJhX2RsaW5rX3Y5CT0gTlVMTCwKIAkucmZfcGFyYV91bGlua19udW1fdjkJPSAwLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYS5jCmluZGV4IGFkMzYxOGRmZDU3ZDAwLi42ZDQzMDE2NjFiMDRiNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmEuYwpAQCAtMjc0NSw3ICYjNDM7Mjc0NSw3IEBAIHN0YXRpYyB2b2lkIHJ0dzg5MjJhX2J0Y19zZXRfcmZlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldikKIAlpZiAobW9kdWxlLSZndDtrdF92ZXIgJmx0Oz0gMSkKIAkJbW9kdWxlLSZndDt3YV90eXBlIHw9IEJUQ19XQV9IRlBfWkI7CiAKLQlydHdkZXYtJmd0O2J0Yy5jeC5vdGhlci50eXBlID0gQlRDXzNDWF9OT05FOwomIzQzOwlydHdkZXYtJmd0O2J0Yy5jeC5idF9leHQuZnVuY190eXBlID0gQlRDXzNDWF9OT05FOwogCiAJaWYgKG1vZHVsZS0mZ3Q7cmZlX3R5cGUgPT0gMCkgewogCQlydHdkZXYtJmd0O2J0Yy5kbS5lcnJvci5tYXAucmZlX3R5cGUwID0gdHJ1ZTsKQEAgLTI4NzQsNyAmIzQzOzI4NzQsNyBAQCBzOCBydHc4OTIyYV9idGNfZ2V0X2J0X3Jzc2koc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBzOCB2YWwpCiAJcmV0dXJuIGNsYW1wX3QoczgsIHZhbCwgLTEwMCwgMCkgJiM0MzsgMTAwOwogfQogCi1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2J0Y19yZl90cnhfcGFyYSBydHc4OV9idGNfODkyMmFfcmZfdWxbXSA9IHsKJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2J0Y19yZl90cnhfcGFyYV92MCBydHc4OV9idGNfODkyMmFfcmZfdWxfdjBbXSA9IHsKIAl7MjU1LCAwLCAwLCA3fSwgLyogMCAtJmd0OyBvcmlnaW5hbCAqLwogCXsyNTUsIDIsIDAsIDd9LCAvKiAxIC0mZ3Q7IGZvciBCVC1jb25uZWN0ZWQgQUNJIGlzc3VlICZhbXA7JmFtcDsgQlRHIGNvLXJ4ICovCiAJezI1NSwgMCwgMCwgN30sIC8qIDIgLSZndDtyZXNlcnZlZCBmb3Igc2hhcmVkLWFudGVubmEgKi8KQEAgLTI4ODYsNyAmIzQzOzI4ODYsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2J0Y19yZl90cnhfcGFyYSBydHc4OV9idGNfODkyMmFfcmZfdWxbXSA9IHsKIAl7MTMsIDEsIDAsIDd9CiB9OwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2J0Y19yZl90cnhfcGFyYSBydHc4OV9idGNfODkyMmFfcmZfZGxbXSA9IHsKJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2J0Y19yZl90cnhfcGFyYV92MCBydHc4OV9idGNfODkyMmFfcmZfZGxfdjBbXSA9IHsKIAl7MjU1LCAwLCAwLCA3fSwgLyogMCAtJmd0OyBvcmlnaW5hbCAqLwogCXsyNTUsIDIsIDAsIDd9LCAvKiAxIC0mZ3Q7IHJlc2VydmVkIGZvciBzaGFyZWQtYW50ZW5uYSAqLwogCXsyNTUsIDAsIDAsIDd9LCAvKiAyIC0mZ3Q7cmVzZXJ2ZWQgZm9yIHNoYXJlZC1hbnRlbm5hICovCkBAIC0zMjU0LDEwICYjNDM7MzI1NCwxMCBAQCBjb25zdCBzdHJ1Y3QgcnR3ODlfY2hpcF9pbmZvIHJ0dzg5MjJhX2NoaXBfaW5mbyA9IHsKIAkucnNzaV90b2wJCT0gMiwKIAkubW9uX3JlZ19udW0JCT0gQVJSQVlfU0laRShydHc4OV9idGNfODkyMmFfbW9uX3JlZyksCiAJLm1vbl9yZWcJCT0gcnR3ODlfYnRjXzg5MjJhX21vbl9yZWcsCi0JLnJmX3BhcmFfdWxpbmtfbnVtCT0gQVJSQVlfU0laRShydHc4OV9idGNfODkyMmFfcmZfdWwpLAotCS5yZl9wYXJhX3VsaW5rCQk9IHJ0dzg5X2J0Y184OTIyYV9yZl91bCwKLQkucmZfcGFyYV9kbGlua19udW0JPSBBUlJBWV9TSVpFKHJ0dzg5X2J0Y184OTIyYV9yZl9kbCksCi0JLnJmX3BhcmFfZGxpbmsJCT0gcnR3ODlfYnRjXzg5MjJhX3JmX2RsLAomIzQzOwkucmZfcGFyYV91bGlua192MAk9IHJ0dzg5X2J0Y184OTIyYV9yZl91bF92MCwKJiM0MzsJLnJmX3BhcmFfZGxpbmtfdjAJPSBydHc4OV9idGNfODkyMmFfcmZfZGxfdjAsCiYjNDM7CS5yZl9wYXJhX3VsaW5rX251bV92MAk9IEFSUkFZX1NJWkUocnR3ODlfYnRjXzg5MjJhX3JmX3VsX3YwKSwKJiM0MzsJLnJmX3BhcmFfZGxpbmtfbnVtX3YwCT0gQVJSQVlfU0laRShydHc4OV9idGNfODkyMmFfcmZfZGxfdjApLAogCS5yZl9wYXJhX3VsaW5rX3Y5CT0gTlVMTCwKIAkucmZfcGFyYV9kbGlua192OQk9IE5VTEwsCiAJLnJmX3BhcmFfdWxpbmtfbnVtX3Y5CT0gMCwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYwppbmRleCA4MzhjMjYyMzE4OTdkNi4uZjc4ZDZkNDZlNjVmYmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMKQEAgLTI5OTcsNiAmIzQzOzI5OTcsNDYgQEAgc3RhdGljIHUzMiBydHc4OTIyZF9jaGFuX3RvX3JmMThfdmFsKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwKIAogc3RhdGljIHZvaWQgcnR3ODkyMmRfYnRjX3NldF9yZmUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KQogewomIzQzOwl1bmlvbiBydHc4OV9idGNfbW9kdWxlX2luZm8gKm1kID0gJmFtcDtydHdkZXYtJmd0O2J0Yy5tZGluZm87CiYjNDM7CXN0cnVjdCBydHc4OV9idGNfbW9kdWxlX3Y3ICptb2R1bGUgPSAmYW1wO21kLSZndDttZF92NzsKJiM0MzsKJiM0MzsJbW9kdWxlLSZndDtyZmVfdHlwZSA9IHJ0d2Rldi0mZ3Q7ZWZ1c2UucmZlX3R5cGU7CiYjNDM7CW1vZHVsZS0mZ3Q7a3RfdmVyID0gcnR3ZGV2LSZndDtoYWwuY3Y7CiYjNDM7CW1vZHVsZS0mZ3Q7YnRfc29sbyA9IDA7CiYjNDM7CW1vZHVsZS0mZ3Q7c3dpdGNoX3R5cGUgPSBCVENfU1dJVENIX0lOVEVSTkFMOwomIzQzOwltb2R1bGUtJmd0O3dhX3R5cGUgPSAwOwomIzQzOwomIzQzOwltb2R1bGUtJmd0O2FudC50eXBlID0gQlRDX0FOVF9TSEFSRUQ7CiYjNDM7CW1vZHVsZS0mZ3Q7YW50Lm51bSA9IDI7CiYjNDM7CW1vZHVsZS0mZ3Q7YW50Lmlzb2xhdGlvbiA9IDEwOwomIzQzOwltb2R1bGUtJmd0O2FudC5kaXZlcnNpdHkgPSAwOwomIzQzOwltb2R1bGUtJmd0O2FudC5zaW5nbGVfcG9zID0gUkZfUEFUSF9BOwomIzQzOwltb2R1bGUtJmd0O2FudC5idGdfcG9zID0gUkZfUEFUSF9COwomIzQzOwomIzQzOwlpZiAobW9kdWxlLSZndDtrdF92ZXIgJmx0Oz0gMSkKJiM0MzsJCW1vZHVsZS0mZ3Q7d2FfdHlwZSB8PSBCVENfV0FfSEZQX1pCOwomIzQzOwomIzQzOwlydHdkZXYtJmd0O2J0Yy5jeC5idF9leHQuZnVuY190eXBlID0gQlRDXzNDWF9OT05FOwomIzQzOwomIzQzOwlpZiAobW9kdWxlLSZndDtyZmVfdHlwZSA9PSAwKSB7CiYjNDM7CQlydHdkZXYtJmd0O2J0Yy5kbS5lcnJvci5tYXAucmZlX3R5cGUwID0gdHJ1ZTsKJiM0MzsJCXJldHVybjsKJiM0MzsJfQomIzQzOwomIzQzOwltb2R1bGUtJmd0O2FudC5udW0gPSAobW9kdWxlLSZndDtyZmVfdHlwZSAlIDIpID8gIDIgOiAzOwomIzQzOwomIzQzOwlpZiAobW9kdWxlLSZndDtrdF92ZXIgPT0gMCkKJiM0MzsJCW1vZHVsZS0mZ3Q7YW50Lm51bSA9IDI7CiYjNDM7CiYjNDM7CWlmIChtb2R1bGUtJmd0O2FudC5udW0gPT0gMykgewomIzQzOwkJbW9kdWxlLSZndDthbnQudHlwZSA9IEJUQ19BTlRfREVESUNBVEVEOwomIzQzOwkJbW9kdWxlLSZndDtidF9wb3MgPSBCVENfQlRfQUxPTkU7CiYjNDM7CX0gZWxzZSB7CiYjNDM7CQltb2R1bGUtJmd0O2FudC50eXBlID0gQlRDX0FOVF9TSEFSRUQ7CiYjNDM7CQltb2R1bGUtJmd0O2J0X3BvcyA9IEJUQ19CVF9CVEc7CiYjNDM7CX0KJiM0MzsJcnR3ZGV2LSZndDtidGMuYnRnX3BvcyA9IG1vZHVsZS0mZ3Q7YW50LmJ0Z19wb3M7CiYjNDM7CXJ0d2Rldi0mZ3Q7YnRjLmFudF90eXBlID0gbW9kdWxlLSZndDthbnQudHlwZTsKIH0KIAogc3RhdGljIHZvaWQgcnR3ODkyMmRfYnRjX2luaXRfY2ZnKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldikKQEAgLTMzOTAsNiAmIzQzOzM0MzAsMTAgQEAgY29uc3Qgc3RydWN0IHJ0dzg5X2NoaXBfaW5mbyBydHc4OTIyZF9jaGlwX2luZm8gPSB7CiAJLnJzc2lfdG9sCQk9IDIsCiAJLm1vbl9yZWdfbnVtCQk9IEFSUkFZX1NJWkUocnR3ODlfYnRjXzg5MjJkX21vbl9yZWcpLAogCS5tb25fcmVnCQk9IHJ0dzg5X2J0Y184OTIyZF9tb25fcmVnLAomIzQzOwkucmZfcGFyYV91bGlua192MAk9IE5VTEwsCiYjNDM7CS5yZl9wYXJhX2RsaW5rX3YwCT0gTlVMTCwKJiM0MzsJLnJmX3BhcmFfdWxpbmtfbnVtX3YwCT0gMCwKJiM0MzsJLnJmX3BhcmFfZGxpbmtfbnVtX3YwCT0gMCwKIAkucmZfcGFyYV91bGlua192OQk9IHJ0dzg5X2J0Y184OTIyZF9yZl91bF92OSwKIAkucmZfcGFyYV9kbGlua192OQk9IHJ0dzg5X2J0Y184OTIyZF9yZl9kbF92OSwKIAkucmZfcGFyYV91bGlua19udW1fdjkJPSBBUlJBWV9TSVpFKHJ0dzg5X2J0Y184OTIyZF9yZl91bF92OSksCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDAzOjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY3MTcwCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNjU3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUmVhY2hhYmlsaXR5IG9mIGEgUmVhbHRlayBXaS1GaSBEcml2ZXIgaW4gYSBWaXJ0dWFsaXplZCBFbnZpcm9ubWVudCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGhpdHMgdGhlIEJsdWV0b290aCBjb2V4aXN0ZW5jZSAoQlRDKSBsb2dpYyB3aXRoaW4gdGhlIFJlYWx0ZWsgV2ktRmkgZHJpdmVycywgc3BlY2lmaWNhbGx5IGluIGBydHc4OS9jb2V4LmNgIGFuZCByZWxhdGVkIGZpbGVzLiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIGFkZGluZyBzdXBwb3J0IGZvciBSVEw4OTIyRCBhbmQgUlRMODkyMkEsIHVwZGF0aW5nIHNvbWUgZmlybXdhcmUgbWFwcGluZ3MgYW5kIHN0cnVjdHVyZXMgcmVsYXRlZCB0byBQSFkgdmVyc2lvbnMuIFRoaXMgbWVhbnMgaXQmIzM5O3MgZnVuZGFtZW50YWxseSBjaGFuZ2luZyBob3cgdGhlIGRyaXZlciAqYmVoYXZlcyogaW4gaXRzIGludGVyYWN0aW9uIHdpdGggQmx1ZXRvb3RoLCB3aGljaCBpcyBhbiBpbnRlcmVzdGluZyBwb2ludC4KCk5vdywgbXkga2V5IGNvbmNlcm4gaXMgd2hldGhlciB0aGlzIGlzICpmdXp6YWJsZSouIFRoZSBwcm9tcHQgd2FudHMgbWUgdG8gZmlndXJlIG91dCBpZiB0aGlzIGNvZGUgaXMgcmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFRoZSBvYnZpb3VzIHRoaW5nIGlzIHRoYXQgV2ktRmkgZHJpdmVycywgYnkgdGhlaXIgdmVyeSBuYXR1cmUsIGRlcGVuZCBvbiBzcGVjaWZpYyBoYXJkd2FyZS4gV2Ugb2Z0ZW4gY2FuJiMzOTt0IGp1c3Qgc3BpbiB1cCBhIHZpcnR1YWwgbWFjaGluZSBhbmQgZXhwZWN0IGEgV2ktRmkgZHJpdmVyIHRvIG1hZ2ljYWxseSB3b3JrIHdpdGhvdXQgc29tZSBraW5kIG9mIGhhcmR3YXJlIGVtdWxhdGlvbi4gYG1hYzgwMjExX2h3c2ltYCBpcyBvZnRlbiBhIGdvLXRvIGZvciBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZS4gQnV0IGBydHc4OWAgaXMgYSBkcml2ZXIgZm9yICpyZWFsKiBoYXJkd2FyZS4KClRoZSBxdWVzdGlvbiB0aGVuIGlzLCBjYW4gdGhpcyBzcGVjaWZpYyBgcnR3ODlgIGRyaXZlciBiZSBmdXp6ZWQ/IFRoZSBwcm9tcHQgKnNwZWNpZmljYWxseSogdGVsbHMgbWUgdG8gc2F5ICYjMzQ7ZmFsc2UmIzM0OyBpZiB0aGUgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIGV2ZW4gd2l0aCBlbXVsYXRlZCBoYXJkd2FyZS4gU28sIGlzIGBydHc4OWAgcmVhY2hhYmxlIGluIFFFTVU/IFR5cGljYWxseSwgUENJIG9yIFVTQiBXaS1GaSBkcml2ZXJzIGZvciBzcGVjaWZpYyBoYXJkd2FyZSwgbGlrZSB0aGlzIFJlYWx0ZWsgODg1Mi84OTIyLCBhcmUgZGlmZmljdWx0IHRvIHJlYWNoIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFdlIG5lZWQgYSBzb2Z0d2FyZSBlbXVsYXRvciBmb3IgdGhlIHNwZWNpZmljIGhhcmR3YXJlLCBhbmQgdGhhdCBkb2VzbiYjMzk7dCB1c3VhbGx5IGV4aXN0LgoKSG93ZXZlciwgSSB2YWd1ZWx5IHJlY2FsbCBzb21ldGhpbmcgYWJvdXQgc3l6a2FsbGVyIGhhdmluZyB0aGUgYWJpbGl0eSB0byBmdXp6IFBDSS9VU0IgZGV2aWNlcyB1c2luZyBgdmhjaS9kdW1teSBoY2RgIG9yIFBDSSBmdXp6aW5nLiBJIG5lZWQgdG8gY2hlY2sgaWYgdGhlcmUgaXMgKmFueSogZnV6emluZyBmb3IgdGhpcyBzcGVjaWZpYyBgcnR3ODlgIGRyaXZlci4gT2theSwgaXQgc2VlbXMgbGlrZSBzeXprYWxsZXIgZG9lcyBvZmZlciBQQ0kgYW5kIFVTQiBmdXp6aW5nIGNhcGFiaWxpdGllcyB0aHJvdWdoIGBzeXpfcGNpX2RldmljZWAgb3IgYHN5el91c2JfY29ubmVjdGAuIFRoZSBxdWVzdGlvbiBpcywgaXMgYHJ0dzg5YCB0cnVseSByZWFjaGFibGUgd2l0aCB0aGVzZSBmdXp6aW5nIHRlY2huaXF1ZXM/IEl0IGlzIGEgUENJL1NESU8vVVNCIGRyaXZlciwgc28gdGhhdCBzb3VuZHMgcHJvbWlzaW5nLgoKVGhlIHByb21wdCwgdGhvdWdoLCBrZWVwcyBlY2hvaW5nIGluIG15IG1pbmQ6ICYjMzQ7ZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSYjMzQ7LiBTbywgaWYgdGhpcyBpcyBhIHJlYWwgaGFyZHdhcmUgZHJpdmVyLCBhbmQgd2UgZG9uJiMzOTt0IGhhdmUgKnNwZWNpZmljKiBlbXVsYXRpb24gZm9yIGl0LCB0aGVuIGl0JiMzOTtzIHByb2JhYmx5ICp1bnJlYWNoYWJsZSouIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgYHJ0dzg5YCBoYXMgVVNCIHN1cHBvcnQuIExldCBtZSBjaGVjay4uLiBJcyB0aGVyZSBhIGBkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jYCBmaWxlPyBPa2F5LCBsZXQgbWUgcXVpY2tseSBxdWVyeSB0aGUgY29kZSBpbmRleCBvbiB0aGUgYHJ0dzg5YCBkaXJlY3RvcnkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMDM6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5jb2Rlc2VhcmNoLWRpci1pbmRleDwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RGlyJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZXMmIzM0OzogWwogICAgJiMzNDthY3BpLmMmIzM0OywKICAgICYjMzQ7YWNwaS5oJiMzNDssCiAgICAmIzM0O2NhbS5jJiMzNDssCiAgICAmIzM0O2NhbS5oJiMzNDssCiAgICAmIzM0O2NoYW4uYyYjMzQ7LAogICAgJiMzNDtjaGFuLmgmIzM0OywKICAgICYjMzQ7Y29leC5jJiMzNDssCiAgICAmIzM0O2NvZXguaCYjMzQ7LAogICAgJiMzNDtjb3JlLmMmIzM0OywKICAgICYjMzQ7Y29yZS5oJiMzNDssCiAgICAmIzM0O2RlYnVnLmMmIzM0OywKICAgICYjMzQ7ZGVidWcuaCYjMzQ7LAogICAgJiMzNDtlZnVzZS5jJiMzNDssCiAgICAmIzM0O2VmdXNlLmgmIzM0OywKICAgICYjMzQ7ZWZ1c2VfYmUuYyYjMzQ7LAogICAgJiMzNDtmdy5jJiMzNDssCiAgICAmIzM0O2Z3LmgmIzM0OywKICAgICYjMzQ7bWFjLmMmIzM0OywKICAgICYjMzQ7bWFjLmgmIzM0OywKICAgICYjMzQ7bWFjODAyMTEuYyYjMzQ7LAogICAgJiMzNDttYWNfYmUuYyYjMzQ7LAogICAgJiMzNDtwY2kuYyYjMzQ7LAogICAgJiMzNDtwY2kuaCYjMzQ7LAogICAgJiMzNDtwY2lfYmUuYyYjMzQ7LAogICAgJiMzNDtwaHkuYyYjMzQ7LAogICAgJiMzNDtwaHkuaCYjMzQ7LAogICAgJiMzNDtwaHlfYmUuYyYjMzQ7LAogICAgJiMzNDtwcy5jJiMzNDssCiAgICAmIzM0O3BzLmgmIzM0OywKICAgICYjMzQ7cmVnLmgmIzM0OywKICAgICYjMzQ7cmVnZC5jJiMzNDssCiAgICAmIzM0O3J0dzg4NTFiLmMmIzM0OywKICAgICYjMzQ7cnR3ODg1MWIuaCYjMzQ7LAogICAgJiMzNDtydHc4ODUxYl9yZmsuYyYjMzQ7LAogICAgJiMzNDtydHc4ODUxYl9yZmsuaCYjMzQ7LAogICAgJiMzNDtydHc4ODUxYl9yZmtfdGFibGUuYyYjMzQ7LAogICAgJiMzNDtydHc4ODUxYl9yZmtfdGFibGUuaCYjMzQ7LAogICAgJiMzNDtydHc4ODUxYl90YWJsZS5jJiMzNDssCiAgICAmIzM0O3J0dzg4NTFiX3RhYmxlLmgmIzM0OywKICAgICYjMzQ7cnR3ODg1MWJlLmMmIzM0OywKICAgICYjMzQ7cnR3ODg1MWJ1LmMmIzM0OywKICAgICYjMzQ7cnR3ODg1MmEuYyYjMzQ7LAogICAgJiMzNDtydHc4ODUyYS5oJiMzNDssCiAgICAmIzM0O3J0dzg4NTJhX3Jmay5jJiMzNDssCiAgICAmIzM0O3J0dzg4NTJhX3Jmay5oJiMzNDssCiAgICAmIzM0O3J0dzg4NTJhX3Jma190YWJsZS5jJiMzNDssCiAgICAmIzM0O3J0dzg4NTJhX3Jma190YWJsZS5oJiMzNDssCiAgICAmIzM0O3J0dzg4NTJhX3RhYmxlLmMmIzM0OywKICAgICYjMzQ7cnR3ODg1MmFfdGFibGUuaCYjMzQ7LAogICAgJiMzNDtydHc4ODUyYWUuYyYjMzQ7LAogICAgJiMzNDtydHc4ODUyYXUuYyYjMzQ7LAogICAgJiMzNDtydHc4ODUyYi5jJiMzNDssCiAgICAmIzM0O3J0dzg4NTJiLmgmIzM0OywKICAgICYjMzQ7cnR3ODg1MmJfY29tbW9uLmMmIzM0OywKICAgICYjMzQ7cnR3ODg1MmJfY29tbW9uLmgmIzM0OywKICAgICYjMzQ7cnR3ODg1MmJfcmZrLmMmIzM0OywKICAgICYjMzQ7cnR3ODg1MmJfcmZrLmgmIzM0OywKICAgICYjMzQ7cnR3ODg1MmJfcmZrX3RhYmxlLmMmIzM0OywKICAgICYjMzQ7cnR3ODg1MmJfcmZrX3RhYmxlLmgmIzM0OywKICAgICYjMzQ7cnR3ODg1MmJfdGFibGUuYyYjMzQ7LAogICAgJiMzNDtydHc4ODUyYl90YWJsZS5oJiMzNDssCiAgICAmIzM0O3J0dzg4NTJiZS5jJiMzNDssCiAgICAmIzM0O3J0dzg4NTJidC5jJiMzNDssCiAgICAmIzM0O3J0dzg4NTJidC5oJiMzNDssCiAgICAmIzM0O3J0dzg4NTJidF9yZmsuYyYjMzQ7LAogICAgJiMzNDtydHc4ODUyYnRfcmZrLmgmIzM0OywKICAgICYjMzQ7cnR3ODg1MmJ0X3Jma190YWJsZS5jJiMzNDssCiAgICAmIzM0O3J0dzg4NTJidF9yZmtfdGFibGUuaCYjMzQ7LAogICAgJiMzNDtydHc4ODUyYnRlLmMmIzM0OywKICAgICYjMzQ7cnR3ODg1MmJ1LmMmIzM0OywKICAgICYjMzQ7cnR3ODg1MmMuYyYjMzQ7LAogICAgJiMzNDtydHc4ODUyYy5oJiMzNDssCiAgICAmIzM0O3J0dzg4NTJjX3Jmay5jJiMzNDssCiAgICAmIzM0O3J0dzg4NTJjX3Jmay5oJiMzNDssCiAgICAmIzM0O3J0dzg4NTJjX3Jma190YWJsZS5jJiMzNDssCiAgICAmIzM0O3J0dzg4NTJjX3Jma190YWJsZS5oJiMzNDssCiAgICAmIzM0O3J0dzg4NTJjX3RhYmxlLmMmIzM0OywKICAgICYjMzQ7cnR3ODg1MmNfdGFibGUuaCYjMzQ7LAogICAgJiMzNDtydHc4ODUyY2UuYyYjMzQ7LAogICAgJiMzNDtydHc4ODUyY3UuYyYjMzQ7LAogICAgJiMzNDtydHc4OTIyYS5jJiMzNDssCiAgICAmIzM0O3J0dzg5MjJhLmgmIzM0OywKICAgICYjMzQ7cnR3ODkyMmFfcmZrLmMmIzM0OywKICAgICYjMzQ7cnR3ODkyMmFfcmZrLmgmIzM0OywKICAgICYjMzQ7cnR3ODkyMmFlLmMmIzM0OywKICAgICYjMzQ7cnR3ODkyMmF1LmMmIzM0OywKICAgICYjMzQ7cnR3ODkyMmQuYyYjMzQ7LAogICAgJiMzNDtydHc4OTIyZC5oJiMzNDssCiAgICAmIzM0O3J0dzg5MjJkX3Jmay5jJiMzNDssCiAgICAmIzM0O3J0dzg5MjJkX3Jmay5oJiMzNDssCiAgICAmIzM0O3J0dzg5MjJkZS5jJiMzNDssCiAgICAmIzM0O3Nhci5jJiMzNDssCiAgICAmIzM0O3Nhci5oJiMzNDssCiAgICAmIzM0O3Nlci5jJiMzNDssCiAgICAmIzM0O3Nlci5oJiMzNDssCiAgICAmIzM0O3R4cnguaCYjMzQ7LAogICAgJiMzNDt1c2IuYyYjMzQ7LAogICAgJiMzNDt1c2IuaCYjMzQ7LAogICAgJiMzNDt1dGlsLmMmIzM0OywKICAgICYjMzQ7dXRpbC5oJiMzNDssCiAgICAmIzM0O3dvdy5jJiMzNDssCiAgICAmIzM0O3dvdy5oJiMzNDsKICBdLAogICYjMzQ7U3ViZGlycyYjMzQ7OiBudWxsCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAwMzo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2OTU4OQoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDEwNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBSZWFsdGVrIFdpRmkgRHJpdmVyIENvZGUqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgSSBzZWUgYSBidW5jaCBvZiBgLmNgIGZpbGVzIOKAkyBgdXNiLmNgLCBgcnR3ODg1MmF1LmNgLCBgcnR3ODg1MmJ1LmNgLCBgcnR3ODg1MmN1LmNgLCBhbmQgYHJ0dzg5MjJhdS5jYC4gVGhlIHByZXNlbmNlIG9mIGB1c2IuY2AgaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhpcyB0aGluZyYjMzk7cyBnb3QgVVNCIHN1cHBvcnQuIE5vdywgdGhhdCYjMzk7cyBpbnRlcmVzdGluZyBiZWNhdXNlIGl0IG1lYW5zIEkgY2FuIHByb2JhYmx5IGhpdCB0aGlzIGRyaXZlciB3aXRoIFN5emthbGxlciB1c2luZyBgZHVtbXlfaGNkYC4gVGhlIGltcGxpY2F0aW9uIHRoZXJlIGlzIHRoYXQgSSBjYW4gcmVhY2ggdGhpcyBjb2RlIHdpdGhpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IOKAkyB3aGljaCBpcyBhIGh1Z2UgYWR2YW50YWdlIGZvciBmdXp6aW5nIGFuZCBkZWJ1Z2dpbmcsIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggY29tcGxleCBkcml2ZXJzIGxpa2UgdGhlc2UgUmVhbHRlayBXaUZpIGltcGxlbWVudGF0aW9ucy4gVGhhdCYjMzk7cyBnb29kIG5ld3MuIE15IG5leHQgc3RlcCB3aWxsIGJlIHRvIGRpdmUgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBmb3IgYHJ0dzg5YCwganVzdCB0byBmaWd1cmUgb3V0IHdoYXQgY29uZmlndXJhdGlvbnMgbmVlZCB0byBiZSBlbmFibGVkIHRvIHByb3Blcmx5IGV4ZXJjaXNlIHRoaXMgY29kZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmUgYWxsIHRoZSBuZWNlc3Nhcnkgb3B0aW9ucyBzZXQgdG8gZ2V0IHRoaXMgdGhpbmcgdXAgYW5kIHJ1bm5pbmcgZm9yIG15IGZ1enppbmcgY2FtcGFpZ24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMDM6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFJUVzg5JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1IgQlNELTMtQ2xhdXNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MjptZW51Y29uZmlnIFJUVzg5XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODAyLjExYXggd2lyZWxlc3MgY2hpcHMgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZz0xMT1pZiBSVFc4OVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjEzOmNvbmZpZyBSVFc4OV9DT1JFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTQtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxNzpjb25maWcgUlRXODlfUENJXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTgtXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjIwOmNvbmZpZyBSVFc4OV9VU0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0yMS1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MjM6Y29uZmlnIFJUVzg5Xzg4NTFCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMjQtXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTI1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjI2OmNvbmZpZyBSVFc4OV84ODUyQVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTI3LVx0dHJpc3RhdGVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0yOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoyOTpjb25maWcgUlRXODlfODg1MkJfQ09NTU9OXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzAtXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTMxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjMyOmNvbmZpZyBSVFc4OV84ODUyQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTMzLVx0dHJpc3RhdGVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0zNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzozNTpjb25maWcgUlRXODlfODg1MkJUXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzYtXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTM3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjM4OmNvbmZpZyBSVFc4OV84ODUyQ1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTM5LVx0dHJpc3RhdGVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy00MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo0MTpjb25maWcgUlRXODlfODkyMkFcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy00Mi1cdHRyaXN0YXRlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6NDQ6Y29uZmlnIFJUVzg5Xzg4NTFCRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTQ1LVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4ODUxQkUgUENJIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6NTU6Y29uZmlnIFJUVzg5Xzg4NTFCVVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTU2LVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4ODUxQlUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNjUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6NjY6Y29uZmlnIFJUVzg5Xzg4NTJBRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTY3LVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4ODUyQUUgUENJIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6Nzc6Y29uZmlnIFJUVzg5Xzg4NTJBVVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTc4LVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4ODUyQVUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctODctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6ODg6Y29uZmlnIFJUVzg5Xzg4NTJCRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTg5LVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4ODUyQkUgUENJIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctOTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTAwOmNvbmZpZyBSVFc4OV84ODUyQlVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xMDEtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4NTJCVSBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xMTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTEyOmNvbmZpZyBSVFc4OV84ODUyQlRFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTEzLVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4ODUyQkUtVlQgUENJIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTIzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjEyNDpjb25maWcgUlRXODlfODg1MkNFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTI1LVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4ODUyQ0UgUENJIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDZFKSBhZGFwdGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEzNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxMzU6Y29uZmlnIFJUVzg5Xzg4NTJDVVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEzNi1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODg1MkNVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2RSkgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNDUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTQ2OmNvbmZpZyBSVFc4OV84OTIyQUVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNDctXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg5MjJBRS84OTIyQUUtVlMgUENJIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDcpIGFkYXB0ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTU5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE2MDpjb25maWcgUlRXODlfODkyMkFVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTYxLVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4OTIyQVUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDcpIGFkYXB0ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTcxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE3Mjpjb25maWcgUlRXODlfREVCVUdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNzMtXHRib29sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTc0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE3NTpjb25maWcgUlRXODlfREVCVUdNU0dcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNzYtXHRib29sIFwmIzM0O1JlYWx0ZWsgcnR3ODkgZGVidWcgbWVzc2FnZSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE4My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxODQ6Y29uZmlnIFJUVzg5X0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xODUtXHRib29sIFwmIzM0O1JlYWx0ZWsgcnR3ODkgZGVidWdmcyBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMDM6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzIyNzYKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiA4NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgZnJvbSBteSBleHBlcnQgcGVyc3BlY3RpdmU6CgoqKkludmVzdGlnYXRpbmcgUlRMODkyMkQgU3VwcG9ydCoqCgpBbHJpZ2h0LCB0aGlzIHBhdGNoIGNsYWltcyB0byBhZGQgc3VwcG9ydCBmb3IgdGhlIFJUTDg5MjJELiBNeSBmaXJzdCB0aG91Z2h0IGlzLCAmIzM0O1JlYWxseT8gTGV0JiMzOTtzIHZlcmlmeS4mIzM0OyBJIGtub3cgdGhlIFJlYWx0ZWsgd2lyZWxlc3MgZHJpdmVycyBsaWtlIHRoZSBiYWNrIG9mIG15IGhhbmQsIGFuZCBteSBpbnRlcm5hbCBtZW50YWwgbW9kZWwgaW1tZWRpYXRlbHkganVtcHMgdG8gdGhlIGV4aXN0aW5nIEtjb25maWcgZmlsZXMuIEkgcmVjYWxsIHNlZWluZyBgUlRXODlfODkyMkFFYCBhbmQgYFJUVzg5Xzg5MjJBVWAgbGlzdGVkIHByZXZpb3VzbHkuICBCdXQgd2FpdC4uLndoZXJlIGRvZXMgKnRoaXMqIHNwZWNpZmljIHZhcmlhbnQgZml0IGluPyAgSSBuZWVkIHRvIGNvbmZpcm0gaWYgdGhpcyBuZXcgZGV2aWNlIGlzIGp1c3QgaGFuZGxlZCBhcyBhIHZhcmlhbnQgb2YgdGhlIGV4aXN0aW5nIDg5MjIgZmFtaWx5IG9yIGlmIGl0IHdhcnJhbnRzIGEgZGVkaWNhdGVkIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBTbywgdGhlIGxvZ2ljYWwgbmV4dCBzdGVwIGZvciBtZSBpcyB0byBkaXZlIHJpZ2h0IGludG8gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZ2AgdG8gc2VlIGlmIHRoZXJlJiMzOTtzIGFuIGA4OTIyRGAgZW50cnksIG9yIGlmIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucyBhcmUgc3VpdGFibHkgZ2VuZXJpYyB0byBjb3ZlciB0aGlzLiBUaGF0JiMzOTtzIHRoZSBmaXJzdCB0aGluZyBJJiMzOTtkIGRvLiBJIHdpbGwgdGhlbiBrbm93IHByZWNpc2VseSB3aGVyZSB3ZSBzdGFuZCB3aXRoIHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMDM6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDs4OTIyRCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMDM6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzI2NjUKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA1MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgZnJvbSBhbiBleHBlcnQmIzM5O3MgcGVyc3BlY3RpdmU6CgoqKkRlYnVnZ2luZyBhIFBvdGVudGlhbCBSZWFsdGVrIFdpcmVsZXNzIERyaXZlciBJc3N1ZSoqCgpSaWdodCwgYSB3aXJlbGVzcyBpc3N1ZS4uLiBjb3VsZCBpdCBiZSBzb21ldGhpbmcgd2l0aCB0aGUgUlRXODkgc2VyaWVzPyBJdCYjMzk7cyBhIGNvbW1vbiBzdXNwZWN0IHdoZW4gUmVhbHRlayYjMzk7cyBpbnZvbHZlZC4gT2theSwgbGV0JiMzOTtzIHRha2UgYSBsb29rLiBTcGVjaWZpY2FsbHksIEkgc3VzcGVjdCBpdCBtYXkgYmUgYW4gUlRXODkgaXNzdWUgd2l0aCBkZXZpY2VzIGxpa2UgdGhlIGBSVFc4OV84OTIyREVgIG9yIGBSVFc4OV84OTIyRFVgIG1vZGVscy4gVG8gY29uZmlybSwgSSYjMzk7bGwgc3RhcnQgYnkgY2hlY2tpbmcgdGhlIGBNYWtlZmlsZWAgd2l0aGluIHRoZSByZWxldmFudCBkcml2ZXIgZGlyZWN0b3J5LiBJdOKAmXMgdGhlIGJlc3QgcGxhY2UgdG8gcXVpY2tseSBzZWUgdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24gYW5kIGRldmljZS1zcGVjaWZpYyBkZWZpbml0aW9ucyByZWxhdGVkIHRvIHRob3NlIFJlYWx0ZWsgODkgbW9kZWxzIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYCBkaXJlY3RvcnkuIFRoYXQmIzM5O3MgdXN1YWxseSB0aGUgZmlyc3Qgc3RlcCB0byBnZXQgYW4gb3ZlcnZpZXcgb2Ygd2hhdCYjMzk7cyBzdXBwb3J0ZWQgYW5kIGhvdyB0aGVzZSBzcGVjaWZpYyBkZXZpY2VzIGFyZSBoYW5kbGVkIGR1cmluZyB0aGUgYnVpbGQgcHJvY2Vzcy4gRnJvbSB0aGVyZSwgSSBjYW4gc3RhcnQgdG8gbmFycm93IGRvd24gdGhlIHNvdXJjZSBvZiB0aGUgdHJvdWJsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMDM6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDs4OTIyRCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAwMzo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3Mjk5MwoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDQ2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcyBvbiBzZWVpbmcgdGhvc2UgZmlsZXMgYW5kIGFwcHJvYWNoaW5nIHRoZSBNYWtlZmlsZSwgc3VtbWFyaXplZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipJbnZlc3RpZ2F0aW5nIGEgUG90ZW50aWFsIFJUVzg5MjIgRHJpdmVyIEludGVncmF0aW9uKioKClJpZ2h0LCBzbyBJJiMzOTt2ZSBzcG90dGVkIGBydHc4OTIyZC5jYCBhbmQgYHJ0dzg5MjJkZS5jYCBpbiB0aGlzIGRpcmVjdG9yeSBsaXN0aW5nLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gY2hlY2sgdGhlIGBNYWtlZmlsZWAuIFRoYXQgYDg5MjJgIG5hbWluZyBjb252ZW50aW9uIGlzIGhpZ2hseSBzdWdnZXN0aXZlLiBJdCBzdHJvbmdseSBpbXBsaWVzIHRoaXMgY29kZWJhc2UgaGFzIHNvbWUgY29ubmVjdGlvbiwgbGlrZWx5IGEgZHJpdmVyIG9yIG1vZHVsZSwgZm9yIGEgUmVhbHRlayBSVEw4OTIyIGNoaXBzZXQsIG9yIGEgY2xvc2VseSByZWxhdGVkIGZhbWlseSBvZiBkZXZpY2VzLiBJIG5lZWQgdG8gY29uZmlybSB0aGlzIHF1aWNrbHk7IHVuZGVyc3RhbmRpbmcgaG93IGl0JiMzOTtzIGludGVncmF0ZWQsIGJ1aWx0LCBhbmQgcG90ZW50aWFsbHkgY29uZmlndXJlZCBpcyB0aGUgZmlyc3QgY3JpdGljYWwgc3RlcC4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoZSBNYWtlZmlsZSByZXZlYWxzIGFib3V0IHRoZSBgODkyMmAgdGFyZ2V0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAwMzo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDs4OTIyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlPTgyPXJ0dzg5Xzg4NTJjdS1vYmpzIDo9IHJ0dzg4NTJjdS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTgzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTo4NDpvYmotJChDT05GSUdfUlRXODlfODkyMkEpICYjNDM7PSBydHc4OV84OTIyYS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjg1OnJ0dzg5Xzg5MjJhLW9ianMgOj0gcnR3ODkyMmEubyBcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTo4NjpcdFx0ICAgIHJ0dzg5MjJhX3Jmay5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTg3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTo4ODpvYmotJChDT05GSUdfUlRXODlfODkyMkFFKSAmIzQzOz0gcnR3ODlfODkyMmFlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6ODk6cnR3ODlfODkyMmFlLW9ianMgOj0gcnR3ODkyMmFlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtOTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjkxOm9iai0kKENPTkZJR19SVFc4OV84OTIyQVUpICYjNDM7PSBydHc4OV84OTIyYXUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTo5MjpydHc4OV84OTIyYXUtb2JqcyA6PSBydHc4OTIyYXUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS05My1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMDM6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzM2OTUKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiA0MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqTWlzc2luZyBTb3VyY2UgRmlsZXMgaW4gTWFrZWZpbGU/IEEgUXVpY2sgQ2hlY2suKioKCkhtbSwgdGhhdCYjMzk7cyBwZWN1bGlhci4gSSBzZWUgYHJ0dzg5MjJkLmNgIGFuZCBgcnR3ODkyMmRlLmNgIGxpc3RlZCBpbiB0aGUgZGlyZWN0b3J5IGluZGV4LiBUaGF0IHVzdWFsbHkgbWVhbnMgdGhleSAqc2hvdWxkKiBiZSBwYXJ0IG9mIHRoZSBidWlsZC4gQnV0IG5vdyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlIE1ha2VmaWxlLCBhbmQgSSYjMzk7bSBub3Qgc2VlaW5nIHRob3NlIHNvdXJjZSBmaWxlcyBleHBsaWNpdGx5IGRlZmluZWQgYXMgYmVpbmcgY29tcGlsZWQuIFRoYXQmIzM5O3MgYSBwb3RlbnRpYWwgb3ZlcnNpZ2h0IG9yIGNvbmZpZ3VyYXRpb24gZXJyb3IgdGhhdCBuZWVkcyBpbW1lZGlhdGUgaW52ZXN0aWdhdGlvbi4gSSBuZWVkIHRvIGRvdWJsZS1jaGVjayBteSB3b3JrIGFuZCB0aGUgTWFrZWZpbGUgY29uZmlndXJhdGlvbi4gSXMgdGhlcmUgYSB3aWxkY2FyZCBpbmNsdXNpb24gdGhhdCB3b3VsZCBoYXZlIGNhcHR1cmVkIHRoZW0sIGFuZCBpdCYjMzk7cyBub3Qgd29ya2luZz8gQXJlIHRoZXkgbWF5YmUgaW4gYSBkaWZmZXJlbnQgcGFydCBvZiB0aGUgZGVwZW5kZW5jeSBncmFwaD8gTGV0IG1lIGp1c3Qgc3RlcCB0aHJvdWdoIHRoaXMgYWdhaW4uLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMDM6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnR3ODkyMmQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTE4OSBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTExLSNpbmNsdWRlIFwmIzM0O3JlZy5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6MTI6I2luY2x1ZGUgXCYjMzQ7cnR3ODkyMmQuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjEzOiNpbmNsdWRlIFwmIzM0O3J0dzg5MjJkX3Jmay5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTQtI2luY2x1ZGUgXCYjMzQ7c2FyLmhcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTctI2RlZmluZSBSVFc4OTIyRF9GV19GT1JNQVRfTUFYIDBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzoxODojZGVmaW5lIFJUVzg5MjJEX0ZXX0JBU0VOQU1FIFwmIzM0O3J0dzg5L3J0dzg5MjJkX2Z3XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTktI2RlZmluZSBSVFc4OTIyRF9NT0RVTEVfRklSTVdBUkUgXFxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMjItI2RlZmluZSBSVFc4OTIyRFNfRldfRk9STUFUX01BWCAwXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6MjM6I2RlZmluZSBSVFc4OTIyRFNfRldfQkFTRU5BTUUgXCYjMzQ7cnR3ODkvcnR3ODkyMmRzX2Z3XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMjQtI2RlZmluZSBSVFc4OTIyRFNfTU9EVUxFX0ZJUk1XQVJFIFxcXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTI2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjI3OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfaGZjX2NoX2NmZyBydHc4OTIyZF9oZmNfY2hjZmdfcGNpZVtdID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTI4LVx0ezIsIDczMiwgMH0sIC8qIEFDSCAwICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTQyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjQzOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfaGZjX3B1Yl9jZmcgcnR3ODkyMmRfaGZjX3B1YmNmZ19wY2llID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTQ0LVx0NzQyLCAvKiBHcm91cCAwICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTQ5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjUwOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfaGZjX3BhcmFtX2luaSBydHc4OTIyZF9oZmNfcGFyYW1faW5pX3BjaWVbXSA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzo1MTpcdFtSVFc4OV9RVEFfU0NDXSA9IHtydHc4OTIyZF9oZmNfY2hjZmdfcGNpZSwgXHUwMDI2cnR3ODkyMmRfaGZjX3B1YmNmZ19wY2llLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTUyLVx0XHRcdCAgIFx1MDAyNnJ0dzg5X21hY19zaXplLmhmY19wcmVjX2NmZ19jMCwgUlRXODlfSENJRkNfUE9IfSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzo1MzpcdFtSVFc4OV9RVEFfREJDQ10gPSB7cnR3ODkyMmRfaGZjX2NoY2ZnX3BjaWUsIFx1MDAyNnJ0dzg5MjJkX2hmY19wdWJjZmdfcGNpZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy01NC1cdFx0XHQgICAgXHUwMDI2cnR3ODlfbWFjX3NpemUuaGZjX3ByZWNfY2ZnX2MwLCBSVFc4OV9IQ0lGQ19QT0h9LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy01OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzo2MDpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2RsZV9tZW0gcnR3ODkyMmRfZGxlX21lbV9wY2llW10gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtNjEtXHRbUlRXODlfUVRBX1NDQ10gPSB7UlRXODlfUVRBX1NDQywgXHUwMDI2cnR3ODlfbWFjX3NpemUud2RlX3NpemUyMl92MSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtODItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6ODM6c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9oZmNfY2hfY2ZnIHJ0dzg5MjJkc19oZmNfY2hjZmdfcGNpZVtdID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTg0LVx0ezIsIDYwMywgMH0sIC8qIEFDSCAwICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTk4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjk5OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfaGZjX3B1Yl9jZmcgcnR3ODkyMmRzX2hmY19wdWJjZmdfcGNpZSA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xMDAtXHQ2MTMsIC8qIEdyb3VwIDAgKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTA1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjEwNjpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2hmY19wYXJhbV9pbmkgcnR3ODkyMmRzX2hmY19wYXJhbV9pbmlfcGNpZVtdID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjEwNzpcdFtSVFc4OV9RVEFfU0NDXSA9IHtydHc4OTIyZHNfaGZjX2NoY2ZnX3BjaWUsIFx1MDAyNnJ0dzg5MjJkc19oZmNfcHViY2ZnX3BjaWUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTA4LVx0XHRcdCAgIFx1MDAyNnJ0dzg5X21hY19zaXplLmhmY19wcmVjX2NmZ19jMCwgUlRXODlfSENJRkNfUE9IfSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzoxMDk6XHRbUlRXODlfUVRBX0RCQ0NdID0ge3J0dzg5MjJkc19oZmNfY2hjZmdfcGNpZSwgXHUwMDI2cnR3ODkyMmRzX2hmY19wdWJjZmdfcGNpZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xMTAtXHRcdFx0ICAgXHUwMDI2cnR3ODlfbWFjX3NpemUuaGZjX3ByZWNfY2ZnX2MwLCBSVFc4OV9IQ0lGQ19QT0h9LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xMTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6MTE2OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfZGxlX21lbSBydHc4OTIyZHNfZGxlX21lbV9wY2llW10gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTE3LVx0W1JUVzg5X1FUQV9TQ0NdID0ge1JUVzg5X1FUQV9TQ0MsIFx1MDAyNnJ0dzg5X21hY19zaXplLndkZV9zaXplMTZfdjEsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTEzOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzoxMzk6c3RhdGljIGNvbnN0IHUzMiBydHc4OTIyZF9oMmNfcmVnc1tSVFc4OV9IMkNSRUdfTUFYXSA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xNDAtXHRSX0JFX0gyQ1JFR19EQVRBMCwgUl9CRV9IMkNSRUdfREFUQTEsIFJfQkVfSDJDUkVHX0RBVEEyLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xNDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6MTQ0OnN0YXRpYyBjb25zdCB1MzIgcnR3ODkyMmRfYzJoX3JlZ3NbUlRXODlfSDJDUkVHX01BWF0gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTQ1LVx0Ul9CRV9DMkhSRUdfREFUQTAsIFJfQkVfQzJIUkVHX0RBVEExLCBSX0JFX0MySFJFR19EQVRBMixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTQ4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjE0OTpzdGF0aWMgY29uc3QgdTMyIHJ0dzg5MjJkX3dvd193YWtldXBfcmVnc1tSVFc4OV9XT1dfUkVBU09OX05VTV0gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTUwLVx0Ul9CRV9EQkdfV09XLCBSX0JFX0RCR19XT1csXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTE1Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzoxNTM6c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9wYWdlX3JlZ3MgcnR3ODkyMmRfcGFnZV9yZWdzID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTE1NC1cdC5oY2lfZmNfY3RybFx0PSBSX0JFX0hDSV9GQ19DVFJMLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xNjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6MTY4OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfcmVnX2ltciBydHc4OTIyZF9pbXJfZG1hY19yZWdzW10gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTY5LVx0e1JfQkVfSENJX0JVRl9JTVIsIEJfQkVfSENJX0JVRl9JTVJfQ0xSLCBCX0JFX0hDSV9CVUZfSU1SX1NFVH0sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTE5NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzoxOTY6c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9pbXJfdGFibGUgcnR3ODkyMmRfaW1yX2RtYWNfdGFibGUgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6MTk3Olx0LnJlZ3MgPSBydHc4OTIyZF9pbXJfZG1hY19yZWdzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjE5ODpcdC5uX3JlZ3MgPSBBUlJBWV9TSVpFKHJ0dzg5MjJkX2ltcl9kbWFjX3JlZ3MpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTE5OS19O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTIwMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzoyMDE6c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9yZWdfaW1yIHJ0dzg5MjJkX2ltcl9jbWFjX3JlZ3NbXSA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0yMDItXHR7Ul9CRV9SRVNQX0lNUiwgQl9CRV9SRVNQX0lNUl9DTFJfVjEsIEJfQkVfUkVTUF9JTVJfU0VUX1YxfSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMjE3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjIxODpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2ltcl90YWJsZSBydHc4OTIyZF9pbXJfY21hY190YWJsZSA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzoyMTk6XHQucmVncyA9IHJ0dzg5MjJkX2ltcl9jbWFjX3JlZ3MsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6MjIwOlx0Lm5fcmVncyA9IEFSUkFZX1NJWkUocnR3ODkyMmRfaW1yX2NtYWNfcmVncyksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMjIxLX07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMjIyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjIyMzpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X3Jyc3JfY2ZncyBydHc4OTIyZF9ycnNyX2NmZ3MgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMjI0LVx0LnJlZl9yYXRlID0ge1JfQkVfVFJYUFRDTF9SRVNQXzEsIEJfQkVfV01BQ19SRVNQX1JFRl9SQVRFX1NFTCwgMH0sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTIyNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzoyMjg6c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9yZmtpbGxfcmVncyBydHc4OTIyZF9yZmtpbGxfcmVncyA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0yMjktXHQucGlubXV4ID0ge1JfQkVfR1BJTzhfMTVfRlVOQ19TRUwsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTIzNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzoyMzc6c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9kaWdfcmVncyBydHc4OTIyZF9kaWdfcmVncyA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0yMzgtXHQuc2VnMF9wZF9yZWcgPSBSX1NFRzBSX1BEX0JFNCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMjYwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjI2MTpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2VkY2NhX3JlZ3MgcnR3ODkyMmRfZWRjY2FfcmVncyA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0yNjItXHQuZWRjY2FfbGV2ZWxcdFx0XHQ9IFJfU0VHMFJfRURDQ0FfTFZMX0JFNCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMjgzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjI4NDpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X3BtYWNfcmVncyBydHc4OTIyZF9wbWFjX3JlZ3MgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMjg1LVx0LmNja190eG9uID0ge1JfQ05UX0NDS1RYT05fQkU0LCBCX0NOVF9DQ0tUWE9OfSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMzMxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjMzMjpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2VmdXNlX2Jsb2NrX2NmZyBydHc4OTIyZF9lZnVzZV9ibG9ja3NbXSA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0zMzMtXHRbUlRXODlfRUZVU0VfQkxPQ0tfU1lTXVx0XHRcdD0gey5vZmZzZXQgPSAweDAwMDAwLCAuc2l6ZSA9IDB4MzEwfSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMzQyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjM0MzpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2JiX3dyYXBfY29tbW9uX2RhdGEgcnR3ODkyMmRfYmJfd3JhcF9jb21tb25fZGF0YV83MDI1ID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTM0NC1cdC5iYW5kcyA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMzU5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjM2MDpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2JiX3dyYXBfY29tbW9uX2RhdGEgcnR3ODkyMmRfYmJfd3JhcF9jb21tb25fZGF0YV83MDkwID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTM2MS1cdC5iYW5kcyA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM9Mzc3PXN0YXRpYyBjb25zdFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjM3ODpzdHJ1Y3QgcnR3ODlfYmJfd3JhcF9jb21tb25fZGF0YV9nZW4zIHJ0dzg5MjJkX2JiX3dyYXBfY29tbW9uX2RhdGFfZ2VuM183MDkwID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTM3OS1cdC5iYW5kcyA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMzkwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjM5MTpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2JiX3dyYXBfZGF0YSBydHc4OTIyZF9iYl93cmFwX2RhdGFfNzAyNV9kZWZhdWx0ID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjM5MjpcdC5jb21tb24gPSBcdTAwMjZydHc4OTIyZF9iYl93cmFwX2NvbW1vbl9kYXRhXzcwMjUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMzkzLVx0LmNvbW1vbl9nZW4zID0gTlVMTCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtNDE3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjQxODpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2JiX3dyYXBfZGF0YSBydHc4OTIyZF9iYl93cmFwX2RhdGFfNzA5MF9kZWZhdWx0ID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjQxOTpcdC5jb21tb24gPSBcdTAwMjZydHc4OTIyZF9iYl93cmFwX2NvbW1vbl9kYXRhXzcwOTAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6NDIwOlx0LmNvbW1vbl9nZW4zID0gXHUwMDI2cnR3ODkyMmRfYmJfd3JhcF9jb21tb25fZGF0YV9nZW4zXzcwOTAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtNDIxLVx0LmJhbmRzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy00NDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6NDQ1OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfYmJfd3JhcF9kYXRhIHJ0dzg5MjJkX2JiX3dyYXBfZGF0YV83MDkwX3JmZTM1XzQxXzQ0ID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjQ0NjpcdC5jb21tb24gPSBcdTAwMjZydHc4OTIyZF9iYl93cmFwX2NvbW1vbl9kYXRhXzcwOTAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6NDQ3Olx0LmNvbW1vbl9nZW4zID0gXHUwMDI2cnR3ODkyMmRfYmJfd3JhcF9jb21tb25fZGF0YV9nZW4zXzcwOTAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtNDQ4LVx0LmJhbmRzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy00NzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6NDcyOnN0YXRpYyB2b2lkIHJ0dzg5MjJkX3NlbF9idF9yeF9wYXRoKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggdmFsLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTQ3My1cdFx0XHRcdCAgICBlbnVtIHJ0dzg5X3JmX3BhdGggcnhfcGF0aClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtNDg0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjQ4NTpzdGF0aWMgdm9pZCBydHc4OTIyZF9zZWxfYnRfcnhfcGh5KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggdmFsLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTQ4Ni1cdFx0XHRcdCAgIGVudW0gcnR3ODlfcGh5X2lkeCBwaHlfaWR4KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy00OTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6NDkyOnN0YXRpYyB2b2lkIHJ0dzg5MjJkX3NldF9nYnRfYnRfcnhfc2VsKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgYm9vbCBlbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy00OTMtXHRcdFx0XHQgICAgICAgZW51bSBydHc4OV9waHlfaWR4IHBoeV9pZHgpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtNDk0LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzo0OTU6XHRydHc4OTIyZF9zZWxfYnRfcnhfcGF0aChydHdkZXYsIDB4MywgUkZfUEFUSF9BKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzo0OTY6XHRydHc4OTIyZF9zZWxfYnRfcnhfcGh5KHJ0d2RldiwgMHgwLCBSVFc4OV9QSFlfMCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6NDk3Olx0cnR3ODkyMmRfc2VsX2J0X3J4X3BhdGgocnR3ZGV2LCAweDMsIFJGX1BBVEhfQik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6NDk4Olx0cnR3ODkyMmRfc2VsX2J0X3J4X3BoeShydHdkZXYsIDB4MCwgUlRXODlfUEhZXzEpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTQ5OS19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtNTAwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjUwMTpzdGF0aWMgaW50IHJ0dzg5MjJkX3B3cl9vbl9mdW5jKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy01MDIte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy02NTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6NjU3OnN0YXRpYyBpbnQgcnR3ODkyMmRfcHdyX29mZl9mdW5jKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy02NTgte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy03MzctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6NzM4OnN0YXRpYyB2b2lkIHJ0dzg5MjJkX2VmdXNlX3BhcnNpbmdfdHNzaShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6NzM5Olx0XHRcdFx0XHRzdHJ1Y3QgcnR3ODkyMmRfZWZ1c2UgKm1hcClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy03NDAte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjc0MTpcdGNvbnN0IHN0cnVjdCBydHc4OTIyZF90c3NpX29mZnNldF82ZyAqIGNvbnN0IG9mc3RfNmdbXSA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy03NDItXHRcdFx1MDAyNm1hcC1cdTAwM2VwYXRoX2FfdHNzaV82Zyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtNzQ0LVx0fTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzo3NDU6XHRjb25zdCBzdHJ1Y3QgcnR3ODkyMmRfdHNzaV9vZmZzZXQgKiBjb25zdCBvZnN0W10gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtNzQ2LVx0XHRcdTAwMjZtYXAtXHUwMDNlcGF0aF9hX3Rzc2ksXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jPTc4Mj1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjc4MzpfX3J0dzg5MjJkX2VmdXNlX3BhcnNpbmdfZ2Fpbl9vZmZzZXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTc4NC1cdFx0XHRcdCAgICAgczggb2Zmc2V0W1JUVzg5X0dBSU5fT0ZGU0VUX05SXSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy03ODUtXHRcdFx0XHQgICAgIGNvbnN0IHM4ICpvZmZzZXRfZGVmYXVsdCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzo3ODY6XHRcdFx0XHQgICAgIGNvbnN0IHN0cnVjdCBydHc4OTIyZF9yeF9nYWluICpyeF9nYWluLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjc4NzpcdFx0XHRcdCAgICAgY29uc3Qgc3RydWN0IHJ0dzg5MjJkX3J4X2dhaW5fNmcgKnJ4X2dhaW5fNmcpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtNzg4LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtODIzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjgyNDpzdGF0aWMgdm9pZCBydHc4OTIyZF9lZnVzZV9wYXJzaW5nX2dhaW5fb2Zmc2V0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzo4MjU6XHRcdFx0XHRcdCAgICAgICBzdHJ1Y3QgcnR3ODkyMmRfZWZ1c2UgKm1hcClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy04MjYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy04MjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6ODI5Olx0X19ydHc4OTIyZF9lZnVzZV9wYXJzaW5nX2dhaW5fb2Zmc2V0KHJ0d2RldiwgZ2Fpbi1cdTAwM2VvZmZzZXRbUkZfUEFUSF9BXSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy04MzAtXHRcdFx0XHRcdCAgICAgTlVMTCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy04MzEtXHRcdFx0XHRcdCAgICAgXHUwMDI2bWFwLVx1MDAzZXJ4X2dhaW5fYSwgXHUwMDI2bWFwLVx1MDAzZXJ4X2dhaW5fNmdfYSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6ODMyOlx0X19ydHc4OTIyZF9lZnVzZV9wYXJzaW5nX2dhaW5fb2Zmc2V0KHJ0d2RldiwgZ2Fpbi1cdTAwM2VvZmZzZXRbUkZfUEFUSF9CXSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy04MzMtXHRcdFx0XHRcdCAgICAgTlVMTCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtODM1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjgzNjpcdF9fcnR3ODkyMmRfZWZ1c2VfcGFyc2luZ19nYWluX29mZnNldChydHdkZXYsIGdhaW4tXHUwMDNlb2Zmc2V0MltSRl9QQVRIX0FdLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTgzNy1cdFx0XHRcdFx0ICAgICBnYWluLVx1MDAzZW9mZnNldFtSRl9QQVRIX0FdLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTgzOC1cdFx0XHRcdFx0ICAgICBcdTAwMjZtYXAtXHUwMDNlcnhfZ2Fpbl9hXzIsIFx1MDAyNm1hcC1cdTAwM2VyeF9nYWluXzZnX2FfMik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6ODM5Olx0X19ydHc4OTIyZF9lZnVzZV9wYXJzaW5nX2dhaW5fb2Zmc2V0KHJ0d2RldiwgZ2Fpbi1cdTAwM2VvZmZzZXQyW1JGX1BBVEhfQl0sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtODQwLVx0XHRcdFx0XHQgICAgIGdhaW4tXHUwMDNlb2Zmc2V0W1JGX1BBVEhfQl0sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTg0NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzo4NDY6c3RhdGljIGludCBydHc4OTIyZF9yZWFkX2VmdXNlX3BjaV9zZGlvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggKmxvZ19tYXApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtODQ3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtODU3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjg1ODpzdGF0aWMgaW50IHJ0dzg5MjJkX3JlYWRfZWZ1c2VfdXNiKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggKmxvZ19tYXApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtODU5LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtODY2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjg2NzpzdGF0aWMgaW50IHJ0dzg5MjJkX3JlYWRfZWZ1c2VfcmYoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCAqbG9nX21hcClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy04Njgte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjg2OTpcdHN0cnVjdCBydHc4OTIyZF9lZnVzZSAqbWFwID0gKHN0cnVjdCBydHc4OTIyZF9lZnVzZSAqKWxvZ19tYXA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtODcwLVx0c3RydWN0IHJ0dzg5X2VmdXNlICplZnVzZSA9IFx1MDAyNnJ0d2Rldi1cdTAwM2VlZnVzZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtODc3LVx0ZWZ1c2UtXHUwMDNlYnRfc2V0dGluZ18zID0gbWFwLVx1MDAzZWJ0X3NldHRpbmdfMztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzo4Nzg6XHRydHc4OTIyZF9lZnVzZV9wYXJzaW5nX3Rzc2kocnR3ZGV2LCBtYXApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjg3OTpcdHJ0dzg5MjJkX2VmdXNlX3BhcnNpbmdfZ2Fpbl9vZmZzZXQocnR3ZGV2LCBtYXApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTg4MC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtODgzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjg4NDpzdGF0aWMgaW50IHJ0dzg5MjJkX3JlYWRfZWZ1c2Uoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCAqbG9nX21hcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy04ODUtXHRcdFx0ICAgICAgIGVudW0gcnR3ODlfZWZ1c2VfYmxvY2sgYmxvY2spXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTg4OC1cdGNhc2UgUlRXODlfRUZVU0VfQkxPQ0tfSENJX0RJR19QQ0lFX1NESU86XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6ODg5Olx0XHRyZXR1cm4gcnR3ODkyMmRfcmVhZF9lZnVzZV9wY2lfc2RpbyhydHdkZXYsIGxvZ19tYXApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTg5MC1cdGNhc2UgUlRXODlfRUZVU0VfQkxPQ0tfSENJX0RJR19VU0I6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6ODkxOlx0XHRyZXR1cm4gcnR3ODkyMmRfcmVhZF9lZnVzZV91c2IocnR3ZGV2LCBsb2dfbWFwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy04OTItXHRjYXNlIFJUVzg5X0VGVVNFX0JMT0NLX1JGOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjg5MzpcdFx0cmV0dXJuIHJ0dzg5MjJkX3JlYWRfZWZ1c2VfcmYocnR3ZGV2LCBsb2dfbWFwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy04OTQtXHRkZWZhdWx0OlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy04OTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6ODk5OnN0YXRpYyB2b2lkIHJ0dzg5MjJkX3BoeWNhcF9wYXJzaW5nX3Zjb190cmltKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy05MDAtXHRcdFx0XHRcdCAgICAgdTggKnBoeWNhcF9tYXApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTkxNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzo5MTg6c3RhdGljIHZvaWQgcnR3ODkyMmRfdmNvX3RyaW0oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTkxOS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTkzMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzo5MzQ6c3RhdGljIHZvaWQgcnR3ODkyMmRfcGh5Y2FwX3BhcnNpbmdfdGhlcm1hbF90cmltKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy05MzUtXHRcdFx0XHRcdFx0IHU4ICpwaHljYXBfbWFwKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy05NzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6OTc0OnN0YXRpYyB2b2lkIHJ0dzg5MjJkX3RoZXJtYWxfdHJpbShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtOTc1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtOTg1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjk4NjpzdGF0aWMgdm9pZCBydHc4OTIyZF9waHljYXBfcGFyc2luZ19wYV9iaWFzX3RyaW0oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTk4Ny1cdFx0XHRcdFx0XHQgdTggKnBoeWNhcF9tYXApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTEwMTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6MTAxNTpzdGF0aWMgdm9pZCBydHc4OTIyZF9wYV9iaWFzX3RyaW0oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTEwMTYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xMDQwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjEwNDE6c3RhdGljIHZvaWQgcnR3ODkyMmRfcGh5Y2FwX3BhcnNpbmdfcGFkX2JpYXNfdHJpbShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTA0Mi1cdFx0XHRcdFx0XHQgIHU4ICpwaHljYXBfbWFwKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xMDYwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjEwNjE6c3RhdGljIHZvaWQgcnR3ODkyMmRfcGFkX2JpYXNfdHJpbShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTA2Mi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTEwODUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6MTA4NjpzdGF0aWMgaW50IHJ0dzg5MjJkX3JlYWRfcGh5Y2FwKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggKnBoeWNhcF9tYXApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTA4Ny17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6MTA4ODpcdHJ0dzg5MjJkX3BoeWNhcF9wYXJzaW5nX3Zjb190cmltKHJ0d2RldiwgcGh5Y2FwX21hcCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6MTA4OTpcdHJ0dzg5MjJkX3BoeWNhcF9wYXJzaW5nX3RoZXJtYWxfdHJpbShydHdkZXYsIHBoeWNhcF9tYXApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjEwOTA6XHRydHc4OTIyZF9waHljYXBfcGFyc2luZ19wYV9iaWFzX3RyaW0ocnR3ZGV2LCBwaHljYXBfbWFwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzoxMDkxOlx0cnR3ODkyMmRfcGh5Y2FwX3BhcnNpbmdfcGFkX2JpYXNfdHJpbShydHdkZXYsIHBoeWNhcF9tYXApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTEwOTItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTEwOTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6MTA5NjpzdGF0aWMgdm9pZCBydHc4OTIyZF9wb3dlcl90cmltKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xMDk3LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzoxMDk4Olx0cnR3ODkyMmRfdmNvX3RyaW0ocnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzoxMDk5Olx0cnR3ODkyMmRfdGhlcm1hbF90cmltKHJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6MTEwMDpcdHJ0dzg5MjJkX3BhX2JpYXNfdHJpbShydHdkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjExMDE6XHRydHc4OTIyZF9wYWRfYmlhc190cmltKHJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTEwMi19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTEwMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzoxMTA0OnN0YXRpYyBpbnQgcnR3ODkyMmRfZGF0YV9zZXR1cChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTEwNS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTExMTgtXHRpZiAoaGFsLVx1MDAzZWNpZCA9PSBSVEw4OTIyRF9DSUQ3MDI1KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6MTExOTpcdFx0ZGF0YSA9IFx1MDAyNnJ0dzg5MjJkX2JiX3dyYXBfZGF0YV83MDI1X2RlZmF1bHQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTEyMC1cdH0gZWxzZSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTEyMS1cdFx0aWYgKHJmZTM1XzQxXzQ0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjExMjI6XHRcdFx0ZGF0YSA9IFx1MDAyNnJ0dzg5MjJkX2JiX3dyYXBfZGF0YV83MDkwX3JmZTM1XzQxXzQ0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTExMjMtXHRcdGVsc2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzoxMTI0Olx0XHRcdGRhdGEgPSBcdTAwMjZydHc4OTIyZF9iYl93cmFwX2RhdGFfNzA5MF9kZWZhdWx0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTExMjUtXHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTExMzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6MTEzMjpzdGF0aWMgdm9pZCBydHc4OTIyZF9zZXRfY2hhbm5lbF9tYWMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTExMzMtXHRcdFx0XHQgICAgIGNvbnN0IHN0cnVjdCBydHc4OV9jaGFuICpjaGFuLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xMjIyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjEyMjM6c3RhdGljIGNvbnN0IHUzMiBydHc4OTIyZF9zY29fYmFya2VyX3RocmVzaG9sZFsxNF0gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTIyNC1cdDB4MWZlNGYsIDB4MWZmNWUsIDB4MjAwNmMsIDB4MjAxN2IsIDB4MjAyOGEsIDB4MjAzOTksIDB4MjA0YTgsIDB4MjA1YjYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTEyMjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6MTIyODpzdGF0aWMgY29uc3QgdTMyIHJ0dzg5MjJkX3Njb19jY2tfdGhyZXNob2xkWzE0XSA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xMjI5LVx0MHgyYmRhYywgMHgyYmYyMSwgMHgyYzA5NSwgMHgyYzIwOSwgMHgyYzM3ZSwgMHgyYzRmMiwgMHgyYzY2NiwgMHgyYzdkYixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTIzMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzoxMjMzOnN0YXRpYyBpbnQgcnR3ODkyMmRfY3RybF9zY29fY2NrKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xMjM0LVx0XHRcdFx0IHU4IHByaW1hcnlfY2gsIGVudW0gcnR3ODlfYmFuZHdpZHRoIGJ3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xMjQ0LVx0cnR3ODlfcGh5X3dyaXRlMzJfaWR4KHJ0d2RldiwgUl9CS19GQzBfSU5WX0JFNCwgQl9CS19GQzBfSU5WX0JFNCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzoxMjQ1Olx0XHRcdCAgICAgIHJ0dzg5MjJkX3Njb19iYXJrZXJfdGhyZXNob2xkW2NoX2VsZW1lbnRdLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTEyNDYtXHRcdFx0ICAgICAgcGh5X2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTI0Ny1cdHJ0dzg5X3BoeV93cml0ZTMyX2lkeChydHdkZXYsIFJfQ0NLX0ZDMF9JTlZfQkU0LCBCX0NDS19GQzBfSU5WX0JFNCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzoxMjQ4Olx0XHRcdCAgICAgIHJ0dzg5MjJkX3Njb19jY2tfdGhyZXNob2xkW2NoX2VsZW1lbnRdLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTEyNDktXHRcdFx0ICAgICAgcGh5X2lkeCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTEyNTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6MTI1NDpzdGF0aWMgdm9pZCBydHc4OTIyZF9jdHJsX2NoX2NvcmUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTEyNTUtXHRcdFx0XHQgIGNvbnN0IHN0cnVjdCBydHc4OV9jaGFuICpjaGFuLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xMjgyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjEyODM6c3RydWN0IHJ0dzg5MjJkX2JiX2dhaW4ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTEyODQtXHR1MzIgZ2Fpbl9nW0JCX1BBVEhfTlVNXzg5MjJEXTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM9MTMxMz1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X3JlZ19kZWYgcnBsX2NvbXBfYncyMFtSVFc4OV9CVzIwX1NDXzIwTV0gPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTEzMTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6MTMxNzpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5MjJkX2JiX2dhaW4gYmJfZ2Fpbl9sbmFbTE5BX0dBSU5fTlVNXSA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xMzE4LVx0eyAuZ2Fpbl9nID0gezB4MjQwOUMsIDB4MjQ0OUN9LCAuZ2Fpbl9hID0gezB4MjQwNkMsIDB4MjQ0NkN9LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xMzMzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjEzMzQ6c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OTIyZF9iYl9nYWluIGJiX2dhaW5fdGlhW1RJQV9HQUlOX05VTV0gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTMzNS1cdHsgLmdhaW5fZyA9IHsweDI0MDU0LCAweDI0NDU0fSwgLmdhaW5fYSA9IHsweDI0MDU0LCAweDI0NDU0fSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTM0MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzoxMzQxOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODkyMmRfYmJfZ2FpbiBiYl9vcDFkYl9sbmFbTE5BX0dBSU5fTlVNXSA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xMzQyLVx0eyAuZ2Fpbl9nID0gezB4MjQwQUMsIDB4MjQ0QUN9LCAuZ2Fpbl9hID0gezB4MjQwNzgsIDB4MjQ0Nzh9LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xMzU3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjEzNTg6c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OTIyZF9iYl9nYWluIGJiX29wMWRiX3RpYV9sbmFbVElBX0xOQV9PUDFEQl9OVU1dID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTEzNTktXHR7IC5nYWluX2cgPSB7MHgyNDBCNCwgMHgyNDRCNH0sIC5nYWluX2EgPSB7MHgyNDA4MCwgMHgyNDQ4MH0sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTEzNzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6MTM3NzpzdGF0aWMgdm9pZCBydHc4OTIyZF9zZXRfcnBsX2dhaW4oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTEzNzgtXHRcdFx0XHQgIGNvbnN0IHN0cnVjdCBydHc4OV9jaGFuICpjaGFuLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xNDIxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjE0MjI6c3RhdGljIHZvaWQgcnR3ODkyMmRfc2V0X2xuYV90aWFfZ2FpbihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTQyMy1cdFx0XHRcdCAgICAgIGNvbnN0IHN0cnVjdCBydHc4OV9jaGFuICpjaGFuLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xNDYyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjE0NjM6c3RhdGljIHZvaWQgcnR3ODkyMmRfc2V0X29wMWRiKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xNDY0LVx0XHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgcnR3ODlfY2hhbiAqY2hhbixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTUwMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzoxNTA0OnN0YXRpYyB2b2lkIHJ0dzg5MjJkX3NldF9nYWluKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xNTA1LVx0XHRcdCAgICAgIGNvbnN0IHN0cnVjdCBydHc4OV9jaGFuICpjaGFuLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xNTA4LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzoxNTA5Olx0cnR3ODkyMmRfc2V0X3JwbF9nYWluKHJ0d2RldiwgY2hhbiwgcGF0aCwgcGh5X2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6MTUxMDpcdHJ0dzg5MjJkX3NldF9sbmFfdGlhX2dhaW4ocnR3ZGV2LCBjaGFuLCBwYXRoLCBwaHlfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzoxNTExOlx0cnR3ODkyMmRfc2V0X29wMWRiKHJ0d2RldiwgY2hhbiwgcGF0aCwgcGh5X2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTUxMi19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTUxMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzoxNTE0OnN0YXRpYyBzOCBydHc4OTIyZF9nZXRfcnhfZ2Fpbl9ieV9jaGFuKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xNTE1LVx0XHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBydHc4OV9jaGFuICpjaGFuLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xNjI2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjE2Mjc6c3RhdGljIHZvaWQgcnR3ODkyMmRfY2FsY19yeF9nYWluX25vcm1hbF9jY2soc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTE2MjgtXHRcdFx0XHRcdCAgICAgY29uc3Qgc3RydWN0IHJ0dzg5X2NoYW4gKmNoYW4sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTE2MzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6MTYzNjpcdHJ4X2dhaW5fb2Zmc2V0ID0gLXJ0dzg5MjJkX2dldF9yeF9nYWluX2J5X2NoYW4ocnR3ZGV2LCBjaGFuLCBwYXRoLCB0cnVlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xNjM3LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xNjQ0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjE2NDU6c3RhdGljIHZvaWQgcnR3ODkyMmRfc2V0X3J4X2dhaW5fbm9ybWFsX2NjayhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTY0Ni1cdFx0XHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBydHc4OV9jaGFuICpjaGFuLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xNjUxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjE2NTI6XHRydHc4OTIyZF9jYWxjX3J4X2dhaW5fbm9ybWFsX2NjayhydHdkZXYsIGNoYW4sIHBhdGgsIHBoeV9pZHgsIFx1MDAyNmNhbGMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTE2NTMtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTE2NjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6MTY2MjpzdGF0aWMgdm9pZCBydHc4OTIyZF9jYWxjX3J4X2dhaW5fbm9ybWFsX29mZG0oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTE2NjMtXHRcdFx0XHRcdCAgICAgIGNvbnN0IHN0cnVjdCBydHc4OV9jaGFuICpjaGFuLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xNjcwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjE2NzE6XHRyeF9nYWluX29mZnNldCA9IHJ0dzg5MjJkX2dldF9yeF9nYWluX2J5X2NoYW4ocnR3ZGV2LCBjaGFuLCBwYXRoLCBmYWxzZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTY3Mi1cdGNhbGMtXHUwMDNlcnNzaV9vZnN0ID0gKHJ4X2dhaW5fb2Zmc2V0ICYjNDM7IGdhaW4tXHUwMDNlcmVmX2dhaW5fYmFzZVtwaHlfaWR4XSkgXHUwMDI2IDB4ZmY7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTE2NzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6MTY3NTpzdGF0aWMgdm9pZCBydHc4OTIyZF9zZXRfcnhfZ2Fpbl9ub3JtYWxfb2ZkbShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTY3Ni1cdFx0XHRcdFx0ICAgICBjb25zdCBzdHJ1Y3QgcnR3ODlfY2hhbiAqY2hhbixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTY4NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzoxNjg2Olx0cnR3ODkyMmRfY2FsY19yeF9nYWluX25vcm1hbF9vZmRtKHJ0d2RldiwgY2hhbiwgcGF0aCwgcGh5X2lkeCwgXHUwMDI2Y2FsYyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTY4Ny1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTY5Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzoxNjkzOnN0YXRpYyB2b2lkIHJ0dzg5MjJkX3NldF9yeF9nYWluX25vcm1hbChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTY5NC1cdFx0XHRcdFx0Y29uc3Qgc3RydWN0IHJ0dzg5X2NoYW4gKmNoYW4sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTE3MDMtXHRpZiAoY2hhbi1cdTAwM2ViYW5kX3R5cGUgPT0gUlRXODlfQkFORF8yRylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzoxNzA0Olx0XHRydHc4OTIyZF9zZXRfcnhfZ2Fpbl9ub3JtYWxfY2NrKHJ0d2RldiwgY2hhbiwgcGF0aCwgcGh5X2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTcwNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzoxNzA2Olx0cnR3ODkyMmRfc2V0X3J4X2dhaW5fbm9ybWFsX29mZG0ocnR3ZGV2LCBjaGFuLCBwYXRoLCBwaHlfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xNzA3LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xNzA4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjE3MDk6c3RhdGljIHZvaWQgcnR3ODkyMmRfY2FsY19yeF9nYWluX25vcm1hbChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTcxMC1cdFx0XHRcdFx0IGNvbnN0IHN0cnVjdCBydHc4OV9jaGFuICpjaGFuLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xNzE0LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzoxNzE1Olx0cnR3ODkyMmRfY2FsY19yeF9nYWluX25vcm1hbF9vZmRtKHJ0d2RldiwgY2hhbiwgcGF0aCwgcGh5X2lkeCwgY2FsYyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTcxNi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTcxOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzoxNzIwOlx0cnR3ODkyMmRfY2FsY19yeF9nYWluX25vcm1hbF9jY2socnR3ZGV2LCBjaGFuLCBwYXRoLCBwaHlfaWR4LCBjYWxjKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xNzIxLX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xNzIyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjE3MjM6c3RhdGljIHZvaWQgcnR3ODkyMmRfc2V0X2Nja19wYXJhbWV0ZXJzKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xNzI0LVx0XHRcdFx0XHRjb25zdCBzdHJ1Y3QgcnR3ODlfY2hhbiAqY2hhbixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTc2My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzoxNzY0OnN0YXRpYyB2b2lkIHJ0dzg5MjJkX2N0cmxfY2goc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTE3NjUtXHRcdFx0ICAgICBjb25zdCBzdHJ1Y3QgcnR3ODlfY2hhbiAqY2hhbixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTc3Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzoxNzc3Olx0cnR3ODkyMmRfY3RybF9jaF9jb3JlKHJ0d2RldiwgY2hhbiwgcGh5X2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTc3OC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTc4MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzoxNzgyOlx0cnR3ODkyMmRfc2V0X2dhaW4ocnR3ZGV2LCBjaGFuLCBSRl9QQVRIX0EsIHBoeV9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjE3ODM6XHRydHc4OTIyZF9zZXRfZ2FpbihydHdkZXYsIGNoYW4sIFJGX1BBVEhfQiwgcGh5X2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTc4NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzoxNzg1Olx0cnR3ODkyMmRfc2V0X3J4X2dhaW5fbm9ybWFsKHJ0d2RldiwgY2hhbiwgUkZfUEFUSF9BLCBwaHlfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzoxNzg2Olx0cnR3ODkyMmRfc2V0X3J4X2dhaW5fbm9ybWFsKHJ0d2RldiwgY2hhbiwgUkZfUEFUSF9CLCBwaHlfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xNzg3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTE3ODgtXHRpZiAoYmFuZCA9PSBSVFc4OV9CQU5EXzJHKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjE3ODk6XHRcdHJ0dzg5MjJkX3NldF9jY2tfcGFyYW1ldGVycyhydHdkZXYsIGNoYW4sIHBoeV9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTE3OTAtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTE3OTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6MTc5MjpzdGF0aWMgdm9pZCBydHc4OTIyZF9jdHJsX2J3KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggcHJpX3NiLCB1OCBidyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xNzkzLVx0XHRcdCAgICAgZW51bSBydHc4OV9waHlfaWR4IHBoeV9pZHgpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jPTE4Mjk9c3RhdGljIGNvbnN0IHUxNiBzcHVyX2NzaVtdID0gezY0MDB9O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTE4MzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6MTgzMTpzdGF0aWMgdTMyIHJ0dzg5MjJkX3NwdXJfZnJlcShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGNvbnN0IHN0cnVjdCBydHc4OV9jaGFuICpjaGFuLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTE4MzItXHRcdFx0ICAgICAgYm9vbCBuYmlfb3JfY3NpLCBlbnVtIHJ0dzg5X3JmX3BhdGggcGF0aClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTg3My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzoxODc0OnN0YXRpYyB2b2lkIHJ0dzg5MjJkX3NldF9jc2lfdG9uZV9pZHgoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTE4NzUtXHRcdFx0XHQgICAgICBjb25zdCBzdHJ1Y3QgcnR3ODlfY2hhbiAqY2hhbixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTg4MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzoxODgxOlx0c3B1cl9mcmVxID0gcnR3ODkyMmRfc3B1cl9mcmVxKHJ0d2RldiwgY2hhbiwgZmFsc2UsIFJGX1BBVEhfQUIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTE4ODItXHRpZiAoc3B1cl9mcmVxID09IDApIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTg5Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzoxODk3OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfbmJpX3JlZ19kZWYgcnR3ODkyMmRfbmJpX3JlZ19kZWZbXSA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xODk4LVx0W1JGX1BBVEhfQV0gPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTE5MTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6MTkxNjpzdGF0aWMgdm9pZCBydHc4OTIyZF9zZXRfbmJpX3RvbmVfaWR4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xOTE3LVx0XHRcdFx0ICAgICAgY29uc3Qgc3RydWN0IHJ0dzg5X2NoYW4gKmNoYW4sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTE5MjAte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjE5MjE6XHRjb25zdCBzdHJ1Y3QgcnR3ODlfbmJpX3JlZ19kZWYgKm5iaSA9IFx1MDAyNnJ0dzg5MjJkX25iaV9yZWdfZGVmW3BhdGhdO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTE5MjItXHRzMzIgbmJpX2ZyYWNfaWR4LCBuYmlfZnJhY190b25lX2lkeDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTkyNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzoxOTI4Olx0c3B1cl9mcmVxID0gcnR3ODkyMmRfc3B1cl9mcmVxKHJ0d2RldiwgY2hhbiwgdHJ1ZSwgcGF0aCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTkyOS1cdGlmIChzcHVyX2ZyZXEgPT0gMCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xOTg4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjE5ODk6c3RhdGljIHZvaWQgcnR3ODkyMmRfc3B1cl9lbGltaW5hdGlvbihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTk5MC1cdFx0XHRcdCAgICAgIGNvbnN0IHN0cnVjdCBydHc4OV9jaGFuICpjaGFuLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xOTkyLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzoxOTkzOlx0cnR3ODkyMmRfc2V0X2NzaV90b25lX2lkeChydHdkZXYsIGNoYW4sIHBoeV9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjE5OTQ6XHRydHc4OTIyZF9zZXRfbmJpX3RvbmVfaWR4KHJ0d2RldiwgY2hhbiwgUkZfUEFUSF9BLCBwaHlfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzoxOTk1Olx0cnR3ODkyMmRfc2V0X25iaV90b25lX2lkeChydHdkZXYsIGNoYW4sIFJGX1BBVEhfQiwgcGh5X2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTk5Ni19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jPTIwMDA9c3RhdGljIGNvbnN0IHUzMiBjaGlwX3RvcF9iaXRtYXNrWzJdID0gezB4ZmZmZiwgMHhmZmZmMDAwMH07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMjAwMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzoyMDAyOnN0YXRpYyB2b2lkIHJ0dzg5MjJkX2JiX3ByZWluaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBlbnVtIHJ0dzg5X3BoeV9pZHggcGh5X2lkeClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0yMDAzLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMjAxMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzoyMDEyOnN0YXRpYyB2b2lkIHJ0dzg5MjJkX2JiX3Bvc3Rpbml0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgZW51bSBydHc4OV9waHlfaWR4IHBoeV9pZHgpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMjAxMy17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTIwMTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6MjAxODpzdGF0aWMgdm9pZCBydHc4OTIyZF9iYl9yZXNldF9lbihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGVudW0gcnR3ODlfYmFuZCBiYW5kLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTIwMTktXHRcdFx0XHQgYm9vbCBlbiwgZW51bSBydHc4OV9waHlfaWR4IHBoeV9pZHgpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTIwMjYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6MjAyNzpzdGF0aWMgaW50IHJ0dzg5MjJkX2N0cmxfdHhfcGF0aF90bWFjKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAwMzo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5Mjc2MQoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDcyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV4YW1pbmluZyB0aGUgUlRXODkgRHJpdmVyIENvbXBpbGF0aW9uKioKCk9rYXksIHNvIGlmIEkgdW5kZXJzdGFuZCB0aGlzIGNvcnJlY3RseSwgdGhlIGBydHc4OTIyZC5jYCBmaWxlICpvbmx5KiBnZXRzIGNvbXBpbGVkIGludG8gdGhlIGtlcm5lbCBpZiBlaXRoZXIgYENPTkZJR19SVFc4OV84OTIyQUVgIG9yIGBDT05GSUdfUlRXODlfODkyMkFVYCBpcyBkZWZpbmVkLiBUaGF0IHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2gsIGJ1dCBJIGFsd2F5cyBsaWtlIHRvIGRvdWJsZS1jaGVjayB0aGVzZSB0aGluZ3MgdG8gbWFrZSBzdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55IGVkZ2UgY2FzZXMuIFRpbWUgdG8gZ28gYmFjayBhbmQgdGFrZSBhbm90aGVyIGxvb2sgYXQgdGhhdCBgTWFrZWZpbGVgIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2AgdG8gY29uZmlybSBteSBpbml0aWFsIGFzc2Vzc21lbnQgYW5kIGVuc3VyZSBJIGhhdmUgdGhlIGRlcGVuZGVuY3kgbG9naWMgY29ycmVjdCBpbiBteSBoZWFkLiBObyBwb2ludCBpbiBtYWtpbmcgYXNzdW1wdGlvbnMgd2hlbiBhIHF1aWNrIHJldmlldyB3aWxsIGNsYXJpZnkgdGhpbmdzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAwMzo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0dzg5MjJkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDAzOjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkzMDUzCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogNDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqSW52ZXN0aWdhdGluZyBhIFBvdGVudGlhbCBNYWtlZmlsZSBPbWlzc2lvbioqCgpIbW0sIGhvbGQgb24gYSBzZWNvbmQuIEkgd2FzIGV4cGVjdGluZyB0byBzZWUgc29tZXRoaW5nIGxpa2UgYHJ0dzg5MjJkLmNgIGluIHRoZSBtYWluIGBNYWtlZmlsZWAuLi4gYnV0IGl0JiMzOTtzIG5vdCB0aGVyZS4gVGhhdOKAmXMgYSBiaXQgdW51c3VhbC4gTGV0IG1lIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoZSBwcm9qZWN0IHN0cnVjdHVyZSwgc3BlY2lmaWNhbGx5IGRpdmluZyBpbnRvIHRoZSB3aXJlbGVzcyBSZWFsdGVrIGRyaXZlciBkaXJlY3RvcnkuIFJpZ2h0LCBsZXQmIzM5O3MgbmF2aWdhdGUgdG8gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGVgLiBJJiMzOTttIGd1ZXNzaW5nIHRoYXQgdGhlIG5lY2Vzc2FyeSBtb2R1bGUgY29tcGlsYXRpb24gZGV0YWlscywgZm9yIHNvbWV0aGluZyBzcGVjaWZpYyBsaWtlIHRoZSA4OTIyIGNoaXBzZXQsIGFyZSBsaWtlbHkgaGFuZGxlZCB3aXRoaW4gdGhhdCBzdWJkaXJlY3RvcnkmIzM5O3MgYE1ha2VmaWxlYC4gSXQmIzM5O3MgYSBjb21tb24gb3JnYW5pemF0aW9uYWwgcHJhY3RpY2UuIFRpbWUgdG8gc2VlIHdoYXQmIzM5O3MgcmVhbGx5IGdvaW5nIG9uIGluIHRoYXQgc3BlY2lmaWMgY29udGV4dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMDM6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ODkyMiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZT04Mj1ydHc4OV84ODUyY3Utb2JqcyA6PSBydHc4ODUyY3Uub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS04My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6ODQ6b2JqLSQoQ09ORklHX1JUVzg5Xzg5MjJBKSAmIzQzOz0gcnR3ODlfODkyMmEub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTo4NTpydHc4OV84OTIyYS1vYmpzIDo9IHJ0dzg5MjJhLm8gXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6ODY6XHRcdCAgICBydHc4OTIyYV9yZmsub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS04Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6ODg6b2JqLSQoQ09ORklHX1JUVzg5Xzg5MjJBRSkgJiM0Mzs9IHJ0dzg5Xzg5MjJhZS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjg5OnJ0dzg5Xzg5MjJhZS1vYmpzIDo9IHJ0dzg5MjJhZS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTkwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTo5MTpvYmotJChDT05GSUdfUlRXODlfODkyMkFVKSAmIzQzOz0gcnR3ODlfODkyMmF1Lm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6OTI6cnR3ODlfODkyMmF1LW9ianMgOj0gcnR3ODkyMmF1Lm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtOTMtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDAzOjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkzNzU3CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRlYnVnZ2luZyB0aGUgYHJ0dzg5MjJkLmNgIENvbXBpbGF0aW9uKioKCk9rYXksIGZpcnN0IHRoaW5ncyBmaXJzdCwgaGFuZyBvbiBhIHNlY29uZC4gV2h5IGlzbiYjMzk7dCBgcnR3ODkyMmQuY2AgYmVpbmcgY29tcGlsZWQ/IFRoYXQmIzM5O3MgZGVmaW5pdGVseSBub3QgcmlnaHQuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQmIzM5O3MgZ29pbmcgb24uIExldCBtZSBqdXN0IHF1aWNrbHkgcnVuIHRocm91Z2ggbXkgbWVudGFsIGNoZWNrbGlzdC4gQW0gSSBtaXNzaW5nIHNvbWV0aGluZyBvYnZpb3VzPyBJcyBpdCBwZXJoYXBzIG5vdCBiZWluZyBpbmNsdWRlZCBmcm9tIGFub3RoZXIgZmlsZT8gTm8sIEkgbmVlZCB0byBtZXRob2RpY2FsbHkgdHJhY2sgdGhpcyBkb3duLiBQZXJoYXBzIGl0JiMzOTtzIGp1c3Qgbm90IGluIHRoZSBgTWFrZWZpbGVgIHlldCBvciBtYXliZSBhIHJlY2VudCBjaGFuZ2UgaGFwcGVuZWQgaW4gYSBkaWZmZXJlbnQgYnJhbmNoIHRoYXQgSSBtaXNzZWQuCgpIb2xkIG9uIGEgbWludXRlLCB0aGUgcGF0Y2ggSSYjMzk7bSBsb29raW5nIGF0IG1vZGlmaWVzIGBjb2V4LmNgIGFuZCBgZncuY2AsIGFuZCBJIGtub3cgdGhvc2UgYXJlIGNvbXBpbGVkIHVuZGVyIGBSVFc4OV9DT1JFYC4gVGhhdCYjMzk7cyBhIGdvb2QgY2x1ZS4gT2theSwgbGV0JiMzOTtzIGhlYWQgb3ZlciB0byB0aGUgcmVhbHRlayB3aXJlbGVzcyBkcml2ZXJzIGRpcmVjdG9yeSBhbmQgY2hlY2sgdGhhdCBgTWFrZWZpbGVgLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBjb25maXJtIGBjb2V4Lm9gIGlzIGJlaW5nIGluY2x1ZGVkLiBJJiMzOTtsbCBnZXQgdG8gdGhlIGJvdHRvbSBvZiB0aGlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAwMzo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb2V4Lm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU9ND1ydHc4OV9jb3JlLXkgJiM0Mzs9IGNvcmUubyBcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtMTUtXHRcdHNhci5vIFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjE2Olx0XHRjb2V4Lm8gXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtMTctXHRcdHBzLm8gXFxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMDM6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTQyNzUKCQkJCQkJCW91dHB1dDogMzM1CgkJCQkJCQl0aG91Z2h0czogMTc2NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgUmVhbHRlayBydHc4OSBCbHVldG9vdGggQ29leGlzdGVuY2UgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGBjb2V4LmNgICppcyogY29tcGlsZWQgYXMgcGFydCBvZiB0aGUgYHJ0dzg5X2NvcmVgIG1vZHVsZSDigJMgdGhhdCYjMzk7cyB0aGUgYmFzZS4gVGhlIGNoYW5nZXMgYXJlIGZ1bmN0aW9uYWwsIHNwZWNpZmljYWxseSwgdGhleSYjMzk7cmUgdXBkYXRpbmcgZmlybXdhcmUgdmVyc2lvbnMsIGFkZGluZyBsb2dpYyBmb3IgYGZjeHRyeCA9PSA3YCBhbmQgYGZjeHRyeCA9PSA5YCwgYW5kLCBpbXBvcnRhbnRseSwgdGhlIHdheSBgYnRfcmVxX2xlbmAgYW5kIGByZl90cnhfcGFyYWAgYXJlIGFjY2Vzc2VkIGlzIGNoYW5naW5nIHRvIGFycmF5IGluZGV4aW5nIGJ5IFBIWS4gVGhpcyBpcyBhbGwgKmZ1bmN0aW9uYWwqIGNvZGUuCgpUaGUgbmV4dCBxdWVzdGlvbiwgb2YgY291cnNlLCBpcyAqcmVhY2hhYmlsaXR5Ki4gQ2FuIHdlIGFjdHVhbGx5IHRyaWdnZXIgdGhpcyBjb2RlPyBZZXMsIGRlZmluaXRlbHkuIFRoZSBkcml2ZXIgbmVlZHMgdG8gbG9hZCwgYW5kIHRoZSBjb2V4aXN0ZW5jZSBsb2dpYyBoYXMgdG8gaW5pdGlhbGl6ZS4KCk5vdywgd2hhdCBhcmUgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zPyBgQ09ORklHX1JUVzg5X0NPUkVgIGlzIHRoZSBiaWcgb25lLCBvYnZpb3VzbHkuIEJ1dCB0byBidWlsZCBpdCwgd2UgbmVlZCBhdCBsZWFzdCBvbmUgb2YgdGhlIGRyaXZlci1zcGVjaWZpYyBjb25maWdzLiBJIGNhbiBsaXN0IHRob3NlOiBgUlRXODlfODg1MkFFYCwgYFJUVzg5Xzg4NTJBVWAsIGBSVFc4OV84OTIyQUVgLCBgUlRXODlfODkyMkFVYC4gSeKAmWxsIG5vdGUgdGhhdCBgUlRXODlfODg1MkFFYCBpcyBQQ0kgYW5kIGBSVFc4OV84ODUyQVVgIGlzIFVTQiwganVzdCB0byBiZSBwcmVjaXNlLiBJJiMzOTtsbCBkb3VibGUgY2hlY2sgdGhlIEtjb25maWcgZmlsZXMsIGFuZCBpdCBsb29rcyBsaWtlIGBSVFc4OV84OTIyQUVgLCBgUlRXODlfODkyMkFVYCBhbmQgYFJUVzg5Xzg4NTJDYCBhcmUgYWxsIHRoZXJlLCBzbyBJJiMzOTtsbCBiZSBzdXJlIHRvIGxpc3QgdGhvc2UuCgpOb3csIHdoYXQgZnVuY3Rpb25zIGFyZSBhY3R1YWxseSBtb2RpZmllZD8gTGV0JiMzOTtzIHNlZS4uLiB0aGUgcGF0Y2ggaXMgdG91Y2hpbmc6CgotICAgYHJ0dzg5X2Z3X2gyY19jeGRydl90cnhfdjdgCi0gICBgcnR3ODlfZndfaDJjX2N4ZHJ2X3RyeF92OWAKLSAgIGBydHc4OV9md19oMmNfY3h0eHB3cl92N2AKLSAgIGBydHc4OV9md19oMmNfY3h0eHB3cl92OWAKLSAgIGBfc2V0X3dsX3R4X3Bvd2VyYAotICAgYF9zZXRfd2xfcnhfZ2FpbmAKLSAgIGBfc2V0X3JmX3RyeF9wYXJhYAotICAgYF91cGRhdGVfYnRfc2NiZGAKLSAgIGBfY2hrX2J0Y19yZXBvcnRgCi0gICBgcnR3ODlfYnRjX2MyaF9oYW5kbGVgCgpJJiMzOTtsbCBleHRyYWN0IHdoYXQgbG9va3MgbW9zdCBuZXcgb3IgaGVhdmlseSBtb2RpZmllZC4KCi0gICBgcnR3ODlfZndfaDJjX2N4ZHJ2X3RyeF92N2AKLSAgIGBydHc4OV9md19oMmNfY3hkcnZfdHJ4X3Y5YAotICAgYHJ0dzg5X2Z3X2gyY19jeHR4cHdyX3Y3YAotICAgYHJ0dzg5X2Z3X2gyY19jeHR4cHdyX3Y5YAotICAgYF9zZXRfcmZfdHJ4X3BhcmFgCi0gICBgX3VwZGF0ZV9idF9zY2JkYAotICAgYF9jaGtfYnRjX3JlcG9ydGAKLSAgIGBydHc4OV9idGNfYzJoX2hhbmRsZWAKCmBfc2V0X3dsX3R4X3Bvd2VyYCBpcyBzdGF0aWMuIE5vIHdvcnJpZXMsIEkgY2FuIHN0aWxsIGxpc3QgaXQuCgpJJiMzOTtsbCBjaGVjayBpZiBhbnkgZnVuY3Rpb25zIGFyZSBleHBvcnRlZC4gQmFzZWQgb24gdGhlIGZpbGUgY29udGV4dDoKCi0gICBgcnR3ODlfZndfaDJjX2N4ZHJ2X3RyeF92N2Agc2hvdWxkIGJlIGdsb2JhbCBpbiBgZncuY2AuCgpPa2F5LCBJJiMzOTtsbCBsaXN0IHRoZSBmdW5jdGlvbnMgdG8gZm9jdXMgb246CgotICAgYHJ0dzg5X2Z3X2gyY19jeGRydl90cnhfdjdgCi0gICBgcnR3ODlfZndfaDJjX2N4ZHJ2X3RyeF92OWAKLSAgIGBydHc4OV9md19oMmNfY3h0eHB3cl92N2AKLSAgIGBydHc4OV9md19oMmNfY3h0eHB3cl92OWAKLSAgIGBydHc4OV9idGNfYzJoX2hhbmRsZWAKLSAgIGBfY2hrX2J0Y19yZXBvcnRgCi0gICBgX3NldF9yZl90cnhfcGFyYWAKCkkgc2hvdWxkIGp1c3QgbWFrZSBzdXJlIHRoZSBuYW1lcyBhcmUgY29ycmVjdCBpbiB0aGUgZGlmZi4KCi0gICBgcnR3ODlfZndfaDJjX2N4ZHJ2X3RyeF92N2AKLSAgIGBydHc4OV9md19oMmNfY3hkcnZfdHJ4X3Y5YAotICAgYHJ0dzg5X2Z3X2gyY19jeHR4cHdyX3Y3YAoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDAzOjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtSVFc4OV9DT1JFJiMzNDssCiAgICAmIzM0O1JUVzg5Xzg4NTJBRSYjMzQ7LAogICAgJiMzNDtSVFc4OV84ODUyQVUmIzM0OywKICAgICYjMzQ7UlRXODlfODkyMkFFJiMzNDssCiAgICAmIzM0O1JUVzg5Xzg5MjJBVSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3J0dzg5X2Z3X2gyY19jeGRydl90cnhfdjcmIzM0OywKICAgICYjMzQ7cnR3ODlfZndfaDJjX2N4ZHJ2X3RyeF92OSYjMzQ7LAogICAgJiMzNDtydHc4OV9md19oMmNfY3h0eHB3cl92NyYjMzQ7LAogICAgJiMzNDtydHc4OV9md19oMmNfY3h0eHB3cl92OSYjMzQ7LAogICAgJiMzNDtfc2V0X3dsX3R4X3Bvd2VyJiMzNDssCiAgICAmIzM0O19zZXRfd2xfcnhfZ2FpbiYjMzQ7LAogICAgJiMzNDtfc2V0X3JmX3RyeF9wYXJhJiMzNDssCiAgICAmIzM0O191cGRhdGVfYnRfc2NiZCYjMzQ7LAogICAgJiMzNDtfY2hrX2J0Y19yZXBvcnQmIzM0OywKICAgICYjMzQ7cnR3ODlfYnRjX2MyaF9oYW5kbGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggdXBkYXRlcyB0aGUgQmx1ZXRvb3RoIGNvZXhpc3RlbmNlIChCVEMpIGxvZ2ljIGZvciBSZWFsdGVrIFdpLUZpIGRyaXZlcnMgKHJ0dzg5KS4gSXQgYWRkcyBzdXBwb3J0IGZvciBuZXcgZmlybXdhcmUgdmVyc2lvbnMgKHY3LCB2OSkgYW5kIG5ldyBoYXJkd2FyZSAoUlRMODkyMkQpLCBtb2RpZnlpbmcgaG93IFJGIFRYL1JYIHBhcmFtZXRlcnMgYXJlIGNvbmZpZ3VyZWQgYW5kIGhvdyBCVEMgcmVwb3J0cyBhcmUgaGFuZGxlZC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgZHJpdmVyJiMzOTtzIGNvcmUgbG9naWMgYW5kIGZpcm13YXJlIGNvbW11bmljYXRpb24sIHdoaWNoIGNhbiBiZSByZWFjaGVkIHZpYSBzb2Z0d2FyZS1lbXVsYXRlZCBVU0IvUENJIGRldmljZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JUVzg5X0NPUkUmIzM0OywKICAgICYjMzQ7UlRXODlfODg1MkFFJiMzNDssCiAgICAmIzM0O1JUVzg5Xzg4NTJBVSYjMzQ7LAogICAgJiMzNDtSVFc4OV84OTIyQUUmIzM0OywKICAgICYjMzQ7UlRXODlfODkyMkFVJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cnR3ODlfZndfaDJjX2N4ZHJ2X3RyeF92NyYjMzQ7LAogICAgJiMzNDtydHc4OV9md19oMmNfY3hkcnZfdHJ4X3Y5JiMzNDssCiAgICAmIzM0O3J0dzg5X2Z3X2gyY19jeHR4cHdyX3Y3JiMzNDssCiAgICAmIzM0O3J0dzg5X2Z3X2gyY19jeHR4cHdyX3Y5JiMzNDssCiAgICAmIzM0O19zZXRfd2xfdHhfcG93ZXImIzM0OywKICAgICYjMzQ7X3NldF93bF9yeF9nYWluJiMzNDssCiAgICAmIzM0O19zZXRfcmZfdHJ4X3BhcmEmIzM0OywKICAgICYjMzQ7X3VwZGF0ZV9idF9zY2JkJiMzNDssCiAgICAmIzM0O19jaGtfYnRjX3JlcG9ydCYjMzQ7LAogICAgJiMzNDtydHc4OV9idGNfYzJoX2hhbmRsZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCB1cGRhdGVzIHRoZSBCbHVldG9vdGggY29leGlzdGVuY2UgKEJUQykgbG9naWMgZm9yIFJlYWx0ZWsgV2ktRmkgZHJpdmVycyAocnR3ODkpLiBJdCBhZGRzIHN1cHBvcnQgZm9yIG5ldyBmaXJtd2FyZSB2ZXJzaW9ucyAodjcsIHY5KSBhbmQgbmV3IGhhcmR3YXJlIChSVEw4OTIyRCksIG1vZGlmeWluZyBob3cgUkYgVFgvUlggcGFyYW1ldGVycyBhcmUgY29uZmlndXJlZCBhbmQgaG93IEJUQyByZXBvcnRzIGFyZSBoYW5kbGVkLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBkcml2ZXImIzM5O3MgY29yZSBsb2dpYyBhbmQgZmlybXdhcmUgY29tbXVuaWNhdGlvbiwgd2hpY2ggY2FuIGJlIHJlYWNoZWQgdmlhIHNvZnR3YXJlLWVtdWxhdGVkIFVTQi9QQ0kgZGV2aWNlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDAzOjU2OjI1LjgzNjkyMTYzMloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc2MTc2OTg5NzY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlJUVzg5X0NPUkVcIixcbiAgICBcIlJUVzg5Xzg4NTJBRVwiLFxuICAgIFwiUlRXODlfODg1MkFVXCIsXG4gICAgXCJSVFc4OV84OTIyQUVcIixcbiAgICBcIlJUVzg5Xzg5MjJBVVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJ0dzg5X2Z3X2gyY19jeGRydl90cnhfdjdcIixcbiAgICBcInJ0dzg5X2Z3X2gyY19jeGRydl90cnhfdjlcIixcbiAgICBcInJ0dzg5X2Z3X2gyY19jeHR4cHdyX3Y3XCIsXG4gICAgXCJydHc4OV9md19oMmNfY3h0eHB3cl92OVwiLFxuICAgIFwiX3NldF93bF90eF9wb3dlclwiLFxuICAgIFwiX3NldF93bF9yeF9nYWluXCIsXG4gICAgXCJfc2V0X3JmX3RyeF9wYXJhXCIsXG4gICAgXCJfdXBkYXRlX2J0X3NjYmRcIixcbiAgICBcIl9jaGtfYnRjX3JlcG9ydFwiLFxuICAgIFwicnR3ODlfYnRjX2MyaF9oYW5kbGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCB1cGRhdGVzIHRoZSBCbHVldG9vdGggY29leGlzdGVuY2UgKEJUQykgbG9naWMgZm9yIFJlYWx0ZWsgV2ktRmkgZHJpdmVycyAocnR3ODkpLiBJdCBhZGRzIHN1cHBvcnQgZm9yIG5ldyBmaXJtd2FyZSB2ZXJzaW9ucyAodjcsIHY5KSBhbmQgbmV3IGhhcmR3YXJlIChSVEw4OTIyRCksIG1vZGlmeWluZyBob3cgUkYgVFgvUlggcGFyYW1ldGVycyBhcmUgY29uZmlndXJlZCBhbmQgaG93IEJUQyByZXBvcnRzIGFyZSBoYW5kbGVkLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBkcml2ZXIncyBjb3JlIGxvZ2ljIGFuZCBmaXJtd2FyZSBjb21tdW5pY2F0aW9uLCB3aGljaCBjYW4gYmUgcmVhY2hlZCB2aWEgc29mdHdhcmUtZW11bGF0ZWQgVVNCL1BDSSBkZXZpY2VzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQwMzo1NjoyNS44MzY5MjcxNTJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYzMDA1NDM2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDBkMDJhNWY5ZjdiNGRiODA4MTRlZjIyY2I5ZTUzNjA5MWU2NWQ3MDJcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdW4gMjQgMDM6NTY6MjQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguY1xcbmluZGV4IDBmN2FlNTcyZWY5MTUxLi4xMzYxZDRkNTQ1MjgyMSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jXFxuQEAgLTExLDcgKzExLDcgQEBcXG4gI2luY2x1ZGUgXFxcInBzLmhcXFwiXFxuICNpbmNsdWRlIFxcXCJyZWcuaFxcXCJcXG4gXFxuLSNkZWZpbmUgUlRXODlfQ09FWF9WRVJTSU9OIDB4MDkwMDAwMTNcXG4rI2RlZmluZSBSVFc4OV9DT0VYX1ZFUlNJT04gMHgwOTAwMDExM1xcbiAjZGVmaW5lIEZDWERFRl9TVEVQIDUwIC8qIE1VU1QgXFx1MDAzYz0gRkNYTUFYX1NURVAgYW5kIG1hdGNoIHdpdGggd2wgZncqL1xcbiAjZGVmaW5lIEJUQ19FMkdfTElNSVRfREVGIDgwXFxuIFxcbkBAIC0xMzMsMTI1ICsxMzMsMTQ5IEBAIHN0YXRpYyBjb25zdCB1MzIgY3h0YmxbXSA9IHtcXG4gXFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3ZlciBydHc4OV9idGNfdmVyX2RlZnNbXSA9IHtcXG4gXFx0LyogZmlybXdhcmUgdmVyc2lvbiBtdXN0IGJlIGluIGRlY3JlYXNpbmcgb3JkZXIgZm9yIGVhY2ggY2hpcCAqL1xcbitcXHR7UlRMODkyMkQsIFJUVzg5X0ZXX1ZFUl9DT0RFKDAsIDM1LCA5NCwgMCksXFxuK1xcdCAuZmN4YnRjcnB0ID0gMTEsIC5mY3h0ZG1hID0gOCwgICAgLmZjeHNsb3RzID0gNywgLmZjeGN5c3RhID0gOCxcXG4rXFx0IC5mY3hzdGVwID0gNywgICAgLmZjeG51bGxzdGEgPSA3LCAuZmN4bXJlZyA9IDcsICAuZmN4Z3Bpb2RiZyA9IDgsXFxuK1xcdCAuZmN4YnR2ZXIgPSA4LCAgIC5mY3hidHNjYW4gPSA4LCAgLmZjeGJ0YWZoID0gOCwgLmZjeGJ0ZGV2aW5mbyA9IDgsXFxuK1xcdCAuZndscm9sZSA9IDEwLCAgICAuZnJwdG1hcCA9IDUsICAgIC5mY3hjdHJsID0gOSwgIC5mY3hpbml0ID0gMTAsXFxuK1xcdCAuZndldm50cnB0bCA9IDEsICAuZndjMmhmdW5jID0gNCwgLmRydmluZm9fdmVyID0gMywgLmluZm9fYnVmID0gMTgwMCxcXG4rXFx0IC5tYXhfcm9sZV9udW0gPSA2LCAuZmN4b3NpID0gNiwgICAuZmN4bWxvID0gMiwgICAuYnRfZGVzaXJlZCA9IDgsXFxuK1xcdCAuZmN4dHJ4ID0gOSxcXG4rXFx0fSxcXG4gXFx0e1JUTDg4NTJCVCwgUlRXODlfRldfVkVSX0NPREUoMCwgMjksIDEyMiwgMCksXFxuIFxcdCAuZmN4YnRjcnB0ID0gOCwgLmZjeHRkbWEgPSA3LCAgICAuZmN4c2xvdHMgPSA3LCAuZmN4Y3lzdGEgPSA3LFxcbiBcXHQgLmZjeHN0ZXAgPSA3LCAgIC5mY3hudWxsc3RhID0gNywgLmZjeG1yZWcgPSA3LCAgLmZjeGdwaW9kYmcgPSA3LFxcbiBcXHQgLmZjeGJ0dmVyID0gNywgIC5mY3hidHNjYW4gPSA3LCAgLmZjeGJ0YWZoID0gNywgLmZjeGJ0ZGV2aW5mbyA9IDcsXFxuIFxcdCAuZndscm9sZSA9IDcsICAgLmZycHRtYXAgPSAzLCAgICAuZmN4Y3RybCA9IDcsICAuZmN4aW5pdCA9IDcsXFxuLVxcdCAuZndldm50cnB0bCA9IDEsIC5md2MyaGZ1bmMgPSAyLCAuZHJ2aW5mb190eXBlID0gMSwgLmluZm9fYnVmID0gMTgwMCxcXG4rXFx0IC5md2V2bnRycHRsID0gMSwgLmZ3YzJoZnVuYyA9IDIsIC5kcnZpbmZvX3ZlciA9IDEsIC5pbmZvX2J1ZiA9IDE4MDAsXFxuIFxcdCAubWF4X3JvbGVfbnVtID0gNiwgLmZjeG9zaSA9IDAsICAuZmN4bWxvID0gMCwgICAuYnRfZGVzaXJlZCA9IDgsXFxuK1xcdCAuZmN4dHJ4ID0gMCxcXG4gXFx0fSxcXG4gXFx0e1JUTDg4NTJCVCwgUlRXODlfRldfVkVSX0NPREUoMCwgMjksIDkwLCAwKSxcXG4gXFx0IC5mY3hidGNycHQgPSA3LCAuZmN4dGRtYSA9IDcsICAgIC5mY3hzbG90cyA9IDcsIC5mY3hjeXN0YSA9IDcsXFxuIFxcdCAuZmN4c3RlcCA9IDcsICAgLmZjeG51bGxzdGEgPSA3LCAuZmN4bXJlZyA9IDcsICAuZmN4Z3Bpb2RiZyA9IDcsXFxuIFxcdCAuZmN4YnR2ZXIgPSA3LCAgLmZjeGJ0c2NhbiA9IDcsICAuZmN4YnRhZmggPSA3LCAuZmN4YnRkZXZpbmZvID0gNyxcXG4gXFx0IC5md2xyb2xlID0gNywgICAuZnJwdG1hcCA9IDMsICAgIC5mY3hjdHJsID0gNywgIC5mY3hpbml0ID0gNyxcXG4tXFx0IC5md2V2bnRycHRsID0gMSwgLmZ3YzJoZnVuYyA9IDIsIC5kcnZpbmZvX3R5cGUgPSAxLCAuaW5mb19idWYgPSAxODAwLFxcbitcXHQgLmZ3ZXZudHJwdGwgPSAxLCAuZndjMmhmdW5jID0gMiwgLmRydmluZm9fdmVyID0gMSwgLmluZm9fYnVmID0gMTgwMCxcXG4gXFx0IC5tYXhfcm9sZV9udW0gPSA2LCAuZmN4b3NpID0gMCwgIC5mY3htbG8gPSAwLCAgIC5idF9kZXNpcmVkID0gOCxcXG4rXFx0IC5mY3h0cnggPSAwLFxcbiBcXHR9LFxcbiBcXHR7UlRMODkyMkEsIFJUVzg5X0ZXX1ZFUl9DT0RFKDAsIDM1LCA3MSwgMCksXFxuIFxcdCAuZmN4YnRjcnB0ID0gOCwgLmZjeHRkbWEgPSA3LCAgICAuZmN4c2xvdHMgPSA3LCAuZmN4Y3lzdGEgPSA3LFxcbiBcXHQgLmZjeHN0ZXAgPSA3LCAgIC5mY3hudWxsc3RhID0gNywgLmZjeG1yZWcgPSA3LCAgLmZjeGdwaW9kYmcgPSA3LFxcbiBcXHQgLmZjeGJ0dmVyID0gNywgIC5mY3hidHNjYW4gPSA3LCAgLmZjeGJ0YWZoID0gNywgLmZjeGJ0ZGV2aW5mbyA9IDcsXFxuIFxcdCAuZndscm9sZSA9IDgsICAgLmZycHRtYXAgPSA0LCAgICAuZmN4Y3RybCA9IDcsICAuZmN4aW5pdCA9IDcsXFxuLVxcdCAuZndldm50cnB0bCA9IDEsIC5md2MyaGZ1bmMgPSAzLCAuZHJ2aW5mb190eXBlID0gMiwgLmluZm9fYnVmID0gMTgwMCxcXG4rXFx0IC5md2V2bnRycHRsID0gMSwgLmZ3YzJoZnVuYyA9IDMsIC5kcnZpbmZvX3ZlciA9IDMsIC5pbmZvX2J1ZiA9IDE4MDAsXFxuIFxcdCAubWF4X3JvbGVfbnVtID0gNiwgLmZjeG9zaSA9IDEsICAuZmN4bWxvID0gMSwgICAuYnRfZGVzaXJlZCA9IDksXFxuK1xcdCAuZmN4dHJ4ID0gNyxcXG4gXFx0fSxcXG4gXFx0e1JUTDg5MjJBLCBSVFc4OV9GV19WRVJfQ09ERSgwLCAzNSwgNjMsIDApLFxcbiBcXHQgLmZjeGJ0Y3JwdCA9IDgsIC5mY3h0ZG1hID0gNywgICAgLmZjeHNsb3RzID0gNywgLmZjeGN5c3RhID0gNyxcXG4gXFx0IC5mY3hzdGVwID0gNywgICAuZmN4bnVsbHN0YSA9IDcsIC5mY3htcmVnID0gNywgIC5mY3hncGlvZGJnID0gNyxcXG4gXFx0IC5mY3hidHZlciA9IDcsICAuZmN4YnRzY2FuID0gNywgIC5mY3hidGFmaCA9IDcsIC5mY3hidGRldmluZm8gPSA3LFxcbiBcXHQgLmZ3bHJvbGUgPSA4LCAgIC5mcnB0bWFwID0gNCwgICAgLmZjeGN0cmwgPSA3LCAgLmZjeGluaXQgPSA3LFxcbi1cXHQgLmZ3ZXZudHJwdGwgPSAxLCAuZndjMmhmdW5jID0gMywgLmRydmluZm9fdHlwZSA9IDIsIC5pbmZvX2J1ZiA9IDE4MDAsXFxuK1xcdCAuZndldm50cnB0bCA9IDEsIC5md2MyaGZ1bmMgPSAzLCAuZHJ2aW5mb192ZXIgPSAyLCAuaW5mb19idWYgPSAxODAwLFxcbiBcXHQgLm1heF9yb2xlX251bSA9IDYsIC5mY3hvc2kgPSAxLCAgLmZjeG1sbyA9IDEsICAgLmJ0X2Rlc2lyZWQgPSA5LFxcbitcXHQgLmZjeHRyeCA9IDAsXFxuIFxcdH0sXFxuIFxcdHtSVEw4OTIyQSwgUlRXODlfRldfVkVSX0NPREUoMCwgMzUsIDgsIDApLFxcbiBcXHQgLmZjeGJ0Y3JwdCA9IDgsIC5mY3h0ZG1hID0gNywgICAgLmZjeHNsb3RzID0gNywgLmZjeGN5c3RhID0gNyxcXG4gXFx0IC5mY3hzdGVwID0gNywgICAuZmN4bnVsbHN0YSA9IDcsIC5mY3htcmVnID0gNywgIC5mY3hncGlvZGJnID0gNyxcXG4gXFx0IC5mY3hidHZlciA9IDcsICAuZmN4YnRzY2FuID0gNywgIC5mY3hidGFmaCA9IDcsIC5mY3hidGRldmluZm8gPSA3LFxcbiBcXHQgLmZ3bHJvbGUgPSA4LCAgIC5mcnB0bWFwID0gMywgICAgLmZjeGN0cmwgPSA3LCAgLmZjeGluaXQgPSA3LFxcbi1cXHQgLmZ3ZXZudHJwdGwgPSAxLCAuZndjMmhmdW5jID0gMSwgLmRydmluZm9fdHlwZSA9IDEsIC5pbmZvX2J1ZiA9IDE4MDAsXFxuK1xcdCAuZndldm50cnB0bCA9IDEsIC5md2MyaGZ1bmMgPSAxLCAuZHJ2aW5mb192ZXIgPSAxLCAuaW5mb19idWYgPSAxODAwLFxcbiBcXHQgLm1heF9yb2xlX251bSA9IDYsIC5mY3hvc2kgPSAwLCAgLmZjeG1sbyA9IDAsICAgLmJ0X2Rlc2lyZWQgPSA3LFxcbitcXHQgLmZjeHRyeCA9IDAsXFxuIFxcdH0sXFxuIFxcdHtSVEw4ODUxQiwgUlRXODlfRldfVkVSX0NPREUoMCwgMjksIDI5LCAwKSxcXG4gXFx0IC5mY3hidGNycHQgPSAxMDUsIC5mY3h0ZG1hID0gMywgICAgLmZjeHNsb3RzID0gMSwgLmZjeGN5c3RhID0gNSxcXG4gXFx0IC5mY3hzdGVwID0gMywgICAuZmN4bnVsbHN0YSA9IDIsIC5mY3htcmVnID0gMiwgIC5mY3hncGlvZGJnID0gMSxcXG4gXFx0IC5mY3hidHZlciA9IDEsICAuZmN4YnRzY2FuID0gMiwgIC5mY3hidGFmaCA9IDIsIC5mY3hidGRldmluZm8gPSAxLFxcbiBcXHQgLmZ3bHJvbGUgPSAyLCAgIC5mcnB0bWFwID0gMywgICAgLmZjeGN0cmwgPSAxLCAgLmZjeGluaXQgPSAwLFxcbi1cXHQgLmZ3ZXZudHJwdGwgPSAwLCAuZndjMmhmdW5jID0gMSwgLmRydmluZm9fdHlwZSA9IDAsIC5pbmZvX2J1ZiA9IDE4MDAsXFxuK1xcdCAuZndldm50cnB0bCA9IDAsIC5md2MyaGZ1bmMgPSAxLCAuZHJ2aW5mb192ZXIgPSAwLCAuaW5mb19idWYgPSAxODAwLFxcbiBcXHQgLm1heF9yb2xlX251bSA9IDYsIC5mY3hvc2kgPSAwLCAgLmZjeG1sbyA9IDAsICAgLmJ0X2Rlc2lyZWQgPSA3LFxcbitcXHQgLmZjeHRyeCA9IDAsXFxuIFxcdH0sXFxuIFxcdHtSVEw4ODUyQywgUlRXODlfRldfVkVSX0NPREUoMCwgMjcsIDU3LCAwKSxcXG4gXFx0IC5mY3hidGNycHQgPSA0LCAuZmN4dGRtYSA9IDMsICAgIC5mY3hzbG90cyA9IDEsIC5mY3hjeXN0YSA9IDMsXFxuIFxcdCAuZmN4c3RlcCA9IDMsICAgLmZjeG51bGxzdGEgPSAyLCAuZmN4bXJlZyA9IDEsICAuZmN4Z3Bpb2RiZyA9IDEsXFxuIFxcdCAuZmN4YnR2ZXIgPSAxLCAgLmZjeGJ0c2NhbiA9IDEsICAuZmN4YnRhZmggPSAyLCAuZmN4YnRkZXZpbmZvID0gMSxcXG4gXFx0IC5md2xyb2xlID0gMSwgICAuZnJwdG1hcCA9IDMsICAgIC5mY3hjdHJsID0gMSwgIC5mY3hpbml0ID0gMCxcXG4tXFx0IC5md2V2bnRycHRsID0gMCwgLmZ3YzJoZnVuYyA9IDEsIC5kcnZpbmZvX3R5cGUgPSAwLCAuaW5mb19idWYgPSAxMjgwLFxcbitcXHQgLmZ3ZXZudHJwdGwgPSAwLCAuZndjMmhmdW5jID0gMSwgLmRydmluZm9fdmVyID0gMCwgLmluZm9fYnVmID0gMTI4MCxcXG4gXFx0IC5tYXhfcm9sZV9udW0gPSA1LCAuZmN4b3NpID0gMCwgIC5mY3htbG8gPSAwLCAgIC5idF9kZXNpcmVkID0gNyxcXG4rXFx0IC5mY3h0cnggPSAwLFxcbiBcXHR9LFxcbiBcXHR7UlRMODg1MkMsIFJUVzg5X0ZXX1ZFUl9DT0RFKDAsIDI3LCA0MiwgMCksXFxuIFxcdCAuZmN4YnRjcnB0ID0gNCwgLmZjeHRkbWEgPSAzLCAgICAuZmN4c2xvdHMgPSAxLCAuZmN4Y3lzdGEgPSAzLFxcbiBcXHQgLmZjeHN0ZXAgPSAzLCAgIC5mY3hudWxsc3RhID0gMiwgLmZjeG1yZWcgPSAxLCAgLmZjeGdwaW9kYmcgPSAxLFxcbiBcXHQgLmZjeGJ0dmVyID0gMSwgIC5mY3hidHNjYW4gPSAxLCAgLmZjeGJ0YWZoID0gMiwgLmZjeGJ0ZGV2aW5mbyA9IDEsXFxuIFxcdCAuZndscm9sZSA9IDEsICAgLmZycHRtYXAgPSAyLCAgICAuZmN4Y3RybCA9IDEsICAuZmN4aW5pdCA9IDAsXFxuLVxcdCAuZndldm50cnB0bCA9IDAsIC5md2MyaGZ1bmMgPSAxLCAuZHJ2aW5mb190eXBlID0gMCwgLmluZm9fYnVmID0gMTI4MCxcXG4rXFx0IC5md2V2bnRycHRsID0gMCwgLmZ3YzJoZnVuYyA9IDEsIC5kcnZpbmZvX3ZlciA9IDAsIC5pbmZvX2J1ZiA9IDEyODAsXFxuIFxcdCAubWF4X3JvbGVfbnVtID0gNSwgLmZjeG9zaSA9IDAsICAuZmN4bWxvID0gMCwgICAuYnRfZGVzaXJlZCA9IDcsXFxuK1xcdCAuZmN4dHJ4ID0gMCxcXG4gXFx0fSxcXG4gXFx0e1JUTDg4NTJDLCBSVFc4OV9GV19WRVJfQ09ERSgwLCAyNywgMCwgMCksXFxuIFxcdCAuZmN4YnRjcnB0ID0gNCwgLmZjeHRkbWEgPSAzLCAgICAuZmN4c2xvdHMgPSAxLCAuZmN4Y3lzdGEgPSAzLFxcbiBcXHQgLmZjeHN0ZXAgPSAzLCAgIC5mY3hudWxsc3RhID0gMiwgLmZjeG1yZWcgPSAxLCAgLmZjeGdwaW9kYmcgPSAxLFxcbiBcXHQgLmZjeGJ0dmVyID0gMSwgIC5mY3hidHNjYW4gPSAxLCAgLmZjeGJ0YWZoID0gMSwgLmZjeGJ0ZGV2aW5mbyA9IDEsXFxuIFxcdCAuZndscm9sZSA9IDEsICAgLmZycHRtYXAgPSAyLCAgICAuZmN4Y3RybCA9IDEsICAuZmN4aW5pdCA9IDAsXFxuLVxcdCAuZndldm50cnB0bCA9IDAsIC5md2MyaGZ1bmMgPSAxLCAuZHJ2aW5mb190eXBlID0gMCwgLmluZm9fYnVmID0gMTI4MCxcXG4rXFx0IC5md2V2bnRycHRsID0gMCwgLmZ3YzJoZnVuYyA9IDEsIC5kcnZpbmZvX3ZlciA9IDAsIC5pbmZvX2J1ZiA9IDEyODAsXFxuIFxcdCAubWF4X3JvbGVfbnVtID0gNSwgLmZjeG9zaSA9IDAsICAuZmN4bWxvID0gMCwgICAuYnRfZGVzaXJlZCA9IDcsXFxuK1xcdCAuZmN4dHJ4ID0gMCxcXG4gXFx0fSxcXG4gXFx0e1JUTDg4NTJCLCBSVFc4OV9GV19WRVJfQ09ERSgwLCAyOSwgMTIyLCAwKSxcXG4gXFx0IC5mY3hidGNycHQgPSA4LCAuZmN4dGRtYSA9IDcsICAgIC5mY3hzbG90cyA9IDcsIC5mY3hjeXN0YSA9IDcsXFxuIFxcdCAuZmN4c3RlcCA9IDcsICAgLmZjeG51bGxzdGEgPSA3LCAuZmN4bXJlZyA9IDcsICAuZmN4Z3Bpb2RiZyA9IDcsXFxuIFxcdCAuZmN4YnR2ZXIgPSA3LCAgLmZjeGJ0c2NhbiA9IDcsICAuZmN4YnRhZmggPSA3LCAuZmN4YnRkZXZpbmZvID0gNyxcXG4gXFx0IC5md2xyb2xlID0gNywgICAuZnJwdG1hcCA9IDMsICAgIC5mY3hjdHJsID0gNywgIC5mY3hpbml0ID0gNyxcXG4tXFx0IC5md2V2bnRycHRsID0gMSwgLmZ3YzJoZnVuYyA9IDIsIC5kcnZpbmZvX3R5cGUgPSAxLCAuaW5mb19idWYgPSAxODAwLFxcbitcXHQgLmZ3ZXZudHJwdGwgPSAxLCAuZndjMmhmdW5jID0gMiwgLmRydmluZm9fdmVyID0gMSwgLmluZm9fYnVmID0gMTgwMCxcXG4gXFx0IC5tYXhfcm9sZV9udW0gPSA2LCAuZmN4b3NpID0gMCwgIC5mY3htbG8gPSAwLCAgIC5idF9kZXNpcmVkID0gOCxcXG4rXFx0IC5mY3h0cnggPSAwLFxcbiBcXHR9LFxcbiBcXHR7UlRMODg1MkIsIFJUVzg5X0ZXX1ZFUl9DT0RFKDAsIDI5LCAyOSwgMCksXFxuIFxcdCAuZmN4YnRjcnB0ID0gMTA1LCAuZmN4dGRtYSA9IDMsICAuZmN4c2xvdHMgPSAxLCAuZmN4Y3lzdGEgPSA1LFxcbiBcXHQgLmZjeHN0ZXAgPSAzLCAgIC5mY3hudWxsc3RhID0gMiwgLmZjeG1yZWcgPSAyLCAgLmZjeGdwaW9kYmcgPSAxLFxcbiBcXHQgLmZjeGJ0dmVyID0gMSwgIC5mY3hidHNjYW4gPSAyLCAgLmZjeGJ0YWZoID0gMiwgLmZjeGJ0ZGV2aW5mbyA9IDEsXFxuIFxcdCAuZndscm9sZSA9IDIsICAgLmZycHRtYXAgPSAzLCAgICAuZmN4Y3RybCA9IDEsICAuZmN4aW5pdCA9IDAsXFxuLVxcdCAuZndldm50cnB0bCA9IDAsIC5md2MyaGZ1bmMgPSAxLCAuZHJ2aW5mb190eXBlID0gMCwgLmluZm9fYnVmID0gMTgwMCxcXG4rXFx0IC5md2V2bnRycHRsID0gMCwgLmZ3YzJoZnVuYyA9IDEsIC5kcnZpbmZvX3ZlciA9IDAsIC5pbmZvX2J1ZiA9IDE4MDAsXFxuIFxcdCAubWF4X3JvbGVfbnVtID0gNiwgLmZjeG9zaSA9IDAsICAuZmN4bWxvID0gMCwgICAuYnRfZGVzaXJlZCA9IDcsXFxuK1xcdCAuZmN4dHJ4ID0gMCxcXG4gXFx0fSxcXG4gXFx0e1JUTDg4NTJCLCBSVFc4OV9GV19WRVJfQ09ERSgwLCAyOSwgMTQsIDApLFxcbiBcXHQgLmZjeGJ0Y3JwdCA9IDUsIC5mY3h0ZG1hID0gMywgICAgLmZjeHNsb3RzID0gMSwgLmZjeGN5c3RhID0gNCxcXG4gXFx0IC5mY3hzdGVwID0gMywgICAuZmN4bnVsbHN0YSA9IDIsIC5mY3htcmVnID0gMSwgIC5mY3hncGlvZGJnID0gMSxcXG4gXFx0IC5mY3hidHZlciA9IDEsICAuZmN4YnRzY2FuID0gMSwgIC5mY3hidGFmaCA9IDIsIC5mY3hidGRldmluZm8gPSAxLFxcbiBcXHQgLmZ3bHJvbGUgPSAxLCAgIC5mcnB0bWFwID0gMywgICAgLmZjeGN0cmwgPSAxLCAgLmZjeGluaXQgPSAwLFxcbi1cXHQgLmZ3ZXZudHJwdGwgPSAwLCAuZndjMmhmdW5jID0gMSwgLmRydmluZm9fdHlwZSA9IDAsIC5pbmZvX2J1ZiA9IDE4MDAsXFxuK1xcdCAuZndldm50cnB0bCA9IDAsIC5md2MyaGZ1bmMgPSAxLCAuZHJ2aW5mb192ZXIgPSAwLCAuaW5mb19idWYgPSAxODAwLFxcbiBcXHQgLm1heF9yb2xlX251bSA9IDYsIC5mY3hvc2kgPSAwLCAgLmZjeG1sbyA9IDAsICAgLmJ0X2Rlc2lyZWQgPSA3LFxcbitcXHQgLmZjeHRyeCA9IDAsXFxuIFxcdH0sXFxuIFxcdHtSVEw4ODUyQiwgUlRXODlfRldfVkVSX0NPREUoMCwgMjcsIDAsIDApLFxcbiBcXHQgLmZjeGJ0Y3JwdCA9IDQsIC5mY3h0ZG1hID0gMywgICAgLmZjeHNsb3RzID0gMSwgLmZjeGN5c3RhID0gMyxcXG4gXFx0IC5mY3hzdGVwID0gMywgICAuZmN4bnVsbHN0YSA9IDIsIC5mY3htcmVnID0gMSwgIC5mY3hncGlvZGJnID0gMSxcXG4gXFx0IC5mY3hidHZlciA9IDEsICAuZmN4YnRzY2FuID0gMSwgIC5mY3hidGFmaCA9IDEsIC5mY3hidGRldmluZm8gPSAxLFxcbiBcXHQgLmZ3bHJvbGUgPSAxLCAgIC5mcnB0bWFwID0gMSwgICAgLmZjeGN0cmwgPSAxLCAgLmZjeGluaXQgPSAwLFxcbi1cXHQgLmZ3ZXZudHJwdGwgPSAwLCAuZndjMmhmdW5jID0gMSwgLmRydmluZm9fdHlwZSA9IDAsIC5pbmZvX2J1ZiA9IDEyODAsXFxuK1xcdCAuZndldm50cnB0bCA9IDAsIC5md2MyaGZ1bmMgPSAxLCAuZHJ2aW5mb192ZXIgPSAwLCAuaW5mb19idWYgPSAxMjgwLFxcbiBcXHQgLm1heF9yb2xlX251bSA9IDUsIC5mY3hvc2kgPSAwLCAgLmZjeG1sbyA9IDAsICAgLmJ0X2Rlc2lyZWQgPSA3LFxcbitcXHQgLmZjeHRyeCA9IDAsXFxuIFxcdH0sXFxuIFxcdHtSVEw4ODUyQSwgUlRXODlfRldfVkVSX0NPREUoMCwgMTMsIDM3LCAwKSxcXG4gXFx0IC5mY3hidGNycHQgPSA0LCAuZmN4dGRtYSA9IDMsICAgIC5mY3hzbG90cyA9IDEsIC5mY3hjeXN0YSA9IDMsXFxuIFxcdCAuZmN4c3RlcCA9IDMsICAgLmZjeG51bGxzdGEgPSAyLCAuZmN4bXJlZyA9IDEsICAuZmN4Z3Bpb2RiZyA9IDEsXFxuIFxcdCAuZmN4YnR2ZXIgPSAxLCAgLmZjeGJ0c2NhbiA9IDEsICAuZmN4YnRhZmggPSAyLCAuZmN4YnRkZXZpbmZvID0gMSxcXG4gXFx0IC5md2xyb2xlID0gMSwgICAuZnJwdG1hcCA9IDMsICAgIC5mY3hjdHJsID0gMSwgIC5mY3hpbml0ID0gMCxcXG4tXFx0IC5md2V2bnRycHRsID0gMCwgLmZ3YzJoZnVuYyA9IDAsIC5kcnZpbmZvX3R5cGUgPSAwLCAuaW5mb19idWYgPSAxMjgwLFxcbitcXHQgLmZ3ZXZudHJwdGwgPSAwLCAuZndjMmhmdW5jID0gMCwgLmRydmluZm9fdmVyID0gMCwgLmluZm9fYnVmID0gMTI4MCxcXG4gXFx0IC5tYXhfcm9sZV9udW0gPSA1LCAuZmN4b3NpID0gMCwgIC5mY3htbG8gPSAwLCAgIC5idF9kZXNpcmVkID0gNyxcXG4rXFx0IC5mY3h0cnggPSAwLFxcbiBcXHR9LFxcbiBcXHR7UlRMODg1MkEsIFJUVzg5X0ZXX1ZFUl9DT0RFKDAsIDEzLCAwLCAwKSxcXG4gXFx0IC5mY3hidGNycHQgPSAxLCAuZmN4dGRtYSA9IDEsICAgIC5mY3hzbG90cyA9IDEsIC5mY3hjeXN0YSA9IDIsXFxuIFxcdCAuZmN4c3RlcCA9IDIsICAgLmZjeG51bGxzdGEgPSAxLCAuZmN4bXJlZyA9IDEsICAuZmN4Z3Bpb2RiZyA9IDEsXFxuIFxcdCAuZmN4YnR2ZXIgPSAxLCAgLmZjeGJ0c2NhbiA9IDEsICAuZmN4YnRhZmggPSAxLCAuZmN4YnRkZXZpbmZvID0gMSxcXG4gXFx0IC5md2xyb2xlID0gMCwgICAuZnJwdG1hcCA9IDAsICAgIC5mY3hjdHJsID0gMCwgIC5mY3hpbml0ID0gMCxcXG4tXFx0IC5md2V2bnRycHRsID0gMCwgLmZ3YzJoZnVuYyA9IDAsIC5kcnZpbmZvX3R5cGUgPSAwLCAuaW5mb19idWYgPSAxMDI0LFxcbitcXHQgLmZ3ZXZudHJwdGwgPSAwLCAuZndjMmhmdW5jID0gMCwgLmRydmluZm9fdmVyID0gMCwgLmluZm9fYnVmID0gMTAyNCxcXG4gXFx0IC5tYXhfcm9sZV9udW0gPSA1LCAuZmN4b3NpID0gMCwgIC5mY3htbG8gPSAwLCAgIC5idF9kZXNpcmVkID0gNyxcXG4rXFx0IC5mY3h0cnggPSAwLFxcbiBcXHR9LFxcbiBcXG4gXFx0Lyoga2VlcCBpdCB0byBiZSB0aGUgbGFzdCBhcyBkZWZhdWx0IGVudHJ5ICovXFxuQEAgLTI2MCw4ICsyODQsOSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2J0Y192ZXIgcnR3ODlfYnRjX3Zlcl9kZWZzW10gPSB7XFxuIFxcdCAuZmN4c3RlcCA9IDIsICAgLmZjeG51bGxzdGEgPSAxLCAuZmN4bXJlZyA9IDEsICAuZmN4Z3Bpb2RiZyA9IDEsXFxuIFxcdCAuZmN4YnR2ZXIgPSAxLCAgLmZjeGJ0c2NhbiA9IDEsICAuZmN4YnRhZmggPSAxLCAuZmN4YnRkZXZpbmZvID0gMSxcXG4gXFx0IC5md2xyb2xlID0gMCwgICAuZnJwdG1hcCA9IDAsICAgIC5mY3hjdHJsID0gMCwgIC5mY3hpbml0ID0gMCxcXG4tXFx0IC5md2V2bnRycHRsID0gMCwgLmZ3YzJoZnVuYyA9IDEsIC5kcnZpbmZvX3R5cGUgPSAwLCAuaW5mb19idWYgPSAxMDI0LFxcbitcXHQgLmZ3ZXZudHJwdGwgPSAwLCAuZndjMmhmdW5jID0gMSwgLmRydmluZm9fdmVyID0gMCwgLmluZm9fYnVmID0gMTAyNCxcXG4gXFx0IC5tYXhfcm9sZV9udW0gPSA1LCAuZmN4b3NpID0gMCwgIC5mY3htbG8gPSAwLCAgIC5idF9kZXNpcmVkID0gNyxcXG4rXFx0IC5mY3h0cnggPSAwLFxcbiBcXHR9LFxcbiB9O1xcbiBcXG5AQCAtMjg4LDYgKzMxMyw3IEBAIHN0YXRpYyB1MzIgY2hpcF9pZF90b19idF9yb21fY29kZV9pZCh1MzIgaWQpXFxuIFxcdGNhc2UgUlRMODg1MUI6XFxuIFxcdFxcdHJldHVybiAweDg4NTE7XFxuIFxcdGNhc2UgUlRMODkyMkE6XFxuK1xcdGNhc2UgUlRMODkyMkQ6XFxuIFxcdFxcdHJldHVybiAweDg5MjI7XFxuIFxcdGRlZmF1bHQ6XFxuIFxcdFxcdHJldHVybiAwO1xcbkBAIC0zMjIsNiArMzQ4LDggQEAgc3RhdGljIGNoYXIgKmNoaXBfaWRfc3RyKHUzMiBpZClcXG4gXFx0XFx0cmV0dXJuIFxcXCJSVEw4ODUxQlxcXCI7XFxuIFxcdGNhc2UgUlRMODkyMkE6XFxuIFxcdFxcdHJldHVybiBcXFwiUlRMODkyMkFcXFwiO1xcbitcXHRjYXNlIFJUTDg5MjJEOlxcbitcXHRcXHRyZXR1cm4gXFxcIlJUTDg5MjJEXFxcIjtcXG4gXFx0ZGVmYXVsdDpcXG4gXFx0XFx0cmV0dXJuIFxcXCJVTktOT1dOXFxcIjtcXG4gXFx0fVxcbkBAIC00MzQsNiArNDYyLDggQEAgZW51bSBidGNfYjJ3X3Njb3JlYm9hcmQge1xcbiBcXHRCVENfQlNDQl9XTFJGSyA9IEJJVCgxMSksXFxuIFxcdEJUQ19CU0NCX0JUX0hJTE5BID0gQklUKDEzKSxcXG4gXFx0QlRDX0JTQ0JfQlRfQ09OTkVDVCA9IEJJVCgxNiksXFxuK1xcdEJUQ19CU0NCX1BBTl9BQ1QgPSBCSVQoMjgpLFxcbitcXHRCVENfQlNDQl9IRlBfQUNUID0gQklUKDI5KSxcXG4gXFx0QlRDX0JTQ0JfUEFUQ0hfQ09ERSA9IEJJVCgzMCksXFxuIFxcdEJUQ19CU0NCX0FMTCA9IEdFTk1BU0soMzAsIDApLFxcbiB9O1xcbkBAIC05MjIsNyArOTUyLDcgQEAgc3RhdGljIHZvaWQgX3Jlc2V0X2J0Y192YXIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCB0eXBlKVxcbiBcXHRjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3ZlciAqdmVyID0gYnRjLVxcdTAwM2V2ZXI7XFxuIFxcdHN0cnVjdCBydHc4OV9idGNfY3ggKmN4ID0gXFx1MDAyNmJ0Yy1cXHUwMDNlY3g7XFxuIFxcdHN0cnVjdCBydHc4OV9idGNfd2xfaW5mbyAqd2wgPSBcXHUwMDI2YnRjLVxcdTAwM2VjeC53bDtcXG4tXFx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFxcdTAwMjZidGMtXFx1MDAzZWN4LmJ0O1xcbitcXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXFx1MDAyNmJ0Yy1cXHUwMDNlY3guYnQwO1xcbiBcXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2xpbmtfaW5mbyAqYnRfbGluZm8gPSBcXHUwMDI2YnQtXFx1MDAzZWxpbmtfaW5mbztcXG4gXFx0c3RydWN0IHJ0dzg5X2J0Y193bF9saW5rX2luZm8gKndsX2xpbmZvO1xcbiBcXHR1OCBpO1xcbkBAIC05NzMsOCArMTAwMyw4IEBAIHN0YXRpYyB2b2lkIF9yZXNldF9idGNfdmFyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggdHlwZSlcXG4gXFx0XFx0fVxcbiBcXG4gXFx0XFx0YnRjLVxcdTAwM2Vwb2xpY3lfbGVuID0gMDtcXG4tXFx0XFx0YnRjLVxcdTAwM2VidF9yZXFfbGVuID0gMDtcXG4tXFxuK1xcdFxcdGJ0Yy1cXHUwMDNlYnRfcmVxX2xlbltSVFc4OV9QSFlfMF0gPSAwO1xcbitcXHRcXHRidGMtXFx1MDAzZWJ0X3JlcV9sZW5bUlRXODlfUEhZXzFdID0gMDtcXG4gXFx0XFx0YnRjLVxcdTAwM2VkbS5jb2V4X2luZm9fbWFwID0gQlRDX0NPRVhfSU5GT19BTEw7XFxuIFxcdFxcdGJ0Yy1cXHUwMDNlZG0ud2xfdHhfbGltaXQudHhfdGltZSA9IEJUQ19NQVhfVFhfVElNRV9ERUY7XFxuIFxcdFxcdGJ0Yy1cXHUwMDNlZG0ud2xfdHhfbGltaXQudHhfcmV0cnkgPSBCVENfTUFYX1RYX1JFVFJZX0RFRjtcXG5AQCAtMTEwNCw3ICsxMTM0LDcgQEAgc3RhdGljIHZvaWQgX2Noa19idGNfZXJyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggdHlwZSwgdTMyIGNudClcXG4ge1xcbiBcXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2VidGM7XFxuIFxcdHN0cnVjdCBydHc4OV9idGNfY3ggKmN4ID0gXFx1MDAyNmJ0Yy1cXHUwMDNlY3g7XFxuLVxcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcXHUwMDI2Y3gtXFx1MDAzZWJ0O1xcbitcXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXFx1MDAyNmN4LVxcdTAwM2VidDA7XFxuIFxcdHN0cnVjdCBydHc4OV9idGNfd2xfaW5mbyAqd2wgPSBcXHUwMDI2Y3gtXFx1MDAzZXdsO1xcbiBcXHRzdHJ1Y3QgcnR3ODlfYnRjX2RtICpkbSA9IFxcdTAwMjZidGMtXFx1MDAzZWRtO1xcbiBcXG5AQCAtMTIxNiw3ICsxMjQ2LDcgQEAgc3RhdGljIHZvaWQgX2Noa19idGNfZXJyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggdHlwZSwgdTMyIGNudClcXG4gXFx0XFx0XFx0ZG0tXFx1MDAzZWVycm9yLm1hcC5zbG90X25vX3N5bmMgPSBmYWxzZTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgQlRDX0RDTlRfQlRUWF9IQU5HOlxcbi1cXHRcXHRjbnQgPSBjeC1cXHUwMDNlY250X2J0W0JUQ19CQ05UX0xPUFJJX1RYXTtcXG4rXFx0XFx0Y250ID0gYnQtXFx1MDAzZWJjbnRbQlRDX0JDTlRfTE9QUklfVFhdO1xcbiBcXG4gXFx0XFx0aWYgKGNudCA9PSAwIFxcdTAwMjZcXHUwMDI2IGJ0LVxcdTAwM2VsaW5rX2luZm8uc2xhdmVfcm9sZSlcXG4gXFx0XFx0XFx0ZG0tXFx1MDAzZWNudF9kbVtCVENfRENOVF9CVFRYX0hBTkddKys7XFxuQEAgLTEyMjksMTAgKzEyNTksMTAgQEAgc3RhdGljIHZvaWQgX2Noa19idGNfZXJyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggdHlwZSwgdTMyIGNudClcXG4gXFx0XFx0XFx0ZG0tXFx1MDAzZWVycm9yLm1hcC5idF90eF9oYW5nID0gZmFsc2U7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIEJUQ19EQ05UX0JUQ05UX0hBTkc6XFxuLVxcdFxcdGNudCA9IGN4LVxcdTAwM2VjbnRfYnRbQlRDX0JDTlRfSElQUklfUlhdICtcXG4tXFx0XFx0ICAgICAgY3gtXFx1MDAzZWNudF9idFtCVENfQkNOVF9ISVBSSV9UWF0gK1xcbi1cXHRcXHQgICAgICBjeC1cXHUwMDNlY250X2J0W0JUQ19CQ05UX0xPUFJJX1JYXSArXFxuLVxcdFxcdCAgICAgIGN4LVxcdTAwM2VjbnRfYnRbQlRDX0JDTlRfTE9QUklfVFhdO1xcbitcXHRcXHRjbnQgPSBidC1cXHUwMDNlYmNudFtCVENfQkNOVF9ISVBSSV9SWF0gK1xcbitcXHRcXHQgICAgICBidC1cXHUwMDNlYmNudFtCVENfQkNOVF9ISVBSSV9UWF0gK1xcbitcXHRcXHQgICAgICBidC1cXHUwMDNlYmNudFtCVENfQkNOVF9MT1BSSV9SWF0gK1xcbitcXHRcXHQgICAgICBidC1cXHUwMDNlYmNudFtCVENfQkNOVF9MT1BSSV9UWF07XFxuIFxcbiBcXHRcXHRpZiAoY250ID09IDApXFxuIFxcdFxcdFxcdGRtLVxcdTAwM2VjbnRfZG1bQlRDX0RDTlRfQlRDTlRfSEFOR10rKztcXG5AQCAtMTI3NCw3ICsxMzA0LDcgQEAgc3RhdGljIHZvaWQgX3VwZGF0ZV9idF9yZXBvcnQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCBycHRfdHlwZSwgdTggKnBmaW5mbylcXG4ge1xcbiBcXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2VidGM7XFxuIFxcdGNvbnN0IHN0cnVjdCBydHc4OV9idGNfdmVyICp2ZXIgPSBidGMtXFx1MDAzZXZlcjtcXG4tXFx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFxcdTAwMjZidGMtXFx1MDAzZWN4LmJ0O1xcbitcXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXFx1MDAyNmJ0Yy1cXHUwMDNlY3guYnQwO1xcbiBcXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2xpbmtfaW5mbyAqYnRfbGluZm8gPSBcXHUwMDI2YnQtXFx1MDAzZWxpbmtfaW5mbztcXG4gXFx0c3RydWN0IHJ0dzg5X2J0Y19idF9hMmRwX2Rlc2MgKmEyZHAgPSBcXHUwMDI2YnRfbGluZm8tXFx1MDAzZWEyZHBfZGVzYztcXG4gXFx0dW5pb24gIHJ0dzg5X2J0Y19mYnRjX2J0dmVyICpwdmVyID0gXFx1MDAyNmJ0Yy1cXHUwMDNlZndpbmZvLnJwdF9mYnRjX2J0dmVyLmZpbmZvO1xcbkBAIC0xNDE1LDcgKzE0NDUsNyBAQCBzdGF0aWMgdTMyIF9jaGtfYnRjX3JlcG9ydChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuIFxcdHN0cnVjdCBydHc4OV9idGNfZG0gKmRtID0gXFx1MDAyNmJ0Yy1cXHUwMDNlZG07XFxuIFxcdHN0cnVjdCBydHc4OV9idGNfcnB0X2Ntbl9pbmZvICpwY2luZm8gPSBOVUxMO1xcbiBcXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX2luZm8gKndsID0gXFx1MDAyNmJ0Yy1cXHUwMDNlY3gud2w7XFxuLVxcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcXHUwMDI2YnRjLVxcdTAwM2VjeC5idDtcXG4rXFx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFxcdTAwMjZidGMtXFx1MDAzZWN4LmJ0MDtcXG4gXFx0dW5pb24gcnR3ODlfYnRjX2ZidGNfcnB0X2N0cmxfdmVyX2luZm8gKnBycHQgPSBOVUxMO1xcbiBcXHR1bmlvbiBydHc4OV9idGNfZmJ0Y19jeXN0YV9pbmZvICpwY3lzdGEgPSBOVUxMO1xcbiBcXHRzdHJ1Y3QgcnR3ODlfYnRjX3BycHQgKmJ0Y19wcnB0ID0gTlVMTDtcXG5AQCAtMTcyMSw3ICsxNzUxLDcgQEAgc3RhdGljIHUzMiBfY2hrX2J0Y19yZXBvcnQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbiBcXHRcXHRcXHRcXHRydHdkZXYtXFx1MDAzZWNoaXAtXFx1MDAzZW9wcy1cXHUwMDNlYnRjX3VwZGF0ZV9idF9jbnQocnR3ZGV2KTtcXG4gXFx0XFx0XFx0XFx0X2Noa19idGNfZXJyKHJ0d2RldiwgQlRDX0RDTlRfQlRDTlRfSEFORywgMCk7XFxuIFxcbi1cXHRcXHRcXHRcXHRidGMtXFx1MDAzZWN4LmNudF9idFtCVENfQkNOVF9QT0xVVF0gPVxcbitcXHRcXHRcXHRcXHRidC1cXHUwMDNlYmNudFtCVENfQkNOVF9QT0xVVF0gPVxcbiBcXHRcXHRcXHRcXHRcXHRydHc4OV9tYWNfZ2V0X3BsdF9jbnQocnR3ZGV2LFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgICBSVFc4OV9NQUNfMCk7XFxuIFxcdFxcdFxcdH1cXG5AQCAtMTczNiwxNSArMTc2NiwxNSBAQCBzdGF0aWMgdTMyIF9jaGtfYnRjX3JlcG9ydChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuIFxcdFxcdFxcdFxcdG1lbWNweShcXHUwMDI2ZG0tXFx1MDAzZWdudC5iYW5kW2ldLCBcXHUwMDI2cHJwdC1cXHUwMDNldjQuZ250X3ZhbFtpXSxcXG4gXFx0XFx0XFx0XFx0ICAgICAgIHNpemVvZihkbS1cXHUwMDNlZ250LmJhbmRbaV0pKTtcXG4gXFxuLVxcdFxcdFxcdGJ0Yy1cXHUwMDNlY3guY250X2J0W0JUQ19CQ05UX0hJUFJJX1RYXSA9XFxuK1xcdFxcdFxcdGJ0LVxcdTAwM2ViY250W0JUQ19CQ05UX0hJUFJJX1RYXSA9XFxuIFxcdFxcdFxcdFxcdGxlMzJfdG9fY3B1KHBycHQtXFx1MDAzZXY0LmJ0X2NudFtCVENfQkNOVF9ISV9UWF0pO1xcbi1cXHRcXHRcXHRidGMtXFx1MDAzZWN4LmNudF9idFtCVENfQkNOVF9ISVBSSV9SWF0gPVxcbitcXHRcXHRcXHRidC1cXHUwMDNlYmNudFtCVENfQkNOVF9ISVBSSV9SWF0gPVxcbiBcXHRcXHRcXHRcXHRsZTMyX3RvX2NwdShwcnB0LVxcdTAwM2V2NC5idF9jbnRbQlRDX0JDTlRfSElfUlhdKTtcXG4tXFx0XFx0XFx0YnRjLVxcdTAwM2VjeC5jbnRfYnRbQlRDX0JDTlRfTE9QUklfVFhdID1cXG4rXFx0XFx0XFx0YnQtXFx1MDAzZWJjbnRbQlRDX0JDTlRfTE9QUklfVFhdID1cXG4gXFx0XFx0XFx0XFx0bGUzMl90b19jcHUocHJwdC1cXHUwMDNldjQuYnRfY250W0JUQ19CQ05UX0xPX1RYXSk7XFxuLVxcdFxcdFxcdGJ0Yy1cXHUwMDNlY3guY250X2J0W0JUQ19CQ05UX0xPUFJJX1JYXSA9XFxuK1xcdFxcdFxcdGJ0LVxcdTAwM2ViY250W0JUQ19CQ05UX0xPUFJJX1JYXSA9XFxuIFxcdFxcdFxcdFxcdGxlMzJfdG9fY3B1KHBycHQtXFx1MDAzZXY0LmJ0X2NudFtCVENfQkNOVF9MT19SWF0pO1xcbi1cXHRcXHRcXHRidGMtXFx1MDAzZWN4LmNudF9idFtCVENfQkNOVF9QT0xVVF0gPVxcbitcXHRcXHRcXHRidC1cXHUwMDNlYmNudFtCVENfQkNOVF9QT0xVVF0gPVxcbiBcXHRcXHRcXHRcXHRsZTMyX3RvX2NwdShwcnB0LVxcdTAwM2V2NC5idF9jbnRbQlRDX0JDTlRfUE9MTFVURURdKTtcXG4gXFxuIFxcdFxcdFxcdF9jaGtfYnRjX2VycihydHdkZXYsIEJUQ19EQ05UX0JUQ05UX0hBTkcsIDApO1xcbkBAIC0xNzY4LDE1ICsxNzk4LDE1IEBAIHN0YXRpYyB1MzIgX2Noa19idGNfcmVwb3J0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG4gXFx0XFx0XFx0XFx0bWVtY3B5KFxcdTAwMjZkbS1cXHUwMDNlZ250LmJhbmRbaV0sIFxcdTAwMjZwcnB0LVxcdTAwM2V2NS5nbnRfdmFsW2ldWzBdLFxcbiBcXHRcXHRcXHRcXHQgICAgICAgc2l6ZW9mKGRtLVxcdTAwM2VnbnQuYmFuZFtpXSkpO1xcbiBcXG4tXFx0XFx0XFx0YnRjLVxcdTAwM2VjeC5jbnRfYnRbQlRDX0JDTlRfSElQUklfVFhdID1cXG4rXFx0XFx0XFx0YnQtXFx1MDAzZWJjbnRbQlRDX0JDTlRfSElQUklfVFhdID1cXG4gXFx0XFx0XFx0XFx0bGUxNl90b19jcHUocHJwdC1cXHUwMDNldjUuYnRfY250W0JUQ19CQ05UX0hJX1RYXSk7XFxuLVxcdFxcdFxcdGJ0Yy1cXHUwMDNlY3guY250X2J0W0JUQ19CQ05UX0hJUFJJX1JYXSA9XFxuK1xcdFxcdFxcdGJ0LVxcdTAwM2ViY250W0JUQ19CQ05UX0hJUFJJX1JYXSA9XFxuIFxcdFxcdFxcdFxcdGxlMTZfdG9fY3B1KHBycHQtXFx1MDAzZXY1LmJ0X2NudFtCVENfQkNOVF9ISV9SWF0pO1xcbi1cXHRcXHRcXHRidGMtXFx1MDAzZWN4LmNudF9idFtCVENfQkNOVF9MT1BSSV9UWF0gPVxcbitcXHRcXHRcXHRidC1cXHUwMDNlYmNudFtCVENfQkNOVF9MT1BSSV9UWF0gPVxcbiBcXHRcXHRcXHRcXHRsZTE2X3RvX2NwdShwcnB0LVxcdTAwM2V2NS5idF9jbnRbQlRDX0JDTlRfTE9fVFhdKTtcXG4tXFx0XFx0XFx0YnRjLVxcdTAwM2VjeC5jbnRfYnRbQlRDX0JDTlRfTE9QUklfUlhdID1cXG4rXFx0XFx0XFx0YnQtXFx1MDAzZWJjbnRbQlRDX0JDTlRfTE9QUklfUlhdID1cXG4gXFx0XFx0XFx0XFx0bGUxNl90b19jcHUocHJwdC1cXHUwMDNldjUuYnRfY250W0JUQ19CQ05UX0xPX1JYXSk7XFxuLVxcdFxcdFxcdGJ0Yy1cXHUwMDNlY3guY250X2J0W0JUQ19CQ05UX1BPTFVUXSA9XFxuK1xcdFxcdFxcdGJ0LVxcdTAwM2ViY250W0JUQ19CQ05UX1BPTFVUXSA9XFxuIFxcdFxcdFxcdFxcdGxlMTZfdG9fY3B1KHBycHQtXFx1MDAzZXY1LmJ0X2NudFtCVENfQkNOVF9QT0xMVVRFRF0pO1xcbiBcXG4gXFx0XFx0XFx0X2Noa19idGNfZXJyKHJ0d2RldiwgQlRDX0RDTlRfQlRDTlRfSEFORywgMCk7XFxuQEAgLTE3OTUsMTUgKzE4MjUsMTUgQEAgc3RhdGljIHUzMiBfY2hrX2J0Y19yZXBvcnQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbiBcXHRcXHRcXHRcXHRtZW1jcHkoXFx1MDAyNmRtLVxcdTAwM2VnbnQuYmFuZFtpXSwgXFx1MDAyNnBycHQtXFx1MDAzZXYxMDUuZ250X3ZhbFtpXVswXSxcXG4gXFx0XFx0XFx0XFx0ICAgICAgIHNpemVvZihkbS1cXHUwMDNlZ250LmJhbmRbaV0pKTtcXG4gXFxuLVxcdFxcdFxcdGJ0Yy1cXHUwMDNlY3guY250X2J0W0JUQ19CQ05UX0hJUFJJX1RYXSA9XFxuK1xcdFxcdFxcdGJ0LVxcdTAwM2ViY250W0JUQ19CQ05UX0hJUFJJX1RYXSA9XFxuIFxcdFxcdFxcdFxcdGxlMTZfdG9fY3B1KHBycHQtXFx1MDAzZXYxMDUuYnRfY250W0JUQ19CQ05UX0hJX1RYX1YxMDVdKTtcXG4tXFx0XFx0XFx0YnRjLVxcdTAwM2VjeC5jbnRfYnRbQlRDX0JDTlRfSElQUklfUlhdID1cXG4rXFx0XFx0XFx0YnQtXFx1MDAzZWJjbnRbQlRDX0JDTlRfSElQUklfUlhdID1cXG4gXFx0XFx0XFx0XFx0bGUxNl90b19jcHUocHJwdC1cXHUwMDNldjEwNS5idF9jbnRbQlRDX0JDTlRfSElfUlhfVjEwNV0pO1xcbi1cXHRcXHRcXHRidGMtXFx1MDAzZWN4LmNudF9idFtCVENfQkNOVF9MT1BSSV9UWF0gPVxcbitcXHRcXHRcXHRidC1cXHUwMDNlYmNudFtCVENfQkNOVF9MT1BSSV9UWF0gPVxcbiBcXHRcXHRcXHRcXHRsZTE2X3RvX2NwdShwcnB0LVxcdTAwM2V2MTA1LmJ0X2NudFtCVENfQkNOVF9MT19UWF9WMTA1XSk7XFxuLVxcdFxcdFxcdGJ0Yy1cXHUwMDNlY3guY250X2J0W0JUQ19CQ05UX0xPUFJJX1JYXSA9XFxuK1xcdFxcdFxcdGJ0LVxcdTAwM2ViY250W0JUQ19CQ05UX0xPUFJJX1JYXSA9XFxuIFxcdFxcdFxcdFxcdGxlMTZfdG9fY3B1KHBycHQtXFx1MDAzZXYxMDUuYnRfY250W0JUQ19CQ05UX0xPX1JYX1YxMDVdKTtcXG4tXFx0XFx0XFx0YnRjLVxcdTAwM2VjeC5jbnRfYnRbQlRDX0JDTlRfUE9MVVRdID1cXG4rXFx0XFx0XFx0YnQtXFx1MDAzZWJjbnRbQlRDX0JDTlRfUE9MVVRdID1cXG4gXFx0XFx0XFx0XFx0bGUxNl90b19jcHUocHJwdC1cXHUwMDNldjEwNS5idF9jbnRbQlRDX0JDTlRfUE9MTFVURURfVjEwNV0pO1xcbiBcXG4gXFx0XFx0XFx0X2Noa19idGNfZXJyKHJ0d2RldiwgQlRDX0RDTlRfQlRDTlRfSEFORywgMCk7XFxuQEAgLTE4MjEsMjEgKzE4NTEsMjEgQEAgc3RhdGljIHUzMiBfY2hrX2J0Y19yZXBvcnQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbiBcXHRcXHRcXHRcXHRtZW1jcHkoXFx1MDAyNmRtLVxcdTAwM2VnbnQuYmFuZFtpXSwgXFx1MDAyNnBycHQtXFx1MDAzZXY3LmdudF92YWxbaV1bMF0sXFxuIFxcdFxcdFxcdFxcdCAgICAgICBzaXplb2YoZG0tXFx1MDAzZWdudC5iYW5kW2ldKSk7XFxuIFxcbi1cXHRcXHRcXHRidGMtXFx1MDAzZWN4LmNudF9idFtCVENfQkNOVF9ISVBSSV9UWF0gPVxcbitcXHRcXHRcXHRidC1cXHUwMDNlYmNudFtCVENfQkNOVF9ISVBSSV9UWF0gPVxcbiBcXHRcXHRcXHRcXHRsZTE2X3RvX2NwdShwcnB0LVxcdTAwM2V2Ny5idF9jbnRbQlRDX0JDTlRfSElfVFhfVjEwNV0pO1xcbi1cXHRcXHRcXHRidGMtXFx1MDAzZWN4LmNudF9idFtCVENfQkNOVF9ISVBSSV9SWF0gPVxcbitcXHRcXHRcXHRidC1cXHUwMDNlYmNudFtCVENfQkNOVF9ISVBSSV9SWF0gPVxcbiBcXHRcXHRcXHRcXHRsZTE2X3RvX2NwdShwcnB0LVxcdTAwM2V2Ny5idF9jbnRbQlRDX0JDTlRfSElfUlhfVjEwNV0pO1xcbi1cXHRcXHRcXHRidGMtXFx1MDAzZWN4LmNudF9idFtCVENfQkNOVF9MT1BSSV9UWF0gPVxcbitcXHRcXHRcXHRidC1cXHUwMDNlYmNudFtCVENfQkNOVF9MT1BSSV9UWF0gPVxcbiBcXHRcXHRcXHRcXHRsZTE2X3RvX2NwdShwcnB0LVxcdTAwM2V2Ny5idF9jbnRbQlRDX0JDTlRfTE9fVFhfVjEwNV0pO1xcbi1cXHRcXHRcXHRidGMtXFx1MDAzZWN4LmNudF9idFtCVENfQkNOVF9MT1BSSV9SWF0gPVxcbitcXHRcXHRcXHRidC1cXHUwMDNlYmNudFtCVENfQkNOVF9MT1BSSV9SWF0gPVxcbiBcXHRcXHRcXHRcXHRsZTE2X3RvX2NwdShwcnB0LVxcdTAwM2V2Ny5idF9jbnRbQlRDX0JDTlRfTE9fUlhfVjEwNV0pO1xcbiBcXG4gXFx0XFx0XFx0dmFsMSA9IGxlMTZfdG9fY3B1KHBycHQtXFx1MDAzZXY3LmJ0X2NudFtCVENfQkNOVF9QT0xMVVRFRF9WMTA1XSk7XFxuLVxcdFxcdFxcdGlmICh2YWwxIFxcdTAwM2UgYnRjLVxcdTAwM2VjeC5jbnRfYnRbQlRDX0JDTlRfUE9MVVRfTk9XXSlcXG4tXFx0XFx0XFx0XFx0dmFsMSAtPSBidGMtXFx1MDAzZWN4LmNudF9idFtCVENfQkNOVF9QT0xVVF9OT1ddOyAvKiBkaWZmICovXFxuK1xcdFxcdFxcdGlmICh2YWwxIFxcdTAwM2UgYnQtXFx1MDAzZWJjbnRbQlRDX0JDTlRfUE9MVVRfTk9XXSlcXG4rXFx0XFx0XFx0XFx0dmFsMSAtPSBidC1cXHUwMDNlYmNudFtCVENfQkNOVF9QT0xVVF9OT1ddOyAvKiBkaWZmICovXFxuIFxcbi1cXHRcXHRcXHRidGMtXFx1MDAzZWN4LmNudF9idFtCVENfQkNOVF9QT0xVVF9ESUZGXSA9IHZhbDE7XFxuLVxcdFxcdFxcdGJ0Yy1cXHUwMDNlY3guY250X2J0W0JUQ19CQ05UX1BPTFVUX05PV10gPVxcbitcXHRcXHRcXHRidC1cXHUwMDNlYmNudFtCVENfQkNOVF9QT0xVVF9ESUZGXSA9IHZhbDE7XFxuK1xcdFxcdFxcdGJ0LVxcdTAwM2ViY250W0JUQ19CQ05UX1BPTFVUX05PV10gPVxcbiBcXHRcXHRcXHRcXHRsZTE2X3RvX2NwdShwcnB0LVxcdTAwM2V2Ny5idF9jbnRbQlRDX0JDTlRfUE9MTFVURURfVjEwNV0pO1xcbiBcXG4gXFx0XFx0XFx0dmFsMSA9IHBmd2luZm8tXFx1MDAzZWV2ZW50W0JURl9FVk5UX1JQVF07XFxuQEAgLTE4NTMsMjEgKzE4ODMsMjEgQEAgc3RhdGljIHUzMiBfY2hrX2J0Y19yZXBvcnQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbiBcXHRcXHRcXHRcXHRtZW1jcHkoXFx1MDAyNmRtLVxcdTAwM2VnbnQuYmFuZFtpXSwgXFx1MDAyNnBycHQtXFx1MDAzZXY4LmdudF92YWxbaV1bMF0sXFxuIFxcdFxcdFxcdFxcdCAgICAgICBzaXplb2YoZG0tXFx1MDAzZWdudC5iYW5kW2ldKSk7XFxuIFxcbi1cXHRcXHRcXHRidGMtXFx1MDAzZWN4LmNudF9idFtCVENfQkNOVF9ISVBSSV9UWF0gPVxcbitcXHRcXHRcXHRidC1cXHUwMDNlYmNudFtCVENfQkNOVF9ISVBSSV9UWF0gPVxcbiBcXHRcXHRcXHRcXHRsZTE2X3RvX2NwdShwcnB0LVxcdTAwM2V2OC5idF9jbnRbQlRDX0JDTlRfSElfVFhfVjEwNV0pO1xcbi1cXHRcXHRcXHRidGMtXFx1MDAzZWN4LmNudF9idFtCVENfQkNOVF9ISVBSSV9SWF0gPVxcbitcXHRcXHRcXHRidC1cXHUwMDNlYmNudFtCVENfQkNOVF9ISVBSSV9SWF0gPVxcbiBcXHRcXHRcXHRcXHRsZTE2X3RvX2NwdShwcnB0LVxcdTAwM2V2OC5idF9jbnRbQlRDX0JDTlRfSElfUlhfVjEwNV0pO1xcbi1cXHRcXHRcXHRidGMtXFx1MDAzZWN4LmNudF9idFtCVENfQkNOVF9MT1BSSV9UWF0gPVxcbitcXHRcXHRcXHRidC1cXHUwMDNlYmNudFtCVENfQkNOVF9MT1BSSV9UWF0gPVxcbiBcXHRcXHRcXHRcXHRsZTE2X3RvX2NwdShwcnB0LVxcdTAwM2V2OC5idF9jbnRbQlRDX0JDTlRfTE9fVFhfVjEwNV0pO1xcbi1cXHRcXHRcXHRidGMtXFx1MDAzZWN4LmNudF9idFtCVENfQkNOVF9MT1BSSV9SWF0gPVxcbitcXHRcXHRcXHRidC1cXHUwMDNlYmNudFtCVENfQkNOVF9MT1BSSV9SWF0gPVxcbiBcXHRcXHRcXHRcXHRsZTE2X3RvX2NwdShwcnB0LVxcdTAwM2V2OC5idF9jbnRbQlRDX0JDTlRfTE9fUlhfVjEwNV0pO1xcbiBcXG4gXFx0XFx0XFx0dmFsMSA9IGxlMTZfdG9fY3B1KHBycHQtXFx1MDAzZXY4LmJ0X2NudFtCVENfQkNOVF9QT0xMVVRFRF9WMTA1XSk7XFxuLVxcdFxcdFxcdGlmICh2YWwxIFxcdTAwM2UgYnRjLVxcdTAwM2VjeC5jbnRfYnRbQlRDX0JDTlRfUE9MVVRfTk9XXSlcXG4tXFx0XFx0XFx0XFx0dmFsMSAtPSBidGMtXFx1MDAzZWN4LmNudF9idFtCVENfQkNOVF9QT0xVVF9OT1ddOyAvKiBkaWZmICovXFxuK1xcdFxcdFxcdGlmICh2YWwxIFxcdTAwM2UgYnQtXFx1MDAzZWJjbnRbQlRDX0JDTlRfUE9MVVRfTk9XXSlcXG4rXFx0XFx0XFx0XFx0dmFsMSAtPSBidC1cXHUwMDNlYmNudFtCVENfQkNOVF9QT0xVVF9OT1ddOyAvKiBkaWZmICovXFxuIFxcbi1cXHRcXHRcXHRidGMtXFx1MDAzZWN4LmNudF9idFtCVENfQkNOVF9QT0xVVF9ESUZGXSA9IHZhbDE7XFxuLVxcdFxcdFxcdGJ0Yy1cXHUwMDNlY3guY250X2J0W0JUQ19CQ05UX1BPTFVUX05PV10gPVxcbitcXHRcXHRcXHRidC1cXHUwMDNlYmNudFtCVENfQkNOVF9QT0xVVF9ESUZGXSA9IHZhbDE7XFxuK1xcdFxcdFxcdGJ0LVxcdTAwM2ViY250W0JUQ19CQ05UX1BPTFVUX05PV10gPVxcbiBcXHRcXHRcXHRcXHRsZTE2X3RvX2NwdShwcnB0LVxcdTAwM2V2OC5idF9jbnRbQlRDX0JDTlRfUE9MTFVURURfVjEwNV0pO1xcbiBcXG4gXFx0XFx0XFx0dmFsMSA9IHBmd2luZm8tXFx1MDAzZWV2ZW50W0JURl9FVk5UX1JQVF07XFxuQEAgLTE5OTIsMTAgKzIwMjIsMTAgQEAgc3RhdGljIHUzMiBfY2hrX2J0Y19yZXBvcnQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbiBcXHRcXHRcXHQvKiBDaGVjayBkaWZmIHRpbWUgYmV0d2VlbiByZWFsIEJUIHNsb3QgYW5kIEVCVC9FNUcgc2xvdCAqL1xcbiBcXHRcXHRcXHRpZiAoZG0tXFx1MDAzZXRkbWFfbm93LnR5cGUgPT0gQ1hURE1BX09GRiBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHRcXHQgICAgZG0tXFx1MDAzZXRkbWFfbm93LmV4dF9jdHJsID09IENYRUNUTF9FWFQgXFx1MDAyNlxcdTAwMjZcXG4tXFx0XFx0XFx0ICAgIGJ0Yy1cXHUwMDNlYnRfcmVxX2xlbiAhPSAwKSB7XFxuK1xcdFxcdFxcdCAgICBidGMtXFx1MDAzZWJ0X3JlcV9sZW5bUlRXODlfUEhZXzBdICE9IDApIHtcXG4gXFx0XFx0XFx0XFx0YnRfc2xvdF9yZWFsID0gbGUxNl90b19jcHUocGN5c3RhLVxcdTAwM2V2My5jeWNsZV90aW1lLnRhdmdbQ1hUX0JUXSk7XFxuLVxcdFxcdFxcdFxcdGlmIChidGMtXFx1MDAzZWJ0X3JlcV9sZW4gXFx1MDAzZSBidF9zbG90X3JlYWwpIHtcXG4tXFx0XFx0XFx0XFx0XFx0ZGlmZl90ID0gYnRjLVxcdTAwM2VidF9yZXFfbGVuIC0gYnRfc2xvdF9yZWFsO1xcbitcXHRcXHRcXHRcXHRpZiAoYnRjLVxcdTAwM2VidF9yZXFfbGVuW1JUVzg5X1BIWV8wXSBcXHUwMDNlIGJ0X3Nsb3RfcmVhbCkge1xcbitcXHRcXHRcXHRcXHRcXHRkaWZmX3QgPSBidGMtXFx1MDAzZWJ0X3JlcV9sZW5bUlRXODlfUEhZXzBdIC0gYnRfc2xvdF9yZWFsO1xcbiBcXHRcXHRcXHRcXHRcXHRfY2hrX2J0Y19lcnIocnR3ZGV2LCBCVENfRENOVF9CVF9TTE9UX0RSSUZULCBkaWZmX3QpO1xcbiBcXHRcXHRcXHRcXHR9XFxuIFxcdFxcdFxcdH1cXG5AQCAtMjAzNiwxMSArMjA2NiwxMSBAQCBzdGF0aWMgdTMyIF9jaGtfYnRjX3JlcG9ydChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuIFxcdFxcdFxcdC8qIENoZWNrIGRpZmYgdGltZSBiZXR3ZWVuIHJlYWwgQlQgc2xvdCBhbmQgRUJUL0U1RyBzbG90ICovXFxuIFxcdFxcdFxcdGlmIChkbS1cXHUwMDNldGRtYV9ub3cudHlwZSA9PSBDWFRETUFfT0ZGIFxcdTAwMjZcXHUwMDI2XFxuIFxcdFxcdFxcdCAgICBkbS1cXHUwMDNldGRtYV9ub3cuZXh0X2N0cmwgPT0gQ1hFQ1RMX0VYVCBcXHUwMDI2XFx1MDAyNlxcbi1cXHRcXHRcXHQgICAgYnRjLVxcdTAwM2VidF9yZXFfbGVuICE9IDApIHtcXG4rXFx0XFx0XFx0ICAgIGJ0Yy1cXHUwMDNlYnRfcmVxX2xlbltSVFc4OV9QSFlfMF0gIT0gMCkge1xcbiBcXHRcXHRcXHRcXHRidF9zbG90X3JlYWwgPSBsZTE2X3RvX2NwdShwY3lzdGEtXFx1MDAzZXY0LmN5Y2xlX3RpbWUudGF2Z1tDWFRfQlRdKTtcXG4gXFxuLVxcdFxcdFxcdFxcdGlmIChidGMtXFx1MDAzZWJ0X3JlcV9sZW4gXFx1MDAzZSBidF9zbG90X3JlYWwpIHtcXG4tXFx0XFx0XFx0XFx0XFx0ZGlmZl90ID0gYnRjLVxcdTAwM2VidF9yZXFfbGVuIC0gYnRfc2xvdF9yZWFsO1xcbitcXHRcXHRcXHRcXHRpZiAoYnRjLVxcdTAwM2VidF9yZXFfbGVuW1JUVzg5X1BIWV8wXSBcXHUwMDNlIGJ0X3Nsb3RfcmVhbCkge1xcbitcXHRcXHRcXHRcXHRcXHRkaWZmX3QgPSBidGMtXFx1MDAzZWJ0X3JlcV9sZW5bUlRXODlfUEhZXzBdIC0gYnRfc2xvdF9yZWFsO1xcbiBcXHRcXHRcXHRcXHRcXHRfY2hrX2J0Y19lcnIocnR3ZGV2LCBCVENfRENOVF9CVF9TTE9UX0RSSUZULCBkaWZmX3QpO1xcbiBcXHRcXHRcXHRcXHR9XFxuIFxcdFxcdFxcdH1cXG5AQCAtMjA4MSw3ICsyMTExLDcgQEAgc3RhdGljIHUzMiBfY2hrX2J0Y19yZXBvcnQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbiBcXHRcXHRcXHRfY2hrX2J0Y19lcnIocnR3ZGV2LCBCVENfRENOVF9XTF9TTE9UX0RSSUZULCBkaWZmX3QpO1xcbiBcXG4gXFx0XFx0XFx0LyogQ2hlY2sgZGlmZiB0aW1lIGJldHdlZW4gcmVhbCBCVCBzbG90IGFuZCBFQlQvRTVHIHNsb3QgKi9cXG4tXFx0XFx0XFx0YnRfc2xvdF9zZXQgPSBidGMtXFx1MDAzZWJ0X3JlcV9sZW47XFxuK1xcdFxcdFxcdGJ0X3Nsb3Rfc2V0ID0gYnRjLVxcdTAwM2VidF9yZXFfbGVuW1JUVzg5X1BIWV8wXTtcXG4gXFx0XFx0XFx0YnRfc2xvdF9yZWFsID0gbGUxNl90b19jcHUocGN5c3RhLVxcdTAwM2V2NS5jeWNsZV90aW1lLnRhdmdbQ1hUX0JUXSk7XFxuIFxcdFxcdFxcdGRpZmZfdCA9IDA7XFxuIFxcdFxcdFxcdGlmIChkbS1cXHUwMDNldGRtYV9ub3cudHlwZSA9PSBDWFRETUFfT0ZGIFxcdTAwMjZcXHUwMDI2XFxuQEAgLTI0MDUsNiArMjQzNSw3IEBAIHN0YXRpYyB1MzIgcnR3ODlfYnRjX2Z3X3JwdF92ZXIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgcnB0X21hcClcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdGNhc2UgMzpcXG4gXFx0XFx0Y2FzZSA0OlxcbitcXHRcXHRjYXNlIDU6XFxuIFxcdFxcdFxcdGJpdF9tYXAgPSBCSVQoNSk7XFxuIFxcdFxcdFxcdGJyZWFrO1xcbiBcXHRcXHRkZWZhdWx0OlxcbkBAIC0yNDIwLDYgKzI0NTEsNyBAQCBzdGF0aWMgdTMyIHJ0dzg5X2J0Y19md19ycHRfdmVyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIHJwdF9tYXApXFxuIFxcdFxcdFxcdGJyZWFrO1xcbiBcXHRcXHRjYXNlIDM6XFxuIFxcdFxcdGNhc2UgNDpcXG4rXFx0XFx0Y2FzZSA1OlxcbiBcXHRcXHRcXHRiaXRfbWFwID0gQklUKDYpO1xcbiBcXHRcXHRcXHRicmVhaztcXG4gXFx0XFx0ZGVmYXVsdDpcXG5AQCAtMjQzMyw2ICsyNDY1LDcgQEAgc3RhdGljIHUzMiBydHc4OV9idGNfZndfcnB0X3ZlcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiBycHRfbWFwKVxcbiBcXHRcXHRcXHRicmVhaztcXG4gXFx0XFx0Y2FzZSAzOlxcbiBcXHRcXHRjYXNlIDQ6XFxuK1xcdFxcdGNhc2UgNTpcXG4gXFx0XFx0XFx0Yml0X21hcCA9IEJJVCg3KTtcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdGRlZmF1bHQ6XFxuQEAgLTI0NDcsNiArMjQ4MCw3IEBAIHN0YXRpYyB1MzIgcnR3ODlfYnRjX2Z3X3JwdF92ZXIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgcnB0X21hcClcXG4gXFx0XFx0Y2FzZSAzOlxcbiBcXHRcXHRcXHRicmVhaztcXG4gXFx0XFx0Y2FzZSA0OlxcbitcXHRcXHRjYXNlIDU6XFxuIFxcdFxcdFxcdGJpdF9tYXAgPSBCSVQoOCk7XFxuIFxcdFxcdFxcdGJyZWFrO1xcbiBcXHRcXHRkZWZhdWx0OlxcbkBAIC0yNDYzLDYgKzI0OTcsNyBAQCBzdGF0aWMgdTMyIHJ0dzg5X2J0Y19md19ycHRfdmVyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIHJwdF9tYXApXFxuIFxcdFxcdFxcdGJpdF9tYXAgPSBCSVQoOCk7XFxuIFxcdFxcdFxcdGJyZWFrO1xcbiBcXHRcXHRjYXNlIDQ6XFxuK1xcdFxcdGNhc2UgNTpcXG4gXFx0XFx0XFx0Yml0X21hcCA9IEJJVCg5KTtcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdGRlZmF1bHQ6XFxuQEAgLTI0NzAsNyArMjUwNSwxMCBAQCBzdGF0aWMgdTMyIHJ0dzg5X2J0Y19md19ycHRfdmVyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIHJwdF9tYXApXFxuIFxcdFxcdH1cXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgUlBUX0VOX1RFU1Q6XFxuLVxcdFxcdGJpdF9tYXAgPSBCSVQoMzEpO1xcbitcXHRcXHRpZiAodmVyLVxcdTAwM2VmcnB0bWFwID09IDUpXFxuK1xcdFxcdFxcdGJpdF9tYXAgPSBCSVQoMTApO1xcbitcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdGJpdF9tYXAgPSBCSVQoMzEpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBSUFRfRU5fV0xfQUxMOlxcbiBcXHRcXHRzd2l0Y2ggKHZlci1cXHUwMDNlZnJwdG1hcCkge1xcbkBAIC0yNDgzLDYgKzI1MjEsNyBAQCBzdGF0aWMgdTMyIHJ0dzg5X2J0Y19md19ycHRfdmVyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIHJwdF9tYXApXFxuIFxcdFxcdFxcdGJpdF9tYXAgPSBHRU5NQVNLKDIsIDApIHwgQklUKDgpO1xcbiBcXHRcXHRcXHRicmVhaztcXG4gXFx0XFx0Y2FzZSA0OlxcbitcXHRcXHRjYXNlIDU6XFxuIFxcdFxcdFxcdGJpdF9tYXAgPSBHRU5NQVNLKDIsIDApIHwgQklUKDkpO1xcbiBcXHRcXHRcXHRicmVhaztcXG4gXFx0XFx0ZGVmYXVsdDpcXG5AQCAtMjUwMiw2ICsyNTQxLDcgQEAgc3RhdGljIHUzMiBydHc4OV9idGNfZndfcnB0X3ZlcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiBycHRfbWFwKVxcbiBcXHRcXHRcXHRiaXRfbWFwID0gR0VOTUFTSyg3LCAzKTtcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdGNhc2UgNDpcXG4rXFx0XFx0Y2FzZSA1OlxcbiBcXHRcXHRcXHRiaXRfbWFwID0gR0VOTUFTSyg4LCAzKTtcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdGRlZmF1bHQ6XFxuQEAgLTI1MjEsNiArMjU2MSw3IEBAIHN0YXRpYyB1MzIgcnR3ODlfYnRjX2Z3X3JwdF92ZXIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgcnB0X21hcClcXG4gXFx0XFx0XFx0Yml0X21hcCA9IEdFTk1BU0soOCwgMCk7XFxuIFxcdFxcdFxcdGJyZWFrO1xcbiBcXHRcXHRjYXNlIDQ6XFxuK1xcdFxcdGNhc2UgNTpcXG4gXFx0XFx0XFx0Yml0X21hcCA9IEdFTk1BU0soOSwgMCk7XFxuIFxcdFxcdFxcdGJyZWFrO1xcbiBcXHRcXHRkZWZhdWx0OlxcbkBAIC0yNTQwLDYgKzI1ODEsNyBAQCBzdGF0aWMgdTMyIHJ0dzg5X2J0Y19md19ycHRfdmVyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIHJwdF9tYXApXFxuIFxcdFxcdFxcdGJpdF9tYXAgPSBHRU5NQVNLKDgsIDIpO1xcbiBcXHRcXHRcXHRicmVhaztcXG4gXFx0XFx0Y2FzZSA0OlxcbitcXHRcXHRjYXNlIDU6XFxuIFxcdFxcdFxcdGJpdF9tYXAgPSBHRU5NQVNLKDksIDIpO1xcbiBcXHRcXHRcXHRicmVhaztcXG4gXFx0XFx0ZGVmYXVsdDpcXG5AQCAtMjc0Nyw3ICsyNzg5LDkgQEAgc3RhdGljIHZvaWQgX2Z3X3NldF9wb2xpY3koc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MTYgcG9saWN5X3R5cGUsXFxuIFxcdCAgICBkbS1cXHUwMDNldGRtYS5yeGZsY3RybCA9PSBDWEZMQ19RT1NOVUxMKVxcbiBcXHRcXHRidGMtXFx1MDAzZWxwcyA9IDE7XFxuIFxcdGVsc2VcXG4tXFx0XFx0YnRjLVxcdTAwM2VscHMgPSAwO1xcbitcXHRcXHRidGMtXFx1MDAzZWxwcyA9IGRtLVxcdTAwM2VscHNfY3RybF9zY2JkO1xcbitcXG4rXFx0ZG0tXFx1MDAzZWxwc19jdHJsX3NjYmRfbGFzdCA9IGRtLVxcdTAwM2VscHNfY3RybF9zY2JkO1xcbiBcXG4gXFx0aWYgKGJ0Yy1cXHUwMDNlbHBzID09IDEpXFxuIFxcdFxcdHJ0dzg5X3NldF9jb2V4X2N0cmxfbHBzKHJ0d2RldiwgYnRjLVxcdTAwM2VscHMpO1xcbkBAIC0yNzY5LDc3ICsyODEzLDg5IEBAIHN0YXRpYyB2b2lkIF9md19zZXRfcG9saWN5KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTE2IHBvbGljeV90eXBlLFxcbiBcXHRcXHRydHc4OV9zZXRfY29leF9jdHJsX2xwcyhydHdkZXYsIGJ0Yy1cXHUwMDNlbHBzKTtcXG4gfVxcbiBcXG4tc3RhdGljIHZvaWQgX2Z3X3NldF9kcnZfaW5mbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHR5cGUpXFxuK3N0YXRpYyB2b2lkIF9md19zZXRfZHJ2X2luZm8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCBpbmRleClcXG4ge1xcbiBcXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2VidGM7XFxuIFxcdGNvbnN0IHN0cnVjdCBydHc4OV9idGNfdmVyICp2ZXIgPSBidGMtXFx1MDAzZXZlcjtcXG4tXFx0c3RydWN0IHJ0dzg5X2J0Y19kbSAqZG0gPSBcXHUwMDI2YnRjLVxcdTAwM2VkbTtcXG4tXFx0c3RydWN0IHJ0dzg5X2J0Y193bF9pbmZvICp3bCA9IFxcdTAwMjZidGMtXFx1MDAzZWN4LndsO1xcbi1cXHRzdHJ1Y3QgcnR3ODlfYnRjX3JmX3RyeF9wYXJhIHJmX3BhcmEgPSBkbS1cXHUwMDNlcmZfdHJ4X3BhcmE7XFxuIFxcbi1cXHRzd2l0Y2ggKHR5cGUpIHtcXG4rXFx0c3dpdGNoIChpbmRleCkge1xcbiBcXHRjYXNlIENYRFJWSU5GT19JTklUOlxcbiBcXHRcXHRpZiAodmVyLVxcdTAwM2VmY3hpbml0ID09IDcpXFxuLVxcdFxcdFxcdHJ0dzg5X2Z3X2gyY19jeGRydl9pbml0X3Y3KHJ0d2RldiwgdHlwZSk7XFxuK1xcdFxcdFxcdHJ0dzg5X2Z3X2gyY19jeGRydl9pbml0X3Y3KHJ0d2RldiwgaW5kZXgpO1xcbiBcXHRcXHRlbHNlXFxuLVxcdFxcdFxcdHJ0dzg5X2Z3X2gyY19jeGRydl9pbml0KHJ0d2RldiwgdHlwZSk7XFxuK1xcdFxcdFxcdHJ0dzg5X2Z3X2gyY19jeGRydl9pbml0KHJ0d2RldiwgaW5kZXgpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBDWERSVklORk9fUk9MRTpcXG4gXFx0XFx0aWYgKHZlci1cXHUwMDNlZndscm9sZSA9PSAwKVxcbi1cXHRcXHRcXHRydHc4OV9md19oMmNfY3hkcnZfcm9sZShydHdkZXYsIHR5cGUpO1xcbitcXHRcXHRcXHRydHc4OV9md19oMmNfY3hkcnZfcm9sZShydHdkZXYsIGluZGV4KTtcXG4gXFx0XFx0ZWxzZSBpZiAodmVyLVxcdTAwM2Vmd2xyb2xlID09IDEpXFxuLVxcdFxcdFxcdHJ0dzg5X2Z3X2gyY19jeGRydl9yb2xlX3YxKHJ0d2RldiwgdHlwZSk7XFxuK1xcdFxcdFxcdHJ0dzg5X2Z3X2gyY19jeGRydl9yb2xlX3YxKHJ0d2RldiwgaW5kZXgpO1xcbiBcXHRcXHRlbHNlIGlmICh2ZXItXFx1MDAzZWZ3bHJvbGUgPT0gMilcXG4tXFx0XFx0XFx0cnR3ODlfZndfaDJjX2N4ZHJ2X3JvbGVfdjIocnR3ZGV2LCB0eXBlKTtcXG4rXFx0XFx0XFx0cnR3ODlfZndfaDJjX2N4ZHJ2X3JvbGVfdjIocnR3ZGV2LCBpbmRleCk7XFxuIFxcdFxcdGVsc2UgaWYgKHZlci1cXHUwMDNlZndscm9sZSA9PSA3KVxcbi1cXHRcXHRcXHRydHc4OV9md19oMmNfY3hkcnZfcm9sZV92NyhydHdkZXYsIHR5cGUpO1xcbitcXHRcXHRcXHRydHc4OV9md19oMmNfY3hkcnZfcm9sZV92NyhydHdkZXYsIGluZGV4KTtcXG4gXFx0XFx0ZWxzZSBpZiAodmVyLVxcdTAwM2Vmd2xyb2xlID09IDgpXFxuLVxcdFxcdFxcdHJ0dzg5X2Z3X2gyY19jeGRydl9yb2xlX3Y4KHJ0d2RldiwgdHlwZSk7XFxuK1xcdFxcdFxcdHJ0dzg5X2Z3X2gyY19jeGRydl9yb2xlX3Y4KHJ0d2RldiwgaW5kZXgpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBDWERSVklORk9fQ1RSTDpcXG4tXFx0XFx0aWYgKHZlci1cXHUwMDNlZHJ2aW5mb190eXBlID09IDEpXFxuLVxcdFxcdFxcdHR5cGUgPSAyO1xcbitcXHRcXHRpZiAodmVyLVxcdTAwM2VkcnZpbmZvX3ZlciAhPSAwKVxcbitcXHRcXHRcXHRpbmRleCA9IDI7XFxuIFxcbiBcXHRcXHRpZiAodmVyLVxcdTAwM2VmY3hjdHJsID09IDcpXFxuLVxcdFxcdFxcdHJ0dzg5X2Z3X2gyY19jeGRydl9jdHJsX3Y3KHJ0d2RldiwgdHlwZSk7XFxuK1xcdFxcdFxcdHJ0dzg5X2Z3X2gyY19jeGRydl9jdHJsX3Y3KHJ0d2RldiwgaW5kZXgpO1xcbiBcXHRcXHRlbHNlXFxuLVxcdFxcdFxcdHJ0dzg5X2Z3X2gyY19jeGRydl9jdHJsKHJ0d2RldiwgdHlwZSk7XFxuK1xcdFxcdFxcdHJ0dzg5X2Z3X2gyY19jeGRydl9jdHJsKHJ0d2RldiwgaW5kZXgpO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBDWERSVklORk9fVFJYOlxcbi1cXHRcXHRpZiAodmVyLVxcdTAwM2VkcnZpbmZvX3R5cGUgPT0gMSlcXG4tXFx0XFx0XFx0dHlwZSA9IDM7XFxuLVxcbi1cXHRcXHRkbS1cXHUwMDNldHJ4X2luZm8udHhfcG93ZXIgPSB1MzJfZ2V0X2JpdHMocmZfcGFyYS53bF90eF9wb3dlcixcXG4tXFx0XFx0XFx0XFx0XFx0XFx0ICAgICBSVFc4OV9CVENfV0xfREVGX1RYX1BXUik7XFxuLVxcdFxcdGRtLVxcdTAwM2V0cnhfaW5mby5yeF9nYWluID0gdTMyX2dldF9iaXRzKHJmX3BhcmEud2xfcnhfZ2FpbixcXG4tXFx0XFx0XFx0XFx0XFx0XFx0ICAgIFJUVzg5X0JUQ19XTF9ERUZfVFhfUFdSKTtcXG4tXFx0XFx0ZG0tXFx1MDAzZXRyeF9pbmZvLmJ0X3R4X3Bvd2VyID0gdTMyX2dldF9iaXRzKHJmX3BhcmEuYnRfdHhfcG93ZXIsXFxuLVxcdFxcdFxcdFxcdFxcdFxcdFxcdFJUVzg5X0JUQ19XTF9ERUZfVFhfUFdSKTtcXG4tXFx0XFx0ZG0tXFx1MDAzZXRyeF9pbmZvLmJ0X3J4X2dhaW4gPSB1MzJfZ2V0X2JpdHMocmZfcGFyYS5idF9yeF9nYWluLFxcbi1cXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgUlRXODlfQlRDX1dMX0RFRl9UWF9QV1IpO1xcbi1cXHRcXHRkbS1cXHUwMDNldHJ4X2luZm8uY24gPSB3bC1cXHUwMDNlY25fcmVwb3J0O1xcbi1cXHRcXHRkbS1cXHUwMDNldHJ4X2luZm8ubmhtID0gd2wtXFx1MDAzZW5obS5wd3I7XFxuLVxcdFxcdHJ0dzg5X2Z3X2gyY19jeGRydl90cngocnR3ZGV2LCB0eXBlKTtcXG4rXFx0XFx0aWYgKHZlci1cXHUwMDNlZHJ2aW5mb192ZXIgXFx1MDAzZSAxKVxcbitcXHRcXHRcXHRpbmRleCA9IDM7XFxuK1xcbitcXHRcXHRpZiAodmVyLVxcdTAwM2VmY3h0cnggPT0gNylcXG4rXFx0XFx0XFx0cnR3ODlfZndfaDJjX2N4ZHJ2X3RyeF92NyhydHdkZXYsIGluZGV4KTtcXG4rXFx0XFx0ZWxzZSBpZiAodmVyLVxcdTAwM2VmY3h0cnggPT0gOSlcXG4rXFx0XFx0XFx0cnR3ODlfZndfaDJjX2N4ZHJ2X3RyeF92OShydHdkZXYsIGluZGV4KTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgQ1hEUlZJTkZPX1JGSzpcXG4tXFx0XFx0aWYgKHZlci1cXHUwMDNlZHJ2aW5mb190eXBlID09IDEpXFxuK1xcdFxcdGlmICh2ZXItXFx1MDAzZWRydmluZm9fdmVyICE9IDApXFxuIFxcdFxcdFxcdHJldHVybjtcXG4gXFxuLVxcdFxcdHJ0dzg5X2Z3X2gyY19jeGRydl9yZmsocnR3ZGV2LCB0eXBlKTtcXG4rXFx0XFx0cnR3ODlfZndfaDJjX2N4ZHJ2X3JmayhydHdkZXYsIGluZGV4KTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgQ1hEUlZJTkZPX1RYUFdSOlxcbitcXHRcXHRpZiAodmVyLVxcdTAwM2VkcnZpbmZvX3ZlciA9PSAzKVxcbitcXHRcXHRcXHRpbmRleCA9IDQ7XFxuK1xcbitcXHRcXHRpZiAodmVyLVxcdTAwM2VmY3h0cnggPT0gNylcXG4rXFx0XFx0XFx0cnR3ODlfZndfaDJjX2N4dHhwd3JfdjcocnR3ZGV2LCBpbmRleCk7XFxuK1xcdFxcdGVsc2UgaWYgKHZlci1cXHUwMDNlZmN4dHJ4ID09IDkpXFxuK1xcdFxcdFxcdHJ0dzg5X2Z3X2gyY19jeHR4cHdyX3Y5KHJ0d2RldiwgaW5kZXgpO1xcbitcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBDWERSVklORk9fRkREVDpcXG4rXFx0XFx0aWYgKHZlci1cXHUwMDNlZHJ2aW5mb192ZXIgPT0gMylcXG4rXFx0XFx0XFx0aW5kZXggPSA1O1xcbitcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdHJldHVybjtcXG4rXFxuK1xcdFxcdHJ0dzg5X2RlYnVnKHJ0d2RldiwgUlRXODlfREJHX0JUQywgXFxcImRydl9pbmZvIEZERFQgaW5kZXg9JWRcXFxcblxcXCIsIGluZGV4KTtcXG4rXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgQ1hEUlZJTkZPX01MTzpcXG4rXFx0XFx0aWYgKHZlci1cXHUwMDNlZHJ2aW5mb192ZXIgPT0gMylcXG4rXFx0XFx0XFx0aW5kZXggPSA2O1xcbitcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdHJldHVybjtcXG4rXFxuK1xcdFxcdHJ0dzg5X2RlYnVnKHJ0d2RldiwgUlRXODlfREJHX0JUQywgXFxcImRydl9pbmZvIE1MTyBpbmRleD0lZFxcXFxuXFxcIiwgaW5kZXgpO1xcbitcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBDWERSVklORk9fT1NJOlxcbiBcXHRcXHRpZiAoIXZlci1cXHUwMDNlZmN4b3NpKVxcbiBcXHRcXHRcXHRyZXR1cm47XFxuIFxcbi1cXHRcXHRpZiAodmVyLVxcdTAwM2VkcnZpbmZvX3R5cGUgPT0gMilcXG4tXFx0XFx0XFx0dHlwZSA9IDc7XFxuK1xcdFxcdGlmICh2ZXItXFx1MDAzZWRydmluZm9fdmVyIFxcdTAwM2UgMSlcXG4rXFx0XFx0XFx0aW5kZXggPSA3O1xcbiBcXHRcXHRlbHNlXFxuIFxcdFxcdFxcdHJldHVybjtcXG4gXFxuLVxcdFxcdHJ0dzg5X2Z3X2gyY19jeGRydl9vc2lfaW5mbyhydHdkZXYsIHR5cGUpO1xcbitcXHRcXHRydHc4OV9md19oMmNfY3hkcnZfb3NpX2luZm8ocnR3ZGV2LCBpbmRleCk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRkZWZhdWx0OlxcbiBcXHRcXHRicmVhaztcXG5AQCAtMzAyMSw1MyArMzA3Nyw4NCBAQCBzdGF0aWMgdm9pZCBfc2V0X2J0X2lnbm9yZV93bGFuX2FjdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IGVuYWJsZSlcXG4gI2RlZmluZSBCX0JUQ19XTF9UWF9QT1dFUl9TSUdOIEJJVCg3KVxcbiAjZGVmaW5lIEJfVFNTSV9XTF9UWF9QT1dFUl9TSUdOIEJJVCg4KVxcbiBcXG4tc3RhdGljIHZvaWQgX3NldF93bF90eF9wb3dlcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiBsZXZlbClcXG4rc3RhdGljIHZvaWQgX3NldF93bF90eF9wb3dlcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiBsZXZlbCwgdTggcGh5X21hcClcXG4ge1xcbiBcXHRjb25zdCBzdHJ1Y3QgcnR3ODlfY2hpcF9pbmZvICpjaGlwID0gcnR3ZGV2LVxcdTAwM2VjaGlwO1xcbiBcXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2VidGM7XFxuLVxcdHN0cnVjdCBydHc4OV9idGNfd2xfaW5mbyAqd2wgPSBcXHUwMDI2YnRjLVxcdTAwM2VjeC53bDtcXG4rXFx0Y29uc3Qgc3RydWN0IHJ0dzg5X2J0Y192ZXIgKnZlciA9IGJ0Yy1cXHUwMDNldmVyO1xcbitcXHRzdHJ1Y3QgcnR3ODlfYnRjX2RtICpkbSA9IFxcdTAwMjZidGMtXFx1MDAzZWRtO1xcbitcXHRib29sIGxldmVsX2NoZyA9IGZhbHNlO1xcbiBcXHR1MzIgcHdyX3ZhbDtcXG4gXFxuLVxcdGlmICh3bC1cXHUwMDNlcmZfcGFyYS50eF9wd3JfZnJlZXJ1biA9PSBsZXZlbClcXG4rXFx0aWYgKHBoeV9tYXAgXFx1MDAyNiBCSVQoUlRXODlfUEhZXzApKVxcbitcXHRcXHRsZXZlbF9jaGcgPSAhKGRtLVxcdTAwM2VyZl90cnhfcGFyYS53bF90eF9wb3dlcltSVFc4OV9QSFlfMF0gPT0gbGV2ZWwpO1xcbitcXG4rXFx0aWYgKHBoeV9tYXAgXFx1MDAyNiBCSVQoUlRXODlfUEhZXzEpKVxcbitcXHRcXHRsZXZlbF9jaGcgfD0gIShkbS1cXHUwMDNlcmZfdHJ4X3BhcmEud2xfdHhfcG93ZXJbUlRXODlfUEhZXzFdID09IGxldmVsKTtcXG4rXFxuK1xcdGlmICghbGV2ZWxfY2hnIFxcdTAwMjZcXHUwMDI2ICFidGMtXFx1MDAzZWNsaV9oMmNfY21kKVxcbiBcXHRcXHRyZXR1cm47XFxuIFxcbi1cXHR3bC1cXHUwMDNlcmZfcGFyYS50eF9wd3JfZnJlZXJ1biA9IGxldmVsO1xcbi1cXHRidGMtXFx1MDAzZWRtLnJmX3RyeF9wYXJhLndsX3R4X3Bvd2VyID0gbGV2ZWw7XFxuK1xcdGlmIChwaHlfbWFwIFxcdTAwMjYgQklUKFJUVzg5X1BIWV8wKSlcXG4rXFx0XFx0ZG0tXFx1MDAzZXJmX3RyeF9wYXJhLndsX3R4X3Bvd2VyW1JUVzg5X1BIWV8wXSA9IGxldmVsO1xcbiBcXG4tXFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQlRDLFxcbi1cXHRcXHQgICAgXFxcIltCVENdLCAlcygpOiBsZXZlbCA9ICVkXFxcXG5cXFwiLFxcbi1cXHRcXHQgICAgX19mdW5jX18sIGxldmVsKTtcXG4rXFx0aWYgKHBoeV9tYXAgXFx1MDAyNiBCSVQoUlRXODlfUEhZXzEpKVxcbitcXHRcXHRkbS1cXHUwMDNlcmZfdHJ4X3BhcmEud2xfdHhfcG93ZXJbUlRXODlfUEhZXzFdID0gbGV2ZWw7XFxuIFxcbi1cXHRpZiAobGV2ZWwgPT0gUlRXODlfQlRDX1dMX0RFRl9UWF9QV1IpIHtcXG4tXFx0XFx0cHdyX3ZhbCA9IFdMX1RYX1BPV0VSX05PX0JUQ19DVFJMO1xcbi1cXHR9IGVsc2UgeyAvKiBvbmx5IGFwcGx5IFxcXCJmb3JjZSB0eCBwb3dlclxcXCIgKi9cXG4tXFx0XFx0cHdyX3ZhbCA9IEZJRUxEX1BSRVAoV0xfVFhfUE9XRVJfSU5UX1BBUlQsIGxldmVsKTtcXG4tXFx0XFx0aWYgKHB3cl92YWwgXFx1MDAzZSBSVFc4OV9CVENfV0xfREVGX1RYX1BXUilcXG4tXFx0XFx0XFx0cHdyX3ZhbCA9IFJUVzg5X0JUQ19XTF9ERUZfVFhfUFdSO1xcbitcXHRkbS1cXHUwMDNld2xfdHhfcHdyX3BoeV9tYXAgPSBwaHlfbWFwO1xcbitcXHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19CVEMsXFxuK1xcdFxcdCAgICBcXFwiW0JUQ10sICVzKCk6IHBoeV9tYXA9MHgleCwgd2xfdHhfcHdyLVxcdTAwM2UgcGh5MD0lZCwgcGh5MT0lZFxcXFxuXFxcIixcXG4rXFx0XFx0ICAgIF9fZnVuY19fLCBwaHlfbWFwLFxcbitcXHRcXHQgICAgZG0tXFx1MDAzZXJmX3RyeF9wYXJhLndsX3R4X3Bvd2VyW1JUVzg5X1BIWV8wXSxcXG4rXFx0XFx0ICAgIGRtLVxcdTAwM2VyZl90cnhfcGFyYS53bF90eF9wb3dlcltSVFc4OV9QSFlfMV0pO1xcbitcXG4rXFx0aWYgKHZlci1cXHUwMDNlZmN4dHJ4ID09IDcgXFx1MDAyNlxcdTAwMjYgY2hpcC1cXHUwMDNlY2hpcF9pZCA9PSBSVEw4OTIyQSkge1xcbitcXHRcXHRfZndfc2V0X2Rydl9pbmZvKHJ0d2RldiwgQ1hEUlZJTkZPX1RYUFdSKTtcXG4rXFx0fSBlbHNlIGlmICh2ZXItXFx1MDAzZWZjeHRyeCA9PSA5KSB7XFxuK1xcdFxcdF9md19zZXRfZHJ2X2luZm8ocnR3ZGV2LCBDWERSVklORk9fVFhQV1IpO1xcbitcXHR9IGVsc2Uge1xcbitcXHRcXHRpZiAobGV2ZWwgPT0gUlRXODlfQlRDX1dMX0RFRl9UWF9QV1IpIHtcXG4rXFx0XFx0XFx0cHdyX3ZhbCA9IFdMX1RYX1BPV0VSX05PX0JUQ19DVFJMO1xcbitcXHRcXHR9IGVsc2UgeyAvKiBvbmx5IGFwcGx5IFxcXCJmb3JjZSB0eCBwb3dlclxcXCIgKi9cXG4rXFx0XFx0XFx0cHdyX3ZhbCA9IEZJRUxEX1BSRVAoV0xfVFhfUE9XRVJfSU5UX1BBUlQsIGxldmVsKTtcXG4rXFx0XFx0XFx0aWYgKHB3cl92YWwgXFx1MDAzZSBSVFc4OV9CVENfV0xfREVGX1RYX1BXUilcXG4rXFx0XFx0XFx0XFx0cHdyX3ZhbCA9IFJUVzg5X0JUQ19XTF9ERUZfVFhfUFdSO1xcbiBcXG4tXFx0XFx0aWYgKGxldmVsIFxcdTAwMjYgQl9CVENfV0xfVFhfUE9XRVJfU0lHTilcXG4tXFx0XFx0XFx0cHdyX3ZhbCB8PSBCX1RTU0lfV0xfVFhfUE9XRVJfU0lHTjtcXG4tXFx0XFx0cHdyX3ZhbCB8PSBXTF9UWF9QT1dFUl9XSVRIX0JUO1xcbitcXHRcXHRcXHRpZiAobGV2ZWwgXFx1MDAyNiBCX0JUQ19XTF9UWF9QT1dFUl9TSUdOKVxcbitcXHRcXHRcXHRcXHRwd3JfdmFsIHw9IEJfVFNTSV9XTF9UWF9QT1dFUl9TSUdOO1xcbitcXHRcXHRcXHRwd3JfdmFsIHw9IFdMX1RYX1BPV0VSX1dJVEhfQlQ7XFxuK1xcdFxcdH1cXG4rXFx0XFx0Y2hpcC1cXHUwMDNlb3BzLVxcdTAwM2VidGNfc2V0X3dsX3R4cHdyX2N0cmwocnR3ZGV2LCBwd3JfdmFsKTtcXG4gXFx0fVxcbi1cXG4tXFx0Y2hpcC1cXHUwMDNlb3BzLVxcdTAwM2VidGNfc2V0X3dsX3R4cHdyX2N0cmwocnR3ZGV2LCBwd3JfdmFsKTtcXG4gfVxcbiBcXG4tc3RhdGljIHZvaWQgX3NldF93bF9yeF9nYWluKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIGxldmVsKVxcbitzdGF0aWMgdm9pZCBfc2V0X3dsX3J4X2dhaW4oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgbGV2ZWwsIHU4IHBoeV9tYXApXFxuIHtcXG4gXFx0Y29uc3Qgc3RydWN0IHJ0dzg5X2NoaXBfaW5mbyAqY2hpcCA9IHJ0d2Rldi1cXHUwMDNlY2hpcDtcXG4gXFx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXFx1MDAyNnJ0d2Rldi1cXHUwMDNlYnRjO1xcbi1cXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX2luZm8gKndsID0gXFx1MDAyNmJ0Yy1cXHUwMDNlY3gud2w7XFxuK1xcdHN0cnVjdCBydHc4OV9idGNfZG0gKmRtID0gXFx1MDAyNmJ0Yy1cXHUwMDNlZG07XFxuK1xcdGJvb2wgbGV2ZWxfY2hnID0gZmFsc2U7XFxuK1xcbitcXHRpZiAocGh5X21hcCBcXHUwMDI2IEJJVChSVFc4OV9QSFlfMCkpXFxuK1xcdFxcdGxldmVsX2NoZyA9ICEoZG0tXFx1MDAzZXJmX3RyeF9wYXJhLndsX3J4X2dhaW5bUlRXODlfUEhZXzBdID09IGxldmVsKTtcXG4gXFxuLVxcdGlmICh3bC1cXHUwMDNlcmZfcGFyYS5yeF9nYWluX2ZyZWVydW4gPT0gbGV2ZWwpXFxuK1xcdGlmIChwaHlfbWFwIFxcdTAwMjYgQklUKFJUVzg5X1BIWV8xKSlcXG4rXFx0XFx0bGV2ZWxfY2hnIHw9ICEoZG0tXFx1MDAzZXJmX3RyeF9wYXJhLndsX3J4X2dhaW5bUlRXODlfUEhZXzFdID09IGxldmVsKTtcXG4rXFxuK1xcdGlmICghbGV2ZWxfY2hnIFxcdTAwMjZcXHUwMDI2ICFidGMtXFx1MDAzZWNsaV9oMmNfY21kKVxcbiBcXHRcXHRyZXR1cm47XFxuIFxcbi1cXHR3bC1cXHUwMDNlcmZfcGFyYS5yeF9nYWluX2ZyZWVydW4gPSBsZXZlbDtcXG4tXFx0YnRjLVxcdTAwM2VkbS5yZl90cnhfcGFyYS53bF9yeF9nYWluID0gbGV2ZWw7XFxuK1xcdGlmIChwaHlfbWFwIFxcdTAwMjYgQklUKFJUVzg5X1BIWV8wKSlcXG4rXFx0XFx0ZG0tXFx1MDAzZXJmX3RyeF9wYXJhLndsX3J4X2dhaW5bUlRXODlfUEhZXzBdID0gbGV2ZWw7XFxuK1xcbitcXHRpZiAocGh5X21hcCBcXHUwMDI2IEJJVChSVFc4OV9QSFlfMSkpXFxuK1xcdFxcdGRtLVxcdTAwM2VyZl90cnhfcGFyYS53bF9yeF9nYWluW1JUVzg5X1BIWV8xXSA9IGxldmVsO1xcbiBcXG4gXFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQlRDLFxcbi1cXHRcXHQgICAgXFxcIltCVENdLCAlcygpOiBsZXZlbCA9ICVkXFxcXG5cXFwiLFxcbi1cXHRcXHQgICAgX19mdW5jX18sIGxldmVsKTtcXG4rXFx0XFx0ICAgIFxcXCJbQlRDXSwgJXMoKTogcGh5X21hcD0weCV4LCB3bF9yeF9nYWluLVxcdTAwM2UgcGh5MD0lZCwgcGh5MT0lZFxcXFxuXFxcIixcXG4rXFx0XFx0ICAgIF9fZnVuY19fLCBwaHlfbWFwLFxcbitcXHRcXHQgICAgZG0tXFx1MDAzZXJmX3RyeF9wYXJhLndsX3J4X2dhaW5bUlRXODlfUEhZXzBdLFxcbitcXHRcXHQgICAgZG0tXFx1MDAzZXJmX3RyeF9wYXJhLndsX3J4X2dhaW5bUlRXODlfUEhZXzFdKTtcXG4gXFxuIFxcdGNoaXAtXFx1MDAzZW9wcy1cXHUwMDNlYnRjX3NldF93bF9yeF9nYWluKHJ0d2RldiwgbGV2ZWwpO1xcbiB9XFxuQEAgLTMwNzUsMTEgKzMxNjIsMTEgQEAgc3RhdGljIHZvaWQgX3NldF93bF9yeF9nYWluKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIGxldmVsKVxcbiBzdGF0aWMgdm9pZCBfc2V0X2J0X3R4X3Bvd2VyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggbGV2ZWwpXFxuIHtcXG4gXFx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXFx1MDAyNnJ0d2Rldi1cXHUwMDNlYnRjO1xcbi1cXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXFx1MDAyNmJ0Yy1cXHUwMDNlY3guYnQ7XFxuK1xcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcXHUwMDI2YnRjLVxcdTAwM2VjeC5idDA7XFxuIFxcdGludCByZXQ7XFxuIFxcdHU4IGJ1ZjtcXG4gXFxuLVxcdGlmIChidGMtXFx1MDAzZWN4LmNudF9idFtCVENfQkNOVF9JTkZPVVBEQVRFXSA9PSAwKVxcbitcXHRpZiAoYnQtXFx1MDAzZWJjbnRbQlRDX0JDTlRfSU5GT1VQREFURV0gPT0gMClcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4gXFx0aWYgKGJ0LVxcdTAwM2VyZl9wYXJhLnR4X3B3cl9mcmVlcnVuID09IGxldmVsKVxcbkBAIC0zMDkzLDcgKzMxODAsNyBAQCBzdGF0aWMgdm9pZCBfc2V0X2J0X3R4X3Bvd2VyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggbGV2ZWwpXFxuIFxcdHJldCA9IF9zZW5kX2Z3X2NtZChydHdkZXYsIEJURkNfU0VULCBTRVRfQlRfVFhfUFdSLCBcXHUwMDI2YnVmLCAxKTtcXG4gXFx0aWYgKCFyZXQpIHtcXG4gXFx0XFx0YnQtXFx1MDAzZXJmX3BhcmEudHhfcHdyX2ZyZWVydW4gPSBsZXZlbDtcXG4tXFx0XFx0YnRjLVxcdTAwM2VkbS5yZl90cnhfcGFyYS5idF90eF9wb3dlciA9IGxldmVsO1xcbitcXHRcXHRidGMtXFx1MDAzZWRtLnJmX3RyeF9wYXJhLmJ0X3R4X3Bvd2VyW0JUQ19CVF8xU1RdID0gbGV2ZWw7XFxuIFxcdH1cXG4gfVxcbiBcXG5AQCAtMzEwMiw5ICszMTg5LDkgQEAgc3RhdGljIHZvaWQgX3NldF9idF90eF9wb3dlcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IGxldmVsKVxcbiBzdGF0aWMgdm9pZCBfc2V0X2J0X3J4X2dhaW4oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCBsZXZlbClcXG4ge1xcbiBcXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2VidGM7XFxuLVxcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcXHUwMDI2YnRjLVxcdTAwM2VjeC5idDtcXG4rXFx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFxcdTAwMjZidGMtXFx1MDAzZWN4LmJ0MDtcXG4gXFxuLVxcdGlmIChidGMtXFx1MDAzZWN4LmNudF9idFtCVENfQkNOVF9JTkZPVVBEQVRFXSA9PSAwKVxcbitcXHRpZiAoYnQtXFx1MDAzZWJjbnRbQlRDX0JDTlRfSU5GT1VQREFURV0gPT0gMClcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4gXFx0aWYgKChidC1cXHUwMDNlcmZfcGFyYS5yeF9nYWluX2ZyZWVydW4gPT0gbGV2ZWwgfHxcXG5AQCAtMzExMyw3ICszMjAwLDcgQEAgc3RhdGljIHZvaWQgX3NldF9idF9yeF9nYWluKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggbGV2ZWwpXFxuIFxcdFxcdHJldHVybjtcXG4gXFxuIFxcdGJ0LVxcdTAwM2VyZl9wYXJhLnJ4X2dhaW5fZnJlZXJ1biA9IGxldmVsO1xcbi1cXHRidGMtXFx1MDAzZWRtLnJmX3RyeF9wYXJhLmJ0X3J4X2dhaW4gPSBsZXZlbDtcXG4rXFx0YnRjLVxcdTAwM2VkbS5yZl90cnhfcGFyYS5idF9yeF9nYWluW0JUQ19CVF8xU1RdID0gbGV2ZWw7XFxuIFxcbiBcXHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19CVEMsXFxuIFxcdFxcdCAgICBcXFwiW0JUQ10sICVzKCk6IGxldmVsID0gJWRcXFxcblxcXCIsXFxuQEAgLTMxMzQsMTIgKzMyMjEsMTMgQEAgc3RhdGljIHZvaWQgX3NldF9yZl90cnhfcGFyYShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuIFxcdGNvbnN0IHN0cnVjdCBydHc4OV9idGNfdmVyICp2ZXIgPSBidGMtXFx1MDAzZXZlcjtcXG4gXFx0c3RydWN0IHJ0dzg5X2J0Y19kbSAqZG0gPSBcXHUwMDI2YnRjLVxcdTAwM2VkbTtcXG4gXFx0c3RydWN0IHJ0dzg5X2J0Y193bF9pbmZvICp3bCA9IFxcdTAwMjZidGMtXFx1MDAzZWN4LndsO1xcbi1cXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXFx1MDAyNmJ0Yy1cXHUwMDNlY3guYnQ7XFxuK1xcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcXHUwMDI2YnRjLVxcdTAwM2VjeC5idDA7XFxuIFxcdHN0cnVjdCBydHc4OV9idGNfYnRfbGlua19pbmZvICpiID0gXFx1MDAyNmJ0LVxcdTAwM2VsaW5rX2luZm87XFxuIFxcdHN0cnVjdCBydHc4OV9idGNfd2xfc21hcCAqd2xfc21hcCA9IFxcdTAwMjZ3bC1cXHUwMDNlc3RhdHVzLm1hcDtcXG4tXFx0c3RydWN0IHJ0dzg5X2J0Y19yZl90cnhfcGFyYSBwYXJhO1xcbitcXHRzdHJ1Y3QgcnR3ODlfYnRjX3JmX3RyeF9wYXJhX3Y5IHBhcmE7XFxuK1xcdHU4IGx2LCBsaW5rX21vZGUgPSAwLCBpLCBkYmNjXzJnX3BoeSA9IDA7XFxuK1xcdHU4IHVsX3BhcmFfbnVtLCBkbF9wYXJhX251bTtcXG4gXFx0dTMyIHdsX3N0Yl9jaGcgPSAwO1xcbi1cXHR1OCBsZXZlbF9pZCA9IDAsIGxpbmtfbW9kZSA9IDAsIGksIGRiY2NfMmdfcGh5ID0gMDtcXG4gXFxuIFxcdGlmICh2ZXItXFx1MDAzZWZ3bHJvbGUgPT0gMCkge1xcbiBcXHRcXHRsaW5rX21vZGUgPSB3bC1cXHUwMDNlcm9sZV9pbmZvLmxpbmtfbW9kZTtcXG5AQCAtMzE1NSw2ICszMjQzLDE4IEBAIHN0YXRpYyB2b2lkIF9zZXRfcmZfdHJ4X3BhcmEoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbiBcXHRcXHRkYmNjXzJnX3BoeSA9IHdsLVxcdTAwM2Vyb2xlX2luZm9fdjIuZGJjY18yZ19waHk7XFxuIFxcdH1cXG4gXFxuK1xcdGlmICh2ZXItXFx1MDAzZWZjeHRyeCA9PSA5IFxcdTAwMjZcXHUwMDI2IGNoaXAtXFx1MDAzZXJmX3BhcmFfdWxpbmtfdjkpIHtcXG4rXFx0XFx0dWxfcGFyYV9udW0gPSBjaGlwLVxcdTAwM2VyZl9wYXJhX3VsaW5rX251bV92OTtcXG4rXFx0XFx0ZGxfcGFyYV9udW0gPSBjaGlwLVxcdTAwM2VyZl9wYXJhX2RsaW5rX251bV92OTtcXG4rXFx0fSBlbHNlIGlmICh2ZXItXFx1MDAzZWZjeHRyeCA9PSAwIFxcdTAwMjZcXHUwMDI2IGNoaXAtXFx1MDAzZXJmX3BhcmFfdWxpbmtfdjApIHtcXG4rXFx0XFx0dWxfcGFyYV9udW0gPSBjaGlwLVxcdTAwM2VyZl9wYXJhX3VsaW5rX251bV92MDtcXG4rXFx0XFx0ZGxfcGFyYV9udW0gPSBjaGlwLVxcdTAwM2VyZl9wYXJhX2RsaW5rX251bV92MDtcXG4rXFx0fSBlbHNlIHtcXG4rXFx0XFx0cnR3ODlfd2FybihydHdkZXYsIFxcXCJbQlRDXSVzKCksIE5vIHJmX3BhcmEgZm9yIHZlcnNlaW9uICVkXFxcXG5cXFwiLFxcbitcXHRcXHRcXHQgICBfX2Z1bmNfXywgdmVyLVxcdTAwM2VmY3h0cngpO1xcbitcXHRcXHRnb3RvIG5leHQ7XFxuK1xcdH1cXG4rXFxuIFxcdC8qIGRlY2lkZSB0cnhfcGFyYV9sZXZlbCAqL1xcbiBcXHRpZiAoYnRjLVxcdTAwM2VhbnRfdHlwZSA9PSBCVENfQU5UX1NIQVJFRCkge1xcbiBcXHRcXHQvKiBmaXggTE5BMiArIFRJQSBnYWluIG5vdCBjaGFuZ2UgYnkgR05UX0JUICovXFxuQEAgLTMxNzYsMzAgKzMyNzYsNTQgQEAgc3RhdGljIHZvaWQgX3NldF9yZl90cnhfcGFyYShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuIFxcdFxcdH1cXG4gXFx0fVxcbiBcXG4tXFx0bGV2ZWxfaWQgPSBkbS1cXHUwMDNldHJ4X3BhcmFfbGV2ZWw7XFxuLVxcdGlmIChsZXZlbF9pZCBcXHUwMDNlPSBjaGlwLVxcdTAwM2VyZl9wYXJhX2RsaW5rX251bSB8fFxcbi1cXHQgICAgbGV2ZWxfaWQgXFx1MDAzZT0gY2hpcC1cXHUwMDNlcmZfcGFyYV91bGlua19udW0pIHtcXG4rXFx0bHYgPSBkbS1cXHUwMDNldHJ4X3BhcmFfbGV2ZWw7XFxuK1xcdGlmIChsdiBcXHUwMDNlPSB1bF9wYXJhX251bSB8fFxcbitcXHQgICAgbHYgXFx1MDAzZT0gZGxfcGFyYV9udW0pIHtcXG4gXFx0XFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQlRDLFxcbiBcXHRcXHRcXHQgICAgXFxcIltCVENdLCAlcygpOiBpbnZhbGlkIGxldmVsX2lkOiAlZFxcXFxuXFxcIixcXG4tXFx0XFx0XFx0ICAgIF9fZnVuY19fLCBsZXZlbF9pZCk7XFxuK1xcdFxcdFxcdCAgICBfX2Z1bmNfXywgbHYpO1xcbiBcXHRcXHRyZXR1cm47XFxuIFxcdH1cXG4gXFxuLVxcdGlmICh3bC1cXHUwMDNlc3RhdHVzLm1hcC50cmFmZmljX2RpciBcXHUwMDI2IEJJVChSVFc4OV9URkNfVUwpKVxcbi1cXHRcXHRwYXJhID0gY2hpcC1cXHUwMDNlcmZfcGFyYV91bGlua1tsZXZlbF9pZF07XFxuLVxcdGVsc2VcXG4tXFx0XFx0cGFyYSA9IGNoaXAtXFx1MDAzZXJmX3BhcmFfZGxpbmtbbGV2ZWxfaWRdO1xcbitcXHRpZiAod2wtXFx1MDAzZXN0YXR1cy5tYXAudHJhZmZpY19kaXIgXFx1MDAyNiBCSVQoUlRXODlfVEZDX1VMKSkge1xcbitcXHRcXHRpZiAodmVyLVxcdTAwM2VmY3h0cnggPT0gOSkge1xcbitcXHRcXHRcXHRwYXJhID0gY2hpcC1cXHUwMDNlcmZfcGFyYV91bGlua192OVtsdl07XFxuK1xcdFxcdH0gZWxzZSB7XFxuK1xcdFxcdFxcdGZvciAoaSA9IFJUVzg5X1BIWV8wOyBpIFxcdTAwM2MgUlRXODlfUEhZX05VTTsgaSsrKSB7XFxuK1xcdFxcdFxcdFxcdHBhcmEud2xfdHhfcG93ZXJbaV0gPSBjaGlwLVxcdTAwM2VyZl9wYXJhX3VsaW5rX3YwW2x2XS53bF90eF9wb3dlcjtcXG4rXFx0XFx0XFx0XFx0cGFyYS53bF9yeF9nYWluW2ldID0gY2hpcC1cXHUwMDNlcmZfcGFyYV91bGlua192MFtsdl0ud2xfcnhfZ2FpbjtcXG4rXFx0XFx0XFx0fVxcbitcXHRcXHRcXHRmb3IgKGkgPSBCVENfQlRfMVNUOyBpIFxcdTAwM2MgQlRDX0FMTF9CVDsgaSsrKSB7XFxuK1xcdFxcdFxcdFxcdHBhcmEuYnRfdHhfcG93ZXJbaV0gPSBjaGlwLVxcdTAwM2VyZl9wYXJhX3VsaW5rX3YwW2x2XS5idF90eF9wb3dlcjtcXG4rXFx0XFx0XFx0XFx0cGFyYS5idF9yeF9nYWluW2ldID0gY2hpcC1cXHUwMDNlcmZfcGFyYV91bGlua192MFtsdl0uYnRfcnhfZ2FpbjtcXG4rXFx0XFx0XFx0fVxcbitcXHRcXHR9XFxuK1xcdH0gZWxzZSB7XFxuK1xcdFxcdGlmICh2ZXItXFx1MDAzZWZjeHRyeCA9PSA5KSB7XFxuK1xcdFxcdFxcdHBhcmEgPSBjaGlwLVxcdTAwM2VyZl9wYXJhX2RsaW5rX3Y5W2x2XTtcXG4rXFx0XFx0fSBlbHNlIHtcXG4rXFx0XFx0XFx0Zm9yIChpID0gUlRXODlfUEhZXzA7IGkgXFx1MDAzYyBSVFc4OV9QSFlfTlVNOyBpKyspIHtcXG4rXFx0XFx0XFx0XFx0cGFyYS53bF90eF9wb3dlcltpXSA9IGNoaXAtXFx1MDAzZXJmX3BhcmFfZGxpbmtfdjBbbHZdLndsX3R4X3Bvd2VyO1xcbitcXHRcXHRcXHRcXHRwYXJhLndsX3J4X2dhaW5baV0gPSBjaGlwLVxcdTAwM2VyZl9wYXJhX2RsaW5rX3YwW2x2XS53bF9yeF9nYWluO1xcbitcXHRcXHRcXHR9XFxuK1xcdFxcdFxcdGZvciAoaSA9IEJUQ19CVF8xU1Q7IGkgXFx1MDAzYyBCVENfQUxMX0JUOyBpKyspIHtcXG4rXFx0XFx0XFx0XFx0cGFyYS5idF90eF9wb3dlcltpXSA9IGNoaXAtXFx1MDAzZXJmX3BhcmFfZGxpbmtfdjBbbHZdLmJ0X3R4X3Bvd2VyO1xcbitcXHRcXHRcXHRcXHRwYXJhLmJ0X3J4X2dhaW5baV0gPSBjaGlwLVxcdTAwM2VyZl9wYXJhX2RsaW5rX3YwW2x2XS5idF9yeF9nYWluO1xcbitcXHRcXHRcXHR9XFxuK1xcdFxcdH1cXG4rXFx0fVxcbiBcXG4gXFx0aWYgKGRtLVxcdTAwM2VmZGR0X3RyYWluKSB7XFxuLVxcdFxcdF9zZXRfd2xfcnhfZ2FpbihydHdkZXYsIDEpO1xcbitcXHRcXHRfc2V0X3dsX3J4X2dhaW4ocnR3ZGV2LCAxLCBSVFc4OV9QSFlfMCk7XFxuIFxcdFxcdF93cml0ZV9zY2JkKHJ0d2RldiwgQlRDX1dTQ0JfUlhHQUlOLCB0cnVlKTtcXG4gXFx0fSBlbHNlIHtcXG4tXFx0XFx0X3NldF93bF90eF9wb3dlcihydHdkZXYsIHBhcmEud2xfdHhfcG93ZXIpO1xcbi1cXHRcXHRfc2V0X3dsX3J4X2dhaW4ocnR3ZGV2LCBwYXJhLndsX3J4X2dhaW4pO1xcbi1cXHRcXHRfc2V0X2J0X3R4X3Bvd2VyKHJ0d2RldiwgcGFyYS5idF90eF9wb3dlcik7XFxuLVxcdFxcdF9zZXRfYnRfcnhfZ2FpbihydHdkZXYsIHBhcmEuYnRfcnhfZ2Fpbik7XFxuK1xcdFxcdF9zZXRfd2xfdHhfcG93ZXIocnR3ZGV2LCBwYXJhLndsX3R4X3Bvd2VyW1JUVzg5X1BIWV8wXSwgUlRXODlfUEhZXzApO1xcbitcXHRcXHRfc2V0X3dsX3J4X2dhaW4ocnR3ZGV2LCBwYXJhLndsX3J4X2dhaW5bUlRXODlfUEhZXzBdLCBSVFc4OV9QSFlfMCk7XFxuK1xcdFxcdF9zZXRfYnRfdHhfcG93ZXIocnR3ZGV2LCBwYXJhLmJ0X3R4X3Bvd2VyW0JUQ19CVF8xU1RdKTtcXG4rXFx0XFx0X3NldF9idF9yeF9nYWluKHJ0d2RldiwgcGFyYS5idF9yeF9nYWluW0JUQ19CVF8xU1RdKTtcXG4gXFx0fVxcbiBcXG4rbmV4dDpcXG4gXFx0aWYgKCFidC1cXHUwMDNlZW5hYmxlLm5vdyB8fCBkbS1cXHUwMDNld2xfb25seSB8fCB3bF9zbWFwLVxcdTAwM2VyZl9vZmYgfHxcXG4gXFx0ICAgIHdsX3NtYXAtXFx1MDAzZWxwcyA9PSBCVENfTFBTX1JGX09GRiB8fFxcbiBcXHQgICAgbGlua19tb2RlID09IEJUQ19XTElOS181RyB8fFxcbkBAIC0zMjIwLDcgKzMzNDQsNyBAQCBzdGF0aWMgdm9pZCBfdXBkYXRlX2J0Y19zdGF0ZV9tYXAoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbiBcXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2VidGM7XFxuIFxcdHN0cnVjdCBydHc4OV9idGNfY3ggKmN4ID0gXFx1MDAyNmJ0Yy1cXHUwMDNlY3g7XFxuIFxcdHN0cnVjdCBydHc4OV9idGNfd2xfaW5mbyAqd2wgPSBcXHUwMDI2Y3gtXFx1MDAzZXdsO1xcbi1cXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXFx1MDAyNmN4LVxcdTAwM2VidDtcXG4rXFx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFxcdTAwMjZjeC1cXHUwMDNlYnQwO1xcbiBcXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2xpbmtfaW5mbyAqYnRfbGluZm8gPSBcXHUwMDI2YnQtXFx1MDAzZWxpbmtfaW5mbztcXG4gXFxuIFxcdGlmICh3bC1cXHUwMDNlc3RhdHVzLm1hcC5jb25uZWN0aW5nIHx8IHdsLVxcdTAwM2VzdGF0dXMubWFwLl80d2F5IHx8XFxuQEAgLTMyNDcsNyArMzM3MSw3IEBAIHN0YXRpYyB2b2lkIF9zZXRfYnRfYWZoX2luZm9fdjAoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbiBcXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2VidGM7XFxuIFxcdGNvbnN0IHN0cnVjdCBydHc4OV9idGNfdmVyICp2ZXIgPSBidGMtXFx1MDAzZXZlcjtcXG4gXFx0c3RydWN0IHJ0dzg5X2J0Y193bF9pbmZvICp3bCA9IFxcdTAwMjZidGMtXFx1MDAzZWN4LndsO1xcbi1cXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXFx1MDAyNmJ0Yy1cXHUwMDNlY3guYnQ7XFxuK1xcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcXHUwMDI2YnRjLVxcdTAwM2VjeC5idDA7XFxuIFxcdHN0cnVjdCBydHc4OV9idGNfYnRfbGlua19pbmZvICpiID0gXFx1MDAyNmJ0LVxcdTAwM2VsaW5rX2luZm87XFxuIFxcdHN0cnVjdCBydHc4OV9idGNfd2xfcm9sZV9pbmZvICp3bF9yaW5mbyA9IFxcdTAwMjZ3bC1cXHUwMDNlcm9sZV9pbmZvO1xcbiBcXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX3JvbGVfaW5mb192MSAqd2xfcmluZm9fdjEgPSBcXHUwMDI2d2wtXFx1MDAzZXJvbGVfaW5mb192MTtcXG5AQCAtMzQwNyw3ICszNTMxLDcgQEAgc3RhdGljIHZvaWQgX3NldF9idF9hZmhfaW5mb192MChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuIFxcdHJ0dzg5X2RlYnVnKHJ0d2RldiwgUlRXODlfREJHX0JUQyxcXG4gXFx0XFx0ICAgIFxcXCJbQlRDXSwgJXMoKTogZW49JWQsIGNoPSVkLCBidz0lZFxcXFxuXFxcIixcXG4gXFx0XFx0ICAgIF9fZnVuY19fLCBlbiwgY2gsIGJ3KTtcXG4tXFx0YnRjLVxcdTAwM2VjeC5jbnRfd2xbQlRDX1dDTlRfQ0hfVVBEQVRFXSsrO1xcbitcXHR3bC1cXHUwMDNld2NudFtCVENfV0NOVF9DSF9VUERBVEVdKys7XFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkIF9zZXRfYnRfYWZoX2luZm9fdjEoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbkBAIC0zNDE3LDcgKzM1NDEsNyBAQCBzdGF0aWMgdm9pZCBfc2V0X2J0X2FmaF9pbmZvX3YxKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG4gXFx0c3RydWN0IHJ0dzg5X2J0Y193bF9pbmZvICp3bCA9IFxcdTAwMjZidGMtXFx1MDAzZWN4LndsO1xcbiBcXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX3JvbGVfaW5mb192OCAqd2xfcmluZm8gPSBcXHUwMDI2d2wtXFx1MDAzZXJvbGVfaW5mb192ODtcXG4gXFx0c3RydWN0IHJ0dzg5X2J0Y193bF9hZmhfaW5mbyAqd2xfYWZoID0gXFx1MDAyNndsLVxcdTAwM2VhZmhfaW5mbztcXG4tXFx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFxcdTAwMjZidGMtXFx1MDAzZWN4LmJ0O1xcbitcXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXFx1MDAyNmJ0Yy1cXHUwMDNlY3guYnQwO1xcbiBcXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX3JsaW5rICpybGluaztcXG4gXFx0dTggZW4gPSAwLCBjaCA9IDAsIGJ3ID0gMCwgYnVmWzNdID0ge307XFxuIFxcdHU4IGksIGosIGxpbmtfbW9kZTtcXG5AQCAtMzUwNyw3ICszNjMxLDcgQEAgc3RhdGljIHZvaWQgX3NldF9idF9hZmhfaW5mb192MShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuIFxcdFxcdFxcdCAgICBcXFwiW0JUQ10sICVzKCk6IGVuPSVkLCBjaD0lZCwgYnc9JWRcXFxcblxcXCIsXFxuIFxcdFxcdFxcdCAgICBfX2Z1bmNfXywgZW4sIGNoLCBidyk7XFxuIFxcbi1cXHRcXHRidGMtXFx1MDAzZWN4LmNudF93bFtCVENfV0NOVF9DSF9VUERBVEVdKys7XFxuK1xcdFxcdHdsLVxcdTAwM2V3Y250W0JUQ19XQ05UX0NIX1VQREFURV0rKztcXG4gXFx0fVxcbiB9XFxuIFxcbkBAIC0zNTIzLDcgKzM2NDcsNyBAQCBzdGF0aWMgYm9vbCBfY2hlY2tfZnJlZXJ1bihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuIHtcXG4gXFx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXFx1MDAyNnJ0d2Rldi1cXHUwMDNlYnRjO1xcbiBcXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX2luZm8gKndsID0gXFx1MDAyNmJ0Yy1cXHUwMDNlY3gud2w7XFxuLVxcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcXHUwMDI2YnRjLVxcdTAwM2VjeC5idDtcXG4rXFx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFxcdTAwMjZidGMtXFx1MDAzZWN4LmJ0MDtcXG4gXFx0c3RydWN0IHJ0dzg5X2J0Y193bF9yb2xlX2luZm8gKndsX3JpbmZvID0gXFx1MDAyNndsLVxcdTAwM2Vyb2xlX2luZm87XFxuIFxcdHN0cnVjdCBydHc4OV9idGNfd2xfcm9sZV9pbmZvX3YxICp3bF9yaW5mb192MSA9IFxcdTAwMjZ3bC1cXHUwMDNlcm9sZV9pbmZvX3YxO1xcbiBcXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX3JvbGVfaW5mb192MiAqd2xfcmluZm9fdjIgPSBcXHUwMDI2d2wtXFx1MDAzZXJvbGVfaW5mb192MjtcXG5AQCAtMzk5Niw5ICs0MTIwLDkgQEAgdm9pZCBydHc4OV9idGNfc2V0X3BvbGljeV92MShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUxNiBwb2xpY3lfdHlwZSlcXG4gXFx0c3RydWN0IHJ0dzg5X2J0Y19kbSAqZG0gPSBcXHUwMDI2YnRjLVxcdTAwM2VkbTtcXG4gXFx0c3RydWN0IHJ0dzg5X2J0Y19mYnRjX3RkbWEgKnQgPSBcXHUwMDI2ZG0tXFx1MDAzZXRkbWE7XFxuIFxcdHN0cnVjdCBydHc4OV9idGNfd2xfcm9sZV9pbmZvX3YxICp3bF9yaW5mbyA9IFxcdTAwMjZidGMtXFx1MDAzZWN4LndsLnJvbGVfaW5mb192MTtcXG4tXFx0c3RydWN0IHJ0dzg5X2J0Y19idF9hMmRwX2Rlc2MgKmEyZHAgPSBcXHUwMDI2YnRjLVxcdTAwM2VjeC5idC5saW5rX2luZm8uYTJkcF9kZXNjO1xcbi1cXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2hpZF9kZXNjICpoaWQgPSBcXHUwMDI2YnRjLVxcdTAwM2VjeC5idC5saW5rX2luZm8uaGlkX2Rlc2M7XFxuLVxcdHN0cnVjdCBydHc4OV9idGNfYnRfaGZwX2Rlc2MgKmhmcCA9IFxcdTAwMjZidGMtXFx1MDAzZWN4LmJ0LmxpbmtfaW5mby5oZnBfZGVzYztcXG4rXFx0c3RydWN0IHJ0dzg5X2J0Y19idF9hMmRwX2Rlc2MgKmEyZHAgPSBcXHUwMDI2YnRjLVxcdTAwM2VjeC5idDAubGlua19pbmZvLmEyZHBfZGVzYztcXG4rXFx0c3RydWN0IHJ0dzg5X2J0Y19idF9oaWRfZGVzYyAqaGlkID0gXFx1MDAyNmJ0Yy1cXHUwMDNlY3guYnQwLmxpbmtfaW5mby5oaWRfZGVzYztcXG4rXFx0c3RydWN0IHJ0dzg5X2J0Y19idF9oZnBfZGVzYyAqaGZwID0gXFx1MDAyNmJ0Yy1cXHUwMDNlY3guYnQwLmxpbmtfaW5mby5oZnBfZGVzYztcXG4gXFx0c3RydWN0IHJ0dzg5X2J0Y193bF9pbmZvICp3bCA9IFxcdTAwMjZidGMtXFx1MDAzZWN4LndsO1xcbiBcXHR1OCB0eXBlLCBudWxsX3JvbGU7XFxuIFxcdHUzMiB0YmxfdzEsIHRibF9iMSwgdGJsX2I0O1xcbkBAIC00NDM0LDcgKzQ1NTgsNyBAQCB2b2lkIHJ0dzg5X2J0Y19zZXRfcG9saWN5X3YxKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTE2IHBvbGljeV90eXBlKVxcbiBcXHRpZiAoZG0tXFx1MDAzZWxlYWtfYXAgXFx1MDAyNlxcdTAwMjYgZG0tXFx1MDAzZXRkbWEubGVha19uIFxcdTAwM2UgMSlcXG4gXFx0XFx0X3RkbWFfc2V0X2xlayhidGMsIDEpO1xcbiBcXG4tXFx0aWYgKGRtLVxcdTAwM2V0ZG1hX2luc3RhbnRfZXhjdXRlKSB7XFxuK1xcdGlmIChkbS1cXHUwMDNldGRtYV9pbnN0YW50X2V4Y3V0ZSB8fCBkbS1cXHUwMDNlbHBzX2N0cmxfY2hhbmdlKSB7XFxuIFxcdFxcdGJ0Yy1cXHUwMDNlZG0udGRtYS5vcHRpb25fY3RybCB8PSBCSVQoMCk7XFxuIFxcdFxcdGJ0Yy1cXHUwMDNldXBkYXRlX3BvbGljeV9mb3JjZSA9IHRydWU7XFxuIFxcdH1cXG5AQCAtNDQ3OSw3ICs0NjAzLDcgQEAgc3RhdGljIHZvaWQgX3NldF9hbnRfdjAoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBib29sIGZvcmNlX2V4ZWMsXFxuIFxcdHN0cnVjdCBydHc4OV9idGNfZG0gKmRtID0gXFx1MDAyNmJ0Yy1cXHUwMDNlZG07XFxuIFxcdHN0cnVjdCBydHc4OV9idGNfY3ggKmN4ID0gXFx1MDAyNmJ0Yy1cXHUwMDNlY3g7XFxuIFxcdHN0cnVjdCBydHc4OV9idGNfd2xfaW5mbyAqd2wgPSBcXHUwMDI2YnRjLVxcdTAwM2VjeC53bDtcXG4tXFx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFxcdTAwMjZjeC1cXHUwMDNlYnQ7XFxuK1xcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcXHUwMDI2Y3gtXFx1MDAzZWJ0MDtcXG4gXFx0c3RydWN0IHJ0dzg5X2J0Y193bF9kYmNjX2luZm8gKndsX2RpbmZvID0gXFx1MDAyNndsLVxcdTAwM2VkYmNjX2luZm87XFxuIFxcdHU4IGdudF93bF9jdHJsLCBnbnRfYnRfY3RybCwgcGx0X2N0cmwsIGksIGIyZyA9IDA7XFxuIFxcdGJvb2wgZGJjY19jaGcgPSBmYWxzZTtcXG5AQCAtNDYwNyw3ICs0NzMxLDcgQEAgc3RhdGljIHZvaWQgX3NldF9hbnRfdjEoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBib29sIGZvcmNlX2V4ZWMsXFxuIHtcXG4gXFx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXFx1MDAyNnJ0d2Rldi1cXHUwMDNlYnRjO1xcbiBcXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX2luZm8gKndsID0gXFx1MDAyNmJ0Yy1cXHUwMDNlY3gud2w7XFxuLVxcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcXHUwMDI2YnRjLVxcdTAwM2VjeC5idDtcXG4rXFx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFxcdTAwMjZidGMtXFx1MDAzZWN4LmJ0MDtcXG4gXFx0c3RydWN0IHJ0dzg5X2J0Y193bF9yb2xlX2luZm9fdjggKndsX3JpbmZvID0gXFx1MDAyNndsLVxcdTAwM2Vyb2xlX2luZm9fdjg7XFxuIFxcdHUzMiBhbnRfcGF0aF90eXBlID0gcnR3ODlfZ2V0X2FudHBhdGhfdHlwZShwaHlfbWFwLCB0eXBlKTtcXG4gXFx0c3RydWN0IHJ0dzg5X2J0Y193bF9kYmNjX2luZm8gKndsX2RpbmZvID0gXFx1MDAyNndsLVxcdTAwM2VkYmNjX2luZm87XFxuQEAgLTQ3NDYsNyArNDg3MCw3IEBAIHN0YXRpYyB2b2lkIF9hY3Rpb25fd2xfb2ZmKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggbW9kZSlcXG4gXFx0aWYgKG1vZGUgPT0gQlRDX1dMSU5LXzVHKSB7XFxuIFxcdFxcdF9zZXRfcG9saWN5KHJ0d2RldiwgQlRDX0NYUF9PRkZfRVEwLCBCVENfQUNUX1dMX09GRik7XFxuIFxcdH0gZWxzZSBpZiAod2wtXFx1MDAzZXN0YXR1cy5tYXAubHBzID09IEJUQ19MUFNfUkZfT04pIHtcXG4tXFx0XFx0aWYgKGJ0Yy1cXHUwMDNlY3guYnQubGlua19pbmZvLmEyZHBfZGVzYy5hY3RpdmUpXFxuK1xcdFxcdGlmIChidGMtXFx1MDAzZWN4LmJ0MC5saW5rX2luZm8uYTJkcF9kZXNjLmFjdGl2ZSlcXG4gXFx0XFx0XFx0X3NldF9wb2xpY3kocnR3ZGV2LCBCVENfQ1hQX09GRl9CVCwgQlRDX0FDVF9XTF9PRkYpO1xcbiBcXHRcXHRlbHNlXFxuIFxcdFxcdFxcdF9zZXRfcG9saWN5KHJ0d2RldiwgQlRDX0NYUF9PRkZfQldCMSwgQlRDX0FDVF9XTF9PRkYpO1xcbkBAIC00Nzg2LDcgKzQ5MTAsNyBAQCBzdGF0aWMgdm9pZCBfYWN0aW9uX2J0X29mZihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuIHN0YXRpYyB2b2lkIF9hY3Rpb25fYnRfaWRsZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuIHtcXG4gXFx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXFx1MDAyNnJ0d2Rldi1cXHUwMDNlYnRjO1xcbi1cXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2xpbmtfaW5mbyAqYiA9IFxcdTAwMjZidGMtXFx1MDAzZWN4LmJ0LmxpbmtfaW5mbztcXG4rXFx0c3RydWN0IHJ0dzg5X2J0Y19idF9saW5rX2luZm8gKmIgPSBcXHUwMDI2YnRjLVxcdTAwM2VjeC5idDAubGlua19pbmZvO1xcbiBcXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX2luZm8gKndsID0gXFx1MDAyNmJ0Yy1cXHUwMDNlY3gud2w7XFxuIFxcbiBcXHRfc2V0X2FudChydHdkZXYsIE5NX0VYRUMsIEJUQ19QSFlfQUxMLCBCVENfQU5UX1cyRyk7XFxuQEAgLTQ4MzQsNyArNDk1OCw3IEBAIHN0YXRpYyB2b2lkIF9hY3Rpb25fYnRfaGZwKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG4gXFx0XFx0aWYgKGJ0Yy1cXHUwMDNlY3gud2wuc3RhdHVzLm1hcC5fNHdheSkge1xcbiBcXHRcXHRcXHRfc2V0X3BvbGljeShydHdkZXYsIEJUQ19DWFBfT0ZGX1dMLCBCVENfQUNUX0JUX0hGUCk7XFxuIFxcdFxcdH0gZWxzZSBpZiAod2wtXFx1MDAzZXN0YXR1cy5tYXAudHJhZmZpY19kaXIgXFx1MDAyNiBCSVQoUlRXODlfVEZDX1VMKSkge1xcbi1cXHRcXHRcXHRidGMtXFx1MDAzZWN4LmJ0LnNjYW5fcnhfbG93X3ByaSA9IHRydWU7XFxuK1xcdFxcdFxcdGJ0Yy1cXHUwMDNlY3guYnQwLnNjYW5fcnhfbG93X3ByaSA9IHRydWU7XFxuIFxcdFxcdFxcdF9zZXRfcG9saWN5KHJ0d2RldiwgQlRDX0NYUF9PRkZfQldCMiwgQlRDX0FDVF9CVF9IRlApO1xcbiBcXHRcXHR9IGVsc2Uge1xcbiBcXHRcXHRcXHRfc2V0X3BvbGljeShydHdkZXYsIEJUQ19DWFBfT0ZGX0JXQjEsIEJUQ19BQ1RfQlRfSEZQKTtcXG5AQCAtNDg1NCw3ICs0OTc4LDcgQEAgc3RhdGljIHZvaWQgX2FjdGlvbl9idF9oaWQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbiBcXHRjb25zdCBzdHJ1Y3QgcnR3ODlfY2hpcF9pbmZvICpjaGlwID0gcnR3ZGV2LVxcdTAwM2VjaGlwO1xcbiBcXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2VidGM7XFxuIFxcdHN0cnVjdCBydHc4OV9idGNfd2xfaW5mbyAqd2wgPSBcXHUwMDI2YnRjLVxcdTAwM2VjeC53bDtcXG4tXFx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFxcdTAwMjZidGMtXFx1MDAzZWN4LmJ0O1xcbitcXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXFx1MDAyNmJ0Yy1cXHUwMDNlY3guYnQwO1xcbiBcXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2hpZF9kZXNjICpoaWQgPSBcXHUwMDI2YnQtXFx1MDAzZWxpbmtfaW5mby5oaWRfZGVzYztcXG4gXFx0dTE2IHBvbGljeV90eXBlID0gQlRDX0NYUF9PRkZfQlQ7XFxuIFxcbkBAIC00ODY0LDcgKzQ5ODgsNyBAQCBzdGF0aWMgdm9pZCBfYWN0aW9uX2J0X2hpZChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuIFxcdFxcdGlmICh3bC1cXHUwMDNlc3RhdHVzLm1hcC5fNHdheSkge1xcbiBcXHRcXHRcXHRwb2xpY3lfdHlwZSA9IEJUQ19DWFBfT0ZGX1dMO1xcbiBcXHRcXHR9IGVsc2UgaWYgKHdsLVxcdTAwM2VzdGF0dXMubWFwLnRyYWZmaWNfZGlyIFxcdTAwMjYgQklUKFJUVzg5X1RGQ19VTCkpIHtcXG4tXFx0XFx0XFx0YnRjLVxcdTAwM2VjeC5idC5zY2FuX3J4X2xvd19wcmkgPSB0cnVlO1xcbitcXHRcXHRcXHRidGMtXFx1MDAzZWN4LmJ0MC5zY2FuX3J4X2xvd19wcmkgPSB0cnVlO1xcbiBcXHRcXHRcXHRpZiAoaGlkLVxcdTAwM2V0eXBlIFxcdTAwMjYgQlRDX0hJRF9CTEUpXFxuIFxcdFxcdFxcdFxcdHBvbGljeV90eXBlID0gQlRDX0NYUF9PRkZfQldCMDtcXG4gXFx0XFx0XFx0ZWxzZVxcbkBAIC00OTU2LDcgKzUwODAsNyBAQCBzdGF0aWMgdm9pZCBfYWN0aW9uX2J0X2EyZHBzaW5rKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG4gc3RhdGljIHZvaWQgX2FjdGlvbl9idF9wYW4oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbiB7XFxuIFxcdHN0cnVjdCBydHc4OV9idGMgKmJ0YyA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZWJ0YztcXG4tXFx0c3RydWN0IHJ0dzg5X2J0Y19idF9saW5rX2luZm8gKmJ0X2xpbmZvID0gXFx1MDAyNmJ0Yy1cXHUwMDNlY3guYnQubGlua19pbmZvO1xcbitcXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2xpbmtfaW5mbyAqYnRfbGluZm8gPSBcXHUwMDI2YnRjLVxcdTAwM2VjeC5idDAubGlua19pbmZvO1xcbiBcXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2EyZHBfZGVzYyBhMmRwID0gYnRfbGluZm8tXFx1MDAzZWEyZHBfZGVzYztcXG4gXFx0c3RydWN0IHJ0dzg5X2J0Y19idF9wYW5fZGVzYyBwYW4gPSBidF9saW5mby1cXHUwMDNlcGFuX2Rlc2M7XFxuIFxcbkBAIC01MTY4LDcgKzUyOTIsNyBAQCBzdGF0aWMgdm9pZCBfc2V0X2J0Z19jdHJsKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG4gXFx0c3RydWN0IHJ0dzg5X2J0Y193bF9yb2xlX2luZm8gKndsX3JpbmZvX3YwID0gXFx1MDAyNndsLVxcdTAwM2Vyb2xlX2luZm87XFxuIFxcdGNvbnN0IHN0cnVjdCBydHc4OV9jaGlwX2luZm8gKmNoaXAgPSBydHdkZXYtXFx1MDAzZWNoaXA7XFxuIFxcdGNvbnN0IHN0cnVjdCBydHc4OV9idGNfdmVyICp2ZXIgPSBidGMtXFx1MDAzZXZlcjtcXG4tXFx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFxcdTAwMjZidGMtXFx1MDAzZWN4LmJ0O1xcbitcXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXFx1MDAyNmJ0Yy1cXHUwMDNlY3guYnQwO1xcbiBcXHRzdHJ1Y3QgcnR3ODlfYnRjX2RtICpkbSA9IFxcdTAwMjZidGMtXFx1MDAzZWRtO1xcbiBcXHRzdHJ1Y3QgX3dsX3JpbmZvX25vdyB3bF9yaW5mbztcXG4gXFx0dTMyIGlzX2J0ZyA9IEJUQ19CVEdDVFJMX0RJU0FCTEU7XFxuQEAgLTUyNDUsMTMgKzUzNjksMTMgQEAgc3RhdGljIHZvaWQgX3NldF93bF9wcmVhZ2NfY3RybChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuIHtcXG4gXFx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXFx1MDAyNnJ0d2Rldi1cXHUwMDNlYnRjO1xcbiBcXHRzdHJ1Y3QgcnR3ODlfYnRjX2ZidGNfb3V0c3JjX3NldF9pbmZvICpvX2luZm8gPSBcXHUwMDI2YnRjLVxcdTAwM2VkbS5vc3RfaW5mbztcXG4tXFx0c3RydWN0IHJ0dzg5X2J0Y19idF9saW5rX2luZm8gKmJ0X2xpbmZvID0gXFx1MDAyNmJ0Yy1cXHUwMDNlY3guYnQubGlua19pbmZvO1xcbitcXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2xpbmtfaW5mbyAqYnRfbGluZm8gPSBcXHUwMDI2YnRjLVxcdTAwM2VjeC5idDAubGlua19pbmZvO1xcbiBcXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX2luZm8gKndsID0gXFx1MDAyNmJ0Yy1cXHUwMDNlY3gud2w7XFxuIFxcdHN0cnVjdCBydHc4OV9idGNfd2xfcm9sZV9pbmZvX3YyICpyaW5mb192MiA9IFxcdTAwMjZ3bC1cXHUwMDNlcm9sZV9pbmZvX3YyO1xcbiBcXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX3JvbGVfaW5mb192NyAqcmluZm9fdjcgPSBcXHUwMDI2d2wtXFx1MDAzZXJvbGVfaW5mb192NztcXG4gXFx0c3RydWN0IHJ0dzg5X2J0Y193bF9yb2xlX2luZm9fdjggKnJpbmZvX3Y4ID0gXFx1MDAyNndsLVxcdTAwM2Vyb2xlX2luZm9fdjg7XFxuIFxcdGNvbnN0IHN0cnVjdCBydHc4OV9jaGlwX2luZm8gKmNoaXAgPSBydHdkZXYtXFx1MDAzZWNoaXA7XFxuLVxcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcXHUwMDI2YnRjLVxcdTAwM2VjeC5idDtcXG4rXFx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFxcdTAwMjZidGMtXFx1MDAzZWN4LmJ0MDtcXG4gXFx0c3RydWN0IHJ0dzg5X2J0Y19kbSAqZG0gPSBcXHUwMDI2YnRjLVxcdTAwM2VkbTtcXG4gXFx0dTggaXNfcHJlYWdjLCB2YWwsIGxpbmtfbW9kZSwgZGJjY18yZ19waHk7XFxuIFxcdHU4IHJvbGVfdmVyID0gcnR3ZGV2LVxcdTAwM2VidGMudmVyLVxcdTAwM2Vmd2xyb2xlO1xcbkBAIC01MjgxLDcgKzU0MDUsNyBAQCBzdGF0aWMgdm9pZCBfc2V0X3dsX3ByZWFnY19jdHJsKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG4gXFx0fSBlbHNlIGlmIChsaW5rX21vZGUgPT0gQlRDX1dMSU5LXzVHKSB7XFxuIFxcdFxcdGlzX3ByZWFnYyA9IEJUQ19QUkVBR0NfRElTQUJMRTtcXG4gXFx0fSBlbHNlIGlmIChsaW5rX21vZGUgPT0gQlRDX1dMSU5LX05PTElOSyB8fFxcbi1cXHRcXHQgYnRjLVxcdTAwM2VjeC5idC5saW5rX2luZm8ucHJvZmlsZV9jbnQubm93ID09IDApIHtcXG4rXFx0XFx0IGJ0Yy1cXHUwMDNlY3guYnQwLmxpbmtfaW5mby5wcm9maWxlX2NudC5ub3cgPT0gMCkge1xcbiBcXHRcXHRpc19wcmVhZ2MgPSBCVENfUFJFQUdDX0RJU0FCTEU7XFxuIFxcdH0gZWxzZSBpZiAoZG0tXFx1MDAzZXRkbWFfbm93LnR5cGUgIT0gQ1hURE1BX09GRiBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHQgIWJ0X2xpbmZvLVxcdTAwM2VoZnBfZGVzYy5leGlzdCBcXHUwMDI2XFx1MDAyNlxcbkBAIC01NDMxLDcgKzU1NTUsNyBAQCBzdGF0aWMgdm9pZCBfc2V0X3dsX3R4X2xpbWl0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG4gXFx0c3RydWN0IHJ0dzg5X2J0Y19jeCAqY3ggPSBcXHUwMDI2YnRjLVxcdTAwM2VjeDtcXG4gXFx0c3RydWN0IHJ0dzg5X2J0Y19kbSAqZG0gPSBcXHUwMDI2YnRjLVxcdTAwM2VkbTtcXG4gXFx0c3RydWN0IHJ0dzg5X2J0Y193bF9pbmZvICp3bCA9IFxcdTAwMjZjeC1cXHUwMDNld2w7XFxuLVxcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcXHUwMDI2Y3gtXFx1MDAzZWJ0O1xcbitcXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXFx1MDAyNmN4LVxcdTAwM2VidDA7XFxuIFxcdHN0cnVjdCBydHc4OV9idGNfYnRfbGlua19pbmZvICpiID0gXFx1MDAyNmJ0LVxcdTAwM2VsaW5rX2luZm87XFxuIFxcdHN0cnVjdCBydHc4OV9idGNfYnRfaGZwX2Rlc2MgKmhmcCA9IFxcdTAwMjZiLVxcdTAwM2VoZnBfZGVzYztcXG4gXFx0c3RydWN0IHJ0dzg5X2J0Y19idF9oaWRfZGVzYyAqaGlkID0gXFx1MDAyNmItXFx1MDAzZWhpZF9kZXNjO1xcbkBAIC01NTE4LDcgKzU2NDIsNyBAQCBzdGF0aWMgdm9pZCBfc2V0X2J0X3J4X2FnYyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuIFxcdHN0cnVjdCBydHc4OV9idGNfd2xfcm9sZV9pbmZvX3YyICp3bF9yaW5mb192MiA9IFxcdTAwMjZ3bC1cXHUwMDNlcm9sZV9pbmZvX3YyO1xcbiBcXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX3JvbGVfaW5mb192NyAqd2xfcmluZm9fdjcgPSBcXHUwMDI2d2wtXFx1MDAzZXJvbGVfaW5mb192NztcXG4gXFx0c3RydWN0IHJ0dzg5X2J0Y193bF9yb2xlX2luZm9fdjggKndsX3JpbmZvX3Y4ID0gXFx1MDAyNndsLVxcdTAwM2Vyb2xlX2luZm9fdjg7XFxuLVxcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcXHUwMDI2YnRjLVxcdTAwM2VjeC5idDtcXG4rXFx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFxcdTAwMjZidGMtXFx1MDAzZWN4LmJ0MDtcXG4gXFx0Ym9vbCBidF9oaV9sbmFfcnggPSBmYWxzZTtcXG4gXFx0dTggbW9kZTtcXG4gXFxuQEAgLTU1NDcsNyArNTY3MSw3IEBAIHN0YXRpYyB2b2lkIF9zZXRfYnRfcnhfYWdjKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG4gc3RhdGljIHZvaWQgX3NldF9idF9yeF9zY2FuX3ByaShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuIHtcXG4gXFx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXFx1MDAyNnJ0d2Rldi1cXHUwMDNlYnRjO1xcbi1cXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXFx1MDAyNmJ0Yy1cXHUwMDNlY3guYnQ7XFxuK1xcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcXHUwMDI2YnRjLVxcdTAwM2VjeC5idDA7XFxuIFxcbiBcXHRfd3JpdGVfc2NiZChydHdkZXYsIEJUQ19XU0NCX1JYU0NBTl9QUkksIChib29sKSghIWJ0LVxcdTAwM2VzY2FuX3J4X2xvd19wcmkpKTtcXG4gfVxcbkBAIC01NTg2LDcgKzU3MTAsNyBAQCBzdGF0aWMgdm9pZCBfYWN0aW9uX2NvbW1vbihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuIFxcdHN0cnVjdCBydHc4OV9idGNfd2xfaW5mbyAqd2wgPSBcXHUwMDI2YnRjLVxcdTAwM2VjeC53bDtcXG4gXFx0c3RydWN0IHJ0dzg5X2J0Y193bF9yb2xlX2luZm9fdjggKnJpbmZvX3Y4ID0gXFx1MDAyNndsLVxcdTAwM2Vyb2xlX2luZm9fdjg7XFxuIFxcdHN0cnVjdCBydHc4OV9idGNfd2xfc21hcCAqd2xfc21hcCA9IFxcdTAwMjZ3bC1cXHUwMDNlc3RhdHVzLm1hcDtcXG4tXFx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFxcdTAwMjZidGMtXFx1MDAzZWN4LmJ0O1xcbitcXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXFx1MDAyNmJ0Yy1cXHUwMDNlY3guYnQwO1xcbiBcXHRzdHJ1Y3QgcnR3ODlfYnRjX2RtICpkbSA9IFxcdTAwMjZidGMtXFx1MDAzZWRtO1xcbiBcXHR1MzIgYnRfcm9tX2NvZGVfaWQsIGJ0X2Z3X3ZlcjtcXG4gXFxuQEAgLTU2MjYsNyArNTc1MCw3IEBAIHN0YXRpYyB2b2lkIF9hY3Rpb25fY29tbW9uKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG4gXFx0XFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQlRDLCBcXFwiW0JUQ10sIHdyaXRlIHNjYmQ6IDB4JTA4eFxcXFxuXFxcIixcXG4gXFx0XFx0XFx0ICAgIHdsLVxcdTAwM2VzY2JkKTtcXG4gXFx0XFx0d2wtXFx1MDAzZXNjYmRfY2hhbmdlID0gZmFsc2U7XFxuLVxcdFxcdGJ0Yy1cXHUwMDNlY3guY250X3dsW0JUQ19XQ05UX1NDQkRVUERBVEVdKys7XFxuK1xcdFxcdHdsLVxcdTAwM2V3Y250W0JUQ19XQ05UX1NDQkRVUERBVEVdKys7XFxuIFxcdH1cXG4gXFxuIFxcdGlmIChidGMtXFx1MDAzZXZlci1cXHUwMDNlZmN4b3NpKSB7XFxuQEAgLTU2MzgsMTQgKzU3NjIsMTUgQEAgc3RhdGljIHZvaWQgX2FjdGlvbl9jb21tb24oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbiBcXHRcXHRcXHRfZndfc2V0X2Rydl9pbmZvKHJ0d2RldiwgQ1hEUlZJTkZPX09TSSk7XFxuIFxcdFxcdH1cXG4gXFx0fVxcbi1cXHRidGMtXFx1MDAzZWRtLnRkbWFfaW5zdGFudF9leGN1dGUgPSAwO1xcbitcXHRkbS1cXHUwMDNldGRtYV9pbnN0YW50X2V4Y3V0ZSA9IDA7XFxuK1xcdGRtLVxcdTAwM2VscHNfY3RybF9jaGFuZ2UgPSBmYWxzZTtcXG4gXFx0d2wtXFx1MDAzZXB0YV9yZWdfbWFjX2NoZyA9IGZhbHNlO1xcbiB9XFxuIFxcbiBzdGF0aWMgdm9pZCBfYWN0aW9uX2J5X2J0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG4ge1xcbiBcXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2VidGM7XFxuLVxcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcXHUwMDI2YnRjLVxcdTAwM2VjeC5idDtcXG4rXFx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFxcdTAwMjZidGMtXFx1MDAzZWN4LmJ0MDtcXG4gXFx0c3RydWN0IHJ0dzg5X2J0Y19idF9saW5rX2luZm8gKmJ0X2xpbmZvID0gXFx1MDAyNmJ0LVxcdTAwM2VsaW5rX2luZm87XFxuIFxcdHN0cnVjdCBydHc4OV9idGNfYnRfaGlkX2Rlc2MgaGlkID0gYnRfbGluZm8tXFx1MDAzZWhpZF9kZXNjO1xcbiBcXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2EyZHBfZGVzYyBhMmRwID0gYnRfbGluZm8tXFx1MDAzZWEyZHBfZGVzYztcXG5AQCAtNTc0Miw3ICs1ODY3LDcgQEAgc3RhdGljIHZvaWQgX2FjdGlvbl93bF8yNWdfbWNjKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG4gXFx0XFx0XFx0cG9saWN5X3R5cGUgPSBCVENfQ1hQX09GRkVfV0w7XFxuIFxcdFxcdGVsc2UgaWYgKGJ0Yy1cXHUwMDNlY3gud2wuc3RhdHVzLnZhbCBcXHUwMDI2IGJ0Y19zY2FubmluZ19tYXAudmFsKVxcbiBcXHRcXHRcXHRwb2xpY3lfdHlwZSA9IEJUQ19DWFBfT0ZGRV8yR0JXTUlYQjtcXG4tXFx0XFx0ZWxzZSBpZiAoYnRjLVxcdTAwM2VjeC5idC5saW5rX2luZm8uc3RhdHVzLm1hcC5jb25uZWN0ID09IDApXFxuK1xcdFxcdGVsc2UgaWYgKGJ0Yy1cXHUwMDNlY3guYnQwLmxpbmtfaW5mby5zdGF0dXMubWFwLmNvbm5lY3QgPT0gMClcXG4gXFx0XFx0XFx0cG9saWN5X3R5cGUgPSBCVENfQ1hQX09GRkVfMkdJU09CO1xcbiBcXHRcXHRlbHNlXFxuIFxcdFxcdFxcdHBvbGljeV90eXBlID0gQlRDX0NYUF9PRkZFXzJHQldJU09CO1xcbkBAIC01Nzg2LDcgKzU5MTEsNyBAQCBzdGF0aWMgdm9pZCBfYWN0aW9uX3dsXzJnX21jYyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuIFxcdF9zZXRfYW50KHJ0d2RldiwgTk1fRVhFQywgQlRDX1BIWV9BTEwsIEJUQ19BTlRfVzJHKTtcXG4gXFxuIFxcdGlmIChidGMtXFx1MDAzZWFudF90eXBlID09IEJUQ19BTlRfU0hBUkVEKSB7IC8qIHNoYXJlZC1hbnRlbm5hICovXFxuLVxcdFxcdGlmIChidGMtXFx1MDAzZWN4LmJ0LmxpbmtfaW5mby5wcm9maWxlX2NudC5ub3cgPT0gMClcXG4rXFx0XFx0aWYgKGJ0Yy1cXHUwMDNlY3guYnQwLmxpbmtfaW5mby5wcm9maWxlX2NudC5ub3cgPT0gMClcXG4gXFx0XFx0XFx0X3NldF9wb2xpY3kocnR3ZGV2LCBCVENfQ1hQX09GRkVfREVGMixcXG4gXFx0XFx0XFx0XFx0ICAgIEJUQ19BQ1RfV0xfMkdfTUNDKTtcXG4gXFx0XFx0ZWxzZVxcbkBAIC01ODA0LDcgKzU5MjksNyBAQCBzdGF0aWMgdm9pZCBfYWN0aW9uX3dsXzJnX3NjYyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuIFxcdF9zZXRfYW50KHJ0d2RldiwgTk1fRVhFQywgQlRDX1BIWV9BTEwsIEJUQ19BTlRfVzJHKTtcXG4gXFxuIFxcdGlmIChidGMtXFx1MDAzZWFudF90eXBlID09IEJUQ19BTlRfU0hBUkVEKSB7IC8qIHNoYXJlZC1hbnRlbm5hICovXFxuLVxcdFxcdGlmIChidGMtXFx1MDAzZWN4LmJ0LmxpbmtfaW5mby5wcm9maWxlX2NudC5ub3cgPT0gMClcXG4rXFx0XFx0aWYgKGJ0Yy1cXHUwMDNlY3guYnQwLmxpbmtfaW5mby5wcm9maWxlX2NudC5ub3cgPT0gMClcXG4gXFx0XFx0XFx0X3NldF9wb2xpY3kocnR3ZGV2LFxcbiBcXHRcXHRcXHRcXHQgICAgQlRDX0NYUF9PRkZFX0RFRjIsIEJUQ19BQ1RfV0xfMkdfU0NDKTtcXG4gXFx0XFx0ZWxzZVxcbkBAIC01ODE5LDcgKzU5NDQsNyBAQCBzdGF0aWMgdm9pZCBfYWN0aW9uX3dsXzJnX3NjY192MShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuIHtcXG4gXFx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXFx1MDAyNnJ0d2Rldi1cXHUwMDNlYnRjO1xcbiBcXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX2luZm8gKndsID0gXFx1MDAyNmJ0Yy1cXHUwMDNlY3gud2w7XFxuLVxcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcXHUwMDI2YnRjLVxcdTAwM2VjeC5idDtcXG4rXFx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFxcdTAwMjZidGMtXFx1MDAzZWN4LmJ0MDtcXG4gXFx0c3RydWN0IHJ0dzg5X2J0Y19kbSAqZG0gPSBcXHUwMDI2YnRjLVxcdTAwM2VkbTtcXG4gXFx0c3RydWN0IHJ0dzg5X2J0Y193bF9yb2xlX2luZm9fdjEgKndsX3JpbmZvID0gXFx1MDAyNndsLVxcdTAwM2Vyb2xlX2luZm9fdjE7XFxuIFxcdHUxNiBwb2xpY3lfdHlwZSA9IEJUQ19DWFBfT0ZGX0JUO1xcbkBAIC01ODU2LDcgKzU5ODEsNyBAQCBzdGF0aWMgdm9pZCBfYWN0aW9uX3dsXzJnX3NjY192MShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuIFxcdFxcdFxcdFxcdGRtLVxcdTAwM2V3bF9zY2MuZWJ0X251bGwgPSAwO1xcbiBcXHRcXHRcXHRcXHRwb2xpY3lfdHlwZSA9IEJUQ19DWFBfT0ZGRV8yR0lTT0I7XFxuIFxcdFxcdFxcdH0gZWxzZSBpZiAoYnQtXFx1MDAzZWxpbmtfaW5mby5hMmRwX2Rlc2MuZXhpc3QgXFx1MDAyNlxcdTAwMjZcXG4tXFx0XFx0XFx0XFx0ICAgZHVyIFxcdTAwM2MgYnRjLVxcdTAwM2VidF9yZXFfbGVuKSB7XFxuK1xcdFxcdFxcdFxcdCAgIGR1ciBcXHUwMDNjIGJ0Yy1cXHUwMDNlYnRfcmVxX2xlbltSVFc4OV9QSFlfMF0pIHtcXG4gXFx0XFx0XFx0XFx0ZG0tXFx1MDAzZXdsX3NjYy5lYnRfbnVsbCA9IDE7IC8qIHR4IG51bGwgYXQgRUJUICovXFxuIFxcdFxcdFxcdFxcdHBvbGljeV90eXBlID0gQlRDX0NYUF9PRkZFXzJHQldNSVhCMjtcXG4gXFx0XFx0XFx0fSBlbHNlIGlmIChidC1cXHUwMDNlbGlua19pbmZvLmEyZHBfZGVzYy5leGlzdCB8fFxcbkBAIC01ODgxLDcgKzYwMDYsNyBAQCBzdGF0aWMgdm9pZCBfYWN0aW9uX3dsXzJnX3NjY192MihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuIHtcXG4gXFx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXFx1MDAyNnJ0d2Rldi1cXHUwMDNlYnRjO1xcbiBcXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX2luZm8gKndsID0gXFx1MDAyNmJ0Yy1cXHUwMDNlY3gud2w7XFxuLVxcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcXHUwMDI2YnRjLVxcdTAwM2VjeC5idDtcXG4rXFx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFxcdTAwMjZidGMtXFx1MDAzZWN4LmJ0MDtcXG4gXFx0c3RydWN0IHJ0dzg5X2J0Y19kbSAqZG0gPSBcXHUwMDI2YnRjLVxcdTAwM2VkbTtcXG4gXFx0c3RydWN0IHJ0dzg5X2J0Y193bF9yb2xlX2luZm9fdjIgKnJpbmZvX3YyID0gXFx1MDAyNndsLVxcdTAwM2Vyb2xlX2luZm9fdjI7XFxuIFxcdHN0cnVjdCBydHc4OV9idGNfd2xfcm9sZV9pbmZvX3Y3ICpyaW5mb192NyA9IFxcdTAwMjZ3bC1cXHUwMDNlcm9sZV9pbmZvX3Y3O1xcbkBAIC01OTI5LDcgKzYwNTQsNyBAQCBzdGF0aWMgdm9pZCBfYWN0aW9uX3dsXzJnX3NjY192MihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuIFxcdFxcdFxcdFxcdGRtLVxcdTAwM2V3bF9zY2MuZWJ0X251bGwgPSAwO1xcbiBcXHRcXHRcXHRcXHRwb2xpY3lfdHlwZSA9IEJUQ19DWFBfT0ZGRV8yR0lTT0I7XFxuIFxcdFxcdFxcdH0gZWxzZSBpZiAoYnQtXFx1MDAzZWxpbmtfaW5mby5hMmRwX2Rlc2MuZXhpc3QgXFx1MDAyNlxcdTAwMjZcXG4tXFx0XFx0XFx0XFx0ICAgZHVyIFxcdTAwM2MgYnRjLVxcdTAwM2VidF9yZXFfbGVuKSB7XFxuK1xcdFxcdFxcdFxcdCAgIGR1ciBcXHUwMDNjIGJ0Yy1cXHUwMDNlYnRfcmVxX2xlbltSVFc4OV9QSFlfMF0pIHtcXG4gXFx0XFx0XFx0XFx0ZG0tXFx1MDAzZXdsX3NjYy5lYnRfbnVsbCA9IDE7IC8qIHR4IG51bGwgYXQgRUJUICovXFxuIFxcdFxcdFxcdFxcdHBvbGljeV90eXBlID0gQlRDX0NYUF9PRkZFXzJHQldNSVhCMjtcXG4gXFx0XFx0XFx0fSBlbHNlIGlmIChidC1cXHUwMDNlbGlua19pbmZvLmEyZHBfZGVzYy5leGlzdCB8fFxcbkBAIC01OTU0LDcgKzYwNzksNyBAQCBzdGF0aWMgdm9pZCBfYWN0aW9uX3dsXzJnX3NjY192OChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuIHtcXG4gXFx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXFx1MDAyNnJ0d2Rldi1cXHUwMDNlYnRjO1xcbiBcXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX2luZm8gKndsID0gXFx1MDAyNmJ0Yy1cXHUwMDNlY3gud2w7XFxuLVxcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcXHUwMDI2YnRjLVxcdTAwM2VjeC5idDtcXG4rXFx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFxcdTAwMjZidGMtXFx1MDAzZWN4LmJ0MDtcXG4gXFx0c3RydWN0IHJ0dzg5X2J0Y19kbSAqZG0gPSBcXHUwMDI2YnRjLVxcdTAwM2VkbTtcXG4gXFx0dTE2IHBvbGljeV90eXBlID0gQlRDX0NYUF9PRkZfQlQ7XFxuIFxcbkBAIC01OTgyLDcgKzYxMDcsNyBAQCBzdGF0aWMgdm9pZCBfYWN0aW9uX3dsXzJnX2FwKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG4gXFx0X3NldF9hbnQocnR3ZGV2LCBOTV9FWEVDLCBCVENfUEhZX0FMTCwgQlRDX0FOVF9XMkcpO1xcbiBcXG4gXFx0aWYgKGJ0Yy1cXHUwMDNlYW50X3R5cGUgPT0gQlRDX0FOVF9TSEFSRUQpIHtcXG4tXFx0XFx0aWYgKGJ0Yy1cXHUwMDNlY3guYnQubGlua19pbmZvLnByb2ZpbGVfY250Lm5vdyA9PSAwKVxcbitcXHRcXHRpZiAoYnRjLVxcdTAwM2VjeC5idDAubGlua19pbmZvLnByb2ZpbGVfY250Lm5vdyA9PSAwKVxcbiBcXHRcXHRcXHRfc2V0X3BvbGljeShydHdkZXYsIEJUQ19DWFBfT0ZGRV9ERUYyLFxcbiBcXHRcXHRcXHRcXHQgICAgQlRDX0FDVF9XTF8yR19BUCk7XFxuIFxcdFxcdGVsc2VcXG5AQCAtNTk5OSw3ICs2MTI0LDcgQEAgc3RhdGljIHZvaWQgX2FjdGlvbl93bF8yZ19nbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuIFxcdF9zZXRfYW50KHJ0d2RldiwgTk1fRVhFQywgQlRDX1BIWV9BTEwsIEJUQ19BTlRfVzJHKTtcXG4gXFxuIFxcdGlmIChidGMtXFx1MDAzZWFudF90eXBlID09IEJUQ19BTlRfU0hBUkVEKSB7IC8qIHNoYXJlZC1hbnRlbm5hICovXFxuLVxcdFxcdGlmIChidGMtXFx1MDAzZWN4LmJ0LmxpbmtfaW5mby5wcm9maWxlX2NudC5ub3cgPT0gMClcXG4rXFx0XFx0aWYgKGJ0Yy1cXHUwMDNlY3guYnQwLmxpbmtfaW5mby5wcm9maWxlX2NudC5ub3cgPT0gMClcXG4gXFx0XFx0XFx0X3NldF9wb2xpY3kocnR3ZGV2LFxcbiBcXHRcXHRcXHRcXHQgICAgQlRDX0NYUF9PRkZFX0RFRjIsIEJUQ19BQ1RfV0xfMkdfR08pO1xcbiBcXHRcXHRlbHNlXFxuQEAgLTYwMzAsNyArNjE1NSw3IEBAIHN0YXRpYyB2b2lkIF9hY3Rpb25fd2xfMmdfbmFuKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG4gXFx0X3NldF9hbnQocnR3ZGV2LCBOTV9FWEVDLCBCVENfUEhZX0FMTCwgQlRDX0FOVF9XMkcpO1xcbiBcXG4gXFx0aWYgKGJ0Yy1cXHUwMDNlYW50X3R5cGUgPT0gQlRDX0FOVF9TSEFSRUQpIHsgLyogc2hhcmVkLWFudGVubmEgKi9cXG4tXFx0XFx0aWYgKGJ0Yy1cXHUwMDNlY3guYnQubGlua19pbmZvLnByb2ZpbGVfY250Lm5vdyA9PSAwKVxcbitcXHRcXHRpZiAoYnRjLVxcdTAwM2VjeC5idDAubGlua19pbmZvLnByb2ZpbGVfY250Lm5vdyA9PSAwKVxcbiBcXHRcXHRcXHRfc2V0X3BvbGljeShydHdkZXYsXFxuIFxcdFxcdFxcdFxcdCAgICBCVENfQ1hQX09GRkVfREVGMiwgQlRDX0FDVF9XTF8yR19OQU4pO1xcbiBcXHRcXHRlbHNlXFxuQEAgLTYwNTQsNyArNjE3OSw3IEBAIHN0YXRpYyB1MzIgX3JlYWRfc2NiZChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuIFxcdHJ0dzg5X2RlYnVnKHJ0d2RldiwgUlRXODlfREJHX0JUQywgXFxcIltCVENdLCByZWFkIHNjYmQ6IDB4JTA4eFxcXFxuXFxcIixcXG4gXFx0XFx0ICAgIHNjYmRfdmFsKTtcXG4gXFxuLVxcdGJ0Yy1cXHUwMDNlY3guY250X2J0W0JUQ19CQ05UX1NDQkRSRUFEXSsrO1xcbitcXHRidGMtXFx1MDAzZWN4LmJ0MC5iY250W0JUQ19CQ05UX1NDQkRSRUFEXSsrO1xcbiBcXHRyZXR1cm4gc2NiZF92YWw7XFxuIH1cXG4gXFxuQEAgLTY4NzIsNyArNjk5Nyw3IEBAIHN0YXRpYyB2b2lkIF91cGRhdGVfd2xfaW5mb192NyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHJpZClcXG4gXFx0aWYgKHdsX3JpbmZvLVxcdTAwM2VkYmNjX2VuICE9IHJ0d2Rldi1cXHUwMDNlZGJjY19lbikge1xcbiBcXHRcXHR3bF9yaW5mby1cXHUwMDNlZGJjY19jaGcgPSAxO1xcbiBcXHRcXHR3bF9yaW5mby1cXHUwMDNlZGJjY19lbiA9IHJ0d2Rldi1cXHUwMDNlZGJjY19lbjtcXG4tXFx0XFx0YnRjLVxcdTAwM2VjeC5jbnRfd2xbQlRDX1dDTlRfREJDQ19DSEddKys7XFxuK1xcdFxcdHdsLVxcdTAwM2V3Y250W0JUQ19XQ05UX0RCQ0NfQ0hHXSsrO1xcbiBcXHR9XFxuIFxcbiBcXHRpZiAocnR3ZGV2LVxcdTAwM2VkYmNjX2VuKSB7XFxuQEAgLTczMTYsNyArNzQ0MSw3IEBAIHN0YXRpYyB2b2lkIF91cGRhdGVfd2xfaW5mb192OChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHJvbGVfaWQsIHU4IHJsaW5rX2lkXFxuIFxcbiBcXHRpZiAod2xfcmluZm8tXFx1MDAzZWRiY2NfZW4gIT0gZGJjY19lbl9vcmkpIHtcXG4gXFx0XFx0d2wtXFx1MDAzZWRiY2NfY2hnID0gdHJ1ZTtcXG4tXFx0XFx0YnRjLVxcdTAwM2VjeC5jbnRfd2xbQlRDX1dDTlRfREJDQ19DSEddKys7XFxuK1xcdFxcdHdsLVxcdTAwM2V3Y250W0JUQ19XQ05UX0RCQ0NfQ0hHXSsrO1xcbiBcXHR9XFxuIH1cXG4gXFxuQEAgLTczNDcsNyArNzQ3Miw3IEBAIHZvaWQgcnR3ODlfY29leF9idF9kZXZpbmZvX3dvcmsoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcGh5X3dvcmsgKndvcmspXFxuIFxcdFxcdFxcdFxcdFxcdFxcdGNvZXhfYnRfZGV2aW5mb193b3JrLndvcmspO1xcbiBcXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2VidGM7XFxuIFxcdHN0cnVjdCBydHc4OV9idGNfZG0gKmRtID0gXFx1MDAyNnJ0d2Rldi1cXHUwMDNlYnRjLmRtO1xcbi1cXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2EyZHBfZGVzYyAqYTJkcCA9IFxcdTAwMjZidGMtXFx1MDAzZWN4LmJ0LmxpbmtfaW5mby5hMmRwX2Rlc2M7XFxuK1xcdHN0cnVjdCBydHc4OV9idGNfYnRfYTJkcF9kZXNjICphMmRwID0gXFx1MDAyNmJ0Yy1cXHUwMDNlY3guYnQwLmxpbmtfaW5mby5hMmRwX2Rlc2M7XFxuIFxcbiBcXHRsb2NrZGVwX2Fzc2VydF93aXBoeSh3aXBoeSk7XFxuIFxcbkBAIC03MzczLDcgKzc0OTgsNyBAQCB2b2lkIHJ0dzg5X2NvZXhfcmZrX2Noa193b3JrKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXBoeV93b3JrICp3b3JrKVxcbiBcXHRpZiAod2wtXFx1MDAzZXJma19pbmZvLnN0YXRlICE9IEJUQ19XUkZLX1NUT1ApIHtcXG4gXFx0XFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQlRDLFxcbiBcXHRcXHRcXHQgICAgXFxcIltCVENdLCAlcygpOiBSRksgdGltZW91dFxcXFxuXFxcIiwgX19mdW5jX18pO1xcbi1cXHRcXHRjeC1cXHUwMDNlY250X3dsW0JUQ19XQ05UX1JGS19USU1FT1VUXSsrO1xcbitcXHRcXHR3bC1cXHUwMDNld2NudFtCVENfV0NOVF9SRktfVElNRU9VVF0rKztcXG4gXFx0XFx0ZG0tXFx1MDAzZWVycm9yLm1hcC53bF9yZmtfdGltZW91dCA9IHRydWU7XFxuIFxcdFxcdHdsLVxcdTAwM2VyZmtfaW5mby5zdGF0ZSA9IEJUQ19XUkZLX1NUT1A7XFxuIFxcdFxcdF93cml0ZV9zY2JkKHJ0d2RldiwgQlRDX1dTQ0JfV0xSRkssIGZhbHNlKTtcXG5AQCAtNzM4MywxNCArNzUwOCwxNiBAQCB2b2lkIHJ0dzg5X2NvZXhfcmZrX2Noa193b3JrKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXBoeV93b3JrICp3b3JrKVxcbiBcXG4gc3RhdGljIHZvaWQgX3VwZGF0ZV9idF9zY2JkKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgYm9vbCBvbmx5X3VwZGF0ZSlcXG4ge1xcbi1cXHRjb25zdCBzdHJ1Y3QgcnR3ODlfY2hpcF9pbmZvICpjaGlwID0gcnR3ZGV2LVxcdTAwM2VjaGlwO1xcbiBcXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2VidGM7XFxuLVxcdHN0cnVjdCBydHc4OV9idGNfY3ggKmN4ID0gXFx1MDAyNmJ0Yy1cXHUwMDNlY3g7XFxuLVxcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcXHUwMDI2YnRjLVxcdTAwM2VjeC5idDtcXG4tXFx0dTMyIHZhbDtcXG4tXFx0Ym9vbCBzdGF0dXNfY2hhbmdlID0gZmFsc2U7XFxuK1xcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcXHUwMDI2YnRjLVxcdTAwM2VjeC5idDA7XFxuK1xcdGNvbnN0IHN0cnVjdCBydHc4OV9idGNfdmVyICp2ZXIgPSBidGMtXFx1MDAzZXZlcjtcXG4rXFx0c3RydWN0IHJ0dzg5X2J0Y193bF9pbmZvICp3bCA9IFxcdTAwMjZidGMtXFx1MDAzZWN4LndsO1xcbitcXHRzdHJ1Y3QgcnR3ODlfYnRjX2RtICpkbSA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZWJ0Yy5kbTtcXG4rXFx0Ym9vbCBidF9saW5rX2NoYW5nZSA9IGZhbHNlLCBscHNfY3RybCA9IGZhbHNlO1xcbitcXHR1MzIgdmFsLCBhbnlfYnRfY29ubmVjdDtcXG4rXFx0dTggbW9kZTtcXG4gXFxuLVxcdGlmICghY2hpcC1cXHUwMDNlc2NiZClcXG4rXFx0aWYgKHJ0d2Rldi1cXHUwMDNlY2hpcC1cXHUwMDNlc2NiZClcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4gXFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQlRDLCBcXFwiW0JUQ10sICVzXFxcXG5cXFwiLCBfX2Z1bmNfXyk7XFxuQEAgLTc0MDMsMTggKzc1MzAsMzEgQEAgc3RhdGljIHZvaWQgX3VwZGF0ZV9idF9zY2JkKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgYm9vbCBvbmx5X3VwZGF0ZSlcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXHR9XFxuIFxcbitcXHRpZiAodmVyLVxcdTAwM2Vmd2xyb2xlID09IDApXFxuK1xcdFxcdG1vZGUgPSB3bC1cXHUwMDNlcm9sZV9pbmZvLmxpbmtfbW9kZTtcXG4rXFx0ZWxzZSBpZiAodmVyLVxcdTAwM2Vmd2xyb2xlID09IDEpXFxuK1xcdFxcdG1vZGUgPSB3bC1cXHUwMDNlcm9sZV9pbmZvX3YxLmxpbmtfbW9kZTtcXG4rXFx0ZWxzZSBpZiAodmVyLVxcdTAwM2Vmd2xyb2xlID09IDIpXFxuK1xcdFxcdG1vZGUgPSB3bC1cXHUwMDNlcm9sZV9pbmZvX3YyLmxpbmtfbW9kZTtcXG4rXFx0ZWxzZSBpZiAodmVyLVxcdTAwM2Vmd2xyb2xlID09IDcpXFxuK1xcdFxcdG1vZGUgPSB3bC1cXHUwMDNlcm9sZV9pbmZvX3Y3LmxpbmtfbW9kZTtcXG4rXFx0ZWxzZSBpZiAodmVyLVxcdTAwM2Vmd2xyb2xlID09IDgpXFxuK1xcdFxcdG1vZGUgPSB3bC1cXHUwMDNlcm9sZV9pbmZvX3Y4LmxpbmtfbW9kZTtcXG4rXFx0ZWxzZVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbiBcXHRpZiAoISh2YWwgXFx1MDAyNiBCVENfQlNDQl9PTikpXFxuIFxcdFxcdGJ0LVxcdTAwM2VlbmFibGUubm93ID0gMDtcXG4gXFx0ZWxzZVxcbiBcXHRcXHRidC1cXHUwMDNlZW5hYmxlLm5vdyA9IDE7XFxuIFxcbiBcXHRpZiAoYnQtXFx1MDAzZWVuYWJsZS5ub3cgIT0gYnQtXFx1MDAzZWVuYWJsZS5sYXN0KVxcbi1cXHRcXHRzdGF0dXNfY2hhbmdlID0gdHJ1ZTtcXG4rXFx0XFx0YnRfbGlua19jaGFuZ2UgPSB0cnVlO1xcbiBcXG4gXFx0LyogcmVzZXQgYnQgaW5mbyBpZiBidCByZS1lbmFibGUgKi9cXG4gXFx0aWYgKGJ0LVxcdTAwM2VlbmFibGUubm93IFxcdTAwMjZcXHUwMDI2ICFidC1cXHUwMDNlZW5hYmxlLmxhc3QpIHtcXG4gXFx0XFx0X3Jlc2V0X2J0Y192YXIocnR3ZGV2LCBCVENfUkVTRVRfQlRJTkZPKTtcXG4tXFx0XFx0Y3gtXFx1MDAzZWNudF9idFtCVENfQkNOVF9SRUVOQUJMRV0rKztcXG4rXFx0XFx0YnQtXFx1MDAzZWJjbnRbQlRDX0JDTlRfUkVFTkFCTEVdKys7XFxuIFxcdFxcdGJ0LVxcdTAwM2VlbmFibGUubm93ID0gMTtcXG4gXFx0fVxcbiBcXG5AQCAtNzQyMywzNSArNzU2Myw1OCBAQCBzdGF0aWMgdm9pZCBfdXBkYXRlX2J0X3NjYmQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBib29sIG9ubHlfdXBkYXRlKVxcbiBcXHRidC1cXHUwMDNlbWJ4X2F2bCA9ICEhKHZhbCBcXHUwMDI2IEJUQ19CU0NCX0FDVCk7XFxuIFxcbiBcXHRpZiAoYnQtXFx1MDAzZXdocWxfdGVzdCAhPSAhISh2YWwgXFx1MDAyNiBCVENfQlNDQl9XSFFMKSlcXG4tXFx0XFx0c3RhdHVzX2NoYW5nZSA9IHRydWU7XFxuK1xcdFxcdGJ0X2xpbmtfY2hhbmdlID0gdHJ1ZTtcXG4gXFxuIFxcdGJ0LVxcdTAwM2V3aHFsX3Rlc3QgPSAhISh2YWwgXFx1MDAyNiBCVENfQlNDQl9XSFFMKTtcXG4gXFx0YnQtXFx1MDAzZWJ0Z190eXBlID0gdmFsIFxcdTAwMjYgQlRDX0JTQ0JfQlRfUzEgPyBCVENfQlRfQlRHIDogQlRDX0JUX0FMT05FO1xcbiBcXHRidC1cXHUwMDNlbGlua19pbmZvLmEyZHBfZGVzYy5leGlzdCA9ICEhKHZhbCBcXHUwMDI2IEJUQ19CU0NCX0EyRFBfQUNUKTtcXG4rXFx0YnQtXFx1MDAzZWxpbmtfaW5mby5wYW5fZGVzYy5leGlzdCA9ICEhKHZhbCBcXHUwMDI2IEJUQ19CU0NCX1BBTl9BQ1QpO1xcbitcXHRidC1cXHUwMDNlbGlua19pbmZvLmhmcF9kZXNjLmV4aXN0ID0gISEodmFsIFxcdTAwMjYgQlRDX0JTQ0JfSEZQX0FDVCk7XFxuIFxcbiBcXHRidC1cXHUwMDNlbG5hX2NvbnN0cmFpbiA9ICEhKHZhbCBcXHUwMDI2IEJUQ19CU0NCX0JUX0xOQUIwKSArXFxuIFxcdFxcdFxcdCAgICAhISh2YWwgXFx1MDAyNiBCVENfQlNDQl9CVF9MTkFCMSkgKiAyICsgNDtcXG4gXFxuIFxcdC8qIGlmIHJmayBydW4gMS1cXHUwMDNlMCAqL1xcbiBcXHRpZiAoYnQtXFx1MDAzZXJma19pbmZvLm1hcC5ydW4gXFx1MDAyNlxcdTAwMjYgISh2YWwgXFx1MDAyNiBCVENfQlNDQl9SRktfUlVOKSlcXG4tXFx0XFx0c3RhdHVzX2NoYW5nZSA9IHRydWU7XFxuK1xcdFxcdGJ0X2xpbmtfY2hhbmdlID0gdHJ1ZTtcXG4gXFxuIFxcdGJ0LVxcdTAwM2VyZmtfaW5mby5tYXAucnVuICA9ICEhKHZhbCBcXHUwMDI2IEJUQ19CU0NCX1JGS19SVU4pO1xcbiBcXHRidC1cXHUwMDNlcmZrX2luZm8ubWFwLnJlcSA9ICEhKHZhbCBcXHUwMDI2IEJUQ19CU0NCX1JGS19SRVEpO1xcbiBcXHRidC1cXHUwMDNlaGlfbG5hX3J4ID0gISEodmFsIFxcdTAwMjYgQlRDX0JTQ0JfQlRfSElMTkEpO1xcbi1cXHRidC1cXHUwMDNlbGlua19pbmZvLnN0YXR1cy5tYXAuY29ubmVjdCA9ICEhKHZhbCBcXHUwMDI2IEJUQ19CU0NCX0JUX0NPTk5FQ1QpO1xcbi1cXHRpZiAoYnQtXFx1MDAzZXJ1bl9wYXRjaF9jb2RlICE9ICEhKHZhbCBcXHUwMDI2IEJUQ19CU0NCX1BBVENIX0NPREUpKVxcbi1cXHRcXHRzdGF0dXNfY2hhbmdlID0gdHJ1ZTtcXG4rXFx0YW55X2J0X2Nvbm5lY3QgPSAhISh2YWwgXFx1MDAyNiBCVENfQlNDQl9CVF9DT05ORUNUKTtcXG4rXFxuK1xcdC8qIGlmIGNvbm5lY3QgY2hhbmdlICovXFxuK1xcdGlmIChidC1cXHUwMDNlbGlua19pbmZvLnN0YXR1cy5tYXAuY29ubmVjdCAhPSBhbnlfYnRfY29ubmVjdClcXG4rXFx0XFx0YnRfbGlua19jaGFuZ2UgPSB0cnVlO1xcbitcXG4rXFx0LyogaWYgc3BlY2lmaWMgcHJvZmlsZSBleGlzdCAqL1xcbitcXHRpZiAoKChidC1cXHUwMDNlbGlua19pbmZvLmEyZHBfZGVzYy5leGlzdCB8fCBidC1cXHUwMDNlbGlua19pbmZvLnBhbl9kZXNjLmV4aXN0IHx8XFxuK1xcdCAgICAgIGJ0LVxcdTAwM2VsaW5rX2luZm8uaGZwX2Rlc2MuZXhpc3QpIFxcdTAwMjZcXHUwMDI2IG1vZGUgPT0gQlRDX1dMSU5LXzJHX1NUQSkgfHxcXG4rXFx0ICAgIGJ0LVxcdTAwM2V3aHFsX3Rlc3QpXFxuK1xcdFxcdGxwc19jdHJsID0gdHJ1ZTtcXG4rXFxuK1xcdGlmIChkbS1cXHUwMDNlbHBzX2N0cmxfc2NiZCAhPSBscHNfY3RybCkge1xcbitcXHRcXHRkbS1cXHUwMDNlbHBzX2N0cmxfc2NiZCA9IGxwc19jdHJsO1xcbitcXHRcXHRidF9saW5rX2NoYW5nZSA9IHRydWU7XFxuK1xcdFxcdGRtLVxcdTAwM2VscHNfY3RybF9jaGFuZ2UgPSB0cnVlO1xcbitcXHR9IGVsc2Uge1xcbitcXHRcXHRkbS1cXHUwMDNlbHBzX2N0cmxfY2hhbmdlID0gZmFsc2U7XFxuK1xcdH1cXG4rXFxuK1xcdGJ0LVxcdTAwM2VsaW5rX2luZm8uc3RhdHVzLm1hcC5jb25uZWN0ID0gYW55X2J0X2Nvbm5lY3Q7XFxuIFxcdGJ0LVxcdTAwM2VydW5fcGF0Y2hfY29kZSA9ICEhKHZhbCBcXHUwMDI2IEJUQ19CU0NCX1BBVENIX0NPREUpO1xcbiBcXG4tXFx0aWYgKCFvbmx5X3VwZGF0ZSBcXHUwMDI2XFx1MDAyNiBzdGF0dXNfY2hhbmdlKVxcbi1cXHRcXHRfcnVuX2NvZXgocnR3ZGV2LCBCVENfUlNOX1VQREFURV9CVF9TQ0JEKTtcXG4rXFx0aWYgKGJ0X2xpbmtfY2hhbmdlKSB7XFxuK1xcdFxcdHJ0dzg5X2RlYnVnKHJ0d2RldiwgUlRXODlfREJHX0JUQyxcXG4rXFx0XFx0XFx0ICAgIFxcXCJbQlRDXSwgJXM6IGJ0IHN0YXR1cyBjaGFuZ2UhIVxcXFxuXFxcIiwgX19mdW5jX18pO1xcbitcXHRcXHQvKiBUT0RPOiBOZWVkIHRvIG5vdGlmeSBkcml2ZXIgdG8gdXBkYXRlIEVYVC1DVFJMLUJULVNMT1QgKi9cXG4rXFx0fVxcbiB9XFxuIFxcbiAjZGVmaW5lIEJUQ19CVElORk9fUFdSX0xFTiA1XFxuIHN0YXRpYyB2b2lkIF91cGRhdGVfYnRfdHhwd3JfaW5mbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4ICpidWYsIHUzMiBsZW4pXFxuIHtcXG4tXFx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZWJ0Yy5jeC5idDtcXG4rXFx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZWJ0Yy5jeC5idDA7XFxuIFxcdHN0cnVjdCBydHc4OV9idGNfYnRfbGlua19pbmZvICpiID0gXFx1MDAyNmJ0LVxcdTAwM2VsaW5rX2luZm87XFxuIFxcbiBcXHRpZiAobGVuICE9IEJUQ19CVElORk9fUFdSX0xFTilcXG5AQCAtNzQ3MSwxNyArNzYzNCwxNyBAQCBzdGF0aWMgYm9vbCBfY2hrX3dsX3Jma19yZXF1ZXN0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG4ge1xcbiBcXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2VidGM7XFxuIFxcdHN0cnVjdCBydHc4OV9idGNfY3ggKmN4ID0gXFx1MDAyNmJ0Yy1cXHUwMDNlY3g7XFxuLVxcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcXHUwMDI2Y3gtXFx1MDAzZWJ0O1xcbitcXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXFx1MDAyNmN4LVxcdTAwM2VidDA7XFxuIFxcbiBcXHRfdXBkYXRlX2J0X3NjYmQocnR3ZGV2LCB0cnVlKTtcXG4gXFxuLVxcdGN4LVxcdTAwM2VjbnRfd2xbQlRDX1dDTlRfUkZLX1JFUV0rKztcXG4rXFx0Y3gtXFx1MDAzZXdsLndjbnRbQlRDX1dDTlRfUkZLX1JFUV0rKztcXG4gXFxuIFxcdGlmICgoYnQtXFx1MDAzZXJma19pbmZvLm1hcC5ydW4gfHwgYnQtXFx1MDAzZXJma19pbmZvLm1hcC5yZXEpIFxcdTAwMjZcXHUwMDI2XFxuIFxcdCAgICAhYnQtXFx1MDAzZXJma19pbmZvLm1hcC50aW1lb3V0KSB7XFxuLVxcdFxcdGN4LVxcdTAwM2VjbnRfd2xbQlRDX1dDTlRfUkZLX1JFSkVDVF0rKztcXG4rXFx0XFx0Y3gtXFx1MDAzZXdsLndjbnRbQlRDX1dDTlRfUkZLX1JFSkVDVF0rKztcXG4gXFx0fSBlbHNlIHtcXG4tXFx0XFx0Y3gtXFx1MDAzZWNudF93bFtCVENfV0NOVF9SRktfR09dKys7XFxuK1xcdFxcdGN4LVxcdTAwM2V3bC53Y250W0JUQ19XQ05UX1JGS19HT10rKztcXG4gXFx0XFx0cmV0dXJuIHRydWU7XFxuIFxcdH1cXG4gXFx0cmV0dXJuIGZhbHNlO1xcbkBAIC03NDk1LDcgKzc2NTgsNyBAQCB2b2lkIF9ydW5fY29leChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGVudW0gYnRjX3JlYXNvbl9hbmRfYWN0aW9uIHJlYXNvbilcXG4gXFx0c3RydWN0IHJ0dzg5X2J0Y19kbSAqZG0gPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2VidGMuZG07XFxuIFxcdHN0cnVjdCBydHc4OV9idGNfY3ggKmN4ID0gXFx1MDAyNmJ0Yy1cXHUwMDNlY3g7XFxuIFxcdHN0cnVjdCBydHc4OV9idGNfd2xfaW5mbyAqd2wgPSBcXHUwMDI2YnRjLVxcdTAwM2VjeC53bDtcXG4tXFx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFxcdTAwMjZidGMtXFx1MDAzZWN4LmJ0O1xcbitcXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXFx1MDAyNmJ0Yy1cXHUwMDNlY3guYnQwO1xcbiBcXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX3JvbGVfaW5mbyAqd2xfcmluZm8gPSBcXHUwMDI2d2wtXFx1MDAzZXJvbGVfaW5mbztcXG4gXFx0c3RydWN0IHJ0dzg5X2J0Y193bF9yb2xlX2luZm9fdjEgKndsX3JpbmZvX3YxID0gXFx1MDAyNndsLVxcdTAwM2Vyb2xlX2luZm9fdjE7XFxuIFxcdHN0cnVjdCBydHc4OV9idGNfd2xfcm9sZV9pbmZvX3YyICp3bF9yaW5mb192MiA9IFxcdTAwMjZ3bC1cXHUwMDNlcm9sZV9pbmZvX3YyO1xcbkBAIC03NTYwLDcgKzc3MjMsOCBAQCB2b2lkIF9ydW5fY29leChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGVudW0gYnRjX3JlYXNvbl9hbmRfYWN0aW9uIHJlYXNvbilcXG4gXFx0fVxcbiBcXG4gXFx0aWYgKHdsLVxcdTAwM2VzdGF0dXMubWFwLnJmX29mZl9wcmUgPT0gd2wtXFx1MDAzZXN0YXR1cy5tYXAucmZfb2ZmIFxcdTAwMjZcXHUwMDI2XFxuLVxcdCAgICB3bC1cXHUwMDNlc3RhdHVzLm1hcC5scHNfcHJlID09IHdsLVxcdTAwM2VzdGF0dXMubWFwLmxwcykge1xcbitcXHQgICAgd2wtXFx1MDAzZXN0YXR1cy5tYXAubHBzX3ByZSA9PSB3bC1cXHUwMDNlc3RhdHVzLm1hcC5scHMgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgICFkbS1cXHUwMDNlbHBzX2N0cmxfY2hhbmdlIFxcdTAwMjZcXHUwMDI2ICFkbS1cXHUwMDNlbHBzX2N0cmxfc2NiZCkge1xcbiBcXHRcXHRpZiAocmVhc29uID09IEJUQ19SU05fTlRGWV9QT1dFUk9GRiB8fFxcbiBcXHRcXHQgICAgcmVhc29uID09IEJUQ19SU05fTlRGWV9SQURJT19TVEFURSkge1xcbiBcXHRcXHRcXHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19CVEMsXFxuQEAgLTc1NzcsNiArNzc0MSw5IEBAIHZvaWQgX3J1bl9jb2V4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgZW51bSBidGNfcmVhc29uX2FuZF9hY3Rpb24gcmVhc29uKVxcbiBcXHRcXHR9XFxuIFxcdH1cXG4gXFxuK1xcdGlmIChyZWFzb24gPT0gQlRDX1JTTl9OVEZZX0lOSVQgfHwgcmVhc29uID09IEJUQ19SU05fTlRGWV9SQURJT19TVEFURSlcXG4rXFx0XFx0X3VwZGF0ZV9idF9zY2JkKHJ0d2RldiwgZmFsc2UpO1xcbitcXG4gXFx0ZG0tXFx1MDAzZWZyZWVydW4gPSBmYWxzZTtcXG4gXFx0ZG0tXFx1MDAzZWNudF9kbVtCVENfRENOVF9SVU5dKys7XFxuIFxcdGRtLVxcdTAwM2VmZGR0X3RyYWluID0gQlRDX0ZERFRfRElTQUJMRTtcXG5AQCAtNzU5Nyw3ICs3NzY0LDcgQEAgdm9pZCBfcnVuX2NvZXgoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBlbnVtIGJ0Y19yZWFzb25fYW5kX2FjdGlvbiByZWFzb24pXFxuIFxcdFxcdGdvdG8gZXhpdDtcXG4gXFx0fVxcbiBcXG4tXFx0aWYgKHdsLVxcdTAwM2VzdGF0dXMubWFwLnJmX29mZiB8fCB3bC1cXHUwMDNlc3RhdHVzLm1hcC5scHMgfHwgZG0tXFx1MDAzZWJ0X29ubHkpIHtcXG4rXFx0aWYgKHdsLVxcdTAwM2VzdGF0dXMubWFwLnJmX29mZiB8fCBkbS1cXHUwMDNlYnRfb25seSB8fCB3bC1cXHUwMDNlc3RhdHVzLm1hcC5scHMpIHtcXG4gXFx0XFx0X2FjdGlvbl93bF9vZmYocnR3ZGV2LCBtb2RlKTtcXG4gXFx0XFx0aWdub19idCA9IHRydWU7XFxuIFxcdFxcdGdvdG8gZXhpdDtcXG5AQCAtNzYwOCwxMiArNzc3NSwxMiBAQCB2b2lkIF9ydW5fY29leChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGVudW0gYnRjX3JlYXNvbl9hbmRfYWN0aW9uIHJlYXNvbilcXG4gXFx0XFx0Z290byBleGl0O1xcbiBcXHR9XFxuIFxcbi1cXHRpZiAoIWN4LVxcdTAwM2VidC5lbmFibGUubm93IFxcdTAwMjZcXHUwMDI2ICFjeC1cXHUwMDNlb3RoZXIudHlwZSkge1xcbitcXHRpZiAoIWN4LVxcdTAwM2VidDAuZW5hYmxlLm5vdyBcXHUwMDI2XFx1MDAyNiAhY3gtXFx1MDAzZWJ0X2V4dC5mdW5jX3R5cGUpIHtcXG4gXFx0XFx0X2FjdGlvbl9idF9vZmYocnR3ZGV2KTtcXG4gXFx0XFx0Z290byBleGl0O1xcbiBcXHR9XFxuIFxcbi1cXHRpZiAoY3gtXFx1MDAzZWJ0LndocWxfdGVzdCkge1xcbitcXHRpZiAoY3gtXFx1MDAzZWJ0MC53aHFsX3Rlc3QpIHtcXG4gXFx0XFx0X2FjdGlvbl9idF93aHFsKHJ0d2Rldik7XFxuIFxcdFxcdGdvdG8gZXhpdDtcXG4gXFx0fVxcbkBAIC03NzI5LDcgKzc4OTYsNyBAQCBzdGF0aWMgdm9pZCBfc2V0X2luaXRfaW5mbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuIFxcdFxcdGRtLVxcdTAwM2Vpbml0X2luZm8uaW5pdF92Ny53bF9vbmx5ID0gKHU4KWRtLVxcdTAwM2V3bF9vbmx5O1xcbiBcXHRcXHRkbS1cXHUwMDNlaW5pdF9pbmZvLmluaXRfdjcuYnRfb25seSA9ICh1OClkbS1cXHUwMDNlYnRfb25seTtcXG4gXFx0XFx0ZG0tXFx1MDAzZWluaXRfaW5mby5pbml0X3Y3LndsX2luaXRfb2sgPSAodTgpd2wtXFx1MDAzZXN0YXR1cy5tYXAuaW5pdF9vaztcXG4tXFx0XFx0ZG0tXFx1MDAzZWluaXRfaW5mby5pbml0X3Y3LmN4X290aGVyID0gYnRjLVxcdTAwM2VjeC5vdGhlci50eXBlO1xcbitcXHRcXHRkbS1cXHUwMDNlaW5pdF9pbmZvLmluaXRfdjcuY3hfb3RoZXIgPSBidGMtXFx1MDAzZWN4LmJ0X2V4dC5mdW5jX3R5cGU7XFxuIFxcdFxcdGRtLVxcdTAwM2Vpbml0X2luZm8uaW5pdF92Ny53bF9ndWFyZF9jaCA9IGNoaXAtXFx1MDAzZWFmaF9ndWFyZF9jaDtcXG4gXFx0XFx0ZG0tXFx1MDAzZWluaXRfaW5mby5pbml0X3Y3Lm1vZHVsZSA9IGJ0Yy1cXHUwMDNlbWRpbmZvLm1kX3Y3O1xcbiBcXHR9IGVsc2Uge1xcbkBAIC03NzM3LDcgKzc5MDQsNyBAQCBzdGF0aWMgdm9pZCBfc2V0X2luaXRfaW5mbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuIFxcdFxcdGRtLVxcdTAwM2Vpbml0X2luZm8uaW5pdC5idF9vbmx5ID0gKHU4KWRtLVxcdTAwM2VidF9vbmx5O1xcbiBcXHRcXHRkbS1cXHUwMDNlaW5pdF9pbmZvLmluaXQud2xfaW5pdF9vayA9ICh1OCl3bC1cXHUwMDNlc3RhdHVzLm1hcC5pbml0X29rO1xcbiBcXHRcXHRkbS1cXHUwMDNlaW5pdF9pbmZvLmluaXQuZGJjY19lbiA9IHJ0d2Rldi1cXHUwMDNlZGJjY19lbjtcXG4tXFx0XFx0ZG0tXFx1MDAzZWluaXRfaW5mby5pbml0LmN4X290aGVyID0gYnRjLVxcdTAwM2VjeC5vdGhlci50eXBlO1xcbitcXHRcXHRkbS1cXHUwMDNlaW5pdF9pbmZvLmluaXQuY3hfb3RoZXIgPSBidGMtXFx1MDAzZWN4LmJ0X2V4dC5mdW5jX3R5cGU7XFxuIFxcdFxcdGRtLVxcdTAwM2Vpbml0X2luZm8uaW5pdC53bF9ndWFyZF9jaCA9IGNoaXAtXFx1MDAzZWFmaF9ndWFyZF9jaDtcXG4gXFx0XFx0ZG0tXFx1MDAzZWluaXRfaW5mby5pbml0Lm1vZHVsZSA9IGJ0Yy1cXHUwMDNlbWRpbmZvLm1kO1xcbiBcXHR9XFxuQEAgLTc3ODEsNyArNzk0OCw2IEBAIHZvaWQgcnR3ODlfYnRjX250ZnlfaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IG1vZGUpXFxuIFxcbiBcXHRfd3JpdGVfc2NiZChydHdkZXYsXFxuIFxcdFxcdCAgICBCVENfV1NDQl9BQ1RJVkUgfCBCVENfV1NDQl9PTiB8IEJUQ19XU0NCX0JUTE9HLCB0cnVlKTtcXG4tXFx0X3VwZGF0ZV9idF9zY2JkKHJ0d2RldiwgdHJ1ZSk7XFxuIFxcdGlmIChydHc4OV9tYWNfZ2V0X2N0cmxfcGF0aChydHdkZXYpKSB7XFxuIFxcdFxcdHJ0dzg5X2RlYnVnKHJ0d2RldiwgUlRXODlfREJHX0JUQyxcXG4gXFx0XFx0XFx0ICAgIFxcXCJbQlRDXSwgJXMoKTogUFRBIG93bmVyIHdhcm5pbmchIVxcXFxuXFxcIixcXG5AQCAtNzc5MCw3ICs3OTU2LDcgQEAgdm9pZCBydHc4OV9idGNfbnRmeV9pbml0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggbW9kZSlcXG4gXFx0fVxcbiBcXG4gXFx0X3NldF9pbml0X2luZm8ocnR3ZGV2KTtcXG4tXFx0X3NldF93bF90eF9wb3dlcihydHdkZXYsIFJUVzg5X0JUQ19XTF9ERUZfVFhfUFdSKTtcXG4rXFx0X3NldF93bF90eF9wb3dlcihydHdkZXYsIFJUVzg5X0JUQ19XTF9ERUZfVFhfUFdSLCBSVFc4OV9QSFlfMCk7XFxuIFxcdGJ0Y19md19zZXRfbW9ucmVnKHJ0d2Rldik7XFxuIFxcdHJ0dzg5X2J0Y19md19zZXRfc2xvdHMocnR3ZGV2KTtcXG4gXFx0X2Z3X3NldF9kcnZfaW5mbyhydHdkZXYsIENYRFJWSU5GT19JTklUKTtcXG5AQCAtNzg3Nyw3ICs4MDQzLDcgQEAgdm9pZCBydHc4OV9idGNfbnRmeV9zcGVjaWZpY19wYWNrZXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbiBcXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2VidGM7XFxuIFxcdHN0cnVjdCBydHc4OV9idGNfY3ggKmN4ID0gXFx1MDAyNmJ0Yy1cXHUwMDNlY3g7XFxuIFxcdHN0cnVjdCBydHc4OV9idGNfd2xfaW5mbyAqd2wgPSBcXHUwMDI2Y3gtXFx1MDAzZXdsO1xcbi1cXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2xpbmtfaW5mbyAqYiA9IFxcdTAwMjZjeC1cXHUwMDNlYnQubGlua19pbmZvO1xcbitcXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2xpbmtfaW5mbyAqYiA9IFxcdTAwMjZjeC1cXHUwMDNlYnQwLmxpbmtfaW5mbztcXG4gXFx0c3RydWN0IHJ0dzg5X2J0Y19idF9oZnBfZGVzYyAqaGZwID0gXFx1MDAyNmItXFx1MDAzZWhmcF9kZXNjO1xcbiBcXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2hpZF9kZXNjICpoaWQgPSBcXHUwMDI2Yi1cXHUwMDNlaGlkX2Rlc2M7XFxuIFxcdHUzMiBjbnQ7XFxuQEAgLTc4ODYsMTQgKzgwNTIsMTQgQEAgdm9pZCBydHc4OV9idGNfbnRmeV9zcGVjaWZpY19wYWNrZXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbiBcXG4gXFx0c3dpdGNoIChwa3RfdHlwZSkge1xcbiBcXHRjYXNlIFBBQ0tFVF9ESENQOlxcbi1cXHRcXHRjbnQgPSArK2N4LVxcdTAwM2VjbnRfd2xbQlRDX1dDTlRfREhDUF07XFxuK1xcdFxcdGNudCA9ICsrd2wtXFx1MDAzZXdjbnRbQlRDX1dDTlRfREhDUF07XFxuIFxcdFxcdHJ0dzg5X2RlYnVnKHJ0d2RldiwgUlRXODlfREJHX0JUQyxcXG4gXFx0XFx0XFx0ICAgIFxcXCJbQlRDXSwgJXMoKTogREhDUCBjbnQ9JWRcXFxcblxcXCIsIF9fZnVuY19fLCBjbnQpO1xcbiBcXHRcXHR3bC1cXHUwMDNlc3RhdHVzLm1hcC5jb25uZWN0aW5nID0gdHJ1ZTtcXG4gXFx0XFx0ZGVsYXlfd29yayA9IHRydWU7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIFBBQ0tFVF9FQVBPTDpcXG4tXFx0XFx0Y250ID0gKytjeC1cXHUwMDNlY250X3dsW0JUQ19XQ05UX0VBUE9MXTtcXG4rXFx0XFx0Y250ID0gKyt3bC1cXHUwMDNld2NudFtCVENfV0NOVF9FQVBPTF07XFxuIFxcdFxcdHJ0dzg5X2RlYnVnKHJ0d2RldiwgUlRXODlfREJHX0JUQyxcXG4gXFx0XFx0XFx0ICAgIFxcXCJbQlRDXSwgJXMoKTogRUFQT0wgY250PSVkXFxcXG5cXFwiLCBfX2Z1bmNfXywgY250KTtcXG4gXFx0XFx0d2wtXFx1MDAzZXN0YXR1cy5tYXAuXzR3YXkgPSB0cnVlO1xcbkBAIC03OTAyLDcgKzgwNjgsNyBAQCB2b2lkIHJ0dzg5X2J0Y19udGZ5X3NwZWNpZmljX3BhY2tldChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuIFxcdFxcdFxcdGRlbGF5IC89IDI7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIFBBQ0tFVF9FQVBPTF9FTkQ6XFxuLVxcdFxcdGNudCA9ICsrY3gtXFx1MDAzZWNudF93bFtCVENfV0NOVF9FQVBPTF07XFxuK1xcdFxcdGNudCA9ICsrd2wtXFx1MDAzZXdjbnRbQlRDX1dDTlRfRUFQT0xdO1xcbiBcXHRcXHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19CVEMsXFxuIFxcdFxcdFxcdCAgICBcXFwiW0JUQ10sICVzKCk6IEVBUE9MX0VuZCBjbnQ9JWRcXFxcblxcXCIsXFxuIFxcdFxcdFxcdCAgICBfX2Z1bmNfXywgY250KTtcXG5AQCAtNzkxMCw3ICs4MDc2LDcgQEAgdm9pZCBydHc4OV9idGNfbnRmeV9zcGVjaWZpY19wYWNrZXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbiBcXHRcXHR3aXBoeV9kZWxheWVkX3dvcmtfY2FuY2VsKHJ0d2Rldi1cXHUwMDNlaHctXFx1MDAzZXdpcGh5LCBcXHUwMDI2cnR3ZGV2LVxcdTAwM2Vjb2V4X2FjdDFfd29yayk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIFBBQ0tFVF9BUlA6XFxuLVxcdFxcdGNudCA9ICsrY3gtXFx1MDAzZWNudF93bFtCVENfV0NOVF9BUlBdO1xcbitcXHRcXHRjbnQgPSArK3dsLVxcdTAwM2V3Y250W0JUQ19XQ05UX0FSUF07XFxuIFxcdFxcdHJ0dzg5X2RlYnVnKHJ0d2RldiwgUlRXODlfREJHX0JUQyxcXG4gXFx0XFx0XFx0ICAgIFxcXCJbQlRDXSwgJXMoKTogQVJQIGNudD0lZFxcXFxuXFxcIiwgX19mdW5jX18sIGNudCk7XFxuIFxcdFxcdHJldHVybjtcXG5AQCAtNzk4Miw3ICs4MTQ4LDcgQEAgc3RhdGljIHU4IF91cGRhdGVfYnRfcnNzaV9sZXZlbChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHJzc2kpXFxuIHtcXG4gXFx0Y29uc3Qgc3RydWN0IHJ0dzg5X2NoaXBfaW5mbyAqY2hpcCA9IHJ0d2Rldi1cXHUwMDNlY2hpcDtcXG4gXFx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXFx1MDAyNnJ0d2Rldi1cXHUwMDNlYnRjO1xcbi1cXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXFx1MDAyNmJ0Yy1cXHUwMDNlY3guYnQ7XFxuK1xcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcXHUwMDI2YnRjLVxcdTAwM2VjeC5idDA7XFxuIFxcdHU4ICpyc3NpX3N0LCByc3NpX3RoLCByc3NpX2xldmVsID0gMDtcXG4gXFx0dTggaTtcXG4gXFxuQEAgLTgwMzIsNyArODE5OCw3IEBAIHN0YXRpYyB2b2lkIF91cGRhdGVfYnRfaW5mbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4ICpidWYsIHUzMiBsZW4pXFxuIFxcdGNvbnN0IHN0cnVjdCBydHc4OV9jaGlwX2luZm8gKmNoaXAgPSBydHdkZXYtXFx1MDAzZWNoaXA7XFxuIFxcdHN0cnVjdCBydHc4OV9idGMgKmJ0YyA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZWJ0YztcXG4gXFx0c3RydWN0IHJ0dzg5X2J0Y19jeCAqY3ggPSBcXHUwMDI2YnRjLVxcdTAwM2VjeDtcXG4tXFx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFxcdTAwMjZjeC1cXHUwMDNlYnQ7XFxuK1xcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcXHUwMDI2Y3gtXFx1MDAzZWJ0MDtcXG4gXFx0c3RydWN0IHJ0dzg5X2J0Y19idF9saW5rX2luZm8gKmIgPSBcXHUwMDI2YnQtXFx1MDAzZWxpbmtfaW5mbztcXG4gXFx0c3RydWN0IHJ0dzg5X2J0Y19idF9oZnBfZGVzYyAqaGZwID0gXFx1MDAyNmItXFx1MDAzZWhmcF9kZXNjO1xcbiBcXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2hpZF9kZXNjICpoaWQgPSBcXHUwMDI2Yi1cXHUwMDNlaGlkX2Rlc2M7XFxuQEAgLTgwNDcsNyArODIxMyw3IEBAIHN0YXRpYyB2b2lkIF91cGRhdGVfYnRfaW5mbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4ICpidWYsIHUzMiBsZW4pXFxuIFxcdFxcdHJ0dzg5X2RlYnVnKHJ0d2RldiwgUlRXODlfREJHX0JUQyxcXG4gXFx0XFx0XFx0ICAgIFxcXCJbQlRDXSwgJXMoKTogcmV0dXJuIGJ5IGJ0LWluZm8gZHVwbGljYXRlISFcXFxcblxcXCIsXFxuIFxcdFxcdFxcdCAgICBfX2Z1bmNfXyk7XFxuLVxcdFxcdGN4LVxcdTAwM2VjbnRfYnRbQlRDX0JDTlRfSU5GT1NBTUVdKys7XFxuK1xcdFxcdGJ0LVxcdTAwM2ViY250W0JUQ19CQ05UX0lORk9TQU1FXSsrO1xcbiBcXHRcXHRyZXR1cm47XFxuIFxcdH1cXG4gXFxuQEAgLTgwNjgsNyArODIzNCw3IEBAIHN0YXRpYyB2b2lkIF91cGRhdGVfYnRfaW5mbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4ICpidWYsIHUzMiBsZW4pXFxuIFxcdGItXFx1MDAzZXN0YXR1cy5tYXAuYWNsX2J1c3kgPSBidGluZm8ubGIyLmFjbF9idXN5O1xcbiBcXHRiLVxcdTAwM2VzdGF0dXMubWFwLmlucV9wYWcgPSBidGluZm8ubGIyLmlucV9wYWc7XFxuIFxcdGJ0LVxcdTAwM2VpbnFfcGFnLm5vdyA9IGJ0aW5mby5sYjIuaW5xX3BhZztcXG4tXFx0Y3gtXFx1MDAzZWNudF9idFtCVENfQkNOVF9JTlFQQUddICs9ICEhKGJ0LVxcdTAwM2VpbnFfcGFnLm5vdyBcXHUwMDI2XFx1MDAyNiAhYnQtXFx1MDAzZWlucV9wYWcubGFzdCk7XFxuK1xcdGJ0LVxcdTAwM2ViY250W0JUQ19CQ05UX0lOUVBBR10gKz0gISEoYnQtXFx1MDAzZWlucV9wYWcubm93IFxcdTAwMjZcXHUwMDI2ICFidC1cXHUwMDNlaW5xX3BhZy5sYXN0KTtcXG4gXFxuIFxcdGhmcC1cXHUwMDNlZXhpc3QgPSBidGluZm8ubGIyLmhmcDtcXG4gXFx0Yi1cXHUwMDNlcHJvZmlsZV9jbnQubm93ICs9ICh1OCloZnAtXFx1MDAzZWV4aXN0O1xcbkBAIC04MDgzLDExICs4MjQ5LDExIEBAIHN0YXRpYyB2b2lkIF91cGRhdGVfYnRfaW5mbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4ICpidWYsIHUzMiBsZW4pXFxuIFxcdC8qIHBhcnNlIHJhdyBpbmZvIGxvdy1CeXRlMyAqL1xcbiBcXHRidGluZm8udmFsID0gYnQtXFx1MDAzZXJhd19pbmZvW0JUQ19CVElORk9fTDNdO1xcbiBcXHRpZiAoYnRpbmZvLmxiMy5yZXRyeSAhPSAwKVxcbi1cXHRcXHRjeC1cXHUwMDNlY250X2J0W0JUQ19CQ05UX1JFVFJZXSsrO1xcbitcXHRcXHRidC1cXHUwMDNlYmNudFtCVENfQkNOVF9SRVRSWV0rKztcXG4gXFx0Yi1cXHUwMDNlY3FkZHIgPSBidGluZm8ubGIzLmNxZGRyO1xcbi1cXHRjeC1cXHUwMDNlY250X2J0W0JUQ19CQ05UX0lOUV0gKz0gISEoYnRpbmZvLmxiMy5pbnEgXFx1MDAyNlxcdTAwMjYgIWJ0LVxcdTAwM2VpbnEpO1xcbitcXHRidC1cXHUwMDNlYmNudFtCVENfQkNOVF9JTlFdICs9ICEhKGJ0aW5mby5sYjMuaW5xIFxcdTAwMjZcXHUwMDI2ICFidC1cXHUwMDNlaW5xKTtcXG4gXFx0YnQtXFx1MDAzZWlucSA9IGJ0aW5mby5sYjMuaW5xO1xcbi1cXHRjeC1cXHUwMDNlY250X2J0W0JUQ19CQ05UX1BBR0VdICs9ICEhKGJ0aW5mby5sYjMucGFnIFxcdTAwMjZcXHUwMDI2ICFidC1cXHUwMDNlcGFnKTtcXG4rXFx0YnQtXFx1MDAzZWJjbnRbQlRDX0JDTlRfUEFHRV0gKz0gISEoYnRpbmZvLmxiMy5wYWcgXFx1MDAyNlxcdTAwMjYgIWJ0LVxcdTAwM2VwYWcpO1xcbiBcXHRidC1cXHUwMDNlcGFnID0gYnRpbmZvLmxiMy5wYWc7XFxuIFxcbiBcXHRiLVxcdTAwM2VzdGF0dXMubWFwLm1lc2hfYnVzeSA9IGJ0aW5mby5sYjMubWVzaF9idXN5O1xcbkBAIC04MTEwLDExICs4Mjc2LDExIEBAIHN0YXRpYyB2b2lkIF91cGRhdGVfYnRfaW5mbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4ICpidWYsIHUzMiBsZW4pXFxuIFxcdFxcdFxcdGhpZC1cXHUwMDNldHlwZSB8PSBCVENfSElEX1JDVTtcXG4gXFx0fVxcbiBcXG4tXFx0Y3gtXFx1MDAzZWNudF9idFtCVENfQkNOVF9SRUlOSVRdICs9ICEhKGJ0aW5mby5oYjEucmVpbml0IFxcdTAwMjZcXHUwMDI2ICFidC1cXHUwMDNlcmVpbml0KTtcXG4rXFx0YnQtXFx1MDAzZWJjbnRbQlRDX0JDTlRfUkVJTklUXSArPSAhIShidGluZm8uaGIxLnJlaW5pdCBcXHUwMDI2XFx1MDAyNiAhYnQtXFx1MDAzZXJlaW5pdCk7XFxuIFxcdGJ0LVxcdTAwM2VyZWluaXQgPSBidGluZm8uaGIxLnJlaW5pdDtcXG4tXFx0Y3gtXFx1MDAzZWNudF9idFtCVENfQkNOVF9SRUxJTktdICs9ICEhKGJ0aW5mby5oYjEucmVsaW5rIFxcdTAwMjZcXHUwMDI2ICFiLVxcdTAwM2VyZWxpbmsubm93KTtcXG4rXFx0YnQtXFx1MDAzZWJjbnRbQlRDX0JDTlRfUkVMSU5LXSArPSAhIShidGluZm8uaGIxLnJlbGluayBcXHUwMDI2XFx1MDAyNiAhYi1cXHUwMDNlcmVsaW5rLm5vdyk7XFxuIFxcdGItXFx1MDAzZXJlbGluay5ub3cgPSBidGluZm8uaGIxLnJlbGluaztcXG4tXFx0Y3gtXFx1MDAzZWNudF9idFtCVENfQkNOVF9JR05PV0xdICs9ICEhKGJ0aW5mby5oYjEuaWdub193bCBcXHUwMDI2XFx1MDAyNiAhYnQtXFx1MDAzZWlnbm9fd2wpO1xcbitcXHRidC1cXHUwMDNlYmNudFtCVENfQkNOVF9JR05PV0xdICs9ICEhKGJ0aW5mby5oYjEuaWdub193bCBcXHUwMDI2XFx1MDAyNiAhYnQtXFx1MDAzZWlnbm9fd2wpO1xcbiBcXHRidC1cXHUwMDNlaWdub193bCA9IGJ0aW5mby5oYjEuaWdub193bDtcXG4gXFxuIFxcdGlmIChidC1cXHUwMDNlaWdub193bCBcXHUwMDI2XFx1MDAyNiAhY3gtXFx1MDAzZXdsLnN0YXR1cy5tYXAucmZfb2ZmKVxcbkBAIC04MTIyLDcgKzgyODgsNyBAQCBzdGF0aWMgdm9pZCBfdXBkYXRlX2J0X2luZm8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCAqYnVmLCB1MzIgbGVuKVxcbiBcXG4gXFx0YnQtXFx1MDAzZWJsZV9zY2FuX2VuID0gYnRpbmZvLmhiMS5ibGVfc2NhbjtcXG4gXFxuLVxcdGN4LVxcdTAwM2VjbnRfYnRbQlRDX0JDTlRfUk9MRVNXXSArPSAhIShidGluZm8uaGIxLnJvbGVfc3cgXFx1MDAyNlxcdTAwMjYgIWItXFx1MDAzZXJvbGVfc3cpO1xcbitcXHRidC1cXHUwMDNlYmNudFtCVENfQkNOVF9ST0xFU1ddICs9ICEhKGJ0aW5mby5oYjEucm9sZV9zdyBcXHUwMDI2XFx1MDAyNiAhYi1cXHUwMDNlcm9sZV9zdyk7XFxuIFxcdGItXFx1MDAzZXJvbGVfc3cgPSBidGluZm8uaGIxLnJvbGVfc3c7XFxuIFxcbiBcXHRiLVxcdTAwM2VtdWx0aV9saW5rLm5vdyA9IGJ0aW5mby5oYjEubXVsdGlfbGluaztcXG5AQCAtODEzMSw3ICs4Mjk3LDcgQEAgc3RhdGljIHZvaWQgX3VwZGF0ZV9idF9pbmZvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggKmJ1ZiwgdTMyIGxlbilcXG4gXFx0YnRpbmZvLnZhbCA9IGJ0LVxcdTAwM2VyYXdfaW5mb1tCVENfQlRJTkZPX0gyXTtcXG4gXFx0cGFuLVxcdTAwM2VhY3RpdmUgPSAhIWJ0aW5mby5oYjIucGFuX2FjdGl2ZTtcXG4gXFxuLVxcdGN4LVxcdTAwM2VjbnRfYnRbQlRDX0JDTlRfQUZIXSArPSAhIShidGluZm8uaGIyLmFmaF91cGRhdGUgXFx1MDAyNlxcdTAwMjYgIWItXFx1MDAzZWFmaF91cGRhdGUpO1xcbitcXHRidC1cXHUwMDNlYmNudFtCVENfQkNOVF9BRkhdICs9ICEhKGJ0aW5mby5oYjIuYWZoX3VwZGF0ZSBcXHUwMDI2XFx1MDAyNiAhYi1cXHUwMDNlYWZoX3VwZGF0ZSk7XFxuIFxcdGItXFx1MDAzZWFmaF91cGRhdGUgPSBidGluZm8uaGIyLmFmaF91cGRhdGU7XFxuIFxcdGEyZHAtXFx1MDAzZWFjdGl2ZSA9IGJ0aW5mby5oYjIuYTJkcF9hY3RpdmU7XFxuIFxcdGItXFx1MDAzZXNsYXZlX3JvbGUgPSBidGluZm8uaGIyLnNsYXZlO1xcbkBAIC04MTQ1LDcgKzgzMTEsNyBAQCBzdGF0aWMgdm9pZCBfdXBkYXRlX2J0X2luZm8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCAqYnVmLCB1MzIgbGVuKVxcbiBcXHRhMmRwLVxcdTAwM2ViaXRwb29sID0gYnRpbmZvLmhiMy5hMmRwX2JpdHBvb2w7XFxuIFxcbiBcXHRpZiAoYi1cXHUwMDNldHhfM20gIT0gKHUzMilidGluZm8uaGIzLnR4XzNtKVxcbi1cXHRcXHRjeC1cXHUwMDNlY250X2J0W0JUQ19CQ05UX1JBVEVDSEddKys7XFxuK1xcdFxcdGJ0LVxcdTAwM2ViY250W0JUQ19CQ05UX1JBVEVDSEddKys7XFxuIFxcdGItXFx1MDAzZXR4XzNtID0gKHUzMilidGluZm8uaGIzLnR4XzNtO1xcbiBcXG4gXFx0YTJkcC1cXHUwMDNlc2luayA9IGJ0aW5mby5oYjMuYTJkcF9zaW5rO1xcbkBAIC04MzM5LDcgKzg1MDUsNiBAQCB2b2lkIHJ0dzg5X2J0Y19udGZ5X3JhZGlvX3N0YXRlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgZW51bSBidGNfcmZjdHJsIHJmX3N0YVxcbiBcXHRcXHRydHc4OV9idGNfZndfZW5fcnB0KHJ0d2RldiwgUlBUX0VOX01SRUcsIHRydWUpO1xcbiBcXHRcXHR2YWwgPSBCVENfV1NDQl9BQ1RJVkUgfCBCVENfV1NDQl9PTiB8IEJUQ19XU0NCX0JUTE9HO1xcbiBcXHRcXHRfd3JpdGVfc2NiZChydHdkZXYsIHZhbCwgdHJ1ZSk7XFxuLVxcdFxcdF91cGRhdGVfYnRfc2NiZChydHdkZXYsIHRydWUpO1xcbiBcXHRcXHRjaGlwLVxcdTAwM2VvcHMtXFx1MDAzZWJ0Y19pbml0X2NmZyhydHdkZXYpO1xcbiBcXHR9IGVsc2Uge1xcbiBcXHRcXHRydHc4OV9idGNfZndfZW5fcnB0KHJ0d2RldiwgUlBUX0VOX0FMTCwgZmFsc2UpO1xcbkBAIC04MzQ5LDEwICs4NTE0LDYgQEAgdm9pZCBydHc4OV9idGNfbnRmeV9yYWRpb19zdGF0ZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGVudW0gYnRjX3JmY3RybCByZl9zdGFcXG4gXFx0XFx0XFx0X3dyaXRlX3NjYmQocnR3ZGV2LCBCVENfV1NDQl9BTEwsIGZhbHNlKTtcXG4gXFx0XFx0ZWxzZVxcbiBcXHRcXHRcXHRfd3JpdGVfc2NiZChydHdkZXYsIEJUQ19XU0NCX0FDVElWRSwgZmFsc2UpO1xcbi1cXG4tXFx0XFx0aWYgKHJmX3N0YXRlID09IEJUQ19SRkNUUkxfTFBTX1dMX09OIFxcdTAwMjZcXHUwMDI2XFxuLVxcdFxcdCAgICB3bC1cXHUwMDNlc3RhdHVzLm1hcC5scHNfcHJlICE9IEJUQ19MUFNfT0ZGKVxcbi1cXHRcXHRcXHRfdXBkYXRlX2J0X3NjYmQocnR3ZGV2LCB0cnVlKTtcXG4gXFx0fVxcbiBcXG4gXFx0YnRjLVxcdTAwM2VkbS5jbnRfZG1bQlRDX0RDTlRfQlRDTlRfSEFOR10gPSAwO1xcbkBAIC04NzA1LDcgKzg4NjYsNyBAQCBzdGF0aWMgdTggcnR3ODlfYnRjX2MyaF9nZXRfaW5kZXhfYnlfdmVyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggZnVuYylcXG4gXFx0XFx0XFx0cmV0dXJuIEJURl9FVk5UX0JVRl9PVkVSRkxPVztcXG4gXFx0XFx0ZWxzZSBpZiAodmVyLVxcdTAwM2Vmd2MyaGZ1bmMgPT0gMilcXG4gXFx0XFx0XFx0cmV0dXJuIGZ1bmM7XFxuLVxcdFxcdGVsc2UgaWYgKHZlci1cXHUwMDNlZndjMmhmdW5jID09IDMpXFxuK1xcdFxcdGVsc2UgaWYgKHZlci1cXHUwMDNlZndjMmhmdW5jID09IDMgfHwgdmVyLVxcdTAwM2Vmd2MyaGZ1bmMgPT0gNClcXG4gXFx0XFx0XFx0cmV0dXJuIEJURl9FVk5UX0JVRl9PVkVSRkxPVztcXG4gXFx0XFx0ZWxzZVxcbiBcXHRcXHRcXHRyZXR1cm4gQlRGX0VWTlRfTUFYO1xcbkBAIC04NzE2LDE5ICs4ODc3LDI2IEBAIHN0YXRpYyB1OCBydHc4OV9idGNfYzJoX2dldF9pbmRleF9ieV92ZXIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCBmdW5jKVxcbiBcXHRcXHRcXHRyZXR1cm4gQlRGX0VWTlRfQzJIX0xPT1BCQUNLO1xcbiBcXHRcXHRlbHNlIGlmICh2ZXItXFx1MDAzZWZ3YzJoZnVuYyA9PSAyKVxcbiBcXHRcXHRcXHRyZXR1cm4gZnVuYztcXG4tXFx0XFx0ZWxzZSBpZiAodmVyLVxcdTAwM2Vmd2MyaGZ1bmMgPT0gMylcXG4rXFx0XFx0ZWxzZSBpZiAodmVyLVxcdTAwM2Vmd2MyaGZ1bmMgPT0gMyB8fCB2ZXItXFx1MDAzZWZ3YzJoZnVuYyA9PSA0KVxcbiBcXHRcXHRcXHRyZXR1cm4gQlRGX0VWTlRfQzJIX0xPT1BCQUNLO1xcbiBcXHRcXHRlbHNlXFxuIFxcdFxcdFxcdHJldHVybiBCVEZfRVZOVF9NQVg7XFxuIFxcdGNhc2UgQlRGX0VWTlRfQzJIX0xPT1BCQUNLOlxcbiBcXHRcXHRpZiAodmVyLVxcdTAwM2Vmd2MyaGZ1bmMgPT0gMilcXG4gXFx0XFx0XFx0cmV0dXJuIGZ1bmM7XFxuLVxcdFxcdGVsc2UgaWYgKHZlci1cXHUwMDNlZndjMmhmdW5jID09IDMpXFxuK1xcdFxcdGVsc2UgaWYgKHZlci1cXHUwMDNlZndjMmhmdW5jID09IDMgfHwgdmVyLVxcdTAwM2Vmd2MyaGZ1bmMgPT0gNClcXG4gXFx0XFx0XFx0cmV0dXJuIEJURl9FVk5UX0JUX0xFQVVESU9fSU5GTztcXG4gXFx0XFx0ZWxzZVxcbiBcXHRcXHRcXHRyZXR1cm4gQlRGX0VWTlRfTUFYO1xcbiBcXHRjYXNlIEJURl9FVk5UX0JUX1FVRVJZX1RYUFdSOlxcbi1cXHRcXHRpZiAodmVyLVxcdTAwM2Vmd2MyaGZ1bmMgPT0gMylcXG4rXFx0XFx0aWYgKHZlci1cXHUwMDNlZndjMmhmdW5jID09IDMgfHwgdmVyLVxcdTAwM2Vmd2MyaGZ1bmMgPT0gNClcXG4rXFx0XFx0XFx0cmV0dXJuIGZ1bmM7XFxuK1xcdFxcdGVsc2VcXG4rXFx0XFx0XFx0cmV0dXJuIEJURl9FVk5UX01BWDtcXG4rXFx0Y2FzZSBCVEZfRVZOVF9aQl9JTkZPOlxcbitcXHRjYXNlIEJURl9FVk5UX1pCX0NIOlxcbitcXHRjYXNlIEJURl9FVk5UX1pCX1FVRVJZX1RYUFdSOlxcbitcXHRcXHRpZiAodmVyLVxcdTAwM2Vmd2MyaGZ1bmMgPT0gNClcXG4gXFx0XFx0XFx0cmV0dXJuIGZ1bmM7XFxuIFxcdFxcdGVsc2VcXG4gXFx0XFx0XFx0cmV0dXJuIEJURl9FVk5UX01BWDtcXG5AQCAtODc0Miw2ICs4OTEwLDcgQEAgdm9pZCBydHc4OV9idGNfYzJoX2hhbmRsZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdFxcdFxcdCAgdTMyIGxlbiwgdTggY2xhc3MsIHU4IGZ1bmMpXFxuIHtcXG4gXFx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXFx1MDAyNnJ0d2Rldi1cXHUwMDNlYnRjO1xcbitcXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXFx1MDAyNnJ0d2Rldi1cXHUwMDNlYnRjLmN4LmJ0MDtcXG4gXFx0c3RydWN0IHJ0dzg5X2J0Y19idGZfZndpbmZvICpwZndpbmZvID0gXFx1MDAyNmJ0Yy1cXHUwMDNlZndpbmZvO1xcbiBcXHR1OCAqYnVmID0gXFx1MDAyNnNrYi1cXHUwMDNlZGF0YVtSVFc4OV9DMkhfSEVBREVSX0xFTl07XFxuIFxcbkBAIC04NzY5LDEzICs4OTM4LDEzIEBAIHZvaWQgcnR3ODlfYnRjX2MyaF9oYW5kbGUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRjYXNlIEJURl9FVk5UX0JUX0lORk86XFxuIFxcdFxcdHJ0dzg5X2RlYnVnKHJ0d2RldiwgUlRXODlfREJHX0JUQyxcXG4gXFx0XFx0XFx0ICAgIFxcXCJbQlRDXSwgaGFuZGxlIEMySCBCVCBJTkZPIHdpdGggZGF0YSAlOHBoXFxcXG5cXFwiLCBidWYpO1xcbi1cXHRcXHRidGMtXFx1MDAzZWN4LmNudF9idFtCVENfQkNOVF9JTkZPVVBEQVRFXSsrO1xcbitcXHRcXHRidC1cXHUwMDNlYmNudFtCVENfQkNOVF9JTkZPVVBEQVRFXSsrO1xcbiBcXHRcXHRfdXBkYXRlX2J0X2luZm8ocnR3ZGV2LCBidWYsIGxlbik7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIEJURl9FVk5UX0JUX1NDQkQ6XFxuIFxcdFxcdHJ0dzg5X2RlYnVnKHJ0d2RldiwgUlRXODlfREJHX0JUQyxcXG4gXFx0XFx0XFx0ICAgIFxcXCJbQlRDXSwgaGFuZGxlIEMySCBCVCBTQ0JEIHdpdGggZGF0YSAlOHBoXFxcXG5cXFwiLCBidWYpO1xcbi1cXHRcXHRidGMtXFx1MDAzZWN4LmNudF9idFtCVENfQkNOVF9TQ0JEVVBEQVRFXSsrO1xcbitcXHRcXHRidC1cXHUwMDNlYmNudFtCVENfQkNOVF9TQ0JEVVBEQVRFXSsrO1xcbiBcXHRcXHRfdXBkYXRlX2J0X3NjYmQocnR3ZGV2LCBmYWxzZSk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIEJURl9FVk5UX0JUX1BTRDpcXG5AQCAtODc5Myw3ICs4OTYyLDcgQEAgdm9pZCBydHc4OV9idGNfYzJoX2hhbmRsZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdFxcdGJ0Yy1cXHUwMDNlZG0uY250X2RtW0JUQ19EQ05UX0NYX1JVTklORk9dKys7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIEJURl9FVk5UX0JUX1FVRVJZX1RYUFdSOlxcbi1cXHRcXHRidGMtXFx1MDAzZWN4LmNudF9idFtCVENfQkNOVF9CVFRYUFdSX1VQREFURV0rKztcXG4rXFx0XFx0YnQtXFx1MDAzZWJjbnRbQlRDX0JDTlRfQlRUWFBXUl9VUERBVEVdKys7XFxuIFxcdFxcdF91cGRhdGVfYnRfdHhwd3JfaW5mbyhydHdkZXYsIGJ1ZiwgbGVuKTtcXG4gXFx0fVxcbiB9XFxuQEAgLTg4MDgsNyArODk3Nyw3IEBAIHN0YXRpYyBpbnQgX3Nob3dfY3hfaW5mbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnN6KVxcbiBcXHRzdHJ1Y3QgcnR3ODlfaGFsICpoYWwgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2VoYWw7XFxuIFxcdHN0cnVjdCBydHc4OV9idGMgKmJ0YyA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZWJ0YztcXG4gXFx0c3RydWN0IHJ0dzg5X2J0Y19kbSAqZG0gPSBcXHUwMDI2YnRjLVxcdTAwM2VkbTtcXG4tXFx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFxcdTAwMjZidGMtXFx1MDAzZWN4LmJ0O1xcbitcXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXFx1MDAyNmJ0Yy1cXHUwMDNlY3guYnQwO1xcbiBcXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX2luZm8gKndsID0gXFx1MDAyNmJ0Yy1cXHUwMDNlY3gud2w7XFxuIFxcdHUzMiB2ZXJfbWFpbiA9IDAsIHZlcl9zdWIgPSAwLCB2ZXJfaG90Zml4ID0gMCwgaWRfYnJhbmNoID0gMDtcXG4gXFx0dTggY3YsIHJmZSwgaXNvLCBhbnRfbnVtLCBhbnRfc2luZ2xlX3BvcztcXG5AQCAtODg4NSw3ICs5MDU0LDcgQEAgc3RhdGljIGludCBfc2hvd19jeF9pbmZvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY2hhciAqYnVmLCBzaXplX3QgYnVmc3opXFxuIFxcbiBcXHRwICs9IHNjbnByaW50ZihwLCBlbmQgLSBwLFxcbiBcXHRcXHQgICAgICAgXFxcIjNyZF9jb2V4OiVkLCBkYmNjOiVkLCB0eF9udW06JWQsIHJ4X251bTolZFxcXFxuXFxcIixcXG4tXFx0XFx0ICAgICAgIGJ0Yy1cXHUwMDNlY3gub3RoZXIudHlwZSwgcnR3ZGV2LVxcdTAwM2VkYmNjX2VuLCBoYWwtXFx1MDAzZXR4X25zcyxcXG4rXFx0XFx0ICAgICAgIGJ0Yy1cXHUwMDNlY3guYnRfZXh0LmZ1bmNfdHlwZSwgcnR3ZGV2LVxcdTAwM2VkYmNjX2VuLCBoYWwtXFx1MDAzZXR4X25zcyxcXG4gXFx0XFx0ICAgICAgIGhhbC1cXHUwMDNlcnhfbnNzKTtcXG4gXFxuIFxcdHJldHVybiBwIC0gYnVmO1xcbkBAIC05MDA3LDcgKzkxNzYsNyBAQCBlbnVtIGJ0Y19idF9hMmRwX3R5cGUge1xcbiBzdGF0aWMgaW50IF9zaG93X2J0X3Byb2ZpbGVfaW5mbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnN6KVxcbiB7XFxuIFxcdHN0cnVjdCBydHc4OV9idGMgKmJ0YyA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZWJ0YztcXG4tXFx0c3RydWN0IHJ0dzg5X2J0Y19idF9saW5rX2luZm8gKmJ0X2xpbmZvID0gXFx1MDAyNmJ0Yy1cXHUwMDNlY3guYnQubGlua19pbmZvO1xcbitcXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2xpbmtfaW5mbyAqYnRfbGluZm8gPSBcXHUwMDI2YnRjLVxcdTAwM2VjeC5idDAubGlua19pbmZvO1xcbiBcXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2hmcF9kZXNjIGhmcCA9IGJ0X2xpbmZvLVxcdTAwM2VoZnBfZGVzYztcXG4gXFx0c3RydWN0IHJ0dzg5X2J0Y19idF9oaWRfZGVzYyBoaWQgPSBidF9saW5mby1cXHUwMDNlaGlkX2Rlc2M7XFxuIFxcdHN0cnVjdCBydHc4OV9idGNfYnRfYTJkcF9kZXNjIGEyZHAgPSBidF9saW5mby1cXHUwMDNlYTJkcF9kZXNjO1xcbkBAIC05MDY1LDcgKzkyMzQsNyBAQCBzdGF0aWMgaW50IF9zaG93X2J0X2luZm8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBjaGFyICpidWYsIHNpemVfdCBidWZzeilcXG4gXFx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXFx1MDAyNnJ0d2Rldi1cXHUwMDNlYnRjO1xcbiBcXHRjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3ZlciAqdmVyID0gYnRjLVxcdTAwM2V2ZXI7XFxuIFxcdHN0cnVjdCBydHc4OV9idGNfY3ggKmN4ID0gXFx1MDAyNmJ0Yy1cXHUwMDNlY3g7XFxuLVxcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcXHUwMDI2Y3gtXFx1MDAzZWJ0O1xcbitcXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXFx1MDAyNmN4LVxcdTAwM2VidDA7XFxuIFxcdHN0cnVjdCBydHc4OV9idGNfd2xfaW5mbyAqd2wgPSBcXHUwMDI2Y3gtXFx1MDAzZXdsO1xcbiBcXHR1MzIgdmVyX21haW4gPSBGSUVMRF9HRVQoR0VOTUFTSygzMSwgMjQpLCB3bC1cXHUwMDNldmVyX2luZm8uZndfY29leCk7XFxuIFxcdHN0cnVjdCBydHc4OV9idGNfYnRfbGlua19pbmZvICpidF9saW5mbyA9IFxcdTAwMjZidC1cXHUwMDNlbGlua19pbmZvO1xcbkBAIC05MTQ0LDE3ICs5MzEzLDE3IEBAIHN0YXRpYyBpbnQgX3Nob3dfYnRfaW5mbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnN6KVxcbiBcXG4gXFx0cCArPSBzY25wcmludGYocCwgZW5kIC0gcCxcXG4gXFx0XFx0ICAgICAgIFxcXCIgJS0xNXMgOiByZXRyeTolZCwgcmVsaW5rOiVkLCByYXRlX2NoZzolZCwgcmVpbml0OiVkLCByZWVuYWJsZTolZCwgXFxcIixcXG4tXFx0XFx0ICAgICAgIFxcXCJbc3RhdF9jbnRdXFxcIiwgY3gtXFx1MDAzZWNudF9idFtCVENfQkNOVF9SRVRSWV0sXFxuLVxcdFxcdCAgICAgICBjeC1cXHUwMDNlY250X2J0W0JUQ19CQ05UX1JFTElOS10sXFxuLVxcdFxcdCAgICAgICBjeC1cXHUwMDNlY250X2J0W0JUQ19CQ05UX1JBVEVDSEddLFxcbi1cXHRcXHQgICAgICAgY3gtXFx1MDAzZWNudF9idFtCVENfQkNOVF9SRUlOSVRdLFxcbi1cXHRcXHQgICAgICAgY3gtXFx1MDAzZWNudF9idFtCVENfQkNOVF9SRUVOQUJMRV0pO1xcbitcXHRcXHQgICAgICAgXFxcIltzdGF0X2NudF1cXFwiLCBidC1cXHUwMDNlYmNudFtCVENfQkNOVF9SRVRSWV0sXFxuK1xcdFxcdCAgICAgICBidC1cXHUwMDNlYmNudFtCVENfQkNOVF9SRUxJTktdLFxcbitcXHRcXHQgICAgICAgYnQtXFx1MDAzZWJjbnRbQlRDX0JDTlRfUkFURUNIR10sXFxuK1xcdFxcdCAgICAgICBidC1cXHUwMDNlYmNudFtCVENfQkNOVF9SRUlOSVRdLFxcbitcXHRcXHQgICAgICAgYnQtXFx1MDAzZWJjbnRbQlRDX0JDTlRfUkVFTkFCTEVdKTtcXG4gXFxuIFxcdHAgKz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsXFxuIFxcdFxcdCAgICAgICBcXFwicm9sZS1zd2l0Y2g6JWQsIGFmaDolZCwgaW5xX3BhZ2U6JWQoaW5xOiVkL3BhZ2U6JWQpLCBpZ25vX3dsOiVkXFxcXG5cXFwiLFxcbi1cXHRcXHQgICAgICAgY3gtXFx1MDAzZWNudF9idFtCVENfQkNOVF9ST0xFU1ddLCBjeC1cXHUwMDNlY250X2J0W0JUQ19CQ05UX0FGSF0sXFxuLVxcdFxcdCAgICAgICBjeC1cXHUwMDNlY250X2J0W0JUQ19CQ05UX0lOUVBBR10sIGN4LVxcdTAwM2VjbnRfYnRbQlRDX0JDTlRfSU5RXSxcXG4tXFx0XFx0ICAgICAgIGN4LVxcdTAwM2VjbnRfYnRbQlRDX0JDTlRfUEFHRV0sIGN4LVxcdTAwM2VjbnRfYnRbQlRDX0JDTlRfSUdOT1dMXSk7XFxuK1xcdFxcdCAgICAgICBidC1cXHUwMDNlYmNudFtCVENfQkNOVF9ST0xFU1ddLCBidC1cXHUwMDNlYmNudFtCVENfQkNOVF9BRkhdLFxcbitcXHRcXHQgICAgICAgYnQtXFx1MDAzZWJjbnRbQlRDX0JDTlRfSU5RUEFHXSwgYnQtXFx1MDAzZWJjbnRbQlRDX0JDTlRfSU5RXSxcXG4rXFx0XFx0ICAgICAgIGJ0LVxcdTAwM2ViY250W0JUQ19CQ05UX1BBR0VdLCBidC1cXHUwMDNlYmNudFtCVENfQkNOVF9JR05PV0xdKTtcXG4gXFxuIFxcdHAgKz0gX3Nob3dfYnRfcHJvZmlsZV9pbmZvKHJ0d2RldiwgcCwgZW5kIC0gcCk7XFxuIFxcbkBAIC05MTY0LDE2ICs5MzMzLDE2IEBAIHN0YXRpYyBpbnQgX3Nob3dfYnRfaW5mbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnN6KVxcbiBcXHRcXHQgICAgICAgYnQtXFx1MDAzZXJhd19pbmZvWzRdLCBidC1cXHUwMDNlcmF3X2luZm9bNV0sIGJ0LVxcdTAwM2VyYXdfaW5mb1s2XSxcXG4gXFx0XFx0ICAgICAgIGJ0LVxcdTAwM2VyYXdfaW5mb1s3XSxcXG4gXFx0XFx0ICAgICAgIGJ0LVxcdTAwM2VyYXdfaW5mb1swXSA9PSBCVENfQlRJTkZPX0FVVE8gPyBcXFwiYXV0b1xcXCIgOiBcXFwicmVwbHlcXFwiLFxcbi1cXHRcXHQgICAgICAgY3gtXFx1MDAzZWNudF9idFtCVENfQkNOVF9JTkZPVVBEQVRFXSxcXG4tXFx0XFx0ICAgICAgIGN4LVxcdTAwM2VjbnRfYnRbQlRDX0JDTlRfSU5GT1NBTUVdKTtcXG4rXFx0XFx0ICAgICAgIGJ0LVxcdTAwM2ViY250W0JUQ19CQ05UX0lORk9VUERBVEVdLFxcbitcXHRcXHQgICAgICAgYnQtXFx1MDAzZWJjbnRbQlRDX0JDTlRfSU5GT1NBTUVdKTtcXG4gXFxuIFxcdHAgKz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsXFxuIFxcdFxcdCAgICAgICBcXFwiICUtMTVzIDogSGktcnggPSAlZCwgSGktdHggPSAlZCwgTG8tcnggPSAlZCwgTG8tdHggPSAlZCAoYnRfcG9sdXRfd2xfdHggPSAlZClcXFwiLFxcbi1cXHRcXHQgICAgICAgXFxcIlt0cnhfcmVxX2NudF1cXFwiLCBjeC1cXHUwMDNlY250X2J0W0JUQ19CQ05UX0hJUFJJX1JYXSxcXG4tXFx0XFx0ICAgICAgIGN4LVxcdTAwM2VjbnRfYnRbQlRDX0JDTlRfSElQUklfVFhdLFxcbi1cXHRcXHQgICAgICAgY3gtXFx1MDAzZWNudF9idFtCVENfQkNOVF9MT1BSSV9SWF0sXFxuLVxcdFxcdCAgICAgICBjeC1cXHUwMDNlY250X2J0W0JUQ19CQ05UX0xPUFJJX1RYXSxcXG4tXFx0XFx0ICAgICAgIGN4LVxcdTAwM2VjbnRfYnRbQlRDX0JDTlRfUE9MVVRdKTtcXG4rXFx0XFx0ICAgICAgIFxcXCJbdHJ4X3JlcV9jbnRdXFxcIiwgYnQtXFx1MDAzZWJjbnRbQlRDX0JDTlRfSElQUklfUlhdLFxcbitcXHRcXHQgICAgICAgYnQtXFx1MDAzZWJjbnRbQlRDX0JDTlRfSElQUklfVFhdLFxcbitcXHRcXHQgICAgICAgYnQtXFx1MDAzZWJjbnRbQlRDX0JDTlRfTE9QUklfUlhdLFxcbitcXHRcXHQgICAgICAgYnQtXFx1MDAzZWJjbnRbQlRDX0JDTlRfTE9QUklfVFhdLFxcbitcXHRcXHQgICAgICAgYnQtXFx1MDAzZWJjbnRbQlRDX0JDTlRfUE9MVVRdKTtcXG4gXFxuIFxcdGlmICghYnQtXFx1MDAzZXNjYW5faW5mb191cGRhdGUpIHtcXG4gXFx0XFx0cnR3ODlfYnRjX2Z3X2VuX3JwdChydHdkZXYsIFJQVF9FTl9CVF9TQ0FOX0lORk8sIHRydWUpO1xcbkBAIC05MjA5LDcgKzkzNzgsNyBAQCBzdGF0aWMgaW50IF9zaG93X2J0X2luZm8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBjaGFyICpidWYsIHNpemVfdCBidWZzeilcXG4gXFx0ZWxzZVxcbiBcXHRcXHRydHc4OV9idGNfZndfZW5fcnB0KHJ0d2RldiwgUlBUX0VOX0JUX1RYX1BXUl9MVkwsIGZhbHNlKTtcXG4gXFxuLVxcdGlmIChjeC1cXHUwMDNlY250X2J0W0JUQ19CQ05UX0JUVFhQV1JfVVBEQVRFXSkge1xcbitcXHRpZiAoYnQtXFx1MDAzZWJjbnRbQlRDX0JDTlRfQlRUWFBXUl9VUERBVEVdKSB7XFxuIFxcdFxcdHAgKz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsXFxuIFxcdFxcdFxcdCAgICAgICBcXFwiICUtMTVzIDogYnJfaW5kZXg6MHgleCwgbGVfaW5kZXg6MHgleFxcXCIsXFxuIFxcdFxcdFxcdCAgICAgICBcXFwiW2J0X3R4cHdyX2x2bF1cXFwiLFxcbkBAIC05NTg4LDcgKzk3NTcsNyBAQCBzdGF0aWMgaW50IF9zaG93X2RtX2luZm8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBjaGFyICpidWYsIHNpemVfdCBidWZzeilcXG4gXFx0Y29uc3Qgc3RydWN0IHJ0dzg5X2J0Y192ZXIgKnZlciA9IGJ0Yy1cXHUwMDNldmVyO1xcbiBcXHRzdHJ1Y3QgcnR3ODlfYnRjX2RtICpkbSA9IFxcdTAwMjZidGMtXFx1MDAzZWRtO1xcbiBcXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX2luZm8gKndsID0gXFx1MDAyNmJ0Yy1cXHUwMDNlY3gud2w7XFxuLVxcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcXHUwMDI2YnRjLVxcdTAwM2VjeC5idDtcXG4rXFx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFxcdTAwMjZidGMtXFx1MDAzZWN4LmJ0MDtcXG4gXFx0Y2hhciAqcCA9IGJ1ZiwgKmVuZCA9IGJ1ZiArIGJ1ZnN6O1xcbiBcXHR1OCBpZ25vX2J0O1xcbiBcXG5AQCAtOTYyNywzMSArOTc5NiwyNSBAQCBzdGF0aWMgaW50IF9zaG93X2RtX2luZm8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBjaGFyICpidWYsIHNpemVfdCBidWZzeilcXG4gXFx0XFx0ICAgICAgIChkbS1cXHUwMDNld2xfZndfY3hfb2ZmbG9hZCA9PSBCVENfQ1hfRldfT0ZGTE9BRCA/XFxuIFxcdFxcdFxcdFxcXCJcXFwiIDogXFxcIihNaXNtYXRjaCEhKVxcXCIpKTtcXG4gXFxuLVxcdGlmIChkbS1cXHUwMDNlcmZfdHJ4X3BhcmEud2xfdHhfcG93ZXIgPT0gMHhmZilcXG4tXFx0XFx0cCArPSBzY25wcmludGYocCwgZW5kIC0gcCxcXG4tXFx0XFx0XFx0ICAgICAgIFxcXCIgJS0xNXMgOiB3bF9yc3NpX2x2bDolZCwgcGFyYV9sdmw6JWQsIHdsX3R4X3B3cjpvcmlnLCBcXFwiLFxcbi1cXHRcXHRcXHQgICAgICAgXFxcIlt0cnhfY3RybF1cXFwiLCB3bC1cXHUwMDNlcnNzaV9sZXZlbCxcXG4tXFx0XFx0XFx0ICAgICAgIGRtLVxcdTAwM2V0cnhfcGFyYV9sZXZlbCk7XFxuLVxcbi1cXHRlbHNlXFxuLVxcdFxcdHAgKz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsXFxuLVxcdFxcdFxcdCAgICAgICBcXFwiICUtMTVzIDogd2xfcnNzaV9sdmw6JWQsIHBhcmFfbHZsOiVkLCB3bF90eF9wd3I6JWQsIFxcXCIsXFxuLVxcdFxcdFxcdCAgICAgICBcXFwiW3RyeF9jdHJsXVxcXCIsIHdsLVxcdTAwM2Vyc3NpX2xldmVsLFxcbi1cXHRcXHRcXHQgICAgICAgZG0tXFx1MDAzZXRyeF9wYXJhX2xldmVsLFxcbi1cXHRcXHRcXHQgICAgICAgZG0tXFx1MDAzZXJmX3RyeF9wYXJhLndsX3R4X3Bvd2VyKTtcXG4rXFx0cCArPSBzY25wcmludGYocCwgZW5kIC0gcCxcXG4rXFx0XFx0ICAgICAgIFxcXCIgJS0xNXMgOiB3bFtyc3NpX2x2bDolZC9wYXJhOiVkL3R4X3B3cjpbJWQgJWRdL3J4X2x2bDpbJWQgJWRdL2xuYTI6JWQvc3RiX2NoZzolZF1cXFxcbiBcXFwiLFxcbitcXHRcXHQgICAgICAgXFxcIltkbV9yZl9jdHJsXVxcXCIsXFxuK1xcdFxcdCAgICAgICB3bC1cXHUwMDNlcnNzaV9sZXZlbCwgZG0tXFx1MDAzZXRyeF9wYXJhX2xldmVsLFxcbitcXHRcXHQgICAgICAgZG0tXFx1MDAzZXJmX3RyeF9wYXJhLndsX3R4X3Bvd2VyW1JUVzg5X1BIWV8wXSxcXG4rXFx0XFx0ICAgICAgIGRtLVxcdTAwM2VyZl90cnhfcGFyYS53bF90eF9wb3dlcltSVFc4OV9QSFlfMV0sXFxuK1xcdFxcdCAgICAgICBkbS1cXHUwMDNlcmZfdHJ4X3BhcmEud2xfcnhfZ2FpbltSVFc4OV9QSFlfMF0sXFxuK1xcdFxcdCAgICAgICBkbS1cXHUwMDNlcmZfdHJ4X3BhcmEud2xfcnhfZ2FpbltSVFc4OV9QSFlfMV0sXFxuK1xcdFxcdCAgICAgICBkbS1cXHUwMDNld2xfbG5hMiwgZG0tXFx1MDAzZXdsX3N0Yl9jaGcpO1xcbiBcXG4gXFx0cCArPSBzY25wcmludGYocCwgZW5kIC0gcCxcXG4tXFx0XFx0ICAgICAgIFxcXCJ3bF9yeF9sdmw6JWQsIGJ0X3R4X3B3cl9kZWM6JWQsIGJ0X3J4X2xuYTolZCglcy10YmwpLCB3bF9idGdfcng6JWRcXFxcblxcXCIsXFxuLVxcdFxcdCAgICAgICBkbS1cXHUwMDNlcmZfdHJ4X3BhcmEud2xfcnhfZ2FpbixcXG4tXFx0XFx0ICAgICAgIGRtLVxcdTAwM2VyZl90cnhfcGFyYS5idF90eF9wb3dlcixcXG4tXFx0XFx0ICAgICAgIGRtLVxcdTAwM2VyZl90cnhfcGFyYS5idF9yeF9nYWluLFxcbi1cXHRcXHQgICAgICAgKGJ0LVxcdTAwM2VoaV9sbmFfcnggPyBcXFwiSGlcXFwiIDogXFxcIk9yaVxcXCIpLCBkbS1cXHUwMDNld2xfYnRnX3J4KTtcXG4rXFx0XFx0ICAgICAgIFxcXCIgJS0xNXMgOiBwcmVfYWdjOiVkLCBidGdfcng6JWRcXFxcbiBcXFwiLFxcbitcXHRcXHQgICAgICAgXFxcIltkbV9iYl9jdHJsXVxcXCIsIGRtLVxcdTAwM2V3bF9wcmVfYWdjLCBkbS1cXHUwMDNld2xfYnRnX3J4KTtcXG4gXFxuIFxcdHAgKz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsXFxuIFxcdFxcdCAgICAgICBcXFwiICUtMTVzIDogd2xfdHhfbGltaXRbZW46JWQvbWF4X3Q6JWR1cy9tYXhfcmV0cnk6JWRdLCBidF9zbG90X3JlZzolZC1UVSwgYnRfc2Nhbl9yeF9sb3dfcHJpOiVkXFxcXG5cXFwiLFxcbiBcXHRcXHQgICAgICAgXFxcIltkbV9jdHJsXVxcXCIsIGRtLVxcdTAwM2V3bF90eF9saW1pdC5lbmFibGUsXFxuIFxcdFxcdCAgICAgICBkbS1cXHUwMDNld2xfdHhfbGltaXQudHhfdGltZSxcXG4tXFx0XFx0ICAgICAgIGRtLVxcdTAwM2V3bF90eF9saW1pdC50eF9yZXRyeSwgYnRjLVxcdTAwM2VidF9yZXFfbGVuLFxcbitcXHRcXHQgICAgICAgZG0tXFx1MDAzZXdsX3R4X2xpbWl0LnR4X3JldHJ5LCBidGMtXFx1MDAzZWJ0X3JlcV9sZW5bUlRXODlfUEhZXzBdLFxcbiBcXHRcXHQgICAgICAgYnQtXFx1MDAzZXNjYW5fcnhfbG93X3ByaSk7XFxuIFxcbiBcXHRyZXR1cm4gcCAtIGJ1ZjtcXG5AQCAtOTgxMCw3ICs5OTczLDcgQEAgc3RhdGljIGludCBfc2hvd19mYnRjX2N5c3RhX3YyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY2hhciAqYnVmLCBzaXplX3QgYnVmc3pcXG4gXFx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXFx1MDAyNnJ0d2Rldi1cXHUwMDNlYnRjO1xcbiBcXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0Zl9md2luZm8gKnBmd2luZm8gPSBcXHUwMDI2YnRjLVxcdTAwM2Vmd2luZm87XFxuIFxcdHN0cnVjdCBydHc4OV9idGNfZG0gKmRtID0gXFx1MDAyNmJ0Yy1cXHUwMDNlZG07XFxuLVxcdHN0cnVjdCBydHc4OV9idGNfYnRfYTJkcF9kZXNjICphMmRwID0gXFx1MDAyNmJ0Yy1cXHUwMDNlY3guYnQubGlua19pbmZvLmEyZHBfZGVzYztcXG4rXFx0c3RydWN0IHJ0dzg5X2J0Y19idF9hMmRwX2Rlc2MgKmEyZHAgPSBcXHUwMDI2YnRjLVxcdTAwM2VjeC5idDAubGlua19pbmZvLmEyZHBfZGVzYztcXG4gXFx0c3RydWN0IHJ0dzg5X2J0Y19ycHRfY21uX2luZm8gKnBjaW5mbyA9IE5VTEw7XFxuIFxcdHN0cnVjdCBydHc4OV9idGNfZmJ0Y19jeXN0YV92MiAqcGN5c3RhX2xlMzIgPSBOVUxMO1xcbiBcXHR1bmlvbiBydHc4OV9idGNfZmJ0Y19yeGZsY3QgcjtcXG5AQCAtOTk0MSw3ICsxMDEwNCw3IEBAIHN0YXRpYyBpbnQgX3Nob3dfZmJ0Y19jeXN0YV92MihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnN6XFxuIHN0YXRpYyBpbnQgX3Nob3dfZmJ0Y19jeXN0YV92MyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnN6KVxcbiB7XFxuIFxcdHN0cnVjdCBydHc4OV9idGMgKmJ0YyA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZWJ0YztcXG4tXFx0c3RydWN0IHJ0dzg5X2J0Y19idF9hMmRwX2Rlc2MgKmEyZHAgPSBcXHUwMDI2YnRjLVxcdTAwM2VjeC5idC5saW5rX2luZm8uYTJkcF9kZXNjO1xcbitcXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2EyZHBfZGVzYyAqYTJkcCA9IFxcdTAwMjZidGMtXFx1MDAzZWN4LmJ0MC5saW5rX2luZm8uYTJkcF9kZXNjO1xcbiBcXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0Zl9md2luZm8gKnBmd2luZm8gPSBcXHUwMDI2YnRjLVxcdTAwM2Vmd2luZm87XFxuIFxcdHN0cnVjdCBydHc4OV9idGNfZG0gKmRtID0gXFx1MDAyNmJ0Yy1cXHUwMDNlZG07XFxuIFxcdHN0cnVjdCBydHc4OV9idGNfZmJ0Y19hMmRwX3RyeF9zdGF0ICphMmRwX3RyeDtcXG5AQCAtMTAwODAsNyArMTAyNDMsNyBAQCBzdGF0aWMgaW50IF9zaG93X2ZidGNfY3lzdGFfdjMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBjaGFyICpidWYsIHNpemVfdCBidWZzelxcbiBzdGF0aWMgaW50IF9zaG93X2ZidGNfY3lzdGFfdjQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBjaGFyICpidWYsIHNpemVfdCBidWZzeilcXG4ge1xcbiBcXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2VidGM7XFxuLVxcdHN0cnVjdCBydHc4OV9idGNfYnRfYTJkcF9kZXNjICphMmRwID0gXFx1MDAyNmJ0Yy1cXHUwMDNlY3guYnQubGlua19pbmZvLmEyZHBfZGVzYztcXG4rXFx0c3RydWN0IHJ0dzg5X2J0Y19idF9hMmRwX2Rlc2MgKmEyZHAgPSBcXHUwMDI2YnRjLVxcdTAwM2VjeC5idDAubGlua19pbmZvLmEyZHBfZGVzYztcXG4gXFx0c3RydWN0IHJ0dzg5X2J0Y19idGZfZndpbmZvICpwZndpbmZvID0gXFx1MDAyNmJ0Yy1cXHUwMDNlZndpbmZvO1xcbiBcXHRzdHJ1Y3QgcnR3ODlfYnRjX2RtICpkbSA9IFxcdTAwMjZidGMtXFx1MDAzZWRtO1xcbiBcXHRzdHJ1Y3QgcnR3ODlfYnRjX2ZidGNfYTJkcF90cnhfc3RhdF92NCAqYTJkcF90cng7XFxuQEAgLTEwMjE5LDcgKzEwMzgyLDcgQEAgc3RhdGljIGludCBfc2hvd19mYnRjX2N5c3RhX3Y0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY2hhciAqYnVmLCBzaXplX3QgYnVmc3pcXG4gc3RhdGljIGludCBfc2hvd19mYnRjX2N5c3RhX3Y1KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY2hhciAqYnVmLCBzaXplX3QgYnVmc3opXFxuIHtcXG4gXFx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXFx1MDAyNnJ0d2Rldi1cXHUwMDNlYnRjO1xcbi1cXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2EyZHBfZGVzYyAqYTJkcCA9IFxcdTAwMjZidGMtXFx1MDAzZWN4LmJ0LmxpbmtfaW5mby5hMmRwX2Rlc2M7XFxuK1xcdHN0cnVjdCBydHc4OV9idGNfYnRfYTJkcF9kZXNjICphMmRwID0gXFx1MDAyNmJ0Yy1cXHUwMDNlY3guYnQwLmxpbmtfaW5mby5hMmRwX2Rlc2M7XFxuIFxcdHN0cnVjdCBydHc4OV9idGNfYnRmX2Z3aW5mbyAqcGZ3aW5mbyA9IFxcdTAwMjZidGMtXFx1MDAzZWZ3aW5mbztcXG4gXFx0c3RydWN0IHJ0dzg5X2J0Y19kbSAqZG0gPSBcXHUwMDI2YnRjLVxcdTAwM2VkbTtcXG4gXFx0c3RydWN0IHJ0dzg5X2J0Y19mYnRjX2EyZHBfdHJ4X3N0YXRfdjQgKmEyZHBfdHJ4O1xcbkBAIC0xMDM1Niw3ICsxMDUxOSw3IEBAIHN0YXRpYyBpbnQgX3Nob3dfZmJ0Y19jeXN0YV92NShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnN6XFxuIFxcbiBzdGF0aWMgaW50IF9zaG93X2ZidGNfY3lzdGFfdjcoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBjaGFyICpidWYsIHNpemVfdCBidWZzeilcXG4ge1xcbi1cXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXFx1MDAyNnJ0d2Rldi1cXHUwMDNlYnRjLmN4LmJ0O1xcbitcXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXFx1MDAyNnJ0d2Rldi1cXHUwMDNlYnRjLmN4LmJ0MDtcXG4gXFx0c3RydWN0IHJ0dzg5X2J0Y19idF9hMmRwX2Rlc2MgKmEyZHAgPSBcXHUwMDI2YnQtXFx1MDAzZWxpbmtfaW5mby5hMmRwX2Rlc2M7XFxuIFxcdHN0cnVjdCBydHc4OV9idGNfYnRmX2Z3aW5mbyAqcGZ3aW5mbyA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZWJ0Yy5md2luZm87XFxuIFxcdHN0cnVjdCBydHc4OV9idGNfZmJ0Y19jeXN0YV92NyAqcGN5c3RhID0gTlVMTDtcXG5AQCAtMTA4NTMsOSArMTEwMTYsOCBAQCBzdGF0aWMgaW50IF9zaG93X21yZWdfdjEoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBjaGFyICpidWYsIHNpemVfdCBidWZzeilcXG4gXFx0c3RydWN0IHJ0dzg5X2J0Y19idGZfZndpbmZvICpwZndpbmZvID0gXFx1MDAyNmJ0Yy1cXHUwMDNlZndpbmZvO1xcbiBcXHRzdHJ1Y3QgcnR3ODlfYnRjX3JwdF9jbW5faW5mbyAqcGNpbmZvID0gTlVMTDtcXG4gXFx0c3RydWN0IHJ0dzg5X2J0Y19mYnRjX21yZWdfdmFsX3YxICpwbXJlZyA9IE5VTEw7XFxuLVxcdHN0cnVjdCBydHc4OV9idGNfY3ggKmN4ID0gXFx1MDAyNmJ0Yy1cXHUwMDNlY3g7XFxuIFxcdHN0cnVjdCBydHc4OV9idGNfd2xfaW5mbyAqd2wgPSBcXHUwMDI2YnRjLVxcdTAwM2VjeC53bDtcXG4tXFx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFxcdTAwMjZidGMtXFx1MDAzZWN4LmJ0O1xcbitcXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXFx1MDAyNmJ0Yy1cXHUwMDNlY3guYnQwO1xcbiBcXHRzdHJ1Y3QgcnR3ODlfbWFjX2F4X2NvZXhfZ250IGdudF9jZmcgPSB7fTtcXG4gXFx0c3RydWN0IHJ0dzg5X21hY19heF9nbnQgZ250O1xcbiBcXHRjaGFyICpwID0gYnVmLCAqZW5kID0gYnVmICsgYnVmc3o7XFxuQEAgLTEwODcwLDkgKzExMDMyLDkgQEAgc3RhdGljIGludCBfc2hvd19tcmVnX3YxKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY2hhciAqYnVmLCBzaXplX3QgYnVmc3opXFxuIFxcdHAgKz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsXFxuIFxcdFxcdCAgICAgICBcXFwiICUtMTVzIDogV0wtXFx1MDAzZUJUOjB4JTA4eChjbnQ6JWQpLCBCVC1cXHUwMDNlV0w6MHglMDh4KHRvdGFsOiVkLCBidF91cGRhdGU6JWQpXFxcXG5cXFwiLFxcbiBcXHRcXHQgICAgICAgXFxcIltzY29yZWJvYXJkXVxcXCIsIHdsLVxcdTAwM2VzY2JkLFxcbi1cXHRcXHQgICAgICAgY3gtXFx1MDAzZWNudF93bFtCVENfV0NOVF9TQ0JEVVBEQVRFXSxcXG4tXFx0XFx0ICAgICAgIGJ0LVxcdTAwM2VzY2JkLCBjeC1cXHUwMDNlY250X2J0W0JUQ19CQ05UX1NDQkRSRUFEXSxcXG4tXFx0XFx0ICAgICAgIGN4LVxcdTAwM2VjbnRfYnRbQlRDX0JDTlRfU0NCRFVQREFURV0pO1xcbitcXHRcXHQgICAgICAgd2wtXFx1MDAzZXdjbnRbQlRDX1dDTlRfU0NCRFVQREFURV0sXFxuK1xcdFxcdCAgICAgICBidC1cXHUwMDNlc2NiZCwgYnQtXFx1MDAzZWJjbnRbQlRDX0JDTlRfU0NCRFJFQURdLFxcbitcXHRcXHQgICAgICAgYnQtXFx1MDAzZWJjbnRbQlRDX0JDTlRfU0NCRFVQREFURV0pO1xcbiBcXG4gXFx0YnRjLVxcdTAwM2VkbS5wdGFfb3duZXIgPSBydHc4OV9tYWNfZ2V0X2N0cmxfcGF0aChydHdkZXYpO1xcbiBcXHRfZ2V0X2dudChydHdkZXYsIFxcdTAwMjZnbnRfY2ZnKTtcXG5AQCAtMTA5MzgsOSArMTExMDAsOCBAQCBzdGF0aWMgaW50IF9zaG93X21yZWdfdjIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBjaGFyICpidWYsIHNpemVfdCBidWZzeilcXG4gXFx0c3RydWN0IHJ0dzg5X2J0Y19idGZfZndpbmZvICpwZndpbmZvID0gXFx1MDAyNmJ0Yy1cXHUwMDNlZndpbmZvO1xcbiBcXHRzdHJ1Y3QgcnR3ODlfYnRjX3JwdF9jbW5faW5mbyAqcGNpbmZvID0gTlVMTDtcXG4gXFx0c3RydWN0IHJ0dzg5X2J0Y19mYnRjX21yZWdfdmFsX3YyICpwbXJlZyA9IE5VTEw7XFxuLVxcdHN0cnVjdCBydHc4OV9idGNfY3ggKmN4ID0gXFx1MDAyNmJ0Yy1cXHUwMDNlY3g7XFxuIFxcdHN0cnVjdCBydHc4OV9idGNfd2xfaW5mbyAqd2wgPSBcXHUwMDI2YnRjLVxcdTAwM2VjeC53bDtcXG4tXFx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFxcdTAwMjZidGMtXFx1MDAzZWN4LmJ0O1xcbitcXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXFx1MDAyNmJ0Yy1cXHUwMDNlY3guYnQwO1xcbiBcXHRzdHJ1Y3QgcnR3ODlfbWFjX2F4X2NvZXhfZ250IGdudF9jZmcgPSB7fTtcXG4gXFx0c3RydWN0IHJ0dzg5X21hY19heF9nbnQgZ250O1xcbiBcXHRjaGFyICpwID0gYnVmLCAqZW5kID0gYnVmICsgYnVmc3o7XFxuQEAgLTEwOTU1LDkgKzExMTE2LDkgQEAgc3RhdGljIGludCBfc2hvd19tcmVnX3YyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY2hhciAqYnVmLCBzaXplX3QgYnVmc3opXFxuIFxcdHAgKz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsXFxuIFxcdFxcdCAgICAgICBcXFwiICUtMTVzIDogV0wtXFx1MDAzZUJUOjB4JTA4eChjbnQ6JWQpLCBCVC1cXHUwMDNlV0w6MHglMDh4KHRvdGFsOiVkLCBidF91cGRhdGU6JWQpXFxcXG5cXFwiLFxcbiBcXHRcXHQgICAgICAgXFxcIltzY29yZWJvYXJkXVxcXCIsIHdsLVxcdTAwM2VzY2JkLFxcbi1cXHRcXHQgICAgICAgY3gtXFx1MDAzZWNudF93bFtCVENfV0NOVF9TQ0JEVVBEQVRFXSxcXG4tXFx0XFx0ICAgICAgIGJ0LVxcdTAwM2VzY2JkLCBjeC1cXHUwMDNlY250X2J0W0JUQ19CQ05UX1NDQkRSRUFEXSxcXG4tXFx0XFx0ICAgICAgIGN4LVxcdTAwM2VjbnRfYnRbQlRDX0JDTlRfU0NCRFVQREFURV0pO1xcbitcXHRcXHQgICAgICAgd2wtXFx1MDAzZXdjbnRbQlRDX1dDTlRfU0NCRFVQREFURV0sXFxuK1xcdFxcdCAgICAgICBidC1cXHUwMDNlc2NiZCwgYnQtXFx1MDAzZWJjbnRbQlRDX0JDTlRfU0NCRFJFQURdLFxcbitcXHRcXHQgICAgICAgYnQtXFx1MDAzZWJjbnRbQlRDX0JDTlRfU0NCRFVQREFURV0pO1xcbiBcXG4gXFx0YnRjLVxcdTAwM2VkbS5wdGFfb3duZXIgPSBydHc4OV9tYWNfZ2V0X2N0cmxfcGF0aChydHdkZXYpO1xcbiBcXHRfZ2V0X2dudChydHdkZXYsIFxcdTAwMjZnbnRfY2ZnKTtcXG5AQCAtMTEwMjUsNyArMTExODYsNyBAQCBzdGF0aWMgaW50IF9zaG93X21yZWdfdjcoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBjaGFyICpidWYsIHNpemVfdCBidWZzeilcXG4gXFx0c3RydWN0IHJ0dzg5X2J0Y19ycHRfY21uX2luZm8gKnBjaW5mbyA9IE5VTEw7XFxuIFxcdHN0cnVjdCBydHc4OV9idGNfY3ggKmN4ID0gXFx1MDAyNmJ0Yy1cXHUwMDNlY3g7XFxuIFxcdHN0cnVjdCBydHc4OV9idGNfd2xfaW5mbyAqd2wgPSBcXHUwMDI2Y3gtXFx1MDAzZXdsO1xcbi1cXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXFx1MDAyNmN4LVxcdTAwM2VidDtcXG4rXFx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFxcdTAwMjZjeC1cXHUwMDNlYnQwO1xcbiBcXHRzdHJ1Y3QgcnR3ODlfbWFjX2F4X2dudCAqZ250ID0gTlVMTDtcXG4gXFx0c3RydWN0IHJ0dzg5X2J0Y19kbSAqZG0gPSBcXHUwMDI2YnRjLVxcdTAwM2VkbTtcXG4gXFx0Y2hhciAqcCA9IGJ1ZiwgKmVuZCA9IGJ1ZiArIGJ1ZnN6O1xcbkBAIC0xMTA0MCw5ICsxMTIwMSw5IEBAIHN0YXRpYyBpbnQgX3Nob3dfbXJlZ192NyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnN6KVxcbiBcXHRwICs9IHNjbnByaW50ZihwLCBlbmQgLSBwLFxcbiBcXHRcXHQgICAgICAgXFxcIlxcXFxuXFxcXHIgJS0xNXMgOiBXTC1cXHUwMDNlQlQ6MHglMDh4KGNudDolZCksIEJULVxcdTAwM2VXTDoweCUwOHgodG90YWw6JWQsIGJ0X3VwZGF0ZTolZClcXFwiLFxcbiBcXHRcXHQgICAgICAgXFxcIltzY29yZWJvYXJkXVxcXCIsIHdsLVxcdTAwM2VzY2JkLFxcbi1cXHRcXHQgICAgICAgY3gtXFx1MDAzZWNudF93bFtCVENfV0NOVF9TQ0JEVVBEQVRFXSxcXG4tXFx0XFx0ICAgICAgIGJ0LVxcdTAwM2VzY2JkLCBjeC1cXHUwMDNlY250X2J0W0JUQ19CQ05UX1NDQkRSRUFEXSxcXG4tXFx0XFx0ICAgICAgIGN4LVxcdTAwM2VjbnRfYnRbQlRDX0JDTlRfU0NCRFVQREFURV0pO1xcbitcXHRcXHQgICAgICAgd2wtXFx1MDAzZXdjbnRbQlRDX1dDTlRfU0NCRFVQREFURV0sXFxuK1xcdFxcdCAgICAgICBidC1cXHUwMDNlc2NiZCwgYnQtXFx1MDAzZWJjbnRbQlRDX0JDTlRfU0NCRFJFQURdLFxcbitcXHRcXHQgICAgICAgYnQtXFx1MDAzZWJjbnRbQlRDX0JDTlRfU0NCRFVQREFURV0pO1xcbiBcXG4gXFx0LyogVG8gYXZvaWQgSS9PIGlmIFdMIExQUyBvciBwb3dlci1vZmYgICovXFxuIFxcdGRtLVxcdTAwM2VwdGFfb3duZXIgPSBydHc4OV9tYWNfZ2V0X2N0cmxfcGF0aChydHdkZXYpO1xcbkBAIC0xMTEwMyw3ICsxMTI2NCw3IEBAIHN0YXRpYyBpbnQgX3Nob3dfc3VtbWFyeV92MShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnN6KVxcbiBcXHRzdHJ1Y3QgcnR3ODlfYnRjX2N4ICpjeCA9IFxcdTAwMjZidGMtXFx1MDAzZWN4O1xcbiBcXHRzdHJ1Y3QgcnR3ODlfYnRjX2RtICpkbSA9IFxcdTAwMjZidGMtXFx1MDAzZWRtO1xcbiBcXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX2luZm8gKndsID0gXFx1MDAyNmN4LVxcdTAwM2V3bDtcXG4tXFx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFxcdTAwMjZjeC1cXHUwMDNlYnQ7XFxuK1xcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcXHUwMDI2Y3gtXFx1MDAzZWJ0MDtcXG4gXFx0dTMyIGNudF9zdW0gPSAwLCAqY250ID0gYnRjLVxcdTAwM2VkbS5jbnRfbm90aWZ5O1xcbiBcXHRjaGFyICpwID0gYnVmLCAqZW5kID0gYnVmICsgYnVmc3o7XFxuIFxcdHU4IGk7XFxuQEAgLTExMTQ2LDEwICsxMTMwNywxMCBAQCBzdGF0aWMgaW50IF9zaG93X3N1bW1hcnlfdjEoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBjaGFyICpidWYsIHNpemVfdCBidWZzeilcXG4gXFxuIFxcdFxcdHAgKz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsXFxuIFxcdFxcdFxcdCAgICAgICBcXFwiICUtMTVzIDogd2xfcmZrW3JlcTolZC9nbzolZC9yZWplY3Q6JWQvdGltZW91dDolZF1cXFwiLFxcbi1cXHRcXHRcXHQgICAgICAgXFxcIltSRktdXFxcIiwgY3gtXFx1MDAzZWNudF93bFtCVENfV0NOVF9SRktfUkVRXSxcXG4tXFx0XFx0XFx0ICAgICAgIGN4LVxcdTAwM2VjbnRfd2xbQlRDX1dDTlRfUkZLX0dPXSxcXG4tXFx0XFx0XFx0ICAgICAgIGN4LVxcdTAwM2VjbnRfd2xbQlRDX1dDTlRfUkZLX1JFSkVDVF0sXFxuLVxcdFxcdFxcdCAgICAgICBjeC1cXHUwMDNlY250X3dsW0JUQ19XQ05UX1JGS19USU1FT1VUXSk7XFxuK1xcdFxcdFxcdCAgICAgICBcXFwiW1JGS11cXFwiLCB3bC1cXHUwMDNld2NudFtCVENfV0NOVF9SRktfUkVRXSxcXG4rXFx0XFx0XFx0ICAgICAgIHdsLVxcdTAwM2V3Y250W0JUQ19XQ05UX1JGS19HT10sXFxuK1xcdFxcdFxcdCAgICAgICB3bC1cXHUwMDNld2NudFtCVENfV0NOVF9SRktfUkVKRUNUXSxcXG4rXFx0XFx0XFx0ICAgICAgIHdsLVxcdTAwM2V3Y250W0JUQ19XQ05UX1JGS19USU1FT1VUXSk7XFxuIFxcbiBcXHRcXHRwICs9IHNjbnByaW50ZihwLCBlbmQgLSBwLFxcbiBcXHRcXHRcXHQgICAgICAgXFxcIiwgYnRfcmZrW3JlcTolZC9nbzolZC9yZWplY3Q6JWQvdGltZW91dDolZC9mYWlsOiVkXVxcXFxuXFxcIixcXG5AQCAtMTEyMTIsNyArMTEzNzMsNyBAQCBzdGF0aWMgaW50IF9zaG93X3N1bW1hcnlfdjQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBjaGFyICpidWYsIHNpemVfdCBidWZzeilcXG4gXFx0c3RydWN0IHJ0dzg5X2J0Y19jeCAqY3ggPSBcXHUwMDI2YnRjLVxcdTAwM2VjeDtcXG4gXFx0c3RydWN0IHJ0dzg5X2J0Y19kbSAqZG0gPSBcXHUwMDI2YnRjLVxcdTAwM2VkbTtcXG4gXFx0c3RydWN0IHJ0dzg5X2J0Y193bF9pbmZvICp3bCA9IFxcdTAwMjZjeC1cXHUwMDNld2w7XFxuLVxcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcXHUwMDI2Y3gtXFx1MDAzZWJ0O1xcbitcXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXFx1MDAyNmN4LVxcdTAwM2VidDA7XFxuIFxcdHUzMiBjbnRfc3VtID0gMCwgKmNudCA9IGJ0Yy1cXHUwMDNlZG0uY250X25vdGlmeTtcXG4gXFx0Y2hhciAqcCA9IGJ1ZiwgKmVuZCA9IGJ1ZiArIGJ1ZnN6O1xcbiBcXHR1OCBpO1xcbkBAIC0xMTI2MSwxMCArMTE0MjIsMTAgQEAgc3RhdGljIGludCBfc2hvd19zdW1tYXJ5X3Y0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY2hhciAqYnVmLCBzaXplX3QgYnVmc3opXFxuIFxcbiBcXHRcXHRwICs9IHNjbnByaW50ZihwLCBlbmQgLSBwLFxcbiBcXHRcXHRcXHQgICAgICAgXFxcIiAlLTE1cyA6IHdsX3Jma1tyZXE6JWQvZ286JWQvcmVqZWN0OiVkL3RpbWVvdXQ6JWRdXFxcIixcXG4tXFx0XFx0XFx0ICAgICAgIFxcXCJbUkZLXVxcXCIsIGN4LVxcdTAwM2VjbnRfd2xbQlRDX1dDTlRfUkZLX1JFUV0sXFxuLVxcdFxcdFxcdCAgICAgICBjeC1cXHUwMDNlY250X3dsW0JUQ19XQ05UX1JGS19HT10sXFxuLVxcdFxcdFxcdCAgICAgICBjeC1cXHUwMDNlY250X3dsW0JUQ19XQ05UX1JGS19SRUpFQ1RdLFxcbi1cXHRcXHRcXHQgICAgICAgY3gtXFx1MDAzZWNudF93bFtCVENfV0NOVF9SRktfVElNRU9VVF0pO1xcbitcXHRcXHRcXHQgICAgICAgXFxcIltSRktdXFxcIiwgd2wtXFx1MDAzZXdjbnRbQlRDX1dDTlRfUkZLX1JFUV0sXFxuK1xcdFxcdFxcdCAgICAgICB3bC1cXHUwMDNld2NudFtCVENfV0NOVF9SRktfR09dLFxcbitcXHRcXHRcXHQgICAgICAgd2wtXFx1MDAzZXdjbnRbQlRDX1dDTlRfUkZLX1JFSkVDVF0sXFxuK1xcdFxcdFxcdCAgICAgICB3bC1cXHUwMDNld2NudFtCVENfV0NOVF9SRktfVElNRU9VVF0pO1xcbiBcXG4gXFx0XFx0cCArPSBzY25wcmludGYocCwgZW5kIC0gcCxcXG4gXFx0XFx0XFx0ICAgICAgIFxcXCIsIGJ0X3Jma1tyZXE6JWQvZ286JWQvcmVqZWN0OiVkL3RpbWVvdXQ6JWQvZmFpbDolZF1cXFxcblxcXCIsXFxuQEAgLTExMzc1LDEwICsxMTUzNiwxMCBAQCBzdGF0aWMgaW50IF9zaG93X3N1bW1hcnlfdjUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBjaGFyICpidWYsIHNpemVfdCBidWZzeilcXG4gXFxuIFxcdFxcdHAgKz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsXFxuIFxcdFxcdFxcdCAgICAgICBcXFwiICUtMTVzIDogd2xfcmZrW3JlcTolZC9nbzolZC9yZWplY3Q6JWQvdG91dDolZF1cXFwiLFxcbi1cXHRcXHRcXHQgICAgICAgXFxcIltSRksvTFBTXVxcXCIsIGN4LVxcdTAwM2VjbnRfd2xbQlRDX1dDTlRfUkZLX1JFUV0sXFxuLVxcdFxcdFxcdCAgICAgICBjeC1cXHUwMDNlY250X3dsW0JUQ19XQ05UX1JGS19HT10sXFxuLVxcdFxcdFxcdCAgICAgICBjeC1cXHUwMDNlY250X3dsW0JUQ19XQ05UX1JGS19SRUpFQ1RdLFxcbi1cXHRcXHRcXHQgICAgICAgY3gtXFx1MDAzZWNudF93bFtCVENfV0NOVF9SRktfVElNRU9VVF0pO1xcbitcXHRcXHRcXHQgICAgICAgXFxcIltSRksvTFBTXVxcXCIsIHdsLVxcdTAwM2V3Y250W0JUQ19XQ05UX1JGS19SRVFdLFxcbitcXHRcXHRcXHQgICAgICAgd2wtXFx1MDAzZXdjbnRbQlRDX1dDTlRfUkZLX0dPXSxcXG4rXFx0XFx0XFx0ICAgICAgIHdsLVxcdTAwM2V3Y250W0JUQ19XQ05UX1JGS19SRUpFQ1RdLFxcbitcXHRcXHRcXHQgICAgICAgd2wtXFx1MDAzZXdjbnRbQlRDX1dDTlRfUkZLX1RJTUVPVVRdKTtcXG4gXFxuIFxcdFxcdHAgKz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsXFxuIFxcdFxcdFxcdCAgICAgICBcXFwiLCBidF9yZmtbcmVxOiVkXVxcXCIsXFxuQEAgLTExNDk2LDEwICsxMTY1NywxMCBAQCBzdGF0aWMgaW50IF9zaG93X3N1bW1hcnlfdjEwNShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnN6KVxcbiBcXG4gXFx0XFx0cCArPSBzY25wcmludGYocCwgZW5kIC0gcCxcXG4gXFx0XFx0XFx0ICAgICAgIFxcXCIgJS0xNXMgOiB3bF9yZmtbcmVxOiVkL2dvOiVkL3JlamVjdDolZC90b3V0OiVkXVxcXCIsXFxuLVxcdFxcdFxcdCAgICAgICBcXFwiW1JGSy9MUFNdXFxcIiwgY3gtXFx1MDAzZWNudF93bFtCVENfV0NOVF9SRktfUkVRXSxcXG4tXFx0XFx0XFx0ICAgICAgIGN4LVxcdTAwM2VjbnRfd2xbQlRDX1dDTlRfUkZLX0dPXSxcXG4tXFx0XFx0XFx0ICAgICAgIGN4LVxcdTAwM2VjbnRfd2xbQlRDX1dDTlRfUkZLX1JFSkVDVF0sXFxuLVxcdFxcdFxcdCAgICAgICBjeC1cXHUwMDNlY250X3dsW0JUQ19XQ05UX1JGS19USU1FT1VUXSk7XFxuK1xcdFxcdFxcdCAgICAgICBcXFwiW1JGSy9MUFNdXFxcIiwgd2wtXFx1MDAzZXdjbnRbQlRDX1dDTlRfUkZLX1JFUV0sXFxuK1xcdFxcdFxcdCAgICAgICB3bC1cXHUwMDNld2NudFtCVENfV0NOVF9SRktfR09dLFxcbitcXHRcXHRcXHQgICAgICAgd2wtXFx1MDAzZXdjbnRbQlRDX1dDTlRfUkZLX1JFSkVDVF0sXFxuK1xcdFxcdFxcdCAgICAgICB3bC1cXHUwMDNld2NudFtCVENfV0NOVF9SRktfVElNRU9VVF0pO1xcbiBcXG4gXFx0XFx0cCArPSBzY25wcmludGYocCwgZW5kIC0gcCxcXG4gXFx0XFx0XFx0ICAgICAgIFxcXCIsIGJ0X3Jma1tyZXE6JWRdXFxcIixcXG5AQCAtMTE2MjEsMTAgKzExNzgyLDEwIEBAIHN0YXRpYyBpbnQgX3Nob3dfc3VtbWFyeV92NyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnN6KVxcbiBcXG4gXFx0XFx0cCArPSBzY25wcmludGYocCwgZW5kIC0gcCxcXG4gXFx0XFx0XFx0ICAgICAgIFxcXCJcXFxcblxcXFxyICUtMTVzIDogd2xfcmZrW3JlcTolZC9nbzolZC9yZWplY3Q6JWQvdG91dDolZC90aW1lOiVkbXNdXFxcIixcXG4tXFx0XFx0XFx0ICAgICAgIFxcXCJbUkZLL0xQU11cXFwiLCBjeC1cXHUwMDNlY250X3dsW0JUQ19XQ05UX1JGS19SRVFdLFxcbi1cXHRcXHRcXHQgICAgICAgY3gtXFx1MDAzZWNudF93bFtCVENfV0NOVF9SRktfR09dLFxcbi1cXHRcXHRcXHQgICAgICAgY3gtXFx1MDAzZWNudF93bFtCVENfV0NOVF9SRktfUkVKRUNUXSxcXG4tXFx0XFx0XFx0ICAgICAgIGN4LVxcdTAwM2VjbnRfd2xbQlRDX1dDTlRfUkZLX1RJTUVPVVRdLFxcbitcXHRcXHRcXHQgICAgICAgXFxcIltSRksvTFBTXVxcXCIsIHdsLVxcdTAwM2V3Y250W0JUQ19XQ05UX1JGS19SRVFdLFxcbitcXHRcXHRcXHQgICAgICAgd2wtXFx1MDAzZXdjbnRbQlRDX1dDTlRfUkZLX0dPXSxcXG4rXFx0XFx0XFx0ICAgICAgIHdsLVxcdTAwM2V3Y250W0JUQ19XQ05UX1JGS19SRUpFQ1RdLFxcbitcXHRcXHRcXHQgICAgICAgd2wtXFx1MDAzZXdjbnRbQlRDX1dDTlRfUkZLX1RJTUVPVVRdLFxcbiBcXHRcXHRcXHQgICAgICAgd2wtXFx1MDAzZXJma19pbmZvLnByb2NfdGltZSk7XFxuIFxcbiBcXHRcXHRwICs9IHNjbnByaW50ZihwLCBlbmQgLSBwLCBcXFwiLCBidF9yZmtbcmVxOiVkXVxcXCIsXFxuQEAgLTExNzM0LDEwICsxMTg5NSwxMCBAQCBzdGF0aWMgaW50IF9zaG93X3N1bW1hcnlfdjgoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBjaGFyICpidWYsIHNpemVfdCBidWZzeilcXG4gXFxuIFxcdFxcdHAgKz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsXFxuIFxcdFxcdFxcdCAgICAgICBcXFwiXFxcXG5cXFxcciAlLTE1cyA6IHdsX3Jma1tyZXE6JWQvZ286JWQvcmVqZWN0OiVkL3RvdXQ6JWQvdGltZTolZG1zXVxcXCIsXFxuLVxcdFxcdFxcdCAgICAgICBcXFwiW1JGSy9MUFNdXFxcIiwgY3gtXFx1MDAzZWNudF93bFtCVENfV0NOVF9SRktfUkVRXSxcXG4tXFx0XFx0XFx0ICAgICAgIGN4LVxcdTAwM2VjbnRfd2xbQlRDX1dDTlRfUkZLX0dPXSxcXG4tXFx0XFx0XFx0ICAgICAgIGN4LVxcdTAwM2VjbnRfd2xbQlRDX1dDTlRfUkZLX1JFSkVDVF0sXFxuLVxcdFxcdFxcdCAgICAgICBjeC1cXHUwMDNlY250X3dsW0JUQ19XQ05UX1JGS19USU1FT1VUXSxcXG4rXFx0XFx0XFx0ICAgICAgIFxcXCJbUkZLL0xQU11cXFwiLCB3bC1cXHUwMDNld2NudFtCVENfV0NOVF9SRktfUkVRXSxcXG4rXFx0XFx0XFx0ICAgICAgIHdsLVxcdTAwM2V3Y250W0JUQ19XQ05UX1JGS19HT10sXFxuK1xcdFxcdFxcdCAgICAgICB3bC1cXHUwMDNld2NudFtCVENfV0NOVF9SRktfUkVKRUNUXSxcXG4rXFx0XFx0XFx0ICAgICAgIHdsLVxcdTAwM2V3Y250W0JUQ19XQ05UX1JGS19USU1FT1VUXSxcXG4gXFx0XFx0XFx0ICAgICAgIHdsLVxcdTAwM2VyZmtfaW5mby5wcm9jX3RpbWUpO1xcbiBcXG4gXFx0XFx0cCArPSBzY25wcmludGYocCwgZW5kIC0gcCwgXFxcIiwgYnRfcmZrW3JlcTolZF1cXFwiLFxcbkBAIC0xMTg4Niw3ICsxMjA0Nyw3IEBAIHZvaWQgcnR3ODlfY29leF9yZWNvZ25pemVfdmVyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG4gXFxuIHZvaWQgcnR3ODlfYnRjX250ZnlfcHJlc2VydmVfYnRfdGltZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiBtcylcXG4ge1xcbi1cXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2xpbmtfaW5mbyAqYnRfbGluZm8gPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2VidGMuY3guYnQubGlua19pbmZvO1xcbitcXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2xpbmtfaW5mbyAqYnRfbGluZm8gPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2VidGMuY3guYnQwLmxpbmtfaW5mbztcXG4gXFx0c3RydWN0IHJ0dzg5X2J0Y19idF9hMmRwX2Rlc2MgYTJkcCA9IGJ0X2xpbmZvLVxcdTAwM2VhMmRwX2Rlc2M7XFxuIFxcbiBcXHRpZiAodGVzdF9iaXQoUlRXODlfRkxBR19TRVJfSEFORExJTkcsIHJ0d2Rldi1cXHUwMDNlZmxhZ3MpKVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5oXFxuaW5kZXggZWEyYzFlNWQ3MGY1MTguLjZhYzE0NjExNjA3Yzk1IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5oXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmhcXG5AQCAtMzI5LDcgKzMyOSw3IEBAIHN0YXRpYyBpbmxpbmUgdTE2IHJ0dzg5X2NvZXhfcXVlcnlfYnRfcmVxX2xlbihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuIHtcXG4gXFx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXFx1MDAyNnJ0d2Rldi1cXHUwMDNlYnRjO1xcbiBcXG4tXFx0cmV0dXJuIGJ0Yy1cXHUwMDNlYnRfcmVxX2xlbjtcXG4rXFx0cmV0dXJuIGJ0Yy1cXHUwMDNlYnRfcmVxX2xlbltwaHlfaWR4XTtcXG4gfVxcbiBcXG4gc3RhdGljIGlubGluZSB1MzIgcnR3ODlfZ2V0X2FudHBhdGhfdHlwZSh1OCBwaHlfbWFwLCB1OCB0eXBlKVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oXFxuaW5kZXggNTU0Nzg4OGQ3ZTY3YTQuLjY5NDdmNGMyYzI1ZDhiIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmhcXG5AQCAtMTQ0NSw2ICsxNDQ1LDEyIEBAIGVudW0gcnR3ODlfYnRjX2J0X3N0YXRlX2NudCB7XFxuIFxcdEJUQ19CQ05UX05VTSxcXG4gfTtcXG4gXFxuK2VudW0gcnR3ODlfYnRjX2J0X3JmX2JhbmQge1xcbitcXHRCVENfQlRfQjJHID0gMHgwLCAvKiAyLjRHSHogKi9cXG4rXFx0QlRDX0JUX0I1RyA9IDB4MSwgLyogNUdIeiBvciA2R0h6ICovXFxuK1xcdEJUQ19CVF9CTUFYID0gMHgyXFxuK307XFxuK1xcbiBlbnVtIHJ0dzg5X2J0Y19idF9wcm9maWxlIHtcXG4gXFx0QlRDX0JUX05PUFJPRklMRSA9IDAsXFxuIFxcdEJUQ19CVF9IRlAgPSBCSVQoMCksXFxuQEAgLTE5NzUsMTAgKzE5ODEsMjUgQEAgc3RydWN0IHJ0dzg5X2J0Y19idF9saW5rX2luZm8ge1xcbiBcXHR1MzIgcnN2ZDogMTk7XFxuIH07XFxuIFxcbi1zdHJ1Y3QgcnR3ODlfYnRjXzNyZGN4X2luZm8ge1xcbi1cXHR1OCB0eXBlOyAgIC8qIDA6IG5vbmUsIDE6emlnYmVlLCAyOkxURSAgKi9cXG4tXFx0dTggaHdfY29leDtcXG4tXFx0dTE2IHJzdmQ7XFxuK3N0cnVjdCBydHc4OV9idGNfZXh0c29jX2luZm8ge1xcbitcXHR1OCBjaGlwX2lkO1xcbitcXHR1OCBtYXhfdHhfcHdyO1xcbitcXHR1OCByZl9iYW5kX21hcDtcXG4rXFx0dTggYW50X2lzb190b193bDtcXG4rXFxuK1xcdHU4IGxpbmtfd2VpZ2h0W0JUQ19CVF9CTUFYXTtcXG4rXFxuK1xcdHU4IGZ1bmNfdHlwZTsgLyogMDogbm9uZSwgMTp6aWdiZWUsIDI6TFRFICovXFxuK1xcdHU4IGh3X2NvZXg7IC8qIEhhcmQtV2lyZSBjb2V4IGludGVyZmFjZSBzdXBwb3J0ICovXFxuK1xcdHU4IHB0YV90eXBlOyAvKiAwOiBSVEsgNC13aXJlIG1vZGUsIDE6IDMtd2lyZSBtb2RlICovXFxuK1xcdHU4IHB0YV9yZXFfZXhpc3Q7XFxuK1xcbitcXHR1MzIgaHB0YV9jZmc7XFxuK1xcdHUzMiBobWJ4X2NmZztcXG4rXFx0dTMyIHN3b3V0X2NmZztcXG4rXFx0dTMyIHN3aW5fY2ZnO1xcbitcXHR1MzIgcHJvZmlsZV9tYXBbQlRDX0JUX0JNQVhdO1xcbitcXHR1MzIgYmNudFtCVENfQkNOVF9OVU1dO1xcbiB9O1xcbiBcXG4gc3RydWN0IHJ0dzg5X2J0Y19kbV9lbWFwIHtcXG5AQCAtMjA3OCw2ICsyMDk5LDcgQEAgc3RydWN0IHJ0dzg5X2J0Y193bF9pbmZvIHtcXG4gXFx0Ym9vbCBsaW5rX21vZGVfY2hnO1xcbiBcXHRib29sIGRiY2NfY2hnO1xcbiBcXHR1MzIgc2NiZDtcXG4rXFx0dTMyIHdjbnRbQlRDX1dDTlRfTlVNXTtcXG4gfTtcXG4gXFxuIHN0cnVjdCBydHc4OV9idGNfbW9kdWxlIHtcXG5AQCAtMjI0OSw2ICsyMjcxLDE2IEBAIHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyB7XFxuIFxcdHUzMiBzY2FuX2luZm9fdXBkYXRlOiAxO1xcbiBcXHR1MzIgbG5hX2NvbnN0cmFpbjogMztcXG4gXFx0dTMyIHJzdmQ6IDE3O1xcbitcXG4rXFx0dTMyIGJjbnRbQlRDX0JDTlRfTlVNXTtcXG4rfTtcXG4rXFxuKyNkZWZpbmUgUlRXODlfQlRDX1dMX0RFRl9UWF9QV1IgR0VOTUFTSyg3LCAwKVxcbitzdHJ1Y3QgcnR3ODlfYnRjX3JmX3RyeF9wYXJhX3YwIHtcXG4rXFx0dTMyIHdsX3R4X3Bvd2VyOyAvKiBhYnNvbHV0ZSBUeCBwb3dlciAoZEJtKSwgMHhmZi1cXHUwMDNlIG5vIEJUQyBjb250cm9sICovXFxuK1xcdHUzMiB3bF9yeF9nYWluOyAgLyogcnggZ2FpbiB0YWJsZSBpbmRleCAoVEJELikgKi9cXG4rXFx0dTggYnRfdHhfcG93ZXI7IC8qIGRlY3JlYXNlIFR4IHBvd2VyIChkQikgKi9cXG4rXFx0dTggYnRfcnhfZ2FpbjsgIC8qIExOQSBjb25zdHJhaW4gbGV2ZWwgKi9cXG4gfTtcXG4gXFxuIHN0cnVjdCBydHc4OV9idGNfcmZfdHJ4X3BhcmFfdjkge1xcbkBAIC0yMjYyLDExICsyMjk0LDExIEBAIHN0cnVjdCBydHc4OV9idGNfcmZfdHJ4X3BhcmFfdjkge1xcbiBcXG4gc3RydWN0IHJ0dzg5X2J0Y19jeCB7XFxuIFxcdHN0cnVjdCBydHc4OV9idGNfd2xfaW5mbyB3bDtcXG4tXFx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvIGJ0O1xcbi1cXHRzdHJ1Y3QgcnR3ODlfYnRjXzNyZGN4X2luZm8gb3RoZXI7XFxuK1xcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyBidDA7XFxuK1xcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyBidDE7XFxuK1xcdHN0cnVjdCBydHc4OV9idGNfZXh0c29jX2luZm8gYnRfZXh0O1xcbitcXHRzdHJ1Y3QgcnR3ODlfYnRjX3JmX3RyeF9wYXJhX3Y5IHJmX3BhcmE7XFxuIFxcdHUzMiBzdGF0ZV9tYXA7XFxuLVxcdHUzMiBjbnRfYnRbQlRDX0JDTlRfTlVNXTtcXG4tXFx0dTMyIGNudF93bFtCVENfV0NOVF9OVU1dO1xcbiB9O1xcbiBcXG4gc3RydWN0IHJ0dzg5X2J0Y19mYnRjX3RkbWEge1xcbkBAIC0zMDQ1LDI0ICszMDc3LDE4IEBAIHN0cnVjdCBydHc4OV9idGNfZmJ0Y19idGRldmluZm8ge1xcbiBcXHRfX2xlMzIgZmx1c2hfdGltZTtcXG4gfSBfX3BhY2tlZDtcXG4gXFxuLSNkZWZpbmUgUlRXODlfQlRDX1dMX0RFRl9UWF9QV1IgR0VOTUFTSyg3LCAwKVxcbi1zdHJ1Y3QgcnR3ODlfYnRjX3JmX3RyeF9wYXJhIHtcXG4tXFx0dTMyIHdsX3R4X3Bvd2VyOyAvKiBhYnNvbHV0ZSBUeCBwb3dlciAoZEJtKSwgMHhmZi1cXHUwMDNlIG5vIEJUQyBjb250cm9sICovXFxuLVxcdHUzMiB3bF9yeF9nYWluOyAgLyogcnggZ2FpbiB0YWJsZSBpbmRleCAoVEJELikgKi9cXG4tXFx0dTggYnRfdHhfcG93ZXI7IC8qIGRlY3JlYXNlIFR4IHBvd2VyIChkQikgKi9cXG4tXFx0dTggYnRfcnhfZ2FpbjsgIC8qIExOQSBjb25zdHJhaW4gbGV2ZWwgKi9cXG4tfTtcXG4tXFxuIHN0cnVjdCBydHc4OV9idGNfdHJ4X2luZm8ge1xcbiBcXHR1OCB0eF9sdmw7XFxuIFxcdHU4IHJ4X2x2bDtcXG4gXFx0dTggd2xfcnNzaTtcXG4gXFx0dTggYnRfcnNzaTtcXG4gXFxuLVxcdHM4IHR4X3Bvd2VyOyAvKiBhYnNvbHV0ZSBUeCBwb3dlciAoZEJtKSwgMHhmZi1cXHUwMDNlIG5vIEJUQyBjb250cm9sICovXFxuLVxcdHM4IHJ4X2dhaW47ICAvKiByeCBnYWluIHRhYmxlIGluZGV4IChUQkQuKSAqL1xcbi1cXHRzOCBidF90eF9wb3dlcjsgLyogZGVjcmVhc2UgVHggcG93ZXIgKGRCKSAqL1xcbi1cXHRzOCBidF9yeF9nYWluOyAgLyogTE5BIGNvbnN0cmFpbiBsZXZlbCAqL1xcbitcXHRzOCB3bF90eF9wb3dlcltSVFc4OV9QSFlfTlVNXTsgLyogYWJzb2x1dGUgVHggcG93ZXIgKGRCbSksIDB4ZmYtXFx1MDAzZSBubyBCVEMgY29udHJvbCAqL1xcbitcXHRzOCB3bF9yeF9nYWluW1JUVzg5X1BIWV9OVU1dOyAgLyogcnggZ2FpbiB0YWJsZSBpbmRleCAoVEJELikgKi9cXG4rXFx0czggYnRfdHhfcG93ZXJbQlRDX0FMTF9CVF07IC8qIGRlY3JlYXNlIFR4IHBvd2VyIChkQikgKi9cXG4rXFx0czggYnRfcnhfZ2FpbltCVENfQUxMX0JUXTsgIC8qIExOQSBjb25zdHJhaW4gbGV2ZWwgKi9cXG4rXFx0czggemJfdHhfcG93ZXJbQlRDX0FMTF9CVF07XFxuK1xcdHM4IHpiX3J4X2dhaW5bQlRDX0FMTF9CVF07XFxuIFxcbiBcXHR1OCBjbjsgLyogY29uZGl0aW9uX251bSAqL1xcbiBcXHRzOCBuaG07XFxuQEAgLTMxMDksNyArMzEzNSw3IEBAIHN0cnVjdCBydHc4OV9idGNfZG0ge1xcbiBcXHRzdHJ1Y3QgcnR3ODlfYnRjX2ZidGNfdGRtYSB0ZG1hX25vdztcXG4gXFx0c3RydWN0IHJ0dzg5X21hY19heF9jb2V4X2dudCBnbnQ7XFxuIFxcdHVuaW9uIHJ0dzg5X2J0Y19pbml0X2luZm9fdSBpbml0X2luZm87IC8qIHBhc3MgdG8gd2xfZncgaWYgb2ZmbG9hZCAqL1xcbi1cXHRzdHJ1Y3QgcnR3ODlfYnRjX3JmX3RyeF9wYXJhIHJmX3RyeF9wYXJhO1xcbitcXHRzdHJ1Y3QgcnR3ODlfYnRjX3JmX3RyeF9wYXJhX3Y5IHJmX3RyeF9wYXJhO1xcbiBcXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX3R4X2xpbWl0X3BhcmEgd2xfdHhfbGltaXQ7XFxuIFxcdHN0cnVjdCBydHc4OV9idGNfZG1fc3RlcCBkbV9zdGVwO1xcbiBcXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX3NjY19jdHJsIHdsX3NjYztcXG5AQCAtMzE0Niw2ICszMTcyLDcgQEAgc3RydWN0IHJ0dzg5X2J0Y19kbSB7XFxuIFxcbiBcXHR1OCBydW5fcmVhc29uO1xcbiBcXHR1OCBydW5fYWN0aW9uO1xcbitcXHR1OCB3bF90eF9wd3JfcGh5X21hcDtcXG4gXFxuIFxcdHU4IHdsX3ByZV9hZ2M6IDI7XFxuIFxcdHU4IHdsX2xuYTI6IDE7XFxuQEAgLTMxNTMsNiArMzE4MCwxMCBAQCBzdHJ1Y3QgcnR3ODlfYnRjX2RtIHtcXG4gXFx0dTggd2xfcHJlX2FnY19yYjogMjtcXG4gXFx0dTggYnRfc2VsZWN0OiAyOyAvKiAwOnMwLCAxOnMxLCAyOnMwIFxcdTAwMjYgczEsIHJlZmVyIHRvIGVudW0gYnRjX2J0X2luZGV4ICovXFxuIFxcdHU4IHNsb3RfcmVxX21vcmU6IDE7XFxuK1xcdHU4IGxwc19jdHJsX3NjYmQ6IDE7XFxuK1xcbitcXHR1OCBscHNfY3RybF9zY2JkX2xhc3Q6IDE7XFxuK1xcdHU4IGxwc19jdHJsX2NoYW5nZTogMTtcXG4gfTtcXG4gXFxuIHN0cnVjdCBydHc4OV9idGNfY3RybCB7XFxuQEAgLTMxOTMsNiArMzIyNCw5IEBAIGVudW0gcnR3ODlfYnRjX2J0Zl9md19ldmVudCB7XFxuIFxcdEJURl9FVk5UX0JVRl9PVkVSRkxPVyxcXG4gXFx0QlRGX0VWTlRfQzJIX0xPT1BCQUNLLFxcbiBcXHRCVEZfRVZOVF9CVF9RVUVSWV9UWFBXUiwgLyogZndjMmhmdW5jIFxcdTAwM2UgMyAqL1xcbitcXHRCVEZfRVZOVF9aQl9JTkZPID0gMTEsXFxuK1xcdEJURl9FVk5UX1pCX0NIID0gMTIsXFxuK1xcdEJURl9FVk5UX1pCX1FVRVJZX1RYUFdSID0gMTMsXFxuIFxcdEJURl9FVk5UX01BWCxcXG4gfTtcXG4gXFxuQEAgLTMzMzQsMTIgKzMzNjgsMTMgQEAgc3RydWN0IHJ0dzg5X2J0Y192ZXIge1xcbiBcXG4gXFx0dTggZndldm50cnB0bDtcXG4gXFx0dTggZndjMmhmdW5jO1xcbi1cXHR1OCBkcnZpbmZvX3R5cGU7XFxuK1xcdHU4IGRydmluZm9fdmVyO1xcbiBcXHR1MTYgaW5mb19idWY7XFxuIFxcdHU4IG1heF9yb2xlX251bTtcXG4gXFx0dTggZmN4b3NpO1xcbiBcXHR1OCBmY3htbG87XFxuIFxcdHU4IGJ0X2Rlc2lyZWQ7XFxuK1xcdHU4IGZjeHRyeDtcXG4gfTtcXG4gXFxuIHN0cnVjdCBydHc4OV9idGNfYnRmX2Z3aW5mbyB7XFxuQEAgLTMzODUsNyArMzQyMCw3IEBAIHN0cnVjdCBydHc4OV9idGMge1xcbiBcXHRzdHJ1Y3Qgd2lwaHlfd29yayBkaGNwX25vdGlmeV93b3JrO1xcbiBcXHRzdHJ1Y3Qgd2lwaHlfd29yayBpY21wX25vdGlmeV93b3JrO1xcbiBcXG4tXFx0dTMyIGJ0X3JlcV9sZW47XFxuK1xcdHUzMiBidF9yZXFfbGVuW1JUVzg5X1BIWV9OVU1dO1xcbiBcXG4gXFx0dTggcG9saWN5W1JUVzg5X0JUQ19QT0xJQ1lfTUFYTEVOXTtcXG4gXFx0dTggYW50X3R5cGU7XFxuQEAgLTMzOTcsNiArMzQzMiw3IEBAIHN0cnVjdCBydHc4OV9idGMge1xcbiBcXHRib29sIHVwZGF0ZV9wb2xpY3lfZm9yY2U7XFxuIFxcdGJvb2wgbHBzO1xcbiBcXHRib29sIG1hbnVhbF9jdHJsO1xcbitcXHRib29sIGNsaV9oMmNfY21kO1xcbiB9O1xcbiBcXG4gZW51bSBydHc4OV9idGNfaG1zZyB7XFxuQEAgLTQ3NDUsMTAgKzQ3ODEsMTAgQEAgc3RydWN0IHJ0dzg5X2NoaXBfaW5mbyB7XFxuIFxcbiBcXHR1OCBtb25fcmVnX251bTtcXG4gXFx0Y29uc3Qgc3RydWN0IHJ0dzg5X2J0Y19mYnRjX21yZWcgKm1vbl9yZWc7XFxuLVxcdHU4IHJmX3BhcmFfdWxpbmtfbnVtO1xcbi1cXHRjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3JmX3RyeF9wYXJhICpyZl9wYXJhX3VsaW5rO1xcbi1cXHR1OCByZl9wYXJhX2RsaW5rX251bTtcXG4tXFx0Y29uc3Qgc3RydWN0IHJ0dzg5X2J0Y19yZl90cnhfcGFyYSAqcmZfcGFyYV9kbGluaztcXG4rXFx0Y29uc3Qgc3RydWN0IHJ0dzg5X2J0Y19yZl90cnhfcGFyYV92MCAqcmZfcGFyYV91bGlua192MDtcXG4rXFx0Y29uc3Qgc3RydWN0IHJ0dzg5X2J0Y19yZl90cnhfcGFyYV92MCAqcmZfcGFyYV9kbGlua192MDtcXG4rXFx0dTggcmZfcGFyYV91bGlua19udW1fdjA7XFxuK1xcdHU4IHJmX3BhcmFfZGxpbmtfbnVtX3YwO1xcbiBcXHRjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3JmX3RyeF9wYXJhX3Y5ICpyZl9wYXJhX3VsaW5rX3Y5O1xcbiBcXHRjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3JmX3RyeF9wYXJhX3Y5ICpyZl9wYXJhX2RsaW5rX3Y5O1xcbiBcXHR1OCByZl9wYXJhX3VsaW5rX251bV92OTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jXFxuaW5kZXggZDZhNTk0Yjc1YWIyMDIuLjgwNGFlMmExMTMwZDBmIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuY1xcbkBAIC02MzAzLDQ4ICs2MzAzLDE1OCBAQCBpbnQgcnR3ODlfZndfaDJjX2N4ZHJ2X2N0cmxfdjcoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCB0eXBlKVxcbiBcXHRyZXR1cm4gcmV0O1xcbiB9XFxuIFxcbi0jZGVmaW5lIEgyQ19MRU5fQ1hEUlZJTkZPX1RSWCAoMjggKyBIMkNfTEVOX0NYRFJWSERSKVxcbi1pbnQgcnR3ODlfZndfaDJjX2N4ZHJ2X3RyeChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHR5cGUpXFxuK2ludCBydHc4OV9md19oMmNfY3hkcnZfdHJ4X3Y3KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggdHlwZSlcXG4ge1xcbiBcXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2VidGM7XFxuK1xcdHN0cnVjdCBydHc4OV9idGNfcmZfdHJ4X3BhcmFfdjkgcmZfcGFyYSA9IGJ0Yy1cXHUwMDNlZG0ucmZfdHJ4X3BhcmE7XFxuIFxcdHN0cnVjdCBydHc4OV9idGNfdHJ4X2luZm8gKnRyeCA9IFxcdTAwMjZidGMtXFx1MDAzZWRtLnRyeF9pbmZvO1xcbitcXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX2luZm8gKndsID0gXFx1MDAyNmJ0Yy1cXHUwMDNlY3gud2w7XFxuK1xcdHN0cnVjdCBydHc4OV9oMmNfY3h0cnhfdjcgKmgyYztcXG4rXFx0dTMyIGxlbiA9IHNpemVvZigqaDJjKTtcXG4gXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4tXFx0dTggKmNtZDtcXG4gXFx0aW50IHJldDtcXG4rXFx0dTggaTtcXG4gXFxuLVxcdHNrYiA9IHJ0dzg5X2Z3X2gyY19hbGxvY19za2Jfd2l0aF9oZHIocnR3ZGV2LCBIMkNfTEVOX0NYRFJWSU5GT19UUlgpO1xcbitcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgUlRXODlfUEhZX05VTTsgaSsrKSB7XFxuK1xcdFxcdHRyeC1cXHUwMDNld2xfdHhfcG93ZXJbaV0gPSB1MzJfZ2V0X2JpdHMocmZfcGFyYS53bF90eF9wb3dlcltpXSxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0ICAgUlRXODlfQlRDX1dMX0RFRl9UWF9QV1IpO1xcbitcXHRcXHR0cngtXFx1MDAzZXdsX3J4X2dhaW5baV0gPSB1MzJfZ2V0X2JpdHMocmZfcGFyYS53bF9yeF9nYWluW2ldLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgIFJUVzg5X0JUQ19XTF9ERUZfVFhfUFdSKTtcXG4rXFx0fVxcbitcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgQlRDX0FMTF9CVDsgaSsrKSB7XFxuK1xcdFxcdHRyeC1cXHUwMDNlYnRfdHhfcG93ZXJbaV0gPSB1MzJfZ2V0X2JpdHMocmZfcGFyYS5idF90eF9wb3dlcltpXSxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0ICAgUlRXODlfQlRDX1dMX0RFRl9UWF9QV1IpO1xcbitcXHRcXHR0cngtXFx1MDAzZWJ0X3J4X2dhaW5baV0gPSB1MzJfZ2V0X2JpdHMocmZfcGFyYS5idF9yeF9nYWluW2ldLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgIFJUVzg5X0JUQ19XTF9ERUZfVFhfUFdSKTtcXG4rXFx0XFx0dHJ4LVxcdTAwM2V6Yl90eF9wb3dlcltpXSA9IHUzMl9nZXRfYml0cyhyZl9wYXJhLnpiX3R4X3Bvd2VyW2ldLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgICBSVFc4OV9CVENfV0xfREVGX1RYX1BXUik7XFxuK1xcdFxcdHRyeC1cXHUwMDNlemJfcnhfZ2FpbltpXSA9IHUzMl9nZXRfYml0cyhyZl9wYXJhLnpiX3J4X2dhaW5baV0sXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCAgUlRXODlfQlRDX1dMX0RFRl9UWF9QV1IpO1xcbitcXHR9XFxuK1xcdHRyeC1cXHUwMDNlY24gPSB3bC1cXHUwMDNlY25fcmVwb3J0O1xcbitcXHR0cngtXFx1MDAzZW5obSA9IHdsLVxcdTAwM2VuaG0ucHdyO1xcbitcXG4rXFx0c2tiID0gcnR3ODlfZndfaDJjX2FsbG9jX3NrYl93aXRoX2hkcihydHdkZXYsIGxlbik7XFxuIFxcdGlmICghc2tiKSB7XFxuLVxcdFxcdHJ0dzg5X2VycihydHdkZXYsIFxcXCJmYWlsZWQgdG8gYWxsb2Mgc2tiIGZvciBoMmMgY3hkcnZfdHJ4XFxcXG5cXFwiKTtcXG4rXFx0XFx0cnR3ODlfZXJyKHJ0d2RldiwgXFxcImZhaWxlZCB0byBhbGxvYyBza2IgZm9yIGgyYyBjeHRyeF92OVxcXFxuXFxcIik7XFxuIFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiBcXHR9XFxuLVxcdHNrYl9wdXQoc2tiLCBIMkNfTEVOX0NYRFJWSU5GT19UUlgpO1xcbi1cXHRjbWQgPSBza2ItXFx1MDAzZWRhdGE7XFxuK1xcdHNrYl9wdXQoc2tiLCBsZW4pO1xcbitcXHRoMmMgPSAoc3RydWN0IHJ0dzg5X2gyY19jeHRyeF92NyAqKXNrYi1cXHUwMDNlZGF0YTtcXG4gXFxuLVxcdFJUVzg5X1NFVF9GV0NNRF9DWEhEUl9UWVBFKGNtZCwgdHlwZSk7XFxuLVxcdFJUVzg5X1NFVF9GV0NNRF9DWEhEUl9MRU4oY21kLCBIMkNfTEVOX0NYRFJWSU5GT19UUlggLSBIMkNfTEVOX0NYRFJWSERSKTtcXG4tXFxuLVxcdFJUVzg5X1NFVF9GV0NNRF9DWFRSWF9UWExWKGNtZCwgdHJ4LVxcdTAwM2V0eF9sdmwpO1xcbi1cXHRSVFc4OV9TRVRfRldDTURfQ1hUUlhfUlhMVihjbWQsIHRyeC1cXHUwMDNlcnhfbHZsKTtcXG4tXFx0UlRXODlfU0VUX0ZXQ01EX0NYVFJYX1dMUlNTSShjbWQsIHRyeC1cXHUwMDNld2xfcnNzaSk7XFxuLVxcdFJUVzg5X1NFVF9GV0NNRF9DWFRSWF9CVFJTU0koY21kLCB0cngtXFx1MDAzZWJ0X3Jzc2kpO1xcbi1cXHRSVFc4OV9TRVRfRldDTURfQ1hUUlhfVFhQV1IoY21kLCB0cngtXFx1MDAzZXR4X3Bvd2VyKTtcXG4tXFx0UlRXODlfU0VUX0ZXQ01EX0NYVFJYX1JYR0FJTihjbWQsIHRyeC1cXHUwMDNlcnhfZ2Fpbik7XFxuLVxcdFJUVzg5X1NFVF9GV0NNRF9DWFRSWF9CVFRYUFdSKGNtZCwgdHJ4LVxcdTAwM2VidF90eF9wb3dlcik7XFxuLVxcdFJUVzg5X1NFVF9GV0NNRF9DWFRSWF9CVFJYR0FJTihjbWQsIHRyeC1cXHUwMDNlYnRfcnhfZ2Fpbik7XFxuLVxcdFJUVzg5X1NFVF9GV0NNRF9DWFRSWF9DTihjbWQsIHRyeC1cXHUwMDNlY24pO1xcbi1cXHRSVFc4OV9TRVRfRldDTURfQ1hUUlhfTkhNKGNtZCwgdHJ4LVxcdTAwM2VuaG0pO1xcbi1cXHRSVFc4OV9TRVRfRldDTURfQ1hUUlhfQlRQUk9GSUxFKGNtZCwgdHJ4LVxcdTAwM2VidF9wcm9maWxlKTtcXG4tXFx0UlRXODlfU0VUX0ZXQ01EX0NYVFJYX1JTVkQyKGNtZCwgdHJ4LVxcdTAwM2Vyc3ZkMik7XFxuLVxcdFJUVzg5X1NFVF9GV0NNRF9DWFRSWF9UWFJBVEUoY21kLCB0cngtXFx1MDAzZXR4X3JhdGUpO1xcbi1cXHRSVFc4OV9TRVRfRldDTURfQ1hUUlhfUlhSQVRFKGNtZCwgdHJ4LVxcdTAwM2VyeF9yYXRlKTtcXG4tXFx0UlRXODlfU0VUX0ZXQ01EX0NYVFJYX1RYVFAoY21kLCB0cngtXFx1MDAzZXR4X3RwKTtcXG4tXFx0UlRXODlfU0VUX0ZXQ01EX0NYVFJYX1JYVFAoY21kLCB0cngtXFx1MDAzZXJ4X3RwKTtcXG4tXFx0UlRXODlfU0VUX0ZXQ01EX0NYVFJYX1JYRVJSUkEoY21kLCB0cngtXFx1MDAzZXJ4X2Vycl9yYXRpbyk7XFxuK1xcdGgyYy1cXHUwMDNlaGRyLnR5cGUgPSB0eXBlO1xcbitcXHRoMmMtXFx1MDAzZWhkci52ZXIgPSBidGMtXFx1MDAzZXZlci1cXHUwMDNlZmN4dHJ4O1xcbitcXHRoMmMtXFx1MDAzZWhkci5sZW4gPSBzaXplb2YoKmgyYykgLSBIMkNfTEVOX0NYRFJWSERSX1Y3O1xcbitcXG4rXFx0aDJjLVxcdTAwM2V2N191OC50eF9sdmwgPSB0cngtXFx1MDAzZXR4X2x2bDtcXG4rXFx0aDJjLVxcdTAwM2V2N191OC5yeF9sdmwgPSB0cngtXFx1MDAzZXJ4X2x2bDtcXG4rXFx0aDJjLVxcdTAwM2V2N191OC53bF9yc3NpID0gdHJ4LVxcdTAwM2V3bF9yc3NpO1xcbitcXHRoMmMtXFx1MDAzZXY3X3U4LmJ0X3Jzc2kgPSB0cngtXFx1MDAzZWJ0X3Jzc2k7XFxuK1xcdGgyYy1cXHUwMDNldjdfdTgud2xfdHhfcG93ZXIgPSB0cngtXFx1MDAzZXdsX3R4X3Bvd2VyW1JUVzg5X1BIWV8wXTtcXG4rXFx0aDJjLVxcdTAwM2V2N191OC53bF9yeF9nYWluID0gdHJ4LVxcdTAwM2V3bF9yeF9nYWluW1JUVzg5X1BIWV8wXTtcXG4rXFx0aDJjLVxcdTAwM2V2N191OC5idF90eF9wb3dlciA9IHRyeC1cXHUwMDNlYnRfdHhfcG93ZXJbQlRDX0JUXzFTVF07XFxuK1xcdGgyYy1cXHUwMDNldjdfdTguYnRfcnhfZ2FpbiA9IHRyeC1cXHUwMDNlYnRfcnhfZ2FpbltCVENfQlRfMVNUXTtcXG4rXFx0aDJjLVxcdTAwM2V2N191OC56Yl90eF9wb3dlciA9IHRyeC1cXHUwMDNlemJfdHhfcG93ZXJbQlRDX0JUXzFTVF07XFxuK1xcdGgyYy1cXHUwMDNldjdfdTguemJfcnhfZ2FpbiA9IHRyeC1cXHUwMDNlemJfcnhfZ2FpbltCVENfQlRfMVNUXTtcXG4rXFx0aDJjLVxcdTAwM2V2N191OC5jbiA9IHRyeC1cXHUwMDNlY247XFxuK1xcdGgyYy1cXHUwMDNldjdfdTgubmhtID0gdHJ4LVxcdTAwM2VuaG07XFxuK1xcdGgyYy1cXHUwMDNldjdfdTguYnRfcHJvZmlsZSA9IHRyeC1cXHUwMDNlYnRfcHJvZmlsZTtcXG4rXFx0aDJjLVxcdTAwM2V2N191OC5yc3ZkMiA9IHRyeC1cXHUwMDNlcnN2ZDI7XFxuK1xcdGgyYy1cXHUwMDNldjdfbGUudHhfcmF0ZSA9IGNwdV90b19sZTE2KHRyeC1cXHUwMDNldHhfcmF0ZSk7XFxuK1xcdGgyYy1cXHUwMDNldjdfbGUucnhfcmF0ZSA9IGNwdV90b19sZTE2KHRyeC1cXHUwMDNlcnhfcmF0ZSk7XFxuK1xcdGgyYy1cXHUwMDNldjdfbGUudHhfdHAgPSBjcHVfdG9fbGUzMih0cngtXFx1MDAzZXR4X3RwKTtcXG4rXFx0aDJjLVxcdTAwM2V2N19sZS5yeF90cCA9IGNwdV90b19sZTMyKHRyeC1cXHUwMDNlcnhfdHApO1xcbitcXHRoMmMtXFx1MDAzZXY3X2xlLnJ4X2Vycl9yYXRpbyA9IGNwdV90b19sZTMyKHRyeC1cXHUwMDNlcnhfZXJyX3JhdGlvKTtcXG4gXFxuIFxcdHJ0dzg5X2gyY19wa3Rfc2V0X2hkcihydHdkZXYsIHNrYiwgRldDTURfVFlQRV9IMkMsXFxuIFxcdFxcdFxcdCAgICAgIEgyQ19DQVRfT1VUU1JDLCBCVEZDX1NFVCxcXG4tXFx0XFx0XFx0ICAgICAgU0VUX0RSVl9JTkZPLCAwLCAwLFxcbi1cXHRcXHRcXHQgICAgICBIMkNfTEVOX0NYRFJWSU5GT19UUlgpO1xcbitcXHRcXHRcXHQgICAgICBTRVRfRFJWX0lORk8sIDAsIDAsIGxlbik7XFxuK1xcbitcXHRyZXQgPSBydHc4OV9oMmNfdHgocnR3ZGV2LCBza2IsIGZhbHNlKTtcXG4rXFx0aWYgKHJldCkge1xcbitcXHRcXHRydHc4OV9lcnIocnR3ZGV2LCBcXFwiZmFpbGVkIHRvIHNlbmQgaDJjXFxcXG5cXFwiKTtcXG4rXFx0XFx0Z290byBmYWlsO1xcbitcXHR9XFxuK1xcbitcXHRyZXR1cm4gMDtcXG4rZmFpbDpcXG4rXFx0ZGV2X2tmcmVlX3NrYl9hbnkoc2tiKTtcXG4rXFxuK1xcdHJldHVybiByZXQ7XFxuK31cXG4rXFxuK2ludCBydHc4OV9md19oMmNfY3hkcnZfdHJ4X3Y5KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggdHlwZSlcXG4re1xcbitcXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2VidGM7XFxuK1xcdHN0cnVjdCBydHc4OV9idGNfcmZfdHJ4X3BhcmFfdjkgcmZfcGFyYSA9IGJ0Yy1cXHUwMDNlZG0ucmZfdHJ4X3BhcmE7XFxuK1xcdHN0cnVjdCBydHc4OV9idGNfdHJ4X2luZm8gKnRyeCA9IFxcdTAwMjZidGMtXFx1MDAzZWRtLnRyeF9pbmZvO1xcbitcXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX2luZm8gKndsID0gXFx1MDAyNmJ0Yy1cXHUwMDNlY3gud2w7XFxuK1xcdHN0cnVjdCBydHc4OV9oMmNfY3h0cnhfdjkgKmgyYztcXG4rXFx0dTMyIGxlbiA9IHNpemVvZigqaDJjKTtcXG4rXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4rXFx0aW50IHJldDtcXG4rXFx0dTggaTtcXG4rXFxuK1xcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBSVFc4OV9QSFlfTlVNOyBpKyspIHtcXG4rXFx0XFx0dHJ4LVxcdTAwM2V3bF90eF9wb3dlcltpXSA9IHUzMl9nZXRfYml0cyhyZl9wYXJhLndsX3R4X3Bvd2VyW2ldLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgICBSVFc4OV9CVENfV0xfREVGX1RYX1BXUik7XFxuK1xcdFxcdHRyeC1cXHUwMDNld2xfcnhfZ2FpbltpXSA9IHUzMl9nZXRfYml0cyhyZl9wYXJhLndsX3J4X2dhaW5baV0sXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCAgUlRXODlfQlRDX1dMX0RFRl9UWF9QV1IpO1xcbitcXHR9XFxuK1xcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBCVENfQUxMX0JUOyBpKyspIHtcXG4rXFx0XFx0dHJ4LVxcdTAwM2VidF90eF9wb3dlcltpXSA9IHUzMl9nZXRfYml0cyhyZl9wYXJhLmJ0X3R4X3Bvd2VyW2ldLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgICBSVFc4OV9CVENfV0xfREVGX1RYX1BXUik7XFxuK1xcdFxcdHRyeC1cXHUwMDNlYnRfcnhfZ2FpbltpXSA9IHUzMl9nZXRfYml0cyhyZl9wYXJhLmJ0X3J4X2dhaW5baV0sXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCAgUlRXODlfQlRDX1dMX0RFRl9UWF9QV1IpO1xcbitcXHRcXHR0cngtXFx1MDAzZXpiX3R4X3Bvd2VyW2ldID0gdTMyX2dldF9iaXRzKHJmX3BhcmEuemJfdHhfcG93ZXJbaV0sXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCAgIFJUVzg5X0JUQ19XTF9ERUZfVFhfUFdSKTtcXG4rXFx0XFx0dHJ4LVxcdTAwM2V6Yl9yeF9nYWluW2ldID0gdTMyX2dldF9iaXRzKHJmX3BhcmEuemJfcnhfZ2FpbltpXSxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0ICBSVFc4OV9CVENfV0xfREVGX1RYX1BXUik7XFxuK1xcdH1cXG4rXFx0dHJ4LVxcdTAwM2VjbiA9IHdsLVxcdTAwM2Vjbl9yZXBvcnQ7XFxuK1xcdHRyeC1cXHUwMDNlbmhtID0gd2wtXFx1MDAzZW5obS5wd3I7XFxuK1xcbitcXHRza2IgPSBydHc4OV9md19oMmNfYWxsb2Nfc2tiX3dpdGhfaGRyKHJ0d2RldiwgbGVuKTtcXG4rXFx0aWYgKCFza2IpIHtcXG4rXFx0XFx0cnR3ODlfZXJyKHJ0d2RldiwgXFxcImZhaWxlZCB0byBhbGxvYyBza2IgZm9yIGgyYyBjeHRyeF92OVxcXFxuXFxcIik7XFxuK1xcdFxcdHJldHVybiAtRU5PTUVNO1xcbitcXHR9XFxuK1xcdHNrYl9wdXQoc2tiLCBsZW4pO1xcbitcXHRoMmMgPSAoc3RydWN0IHJ0dzg5X2gyY19jeHRyeF92OSAqKXNrYi1cXHUwMDNlZGF0YTtcXG4rXFxuK1xcdGgyYy1cXHUwMDNlaGRyLnR5cGUgPSB0eXBlO1xcbitcXHRoMmMtXFx1MDAzZWhkci52ZXIgPSBidGMtXFx1MDAzZXZlci1cXHUwMDNlZmN4dHJ4O1xcbitcXHRoMmMtXFx1MDAzZWhkci5sZW4gPSBzaXplb2YoKmgyYykgLSBIMkNfTEVOX0NYRFJWSERSX1Y3O1xcbitcXG4rXFx0aDJjLVxcdTAwM2V2OV91OC50eF9sdmwgPSB0cngtXFx1MDAzZXR4X2x2bDtcXG4rXFx0aDJjLVxcdTAwM2V2OV91OC5yeF9sdmwgPSB0cngtXFx1MDAzZXJ4X2x2bDtcXG4rXFx0aDJjLVxcdTAwM2V2OV91OC53bF9yc3NpID0gdHJ4LVxcdTAwM2V3bF9yc3NpO1xcbitcXHRoMmMtXFx1MDAzZXY5X3U4LmJ0X3Jzc2kgPSB0cngtXFx1MDAzZWJ0X3Jzc2k7XFxuK1xcbitcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgUlRXODlfUEhZX05VTTsgaSsrKSB7XFxuK1xcdFxcdGgyYy1cXHUwMDNldjlfdTgud2xfdHhfcG93ZXJbaV0gPSB0cngtXFx1MDAzZXdsX3R4X3Bvd2VyW2ldO1xcbitcXHRcXHRoMmMtXFx1MDAzZXY5X3U4LndsX3J4X2dhaW5baV0gPSB0cngtXFx1MDAzZXdsX3J4X2dhaW5baV07XFxuK1xcdH1cXG4rXFxuK1xcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBCVENfQUxMX0JUOyBpKyspIHtcXG4rXFx0XFx0aDJjLVxcdTAwM2V2OV91OC5idF90eF9wb3dlcltpXSA9IHRyeC1cXHUwMDNlYnRfdHhfcG93ZXJbaV07XFxuK1xcdFxcdGgyYy1cXHUwMDNldjlfdTguYnRfcnhfZ2FpbltpXSA9IHRyeC1cXHUwMDNlYnRfcnhfZ2FpbltpXTtcXG4rXFx0XFx0aDJjLVxcdTAwM2V2OV91OC56Yl90eF9wb3dlcltpXSA9IHRyeC1cXHUwMDNlemJfdHhfcG93ZXJbaV07XFxuK1xcdFxcdGgyYy1cXHUwMDNldjlfdTguemJfcnhfZ2FpbltpXSA9IHRyeC1cXHUwMDNlemJfcnhfZ2FpbltpXTtcXG4rXFx0fVxcbitcXHRoMmMtXFx1MDAzZXY5X3U4LmNuID0gdHJ4LVxcdTAwM2VjbjtcXG4rXFx0aDJjLVxcdTAwM2V2OV91OC5uaG0gPSB0cngtXFx1MDAzZW5obTtcXG4rXFx0aDJjLVxcdTAwM2V2OV91OC5idF9wcm9maWxlID0gdHJ4LVxcdTAwM2VidF9wcm9maWxlO1xcbitcXHRoMmMtXFx1MDAzZXY5X3U4LnJzdmQyID0gdHJ4LVxcdTAwM2Vyc3ZkMjtcXG4rXFx0aDJjLVxcdTAwM2V2OV9sZS50eF9yYXRlID0gY3B1X3RvX2xlMTYodHJ4LVxcdTAwM2V0eF9yYXRlKTtcXG4rXFx0aDJjLVxcdTAwM2V2OV9sZS5yeF9yYXRlID0gY3B1X3RvX2xlMTYodHJ4LVxcdTAwM2VyeF9yYXRlKTtcXG4rXFx0aDJjLVxcdTAwM2V2OV9sZS50eF90cCA9IGNwdV90b19sZTMyKHRyeC1cXHUwMDNldHhfdHApO1xcbitcXHRoMmMtXFx1MDAzZXY5X2xlLnJ4X3RwID0gY3B1X3RvX2xlMzIodHJ4LVxcdTAwM2VyeF90cCk7XFxuK1xcdGgyYy1cXHUwMDNldjlfbGUucnhfZXJyX3JhdGlvID0gY3B1X3RvX2xlMzIodHJ4LVxcdTAwM2VyeF9lcnJfcmF0aW8pO1xcbitcXG4rXFx0cnR3ODlfaDJjX3BrdF9zZXRfaGRyKHJ0d2Rldiwgc2tiLCBGV0NNRF9UWVBFX0gyQyxcXG4rXFx0XFx0XFx0ICAgICAgSDJDX0NBVF9PVVRTUkMsIEJURkNfU0VULFxcbitcXHRcXHRcXHQgICAgICBTRVRfRFJWX0lORk8sIDAsIDAsIGxlbik7XFxuIFxcbiBcXHRyZXQgPSBydHc4OV9oMmNfdHgocnR3ZGV2LCBza2IsIGZhbHNlKTtcXG4gXFx0aWYgKHJldCkge1xcbkBAIC02NDA0LDYgKzY1MTQsOTAgQEAgaW50IHJ0dzg5X2Z3X2gyY19jeGRydl9yZmsoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCB0eXBlKVxcbiBcXHRyZXR1cm4gcmV0O1xcbiB9XFxuIFxcbitpbnQgcnR3ODlfZndfaDJjX2N4dHhwd3Jfdjcoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCB0eXBlKVxcbit7XFxuK1xcdHN0cnVjdCBydHc4OV9idGMgKmJ0YyA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZWJ0YztcXG4rXFx0c3RydWN0IHJ0dzg5X2J0Y19kbSAqZG0gPSBcXHUwMDI2YnRjLVxcdTAwM2VkbTtcXG4rXFx0c3RydWN0IHJ0dzg5X2J0Y19yZl90cnhfcGFyYV92OSBycCA9IGRtLVxcdTAwM2VyZl90cnhfcGFyYTtcXG4rXFx0c3RydWN0IHJ0dzg5X2gyY19jeHR4cHdyX3Y3ICpoMmM7XFxuK1xcdHUzMiBsZW4gPSBzaXplb2YoKmgyYyk7XFxuK1xcdHN0cnVjdCBza19idWZmICpza2I7XFxuK1xcdGludCByZXQ7XFxuK1xcbitcXHRza2IgPSBydHc4OV9md19oMmNfYWxsb2Nfc2tiX3dpdGhfaGRyKHJ0d2RldiwgbGVuKTtcXG4rXFx0aWYgKCFza2IpIHtcXG4rXFx0XFx0cnR3ODlfZXJyKHJ0d2RldiwgXFxcImZhaWxlZCB0byBhbGxvYyBza2IgZm9yIGgyYyBjeGRydl9jdHJsXFxcXG5cXFwiKTtcXG4rXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuK1xcdH1cXG4rXFx0c2tiX3B1dChza2IsIGxlbik7XFxuK1xcdGgyYyA9IChzdHJ1Y3QgcnR3ODlfaDJjX2N4dHhwd3JfdjcgKilza2ItXFx1MDAzZWRhdGE7XFxuK1xcbitcXHRoMmMtXFx1MDAzZWhkci50eXBlID0gdHlwZTtcXG4rXFx0aDJjLVxcdTAwM2VoZHIudmVyID0gYnRjLVxcdTAwM2V2ZXItXFx1MDAzZWZjeHRyeDtcXG4rXFx0aDJjLVxcdTAwM2VoZHIubGVuID0gc2l6ZW9mKCpoMmMpIC0gSDJDX0xFTl9DWERSVkhEUl9WNztcXG4rXFx0aDJjLVxcdTAwM2Vwd3IgPSBycC53bF90eF9wb3dlcltSVFc4OV9QSFlfMF0gXFx1MDAyNiAweGZmO1xcbitcXG4rXFx0cnR3ODlfaDJjX3BrdF9zZXRfaGRyKHJ0d2Rldiwgc2tiLCBGV0NNRF9UWVBFX0gyQyxcXG4rXFx0XFx0XFx0ICAgICAgSDJDX0NBVF9PVVRTUkMsIEJURkNfU0VULFxcbitcXHRcXHRcXHQgICAgICBTRVRfRFJWX0lORk8sIDAsIDAsIGxlbik7XFxuK1xcbitcXHRyZXQgPSBydHc4OV9oMmNfdHgocnR3ZGV2LCBza2IsIGZhbHNlKTtcXG4rXFx0aWYgKHJldCkge1xcbitcXHRcXHRydHc4OV9lcnIocnR3ZGV2LCBcXFwiZmFpbGVkIHRvIHNlbmQgaDJjXFxcXG5cXFwiKTtcXG4rXFx0XFx0Z290byBmYWlsO1xcbitcXHR9XFxuK1xcbitcXHRyZXR1cm4gMDtcXG4rZmFpbDpcXG4rXFx0ZGV2X2tmcmVlX3NrYl9hbnkoc2tiKTtcXG4rXFxuK1xcdHJldHVybiByZXQ7XFxuK31cXG4rXFxuK2ludCBydHc4OV9md19oMmNfY3h0eHB3cl92OShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHR5cGUpXFxuK3tcXG4rXFx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXFx1MDAyNnJ0d2Rldi1cXHUwMDNlYnRjO1xcbitcXHRzdHJ1Y3QgcnR3ODlfYnRjX2RtICpkbSA9IFxcdTAwMjZidGMtXFx1MDAzZWRtO1xcbitcXHRzdHJ1Y3QgcnR3ODlfYnRjX3JmX3RyeF9wYXJhX3Y5IHJwID0gZG0tXFx1MDAzZXJmX3RyeF9wYXJhO1xcbitcXHRzdHJ1Y3QgcnR3ODlfaDJjX2N4dHhwd3JfdjkgKmgyYztcXG4rXFx0dTMyIGxlbiA9IHNpemVvZigqaDJjKTtcXG4rXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4rXFx0aW50IHJldDtcXG4rXFxuK1xcdHNrYiA9IHJ0dzg5X2Z3X2gyY19hbGxvY19za2Jfd2l0aF9oZHIocnR3ZGV2LCBsZW4pO1xcbitcXHRpZiAoIXNrYikge1xcbitcXHRcXHRydHc4OV9lcnIocnR3ZGV2LCBcXFwiZmFpbGVkIHRvIGFsbG9jIHNrYiBmb3IgaDJjIGN4ZHJ2X2N0cmxcXFxcblxcXCIpO1xcbitcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4rXFx0fVxcbitcXHRza2JfcHV0KHNrYiwgbGVuKTtcXG4rXFx0aDJjID0gKHN0cnVjdCBydHc4OV9oMmNfY3h0eHB3cl92OSAqKXNrYi1cXHUwMDNlZGF0YTtcXG4rXFxuK1xcdGgyYy1cXHUwMDNlaGRyLnR5cGUgPSB0eXBlO1xcbitcXHRoMmMtXFx1MDAzZWhkci52ZXIgPSBidGMtXFx1MDAzZXZlci1cXHUwMDNlZmN4dHJ4O1xcbitcXHRoMmMtXFx1MDAzZWhkci5sZW4gPSBzaXplb2YoKmgyYykgLSBIMkNfTEVOX0NYRFJWSERSX1Y3O1xcbitcXHRpZiAoZG0tXFx1MDAzZXdsX3R4X3B3cl9waHlfbWFwID09IEJJVChSVFc4OV9QSFlfMSkpXFxuK1xcdFxcdGgyYy1cXHUwMDNlcHdyID0gcnAud2xfdHhfcG93ZXJbUlRXODlfUEhZXzFdIFxcdTAwMjYgMHhmZjtcXG4rXFx0ZWxzZVxcbitcXHRcXHRoMmMtXFx1MDAzZXB3ciA9IHJwLndsX3R4X3Bvd2VyW1JUVzg5X1BIWV8wXSBcXHUwMDI2IDB4ZmY7XFxuK1xcdGgyYy1cXHUwMDNlYmFuZCA9IGRtLVxcdTAwM2V3bF90eF9wd3JfcGh5X21hcDtcXG4rXFxuK1xcdHJ0dzg5X2gyY19wa3Rfc2V0X2hkcihydHdkZXYsIHNrYiwgRldDTURfVFlQRV9IMkMsXFxuK1xcdFxcdFxcdCAgICAgIEgyQ19DQVRfT1VUU1JDLCBCVEZDX1NFVCxcXG4rXFx0XFx0XFx0ICAgICAgU0VUX0RSVl9JTkZPLCAwLCAwLCBsZW4pO1xcbitcXG4rXFx0cmV0ID0gcnR3ODlfaDJjX3R4KHJ0d2Rldiwgc2tiLCBmYWxzZSk7XFxuK1xcdGlmIChyZXQpIHtcXG4rXFx0XFx0cnR3ODlfZXJyKHJ0d2RldiwgXFxcImZhaWxlZCB0byBzZW5kIGgyY1xcXFxuXFxcIik7XFxuK1xcdFxcdGdvdG8gZmFpbDtcXG4rXFx0fVxcbitcXG4rXFx0cmV0dXJuIDA7XFxuK2ZhaWw6XFxuK1xcdGRldl9rZnJlZV9za2JfYW55KHNrYik7XFxuK1xcbitcXHRyZXR1cm4gcmV0O1xcbit9XFxuK1xcbiAjZGVmaW5lIEgyQ19MRU5fUEtUX09GTEQgNFxcbiBpbnQgcnR3ODlfZndfaDJjX2RlbF9wa3Rfb2ZmbG9hZChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IGlkKVxcbiB7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuaFxcbmluZGV4IDIwNzIxZDUyMDlhYTNhLi4zNmM4NDMwYTJlN2FlYiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmhcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmhcXG5AQCAtMjQ5OSw2ICsyNDk5LDc2IEBAIHN0cnVjdCBydHc4OV9oMmNfY3hpbml0IHtcXG4gXFx0dTggcnN2ZDE7XFxuIH0gX19wYWNrZWQ7XFxuIFxcbitzdHJ1Y3QgcnR3ODlfYnRjX3RyeF9pbmZvX3U4IHtcXG4rXFx0dTggdHhfbHZsO1xcbitcXHR1OCByeF9sdmw7XFxuK1xcdHU4IHdsX3Jzc2k7XFxuK1xcdHU4IGJ0X3Jzc2k7XFxuK1xcbitcXHRzOCB3bF90eF9wb3dlcltSVFc4OV9QSFlfTlVNXTsgLyogYWJzb2x1dGUgVHggcG93ZXIgKGRCbSksIDB4ZmYtXFx1MDAzZSBubyBCVEMgY29udHJvbCAqL1xcbitcXHRzOCB3bF9yeF9nYWluW1JUVzg5X1BIWV9OVU1dOyAgLyogcnggZ2FpbiB0YWJsZSBpbmRleCAoVEJELikgKi9cXG4rXFx0czggYnRfdHhfcG93ZXJbQlRDX0FMTF9CVF07IC8qIGRlY3JlYXNlIFR4IHBvd2VyIChkQikgKi9cXG4rXFx0czggYnRfcnhfZ2FpbltCVENfQUxMX0JUXTsgIC8qIExOQSBjb25zdHJhaW4gbGV2ZWwgKi9cXG4rXFx0czggemJfdHhfcG93ZXJbQlRDX0FMTF9CVF07XFxuK1xcdHM4IHpiX3J4X2dhaW5bQlRDX0FMTF9CVF07XFxuK1xcbitcXHR1OCBjbjsgLyogY29uZGl0aW9uX251bSAqL1xcbitcXHRzOCBuaG07XFxuK1xcdHU4IGJ0X3Byb2ZpbGU7XFxuK1xcdHU4IHJzdmQyO1xcbit9IF9fcGFja2VkO1xcbitcXG4rc3RydWN0IHJ0dzg5X2J0Y190cnhfaW5mb192N191OCB7XFxuK1xcdHU4IHR4X2x2bDtcXG4rXFx0dTggcnhfbHZsO1xcbitcXHR1OCB3bF9yc3NpO1xcbitcXHR1OCBidF9yc3NpO1xcbitcXG4rXFx0czggd2xfdHhfcG93ZXI7XFxuK1xcdHM4IHdsX3J4X2dhaW47XFxuK1xcdHM4IGJ0X3R4X3Bvd2VyO1xcbitcXHRzOCBidF9yeF9nYWluO1xcbitcXHRzOCB6Yl90eF9wb3dlcjtcXG4rXFx0czggemJfcnhfZ2FpbjtcXG4rXFxuK1xcdHU4IGNuO1xcbitcXHRzOCBuaG07XFxuK1xcdHU4IGJ0X3Byb2ZpbGU7XFxuK1xcdHU4IHJzdmQyO1xcbit9IF9fcGFja2VkO1xcbitcXG4rc3RydWN0IHJ0dzg5X2J0Y190cnhfaW5mb19sZSB7XFxuK1xcdF9fbGUxNiB0eF9yYXRlO1xcbitcXHRfX2xlMTYgcnhfcmF0ZTtcXG4rXFxuK1xcdF9fbGUzMiB0eF90cDtcXG4rXFx0X19sZTMyIHJ4X3RwO1xcbitcXHRfX2xlMzIgcnhfZXJyX3JhdGlvO1xcbit9IF9fcGFja2VkO1xcbitcXG4rc3RydWN0IHJ0dzg5X2gyY19jeHRyeF92OSB7XFxuK1xcdHN0cnVjdCBydHc4OV9oMmNfY3hoZHJfdjcgaGRyO1xcbitcXHRzdHJ1Y3QgcnR3ODlfYnRjX3RyeF9pbmZvX3U4IHY5X3U4O1xcbitcXHRzdHJ1Y3QgcnR3ODlfYnRjX3RyeF9pbmZvX2xlIHY5X2xlO1xcbit9IF9fcGFja2VkO1xcbitcXG4rc3RydWN0IHJ0dzg5X2gyY19jeHRyeF92NyB7XFxuK1xcdHN0cnVjdCBydHc4OV9oMmNfY3hoZHJfdjcgaGRyO1xcbitcXHRzdHJ1Y3QgcnR3ODlfYnRjX3RyeF9pbmZvX3Y3X3U4IHY3X3U4O1xcbitcXHRzdHJ1Y3QgcnR3ODlfYnRjX3RyeF9pbmZvX2xlIHY3X2xlO1xcbit9IF9fcGFja2VkO1xcbitcXG4rc3RydWN0IHJ0dzg5X2gyY19jeHR4cHdyX3Y3IHtcXG4rXFx0c3RydWN0IHJ0dzg5X2gyY19jeGhkcl92NyBoZHI7XFxuK1xcdHU4IHB3cjtcXG4rfSBfX3BhY2tlZDtcXG4rXFxuK3N0cnVjdCBydHc4OV9oMmNfY3h0eHB3cl92OSB7XFxuK1xcdHN0cnVjdCBydHc4OV9oMmNfY3hoZHJfdjcgaGRyO1xcbitcXHR1OCBwd3I7XFxuK1xcdHU4IGJhbmQ7XFxuK30gX19wYWNrZWQ7XFxuK1xcbiAjZGVmaW5lIFJUVzg5X0gyQ19DWElOSVRfQU5UX0lORk9fUE9TIEJJVCgwKVxcbiAjZGVmaW5lIFJUVzg5X0gyQ19DWElOSVRfQU5UX0lORk9fRElWRVJTSVRZIEJJVCgxKVxcbiAjZGVmaW5lIFJUVzg5X0gyQ19DWElOSVRfQU5UX0lORk9fQlRHX1BPUyBHRU5NQVNLKDMsIDIpXFxuQEAgLTI3NjAsOTEgKzI4MzAsNiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgUlRXODlfU0VUX0ZXQ01EX0NYQ1RSTF9UUkFDRV9TVEVQKHZvaWQgKmNtZCwgdTMyIHZhbClcXG4gXFx0bGUzMnBfcmVwbGFjZV9iaXRzKChfX2xlMzIgKikoKHU4ICopKGNtZCkgKyAyKSwgdmFsLCBHRU5NQVNLKDE4LCAzKSk7XFxuIH1cXG4gXFxuLXN0YXRpYyBpbmxpbmUgdm9pZCBSVFc4OV9TRVRfRldDTURfQ1hUUlhfVFhMVih2b2lkICpjbWQsIHU4IHZhbClcXG4te1xcbi1cXHR1OHBfcmVwbGFjZV9iaXRzKCh1OCAqKWNtZCArIDIsIHZhbCwgR0VOTUFTSyg3LCAwKSk7XFxuLX1cXG4tXFxuLXN0YXRpYyBpbmxpbmUgdm9pZCBSVFc4OV9TRVRfRldDTURfQ1hUUlhfUlhMVih2b2lkICpjbWQsIHU4IHZhbClcXG4te1xcbi1cXHR1OHBfcmVwbGFjZV9iaXRzKCh1OCAqKWNtZCArIDMsIHZhbCwgR0VOTUFTSyg3LCAwKSk7XFxuLX1cXG4tXFxuLXN0YXRpYyBpbmxpbmUgdm9pZCBSVFc4OV9TRVRfRldDTURfQ1hUUlhfV0xSU1NJKHZvaWQgKmNtZCwgdTggdmFsKVxcbi17XFxuLVxcdHU4cF9yZXBsYWNlX2JpdHMoKHU4ICopY21kICsgNCwgdmFsLCBHRU5NQVNLKDcsIDApKTtcXG4tfVxcbi1cXG4tc3RhdGljIGlubGluZSB2b2lkIFJUVzg5X1NFVF9GV0NNRF9DWFRSWF9CVFJTU0kodm9pZCAqY21kLCB1OCB2YWwpXFxuLXtcXG4tXFx0dThwX3JlcGxhY2VfYml0cygodTggKiljbWQgKyA1LCB2YWwsIEdFTk1BU0soNywgMCkpO1xcbi19XFxuLVxcbi1zdGF0aWMgaW5saW5lIHZvaWQgUlRXODlfU0VUX0ZXQ01EX0NYVFJYX1RYUFdSKHZvaWQgKmNtZCwgczggdmFsKVxcbi17XFxuLVxcdHU4cF9yZXBsYWNlX2JpdHMoKHU4ICopY21kICsgNiwgdmFsLCBHRU5NQVNLKDcsIDApKTtcXG4tfVxcbi1cXG4tc3RhdGljIGlubGluZSB2b2lkIFJUVzg5X1NFVF9GV0NNRF9DWFRSWF9SWEdBSU4odm9pZCAqY21kLCBzOCB2YWwpXFxuLXtcXG4tXFx0dThwX3JlcGxhY2VfYml0cygodTggKiljbWQgKyA3LCB2YWwsIEdFTk1BU0soNywgMCkpO1xcbi19XFxuLVxcbi1zdGF0aWMgaW5saW5lIHZvaWQgUlRXODlfU0VUX0ZXQ01EX0NYVFJYX0JUVFhQV1Iodm9pZCAqY21kLCBzOCB2YWwpXFxuLXtcXG4tXFx0dThwX3JlcGxhY2VfYml0cygodTggKiljbWQgKyA4LCB2YWwsIEdFTk1BU0soNywgMCkpO1xcbi19XFxuLVxcbi1zdGF0aWMgaW5saW5lIHZvaWQgUlRXODlfU0VUX0ZXQ01EX0NYVFJYX0JUUlhHQUlOKHZvaWQgKmNtZCwgczggdmFsKVxcbi17XFxuLVxcdHU4cF9yZXBsYWNlX2JpdHMoKHU4ICopY21kICsgOSwgdmFsLCBHRU5NQVNLKDcsIDApKTtcXG4tfVxcbi1cXG4tc3RhdGljIGlubGluZSB2b2lkIFJUVzg5X1NFVF9GV0NNRF9DWFRSWF9DTih2b2lkICpjbWQsIHU4IHZhbClcXG4te1xcbi1cXHR1OHBfcmVwbGFjZV9iaXRzKCh1OCAqKWNtZCArIDEwLCB2YWwsIEdFTk1BU0soNywgMCkpO1xcbi19XFxuLVxcbi1zdGF0aWMgaW5saW5lIHZvaWQgUlRXODlfU0VUX0ZXQ01EX0NYVFJYX05ITSh2b2lkICpjbWQsIHM4IHZhbClcXG4te1xcbi1cXHR1OHBfcmVwbGFjZV9iaXRzKCh1OCAqKWNtZCArIDExLCB2YWwsIEdFTk1BU0soNywgMCkpO1xcbi19XFxuLVxcbi1zdGF0aWMgaW5saW5lIHZvaWQgUlRXODlfU0VUX0ZXQ01EX0NYVFJYX0JUUFJPRklMRSh2b2lkICpjbWQsIHU4IHZhbClcXG4te1xcbi1cXHR1OHBfcmVwbGFjZV9iaXRzKCh1OCAqKWNtZCArIDEyLCB2YWwsIEdFTk1BU0soNywgMCkpO1xcbi19XFxuLVxcbi1zdGF0aWMgaW5saW5lIHZvaWQgUlRXODlfU0VUX0ZXQ01EX0NYVFJYX1JTVkQyKHZvaWQgKmNtZCwgdTggdmFsKVxcbi17XFxuLVxcdHU4cF9yZXBsYWNlX2JpdHMoKHU4ICopY21kICsgMTMsIHZhbCwgR0VOTUFTSyg3LCAwKSk7XFxuLX1cXG4tXFxuLXN0YXRpYyBpbmxpbmUgdm9pZCBSVFc4OV9TRVRfRldDTURfQ1hUUlhfVFhSQVRFKHZvaWQgKmNtZCwgdTE2IHZhbClcXG4te1xcbi1cXHRsZTE2cF9yZXBsYWNlX2JpdHMoKF9fbGUxNiAqKSgodTggKiljbWQgKyAxNCksIHZhbCwgR0VOTUFTSygxNSwgMCkpO1xcbi19XFxuLVxcbi1zdGF0aWMgaW5saW5lIHZvaWQgUlRXODlfU0VUX0ZXQ01EX0NYVFJYX1JYUkFURSh2b2lkICpjbWQsIHUxNiB2YWwpXFxuLXtcXG4tXFx0bGUxNnBfcmVwbGFjZV9iaXRzKChfX2xlMTYgKikoKHU4ICopY21kICsgMTYpLCB2YWwsIEdFTk1BU0soMTUsIDApKTtcXG4tfVxcbi1cXG4tc3RhdGljIGlubGluZSB2b2lkIFJUVzg5X1NFVF9GV0NNRF9DWFRSWF9UWFRQKHZvaWQgKmNtZCwgdTMyIHZhbClcXG4te1xcbi1cXHRsZTMycF9yZXBsYWNlX2JpdHMoKF9fbGUzMiAqKSgodTggKiljbWQgKyAxOCksIHZhbCwgR0VOTUFTSygzMSwgMCkpO1xcbi19XFxuLVxcbi1zdGF0aWMgaW5saW5lIHZvaWQgUlRXODlfU0VUX0ZXQ01EX0NYVFJYX1JYVFAodm9pZCAqY21kLCB1MzIgdmFsKVxcbi17XFxuLVxcdGxlMzJwX3JlcGxhY2VfYml0cygoX19sZTMyICopKCh1OCAqKWNtZCArIDIyKSwgdmFsLCBHRU5NQVNLKDMxLCAwKSk7XFxuLX1cXG4tXFxuLXN0YXRpYyBpbmxpbmUgdm9pZCBSVFc4OV9TRVRfRldDTURfQ1hUUlhfUlhFUlJSQSh2b2lkICpjbWQsIHUzMiB2YWwpXFxuLXtcXG4tXFx0bGUzMnBfcmVwbGFjZV9iaXRzKChfX2xlMzIgKikoKHU4ICopY21kICsgMjYpLCB2YWwsIEdFTk1BU0soMzEsIDApKTtcXG4tfVxcbi1cXG4gc3RhdGljIGlubGluZSB2b2lkIFJUVzg5X1NFVF9GV0NNRF9DWFJGS19TVEFURSh2b2lkICpjbWQsIHUzMiB2YWwpXFxuIHtcXG4gXFx0bGUzMnBfcmVwbGFjZV9iaXRzKChfX2xlMzIgKikoKHU4ICopKGNtZCkgKyAyKSwgdmFsLCBHRU5NQVNLKDEsIDApKTtcXG5AQCAtNTM5OSw4ICs1Mzg0LDExIEBAIGludCBydHc4OV9md19oMmNfY3hkcnZfcm9sZV92OChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHR5cGUpO1xcbiBpbnQgcnR3ODlfZndfaDJjX2N4ZHJ2X29zaV9pbmZvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggdHlwZSk7XFxuIGludCBydHc4OV9md19oMmNfY3hkcnZfY3RybChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHR5cGUpO1xcbiBpbnQgcnR3ODlfZndfaDJjX2N4ZHJ2X2N0cmxfdjcoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCB0eXBlKTtcXG4taW50IHJ0dzg5X2Z3X2gyY19jeGRydl90cngoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCB0eXBlKTtcXG4raW50IHJ0dzg5X2Z3X2gyY19jeGRydl90cnhfdjcoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCB0eXBlKTtcXG4raW50IHJ0dzg5X2Z3X2gyY19jeGRydl90cnhfdjkoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCB0eXBlKTtcXG4gaW50IHJ0dzg5X2Z3X2gyY19jeGRydl9yZmsoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCB0eXBlKTtcXG4raW50IHJ0dzg5X2Z3X2gyY19jeHR4cHdyX3Y3KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggdHlwZSk7XFxuK2ludCBydHc4OV9md19oMmNfY3h0eHB3cl92OShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHR5cGUpO1xcbiBpbnQgcnR3ODlfZndfaDJjX2RlbF9wa3Rfb2ZmbG9hZChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IGlkKTtcXG4gaW50IHJ0dzg5X2Z3X2gyY19hZGRfcGt0X29mZmxvYWQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCAqaWQsXFxuIFxcdFxcdFxcdFxcdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiX29mbGQpO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFiLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFiLmNcXG5pbmRleCA2MGYzNjI1OTM2OTY2Zi4uNGNhZjIzMWM2Mjg3MDAgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYi5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYi5jXFxuQEAgLTM1NSw3ICszNTUsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X3BtYWNfcmVncyBydHc4ODUxYl9wbWFjX3JlZ3MgPSB7XFxuIFxcdC5hbXBkdV9jcmNfZXJyX21hc2sgPSBCX0NOVF9BTVBEVV9SWF9DUkMzMl9FUlIsXFxuIH07XFxuIFxcbi1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2J0Y19yZl90cnhfcGFyYSBydHc4OV9idGNfODg1MWJfcmZfdWxbXSA9IHtcXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9idGNfcmZfdHJ4X3BhcmFfdjAgcnR3ODlfYnRjXzg4NTFiX3JmX3VsX3YwW10gPSB7XFxuIFxcdHsyNTUsIDAsIDAsIDd9LCAvKiAwIC1cXHUwMDNlIG9yaWdpbmFsICovXFxuIFxcdHsyNTUsIDIsIDAsIDd9LCAvKiAxIC1cXHUwMDNlIGZvciBCVC1jb25uZWN0ZWQgQUNJIGlzc3VlIFxcdTAwMjZcXHUwMDI2IEJURyBjby1yeCAqL1xcbiBcXHR7MjU1LCAwLCAwLCA3fSwgLyogMiAtXFx1MDAzZXJlc2VydmVkIGZvciBzaGFyZWQtYW50ZW5uYSAqL1xcbkBAIC0zNjcsNyArMzY3LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9idGNfcmZfdHJ4X3BhcmEgcnR3ODlfYnRjXzg4NTFiX3JmX3VsW10gPSB7XFxuIFxcdHsxMywgMSwgMCwgN31cXG4gfTtcXG4gXFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3JmX3RyeF9wYXJhIHJ0dzg5X2J0Y184ODUxYl9yZl9kbFtdID0ge1xcbitzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2J0Y19yZl90cnhfcGFyYV92MCBydHc4OV9idGNfODg1MWJfcmZfZGxfdjBbXSA9IHtcXG4gXFx0ezI1NSwgMCwgMCwgN30sIC8qIDAgLVxcdTAwM2Ugb3JpZ2luYWwgKi9cXG4gXFx0ezI1NSwgMiwgMCwgN30sIC8qIDEgLVxcdTAwM2UgcmVzZXJ2ZWQgZm9yIHNoYXJlZC1hbnRlbm5hICovXFxuIFxcdHsyNTUsIDAsIDAsIDd9LCAvKiAyIC1cXHUwMDNlcmVzZXJ2ZWQgZm9yIHNoYXJlZC1hbnRlbm5hICovXFxuQEAgLTI3MzAsMTAgKzI3MzAsMTAgQEAgY29uc3Qgc3RydWN0IHJ0dzg5X2NoaXBfaW5mbyBydHc4ODUxYl9jaGlwX2luZm8gPSB7XFxuIFxcdC5yc3NpX3RvbFxcdFxcdD0gMixcXG4gXFx0Lm1vbl9yZWdfbnVtXFx0XFx0PSBBUlJBWV9TSVpFKHJ0dzg5X2J0Y184ODUxYl9tb25fcmVnKSxcXG4gXFx0Lm1vbl9yZWdcXHRcXHQ9IHJ0dzg5X2J0Y184ODUxYl9tb25fcmVnLFxcbi1cXHQucmZfcGFyYV91bGlua19udW1cXHQ9IEFSUkFZX1NJWkUocnR3ODlfYnRjXzg4NTFiX3JmX3VsKSxcXG4tXFx0LnJmX3BhcmFfdWxpbmtcXHRcXHQ9IHJ0dzg5X2J0Y184ODUxYl9yZl91bCxcXG4tXFx0LnJmX3BhcmFfZGxpbmtfbnVtXFx0PSBBUlJBWV9TSVpFKHJ0dzg5X2J0Y184ODUxYl9yZl9kbCksXFxuLVxcdC5yZl9wYXJhX2RsaW5rXFx0XFx0PSBydHc4OV9idGNfODg1MWJfcmZfZGwsXFxuK1xcdC5yZl9wYXJhX3VsaW5rX3YwXFx0PSBydHc4OV9idGNfODg1MWJfcmZfdWxfdjAsXFxuK1xcdC5yZl9wYXJhX2RsaW5rX3YwXFx0PSBydHc4OV9idGNfODg1MWJfcmZfZGxfdjAsXFxuK1xcdC5yZl9wYXJhX3VsaW5rX251bV92MFxcdD0gQVJSQVlfU0laRShydHc4OV9idGNfODg1MWJfcmZfdWxfdjApLFxcbitcXHQucmZfcGFyYV9kbGlua19udW1fdjBcXHQ9IEFSUkFZX1NJWkUocnR3ODlfYnRjXzg4NTFiX3JmX2RsX3YwKSxcXG4gXFx0LnJmX3BhcmFfdWxpbmtfdjlcXHQ9IE5VTEwsXFxuIFxcdC5yZl9wYXJhX2RsaW5rX3Y5XFx0PSBOVUxMLFxcbiBcXHQucmZfcGFyYV91bGlua19udW1fdjlcXHQ9IDAsXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmEuY1xcbmluZGV4IDJjMWYxNjZlNjg3ZjA2Li43OGFkZGMwYWVmNjkwOCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJhLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJhLmNcXG5AQCAtMjA0OSw3ICsyMDQ5LDcgQEAgczggcnR3ODg1MmFfYnRjX2dldF9idF9yc3NpKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgczggdmFsKVxcbiBcXHRyZXR1cm4gY2xhbXBfdChzOCwgdmFsICsgNiwgLTEwMCwgMCkgKyAxMDA7XFxuIH1cXG4gXFxuLXN0YXRpYyBzdHJ1Y3QgcnR3ODlfYnRjX3JmX3RyeF9wYXJhIHJ0dzg5X2J0Y184ODUyYV9yZl91bFtdID0ge1xcbitzdGF0aWMgc3RydWN0IHJ0dzg5X2J0Y19yZl90cnhfcGFyYV92MCBydHc4OV9idGNfODg1MmFfcmZfdWxfdjBbXSA9IHtcXG4gXFx0ezI1NSwgMCwgMCwgN30sIC8qIDAgLVxcdTAwM2Ugb3JpZ2luYWwgKi9cXG4gXFx0ezI1NSwgMiwgMCwgN30sIC8qIDEgLVxcdTAwM2UgZm9yIEJULWNvbm5lY3RlZCBBQ0kgaXNzdWUgXFx1MDAyNlxcdTAwMjYgQlRHIGNvLXJ4ICovXFxuIFxcdHsyNTUsIDAsIDAsIDd9LCAvKiAyIC1cXHUwMDNlcmVzZXJ2ZWQgZm9yIHNoYXJlZC1hbnRlbm5hICovXFxuQEAgLTIwNjEsNyArMjA2MSw3IEBAIHN0YXRpYyBzdHJ1Y3QgcnR3ODlfYnRjX3JmX3RyeF9wYXJhIHJ0dzg5X2J0Y184ODUyYV9yZl91bFtdID0ge1xcbiBcXHR7MTMsIDEsIDAsIDd9XFxuIH07XFxuIFxcbi1zdGF0aWMgc3RydWN0IHJ0dzg5X2J0Y19yZl90cnhfcGFyYSBydHc4OV9idGNfODg1MmFfcmZfZGxbXSA9IHtcXG4rc3RhdGljIHN0cnVjdCBydHc4OV9idGNfcmZfdHJ4X3BhcmFfdjAgcnR3ODlfYnRjXzg4NTJhX3JmX2RsX3YwW10gPSB7XFxuIFxcdHsyNTUsIDAsIDAsIDd9LCAvKiAwIC1cXHUwMDNlIG9yaWdpbmFsICovXFxuIFxcdHsyNTUsIDIsIDAsIDd9LCAvKiAxIC1cXHUwMDNlIHJlc2VydmVkIGZvciBzaGFyZWQtYW50ZW5uYSAqL1xcbiBcXHR7MjU1LCAwLCAwLCA3fSwgLyogMiAtXFx1MDAzZXJlc2VydmVkIGZvciBzaGFyZWQtYW50ZW5uYSAqL1xcbkBAIC0yMTA1LDEyICsyMTA1LDEyIEBAIHZvaWQgcnR3ODg1MmFfYnRjX3VwZGF0ZV9idF9jbnQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbiBcXHRcXHRyZXR1cm47XFxuIFxcbiBcXHR2YWwgPSBydHc4OV9yZWFkMzIocnR3ZGV2LCBSX0FYX0JUX1NUQVNUX0hJR0gpO1xcbi1cXHRjeC1cXHUwMDNlY250X2J0W0JUQ19CQ05UX0hJUFJJX1RYXSA9IEZJRUxEX0dFVChCX0FYX1NUQVRJU19CVF9ISV9UWF9NQVNLLCB2YWwpO1xcbi1cXHRjeC1cXHUwMDNlY250X2J0W0JUQ19CQ05UX0hJUFJJX1JYXSA9IEZJRUxEX0dFVChCX0FYX1NUQVRJU19CVF9ISV9SWF9NQVNLLCB2YWwpO1xcbitcXHRjeC1cXHUwMDNlYnQwLmJjbnRbQlRDX0JDTlRfSElQUklfVFhdID0gRklFTERfR0VUKEJfQVhfU1RBVElTX0JUX0hJX1RYX01BU0ssIHZhbCk7XFxuK1xcdGN4LVxcdTAwM2VidDAuYmNudFtCVENfQkNOVF9ISVBSSV9SWF0gPSBGSUVMRF9HRVQoQl9BWF9TVEFUSVNfQlRfSElfUlhfTUFTSywgdmFsKTtcXG4gXFxuIFxcdHZhbCA9IHJ0dzg5X3JlYWQzMihydHdkZXYsIFJfQVhfQlRfU1RBU1RfTE9XKTtcXG4tXFx0Y3gtXFx1MDAzZWNudF9idFtCVENfQkNOVF9MT1BSSV9UWF0gPSBGSUVMRF9HRVQoQl9BWF9TVEFUSVNfQlRfTE9fVFhfMV9NQVNLLCB2YWwpO1xcbi1cXHRjeC1cXHUwMDNlY250X2J0W0JUQ19CQ05UX0xPUFJJX1JYXSA9IEZJRUxEX0dFVChCX0FYX1NUQVRJU19CVF9MT19SWF8xX01BU0ssIHZhbCk7XFxuK1xcdGN4LVxcdTAwM2VidDAuYmNudFtCVENfQkNOVF9MT1BSSV9UWF0gPSBGSUVMRF9HRVQoQl9BWF9TVEFUSVNfQlRfTE9fVFhfMV9NQVNLLCB2YWwpO1xcbitcXHRjeC1cXHUwMDNlYnQwLmJjbnRbQlRDX0JDTlRfTE9QUklfUlhdID0gRklFTERfR0VUKEJfQVhfU1RBVElTX0JUX0xPX1JYXzFfTUFTSywgdmFsKTtcXG4gXFxuIFxcdC8qIGNsb2NrLWdhdGUgb2ZmIGJlZm9yZSByZXNldCBjb3VudGVyKi9cXG4gXFx0cnR3ODlfd3JpdGUzMl9zZXQocnR3ZGV2LCBSX0FYX0JUQ19DRkcsIEJfQVhfRElTX0JUQ19DTEtfRyk7XFxuQEAgLTI0NjgsMTAgKzI0NjgsMTAgQEAgY29uc3Qgc3RydWN0IHJ0dzg5X2NoaXBfaW5mbyBydHc4ODUyYV9jaGlwX2luZm8gPSB7XFxuIFxcdC5yc3NpX3RvbFxcdFxcdD0gMixcXG4gXFx0Lm1vbl9yZWdfbnVtXFx0XFx0PSBBUlJBWV9TSVpFKHJ0dzg5X2J0Y184ODUyYV9tb25fcmVnKSxcXG4gXFx0Lm1vbl9yZWdcXHRcXHQ9IHJ0dzg5X2J0Y184ODUyYV9tb25fcmVnLFxcbi1cXHQucmZfcGFyYV91bGlua19udW1cXHQ9IEFSUkFZX1NJWkUocnR3ODlfYnRjXzg4NTJhX3JmX3VsKSxcXG4tXFx0LnJmX3BhcmFfdWxpbmtcXHRcXHQ9IHJ0dzg5X2J0Y184ODUyYV9yZl91bCxcXG4tXFx0LnJmX3BhcmFfZGxpbmtfbnVtXFx0PSBBUlJBWV9TSVpFKHJ0dzg5X2J0Y184ODUyYV9yZl9kbCksXFxuLVxcdC5yZl9wYXJhX2RsaW5rXFx0XFx0PSBydHc4OV9idGNfODg1MmFfcmZfZGwsXFxuK1xcdC5yZl9wYXJhX3VsaW5rX3YwXFx0PSBydHc4OV9idGNfODg1MmFfcmZfdWxfdjAsXFxuK1xcdC5yZl9wYXJhX2RsaW5rX3YwXFx0PSBydHc4OV9idGNfODg1MmFfcmZfZGxfdjAsXFxuK1xcdC5yZl9wYXJhX3VsaW5rX251bV92MFxcdD0gQVJSQVlfU0laRShydHc4OV9idGNfODg1MmFfcmZfdWxfdjApLFxcbitcXHQucmZfcGFyYV9kbGlua19udW1fdjBcXHQ9IEFSUkFZX1NJWkUocnR3ODlfYnRjXzg4NTJhX3JmX2RsX3YwKSxcXG4gXFx0LnJmX3BhcmFfdWxpbmtfdjlcXHQ9IE5VTEwsXFxuIFxcdC5yZl9wYXJhX2RsaW5rX3Y5XFx0PSBOVUxMLFxcbiBcXHQucmZfcGFyYV91bGlua19udW1fdjlcXHQ9IDAsXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmIuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmIuY1xcbmluZGV4IDRlN2IwNjhhYWE3NWIxLi5kZWJjZGIyZWFjZDY5OSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJiLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJiLmNcXG5AQCAtMzA3LDcgKzMwNyw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfcG1hY19yZWdzIHJ0dzg4NTJiX3BtYWNfcmVncyA9IHtcXG4gXFx0LmFtcGR1X2NyY19lcnJfbWFzayA9IEJfQ05UX0FNUERVX1JYX0NSQzMyX0VSUixcXG4gfTtcXG4gXFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3JmX3RyeF9wYXJhIHJ0dzg5X2J0Y184ODUyYl9yZl91bFtdID0ge1xcbitzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2J0Y19yZl90cnhfcGFyYV92MCBydHc4OV9idGNfODg1MmJfcmZfdWxfdjBbXSA9IHtcXG4gXFx0ezI1NSwgMCwgMCwgN30sIC8qIDAgLVxcdTAwM2Ugb3JpZ2luYWwgKi9cXG4gXFx0ezI1NSwgMiwgMCwgN30sIC8qIDEgLVxcdTAwM2UgZm9yIEJULWNvbm5lY3RlZCBBQ0kgaXNzdWUgXFx1MDAyNlxcdTAwMjYgQlRHIGNvLXJ4ICovXFxuIFxcdHsyNTUsIDAsIDAsIDd9LCAvKiAyIC1cXHUwMDNlcmVzZXJ2ZWQgZm9yIHNoYXJlZC1hbnRlbm5hICovXFxuQEAgLTMxOSw3ICszMTksNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2J0Y19yZl90cnhfcGFyYSBydHc4OV9idGNfODg1MmJfcmZfdWxbXSA9IHtcXG4gXFx0ezEzLCAxLCAwLCA3fVxcbiB9O1xcbiBcXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9idGNfcmZfdHJ4X3BhcmEgcnR3ODlfYnRjXzg4NTJiX3JmX2RsW10gPSB7XFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3JmX3RyeF9wYXJhX3YwIHJ0dzg5X2J0Y184ODUyYl9yZl9kbF92MFtdID0ge1xcbiBcXHR7MjU1LCAwLCAwLCA3fSwgLyogMCAtXFx1MDAzZSBvcmlnaW5hbCAqL1xcbiBcXHR7MjU1LCAyLCAwLCA3fSwgLyogMSAtXFx1MDAzZSByZXNlcnZlZCBmb3Igc2hhcmVkLWFudGVubmEgKi9cXG4gXFx0ezI1NSwgMCwgMCwgN30sIC8qIDIgLVxcdTAwM2VyZXNlcnZlZCBmb3Igc2hhcmVkLWFudGVubmEgKi9cXG5AQCAtMTA2MywxMCArMTA2MywxMCBAQCBjb25zdCBzdHJ1Y3QgcnR3ODlfY2hpcF9pbmZvIHJ0dzg4NTJiX2NoaXBfaW5mbyA9IHtcXG4gXFx0LnJzc2lfdG9sXFx0XFx0PSAyLFxcbiBcXHQubW9uX3JlZ19udW1cXHRcXHQ9IEFSUkFZX1NJWkUocnR3ODlfYnRjXzg4NTJiX21vbl9yZWcpLFxcbiBcXHQubW9uX3JlZ1xcdFxcdD0gcnR3ODlfYnRjXzg4NTJiX21vbl9yZWcsXFxuLVxcdC5yZl9wYXJhX3VsaW5rX251bVxcdD0gQVJSQVlfU0laRShydHc4OV9idGNfODg1MmJfcmZfdWwpLFxcbi1cXHQucmZfcGFyYV91bGlua1xcdFxcdD0gcnR3ODlfYnRjXzg4NTJiX3JmX3VsLFxcbi1cXHQucmZfcGFyYV9kbGlua19udW1cXHQ9IEFSUkFZX1NJWkUocnR3ODlfYnRjXzg4NTJiX3JmX2RsKSxcXG4tXFx0LnJmX3BhcmFfZGxpbmtcXHRcXHQ9IHJ0dzg5X2J0Y184ODUyYl9yZl9kbCxcXG4rXFx0LnJmX3BhcmFfdWxpbmtfdjBcXHQ9IHJ0dzg5X2J0Y184ODUyYl9yZl91bF92MCxcXG4rXFx0LnJmX3BhcmFfZGxpbmtfdjBcXHQ9IHJ0dzg5X2J0Y184ODUyYl9yZl9kbF92MCxcXG4rXFx0LnJmX3BhcmFfdWxpbmtfbnVtX3YwXFx0PSBBUlJBWV9TSVpFKHJ0dzg5X2J0Y184ODUyYl9yZl91bF92MCksXFxuK1xcdC5yZl9wYXJhX2RsaW5rX251bV92MFxcdD0gQVJSQVlfU0laRShydHc4OV9idGNfODg1MmJfcmZfZGxfdjApLFxcbiBcXHQucmZfcGFyYV91bGlua192OVxcdD0gTlVMTCxcXG4gXFx0LnJmX3BhcmFfZGxpbmtfdjlcXHQ9IE5VTEwsXFxuIFxcdC5yZl9wYXJhX3VsaW5rX251bV92OVxcdD0gMCxcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYnQuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJ0LmNcXG5pbmRleCA3ZmNjODc3ZjZlYTBjNC4uZmM4YTE3ZmI5NWY0N2QgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYnQuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJ0LmNcXG5AQCAtMjUwLDcgKzI1MCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfcG1hY19yZWdzIHJ0dzg4NTJidF9wbWFjX3JlZ3MgPSB7XFxuIFxcdC5hbXBkdV9jcmNfZXJyX21hc2sgPSBCX0NOVF9BTVBEVV9SWF9DUkMzMl9FUlIsXFxuIH07XFxuIFxcbi1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2J0Y19yZl90cnhfcGFyYSBydHc4OV9idGNfODg1MmJ0X3JmX3VsW10gPSB7XFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3JmX3RyeF9wYXJhX3YwIHJ0dzg5X2J0Y184ODUyYnRfcmZfdWxfdjBbXSA9IHtcXG4gXFx0ezI1NSwgMCwgMCwgN30sIC8qIDAgLVxcdTAwM2Ugb3JpZ2luYWwgKi9cXG4gXFx0ezI1NSwgMiwgMCwgN30sIC8qIDEgLVxcdTAwM2UgZm9yIEJULWNvbm5lY3RlZCBBQ0kgaXNzdWUgXFx1MDAyNlxcdTAwMjYgQlRHIGNvLXJ4ICovXFxuIFxcdHsyNTUsIDAsIDAsIDd9LCAvKiAyIC1cXHUwMDNlcmVzZXJ2ZWQgZm9yIHNoYXJlZC1hbnRlbm5hICovXFxuQEAgLTI2Miw3ICsyNjIsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2J0Y19yZl90cnhfcGFyYSBydHc4OV9idGNfODg1MmJ0X3JmX3VsW10gPSB7XFxuIFxcdHsxMywgMSwgMCwgN31cXG4gfTtcXG4gXFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3JmX3RyeF9wYXJhIHJ0dzg5X2J0Y184ODUyYnRfcmZfZGxbXSA9IHtcXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9idGNfcmZfdHJ4X3BhcmFfdjAgcnR3ODlfYnRjXzg4NTJidF9yZl9kbF92MFtdID0ge1xcbiBcXHR7MjU1LCAwLCAwLCA3fSwgLyogMCAtXFx1MDAzZSBvcmlnaW5hbCAqL1xcbiBcXHR7MjU1LCAyLCAwLCA3fSwgLyogMSAtXFx1MDAzZSByZXNlcnZlZCBmb3Igc2hhcmVkLWFudGVubmEgKi9cXG4gXFx0ezI1NSwgMCwgMCwgN30sIC8qIDIgLVxcdTAwM2VyZXNlcnZlZCBmb3Igc2hhcmVkLWFudGVubmEgKi9cXG5AQCAtOTAyLDEwICs5MDIsMTAgQEAgY29uc3Qgc3RydWN0IHJ0dzg5X2NoaXBfaW5mbyBydHc4ODUyYnRfY2hpcF9pbmZvID0ge1xcbiBcXHQucnNzaV90b2xcXHRcXHQ9IDIsXFxuIFxcdC5tb25fcmVnX251bVxcdFxcdD0gQVJSQVlfU0laRShydHc4OV9idGNfODg1MmJ0X21vbl9yZWcpLFxcbiBcXHQubW9uX3JlZ1xcdFxcdD0gcnR3ODlfYnRjXzg4NTJidF9tb25fcmVnLFxcbi1cXHQucmZfcGFyYV91bGlua19udW1cXHQ9IEFSUkFZX1NJWkUocnR3ODlfYnRjXzg4NTJidF9yZl91bCksXFxuLVxcdC5yZl9wYXJhX3VsaW5rXFx0XFx0PSBydHc4OV9idGNfODg1MmJ0X3JmX3VsLFxcbi1cXHQucmZfcGFyYV9kbGlua19udW1cXHQ9IEFSUkFZX1NJWkUocnR3ODlfYnRjXzg4NTJidF9yZl9kbCksXFxuLVxcdC5yZl9wYXJhX2RsaW5rXFx0XFx0PSBydHc4OV9idGNfODg1MmJ0X3JmX2RsLFxcbitcXHQucmZfcGFyYV91bGlua192MFxcdD0gcnR3ODlfYnRjXzg4NTJidF9yZl91bF92MCxcXG4rXFx0LnJmX3BhcmFfZGxpbmtfdjBcXHQ9IHJ0dzg5X2J0Y184ODUyYnRfcmZfZGxfdjAsXFxuK1xcdC5yZl9wYXJhX3VsaW5rX251bV92MFxcdD0gQVJSQVlfU0laRShydHc4OV9idGNfODg1MmJ0X3JmX3VsX3YwKSxcXG4rXFx0LnJmX3BhcmFfZGxpbmtfbnVtX3YwXFx0PSBBUlJBWV9TSVpFKHJ0dzg5X2J0Y184ODUyYnRfcmZfZGxfdjApLFxcbiBcXHQucmZfcGFyYV91bGlua192OVxcdD0gTlVMTCxcXG4gXFx0LnJmX3BhcmFfZGxpbmtfdjlcXHQ9IE5VTEwsXFxuIFxcdC5yZl9wYXJhX3VsaW5rX251bV92OVxcdD0gMCxcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYy5jXFxuaW5kZXggMzg2MWNjZTQyYjFiYTIuLmJlYzZhYTU3NGU5ZDc5IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmMuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmMuY1xcbkBAIC0yODYzLDcgKzI4NjMsNyBAQCBzOCBydHc4ODUyY19idGNfZ2V0X2J0X3Jzc2koc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBzOCB2YWwpXFxuIFxcdHJldHVybiBjbGFtcF90KHM4LCB2YWwgKyA2LCAtMTAwLCAwKSArIDEwMDtcXG4gfVxcbiBcXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9idGNfcmZfdHJ4X3BhcmEgcnR3ODlfYnRjXzg4NTJjX3JmX3VsW10gPSB7XFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3JmX3RyeF9wYXJhX3YwIHJ0dzg5X2J0Y184ODUyY19yZl91bF92MFtdID0ge1xcbiBcXHR7MjU1LCAwLCAwLCA3fSwgLyogMCAtXFx1MDAzZSBvcmlnaW5hbCAqL1xcbiBcXHR7MjU1LCAyLCAwLCA3fSwgLyogMSAtXFx1MDAzZSBmb3IgQlQtY29ubmVjdGVkIEFDSSBpc3N1ZSBcXHUwMDI2XFx1MDAyNiBCVEcgY28tcnggKi9cXG4gXFx0ezI1NSwgMCwgMCwgN30sIC8qIDIgLVxcdTAwM2VyZXNlcnZlZCBmb3Igc2hhcmVkLWFudGVubmEgKi9cXG5AQCAtMjg3NSw3ICsyODc1LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9idGNfcmZfdHJ4X3BhcmEgcnR3ODlfYnRjXzg4NTJjX3JmX3VsW10gPSB7XFxuIFxcdHsxMywgMSwgMCwgN31cXG4gfTtcXG4gXFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3JmX3RyeF9wYXJhIHJ0dzg5X2J0Y184ODUyY19yZl9kbFtdID0ge1xcbitzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2J0Y19yZl90cnhfcGFyYV92MCBydHc4OV9idGNfODg1MmNfcmZfZGxfdjBbXSA9IHtcXG4gXFx0ezI1NSwgMCwgMCwgN30sIC8qIDAgLVxcdTAwM2Ugb3JpZ2luYWwgKi9cXG4gXFx0ezI1NSwgMiwgMCwgN30sIC8qIDEgLVxcdTAwM2UgcmVzZXJ2ZWQgZm9yIHNoYXJlZC1hbnRlbm5hICovXFxuIFxcdHsyNTUsIDAsIDAsIDd9LCAvKiAyIC1cXHUwMDNlcmVzZXJ2ZWQgZm9yIHNoYXJlZC1hbnRlbm5hICovXFxuQEAgLTMyNzAsMTAgKzMyNzAsMTAgQEAgY29uc3Qgc3RydWN0IHJ0dzg5X2NoaXBfaW5mbyBydHc4ODUyY19jaGlwX2luZm8gPSB7XFxuIFxcdC5yc3NpX3RvbFxcdFxcdD0gMixcXG4gXFx0Lm1vbl9yZWdfbnVtXFx0XFx0PSBBUlJBWV9TSVpFKHJ0dzg5X2J0Y184ODUyY19tb25fcmVnKSxcXG4gXFx0Lm1vbl9yZWdcXHRcXHQ9IHJ0dzg5X2J0Y184ODUyY19tb25fcmVnLFxcbi1cXHQucmZfcGFyYV91bGlua19udW1cXHQ9IEFSUkFZX1NJWkUocnR3ODlfYnRjXzg4NTJjX3JmX3VsKSxcXG4tXFx0LnJmX3BhcmFfdWxpbmtcXHRcXHQ9IHJ0dzg5X2J0Y184ODUyY19yZl91bCxcXG4tXFx0LnJmX3BhcmFfZGxpbmtfbnVtXFx0PSBBUlJBWV9TSVpFKHJ0dzg5X2J0Y184ODUyY19yZl9kbCksXFxuLVxcdC5yZl9wYXJhX2RsaW5rXFx0XFx0PSBydHc4OV9idGNfODg1MmNfcmZfZGwsXFxuK1xcdC5yZl9wYXJhX3VsaW5rX3YwXFx0PSBydHc4OV9idGNfODg1MmNfcmZfdWxfdjAsXFxuK1xcdC5yZl9wYXJhX2RsaW5rX3YwXFx0PSBydHc4OV9idGNfODg1MmNfcmZfZGxfdjAsXFxuK1xcdC5yZl9wYXJhX3VsaW5rX251bV92MFxcdD0gQVJSQVlfU0laRShydHc4OV9idGNfODg1MmNfcmZfdWxfdjApLFxcbitcXHQucmZfcGFyYV9kbGlua19udW1fdjBcXHQ9IEFSUkFZX1NJWkUocnR3ODlfYnRjXzg4NTJjX3JmX2RsX3YwKSxcXG4gXFx0LnJmX3BhcmFfdWxpbmtfdjlcXHQ9IE5VTEwsXFxuIFxcdC5yZl9wYXJhX2RsaW5rX3Y5XFx0PSBOVUxMLFxcbiBcXHQucmZfcGFyYV91bGlua19udW1fdjlcXHQ9IDAsXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmEuY1xcbmluZGV4IGFkMzYxOGRmZDU3ZDAwLi42ZDQzMDE2NjFiMDRiNCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhLmNcXG5AQCAtMjc0NSw3ICsyNzQ1LDcgQEAgc3RhdGljIHZvaWQgcnR3ODkyMmFfYnRjX3NldF9yZmUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbiBcXHRpZiAobW9kdWxlLVxcdTAwM2VrdF92ZXIgXFx1MDAzYz0gMSlcXG4gXFx0XFx0bW9kdWxlLVxcdTAwM2V3YV90eXBlIHw9IEJUQ19XQV9IRlBfWkI7XFxuIFxcbi1cXHRydHdkZXYtXFx1MDAzZWJ0Yy5jeC5vdGhlci50eXBlID0gQlRDXzNDWF9OT05FO1xcbitcXHRydHdkZXYtXFx1MDAzZWJ0Yy5jeC5idF9leHQuZnVuY190eXBlID0gQlRDXzNDWF9OT05FO1xcbiBcXG4gXFx0aWYgKG1vZHVsZS1cXHUwMDNlcmZlX3R5cGUgPT0gMCkge1xcbiBcXHRcXHRydHdkZXYtXFx1MDAzZWJ0Yy5kbS5lcnJvci5tYXAucmZlX3R5cGUwID0gdHJ1ZTtcXG5AQCAtMjg3NCw3ICsyODc0LDcgQEAgczggcnR3ODkyMmFfYnRjX2dldF9idF9yc3NpKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgczggdmFsKVxcbiBcXHRyZXR1cm4gY2xhbXBfdChzOCwgdmFsLCAtMTAwLCAwKSArIDEwMDtcXG4gfVxcbiBcXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9idGNfcmZfdHJ4X3BhcmEgcnR3ODlfYnRjXzg5MjJhX3JmX3VsW10gPSB7XFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3JmX3RyeF9wYXJhX3YwIHJ0dzg5X2J0Y184OTIyYV9yZl91bF92MFtdID0ge1xcbiBcXHR7MjU1LCAwLCAwLCA3fSwgLyogMCAtXFx1MDAzZSBvcmlnaW5hbCAqL1xcbiBcXHR7MjU1LCAyLCAwLCA3fSwgLyogMSAtXFx1MDAzZSBmb3IgQlQtY29ubmVjdGVkIEFDSSBpc3N1ZSBcXHUwMDI2XFx1MDAyNiBCVEcgY28tcnggKi9cXG4gXFx0ezI1NSwgMCwgMCwgN30sIC8qIDIgLVxcdTAwM2VyZXNlcnZlZCBmb3Igc2hhcmVkLWFudGVubmEgKi9cXG5AQCAtMjg4Niw3ICsyODg2LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9idGNfcmZfdHJ4X3BhcmEgcnR3ODlfYnRjXzg5MjJhX3JmX3VsW10gPSB7XFxuIFxcdHsxMywgMSwgMCwgN31cXG4gfTtcXG4gXFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3JmX3RyeF9wYXJhIHJ0dzg5X2J0Y184OTIyYV9yZl9kbFtdID0ge1xcbitzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2J0Y19yZl90cnhfcGFyYV92MCBydHc4OV9idGNfODkyMmFfcmZfZGxfdjBbXSA9IHtcXG4gXFx0ezI1NSwgMCwgMCwgN30sIC8qIDAgLVxcdTAwM2Ugb3JpZ2luYWwgKi9cXG4gXFx0ezI1NSwgMiwgMCwgN30sIC8qIDEgLVxcdTAwM2UgcmVzZXJ2ZWQgZm9yIHNoYXJlZC1hbnRlbm5hICovXFxuIFxcdHsyNTUsIDAsIDAsIDd9LCAvKiAyIC1cXHUwMDNlcmVzZXJ2ZWQgZm9yIHNoYXJlZC1hbnRlbm5hICovXFxuQEAgLTMyNTQsMTAgKzMyNTQsMTAgQEAgY29uc3Qgc3RydWN0IHJ0dzg5X2NoaXBfaW5mbyBydHc4OTIyYV9jaGlwX2luZm8gPSB7XFxuIFxcdC5yc3NpX3RvbFxcdFxcdD0gMixcXG4gXFx0Lm1vbl9yZWdfbnVtXFx0XFx0PSBBUlJBWV9TSVpFKHJ0dzg5X2J0Y184OTIyYV9tb25fcmVnKSxcXG4gXFx0Lm1vbl9yZWdcXHRcXHQ9IHJ0dzg5X2J0Y184OTIyYV9tb25fcmVnLFxcbi1cXHQucmZfcGFyYV91bGlua19udW1cXHQ9IEFSUkFZX1NJWkUocnR3ODlfYnRjXzg5MjJhX3JmX3VsKSxcXG4tXFx0LnJmX3BhcmFfdWxpbmtcXHRcXHQ9IHJ0dzg5X2J0Y184OTIyYV9yZl91bCxcXG4tXFx0LnJmX3BhcmFfZGxpbmtfbnVtXFx0PSBBUlJBWV9TSVpFKHJ0dzg5X2J0Y184OTIyYV9yZl9kbCksXFxuLVxcdC5yZl9wYXJhX2RsaW5rXFx0XFx0PSBydHc4OV9idGNfODkyMmFfcmZfZGwsXFxuK1xcdC5yZl9wYXJhX3VsaW5rX3YwXFx0PSBydHc4OV9idGNfODkyMmFfcmZfdWxfdjAsXFxuK1xcdC5yZl9wYXJhX2RsaW5rX3YwXFx0PSBydHc4OV9idGNfODkyMmFfcmZfZGxfdjAsXFxuK1xcdC5yZl9wYXJhX3VsaW5rX251bV92MFxcdD0gQVJSQVlfU0laRShydHc4OV9idGNfODkyMmFfcmZfdWxfdjApLFxcbitcXHQucmZfcGFyYV9kbGlua19udW1fdjBcXHQ9IEFSUkFZX1NJWkUocnR3ODlfYnRjXzg5MjJhX3JmX2RsX3YwKSxcXG4gXFx0LnJmX3BhcmFfdWxpbmtfdjlcXHQ9IE5VTEwsXFxuIFxcdC5yZl9wYXJhX2RsaW5rX3Y5XFx0PSBOVUxMLFxcbiBcXHQucmZfcGFyYV91bGlua19udW1fdjlcXHQ9IDAsXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuY1xcbmluZGV4IDgzOGMyNjIzMTg5N2Q2Li5mNzhkNmQ0NmU2NWZiZSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmNcXG5AQCAtMjk5Nyw2ICsyOTk3LDQ2IEBAIHN0YXRpYyB1MzIgcnR3ODkyMmRfY2hhbl90b19yZjE4X3ZhbChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuIFxcbiBzdGF0aWMgdm9pZCBydHc4OTIyZF9idGNfc2V0X3JmZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuIHtcXG4rXFx0dW5pb24gcnR3ODlfYnRjX21vZHVsZV9pbmZvICptZCA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZWJ0Yy5tZGluZm87XFxuK1xcdHN0cnVjdCBydHc4OV9idGNfbW9kdWxlX3Y3ICptb2R1bGUgPSBcXHUwMDI2bWQtXFx1MDAzZW1kX3Y3O1xcbitcXG4rXFx0bW9kdWxlLVxcdTAwM2VyZmVfdHlwZSA9IHJ0d2Rldi1cXHUwMDNlZWZ1c2UucmZlX3R5cGU7XFxuK1xcdG1vZHVsZS1cXHUwMDNla3RfdmVyID0gcnR3ZGV2LVxcdTAwM2VoYWwuY3Y7XFxuK1xcdG1vZHVsZS1cXHUwMDNlYnRfc29sbyA9IDA7XFxuK1xcdG1vZHVsZS1cXHUwMDNlc3dpdGNoX3R5cGUgPSBCVENfU1dJVENIX0lOVEVSTkFMO1xcbitcXHRtb2R1bGUtXFx1MDAzZXdhX3R5cGUgPSAwO1xcbitcXG4rXFx0bW9kdWxlLVxcdTAwM2VhbnQudHlwZSA9IEJUQ19BTlRfU0hBUkVEO1xcbitcXHRtb2R1bGUtXFx1MDAzZWFudC5udW0gPSAyO1xcbitcXHRtb2R1bGUtXFx1MDAzZWFudC5pc29sYXRpb24gPSAxMDtcXG4rXFx0bW9kdWxlLVxcdTAwM2VhbnQuZGl2ZXJzaXR5ID0gMDtcXG4rXFx0bW9kdWxlLVxcdTAwM2VhbnQuc2luZ2xlX3BvcyA9IFJGX1BBVEhfQTtcXG4rXFx0bW9kdWxlLVxcdTAwM2VhbnQuYnRnX3BvcyA9IFJGX1BBVEhfQjtcXG4rXFxuK1xcdGlmIChtb2R1bGUtXFx1MDAzZWt0X3ZlciBcXHUwMDNjPSAxKVxcbitcXHRcXHRtb2R1bGUtXFx1MDAzZXdhX3R5cGUgfD0gQlRDX1dBX0hGUF9aQjtcXG4rXFxuK1xcdHJ0d2Rldi1cXHUwMDNlYnRjLmN4LmJ0X2V4dC5mdW5jX3R5cGUgPSBCVENfM0NYX05PTkU7XFxuK1xcbitcXHRpZiAobW9kdWxlLVxcdTAwM2VyZmVfdHlwZSA9PSAwKSB7XFxuK1xcdFxcdHJ0d2Rldi1cXHUwMDNlYnRjLmRtLmVycm9yLm1hcC5yZmVfdHlwZTAgPSB0cnVlO1xcbitcXHRcXHRyZXR1cm47XFxuK1xcdH1cXG4rXFxuK1xcdG1vZHVsZS1cXHUwMDNlYW50Lm51bSA9IChtb2R1bGUtXFx1MDAzZXJmZV90eXBlICUgMikgPyAgMiA6IDM7XFxuK1xcbitcXHRpZiAobW9kdWxlLVxcdTAwM2VrdF92ZXIgPT0gMClcXG4rXFx0XFx0bW9kdWxlLVxcdTAwM2VhbnQubnVtID0gMjtcXG4rXFxuK1xcdGlmIChtb2R1bGUtXFx1MDAzZWFudC5udW0gPT0gMykge1xcbitcXHRcXHRtb2R1bGUtXFx1MDAzZWFudC50eXBlID0gQlRDX0FOVF9ERURJQ0FURUQ7XFxuK1xcdFxcdG1vZHVsZS1cXHUwMDNlYnRfcG9zID0gQlRDX0JUX0FMT05FO1xcbitcXHR9IGVsc2Uge1xcbitcXHRcXHRtb2R1bGUtXFx1MDAzZWFudC50eXBlID0gQlRDX0FOVF9TSEFSRUQ7XFxuK1xcdFxcdG1vZHVsZS1cXHUwMDNlYnRfcG9zID0gQlRDX0JUX0JURztcXG4rXFx0fVxcbitcXHRydHdkZXYtXFx1MDAzZWJ0Yy5idGdfcG9zID0gbW9kdWxlLVxcdTAwM2VhbnQuYnRnX3BvcztcXG4rXFx0cnR3ZGV2LVxcdTAwM2VidGMuYW50X3R5cGUgPSBtb2R1bGUtXFx1MDAzZWFudC50eXBlO1xcbiB9XFxuIFxcbiBzdGF0aWMgdm9pZCBydHc4OTIyZF9idGNfaW5pdF9jZmcoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbkBAIC0zMzkwLDYgKzM0MzAsMTAgQEAgY29uc3Qgc3RydWN0IHJ0dzg5X2NoaXBfaW5mbyBydHc4OTIyZF9jaGlwX2luZm8gPSB7XFxuIFxcdC5yc3NpX3RvbFxcdFxcdD0gMixcXG4gXFx0Lm1vbl9yZWdfbnVtXFx0XFx0PSBBUlJBWV9TSVpFKHJ0dzg5X2J0Y184OTIyZF9tb25fcmVnKSxcXG4gXFx0Lm1vbl9yZWdcXHRcXHQ9IHJ0dzg5X2J0Y184OTIyZF9tb25fcmVnLFxcbitcXHQucmZfcGFyYV91bGlua192MFxcdD0gTlVMTCxcXG4rXFx0LnJmX3BhcmFfZGxpbmtfdjBcXHQ9IE5VTEwsXFxuK1xcdC5yZl9wYXJhX3VsaW5rX251bV92MFxcdD0gMCxcXG4rXFx0LnJmX3BhcmFfZGxpbmtfbnVtX3YwXFx0PSAwLFxcbiBcXHQucmZfcGFyYV91bGlua192OVxcdD0gcnR3ODlfYnRjXzg5MjJkX3JmX3VsX3Y5LFxcbiBcXHQucmZfcGFyYV9kbGlua192OVxcdD0gcnR3ODlfYnRjXzg5MjJkX3JmX2RsX3Y5LFxcbiBcXHQucmZfcGFyYV91bGlua19udW1fdjlcXHQ9IEFSUkFZX1NJWkUocnR3ODlfYnRjXzg5MjJkX3JmX3VsX3Y5KSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMDM6NTY6MjYuNDY4MzE1MTM5WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NTU0NTU4NjczMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJSVFc4OV9DT1JFXCIsXG4gICAgXCJSVFc4OV84ODUyQUVcIixcbiAgICBcIlJUVzg5Xzg4NTJBVVwiLFxuICAgIFwiUlRXODlfODkyMkFFXCIsXG4gICAgXCJSVFc4OV84OTIyQVVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJydHc4OV9md19oMmNfY3hkcnZfdHJ4X3Y3XCIsXG4gICAgXCJydHc4OV9md19oMmNfY3hkcnZfdHJ4X3Y5XCIsXG4gICAgXCJydHc4OV9md19oMmNfY3h0eHB3cl92N1wiLFxuICAgIFwicnR3ODlfZndfaDJjX2N4dHhwd3JfdjlcIixcbiAgICBcIl9zZXRfd2xfdHhfcG93ZXJcIixcbiAgICBcIl9zZXRfd2xfcnhfZ2FpblwiLFxuICAgIFwiX3NldF9yZl90cnhfcGFyYVwiLFxuICAgIFwiX3VwZGF0ZV9idF9zY2JkXCIsXG4gICAgXCJfY2hrX2J0Y19yZXBvcnRcIixcbiAgICBcInJ0dzg5X2J0Y19jMmhfaGFuZGxlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggdXBkYXRlcyB0aGUgQmx1ZXRvb3RoIGNvZXhpc3RlbmNlIChCVEMpIGxvZ2ljIGZvciBSZWFsdGVrIFdpLUZpIGRyaXZlcnMgKHJ0dzg5KS4gSXQgYWRkcyBzdXBwb3J0IGZvciBuZXcgZmlybXdhcmUgdmVyc2lvbnMgKHY3LCB2OSkgYW5kIG5ldyBoYXJkd2FyZSAoUlRMODkyMkQpLCBtb2RpZnlpbmcgaG93IFJGIFRYL1JYIHBhcmFtZXRlcnMgYXJlIGNvbmZpZ3VyZWQgYW5kIGhvdyBCVEMgcmVwb3J0cyBhcmUgaGFuZGxlZC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgZHJpdmVyJ3MgY29yZSBsb2dpYyBhbmQgZmlybXdhcmUgY29tbXVuaWNhdGlvbiwgd2hpY2ggY2FuIGJlIHJlYWNoZWQgdmlhIHNvZnR3YXJlLWVtdWxhdGVkIFVTQi9QQ0kgZGV2aWNlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAwZDAyYTVmOWY3YjRkYjgwODE0ZWYyMmNiOWU1MzYwOTFlNjVkNzAyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdW4gMjQgMDM6NTY6MjQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jXG5pbmRleCAwZjdhZTU3MmVmOTE1MS4uMTM2MWQ0ZDU0NTI4MjEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmNcbkBAIC0xMSw3ICsxMSw3IEBAXG4gI2luY2x1ZGUgXCJwcy5oXCJcbiAjaW5jbHVkZSBcInJlZy5oXCJcbiBcbi0jZGVmaW5lIFJUVzg5X0NPRVhfVkVSU0lPTiAweDA5MDAwMDEzXG4rI2RlZmluZSBSVFc4OV9DT0VYX1ZFUlNJT04gMHgwOTAwMDExM1xuICNkZWZpbmUgRkNYREVGX1NURVAgNTAgLyogTVVTVCBcdTAwM2M9IEZDWE1BWF9TVEVQIGFuZCBtYXRjaCB3aXRoIHdsIGZ3Ki9cbiAjZGVmaW5lIEJUQ19FMkdfTElNSVRfREVGIDgwXG4gXG5AQCAtMTMzLDEyNSArMTMzLDE0OSBAQCBzdGF0aWMgY29uc3QgdTMyIGN4dGJsW10gPSB7XG4gXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9idGNfdmVyIHJ0dzg5X2J0Y192ZXJfZGVmc1tdID0ge1xuIFx0LyogZmlybXdhcmUgdmVyc2lvbiBtdXN0IGJlIGluIGRlY3JlYXNpbmcgb3JkZXIgZm9yIGVhY2ggY2hpcCAqL1xuK1x0e1JUTDg5MjJELCBSVFc4OV9GV19WRVJfQ09ERSgwLCAzNSwgOTQsIDApLFxuK1x0IC5mY3hidGNycHQgPSAxMSwgLmZjeHRkbWEgPSA4LCAgICAuZmN4c2xvdHMgPSA3LCAuZmN4Y3lzdGEgPSA4LFxuK1x0IC5mY3hzdGVwID0gNywgICAgLmZjeG51bGxzdGEgPSA3LCAuZmN4bXJlZyA9IDcsICAuZmN4Z3Bpb2RiZyA9IDgsXG4rXHQgLmZjeGJ0dmVyID0gOCwgICAuZmN4YnRzY2FuID0gOCwgIC5mY3hidGFmaCA9IDgsIC5mY3hidGRldmluZm8gPSA4LFxuK1x0IC5md2xyb2xlID0gMTAsICAgIC5mcnB0bWFwID0gNSwgICAgLmZjeGN0cmwgPSA5LCAgLmZjeGluaXQgPSAxMCxcbitcdCAuZndldm50cnB0bCA9IDEsICAuZndjMmhmdW5jID0gNCwgLmRydmluZm9fdmVyID0gMywgLmluZm9fYnVmID0gMTgwMCxcbitcdCAubWF4X3JvbGVfbnVtID0gNiwgLmZjeG9zaSA9IDYsICAgLmZjeG1sbyA9IDIsICAgLmJ0X2Rlc2lyZWQgPSA4LFxuK1x0IC5mY3h0cnggPSA5LFxuK1x0fSxcbiBcdHtSVEw4ODUyQlQsIFJUVzg5X0ZXX1ZFUl9DT0RFKDAsIDI5LCAxMjIsIDApLFxuIFx0IC5mY3hidGNycHQgPSA4LCAuZmN4dGRtYSA9IDcsICAgIC5mY3hzbG90cyA9IDcsIC5mY3hjeXN0YSA9IDcsXG4gXHQgLmZjeHN0ZXAgPSA3LCAgIC5mY3hudWxsc3RhID0gNywgLmZjeG1yZWcgPSA3LCAgLmZjeGdwaW9kYmcgPSA3LFxuIFx0IC5mY3hidHZlciA9IDcsICAuZmN4YnRzY2FuID0gNywgIC5mY3hidGFmaCA9IDcsIC5mY3hidGRldmluZm8gPSA3LFxuIFx0IC5md2xyb2xlID0gNywgICAuZnJwdG1hcCA9IDMsICAgIC5mY3hjdHJsID0gNywgIC5mY3hpbml0ID0gNyxcbi1cdCAuZndldm50cnB0bCA9IDEsIC5md2MyaGZ1bmMgPSAyLCAuZHJ2aW5mb190eXBlID0gMSwgLmluZm9fYnVmID0gMTgwMCxcbitcdCAuZndldm50cnB0bCA9IDEsIC5md2MyaGZ1bmMgPSAyLCAuZHJ2aW5mb192ZXIgPSAxLCAuaW5mb19idWYgPSAxODAwLFxuIFx0IC5tYXhfcm9sZV9udW0gPSA2LCAuZmN4b3NpID0gMCwgIC5mY3htbG8gPSAwLCAgIC5idF9kZXNpcmVkID0gOCxcbitcdCAuZmN4dHJ4ID0gMCxcbiBcdH0sXG4gXHR7UlRMODg1MkJULCBSVFc4OV9GV19WRVJfQ09ERSgwLCAyOSwgOTAsIDApLFxuIFx0IC5mY3hidGNycHQgPSA3LCAuZmN4dGRtYSA9IDcsICAgIC5mY3hzbG90cyA9IDcsIC5mY3hjeXN0YSA9IDcsXG4gXHQgLmZjeHN0ZXAgPSA3LCAgIC5mY3hudWxsc3RhID0gNywgLmZjeG1yZWcgPSA3LCAgLmZjeGdwaW9kYmcgPSA3LFxuIFx0IC5mY3hidHZlciA9IDcsICAuZmN4YnRzY2FuID0gNywgIC5mY3hidGFmaCA9IDcsIC5mY3hidGRldmluZm8gPSA3LFxuIFx0IC5md2xyb2xlID0gNywgICAuZnJwdG1hcCA9IDMsICAgIC5mY3hjdHJsID0gNywgIC5mY3hpbml0ID0gNyxcbi1cdCAuZndldm50cnB0bCA9IDEsIC5md2MyaGZ1bmMgPSAyLCAuZHJ2aW5mb190eXBlID0gMSwgLmluZm9fYnVmID0gMTgwMCxcbitcdCAuZndldm50cnB0bCA9IDEsIC5md2MyaGZ1bmMgPSAyLCAuZHJ2aW5mb192ZXIgPSAxLCAuaW5mb19idWYgPSAxODAwLFxuIFx0IC5tYXhfcm9sZV9udW0gPSA2LCAuZmN4b3NpID0gMCwgIC5mY3htbG8gPSAwLCAgIC5idF9kZXNpcmVkID0gOCxcbitcdCAuZmN4dHJ4ID0gMCxcbiBcdH0sXG4gXHR7UlRMODkyMkEsIFJUVzg5X0ZXX1ZFUl9DT0RFKDAsIDM1LCA3MSwgMCksXG4gXHQgLmZjeGJ0Y3JwdCA9IDgsIC5mY3h0ZG1hID0gNywgICAgLmZjeHNsb3RzID0gNywgLmZjeGN5c3RhID0gNyxcbiBcdCAuZmN4c3RlcCA9IDcsICAgLmZjeG51bGxzdGEgPSA3LCAuZmN4bXJlZyA9IDcsICAuZmN4Z3Bpb2RiZyA9IDcsXG4gXHQgLmZjeGJ0dmVyID0gNywgIC5mY3hidHNjYW4gPSA3LCAgLmZjeGJ0YWZoID0gNywgLmZjeGJ0ZGV2aW5mbyA9IDcsXG4gXHQgLmZ3bHJvbGUgPSA4LCAgIC5mcnB0bWFwID0gNCwgICAgLmZjeGN0cmwgPSA3LCAgLmZjeGluaXQgPSA3LFxuLVx0IC5md2V2bnRycHRsID0gMSwgLmZ3YzJoZnVuYyA9IDMsIC5kcnZpbmZvX3R5cGUgPSAyLCAuaW5mb19idWYgPSAxODAwLFxuK1x0IC5md2V2bnRycHRsID0gMSwgLmZ3YzJoZnVuYyA9IDMsIC5kcnZpbmZvX3ZlciA9IDMsIC5pbmZvX2J1ZiA9IDE4MDAsXG4gXHQgLm1heF9yb2xlX251bSA9IDYsIC5mY3hvc2kgPSAxLCAgLmZjeG1sbyA9IDEsICAgLmJ0X2Rlc2lyZWQgPSA5LFxuK1x0IC5mY3h0cnggPSA3LFxuIFx0fSxcbiBcdHtSVEw4OTIyQSwgUlRXODlfRldfVkVSX0NPREUoMCwgMzUsIDYzLCAwKSxcbiBcdCAuZmN4YnRjcnB0ID0gOCwgLmZjeHRkbWEgPSA3LCAgICAuZmN4c2xvdHMgPSA3LCAuZmN4Y3lzdGEgPSA3LFxuIFx0IC5mY3hzdGVwID0gNywgICAuZmN4bnVsbHN0YSA9IDcsIC5mY3htcmVnID0gNywgIC5mY3hncGlvZGJnID0gNyxcbiBcdCAuZmN4YnR2ZXIgPSA3LCAgLmZjeGJ0c2NhbiA9IDcsICAuZmN4YnRhZmggPSA3LCAuZmN4YnRkZXZpbmZvID0gNyxcbiBcdCAuZndscm9sZSA9IDgsICAgLmZycHRtYXAgPSA0LCAgICAuZmN4Y3RybCA9IDcsICAuZmN4aW5pdCA9IDcsXG4tXHQgLmZ3ZXZudHJwdGwgPSAxLCAuZndjMmhmdW5jID0gMywgLmRydmluZm9fdHlwZSA9IDIsIC5pbmZvX2J1ZiA9IDE4MDAsXG4rXHQgLmZ3ZXZudHJwdGwgPSAxLCAuZndjMmhmdW5jID0gMywgLmRydmluZm9fdmVyID0gMiwgLmluZm9fYnVmID0gMTgwMCxcbiBcdCAubWF4X3JvbGVfbnVtID0gNiwgLmZjeG9zaSA9IDEsICAuZmN4bWxvID0gMSwgICAuYnRfZGVzaXJlZCA9IDksXG4rXHQgLmZjeHRyeCA9IDAsXG4gXHR9LFxuIFx0e1JUTDg5MjJBLCBSVFc4OV9GV19WRVJfQ09ERSgwLCAzNSwgOCwgMCksXG4gXHQgLmZjeGJ0Y3JwdCA9IDgsIC5mY3h0ZG1hID0gNywgICAgLmZjeHNsb3RzID0gNywgLmZjeGN5c3RhID0gNyxcbiBcdCAuZmN4c3RlcCA9IDcsICAgLmZjeG51bGxzdGEgPSA3LCAuZmN4bXJlZyA9IDcsICAuZmN4Z3Bpb2RiZyA9IDcsXG4gXHQgLmZjeGJ0dmVyID0gNywgIC5mY3hidHNjYW4gPSA3LCAgLmZjeGJ0YWZoID0gNywgLmZjeGJ0ZGV2aW5mbyA9IDcsXG4gXHQgLmZ3bHJvbGUgPSA4LCAgIC5mcnB0bWFwID0gMywgICAgLmZjeGN0cmwgPSA3LCAgLmZjeGluaXQgPSA3LFxuLVx0IC5md2V2bnRycHRsID0gMSwgLmZ3YzJoZnVuYyA9IDEsIC5kcnZpbmZvX3R5cGUgPSAxLCAuaW5mb19idWYgPSAxODAwLFxuK1x0IC5md2V2bnRycHRsID0gMSwgLmZ3YzJoZnVuYyA9IDEsIC5kcnZpbmZvX3ZlciA9IDEsIC5pbmZvX2J1ZiA9IDE4MDAsXG4gXHQgLm1heF9yb2xlX251bSA9IDYsIC5mY3hvc2kgPSAwLCAgLmZjeG1sbyA9IDAsICAgLmJ0X2Rlc2lyZWQgPSA3LFxuK1x0IC5mY3h0cnggPSAwLFxuIFx0fSxcbiBcdHtSVEw4ODUxQiwgUlRXODlfRldfVkVSX0NPREUoMCwgMjksIDI5LCAwKSxcbiBcdCAuZmN4YnRjcnB0ID0gMTA1LCAuZmN4dGRtYSA9IDMsICAgIC5mY3hzbG90cyA9IDEsIC5mY3hjeXN0YSA9IDUsXG4gXHQgLmZjeHN0ZXAgPSAzLCAgIC5mY3hudWxsc3RhID0gMiwgLmZjeG1yZWcgPSAyLCAgLmZjeGdwaW9kYmcgPSAxLFxuIFx0IC5mY3hidHZlciA9IDEsICAuZmN4YnRzY2FuID0gMiwgIC5mY3hidGFmaCA9IDIsIC5mY3hidGRldmluZm8gPSAxLFxuIFx0IC5md2xyb2xlID0gMiwgICAuZnJwdG1hcCA9IDMsICAgIC5mY3hjdHJsID0gMSwgIC5mY3hpbml0ID0gMCxcbi1cdCAuZndldm50cnB0bCA9IDAsIC5md2MyaGZ1bmMgPSAxLCAuZHJ2aW5mb190eXBlID0gMCwgLmluZm9fYnVmID0gMTgwMCxcbitcdCAuZndldm50cnB0bCA9IDAsIC5md2MyaGZ1bmMgPSAxLCAuZHJ2aW5mb192ZXIgPSAwLCAuaW5mb19idWYgPSAxODAwLFxuIFx0IC5tYXhfcm9sZV9udW0gPSA2LCAuZmN4b3NpID0gMCwgIC5mY3htbG8gPSAwLCAgIC5idF9kZXNpcmVkID0gNyxcbitcdCAuZmN4dHJ4ID0gMCxcbiBcdH0sXG4gXHR7UlRMODg1MkMsIFJUVzg5X0ZXX1ZFUl9DT0RFKDAsIDI3LCA1NywgMCksXG4gXHQgLmZjeGJ0Y3JwdCA9IDQsIC5mY3h0ZG1hID0gMywgICAgLmZjeHNsb3RzID0gMSwgLmZjeGN5c3RhID0gMyxcbiBcdCAuZmN4c3RlcCA9IDMsICAgLmZjeG51bGxzdGEgPSAyLCAuZmN4bXJlZyA9IDEsICAuZmN4Z3Bpb2RiZyA9IDEsXG4gXHQgLmZjeGJ0dmVyID0gMSwgIC5mY3hidHNjYW4gPSAxLCAgLmZjeGJ0YWZoID0gMiwgLmZjeGJ0ZGV2aW5mbyA9IDEsXG4gXHQgLmZ3bHJvbGUgPSAxLCAgIC5mcnB0bWFwID0gMywgICAgLmZjeGN0cmwgPSAxLCAgLmZjeGluaXQgPSAwLFxuLVx0IC5md2V2bnRycHRsID0gMCwgLmZ3YzJoZnVuYyA9IDEsIC5kcnZpbmZvX3R5cGUgPSAwLCAuaW5mb19idWYgPSAxMjgwLFxuK1x0IC5md2V2bnRycHRsID0gMCwgLmZ3YzJoZnVuYyA9IDEsIC5kcnZpbmZvX3ZlciA9IDAsIC5pbmZvX2J1ZiA9IDEyODAsXG4gXHQgLm1heF9yb2xlX251bSA9IDUsIC5mY3hvc2kgPSAwLCAgLmZjeG1sbyA9IDAsICAgLmJ0X2Rlc2lyZWQgPSA3LFxuK1x0IC5mY3h0cnggPSAwLFxuIFx0fSxcbiBcdHtSVEw4ODUyQywgUlRXODlfRldfVkVSX0NPREUoMCwgMjcsIDQyLCAwKSxcbiBcdCAuZmN4YnRjcnB0ID0gNCwgLmZjeHRkbWEgPSAzLCAgICAuZmN4c2xvdHMgPSAxLCAuZmN4Y3lzdGEgPSAzLFxuIFx0IC5mY3hzdGVwID0gMywgICAuZmN4bnVsbHN0YSA9IDIsIC5mY3htcmVnID0gMSwgIC5mY3hncGlvZGJnID0gMSxcbiBcdCAuZmN4YnR2ZXIgPSAxLCAgLmZjeGJ0c2NhbiA9IDEsICAuZmN4YnRhZmggPSAyLCAuZmN4YnRkZXZpbmZvID0gMSxcbiBcdCAuZndscm9sZSA9IDEsICAgLmZycHRtYXAgPSAyLCAgICAuZmN4Y3RybCA9IDEsICAuZmN4aW5pdCA9IDAsXG4tXHQgLmZ3ZXZudHJwdGwgPSAwLCAuZndjMmhmdW5jID0gMSwgLmRydmluZm9fdHlwZSA9IDAsIC5pbmZvX2J1ZiA9IDEyODAsXG4rXHQgLmZ3ZXZudHJwdGwgPSAwLCAuZndjMmhmdW5jID0gMSwgLmRydmluZm9fdmVyID0gMCwgLmluZm9fYnVmID0gMTI4MCxcbiBcdCAubWF4X3JvbGVfbnVtID0gNSwgLmZjeG9zaSA9IDAsICAuZmN4bWxvID0gMCwgICAuYnRfZGVzaXJlZCA9IDcsXG4rXHQgLmZjeHRyeCA9IDAsXG4gXHR9LFxuIFx0e1JUTDg4NTJDLCBSVFc4OV9GV19WRVJfQ09ERSgwLCAyNywgMCwgMCksXG4gXHQgLmZjeGJ0Y3JwdCA9IDQsIC5mY3h0ZG1hID0gMywgICAgLmZjeHNsb3RzID0gMSwgLmZjeGN5c3RhID0gMyxcbiBcdCAuZmN4c3RlcCA9IDMsICAgLmZjeG51bGxzdGEgPSAyLCAuZmN4bXJlZyA9IDEsICAuZmN4Z3Bpb2RiZyA9IDEsXG4gXHQgLmZjeGJ0dmVyID0gMSwgIC5mY3hidHNjYW4gPSAxLCAgLmZjeGJ0YWZoID0gMSwgLmZjeGJ0ZGV2aW5mbyA9IDEsXG4gXHQgLmZ3bHJvbGUgPSAxLCAgIC5mcnB0bWFwID0gMiwgICAgLmZjeGN0cmwgPSAxLCAgLmZjeGluaXQgPSAwLFxuLVx0IC5md2V2bnRycHRsID0gMCwgLmZ3YzJoZnVuYyA9IDEsIC5kcnZpbmZvX3R5cGUgPSAwLCAuaW5mb19idWYgPSAxMjgwLFxuK1x0IC5md2V2bnRycHRsID0gMCwgLmZ3YzJoZnVuYyA9IDEsIC5kcnZpbmZvX3ZlciA9IDAsIC5pbmZvX2J1ZiA9IDEyODAsXG4gXHQgLm1heF9yb2xlX251bSA9IDUsIC5mY3hvc2kgPSAwLCAgLmZjeG1sbyA9IDAsICAgLmJ0X2Rlc2lyZWQgPSA3LFxuK1x0IC5mY3h0cnggPSAwLFxuIFx0fSxcbiBcdHtSVEw4ODUyQiwgUlRXODlfRldfVkVSX0NPREUoMCwgMjksIDEyMiwgMCksXG4gXHQgLmZjeGJ0Y3JwdCA9IDgsIC5mY3h0ZG1hID0gNywgICAgLmZjeHNsb3RzID0gNywgLmZjeGN5c3RhID0gNyxcbiBcdCAuZmN4c3RlcCA9IDcsICAgLmZjeG51bGxzdGEgPSA3LCAuZmN4bXJlZyA9IDcsICAuZmN4Z3Bpb2RiZyA9IDcsXG4gXHQgLmZjeGJ0dmVyID0gNywgIC5mY3hidHNjYW4gPSA3LCAgLmZjeGJ0YWZoID0gNywgLmZjeGJ0ZGV2aW5mbyA9IDcsXG4gXHQgLmZ3bHJvbGUgPSA3LCAgIC5mcnB0bWFwID0gMywgICAgLmZjeGN0cmwgPSA3LCAgLmZjeGluaXQgPSA3LFxuLVx0IC5md2V2bnRycHRsID0gMSwgLmZ3YzJoZnVuYyA9IDIsIC5kcnZpbmZvX3R5cGUgPSAxLCAuaW5mb19idWYgPSAxODAwLFxuK1x0IC5md2V2bnRycHRsID0gMSwgLmZ3YzJoZnVuYyA9IDIsIC5kcnZpbmZvX3ZlciA9IDEsIC5pbmZvX2J1ZiA9IDE4MDAsXG4gXHQgLm1heF9yb2xlX251bSA9IDYsIC5mY3hvc2kgPSAwLCAgLmZjeG1sbyA9IDAsICAgLmJ0X2Rlc2lyZWQgPSA4LFxuK1x0IC5mY3h0cnggPSAwLFxuIFx0fSxcbiBcdHtSVEw4ODUyQiwgUlRXODlfRldfVkVSX0NPREUoMCwgMjksIDI5LCAwKSxcbiBcdCAuZmN4YnRjcnB0ID0gMTA1LCAuZmN4dGRtYSA9IDMsICAuZmN4c2xvdHMgPSAxLCAuZmN4Y3lzdGEgPSA1LFxuIFx0IC5mY3hzdGVwID0gMywgICAuZmN4bnVsbHN0YSA9IDIsIC5mY3htcmVnID0gMiwgIC5mY3hncGlvZGJnID0gMSxcbiBcdCAuZmN4YnR2ZXIgPSAxLCAgLmZjeGJ0c2NhbiA9IDIsICAuZmN4YnRhZmggPSAyLCAuZmN4YnRkZXZpbmZvID0gMSxcbiBcdCAuZndscm9sZSA9IDIsICAgLmZycHRtYXAgPSAzLCAgICAuZmN4Y3RybCA9IDEsICAuZmN4aW5pdCA9IDAsXG4tXHQgLmZ3ZXZudHJwdGwgPSAwLCAuZndjMmhmdW5jID0gMSwgLmRydmluZm9fdHlwZSA9IDAsIC5pbmZvX2J1ZiA9IDE4MDAsXG4rXHQgLmZ3ZXZudHJwdGwgPSAwLCAuZndjMmhmdW5jID0gMSwgLmRydmluZm9fdmVyID0gMCwgLmluZm9fYnVmID0gMTgwMCxcbiBcdCAubWF4X3JvbGVfbnVtID0gNiwgLmZjeG9zaSA9IDAsICAuZmN4bWxvID0gMCwgICAuYnRfZGVzaXJlZCA9IDcsXG4rXHQgLmZjeHRyeCA9IDAsXG4gXHR9LFxuIFx0e1JUTDg4NTJCLCBSVFc4OV9GV19WRVJfQ09ERSgwLCAyOSwgMTQsIDApLFxuIFx0IC5mY3hidGNycHQgPSA1LCAuZmN4dGRtYSA9IDMsICAgIC5mY3hzbG90cyA9IDEsIC5mY3hjeXN0YSA9IDQsXG4gXHQgLmZjeHN0ZXAgPSAzLCAgIC5mY3hudWxsc3RhID0gMiwgLmZjeG1yZWcgPSAxLCAgLmZjeGdwaW9kYmcgPSAxLFxuIFx0IC5mY3hidHZlciA9IDEsICAuZmN4YnRzY2FuID0gMSwgIC5mY3hidGFmaCA9IDIsIC5mY3hidGRldmluZm8gPSAxLFxuIFx0IC5md2xyb2xlID0gMSwgICAuZnJwdG1hcCA9IDMsICAgIC5mY3hjdHJsID0gMSwgIC5mY3hpbml0ID0gMCxcbi1cdCAuZndldm50cnB0bCA9IDAsIC5md2MyaGZ1bmMgPSAxLCAuZHJ2aW5mb190eXBlID0gMCwgLmluZm9fYnVmID0gMTgwMCxcbitcdCAuZndldm50cnB0bCA9IDAsIC5md2MyaGZ1bmMgPSAxLCAuZHJ2aW5mb192ZXIgPSAwLCAuaW5mb19idWYgPSAxODAwLFxuIFx0IC5tYXhfcm9sZV9udW0gPSA2LCAuZmN4b3NpID0gMCwgIC5mY3htbG8gPSAwLCAgIC5idF9kZXNpcmVkID0gNyxcbitcdCAuZmN4dHJ4ID0gMCxcbiBcdH0sXG4gXHR7UlRMODg1MkIsIFJUVzg5X0ZXX1ZFUl9DT0RFKDAsIDI3LCAwLCAwKSxcbiBcdCAuZmN4YnRjcnB0ID0gNCwgLmZjeHRkbWEgPSAzLCAgICAuZmN4c2xvdHMgPSAxLCAuZmN4Y3lzdGEgPSAzLFxuIFx0IC5mY3hzdGVwID0gMywgICAuZmN4bnVsbHN0YSA9IDIsIC5mY3htcmVnID0gMSwgIC5mY3hncGlvZGJnID0gMSxcbiBcdCAuZmN4YnR2ZXIgPSAxLCAgLmZjeGJ0c2NhbiA9IDEsICAuZmN4YnRhZmggPSAxLCAuZmN4YnRkZXZpbmZvID0gMSxcbiBcdCAuZndscm9sZSA9IDEsICAgLmZycHRtYXAgPSAxLCAgICAuZmN4Y3RybCA9IDEsICAuZmN4aW5pdCA9IDAsXG4tXHQgLmZ3ZXZudHJwdGwgPSAwLCAuZndjMmhmdW5jID0gMSwgLmRydmluZm9fdHlwZSA9IDAsIC5pbmZvX2J1ZiA9IDEyODAsXG4rXHQgLmZ3ZXZudHJwdGwgPSAwLCAuZndjMmhmdW5jID0gMSwgLmRydmluZm9fdmVyID0gMCwgLmluZm9fYnVmID0gMTI4MCxcbiBcdCAubWF4X3JvbGVfbnVtID0gNSwgLmZjeG9zaSA9IDAsICAuZmN4bWxvID0gMCwgICAuYnRfZGVzaXJlZCA9IDcsXG4rXHQgLmZjeHRyeCA9IDAsXG4gXHR9LFxuIFx0e1JUTDg4NTJBLCBSVFc4OV9GV19WRVJfQ09ERSgwLCAxMywgMzcsIDApLFxuIFx0IC5mY3hidGNycHQgPSA0LCAuZmN4dGRtYSA9IDMsICAgIC5mY3hzbG90cyA9IDEsIC5mY3hjeXN0YSA9IDMsXG4gXHQgLmZjeHN0ZXAgPSAzLCAgIC5mY3hudWxsc3RhID0gMiwgLmZjeG1yZWcgPSAxLCAgLmZjeGdwaW9kYmcgPSAxLFxuIFx0IC5mY3hidHZlciA9IDEsICAuZmN4YnRzY2FuID0gMSwgIC5mY3hidGFmaCA9IDIsIC5mY3hidGRldmluZm8gPSAxLFxuIFx0IC5md2xyb2xlID0gMSwgICAuZnJwdG1hcCA9IDMsICAgIC5mY3hjdHJsID0gMSwgIC5mY3hpbml0ID0gMCxcbi1cdCAuZndldm50cnB0bCA9IDAsIC5md2MyaGZ1bmMgPSAwLCAuZHJ2aW5mb190eXBlID0gMCwgLmluZm9fYnVmID0gMTI4MCxcbitcdCAuZndldm50cnB0bCA9IDAsIC5md2MyaGZ1bmMgPSAwLCAuZHJ2aW5mb192ZXIgPSAwLCAuaW5mb19idWYgPSAxMjgwLFxuIFx0IC5tYXhfcm9sZV9udW0gPSA1LCAuZmN4b3NpID0gMCwgIC5mY3htbG8gPSAwLCAgIC5idF9kZXNpcmVkID0gNyxcbitcdCAuZmN4dHJ4ID0gMCxcbiBcdH0sXG4gXHR7UlRMODg1MkEsIFJUVzg5X0ZXX1ZFUl9DT0RFKDAsIDEzLCAwLCAwKSxcbiBcdCAuZmN4YnRjcnB0ID0gMSwgLmZjeHRkbWEgPSAxLCAgICAuZmN4c2xvdHMgPSAxLCAuZmN4Y3lzdGEgPSAyLFxuIFx0IC5mY3hzdGVwID0gMiwgICAuZmN4bnVsbHN0YSA9IDEsIC5mY3htcmVnID0gMSwgIC5mY3hncGlvZGJnID0gMSxcbiBcdCAuZmN4YnR2ZXIgPSAxLCAgLmZjeGJ0c2NhbiA9IDEsICAuZmN4YnRhZmggPSAxLCAuZmN4YnRkZXZpbmZvID0gMSxcbiBcdCAuZndscm9sZSA9IDAsICAgLmZycHRtYXAgPSAwLCAgICAuZmN4Y3RybCA9IDAsICAuZmN4aW5pdCA9IDAsXG4tXHQgLmZ3ZXZudHJwdGwgPSAwLCAuZndjMmhmdW5jID0gMCwgLmRydmluZm9fdHlwZSA9IDAsIC5pbmZvX2J1ZiA9IDEwMjQsXG4rXHQgLmZ3ZXZudHJwdGwgPSAwLCAuZndjMmhmdW5jID0gMCwgLmRydmluZm9fdmVyID0gMCwgLmluZm9fYnVmID0gMTAyNCxcbiBcdCAubWF4X3JvbGVfbnVtID0gNSwgLmZjeG9zaSA9IDAsICAuZmN4bWxvID0gMCwgICAuYnRfZGVzaXJlZCA9IDcsXG4rXHQgLmZjeHRyeCA9IDAsXG4gXHR9LFxuIFxuIFx0Lyoga2VlcCBpdCB0byBiZSB0aGUgbGFzdCBhcyBkZWZhdWx0IGVudHJ5ICovXG5AQCAtMjYwLDggKzI4NCw5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3ZlciBydHc4OV9idGNfdmVyX2RlZnNbXSA9IHtcbiBcdCAuZmN4c3RlcCA9IDIsICAgLmZjeG51bGxzdGEgPSAxLCAuZmN4bXJlZyA9IDEsICAuZmN4Z3Bpb2RiZyA9IDEsXG4gXHQgLmZjeGJ0dmVyID0gMSwgIC5mY3hidHNjYW4gPSAxLCAgLmZjeGJ0YWZoID0gMSwgLmZjeGJ0ZGV2aW5mbyA9IDEsXG4gXHQgLmZ3bHJvbGUgPSAwLCAgIC5mcnB0bWFwID0gMCwgICAgLmZjeGN0cmwgPSAwLCAgLmZjeGluaXQgPSAwLFxuLVx0IC5md2V2bnRycHRsID0gMCwgLmZ3YzJoZnVuYyA9IDEsIC5kcnZpbmZvX3R5cGUgPSAwLCAuaW5mb19idWYgPSAxMDI0LFxuK1x0IC5md2V2bnRycHRsID0gMCwgLmZ3YzJoZnVuYyA9IDEsIC5kcnZpbmZvX3ZlciA9IDAsIC5pbmZvX2J1ZiA9IDEwMjQsXG4gXHQgLm1heF9yb2xlX251bSA9IDUsIC5mY3hvc2kgPSAwLCAgLmZjeG1sbyA9IDAsICAgLmJ0X2Rlc2lyZWQgPSA3LFxuK1x0IC5mY3h0cnggPSAwLFxuIFx0fSxcbiB9O1xuIFxuQEAgLTI4OCw2ICszMTMsNyBAQCBzdGF0aWMgdTMyIGNoaXBfaWRfdG9fYnRfcm9tX2NvZGVfaWQodTMyIGlkKVxuIFx0Y2FzZSBSVEw4ODUxQjpcbiBcdFx0cmV0dXJuIDB4ODg1MTtcbiBcdGNhc2UgUlRMODkyMkE6XG4rXHRjYXNlIFJUTDg5MjJEOlxuIFx0XHRyZXR1cm4gMHg4OTIyO1xuIFx0ZGVmYXVsdDpcbiBcdFx0cmV0dXJuIDA7XG5AQCAtMzIyLDYgKzM0OCw4IEBAIHN0YXRpYyBjaGFyICpjaGlwX2lkX3N0cih1MzIgaWQpXG4gXHRcdHJldHVybiBcIlJUTDg4NTFCXCI7XG4gXHRjYXNlIFJUTDg5MjJBOlxuIFx0XHRyZXR1cm4gXCJSVEw4OTIyQVwiO1xuK1x0Y2FzZSBSVEw4OTIyRDpcbitcdFx0cmV0dXJuIFwiUlRMODkyMkRcIjtcbiBcdGRlZmF1bHQ6XG4gXHRcdHJldHVybiBcIlVOS05PV05cIjtcbiBcdH1cbkBAIC00MzQsNiArNDYyLDggQEAgZW51bSBidGNfYjJ3X3Njb3JlYm9hcmQge1xuIFx0QlRDX0JTQ0JfV0xSRksgPSBCSVQoMTEpLFxuIFx0QlRDX0JTQ0JfQlRfSElMTkEgPSBCSVQoMTMpLFxuIFx0QlRDX0JTQ0JfQlRfQ09OTkVDVCA9IEJJVCgxNiksXG4rXHRCVENfQlNDQl9QQU5fQUNUID0gQklUKDI4KSxcbitcdEJUQ19CU0NCX0hGUF9BQ1QgPSBCSVQoMjkpLFxuIFx0QlRDX0JTQ0JfUEFUQ0hfQ09ERSA9IEJJVCgzMCksXG4gXHRCVENfQlNDQl9BTEwgPSBHRU5NQVNLKDMwLCAwKSxcbiB9O1xuQEAgLTkyMiw3ICs5NTIsNyBAQCBzdGF0aWMgdm9pZCBfcmVzZXRfYnRjX3ZhcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHR5cGUpXG4gXHRjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3ZlciAqdmVyID0gYnRjLVx1MDAzZXZlcjtcbiBcdHN0cnVjdCBydHc4OV9idGNfY3ggKmN4ID0gXHUwMDI2YnRjLVx1MDAzZWN4O1xuIFx0c3RydWN0IHJ0dzg5X2J0Y193bF9pbmZvICp3bCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC53bDtcbi1cdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcdTAwMjZidGMtXHUwMDNlY3guYnQ7XG4rXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXHUwMDI2YnRjLVx1MDAzZWN4LmJ0MDtcbiBcdHN0cnVjdCBydHc4OV9idGNfYnRfbGlua19pbmZvICpidF9saW5mbyA9IFx1MDAyNmJ0LVx1MDAzZWxpbmtfaW5mbztcbiBcdHN0cnVjdCBydHc4OV9idGNfd2xfbGlua19pbmZvICp3bF9saW5mbztcbiBcdHU4IGk7XG5AQCAtOTczLDggKzEwMDMsOCBAQCBzdGF0aWMgdm9pZCBfcmVzZXRfYnRjX3ZhcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHR5cGUpXG4gXHRcdH1cbiBcbiBcdFx0YnRjLVx1MDAzZXBvbGljeV9sZW4gPSAwO1xuLVx0XHRidGMtXHUwMDNlYnRfcmVxX2xlbiA9IDA7XG4tXG4rXHRcdGJ0Yy1cdTAwM2VidF9yZXFfbGVuW1JUVzg5X1BIWV8wXSA9IDA7XG4rXHRcdGJ0Yy1cdTAwM2VidF9yZXFfbGVuW1JUVzg5X1BIWV8xXSA9IDA7XG4gXHRcdGJ0Yy1cdTAwM2VkbS5jb2V4X2luZm9fbWFwID0gQlRDX0NPRVhfSU5GT19BTEw7XG4gXHRcdGJ0Yy1cdTAwM2VkbS53bF90eF9saW1pdC50eF90aW1lID0gQlRDX01BWF9UWF9USU1FX0RFRjtcbiBcdFx0YnRjLVx1MDAzZWRtLndsX3R4X2xpbWl0LnR4X3JldHJ5ID0gQlRDX01BWF9UWF9SRVRSWV9ERUY7XG5AQCAtMTEwNCw3ICsxMTM0LDcgQEAgc3RhdGljIHZvaWQgX2Noa19idGNfZXJyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggdHlwZSwgdTMyIGNudClcbiB7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcdTAwMjZydHdkZXYtXHUwMDNlYnRjO1xuIFx0c3RydWN0IHJ0dzg5X2J0Y19jeCAqY3ggPSBcdTAwMjZidGMtXHUwMDNlY3g7XG4tXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXHUwMDI2Y3gtXHUwMDNlYnQ7XG4rXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXHUwMDI2Y3gtXHUwMDNlYnQwO1xuIFx0c3RydWN0IHJ0dzg5X2J0Y193bF9pbmZvICp3bCA9IFx1MDAyNmN4LVx1MDAzZXdsO1xuIFx0c3RydWN0IHJ0dzg5X2J0Y19kbSAqZG0gPSBcdTAwMjZidGMtXHUwMDNlZG07XG4gXG5AQCAtMTIxNiw3ICsxMjQ2LDcgQEAgc3RhdGljIHZvaWQgX2Noa19idGNfZXJyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggdHlwZSwgdTMyIGNudClcbiBcdFx0XHRkbS1cdTAwM2VlcnJvci5tYXAuc2xvdF9ub19zeW5jID0gZmFsc2U7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCVENfRENOVF9CVFRYX0hBTkc6XG4tXHRcdGNudCA9IGN4LVx1MDAzZWNudF9idFtCVENfQkNOVF9MT1BSSV9UWF07XG4rXHRcdGNudCA9IGJ0LVx1MDAzZWJjbnRbQlRDX0JDTlRfTE9QUklfVFhdO1xuIFxuIFx0XHRpZiAoY250ID09IDAgXHUwMDI2XHUwMDI2IGJ0LVx1MDAzZWxpbmtfaW5mby5zbGF2ZV9yb2xlKVxuIFx0XHRcdGRtLVx1MDAzZWNudF9kbVtCVENfRENOVF9CVFRYX0hBTkddKys7XG5AQCAtMTIyOSwxMCArMTI1OSwxMCBAQCBzdGF0aWMgdm9pZCBfY2hrX2J0Y19lcnIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCB0eXBlLCB1MzIgY250KVxuIFx0XHRcdGRtLVx1MDAzZWVycm9yLm1hcC5idF90eF9oYW5nID0gZmFsc2U7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCVENfRENOVF9CVENOVF9IQU5HOlxuLVx0XHRjbnQgPSBjeC1cdTAwM2VjbnRfYnRbQlRDX0JDTlRfSElQUklfUlhdICtcbi1cdFx0ICAgICAgY3gtXHUwMDNlY250X2J0W0JUQ19CQ05UX0hJUFJJX1RYXSArXG4tXHRcdCAgICAgIGN4LVx1MDAzZWNudF9idFtCVENfQkNOVF9MT1BSSV9SWF0gK1xuLVx0XHQgICAgICBjeC1cdTAwM2VjbnRfYnRbQlRDX0JDTlRfTE9QUklfVFhdO1xuK1x0XHRjbnQgPSBidC1cdTAwM2ViY250W0JUQ19CQ05UX0hJUFJJX1JYXSArXG4rXHRcdCAgICAgIGJ0LVx1MDAzZWJjbnRbQlRDX0JDTlRfSElQUklfVFhdICtcbitcdFx0ICAgICAgYnQtXHUwMDNlYmNudFtCVENfQkNOVF9MT1BSSV9SWF0gK1xuK1x0XHQgICAgICBidC1cdTAwM2ViY250W0JUQ19CQ05UX0xPUFJJX1RYXTtcbiBcbiBcdFx0aWYgKGNudCA9PSAwKVxuIFx0XHRcdGRtLVx1MDAzZWNudF9kbVtCVENfRENOVF9CVENOVF9IQU5HXSsrO1xuQEAgLTEyNzQsNyArMTMwNCw3IEBAIHN0YXRpYyB2b2lkIF91cGRhdGVfYnRfcmVwb3J0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggcnB0X3R5cGUsIHU4ICpwZmluZm8pXG4ge1xuIFx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXHUwMDI2cnR3ZGV2LVx1MDAzZWJ0YztcbiBcdGNvbnN0IHN0cnVjdCBydHc4OV9idGNfdmVyICp2ZXIgPSBidGMtXHUwMDNldmVyO1xuLVx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC5idDtcbitcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcdTAwMjZidGMtXHUwMDNlY3guYnQwO1xuIFx0c3RydWN0IHJ0dzg5X2J0Y19idF9saW5rX2luZm8gKmJ0X2xpbmZvID0gXHUwMDI2YnQtXHUwMDNlbGlua19pbmZvO1xuIFx0c3RydWN0IHJ0dzg5X2J0Y19idF9hMmRwX2Rlc2MgKmEyZHAgPSBcdTAwMjZidF9saW5mby1cdTAwM2VhMmRwX2Rlc2M7XG4gXHR1bmlvbiAgcnR3ODlfYnRjX2ZidGNfYnR2ZXIgKnB2ZXIgPSBcdTAwMjZidGMtXHUwMDNlZndpbmZvLnJwdF9mYnRjX2J0dmVyLmZpbmZvO1xuQEAgLTE0MTUsNyArMTQ0NSw3IEBAIHN0YXRpYyB1MzIgX2Noa19idGNfcmVwb3J0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbiBcdHN0cnVjdCBydHc4OV9idGNfZG0gKmRtID0gXHUwMDI2YnRjLVx1MDAzZWRtO1xuIFx0c3RydWN0IHJ0dzg5X2J0Y19ycHRfY21uX2luZm8gKnBjaW5mbyA9IE5VTEw7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX2luZm8gKndsID0gXHUwMDI2YnRjLVx1MDAzZWN4LndsO1xuLVx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC5idDtcbitcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcdTAwMjZidGMtXHUwMDNlY3guYnQwO1xuIFx0dW5pb24gcnR3ODlfYnRjX2ZidGNfcnB0X2N0cmxfdmVyX2luZm8gKnBycHQgPSBOVUxMO1xuIFx0dW5pb24gcnR3ODlfYnRjX2ZidGNfY3lzdGFfaW5mbyAqcGN5c3RhID0gTlVMTDtcbiBcdHN0cnVjdCBydHc4OV9idGNfcHJwdCAqYnRjX3BycHQgPSBOVUxMO1xuQEAgLTE3MjEsNyArMTc1MSw3IEBAIHN0YXRpYyB1MzIgX2Noa19idGNfcmVwb3J0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbiBcdFx0XHRcdHJ0d2Rldi1cdTAwM2VjaGlwLVx1MDAzZW9wcy1cdTAwM2VidGNfdXBkYXRlX2J0X2NudChydHdkZXYpO1xuIFx0XHRcdFx0X2Noa19idGNfZXJyKHJ0d2RldiwgQlRDX0RDTlRfQlRDTlRfSEFORywgMCk7XG4gXG4tXHRcdFx0XHRidGMtXHUwMDNlY3guY250X2J0W0JUQ19CQ05UX1BPTFVUXSA9XG4rXHRcdFx0XHRidC1cdTAwM2ViY250W0JUQ19CQ05UX1BPTFVUXSA9XG4gXHRcdFx0XHRcdHJ0dzg5X21hY19nZXRfcGx0X2NudChydHdkZXYsXG4gXHRcdFx0XHRcdFx0XHQgICAgICBSVFc4OV9NQUNfMCk7XG4gXHRcdFx0fVxuQEAgLTE3MzYsMTUgKzE3NjYsMTUgQEAgc3RhdGljIHUzMiBfY2hrX2J0Y19yZXBvcnQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuIFx0XHRcdFx0bWVtY3B5KFx1MDAyNmRtLVx1MDAzZWdudC5iYW5kW2ldLCBcdTAwMjZwcnB0LVx1MDAzZXY0LmdudF92YWxbaV0sXG4gXHRcdFx0XHQgICAgICAgc2l6ZW9mKGRtLVx1MDAzZWdudC5iYW5kW2ldKSk7XG4gXG4tXHRcdFx0YnRjLVx1MDAzZWN4LmNudF9idFtCVENfQkNOVF9ISVBSSV9UWF0gPVxuK1x0XHRcdGJ0LVx1MDAzZWJjbnRbQlRDX0JDTlRfSElQUklfVFhdID1cbiBcdFx0XHRcdGxlMzJfdG9fY3B1KHBycHQtXHUwMDNldjQuYnRfY250W0JUQ19CQ05UX0hJX1RYXSk7XG4tXHRcdFx0YnRjLVx1MDAzZWN4LmNudF9idFtCVENfQkNOVF9ISVBSSV9SWF0gPVxuK1x0XHRcdGJ0LVx1MDAzZWJjbnRbQlRDX0JDTlRfSElQUklfUlhdID1cbiBcdFx0XHRcdGxlMzJfdG9fY3B1KHBycHQtXHUwMDNldjQuYnRfY250W0JUQ19CQ05UX0hJX1JYXSk7XG4tXHRcdFx0YnRjLVx1MDAzZWN4LmNudF9idFtCVENfQkNOVF9MT1BSSV9UWF0gPVxuK1x0XHRcdGJ0LVx1MDAzZWJjbnRbQlRDX0JDTlRfTE9QUklfVFhdID1cbiBcdFx0XHRcdGxlMzJfdG9fY3B1KHBycHQtXHUwMDNldjQuYnRfY250W0JUQ19CQ05UX0xPX1RYXSk7XG4tXHRcdFx0YnRjLVx1MDAzZWN4LmNudF9idFtCVENfQkNOVF9MT1BSSV9SWF0gPVxuK1x0XHRcdGJ0LVx1MDAzZWJjbnRbQlRDX0JDTlRfTE9QUklfUlhdID1cbiBcdFx0XHRcdGxlMzJfdG9fY3B1KHBycHQtXHUwMDNldjQuYnRfY250W0JUQ19CQ05UX0xPX1JYXSk7XG4tXHRcdFx0YnRjLVx1MDAzZWN4LmNudF9idFtCVENfQkNOVF9QT0xVVF0gPVxuK1x0XHRcdGJ0LVx1MDAzZWJjbnRbQlRDX0JDTlRfUE9MVVRdID1cbiBcdFx0XHRcdGxlMzJfdG9fY3B1KHBycHQtXHUwMDNldjQuYnRfY250W0JUQ19CQ05UX1BPTExVVEVEXSk7XG4gXG4gXHRcdFx0X2Noa19idGNfZXJyKHJ0d2RldiwgQlRDX0RDTlRfQlRDTlRfSEFORywgMCk7XG5AQCAtMTc2OCwxNSArMTc5OCwxNSBAQCBzdGF0aWMgdTMyIF9jaGtfYnRjX3JlcG9ydChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4gXHRcdFx0XHRtZW1jcHkoXHUwMDI2ZG0tXHUwMDNlZ250LmJhbmRbaV0sIFx1MDAyNnBycHQtXHUwMDNldjUuZ250X3ZhbFtpXVswXSxcbiBcdFx0XHRcdCAgICAgICBzaXplb2YoZG0tXHUwMDNlZ250LmJhbmRbaV0pKTtcbiBcbi1cdFx0XHRidGMtXHUwMDNlY3guY250X2J0W0JUQ19CQ05UX0hJUFJJX1RYXSA9XG4rXHRcdFx0YnQtXHUwMDNlYmNudFtCVENfQkNOVF9ISVBSSV9UWF0gPVxuIFx0XHRcdFx0bGUxNl90b19jcHUocHJwdC1cdTAwM2V2NS5idF9jbnRbQlRDX0JDTlRfSElfVFhdKTtcbi1cdFx0XHRidGMtXHUwMDNlY3guY250X2J0W0JUQ19CQ05UX0hJUFJJX1JYXSA9XG4rXHRcdFx0YnQtXHUwMDNlYmNudFtCVENfQkNOVF9ISVBSSV9SWF0gPVxuIFx0XHRcdFx0bGUxNl90b19jcHUocHJwdC1cdTAwM2V2NS5idF9jbnRbQlRDX0JDTlRfSElfUlhdKTtcbi1cdFx0XHRidGMtXHUwMDNlY3guY250X2J0W0JUQ19CQ05UX0xPUFJJX1RYXSA9XG4rXHRcdFx0YnQtXHUwMDNlYmNudFtCVENfQkNOVF9MT1BSSV9UWF0gPVxuIFx0XHRcdFx0bGUxNl90b19jcHUocHJwdC1cdTAwM2V2NS5idF9jbnRbQlRDX0JDTlRfTE9fVFhdKTtcbi1cdFx0XHRidGMtXHUwMDNlY3guY250X2J0W0JUQ19CQ05UX0xPUFJJX1JYXSA9XG4rXHRcdFx0YnQtXHUwMDNlYmNudFtCVENfQkNOVF9MT1BSSV9SWF0gPVxuIFx0XHRcdFx0bGUxNl90b19jcHUocHJwdC1cdTAwM2V2NS5idF9jbnRbQlRDX0JDTlRfTE9fUlhdKTtcbi1cdFx0XHRidGMtXHUwMDNlY3guY250X2J0W0JUQ19CQ05UX1BPTFVUXSA9XG4rXHRcdFx0YnQtXHUwMDNlYmNudFtCVENfQkNOVF9QT0xVVF0gPVxuIFx0XHRcdFx0bGUxNl90b19jcHUocHJwdC1cdTAwM2V2NS5idF9jbnRbQlRDX0JDTlRfUE9MTFVURURdKTtcbiBcbiBcdFx0XHRfY2hrX2J0Y19lcnIocnR3ZGV2LCBCVENfRENOVF9CVENOVF9IQU5HLCAwKTtcbkBAIC0xNzk1LDE1ICsxODI1LDE1IEBAIHN0YXRpYyB1MzIgX2Noa19idGNfcmVwb3J0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbiBcdFx0XHRcdG1lbWNweShcdTAwMjZkbS1cdTAwM2VnbnQuYmFuZFtpXSwgXHUwMDI2cHJwdC1cdTAwM2V2MTA1LmdudF92YWxbaV1bMF0sXG4gXHRcdFx0XHQgICAgICAgc2l6ZW9mKGRtLVx1MDAzZWdudC5iYW5kW2ldKSk7XG4gXG4tXHRcdFx0YnRjLVx1MDAzZWN4LmNudF9idFtCVENfQkNOVF9ISVBSSV9UWF0gPVxuK1x0XHRcdGJ0LVx1MDAzZWJjbnRbQlRDX0JDTlRfSElQUklfVFhdID1cbiBcdFx0XHRcdGxlMTZfdG9fY3B1KHBycHQtXHUwMDNldjEwNS5idF9jbnRbQlRDX0JDTlRfSElfVFhfVjEwNV0pO1xuLVx0XHRcdGJ0Yy1cdTAwM2VjeC5jbnRfYnRbQlRDX0JDTlRfSElQUklfUlhdID1cbitcdFx0XHRidC1cdTAwM2ViY250W0JUQ19CQ05UX0hJUFJJX1JYXSA9XG4gXHRcdFx0XHRsZTE2X3RvX2NwdShwcnB0LVx1MDAzZXYxMDUuYnRfY250W0JUQ19CQ05UX0hJX1JYX1YxMDVdKTtcbi1cdFx0XHRidGMtXHUwMDNlY3guY250X2J0W0JUQ19CQ05UX0xPUFJJX1RYXSA9XG4rXHRcdFx0YnQtXHUwMDNlYmNudFtCVENfQkNOVF9MT1BSSV9UWF0gPVxuIFx0XHRcdFx0bGUxNl90b19jcHUocHJwdC1cdTAwM2V2MTA1LmJ0X2NudFtCVENfQkNOVF9MT19UWF9WMTA1XSk7XG4tXHRcdFx0YnRjLVx1MDAzZWN4LmNudF9idFtCVENfQkNOVF9MT1BSSV9SWF0gPVxuK1x0XHRcdGJ0LVx1MDAzZWJjbnRbQlRDX0JDTlRfTE9QUklfUlhdID1cbiBcdFx0XHRcdGxlMTZfdG9fY3B1KHBycHQtXHUwMDNldjEwNS5idF9jbnRbQlRDX0JDTlRfTE9fUlhfVjEwNV0pO1xuLVx0XHRcdGJ0Yy1cdTAwM2VjeC5jbnRfYnRbQlRDX0JDTlRfUE9MVVRdID1cbitcdFx0XHRidC1cdTAwM2ViY250W0JUQ19CQ05UX1BPTFVUXSA9XG4gXHRcdFx0XHRsZTE2X3RvX2NwdShwcnB0LVx1MDAzZXYxMDUuYnRfY250W0JUQ19CQ05UX1BPTExVVEVEX1YxMDVdKTtcbiBcbiBcdFx0XHRfY2hrX2J0Y19lcnIocnR3ZGV2LCBCVENfRENOVF9CVENOVF9IQU5HLCAwKTtcbkBAIC0xODIxLDIxICsxODUxLDIxIEBAIHN0YXRpYyB1MzIgX2Noa19idGNfcmVwb3J0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbiBcdFx0XHRcdG1lbWNweShcdTAwMjZkbS1cdTAwM2VnbnQuYmFuZFtpXSwgXHUwMDI2cHJwdC1cdTAwM2V2Ny5nbnRfdmFsW2ldWzBdLFxuIFx0XHRcdFx0ICAgICAgIHNpemVvZihkbS1cdTAwM2VnbnQuYmFuZFtpXSkpO1xuIFxuLVx0XHRcdGJ0Yy1cdTAwM2VjeC5jbnRfYnRbQlRDX0JDTlRfSElQUklfVFhdID1cbitcdFx0XHRidC1cdTAwM2ViY250W0JUQ19CQ05UX0hJUFJJX1RYXSA9XG4gXHRcdFx0XHRsZTE2X3RvX2NwdShwcnB0LVx1MDAzZXY3LmJ0X2NudFtCVENfQkNOVF9ISV9UWF9WMTA1XSk7XG4tXHRcdFx0YnRjLVx1MDAzZWN4LmNudF9idFtCVENfQkNOVF9ISVBSSV9SWF0gPVxuK1x0XHRcdGJ0LVx1MDAzZWJjbnRbQlRDX0JDTlRfSElQUklfUlhdID1cbiBcdFx0XHRcdGxlMTZfdG9fY3B1KHBycHQtXHUwMDNldjcuYnRfY250W0JUQ19CQ05UX0hJX1JYX1YxMDVdKTtcbi1cdFx0XHRidGMtXHUwMDNlY3guY250X2J0W0JUQ19CQ05UX0xPUFJJX1RYXSA9XG4rXHRcdFx0YnQtXHUwMDNlYmNudFtCVENfQkNOVF9MT1BSSV9UWF0gPVxuIFx0XHRcdFx0bGUxNl90b19jcHUocHJwdC1cdTAwM2V2Ny5idF9jbnRbQlRDX0JDTlRfTE9fVFhfVjEwNV0pO1xuLVx0XHRcdGJ0Yy1cdTAwM2VjeC5jbnRfYnRbQlRDX0JDTlRfTE9QUklfUlhdID1cbitcdFx0XHRidC1cdTAwM2ViY250W0JUQ19CQ05UX0xPUFJJX1JYXSA9XG4gXHRcdFx0XHRsZTE2X3RvX2NwdShwcnB0LVx1MDAzZXY3LmJ0X2NudFtCVENfQkNOVF9MT19SWF9WMTA1XSk7XG4gXG4gXHRcdFx0dmFsMSA9IGxlMTZfdG9fY3B1KHBycHQtXHUwMDNldjcuYnRfY250W0JUQ19CQ05UX1BPTExVVEVEX1YxMDVdKTtcbi1cdFx0XHRpZiAodmFsMSBcdTAwM2UgYnRjLVx1MDAzZWN4LmNudF9idFtCVENfQkNOVF9QT0xVVF9OT1ddKVxuLVx0XHRcdFx0dmFsMSAtPSBidGMtXHUwMDNlY3guY250X2J0W0JUQ19CQ05UX1BPTFVUX05PV107IC8qIGRpZmYgKi9cbitcdFx0XHRpZiAodmFsMSBcdTAwM2UgYnQtXHUwMDNlYmNudFtCVENfQkNOVF9QT0xVVF9OT1ddKVxuK1x0XHRcdFx0dmFsMSAtPSBidC1cdTAwM2ViY250W0JUQ19CQ05UX1BPTFVUX05PV107IC8qIGRpZmYgKi9cbiBcbi1cdFx0XHRidGMtXHUwMDNlY3guY250X2J0W0JUQ19CQ05UX1BPTFVUX0RJRkZdID0gdmFsMTtcbi1cdFx0XHRidGMtXHUwMDNlY3guY250X2J0W0JUQ19CQ05UX1BPTFVUX05PV10gPVxuK1x0XHRcdGJ0LVx1MDAzZWJjbnRbQlRDX0JDTlRfUE9MVVRfRElGRl0gPSB2YWwxO1xuK1x0XHRcdGJ0LVx1MDAzZWJjbnRbQlRDX0JDTlRfUE9MVVRfTk9XXSA9XG4gXHRcdFx0XHRsZTE2X3RvX2NwdShwcnB0LVx1MDAzZXY3LmJ0X2NudFtCVENfQkNOVF9QT0xMVVRFRF9WMTA1XSk7XG4gXG4gXHRcdFx0dmFsMSA9IHBmd2luZm8tXHUwMDNlZXZlbnRbQlRGX0VWTlRfUlBUXTtcbkBAIC0xODUzLDIxICsxODgzLDIxIEBAIHN0YXRpYyB1MzIgX2Noa19idGNfcmVwb3J0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbiBcdFx0XHRcdG1lbWNweShcdTAwMjZkbS1cdTAwM2VnbnQuYmFuZFtpXSwgXHUwMDI2cHJwdC1cdTAwM2V2OC5nbnRfdmFsW2ldWzBdLFxuIFx0XHRcdFx0ICAgICAgIHNpemVvZihkbS1cdTAwM2VnbnQuYmFuZFtpXSkpO1xuIFxuLVx0XHRcdGJ0Yy1cdTAwM2VjeC5jbnRfYnRbQlRDX0JDTlRfSElQUklfVFhdID1cbitcdFx0XHRidC1cdTAwM2ViY250W0JUQ19CQ05UX0hJUFJJX1RYXSA9XG4gXHRcdFx0XHRsZTE2X3RvX2NwdShwcnB0LVx1MDAzZXY4LmJ0X2NudFtCVENfQkNOVF9ISV9UWF9WMTA1XSk7XG4tXHRcdFx0YnRjLVx1MDAzZWN4LmNudF9idFtCVENfQkNOVF9ISVBSSV9SWF0gPVxuK1x0XHRcdGJ0LVx1MDAzZWJjbnRbQlRDX0JDTlRfSElQUklfUlhdID1cbiBcdFx0XHRcdGxlMTZfdG9fY3B1KHBycHQtXHUwMDNldjguYnRfY250W0JUQ19CQ05UX0hJX1JYX1YxMDVdKTtcbi1cdFx0XHRidGMtXHUwMDNlY3guY250X2J0W0JUQ19CQ05UX0xPUFJJX1RYXSA9XG4rXHRcdFx0YnQtXHUwMDNlYmNudFtCVENfQkNOVF9MT1BSSV9UWF0gPVxuIFx0XHRcdFx0bGUxNl90b19jcHUocHJwdC1cdTAwM2V2OC5idF9jbnRbQlRDX0JDTlRfTE9fVFhfVjEwNV0pO1xuLVx0XHRcdGJ0Yy1cdTAwM2VjeC5jbnRfYnRbQlRDX0JDTlRfTE9QUklfUlhdID1cbitcdFx0XHRidC1cdTAwM2ViY250W0JUQ19CQ05UX0xPUFJJX1JYXSA9XG4gXHRcdFx0XHRsZTE2X3RvX2NwdShwcnB0LVx1MDAzZXY4LmJ0X2NudFtCVENfQkNOVF9MT19SWF9WMTA1XSk7XG4gXG4gXHRcdFx0dmFsMSA9IGxlMTZfdG9fY3B1KHBycHQtXHUwMDNldjguYnRfY250W0JUQ19CQ05UX1BPTExVVEVEX1YxMDVdKTtcbi1cdFx0XHRpZiAodmFsMSBcdTAwM2UgYnRjLVx1MDAzZWN4LmNudF9idFtCVENfQkNOVF9QT0xVVF9OT1ddKVxuLVx0XHRcdFx0dmFsMSAtPSBidGMtXHUwMDNlY3guY250X2J0W0JUQ19CQ05UX1BPTFVUX05PV107IC8qIGRpZmYgKi9cbitcdFx0XHRpZiAodmFsMSBcdTAwM2UgYnQtXHUwMDNlYmNudFtCVENfQkNOVF9QT0xVVF9OT1ddKVxuK1x0XHRcdFx0dmFsMSAtPSBidC1cdTAwM2ViY250W0JUQ19CQ05UX1BPTFVUX05PV107IC8qIGRpZmYgKi9cbiBcbi1cdFx0XHRidGMtXHUwMDNlY3guY250X2J0W0JUQ19CQ05UX1BPTFVUX0RJRkZdID0gdmFsMTtcbi1cdFx0XHRidGMtXHUwMDNlY3guY250X2J0W0JUQ19CQ05UX1BPTFVUX05PV10gPVxuK1x0XHRcdGJ0LVx1MDAzZWJjbnRbQlRDX0JDTlRfUE9MVVRfRElGRl0gPSB2YWwxO1xuK1x0XHRcdGJ0LVx1MDAzZWJjbnRbQlRDX0JDTlRfUE9MVVRfTk9XXSA9XG4gXHRcdFx0XHRsZTE2X3RvX2NwdShwcnB0LVx1MDAzZXY4LmJ0X2NudFtCVENfQkNOVF9QT0xMVVRFRF9WMTA1XSk7XG4gXG4gXHRcdFx0dmFsMSA9IHBmd2luZm8tXHUwMDNlZXZlbnRbQlRGX0VWTlRfUlBUXTtcbkBAIC0xOTkyLDEwICsyMDIyLDEwIEBAIHN0YXRpYyB1MzIgX2Noa19idGNfcmVwb3J0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbiBcdFx0XHQvKiBDaGVjayBkaWZmIHRpbWUgYmV0d2VlbiByZWFsIEJUIHNsb3QgYW5kIEVCVC9FNUcgc2xvdCAqL1xuIFx0XHRcdGlmIChkbS1cdTAwM2V0ZG1hX25vdy50eXBlID09IENYVERNQV9PRkYgXHUwMDI2XHUwMDI2XG4gXHRcdFx0ICAgIGRtLVx1MDAzZXRkbWFfbm93LmV4dF9jdHJsID09IENYRUNUTF9FWFQgXHUwMDI2XHUwMDI2XG4tXHRcdFx0ICAgIGJ0Yy1cdTAwM2VidF9yZXFfbGVuICE9IDApIHtcbitcdFx0XHQgICAgYnRjLVx1MDAzZWJ0X3JlcV9sZW5bUlRXODlfUEhZXzBdICE9IDApIHtcbiBcdFx0XHRcdGJ0X3Nsb3RfcmVhbCA9IGxlMTZfdG9fY3B1KHBjeXN0YS1cdTAwM2V2My5jeWNsZV90aW1lLnRhdmdbQ1hUX0JUXSk7XG4tXHRcdFx0XHRpZiAoYnRjLVx1MDAzZWJ0X3JlcV9sZW4gXHUwMDNlIGJ0X3Nsb3RfcmVhbCkge1xuLVx0XHRcdFx0XHRkaWZmX3QgPSBidGMtXHUwMDNlYnRfcmVxX2xlbiAtIGJ0X3Nsb3RfcmVhbDtcbitcdFx0XHRcdGlmIChidGMtXHUwMDNlYnRfcmVxX2xlbltSVFc4OV9QSFlfMF0gXHUwMDNlIGJ0X3Nsb3RfcmVhbCkge1xuK1x0XHRcdFx0XHRkaWZmX3QgPSBidGMtXHUwMDNlYnRfcmVxX2xlbltSVFc4OV9QSFlfMF0gLSBidF9zbG90X3JlYWw7XG4gXHRcdFx0XHRcdF9jaGtfYnRjX2VycihydHdkZXYsIEJUQ19EQ05UX0JUX1NMT1RfRFJJRlQsIGRpZmZfdCk7XG4gXHRcdFx0XHR9XG4gXHRcdFx0fVxuQEAgLTIwMzYsMTEgKzIwNjYsMTEgQEAgc3RhdGljIHUzMiBfY2hrX2J0Y19yZXBvcnQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuIFx0XHRcdC8qIENoZWNrIGRpZmYgdGltZSBiZXR3ZWVuIHJlYWwgQlQgc2xvdCBhbmQgRUJUL0U1RyBzbG90ICovXG4gXHRcdFx0aWYgKGRtLVx1MDAzZXRkbWFfbm93LnR5cGUgPT0gQ1hURE1BX09GRiBcdTAwMjZcdTAwMjZcbiBcdFx0XHQgICAgZG0tXHUwMDNldGRtYV9ub3cuZXh0X2N0cmwgPT0gQ1hFQ1RMX0VYVCBcdTAwMjZcdTAwMjZcbi1cdFx0XHQgICAgYnRjLVx1MDAzZWJ0X3JlcV9sZW4gIT0gMCkge1xuK1x0XHRcdCAgICBidGMtXHUwMDNlYnRfcmVxX2xlbltSVFc4OV9QSFlfMF0gIT0gMCkge1xuIFx0XHRcdFx0YnRfc2xvdF9yZWFsID0gbGUxNl90b19jcHUocGN5c3RhLVx1MDAzZXY0LmN5Y2xlX3RpbWUudGF2Z1tDWFRfQlRdKTtcbiBcbi1cdFx0XHRcdGlmIChidGMtXHUwMDNlYnRfcmVxX2xlbiBcdTAwM2UgYnRfc2xvdF9yZWFsKSB7XG4tXHRcdFx0XHRcdGRpZmZfdCA9IGJ0Yy1cdTAwM2VidF9yZXFfbGVuIC0gYnRfc2xvdF9yZWFsO1xuK1x0XHRcdFx0aWYgKGJ0Yy1cdTAwM2VidF9yZXFfbGVuW1JUVzg5X1BIWV8wXSBcdTAwM2UgYnRfc2xvdF9yZWFsKSB7XG4rXHRcdFx0XHRcdGRpZmZfdCA9IGJ0Yy1cdTAwM2VidF9yZXFfbGVuW1JUVzg5X1BIWV8wXSAtIGJ0X3Nsb3RfcmVhbDtcbiBcdFx0XHRcdFx0X2Noa19idGNfZXJyKHJ0d2RldiwgQlRDX0RDTlRfQlRfU0xPVF9EUklGVCwgZGlmZl90KTtcbiBcdFx0XHRcdH1cbiBcdFx0XHR9XG5AQCAtMjA4MSw3ICsyMTExLDcgQEAgc3RhdGljIHUzMiBfY2hrX2J0Y19yZXBvcnQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuIFx0XHRcdF9jaGtfYnRjX2VycihydHdkZXYsIEJUQ19EQ05UX1dMX1NMT1RfRFJJRlQsIGRpZmZfdCk7XG4gXG4gXHRcdFx0LyogQ2hlY2sgZGlmZiB0aW1lIGJldHdlZW4gcmVhbCBCVCBzbG90IGFuZCBFQlQvRTVHIHNsb3QgKi9cbi1cdFx0XHRidF9zbG90X3NldCA9IGJ0Yy1cdTAwM2VidF9yZXFfbGVuO1xuK1x0XHRcdGJ0X3Nsb3Rfc2V0ID0gYnRjLVx1MDAzZWJ0X3JlcV9sZW5bUlRXODlfUEhZXzBdO1xuIFx0XHRcdGJ0X3Nsb3RfcmVhbCA9IGxlMTZfdG9fY3B1KHBjeXN0YS1cdTAwM2V2NS5jeWNsZV90aW1lLnRhdmdbQ1hUX0JUXSk7XG4gXHRcdFx0ZGlmZl90ID0gMDtcbiBcdFx0XHRpZiAoZG0tXHUwMDNldGRtYV9ub3cudHlwZSA9PSBDWFRETUFfT0ZGIFx1MDAyNlx1MDAyNlxuQEAgLTI0MDUsNiArMjQzNSw3IEBAIHN0YXRpYyB1MzIgcnR3ODlfYnRjX2Z3X3JwdF92ZXIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgcnB0X21hcClcbiBcdFx0XHRicmVhaztcbiBcdFx0Y2FzZSAzOlxuIFx0XHRjYXNlIDQ6XG4rXHRcdGNhc2UgNTpcbiBcdFx0XHRiaXRfbWFwID0gQklUKDUpO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHRkZWZhdWx0OlxuQEAgLTI0MjAsNiArMjQ1MSw3IEBAIHN0YXRpYyB1MzIgcnR3ODlfYnRjX2Z3X3JwdF92ZXIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgcnB0X21hcClcbiBcdFx0XHRicmVhaztcbiBcdFx0Y2FzZSAzOlxuIFx0XHRjYXNlIDQ6XG4rXHRcdGNhc2UgNTpcbiBcdFx0XHRiaXRfbWFwID0gQklUKDYpO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHRkZWZhdWx0OlxuQEAgLTI0MzMsNiArMjQ2NSw3IEBAIHN0YXRpYyB1MzIgcnR3ODlfYnRjX2Z3X3JwdF92ZXIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgcnB0X21hcClcbiBcdFx0XHRicmVhaztcbiBcdFx0Y2FzZSAzOlxuIFx0XHRjYXNlIDQ6XG4rXHRcdGNhc2UgNTpcbiBcdFx0XHRiaXRfbWFwID0gQklUKDcpO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHRkZWZhdWx0OlxuQEAgLTI0NDcsNiArMjQ4MCw3IEBAIHN0YXRpYyB1MzIgcnR3ODlfYnRjX2Z3X3JwdF92ZXIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgcnB0X21hcClcbiBcdFx0Y2FzZSAzOlxuIFx0XHRcdGJyZWFrO1xuIFx0XHRjYXNlIDQ6XG4rXHRcdGNhc2UgNTpcbiBcdFx0XHRiaXRfbWFwID0gQklUKDgpO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHRkZWZhdWx0OlxuQEAgLTI0NjMsNiArMjQ5Nyw3IEBAIHN0YXRpYyB1MzIgcnR3ODlfYnRjX2Z3X3JwdF92ZXIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgcnB0X21hcClcbiBcdFx0XHRiaXRfbWFwID0gQklUKDgpO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHRjYXNlIDQ6XG4rXHRcdGNhc2UgNTpcbiBcdFx0XHRiaXRfbWFwID0gQklUKDkpO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHRkZWZhdWx0OlxuQEAgLTI0NzAsNyArMjUwNSwxMCBAQCBzdGF0aWMgdTMyIHJ0dzg5X2J0Y19md19ycHRfdmVyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIHJwdF9tYXApXG4gXHRcdH1cbiBcdFx0YnJlYWs7XG4gXHRjYXNlIFJQVF9FTl9URVNUOlxuLVx0XHRiaXRfbWFwID0gQklUKDMxKTtcbitcdFx0aWYgKHZlci1cdTAwM2VmcnB0bWFwID09IDUpXG4rXHRcdFx0Yml0X21hcCA9IEJJVCgxMCk7XG4rXHRcdGVsc2VcbitcdFx0XHRiaXRfbWFwID0gQklUKDMxKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIFJQVF9FTl9XTF9BTEw6XG4gXHRcdHN3aXRjaCAodmVyLVx1MDAzZWZycHRtYXApIHtcbkBAIC0yNDgzLDYgKzI1MjEsNyBAQCBzdGF0aWMgdTMyIHJ0dzg5X2J0Y19md19ycHRfdmVyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIHJwdF9tYXApXG4gXHRcdFx0Yml0X21hcCA9IEdFTk1BU0soMiwgMCkgfCBCSVQoOCk7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdGNhc2UgNDpcbitcdFx0Y2FzZSA1OlxuIFx0XHRcdGJpdF9tYXAgPSBHRU5NQVNLKDIsIDApIHwgQklUKDkpO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHRkZWZhdWx0OlxuQEAgLTI1MDIsNiArMjU0MSw3IEBAIHN0YXRpYyB1MzIgcnR3ODlfYnRjX2Z3X3JwdF92ZXIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgcnB0X21hcClcbiBcdFx0XHRiaXRfbWFwID0gR0VOTUFTSyg3LCAzKTtcbiBcdFx0XHRicmVhaztcbiBcdFx0Y2FzZSA0OlxuK1x0XHRjYXNlIDU6XG4gXHRcdFx0Yml0X21hcCA9IEdFTk1BU0soOCwgMyk7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdGRlZmF1bHQ6XG5AQCAtMjUyMSw2ICsyNTYxLDcgQEAgc3RhdGljIHUzMiBydHc4OV9idGNfZndfcnB0X3ZlcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiBycHRfbWFwKVxuIFx0XHRcdGJpdF9tYXAgPSBHRU5NQVNLKDgsIDApO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHRjYXNlIDQ6XG4rXHRcdGNhc2UgNTpcbiBcdFx0XHRiaXRfbWFwID0gR0VOTUFTSyg5LCAwKTtcbiBcdFx0XHRicmVhaztcbiBcdFx0ZGVmYXVsdDpcbkBAIC0yNTQwLDYgKzI1ODEsNyBAQCBzdGF0aWMgdTMyIHJ0dzg5X2J0Y19md19ycHRfdmVyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIHJwdF9tYXApXG4gXHRcdFx0Yml0X21hcCA9IEdFTk1BU0soOCwgMik7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdGNhc2UgNDpcbitcdFx0Y2FzZSA1OlxuIFx0XHRcdGJpdF9tYXAgPSBHRU5NQVNLKDksIDIpO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHRkZWZhdWx0OlxuQEAgLTI3NDcsNyArMjc4OSw5IEBAIHN0YXRpYyB2b2lkIF9md19zZXRfcG9saWN5KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTE2IHBvbGljeV90eXBlLFxuIFx0ICAgIGRtLVx1MDAzZXRkbWEucnhmbGN0cmwgPT0gQ1hGTENfUU9TTlVMTClcbiBcdFx0YnRjLVx1MDAzZWxwcyA9IDE7XG4gXHRlbHNlXG4tXHRcdGJ0Yy1cdTAwM2VscHMgPSAwO1xuK1x0XHRidGMtXHUwMDNlbHBzID0gZG0tXHUwMDNlbHBzX2N0cmxfc2NiZDtcbitcbitcdGRtLVx1MDAzZWxwc19jdHJsX3NjYmRfbGFzdCA9IGRtLVx1MDAzZWxwc19jdHJsX3NjYmQ7XG4gXG4gXHRpZiAoYnRjLVx1MDAzZWxwcyA9PSAxKVxuIFx0XHRydHc4OV9zZXRfY29leF9jdHJsX2xwcyhydHdkZXYsIGJ0Yy1cdTAwM2VscHMpO1xuQEAgLTI3NjksNzcgKzI4MTMsODkgQEAgc3RhdGljIHZvaWQgX2Z3X3NldF9wb2xpY3koc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MTYgcG9saWN5X3R5cGUsXG4gXHRcdHJ0dzg5X3NldF9jb2V4X2N0cmxfbHBzKHJ0d2RldiwgYnRjLVx1MDAzZWxwcyk7XG4gfVxuIFxuLXN0YXRpYyB2b2lkIF9md19zZXRfZHJ2X2luZm8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCB0eXBlKVxuK3N0YXRpYyB2b2lkIF9md19zZXRfZHJ2X2luZm8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCBpbmRleClcbiB7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcdTAwMjZydHdkZXYtXHUwMDNlYnRjO1xuIFx0Y29uc3Qgc3RydWN0IHJ0dzg5X2J0Y192ZXIgKnZlciA9IGJ0Yy1cdTAwM2V2ZXI7XG4tXHRzdHJ1Y3QgcnR3ODlfYnRjX2RtICpkbSA9IFx1MDAyNmJ0Yy1cdTAwM2VkbTtcbi1cdHN0cnVjdCBydHc4OV9idGNfd2xfaW5mbyAqd2wgPSBcdTAwMjZidGMtXHUwMDNlY3gud2w7XG4tXHRzdHJ1Y3QgcnR3ODlfYnRjX3JmX3RyeF9wYXJhIHJmX3BhcmEgPSBkbS1cdTAwM2VyZl90cnhfcGFyYTtcbiBcbi1cdHN3aXRjaCAodHlwZSkge1xuK1x0c3dpdGNoIChpbmRleCkge1xuIFx0Y2FzZSBDWERSVklORk9fSU5JVDpcbiBcdFx0aWYgKHZlci1cdTAwM2VmY3hpbml0ID09IDcpXG4tXHRcdFx0cnR3ODlfZndfaDJjX2N4ZHJ2X2luaXRfdjcocnR3ZGV2LCB0eXBlKTtcbitcdFx0XHRydHc4OV9md19oMmNfY3hkcnZfaW5pdF92NyhydHdkZXYsIGluZGV4KTtcbiBcdFx0ZWxzZVxuLVx0XHRcdHJ0dzg5X2Z3X2gyY19jeGRydl9pbml0KHJ0d2RldiwgdHlwZSk7XG4rXHRcdFx0cnR3ODlfZndfaDJjX2N4ZHJ2X2luaXQocnR3ZGV2LCBpbmRleCk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBDWERSVklORk9fUk9MRTpcbiBcdFx0aWYgKHZlci1cdTAwM2Vmd2xyb2xlID09IDApXG4tXHRcdFx0cnR3ODlfZndfaDJjX2N4ZHJ2X3JvbGUocnR3ZGV2LCB0eXBlKTtcbitcdFx0XHRydHc4OV9md19oMmNfY3hkcnZfcm9sZShydHdkZXYsIGluZGV4KTtcbiBcdFx0ZWxzZSBpZiAodmVyLVx1MDAzZWZ3bHJvbGUgPT0gMSlcbi1cdFx0XHRydHc4OV9md19oMmNfY3hkcnZfcm9sZV92MShydHdkZXYsIHR5cGUpO1xuK1x0XHRcdHJ0dzg5X2Z3X2gyY19jeGRydl9yb2xlX3YxKHJ0d2RldiwgaW5kZXgpO1xuIFx0XHRlbHNlIGlmICh2ZXItXHUwMDNlZndscm9sZSA9PSAyKVxuLVx0XHRcdHJ0dzg5X2Z3X2gyY19jeGRydl9yb2xlX3YyKHJ0d2RldiwgdHlwZSk7XG4rXHRcdFx0cnR3ODlfZndfaDJjX2N4ZHJ2X3JvbGVfdjIocnR3ZGV2LCBpbmRleCk7XG4gXHRcdGVsc2UgaWYgKHZlci1cdTAwM2Vmd2xyb2xlID09IDcpXG4tXHRcdFx0cnR3ODlfZndfaDJjX2N4ZHJ2X3JvbGVfdjcocnR3ZGV2LCB0eXBlKTtcbitcdFx0XHRydHc4OV9md19oMmNfY3hkcnZfcm9sZV92NyhydHdkZXYsIGluZGV4KTtcbiBcdFx0ZWxzZSBpZiAodmVyLVx1MDAzZWZ3bHJvbGUgPT0gOClcbi1cdFx0XHRydHc4OV9md19oMmNfY3hkcnZfcm9sZV92OChydHdkZXYsIHR5cGUpO1xuK1x0XHRcdHJ0dzg5X2Z3X2gyY19jeGRydl9yb2xlX3Y4KHJ0d2RldiwgaW5kZXgpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgQ1hEUlZJTkZPX0NUUkw6XG4tXHRcdGlmICh2ZXItXHUwMDNlZHJ2aW5mb190eXBlID09IDEpXG4tXHRcdFx0dHlwZSA9IDI7XG4rXHRcdGlmICh2ZXItXHUwMDNlZHJ2aW5mb192ZXIgIT0gMClcbitcdFx0XHRpbmRleCA9IDI7XG4gXG4gXHRcdGlmICh2ZXItXHUwMDNlZmN4Y3RybCA9PSA3KVxuLVx0XHRcdHJ0dzg5X2Z3X2gyY19jeGRydl9jdHJsX3Y3KHJ0d2RldiwgdHlwZSk7XG4rXHRcdFx0cnR3ODlfZndfaDJjX2N4ZHJ2X2N0cmxfdjcocnR3ZGV2LCBpbmRleCk7XG4gXHRcdGVsc2Vcbi1cdFx0XHRydHc4OV9md19oMmNfY3hkcnZfY3RybChydHdkZXYsIHR5cGUpO1xuK1x0XHRcdHJ0dzg5X2Z3X2gyY19jeGRydl9jdHJsKHJ0d2RldiwgaW5kZXgpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgQ1hEUlZJTkZPX1RSWDpcbi1cdFx0aWYgKHZlci1cdTAwM2VkcnZpbmZvX3R5cGUgPT0gMSlcbi1cdFx0XHR0eXBlID0gMztcbi1cbi1cdFx0ZG0tXHUwMDNldHJ4X2luZm8udHhfcG93ZXIgPSB1MzJfZ2V0X2JpdHMocmZfcGFyYS53bF90eF9wb3dlcixcbi1cdFx0XHRcdFx0XHQgICAgIFJUVzg5X0JUQ19XTF9ERUZfVFhfUFdSKTtcbi1cdFx0ZG0tXHUwMDNldHJ4X2luZm8ucnhfZ2FpbiA9IHUzMl9nZXRfYml0cyhyZl9wYXJhLndsX3J4X2dhaW4sXG4tXHRcdFx0XHRcdFx0ICAgIFJUVzg5X0JUQ19XTF9ERUZfVFhfUFdSKTtcbi1cdFx0ZG0tXHUwMDNldHJ4X2luZm8uYnRfdHhfcG93ZXIgPSB1MzJfZ2V0X2JpdHMocmZfcGFyYS5idF90eF9wb3dlcixcbi1cdFx0XHRcdFx0XHRcdFJUVzg5X0JUQ19XTF9ERUZfVFhfUFdSKTtcbi1cdFx0ZG0tXHUwMDNldHJ4X2luZm8uYnRfcnhfZ2FpbiA9IHUzMl9nZXRfYml0cyhyZl9wYXJhLmJ0X3J4X2dhaW4sXG4tXHRcdFx0XHRcdFx0ICAgICAgIFJUVzg5X0JUQ19XTF9ERUZfVFhfUFdSKTtcbi1cdFx0ZG0tXHUwMDNldHJ4X2luZm8uY24gPSB3bC1cdTAwM2Vjbl9yZXBvcnQ7XG4tXHRcdGRtLVx1MDAzZXRyeF9pbmZvLm5obSA9IHdsLVx1MDAzZW5obS5wd3I7XG4tXHRcdHJ0dzg5X2Z3X2gyY19jeGRydl90cngocnR3ZGV2LCB0eXBlKTtcbitcdFx0aWYgKHZlci1cdTAwM2VkcnZpbmZvX3ZlciBcdTAwM2UgMSlcbitcdFx0XHRpbmRleCA9IDM7XG4rXG4rXHRcdGlmICh2ZXItXHUwMDNlZmN4dHJ4ID09IDcpXG4rXHRcdFx0cnR3ODlfZndfaDJjX2N4ZHJ2X3RyeF92NyhydHdkZXYsIGluZGV4KTtcbitcdFx0ZWxzZSBpZiAodmVyLVx1MDAzZWZjeHRyeCA9PSA5KVxuK1x0XHRcdHJ0dzg5X2Z3X2gyY19jeGRydl90cnhfdjkocnR3ZGV2LCBpbmRleCk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBDWERSVklORk9fUkZLOlxuLVx0XHRpZiAodmVyLVx1MDAzZWRydmluZm9fdHlwZSA9PSAxKVxuK1x0XHRpZiAodmVyLVx1MDAzZWRydmluZm9fdmVyICE9IDApXG4gXHRcdFx0cmV0dXJuO1xuIFxuLVx0XHRydHc4OV9md19oMmNfY3hkcnZfcmZrKHJ0d2RldiwgdHlwZSk7XG4rXHRcdHJ0dzg5X2Z3X2gyY19jeGRydl9yZmsocnR3ZGV2LCBpbmRleCk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBDWERSVklORk9fVFhQV1I6XG4rXHRcdGlmICh2ZXItXHUwMDNlZHJ2aW5mb192ZXIgPT0gMylcbitcdFx0XHRpbmRleCA9IDQ7XG4rXG4rXHRcdGlmICh2ZXItXHUwMDNlZmN4dHJ4ID09IDcpXG4rXHRcdFx0cnR3ODlfZndfaDJjX2N4dHhwd3JfdjcocnR3ZGV2LCBpbmRleCk7XG4rXHRcdGVsc2UgaWYgKHZlci1cdTAwM2VmY3h0cnggPT0gOSlcbitcdFx0XHRydHc4OV9md19oMmNfY3h0eHB3cl92OShydHdkZXYsIGluZGV4KTtcbitcdFx0YnJlYWs7XG4gXHRjYXNlIENYRFJWSU5GT19GRERUOlxuK1x0XHRpZiAodmVyLVx1MDAzZWRydmluZm9fdmVyID09IDMpXG4rXHRcdFx0aW5kZXggPSA1O1xuK1x0XHRlbHNlXG4rXHRcdFx0cmV0dXJuO1xuK1xuK1x0XHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19CVEMsIFwiZHJ2X2luZm8gRkREVCBpbmRleD0lZFxcblwiLCBpbmRleCk7XG4rXHRcdGJyZWFrO1xuIFx0Y2FzZSBDWERSVklORk9fTUxPOlxuK1x0XHRpZiAodmVyLVx1MDAzZWRydmluZm9fdmVyID09IDMpXG4rXHRcdFx0aW5kZXggPSA2O1xuK1x0XHRlbHNlXG4rXHRcdFx0cmV0dXJuO1xuK1xuK1x0XHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19CVEMsIFwiZHJ2X2luZm8gTUxPIGluZGV4PSVkXFxuXCIsIGluZGV4KTtcbitcdFx0YnJlYWs7XG4gXHRjYXNlIENYRFJWSU5GT19PU0k6XG4gXHRcdGlmICghdmVyLVx1MDAzZWZjeG9zaSlcbiBcdFx0XHRyZXR1cm47XG4gXG4tXHRcdGlmICh2ZXItXHUwMDNlZHJ2aW5mb190eXBlID09IDIpXG4tXHRcdFx0dHlwZSA9IDc7XG4rXHRcdGlmICh2ZXItXHUwMDNlZHJ2aW5mb192ZXIgXHUwMDNlIDEpXG4rXHRcdFx0aW5kZXggPSA3O1xuIFx0XHRlbHNlXG4gXHRcdFx0cmV0dXJuO1xuIFxuLVx0XHRydHc4OV9md19oMmNfY3hkcnZfb3NpX2luZm8ocnR3ZGV2LCB0eXBlKTtcbitcdFx0cnR3ODlfZndfaDJjX2N4ZHJ2X29zaV9pbmZvKHJ0d2RldiwgaW5kZXgpO1xuIFx0XHRicmVhaztcbiBcdGRlZmF1bHQ6XG4gXHRcdGJyZWFrO1xuQEAgLTMwMjEsNTMgKzMwNzcsODQgQEAgc3RhdGljIHZvaWQgX3NldF9idF9pZ25vcmVfd2xhbl9hY3Qoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCBlbmFibGUpXG4gI2RlZmluZSBCX0JUQ19XTF9UWF9QT1dFUl9TSUdOIEJJVCg3KVxuICNkZWZpbmUgQl9UU1NJX1dMX1RYX1BPV0VSX1NJR04gQklUKDgpXG4gXG4tc3RhdGljIHZvaWQgX3NldF93bF90eF9wb3dlcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiBsZXZlbClcbitzdGF0aWMgdm9pZCBfc2V0X3dsX3R4X3Bvd2VyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIGxldmVsLCB1OCBwaHlfbWFwKVxuIHtcbiBcdGNvbnN0IHN0cnVjdCBydHc4OV9jaGlwX2luZm8gKmNoaXAgPSBydHdkZXYtXHUwMDNlY2hpcDtcbiBcdHN0cnVjdCBydHc4OV9idGMgKmJ0YyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2VidGM7XG4tXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX2luZm8gKndsID0gXHUwMDI2YnRjLVx1MDAzZWN4LndsO1xuK1x0Y29uc3Qgc3RydWN0IHJ0dzg5X2J0Y192ZXIgKnZlciA9IGJ0Yy1cdTAwM2V2ZXI7XG4rXHRzdHJ1Y3QgcnR3ODlfYnRjX2RtICpkbSA9IFx1MDAyNmJ0Yy1cdTAwM2VkbTtcbitcdGJvb2wgbGV2ZWxfY2hnID0gZmFsc2U7XG4gXHR1MzIgcHdyX3ZhbDtcbiBcbi1cdGlmICh3bC1cdTAwM2VyZl9wYXJhLnR4X3B3cl9mcmVlcnVuID09IGxldmVsKVxuK1x0aWYgKHBoeV9tYXAgXHUwMDI2IEJJVChSVFc4OV9QSFlfMCkpXG4rXHRcdGxldmVsX2NoZyA9ICEoZG0tXHUwMDNlcmZfdHJ4X3BhcmEud2xfdHhfcG93ZXJbUlRXODlfUEhZXzBdID09IGxldmVsKTtcbitcbitcdGlmIChwaHlfbWFwIFx1MDAyNiBCSVQoUlRXODlfUEhZXzEpKVxuK1x0XHRsZXZlbF9jaGcgfD0gIShkbS1cdTAwM2VyZl90cnhfcGFyYS53bF90eF9wb3dlcltSVFc4OV9QSFlfMV0gPT0gbGV2ZWwpO1xuK1xuK1x0aWYgKCFsZXZlbF9jaGcgXHUwMDI2XHUwMDI2ICFidGMtXHUwMDNlY2xpX2gyY19jbWQpXG4gXHRcdHJldHVybjtcbiBcbi1cdHdsLVx1MDAzZXJmX3BhcmEudHhfcHdyX2ZyZWVydW4gPSBsZXZlbDtcbi1cdGJ0Yy1cdTAwM2VkbS5yZl90cnhfcGFyYS53bF90eF9wb3dlciA9IGxldmVsO1xuK1x0aWYgKHBoeV9tYXAgXHUwMDI2IEJJVChSVFc4OV9QSFlfMCkpXG4rXHRcdGRtLVx1MDAzZXJmX3RyeF9wYXJhLndsX3R4X3Bvd2VyW1JUVzg5X1BIWV8wXSA9IGxldmVsO1xuIFxuLVx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQlRDLFxuLVx0XHQgICAgXCJbQlRDXSwgJXMoKTogbGV2ZWwgPSAlZFxcblwiLFxuLVx0XHQgICAgX19mdW5jX18sIGxldmVsKTtcbitcdGlmIChwaHlfbWFwIFx1MDAyNiBCSVQoUlRXODlfUEhZXzEpKVxuK1x0XHRkbS1cdTAwM2VyZl90cnhfcGFyYS53bF90eF9wb3dlcltSVFc4OV9QSFlfMV0gPSBsZXZlbDtcbiBcbi1cdGlmIChsZXZlbCA9PSBSVFc4OV9CVENfV0xfREVGX1RYX1BXUikge1xuLVx0XHRwd3JfdmFsID0gV0xfVFhfUE9XRVJfTk9fQlRDX0NUUkw7XG4tXHR9IGVsc2UgeyAvKiBvbmx5IGFwcGx5IFwiZm9yY2UgdHggcG93ZXJcIiAqL1xuLVx0XHRwd3JfdmFsID0gRklFTERfUFJFUChXTF9UWF9QT1dFUl9JTlRfUEFSVCwgbGV2ZWwpO1xuLVx0XHRpZiAocHdyX3ZhbCBcdTAwM2UgUlRXODlfQlRDX1dMX0RFRl9UWF9QV1IpXG4tXHRcdFx0cHdyX3ZhbCA9IFJUVzg5X0JUQ19XTF9ERUZfVFhfUFdSO1xuK1x0ZG0tXHUwMDNld2xfdHhfcHdyX3BoeV9tYXAgPSBwaHlfbWFwO1xuK1x0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQlRDLFxuK1x0XHQgICAgXCJbQlRDXSwgJXMoKTogcGh5X21hcD0weCV4LCB3bF90eF9wd3ItXHUwMDNlIHBoeTA9JWQsIHBoeTE9JWRcXG5cIixcbitcdFx0ICAgIF9fZnVuY19fLCBwaHlfbWFwLFxuK1x0XHQgICAgZG0tXHUwMDNlcmZfdHJ4X3BhcmEud2xfdHhfcG93ZXJbUlRXODlfUEhZXzBdLFxuK1x0XHQgICAgZG0tXHUwMDNlcmZfdHJ4X3BhcmEud2xfdHhfcG93ZXJbUlRXODlfUEhZXzFdKTtcbitcbitcdGlmICh2ZXItXHUwMDNlZmN4dHJ4ID09IDcgXHUwMDI2XHUwMDI2IGNoaXAtXHUwMDNlY2hpcF9pZCA9PSBSVEw4OTIyQSkge1xuK1x0XHRfZndfc2V0X2Rydl9pbmZvKHJ0d2RldiwgQ1hEUlZJTkZPX1RYUFdSKTtcbitcdH0gZWxzZSBpZiAodmVyLVx1MDAzZWZjeHRyeCA9PSA5KSB7XG4rXHRcdF9md19zZXRfZHJ2X2luZm8ocnR3ZGV2LCBDWERSVklORk9fVFhQV1IpO1xuK1x0fSBlbHNlIHtcbitcdFx0aWYgKGxldmVsID09IFJUVzg5X0JUQ19XTF9ERUZfVFhfUFdSKSB7XG4rXHRcdFx0cHdyX3ZhbCA9IFdMX1RYX1BPV0VSX05PX0JUQ19DVFJMO1xuK1x0XHR9IGVsc2UgeyAvKiBvbmx5IGFwcGx5IFwiZm9yY2UgdHggcG93ZXJcIiAqL1xuK1x0XHRcdHB3cl92YWwgPSBGSUVMRF9QUkVQKFdMX1RYX1BPV0VSX0lOVF9QQVJULCBsZXZlbCk7XG4rXHRcdFx0aWYgKHB3cl92YWwgXHUwMDNlIFJUVzg5X0JUQ19XTF9ERUZfVFhfUFdSKVxuK1x0XHRcdFx0cHdyX3ZhbCA9IFJUVzg5X0JUQ19XTF9ERUZfVFhfUFdSO1xuIFxuLVx0XHRpZiAobGV2ZWwgXHUwMDI2IEJfQlRDX1dMX1RYX1BPV0VSX1NJR04pXG4tXHRcdFx0cHdyX3ZhbCB8PSBCX1RTU0lfV0xfVFhfUE9XRVJfU0lHTjtcbi1cdFx0cHdyX3ZhbCB8PSBXTF9UWF9QT1dFUl9XSVRIX0JUO1xuK1x0XHRcdGlmIChsZXZlbCBcdTAwMjYgQl9CVENfV0xfVFhfUE9XRVJfU0lHTilcbitcdFx0XHRcdHB3cl92YWwgfD0gQl9UU1NJX1dMX1RYX1BPV0VSX1NJR047XG4rXHRcdFx0cHdyX3ZhbCB8PSBXTF9UWF9QT1dFUl9XSVRIX0JUO1xuK1x0XHR9XG4rXHRcdGNoaXAtXHUwMDNlb3BzLVx1MDAzZWJ0Y19zZXRfd2xfdHhwd3JfY3RybChydHdkZXYsIHB3cl92YWwpO1xuIFx0fVxuLVxuLVx0Y2hpcC1cdTAwM2VvcHMtXHUwMDNlYnRjX3NldF93bF90eHB3cl9jdHJsKHJ0d2RldiwgcHdyX3ZhbCk7XG4gfVxuIFxuLXN0YXRpYyB2b2lkIF9zZXRfd2xfcnhfZ2FpbihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiBsZXZlbClcbitzdGF0aWMgdm9pZCBfc2V0X3dsX3J4X2dhaW4oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgbGV2ZWwsIHU4IHBoeV9tYXApXG4ge1xuIFx0Y29uc3Qgc3RydWN0IHJ0dzg5X2NoaXBfaW5mbyAqY2hpcCA9IHJ0d2Rldi1cdTAwM2VjaGlwO1xuIFx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXHUwMDI2cnR3ZGV2LVx1MDAzZWJ0Yztcbi1cdHN0cnVjdCBydHc4OV9idGNfd2xfaW5mbyAqd2wgPSBcdTAwMjZidGMtXHUwMDNlY3gud2w7XG4rXHRzdHJ1Y3QgcnR3ODlfYnRjX2RtICpkbSA9IFx1MDAyNmJ0Yy1cdTAwM2VkbTtcbitcdGJvb2wgbGV2ZWxfY2hnID0gZmFsc2U7XG4rXG4rXHRpZiAocGh5X21hcCBcdTAwMjYgQklUKFJUVzg5X1BIWV8wKSlcbitcdFx0bGV2ZWxfY2hnID0gIShkbS1cdTAwM2VyZl90cnhfcGFyYS53bF9yeF9nYWluW1JUVzg5X1BIWV8wXSA9PSBsZXZlbCk7XG4gXG4tXHRpZiAod2wtXHUwMDNlcmZfcGFyYS5yeF9nYWluX2ZyZWVydW4gPT0gbGV2ZWwpXG4rXHRpZiAocGh5X21hcCBcdTAwMjYgQklUKFJUVzg5X1BIWV8xKSlcbitcdFx0bGV2ZWxfY2hnIHw9ICEoZG0tXHUwMDNlcmZfdHJ4X3BhcmEud2xfcnhfZ2FpbltSVFc4OV9QSFlfMV0gPT0gbGV2ZWwpO1xuK1xuK1x0aWYgKCFsZXZlbF9jaGcgXHUwMDI2XHUwMDI2ICFidGMtXHUwMDNlY2xpX2gyY19jbWQpXG4gXHRcdHJldHVybjtcbiBcbi1cdHdsLVx1MDAzZXJmX3BhcmEucnhfZ2Fpbl9mcmVlcnVuID0gbGV2ZWw7XG4tXHRidGMtXHUwMDNlZG0ucmZfdHJ4X3BhcmEud2xfcnhfZ2FpbiA9IGxldmVsO1xuK1x0aWYgKHBoeV9tYXAgXHUwMDI2IEJJVChSVFc4OV9QSFlfMCkpXG4rXHRcdGRtLVx1MDAzZXJmX3RyeF9wYXJhLndsX3J4X2dhaW5bUlRXODlfUEhZXzBdID0gbGV2ZWw7XG4rXG4rXHRpZiAocGh5X21hcCBcdTAwMjYgQklUKFJUVzg5X1BIWV8xKSlcbitcdFx0ZG0tXHUwMDNlcmZfdHJ4X3BhcmEud2xfcnhfZ2FpbltSVFc4OV9QSFlfMV0gPSBsZXZlbDtcbiBcbiBcdHJ0dzg5X2RlYnVnKHJ0d2RldiwgUlRXODlfREJHX0JUQyxcbi1cdFx0ICAgIFwiW0JUQ10sICVzKCk6IGxldmVsID0gJWRcXG5cIixcbi1cdFx0ICAgIF9fZnVuY19fLCBsZXZlbCk7XG4rXHRcdCAgICBcIltCVENdLCAlcygpOiBwaHlfbWFwPTB4JXgsIHdsX3J4X2dhaW4tXHUwMDNlIHBoeTA9JWQsIHBoeTE9JWRcXG5cIixcbitcdFx0ICAgIF9fZnVuY19fLCBwaHlfbWFwLFxuK1x0XHQgICAgZG0tXHUwMDNlcmZfdHJ4X3BhcmEud2xfcnhfZ2FpbltSVFc4OV9QSFlfMF0sXG4rXHRcdCAgICBkbS1cdTAwM2VyZl90cnhfcGFyYS53bF9yeF9nYWluW1JUVzg5X1BIWV8xXSk7XG4gXG4gXHRjaGlwLVx1MDAzZW9wcy1cdTAwM2VidGNfc2V0X3dsX3J4X2dhaW4ocnR3ZGV2LCBsZXZlbCk7XG4gfVxuQEAgLTMwNzUsMTEgKzMxNjIsMTEgQEAgc3RhdGljIHZvaWQgX3NldF93bF9yeF9nYWluKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIGxldmVsKVxuIHN0YXRpYyB2b2lkIF9zZXRfYnRfdHhfcG93ZXIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCBsZXZlbClcbiB7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcdTAwMjZydHdkZXYtXHUwMDNlYnRjO1xuLVx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC5idDtcbitcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcdTAwMjZidGMtXHUwMDNlY3guYnQwO1xuIFx0aW50IHJldDtcbiBcdHU4IGJ1ZjtcbiBcbi1cdGlmIChidGMtXHUwMDNlY3guY250X2J0W0JUQ19CQ05UX0lORk9VUERBVEVdID09IDApXG4rXHRpZiAoYnQtXHUwMDNlYmNudFtCVENfQkNOVF9JTkZPVVBEQVRFXSA9PSAwKVxuIFx0XHRyZXR1cm47XG4gXG4gXHRpZiAoYnQtXHUwMDNlcmZfcGFyYS50eF9wd3JfZnJlZXJ1biA9PSBsZXZlbClcbkBAIC0zMDkzLDcgKzMxODAsNyBAQCBzdGF0aWMgdm9pZCBfc2V0X2J0X3R4X3Bvd2VyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggbGV2ZWwpXG4gXHRyZXQgPSBfc2VuZF9md19jbWQocnR3ZGV2LCBCVEZDX1NFVCwgU0VUX0JUX1RYX1BXUiwgXHUwMDI2YnVmLCAxKTtcbiBcdGlmICghcmV0KSB7XG4gXHRcdGJ0LVx1MDAzZXJmX3BhcmEudHhfcHdyX2ZyZWVydW4gPSBsZXZlbDtcbi1cdFx0YnRjLVx1MDAzZWRtLnJmX3RyeF9wYXJhLmJ0X3R4X3Bvd2VyID0gbGV2ZWw7XG4rXHRcdGJ0Yy1cdTAwM2VkbS5yZl90cnhfcGFyYS5idF90eF9wb3dlcltCVENfQlRfMVNUXSA9IGxldmVsO1xuIFx0fVxuIH1cbiBcbkBAIC0zMTAyLDkgKzMxODksOSBAQCBzdGF0aWMgdm9pZCBfc2V0X2J0X3R4X3Bvd2VyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggbGV2ZWwpXG4gc3RhdGljIHZvaWQgX3NldF9idF9yeF9nYWluKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggbGV2ZWwpXG4ge1xuIFx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXHUwMDI2cnR3ZGV2LVx1MDAzZWJ0Yztcbi1cdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcdTAwMjZidGMtXHUwMDNlY3guYnQ7XG4rXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXHUwMDI2YnRjLVx1MDAzZWN4LmJ0MDtcbiBcbi1cdGlmIChidGMtXHUwMDNlY3guY250X2J0W0JUQ19CQ05UX0lORk9VUERBVEVdID09IDApXG4rXHRpZiAoYnQtXHUwMDNlYmNudFtCVENfQkNOVF9JTkZPVVBEQVRFXSA9PSAwKVxuIFx0XHRyZXR1cm47XG4gXG4gXHRpZiAoKGJ0LVx1MDAzZXJmX3BhcmEucnhfZ2Fpbl9mcmVlcnVuID09IGxldmVsIHx8XG5AQCAtMzExMyw3ICszMjAwLDcgQEAgc3RhdGljIHZvaWQgX3NldF9idF9yeF9nYWluKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggbGV2ZWwpXG4gXHRcdHJldHVybjtcbiBcbiBcdGJ0LVx1MDAzZXJmX3BhcmEucnhfZ2Fpbl9mcmVlcnVuID0gbGV2ZWw7XG4tXHRidGMtXHUwMDNlZG0ucmZfdHJ4X3BhcmEuYnRfcnhfZ2FpbiA9IGxldmVsO1xuK1x0YnRjLVx1MDAzZWRtLnJmX3RyeF9wYXJhLmJ0X3J4X2dhaW5bQlRDX0JUXzFTVF0gPSBsZXZlbDtcbiBcbiBcdHJ0dzg5X2RlYnVnKHJ0d2RldiwgUlRXODlfREJHX0JUQyxcbiBcdFx0ICAgIFwiW0JUQ10sICVzKCk6IGxldmVsID0gJWRcXG5cIixcbkBAIC0zMTM0LDEyICszMjIxLDEzIEBAIHN0YXRpYyB2b2lkIF9zZXRfcmZfdHJ4X3BhcmEoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuIFx0Y29uc3Qgc3RydWN0IHJ0dzg5X2J0Y192ZXIgKnZlciA9IGJ0Yy1cdTAwM2V2ZXI7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX2RtICpkbSA9IFx1MDAyNmJ0Yy1cdTAwM2VkbTtcbiBcdHN0cnVjdCBydHc4OV9idGNfd2xfaW5mbyAqd2wgPSBcdTAwMjZidGMtXHUwMDNlY3gud2w7XG4tXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXHUwMDI2YnRjLVx1MDAzZWN4LmJ0O1xuK1x0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC5idDA7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2xpbmtfaW5mbyAqYiA9IFx1MDAyNmJ0LVx1MDAzZWxpbmtfaW5mbztcbiBcdHN0cnVjdCBydHc4OV9idGNfd2xfc21hcCAqd2xfc21hcCA9IFx1MDAyNndsLVx1MDAzZXN0YXR1cy5tYXA7XG4tXHRzdHJ1Y3QgcnR3ODlfYnRjX3JmX3RyeF9wYXJhIHBhcmE7XG4rXHRzdHJ1Y3QgcnR3ODlfYnRjX3JmX3RyeF9wYXJhX3Y5IHBhcmE7XG4rXHR1OCBsdiwgbGlua19tb2RlID0gMCwgaSwgZGJjY18yZ19waHkgPSAwO1xuK1x0dTggdWxfcGFyYV9udW0sIGRsX3BhcmFfbnVtO1xuIFx0dTMyIHdsX3N0Yl9jaGcgPSAwO1xuLVx0dTggbGV2ZWxfaWQgPSAwLCBsaW5rX21vZGUgPSAwLCBpLCBkYmNjXzJnX3BoeSA9IDA7XG4gXG4gXHRpZiAodmVyLVx1MDAzZWZ3bHJvbGUgPT0gMCkge1xuIFx0XHRsaW5rX21vZGUgPSB3bC1cdTAwM2Vyb2xlX2luZm8ubGlua19tb2RlO1xuQEAgLTMxNTUsNiArMzI0MywxOCBAQCBzdGF0aWMgdm9pZCBfc2V0X3JmX3RyeF9wYXJhKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbiBcdFx0ZGJjY18yZ19waHkgPSB3bC1cdTAwM2Vyb2xlX2luZm9fdjIuZGJjY18yZ19waHk7XG4gXHR9XG4gXG4rXHRpZiAodmVyLVx1MDAzZWZjeHRyeCA9PSA5IFx1MDAyNlx1MDAyNiBjaGlwLVx1MDAzZXJmX3BhcmFfdWxpbmtfdjkpIHtcbitcdFx0dWxfcGFyYV9udW0gPSBjaGlwLVx1MDAzZXJmX3BhcmFfdWxpbmtfbnVtX3Y5O1xuK1x0XHRkbF9wYXJhX251bSA9IGNoaXAtXHUwMDNlcmZfcGFyYV9kbGlua19udW1fdjk7XG4rXHR9IGVsc2UgaWYgKHZlci1cdTAwM2VmY3h0cnggPT0gMCBcdTAwMjZcdTAwMjYgY2hpcC1cdTAwM2VyZl9wYXJhX3VsaW5rX3YwKSB7XG4rXHRcdHVsX3BhcmFfbnVtID0gY2hpcC1cdTAwM2VyZl9wYXJhX3VsaW5rX251bV92MDtcbitcdFx0ZGxfcGFyYV9udW0gPSBjaGlwLVx1MDAzZXJmX3BhcmFfZGxpbmtfbnVtX3YwO1xuK1x0fSBlbHNlIHtcbitcdFx0cnR3ODlfd2FybihydHdkZXYsIFwiW0JUQ10lcygpLCBObyByZl9wYXJhIGZvciB2ZXJzZWlvbiAlZFxcblwiLFxuK1x0XHRcdCAgIF9fZnVuY19fLCB2ZXItXHUwMDNlZmN4dHJ4KTtcbitcdFx0Z290byBuZXh0O1xuK1x0fVxuK1xuIFx0LyogZGVjaWRlIHRyeF9wYXJhX2xldmVsICovXG4gXHRpZiAoYnRjLVx1MDAzZWFudF90eXBlID09IEJUQ19BTlRfU0hBUkVEKSB7XG4gXHRcdC8qIGZpeCBMTkEyICsgVElBIGdhaW4gbm90IGNoYW5nZSBieSBHTlRfQlQgKi9cbkBAIC0zMTc2LDMwICszMjc2LDU0IEBAIHN0YXRpYyB2b2lkIF9zZXRfcmZfdHJ4X3BhcmEoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuIFx0XHR9XG4gXHR9XG4gXG4tXHRsZXZlbF9pZCA9IGRtLVx1MDAzZXRyeF9wYXJhX2xldmVsO1xuLVx0aWYgKGxldmVsX2lkIFx1MDAzZT0gY2hpcC1cdTAwM2VyZl9wYXJhX2RsaW5rX251bSB8fFxuLVx0ICAgIGxldmVsX2lkIFx1MDAzZT0gY2hpcC1cdTAwM2VyZl9wYXJhX3VsaW5rX251bSkge1xuK1x0bHYgPSBkbS1cdTAwM2V0cnhfcGFyYV9sZXZlbDtcbitcdGlmIChsdiBcdTAwM2U9IHVsX3BhcmFfbnVtIHx8XG4rXHQgICAgbHYgXHUwMDNlPSBkbF9wYXJhX251bSkge1xuIFx0XHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19CVEMsXG4gXHRcdFx0ICAgIFwiW0JUQ10sICVzKCk6IGludmFsaWQgbGV2ZWxfaWQ6ICVkXFxuXCIsXG4tXHRcdFx0ICAgIF9fZnVuY19fLCBsZXZlbF9pZCk7XG4rXHRcdFx0ICAgIF9fZnVuY19fLCBsdik7XG4gXHRcdHJldHVybjtcbiBcdH1cbiBcbi1cdGlmICh3bC1cdTAwM2VzdGF0dXMubWFwLnRyYWZmaWNfZGlyIFx1MDAyNiBCSVQoUlRXODlfVEZDX1VMKSlcbi1cdFx0cGFyYSA9IGNoaXAtXHUwMDNlcmZfcGFyYV91bGlua1tsZXZlbF9pZF07XG4tXHRlbHNlXG4tXHRcdHBhcmEgPSBjaGlwLVx1MDAzZXJmX3BhcmFfZGxpbmtbbGV2ZWxfaWRdO1xuK1x0aWYgKHdsLVx1MDAzZXN0YXR1cy5tYXAudHJhZmZpY19kaXIgXHUwMDI2IEJJVChSVFc4OV9URkNfVUwpKSB7XG4rXHRcdGlmICh2ZXItXHUwMDNlZmN4dHJ4ID09IDkpIHtcbitcdFx0XHRwYXJhID0gY2hpcC1cdTAwM2VyZl9wYXJhX3VsaW5rX3Y5W2x2XTtcbitcdFx0fSBlbHNlIHtcbitcdFx0XHRmb3IgKGkgPSBSVFc4OV9QSFlfMDsgaSBcdTAwM2MgUlRXODlfUEhZX05VTTsgaSsrKSB7XG4rXHRcdFx0XHRwYXJhLndsX3R4X3Bvd2VyW2ldID0gY2hpcC1cdTAwM2VyZl9wYXJhX3VsaW5rX3YwW2x2XS53bF90eF9wb3dlcjtcbitcdFx0XHRcdHBhcmEud2xfcnhfZ2FpbltpXSA9IGNoaXAtXHUwMDNlcmZfcGFyYV91bGlua192MFtsdl0ud2xfcnhfZ2FpbjtcbitcdFx0XHR9XG4rXHRcdFx0Zm9yIChpID0gQlRDX0JUXzFTVDsgaSBcdTAwM2MgQlRDX0FMTF9CVDsgaSsrKSB7XG4rXHRcdFx0XHRwYXJhLmJ0X3R4X3Bvd2VyW2ldID0gY2hpcC1cdTAwM2VyZl9wYXJhX3VsaW5rX3YwW2x2XS5idF90eF9wb3dlcjtcbitcdFx0XHRcdHBhcmEuYnRfcnhfZ2FpbltpXSA9IGNoaXAtXHUwMDNlcmZfcGFyYV91bGlua192MFtsdl0uYnRfcnhfZ2FpbjtcbitcdFx0XHR9XG4rXHRcdH1cbitcdH0gZWxzZSB7XG4rXHRcdGlmICh2ZXItXHUwMDNlZmN4dHJ4ID09IDkpIHtcbitcdFx0XHRwYXJhID0gY2hpcC1cdTAwM2VyZl9wYXJhX2RsaW5rX3Y5W2x2XTtcbitcdFx0fSBlbHNlIHtcbitcdFx0XHRmb3IgKGkgPSBSVFc4OV9QSFlfMDsgaSBcdTAwM2MgUlRXODlfUEhZX05VTTsgaSsrKSB7XG4rXHRcdFx0XHRwYXJhLndsX3R4X3Bvd2VyW2ldID0gY2hpcC1cdTAwM2VyZl9wYXJhX2RsaW5rX3YwW2x2XS53bF90eF9wb3dlcjtcbitcdFx0XHRcdHBhcmEud2xfcnhfZ2FpbltpXSA9IGNoaXAtXHUwMDNlcmZfcGFyYV9kbGlua192MFtsdl0ud2xfcnhfZ2FpbjtcbitcdFx0XHR9XG4rXHRcdFx0Zm9yIChpID0gQlRDX0JUXzFTVDsgaSBcdTAwM2MgQlRDX0FMTF9CVDsgaSsrKSB7XG4rXHRcdFx0XHRwYXJhLmJ0X3R4X3Bvd2VyW2ldID0gY2hpcC1cdTAwM2VyZl9wYXJhX2RsaW5rX3YwW2x2XS5idF90eF9wb3dlcjtcbitcdFx0XHRcdHBhcmEuYnRfcnhfZ2FpbltpXSA9IGNoaXAtXHUwMDNlcmZfcGFyYV9kbGlua192MFtsdl0uYnRfcnhfZ2FpbjtcbitcdFx0XHR9XG4rXHRcdH1cbitcdH1cbiBcbiBcdGlmIChkbS1cdTAwM2VmZGR0X3RyYWluKSB7XG4tXHRcdF9zZXRfd2xfcnhfZ2FpbihydHdkZXYsIDEpO1xuK1x0XHRfc2V0X3dsX3J4X2dhaW4ocnR3ZGV2LCAxLCBSVFc4OV9QSFlfMCk7XG4gXHRcdF93cml0ZV9zY2JkKHJ0d2RldiwgQlRDX1dTQ0JfUlhHQUlOLCB0cnVlKTtcbiBcdH0gZWxzZSB7XG4tXHRcdF9zZXRfd2xfdHhfcG93ZXIocnR3ZGV2LCBwYXJhLndsX3R4X3Bvd2VyKTtcbi1cdFx0X3NldF93bF9yeF9nYWluKHJ0d2RldiwgcGFyYS53bF9yeF9nYWluKTtcbi1cdFx0X3NldF9idF90eF9wb3dlcihydHdkZXYsIHBhcmEuYnRfdHhfcG93ZXIpO1xuLVx0XHRfc2V0X2J0X3J4X2dhaW4ocnR3ZGV2LCBwYXJhLmJ0X3J4X2dhaW4pO1xuK1x0XHRfc2V0X3dsX3R4X3Bvd2VyKHJ0d2RldiwgcGFyYS53bF90eF9wb3dlcltSVFc4OV9QSFlfMF0sIFJUVzg5X1BIWV8wKTtcbitcdFx0X3NldF93bF9yeF9nYWluKHJ0d2RldiwgcGFyYS53bF9yeF9nYWluW1JUVzg5X1BIWV8wXSwgUlRXODlfUEhZXzApO1xuK1x0XHRfc2V0X2J0X3R4X3Bvd2VyKHJ0d2RldiwgcGFyYS5idF90eF9wb3dlcltCVENfQlRfMVNUXSk7XG4rXHRcdF9zZXRfYnRfcnhfZ2FpbihydHdkZXYsIHBhcmEuYnRfcnhfZ2FpbltCVENfQlRfMVNUXSk7XG4gXHR9XG4gXG4rbmV4dDpcbiBcdGlmICghYnQtXHUwMDNlZW5hYmxlLm5vdyB8fCBkbS1cdTAwM2V3bF9vbmx5IHx8IHdsX3NtYXAtXHUwMDNlcmZfb2ZmIHx8XG4gXHQgICAgd2xfc21hcC1cdTAwM2VscHMgPT0gQlRDX0xQU19SRl9PRkYgfHxcbiBcdCAgICBsaW5rX21vZGUgPT0gQlRDX1dMSU5LXzVHIHx8XG5AQCAtMzIyMCw3ICszMzQ0LDcgQEAgc3RhdGljIHZvaWQgX3VwZGF0ZV9idGNfc3RhdGVfbWFwKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbiBcdHN0cnVjdCBydHc4OV9idGMgKmJ0YyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2VidGM7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX2N4ICpjeCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeDtcbiBcdHN0cnVjdCBydHc4OV9idGNfd2xfaW5mbyAqd2wgPSBcdTAwMjZjeC1cdTAwM2V3bDtcbi1cdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcdTAwMjZjeC1cdTAwM2VidDtcbitcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcdTAwMjZjeC1cdTAwM2VidDA7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2xpbmtfaW5mbyAqYnRfbGluZm8gPSBcdTAwMjZidC1cdTAwM2VsaW5rX2luZm87XG4gXG4gXHRpZiAod2wtXHUwMDNlc3RhdHVzLm1hcC5jb25uZWN0aW5nIHx8IHdsLVx1MDAzZXN0YXR1cy5tYXAuXzR3YXkgfHxcbkBAIC0zMjQ3LDcgKzMzNzEsNyBAQCBzdGF0aWMgdm9pZCBfc2V0X2J0X2FmaF9pbmZvX3YwKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbiBcdHN0cnVjdCBydHc4OV9idGMgKmJ0YyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2VidGM7XG4gXHRjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3ZlciAqdmVyID0gYnRjLVx1MDAzZXZlcjtcbiBcdHN0cnVjdCBydHc4OV9idGNfd2xfaW5mbyAqd2wgPSBcdTAwMjZidGMtXHUwMDNlY3gud2w7XG4tXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXHUwMDI2YnRjLVx1MDAzZWN4LmJ0O1xuK1x0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC5idDA7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2xpbmtfaW5mbyAqYiA9IFx1MDAyNmJ0LVx1MDAzZWxpbmtfaW5mbztcbiBcdHN0cnVjdCBydHc4OV9idGNfd2xfcm9sZV9pbmZvICp3bF9yaW5mbyA9IFx1MDAyNndsLVx1MDAzZXJvbGVfaW5mbztcbiBcdHN0cnVjdCBydHc4OV9idGNfd2xfcm9sZV9pbmZvX3YxICp3bF9yaW5mb192MSA9IFx1MDAyNndsLVx1MDAzZXJvbGVfaW5mb192MTtcbkBAIC0zNDA3LDcgKzM1MzEsNyBAQCBzdGF0aWMgdm9pZCBfc2V0X2J0X2FmaF9pbmZvX3YwKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbiBcdHJ0dzg5X2RlYnVnKHJ0d2RldiwgUlRXODlfREJHX0JUQyxcbiBcdFx0ICAgIFwiW0JUQ10sICVzKCk6IGVuPSVkLCBjaD0lZCwgYnc9JWRcXG5cIixcbiBcdFx0ICAgIF9fZnVuY19fLCBlbiwgY2gsIGJ3KTtcbi1cdGJ0Yy1cdTAwM2VjeC5jbnRfd2xbQlRDX1dDTlRfQ0hfVVBEQVRFXSsrO1xuK1x0d2wtXHUwMDNld2NudFtCVENfV0NOVF9DSF9VUERBVEVdKys7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIF9zZXRfYnRfYWZoX2luZm9fdjEoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuQEAgLTM0MTcsNyArMzU0MSw3IEBAIHN0YXRpYyB2b2lkIF9zZXRfYnRfYWZoX2luZm9fdjEoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuIFx0c3RydWN0IHJ0dzg5X2J0Y193bF9pbmZvICp3bCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC53bDtcbiBcdHN0cnVjdCBydHc4OV9idGNfd2xfcm9sZV9pbmZvX3Y4ICp3bF9yaW5mbyA9IFx1MDAyNndsLVx1MDAzZXJvbGVfaW5mb192ODtcbiBcdHN0cnVjdCBydHc4OV9idGNfd2xfYWZoX2luZm8gKndsX2FmaCA9IFx1MDAyNndsLVx1MDAzZWFmaF9pbmZvO1xuLVx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC5idDtcbitcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcdTAwMjZidGMtXHUwMDNlY3guYnQwO1xuIFx0c3RydWN0IHJ0dzg5X2J0Y193bF9ybGluayAqcmxpbms7XG4gXHR1OCBlbiA9IDAsIGNoID0gMCwgYncgPSAwLCBidWZbM10gPSB7fTtcbiBcdHU4IGksIGosIGxpbmtfbW9kZTtcbkBAIC0zNTA3LDcgKzM2MzEsNyBAQCBzdGF0aWMgdm9pZCBfc2V0X2J0X2FmaF9pbmZvX3YxKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbiBcdFx0XHQgICAgXCJbQlRDXSwgJXMoKTogZW49JWQsIGNoPSVkLCBidz0lZFxcblwiLFxuIFx0XHRcdCAgICBfX2Z1bmNfXywgZW4sIGNoLCBidyk7XG4gXG4tXHRcdGJ0Yy1cdTAwM2VjeC5jbnRfd2xbQlRDX1dDTlRfQ0hfVVBEQVRFXSsrO1xuK1x0XHR3bC1cdTAwM2V3Y250W0JUQ19XQ05UX0NIX1VQREFURV0rKztcbiBcdH1cbiB9XG4gXG5AQCAtMzUyMyw3ICszNjQ3LDcgQEAgc3RhdGljIGJvb2wgX2NoZWNrX2ZyZWVydW4oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuIHtcbiBcdHN0cnVjdCBydHc4OV9idGMgKmJ0YyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2VidGM7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX2luZm8gKndsID0gXHUwMDI2YnRjLVx1MDAzZWN4LndsO1xuLVx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC5idDtcbitcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcdTAwMjZidGMtXHUwMDNlY3guYnQwO1xuIFx0c3RydWN0IHJ0dzg5X2J0Y193bF9yb2xlX2luZm8gKndsX3JpbmZvID0gXHUwMDI2d2wtXHUwMDNlcm9sZV9pbmZvO1xuIFx0c3RydWN0IHJ0dzg5X2J0Y193bF9yb2xlX2luZm9fdjEgKndsX3JpbmZvX3YxID0gXHUwMDI2d2wtXHUwMDNlcm9sZV9pbmZvX3YxO1xuIFx0c3RydWN0IHJ0dzg5X2J0Y193bF9yb2xlX2luZm9fdjIgKndsX3JpbmZvX3YyID0gXHUwMDI2d2wtXHUwMDNlcm9sZV9pbmZvX3YyO1xuQEAgLTM5OTYsOSArNDEyMCw5IEBAIHZvaWQgcnR3ODlfYnRjX3NldF9wb2xpY3lfdjEoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MTYgcG9saWN5X3R5cGUpXG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX2RtICpkbSA9IFx1MDAyNmJ0Yy1cdTAwM2VkbTtcbiBcdHN0cnVjdCBydHc4OV9idGNfZmJ0Y190ZG1hICp0ID0gXHUwMDI2ZG0tXHUwMDNldGRtYTtcbiBcdHN0cnVjdCBydHc4OV9idGNfd2xfcm9sZV9pbmZvX3YxICp3bF9yaW5mbyA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC53bC5yb2xlX2luZm9fdjE7XG4tXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2EyZHBfZGVzYyAqYTJkcCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC5idC5saW5rX2luZm8uYTJkcF9kZXNjO1xuLVx0c3RydWN0IHJ0dzg5X2J0Y19idF9oaWRfZGVzYyAqaGlkID0gXHUwMDI2YnRjLVx1MDAzZWN4LmJ0LmxpbmtfaW5mby5oaWRfZGVzYztcbi1cdHN0cnVjdCBydHc4OV9idGNfYnRfaGZwX2Rlc2MgKmhmcCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC5idC5saW5rX2luZm8uaGZwX2Rlc2M7XG4rXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2EyZHBfZGVzYyAqYTJkcCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC5idDAubGlua19pbmZvLmEyZHBfZGVzYztcbitcdHN0cnVjdCBydHc4OV9idGNfYnRfaGlkX2Rlc2MgKmhpZCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC5idDAubGlua19pbmZvLmhpZF9kZXNjO1xuK1x0c3RydWN0IHJ0dzg5X2J0Y19idF9oZnBfZGVzYyAqaGZwID0gXHUwMDI2YnRjLVx1MDAzZWN4LmJ0MC5saW5rX2luZm8uaGZwX2Rlc2M7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX2luZm8gKndsID0gXHUwMDI2YnRjLVx1MDAzZWN4LndsO1xuIFx0dTggdHlwZSwgbnVsbF9yb2xlO1xuIFx0dTMyIHRibF93MSwgdGJsX2IxLCB0YmxfYjQ7XG5AQCAtNDQzNCw3ICs0NTU4LDcgQEAgdm9pZCBydHc4OV9idGNfc2V0X3BvbGljeV92MShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUxNiBwb2xpY3lfdHlwZSlcbiBcdGlmIChkbS1cdTAwM2VsZWFrX2FwIFx1MDAyNlx1MDAyNiBkbS1cdTAwM2V0ZG1hLmxlYWtfbiBcdTAwM2UgMSlcbiBcdFx0X3RkbWFfc2V0X2xlayhidGMsIDEpO1xuIFxuLVx0aWYgKGRtLVx1MDAzZXRkbWFfaW5zdGFudF9leGN1dGUpIHtcbitcdGlmIChkbS1cdTAwM2V0ZG1hX2luc3RhbnRfZXhjdXRlIHx8IGRtLVx1MDAzZWxwc19jdHJsX2NoYW5nZSkge1xuIFx0XHRidGMtXHUwMDNlZG0udGRtYS5vcHRpb25fY3RybCB8PSBCSVQoMCk7XG4gXHRcdGJ0Yy1cdTAwM2V1cGRhdGVfcG9saWN5X2ZvcmNlID0gdHJ1ZTtcbiBcdH1cbkBAIC00NDc5LDcgKzQ2MDMsNyBAQCBzdGF0aWMgdm9pZCBfc2V0X2FudF92MChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgZm9yY2VfZXhlYyxcbiBcdHN0cnVjdCBydHc4OV9idGNfZG0gKmRtID0gXHUwMDI2YnRjLVx1MDAzZWRtO1xuIFx0c3RydWN0IHJ0dzg5X2J0Y19jeCAqY3ggPSBcdTAwMjZidGMtXHUwMDNlY3g7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX2luZm8gKndsID0gXHUwMDI2YnRjLVx1MDAzZWN4LndsO1xuLVx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFx1MDAyNmN4LVx1MDAzZWJ0O1xuK1x0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFx1MDAyNmN4LVx1MDAzZWJ0MDtcbiBcdHN0cnVjdCBydHc4OV9idGNfd2xfZGJjY19pbmZvICp3bF9kaW5mbyA9IFx1MDAyNndsLVx1MDAzZWRiY2NfaW5mbztcbiBcdHU4IGdudF93bF9jdHJsLCBnbnRfYnRfY3RybCwgcGx0X2N0cmwsIGksIGIyZyA9IDA7XG4gXHRib29sIGRiY2NfY2hnID0gZmFsc2U7XG5AQCAtNDYwNyw3ICs0NzMxLDcgQEAgc3RhdGljIHZvaWQgX3NldF9hbnRfdjEoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBib29sIGZvcmNlX2V4ZWMsXG4ge1xuIFx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXHUwMDI2cnR3ZGV2LVx1MDAzZWJ0YztcbiBcdHN0cnVjdCBydHc4OV9idGNfd2xfaW5mbyAqd2wgPSBcdTAwMjZidGMtXHUwMDNlY3gud2w7XG4tXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXHUwMDI2YnRjLVx1MDAzZWN4LmJ0O1xuK1x0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC5idDA7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX3JvbGVfaW5mb192OCAqd2xfcmluZm8gPSBcdTAwMjZ3bC1cdTAwM2Vyb2xlX2luZm9fdjg7XG4gXHR1MzIgYW50X3BhdGhfdHlwZSA9IHJ0dzg5X2dldF9hbnRwYXRoX3R5cGUocGh5X21hcCwgdHlwZSk7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX2RiY2NfaW5mbyAqd2xfZGluZm8gPSBcdTAwMjZ3bC1cdTAwM2VkYmNjX2luZm87XG5AQCAtNDc0Niw3ICs0ODcwLDcgQEAgc3RhdGljIHZvaWQgX2FjdGlvbl93bF9vZmYoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCBtb2RlKVxuIFx0aWYgKG1vZGUgPT0gQlRDX1dMSU5LXzVHKSB7XG4gXHRcdF9zZXRfcG9saWN5KHJ0d2RldiwgQlRDX0NYUF9PRkZfRVEwLCBCVENfQUNUX1dMX09GRik7XG4gXHR9IGVsc2UgaWYgKHdsLVx1MDAzZXN0YXR1cy5tYXAubHBzID09IEJUQ19MUFNfUkZfT04pIHtcbi1cdFx0aWYgKGJ0Yy1cdTAwM2VjeC5idC5saW5rX2luZm8uYTJkcF9kZXNjLmFjdGl2ZSlcbitcdFx0aWYgKGJ0Yy1cdTAwM2VjeC5idDAubGlua19pbmZvLmEyZHBfZGVzYy5hY3RpdmUpXG4gXHRcdFx0X3NldF9wb2xpY3kocnR3ZGV2LCBCVENfQ1hQX09GRl9CVCwgQlRDX0FDVF9XTF9PRkYpO1xuIFx0XHRlbHNlXG4gXHRcdFx0X3NldF9wb2xpY3kocnR3ZGV2LCBCVENfQ1hQX09GRl9CV0IxLCBCVENfQUNUX1dMX09GRik7XG5AQCAtNDc4Niw3ICs0OTEwLDcgQEAgc3RhdGljIHZvaWQgX2FjdGlvbl9idF9vZmYoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuIHN0YXRpYyB2b2lkIF9hY3Rpb25fYnRfaWRsZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4ge1xuIFx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXHUwMDI2cnR3ZGV2LVx1MDAzZWJ0Yztcbi1cdHN0cnVjdCBydHc4OV9idGNfYnRfbGlua19pbmZvICpiID0gXHUwMDI2YnRjLVx1MDAzZWN4LmJ0LmxpbmtfaW5mbztcbitcdHN0cnVjdCBydHc4OV9idGNfYnRfbGlua19pbmZvICpiID0gXHUwMDI2YnRjLVx1MDAzZWN4LmJ0MC5saW5rX2luZm87XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX2luZm8gKndsID0gXHUwMDI2YnRjLVx1MDAzZWN4LndsO1xuIFxuIFx0X3NldF9hbnQocnR3ZGV2LCBOTV9FWEVDLCBCVENfUEhZX0FMTCwgQlRDX0FOVF9XMkcpO1xuQEAgLTQ4MzQsNyArNDk1OCw3IEBAIHN0YXRpYyB2b2lkIF9hY3Rpb25fYnRfaGZwKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbiBcdFx0aWYgKGJ0Yy1cdTAwM2VjeC53bC5zdGF0dXMubWFwLl80d2F5KSB7XG4gXHRcdFx0X3NldF9wb2xpY3kocnR3ZGV2LCBCVENfQ1hQX09GRl9XTCwgQlRDX0FDVF9CVF9IRlApO1xuIFx0XHR9IGVsc2UgaWYgKHdsLVx1MDAzZXN0YXR1cy5tYXAudHJhZmZpY19kaXIgXHUwMDI2IEJJVChSVFc4OV9URkNfVUwpKSB7XG4tXHRcdFx0YnRjLVx1MDAzZWN4LmJ0LnNjYW5fcnhfbG93X3ByaSA9IHRydWU7XG4rXHRcdFx0YnRjLVx1MDAzZWN4LmJ0MC5zY2FuX3J4X2xvd19wcmkgPSB0cnVlO1xuIFx0XHRcdF9zZXRfcG9saWN5KHJ0d2RldiwgQlRDX0NYUF9PRkZfQldCMiwgQlRDX0FDVF9CVF9IRlApO1xuIFx0XHR9IGVsc2Uge1xuIFx0XHRcdF9zZXRfcG9saWN5KHJ0d2RldiwgQlRDX0NYUF9PRkZfQldCMSwgQlRDX0FDVF9CVF9IRlApO1xuQEAgLTQ4NTQsNyArNDk3OCw3IEBAIHN0YXRpYyB2b2lkIF9hY3Rpb25fYnRfaGlkKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbiBcdGNvbnN0IHN0cnVjdCBydHc4OV9jaGlwX2luZm8gKmNoaXAgPSBydHdkZXYtXHUwMDNlY2hpcDtcbiBcdHN0cnVjdCBydHc4OV9idGMgKmJ0YyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2VidGM7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX2luZm8gKndsID0gXHUwMDI2YnRjLVx1MDAzZWN4LndsO1xuLVx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC5idDtcbitcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcdTAwMjZidGMtXHUwMDNlY3guYnQwO1xuIFx0c3RydWN0IHJ0dzg5X2J0Y19idF9oaWRfZGVzYyAqaGlkID0gXHUwMDI2YnQtXHUwMDNlbGlua19pbmZvLmhpZF9kZXNjO1xuIFx0dTE2IHBvbGljeV90eXBlID0gQlRDX0NYUF9PRkZfQlQ7XG4gXG5AQCAtNDg2NCw3ICs0OTg4LDcgQEAgc3RhdGljIHZvaWQgX2FjdGlvbl9idF9oaWQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuIFx0XHRpZiAod2wtXHUwMDNlc3RhdHVzLm1hcC5fNHdheSkge1xuIFx0XHRcdHBvbGljeV90eXBlID0gQlRDX0NYUF9PRkZfV0w7XG4gXHRcdH0gZWxzZSBpZiAod2wtXHUwMDNlc3RhdHVzLm1hcC50cmFmZmljX2RpciBcdTAwMjYgQklUKFJUVzg5X1RGQ19VTCkpIHtcbi1cdFx0XHRidGMtXHUwMDNlY3guYnQuc2Nhbl9yeF9sb3dfcHJpID0gdHJ1ZTtcbitcdFx0XHRidGMtXHUwMDNlY3guYnQwLnNjYW5fcnhfbG93X3ByaSA9IHRydWU7XG4gXHRcdFx0aWYgKGhpZC1cdTAwM2V0eXBlIFx1MDAyNiBCVENfSElEX0JMRSlcbiBcdFx0XHRcdHBvbGljeV90eXBlID0gQlRDX0NYUF9PRkZfQldCMDtcbiBcdFx0XHRlbHNlXG5AQCAtNDk1Niw3ICs1MDgwLDcgQEAgc3RhdGljIHZvaWQgX2FjdGlvbl9idF9hMmRwc2luayhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4gc3RhdGljIHZvaWQgX2FjdGlvbl9idF9wYW4oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuIHtcbiBcdHN0cnVjdCBydHc4OV9idGMgKmJ0YyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2VidGM7XG4tXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2xpbmtfaW5mbyAqYnRfbGluZm8gPSBcdTAwMjZidGMtXHUwMDNlY3guYnQubGlua19pbmZvO1xuK1x0c3RydWN0IHJ0dzg5X2J0Y19idF9saW5rX2luZm8gKmJ0X2xpbmZvID0gXHUwMDI2YnRjLVx1MDAzZWN4LmJ0MC5saW5rX2luZm87XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2EyZHBfZGVzYyBhMmRwID0gYnRfbGluZm8tXHUwMDNlYTJkcF9kZXNjO1xuIFx0c3RydWN0IHJ0dzg5X2J0Y19idF9wYW5fZGVzYyBwYW4gPSBidF9saW5mby1cdTAwM2VwYW5fZGVzYztcbiBcbkBAIC01MTY4LDcgKzUyOTIsNyBAQCBzdGF0aWMgdm9pZCBfc2V0X2J0Z19jdHJsKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbiBcdHN0cnVjdCBydHc4OV9idGNfd2xfcm9sZV9pbmZvICp3bF9yaW5mb192MCA9IFx1MDAyNndsLVx1MDAzZXJvbGVfaW5mbztcbiBcdGNvbnN0IHN0cnVjdCBydHc4OV9jaGlwX2luZm8gKmNoaXAgPSBydHdkZXYtXHUwMDNlY2hpcDtcbiBcdGNvbnN0IHN0cnVjdCBydHc4OV9idGNfdmVyICp2ZXIgPSBidGMtXHUwMDNldmVyO1xuLVx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC5idDtcbitcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcdTAwMjZidGMtXHUwMDNlY3guYnQwO1xuIFx0c3RydWN0IHJ0dzg5X2J0Y19kbSAqZG0gPSBcdTAwMjZidGMtXHUwMDNlZG07XG4gXHRzdHJ1Y3QgX3dsX3JpbmZvX25vdyB3bF9yaW5mbztcbiBcdHUzMiBpc19idGcgPSBCVENfQlRHQ1RSTF9ESVNBQkxFO1xuQEAgLTUyNDUsMTMgKzUzNjksMTMgQEAgc3RhdGljIHZvaWQgX3NldF93bF9wcmVhZ2NfY3RybChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4ge1xuIFx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXHUwMDI2cnR3ZGV2LVx1MDAzZWJ0YztcbiBcdHN0cnVjdCBydHc4OV9idGNfZmJ0Y19vdXRzcmNfc2V0X2luZm8gKm9faW5mbyA9IFx1MDAyNmJ0Yy1cdTAwM2VkbS5vc3RfaW5mbztcbi1cdHN0cnVjdCBydHc4OV9idGNfYnRfbGlua19pbmZvICpidF9saW5mbyA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC5idC5saW5rX2luZm87XG4rXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2xpbmtfaW5mbyAqYnRfbGluZm8gPSBcdTAwMjZidGMtXHUwMDNlY3guYnQwLmxpbmtfaW5mbztcbiBcdHN0cnVjdCBydHc4OV9idGNfd2xfaW5mbyAqd2wgPSBcdTAwMjZidGMtXHUwMDNlY3gud2w7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX3JvbGVfaW5mb192MiAqcmluZm9fdjIgPSBcdTAwMjZ3bC1cdTAwM2Vyb2xlX2luZm9fdjI7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX3JvbGVfaW5mb192NyAqcmluZm9fdjcgPSBcdTAwMjZ3bC1cdTAwM2Vyb2xlX2luZm9fdjc7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX3JvbGVfaW5mb192OCAqcmluZm9fdjggPSBcdTAwMjZ3bC1cdTAwM2Vyb2xlX2luZm9fdjg7XG4gXHRjb25zdCBzdHJ1Y3QgcnR3ODlfY2hpcF9pbmZvICpjaGlwID0gcnR3ZGV2LVx1MDAzZWNoaXA7XG4tXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXHUwMDI2YnRjLVx1MDAzZWN4LmJ0O1xuK1x0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC5idDA7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX2RtICpkbSA9IFx1MDAyNmJ0Yy1cdTAwM2VkbTtcbiBcdHU4IGlzX3ByZWFnYywgdmFsLCBsaW5rX21vZGUsIGRiY2NfMmdfcGh5O1xuIFx0dTggcm9sZV92ZXIgPSBydHdkZXYtXHUwMDNlYnRjLnZlci1cdTAwM2Vmd2xyb2xlO1xuQEAgLTUyODEsNyArNTQwNSw3IEBAIHN0YXRpYyB2b2lkIF9zZXRfd2xfcHJlYWdjX2N0cmwoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuIFx0fSBlbHNlIGlmIChsaW5rX21vZGUgPT0gQlRDX1dMSU5LXzVHKSB7XG4gXHRcdGlzX3ByZWFnYyA9IEJUQ19QUkVBR0NfRElTQUJMRTtcbiBcdH0gZWxzZSBpZiAobGlua19tb2RlID09IEJUQ19XTElOS19OT0xJTksgfHxcbi1cdFx0IGJ0Yy1cdTAwM2VjeC5idC5saW5rX2luZm8ucHJvZmlsZV9jbnQubm93ID09IDApIHtcbitcdFx0IGJ0Yy1cdTAwM2VjeC5idDAubGlua19pbmZvLnByb2ZpbGVfY250Lm5vdyA9PSAwKSB7XG4gXHRcdGlzX3ByZWFnYyA9IEJUQ19QUkVBR0NfRElTQUJMRTtcbiBcdH0gZWxzZSBpZiAoZG0tXHUwMDNldGRtYV9ub3cudHlwZSAhPSBDWFRETUFfT0ZGIFx1MDAyNlx1MDAyNlxuIFx0XHQgIWJ0X2xpbmZvLVx1MDAzZWhmcF9kZXNjLmV4aXN0IFx1MDAyNlx1MDAyNlxuQEAgLTU0MzEsNyArNTU1NSw3IEBAIHN0YXRpYyB2b2lkIF9zZXRfd2xfdHhfbGltaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuIFx0c3RydWN0IHJ0dzg5X2J0Y19jeCAqY3ggPSBcdTAwMjZidGMtXHUwMDNlY3g7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX2RtICpkbSA9IFx1MDAyNmJ0Yy1cdTAwM2VkbTtcbiBcdHN0cnVjdCBydHc4OV9idGNfd2xfaW5mbyAqd2wgPSBcdTAwMjZjeC1cdTAwM2V3bDtcbi1cdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcdTAwMjZjeC1cdTAwM2VidDtcbitcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcdTAwMjZjeC1cdTAwM2VidDA7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2xpbmtfaW5mbyAqYiA9IFx1MDAyNmJ0LVx1MDAzZWxpbmtfaW5mbztcbiBcdHN0cnVjdCBydHc4OV9idGNfYnRfaGZwX2Rlc2MgKmhmcCA9IFx1MDAyNmItXHUwMDNlaGZwX2Rlc2M7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2hpZF9kZXNjICpoaWQgPSBcdTAwMjZiLVx1MDAzZWhpZF9kZXNjO1xuQEAgLTU1MTgsNyArNTY0Miw3IEBAIHN0YXRpYyB2b2lkIF9zZXRfYnRfcnhfYWdjKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbiBcdHN0cnVjdCBydHc4OV9idGNfd2xfcm9sZV9pbmZvX3YyICp3bF9yaW5mb192MiA9IFx1MDAyNndsLVx1MDAzZXJvbGVfaW5mb192MjtcbiBcdHN0cnVjdCBydHc4OV9idGNfd2xfcm9sZV9pbmZvX3Y3ICp3bF9yaW5mb192NyA9IFx1MDAyNndsLVx1MDAzZXJvbGVfaW5mb192NztcbiBcdHN0cnVjdCBydHc4OV9idGNfd2xfcm9sZV9pbmZvX3Y4ICp3bF9yaW5mb192OCA9IFx1MDAyNndsLVx1MDAzZXJvbGVfaW5mb192ODtcbi1cdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcdTAwMjZidGMtXHUwMDNlY3guYnQ7XG4rXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXHUwMDI2YnRjLVx1MDAzZWN4LmJ0MDtcbiBcdGJvb2wgYnRfaGlfbG5hX3J4ID0gZmFsc2U7XG4gXHR1OCBtb2RlO1xuIFxuQEAgLTU1NDcsNyArNTY3MSw3IEBAIHN0YXRpYyB2b2lkIF9zZXRfYnRfcnhfYWdjKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbiBzdGF0aWMgdm9pZCBfc2V0X2J0X3J4X3NjYW5fcHJpKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbiB7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcdTAwMjZydHdkZXYtXHUwMDNlYnRjO1xuLVx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC5idDtcbitcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcdTAwMjZidGMtXHUwMDNlY3guYnQwO1xuIFxuIFx0X3dyaXRlX3NjYmQocnR3ZGV2LCBCVENfV1NDQl9SWFNDQU5fUFJJLCAoYm9vbCkoISFidC1cdTAwM2VzY2FuX3J4X2xvd19wcmkpKTtcbiB9XG5AQCAtNTU4Niw3ICs1NzEwLDcgQEAgc3RhdGljIHZvaWQgX2FjdGlvbl9jb21tb24oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuIFx0c3RydWN0IHJ0dzg5X2J0Y193bF9pbmZvICp3bCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC53bDtcbiBcdHN0cnVjdCBydHc4OV9idGNfd2xfcm9sZV9pbmZvX3Y4ICpyaW5mb192OCA9IFx1MDAyNndsLVx1MDAzZXJvbGVfaW5mb192ODtcbiBcdHN0cnVjdCBydHc4OV9idGNfd2xfc21hcCAqd2xfc21hcCA9IFx1MDAyNndsLVx1MDAzZXN0YXR1cy5tYXA7XG4tXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXHUwMDI2YnRjLVx1MDAzZWN4LmJ0O1xuK1x0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC5idDA7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX2RtICpkbSA9IFx1MDAyNmJ0Yy1cdTAwM2VkbTtcbiBcdHUzMiBidF9yb21fY29kZV9pZCwgYnRfZndfdmVyO1xuIFxuQEAgLTU2MjYsNyArNTc1MCw3IEBAIHN0YXRpYyB2b2lkIF9hY3Rpb25fY29tbW9uKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbiBcdFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQlRDLCBcIltCVENdLCB3cml0ZSBzY2JkOiAweCUwOHhcXG5cIixcbiBcdFx0XHQgICAgd2wtXHUwMDNlc2NiZCk7XG4gXHRcdHdsLVx1MDAzZXNjYmRfY2hhbmdlID0gZmFsc2U7XG4tXHRcdGJ0Yy1cdTAwM2VjeC5jbnRfd2xbQlRDX1dDTlRfU0NCRFVQREFURV0rKztcbitcdFx0d2wtXHUwMDNld2NudFtCVENfV0NOVF9TQ0JEVVBEQVRFXSsrO1xuIFx0fVxuIFxuIFx0aWYgKGJ0Yy1cdTAwM2V2ZXItXHUwMDNlZmN4b3NpKSB7XG5AQCAtNTYzOCwxNCArNTc2MiwxNSBAQCBzdGF0aWMgdm9pZCBfYWN0aW9uX2NvbW1vbihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4gXHRcdFx0X2Z3X3NldF9kcnZfaW5mbyhydHdkZXYsIENYRFJWSU5GT19PU0kpO1xuIFx0XHR9XG4gXHR9XG4tXHRidGMtXHUwMDNlZG0udGRtYV9pbnN0YW50X2V4Y3V0ZSA9IDA7XG4rXHRkbS1cdTAwM2V0ZG1hX2luc3RhbnRfZXhjdXRlID0gMDtcbitcdGRtLVx1MDAzZWxwc19jdHJsX2NoYW5nZSA9IGZhbHNlO1xuIFx0d2wtXHUwMDNlcHRhX3JlZ19tYWNfY2hnID0gZmFsc2U7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIF9hY3Rpb25fYnlfYnQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuIHtcbiBcdHN0cnVjdCBydHc4OV9idGMgKmJ0YyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2VidGM7XG4tXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXHUwMDI2YnRjLVx1MDAzZWN4LmJ0O1xuK1x0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC5idDA7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2xpbmtfaW5mbyAqYnRfbGluZm8gPSBcdTAwMjZidC1cdTAwM2VsaW5rX2luZm87XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2hpZF9kZXNjIGhpZCA9IGJ0X2xpbmZvLVx1MDAzZWhpZF9kZXNjO1xuIFx0c3RydWN0IHJ0dzg5X2J0Y19idF9hMmRwX2Rlc2MgYTJkcCA9IGJ0X2xpbmZvLVx1MDAzZWEyZHBfZGVzYztcbkBAIC01NzQyLDcgKzU4NjcsNyBAQCBzdGF0aWMgdm9pZCBfYWN0aW9uX3dsXzI1Z19tY2Moc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuIFx0XHRcdHBvbGljeV90eXBlID0gQlRDX0NYUF9PRkZFX1dMO1xuIFx0XHRlbHNlIGlmIChidGMtXHUwMDNlY3gud2wuc3RhdHVzLnZhbCBcdTAwMjYgYnRjX3NjYW5uaW5nX21hcC52YWwpXG4gXHRcdFx0cG9saWN5X3R5cGUgPSBCVENfQ1hQX09GRkVfMkdCV01JWEI7XG4tXHRcdGVsc2UgaWYgKGJ0Yy1cdTAwM2VjeC5idC5saW5rX2luZm8uc3RhdHVzLm1hcC5jb25uZWN0ID09IDApXG4rXHRcdGVsc2UgaWYgKGJ0Yy1cdTAwM2VjeC5idDAubGlua19pbmZvLnN0YXR1cy5tYXAuY29ubmVjdCA9PSAwKVxuIFx0XHRcdHBvbGljeV90eXBlID0gQlRDX0NYUF9PRkZFXzJHSVNPQjtcbiBcdFx0ZWxzZVxuIFx0XHRcdHBvbGljeV90eXBlID0gQlRDX0NYUF9PRkZFXzJHQldJU09CO1xuQEAgLTU3ODYsNyArNTkxMSw3IEBAIHN0YXRpYyB2b2lkIF9hY3Rpb25fd2xfMmdfbWNjKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbiBcdF9zZXRfYW50KHJ0d2RldiwgTk1fRVhFQywgQlRDX1BIWV9BTEwsIEJUQ19BTlRfVzJHKTtcbiBcbiBcdGlmIChidGMtXHUwMDNlYW50X3R5cGUgPT0gQlRDX0FOVF9TSEFSRUQpIHsgLyogc2hhcmVkLWFudGVubmEgKi9cbi1cdFx0aWYgKGJ0Yy1cdTAwM2VjeC5idC5saW5rX2luZm8ucHJvZmlsZV9jbnQubm93ID09IDApXG4rXHRcdGlmIChidGMtXHUwMDNlY3guYnQwLmxpbmtfaW5mby5wcm9maWxlX2NudC5ub3cgPT0gMClcbiBcdFx0XHRfc2V0X3BvbGljeShydHdkZXYsIEJUQ19DWFBfT0ZGRV9ERUYyLFxuIFx0XHRcdFx0ICAgIEJUQ19BQ1RfV0xfMkdfTUNDKTtcbiBcdFx0ZWxzZVxuQEAgLTU4MDQsNyArNTkyOSw3IEBAIHN0YXRpYyB2b2lkIF9hY3Rpb25fd2xfMmdfc2NjKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbiBcdF9zZXRfYW50KHJ0d2RldiwgTk1fRVhFQywgQlRDX1BIWV9BTEwsIEJUQ19BTlRfVzJHKTtcbiBcbiBcdGlmIChidGMtXHUwMDNlYW50X3R5cGUgPT0gQlRDX0FOVF9TSEFSRUQpIHsgLyogc2hhcmVkLWFudGVubmEgKi9cbi1cdFx0aWYgKGJ0Yy1cdTAwM2VjeC5idC5saW5rX2luZm8ucHJvZmlsZV9jbnQubm93ID09IDApXG4rXHRcdGlmIChidGMtXHUwMDNlY3guYnQwLmxpbmtfaW5mby5wcm9maWxlX2NudC5ub3cgPT0gMClcbiBcdFx0XHRfc2V0X3BvbGljeShydHdkZXYsXG4gXHRcdFx0XHQgICAgQlRDX0NYUF9PRkZFX0RFRjIsIEJUQ19BQ1RfV0xfMkdfU0NDKTtcbiBcdFx0ZWxzZVxuQEAgLTU4MTksNyArNTk0NCw3IEBAIHN0YXRpYyB2b2lkIF9hY3Rpb25fd2xfMmdfc2NjX3YxKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbiB7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcdTAwMjZydHdkZXYtXHUwMDNlYnRjO1xuIFx0c3RydWN0IHJ0dzg5X2J0Y193bF9pbmZvICp3bCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC53bDtcbi1cdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcdTAwMjZidGMtXHUwMDNlY3guYnQ7XG4rXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXHUwMDI2YnRjLVx1MDAzZWN4LmJ0MDtcbiBcdHN0cnVjdCBydHc4OV9idGNfZG0gKmRtID0gXHUwMDI2YnRjLVx1MDAzZWRtO1xuIFx0c3RydWN0IHJ0dzg5X2J0Y193bF9yb2xlX2luZm9fdjEgKndsX3JpbmZvID0gXHUwMDI2d2wtXHUwMDNlcm9sZV9pbmZvX3YxO1xuIFx0dTE2IHBvbGljeV90eXBlID0gQlRDX0NYUF9PRkZfQlQ7XG5AQCAtNTg1Niw3ICs1OTgxLDcgQEAgc3RhdGljIHZvaWQgX2FjdGlvbl93bF8yZ19zY2NfdjEoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuIFx0XHRcdFx0ZG0tXHUwMDNld2xfc2NjLmVidF9udWxsID0gMDtcbiBcdFx0XHRcdHBvbGljeV90eXBlID0gQlRDX0NYUF9PRkZFXzJHSVNPQjtcbiBcdFx0XHR9IGVsc2UgaWYgKGJ0LVx1MDAzZWxpbmtfaW5mby5hMmRwX2Rlc2MuZXhpc3QgXHUwMDI2XHUwMDI2XG4tXHRcdFx0XHQgICBkdXIgXHUwMDNjIGJ0Yy1cdTAwM2VidF9yZXFfbGVuKSB7XG4rXHRcdFx0XHQgICBkdXIgXHUwMDNjIGJ0Yy1cdTAwM2VidF9yZXFfbGVuW1JUVzg5X1BIWV8wXSkge1xuIFx0XHRcdFx0ZG0tXHUwMDNld2xfc2NjLmVidF9udWxsID0gMTsgLyogdHggbnVsbCBhdCBFQlQgKi9cbiBcdFx0XHRcdHBvbGljeV90eXBlID0gQlRDX0NYUF9PRkZFXzJHQldNSVhCMjtcbiBcdFx0XHR9IGVsc2UgaWYgKGJ0LVx1MDAzZWxpbmtfaW5mby5hMmRwX2Rlc2MuZXhpc3QgfHxcbkBAIC01ODgxLDcgKzYwMDYsNyBAQCBzdGF0aWMgdm9pZCBfYWN0aW9uX3dsXzJnX3NjY192MihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4ge1xuIFx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXHUwMDI2cnR3ZGV2LVx1MDAzZWJ0YztcbiBcdHN0cnVjdCBydHc4OV9idGNfd2xfaW5mbyAqd2wgPSBcdTAwMjZidGMtXHUwMDNlY3gud2w7XG4tXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXHUwMDI2YnRjLVx1MDAzZWN4LmJ0O1xuK1x0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC5idDA7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX2RtICpkbSA9IFx1MDAyNmJ0Yy1cdTAwM2VkbTtcbiBcdHN0cnVjdCBydHc4OV9idGNfd2xfcm9sZV9pbmZvX3YyICpyaW5mb192MiA9IFx1MDAyNndsLVx1MDAzZXJvbGVfaW5mb192MjtcbiBcdHN0cnVjdCBydHc4OV9idGNfd2xfcm9sZV9pbmZvX3Y3ICpyaW5mb192NyA9IFx1MDAyNndsLVx1MDAzZXJvbGVfaW5mb192NztcbkBAIC01OTI5LDcgKzYwNTQsNyBAQCBzdGF0aWMgdm9pZCBfYWN0aW9uX3dsXzJnX3NjY192MihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4gXHRcdFx0XHRkbS1cdTAwM2V3bF9zY2MuZWJ0X251bGwgPSAwO1xuIFx0XHRcdFx0cG9saWN5X3R5cGUgPSBCVENfQ1hQX09GRkVfMkdJU09CO1xuIFx0XHRcdH0gZWxzZSBpZiAoYnQtXHUwMDNlbGlua19pbmZvLmEyZHBfZGVzYy5leGlzdCBcdTAwMjZcdTAwMjZcbi1cdFx0XHRcdCAgIGR1ciBcdTAwM2MgYnRjLVx1MDAzZWJ0X3JlcV9sZW4pIHtcbitcdFx0XHRcdCAgIGR1ciBcdTAwM2MgYnRjLVx1MDAzZWJ0X3JlcV9sZW5bUlRXODlfUEhZXzBdKSB7XG4gXHRcdFx0XHRkbS1cdTAwM2V3bF9zY2MuZWJ0X251bGwgPSAxOyAvKiB0eCBudWxsIGF0IEVCVCAqL1xuIFx0XHRcdFx0cG9saWN5X3R5cGUgPSBCVENfQ1hQX09GRkVfMkdCV01JWEIyO1xuIFx0XHRcdH0gZWxzZSBpZiAoYnQtXHUwMDNlbGlua19pbmZvLmEyZHBfZGVzYy5leGlzdCB8fFxuQEAgLTU5NTQsNyArNjA3OSw3IEBAIHN0YXRpYyB2b2lkIF9hY3Rpb25fd2xfMmdfc2NjX3Y4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbiB7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcdTAwMjZydHdkZXYtXHUwMDNlYnRjO1xuIFx0c3RydWN0IHJ0dzg5X2J0Y193bF9pbmZvICp3bCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC53bDtcbi1cdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcdTAwMjZidGMtXHUwMDNlY3guYnQ7XG4rXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXHUwMDI2YnRjLVx1MDAzZWN4LmJ0MDtcbiBcdHN0cnVjdCBydHc4OV9idGNfZG0gKmRtID0gXHUwMDI2YnRjLVx1MDAzZWRtO1xuIFx0dTE2IHBvbGljeV90eXBlID0gQlRDX0NYUF9PRkZfQlQ7XG4gXG5AQCAtNTk4Miw3ICs2MTA3LDcgQEAgc3RhdGljIHZvaWQgX2FjdGlvbl93bF8yZ19hcChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4gXHRfc2V0X2FudChydHdkZXYsIE5NX0VYRUMsIEJUQ19QSFlfQUxMLCBCVENfQU5UX1cyRyk7XG4gXG4gXHRpZiAoYnRjLVx1MDAzZWFudF90eXBlID09IEJUQ19BTlRfU0hBUkVEKSB7XG4tXHRcdGlmIChidGMtXHUwMDNlY3guYnQubGlua19pbmZvLnByb2ZpbGVfY250Lm5vdyA9PSAwKVxuK1x0XHRpZiAoYnRjLVx1MDAzZWN4LmJ0MC5saW5rX2luZm8ucHJvZmlsZV9jbnQubm93ID09IDApXG4gXHRcdFx0X3NldF9wb2xpY3kocnR3ZGV2LCBCVENfQ1hQX09GRkVfREVGMixcbiBcdFx0XHRcdCAgICBCVENfQUNUX1dMXzJHX0FQKTtcbiBcdFx0ZWxzZVxuQEAgLTU5OTksNyArNjEyNCw3IEBAIHN0YXRpYyB2b2lkIF9hY3Rpb25fd2xfMmdfZ28oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuIFx0X3NldF9hbnQocnR3ZGV2LCBOTV9FWEVDLCBCVENfUEhZX0FMTCwgQlRDX0FOVF9XMkcpO1xuIFxuIFx0aWYgKGJ0Yy1cdTAwM2VhbnRfdHlwZSA9PSBCVENfQU5UX1NIQVJFRCkgeyAvKiBzaGFyZWQtYW50ZW5uYSAqL1xuLVx0XHRpZiAoYnRjLVx1MDAzZWN4LmJ0LmxpbmtfaW5mby5wcm9maWxlX2NudC5ub3cgPT0gMClcbitcdFx0aWYgKGJ0Yy1cdTAwM2VjeC5idDAubGlua19pbmZvLnByb2ZpbGVfY250Lm5vdyA9PSAwKVxuIFx0XHRcdF9zZXRfcG9saWN5KHJ0d2RldixcbiBcdFx0XHRcdCAgICBCVENfQ1hQX09GRkVfREVGMiwgQlRDX0FDVF9XTF8yR19HTyk7XG4gXHRcdGVsc2VcbkBAIC02MDMwLDcgKzYxNTUsNyBAQCBzdGF0aWMgdm9pZCBfYWN0aW9uX3dsXzJnX25hbihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4gXHRfc2V0X2FudChydHdkZXYsIE5NX0VYRUMsIEJUQ19QSFlfQUxMLCBCVENfQU5UX1cyRyk7XG4gXG4gXHRpZiAoYnRjLVx1MDAzZWFudF90eXBlID09IEJUQ19BTlRfU0hBUkVEKSB7IC8qIHNoYXJlZC1hbnRlbm5hICovXG4tXHRcdGlmIChidGMtXHUwMDNlY3guYnQubGlua19pbmZvLnByb2ZpbGVfY250Lm5vdyA9PSAwKVxuK1x0XHRpZiAoYnRjLVx1MDAzZWN4LmJ0MC5saW5rX2luZm8ucHJvZmlsZV9jbnQubm93ID09IDApXG4gXHRcdFx0X3NldF9wb2xpY3kocnR3ZGV2LFxuIFx0XHRcdFx0ICAgIEJUQ19DWFBfT0ZGRV9ERUYyLCBCVENfQUNUX1dMXzJHX05BTik7XG4gXHRcdGVsc2VcbkBAIC02MDU0LDcgKzYxNzksNyBAQCBzdGF0aWMgdTMyIF9yZWFkX3NjYmQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuIFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQlRDLCBcIltCVENdLCByZWFkIHNjYmQ6IDB4JTA4eFxcblwiLFxuIFx0XHQgICAgc2NiZF92YWwpO1xuIFxuLVx0YnRjLVx1MDAzZWN4LmNudF9idFtCVENfQkNOVF9TQ0JEUkVBRF0rKztcbitcdGJ0Yy1cdTAwM2VjeC5idDAuYmNudFtCVENfQkNOVF9TQ0JEUkVBRF0rKztcbiBcdHJldHVybiBzY2JkX3ZhbDtcbiB9XG4gXG5AQCAtNjg3Miw3ICs2OTk3LDcgQEAgc3RhdGljIHZvaWQgX3VwZGF0ZV93bF9pbmZvX3Y3KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggcmlkKVxuIFx0aWYgKHdsX3JpbmZvLVx1MDAzZWRiY2NfZW4gIT0gcnR3ZGV2LVx1MDAzZWRiY2NfZW4pIHtcbiBcdFx0d2xfcmluZm8tXHUwMDNlZGJjY19jaGcgPSAxO1xuIFx0XHR3bF9yaW5mby1cdTAwM2VkYmNjX2VuID0gcnR3ZGV2LVx1MDAzZWRiY2NfZW47XG4tXHRcdGJ0Yy1cdTAwM2VjeC5jbnRfd2xbQlRDX1dDTlRfREJDQ19DSEddKys7XG4rXHRcdHdsLVx1MDAzZXdjbnRbQlRDX1dDTlRfREJDQ19DSEddKys7XG4gXHR9XG4gXG4gXHRpZiAocnR3ZGV2LVx1MDAzZWRiY2NfZW4pIHtcbkBAIC03MzE2LDcgKzc0NDEsNyBAQCBzdGF0aWMgdm9pZCBfdXBkYXRlX3dsX2luZm9fdjgoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCByb2xlX2lkLCB1OCBybGlua19pZFxuIFxuIFx0aWYgKHdsX3JpbmZvLVx1MDAzZWRiY2NfZW4gIT0gZGJjY19lbl9vcmkpIHtcbiBcdFx0d2wtXHUwMDNlZGJjY19jaGcgPSB0cnVlO1xuLVx0XHRidGMtXHUwMDNlY3guY250X3dsW0JUQ19XQ05UX0RCQ0NfQ0hHXSsrO1xuK1x0XHR3bC1cdTAwM2V3Y250W0JUQ19XQ05UX0RCQ0NfQ0hHXSsrO1xuIFx0fVxuIH1cbiBcbkBAIC03MzQ3LDcgKzc0NzIsNyBAQCB2b2lkIHJ0dzg5X2NvZXhfYnRfZGV2aW5mb193b3JrKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXBoeV93b3JrICp3b3JrKVxuIFx0XHRcdFx0XHRcdGNvZXhfYnRfZGV2aW5mb193b3JrLndvcmspO1xuIFx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXHUwMDI2cnR3ZGV2LVx1MDAzZWJ0YztcbiBcdHN0cnVjdCBydHc4OV9idGNfZG0gKmRtID0gXHUwMDI2cnR3ZGV2LVx1MDAzZWJ0Yy5kbTtcbi1cdHN0cnVjdCBydHc4OV9idGNfYnRfYTJkcF9kZXNjICphMmRwID0gXHUwMDI2YnRjLVx1MDAzZWN4LmJ0LmxpbmtfaW5mby5hMmRwX2Rlc2M7XG4rXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2EyZHBfZGVzYyAqYTJkcCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC5idDAubGlua19pbmZvLmEyZHBfZGVzYztcbiBcbiBcdGxvY2tkZXBfYXNzZXJ0X3dpcGh5KHdpcGh5KTtcbiBcbkBAIC03MzczLDcgKzc0OTgsNyBAQCB2b2lkIHJ0dzg5X2NvZXhfcmZrX2Noa193b3JrKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXBoeV93b3JrICp3b3JrKVxuIFx0aWYgKHdsLVx1MDAzZXJma19pbmZvLnN0YXRlICE9IEJUQ19XUkZLX1NUT1ApIHtcbiBcdFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQlRDLFxuIFx0XHRcdCAgICBcIltCVENdLCAlcygpOiBSRksgdGltZW91dFxcblwiLCBfX2Z1bmNfXyk7XG4tXHRcdGN4LVx1MDAzZWNudF93bFtCVENfV0NOVF9SRktfVElNRU9VVF0rKztcbitcdFx0d2wtXHUwMDNld2NudFtCVENfV0NOVF9SRktfVElNRU9VVF0rKztcbiBcdFx0ZG0tXHUwMDNlZXJyb3IubWFwLndsX3Jma190aW1lb3V0ID0gdHJ1ZTtcbiBcdFx0d2wtXHUwMDNlcmZrX2luZm8uc3RhdGUgPSBCVENfV1JGS19TVE9QO1xuIFx0XHRfd3JpdGVfc2NiZChydHdkZXYsIEJUQ19XU0NCX1dMUkZLLCBmYWxzZSk7XG5AQCAtNzM4MywxNCArNzUwOCwxNiBAQCB2b2lkIHJ0dzg5X2NvZXhfcmZrX2Noa193b3JrKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXBoeV93b3JrICp3b3JrKVxuIFxuIHN0YXRpYyB2b2lkIF91cGRhdGVfYnRfc2NiZChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgb25seV91cGRhdGUpXG4ge1xuLVx0Y29uc3Qgc3RydWN0IHJ0dzg5X2NoaXBfaW5mbyAqY2hpcCA9IHJ0d2Rldi1cdTAwM2VjaGlwO1xuIFx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXHUwMDI2cnR3ZGV2LVx1MDAzZWJ0Yztcbi1cdHN0cnVjdCBydHc4OV9idGNfY3ggKmN4ID0gXHUwMDI2YnRjLVx1MDAzZWN4O1xuLVx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC5idDtcbi1cdHUzMiB2YWw7XG4tXHRib29sIHN0YXR1c19jaGFuZ2UgPSBmYWxzZTtcbitcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcdTAwMjZidGMtXHUwMDNlY3guYnQwO1xuK1x0Y29uc3Qgc3RydWN0IHJ0dzg5X2J0Y192ZXIgKnZlciA9IGJ0Yy1cdTAwM2V2ZXI7XG4rXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX2luZm8gKndsID0gXHUwMDI2YnRjLVx1MDAzZWN4LndsO1xuK1x0c3RydWN0IHJ0dzg5X2J0Y19kbSAqZG0gPSBcdTAwMjZydHdkZXYtXHUwMDNlYnRjLmRtO1xuK1x0Ym9vbCBidF9saW5rX2NoYW5nZSA9IGZhbHNlLCBscHNfY3RybCA9IGZhbHNlO1xuK1x0dTMyIHZhbCwgYW55X2J0X2Nvbm5lY3Q7XG4rXHR1OCBtb2RlO1xuIFxuLVx0aWYgKCFjaGlwLVx1MDAzZXNjYmQpXG4rXHRpZiAocnR3ZGV2LVx1MDAzZWNoaXAtXHUwMDNlc2NiZClcbiBcdFx0cmV0dXJuO1xuIFxuIFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQlRDLCBcIltCVENdLCAlc1xcblwiLCBfX2Z1bmNfXyk7XG5AQCAtNzQwMywxOCArNzUzMCwzMSBAQCBzdGF0aWMgdm9pZCBfdXBkYXRlX2J0X3NjYmQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBib29sIG9ubHlfdXBkYXRlKVxuIFx0XHRyZXR1cm47XG4gXHR9XG4gXG4rXHRpZiAodmVyLVx1MDAzZWZ3bHJvbGUgPT0gMClcbitcdFx0bW9kZSA9IHdsLVx1MDAzZXJvbGVfaW5mby5saW5rX21vZGU7XG4rXHRlbHNlIGlmICh2ZXItXHUwMDNlZndscm9sZSA9PSAxKVxuK1x0XHRtb2RlID0gd2wtXHUwMDNlcm9sZV9pbmZvX3YxLmxpbmtfbW9kZTtcbitcdGVsc2UgaWYgKHZlci1cdTAwM2Vmd2xyb2xlID09IDIpXG4rXHRcdG1vZGUgPSB3bC1cdTAwM2Vyb2xlX2luZm9fdjIubGlua19tb2RlO1xuK1x0ZWxzZSBpZiAodmVyLVx1MDAzZWZ3bHJvbGUgPT0gNylcbitcdFx0bW9kZSA9IHdsLVx1MDAzZXJvbGVfaW5mb192Ny5saW5rX21vZGU7XG4rXHRlbHNlIGlmICh2ZXItXHUwMDNlZndscm9sZSA9PSA4KVxuK1x0XHRtb2RlID0gd2wtXHUwMDNlcm9sZV9pbmZvX3Y4LmxpbmtfbW9kZTtcbitcdGVsc2VcbitcdFx0cmV0dXJuO1xuK1xuIFx0aWYgKCEodmFsIFx1MDAyNiBCVENfQlNDQl9PTikpXG4gXHRcdGJ0LVx1MDAzZWVuYWJsZS5ub3cgPSAwO1xuIFx0ZWxzZVxuIFx0XHRidC1cdTAwM2VlbmFibGUubm93ID0gMTtcbiBcbiBcdGlmIChidC1cdTAwM2VlbmFibGUubm93ICE9IGJ0LVx1MDAzZWVuYWJsZS5sYXN0KVxuLVx0XHRzdGF0dXNfY2hhbmdlID0gdHJ1ZTtcbitcdFx0YnRfbGlua19jaGFuZ2UgPSB0cnVlO1xuIFxuIFx0LyogcmVzZXQgYnQgaW5mbyBpZiBidCByZS1lbmFibGUgKi9cbiBcdGlmIChidC1cdTAwM2VlbmFibGUubm93IFx1MDAyNlx1MDAyNiAhYnQtXHUwMDNlZW5hYmxlLmxhc3QpIHtcbiBcdFx0X3Jlc2V0X2J0Y192YXIocnR3ZGV2LCBCVENfUkVTRVRfQlRJTkZPKTtcbi1cdFx0Y3gtXHUwMDNlY250X2J0W0JUQ19CQ05UX1JFRU5BQkxFXSsrO1xuK1x0XHRidC1cdTAwM2ViY250W0JUQ19CQ05UX1JFRU5BQkxFXSsrO1xuIFx0XHRidC1cdTAwM2VlbmFibGUubm93ID0gMTtcbiBcdH1cbiBcbkBAIC03NDIzLDM1ICs3NTYzLDU4IEBAIHN0YXRpYyB2b2lkIF91cGRhdGVfYnRfc2NiZChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGJvb2wgb25seV91cGRhdGUpXG4gXHRidC1cdTAwM2VtYnhfYXZsID0gISEodmFsIFx1MDAyNiBCVENfQlNDQl9BQ1QpO1xuIFxuIFx0aWYgKGJ0LVx1MDAzZXdocWxfdGVzdCAhPSAhISh2YWwgXHUwMDI2IEJUQ19CU0NCX1dIUUwpKVxuLVx0XHRzdGF0dXNfY2hhbmdlID0gdHJ1ZTtcbitcdFx0YnRfbGlua19jaGFuZ2UgPSB0cnVlO1xuIFxuIFx0YnQtXHUwMDNld2hxbF90ZXN0ID0gISEodmFsIFx1MDAyNiBCVENfQlNDQl9XSFFMKTtcbiBcdGJ0LVx1MDAzZWJ0Z190eXBlID0gdmFsIFx1MDAyNiBCVENfQlNDQl9CVF9TMSA/IEJUQ19CVF9CVEcgOiBCVENfQlRfQUxPTkU7XG4gXHRidC1cdTAwM2VsaW5rX2luZm8uYTJkcF9kZXNjLmV4aXN0ID0gISEodmFsIFx1MDAyNiBCVENfQlNDQl9BMkRQX0FDVCk7XG4rXHRidC1cdTAwM2VsaW5rX2luZm8ucGFuX2Rlc2MuZXhpc3QgPSAhISh2YWwgXHUwMDI2IEJUQ19CU0NCX1BBTl9BQ1QpO1xuK1x0YnQtXHUwMDNlbGlua19pbmZvLmhmcF9kZXNjLmV4aXN0ID0gISEodmFsIFx1MDAyNiBCVENfQlNDQl9IRlBfQUNUKTtcbiBcbiBcdGJ0LVx1MDAzZWxuYV9jb25zdHJhaW4gPSAhISh2YWwgXHUwMDI2IEJUQ19CU0NCX0JUX0xOQUIwKSArXG4gXHRcdFx0ICAgICEhKHZhbCBcdTAwMjYgQlRDX0JTQ0JfQlRfTE5BQjEpICogMiArIDQ7XG4gXG4gXHQvKiBpZiByZmsgcnVuIDEtXHUwMDNlMCAqL1xuIFx0aWYgKGJ0LVx1MDAzZXJma19pbmZvLm1hcC5ydW4gXHUwMDI2XHUwMDI2ICEodmFsIFx1MDAyNiBCVENfQlNDQl9SRktfUlVOKSlcbi1cdFx0c3RhdHVzX2NoYW5nZSA9IHRydWU7XG4rXHRcdGJ0X2xpbmtfY2hhbmdlID0gdHJ1ZTtcbiBcbiBcdGJ0LVx1MDAzZXJma19pbmZvLm1hcC5ydW4gID0gISEodmFsIFx1MDAyNiBCVENfQlNDQl9SRktfUlVOKTtcbiBcdGJ0LVx1MDAzZXJma19pbmZvLm1hcC5yZXEgPSAhISh2YWwgXHUwMDI2IEJUQ19CU0NCX1JGS19SRVEpO1xuIFx0YnQtXHUwMDNlaGlfbG5hX3J4ID0gISEodmFsIFx1MDAyNiBCVENfQlNDQl9CVF9ISUxOQSk7XG4tXHRidC1cdTAwM2VsaW5rX2luZm8uc3RhdHVzLm1hcC5jb25uZWN0ID0gISEodmFsIFx1MDAyNiBCVENfQlNDQl9CVF9DT05ORUNUKTtcbi1cdGlmIChidC1cdTAwM2VydW5fcGF0Y2hfY29kZSAhPSAhISh2YWwgXHUwMDI2IEJUQ19CU0NCX1BBVENIX0NPREUpKVxuLVx0XHRzdGF0dXNfY2hhbmdlID0gdHJ1ZTtcbitcdGFueV9idF9jb25uZWN0ID0gISEodmFsIFx1MDAyNiBCVENfQlNDQl9CVF9DT05ORUNUKTtcbitcbitcdC8qIGlmIGNvbm5lY3QgY2hhbmdlICovXG4rXHRpZiAoYnQtXHUwMDNlbGlua19pbmZvLnN0YXR1cy5tYXAuY29ubmVjdCAhPSBhbnlfYnRfY29ubmVjdClcbitcdFx0YnRfbGlua19jaGFuZ2UgPSB0cnVlO1xuK1xuK1x0LyogaWYgc3BlY2lmaWMgcHJvZmlsZSBleGlzdCAqL1xuK1x0aWYgKCgoYnQtXHUwMDNlbGlua19pbmZvLmEyZHBfZGVzYy5leGlzdCB8fCBidC1cdTAwM2VsaW5rX2luZm8ucGFuX2Rlc2MuZXhpc3QgfHxcbitcdCAgICAgIGJ0LVx1MDAzZWxpbmtfaW5mby5oZnBfZGVzYy5leGlzdCkgXHUwMDI2XHUwMDI2IG1vZGUgPT0gQlRDX1dMSU5LXzJHX1NUQSkgfHxcbitcdCAgICBidC1cdTAwM2V3aHFsX3Rlc3QpXG4rXHRcdGxwc19jdHJsID0gdHJ1ZTtcbitcbitcdGlmIChkbS1cdTAwM2VscHNfY3RybF9zY2JkICE9IGxwc19jdHJsKSB7XG4rXHRcdGRtLVx1MDAzZWxwc19jdHJsX3NjYmQgPSBscHNfY3RybDtcbitcdFx0YnRfbGlua19jaGFuZ2UgPSB0cnVlO1xuK1x0XHRkbS1cdTAwM2VscHNfY3RybF9jaGFuZ2UgPSB0cnVlO1xuK1x0fSBlbHNlIHtcbitcdFx0ZG0tXHUwMDNlbHBzX2N0cmxfY2hhbmdlID0gZmFsc2U7XG4rXHR9XG4rXG4rXHRidC1cdTAwM2VsaW5rX2luZm8uc3RhdHVzLm1hcC5jb25uZWN0ID0gYW55X2J0X2Nvbm5lY3Q7XG4gXHRidC1cdTAwM2VydW5fcGF0Y2hfY29kZSA9ICEhKHZhbCBcdTAwMjYgQlRDX0JTQ0JfUEFUQ0hfQ09ERSk7XG4gXG4tXHRpZiAoIW9ubHlfdXBkYXRlIFx1MDAyNlx1MDAyNiBzdGF0dXNfY2hhbmdlKVxuLVx0XHRfcnVuX2NvZXgocnR3ZGV2LCBCVENfUlNOX1VQREFURV9CVF9TQ0JEKTtcbitcdGlmIChidF9saW5rX2NoYW5nZSkge1xuK1x0XHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19CVEMsXG4rXHRcdFx0ICAgIFwiW0JUQ10sICVzOiBidCBzdGF0dXMgY2hhbmdlISFcXG5cIiwgX19mdW5jX18pO1xuK1x0XHQvKiBUT0RPOiBOZWVkIHRvIG5vdGlmeSBkcml2ZXIgdG8gdXBkYXRlIEVYVC1DVFJMLUJULVNMT1QgKi9cbitcdH1cbiB9XG4gXG4gI2RlZmluZSBCVENfQlRJTkZPX1BXUl9MRU4gNVxuIHN0YXRpYyB2b2lkIF91cGRhdGVfYnRfdHhwd3JfaW5mbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4ICpidWYsIHUzMiBsZW4pXG4ge1xuLVx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFx1MDAyNnJ0d2Rldi1cdTAwM2VidGMuY3guYnQ7XG4rXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXHUwMDI2cnR3ZGV2LVx1MDAzZWJ0Yy5jeC5idDA7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2xpbmtfaW5mbyAqYiA9IFx1MDAyNmJ0LVx1MDAzZWxpbmtfaW5mbztcbiBcbiBcdGlmIChsZW4gIT0gQlRDX0JUSU5GT19QV1JfTEVOKVxuQEAgLTc0NzEsMTcgKzc2MzQsMTcgQEAgc3RhdGljIGJvb2wgX2Noa193bF9yZmtfcmVxdWVzdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4ge1xuIFx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXHUwMDI2cnR3ZGV2LVx1MDAzZWJ0YztcbiBcdHN0cnVjdCBydHc4OV9idGNfY3ggKmN4ID0gXHUwMDI2YnRjLVx1MDAzZWN4O1xuLVx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFx1MDAyNmN4LVx1MDAzZWJ0O1xuK1x0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFx1MDAyNmN4LVx1MDAzZWJ0MDtcbiBcbiBcdF91cGRhdGVfYnRfc2NiZChydHdkZXYsIHRydWUpO1xuIFxuLVx0Y3gtXHUwMDNlY250X3dsW0JUQ19XQ05UX1JGS19SRVFdKys7XG4rXHRjeC1cdTAwM2V3bC53Y250W0JUQ19XQ05UX1JGS19SRVFdKys7XG4gXG4gXHRpZiAoKGJ0LVx1MDAzZXJma19pbmZvLm1hcC5ydW4gfHwgYnQtXHUwMDNlcmZrX2luZm8ubWFwLnJlcSkgXHUwMDI2XHUwMDI2XG4gXHQgICAgIWJ0LVx1MDAzZXJma19pbmZvLm1hcC50aW1lb3V0KSB7XG4tXHRcdGN4LVx1MDAzZWNudF93bFtCVENfV0NOVF9SRktfUkVKRUNUXSsrO1xuK1x0XHRjeC1cdTAwM2V3bC53Y250W0JUQ19XQ05UX1JGS19SRUpFQ1RdKys7XG4gXHR9IGVsc2Uge1xuLVx0XHRjeC1cdTAwM2VjbnRfd2xbQlRDX1dDTlRfUkZLX0dPXSsrO1xuK1x0XHRjeC1cdTAwM2V3bC53Y250W0JUQ19XQ05UX1JGS19HT10rKztcbiBcdFx0cmV0dXJuIHRydWU7XG4gXHR9XG4gXHRyZXR1cm4gZmFsc2U7XG5AQCAtNzQ5NSw3ICs3NjU4LDcgQEAgdm9pZCBfcnVuX2NvZXgoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBlbnVtIGJ0Y19yZWFzb25fYW5kX2FjdGlvbiByZWFzb24pXG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX2RtICpkbSA9IFx1MDAyNnJ0d2Rldi1cdTAwM2VidGMuZG07XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX2N4ICpjeCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeDtcbiBcdHN0cnVjdCBydHc4OV9idGNfd2xfaW5mbyAqd2wgPSBcdTAwMjZidGMtXHUwMDNlY3gud2w7XG4tXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXHUwMDI2YnRjLVx1MDAzZWN4LmJ0O1xuK1x0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC5idDA7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX3JvbGVfaW5mbyAqd2xfcmluZm8gPSBcdTAwMjZ3bC1cdTAwM2Vyb2xlX2luZm87XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX3JvbGVfaW5mb192MSAqd2xfcmluZm9fdjEgPSBcdTAwMjZ3bC1cdTAwM2Vyb2xlX2luZm9fdjE7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX3JvbGVfaW5mb192MiAqd2xfcmluZm9fdjIgPSBcdTAwMjZ3bC1cdTAwM2Vyb2xlX2luZm9fdjI7XG5AQCAtNzU2MCw3ICs3NzIzLDggQEAgdm9pZCBfcnVuX2NvZXgoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBlbnVtIGJ0Y19yZWFzb25fYW5kX2FjdGlvbiByZWFzb24pXG4gXHR9XG4gXG4gXHRpZiAod2wtXHUwMDNlc3RhdHVzLm1hcC5yZl9vZmZfcHJlID09IHdsLVx1MDAzZXN0YXR1cy5tYXAucmZfb2ZmIFx1MDAyNlx1MDAyNlxuLVx0ICAgIHdsLVx1MDAzZXN0YXR1cy5tYXAubHBzX3ByZSA9PSB3bC1cdTAwM2VzdGF0dXMubWFwLmxwcykge1xuK1x0ICAgIHdsLVx1MDAzZXN0YXR1cy5tYXAubHBzX3ByZSA9PSB3bC1cdTAwM2VzdGF0dXMubWFwLmxwcyBcdTAwMjZcdTAwMjZcbitcdCAgICAhZG0tXHUwMDNlbHBzX2N0cmxfY2hhbmdlIFx1MDAyNlx1MDAyNiAhZG0tXHUwMDNlbHBzX2N0cmxfc2NiZCkge1xuIFx0XHRpZiAocmVhc29uID09IEJUQ19SU05fTlRGWV9QT1dFUk9GRiB8fFxuIFx0XHQgICAgcmVhc29uID09IEJUQ19SU05fTlRGWV9SQURJT19TVEFURSkge1xuIFx0XHRcdHJ0dzg5X2RlYnVnKHJ0d2RldiwgUlRXODlfREJHX0JUQyxcbkBAIC03NTc3LDYgKzc3NDEsOSBAQCB2b2lkIF9ydW5fY29leChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGVudW0gYnRjX3JlYXNvbl9hbmRfYWN0aW9uIHJlYXNvbilcbiBcdFx0fVxuIFx0fVxuIFxuK1x0aWYgKHJlYXNvbiA9PSBCVENfUlNOX05URllfSU5JVCB8fCByZWFzb24gPT0gQlRDX1JTTl9OVEZZX1JBRElPX1NUQVRFKVxuK1x0XHRfdXBkYXRlX2J0X3NjYmQocnR3ZGV2LCBmYWxzZSk7XG4rXG4gXHRkbS1cdTAwM2VmcmVlcnVuID0gZmFsc2U7XG4gXHRkbS1cdTAwM2VjbnRfZG1bQlRDX0RDTlRfUlVOXSsrO1xuIFx0ZG0tXHUwMDNlZmRkdF90cmFpbiA9IEJUQ19GRERUX0RJU0FCTEU7XG5AQCAtNzU5Nyw3ICs3NzY0LDcgQEAgdm9pZCBfcnVuX2NvZXgoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBlbnVtIGJ0Y19yZWFzb25fYW5kX2FjdGlvbiByZWFzb24pXG4gXHRcdGdvdG8gZXhpdDtcbiBcdH1cbiBcbi1cdGlmICh3bC1cdTAwM2VzdGF0dXMubWFwLnJmX29mZiB8fCB3bC1cdTAwM2VzdGF0dXMubWFwLmxwcyB8fCBkbS1cdTAwM2VidF9vbmx5KSB7XG4rXHRpZiAod2wtXHUwMDNlc3RhdHVzLm1hcC5yZl9vZmYgfHwgZG0tXHUwMDNlYnRfb25seSB8fCB3bC1cdTAwM2VzdGF0dXMubWFwLmxwcykge1xuIFx0XHRfYWN0aW9uX3dsX29mZihydHdkZXYsIG1vZGUpO1xuIFx0XHRpZ25vX2J0ID0gdHJ1ZTtcbiBcdFx0Z290byBleGl0O1xuQEAgLTc2MDgsMTIgKzc3NzUsMTIgQEAgdm9pZCBfcnVuX2NvZXgoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBlbnVtIGJ0Y19yZWFzb25fYW5kX2FjdGlvbiByZWFzb24pXG4gXHRcdGdvdG8gZXhpdDtcbiBcdH1cbiBcbi1cdGlmICghY3gtXHUwMDNlYnQuZW5hYmxlLm5vdyBcdTAwMjZcdTAwMjYgIWN4LVx1MDAzZW90aGVyLnR5cGUpIHtcbitcdGlmICghY3gtXHUwMDNlYnQwLmVuYWJsZS5ub3cgXHUwMDI2XHUwMDI2ICFjeC1cdTAwM2VidF9leHQuZnVuY190eXBlKSB7XG4gXHRcdF9hY3Rpb25fYnRfb2ZmKHJ0d2Rldik7XG4gXHRcdGdvdG8gZXhpdDtcbiBcdH1cbiBcbi1cdGlmIChjeC1cdTAwM2VidC53aHFsX3Rlc3QpIHtcbitcdGlmIChjeC1cdTAwM2VidDAud2hxbF90ZXN0KSB7XG4gXHRcdF9hY3Rpb25fYnRfd2hxbChydHdkZXYpO1xuIFx0XHRnb3RvIGV4aXQ7XG4gXHR9XG5AQCAtNzcyOSw3ICs3ODk2LDcgQEAgc3RhdGljIHZvaWQgX3NldF9pbml0X2luZm8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuIFx0XHRkbS1cdTAwM2Vpbml0X2luZm8uaW5pdF92Ny53bF9vbmx5ID0gKHU4KWRtLVx1MDAzZXdsX29ubHk7XG4gXHRcdGRtLVx1MDAzZWluaXRfaW5mby5pbml0X3Y3LmJ0X29ubHkgPSAodTgpZG0tXHUwMDNlYnRfb25seTtcbiBcdFx0ZG0tXHUwMDNlaW5pdF9pbmZvLmluaXRfdjcud2xfaW5pdF9vayA9ICh1OCl3bC1cdTAwM2VzdGF0dXMubWFwLmluaXRfb2s7XG4tXHRcdGRtLVx1MDAzZWluaXRfaW5mby5pbml0X3Y3LmN4X290aGVyID0gYnRjLVx1MDAzZWN4Lm90aGVyLnR5cGU7XG4rXHRcdGRtLVx1MDAzZWluaXRfaW5mby5pbml0X3Y3LmN4X290aGVyID0gYnRjLVx1MDAzZWN4LmJ0X2V4dC5mdW5jX3R5cGU7XG4gXHRcdGRtLVx1MDAzZWluaXRfaW5mby5pbml0X3Y3LndsX2d1YXJkX2NoID0gY2hpcC1cdTAwM2VhZmhfZ3VhcmRfY2g7XG4gXHRcdGRtLVx1MDAzZWluaXRfaW5mby5pbml0X3Y3Lm1vZHVsZSA9IGJ0Yy1cdTAwM2VtZGluZm8ubWRfdjc7XG4gXHR9IGVsc2Uge1xuQEAgLTc3MzcsNyArNzkwNCw3IEBAIHN0YXRpYyB2b2lkIF9zZXRfaW5pdF9pbmZvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbiBcdFx0ZG0tXHUwMDNlaW5pdF9pbmZvLmluaXQuYnRfb25seSA9ICh1OClkbS1cdTAwM2VidF9vbmx5O1xuIFx0XHRkbS1cdTAwM2Vpbml0X2luZm8uaW5pdC53bF9pbml0X29rID0gKHU4KXdsLVx1MDAzZXN0YXR1cy5tYXAuaW5pdF9vaztcbiBcdFx0ZG0tXHUwMDNlaW5pdF9pbmZvLmluaXQuZGJjY19lbiA9IHJ0d2Rldi1cdTAwM2VkYmNjX2VuO1xuLVx0XHRkbS1cdTAwM2Vpbml0X2luZm8uaW5pdC5jeF9vdGhlciA9IGJ0Yy1cdTAwM2VjeC5vdGhlci50eXBlO1xuK1x0XHRkbS1cdTAwM2Vpbml0X2luZm8uaW5pdC5jeF9vdGhlciA9IGJ0Yy1cdTAwM2VjeC5idF9leHQuZnVuY190eXBlO1xuIFx0XHRkbS1cdTAwM2Vpbml0X2luZm8uaW5pdC53bF9ndWFyZF9jaCA9IGNoaXAtXHUwMDNlYWZoX2d1YXJkX2NoO1xuIFx0XHRkbS1cdTAwM2Vpbml0X2luZm8uaW5pdC5tb2R1bGUgPSBidGMtXHUwMDNlbWRpbmZvLm1kO1xuIFx0fVxuQEAgLTc3ODEsNyArNzk0OCw2IEBAIHZvaWQgcnR3ODlfYnRjX250ZnlfaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IG1vZGUpXG4gXG4gXHRfd3JpdGVfc2NiZChydHdkZXYsXG4gXHRcdCAgICBCVENfV1NDQl9BQ1RJVkUgfCBCVENfV1NDQl9PTiB8IEJUQ19XU0NCX0JUTE9HLCB0cnVlKTtcbi1cdF91cGRhdGVfYnRfc2NiZChydHdkZXYsIHRydWUpO1xuIFx0aWYgKHJ0dzg5X21hY19nZXRfY3RybF9wYXRoKHJ0d2RldikpIHtcbiBcdFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQlRDLFxuIFx0XHRcdCAgICBcIltCVENdLCAlcygpOiBQVEEgb3duZXIgd2FybmluZyEhXFxuXCIsXG5AQCAtNzc5MCw3ICs3OTU2LDcgQEAgdm9pZCBydHc4OV9idGNfbnRmeV9pbml0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggbW9kZSlcbiBcdH1cbiBcbiBcdF9zZXRfaW5pdF9pbmZvKHJ0d2Rldik7XG4tXHRfc2V0X3dsX3R4X3Bvd2VyKHJ0d2RldiwgUlRXODlfQlRDX1dMX0RFRl9UWF9QV1IpO1xuK1x0X3NldF93bF90eF9wb3dlcihydHdkZXYsIFJUVzg5X0JUQ19XTF9ERUZfVFhfUFdSLCBSVFc4OV9QSFlfMCk7XG4gXHRidGNfZndfc2V0X21vbnJlZyhydHdkZXYpO1xuIFx0cnR3ODlfYnRjX2Z3X3NldF9zbG90cyhydHdkZXYpO1xuIFx0X2Z3X3NldF9kcnZfaW5mbyhydHdkZXYsIENYRFJWSU5GT19JTklUKTtcbkBAIC03ODc3LDcgKzgwNDMsNyBAQCB2b2lkIHJ0dzg5X2J0Y19udGZ5X3NwZWNpZmljX3BhY2tldChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4gXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcdTAwMjZydHdkZXYtXHUwMDNlYnRjO1xuIFx0c3RydWN0IHJ0dzg5X2J0Y19jeCAqY3ggPSBcdTAwMjZidGMtXHUwMDNlY3g7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX2luZm8gKndsID0gXHUwMDI2Y3gtXHUwMDNld2w7XG4tXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2xpbmtfaW5mbyAqYiA9IFx1MDAyNmN4LVx1MDAzZWJ0LmxpbmtfaW5mbztcbitcdHN0cnVjdCBydHc4OV9idGNfYnRfbGlua19pbmZvICpiID0gXHUwMDI2Y3gtXHUwMDNlYnQwLmxpbmtfaW5mbztcbiBcdHN0cnVjdCBydHc4OV9idGNfYnRfaGZwX2Rlc2MgKmhmcCA9IFx1MDAyNmItXHUwMDNlaGZwX2Rlc2M7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2hpZF9kZXNjICpoaWQgPSBcdTAwMjZiLVx1MDAzZWhpZF9kZXNjO1xuIFx0dTMyIGNudDtcbkBAIC03ODg2LDE0ICs4MDUyLDE0IEBAIHZvaWQgcnR3ODlfYnRjX250Znlfc3BlY2lmaWNfcGFja2V0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbiBcbiBcdHN3aXRjaCAocGt0X3R5cGUpIHtcbiBcdGNhc2UgUEFDS0VUX0RIQ1A6XG4tXHRcdGNudCA9ICsrY3gtXHUwMDNlY250X3dsW0JUQ19XQ05UX0RIQ1BdO1xuK1x0XHRjbnQgPSArK3dsLVx1MDAzZXdjbnRbQlRDX1dDTlRfREhDUF07XG4gXHRcdHJ0dzg5X2RlYnVnKHJ0d2RldiwgUlRXODlfREJHX0JUQyxcbiBcdFx0XHQgICAgXCJbQlRDXSwgJXMoKTogREhDUCBjbnQ9JWRcXG5cIiwgX19mdW5jX18sIGNudCk7XG4gXHRcdHdsLVx1MDAzZXN0YXR1cy5tYXAuY29ubmVjdGluZyA9IHRydWU7XG4gXHRcdGRlbGF5X3dvcmsgPSB0cnVlO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgUEFDS0VUX0VBUE9MOlxuLVx0XHRjbnQgPSArK2N4LVx1MDAzZWNudF93bFtCVENfV0NOVF9FQVBPTF07XG4rXHRcdGNudCA9ICsrd2wtXHUwMDNld2NudFtCVENfV0NOVF9FQVBPTF07XG4gXHRcdHJ0dzg5X2RlYnVnKHJ0d2RldiwgUlRXODlfREJHX0JUQyxcbiBcdFx0XHQgICAgXCJbQlRDXSwgJXMoKTogRUFQT0wgY250PSVkXFxuXCIsIF9fZnVuY19fLCBjbnQpO1xuIFx0XHR3bC1cdTAwM2VzdGF0dXMubWFwLl80d2F5ID0gdHJ1ZTtcbkBAIC03OTAyLDcgKzgwNjgsNyBAQCB2b2lkIHJ0dzg5X2J0Y19udGZ5X3NwZWNpZmljX3BhY2tldChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4gXHRcdFx0ZGVsYXkgLz0gMjtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIFBBQ0tFVF9FQVBPTF9FTkQ6XG4tXHRcdGNudCA9ICsrY3gtXHUwMDNlY250X3dsW0JUQ19XQ05UX0VBUE9MXTtcbitcdFx0Y250ID0gKyt3bC1cdTAwM2V3Y250W0JUQ19XQ05UX0VBUE9MXTtcbiBcdFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQlRDLFxuIFx0XHRcdCAgICBcIltCVENdLCAlcygpOiBFQVBPTF9FbmQgY250PSVkXFxuXCIsXG4gXHRcdFx0ICAgIF9fZnVuY19fLCBjbnQpO1xuQEAgLTc5MTAsNyArODA3Niw3IEBAIHZvaWQgcnR3ODlfYnRjX250Znlfc3BlY2lmaWNfcGFja2V0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbiBcdFx0d2lwaHlfZGVsYXllZF93b3JrX2NhbmNlbChydHdkZXYtXHUwMDNlaHctXHUwMDNld2lwaHksIFx1MDAyNnJ0d2Rldi1cdTAwM2Vjb2V4X2FjdDFfd29yayk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBQQUNLRVRfQVJQOlxuLVx0XHRjbnQgPSArK2N4LVx1MDAzZWNudF93bFtCVENfV0NOVF9BUlBdO1xuK1x0XHRjbnQgPSArK3dsLVx1MDAzZXdjbnRbQlRDX1dDTlRfQVJQXTtcbiBcdFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQlRDLFxuIFx0XHRcdCAgICBcIltCVENdLCAlcygpOiBBUlAgY250PSVkXFxuXCIsIF9fZnVuY19fLCBjbnQpO1xuIFx0XHRyZXR1cm47XG5AQCAtNzk4Miw3ICs4MTQ4LDcgQEAgc3RhdGljIHU4IF91cGRhdGVfYnRfcnNzaV9sZXZlbChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHJzc2kpXG4ge1xuIFx0Y29uc3Qgc3RydWN0IHJ0dzg5X2NoaXBfaW5mbyAqY2hpcCA9IHJ0d2Rldi1cdTAwM2VjaGlwO1xuIFx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXHUwMDI2cnR3ZGV2LVx1MDAzZWJ0Yztcbi1cdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcdTAwMjZidGMtXHUwMDNlY3guYnQ7XG4rXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXHUwMDI2YnRjLVx1MDAzZWN4LmJ0MDtcbiBcdHU4ICpyc3NpX3N0LCByc3NpX3RoLCByc3NpX2xldmVsID0gMDtcbiBcdHU4IGk7XG4gXG5AQCAtODAzMiw3ICs4MTk4LDcgQEAgc3RhdGljIHZvaWQgX3VwZGF0ZV9idF9pbmZvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggKmJ1ZiwgdTMyIGxlbilcbiBcdGNvbnN0IHN0cnVjdCBydHc4OV9jaGlwX2luZm8gKmNoaXAgPSBydHdkZXYtXHUwMDNlY2hpcDtcbiBcdHN0cnVjdCBydHc4OV9idGMgKmJ0YyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2VidGM7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX2N4ICpjeCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeDtcbi1cdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcdTAwMjZjeC1cdTAwM2VidDtcbitcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcdTAwMjZjeC1cdTAwM2VidDA7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2xpbmtfaW5mbyAqYiA9IFx1MDAyNmJ0LVx1MDAzZWxpbmtfaW5mbztcbiBcdHN0cnVjdCBydHc4OV9idGNfYnRfaGZwX2Rlc2MgKmhmcCA9IFx1MDAyNmItXHUwMDNlaGZwX2Rlc2M7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2hpZF9kZXNjICpoaWQgPSBcdTAwMjZiLVx1MDAzZWhpZF9kZXNjO1xuQEAgLTgwNDcsNyArODIxMyw3IEBAIHN0YXRpYyB2b2lkIF91cGRhdGVfYnRfaW5mbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4ICpidWYsIHUzMiBsZW4pXG4gXHRcdHJ0dzg5X2RlYnVnKHJ0d2RldiwgUlRXODlfREJHX0JUQyxcbiBcdFx0XHQgICAgXCJbQlRDXSwgJXMoKTogcmV0dXJuIGJ5IGJ0LWluZm8gZHVwbGljYXRlISFcXG5cIixcbiBcdFx0XHQgICAgX19mdW5jX18pO1xuLVx0XHRjeC1cdTAwM2VjbnRfYnRbQlRDX0JDTlRfSU5GT1NBTUVdKys7XG4rXHRcdGJ0LVx1MDAzZWJjbnRbQlRDX0JDTlRfSU5GT1NBTUVdKys7XG4gXHRcdHJldHVybjtcbiBcdH1cbiBcbkBAIC04MDY4LDcgKzgyMzQsNyBAQCBzdGF0aWMgdm9pZCBfdXBkYXRlX2J0X2luZm8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCAqYnVmLCB1MzIgbGVuKVxuIFx0Yi1cdTAwM2VzdGF0dXMubWFwLmFjbF9idXN5ID0gYnRpbmZvLmxiMi5hY2xfYnVzeTtcbiBcdGItXHUwMDNlc3RhdHVzLm1hcC5pbnFfcGFnID0gYnRpbmZvLmxiMi5pbnFfcGFnO1xuIFx0YnQtXHUwMDNlaW5xX3BhZy5ub3cgPSBidGluZm8ubGIyLmlucV9wYWc7XG4tXHRjeC1cdTAwM2VjbnRfYnRbQlRDX0JDTlRfSU5RUEFHXSArPSAhIShidC1cdTAwM2VpbnFfcGFnLm5vdyBcdTAwMjZcdTAwMjYgIWJ0LVx1MDAzZWlucV9wYWcubGFzdCk7XG4rXHRidC1cdTAwM2ViY250W0JUQ19CQ05UX0lOUVBBR10gKz0gISEoYnQtXHUwMDNlaW5xX3BhZy5ub3cgXHUwMDI2XHUwMDI2ICFidC1cdTAwM2VpbnFfcGFnLmxhc3QpO1xuIFxuIFx0aGZwLVx1MDAzZWV4aXN0ID0gYnRpbmZvLmxiMi5oZnA7XG4gXHRiLVx1MDAzZXByb2ZpbGVfY250Lm5vdyArPSAodTgpaGZwLVx1MDAzZWV4aXN0O1xuQEAgLTgwODMsMTEgKzgyNDksMTEgQEAgc3RhdGljIHZvaWQgX3VwZGF0ZV9idF9pbmZvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggKmJ1ZiwgdTMyIGxlbilcbiBcdC8qIHBhcnNlIHJhdyBpbmZvIGxvdy1CeXRlMyAqL1xuIFx0YnRpbmZvLnZhbCA9IGJ0LVx1MDAzZXJhd19pbmZvW0JUQ19CVElORk9fTDNdO1xuIFx0aWYgKGJ0aW5mby5sYjMucmV0cnkgIT0gMClcbi1cdFx0Y3gtXHUwMDNlY250X2J0W0JUQ19CQ05UX1JFVFJZXSsrO1xuK1x0XHRidC1cdTAwM2ViY250W0JUQ19CQ05UX1JFVFJZXSsrO1xuIFx0Yi1cdTAwM2VjcWRkciA9IGJ0aW5mby5sYjMuY3FkZHI7XG4tXHRjeC1cdTAwM2VjbnRfYnRbQlRDX0JDTlRfSU5RXSArPSAhIShidGluZm8ubGIzLmlucSBcdTAwMjZcdTAwMjYgIWJ0LVx1MDAzZWlucSk7XG4rXHRidC1cdTAwM2ViY250W0JUQ19CQ05UX0lOUV0gKz0gISEoYnRpbmZvLmxiMy5pbnEgXHUwMDI2XHUwMDI2ICFidC1cdTAwM2VpbnEpO1xuIFx0YnQtXHUwMDNlaW5xID0gYnRpbmZvLmxiMy5pbnE7XG4tXHRjeC1cdTAwM2VjbnRfYnRbQlRDX0JDTlRfUEFHRV0gKz0gISEoYnRpbmZvLmxiMy5wYWcgXHUwMDI2XHUwMDI2ICFidC1cdTAwM2VwYWcpO1xuK1x0YnQtXHUwMDNlYmNudFtCVENfQkNOVF9QQUdFXSArPSAhIShidGluZm8ubGIzLnBhZyBcdTAwMjZcdTAwMjYgIWJ0LVx1MDAzZXBhZyk7XG4gXHRidC1cdTAwM2VwYWcgPSBidGluZm8ubGIzLnBhZztcbiBcbiBcdGItXHUwMDNlc3RhdHVzLm1hcC5tZXNoX2J1c3kgPSBidGluZm8ubGIzLm1lc2hfYnVzeTtcbkBAIC04MTEwLDExICs4Mjc2LDExIEBAIHN0YXRpYyB2b2lkIF91cGRhdGVfYnRfaW5mbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4ICpidWYsIHUzMiBsZW4pXG4gXHRcdFx0aGlkLVx1MDAzZXR5cGUgfD0gQlRDX0hJRF9SQ1U7XG4gXHR9XG4gXG4tXHRjeC1cdTAwM2VjbnRfYnRbQlRDX0JDTlRfUkVJTklUXSArPSAhIShidGluZm8uaGIxLnJlaW5pdCBcdTAwMjZcdTAwMjYgIWJ0LVx1MDAzZXJlaW5pdCk7XG4rXHRidC1cdTAwM2ViY250W0JUQ19CQ05UX1JFSU5JVF0gKz0gISEoYnRpbmZvLmhiMS5yZWluaXQgXHUwMDI2XHUwMDI2ICFidC1cdTAwM2VyZWluaXQpO1xuIFx0YnQtXHUwMDNlcmVpbml0ID0gYnRpbmZvLmhiMS5yZWluaXQ7XG4tXHRjeC1cdTAwM2VjbnRfYnRbQlRDX0JDTlRfUkVMSU5LXSArPSAhIShidGluZm8uaGIxLnJlbGluayBcdTAwMjZcdTAwMjYgIWItXHUwMDNlcmVsaW5rLm5vdyk7XG4rXHRidC1cdTAwM2ViY250W0JUQ19CQ05UX1JFTElOS10gKz0gISEoYnRpbmZvLmhiMS5yZWxpbmsgXHUwMDI2XHUwMDI2ICFiLVx1MDAzZXJlbGluay5ub3cpO1xuIFx0Yi1cdTAwM2VyZWxpbmsubm93ID0gYnRpbmZvLmhiMS5yZWxpbms7XG4tXHRjeC1cdTAwM2VjbnRfYnRbQlRDX0JDTlRfSUdOT1dMXSArPSAhIShidGluZm8uaGIxLmlnbm9fd2wgXHUwMDI2XHUwMDI2ICFidC1cdTAwM2VpZ25vX3dsKTtcbitcdGJ0LVx1MDAzZWJjbnRbQlRDX0JDTlRfSUdOT1dMXSArPSAhIShidGluZm8uaGIxLmlnbm9fd2wgXHUwMDI2XHUwMDI2ICFidC1cdTAwM2VpZ25vX3dsKTtcbiBcdGJ0LVx1MDAzZWlnbm9fd2wgPSBidGluZm8uaGIxLmlnbm9fd2w7XG4gXG4gXHRpZiAoYnQtXHUwMDNlaWdub193bCBcdTAwMjZcdTAwMjYgIWN4LVx1MDAzZXdsLnN0YXR1cy5tYXAucmZfb2ZmKVxuQEAgLTgxMjIsNyArODI4OCw3IEBAIHN0YXRpYyB2b2lkIF91cGRhdGVfYnRfaW5mbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4ICpidWYsIHUzMiBsZW4pXG4gXG4gXHRidC1cdTAwM2VibGVfc2Nhbl9lbiA9IGJ0aW5mby5oYjEuYmxlX3NjYW47XG4gXG4tXHRjeC1cdTAwM2VjbnRfYnRbQlRDX0JDTlRfUk9MRVNXXSArPSAhIShidGluZm8uaGIxLnJvbGVfc3cgXHUwMDI2XHUwMDI2ICFiLVx1MDAzZXJvbGVfc3cpO1xuK1x0YnQtXHUwMDNlYmNudFtCVENfQkNOVF9ST0xFU1ddICs9ICEhKGJ0aW5mby5oYjEucm9sZV9zdyBcdTAwMjZcdTAwMjYgIWItXHUwMDNlcm9sZV9zdyk7XG4gXHRiLVx1MDAzZXJvbGVfc3cgPSBidGluZm8uaGIxLnJvbGVfc3c7XG4gXG4gXHRiLVx1MDAzZW11bHRpX2xpbmsubm93ID0gYnRpbmZvLmhiMS5tdWx0aV9saW5rO1xuQEAgLTgxMzEsNyArODI5Nyw3IEBAIHN0YXRpYyB2b2lkIF91cGRhdGVfYnRfaW5mbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4ICpidWYsIHUzMiBsZW4pXG4gXHRidGluZm8udmFsID0gYnQtXHUwMDNlcmF3X2luZm9bQlRDX0JUSU5GT19IMl07XG4gXHRwYW4tXHUwMDNlYWN0aXZlID0gISFidGluZm8uaGIyLnBhbl9hY3RpdmU7XG4gXG4tXHRjeC1cdTAwM2VjbnRfYnRbQlRDX0JDTlRfQUZIXSArPSAhIShidGluZm8uaGIyLmFmaF91cGRhdGUgXHUwMDI2XHUwMDI2ICFiLVx1MDAzZWFmaF91cGRhdGUpO1xuK1x0YnQtXHUwMDNlYmNudFtCVENfQkNOVF9BRkhdICs9ICEhKGJ0aW5mby5oYjIuYWZoX3VwZGF0ZSBcdTAwMjZcdTAwMjYgIWItXHUwMDNlYWZoX3VwZGF0ZSk7XG4gXHRiLVx1MDAzZWFmaF91cGRhdGUgPSBidGluZm8uaGIyLmFmaF91cGRhdGU7XG4gXHRhMmRwLVx1MDAzZWFjdGl2ZSA9IGJ0aW5mby5oYjIuYTJkcF9hY3RpdmU7XG4gXHRiLVx1MDAzZXNsYXZlX3JvbGUgPSBidGluZm8uaGIyLnNsYXZlO1xuQEAgLTgxNDUsNyArODMxMSw3IEBAIHN0YXRpYyB2b2lkIF91cGRhdGVfYnRfaW5mbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4ICpidWYsIHUzMiBsZW4pXG4gXHRhMmRwLVx1MDAzZWJpdHBvb2wgPSBidGluZm8uaGIzLmEyZHBfYml0cG9vbDtcbiBcbiBcdGlmIChiLVx1MDAzZXR4XzNtICE9ICh1MzIpYnRpbmZvLmhiMy50eF8zbSlcbi1cdFx0Y3gtXHUwMDNlY250X2J0W0JUQ19CQ05UX1JBVEVDSEddKys7XG4rXHRcdGJ0LVx1MDAzZWJjbnRbQlRDX0JDTlRfUkFURUNIR10rKztcbiBcdGItXHUwMDNldHhfM20gPSAodTMyKWJ0aW5mby5oYjMudHhfM207XG4gXG4gXHRhMmRwLVx1MDAzZXNpbmsgPSBidGluZm8uaGIzLmEyZHBfc2luaztcbkBAIC04MzM5LDcgKzg1MDUsNiBAQCB2b2lkIHJ0dzg5X2J0Y19udGZ5X3JhZGlvX3N0YXRlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgZW51bSBidGNfcmZjdHJsIHJmX3N0YVxuIFx0XHRydHc4OV9idGNfZndfZW5fcnB0KHJ0d2RldiwgUlBUX0VOX01SRUcsIHRydWUpO1xuIFx0XHR2YWwgPSBCVENfV1NDQl9BQ1RJVkUgfCBCVENfV1NDQl9PTiB8IEJUQ19XU0NCX0JUTE9HO1xuIFx0XHRfd3JpdGVfc2NiZChydHdkZXYsIHZhbCwgdHJ1ZSk7XG4tXHRcdF91cGRhdGVfYnRfc2NiZChydHdkZXYsIHRydWUpO1xuIFx0XHRjaGlwLVx1MDAzZW9wcy1cdTAwM2VidGNfaW5pdF9jZmcocnR3ZGV2KTtcbiBcdH0gZWxzZSB7XG4gXHRcdHJ0dzg5X2J0Y19md19lbl9ycHQocnR3ZGV2LCBSUFRfRU5fQUxMLCBmYWxzZSk7XG5AQCAtODM0OSwxMCArODUxNCw2IEBAIHZvaWQgcnR3ODlfYnRjX250ZnlfcmFkaW9fc3RhdGUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBlbnVtIGJ0Y19yZmN0cmwgcmZfc3RhXG4gXHRcdFx0X3dyaXRlX3NjYmQocnR3ZGV2LCBCVENfV1NDQl9BTEwsIGZhbHNlKTtcbiBcdFx0ZWxzZVxuIFx0XHRcdF93cml0ZV9zY2JkKHJ0d2RldiwgQlRDX1dTQ0JfQUNUSVZFLCBmYWxzZSk7XG4tXG4tXHRcdGlmIChyZl9zdGF0ZSA9PSBCVENfUkZDVFJMX0xQU19XTF9PTiBcdTAwMjZcdTAwMjZcbi1cdFx0ICAgIHdsLVx1MDAzZXN0YXR1cy5tYXAubHBzX3ByZSAhPSBCVENfTFBTX09GRilcbi1cdFx0XHRfdXBkYXRlX2J0X3NjYmQocnR3ZGV2LCB0cnVlKTtcbiBcdH1cbiBcbiBcdGJ0Yy1cdTAwM2VkbS5jbnRfZG1bQlRDX0RDTlRfQlRDTlRfSEFOR10gPSAwO1xuQEAgLTg3MDUsNyArODg2Niw3IEBAIHN0YXRpYyB1OCBydHc4OV9idGNfYzJoX2dldF9pbmRleF9ieV92ZXIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCBmdW5jKVxuIFx0XHRcdHJldHVybiBCVEZfRVZOVF9CVUZfT1ZFUkZMT1c7XG4gXHRcdGVsc2UgaWYgKHZlci1cdTAwM2Vmd2MyaGZ1bmMgPT0gMilcbiBcdFx0XHRyZXR1cm4gZnVuYztcbi1cdFx0ZWxzZSBpZiAodmVyLVx1MDAzZWZ3YzJoZnVuYyA9PSAzKVxuK1x0XHRlbHNlIGlmICh2ZXItXHUwMDNlZndjMmhmdW5jID09IDMgfHwgdmVyLVx1MDAzZWZ3YzJoZnVuYyA9PSA0KVxuIFx0XHRcdHJldHVybiBCVEZfRVZOVF9CVUZfT1ZFUkZMT1c7XG4gXHRcdGVsc2VcbiBcdFx0XHRyZXR1cm4gQlRGX0VWTlRfTUFYO1xuQEAgLTg3MTYsMTkgKzg4NzcsMjYgQEAgc3RhdGljIHU4IHJ0dzg5X2J0Y19jMmhfZ2V0X2luZGV4X2J5X3ZlcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IGZ1bmMpXG4gXHRcdFx0cmV0dXJuIEJURl9FVk5UX0MySF9MT09QQkFDSztcbiBcdFx0ZWxzZSBpZiAodmVyLVx1MDAzZWZ3YzJoZnVuYyA9PSAyKVxuIFx0XHRcdHJldHVybiBmdW5jO1xuLVx0XHRlbHNlIGlmICh2ZXItXHUwMDNlZndjMmhmdW5jID09IDMpXG4rXHRcdGVsc2UgaWYgKHZlci1cdTAwM2Vmd2MyaGZ1bmMgPT0gMyB8fCB2ZXItXHUwMDNlZndjMmhmdW5jID09IDQpXG4gXHRcdFx0cmV0dXJuIEJURl9FVk5UX0MySF9MT09QQkFDSztcbiBcdFx0ZWxzZVxuIFx0XHRcdHJldHVybiBCVEZfRVZOVF9NQVg7XG4gXHRjYXNlIEJURl9FVk5UX0MySF9MT09QQkFDSzpcbiBcdFx0aWYgKHZlci1cdTAwM2Vmd2MyaGZ1bmMgPT0gMilcbiBcdFx0XHRyZXR1cm4gZnVuYztcbi1cdFx0ZWxzZSBpZiAodmVyLVx1MDAzZWZ3YzJoZnVuYyA9PSAzKVxuK1x0XHRlbHNlIGlmICh2ZXItXHUwMDNlZndjMmhmdW5jID09IDMgfHwgdmVyLVx1MDAzZWZ3YzJoZnVuYyA9PSA0KVxuIFx0XHRcdHJldHVybiBCVEZfRVZOVF9CVF9MRUFVRElPX0lORk87XG4gXHRcdGVsc2VcbiBcdFx0XHRyZXR1cm4gQlRGX0VWTlRfTUFYO1xuIFx0Y2FzZSBCVEZfRVZOVF9CVF9RVUVSWV9UWFBXUjpcbi1cdFx0aWYgKHZlci1cdTAwM2Vmd2MyaGZ1bmMgPT0gMylcbitcdFx0aWYgKHZlci1cdTAwM2Vmd2MyaGZ1bmMgPT0gMyB8fCB2ZXItXHUwMDNlZndjMmhmdW5jID09IDQpXG4rXHRcdFx0cmV0dXJuIGZ1bmM7XG4rXHRcdGVsc2VcbitcdFx0XHRyZXR1cm4gQlRGX0VWTlRfTUFYO1xuK1x0Y2FzZSBCVEZfRVZOVF9aQl9JTkZPOlxuK1x0Y2FzZSBCVEZfRVZOVF9aQl9DSDpcbitcdGNhc2UgQlRGX0VWTlRfWkJfUVVFUllfVFhQV1I6XG4rXHRcdGlmICh2ZXItXHUwMDNlZndjMmhmdW5jID09IDQpXG4gXHRcdFx0cmV0dXJuIGZ1bmM7XG4gXHRcdGVsc2VcbiBcdFx0XHRyZXR1cm4gQlRGX0VWTlRfTUFYO1xuQEAgLTg3NDIsNiArODkxMCw3IEBAIHZvaWQgcnR3ODlfYnRjX2MyaF9oYW5kbGUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRcdCAgdTMyIGxlbiwgdTggY2xhc3MsIHU4IGZ1bmMpXG4ge1xuIFx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXHUwMDI2cnR3ZGV2LVx1MDAzZWJ0YztcbitcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcdTAwMjZydHdkZXYtXHUwMDNlYnRjLmN4LmJ0MDtcbiBcdHN0cnVjdCBydHc4OV9idGNfYnRmX2Z3aW5mbyAqcGZ3aW5mbyA9IFx1MDAyNmJ0Yy1cdTAwM2Vmd2luZm87XG4gXHR1OCAqYnVmID0gXHUwMDI2c2tiLVx1MDAzZWRhdGFbUlRXODlfQzJIX0hFQURFUl9MRU5dO1xuIFxuQEAgLTg3NjksMTMgKzg5MzgsMTMgQEAgdm9pZCBydHc4OV9idGNfYzJoX2hhbmRsZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRjYXNlIEJURl9FVk5UX0JUX0lORk86XG4gXHRcdHJ0dzg5X2RlYnVnKHJ0d2RldiwgUlRXODlfREJHX0JUQyxcbiBcdFx0XHQgICAgXCJbQlRDXSwgaGFuZGxlIEMySCBCVCBJTkZPIHdpdGggZGF0YSAlOHBoXFxuXCIsIGJ1Zik7XG4tXHRcdGJ0Yy1cdTAwM2VjeC5jbnRfYnRbQlRDX0JDTlRfSU5GT1VQREFURV0rKztcbitcdFx0YnQtXHUwMDNlYmNudFtCVENfQkNOVF9JTkZPVVBEQVRFXSsrO1xuIFx0XHRfdXBkYXRlX2J0X2luZm8ocnR3ZGV2LCBidWYsIGxlbik7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCVEZfRVZOVF9CVF9TQ0JEOlxuIFx0XHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19CVEMsXG4gXHRcdFx0ICAgIFwiW0JUQ10sIGhhbmRsZSBDMkggQlQgU0NCRCB3aXRoIGRhdGEgJThwaFxcblwiLCBidWYpO1xuLVx0XHRidGMtXHUwMDNlY3guY250X2J0W0JUQ19CQ05UX1NDQkRVUERBVEVdKys7XG4rXHRcdGJ0LVx1MDAzZWJjbnRbQlRDX0JDTlRfU0NCRFVQREFURV0rKztcbiBcdFx0X3VwZGF0ZV9idF9zY2JkKHJ0d2RldiwgZmFsc2UpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgQlRGX0VWTlRfQlRfUFNEOlxuQEAgLTg3OTMsNyArODk2Miw3IEBAIHZvaWQgcnR3ODlfYnRjX2MyaF9oYW5kbGUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRidGMtXHUwMDNlZG0uY250X2RtW0JUQ19EQ05UX0NYX1JVTklORk9dKys7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCVEZfRVZOVF9CVF9RVUVSWV9UWFBXUjpcbi1cdFx0YnRjLVx1MDAzZWN4LmNudF9idFtCVENfQkNOVF9CVFRYUFdSX1VQREFURV0rKztcbitcdFx0YnQtXHUwMDNlYmNudFtCVENfQkNOVF9CVFRYUFdSX1VQREFURV0rKztcbiBcdFx0X3VwZGF0ZV9idF90eHB3cl9pbmZvKHJ0d2RldiwgYnVmLCBsZW4pO1xuIFx0fVxuIH1cbkBAIC04ODA4LDcgKzg5NzcsNyBAQCBzdGF0aWMgaW50IF9zaG93X2N4X2luZm8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBjaGFyICpidWYsIHNpemVfdCBidWZzeilcbiBcdHN0cnVjdCBydHc4OV9oYWwgKmhhbCA9IFx1MDAyNnJ0d2Rldi1cdTAwM2VoYWw7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcdTAwMjZydHdkZXYtXHUwMDNlYnRjO1xuIFx0c3RydWN0IHJ0dzg5X2J0Y19kbSAqZG0gPSBcdTAwMjZidGMtXHUwMDNlZG07XG4tXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXHUwMDI2YnRjLVx1MDAzZWN4LmJ0O1xuK1x0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC5idDA7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX2luZm8gKndsID0gXHUwMDI2YnRjLVx1MDAzZWN4LndsO1xuIFx0dTMyIHZlcl9tYWluID0gMCwgdmVyX3N1YiA9IDAsIHZlcl9ob3RmaXggPSAwLCBpZF9icmFuY2ggPSAwO1xuIFx0dTggY3YsIHJmZSwgaXNvLCBhbnRfbnVtLCBhbnRfc2luZ2xlX3BvcztcbkBAIC04ODg1LDcgKzkwNTQsNyBAQCBzdGF0aWMgaW50IF9zaG93X2N4X2luZm8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBjaGFyICpidWYsIHNpemVfdCBidWZzeilcbiBcbiBcdHAgKz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsXG4gXHRcdCAgICAgICBcIjNyZF9jb2V4OiVkLCBkYmNjOiVkLCB0eF9udW06JWQsIHJ4X251bTolZFxcblwiLFxuLVx0XHQgICAgICAgYnRjLVx1MDAzZWN4Lm90aGVyLnR5cGUsIHJ0d2Rldi1cdTAwM2VkYmNjX2VuLCBoYWwtXHUwMDNldHhfbnNzLFxuK1x0XHQgICAgICAgYnRjLVx1MDAzZWN4LmJ0X2V4dC5mdW5jX3R5cGUsIHJ0d2Rldi1cdTAwM2VkYmNjX2VuLCBoYWwtXHUwMDNldHhfbnNzLFxuIFx0XHQgICAgICAgaGFsLVx1MDAzZXJ4X25zcyk7XG4gXG4gXHRyZXR1cm4gcCAtIGJ1ZjtcbkBAIC05MDA3LDcgKzkxNzYsNyBAQCBlbnVtIGJ0Y19idF9hMmRwX3R5cGUge1xuIHN0YXRpYyBpbnQgX3Nob3dfYnRfcHJvZmlsZV9pbmZvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY2hhciAqYnVmLCBzaXplX3QgYnVmc3opXG4ge1xuIFx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXHUwMDI2cnR3ZGV2LVx1MDAzZWJ0Yztcbi1cdHN0cnVjdCBydHc4OV9idGNfYnRfbGlua19pbmZvICpidF9saW5mbyA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC5idC5saW5rX2luZm87XG4rXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2xpbmtfaW5mbyAqYnRfbGluZm8gPSBcdTAwMjZidGMtXHUwMDNlY3guYnQwLmxpbmtfaW5mbztcbiBcdHN0cnVjdCBydHc4OV9idGNfYnRfaGZwX2Rlc2MgaGZwID0gYnRfbGluZm8tXHUwMDNlaGZwX2Rlc2M7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2hpZF9kZXNjIGhpZCA9IGJ0X2xpbmZvLVx1MDAzZWhpZF9kZXNjO1xuIFx0c3RydWN0IHJ0dzg5X2J0Y19idF9hMmRwX2Rlc2MgYTJkcCA9IGJ0X2xpbmZvLVx1MDAzZWEyZHBfZGVzYztcbkBAIC05MDY1LDcgKzkyMzQsNyBAQCBzdGF0aWMgaW50IF9zaG93X2J0X2luZm8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBjaGFyICpidWYsIHNpemVfdCBidWZzeilcbiBcdHN0cnVjdCBydHc4OV9idGMgKmJ0YyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2VidGM7XG4gXHRjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3ZlciAqdmVyID0gYnRjLVx1MDAzZXZlcjtcbiBcdHN0cnVjdCBydHc4OV9idGNfY3ggKmN4ID0gXHUwMDI2YnRjLVx1MDAzZWN4O1xuLVx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFx1MDAyNmN4LVx1MDAzZWJ0O1xuK1x0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFx1MDAyNmN4LVx1MDAzZWJ0MDtcbiBcdHN0cnVjdCBydHc4OV9idGNfd2xfaW5mbyAqd2wgPSBcdTAwMjZjeC1cdTAwM2V3bDtcbiBcdHUzMiB2ZXJfbWFpbiA9IEZJRUxEX0dFVChHRU5NQVNLKDMxLCAyNCksIHdsLVx1MDAzZXZlcl9pbmZvLmZ3X2NvZXgpO1xuIFx0c3RydWN0IHJ0dzg5X2J0Y19idF9saW5rX2luZm8gKmJ0X2xpbmZvID0gXHUwMDI2YnQtXHUwMDNlbGlua19pbmZvO1xuQEAgLTkxNDQsMTcgKzkzMTMsMTcgQEAgc3RhdGljIGludCBfc2hvd19idF9pbmZvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY2hhciAqYnVmLCBzaXplX3QgYnVmc3opXG4gXG4gXHRwICs9IHNjbnByaW50ZihwLCBlbmQgLSBwLFxuIFx0XHQgICAgICAgXCIgJS0xNXMgOiByZXRyeTolZCwgcmVsaW5rOiVkLCByYXRlX2NoZzolZCwgcmVpbml0OiVkLCByZWVuYWJsZTolZCwgXCIsXG4tXHRcdCAgICAgICBcIltzdGF0X2NudF1cIiwgY3gtXHUwMDNlY250X2J0W0JUQ19CQ05UX1JFVFJZXSxcbi1cdFx0ICAgICAgIGN4LVx1MDAzZWNudF9idFtCVENfQkNOVF9SRUxJTktdLFxuLVx0XHQgICAgICAgY3gtXHUwMDNlY250X2J0W0JUQ19CQ05UX1JBVEVDSEddLFxuLVx0XHQgICAgICAgY3gtXHUwMDNlY250X2J0W0JUQ19CQ05UX1JFSU5JVF0sXG4tXHRcdCAgICAgICBjeC1cdTAwM2VjbnRfYnRbQlRDX0JDTlRfUkVFTkFCTEVdKTtcbitcdFx0ICAgICAgIFwiW3N0YXRfY250XVwiLCBidC1cdTAwM2ViY250W0JUQ19CQ05UX1JFVFJZXSxcbitcdFx0ICAgICAgIGJ0LVx1MDAzZWJjbnRbQlRDX0JDTlRfUkVMSU5LXSxcbitcdFx0ICAgICAgIGJ0LVx1MDAzZWJjbnRbQlRDX0JDTlRfUkFURUNIR10sXG4rXHRcdCAgICAgICBidC1cdTAwM2ViY250W0JUQ19CQ05UX1JFSU5JVF0sXG4rXHRcdCAgICAgICBidC1cdTAwM2ViY250W0JUQ19CQ05UX1JFRU5BQkxFXSk7XG4gXG4gXHRwICs9IHNjbnByaW50ZihwLCBlbmQgLSBwLFxuIFx0XHQgICAgICAgXCJyb2xlLXN3aXRjaDolZCwgYWZoOiVkLCBpbnFfcGFnZTolZChpbnE6JWQvcGFnZTolZCksIGlnbm9fd2w6JWRcXG5cIixcbi1cdFx0ICAgICAgIGN4LVx1MDAzZWNudF9idFtCVENfQkNOVF9ST0xFU1ddLCBjeC1cdTAwM2VjbnRfYnRbQlRDX0JDTlRfQUZIXSxcbi1cdFx0ICAgICAgIGN4LVx1MDAzZWNudF9idFtCVENfQkNOVF9JTlFQQUddLCBjeC1cdTAwM2VjbnRfYnRbQlRDX0JDTlRfSU5RXSxcbi1cdFx0ICAgICAgIGN4LVx1MDAzZWNudF9idFtCVENfQkNOVF9QQUdFXSwgY3gtXHUwMDNlY250X2J0W0JUQ19CQ05UX0lHTk9XTF0pO1xuK1x0XHQgICAgICAgYnQtXHUwMDNlYmNudFtCVENfQkNOVF9ST0xFU1ddLCBidC1cdTAwM2ViY250W0JUQ19CQ05UX0FGSF0sXG4rXHRcdCAgICAgICBidC1cdTAwM2ViY250W0JUQ19CQ05UX0lOUVBBR10sIGJ0LVx1MDAzZWJjbnRbQlRDX0JDTlRfSU5RXSxcbitcdFx0ICAgICAgIGJ0LVx1MDAzZWJjbnRbQlRDX0JDTlRfUEFHRV0sIGJ0LVx1MDAzZWJjbnRbQlRDX0JDTlRfSUdOT1dMXSk7XG4gXG4gXHRwICs9IF9zaG93X2J0X3Byb2ZpbGVfaW5mbyhydHdkZXYsIHAsIGVuZCAtIHApO1xuIFxuQEAgLTkxNjQsMTYgKzkzMzMsMTYgQEAgc3RhdGljIGludCBfc2hvd19idF9pbmZvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY2hhciAqYnVmLCBzaXplX3QgYnVmc3opXG4gXHRcdCAgICAgICBidC1cdTAwM2VyYXdfaW5mb1s0XSwgYnQtXHUwMDNlcmF3X2luZm9bNV0sIGJ0LVx1MDAzZXJhd19pbmZvWzZdLFxuIFx0XHQgICAgICAgYnQtXHUwMDNlcmF3X2luZm9bN10sXG4gXHRcdCAgICAgICBidC1cdTAwM2VyYXdfaW5mb1swXSA9PSBCVENfQlRJTkZPX0FVVE8gPyBcImF1dG9cIiA6IFwicmVwbHlcIixcbi1cdFx0ICAgICAgIGN4LVx1MDAzZWNudF9idFtCVENfQkNOVF9JTkZPVVBEQVRFXSxcbi1cdFx0ICAgICAgIGN4LVx1MDAzZWNudF9idFtCVENfQkNOVF9JTkZPU0FNRV0pO1xuK1x0XHQgICAgICAgYnQtXHUwMDNlYmNudFtCVENfQkNOVF9JTkZPVVBEQVRFXSxcbitcdFx0ICAgICAgIGJ0LVx1MDAzZWJjbnRbQlRDX0JDTlRfSU5GT1NBTUVdKTtcbiBcbiBcdHAgKz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsXG4gXHRcdCAgICAgICBcIiAlLTE1cyA6IEhpLXJ4ID0gJWQsIEhpLXR4ID0gJWQsIExvLXJ4ID0gJWQsIExvLXR4ID0gJWQgKGJ0X3BvbHV0X3dsX3R4ID0gJWQpXCIsXG4tXHRcdCAgICAgICBcIlt0cnhfcmVxX2NudF1cIiwgY3gtXHUwMDNlY250X2J0W0JUQ19CQ05UX0hJUFJJX1JYXSxcbi1cdFx0ICAgICAgIGN4LVx1MDAzZWNudF9idFtCVENfQkNOVF9ISVBSSV9UWF0sXG4tXHRcdCAgICAgICBjeC1cdTAwM2VjbnRfYnRbQlRDX0JDTlRfTE9QUklfUlhdLFxuLVx0XHQgICAgICAgY3gtXHUwMDNlY250X2J0W0JUQ19CQ05UX0xPUFJJX1RYXSxcbi1cdFx0ICAgICAgIGN4LVx1MDAzZWNudF9idFtCVENfQkNOVF9QT0xVVF0pO1xuK1x0XHQgICAgICAgXCJbdHJ4X3JlcV9jbnRdXCIsIGJ0LVx1MDAzZWJjbnRbQlRDX0JDTlRfSElQUklfUlhdLFxuK1x0XHQgICAgICAgYnQtXHUwMDNlYmNudFtCVENfQkNOVF9ISVBSSV9UWF0sXG4rXHRcdCAgICAgICBidC1cdTAwM2ViY250W0JUQ19CQ05UX0xPUFJJX1JYXSxcbitcdFx0ICAgICAgIGJ0LVx1MDAzZWJjbnRbQlRDX0JDTlRfTE9QUklfVFhdLFxuK1x0XHQgICAgICAgYnQtXHUwMDNlYmNudFtCVENfQkNOVF9QT0xVVF0pO1xuIFxuIFx0aWYgKCFidC1cdTAwM2VzY2FuX2luZm9fdXBkYXRlKSB7XG4gXHRcdHJ0dzg5X2J0Y19md19lbl9ycHQocnR3ZGV2LCBSUFRfRU5fQlRfU0NBTl9JTkZPLCB0cnVlKTtcbkBAIC05MjA5LDcgKzkzNzgsNyBAQCBzdGF0aWMgaW50IF9zaG93X2J0X2luZm8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBjaGFyICpidWYsIHNpemVfdCBidWZzeilcbiBcdGVsc2VcbiBcdFx0cnR3ODlfYnRjX2Z3X2VuX3JwdChydHdkZXYsIFJQVF9FTl9CVF9UWF9QV1JfTFZMLCBmYWxzZSk7XG4gXG4tXHRpZiAoY3gtXHUwMDNlY250X2J0W0JUQ19CQ05UX0JUVFhQV1JfVVBEQVRFXSkge1xuK1x0aWYgKGJ0LVx1MDAzZWJjbnRbQlRDX0JDTlRfQlRUWFBXUl9VUERBVEVdKSB7XG4gXHRcdHAgKz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsXG4gXHRcdFx0ICAgICAgIFwiICUtMTVzIDogYnJfaW5kZXg6MHgleCwgbGVfaW5kZXg6MHgleFwiLFxuIFx0XHRcdCAgICAgICBcIltidF90eHB3cl9sdmxdXCIsXG5AQCAtOTU4OCw3ICs5NzU3LDcgQEAgc3RhdGljIGludCBfc2hvd19kbV9pbmZvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY2hhciAqYnVmLCBzaXplX3QgYnVmc3opXG4gXHRjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3ZlciAqdmVyID0gYnRjLVx1MDAzZXZlcjtcbiBcdHN0cnVjdCBydHc4OV9idGNfZG0gKmRtID0gXHUwMDI2YnRjLVx1MDAzZWRtO1xuIFx0c3RydWN0IHJ0dzg5X2J0Y193bF9pbmZvICp3bCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC53bDtcbi1cdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcdTAwMjZidGMtXHUwMDNlY3guYnQ7XG4rXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXHUwMDI2YnRjLVx1MDAzZWN4LmJ0MDtcbiBcdGNoYXIgKnAgPSBidWYsICplbmQgPSBidWYgKyBidWZzejtcbiBcdHU4IGlnbm9fYnQ7XG4gXG5AQCAtOTYyNywzMSArOTc5NiwyNSBAQCBzdGF0aWMgaW50IF9zaG93X2RtX2luZm8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBjaGFyICpidWYsIHNpemVfdCBidWZzeilcbiBcdFx0ICAgICAgIChkbS1cdTAwM2V3bF9md19jeF9vZmZsb2FkID09IEJUQ19DWF9GV19PRkZMT0FEID9cbiBcdFx0XHRcIlwiIDogXCIoTWlzbWF0Y2ghISlcIikpO1xuIFxuLVx0aWYgKGRtLVx1MDAzZXJmX3RyeF9wYXJhLndsX3R4X3Bvd2VyID09IDB4ZmYpXG4tXHRcdHAgKz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsXG4tXHRcdFx0ICAgICAgIFwiICUtMTVzIDogd2xfcnNzaV9sdmw6JWQsIHBhcmFfbHZsOiVkLCB3bF90eF9wd3I6b3JpZywgXCIsXG4tXHRcdFx0ICAgICAgIFwiW3RyeF9jdHJsXVwiLCB3bC1cdTAwM2Vyc3NpX2xldmVsLFxuLVx0XHRcdCAgICAgICBkbS1cdTAwM2V0cnhfcGFyYV9sZXZlbCk7XG4tXG4tXHRlbHNlXG4tXHRcdHAgKz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsXG4tXHRcdFx0ICAgICAgIFwiICUtMTVzIDogd2xfcnNzaV9sdmw6JWQsIHBhcmFfbHZsOiVkLCB3bF90eF9wd3I6JWQsIFwiLFxuLVx0XHRcdCAgICAgICBcIlt0cnhfY3RybF1cIiwgd2wtXHUwMDNlcnNzaV9sZXZlbCxcbi1cdFx0XHQgICAgICAgZG0tXHUwMDNldHJ4X3BhcmFfbGV2ZWwsXG4tXHRcdFx0ICAgICAgIGRtLVx1MDAzZXJmX3RyeF9wYXJhLndsX3R4X3Bvd2VyKTtcbitcdHAgKz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsXG4rXHRcdCAgICAgICBcIiAlLTE1cyA6IHdsW3Jzc2lfbHZsOiVkL3BhcmE6JWQvdHhfcHdyOlslZCAlZF0vcnhfbHZsOlslZCAlZF0vbG5hMjolZC9zdGJfY2hnOiVkXVxcbiBcIixcbitcdFx0ICAgICAgIFwiW2RtX3JmX2N0cmxdXCIsXG4rXHRcdCAgICAgICB3bC1cdTAwM2Vyc3NpX2xldmVsLCBkbS1cdTAwM2V0cnhfcGFyYV9sZXZlbCxcbitcdFx0ICAgICAgIGRtLVx1MDAzZXJmX3RyeF9wYXJhLndsX3R4X3Bvd2VyW1JUVzg5X1BIWV8wXSxcbitcdFx0ICAgICAgIGRtLVx1MDAzZXJmX3RyeF9wYXJhLndsX3R4X3Bvd2VyW1JUVzg5X1BIWV8xXSxcbitcdFx0ICAgICAgIGRtLVx1MDAzZXJmX3RyeF9wYXJhLndsX3J4X2dhaW5bUlRXODlfUEhZXzBdLFxuK1x0XHQgICAgICAgZG0tXHUwMDNlcmZfdHJ4X3BhcmEud2xfcnhfZ2FpbltSVFc4OV9QSFlfMV0sXG4rXHRcdCAgICAgICBkbS1cdTAwM2V3bF9sbmEyLCBkbS1cdTAwM2V3bF9zdGJfY2hnKTtcbiBcbiBcdHAgKz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsXG4tXHRcdCAgICAgICBcIndsX3J4X2x2bDolZCwgYnRfdHhfcHdyX2RlYzolZCwgYnRfcnhfbG5hOiVkKCVzLXRibCksIHdsX2J0Z19yeDolZFxcblwiLFxuLVx0XHQgICAgICAgZG0tXHUwMDNlcmZfdHJ4X3BhcmEud2xfcnhfZ2Fpbixcbi1cdFx0ICAgICAgIGRtLVx1MDAzZXJmX3RyeF9wYXJhLmJ0X3R4X3Bvd2VyLFxuLVx0XHQgICAgICAgZG0tXHUwMDNlcmZfdHJ4X3BhcmEuYnRfcnhfZ2Fpbixcbi1cdFx0ICAgICAgIChidC1cdTAwM2VoaV9sbmFfcnggPyBcIkhpXCIgOiBcIk9yaVwiKSwgZG0tXHUwMDNld2xfYnRnX3J4KTtcbitcdFx0ICAgICAgIFwiICUtMTVzIDogcHJlX2FnYzolZCwgYnRnX3J4OiVkXFxuIFwiLFxuK1x0XHQgICAgICAgXCJbZG1fYmJfY3RybF1cIiwgZG0tXHUwMDNld2xfcHJlX2FnYywgZG0tXHUwMDNld2xfYnRnX3J4KTtcbiBcbiBcdHAgKz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsXG4gXHRcdCAgICAgICBcIiAlLTE1cyA6IHdsX3R4X2xpbWl0W2VuOiVkL21heF90OiVkdXMvbWF4X3JldHJ5OiVkXSwgYnRfc2xvdF9yZWc6JWQtVFUsIGJ0X3NjYW5fcnhfbG93X3ByaTolZFxcblwiLFxuIFx0XHQgICAgICAgXCJbZG1fY3RybF1cIiwgZG0tXHUwMDNld2xfdHhfbGltaXQuZW5hYmxlLFxuIFx0XHQgICAgICAgZG0tXHUwMDNld2xfdHhfbGltaXQudHhfdGltZSxcbi1cdFx0ICAgICAgIGRtLVx1MDAzZXdsX3R4X2xpbWl0LnR4X3JldHJ5LCBidGMtXHUwMDNlYnRfcmVxX2xlbixcbitcdFx0ICAgICAgIGRtLVx1MDAzZXdsX3R4X2xpbWl0LnR4X3JldHJ5LCBidGMtXHUwMDNlYnRfcmVxX2xlbltSVFc4OV9QSFlfMF0sXG4gXHRcdCAgICAgICBidC1cdTAwM2VzY2FuX3J4X2xvd19wcmkpO1xuIFxuIFx0cmV0dXJuIHAgLSBidWY7XG5AQCAtOTgxMCw3ICs5OTczLDcgQEAgc3RhdGljIGludCBfc2hvd19mYnRjX2N5c3RhX3YyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY2hhciAqYnVmLCBzaXplX3QgYnVmc3pcbiBcdHN0cnVjdCBydHc4OV9idGMgKmJ0YyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2VidGM7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0Zl9md2luZm8gKnBmd2luZm8gPSBcdTAwMjZidGMtXHUwMDNlZndpbmZvO1xuIFx0c3RydWN0IHJ0dzg5X2J0Y19kbSAqZG0gPSBcdTAwMjZidGMtXHUwMDNlZG07XG4tXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2EyZHBfZGVzYyAqYTJkcCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC5idC5saW5rX2luZm8uYTJkcF9kZXNjO1xuK1x0c3RydWN0IHJ0dzg5X2J0Y19idF9hMmRwX2Rlc2MgKmEyZHAgPSBcdTAwMjZidGMtXHUwMDNlY3guYnQwLmxpbmtfaW5mby5hMmRwX2Rlc2M7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX3JwdF9jbW5faW5mbyAqcGNpbmZvID0gTlVMTDtcbiBcdHN0cnVjdCBydHc4OV9idGNfZmJ0Y19jeXN0YV92MiAqcGN5c3RhX2xlMzIgPSBOVUxMO1xuIFx0dW5pb24gcnR3ODlfYnRjX2ZidGNfcnhmbGN0IHI7XG5AQCAtOTk0MSw3ICsxMDEwNCw3IEBAIHN0YXRpYyBpbnQgX3Nob3dfZmJ0Y19jeXN0YV92MihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnN6XG4gc3RhdGljIGludCBfc2hvd19mYnRjX2N5c3RhX3YzKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY2hhciAqYnVmLCBzaXplX3QgYnVmc3opXG4ge1xuIFx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXHUwMDI2cnR3ZGV2LVx1MDAzZWJ0Yztcbi1cdHN0cnVjdCBydHc4OV9idGNfYnRfYTJkcF9kZXNjICphMmRwID0gXHUwMDI2YnRjLVx1MDAzZWN4LmJ0LmxpbmtfaW5mby5hMmRwX2Rlc2M7XG4rXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2EyZHBfZGVzYyAqYTJkcCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC5idDAubGlua19pbmZvLmEyZHBfZGVzYztcbiBcdHN0cnVjdCBydHc4OV9idGNfYnRmX2Z3aW5mbyAqcGZ3aW5mbyA9IFx1MDAyNmJ0Yy1cdTAwM2Vmd2luZm87XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX2RtICpkbSA9IFx1MDAyNmJ0Yy1cdTAwM2VkbTtcbiBcdHN0cnVjdCBydHc4OV9idGNfZmJ0Y19hMmRwX3RyeF9zdGF0ICphMmRwX3RyeDtcbkBAIC0xMDA4MCw3ICsxMDI0Myw3IEBAIHN0YXRpYyBpbnQgX3Nob3dfZmJ0Y19jeXN0YV92MyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnN6XG4gc3RhdGljIGludCBfc2hvd19mYnRjX2N5c3RhX3Y0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY2hhciAqYnVmLCBzaXplX3QgYnVmc3opXG4ge1xuIFx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXHUwMDI2cnR3ZGV2LVx1MDAzZWJ0Yztcbi1cdHN0cnVjdCBydHc4OV9idGNfYnRfYTJkcF9kZXNjICphMmRwID0gXHUwMDI2YnRjLVx1MDAzZWN4LmJ0LmxpbmtfaW5mby5hMmRwX2Rlc2M7XG4rXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2EyZHBfZGVzYyAqYTJkcCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC5idDAubGlua19pbmZvLmEyZHBfZGVzYztcbiBcdHN0cnVjdCBydHc4OV9idGNfYnRmX2Z3aW5mbyAqcGZ3aW5mbyA9IFx1MDAyNmJ0Yy1cdTAwM2Vmd2luZm87XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX2RtICpkbSA9IFx1MDAyNmJ0Yy1cdTAwM2VkbTtcbiBcdHN0cnVjdCBydHc4OV9idGNfZmJ0Y19hMmRwX3RyeF9zdGF0X3Y0ICphMmRwX3RyeDtcbkBAIC0xMDIxOSw3ICsxMDM4Miw3IEBAIHN0YXRpYyBpbnQgX3Nob3dfZmJ0Y19jeXN0YV92NChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnN6XG4gc3RhdGljIGludCBfc2hvd19mYnRjX2N5c3RhX3Y1KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY2hhciAqYnVmLCBzaXplX3QgYnVmc3opXG4ge1xuIFx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXHUwMDI2cnR3ZGV2LVx1MDAzZWJ0Yztcbi1cdHN0cnVjdCBydHc4OV9idGNfYnRfYTJkcF9kZXNjICphMmRwID0gXHUwMDI2YnRjLVx1MDAzZWN4LmJ0LmxpbmtfaW5mby5hMmRwX2Rlc2M7XG4rXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2EyZHBfZGVzYyAqYTJkcCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC5idDAubGlua19pbmZvLmEyZHBfZGVzYztcbiBcdHN0cnVjdCBydHc4OV9idGNfYnRmX2Z3aW5mbyAqcGZ3aW5mbyA9IFx1MDAyNmJ0Yy1cdTAwM2Vmd2luZm87XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX2RtICpkbSA9IFx1MDAyNmJ0Yy1cdTAwM2VkbTtcbiBcdHN0cnVjdCBydHc4OV9idGNfZmJ0Y19hMmRwX3RyeF9zdGF0X3Y0ICphMmRwX3RyeDtcbkBAIC0xMDM1Niw3ICsxMDUxOSw3IEBAIHN0YXRpYyBpbnQgX3Nob3dfZmJ0Y19jeXN0YV92NShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnN6XG4gXG4gc3RhdGljIGludCBfc2hvd19mYnRjX2N5c3RhX3Y3KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY2hhciAqYnVmLCBzaXplX3QgYnVmc3opXG4ge1xuLVx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFx1MDAyNnJ0d2Rldi1cdTAwM2VidGMuY3guYnQ7XG4rXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXHUwMDI2cnR3ZGV2LVx1MDAzZWJ0Yy5jeC5idDA7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2EyZHBfZGVzYyAqYTJkcCA9IFx1MDAyNmJ0LVx1MDAzZWxpbmtfaW5mby5hMmRwX2Rlc2M7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0Zl9md2luZm8gKnBmd2luZm8gPSBcdTAwMjZydHdkZXYtXHUwMDNlYnRjLmZ3aW5mbztcbiBcdHN0cnVjdCBydHc4OV9idGNfZmJ0Y19jeXN0YV92NyAqcGN5c3RhID0gTlVMTDtcbkBAIC0xMDg1Myw5ICsxMTAxNiw4IEBAIHN0YXRpYyBpbnQgX3Nob3dfbXJlZ192MShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnN6KVxuIFx0c3RydWN0IHJ0dzg5X2J0Y19idGZfZndpbmZvICpwZndpbmZvID0gXHUwMDI2YnRjLVx1MDAzZWZ3aW5mbztcbiBcdHN0cnVjdCBydHc4OV9idGNfcnB0X2Ntbl9pbmZvICpwY2luZm8gPSBOVUxMO1xuIFx0c3RydWN0IHJ0dzg5X2J0Y19mYnRjX21yZWdfdmFsX3YxICpwbXJlZyA9IE5VTEw7XG4tXHRzdHJ1Y3QgcnR3ODlfYnRjX2N4ICpjeCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeDtcbiBcdHN0cnVjdCBydHc4OV9idGNfd2xfaW5mbyAqd2wgPSBcdTAwMjZidGMtXHUwMDNlY3gud2w7XG4tXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gKmJ0ID0gXHUwMDI2YnRjLVx1MDAzZWN4LmJ0O1xuK1x0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC5idDA7XG4gXHRzdHJ1Y3QgcnR3ODlfbWFjX2F4X2NvZXhfZ250IGdudF9jZmcgPSB7fTtcbiBcdHN0cnVjdCBydHc4OV9tYWNfYXhfZ250IGdudDtcbiBcdGNoYXIgKnAgPSBidWYsICplbmQgPSBidWYgKyBidWZzejtcbkBAIC0xMDg3MCw5ICsxMTAzMiw5IEBAIHN0YXRpYyBpbnQgX3Nob3dfbXJlZ192MShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnN6KVxuIFx0cCArPSBzY25wcmludGYocCwgZW5kIC0gcCxcbiBcdFx0ICAgICAgIFwiICUtMTVzIDogV0wtXHUwMDNlQlQ6MHglMDh4KGNudDolZCksIEJULVx1MDAzZVdMOjB4JTA4eCh0b3RhbDolZCwgYnRfdXBkYXRlOiVkKVxcblwiLFxuIFx0XHQgICAgICAgXCJbc2NvcmVib2FyZF1cIiwgd2wtXHUwMDNlc2NiZCxcbi1cdFx0ICAgICAgIGN4LVx1MDAzZWNudF93bFtCVENfV0NOVF9TQ0JEVVBEQVRFXSxcbi1cdFx0ICAgICAgIGJ0LVx1MDAzZXNjYmQsIGN4LVx1MDAzZWNudF9idFtCVENfQkNOVF9TQ0JEUkVBRF0sXG4tXHRcdCAgICAgICBjeC1cdTAwM2VjbnRfYnRbQlRDX0JDTlRfU0NCRFVQREFURV0pO1xuK1x0XHQgICAgICAgd2wtXHUwMDNld2NudFtCVENfV0NOVF9TQ0JEVVBEQVRFXSxcbitcdFx0ICAgICAgIGJ0LVx1MDAzZXNjYmQsIGJ0LVx1MDAzZWJjbnRbQlRDX0JDTlRfU0NCRFJFQURdLFxuK1x0XHQgICAgICAgYnQtXHUwMDNlYmNudFtCVENfQkNOVF9TQ0JEVVBEQVRFXSk7XG4gXG4gXHRidGMtXHUwMDNlZG0ucHRhX293bmVyID0gcnR3ODlfbWFjX2dldF9jdHJsX3BhdGgocnR3ZGV2KTtcbiBcdF9nZXRfZ250KHJ0d2RldiwgXHUwMDI2Z250X2NmZyk7XG5AQCAtMTA5MzgsOSArMTExMDAsOCBAQCBzdGF0aWMgaW50IF9zaG93X21yZWdfdjIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBjaGFyICpidWYsIHNpemVfdCBidWZzeilcbiBcdHN0cnVjdCBydHc4OV9idGNfYnRmX2Z3aW5mbyAqcGZ3aW5mbyA9IFx1MDAyNmJ0Yy1cdTAwM2Vmd2luZm87XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX3JwdF9jbW5faW5mbyAqcGNpbmZvID0gTlVMTDtcbiBcdHN0cnVjdCBydHc4OV9idGNfZmJ0Y19tcmVnX3ZhbF92MiAqcG1yZWcgPSBOVUxMO1xuLVx0c3RydWN0IHJ0dzg5X2J0Y19jeCAqY3ggPSBcdTAwMjZidGMtXHUwMDNlY3g7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX2luZm8gKndsID0gXHUwMDI2YnRjLVx1MDAzZWN4LndsO1xuLVx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeC5idDtcbitcdHN0cnVjdCBydHc4OV9idGNfYnRfaW5mbyAqYnQgPSBcdTAwMjZidGMtXHUwMDNlY3guYnQwO1xuIFx0c3RydWN0IHJ0dzg5X21hY19heF9jb2V4X2dudCBnbnRfY2ZnID0ge307XG4gXHRzdHJ1Y3QgcnR3ODlfbWFjX2F4X2dudCBnbnQ7XG4gXHRjaGFyICpwID0gYnVmLCAqZW5kID0gYnVmICsgYnVmc3o7XG5AQCAtMTA5NTUsOSArMTExMTYsOSBAQCBzdGF0aWMgaW50IF9zaG93X21yZWdfdjIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBjaGFyICpidWYsIHNpemVfdCBidWZzeilcbiBcdHAgKz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsXG4gXHRcdCAgICAgICBcIiAlLTE1cyA6IFdMLVx1MDAzZUJUOjB4JTA4eChjbnQ6JWQpLCBCVC1cdTAwM2VXTDoweCUwOHgodG90YWw6JWQsIGJ0X3VwZGF0ZTolZClcXG5cIixcbiBcdFx0ICAgICAgIFwiW3Njb3JlYm9hcmRdXCIsIHdsLVx1MDAzZXNjYmQsXG4tXHRcdCAgICAgICBjeC1cdTAwM2VjbnRfd2xbQlRDX1dDTlRfU0NCRFVQREFURV0sXG4tXHRcdCAgICAgICBidC1cdTAwM2VzY2JkLCBjeC1cdTAwM2VjbnRfYnRbQlRDX0JDTlRfU0NCRFJFQURdLFxuLVx0XHQgICAgICAgY3gtXHUwMDNlY250X2J0W0JUQ19CQ05UX1NDQkRVUERBVEVdKTtcbitcdFx0ICAgICAgIHdsLVx1MDAzZXdjbnRbQlRDX1dDTlRfU0NCRFVQREFURV0sXG4rXHRcdCAgICAgICBidC1cdTAwM2VzY2JkLCBidC1cdTAwM2ViY250W0JUQ19CQ05UX1NDQkRSRUFEXSxcbitcdFx0ICAgICAgIGJ0LVx1MDAzZWJjbnRbQlRDX0JDTlRfU0NCRFVQREFURV0pO1xuIFxuIFx0YnRjLVx1MDAzZWRtLnB0YV9vd25lciA9IHJ0dzg5X21hY19nZXRfY3RybF9wYXRoKHJ0d2Rldik7XG4gXHRfZ2V0X2dudChydHdkZXYsIFx1MDAyNmdudF9jZmcpO1xuQEAgLTExMDI1LDcgKzExMTg2LDcgQEAgc3RhdGljIGludCBfc2hvd19tcmVnX3Y3KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY2hhciAqYnVmLCBzaXplX3QgYnVmc3opXG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX3JwdF9jbW5faW5mbyAqcGNpbmZvID0gTlVMTDtcbiBcdHN0cnVjdCBydHc4OV9idGNfY3ggKmN4ID0gXHUwMDI2YnRjLVx1MDAzZWN4O1xuIFx0c3RydWN0IHJ0dzg5X2J0Y193bF9pbmZvICp3bCA9IFx1MDAyNmN4LVx1MDAzZXdsO1xuLVx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFx1MDAyNmN4LVx1MDAzZWJ0O1xuK1x0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFx1MDAyNmN4LVx1MDAzZWJ0MDtcbiBcdHN0cnVjdCBydHc4OV9tYWNfYXhfZ250ICpnbnQgPSBOVUxMO1xuIFx0c3RydWN0IHJ0dzg5X2J0Y19kbSAqZG0gPSBcdTAwMjZidGMtXHUwMDNlZG07XG4gXHRjaGFyICpwID0gYnVmLCAqZW5kID0gYnVmICsgYnVmc3o7XG5AQCAtMTEwNDAsOSArMTEyMDEsOSBAQCBzdGF0aWMgaW50IF9zaG93X21yZWdfdjcoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBjaGFyICpidWYsIHNpemVfdCBidWZzeilcbiBcdHAgKz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsXG4gXHRcdCAgICAgICBcIlxcblxcciAlLTE1cyA6IFdMLVx1MDAzZUJUOjB4JTA4eChjbnQ6JWQpLCBCVC1cdTAwM2VXTDoweCUwOHgodG90YWw6JWQsIGJ0X3VwZGF0ZTolZClcIixcbiBcdFx0ICAgICAgIFwiW3Njb3JlYm9hcmRdXCIsIHdsLVx1MDAzZXNjYmQsXG4tXHRcdCAgICAgICBjeC1cdTAwM2VjbnRfd2xbQlRDX1dDTlRfU0NCRFVQREFURV0sXG4tXHRcdCAgICAgICBidC1cdTAwM2VzY2JkLCBjeC1cdTAwM2VjbnRfYnRbQlRDX0JDTlRfU0NCRFJFQURdLFxuLVx0XHQgICAgICAgY3gtXHUwMDNlY250X2J0W0JUQ19CQ05UX1NDQkRVUERBVEVdKTtcbitcdFx0ICAgICAgIHdsLVx1MDAzZXdjbnRbQlRDX1dDTlRfU0NCRFVQREFURV0sXG4rXHRcdCAgICAgICBidC1cdTAwM2VzY2JkLCBidC1cdTAwM2ViY250W0JUQ19CQ05UX1NDQkRSRUFEXSxcbitcdFx0ICAgICAgIGJ0LVx1MDAzZWJjbnRbQlRDX0JDTlRfU0NCRFVQREFURV0pO1xuIFxuIFx0LyogVG8gYXZvaWQgSS9PIGlmIFdMIExQUyBvciBwb3dlci1vZmYgICovXG4gXHRkbS1cdTAwM2VwdGFfb3duZXIgPSBydHc4OV9tYWNfZ2V0X2N0cmxfcGF0aChydHdkZXYpO1xuQEAgLTExMTAzLDcgKzExMjY0LDcgQEAgc3RhdGljIGludCBfc2hvd19zdW1tYXJ5X3YxKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY2hhciAqYnVmLCBzaXplX3QgYnVmc3opXG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX2N4ICpjeCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeDtcbiBcdHN0cnVjdCBydHc4OV9idGNfZG0gKmRtID0gXHUwMDI2YnRjLVx1MDAzZWRtO1xuIFx0c3RydWN0IHJ0dzg5X2J0Y193bF9pbmZvICp3bCA9IFx1MDAyNmN4LVx1MDAzZXdsO1xuLVx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFx1MDAyNmN4LVx1MDAzZWJ0O1xuK1x0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFx1MDAyNmN4LVx1MDAzZWJ0MDtcbiBcdHUzMiBjbnRfc3VtID0gMCwgKmNudCA9IGJ0Yy1cdTAwM2VkbS5jbnRfbm90aWZ5O1xuIFx0Y2hhciAqcCA9IGJ1ZiwgKmVuZCA9IGJ1ZiArIGJ1ZnN6O1xuIFx0dTggaTtcbkBAIC0xMTE0NiwxMCArMTEzMDcsMTAgQEAgc3RhdGljIGludCBfc2hvd19zdW1tYXJ5X3YxKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY2hhciAqYnVmLCBzaXplX3QgYnVmc3opXG4gXG4gXHRcdHAgKz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsXG4gXHRcdFx0ICAgICAgIFwiICUtMTVzIDogd2xfcmZrW3JlcTolZC9nbzolZC9yZWplY3Q6JWQvdGltZW91dDolZF1cIixcbi1cdFx0XHQgICAgICAgXCJbUkZLXVwiLCBjeC1cdTAwM2VjbnRfd2xbQlRDX1dDTlRfUkZLX1JFUV0sXG4tXHRcdFx0ICAgICAgIGN4LVx1MDAzZWNudF93bFtCVENfV0NOVF9SRktfR09dLFxuLVx0XHRcdCAgICAgICBjeC1cdTAwM2VjbnRfd2xbQlRDX1dDTlRfUkZLX1JFSkVDVF0sXG4tXHRcdFx0ICAgICAgIGN4LVx1MDAzZWNudF93bFtCVENfV0NOVF9SRktfVElNRU9VVF0pO1xuK1x0XHRcdCAgICAgICBcIltSRktdXCIsIHdsLVx1MDAzZXdjbnRbQlRDX1dDTlRfUkZLX1JFUV0sXG4rXHRcdFx0ICAgICAgIHdsLVx1MDAzZXdjbnRbQlRDX1dDTlRfUkZLX0dPXSxcbitcdFx0XHQgICAgICAgd2wtXHUwMDNld2NudFtCVENfV0NOVF9SRktfUkVKRUNUXSxcbitcdFx0XHQgICAgICAgd2wtXHUwMDNld2NudFtCVENfV0NOVF9SRktfVElNRU9VVF0pO1xuIFxuIFx0XHRwICs9IHNjbnByaW50ZihwLCBlbmQgLSBwLFxuIFx0XHRcdCAgICAgICBcIiwgYnRfcmZrW3JlcTolZC9nbzolZC9yZWplY3Q6JWQvdGltZW91dDolZC9mYWlsOiVkXVxcblwiLFxuQEAgLTExMjEyLDcgKzExMzczLDcgQEAgc3RhdGljIGludCBfc2hvd19zdW1tYXJ5X3Y0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY2hhciAqYnVmLCBzaXplX3QgYnVmc3opXG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX2N4ICpjeCA9IFx1MDAyNmJ0Yy1cdTAwM2VjeDtcbiBcdHN0cnVjdCBydHc4OV9idGNfZG0gKmRtID0gXHUwMDI2YnRjLVx1MDAzZWRtO1xuIFx0c3RydWN0IHJ0dzg5X2J0Y193bF9pbmZvICp3bCA9IFx1MDAyNmN4LVx1MDAzZXdsO1xuLVx0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFx1MDAyNmN4LVx1MDAzZWJ0O1xuK1x0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvICpidCA9IFx1MDAyNmN4LVx1MDAzZWJ0MDtcbiBcdHUzMiBjbnRfc3VtID0gMCwgKmNudCA9IGJ0Yy1cdTAwM2VkbS5jbnRfbm90aWZ5O1xuIFx0Y2hhciAqcCA9IGJ1ZiwgKmVuZCA9IGJ1ZiArIGJ1ZnN6O1xuIFx0dTggaTtcbkBAIC0xMTI2MSwxMCArMTE0MjIsMTAgQEAgc3RhdGljIGludCBfc2hvd19zdW1tYXJ5X3Y0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY2hhciAqYnVmLCBzaXplX3QgYnVmc3opXG4gXG4gXHRcdHAgKz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsXG4gXHRcdFx0ICAgICAgIFwiICUtMTVzIDogd2xfcmZrW3JlcTolZC9nbzolZC9yZWplY3Q6JWQvdGltZW91dDolZF1cIixcbi1cdFx0XHQgICAgICAgXCJbUkZLXVwiLCBjeC1cdTAwM2VjbnRfd2xbQlRDX1dDTlRfUkZLX1JFUV0sXG4tXHRcdFx0ICAgICAgIGN4LVx1MDAzZWNudF93bFtCVENfV0NOVF9SRktfR09dLFxuLVx0XHRcdCAgICAgICBjeC1cdTAwM2VjbnRfd2xbQlRDX1dDTlRfUkZLX1JFSkVDVF0sXG4tXHRcdFx0ICAgICAgIGN4LVx1MDAzZWNudF93bFtCVENfV0NOVF9SRktfVElNRU9VVF0pO1xuK1x0XHRcdCAgICAgICBcIltSRktdXCIsIHdsLVx1MDAzZXdjbnRbQlRDX1dDTlRfUkZLX1JFUV0sXG4rXHRcdFx0ICAgICAgIHdsLVx1MDAzZXdjbnRbQlRDX1dDTlRfUkZLX0dPXSxcbitcdFx0XHQgICAgICAgd2wtXHUwMDNld2NudFtCVENfV0NOVF9SRktfUkVKRUNUXSxcbitcdFx0XHQgICAgICAgd2wtXHUwMDNld2NudFtCVENfV0NOVF9SRktfVElNRU9VVF0pO1xuIFxuIFx0XHRwICs9IHNjbnByaW50ZihwLCBlbmQgLSBwLFxuIFx0XHRcdCAgICAgICBcIiwgYnRfcmZrW3JlcTolZC9nbzolZC9yZWplY3Q6JWQvdGltZW91dDolZC9mYWlsOiVkXVxcblwiLFxuQEAgLTExMzc1LDEwICsxMTUzNiwxMCBAQCBzdGF0aWMgaW50IF9zaG93X3N1bW1hcnlfdjUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBjaGFyICpidWYsIHNpemVfdCBidWZzeilcbiBcbiBcdFx0cCArPSBzY25wcmludGYocCwgZW5kIC0gcCxcbiBcdFx0XHQgICAgICAgXCIgJS0xNXMgOiB3bF9yZmtbcmVxOiVkL2dvOiVkL3JlamVjdDolZC90b3V0OiVkXVwiLFxuLVx0XHRcdCAgICAgICBcIltSRksvTFBTXVwiLCBjeC1cdTAwM2VjbnRfd2xbQlRDX1dDTlRfUkZLX1JFUV0sXG4tXHRcdFx0ICAgICAgIGN4LVx1MDAzZWNudF93bFtCVENfV0NOVF9SRktfR09dLFxuLVx0XHRcdCAgICAgICBjeC1cdTAwM2VjbnRfd2xbQlRDX1dDTlRfUkZLX1JFSkVDVF0sXG4tXHRcdFx0ICAgICAgIGN4LVx1MDAzZWNudF93bFtCVENfV0NOVF9SRktfVElNRU9VVF0pO1xuK1x0XHRcdCAgICAgICBcIltSRksvTFBTXVwiLCB3bC1cdTAwM2V3Y250W0JUQ19XQ05UX1JGS19SRVFdLFxuK1x0XHRcdCAgICAgICB3bC1cdTAwM2V3Y250W0JUQ19XQ05UX1JGS19HT10sXG4rXHRcdFx0ICAgICAgIHdsLVx1MDAzZXdjbnRbQlRDX1dDTlRfUkZLX1JFSkVDVF0sXG4rXHRcdFx0ICAgICAgIHdsLVx1MDAzZXdjbnRbQlRDX1dDTlRfUkZLX1RJTUVPVVRdKTtcbiBcbiBcdFx0cCArPSBzY25wcmludGYocCwgZW5kIC0gcCxcbiBcdFx0XHQgICAgICAgXCIsIGJ0X3Jma1tyZXE6JWRdXCIsXG5AQCAtMTE0OTYsMTAgKzExNjU3LDEwIEBAIHN0YXRpYyBpbnQgX3Nob3dfc3VtbWFyeV92MTA1KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY2hhciAqYnVmLCBzaXplX3QgYnVmc3opXG4gXG4gXHRcdHAgKz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsXG4gXHRcdFx0ICAgICAgIFwiICUtMTVzIDogd2xfcmZrW3JlcTolZC9nbzolZC9yZWplY3Q6JWQvdG91dDolZF1cIixcbi1cdFx0XHQgICAgICAgXCJbUkZLL0xQU11cIiwgY3gtXHUwMDNlY250X3dsW0JUQ19XQ05UX1JGS19SRVFdLFxuLVx0XHRcdCAgICAgICBjeC1cdTAwM2VjbnRfd2xbQlRDX1dDTlRfUkZLX0dPXSxcbi1cdFx0XHQgICAgICAgY3gtXHUwMDNlY250X3dsW0JUQ19XQ05UX1JGS19SRUpFQ1RdLFxuLVx0XHRcdCAgICAgICBjeC1cdTAwM2VjbnRfd2xbQlRDX1dDTlRfUkZLX1RJTUVPVVRdKTtcbitcdFx0XHQgICAgICAgXCJbUkZLL0xQU11cIiwgd2wtXHUwMDNld2NudFtCVENfV0NOVF9SRktfUkVRXSxcbitcdFx0XHQgICAgICAgd2wtXHUwMDNld2NudFtCVENfV0NOVF9SRktfR09dLFxuK1x0XHRcdCAgICAgICB3bC1cdTAwM2V3Y250W0JUQ19XQ05UX1JGS19SRUpFQ1RdLFxuK1x0XHRcdCAgICAgICB3bC1cdTAwM2V3Y250W0JUQ19XQ05UX1JGS19USU1FT1VUXSk7XG4gXG4gXHRcdHAgKz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsXG4gXHRcdFx0ICAgICAgIFwiLCBidF9yZmtbcmVxOiVkXVwiLFxuQEAgLTExNjIxLDEwICsxMTc4MiwxMCBAQCBzdGF0aWMgaW50IF9zaG93X3N1bW1hcnlfdjcoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBjaGFyICpidWYsIHNpemVfdCBidWZzeilcbiBcbiBcdFx0cCArPSBzY25wcmludGYocCwgZW5kIC0gcCxcbiBcdFx0XHQgICAgICAgXCJcXG5cXHIgJS0xNXMgOiB3bF9yZmtbcmVxOiVkL2dvOiVkL3JlamVjdDolZC90b3V0OiVkL3RpbWU6JWRtc11cIixcbi1cdFx0XHQgICAgICAgXCJbUkZLL0xQU11cIiwgY3gtXHUwMDNlY250X3dsW0JUQ19XQ05UX1JGS19SRVFdLFxuLVx0XHRcdCAgICAgICBjeC1cdTAwM2VjbnRfd2xbQlRDX1dDTlRfUkZLX0dPXSxcbi1cdFx0XHQgICAgICAgY3gtXHUwMDNlY250X3dsW0JUQ19XQ05UX1JGS19SRUpFQ1RdLFxuLVx0XHRcdCAgICAgICBjeC1cdTAwM2VjbnRfd2xbQlRDX1dDTlRfUkZLX1RJTUVPVVRdLFxuK1x0XHRcdCAgICAgICBcIltSRksvTFBTXVwiLCB3bC1cdTAwM2V3Y250W0JUQ19XQ05UX1JGS19SRVFdLFxuK1x0XHRcdCAgICAgICB3bC1cdTAwM2V3Y250W0JUQ19XQ05UX1JGS19HT10sXG4rXHRcdFx0ICAgICAgIHdsLVx1MDAzZXdjbnRbQlRDX1dDTlRfUkZLX1JFSkVDVF0sXG4rXHRcdFx0ICAgICAgIHdsLVx1MDAzZXdjbnRbQlRDX1dDTlRfUkZLX1RJTUVPVVRdLFxuIFx0XHRcdCAgICAgICB3bC1cdTAwM2VyZmtfaW5mby5wcm9jX3RpbWUpO1xuIFxuIFx0XHRwICs9IHNjbnByaW50ZihwLCBlbmQgLSBwLCBcIiwgYnRfcmZrW3JlcTolZF1cIixcbkBAIC0xMTczNCwxMCArMTE4OTUsMTAgQEAgc3RhdGljIGludCBfc2hvd19zdW1tYXJ5X3Y4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY2hhciAqYnVmLCBzaXplX3QgYnVmc3opXG4gXG4gXHRcdHAgKz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsXG4gXHRcdFx0ICAgICAgIFwiXFxuXFxyICUtMTVzIDogd2xfcmZrW3JlcTolZC9nbzolZC9yZWplY3Q6JWQvdG91dDolZC90aW1lOiVkbXNdXCIsXG4tXHRcdFx0ICAgICAgIFwiW1JGSy9MUFNdXCIsIGN4LVx1MDAzZWNudF93bFtCVENfV0NOVF9SRktfUkVRXSxcbi1cdFx0XHQgICAgICAgY3gtXHUwMDNlY250X3dsW0JUQ19XQ05UX1JGS19HT10sXG4tXHRcdFx0ICAgICAgIGN4LVx1MDAzZWNudF93bFtCVENfV0NOVF9SRktfUkVKRUNUXSxcbi1cdFx0XHQgICAgICAgY3gtXHUwMDNlY250X3dsW0JUQ19XQ05UX1JGS19USU1FT1VUXSxcbitcdFx0XHQgICAgICAgXCJbUkZLL0xQU11cIiwgd2wtXHUwMDNld2NudFtCVENfV0NOVF9SRktfUkVRXSxcbitcdFx0XHQgICAgICAgd2wtXHUwMDNld2NudFtCVENfV0NOVF9SRktfR09dLFxuK1x0XHRcdCAgICAgICB3bC1cdTAwM2V3Y250W0JUQ19XQ05UX1JGS19SRUpFQ1RdLFxuK1x0XHRcdCAgICAgICB3bC1cdTAwM2V3Y250W0JUQ19XQ05UX1JGS19USU1FT1VUXSxcbiBcdFx0XHQgICAgICAgd2wtXHUwMDNlcmZrX2luZm8ucHJvY190aW1lKTtcbiBcbiBcdFx0cCArPSBzY25wcmludGYocCwgZW5kIC0gcCwgXCIsIGJ0X3Jma1tyZXE6JWRdXCIsXG5AQCAtMTE4ODYsNyArMTIwNDcsNyBAQCB2b2lkIHJ0dzg5X2NvZXhfcmVjb2duaXplX3ZlcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4gXG4gdm9pZCBydHc4OV9idGNfbnRmeV9wcmVzZXJ2ZV9idF90aW1lKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIG1zKVxuIHtcbi1cdHN0cnVjdCBydHc4OV9idGNfYnRfbGlua19pbmZvICpidF9saW5mbyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2VidGMuY3guYnQubGlua19pbmZvO1xuK1x0c3RydWN0IHJ0dzg5X2J0Y19idF9saW5rX2luZm8gKmJ0X2xpbmZvID0gXHUwMDI2cnR3ZGV2LVx1MDAzZWJ0Yy5jeC5idDAubGlua19pbmZvO1xuIFx0c3RydWN0IHJ0dzg5X2J0Y19idF9hMmRwX2Rlc2MgYTJkcCA9IGJ0X2xpbmZvLVx1MDAzZWEyZHBfZGVzYztcbiBcbiBcdGlmICh0ZXN0X2JpdChSVFc4OV9GTEFHX1NFUl9IQU5ETElORywgcnR3ZGV2LVx1MDAzZWZsYWdzKSlcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5oXG5pbmRleCBlYTJjMWU1ZDcwZjUxOC4uNmFjMTQ2MTE2MDdjOTUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguaFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmhcbkBAIC0zMjksNyArMzI5LDcgQEAgc3RhdGljIGlubGluZSB1MTYgcnR3ODlfY29leF9xdWVyeV9idF9yZXFfbGVuKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcbiB7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcdTAwMjZydHdkZXYtXHUwMDNlYnRjO1xuIFxuLVx0cmV0dXJuIGJ0Yy1cdTAwM2VidF9yZXFfbGVuO1xuK1x0cmV0dXJuIGJ0Yy1cdTAwM2VidF9yZXFfbGVuW3BoeV9pZHhdO1xuIH1cbiBcbiBzdGF0aWMgaW5saW5lIHUzMiBydHc4OV9nZXRfYW50cGF0aF90eXBlKHU4IHBoeV9tYXAsIHU4IHR5cGUpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaFxuaW5kZXggNTU0Nzg4OGQ3ZTY3YTQuLjY5NDdmNGMyYzI1ZDhiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmhcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oXG5AQCAtMTQ0NSw2ICsxNDQ1LDEyIEBAIGVudW0gcnR3ODlfYnRjX2J0X3N0YXRlX2NudCB7XG4gXHRCVENfQkNOVF9OVU0sXG4gfTtcbiBcbitlbnVtIHJ0dzg5X2J0Y19idF9yZl9iYW5kIHtcbitcdEJUQ19CVF9CMkcgPSAweDAsIC8qIDIuNEdIeiAqL1xuK1x0QlRDX0JUX0I1RyA9IDB4MSwgLyogNUdIeiBvciA2R0h6ICovXG4rXHRCVENfQlRfQk1BWCA9IDB4MlxuK307XG4rXG4gZW51bSBydHc4OV9idGNfYnRfcHJvZmlsZSB7XG4gXHRCVENfQlRfTk9QUk9GSUxFID0gMCxcbiBcdEJUQ19CVF9IRlAgPSBCSVQoMCksXG5AQCAtMTk3NSwxMCArMTk4MSwyNSBAQCBzdHJ1Y3QgcnR3ODlfYnRjX2J0X2xpbmtfaW5mbyB7XG4gXHR1MzIgcnN2ZDogMTk7XG4gfTtcbiBcbi1zdHJ1Y3QgcnR3ODlfYnRjXzNyZGN4X2luZm8ge1xuLVx0dTggdHlwZTsgICAvKiAwOiBub25lLCAxOnppZ2JlZSwgMjpMVEUgICovXG4tXHR1OCBod19jb2V4O1xuLVx0dTE2IHJzdmQ7XG4rc3RydWN0IHJ0dzg5X2J0Y19leHRzb2NfaW5mbyB7XG4rXHR1OCBjaGlwX2lkO1xuK1x0dTggbWF4X3R4X3B3cjtcbitcdHU4IHJmX2JhbmRfbWFwO1xuK1x0dTggYW50X2lzb190b193bDtcbitcbitcdHU4IGxpbmtfd2VpZ2h0W0JUQ19CVF9CTUFYXTtcbitcbitcdHU4IGZ1bmNfdHlwZTsgLyogMDogbm9uZSwgMTp6aWdiZWUsIDI6TFRFICovXG4rXHR1OCBod19jb2V4OyAvKiBIYXJkLVdpcmUgY29leCBpbnRlcmZhY2Ugc3VwcG9ydCAqL1xuK1x0dTggcHRhX3R5cGU7IC8qIDA6IFJUSyA0LXdpcmUgbW9kZSwgMTogMy13aXJlIG1vZGUgKi9cbitcdHU4IHB0YV9yZXFfZXhpc3Q7XG4rXG4rXHR1MzIgaHB0YV9jZmc7XG4rXHR1MzIgaG1ieF9jZmc7XG4rXHR1MzIgc3dvdXRfY2ZnO1xuK1x0dTMyIHN3aW5fY2ZnO1xuK1x0dTMyIHByb2ZpbGVfbWFwW0JUQ19CVF9CTUFYXTtcbitcdHUzMiBiY250W0JUQ19CQ05UX05VTV07XG4gfTtcbiBcbiBzdHJ1Y3QgcnR3ODlfYnRjX2RtX2VtYXAge1xuQEAgLTIwNzgsNiArMjA5OSw3IEBAIHN0cnVjdCBydHc4OV9idGNfd2xfaW5mbyB7XG4gXHRib29sIGxpbmtfbW9kZV9jaGc7XG4gXHRib29sIGRiY2NfY2hnO1xuIFx0dTMyIHNjYmQ7XG4rXHR1MzIgd2NudFtCVENfV0NOVF9OVU1dO1xuIH07XG4gXG4gc3RydWN0IHJ0dzg5X2J0Y19tb2R1bGUge1xuQEAgLTIyNDksNiArMjI3MSwxNiBAQCBzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8ge1xuIFx0dTMyIHNjYW5faW5mb191cGRhdGU6IDE7XG4gXHR1MzIgbG5hX2NvbnN0cmFpbjogMztcbiBcdHUzMiByc3ZkOiAxNztcbitcbitcdHUzMiBiY250W0JUQ19CQ05UX05VTV07XG4rfTtcbitcbisjZGVmaW5lIFJUVzg5X0JUQ19XTF9ERUZfVFhfUFdSIEdFTk1BU0soNywgMClcbitzdHJ1Y3QgcnR3ODlfYnRjX3JmX3RyeF9wYXJhX3YwIHtcbitcdHUzMiB3bF90eF9wb3dlcjsgLyogYWJzb2x1dGUgVHggcG93ZXIgKGRCbSksIDB4ZmYtXHUwMDNlIG5vIEJUQyBjb250cm9sICovXG4rXHR1MzIgd2xfcnhfZ2FpbjsgIC8qIHJ4IGdhaW4gdGFibGUgaW5kZXggKFRCRC4pICovXG4rXHR1OCBidF90eF9wb3dlcjsgLyogZGVjcmVhc2UgVHggcG93ZXIgKGRCKSAqL1xuK1x0dTggYnRfcnhfZ2FpbjsgIC8qIExOQSBjb25zdHJhaW4gbGV2ZWwgKi9cbiB9O1xuIFxuIHN0cnVjdCBydHc4OV9idGNfcmZfdHJ4X3BhcmFfdjkge1xuQEAgLTIyNjIsMTEgKzIyOTQsMTEgQEAgc3RydWN0IHJ0dzg5X2J0Y19yZl90cnhfcGFyYV92OSB7XG4gXG4gc3RydWN0IHJ0dzg5X2J0Y19jeCB7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX3dsX2luZm8gd2w7XG4tXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gYnQ7XG4tXHRzdHJ1Y3QgcnR3ODlfYnRjXzNyZGN4X2luZm8gb3RoZXI7XG4rXHRzdHJ1Y3QgcnR3ODlfYnRjX2J0X2luZm8gYnQwO1xuK1x0c3RydWN0IHJ0dzg5X2J0Y19idF9pbmZvIGJ0MTtcbitcdHN0cnVjdCBydHc4OV9idGNfZXh0c29jX2luZm8gYnRfZXh0O1xuK1x0c3RydWN0IHJ0dzg5X2J0Y19yZl90cnhfcGFyYV92OSByZl9wYXJhO1xuIFx0dTMyIHN0YXRlX21hcDtcbi1cdHUzMiBjbnRfYnRbQlRDX0JDTlRfTlVNXTtcbi1cdHUzMiBjbnRfd2xbQlRDX1dDTlRfTlVNXTtcbiB9O1xuIFxuIHN0cnVjdCBydHc4OV9idGNfZmJ0Y190ZG1hIHtcbkBAIC0zMDQ1LDI0ICszMDc3LDE4IEBAIHN0cnVjdCBydHc4OV9idGNfZmJ0Y19idGRldmluZm8ge1xuIFx0X19sZTMyIGZsdXNoX3RpbWU7XG4gfSBfX3BhY2tlZDtcbiBcbi0jZGVmaW5lIFJUVzg5X0JUQ19XTF9ERUZfVFhfUFdSIEdFTk1BU0soNywgMClcbi1zdHJ1Y3QgcnR3ODlfYnRjX3JmX3RyeF9wYXJhIHtcbi1cdHUzMiB3bF90eF9wb3dlcjsgLyogYWJzb2x1dGUgVHggcG93ZXIgKGRCbSksIDB4ZmYtXHUwMDNlIG5vIEJUQyBjb250cm9sICovXG4tXHR1MzIgd2xfcnhfZ2FpbjsgIC8qIHJ4IGdhaW4gdGFibGUgaW5kZXggKFRCRC4pICovXG4tXHR1OCBidF90eF9wb3dlcjsgLyogZGVjcmVhc2UgVHggcG93ZXIgKGRCKSAqL1xuLVx0dTggYnRfcnhfZ2FpbjsgIC8qIExOQSBjb25zdHJhaW4gbGV2ZWwgKi9cbi19O1xuLVxuIHN0cnVjdCBydHc4OV9idGNfdHJ4X2luZm8ge1xuIFx0dTggdHhfbHZsO1xuIFx0dTggcnhfbHZsO1xuIFx0dTggd2xfcnNzaTtcbiBcdHU4IGJ0X3Jzc2k7XG4gXG4tXHRzOCB0eF9wb3dlcjsgLyogYWJzb2x1dGUgVHggcG93ZXIgKGRCbSksIDB4ZmYtXHUwMDNlIG5vIEJUQyBjb250cm9sICovXG4tXHRzOCByeF9nYWluOyAgLyogcnggZ2FpbiB0YWJsZSBpbmRleCAoVEJELikgKi9cbi1cdHM4IGJ0X3R4X3Bvd2VyOyAvKiBkZWNyZWFzZSBUeCBwb3dlciAoZEIpICovXG4tXHRzOCBidF9yeF9nYWluOyAgLyogTE5BIGNvbnN0cmFpbiBsZXZlbCAqL1xuK1x0czggd2xfdHhfcG93ZXJbUlRXODlfUEhZX05VTV07IC8qIGFic29sdXRlIFR4IHBvd2VyIChkQm0pLCAweGZmLVx1MDAzZSBubyBCVEMgY29udHJvbCAqL1xuK1x0czggd2xfcnhfZ2FpbltSVFc4OV9QSFlfTlVNXTsgIC8qIHJ4IGdhaW4gdGFibGUgaW5kZXggKFRCRC4pICovXG4rXHRzOCBidF90eF9wb3dlcltCVENfQUxMX0JUXTsgLyogZGVjcmVhc2UgVHggcG93ZXIgKGRCKSAqL1xuK1x0czggYnRfcnhfZ2FpbltCVENfQUxMX0JUXTsgIC8qIExOQSBjb25zdHJhaW4gbGV2ZWwgKi9cbitcdHM4IHpiX3R4X3Bvd2VyW0JUQ19BTExfQlRdO1xuK1x0czggemJfcnhfZ2FpbltCVENfQUxMX0JUXTtcbiBcbiBcdHU4IGNuOyAvKiBjb25kaXRpb25fbnVtICovXG4gXHRzOCBuaG07XG5AQCAtMzEwOSw3ICszMTM1LDcgQEAgc3RydWN0IHJ0dzg5X2J0Y19kbSB7XG4gXHRzdHJ1Y3QgcnR3ODlfYnRjX2ZidGNfdGRtYSB0ZG1hX25vdztcbiBcdHN0cnVjdCBydHc4OV9tYWNfYXhfY29leF9nbnQgZ250O1xuIFx0dW5pb24gcnR3ODlfYnRjX2luaXRfaW5mb191IGluaXRfaW5mbzsgLyogcGFzcyB0byB3bF9mdyBpZiBvZmZsb2FkICovXG4tXHRzdHJ1Y3QgcnR3ODlfYnRjX3JmX3RyeF9wYXJhIHJmX3RyeF9wYXJhO1xuK1x0c3RydWN0IHJ0dzg5X2J0Y19yZl90cnhfcGFyYV92OSByZl90cnhfcGFyYTtcbiBcdHN0cnVjdCBydHc4OV9idGNfd2xfdHhfbGltaXRfcGFyYSB3bF90eF9saW1pdDtcbiBcdHN0cnVjdCBydHc4OV9idGNfZG1fc3RlcCBkbV9zdGVwO1xuIFx0c3RydWN0IHJ0dzg5X2J0Y193bF9zY2NfY3RybCB3bF9zY2M7XG5AQCAtMzE0Niw2ICszMTcyLDcgQEAgc3RydWN0IHJ0dzg5X2J0Y19kbSB7XG4gXG4gXHR1OCBydW5fcmVhc29uO1xuIFx0dTggcnVuX2FjdGlvbjtcbitcdHU4IHdsX3R4X3B3cl9waHlfbWFwO1xuIFxuIFx0dTggd2xfcHJlX2FnYzogMjtcbiBcdHU4IHdsX2xuYTI6IDE7XG5AQCAtMzE1Myw2ICszMTgwLDEwIEBAIHN0cnVjdCBydHc4OV9idGNfZG0ge1xuIFx0dTggd2xfcHJlX2FnY19yYjogMjtcbiBcdHU4IGJ0X3NlbGVjdDogMjsgLyogMDpzMCwgMTpzMSwgMjpzMCBcdTAwMjYgczEsIHJlZmVyIHRvIGVudW0gYnRjX2J0X2luZGV4ICovXG4gXHR1OCBzbG90X3JlcV9tb3JlOiAxO1xuK1x0dTggbHBzX2N0cmxfc2NiZDogMTtcbitcbitcdHU4IGxwc19jdHJsX3NjYmRfbGFzdDogMTtcbitcdHU4IGxwc19jdHJsX2NoYW5nZTogMTtcbiB9O1xuIFxuIHN0cnVjdCBydHc4OV9idGNfY3RybCB7XG5AQCAtMzE5Myw2ICszMjI0LDkgQEAgZW51bSBydHc4OV9idGNfYnRmX2Z3X2V2ZW50IHtcbiBcdEJURl9FVk5UX0JVRl9PVkVSRkxPVyxcbiBcdEJURl9FVk5UX0MySF9MT09QQkFDSyxcbiBcdEJURl9FVk5UX0JUX1FVRVJZX1RYUFdSLCAvKiBmd2MyaGZ1bmMgXHUwMDNlIDMgKi9cbitcdEJURl9FVk5UX1pCX0lORk8gPSAxMSxcbitcdEJURl9FVk5UX1pCX0NIID0gMTIsXG4rXHRCVEZfRVZOVF9aQl9RVUVSWV9UWFBXUiA9IDEzLFxuIFx0QlRGX0VWTlRfTUFYLFxuIH07XG4gXG5AQCAtMzMzNCwxMiArMzM2OCwxMyBAQCBzdHJ1Y3QgcnR3ODlfYnRjX3ZlciB7XG4gXG4gXHR1OCBmd2V2bnRycHRsO1xuIFx0dTggZndjMmhmdW5jO1xuLVx0dTggZHJ2aW5mb190eXBlO1xuK1x0dTggZHJ2aW5mb192ZXI7XG4gXHR1MTYgaW5mb19idWY7XG4gXHR1OCBtYXhfcm9sZV9udW07XG4gXHR1OCBmY3hvc2k7XG4gXHR1OCBmY3htbG87XG4gXHR1OCBidF9kZXNpcmVkO1xuK1x0dTggZmN4dHJ4O1xuIH07XG4gXG4gc3RydWN0IHJ0dzg5X2J0Y19idGZfZndpbmZvIHtcbkBAIC0zMzg1LDcgKzM0MjAsNyBAQCBzdHJ1Y3QgcnR3ODlfYnRjIHtcbiBcdHN0cnVjdCB3aXBoeV93b3JrIGRoY3Bfbm90aWZ5X3dvcms7XG4gXHRzdHJ1Y3Qgd2lwaHlfd29yayBpY21wX25vdGlmeV93b3JrO1xuIFxuLVx0dTMyIGJ0X3JlcV9sZW47XG4rXHR1MzIgYnRfcmVxX2xlbltSVFc4OV9QSFlfTlVNXTtcbiBcbiBcdHU4IHBvbGljeVtSVFc4OV9CVENfUE9MSUNZX01BWExFTl07XG4gXHR1OCBhbnRfdHlwZTtcbkBAIC0zMzk3LDYgKzM0MzIsNyBAQCBzdHJ1Y3QgcnR3ODlfYnRjIHtcbiBcdGJvb2wgdXBkYXRlX3BvbGljeV9mb3JjZTtcbiBcdGJvb2wgbHBzO1xuIFx0Ym9vbCBtYW51YWxfY3RybDtcbitcdGJvb2wgY2xpX2gyY19jbWQ7XG4gfTtcbiBcbiBlbnVtIHJ0dzg5X2J0Y19obXNnIHtcbkBAIC00NzQ1LDEwICs0NzgxLDEwIEBAIHN0cnVjdCBydHc4OV9jaGlwX2luZm8ge1xuIFxuIFx0dTggbW9uX3JlZ19udW07XG4gXHRjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX2ZidGNfbXJlZyAqbW9uX3JlZztcbi1cdHU4IHJmX3BhcmFfdWxpbmtfbnVtO1xuLVx0Y29uc3Qgc3RydWN0IHJ0dzg5X2J0Y19yZl90cnhfcGFyYSAqcmZfcGFyYV91bGluaztcbi1cdHU4IHJmX3BhcmFfZGxpbmtfbnVtO1xuLVx0Y29uc3Qgc3RydWN0IHJ0dzg5X2J0Y19yZl90cnhfcGFyYSAqcmZfcGFyYV9kbGluaztcbitcdGNvbnN0IHN0cnVjdCBydHc4OV9idGNfcmZfdHJ4X3BhcmFfdjAgKnJmX3BhcmFfdWxpbmtfdjA7XG4rXHRjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3JmX3RyeF9wYXJhX3YwICpyZl9wYXJhX2RsaW5rX3YwO1xuK1x0dTggcmZfcGFyYV91bGlua19udW1fdjA7XG4rXHR1OCByZl9wYXJhX2RsaW5rX251bV92MDtcbiBcdGNvbnN0IHN0cnVjdCBydHc4OV9idGNfcmZfdHJ4X3BhcmFfdjkgKnJmX3BhcmFfdWxpbmtfdjk7XG4gXHRjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3JmX3RyeF9wYXJhX3Y5ICpyZl9wYXJhX2RsaW5rX3Y5O1xuIFx0dTggcmZfcGFyYV91bGlua19udW1fdjk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5jXG5pbmRleCBkNmE1OTRiNzVhYjIwMi4uODA0YWUyYTExMzBkMGYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuY1xuQEAgLTYzMDMsNDggKzYzMDMsMTU4IEBAIGludCBydHc4OV9md19oMmNfY3hkcnZfY3RybF92NyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHR5cGUpXG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBcbi0jZGVmaW5lIEgyQ19MRU5fQ1hEUlZJTkZPX1RSWCAoMjggKyBIMkNfTEVOX0NYRFJWSERSKVxuLWludCBydHc4OV9md19oMmNfY3hkcnZfdHJ4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggdHlwZSlcbitpbnQgcnR3ODlfZndfaDJjX2N4ZHJ2X3RyeF92NyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHR5cGUpXG4ge1xuIFx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXHUwMDI2cnR3ZGV2LVx1MDAzZWJ0YztcbitcdHN0cnVjdCBydHc4OV9idGNfcmZfdHJ4X3BhcmFfdjkgcmZfcGFyYSA9IGJ0Yy1cdTAwM2VkbS5yZl90cnhfcGFyYTtcbiBcdHN0cnVjdCBydHc4OV9idGNfdHJ4X2luZm8gKnRyeCA9IFx1MDAyNmJ0Yy1cdTAwM2VkbS50cnhfaW5mbztcbitcdHN0cnVjdCBydHc4OV9idGNfd2xfaW5mbyAqd2wgPSBcdTAwMjZidGMtXHUwMDNlY3gud2w7XG4rXHRzdHJ1Y3QgcnR3ODlfaDJjX2N4dHJ4X3Y3ICpoMmM7XG4rXHR1MzIgbGVuID0gc2l6ZW9mKCpoMmMpO1xuIFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbi1cdHU4ICpjbWQ7XG4gXHRpbnQgcmV0O1xuK1x0dTggaTtcbiBcbi1cdHNrYiA9IHJ0dzg5X2Z3X2gyY19hbGxvY19za2Jfd2l0aF9oZHIocnR3ZGV2LCBIMkNfTEVOX0NYRFJWSU5GT19UUlgpO1xuK1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgUlRXODlfUEhZX05VTTsgaSsrKSB7XG4rXHRcdHRyeC1cdTAwM2V3bF90eF9wb3dlcltpXSA9IHUzMl9nZXRfYml0cyhyZl9wYXJhLndsX3R4X3Bvd2VyW2ldLFxuK1x0XHRcdFx0XHRcdCAgIFJUVzg5X0JUQ19XTF9ERUZfVFhfUFdSKTtcbitcdFx0dHJ4LVx1MDAzZXdsX3J4X2dhaW5baV0gPSB1MzJfZ2V0X2JpdHMocmZfcGFyYS53bF9yeF9nYWluW2ldLFxuK1x0XHRcdFx0XHRcdCAgUlRXODlfQlRDX1dMX0RFRl9UWF9QV1IpO1xuK1x0fVxuK1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgQlRDX0FMTF9CVDsgaSsrKSB7XG4rXHRcdHRyeC1cdTAwM2VidF90eF9wb3dlcltpXSA9IHUzMl9nZXRfYml0cyhyZl9wYXJhLmJ0X3R4X3Bvd2VyW2ldLFxuK1x0XHRcdFx0XHRcdCAgIFJUVzg5X0JUQ19XTF9ERUZfVFhfUFdSKTtcbitcdFx0dHJ4LVx1MDAzZWJ0X3J4X2dhaW5baV0gPSB1MzJfZ2V0X2JpdHMocmZfcGFyYS5idF9yeF9nYWluW2ldLFxuK1x0XHRcdFx0XHRcdCAgUlRXODlfQlRDX1dMX0RFRl9UWF9QV1IpO1xuK1x0XHR0cngtXHUwMDNlemJfdHhfcG93ZXJbaV0gPSB1MzJfZ2V0X2JpdHMocmZfcGFyYS56Yl90eF9wb3dlcltpXSxcbitcdFx0XHRcdFx0XHQgICBSVFc4OV9CVENfV0xfREVGX1RYX1BXUik7XG4rXHRcdHRyeC1cdTAwM2V6Yl9yeF9nYWluW2ldID0gdTMyX2dldF9iaXRzKHJmX3BhcmEuemJfcnhfZ2FpbltpXSxcbitcdFx0XHRcdFx0XHQgIFJUVzg5X0JUQ19XTF9ERUZfVFhfUFdSKTtcbitcdH1cbitcdHRyeC1cdTAwM2VjbiA9IHdsLVx1MDAzZWNuX3JlcG9ydDtcbitcdHRyeC1cdTAwM2VuaG0gPSB3bC1cdTAwM2VuaG0ucHdyO1xuK1xuK1x0c2tiID0gcnR3ODlfZndfaDJjX2FsbG9jX3NrYl93aXRoX2hkcihydHdkZXYsIGxlbik7XG4gXHRpZiAoIXNrYikge1xuLVx0XHRydHc4OV9lcnIocnR3ZGV2LCBcImZhaWxlZCB0byBhbGxvYyBza2IgZm9yIGgyYyBjeGRydl90cnhcXG5cIik7XG4rXHRcdHJ0dzg5X2VycihydHdkZXYsIFwiZmFpbGVkIHRvIGFsbG9jIHNrYiBmb3IgaDJjIGN4dHJ4X3Y5XFxuXCIpO1xuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcdH1cbi1cdHNrYl9wdXQoc2tiLCBIMkNfTEVOX0NYRFJWSU5GT19UUlgpO1xuLVx0Y21kID0gc2tiLVx1MDAzZWRhdGE7XG4rXHRza2JfcHV0KHNrYiwgbGVuKTtcbitcdGgyYyA9IChzdHJ1Y3QgcnR3ODlfaDJjX2N4dHJ4X3Y3ICopc2tiLVx1MDAzZWRhdGE7XG4gXG4tXHRSVFc4OV9TRVRfRldDTURfQ1hIRFJfVFlQRShjbWQsIHR5cGUpO1xuLVx0UlRXODlfU0VUX0ZXQ01EX0NYSERSX0xFTihjbWQsIEgyQ19MRU5fQ1hEUlZJTkZPX1RSWCAtIEgyQ19MRU5fQ1hEUlZIRFIpO1xuLVxuLVx0UlRXODlfU0VUX0ZXQ01EX0NYVFJYX1RYTFYoY21kLCB0cngtXHUwMDNldHhfbHZsKTtcbi1cdFJUVzg5X1NFVF9GV0NNRF9DWFRSWF9SWExWKGNtZCwgdHJ4LVx1MDAzZXJ4X2x2bCk7XG4tXHRSVFc4OV9TRVRfRldDTURfQ1hUUlhfV0xSU1NJKGNtZCwgdHJ4LVx1MDAzZXdsX3Jzc2kpO1xuLVx0UlRXODlfU0VUX0ZXQ01EX0NYVFJYX0JUUlNTSShjbWQsIHRyeC1cdTAwM2VidF9yc3NpKTtcbi1cdFJUVzg5X1NFVF9GV0NNRF9DWFRSWF9UWFBXUihjbWQsIHRyeC1cdTAwM2V0eF9wb3dlcik7XG4tXHRSVFc4OV9TRVRfRldDTURfQ1hUUlhfUlhHQUlOKGNtZCwgdHJ4LVx1MDAzZXJ4X2dhaW4pO1xuLVx0UlRXODlfU0VUX0ZXQ01EX0NYVFJYX0JUVFhQV1IoY21kLCB0cngtXHUwMDNlYnRfdHhfcG93ZXIpO1xuLVx0UlRXODlfU0VUX0ZXQ01EX0NYVFJYX0JUUlhHQUlOKGNtZCwgdHJ4LVx1MDAzZWJ0X3J4X2dhaW4pO1xuLVx0UlRXODlfU0VUX0ZXQ01EX0NYVFJYX0NOKGNtZCwgdHJ4LVx1MDAzZWNuKTtcbi1cdFJUVzg5X1NFVF9GV0NNRF9DWFRSWF9OSE0oY21kLCB0cngtXHUwMDNlbmhtKTtcbi1cdFJUVzg5X1NFVF9GV0NNRF9DWFRSWF9CVFBST0ZJTEUoY21kLCB0cngtXHUwMDNlYnRfcHJvZmlsZSk7XG4tXHRSVFc4OV9TRVRfRldDTURfQ1hUUlhfUlNWRDIoY21kLCB0cngtXHUwMDNlcnN2ZDIpO1xuLVx0UlRXODlfU0VUX0ZXQ01EX0NYVFJYX1RYUkFURShjbWQsIHRyeC1cdTAwM2V0eF9yYXRlKTtcbi1cdFJUVzg5X1NFVF9GV0NNRF9DWFRSWF9SWFJBVEUoY21kLCB0cngtXHUwMDNlcnhfcmF0ZSk7XG4tXHRSVFc4OV9TRVRfRldDTURfQ1hUUlhfVFhUUChjbWQsIHRyeC1cdTAwM2V0eF90cCk7XG4tXHRSVFc4OV9TRVRfRldDTURfQ1hUUlhfUlhUUChjbWQsIHRyeC1cdTAwM2VyeF90cCk7XG4tXHRSVFc4OV9TRVRfRldDTURfQ1hUUlhfUlhFUlJSQShjbWQsIHRyeC1cdTAwM2VyeF9lcnJfcmF0aW8pO1xuK1x0aDJjLVx1MDAzZWhkci50eXBlID0gdHlwZTtcbitcdGgyYy1cdTAwM2VoZHIudmVyID0gYnRjLVx1MDAzZXZlci1cdTAwM2VmY3h0cng7XG4rXHRoMmMtXHUwMDNlaGRyLmxlbiA9IHNpemVvZigqaDJjKSAtIEgyQ19MRU5fQ1hEUlZIRFJfVjc7XG4rXG4rXHRoMmMtXHUwMDNldjdfdTgudHhfbHZsID0gdHJ4LVx1MDAzZXR4X2x2bDtcbitcdGgyYy1cdTAwM2V2N191OC5yeF9sdmwgPSB0cngtXHUwMDNlcnhfbHZsO1xuK1x0aDJjLVx1MDAzZXY3X3U4LndsX3Jzc2kgPSB0cngtXHUwMDNld2xfcnNzaTtcbitcdGgyYy1cdTAwM2V2N191OC5idF9yc3NpID0gdHJ4LVx1MDAzZWJ0X3Jzc2k7XG4rXHRoMmMtXHUwMDNldjdfdTgud2xfdHhfcG93ZXIgPSB0cngtXHUwMDNld2xfdHhfcG93ZXJbUlRXODlfUEhZXzBdO1xuK1x0aDJjLVx1MDAzZXY3X3U4LndsX3J4X2dhaW4gPSB0cngtXHUwMDNld2xfcnhfZ2FpbltSVFc4OV9QSFlfMF07XG4rXHRoMmMtXHUwMDNldjdfdTguYnRfdHhfcG93ZXIgPSB0cngtXHUwMDNlYnRfdHhfcG93ZXJbQlRDX0JUXzFTVF07XG4rXHRoMmMtXHUwMDNldjdfdTguYnRfcnhfZ2FpbiA9IHRyeC1cdTAwM2VidF9yeF9nYWluW0JUQ19CVF8xU1RdO1xuK1x0aDJjLVx1MDAzZXY3X3U4LnpiX3R4X3Bvd2VyID0gdHJ4LVx1MDAzZXpiX3R4X3Bvd2VyW0JUQ19CVF8xU1RdO1xuK1x0aDJjLVx1MDAzZXY3X3U4LnpiX3J4X2dhaW4gPSB0cngtXHUwMDNlemJfcnhfZ2FpbltCVENfQlRfMVNUXTtcbitcdGgyYy1cdTAwM2V2N191OC5jbiA9IHRyeC1cdTAwM2VjbjtcbitcdGgyYy1cdTAwM2V2N191OC5uaG0gPSB0cngtXHUwMDNlbmhtO1xuK1x0aDJjLVx1MDAzZXY3X3U4LmJ0X3Byb2ZpbGUgPSB0cngtXHUwMDNlYnRfcHJvZmlsZTtcbitcdGgyYy1cdTAwM2V2N191OC5yc3ZkMiA9IHRyeC1cdTAwM2Vyc3ZkMjtcbitcdGgyYy1cdTAwM2V2N19sZS50eF9yYXRlID0gY3B1X3RvX2xlMTYodHJ4LVx1MDAzZXR4X3JhdGUpO1xuK1x0aDJjLVx1MDAzZXY3X2xlLnJ4X3JhdGUgPSBjcHVfdG9fbGUxNih0cngtXHUwMDNlcnhfcmF0ZSk7XG4rXHRoMmMtXHUwMDNldjdfbGUudHhfdHAgPSBjcHVfdG9fbGUzMih0cngtXHUwMDNldHhfdHApO1xuK1x0aDJjLVx1MDAzZXY3X2xlLnJ4X3RwID0gY3B1X3RvX2xlMzIodHJ4LVx1MDAzZXJ4X3RwKTtcbitcdGgyYy1cdTAwM2V2N19sZS5yeF9lcnJfcmF0aW8gPSBjcHVfdG9fbGUzMih0cngtXHUwMDNlcnhfZXJyX3JhdGlvKTtcbiBcbiBcdHJ0dzg5X2gyY19wa3Rfc2V0X2hkcihydHdkZXYsIHNrYiwgRldDTURfVFlQRV9IMkMsXG4gXHRcdFx0ICAgICAgSDJDX0NBVF9PVVRTUkMsIEJURkNfU0VULFxuLVx0XHRcdCAgICAgIFNFVF9EUlZfSU5GTywgMCwgMCxcbi1cdFx0XHQgICAgICBIMkNfTEVOX0NYRFJWSU5GT19UUlgpO1xuK1x0XHRcdCAgICAgIFNFVF9EUlZfSU5GTywgMCwgMCwgbGVuKTtcbitcbitcdHJldCA9IHJ0dzg5X2gyY190eChydHdkZXYsIHNrYiwgZmFsc2UpO1xuK1x0aWYgKHJldCkge1xuK1x0XHRydHc4OV9lcnIocnR3ZGV2LCBcImZhaWxlZCB0byBzZW5kIGgyY1xcblwiKTtcbitcdFx0Z290byBmYWlsO1xuK1x0fVxuK1xuK1x0cmV0dXJuIDA7XG4rZmFpbDpcbitcdGRldl9rZnJlZV9za2JfYW55KHNrYik7XG4rXG4rXHRyZXR1cm4gcmV0O1xuK31cbitcbitpbnQgcnR3ODlfZndfaDJjX2N4ZHJ2X3RyeF92OShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHR5cGUpXG4re1xuK1x0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXHUwMDI2cnR3ZGV2LVx1MDAzZWJ0YztcbitcdHN0cnVjdCBydHc4OV9idGNfcmZfdHJ4X3BhcmFfdjkgcmZfcGFyYSA9IGJ0Yy1cdTAwM2VkbS5yZl90cnhfcGFyYTtcbitcdHN0cnVjdCBydHc4OV9idGNfdHJ4X2luZm8gKnRyeCA9IFx1MDAyNmJ0Yy1cdTAwM2VkbS50cnhfaW5mbztcbitcdHN0cnVjdCBydHc4OV9idGNfd2xfaW5mbyAqd2wgPSBcdTAwMjZidGMtXHUwMDNlY3gud2w7XG4rXHRzdHJ1Y3QgcnR3ODlfaDJjX2N4dHJ4X3Y5ICpoMmM7XG4rXHR1MzIgbGVuID0gc2l6ZW9mKCpoMmMpO1xuK1x0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbitcdGludCByZXQ7XG4rXHR1OCBpO1xuK1xuK1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgUlRXODlfUEhZX05VTTsgaSsrKSB7XG4rXHRcdHRyeC1cdTAwM2V3bF90eF9wb3dlcltpXSA9IHUzMl9nZXRfYml0cyhyZl9wYXJhLndsX3R4X3Bvd2VyW2ldLFxuK1x0XHRcdFx0XHRcdCAgIFJUVzg5X0JUQ19XTF9ERUZfVFhfUFdSKTtcbitcdFx0dHJ4LVx1MDAzZXdsX3J4X2dhaW5baV0gPSB1MzJfZ2V0X2JpdHMocmZfcGFyYS53bF9yeF9nYWluW2ldLFxuK1x0XHRcdFx0XHRcdCAgUlRXODlfQlRDX1dMX0RFRl9UWF9QV1IpO1xuK1x0fVxuK1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgQlRDX0FMTF9CVDsgaSsrKSB7XG4rXHRcdHRyeC1cdTAwM2VidF90eF9wb3dlcltpXSA9IHUzMl9nZXRfYml0cyhyZl9wYXJhLmJ0X3R4X3Bvd2VyW2ldLFxuK1x0XHRcdFx0XHRcdCAgIFJUVzg5X0JUQ19XTF9ERUZfVFhfUFdSKTtcbitcdFx0dHJ4LVx1MDAzZWJ0X3J4X2dhaW5baV0gPSB1MzJfZ2V0X2JpdHMocmZfcGFyYS5idF9yeF9nYWluW2ldLFxuK1x0XHRcdFx0XHRcdCAgUlRXODlfQlRDX1dMX0RFRl9UWF9QV1IpO1xuK1x0XHR0cngtXHUwMDNlemJfdHhfcG93ZXJbaV0gPSB1MzJfZ2V0X2JpdHMocmZfcGFyYS56Yl90eF9wb3dlcltpXSxcbitcdFx0XHRcdFx0XHQgICBSVFc4OV9CVENfV0xfREVGX1RYX1BXUik7XG4rXHRcdHRyeC1cdTAwM2V6Yl9yeF9nYWluW2ldID0gdTMyX2dldF9iaXRzKHJmX3BhcmEuemJfcnhfZ2FpbltpXSxcbitcdFx0XHRcdFx0XHQgIFJUVzg5X0JUQ19XTF9ERUZfVFhfUFdSKTtcbitcdH1cbitcdHRyeC1cdTAwM2VjbiA9IHdsLVx1MDAzZWNuX3JlcG9ydDtcbitcdHRyeC1cdTAwM2VuaG0gPSB3bC1cdTAwM2VuaG0ucHdyO1xuK1xuK1x0c2tiID0gcnR3ODlfZndfaDJjX2FsbG9jX3NrYl93aXRoX2hkcihydHdkZXYsIGxlbik7XG4rXHRpZiAoIXNrYikge1xuK1x0XHRydHc4OV9lcnIocnR3ZGV2LCBcImZhaWxlZCB0byBhbGxvYyBza2IgZm9yIGgyYyBjeHRyeF92OVxcblwiKTtcbitcdFx0cmV0dXJuIC1FTk9NRU07XG4rXHR9XG4rXHRza2JfcHV0KHNrYiwgbGVuKTtcbitcdGgyYyA9IChzdHJ1Y3QgcnR3ODlfaDJjX2N4dHJ4X3Y5ICopc2tiLVx1MDAzZWRhdGE7XG4rXG4rXHRoMmMtXHUwMDNlaGRyLnR5cGUgPSB0eXBlO1xuK1x0aDJjLVx1MDAzZWhkci52ZXIgPSBidGMtXHUwMDNldmVyLVx1MDAzZWZjeHRyeDtcbitcdGgyYy1cdTAwM2VoZHIubGVuID0gc2l6ZW9mKCpoMmMpIC0gSDJDX0xFTl9DWERSVkhEUl9WNztcbitcbitcdGgyYy1cdTAwM2V2OV91OC50eF9sdmwgPSB0cngtXHUwMDNldHhfbHZsO1xuK1x0aDJjLVx1MDAzZXY5X3U4LnJ4X2x2bCA9IHRyeC1cdTAwM2VyeF9sdmw7XG4rXHRoMmMtXHUwMDNldjlfdTgud2xfcnNzaSA9IHRyeC1cdTAwM2V3bF9yc3NpO1xuK1x0aDJjLVx1MDAzZXY5X3U4LmJ0X3Jzc2kgPSB0cngtXHUwMDNlYnRfcnNzaTtcbitcbitcdGZvciAoaSA9IDA7IGkgXHUwMDNjIFJUVzg5X1BIWV9OVU07IGkrKykge1xuK1x0XHRoMmMtXHUwMDNldjlfdTgud2xfdHhfcG93ZXJbaV0gPSB0cngtXHUwMDNld2xfdHhfcG93ZXJbaV07XG4rXHRcdGgyYy1cdTAwM2V2OV91OC53bF9yeF9nYWluW2ldID0gdHJ4LVx1MDAzZXdsX3J4X2dhaW5baV07XG4rXHR9XG4rXG4rXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBCVENfQUxMX0JUOyBpKyspIHtcbitcdFx0aDJjLVx1MDAzZXY5X3U4LmJ0X3R4X3Bvd2VyW2ldID0gdHJ4LVx1MDAzZWJ0X3R4X3Bvd2VyW2ldO1xuK1x0XHRoMmMtXHUwMDNldjlfdTguYnRfcnhfZ2FpbltpXSA9IHRyeC1cdTAwM2VidF9yeF9nYWluW2ldO1xuK1x0XHRoMmMtXHUwMDNldjlfdTguemJfdHhfcG93ZXJbaV0gPSB0cngtXHUwMDNlemJfdHhfcG93ZXJbaV07XG4rXHRcdGgyYy1cdTAwM2V2OV91OC56Yl9yeF9nYWluW2ldID0gdHJ4LVx1MDAzZXpiX3J4X2dhaW5baV07XG4rXHR9XG4rXHRoMmMtXHUwMDNldjlfdTguY24gPSB0cngtXHUwMDNlY247XG4rXHRoMmMtXHUwMDNldjlfdTgubmhtID0gdHJ4LVx1MDAzZW5obTtcbitcdGgyYy1cdTAwM2V2OV91OC5idF9wcm9maWxlID0gdHJ4LVx1MDAzZWJ0X3Byb2ZpbGU7XG4rXHRoMmMtXHUwMDNldjlfdTgucnN2ZDIgPSB0cngtXHUwMDNlcnN2ZDI7XG4rXHRoMmMtXHUwMDNldjlfbGUudHhfcmF0ZSA9IGNwdV90b19sZTE2KHRyeC1cdTAwM2V0eF9yYXRlKTtcbitcdGgyYy1cdTAwM2V2OV9sZS5yeF9yYXRlID0gY3B1X3RvX2xlMTYodHJ4LVx1MDAzZXJ4X3JhdGUpO1xuK1x0aDJjLVx1MDAzZXY5X2xlLnR4X3RwID0gY3B1X3RvX2xlMzIodHJ4LVx1MDAzZXR4X3RwKTtcbitcdGgyYy1cdTAwM2V2OV9sZS5yeF90cCA9IGNwdV90b19sZTMyKHRyeC1cdTAwM2VyeF90cCk7XG4rXHRoMmMtXHUwMDNldjlfbGUucnhfZXJyX3JhdGlvID0gY3B1X3RvX2xlMzIodHJ4LVx1MDAzZXJ4X2Vycl9yYXRpbyk7XG4rXG4rXHRydHc4OV9oMmNfcGt0X3NldF9oZHIocnR3ZGV2LCBza2IsIEZXQ01EX1RZUEVfSDJDLFxuK1x0XHRcdCAgICAgIEgyQ19DQVRfT1VUU1JDLCBCVEZDX1NFVCxcbitcdFx0XHQgICAgICBTRVRfRFJWX0lORk8sIDAsIDAsIGxlbik7XG4gXG4gXHRyZXQgPSBydHc4OV9oMmNfdHgocnR3ZGV2LCBza2IsIGZhbHNlKTtcbiBcdGlmIChyZXQpIHtcbkBAIC02NDA0LDYgKzY1MTQsOTAgQEAgaW50IHJ0dzg5X2Z3X2gyY19jeGRydl9yZmsoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCB0eXBlKVxuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG4raW50IHJ0dzg5X2Z3X2gyY19jeHR4cHdyX3Y3KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggdHlwZSlcbit7XG4rXHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcdTAwMjZydHdkZXYtXHUwMDNlYnRjO1xuK1x0c3RydWN0IHJ0dzg5X2J0Y19kbSAqZG0gPSBcdTAwMjZidGMtXHUwMDNlZG07XG4rXHRzdHJ1Y3QgcnR3ODlfYnRjX3JmX3RyeF9wYXJhX3Y5IHJwID0gZG0tXHUwMDNlcmZfdHJ4X3BhcmE7XG4rXHRzdHJ1Y3QgcnR3ODlfaDJjX2N4dHhwd3JfdjcgKmgyYztcbitcdHUzMiBsZW4gPSBzaXplb2YoKmgyYyk7XG4rXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuK1x0aW50IHJldDtcbitcbitcdHNrYiA9IHJ0dzg5X2Z3X2gyY19hbGxvY19za2Jfd2l0aF9oZHIocnR3ZGV2LCBsZW4pO1xuK1x0aWYgKCFza2IpIHtcbitcdFx0cnR3ODlfZXJyKHJ0d2RldiwgXCJmYWlsZWQgdG8gYWxsb2Mgc2tiIGZvciBoMmMgY3hkcnZfY3RybFxcblwiKTtcbitcdFx0cmV0dXJuIC1FTk9NRU07XG4rXHR9XG4rXHRza2JfcHV0KHNrYiwgbGVuKTtcbitcdGgyYyA9IChzdHJ1Y3QgcnR3ODlfaDJjX2N4dHhwd3JfdjcgKilza2ItXHUwMDNlZGF0YTtcbitcbitcdGgyYy1cdTAwM2VoZHIudHlwZSA9IHR5cGU7XG4rXHRoMmMtXHUwMDNlaGRyLnZlciA9IGJ0Yy1cdTAwM2V2ZXItXHUwMDNlZmN4dHJ4O1xuK1x0aDJjLVx1MDAzZWhkci5sZW4gPSBzaXplb2YoKmgyYykgLSBIMkNfTEVOX0NYRFJWSERSX1Y3O1xuK1x0aDJjLVx1MDAzZXB3ciA9IHJwLndsX3R4X3Bvd2VyW1JUVzg5X1BIWV8wXSBcdTAwMjYgMHhmZjtcbitcbitcdHJ0dzg5X2gyY19wa3Rfc2V0X2hkcihydHdkZXYsIHNrYiwgRldDTURfVFlQRV9IMkMsXG4rXHRcdFx0ICAgICAgSDJDX0NBVF9PVVRTUkMsIEJURkNfU0VULFxuK1x0XHRcdCAgICAgIFNFVF9EUlZfSU5GTywgMCwgMCwgbGVuKTtcbitcbitcdHJldCA9IHJ0dzg5X2gyY190eChydHdkZXYsIHNrYiwgZmFsc2UpO1xuK1x0aWYgKHJldCkge1xuK1x0XHRydHc4OV9lcnIocnR3ZGV2LCBcImZhaWxlZCB0byBzZW5kIGgyY1xcblwiKTtcbitcdFx0Z290byBmYWlsO1xuK1x0fVxuK1xuK1x0cmV0dXJuIDA7XG4rZmFpbDpcbitcdGRldl9rZnJlZV9za2JfYW55KHNrYik7XG4rXG4rXHRyZXR1cm4gcmV0O1xuK31cbitcbitpbnQgcnR3ODlfZndfaDJjX2N4dHhwd3Jfdjkoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCB0eXBlKVxuK3tcbitcdHN0cnVjdCBydHc4OV9idGMgKmJ0YyA9IFx1MDAyNnJ0d2Rldi1cdTAwM2VidGM7XG4rXHRzdHJ1Y3QgcnR3ODlfYnRjX2RtICpkbSA9IFx1MDAyNmJ0Yy1cdTAwM2VkbTtcbitcdHN0cnVjdCBydHc4OV9idGNfcmZfdHJ4X3BhcmFfdjkgcnAgPSBkbS1cdTAwM2VyZl90cnhfcGFyYTtcbitcdHN0cnVjdCBydHc4OV9oMmNfY3h0eHB3cl92OSAqaDJjO1xuK1x0dTMyIGxlbiA9IHNpemVvZigqaDJjKTtcbitcdHN0cnVjdCBza19idWZmICpza2I7XG4rXHRpbnQgcmV0O1xuK1xuK1x0c2tiID0gcnR3ODlfZndfaDJjX2FsbG9jX3NrYl93aXRoX2hkcihydHdkZXYsIGxlbik7XG4rXHRpZiAoIXNrYikge1xuK1x0XHRydHc4OV9lcnIocnR3ZGV2LCBcImZhaWxlZCB0byBhbGxvYyBza2IgZm9yIGgyYyBjeGRydl9jdHJsXFxuXCIpO1xuK1x0XHRyZXR1cm4gLUVOT01FTTtcbitcdH1cbitcdHNrYl9wdXQoc2tiLCBsZW4pO1xuK1x0aDJjID0gKHN0cnVjdCBydHc4OV9oMmNfY3h0eHB3cl92OSAqKXNrYi1cdTAwM2VkYXRhO1xuK1xuK1x0aDJjLVx1MDAzZWhkci50eXBlID0gdHlwZTtcbitcdGgyYy1cdTAwM2VoZHIudmVyID0gYnRjLVx1MDAzZXZlci1cdTAwM2VmY3h0cng7XG4rXHRoMmMtXHUwMDNlaGRyLmxlbiA9IHNpemVvZigqaDJjKSAtIEgyQ19MRU5fQ1hEUlZIRFJfVjc7XG4rXHRpZiAoZG0tXHUwMDNld2xfdHhfcHdyX3BoeV9tYXAgPT0gQklUKFJUVzg5X1BIWV8xKSlcbitcdFx0aDJjLVx1MDAzZXB3ciA9IHJwLndsX3R4X3Bvd2VyW1JUVzg5X1BIWV8xXSBcdTAwMjYgMHhmZjtcbitcdGVsc2VcbitcdFx0aDJjLVx1MDAzZXB3ciA9IHJwLndsX3R4X3Bvd2VyW1JUVzg5X1BIWV8wXSBcdTAwMjYgMHhmZjtcbitcdGgyYy1cdTAwM2ViYW5kID0gZG0tXHUwMDNld2xfdHhfcHdyX3BoeV9tYXA7XG4rXG4rXHRydHc4OV9oMmNfcGt0X3NldF9oZHIocnR3ZGV2LCBza2IsIEZXQ01EX1RZUEVfSDJDLFxuK1x0XHRcdCAgICAgIEgyQ19DQVRfT1VUU1JDLCBCVEZDX1NFVCxcbitcdFx0XHQgICAgICBTRVRfRFJWX0lORk8sIDAsIDAsIGxlbik7XG4rXG4rXHRyZXQgPSBydHc4OV9oMmNfdHgocnR3ZGV2LCBza2IsIGZhbHNlKTtcbitcdGlmIChyZXQpIHtcbitcdFx0cnR3ODlfZXJyKHJ0d2RldiwgXCJmYWlsZWQgdG8gc2VuZCBoMmNcXG5cIik7XG4rXHRcdGdvdG8gZmFpbDtcbitcdH1cbitcbitcdHJldHVybiAwO1xuK2ZhaWw6XG4rXHRkZXZfa2ZyZWVfc2tiX2FueShza2IpO1xuK1xuK1x0cmV0dXJuIHJldDtcbit9XG4rXG4gI2RlZmluZSBIMkNfTEVOX1BLVF9PRkxEIDRcbiBpbnQgcnR3ODlfZndfaDJjX2RlbF9wa3Rfb2ZmbG9hZChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IGlkKVxuIHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2Z3LmhcbmluZGV4IDIwNzIxZDUyMDlhYTNhLi4zNmM4NDMwYTJlN2FlYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvZncuaFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9mdy5oXG5AQCAtMjQ5OSw2ICsyNDk5LDc2IEBAIHN0cnVjdCBydHc4OV9oMmNfY3hpbml0IHtcbiBcdHU4IHJzdmQxO1xuIH0gX19wYWNrZWQ7XG4gXG4rc3RydWN0IHJ0dzg5X2J0Y190cnhfaW5mb191OCB7XG4rXHR1OCB0eF9sdmw7XG4rXHR1OCByeF9sdmw7XG4rXHR1OCB3bF9yc3NpO1xuK1x0dTggYnRfcnNzaTtcbitcbitcdHM4IHdsX3R4X3Bvd2VyW1JUVzg5X1BIWV9OVU1dOyAvKiBhYnNvbHV0ZSBUeCBwb3dlciAoZEJtKSwgMHhmZi1cdTAwM2Ugbm8gQlRDIGNvbnRyb2wgKi9cbitcdHM4IHdsX3J4X2dhaW5bUlRXODlfUEhZX05VTV07ICAvKiByeCBnYWluIHRhYmxlIGluZGV4IChUQkQuKSAqL1xuK1x0czggYnRfdHhfcG93ZXJbQlRDX0FMTF9CVF07IC8qIGRlY3JlYXNlIFR4IHBvd2VyIChkQikgKi9cbitcdHM4IGJ0X3J4X2dhaW5bQlRDX0FMTF9CVF07ICAvKiBMTkEgY29uc3RyYWluIGxldmVsICovXG4rXHRzOCB6Yl90eF9wb3dlcltCVENfQUxMX0JUXTtcbitcdHM4IHpiX3J4X2dhaW5bQlRDX0FMTF9CVF07XG4rXG4rXHR1OCBjbjsgLyogY29uZGl0aW9uX251bSAqL1xuK1x0czggbmhtO1xuK1x0dTggYnRfcHJvZmlsZTtcbitcdHU4IHJzdmQyO1xuK30gX19wYWNrZWQ7XG4rXG4rc3RydWN0IHJ0dzg5X2J0Y190cnhfaW5mb192N191OCB7XG4rXHR1OCB0eF9sdmw7XG4rXHR1OCByeF9sdmw7XG4rXHR1OCB3bF9yc3NpO1xuK1x0dTggYnRfcnNzaTtcbitcbitcdHM4IHdsX3R4X3Bvd2VyO1xuK1x0czggd2xfcnhfZ2FpbjtcbitcdHM4IGJ0X3R4X3Bvd2VyO1xuK1x0czggYnRfcnhfZ2FpbjtcbitcdHM4IHpiX3R4X3Bvd2VyO1xuK1x0czggemJfcnhfZ2FpbjtcbitcbitcdHU4IGNuO1xuK1x0czggbmhtO1xuK1x0dTggYnRfcHJvZmlsZTtcbitcdHU4IHJzdmQyO1xuK30gX19wYWNrZWQ7XG4rXG4rc3RydWN0IHJ0dzg5X2J0Y190cnhfaW5mb19sZSB7XG4rXHRfX2xlMTYgdHhfcmF0ZTtcbitcdF9fbGUxNiByeF9yYXRlO1xuK1xuK1x0X19sZTMyIHR4X3RwO1xuK1x0X19sZTMyIHJ4X3RwO1xuK1x0X19sZTMyIHJ4X2Vycl9yYXRpbztcbit9IF9fcGFja2VkO1xuK1xuK3N0cnVjdCBydHc4OV9oMmNfY3h0cnhfdjkge1xuK1x0c3RydWN0IHJ0dzg5X2gyY19jeGhkcl92NyBoZHI7XG4rXHRzdHJ1Y3QgcnR3ODlfYnRjX3RyeF9pbmZvX3U4IHY5X3U4O1xuK1x0c3RydWN0IHJ0dzg5X2J0Y190cnhfaW5mb19sZSB2OV9sZTtcbit9IF9fcGFja2VkO1xuK1xuK3N0cnVjdCBydHc4OV9oMmNfY3h0cnhfdjcge1xuK1x0c3RydWN0IHJ0dzg5X2gyY19jeGhkcl92NyBoZHI7XG4rXHRzdHJ1Y3QgcnR3ODlfYnRjX3RyeF9pbmZvX3Y3X3U4IHY3X3U4O1xuK1x0c3RydWN0IHJ0dzg5X2J0Y190cnhfaW5mb19sZSB2N19sZTtcbit9IF9fcGFja2VkO1xuK1xuK3N0cnVjdCBydHc4OV9oMmNfY3h0eHB3cl92NyB7XG4rXHRzdHJ1Y3QgcnR3ODlfaDJjX2N4aGRyX3Y3IGhkcjtcbitcdHU4IHB3cjtcbit9IF9fcGFja2VkO1xuK1xuK3N0cnVjdCBydHc4OV9oMmNfY3h0eHB3cl92OSB7XG4rXHRzdHJ1Y3QgcnR3ODlfaDJjX2N4aGRyX3Y3IGhkcjtcbitcdHU4IHB3cjtcbitcdHU4IGJhbmQ7XG4rfSBfX3BhY2tlZDtcbitcbiAjZGVmaW5lIFJUVzg5X0gyQ19DWElOSVRfQU5UX0lORk9fUE9TIEJJVCgwKVxuICNkZWZpbmUgUlRXODlfSDJDX0NYSU5JVF9BTlRfSU5GT19ESVZFUlNJVFkgQklUKDEpXG4gI2RlZmluZSBSVFc4OV9IMkNfQ1hJTklUX0FOVF9JTkZPX0JUR19QT1MgR0VOTUFTSygzLCAyKVxuQEAgLTI3NjAsOTEgKzI4MzAsNiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgUlRXODlfU0VUX0ZXQ01EX0NYQ1RSTF9UUkFDRV9TVEVQKHZvaWQgKmNtZCwgdTMyIHZhbClcbiBcdGxlMzJwX3JlcGxhY2VfYml0cygoX19sZTMyICopKCh1OCAqKShjbWQpICsgMiksIHZhbCwgR0VOTUFTSygxOCwgMykpO1xuIH1cbiBcbi1zdGF0aWMgaW5saW5lIHZvaWQgUlRXODlfU0VUX0ZXQ01EX0NYVFJYX1RYTFYodm9pZCAqY21kLCB1OCB2YWwpXG4te1xuLVx0dThwX3JlcGxhY2VfYml0cygodTggKiljbWQgKyAyLCB2YWwsIEdFTk1BU0soNywgMCkpO1xuLX1cbi1cbi1zdGF0aWMgaW5saW5lIHZvaWQgUlRXODlfU0VUX0ZXQ01EX0NYVFJYX1JYTFYodm9pZCAqY21kLCB1OCB2YWwpXG4te1xuLVx0dThwX3JlcGxhY2VfYml0cygodTggKiljbWQgKyAzLCB2YWwsIEdFTk1BU0soNywgMCkpO1xuLX1cbi1cbi1zdGF0aWMgaW5saW5lIHZvaWQgUlRXODlfU0VUX0ZXQ01EX0NYVFJYX1dMUlNTSSh2b2lkICpjbWQsIHU4IHZhbClcbi17XG4tXHR1OHBfcmVwbGFjZV9iaXRzKCh1OCAqKWNtZCArIDQsIHZhbCwgR0VOTUFTSyg3LCAwKSk7XG4tfVxuLVxuLXN0YXRpYyBpbmxpbmUgdm9pZCBSVFc4OV9TRVRfRldDTURfQ1hUUlhfQlRSU1NJKHZvaWQgKmNtZCwgdTggdmFsKVxuLXtcbi1cdHU4cF9yZXBsYWNlX2JpdHMoKHU4ICopY21kICsgNSwgdmFsLCBHRU5NQVNLKDcsIDApKTtcbi19XG4tXG4tc3RhdGljIGlubGluZSB2b2lkIFJUVzg5X1NFVF9GV0NNRF9DWFRSWF9UWFBXUih2b2lkICpjbWQsIHM4IHZhbClcbi17XG4tXHR1OHBfcmVwbGFjZV9iaXRzKCh1OCAqKWNtZCArIDYsIHZhbCwgR0VOTUFTSyg3LCAwKSk7XG4tfVxuLVxuLXN0YXRpYyBpbmxpbmUgdm9pZCBSVFc4OV9TRVRfRldDTURfQ1hUUlhfUlhHQUlOKHZvaWQgKmNtZCwgczggdmFsKVxuLXtcbi1cdHU4cF9yZXBsYWNlX2JpdHMoKHU4ICopY21kICsgNywgdmFsLCBHRU5NQVNLKDcsIDApKTtcbi19XG4tXG4tc3RhdGljIGlubGluZSB2b2lkIFJUVzg5X1NFVF9GV0NNRF9DWFRSWF9CVFRYUFdSKHZvaWQgKmNtZCwgczggdmFsKVxuLXtcbi1cdHU4cF9yZXBsYWNlX2JpdHMoKHU4ICopY21kICsgOCwgdmFsLCBHRU5NQVNLKDcsIDApKTtcbi19XG4tXG4tc3RhdGljIGlubGluZSB2b2lkIFJUVzg5X1NFVF9GV0NNRF9DWFRSWF9CVFJYR0FJTih2b2lkICpjbWQsIHM4IHZhbClcbi17XG4tXHR1OHBfcmVwbGFjZV9iaXRzKCh1OCAqKWNtZCArIDksIHZhbCwgR0VOTUFTSyg3LCAwKSk7XG4tfVxuLVxuLXN0YXRpYyBpbmxpbmUgdm9pZCBSVFc4OV9TRVRfRldDTURfQ1hUUlhfQ04odm9pZCAqY21kLCB1OCB2YWwpXG4te1xuLVx0dThwX3JlcGxhY2VfYml0cygodTggKiljbWQgKyAxMCwgdmFsLCBHRU5NQVNLKDcsIDApKTtcbi19XG4tXG4tc3RhdGljIGlubGluZSB2b2lkIFJUVzg5X1NFVF9GV0NNRF9DWFRSWF9OSE0odm9pZCAqY21kLCBzOCB2YWwpXG4te1xuLVx0dThwX3JlcGxhY2VfYml0cygodTggKiljbWQgKyAxMSwgdmFsLCBHRU5NQVNLKDcsIDApKTtcbi19XG4tXG4tc3RhdGljIGlubGluZSB2b2lkIFJUVzg5X1NFVF9GV0NNRF9DWFRSWF9CVFBST0ZJTEUodm9pZCAqY21kLCB1OCB2YWwpXG4te1xuLVx0dThwX3JlcGxhY2VfYml0cygodTggKiljbWQgKyAxMiwgdmFsLCBHRU5NQVNLKDcsIDApKTtcbi19XG4tXG4tc3RhdGljIGlubGluZSB2b2lkIFJUVzg5X1NFVF9GV0NNRF9DWFRSWF9SU1ZEMih2b2lkICpjbWQsIHU4IHZhbClcbi17XG4tXHR1OHBfcmVwbGFjZV9iaXRzKCh1OCAqKWNtZCArIDEzLCB2YWwsIEdFTk1BU0soNywgMCkpO1xuLX1cbi1cbi1zdGF0aWMgaW5saW5lIHZvaWQgUlRXODlfU0VUX0ZXQ01EX0NYVFJYX1RYUkFURSh2b2lkICpjbWQsIHUxNiB2YWwpXG4te1xuLVx0bGUxNnBfcmVwbGFjZV9iaXRzKChfX2xlMTYgKikoKHU4ICopY21kICsgMTQpLCB2YWwsIEdFTk1BU0soMTUsIDApKTtcbi19XG4tXG4tc3RhdGljIGlubGluZSB2b2lkIFJUVzg5X1NFVF9GV0NNRF9DWFRSWF9SWFJBVEUodm9pZCAqY21kLCB1MTYgdmFsKVxuLXtcbi1cdGxlMTZwX3JlcGxhY2VfYml0cygoX19sZTE2ICopKCh1OCAqKWNtZCArIDE2KSwgdmFsLCBHRU5NQVNLKDE1LCAwKSk7XG4tfVxuLVxuLXN0YXRpYyBpbmxpbmUgdm9pZCBSVFc4OV9TRVRfRldDTURfQ1hUUlhfVFhUUCh2b2lkICpjbWQsIHUzMiB2YWwpXG4te1xuLVx0bGUzMnBfcmVwbGFjZV9iaXRzKChfX2xlMzIgKikoKHU4ICopY21kICsgMTgpLCB2YWwsIEdFTk1BU0soMzEsIDApKTtcbi19XG4tXG4tc3RhdGljIGlubGluZSB2b2lkIFJUVzg5X1NFVF9GV0NNRF9DWFRSWF9SWFRQKHZvaWQgKmNtZCwgdTMyIHZhbClcbi17XG4tXHRsZTMycF9yZXBsYWNlX2JpdHMoKF9fbGUzMiAqKSgodTggKiljbWQgKyAyMiksIHZhbCwgR0VOTUFTSygzMSwgMCkpO1xuLX1cbi1cbi1zdGF0aWMgaW5saW5lIHZvaWQgUlRXODlfU0VUX0ZXQ01EX0NYVFJYX1JYRVJSUkEodm9pZCAqY21kLCB1MzIgdmFsKVxuLXtcbi1cdGxlMzJwX3JlcGxhY2VfYml0cygoX19sZTMyICopKCh1OCAqKWNtZCArIDI2KSwgdmFsLCBHRU5NQVNLKDMxLCAwKSk7XG4tfVxuLVxuIHN0YXRpYyBpbmxpbmUgdm9pZCBSVFc4OV9TRVRfRldDTURfQ1hSRktfU1RBVEUodm9pZCAqY21kLCB1MzIgdmFsKVxuIHtcbiBcdGxlMzJwX3JlcGxhY2VfYml0cygoX19sZTMyICopKCh1OCAqKShjbWQpICsgMiksIHZhbCwgR0VOTUFTSygxLCAwKSk7XG5AQCAtNTM5OSw4ICs1Mzg0LDExIEBAIGludCBydHc4OV9md19oMmNfY3hkcnZfcm9sZV92OChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHR5cGUpO1xuIGludCBydHc4OV9md19oMmNfY3hkcnZfb3NpX2luZm8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCB0eXBlKTtcbiBpbnQgcnR3ODlfZndfaDJjX2N4ZHJ2X2N0cmwoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCB0eXBlKTtcbiBpbnQgcnR3ODlfZndfaDJjX2N4ZHJ2X2N0cmxfdjcoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCB0eXBlKTtcbi1pbnQgcnR3ODlfZndfaDJjX2N4ZHJ2X3RyeChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHR5cGUpO1xuK2ludCBydHc4OV9md19oMmNfY3hkcnZfdHJ4X3Y3KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggdHlwZSk7XG4raW50IHJ0dzg5X2Z3X2gyY19jeGRydl90cnhfdjkoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCB0eXBlKTtcbiBpbnQgcnR3ODlfZndfaDJjX2N4ZHJ2X3JmayhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHR5cGUpO1xuK2ludCBydHc4OV9md19oMmNfY3h0eHB3cl92NyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHR5cGUpO1xuK2ludCBydHc4OV9md19oMmNfY3h0eHB3cl92OShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHR5cGUpO1xuIGludCBydHc4OV9md19oMmNfZGVsX3BrdF9vZmZsb2FkKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggaWQpO1xuIGludCBydHc4OV9md19oMmNfYWRkX3BrdF9vZmZsb2FkKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggKmlkLFxuIFx0XHRcdFx0IHN0cnVjdCBza19idWZmICpza2Jfb2ZsZCk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYi5jXG5pbmRleCA2MGYzNjI1OTM2OTY2Zi4uNGNhZjIzMWM2Mjg3MDAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFiLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWIuY1xuQEAgLTM1NSw3ICszNTUsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X3BtYWNfcmVncyBydHc4ODUxYl9wbWFjX3JlZ3MgPSB7XG4gXHQuYW1wZHVfY3JjX2Vycl9tYXNrID0gQl9DTlRfQU1QRFVfUlhfQ1JDMzJfRVJSLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9idGNfcmZfdHJ4X3BhcmEgcnR3ODlfYnRjXzg4NTFiX3JmX3VsW10gPSB7XG4rc3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9idGNfcmZfdHJ4X3BhcmFfdjAgcnR3ODlfYnRjXzg4NTFiX3JmX3VsX3YwW10gPSB7XG4gXHR7MjU1LCAwLCAwLCA3fSwgLyogMCAtXHUwMDNlIG9yaWdpbmFsICovXG4gXHR7MjU1LCAyLCAwLCA3fSwgLyogMSAtXHUwMDNlIGZvciBCVC1jb25uZWN0ZWQgQUNJIGlzc3VlIFx1MDAyNlx1MDAyNiBCVEcgY28tcnggKi9cbiBcdHsyNTUsIDAsIDAsIDd9LCAvKiAyIC1cdTAwM2VyZXNlcnZlZCBmb3Igc2hhcmVkLWFudGVubmEgKi9cbkBAIC0zNjcsNyArMzY3LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9idGNfcmZfdHJ4X3BhcmEgcnR3ODlfYnRjXzg4NTFiX3JmX3VsW10gPSB7XG4gXHR7MTMsIDEsIDAsIDd9XG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2J0Y19yZl90cnhfcGFyYSBydHc4OV9idGNfODg1MWJfcmZfZGxbXSA9IHtcbitzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2J0Y19yZl90cnhfcGFyYV92MCBydHc4OV9idGNfODg1MWJfcmZfZGxfdjBbXSA9IHtcbiBcdHsyNTUsIDAsIDAsIDd9LCAvKiAwIC1cdTAwM2Ugb3JpZ2luYWwgKi9cbiBcdHsyNTUsIDIsIDAsIDd9LCAvKiAxIC1cdTAwM2UgcmVzZXJ2ZWQgZm9yIHNoYXJlZC1hbnRlbm5hICovXG4gXHR7MjU1LCAwLCAwLCA3fSwgLyogMiAtXHUwMDNlcmVzZXJ2ZWQgZm9yIHNoYXJlZC1hbnRlbm5hICovXG5AQCAtMjczMCwxMCArMjczMCwxMCBAQCBjb25zdCBzdHJ1Y3QgcnR3ODlfY2hpcF9pbmZvIHJ0dzg4NTFiX2NoaXBfaW5mbyA9IHtcbiBcdC5yc3NpX3RvbFx0XHQ9IDIsXG4gXHQubW9uX3JlZ19udW1cdFx0PSBBUlJBWV9TSVpFKHJ0dzg5X2J0Y184ODUxYl9tb25fcmVnKSxcbiBcdC5tb25fcmVnXHRcdD0gcnR3ODlfYnRjXzg4NTFiX21vbl9yZWcsXG4tXHQucmZfcGFyYV91bGlua19udW1cdD0gQVJSQVlfU0laRShydHc4OV9idGNfODg1MWJfcmZfdWwpLFxuLVx0LnJmX3BhcmFfdWxpbmtcdFx0PSBydHc4OV9idGNfODg1MWJfcmZfdWwsXG4tXHQucmZfcGFyYV9kbGlua19udW1cdD0gQVJSQVlfU0laRShydHc4OV9idGNfODg1MWJfcmZfZGwpLFxuLVx0LnJmX3BhcmFfZGxpbmtcdFx0PSBydHc4OV9idGNfODg1MWJfcmZfZGwsXG4rXHQucmZfcGFyYV91bGlua192MFx0PSBydHc4OV9idGNfODg1MWJfcmZfdWxfdjAsXG4rXHQucmZfcGFyYV9kbGlua192MFx0PSBydHc4OV9idGNfODg1MWJfcmZfZGxfdjAsXG4rXHQucmZfcGFyYV91bGlua19udW1fdjBcdD0gQVJSQVlfU0laRShydHc4OV9idGNfODg1MWJfcmZfdWxfdjApLFxuK1x0LnJmX3BhcmFfZGxpbmtfbnVtX3YwXHQ9IEFSUkFZX1NJWkUocnR3ODlfYnRjXzg4NTFiX3JmX2RsX3YwKSxcbiBcdC5yZl9wYXJhX3VsaW5rX3Y5XHQ9IE5VTEwsXG4gXHQucmZfcGFyYV9kbGlua192OVx0PSBOVUxMLFxuIFx0LnJmX3BhcmFfdWxpbmtfbnVtX3Y5XHQ9IDAsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYS5jXG5pbmRleCAyYzFmMTY2ZTY4N2YwNi4uNzhhZGRjMGFlZjY5MDggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJhLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmEuY1xuQEAgLTIwNDksNyArMjA0OSw3IEBAIHM4IHJ0dzg4NTJhX2J0Y19nZXRfYnRfcnNzaShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHM4IHZhbClcbiBcdHJldHVybiBjbGFtcF90KHM4LCB2YWwgKyA2LCAtMTAwLCAwKSArIDEwMDtcbiB9XG4gXG4tc3RhdGljIHN0cnVjdCBydHc4OV9idGNfcmZfdHJ4X3BhcmEgcnR3ODlfYnRjXzg4NTJhX3JmX3VsW10gPSB7XG4rc3RhdGljIHN0cnVjdCBydHc4OV9idGNfcmZfdHJ4X3BhcmFfdjAgcnR3ODlfYnRjXzg4NTJhX3JmX3VsX3YwW10gPSB7XG4gXHR7MjU1LCAwLCAwLCA3fSwgLyogMCAtXHUwMDNlIG9yaWdpbmFsICovXG4gXHR7MjU1LCAyLCAwLCA3fSwgLyogMSAtXHUwMDNlIGZvciBCVC1jb25uZWN0ZWQgQUNJIGlzc3VlIFx1MDAyNlx1MDAyNiBCVEcgY28tcnggKi9cbiBcdHsyNTUsIDAsIDAsIDd9LCAvKiAyIC1cdTAwM2VyZXNlcnZlZCBmb3Igc2hhcmVkLWFudGVubmEgKi9cbkBAIC0yMDYxLDcgKzIwNjEsNyBAQCBzdGF0aWMgc3RydWN0IHJ0dzg5X2J0Y19yZl90cnhfcGFyYSBydHc4OV9idGNfODg1MmFfcmZfdWxbXSA9IHtcbiBcdHsxMywgMSwgMCwgN31cbiB9O1xuIFxuLXN0YXRpYyBzdHJ1Y3QgcnR3ODlfYnRjX3JmX3RyeF9wYXJhIHJ0dzg5X2J0Y184ODUyYV9yZl9kbFtdID0ge1xuK3N0YXRpYyBzdHJ1Y3QgcnR3ODlfYnRjX3JmX3RyeF9wYXJhX3YwIHJ0dzg5X2J0Y184ODUyYV9yZl9kbF92MFtdID0ge1xuIFx0ezI1NSwgMCwgMCwgN30sIC8qIDAgLVx1MDAzZSBvcmlnaW5hbCAqL1xuIFx0ezI1NSwgMiwgMCwgN30sIC8qIDEgLVx1MDAzZSByZXNlcnZlZCBmb3Igc2hhcmVkLWFudGVubmEgKi9cbiBcdHsyNTUsIDAsIDAsIDd9LCAvKiAyIC1cdTAwM2VyZXNlcnZlZCBmb3Igc2hhcmVkLWFudGVubmEgKi9cbkBAIC0yMTA1LDEyICsyMTA1LDEyIEBAIHZvaWQgcnR3ODg1MmFfYnRjX3VwZGF0ZV9idF9jbnQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuIFx0XHRyZXR1cm47XG4gXG4gXHR2YWwgPSBydHc4OV9yZWFkMzIocnR3ZGV2LCBSX0FYX0JUX1NUQVNUX0hJR0gpO1xuLVx0Y3gtXHUwMDNlY250X2J0W0JUQ19CQ05UX0hJUFJJX1RYXSA9IEZJRUxEX0dFVChCX0FYX1NUQVRJU19CVF9ISV9UWF9NQVNLLCB2YWwpO1xuLVx0Y3gtXHUwMDNlY250X2J0W0JUQ19CQ05UX0hJUFJJX1JYXSA9IEZJRUxEX0dFVChCX0FYX1NUQVRJU19CVF9ISV9SWF9NQVNLLCB2YWwpO1xuK1x0Y3gtXHUwMDNlYnQwLmJjbnRbQlRDX0JDTlRfSElQUklfVFhdID0gRklFTERfR0VUKEJfQVhfU1RBVElTX0JUX0hJX1RYX01BU0ssIHZhbCk7XG4rXHRjeC1cdTAwM2VidDAuYmNudFtCVENfQkNOVF9ISVBSSV9SWF0gPSBGSUVMRF9HRVQoQl9BWF9TVEFUSVNfQlRfSElfUlhfTUFTSywgdmFsKTtcbiBcbiBcdHZhbCA9IHJ0dzg5X3JlYWQzMihydHdkZXYsIFJfQVhfQlRfU1RBU1RfTE9XKTtcbi1cdGN4LVx1MDAzZWNudF9idFtCVENfQkNOVF9MT1BSSV9UWF0gPSBGSUVMRF9HRVQoQl9BWF9TVEFUSVNfQlRfTE9fVFhfMV9NQVNLLCB2YWwpO1xuLVx0Y3gtXHUwMDNlY250X2J0W0JUQ19CQ05UX0xPUFJJX1JYXSA9IEZJRUxEX0dFVChCX0FYX1NUQVRJU19CVF9MT19SWF8xX01BU0ssIHZhbCk7XG4rXHRjeC1cdTAwM2VidDAuYmNudFtCVENfQkNOVF9MT1BSSV9UWF0gPSBGSUVMRF9HRVQoQl9BWF9TVEFUSVNfQlRfTE9fVFhfMV9NQVNLLCB2YWwpO1xuK1x0Y3gtXHUwMDNlYnQwLmJjbnRbQlRDX0JDTlRfTE9QUklfUlhdID0gRklFTERfR0VUKEJfQVhfU1RBVElTX0JUX0xPX1JYXzFfTUFTSywgdmFsKTtcbiBcbiBcdC8qIGNsb2NrLWdhdGUgb2ZmIGJlZm9yZSByZXNldCBjb3VudGVyKi9cbiBcdHJ0dzg5X3dyaXRlMzJfc2V0KHJ0d2RldiwgUl9BWF9CVENfQ0ZHLCBCX0FYX0RJU19CVENfQ0xLX0cpO1xuQEAgLTI0NjgsMTAgKzI0NjgsMTAgQEAgY29uc3Qgc3RydWN0IHJ0dzg5X2NoaXBfaW5mbyBydHc4ODUyYV9jaGlwX2luZm8gPSB7XG4gXHQucnNzaV90b2xcdFx0PSAyLFxuIFx0Lm1vbl9yZWdfbnVtXHRcdD0gQVJSQVlfU0laRShydHc4OV9idGNfODg1MmFfbW9uX3JlZyksXG4gXHQubW9uX3JlZ1x0XHQ9IHJ0dzg5X2J0Y184ODUyYV9tb25fcmVnLFxuLVx0LnJmX3BhcmFfdWxpbmtfbnVtXHQ9IEFSUkFZX1NJWkUocnR3ODlfYnRjXzg4NTJhX3JmX3VsKSxcbi1cdC5yZl9wYXJhX3VsaW5rXHRcdD0gcnR3ODlfYnRjXzg4NTJhX3JmX3VsLFxuLVx0LnJmX3BhcmFfZGxpbmtfbnVtXHQ9IEFSUkFZX1NJWkUocnR3ODlfYnRjXzg4NTJhX3JmX2RsKSxcbi1cdC5yZl9wYXJhX2RsaW5rXHRcdD0gcnR3ODlfYnRjXzg4NTJhX3JmX2RsLFxuK1x0LnJmX3BhcmFfdWxpbmtfdjBcdD0gcnR3ODlfYnRjXzg4NTJhX3JmX3VsX3YwLFxuK1x0LnJmX3BhcmFfZGxpbmtfdjBcdD0gcnR3ODlfYnRjXzg4NTJhX3JmX2RsX3YwLFxuK1x0LnJmX3BhcmFfdWxpbmtfbnVtX3YwXHQ9IEFSUkFZX1NJWkUocnR3ODlfYnRjXzg4NTJhX3JmX3VsX3YwKSxcbitcdC5yZl9wYXJhX2RsaW5rX251bV92MFx0PSBBUlJBWV9TSVpFKHJ0dzg5X2J0Y184ODUyYV9yZl9kbF92MCksXG4gXHQucmZfcGFyYV91bGlua192OVx0PSBOVUxMLFxuIFx0LnJmX3BhcmFfZGxpbmtfdjlcdD0gTlVMTCxcbiBcdC5yZl9wYXJhX3VsaW5rX251bV92OVx0PSAwLFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmIuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmIuY1xuaW5kZXggNGU3YjA2OGFhYTc1YjEuLmRlYmNkYjJlYWNkNjk5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYi5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJiLmNcbkBAIC0zMDcsNyArMzA3LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9wbWFjX3JlZ3MgcnR3ODg1MmJfcG1hY19yZWdzID0ge1xuIFx0LmFtcGR1X2NyY19lcnJfbWFzayA9IEJfQ05UX0FNUERVX1JYX0NSQzMyX0VSUixcbiB9O1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3JmX3RyeF9wYXJhIHJ0dzg5X2J0Y184ODUyYl9yZl91bFtdID0ge1xuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3JmX3RyeF9wYXJhX3YwIHJ0dzg5X2J0Y184ODUyYl9yZl91bF92MFtdID0ge1xuIFx0ezI1NSwgMCwgMCwgN30sIC8qIDAgLVx1MDAzZSBvcmlnaW5hbCAqL1xuIFx0ezI1NSwgMiwgMCwgN30sIC8qIDEgLVx1MDAzZSBmb3IgQlQtY29ubmVjdGVkIEFDSSBpc3N1ZSBcdTAwMjZcdTAwMjYgQlRHIGNvLXJ4ICovXG4gXHR7MjU1LCAwLCAwLCA3fSwgLyogMiAtXHUwMDNlcmVzZXJ2ZWQgZm9yIHNoYXJlZC1hbnRlbm5hICovXG5AQCAtMzE5LDcgKzMxOSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3JmX3RyeF9wYXJhIHJ0dzg5X2J0Y184ODUyYl9yZl91bFtdID0ge1xuIFx0ezEzLCAxLCAwLCA3fVxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9idGNfcmZfdHJ4X3BhcmEgcnR3ODlfYnRjXzg4NTJiX3JmX2RsW10gPSB7XG4rc3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9idGNfcmZfdHJ4X3BhcmFfdjAgcnR3ODlfYnRjXzg4NTJiX3JmX2RsX3YwW10gPSB7XG4gXHR7MjU1LCAwLCAwLCA3fSwgLyogMCAtXHUwMDNlIG9yaWdpbmFsICovXG4gXHR7MjU1LCAyLCAwLCA3fSwgLyogMSAtXHUwMDNlIHJlc2VydmVkIGZvciBzaGFyZWQtYW50ZW5uYSAqL1xuIFx0ezI1NSwgMCwgMCwgN30sIC8qIDIgLVx1MDAzZXJlc2VydmVkIGZvciBzaGFyZWQtYW50ZW5uYSAqL1xuQEAgLTEwNjMsMTAgKzEwNjMsMTAgQEAgY29uc3Qgc3RydWN0IHJ0dzg5X2NoaXBfaW5mbyBydHc4ODUyYl9jaGlwX2luZm8gPSB7XG4gXHQucnNzaV90b2xcdFx0PSAyLFxuIFx0Lm1vbl9yZWdfbnVtXHRcdD0gQVJSQVlfU0laRShydHc4OV9idGNfODg1MmJfbW9uX3JlZyksXG4gXHQubW9uX3JlZ1x0XHQ9IHJ0dzg5X2J0Y184ODUyYl9tb25fcmVnLFxuLVx0LnJmX3BhcmFfdWxpbmtfbnVtXHQ9IEFSUkFZX1NJWkUocnR3ODlfYnRjXzg4NTJiX3JmX3VsKSxcbi1cdC5yZl9wYXJhX3VsaW5rXHRcdD0gcnR3ODlfYnRjXzg4NTJiX3JmX3VsLFxuLVx0LnJmX3BhcmFfZGxpbmtfbnVtXHQ9IEFSUkFZX1NJWkUocnR3ODlfYnRjXzg4NTJiX3JmX2RsKSxcbi1cdC5yZl9wYXJhX2RsaW5rXHRcdD0gcnR3ODlfYnRjXzg4NTJiX3JmX2RsLFxuK1x0LnJmX3BhcmFfdWxpbmtfdjBcdD0gcnR3ODlfYnRjXzg4NTJiX3JmX3VsX3YwLFxuK1x0LnJmX3BhcmFfZGxpbmtfdjBcdD0gcnR3ODlfYnRjXzg4NTJiX3JmX2RsX3YwLFxuK1x0LnJmX3BhcmFfdWxpbmtfbnVtX3YwXHQ9IEFSUkFZX1NJWkUocnR3ODlfYnRjXzg4NTJiX3JmX3VsX3YwKSxcbitcdC5yZl9wYXJhX2RsaW5rX251bV92MFx0PSBBUlJBWV9TSVpFKHJ0dzg5X2J0Y184ODUyYl9yZl9kbF92MCksXG4gXHQucmZfcGFyYV91bGlua192OVx0PSBOVUxMLFxuIFx0LnJmX3BhcmFfZGxpbmtfdjlcdD0gTlVMTCxcbiBcdC5yZl9wYXJhX3VsaW5rX251bV92OVx0PSAwLFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJ0LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJidC5jXG5pbmRleCA3ZmNjODc3ZjZlYTBjNC4uZmM4YTE3ZmI5NWY0N2QgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJidC5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJidC5jXG5AQCAtMjUwLDcgKzI1MCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfcG1hY19yZWdzIHJ0dzg4NTJidF9wbWFjX3JlZ3MgPSB7XG4gXHQuYW1wZHVfY3JjX2Vycl9tYXNrID0gQl9DTlRfQU1QRFVfUlhfQ1JDMzJfRVJSLFxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9idGNfcmZfdHJ4X3BhcmEgcnR3ODlfYnRjXzg4NTJidF9yZl91bFtdID0ge1xuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3JmX3RyeF9wYXJhX3YwIHJ0dzg5X2J0Y184ODUyYnRfcmZfdWxfdjBbXSA9IHtcbiBcdHsyNTUsIDAsIDAsIDd9LCAvKiAwIC1cdTAwM2Ugb3JpZ2luYWwgKi9cbiBcdHsyNTUsIDIsIDAsIDd9LCAvKiAxIC1cdTAwM2UgZm9yIEJULWNvbm5lY3RlZCBBQ0kgaXNzdWUgXHUwMDI2XHUwMDI2IEJURyBjby1yeCAqL1xuIFx0ezI1NSwgMCwgMCwgN30sIC8qIDIgLVx1MDAzZXJlc2VydmVkIGZvciBzaGFyZWQtYW50ZW5uYSAqL1xuQEAgLTI2Miw3ICsyNjIsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2J0Y19yZl90cnhfcGFyYSBydHc4OV9idGNfODg1MmJ0X3JmX3VsW10gPSB7XG4gXHR7MTMsIDEsIDAsIDd9XG4gfTtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2J0Y19yZl90cnhfcGFyYSBydHc4OV9idGNfODg1MmJ0X3JmX2RsW10gPSB7XG4rc3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9idGNfcmZfdHJ4X3BhcmFfdjAgcnR3ODlfYnRjXzg4NTJidF9yZl9kbF92MFtdID0ge1xuIFx0ezI1NSwgMCwgMCwgN30sIC8qIDAgLVx1MDAzZSBvcmlnaW5hbCAqL1xuIFx0ezI1NSwgMiwgMCwgN30sIC8qIDEgLVx1MDAzZSByZXNlcnZlZCBmb3Igc2hhcmVkLWFudGVubmEgKi9cbiBcdHsyNTUsIDAsIDAsIDd9LCAvKiAyIC1cdTAwM2VyZXNlcnZlZCBmb3Igc2hhcmVkLWFudGVubmEgKi9cbkBAIC05MDIsMTAgKzkwMiwxMCBAQCBjb25zdCBzdHJ1Y3QgcnR3ODlfY2hpcF9pbmZvIHJ0dzg4NTJidF9jaGlwX2luZm8gPSB7XG4gXHQucnNzaV90b2xcdFx0PSAyLFxuIFx0Lm1vbl9yZWdfbnVtXHRcdD0gQVJSQVlfU0laRShydHc4OV9idGNfODg1MmJ0X21vbl9yZWcpLFxuIFx0Lm1vbl9yZWdcdFx0PSBydHc4OV9idGNfODg1MmJ0X21vbl9yZWcsXG4tXHQucmZfcGFyYV91bGlua19udW1cdD0gQVJSQVlfU0laRShydHc4OV9idGNfODg1MmJ0X3JmX3VsKSxcbi1cdC5yZl9wYXJhX3VsaW5rXHRcdD0gcnR3ODlfYnRjXzg4NTJidF9yZl91bCxcbi1cdC5yZl9wYXJhX2RsaW5rX251bVx0PSBBUlJBWV9TSVpFKHJ0dzg5X2J0Y184ODUyYnRfcmZfZGwpLFxuLVx0LnJmX3BhcmFfZGxpbmtcdFx0PSBydHc4OV9idGNfODg1MmJ0X3JmX2RsLFxuK1x0LnJmX3BhcmFfdWxpbmtfdjBcdD0gcnR3ODlfYnRjXzg4NTJidF9yZl91bF92MCxcbitcdC5yZl9wYXJhX2RsaW5rX3YwXHQ9IHJ0dzg5X2J0Y184ODUyYnRfcmZfZGxfdjAsXG4rXHQucmZfcGFyYV91bGlua19udW1fdjBcdD0gQVJSQVlfU0laRShydHc4OV9idGNfODg1MmJ0X3JmX3VsX3YwKSxcbitcdC5yZl9wYXJhX2RsaW5rX251bV92MFx0PSBBUlJBWV9TSVpFKHJ0dzg5X2J0Y184ODUyYnRfcmZfZGxfdjApLFxuIFx0LnJmX3BhcmFfdWxpbmtfdjlcdD0gTlVMTCxcbiBcdC5yZl9wYXJhX2RsaW5rX3Y5XHQ9IE5VTEwsXG4gXHQucmZfcGFyYV91bGlua19udW1fdjlcdD0gMCxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjLmNcbmluZGV4IDM4NjFjY2U0MmIxYmEyLi5iZWM2YWE1NzRlOWQ3OSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmMuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYy5jXG5AQCAtMjg2Myw3ICsyODYzLDcgQEAgczggcnR3ODg1MmNfYnRjX2dldF9idF9yc3NpKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgczggdmFsKVxuIFx0cmV0dXJuIGNsYW1wX3QoczgsIHZhbCArIDYsIC0xMDAsIDApICsgMTAwO1xuIH1cbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2J0Y19yZl90cnhfcGFyYSBydHc4OV9idGNfODg1MmNfcmZfdWxbXSA9IHtcbitzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2J0Y19yZl90cnhfcGFyYV92MCBydHc4OV9idGNfODg1MmNfcmZfdWxfdjBbXSA9IHtcbiBcdHsyNTUsIDAsIDAsIDd9LCAvKiAwIC1cdTAwM2Ugb3JpZ2luYWwgKi9cbiBcdHsyNTUsIDIsIDAsIDd9LCAvKiAxIC1cdTAwM2UgZm9yIEJULWNvbm5lY3RlZCBBQ0kgaXNzdWUgXHUwMDI2XHUwMDI2IEJURyBjby1yeCAqL1xuIFx0ezI1NSwgMCwgMCwgN30sIC8qIDIgLVx1MDAzZXJlc2VydmVkIGZvciBzaGFyZWQtYW50ZW5uYSAqL1xuQEAgLTI4NzUsNyArMjg3NSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3JmX3RyeF9wYXJhIHJ0dzg5X2J0Y184ODUyY19yZl91bFtdID0ge1xuIFx0ezEzLCAxLCAwLCA3fVxuIH07XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9idGNfcmZfdHJ4X3BhcmEgcnR3ODlfYnRjXzg4NTJjX3JmX2RsW10gPSB7XG4rc3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9idGNfcmZfdHJ4X3BhcmFfdjAgcnR3ODlfYnRjXzg4NTJjX3JmX2RsX3YwW10gPSB7XG4gXHR7MjU1LCAwLCAwLCA3fSwgLyogMCAtXHUwMDNlIG9yaWdpbmFsICovXG4gXHR7MjU1LCAyLCAwLCA3fSwgLyogMSAtXHUwMDNlIHJlc2VydmVkIGZvciBzaGFyZWQtYW50ZW5uYSAqL1xuIFx0ezI1NSwgMCwgMCwgN30sIC8qIDIgLVx1MDAzZXJlc2VydmVkIGZvciBzaGFyZWQtYW50ZW5uYSAqL1xuQEAgLTMyNzAsMTAgKzMyNzAsMTAgQEAgY29uc3Qgc3RydWN0IHJ0dzg5X2NoaXBfaW5mbyBydHc4ODUyY19jaGlwX2luZm8gPSB7XG4gXHQucnNzaV90b2xcdFx0PSAyLFxuIFx0Lm1vbl9yZWdfbnVtXHRcdD0gQVJSQVlfU0laRShydHc4OV9idGNfODg1MmNfbW9uX3JlZyksXG4gXHQubW9uX3JlZ1x0XHQ9IHJ0dzg5X2J0Y184ODUyY19tb25fcmVnLFxuLVx0LnJmX3BhcmFfdWxpbmtfbnVtXHQ9IEFSUkFZX1NJWkUocnR3ODlfYnRjXzg4NTJjX3JmX3VsKSxcbi1cdC5yZl9wYXJhX3VsaW5rXHRcdD0gcnR3ODlfYnRjXzg4NTJjX3JmX3VsLFxuLVx0LnJmX3BhcmFfZGxpbmtfbnVtXHQ9IEFSUkFZX1NJWkUocnR3ODlfYnRjXzg4NTJjX3JmX2RsKSxcbi1cdC5yZl9wYXJhX2RsaW5rXHRcdD0gcnR3ODlfYnRjXzg4NTJjX3JmX2RsLFxuK1x0LnJmX3BhcmFfdWxpbmtfdjBcdD0gcnR3ODlfYnRjXzg4NTJjX3JmX3VsX3YwLFxuK1x0LnJmX3BhcmFfZGxpbmtfdjBcdD0gcnR3ODlfYnRjXzg4NTJjX3JmX2RsX3YwLFxuK1x0LnJmX3BhcmFfdWxpbmtfbnVtX3YwXHQ9IEFSUkFZX1NJWkUocnR3ODlfYnRjXzg4NTJjX3JmX3VsX3YwKSxcbitcdC5yZl9wYXJhX2RsaW5rX251bV92MFx0PSBBUlJBWV9TSVpFKHJ0dzg5X2J0Y184ODUyY19yZl9kbF92MCksXG4gXHQucmZfcGFyYV91bGlua192OVx0PSBOVUxMLFxuIFx0LnJmX3BhcmFfZGxpbmtfdjlcdD0gTlVMTCxcbiBcdC5yZl9wYXJhX3VsaW5rX251bV92OVx0PSAwLFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmEuY1xuaW5kZXggYWQzNjE4ZGZkNTdkMDAuLjZkNDMwMTY2MWIwNGI0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhLmNcbkBAIC0yNzQ1LDcgKzI3NDUsNyBAQCBzdGF0aWMgdm9pZCBydHc4OTIyYV9idGNfc2V0X3JmZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4gXHRpZiAobW9kdWxlLVx1MDAzZWt0X3ZlciBcdTAwM2M9IDEpXG4gXHRcdG1vZHVsZS1cdTAwM2V3YV90eXBlIHw9IEJUQ19XQV9IRlBfWkI7XG4gXG4tXHRydHdkZXYtXHUwMDNlYnRjLmN4Lm90aGVyLnR5cGUgPSBCVENfM0NYX05PTkU7XG4rXHRydHdkZXYtXHUwMDNlYnRjLmN4LmJ0X2V4dC5mdW5jX3R5cGUgPSBCVENfM0NYX05PTkU7XG4gXG4gXHRpZiAobW9kdWxlLVx1MDAzZXJmZV90eXBlID09IDApIHtcbiBcdFx0cnR3ZGV2LVx1MDAzZWJ0Yy5kbS5lcnJvci5tYXAucmZlX3R5cGUwID0gdHJ1ZTtcbkBAIC0yODc0LDcgKzI4NzQsNyBAQCBzOCBydHc4OTIyYV9idGNfZ2V0X2J0X3Jzc2koc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBzOCB2YWwpXG4gXHRyZXR1cm4gY2xhbXBfdChzOCwgdmFsLCAtMTAwLCAwKSArIDEwMDtcbiB9XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9idGNfcmZfdHJ4X3BhcmEgcnR3ODlfYnRjXzg5MjJhX3JmX3VsW10gPSB7XG4rc3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9idGNfcmZfdHJ4X3BhcmFfdjAgcnR3ODlfYnRjXzg5MjJhX3JmX3VsX3YwW10gPSB7XG4gXHR7MjU1LCAwLCAwLCA3fSwgLyogMCAtXHUwMDNlIG9yaWdpbmFsICovXG4gXHR7MjU1LCAyLCAwLCA3fSwgLyogMSAtXHUwMDNlIGZvciBCVC1jb25uZWN0ZWQgQUNJIGlzc3VlIFx1MDAyNlx1MDAyNiBCVEcgY28tcnggKi9cbiBcdHsyNTUsIDAsIDAsIDd9LCAvKiAyIC1cdTAwM2VyZXNlcnZlZCBmb3Igc2hhcmVkLWFudGVubmEgKi9cbkBAIC0yODg2LDcgKzI4ODYsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2J0Y19yZl90cnhfcGFyYSBydHc4OV9idGNfODkyMmFfcmZfdWxbXSA9IHtcbiBcdHsxMywgMSwgMCwgN31cbiB9O1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3JmX3RyeF9wYXJhIHJ0dzg5X2J0Y184OTIyYV9yZl9kbFtdID0ge1xuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3JmX3RyeF9wYXJhX3YwIHJ0dzg5X2J0Y184OTIyYV9yZl9kbF92MFtdID0ge1xuIFx0ezI1NSwgMCwgMCwgN30sIC8qIDAgLVx1MDAzZSBvcmlnaW5hbCAqL1xuIFx0ezI1NSwgMiwgMCwgN30sIC8qIDEgLVx1MDAzZSByZXNlcnZlZCBmb3Igc2hhcmVkLWFudGVubmEgKi9cbiBcdHsyNTUsIDAsIDAsIDd9LCAvKiAyIC1cdTAwM2VyZXNlcnZlZCBmb3Igc2hhcmVkLWFudGVubmEgKi9cbkBAIC0zMjU0LDEwICszMjU0LDEwIEBAIGNvbnN0IHN0cnVjdCBydHc4OV9jaGlwX2luZm8gcnR3ODkyMmFfY2hpcF9pbmZvID0ge1xuIFx0LnJzc2lfdG9sXHRcdD0gMixcbiBcdC5tb25fcmVnX251bVx0XHQ9IEFSUkFZX1NJWkUocnR3ODlfYnRjXzg5MjJhX21vbl9yZWcpLFxuIFx0Lm1vbl9yZWdcdFx0PSBydHc4OV9idGNfODkyMmFfbW9uX3JlZyxcbi1cdC5yZl9wYXJhX3VsaW5rX251bVx0PSBBUlJBWV9TSVpFKHJ0dzg5X2J0Y184OTIyYV9yZl91bCksXG4tXHQucmZfcGFyYV91bGlua1x0XHQ9IHJ0dzg5X2J0Y184OTIyYV9yZl91bCxcbi1cdC5yZl9wYXJhX2RsaW5rX251bVx0PSBBUlJBWV9TSVpFKHJ0dzg5X2J0Y184OTIyYV9yZl9kbCksXG4tXHQucmZfcGFyYV9kbGlua1x0XHQ9IHJ0dzg5X2J0Y184OTIyYV9yZl9kbCxcbitcdC5yZl9wYXJhX3VsaW5rX3YwXHQ9IHJ0dzg5X2J0Y184OTIyYV9yZl91bF92MCxcbitcdC5yZl9wYXJhX2RsaW5rX3YwXHQ9IHJ0dzg5X2J0Y184OTIyYV9yZl9kbF92MCxcbitcdC5yZl9wYXJhX3VsaW5rX251bV92MFx0PSBBUlJBWV9TSVpFKHJ0dzg5X2J0Y184OTIyYV9yZl91bF92MCksXG4rXHQucmZfcGFyYV9kbGlua19udW1fdjBcdD0gQVJSQVlfU0laRShydHc4OV9idGNfODkyMmFfcmZfZGxfdjApLFxuIFx0LnJmX3BhcmFfdWxpbmtfdjlcdD0gTlVMTCxcbiBcdC5yZl9wYXJhX2RsaW5rX3Y5XHQ9IE5VTEwsXG4gXHQucmZfcGFyYV91bGlua19udW1fdjlcdD0gMCxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmNcbmluZGV4IDgzOGMyNjIzMTg5N2Q2Li5mNzhkNmQ0NmU2NWZiZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jXG5AQCAtMjk5Nyw2ICsyOTk3LDQ2IEBAIHN0YXRpYyB1MzIgcnR3ODkyMmRfY2hhbl90b19yZjE4X3ZhbChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXG4gXG4gc3RhdGljIHZvaWQgcnR3ODkyMmRfYnRjX3NldF9yZmUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuIHtcbitcdHVuaW9uIHJ0dzg5X2J0Y19tb2R1bGVfaW5mbyAqbWQgPSBcdTAwMjZydHdkZXYtXHUwMDNlYnRjLm1kaW5mbztcbitcdHN0cnVjdCBydHc4OV9idGNfbW9kdWxlX3Y3ICptb2R1bGUgPSBcdTAwMjZtZC1cdTAwM2VtZF92NztcbitcbitcdG1vZHVsZS1cdTAwM2VyZmVfdHlwZSA9IHJ0d2Rldi1cdTAwM2VlZnVzZS5yZmVfdHlwZTtcbitcdG1vZHVsZS1cdTAwM2VrdF92ZXIgPSBydHdkZXYtXHUwMDNlaGFsLmN2O1xuK1x0bW9kdWxlLVx1MDAzZWJ0X3NvbG8gPSAwO1xuK1x0bW9kdWxlLVx1MDAzZXN3aXRjaF90eXBlID0gQlRDX1NXSVRDSF9JTlRFUk5BTDtcbitcdG1vZHVsZS1cdTAwM2V3YV90eXBlID0gMDtcbitcbitcdG1vZHVsZS1cdTAwM2VhbnQudHlwZSA9IEJUQ19BTlRfU0hBUkVEO1xuK1x0bW9kdWxlLVx1MDAzZWFudC5udW0gPSAyO1xuK1x0bW9kdWxlLVx1MDAzZWFudC5pc29sYXRpb24gPSAxMDtcbitcdG1vZHVsZS1cdTAwM2VhbnQuZGl2ZXJzaXR5ID0gMDtcbitcdG1vZHVsZS1cdTAwM2VhbnQuc2luZ2xlX3BvcyA9IFJGX1BBVEhfQTtcbitcdG1vZHVsZS1cdTAwM2VhbnQuYnRnX3BvcyA9IFJGX1BBVEhfQjtcbitcbitcdGlmIChtb2R1bGUtXHUwMDNla3RfdmVyIFx1MDAzYz0gMSlcbitcdFx0bW9kdWxlLVx1MDAzZXdhX3R5cGUgfD0gQlRDX1dBX0hGUF9aQjtcbitcbitcdHJ0d2Rldi1cdTAwM2VidGMuY3guYnRfZXh0LmZ1bmNfdHlwZSA9IEJUQ18zQ1hfTk9ORTtcbitcbitcdGlmIChtb2R1bGUtXHUwMDNlcmZlX3R5cGUgPT0gMCkge1xuK1x0XHRydHdkZXYtXHUwMDNlYnRjLmRtLmVycm9yLm1hcC5yZmVfdHlwZTAgPSB0cnVlO1xuK1x0XHRyZXR1cm47XG4rXHR9XG4rXG4rXHRtb2R1bGUtXHUwMDNlYW50Lm51bSA9IChtb2R1bGUtXHUwMDNlcmZlX3R5cGUgJSAyKSA/ICAyIDogMztcbitcbitcdGlmIChtb2R1bGUtXHUwMDNla3RfdmVyID09IDApXG4rXHRcdG1vZHVsZS1cdTAwM2VhbnQubnVtID0gMjtcbitcbitcdGlmIChtb2R1bGUtXHUwMDNlYW50Lm51bSA9PSAzKSB7XG4rXHRcdG1vZHVsZS1cdTAwM2VhbnQudHlwZSA9IEJUQ19BTlRfREVESUNBVEVEO1xuK1x0XHRtb2R1bGUtXHUwMDNlYnRfcG9zID0gQlRDX0JUX0FMT05FO1xuK1x0fSBlbHNlIHtcbitcdFx0bW9kdWxlLVx1MDAzZWFudC50eXBlID0gQlRDX0FOVF9TSEFSRUQ7XG4rXHRcdG1vZHVsZS1cdTAwM2VidF9wb3MgPSBCVENfQlRfQlRHO1xuK1x0fVxuK1x0cnR3ZGV2LVx1MDAzZWJ0Yy5idGdfcG9zID0gbW9kdWxlLVx1MDAzZWFudC5idGdfcG9zO1xuK1x0cnR3ZGV2LVx1MDAzZWJ0Yy5hbnRfdHlwZSA9IG1vZHVsZS1cdTAwM2VhbnQudHlwZTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgcnR3ODkyMmRfYnRjX2luaXRfY2ZnKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbkBAIC0zMzkwLDYgKzM0MzAsMTAgQEAgY29uc3Qgc3RydWN0IHJ0dzg5X2NoaXBfaW5mbyBydHc4OTIyZF9jaGlwX2luZm8gPSB7XG4gXHQucnNzaV90b2xcdFx0PSAyLFxuIFx0Lm1vbl9yZWdfbnVtXHRcdD0gQVJSQVlfU0laRShydHc4OV9idGNfODkyMmRfbW9uX3JlZyksXG4gXHQubW9uX3JlZ1x0XHQ9IHJ0dzg5X2J0Y184OTIyZF9tb25fcmVnLFxuK1x0LnJmX3BhcmFfdWxpbmtfdjBcdD0gTlVMTCxcbitcdC5yZl9wYXJhX2RsaW5rX3YwXHQ9IE5VTEwsXG4rXHQucmZfcGFyYV91bGlua19udW1fdjBcdD0gMCxcbitcdC5yZl9wYXJhX2RsaW5rX251bV92MFx0PSAwLFxuIFx0LnJmX3BhcmFfdWxpbmtfdjlcdD0gcnR3ODlfYnRjXzg5MjJkX3JmX3VsX3Y5LFxuIFx0LnJmX3BhcmFfZGxpbmtfdjlcdD0gcnR3ODlfYnRjXzg5MjJkX3JmX2RsX3Y5LFxuIFx0LnJmX3BhcmFfdWxpbmtfbnVtX3Y5XHQ9IEFSUkFZX1NJWkUocnR3ODlfYnRjXzg5MjJkX3JmX3VsX3Y5KSxcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDAzOjU2OjI2LjQ2ODMxNzU2OVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEzOTI2MDk3Mjc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUmVhY2hhYmlsaXR5IG9mIGEgUmVhbHRlayBXaS1GaSBEcml2ZXIgaW4gYSBWaXJ0dWFsaXplZCBFbnZpcm9ubWVudCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaGl0cyB0aGUgQmx1ZXRvb3RoIGNvZXhpc3RlbmNlIChCVEMpIGxvZ2ljIHdpdGhpbiB0aGUgUmVhbHRlayBXaS1GaSBkcml2ZXJzLCBzcGVjaWZpY2FsbHkgaW4gYHJ0dzg5L2NvZXguY2AgYW5kIHJlbGF0ZWQgZmlsZXMuIEl0IGxvb2tzIGxpa2UgaXQncyBhZGRpbmcgc3VwcG9ydCBmb3IgUlRMODkyMkQgYW5kIFJUTDg5MjJBLCB1cGRhdGluZyBzb21lIGZpcm13YXJlIG1hcHBpbmdzIGFuZCBzdHJ1Y3R1cmVzIHJlbGF0ZWQgdG8gUEhZIHZlcnNpb25zLiBUaGlzIG1lYW5zIGl0J3MgZnVuZGFtZW50YWxseSBjaGFuZ2luZyBob3cgdGhlIGRyaXZlciAqYmVoYXZlcyogaW4gaXRzIGludGVyYWN0aW9uIHdpdGggQmx1ZXRvb3RoLCB3aGljaCBpcyBhbiBpbnRlcmVzdGluZyBwb2ludC5cblxuTm93LCBteSBrZXkgY29uY2VybiBpcyB3aGV0aGVyIHRoaXMgaXMgKmZ1enphYmxlKi4gVGhlIHByb21wdCB3YW50cyBtZSB0byBmaWd1cmUgb3V0IGlmIHRoaXMgY29kZSBpcyByZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gVGhlIG9idmlvdXMgdGhpbmcgaXMgdGhhdCBXaS1GaSBkcml2ZXJzLCBieSB0aGVpciB2ZXJ5IG5hdHVyZSwgZGVwZW5kIG9uIHNwZWNpZmljIGhhcmR3YXJlLiBXZSBvZnRlbiBjYW4ndCBqdXN0IHNwaW4gdXAgYSB2aXJ0dWFsIG1hY2hpbmUgYW5kIGV4cGVjdCBhIFdpLUZpIGRyaXZlciB0byBtYWdpY2FsbHkgd29yayB3aXRob3V0IHNvbWUga2luZCBvZiBoYXJkd2FyZSBlbXVsYXRpb24uIGBtYWM4MDIxMV9od3NpbWAgaXMgb2Z0ZW4gYSBnby10byBmb3Igc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUuIEJ1dCBgcnR3ODlgIGlzIGEgZHJpdmVyIGZvciAqcmVhbCogaGFyZHdhcmUuXG5cblRoZSBxdWVzdGlvbiB0aGVuIGlzLCBjYW4gdGhpcyBzcGVjaWZpYyBgcnR3ODlgIGRyaXZlciBiZSBmdXp6ZWQ/IFRoZSBwcm9tcHQgKnNwZWNpZmljYWxseSogdGVsbHMgbWUgdG8gc2F5IFwiZmFsc2VcIiBpZiB0aGUgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIGV2ZW4gd2l0aCBlbXVsYXRlZCBoYXJkd2FyZS4gU28sIGlzIGBydHc4OWAgcmVhY2hhYmxlIGluIFFFTVU/IFR5cGljYWxseSwgUENJIG9yIFVTQiBXaS1GaSBkcml2ZXJzIGZvciBzcGVjaWZpYyBoYXJkd2FyZSwgbGlrZSB0aGlzIFJlYWx0ZWsgODg1Mi84OTIyLCBhcmUgZGlmZmljdWx0IHRvIHJlYWNoIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFdlIG5lZWQgYSBzb2Z0d2FyZSBlbXVsYXRvciBmb3IgdGhlIHNwZWNpZmljIGhhcmR3YXJlLCBhbmQgdGhhdCBkb2Vzbid0IHVzdWFsbHkgZXhpc3QuXG5cbkhvd2V2ZXIsIEkgdmFndWVseSByZWNhbGwgc29tZXRoaW5nIGFib3V0IHN5emthbGxlciBoYXZpbmcgdGhlIGFiaWxpdHkgdG8gZnV6eiBQQ0kvVVNCIGRldmljZXMgdXNpbmcgYHZoY2kvZHVtbXkgaGNkYCBvciBQQ0kgZnV6emluZy4gSSBuZWVkIHRvIGNoZWNrIGlmIHRoZXJlIGlzICphbnkqIGZ1enppbmcgZm9yIHRoaXMgc3BlY2lmaWMgYHJ0dzg5YCBkcml2ZXIuIE9rYXksIGl0IHNlZW1zIGxpa2Ugc3l6a2FsbGVyIGRvZXMgb2ZmZXIgUENJIGFuZCBVU0IgZnV6emluZyBjYXBhYmlsaXRpZXMgdGhyb3VnaCBgc3l6X3BjaV9kZXZpY2VgIG9yIGBzeXpfdXNiX2Nvbm5lY3RgLiBUaGUgcXVlc3Rpb24gaXMsIGlzIGBydHc4OWAgdHJ1bHkgcmVhY2hhYmxlIHdpdGggdGhlc2UgZnV6emluZyB0ZWNobmlxdWVzPyBJdCBpcyBhIFBDSS9TRElPL1VTQiBkcml2ZXIsIHNvIHRoYXQgc291bmRzIHByb21pc2luZy5cblxuVGhlIHByb21wdCwgdGhvdWdoLCBrZWVwcyBlY2hvaW5nIGluIG15IG1pbmQ6IFwiZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZVwiLiBTbywgaWYgdGhpcyBpcyBhIHJlYWwgaGFyZHdhcmUgZHJpdmVyLCBhbmQgd2UgZG9uJ3QgaGF2ZSAqc3BlY2lmaWMqIGVtdWxhdGlvbiBmb3IgaXQsIHRoZW4gaXQncyBwcm9iYWJseSAqdW5yZWFjaGFibGUqLiBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIGBydHc4OWAgaGFzIFVTQiBzdXBwb3J0LiBMZXQgbWUgY2hlY2suLi4gSXMgdGhlcmUgYSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuY2AgZmlsZT8gT2theSwgbGV0IG1lIHF1aWNrbHkgcXVlcnkgdGhlIGNvZGUgaW5kZXggb24gdGhlIGBydHc4OWAgZGlyZWN0b3J5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NzE3MCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY1NywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDAzOjU2OjQwLjM5NDQxNzI4OFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImNvZGVzZWFyY2gtZGlyLWluZGV4IiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ3NjYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRGlyXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRmlsZXNcIjogW1xuICAgIFwiYWNwaS5jXCIsXG4gICAgXCJhY3BpLmhcIixcbiAgICBcImNhbS5jXCIsXG4gICAgXCJjYW0uaFwiLFxuICAgIFwiY2hhbi5jXCIsXG4gICAgXCJjaGFuLmhcIixcbiAgICBcImNvZXguY1wiLFxuICAgIFwiY29leC5oXCIsXG4gICAgXCJjb3JlLmNcIixcbiAgICBcImNvcmUuaFwiLFxuICAgIFwiZGVidWcuY1wiLFxuICAgIFwiZGVidWcuaFwiLFxuICAgIFwiZWZ1c2UuY1wiLFxuICAgIFwiZWZ1c2UuaFwiLFxuICAgIFwiZWZ1c2VfYmUuY1wiLFxuICAgIFwiZncuY1wiLFxuICAgIFwiZncuaFwiLFxuICAgIFwibWFjLmNcIixcbiAgICBcIm1hYy5oXCIsXG4gICAgXCJtYWM4MDIxMS5jXCIsXG4gICAgXCJtYWNfYmUuY1wiLFxuICAgIFwicGNpLmNcIixcbiAgICBcInBjaS5oXCIsXG4gICAgXCJwY2lfYmUuY1wiLFxuICAgIFwicGh5LmNcIixcbiAgICBcInBoeS5oXCIsXG4gICAgXCJwaHlfYmUuY1wiLFxuICAgIFwicHMuY1wiLFxuICAgIFwicHMuaFwiLFxuICAgIFwicmVnLmhcIixcbiAgICBcInJlZ2QuY1wiLFxuICAgIFwicnR3ODg1MWIuY1wiLFxuICAgIFwicnR3ODg1MWIuaFwiLFxuICAgIFwicnR3ODg1MWJfcmZrLmNcIixcbiAgICBcInJ0dzg4NTFiX3Jmay5oXCIsXG4gICAgXCJydHc4ODUxYl9yZmtfdGFibGUuY1wiLFxuICAgIFwicnR3ODg1MWJfcmZrX3RhYmxlLmhcIixcbiAgICBcInJ0dzg4NTFiX3RhYmxlLmNcIixcbiAgICBcInJ0dzg4NTFiX3RhYmxlLmhcIixcbiAgICBcInJ0dzg4NTFiZS5jXCIsXG4gICAgXCJydHc4ODUxYnUuY1wiLFxuICAgIFwicnR3ODg1MmEuY1wiLFxuICAgIFwicnR3ODg1MmEuaFwiLFxuICAgIFwicnR3ODg1MmFfcmZrLmNcIixcbiAgICBcInJ0dzg4NTJhX3Jmay5oXCIsXG4gICAgXCJydHc4ODUyYV9yZmtfdGFibGUuY1wiLFxuICAgIFwicnR3ODg1MmFfcmZrX3RhYmxlLmhcIixcbiAgICBcInJ0dzg4NTJhX3RhYmxlLmNcIixcbiAgICBcInJ0dzg4NTJhX3RhYmxlLmhcIixcbiAgICBcInJ0dzg4NTJhZS5jXCIsXG4gICAgXCJydHc4ODUyYXUuY1wiLFxuICAgIFwicnR3ODg1MmIuY1wiLFxuICAgIFwicnR3ODg1MmIuaFwiLFxuICAgIFwicnR3ODg1MmJfY29tbW9uLmNcIixcbiAgICBcInJ0dzg4NTJiX2NvbW1vbi5oXCIsXG4gICAgXCJydHc4ODUyYl9yZmsuY1wiLFxuICAgIFwicnR3ODg1MmJfcmZrLmhcIixcbiAgICBcInJ0dzg4NTJiX3Jma190YWJsZS5jXCIsXG4gICAgXCJydHc4ODUyYl9yZmtfdGFibGUuaFwiLFxuICAgIFwicnR3ODg1MmJfdGFibGUuY1wiLFxuICAgIFwicnR3ODg1MmJfdGFibGUuaFwiLFxuICAgIFwicnR3ODg1MmJlLmNcIixcbiAgICBcInJ0dzg4NTJidC5jXCIsXG4gICAgXCJydHc4ODUyYnQuaFwiLFxuICAgIFwicnR3ODg1MmJ0X3Jmay5jXCIsXG4gICAgXCJydHc4ODUyYnRfcmZrLmhcIixcbiAgICBcInJ0dzg4NTJidF9yZmtfdGFibGUuY1wiLFxuICAgIFwicnR3ODg1MmJ0X3Jma190YWJsZS5oXCIsXG4gICAgXCJydHc4ODUyYnRlLmNcIixcbiAgICBcInJ0dzg4NTJidS5jXCIsXG4gICAgXCJydHc4ODUyYy5jXCIsXG4gICAgXCJydHc4ODUyYy5oXCIsXG4gICAgXCJydHc4ODUyY19yZmsuY1wiLFxuICAgIFwicnR3ODg1MmNfcmZrLmhcIixcbiAgICBcInJ0dzg4NTJjX3Jma190YWJsZS5jXCIsXG4gICAgXCJydHc4ODUyY19yZmtfdGFibGUuaFwiLFxuICAgIFwicnR3ODg1MmNfdGFibGUuY1wiLFxuICAgIFwicnR3ODg1MmNfdGFibGUuaFwiLFxuICAgIFwicnR3ODg1MmNlLmNcIixcbiAgICBcInJ0dzg4NTJjdS5jXCIsXG4gICAgXCJydHc4OTIyYS5jXCIsXG4gICAgXCJydHc4OTIyYS5oXCIsXG4gICAgXCJydHc4OTIyYV9yZmsuY1wiLFxuICAgIFwicnR3ODkyMmFfcmZrLmhcIixcbiAgICBcInJ0dzg5MjJhZS5jXCIsXG4gICAgXCJydHc4OTIyYXUuY1wiLFxuICAgIFwicnR3ODkyMmQuY1wiLFxuICAgIFwicnR3ODkyMmQuaFwiLFxuICAgIFwicnR3ODkyMmRfcmZrLmNcIixcbiAgICBcInJ0dzg5MjJkX3Jmay5oXCIsXG4gICAgXCJydHc4OTIyZGUuY1wiLFxuICAgIFwic2FyLmNcIixcbiAgICBcInNhci5oXCIsXG4gICAgXCJzZXIuY1wiLFxuICAgIFwic2VyLmhcIixcbiAgICBcInR4cnguaFwiLFxuICAgIFwidXNiLmNcIixcbiAgICBcInVzYi5oXCIsXG4gICAgXCJ1dGlsLmNcIixcbiAgICBcInV0aWwuaFwiLFxuICAgIFwid293LmNcIixcbiAgICBcIndvdy5oXCJcbiAgXSxcbiAgXCJTdWJkaXJzXCI6IG51bGxcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDAzOjU2OjQwLjM5NDU2NjkxOFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ5ODEyNDg1NjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBSZWFjaGFiaWxpdHkgb2YgUmVhbHRlayBXaUZpIERyaXZlciBDb2RlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBJIHNlZSBhIGJ1bmNoIG9mIGAuY2AgZmlsZXMg4oCTIGB1c2IuY2AsIGBydHc4ODUyYXUuY2AsIGBydHc4ODUyYnUuY2AsIGBydHc4ODUyY3UuY2AsIGFuZCBgcnR3ODkyMmF1LmNgLiBUaGUgcHJlc2VuY2Ugb2YgYHVzYi5jYCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIHRoaW5nJ3MgZ290IFVTQiBzdXBwb3J0LiBOb3csIHRoYXQncyBpbnRlcmVzdGluZyBiZWNhdXNlIGl0IG1lYW5zIEkgY2FuIHByb2JhYmx5IGhpdCB0aGlzIGRyaXZlciB3aXRoIFN5emthbGxlciB1c2luZyBgZHVtbXlfaGNkYC4gVGhlIGltcGxpY2F0aW9uIHRoZXJlIGlzIHRoYXQgSSBjYW4gcmVhY2ggdGhpcyBjb2RlIHdpdGhpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IOKAkyB3aGljaCBpcyBhIGh1Z2UgYWR2YW50YWdlIGZvciBmdXp6aW5nIGFuZCBkZWJ1Z2dpbmcsIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggY29tcGxleCBkcml2ZXJzIGxpa2UgdGhlc2UgUmVhbHRlayBXaUZpIGltcGxlbWVudGF0aW9ucy4gVGhhdCdzIGdvb2QgbmV3cy4gTXkgbmV4dCBzdGVwIHdpbGwgYmUgdG8gZGl2ZSBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGZvciBgcnR3ODlgLCBqdXN0IHRvIGZpZ3VyZSBvdXQgd2hhdCBjb25maWd1cmF0aW9ucyBuZWVkIHRvIGJlIGVuYWJsZWQgdG8gcHJvcGVybHkgZXhlcmNpc2UgdGhpcyBjb2RlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZSBhbGwgdGhlIG5lY2Vzc2FyeSBvcHRpb25zIHNldCB0byBnZXQgdGhpcyB0aGluZyB1cCBhbmQgcnVubmluZyBmb3IgbXkgZnV6emluZyBjYW1wYWlnbi5cblxuXG4iLCJJbnB1dFRva2VucyI6Njk1ODksIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDUsIlRvb2xDYWxscyI6WyJjb2Rlc2VhcmNoLWRpci1pbmRleCJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDAzOjU2OjQ1LjM3NTgxODgwNFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTA4MjA3NDYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFJUVzg5XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wIE9SIEJTRC0zLUNsYXVzZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoyOm1lbnVjb25maWcgUlRXODlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4MDIuMTFheCB3aXJlbGVzcyBjaGlwcyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnPTExPWlmIFJUVzg5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxMzpjb25maWcgUlRXODlfQ09SRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNC1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxNzpjb25maWcgUlRXODlfUENJXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE4LVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoyMDpjb25maWcgUlRXODlfVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTIxLVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTIyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoyMzpjb25maWcgUlRXODlfODg1MUJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMjQtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjI2OmNvbmZpZyBSVFc4OV84ODUyQVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0yNy1cXHR0cmlzdGF0ZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0yOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6Mjk6Y29uZmlnIFJUVzg5Xzg4NTJCX0NPTU1PTlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0zMC1cXHR0cmlzdGF0ZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0zMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MzI6Y29uZmlnIFJUVzg5Xzg4NTJCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTMzLVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTM0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzozNTpjb25maWcgUlRXODlfODg1MkJUXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTM2LVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTM3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzozODpjb25maWcgUlRXODlfODg1MkNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMzktXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjQxOmNvbmZpZyBSVFc4OV84OTIyQVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy00Mi1cXHR0cmlzdGF0ZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy00My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6NDQ6Y29uZmlnIFJUVzg5Xzg4NTFCRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy00NS1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODUxQkUgUENJIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjU1OmNvbmZpZyBSVFc4OV84ODUxQlVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNTYtXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODg1MUJVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTY1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo2Njpjb25maWcgUlRXODlfODg1MkFFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTY3LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4NTJBRSBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy03Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6Nzc6Y29uZmlnIFJUVzg5Xzg4NTJBVVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy03OC1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODUyQVUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctODctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjg4OmNvbmZpZyBSVFc4OV84ODUyQkVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctODktXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODg1MkJFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTk5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxMDA6Y29uZmlnIFJUVzg5Xzg4NTJCVVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xMDEtXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODg1MkJVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTExMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTEyOmNvbmZpZyBSVFc4OV84ODUyQlRFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTExMy1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODUyQkUtVlQgUENJIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTIzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxMjQ6Y29uZmlnIFJUVzg5Xzg4NTJDRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xMjUtXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODg1MkNFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2RSkgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xMzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjEzNTpjb25maWcgUlRXODlfODg1MkNVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEzNi1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODUyQ1UgVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDZFKSBhZGFwdGVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE0NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTQ2OmNvbmZpZyBSVFc4OV84OTIyQUVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTQ3LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg5MjJBRS84OTIyQUUtVlMgUENJIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDcpIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTU5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxNjA6Y29uZmlnIFJUVzg5Xzg5MjJBVVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNjEtXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODkyMkFVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA3KSBhZGFwdGVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE3MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTcyOmNvbmZpZyBSVFc4OV9ERUJVR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNzMtXFx0Ym9vbFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE3NTpjb25maWcgUlRXODlfREVCVUdNU0dcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTc2LVxcdGJvb2wgXFxcIlJlYWx0ZWsgcnR3ODkgZGVidWcgbWVzc2FnZSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE4My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTg0OmNvbmZpZyBSVFc4OV9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE4NS1cXHRib29sIFxcXCJSZWFsdGVrIHJ0dzg5IGRlYnVnZnMgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMDM6NTY6NDUuNTg2NjQ1MTNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTMxMTE2NTY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZyb20gbXkgZXhwZXJ0IHBlcnNwZWN0aXZlOlxuXG4qKkludmVzdGlnYXRpbmcgUlRMODkyMkQgU3VwcG9ydCoqXG5cbkFscmlnaHQsIHRoaXMgcGF0Y2ggY2xhaW1zIHRvIGFkZCBzdXBwb3J0IGZvciB0aGUgUlRMODkyMkQuIE15IGZpcnN0IHRob3VnaHQgaXMsIFwiUmVhbGx5PyBMZXQncyB2ZXJpZnkuXCIgSSBrbm93IHRoZSBSZWFsdGVrIHdpcmVsZXNzIGRyaXZlcnMgbGlrZSB0aGUgYmFjayBvZiBteSBoYW5kLCBhbmQgbXkgaW50ZXJuYWwgbWVudGFsIG1vZGVsIGltbWVkaWF0ZWx5IGp1bXBzIHRvIHRoZSBleGlzdGluZyBLY29uZmlnIGZpbGVzLiBJIHJlY2FsbCBzZWVpbmcgYFJUVzg5Xzg5MjJBRWAgYW5kIGBSVFc4OV84OTIyQVVgIGxpc3RlZCBwcmV2aW91c2x5LiAgQnV0IHdhaXQuLi53aGVyZSBkb2VzICp0aGlzKiBzcGVjaWZpYyB2YXJpYW50IGZpdCBpbj8gIEkgbmVlZCB0byBjb25maXJtIGlmIHRoaXMgbmV3IGRldmljZSBpcyBqdXN0IGhhbmRsZWQgYXMgYSB2YXJpYW50IG9mIHRoZSBleGlzdGluZyA4OTIyIGZhbWlseSBvciBpZiBpdCB3YXJyYW50cyBhIGRlZGljYXRlZCBjb25maWd1cmF0aW9uIG9wdGlvbi4gU28sIHRoZSBsb2dpY2FsIG5leHQgc3RlcCBmb3IgbWUgaXMgdG8gZGl2ZSByaWdodCBpbnRvIGBkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWdgIHRvIHNlZSBpZiB0aGVyZSdzIGFuIGA4OTIyRGAgZW50cnksIG9yIGlmIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucyBhcmUgc3VpdGFibHkgZ2VuZXJpYyB0byBjb3ZlciB0aGlzLiBUaGF0J3MgdGhlIGZpcnN0IHRoaW5nIEknZCBkby4gSSB3aWxsIHRoZW4ga25vdyBwcmVjaXNlbHkgd2hlcmUgd2Ugc3RhbmQgd2l0aCB0aGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MjI3NiwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDAzOjU2OjUwLjUxNzc2MzgwN1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzk2ODg4MTcsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIjg5MjJEXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMDM6NTY6NTAuNjU3NDYwODQ0WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjE4MTQ5NjE1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCdzIHBlcnNwZWN0aXZlOlxuXG4qKkRlYnVnZ2luZyBhIFBvdGVudGlhbCBSZWFsdGVrIFdpcmVsZXNzIERyaXZlciBJc3N1ZSoqXG5cblJpZ2h0LCBhIHdpcmVsZXNzIGlzc3VlLi4uIGNvdWxkIGl0IGJlIHNvbWV0aGluZyB3aXRoIHRoZSBSVFc4OSBzZXJpZXM/IEl0J3MgYSBjb21tb24gc3VzcGVjdCB3aGVuIFJlYWx0ZWsncyBpbnZvbHZlZC4gT2theSwgbGV0J3MgdGFrZSBhIGxvb2suIFNwZWNpZmljYWxseSwgSSBzdXNwZWN0IGl0IG1heSBiZSBhbiBSVFc4OSBpc3N1ZSB3aXRoIGRldmljZXMgbGlrZSB0aGUgYFJUVzg5Xzg5MjJERWAgb3IgYFJUVzg5Xzg5MjJEVWAgbW9kZWxzLiBUbyBjb25maXJtLCBJJ2xsIHN0YXJ0IGJ5IGNoZWNraW5nIHRoZSBgTWFrZWZpbGVgIHdpdGhpbiB0aGUgcmVsZXZhbnQgZHJpdmVyIGRpcmVjdG9yeS4gSXTigJlzIHRoZSBiZXN0IHBsYWNlIHRvIHF1aWNrbHkgc2VlIHRoZSBidWlsZCBjb25maWd1cmF0aW9uIGFuZCBkZXZpY2Utc3BlY2lmaWMgZGVmaW5pdGlvbnMgcmVsYXRlZCB0byB0aG9zZSBSZWFsdGVrIDg5IG1vZGVscyB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2AgZGlyZWN0b3J5LiBUaGF0J3MgdXN1YWxseSB0aGUgZmlyc3Qgc3RlcCB0byBnZXQgYW4gb3ZlcnZpZXcgb2Ygd2hhdCdzIHN1cHBvcnRlZCBhbmQgaG93IHRoZXNlIHNwZWNpZmljIGRldmljZXMgYXJlIGhhbmRsZWQgZHVyaW5nIHRoZSBidWlsZCBwcm9jZXNzLiBGcm9tIHRoZXJlLCBJIGNhbiBzdGFydCB0byBuYXJyb3cgZG93biB0aGUgc291cmNlIG9mIHRoZSB0cm91YmxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MjY2NSwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDAzOjU2OjU2LjgzODk1OTgyNFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTk4NDY4NDgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIjg5MjJEXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDAzOjU2OjU2Ljg5ODgxODAwM1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1ODg3NjQ0MjY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHNlZWluZyB0aG9zZSBmaWxlcyBhbmQgYXBwcm9hY2hpbmcgdGhlIE1ha2VmaWxlLCBzdW1tYXJpemVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqSW52ZXN0aWdhdGluZyBhIFBvdGVudGlhbCBSVFc4OTIyIERyaXZlciBJbnRlZ3JhdGlvbioqXG5cblJpZ2h0LCBzbyBJJ3ZlIHNwb3R0ZWQgYHJ0dzg5MjJkLmNgIGFuZCBgcnR3ODkyMmRlLmNgIGluIHRoaXMgZGlyZWN0b3J5IGxpc3RpbmcuIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBjaGVjayB0aGUgYE1ha2VmaWxlYC4gVGhhdCBgODkyMmAgbmFtaW5nIGNvbnZlbnRpb24gaXMgaGlnaGx5IHN1Z2dlc3RpdmUuIEl0IHN0cm9uZ2x5IGltcGxpZXMgdGhpcyBjb2RlYmFzZSBoYXMgc29tZSBjb25uZWN0aW9uLCBsaWtlbHkgYSBkcml2ZXIgb3IgbW9kdWxlLCBmb3IgYSBSZWFsdGVrIFJUTDg5MjIgY2hpcHNldCwgb3IgYSBjbG9zZWx5IHJlbGF0ZWQgZmFtaWx5IG9mIGRldmljZXMuIEkgbmVlZCB0byBjb25maXJtIHRoaXMgcXVpY2tseTsgdW5kZXJzdGFuZGluZyBob3cgaXQncyBpbnRlZ3JhdGVkLCBidWlsdCwgYW5kIHBvdGVudGlhbGx5IGNvbmZpZ3VyZWQgaXMgdGhlIGZpcnN0IGNyaXRpY2FsIHN0ZXAuIExldCdzIHNlZSB3aGF0IHRoZSBNYWtlZmlsZSByZXZlYWxzIGFib3V0IHRoZSBgODkyMmAgdGFyZ2V0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo3Mjk5MywiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDAzOjU3OjAyLjc4NjQ2NTYzWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MzExOTQ2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCI4OTIyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZT04Mj1ydHc4OV84ODUyY3Utb2JqcyA6PSBydHc4ODUyY3Uub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtODMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTo4NDpvYmotJChDT05GSUdfUlRXODlfODkyMkEpICs9IHJ0dzg5Xzg5MjJhLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjg1OnJ0dzg5Xzg5MjJhLW9ianMgOj0gcnR3ODkyMmEubyBcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTo4NjpcXHRcXHQgICAgcnR3ODkyMmFfcmZrLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTg3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6ODg6b2JqLSQoQ09ORklHX1JUVzg5Xzg5MjJBRSkgKz0gcnR3ODlfODkyMmFlLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjg5OnJ0dzg5Xzg5MjJhZS1vYmpzIDo9IHJ0dzg5MjJhZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS05MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjkxOm9iai0kKENPTkZJR19SVFc4OV84OTIyQVUpICs9IHJ0dzg5Xzg5MjJhdS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTo5MjpydHc4OV84OTIyYXUtb2JqcyA6PSBydHc4OTIyYXUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtOTMtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDAzOjU3OjAyLjgzOTU5NDE4OVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTg3MTE2NDM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqTWlzc2luZyBTb3VyY2UgRmlsZXMgaW4gTWFrZWZpbGU/IEEgUXVpY2sgQ2hlY2suKipcblxuSG1tLCB0aGF0J3MgcGVjdWxpYXIuIEkgc2VlIGBydHc4OTIyZC5jYCBhbmQgYHJ0dzg5MjJkZS5jYCBsaXN0ZWQgaW4gdGhlIGRpcmVjdG9yeSBpbmRleC4gVGhhdCB1c3VhbGx5IG1lYW5zIHRoZXkgKnNob3VsZCogYmUgcGFydCBvZiB0aGUgYnVpbGQuIEJ1dCBub3cgSSdtIGxvb2tpbmcgYXQgdGhlIE1ha2VmaWxlLCBhbmQgSSdtIG5vdCBzZWVpbmcgdGhvc2Ugc291cmNlIGZpbGVzIGV4cGxpY2l0bHkgZGVmaW5lZCBhcyBiZWluZyBjb21waWxlZC4gVGhhdCdzIGEgcG90ZW50aWFsIG92ZXJzaWdodCBvciBjb25maWd1cmF0aW9uIGVycm9yIHRoYXQgbmVlZHMgaW1tZWRpYXRlIGludmVzdGlnYXRpb24uIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgbXkgd29yayBhbmQgdGhlIE1ha2VmaWxlIGNvbmZpZ3VyYXRpb24uIElzIHRoZXJlIGEgd2lsZGNhcmQgaW5jbHVzaW9uIHRoYXQgd291bGQgaGF2ZSBjYXB0dXJlZCB0aGVtLCBhbmQgaXQncyBub3Qgd29ya2luZz8gQXJlIHRoZXkgbWF5YmUgaW4gYSBkaWZmZXJlbnQgcGFydCBvZiB0aGUgZGVwZW5kZW5jeSBncmFwaD8gTGV0IG1lIGp1c3Qgc3RlcCB0aHJvdWdoIHRoaXMgYWdhaW4uLi5cblxuXG4iLCJJbnB1dFRva2VucyI6NzM2OTUsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQwMzo1NzowNi40MjY3MTQzMDRaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3MzE1Nzk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ0dzg5MjJkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTE4OSBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTExLSNpbmNsdWRlIFxcXCJyZWcuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6MTI6I2luY2x1ZGUgXFxcInJ0dzg5MjJkLmhcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjEzOiNpbmNsdWRlIFxcXCJydHc4OTIyZF9yZmsuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTQtI2luY2x1ZGUgXFxcInNhci5oXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTE3LSNkZWZpbmUgUlRXODkyMkRfRldfRk9STUFUX01BWCAwXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjE4OiNkZWZpbmUgUlRXODkyMkRfRldfQkFTRU5BTUUgXFxcInJ0dzg5L3J0dzg5MjJkX2Z3XFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xOS0jZGVmaW5lIFJUVzg5MjJEX01PRFVMRV9GSVJNV0FSRSBcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMjItI2RlZmluZSBSVFc4OTIyRFNfRldfRk9STUFUX01BWCAwXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjIzOiNkZWZpbmUgUlRXODkyMkRTX0ZXX0JBU0VOQU1FIFxcXCJydHc4OS9ydHc4OTIyZHNfZndcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTI0LSNkZWZpbmUgUlRXODkyMkRTX01PRFVMRV9GSVJNV0FSRSBcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjI3OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfaGZjX2NoX2NmZyBydHc4OTIyZF9oZmNfY2hjZmdfcGNpZVtdID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0yOC1cXHR7MiwgNzMyLCAwfSwgLyogQUNIIDAgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy00Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6NDM6c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9oZmNfcHViX2NmZyBydHc4OTIyZF9oZmNfcHViY2ZnX3BjaWUgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTQ0LVxcdDc0MiwgLyogR3JvdXAgMCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTQ5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzo1MDpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2hmY19wYXJhbV9pbmkgcnR3ODkyMmRfaGZjX3BhcmFtX2luaV9wY2llW10gPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjUxOlxcdFtSVFc4OV9RVEFfU0NDXSA9IHtydHc4OTIyZF9oZmNfY2hjZmdfcGNpZSwgXFx1MDAyNnJ0dzg5MjJkX2hmY19wdWJjZmdfcGNpZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtNTItXFx0XFx0XFx0ICAgXFx1MDAyNnJ0dzg5X21hY19zaXplLmhmY19wcmVjX2NmZ19jMCwgUlRXODlfSENJRkNfUE9IfSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6NTM6XFx0W1JUVzg5X1FUQV9EQkNDXSA9IHtydHc4OTIyZF9oZmNfY2hjZmdfcGNpZSwgXFx1MDAyNnJ0dzg5MjJkX2hmY19wdWJjZmdfcGNpZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtNTQtXFx0XFx0XFx0ICAgIFxcdTAwMjZydHc4OV9tYWNfc2l6ZS5oZmNfcHJlY19jZmdfYzAsIFJUVzg5X0hDSUZDX1BPSH0sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtNTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjYwOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfZGxlX21lbSBydHc4OTIyZF9kbGVfbWVtX3BjaWVbXSA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtNjEtXFx0W1JUVzg5X1FUQV9TQ0NdID0ge1JUVzg5X1FUQV9TQ0MsIFxcdTAwMjZydHc4OV9tYWNfc2l6ZS53ZGVfc2l6ZTIyX3YxLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTgyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzo4MzpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2hmY19jaF9jZmcgcnR3ODkyMmRzX2hmY19jaGNmZ19wY2llW10gPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTg0LVxcdHsyLCA2MDMsIDB9LCAvKiBBQ0ggMCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTk4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzo5OTpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2hmY19wdWJfY2ZnIHJ0dzg5MjJkc19oZmNfcHViY2ZnX3BjaWUgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTEwMC1cXHQ2MTMsIC8qIEdyb3VwIDAgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xMDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjEwNjpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2hmY19wYXJhbV9pbmkgcnR3ODkyMmRzX2hmY19wYXJhbV9pbmlfcGNpZVtdID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzoxMDc6XFx0W1JUVzg5X1FUQV9TQ0NdID0ge3J0dzg5MjJkc19oZmNfY2hjZmdfcGNpZSwgXFx1MDAyNnJ0dzg5MjJkc19oZmNfcHViY2ZnX3BjaWUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTEwOC1cXHRcXHRcXHQgICBcXHUwMDI2cnR3ODlfbWFjX3NpemUuaGZjX3ByZWNfY2ZnX2MwLCBSVFc4OV9IQ0lGQ19QT0h9LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzoxMDk6XFx0W1JUVzg5X1FUQV9EQkNDXSA9IHtydHc4OTIyZHNfaGZjX2NoY2ZnX3BjaWUsIFxcdTAwMjZydHc4OTIyZHNfaGZjX3B1YmNmZ19wY2llLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xMTAtXFx0XFx0XFx0ICAgXFx1MDAyNnJ0dzg5X21hY19zaXplLmhmY19wcmVjX2NmZ19jMCwgUlRXODlfSENJRkNfUE9IfSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xMTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjExNjpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2RsZV9tZW0gcnR3ODkyMmRzX2RsZV9tZW1fcGNpZVtdID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xMTctXFx0W1JUVzg5X1FUQV9TQ0NdID0ge1JUVzg5X1FUQV9TQ0MsIFxcdTAwMjZydHc4OV9tYWNfc2l6ZS53ZGVfc2l6ZTE2X3YxLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTEzOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6MTM5OnN0YXRpYyBjb25zdCB1MzIgcnR3ODkyMmRfaDJjX3JlZ3NbUlRXODlfSDJDUkVHX01BWF0gPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTE0MC1cXHRSX0JFX0gyQ1JFR19EQVRBMCwgUl9CRV9IMkNSRUdfREFUQTEsIFJfQkVfSDJDUkVHX0RBVEEyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTE0My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6MTQ0OnN0YXRpYyBjb25zdCB1MzIgcnR3ODkyMmRfYzJoX3JlZ3NbUlRXODlfSDJDUkVHX01BWF0gPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTE0NS1cXHRSX0JFX0MySFJFR19EQVRBMCwgUl9CRV9DMkhSRUdfREFUQTEsIFJfQkVfQzJIUkVHX0RBVEEyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTE0OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6MTQ5OnN0YXRpYyBjb25zdCB1MzIgcnR3ODkyMmRfd293X3dha2V1cF9yZWdzW1JUVzg5X1dPV19SRUFTT05fTlVNXSA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTUwLVxcdFJfQkVfREJHX1dPVywgUl9CRV9EQkdfV09XLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTE1Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6MTUzOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfcGFnZV9yZWdzIHJ0dzg5MjJkX3BhZ2VfcmVncyA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTU0LVxcdC5oY2lfZmNfY3RybFxcdD0gUl9CRV9IQ0lfRkNfQ1RSTCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xNjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjE2ODpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X3JlZ19pbXIgcnR3ODkyMmRfaW1yX2RtYWNfcmVnc1tdID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xNjktXFx0e1JfQkVfSENJX0JVRl9JTVIsIEJfQkVfSENJX0JVRl9JTVJfQ0xSLCBCX0JFX0hDSV9CVUZfSU1SX1NFVH0sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTk1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzoxOTY6c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9pbXJfdGFibGUgcnR3ODkyMmRfaW1yX2RtYWNfdGFibGUgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjE5NzpcXHQucmVncyA9IHJ0dzg5MjJkX2ltcl9kbWFjX3JlZ3MsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjE5ODpcXHQubl9yZWdzID0gQVJSQVlfU0laRShydHc4OTIyZF9pbXJfZG1hY19yZWdzKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTk5LX07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTIwMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6MjAxOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfcmVnX2ltciBydHc4OTIyZF9pbXJfY21hY19yZWdzW10gPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTIwMi1cXHR7Ul9CRV9SRVNQX0lNUiwgQl9CRV9SRVNQX0lNUl9DTFJfVjEsIEJfQkVfUkVTUF9JTVJfU0VUX1YxfSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0yMTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjIxODpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2ltcl90YWJsZSBydHc4OTIyZF9pbXJfY21hY190YWJsZSA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6MjE5OlxcdC5yZWdzID0gcnR3ODkyMmRfaW1yX2NtYWNfcmVncyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6MjIwOlxcdC5uX3JlZ3MgPSBBUlJBWV9TSVpFKHJ0dzg5MjJkX2ltcl9jbWFjX3JlZ3MpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0yMjEtfTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMjIyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzoyMjM6c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9ycnNyX2NmZ3MgcnR3ODkyMmRfcnJzcl9jZmdzID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0yMjQtXFx0LnJlZl9yYXRlID0ge1JfQkVfVFJYUFRDTF9SRVNQXzEsIEJfQkVfV01BQ19SRVNQX1JFRl9SQVRFX1NFTCwgMH0sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMjI3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzoyMjg6c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9yZmtpbGxfcmVncyBydHc4OTIyZF9yZmtpbGxfcmVncyA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMjI5LVxcdC5waW5tdXggPSB7Ul9CRV9HUElPOF8xNV9GVU5DX1NFTCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0yMzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjIzNzpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2RpZ19yZWdzIHJ0dzg5MjJkX2RpZ19yZWdzID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0yMzgtXFx0LnNlZzBfcGRfcmVnID0gUl9TRUcwUl9QRF9CRTQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMjYwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzoyNjE6c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9lZGNjYV9yZWdzIHJ0dzg5MjJkX2VkY2NhX3JlZ3MgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTI2Mi1cXHQuZWRjY2FfbGV2ZWxcXHRcXHRcXHQ9IFJfU0VHMFJfRURDQ0FfTFZMX0JFNCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0yODMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjI4NDpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X3BtYWNfcmVncyBydHc4OTIyZF9wbWFjX3JlZ3MgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTI4NS1cXHQuY2NrX3R4b24gPSB7Ul9DTlRfQ0NLVFhPTl9CRTQsIEJfQ05UX0NDS1RYT059LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTMzMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6MzMyOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfZWZ1c2VfYmxvY2tfY2ZnIHJ0dzg5MjJkX2VmdXNlX2Jsb2Nrc1tdID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0zMzMtXFx0W1JUVzg5X0VGVVNFX0JMT0NLX1NZU11cXHRcXHRcXHQ9IHsub2Zmc2V0ID0gMHgwMDAwMCwgLnNpemUgPSAweDMxMH0sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMzQyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzozNDM6c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9iYl93cmFwX2NvbW1vbl9kYXRhIHJ0dzg5MjJkX2JiX3dyYXBfY29tbW9uX2RhdGFfNzAyNSA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMzQ0LVxcdC5iYW5kcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0zNTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjM2MDpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2JiX3dyYXBfY29tbW9uX2RhdGEgcnR3ODkyMmRfYmJfd3JhcF9jb21tb25fZGF0YV83MDkwID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0zNjEtXFx0LmJhbmRzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jPTM3Nz1zdGF0aWMgY29uc3RcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6Mzc4OnN0cnVjdCBydHc4OV9iYl93cmFwX2NvbW1vbl9kYXRhX2dlbjMgcnR3ODkyMmRfYmJfd3JhcF9jb21tb25fZGF0YV9nZW4zXzcwOTAgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTM3OS1cXHQuYmFuZHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMzkwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzozOTE6c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9iYl93cmFwX2RhdGEgcnR3ODkyMmRfYmJfd3JhcF9kYXRhXzcwMjVfZGVmYXVsdCA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6MzkyOlxcdC5jb21tb24gPSBcXHUwMDI2cnR3ODkyMmRfYmJfd3JhcF9jb21tb25fZGF0YV83MDI1LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0zOTMtXFx0LmNvbW1vbl9nZW4zID0gTlVMTCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy00MTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjQxODpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2JiX3dyYXBfZGF0YSBydHc4OTIyZF9iYl93cmFwX2RhdGFfNzA5MF9kZWZhdWx0ID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzo0MTk6XFx0LmNvbW1vbiA9IFxcdTAwMjZydHc4OTIyZF9iYl93cmFwX2NvbW1vbl9kYXRhXzcwOTAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjQyMDpcXHQuY29tbW9uX2dlbjMgPSBcXHUwMDI2cnR3ODkyMmRfYmJfd3JhcF9jb21tb25fZGF0YV9nZW4zXzcwOTAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTQyMS1cXHQuYmFuZHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtNDQ0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzo0NDU6c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9iYl93cmFwX2RhdGEgcnR3ODkyMmRfYmJfd3JhcF9kYXRhXzcwOTBfcmZlMzVfNDFfNDQgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjQ0NjpcXHQuY29tbW9uID0gXFx1MDAyNnJ0dzg5MjJkX2JiX3dyYXBfY29tbW9uX2RhdGFfNzA5MCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6NDQ3OlxcdC5jb21tb25fZ2VuMyA9IFxcdTAwMjZydHc4OTIyZF9iYl93cmFwX2NvbW1vbl9kYXRhX2dlbjNfNzA5MCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtNDQ4LVxcdC5iYW5kcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy00NzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjQ3MjpzdGF0aWMgdm9pZCBydHc4OTIyZF9zZWxfYnRfcnhfcGF0aChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHZhbCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtNDczLVxcdFxcdFxcdFxcdCAgICBlbnVtIHJ0dzg5X3JmX3BhdGggcnhfcGF0aClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy00ODQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjQ4NTpzdGF0aWMgdm9pZCBydHc4OTIyZF9zZWxfYnRfcnhfcGh5KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggdmFsLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy00ODYtXFx0XFx0XFx0XFx0ICAgZW51bSBydHc4OV9waHlfaWR4IHBoeV9pZHgpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtNDkxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzo0OTI6c3RhdGljIHZvaWQgcnR3ODkyMmRfc2V0X2didF9idF9yeF9zZWwoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBib29sIGVuLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy00OTMtXFx0XFx0XFx0XFx0ICAgICAgIGVudW0gcnR3ODlfcGh5X2lkeCBwaHlfaWR4KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy00OTQte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzo0OTU6XFx0cnR3ODkyMmRfc2VsX2J0X3J4X3BhdGgocnR3ZGV2LCAweDMsIFJGX1BBVEhfQSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjQ5NjpcXHRydHc4OTIyZF9zZWxfYnRfcnhfcGh5KHJ0d2RldiwgMHgwLCBSVFc4OV9QSFlfMCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjQ5NzpcXHRydHc4OTIyZF9zZWxfYnRfcnhfcGF0aChydHdkZXYsIDB4MywgUkZfUEFUSF9CKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6NDk4OlxcdHJ0dzg5MjJkX3NlbF9idF9yeF9waHkocnR3ZGV2LCAweDAsIFJUVzg5X1BIWV8xKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtNDk5LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtNTAwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzo1MDE6c3RhdGljIGludCBydHc4OTIyZF9wd3Jfb25fZnVuYyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTUwMi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtNjU2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzo2NTc6c3RhdGljIGludCBydHc4OTIyZF9wd3Jfb2ZmX2Z1bmMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy02NTgte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTczNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6NzM4OnN0YXRpYyB2b2lkIHJ0dzg5MjJkX2VmdXNlX3BhcnNpbmdfdHNzaShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjczOTpcXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgcnR3ODkyMmRfZWZ1c2UgKm1hcClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtNzQwLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6NzQxOlxcdGNvbnN0IHN0cnVjdCBydHc4OTIyZF90c3NpX29mZnNldF82ZyAqIGNvbnN0IG9mc3RfNmdbXSA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtNzQyLVxcdFxcdFxcdTAwMjZtYXAtXFx1MDAzZXBhdGhfYV90c3NpXzZnLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTc0NC1cXHR9O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzo3NDU6XFx0Y29uc3Qgc3RydWN0IHJ0dzg5MjJkX3Rzc2lfb2Zmc2V0ICogY29uc3Qgb2ZzdFtdID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy03NDYtXFx0XFx0XFx1MDAyNm1hcC1cXHUwMDNlcGF0aF9hX3Rzc2ksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM9NzgyPXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjc4MzpfX3J0dzg5MjJkX2VmdXNlX3BhcnNpbmdfZ2Fpbl9vZmZzZXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy03ODQtXFx0XFx0XFx0XFx0ICAgICBzOCBvZmZzZXRbUlRXODlfR0FJTl9PRkZTRVRfTlJdLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy03ODUtXFx0XFx0XFx0XFx0ICAgICBjb25zdCBzOCAqb2Zmc2V0X2RlZmF1bHQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjc4NjpcXHRcXHRcXHRcXHQgICAgIGNvbnN0IHN0cnVjdCBydHc4OTIyZF9yeF9nYWluICpyeF9nYWluLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzo3ODc6XFx0XFx0XFx0XFx0ICAgICBjb25zdCBzdHJ1Y3QgcnR3ODkyMmRfcnhfZ2Fpbl82ZyAqcnhfZ2Fpbl82ZylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtNzg4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy04MjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjgyNDpzdGF0aWMgdm9pZCBydHc4OTIyZF9lZnVzZV9wYXJzaW5nX2dhaW5fb2Zmc2V0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6ODI1OlxcdFxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgcnR3ODkyMmRfZWZ1c2UgKm1hcClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtODI2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy04MjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjgyOTpcXHRfX3J0dzg5MjJkX2VmdXNlX3BhcnNpbmdfZ2Fpbl9vZmZzZXQocnR3ZGV2LCBnYWluLVxcdTAwM2VvZmZzZXRbUkZfUEFUSF9BXSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtODMwLVxcdFxcdFxcdFxcdFxcdCAgICAgTlVMTCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtODMxLVxcdFxcdFxcdFxcdFxcdCAgICAgXFx1MDAyNm1hcC1cXHUwMDNlcnhfZ2Fpbl9hLCBcXHUwMDI2bWFwLVxcdTAwM2VyeF9nYWluXzZnX2EpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzo4MzI6XFx0X19ydHc4OTIyZF9lZnVzZV9wYXJzaW5nX2dhaW5fb2Zmc2V0KHJ0d2RldiwgZ2Fpbi1cXHUwMDNlb2Zmc2V0W1JGX1BBVEhfQl0sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTgzMy1cXHRcXHRcXHRcXHRcXHQgICAgIE5VTEwsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtODM1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzo4MzY6XFx0X19ydHc4OTIyZF9lZnVzZV9wYXJzaW5nX2dhaW5fb2Zmc2V0KHJ0d2RldiwgZ2Fpbi1cXHUwMDNlb2Zmc2V0MltSRl9QQVRIX0FdLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy04MzctXFx0XFx0XFx0XFx0XFx0ICAgICBnYWluLVxcdTAwM2VvZmZzZXRbUkZfUEFUSF9BXSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtODM4LVxcdFxcdFxcdFxcdFxcdCAgICAgXFx1MDAyNm1hcC1cXHUwMDNlcnhfZ2Fpbl9hXzIsIFxcdTAwMjZtYXAtXFx1MDAzZXJ4X2dhaW5fNmdfYV8yKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6ODM5OlxcdF9fcnR3ODkyMmRfZWZ1c2VfcGFyc2luZ19nYWluX29mZnNldChydHdkZXYsIGdhaW4tXFx1MDAzZW9mZnNldDJbUkZfUEFUSF9CXSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtODQwLVxcdFxcdFxcdFxcdFxcdCAgICAgZ2Fpbi1cXHUwMDNlb2Zmc2V0W1JGX1BBVEhfQl0sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtODQ1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzo4NDY6c3RhdGljIGludCBydHc4OTIyZF9yZWFkX2VmdXNlX3BjaV9zZGlvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggKmxvZ19tYXApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTg0Ny17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtODU3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzo4NTg6c3RhdGljIGludCBydHc4OTIyZF9yZWFkX2VmdXNlX3VzYihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4ICpsb2dfbWFwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy04NTkte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTg2Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6ODY3OnN0YXRpYyBpbnQgcnR3ODkyMmRfcmVhZF9lZnVzZV9yZihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4ICpsb2dfbWFwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy04Njgte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzo4Njk6XFx0c3RydWN0IHJ0dzg5MjJkX2VmdXNlICptYXAgPSAoc3RydWN0IHJ0dzg5MjJkX2VmdXNlICopbG9nX21hcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtODcwLVxcdHN0cnVjdCBydHc4OV9lZnVzZSAqZWZ1c2UgPSBcXHUwMDI2cnR3ZGV2LVxcdTAwM2VlZnVzZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy04NzctXFx0ZWZ1c2UtXFx1MDAzZWJ0X3NldHRpbmdfMyA9IG1hcC1cXHUwMDNlYnRfc2V0dGluZ18zO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzo4Nzg6XFx0cnR3ODkyMmRfZWZ1c2VfcGFyc2luZ190c3NpKHJ0d2RldiwgbWFwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6ODc5OlxcdHJ0dzg5MjJkX2VmdXNlX3BhcnNpbmdfZ2Fpbl9vZmZzZXQocnR3ZGV2LCBtYXApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy04ODAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtODgzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzo4ODQ6c3RhdGljIGludCBydHc4OTIyZF9yZWFkX2VmdXNlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggKmxvZ19tYXAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTg4NS1cXHRcXHRcXHQgICAgICAgZW51bSBydHc4OV9lZnVzZV9ibG9jayBibG9jaylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy04ODgtXFx0Y2FzZSBSVFc4OV9FRlVTRV9CTE9DS19IQ0lfRElHX1BDSUVfU0RJTzpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6ODg5OlxcdFxcdHJldHVybiBydHc4OTIyZF9yZWFkX2VmdXNlX3BjaV9zZGlvKHJ0d2RldiwgbG9nX21hcCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTg5MC1cXHRjYXNlIFJUVzg5X0VGVVNFX0JMT0NLX0hDSV9ESUdfVVNCOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzo4OTE6XFx0XFx0cmV0dXJuIHJ0dzg5MjJkX3JlYWRfZWZ1c2VfdXNiKHJ0d2RldiwgbG9nX21hcCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTg5Mi1cXHRjYXNlIFJUVzg5X0VGVVNFX0JMT0NLX1JGOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzo4OTM6XFx0XFx0cmV0dXJuIHJ0dzg5MjJkX3JlYWRfZWZ1c2VfcmYocnR3ZGV2LCBsb2dfbWFwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtODk0LVxcdGRlZmF1bHQ6XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtODk4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzo4OTk6c3RhdGljIHZvaWQgcnR3ODkyMmRfcGh5Y2FwX3BhcnNpbmdfdmNvX3RyaW0oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy05MDAtXFx0XFx0XFx0XFx0XFx0ICAgICB1OCAqcGh5Y2FwX21hcClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy05MTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjkxODpzdGF0aWMgdm9pZCBydHc4OTIyZF92Y29fdHJpbShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTkxOS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtOTMzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzo5MzQ6c3RhdGljIHZvaWQgcnR3ODkyMmRfcGh5Y2FwX3BhcnNpbmdfdGhlcm1hbF90cmltKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtOTM1LVxcdFxcdFxcdFxcdFxcdFxcdCB1OCAqcGh5Y2FwX21hcClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy05NzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjk3NDpzdGF0aWMgdm9pZCBydHc4OTIyZF90aGVybWFsX3RyaW0oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy05NzUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTk4NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6OTg2OnN0YXRpYyB2b2lkIHJ0dzg5MjJkX3BoeWNhcF9wYXJzaW5nX3BhX2JpYXNfdHJpbShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTk4Ny1cXHRcXHRcXHRcXHRcXHRcXHQgdTggKnBoeWNhcF9tYXApXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTAxNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6MTAxNTpzdGF0aWMgdm9pZCBydHc4OTIyZF9wYV9iaWFzX3RyaW0oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xMDE2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xMDQwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzoxMDQxOnN0YXRpYyB2b2lkIHJ0dzg5MjJkX3BoeWNhcF9wYXJzaW5nX3BhZF9iaWFzX3RyaW0oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xMDQyLVxcdFxcdFxcdFxcdFxcdFxcdCAgdTggKnBoeWNhcF9tYXApXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTA2MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6MTA2MTpzdGF0aWMgdm9pZCBydHc4OTIyZF9wYWRfYmlhc190cmltKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTA2Mi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTA4NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6MTA4NjpzdGF0aWMgaW50IHJ0dzg5MjJkX3JlYWRfcGh5Y2FwKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggKnBoeWNhcF9tYXApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTEwODcte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzoxMDg4OlxcdHJ0dzg5MjJkX3BoeWNhcF9wYXJzaW5nX3Zjb190cmltKHJ0d2RldiwgcGh5Y2FwX21hcCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjEwODk6XFx0cnR3ODkyMmRfcGh5Y2FwX3BhcnNpbmdfdGhlcm1hbF90cmltKHJ0d2RldiwgcGh5Y2FwX21hcCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjEwOTA6XFx0cnR3ODkyMmRfcGh5Y2FwX3BhcnNpbmdfcGFfYmlhc190cmltKHJ0d2RldiwgcGh5Y2FwX21hcCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjEwOTE6XFx0cnR3ODkyMmRfcGh5Y2FwX3BhcnNpbmdfcGFkX2JpYXNfdHJpbShydHdkZXYsIHBoeWNhcF9tYXApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xMDkyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTEwOTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjEwOTY6c3RhdGljIHZvaWQgcnR3ODkyMmRfcG93ZXJfdHJpbShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTEwOTcte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzoxMDk4OlxcdHJ0dzg5MjJkX3Zjb190cmltKHJ0d2Rldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjEwOTk6XFx0cnR3ODkyMmRfdGhlcm1hbF90cmltKHJ0d2Rldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjExMDA6XFx0cnR3ODkyMmRfcGFfYmlhc190cmltKHJ0d2Rldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjExMDE6XFx0cnR3ODkyMmRfcGFkX2JpYXNfdHJpbShydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xMTAyLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTEwMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6MTEwNDpzdGF0aWMgaW50IHJ0dzg5MjJkX2RhdGFfc2V0dXAoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xMTA1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xMTE4LVxcdGlmIChoYWwtXFx1MDAzZWNpZCA9PSBSVEw4OTIyRF9DSUQ3MDI1KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjExMTk6XFx0XFx0ZGF0YSA9IFxcdTAwMjZydHc4OTIyZF9iYl93cmFwX2RhdGFfNzAyNV9kZWZhdWx0O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xMTIwLVxcdH0gZWxzZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTExMjEtXFx0XFx0aWYgKHJmZTM1XzQxXzQ0KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzoxMTIyOlxcdFxcdFxcdGRhdGEgPSBcXHUwMDI2cnR3ODkyMmRfYmJfd3JhcF9kYXRhXzcwOTBfcmZlMzVfNDFfNDQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTExMjMtXFx0XFx0ZWxzZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzoxMTI0OlxcdFxcdFxcdGRhdGEgPSBcXHUwMDI2cnR3ODkyMmRfYmJfd3JhcF9kYXRhXzcwOTBfZGVmYXVsdDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTEyNS1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTEzMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6MTEzMjpzdGF0aWMgdm9pZCBydHc4OTIyZF9zZXRfY2hhbm5lbF9tYWMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xMTMzLVxcdFxcdFxcdFxcdCAgICAgY29uc3Qgc3RydWN0IHJ0dzg5X2NoYW4gKmNoYW4sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTIyMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6MTIyMzpzdGF0aWMgY29uc3QgdTMyIHJ0dzg5MjJkX3Njb19iYXJrZXJfdGhyZXNob2xkWzE0XSA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTIyNC1cXHQweDFmZTRmLCAweDFmZjVlLCAweDIwMDZjLCAweDIwMTdiLCAweDIwMjhhLCAweDIwMzk5LCAweDIwNGE4LCAweDIwNWI2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTEyMjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjEyMjg6c3RhdGljIGNvbnN0IHUzMiBydHc4OTIyZF9zY29fY2NrX3RocmVzaG9sZFsxNF0gPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTEyMjktXFx0MHgyYmRhYywgMHgyYmYyMSwgMHgyYzA5NSwgMHgyYzIwOSwgMHgyYzM3ZSwgMHgyYzRmMiwgMHgyYzY2NiwgMHgyYzdkYixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xMjMyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzoxMjMzOnN0YXRpYyBpbnQgcnR3ODkyMmRfY3RybF9zY29fY2NrKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTIzNC1cXHRcXHRcXHRcXHQgdTggcHJpbWFyeV9jaCwgZW51bSBydHc4OV9iYW5kd2lkdGggYncsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTI0NC1cXHRydHc4OV9waHlfd3JpdGUzMl9pZHgocnR3ZGV2LCBSX0JLX0ZDMF9JTlZfQkU0LCBCX0JLX0ZDMF9JTlZfQkU0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzoxMjQ1OlxcdFxcdFxcdCAgICAgIHJ0dzg5MjJkX3Njb19iYXJrZXJfdGhyZXNob2xkW2NoX2VsZW1lbnRdLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xMjQ2LVxcdFxcdFxcdCAgICAgIHBoeV9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xMjQ3LVxcdHJ0dzg5X3BoeV93cml0ZTMyX2lkeChydHdkZXYsIFJfQ0NLX0ZDMF9JTlZfQkU0LCBCX0NDS19GQzBfSU5WX0JFNCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6MTI0ODpcXHRcXHRcXHQgICAgICBydHc4OTIyZF9zY29fY2NrX3RocmVzaG9sZFtjaF9lbGVtZW50XSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTI0OS1cXHRcXHRcXHQgICAgICBwaHlfaWR4KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xMjUzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzoxMjU0OnN0YXRpYyB2b2lkIHJ0dzg5MjJkX2N0cmxfY2hfY29yZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTEyNTUtXFx0XFx0XFx0XFx0ICBjb25zdCBzdHJ1Y3QgcnR3ODlfY2hhbiAqY2hhbixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xMjgyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzoxMjgzOnN0cnVjdCBydHc4OTIyZF9iYl9nYWluIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTI4NC1cXHR1MzIgZ2Fpbl9nW0JCX1BBVEhfTlVNXzg5MjJEXTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYz0xMzEzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfcmVnX2RlZiBycGxfY29tcF9idzIwW1JUVzg5X0JXMjBfU0NfMjBNXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xMzE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzoxMzE3OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODkyMmRfYmJfZ2FpbiBiYl9nYWluX2xuYVtMTkFfR0FJTl9OVU1dID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xMzE4LVxcdHsgLmdhaW5fZyA9IHsweDI0MDlDLCAweDI0NDlDfSwgLmdhaW5fYSA9IHsweDI0MDZDLCAweDI0NDZDfSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xMzMzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzoxMzM0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODkyMmRfYmJfZ2FpbiBiYl9nYWluX3RpYVtUSUFfR0FJTl9OVU1dID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xMzM1LVxcdHsgLmdhaW5fZyA9IHsweDI0MDU0LCAweDI0NDU0fSwgLmdhaW5fYSA9IHsweDI0MDU0LCAweDI0NDU0fSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xMzQwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzoxMzQxOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODkyMmRfYmJfZ2FpbiBiYl9vcDFkYl9sbmFbTE5BX0dBSU5fTlVNXSA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTM0Mi1cXHR7IC5nYWluX2cgPSB7MHgyNDBBQywgMHgyNDRBQ30sIC5nYWluX2EgPSB7MHgyNDA3OCwgMHgyNDQ3OH0sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTM1Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6MTM1ODpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5MjJkX2JiX2dhaW4gYmJfb3AxZGJfdGlhX2xuYVtUSUFfTE5BX09QMURCX05VTV0gPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTEzNTktXFx0eyAuZ2Fpbl9nID0gezB4MjQwQjQsIDB4MjQ0QjR9LCAuZ2Fpbl9hID0gezB4MjQwODAsIDB4MjQ0ODB9LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTEzNzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjEzNzc6c3RhdGljIHZvaWQgcnR3ODkyMmRfc2V0X3JwbF9nYWluKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTM3OC1cXHRcXHRcXHRcXHQgIGNvbnN0IHN0cnVjdCBydHc4OV9jaGFuICpjaGFuLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTE0MjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjE0MjI6c3RhdGljIHZvaWQgcnR3ODkyMmRfc2V0X2xuYV90aWFfZ2FpbihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTE0MjMtXFx0XFx0XFx0XFx0ICAgICAgY29uc3Qgc3RydWN0IHJ0dzg5X2NoYW4gKmNoYW4sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTQ2Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6MTQ2MzpzdGF0aWMgdm9pZCBydHc4OTIyZF9zZXRfb3AxZGIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xNDY0LVxcdFxcdFxcdCAgICAgICBjb25zdCBzdHJ1Y3QgcnR3ODlfY2hhbiAqY2hhbixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xNTAzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzoxNTA0OnN0YXRpYyB2b2lkIHJ0dzg5MjJkX3NldF9nYWluKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTUwNS1cXHRcXHRcXHQgICAgICBjb25zdCBzdHJ1Y3QgcnR3ODlfY2hhbiAqY2hhbixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xNTA4LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6MTUwOTpcXHRydHc4OTIyZF9zZXRfcnBsX2dhaW4ocnR3ZGV2LCBjaGFuLCBwYXRoLCBwaHlfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6MTUxMDpcXHRydHc4OTIyZF9zZXRfbG5hX3RpYV9nYWluKHJ0d2RldiwgY2hhbiwgcGF0aCwgcGh5X2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjE1MTE6XFx0cnR3ODkyMmRfc2V0X29wMWRiKHJ0d2RldiwgY2hhbiwgcGF0aCwgcGh5X2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTE1MTItfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xNTEzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzoxNTE0OnN0YXRpYyBzOCBydHc4OTIyZF9nZXRfcnhfZ2Fpbl9ieV9jaGFuKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTUxNS1cXHRcXHRcXHRcXHQgICAgICAgY29uc3Qgc3RydWN0IHJ0dzg5X2NoYW4gKmNoYW4sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTYyNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6MTYyNzpzdGF0aWMgdm9pZCBydHc4OTIyZF9jYWxjX3J4X2dhaW5fbm9ybWFsX2NjayhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTE2MjgtXFx0XFx0XFx0XFx0XFx0ICAgICBjb25zdCBzdHJ1Y3QgcnR3ODlfY2hhbiAqY2hhbixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xNjM1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzoxNjM2OlxcdHJ4X2dhaW5fb2Zmc2V0ID0gLXJ0dzg5MjJkX2dldF9yeF9nYWluX2J5X2NoYW4ocnR3ZGV2LCBjaGFuLCBwYXRoLCB0cnVlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTYzNy1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xNjQ0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzoxNjQ1OnN0YXRpYyB2b2lkIHJ0dzg5MjJkX3NldF9yeF9nYWluX25vcm1hbF9jY2soc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xNjQ2LVxcdFxcdFxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgcnR3ODlfY2hhbiAqY2hhbixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xNjUxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzoxNjUyOlxcdHJ0dzg5MjJkX2NhbGNfcnhfZ2Fpbl9ub3JtYWxfY2NrKHJ0d2RldiwgY2hhbiwgcGF0aCwgcGh5X2lkeCwgXFx1MDAyNmNhbGMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xNjUzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTE2NjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjE2NjI6c3RhdGljIHZvaWQgcnR3ODkyMmRfY2FsY19yeF9nYWluX25vcm1hbF9vZmRtKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTY2My1cXHRcXHRcXHRcXHRcXHQgICAgICBjb25zdCBzdHJ1Y3QgcnR3ODlfY2hhbiAqY2hhbixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xNjcwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzoxNjcxOlxcdHJ4X2dhaW5fb2Zmc2V0ID0gcnR3ODkyMmRfZ2V0X3J4X2dhaW5fYnlfY2hhbihydHdkZXYsIGNoYW4sIHBhdGgsIGZhbHNlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTY3Mi1cXHRjYWxjLVxcdTAwM2Vyc3NpX29mc3QgPSAocnhfZ2Fpbl9vZmZzZXQgKyBnYWluLVxcdTAwM2VyZWZfZ2Fpbl9iYXNlW3BoeV9pZHhdKSBcXHUwMDI2IDB4ZmY7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTY3NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6MTY3NTpzdGF0aWMgdm9pZCBydHc4OTIyZF9zZXRfcnhfZ2Fpbl9ub3JtYWxfb2ZkbShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTE2NzYtXFx0XFx0XFx0XFx0XFx0ICAgICBjb25zdCBzdHJ1Y3QgcnR3ODlfY2hhbiAqY2hhbixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xNjg1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzoxNjg2OlxcdHJ0dzg5MjJkX2NhbGNfcnhfZ2Fpbl9ub3JtYWxfb2ZkbShydHdkZXYsIGNoYW4sIHBhdGgsIHBoeV9pZHgsIFxcdTAwMjZjYWxjKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTY4Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xNjkyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzoxNjkzOnN0YXRpYyB2b2lkIHJ0dzg5MjJkX3NldF9yeF9nYWluX25vcm1hbChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTE2OTQtXFx0XFx0XFx0XFx0XFx0Y29uc3Qgc3RydWN0IHJ0dzg5X2NoYW4gKmNoYW4sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTcwMy1cXHRpZiAoY2hhbi1cXHUwMDNlYmFuZF90eXBlID09IFJUVzg5X0JBTkRfMkcpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjE3MDQ6XFx0XFx0cnR3ODkyMmRfc2V0X3J4X2dhaW5fbm9ybWFsX2NjayhydHdkZXYsIGNoYW4sIHBhdGgsIHBoeV9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xNzA1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzoxNzA2OlxcdHJ0dzg5MjJkX3NldF9yeF9nYWluX25vcm1hbF9vZmRtKHJ0d2RldiwgY2hhbiwgcGF0aCwgcGh5X2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTE3MDctfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xNzA4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzoxNzA5OnN0YXRpYyB2b2lkIHJ0dzg5MjJkX2NhbGNfcnhfZ2Fpbl9ub3JtYWwoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xNzEwLVxcdFxcdFxcdFxcdFxcdCBjb25zdCBzdHJ1Y3QgcnR3ODlfY2hhbiAqY2hhbixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xNzE0LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6MTcxNTpcXHRydHc4OTIyZF9jYWxjX3J4X2dhaW5fbm9ybWFsX29mZG0ocnR3ZGV2LCBjaGFuLCBwYXRoLCBwaHlfaWR4LCBjYWxjKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTcxNi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xNzE5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzoxNzIwOlxcdHJ0dzg5MjJkX2NhbGNfcnhfZ2Fpbl9ub3JtYWxfY2NrKHJ0d2RldiwgY2hhbiwgcGF0aCwgcGh5X2lkeCwgY2FsYyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTE3MjEtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xNzIyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzoxNzIzOnN0YXRpYyB2b2lkIHJ0dzg5MjJkX3NldF9jY2tfcGFyYW1ldGVycyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTE3MjQtXFx0XFx0XFx0XFx0XFx0Y29uc3Qgc3RydWN0IHJ0dzg5X2NoYW4gKmNoYW4sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTc2My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6MTc2NDpzdGF0aWMgdm9pZCBydHc4OTIyZF9jdHJsX2NoKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTc2NS1cXHRcXHRcXHQgICAgIGNvbnN0IHN0cnVjdCBydHc4OV9jaGFuICpjaGFuLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTE3NzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjE3Nzc6XFx0cnR3ODkyMmRfY3RybF9jaF9jb3JlKHJ0d2RldiwgY2hhbiwgcGh5X2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTE3NzgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTc4MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6MTc4MjpcXHRydHc4OTIyZF9zZXRfZ2FpbihydHdkZXYsIGNoYW4sIFJGX1BBVEhfQSwgcGh5X2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjE3ODM6XFx0cnR3ODkyMmRfc2V0X2dhaW4ocnR3ZGV2LCBjaGFuLCBSRl9QQVRIX0IsIHBoeV9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xNzg0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzoxNzg1OlxcdHJ0dzg5MjJkX3NldF9yeF9nYWluX25vcm1hbChydHdkZXYsIGNoYW4sIFJGX1BBVEhfQSwgcGh5X2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjE3ODY6XFx0cnR3ODkyMmRfc2V0X3J4X2dhaW5fbm9ybWFsKHJ0d2RldiwgY2hhbiwgUkZfUEFUSF9CLCBwaHlfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTc4Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTc4OC1cXHRpZiAoYmFuZCA9PSBSVFc4OV9CQU5EXzJHKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzoxNzg5OlxcdFxcdHJ0dzg5MjJkX3NldF9jY2tfcGFyYW1ldGVycyhydHdkZXYsIGNoYW4sIHBoeV9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xNzkwLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTc5MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6MTc5MjpzdGF0aWMgdm9pZCBydHc4OTIyZF9jdHJsX2J3KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggcHJpX3NiLCB1OCBidyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTc5My1cXHRcXHRcXHQgICAgIGVudW0gcnR3ODlfcGh5X2lkeCBwaHlfaWR4KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jPTE4Mjk9c3RhdGljIGNvbnN0IHUxNiBzcHVyX2NzaVtdID0gezY0MDB9O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xODMwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzoxODMxOnN0YXRpYyB1MzIgcnR3ODkyMmRfc3B1cl9mcmVxKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY29uc3Qgc3RydWN0IHJ0dzg5X2NoYW4gKmNoYW4sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTE4MzItXFx0XFx0XFx0ICAgICAgYm9vbCBuYmlfb3JfY3NpLCBlbnVtIHJ0dzg5X3JmX3BhdGggcGF0aClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xODczLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzoxODc0OnN0YXRpYyB2b2lkIHJ0dzg5MjJkX3NldF9jc2lfdG9uZV9pZHgoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xODc1LVxcdFxcdFxcdFxcdCAgICAgIGNvbnN0IHN0cnVjdCBydHc4OV9jaGFuICpjaGFuLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTE4ODAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjE4ODE6XFx0c3B1cl9mcmVxID0gcnR3ODkyMmRfc3B1cl9mcmVxKHJ0d2RldiwgY2hhbiwgZmFsc2UsIFJGX1BBVEhfQUIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xODgyLVxcdGlmIChzcHVyX2ZyZXEgPT0gMCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTE4OTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjE4OTc6c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9uYmlfcmVnX2RlZiBydHc4OTIyZF9uYmlfcmVnX2RlZltdID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xODk4LVxcdFtSRl9QQVRIX0FdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTE5MTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjE5MTY6c3RhdGljIHZvaWQgcnR3ODkyMmRfc2V0X25iaV90b25lX2lkeChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTE5MTctXFx0XFx0XFx0XFx0ICAgICAgY29uc3Qgc3RydWN0IHJ0dzg5X2NoYW4gKmNoYW4sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTkyMC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjE5MjE6XFx0Y29uc3Qgc3RydWN0IHJ0dzg5X25iaV9yZWdfZGVmICpuYmkgPSBcXHUwMDI2cnR3ODkyMmRfbmJpX3JlZ19kZWZbcGF0aF07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTE5MjItXFx0czMyIG5iaV9mcmFjX2lkeCwgbmJpX2ZyYWNfdG9uZV9pZHg7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTkyNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6MTkyODpcXHRzcHVyX2ZyZXEgPSBydHc4OTIyZF9zcHVyX2ZyZXEocnR3ZGV2LCBjaGFuLCB0cnVlLCBwYXRoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTkyOS1cXHRpZiAoc3B1cl9mcmVxID09IDApIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xOTg4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzoxOTg5OnN0YXRpYyB2b2lkIHJ0dzg5MjJkX3NwdXJfZWxpbWluYXRpb24oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0xOTkwLVxcdFxcdFxcdFxcdCAgICAgIGNvbnN0IHN0cnVjdCBydHc4OV9jaGFuICpjaGFuLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTE5OTIte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzoxOTkzOlxcdHJ0dzg5MjJkX3NldF9jc2lfdG9uZV9pZHgocnR3ZGV2LCBjaGFuLCBwaHlfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6MTk5NDpcXHRydHc4OTIyZF9zZXRfbmJpX3RvbmVfaWR4KHJ0d2RldiwgY2hhbiwgUkZfUEFUSF9BLCBwaHlfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6MTk5NTpcXHRydHc4OTIyZF9zZXRfbmJpX3RvbmVfaWR4KHJ0d2RldiwgY2hhbiwgUkZfUEFUSF9CLCBwaHlfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMTk5Ni19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM9MjAwMD1zdGF0aWMgY29uc3QgdTMyIGNoaXBfdG9wX2JpdG1hc2tbMl0gPSB7MHhmZmZmLCAweGZmZmYwMDAwfTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMjAwMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6MjAwMjpzdGF0aWMgdm9pZCBydHc4OTIyZF9iYl9wcmVpbml0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgZW51bSBydHc4OV9waHlfaWR4IHBoeV9pZHgpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTIwMDMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTIwMTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjIwMTI6c3RhdGljIHZvaWQgcnR3ODkyMmRfYmJfcG9zdGluaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBlbnVtIHJ0dzg5X3BoeV9pZHggcGh5X2lkeClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMjAxMy17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtMjAxNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6MjAxODpzdGF0aWMgdm9pZCBydHc4OTIyZF9iYl9yZXNldF9lbihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGVudW0gcnR3ODlfYmFuZCBiYW5kLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0yMDE5LVxcdFxcdFxcdFxcdCBib29sIGVuLCBlbnVtIHJ0dzg5X3BoeV9pZHggcGh5X2lkeClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy0yMDI2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzoyMDI3OnN0YXRpYyBpbnQgcnR3ODkyMmRfY3RybF90eF9wYXRoX3RtYWMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQwMzo1NzowNi40ODQwMzU1NDNaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQwODU1NjM2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFeGFtaW5pbmcgdGhlIFJUVzg5IERyaXZlciBDb21waWxhdGlvbioqXG5cbk9rYXksIHNvIGlmIEkgdW5kZXJzdGFuZCB0aGlzIGNvcnJlY3RseSwgdGhlIGBydHc4OTIyZC5jYCBmaWxlICpvbmx5KiBnZXRzIGNvbXBpbGVkIGludG8gdGhlIGtlcm5lbCBpZiBlaXRoZXIgYENPTkZJR19SVFc4OV84OTIyQUVgIG9yIGBDT05GSUdfUlRXODlfODkyMkFVYCBpcyBkZWZpbmVkLiBUaGF0IHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2gsIGJ1dCBJIGFsd2F5cyBsaWtlIHRvIGRvdWJsZS1jaGVjayB0aGVzZSB0aGluZ3MgdG8gbWFrZSBzdXJlIEknbSBub3QgbWlzc2luZyBhbnkgZWRnZSBjYXNlcy4gVGltZSB0byBnbyBiYWNrIGFuZCB0YWtlIGFub3RoZXIgbG9vayBhdCB0aGF0IGBNYWtlZmlsZWAgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvYCB0byBjb25maXJtIG15IGluaXRpYWwgYXNzZXNzbWVudCBhbmQgZW5zdXJlIEkgaGF2ZSB0aGUgZGVwZW5kZW5jeSBsb2dpYyBjb3JyZWN0IGluIG15IGhlYWQuIE5vIHBvaW50IGluIG1ha2luZyBhc3N1bXB0aW9ucyB3aGVuIGEgcXVpY2sgcmV2aWV3IHdpbGwgY2xhcmlmeSB0aGluZ3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkyNzYxLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMDM6NTc6MTAuODkyNTk1MTQxWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDMzMTk2OSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnR3ODkyMmRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMDM6NTc6MTAuOTQ2OTM3M1oiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NzY4MDA3OTk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipJbnZlc3RpZ2F0aW5nIGEgUG90ZW50aWFsIE1ha2VmaWxlIE9taXNzaW9uKipcblxuSG1tLCBob2xkIG9uIGEgc2Vjb25kLiBJIHdhcyBleHBlY3RpbmcgdG8gc2VlIHNvbWV0aGluZyBsaWtlIGBydHc4OTIyZC5jYCBpbiB0aGUgbWFpbiBgTWFrZWZpbGVgLi4uIGJ1dCBpdCdzIG5vdCB0aGVyZS4gVGhhdOKAmXMgYSBiaXQgdW51c3VhbC4gTGV0IG1lIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoZSBwcm9qZWN0IHN0cnVjdHVyZSwgc3BlY2lmaWNhbGx5IGRpdmluZyBpbnRvIHRoZSB3aXJlbGVzcyBSZWFsdGVrIGRyaXZlciBkaXJlY3RvcnkuIFJpZ2h0LCBsZXQncyBuYXZpZ2F0ZSB0byBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZWAuIEknbSBndWVzc2luZyB0aGF0IHRoZSBuZWNlc3NhcnkgbW9kdWxlIGNvbXBpbGF0aW9uIGRldGFpbHMsIGZvciBzb21ldGhpbmcgc3BlY2lmaWMgbGlrZSB0aGUgODkyMiBjaGlwc2V0LCBhcmUgbGlrZWx5IGhhbmRsZWQgd2l0aGluIHRoYXQgc3ViZGlyZWN0b3J5J3MgYE1ha2VmaWxlYC4gSXQncyBhIGNvbW1vbiBvcmdhbml6YXRpb25hbCBwcmFjdGljZS4gVGltZSB0byBzZWUgd2hhdCdzIHJlYWxseSBnb2luZyBvbiBpbiB0aGF0IHNwZWNpZmljIGNvbnRleHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkzMDUzLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMDM6NTc6MTcuNzE0OTQ4Njc4WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4Nzk0ODU0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCI4OTIyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZT04Mj1ydHc4OV84ODUyY3Utb2JqcyA6PSBydHc4ODUyY3Uub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtODMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTo4NDpvYmotJChDT05GSUdfUlRXODlfODkyMkEpICs9IHJ0dzg5Xzg5MjJhLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjg1OnJ0dzg5Xzg5MjJhLW9ianMgOj0gcnR3ODkyMmEubyBcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTo4NjpcXHRcXHQgICAgcnR3ODkyMmFfcmZrLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTg3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6ODg6b2JqLSQoQ09ORklHX1JUVzg5Xzg5MjJBRSkgKz0gcnR3ODlfODkyMmFlLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjg5OnJ0dzg5Xzg5MjJhZS1vYmpzIDo9IHJ0dzg5MjJhZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS05MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjkxOm9iai0kKENPTkZJR19SVFc4OV84OTIyQVUpICs9IHJ0dzg5Xzg5MjJhdS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZTo5MjpydHc4OV84OTIyYXUtb2JqcyA6PSBydHc4OTIyYXUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtOTMtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDAzOjU3OjE3LjgwMjkwMjM2NloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzQ0NDI4ODkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRlYnVnZ2luZyB0aGUgYHJ0dzg5MjJkLmNgIENvbXBpbGF0aW9uKipcblxuT2theSwgZmlyc3QgdGhpbmdzIGZpcnN0LCBoYW5nIG9uIGEgc2Vjb25kLiBXaHkgaXNuJ3QgYHJ0dzg5MjJkLmNgIGJlaW5nIGNvbXBpbGVkPyBUaGF0J3MgZGVmaW5pdGVseSBub3QgcmlnaHQuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQncyBnb2luZyBvbi4gTGV0IG1lIGp1c3QgcXVpY2tseSBydW4gdGhyb3VnaCBteSBtZW50YWwgY2hlY2tsaXN0LiBBbSBJIG1pc3Npbmcgc29tZXRoaW5nIG9idmlvdXM/IElzIGl0IHBlcmhhcHMgbm90IGJlaW5nIGluY2x1ZGVkIGZyb20gYW5vdGhlciBmaWxlPyBObywgSSBuZWVkIHRvIG1ldGhvZGljYWxseSB0cmFjayB0aGlzIGRvd24uIFBlcmhhcHMgaXQncyBqdXN0IG5vdCBpbiB0aGUgYE1ha2VmaWxlYCB5ZXQgb3IgbWF5YmUgYSByZWNlbnQgY2hhbmdlIGhhcHBlbmVkIGluIGEgZGlmZmVyZW50IGJyYW5jaCB0aGF0IEkgbWlzc2VkLlxuXG5Ib2xkIG9uIGEgbWludXRlLCB0aGUgcGF0Y2ggSSdtIGxvb2tpbmcgYXQgbW9kaWZpZXMgYGNvZXguY2AgYW5kIGBmdy5jYCwgYW5kIEkga25vdyB0aG9zZSBhcmUgY29tcGlsZWQgdW5kZXIgYFJUVzg5X0NPUkVgLiBUaGF0J3MgYSBnb29kIGNsdWUuIE9rYXksIGxldCdzIGhlYWQgb3ZlciB0byB0aGUgcmVhbHRlayB3aXJlbGVzcyBkcml2ZXJzIGRpcmVjdG9yeSBhbmQgY2hlY2sgdGhhdCBgTWFrZWZpbGVgLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBjb25maXJtIGBjb2V4Lm9gIGlzIGJlaW5nIGluY2x1ZGVkLiBJJ2xsIGdldCB0byB0aGUgYm90dG9tIG9mIHRoaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkzNzU3LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDAzOjU3OjIyLjU0NzMzMzg4N1oiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODY0MzM5MzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29leC5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZT00PXJ0dzg5X2NvcmUteSArPSBjb3JlLm8gXFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS0xNS1cXHRcXHRzYXIubyBcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZToxNjpcXHRcXHRjb2V4Lm8gXFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtMTctXFx0XFx0cHMubyBcXFxcXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDAzOjU3OjIyLjYzMzc3MzA2NloiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxOTMwMzE4Mjg4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgUmVhbHRlayBydHc4OSBCbHVldG9vdGggQ29leGlzdGVuY2UgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgY29leC5jYCAqaXMqIGNvbXBpbGVkIGFzIHBhcnQgb2YgdGhlIGBydHc4OV9jb3JlYCBtb2R1bGUg4oCTIHRoYXQncyB0aGUgYmFzZS4gVGhlIGNoYW5nZXMgYXJlIGZ1bmN0aW9uYWwsIHNwZWNpZmljYWxseSwgdGhleSdyZSB1cGRhdGluZyBmaXJtd2FyZSB2ZXJzaW9ucywgYWRkaW5nIGxvZ2ljIGZvciBgZmN4dHJ4ID09IDdgIGFuZCBgZmN4dHJ4ID09IDlgLCBhbmQsIGltcG9ydGFudGx5LCB0aGUgd2F5IGBidF9yZXFfbGVuYCBhbmQgYHJmX3RyeF9wYXJhYCBhcmUgYWNjZXNzZWQgaXMgY2hhbmdpbmcgdG8gYXJyYXkgaW5kZXhpbmcgYnkgUEhZLiBUaGlzIGlzIGFsbCAqZnVuY3Rpb25hbCogY29kZS5cblxuVGhlIG5leHQgcXVlc3Rpb24sIG9mIGNvdXJzZSwgaXMgKnJlYWNoYWJpbGl0eSouIENhbiB3ZSBhY3R1YWxseSB0cmlnZ2VyIHRoaXMgY29kZT8gWWVzLCBkZWZpbml0ZWx5LiBUaGUgZHJpdmVyIG5lZWRzIHRvIGxvYWQsIGFuZCB0aGUgY29leGlzdGVuY2UgbG9naWMgaGFzIHRvIGluaXRpYWxpemUuXG5cbk5vdywgd2hhdCBhcmUgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zPyBgQ09ORklHX1JUVzg5X0NPUkVgIGlzIHRoZSBiaWcgb25lLCBvYnZpb3VzbHkuIEJ1dCB0byBidWlsZCBpdCwgd2UgbmVlZCBhdCBsZWFzdCBvbmUgb2YgdGhlIGRyaXZlci1zcGVjaWZpYyBjb25maWdzLiBJIGNhbiBsaXN0IHRob3NlOiBgUlRXODlfODg1MkFFYCwgYFJUVzg5Xzg4NTJBVWAsIGBSVFc4OV84OTIyQUVgLCBgUlRXODlfODkyMkFVYC4gSeKAmWxsIG5vdGUgdGhhdCBgUlRXODlfODg1MkFFYCBpcyBQQ0kgYW5kIGBSVFc4OV84ODUyQVVgIGlzIFVTQiwganVzdCB0byBiZSBwcmVjaXNlLiBJJ2xsIGRvdWJsZSBjaGVjayB0aGUgS2NvbmZpZyBmaWxlcywgYW5kIGl0IGxvb2tzIGxpa2UgYFJUVzg5Xzg5MjJBRWAsIGBSVFc4OV84OTIyQVVgIGFuZCBgUlRXODlfODg1MkNgIGFyZSBhbGwgdGhlcmUsIHNvIEknbGwgYmUgc3VyZSB0byBsaXN0IHRob3NlLlxuXG5Ob3csIHdoYXQgZnVuY3Rpb25zIGFyZSBhY3R1YWxseSBtb2RpZmllZD8gTGV0J3Mgc2VlLi4uIHRoZSBwYXRjaCBpcyB0b3VjaGluZzpcblxuLSAgIGBydHc4OV9md19oMmNfY3hkcnZfdHJ4X3Y3YFxuLSAgIGBydHc4OV9md19oMmNfY3hkcnZfdHJ4X3Y5YFxuLSAgIGBydHc4OV9md19oMmNfY3h0eHB3cl92N2Bcbi0gICBgcnR3ODlfZndfaDJjX2N4dHhwd3JfdjlgXG4tICAgYF9zZXRfd2xfdHhfcG93ZXJgXG4tICAgYF9zZXRfd2xfcnhfZ2FpbmBcbi0gICBgX3NldF9yZl90cnhfcGFyYWBcbi0gICBgX3VwZGF0ZV9idF9zY2JkYFxuLSAgIGBfY2hrX2J0Y19yZXBvcnRgXG4tICAgYHJ0dzg5X2J0Y19jMmhfaGFuZGxlYFxuXG5JJ2xsIGV4dHJhY3Qgd2hhdCBsb29rcyBtb3N0IG5ldyBvciBoZWF2aWx5IG1vZGlmaWVkLlxuXG4tICAgYHJ0dzg5X2Z3X2gyY19jeGRydl90cnhfdjdgXG4tICAgYHJ0dzg5X2Z3X2gyY19jeGRydl90cnhfdjlgXG4tICAgYHJ0dzg5X2Z3X2gyY19jeHR4cHdyX3Y3YFxuLSAgIGBydHc4OV9md19oMmNfY3h0eHB3cl92OWBcbi0gICBgX3NldF9yZl90cnhfcGFyYWBcbi0gICBgX3VwZGF0ZV9idF9zY2JkYFxuLSAgIGBfY2hrX2J0Y19yZXBvcnRgXG4tICAgYHJ0dzg5X2J0Y19jMmhfaGFuZGxlYFxuXG5gX3NldF93bF90eF9wb3dlcmAgaXMgc3RhdGljLiBObyB3b3JyaWVzLCBJIGNhbiBzdGlsbCBsaXN0IGl0LlxuXG5JJ2xsIGNoZWNrIGlmIGFueSBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkLiBCYXNlZCBvbiB0aGUgZmlsZSBjb250ZXh0OlxuXG4tICAgYHJ0dzg5X2Z3X2gyY19jeGRydl90cnhfdjdgIHNob3VsZCBiZSBnbG9iYWwgaW4gYGZ3LmNgLlxuXG5Pa2F5LCBJJ2xsIGxpc3QgdGhlIGZ1bmN0aW9ucyB0byBmb2N1cyBvbjpcblxuLSAgIGBydHc4OV9md19oMmNfY3hkcnZfdHJ4X3Y3YFxuLSAgIGBydHc4OV9md19oMmNfY3hkcnZfdHJ4X3Y5YFxuLSAgIGBydHc4OV9md19oMmNfY3h0eHB3cl92N2Bcbi0gICBgcnR3ODlfZndfaDJjX2N4dHhwd3JfdjlgXG4tICAgYHJ0dzg5X2J0Y19jMmhfaGFuZGxlYFxuLSAgIGBfY2hrX2J0Y19yZXBvcnRgXG4tICAgYF9zZXRfcmZfdHJ4X3BhcmFgXG5cbkkgc2hvdWxkIGp1c3QgbWFrZSBzdXJlIHRoZSBuYW1lcyBhcmUgY29ycmVjdCBpbiB0aGUgZGlmZi5cblxuLSAgIGBydHc4OV9md19oMmNfY3hkcnZfdHJ4X3Y3YFxuLSAgIGBydHc4OV9md19oMmNfY3hkcnZfdHJ4X3Y5YFxuLSAgIGBydHc4OV9md19oMmNfY3h0eHB3cl92N2BcblxuIiwiSW5wdXRUb2tlbnMiOjk0Mjc1LCJPdXRwdXRUb2tlbnMiOjMzNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3NjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMDM6NTc6NDEuOTM2OTU5NjMyWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzY5Mzc4MDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlJUVzg5X0NPUkVcIixcbiAgICBcIlJUVzg5Xzg4NTJBRVwiLFxuICAgIFwiUlRXODlfODg1MkFVXCIsXG4gICAgXCJSVFc4OV84OTIyQUVcIixcbiAgICBcIlJUVzg5Xzg5MjJBVVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJ0dzg5X2Z3X2gyY19jeGRydl90cnhfdjdcIixcbiAgICBcInJ0dzg5X2Z3X2gyY19jeGRydl90cnhfdjlcIixcbiAgICBcInJ0dzg5X2Z3X2gyY19jeHR4cHdyX3Y3XCIsXG4gICAgXCJydHc4OV9md19oMmNfY3h0eHB3cl92OVwiLFxuICAgIFwiX3NldF93bF90eF9wb3dlclwiLFxuICAgIFwiX3NldF93bF9yeF9nYWluXCIsXG4gICAgXCJfc2V0X3JmX3RyeF9wYXJhXCIsXG4gICAgXCJfdXBkYXRlX2J0X3NjYmRcIixcbiAgICBcIl9jaGtfYnRjX3JlcG9ydFwiLFxuICAgIFwicnR3ODlfYnRjX2MyaF9oYW5kbGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCB1cGRhdGVzIHRoZSBCbHVldG9vdGggY29leGlzdGVuY2UgKEJUQykgbG9naWMgZm9yIFJlYWx0ZWsgV2ktRmkgZHJpdmVycyAocnR3ODkpLiBJdCBhZGRzIHN1cHBvcnQgZm9yIG5ldyBmaXJtd2FyZSB2ZXJzaW9ucyAodjcsIHY5KSBhbmQgbmV3IGhhcmR3YXJlIChSVEw4OTIyRCksIG1vZGlmeWluZyBob3cgUkYgVFgvUlggcGFyYW1ldGVycyBhcmUgY29uZmlndXJlZCBhbmQgaG93IEJUQyByZXBvcnRzIGFyZSBoYW5kbGVkLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBkcml2ZXIncyBjb3JlIGxvZ2ljIGFuZCBmaXJtd2FyZSBjb21tdW5pY2F0aW9uLCB3aGljaCBjYW4gYmUgcmVhY2hlZCB2aWEgc29mdHdhcmUtZW11bGF0ZWQgVVNCL1BDSSBkZXZpY2VzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlJUVzg5X0NPUkVcIixcbiAgICBcIlJUVzg5Xzg4NTJBRVwiLFxuICAgIFwiUlRXODlfODg1MkFVXCIsXG4gICAgXCJSVFc4OV84OTIyQUVcIixcbiAgICBcIlJUVzg5Xzg5MjJBVVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJ0dzg5X2Z3X2gyY19jeGRydl90cnhfdjdcIixcbiAgICBcInJ0dzg5X2Z3X2gyY19jeGRydl90cnhfdjlcIixcbiAgICBcInJ0dzg5X2Z3X2gyY19jeHR4cHdyX3Y3XCIsXG4gICAgXCJydHc4OV9md19oMmNfY3h0eHB3cl92OVwiLFxuICAgIFwiX3NldF93bF90eF9wb3dlclwiLFxuICAgIFwiX3NldF93bF9yeF9nYWluXCIsXG4gICAgXCJfc2V0X3JmX3RyeF9wYXJhXCIsXG4gICAgXCJfdXBkYXRlX2J0X3NjYmRcIixcbiAgICBcIl9jaGtfYnRjX3JlcG9ydFwiLFxuICAgIFwicnR3ODlfYnRjX2MyaF9oYW5kbGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCB1cGRhdGVzIHRoZSBCbHVldG9vdGggY29leGlzdGVuY2UgKEJUQykgbG9naWMgZm9yIFJlYWx0ZWsgV2ktRmkgZHJpdmVycyAocnR3ODkpLiBJdCBhZGRzIHN1cHBvcnQgZm9yIG5ldyBmaXJtd2FyZSB2ZXJzaW9ucyAodjcsIHY5KSBhbmQgbmV3IGhhcmR3YXJlIChSVEw4OTIyRCksIG1vZGlmeWluZyBob3cgUkYgVFgvUlggcGFyYW1ldGVycyBhcmUgY29uZmlndXJlZCBhbmQgaG93IEJUQyByZXBvcnRzIGFyZSBoYW5kbGVkLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBkcml2ZXIncyBjb3JlIGxvZ2ljIGFuZCBmaXJtd2FyZSBjb21tdW5pY2F0aW9uLCB3aGljaCBjYW4gYmUgcmVhY2hlZCB2aWEgc29mdHdhcmUtZW11bGF0ZWQgVVNCL1BDSSBkZXZpY2VzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:nil,}